Game Flow Control routine
Jump to navigation
Jump to search
alt notes: Main BATTLE.BIN Loop
00079a98: 27bdffe0 addiu r29,r29,0xffe0 00079a9c: afbf001c sw r31,0x001c(r29) 00079aa0: afb20018 sw r18,0x0018(r29) 00079aa4: afb10014 sw r17,0x0014(r29) 00079aa8: 0c03b841 jal 0x000ee104 00079aac: afb00010 sw r16,0x0010(r29) 00079ab0: 0c01eaf4 jal 0x0007abd0 initialize a bunch of data 00079ab4: 00000000 nop 00079ab8: 0c06b58b jal 0x001ad62c initialize data 00079abc: 00000000 nop 00079ac0: 3c020001 lui r2,0x0001 00079ac4: 344296b0 ori r2,r2,0x96b0 00079ac8: 3c01800c lui r1,0x800c 00079acc: 00220821 addu r1,r1,r2 00079ad0: a0207ce9 sb r0,0x7ce9(r1) 00079ad4: 2442cd2a addiu r2,r2,0xcd2a 00079ad8: 0441fffb bgez r2,0x 00079ac8 00079adc: 00000000 nop 00079ae0: 3c12800f lui r18,0x800f 00079ae4: 26525b9c addiu r18,r18,0x5b9c 00079ae8: 3c11800e lui r17,0x800e 00079aec: 26314e74 addiu r17,r17,0x4e74 00079af0: 0c01e4a8 jal 0x 000792a0 panel/tile initialization 00079af4: 00000000 nop 00079af8: 3c028004 lui r2,0x8004 00079afc: 8c4273ac lw r2,0x73ac(r2) 00079b00: 3c01800e lui r1,0x800e 00079b04: ac204e8c sw r0,0x4e8c(r1) 00079b08: 30420007 andi r2,r2,0x0007 00079b0c: 3c018009 lui r1,0x8009 00079b10: ac2260c0 sw r2,0x60c0(r1) 00079b14: 0c024d95 jal 0x00093654 00079b18: 00000000 nop 00079b1c: 0c01ebb5 jal 0x0007aed4 00079b20: 00000000 nop 00079b24: 0c007472 jal 0x0001d1c8 00079b28: 34040200 ori r4,r0,0x0200 00079b2c: 0c01129f jal 0x00044a7c 00079b30: 00000000 nop 00079b34: 0c01c0b9 jal 0x000702e4 00079b38: 00000000 nop 00079b3c: 8e220000 lw r2,0x0000(r17) 00079b40: 00000000 nop 00079b44: 00021023 subu r2,r0,r2 00079b48: 04410002 bgez r2,0x 00079b54 00079b4c: 00000000 nop 00079b50: 24420fff addiu r2,r2,0x0fff 00079b54: 8e230004 lw r3,0x0004(r17) 00079b58: 00021303 sra r2,r2,0x0c 00079b5c: a6420000 sh r2,0x0000(r18) 00079b60: 00031023 subu r2,r0,r3 00079b64: 04410002 bgez r2,0x 00079b70 00079b68: 00000000 nop 00079b6c: 24420fff addiu r2,r2,0x0fff 00079b70: 8e230008 lw r3,0x0008(r17) 00079b74: 00021303 sra r2,r2,0x0c 00079b78: a6420002 sh r2,0x0002(r18) 00079b7c: 00031023 subu r2,r0,r3 00079b80: 04410002 bgez r2,0x 00079b8c 00079b84: 00000000 nop 00079b88: 24420fff addiu r2,r2,0x0fff 00079b8c: 00021303 sra r2,r2,0x0c 00079b90: a6420004 sh r2,0x0004(r18) 00079b94: 3c10800a lui r16,0x800a 00079b98: 26108a24 addiu r16,r16,0x8a24 00079b9c: 3c05800a lui r5,0x800a 00079ba0: 24a57784 addiu r5,r5,0x7784 00079ba4: 3c06800a lui r6,0x800a 00079ba8: 24c677b0 addiu r6,r6,0x77b0 00079bac: 3c07800c lui r7,0x800c 00079bb0: 24e77ca0 addiu r7,r7,0x7ca0 00079bb4: 0c03ba57 jal 0x000ee95c 00079bb8: 02002021 addu r4,r16,r0 00079bbc: 0c03a103 jal 0x000e840c 00079bc0: 02002021 addu r4,r16,r0 00079bc4: 0c068710 jal 0x001a1c40 00079bc8: 00000000 nop 00079bcc: 10400005 beq r2,r0,0x 00079be4 00079bd0: 34020002 ori r2,r0,0x0002 00079bd4: 3c018009 lui r1,0x8009 00079bd8: ac22612c sw r2,0x612c(r1) 00079bdc: 0801e6fb j 0x 00079bec 00079be0: 00000000 nop 00079be4: 3c018009 lui r1,0x8009 00079be8: ac20612c sw r0,0x612c(r1) 00079bec: 3c038009 lui r3,0x8009 00079bf0: 8c6360e4 lw r3,0x60e4(r3) load gamestate value 00079bf4: 00000000 nop 00079bf8: 2c62003c sltiu r2,r3,0x003c 00079bfc: 10400007 beq r2,r0,0x 00079c1c 00079c00: 00031080 sll r2,r3,0x02 00079c04: 3c018006 lui r1,0x8006 00079c08: 00220821 addu r1,r1,r2 00079c0c: 8c2276a8 lw r2,0x76a8(r1) 00079c10: 00000000 nop 00079c14: 00400008 jr r2 00079c18: 00000000 nop
Free Cursor
00079c1c: 0c01d2fe jal 0x00074bf8 00079c20: 00000000 nop 00079c24: 0801e7f1 j 0x 00079fc4 00079c28: 00000000 nop
00079c2c: 0c01d374 jal 0x00074dd0 00079c30: 00000000 nop 00079c34: 0801e7f1 j 0x 00079fc4 00079c38: 00000000 nop
00079c3c: 0c01d38b jal 0x00074e2c 00079c40: 00000000 nop 00079c44: 0801e7f1 j 0x 00079fc4 00079c48: 00000000 nop
Action Menus
00079c4c: 0c01d3a5 jal 0x00074e94 00079c50: 00000000 nop 00079c54: 0801e7f1 j 0x 00079fc4 00079c58: 00000000 nop
AI?
00079c5c: 0c01d3d7 jal 0x00074f5c 00079c60: 00000000 nop 00079c64: 0801e7f1 j 0x 00079fc4 00079c68: 00000000 nop
AI
00079c6c: 0c01d4c4 jal 0x00075310 00079c70: 00000000 nop 00079c74: 0801e7f1 j 0x 00079fc4 00079c78: 00000000 nop
00079c7c: 0c01d57f jal 0x000755fc 00079c80: 00000000 nop 00079c84: 0801e7f1 j 0x 00079fc4 00079c88: 00000000 nop 00079c8c: 0c01d5a4 jal 0x00075690 00079c90: 00000000 nop 00079c94: 0801e7f1 j 0x 00079fc4 00079c98: 00000000 nop 00079c9c: 0c01d5c7 jal 0x0007571c 00079ca0: 00000000 nop 00079ca4: 0801e7f1 j 0x 00079fc4 00079ca8: 00000000 nop 00079cac: 0c01d5f1 jal 0x000757c4 00079cb0: 00000000 nop 00079cb4: 0801e7f1 j 0x 00079fc4 00079cb8: 00000000 nop 00079cbc: 0c01d608 jal 0x00075820 00079cc0: 00000000 nop 00079cc4: 0801e7f1 j 0x 00079fc4 00079cc8: 00000000 nop 00079ccc: 0c01e028 jal 0x000780a0 00079cd0: 00000000 nop 00079cd4: 0801e7f1 j 0x 00079fc4 00079cd8: 00000000 nop 00079cdc: 0c01e052 jal 0x00078148 00079ce0: 00000000 nop 00079ce4: 0801e7f1 j 0x 00079fc4 00079ce8: 00000000 nop 00079cec: 0c01e0ca jal 0x00078328 00079cf0: 00000000 nop 00079cf4: 0801e7f1 j 0x 00079fc4 00079cf8: 00000000 nop 00079cfc: 0c01e10f jal 0x0007843c 00079d00: 00000000 nop 00079d04: 0801e7f1 j 0x 00079fc4 00079d08: 00000000 nop 00079d0c: 0c01d61f jal 0x0007587c 00079d10: 00000000 nop 00079d14: 0801e7f1 j 0x 00079fc4 00079d18: 00000000 nop 00079d1c: 0c01d644 jal 0x00075910 00079d20: 00000000 nop 00079d24: 0801e7f1 j 0x 00079fc4 00079d28: 00000000 nop 00079d2c: 0c01d70d jal 0x00075c34 00079d30: 00000000 nop 00079d34: 0801e7f1 j 0x 00079fc4 00079d38: 00000000 nop 00079d3c: 0c01d728 jal 0x00075ca0 00079d40: 00000000 nop 00079d44: 0801e7f1 j 0x 00079fc4 00079d48: 00000000 nop 00079d4c: 0c01d743 jal 0x00075d0c 00079d50: 00000000 nop 00079d54: 0801e7f1 j 0x 00079fc4 00079d58: 00000000 nop 00079d5c: 0c01d76c jal 0x00075db0 00079d60: 00000000 nop 00079d64: 0801e7f1 j 0x 00079fc4 00079d68: 00000000 nop 00079d6c: 0c01d873 jal 0x000761cc 00079d70: 00000000 nop 00079d74: 0801e7f1 j 0x 00079fc4 00079d78: 00000000 nop 00079d7c: 0c01d90c jal 0x00076430 00079d80: 00000000 nop 00079d84: 0801e7f1 j 0x 00079fc4 00079d88: 00000000 nop
Change of turn?
00079d8c: 0c01d8a7 jal 0x0007629c 00079d90: 00000000 nop 00079d94: 0801e7f1 j 0x 00079fc4 00079d98: 00000000 nop 00079d9c: 0c01d996 jal 0x00076658 00079da0: 00000000 nop 00079da4: 0801e7f1 j 0x 00079fc4 00079da8: 00000000 nop 00079dac: 0c01da47 jal 0x0007691c 00079db0: 00000000 nop 00079db4: 0801e7f1 j 0x 00079fc4 00079db8: 00000000 nop 00079dbc: 0c01da6c jal 0x000769b0 00079dc0: 00000000 nop 00079dc4: 0801e7f1 j 0x 00079fc4 00079dc8: 00000000 nop 00079dcc: 0c01dadf jal 0x00076b7c 00079dd0: 00000000 nop 00079dd4: 0801e7f1 j 0x 00079fc4 00079dd8: 00000000 nop 00079ddc: 0c01db14 jal 0x00076c50 00079de0: 00000000 nop 00079de4: 0801e7f1 j 0x 00079fc4 00079de8: 00000000 nop 00079dec: 0c01dafa jal 0x00076be8 00079df0: 00000000 nop 00079df4: 0801e7f1 j 0x 00079fc4 00079df8: 00000000 nop
Attack
00079dfc: 0c01db61 jal 0x00076d84 00076d84 - 00076f10 00079e00: 00000000 nop 00079e04: 0801e7f1 j 0x 00079fc4 00079e08: 00000000 nop
00079e0c: 0c01dbc5 jal 0x00076f14 00076f14 - 00076fcc Store animation/facing 00079e10: 00000000 nop 00079e14: 0801e7f1 j 0x 00079fc4 00079e18: 00000000 nop
AI?
00079e1c: 0c01dbf4 jal 0x00076fd0 00076fd0 - 00077094 00079e20: 00000000 nop 00079e24: 0801e7f1 j 0x 00079fc4 00079e28: 00000000 nop
Commence attack
00079e2c: 0c01dc26 jal 0x00077098 00077098 - 00077130 Sets current action phase to pre-attack and queues action phase control. 00079e30: 00000000 nop 00079e34: 0801e7f1 j 0x 00079fc4 00079e38: 00000000 nop
Commence effect damage display
00079e3c: 0c01dc4d jal 0x00077134 00077134 - 0007719c 00079e40: 00000000 nop 00079e44: 0801e7f1 j 0x 00079fc4 00079e48: 00000000 nop
Load SP2
00079e4c: 0c01dc68 jal 0x000771a0 Before attack: Load SP2 for monsters, typically. 00079e50: 00000000 nop 00079e54: 0801e7f1 j 0x 00079fc4 00079e58: 00000000 nop
Commence effect opening
00079e5c: 0c01dcc5 jal 0x00077314 00077314 - 00077374 sets display to 0x2a 00079e60: 00000000 nop 00079e64: 0801e7f1 j 0x 00079fc4 00079e68: 00000000 nop
Commence secondary effect animations
00079e6c: 0c01dcde jal 0x00077378 00077378 - 000773b0 Moogle (0x2C)?? 00079e70: 00000000 nop 00079e74: 0801e7f1 j 0x 00079fc4 00079e78: 00000000 nop
Calculate whether or not to display damage/effects? (also does recoil?)
00079e7c: 0c01dcfe jal 0x000773f8 000773f8 - 0007775c 00079e80: 00000000 nop 00079e84: 0801e7f1 j 0x 00079fc4 00079e88: 00000000 nop
Controller input during ability quote/name text?
00079e8c: 0c01ddd8 jal 0x00077760 Controller input during proposition description? 00079e90: 00000000 nop 00079e94: 0801e7f1 j 0x 00079fc4 00079e98: 00000000 nop
Recommence Attack/handle reactions.
00079e9c: 0c01ddfb jal 0x000777ec 000777ec - 0007799c Recommence attack phase control. (if hamedo triggered, skips) 00079ea0: 00000000 nop 00079ea4: 0801e7f1 j 0x 00079fc4 00079ea8: 00000000 nop
Learn abilities on hit
00079eac: 0c01de68 jal 0x000779a0 000779a0 - 00077b54 00079eb0: 00000000 nop 00079eb4: 0801e7f1 j 0x 00079fc4 00079eb8: 00000000 nop
finishes up attack?
00079ebc: 0c01def6 jal 0x00077bd8 00077bd8 - 00077c04 00079ec0: 00000000 nop 00079ec4: 0801e7f1 j 0x 00079fc4 00079ec8: 00000000 nop
Finishes up attack/calculator math/checks game over.
00079ecc: 0c01df02 jal 0x00077c08 00077c08 - 00077c34 00079ed0: 00000000 nop 00079ed4: 0801e7f1 j 0x 00079fc4 00079ed8: 00000000 nop
AI?
00079edc: 0c01df0e jal 0x00077c38 00079ee0: 00000000 nop 00079ee4: 0801e7f1 j 0x 00079fc4 00079ee8: 00000000 nop
dense
00079eec: 0c01df29 jal 0x00077ca4 00079ef0: 00000000 nop 00079ef4: 0801e7f1 j 0x 00079fc4 00079ef8: 00000000 nop
AI?
00079efc: 0c01df87 jal 0x00077e1c 00079f00: 00000000 nop 00079f04: 0801e7f1 j 0x 00079fc4 00079f08: 00000000 nop
AI Target processing
00079f0c: 0c01dfa2 jal 0x00077e88 00079f10: 00000000 nop 00079f14: 0801e7f1 j 0x 00079fc4 00079f18: 00000000 nop
AI?
00079f1c: 0c01dfda jal 0x00077f68 00079f20: 00000000 nop 00079f24: 0801e7f1 j 0x 00079fc4 00079f28: 00000000 nop
AI?
00079f2c: 0c01e00c jal 0x00078030 00079f30: 00000000 nop 00079f34: 0801e7f1 j 0x 00079fc4 00079f38: 00000000 nop
Seems related to finishes up attack, missing effects checks?
00079f3c: 0c01e141 jal 0x00078504 00079f40: 00000000 nop 00079f44: 0801e7f1 j 0x 00079fc4 00079f48: 00000000 nop
dense
00079f4c: 0c01e16b jal 0x000785ac 00079f50: 00000000 nop 00079f54: 0801e7f1 j 0x 00079fc4 00079f58: 00000000 nop
dense
00079f5c: 0c01e1ff jal 0x000787fc 00079f60: 00000000 nop 00079f64: 0801e7f1 j 0x 00079fc4 00079f68: 00000000 nop 00079f6c: 0c01e2fd jal 0x00078bf4 00079f70: 00000000 nop 00079f74: 0801e7f1 j 0x 00079fc4 00079f78: 00000000 nop 00079f7c: 0c01e396 jal 0x00078e58 00079f80: 00000000 nop 00079f84: 0801e7f1 j 0x 00079fc4 00079f88: 00000000 nop 00079f8c: 0c01e259 jal 0x00078964 00079f90: 00000000 nop 00079f94: 0801e7f1 j 0x 00079fc4 00079f98: 00000000 nop 00079f9c: 0c01e348 jal 0x00078d20 00079fa0: 00000000 nop 00079fa4: 0801e7f1 j 0x 00079fc4 00079fa8: 00000000 nop 00079fac: 0c01e3ed jal 0x00078fb4 00079fb0: 00000000 nop 00079fb4: 0801e7f1 j 0x 00079fc4 00079fb8: 00000000 nop 00079fbc: 0c01e2b3 jal 0x00078acc 00079fc0: 00000000 nop
00079fc4: 0c01bbc0 jal 0x0006ef00 00079fc8: 00000000 nop 00079fcc: 0c01bcc8 jal 0x0006f320 00079fd0: 00000000 nop 00079fd4: 0c01bd9e jal 0x0006f678 00079fd8: 00000000 nop 00079fdc: 0c01be6b jal 0x0006f9ac 00079fe0: 00000000 nop 00079fe4: 0c0244a9 jal 0x000912a4 00079fe8: 00000000 nop 00079fec: 0c010f78 jal 0x00043de0 00079ff0: 00000000 nop 00079ff4: 3c038009 lui r3,0x8009 00079ff8: 8c6360e4 lw r3,0x60e4(r3) load game flow byte 00079ffc: 3402003b ori r2,r0,0x003b 0007a000: 1062005c beq r3,r2,0x 0007a174 branch if 3b 0007a004: 00000000 nop 0007a008: 3c048005 lui r4,0x8005 0007a00c: 2484eaf4 addiu r4,r4,0xeaf4 0007a010: 0c00478e jal 0x00011e38 0007a014: 00000000 nop 0007a018: 3c028004 lui r2,0x8004 0007a01c: 8c42597c lw r2,0x597c(r2) 0007a020: 3c038004 lui r3,0x8004 0007a024: 8c635994 lw r3,0x5994(r3) 0007a028: 2c420001 sltiu r2,r2,0x0001 0007a02c: 24630001 addiu r3,r3,0x0001 0007a030: 3c018004 lui r1,0x8004 0007a034: ac22597c sw r2,0x597c(r1) 0007a038: 3c018004 lui r1,0x8004 0007a03c: ac235994 sw r3,0x5994(r1) 0007a040: 0c024be6 jal 0x00092f98 0007a044: 00000000 nop 0007a048: 0c011298 jal 0x00044a60 0007a04c: 00000000 nop 0007a050: 0c024ea6 jal 0x00093a98 0007a054: 244405fc addiu r4,r2,0x05fc 0007a058: 3c038004 lui r3,0x8004 0007a05c: 8c635988 lw r3,0x5988(r3) 0007a060: 3c018004 lui r1,0x8004 0007a064: ac225984 sw r2,0x5984(r1) 0007a068: 0062182a slt r3,r3,r2 0007a06c: 10600003 beq r3,r0,0x 0007a07c 0007a070: 00002821 addu r5,r0,r0 0007a074: 3c018004 lui r1,0x8004 0007a078: ac225988 sw r2,0x5988(r1) 0007a07c: 340600fe ori r6,r0,0x00fe 0007a080: 3c04800a lui r4,0x800a 0007a084: 248477c4 addiu r4,r4,0x77c4 #position of misc unit ID & 0x80/0x40/0x20 flags? 0007a088: 00001821 addu r3,r0,r0 0007a08c: 3c01800a lui r1,0x800a 0007a090: 00230821 addu r1,r1,r3 0007a094: 8c2277c8 lw r2,0x77c8(r1) global timer...? 0007a098: 00000000 nop 0007a09c: 10400004 beq r2,r0,0x 0007a0b0 0007a0a0: 24637564 addiu r3,r3,0x7564 0007a0a4: 10460002 beq r2,r6,0x 0007a0b0 #branch if 0 or 0xfe? 0007a0a8: 2442ffff addiu r2,r2,0xffff 0007a0ac: ac820004 sw r2,0x0004(r4) #subtract 1, save again. 0007a0b0: 24a50001 addiu r5,r5,0x0001 0007a0b4: 28a20002 slti r2,r5,0x0002 0007a0b8: 1440fff4 bne r2,r0,0x 0007a08c #loop 0007a0bc: 24847564 addiu r4,r4,0x7564 #next slot? 0007a0c0: 3c038009 lui r3,0x8009 0007a0c4: 8c6360e4 lw r3,0x60e4(r3) 0007a0c8: 34020033 ori r2,r0,0x0033 0007a0cc: 10620003 beq r3,r2,0x 0007a0dc #branch if gameflow state is 0x33 (n... none of them?) 0007a0d0: 3402002d ori r2,r0,0x002d 0007a0d4: 14620021 bne r3,r2,0x 0007a15c #branch if not 2d? 0007a0d8: 00000000 nop 0007a0dc: 3c038004 lui r3,0x8004 0007a0e0: 8c635980 lw r3,0x5980(r3) 0007a0e4: 34020001 ori r2,r0,0x0001 0007a0e8: 14620005 bne r3,r2,0x 0007a100 0007a0ec: 00000000 nop 0007a0f0: 3c018004 lui r1,0x8004 0007a0f4: ac20598c sw r0,0x598c(r1) 0007a0f8: 0801e857 j 0x 0007a15c 0007a0fc: 00000000 nop 0007a100: 3c028004 lui r2,0x8004 0007a104: 8c425990 lw r2,0x5990(r2) 0007a108: 00000000 nop 0007a10c: 14400013 bne r2,r0,0x 0007a15c 0007a110: 00000000 nop 0007a114: 3c038004 lui r3,0x8004 0007a118: 8c635984 lw r3,0x5984(r3) 0007a11c: 00000000 nop 0007a120: 28620301 slti r2,r3,0x0301 0007a124: 14400003 bne r2,r0,0x 0007a134 0007a128: 28620201 slti r2,r3,0x0201 0007a12c: 0801e855 j 0x 0007a154 0007a130: 3402001e ori r2,r0,0x001e 0007a134: 14400009 bne r2,r0,0x 0007a15c 0007a138: 00000000 nop 0007a13c: 3c028004 lui r2,0x8004 0007a140: 8c42598c lw r2,0x598c(r2) 0007a144: 00000000 nop 0007a148: 2842000f slti r2,r2,0x000f 0007a14c: 10400003 beq r2,r0,0x 0007a15c 0007a150: 3402000f ori r2,r0,0x000f 0007a154: 3c018004 lui r1,0x8004 0007a158: ac22598c sw r2,0x598c(r1) 0007a15c: 3c018004 lui r1,0x8004 0007a160: ac205990 sw r0,0x5990(r1) 0007a164: 0c01127b jal 0x000449ec 0007a168: 00000000 nop 0007a16c: 0801e6c5 j 0x 00079b14 0007a170: 00000000 nop 0007a174: 0c01e1f7 jal 0x000787dc 0007a178: 00000000 nop 0007a17c: 0c021c19 jal 0x00087064 0007a180: 00000000 nop 0007a184: 3c02800a lui r2,0x800a 0007a188: 8c42778c lw r2,0x778c(r2) 0007a18c: 00000000 nop 0007a190: 1040fe57 beq r2,r0,0x 00079af0 0007a194: 00000000 nop 0007a198: 0c0091b5 jal 0x000246d4 0007a19c: 00002021 addu r4,r0,r0 0007a1a0: 0c0076ea jal 0x0001dba8 0007a1a4: 00002021 addu r4,r0,r0 0007a1a8: 0c0091b5 jal 0x000246d4 0007a1ac: 00002021 addu r4,r0,r0 0007a1b0: 0c0076ea jal 0x0001dba8 0007a1b4: 00002021 addu r4,r0,r0 0007a1b8: 8fbf001c lw r31,0x001c(r29) 0007a1bc: 8fb20018 lw r18,0x0018(r29) 0007a1c0: 8fb10014 lw r17,0x0014(r29) 0007a1c4: 8fb00010 lw r16,0x0010(r29) 0007a1c8: 27bd0020 addiu r29,r29,0x0020 0007a1cc: 03e00008 jr r31 0007a1d0: 00000000 nop