Guest User

Untitled

a guest
Oct 21st, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 34.89 KB | None | 0 0
  1. ROM:002F98E0 # =============== S U B R O U T I N E =======================================
  2. ROM:002F98E0
  3. ROM:002F98E0
  4. ROM:002F98E0 sub_2F98E0: # CODE XREF: sub_2A1A20+30p
  5. ROM:002F98E0
  6. ROM:002F98E0 var_220 = -0x220
  7. ROM:002F98E0 var_210 = -0x210
  8. ROM:002F98E0 var_200 = -0x200
  9. ROM:002F98E0 var_1F0 = -0x1F0
  10. ROM:002F98E0 var_1E0 = -0x1E0
  11. ROM:002F98E0 var_1D0 = -0x1D0
  12. ROM:002F98E0 var_1C0 = -0x1C0
  13. ROM:002F98E0 var_1B0 = -0x1B0
  14. ROM:002F98E0 var_1A0 = -0x1A0
  15. ROM:002F98E0 var_190 = -0x190
  16. ROM:002F98E0 var_180 = -0x180
  17. ROM:002F98E0 var_17C = -0x17C
  18. ROM:002F98E0 var_178 = -0x178
  19. ROM:002F98E0 var_174 = -0x174
  20. ROM:002F98E0 var_170 = -0x170
  21. ROM:002F98E0 var_15C = -0x15C
  22. ROM:002F98E0 var_158 = -0x158
  23. ROM:002F98E0 var_154 = -0x154
  24. ROM:002F98E0 var_150 = -0x150
  25. ROM:002F98E0 var_140 = -0x140
  26. ROM:002F98E0 var_13C = -0x13C
  27. ROM:002F98E0 var_138 = -0x138
  28. ROM:002F98E0 var_134 = -0x134
  29. ROM:002F98E0 var_130 = -0x130
  30. ROM:002F98E0 var_120 = -0x120
  31. ROM:002F98E0 var_11C = -0x11C
  32. ROM:002F98E0 var_118 = -0x118
  33. ROM:002F98E0 var_114 = -0x114
  34. ROM:002F98E0 var_110 = -0x110
  35. ROM:002F98E0 var_100 = -0x100
  36. ROM:002F98E0 var_FC = -0xFC
  37. ROM:002F98E0 var_F8 = -0xF8
  38. ROM:002F98E0 var_F4 = -0xF4
  39. ROM:002F98E0 var_E0 = -0xE0
  40. ROM:002F98E0 var_DC = -0xDC
  41. ROM:002F98E0 var_D8 = -0xD8
  42. ROM:002F98E0 var_D4 = -0xD4
  43. ROM:002F98E0 var_D0 = -0xD0
  44. ROM:002F98E0 var_C0 = -0xC0
  45. ROM:002F98E0 var_BC = -0xBC
  46. ROM:002F98E0 var_B8 = -0xB8
  47. ROM:002F98E0 var_B4 = -0xB4
  48. ROM:002F98E0 var_B0 = -0xB0
  49. ROM:002F98E0 var_A0 = -0xA0
  50. ROM:002F98E0 var_9C = -0x9C
  51. ROM:002F98E0 var_98 = -0x98
  52. ROM:002F98E0 var_94 = -0x94
  53. ROM:002F98E0 var_90 = -0x90
  54. ROM:002F98E0 var_80 = -0x80
  55. ROM:002F98E0 var_7C = -0x7C
  56. ROM:002F98E0 var_78 = -0x78
  57. ROM:002F98E0 var_74 = -0x74
  58. ROM:002F98E0 var_70 = -0x70
  59. ROM:002F98E0 var_60 = -0x60
  60. ROM:002F98E0 var_5C = -0x5C
  61. ROM:002F98E0 var_58 = -0x58
  62. ROM:002F98E0 var_54 = -0x54
  63. ROM:002F98E0 var_50 = -0x50
  64. ROM:002F98E0 var_40 = -0x40
  65. ROM:002F98E0 var_3C = -0x3C
  66. ROM:002F98E0 var_38 = -0x38
  67. ROM:002F98E0 var_34 = -0x34
  68. ROM:002F98E0 var_30 = -0x30
  69. ROM:002F98E0 var_20 = -0x20
  70. ROM:002F98E0 var_1C = -0x1C
  71. ROM:002F98E0 var_18 = -0x18
  72. ROM:002F98E0 var_14 = -0x14
  73. ROM:002F98E0 var_10 = -0x10
  74. ROM:002F98E0
  75. ROM:002F98E0 addiu $sp, -0x220
  76. ROM:002F98E4 lui $v0, 0x3D # '='
  77. ROM:002F98E8 sd $ra, 0x220+var_190($sp)
  78. ROM:002F98EC lui $a1, 0x3D # '='
  79. ROM:002F98F0 sq $fp, 0x220+var_1A0($sp)
  80. ROM:002F98F4 la $v0, unk_3D1140 # v0 = Unknown Pointer 1
  81. ROM:002F98F8 sq $s7, 0x220+var_1B0($sp)
  82. ROM:002F98FC addiu $v1, $sp, 0x220+var_20 # Stack Pointer 1
  83. ROM:002F9900 sq $s6, 0x220+var_1C0($sp)
  84. ROM:002F9904 la $a1, unk_3D1100 # a1 = Unknown Pointer 2
  85. ROM:002F9908 sq $s5, 0x220+var_1D0($sp)
  86. ROM:002F990C addiu $s6, $sp, 0x220+var_10 # s6 = Stack Pointer 2
  87. ROM:002F9910 sq $s4, 0x220+var_1E0($sp)
  88. ROM:002F9914 sq $s3, 0x220+var_1F0($sp)
  89. ROM:002F9918 sq $s2, 0x220+var_200($sp)
  90. ROM:002F991C sq $s1, 0x220+var_210($sp)
  91. ROM:002F9920 daddu $s2, $a0, $0 # s2 = Pointer to Formation File Data Pointer
  92. ROM:002F9924 sq $s0, 0x220+var_220($sp)
  93. ROM:002F9928 addiu $s1, $sp, 0x220+var_34 # s1 = Stack Pointer 3
  94. ROM:002F992C sw $0, -0x62C4($gp) # Store Global_Unknown = 0
  95. ROM:002F9930 lw $a3, 0x1C($a0) # Load Formation ID
  96. ROM:002F9934 lw $a2, 4($a0) # Load Formation Data Pointer
  97. ROM:002F9938 sll $a3, 6 # ID * 64
  98. ROM:002F993C addu $a2, $a3 # a2 = Formation's Data Pointer
  99. ROM:002F9940 sw $v0, 0x220+var_20($sp) # Store Unknown Pointer 1 to stack
  100. ROM:002F9944 addiu $v0, $a2, 0x10 # v0 = Pointer to First Enemy's Formation Data
  101. ROM:002F9948 sw $v1, -0x62C4($gp) # Store Stack Pointer 1 to stack
  102. ROM:002F994C sw $v0, 0($s6) # Store Pointer to First Enemy's Formation Data
  103. ROM:002F9950 sw $0, 0x220+var_18($sp) # Store 0 to stack
  104. ROM:002F9954 sb $0, 0x220+var_14($sp)
  105. ROM:002F9958 sw $0, 0x220+var_1C($sp)
  106. ROM:002F995C lw $v1, 0x1C($a0) # Load Formation ID
  107. ROM:002F9960 lw $v0, 4($a0) # Load Formation Data Pointer
  108. ROM:002F9964 sll $v1, 6 # ID * 64
  109. ROM:002F9968 lw $a0, -0x62C4($gp) # Load Stack Pointer 1
  110. ROM:002F996C addu $v0, $v1
  111. ROM:002F9970 sw $a1, 0x220+var_40($sp) # Store Unknown Pointer 2 to stack
  112. ROM:002F9974 addiu $v1, $v0, 0x14 # v1 = Pointer to Second Enemy's Formation Data
  113. ROM:002F9978 sw $0, 0x220+var_38($sp) # Store 0 to stack
  114. ROM:002F997C beqz $a0, loc_2FA094 # Branch if Stack Pointer 1 = 0
  115. ROM:002F9980 sb $0, 0($s1) # Store 0 to stack
  116. ROM:002F9984 b loc_2F9994
  117. ROM:002F9988 lw $v0, 4($a0) # Load Uninitialized Stack Pointer X
  118. ROM:002F998C # ---------------------------------------------------------------------------
  119. ROM:002F998C
  120. ROM:002F998C loc_2F998C: # CODE XREF: sub_2F98E0+C0j
  121. ROM:002F998C daddu $a0, $v0, $0 # a0 = Stack Pointer X
  122. ROM:002F9990 lw $v0, 4($a0) # Load next Stack Pointer X (doesn't happen here)
  123. ROM:002F9994
  124. ROM:002F9994 loc_2F9994: # CODE XREF: sub_2F98E0+A4j
  125. ROM:002F9994 nop
  126. ROM:002F9998 nop
  127. ROM:002F999C nop
  128. ROM:002F99A0 bnez $v0, loc_2F998C # Branch if Stack Pointer X != 0
  129. ROM:002F99A4 nop
  130. ROM:002F99A8 addiu $v0, $sp, 0x220+var_40 # v0 = Stack Pointer 4
  131. ROM:002F99AC sw $v0, 4($a0) # Store Stack Pointer 4 to stack
  132. ROM:002F99B0
  133. ROM:002F99B0 loc_2F99B0: # CODE XREF: sub_2F98E0+7B8j
  134. ROM:002F99B0 lui $v0, 0x3D # '='
  135. ROM:002F99B4 addiu $t7, $sp, 0x220+var_30 # t7 = Stack Pointer 5
  136. ROM:002F99B8 la $v0, unk_3D1140 # v0 = Unknown Pointer 1
  137. ROM:002F99BC sw $0, 0x220+var_3C($sp) # Store 0 to stack
  138. ROM:002F99C0 sw $v0, 0x220+var_40($sp) # Store Unknown Pointer 1 to stack
  139. ROM:002F99C4 addiu $t6, $sp, 0x220+var_54 # t6 = Stack Pointer 6
  140. ROM:002F99C8 sw $v1, 0($t7) # Store Pointer to Second Enemy's Formation Data
  141. ROM:002F99CC lui $v0, 0x3D # '='
  142. ROM:002F99D0 lw $a0, 0x1C($s2) # Load Formation ID
  143. ROM:002F99D4 la $v0, unk_3D1100 # v0 = Unknown Pointer 2
  144. ROM:002F99D8 lw $v1, 4($s2) # Load Formation Data Pointer
  145. ROM:002F99DC lw $a1, -0x62C4($gp) # Load Stack Pointer 1
  146. ROM:002F99E0 sll $a0, 6 # ID * 64
  147. ROM:002F99E4 addu $v1, $a0
  148. ROM:002F99E8 sw $v0, 0x220+var_60($sp) # Store Unknown Pointer 2
  149. ROM:002F99EC addiu $v1, 0x18 # v1 = Pointer to Third Enemy's Formation Data
  150. ROM:002F99F0 sw $0, 0x220+var_58($sp) # Store 0 to stack
  151. ROM:002F99F4 beqz $a1, loc_2FA0A0 # Branch if Stack Pointer 1 = 0
  152. ROM:002F99F8 sb $0, 0($t6) # Store 0 to stack
  153. ROM:002F99FC b loc_2F9A0C
  154. ROM:002F9A00 lw $v0, 4($a1) # Load Stack Pointer 4
  155. ROM:002F9A04 # ---------------------------------------------------------------------------
  156. ROM:002F9A04
  157. ROM:002F9A04 loc_2F9A04: # CODE XREF: sub_2F98E0+138j
  158. ROM:002F9A04 daddu $a1, $v0, $0 # a1 = Stack Pointer X
  159. ROM:002F9A08 lw $v0, 4($a1) # Load next Stack Pointer X
  160. ROM:002F9A0C
  161. ROM:002F9A0C loc_2F9A0C: # CODE XREF: sub_2F98E0+11Cj
  162. ROM:002F9A0C nop
  163. ROM:002F9A10 nop
  164. ROM:002F9A14 nop
  165. ROM:002F9A18 bnez $v0, loc_2F9A04 # Branch if Stack Pointer X != 0
  166. ROM:002F9A1C nop
  167. ROM:002F9A20 addiu $v0, $sp, 0x220+var_60 # v0 = Stack Pointer 7
  168. ROM:002F9A24 sw $v0, 4($a1) # Store Stack Pointer 7 to stack
  169. ROM:002F9A28
  170. ROM:002F9A28 loc_2F9A28: # CODE XREF: sub_2F98E0+7C4j
  171. ROM:002F9A28 lui $v0, 0x3D # '='
  172. ROM:002F9A2C addiu $t5, $sp, 0x220+var_50 # t5 = Stack Pointer 8
  173. ROM:002F9A30 la $v0, unk_3D1140 # v0 = Unknown Pointer 1
  174. ROM:002F9A34 sw $0, 0x220+var_5C($sp) # Store 0 to stack
  175. ROM:002F9A38 sw $v0, 0x220+var_60($sp) # Store Unknown Pointer 1 to stack
  176. ROM:002F9A3C addiu $t4, $sp, 0x220+var_74 # t4 = Stack Pointer 9
  177. ROM:002F9A40 sw $v1, 0($t5) # Store Pointer to Third Enemy's Formation Data
  178. ROM:002F9A44 lui $v0, 0x3D # '='
  179. ROM:002F9A48 lw $a0, 0x1C($s2) # Load Formation ID
  180. ROM:002F9A4C la $v0, unk_3D1100 # v0 = Unknown Pointer 2
  181. ROM:002F9A50 lw $v1, 4($s2) # Load Formation Data Pointer
  182. ROM:002F9A54 lw $a1, -0x62C4($gp) # Load Stack Pointer 1
  183. ROM:002F9A58 sll $a0, 6 # ID * 64
  184. ROM:002F9A5C addu $v1, $a0
  185. ROM:002F9A60 sw $v0, 0x220+var_80($sp) # Store Unknown Pointer 2 to stack
  186. ROM:002F9A64 addiu $v1, 0x1C # v1 = Pointer to Fourth Enemy's Formation Data
  187. ROM:002F9A68 sw $0, 0x220+var_78($sp) # Store 0 to stack
  188. ROM:002F9A6C beqz $a1, loc_2FA0AC # Branch if Stack Pointer 1 = 0
  189. ROM:002F9A70 sb $0, 0($t4) # Store 0 to stack
  190. ROM:002F9A74 b loc_2F9A84
  191. ROM:002F9A78 lw $v0, 4($a1) # Load Stack Pointer 4
  192. ROM:002F9A7C # ---------------------------------------------------------------------------
  193. ROM:002F9A7C
  194. ROM:002F9A7C loc_2F9A7C: # CODE XREF: sub_2F98E0+1B0j
  195. ROM:002F9A7C daddu $a1, $v0, $0 # a1 = Stack Pointer X
  196. ROM:002F9A80 lw $v0, 4($a1) # Load next Stack Pointer X
  197. ROM:002F9A84
  198. ROM:002F9A84 loc_2F9A84: # CODE XREF: sub_2F98E0+194j
  199. ROM:002F9A84 nop
  200. ROM:002F9A88 nop
  201. ROM:002F9A8C nop
  202. ROM:002F9A90 bnez $v0, loc_2F9A7C # Branch if Stack Pointer X != 0
  203. ROM:002F9A94 nop
  204. ROM:002F9A98 addiu $v0, $sp, 0x220+var_80 # v0 = Stack Pointer 10
  205. ROM:002F9A9C sw $v0, 4($a1) # Store Stack Pointer 10 to stack
  206. ROM:002F9AA0
  207. ROM:002F9AA0 loc_2F9AA0: # CODE XREF: sub_2F98E0+7D0j
  208. ROM:002F9AA0 lui $v0, 0x3D # '='
  209. ROM:002F9AA4 addiu $t3, $sp, 0x220+var_70 # t3 = Stack Pointer 11
  210. ROM:002F9AA8 la $v0, unk_3D1140 # v0 = Unknown Pointer 1
  211. ROM:002F9AAC sw $0, 0x220+var_7C($sp) # Store 0 to stack
  212. ROM:002F9AB0 sw $v0, 0x220+var_80($sp) # Store Unknown Pointer 1 to stack
  213. ROM:002F9AB4 addiu $t2, $sp, 0x220+var_94 # t2 = Stack Pointer 12
  214. ROM:002F9AB8 sw $v1, 0($t3) # Store Pointer to Fourth Enemy's Formation Data
  215. ROM:002F9ABC lui $v0, 0x3D # '='
  216. ROM:002F9AC0 lw $a0, 0x1C($s2) # Load Formation ID
  217. ROM:002F9AC4 la $v0, unk_3D1100 # v0 = Unknown Pointer 2
  218. ROM:002F9AC8 lw $v1, 4($s2) # Load Formation Data Pointer
  219. ROM:002F9ACC lw $a1, -0x62C4($gp) # Load Stack Pointer 1
  220. ROM:002F9AD0 sll $a0, 6 # ID * 64
  221. ROM:002F9AD4 addu $v1, $a0
  222. ROM:002F9AD8 sw $v0, 0x220+var_A0($sp) # Store Unknown Pointer 2 to stack
  223. ROM:002F9ADC addiu $v1, 0x20 # ' ' # v1 = Pointer to Fifth Enemy's Formation Data
  224. ROM:002F9AE0 sw $0, 0x220+var_98($sp) # Store 0 to stack
  225. ROM:002F9AE4 beqz $a1, loc_2FA0B8 # Branch if Stack Pointer 1 = 0
  226. ROM:002F9AE8 sb $0, 0($t2) # Store 0 to stack
  227. ROM:002F9AEC b loc_2F9AFC
  228. ROM:002F9AF0 lw $v0, 4($a1) # Load Stack Pointer 4
  229. ROM:002F9AF4 # ---------------------------------------------------------------------------
  230. ROM:002F9AF4
  231. ROM:002F9AF4 loc_2F9AF4: # CODE XREF: sub_2F98E0+228j
  232. ROM:002F9AF4 daddu $a1, $v0, $0 # a1 = Stack Pointer X
  233. ROM:002F9AF8 lw $v0, 4($a1) # Load next Stack Pointer X
  234. ROM:002F9AFC
  235. ROM:002F9AFC loc_2F9AFC: # CODE XREF: sub_2F98E0+20Cj
  236. ROM:002F9AFC nop
  237. ROM:002F9B00 nop
  238. ROM:002F9B04 nop
  239. ROM:002F9B08 bnez $v0, loc_2F9AF4 # Branch if Stack Pointer X != 0
  240. ROM:002F9B0C nop
  241. ROM:002F9B10 addiu $v0, $sp, 0x220+var_A0 # v0 = Stack Pointer 13
  242. ROM:002F9B14 sw $v0, 4($a1) # Store Stack Pointer 13
  243. ROM:002F9B18
  244. ROM:002F9B18 loc_2F9B18: # CODE XREF: sub_2F98E0+7DCj
  245. ROM:002F9B18 lui $v0, 0x3D # '='
  246. ROM:002F9B1C addiu $t1, $sp, 0x220+var_90 # t1 = Stack Pointer 14
  247. ROM:002F9B20 la $v0, unk_3D1140 # v0 = Unknown Pointer 1
  248. ROM:002F9B24 sw $0, 0x220+var_9C($sp) # Store 0 to stack
  249. ROM:002F9B28 sw $v0, 0x220+var_A0($sp) # Store Unknown Pointer 1 to stack
  250. ROM:002F9B2C addiu $t0, $sp, 0x220+var_B4 # t0 = Stack Pointer 15
  251. ROM:002F9B30 sw $v1, 0($t1) # store Pointer to Fifth Enemy's Formation Data
  252. ROM:002F9B34 lui $v0, 0x3D # '='
  253. ROM:002F9B38 lw $a0, 0x1C($s2) # Load Formation ID
  254. ROM:002F9B3C la $v0, unk_3D1100 # v0 = Unknown Pointer 2
  255. ROM:002F9B40 lw $v1, 4($s2) # Load Formation Data Pointer
  256. ROM:002F9B44 lw $a1, -0x62C4($gp) # Load Stack Pointer 1
  257. ROM:002F9B48 sll $a0, 6 # ID * 64
  258. ROM:002F9B4C addu $v1, $a0
  259. ROM:002F9B50 sw $v0, 0x220+var_C0($sp) # Store Unknown Pointer 2 to stack
  260. ROM:002F9B54 addiu $v1, 0x24 # '$' # v1 = Pointer to Sixth Enemy's Formation Data
  261. ROM:002F9B58 sw $0, 0x220+var_B8($sp) # store 0 to stack
  262. ROM:002F9B5C beqz $a1, loc_2FA0C4 # Branch if Stack Pointer 1 = 0
  263. ROM:002F9B60 sb $0, 0($t0) # Store 0 to stack
  264. ROM:002F9B64 b loc_2F9B74
  265. ROM:002F9B68 lw $v0, 4($a1) # Load Stack Pointer 4
  266. ROM:002F9B6C # ---------------------------------------------------------------------------
  267. ROM:002F9B6C
  268. ROM:002F9B6C loc_2F9B6C: # CODE XREF: sub_2F98E0+2A0j
  269. ROM:002F9B6C daddu $a1, $v0, $0 # a1 = Stack Pointer X
  270. ROM:002F9B70 lw $v0, 4($a1) # Load next Stack Pointer X
  271. ROM:002F9B74
  272. ROM:002F9B74 loc_2F9B74: # CODE XREF: sub_2F98E0+284j
  273. ROM:002F9B74 nop
  274. ROM:002F9B78 nop
  275. ROM:002F9B7C nop
  276. ROM:002F9B80 bnez $v0, loc_2F9B6C # Branch if Stack Pointer X != 0
  277. ROM:002F9B84 nop
  278. ROM:002F9B88 addiu $v0, $sp, 0x220+var_C0 # v0 = Stack Pointer 16
  279. ROM:002F9B8C sw $v0, 4($a1) # Store Stack Pointer 16 to stack
  280. ROM:002F9B90
  281. ROM:002F9B90 loc_2F9B90: # CODE XREF: sub_2F98E0+7E8j
  282. ROM:002F9B90 lui $v0, 0x3D # '='
  283. ROM:002F9B94 addiu $a3, $sp, 0x220+var_B0 # a3 = Stack Pointer 17
  284. ROM:002F9B98 la $v0, unk_3D1120 # v0 = Unknown Pointer 3
  285. ROM:002F9B9C sw $v1, 0($a3) # Store Pointer to Sixth Enemy's Formation Data
  286. ROM:002F9BA0 sw $v0, 0x220+var_C0($sp) # Store Unknown Pointer 3 to stack
  287. ROM:002F9BA4 lui $v1, 0x3D # '='
  288. ROM:002F9BA8 sw $0, 0x220+var_BC($sp) # Store 0 to stack
  289. ROM:002F9BAC la $v1, unk_3D1100 # v1 = Unknown Pointer 2
  290. ROM:002F9BB0 lw $a1, 0x1C($s2) # Load Formation ID
  291. ROM:002F9BB4 addiu $a2, $sp, 0x220+var_D4 # a2 = Stack Pointer 18
  292. ROM:002F9BB8 lw $a0, 4($s2) # Load Formation Data Pointer
  293. ROM:002F9BBC lw $v0, -0x62C4($gp) # Load Stack Pointer 1
  294. ROM:002F9BC0 sll $a1, 6 # ID * 64
  295. ROM:002F9BC4 addu $a0, $a1
  296. ROM:002F9BC8 sw $v1, 0x220+var_E0($sp) # Store Unknown Pointer 2 to stack
  297. ROM:002F9BCC addiu $a0, 0x28 # '(' # a0 = Pointer to Seventh Enemy's Data Pointer
  298. ROM:002F9BD0 sw $0, 0x220+var_D8($sp) # Store 0 to stack
  299. ROM:002F9BD4 beqz $v0, loc_2FA0D0 # Branch if Stack Pointer 1 = 0
  300. ROM:002F9BD8 sb $0, 0($a2) # Store 0 to stack
  301. ROM:002F9BDC b loc_2F9BEC
  302. ROM:002F9BE0 lw $v1, 4($v0) # Load Stack Pointer 4
  303. ROM:002F9BE4 # ---------------------------------------------------------------------------
  304. ROM:002F9BE4
  305. ROM:002F9BE4 loc_2F9BE4: # CODE XREF: sub_2F98E0+318j
  306. ROM:002F9BE4 daddu $v0, $v1, $0 # v0 = Stack Pointer X
  307. ROM:002F9BE8 lw $v1, 4($v0) # Load next Stack Pointer X
  308. ROM:002F9BEC
  309. ROM:002F9BEC loc_2F9BEC: # CODE XREF: sub_2F98E0+2FCj
  310. ROM:002F9BEC nop
  311. ROM:002F9BF0 nop
  312. ROM:002F9BF4 nop
  313. ROM:002F9BF8 bnez $v1, loc_2F9BE4 # Branch if Stack Pointer X != 0
  314. ROM:002F9BFC nop
  315. ROM:002F9C00 addiu $v1, $sp, 0x220+var_E0 # v1 = Stack Pointer 19
  316. ROM:002F9C04 sw $v1, 4($v0) # Store Stack Pointer 19 to stack
  317. ROM:002F9C08
  318. ROM:002F9C08 loc_2F9C08: # CODE XREF: sub_2F98E0+7F4j
  319. ROM:002F9C08 lui $v0, 0x3D # '='
  320. ROM:002F9C0C addiu $a1, $sp, 0x220+var_D0 # a1 = Stack Pointer 20
  321. ROM:002F9C10 la $v0, unk_3D1120 # v0 = Unknown Pointer 3
  322. ROM:002F9C14 sw $a0, 0($a1) # Store Pointer to Seventh Enemy's Formation Data
  323. ROM:002F9C18 sw $v0, 0x220+var_E0($sp) # Store Unknown Pointer 3
  324. ROM:002F9C1C lui $v1, 0x3D # '='
  325. ROM:002F9C20 sw $0, 0x220+var_DC($sp) # Store 0 to stack
  326. ROM:002F9C24 la $v1, unk_3D1100 # v1 = Unknown Pointer 2
  327. ROM:002F9C28 lw $s4, 0x1C($s2) # Load Formation ID
  328. ROM:002F9C2C addiu $a0, $sp, 0x220+var_F4 # a0 = Stack Pointer 21
  329. ROM:002F9C30 lw $s3, 4($s2) # Load Formation Data Pointer
  330. ROM:002F9C34 lw $v0, -0x62C4($gp) # Load Stack Pointer 1
  331. ROM:002F9C38 sll $s4, 6 # ID * 64
  332. ROM:002F9C3C addu $s3, $s4
  333. ROM:002F9C40 sw $v1, 0x220+var_100($sp) # Store Unknown Pointer 2
  334. ROM:002F9C44 addiu $s3, 0x2C # ',' # s3 = Pointer to Eighth Enemy's Formation Data
  335. ROM:002F9C48 sw $0, 0x220+var_F8($sp) # Store 0 to stack
  336. ROM:002F9C4C beqz $v0, loc_2FA0DC # Branch if Stack Pointer 1 = 0
  337. ROM:002F9C50 sb $0, 0($a0) # Store 0 to stack
  338. ROM:002F9C54 b loc_2F9C64
  339. ROM:002F9C58 lw $v1, 4($v0) # Load Stack Pointer 4
  340. ROM:002F9C5C # ---------------------------------------------------------------------------
  341. ROM:002F9C5C
  342. ROM:002F9C5C loc_2F9C5C: # CODE XREF: sub_2F98E0+390j
  343. ROM:002F9C5C daddu $v0, $v1, $0 # v0 = Stack Pointer X
  344. ROM:002F9C60 lw $v1, 4($v0) # Load next Stack Pointer X
  345. ROM:002F9C64
  346. ROM:002F9C64 loc_2F9C64: # CODE XREF: sub_2F98E0+374j
  347. ROM:002F9C64 nop
  348. ROM:002F9C68 nop
  349. ROM:002F9C6C nop
  350. ROM:002F9C70 bnez $v1, loc_2F9C5C # Branch if Stack Pointer X != 0
  351. ROM:002F9C74 nop
  352. ROM:002F9C78 addiu $v1, $sp, 0x220+var_100 # v1 = Stack Pointer 22
  353. ROM:002F9C7C sw $v1, 4($v0) # Store Stack Pointer 22 to stack
  354. ROM:002F9C80
  355. ROM:002F9C80 loc_2F9C80: # CODE XREF: sub_2F98E0+800j
  356. ROM:002F9C80 lui $v0, 0x3D # '='
  357. ROM:002F9C84 addiu $fp, $sp, 0x130 # fp = Stack Pointer 23
  358. ROM:002F9C88 la $v0, unk_3D1120 # v0 = Unknown Pointer 3
  359. ROM:002F9C8C sw $s3, 0x220+var_220($fp) # Store Pointer to Eighth Enemy's Formation Data
  360. ROM:002F9C8C # NOTE: It's actually var_F0, fp messes the variable up
  361. ROM:002F9C90 sw $v0, 0x220+var_100($sp) # Store Unknown Pointer 3 to stack
  362. ROM:002F9C94 addiu $v1, $sp, 0x220+var_114 # v1 = Stack Pointer 24
  363. ROM:002F9C98 sw $0, 0x220+var_FC($sp) # Store 0 to stack
  364. ROM:002F9C9C lui $v0, 0x3D # '='
  365. ROM:002F9CA0 lw $s5, 0x1C($s2) # Load Formation ID
  366. ROM:002F9CA4 la $v0, unk_3D1100 # v0 = Unknown Pointer 2
  367. ROM:002F9CA8 lw $s4, 4($s2) # Load Formation Data Pointer
  368. ROM:002F9CAC lw $s3, -0x62C4($gp) # Load Stack Pointer
  369. ROM:002F9CB0 sll $s5, 6 # ID * 64
  370. ROM:002F9CB4 addu $s4, $s5
  371. ROM:002F9CB8 sw $v0, 0x220+var_120($sp) # Store Unknown Pointer 2 to stack
  372. ROM:002F9CBC addiu $v0, $s4, 0x30 # v0 = Pointer to Ninth Enemy's Formation Data
  373. ROM:002F9CC0 sw $0, 0x220+var_118($sp) # Store 0 to stack
  374. ROM:002F9CC4 beqz $s3, loc_2FA0E8 # Branch if Stack Pointer 1 = 0
  375. ROM:002F9CC8 sb $0, 0($v1) # Store 0 to stack
  376. ROM:002F9CCC b loc_2F9CDC
  377. ROM:002F9CD0 lw $s4, 4($s3) # Load Stack Pointer 4
  378. ROM:002F9CD4 # ---------------------------------------------------------------------------
  379. ROM:002F9CD4
  380. ROM:002F9CD4 loc_2F9CD4: # CODE XREF: sub_2F98E0+408j
  381. ROM:002F9CD4 daddu $s3, $s4, $0 # s3 = Stack Pointer X
  382. ROM:002F9CD8 lw $s4, 4($s3) # Load next Stack Pointer X
  383. ROM:002F9CDC
  384. ROM:002F9CDC loc_2F9CDC: # CODE XREF: sub_2F98E0+3ECj
  385. ROM:002F9CDC nop
  386. ROM:002F9CE0 nop
  387. ROM:002F9CE4 nop
  388. ROM:002F9CE8 bnez $s4, loc_2F9CD4 # Branch if Stack Pointer X != 0
  389. ROM:002F9CEC nop
  390. ROM:002F9CF0 addiu $s4, $sp, 0x220+var_120 # s4 = Stack Pointer 25
  391. ROM:002F9CF4 sw $s4, 4($s3) # Store Stack Pointer 25 to stack
  392. ROM:002F9CF8
  393. ROM:002F9CF8 loc_2F9CF8: # CODE XREF: sub_2F98E0+80Cj
  394. ROM:002F9CF8 lui $s3, 0x3D # '='
  395. ROM:002F9CFC lui $s4, 0x3D # '='
  396. ROM:002F9D00 la $s3, unk_3D1120 # s3 = Unknown Pointer 3
  397. ROM:002F9D04 sw $0, 0x220+var_11C($sp) # Store 0 to stack
  398. ROM:002F9D08 sw $s3, 0x220+var_120($sp) # Store Unknown Pointer 3 to stack
  399. ROM:002F9D0C la $s4, unk_3D1100 # s4 = Unknown Pointer 2
  400. ROM:002F9D10 addiu $s3, $sp, 0x220+var_110 # s3 = Stack Pointer 26
  401. ROM:002F9D14 sw $v0, 0($s3) # Store Pointer to Ninth Enemy's Formation Data
  402. ROM:002F9D18 lw $s7, 0x1C($s2) # Load Formation ID
  403. ROM:002F9D1C addiu $v0, $sp, 0x220+var_134 # v0 = Stack Pointer 27
  404. ROM:002F9D20 lw $s5, 4($s2) # Load Formation Data Pointer
  405. ROM:002F9D24 lw $s3, -0x62C4($gp) # Load Stack Pointer 1
  406. ROM:002F9D28 sll $s7, 6 # ID * 64
  407. ROM:002F9D2C addu $s5, $s7
  408. ROM:002F9D30 sw $s4, 0x220+var_140($sp) # Store Unknown Pointer 2 to stack
  409. ROM:002F9D34 addiu $s4, $s5, 0x34 # s4 = Pointer to Tenth Enemy's Formation Data
  410. ROM:002F9D38 sw $0, 0x220+var_138($sp) # Store 0 to stack
  411. ROM:002F9D3C beqz $s3, loc_2FA0F4 # Branch if Stack Pointer 1 = 0
  412. ROM:002F9D40 sb $0, 0($v0) # Store 0 to stack
  413. ROM:002F9D44 b loc_2F9D54
  414. ROM:002F9D48 lw $s5, 4($s3) # Load Stack Pointer 4
  415. ROM:002F9D4C # ---------------------------------------------------------------------------
  416. ROM:002F9D4C
  417. ROM:002F9D4C loc_2F9D4C: # CODE XREF: sub_2F98E0+480j
  418. ROM:002F9D4C daddu $s3, $s5, $0 # s3 = Stack Pointer X
  419. ROM:002F9D50 lw $s5, 4($s3) # Load next Stack Pointer X
  420. ROM:002F9D54
  421. ROM:002F9D54 loc_2F9D54: # CODE XREF: sub_2F98E0+464j
  422. ROM:002F9D54 nop
  423. ROM:002F9D58 nop
  424. ROM:002F9D5C nop
  425. ROM:002F9D60 bnez $s5, loc_2F9D4C # Branch if Stack Pointer X != 0
  426. ROM:002F9D64 nop
  427. ROM:002F9D68 addiu $s5, $sp, 0x220+var_140 # s5 = Stack Pointer 28
  428. ROM:002F9D6C sw $s5, 4($s3) # Store Stack Pointer 28 to stack
  429. ROM:002F9D70
  430. ROM:002F9D70 loc_2F9D70: # CODE XREF: sub_2F98E0+818j
  431. ROM:002F9D70 lui $s3, 0x3D # '='
  432. ROM:002F9D74 addiu $s7, $sp, 0x220+var_130 # s7 = Stack Pointer 29
  433. ROM:002F9D78 la $s3, unk_3D1120 # s3 = Unknown Pointer 3
  434. ROM:002F9D7C sw $s4, 0($s7) # Store Pointer to Tenth Enemy's Formation Data
  435. ROM:002F9D80 sw $s3, 0x220+var_140($sp) # Store Unknown Pointer 3
  436. ROM:002F9D84 lui $s5, 0x3D # '='
  437. ROM:002F9D88 sw $0, 0x220+var_13C($sp) # Store 0 to stack
  438. ROM:002F9D8C la $s5, unk_3D1100 # s5 = Unknown Pointer 2
  439. ROM:002F9D90 lw $t9, 0x1C($s2) # Load Formation ID
  440. ROM:002F9D94 addiu $s4, $sp, 0x220+var_174 # s4 = Stack Pointer 30
  441. ROM:002F9D98 lw $t8, 4($s2) # Load Formation Data Pointer
  442. ROM:002F9D9C lw $s3, -0x62C4($gp) # Load Stack Pointer 1
  443. ROM:002F9DA0 sll $t9, 6 # ID * 64
  444. ROM:002F9DA4 addu $t8, $t9
  445. ROM:002F9DA8 sw $s5, 0x220+var_180($sp) # Store Unknown Pointer 2 to stack
  446. ROM:002F9DAC addiu $s5, $t8, 0x38 # s5 = Pointer to Special Formation Data
  447. ROM:002F9DB0 sw $0, 0x220+var_178($sp) # Store 0 to stack
  448. ROM:002F9DB4 beqz $s3, loc_2FA100 # Branch if Stack Pointer 1 = 0
  449. ROM:002F9DB8 sb $0, 0($s4) # Store 0 to stack
  450. ROM:002F9DBC b loc_2F9DCC
  451. ROM:002F9DC0 lw $t8, 4($s3) # Load Stack Pointer 4
  452. ROM:002F9DC4 # ---------------------------------------------------------------------------
  453. ROM:002F9DC4
  454. ROM:002F9DC4 loc_2F9DC4: # CODE XREF: sub_2F98E0+4F8j
  455. ROM:002F9DC4 daddu $s3, $t8, $0 # s3 = Stack Pointer X
  456. ROM:002F9DC8 lw $t8, 4($s3) # Load next Stack Pointer X
  457. ROM:002F9DCC
  458. ROM:002F9DCC loc_2F9DCC: # CODE XREF: sub_2F98E0+4DCj
  459. ROM:002F9DCC nop
  460. ROM:002F9DD0 nop
  461. ROM:002F9DD4 nop
  462. ROM:002F9DD8 bnez $t8, loc_2F9DC4 # Branch if Stack Pointer X != 0
  463. ROM:002F9DDC nop
  464. ROM:002F9DE0 addiu $t8, $sp, 0x220+var_180 # t8 = Stack Pointer 31
  465. ROM:002F9DE4 sw $t8, 4($s3) # Store Stack Pointer 31 to stack
  466. ROM:002F9DE8
  467. ROM:002F9DE8 loc_2F9DE8: # CODE XREF: sub_2F98E0+824j
  468. ROM:002F9DE8 lui $s3, 0x3D # '='
  469. ROM:002F9DEC lw $s6, 0($s6) # Load Pointer to First Enemy's Formation Data
  470. ROM:002F9DF0 la $s3, unk_3D10E0 # s3 = Unknown Pointer 4
  471. ROM:002F9DF4 addiu $t8, $sp, 0x220+var_14 # t8 = Stack Pointer 32
  472. ROM:002F9DF8 sw $s3, 0x220+var_180($sp) # Store Unknown Pointer 4
  473. ROM:002F9DFC addiu $s3, $sp, 0x220+var_170 # s3 = Stack Pointer 33
  474. ROM:002F9E00 sw $0, 0x220+var_17C($sp) # Store 0 to stack
  475. ROM:002F9E04 sw $s5, 0($s3) # Store Pointer to Special Formation Data
  476. ROM:002F9E08 addiu $s5, $sp, 0x220+var_C0 # s5 = Stack Pointer 34
  477. ROM:002F9E0C sw $s5, 0x220+var_15C($sp) # Store Stack Pointer 34 to stack
  478. ROM:002F9E10 addiu $s5, $sp, 0x220+var_E0 # s5 = Stack Pointer 35
  479. ROM:002F9E14 sw $s5, 0x220+var_158($sp) # Store Stack Pointer 35 to stack
  480. ROM:002F9E18 addiu $s5, $sp, 0x220+var_100 # s5 = Stack Pointer 36
  481. ROM:002F9E1C sw $s5, 0x220+var_154($sp) # Store Stack Pointer 36 to stack
  482. ROM:002F9E20 addiu $s5, $sp, 0x220+var_120 # s5 = Stack Pointer 37
  483. ROM:002F9E24 sw $s5, 0x220+var_150($sp) # Store Stack Pointer 37 to stack
  484.  
  485.  
  486.  
  487. gp-0x62c4 = Stack Pointer 1
  488.  
  489. NOTE: Subtract var_'s hex value from 0x220 to get the amount to add to the
  490. stack pointer.
  491.  
  492. var_10 = Pointer to First Enemy's Formation Data
  493. var_14 = 0
  494. var_18 = 0
  495. var_1c = 0
  496. var_20 = Unknown Pointer 1
  497. var_24 = ? -> Stack Pointer 4
  498.  
  499. var_30 = Pointer to Second Enemy's Formation Data
  500. var_34 = 0
  501. var_38 = 0
  502. var_3c = 0
  503. var_40 = Unknown Pointer 2 -> Unknown Pointer 1
  504. var_44 = ? -> Stack Pointer 7
  505.  
  506. var_50 = Pointer to Third Enemy's Formation Data
  507. var_54 = 0
  508. var_58 = 0
  509. var_5c = 0
  510. var_60 = Unknown Pointer 2 -> Unknown Pointer 1
  511. var_64 = ? -> Stack Pointer 10
  512.  
  513. var_70 = Pointer to Fourth Enemy's Formation Data
  514. var_74 = 0
  515. var_78 = 0
  516. var_7c = 0
  517. var_80 = Unknown Pointer 2 -> Unknown Pointer 1
  518. var_84 = ? -> Stack Pointer 13
  519.  
  520. var_90 = Pointer to Fifth Enemy's Formation Data
  521. var_94 = 0
  522. var_98 = 0
  523. var_9c = 0
  524. var_a0 = Unknown Pointer 2 -> Unknown Pointer 1
  525. var_a4 = ? -> Stack Pointer 16
  526.  
  527. var_b0 = Pointer to Sixth Enemy's Formation Data
  528. var_b4 = 0
  529. var_b8 = 0
  530. var_bc = 0
  531. var_c0 = Unknown Pointer 2 -> Unknown Pointer 3
  532. var_c4 = ? -> Stack Pointer 19
  533.  
  534. var_d0 = Pointer to Seventh Enemy's Formation Data
  535. var_d4 = 0
  536. var_d8 = 0
  537. var_dc = 0
  538. var_e0 = Unknown Pointer 2 -> Unknown Pointer 3
  539. var_e4 = ? -> Stack Pointer 22
  540.  
  541. var_f0 = Pointer to Eighth Enemy's Formation Data
  542. var_f4 = 0
  543. var_f8 = 0
  544. var_fc = 0
  545. var_100 = Unknown Pointer 2 -> Unknown Pointer 3
  546. var_104 = ? -> Stack Pointer 25
  547.  
  548. var_110 = Pointer to Ninth Enemy's Formation Data
  549. var_114 = 0
  550. var_118 = 0
  551. var_11c = 0
  552. var_120 = Unknown Pointer 2 -> Unknown Pointer 3
  553. var_124 = ? -> Stack Pointer 28
  554.  
  555. var_130 = Pointer to Tenth Enemy's Formation Data
  556. var_134 = 0
  557. var_138 = 0
  558. var_13c = 0
  559. var_140 = Unknown Pointer 2 -> Unknown Pointer 3
  560. var_144 = ?
  561.  
  562. var_150 = Stack Pointer 37
  563. var_154 = Stack Pointer 36
  564. var_158 = Stack Pointer 35
  565. var_15c = Stack Pointer 34
  566.  
  567. var_170 = Pointer to Special Formation Data
  568. var_174 = 0
  569. var_178 = 0
  570. var_17c = 0
  571. var_180 = Unknown Pointer 2 -> Unknown Pointer 4
  572.  
  573. var_190 = ra (these are stored at the start)
  574. var_1a0 = fp
  575. var_1b0 = s7
  576. var_1c0 = s6
  577. var_1d0 = s5
  578. var_1e0 = s4
  579. var_1f0 = s3
  580. var_200 = s2
  581. var_210 = s1
  582. var_220 = s0
  583.  
  584.  
  585. Stack Pointer 1 = var_20
  586. Stack Pointer 2 = var_10
  587. Stack Pointer 3 = var_34
  588. Stack Pointer 4 = var_40
  589. Stack Pointer 5 = var_30
  590. Stack Pointer 6 = var_54
  591. Stack Pointer 7 = var_60
  592. Stack Pointer 8 = var_50
  593. Stack Pointer 9 = var_74
  594. Stack Pointer 10 = var_80
  595. Stack Pointer 11 = var_70
  596. Stack Pointer 12 = var_94
  597. Stack Pointer 13 = var_a0
  598. Stack Pointer 14 = var_90
  599. Stack Pointer 15 = var_b4
  600. Stack Pointer 16 = var_c0
  601. Stack Pointer 17 = var_b0
  602. Stack Pointer 18 = var_d4
  603. Stack Pointer 19 = var_e0
  604. Stack Pointer 20 = var_d0
  605. Stack Pointer 21 = var_f4
  606. Stack Pointer 22 = var_100
  607. Stack Pointer 23 = var_f0 (not shown; due to frame pointer)
  608. Stack Pointer 24 = var_114
  609. Stack Pointer 25 = var_120
  610. Stack Pointer 26 = var_110
  611. Stack Pointer 27 = var_134
  612. Stack Pointer 28 = var_140
  613. Stack Pointer 29 = var_130
  614. Stack Pointer 30 = var_174
  615. Stack Pointer 31 = var_180
  616. Stack Pointer 32 = var_14
  617. Stack Pointer 33 = var_170
  618. Stack Pointer 34 = var_c0
  619. Stack Pointer 35 = var_e0
  620. Stack Pointer 36 = var_100
  621. Stack Pointer 37 = var_120
  622.  
  623.  
  624. Unknown Pointer 1 = 0x3d1140
  625. Unknown Pointer 2 = 0x3d1100
  626. Unknown Pointer 3 = 0x3d1120
  627.  
  628. v0 = Stack Pointer 27
  629. v1 = Stack Pointer 24
  630.  
  631. a0 = Stack Pointer 21
  632. a1 = Stack Pointer 20
  633. a2 = Stack Pointer 18
  634. a3 = Stack Pointer 17
  635.  
  636. t0 = Stack Pointer 15
  637. t1 = Stack Pointer 14
  638. t2 = Stack Pointer 12
  639. t3 = Stack Pointer 11
  640. t4 = Stack Pointer 9
  641. t5 = Stack Pointer 8
  642. t6 = Stack Pointer 6
  643. t7 - Stack Pointer 5
  644.  
  645. s1 = Stack Pointer 3
  646. s2 = Pointer to Formation File Data Pointer
  647. s3 = Stack Pointer 26 -> Stack Pointer 32
  648. s4 = Stack Pointer 30
  649.  
  650. s6 = Stack Pointer 2
  651. s7 = Stack Pointer 29
  652.  
  653. fp/s8 = Stack Pointer 23
Add Comment
Please, Sign In to add comment