Difference between revisions of "BATTLE Open ATTACK.OUT Deployment"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
m
Line 1: Line 1:
<font face='Courier New'>
 
 
< [[BATTLE.BIN Routines]]
 
< [[BATTLE.BIN Routines]]
  
Line 9: Line 8:
 
  0013d32c: 3c018016 lui r1,0x8016
 
  0013d32c: 3c018016 lui r1,0x8016
 
  0013d330: ac206044 sw r0,0x6044(r1)
 
  0013d330: ac206044 sw r0,0x6044(r1)
  0013d334: 0c04fbeb jal 0x0013efac
+
  0013d334: 0c04fbeb jal 0x0013efac                   # [[0013efac - 0013eff0]]
 
  0013d338: 00000000 nop
 
  0013d338: 00000000 nop
  0013d33c: 0c04fc5a jal 0x0013f168
+
  0013d33c: 0c04fc5a jal 0x0013f168                   # [[0013f168 - 0013f208]]
 
  0013d340: 00000000 nop
 
  0013d340: 00000000 nop
  0013d344: 0c04fe2d jal 0x0013f8b4
+
  0013d344: 0c04fe2d jal 0x0013f8b4                   # [[0013f8b4 - 0013f8fc]]
 
  0013d348: 00000000 nop
 
  0013d348: 00000000 nop
 
  0013d34c: 3c038016 lui r3,0x8016
 
  0013d34c: 3c038016 lui r3,0x8016
 
  0013d350: 94635fda lhu r3,0x5fda(r3)
 
  0013d350: 94635fda lhu r3,0x5fda(r3)
 
  0013d354: 34020002 ori r2,r0,0x0002
 
  0013d354: 34020002 ori r2,r0,0x0002
  0013d358: 14620006 bne r3,r2,0x0013d374
+
  0013d358: 14620006 bne r3,r2,0x0013d374             # branch if attack.out doesn't exist?
  0013d35c: 34040990 ori r4,r0,0x0990
+
  0013d35c: 34040990 ori r4,r0,0x0990                 # ATTACK.OUT LBA
 
  0013d360: 34020003 ori r2,r0,0x0003
 
  0013d360: 34020003 ori r2,r0,0x0003
 
  0013d364: 3c018016 lui r1,0x8016
 
  0013d364: 3c018016 lui r1,0x8016
  0013d368: a4225fda sh r2,0x5fda(r1)
+
  0013d368: a4225fda sh r2,0x5fda(r1)                 # if so, store 3?
 
  0013d36c: 0804f4e5 j 0x0013d394
 
  0013d36c: 0804f4e5 j 0x0013d394
 
  0013d370: 00000000 nop
 
  0013d370: 00000000 nop
 
  0013d374: 3c068001 lui r6,0x8001
 
  0013d374: 3c068001 lui r6,0x8001
  0013d378: 8cc60008 lw r6,0x0008(r6)
+
  0013d378: 8cc60008 lw r6,0x0008(r6)                 # open attack.out into 0x801bf000
 
  0013d37c: 3c028004 lui r2,0x8004
 
  0013d37c: 3c028004 lui r2,0x8004
  0013d380: 24424954 addiu r2,r2,0x4954
+
  0013d380: 24424954 addiu r2,r2,0x4954               # -> Get DAT as WD
 
  0013d384: 3c018017 lui r1,0x8017
 
  0013d384: 3c018017 lui r1,0x8017
 
  0013d388: ac223ca8 sw r2,0x3ca8(r1)
 
  0013d388: ac223ca8 sw r2,0x3ca8(r1)
  0013d38c: 0c0533ad jal 0x0014ceb4       # [[Call Inner Subroutine]] (BATTLE.BIN)
+
  0013d38c: 0c0533ad jal 0x0014ceb4                   # [[Call Inner Subroutine]] -> [[Get DAT as WD]]
 
  0013d390: 3c050002 lui r5,0x0002
 
  0013d390: 3c050002 lui r5,0x0002
  0013d394: 0c070d2d jal 0x001c34b4       # [[Load Scenario Conditionals]]
+
  0013d394: 0c070d2d jal 0x001c34b4                   # [[ATTACK.OUT Load Scenario Conditionals]]
 
  0013d398: 00000000 nop
 
  0013d398: 00000000 nop
  0013d39c: 00408021 addu r16,r2,r0
+
  0013d39c: 00408021 addu r16,r2,r0                   # said scenario conditional (unit ID, current event (*2?), or, some other miscellanious value.)
 
  0013d3a0: 3c038016 lui r3,0x8016
 
  0013d3a0: 3c038016 lui r3,0x8016
 
  0013d3a4: 94635fda lhu r3,0x5fda(r3)
 
  0013d3a4: 94635fda lhu r3,0x5fda(r3)
Line 41: Line 40:
 
  0013d3ac: 10620005 beq r3,r2,0x0013d3c4
 
  0013d3ac: 10620005 beq r3,r2,0x0013d3c4
 
  0013d3b0: 00000000 nop
 
  0013d3b0: 00000000 nop
  0013d3b4: 0c071ff9 jal 0x001c7fe4       # [[ATTACK.OUT Call Prepare Formation Sprites]]
+
  0013d3b4: 0c071ff9 jal 0x001c7fe4                   # [[ATTACK.OUT Call Prepare Formation Sprites]]
 
  0013d3b8: 00000000 nop
 
  0013d3b8: 00000000 nop
  0013d3bc: 0c072001 jal 0x001c8004       # [[Call Portrait loading routine (ATTACK.OUT)]]
+
  0013d3bc: 0c072001 jal 0x001c8004                   # [[ATTACK.OUT Call Portrait loading routine]]
 
  0013d3c0: 00000000 nop
 
  0013d3c0: 00000000 nop
 
  0013d3c4: 3c018016 lui r1,0x8016
 
  0013d3c4: 3c018016 lui r1,0x8016
Line 49: Line 48:
 
  0013d3cc: 3c018016 lui r1,0x8016
 
  0013d3cc: 3c018016 lui r1,0x8016
 
  0013d3d0: ac206064 sw r0,0x6064(r1)
 
  0013d3d0: ac206064 sw r0,0x6064(r1)
  0013d3d4: 0c04b721 jal 0x0012dc84
+
  0013d3d4: 0c04b721 jal 0x0012dc84                   # [[Check If Tutorial Event Slot]]
 
  0013d3d8: 00000000 nop
 
  0013d3d8: 00000000 nop
  0013d3dc: 1040001f beq r2,r0,0x0013d45c
+
  0013d3dc: 1040001f beq r2,r0,0x0013d45c             # branch if not.
 
  0013d3e0: 3c06fffe lui r6,0xfffe
 
  0013d3e0: 3c06fffe lui r6,0xfffe
 
  0013d3e4: 34c67fff ori r6,r6,0x7fff
 
  0013d3e4: 34c67fff ori r6,r6,0x7fff
Line 83: Line 82:
 
  0013d454: 0804f519 j 0x0013d464
 
  0013d454: 0804f519 j 0x0013d464
 
  0013d458: aca20000 sw r2,0x0000(r5)
 
  0013d458: aca20000 sw r2,0x0000(r5)
 +
 
  0013d45c: 3c018016 lui r1,0x8016
 
  0013d45c: 3c018016 lui r1,0x8016
 
  0013d460: ac20603c sw r0,0x603c(r1)
 
  0013d460: ac20603c sw r0,0x603c(r1)
  0013d464: 0c070c1e jal 0x001c3078
+
  0013d464: 0c070c1e jal 0x001c3078                   # [[ATTACK.OUT Determine Fieldable Units]]
 
  0013d468: 00000000 nop
 
  0013d468: 00000000 nop
  0013d46c: 12000007 beq r16,r0,0x0013d48c
+
  0013d46c: 12000007 beq r16,r0,0x0013d48c             # branch if conditional == 0
 
  0013d470: 3404002a ori r4,r0,0x002a
 
  0013d470: 3404002a ori r4,r0,0x002a
 
  0013d474: 3c058014 lui r5,0x8014
 
  0013d474: 3c058014 lui r5,0x8014
  0013d478: 24a5d1f8 addiu r5,r5,0xd1f8
+
  0013d478: 24a5d1f8 addiu r5,r5,0xd1f8               # -> 0013d1f0 - 0013d22c
  0013d47c: 0c053228 jal 0x0014c8a0
+
  0013d47c: 0c053228 jal 0x0014c8a0                   # [[Initialize Thread]] -> [[0013d1f0 - 0013d22c]] into thread 6
 
  0013d480: 34040006 ori r4,r0,0x0006
 
  0013d480: 34040006 ori r4,r0,0x0006
  0013d484: 0804f532 j 0x0013d4c8
+
  0013d484: 0804f532 j 0x0013d4c8                     # return 1
 
  0013d488: 34020001 ori r2,r0,0x0001
 
  0013d488: 34020001 ori r2,r0,0x0001
 +
 +
Scenario conditional == 0
 
  0013d48c: 3c018016 lui r1,0x8016
 
  0013d48c: 3c018016 lui r1,0x8016
 
  0013d490: a4205fd4 sh r0,0x5fd4(r1)
 
  0013d490: a4205fd4 sh r0,0x5fd4(r1)
 
  0013d494: 3c018016 lui r1,0x8016
 
  0013d494: 3c018016 lui r1,0x8016
 
  0013d498: a4205fd6 sh r0,0x5fd6(r1)
 
  0013d498: a4205fd6 sh r0,0x5fd6(r1)
  0013d49c: 0c04f49e jal 0x0013d278
+
  0013d49c: 0c04f49e jal 0x0013d278                   # [[0013d278 - 0013d31c]]
 
  0013d4a0: 00002821 addu r5,r0,r0
 
  0013d4a0: 00002821 addu r5,r0,r0
  0013d4a4: 0c072522 jal 0x001c9488
+
  0013d4a4: 0c072522 jal 0x001c9488                   # [[ATTACK.OUT Save text string data for Deployment screen]]
 
  0013d4a8: 00000000 nop
 
  0013d4a8: 00000000 nop
  0013d4ac: 0c0727b0 jal 0x001c9ec0
+
  0013d4ac: 0c0727b0 jal 0x001c9ec0                   # [[ATTACK.OUT 001c9ec0 - 001c9f88]]
 
  0013d4b0: 00000000 nop
 
  0013d4b0: 00000000 nop
 
  0013d4b4: 3c05801c lui r5,0x801c
 
  0013d4b4: 3c05801c lui r5,0x801c
  0013d4b8: 24a53f44 addiu r5,r5,0x3f44
+
  0013d4b8: 24a53f44 addiu r5,r5,0x3f44               # -> ATTACK.OUT Deployment Screen
  0013d4bc: 0c053228 jal 0x0014c8a0
+
  0013d4bc: 0c053228 jal 0x0014c8a0                   # [[Initialize Thread]] -> [[ATTACK.OUT Deployment Screen]] into thread 6
 
  0013d4c0: 34040006 ori r4,r0,0x0006
 
  0013d4c0: 34040006 ori r4,r0,0x0006
 
  0013d4c4: 00001021 addu r2,r0,r0
 
  0013d4c4: 00001021 addu r2,r0,r0
Line 115: Line 117:
 
  0013d4d4: 03e00008 jr r31
 
  0013d4d4: 03e00008 jr r31
 
  0013d4d8: 00000000 nop
 
  0013d4d8: 00000000 nop
</font>
 

Revision as of 10:45, 10 September 2025

< BATTLE.BIN Routines

# WORLD.BIN: 000f0c8c - 000f0e44

0013d320: 27bdffe8 addiu r29,r29,0xffe8
0013d324: afbf0014 sw r31,0x0014(r29)
0013d328: afb00010 sw r16,0x0010(r29)
0013d32c: 3c018016 lui r1,0x8016
0013d330: ac206044 sw r0,0x6044(r1)
0013d334: 0c04fbeb jal 0x0013efac                    # 0013efac - 0013eff0
0013d338: 00000000 nop
0013d33c: 0c04fc5a jal 0x0013f168                    # 0013f168 - 0013f208
0013d340: 00000000 nop
0013d344: 0c04fe2d jal 0x0013f8b4                    # 0013f8b4 - 0013f8fc
0013d348: 00000000 nop
0013d34c: 3c038016 lui r3,0x8016
0013d350: 94635fda lhu r3,0x5fda(r3)
0013d354: 34020002 ori r2,r0,0x0002
0013d358: 14620006 bne r3,r2,0x0013d374              # branch if attack.out doesn't exist?
0013d35c: 34040990 ori r4,r0,0x0990                  # ATTACK.OUT LBA
0013d360: 34020003 ori r2,r0,0x0003
0013d364: 3c018016 lui r1,0x8016
0013d368: a4225fda sh r2,0x5fda(r1)                  # if so, store 3?
0013d36c: 0804f4e5 j 0x0013d394
0013d370: 00000000 nop
0013d374: 3c068001 lui r6,0x8001
0013d378: 8cc60008 lw r6,0x0008(r6)                  # open attack.out into 0x801bf000
0013d37c: 3c028004 lui r2,0x8004
0013d380: 24424954 addiu r2,r2,0x4954                # -> Get DAT as WD
0013d384: 3c018017 lui r1,0x8017
0013d388: ac223ca8 sw r2,0x3ca8(r1)
0013d38c: 0c0533ad jal 0x0014ceb4                    # Call Inner Subroutine -> Get DAT as WD
0013d390: 3c050002 lui r5,0x0002
0013d394: 0c070d2d jal 0x001c34b4                    # ATTACK.OUT Load Scenario Conditionals
0013d398: 00000000 nop
0013d39c: 00408021 addu r16,r2,r0                    # said scenario conditional (unit ID, current event (*2?), or, some other miscellanious value.)
0013d3a0: 3c038016 lui r3,0x8016
0013d3a4: 94635fda lhu r3,0x5fda(r3)
0013d3a8: 34020003 ori r2,r0,0x0003
0013d3ac: 10620005 beq r3,r2,0x0013d3c4
0013d3b0: 00000000 nop
0013d3b4: 0c071ff9 jal 0x001c7fe4                    # ATTACK.OUT Call Prepare Formation Sprites
0013d3b8: 00000000 nop
0013d3bc: 0c072001 jal 0x001c8004                    # ATTACK.OUT Call Portrait loading routine
0013d3c0: 00000000 nop
0013d3c4: 3c018016 lui r1,0x8016
0013d3c8: ac206060 sw r0,0x6060(r1)
0013d3cc: 3c018016 lui r1,0x8016
0013d3d0: ac206064 sw r0,0x6064(r1)
0013d3d4: 0c04b721 jal 0x0012dc84                    # Check If Tutorial Event Slot
0013d3d8: 00000000 nop
0013d3dc: 1040001f beq r2,r0,0x0013d45c              # branch if not.
0013d3e0: 3c06fffe lui r6,0xfffe
0013d3e4: 34c67fff ori r6,r6,0x7fff
0013d3e8: 3c04ffe7 lui r4,0xffe7
0013d3ec: 3484ffff ori r4,r4,0xffff
0013d3f0: 3c08e7ff lui r8,0xe7ff
0013d3f4: 3508ffff ori r8,r8,0xffff
0013d3f8: 3c07fe7f lui r7,0xfe7f
0013d3fc: 34e7ffff ori r7,r7,0xffff
0013d400: 340200ff ori r2,r0,0x00ff
0013d404: 3c058004 lui r5,0x8004
0013d408: 24a573ac addiu r5,r5,0x73ac
0013d40c: 3c018016 lui r1,0x8016
0013d410: ac22603c sw r2,0x603c(r1)
0013d414: 8ca20000 lw r2,0x0000(r5)
0013d418: 2403fff8 addiu r3,r0,0xfff8
0013d41c: 00431024 and r2,r2,r3
0013d420: 2403fe3f addiu r3,r0,0xfe3f
0013d424: 00431024 and r2,r2,r3
0013d428: 34420040 ori r2,r2,0x0040
0013d42c: 00461024 and r2,r2,r6
0013d430: 00441024 and r2,r2,r4
0013d434: 3c030008 lui r3,0x0008
0013d438: 00431025 or r2,r2,r3
0013d43c: 00481024 and r2,r2,r8
0013d440: 3c048004 lui r4,0x8004
0013d444: 8c8473ac lw r4,0x73ac(r4)
0013d448: 00471024 and r2,r2,r7
0013d44c: 3c018017 lui r1,0x8017
0013d450: ac24d99c sw r4,-0x2664(r1)
0013d454: 0804f519 j 0x0013d464
0013d458: aca20000 sw r2,0x0000(r5)
0013d45c: 3c018016 lui r1,0x8016
0013d460: ac20603c sw r0,0x603c(r1)
0013d464: 0c070c1e jal 0x001c3078                    # ATTACK.OUT Determine Fieldable Units
0013d468: 00000000 nop
0013d46c: 12000007 beq r16,r0,0x0013d48c             # branch if conditional == 0
0013d470: 3404002a ori r4,r0,0x002a
0013d474: 3c058014 lui r5,0x8014
0013d478: 24a5d1f8 addiu r5,r5,0xd1f8                # -> 0013d1f0 - 0013d22c
0013d47c: 0c053228 jal 0x0014c8a0                    # Initialize Thread -> 0013d1f0 - 0013d22c into thread 6
0013d480: 34040006 ori r4,r0,0x0006
0013d484: 0804f532 j 0x0013d4c8                      # return 1
0013d488: 34020001 ori r2,r0,0x0001

Scenario conditional == 0

0013d48c: 3c018016 lui r1,0x8016
0013d490: a4205fd4 sh r0,0x5fd4(r1)
0013d494: 3c018016 lui r1,0x8016
0013d498: a4205fd6 sh r0,0x5fd6(r1)
0013d49c: 0c04f49e jal 0x0013d278                    # 0013d278 - 0013d31c
0013d4a0: 00002821 addu r5,r0,r0
0013d4a4: 0c072522 jal 0x001c9488                    # ATTACK.OUT Save text string data for Deployment screen
0013d4a8: 00000000 nop
0013d4ac: 0c0727b0 jal 0x001c9ec0                    # ATTACK.OUT 001c9ec0 - 001c9f88
0013d4b0: 00000000 nop
0013d4b4: 3c05801c lui r5,0x801c
0013d4b8: 24a53f44 addiu r5,r5,0x3f44                # -> ATTACK.OUT Deployment Screen
0013d4bc: 0c053228 jal 0x0014c8a0                    # Initialize Thread -> ATTACK.OUT Deployment Screen into thread 6
0013d4c0: 34040006 ori r4,r0,0x0006
0013d4c4: 00001021 addu r2,r0,r0
0013d4c8: 8fbf0014 lw r31,0x0014(r29)
0013d4cc: 8fb00010 lw r16,0x0010(r29)
0013d4d0: 27bd0018 addiu r29,r29,0x0018
0013d4d4: 03e00008 jr r31
0013d4d8: 00000000 nop