Difference between revisions of "00083cd4 - 00083e0c"

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search
(Created page with "<font face='Courier New'> 00083cd4: 27bdffe8 addiu r29,r29,0xffe8 00083cd8: 00803021 addu r6,r4,r0 00083cdc: 00042400 sll r4,r4,0x10 00083ce0: 00042403 sra r4,r4,0x10 0...")
 
 
Line 2: Line 2:
 
   
 
   
 
  00083cd4: 27bdffe8 addiu r29,r29,0xffe8
 
  00083cd4: 27bdffe8 addiu r29,r29,0xffe8
  00083cd8: 00803021 addu r6,r4,r0
+
  00083cd8: 00803021 addu r6,r4,r0 #Unit's Misc Unit ID
 
  00083cdc: 00042400 sll r4,r4,0x10
 
  00083cdc: 00042400 sll r4,r4,0x10
 
  00083ce0: 00042403 sra r4,r4,0x10
 
  00083ce0: 00042403 sra r4,r4,0x10
  00083ce4: 28820010 slti r2,r4,0x0010
+
  00083ce4: 28820010 slti r2,r4,0x0010 #set if unit's ID is less than 16 (no more than 16 units per fight?)
  00083ce8: 10400036 beq r2,r0,0x00083dc4
+
  00083ce8: 10400036 beq r2,r0,0x00083dc4 #if ID is 0 (force initialise)
 
  00083cec: afbf0010 sw r31,0x0010(r29)
 
  00083cec: afbf0010 sw r31,0x0010(r29)
  00083cf0: 00002821 addu r5,r0,r0
+
  00083cf0: 00002821 addu r5,r0,r0 #Battle unit counter
  00083cf4: 00001821 addu r3,r0,r0
+
  00083cf4: 00001821 addu r3,r0,r0 #Misc unit data counter
  00083cf8: 3c01800b lui r1,0x800b
+
  00083cf8: 3c01800b lui r1,0x800b #While No. units initialised < No. units in battle:
 
  00083cfc: 00230821 addu r1,r1,r3
 
  00083cfc: 00230821 addu r1,r1,r3
  00083d00: 8c227304 lw r2,0x7304(r1)
+
  00083d00: 8c227304 lw r2,0x7304(r1) #previous unit's Initialization byte
 
  00083d04: 00000000 nop
 
  00083d04: 00000000 nop
  00083d08: 10400007 beq r2,r0,0x00083d28
+
  00083d08: 10400007 beq r2,r0,0x00083d28 #branch to E if 0 (not to be initialized?)
 
  00083d0c: 00000000 nop
 
  00083d0c: 00000000 nop
 
  00083d10: 3c01800b lui r1,0x800b
 
  00083d10: 3c01800b lui r1,0x800b
 
  00083d14: 00230821 addu r1,r1,r3
 
  00083d14: 00230821 addu r1,r1,r3
  00083d18: 9022730c lbu r2,0x730c(r1)
+
  00083d18: 9022730c lbu r2,0x730c(r1) #load unit's misc ID
 
  00083d1c: 00000000 nop
 
  00083d1c: 00000000 nop
  00083d20: 10440006 beq r2,r4,0x00083d3c
+
  00083d20: 10440006 beq r2,r4,0x00083d3c #if current misc ID <> unit's misc ID (else, branch) // is the r4 input actually the number of units in the battle?
  00083d24: 28a20010 slti r2,r5,0x0010
+
  00083d24: 28a20010 slti r2,r5,0x0010 #true if misc unit ID counter < 16
  00083d28: 24a50001 addiu r5,r5,0x0001
+
  00083d28: 24a50001 addiu r5,r5,0x0001 #E add 1 to the unit counter
 
  00083d2c: 28a20010 slti r2,r5,0x0010
 
  00083d2c: 28a20010 slti r2,r5,0x0010
  00083d30: 1440fff1 bne r2,r0,0x00083cf8
+
  00083d30: 1440fff1 bne r2,r0,0x00083cf8 #Loop
  00083d34: 24630440 addiu r3,r3,0x0440
+
  00083d34: 24630440 addiu r3,r3,0x0440 #add 0x0440 to pointer counter
 
  00083d38: 28a20010 slti r2,r5,0x0010
 
  00083d38: 28a20010 slti r2,r5,0x0010
  00083d3c: 14400030 bne r2,r0,0x00083e00
+
  00083d3c: 14400030 bne r2,r0,0x00083e00 #if misc unit ID > 16 (else end)
 
  00083d40: 00001021 addu r2,r0,r0
 
  00083d40: 00001021 addu r2,r0,r0
  00083d44: 00061400 sll r2,r6,0x10
+
  00083d44: 00061400 sll r2,r6,0x10 #
  00083d48: 00021403 sra r2,r2,0x10
+
  00083d48: 00021403 sra r2,r2,0x10 #
 
  00083d4c: 00021900 sll r3,r2,0x04
 
  00083d4c: 00021900 sll r3,r2,0x04
 
  00083d50: 00621821 addu r3,r3,r2
 
  00083d50: 00621821 addu r3,r3,r2
  00083d54: 00032180 sll r4,r3,0x06
+
  00083d54: 00032180 sll r4,r3,0x06 #Unit ID * 440
 
  00083d58: 3c01800b lui r1,0x800b
 
  00083d58: 3c01800b lui r1,0x800b
 
  00083d5c: 00240821 addu r1,r1,r4
 
  00083d5c: 00240821 addu r1,r1,r4
  00083d60: 8c227304 lw r2,0x7304(r1)
+
  00083d60: 8c227304 lw r2,0x7304(r1) #load previous unit's initialization byte?
 
  00083d64: 00000000 nop
 
  00083d64: 00000000 nop
  00083d68: 14400025 bne r2,r0,0x00083e00
+
  00083d68: 14400025 bne r2,r0,0x00083e00 #if unit 15's initialization byte is do not initialise (else End)
 
  00083d6c: 00001021 addu r2,r0,r0
 
  00083d6c: 00001021 addu r2,r0,r0
 
  00083d70: 3c02800b lui r2,0x800b
 
  00083d70: 3c02800b lui r2,0x800b
  00083d74: 24427308 addiu r2,r2,0x7308
+
  00083d74: 24427308 addiu r2,r2,0x7308 #r2 = Misc unit data pointer
 
  00083d78: 34030001 ori r3,r0,0x0001
 
  00083d78: 34030001 ori r3,r0,0x0001
 
  00083d7c: 3c01800b lui r1,0x800b
 
  00083d7c: 3c01800b lui r1,0x800b
 
  00083d80: 00240821 addu r1,r1,r4
 
  00083d80: 00240821 addu r1,r1,r4
  00083d84: ac237304 sw r3,0x7304(r1)
+
  00083d84: ac237304 sw r3,0x7304(r1) #save enforced initialization to previous unit ID
 
  00083d88: 3c01800b lui r1,0x800b
 
  00083d88: 3c01800b lui r1,0x800b
 
  00083d8c: 00240821 addu r1,r1,r4
 
  00083d8c: 00240821 addu r1,r1,r4
  00083d90: a026730c sb r6,0x730c(r1)
+
  00083d90: a026730c sb r6,0x730c(r1) #Store Unit's ID
 
  00083d94: 08020f80 j 0x00083e00
 
  00083d94: 08020f80 j 0x00083e00
  00083d98: 00821021 addu r2,r4,r2
+
  00083d98: 00821021 addu r2,r4,r2 #r2 = Unit's Misc data pointer // End
 
  00083d9c: 3c02800b lui r2,0x800b
 
  00083d9c: 3c02800b lui r2,0x800b
  00083da0: 24427308 addiu r2,r2,0x7308
+
  00083da0: 24427308 addiu r2,r2,0x7308 #unit misc data pointer
 
  00083da4: 3c01800b lui r1,0x800b
 
  00083da4: 3c01800b lui r1,0x800b
 
  00083da8: 00240821 addu r1,r1,r4
 
  00083da8: 00240821 addu r1,r1,r4
  00083dac: ac237304 sw r3,0x7304(r1)
+
  00083dac: ac237304 sw r3,0x7304(r1) #initialise previous unit
 
  00083db0: 3c01800b lui r1,0x800b
 
  00083db0: 3c01800b lui r1,0x800b
 
  00083db4: 00240821 addu r1,r1,r4
 
  00083db4: 00240821 addu r1,r1,r4
  00083db8: a025730c sb r5,0x730c(r1)
+
  00083db8: a025730c sb r5,0x730c(r1) #save unit ID
 
  00083dbc: 08020f80 j 0x00083e00
 
  00083dbc: 08020f80 j 0x00083e00
  00083dc0: 00821021 addu r2,r4,r2
+
  00083dc0: 00821021 addu r2,r4,r2 #r2 = Unit misc data pointer // End
  00083dc4: 00002821 addu r5,r0,r0
+
  00083dc4: 00002821 addu r5,r0,r0 #Unit counter = 5
  00083dc8: 00002021 addu r4,r0,r0
+
  00083dc8: 00002021 addu r4,r0,r0 #misc data pointer counter
  00083dcc: 3c01800b lui r1,0x800b
+
  00083dcc: 3c01800b lui r1,0x800b #E #While Unit Misc ID < 16
 
  00083dd0: 00240821 addu r1,r1,r4
 
  00083dd0: 00240821 addu r1,r1,r4
  00083dd4: 8c227304 lw r2,0x7304(r1)
+
  00083dd4: 8c227304 lw r2,0x7304(r1) #load unit previous unit's initialization byte
 
  00083dd8: 00000000 nop
 
  00083dd8: 00000000 nop
  00083ddc: 1040ffef beq r2,r0,0x00083d9c
+
  00083ddc: 1040ffef beq r2,r0,0x00083d9c #if initialize previous unit (else, branch backward)
  00083de0: 34030001 ori r3,r0,0x0001
+
  00083de0: 34030001 ori r3,r0,0x0001 #r3 = 1
  00083de4: 24a50001 addiu r5,r5,0x0001
+
  00083de4: 24a50001 addiu r5,r5,0x0001 #increase unit counter
  00083de8: 28a20010 slti r2,r5,0x0010
+
  00083de8: 28a20010 slti r2,r5,0x0010 #set if less than 16
  00083dec: 1440fff7 bne r2,r0,0x00083dcc
+
  00083dec: 1440fff7 bne r2,r0,0x00083dcc #loop #E
  00083df0: 24840440 addiu r4,r4,0x0440
+
  00083df0: 24840440 addiu r4,r4,0x0440 #increment misc data pointer counter 0x440
  00083df4: 0c011282 jal 0x00044a08
+
  00083df4: 0c011282 jal 0x00044a08 #move 0x6 to r5 [[00044a08 - 00044a30]] // also clears 0x8004c6c4. if unit is 16 or greater?
 
  00083df8: 34040006 ori r4,r0,0x0006
 
  00083df8: 34040006 ori r4,r0,0x0006
  00083dfc: 00001021 addu r2,r0,r0
+
  00083dfc: 00001021 addu r2,r0,r0 #in the result of an error, no unit misc pointer.
 
  00083e00: 8fbf0010 lw r31,0x0010(r29)
 
  00083e00: 8fbf0010 lw r31,0x0010(r29)
 
  00083e04: 27bd0018 addiu r29,r29,0x0018
 
  00083e04: 27bd0018 addiu r29,r29,0x0018

Latest revision as of 12:36, 13 February 2022

00083cd4: 27bdffe8 addiu r29,r29,0xffe8
00083cd8: 00803021 addu r6,r4,r0			#Unit's Misc Unit ID
00083cdc: 00042400 sll r4,r4,0x10
00083ce0: 00042403 sra r4,r4,0x10
00083ce4: 28820010 slti r2,r4,0x0010			#set if unit's ID is less than 16 (no more than 16 units per fight?)
00083ce8: 10400036 beq r2,r0,0x00083dc4		#if ID is 0 (force initialise)
00083cec: afbf0010 sw r31,0x0010(r29)
00083cf0: 00002821 addu r5,r0,r0			#Battle unit counter
00083cf4: 00001821 addu r3,r0,r0			#Misc unit data counter
00083cf8: 3c01800b lui r1,0x800b				#While No. units initialised < No. units in battle:
00083cfc: 00230821 addu r1,r1,r3
00083d00: 8c227304 lw r2,0x7304(r1)				#previous unit's Initialization byte
00083d04: 00000000 nop
00083d08: 10400007 beq r2,r0,0x00083d28			#branch to E if 0 (not to be initialized?)
00083d0c: 00000000 nop
00083d10: 3c01800b lui r1,0x800b
00083d14: 00230821 addu r1,r1,r3
00083d18: 9022730c lbu r2,0x730c(r1)				#load unit's misc ID
00083d1c: 00000000 nop
00083d20: 10440006 beq r2,r4,0x00083d3c			#if current misc ID <> unit's misc ID (else, branch) // is the r4 input actually the number of units in the battle?
00083d24: 28a20010 slti r2,r5,0x0010				#true if misc unit ID counter < 16
00083d28: 24a50001 addiu r5,r5,0x0001			#E	add 1 to the unit counter
00083d2c: 28a20010 slti r2,r5,0x0010
00083d30: 1440fff1 bne r2,r0,0x00083cf8			#Loop
00083d34: 24630440 addiu r3,r3,0x0440				#add 0x0440 to pointer counter
00083d38: 28a20010 slti r2,r5,0x0010
00083d3c: 14400030 bne r2,r0,0x00083e00		#if misc unit ID > 16 (else end)
00083d40: 00001021 addu r2,r0,r0
00083d44: 00061400 sll r2,r6,0x10				#
00083d48: 00021403 sra r2,r2,0x10				#
00083d4c: 00021900 sll r3,r2,0x04
00083d50: 00621821 addu r3,r3,r2
00083d54: 00032180 sll r4,r3,0x06				#Unit ID * 440
00083d58: 3c01800b lui r1,0x800b
00083d5c: 00240821 addu r1,r1,r4
00083d60: 8c227304 lw r2,0x7304(r1)				#load previous unit's initialization byte?
00083d64: 00000000 nop
00083d68: 14400025 bne r2,r0,0x00083e00			#if unit 15's initialization byte is do not initialise (else End)
00083d6c: 00001021 addu r2,r0,r0
00083d70: 3c02800b lui r2,0x800b
00083d74: 24427308 addiu r2,r2,0x7308					#r2 = Misc unit data pointer
00083d78: 34030001 ori r3,r0,0x0001
00083d7c: 3c01800b lui r1,0x800b
00083d80: 00240821 addu r1,r1,r4
00083d84: ac237304 sw r3,0x7304(r1)					#save enforced initialization to previous unit ID
00083d88: 3c01800b lui r1,0x800b
00083d8c: 00240821 addu r1,r1,r4
00083d90: a026730c sb r6,0x730c(r1)					#Store Unit's ID
00083d94: 08020f80 j 0x00083e00
00083d98: 00821021 addu r2,r4,r2					#r2 = Unit's Misc data pointer // End
00083d9c: 3c02800b lui r2,0x800b
00083da0: 24427308 addiu r2,r2,0x7308			#unit misc data pointer
00083da4: 3c01800b lui r1,0x800b
00083da8: 00240821 addu r1,r1,r4
00083dac: ac237304 sw r3,0x7304(r1)			#initialise previous unit
00083db0: 3c01800b lui r1,0x800b
00083db4: 00240821 addu r1,r1,r4
00083db8: a025730c sb r5,0x730c(r1)			#save unit ID
00083dbc: 08020f80 j 0x00083e00
00083dc0: 00821021 addu r2,r4,r2			#r2 = Unit misc data pointer // End
00083dc4: 00002821 addu r5,r0,r0			#Unit counter = 5
00083dc8: 00002021 addu r4,r0,r0			#misc data pointer counter
00083dcc: 3c01800b lui r1,0x800b		#E	#While Unit Misc ID < 16
00083dd0: 00240821 addu r1,r1,r4
00083dd4: 8c227304 lw r2,0x7304(r1)			#load unit previous unit's initialization byte
00083dd8: 00000000 nop
00083ddc: 1040ffef beq r2,r0,0x00083d9c		#if initialize previous unit (else, branch backward)
00083de0: 34030001 ori r3,r0,0x0001			#r3 = 1
00083de4: 24a50001 addiu r5,r5,0x0001			#increase unit counter
00083de8: 28a20010 slti r2,r5,0x0010			#set if less than 16
00083dec: 1440fff7 bne r2,r0,0x00083dcc		#loop #E
00083df0: 24840440 addiu r4,r4,0x0440			#increment misc data pointer counter 0x440
00083df4: 0c011282 jal 0x00044a08			#move 0x6 to r5 00044a08 - 00044a30 // also clears 0x8004c6c4. if unit is 16 or greater?
00083df8: 34040006 ori r4,r0,0x0006
00083dfc: 00001021 addu r2,r0,r0			#in the result of an error, no unit misc pointer.
00083e00: 8fbf0010 lw r31,0x0010(r29)
00083e04: 27bd0018 addiu r29,r29,0x0018
00083e08: 03e00008 jr r31
00083e0c: 00000000 nop