Super Mario 64s source code (from a leak on 4chan so be careful)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

156 lines
7.3 KiB

6 years ago
  1. glabel func_8031784C
  2. /* 0D284C 8031784C 27ADFFF0 */ addiu $t5, $sp, -0x10
  3. /* 0D2850 80317850 ADA60018 */ sw $a2, 0x18($t5)
  4. /* 0D2854 80317854 8C820000 */ lw $v0, ($a0)
  5. /* 0D2858 80317858 01A0E825 */ move $sp, $t5
  6. /* 0D285C 8031785C 50400030 */ beql $v0, $zero, .L80317920
  7. /* 0D2860 80317860 8DB80018 */ lw $t8, 0x18($t5)
  8. /* 0D2864 80317864 10E0002D */ beqz $a3, .L8031791C
  9. /* 0D2868 80317868 00447021 */ addu $t6, $v0, $a0
  10. /* 0D286C 8031786C 10E0002B */ beqz $a3, .L8031791C
  11. /* 0D2870 80317870 AC8E0000 */ sw $t6, ($a0)
  12. /* 0D2874 80317874 10E00029 */ beqz $a3, .L8031791C
  13. /* 0D2878 80317878 00001825 */ move $v1, $zero
  14. /* 0D287C 8031787C 00004025 */ move $t0, $zero
  15. /* 0D2880 80317880 24020001 */ li $v0, 1
  16. .L80317884:
  17. /* 0D2884 80317884 8C8F0000 */ lw $t7, ($a0)
  18. /* 0D2888 80317888 24630001 */ addiu $v1, $v1, 1
  19. /* 0D288C 8031788C 01E84821 */ addu $t1, $t7, $t0
  20. /* 0D2890 80317890 8D260000 */ lw $a2, ($t1)
  21. /* 0D2894 80317894 10C0001F */ beqz $a2, .L80317914
  22. /* 0D2898 80317898 00C43021 */ addu $a2, $a2, $a0
  23. /* 0D289C 8031789C AD260000 */ sw $a2, ($t1)
  24. /* 0D28A0 803178A0 90D80002 */ lbu $t8, 2($a2)
  25. /* 0D28A4 803178A4 00C05025 */ move $t2, $a2
  26. /* 0D28A8 803178A8 1700001A */ bnez $t8, .L80317914
  27. /* 0D28AC 803178AC 00000000 */ nop
  28. /* 0D28B0 803178B0 8CD90004 */ lw $t9, 4($a2)
  29. /* 0D28B4 803178B4 24C90004 */ addiu $t1, $a2, 4
  30. /* 0D28B8 803178B8 53200013 */ beql $t9, $zero, .L80317908
  31. /* 0D28BC 803178BC 8CC6000C */ lw $a2, 0xc($a2)
  32. /* 0D28C0 803178C0 8D2E0000 */ lw $t6, ($t1)
  33. /* 0D28C4 803178C4 01C45821 */ addu $t3, $t6, $a0
  34. /* 0D28C8 803178C8 AD2B0000 */ sw $t3, ($t1)
  35. /* 0D28CC 803178CC 916F0001 */ lbu $t7, 1($t3)
  36. /* 0D28D0 803178D0 01606025 */ move $t4, $t3
  37. /* 0D28D4 803178D4 55E0000C */ bnezl $t7, .L80317908
  38. /* 0D28D8 803178D8 8CC6000C */ lw $a2, 0xc($a2)
  39. /* 0D28DC 803178DC 8D780004 */ lw $t8, 4($t3)
  40. /* 0D28E0 803178E0 8D990008 */ lw $t9, 8($t4)
  41. /* 0D28E4 803178E4 8D8E000C */ lw $t6, 0xc($t4)
  42. /* 0D28E8 803178E8 03055821 */ addu $t3, $t8, $a1
  43. /* 0D28EC 803178EC AD8B0004 */ sw $t3, 4($t4)
  44. /* 0D28F0 803178F0 03245821 */ addu $t3, $t9, $a0
  45. /* 0D28F4 803178F4 AD8B0008 */ sw $t3, 8($t4)
  46. /* 0D28F8 803178F8 01C45821 */ addu $t3, $t6, $a0
  47. /* 0D28FC 803178FC AD8B000C */ sw $t3, 0xc($t4)
  48. /* 0D2900 80317900 A1820001 */ sb $v0, 1($t4)
  49. /* 0D2904 80317904 8CC6000C */ lw $a2, 0xc($a2)
  50. .L80317908:
  51. /* 0D2908 80317908 A1420002 */ sb $v0, 2($t2)
  52. /* 0D290C 8031790C 00867821 */ addu $t7, $a0, $a2
  53. /* 0D2910 80317910 AD4F000C */ sw $t7, 0xc($t2)
  54. .L80317914:
  55. /* 0D2914 80317914 1467FFDB */ bne $v1, $a3, .L80317884
  56. /* 0D2918 80317918 25080004 */ addiu $t0, $t0, 4
  57. .L8031791C:
  58. /* 0D291C 8031791C 8DB80018 */ lw $t8, 0x18($t5)
  59. .L80317920:
  60. /* 0D2920 80317920 24020001 */ li $v0, 1
  61. /* 0D2924 80317924 2F190001 */ sltiu $t9, $t8, 1
  62. /* 0D2928 80317928 3B390001 */ xori $t9, $t9, 1
  63. /* 0D292C 8031792C 13200054 */ beqz $t9, .L80317A80
  64. /* 0D2930 80317930 00000000 */ nop
  65. /* 0D2934 80317934 13200052 */ beqz $t9, .L80317A80
  66. /* 0D2938 80317938 24830004 */ addiu $v1, $a0, 4
  67. /* 0D293C 8031793C 00187080 */ sll $t6, $t8, 2
  68. /* 0D2940 80317940 01C45021 */ addu $t2, $t6, $a0
  69. /* 0D2944 80317944 254A0004 */ addiu $t2, $t2, 4
  70. /* 0D2948 80317948 8C660000 */ lw $a2, ($v1)
  71. .L8031794C:
  72. /* 0D294C 8031794C 10C00049 */ beqz $a2, .L80317A74
  73. /* 0D2950 80317950 00C47821 */ addu $t7, $a2, $a0
  74. /* 0D2954 80317954 AC6F0000 */ sw $t7, ($v1)
  75. /* 0D2958 80317958 91F90000 */ lbu $t9, ($t7)
  76. /* 0D295C 8031795C 01E03825 */ move $a3, $t7
  77. /* 0D2960 80317960 57200045 */ bnezl $t9, .L80317A78
  78. /* 0D2964 80317964 24630004 */ addiu $v1, $v1, 4
  79. /* 0D2968 80317968 8DF80008 */ lw $t8, 8($t7)
  80. /* 0D296C 8031796C 25E60008 */ addiu $a2, $t7, 8
  81. /* 0D2970 80317970 53000013 */ beql $t8, $zero, .L803179C0
  82. /* 0D2974 80317974 8CEF0010 */ lw $t7, 0x10($a3)
  83. /* 0D2978 80317978 8CCE0000 */ lw $t6, ($a2)
  84. /* 0D297C 8031797C 01C44021 */ addu $t0, $t6, $a0
  85. /* 0D2980 80317980 ACC80000 */ sw $t0, ($a2)
  86. /* 0D2984 80317984 910F0001 */ lbu $t7, 1($t0)
  87. /* 0D2988 80317988 01004825 */ move $t1, $t0
  88. /* 0D298C 8031798C 55E0000C */ bnezl $t7, .L803179C0
  89. /* 0D2990 80317990 8CEF0010 */ lw $t7, 0x10($a3)
  90. /* 0D2994 80317994 8D190004 */ lw $t9, 4($t0)
  91. /* 0D2998 80317998 8D380008 */ lw $t8, 8($t1)
  92. /* 0D299C 8031799C 8D2E000C */ lw $t6, 0xc($t1)
  93. /* 0D29A0 803179A0 03254021 */ addu $t0, $t9, $a1
  94. /* 0D29A4 803179A4 AD280004 */ sw $t0, 4($t1)
  95. /* 0D29A8 803179A8 03044021 */ addu $t0, $t8, $a0
  96. /* 0D29AC 803179AC AD280008 */ sw $t0, 8($t1)
  97. /* 0D29B0 803179B0 01C44021 */ addu $t0, $t6, $a0
  98. /* 0D29B4 803179B4 AD28000C */ sw $t0, 0xc($t1)
  99. /* 0D29B8 803179B8 A1220001 */ sb $v0, 1($t1)
  100. /* 0D29BC 803179BC 8CEF0010 */ lw $t7, 0x10($a3)
  101. .L803179C0:
  102. /* 0D29C0 803179C0 24E60010 */ addiu $a2, $a3, 0x10
  103. /* 0D29C4 803179C4 51E00013 */ beql $t7, $zero, .L80317A14
  104. /* 0D29C8 803179C8 8CF80018 */ lw $t8, 0x18($a3)
  105. /* 0D29CC 803179CC 8CD90000 */ lw $t9, ($a2)
  106. /* 0D29D0 803179D0 03244021 */ addu $t0, $t9, $a0
  107. /* 0D29D4 803179D4 ACC80000 */ sw $t0, ($a2)
  108. /* 0D29D8 803179D8 91180001 */ lbu $t8, 1($t0)
  109. /* 0D29DC 803179DC 01004825 */ move $t1, $t0
  110. /* 0D29E0 803179E0 5700000C */ bnezl $t8, .L80317A14
  111. /* 0D29E4 803179E4 8CF80018 */ lw $t8, 0x18($a3)
  112. /* 0D29E8 803179E8 8D0E0004 */ lw $t6, 4($t0)
  113. /* 0D29EC 803179EC 8D2F0008 */ lw $t7, 8($t1)
  114. /* 0D29F0 803179F0 8D39000C */ lw $t9, 0xc($t1)
  115. /* 0D29F4 803179F4 01C54021 */ addu $t0, $t6, $a1
  116. /* 0D29F8 803179F8 AD280004 */ sw $t0, 4($t1)
  117. /* 0D29FC 803179FC 01E44021 */ addu $t0, $t7, $a0
  118. /* 0D2A00 80317A00 AD280008 */ sw $t0, 8($t1)
  119. /* 0D2A04 80317A04 03244021 */ addu $t0, $t9, $a0
  120. /* 0D2A08 80317A08 AD28000C */ sw $t0, 0xc($t1)
  121. /* 0D2A0C 80317A0C A1220001 */ sb $v0, 1($t1)
  122. /* 0D2A10 80317A10 8CF80018 */ lw $t8, 0x18($a3)
  123. .L80317A14:
  124. /* 0D2A14 80317A14 24E60018 */ addiu $a2, $a3, 0x18
  125. /* 0D2A18 80317A18 53000013 */ beql $t8, $zero, .L80317A68
  126. /* 0D2A1C 80317A1C 8CE60004 */ lw $a2, 4($a3)
  127. /* 0D2A20 80317A20 8CCE0000 */ lw $t6, ($a2)
  128. /* 0D2A24 80317A24 01C44021 */ addu $t0, $t6, $a0
  129. /* 0D2A28 80317A28 ACC80000 */ sw $t0, ($a2)
  130. /* 0D2A2C 80317A2C 910F0001 */ lbu $t7, 1($t0)
  131. /* 0D2A30 80317A30 01004825 */ move $t1, $t0
  132. /* 0D2A34 80317A34 55E0000C */ bnezl $t7, .L80317A68
  133. /* 0D2A38 80317A38 8CE60004 */ lw $a2, 4($a3)
  134. /* 0D2A3C 80317A3C 8D190004 */ lw $t9, 4($t0)
  135. /* 0D2A40 80317A40 8D380008 */ lw $t8, 8($t1)
  136. /* 0D2A44 80317A44 8D2E000C */ lw $t6, 0xc($t1)
  137. /* 0D2A48 80317A48 03254021 */ addu $t0, $t9, $a1
  138. /* 0D2A4C 80317A4C AD280004 */ sw $t0, 4($t1)
  139. /* 0D2A50 80317A50 03044021 */ addu $t0, $t8, $a0
  140. /* 0D2A54 80317A54 AD280008 */ sw $t0, 8($t1)
  141. /* 0D2A58 80317A58 01C44021 */ addu $t0, $t6, $a0
  142. /* 0D2A5C 80317A5C AD28000C */ sw $t0, 0xc($t1)
  143. /* 0D2A60 80317A60 A1220001 */ sb $v0, 1($t1)
  144. /* 0D2A64 80317A64 8CE60004 */ lw $a2, 4($a3)
  145. .L80317A68:
  146. /* 0D2A68 80317A68 A0E20000 */ sb $v0, ($a3)
  147. /* 0D2A6C 80317A6C 00867821 */ addu $t7, $a0, $a2
  148. /* 0D2A70 80317A70 ACEF0004 */ sw $t7, 4($a3)
  149. .L80317A74:
  150. /* 0D2A74 80317A74 24630004 */ addiu $v1, $v1, 4
  151. .L80317A78:
  152. /* 0D2A78 80317A78 5543FFB4 */ bnel $t2, $v1, .L8031794C
  153. /* 0D2A7C 80317A7C 8C660000 */ lw $a2, ($v1)
  154. .L80317A80:
  155. /* 0D2A80 80317A80 03E00008 */ jr $ra
  156. /* 0D2A84 80317A84 25BD0010 */ addiu $sp, $t5, 0x10