Advertisement
Zoinkity

English FZXP Workpad

Jul 25th, 2015
508
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 170.57 KB | None | 0 0
  1. 030449A8 set when assigning tracks for Edit Cup MFS header 1
  2. 0304D918 set when assigning tracks for Edit Cup MFS header 1
  3. 0311BC28 set when assigning track for Edit Cup 1
  4. 0311EBF8 set when assigning track for Edit Cup 6
  5.  
  6. filetable at 0x72030 -> 0x116C2D8
  7. 00524D60 00527AF0 03F74500 03F77290 0x2D90 `MML.tbl
  8. 00528730 00F67900 000010E8 00A402B8 0xA3F1D0 `MML.trk
  9. 00527AF0 00528730 03F77290 03F77ED0 0xC40 `MML.hdr
  10. 002787F0 0027F200 03F32E50 03F39860 0x6A10 `N-logo.c16
  11. 002B9EA0 00524920 00EF6B48 011615C8 0x26AA80 **object_resources
  12. 002AD1E0 002B9EA0 03F67840 03F74500 0xCCC0 `track data
  13. 002747F0 002787F0 03F2EE50 03F32E50 0x4000 `Building 1 image bank and super racer icons
  14. 0017B1E0 0017B960 03E35840 03E35FC0 0x780 `track_display_lists.bin
  15. 001B8550 001E23F0 03E72BB0 03E9CA50 0x29EA0 `race_resources.bin
  16. 001E23F0 0022B0A0 03E9CA50 03EE5700 0x48CB0 `wreck.obj
  17. 0017B960 001B8550 03E35FC0 03E72BB0 0x3CBF0 `car_resources.bin
  18. 00145B70 001535B0 03E13280 03E20CC0 0xDA40 `Shared editor resources
  19. 001535B0 00166660 00000000 00000000 0x137B0 Old track editor resources
  20. 0027F200 002AD1E0 03F39860 03F67840 0x2DFE0 `
  21. 0022B0A0 00235130 03EE5700 03EEF790 0xA090 `
  22. 0016C8A0 0017B1E0 03E26F00 03E35840 0xE940 `track_resources.bin
  23. 00235130 00239A80 03EEF790 03EF40E0 0x4950 `
  24. 00239A80 0023EC50 03EF40E0 03EF92B0 0x51D0 `
  25. 0023EC50 00243D90 03EF92B0 03EFE3F0 0x5140 `
  26. 00243D90 0024A270 03EFE3F0 03F048D0 0x64E0 `
  27. 0024A270 002507F0 03F048D0 03F0AE50 0x6580 `
  28. 002507F0 00255100 03F0AE50 03F0F760 0x4910 `
  29. 00255100 00259600 03F0F760 03F13C60 0x4500 `
  30. 00259600 0025F360 03F13C60 03F199C0 0x5D60 `
  31. 0025F360 00266C20 03F199C0 03F21280 0x78C0 `
  32. 00266C20 0026D780 03F21280 03F27DE0 0x6B60 `
  33. 0026D780 002738A0 03F27DE0 03F2DF00 0x6120 `
  34. 002738A0 002747F0 03F2DF00 03F2EE50 0xF50 `
  35. 00166660 0016C8A0 03E20CC0 03E26F00 0x6240 `car editor resources
  36.  
  37. Move music.ctl to 0xEB9F18 LBA 0357/033F (0xCF6E80 to set LBA)
  38. system code (0xA4060) to LBA 02D1 0xC778B8, 0x1BC970
  39. move MFS reset to LBA 2F7, preferably done as "cart data". 0xD1B918
  40.  
  41. +_+
  42.  
  43. Object table offsets that move!
  44.  
  45. english japanese
  46. 00110000 0F000004 013000F0 00014A5D 00110000 0F000004 013000F0 00014A5D title 1
  47. 00110000 0F014A68 014000F0 000118DB 00110000 0F014A68 014000F0 000118DB title 2
  48. 00110000 0F026348 014000F0 00009E0A 00110000 0F026348 014000F0 00009E0A title 3
  49. 00120000 0F030158 00A00041 000026C0 00120000 0F030158 00A00041 0000291A F-Zero X logo
  50. 00120000 0F033328 00500028 00000389 00120000 0F033998 00500028 00000389 PUSH START
  51. 00140000 0F03281C 00A00020 00000259 00140000 0F032A78 00A00020 00000504 No controller
  52. 00140000 0F032A7C 00A00020 000004EA 00140000 0F032F80 00A00020 000004FF Is the memory expansion pak inserted correctly?
  53. 00140000 0F032F6C 00A00020 000003B7 00140000 0F033484 00A00020 0000050F Did you insert the correct disk?
  54. 00110000 0F0336B8 0080000E 000003EC 00110000 0F033D28 0080000E 000003EC 1998 Nintendo
  55. english japanese pilots
  56. 00110000 0F033AB4 00B400F5 00004AF4 00110000 0F034124 00B400F5 00004AF4
  57. 00110000 0F0385AC 00B400F5 00006604 00110000 0F038C1C 00B400F5 00006604
  58. 00110000 0F03EBB4 00B400F5 00005573 00110000 0F03F224 00B400F5 00005573
  59. 00110000 0F04412C 00B400F5 000076B4 00110000 0F04479C 00B400F5 000076B4
  60. 00110000 0F04B7E4 00B400F5 000067F2 00110000 0F04BE54 00B400F5 000067F2
  61. 00110000 0F051FDC 00B400F5 000063BB 00110000 0F05264C 00B400F5 000063BB
  62. 00110000 0F05839C 00B400F5 00005EE9 00110000 0F058A0C 00B400F5 00005EE9
  63. 00110000 0F05E28C 00B400F5 00007184 00110000 0F05E8FC 00B400F5 00007184
  64. 00110000 0F065414 00B400F5 00005666 00110000 0F065A84 00B400F5 00005666
  65. 00110000 0F06AA80 00B400F5 00005A49 00110000 0F06B0F0 00B400F5 00005A49
  66. 00110000 0F0704D0 00B400F5 000055C1 00110000 0F070B40 00B400F5 000055C1
  67. 00110000 0F075A98 00B400F5 0000594F 00110000 0F076108 00B400F5 0000594F
  68. 00110000 0F07B3EC 00B400F5 00007A7A 00110000 0F07BA5C 00B400F5 00007A7A
  69. 00110000 0F082E6C 00B400F5 00006444 00110000 0F0834DC 00B400F5 00006444
  70. 00110000 0F0892B4 00B400F5 0000623A 00110000 0F089924 00B400F5 0000623A
  71. 00110000 0F08F4F4 00B400F5 00006F78 00110000 0F08FB64 00B400F5 00006F78
  72. 00110000 0F096470 00B400F5 00005C56 00110000 0F096AE0 00B400F5 00005C56
  73. 00110000 0F09C0CC 00B400F5 000059E6 00110000 0F09C73C 00B400F5 000059E6
  74. 00110000 0F0A1AB8 00B400F5 00005B58 00110000 0F0A2128 00B400F5 00005B58
  75. 00110000 0F0A7614 00B400F5 00006B2D 00110000 0F0A7C84 00B400F5 00006B2D
  76. 00110000 0F0AE148 00B400F5 00004E48 00110000 0F0AE7B8 00B400F5 00004E48
  77. 00110000 0F0B2F94 00B400F5 00006D92 00110000 0F0B3604 00B400F5 00006D92
  78. 00110000 0F0B9D2C 00B400F5 00005AB3 00110000 0F0BA39C 00B400F5 00005AB3
  79. 00110000 0F0BF7E4 00B400F5 00005E3B 00110000 0F0BFE54 00B400F5 00005E3B
  80. 00110000 0F0C5624 00B400F5 00006EAC 00110000 0F0C5C94 00B400F5 00006EAC
  81. 00110000 0F0CC4D4 00B400F5 00004D32 00110000 0F0CCB44 00B400F5 00004D32
  82. 00110000 0F0D120C 00B400F5 0000603A 00110000 0F0D187C 00B400F5 0000603A
  83. 00110000 0F0D724C 00B400F5 000060B6 00110000 0F0D78BC 00B400F5 000060B6
  84. 00110000 0F0DD308 00B400F5 00005534 00110000 0F0DD978 00B400F5 00005534
  85. 00110000 0F0E2840 00B400F5 00005DA7 00110000 0F0E2EB0 00B400F5 00005DA7
  86. 00110000 0F0E85EC 00B400F5 00005CB2 00110000 0F0E8C5C 00B400F5 00005CB2
  87. 00110000 0F0EE2A4 00B400F5 00006590 00110000 0F0EE914 00B400F5 00006590
  88. 00110000 0F0F4838 00B400F5 00005022 00110000 0F0F4EA8 00B400F5 00005022
  89. 00110000 0F0F9860 00B400F5 000058F4 00110000 0F0F9ED0 00B400F5 000058F4
  90. english japanese
  91. 00110000 0F0FF164 00280028 0000077F 00110000 0F0FF7D4 00280028 0000077F
  92. 00110000 0F0FF8E8 00280028 000008AF 00110000 0F0FFF58 00280028 000008AF
  93. 00110000 0F10019C 00280028 00000875 00110000 0F10080C 00280028 00000875
  94. 00110000 0F100A18 00280028 00000935 00110000 0F101088 00280028 00000935
  95. 00110000 0F101354 00280028 000008EB 00110000 0F1019C4 00280028 000008EB
  96. 00110000 0F101C44 00280028 00000908 00110000 0F1022B4 00280028 00000908
  97. 00110000 0F102550 00280028 00000919 00110000 0F102BC0 00280028 00000919
  98. 00110000 0F102E70 00280028 00000989 00110000 0F1034E0 00280028 00000989
  99. 00110000 0F103800 00280028 0000082D 00110000 0F103E70 00280028 0000082D
  100. 00110000 0F104034 00280028 000008F8 00110000 0F1046A4 00280028 000008F8
  101. 00110000 0F104930 00280028 00000908 00110000 0F104FA0 00280028 00000908
  102. 00110000 0F10523C 00280028 000008EE 00110000 0F1058AC 00280028 000008EE
  103. 00110000 0F105B30 00280028 000009AD 00110000 0F1061A0 00280028 000009AD
  104. 00110000 0F1064E4 00280028 00000923 00110000 0F106B54 00280028 00000923
  105. 00110000 0F106E0C 00280028 0000093A 00110000 0F10747C 00280028 0000093A
  106. 00110000 0F10774C 00280028 0000097F 00110000 0F107DBC 00280028 0000097F
  107. 00110000 0F1080D0 00280028 00000A3D 00110000 0F108740 00280028 00000A3D
  108. 00110000 0F108B14 00280028 000008AB 00110000 0F109184 00280028 000008AB
  109. 00110000 0F1093C4 00280028 000008A0 00110000 0F109A34 00280028 000008A0
  110. 00110000 0F109C68 00280028 0000089B 00110000 0F10A2D8 00280028 0000089B
  111. 00110000 0F10A508 00280028 000006D1 00110000 0F10AB78 00280028 000006D1
  112. 00110000 0F10ABE0 00280028 00000958 00110000 0F10B250 00280028 00000958
  113. 00110000 0F10B53C 00280028 000008D8 00110000 0F10BBAC 00280028 000008D8
  114. 00110000 0F10BE18 00280028 000008E8 00110000 0F10C488 00280028 000008E8
  115. 00110000 0F10C704 00280028 00000A0A 00110000 0F10CD74 00280028 00000A0A
  116. 00110000 0F10D114 00280028 00000797 00110000 0F10D784 00280028 00000797
  117. 00110000 0F10D8B0 00280028 00000896 00110000 0F10DF20 00280028 00000896
  118. 00110000 0F10E14C 00280028 000008BC 00110000 0F10E7BC 00280028 000008BC
  119. 00110000 0F10EA0C 00280028 00000879 00110000 0F10F07C 00280028 00000879
  120. 00110000 0F10F28C 00280028 000007AB 00110000 0F10F8FC 00280028 000007AB
  121. 00110000 0F10FA3C 00280028 00000859 00110000 0F1100AC 00280028 00000859
  122. 00110000 0F11029C 00280028 00000813 00110000 0F11090C 00280028 00000813
  123. 00110000 0F110AB4 00280028 00000859 00110000 0F111124 00280028 00000859
  124. english japanese pilot names
  125. 00120000 0F111314 00500028 000006B4 00120000 0F111984 00500028 000006B4 Captain Falcon
  126. 00120000 0F1119CC 00500028 00000653 00120000 0F11203C 00500028 00000653
  127. 00120000 0F112024 00500028 000004BD 00120000 0F112694 00500028 000004BD
  128. 00120000 0F1124E8 00500028 00000770 00120000 0F112B58 00500028 00000770
  129. 00120000 0F112C5C 00500028 000005F4 00120000 0F1132CC 00500028 000005F4
  130. 00120000 0F113254 00500028 00000505 00120000 0F1138C4 00500028 00000505
  131. 00120000 0F113760 00500028 0000059A 00120000 0F113DD0 00500028 0000059A
  132. 00120000 0F113D00 00500028 0000054E 00120000 0F114370 00500028 0000052F
  133. 00120000 0F114254 00500028 00000639 00120000 0F1148A4 00500028 00000639
  134. 00120000 0F114894 00500028 00000651 00120000 0F114EE4 00500028 00000651
  135. 00120000 0F114EEC 00500028 000005E1 00120000 0F11553C 00500028 000005E1
  136. 00120000 0F1154D4 00500028 000005A4 00120000 0F115B24 00500028 000005A4
  137. 00120000 0F115A7C 00500028 000005E4 00120000 0F1160CC 00500028 000005E4
  138. 00120000 0F116064 00500028 000005FA 00120000 0F1166B4 00500028 000005FA
  139. 00120000 0F116664 00500028 00000734 00120000 0F116CB4 00500028 00000734
  140. 00120000 0F116D9C 00500028 00000626 00120000 0F1173EC 00500028 00000626
  141. 00120000 0F1173C8 00500028 000005E7 00120000 0F117A18 00500028 000005E7
  142. 00120000 0F1179B4 00500028 0000064D 00120000 0F118004 00500028 0000064D
  143. 00120000 0F11855C 00500028 000005FF 00120000 0F118BAC 00500028 000005FF
  144. 00120000 0F118008 00500028 0000054E 00120000 0F118658 00500028 0000054E
  145. 00120000 0F118B60 00500028 000006C2 00120000 0F1191B0 00500028 000006C2
  146. 00120000 0F119228 00500028 000004CB 00120000 0F119878 00500028 000004CB
  147. 00120000 0F1196F8 00500028 000005ED 00120000 0F119D48 00500028 000005ED
  148. 00120000 0F119CEC 00500028 000007A4 00120000 0F11A33C 00500028 000007A4
  149. 00120000 0F11A494 00500028 000004E6 00120000 0F11AAE4 00500028 000004E6
  150. 00120000 0F11A980 00500028 00000465 00120000 0F11AFD0 00500028 00000465
  151. 00120000 0F11ADEC 00500028 0000050A 00120000 0F11B43C 00500028 0000050A
  152. 00120000 0F11B2FC 00500028 000006BF 00120000 0F11B94C 00500028 000006BF
  153. 00120000 0F11CAFC 00500028 00000468 00120000 0F11D14C 00500028 000005A2
  154. 00120000 0F11CF68 00500028 00000454 00120000 0F11D6F4 00500028 0000068A
  155. english japanese
  156. 00040000 0F11D3C8 00A00018 00000000 00040000 0F11DD88 00A00018 00000000 SELECT MACHINE
  157. 00110000 0F11B9C0 00280028 0000019E 00110000 0F11C010 00280028 0000019E 1P
  158. 00110000 0F11BB64 00280028 0000019C 00110000 0F11C1B4 00280028 0000019C 2P
  159. 00110000 0F11BD04 00280028 0000019A 00110000 0F11C354 00280028 0000019A 3P
  160. 00110000 0F11BEA4 00280028 0000019A 00110000 0F11C4F4 00280028 0000019A 4P
  161. english japanese
  162. 00110000 0F11C044 00280028 00000277 00110000 0F11C694 00280028 00000277 starburst
  163. 00110000 0F11C2C0 00800040 00000837 00110000 0F11C910 00800040 00000837 scale
  164. 00110000 0F11DB4C 00800040 000007E9 00110000 0F11E50C 00800040 00000962 acceleration<->max speed
  165. 00110000 0F11E33C 00800040 000007E4 00110000 0F11EE74 00800040 000008CB body/boost/grip
  166. 00120000 0F11EB24 00500028 000004C2 00120000 0F11F744 00500028 000004C2 MP scale
  167. 00120000 0F11EFEC 00500028 0000033E 00120000 0F11FC0C 00500028 0000049A MP acceleration<->max speed
  168. 00110000 0F11F330 00500028 0000035E 00110000 0F1200AC 00500028 0000051F MP body/boost/grip
  169. 00110000 0F11F694 00100010 00000066 00110000 0F1205D0 00100010 00000066 arrow for stats slider
  170. english japanese
  171. 00110000 0F11F700 00140008 0000005E 00110000 0F12063C 00140008 0000005E BOOST
  172. 00110000 0F11F764 00100008 00000046 00110000 0F1206A0 00100008 00000046 BODY
  173. 00110000 0F11F7B0 00100008 0000004F 00110000 0F1206EC 00100008 0000004F GRIP
  174. english japanese
  175. 00110000 0F11F804 00100010 00000092 00110000 0F120740 00100010 00000092 novice Jack Cup trophy
  176. 00110000 0F11F89C 00100010 00000093 00110000 0F1207D8 00100010 00000093 novice Queen Cup trophy
  177. 00110000 0F11F934 00100010 00000098 00110000 0F120870 00100010 00000098 novice King Cup trophy
  178. 00110000 0F11F9D0 00100010 00000091 00110000 0F12090C 00100010 00000091 novice Joker Cup trophy
  179. 00110000 0F11FA68 00100010 00000097 00110000 0F1209A4 00100010 00000097 novice X Cup trophy
  180. 00110000 0F11FB04 00100010 000000A6 00110000 0F120A40 00100010 000000A6 standard Jack Cup trophy
  181. 00110000 0F11FBB0 00100010 000000A3 00110000 0F120AEC 00100010 000000A3 standard Queen Cup trophy
  182. 00110000 0F11FC58 00100010 000000B4 00110000 0F120B94 00100010 000000B4 standard King Cup trophy
  183. 00110000 0F11FD10 00100010 0000009C 00110000 0F120C4C 00100010 0000009C standard Joker Cup trophy
  184. 00110000 0F11FDB0 00100010 000000A2 00110000 0F120CEC 00100010 000000A2 standard X Cup trophy
  185. 00110000 0F11FE58 00100010 000000AA 00110000 0F120D94 00100010 000000AA expert Jack Cup trophy
  186. 00110000 0F11FF08 00100010 000000B1 00110000 0F120E44 00100010 000000B1 expert Queen Cup trophy
  187. 00110000 0F11FFC0 00100010 000000B6 00110000 0F120EFC 00100010 000000B6 expert King Cup trophy
  188. 00110000 0F12007C 00100010 000000A8 00110000 0F120FB8 00100010 000000A8 expert Joker Cup trophy
  189. 00110000 0F120128 00100010 00000097 00110000 0F121064 00100010 00000097 expert X Cup trophy
  190. 00110000 0F1201C4 00100010 000000CB 00110000 0F121100 00100010 000000CB master Jack Cup trophy
  191. 00110000 0F120294 00100010 000000D4 00110000 0F1211D0 00100010 000000D4 master Queen Cup trophy
  192. 00110000 0F12036C 00100010 000000DD 00110000 0F1212A8 00100010 000000DD master King Cup trophy
  193. 00110000 0F120450 00100010 000000C8 00110000 0F12138C 00100010 000000C8 master Joker Cup trophy
  194. 00110000 0F12051C 00100010 000000BF 00110000 0F121458 00100010 000000BF master X Cup trophy
  195. 00110000 0F1205E0 00100010 00000059 00110000 0F12151C 00100010 00000059 placeholder
  196. english japanese pink letters from name entry
  197. 00110000 0F120644 00100010 000000D7 00110000 0F121584 00100010 000000D7 A
  198. 00110000 0F120720 00100010 000000D6 00110000 0F121660 00100010 000000D6 B
  199. 00110000 0F1207FC 00100010 000000DB 00110000 0F12173C 00100010 000000DB C
  200. 00110000 0F1208DC 00100010 000000DD 00110000 0F12181C 00100010 000000DD D
  201. 00110000 0F1209C0 00100010 000000BC 00110000 0F121900 00100010 000000BC E
  202. 00110000 0F120A80 00100010 000000B5 00110000 0F1219C0 00100010 000000B5 F
  203. 00110000 0F120B3C 00100010 000000F2 00110000 0F121A7C 00100010 000000F2 G
  204. 00110000 0F120C34 00100010 000000C5 00110000 0F121B74 00100010 000000C5 H
  205. 00110000 0F120D00 00080010 0000008E 00110000 0F121C40 00080010 0000008E I
  206. 00110000 0F120D94 00100010 000000CF 00110000 0F121CD4 00100010 000000CF J
  207. 00110000 0F120E68 00100010 000000EE 00110000 0F121DA8 00100010 000000EE K
  208. 00110000 0F120F5C 00100010 000000AC 00110000 0F121E9C 00100010 000000AC L
  209. 00110000 0F12100C 00100010 0000010B 00110000 0F121F4C 00100010 0000010B M
  210. 00110000 0F12111C 00100010 000000F3 00110000 0F12205C 00100010 000000F3 N
  211. 00110000 0F121214 00100010 000000E8 00110000 0F122154 00100010 000000E8 O
  212. 00110000 0F121300 00100010 000000C6 00110000 0F122240 00100010 000000C6 P
  213. 00110000 0F1213CC 00100010 00000101 00110000 0F12230C 00100010 00000101 Q
  214. 00110000 0F1214D4 00100010 000000DA 00110000 0F122414 00100010 000000DA R
  215. 00110000 0F1215B4 00100010 000000DF 00110000 0F1224F4 00100010 000000DF S
  216. 00110000 0F121698 00100010 000000B9 00110000 0F1225D8 00100010 000000B9 T
  217. 00110000 0F121758 00100010 000000E4 00110000 0F122698 00100010 000000E4 U
  218. 00110000 0F121840 00100010 000000D6 00110000 0F122780 00100010 000000D6 V
  219. 00110000 0F12191C 00100010 00000100 00110000 0F12285C 00100010 00000100 W
  220. 00110000 0F121A20 00100010 000000D8 00110000 0F122960 00100010 000000D8 X
  221. 00110000 0F121AFC 00100010 000000D4 00110000 0F122A3C 00100010 000000D4 Y
  222. 00110000 0F121BD4 00100010 000000AB 00110000 0F122B14 00100010 000000AB Z
  223. 00110000 0F121C84 00080010 00000070 00110000 0F122BC4 00080010 00000070
  224. 00110000 0F121CF8 00080010 00000056 00110000 0F122C38 00080010 00000056
  225. 00110000 0F121D54 00080010 0000005C 00110000 0F122C94 00080010 0000005C
  226. 00110000 0F121DB4 00080010 00000080 00110000 0F122CF4 00080010 00000080
  227. 00110000 0F122108 00100010 000000DA 00110000 0F123048 00100010 000000DA
  228. 00110000 0F1221E8 00080010 0000008E 00110000 0F123128 00080010 0000008E
  229. 00110000 0F12227C 00100010 000000DB 00110000 0F1231BC 00100010 000000DB
  230. 00110000 0F12235C 00100010 000000E4 00110000 0F12329C 00100010 000000E4
  231. 00110000 0F122444 00100010 000000C3 00110000 0F123384 00100010 000000C3
  232. 00110000 0F12250C 00100010 000000D8 00110000 0F12344C 00100010 000000D8
  233. 00110000 0F1225E8 00100010 000000DB 00110000 0F123528 00100010 000000DB
  234. 00110000 0F1226C8 00100010 000000B5 00110000 0F123608 00100010 000000B5
  235. 00110000 0F122784 00100010 000000F4 00110000 0F1236C4 00100010 000000F4
  236. 00110000 0F12287C 00100010 000000EB 00110000 0F1237BC 00100010 000000EB
  237. 00110000 0F121E38 00100010 00000056 00110000 0F122D78 00100010 00000056
  238. 00110000 0F121E94 00100010 00000097 00110000 0F122DD4 00100010 00000097
  239. 00110000 0F121F30 00100010 0000006A 00110000 0F122E70 00100010 0000006A
  240. 00110000 0F121FA0 00100010 0000005E 00110000 0F122EE0 00100010 0000005E
  241. 00110000 0F122004 00100010 000000FD 00110000 0F122F44 00100010 000000FD
  242. english japanese
  243. 00110000 0F12296C 00100010 000000B3 00110000 0F1238AC 00100010 000000B3 A
  244. 00110000 0F122A24 00100010 000000BF 00110000 0F123964 00100010 000000BF B
  245. 00110000 0F122AE8 00100010 000000B5 00110000 0F123A28 00100010 000000B5 C
  246. 00110000 0F122BA4 00100010 000000C9 00110000 0F123AE4 00100010 000000C9 D
  247. 00110000 0F122C74 00100010 00000097 00110000 0F123BB4 00100010 00000097 E
  248. english japanese
  249. 00110000 0F122D10 00080010 000000CE 00110000 0F123C50 00080010 000000CE digital 0
  250. 00110000 0F122DE4 00040010 0000005B 00110000 0F123D24 00040010 0000005B digital 1
  251. 00110000 0F122E44 00080010 00000082 00110000 0F123D84 00080010 00000082 digital 2
  252. 00110000 0F122ECC 00080010 0000007E 00110000 0F123E0C 00080010 0000007E digital 3
  253. 00110000 0F122F50 00080010 0000008F 00110000 0F123E90 00080010 0000008F digital 4
  254. 00110000 0F122FE4 00080010 0000007F 00110000 0F123F24 00080010 0000007F digital 5
  255. 00110000 0F123068 00080010 00000096 00110000 0F123FA8 00080010 00000096 digital 6
  256. 00110000 0F123104 00080010 0000006D 00110000 0F124044 00080010 0000006D digital 7
  257. 00110000 0F123178 00080010 000000AA 00110000 0F1240B8 00080010 000000AA digital 8
  258. 00110000 0F123228 00080010 00000096 00110000 0F124168 00080010 00000096 digital 9
  259. english japanese small font
  260. 00110000 0F1232C4 00080008 0000003A 00110000 0F124204 00080008 0000003A A
  261. 00110000 0F123304 00080008 00000040 00110000 0F124244 00080008 00000040 B
  262. 00110000 0F123348 00080008 0000003F 00110000 0F124288 00080008 0000003F C
  263. 00110000 0F12338C 00080008 0000003D 00110000 0F1242CC 00080008 0000003D D
  264. 00110000 0F1233D0 00080008 00000037 00110000 0F124310 00080008 00000037 E
  265. 00110000 0F12340C 00080008 00000035 00110000 0F12434C 00080008 00000035 F
  266. 00110000 0F123448 00080008 00000041 00110000 0F124388 00080008 00000041 G
  267. 00110000 0F123490 00080008 0000003A 00110000 0F1243D0 00080008 0000003A H
  268. 00110000 0F1234D0 00040008 0000002D 00110000 0F124410 00040008 0000002D I
  269. 00110000 0F123504 00080008 00000039 00110000 0F124444 00080008 00000039 J
  270. 00110000 0F123544 00080008 0000003B 00110000 0F124484 00080008 0000003B K
  271. 00110000 0F123584 00080008 00000035 00110000 0F1244C4 00080008 00000035 L
  272. 00110000 0F1235C0 00080008 0000003A 00110000 0F124500 00080008 0000003A M
  273. 00110000 0F123600 00080008 0000003F 00110000 0F124540 00080008 0000003F N
  274. 00110000 0F123644 00080008 0000003D 00110000 0F124584 00080008 0000003D O
  275. 00110000 0F123688 00080008 0000003A 00110000 0F1245C8 00080008 0000003A P
  276. 00110000 0F1236C8 00080008 00000041 00110000 0F124608 00080008 00000041 Q
  277. 00110000 0F123710 00080008 0000003C 00110000 0F124650 00080008 0000003C R
  278. 00110000 0F123750 00080008 00000040 00110000 0F124690 00080008 00000040 S
  279. 00110000 0F123794 00080008 00000035 00110000 0F1246D4 00080008 00000035 T
  280. 00110000 0F1237D0 00080008 0000003D 00110000 0F124710 00080008 0000003D U
  281. 00110000 0F123814 00080008 0000003D 00110000 0F124754 00080008 0000003D V
  282. 00110000 0F123858 00080008 00000040 00110000 0F124798 00080008 00000040 W
  283. 00110000 0F12389C 00080008 00000049 00110000 0F1247DC 00080008 00000049 X
  284. 00110000 0F1238EC 00080008 00000037 00110000 0F12482C 00080008 00000037 Y
  285. 00110000 0F123928 00080008 00000035 00110000 0F124868 00080008 00000035 Z
  286. 00110000 0F123964 00080008 0000002E 00110000 0F1248A4 00080008 0000002E ,
  287. 00110000 0F123998 00080008 0000002D 00110000 0F1248D8 00080008 0000002D .
  288. 00110000 0F1239CC 00080008 00000031 00110000 0F12490C 00080008 00000031 '
  289. 00110000 0F123A04 00080008 00000026 00110000 0F124944 00080008 00000026 -
  290. 00110000 0F123A30 00080008 0000004D 00110000 0F124970 00080008 0000004D kg
  291. 00110000 0F123A84 00080008 0000003F 00110000 0F1249C4 00080008 0000003F &
  292. 00110000 0F123AC8 00080008 00000037 00110000 0F124A08 00080008 00000037 0
  293. 00110000 0F123B04 00080008 00000037 00110000 0F124A44 00080008 00000037 1
  294. 00110000 0F123B40 00080008 0000003B 00110000 0F124A80 00080008 0000003B 2
  295. 00110000 0F123B80 00080008 00000039 00110000 0F124AC0 00080008 00000039 3
  296. 00110000 0F123BC0 00080008 0000003D 00110000 0F124B00 00080008 0000003D 4
  297. 00110000 0F123C04 00080008 00000039 00110000 0F124B44 00080008 00000039 5
  298. 00110000 0F123C44 00080008 0000003C 00110000 0F124B84 00080008 0000003C 6
  299. 00110000 0F123C84 00080008 00000031 00110000 0F124BC4 00080008 00000031 7
  300. 00110000 0F123CBC 00080008 00000038 00110000 0F124BFC 00080008 00000038 8
  301. 00110000 0F123CF8 00080008 0000003B 00110000 0F124C38 00080008 0000003B 9
  302. english japanese course name font
  303. 00040000 0F123D34 00100010 00000000 00040000 0F124C74 00100010 00000000 A
  304. 00040000 0F123DB4 00100010 00000000 00040000 0F124CF4 00100010 00000000 B
  305. 00040000 0F123E34 00100010 00000000 00040000 0F124D74 00100010 00000000 C
  306. 00040000 0F123EB4 00100010 00000000 00040000 0F124DF4 00100010 00000000 D
  307. 00040000 0F123F34 00100010 00000000 00040000 0F124E74 00100010 00000000 E
  308. 00040000 0F123FB4 00100010 00000000 00040000 0F124EF4 00100010 00000000 F
  309. 00040000 0F124034 00100010 00000000 00040000 0F124F74 00100010 00000000 G
  310. 00040000 0F1240B4 00100010 00000000 00040000 0F124FF4 00100010 00000000 H
  311. 00040000 0F124134 00100010 00000000 00040000 0F125074 00100010 00000000 I
  312. 00040000 0F1241B4 00100010 00000000 00040000 0F1250F4 00100010 00000000 J
  313. 00040000 0F124234 00100010 00000000 00040000 0F125174 00100010 00000000 K
  314. 00040000 0F1242B4 00100010 00000000 00040000 0F1251F4 00100010 00000000 L
  315. 00040000 0F124334 00100010 00000000 00040000 0F125274 00100010 00000000 M
  316. 00040000 0F1243B4 00100010 00000000 00040000 0F1252F4 00100010 00000000 N
  317. 00040000 0F124434 00100010 00000000 00040000 0F125374 00100010 00000000 O
  318. 00040000 0F1244B4 00100010 00000000 00040000 0F1253F4 00100010 00000000 P
  319. 00040000 0F124534 00100010 00000000 00040000 0F125474 00100010 00000000 Q
  320. 00040000 0F1245B4 00100010 00000000 00040000 0F1254F4 00100010 00000000 R
  321. 00040000 0F124634 00100010 00000000 00040000 0F125574 00100010 00000000 S
  322. 00040000 0F1246B4 00100010 00000000 00040000 0F1255F4 00100010 00000000 T
  323. 00040000 0F124734 00100010 00000000 00040000 0F125674 00100010 00000000 U
  324. 00040000 0F1247B4 00100010 00000000 00040000 0F1256F4 00100010 00000000 V
  325. 00040000 0F124834 00100010 00000000 00040000 0F125774 00100010 00000000 W
  326. 00040000 0F1248B4 00100010 00000000 00040000 0F1257F4 00100010 00000000 X
  327. 00040000 0F124934 00100010 00000000 00040000 0F125874 00100010 00000000 Y
  328. 00040000 0F1249B4 00100010 00000000 00040000 0F1258F4 00100010 00000000 Z
  329. 00040000 0F124A34 00100010 00000000 00040000 0F125974 00100010 00000000 alpha
  330. 00040000 0F124AB4 00100010 00000000 00040000 0F1259F4 00100010 00000000 beta
  331. 00040000 0F124B34 00100010 00000000 00040000 0F125A74 00100010 00000000 gamma
  332. 00040000 0F124BB4 00100010 00000000 00040000 0F125AF4 00100010 00000000 '
  333. 00040000 0F124C34 00100010 00000000 00040000 0F125B74 00100010 00000000 ellipsis
  334. 00040000 0F124CB4 00100010 00000000 00040000 0F125BF4 00100010 00000000 :
  335. 00040000 0F124D34 00100010 00000000 00040000 0F125C74 00100010 00000000 .
  336. 00040000 0F124DB4 00100010 00000000 00040000 0F125CF4 00100010 00000000 &
  337. 00040000 0F124E34 00100010 00000000 00040000 0F125D74 00100010 00000000 ,
  338. 00040000 0F124EB4 00100010 00000000 00040000 0F125DF4 00100010 00000000 -
  339. 00040000 0F124F34 00100010 00000000 00040000 0F125E74 00100010 00000000 0
  340. 00040000 0F124FB4 00100010 00000000 00040000 0F125EF4 00100010 00000000 1
  341. 00040000 0F125034 00100010 00000000 00040000 0F125F74 00100010 00000000 2
  342. 00040000 0F1250B4 00100010 00000000 00040000 0F125FF4 00100010 00000000 3
  343. 00040000 0F125134 00100010 00000000 00040000 0F126074 00100010 00000000 4
  344. 00040000 0F1251B4 00100010 00000000 00040000 0F1260F4 00100010 00000000 5
  345. 00040000 0F125234 00100010 00000000 00040000 0F126174 00100010 00000000 6
  346. 00040000 0F1252B4 00100010 00000000 00040000 0F1261F4 00100010 00000000 7
  347. 00040000 0F125334 00100010 00000000 00040000 0F126274 00100010 00000000 8
  348. 00040000 0F1253B4 00100010 00000000 00040000 0F1262F4 00100010 00000000 9
  349. english japanese
  350. 00040000 0F125434 00080008 00000000 00040000 0F126374 00080008 00000000 A
  351. 00040000 0F125474 00080008 00000000 00040000 0F1263B4 00080008 00000000 D
  352. 00040000 0F1254B4 00080008 00000000 00040000 0F1263F4 00080008 00000000 E
  353. 00040000 0F1254F4 00080008 00000000 00040000 0F126434 00080008 00000000 M
  354. 00040000 0F125534 00080008 00000000 00040000 0F126474 00080008 00000000 &
  355. 00040000 0F125BF4 00080008 00000000 00040000 0F1264B4 00080008 00000000
  356. 00040000 0F125C34 00080008 00000000 00040000 0F1264F4 00080008 00000000
  357. 00040000 0F125C74 00080008 00000000 00040000 0F126534 00080008 00000000
  358. 00040000 0F125CB4 00080008 00000000 00040000 0F126574 00080008 00000000
  359. 00040000 0F125CF4 00080008 00000000 00040000 0F1265B4 00080008 00000000
  360. 00040000 0F125D34 00080008 00000000 00040000 0F1265F4 00080008 00000000
  361. 00040000 0F125D74 00080008 00000000 00040000 0F126634 00080008 00000000
  362. 00040000 0F125DB4 00080008 00000000 00040000 0F126674 00080008 00000000
  363. 00040000 0F125DF4 00080008 00000000 00040000 0F1266B4 00080008 00000000
  364. 00040000 0F125E34 00080008 00000000 00040000 0F1266F4 00080008 00000000
  365. 00040000 0F125E74 00080008 00000000 00040000 0F126734 00080008 00000000
  366. 00040000 0F125EB4 00080008 00000000 00040000 0F126774 00080008 00000000
  367. 00040000 0F125EF4 00080008 00000000 00040000 0F1267B4 00080008 00000000
  368. 00040000 0F125F34 00080008 00000000 00040000 0F1267F4 00080008 00000000
  369. 00040000 0F125F74 00080008 00000000 00040000 0F126834 00080008 00000000
  370. 00040000 0F125FB4 00080008 00000000 00040000 0F126874 00080008 00000000
  371. 00040000 0F125FF4 00080008 00000000 00040000 0F1268B4 00080008 00000000
  372. 00040000 0F126034 00080008 00000000 00040000 0F1268F4 00080008 00000000
  373. 00040000 0F1260B4 00080008 00000000 00040000 0F126974 00080008 00000000
  374. 00040000 0F1260F4 00080008 00000000 00040000 0F1269B4 00080008 00000000
  375. 00040000 0F126074 00080008 00000000 00040000 0F126934 00080008 00000000
  376. 00040000 0F126134 00080008 00000000 00040000 0F1269F4 00080008 00000000
  377. 00040000 0F126174 00080008 00000000 00040000 0F126A34 00080008 00000000
  378. 00040000 0F1261B4 00080008 00000000 00040000 0F126A74 00080008 00000000
  379. 00040000 0F1261F4 00080008 00000000 00040000 0F126AB4 00080008 00000000
  380. 00040000 0F126234 00080008 00000000 00040000 0F126AF4 00080008 00000000
  381. 00040000 0F126274 00080008 00000000 00040000 0F126B34 00080008 00000000
  382. 00040000 0F1262B4 00080008 00000000 00040000 0F126B74 00080008 00000000
  383. 00040000 0F1262F4 00080008 00000000 00040000 0F126BB4 00080008 00000000
  384. 00040000 0F126334 00080008 00000000 00040000 0F126BF4 00080008 00000000
  385. 00040000 0F126374 00080008 00000000 00040000 0F126C34 00080008 00000000
  386. 00040000 0F1263B4 00080008 00000000 00040000 0F126C74 00080008 00000000
  387. 00040000 0F1263F4 00080008 00000000 00040000 0F126CB4 00080008 00000000
  388. 00040000 0F126434 00080008 00000000 00040000 0F126CF4 00080008 00000000
  389. 00040000 0F126474 00080008 00000000 00040000 0F126D34 00080008 00000000
  390. 00040000 0F1264B4 00080008 00000000 00040000 0F126D74 00080008 00000000
  391. 00040000 0F1264F4 00080008 00000000 00040000 0F126DB4 00080008 00000000
  392. 00040000 0F126534 00080008 00000000 00040000 0F126DF4 00080008 00000000
  393. 00040000 0F126574 00080008 00000000 00040000 0F126E34 00080008 00000000
  394. 00040000 0F1265B4 00080008 00000000 00040000 0F126E74 00080008 00000000
  395. 00040000 0F1265F4 00080008 00000000 00040000 0F126EB4 00080008 00000000
  396. 00040000 0F126634 00080008 00000000 00040000 0F126EF4 00080008 00000000
  397. 00040000 0F126674 00080008 00000000 00040000 0F126F34 00080008 00000000
  398. 00040000 0F1266B4 00080008 00000000 00040000 0F126F74 00080008 00000000
  399. 00040000 0F1266F4 00080008 00000000 00040000 0F126FB4 00080008 00000000
  400. 00040000 0F126734 00080008 00000000 00040000 0F126FF4 00080008 00000000
  401. 00040000 0F126774 00080008 00000000 00040000 0F127034 00080008 00000000
  402. 00040000 0F1267B4 00080008 00000000 00040000 0F127074 00080008 00000000
  403. 00040000 0F1267F4 00080008 00000000 00040000 0F1270B4 00080008 00000000
  404. 00040000 0F126834 00080008 00000000 00040000 0F1270F4 00080008 00000000
  405. 00040000 0F126874 00080008 00000000 00040000 0F127134 00080008 00000000
  406. 00040000 0F1268B4 00080008 00000000 00040000 0F127174 00080008 00000000
  407. 00040000 0F1268F4 00080008 00000000 00040000 0F1271B4 00080008 00000000
  408. 00040000 0F126934 00080008 00000000 00040000 0F1271F4 00080008 00000000
  409. 00040000 0F126974 00080008 00000000 00040000 0F127234 00080008 00000000
  410. 00040000 0F1269B4 00080008 00000000 00040000 0F127274 00080008 00000000
  411. 00040000 0F1269F4 00080008 00000000 00040000 0F1272B4 00080008 00000000
  412. 00040000 0F126A34 00080008 00000000 00040000 0F1272F4 00080008 00000000
  413. 00040000 0F126A74 00080008 00000000 00040000 0F127334 00080008 00000000
  414. 00040000 0F126AB4 00080008 00000000 00040000 0F127374 00080008 00000000
  415. 00040000 0F126AF4 00080008 00000000 00040000 0F1273B4 00080008 00000000
  416. 00040000 0F126B34 00080008 00000000 00040000 0F1273F4 00080008 00000000
  417. 00040000 0F126B74 00080008 00000000 00040000 0F127434 00080008 00000000
  418. 00040000 0F126BB4 00080008 00000000 00040000 0F127474 00080008 00000000
  419. 00040000 0F126BF4 00080008 00000000 00040000 0F1274B4 00080008 00000000
  420. 00040000 0F126C34 00080008 00000000 00040000 0F1274F4 00080008 00000000
  421. 00040000 0F126C74 00080008 00000000 00040000 0F127534 00080008 00000000
  422. 00040000 0F126CB4 00080008 00000000 00040000 0F127574 00080008 00000000
  423. 00040000 0F126CF4 00080008 00000000 00040000 0F1275B4 00080008 00000000
  424. 00040000 0F126D34 00080008 00000000 00040000 0F1275F4 00080008 00000000
  425. 00040000 0F126D74 00080008 00000000 00040000 0F127634 00080008 00000000
  426. 00040000 0F126DB4 00080008 00000000 00040000 0F127674 00080008 00000000
  427. 00040000 0F126DF4 00080008 00000000 00040000 0F1276B4 00080008 00000000
  428. 00040000 0F126E34 00080008 00000000 00040000 0F1276F4 00080008 00000000
  429. 00040000 0F126E74 00080008 00000000 00040000 0F127734 00080008 00000000
  430. 00040000 0F126EB4 00080008 00000000 00040000 0F127774 00080008 00000000
  431. 00040000 0F126EF4 00080008 00000000 00040000 0F1277B4 00080008 00000000
  432. 00040000 0F126F34 00080008 00000000 00040000 0F1277F4 00080008 00000000
  433. 00040000 0F126F74 00080008 00000000 00040000 0F127834 00080008 00000000
  434. 00040000 0F126FB4 00080008 00000000 00040000 0F127874 00080008 00000000 0
  435. 00040000 0F126FF4 00080008 00000000 00040000 0F1278B4 00080008 00000000 1
  436. 00040000 0F127034 00080008 00000000 00040000 0F1278F4 00080008 00000000 2
  437. 00040000 0F127074 00080008 00000000 00040000 0F127934 00080008 00000000 3
  438. 00040000 0F1270B4 00080008 00000000 00040000 0F127974 00080008 00000000 4
  439. 00040000 0F1270F4 00080008 00000000 00040000 0F1279B4 00080008 00000000 5
  440. 00040000 0F127134 00080008 00000000 00040000 0F1279F4 00080008 00000000 6
  441. 00040000 0F127174 00080008 00000000 00040000 0F127A34 00080008 00000000 7
  442. 00040000 0F1271B4 00080008 00000000 00040000 0F127A74 00080008 00000000 8
  443. 00040000 0F1271F4 00080008 00000000 00040000 0F127AB4 00080008 00000000 9
  444. 00040000 0F127234 00080008 00000000 00040000 0F127AF4 00080008 00000000 '
  445. 00040000 0F127274 00080008 00000000 00040000 0F127B34 00080008 00000000 "
  446. 00040000 0F127374 00080008 00000000 00040000 0F127C34 00080008 00000000 ST
  447. 00040000 0F1273B4 00080008 00000000 00040000 0F127C74 00080008 00000000 ND
  448. 00040000 0F1273F4 00080008 00000000 00040000 0F127CB4 00080008 00000000 RD
  449. 00040000 0F127434 00080008 00000000 00040000 0F127CF4 00080008 00000000 TH
  450. 00040000 0F1272B4 00080008 00000000 00040000 0F127B74 00080008 00000000 +
  451. 00040000 0F1272F4 00080008 00000000 00040000 0F127BB4 00080008 00000000 -
  452. 00040000 0F127334 00100008 00000000 00040000 0F127BF4 00100008 00000000 PTS.
  453. only in english:
  454. 00040000 0F125574 00080008 00000000 B
  455. 00040000 0F1255B4 00080008 00000000 C
  456. 00040000 0F1255F4 00080008 00000000 F
  457. 00040000 0F125634 00080008 00000000 G
  458. 00040000 0F125674 00080008 00000000 H
  459. 00040000 0F1256B4 00080008 00000000 I
  460. 00040000 0F1256F4 00080008 00000000 J
  461. 00040000 0F125734 00080008 00000000 K
  462. 00040000 0F125774 00080008 00000000 L
  463. 00040000 0F1257B4 00080008 00000000 N
  464. 00040000 0F1257F4 00080008 00000000 O
  465. 00040000 0F125834 00080008 00000000 P
  466. 00040000 0F125874 00080008 00000000 Q
  467. 00040000 0F1258B4 00080008 00000000 R
  468. 00040000 0F1258F4 00080008 00000000 S
  469. 00040000 0F125934 00080008 00000000 T
  470. 00040000 0F125974 00080008 00000000 U
  471. 00040000 0F1259B4 00080008 00000000 V
  472. 00040000 0F1259F4 00080008 00000000 W
  473. 00040000 0F125A34 00080008 00000000 X
  474. 00040000 0F125A74 00080008 00000000 Y
  475. 00040000 0F125AB4 00080008 00000000 Z
  476. 00040000 0F125AF4 00080008 00000000 c
  477. 00040000 0F125B34 00080008 00000000 r
  478. 00040000 0F125B74 00080008 00000000 s
  479. 00040000 0F125BB4 00080008 00000000 ,
  480. english japanese
  481. 00040000 0F127474 00100010 00000000 00040000 0F127D34 00100010 00000000 0
  482. 00040000 0F1274F4 00100010 00000000 00040000 0F127DB4 00100010 00000000 1
  483. 00040000 0F127574 00100010 00000000 00040000 0F127E34 00100010 00000000 2
  484. 00040000 0F1275F4 00100010 00000000 00040000 0F127EB4 00100010 00000000 3
  485. 00040000 0F127674 00100010 00000000 00040000 0F127F34 00100010 00000000 4
  486. 00040000 0F1276F4 00100010 00000000 00040000 0F127FB4 00100010 00000000 5
  487. 00040000 0F127774 00100010 00000000 00040000 0F128034 00100010 00000000 6
  488. 00040000 0F1277F4 00100010 00000000 00040000 0F1280B4 00100010 00000000 7
  489. 00040000 0F127874 00100010 00000000 00040000 0F128134 00100010 00000000 8
  490. 00040000 0F1278F4 00100010 00000000 00040000 0F1281B4 00100010 00000000 9
  491. 00040000 0F127974 00100010 00000000 00040000 0F128234 00100010 00000000 V
  492. 00040000 0F1279F4 00100010 00000000 00040000 0F1282B4 00100010 00000000 (
  493. 00040000 0F127A74 00100010 00000000 00040000 0F128334 00100010 00000000 )
  494. 00040000 0F127AF4 00100010 00000000 00040000 0F1283B4 00100010 00000000 st
  495. 00040000 0F127B74 00100010 00000000 00040000 0F128434 00100010 00000000 nd
  496. 00040000 0F127BF4 00100010 00000000 00040000 0F1284B4 00100010 00000000 rd
  497. 00040000 0F127C74 00100010 00000000 00040000 0F128534 00100010 00000000 th
  498. 00040000 0F127CF4 00100010 00000000 00040000 0F1285B4 00100010 00000000 +
  499. 00040000 0F127DF4 00100010 00000000 00040000 0F1286B4 00100010 00000000 up arrow
  500. 00040000 0F127E74 00100010 00000000 00040000 0F128734 00100010 00000000 down arrow
  501. 00040000 0F1284CC 00100010 00000000 00040000 0F128D0C 00100010 00000000 right arrow
  502. 00140000 0F127D78 00200010 0000007B 00140000 0F128638 00200010 0000007B pts.
  503. 00140000 0F127EF8 00500010 0000016C 00140000 0F1287B8 00500010 000000F7 Player
  504. 00140000 0F128068 00500010 000001C8 00140000 0F1288B4 00500010 00000133 Computer
  505. 00140000 0F128234 00600010 000001D2 00140000 0F1289EC 00600010 000001DF Select Course
  506. 00140000 0F12840C 00200010 000000C0 00140000 0F128BD0 00300010 0000013B Quit
  507. english japanese
  508. 00040000 0F128A4C 00100010 00000000 00040000 0F12928C 00100010 00000000 A
  509. 00040000 0F128ACC 00100010 00000000 00040000 0F12930C 00100010 00000000 B
  510. 00040000 0F128B4C 00100010 00000000 00040000 0F12938C 00100010 00000000 C
  511. 00040000 0F128BCC 00100010 00000000 00040000 0F12940C 00100010 00000000 D
  512. 00040000 0F128C4C 00100010 00000000 00040000 0F12948C 00100010 00000000 E
  513. 00040000 0F128CCC 00100010 00000000 00040000 0F12950C 00100010 00000000 F
  514. 00040000 0F128D4C 00100010 00000000 00040000 0F12958C 00100010 00000000 G
  515. 00040000 0F128DCC 00100010 00000000 00040000 0F12960C 00100010 00000000 H
  516. 00040000 0F128E4C 00100010 00000000 00040000 0F12968C 00100010 00000000 I
  517. 00040000 0F128ECC 00100010 00000000 00040000 0F12970C 00100010 00000000 J
  518. 00040000 0F128F4C 00100010 00000000 00040000 0F12978C 00100010 00000000 K
  519. 00040000 0F128FCC 00100010 00000000 00040000 0F12980C 00100010 00000000 L
  520. 00040000 0F12904C 00100010 00000000 00040000 0F12988C 00100010 00000000 M
  521. 00040000 0F1290CC 00100010 00000000 00040000 0F12990C 00100010 00000000 N
  522. 00040000 0F12914C 00100010 00000000 00040000 0F12998C 00100010 00000000 O
  523. 00040000 0F1291CC 00100010 00000000 00040000 0F129A0C 00100010 00000000 P
  524. 00040000 0F12924C 00100010 00000000 00040000 0F129A8C 00100010 00000000 Q
  525. 00040000 0F1292CC 00100010 00000000 00040000 0F129B0C 00100010 00000000 R
  526. 00040000 0F12934C 00100010 00000000 00040000 0F129B8C 00100010 00000000 S
  527. 00040000 0F1293CC 00100010 00000000 00040000 0F129C0C 00100010 00000000 T
  528. 00040000 0F12944C 00100010 00000000 00040000 0F129C8C 00100010 00000000 U
  529. 00040000 0F1294CC 00100010 00000000 00040000 0F129D0C 00100010 00000000 V
  530. 00040000 0F12954C 00100010 00000000 00040000 0F129D8C 00100010 00000000 W
  531. 00040000 0F1295CC 00100010 00000000 00040000 0F129E0C 00100010 00000000 X
  532. 00040000 0F12964C 00100010 00000000 00040000 0F129E8C 00100010 00000000 Y
  533. 00040000 0F1296CC 00100010 00000000 00040000 0F129F0C 00100010 00000000 Z
  534. 00040000 0F12854C 00100010 00000000 00040000 0F128D8C 00100010 00000000 0
  535. 00040000 0F1285CC 00100010 00000000 00040000 0F128E0C 00100010 00000000 1
  536. 00040000 0F12864C 00100010 00000000 00040000 0F128E8C 00100010 00000000 2
  537. 00040000 0F1286CC 00100010 00000000 00040000 0F128F0C 00100010 00000000 3
  538. 00040000 0F12874C 00100010 00000000 00040000 0F128F8C 00100010 00000000 4
  539. 00040000 0F1287CC 00100010 00000000 00040000 0F12900C 00100010 00000000 5
  540. 00040000 0F12884C 00100010 00000000 00040000 0F12908C 00100010 00000000 6
  541. 00040000 0F1288CC 00100010 00000000 00040000 0F12910C 00100010 00000000 7
  542. 00040000 0F12894C 00100010 00000000 00040000 0F12918C 00100010 00000000 8
  543. 00040000 0F1289CC 00100010 00000000 00040000 0F12920C 00100010 00000000 9
  544. 00040000 0F12974C 00100010 00000000 00040000 0F129F8C 00100010 00000000 alpha
  545. 00040000 0F1297CC 00100010 00000000 00040000 0F12A00C 00100010 00000000 beta
  546. 00040000 0F12984C 00100010 00000000 00040000 0F12A08C 00100010 00000000
  547. 00040000 0F1298CC 00100010 00000000 00040000 0F12A10C 00100010 00000000 &
  548. 00040000 0F12994C 00100010 00000000 00040000 0F12A18C 00100010 00000000 ,
  549. 00040000 0F1299CC 00100010 00000000 00040000 0F12A20C 00100010 00000000 "
  550. 00040000 0F129A4C 00100010 00000000 00040000 0F12A28C 00100010 00000000 -
  551. 00040000 0F129ACC 00100010 00000000 00040000 0F12A30C 00100010 00000000 .
  552. 00040000 0F129B4C 00100010 00000000 00040000 0F12A38C 00100010 00000000 '
  553. 00040000 0F129BCC 00100010 00000000 00040000 0F12A40C 00100010 00000000 _
  554. english japanese
  555. 00110000 0F129C54 00400056 00000F57 00110000 0F12A494 00400056 00000F57 GP RACE
  556. 00110000 0F12ABB0 00400056 00001049 00110000 0F12B3F0 00400056 00001049 TIME ATTACK
  557. 00110000 0F12BC00 00400056 00000F98 00110000 0F12C440 00400056 00000F98 VS BATTLE
  558. 00110000 0F12CB9C 00400056 00000F76 00110000 0F12D3DC 00400056 00000F76 PRACTICE
  559. 00110000 0F12DB18 00400056 00000E83 00110000 0F12E358 00400056 00000E83 DEATH RACE
  560. 00110000 0F12E9A0 00400056 00000F8F 00110000 0F12F1E0 00400056 00000F8F OPTIONS
  561. 00110000 0F12F934 00400056 00001016 00110000 0F130174 00400056 00001016 COURSE EDIT
  562. 00110000 0F130950 00400056 00001012 00110000 0F131190 00400056 00001012 CREATE MACHINE
  563. english japanese
  564. 00040000 0F134760 00800018 00000000 00040000 0F134FA0 00800018 00000000 SELECT MODE
  565. 00110000 0F131968 00800050 00002A0E 00110000 0F1321A8 00800050 00002A0E flames
  566. 00110000 0F134D64 00400012 00000144 00110000 0F1355A4 00400012 0000014E novice
  567. 00110000 0F134EAC 00400012 0000014C 00110000 0F1356F8 00400012 00000160 standard
  568. 00110000 0F134FFC 00400012 00000149 00110000 0F13585C 00400012 00000163 expert
  569. 00110000 0F13514C 00400012 0000014E 00110000 0F1359C4 00400012 00000156 master
  570. 00110000 0F13437C 00400012 00000146 00110000 0F134BBC 00400012 00000146 2 players
  571. 00110000 0F1344C8 00400012 00000142 00110000 0F134D08 00400012 00000142 3 players
  572. 00110000 0F134610 00400012 00000143 00110000 0F134E50 00400012 00000143 4 players
  573. 00120000 0F1352A0 00580012 000001B1 00120000 0F135B20 00580012 000001C5 time attack
  574. 00110000 0F135458 00400012 00000149 00110000 0F135CEC 00400012 00000157 records
  575. english japanese
  576. 00110000 0F1355B4 00400060 000006DF 00110000 0F135E54 00400060 000006DF JACK CUP
  577. 00110000 0F135C98 00400060 0000072D 00110000 0F136538 00400060 0000072D QUEEN CUP
  578. 00110000 0F1363CC 00400060 00000738 00110000 0F136C6C 00400060 00000738 KING CUP
  579. 00110000 0F136B08 00400060 000006D4 00110000 0F1373A8 00400060 000006D4 JOKER CUP
  580. 00110000 0F137668 00400060 000006C5 00110000 0F137F08 00400060 000006C5 X CUP
  581. 00110000 0F1371E0 00400040 00000483 00110000 0F137A80 00400040 00000483 EDIT CUP
  582. 00110000 0F137D34 00400060 000007CE 00110000 0F1385D4 00400060 000007CE ? placeholder
  583. english japanese
  584. 00040000 0F139830 00A00018 00000000 00040000 0F13A0D0 00A00018 00000000 SELECT COURSE
  585. 00040000 0F138510 00600018 00000000 00040000 0F138DB0 00600018 00000000 RECORDS
  586. 00110000 0F139710 00200010 00000112 00110000 0F139FB0 00200010 00000112 OK?
  587. 00110000 0F138994 00200020 00000120 00110000 0F139234 00200020 00000120 left arrow
  588. 00110000 0F138AB8 00400040 000009E8 00110000 0F139358 00400040 000009E8 helmet
  589. 00110000 0F000004 013000F0 00014A5D 00110000 0F000004 013000F0 00014A5D title 1
  590. 00110000 0F014A68 014000F0 000118DB 00110000 0F014A68 014000F0 000118DB title 2
  591. 00110000 0F026348 014000F0 00009E0A 00110000 0F026348 014000F0 00009E0A title 3
  592. english japanese
  593. 00110000 0F1394A4 00100010 00000075 00110000 0F139D44 00100010 00000075 x (green)
  594. 00110000 0F139520 00100010 00000075 00110000 0F139DC0 00100010 00000075 x (blue)
  595. 00110000 0F13959C 00100010 00000076 00110000 0F139E3C 00100010 00000076 x (purple)
  596. 00110000 0F139618 00100010 00000075 00110000 0F139EB8 00100010 00000075 x (red)
  597. english japanese
  598. 00040000 0F13A9E0 00200010 00000000 00040000 0F13B280 00200010 00000000 Ghost bubble
  599. 00110000 0F139694 00100010 00000075 00110000 0F139F34 00100010 00000075 X
  600. 00040000 0F139FB8 00400010 00000000 00040000 0F13A858 00400010 00000000 With Ghost
  601. 00040000 0F13A1C0 00400010 00000000 00040000 0F13AA60 00400010 00000000 Without Ghost
  602. 00040000 0F13A3C8 00400010 00000000 00040000 0F13AC68 00400010 00000000 Staff Ghost
  603. 00040000 0F13A5D0 00400010 00000000 00040000 0F13AE70 00400010 00000000 Celebrity Ghost
  604. 00040000 0F13A7D8 00400010 00000000 00040000 0F13B078 00400010 00000000 Champ Ghost
  605. english japanese
  606. 00110000 0F1C417C 005000B6 000025D1 00110000 0F1C4A1C 005000B6 000025D1 woman
  607. 00110000 0F1C6754 00400040 0000095A 00110000 0F1C6FF4 00400040 0000095A See you again!
  608. 00110000 0F1C70B4 00500048 00001662 00110000 0F1C7954 00500048 00001662 announcer
  609. english japanese victory pictures of pilot with car
  610. 00120000 0F1C871C 00800055 00002289 00120000 0F1C8FBC 00800055 00002289
  611. 00120000 0F1CA9AC 0080005E 00002905 00120000 0F1CB24C 0080005E 00002905
  612. 00120000 0F1CD2B8 00800071 00002DBA 00120000 0F1CDB58 00800071 00002DBA
  613. 00120000 0F1D0078 0080005B 00002A88 00120000 0F1D0918 0080005B 00002A88
  614. 00120000 0F1D2B04 0080005E 00001DDB 00120000 0F1D33A4 0080005E 00001DDB
  615. 00120000 0F1D48E4 0080004F 000024F5 00120000 0F1D5184 0080004F 000024F5
  616. 00120000 0F1D6DE0 0080005C 00002C79 00120000 0F1D7680 0080005C 00002C79
  617. 00120000 0F1D9A60 00800057 00002A05 00120000 0F1DA300 00800057 00002A05
  618. 00120000 0F1DC46C 00800060 00003077 00120000 0F1DCD0C 00800060 00003077
  619. 00120000 0F1DF4E8 00800052 0000272B 00120000 0F1DFD88 00800052 0000272B
  620. 00120000 0F1E1C18 00800064 00002D0A 00120000 0F1E24B8 00800064 00002D0A
  621. 00120000 0F1E4928 00800061 00003694 00120000 0F1E51C8 00800061 00003694
  622. 00120000 0F1E7FC0 00800054 00002674 00120000 0F1E8860 00800054 00002674
  623. 00120000 0F1EA638 0080005D 000025D7 00120000 0F1EAED8 0080005D 000025D7
  624. 00120000 0F1ECC14 00800055 000021A2 00120000 0F1ED4B4 00800055 000021A2
  625. 00120000 0F1EEDBC 00800056 0000226D 00120000 0F1EF65C 00800056 0000226D
  626. 00120000 0F1F1030 00800060 00002E39 00120000 0F1F18D0 00800060 00002E39
  627. 00120000 0F1F3E70 00800065 0000309E 00120000 0F1F4710 00800065 0000309E
  628. 00120000 0F1F6F14 00800076 00002B7C 00120000 0F1F77B4 00800076 00002B7C
  629. 00120000 0F1F9A94 00800062 00002EF3 00120000 0F1FA334 00800062 00002EF3
  630. 00120000 0F1FC98C 00800067 00002D69 00120000 0F1FD22C 00800067 00002D69
  631. 00120000 0F1FF6FC 0080005E 00002E5F 00120000 0F1FFF9C 0080005E 00002E5F
  632. 00120000 0F202560 00800053 00002432 00120000 0F202E00 00800053 00002432
  633. 00120000 0F204998 0080005C 00002CB2 00120000 0F205238 0080005C 00002CB2
  634. 00120000 0F207650 00800052 000022C9 00120000 0F207EF0 00800052 000022C9
  635. 00120000 0F209920 00800065 00002B2E 00120000 0F20A1C0 00800065 00002B2E
  636. 00120000 0F20C454 00800058 0000287D 00120000 0F20CCF4 00800058 0000287D
  637. 00120000 0F20ECD8 0080005D 00002488 00120000 0F20F578 0080005D 00002488
  638. 00120000 0F211164 00800052 000022DA 00120000 0F211A04 00800052 000022DA
  639. 00120000 0F213444 0080005C 0000276B 00120000 0F213CE4 0080005C 0000276B
  640. english japanese options menu
  641. 0F262FB4 00200010 0F25D9D0 00200010 with
  642. 0F262ED0 00200010 0F25D928 00200010 w/o
  643. 0F262FB4 00200010 0F25D9D0 00200010 with
  644. 0F262ED0 00200010 0F25D928 00200010 w/o
  645. 0F262ED0 00200010 0F25D928 00200010 w/o
  646. 0F263190 00200010 0F25DB40 00200010 EXIT
  647. 0F263230 00200010 0F25DBE0 00200010 +1
  648. 0F2632E8 00400010 0F25DC98 00400010 STEREO
  649. 0F2634A4 00400010 0F25DDA0 00400010 MONO
  650. 0F2637DC 00200010 0F25E00C 00200010 +2
  651. 0F2636F0 00200010 0F25DF34 00200010 +3
  652. english japanese
  653. 0F261AD4 0F25C634 VS COM (2P,3P) 128x16.ia8
  654. 0F262184 0F25CD24 VS Slot 96x16.ia8
  655. 0F261E80 0F25CA38 VS Handicap 96x16.ia8
  656. 0F262398 0F25CF50 Sound Mode 96x16.ia8
  657. 0F262688 0F25D190 All data clear 96x16.ia8
  658. 0F263DA8 0F25E5AC Copying ghost 96x16.ia8
  659. 0F2630C8 0F25DA78 EXIT 40x16.ia8
  660. english japanese
  661. 0F13AAE4 0F13B384
  662. 0F255FF8 0F2507E4
  663. 0F15DEA8 0F15E748
  664. 0F2457C4 0F245DBC c16; J 196x16, USA 196x32 victory caption
  665. 0F1A1758 0F1A1FF8
  666. 0F2461CC 0F2463B8 c16; J 196x16, USA 196x32 victory caption
  667. 0F16FEEC 0F17078C
  668. 0F246C18 0F2469E4 c16; J 196x16, USA 196x32 victory caption
  669. 0F180754 0F180FF4
  670. 0F247590 0F246FC4 c16; J 196x16, USA 196x32 White Cat victory caption
  671. 0F193DC4 0F194664
  672. 0F247F40 0F2475F0
  673. 0F166A40 0F1672E0
  674. 0F248844 0F247BC0
  675. 0F146944 0F1471E4
  676. 0F2490D0 0F248120
  677. 0F19CD38 0F19D5D8
  678. 0F249A78 0F24875C
  679. 0F16B94C 0F16C1EC
  680. 0F24A294 0F248D04
  681. 0F1882F0 0F188B90
  682. 0F24AC0C 0F2492C8
  683. 0F1A9E6C 0F1AA70C
  684. 0F24B444 0F2498AC
  685. 0F17CDC8 0F17D668
  686. 0F24BD9C 0F249E00
  687. 0F18BDDC 0F18C67C
  688. 0F24C588 0F24A3C4
  689. 0F13EC40 0F13F4E0
  690. 0F24CE20 0F24A9A0
  691. 0F151B38 0F1523D8
  692. 0F24D864 0F24AF10
  693. 0F18FFC0 0F190860
  694. 0F24E224 0F24B494
  695. 0F179494 0F179D34
  696. 0F24EC48 0F24BA04
  697. 0F142BF0 0F143490
  698. 0F24F4A0 0F24C01C
  699. 0F198B8C 0F19942C
  700. 0F24FD5C 0F24C5EC
  701. 0F184744 0F184FE4
  702. 0F2505E8 0F24CBF8
  703. 0F14A3CC 0F14AC6C
  704. 0F250D64 0F24D198
  705. 0F1B2DBC 0F1B365C
  706. 0F251718 0F24D7E8
  707. 0F159288 0F159B28
  708. 0F252134 0F24DDA4
  709. 0F1AE278 0F1AEB18
  710. 0F252AF8 0F24E424
  711. 0F1A5D74 0F1A6614
  712. 0F2532F0 0F24EA1C
  713. 0F1619EC 0F16228C
  714. 0F253C68 0F24F03C
  715. 0F14E458 0F14ECF8
  716. 0F254468 0F24F660
  717. 0F174BF0 0F175490
  718. 0F254EF0 0F24FC40
  719. 0F15538C 0F155C2C
  720. 0F25577C 0F2501E4
  721. 0F1B72F0 0F1B7B90
  722. 00000000 00000000
  723. 0F1C0524 0F1C0DC4
  724. 0F244F14 0F2457B4 c16; J 196x16, USA 196x32 Captain Falcon victory caption
  725. 0F1B9F4C 0F1BA7EC
  726. 00000000 00000000
  727. 0F1BD278 0F1BDB18
  728. 00000000 00000000
  729. 0F243410 0F243CB0
  730. 0F243610 0F243EB0
  731. 0F243710 0F243FB0
  732. 0F243910 0F2441B0
  733. 0F243B10 0F2443B0
  734. 0F243D10 0F2445B0
  735. 0F243F10 0F2447B0
  736. 0F244110 0F2449B0
  737. 0F244310 0F244BB0
  738. 0F244510 0F244DB0
  739. 0F244710 0F244FB0
  740. 0F244910 0F2451B0
  741. 0F244B10 0F2453B0
  742. 0F244D10 0F2455B0
  743. english japanese
  744. 0F220810 0F2210B0
  745. 0F221010 0F2218B0
  746. 0F221210 0F221AB0
  747. 0F221A10 0F2222B0
  748. 0F221C10 0F2224B0
  749. 0F222410 0F222CB0
  750. 0F222610 0F222EB0
  751. 0F222E10 0F2236B0
  752. 0F223010 0F2238B0
  753. 0F223810 0F2240B0
  754. 0F223A10 0F2242B0
  755. 0F224210 0F224AB0
  756. 0F224410 0F224CB0
  757. 0F224C10 0F2254B0
  758. 0F224E10 0F2256B0
  759. 0F225610 0F225EB0
  760. 0F225810 0F2260B0
  761. 0F226010 0F2268B0
  762. 0F226210 0F226AB0
  763. 0F226A10 0F2272B0
  764. 0F226C10 0F2274B0
  765. 0F227410 0F227CB0
  766. 0F227610 0F227EB0
  767. 0F227E10 0F2286B0
  768. 0F228010 0F2288B0
  769. 0F228810 0F2290B0
  770. 0F228A10 0F2292B0
  771. 0F229210 0F229AB0
  772. 0F229410 0F229CB0
  773. 0F229C10 0F22A4B0
  774. 0F229E10 0F22A6B0
  775. 0F22A610 0F22AEB0
  776. 0F22A810 0F22B0B0
  777. 0F22B010 0F22B8B0
  778. 0F22B210 0F22BAB0
  779. 0F22BA10 0F22C2B0
  780. 0F22BC10 0F22C4B0
  781. 0F22C410 0F22CCB0
  782. 0F22C610 0F22CEB0
  783. 0F22CE10 0F22D6B0
  784. 0F22D010 0F22D8B0
  785. 0F22D810 0F22E0B0
  786. 0F22DA10 0F22E2B0
  787. 0F22E210 0F22EAB0
  788. 0F22E410 0F22ECB0
  789. 0F22EC10 0F22F4B0
  790. 0F22EE10 0F22F6B0
  791. 0F22F610 0F22FEB0
  792. 0F22F810 0F2300B0
  793. 0F230010 0F2308B0
  794. 0F230210 0F230AB0
  795. 0F230A10 0F2312B0
  796. 0F230C10 0F2314B0
  797. 0F231410 0F231CB0
  798. 0F231610 0F231EB0
  799. 0F231E10 0F2326B0
  800. 0F232010 0F2328B0
  801. 0F232810 0F2330B0
  802. 0F232A10 0F2332B0
  803. 0F233210 0F233AB0
  804. 0F233410 0F233CB0
  805. 0F233C10 0F2344B0
  806. 0F233E10 0F2346B0
  807. 0F234610 0F234EB0
  808. 0F234810 0F2350B0
  809. 0F235010 0F2358B0
  810. 0F235210 0F235AB0
  811. 0F235A10 0F2362B0
  812. 0F235C10 0F2364B0
  813. 0F236410 0F236CB0
  814. 0F236610 0F236EB0
  815. 0F236E10 0F2376B0
  816. 0F237010 0F2378B0
  817. 0F237810 0F2380B0
  818. 0F237A10 0F2382B0
  819. 0F238210 0F238AB0
  820. 0F238410 0F238CB0
  821. 0F238C10 0F2394B0
  822. 0F238E10 0F2396B0
  823. 0F239610 0F239EB0
  824. 0F239810 0F23A0B0
  825. 0F23A010 0F23A8B0
  826. 0F23A210 0F23AAB0
  827. 0F23AA10 0F23B2B0
  828. 0F23AC10 0F23B4B0
  829. 0F23B410 0F23BCB0
  830. 0F23B610 0F23BEB0
  831. 0F23BE10 0F23C6B0
  832. 0F23C010 0F23C8B0
  833. 0F23C810 0F23D0B0
  834. 0F23CA10 0F23D2B0
  835. 0F23D210 0F23DAB0
  836. 0F23D410 0F23DCB0
  837. 0F23DC10 0F23E4B0
  838. 0F23DE10 0F23E6B0
  839. 0F23E610 0F23EEB0
  840. 0F23E810 0F23F0B0
  841. 0F23F010 0F23F8B0
  842. 0F23F210 0F23FAB0
  843. 0F23FA10 0F2402B0
  844. 0F23FC10 0F2404B0
  845. 0F240410 0F240CB0
  846. 0F240610 0F240EB0
  847. 0F240E10 0F2416B0
  848. 0F241010 0F2418B0
  849. 0F241810 0F2420B0
  850. 0F241A10 0F2422B0
  851. 0F242210 0F242AB0
  852. 0F242410 0F242CB0
  853. 0F242C10 0F2434B0
  854. english japanese palettes
  855. 0F215F30 FCC0FD00 0000C882 F0000002 0F2167D0 FCC0FD00 0000C882 F0000002
  856. 0F215C30 9BF7F5D2 FFE69BF7 F5000002 0F2164D0 9BF7F5D2 FFE69BF7 F5000002
  857. 0F215DB0 E0EAD200 0000E1BE A0000002 0F216650 E0EAD200 0000E1BE A0000002
  858. 0F215D30 97C2DAD2 FFE697C2 DA000002 0F2165D0 97C2DAD2 FFE697C2 DA000002
  859. 0F215E30 020217F5 A2637D9B B9000005 0F2166D0 020217F5 A2637D9B B9000005
  860. 0F215CB0 FFE09000 0000FFE0 CC000002 0F216550 FFE09000 0000FFE0 CC000002
  861. 0F215EB0 F5A26300 0000F5A2 63000002 0F216750 F5A26300 0000F5A2 63000002
  862. 0F215BB0 FAFFFF00 0000B4C8 B4000002 0F216450 FAFFFF00 0000B4C8 B4000002
  863. english japanese
  864. 0F215FB0 3CF5C28F 3CF5C28F 00000000 00000000 0F216850 3CF5C28F 3CF5C28F 00000000 00000000
  865. 0F216FB0 3CF5C28F 3CF5C28F 00000000 00000000 0F217850 3CF5C28F 3CF5C28F 00000000 00000000
  866. 0F217FB0 3CF5C28F 3CF5C28F 3C23D70A 3C23D70A 0F218850 3CF5C28F 3CF5C28F 3C23D70A 3C23D70A
  867. 0F218FB0 3CF5C28F 3CF5C28F 00000000 00000000 0F219850 3CF5C28F 3CF5C28F 00000000 00000000
  868. 0F219FB0 3CF5C28F 3CF5C28F 00000000 00000000 0F21A850 3CF5C28F 3CF5C28F 00000000 00000000
  869. 0F21AFB0 3CF5C28F 3CF5C28F 00000000 00000000 0F21B850 3CF5C28F 3CF5C28F 00000000 00000000
  870. 0F21BFB0 3CF5C28F 3CF5C28F 00000000 00000000 0F21C850 3CF5C28F 3CF5C28F 00000000 00000000
  871. 0F21CFB0 3CF5C28F 3CF5C28F 00000000 00000000 0F21D850 3CF5C28F 3CF5C28F 00000000 00000000
  872. 0F21DFB0 3CF5C28F 3CF5C28F 3BA3D70A 3BA3D70A 0F21E850 3CF5C28F 3CF5C28F 3BA3D70A 3BA3D70A
  873. 0F21EFB0 3CF5C28F 3CF5C28F 00000000 00000000 0F21F850 3CF5C28F 3CF5C28F 00000000 00000000
  874. english japanese sizes at 0xB098C0
  875. 0F25F0B0 0x280 0x100 0F2595E0 0x280 0x144 Retry 40x16.ci8
  876. 0F25F1B0 0x400 0x184 0F259724 0x400 0x1A4 Settings 64x16.ci8
  877. 0F25F334 0x180 0xCC 0F2598C8 0x200 0x124 Quit 24x16.ci8
  878. 0F25F400 0x400 0x29C 0F2599EC 0x400 0x208 Change Machine 64x16.ci8
  879. 0F25F69C 0x400 0x278 0F259BF4 0x400 0x1CC Change Course 64x16.ci8
  880. 0F25F914 0x400 0x1BC 0F259DC0 0x400 0x1A8 Ghost Save 64x16.ci8
  881. 0F25FAD0 0x800 0x2A0 0F259F68 0x800 0x310 Overwrite Data? 128x16.ci8
  882. 0F25FD70 0x280 0x124 0F25A278 0x400 0x1E4 Saving 40x16.ci8
  883. 0F25FE94 0x400 0x1F8 0F25A45C 0x400 0x17C To Game Pak 64x16.ci8
  884. 0F26008C 0x280 0x134 0F25A5D8 0x400 0x164 To Disk 40x16.ci8
  885. 0F2601C0 0x800 0x2A0 0F25A73C 0x800 0x2EC Overwrite Data? 128x16.ci8
  886. 0F260460 0x400 0x1EC 0F25AA28 0x400 0x1D8 Clear Record 64x16.ci8
  887. 0F26064C 0xC00 0x44C 0F25AC00 0x1000 0x6C0 Erase saved data for this course? 96x32.ci8
  888. 0F260A98 0x400 0x11C 0F25B2C0 0x400 0x1E0 Clear Ghost 64x16.ci8
  889. 0F260C64 0xC00 0x44C 0F25B4A0 0x1000 0x690 Erase saved data for this course? 96x32.ci8
  890. 0F2610B0 0x400 0x174 0F25BB30 0x400 0x16C Continue 64x16.ci8
  891. 0F2636F0 0x200 0xEC 0F25DF34 0x200 0xD8 Yes 32x16.ci8
  892. 0F2637DC 0x200 0xD8 0F25E00C 0x200 0xD4 No 32x16.ci8
  893. 0F261224 0x400 0x140 0F25BC9C 0x400 0x1F4 Saved 64x16.ci8
  894. 0F261364 0x400 0x1C4 0F25BE90 0x400 0x170 New Ghost 64x16.ci8
  895. 0F261528 0x800 0x244 0F25C000 0x800 0x2CC Saved Ghost 128x16.ci8
  896. 0F2638B4 0x1000 0x4F4 0F25E0E0 0x1000 0x4CC Race data can not be saved for ghost. 128x32.ci8
  897. 0F263648 0x100 0x54 0F25DE8C 0x100 0x54 left arrow 16x16.ci8
  898. 0F26369C 0x100 0x54 0F25DEE0 0x100 0x54 right arrow 16x16.ci8
  899. english japanese
  900. 0F264110 0F25E7C0
  901. 0F264340 0F25E9F0
  902. 0F264450 0F25EB00
  903. 0F2641D8 0F25E888
  904. 0F264690 0F25ED40
  905. 0F264540 0F25EBF0
  906. 0F264920 0F25EFD0
  907. 0F264860 0F25EF10
  908. 0F264740 0F25EDF0
  909. 0F264C80 0F25F330
  910. 0F264B40 0F25F1F0
  911. 0F2652B0 0F25F960
  912. 0F264DE0 0F25F490
  913. 0F264F08 0F25F5B8
  914. 0F2650B0 0F25F760
  915. 0F2651C8 0F25F878
  916. 0F264A58 0F25F108
  917. 0F2656C8 0F25FD78
  918. 0F265530 0F25FBE0
  919. 0F2659E0 0F260090
  920. 0F2658D0 0F25FF80
  921. 0F265B70 0F260220
  922. 0F2653E8 0F25FA98
  923. 0F265D08 0F2603B8
  924. english japanese
  925. 0F265E80 0F260530
  926. 0F268A80 0F263130
  927. 0F266880 0F260F30
  928. 0F267A80 0F262130
  929. 0F268680 0F262D30
  930. 0F266280 0F260930
  931. 0F267C80 0F262330
  932. 0F266080 0F260730
  933. 0F267880 0F261F30
  934. 0F267080 0F261730
  935. 0F269680 0F263D30
  936. 0F266480 0F260B30
  937. 0F268080 0F262730
  938. 0F269280 0F263930
  939. 0F268C80 0F263330
  940. 0F266A80 0F261130
  941. 0F269480 0F263B30
  942. 0F266680 0F260D30
  943. 0F267280 0F261930
  944. 0F268880 0F262F30
  945. 0F269080 0F263730
  946. 0F267480 0F261B30
  947. 0F268E80 0F263530
  948. 0F266E80 0F261530
  949. 0F269880 0F263F30
  950. 0F268480 0F262B30
  951. 0F266C80 0F261330
  952. 0F267680 0F261D30
  953. 0F268280 0F262930
  954. 0F267E80 0F262530
  955. 0F269A80 0F264130
  956. 0F269C80 0F264330
  957. 0F269E80 0F264530
  958. 0F26A080 0F264730
  959. 0F26A280 0F264930
  960. 0F26A480 0F264B30
  961. 0F26A680 0F264D30
  962. 0F26A880 0F264F30
  963. english japanese
  964. AE38C4 0F25A8F0 0F254E20
  965. AE38E8 0F25B8F0 0F255E20
  966. AE390C 0F25F070 0F2595A0 palette for in-game menu
  967. AE392C 0F25F0B0 0F2595E0 Retry 40x16.ci8
  968. AE3948 0F25F1B0 0F259724 Settings 64x16.ci8
  969. AE3964 0F25F334 0F2598C8 Quit 24x16.ci8
  970. AE3980 0F2610B0 0F25BB30
  971. AE39AC 0F25F400 0F2599EC Change Machine 64x16.ci8
  972. AE39C8 0F243290 0F243B30
  973. AE39EC 0F25F400 0F2599EC Change Machine 64x16.ci8
  974. AE3A14 0F25F69C 0F259BF4 Change Course 64x16.ci8
  975. AE3A30 0F25F914 0F259DC0 Ghost Save 64x16.ci8
  976. AE3A4C 0F25FAD0 0F259F68
  977. AE3A68 0F261224 0F25BC9C
  978. AE3A84 0F25FD70 0F25A278 Saving 40x16.ci8
  979. AE3AA0 0F2636F0 0F25DF34
  980. AE3ABC 0F2637DC 0F25E00C
  981. AE3AD8 0F261364 0F25BE90
  982. AE3AF4 0F261528 0F25C000
  983. AE3B10 0F2638B4 0F25E0E0
  984. AE3B2C 0F263648 0F25DE8C
  985. AE3B48 0F26369C 0F25DEE0
  986. AE3B64 0F25FE94 0F25A45C
  987. AE3B80 0F26008C 0F25A5D8 To Disk 40x16.ci8
  988. AE3B9C 0F2601C0 0F25A73C
  989. AE3BB8 0F25CCF0 0F257220
  990. AE3BD8 0F25D650 0F257B80
  991. AE3C64 0F25BAF0 0F256020
  992. AE3CA0 0F25CAF0 0F257020
  993. AE2D08 0F25F69C 0F259BF4 Change Course 64x16.ci8
  994. AE3D24 0F25D858 0F257D88
  995. AE3D40 0F25E060 0F258590
  996. AE3D5C 0F25E868 0F258D98
  997. AE3F34 0F25D858 0F257D88
  998. AE3F40 0F25E060 0F258590
  999. AE3F4C 0F25E868 0F258D98
  1000. AEB0BC 0F25F070 0F2595A0
  1001. AEB248 0F25F070 0F2595A0
  1002. AEB6CC 0F25F070 0F2595A0
  1003. AEBE40 0F25F070 0F2595A0
  1004. AEC7AC 0F25F070 0F2595A0
  1005. AECB14 0F25F070 0F2595A0
  1006. AECD5C 0F25F070 0F2595A0
  1007. AED628 0F25F070 0F2595A0
  1008. AEDC44 0F25F070 0F2595A0
  1009. AEE2BC 0F25F070 0F2595A0
  1010. AEE82C 0F25F070 0F2595A0
  1011. AEF034 0F25F070 0F2595A0
  1012. AEF778 0F25F070 0F2595A0
  1013. AF2FE8 0F243290 0F243B30
  1014. AF8968 0F243290 0F243B30
  1015. AFE450 0F243290 0F243B30
  1016. AFEA60 0F243290 0F243B30
  1017. AFFF78 0F21FFB8 0F220858
  1018. AFFFA8 0F2207C8 0F221068
  1019. B0362C 0F243290 0F243B30
  1020. B03654 0F242E10 0F2436B0
  1021. B03678 0F243210 0F243AB0
  1022. B036B0 0F138994 0F139234
  1023. B03CA8 0F138994 0F139234
  1024. B043E4 0F243290 0F243B30
  1025. B05308 0F242E10 0F2436B0
  1026. B05424 0F243210 0F243AB0
  1027. B12744 0F000004 0F000004 title 1
  1028. B21600 0F1C417C 0F1C4A1C woman
  1029. B21BBC 0F1C6754 0F1C6FF4 See you again!
  1030. B22038 0F1C70B4 0F1C7954 announcer
  1031. B247A4 0F25F070 0F2595A0
  1032. B247C0 0F138AB8 0F139358
  1033. B247DC 0F26176C 0F25C2CC OPTIONS 96x24
  1034. B247F8 0F2629A8 0F25D428 Erase all saved data?
  1035. B24814 0F262ED0 0F25D928 w/o 32x16.ia8
  1036. B24830 0F262FB4 0F25D9D0 with 32x16.ia8
  1037. B2484C 0F263190 0F25DB40 EXIT 40x16.ia8
  1038. B24868 0F263230 0F25DBE0 +1 32x16.ia8
  1039. B24884 0F2632E8 0F25DC98
  1040. B248A0 0F2634A4 0F25DDA0
  1041. B248BC 0F263648 0F25DE8C
  1042. B248D8 0F26369C 0F25DEE0
  1043. B248F4 0F2637DC 0F25E00C
  1044. B24910 0F2636F0 0F25DF34
  1045. B2497C 0F000000 0F000000
  1046. B249D4 0F014A68 0F014A68 title 2
  1047. B24A38 0F026348 0F026348 title 3
  1048. B25520 0F000004 0F000004 title 1
  1049. B2558C 0F138AB8 0F139358
  1050. B2563C 0F26176C 0F25C2CC OPTIONS 96x24
  1051. B2565C 0F25F070 0F2595A0
  1052. B25784 0F263648 0F25DE8C
  1053. B257E8 0F26369C 0F25DEE0
  1054. B25930 0F2629A8 0F25D428 Erase all saved data?
  1055. B25948 0F25F070 0F2595A0
  1056. B259BC 0F263648 0F25DE8C
  1057. B25A18 0F26369C 0F25DEE0
  1058. B2B948 0F256900 0F250E30
  1059. B2B968 0F243410 0F243CB0
  1060. B2B984 0F243610 0F243EB0
  1061. B2B9A0 0F243710 0F243FB0
  1062. B2B9BC 0F243910 0F2441B0
  1063. B2B9D8 0F243B10 0F2443B0
  1064. B2B9F4 0F243D10 0F2445B0
  1065. B2BA10 0F243F10 0F2447B0
  1066. B2BA2C 0F244110 0F2449B0
  1067. B2BA48 0F244310 0F244BB0
  1068. B2BA64 0F244510 0F244DB0
  1069. B2BA80 0F244710 0F244FB0
  1070. B2BA9C 0F244910 0F2451B0
  1071. B2BAB8 0F244B10 0F2453B0
  1072. B2BAD4 0F244D10 0F2455B0
  1073. B2C680 0F256900 0F250E30
  1074. B340A4 0F25F070 0F2595A0
  1075. B34114 0F26064C 0F25AC00 Erase saved data for this course? 96x32.ci8
  1076. B34130 0F260C64 0F25B4A0 Erase saved data for this course? 96x32.ci8
  1077. B3414C 0F263648 0F25DE8C
  1078. B34168 0F26369C 0F25DEE0
  1079. B34184 0F2637DC 0F25E00C
  1080. B341A0 0F2636F0 0F25DF34
  1081. B341BC 0F13A9E0 0F13B280 Ghost bubble
  1082. B341D8 0F25FE94 0F25A45C
  1083. B341F4 0F26008C 0F25A5D8 To Disk 40x16.ci8
  1084. B3554C 0F13A9E0 0F13B280 Ghost bubble
  1085. B3571C 0F25F070 0F2595A0
  1086. B3582C 0F25F070 0F2595A0
  1087. B358A0 0F263648 0F25DE8C
  1088. B358FC 0F26369C 0F25DEE0
  1089. B36310 0F25F070 0F2595A0
  1090. BE5E30 0F25F070 0F2595A0
  1091. BE5E4C 0F25F334 0F2598C8 Quit 24x16.ci8
  1092. BE5E68 0F2610B0 0F25BB30
  1093. BE6020 0F25F070 0F2595A0
  1094.  
  1095. options on record page
  1096. B33D00 8009B170
  1097.  
  1098. B36D50
  1099. 00000000 00000003 0F25F69C 0040 0010 Change Course 64x16.ci8
  1100. 00000000 00000002 0F25F334 0018 0010 Quit 24x16.ci8
  1101. 00000000 00000000 0F260460 0040 0010 Clear Record 64x16.ci8
  1102. 00000000 00000001 0F260A98 0040 0010 Clear Ghost 64x16.ci8
  1103. 00000000 00000004 8009F360 0040 0010 Copy Ghost
  1104.  
  1105. B36E58 B37660 8009E2C0 8009EAC8 どのゴ一ストをコピーしますか? 128x16.ci8 Which file would you like to copy?
  1106. B376A8 B37EB0 8009EB10 8009F318 どへコピーしますか? 128x16.ci8 Copy to which location?
  1107. B37EF8 B38300 8009F360 8009F768 ゴーストコピー 64x16.ci8 Copy Ghost
  1108. 0000DEF7 8C63294B 10854A53 18C74211 AD6BC631 BDEFFFFF CE732109 5295EF7B 5AD70843 94A59CE7 6319F7BD B5AD39CF D6B56B5B 7BDF739D 318DE739 A5298421
  1109. B38348 B38750 8009F7B0 8009FBB8 コピーしました, 64x16.ci8 Copied.
  1110. 000039CF 2109D6B5 6B5B4A53 18C70843 42118421 CE73BDEF C631AD6B F7BD94A5 739D1085 52957BDF B5ADFFFF 9CE7294B 8C63318D E739DEF7 5AD7EF7B 6319A529
  1111. B38798 B38BA0 8009FC00 800A0008 カセットゴースト 64x16.ci8 Cartridge Ghost
  1112. B38BE8 B38FF0 800A0050 800A0458 ディスクゴースト1 64x16.ci8 Disk Ghost 1
  1113. B39038 B39440 800A04A0 800A08A8 ディスクゴースト2 64x16.ci8 Disk Ghost 2
  1114. B39488 B39890 800A08F0 800A0CF8 ディスクゴースト3 64x16.ci8 Disk Ghost 3
  1115. B398D8 B3A8E0 800A0D40 800A1D48 コピーしたいティスクた\nいれかえてください。 128x32.ci8 Please select the slot on the disk to copy to.
  1116.  
  1117. 00110000 0F134D64 00400012 00000144 novice
  1118. 00110000 0F134EAC 00400012 0000014C standard
  1119. 00110000 0F134FFC 00400012 00000149 expert
  1120. 00110000 0F13514C 00400012 0000014E master
  1121.  
  1122. +_+
  1123.  
  1124. general images pushed to different offsets:
  1125. D140 shared/tab/0x200.file.48x16.c16
  1126. D740 shared/0xE00.load.48x16.i4
  1127. D8C0 shared/0xF80.delete.48x16.i4
  1128.  
  1129. trackedit
  1130. "Node" needs to preceed numeral in info window. Those E4 texrects need to change value, and surprise surprise they're generated.
  1131. NODE 0004 001C 18
  1132. 1st 001F 0029 C->A
  1133. 2nd 0029 0035 C
  1134.  
  1135. @800E23B4 0xBD1F4C second digit lrx
  1136. ADDIU T3,S1,000F lrx 2 -> lrx 1/ulx 2 262B0029 ADDIU T3,S1,0029
  1137. ...
  1138. @800E2418 0xBD1FB0 skip first digit if zero
  1139. 10A0005D BEQ A1,R0,800E2590 -> 10A00059
  1140. ...
  1141. @800E24FC 0xBD2094 first digit texrect
  1142. ADDIU T8,S1,000F lrx 1 -> lrx 2 (A2) to 800E2410 26380035 ADDIU T8,S1,0035
  1143. SLL T7,T8,0x2 to 800E2414 00187880
  1144. ADDIU T6,A0,0008
  1145. SW T6,0278 (SP)
  1146. ANDI T9,T7,0FFF to 800E2418 31F90FFF
  1147. SLL T6,T9,0xC -> to 800E241C 00193300 SLL A2,T8,0xC
  1148. ADDIU T7,S0,000C
  1149. LUI AT,E400
  1150. OR T8,T6,AT -> 0161C025 OR T8,T3,AT
  1151. SLL T9,T7,0x2
  1152. ANDI T6,T9,0FFF
  1153. OR T7,T8,T6
  1154. ADDIU T9,S1,0003 ulx -> 001E
  1155. SLL T8,T9,0x2
  1156. ANDI T6,T8,0FFF
  1157. SW T7,0000 (A0)
  1158. SLL T7,T6,0xC
  1159. OR T9,T7,T0
  1160. SW T9,0004 (A0)
  1161. ...
  1162. @800E2678 0xBD2210 second digit texrect (A2 unused until this point)
  1163. ADDIU A2,S1,001B lrx 2 -> ulx Node 26260004 ADDIU A2,S1,0004
  1164. SLL A2,A2,0x2
  1165. ANDI A2,A2,0FFF
  1166. SLL A2,A2,0xC
  1167. LUI AT,E400 3C01E400 move to 800E2678
  1168. ADDIU T6,A0,0008
  1169. ANDI T1,T1,0FFF
  1170. SW T6,0278 (SP)
  1171. OR T7,A2,AT 00C17825 move to 800E267C, before ADDIU A2,S1,00**
  1172. OR T9,T7,T1
  1173. OR T8,T3,T0
  1174. SW T8,0004 (A0)
  1175. SW T9,0000 (A0)
  1176. ...
  1177. @800E26F0 0xBD2288 Node image
  1178. LUI T9,0900
  1179. ADDIU T9,T9,1788
  1180. ...
  1181. @800E27A8 0xBD2340 Node texrect
  1182. LW A1,0278 (SP)
  1183. ADDIU T8,S1,0033 lrx -> 001C
  1184. SLL T6,T8,0x2
  1185. ADDIU T9,A1,0008
  1186. SW T9,0278 (SP)
  1187. ANDI T7,T6,0FFF
  1188. SLL T9,T7,0xC
  1189. OR T8,T9,AT
  1190. OR T6,T8,T1
  1191. OR T7,A2,T0
  1192. SW T7,0004 (A1)
  1193. SW T6,0000 (A1)
  1194.  
  1195. 800EDE68(p->target, value, min_digits) # convert at least A2 digits from numeral A1 to string A0
  1196.  
  1197. +_+
  1198.  
  1199. Options menu:
  1200. 801195EC 0xC09184 X/Y for options on/off tags
  1201. BB 44 -> 41
  1202. BB 54 -> 51
  1203. BB 70 -> 71
  1204. BB 80 -> 82
  1205. BB 90 -> 92
  1206.  
  1207. +_+
  1208.  
  1209. Car edit namespace 04
  1210. 0xC19038 80138B30 48x16 save convert to "load", since that's in shared namespace
  1211. switch 80138B30 to 04000D80 "save as"
  1212. AD8410, C127DC+C127F8
  1213. switch 04001500 to 80138B30 "load"
  1214. AD83EC, C126BC+C126D8
  1215. 0xC191B8 80138CB0 48x16 delete
  1216.  
  1217. switch these around
  1218. 0xC18898, 0x240 bin 80138390.machine_name.48x12.i8
  1219. C12038+C1203C; w C1201C, h C12018
  1220. 0xC18AD8, 0x360 bin 801385D0.settings.72x12.i8
  1221. C12084+C1209C; w C1206C, h C12070
  1222. 0xC18E38, 0x200 bin 80138930.weight.32x16.i8
  1223. C0FFF4+C10014; w C0FFFC, h C10000; x C1001C, y C10010
  1224.  
  1225. 07008780
  1226.  
  1227. USA has a slightly different lineup; conversion table here
  1228. size Japanese English
  1229. 0x180 04000000 04000000 caredit/tab/parts.0x0.48x16.i4 AD852C
  1230. 0x180 04000180 04000180 caredit/tab/design.0x180.48x16.i4 AD8550
  1231. 0x180 04000300 04000300 caredit/tab/settings.0x300.48x16.i4 AD8574
  1232. 0x600 04000480 -------- tab_machine_file-48x16.c16
  1233. 0x180 04000A80 04000480 caredit/tab/mark.0x480.48x16.i4 AD8370, C1286C+C12888
  1234. 0x180 04000C00 04000600 caredit/tab/color.0x600.48x16.i4 AD8394, C128B4+C128D0, C128FC+C12918, C12988+C129A4, C12A14+C12A30, C12AA0+C12ABC
  1235. 0x180 04000D80 04000780 caredit/tab/body.0x780.48x16.i4 AD8288, C1293C+C1295C
  1236. 0x180 04000F00 04000900 caredit/tab/line.0x900.48x16.i4 AD82AC, AD834C, C12824+C12840, C129C8+C129E8
  1237. 0x180 04001080 04000A80 caredit/tab/number.0xA80.48x16.i4 AD82D0, C12A54+C12A74
  1238. 0x180 04001200 04000C00 caredit/tab/cockpit.0xC00.48x16.i4 AD82F4, C12AE0+C12B00
  1239. 0x180 04001380 -------- label_machine_name-48x16.i4
  1240. 0x180 04001500 -------- option_machine_load-48x16.i4 AD83EC, C126BC+C126D8
  1241. 0x180 04001680 04000D80 caredit/tab/save_as.0xD80.48x16.i4
  1242. 0x180 04001800 04000F00 caredit/tab/use.0xF00.48x16.i4 AD848C, C1274C+C12768
  1243. 0x180 04001980 04001080 caredit/tab/clear.0x1080.48x16.i4 AD84B0, C12794+C127B0
  1244. 0x240 04001B00 04001200 caredit/tab/line/1.0x1200.24x12.c16 AD8050
  1245. 0x240 04001D40 04001440 caredit/tab/line/2.0x1440.24x12.c16 AD8074
  1246. 0x240 04001F80 04001680 caredit/tab/line/3.0x1680.24x12.c16 AD8098
  1247. 0x240 040021C0 040018C0 caredit/tab/line/4.0x18C0.24x12.c16 AD80BC
  1248. 0x240 04002400 04001B00 caredit/tab/line/5.0x1B00.24x12.c16 AD80E0
  1249. 0x240 04002640 04001D40 caredit/tab/mark/1.0x1D40.24x12.c16 AD8138
  1250. 0x240 04002880 04001F80 caredit/tab/mark/2.0x1F80.24x12.c16 AD815C
  1251. 0x240 04002AC0 040021C0 caredit/tab/mark/3.0x21C0.24x12.c16 AD8180
  1252. 0x240 04002D00 04002400 caredit/tab/mark/4.0x2400.24x12.c16 AD81A4
  1253. 0x240 04002F40 04002640 caredit/tab/mark/5.0x2640.24x12.c16 AD81C8
  1254. 0x240 04003180 04002880 caredit/tab/mark/6.0x2880.24x12.c16 AD81EC
  1255. 0x240 040033C0 04002AC0 caredit/tab/mark/7.0x2AC0.24x12.c16 AD8210
  1256. 0x240 04003600 04002D00 caredit/tab/mark/8.0x2D00.24x12.c16 AD8234
  1257. 0x200 04003840 04002F40 caredit/settings/body.0x2F40.32x16.ia8 C15834+C1584C, C159B4+C159CC
  1258. 0x200 04003A40 04003140 caredit/settings/boost.0x3140.32x16.ia8 C1585C+C15870, C159DC+C159F0
  1259. 0x200 04003C40 04003340 caredit/settings/grip.0x3340.32x16.ia8 C15884+C15898, C15A04+C15A18
  1260. 0x300 04003E40 04003540 caredit/settings/A_lit.0x3540.24x16.c16 C17558
  1261. 0x300 04004140 04003840 caredit/settings/A.0x3840.24x16.c16 C17554
  1262. 0x300 04004440 04003B40 caredit/settings/A_hid.0x3B40.24x16.c16 C17550
  1263. 0x300 04004740 04003E40 caredit/settings/B_lit.0x3E40.24x16.c16 C1754C
  1264. 0x300 04004A40 04004140 caredit/settings/B.0x4140.24x16.c16 C17548
  1265. 0x300 04004D40 04004440 caredit/settings/B_hid.0x4440.24x16.c16 C17544
  1266. 0x300 04005040 04004740 caredit/settings/C_lit.0x4740.24x16.c16 C17540
  1267. 0x300 04005340 04004A40 caredit/settings/C.0x4A40.24x16.c16 C1753C
  1268. 0x300 04005640 04004D40 caredit/settings/C_hid.0x4D40.24x16.c16 C17538
  1269. 0x300 04005940 04005040 caredit/settings/D_lit.0x5040.24x16.c16 C17534
  1270. 0x300 04005C40 04005340 caredit/settings/D.0x5340.24x16.c16 C17530
  1271. 0x300 04005F40 04005640 caredit/settings/D_hid.0x5640.24x16.c16 C1752C
  1272. 0x300 04006240 04005940 caredit/settings/E_lit.0x5940.24x16.c16 C17528
  1273. 0x300 04006540 04005C40 caredit/settings/E.0x5C40.24x16.c16 C17524
  1274. 0x300 04006840 04005F40 caredit/settings/E_hid.0x5F40.24x16.c16 C17520
  1275.  
  1276. +_+
  1277.  
  1278. Fake EUC_JP; A5 is stripped off and fixed value subtracted to create an offset.
  1279. pointers at 0xB1A63C.
  1280.  
  1281. 0xB1A7B8 8007BEA0 8007BEA0 エイトロード FIGURE EIGHT
  1282. 0xB1A7C8 8007BEB0 8007BEAE ハイスピード HIGH SPEED
  1283. 0xB1A7D8 8007BEC0 8007BEBA パイプ PIPE
  1284. 0xB1A7E0 8007BEC8 8007BEC0 スクリュー CORKSCREW
  1285. 0xB1A7EC 8007BED4 8007BECA シリンダー CYLINDER
  1286. 0xB1A7F8 8007BEE0 8007BED4 ハイジャンプ HIGH JUMP
  1287. 0xB1A808 8007BEF0 8007BEDE ロールオーバー INVERTED LOOP
  1288. 0xB1A818 8007BF00 8007BEEC ジャンプジャンプ MULTI JUMP
  1289. 0xB1A82C 8007BF14 8007BEF8 アップダウン UP AND DOWN
  1290. 0xB1A83C 8007BF24 8007BF04 テクニカル TECHNIQUE
  1291. 0xB1A848 8007BF30 8007BF0E クイックターン QUICK TURN
  1292. 0xB1A858 8007BF40 8007BF1A ステップアップロード DANGEROUS STEPS
  1293. 0xB1A870 8007BF58 8007BF2A ジグザグジャンプ ZIG-ZAG JUMP
  1294. 0xB1A884 8007BF6C 8007BF38 ウェーブロード WAVY ROAD
  1295. 0xB1A894 8007BF7C 8007BF42 ムーンサルト DOUBLE SOMERSAULT
  1296. 0xB1A8A4 8007BF8C 8007BF54 スリムライン SLIM LINE
  1297. 0xB1A8B4 8007BF9C 8007BF5E ハーフパイプ HALF PIPE
  1298. 0xB1A8C4 8007BFAC 8007BF68 クランククランク JUMPS OF DOOM
  1299. 0xB1A8D8 8007BFC0 8007BF76 レインボーロード PSYCHEDELIC EXPERIENCE
  1300. 0xB1A8EC 8007BFD4 8007BF8E ミラーロード MIRROR ROAD
  1301. 0xB1A8FC 8007BFE4 8007BF9A シリンダー&ハイジャンプ CYLINDER & HIGH JUMP
  1302. 0xB1A914 8007BFFC 8007BFB0 ウェーブパニック WAVE PANIC
  1303. 0xB1A928 8007C010 8007BFBC スネークロード SNAKE ROAD
  1304. 0xB1A938 8007C020 8007BFC8 ビッグハンド DEADLY CURVES
  1305. 0xB1A948 8007C030 8007C074
  1306. 0xB1A94C 8007C034 8007C074
  1307. 0xB1A950 8007C038 8007C074
  1308. 0xB1A954 8007C03C 8007C074
  1309. 0xB1A958 8007C040 8007C074
  1310. 0xB1A95C 8007C044 8007C074
  1311. 0xB1A960 8007C048 8007BFD6 アウトサイドループ OUTSIDE LOOP
  1312. 0xB1A974 8007C05C 8007BFE4 シリンダーループ CYLINDER LOOPS
  1313. 0xB1A988 8007C070 8007BFF4 ダイビング HIGH DIVE
  1314. 0xB1A994 8007C07C 8007BFFE ジグザグクランク ZIG-ZAG CRANK
  1315. 0xB1A9A8 8007C090 8007C00C エックス CROSS ROAD
  1316. 0xB1A9B4 8007C09C 8007C018 ジャポン JAPAN
  1317. 0xB1A9C0 8007C0A8 8007C01E スリムハーフパイプ SLIM HALF PIPE
  1318. 0xB1A9D4 8007C0BC 8007C02E ストレートジャンプ STRAIGHT JUMPS
  1319. 0xB1A9E8 8007C0D0 8007C03E トラップロード TRAP ROAD
  1320. 0xB1A9F8 8007C0E0 8007C048 180ローリング 180 ROLLOVER
  1321. 0xB1AA08 8007C0F0 8007C056 スター GREAT STAR
  1322. 0xB1AA10 8007C0F8 8007C062 ビッグフット VERY DEADLY CURVES
  1323. 0xB1AA20 8007C108 8007C074
  1324. 0xB1AA24 8007C10C 8007C074
  1325. 0xB1AA28 8007C110 8007C074
  1326. 0xB1AA2C 8007C114 8007C074
  1327. 0xB1AA30 8007C118 8007C074
  1328. 0xB1AA34 8007C11C 8007C074
  1329. 0xB1AA38 8007C120 8007C074
  1330. 0xB1AA3C センタク デキマセン selection made?
  1331. 0xB1AA50 センタク デキマセン
  1332. 0xB1AA64
  1333.  
  1334. probably printed via 800AD4A4(p->txt, font=4, spacing=0) at 8007A438
  1335. font = 3 font for main track names (16x16)
  1336. font = 4 font for descriptions (8x8)
  1337.  
  1338. Font 4 remaps letters to defaults using a ludicris pointer table at 800C0458 (0xB5AAE0).
  1339. Make entries for the missing letters someplace, then shove pointers here.
  1340. 800BFDE8 A 800BFDE8
  1341. 800BFDE8 B -> 800C23B0
  1342. 800BFDE8 C -> 800C23C0
  1343. 800BFDF8 D 800BFDF8
  1344. 800BFE08 E 800BFE08
  1345. 800BFDE8 F -> 800C23D0
  1346. 800BFDE8 G -> 800C23E0
  1347. 800BFDE8 H -> 800C23F0
  1348. 800BFDE8 I -> 800C2400
  1349. 800BFDE8 J -> 800C2410
  1350. 800BFDE8 K -> 800C2420
  1351. 800BFDE8 L -> 800C2430
  1352. 800BFE18 M 800BFE18
  1353. 800BFDE8 N -> 800C2440
  1354. 800BFDE8 O -> 800C2450
  1355. 800BFDE8 P -> 800C2460
  1356. 800BFDE8 Q -> 800C2470
  1357. 800BFDE8 R -> 800C2480
  1358. 800BFDE8 S -> 800C2490
  1359. 800BFDE8 T -> 800C24A0
  1360. 800BFDE8 U -> 800C24B0
  1361. 800BFDE8 V -> 800C24C0
  1362. 800BFDE8 W -> 800C24D0
  1363. 800BFDE8 X -> 800C24E0
  1364. 800BFDE8 Y -> 800C24F0
  1365. 800BFDE8 Z -> 800C2500
  1366. 0xB5AB90 800C2510 00040000 0F125AF4 00080008 00000000 c
  1367. 0xB5AB94 800C2520 00040000 0F125B34 00080008 00000000 r
  1368. 0xB5AB98 800C2530 00040000 0F125B74 00080008 00000000 s
  1369. 0xB5AB8C 800C2540 00040000 0F125BB4 00080008 00000000 .
  1370.  
  1371. maybe remap c, r, s to unused punctuation to avoid redoing the whole blasted interpretter.
  1372. 0x2C-0x2F open ('*', '(', ')')
  1373. Set spacing for c, r, s:
  1374.  
  1375. Could make some room by condensing tables starting at 800C1F90 (0xB5C618) into single bytes.
  1376. Pushes above to 800C23B0 (0xB5CA38).
  1377. New pointers:
  1378. 800C1F90 0x60 -> 800C1F90 0x30
  1379. 800C1FF0 0x60 -> 800C1FC0 0x30
  1380. 800C2050 0x1D4 -> 800C1FF0 0xEA
  1381. 800C2224 0x1D8 -> 800C20DA 0xEC
  1382. 800C23FC 0x1D8 -> 800C21C6 0xEC
  1383. 800C25D4 0x1DC -> 800C22B2 0xEE
  1384. 0x276 empty
  1385.  
  1386. alter pointers and offsets in tables
  1387. 0xB47A50
  1388. 0xB47A60
  1389. 0xB47A70
  1390. 0xB47A80
  1391. 0xB47A90
  1392. 0xB47AA0
  1393. 0xB47B00
  1394. 00000021 NADA
  1395. 0062C021 ADDU T8,V1,V0
  1396. BEQ
  1397. 93070000 LBU A3,0000 (T8)
  1398. 0xB47B8C
  1399. 0xB47B9C
  1400. 0xB47BAC
  1401. 0xB47BBC
  1402. 0xB47BCC
  1403. 0xB47BDC
  1404. 0xB47C20
  1405. 00000021 NADA
  1406. 0242C821 ADDU T9,S2,V0
  1407. 93280000 LBU T0,0000 (T9)
  1408. 0xB47E5C 1FC0
  1409. 0xB47E80 1FF0
  1410. 0xB47EA4 20DA
  1411. 0xB47EC8 21C6
  1412. 0xB47EEC 22B2
  1413. 0xB47F10
  1414. 0xB4800C
  1415. 00000021 NADA
  1416. 03D1C821 ADDU T9,S8,S1
  1417. 93280000 LBU T0,0000 (T9)
  1418. 0xB48124 1FC0
  1419. 0xB48144 1FF0
  1420. 0xB48164 20DA
  1421. 0xB48184 21C6
  1422. 0xB481A4 22B2
  1423. 0xB481C4
  1424. 0xB482FC
  1425. 00000021 NADA
  1426. 02F17021 ADDU T6,S7,S1
  1427. 91CF0000 LBU T7,0000 (T6)
  1428.  
  1429. 800ADFFC
  1430. ADDIU S7,S7,27B0 ->
  1431. 800AE00C
  1432. 00000021 NADA
  1433. 02E2C021 ADDU T8,S7,V0
  1434.  
  1435. @8007A428
  1436. width = call 800AD4A4(8007BD24[track+cup], 4, 0)
  1437. cup = @8007C2A0
  1438. track = @8007B9D8
  1439. description = 8007BD24[track+cup]
  1440. if width < 0:
  1441. width += 1
  1442. xpos = 0xA0 - width/2
  1443. DL = call 800AD758(p->DL, xpos, 0xD2, description, 0, 4, 0)
  1444. return DL
  1445. 8007A4C4
  1446.  
  1447.  
  1448. 800AD1E4
  1449. accepts: A0=p->char, A1=mode (False if font type 4 else True)
  1450. c = A0[0]
  1451. if 'a' <= c <= 'z':
  1452. return c - 'a' # ('a':'z') returns (0:0x19)
  1453. elif c in range(0x7B, 0x80):
  1454. return 1 if mode else (c - 0x31)
  1455. elif 'A' <= c <= 'Z':
  1456. return c - 'A' # ('A':'Z') returns (0:0x19)
  1457. elif '0' <= c <= '9':
  1458. return c - 0x10 # ('0':'9') returns (0x20:0x29)
  1459. elif c == ' ':
  1460. return -1
  1461. elif c & 0x80:
  1462. c += 0x5F # (0xA1:0xAB) returns (0:0xA)
  1463. # call 800C27C4[c]()
  1464. if c in (0, 2, 0xA):
  1465. # 800AD2CC
  1466. return call 800AD12C(A0[1])
  1467. elif c == 3:
  1468. # 800AD2AC
  1469. return call 800AD0A4(A0[1])
  1470. elif c == 4:
  1471. # 800AD2BC
  1472. return call 800AD108(A0[1])
  1473. else:
  1474. return 1
  1475. elif c < 0x3F:
  1476. c -= 0x21
  1477. # call 800C27F0[c]()
  1478. if c == 0:
  1479. return 0x1F # '!'
  1480. elif c == 1:
  1481. return 0x1B # '"'
  1482. elif c == 3:
  1483. return 0x1F # '$'
  1484. elif c == 5:
  1485. return 0x1C # '&'
  1486. elif c == 6:
  1487. return 0x1A # "'"
  1488. elif c == 7:
  1489. return 0x2D # '('
  1490. elif c == 8:
  1491. return 0x2E # ')'
  1492. elif c == 9:
  1493. return 0x2C # '*'
  1494. elif c == 0xA:
  1495. return 0x1D # '+'
  1496. elif c == 0xB:
  1497. return 0x2F # ','
  1498. elif c == 0xC:
  1499. return 0x1E # '-'
  1500. elif c == 0xD:
  1501. return 0x2B # '.'
  1502. elif c == 0x19:
  1503. return 0x2A # ':'
  1504. elif c == 0x1B:
  1505. return 0x2C # '<'
  1506. elif c == 0x1D:
  1507. return 0x2D # '>'
  1508. else:
  1509. return -2
  1510. elif c == "_":
  1511. return 0x2E
  1512. else:
  1513. return -2
  1514. 800AD394
  1515.  
  1516. 800AD4A4 V0=width of VWF string A0, using font type A1 and spacing A2
  1517. accepts: A0=p->string, A1=font type, A2=spacing
  1518. s, l, font = A0, 0, A1
  1519. # uses pointer table at 800C2880
  1520. if font == 2:
  1521. func, def = 800C1FF0, 3
  1522. elif font == 3:
  1523. func, def = 800C2050, 6
  1524. elif font == 4:
  1525. func, def = 800C2224, 3
  1526. elif font == 5:
  1527. func, def = 800C23FC, 3
  1528. elif font == 6:
  1529. func, def = 800C25D4, 3
  1530. else:
  1531. func, def = 800C1F90, 7
  1532. # 800AD570
  1533. while s[0]:
  1534. v = call 800AD1E4(s, font!=4)
  1535. if v >= 0:
  1536. l += func[v]
  1537. elif v == -1:
  1538. l += def
  1539. l += A2
  1540. s += 1 if s[0] >= 0 else 2
  1541. return l
  1542. 800AD610
  1543.  
  1544. 800AD758 V0=p->DL A0 after printing string A3 at (A1, A2) using spacing SP+18 and font type SP+14 (SP+10 is some kind of mode?)
  1545. accepts: A0=p->DL, A1=xpos, A2=ypos, A3=p->string, SP+10=spacing, SP+14=font type, SP+18=spacing
  1546. # call 800C28B0[font-1]()
  1547. if font==2:
  1548. func, SP+6C, SP+70 = 800C1FF0, 3, 800BF6A0
  1549. ypos -= 8
  1550. elif font==3:
  1551. func, SP+6C, SP+70 = 800C2050, 6, 800BFA40
  1552. ypos -= 16
  1553. elif font==4:
  1554. func, SP+6C, SP+70 = 800C2224, 3, 800C0458
  1555. ypos -= 8
  1556. elif font==5:
  1557. func, SP+6C, SP+70 = 800C23FC, 3, 800C09A4
  1558. ypos -= 16
  1559. elif font==6:
  1560. func, SP+6C, SP+70 = 800C25D4, 3, 800C1030
  1561. ypos -= 16
  1562. else:
  1563. func, SP+6C, SP+70 = 800C1F90, 7, 800BF340
  1564. ypos -= 16
  1565. # 800AD898
  1566. if not s[0]:
  1567. return
  1568. # 800AD8B8
  1569. width = call 800AD1E4(s, font==4)
  1570. if width>=0:
  1571. call 800AE17C(@SP+70[]
  1572. # 800AD99C
  1573.  
  1574. 800ADA1C
  1575.  
  1576. 800ADF74 print LCD-style digits A3 to DL A0 at (A0, A1)
  1577. accepts: A0=p->DL, A1=xpos, A2=ypos, A3=value
  1578.  
  1579. 8007BEA0
  1580. 8007BEAE
  1581. 8007BEBA
  1582. 8007BEC0
  1583. 8007BECA
  1584. 8007BED4
  1585. 8007BEDE
  1586. 8007BEEC
  1587. 8007BEF8
  1588. 8007BF04
  1589. 8007BF0E
  1590. 8007BF1A
  1591. 8007BF2A
  1592. 8007BF38
  1593. 8007BF42
  1594. 8007BF54
  1595. 8007BF5E
  1596. 8007BF68
  1597. 8007BF76
  1598. 8007BF8E
  1599. 8007BF9A
  1600. 8007BFB0
  1601. 8007BFBC
  1602. 8007BFC8
  1603. 8007BFD6
  1604. 8007BFE4
  1605. 8007BFF4
  1606. 8007BFFE
  1607. 8007C00C
  1608. 8007C018
  1609. 8007C01E
  1610. 8007C02E
  1611. 8007C03E
  1612. 8007C048
  1613. 8007C056
  1614. 8007C062
  1615.  
  1616.  
  1617. 0xB0AE48 0x2D680 start of racer names (same as 0xD41EC J, 0xD45BC E); pointers at 0xB099A4
  1618. 8006C960 キャプテン ファルコン 8006C960 CAPTAIN FALCON
  1619. 8006C978 ドクター スチュワート 8006C970 Dr. STEWART
  1620. 8006C990 ピコ 8006C97C PICO
  1621. 8006C998 サムライ ゴロー 8006C984 SAMURAI GOROH
  1622. 8006C9A8 ジョディ サマー 8006C994 JODY SUMMER
  1623. 8006C9B8 MM ガゼル 8006C9A0 MIGHTY GAZELLE
  1624. 8006C9C4 ミスター EAD 8006C9B0 Mr. EAD
  1625. 8006C9D4 ババ 8006C9B8 BABA
  1626. 8006C9DC オクトマン 8006C9C0 OCTOMAN
  1627. 8006C9E8 ゴマー&シオー 8006C9C8 GOMAR&SHIOH
  1628. 8006C9F8 ケイト アレン 8006C9D4 KATE ALEN
  1629. 8006CA08 ロジャー バスター 8006C9E0 ROGER BUSTER
  1630. 8006CA1C ジェームズ マクラウド 8006C9F0 JAMES McCLOUD
  1631. 8006CA34 レオン 8006CA00 LEON
  1632. 8006CA3C アントニオ ガスター 8006CA08 ANTONIO GUSTER
  1633. 8006CA50 ブラック シャドー 8006CA18 BLACK SHADOW
  1634. 8006CA64 マイケル チェーン 8006CA28 MICHAEL CHAIN
  1635. 8006CA78 ジャック レビン 8006CA38 JACK LEVIN
  1636. 8006CA88 スーパー アロー 8006CA44 SUPER ARROW
  1637. 8006CA98 ミセス アロー 8006CA50 Mrs. ARROW
  1638. 8006CAA8 ジョン タナカ 8006CA5C JOHN TANAKA
  1639. 8006CAB8 ビーストマン 8006CA68 BEASTMAN
  1640. 8006CAC8 ゾーダ 8006CA74 ZODA
  1641. 8006CAD0 ドクター クラッシュ 8006CA7C Dr. CLASH
  1642. 8006CAE4 シルバー ニールセン 8006CA88 SILVER NEELSEN
  1643. 8006CAF8 バイオレックス 8006CA98 BIO REX
  1644. 8006CB08 ドラク 8006CAA0 DRAQ
  1645. 8006CB10 ビリー 8006CAA8 BILLY
  1646. 8006CB18 アービン ゴードン 8006CAB0 THE SKULL
  1647. 8006CB2C ブラッド ファルコン 8006CABC BLOOD FALCON
  1648. 8006CB40 リタイア RETIRE
  1649.  
  1650.  
  1651. 80140570 0xC20A78 pilot names
  1652. Pointers to these at 0xC16B5C
  1653. 0xC20A78 80140570 MM ガゼル 80140570 MIGHTY GAZELLE
  1654. 0xC20A84 8014057C ジョディ サマー 80140580 JODY SUMMER
  1655. 0xC20A94 8014058C ドクター スチュワート 8014058C Dr. STEWART
  1656. 0xC20AAC 801405A4 ババ 80140598 BABA
  1657. 0xC20AB4 801405AC サムライ ゴロー 801405A0 SAMURAI GOROH
  1658. 0xC20AC4 801405BC ピコ 801405B0 PICO
  1659. 0xC20ACC 801405C4 キャプテン ファルコン 801405B8 CAPTAIN FALCON
  1660. 0xC20AE4 801405DC オクトマン 801405C8 OCTOMAN
  1661. 0xC20AE4 801405E8 ミスター EAD 801405D0 Mr. EAD
  1662. 0xC20AE4 801405F8 ジェームズ マクラウド 801405D8 JAMES McCLOUD
  1663. 0xC20AE4 80140610 ビリー 801405E8 BILLY
  1664. 0xC20AE4 80140618 ケイト アレン 801405F0 KATE ALEN
  1665. 0xC20AE4 80140628 ゾーダ 801405FC ZODA
  1666. 0xC20AE4 80140630 ジャック レビン 80140604 JACK LEVIN
  1667. 0xC20AE4 80140640 バイオレックス 80140610 BIO REX
  1668. 0xC20AE4 80140650 アービン ゴードン 80140618 THE SKULL
  1669. 0xC20AE4 80140664 アントニオ ガスター 80140624 ANTONIO GUSTER
  1670. 0xC20AE4 80140678 ビーストマン 80140634 BEASTMAN
  1671. 0xC20AE4 80140688 レオン 80140640 LEON
  1672. 0xC20AE4 80140690 スーパー アロー 80140648 SUPER ARROW
  1673. 0xC20AE4 801406A0 ミセス アロー 80140654 Mrs. ARROW
  1674. 0xC20AE4 801406B0 ゴマー&シオー 80140660 GOMAR&SHIOH
  1675. 0xC20AE4 801406C0 シルバー ニールセン 8014066C SILVER NEELSEN
  1676. 0xC20AE4 801406D4 マイケル チェーン 8014067C MICHAEL CHAIN
  1677. 0xC20AE4 801406E8 ブラッド ファルコン 8014068C BLOOD FALCON
  1678. 0xC20AE4 801406FC ジョン タナカ 8014069C JOHN TANAKA
  1679. 0xC20AE4 8014070C ドラク 801406A8 DRAQ
  1680. 0xC20AE4 80140714 ロジャー バスター 801406B0 ROGER BUSTER
  1681. 0xC20AE4 80140728 ドクター クラッシュ 801406C0 Dr. CLASH
  1682. 0xC20AE4 8014073C ブラック シャドー 801406CC BLACK SHADOW
  1683.  
  1684.  
  1685. +_+
  1686.  
  1687. 80705310 generate and send ASIC read/write (A1) command at A0 for length SP+10 between LBA A2 and rdram A3
  1688. accepts: A0=p->buffer for ASIC command, A1=mode {0:read, 1:write}, A2=LBA, A3=rdram, SP+10=length
  1689.  
  1690. called by
  1691. 80767958
  1692. accepts:
  1693.  
  1694. @80736618
  1695. target = @S1+2000
  1696. lba = 80771DCE[0:2] # lba 03EA/0402
  1697. cart = @807C1BE0
  1698. call 80734BF8(target, cart, lba) # loads cart and disk MML.hdr
  1699. @80736630
  1700. target = @S1+2004
  1701. lba = 80771DCA[0:2] # lba 03E8/0400
  1702. cart = @807C1BE4
  1703. call 80734BF8(target, cart, lba) # loads cart and disk MML.tbl
  1704.  
  1705.  
  1706. +_+
  1707.  
  1708. controls help images:
  1709. 07000000
  1710. クイックカメラ quick camera
  1711. 3Dスティック 3D stick カメラをまわす turn the camera
  1712. ABボタン AB buttons ズームイン・ズームアウト zoom-in ・ zoom out
  1713. スタートボタン start button エディットモードにもどろ return to edit mode
  1714.  
  1715. エディットの操作説明 editor operation controls
  1716. 3D stick 失印の趍動 ポイントムーブ move cursor or selected point
  1717. B button キヤンセル cancel
  1718. Z button ボイソトセレクト ダブルクリックでセンタルンゲ select point; center (screen) with double-click
  1719. A button 決定 コースセット set course element
  1720. start button クイックカメラに切りかえ switch to quick camera
  1721.  
  1722. カメラの操作説明 camera operation controls
  1723. L button zoom out
  1724. R button zoom in
  1725. + pad カメラを回.する rotate camera
  1726. c buttons カメラを上下左右 にスライドする slide(pan) camera up, down, left, right
  1727.  
  1728. +_+
  1729.  
  1730. Extend beyond five chars to 7+NULL
  1731. 800E4EA8 0xBD4A40
  1732. 91D80004 LBU T8,0004 (T6) -> 8DD80004 LW,0004 (T6)
  1733. 24010003 ADDIU AT,R0,0003
  1734. 00008025 OR S0,R0,R0
  1735. A0F80004 SB T8,0004 (A3) -> ACF80004 SW,0004 (A3)
  1736.  
  1737. also this one?
  1738. 0xBD45BC
  1739. 91D80004 LBU T8,0004 (T6) -> 8DD80004 LW,0004 (T6)
  1740. 24010003 ADDIU AT,R0,0003
  1741. 00008025 OR S0,R0,R0
  1742. A0F80004 SB T8,0004 (A3) -> ACF80004 SW,0004 (A3)
  1743.  
  1744. 800F7090
  1745. 0xBE6C28 208FB3DB00000000 ドウロ Road
  1746. 0xBE6C30 20488FB3DB000000 Hドウロ H-Road
  1747. 0xBE6C38 2095B29700000000 パイプ Pipe
  1748. 0xBE6C40 BCD8DD8BB0000000 シリンダー Cylinder
  1749. 0xBE6C48 CAB0CC95B2970000 ハーフパイプ Halfpipe
  1750. 0xBE6C50 20C4DDC8D9000000 トンネル Tunnel
  1751. 0xBE6C58 20BD98B0BD000000 スペース Space
  1752. 0xBE6C60 20548FB3DB000000 Tドウロ T-Road
  1753.  
  1754. 800F7150
  1755. 0xBE6CE8 83D8AF8F グリッド grid
  1756. 0xBE6CF0 8BAFBCAD ダッシュ dash
  1757. 0xBE6CF8 87ACDD97 ジャンプ jump
  1758. 0xBE6D00 C4D7AF97 トラップ trap
  1759. 0xBE6D08 B59287AA オブジェ object
  1760. 0xBE6D10 99B2DDC4 ポイント point maybe use "Size", since it tacks values to the end of this
  1761.  
  1762. 800E3580 dynamically assembles the string from hardcoded letters, the jerks
  1763. 90DDB8 バンク bank
  1764. Just change the pattern string.
  1765. 800F7274 0xBE6E0C %c%c%c -> Bank
  1766. 800F7280 0xBE6E18 %c%c%c%c -> Width
  1767.  
  1768. Clip out the first three variables, probably write centered too.
  1769. 800F73AC 0xBE6F44 %c%c%c%d -> Course %d
  1770. @800EA484 0xBDA01C
  1771. 3C018003 LUI AT,8003
  1772. NADA
  1773. NADA
  1774. NADA
  1775. 3C07800F LUI A3,800F
  1776. 27290001 ADDIU T1,T9,0001
  1777. AC202AD0 SW R0,2AD0 (AT)
  1778. AFA90010 SW T1,0010 (SP)
  1779. 24E773AC ADDIU A3,A3,73AC
  1780. NADA
  1781. NADA
  1782. NADA
  1783. 8FA40028 LW A0,0028 (SP)
  1784. 240500D8 ADDIU A1,R0,00D8
  1785. 0C00A493 JAL 8002924C
  1786. 24060050 ADDIU A2,R0,0050
  1787. 00402025 OR A0,V0,R0
  1788. @800EA4C8: move target to 800EA4B0
  1789. @800EA4D4: move target to 800EA4BC
  1790.  
  1791.  
  1792. 80119880 file menu options
  1793. 0 load
  1794. 1 save
  1795. 2 delete
  1796. 3 rename
  1797. 4 (unused) protect
  1798. 5 course select for Edit Cup tracks
  1799. 7 copy
  1800.  
  1801. ???; used w/i 800F2E4C
  1802. unlinked, displayed if 800D6CA8 == 3 [file/submenu], 80119880 == 4 [file menu option]
  1803. プロテクト_をかけたい_ファイル_を Please select the file you want to protect.
  1804. せんたくしてください
  1805. プロテクト_がすでにかかっている If the selected file is already protected
  1806. ファイル_をせんたくすると
  1807. プロテクト_をかいじょできます protection will be removed
  1808.  
  1809. message generated from following components
  1810. 0xBF4AC0 80104F28 プロテクト
  1811. 800F2FC0+800F2FCC
  1812. 800F3078+800F3080
  1813. 800F310C+800F3114
  1814. protect
  1815. 0xBF4AC8 80104F30 をかけたい
  1816. 800F2FE0+800F2FE8
  1817. --want to apply/make
  1818. 0xBF4AD0 80104F38 ファイル
  1819. 800F2FFC+800F3004
  1820. 800F30B4+800F30BC
  1821. file
  1822. 0xBF4AD8 80104F40 を
  1823. 800F3018+800F3020
  1824. 0xBF4ADC 80104F44 せんたくしてください
  1825. 800F3038+800F3040
  1826. please select
  1827. 0xBF4AE8 80104F50 がすでにかかっている
  1828. 800F3094+800F309C
  1829. it is already ???
  1830. 0xBF4AF4 80104F5C をせんたくすると
  1831. 800F30EC+800F30F4
  1832. --if you select
  1833. 0xBF4B00 80104F68 をかいじょできます
  1834. 800F3128+800F3130
  1835. --can (be) cancel(ed)
  1836.  
  1837. help tooltips
  1838. 0xBF4B0C 80104F74 さくせいしたコースを テストそうこうできます。
  1839. 800F35A4+800F35A8 BE313C+BE3140 80104F88
  1840. Test-run the created course.
  1841. 0xBF4B2C 80104F94 コースを ラインで ひょうじします。
  1842. 800F35BC+800F35C0 BE3154+BE3158 80104FA7
  1843. Display the course as a line.
  1844. 0xBF4B44 80104FAC ポイントのおきばしょをせいげんして ちょくせんをつくりやすくします。
  1845. 800F35D4+800F35D8 BE316C+BE3170 80104FC2
  1846. Make it easier to draw a straight line by limitting to homeroom points. (intervals of 50)
  1847. 0xBF4B6C 80104FD4 ベースとなるコースを つくります。
  1848. 800F3680+800F3684 BE321C 80104FDF
  1849. It will use this course as a base.
  1850. 0xBF4B84 80104FEC コースのポイントを いどうなどさせます。
  1851. 800F36C0+800F36C4 BE325C 80104FFA
  1852. It will not be such as moving the point of course.
  1853. 0xBF4BA0 80105008 どうろのタイプなどを へんこうします。
  1854. 800F3700+800F3704 BE329C 80105014
  1855. It will change, such as the type of road.
  1856. 0xBF4BBC 80105024 どうろにおけるシカケ またはビルなどを いれます。
  1857. 800F3740+800F3744 BE32DC 8010502E
  1858. It will put such gimmick or building in the road.
  1859. 0xBF4BE0 80105048 はいけいのシーンとそらを へんこうします。
  1860. 800F377C+800F3784 BE331C 80105048
  1861. It will change the background of the scene and the sky.
  1862. 0xBF4BFC 80105064 BGMを へんこうします。
  1863. 800F3798+800F37A0 BE3338 80105065
  1864. It will change the BGM.
  1865. 0xBF4C10 80105078 コースポイントを セットします。
  1866. 800F37E4+800F37E8 BE3380 80105082
  1867. It will set the course point.
  1868. 0xBF4C28 80105090 スタートの ばしょを いどうします。
  1869. 800F3800+800F3804 BE339C 80105095
  1870. It will move the start location.
  1871. 0xBF4C44 801050AC コースぜんたいを ちゅうしんにいどうします。
  1872. 800F381C+800F3820 BE33B8 801050AE
  1873. It will move the entire course to the center.
  1874. 0xBF4C64 801050CC コースの しんこうほうこうを かえます。
  1875. 800F3838+800F383C BE33D4 801050C8
  1876. It will change the direction of travel of the course.
  1877. 0xBF4C80 801050E8 コースぜんたいを けします。
  1878. 800F3854+800F3858 BE33F0 801050F3
  1879. You turn off the entire course.
  1880. 0xBF4C94 801050FC ポイントを へいこういどうさせます。
  1881. 800F38A0+800F38A4 BE343C 80105106
  1882. Point I will let the parallel movement.
  1883. 0xBF4CAC 80105114 ポイントの たかさを かえます。
  1884. 800F38BC+800F38C0 BE3458 8010511E
  1885. It changed the height of the point.
  1886. 0xBF4CC4 8010512C ポイントを ちゅうしんに みちはばを かえます。
  1887. 800F38D8+800F38DC BE3474 80105137
  1888. You can buy a road width of the point at the center.
  1889. 0xBF4CE4 8010514C ポイントを ちゅうしんに みちの かたむきを かえます。
  1890. 800F38F4+800F38F8 BE3490 80105151
  1891. The point at the center it will change the slope of the road.
  1892. 0xBF4D0C 80105174 みちはばの ちゅうしんてんを かえます。
  1893. 800F3910+800F3914 BE34AC 80105170
  1894. You can buy the Chushinten of road width.
  1895. 0xBF4D28 80105190 せんたくしたポイントを けします。
  1896. 800F392C+800F3930 BE34C8 8010518F
  1897. You turn off the point that you selected.
  1898. 0xBF4D40 801051A8 せんたくしたふくすうのポイントを まっすぐにならべます。
  1899. 800F3948+800F394C BE34E4 801051A7
  1900. It is straight arranging a plurality point of the selected.
  1901. 0xBF4D68 801051D0 ガードレールのある ふつうの どうろです。
  1902. 800F3AD0+800F3AD4 BE366C 801051CF
  1903. It is an ordinary road with guardrails.
  1904. 0xBF4D88 801051F0 たかいガードレールがセットされる どうろです。
  1905. 800F3AEC+800F3AF0 BE3688 801051F1
  1906. It is a road where high guardrail is set.
  1907. 0xBF4DA8 80105210 ガードレールがない きけんな どうろです。
  1908. 800F3B08+800F3B0C BE36A4 8010520E
  1909. Guardrail is there is no dangerous road.
  1910. 0xBF4DC8 80105230 トンネルつきの どうろです。
  1911. 800F3B24+800F3B28 BE36C0 80105233
  1912. It is a road tunnel with.
  1913. 0xBF4DDC 80105244 パイプじょうの なかをはしる どうろです。
  1914. 800F3B40+800F3B44 BE36DC 8010524B
  1915. It is a road that runs among the pipe-shaped.
  1916. 0xBF4DF8 80105260 ハーフパイプじょうの なかをはしる どうろです。
  1917. 800F3B5C+800F3B60 BE36F8 80105260
  1918. It is a road that runs among the half-pipe-shaped.
  1919. 0xBF4E18 80105280 パイプじょうの そとをはしる どうろです。
  1920. 800F3B78+800F3B7C BE3714 8010527E
  1921. This is the road that runs outside of the pipe-like.
  1922. 0xBF4E34 8010529C どうろと どうろのあいだに くうかんを つくります。
  1923. 800F3B94+800F3B98 BE3730 8010529E
  1924. It will create a space between the road and the road.
  1925. 0xBF4E58 801052C0 ポイントどうしのあいだに ループを つくります。
  1926. 800F3BB0+800F3BB4 BE374C 801052BB
  1927. We will create a loop in between of each other point.
  1928. 0xBF4E78 801052E0 エネルギーを かいふくさせるエリアです。
  1929. 800F3BFC+800F3C00 BE3798 801052DB
  1930. This area is used to recover the energy.
  1931. 0xBF4E94 801052FC いちじてきに かそくできるプレートです。
  1932. 800F3C18+800F3C1C BE37B4 801052F9
  1933. One thing is the manner accelerated can plate.
  1934. 0xBF4EB0 80105318 げんそくするエリアです。
  1935. 800F3C34+800F3C38 BE37D0 80105317
  1936. General rule This area is used to. (dirt)
  1937. 0xBF4EC0 80105328 すべりやすいエリアです。
  1938. 800F3C50+800F3C54 BE37EC 80105334
  1939. It is a slippery area.
  1940. 0xBF4ED4 8010533C ふむと ジャンプするプレートです。
  1941. 800F3C6C+800F3C70 BE3808 80105349
  1942. Hmm and it is the plate to jump.
  1943. 0xBF4EEC 80105354 ふむと とばされてダメージも うけるワナです。
  1944. 800F3C88+800F3C8C BE3824 8010535B
  1945. It is a trap that also receives damage by being skipped When you collide
  1946. 0xBF4F0C 80105374 はいけいの ゲートるいです。
  1947. 800F3CA4+800F3CA8 BE3840 80105379
  1948. It is a gate Rui background.
  1949. 0xBF4F20 80105388 はいけいの ビル いわなどです。
  1950. 800F3CC0+800F3CC4 BE385C 80105394
  1951. Background building rocks and so on.
  1952. 0xBF4F38 801053A0 はいけいの かんばんるいです。
  1953. 800F3CDC+800F3CE0 BE3878 801053AF
  1954. It is a sign Rui background.
  1955. 0xBF4F4C 801053B4 コースファイルを よみだします。
  1956. 800F3994+800F3998 BE3530 801053CB
  1957. You will read the course files.
  1958. 0xBF4F60 801053C8 コースファイルを かきこみます。
  1959. 800F39B0+800F39B4 BE354C 801053E0
  1960. You will write the course files.
  1961. 0xBF4F74 801053DC コースファイルの なまえを へんこうします。
  1962. 800F39CC+800F39D0 BE3568 801053F5
  1963. It will change the name of the course files.
  1964. 0xBF4F90 801053F8 コースファイルを けします。
  1965. 800F39E8+800F39EC BE3584 8010540D
  1966. Turn off the course files.
  1967. 0xBF4FA4 8010540C コースファイルを ほかへ コピーします。
  1968. 800F3A04+800F3A08 BE35A0 8010541E
  1969. Copy the course files to another.
  1970. 0xBF4FC0 80105428 コースファイルを エディットカップに エントリーします。
  1971. 800F3A3C+800F3A64 BE35FC 80105437
  1972. I will entry the course files to edit cup.
  1973. 0xBF4FE4 8010544C エントリーしているコースを かいじょします。
  1974. 800F3A70+800F3A74 BE360C 80105455
  1975. It will release a course that entry.
  1976. 0xBF5004 8010546C エントリーしているコースを すべてかいじょします。
  1977. 800F3A88+800F3A8C BE3624 80105470
  1978. All of the courses that are entry it will release.
  1979.  
  1980.  
  1981. 8074B120 prints "No Title"
  1982. 8074B770
  1983.  
  1984. 800290D0 V0 = p->end of A2 bytes copied from A1 to A0
  1985. accepts: A0=p->target, A1=p->src, A2=length
  1986. return A2 + call 8074B960(A0, A1, A2)
  1987. 800290F4 V0=updated DL A0 for char A3 at (A1, A2)
  1988. accepts: A0=p->DL, A1=xpos, A2=ypos, A3=char
  1989. 80032ACC = A3 // 96
  1990. if @80032ACC == 0: # ascii
  1991. dl.append(DE000000, 07020850)
  1992. elif @80032ACC == 1: # hana
  1993. dl.append(DE000000, 07020890)
  1994. A3 -= 0x60
  1995. elif @80032ACC == 2: # kana
  1996. dl.append(DE000000, 070208D0)
  1997. A3 -= 0xC0
  1998. lrx = xpos + 8
  1999. lry = ypos + 8
  2000. dl.append(E4000000 | (lrx << 14) | (lry << 2), (xpos << 14) | (ypos << 2))
  2001. dl.append(E1000000, (A3 & 15) << 0x18 | (A3 >> 4) << 8)
  2002. dl.append(F1000000, 04000400)
  2003. 80029218 V0=charcode for char A0
  2004. V0=A0 + 0x40 if (not A0 < 0x80) and (@80032AD0) else A0 - 0x20
  2005. ASCII (0x20:0x80) -> (0:0x60)
  2006. hana (0x80:0xE0) -> (0x60:0xC0)
  2007. kana (0x80:0xE0) -> (0xC0:0x120)
  2008. 8002924C V0=p->DL A0 for printed tooltip string A3 at (A1, A2)
  2009. accepts: A0=p->DL, A1=xpos, A2=ypos, A3=p->string
  2010. 80032ACC = -1
  2011. l = call 8074B120(800290D0, SP+48, s, SP+160) # returns length of expanded string A2 encoded to A1 using function A0 and vars @A3
  2012. if l < 0:
  2013. return dl
  2014. for i in SP+48: # technically for l
  2015. if i == 1:
  2016. 80032AD0 = 0
  2017. elif i == 2:
  2018. 80032AD0 = 1
  2019. dl = call 800290F4(dl, xpos, ypos, call 80029218(i))
  2020. xpos += 8
  2021. return dl
  2022. 80029350
  2023.  
  2024.  
  2025. alter widths of copied stuff; centered is 6 wchars * 8, or 48
  2026. This works because upper byte of SP+98 will always be zero (simple bool value stored as a word)
  2027. @800E32EC
  2028. if @801197EC+30:
  2029. SP+278 = call 8002924C(@SP+278, S1, S0, 800F7090 + T0*8)
  2030. else:
  2031. SP+90[0:5] = 800F7150[0:5]
  2032. 80032AD0 = 0
  2033. SP+278 = call 8002924C(@SP+278, S1, S0, SP+90)
  2034. @800E3350
  2035. hacked
  2036. @800E32F0 0xBD2E88
  2037. 3C18800F LUI T8,800F
  2038. 27047150 ADDIU A0,T8,7150
  2039. 51E00005 BEQL T7,R0,800E3310
  2040. AD200000 SW R0,0000 (T1)
  2041. 000870C0 SLL T6,T0,0x3
  2042. 27197090 ADDIU T9,T8,7090
  2043. 00000021 NADA
  2044. 032E2021 ADDU A0,T9,T6
  2045. @800E3310
  2046. 24050008 ADDIU A1,R0,0008
  2047. 0C03099D JAL 800C2674
  2048. AFA40090 SW A0,0090 (SP)
  2049. 8FB90090 LW T9,0090 (SP)
  2050. 00021042 SRL V0,V0,0x1
  2051. 26250018 ADDIU A1,S1,0018
  2052. 00A22823 SUBU A1,A1,V0
  2053. 8F2E0000 LW T6,0000 (T9)
  2054. 8F2F0004 LW T7,0004 (T9)
  2055. 8FA40278 LW A0,0278 (SP)
  2056. 27A70090 ADDIU A3,SP,0090
  2057. 02003025 OR A2,S0,R0
  2058. AFAE0090 SW T6,0090 (SP)
  2059. 0C00A493 JAL 8002924C
  2060. AFAF0094 SW T7,0094 (SP)
  2061. AFA20278 SW V0,0278 (SP)
  2062. @800E3350
  2063.  
  2064.  
  2065. new function: phys.width of string A0 up to optional length A1
  2066. 800C2670 0xB5CCF8 V0=physical width of Null-terminated string A0
  2067. 2405FFFF ADDIU A1,R0,FFFF
  2068. 800C2674 0xB5CCFC V0=physical width of A1 chars in string A0
  2069. 3C03800C LUI V1,800C
  2070. 00A42821 ADDU A1,A1,A0
  2071. 00000825 OR AT,R0,R0
  2072. 00001025 OR V0,R0,R0
  2073. 24080001 ADDIU T0,R0,0001
  2074. 24090002 ADDIU T1,R0,0002
  2075. 908B0000 LBU T3,0000 (A0)
  2076. @loop
  2077. 1160000C BEQ T3,R0,return
  2078. 006B5021 ADDU T2,V1,T3
  2079. 51680007 BEQL T3,T0,+7
  2080. 00000825 OR AT,R0,R0
  2081. 51690005 BEQL T3,T1,+5
  2082. 24010060 ADDIU AT,R0,0060
  2083. 01415021 ADDU T2,T2,AT
  2084. 914C2530 LBU T4,2530 (T2)
  2085. 318D000F ANDI T5,T4,000F
  2086. 004D1021 ADDU V0,V0,T5
  2087. 24840001 ADDIU A0,A0,0001
  2088. 1485FFF4 BNE A0,A1,loop
  2089. 908B0000 LBU T3,0000 (A0)
  2090. @return
  2091. 03E00008 JR RA
  2092. 00000000 NOP
  2093.  
  2094. Do a widths table at 800C2550 (0xB5CBD8):
  2095. F0 shift left
  2096. 0F advance
  2097. Specials at 9A-9F, for spacing 1,2,3,5,6,7.
  2098.  
  2099. @800292B0
  2100. 3C10800C LUI S0,800C
  2101. 0040B025 OR S6,V0,R0
  2102. 26102550 ADDIU S0,S0,2550
  2103. ...
  2104. @800292C8
  2105. 24010002 ADDIU AT,R0,0002
  2106. 92240000 LBU A0,0000 (S1)
  2107. 52640010 BEQL S3,A0,80029314
  2108. AE800000 SW R0,0000 (S4)
  2109. 5024000E BEQL AT,A0,80029314
  2110. AE930000 SW S3,0000 (S4)
  2111. 0C00A486 JAL 80029218
  2112. 00000000 NOP
  2113. 02021821 ADDU V1,S0,V0
  2114. 02A02025 OR A0,S5,R0
  2115. 90610000 LBU AT,0000 (V1)
  2116. 02E03025 OR A2,S7,R0
  2117. 00011902 SRL V1,AT,0x4
  2118. 00403825 OR A3,V0,R0
  2119. 3021000F ANDI AT,AT,000F
  2120. 02432823 SUBU A1,S2,V1
  2121. 0C00A43D JAL 800290F4
  2122. 02419021 ADDU S2,S2,AT
  2123. 0040A825 OR S5,V0,R0
  2124. @80029314
  2125. 26D6FFFF ADDIU S6,S6,FFFF
  2126. 16C0FFEB BNEZ S6,800292C8
  2127. 26310001 ADDIU S1,S1,0001
  2128.  
  2129. 800F3320 V0 = length of string A0
  2130. 800F335C draw box for tooltip
  2131. accepts: A0=p->p->DL, A1=ypos, A2=p->string
  2132. dl = @A0
  2133. l = call 800F3320(string)
  2134. n = 0x22 - l
  2135. w = l << 3
  2136. if n < 0:
  2137. n += 1
  2138. n >>= 1 # half of width
  2139. n <<= 3 # converted to width
  2140. SP+24 = 0x18 - n
  2141. w = 0x1A + w - n
  2142. dl.append(DE000000, 03000510)
  2143. dl.append(FA000000, FFFFFFFF)
  2144. x = 0x16 + n
  2145. dl.append(E4000000 | w<<14 | (ypos + 10)<<2, x<<14 | (ypos - 2)<<2)
  2146. dl.append(E1000000, 00000000)
  2147. dl.append(F1000000, 04000400)
  2148. dl.append(E7000000, 00000000)
  2149. dl.append(FA000000, 000000FF)
  2150. w = 0x18 + w - n + 1
  2151. dl.append(E4000000 | w<<14 | (ypos + 9)<<2, (x - 1)<<14 | (ypos - 1)<<2)
  2152. dl.append(E1000000, 00000000)
  2153. dl.append(F1000000, 04000400)
  2154. dl.append(DE000000, 03000540)
  2155. dl.append(FA000000, FFFFFFFF)
  2156. dl = call 8002924C(dl, @SP+24, ypos, p->string) # V0=p->DL A0 for printed tooltip string A3 at (A1, A2)
  2157. 800F3548
  2158.  
  2159. Convert to pixels and use widthfinder
  2160. @800F337C 0xBE2F14
  2161. 0C03099C JAL 800C2670
  2162. 00C02025 OR A0,A2,R0
  2163. 240F0110 ADDIU T7,R0,0110
  2164. 01E21823 SUBU V1,T7,V0
  2165. 00404825 OR T1,V0,R0
  2166. ...
  2167. @800F33C0 0xBE2F58
  2168. 00000021 NADA
  2169.  
  2170. 0C03CCC8 00C02025 240F0022 01E21823 000248C0
  2171. 000318C0
  2172.  
  2173.  
  2174. 0xB1AA3C センタク できません can not select / can't make selection
  2175. 0xB1AA50 センタク できません can not select / can't make selection
  2176.  
  2177. +_+
  2178.  
  2179. ASCII conversion for char codes
  2180. 0x92 +62 0-9
  2181. 0x9C +5B A-Z
  2182. 0xB6 +55 a-z
  2183. 8075BD6E (0xCE0E26) is where the shift_jis table overlaps the ASCII table for numerals and letters.
  2184. There's 0x60 room at 8006CAE0 (0xB0AFC8).
  2185. Also at 800C26EC (0xB5CD74), prob. better of the two. Enough room for a conversion table.
  2186. Aegh, have to move to 80773A50 (0xCF8B08) due to one blasted font writer.
  2187.  
  2188. index, left shift, value subtracted from width 16
  2189.  
  2190. 00 0A
  2191. ! 09 57
  2192. " 28 09
  2193. # 53 13
  2194. $ 4F 24
  2195. % 52 13
  2196. & 54 13
  2197. ' 26 1F
  2198. ( 29 92
  2199. ) 2A 0F
  2200. * 55 24
  2201. + 3B 13
  2202. , 03 0C
  2203. - 3C 13
  2204. . 04 0C
  2205. / 1E 02
  2206. 0 92 25
  2207. 1 93 37
  2208. 2 94 35
  2209. 3 95 35
  2210. 4 96 25
  2211. 5 97 35
  2212. 6 98 35
  2213. 7 99 35
  2214. 8 9A 25
  2215. 9 9B 35
  2216. : 06 56
  2217. ; 07 56
  2218. < 42 02
  2219. = 40 03
  2220. > 43 02
  2221. ? 08 25
  2222. @ 56 03
  2223. A 9C 14
  2224. B 9D 24
  2225. C 9E 24
  2226. D 9F 23
  2227. E A0 24
  2228. F A1 34
  2229. G A2 14
  2230. H A3 24
  2231. I A4 57
  2232. J A5 26
  2233. K A6 24
  2234. L A7 34
  2235. M A8 13
  2236. N A9 24
  2237. O AA 13
  2238. P AB 34
  2239. Q AC 23
  2240. R AD 24
  2241. S AE 24
  2242. T AF 14
  2243. U B0 24
  2244. V B1 24
  2245. W B2 02
  2246. X B3 24
  2247. Y B4 24
  2248. Z B5 24
  2249. [ 2D 72
  2250. \ 1F 01
  2251. ] 2E 0A
  2252. ^ 0F 46
  2253. _ 11 00
  2254. ` 25 93
  2255. a B6 35
  2256. b B7 34
  2257. c B8 35
  2258. d B9 25
  2259. e BA 35
  2260. f BB 36
  2261. g BC 24
  2262. h BD 35
  2263. i BE 57
  2264. j BF 47
  2265. k C0 35
  2266. l C1 57
  2267. m C2 13
  2268. n C3 35
  2269. o C4 35
  2270. p C5 34
  2271. q C6 25
  2272. r C7 45
  2273. s C8 35
  2274. t C9 46
  2275. u CA 35
  2276. v CB 25
  2277. w CC 03
  2278. x CD 24
  2279. y CE 34
  2280. z CF 35
  2281. { 2F 82
  2282. | 22 68
  2283. } 30 0A
  2284. ~ 20 02
  2285.  
  2286. moved from 800C26CC 0xB5CD54
  2287. 80773A30 0xCF8AE8 A0, V0, V1 = index, left offset, and width of ASCII char A0
  2288. 00040840 SLL AT,A0,0x1
  2289. 3C028077 LUI V0,800C
  2290. 00411021 ADDU V0,V0,AT
  2291. 90443A10 LBU A0,26AC (V0)
  2292. 90433A11 LBU V1,26AD (V0)
  2293. 00031102 SRL V0,V1,0x4
  2294. 03E00008 JR RA
  2295. 3063000F ANDI V1,V1,000F
  2296.  
  2297.  
  2298.  
  2299. Does have a copy of the IPL's type 2 table at 8075C690 (0xCE1748).
  2300. 8075BB20 V0 = index of shift_jis code A0 in font table or -1 if invalid NOTE! does not accept ASCII
  2301. uses table at 8005BBD8
  2302. 8075BBD8
  2303.  
  2304. 8075C620 V0 = offset to char #A0 in IPL font or -1 if invalid, where A1 is width, A2 is height, and A3 vertical offset
  2305. accepts: A0=char index, A1=p-width, A2=p->height, A3=p->vertical offset
  2306. if not 0 < A0 < 0x908:
  2307. return -1
  2308. entry = 8075C690[index]
  2309. A2 = (entry[2] & 0xF) + 1
  2310. w = (entry[2] >> 4) + 1
  2311. A1 = w | (entry[3] & 1)<<4
  2312. A3 = entry[3] >> 1
  2313. offset = entry[0:2] << 1
  2314. offset += 0x7EE80
  2315. return offset
  2316. 8075C690
  2317.  
  2318. 807602E4 V0 = -1; would have returned V0 = offset for shift_jis wchar A0 in IPL font or -1 if invalid, where A1 is width, A2 is height, and A3 vertical offset
  2319. call 8075BB20(0)
  2320. return call 8075C620(0, 0, 0, 0)
  2321. 80760320
  2322.  
  2323.  
  2324. #800EE2D0: draw box for string
  2325. S8 = 03000510
  2326. SP+40 = 03000540
  2327. S2 = call 80762B1C(8003339C[S1]) * 8
  2328. call 800EE578(S2)
  2329.  
  2330. 80025C20 V0=strlen(A0)
  2331. If newline, don't count and advance 1.
  2332. Else, count+1 and advance 2.
  2333. 80025C58 V0 = length of all strings in tables at 800331F0 and 8003339C
  2334. v = 0
  2335. for i in 800331F0: # read all pointers in table from 800331F0 to 8003326C
  2336. v += call 80025C20(i)
  2337. for i in 8003339C: # read all pointers in table from 8003339C to 800333CC
  2338. v += call 80025C20(i)
  2339. return v
  2340. 80025CD8 True if wchar A0 not in table at @8003A54C else False
  2341. accepts: A0=wchar
  2342. base = @8003A54C
  2343. for i in range(@8003A494):
  2344. if wchar == base[i]:
  2345. return False
  2346. return True
  2347. 80025D2C creates table of unique wchars in string A0 at @8003A54C
  2348. accepts: A0=p->string
  2349. pos = 0
  2350. while True:
  2351. if not s[pos]:
  2352. return
  2353. if s[pos] == 10:
  2354. pos += 1
  2355. continue
  2356. c = s[pos:pos+2]
  2357. v = call 80025CD8(c) # True if wchar not in table @8003A54C else False
  2358. if v:
  2359. @8003A54C[@8003A494] = c
  2360. @8003A494 += 1
  2361. pos += 2
  2362. 80025DE4 fill table @8003A54C with all unique wchars in strings at 800331F0 and 8003339C
  2363. v = @80030080
  2364. 80030084 = 0
  2365. for i in range(v):
  2366. stupidly increment a value pointlessly by 1 so in the end it matches v
  2367. 8003A494 = 0
  2368. call 80025D2C(@800331F0)
  2369. for i in 800331F0: # read all pointers in table from 800331F0 to 8003326C
  2370. call 80025D2C(i)
  2371. for i in 8003339C: # read all pointers in table from 8003339C to 800333CC
  2372. call 80025D2C(i)
  2373. 80025E8C V0 = index of A0 in table at @8003A54C or next index if not found
  2374. for i in range(@8003A494):
  2375. if 8003A54C[i:i+2] == A0:
  2376. break
  2377. return i
  2378. 80025ED4 fill table @8003A548 with pointers to font images for string A0
  2379. c = next(A0)
  2380. while c:
  2381. if c == 10:
  2382. next(A0)
  2383. continue
  2384. c = (c << 8) | next(A0)
  2385. v = call 80025E8C(c) # index of A0 in table at @8003A54C
  2386. @8003A548[@80030080] = 8003A488 + 0xE00 + v * 0x80
  2387. 80030080 += 1
  2388. next(A0)
  2389. 80025F98 load all wchars used by strings at 800331F0 and 8003339C and convert to list of pointers and indicies
  2390. cnt = call 80025C58() # V0 = length of all strings in tables at 800331F0 and 8003339C
  2391. 80030080 = cnt
  2392. 8003A54C = call 807084E4(0, cnt<<1)
  2393. 8003A548 = call 807084E4(0, cnt<<2)
  2394. v = call 80025DE4() # fill table @8003A54C with all unique wchars in strings at 800331F0 and 800331F0
  2395. 8003A494 = v
  2396. 8003A488 = call 807084E4(0, 0xE00 + v * 0x80)
  2397. @8003A490 += 0xE00
  2398. call 800267C4(@8003A54C) # load wchars from strings from IPL
  2399. 80030080 = 0
  2400. for i in 800331F0: # read all pointers in table from 800331F0 to 8003326C
  2401. 8003A498[@80030080] = @8003A548[@80030080]
  2402. call 80025ED4(@80030080)
  2403. 80030080 += 1
  2404. for i in 800331F0: # read all pointers in table from 800331F0 to 8003326C
  2405. 8003A518[@80030080] = @8003A548[@80030080]
  2406. call 80025ED4(@80030080)
  2407. 80030080 += 1
  2408. 800260E4 8003A490 = 0
  2409. 800260F0 V0 = updated display list A0 printing char A3 to (A1, A2)
  2410. accepts: A0=p->DL, A1=xpos, A2=ypos, A3=char
  2411. v = call 8075BB20(wchar) # V0 = index for wchar A0
  2412. req = 8003A470
  2413. req[2] = 0
  2414. req[4:8] = 8079A0A8
  2415. req[8:12] = @8003A488 + @8003A490 # p->allocated space (807F5660) + size of it (0xE00)
  2416. req[12:16] = 0xA0000 | v
  2417. req[16:20] = 0x80
  2418. @8079A340[20:24] = 2
  2419. call 80768B88(@8079A340, req, False)
  2420. call 80746000(8079A0A8, None, True)
  2421. #80026188 draw the char to DL A0 at (A1, A2)
  2422. DL.append(FD900000, @8003A488 + @8003A490)
  2423. DL.append(F5900000, 07080200)
  2424. DL.append(E6000000, 00000000)
  2425. DL.append(F3000000, 0703F800)
  2426. DL.append(E7000000, 00000000)
  2427. DL.append(F5800200, 00080200)
  2428. lry = (ypos + 0x10) << 2
  2429. lrx = (xpos + 0x10) << 2
  2430. DL.append(F2000000, 0003C03C)
  2431. xpos <<= 2
  2432. ypos <<= 2
  2433. DL.append(E4000000 | lrx << 12 | lry, xpos << 12 | ypos)
  2434. DL.append(E1000000, 00000000)
  2435. DL.append(F1000000, 04000400)
  2436. 8003A490 += 0x80
  2437. return p->DL
  2438. 800262F4 V0 = updated display list A0 printing string A3 to (A1, A2)
  2439. accepts: A0=p->DL, A1=xpos, A2=ypos, A3=p->string
  2440. if 80794E14[0] or not A3[0]:
  2441. return p->DL
  2442. for i in A3[::2]:
  2443. p->DL = call 800260F0(p->DL, xpos, ypos, i)
  2444. xpos += 0x10
  2445. return p->DL
  2446. 800263B0 V0 = updated display list A0 printing char A3 to (A1, A2)
  2447. 800264C0 print list of pre-loaded chars for warning A3 from table at 800331F0 to DL A0 at (A1, A2)
  2448. accepts: A0=p->DL, A1=xpos, A2=ypos, A3=index
  2449. s = 8003A498[index]
  2450. for i in 800331F0[index][::2]:
  2451. if not i or i==10: # if None or newline, return
  2452. return
  2453. p->DL = call 800263B0(p->DL, xpos, ypos, next(s))
  2454. xpos += 16
  2455. return p->DL
  2456. 8002656C print list of pre-loaded chars starting from SP+10 for warning A3 from table at 800331F0 to DL A0 at (A1, A2)
  2457. accepts: A0=p->DL, A1=xpos, A2=ypos, A3=index, SP+10=#chars to skip
  2458. s = 8003A498[index]
  2459. for c, i in enumerate(800331F0[index][::2]):
  2460. if not i or i==10: # if None or newline, return
  2461. if c:
  2462. c = 0
  2463. else:
  2464. break
  2465. if c:
  2466. c -= 1
  2467. else:
  2468. p->DL = call 800263B0(p->DL, xpos, ypos, next(s))
  2469. xpos += 16
  2470. return p->DL
  2471. 80026670 print list of pre-loaded chars for warning A3 from table at 8003339C to DL A0 at (A1, A2)
  2472. accepts: A0=p->DL, A1=xpos, A2=ypos, A3=index
  2473. s = 8003A518[index]
  2474. for i in 8003339C[index][::2]:
  2475. if not i or i==10: # if None or newline, return
  2476. return
  2477. p->DL = call 800263B0(p->DL, xpos, ypos, next(s))
  2478. xpos += 16
  2479. return p->DL
  2480. 8002671C load wchar A0 from IPL
  2481. accepts: A0=wchar
  2482. v = call 8075BB20(wchar) # V0 = index for wchar A0
  2483. 8003A470[2] = 0
  2484. 8003A470[4:8] = 8079A0A8
  2485. 8003A470[8:12] = @8003A490 + @8003A488
  2486. 8003A470[12:16] = 0xA0000 | v # p->allocated space (807F5660) + size of it (0xE00)
  2487. 8003A470[16:20] = 0x80
  2488. base = @8079A340
  2489. base[20:24] = 2
  2490. call 80768B88(@8079A340, 8003A470, False)
  2491. call 80746000(8079A0A8, 0, True)
  2492. @8003A490 += 0x80
  2493. 800267C4 load wchars from strings to IPL
  2494. accepts: A0=p->@8003A54C
  2495. for i in range(@8003A494):
  2496. call 8002671C(A0[i]) # load wchar A0 from IPL
  2497. 80026830 A1 = p->shift_jis string for single-byte encoded string A0
  2498. for i in A0:
  2499. if not i:
  2500. break
  2501. A1.append(800300F0[i]) # i is a byte; 800300F0 is shorts, as is A1
  2502. A1.append(b'\x00')
  2503. 80026870
  2504.  
  2505. 8002C420 display one of several file messages inside a stupid fixed-size box the jerks
  2506. accepts: A0=p->DL, A1=xpos, A2=ypos
  2507. if not @80032BD4:
  2508. return A0
  2509. v = @80119880
  2510. if v in (7, 8):
  2511. w = 0x100
  2512. else:
  2513. w = 0xB0
  2514. dl.append(DE000000, 03000510)
  2515. dl.append(FA000000, 8080FFFF)
  2516. lrx = (xpos + w + 2) << 2
  2517. lrx &= 0xFFF
  2518. lry = ypos << 2
  2519. lry &= 0xFFF
  2520. uly = (ypos - 2) << 2
  2521. uly &= 0xFFF
  2522. ulx = (xpos - 2) << 2
  2523. ulx &= 0xFFF
  2524. dl.append(E4000000 | (lrx << 12) | lry, (ulx << 12) | uly)
  2525. dl.append(E1000000, 00000000)
  2526. lry = ypos + 0x12
  2527. uly = ypos + 0x10
  2528. dl.append(F1000000, 04000400)
  2529. ...blah blah blah draws more boxes
  2530. # 8002C6C0
  2531. if @80119880 in (7, 8):
  2532. call 800264C0(dl, xpos, ypos, 0xF)
  2533. else:
  2534. call 800264C0(dl, xpos, ypos, 0)
  2535. return dl
  2536. 8002C720 V0 = updated p->DL A0 for printing single-width string A3 to (A1, A2) when 80032BD8 nonzero
  2537. accepts: A0=p->DL, A1=xpos, A2=ypos, A3=p->string, SP+10=index for message
  2538. if not 80032BD8:
  2539. return
  2540. call 80026830(A3, SP+1B4) # A1 = p->shift_jis string for single-byte encoded string A0
  2541. call 80762B78(SP+B4, 800331F0[@SP+10 + 1]) # copy string A1 to A0
  2542. SP+4C = call 80762B1C(SP+1B4) ;memlen(A0)
  2543. l = call 80762B1C(SP+B4) ;memlen(A0)
  2544. l += @SP+4C
  2545. v = 0x22 - l
  2546. dl.append(DE000000, 03000510)
  2547. w = l * 8
  2548. dl.append(FA000000, FFFFFFFF)
  2549. ...
  2550. proceeds to set display lists for printing the strings.
  2551. ...
  2552. # 8002CA04
  2553. dl = call 800262F4(dl, xpos, ypos, SP+1B4)
  2554. w = call 80762B1C(SP+1B4) << 3
  2555. dl.append(E7000000, 00000000)
  2556. dl.append(FA000000, FFFFFFFF)
  2557. dl = call 800264C0(dl, xpos + w, ypos, @SP+10 + 1)
  2558. return dl
  2559. 8002CA80 V0 = @80032BD8
  2560. 8002CA8C 80032BD8 = 0
  2561. 8002CA98 V0 = strcmp(A0, A1)
  2562. 8002CB30
  2563.  
  2564. 80762B1C V0 = memlen(A0)
  2565. 80762B78 copy string at A1 to A0
  2566. 80762BEC
  2567.  
  2568. 80025C20 0xACC3A8 V0=strlen(A0), editted to detect ASCII as ASCII
  2569. 00001025 OR V0,R0,R0
  2570. 80830000 LB V1,0000 (A0)
  2571. 10600007 BEQ V1,R0,return
  2572. 2C610020 SLTIU AT,V1,0020
  2573. 04620003 BLTZL V1,+3
  2574. 24840002 ADDIU A0,A0,0002
  2575. 1420FFFA BNE AT,R0,80025C24
  2576. 24840001 ADDIU A0,A0,0001
  2577. 1000FFF8 BEQ R0,R0,80025C24
  2578. 24420001 ADDIU V0,V0,0001
  2579. 03E00008 JR RA
  2580. 00000000 NOP
  2581. 80025C58
  2582.  
  2583. Printers rewritten to handle VWF ASCII
  2584. 800264C0 file menu messages
  2585. 8002656C help messages
  2586. 80026670
  2587.  
  2588.  
  2589. 800331F0 8003A498 8003339C 8003A518
  2590.  
  2591. 80025D2C 0xACC4B4 creates table of unique wchars in string A0 at @8003A54C
  2592. accepts: A0=p->string
  2593. 3C0A8004 LUI T2,8004
  2594. @loop
  2595. 80820000 LB V0,0000 (A0)
  2596. 10400014 BEQ V0,R0,return
  2597. 2C410020 SLTIU AT,V0,0020
  2598. 1420FFFC BNE AT,R0,loop
  2599. 24840001 ADDIU A0,A0,0001
  2600. 1C400005 BGTZ V0,+5
  2601. 8D59A494 LW T9,A494 (T2)
  2602. 00021200 SLL V0,V0,0x8
  2603. 90830000 LBU V1,0000 (A0)
  2604. 24840001 ADDIU A0,A0,0001
  2605. 00431025 OR V0,V0,V1
  2606. 272B0001 ADDIU T3,T9,0001
  2607. 8D49A54C LW T1,A54C (T2)
  2608. 1B200005 BLEZ T9,set
  2609. 85230000 LH V1,0000 (T1)
  2610. 1043FFF0 BEQ V0,V1,loop
  2611. 2739FFFF ADDIU T9,T9,FFFF
  2612. 1F20FFFC BGTZ T9,-4
  2613. 25290002 ADDIU T1,T1,0002
  2614. @set
  2615. AD4BA494 SW T3,A494 (T2)
  2616. 1000FFEB BEQ R0,R0,loop
  2617. A5220000 SH V0,0000 (T1)
  2618. @return
  2619. 03E00008 JR RA
  2620. 00000000 NOP
  2621.  
  2622. pos = 0
  2623. while True:
  2624. if not s[pos]:
  2625. return
  2626. if s[pos] == 10:
  2627. pos += 1
  2628. continue
  2629. c = s[pos:pos+2]
  2630. v = call 80025CD8(c) # True if wchar not in table @8003A54C else False
  2631. if v:
  2632. @8003A54C[@8003A494] = c
  2633. @8003A494 += 1
  2634. pos += 2
  2635. 80025DE4 fill table @8003A54C with all unique wchars in strings at 800331F0 and 800331F0
  2636. 80025ED4 0xACC65C fill table @8003A548 with pointers to font images for string A0
  2637. 27BDFFD0 ADDIU SP,SP,FFD0
  2638. AFB40024 SW S4,0024 (SP)
  2639. AFB30020 SW S3,0020 (SP)
  2640. AFB1001C SW S1,001C (SP)
  2641. AFB00018 SW S0,0018 (SP)
  2642. 3C118003 LUI S1,8003
  2643. 3C148004 LUI S4,8004
  2644. 00808025 OR S0,A0,R0
  2645. AFBF002C SW RA,002C (SP)
  2646. 2693A548 ADDIU S3,S4,A548
  2647. 2694A488 ADDIU S4,S4,A488
  2648. 26310080 ADDIU S1,S1,0080
  2649. @next
  2650. 82040000 LB A0,0000 (S0)
  2651. 10800017 BEQ A0,R0,return
  2652. 2C810020 SLTIU AT,A0,0020
  2653. 1420FFFC BNE AT,R0,-4
  2654. 26100001 ADDIU S0,S0,0001
  2655. 1C800005 BGTZ A0,+5 ;pretty sure can get away with the ASCII value as key, so long as lookup uses it
  2656. 00000000 NOP
  2657. 00041200 SLL V0,A0,0x8
  2658. 92030000 LBU V1,0000 (S0)
  2659. 26100001 ADDIU S0,S0,0001
  2660. 00432025 OR A0,V0,V1
  2661. 0C0097A3 JAL 80025E8C
  2662. 3084FFFF ANDI A0,A0,FFFF
  2663. 8E990000 LW T9,0000 (S4)
  2664. 8E2B0000 LW T3,0000 (S1)
  2665. 8E6A0000 LW T2,0000 (S3)
  2666. 0002C1C0 SLL T8,V0,0x7
  2667. 03194021 ADDU T0,T8,T9
  2668. 000B6080 SLL T4,T3,0x2
  2669. 25090E00 ADDIU T1,T0,0E00
  2670. 014C6821 ADDU T5,T2,T4
  2671. ADA90000 SW T1,0000 (T5)
  2672. 256F0001 ADDIU T7,T3,0001
  2673. 1000FFE8 BEQ R0,R0,next
  2674. AE2F0000 SW T7,0000 (S1)
  2675. @return
  2676. 8FBF002C LW RA,002C (SP)
  2677. 8FB00018 LW S0,0018 (SP)
  2678. 8FB1001C LW S1,001C (SP)
  2679. 8FB30020 LW S3,0020 (SP)
  2680. 8FB40024 LW S4,0024 (SP)
  2681. 03E00008 JR RA
  2682. 27BD0030 ADDIU SP,SP,0030
  2683.  
  2684. c = next(A0)
  2685. while c:
  2686. if c == 10:
  2687. next(A0)
  2688. continue
  2689. c = (c << 8) | next(A0)
  2690. v = call 80025E8C(c) # index of A0 in table at @8003A54C
  2691. @8003A548[@80030080] = @8003A488 + 0xE00 + v * 0x80
  2692. 80030080 += 1
  2693. next(A0)
  2694. 80025F98
  2695.  
  2696. Hack this to look at the list of previously loaded chars.
  2697. 800260F0 0xACC878 V0 = updated display list A0 printing char A3 to (A1, A2)
  2698. accepts: A0=p->DL, A1=xpos, A2=ypos, A3=char
  2699. 27BDFFE0 ADDIU SP,SP,FFE0
  2700. AFB00018 SW S0,0018 (SP)
  2701. 00808025 OR S0,A0,R0
  2702. AFBF001C SW RA,001C (SP)
  2703. AFA50024 SW A1,0024 (SP)
  2704. AFA60028 SW A2,0028 (SP)
  2705. 3C088004 LUI T0,8004
  2706. 8D09A494 LW T1,A494 (T0) ;#entries
  2707. 8D0AA54C LW T2,A54C (T0)
  2708. 00005825 OR T3,R0,R0 ;keep track from bottom up to generate an offset
  2709. 11690007 BEQ T3,T1,load
  2710. 854C0000 LH T4,0000 (T2)
  2711. 254A0002 ADDIU T2,T2,0002
  2712. 54ECFFFC BNEL A3,T4,-4
  2713. 256B0001 ADDIU T3,T3,0001
  2714. 000B11C0 SLL V0,T3,0x7 ;offset from @8003A488, passed to display list
  2715. 10000020 BEQ R0,R0,dldraw
  2716. 24420E00 ADDIU V0,V0,0E00
  2717. @load
  2718. 0C1D6EC8 JAL 8075BB20 ;V0=index for wchar A0
  2719. 00E02025 OR A0,A3,R0
  2720. 3C188004 LUI T8,8004
  2721. 2705A470 ADDIU A1,T8,A470
  2722. 3C03807A LUI V1,807A
  2723. 246EA0A8 ADDIU T6,V1,A0A8
  2724. A0A00002 SB R0,0002 (A1)
  2725. ACAE0004 SW T6,0004 (A1)
  2726. 8F0FA488 LW T7,A488 (T8)
  2727. 8F18A490 LW T8,A490 (T8)
  2728. 8C64A340 LW A0,A340 (V1)
  2729. 3C01000A LUI AT,000A
  2730. 00414821 ADDU T1,V0,AT
  2731. 240A0080 ADDIU T2,R0,0080
  2732. 01F8C821 ADDU T9,T7,T8
  2733. ACB90008 SW T9,0008 (A1)
  2734. ACA9000C SW T1,000C (A1)
  2735. ACAA0010 SW T2,0010 (A1)
  2736. 240B0002 ADDIU T3,R0,0002
  2737. AC8B0014 SW T3,0014 (A0)
  2738. 0C1DA2E2 JAL 80768B88 ;send or jam (A2) msg A1 to queue A0
  2739. 00003025 OR A2,R0,R0
  2740. 3C04807A LUI A0,807A
  2741. 2484A0A8 ADDIU A0,A0,A0A8
  2742. 00002825 OR A1,R0,R0
  2743. 0C1D1800 JAL 80746000 ;read or wait (A2) to write msg from queue A0 to A1
  2744. 24060001 ADDIU A2,R0,0001
  2745. 3C098004 LUI T1,8004
  2746. 8D22A490 LW V0,A490 (T1)
  2747. 24430080 ADDIU V1,V0,0080
  2748. AD23A490 SW V1,A490 (T1)
  2749. @dldraw
  2750. 3C0DFD90 LUI T5,FD90
  2751. 3C0E8004 LUI T6,8004
  2752. 8DCEA488 LW T6,A488 (T6)
  2753. AE0D0000 SW T5,0000 (S0)
  2754. 01C2C021 ADDU T8,T6,V0
  2755. AE180004 SW T8,0004 (S0)
  2756. 3C090708 LUI T1,0708
  2757. 35290200 ORI T1,T1,0200
  2758. 3C19F590 LUI T9,F590
  2759. AE190008 SW T9,0008 (S0)
  2760. AE09000C SW T1,000C (S0)
  2761. 3C0AE600 LUI T2,E600
  2762. AE0A0010 SW T2,0010 (S0)
  2763. AE000014 SW R0,0014 (S0)
  2764. 3C0C0703 LUI T4,0703
  2765. 358CF800 ORI T4,T4,F800
  2766. 3C0BF300 LUI T3,F300
  2767. AE0B0018 SW T3,0018 (S0)
  2768. AE0C001C SW T4,001C (S0)
  2769. 3C0DE700 LUI T5,E700
  2770. AE0D0020 SW T5,0020 (S0)
  2771. AE000024 SW R0,0024 (S0)
  2772. 8FA60024 LW A2,0024 (SP)
  2773. 8FA70028 LW A3,0028 (SP)
  2774. 3C0F0008 LUI T7,0008
  2775. 3C0EF580 LUI T6,F580
  2776. 35CE0200 ORI T6,T6,0200
  2777. 35EF0200 ORI T7,T7,0200
  2778. 24C90010 ADDIU T1,A2,0010
  2779. AE0F002C SW T7,002C (S0)
  2780. AE0E0028 SW T6,0028 (S0)
  2781. 00095080 SLL T2,T1,0x2
  2782. 3C190003 LUI T9,0003
  2783. 314B0FFF ANDI T3,T2,0FFF
  2784. 3739C03C ORI T9,T9,C03C
  2785. 3C18F200 LUI T8,F200
  2786. 000B6300 SLL T4,T3,0xC
  2787. 3C01E400 LUI AT,E400
  2788. 24EE0010 ADDIU T6,A3,0010
  2789. AE180030 SW T8,0030 (S0)
  2790. AE190034 SW T9,0034 (S0)
  2791. 000E7880 SLL T7,T6,0x2
  2792. 01816825 OR T5,T4,AT
  2793. 00064880 SLL T1,A2,0x2
  2794. 312A0FFF ANDI T2,T1,0FFF
  2795. 31F80FFF ANDI T8,T7,0FFF
  2796. 00076080 SLL T4,A3,0x2
  2797. 318E0FFF ANDI T6,T4,0FFF
  2798. 01B8C825 OR T9,T5,T8
  2799. 000A5B00 SLL T3,T2,0xC
  2800. 016E7825 OR T7,T3,T6
  2801. AE190038 SW T9,0038 (S0)
  2802. AE0F003C SW T7,003C (S0)
  2803. 3C0DE100 LUI T5,E100
  2804. AE0D0040 SW T5,0040 (S0)
  2805. AE000044 SW R0,0044 (S0)
  2806. 3C190400 LUI T9,0400
  2807. 37390400 ORI T9,T9,0400
  2808. 3C18F100 LUI T8,F100
  2809. AE180048 SW T8,0048 (S0)
  2810. AE19004C SW T9,004C (S0)
  2811. 8FBF001C LW RA,001C (SP)
  2812. 26020050 ADDIU V0,S0,0050
  2813. 8FB00018 LW S0,0018 (SP)
  2814. 03E00008 JR RA
  2815. 27BD0020 ADDIU SP,SP,0020
  2816.  
  2817. v = call 8075BB20(wchar) # V0 = index for wchar A0
  2818. req = 8003A470
  2819. req[2] = 0
  2820. req[4:8] = 8079A0A8
  2821. req[8:12] = @8003A488 + @8003A490 # p->allocated space (807F5660) + size of it (0xE00)
  2822. req[12:16] = 0xA0000 | v
  2823. req[16:20] = 0x80
  2824. @8079A340[20:24] = 2
  2825. call 80768B88(@8079A340, req, False)
  2826. call 80746000(8079A0A8, None, True)
  2827. #80026188 draw the char to DL A0 at (A1, A2)
  2828. DL.append(FD900000, @8003A488 + @8003A490)
  2829. DL.append(F5900000, 07080200)
  2830. DL.append(E6000000, 00000000)
  2831. DL.append(F3000000, 0703F800)
  2832. DL.append(E7000000, 00000000)
  2833. DL.append(F5800200, 00080200)
  2834. lry = (ypos + 0x10) << 2
  2835. lrx = (xpos + 0x10) << 2
  2836. DL.append(F2000000, 0003C03C)
  2837. xpos <<= 2
  2838. ypos <<= 2
  2839. DL.append(E4000000 | lrx << 12 | lry, xpos << 12 | ypos)
  2840. DL.append(E1000000, 00000000)
  2841. DL.append(F1000000, 04000400)
  2842. 8003A490 += 0x80
  2843. return p->DL
  2844. 800262F4 0xACCA7C V0 = updated display list A0 printing string A3 to (A1, A2)
  2845. Important note! Buffer overrun occurs when strings exceed 0x1C unloaded chars!
  2846. 3C0E8079 LUI T6,8079
  2847. 27BDFFD8 ADDIU SP,SP,FFD8
  2848. 91CF4E14 LBU T7,4E14 (T6)
  2849. AFBF0024 SW RA,0024 (SP)
  2850. 15E00026 BNE T7,R0,return
  2851. 00801025 OR V0,A0,R0
  2852. AFB50020 SW S5,0020 (SP)
  2853. AFB4001C SW S4,001C (SP)
  2854. AFB30018 SW S3,0018 (SP)
  2855. AFB20014 SW S2,0014 (SP)
  2856. 00A09025 OR S2,A1,R0
  2857. 00E0A025 OR S4,A3,R0
  2858. 00C0A825 OR S5,A2,R0
  2859. @loop
  2860. 00409825 OR S3,V0,R0
  2861. 82840000 LB A0,0000 (S4)
  2862. 0482000B BLTZL A0,wchar
  2863. 26940002 ADDIU S4,S4,0002
  2864. 2402000A ADDIU V0,R0,000A
  2865. 2C810020 SLTIU AT,A0,0020
  2866. 5082FFF9 BEQL A0,V0,loop ;if newline, push ypos down
  2867. 26B50010 ADDIU S5,S5,0010
  2868. 54200011 BNEL AT,R0,endloop
  2869. 02601025 OR V0,S3,R0
  2870. 0C1DCE8C JAL 80773A30 ;A0, V0, V1 = index, left offset, and width of ASCII char A0
  2871. 26940001 ADDIU S4,S4,0001
  2872. 02429023 SUBU S2,S2,V0
  2873. 10000004 BEQ R0,R0,print
  2874. @wchar
  2875. 9287FFFF LBU A3,FFFF (S4)
  2876. 00042200 SLL A0,A0,0x8
  2877. 00001825 OR V1,R0,R0
  2878. 00873825 OR A3,A0,A3
  2879. @print
  2880. 02402825 OR A1,S2,R0
  2881. 02602025 OR A0,S3,R0
  2882. 02A03025 OR A2,S5,R0
  2883. 26520010 ADDIU S2,S2,0010
  2884. 30E7FFFF ANDI A3,A3,FFFF
  2885. 02439023 SUBU S2,S2,V1
  2886. 0C00983C JAL 800260F0 ;V0=updated DL A0 printing char A3 to (A1, A2)
  2887. 27FFFF98 ADDIU RA,RA,FF98
  2888. @endloop
  2889. 8FB20014 LW S2,0014 (SP)
  2890. 8FB30018 LW S3,0018 (SP)
  2891. 8FB4001C LW S4,001C (SP)
  2892. 8FB50020 LW S5,0020 (SP)
  2893. @return
  2894. 8FBF0024 LW RA,0024 (SP)
  2895. 03E00008 JR RA
  2896. 27BD0028 ADDIU SP,SP,0028
  2897.  
  2898.  
  2899. 800264C0 0xACCC48 print list of pre-loaded chars for warning A3 from table at 800331F0 to DL A0 at (A1, A2)
  2900. accepts: A0=p->DL, A1=xpos, A2=ypos, A3=index
  2901. 3C028003 LUI V0,8003
  2902. 3C038004 LUI V1,8004
  2903. 244231F0 ADDIU V0,V0,31F0
  2904. 2463A498 ADDIU V1,V1,A498
  2905. 27BDFFD0 ADDIU SP,SP,FFD0
  2906. AFB00014 SW S0,0014 (SP)
  2907. AFB10018 SW S1,0018 (SP)
  2908. 00070880 SLL AT,A3,0x2
  2909. AFBF002C SW RA,002C (SP)
  2910. 00411021 ADDU V0,V0,AT
  2911. 00611821 ADDU V1,V1,AT
  2912. AFB2001C SW S2,001C (SP)
  2913. AFB30020 SW S3,0020 (SP)
  2914. AFB40024 SW S4,0024 (SP)
  2915. 8C500000 LW S0,0000 (V0)
  2916. 8C710000 LW S1,0000 (V1)
  2917. 00A09025 OR S2,A1,R0
  2918. 00809825 OR S3,A0,R0
  2919. 00C0A025 OR S4,A2,R0
  2920. @loop
  2921. 82040000 LB A0,0000 (S0)
  2922. 2C810020 SLTIU AT,A0,0020
  2923. 14200010 BNE AT,R0,return
  2924. 00001825 OR V1,R0,R0
  2925. 04820004 BLTZL A0,+4
  2926. 26100002 ADDIU S0,S0,0002
  2927. 0C1DCE8C JAL 80773A30 ;A0, V0, V1 = index, left offset, and width of ASCII char A0
  2928. 26100001 ADDIU S0,S0,0001
  2929. 02429023 SUBU S2,S2,V0
  2930. 02602025 OR A0,S3,R0
  2931. 02402825 OR A1,S2,R0
  2932. 02803025 OR A2,S4,R0
  2933. 26520010 ADDIU S2,S2,0010
  2934. 8E270000 LW A3,0000 (S1)
  2935. 0C0098EC JAL 800263B0
  2936. 02439023 SUBU S2,S2,V1
  2937. 26310004 ADDIU S1,S1,0004
  2938. 1000FFEE BEQ R0,R0,loop
  2939. 00409825 OR S3,V0,R0
  2940. @return
  2941. 02601025 OR V0,S3,R0
  2942. 8FBF002C LW RA,002C (SP)
  2943. 8FB00014 LW S0,0014 (SP)
  2944. 8FB10018 LW S1,0018 (SP)
  2945. 8FB2001C LW S2,001C (SP)
  2946. 8FB30020 LW S3,0020 (SP)
  2947. 8FB40024 LW S4,0024 (SP)
  2948. 03E00008 JR RA
  2949. 27BD0030 ADDIU SP,SP,0030
  2950.  
  2951.  
  2952. s = 8003A498[index]
  2953. for i in 800331F0[index][::2]:
  2954. if not i or i==10: # if None or newline, return
  2955. return
  2956. p->DL = call 800263B0(p->DL, xpos, ypos, next(s))
  2957. xpos += 16
  2958. return p->DL
  2959. 8002656C 0xACCCF4 print list of pre-loaded chars starting from SP+10 for warning A3 from table at 800331F0 to DL A0 at (A1, A2)
  2960. accepts: A0=p->DL, A1=xpos, A2=ypos, A3=index, SP+10=#chars to skip
  2961. 27BDFFC8 ADDIU SP,SP,FFC8
  2962. AFB50028 SW S5,0028 (SP)
  2963. AFB1001C SW S1,001C (SP)
  2964. AFB00018 SW S0,0018 (SP)
  2965. 8FB50048 LW S5,0048 (SP) ;moved after SWs to pipeline better
  2966. 00071880 SLL V1,A3,0x2
  2967. 3C118004 LUI S1,8004
  2968. 3C108003 LUI S0,8003
  2969. AFB6002C SW S6,002C (SP)
  2970. AFB40024 SW S4,0024 (SP)
  2971. AFB30020 SW S3,0020 (SP)
  2972. 02238821 ADDU S1,S1,V1
  2973. 02038021 ADDU S0,S0,V1
  2974. 00A09825 OR S3,A1,R0
  2975. 0080A025 OR S4,A0,R0
  2976. 00C0B025 OR S6,A2,R0
  2977. AFBF0034 SW RA,0034 (SP)
  2978. 8E31A498 LW S1,A498 (S1)
  2979. 10000016 BEQ R0,R0,loop
  2980. 8E1031F0 LW S0,31F0 (S0)
  2981. @800265BC
  2982. 2C810020 SLTIU AT,A0,0020
  2983. 04820004 BLTZL A0,+4
  2984. 26100002 ADDIU S0,S0,0002
  2985. 26100001 ADDIU S0,S0,0001
  2986. 54200010 BNEL AT,R0,loop
  2987. 26B5FFFF ADDIU S5,S5,FFFF
  2988. 1EA0000E BGTZ S5,+14
  2989. 26310004 ADDIU S1,S1,0004
  2990. 04800004 BLTZ A0,+4
  2991. 00001825 OR V1,R0,R0
  2992. 0C1DCE8C JAL 80773A30 ;A0, V0, V1 = index, left offset, and width of ASCII char A0
  2993. 00000000 NOP
  2994. 02629823 SUBU S3,S3,V0
  2995. 02802025 OR A0,S4,R0
  2996. 02602825 OR A1,S3,R0
  2997. 02C03025 OR A2,S6,R0
  2998. 26730010 ADDIU S3,S3,0010
  2999. 8E27FFFC LW A3,FFFC (S1)
  3000. 0C0098EC JAL 800263B0
  3001. 02639823 SUBU S3,S3,V1
  3002. 0040A025 OR S4,V0,R0
  3003. @loop
  3004. 06A00003 BLTZ S5,+3
  3005. 82040000 LB A0,0000 (S0)
  3006. 1480FFE8 BNE A0,R0,800265BC
  3007. 02801025 OR V0,S4,R0
  3008. @return
  3009. 8FBF0034 LW RA,0034 (SP)
  3010. 8FB40024 LW S4,0024 (SP)
  3011. 8FB00018 LW S0,0018 (SP)
  3012. 8FB1001C LW S1,001C (SP)
  3013. 8FB30020 LW S3,0020 (SP)
  3014. 8FB50028 LW S5,0028 (SP)
  3015. 8FB6002C LW S6,002C (SP)
  3016. 03E00008 JR RA
  3017. 27BD0038 ADDIU SP,SP,0038
  3018.  
  3019. s = 8003A498[index]
  3020. for c, i in enumerate(800331F0[index][::2]):
  3021. if not i or i==10: # if None or newline, return
  3022. if c:
  3023. c = 0
  3024. else:
  3025. break
  3026. if c:
  3027. c -= 1
  3028. else:
  3029. p->DL = call 800263B0(p->DL, xpos, ypos, next(s))
  3030. xpos += 16
  3031. return p->DL
  3032. 80026670 0xACCDF8 print list of pre-loaded chars for warning A3 from table at 8003339C to DL A0 at (A1, A2)
  3033. accepts: A0=p->DL, A1=xpos, A2=ypos, A3=index
  3034. 3C028003 LUI V0,8003
  3035. 3C038004 LUI V1,8004
  3036. 2442339C ADDIU V0,V0,339C
  3037. 08009934 J 800264D0
  3038. 2463A518 ADDIU V1,V1,A518
  3039.  
  3040. s = 8003A518[index]
  3041. for i in 8003339C[index][::2]:
  3042. if not i or i==10: # if None or newline, return
  3043. return
  3044. p->DL = call 800263B0(p->DL, xpos, ypos, next(s))
  3045. xpos += 16
  3046. return p->DL
  3047.  
  3048. 800266A8 0xACCE30 width of longest line in string A0
  3049. 27BDFFE8 ADDIU SP,SP,FFE8
  3050. AFBF0014 SW RA,0014 (SP)
  3051. 00802825 OR A1,A0,R0
  3052. 00004825 OR T1,R0,R0
  3053. 00004025 OR T0,R0,R0
  3054. 80A40000 LB A0,0000 (A1)
  3055. 2C810020 SLTIU AT,A0,0020
  3056. 14200009 BNE AT,R0,return
  3057. 24A50001 ADDIU A1,A1,0001
  3058. 25080010 ADDIU T0,T0,0010
  3059. 0482FFFA BLTZL A0,-6
  3060. 24A50001 ADDIU A1,A1,0001
  3061. 0C1DCE8C JAL 80773A30 ;A0, V0, V1 = index, left offset, and width of ASCII char A0
  3062. 00000000 NOP
  3063. 00431021 ADDU V0,V0,V1
  3064. 1000FFF5 BEQ R0,R0,-11
  3065. 01024023 SUBU T0,T0,V0
  3066. @return
  3067. 0128082A SLT AT,T1,T0
  3068. 54200001 BNEL AT,R0,+1
  3069. 01004825 OR T1,T0,R0
  3070. 1480FFEF BNE A0,R0,-17
  3071. 01201025 OR V0,T1,R0
  3072. 8FBF0014 LW RA,0014 (SP)
  3073. 03E00008 JR RA
  3074. 27BD0018 ADDIU SP,SP,0018
  3075.  
  3076. 8002C420 0xAD2BA8 display one of several file messages inside a stupid fixed-sze box the jerks
  3077. accepts: A0=p->DL, A1=xpos, A2=ypos
  3078. 27BDFFA8 ADDIU SP,SP,FFA8
  3079. 3C038003 LUI V1,8003
  3080. 24A50003 ADDIU A1,A1,0003
  3081. AFB00018 SW S0,0018 (SP)
  3082. AFBF001C SW RA,001C (SP)
  3083. 8C6E2BD4 LW T6,2BD4 (V1)
  3084. AFA5005C SW A1,005C (SP) ;xpos
  3085. 00C08025 OR S0,A2,R0 ;ypos
  3086. 51C000B2 BEQL T6,R0,+179
  3087. 00801025 OR V0,A0,R0
  3088. 3C028012 LUI V0,8012
  3089. 8C429880 LW V0,9880 (V0)
  3090. AFA40058 SW A0,0058 (SP)
  3091. 2448FFF9 ADDIU T0,V0,FFF9
  3092. 2D010002 SLTIU AT,T0,0002
  3093. 54200001 BNEL AT,R0,+1
  3094. 2463003C ADDIU V1,V1,003C
  3095. 0C0099AA JAL 800266A8 ;width of string A0
  3096. 8C6431F0 LW A0,31F0 (V1)
  3097. 24470006 ADDIU A3,V0,0006 ;adds padding to string width
  3098. 3C0AE100 LUI T2,E100
  3099. 3C0FDE00 LUI T7,DE00
  3100. 8FA40058 LW A0,0058 (SP)
  3101. `strike this line
  3102. 3C180300 LUI T8,0300
  3103. 27180510 ADDIU T8,T8,0510
  3104. 24840008 ADDIU A0,A0,0008
  3105. AC8FFFF8 SW T7,FFF8 (A0)
  3106. AC98FFFC SW T8,FFFC (A0)
  3107. @8002C478 go on to add +3, -3 to box width when printing
  3108. ...
  3109. @8002C4A8 0xAD2C30
  3110. 8FAD005C LW T5,005C (SP)
  3111. 3C01E400 LUI AT,E400
  3112. 00103080 SLL A2,S0,0x2
  3113. 01A77823 SUBU T7,T5,A3
  3114. ...
  3115. @8002C4D8
  3116. AFAF005C SW T7,005C (SP)
  3117. AC980000 SW T8,0000 (A0)
  3118. ...
  3119. @8002C504
  3120. AC980004 SW T8,0004 (A0)
  3121. ...
  3122. @8002C6D0 0xAD2E58
  3123. 8FA5005C LW A1,005C (SP)
  3124. 02003025 OR A2,S0,R0
  3125. 00003825 OR A3,R0,R0
  3126. 50410001 BEQL V0,AT,+1
  3127. 2407000F ADDIU A3,R0,000F
  3128. 24010008 ADDIU AT,R0,0008
  3129. 50410001 BEQL V0,AT,+1
  3130. 2407000F ADDIU A3,R0,000F
  3131. 24A50003 ADDIU A1,A1,0003
  3132. 0C009930 JAL 800264C0
  3133. 27FF0008 ADDIU RA,RA,0008
  3134. 00000021 NADA
  3135. 00000021 NADA
  3136.  
  3137. tinker with positions so it prints left from xpos using 8002C420.
  3138. @800EDFD0 0xBDDB68
  3139. 240500BD ADDIU A1,R0,00BD
  3140. ...
  3141. @800EE01C 0xBDDBB4
  3142. 240500EB ADDIU A1,R0,00EB
  3143. ...
  3144. @800EE044 0xBDDBDC
  3145. 240500EB ADDIU A1,R0,00EB
  3146.  
  3147. 8075BB20 0xCE0BD8 V0 = index of shift_JIS or ASCII wchar A0
  3148. 2C810080 SLTIU AT,A0,0080
  3149. 14200026 BNEZ AT,ASCII
  3150. 34018140 ORI AT,R0,8140
  3151. 0081082A SLT AT,A0,AT
  3152. 14200027 BNEZ AT,return
  3153. 34019873 ORI AT,R0,9873
  3154. 0081082A SLT AT,A0,AT
  3155. 50200024 BEQL AT,R0,return
  3156. 00001025 OR V0,R0,R0
  3157. 34018800 ORI AT,R0,8800
  3158. 0081082A SLT AT,A0,AT
  3159. 00042A02 SRL A1,A0,0x8
  3160. 1420000D BNEZ AT,8075BB84
  3161. 240600BC ADDIU A2,R0,00BC
  3162. 20A5FF78 ADDI A1,A1,FF78
  3163. 00C50019 MULTU A2,A1
  3164. 308700FF ANDI A3,A0,00FF
  3165. 20E7FFC0 ADDI A3,A3,FFC0
  3166. 28E10040 SLTI AT,A3,0040
  3167. 00003012 MFLO A2
  3168. 50200001 BEQL AT,R0,+1
  3169. 20E7FFFF ADDI A3,A3,FFFF
  3170. 20E7030A ADDI A3,A3,030A
  3171. 00E63820 ADD A3,A3,A2
  3172. 03E00008 JR RA
  3173. 000711C0 SLL V0,A3,0x7
  3174. @8075BB84
  3175. 20A5FF7F ADDI A1,A1,FF7F
  3176. 00C50019 MULTU A2,A1
  3177. 308700FF ANDI A3,A0,00FF
  3178. 20E7FFC0 ADDI A3,A3,FFC0
  3179. 28E10040 SLTI AT,A3,0040
  3180. 00003012 MFLO A2
  3181. 50200001 BEQL AT,R0,+1
  3182. 20E7FFFF ADDI A3,A3,FFFF
  3183. 00E63821 ADDU A3,A3,A2
  3184. 3C058076 LUI A1,8076
  3185. 00073840 SLL A3,A3,0x1
  3186. 00E52820 ADD A1,A3,A1
  3187. 1000FFF1 BEQ R0,R0,-15
  3188. 84A7BBD8 LH A3,BBD8 (A1)
  3189. @ASCII
  3190. 3C068077 LUI A2,800C
  3191. 00042040 SLL A0,A0,0x1
  3192. 00C41821 ADDU V1,A2,A0
  3193. 90623A10 LBU V0,26AC (V1)
  3194. @return
  3195. 03E00008 JR RA
  3196. 000211C0 SLL V0,V0,0x7
  3197.  
  3198. Move [?] icon to align to text (probably)
  3199. Uses two string length finders, though neither user looks at the first's results.
  3200. 800F2AC0 800F3DE0, 800EE6C8
  3201. V0 = #non-newline chars
  3202. 800F2AF4 800F3DEC, 800EE6E4
  3203. V0 = longest line of non-newline chars
  3204.  
  3205. 80119890 1 if clearing one course, 2 if clearing all
  3206. 800EA948 0xBDA4E0 display one of two! terrible messages
  3207. 800F3084 0xBE2C1C
  3208. 3C0E800D LUI T6,800D
  3209. 8DCE6CA8 LW T6,6CA8 (T6)
  3210. 27BDFFD0 ADDIU SP,SP,FFD0
  3211. 24010023 ADDIU AT,R0,0023
  3212. AFBF001C SW RA,001C (SP)
  3213. 15C10024 BNE T6,AT,800EA998 ;skip if in a different mode
  3214. AFA40030 SW A0,0030 (SP)
  3215. 3C088012 LUI T0,8012
  3216. 8C980000 LW T8,0000 (A0) ;p->DL
  3217. 8D089890 LW T0,9890 (T0) ;80119890 is suboption for menu
  3218. 2501FFFE ADDIU AT,T0,FFFE
  3219. 3C078003 LUI A3,8003
  3220. 14020009 BNE AT,R0,clear
  3221. AFB80020 SW T8,0020 (SP)
  3222. @clearall
  3223. 24190017 ADDIU T9,R0,0017 ;string 17
  3224. 8CE7324C LW A3,324C (A3) ;p->string 17
  3225. 00002825 OR A1,R0,R0
  3226. 24060048 ADDIU A2,R0,0048
  3227. 27A40020 ADDIU A0,SP,0020 ;p->p->DL
  3228. AFB90010 SW T9,0010 (SP) ;string #17, DESPITE LOADING THE STRING
  3229. 0C03BB35 JAL 800EECD4
  3230. 27FF0044 ADDIU RA,RA,0044
  3231. @clear
  3232. 0C0099AA JAL 800266A8 ;0C009764 JAL 80025D90
  3233. 8CE431EC LW A0,31EC (A3) ;p->string
  3234. 3407843F ORI A3,R0,843F
  3235. 2408FFEC ADDIU T0,R0,FFEC ;printing to 0x52
  3236. 24060001 ADDIU A2,R0,0001
  3237. 00402825 OR A1,V0,R0
  3238. AFA80010 SW T0,0010 (SP)
  3239. 0C00BABD JAL 8002EAF4 ;alternate entry where SP+10 is Y offset
  3240. 8FA40020 LW A0,0020 (SP)
  3241. 3C078003 LUI A3,8003
  3242. 3C058004 LUI A1,8004
  3243. 27A40020 ADDIU A0,SP,0020
  3244. 94A6BBA8 LHU A2,BBA8 (A1)
  3245. 94A5BBA0 LHU A1,BBA0 (A1)
  3246. 8CE731EC LW A3,31EC (A3)
  3247. 0C1C3DB2 JAL 8070F6C8
  3248. AFA20020 SW V0,0020 (SP)
  3249. @setdl
  3250. 8FA80020 LW T0,0020 (SP)
  3251. 8FA90030 LW T1,0030 (SP)
  3252. AD280000 SW T0,0000 (T1)
  3253. @800EA998
  3254. 8FBF001C LW RA,001C (SP)
  3255. 03E00008 JR RA
  3256. 27BD0030 ADDIU SP,SP,0030
  3257.  
  3258.  
  3259. Might need to use 8002EA10 directly to draw boxes. Or hack 8002EAF0 to accept an optional vertical offset...
  3260. 8002EAF0 0xAD5278
  3261. AFA00010 SW R0,0010 (SP) ;push everything else forward 1 opcode
  3262. ...
  3263. @8002EB34 0xAD52BC use a table instead, and modify the values
  3264. 2CC10005 SLTIU AT,A2,0005
  3265. 3C038004 LUI V1,8004
  3266. 10C00011 BEQ A2,R0,8002EC94
  3267. 2463BBA8 ADDIU V1,V1,BBA8
  3268. 1020000F BEQ AT,R0,8002EC94
  3269. 3C088003 LUI T0,8003
  3270. 00066040 SLL T4,A2,0x1
  3271. 51600001 BEQL T3,R0,+1
  3272. 25080008 ADDIU T0,T0,0008
  3273. 010C4021 ADDU T0,T0,T4
  3274. 8FA10030 LW AT,0030 (SP) ;y correction to fix an edge-case
  3275. 950EEBD2 LHU T6,EBD2 (T0)
  3276. 01C17021 ADDU T6,T6,AT
  3277. 25CF0014 ADDIU T7,T6,0014
  3278. 25D80028 ADDIU T8,T6,0028
  3279. 25D9003C ADDIU T9,T6,003C
  3280. A46E0000 SH T6,0000 (V1)
  3281. A46F0002 SH T7,0002 (V1)
  3282. A4780004 SH T8,0004 (V1)
  3283. A4790006 SH T9,0006 (V1)
  3284. ...@8002EC94 0xAD541C use A2 instead of a copy
  3285. 00065840 SLL T3,A2,0x1
  3286.  
  3287. Yes, these can be calculated but not like there isn't room for a table.
  3288. @8002EBD4 0xAD535C
  3289. 006E 006B 0068 0065
  3290. 006E 0064 005A 0050
  3291.  
  3292.  
  3293. Convert these to center box, starting at a certain ypos.
  3294. 8002EBE4 0xAD536C V0=updated DL A2 for box in color SP+10 with A1 lines at A3, fit to strings A0
  3295. accepts: A0=p->string pointers, A1=#lines, A2=p->DL, A3=ypos, SP+10=color
  3296. 27BDFFE8 ADDIU SP,SP,FFE8
  3297. 00051900 SLL V1,A1,0x4
  3298. 00671821 ADDU V1,V1,A3
  3299. AFBF0014 SW RA,0014 (SP)
  3300. AFA60020 SW A2,0020 (SP)
  3301. AFA70024 SW A3,0024 (SP)
  3302. 0C00BB23 JAL 8002EC8C ;V0=longest of A1 strings at A0
  3303. AFA3001C SW V1,001C (SP)
  3304. 24420006 ADDIU V0,V0,0006
  3305. 00021842 SRL V1,V0,0x1
  3306. 8FA40020 LW A0,0020 (SP)
  3307. 8FBF0014 LW RA,0014 (SP)
  3308. 246700A0 ADDIU A3,V1,00A0
  3309. 8FA60024 LW A2,0024 (SP)
  3310. 8FA8001C LW T0,001C (SP)
  3311. 8FA10028 LW AT,0028 (SP)
  3312. 00E22823 SUBU A1,A3,V0
  3313. 27BD0018 ADDIU SP,SP,0018
  3314. 3C098004 LUI T1,8004
  3315. AFA80010 SW T0,0010 (SP)
  3316. AFA10014 SW AT,0014 (SP)
  3317. 0800BA84 J 8002EA10 ;V0=updated DL A0 for box in color SP+14 drawn at (A1,A2),(A3,SP+10)
  3318. A525BBA0 SH A1,BBA0 (T1)
  3319. 24A30003 ADDIU V1,A1,0003
  3320. 0800BA84 J 8002EA10 ;V0=updated DL A0 for box in color SP+14 drawn at (A1,A2),(A3,SP+10)
  3321. A523BBA0 SH V1,BBA0 (T1)
  3322.  
  3323. Let's make a thing that takes a list of string pointers and #entries, returning longest line.
  3324. 8002EC8C 0xAD5414 V0=longest of A1 strings at A0
  3325. accepts: A0=p->string pointers, A1=#entries (1-4)
  3326. 27BDFFD8 ADDIU SP,SP,FFD8
  3327. AFBF0024 SW RA,0024 (SP)
  3328. AFB20020 SW S2,0020 (SP)
  3329. AFB1001C SW S1,001C (SP)
  3330. AFB00018 SW S0,0018 (SP)
  3331. 00009025 OR S2,R0,R0
  3332. 24B1FFFF ADDIU S1,A1,FFFF
  3333. 00808025 OR S0,A0,R0
  3334. 0C0099AA JAL 800266A8 ;width of string A0
  3335. 8E040000 LW A0,0000 (S0)
  3336. 0242082A SLT AT,S2,V0
  3337. 26100004 ADDIU S0,S0,0004
  3338. 54200001 BNEL AT,R0,+1
  3339. 00409025 OR S2,V0,R0
  3340. 1E20FFF9 BGTZ S1,-7
  3341. 2631FFFF ADDIU S1,S1,FFFF
  3342. 02401025 OR V0,S2,R0
  3343. 8FBF0024 LW RA,0024 (SP)
  3344. 8FB20020 LW S2,0020 (SP)
  3345. 8FB1001C LW S1,001C (SP)
  3346. 8FB00018 LW S0,0018 (SP)
  3347. 03E00008 JR RA
  3348. 27BD0028 ADDIU SP,SP,0028
  3349.  
  3350. Basically don't touch. Happens to line up, and writing a finder for width of string before 8140 is annoying.
  3351. @800F3DDC: 0xBE3974 replace with width finder instead, though unused?
  3352. LUI A0,8003
  3353. 0C0099AA JAL 800266A8 ;width of string A0
  3354. LW A0,3248 (A0)
  3355. LUI A0,8003
  3356. 0C0099AA JAL 800266A8 ;width of string A0
  3357. LW A0,3248 (A0)
  3358. @800F3DF4
  3359. 240D0220 ADDIU T5,R0,0220 ;midpoint of displayable screen
  3360. SUBU A1,T5,V0
  3361. LUI A3,8003
  3362. ADDIU T6,R0,0016 ;text line#
  3363. SW T6,0010 (SP)
  3364. LW A3,3248 (A3)
  3365. ADDIU A0,SP,0078
  3366. BGEZ A1,+2
  3367. ADDU AT,A1,R0
  3368. ADDIU AT,A1,0001
  3369. SRA A1,AT,0x1
  3370. 00000020 NADA
  3371. ADDIU A1,A1,0018 ;0x18 is left edge
  3372. JAL 800EECD4
  3373. ADDIU A2,R0,0058
  3374. @800F3E30
  3375. ..
  3376. @800F3E54
  3377. LUI T9,0900
  3378. ADDIU T9,T9,2788
  3379.  
  3380. in 800EECD4, drawing box and printing text!
  3381. @800EED28 0xBDE8C0
  3382. 24150110 ADDIU S5,R0,0110
  3383. ...
  3384. @800EED40 0xBDE8D8 JAL 80762B1C -> 800266A8
  3385. 0C0099AA JAL 800266A8
  3386. OR A0,S6,R0
  3387. 24420006 ADDIU V0,V0,0006 ;pad text width so window is more awesome
  3388. SUBU V1,S5,V0
  3389. BGEZ V1,+2
  3390. ADDU AT,V1,R0
  3391. ADDIU AT,V1,0001
  3392. SRA V1,AT,0x1
  3393. ...
  3394. @800EED70 0xBDE908
  3395. 2474FFFD ADDIU S4,V1,FFFD ;S4 is xpos, -3 so window frame is more awesome
  3396. ...
  3397. @800EEDEC 0xBDE984
  3398. 02E0C025 OR T8,S7,R0
  3399. ...
  3400. @800EF024 0xBDEBBC
  3401. 26850003 ADDIU A1,S4,0003 ;text appears at xpos origially given
  3402.  
  3403. 800EE6E4 0xBDE27C gets width of string, used to draw box
  3404. 0C0099AA JAL 800266A8 ;JAL 800F2AF4
  3405. LW A0,31F0 (A0)
  3406. LUI V1,8010
  3407. LW V1,4380 (V1)
  3408. 240C0110 ADDIU T4,R0,0110
  3409. SUBU A1,T4,V0
  3410. LUI A3,8003
  3411. SLL T5,V1,0x2
  3412. ADDU A3,A3,T5
  3413. LW A3,31F0 (A3)
  3414. ADDIU A0,SP,0050
  3415. BGEZ A1,+2
  3416. ADDU AT,A1,R0
  3417. ADDIU AT,A1,0001
  3418. SRA A1,AT,0x1
  3419. 00000020 NADA ;SLL A1,A1,0x3
  3420.  
  3421. Rollover from existing function works, but could relink properly by using "copy" as a base.
  3422. 800F2E44 0xBE29DC
  3423. 8FA40000 LW A0,0000 (SP)
  3424. 00000020 NADA
  3425.  
  3426. new:
  3427. 0xBF4AC0 80104F28 Select a file.
  3428. 0xBF4AD0 80104F38 Protection will be added (yellow)
  3429. 0xBF4AE9 80104F51 to unprotected files (yellow)
  3430. 0xBF4AFE 80104F66 or
  3431. 0xBF4AB2 80104F6A removed if already (yellow)
  3432. 0xBF4B14 80104F7C protected. (yellow)
  3433.  
  3434. replacable!
  3435. 800F3600
  3436. 800F61DC
  3437. @800F6288 0xBE5E20
  3438. 0803CB93 J 800F2E4C
  3439.  
  3440. 800F2E4C 0xBE29E4 revised "protect" prompt to use static lines.
  3441. 27BDFFD8 ADDIU SP,SP,FFD8
  3442. 3C0E800D LUI T6,800D
  3443. 8DCE6CA8 LW T6,6CA8 (T6)
  3444. 24010003 ADDIU AT,R0,0003
  3445. AFBF0024 SW RA,0024 (SP)
  3446. AFB20020 SW S2,0020 (SP)
  3447. AFB1001C SW S1,001C (SP)
  3448. AFB00018 SW S0,0018 (SP)
  3449. 15C1007F BNE T6,AT,800F314C
  3450. AFA40028 SW A0,0028 (SP)
  3451. 3C0F8012 LUI T7,8012
  3452. 8DEF9880 LW T7,9880 (T7)
  3453. 24010004 ADDIU AT,R0,0004
  3454. 3C08FA00 LUI T0,FA00
  3455. 15E10079 BNE T7,AT,800F314C
  3456. 3C0BDE00 LUI T3,DE00
  3457. @800F2E8C
  3458. 8C840000 LW A0,0000 (A0)
  3459. 3C190300 LUI T9,0300
  3460. 27390510 ADDIU T9,T9,0510
  3461. AC8B0000 SW T3,0000 (A0)
  3462. AC990004 SW T9,0004 (A0)
  3463. 240EFFFF ADDIU T6,R0,FFFF
  3464. AC8E000C SW T6,000C (A0)
  3465. AC880008 SW T0,0008 (A0)
  3466. 3C0FE426 LUI T7,E426
  3467. 3C180005 LUI T8,0005
  3468. 37188178 ORI T8,T8,8178
  3469. 35EF8228 ORI T7,T7,8228
  3470. AC8F0010 SW T7,0010 (A0)
  3471. AC980014 SW T8,0014 (A0)
  3472. 3C0CE100 LUI T4,E100
  3473. AC8C0018 SW T4,0018 (A0)
  3474. AC80001C SW R0,001C (A0)
  3475. 3C1F0400 LUI RA,0400
  3476. 3C0DF100 LUI T5,F100
  3477. 37FF0400 ORI RA,RA,0400
  3478. AC9F0024 SW RA,0024 (A0)
  3479. AC8D0020 SW T5,0020 (A0)
  3480. 3C19E700 LUI T9,E700
  3481. AC990028 SW T9,0028 (A0)
  3482. AC80002C SW R0,002C (A0)
  3483. 240E00FF ADDIU T6,R0,00FF
  3484. AC8E0034 SW T6,0034 (A0)
  3485. AC880030 SW T0,0030 (A0)
  3486. 3C180005 LUI T8,0005
  3487. 3C0FE426 LUI T7,E426
  3488. 35EF4224 ORI T7,T7,4224
  3489. 3718C17C ORI T8,T8,C17C
  3490. AC98003C SW T8,003C (A0)
  3491. AC8F0038 SW T7,0038 (A0)
  3492. AC800044 SW R0,0044 (A0)
  3493. AC8C0040 SW T4,0040 (A0)
  3494. AC9F004C SW RA,004C (A0)
  3495. AC8D0048 SW T5,0048 (A0)
  3496. 3C190300 LUI T9,0300
  3497. 27390540 ADDIU T9,T9,0540
  3498. AC990054 SW T9,0054 (A0)
  3499. AC8B0050 SW T3,0050 (A0)
  3500. 240FFFFF ADDIU T7,R0,FFFF
  3501. 3C0EFA00 LUI T6,FA00
  3502. AC8E0058 SW T6,0058 (A0)
  3503. AC8F005C SW T7,005C (A0)
  3504. 3C18E300 LUI T8,E300
  3505. 3C118003 LUI S1,8003
  3506. 37181201 ORI T8,T8,1201
  3507. 26312AD0 ADDIU S1,S1,2AD0
  3508. AC980060 SW T8,0060 (A0)
  3509. AC800064 SW R0,0064 (A0)
  3510. @800F2FC0: print first line at (18, 60)
  3511. 24100060 ADDIU S0,R0,0060
  3512. 3C078010 LUI A3,8010
  3513. 24840068 ADDIU A0,A0,0068
  3514. AE200000 SW R0,0000 (S1)
  3515. 24E74F28 ADDIU A3,A3,4F28
  3516. 24050018 ADDIU A1,R0,0018
  3517. 0C00A493 JAL 8002924C
  3518. 02003025 OR A2,S0,R0
  3519. @800F2FDC: print second line to (18, 68) in yellow
  3520. 3C0FFFFF LUI T7,FFFF
  3521. 3C19E700 LUI T9,E700
  3522. 35EF00FF ORI T7,T7,00FF
  3523. 3C0EFA00 LUI T6,FA00
  3524. AC590000 SW T9,0000 (V0)
  3525. AC400004 SW R0,0004 (V0)
  3526. AC4E0008 SW T6,0008 (V0)
  3527. AC4F000C SW T7,000C (V0)
  3528. 3C078010 LUI A3,8010
  3529. AE320000 SW S2,0000 (S1)
  3530. 24E74F38 ADDIU A3,A3,4F38
  3531. 26060008 ADDIU A2,S0,0008
  3532. 24440010 ADDIU A0,V0,0010
  3533. 0C00A493 JAL 8002924C
  3534. 24050018 ADDIU A1,R0,0018
  3535. @800F3054: print third line to (18, 70) in yellow
  3536. 3C078010 LUI A3,8010
  3537. AE200000 SW R0,0000 (S1)
  3538. 24E74F51 ADDIU A3,A3,4F51
  3539. 26060010 ADDIU A2,S0,0010
  3540. 00402025 OR A0,V0,R0
  3541. 0C00A493 JAL 8002924C
  3542. 24050018 ADDIU A1,R0,0018
  3543. @800F30D0: print "or " to (18, 78) in white
  3544. 3C18E700 LUI T8,E700
  3545. 3C19FA00 LUI T9,FA00
  3546. 240EFFFF ADDIU T6,R0,FFFF
  3547. AC580000 SW T8,0000 (V0)
  3548. AC400004 SW R0,0004 (V0)
  3549. AC4E000C SW T6,000C (V0)
  3550. AC590008 SW T9,0008 (V0)
  3551. 3C078010 LUI A3,8010
  3552. AE320000 SW S2,0000 (S1)
  3553. 24E74F66 ADDIU A3,A3,4F66
  3554. 24440010 ADDIU A0,V0,0010
  3555. 24050018 ADDIU A1,R0,0018
  3556. 0C00A493 JAL 8002924C
  3557. 26060018 ADDIU A2,S0,0018
  3558. 3C0FFFFF LUI T7,FFFF
  3559. 3C19E700 LUI T9,E700
  3560. 35EF00FF ORI T7,T7,00FF
  3561. 3C0EFA00 LUI T6,FA00
  3562. AC590000 SW T9,0000 (V0)
  3563. AC400004 SW R0,0004 (V0)
  3564. AC4E0008 SW T6,0008 (V0)
  3565. AC4F000C SW T7,000C (V0)
  3566. 3C078010 LUI A3,8010
  3567. AE320000 SW S2,0000 (S1)
  3568. 24E74F6A ADDIU A3,A3,4F6A
  3569. 26060018 ADDIU A2,S0,0018
  3570. 24440010 ADDIU A0,V0,0010
  3571. 0C00A493 JAL 8002924C
  3572. 24050027 ADDIU A1,R0,0027
  3573. 3C078010 LUI A3,8010
  3574. AE200000 SW R0,0000 (S1)
  3575. 24E74F7D ADDIU A3,A3,4F7D
  3576. 26060020 ADDIU A2,S0,0020
  3577. 00402025 OR A0,V0,R0
  3578. 0C00A493 JAL 8002924C
  3579. 24050018 ADDIU A1,R0,0018
  3580. 8FAF0028 LW T7,0028 (SP)
  3581. ADE20000 SW V0,0000 (T7)
  3582. @800F314C
  3583. 8FBF0024 LW RA,0024 (SP)
  3584. 8FB00018 LW S0,0018 (SP)
  3585. 8FB1001C LW S1,001C (SP)
  3586. 8FB20020 LW S2,0020 (SP)
  3587. 03E00008 JR RA
  3588. 27BD0028 ADDIU SP,SP,0028
  3589. ...
  3590. 800F3164 0xBE2CFC
  3591.  
  3592.  
  3593. 800EE578 0xBDE110 compute window xpos
  3594. 3C038013 LUI V1,8013
  3595. 8C638CA0 LW V1,8CA0 (V1)
  3596. 24070110 ADDIU A3,R0,0110
  3597. 00E27023 SUBU T6,A3,V0
  3598. 01C43023 SUBU A2,T6,A0
  3599. 04C10002 BGEZ A2,+2
  3600. 3C0F800F LUI T7,800F
  3601. 24C60001 ADDIU A2,A2,0001
  3602. 00063043 SRA A2,A2,0x1
  3603. 24C50018 ADDIU A1,A2,0018
  3604. 28A10018 SLTI AT,A1,0018
  3605. 10200002 BEQ AT,R0,+2
  3606. 3C028013 LUI V0,8013
  3607. 24050018 ADDIU A1,R0,0018
  3608. 8C428CA4 LW V0,8CA4 (V0)
  3609. 3C18800F LUI T8,800F
  3610. 00A2082A SLT AT,A1,V0
  3611. 54200001 BNEL AT,R0,+1
  3612. 00402825 OR A1,V0,R0
  3613. 8DEF6824 LW T7,6824 (T7)
  3614. 29E100E1 SLTI AT,T7,00E1
  3615. 1420000E BNEZ AT,800EE638
  3616. 8F18703C LW T8,703C (T8)
  3617. 2401FFFF ADDIU AT,R0,FFFF
  3618. 1301000B BEQ T8,AT,800EE638
  3619. 00000000 NOP
  3620. 24650020 ADDIU A1,V1,0020
  3621. 00854021 ADDU T0,A0,A1
  3622. 29010129 SLTI AT,T0,0129
  3623. 14200006 BNEZ AT,800EE638
  3624. 00000000 NOP
  3625. 00E42823 SUBU A1,A3,A0
  3626. 00A0082A SLT AT,A1,R0
  3627. 00A12821 ADDU A1,A1,AT
  3628. 00012843 SRA A1,AT,0x1
  3629. 24A50018 ADDIU A1,A1,0018
  3630. @800EE638
  3631. 03E00008 JR RA
  3632. 00A01025 OR V0,A1,R0
  3633.  
  3634. v = max(7, @80128CA0) >> 3
  3635. v = 0x22 - v - A0
  3636. v += v < 0
  3637. v = (v >> 1) << 3
  3638. xpos = max(0x18, v + 0x18)
  3639. xpos = max(xpos, @800F6CA4)
  3640. if @800F6824 < 0xE1:
  3641. return xpos
  3642. if @800F703C == -1:
  3643. return xpos
  3644. v = (A0 << 3) + @80128CA0 + 0x20
  3645. if v < 0x129:
  3646. return xpos
  3647. v = min(0x22 - v, 0x23 - v) >> 1
  3648. return 0x18 + v << 3
  3649. 800EE640
  3650.  
  3651. @800DFD7C 0xBCF914
  3652. 15E10095 BNE T7,AT,800DFFD4
  3653. AFA200D8 SW V0,00D8 (SP)
  3654. 3C048003 LUI A0,8003
  3655. 0C0099AA JAL 800266A8
  3656. 8C843230 LW A0,3230 (A0)
  3657. 240500A0 ADDIU A1,R0,00A0
  3658. 00022043 SRA A0,V0,0x1
  3659. 3C080400 LUI T0,0400
  3660. 00A42823 SUBU A1,A1,A0
  3661. 3C0D0300 LUI T5,0300
  3662. 8FA300D8 LW V1,00D8 (SP)
  3663. 00451021 ADDU V0,V0,A1
  3664. 25AD0510 ADDIU T5,T5,0510
  3665. 30A403FF ANDI A0,A1,03FF ;ulx
  3666. 304203FF ANDI V0,V0,03FF ;lrx
  3667. 3C19DE00 LUI T9,DE00
  3668. 00042380 SLL A0,A0,0xE
  3669. 00021380 SLL V0,V0,0xE
  3670. AC790000 SW T9,0000 (V1)
  3671. AC6D0004 SW T5,0004 (V1)
  3672. 3C188080 LUI T8,8080
  3673. 3C0CFA00 LUI T4,FA00
  3674. 3718FFFF ORI T8,T8,FFFF
  3675. 3C0EE400 LUI T6,E400
  3676. 240F80D8 ADDIU T7,R0,80D8 ;000580D8 (16, 36) (-2, 36)
  3677. 35CE80E0 ORI T6,T6,80E0 ;E44680E0 (11A, 38) (2, 38)
  3678. AC6C0008 SW T4,0008 (V1)
  3679. AC78000C SW T8,000C (V1)
  3680. 01C27021 ADDU T6,T6,V0
  3681. 01E47821 ADDU T7,T7,A0
  3682. AC6E0010 SW T6,0010 (V1)
  3683. AC6F0014 SW T7,0014 (V1)
  3684. 3C09E100 LUI T1,E100
  3685. 35080400 ORI T0,T0,0400
  3686. 3C0BF100 LUI T3,F100
  3687. 3C19E400 LUI T9,E400
  3688. AC690018 SW T1,0018 (V1)
  3689. AC60001C SW R0,001C (V1)
  3690. AC6B0020 SW T3,0020 (V1)
  3691. AC680024 SW T0,0024 (V1)
  3692. 37398128 ORI T9,T9,8128 ;E4468128 (11A, 4A) (2, 4A)
  3693. 240D8120 ADDIU T5,R0,8120 ;00058120 (16, 48) (-2, 48)
  3694. 0322C821 ADDU T9,T9,V0
  3695. 01A46821 ADDU T5,T5,A0
  3696. AC790028 SW T9,0028 (V1)
  3697. AC6D002C SW T5,002C (V1)
  3698. 24060038 ADDIU A2,R0,0038
  3699. AC690030 SW T1,0030 (V1)
  3700. AC600034 SW R0,0034 (V1)
  3701. 3C0FE400 LUI T7,E400
  3702. 35EF0120 ORI T7,T7,0120 ;E4060120 (18, 48) (0, 48)
  3703. 241880E0 ADDIU T8,R0,80E0 ;000580E0 (16, 38) (-2, 38)
  3704. AFB900D8 SW T9,00D8 (SP)
  3705. AC6B0038 SW T3,0038 (V1)
  3706. AC68003C SW T0,003C (V1)
  3707. 01E47821 ADDU T7,T7,A0
  3708. 0304C021 ADDU T8,T8,A0
  3709. AC6F0040 SW T7,0040 (V1)
  3710. AC780044 SW T8,0044 (V1)
  3711. 24070010 ADDIU A3,R0,0010
  3712. 3C0DE400 LUI T5,E400
  3713. 35AD8120 ORI T5,T5,8120 ;E4468120 (11A, 48) (2, 48)
  3714. 340E00E0 ORI T6,R0,00E0 ;004600E0 (118, 38)
  3715. AC690048 SW T1,0048 (V1)
  3716. AC60004C SW R0,004C (V1)
  3717. 01A26821 ADDU T5,T5,V0
  3718. 01C27021 ADDU T6,T6,V0
  3719. AC6B0050 SW T3,0050 (V1)
  3720. AC680054 SW T0,0054 (V1)
  3721. AC6D0058 SW T5,0058 (V1)
  3722. AC6E005C SW T6,005C (V1)
  3723. AC690060 SW T1,0060 (V1)
  3724. AC600064 SW R0,0064 (V1)
  3725. 3C18E700 LUI T8,E700
  3726. AC6B0068 SW T3,0068 (V1)
  3727. AC68006C SW T0,006C (V1)
  3728. 3C19E400 LUI T9,E400
  3729. 340D00E0 ORI T5,R0,00E0 ;000600E0 (18, 38) (0, 38)
  3730. 37390120 ORI T9,T9,0120 ;E4460120 (118, 48)
  3731. AC780070 SW T8,0070 (V1)
  3732. AC600074 SW R0,0074 (V1)
  3733. 240E00A0 ADDIU T6,R0,00A0
  3734. 0322C821 ADDU T9,T9,V0
  3735. 01A46821 ADDU T5,T5,A0
  3736. 3C18E100 LUI T8,E100
  3737. AC6C0078 SW T4,0078 (V1)
  3738. AC6E007C SW T6,007C (V1)
  3739. AC790080 SW T9,0080 (V1)
  3740. AC6D0084 SW T5,0084 (V1)
  3741. AC780088 SW T8,0088 (V1)
  3742. AC60008C SW R0,008C (V1)
  3743. AC6B0090 SW T3,0090 (V1)
  3744. AC680094 SW T0,0094 (V1)
  3745. 3C0D0300 LUI T5,0300
  3746. 25AD0540 ADDIU T5,T5,0540
  3747. 3C19DE00 LUI T9,DE00
  3748. AC790098 SW T9,0098 (V1)
  3749. AC6D009C SW T5,009C (V1)
  3750. 2419FFFF ADDIU T9,R0,FFFF
  3751. 3C18FA00 LUI T8,FA00
  3752. 246400A8 ADDIU A0,V1,00A8
  3753. AC7900A4 SW T9,00A4 (V1)
  3754. AC7800A0 SW T8,00A0 (V1)
  3755. AFA400D8 SW A0,00D8 (SP)
  3756. 0C009930 JAL 800264C0
  3757. 27FF00AC ADDIU RA,RA,00AC
  3758. @800DFFD4
  3759.  
  3760. uses of strlen 80762B1C
  3761. @8002C77C 0xAD2F04 "FILENAME: do you really want to delete, etc."
  3762. 0C0099AA JAL 800266A8 ;JAL 80762B1C
  3763. ADDIU A0,SP,01B4
  3764. SW V0,004C (SP)
  3765. @8002C788
  3766. 0C0099AA JAL 800266A8 ;JAL 80762B1C
  3767. OR A0,S1,R0
  3768. LW T6,004C (SP)
  3769. 240F0110 ADDIU T7,R0,0110 ;ADDIU T7,R0,0022
  3770. OR A1,S0,R0
  3771. ADDU A0,V0,T6
  3772. SUBU V1,T7,A0
  3773. LUI T9,0300
  3774. ADDIU T9,T9,0510
  3775. LUI T8,DE00
  3776. SW T8,0000 (A1)
  3777. SW T9,0004 (A1)
  3778. 248C0006 ADDIU T4,A0,0006 ;SLL T4,A0,0x3
  3779. ...
  3780. @8002C7F8
  3781. 00000020 NADA ;SLL V1,V1,0x3
  3782. ...
  3783. OR A2,S2,R0
  3784. JAL 800262F4
  3785. 26250003 ADDIU A1,S1,0003
  3786. OR S0,V0,R0
  3787. @8002CA1C 0xAD31A4
  3788. 0C0099AA JAL 800266A8 ;JAL 80762B1C
  3789. ADDIU A0,SP,01B4
  3790. LUI T6,E700
  3791. SW T6,0000 (S0)
  3792. ADDIU T0,S0,0008
  3793. SW R0,0004 (S0)
  3794. LUI T9,FA00
  3795. ADDIU T8,R0,FFFF
  3796. SW T8,0004 (T0)
  3797. SW T9,0000 (T0)
  3798. LW A3,02D0 (SP)
  3799. 244F0003 ADDIU T7,V0,0003 ;SLL T7,V0,0x3
  3800. @800ECDDC 0xBDC974 ->8003A560 initial filename count for "copy"
  3801. @800EE2E4 0xBDDE7C "Cannot place a point here."
  3802. 0C0099AA JAL 800266A8 ;JAL 80762B1C
  3803. LW A0,339C (A0)
  3804. 24520006 ADDIU S2,V0,0006 SLL S2,V0,0x3
  3805. OR A0,V0,R0 ;000220C2 SRL A0,V0,0x3
  3806. JAL 800EE578 ;sadly can't be super-lazy about this after all...
  3807. SW S7,0054 (SP)
  3808. @800EE514 0xBDE0AC
  3809. 26E50003 ADDIU A1,S7,0003
  3810. @800EE8D0 0xBDE468 "if you want to copy to another disk..." (0xC)
  3811. 0C0099AA JAL 800266A8 ;JAL 80762B1C
  3812. LW A0,3220 (A0)
  3813. 24420006 ADDIU V0,V0,0006
  3814. 24180110 ADDIU T8,R0,0110
  3815. SUBU V1,T8,V0
  3816. OR A0,S0,R0
  3817. LUI T6,0300
  3818. ADDIU T6,T6,0510
  3819. LUI T9,DE00
  3820. SW T9,0000 (A0)
  3821. SW T6,0004 (A0)
  3822. ...
  3823. @800EE93C 0xBDE4D4
  3824. 00404825 OR T1,V0,R0 ;SLL V1,V1,0x3
  3825. ...
  3826. @800EEAF4 0xBDE68C
  3827. 26250003 ADDIU A1,S1,0003 ;OR A1,S1,R0
  3828. @800EEB0C 0xBDE6A4 "insert the disk now." (0xD)
  3829. 0C0099AA JAL 800266A8 ;JAL 80762B1C
  3830. LW A0,3224 (A0)
  3831. 24180110 ADDIU T8,R0,0110
  3832. ...
  3833. @800EEB58 on second thought, pull following commands up a couple OPs to overwrite NADAs
  3834. 00000020 NADA ;SLL A1,A1,0x3
  3835. ADDIU A1,A1,0018
  3836. 00000020 NADA ;OR S1,A1,R0
  3837. ...
  3838. @800EEB98 0xBDE730 "OK" (0xE), followed by (A); can somewhat safely save its width to SP+DC
  3839. 24500010 ADDIU S0,V0,0010
  3840. 3C048003 LUI A0,8003
  3841. 0C0099AA JAL 800266A8
  3842. 8C843228 LW A0,3228 (A0)
  3843. 240100A0 ADDIU AT,R0,00A0 ;0x110 is midpoint, but you add 0x30 to the result
  3844. 24420018 ADDIU V0,V0,0018 ;add width of a half-space + icon
  3845. 00021843 SRA V1,V0,0x1
  3846. 02002025 OR A0,S0,R0
  3847. 00232823 SUBU A1,AT,V1
  3848. 00A28821 ADDU S1,A1,V0 ;S1 = right pos of complete string
  3849. ADDIU A2,R0,0080
  3850. JAL 800264C0
  3851. ADDIU A3,R0,000E ;string ID
  3852. LUI T6,FCFF
  3853. 3C09E700 LUI T1,E700
  3854. ORI T6,T6,FFFF
  3855. LUI T7,FFFC
  3856. AC490000 SW T1,0000 (V0)
  3857. ORI T7,T7,F279
  3858. SW T6,0008 (V0)
  3859. SW T8,0010 (V0)
  3860. LUI T6,F510
  3861. LUI T9,0700
  3862. ADDIU T9,T9,4900
  3863. SW T6,0018 (V0)
  3864. LUI T8,E600
  3865. LUI T7,0700
  3866. SW T7,001C (V0)
  3867. SW T8,0020 (V0)
  3868. LUI T6,071F
  3869. SW T9,0014 (V0)
  3870. LUI T9,F300
  3871. ORI T6,T6,F200
  3872. LUI T8,F510
  3873. ; 800EEC08: eliminate LUI T7,E700
  3874. AC490030 SW T1,0030 (V0)
  3875. ORI T8,T8,0800
  3876. SW T6,002C (V0)
  3877. SW T9,0028 (V0)
  3878. 00118880 SLL S1,S1,0x2 ;800EEC1C
  3879. LUI T9,F200
  3880. LUI T6,0003
  3881. SW T8,0038 (V0)
  3882. 262FFFC0 ADDIU T7,S1,FFC0 ; T7 is now the left edge, not right
  3883. ORI T6,T6,C07C
  3884. SW T9,0040 (V0)
  3885. ; 800EEC38: eliminate SLL T8,T7,0x2
  3886. SW T6,0044 (V0)
  3887. 32390FFF ANDI T9,S1,0FFF
  3888. 24090200 ADDIU T1,R0,0200 ; T1 is now precalculated 0x80 << 2
  3889. SLL T6,T9,0xC
  3890. 24180240 ADDIU T8,R0,0240 ; T8 is precalculed 0x90 << 2
  3891. LUI AT,E400
  3892. 01C17025 OR T6,T6,AT
  3893. ; 800EEC58: eliminate SLL T9,T8,0x2
  3894. ; 800EEC5C: eliminate ANDI T6,T9,0FFF
  3895. 030EC025 OR T8,T8,T6
  3896. ; 800EEC64: eliminate SLL T9,S1,0x2
  3897. 31EF0FFF ANDI T7,T7,0FFF
  3898. SW T8,0048 (V0)
  3899. ; 800EEC70: eliminate SLL T8,T1,0x2
  3900. LUI T2,0400
  3901. ; 800EEC78: eliminate ANDI T9,T8,0FFF
  3902. SLL T6,T7,0xC
  3903. ORI T2,T2,0400
  3904. LUI RA,E100
  3905. 01C97825 OR T7,T6,T1
  3906.  
  3907. dl.append(E7000000, 00000000)
  3908. dl.append(FA000000, FFFFFFFF)
  3909. call 800264C0(dl, xpos+0x48, 0x80, 0xE) # print string index A3 to DL A0 at (A1, A2)
  3910. dl.append(E7000000, 00000000)
  3911. dl.append(FCFFFFFF, FFFCF279)
  3912. dl.append(FD100000, 07004900)
  3913. dl.append(F5100000, 07000000)
  3914. dl.append(E6000000, 00000000)
  3915. dl.append(F3000000, 071FF200)
  3916. dl.append(E7000000, 00000000)
  3917. dl.append(F5100800, 00000000)
  3918. dl.append(F2000000, 0003C07C)
  3919. xpos += 0x70
  3920. lrx = (xpos + 0x10) << 2
  3921. lrx &= 0xFFF
  3922. xpos = (xpos << 2) & 0xFFF
  3923. uly = (0x80 << 2) & 0xFFF
  3924. lry = (0x90 << 2) & 0xFFF
  3925. dl.append(E4000000 | lrx << 12 | lry, xpos << 12 | uly)
  3926. dl.append(E1000000, 00000000)
  3927. dl.append(F1000000, 04000400)
  3928. @800EECD4
  3929. @800F2BC8 0xBE2760 "(B) undo the most recent change."
  3930. 0C0099AA JAL 800266A8 ;JAL 80762B1C
  3931. LW A0,3244 (A0)
  3932. 24480003 ADDIU T0,V0,0003 ;string still prints in original location but right side padded
  3933.  
  3934. These use a totally different print function series.
  3935. Expedite this by making a redirection function for 8002EAF0.
  3936. 80025D90 0xACC518 V0 = p->updated DL for centered text box in color A2 fitting string A1
  3937. accepts: A0=p->DL, A1=p->string, A2=color
  3938. 27BDFFD8 ADDIU SP,SP,FFD8
  3939. AFBF0024 SW RA,0024 (SP)
  3940. AFA60020 SW A2,0020 (SP)
  3941. AFA40018 SW A0,0018 (SP)
  3942. 2401000A ADDIU AT,R0,000A
  3943. 00A02025 OR A0,A1,R0
  3944. 24020001 ADDIU V0,R0,0001 ;always at least one line
  3945. 90A30000 LBU V1,0000 (A1)
  3946. 50610001 BEQL V1,AT,+1
  3947. 24420001 ADDIU V0,V0,0001
  3948. 1460FFFC BNE V1,R0,-4
  3949. 24A50001 ADDIU A1,A1,0001
  3950. 0C0099AA JAL 800266A8 # V0=width of longest line in string A0
  3951. AFA2001C SW V0,001C (SP)
  3952. 8FBF0024 LW RA,0024 (SP)
  3953. 8FA70020 LW A3,0020 (SP)
  3954. 8FA6001C LW A2,001C (SP)
  3955. 8FA40018 LW A0,0018 (SP)
  3956. 00402825 OR A1,V0,R0
  3957. 0800BABC J 8002EAF0
  3958. 27BD0028 ADDIU SP,SP,0028
  3959.  
  3960. Another redirection service:
  3961. 8002EC50 0xAD53D8 redirect for 8002EAF0: V0=updated DL A2 for centered box in color A3 for A1 strings at A0
  3962. accepts: A0=p->strings, A1=#strings, A2=p->DL, A3=color
  3963. 27BDFFE8 ADDIU SP,SP,FFE8
  3964. AFBF0014 SW RA,0014 (SP)
  3965. AFA5001C SW A1,001C (SP)
  3966. AFA60020 SW A2,0020 (SP)
  3967. 0C00BB23 JAL 8002EC8C ;V0=longest of A1 strings at A0
  3968. AFA70024 SW A3,0024 (SP)
  3969. 8FA40020 LW A0,0020 (SP)
  3970. 8FA6001C LW A2,001C (SP)
  3971. 8FA70024 LW A3,0024 (SP)
  3972. 8FBF0014 LW RA,0014 (SP)
  3973. 00402825 OR A1,V0,R0
  3974. 0800BABC J 8002EAF0 ;V0=updated DL A0 for centered box in color A3 with A2 lines and width A1
  3975. 27BD0018 ADDIU SP,SP,0018
  3976.  
  3977.  
  3978. 8002ED64 prints error messages
  3979. #8002EFA8
  3980. v = 807C6EA8[8:12]
  3981. if v < 0x1C:
  3982. # jump 80033580[v]
  3983. if v == 1: #8002EFD4 "Please read the instruction manual."
  3984. call 8002EAF0(@SP+38, 0xF0, 4, 0xF801)
  3985. call 8070F6C8(SP+38, 8003BBA0[0:2], 8003BBA8[0:2], @8076D370)
  3986. T0 = 807C6EA8
  3987. elif v == 2: #8002F018 "Do not remove the disk...read the manual."
  3988. call 8002EAF0(@SP+38, 0xF0, 4, 0xF801)
  3989. call 8070F6C8(SP+38, 8003BBA0[0:2], 8003BBA8[0:2], @8076D374)
  3990. call 8070F6C8(SP+38, 8003BBA0[0:2], 8003BBA8[2:4], @8076D378)
  3991. call 8070F6C8(SP+38, 8003BBA0[0:2], 8003BBA8[4:6], @8076D37C)
  3992. call 8070F6C8(SP+38, 8003BBA0[0:2], 8003BBA8[4:6], @8076D380)
  3993. T0 = 807C6EA8
  3994. elif v == 3: #8002F0BC "The wrong disk may be inserted..."
  3995. call 8002EAF0(@SP+38, 0x110, 3, 0xF801)
  3996. call 8070F6C8(SP+38, 8003BBA0[0:2], 8003BBA8[0:2], @8076D38C)
  3997. call 8070F6C8(SP+38, 8003BBA0[0:2], 8003BBA8[2:4], @8076D390)
  3998. call 8070F6C8(SP+38, 8003BBA0[0:2], 8003BBA8[4:6], @8076D394)
  3999. T0 = 807C6EA8
  4000. elif v == 4: #8002F140 "Is the disk inserted?"
  4001. call 8002EAF0(@SP+38, 0xF8, 1, 0x843F)
  4002. call 8070F6C8(SP+38, 8003BBA0[0:2], 8003BBA8[0:2], @8076D398)
  4003. T0 = 807C6EA8
  4004. elif v == 6: #8002F184 "Saving..."
  4005. call 8002EAF0(@SP+38, 0x68, 1, 0x843F)
  4006. call 8070F6C8(SP+38, 8003BBA0[0:2], 8003BBA8[0:2], @800337D0)
  4007. T0 = 807C6EA8
  4008. elif v == 5: #8002F1C8 "Loading..."
  4009. call 8002EAF0(@SP+38, 0x68, 1, 0x843F)
  4010. call 8070F6C8(SP+38, 8003BBA0[0:2], 8003BBA8[0:2], @800337D4)
  4011. T0 = 807C6EA8
  4012. elif v == 7: #8002F20C "Copying."
  4013. call 8002EAF0(@SP+38, 0x68, 1, 0x843F)
  4014. call 8070F6C8(SP+38, 8003BBA0[0:2], 8003BBA8[0:2], @800337F4)
  4015. T0 = 807C6EA8
  4016. elif v == 8: #8002F250 "Setting entry."
  4017. call 8002EAF0(@SP+38, 0x88, 1, 0x843F)
  4018. call 8070F6C8(SP+38, 8003BBA0[0:2], 8003BBA8[0:2], @800337F8)
  4019. T0 = 807C6EA8
  4020. elif v == 9: #8002F294 "Cannot run while accessing the disk."
  4021. call 8002EAF0(@SP+38, 0xD8, 1, 0xF801)
  4022. call 8070F6C8(SP+38, 8003BBA0[0:2], 8003BBA8[0:2], @800337D8)
  4023. T0 = 807C6EA8
  4024. elif v == 11: #8002F2D8 "Renaming file."
  4025. call 8002EAF0(@SP+38, 0x88, 1, 0x843F)
  4026. call 8070F6C8(SP+38, 8003BBA0[0:2], 8003BBA8[0:2], @800337DC)
  4027. T0 = 807C6EA8
  4028. elif v == 12: #8002F31C "Deleting file."
  4029. call 8002EAF0(@SP+38, 0xA8, 1, 0x843F)
  4030. call 8070F6C8(SP+38, 8003BBA0[0:2], 8003BBA8[0:2], @800337E0)
  4031. T0 = 807C6EA8
  4032. elif v == 13: #8002F360 "No File."
  4033. if 80794E24[0]:
  4034. 80033504[0:2] = 0
  4035. 80794E24[0] = 0
  4036. v = 80033500[0:2]
  4037. if 80033504[0:2] < v:
  4038. #8002F44C
  4039. T0+8 = 0
  4040. jump 8002F8BC
  4041. if v < 0:
  4042. v += 3
  4043. v >>= 2
  4044. if v < 80033504[0:2]:
  4045. i = @8079A888 * 0x94
  4046. i = 8079A584[i:i+2]
  4047. if i & 0xC000:
  4048. T0+8 = 0
  4049. jump 8002F8BC
  4050. #8002F3F4:
  4051. SP+38 = call 8002EAF0(@SP+38, 0xA8, 1, 0x843F) # V0 = updated DL A0 for centered window A1 long with A2 lines in color A3
  4052. call 8070F6C8(SP+38, 8003BBA0[0:2], 8003BBA8[0:2], @800337E4)
  4053. 80033504[0:2] += 1
  4054. T0 = 807C6EA8
  4055. elif v == 14: #8002F454 "File is protected."
  4056. call 8002EAF0(@SP+38, 0xC8, 1, 0x843F)
  4057. call 8070F6C8(SP+38, 8003BBA0[0:2], 8003BBA8[0:2], @800337E8)
  4058. T0 = 807C6EA8
  4059. elif v == 15: #8002F498 "Removing protection."
  4060. call 8002EAF0(@SP+38, 0xD8, 1, 0x843F)
  4061. call 8070F6C8(SP+38, 8003BBA0[0:2], 8003BBA8[0:2], @800337EC)
  4062. T0 = 807C6EA8
  4063. ...
  4064. elif v in (16, 27): #8002F4DC
  4065. if 80794E1C[0]:
  4066. 80033504[0:2] = 0
  4067. 80794E1C[0] = 0
  4068. if not 80033504[0:2] < 80033500[0:2]:
  4069. T0+8 = 0
  4070. jump 8002F8BC
  4071. v = 80033500[0:2]
  4072. if v < 0:
  4073. v += 3
  4074. v >> = 2
  4075. if v < 80033504[0:2]:
  4076. i = @8079A888 * 0x94
  4077. i = 8079A584[i:i+2]
  4078. if i & 0xC000:
  4079. T0+8 = 0
  4080. jump 8002F8BC
  4081. #8002F570
  4082. v = @T0+8
  4083. if v == 0x10:
  4084. #8002F598 # "Protecting file."
  4085. SP+38 = call 8002EAF0(@SP+38, 0xD8, 1, 0xF801)
  4086. call 8070F6C8(SP+38, 8003BBA0[0:2], 8003BBA8[0:2], @800337F0)
  4087. elif v == 0x1B:
  4088. #8002F5DC
  4089. SP+38 = call 8002EAF0(@SP+38, 0xB8, 1, 0x843F)
  4090. call 8070F6C8(SP+38, 8003BBA0[0:2], 8003BBA8[0:2], @80033804)
  4091. 80033504[0:2] += 1
  4092. T0 = 807C6EA8
  4093. elif v == 17: #8002F638 "Enter the machine's name."
  4094. SP+38 = call 8002ECE8(@SP+38, 0x36, 0xC0, @801372B8, 0x843F)
  4095. T0 = 807C6EA8
  4096. elif v == 18: #8002F668 "Do you want to overwrite the file?"
  4097. SP+38 = call 8002ECE8(@SP+38, 0x36, 0x100, @801372C0, 0x843F)
  4098. call 8002D340(SP+38)
  4099. T0 = 807C6EA8
  4100. elif v == 19: #8002F6A0 "Out of disk space" "Delete files you do not need."
  4101. SP+38 = call 8002EA10(@SP+38, 0x28, 0x28, 0x118, 0x48, 0xF801)
  4102. SP+38 = call 800262F4(@SP+38, 0x28, 0x28, @801372C4)
  4103. SP+38 = call 800262F4(@SP+38, 0x28, 0x38, @801372C8)
  4104. T0 = 807C6EA8
  4105. elif v == 20: #8002F70C "Clear all custom machine entries?"
  4106. SP+38 = call 8002ECE8(@SP+38, 0x36, 0x110, @801372CC, 0x843F)
  4107. T0 = 807C6EA8
  4108. elif v == 21: #8002F744 "Previously saved data" "did not save properly"
  4109. SP+38 = call 8002EA10(@SP+38, 0x30, 0x28, 0x110, 0x48, 0xF801)
  4110. call 8070F6C8(SP+38, 0x30, 0x28, @8076D3A8)
  4111. call 8070F6C8(SP+38, 0x30, 0x38, @8076D3AC)
  4112. T0 = 807C6EA8
  4113. elif v == 22: #8002F7A8 "Cannot be edited."
  4114. SP+38 = call 8002ECE8(@SP+38, 0x36, 0x70, @801372D0, 0xF801)
  4115. T0 = 807C6EA8
  4116. elif v == 23: #8002F7D8 "Cannot be saved."
  4117. SP+38 = call 8002ECE8(@SP+38, 0x36, 0x80, @801372D4, 0xF801)
  4118. T0 = 807C6EA8
  4119. elif v == 24: #8002F808 "Choose a machine entry."
  4120. SP+38 = call 8002ECE8(@SP+38, 0x36, 0x110, @801372DC, 0x843F)
  4121. T0 = 807C6EA8
  4122. elif v == 25: #8002F838 "Clearing entry."
  4123. call 8002EAF0(@SP+38, 0x88, 1, 0x843F)
  4124. call 8070F6C8(SP+38, 8003BBA0[0:2], 8003BBA8[0:2], @800337FC)
  4125. T0 = 807C6EA8
  4126. elif v == 26: #8002F87C "Saving options."
  4127. call 8002EAF0(@SP+38, 0xB8, 1, 0x843F)
  4128. call 8070F6C8(SP+38, 8003BBA0[0:2], 8003BBA8[0:2], @80033800)
  4129. T0 = 807C6EA8
  4130. #8002F8BC disk switch messages
  4131. DL = @SP+38
  4132. xpos = 0x26
  4133. if @807C6EA8+C == 1: #8002F8F0 "Please insert the disk."
  4134. SP+38 = call 8002EA10(DL, xpos, 0xBB, 0x11A, 0xD1, 0xF801)
  4135. call 8070F6C8(@SP+38, 0x2C, 0xBE, @8076D384)
  4136. elif @807C6EA8+C == 2: #8002F930 "Please remove the disk."
  4137. SP+38 = call 8002EA10(DL, 0x26, 0xBB, 0x11A, 0xD1, 0xF801)
  4138. call 8070F6C8(@SP+38, 0x2C, 0xBE, @8076D3A4)
  4139. elif @807C6EA8+C == 3: #8002F974 "Reinsert the disk." "original disk."
  4140. SP+38 = call 8002EA10(DL, 0x32, 0xA7, 0x11A, 0x10E, 0xF801)
  4141. call 8070F6C8(@SP+38, 0x38, 0xAA, @8076D388)
  4142. call 8070F6C8(@SP+38, 0x38, 0xBE, @8076D3A0)
  4143. #8002F9CC
  4144. ...
  4145. #8002F6A0
  4146. ...
  4147. 8002F9DC V0=updated p->DL A0 for printed "Please wait." message
  4148. accepts: A0=p->DL
  4149. if @807C6EA8 == 4:
  4150. DL = call 8002EA10(p->DL, 0x3E, 0xBB, 0x102, 0xD1, 0x843F)
  4151. DL = call 8070F6C8(DL, 0x44, 0xBE, @8076D3CC) # "Please wait."
  4152. return p->DL
  4153. 8002FA50
  4154.  
  4155. 8012F7AC 0xC0FCB4 prints clear machine message "%s" "Clear this entry?"
  4156. accepts: A0=p->DL, A1=p->string
  4157. v = call 80762B1C(p->string) #V0 = memlen(A0)
  4158. SP+43[0] = v < 9
  4159. call 80026830(p->string, SP+44) # A1 = p->shift_jis string for single-byte encoded string A0
  4160. if @SP+43:
  4161. SP+30 = call 80762B1C(SP+44) #V0 = memlen(A0)
  4162. width = call 80762B1C(@801372E0) #V0 = memlen(A0)
  4163. width += @SP+30 #total width
  4164. SP+67[0] = width
  4165. ulx = 0x22 - width
  4166. ulx += (ulx < 0)
  4167. ulx >>= 1
  4168. ulx <<= 3
  4169. ulx += 0x18
  4170. lrx = ulx + width * 8
  4171. uly, lry = 0x2E, 0x4E
  4172. p->DL = call 8002EA10(p->DL, ulx, uly, lrx, lry, 0x843F) # V0=p->updated DL A0 for box in color SP+14 at (A1,A2) (A3,SP+10)
  4173. else:
  4174. SP+2C = call 80762B1C(@801372E0) #V0 = memlen(A0)
  4175. SP+30 = call 80762B1C(SP+44) #V0 = memlen(A0)
  4176. width = call 80762B1C(@801372E4) #V0 = memlen(A0)
  4177. width += @SP+2C + @SP+30 #total width
  4178. ulx = 0x22 - width
  4179. ulx += (ulx < 0)
  4180. ulx >>= 1
  4181. ulx <<= 3
  4182. ulx += 0x18
  4183. lrx = ulx + width * 8
  4184. uly, lry = 0x36, 0x46
  4185. p->DL = call 8002EA10(p->DL, ulx, uly, lrx, lry, 0x843F) # V0=p->updated DL A0 for box in color SP+14 at (A1,A2) (A3,SP+10)
  4186. #8012F92C
  4187. DL.append(FA000000, FF4040FF)
  4188. p->DL = call 800262F4(p->DL, ulx, uly, SP+44) # V0=updated display list A0 printing string A3 to (A1, A2)
  4189. v = call 80762B1C(SP+44) #V0 = memlen(A0)
  4190. DL.append(E7000000, 00000000)
  4191. xpos = ulx + v * 8
  4192. DL.append(FA000000, FFFFFFFF)
  4193. if @SP+43:
  4194. p->DL = call 800262F4(p->DL, xpos, uly, @801372E0) # V0=updated display list A0 printing string A3 to (A1, A2)
  4195. ulx = 0x22 - width
  4196. ulx += (ulx < 0)
  4197. ulx >>= 1
  4198. ulx <<= 3
  4199. ulx += 0x18
  4200. p->DL = call 800262F4(p->DL, ulx, uly + 0x10, @801372E4) # V0=updated display list A0 printing string A3 to (A1, A2)
  4201. else:
  4202. p->DL = call 800262F4(p->DL, xpos, uly, @801372E0) # V0=updated display list A0 printing string A3 to (A1, A2)
  4203. p->DL = call 800262F4(p->DL, xpos + 0x10, uly, @801372E4) # V0=updated display list A0 printing string A3 to (A1, A2)
  4204. #8012FA70
  4205. return call 8002D340(p->DL)
  4206. 8012FA94
  4207.  
  4208. 8002ECE8 0xAD5470 V0=updated DL A0 for text A3 printed centered at ypos A1 in box of width A2 in color SP+10
  4209. accepts: A0=p->DL, A1=ypos, [A2=width], A3=p->string, SP+10=color
  4210. 27BDFFD0 ADDIU SP,SP,FFD0
  4211. AFA7002C SW A3,002C (SP)
  4212. AFA50024 SW A1,0024 (SP)
  4213. AFA40020 SW A0,0020 (SP)
  4214. AFBF001C SW RA,001C (SP)
  4215. 0C0099AA JAL 800266A8 # V0=width of longest line in string A0
  4216. 00E02025 OR A0,A3,R0
  4217. 240E0140 ADDIU T6,R0,0140
  4218. 24420006 ADDIU V0,V0,0006
  4219. 8FA60024 LW A2,0024 (SP)
  4220. 01C22823 SUBU A1,T6,V0
  4221. 24CF0010 ADDIU T7,A2,0010
  4222. 00052843 SRA A1,A1,0x1
  4223. 97B80042 LHU T8,0042 (SP)
  4224. 8FA40020 LW A0,0020 (SP)
  4225. 00A23821 ADDU A3,A1,V0
  4226. AFAF0010 SW T7,0010 (SP)
  4227. AFA50028 SW A1,0028 (SP)
  4228. 0C00BA84 JAL 8002EA10 # V0=p->updated DL A0 for box in color SP+14 at (A1,A2) (A3,SP+10)
  4229. AFB80014 SW T8,0014 (SP)
  4230. 00402025 OR A0,V0,R0
  4231. 8FA50028 LW A1,0028 (SP)
  4232. 8FA60024 LW A2,0024 (SP)
  4233. 8FA7002C LW A3,002C (SP)
  4234. 0C0098BD JAL 800262F4 # V0=updated display list A0 printing string A3 to (A1, A2)
  4235. 24A50003 ADDIU A1,A1,0003
  4236. 8FBF001C LW RA,001C (SP)
  4237. 03E00008 JR RA
  4238. 27BD0030 ADDIU SP,SP,0030
  4239.  
  4240. accepts: A0=p->DL, A1=ypos, A2=width, A3=p->string, SP+10=color
  4241. xpos = (0x140 - width) >> 1
  4242. p->DL = call 8002EA10(p->DL, xpos, ypos, xpos + width, ypos + 16, color)
  4243. return call 800262F4(p->DL, xpos, ypos, p->string)
  4244. 8002ED64
  4245.  
  4246. Now to fix these with the new function.
  4247. @8002EFD8 0xAD5760 "Refer to the instruction manual."
  4248. 3C058077 LUI A1,8077
  4249. 3406F801 ORI A2,R0,F801
  4250. 0C009764 JAL 80025D90
  4251. 8CA5D370 LW A1,D370 (A1)
  4252. ...
  4253. `@8002F018 0xAD57A0 multiline message, maybe skip
  4254. 3C048077 LUI A0,8077
  4255. 8FA60038 LW A2,0038 (SP)
  4256. 24050004 ADDIU A1,R0,0004
  4257. 3407F801 ORI A3,R0,F801
  4258. 0C00BB14 JAL 8002EC50 ;redirect for 8002EAF0: V0=updated DL A2 for centered box in color A3 for A1 strings at A0
  4259. 2484D374 ADDIU A0,A0,D374
  4260. 3C058004 LUI A1,8004
  4261. 3C078077 LUI A3,8077
  4262. AFA20038 SW V0,0038 (SP)
  4263. 8CE7D374 LW A3,D374 (A3)
  4264. 94A6BBA8 LHU A2,BBA8 (A1)
  4265. 94A5BBA0 LHU A1,BBA0 (A1)
  4266. call 8002EAF0(@SP+38, 0xF0, 4, 0xF801)
  4267. call 8070F6C8(SP+38, 8003BBA0[0:2], 8003BBA8[0:2], @8076D374) "(Note) do not remove the disk"
  4268. call 8070F6C8(SP+38, 8003BBA0[0:2], 8003BBA8[2:4], @8076D378) "when the access light is blinking."
  4269. call 8070F6C8(SP+38, 8003BBA0[0:2], 8003BBA8[4:6], @8076D37C) "For more information,"
  4270. call 8070F6C8(SP+38, 8003BBA0[0:2], 8003BBA8[4:6], @8076D380) "read the instruction manual."
  4271. T0 = 807C6EA8
  4272. ...
  4273. `@8002F0BC 0xAD5844
  4274. 3C048077 LUI A0,8077
  4275. 8FA60038 LW A2,0038 (SP)
  4276. 24050003 ADDIU A1,R0,0003
  4277. 3407F801 ORI A3,R0,F801
  4278. 0C00BB14 JAL 8002EC50 ;redirect for 8002EAF0: V0=updated DL A2 for centered box in color A3 for A1 strings at A0
  4279. 2484D38C ADDIU A0,A0,D38C
  4280. 3C058004 LUI A1,8004
  4281. 3C078077 LUI A3,8077
  4282. AFA20038 SW V0,0038 (SP)
  4283. 8CE7D38C LW A3,D38C (A3)
  4284. 94A6BBA8 LHU A2,BBA8 (A1)
  4285. 94A5BBA0 LHU A1,BBA0 (A1)
  4286. call 8002EAF0(@SP+38, 0x110, 3, 0xF801)
  4287. call 8070F6C8(SP+38, 8003BBA0[0:2], 8003BBA8[0:2], @8076D38C) "It is possible the wrong"
  4288. call 8070F6C8(SP+38, 8003BBA0[0:2], 8003BBA8[2:4], @8076D390) "disk is inserted."
  4289. call 8070F6C8(SP+38, 8003BBA0[0:2], 8003BBA8[4:6], @8076D394) "Please insert the correct disk."
  4290. T0 = 807C6EA8
  4291. ...
  4292. @8002F144 0xAD58CC
  4293. 3C058077 LUI A1,8077
  4294. 3406F801 ORI A2,R0,F801
  4295. 0C009764 JAL 80025D90
  4296. 8CA5D398 LW A1,D398 (A1)
  4297. ...
  4298. @8002F188 0xAD5910
  4299. 3C058003 LUI A1,8003
  4300. 3406843F ORI A2,R0,843F
  4301. 0C009764 JAL 80025D90
  4302. 8CA537D0 LW A1,37D0 (A1)
  4303. ...
  4304. @8002F1CC 0xAD5954
  4305. 3C058003 LUI A1,8003
  4306. 3406843F ORI A2,R0,843F
  4307. 0C009764 JAL 80025D90
  4308. 8CA537D4 LW A1,37D4 (A1)
  4309. ...
  4310. @8002F210 0xAD5998
  4311. 3C058003 LUI A1,8003
  4312. 3406843F ORI A2,R0,843F
  4313. 0C009764 JAL 80025D90
  4314. 8CA537F4 LW A1,37F4 (A1)
  4315. ...
  4316. @8002F254 0xAD59DC
  4317. 3C058003 LUI A1,8003
  4318. 3406843F ORI A2,R0,843F
  4319. 0C009764 JAL 80025D90
  4320. 8CA537F8 LW A1,37F8 (A1)
  4321. ...
  4322. @8002F298 0xAD5A20
  4323. 3C058003 LUI A1,8003
  4324. 3406F801 ORI A2,R0,F801
  4325. 0C009764 JAL 80025D90
  4326. 8CA537D8 LW A1,37D8 (A1)
  4327. ...
  4328. @8002F2DC 0xAD5A64
  4329. 3C058003 LUI A1,8003
  4330. 3406843F ORI A2,R0,843F
  4331. 0C009764 JAL 80025D90
  4332. 8CA537DC LW A1,37DC (A1)
  4333. ...
  4334. @8002F320 0xAD5AA8
  4335. 3C058003 LUI A1,8003
  4336. 3406843F ORI A2,R0,843F
  4337. 0C009764 JAL 80025D90
  4338. 8CA537E0 LW A1,37E0 (A1)
  4339. ...
  4340. @8002F3F8 0xAD5B80
  4341. 3C058003 LUI A1,8003
  4342. 3406843F ORI A2,R0,843F
  4343. 0C009764 JAL 80025D90
  4344. 8CA537E4 LW A1,37E4 (A1)
  4345. ...
  4346. @8002F458 0xAD5BE0
  4347. 3C058003 LUI A1,8003
  4348. 3406843F ORI A2,R0,843F
  4349. 0C009764 JAL 80025D90
  4350. 8CA537E8 LW A1,37E8 (A1)
  4351. ...
  4352. @8002F49C 0xAD5C24
  4353. 3C058003 LUI A1,8003
  4354. 3406843F ORI A2,R0,843F
  4355. 0C009764 JAL 80025D90
  4356. 8CA537EC LW A1,37EC (A1)
  4357. ...
  4358. @8002F578 0xAD5D00
  4359. 3C058003 LUI A1,8003
  4360. 50410006 BEQL V0,AT,8002F598
  4361. 8CA537F0 LW A1,37F0 (A1)
  4362. 2401001B ADDIU AT,R0,001B
  4363. 10410014 BEQ V0,AT,8002F5DC
  4364. 00000000 NOP
  4365. ...
  4366. @8002F598 0xAD5D20
  4367. 0C009764 JAL 80025D90
  4368. 3406F801 ORI A2,R0,F801
  4369. ...
  4370. @8002F5E0 0xAD5D68
  4371. 3406843F ORI A2,R0,843F
  4372. 0C009764 JAL 80025D90
  4373. 8CA53804 LW A1,3804 (A1)
  4374. ...
  4375. elif v == 17: #8002F638 "Enter the machine's name."
  4376. SP+38 = call 8002ECE8(@SP+38, 0x36, 0xC0, @801372B8, 0x843F)
  4377. T0 = 807C6EA8
  4378. elif v == 18: #8002F668 "Do you want to overwrite the file?"
  4379. SP+38 = call 8002ECE8(@SP+38, 0x36, 0x100, @801372C0, 0x843F)
  4380. call 8002D340(SP+38)
  4381. T0 = 807C6EA8
  4382. elif v == 19: #8002F6A0 "Out of disk space." "Delete files you do not need."
  4383. @8002F6A0 0xAD5E28
  4384. 3C048013 LUI A0,8013
  4385. 3409F801 ORI T1,R0,F801
  4386. 8FA60038 LW A2,0038 (SP)
  4387. 248472C4 ADDIU A0,A0,72C4
  4388. 24070028 ADDIU A3,R0,0028
  4389. AFA90010 SW T1,0010 (SP)
  4390. 0C00BAF9 JAL 8002EBE4 ;V0=updated DL A2 for box in color SP+10 with A1 lines at A3, fit to strings A0
  4391. 24050002 ADDIU A1,R0,0002
  4392. 3C058004 LUI A1,8004
  4393. LUI A3,8013
  4394. SW V0,0038 (SP)
  4395. LW A3,72C4 (A3)
  4396. OR A0,V0,R0
  4397. 94A5BBA0 LHU A1,BBA0 (A1)
  4398. JAL 800262F4
  4399. ADDIU A2,R0,0028
  4400. LUI A3,8013
  4401. SW V0,0038 (SP)
  4402. LW A3,72C8 (A3)
  4403. OR A0,V0,R0
  4404. 3C058004 LUI A1,8004
  4405. 94A5BBA0 LHU A1,BBA0 (A1)
  4406. JAL 800262F4
  4407. ADDIU A2,R0,0038
  4408. SW V0,0038 (SP)
  4409. 1000006C BEQ R0,R0,8002F8B8
  4410. 3C08807C LUI T0,807C
  4411.  
  4412. SP+38 = call 8002EA10(@SP+38, 0x28, 0x28, 0x118, 0x48, 0xF801)
  4413. SP+38 = call 800262F4(@SP+38, 0x28, 0x28, @801372C4)
  4414. SP+38 = call 800262F4(@SP+38, 0x28, 0x38, @801372C8)
  4415. T0 = 807C6EA8
  4416. elif v == 20: #8002F70C "Clear all custom machine entries?"
  4417. SP+38 = call 8002ECE8(@SP+38, 0x36, 0x110, @801372CC, 0x843F)
  4418. T0 = 807C6EA8
  4419. elif v == 21: #8002F744 "Previously saved data" "did not save properly"
  4420. @8002F744 0xAD5ECC
  4421. 3C048077 LUI A0,8077
  4422. 340DF801 ORI T5,R0,F801
  4423. 8FA60038 LW A2,0038 (SP)
  4424. 2484D3A8 ADDIU A0,A0,D3A8
  4425. 24070028 ADDIU A3,R0,0028
  4426. AFAD0010 SW T5,0010 (SP)
  4427. 0C00BAF9 JAL 8002EBE4 ;V0=updated DL A2 for box in color SP+10 with A1 lines at A3, fit to strings A0
  4428. 24050002 ADDIU A1,R0,0002
  4429. 3C058004 LUI A1,8004
  4430. LUI A3,8077
  4431. SW V0,0038 (SP)
  4432. LW A3,D3A8 (A3)
  4433. ADDU A0,SP,0038
  4434. 94A5BBA0 LHU A1,BBA0 (A1)
  4435. JAL 8070F6C8
  4436. ADDIU A2,R0,0028
  4437. LUI A3,8077
  4438. 3C058004 LUI A1,8004
  4439. LW A3,D3AC (A3)
  4440. ADDIU A0,SP,0038
  4441. 94A5BBA0 LHU A1,BBA0 (A1)
  4442. JAL 8070F6C8
  4443. ADDIU A2,R0,0038
  4444. 10000045 BEQ R0,R0,8002F8B8
  4445. LUI T0,807C
  4446. ...
  4447. elif v == 22: #8002F7A8 "Cannot be edited."
  4448. SP+38 = call 8002ECE8(@SP+38, 0x36, 0x70, @801372D0, 0xF801)
  4449. T0 = 807C6EA8
  4450. elif v == 23: #8002F7D8 "Cannot be saved."
  4451. SP+38 = call 8002ECE8(@SP+38, 0x36, 0x80, @801372D4, 0xF801)
  4452. T0 = 807C6EA8
  4453. elif v == 24: #8002F808 "Choose a machine entry."
  4454. SP+38 = call 8002ECE8(@SP+38, 0x36, 0x110, @801372DC, 0x843F)
  4455. T0 = 807C6EA8
  4456. ...
  4457. @8002F83C 0xAD5FC4 "Clearing entries."
  4458. 3C058003 LUI A1,8003
  4459. 3406843F ORI A2,R0,843F
  4460. 0C009764 JAL 80025D90
  4461. 8CA537FC LW A1,37FC (A1)
  4462. ...
  4463. @8002F880 0xAD6008 "Saving options."
  4464. 3C058003 LUI A1,8003
  4465. 3406843F ORI A2,R0,843F
  4466. 0C009764 JAL 80025D90
  4467. 8CA53800 LW A1,3800 (A1)
  4468. ...
  4469. @8002F8BC 0xAD6044 disk switch messages, all in one monster routine
  4470. 8D02000C LW V0,000C (T0)
  4471. 3C048077 LUI A0,8077
  4472. 24050001 ADDIU A1,R0,0001
  4473. 24010002 ADDIU AT,R0,0002
  4474. 24030003 ADDIU V1,R0,0003
  4475. 8FA60038 LW A2,0038 (SP)
  4476. 50450006 BEQL V0,A1,+6
  4477. 2484D384 ADDIU A0,A0,D384
  4478. 50410004 BEQL V0,AT,+4
  4479. 2484D3A4 ADDIU A0,A0,D3A4
  4480. 54430039 BNEL V0,V1,8002F9CC
  4481. 8FBF001C LW RA,001C (SP)
  4482. 2484D39C ADDIU A0,A0,D39C
  4483. 8C830000 LW V1,0000 (A0)
  4484. 3402F801 ORI V0,R0,F801
  4485. 240700BB ADDIU A3,R0,00BB
  4486. AFA20010 SW V0,0010 (SP)
  4487. 0C00BAF9 JAL 8002EBE4 ;V0=updated DL A2 for box in color SP+10 with A1 lines at A3, fit to strings A0
  4488. AFA3003C SW V1,003C (SP)
  4489. 3C058004 LUI A1,8004
  4490. 8FA7003C LW A3,003C (SP)
  4491. 94A5BBA0 LHU A1,BBA0 (A1)
  4492. 27A40038 ADDIU A0,SP,0038
  4493. 240600BB ADDIU A2,R0,00BB
  4494. AFA20038 SW V0,0038 (SP)
  4495. 0C1C3DB2 JAL 8070F6C8
  4496. 27FF00A0 ADDIU RA,RA,00A0 ;target is 8002F9CC
  4497. @8002F9CC
  4498. DL = @SP+38
  4499. xpos = 0x26
  4500. if @807C6EA8+C == 1: #8002F8F0 "Please insert the disk."
  4501. SP+38 = call 8002EA10(DL, xpos, 0xBB, 0x11A, 0xD1, 0xF801)
  4502. call 8070F6C8(@SP+38, 0x2C, 0xBE, @8076D384)
  4503. elif @807C6EA8+C == 2: #8002F930 "Please remove the disk."
  4504. SP+38 = call 8002EA10(DL, 0x26, 0xBB, 0x11A, 0xD1, 0xF801)
  4505. call 8070F6C8(@SP+38, 0x2C, 0xBE, @8076D3A4)
  4506. elif @807C6EA8+C == 3: #8002F974 "Please reinsert the" "original disk."
  4507. SP+38 = call 8002EA10(DL, 0x32, 0xA7, 0x11A, 0x10E, 0xF801)
  4508. call 8070F6C8(@SP+38, 0x38, 0xAA, @8076D388)
  4509. call 8070F6C8(@SP+38, 0x38, 0xBE, @8076D3A0)
  4510. 8002F9DC 0xAD6164 V0=updated p->DL A0 for printed "Please wait." message
  4511. 3C0E807C LUI T6,807C
  4512. 27BDFFE0 ADDIU SP,SP,FFE0
  4513. 8DCF6EB4 LW T7,6EB4 (T6) ;@807C6EA8+C
  4514. 24010004 ADDIU AT,R0,0004
  4515. AFBF001C SW RA,001C (SP)
  4516. 15E10012 BNE T7,AT,8002FA3C
  4517. AFA40020 SW A0,0020 (SP)
  4518. 00803025 OR A2,A0,R0
  4519. 24050001 ADDIU A1,R0,0001
  4520. 3401843F ORI AT,R0,843F
  4521. 3C048077 LUI A0,8077
  4522. 240700BB ORI A3,R0,00BB
  4523. 2484D3CC ADDIU A0,A0,D3CC
  4524. 0C00BAF9 JAL 8002EBE4 ;V0=updated DL A2 for box in color SP+10 with A1 lines at A3, fit to strings A0
  4525. AFA10010 SW AT,0010 (SP)
  4526. 3C078077 LUI A3,8077
  4527. 3C058004 LUI A1,8004
  4528. 94A5BBA0 LHU A1,BBA0 (A1)
  4529. 27A40020 ADDIU A0,SP,0020
  4530. 240600BB ADDIU A2,R0,00BB
  4531. AFA20020 SW V0,0020 (SP)
  4532. 0C1C3DB2 JAL 8070F6C8
  4533. 8CE7D3CC LW A3,D3CC (A3)
  4534. 8FBF001C LW RA,001C (SP)
  4535. 8FA20020 LW V0,0020 (SP)
  4536. 27BD0020 ADDIU SP,SP,0020
  4537. 03E00008 JR RA
  4538. 00000000 NOP
  4539.  
  4540. accepts: A0=p->DL
  4541. if @807C6EA8+C == 4:
  4542. DL = call 8002EA10(p->DL, 0x3E, 0xBB, 0x102, 0xD1, 0x843F)
  4543. DL = call 8070F6C8(DL, 0x44, 0xBE, @8076D3CC) # "Please wait."
  4544. return p->DL
  4545. 8002FA50
  4546.  
  4547. Rewritten to size box and multiline properly. If it can't fit within 0x110, multiline.
  4548. 8012F7AC 0xC0FCB4 prints clear machine message "%s" "Clear this entry?"
  4549. accepts: A0=p->DL, A1=p->string
  4550. 27BDFF90 ADDIU SP,SP,FF90
  4551. AFBF001C SW RA,001C (SP)
  4552. AFA40070 SW A0,0070 (SP)
  4553. AFA50074 SW A1,0074 (SP)
  4554. 8C880000 LW T0,0000 (A0)
  4555. 00A02025 OR A0,A1,R0
  4556. 27A50044 ADDIU A1,SP,0044
  4557. 0C009A0C JAL 80026830 ;A1=p->shift_jis string for single-byte encoded string A0
  4558. AFA8006C SW T0,006C (SP)
  4559. 0C0099AA JAL 800266A8 ;V0=width of string A0
  4560. 27A40044 ADDIU A0,SP,0044
  4561. 3C048013 LUI A0,8013
  4562. AFA2002C SW V0,002C (SP)
  4563. 0C0099AA JAL 800266A8 ;V0=width of string A0
  4564. 8C8472E4 LW A0,72E4 (A0) ;801372E4 = "Clear this entry?"
  4565. 3C048013 LUI A0,8013
  4566. AFA20034 SW V0,0034 (SP)
  4567. 0C0099AA JAL 800266A8 ;V0=width of string A0
  4568. 8C8472E0 LW A0,72E0 (A0) ;801372E0 = ": "
  4569. 8FAB002C LW T3,002C (SP)
  4570. 8FA80034 LW T0,0034 (SP) ;length of prompt; also offset to colon
  4571. 01621821 ADDU V1,T3,V0 ;length of name + colon
  4572. 01034821 ADDU T1,T0,V1 ;length of name + colon + prompt
  4573. 2D210110 SLTIU AT,T1,0110
  4574. 14200009 BNE AT,R0,single
  4575. 240F00A0 ADDIU T7,R0,00A0
  4576. @double
  4577. 0103082B SLTU AT,T0,V1 ;True if prompt shorter than name
  4578. 2406002E ADDIU A2,R0,002E
  4579. 240D003E ADDIU T5,R0,003E
  4580. 50200002 BEQL AT,R0,+2
  4581. 01007025 OR T6,T0,R0
  4582. 00607025 OR T6,V1,R0
  4583. 10000005 BEQ R0,R0,box
  4584. 00006025 OR T4,R0,R0 ;0 = offset to prompt
  4585. @single
  4586. 252E0006 ADDIU T6,T1,0006
  4587. 24060036 ADDIU A2,R0,0036
  4588. 240D0036 ADDIU T5,R0,0036
  4589. 00606025 OR T4,V1,R0 ;length of name + colon = offset to prompt
  4590. @box
  4591. 25C90001 ADDIU T1,T6,0001 ;align to even number
  4592. 00090842 SRL AT,T1,0x1
  4593. 01E12823 SUBU A1,T7,AT ;ulx, and xpos for all lines
  4594. A7A60032 SH A2,0032 (SP)
  4595. A7AD003A SH T5,003A (SP)
  4596. 24A10003 ADDIU AT,A1,0003
  4597. 00A93821 ADDU A3,A1,T1 ;lrx
  4598. 01615821 ADDU T3,T3,AT ;xpos for colon
  4599. 01816021 ADDU T4,T4,AT ;xpos for prompt
  4600. 25AA0010 ADDIU T2,T5,0010 ;lry
  4601. A7A50030 SH A1,0030 (SP)
  4602. A7AC0038 SH T4,0038 (SP)
  4603. 3401843F ORI AT,R0,843F
  4604. AFAB0034 SW T3,0034 (SP)
  4605. AFAA0010 SW T2,0010 (SP)
  4606. AFA10014 SW AT,0014 (SP)
  4607. 0C00BA84 JAL 8002EA10 ;V0=p->updated DL A0 for box in color SP+14 at (A1,A2) (A3,SP+10)
  4608. 8FA4006C LW A0,006C (SP)
  4609. 24440008 ADDIU A0,V0,0008
  4610. 3C09FF40 LUI T1,FF40
  4611. 3C08FA00 LUI T0,FA00
  4612. 97A50030 LHU A1,0030 (SP)
  4613. 97A60032 LHU A2,0032 (SP)
  4614. 352940FF ORI T1,T1,40FF
  4615. AC480000 SW T0,0000 (V0)
  4616. AC490004 SW T1,0004 (V0)
  4617. 0C0098BD JAL 800262F4
  4618. 27A70044 ADDIU A3,SP,0044
  4619. 24440010 ADDIU A0,V0,0010
  4620. 3C0AE700 LUI T2,E700
  4621. 3C08FA00 LUI T0,FA00
  4622. 3C078013 LUI A3,8013
  4623. 8FA50034 LW A1,0034 (SP)
  4624. 2409FFFF ADDIU T1,R0,FFFF
  4625. AC4A0000 SW T2,0000 (V0)
  4626. AC400004 SW R0,0004 (V0)
  4627. AC480008 SW T0,0008 (V0)
  4628. AC49000C SW T1,000C (V0)
  4629. 8CE772E0 LW A3,72E0 (A3)
  4630. 0C0098BD JAL 800262F4
  4631. 97A60032 LHU A2,0032 (SP)
  4632. 3C078013 LUI A3,8013
  4633. 97A50038 LHU A1,0038 (SP)
  4634. 97A6003A LHU A2,003A (SP)
  4635. 00402025 OR A0,V0,R0
  4636. 0C0098BD JAL 800262F4
  4637. 8CE772E4 LW A3,72E4 (A3)
  4638. 27A4006C ADDIU A0,SP,006C
  4639. 0C00B4D0 JAL 8002D340 ;draw yes/no box
  4640. AFA2006C SW V0,006C (SP)
  4641. 8FB8006C LW T8,006C (SP)
  4642. 8FB90070 LW T9,0070 (SP)
  4643. AF380000 SW T8,0000 (T9)
  4644. 8FBF001C LW RA,001C (SP)
  4645. 27BD0070 ADDIU SP,SP,0070
  4646. 03E00008 JR RA
  4647. 00000000 NOP
  4648. 8012FA94
  4649.  
  4650.  
  4651. 0xAD60B0 0xA0 greetz.z
  4652.  
  4653. 0xADD390 0x438 such.doge
  4654.  
  4655. 8070F170 load image for wchar A0 to A1 from IPL(?)
  4656. accepts: A0=wchar, A1=p->target
  4657. i = call 8075BB20(wchar) # V0 = index of char A0 in font table or -1 if invalid
  4658. s = @8079A340
  4659. 8079FCA8[2] = 0
  4660. 8079FCA8[4:8] = 8079FC88
  4661. 8079FCA8[8:12] = p->target
  4662. 8079FCA8[12:16] = 0xA0000 + i
  4663. 8079FCA8[16:20] = 0x80
  4664. s[20:24] = 2
  4665. if @8079A32C == 2:
  4666. call 80768B88(s, 8079FCA8, False)
  4667. else:
  4668. call 8074BA30(call 80747ED0(), 0x80)
  4669. call 8074B840(@8079A340, 8079FCA8, False)
  4670. call 80746000(8079FC88, None, True)
  4671. 8070F240 fill 8079FCC0 with pointers to font images in 8076D3DC
  4672. call 8074BA00(8079FC88, 8079FCA0, 1) # create msg queue A0 with A2 msgs at A1
  4673. for i, wchar in enumerate(8076D3DC): # reads two bytes at a time, 0x6E entries
  4674. 8079FCC0[i](wchar) # list of words
  4675. call 8070F170(wchar, 8003BBD8 + i * 0x80) # load image for wchar A0 to A1 from IPL(?)
  4676. 8070F2F8
  4677. 8070F3B4 call 80703FC8()
  4678. 8070F3D4 V0 = updated DL A0 for image A3 drawn at (A1, A2)
  4679. accepts: A0=p->DL, A1=xpos, A2=ypos, A3=p->image
  4680. 8070F634 V0 = p->image for char A0 in table at 8079FCC0 or @8003BBB0
  4681. accepts: A0=char
  4682. if wchar in 8079FCC0:
  4683. v = 8079FCC0.index(wchar) # 0x6E entries
  4684. return @8003BBD8[v * 0x80]
  4685. if wchar in @8003BBB0:
  4686. v = @8003BBB0.index(wchar) # 0x14 entries
  4687. return @8003BBC0[v * 0x80]
  4688. return 0
  4689. 8070F6C8 print wchar string A3 to DL A0 at (A1, A2) used by disk error messages as well
  4690. accepts: A0=p->DL, A1=xpos, A2=ypos, A3=p->string
  4691. if A3[0]:
  4692. for i in range(0, min(len(A3), 0x100), 2): # They & 0xFF the string offset for some reason...
  4693. v = call 8070F634(A3[i:i+2])
  4694. call 8070F3D4(A0, A1, A2, v)
  4695. A1 += 0x10
  4696. return len(A3)
  4697. 8070F76C print numerals in string A3 to display list A0 at (A1, A2)
  4698. accepts: p->DL, A1=xpos, A2=ypos, A3=p->string
  4699. 8070F84C print disk error A0 (pretty sure this is not a "real" function)
  4700. call 8074B794(SP+1C, 80775E30, A0) # A0 = C-style expansion of string A1 with args. ("%02d")
  4701. call 8070F6C8(None, 0x6C, 0x46, @8076D36C)
  4702. call 8070F76C(None, 0xC2, 0x46, SP+1C)
  4703. 8070F8A4 (pretty sure this is not a "real" function)
  4704. accepts: A0, A1
  4705. ...
  4706. # 8070F938
  4707. call 8070F6C8(0, 0x44, 0xBE, @8076D344+88)
  4708.  
  4709.  
  4710. Move some disk error strings to 80773A74 (0xCF8B2C). All unused.
  4711. Rewritten to use variable encoding. Buffer is filled with wchar versions of ASCII since I'm lazy.
  4712. 8070F6C8 0xC94780 print wchar string A3 to DL A0 at (A1, A2) used by disk error messages as well
  4713. accepts: A0=p->DL, A1=xpos, A2=ypos, A3=p->string
  4714. 27BDFFD0 ADDIU SP,SP,FFD0
  4715. AFBF002C SW RA,002C (SP)
  4716. AFB40028 SW S4,0028 (SP)
  4717. AFA40024 SW A0,0024 (SP)
  4718. AFA70020 SW A3,0020 (SP)
  4719. AFB1001C SW S1,001C (SP)
  4720. AFB00018 SW S0,0018 (SP)
  4721. AFA60030 SW A2,0030 (SP)
  4722. 00E08025 OR S0,A3,R0
  4723. 00A08825 OR S1,A1,R0
  4724. @loop
  4725. 82040000 LB A0,0000 (S0)
  4726. 10800015 BEQ A0,R0,return
  4727. 00041A00 SLL V1,A0,0x8
  4728. 04820006 BLTZL A0,+6
  4729. 26100002 ADDIU S0,S0,0002
  4730. 0C1DCE8C JAL 80773A30 ;this can only accept ASCII
  4731. 26100001 ADDIU S0,S0,0001
  4732. 02228823 SUBU S1,S1,V0
  4733. 0060A025 OR S4,V1,R0
  4734. 10000003 BEQ R0,R0,+3
  4735. 9204FFFF LBU A0,FFFF (S0)
  4736. 00642025 OR A0,V1,A0
  4737. 0000A025 OR S4,R0,R0
  4738. 0C1C3D8D JAL 8070F634
  4739. 3084FFFF ANDI A0,A0,FFFF
  4740. 8FA40024 LW A0,0024 (SP)
  4741. 8FA60030 LW A2,0030 (SP)
  4742. 02202825 OR A1,S1,R0
  4743. 00403825 OR A3,V0,R0
  4744. 26310010 ADDIU S1,S1,0010
  4745. 02348823 SUBU S1,S1,S4
  4746. 0C1C3CF5 JAL 8070F3D4
  4747. 27FFFFA4 ADDIU RA,RA,FFA4
  4748. @return
  4749. 8FA70020 LW A3,0020 (SP)
  4750. 02071023 SUBU V0,S0,A3
  4751. 8FBF002C LW RA,002C (SP)
  4752. 8FB00018 LW S0,0018 (SP)
  4753. 8FB1001C LW S1,001C (SP)
  4754. 8FB40028 LW S4,0028 (SP)
  4755. 03E00008 JR RA
  4756. 27BD0030 ADDIU SP,SP,0030
  4757.  
  4758. if A3[0]:
  4759. for i in range(0, min(len(A3), 0x100), 2): # They & 0xFF the string offset for some reason...
  4760. v = call 8070F634(A3[i:i+2])
  4761. call 8070F3D4(A0, A1, A2, v)
  4762. A1 += 0x10
  4763. return len(A3)
  4764.  
  4765. The caption under the 1st place cup victory image needs to be twice as large.
  4766. These are found in a bank at 80098D80. +0 is image, +4 is caption (or None)
  4767. @80093030 0xB2BB58
  4768. 24053300 ADDIU A1,R0,3300 ;ADDIU A1,R0,1880
  4769.  
  4770. Allocation is stored to 8009AD1C.
  4771. Image is set via code at 80093C8C-80093CE4 and 800951E0-8009521C.
  4772. @80093C94 0xB2C7BC
  4773. 240C0020 ADDIU T4,R0,0020 ;ADDIU T4,R0,0010 extend height by a row
  4774. @8009521C 0xB2DD0C
  4775. 240F0020 ADDIU T7,R0,0020 ;ADDIU T7,R0,0010 extend height by a row
  4776.  
  4777. Somehow forgot about this, but set country code from (J) E848D316 to (E) 3ED98F23
  4778.  
  4779. +_+
  4780.  
  4781. def fontconv(s, cur=None):
  4782. src = (r""" !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[/]^_ abcdefghijklmnopqrstuvwxyz{|}~ """,
  4783. r""" ガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ 。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゛゜""",
  4784. r""" がぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽ 。「」、・をぁぃぅぇぉゃゅょっーあいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわん゛゜""",
  4785. )
  4786. if isinstance(s, str):
  4787. out = bytearray()
  4788. for i in s:
  4789. if i in src[0]:
  4790. out.append(src[0].index(i) + 0x20)
  4791. elif cur in (1, 2) and i in src[cur]:
  4792. out.append(src[cur].index(i) + 0x80)
  4793. elif i in src[1]:
  4794. out.append(1)
  4795. cur = 1
  4796. out.append(src[1].index(i) + 0x80)
  4797. elif i in src[2]:
  4798. out.append(2)
  4799. cur = 2
  4800. out.append(src[2].index(i) + 0x80)
  4801. return bytes(out)
  4802. else:
  4803. out = []
  4804. if cur is None:
  4805. cur = 1
  4806. for i in s:
  4807. if 1 < i < 3:
  4808. cur = i
  4809. elif i < 0x20:
  4810. raise ValueError("%02X is not a valid char." % i)
  4811. else:
  4812. i -= 0x20
  4813. v = src[0][i] if i < 0x60 else src[cur][i-0x60]
  4814. out.append(v)
  4815. return ''.join(out)
  4816.  
  4817.  
  4818. ci8 conversion
  4819. Use png w/o alpha from GIMP; first index some stupid color like Slaneshi Pink.
  4820. If below throws an error copy this after the palette:
  4821. 00000001 74524E53 00 40E6D866 00000001 624B4744 00 88051D48
  4822.  
  4823. def pal32to16(pal, swap=False):
  4824. """Maps c32to16 to entire palette provided."""
  4825. from array import array
  4826. p = array('H')
  4827. for i in pal:
  4828. r = i[0]>>3
  4829. g = i[1]>>3
  4830. b = i[2]>>3
  4831. a = i[3]>>7
  4832. p.append((r<<11)|(g<<6)|(b<<1)|a)
  4833. if swap:
  4834. p.byteswap()
  4835. return p.tobytes()
  4836.  
  4837. def pngci(name):
  4838. with open(name, 'rb') as f:
  4839. data = f.read()
  4840. import png
  4841. p = png.Reader(bytes=data)
  4842. p.preamble()
  4843. pal = p.palette(alpha='force')
  4844. npal = len(pal)
  4845. pal = pal32to16(pal, True)
  4846. w, h, i, m = p.read()
  4847. d = m.get('bitdepth',8)
  4848. if npal:
  4849. t = 8 if npal>16 else 4
  4850. else:
  4851. t = d
  4852. img = bytearray()
  4853. if t==d or t==8:
  4854. for j in i:
  4855. img.extend(j[:w])
  4856. elif t==4:
  4857. from itertools import zip_longest
  4858. for j in i:
  4859. v = [k<<4 | l for k,l in zip_longest(j[::2], j[1::2], fillvalue=0)]
  4860. img.extend(v[:w>>1])
  4861. return img, pal
  4862.  
  4863.  
  4864. # i4 or i8 conversion
  4865. def pngi(name, depth=8):
  4866. with open(name, 'rb') as f:
  4867. data = f.read()
  4868. import png
  4869. p = png.Reader(bytes=data)
  4870. p.preamble()
  4871. w, h, i, m = p.read()
  4872. img = bytearray()
  4873. if depth==8:
  4874. for j in i:
  4875. img.extend(j[:w])
  4876. elif depth==4:
  4877. from itertools import zip_longest
  4878. for j in i:
  4879. v = [(k&0xF0) | (l>>4) for k,l in zip_longest(j[::2], j[1::2], fillvalue=0)]
  4880. img.extend(v[:w>>1])
  4881. return img
  4882.  
  4883. def pngc16(name):
  4884. with open(name, 'rb') as f:
  4885. data = f.read()
  4886. import png
  4887. p = png.Reader(bytes=data)
  4888. p.preamble()
  4889. w, h, i, m = p.asRGBA8()
  4890. img = bytearray()
  4891. for j in i:
  4892. img.extend(pal32to16(zip(*[iter(j)]*4), swap=True))
  4893. return img
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement