Difference between revisions of "Sonic Heroes/DOL Editing"
From Sonic Retro
(→Required Relocatables) |
m (Text replacement - " Positions==" to " positions==") |
||
(100 intermediate revisions by 3 users not shown) | |||
Line 3: | Line 3: | ||
The main DOL of the GC game is Start.dol. This executable contains codes in different offsets for each region and version released in a variety of countries. | The main DOL of the GC game is Start.dol. This executable contains codes in different offsets for each region and version released in a variety of countries. | ||
− | ==Aspect Ratio== | + | ==Aspect Ratio (In-complete)== |
As with the GameCube version of the game, it's default aspect is at 4:3 for most standard TVs. It can be tweaked by inseting codes in a specific address to read the specified aspect ratio float values and use for modern TV screens in their specific format such as with 16:9 and 21:9.<br> | As with the GameCube version of the game, it's default aspect is at 4:3 for most standard TVs. It can be tweaked by inseting codes in a specific address to read the specified aspect ratio float values and use for modern TV screens in their specific format such as with 16:9 and 21:9.<br> | ||
===Injection Process=== | ===Injection Process=== | ||
− | {| class="prettytable" | + | ====NTSC-U==== |
− | !Address | + | {| class="prettytable" style="width:auto;" |
+ | !Address||Injectable Codes||Code Injection Length | ||
|- | |- | ||
|4D8 | |4D8 | ||
Line 17: | Line 18: | ||
|81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 3D E0 80 29 3D C0 3F 80 91 CF 06 9C 91 CF 06 A8 91 CF 06 BC 3D CE 80 00 91 CF 06 94 80 01 00 74 4E 80 00 20 | |81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 3D E0 80 29 3D C0 3F 80 91 CF 06 9C 91 CF 06 A8 91 CF 06 BC 3D CE 80 00 91 CF 06 94 80 01 00 74 4E 80 00 20 | ||
|0x4C | |0x4C | ||
+ | |- | ||
+ | |554 | ||
+ | |3D E0 80 29 3D C0 3F 80 91 CF 06 9C 91 CF 06 A8 91 CF 06 BC 3D CE 80 00 91 CF 06 94 38 60 00 01 4E 80 00 20 | ||
+ | |0x24 | ||
+ | |- | ||
+ | |5C0 | ||
+ | |3D E0 80 29 3D C0 3F 80 91 CF 06 9C 91 CF 06 A8 91 CF 06 BC 3D CE 80 00 91 CF 06 94 38 60 00 0A 4E 80 00 20 | ||
+ | |0x24 | ||
+ | |- | ||
+ | |5E4 | ||
+ | |3D E0 80 29 3D C0 3F 80 91 CF 06 9C 91 CF 06 A8 91 CF 06 BC 3D CE 80 00 91 CF 06 94 3B 9C 00 04 4E 80 00 20 | ||
+ | |0x24 | ||
+ | |- | ||
+ | |608 | ||
+ | |3D E0 80 29 3D C0 3F 80 91 CF 06 9C 91 CF 06 A8 91 CF 06 BC 3D CE 80 00 91 CF 06 94 E3 E1 00 58 4E 80 00 20 | ||
+ | |0x24 | ||
+ | |- | ||
+ | |62C | ||
+ | |81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 4E 80 00 20 | ||
+ | |0x24 | ||
+ | |- | ||
+ | |654 | ||
+ | |3D E0 80 29 3D C0 3F 80 91 CF 06 9C 91 CF 06 A8 91 CF 06 BC 3D CE 80 00 91 CF 06 94 80 01 01 24 4E 80 00 20 | ||
+ | |0x24 | ||
+ | |- | ||
+ | |6C0 | ||
+ | |3D E0 80 29 3D C0 3F 80 91 CF 06 9C 91 CF 06 A8 91 CF 06 BC 3D CE 80 00 91 CF 06 94 80 01 01 14 4E 80 00 20 | ||
+ | |0x24 | ||
+ | |- | ||
+ | |6E4 | ||
+ | |3D E0 80 29 3D C0 3F 80 91 CF 06 9C 91 CF 06 A8 91 CF 06 BC 3D CE 80 00 91 CF 06 94 80 01 00 14 4E 80 00 20 | ||
+ | |0x24 | ||
+ | |- | ||
+ | |708 | ||
+ | |81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 7F E3 FB 78 4E 80 00 20 | ||
+ | |0x28 | ||
+ | |- | ||
+ | |730 | ||
+ | |3D E0 80 29 3D C0 3F 80 91 CF 06 9C 91 CF 06 A8 91 CF 06 BC 3D CE 80 00 91 CF 06 94 80 81 00 20 4E 80 00 20 | ||
+ | |0x24 | ||
+ | |- | ||
+ | |754 | ||
+ | |81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 54 05 10 3A 4E 80 00 20 | ||
+ | |0x28 | ||
+ | |- | ||
+ | |7C0 | ||
+ | |3D C0 3F 80 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 | ||
+ | |0x28 | ||
+ | |- | ||
+ | |7E8 | ||
+ | |3D E0 80 29 3D C0 3F 80 91 CF 06 9C 91 CF 06 A8 91 CF 06 BC 3D CE 80 00 91 CF 06 94 38 60 00 0C 4E 80 00 20 | ||
+ | |0x24 | ||
|} | |} | ||
===Overwriting Codes=== | ===Overwriting Codes=== | ||
In-order to make the codes jump to your injected codes, you will need to replace the bytes with the following to become effective. | In-order to make the codes jump to your injected codes, you will need to replace the bytes with the following to become effective. | ||
− | {| class="prettytable" | + | {| class="prettytable" style="width:auto;" |
!Address (NTSC-U)||Original Bytes||Replace With | !Address (NTSC-U)||Original Bytes||Replace With | ||
+ | |- | ||
+ | |42964 | ||
+ | |38 A0 00 04 | ||
+ | |4B FB 18 FD | ||
+ | |- | ||
+ | |4296C | ||
+ | |38 60 00 0C | ||
+ | |4B FB 19 1D | ||
+ | |- | ||
+ | |98070 | ||
+ | |80 01 00 14 | ||
+ | |4B F5 C1 15 | ||
+ | |- | ||
+ | |C60D8 | ||
+ | |38 A0 00 04 | ||
+ | |4B F2 DE D1 | ||
+ | |- | ||
+ | |C60E0 | ||
+ | |38 60 00 01 | ||
+ | |4B F2 DF 15 | ||
+ | |- | ||
+ | |C62B0 | ||
+ | |38 A0 00 04 | ||
+ | |4B F2 DC F9 | ||
+ | |- | ||
+ | |C62B8 | ||
+ | |38 60 00 01 | ||
+ | |4B F2 DD 3D | ||
+ | |- | ||
+ | |105DC8 | ||
+ | |38 A0 00 04 | ||
+ | |4B EE E1 E1 | ||
+ | |- | ||
+ | |105DD0 | ||
+ | |E3 E1 00 58 | ||
+ | |4B EE E2 D9 | ||
+ | |- | ||
+ | |110EEC | ||
+ | |3C 60 80 29 | ||
+ | |4B EE 31 E1 | ||
+ | |- | ||
+ | |111F2C | ||
+ | |80 01 01 24 | ||
+ | |4B EE 21 C9 | ||
+ | |- | ||
+ | |119B60 | ||
+ | |38 A0 00 04 | ||
+ | |4B ED A4 49 | ||
+ | |- | ||
+ | |119B68 | ||
+ | |3B 9C 00 04 | ||
+ | |4B ED A5 1D | ||
+ | |- | ||
+ | |11E78C | ||
+ | |38 A0 00 04 | ||
+ | |4B ED 58 1D | ||
+ | |- | ||
+ | |11E794 | ||
+ | |38 60 00 0A | ||
+ | |4B ED 58 CD | ||
+ | |- | ||
+ | |11FBD4 | ||
+ | |38 A0 00 04 | ||
+ | |4B ED 43 D5 | ||
+ | |- | ||
+ | |11FBDC | ||
+ | |80 01 00 74 | ||
+ | |4B ED 43 F5 | ||
+ | |- | ||
+ | |1278DC | ||
+ | |38 A0 00 04 | ||
+ | |4B EC C6 CD | ||
+ | |- | ||
+ | |127938 | ||
+ | |80 01 01 14 | ||
+ | |4B EC C8 29 | ||
+ | |- | ||
+ | |1687E0 | ||
+ | |54 05 10 3A | ||
+ | |4B E8 BA 15 | ||
+ | |- | ||
+ | |1687E8 | ||
+ | |80 81 00 20 | ||
+ | |4B E8 B9 E9 | ||
|- | |- | ||
|19D1FC | |19D1FC | ||
Line 33: | Line 170: | ||
|} | |} | ||
− | ====Required Relocatable | + | ====Required Relocatable editing==== |
Some relocatables require code editing in-order to modify their orthographic scaling to match the game's aspect ratio. | Some relocatables require code editing in-order to modify their orthographic scaling to match the game's aspect ratio. | ||
The following relocatables require code modification to set the aspect ratio used by the game. | The following relocatables require code modification to set the aspect ratio used by the game. | ||
− | {| class="prettytable" | + | =====NTSC-U===== |
− | !Relocatable||Address | + | ======Static Overwrite====== |
+ | {| class="prettytable" style="width:auto;" | ||
+ | !Relocatable||Address||Original Bytes||Replace With | ||
|- | |- | ||
|advertiseD.rel | |advertiseD.rel | ||
Line 45: | Line 184: | ||
|38 A0 00 04<br>80 01 00 74 | |38 A0 00 04<br>80 01 00 74 | ||
|4B 59 80 81<br>4B 59 80 A1 | |4B 59 80 81<br>4B 59 80 A1 | ||
+ | |- | ||
+ | |autosaveD.rel | ||
+ | |2928<br>2930<br>33CC<br>33D4 | ||
+ | |38 A0 00 04<br>7F C3 F3 78<br>38 A0 00 04<br>80 01 00 74 | ||
+ | |48 00 20 99<br>48 00 20 B9<br>48 00 15 F5<br>48 00 16 9D | ||
+ | |- | ||
+ | |stage00D.rel | ||
+ | |4C8DC | ||
+ | |38 A0 00 04 | ||
+ | |48 07 6A C5 | ||
+ | |- | ||
+ | |stage01D.rel | ||
+ | |4AB14 | ||
+ | |38 A0 00 04 | ||
+ | |48 08 E9 CD | ||
+ | |- | ||
+ | |stage03D.rel | ||
+ | |4AB1C | ||
+ | |38 A0 00 04 | ||
+ | |48 08 52 75 | ||
+ | |- | ||
+ | |stage05D.rel | ||
+ | |4AB14 | ||
+ | |38 A0 00 04 | ||
+ | |48 08 9D CD | ||
+ | |- | ||
+ | |stage07D.rel | ||
+ | |4AB1C | ||
+ | |38 A0 00 04 | ||
+ | |48 0A E2 55 | ||
+ | |- | ||
+ | |stage09D.rel | ||
+ | |4AB14 | ||
+ | |38 A0 00 04 | ||
+ | |48 08 E2 AD | ||
+ | |- | ||
+ | |stage11D.rel | ||
+ | |4AB14 | ||
+ | |38 A0 00 04 | ||
+ | |48 09 5D 0D | ||
+ | |- | ||
+ | |stage13D.rel | ||
+ | |4AAFC | ||
+ | |38 A0 00 04 | ||
+ | |48 09 7E 55 | ||
+ | |- | ||
+ | |stage26D.rel | ||
+ | |436E4 | ||
+ | |38 A0 00 04 | ||
+ | |48 07 58 4D | ||
+ | |- | ||
+ | |stage27D.rel | ||
+ | |436DC | ||
+ | |38 A0 00 04 | ||
+ | |48 04 3F 75 | ||
+ | |- | ||
+ | |stage28D.rel | ||
+ | |436DC | ||
+ | |38 A0 00 04 | ||
+ | |48 04 7C 05 | ||
+ | |- | ||
+ | |stage31D.rel | ||
+ | |4AB14 | ||
+ | |38 A0 00 04 | ||
+ | |48 03 4F 8D | ||
+ | |- | ||
+ | |stage32D.rel | ||
+ | |4AB14 | ||
+ | |38 A0 00 04 | ||
+ | |48 03 4F 8D | ||
+ | |- | ||
+ | |stage33D.rel | ||
+ | |4AB14 | ||
+ | |38 A0 00 04 | ||
+ | |48 03 7C ED | ||
+ | |- | ||
+ | |stage40D.rel | ||
+ | |88E24<br>88EE8 | ||
+ | |80 01 00 14<br>80 01 00 14 | ||
+ | |48 01 60 E5<br>48 01 5F F9 | ||
+ | |} | ||
+ | |||
+ | ======Injection====== | ||
+ | {| class="prettytable" style="width:auto;" | ||
+ | !Relocatable||Address||Injectable Bytes||Length | ||
+ | |- | ||
+ | |autosaveD.rel | ||
+ | |49C0<br>49E8<br>4A90 | ||
+ | |81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20<br>3D E0 80 29 3D C0 3F 80 91 CF 06 9C 91 CF 06 A8 91 CF 06 BC 3D CE 80 00 91 CF 06 94 7F C3 F3 78 4E 80 00 20<br>3D E0 80 29 3D C0 3F 80 91 CF 06 9C 91 CF 06 A8 91 CF 06 BC 3D CE 80 00 91 CF 06 94 80 01 00 74 4E 80 00 20 | ||
+ | |0x28<br>0x24<br>0x24 | ||
+ | |- | ||
+ | |stage00D.rel | ||
+ | |C33A0 | ||
+ | |81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 | ||
+ | |0x28 | ||
+ | |- | ||
+ | |stage01D.rel | ||
+ | |D94E0 | ||
+ | |81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 | ||
+ | |0x28 | ||
+ | |- | ||
+ | |stage03D.rel | ||
+ | |CFD90 | ||
+ | |81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 | ||
+ | |0x28 | ||
+ | |- | ||
+ | |stage05D.rel | ||
+ | |D48E0 | ||
+ | |81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 | ||
+ | |0x28 | ||
+ | |- | ||
+ | |stage07D.rel | ||
+ | |F8D70 | ||
+ | |81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 | ||
+ | |0x28 | ||
+ | |- | ||
+ | |stage09D.rel | ||
+ | |D8DC0 | ||
+ | |81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 | ||
+ | |0x28 | ||
+ | |- | ||
+ | |stage11D.rel | ||
+ | |E0820 | ||
+ | |81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 | ||
+ | |0x28 | ||
+ | |- | ||
+ | |stage13D.rel | ||
+ | |E2950 | ||
+ | |81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 | ||
+ | |0x28 | ||
+ | |- | ||
+ | |stage26D.rel | ||
+ | |B8F30 | ||
+ | |81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 | ||
+ | |0x28 | ||
+ | |- | ||
+ | |stage27D.rel | ||
+ | |87650 | ||
+ | |81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 | ||
+ | |0x28 | ||
+ | |- | ||
+ | |stage28D.rel | ||
+ | |8B2E0 | ||
+ | |81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 | ||
+ | |0x28 | ||
+ | |- | ||
+ | |stage31D.rel | ||
+ | |7FAA0 | ||
+ | |81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 | ||
+ | |0x28 | ||
+ | |- | ||
+ | |stage32D.rel | ||
+ | |7FAA0 | ||
+ | |81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 | ||
+ | |0x28 | ||
+ | |- | ||
+ | |stage33D.rel | ||
+ | |82800 | ||
+ | |81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 | ||
+ | |0x28 | ||
+ | |- | ||
+ | |stage40D.rel | ||
+ | |9EEE0<br>9EF08 | ||
+ | |81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 80 01 00 14 4E 80 00 20<br>3D E0 80 29 3D C0 3F 80 91 CF 06 9C 91 CF 06 A8 91 CF 06 BC 3D CE 80 00 91 CF 06 94 80 01 00 14 4E 80 00 20 | ||
+ | |0x28<br>0x24 | ||
|} | |} | ||
===Final code writing=== | ===Final code writing=== | ||
When in use, replace the zeros in the following addresses with your aspect float value. | When in use, replace the zeros in the following addresses with your aspect float value. | ||
− | {| class="prettytable" | + | {| class="prettytable" style="width:auto;" |
!Address (NTSC-U)||Aspect FOV Direction | !Address (NTSC-U)||Aspect FOV Direction | ||
|- | |- | ||
Line 62: | Line 366: | ||
====Examples==== | ====Examples==== | ||
− | {| class="prettytable" | + | {| class="prettytable" style="width:auto;" |
!Aspect (X)||Aspect (Y)||Ratio | !Aspect (X)||Aspect (Y)||Ratio | ||
|- | |- | ||
Line 104: | Line 408: | ||
|3F800000 | |3F800000 | ||
|21:9 | |21:9 | ||
+ | |} | ||
+ | |||
+ | |||
+ | ===Optional FOV=== | ||
+ | If you want to adjust the field of view on your screen along with the orthographic elements without decreasing the aspect ratio float codes to achieve higher FOV, you may do so by using one of the code replacements. | ||
+ | ====Injection==== | ||
+ | {| class="prettytable" style="width:auto;" | ||
+ | !Address (NTSC-U)||Injectable Codes||Length | ||
+ | |- | ||
+ | |80C | ||
+ | |3C 60 80 29 81 C2 A8 D0 81 E2 A8 D4 7C 0E 78 00 41 82 00 24 C2 22 A7 28 C2 42 A7 2C C2 62 A8 D0 EE 31 04 F3 EE 52 04 F3 D2 22 A7 28 D2 42 A7 2C 91 C2 A8 D4 48 1A 8F 14 | ||
+ | |0x38 | ||
+ | |- | ||
+ | |844 | ||
+ | |38 81 00 08 81 C2 A8 D0 81 E2 A8 D4 7C 0E 78 00 41 82 00 24 C2 22 A7 28 C2 42 A7 2C C2 62 A8 D0 EE 31 04 F3 EE 52 04 F3 D2 22 A7 28 D2 42 A7 2C 91 C2 A8 D4 4E 80 00 20 | ||
+ | |0x38 | ||
+ | |} | ||
+ | |||
+ | ====Static Overwrite==== | ||
+ | {| class="prettytable" style="width:auto;" | ||
+ | !Address (NTSC-U)||Original Bytes||Replace With | ||
+ | |- | ||
+ | |19D1F0 | ||
+ | |3C 60 80 29 | ||
+ | |4B E5 70 BC | ||
+ | |- | ||
+ | |C62AC | ||
+ | |38 81 00 08 | ||
+ | |4B F2 E0 39 | ||
+ | |} | ||
+ | |||
+ | ====Float placement==== | ||
+ | {| class="prettytable" style="width:auto;" | ||
+ | !Address (NTSC-U)||Default Multiplier Hex | ||
+ | |- | ||
+ | |29C790 | ||
+ | |3F800000 | ||
+ | |} | ||
+ | |||
+ | Note: This should be changed before booting up the game. | ||
+ | |||
+ | ==Colors== | ||
+ | In each GC executable contains some colors for certain effects like tornadoes and trail effects. | ||
+ | |||
+ | Color RGB Entry:<br> | ||
+ | {{red|00}} {{lime|00}} {{blue|00}} {{grey|00}} | ||
+ | {| class="prettytable" style="width:auto;" | ||
+ | !Offset||Type||Description | ||
+ | |- | ||
+ | | {{red|0x00}} | ||
+ | | {{red|Byte}} | ||
+ | | {{red|Red}} | ||
+ | |- | ||
+ | | {{lime|0x01}} | ||
+ | | {{lime|Byte}} | ||
+ | | {{lime|Green}} | ||
+ | |- | ||
+ | | {{blue|0x02}} | ||
+ | | {{blue|Byte}} | ||
+ | | {{blue|Blue}} | ||
+ | |- | ||
+ | | {{grey|0x03}} | ||
+ | | {{grey|Byte}} | ||
+ | | {{grey|Alpha}} | ||
+ | |} | ||
+ | ===Character Effect Colors=== | ||
+ | The entries start at the following addresses. | ||
+ | {| class="prettytable" style="width:auto;" | ||
+ | !Address (NTSC-U)||Address (PAL)||Address (NTSC-J)||Effect | ||
+ | |- | ||
+ | |24A378 | ||
+ | |24A958 | ||
+ | |24A458 | ||
+ | |Aura Balls for Speed Characters | ||
+ | |- | ||
+ | |236C5C | ||
+ | |2371FC | ||
+ | |236D3C | ||
+ | |Aura Balls for Power Characters | ||
+ | |- | ||
+ | |236D10 | ||
+ | |2372B0 | ||
+ | |236DF0 | ||
+ | |Aura Balls for Fly Characters | ||
+ | |} | ||
+ | |||
+ | ==Frame Rates== | ||
+ | The game sets the frame rate based on what the code tells the game to refresh the frames at while rendering. | ||
+ | |||
+ | The following frame rate IDs are available in this port of the game: | ||
+ | |||
+ | {| class="prettytable" style="width:auto;" | ||
+ | !ID||Frames Per Second | ||
+ | |- | ||
+ | |00 | ||
+ | |60 | ||
+ | |- | ||
+ | |01 | ||
+ | |30 | ||
+ | |- | ||
+ | |02 | ||
+ | |30 (2x Speed) | ||
+ | |- | ||
+ | |03 | ||
+ | |30 (3x Speed) | ||
+ | |} | ||
+ | |||
+ | ===Addresses=== | ||
+ | There are some addresses that set a frame rate for single and multiplayer modes. | ||
+ | |||
+ | {| class="prettytable" style="width:auto;" | ||
+ | !Address (NTSC-U)||Default Value||Type | ||
+ | |- | ||
+ | |B6C7 | ||
+ | |01 | ||
+ | |Multiplayer Frame Rate | ||
|} | |} | ||
Line 113: | Line 533: | ||
{{grey|38 60 00}} {{yellow|00}} {{grey|38 80 00}} {{Laser Lemon|00}}<br> | {{grey|38 60 00}} {{yellow|00}} {{grey|38 80 00}} {{Laser Lemon|00}}<br> | ||
− | {| class="prettytable" | + | {| class="prettytable" style="width:auto;" |
!Offset||Type||Description | !Offset||Type||Description | ||
|- | |- | ||
Line 130: | Line 550: | ||
{{grey|38 60 00}} {{yellow|00}} {{grey|38 80 00}} {{yellow|00}} {{grey|38 A0 00}} {{yellow|00}} {{grey|38 c0 00}} {{yellow|00}} | {{grey|38 60 00}} {{yellow|00}} {{grey|38 80 00}} {{yellow|00}} {{grey|38 A0 00}} {{yellow|00}} {{grey|38 c0 00}} {{yellow|00}} | ||
− | {| class="prettytable" | + | {| class="prettytable" style="width:auto;" |
!Offset||Type||Description | !Offset||Type||Description | ||
|- | |- | ||
Line 142: | Line 562: | ||
====NTSC-U==== | ====NTSC-U==== | ||
− | {|class="prettytable" | + | {| class="prettytable" style="width:auto;" |
!Addresses (Final)||Materials||Default Parameter Values||Targeting Object||Notes | !Addresses (Final)||Materials||Default Parameter Values||Targeting Object||Notes | ||
|- | |- | ||
Line 158: | Line 578: | ||
|} | |} | ||
− | ==Material | + | ==Material flags== |
These are the following flags in the DOL files. | These are the following flags in the DOL files. | ||
===NTSC-U=== | ===NTSC-U=== | ||
− | {|class="prettytable" | + | {| class="prettytable" style="width:auto;" |
!Addresses (Final)||Models||Default byte values||Flag Type(s)||Notes | !Addresses (Final)||Models||Default byte values||Flag Type(s)||Notes | ||
|- | |- | ||
Line 200: | Line 620: | ||
|72 Pointer | |72 Pointer | ||
| | | | ||
+ | |} | ||
+ | |||
+ | ==Start/Ending positions== | ||
+ | A list of single player positions start in these addresses for each GameCube release of the game: | ||
+ | |||
+ | {| class="prettytable" style="width:auto;" | ||
+ | !Address (E3 Beta)||Address (MKDD Bonus Disc)||Address (NTSC-U, Beta 10.8)||Address (NTSC-U, Beta 11.18)||Address (NTSC-U)||Address (PAL)||Address (NTSC-J) | ||
+ | |- | ||
+ | |1B410F | ||
+ | |Not Available on .dol, but can be located at 0x3386F3 in tgc. | ||
+ | |23F00F | ||
+ | |24C877 | ||
+ | |24CEB3 | ||
+ | |24D493 | ||
+ | |24CF93 | ||
+ | |} | ||
+ | |||
+ | Each level array has the first 4 bytes setting the level number at the first byte and five 0x1C entries for the four teams and Super Hard (although the Super Hard entry seems to be ignored, it uses each team's position entries as usual instead). Note that the level IDs used are '''not''' the same ones as the level and object lists, they are the ones used in RAM, for example Seaside Hill is 02<br /> | ||
+ | |||
+ | Start position entry:<br /> | ||
+ | {{red|00 00 00 00}} {{green|00 00 00 00}} {{blue|00 00 00 00}} {{yellow|00 00}} {{grey|00 00 00 00 00 00}} {{cyan|00}} {{grey|00 00 00}} {{magenta|00 00}} {{grey|00 00}}<br /> | ||
+ | |||
+ | {| class="prettytable" style="width:auto;" | ||
+ | !Offset||Type||Description | ||
+ | |- | ||
+ | | {{red|0x00}} | ||
+ | | {{red|Float}} | ||
+ | | {{red|X Position}} | ||
+ | |- | ||
+ | | {{green|0x04}} | ||
+ | | {{green|Float}} | ||
+ | | {{green|Y Position}} | ||
+ | |- | ||
+ | | {{blue|0x08}} | ||
+ | | {{blue|Float}} | ||
+ | | {{blue|Z Position}} | ||
+ | |- | ||
+ | | {{yellow|0x0C}} | ||
+ | | {{yellow|Word}} | ||
+ | | {{yellow|Pitch (direction)}} | ||
+ | |- | ||
+ | | {{cyan|0x14}} | ||
+ | | {{cyan|Byte}} | ||
+ | | {{cyan|Mode<br />00: Normal<br />01: Running<br />02: Rail}} | ||
+ | |- | ||
+ | | {{magenta|0x18}} | ||
+ | | {{magenta|Word}} | ||
+ | | {{magenta|Hold time<br />Time spent running}} | ||
|} | |} |
Latest revision as of 16:48, 24 March 2020
SCHG: Sonic Heroes |
---|
Main Article |
Mechanic Editing |
DOL Editing |
Model Editing |
Collision Format Model Format |
Level Editing |
Camera Editing |
Particle Editing |
Particle Editing |
Sound Editing |
Music List |
SCHG How-Tos |
Custom Object Material Effect Tutorial |
The main DOL of the GC game is Start.dol. This executable contains codes in different offsets for each region and version released in a variety of countries.
Contents
Aspect Ratio (In-complete)
As with the GameCube version of the game, it's default aspect is at 4:3 for most standard TVs. It can be tweaked by inseting codes in a specific address to read the specified aspect ratio float values and use for modern TV screens in their specific format such as with 16:9 and 21:9.
Injection Process
NTSC-U
Address | Injectable Codes | Code Injection Length |
---|---|---|
4D8 | 81 C2 A7 28 91 C2 00 00 C2 22 00 00 EC 11 00 32 D0 03 00 04 48 1A 92 74 81 C2 A7 2C 91 C2 00 00 C2 22 00 00 EC 11 00 32 D0 03 00 0C 48 1A 92 64 | 0x30 |
508 | 81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 3D E0 80 29 3D C0 3F 80 91 CF 06 9C 91 CF 06 A8 91 CF 06 BC 3D CE 80 00 91 CF 06 94 80 01 00 74 4E 80 00 20 | 0x4C |
554 | 3D E0 80 29 3D C0 3F 80 91 CF 06 9C 91 CF 06 A8 91 CF 06 BC 3D CE 80 00 91 CF 06 94 38 60 00 01 4E 80 00 20 | 0x24 |
5C0 | 3D E0 80 29 3D C0 3F 80 91 CF 06 9C 91 CF 06 A8 91 CF 06 BC 3D CE 80 00 91 CF 06 94 38 60 00 0A 4E 80 00 20 | 0x24 |
5E4 | 3D E0 80 29 3D C0 3F 80 91 CF 06 9C 91 CF 06 A8 91 CF 06 BC 3D CE 80 00 91 CF 06 94 3B 9C 00 04 4E 80 00 20 | 0x24 |
608 | 3D E0 80 29 3D C0 3F 80 91 CF 06 9C 91 CF 06 A8 91 CF 06 BC 3D CE 80 00 91 CF 06 94 E3 E1 00 58 4E 80 00 20 | 0x24 |
62C | 81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 4E 80 00 20 | 0x24 |
654 | 3D E0 80 29 3D C0 3F 80 91 CF 06 9C 91 CF 06 A8 91 CF 06 BC 3D CE 80 00 91 CF 06 94 80 01 01 24 4E 80 00 20 | 0x24 |
6C0 | 3D E0 80 29 3D C0 3F 80 91 CF 06 9C 91 CF 06 A8 91 CF 06 BC 3D CE 80 00 91 CF 06 94 80 01 01 14 4E 80 00 20 | 0x24 |
6E4 | 3D E0 80 29 3D C0 3F 80 91 CF 06 9C 91 CF 06 A8 91 CF 06 BC 3D CE 80 00 91 CF 06 94 80 01 00 14 4E 80 00 20 | 0x24 |
708 | 81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 7F E3 FB 78 4E 80 00 20 | 0x28 |
730 | 3D E0 80 29 3D C0 3F 80 91 CF 06 9C 91 CF 06 A8 91 CF 06 BC 3D CE 80 00 91 CF 06 94 80 81 00 20 4E 80 00 20 | 0x24 |
754 | 81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 54 05 10 3A 4E 80 00 20 | 0x28 |
7C0 | 3D C0 3F 80 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 | 0x28 |
7E8 | 3D E0 80 29 3D C0 3F 80 91 CF 06 9C 91 CF 06 A8 91 CF 06 BC 3D CE 80 00 91 CF 06 94 38 60 00 0C 4E 80 00 20 | 0x24 |
Overwriting Codes
In-order to make the codes jump to your injected codes, you will need to replace the bytes with the following to become effective.
Address (NTSC-U) | Original Bytes | Replace With |
---|---|---|
42964 | 38 A0 00 04 | 4B FB 18 FD |
4296C | 38 60 00 0C | 4B FB 19 1D |
98070 | 80 01 00 14 | 4B F5 C1 15 |
C60D8 | 38 A0 00 04 | 4B F2 DE D1 |
C60E0 | 38 60 00 01 | 4B F2 DF 15 |
C62B0 | 38 A0 00 04 | 4B F2 DC F9 |
C62B8 | 38 60 00 01 | 4B F2 DD 3D |
105DC8 | 38 A0 00 04 | 4B EE E1 E1 |
105DD0 | E3 E1 00 58 | 4B EE E2 D9 |
110EEC | 3C 60 80 29 | 4B EE 31 E1 |
111F2C | 80 01 01 24 | 4B EE 21 C9 |
119B60 | 38 A0 00 04 | 4B ED A4 49 |
119B68 | 3B 9C 00 04 | 4B ED A5 1D |
11E78C | 38 A0 00 04 | 4B ED 58 1D |
11E794 | 38 60 00 0A | 4B ED 58 CD |
11FBD4 | 38 A0 00 04 | 4B ED 43 D5 |
11FBDC | 80 01 00 74 | 4B ED 43 F5 |
1278DC | 38 A0 00 04 | 4B EC C6 CD |
127938 | 80 01 01 14 | 4B EC C8 29 |
1687E0 | 54 05 10 3A | 4B E8 BA 15 |
1687E8 | 80 81 00 20 | 4B E8 B9 E9 |
19D1FC | D0 03 00 04 | 4B E5 6D 7C |
19D204 | D0 03 00 0C | 4B E5 6D 8C |
Required Relocatable editing
Some relocatables require code editing in-order to modify their orthographic scaling to match the game's aspect ratio.
The following relocatables require code modification to set the aspect ratio used by the game.
NTSC-U
Static Overwrite
Relocatable | Address | Original Bytes | Replace With |
---|---|---|---|
advertiseD.rel | 14688 14690 |
38 A0 00 04 80 01 00 74 |
4B 59 80 81 4B 59 80 A1 |
autosaveD.rel | 2928 2930 33CC 33D4 |
38 A0 00 04 7F C3 F3 78 38 A0 00 04 80 01 00 74 |
48 00 20 99 48 00 20 B9 48 00 15 F5 48 00 16 9D |
stage00D.rel | 4C8DC | 38 A0 00 04 | 48 07 6A C5 |
stage01D.rel | 4AB14 | 38 A0 00 04 | 48 08 E9 CD |
stage03D.rel | 4AB1C | 38 A0 00 04 | 48 08 52 75 |
stage05D.rel | 4AB14 | 38 A0 00 04 | 48 08 9D CD |
stage07D.rel | 4AB1C | 38 A0 00 04 | 48 0A E2 55 |
stage09D.rel | 4AB14 | 38 A0 00 04 | 48 08 E2 AD |
stage11D.rel | 4AB14 | 38 A0 00 04 | 48 09 5D 0D |
stage13D.rel | 4AAFC | 38 A0 00 04 | 48 09 7E 55 |
stage26D.rel | 436E4 | 38 A0 00 04 | 48 07 58 4D |
stage27D.rel | 436DC | 38 A0 00 04 | 48 04 3F 75 |
stage28D.rel | 436DC | 38 A0 00 04 | 48 04 7C 05 |
stage31D.rel | 4AB14 | 38 A0 00 04 | 48 03 4F 8D |
stage32D.rel | 4AB14 | 38 A0 00 04 | 48 03 4F 8D |
stage33D.rel | 4AB14 | 38 A0 00 04 | 48 03 7C ED |
stage40D.rel | 88E24 88EE8 |
80 01 00 14 80 01 00 14 |
48 01 60 E5 48 01 5F F9 |
Injection
Relocatable | Address | Injectable Bytes | Length |
---|---|---|---|
autosaveD.rel | 49C0 49E8 4A90 |
81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 3D E0 80 29 3D C0 3F 80 91 CF 06 9C 91 CF 06 A8 91 CF 06 BC 3D CE 80 00 91 CF 06 94 7F C3 F3 78 4E 80 00 20 3D E0 80 29 3D C0 3F 80 91 CF 06 9C 91 CF 06 A8 91 CF 06 BC 3D CE 80 00 91 CF 06 94 80 01 00 74 4E 80 00 20 |
0x28 0x24 0x24 |
stage00D.rel | C33A0 | 81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 | 0x28 |
stage01D.rel | D94E0 | 81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 | 0x28 |
stage03D.rel | CFD90 | 81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 | 0x28 |
stage05D.rel | D48E0 | 81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 | 0x28 |
stage07D.rel | F8D70 | 81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 | 0x28 |
stage09D.rel | D8DC0 | 81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 | 0x28 |
stage11D.rel | E0820 | 81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 | 0x28 |
stage13D.rel | E2950 | 81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 | 0x28 |
stage26D.rel | B8F30 | 81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 | 0x28 |
stage27D.rel | 87650 | 81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 | 0x28 |
stage28D.rel | 8B2E0 | 81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 | 0x28 |
stage31D.rel | 7FAA0 | 81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 | 0x28 |
stage32D.rel | 7FAA0 | 81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 | 0x28 |
stage33D.rel | 82800 | 81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 38 A0 00 04 4E 80 00 20 | 0x28 |
stage40D.rel | 9EEE0 9EF08 |
81 C2 A7 28 3D E0 80 29 91 CF 06 A8 3D CE 80 00 91 CF 06 94 81 C2 A7 2C 91 CF 06 BC 91 CF 06 9C 80 01 00 14 4E 80 00 20 3D E0 80 29 3D C0 3F 80 91 CF 06 9C 91 CF 06 A8 91 CF 06 BC 3D CE 80 00 91 CF 06 94 80 01 00 14 4E 80 00 20 |
0x28 0x24 |
Final code writing
When in use, replace the zeros in the following addresses with your aspect float value.
Address (NTSC-U) | Aspect FOV Direction |
---|---|
29C5E8 | Horizontal |
29C5EC | Vertical |
The default float value is 1 (3F800000). To get the float value for the horizontal aspect, use a calculator to divide the width by the height (example: 1920 ÷ 1080 = 1.777777777777778), then get the original aspect by dividing a 4:3 resolution (example: 640 ÷ 480 = 1.333333333333333) and divide the original aspect float with yours (example: 1.333333333333333 ÷ 1.777777777777778 = 0.75) and then convert it to a big endian hex value and paste write it on the address before the vertical FOV. As for the vertical FOV, do the same thing but multiply the horizontal aspect ratio with 0.75 to get the vertical FOV multiplier, then multiply it again with multiplier you got before converting to a hex value.
Examples
Aspect (X) | Aspect (Y) | Ratio |
---|---|---|
3F800000 | 3F400000 | 1:1 (Vertical increase from 4:3) |
3F400000 | 3F100000 | 1:1 (Vertical increase from 16:9) |
3F400000 | 3F400000 | 4:3 (Vertical increase from 16:9) |
3F78FF39 | 3F800000 | 1.37:1 |
3F400000 | 3f456666 | 1.37:1 (Vertical increase from 16:9) |
3F555555 | 3F800000 | 16:10 |
3F400000 | 3F555555 | 16:10 (Vertical increase from 16:9) |
3F400000 | 3F800000 | 16:9 |
3F388127 | 3F800000 | 1.85:1 |
3F100000 | 3F800000 | 21:9 |
Optional FOV
If you want to adjust the field of view on your screen along with the orthographic elements without decreasing the aspect ratio float codes to achieve higher FOV, you may do so by using one of the code replacements.
Injection
Address (NTSC-U) | Injectable Codes | Length |
---|---|---|
80C | 3C 60 80 29 81 C2 A8 D0 81 E2 A8 D4 7C 0E 78 00 41 82 00 24 C2 22 A7 28 C2 42 A7 2C C2 62 A8 D0 EE 31 04 F3 EE 52 04 F3 D2 22 A7 28 D2 42 A7 2C 91 C2 A8 D4 48 1A 8F 14 | 0x38 |
844 | 38 81 00 08 81 C2 A8 D0 81 E2 A8 D4 7C 0E 78 00 41 82 00 24 C2 22 A7 28 C2 42 A7 2C C2 62 A8 D0 EE 31 04 F3 EE 52 04 F3 D2 22 A7 28 D2 42 A7 2C 91 C2 A8 D4 4E 80 00 20 | 0x38 |
Static Overwrite
Address (NTSC-U) | Original Bytes | Replace With |
---|---|---|
19D1F0 | 3C 60 80 29 | 4B E5 70 BC |
C62AC | 38 81 00 08 | 4B F2 E0 39 |
Float placement
Address (NTSC-U) | Default Multiplier Hex |
---|---|
29C790 | 3F800000 |
Note: This should be changed before booting up the game.
Colors
In each GC executable contains some colors for certain effects like tornadoes and trail effects.
Color RGB Entry:
00 00 00 00
Offset | Type | Description |
---|---|---|
0x00 | Byte | Red |
0x01 | Byte | Green |
0x02 | Byte | Blue |
0x03 | Byte | Alpha |
Character Effect Colors
The entries start at the following addresses.
Address (NTSC-U) | Address (PAL) | Address (NTSC-J) | Effect |
---|---|---|---|
24A378 | 24A958 | 24A458 | Aura Balls for Speed Characters |
236C5C | 2371FC | 236D3C | Aura Balls for Power Characters |
236D10 | 2372B0 | 236DF0 | Aura Balls for Fly Characters |
Frame Rates
The game sets the frame rate based on what the code tells the game to refresh the frames at while rendering.
The following frame rate IDs are available in this port of the game:
ID | Frames Per Second |
---|---|
00 | 60 |
01 | 30 |
02 | 30 (2x Speed) |
03 | 30 (3x Speed) |
Addresses
There are some addresses that set a frame rate for single and multiplayer modes.
Address (NTSC-U) | Default Value | Type |
---|---|---|
B6C7 | 01 | Multiplayer Frame Rate |
Material Opcodes
A number of code sections contain additional material/graphic codes that are rendered via Renderware engine that provides special effects to an object such as Espio's invisibility and Thundershoot electricity effects.
Function entry:
RenderWare Material function:
38 60 00 00 38 80 00 00
Offset | Type | Description |
---|---|---|
0x04 | Byte | Material type |
0x08 | Byte | Material value |
See the EXE editing page for function parameter details.
Nintendo System Material function:
38 60 00 00 38 80 00 00 38 A0 00 00 38 c0 00 00
Offset | Type | Description |
---|---|---|
0x04, 0x08, 0x0C and 0x10 | Byte | Material type |
Offsets
A list shows offsets for special material effects that were discovered in the DOL. More codes that have been found and not already on the list will be added.
NTSC-U
Addresses (Final) | Materials | Default Parameter Values | Targeting Object | Notes |
---|---|---|---|---|
E357 E363 E36F E37B E3BB E3C7 |
Z-testing Z-writing Fog Enabling Culling Source Blend Destination Blend |
00 00 00 01 02 02 |
Warp Effects | |
E39F E3AB |
Source Blend Destination Blend |
02 06 |
Teleporter Switch Effect Blend Condition |
Material flags
These are the following flags in the DOL files.
NTSC-U
Addresses (Final) | Models | Default byte values | Flag Type(s) | Notes |
---|---|---|---|---|
2D663 | Character Models | 58 | 72 Pointer | |
2D68F | Charmy's Wings (In-game) | A4 | 72 Pointer | |
2D69F | Character Flying Parts | 58 | 72 Pointer | |
FD433 | Barrier | A0 | 72 Pointer | |
FE02F | Homing Attack Ring Effects | A0 | 72 Pointer | |
FE827 | Quick Ascent Ring Effects | A0 | 72 Pointer |
Start/Ending positions
A list of single player positions start in these addresses for each GameCube release of the game:
Address (E3 Beta) | Address (MKDD Bonus Disc) | Address (NTSC-U, Beta 10.8) | Address (NTSC-U, Beta 11.18) | Address (NTSC-U) | Address (PAL) | Address (NTSC-J) |
---|---|---|---|---|---|---|
1B410F | Not Available on .dol, but can be located at 0x3386F3 in tgc. | 23F00F | 24C877 | 24CEB3 | 24D493 | 24CF93 |
Each level array has the first 4 bytes setting the level number at the first byte and five 0x1C entries for the four teams and Super Hard (although the Super Hard entry seems to be ignored, it uses each team's position entries as usual instead). Note that the level IDs used are not the same ones as the level and object lists, they are the ones used in RAM, for example Seaside Hill is 02
Start position entry:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Offset | Type | Description |
---|---|---|
0x00 | Float | X Position |
0x04 | Float | Y Position |
0x08 | Float | Z Position |
0x0C | Word | Pitch (direction) |
0x14 | Byte | Mode 00: Normal 01: Running 02: Rail |
0x18 | Word | Hold time Time spent running |