Difference between revisions of "Unit Battle Initialization"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
m (Fixed 0x0005aa00's comment: it's a branch if r18 DOES NOT equal 0.)
 
(4 intermediate revisions by 2 users not shown)
Line 12: Line 12:
 
  0005a9dc: 12420008 beq r18,r2,0x0005aa00 Branch if r18 = 0x82 (set in one part of code, rest are 0)
 
  0005a9dc: 12420008 beq r18,r2,0x0005aa00 Branch if r18 = 0x82 (set in one part of code, rest are 0)
 
  0005a9e0: 00a08821 addu r17,r5,r0 r17 = ENTD Data Pointer
 
  0005a9e0: 00a08821 addu r17,r5,r0 r17 = ENTD Data Pointer
  0005a9e4: 0c0177eb jal 0x 0005dfac Initialize Some Unit Data
+
  0005a9e4: 0c0177eb jal 0x0005dfac [[Initialize Some Unit Data]]
 
  0005a9e8: 00000000 nop
 
  0005a9e8: 00000000 nop
 
  0005a9ec: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer
 
  0005a9ec: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer
  0005a9f0: 0c016b07 jal 0x 0005ac1c ENTD Data Calculation
+
  0005a9f0: 0c016b07 jal 0x0005ac1c [[ENTD Data Calculation]]
 
  0005a9f4: 02202821 addu r5,r17,r0 r5 = ENTD Data Pointer
 
  0005a9f4: 02202821 addu r5,r17,r0 r5 = ENTD Data Pointer
  0005a9f8: 1440003a bne r2,r0,0x 0005aae4 Branch if ENTD Data Calculation failed
+
  0005a9f8: 1440003a bne r2,r0,0x0005aae4 Branch if ENTD Data Calculation failed
 
  0005a9fc: 2402ffff addiu r2,r0,0xffff r2 = FFFF
 
  0005a9fc: 2402ffff addiu r2,r0,0xffff r2 = FFFF
  0005aa00: 1640000f bne r18,r0,0x0005aa40 Branch if r18 = 0
+
  0005aa00: 1640000f bne r18,r0,0x0005aa40 Branch if r18 != 0
 
  0005aa04: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer
 
  0005aa04: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer
 
  0005aa08: 92220001 lbu r2,0x0001(r17) Load ENTD's Gender Byte
 
  0005aa08: 92220001 lbu r2,0x0001(r17) Load ENTD's Gender Byte
Line 29: Line 29:
 
  0005aa20: 00000000 nop
 
  0005aa20: 00000000 nop
 
  0005aa24: 2c420004 sltiu r2,r2,0x0004
 
  0005aa24: 2c420004 sltiu r2,r2,0x0004
  0005aa28: 1040 0005 beq r2,r0,0x 0005aa40 Branch if Unit isn't Ramza
+
  0005aa28: 10400005 beq r2,r0,0x0005aa40 Branch if Unit isn't Ramza
 
  0005aa2c: 00000000 nop
 
  0005aa2c: 00000000 nop
 
  0005aa30: 92220004 lbu r2,0x0004(r17) Load ENTD Birth Month
 
  0005aa30: 92220004 lbu r2,0x0004(r17) Load ENTD Birth Month
 
  0005aa34: 00000000 nop
 
  0005aa34: 00000000 nop
  0005aa38: 1040002a beq r2,r0,0x 0005aae4 Branch if Birth Month = 0
+
  0005aa38: 1040002a beq r2,r0,0x0005aae4 Branch if Birth Month = 0
 
  0005aa3c: 00001021 addu r2,r0,r0 r2 = 0
 
  0005aa3c: 00001021 addu r2,r0,r0 r2 = 0
  0005aa40: 0c016cad jal 0x0005b2b4 Calculate ENTD Unit Jobs
+
  0005aa40: 0c016cad jal 0x0005b2b4 [[Calculate ENTD Unit Jobs]]
 
  0005aa44: 02202821 addu r5,r17,r0 r5 = ENTD Data Pointer
 
  0005aa44: 02202821 addu r5,r17,r0 r5 = ENTD Data Pointer
 
  0005aa48: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer
 
  0005aa48: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer
  0005aa4c: 0c016e9c jal 0x0005ba70 Calculate Unit's Abilities
+
  0005aa4c: 0c016e9c jal 0x0005ba70 [[Calculate Unit's Abilities]]
 
  0005aa50: 02202821 addu r5,r17,r0 r5 = ENTD Data Pointer
 
  0005aa50: 02202821 addu r5,r17,r0 r5 = ENTD Data Pointer
 
  0005aa54: 0c016de8 jal 0x 0005b7a0 Enable Unit's R/S/M Flags
 
  0005aa54: 0c016de8 jal 0x 0005b7a0 Enable Unit's R/S/M Flags
 
  0005aa58: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer
 
  0005aa58: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer
  0005aa5c: 0c016900 jal 0x0005a400 Prep for Generating Base Raw Stats
+
  0005aa5c: 0c016900 jal 0x0005a400 [[Prep for Generating Base Raw Stats]]
 
  0005aa60: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer
 
  0005aa60: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer
  0005aa64: 0c016948 jal 0x 0005a520 Transfer Job's Growths/Mults to Unit
+
  0005aa64: 0c016948 jal 0x0005a520 [[Transfer Job's Growths/Mults to Unit]]
 
  0005aa68: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer
 
  0005aa68: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer
 
  0005aa6c: 92030002 lbu r3,0x0002(r16) Load Unit's Party ID
 
  0005aa6c: 92030002 lbu r3,0x0002(r16) Load Unit's Party ID
Line 52: Line 52:
 
  0005aa7c: 340200fe ori r2,r0,0x00fe r2 = FE
 
  0005aa7c: 340200fe ori r2,r0,0x00fe r2 = FE
 
  0005aa80: a2020002 sb r2,0x0002(r16) Store Unit's Party ID = FE (just for leveling up)
 
  0005aa80: a2020002 sb r2,0x0002(r16) Store Unit's Party ID = FE (just for leveling up)
  0005aa84: 0c016e20 jal 0x 0005b880 Calculate Actual Stats
+
  0005aa84: 0c016e20 jal 0x0005b880 [[Calculate Actual Stats (Used for Stat Capping as well)]]
 
  0005aa88: 00002821 addu r5,r0,r0 r5 = 0 (Level UP)
 
  0005aa88: 00002821 addu r5,r0,r0 r5 = 0 (Level UP)
 
  0005aa8c: 92030002 lbu r3,0x0002(r16) Load Unit's Party ID
 
  0005aa8c: 92030002 lbu r3,0x0002(r16) Load Unit's Party ID
Line 59: Line 59:
 
  0005aa98: 340200ff ori r2,r0,0x00ff r2 = FF
 
  0005aa98: 340200ff ori r2,r0,0x00ff r2 = FF
 
  0005aa9c: a2020002 sb r2,0x0002(r16) Store Unit's Party ID = FF
 
  0005aa9c: a2020002 sb r2,0x0002(r16) Store Unit's Party ID = FF
  0005aaa0: 0c01709f jal 0x 0005c27c Equippable Item Setting (Support/Female-only)
+
  0005aaa0: 0c01709f jal 0x 0005c27c [[Equippable Item Setting (Support/Female-only)]]
 
  0005aaa4: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer
 
  0005aaa4: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer
 
  0005aaa8: 34020082 ori r2,r0,0x0082 r2 = 0x82
 
  0005aaa8: 34020082 ori r2,r0,0x0082 r2 = 0x82
Line 69: Line 69:
 
  0005aac0: 14400003 bne r2,r0,0x 0005aad0 Branch if Unit is in the party/ID is legal
 
  0005aac0: 14400003 bne r2,r0,0x 0005aad0 Branch if Unit is in the party/ID is legal
 
  0005aac4: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer
 
  0005aac4: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer
  0005aac8: 0c016f7c jal 0x 0005bdf0 Calculate/Store ENTD Unit Equipment
+
  0005aac8: 0c016f7c jal 0x0005bdf0 [[Calculate/Store ENTD Unit Equipment]]
 
  0005aacc: 02202821 addu r5,r17,r0 r5 = ENTD Pointer
 
  0005aacc: 02202821 addu r5,r17,r0 r5 = ENTD Pointer
  0005aad0: 0c016ac0 jal 0x 0005ab00 Equipment/Move/Jump +X/Name Storing/Generation
+
  0005aad0: 0c016ac0 jal 0x0005ab00 [[Equipment/Move/Jump +X/Name Storing/Generation]]
 
  0005aad4: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer
 
  0005aad4: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer
  0005aad8: 0c016ad2 jal 0x0005ab48 Store Ramza's Name/Birthday/Zodiac
+
  0005aad8: 0c016ad2 jal 0x0005ab48 [[Store Ramza's Name/Birthday/Zodiac]]
 
  0005aadc: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer
 
  0005aadc: 02002021 addu r4,r16,r0 r4 = Unit's Data Pointer
 
  0005aae0: 00001021 addu r2,r0,r0 r2 = 0 (Success)
 
  0005aae0: 00001021 addu r2,r0,r0 r2 = 0 (Success)
Line 87: Line 87:
 
== Return Locations ==
 
== Return Locations ==
  
 +
SCUS_942.21
 
  00059b78: [[Unit Initialization]]
 
  00059b78: [[Unit Initialization]]
  0017f9a0: 0017f8a0
+
 
  0018c7d8: 0018c758
+
BATTLE.BIN
 +
  0017f9a0: [[Big ENTD unit loading routine]]
 +
  0018c7d8: [[some kind of ENTD/Unit manipulation]]

Latest revision as of 05:43, 8 March 2024

Unit Battle Initialization
0005a9b4: 27bdffe0 addiu r29,r29,0xffe0
0005a9b8: afb00010 sw r16,0x0010(r29)
0005a9bc: 00808021 addu r16,r4,r0		r16 = Unit's Data Pointer
0005a9c0: afb10014 sw r17,0x0014(r29)
0005a9c4: afb20018 sw r18,0x0018(r29)
0005a9c8: 00e09021 addu r18,r7,r0		r18 = r7
0005a9cc: 34020082 ori r2,r0,0x0082		r2 = 0x82
0005a9d0: afbf001c sw r31,0x001c(r29)
0005a9d4: 3c018006 lui r1,0x8006
0005a9d8: ac266200 sw r6,0x6200(r1)		Store Battle Initialization Flag? (1 in 0x59b18)
0005a9dc: 12420008 beq r18,r2,0x0005aa00	Branch if r18 = 0x82 (set in one part of code, rest are 0)
0005a9e0: 00a08821 addu r17,r5,r0		r17 = ENTD Data Pointer
0005a9e4: 0c0177eb jal 0x0005dfac		Initialize Some Unit Data
0005a9e8: 00000000 nop
0005a9ec: 02002021 addu r4,r16,r0		r4 = Unit's Data Pointer
0005a9f0: 0c016b07 jal 0x0005ac1c		ENTD Data Calculation
0005a9f4: 02202821 addu r5,r17,r0		r5 = ENTD Data Pointer
0005a9f8: 1440003a bne r2,r0,0x0005aae4		Branch if ENTD Data Calculation failed
0005a9fc: 2402ffff addiu r2,r0,0xffff		r2 = FFFF
0005aa00: 1640000f bne r18,r0,0x0005aa40	Branch if r18 != 0
0005aa04: 02002021 addu r4,r16,r0		r4 = Unit's Data Pointer
0005aa08: 92220001 lbu r2,0x0001(r17)		Load ENTD's Gender Byte
0005aa0c: 00000000 nop
0005aa10: 30420008 andi r2,r2,0x0008
0005aa14: 14400033 bne r2,r0,0x 0005aae4		Branch if Unit has Load Formation
0005aa18: 00001021 addu r2,r0,r0		r2 = 0
0005aa1c: 92220000 lbu r2,0x0000(r17)		Load ENTD Sprite Set
0005aa20: 00000000 nop
0005aa24: 2c420004 sltiu r2,r2,0x0004
0005aa28: 10400005 beq r2,r0,0x0005aa40		Branch if Unit isn't Ramza
0005aa2c: 00000000 nop
0005aa30: 92220004 lbu r2,0x0004(r17)		Load ENTD Birth Month
0005aa34: 00000000 nop
0005aa38: 1040002a beq r2,r0,0x0005aae4		Branch if Birth Month = 0
0005aa3c: 00001021 addu r2,r0,r0		r2 = 0
0005aa40: 0c016cad jal 0x0005b2b4		Calculate ENTD Unit Jobs
0005aa44: 02202821 addu r5,r17,r0		r5 = ENTD Data Pointer
0005aa48: 02002021 addu r4,r16,r0		r4 = Unit's Data Pointer
0005aa4c: 0c016e9c jal 0x0005ba70		Calculate Unit's Abilities
0005aa50: 02202821 addu r5,r17,r0		r5 = ENTD Data Pointer
0005aa54: 0c016de8 jal 0x 0005b7a0		Enable Unit's R/S/M Flags
0005aa58: 02002021 addu r4,r16,r0		r4 = Unit's Data Pointer
0005aa5c: 0c016900 jal 0x0005a400		Prep for Generating Base Raw Stats
0005aa60: 02002021 addu r4,r16,r0		r4 = Unit's Data Pointer
0005aa64: 0c016948 jal 0x0005a520		Transfer Job's Growths/Mults to Unit
0005aa68: 02002021 addu r4,r16,r0		r4 = Unit's Data Pointer
0005aa6c: 92030002 lbu r3,0x0002(r16)		Load Unit's Party ID
0005aa70: 340200ff ori r2,r0,0x00ff		r2 = FF
0005aa74: 14620003 bne r3,r2,0x0005aa84		Branch if Unit is in the party
0005aa78: 02002021 addu r4,r16,r0		r4 = Unit's Data Pointer
0005aa7c: 340200fe ori r2,r0,0x00fe		r2 = FE
0005aa80: a2020002 sb r2,0x0002(r16)		Store Unit's Party ID = FE (just for leveling up)
0005aa84: 0c016e20 jal 0x0005b880		Calculate Actual Stats (Used for Stat Capping as well)
0005aa88: 00002821 addu r5,r0,r0		r5 = 0 (Level UP)
0005aa8c: 92030002 lbu r3,0x0002(r16)		Load Unit's Party ID
0005aa90: 340200fe ori r2,r0,0x00fe		r2 = FE
0005aa94: 14620002 bne r3,r2,0x 0005aaa0		Branch if Unit is in the party
0005aa98: 340200ff ori r2,r0,0x00ff		r2 = FF
0005aa9c: a2020002 sb r2,0x0002(r16)		Store Unit's Party ID = FF
0005aaa0: 0c01709f jal 0x 0005c27c		Equippable Item Setting (Support/Female-only)
0005aaa4: 02002021 addu r4,r16,r0		r4 = Unit's Data Pointer
0005aaa8: 34020082 ori r2,r0,0x0082		r2 = 0x82
0005aaac: 12420008 beq r18,r2,0x0005aad0	Branch if r18 = 0x82
0005aab0: 00000000 nop
0005aab4: 92020002 lbu r2,0x0002(r16)		Load Unit's Party ID
0005aab8: 00000000 nop
0005aabc: 2c420014 sltiu r2,r2,0x0014
0005aac0: 14400003 bne r2,r0,0x 0005aad0		Branch if Unit is in the party/ID is legal
0005aac4: 02002021 addu r4,r16,r0		r4 = Unit's Data Pointer
0005aac8: 0c016f7c jal 0x0005bdf0		Calculate/Store ENTD Unit Equipment
0005aacc: 02202821 addu r5,r17,r0		r5 = ENTD Pointer
0005aad0: 0c016ac0 jal 0x0005ab00		Equipment/Move/Jump +X/Name Storing/Generation
0005aad4: 02002021 addu r4,r16,r0		r4 = Unit's Data Pointer
0005aad8: 0c016ad2 jal 0x0005ab48		Store Ramza's Name/Birthday/Zodiac
0005aadc: 02002021 addu r4,r16,r0		r4 = Unit's Data Pointer
0005aae0: 00001021 addu r2,r0,r0		r2 = 0 (Success)
0005aae4: 8fbf001c lw r31,0x001c(r29)
0005aae8: 8fb20018 lw r18,0x0018(r29)
0005aaec: 8fb10014 lw r17,0x0014(r29)
0005aaf0: 8fb00010 lw r16,0x0010(r29)
0005aaf4: 27bd0020 addiu r29,r29,0x0020
0005aaf8: 03e00008 jr r31
0005aafc: 00000000 nop


Return Locations

SCUS_942.21
00059b78: Unit Initialization
BATTLE.BIN
0017f9a0: Big ENTD unit loading routine
0018c7d8: some kind of ENTD/Unit manipulation