Set Script Variable

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
#   ROUTINE: SET SCRIPT VARIABLE
#       Parameters:
#           r4 = (VariableID) Variable ID (https://ffhacktics.com/wiki/Variables)
#           r5 = (Value) New value for variable to be set to

8013b644: 27bdffe0 addiu r29,r29,-0x0020
8013b648: afb00010 sw r16,0x0010(r29)
8013b64c: 00808021 addu r16,r4,r0               #   VariableID
8013b650: afb10014 sw r17,0x0014(r29)
8013b654: 3c028016 lui r2,0x8016
8013b658: 8c425f9c lw r2,0x5f9c(r2)             #   Variable_0_Pointer = *0x80165f9c
8013b65c: 3403002c ori r3,r0,0x002c             #   0x2c
8013b660: afbf001c sw r31,0x001c(r29)
8013b664: afb20018 sw r18,0x0018(r29)
8013b668: 8c520000 lw r18,0x0000(r2)            #   Old_Variable_0_Value = *Variable_0_Pointer
8013b66c: 16030008 bne r16,r3,0x8013b690        
8013b670: 00a08821 addu r17,r5,r0               #   newValue = Value
                                                #   if (VariableID == 0x2c) {           // War Funds
8013b674: 3c0205f5 lui r2,0x05f5
8013b678: 3442e0ff ori r2,r2,0xe0ff             #       99999999
8013b67c: 0051102a slt r2,r2,r17                       
8013b680: 10400004 beq r2,r0,0x8013b694         #       
8013b684: 340400be ori r4,r0,0x00be             #       0xbe
                                                #       if (99999999 < value) {
8013b688: 3c1105f5 lui r17,0x05f5
8013b68c: 3631e0ff ori r17,r17,0xe0ff           #           newValue = 99999999
                                                #       }
                                                #   }
8013b690: 340400be ori r4,r0,0x00be             #   0xbe
8013b694: 02002821 addu r5,r16,r0               #   p1
8013b698: 00003021 addu r6,r0,r0                #   0
8013b69c: 0c052806 jal 0x8014a018               #   ROUTINE: Run Script Variable Command (0xbe, p1, 0, 0)               // ZERO (VariableID)
8013b6a0: 00003821 addu r7,r0,r0                #   0
8013b6a4: 340400b0 ori r4,r0,0x00b0             #   0xb0
8013b6a8: 02002821 addu r5,r16,r0               #   p1
8013b6ac: 02203021 addu r6,r17,r0               #   newValue
8013b6b0: 0c052806 jal 0x8014a018               #   ROUTINE: Run Script Variable Command (0xb0, p1, newValue, 0)        // ADD (VariableID, newValue)
8013b6b4: 00003821 addu r7,r0,r0                #   0
8013b6b8: 3c028016 lui r2,0x8016
8013b6bc: 8c425f9c lw r2,0x5f9c(r2)             #   Variable_0_Pointer = *0x80165f9c
8013b6c0: 00000000 nop
8013b6c4: ac520000 sw r18,0x0000(r2)            #   *(Variable_0_Pointer) = Old_Variable_0_Value
8013b6c8: 8fbf001c lw r31,0x001c(r29)
8013b6cc: 8fb20018 lw r18,0x0018(r29)
8013b6d0: 8fb10014 lw r17,0x0014(r29)
8013b6d4: 8fb00010 lw r16,0x0010(r29)
8013b6d8: 27bd0020 addiu r29,r29,0x0020
8013b6dc: 03e00008 jr r31
8013b6e0: 00000000 nop