Game Flow Control routine

From Final Fantasy Hacktics Wiki
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