Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ROM:002F98E0 # =============== S U B R O U T I N E =======================================
- ROM:002F98E0
- ROM:002F98E0
- ROM:002F98E0 sub_2F98E0: # CODE XREF: sub_2A1A20+30p
- ROM:002F98E0
- ROM:002F98E0 var_220 = -0x220
- ROM:002F98E0 var_210 = -0x210
- ROM:002F98E0 var_200 = -0x200
- ROM:002F98E0 var_1F0 = -0x1F0
- ROM:002F98E0 var_1E0 = -0x1E0
- ROM:002F98E0 var_1D0 = -0x1D0
- ROM:002F98E0 var_1C0 = -0x1C0
- ROM:002F98E0 var_1B0 = -0x1B0
- ROM:002F98E0 var_1A0 = -0x1A0
- ROM:002F98E0 var_190 = -0x190
- ROM:002F98E0 var_180 = -0x180
- ROM:002F98E0 var_17C = -0x17C
- ROM:002F98E0 var_178 = -0x178
- ROM:002F98E0 var_174 = -0x174
- ROM:002F98E0 var_170 = -0x170
- ROM:002F98E0 var_15C = -0x15C
- ROM:002F98E0 var_158 = -0x158
- ROM:002F98E0 var_154 = -0x154
- ROM:002F98E0 var_150 = -0x150
- ROM:002F98E0 var_140 = -0x140
- ROM:002F98E0 var_13C = -0x13C
- ROM:002F98E0 var_138 = -0x138
- ROM:002F98E0 var_134 = -0x134
- ROM:002F98E0 var_130 = -0x130
- ROM:002F98E0 var_120 = -0x120
- ROM:002F98E0 var_11C = -0x11C
- ROM:002F98E0 var_118 = -0x118
- ROM:002F98E0 var_114 = -0x114
- ROM:002F98E0 var_110 = -0x110
- ROM:002F98E0 var_100 = -0x100
- ROM:002F98E0 var_FC = -0xFC
- ROM:002F98E0 var_F8 = -0xF8
- ROM:002F98E0 var_F4 = -0xF4
- ROM:002F98E0 var_E0 = -0xE0
- ROM:002F98E0 var_DC = -0xDC
- ROM:002F98E0 var_D8 = -0xD8
- ROM:002F98E0 var_D4 = -0xD4
- ROM:002F98E0 var_D0 = -0xD0
- ROM:002F98E0 var_C0 = -0xC0
- ROM:002F98E0 var_BC = -0xBC
- ROM:002F98E0 var_B8 = -0xB8
- ROM:002F98E0 var_B4 = -0xB4
- ROM:002F98E0 var_B0 = -0xB0
- ROM:002F98E0 var_A0 = -0xA0
- ROM:002F98E0 var_9C = -0x9C
- ROM:002F98E0 var_98 = -0x98
- ROM:002F98E0 var_94 = -0x94
- ROM:002F98E0 var_90 = -0x90
- ROM:002F98E0 var_80 = -0x80
- ROM:002F98E0 var_7C = -0x7C
- ROM:002F98E0 var_78 = -0x78
- ROM:002F98E0 var_74 = -0x74
- ROM:002F98E0 var_70 = -0x70
- ROM:002F98E0 var_60 = -0x60
- ROM:002F98E0 var_5C = -0x5C
- ROM:002F98E0 var_58 = -0x58
- ROM:002F98E0 var_54 = -0x54
- ROM:002F98E0 var_50 = -0x50
- ROM:002F98E0 var_40 = -0x40
- ROM:002F98E0 var_3C = -0x3C
- ROM:002F98E0 var_38 = -0x38
- ROM:002F98E0 var_34 = -0x34
- ROM:002F98E0 var_30 = -0x30
- ROM:002F98E0 var_20 = -0x20
- ROM:002F98E0 var_1C = -0x1C
- ROM:002F98E0 var_18 = -0x18
- ROM:002F98E0 var_14 = -0x14
- ROM:002F98E0 var_10 = -0x10
- ROM:002F98E0
- ROM:002F98E0 addiu $sp, -0x220
- ROM:002F98E4 lui $v0, 0x3D # '='
- ROM:002F98E8 sd $ra, 0x220+var_190($sp)
- ROM:002F98EC lui $a1, 0x3D # '='
- ROM:002F98F0 sq $fp, 0x220+var_1A0($sp)
- ROM:002F98F4 la $v0, unk_3D1140 # v0 = Unknown Pointer 1
- ROM:002F98F8 sq $s7, 0x220+var_1B0($sp)
- ROM:002F98FC addiu $v1, $sp, 0x220+var_20 # Stack Pointer 1
- ROM:002F9900 sq $s6, 0x220+var_1C0($sp)
- ROM:002F9904 la $a1, unk_3D1100 # a1 = Unknown Pointer 2
- ROM:002F9908 sq $s5, 0x220+var_1D0($sp)
- ROM:002F990C addiu $s6, $sp, 0x220+var_10 # s6 = Stack Pointer 2
- ROM:002F9910 sq $s4, 0x220+var_1E0($sp)
- ROM:002F9914 sq $s3, 0x220+var_1F0($sp)
- ROM:002F9918 sq $s2, 0x220+var_200($sp)
- ROM:002F991C sq $s1, 0x220+var_210($sp)
- ROM:002F9920 daddu $s2, $a0, $0 # s2 = Pointer to Formation File Data Pointer
- ROM:002F9924 sq $s0, 0x220+var_220($sp)
- ROM:002F9928 addiu $s1, $sp, 0x220+var_34 # s1 = Stack Pointer 3
- ROM:002F992C sw $0, -0x62C4($gp) # Store Global_Unknown = 0
- ROM:002F9930 lw $a3, 0x1C($a0) # Load Formation ID
- ROM:002F9934 lw $a2, 4($a0) # Load Formation Data Pointer
- ROM:002F9938 sll $a3, 6 # ID * 64
- ROM:002F993C addu $a2, $a3 # a2 = Formation's Data Pointer
- ROM:002F9940 sw $v0, 0x220+var_20($sp) # Store Unknown Pointer 1 to stack
- ROM:002F9944 addiu $v0, $a2, 0x10 # v0 = Pointer to First Enemy's Formation Data
- ROM:002F9948 sw $v1, -0x62C4($gp) # Store Stack Pointer 1 to stack
- ROM:002F994C sw $v0, 0($s6) # Store Pointer to First Enemy's Formation Data
- ROM:002F9950 sw $0, 0x220+var_18($sp) # Store 0 to stack
- ROM:002F9954 sb $0, 0x220+var_14($sp)
- ROM:002F9958 sw $0, 0x220+var_1C($sp)
- ROM:002F995C lw $v1, 0x1C($a0) # Load Formation ID
- ROM:002F9960 lw $v0, 4($a0) # Load Formation Data Pointer
- ROM:002F9964 sll $v1, 6 # ID * 64
- ROM:002F9968 lw $a0, -0x62C4($gp) # Load Stack Pointer 1
- ROM:002F996C addu $v0, $v1
- ROM:002F9970 sw $a1, 0x220+var_40($sp) # Store Unknown Pointer 2 to stack
- ROM:002F9974 addiu $v1, $v0, 0x14 # v1 = Pointer to Second Enemy's Formation Data
- ROM:002F9978 sw $0, 0x220+var_38($sp) # Store 0 to stack
- ROM:002F997C beqz $a0, loc_2FA094 # Branch if Stack Pointer 1 = 0
- ROM:002F9980 sb $0, 0($s1) # Store 0 to stack
- ROM:002F9984 b loc_2F9994
- ROM:002F9988 lw $v0, 4($a0) # Load Uninitialized Stack Pointer X
- ROM:002F998C # ---------------------------------------------------------------------------
- ROM:002F998C
- ROM:002F998C loc_2F998C: # CODE XREF: sub_2F98E0+C0j
- ROM:002F998C daddu $a0, $v0, $0 # a0 = Stack Pointer X
- ROM:002F9990 lw $v0, 4($a0) # Load next Stack Pointer X (doesn't happen here)
- ROM:002F9994
- ROM:002F9994 loc_2F9994: # CODE XREF: sub_2F98E0+A4j
- ROM:002F9994 nop
- ROM:002F9998 nop
- ROM:002F999C nop
- ROM:002F99A0 bnez $v0, loc_2F998C # Branch if Stack Pointer X != 0
- ROM:002F99A4 nop
- ROM:002F99A8 addiu $v0, $sp, 0x220+var_40 # v0 = Stack Pointer 4
- ROM:002F99AC sw $v0, 4($a0) # Store Stack Pointer 4 to stack
- ROM:002F99B0
- ROM:002F99B0 loc_2F99B0: # CODE XREF: sub_2F98E0+7B8j
- ROM:002F99B0 lui $v0, 0x3D # '='
- ROM:002F99B4 addiu $t7, $sp, 0x220+var_30 # t7 = Stack Pointer 5
- ROM:002F99B8 la $v0, unk_3D1140 # v0 = Unknown Pointer 1
- ROM:002F99BC sw $0, 0x220+var_3C($sp) # Store 0 to stack
- ROM:002F99C0 sw $v0, 0x220+var_40($sp) # Store Unknown Pointer 1 to stack
- ROM:002F99C4 addiu $t6, $sp, 0x220+var_54 # t6 = Stack Pointer 6
- ROM:002F99C8 sw $v1, 0($t7) # Store Pointer to Second Enemy's Formation Data
- ROM:002F99CC lui $v0, 0x3D # '='
- ROM:002F99D0 lw $a0, 0x1C($s2) # Load Formation ID
- ROM:002F99D4 la $v0, unk_3D1100 # v0 = Unknown Pointer 2
- ROM:002F99D8 lw $v1, 4($s2) # Load Formation Data Pointer
- ROM:002F99DC lw $a1, -0x62C4($gp) # Load Stack Pointer 1
- ROM:002F99E0 sll $a0, 6 # ID * 64
- ROM:002F99E4 addu $v1, $a0
- ROM:002F99E8 sw $v0, 0x220+var_60($sp) # Store Unknown Pointer 2
- ROM:002F99EC addiu $v1, 0x18 # v1 = Pointer to Third Enemy's Formation Data
- ROM:002F99F0 sw $0, 0x220+var_58($sp) # Store 0 to stack
- ROM:002F99F4 beqz $a1, loc_2FA0A0 # Branch if Stack Pointer 1 = 0
- ROM:002F99F8 sb $0, 0($t6) # Store 0 to stack
- ROM:002F99FC b loc_2F9A0C
- ROM:002F9A00 lw $v0, 4($a1) # Load Stack Pointer 4
- ROM:002F9A04 # ---------------------------------------------------------------------------
- ROM:002F9A04
- ROM:002F9A04 loc_2F9A04: # CODE XREF: sub_2F98E0+138j
- ROM:002F9A04 daddu $a1, $v0, $0 # a1 = Stack Pointer X
- ROM:002F9A08 lw $v0, 4($a1) # Load next Stack Pointer X
- ROM:002F9A0C
- ROM:002F9A0C loc_2F9A0C: # CODE XREF: sub_2F98E0+11Cj
- ROM:002F9A0C nop
- ROM:002F9A10 nop
- ROM:002F9A14 nop
- ROM:002F9A18 bnez $v0, loc_2F9A04 # Branch if Stack Pointer X != 0
- ROM:002F9A1C nop
- ROM:002F9A20 addiu $v0, $sp, 0x220+var_60 # v0 = Stack Pointer 7
- ROM:002F9A24 sw $v0, 4($a1) # Store Stack Pointer 7 to stack
- ROM:002F9A28
- ROM:002F9A28 loc_2F9A28: # CODE XREF: sub_2F98E0+7C4j
- ROM:002F9A28 lui $v0, 0x3D # '='
- ROM:002F9A2C addiu $t5, $sp, 0x220+var_50 # t5 = Stack Pointer 8
- ROM:002F9A30 la $v0, unk_3D1140 # v0 = Unknown Pointer 1
- ROM:002F9A34 sw $0, 0x220+var_5C($sp) # Store 0 to stack
- ROM:002F9A38 sw $v0, 0x220+var_60($sp) # Store Unknown Pointer 1 to stack
- ROM:002F9A3C addiu $t4, $sp, 0x220+var_74 # t4 = Stack Pointer 9
- ROM:002F9A40 sw $v1, 0($t5) # Store Pointer to Third Enemy's Formation Data
- ROM:002F9A44 lui $v0, 0x3D # '='
- ROM:002F9A48 lw $a0, 0x1C($s2) # Load Formation ID
- ROM:002F9A4C la $v0, unk_3D1100 # v0 = Unknown Pointer 2
- ROM:002F9A50 lw $v1, 4($s2) # Load Formation Data Pointer
- ROM:002F9A54 lw $a1, -0x62C4($gp) # Load Stack Pointer 1
- ROM:002F9A58 sll $a0, 6 # ID * 64
- ROM:002F9A5C addu $v1, $a0
- ROM:002F9A60 sw $v0, 0x220+var_80($sp) # Store Unknown Pointer 2 to stack
- ROM:002F9A64 addiu $v1, 0x1C # v1 = Pointer to Fourth Enemy's Formation Data
- ROM:002F9A68 sw $0, 0x220+var_78($sp) # Store 0 to stack
- ROM:002F9A6C beqz $a1, loc_2FA0AC # Branch if Stack Pointer 1 = 0
- ROM:002F9A70 sb $0, 0($t4) # Store 0 to stack
- ROM:002F9A74 b loc_2F9A84
- ROM:002F9A78 lw $v0, 4($a1) # Load Stack Pointer 4
- ROM:002F9A7C # ---------------------------------------------------------------------------
- ROM:002F9A7C
- ROM:002F9A7C loc_2F9A7C: # CODE XREF: sub_2F98E0+1B0j
- ROM:002F9A7C daddu $a1, $v0, $0 # a1 = Stack Pointer X
- ROM:002F9A80 lw $v0, 4($a1) # Load next Stack Pointer X
- ROM:002F9A84
- ROM:002F9A84 loc_2F9A84: # CODE XREF: sub_2F98E0+194j
- ROM:002F9A84 nop
- ROM:002F9A88 nop
- ROM:002F9A8C nop
- ROM:002F9A90 bnez $v0, loc_2F9A7C # Branch if Stack Pointer X != 0
- ROM:002F9A94 nop
- ROM:002F9A98 addiu $v0, $sp, 0x220+var_80 # v0 = Stack Pointer 10
- ROM:002F9A9C sw $v0, 4($a1) # Store Stack Pointer 10 to stack
- ROM:002F9AA0
- ROM:002F9AA0 loc_2F9AA0: # CODE XREF: sub_2F98E0+7D0j
- ROM:002F9AA0 lui $v0, 0x3D # '='
- ROM:002F9AA4 addiu $t3, $sp, 0x220+var_70 # t3 = Stack Pointer 11
- ROM:002F9AA8 la $v0, unk_3D1140 # v0 = Unknown Pointer 1
- ROM:002F9AAC sw $0, 0x220+var_7C($sp) # Store 0 to stack
- ROM:002F9AB0 sw $v0, 0x220+var_80($sp) # Store Unknown Pointer 1 to stack
- ROM:002F9AB4 addiu $t2, $sp, 0x220+var_94 # t2 = Stack Pointer 12
- ROM:002F9AB8 sw $v1, 0($t3) # Store Pointer to Fourth Enemy's Formation Data
- ROM:002F9ABC lui $v0, 0x3D # '='
- ROM:002F9AC0 lw $a0, 0x1C($s2) # Load Formation ID
- ROM:002F9AC4 la $v0, unk_3D1100 # v0 = Unknown Pointer 2
- ROM:002F9AC8 lw $v1, 4($s2) # Load Formation Data Pointer
- ROM:002F9ACC lw $a1, -0x62C4($gp) # Load Stack Pointer 1
- ROM:002F9AD0 sll $a0, 6 # ID * 64
- ROM:002F9AD4 addu $v1, $a0
- ROM:002F9AD8 sw $v0, 0x220+var_A0($sp) # Store Unknown Pointer 2 to stack
- ROM:002F9ADC addiu $v1, 0x20 # ' ' # v1 = Pointer to Fifth Enemy's Formation Data
- ROM:002F9AE0 sw $0, 0x220+var_98($sp) # Store 0 to stack
- ROM:002F9AE4 beqz $a1, loc_2FA0B8 # Branch if Stack Pointer 1 = 0
- ROM:002F9AE8 sb $0, 0($t2) # Store 0 to stack
- ROM:002F9AEC b loc_2F9AFC
- ROM:002F9AF0 lw $v0, 4($a1) # Load Stack Pointer 4
- ROM:002F9AF4 # ---------------------------------------------------------------------------
- ROM:002F9AF4
- ROM:002F9AF4 loc_2F9AF4: # CODE XREF: sub_2F98E0+228j
- ROM:002F9AF4 daddu $a1, $v0, $0 # a1 = Stack Pointer X
- ROM:002F9AF8 lw $v0, 4($a1) # Load next Stack Pointer X
- ROM:002F9AFC
- ROM:002F9AFC loc_2F9AFC: # CODE XREF: sub_2F98E0+20Cj
- ROM:002F9AFC nop
- ROM:002F9B00 nop
- ROM:002F9B04 nop
- ROM:002F9B08 bnez $v0, loc_2F9AF4 # Branch if Stack Pointer X != 0
- ROM:002F9B0C nop
- ROM:002F9B10 addiu $v0, $sp, 0x220+var_A0 # v0 = Stack Pointer 13
- ROM:002F9B14 sw $v0, 4($a1) # Store Stack Pointer 13
- ROM:002F9B18
- ROM:002F9B18 loc_2F9B18: # CODE XREF: sub_2F98E0+7DCj
- ROM:002F9B18 lui $v0, 0x3D # '='
- ROM:002F9B1C addiu $t1, $sp, 0x220+var_90 # t1 = Stack Pointer 14
- ROM:002F9B20 la $v0, unk_3D1140 # v0 = Unknown Pointer 1
- ROM:002F9B24 sw $0, 0x220+var_9C($sp) # Store 0 to stack
- ROM:002F9B28 sw $v0, 0x220+var_A0($sp) # Store Unknown Pointer 1 to stack
- ROM:002F9B2C addiu $t0, $sp, 0x220+var_B4 # t0 = Stack Pointer 15
- ROM:002F9B30 sw $v1, 0($t1) # store Pointer to Fifth Enemy's Formation Data
- ROM:002F9B34 lui $v0, 0x3D # '='
- ROM:002F9B38 lw $a0, 0x1C($s2) # Load Formation ID
- ROM:002F9B3C la $v0, unk_3D1100 # v0 = Unknown Pointer 2
- ROM:002F9B40 lw $v1, 4($s2) # Load Formation Data Pointer
- ROM:002F9B44 lw $a1, -0x62C4($gp) # Load Stack Pointer 1
- ROM:002F9B48 sll $a0, 6 # ID * 64
- ROM:002F9B4C addu $v1, $a0
- ROM:002F9B50 sw $v0, 0x220+var_C0($sp) # Store Unknown Pointer 2 to stack
- ROM:002F9B54 addiu $v1, 0x24 # '$' # v1 = Pointer to Sixth Enemy's Formation Data
- ROM:002F9B58 sw $0, 0x220+var_B8($sp) # store 0 to stack
- ROM:002F9B5C beqz $a1, loc_2FA0C4 # Branch if Stack Pointer 1 = 0
- ROM:002F9B60 sb $0, 0($t0) # Store 0 to stack
- ROM:002F9B64 b loc_2F9B74
- ROM:002F9B68 lw $v0, 4($a1) # Load Stack Pointer 4
- ROM:002F9B6C # ---------------------------------------------------------------------------
- ROM:002F9B6C
- ROM:002F9B6C loc_2F9B6C: # CODE XREF: sub_2F98E0+2A0j
- ROM:002F9B6C daddu $a1, $v0, $0 # a1 = Stack Pointer X
- ROM:002F9B70 lw $v0, 4($a1) # Load next Stack Pointer X
- ROM:002F9B74
- ROM:002F9B74 loc_2F9B74: # CODE XREF: sub_2F98E0+284j
- ROM:002F9B74 nop
- ROM:002F9B78 nop
- ROM:002F9B7C nop
- ROM:002F9B80 bnez $v0, loc_2F9B6C # Branch if Stack Pointer X != 0
- ROM:002F9B84 nop
- ROM:002F9B88 addiu $v0, $sp, 0x220+var_C0 # v0 = Stack Pointer 16
- ROM:002F9B8C sw $v0, 4($a1) # Store Stack Pointer 16 to stack
- ROM:002F9B90
- ROM:002F9B90 loc_2F9B90: # CODE XREF: sub_2F98E0+7E8j
- ROM:002F9B90 lui $v0, 0x3D # '='
- ROM:002F9B94 addiu $a3, $sp, 0x220+var_B0 # a3 = Stack Pointer 17
- ROM:002F9B98 la $v0, unk_3D1120 # v0 = Unknown Pointer 3
- ROM:002F9B9C sw $v1, 0($a3) # Store Pointer to Sixth Enemy's Formation Data
- ROM:002F9BA0 sw $v0, 0x220+var_C0($sp) # Store Unknown Pointer 3 to stack
- ROM:002F9BA4 lui $v1, 0x3D # '='
- ROM:002F9BA8 sw $0, 0x220+var_BC($sp) # Store 0 to stack
- ROM:002F9BAC la $v1, unk_3D1100 # v1 = Unknown Pointer 2
- ROM:002F9BB0 lw $a1, 0x1C($s2) # Load Formation ID
- ROM:002F9BB4 addiu $a2, $sp, 0x220+var_D4 # a2 = Stack Pointer 18
- ROM:002F9BB8 lw $a0, 4($s2) # Load Formation Data Pointer
- ROM:002F9BBC lw $v0, -0x62C4($gp) # Load Stack Pointer 1
- ROM:002F9BC0 sll $a1, 6 # ID * 64
- ROM:002F9BC4 addu $a0, $a1
- ROM:002F9BC8 sw $v1, 0x220+var_E0($sp) # Store Unknown Pointer 2 to stack
- ROM:002F9BCC addiu $a0, 0x28 # '(' # a0 = Pointer to Seventh Enemy's Data Pointer
- ROM:002F9BD0 sw $0, 0x220+var_D8($sp) # Store 0 to stack
- ROM:002F9BD4 beqz $v0, loc_2FA0D0 # Branch if Stack Pointer 1 = 0
- ROM:002F9BD8 sb $0, 0($a2) # Store 0 to stack
- ROM:002F9BDC b loc_2F9BEC
- ROM:002F9BE0 lw $v1, 4($v0) # Load Stack Pointer 4
- ROM:002F9BE4 # ---------------------------------------------------------------------------
- ROM:002F9BE4
- ROM:002F9BE4 loc_2F9BE4: # CODE XREF: sub_2F98E0+318j
- ROM:002F9BE4 daddu $v0, $v1, $0 # v0 = Stack Pointer X
- ROM:002F9BE8 lw $v1, 4($v0) # Load next Stack Pointer X
- ROM:002F9BEC
- ROM:002F9BEC loc_2F9BEC: # CODE XREF: sub_2F98E0+2FCj
- ROM:002F9BEC nop
- ROM:002F9BF0 nop
- ROM:002F9BF4 nop
- ROM:002F9BF8 bnez $v1, loc_2F9BE4 # Branch if Stack Pointer X != 0
- ROM:002F9BFC nop
- ROM:002F9C00 addiu $v1, $sp, 0x220+var_E0 # v1 = Stack Pointer 19
- ROM:002F9C04 sw $v1, 4($v0) # Store Stack Pointer 19 to stack
- ROM:002F9C08
- ROM:002F9C08 loc_2F9C08: # CODE XREF: sub_2F98E0+7F4j
- ROM:002F9C08 lui $v0, 0x3D # '='
- ROM:002F9C0C addiu $a1, $sp, 0x220+var_D0 # a1 = Stack Pointer 20
- ROM:002F9C10 la $v0, unk_3D1120 # v0 = Unknown Pointer 3
- ROM:002F9C14 sw $a0, 0($a1) # Store Pointer to Seventh Enemy's Formation Data
- ROM:002F9C18 sw $v0, 0x220+var_E0($sp) # Store Unknown Pointer 3
- ROM:002F9C1C lui $v1, 0x3D # '='
- ROM:002F9C20 sw $0, 0x220+var_DC($sp) # Store 0 to stack
- ROM:002F9C24 la $v1, unk_3D1100 # v1 = Unknown Pointer 2
- ROM:002F9C28 lw $s4, 0x1C($s2) # Load Formation ID
- ROM:002F9C2C addiu $a0, $sp, 0x220+var_F4 # a0 = Stack Pointer 21
- ROM:002F9C30 lw $s3, 4($s2) # Load Formation Data Pointer
- ROM:002F9C34 lw $v0, -0x62C4($gp) # Load Stack Pointer 1
- ROM:002F9C38 sll $s4, 6 # ID * 64
- ROM:002F9C3C addu $s3, $s4
- ROM:002F9C40 sw $v1, 0x220+var_100($sp) # Store Unknown Pointer 2
- ROM:002F9C44 addiu $s3, 0x2C # ',' # s3 = Pointer to Eighth Enemy's Formation Data
- ROM:002F9C48 sw $0, 0x220+var_F8($sp) # Store 0 to stack
- ROM:002F9C4C beqz $v0, loc_2FA0DC # Branch if Stack Pointer 1 = 0
- ROM:002F9C50 sb $0, 0($a0) # Store 0 to stack
- ROM:002F9C54 b loc_2F9C64
- ROM:002F9C58 lw $v1, 4($v0) # Load Stack Pointer 4
- ROM:002F9C5C # ---------------------------------------------------------------------------
- ROM:002F9C5C
- ROM:002F9C5C loc_2F9C5C: # CODE XREF: sub_2F98E0+390j
- ROM:002F9C5C daddu $v0, $v1, $0 # v0 = Stack Pointer X
- ROM:002F9C60 lw $v1, 4($v0) # Load next Stack Pointer X
- ROM:002F9C64
- ROM:002F9C64 loc_2F9C64: # CODE XREF: sub_2F98E0+374j
- ROM:002F9C64 nop
- ROM:002F9C68 nop
- ROM:002F9C6C nop
- ROM:002F9C70 bnez $v1, loc_2F9C5C # Branch if Stack Pointer X != 0
- ROM:002F9C74 nop
- ROM:002F9C78 addiu $v1, $sp, 0x220+var_100 # v1 = Stack Pointer 22
- ROM:002F9C7C sw $v1, 4($v0) # Store Stack Pointer 22 to stack
- ROM:002F9C80
- ROM:002F9C80 loc_2F9C80: # CODE XREF: sub_2F98E0+800j
- ROM:002F9C80 lui $v0, 0x3D # '='
- ROM:002F9C84 addiu $fp, $sp, 0x130 # fp = Stack Pointer 23
- ROM:002F9C88 la $v0, unk_3D1120 # v0 = Unknown Pointer 3
- ROM:002F9C8C sw $s3, 0x220+var_220($fp) # Store Pointer to Eighth Enemy's Formation Data
- ROM:002F9C8C # NOTE: It's actually var_F0, fp messes the variable up
- ROM:002F9C90 sw $v0, 0x220+var_100($sp) # Store Unknown Pointer 3 to stack
- ROM:002F9C94 addiu $v1, $sp, 0x220+var_114 # v1 = Stack Pointer 24
- ROM:002F9C98 sw $0, 0x220+var_FC($sp) # Store 0 to stack
- ROM:002F9C9C lui $v0, 0x3D # '='
- ROM:002F9CA0 lw $s5, 0x1C($s2) # Load Formation ID
- ROM:002F9CA4 la $v0, unk_3D1100 # v0 = Unknown Pointer 2
- ROM:002F9CA8 lw $s4, 4($s2) # Load Formation Data Pointer
- ROM:002F9CAC lw $s3, -0x62C4($gp) # Load Stack Pointer
- ROM:002F9CB0 sll $s5, 6 # ID * 64
- ROM:002F9CB4 addu $s4, $s5
- ROM:002F9CB8 sw $v0, 0x220+var_120($sp) # Store Unknown Pointer 2 to stack
- ROM:002F9CBC addiu $v0, $s4, 0x30 # v0 = Pointer to Ninth Enemy's Formation Data
- ROM:002F9CC0 sw $0, 0x220+var_118($sp) # Store 0 to stack
- ROM:002F9CC4 beqz $s3, loc_2FA0E8 # Branch if Stack Pointer 1 = 0
- ROM:002F9CC8 sb $0, 0($v1) # Store 0 to stack
- ROM:002F9CCC b loc_2F9CDC
- ROM:002F9CD0 lw $s4, 4($s3) # Load Stack Pointer 4
- ROM:002F9CD4 # ---------------------------------------------------------------------------
- ROM:002F9CD4
- ROM:002F9CD4 loc_2F9CD4: # CODE XREF: sub_2F98E0+408j
- ROM:002F9CD4 daddu $s3, $s4, $0 # s3 = Stack Pointer X
- ROM:002F9CD8 lw $s4, 4($s3) # Load next Stack Pointer X
- ROM:002F9CDC
- ROM:002F9CDC loc_2F9CDC: # CODE XREF: sub_2F98E0+3ECj
- ROM:002F9CDC nop
- ROM:002F9CE0 nop
- ROM:002F9CE4 nop
- ROM:002F9CE8 bnez $s4, loc_2F9CD4 # Branch if Stack Pointer X != 0
- ROM:002F9CEC nop
- ROM:002F9CF0 addiu $s4, $sp, 0x220+var_120 # s4 = Stack Pointer 25
- ROM:002F9CF4 sw $s4, 4($s3) # Store Stack Pointer 25 to stack
- ROM:002F9CF8
- ROM:002F9CF8 loc_2F9CF8: # CODE XREF: sub_2F98E0+80Cj
- ROM:002F9CF8 lui $s3, 0x3D # '='
- ROM:002F9CFC lui $s4, 0x3D # '='
- ROM:002F9D00 la $s3, unk_3D1120 # s3 = Unknown Pointer 3
- ROM:002F9D04 sw $0, 0x220+var_11C($sp) # Store 0 to stack
- ROM:002F9D08 sw $s3, 0x220+var_120($sp) # Store Unknown Pointer 3 to stack
- ROM:002F9D0C la $s4, unk_3D1100 # s4 = Unknown Pointer 2
- ROM:002F9D10 addiu $s3, $sp, 0x220+var_110 # s3 = Stack Pointer 26
- ROM:002F9D14 sw $v0, 0($s3) # Store Pointer to Ninth Enemy's Formation Data
- ROM:002F9D18 lw $s7, 0x1C($s2) # Load Formation ID
- ROM:002F9D1C addiu $v0, $sp, 0x220+var_134 # v0 = Stack Pointer 27
- ROM:002F9D20 lw $s5, 4($s2) # Load Formation Data Pointer
- ROM:002F9D24 lw $s3, -0x62C4($gp) # Load Stack Pointer 1
- ROM:002F9D28 sll $s7, 6 # ID * 64
- ROM:002F9D2C addu $s5, $s7
- ROM:002F9D30 sw $s4, 0x220+var_140($sp) # Store Unknown Pointer 2 to stack
- ROM:002F9D34 addiu $s4, $s5, 0x34 # s4 = Pointer to Tenth Enemy's Formation Data
- ROM:002F9D38 sw $0, 0x220+var_138($sp) # Store 0 to stack
- ROM:002F9D3C beqz $s3, loc_2FA0F4 # Branch if Stack Pointer 1 = 0
- ROM:002F9D40 sb $0, 0($v0) # Store 0 to stack
- ROM:002F9D44 b loc_2F9D54
- ROM:002F9D48 lw $s5, 4($s3) # Load Stack Pointer 4
- ROM:002F9D4C # ---------------------------------------------------------------------------
- ROM:002F9D4C
- ROM:002F9D4C loc_2F9D4C: # CODE XREF: sub_2F98E0+480j
- ROM:002F9D4C daddu $s3, $s5, $0 # s3 = Stack Pointer X
- ROM:002F9D50 lw $s5, 4($s3) # Load next Stack Pointer X
- ROM:002F9D54
- ROM:002F9D54 loc_2F9D54: # CODE XREF: sub_2F98E0+464j
- ROM:002F9D54 nop
- ROM:002F9D58 nop
- ROM:002F9D5C nop
- ROM:002F9D60 bnez $s5, loc_2F9D4C # Branch if Stack Pointer X != 0
- ROM:002F9D64 nop
- ROM:002F9D68 addiu $s5, $sp, 0x220+var_140 # s5 = Stack Pointer 28
- ROM:002F9D6C sw $s5, 4($s3) # Store Stack Pointer 28 to stack
- ROM:002F9D70
- ROM:002F9D70 loc_2F9D70: # CODE XREF: sub_2F98E0+818j
- ROM:002F9D70 lui $s3, 0x3D # '='
- ROM:002F9D74 addiu $s7, $sp, 0x220+var_130 # s7 = Stack Pointer 29
- ROM:002F9D78 la $s3, unk_3D1120 # s3 = Unknown Pointer 3
- ROM:002F9D7C sw $s4, 0($s7) # Store Pointer to Tenth Enemy's Formation Data
- ROM:002F9D80 sw $s3, 0x220+var_140($sp) # Store Unknown Pointer 3
- ROM:002F9D84 lui $s5, 0x3D # '='
- ROM:002F9D88 sw $0, 0x220+var_13C($sp) # Store 0 to stack
- ROM:002F9D8C la $s5, unk_3D1100 # s5 = Unknown Pointer 2
- ROM:002F9D90 lw $t9, 0x1C($s2) # Load Formation ID
- ROM:002F9D94 addiu $s4, $sp, 0x220+var_174 # s4 = Stack Pointer 30
- ROM:002F9D98 lw $t8, 4($s2) # Load Formation Data Pointer
- ROM:002F9D9C lw $s3, -0x62C4($gp) # Load Stack Pointer 1
- ROM:002F9DA0 sll $t9, 6 # ID * 64
- ROM:002F9DA4 addu $t8, $t9
- ROM:002F9DA8 sw $s5, 0x220+var_180($sp) # Store Unknown Pointer 2 to stack
- ROM:002F9DAC addiu $s5, $t8, 0x38 # s5 = Pointer to Special Formation Data
- ROM:002F9DB0 sw $0, 0x220+var_178($sp) # Store 0 to stack
- ROM:002F9DB4 beqz $s3, loc_2FA100 # Branch if Stack Pointer 1 = 0
- ROM:002F9DB8 sb $0, 0($s4) # Store 0 to stack
- ROM:002F9DBC b loc_2F9DCC
- ROM:002F9DC0 lw $t8, 4($s3) # Load Stack Pointer 4
- ROM:002F9DC4 # ---------------------------------------------------------------------------
- ROM:002F9DC4
- ROM:002F9DC4 loc_2F9DC4: # CODE XREF: sub_2F98E0+4F8j
- ROM:002F9DC4 daddu $s3, $t8, $0 # s3 = Stack Pointer X
- ROM:002F9DC8 lw $t8, 4($s3) # Load next Stack Pointer X
- ROM:002F9DCC
- ROM:002F9DCC loc_2F9DCC: # CODE XREF: sub_2F98E0+4DCj
- ROM:002F9DCC nop
- ROM:002F9DD0 nop
- ROM:002F9DD4 nop
- ROM:002F9DD8 bnez $t8, loc_2F9DC4 # Branch if Stack Pointer X != 0
- ROM:002F9DDC nop
- ROM:002F9DE0 addiu $t8, $sp, 0x220+var_180 # t8 = Stack Pointer 31
- ROM:002F9DE4 sw $t8, 4($s3) # Store Stack Pointer 31 to stack
- ROM:002F9DE8
- ROM:002F9DE8 loc_2F9DE8: # CODE XREF: sub_2F98E0+824j
- ROM:002F9DE8 lui $s3, 0x3D # '='
- ROM:002F9DEC lw $s6, 0($s6) # Load Pointer to First Enemy's Formation Data
- ROM:002F9DF0 la $s3, unk_3D10E0 # s3 = Unknown Pointer 4
- ROM:002F9DF4 addiu $t8, $sp, 0x220+var_14 # t8 = Stack Pointer 32
- ROM:002F9DF8 sw $s3, 0x220+var_180($sp) # Store Unknown Pointer 4
- ROM:002F9DFC addiu $s3, $sp, 0x220+var_170 # s3 = Stack Pointer 33
- ROM:002F9E00 sw $0, 0x220+var_17C($sp) # Store 0 to stack
- ROM:002F9E04 sw $s5, 0($s3) # Store Pointer to Special Formation Data
- ROM:002F9E08 addiu $s5, $sp, 0x220+var_C0 # s5 = Stack Pointer 34
- ROM:002F9E0C sw $s5, 0x220+var_15C($sp) # Store Stack Pointer 34 to stack
- ROM:002F9E10 addiu $s5, $sp, 0x220+var_E0 # s5 = Stack Pointer 35
- ROM:002F9E14 sw $s5, 0x220+var_158($sp) # Store Stack Pointer 35 to stack
- ROM:002F9E18 addiu $s5, $sp, 0x220+var_100 # s5 = Stack Pointer 36
- ROM:002F9E1C sw $s5, 0x220+var_154($sp) # Store Stack Pointer 36 to stack
- ROM:002F9E20 addiu $s5, $sp, 0x220+var_120 # s5 = Stack Pointer 37
- ROM:002F9E24 sw $s5, 0x220+var_150($sp) # Store Stack Pointer 37 to stack
- gp-0x62c4 = Stack Pointer 1
- NOTE: Subtract var_'s hex value from 0x220 to get the amount to add to the
- stack pointer.
- var_10 = Pointer to First Enemy's Formation Data
- var_14 = 0
- var_18 = 0
- var_1c = 0
- var_20 = Unknown Pointer 1
- var_24 = ? -> Stack Pointer 4
- var_30 = Pointer to Second Enemy's Formation Data
- var_34 = 0
- var_38 = 0
- var_3c = 0
- var_40 = Unknown Pointer 2 -> Unknown Pointer 1
- var_44 = ? -> Stack Pointer 7
- var_50 = Pointer to Third Enemy's Formation Data
- var_54 = 0
- var_58 = 0
- var_5c = 0
- var_60 = Unknown Pointer 2 -> Unknown Pointer 1
- var_64 = ? -> Stack Pointer 10
- var_70 = Pointer to Fourth Enemy's Formation Data
- var_74 = 0
- var_78 = 0
- var_7c = 0
- var_80 = Unknown Pointer 2 -> Unknown Pointer 1
- var_84 = ? -> Stack Pointer 13
- var_90 = Pointer to Fifth Enemy's Formation Data
- var_94 = 0
- var_98 = 0
- var_9c = 0
- var_a0 = Unknown Pointer 2 -> Unknown Pointer 1
- var_a4 = ? -> Stack Pointer 16
- var_b0 = Pointer to Sixth Enemy's Formation Data
- var_b4 = 0
- var_b8 = 0
- var_bc = 0
- var_c0 = Unknown Pointer 2 -> Unknown Pointer 3
- var_c4 = ? -> Stack Pointer 19
- var_d0 = Pointer to Seventh Enemy's Formation Data
- var_d4 = 0
- var_d8 = 0
- var_dc = 0
- var_e0 = Unknown Pointer 2 -> Unknown Pointer 3
- var_e4 = ? -> Stack Pointer 22
- var_f0 = Pointer to Eighth Enemy's Formation Data
- var_f4 = 0
- var_f8 = 0
- var_fc = 0
- var_100 = Unknown Pointer 2 -> Unknown Pointer 3
- var_104 = ? -> Stack Pointer 25
- var_110 = Pointer to Ninth Enemy's Formation Data
- var_114 = 0
- var_118 = 0
- var_11c = 0
- var_120 = Unknown Pointer 2 -> Unknown Pointer 3
- var_124 = ? -> Stack Pointer 28
- var_130 = Pointer to Tenth Enemy's Formation Data
- var_134 = 0
- var_138 = 0
- var_13c = 0
- var_140 = Unknown Pointer 2 -> Unknown Pointer 3
- var_144 = ?
- var_150 = Stack Pointer 37
- var_154 = Stack Pointer 36
- var_158 = Stack Pointer 35
- var_15c = Stack Pointer 34
- var_170 = Pointer to Special Formation Data
- var_174 = 0
- var_178 = 0
- var_17c = 0
- var_180 = Unknown Pointer 2 -> Unknown Pointer 4
- var_190 = ra (these are stored at the start)
- var_1a0 = fp
- var_1b0 = s7
- var_1c0 = s6
- var_1d0 = s5
- var_1e0 = s4
- var_1f0 = s3
- var_200 = s2
- var_210 = s1
- var_220 = s0
- Stack Pointer 1 = var_20
- Stack Pointer 2 = var_10
- Stack Pointer 3 = var_34
- Stack Pointer 4 = var_40
- Stack Pointer 5 = var_30
- Stack Pointer 6 = var_54
- Stack Pointer 7 = var_60
- Stack Pointer 8 = var_50
- Stack Pointer 9 = var_74
- Stack Pointer 10 = var_80
- Stack Pointer 11 = var_70
- Stack Pointer 12 = var_94
- Stack Pointer 13 = var_a0
- Stack Pointer 14 = var_90
- Stack Pointer 15 = var_b4
- Stack Pointer 16 = var_c0
- Stack Pointer 17 = var_b0
- Stack Pointer 18 = var_d4
- Stack Pointer 19 = var_e0
- Stack Pointer 20 = var_d0
- Stack Pointer 21 = var_f4
- Stack Pointer 22 = var_100
- Stack Pointer 23 = var_f0 (not shown; due to frame pointer)
- Stack Pointer 24 = var_114
- Stack Pointer 25 = var_120
- Stack Pointer 26 = var_110
- Stack Pointer 27 = var_134
- Stack Pointer 28 = var_140
- Stack Pointer 29 = var_130
- Stack Pointer 30 = var_174
- Stack Pointer 31 = var_180
- Stack Pointer 32 = var_14
- Stack Pointer 33 = var_170
- Stack Pointer 34 = var_c0
- Stack Pointer 35 = var_e0
- Stack Pointer 36 = var_100
- Stack Pointer 37 = var_120
- Unknown Pointer 1 = 0x3d1140
- Unknown Pointer 2 = 0x3d1100
- Unknown Pointer 3 = 0x3d1120
- v0 = Stack Pointer 27
- v1 = Stack Pointer 24
- a0 = Stack Pointer 21
- a1 = Stack Pointer 20
- a2 = Stack Pointer 18
- a3 = Stack Pointer 17
- t0 = Stack Pointer 15
- t1 = Stack Pointer 14
- t2 = Stack Pointer 12
- t3 = Stack Pointer 11
- t4 = Stack Pointer 9
- t5 = Stack Pointer 8
- t6 = Stack Pointer 6
- t7 - Stack Pointer 5
- s1 = Stack Pointer 3
- s2 = Pointer to Formation File Data Pointer
- s3 = Stack Pointer 26 -> Stack Pointer 32
- s4 = Stack Pointer 30
- s6 = Stack Pointer 2
- s7 = Stack Pointer 29
- fp/s8 = Stack Pointer 23
Add Comment
Please, Sign In to add comment