Get Script Variable

From Final Fantasy Hacktics Wiki
Revision as of 15:26, 1 December 2021 by Glain (talk | contribs)
Jump to navigation Jump to search
#   ROUTINE: GET SCRIPT VARIABLE
#       Parameters:
#           r4 = (VariableID) (https://ffhacktics.com/wiki/Variables)
#       Returns:
#           r2 = Value of Script Variable with specified ID

8013b590: 27bdffe0 addiu r29,r29,-0x0020
8013b594: afb10014 sw r17,0x0014(r29)
8013b598: 00808821 addu r17,r4,r0               #   VariableID
8013b59c: 3c028016 lui r2,0x8016
8013b5a0: 8c425f9c lw r2,0x5f9c(r2)             #   Variable_0_Pointer = *0x80165f9c
8013b5a4: 34030022 ori r3,r0,0x0022             #   0x22
8013b5a8: afbf001c sw r31,0x001c(r29)
8013b5ac: afb20018 sw r18,0x0018(r29)
8013b5b0: afb00010 sw r16,0x0010(r29)
8013b5b4: 8c520000 lw r18,0x0000(r2)            #   Old_Variable_0_Value = *Variable_0_Pointer
8013b5b8: 1623000d bne r17,r3,0x8013b5f0        
8013b5bc: 340400be ori r4,r0,0x00be             #   0xbe
                                                #   if (Variable ID == 0x22) {
8013b5c0: 0c04ed64 jal 0x8013b590               #       ROUTINE: (Result_0x24) = Get Script Variable (0x24)   // Recursive call!
8013b5c4: 34040024 ori r4,r0,0x0024             #       0x24
8013b5c8: 30500001 andi r16,r2,0x0001           #       (Result_0x24) & 0x01
8013b5cc: 0c04ed64 jal 0x8013b590               #       ROUTINE: (Result_0x23) = Get Script Variable (0x23)   // Recursive call!
8013b5d0: 34040023 ori r4,r0,0x0023             #       0x23
8013b5d4: 30420007 andi r2,r2,0x0007            #       (Result_0x23) & 0x07
8013b5d8: 001083c0 sll r16,r16,0x0f             #       ((Result_0x24) & 0x01) << 15
8013b5dc: 00021300 sll r2,r2,0x0c               #       ((Result_0x23) & 0x07) << 12
8013b5e0: 34040022 ori r4,r0,0x0022             #       0x22
8013b5e4: 0c04ed91 jal 0x8013b644               #       ROUTINE: Set Script Variable (0x22, ((((Result_0x24) & 0x01) << 15) | (((Result_0x23) & 0x07) << 12)))
8013b5e8: 02022825 or r5,r16,r2                 #       ((((Result_0x24) & 0x01) << 15) | (((Result_0x23) & 0x07) << 12))
8013b5ec: 340400be ori r4,r0,0x00be             #       0xbe
                                                #   }
8013b5f0: 00002821 addu r5,r0,r0                #   0
8013b5f4: 00003021 addu r6,r0,r0                #   0
8013b5f8: 0c052806 jal 0x8014a018               #   ROUTINE: Run Script Variable Command (0xbe, 0, 0, 0)                    // ZERO (0)
8013b5fc: 00003821 addu r7,r0,r0                #   0
8013b600: 340400b1 ori r4,r0,0x00b1             #   0xb1
8013b604: 00002821 addu r5,r0,r0                #   0
8013b608: 02203021 addu r6,r17,r0               #   Variable ID
8013b60c: 0c052806 jal 0x8014a018               #   ROUTINE: Run Script Variable Command (0xb1, 0, VariableID, 0)           // ADDVAR (0, VariableID)
8013b610: 00003821 addu r7,r0,r0                #   0
8013b614: 3c038016 lui r3,0x8016
8013b618: 8c635f9c lw r3,0x5f9c(r3)             #   Variable_0_Pointer = *0x80165f9c
8013b61c: 00000000 nop
8013b620: 8c620000 lw r2,0x0000(r3)             #   result = *(Variable_0_Pointer)
8013b624: ac720000 sw r18,0x0000(r3)            #   *(Variable_0_Pointer) = Old_Variable_0_Value
8013b628: 8fbf001c lw r31,0x001c(r29)           #   return result
8013b62c: 8fb20018 lw r18,0x0018(r29)
8013b630: 8fb10014 lw r17,0x0014(r29)
8013b634: 8fb00010 lw r16,0x0010(r29)
8013b638: 27bd0020 addiu r29,r29,0x0020
8013b63c: 03e00008 jr r31
8013b640: 00000000 nop

Return location

0014a1dc: Run_Script_Variable_Command
0014a214: Run_Script_Variable_Command
00186794: Steal_Gil


Routine duplicated here : Unknown_1