Difference between revisions of "Sonic Heroes/EXE Editing"
From Sonic Retro
m (Text replacement - "MainMemory" to "MainMemory") |
(→Debug Mode) |
||
(One intermediate revision by one other user not shown) | |||
Line 1,868: | Line 1,868: | ||
|} | |} | ||
+ | == Demo Gameplay == | ||
+ | [[File:SH_Demo_Mode.png|200px|right|thumb]] | ||
+ | The PC version has this feature left out and instead only use the opening movies after doing nothing in the title screen, however it can be brought back by replacing the original byte array with 80 F9 06 0F 4D CB at 0x5698A. | ||
== Debug Mode == | == Debug Mode == | ||
The debug mode is always hidden during gameplay, but it can be enabled by replacing the original bytes in the EXE with these in-order to display them. | The debug mode is always hidden during gameplay, but it can be enabled by replacing the original bytes in the EXE with these in-order to display them. | ||
Line 7,454: | Line 7,457: | ||
{{SCHGuides}} | {{SCHGuides}} | ||
− |
Revision as of 07:27, 8 August 2018
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 |
This guide is currently obsolete, but addresses from the executable will remain documented in this article.
The main EXE of the PC game is Tsonic_win.exe. The EXE is little endian. Unlike console versions, the pointer key is 0x400000; to find where a pointer points to, you must subtract that from its value.
Contents
- 1 Mission Tasks
- 2 Single Player Team Battle matches
- 3 Super Team Sonic anywhere
- 4 Start/End Positions
- 5 Rank Requirements (Incomplete/Work in progress)
- 6 Unlock Requirements
- 7 Screen Fading
- 8 Frame Rate for Split Screen
- 9 Demo Gameplay
- 10 Debug Mode
- 11 Player Abilities
- 12 Ring Mechanism
- 13 Amount of Rings for Metal Overlord
- 14 Splines
- 15 Seaside Hill Bobsled Exclusion
- 16 Egg Pawn Roulette Mode
- 17 Metal Characters in 1P mode
- 18 Per Geometry ID Sky Visibility Toggling
- 19 Tutorial Mode Team Defaults
- 20 Particle Effect Events (Incomplete)
- 21 Warp Effects
- 22 Field of view
- 23 EXE defined particle settings
- 24 Game Over state
- 25 Super Hard Challenge
- 26 Material Functions
- 27 Special Stage Object Model Settings
- 28 Special Stage Particles (Incomplete)
Mission Tasks
The codes check the requirements for completion in-order to clear a mission such as collecting rings in Team Rose's extra missions. Different codes are scattered throughout the EXE in a number of code sections.
Time Challenges
The entry of each time limit missions start at 0x3C6A68 and the Chaotix section starts at 0x3C6AD8. These set how many minutes the player must qualify to complete the mission.
Timed Mission Entry:
00 00 00 00 00 00 00 00
Offset | Description |
---|---|
0x00 | Level ID |
0x04 | Assigned Team ID |
0x05 | Number of Minutes |
List of Missions:
Address (EXE) | Address (RAM) | Level | Team ID | Default No. of Minutes |
---|---|---|---|---|
3C6A68 | 7C6A68 | Seaside Hill | Team Sonic | 05 |
3C6A70 | 7C6A70 | Ocean Palace | Team Sonic | 05 |
3C6A78 | 7C6A78 | Grand Metropolis | Team Sonic | 05 |
3C6A80 | 7C6A80 | Power Plant | Team Sonic | 09 |
3C6A88 | 7C6A88 | Casino Park | Team Sonic | 05 |
3C6A90 | 7C6A90 | BINGO Highway | Team Sonic | 06 |
3C6A98 | 7C6A98 | Rail Canyon | Team Sonic | 05 |
3C6AA0 | 7C6AA0 | Bullet Station | Team Sonic | 06 |
3C6AA8 | 7C6AA8 | Frog Forest | Team Sonic | 05 |
3C6AB0 | 7C6AB0 | Lost Jungle | Team Sonic | 06 |
3C6AB8 | 7C6AB8 | Hang Castle | Team Sonic | 06 |
3C6AC0 | 7C6AC0 | Mystic Mansion | Team Sonic | 07 |
3C6AC8 | 7C6AC8 | Egg Fleet | Team Sonic | 09 |
3C6AD0 | 7C6AD0 | Final Fortress | Team Sonic | 09 |
3C6AD8 | 7C6AD8 | Grand Metropolis | Team Chaotix | 08 |
3C6AE0 | 7C6AE0 | Rail Canyon | Team Chaotix | 06 |
3C6AE8 | 7C6AE8 | Rail Canyon (Team Chaotix version) | Team Chaotix | 06 |
3C6AF0 | 7C6AF0 | Frog Forest | Team Chaotix | 04 |
Note: The maximum valid amount of minutes is 128 (80 in hexadecimal), any value above 0x80 will immediately trigger a "Time Up" state after entering the level with the time challenge mission in place.
Team Dark Robot Challenge
This checks for how many robots that need to be destroyed before completing the mission using Team Dark. The default value to how many robots that should be destroyed is 100 (64 in hexadecimal). The value to that code is located at 0x1A9993 and for display is at 0x1A9984.
Team Rose Extra Mission
All extra missions for team rose is ring challenges which applies to all levels in the game.
Address | Default Ring Requirements | Default (dec.) |
---|---|---|
1A9E0F | C80 | 200 |
Team Chaotix Missions
These are the requirements that are set for the missions assigned to the team. This does not include time challenges, missions that only scan layouts for a number of said objects on both modes nor anything that does not have any requirements except for reaching the goal ring.
Address (Normal) | Address (Extra) | Mission | Level | Default Required Amount (hex.) | Default Required Amount (dec.) | Default Required Amount (Extra) (hex.) | Default Required Amount (Extra) (dec.) | Note(s) |
---|---|---|---|---|---|---|---|---|
4BF420 | 4BF424 | Collect Hermit Crabs | Seaside Hill | 0A | 10 | N/A (detects how many are placed) | N/A (detects how many are placed) | |
4BF428 | 4BF42C | Chao Rescue | Ocean Palace | 01 | 1 | 01 | 1 | |
4BF438 | 4BF43C | Destroy the Gold Turtles | Power Plant | 03 | 3 | 05 | 5 | |
4BF440 | 4BF444 | Ring Collection Challenge | Casino Park | C800 | 200 | F401 | 500 | Not used. The ring amount is checked by the ring check opcodes instead. |
4BF448 | 4BF44C | Casino Chip Collection | BINGO Highway | 0A | 10 | N/A (detects how many are placed) | N/A (detects how many are placed) | |
4BF458 | 4BF45C | Destroy the Capsules | Bullet Station | 1E | 30 | N/A (detects how many are placed) | N/A (detects how many are placed) | |
4BF468 | 4BF46C | Collect the Chao | Lost Jungle | 0A | 10 | N/A (detects how many are placed) | N/A (detects how many are placed) | |
4BF488 | 4BF48C | Collect Eggman Keys | Final Fortress | 05 | 5 | 0A | 10 |
These are the codes that check for how many rings you have before completing the mission in Casino Park.
Address | Mission Type | Level | Default Ring Requirements (Normal) | Default Ring Requirements (Extra) | Default (Normal) (dec.) | Default (Extra) (dec.) |
---|---|---|---|---|---|---|
1A9DE5 | Ring Collection Challenge | Casino Park | C800 | F401 | 200 | 500 |
For types of missions assigned for the team, one mission parameter byte per level starts at 0x20AC and ends at 0x20B9. The following parameters assign a task to complete on a level given:
Parameter ID | Mission Conditions | Extra Mission Conditions |
---|---|---|
00 | Item Collect (Half/EXE Defined) | Item Collect (Full) |
01 | Item Collect | Item Collect (without detection by Robots) |
02 | Robot Cleanup | Robot Cleanup (with time limit) |
03 | Ring Collect | Ring Collect |
04 | Regular Mission | Regular Mission (with time limit) |
05 | Regular Mission (without detection by Frogs) | Regular Mission (with time limit, but without detection by Frogs) |
06 | Regular Mission (without detection by Robots) | Regular Mission (with time limit, but without detection by Robots) |
The entry for each Goal ring state is 0x04 bytes each and begins at 0x3D0C50 for each level. The first four bytes of the entry is unused, but the used entries begins at 0x3D0C54.
State entry:
00 00 00 00
Offset | Type | Description |
---|---|---|
0x00 | Byte | State ID |
The two state IDs trigger the effects when loaded.
ID | Description |
---|---|
00 | Goal Ring |
01 | Restart Ring |
Single Player Team Battle matches
A list of team IDs are loaded for each team on team battle stages. The list for the urban level starts at 0x4DD514 and the forest battle level starts at 0x4DD5A0. Each entry has four bytes each and a list of IDs for the teams load the following teams:
ID | Team |
---|---|
00 | Sonic |
01 | Dark |
02 | Rose |
03 | Chaotix |
A list of default IDs are seen in these addresses:
Urban team battle stage:
Address | Default Team ID | Default CPU. Team | Player |
---|---|---|---|
4DD514 | 02 | Rose | Sonic |
4DD518 | 03 | Chaotix | Dark |
4DD51C | 00 | Sonic | Rose |
4DD520 | 01 | Dark | Chaotix |
Jungle team battle stage:
Address | Default Team ID | Default CPU. Team | Player |
---|---|---|---|
4DD5A0 | 01 | Dark | Sonic |
4DD5A4 | 00 | Sonic | Dark |
4DD5A8 | 03 | Chaotix | Rose |
4DD5AC | 02 | Rose | Chaotix |
Warnings: Some teams may spawn at the same start position as the player if a certain computer player ID has been loaded (e.g. Team Sonic used when Team Sonic was selected). If the selected team is the same as the one loaded on the level and you have either decided to quit, fail or complete the mission, the game will crash.
Team Battle Display
After the stage loads, an animation files to the boss HUD information loads on the screen.
A list of HUD pointers begins at 0x4DCD38 for the urban battle level and 0x4DCD48 for the jungle battle stage:
Address | Pointer RAM Address | CPU. Team | Stage |
---|---|---|---|
4DCD38 | 70 91 74 | Rose | Urban Team Battle |
4DCD3C | 6C 91 74 | Chaotix | Urban Team Battle |
4DCD40 | 0E 92 74 | Sonic | Urban Team Battle |
4DCD44 | 68 91 74 | Dark | Urban Team Battle |
4DCD48 | 68 91 74 | Dark | Jungle Team Battle |
4DCD4C | 0E 92 74 | Sonic | Jungle Team Battle |
4DCD50 | 6C 91 74 | Chaotix | Jungle Team Battle |
4DCD54 | 70 91 74 | Rose | Jungle Team Battle |
A list of animated text pointers are assigned to each team and level:
Address | Pointer RAM Address | CPU. Team | Stage |
---|---|---|---|
4DCF84 | 98 C9 74 | Rose | Urban Team Battle |
4DCF88 | 34 82 74 | Chaotix | Urban Team Battle |
4DCF8C | 4C 82 74 | Sonic | Urban Team Battle |
4DCF90 | 44 82 74 | Dark | Urban Team Battle |
4DCF94 | 44 82 74 | Dark | Jungle Team Battle |
4DCF98 | 4C 82 74 | Sonic | Jungle Team Battle |
4DCF9C | 34 82 74 | Chaotix | Jungle Team Battle |
4DCFA0 | 98 C9 74 | Rose | Jungle Team Battle |
For display on menus, there are addresses that load a texture for the team battle levels based on team selection on challenge mode.
Address | Default RAM Address Byte Array | Level Display | Selected Team | Level Theme |
---|---|---|---|---|
4BCAE | 50 FE A2 00 | Team Rose | Sonic | Urban |
4BCBF | 58 FE A2 00 | Team Chaotix | Dark | Urban |
4BCD1 | 4C FE A2 00 | Team Sonic | Rose | Urban |
4BCE3 | 54 FE A2 00 | Team Dark | Chaotix | Urban |
4BD1D | 54 FE A2 00 | Team Dark | Sonic | Jungle |
4BD2C | 4C FE A2 00 | Team Sonic | Dark | Jungle |
4BD3A | 58 FE A2 00 | Team Chaotix | Rose | Jungle |
4BD49 | 50 FE A2 00 | Team Rose | Chaotix | Jungle |
Super Team Sonic anywhere
While Team Super Sonic is loaded only if the stage is Metal Overlord, the team can easily be loaded in any level. To load the super team on different levels, do the following code edits:
Description | Address | Original Bytes | Replace With |
---|---|---|---|
Always Super Sonic | 1CBEB9 1CC0EA 1CBFDF |
CC CC CC CC CC CC CC E8 D1 FD FF FF 83 3D 10 67 8D 00 18 |
C6 86 C2 00 00 00 01 E8 CA FD FF FF 80 BE C2 00 00 00 01 |
Always Super Tails | 1B7FDD 1B7DE9 1B7ECB |
E8 0E FE FF FF CC CC CC CC CC CC CC 83 3D 10 67 8D 00 18 |
E8 07 FE FF FF C6 86 C2 00 00 00 01 80 BE C2 00 00 00 01 |
Always Super Knuckles | 1C1D6B 1C1E52 1C1E7A |
83 3D 10 67 8D 00 18 CC CC CC CC CC CC CC CC CC CC CC CC E8 91 FD FF FF |
80 BE C2 00 00 00 01 C6 86 C2 00 00 00 01 E9 B2 FD FF FF E8 D3 FF FF FF |
Before using, download MainMemory's fixes for team super sonic and replace the original .anm files with these ones.
Warning: Due to how the game functions, It has cut-scenes that will not work properly as expected, so don't use this team modification on Story Mode otherwise the game will crash. Any other level or mode including team battles in single player should load the team just fine. If used on some stages, large particles that emit from Sonic may lag the gameplay.
Start/End Positions
Start Positions
List of single player start positions begins at 0x3C2FC8. Each level array has the first 4 bytes setting the level number at the first byte and five 0x1C entries for each of the four teams and the unused fifth team. 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 |
Ending Positions
List of ending positions begins at 0x3C45B8. These are the places where each team does their victory animation and the results are displayed, after the mission is finished. Each level array has the first 4 bytes setting the level number at the first byte and five 0x14 entries for the five teams. This section has data for single player and multiplayer modes.
End position entry:
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 | Camera pitch Angle from which the characters are seen |
0x0E | Word | ? (Always FF FF) |
0x10 | Long | Null |
Multiplayer Positions
List of multiplayer start positions begins at 0x3C5E18, after the ending positions. This section has data for the Team Battles and each multiplayer level. The entries are the same as single player start positions, but only have two position entries instead of 5, for the first and second players.
List of multiplayer "bragging" positions begins at 0x3C6380, after the multiplayer start positions. These are the positions where each team makes a comment to the other one, before the multiplayer match starts. This section only has data for each multiplayer level, not the Team Battles. The entries follow the same format as single player ending positions, with four entries.
Rank Requirements (Incomplete/Work in progress)
List of scores that are required to gain a certain rank begins at 0x3C744C (0x3C766C for extra) and the time begins at 0x3C779C (0x3C78E4 for extra). These are checked whenever the score or time has reached the requirements. Note that the scores are two bytes each and are multiplied by 100.
Level | Address | Team | Mission Type | Value (Hexadecimal) | Value (Decimal) | Requirement Type | Rank Result |
---|---|---|---|---|---|---|---|
Seaside Hill | 3C744C | Sonic | Regular | 1C2 | 450 | Score | D |
Seaside Hill | 3C744E | Sonic | Regular | 1F4 | 500 | Score | C |
Seaside Hill | 3C7450 | Sonic | Regular | 226 | 550 | Score | B |
Seaside Hill | 3C7452 | Sonic | Regular | 258 | 600 | Score | A |
Seaside Hill | 3C7454 | Dark | Regular | 1C2 | 450 | Score | D |
Seaside Hill | 3C7456 | Dark | Regular | 226 | 550 | Score | C |
Seaside Hill | 3C7458 | Dark | Regular | 28A | 650 | Score | B |
Seaside Hill | 3C745A | Dark | Regular | 2BC | 700 | Score | A |
Ocean Palace | 3C7470 | Sonic | Regular | 140 | 320 | Score | D |
Ocean Palace | 3C7472 | Sonic | Regular | 190 | 400 | Score | C |
Ocean Palace | 3C7474 | Sonic | Regular | 1C2 | 450 | Score | B |
Ocean Palace | 3C7476 | Sonic | Regular | 1F4 | 500 | Score | A |
Grand Metropolis | 3C7494 | Sonic | Regular | 15E | 350 | Score | D |
Grand Metropolis | 3C7496 | Sonic | Regular | 1C2 | 450 | Score | C |
Grand Metropolis | 3C7498 | Sonic | Regular | 226 | 550 | Score | B |
Grand Metropolis | 3C749A | Sonic | Regular | 258 | 600 | Score | A |
Power Plant | 3C74B8 | Sonic | Regular | 12C | 300 | Score | D |
Power Plant | 3C74BA | Sonic | Regular | 15E | 350 | Score | C |
Power Plant | 3C74BC | Sonic | Regular | 190 | 400 | Score | B |
Power Plant | 3C74BE | Sonic | Regular | 1C2 | 450 | Score | A |
Casino Park | 3C74DC | Sonic | Regular | 118 | 280 | Score | D |
Casino Park | 3C74DE | Sonic | Regular | 140 | 320 | Score | C |
Casino Park | 3C74E0 | Sonic | Regular | 168 | 360 | Score | B |
Casino Park | 3C74E2 | Sonic | Regular | 190 | 400 | Score | A |
Bingo Highway | 3C7500 | Sonic | Regular | C8 | 200 | Score | D |
Bingo Highway | 3C7502 | Sonic | Regular | F0 | 240 | Score | C |
Bingo Highway | 3C7504 | Sonic | Regular | 118 | 280 | Score | B |
Bingo Highway | 3C7506 | Sonic | Regular | 140 | 320 | Score | A |
Rail Canyon | 3C7524 | Sonic | Regular | C8 | 200 | Score | D |
Rail Canyon | 3C7526 | Sonic | Regular | FA | 250 | Score | C |
Rail Canyon | 3C7528 | Sonic | Regular | 12C | 300 | Score | B |
Rail Canyon | 3C752A | Sonic | Regular | 15E | 300 | Score | A |
Bullet Station | 3C756C | Sonic | Regular | C8 | 200 | Score | D |
Bullet Station | 3C756E | Sonic | Regular | 12C | 300 | Score | C |
Bullet Station | 3C7570 | Sonic | Regular | 15E | 350 | Score | B |
Bullet Station | 3C7572 | Sonic | Regular | 190 | 400 | Score | A |
Frog Forest | 3C7590 | Sonic | Regular | FA | 200 | Score | D |
Frog Forest | 3C7592 | Sonic | Regular | 118 | 280 | Score | C |
Frog Forest | 3C7594 | Sonic | Regular | 140 | 320 | Score | B |
Frog Forest | 3C7596 | Sonic | Regular | 15E | 350 | Score | A |
Lost Jungle | 3C75B4 | Sonic | Regular | FA | 200 | Score | D |
Lost Jungle | 3C75B6 | Sonic | Regular | F0 | 240 | Score | C |
Lost Jungle | 3C75B8 | Sonic | Regular | 118 | 280 | Score | B |
Lost Jungle | 3C75BA | Sonic | Regular | 140 | 320 | Score | A |
Hang Castle | 3C75D8 | Sonic | Regular | 12C | 300 | Score | D |
Hang Castle | 3C75DA | Sonic | Regular | 15E | 350 | Score | C |
Hang Castle | 3C75DC | Sonic | Regular | 190 | 400 | Score | B |
Hang Castle | 3C75DE | Sonic | Regular | 1C2 | 450 | Score | A |
Mystic Mansion | 3C75FC | Sonic | Regular | C8 | 200 | Score | D |
Mystic Mansion | 3C75FE | Sonic | Regular | 118 | 280 | Score | C |
Mystic Mansion | 3C7560 | Sonic | Regular | 140 | 320 | Score | B |
Mystic Mansion | 3C7562 | Sonic | Regular | 168 | 360 | Score | A |
Egg Fleet | 3C7620 | Sonic | Regular | 64 | 100 | Score | D |
Egg Fleet | 3C7622 | Sonic | Regular | 96 | 150 | Score | C |
Egg Fleet | 3C7624 | Sonic | Regular | B4 | 180 | Score | B |
Egg Fleet | 3C7626 | Sonic | Regular | C8 | 200 | Score | A |
Final Fortress | 3C7644 | Sonic | Regular | 15E | 350 | Score | D |
Final Fortress | 3C7646 | Sonic | Regular | 1D6 | 470 | Score | C |
Final Fortress | 3C7648 | Sonic | Regular | 23A | 570 | Score | B |
Final Fortress | 3C764A | Sonic | Regular | 26C | 620 | Score | A |
Seaside Hill | 3C766C | Sonic | Extra | 140 | 320 | Score | D |
Seaside Hill | 3C766E | Sonic | Extra | 190 | 400 | Score | C |
Seaside Hill | 3C7670 | Sonic | Extra | 1C2 | 450 | Score | B |
Seaside Hill | 3C7672 | Sonic | Extra | 1F4 | 500 | Score | A |
Egg Hawk | 3C779C | Sonic | Boss | 0004 | 0 4 | Time | D |
Egg Hawk | 3C779E | Sonic | Boss | 0003 | 0 3 | Time | C |
Egg Hawk | 3C77A0 | Sonic | Boss | 0002 | 0 2 | Time | B |
Egg Hawk | 3C77A2 | Sonic | Boss | 0001 | 0 1 | Time | A |
Egg Hawk | 3C77B4 | Chaotix | Boss | 0004 | 0 4 | Time | D |
Egg Hawk | 3C77B6 | Chaotix | Boss | 0003 | 0 3 | Time | C |
Egg Hawk | 3C77B8 | Chaotix | Boss | 0002 | 0 2 | Time | B |
Egg Hawk | 3C77BA | Chaotix | Boss | 0001 | 0 1 | Time | A |
Urban Team Battle | 3C77C0 | Sonic | Boss | 1E02 | 30 2 | Time | D |
Urban Team Battle | 3C77C2 | Sonic | Boss | 1E01 | 30 1 | Time | C |
Urban Team Battle | 3C77C4 | Sonic | Boss | 0001 | 0 1 | Time | B |
Urban Team Battle | 3C77C6 | Sonic | Boss | 1E00 | 30 | Time | A |
Robot Carnival | 3C77E4 | Sonic | Boss | 1E05 | 30 5 | Time | D |
Robot Carnival | 3C77E6 | Sonic | Boss | 1E04 | 30 4 | Time | C |
Robot Carnival | 3C77E8 | Sonic | Boss | 1E03 | 30 3 | Time | B |
Robot Carnival | 3C77EA | Sonic | Boss | 1E02 | 30 2 | Time | A |
Egg Albatross | 3C7808 | Sonic | Boss | 0005 | 0 5 | Time | D |
Egg Albatross | 3C780A | Sonic | Boss | 0004 | 0 4 | Time | C |
Egg Albatross | 3C780C | Sonic | Boss | 0003 | 0 3 | Time | B |
Egg Albatross | 3C780E | Sonic | Boss | 0002 | 0 2 | Time | A |
Swamp Team Battle | 3C782C | Sonic | Boss | 1E02 | 30 2 | Time | D |
Swamp Team Battle | 3C782E | Sonic | Boss | 1E01 | 30 1 | Time | C |
Swamp Team Battle | 3C7830 | Sonic | Boss | 0001 | 0 1 | Time | B |
Swamp Team Battle | 3C7832 | Sonic | Boss | 1E00 | 30 0 | Time | A |
Robot Carnival | 3C7850 | Sonic | Boss | 0007 | 0 7 | Time | D |
Robot Carnival | 3C7852 | Sonic | Boss | 0006 | 0 6 | Time | C |
Robot Carnival | 3C7854 | Sonic | Boss | 0005 | 0 5 | Time | B |
Robot Carnival | 3C7856 | Sonic | Boss | 0004 | 0 4 | Time | A |
Egg Emperor | 3C7874 | Sonic | Boss | 1E06 | 30 6 | Time | D |
Egg Emperor | 3C7876 | Sonic | Boss | 1E05 | 30 5 | Time | C |
Egg Emperor | 3C7878 | Sonic | Boss | 1E04 | 30 4 | Time | B |
Egg Emperor | 3C787A | Sonic | Boss | 1E03 | 30 3 | Time | A |
Metal Madness/Metal Overlord | 3C78BC | Sonic | Boss | 000A | 0 10 | Time | D |
Metal Madness/Metal Overlord | 3C78BE | Sonic | Boss | 0009 | 0 9 | Time | C |
Metal Madness/Metal Overlord | 3C78C0 | Sonic | Boss | 0008 | 0 8 | Time | B |
Metal Madness/Metal Overlord | 3C78C2 | Sonic | Boss | 0007 | 0 7 | Time | A |
Metal Madness/Metal Overlord | 3C78C4 | Dark | Boss | 000A | 0 10 | Time | D |
Metal Madness/Metal Overlord | 3C78C6 | Dark | Boss | 0009 | 0 9 | Time | C |
Metal Madness/Metal Overlord | 3C78C8 | Dark | Boss | 0008 | 0 8 | Time | B |
Metal Madness/Metal Overlord | 3C78CA | Dark | Boss | 0007 | 0 7 | Time | A |
Metal Madness/Metal Overlord | 3C78CC | Rose | Boss | 000A | 0 10 | Time | D |
Metal Madness/Metal Overlord | 3C78CE | Rose | Boss | 0009 | 0 9 | Time | C |
Metal Madness/Metal Overlord | 3C78D0 | Rose | Boss | 0008 | 0 8 | Time | B |
Metal Madness/Metal Overlord | 3C78D2 | Rose | Boss | 0007 | 0 7 | Time | A |
Metal Madness/Metal Overlord | 3C78D4 | Chaotix | Boss | 000A | 0 10 | Time | D |
Metal Madness/Metal Overlord | 3C78D6 | Chaotix | Boss | 0009 | 0 9 | Time | C |
Metal Madness/Metal Overlord | 3C78D8 | Chaotix | Boss | 0008 | 0 8 | Time | B |
Metal Madness/Metal Overlord | 3C78DA | Chaotix | Boss | 0007 | 0 7 | Time | A |
The score requirement multiplier is located at 0x35C45 and it's default value is 64. When modifying the multiplier, make sure you don't set it to high as it will make it impossible to obtain higher ranks for the specific missions.
Unlock Requirements
2 Player Modes
Starting at 0x3433C0, there are only seven bytes and a list of modes require the following amount of Emblems to unlock a certain mode.
Offset | Mode | Value (Hexadecimal) | Value (Decimal) |
---|---|---|---|
0x00 | Action Race | 00 | 0 |
0x01 | Battle | 14 | 20 |
0x02 | Special Stage | 28 | 40 |
0x03 | Ring Race | 3C | 60 |
0x04 | Bobsled Race | 50 | 80 |
0x05 | Quick Race | 64 | 100 |
0x06 | Expert Race | 78 | 120 |
Metal Sonic Boss Challenge
A list of codes check the completion percentage for each team in story mode in-order to unlock the battle challenge against the transformed Metal Sonic challenge via story mode.
Address | Required Percentage (Hex.) | Required Percentage (Dec.) | Team |
---|---|---|---|
5642D | 64 | 100 | Sonic |
56456 | 64 | 100 | Dark |
5647F | 64 | 100 | Rose |
564A8 | 64 | 100 | Chaotix |
As for the required chaos emeralds, the default required value is 07 and it's located at 0x564CF. You will also need to change the code so that any value higher than required will likely to unlock the challenge.
Address | Original Byte | Replace With |
---|---|---|
564D1 | 94 | 9D |
Note: The max required percentage is 100 (64 in hex) and for chaos emeralds, the maximum required value is 07. Any value beyond the maximum required value limit will reduce the chance of unlocking the last challenge on the mode.
Super Hard
The codes starting at 0x22F030 check if the player has all ranks that meet the requirements to unlock the Super Hard challenge. The following rank IDs exist in the game:
ID | Rank |
---|---|
00 | Not Cleared |
01 | E |
02 | D |
03 | C |
04 | B |
05 | A |
Before altering which rank ID the game wants for all emblems, you will need to paste write the replacement hex string to make the game unlock if it's on a specific rank or higher:
Address | Original Hex String | Replace With |
---|---|---|
22F030 | 0F BE 59 F4 3B DA 75 01 40 0F BE 19 3B DA 75 01 40 0F BE 59 0C 3B DA 75 01 40 0F BE 59 10 3B DA 75 01 40 0F BE 59 1C 3B DA 75 01 40 0F BE 59 20 3B DA 75 01 40 0F BE 59 2C 3B DA 75 01 40 0F BE 59 38 3B DA 75 01 40 83 C1 50 4E 75 B3 8D 8F 77 04 00 00 BE 07 00 00 00 0F BE 59 FC 3B DA 75 01 40 0F BE 19 3B DA 75 01 40 0F BE 59 04 3B DA 75 01 40 0F BE 59 08 3B DA 75 01 40 83 C1 10 4E 75 D7 0F BE 8F E3 04 00 00 3B CA 5E 5B 75 01 40 C3 | 0F BE 59 F4 3B DA 7C 01 40 0F BE 19 3B DA 7C 01 40 0F BE 59 0C 3B DA 7C 01 40 0F BE 59 10 3B DA 7C 01 40 0F BE 59 1C 3B DA 7C 01 40 0F BE 59 20 3B DA 7C 01 40 0F BE 59 2C 3B DA 7C 01 40 0F BE 59 38 3B DA 7C 01 40 83 C1 50 4E 75 B3 8D 8F 77 04 00 00 BE 07 00 00 00 0F BE 59 FC 3B DA 7C 01 40 0F BE 19 3B DA 7C 01 40 0F BE 59 04 3B DA 7C 01 40 0F BE 59 08 3B DA 7C 01 40 83 C1 10 4E 75 D7 0F BE 8F E3 04 00 00 3B CA 5E 5B 7C 01 40 C3 |
There are three codes that desire a specific rank which are located in the following addresses of the EXE:
Address | Default Rank ID |
---|---|
4E780 | 05 |
50429 | 05 |
5524D | 05 |
Screen Fading
A fading plane occupies the screen when transiting to an FMV or to the loading screen for the stage from the main menu.
Address | Fade Type | Default byte(s) | Type | Modes |
---|---|---|---|---|
5766 | Screen Transition | 74 | Byte | 74 = On EB = Off |
54943 | Screen Transition from Game Completion screens | 8A 86 A0 00 00 00 | Long | 8A 86 A0 00 00 00 = On B0 FF B2 FF B1 FF = Off (with customizable RGB color codes*) |
*After paste writing the code at 0x54943, the color values are on the following code bytes:
Code:
B0 FF B2 FF B1 FF
Offset | Color |
---|---|
0x01 | Red |
0x03 | Blue |
0x05 | Green |
Conditions
The fade speed and the state IDs can be found on the following addresses on the EXE for the game clear screens that popup after the credits.
Address (Speed) | Default Speed (Hex.) | Default Speed (Dec.) | Address (State) | Default State | State Type |
---|---|---|---|---|---|
54AA9 | 10 | 16 | 54AC7 | 07 | Clear Screen |
54AE9 | 10 | 16 | 54B05 | 02 | Main Menu |
Frame Rate for Split Screen
2 Player stages that use split screen reduces the frame rate to 30fps as one code increments the frame rate byte from the split screen mode state.
Address (EXE) | Address (RAM) | Parameter bytes | Notes |
---|---|---|---|
2D07 | 402D07 | 40 = On 90 = Off |
Changing the byte to 90 on that code will uncap the frame rate to 60fps on split screen instead of dropping the frame rate down. |
To make split screen use the frame rate according to the game configuration, edit the following byte array shown in the table below:
Address | Original Bytes | Replace With |
---|---|---|
2CFC | A1 80 0B A6 00 | A1 B0 AE 8C 00 |
Demo Gameplay
The PC version has this feature left out and instead only use the opening movies after doing nothing in the title screen, however it can be brought back by replacing the original byte array with 80 F9 06 0F 4D CB at 0x5698A.
Debug Mode
The debug mode is always hidden during gameplay, but it can be enabled by replacing the original bytes in the EXE with these in-order to display them.
Debug Type | Address (EXE) | Address (RAM) | Original Bytes | Replace With | Notes |
---|---|---|---|---|---|
General Debug | 21D35D 21D376 |
61D35D 61D376 |
89 15 48 0B A6 00 CC CC CC CC CC CC CC CC CC |
EB 17 90 90 90 90 C6 05 48 0B A6 00 00 EB E4 |
The default value for the second string below the first one to replace is 00, replace the default byte before "EB" to any other value to enable the debug interface. It will change the value for the player info which would say "1P Info" if the code string at 0x21D376 is C6 05 48 0B A6 00 01 EB E4. |
Player Abilities
Moveset Restrictions
Each player character has their own conditions on who is allowed to perform certain abilities based on the character IDs used for each team. A list of jumping addresses for each condition are located in these offsets of the EXE.
Address | Default RAM Jump Address | Character |
---|---|---|
1AF6FC | 63 F0 5A | Sonic |
1AF700 | EA F1 5A | Knuckles |
1AF704 | D8 F4 5A | Tails |
1AF708 | 7A F0 5A | Shadow |
1AF70C | EA F1 5A | Omega |
1AF710 | D8 F4 5A | Rouge |
1AF714 | 87 F0 5A | Amy |
1AF718 | EA F1 5A | Big |
1AF71C | D8 F4 5A | Cream |
1AF720 | 87 F0 5A | Vector |
1AF724 | EA F1 5A | Vector |
1AF728 | AE F4 5A | Charmy |
The following RAM jump addresses execute the following conditions to certain movesets when a button has been pressed.
RAM Address (Little Endian) | Formation Type | Conditions | Addresses to completely activate the technique for use with all characters | Technique(s) | Original Bytes | Replace With |
---|---|---|---|---|---|---|
63 F0 5A | Speed | Allow Light Dash and Light Speed Attack | 1A67C0 1A6830 |
Light Dash Light Speed Attack |
8A 88 BB 00 00 00 84 C9 74 8A 88 BB 00 00 00 |
90 90 90 90 90 90 90 90 EB EB 08 90 90 90 90 |
7A F0 5A | Speed | Allow Light Dash, but block Light Speed Attack | 1A67C0 | Light Dash | 8A 88 BB 00 00 00 84 C9 74 | 90 90 90 90 90 90 90 90 EB |
87 F0 5A | Speed | Block Light Dash and Light Speed Attack | None | N/A | N/A | N/A |
D8 F4 5A | Fly | Block Flower Sting | None | N/A | N/A | N/A |
AE F4 5A | Fly | Allow Flower Sting | Warp Flower Sting Sting Attack |
171E70 1A62F4 |
9F 4B |
A0 00 |
Tornado Jump Techniques
The techniques can be performed by the character the EXE desires for who can or cannot use it. These codes read what player ID it is and executes if it matches it and if it doesn't, the speed character will instead use regular tornado jumps as usual. These are the following codes that were discovered in the EXE.
Address | Default Character ID | Default User | Ability |
---|---|---|---|
1D40F7 | 09 | Espio | Leaf Swirl |
1D4256 | 06 | Amy | Tornado Hammer |
Note: Changing the values to these addresses to 0F or some other value will make all speed characters use their original tornado moves like Amy using her pink tornado and Espio using his original green tornado.
Triangle Jump Conditions
Amy and Espio have certain restrictions for their triangle jump abilities which can either allow infinite time on the walls or block wall clinging. The conditions are found in the following addresses:
Address | Default Character ID | Character | Condition |
---|---|---|---|
1CFE38 | 09 | Espio | Disable limitations on walls |
1CFAEE | 06 | Amy | Disable Wall Cling |
If you wish to change the ID the code checks, these are the following IDs for speed characters that can be used in place of the original ID check bytes:
ID | Character |
---|---|
00 | Sonic |
03 | Shadow |
06 | Amy |
09 | Espio |
If you want all characters to stay on walls without falling off automatically after a few seconds, change the bytes at 0x1CFE39 from 0F 85 36 18 00 00 to 90 90 90 90 90 90. To enable triangle jump to be usable by all speed characters, change the value at 0x1CFAEE to 0F or any other value above this.
Ring Mechanism
Slot Machines
Rings are given depending on the symbols and symbol combinations.
These are a list of ring worth values given to add or subtract rings from a specific symbol combination.
Address | Worth Value (Hex.) | Worth Value (Dec.) | Combination ID(s) |
---|---|---|---|
3EBAFC | 000000C8 | 200 | 01 |
3EBB00 | 00000190 | 400 | 02 |
3EBB04 | 00000320 | 800 | 03 |
3EBB08 | 00000001 | 01 | 04 |
3EBB24 | 00000064 | 100 | 0B |
3EBB28 | 000000C8 | 200 | 0C |
3EBB4C | 00000032 | 50 | 15 |
3EBB74 | 0000001E | 30 | 1F |
3EBB9C | 00000014 | 20 | 29 34 |
3EBBA4 | 0000003C | 60 | 2B |
3EBBAC | 000001CF | 463 | 2D |
3EBBC4 | 0000000A | 10 | 33 |
3EBBCC | 0000001E | 30 | 35 |
3EBBEC | 00000002 | 02 | 3D |
3EBBF4 | 00000006 | 06 | 3F |
3EBC14 | FFFFFFCE | -50 | 47 |
3EBC18 | FFFFFF9C | -100 | 48 |
3EBC1C | FFFFFF38 | -200 | 49 |
Ring Worth Codes
Rings can be added or subtracted by certain objects and enemies in the game such as the Magician robot.
Address (Condition) | Address (Operator) | Address (Amount) | Conditional Amount (Hex) | Conditional Amount (Decimal) | Operator (Byte) | Default Operator | Amount of Rings to give/take (Hex) | Amount of Rings to give/take (Decimal) | Object/Enemy |
---|---|---|---|---|---|---|---|---|---|
N/A | N/A | 8336B | N/A | N/A | N/A | N/A | 01 | 01 | Ring Collect Collision |
N/A | N/A | C38B2 | N/A | N/A | N/A | N/A | 01 | 01 | Slot Ring Addition |
N/A | N/A | C38C1 | N/A | N/A | N/A | N/A | FF | -01 | Slot Ring Subtraction |
N/A | 1A4477 | N/A | N/A | N/A | D9 | Negative ecx register | N/A | N/A | Attack by Enemies |
211FF0 | 211FFD | 211FFE | 14 | 20 | C0 | Add | EC | -20 | Magician Robot |
N/A | 218333 | N/A | N/A | N/A | 48 | Decrement eax register | N/A | N/A | Metal Overlord Ring function |
N/A | N/A | 1D4688 | N/A | N/A | N/A | N/A | FB | -05 | Metal Overlord Ring function (Super Sonic blast) |
Amount of Rings for Metal Overlord
When Metal Overlord is loaded, it gives the default value of 50 rings which can be changed by going to the address provided in the box below.
Address (EXE) | Address (RAM) | Default (Hex) | Default (Dec.) |
---|---|---|---|
21835B | 61835B | 32 | 50 |
Splines
Splines set path data for autoloops, rails and other path data. The arrays for each level are located in various different places in the EXE. What is known is that each level has a list of pointers. Each pointer points to a spline header, which is defined below. Each spline header points to its list of vertices.
Header entry:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Offset | Type | Description |
---|---|---|
0x00 | Word | Always 01 00 |
0x02 | Word | Number of vertices |
0x04 | Float | Total length of spline |
0x08 | Pointer (Long) | Pointer to first vertex of spline |
0x0C | Pointer (Long) | Type of spline 0x433970 (Autoloop) 0x4343F0 (Rail) |
Point entry:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Offset | Type | Description |
---|---|---|
0x00 | Long | Unknown flags (speed?) |
0x04 | Float | Distance to next point Last one is 0 |
0x08 | Float | X Position |
0x0C | Float | Y Position |
0x10 | Float | Z Position |
Pointer Locations
Level/Object | Offset (First Pointer) (Dec) | Amount |
---|---|---|
Test Map | 4055168 | 7 |
Seaside Hill | 4074304 | 13 |
Ocean Palace | 4086676 | 6 |
Grand Metropolis | 4938592 | 12 |
Power Plant | 4108792 | 27 |
Casino Park | 4131048 | 15 |
BINGO Highway | 4149088 | 25 |
Rail Canyon | 4358232 | 272 |
Rail Canyon (Switchable Rails 1) | 4539040 | 8 |
Rail Canyon (Switchable Rails 2) | 4539076 | 2 |
Rail Canyon (Switchable Rails 3) | 4539088 | 42 |
Rail Canyon (Switchable Rails 4) | 4539304 | 42 |
Bullet Station | 4608600 | 98 |
Bullet Station (Switchable Rails) | 4617720 | 30 |
Frog Forest | 4673768 | 61 |
Lost Jungle | 4692600 | 17 |
Hang Castle | 4706576 | 12 |
Mystic Mansion | 4730824 | 24 |
Egg Fleet | 4755864 | 22 |
Final Fortress | 4799096 | 50 |
Egg Albatross | 4844648 | 72 |
Robot Storm | 4857796 | 10 |
Platform with 3 rails | 4151984 | 3 |
Unknown (Rail Canyon?) | 4358232 | 30 |
Bobsleds
Bobsled splines are similar to the ones used for rails and loops. The pointers to the headers are very close to the pointers to the spline headers in all levels (Seaside Hill, Bullet Station and Mystic Mansion). There are two headers for each bobsled, one for the left and one for the right side of the road (so there's 4 headers in Seaside Hill, 2 in Bullet Station and 8 in Mystic Mansion). Header entries are very similar, but points are a bit different.
Header entry:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Offset | Type | Description |
---|---|---|
0x00 | Word | Always 00 00 |
0x02 | Word | Number of vertices |
0x04 | Float | Total length of spline |
0x08 | Pointer (Long) | Pointer to first vertex of spline |
0x0C | Long | Null |
Point entry:
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 |
Seaside Hill Bobsled Exclusion
The bobsled that usually loads in Seaside Hill is removed if the EXE detects that Team Chaotix is used in the stage. The ID is located at 0x9E49C and the default value to that is 03.
Altering this to any one of the team IDs will make the bobsled disappear from the level after the code identifies which team is used.
ID | Team |
---|---|
00 | Sonic |
01 | Dark |
02 | Rose |
03 | Chaotix |
Any other value aside from these four IDs may load the bobsled for all teams in the level.
Egg Pawn Roulette Mode
The casino versions of the egg pawns load depending on what level is in use. Note that the IDs in this code section are one value less than the IDs in the EXE/RAM. The following codes check the stage ID for Casino levels:
Address | Default Level ID |
---|---|
1FA583 | 06 |
1FA58E | 16 |
1FA593 | 05 |
Metal Characters in 1P mode
The metal characters are only usable in multiplayer mode, but it can be usable in single player by changing the byte at 0x1496 from 75 to EB. After selecting a level or something, press the buttons specified here before the screen changes and then this will load instead of the normal skins. Note that the skins are reset to normal after destroying the core with Team Rose.
Warning: The game will crash if you do this on Team Super Sonic.
Per Geometry ID Sky Visibility Toggling
The visibility switching triggers if in a certain place of the level including in-door areas (which removes the sky and/or clouds).
For the clouds on Grand Metropolis, the following IDs are located in the following addresses:
Addresses | Level Geometry ID |
---|---|
176DB6 | 04 |
176DBB | 05 |
176DC0 | 06 |
In Power Plant, the 4 byte entry for the sky starts at 0x3E6B0C and the clouds start at 0x3E6B20.
Tutorial Mode Team Defaults
Team Sonic is the default team used for the tutorial mode, but using another team for the tutorial mode requires the following codes to be replaced by the values.
Address (EXE) | Address (RAM) | Original Bytes | Replace With |
---|---|---|---|
50383 | 450383 | 89 1D 20 69 8D 00 | EB 5F 90 90 90 90 |
503E4 | 4503E4 | CC CC CC CC CC CC CC CC CC CC CC CC | C7 05 20 69 8D 00 00 00 00 00 EB 99 |
Once you have replaced the bytes, the
C7 05 20 69 8D 00 00 00 00 00 EB 99
Offset | Type | Description |
---|---|---|
0x06 | Byte | Team ID |
Replace the 6th byte with the following IDs to use for the tutorial stage.
ID | Team |
---|---|
00 | Team Sonic |
01 | Team Dark |
02 | Team Rose |
03 | Team Chaotix |
Particle Effect Events (Incomplete)
Particles emit depending on the object events that occur during gameplay. The codes assign a particle from the _ptcl.bin files and put it in effect like Leaf Swirls from Espio's tornado and sparkles from a number of objects.
Address | Effect | Event | Default Array/Bytes | Type | Requires Editing to customize | Address to edit codes | Original Bytes | Replace With | Address of resulting default byte | Default Value from Result |
---|---|---|---|---|---|---|---|---|---|---|
6CD28 | Checkpoint Sparkle Ring | Pass through checkpoint | 52 53 | Word | Yes | 6CD28 6CD69 |
52 53 CC CC CC CC CC |
EB 3F 52 6A 00 EB BC |
6CD6B | 00 |
71815 | Warp Flower Red Dots | Teleportation | 21 | Byte | No | |||||
7963F | Powerup Smoke | Powerup | 15 | Byte | No | |||||
7B0E7 | Special Stage Key Sparkles | Key Shine | 1A | Byte | No | |||||
8A548 | Target Switch Sparkles | Fading target | 51 53 | Long | Yes | 8A548 8A842 |
51 53 89 5C 24 18 CC CC CC CC CC CC CC CC CC CC CC CC |
E9 F5 02 00 00 90 51 6A 00 89 5C 24 18 E9 00 FD FF FF |
8A844 | 00 |
1857B6 | Musical Notes | Vector's Note Breath | 1D | Byte | No | |||||
189DCB | Water Dots | Water Collision | 09 | Byte | No | |||||
1A3DD8 | Lime Dots | Stunned Character | 2F 00 00 00 | Long | No | |||||
1CA7BB | Small smoke effect | Charmy Flying | 16 | Byte | No | |||||
1CD656 | Hearts | Propeller Hammer air spin | 2C | Byte | No | |||||
1FD923 | Robot Bolts | Robot Explosion | 06 | Byte | No | |||||
1FD940 | Robot Explosion Flames | Robot Explosion | 02 | Byte | No | |||||
240362 | Hearts | Propeller Hammer tornado | 0E | Byte | No |
List of particle IDs:
ID | Particle |
---|---|
00 | Sparkles |
01 | Water Splash |
Warp Effects
When an object triggers a specific warp effect for the screen, it will permeate for a specific amount of time and then recede. A list of offset pointers are available in the EXE for each code with the effects:
Pointer Byte | Warp Type | Initialization Type | Notes/Warnings |
---|---|---|---|
54 | Radial Gradient Warp Effect | End | |
58 | Radial Gradient Warp Effect | Start | |
5C | Silver Swirl Warp Effect | End | |
60 | Silver Swirl Warp Effect | Start | This effect will quickly warp the player onto another location. |
64 | Teleporter Switch Effect | End | For stages without the teleporter switch object loaded, the model is required to be loaded via dvdroot folder and the EXE offset to the model added. To prevent unsolicited crashes when using this pointer offset byte, download the model here and paste them to the dvdroot folder, edit the byte at 0x1B4F2 from 04 to 05 and paste write the four bytes "98 57 77 00" at 0x3BB16C. |
68 | Teleporter Switch Effect | Start | Read above |
A list of objects have codes that use the pointers to assign a warp effect to use for the screen if triggered. However, there are only a few objects with codes that bring up warp effects.
Object | Addresses | Default Pointer Bytes | Types |
---|---|---|---|
Restart Goal Ring | 455A | 58 | Start and End |
Flower Warp | 717FB 71967 |
58 54 |
Start End |
Teleporter Switch | 103132 10333D |
68 64 |
Start End |
Detonator Switch | 1198DE 119959 |
58 54 |
Start End |
Egg Emperor Explosion | 163C35 | 58 | Start |
A list of IDs will bring up an effect for the screen when they are in use.
ID | Effect |
---|---|
02 | Radial Gradient Warp Effect |
03 | Silver Swirl Effect |
04 | Teleporter Switch Warp Effect |
Each code after the one that stores the ID has states where the warp effect can either use custom alpha blending or not. The parameters provide the effects after the warp functions are in use:
Parameter Value | Effect |
---|---|
00 | Disabled |
01 or other value | Enabled |
A list of parameters are located in the following addresses:
Address | Default Param. | Warp Effect |
---|---|---|
1ADB4 | 01 | Radial Gradient Warp Effect End |
1ADF4 | 01 | Radial Gradient Warp Effect Start |
1AE34 | 01 | Silver Swirl Warp Effect End |
1AE74 | 01 | Silver Swirl Warp Effect Start |
1AEB4 | 01 | Teleporter Switch Effect End |
1AEF4 | 01 | Teleporter Switch Effect Start |
There are certain conditions for each warp effect ID given from their offset pointers which give the following effects after checking the ID:
Address | Default ID check | Condition | Description |
---|---|---|---|
1BAC8 | 04 | Alpha Blending | This code checks if it's a specific type of warp effect to apply normal alpha blending on while others use the additive alpha. Values set outside the range from 2 to 4 will render additive on all warp effects especially the switch effect for the orb switch on castle levels. |
1BBDE | 02 | White Screen | This code checks what type of warp effect is it to apply a screen effect until the warp finishes. |
Examples:
Warp ID Compare Operation | Check Result (Original) | Check Result (Altered) |
---|---|---|
Alpha Blending | ||
Alpha Blending | ||
Color Screen Overlay | ||
Color Screen Overlay |
The speed for the warp effects make the engulfing and receding for the warp effects fast or slower depending on how high the float values are. These are located in the following addresses
Address | Default (Hex) | Default (Dec.) | Effect |
---|---|---|---|
1BD5C | 3CA0A0A1 | 0.01960784383 | Silver Swirl Warp Effect/Warp Effect End |
1BD65 | 3C008081 | 0.007843137719 | General Warp Effects |
Field of view
The EXE provides perspective views using FOV for each type of camera in every mode. This list shows where the FOV codes are located in.
Address (EXE) | Address (RAM) | Type | FOV Type | Default (hex) | Default (dec.) | FOV Change | Notes/Warnings |
---|---|---|---|---|---|---|---|
49CAE | 449CAE | Float | Character Models (Menus) | 0000003F | 0.5 | Horizontal | |
49CB6 | 449CB6 | Float | Character Models (Menus) | 0000003F | 0.5 | Vertical | |
21E5AC | 61E5AC | Float | In-game Aspect Ratio | 43961D3F | 0.615574 | Horizontal | Not used. |
21E5B8 | 61E5B8 | Float | In-game Aspect Ratio | 0000803E | 0.25 | Vertical | Same as above. |
21E5CE | 61E5CE | Float | In-game Aspect Ratio | 43969D3E | 0.307787 | Horizontal | |
21E5DA | 61E5DA | Float | In-game Aspect Ratio | 43961D3F | 0.615574 | Horizontal | If the float value is higher and being used in 2 Player battle, the camera will zoom in. |
21E5E4 | 61E5E4 | Float | In-game Aspect Ratio | 0000003F | 0.5 | Vertical | Same as above. |
25811A | 65811A | Float | Global FOV | 0000803F | 1 | Tied | Values lower than 3F800000 will decrease the plane clipping resulting an un-viewable state. The higher the FOV is, the more fog is introduced. |
Aspect Ratio
The game's camera field of view provides an aspect ratio view that is based on the game's resolution. Having the resolution changed just stretches the game instead of expanding the FOV. To make the game support other aspect ratios aside from 4:3, do the following steps to add the support for 16:9 widescreen and so on when you're playing the game at another resolution.
Address | Original Bytes | Replace With |
---|---|---|
46B26 | 83 C4 18 C3 | EB 2A 90 90 |
46B55 | C3 CC CC CC CC | E9 2A 5E 2D 00 |
2445C6 | 8B 1D 3C 79 A7 00 8B 2D 40 79 A7 00 | E9 8F 84 0D 00 90 E9 A6 84 0D 00 90 |
24AC8D | 74 9F 78 | F0 EF BC |
24ACA7 | 74 9F 78 | F4 EF BC |
Next, paste write the following injectable codes at these addresses:
Address | ASM Injection Hex String |
---|---|
31C984 | D9 05 D4 78 42 00 DB 05 3C 79 A7 00 DA 35 40 79 A7 00 DE F9 D9 1D F0 EF BC 00 BA 00 00 40 3F 8B 35 F0 EF BC 00 89 35 00 F0 BC 00 3B 15 F0 EF BC 00 7F 7D 89 15 C0 EF BC 00 C7 05 C4 EF BC 00 00 00 40 3F F3 0F 10 05 C0 EF BC 00 F3 0F 10 0D C4 EF BC 00 F3 0F 59 C1 F3 0F 11 05 08 F0 BC 00 D9 05 08 F0 BC 00 DB 05 40 79 A7 00 DA 35 3C 79 A7 00 DE F9 D9 1D F4 EF BC 00 81 3D 00 F0 BC 00 00 00 80 3F 7C 40 D9 05 58 4E 74 00 DB 05 40 79 A7 00 DA 35 3C 79 A7 00 DE F9 D9 1D 04 F0 BC 00 C7 05 00 F0 BC 00 00 00 80 3F 89 15 F0 EF BC 00 C3 C7 05 F4 EF BC 00 00 00 80 3F C7 05 04 F0 BC 00 00 00 80 3F C3 C7 05 04 F0 BC 00 00 00 80 3F 89 15 F0 EF BC 00 C3 DB 05 3C 79 A7 00 D8 0D 00 F0 BC 00 DB 15 F0 7F BC 00 8B 1D F0 7F BC 00 E9 55 7B F2 FF DB 05 40 79 A7 00 D8 35 04 F0 BC 00 DB 15 F4 7F BC 00 8B 2D F4 7F BC 00 E9 3E 7B F2 FF 90 |
After that, test the EXE to see if it is playable and the screen does not end up black. If you decide to play the game in a different aspect ratio, change one of the resolutions using the Resolution Editor feature in HeroesTweaker and select the resolution option using the Launcher. You can change the float condition to trigger vertical FOV expansion if it exceeds the horizontal cropping float value by changing the float value in this string:
D9 05 D4 78 42 00 DB 05 3C 79 A7 00 DA 35 40 79 A7 00 DE F9 D9 1D F0 EF BC 00 BA 00 00 40 3F 8B 35 F0 EF BC 00 89 35 00 F0 BC 00 3B 15 F0 EF BC 00 7F 7D 89 15 C0 EF BC 00 C7 05 C4 EF BC 00 00 00 40 3F F3 0F 10 05 C0 EF BC 00 F3 0F 10 0D C4 EF BC 00 F3 0F 59 C1 F3 0F 11 05 08 F0 BC 00 D9 05 08 F0 BC 00 DB 05 40 79 A7 00 DA 35 3C 79 A7 00 DE F9 D9 1D F4 EF BC 00 81 3D 00 F0 BC 00 00 00 80 3F 7C 40 D9 05 58 4E 74 00 DB 05 40 79 A7 00 DA 35 3C 79 A7 00 DE F9 D9 1D 04 F0 BC 00 C7 05 00 F0 BC 00 00 00 80 3F 89 15 F0 EF BC 00 C3 C7 05 F4 EF BC 00 00 00 80 3F C7 05 04 F0 BC 00 00 00 80 3F C3 C7 05 04 F0 BC 00 00 00 80 3F 89 15 F0 EF BC 00 C3 DB 05 3C 79 A7 00 D8 0D 00 F0 BC 00 DB 15 F0 7F BC 00 8B 1D F0 7F BC 00 E9 55 7B F2 FF DB 05 40 79 A7 00 D8 35 04 F0 BC 00 DB 15 F4 7F BC 00 8B 2D F4 7F BC 00 E9 3E 7B F2 FF 90
Offset | Description |
---|---|
0x1B | Horizontal Aspect Ratio crop limit |
To get the aspect ratio crop limit float value, use Digital Rebellion's pixel aspect ratio calculator. On there, type the width and height in the source resolution (in 4:3 resolution like 1280x960 and the desired target resolution matching the same width or height (like 1280x720 or 1706x960) to get the pixel aspect float value. Next, convert the calculated float value to a 4 byte hex value and convert it to little endian (example: 0.75 --> 3F400000 --> 0000403F) and finally, paste write it to the code. Another way of doing it is using Digital Rebellion's aspect ratio calculator to obtain the float number from the specified resolution then dividing the aspect ratio float value by 1.3333333333333333 (for example: 1.3333333333333333 ÷ 1.7777777777778 = 0.74999999999998) and converting it to a little endian 4 byte hex value. Here are some examples of width cropping lock float values:
When the EXE is launched in a resolution that goes above the locked width, it will extend the vertical aspect ratio on taller resolutions like say if you launch the game at 1280x960 and the cropping limit is set at 00 00 40 3F (16:9), it will result an open matte 4:3 display when running the game.
Notes: If the EXE already has the codes to provide widescreen support such as Jackfuste's fixed exes, there won't be any need to inject codes to add support for different aspect ratios based on the used resolution. It is also important that the HUD and the menu content is visible when running on narrow aspect ratio display. On gameplay, certain resolutions (even without the aspect ratio hack enabled) will crash the game on windowed mode, so full-screen mode is recommended for wider or taller resolution displays such as 5760x1080 and 853x1920.
Story Scene/Victory FOV
These cut-scenes have codes that multiply the float values to change the camera FOV on in-game scenes and victory screens. To alter these, you will need to paste-write your own float value somewhere in the exe where there's more space and not used by it like at 0x31CFF8 for the horizontal FOV and 0x31CFFC for the vertical FOV. Before doing so, you will need to convert the desired float value from big endian to little endian on these addresses. As for the address (executed by the codes) to load the float value you placed in the EXE, you will need to add the EXE address with the value of 400000 (example: 31CFF8 + 400000 = 71CFF8). After that, convert the address array to little endian and then replace the address the code uses with the one where you place the float value from in little endian RAM address. The following addresses are the codes that load the FOV float values from.
Address (EXE) | Address (RAM) | FOV Type | Default RAM Address Array | Default (hex.) | Default (float) | FOV Change |
---|---|---|---|---|---|---|
21E532 | 61E532 | X Aspect Ratio | C89F7800 | 0000003F | 0.5 | Horizontal |
21E546 | 61E546 | Y Aspect Ratio | 10A27800 | 9DEFCF3E | 0.406124979 | Vertical |
Note: Don't forget to preview it when the game is running to ensure it's working properly and you're happy with the results you've got after altering the field of vision for the cut-scene camera. The quickest way to preview the changes is to pick a stage on the story mode selection screen that has the cut-scenes like Rail Canyon for example.
EXE defined particle settings
Almost all particles are stored in the *_ptcl.bin, but a few particle settings for other particles are only in the EXE where they are stored beyond 0x4DB60C. Each array entry is 0x18 bytes long as it follows this:
00 00 00 00 48 6E 7C 00 00 00 00 00 12 01 00 00 0C 00 00 00 FF FF FF FF
Offset(s) | Type | Description | Notes |
---|---|---|---|
0x04 | 4 Bytes | Address? | Some offsets do not have this |
0x0C | Byte | Blend Mode | |
0x0D and 0x10 | Byte | Unknown | |
0x14 | 4 Bytes | Always FF FF FF FF |
The alpha blend types used for the particles such as the ones for the Hint Ring are logical bytes. A list of blend types are defined by the source code:
Bytes | Description |
---|---|
01 | Normal Alpha |
02 | Additive Alpha |
04 | Subtractive Alpha |
11 | Normal Alpha (Hint Ring) |
12 | Additive Alpha (Hint Ring) |
14 | Subtractive Alpha (Hint Ring) |
The following particle setting entries for each EXE generated particles used in the EXE are stored in the following addresses:
Particle | Address (EXE) | Address (RAM) | Default Value (0x0C) |
---|---|---|---|
Hint Ring Circles (Subtractive Layer) | 4DB60C | 8DB60C | 14 |
Hint Ring Circles (Additive Layer) | 4DB624 | 8DB624 | 12 |
Rain Drips | 4DB648 | 8DB648 | 02 |
Sparkles | 4DB660 | 8DB660 | 02 |
Game Over state
If the mission fails with zero lives, it will trigger a state where they head back to the menu. The state ID is located at 0x4B85 and the default value is 03. These are a list of state IDs that are triggered when it's Game Over:
ID | State |
---|---|
01 | Stuck on Black screen (with warp speed) |
02 | Restart Level |
03 | Back to Menu |
04 | Stuck on Black screen |
05 and above | Skip to Next Stage |
Super Hard Challenge
Default Teams
The team that is always loaded on Super Hard is Team Sonic, but it can be rearranged thanks to the guide of the said subject on wikiHow. To achieve whatever team you want to use for the mode, replace the following bytes with these as shown on the table below:
Address (EXE) | Address (RAM) | Original Bytes | Replace With |
---|---|---|---|
502D9 | 4502D9 | 89 1D 20 69 8D 00 | B3 00 EB 0B 90 90 |
502E8 | 4502E8 | 8D A4 24 00 00 00 00 90 | 89 1D 20 69 8D 00 EB EF |
After doing that, there should be one byte after B3 that can be replaceable with a team ID at 0x502D9:
B3 00 EB 0B 90 90
Offset | Type | Description |
---|---|---|
0x01 | Byte | Team ID |
The default value is 00 which loads Team Sonic by default. Replace the second byte with one of the IDs below to use a different team for Super Hard:
ID | Team |
---|---|
00 | Team Sonic |
01 | Team Dark |
02 | Team Rose |
03 | Team Chaotix |
Notes: There are certain parts of each level that requires Light Dash abilities for both "Espio" and "Amy" and Triangle Jump for "Amy" to be enabled and used before using teams "Rose" and "Chaotix". Refer to this hacking guide on how to enable these movesets for the two characters in wikiHow if needed. As for Team Chaotix, some levels have tasks that are not possible to achieve in-order to beat the level. It will use the same object layout as always regardless of any team loaded and they will use their own start and end positions the same way as the regular modes.
Mode Level list
A list of level ID numbers that are loaded when using Super Hard mode starts at 0x34F1F4 and ends at 0x34F22C. Each array of the section is in 4 Bytes and the first byte of it is the level ID. When used, the game will load the levels listed in the section of the EXE for the mode.
Super Hard Level ID Entry:
00 00 00 00
Offset | Type | Description |
---|---|---|
0x00 | Byte | Level ID |
A list of default levels on Super Hard are in the following offsets set in the exe. Refer to the section "EXE and RAM" in the List of Levels for a list of level ID numbers you want to replace the default hex value with. Remember that you must convert the level ID from a decimal to a hexadecimal byte to apply the level you want the game to use when it reads the level ID on the list. Also, only 1 Player levels will work after loading, 2 Player stage IDs will crash the game.
Address (EXE) | Address (RAM) | Default Byte | Default Level |
---|---|---|---|
34F1F4 | 74F1F4 | 02 | Seaside Hill |
34F1F8 | 74F1F8 | 03 | Ocean Palace |
34F1FC | 74F1FC | 04 | Grand Metropolis |
34F200 | 74F200 | 05 | Power Plant |
34F204 | 74F204 | 06 | Casino Park |
34F208 | 74F208 | 07 | BINGO Highway |
34F20C | 74F20C | 08 | Rail Canyon |
34F210 | 74F210 | 09 | Bullet Station |
34F214 | 74F214 | 0A | Frog Forest |
34F218 | 74F218 | 0B | Lost Jungle |
34F21C | 74F21C | 0C | Hang Castle |
34F220 | 74F220 | 0D | Mystic Mansion |
34F224 | 74F224 | 0E | Egg Fleet |
34F228 | 74F228 | 0F | Final Fortress |
Material Functions
Colors
The EXE provides color effects for certain objects such as the trail and tornado effects for each player.
Color RGB Entry:
00 00 00 00
Offset | Type | Description |
---|---|---|
0x00 | Byte | Red |
0x01 | Byte | Green |
0x02 | Byte | Blue |
0x03 | Byte | Alpha |
Custom RGB color codes can be generated using color wheel websites like Colblinder and Colorizer. If you're happy with the color you want to use for the effects, paste write it on the offset where you found the color code at.
Barrier Hue Cycle Colors
The barrier effect changes color using the color animation codes provided in the EXE. The barrier has nine 4 byte color hex codes (which they end with after 3 bytes of color values) stored in the EXE starting at 0x4DD798 to provide a hue cycle effect for the object.
Color | Address (EXE) | Address (RAM) | Default (Hex) | Default (Dec.) |
---|---|---|---|---|
Red | 4DD798 | 8DD798 | FF 00 00 | 255 0 0 |
Orange | 4DD79C | 8DD79C | FF 80 00 | 255 128 0 |
Yellow | 4DD7A0 | 8DD7A0 | FF FF 00 | 255 255 0 |
Chartreuse | 4DD7A4 | 8DD7A4 | 80 FF 00 | 128 255 0 |
Green | 4DD7A8 | 8DD7A8 | B4 50 00 | 0 180 80 |
Cyan | 4DD7AC | 8DD7AC | 00 FF FF | 0 255 255 |
Dodger Blue | 4DD7B0 | 8DD7B0 | 00 80 FF | 0 128 255 |
Blue | 4DD7B4 | 8DD7B4 | 00 00 FF | 0 0 255 |
Magenta | 4DD7B8 | 8DD7B8 | FF 00 FF | 255 0 255 |
Character Effects
This list shows the codes to the character effects that were found in the EXE.
Character | Effect Type | Address (EXE) | Address (RAM) | Default Hex |
---|---|---|---|---|
Amy | Jump Balls | 4C72A4 | 8C72A4 | FF0060FF |
Amy | Tornado | 4DE504 | 8DE504 | FF0060FE |
Amy | Trails | 4CF6AC | 8CF6AC | 7F0030FF |
Big | Jump Balls | 381F74 | 781F74 | 8000FFFF |
Big | Trails | 4CF6B0 | 8CF6B0 | 40007FFF |
Charmy | Jump Balls | 382590 | 782590 | FF0000FF |
Charmy | Trails | 4CF6C0 | 8CF6C0 | 7F0000FF |
Cream | Jump Balls | 38258C | 78258C | FF8C60FF |
Cream | Trails | 4CF6B4 | 8CF6B4 | 7F4630FF |
Espio | Jump Balls | 4C72A8 | 8C72A8 | 00A0FFFF |
Espio | Tornado | 4DE500 | 8DE500 | 00A000FE |
Espio | Trails | 4CF6B8 | 8CF6B8 | 00507FFF |
Knuckles | Jump Balls | 381F6C | 781F6C | F0193CFF |
Knuckles | Trails | 4CF698 | 8CF698 | 780C1EFF |
Omega | Jump Balls | 381F70 | 781F70 | 6000FFFF |
Omega | Trails | 4CF6A4 | 8CF6A4 | 30007FFF |
Rouge | Jump Balls | 382588 | 782588 | FF00FFFF |
Rouge | Trails | 4CF6A8 | 8CF6A8 | 7F007FFF |
Shadow | Jump Balls | 4C72A0 | 8C72A0 | FF8000FF |
Shadow | Tornado | 4DE4FC | 8DE4FC | 000000FE |
Shadow | Trails | 4CF6A0 | 8CF6A0 | 7F4000FF |
Sonic | Jump Balls | 4C729C | 8C729C | 005AAAFF |
Sonic | Sonic Overdrive Ball | 4C72AC | 8C72AC | FF0000FF |
Sonic | Tornado | 4DE4F8 | 8DE4F8 | 005AAAFE |
Sonic | Trails | 4CF694 | 8CF694 | 002D55FF |
Unknown | Unknown | 4C72B0 | 8C72B0 | 807020FF |
Tails | Jump Balls | 382584 | 782584 | FAA519FF |
Tails | Trails | 4CF69C | 8CF69C | 7D520CFF |
Vector | Jump Balls | 381F78 | 781F78 | 00A000FF |
Vector | Trails | 4CF6BC | 8CF6BC | 005000FF |
Debug Data
The EXE provides colors to a specific interface while debugging the game.
Interface type | Address (EXE) | Address (RAM) | Default (Hex) | Default (Decimal) |
---|---|---|---|---|
General Debug Text | 21F912 | 61F912 | FF CC 44 FF | 255 204 68 255 |
Team Blast Backgrounds
The entry starts at 0x4DDD48 with 4 byte color hex that end with FF. Each team blast background sides are split into four RGB hex entries for each side as it follows:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Offset | Description |
---|---|
0x00 | Top Left |
0x04 | Bottom Left |
0x08 | Top Right |
0x0C | Bottom Right |
The following RGB color entries to each four side splits for each team blast backgrounds start at the following addresses
Address (EXE) | Address (RAM) | Description |
---|---|---|
4DDD48 | 8DDD48 | Team Sonic |
4DDD58 | 8DDD58 | Team Dark |
4DDD68 | 8DDD68 | Team Rose |
4DDD78 | 8DDD78 | Team Chaotix |
Linked RGB Colors
Opcodes
Object | Address | Original Bytes | Replace With | RGB Color Offsets |
---|---|---|---|---|
Torch Flames | F96CB | B1 FF 88 4C 24 0C 88 4C 24 0D 88 4C 24 0E | C7 44 24 0C FF FF FF 00 90 90 90 90 90 90 | F96CF - Red F96D0 - Green F96D1 - Blue |
Floats
Some objects use floating values that are tied with the same address where the RGB float is located at. To edit them separately, you must set an address on the opcode that uses it and place a floating code somewhere to where they will load a separate float value.
Object | Address Byte | Address (Base Float) | Default Float | Replacement Bytes | Addresses to place float values |
---|---|---|---|---|---|
Spider Light | 101396 - 34 (Red) 1013A4 - 34 (Green) 1013B2 - 34 (Blue) |
47A534 | 0.6000000238 (3F19AAAA) | 1013A4 - 0C (Green) 1013B2 - 10 (Blue) |
47A50C - (Green) 47A510 - (Blue) |
Spider Light (Outer Layer) | 1013BA - 38 (Red) 1013C8 - 38 (Green) 1013D6 - 38 (Blue) |
47A538 | 0.80 (3F4CCCCD) | 1013C8 - 14 (Green) 1013D6 - 18 (Blue) |
47A514 - (Green) 47A518 - (Blue) |
Teleporter Switch Glowing Symbols | 103436 - 38 (Red) 103444 - 38 (Green) 103452 - 38 (Blue) |
47A638 | 0.349999994 (3EB33333) | 103444 - 90 (Green) 103452 - 94 (Blue) |
47A690 (Green) 47A694 (Blue) |
Teleporter Switch Glowing Symbols (Outer Layer) | 10345A - 3C (Red) 103468 - 3C (Green) 103476 - 3C (Blue) |
47A63C | 0.6999999881 (3F333333) | 103468 - 88 (Green) 103476 - 8C (Blue) |
47A688 (Green) 47A68C (Blue) |
Other
Colors that are stored as opcodes have little endian RGBA values which would be "BGRA" for example. Some color codes are also in float as well. A list of codes were found in the EXE:
Object | Array Type | Address (EXE) | Address (RAM) | Colors (RGBA) | Default (Hex) | Default (Decimal) | Default (Float) | Notes |
---|---|---|---|---|---|---|---|---|
Chaos Control Screen Effect (Metal Sonic) | 4 Bytes | 2186B5 2186B6 2186B7 2186B8 |
6186B5 6186B6 6186B7 6186B8 |
Blue Green Red Alpha |
80 80 80 FF |
128 128 128 255 |
||
Chaos Inferno Screen Effect (1 Player) | 4 Bytes | 1B245 1B246 1B247 1B248 |
41B245 41B246 41B247 41B248 |
Blue Green Red Alpha |
80 80 80 FF |
128 128 128 255 |
||
Chaos Inferno Screen Effect (2 Player Split-screen) | 4 Bytes | 184FB3 184FB4 184FB5 184FB6 |
584FB3 584FB4 584FB5 584FB6 |
Blue Green Red Alpha |
80 80 80 FF |
128 128 128 255 |
||
Energy Path Activation | Float | 173293 17329B 1732A3 1732AB |
573293 17329B 5732A3 5732AB |
Red Green Blue Alpha |
000080BF 000080BF 000080BF 52B87E3F |
-1 -1 -1 0.9950000048 |
||
Formation Gate Electricity (Alpha) | Byte Opcodes | 72443 | 472443 | Alpha | C0 | 192 | ||
Formation Gate Electricity (Red) | Byte Opcodes | 7244D 72452 72457 |
47244D 472452 472457 |
Red Green Blue |
F0 19 3C |
240 25 60 |
||
Formation Gate Electricity (Yellow) | Byte Opcodes | 7245E 72463 72468 |
47245E 472463 472468 |
Red Green Blue |
FA A5 19 |
250 165 25 |
||
Formation Gate Electricity (Blue) | Byte Opcodes | 7246F 72474 72479 |
47246F 472474 472479 |
Red Green Blue |
00 5A AA |
0 90 170 |
||
Forest Level Background | Byte Opcodes | EE464 EE469 EE46E |
4EE464 4EE469 4EE46E |
Red Green Blue |
3B 61 31 |
59 97 49 |
||
Item Balloon (Spawn) | Float | 77D7C | 477D7C | Alpha | 0000803F | 1 | ||
Item Balloon (Expansion start) | Float | 78610 | 478610 | Alpha | 0000803F | 1 | ||
Item Balloon Ambient | Float | 7828A 78292 7829A |
47828A 478292 47829A |
Blue Green Red |
000080BF 000080BF 000080BF |
-1 -1 -1 |
||
Item Balloon Ambient (Popped) | Float | 78323 7832B 78333 |
478323 47832B 478333 |
Blue Green Red |
000080BF 000080BF 000080BF |
-1 -1 -1 |
||
Lens Flares | 3 Bytes | 8F527 8F528 8F529 |
48F527 48F528 48F529 |
Blue Green Red |
FF FF FF |
255 255 255 |
||
Level Up Numbers (Fly) | 4 Bytes | 4DDCC4 4DDCC5 4DDCC6 4DDCC7 |
8DDCC4 8DDCC5 8DDCC6 8DDCC7 |
Red Green Blue Alpha |
FF E9 50 FF |
255 233 80 255 |
||
Level Up Particles (Fly) | 4 Bytes | 4DDD00 4DDD01 4DDD02 4DDD03 |
8DDD00 8DDD01 8DDD02 8DDD03 |
Red Green Blue Alpha |
FA A5 19 FF |
250 165 25 255 |
||
Level Up Numbers (Power) | 4 Bytes | 4DDCC8 4DDCC9 4DDCCA 4DDCCB |
8DDCC8 8DDCC9 8DDCCA 8DDCCB |
Red Green Blue Alpha |
FF 90 80 FF |
255 144 128 255 |
||
Level Up Particles (Power) | 4 Bytes | 4DDD04 4DDD05 4DDD06 4DDD07 |
8DDD04 8DDD05 8DDD06 8DDD07 |
Red Green Blue Alpha |
F0 19 3C FF |
240 25 60 255 |
||
Level Up Numbers (Speed) | 4 Bytes | 4DDCC0 4DDCC1 4DDCC2 4DDCC3 |
8DDCC0 8DDCC1 8DDCC2 8DDCC3 |
Red Green Blue Alpha |
50 A0 FF FF |
80 160 255 255 |
||
Level Up Particles (Speed) | 4 Bytes | 4DDCFC 4DDCFD 4DDCFE 4DDCFF |
8DDCFC 8DDCFD 8DDCFE 8DDCFF |
Red Green Blue Alpha |
00 5A AA FF |
0 90 170 255 |
||
Light Arrows (Green) | Float | B0B50 B0B95 |
4B0B50 4B0B95 |
Alpha Alpha |
0000803F 000080BF |
1 -1 |
||
Magician (Base Opacity) | Float | 210F83 | 610F83 | Alpha | 0000803F | 1 | Float values that are 3F7FFFFF or lower will result a transparent version of the robot. Any hexadecimal value lower than 3E4CCCCE (0.2000000179) will make the model appear completely invisible. | |
Magician (Opaque) | Float | 212CCC 212CD4 212CDC 212CE4 |
612CCC 612CD4 612CDC 612CE4 |
Blue Green Red Alpha |
0000803F 0000803F 0000803F 0000803F |
1 1 1 1 |
||
Magician (Transparent) | Float | 346304 346308 34630C |
746304 746308 74630C |
Red Green Blue |
CDCC4C3E CDCCCC3E CDCCCC3E |
0.200000003 0.400000006 0.400000006 |
||
Mission Text | 4 Bytes | 429A6 429A7 429A8 429A9 |
4429A6 4429A7 4429A8 4429A9 |
Blue Green Red Alpha |
FF FF 00 FF |
255 255 0 255 |
||
Powerup Icon | 3 Bytes | 79EF3 79EF4 79EF5 |
479EF3 479EF4 479EF5 |
Blue Green Red |
FF FF FF |
255 255 255 |
||
Ring Display (Normal) | 4 Bytes | 4DCD34 4DCD35 4DCD36 4DCD37 |
8DCD34 8DCD35 8DCD36 8DCD37 |
Red Green Blue Alpha |
255 255 255 255 |
FF FF FF FF |
||
Sonic Overdrive Screen Effect | 4 Bytes | 1B2F3 1B2F4 1B2F5 1B2F6 |
41B2F3 41B2F4 41B2F5 41B2F6 |
Blue Green Red Alpha |
A0 A0 A0 FF |
160 160 160 255 |
||
Special Stage Gauge HUD | 4 Bytes | 126363 126364 126365 126366 |
526363 526364 526365 526366 |
Blue Green Red Alpha |
FF FF FF FF |
255 255 255 255 |
||
Target Switch | Float | 89D41 | 489D41 | Alpha | 0000803F | 1 | ||
Torch Fire | Byte | F96F7 | 4F96F7 | Alpha | FE | 254 | Only works if the source blend factor in 0xF9A6B is 05 (Source Alpha). | |
Warp Effect Screen | 3 Bytes | 1BCA3 1BCA4 1BCA5 |
41BCA3 41BCA4 41BCA5 |
Blue Green Red |
FF FF FF |
255 255 255 |
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:
Regular Material function:
6A 00 6A 00
Offset | Type | Description |
---|---|---|
0x00 and 0x02 | Byte | Always 6A |
0x01 | Byte | Material value |
0x03 | Byte | Material function type |
4 Byte Material function:
68 00000000
Offset | Type | Description |
---|---|---|
0x00 | Byte | Always 68 |
0x01 | 4 Bytes | Material value |
A list of material types are implemented in the EXE.
Material type parameters | Alternative Material type parameters | Hexadecimal type | Description | Parameters | Call Address | Alternative Call Address | Example(s) | Notes |
---|---|---|---|---|---|---|---|---|
01 | Byte | Null | 00 | 0024C9B0 (EXE) 0064C9B0 (RAM) |
6A 00 6A 01 | Values upon "00" will crash the game. | ||
02 (UV) 03 (U only) 04 (V only) |
Byte | UV Address Type | 01 = rwTEXTUREADDRESSWRAP 02 = rwTEXTUREADDRESSMIRROR 03 = rwTEXTUREADDRESSCLAMP 04 = rwTEXTUREADDRESSBORDER |
0024C9B0 (EXE) 0064C9B0 (RAM) |
6A 03 6A 02 6A 03 6A 03 6A 03 6A 04 |
|||
06 | 07 | Byte | Z-buffer testing | 00 = Disabled 01 = Enabled |
0024C9B0 (EXE) 0064C9B0 (RAM) |
00247980 (EXE) 00647980 (RAM) |
6A 00 6A 06 6A 00 6A 07 |
|
07 | 09 | Byte | Shading | 00 = rwSHADEMODEFLAT 01 = rwSHADEMODEGOURAUD |
0024C9B0 (EXE) 0064C9B0 (RAM) |
00247980 (EXE) 00647980 (RAM) |
6A 02 6A 07 6A 02 6A 09 |
|
08 | Byte | Geometry Display | 01 = Verticies 02 = Wireframe 03 = Normal |
00247980 (EXE) 00647980 (RAM) |
6A 03 6A 08 | |||
08 | 0E | Byte | Z-buffer writing | 00 = Disabled 01 = Enabled |
0024C9B0 (EXE) 0064C9B0 (RAM) |
00247980 (EXE) 00647980 (RAM) |
6A 01 6A 08 6A 01 6A 0E |
|
09 | Byte | Texture filtering | 01 = rwFILTERNEAREST 02 = rwFILTERLINEAR 03 = rwFILTERMIPNEAREST 04 = rwFILTERMIPLINEAR 05 = rwFILTERLINEARMIPNEAREST 06 = rwFILTERLINEARMIPLINEAR |
0024C9B0 (EXE) 0064C9B0 (RAM) |
6A 02 6A 09 | |||
0A & 0B | 13 & 14 | Byte | Source Blend Destination Blend |
01 = rwBLENDZERO 02 = rwBLENDONE 03 = rwBLENDSRCCOLOR 04 = rwBLENDINVSRCCOLOR 05 = rwBLENDSRCALPHA 06 = rwBLENDINVSRCALPHA 07 = rwBLENDDESTALPHA 08 = rwBLENDINVDESTALPHA 09 = rwBLENDDESTCOLOR 0A = rwBLENDINVDESTCOLOR 0B = rwBLENDSRCALPHASAT |
0024C9B0 (EXE) 0064C9B0 (RAM) |
00247980 (EXE) 00647980 (RAM) |
6A 05 6A 0A 6A 06 6A 0B 6A 05 6A 13 6A 06 6A 14 |
Models that are completely opaque will not be able to use the intended blend factors. To make any model use different alpha blending modes, change the byte in offset 0x248B1C from 74 to EB. |
0C | 1B | Byte | Vertex Alpha Enabling | 00 = Disabled 01 = Enabled |
0024C9B0 (EXE) 0064C9B0 (RAM) |
00247980 (EXE) 00647980 (RAM) |
6A 01 6A 0C | |
0E | Byte | Fog Enabling | 00 = Disabled 01 = Enabled |
0024C9B0 (EXE) 0064C9B0 (RAM) |
6A 00 6A 0E | |||
0F | Byte | Fog Color | 4 Byte RGBA Hex | 0024C9B0 (EXE) 0064C9B0 (RAM) |
68 FF FF A0 80 6A 0F | Fog colors are loaded through a code at 21E2EB (61E2EB in RAM) from the RAM Offset 0xA60BC4. | ||
10 | Byte | Fog Type | 01 = rwFOGTYPELINEAR 02 = rwFOGTYPEEXPONENTIAL 03 = rwFOGTYPEEXPONENTIAL2 |
0024C9B0 (EXE) 0064C9B0 (RAM) |
6A 01 6A 10 | |||
11 | Byte | Unknown Something related to fog? |
0024C9B0 (EXE) 0064C9B0 (RAM) |
|||||
14 | 16 | Byte | Cull Mode | 01 = None 02 = Back 03 = Front |
0024C9B0 (EXE) 0064C9B0 (RAM) |
00247980 (EXE) 00647980 (RAM) |
6A 02 6A 14 6A 02 6A 16 |
|
17 | Byte | Visibility? | 00 = Visible 01 = Invisible |
0024C9B0 (EXE) 0064C9B0 (RAM) |
00247980 (EXE) 00647980 (RAM) |
6A 00 6A 17 | ||
18 | Byte | Alpha Testing Reference | Range in byte:00-FF 4 Byte Range: 00000000-FF000000 |
00247980 (EXE) 00647980 (RAM) |
6A 05 6A 18 68 C8000000 6A 18 |
|||
19 | Byte | Alpha Testing | 01 = rwALPHATESTFUNCTIONNEVER 02 = rwALPHATESTFUNCTIONLESS 03 = rwALPHATESTFUNCTIONEQUAL 04 = rwALPHATESTFUNCTIONLESSEQUAL 05 = rwALPHATESTFUNCTIONGREATER 06 = rwALPHATESTFUNCTIONNOTEQUAL 07 = rwALPHATESTFUNCTIONGREATEREQUAL 08 = rwALPHATESTFUNCTIONALWAYS |
00247980 (EXE) 00647980 (RAM) |
6A 08 6A 19 | |||
80000000 | 4 Bytes | Material similar to UV address | 01 = | 00247980 (EXE) 00647980 (RAM) |
6A 04 68 80000000 | |||
8B000000 | 4 Bytes | Reflection Light RGB Color | 00247980 (EXE) 00647980 (RAM) |
4 Byte RGB Hex | 6A FF 68 8B000000 68 FFFFFF00 68 8B000000 |
Works on models with reflection materials | ||
AB000000 | 4 Bytes | Blend Equation | 01 = Add 02 = Subtract 03 = Reverse Subtract 04 = Min 05 = Max |
00247980 (EXE) 00647980 (RAM) |
6A 01 68 AB000000 |
Known Offsets
A list shows offsets for special material effects that were discovered in the EXE. More codes that have been found and not already on the list will be added.
Addresses (EXE) | Addresses (RAM) | Materials | Default Parameter Values | Targeting Object | Notes | Image |
---|---|---|---|---|---|---|
2F39 2F45 2F4E 2F57 2F63 2F71 2F75 2F86 2F8A 2F96 2FB7 |
402F39 402F45 402F4E 402F57 402F63 402F71 402F75 402F86 402F8A 402F96 402FB7 |
Fog Enabling #1 Z-testing Z-buffering Shade Mode Source Blend Destination Blend #1 Destination Blend #2 Culling #1 Culling #2 Alpha Testing Fog Enabling #2 |
00 01 01 02 05 02 06 01 02 08 00 |
Z-buffering Material Flag Section | ![]() | |
30A9 30B5 30BE 30C7 30D3 30E6 30EA 30F6 3102 310F 3113 311F 312B 3134 3148 314C 316D |
4030A9 4030B5 4030BE 4030C7 4030D3 4030E6 4030EA 4030F6 403102 40310F 403113 40311F 40312B 403134 403148 40314C 40316D |
Fog Enabling #1 Z-testing Z-buffering Shade Mode Source Blend (Condition) Dest. Blend #1 (Condition) Dest. Blend #2 (Condition) Vertex Alpha Enabling Source Blend Destination Blend #1 Destination Blend #2 Blend Equation Alpha Testing Alpha Testing Reference Culling #1 Culling #2 Fog Enabling #2 |
00 01 01 02 05 02 06 01 05 02 06 01 05 C8000000 01 02 00 |
Alpha Testing Material Flag Section | ![]() | |
3269 3275 327E 3287 3293 32A6 32AA 32B6 32C2 32CF 32D3 32DF 32EB 32FC 3300 3321 |
403269 403275 40327E 403287 403293 4032A6 4032AA 4032B6 4032C2 4032CF 4032D3 4032DF 4032EB 4032FC 403300 403321 |
Fog Enabling #1 Z-testing Z-buffering Texture Filtering Source Blend (Condition) Dest. Blend #1 (Condition) Dest. Blend #2 (Condition) Vertex Alpha Enabling Source Blend Destination Blend #1 Destination Blend #2 Blend Equation Alpha Testing Culling #1 Culling #2 Fog Enabling #2 |
00 01 00 06 05 02 06 01 05 02 06 01 08 01 02 00 |
Alpha Material Flag Section | ![]() | |
5D86 5D8F 5D98 5DA1 5DAA 5DB6 5DBF 5DC8 5DD1 5DDA 5DE3 5DEC |
405D86 405D8F 405D98 405DA1 405DAA 405DB6 405DBF 405DC8 405DD1 405DDA 405DE3 405DEC |
Z-writing Z-testing Shade Mode Texture Filtering Vertex Alpha Enabling Culling UV Address (U) UV Address (V) Fog Enabling Source Blend Destination Blend Null Material |
00 00 02 02 01 01 03 03 00 05 06 00 |
Black Screen Fade | The fade can be disabled by changing the value at 0x406241 from 02 to 01. To keep it, leave the value on 02. | ![]() |
1B0FA | 41B0FA | Null Material | 00 | Team Blast Screen Effects | ||
1B1D5 1B1E5 1B1EE 1B1F7 1B200 1B209 1B212 |
41B1D5 41B1E5 41B1EE 41B1F7 41B200 41B209 41B212 |
Z-testing Z-writing Fog Enabling Culling Vertex Alpha Enabling Source Blend Destination Blend |
00 00 00 01 01 0A 01 |
Chaos Inferno Screen Effect (1 Player) | ![]() | |
1B28C 1B29C 1B2A5 1B2AE 1B2B7 1B2C0 |
41B28C 41B29C 41B2A5 41B2AE 41B2B7 41B2C0 |
Z-testing Z-writing Fog Enabling Culling Source Blend Destination Blend |
00 00 00 01 02 02 |
Sonic Overdrive Screen Effect | ![]() | |
1B838 1B844 1B84D 1B856 1B86D 1B878 1B881 |
41B838 41B844 41B84D 41B856 41B86D 41B878 41B881 |
Z-testing Z-writing Fog Enabling Culling Source Blend Destination Blend #1 Destination Blend #2 |
00 01 00 01 02 06 02 |
Screen Transition Effects | ![]() | |
1BA94 1BA9E 1BAA9 1BAB3 1BACC 1BAD5 1BAD9 1BAE3 |
41BA94 41BA9E 41BAA9 41BAB3 41BACC 41BAD5 41BAD9 41BAE3 |
Z-testing Z-writing Fog Enabling Culling Source Blend #1 Destination Blend #1 Source Blend #2 Destination Blend #2 |
00 00 00 01 02 06 05 02 |
Warp Effects | The first two blend factor codes in offsets 1BACC (41BACC) and 1BAD5 (41BAD5) are for the blue switch effect that engulfs if the orb switch has been triggered. The other two are for the common warp effects. |
![]() |
1BBFA | 41BBFA | Null Material | 00 | Warp Effect Screen | ![]() | |
1E0A1 1E0AD 1E0B6 1E0BF 1E0C8 1E0D1 1E0DA 1E0E3 1E0EC 1E0F8 |
41E0A1 41E0AD 41E0B6 41E0BF 41E0C8 41E0D1 41E0DA 41E0E3 41E0EC 41E0F8 |
Z-testing Z-writing Fog Enabling Culling Vertex Alpha Enabling Source Blend Destination Blend Null Material Shade Mode Texture Filtering |
00 01 00 01 01 05 06 00 02 02 |
In-game HUD interface | ![]() | |
1EAA9 1EAA9 |
41EAA9 41EAA9 |
Source Blend Destination Blend |
05 02 |
Key Sparkle Effect on HUD | ![]() | |
22BA9 22BB2 22BBB 22BC4 22BE8 22BF1 22C06 22C1B |
422BA9 422BB2 422BBB 422BC4 422BE8 422BF1 422C06 422C1B |
Z-testing Z-writing Fog Enabling Culling Source Blend Destination Blend UV Address Type (UV) Texture Filtering |
01 01 00 01 05 06 03 02 |
2 Player Race HUD interface | ||
2478F 247B0 247BC 2481E 24827 24830 |
42478F 4247B0 4247BC 42481E 424827 424830 |
Culling UV Address Type (UV) Vertex Alpha Enabling Source Blend Destination Blend Texture Filtering |
01 03 01 05 04 02 |
General Subtitles | ||
247C5 247CE |
4247C5 4247CE |
Source Blend Destination Blend |
01 04 |
General Subtitle Drop Shadow | ||
3131E 3132E 31381 313A9 313B9 2A4362 |
43131E 43132E 431381 4313A9 4313B9 6A4362 |
Source Blend #1 Destination Blend #1 Destination Blend #2 Source Blend #2 Destination Blend #3 Vertex Alpha Enabling |
05 02 04 05 06 01 |
Particle Effects | See Particle Editing for details about the blend factors for the particles. | ![]() |
38AB7 38AF0 38AF9 38B05 38B0E 38B2F 38B38 38B55 |
438AB7 438AF0 438AF9 438B05 438B0E 438B2F 438B38 438B55 |
Vertex Alpha Enabling Z-testing Z-writing Fog Enabling Culling Source Blend Destination Blend Null Material |
01 00 01 00 01 05 06 00 |
Results Screen | ||
4C4AA 4C4B3 4C4BC 4C4C5 4C4CE 4C4D7 4C4E0 4C4E9 |
44C4AA 44C4B3 44C4BC 44C4C5 44C4CE 44C4D7 44C4E0 44C4E9 |
Z-writing Z-testing Texture Filtering Vertex Alpha Enabling Culling Fog Enabling Source Blend Destination Blend |
01 01 02 01 02 00 05 06 |
Omochao | ||
4CA25 4CA2E 4CA37 4CA40 4CA49 4CA55 4CA5E 4CA67 4CA70 4CA79 4CA82 4CA8B |
44CA25 44CA2E 44CA37 44CA40 44CA49 44CA55 44CA5E 44CA67 44CA70 44CA79 44CA82 44CA8B |
Z-writing Z-testing Shade Mode Texture Filtering Vertex Alpha Enabling Culling UV Address Type (U) UV Address Type (V) Fog Enabling Source Blend Destination Blend Null Material |
00 00 02 02 01 01 03 03 00 05 06 00 |
Menu Interface | ||
4EB79 4EB82 4EB8B 4EB94 4EB9D 4EBA9 4EBB2 4EBBB 4EBC4 4EBCD 4EBD6 |
44EB79 44EB82 44EB8B 44EB94 44EB9D 44EBA9 44EBB2 44EBBB 44EBC4 44EBCD 44EBD6 |
Z-writing Z-testing Shade Mode Texture Filtering Vertex Alpha Enabling Culling UV Address Type (U) UV Address Type (V) Fog Enabling Source Blend Destination Blend |
00 00 02 02 01 01 03 03 00 05 06 |
Now Loading text | ||
5350B 53514 5351D 5352A 5353B 53544 5354D |
45350B 453514 45351D 45352A 45353B 453544 45354D |
Z-writing Z-testing Texture Filtering/Culling Vertex Alpha Enabling Fog Enabling Source Blend Destination Blend |
01 01 02 01 00 05 06 |
Character Display in Menus | ||
5483B 54844 5484D 54856 5485F 5486B 54874 5487D 54886 5488F 54898 |
45483B 454844 45484D 454856 45485F 45486B 454874 45487D 454886 45488F 454898 |
Z-writing Z-testing Shade Mode Texture Filtering Vertex Alpha Enabling Culling UV Address Type (U) UV Address Type (V) Fog Enabling Source Blend Destination Blend |
00 00 02 02 01 01 03 03 00 05 06 |
Game Clear screens | ||
57983 5799E 57995 5799E 579A7 579B0 579BC 579C5 579CE 579D7 |
457983 45799E 457995 45799E 4579A7 4579B0 4579BC 4579C5 4579CE 4579D7 |
Z-testing Z-writing Vertex Alpha Enabling Source Blend Destination Blend Texture Filtering Culling UV Address (U) UV Address (V) Fog Enabling |
00 00 01 05 06 02 01 03 03 00 |
Blue Window Popup | ||
58093 5809C 580A5 580AE 580B7 580C0 580CC 580D5 580DE 580E7 |
458093 45809C 4580A5 4580AE 4580B7 4580C0 4580CC 4580D5 4580DE 4580E7 |
Z-testing Z-writing Vertex Alpha Enabling Source Blend Destination Blend Texture Filtering Culling Fog Enabling UV Address (U) UV Address (V) |
00 00 01 05 06 02 01 00 03 03 |
Menu Text | ||
58093 5809C 580A5 580AE 580B7 580C0 580CC 580D5 580DE 580E7 580FE |
458093 45809C 4580A5 4580AE 4580B7 4580C0 4580CC 4580D5 4580DE 4580E7 4580FE |
Z-testing Z-writing Vertex Alpha Enabling Source Blend Destination Blend Texture Filtering Culling Fog Enabling UV Address Type (U) UV Address Type (V) Null Material |
00 00 01 05 06 02 01 00 03 03 51 |
Credits | The last material code requires editing to be customized at 0x580FC. To do that, change the 3 bytes from 8B 0E 51 to 90 6A 00. If you plan to use another material, change the byte in 0x58100 from 01 to some other material value. | |
5A007 5A010 5A019 5A022 |
45A007 45A010 45A019 45A022 |
Source Blend Destination Blend Culling Fog |
05 02 01 00 |
Triple Spring Rays | ||
5AE90 5AE99 5AEA2 |
45AE90 45AE99 45AEA2 |
Source Blend Destination Blend Culling |
02 02 01 |
Rainbow Ring Trails | ||
5EBC8 | 45EBC8 | Culling | 01 | Bobsled Player Marker | Displayed in 2 Player Bobsled Race. | |
65076 6507F 65088 |
465076 46507F 465088 |
Source Blend Destination Blend Culling |
05 02 01 |
Bobsled Sign Light | ||
653A5 653AE 653B7 |
4653A5 4653AE 4653B7 |
Source Blend Destination Blend Culling |
02 02 01 |
Mystic Mansion Trolley Lights | ||
6C369 6C372 6C37B 6C384 |
46C369 46C372 46C37B 46C384 |
Source Blend Destination Blend Culling Fog Enabling |
05 02 01 00 |
Checkpoint Rays | ||
6CE91 6CE9A 6CEA3 6CEAC |
46CE91 46CE9A 46CEA3 46CEAC |
Source Blend Destination Blend Culling Fog Enabling |
05 02 01 00 |
Checkpoint Crescent Effect | ||
720A1 720AA 720B3 |
4720A1 4720AA 4720B3 |
Source Blend Destination Blend Culling |
05 02 01 |
Flower Rays | ||
736FB 73704 7370D 73716 |
4736FB 473704 47370D 473716 |
Source Blend Destination Blend Culling Vertex Alpha Enabling |
05 02 01 01 |
Team Formation Gate Sign Light | ||
73886 7388F 73898 |
473886 47388F 473898 |
Source Blend Destination Blend Culling |
05 02 01 |
Team Formation Gate | ||
74920 74929 74932 |
474920 474929 474932 |
Source Blend Destination Blend Culling |
02 02 01 |
Goal Ring Square Dashed Circle | ||
7573B 75744 7574D |
47573B 475744 47574D |
Source Blend Destination Blend Culling |
02 02 01 |
Hint Collision Box | ||
76404 7640D 76416 |
476404 47640D 476416 |
Source Blend Destination Blend Culling |
02 06 01 |
Hint Ring Question Mark | ||
78361 7836A 78373 7838B |
478361 47836A 478373 47838B |
Source Blend Destination Blend Culling #1 Culling #2 |
05 06 03 02 |
Popped Item Balloon | ||
79E98 79EA1 |
479E98 479EA1 |
Source Blend Destination Blend |
05 06 |
Collected Item Icon | ||
7C04C 7C055 7C05E |
47C04C 47C055 47C05E |
Source Blend Destination Blend Fog Enabling |
02 02 00 |
Lasers | ||
7D33B 7D344 7D34D |
47D33B 47D344 47D34D |
Source Blend Destination Blend Culling |
02 02 01 |
Disable Input Collision | ||
84515 8451E 84527 84533 |
484515 48451E 484527 484533 |
Source Blend Destination Blend Culling Fog Enabling |
05 02 01 00 |
Power Gong Swing Effect | ||
86E81 86E8A 86E93 |
486E81 486E8A 486E93 |
Source Blend Destination Blend |
05 02 01 |
Team Formation Sign Light | ||
8AC09 8AC12 8AC1B |
48AC09 48AC12 48AC1B |
Source Blend Destination Blend Culling |
05 02 01 |
Target Switch Fade | ![]() | |
8BBBE 8BBE2 8BBEB |
48BBBE 48BBE2 48BBEB |
Culling UV Address (U) UV Address (V) |
01 03 03 |
Weight Shadow | ||
8BE60 8BE69 8BE72 |
48BE60 48BE69 48BE72 |
Source Blend Destination Blend Culling |
02 02 01 |
Weight Laser | ||
8D6DB 8D6FF 8D708 |
48D6DB 48D6FF 48D708 |
Culling UV Address (U) UV Address (V) |
01 03 03 |
Weight Shadow (Breakable) | ||
8D989 8D992 8D99B |
48D989 48D992 48D99B |
Source Blend Destination Blend Culling |
02 02 01 |
Weight Laser (Breakable) | ||
8F265 8F26E 8F277 8F280 8F289 8F29C 8F2A5 |
48F265 48F26E 48F277 48F280 48F289 48F29C 48F2A5 |
Vertex Alpha Enabling Fog Enabling Z-writing Source Blend #1 Destination Blend #1 Source Blend #2 Destination Blend #2 |
01 00 00 05 02 05 06 |
Lens Flares | ||
8F394 8F39D 8F3A6 8F3AF 8F3B8 8F3CB 8F3D4 |
48F394 48F39D 48F3A6 48F3AF 48F3B8 48F3CB 48F3D4 |
Vertex Alpha Enabling Fog Enabling Z-writing Source Blend #1 Destination Blend #1 Source Blend #2 Destination Blend #2 |
01 00 00 05 02 05 06 |
Lens Flares (Chaos Inferno) | ||
928CD 928D6 92906 9290F 9292A 92962 9296B |
4928CD 4928D6 492906 49290F 49292A 492962 49296B |
Culling UV Address Type *UV) Z-testing Z-writing Vertex Alpha Enabling Source Blend Destination Blend |
01 03 00 01 01 05 04 |
In-game Scene Subtitles | ||
92918 92921 |
492918 492921 |
Source Blend Destination Blend |
01 04 |
In-game Scene Subtitle Drop Shadow | ||
9656C 96575 |
49656C 496575 |
Source Blend Destination Blend |
05 02 |
Hermit Crab Fade | ||
A70D4 | 4A70D4 | Fog Enabling | 00 | Ocean Palace Sky Alpha Gradient | ||
B394F | 4B394F | Fog Enabling | 00 | Power Plant Sky | ||
B3A5F | 4B3A5F | Fog Enabling | 00 | Power Plant Clouds | ||
C516C C5175 |
4C516C 4C5175 |
Source Blend Destination Blend |
05 02 |
Casino Chip Fade | ||
C3D66 C3D6F C3D7B C3D84 C3D8D C3D96 |
4C3D66 4C3D6F 4C3D7B 4C3D84 4C3D8D 4C3D96 |
Z-writing Z-testing Shade Mode Texture filtering Vertex Alpha Enabling Culling |
00 00 02 02 01 01 |
Casino Slot Interface | ||
EDAF0 EDAF9 EDB02 EDB0E EDB17 EDB43 EDB4C EDB9D EDBA6 EDBB4 |
4EDAF0 4EDAF9 4EDB02 4EDB0E 4EDB17 4EDB43 4EDB4C 4EDB9D 4EDBA6 4EDBB4 |
Z-testing Z-writing Fog Enabling Culling Vertex Alpha Blending Source Blend #1 Destination Blend #1 Source Blend #2 Destination Blend #2 Null Material |
00 00 00 01 01 05 06 08 09 00 |
Frog Rain Screen Effect | Two blend factor codes in offsets EDB43 (4EDB43) and EDB4C (4EDB4C) are for the Light Rain screen by the Green Frog and the other two blend factor codes in offsets EDB9D (4EDB9D) and EDBA6 (4EDBA6) are for the Dark Rain screen by the Black Frog. | |
F9A6C F9A75 F9A7E |
4F9A6C 4F9A75 4F9A7E |
Source Blend Destination Blend Culling |
02 02 01 |
Torch Fire | ![]() | |
FE89A FE8A3 |
4FE89A 4FE8A3 |
Source Blend Destination Blend |
05 02 |
Hang Castle Key Fade | ||
FEE13 FEE1C FEE25 |
4FEE13 4FEE1C 4FEE25 |
Source Blend Destination Blend Culling |
02 02 01 |
Mystic Mansion Lights | ![]() | |
FBC5A FBC63 |
4FBC5A 4FBC63 |
Source Blend Destination Blend |
05 06 |
Pumpkin Ghost Fade Effect | ![]() | |
FBDBC FBDC5 FBDCE |
4FBDBC 4FBDC5 4FBDCE |
Source Blend Destination Blend Culling |
02 02 01 |
Pumpkin Ghost Light | ![]() | |
101338 101341 10134A |
501338 501341 50134A |
Source Blend Destination Blend Culling |
02 02 01 |
Hang Castle Spider Lights | ![]() | |
103401 103409 103412 |
503401 503409 503412 |
Source Blend Destination Blend Culling |
02 02 01 |
Teleporter Switch Glowing Symbols | ![]() | |
107BE4 107BED 107BF6 |
507BE4 507BED 507BF6 |
Source Blend Destination Blend Culling |
05 02 01 |
Thunder lightening with skulls | ![]() | |
166AB1 | 566AB1 | Culling | 01 | Egg Emperor Missle Rockets | ||
1655DD 1655E6 1655EF |
5655DD 5655E6 5655EF |
Culling Destination Blend Source Blend |
01 02 05 |
Egg Emperor Charge Effect | ||
165D75 165D7E 165D87 |
565D75 565D7E 565D87 |
Source Blend Destination Blend Culling |
05 02 01 |
Egg Emperor Screen | ||
166B1B 166B36 166B3F |
566B1B 566B36 566B3F |
Culling Destination Blend Source Blend |
01 02 05 |
Egg Emperor Missle Rocket Fire | ||
168119 168122 16812B |
568119 568122 56812B |
Culling Destination Blend Source Blend |
01 02 05 |
Egg Emperor Spear Slash Effect | ||
16879C 1687A5 1687AE |
56879C 5687A5 5687AE |
Culling Destination Blend Source Blend |
01 02 05 |
Egg Emperor Jet Fire | ||
176DD0 | 576DD0 | Fog Enabling | 00 | Grand Metropolis Clouds | Does not affect the clouds used in battle stages. | |
184E99 184EF9 184F02 184F0B 184F14 184F1D 184F26 |
584E99 584EF9 584F02 584F0B 584F14 584F1D 584F26 |
Null Material Z-testing Z-buffering Fog Enabling Culling Source Blend Destination Blend |
00 00 00 00 01 0A 01 |
Chaos Inferno Screen Effect (2 Player) | Applies on the half of the split-screen where "Player B" is frozen by Chaos Inferno. | |
188F4A 188F53 188F5C 188F65 |
588F4A 588F53 588F5C 588F65 |
Source Blend Destination Blend Culling Fog Enabling |
05 02 01 00 |
Chaotix Recital Lights | ||
18B16D 18B175 18B17F |
58B16D 58B175 58B17F |
Source Blend Destination Blend Culling |
05 02 01 |
Omega's Laser Effects (Chaos Inferno) | ||
1BDC05 1BDC0E 1BDC17 |
5BDC05 5BDC0E 5BDC17 |
Source Blend Destination Blend Culling |
05 02 01 |
Omega's Flames | ||
1BDE87 1BDE90 1BDE99 1BDEA5 1BDEAD |
5BDE87 5BDE90 5BDE99 5BDEA5 5BDEAD |
Source Blend Destination Blend Culling Vertex Alpha Enabling Fog Enabling |
05 02 01 01 56 |
Chaos Emerald (Chaos Inferno) | For the fog rendering in this section, 56 is disabled and 50 is enabled. | |
1D2B99 1D2BA2 1D2BAE 1D2BB7 1D2BC0 |
5D2B99 5D2BA2 5D2BAE 5D2BB7 5D2BC0 |
Source Blend Destination Blend Culling Vertex Alpha Enabling Fog Enabling |
05 02 02 01 00 |
Espio's Invisibility | ![]() | |
1D2E3A 1D2E43 1D2E4C 1D2E58 1D2E61 |
5D2E3A 5D2E43 5D2E4C 5D2E58 5D2E61 |
Source Blend Destination Blend Culling Vertex Alpha Enabling Fog Enabling |
05 02 03 01 00 |
Super Sonic Glowing Effect | ||
1D2EC5 1D2ECE 1D2ED7 1D2EE0 |
5D2EC5 5D2ECE 5D2ED7 5D2EE0 |
Source Blend Destination Blend Culling Vertex Alpha Enabling |
05 06 01 01 |
Super Sonic Power Team Blast | ||
1D3126 | 5D3126 | Destination Blend | 02 | Super Sonic Power Team Blast Symbol Effect | ||
1D32E4 1D32ED 1D32F6 1D330B |
5D32E4 5D32ED 5D32F6 5D330B |
Source Blend Destination Blend Culling Fog Enabling |
05 02 01 00 |
Shadow's Shoe Blast Effect | ||
1DCD3F 1DCD48 1DCD51 1DCD5F |
5DCD3F 5DCD48 5DCD51 5DCD5F |
Source Blend Destination Blend Culling Fog Enabling |
05 02 01 00 |
Thundershoot Enemy Stun Effect | ||
1DD547 1DD550 1DD559 |
5DD547 5DD550 5DD559 |
Source Blend Destination Blend |
05 02 01 |
Power Core Transparent Sphere | ||
1DDD9E 1DDDA7 1DDDB0 |
5DDD9E 5DDDA7 5DDDB0 |
Source Blend Destination Blend Culling |
05 02 01 |
Cameron Shoot Ring Effect | ||
1E03E9 1E03F2 1E03FB |
1E03E9 1E03F2 1E03FB |
Source Blend Destination Blend Culling |
05 02 01 |
Gun Shoot Effect | ||
1E05C2 1E05CB |
5E05C2 5E05CB |
Source Blend Destination Blend |
05 06 |
Gun Shoot Ammunition | ||
1E05F8 1E0601 1E060A |
5E05F8 5E0601 5E060A |
Fog Enabling Source Blend Destination Blend |
00 05 02 |
Gun Shoot Ammunition Effect | ||
1E19F1 1E19FA 1E1A03 |
5E19F1 5E19FA 5E1A03 |
Source Blend Destination Blend Culling |
05 02 01 |
Egg Pawn Shield Fade | ||
1E54E6 1E54EF 1E54F8 |
5E54E6 5E54EF 5E54F8 |
Source Blend Destination Blend Culling |
05 02 01 |
Egg Flapper Red Spike Gradient | ||
1E691E 1E6927 1E6930 |
1E691E 1E6927 1E6930 |
Source Blend Destination Blend Culling |
05 02 01 |
Egg Flapper Electricity | ||
1E7504 1E750D 1E7516 |
5E7504 5E750D 5E7516 |
Source Blend Destination Blend Culling |
05 02 01 |
Egg Flapper Search Light | ||
1F1E96 1F1E9F 1F1EA8 |
5F1E96 5F1E9F 5F1EA8 |
Source Blend Destination Blend Culling |
05 02 01 |
E2000 Jet | ||
1F3909 1F3912 1F391B |
5F3909 5F3912 5F391B |
Source Blend Destination Blend Culling |
05 02 01 |
E2000 Laser | ||
1F5B9B 1F5BA4 1F5BAD |
5F5B9B 5F5BA4 5F5BAD |
Source Blend Destination Blend Culling |
05 02 01 |
Falco Fire | ||
205D51 205D5A 205D63 |
605D51 605D5A 605D63 |
Source Blend Destination Blend Culling |
05 02 01 |
Egg Hammer Swinging Hammer Effect | ||
207132 20713B 207144 |
607132 60713B 607144 |
Source Blend Destination Blend Culling |
05 02 01 |
Egg Hammer Helmet Fade Effect | ||
20B1F4 20B1FD 20B206 |
60B1F4 60B1FD 60B206 |
Source Blend Destination Blend Culling |
05 02 01 |
Metal Madness Core | ||
20C236 20C23F 20C248 20C251 |
60C236 60C23F 60C248 60C251 |
Source Blend Destination Blend Culling Fog Enabling |
05 02 01 00 |
Crystal Cage Needle Fire (Metal Madness) | ||
20D2E9 20D2F2 20D2FB 20D304 |
60D2E9 60D2F2 60D2FB 60D304 |
Source Blend Destination Blend Culling Fog Enabling |
05 02 01 00 |
Claw Missle Fire | ||
20FBCE 20FBD7 20FBE0 |
60FBCE 60FBD7 60FBE0 |
Source Blend Destination Blend Culling |
05 02 01 |
Egg Mobile Boost Gradient | ||
212D65 212D6E 212D77 |
612D65 612D6E 612D77 |
Source Blend Destination Blend Culling |
05 02 01 |
Magician Fade | Unused, controlled by the opacity code located in 0x210F83. | |
212E5B 212E64 212E6D |
612E5B 612E64 612E6D |
Source Blend Destination Blend Culling |
05 02 01 |
Magician Suck Ring | ||
218646 21864F 21863D |
618646 61864F 61863D |
Source Blend Destination Blend Culling |
05 02 01 |
Chaos Control Screen Effect | ||
219C1B 219C24 219C2D |
619C1B 619C24 619C2D |
Source Blend Destination Blend Culling |
05 02 01 |
Crystal Attack | ||
21ACC5 21ACCE 21ACD7 21ACE0 |
61ACC5 61ACCE 61ACD7 61ACE0 |
Source Blend Destination Blend Culling Fog Enabling |
05 02 01 00 |
Crystal Cage Needle Fire (Metal Overlord) | ||
21BCD7 21BCE0 21BCE9 21BCF2 |
61BCD7 61BCE0 61BCE9 61BCF2 |
Source Blend Destination Blend Culling Fog Enabling |
05 02 01 00 |
Claw Missle Fire (Metal Overlord) | ||
21E2AA | 61E2AA | Fog Enabling | 00 | Fog Setting (Disabled) | ||
21E2C0 | 61E2C0 | Fog Enabling | 01 | Fog Setting (Enabled) | ||
221510 221519 |
621510 621519 |
Null Material Vertex Alpha Enabling |
00 01 |
Debug Text Materials | Unused | |
22FA88 22FA91 22FA9A 22FAA6 22FAAF |
62FA88 62FA91 62FA9A 62FAA6 62FAAF |
Source Blend Destination Blend Culling Fog Vertex Alpha Enabling |
05 02 01 00 01 |
Character Jump Effects | Also affects the fire balls with characters in super form. | |
2310C1 2310CA 2310D3 2310DF 2310E8 2310F1 |
6310C1 6310CA 6310D3 6310DF 6310E8 6310F1 |
Source Blend Destination Blend Culling Null Material Vertex Alpha Enabling Fog |
05 02 01 00 01 00 |
Forward Power Attack Disc (Knuckles) | ||
231CC4 231CCD 231CD6 231CE2 231CEB |
631CC4 631CCD 631CD6 631CE2 631CEB |
Source Blend Destination Blend Culling Vertex Alpha Enabling Fog Enabling |
05 02 01 01 00 |
Quick Ascent Effect | ||
233AE1 233AEA |
633AE1 633AEA |
Source Blend Destination Blend |
05 02 |
Crash Objects (with Additive Alpha) | ||
2343F8 234401 23440A 234413 234437 23443B |
6343F8 634401 63440A 634413 634437 63443B |
Source Blend Destination Blend Culling Fog Enabling Z-testing #1 Z-testing #2 |
05 02 01 00 01 00 |
Colored Rocket Accel Effect | ||
235297 2352A0 2352A9 2352B2 |
635297 6352A0 6352A9 6352B2 |
Source Blend Destination Blend Culling Fog Enabling |
05 02 01 00 |
Dunk Star Effect | ||
235A98 235AA1 235AAA 235AB3 |
635A98 635AA1 635AAA 635AB3 |
Source Blend Destination Blend Culling Fog Enabling |
05 02 01 00 |
Fire Dunk Effect | ||
236138 236141 23614A 236153 |
636138 636141 63614A 636153 |
Source Blend Destination Blend Culling Fog Enabling |
05 02 01 00 |
Fire Dunk Disc Effect | ||
236A74 236A7D 236A86 236A92 236A9B |
636A74 636A7D 636A86 636A92 636A9B |
Source Blend Destination Blend Culling Fog Enabling Vertex Alpha Enabling |
05 02 01 00 01 |
Dunk Effect | ||
2372F8 237301 23730A 237313 |
6372F8 637301 63730A 637313 |
Source Blend Destination Blend Culling Fog Enabling |
05 02 01 00 |
Dunk Effect | ||
2387B4 2387BD 2387C6 2387CF |
6387B4 6387BD 6387C6 6387CF |
Source Blend Destination Blend Culling Fog Enabling |
05 02 01 00 |
Light Streak Effects | ||
2396AD 2396B6 2396BF 2396CB 2396D4 2396DD |
6396AD 6396B6 6396BF 6396CB 6396D4 6396DD |
Source Blend Destination Blend Culling Null Material Vertex Alpha Enabling Fog Enabling |
05 02 01 00 01 00 |
Character Trail Effects | ||
23A9AB 23A9B4 23A9BD |
63A9AB 63A9B4 63A9BD |
Source Blend Destination Blend Culling |
05 02 01 |
Rainbow Rocket Accel Effect | ||
23811A 238123 238127 238130 23813C 238174 238189 |
63811A 638123 638127 638130 63813C 638174 638189 |
Source Blend #1 Destination Blend #1 Source Blend #2 Destination Blend #2 Culling Vertex Alpha Enabling Blend Equation |
05 02 01 04 01 01 03 |
Footprints | ||
23B0D5 23B0DE |
63B0D5 63B0DE |
Source Blend Destination Blend |
05 02 |
Character Shadows | ||
23B763 23B76E 23B777 23B780 23B795 23B79E |
63B763 63B76E 63B777 63B780 63B795 63B79E |
Vertex Alpha Enabling Source Blend #1 Destination Blend #1 Blend Equation Source Blend #2 Destination Blend #2 |
01 05 02 03 01 04 |
Shadows for Objects | ||
23C1C8 23C1D1 23C1DA 23C1E3 |
63C1C8 63C1D1 63C1DA 63C1E3 |
Source Blend Destination Blend Culling Fog Enabling |
05 02 01 00 |
Fake Ring Electricity | ||
23CEA7 23CEB0 23CEB9 23CEC2 |
63CEA7 63CEB0 63CEB9 63CEC2 |
Source Blend Destination Blend Culling Fog Enabling |
05 02 01 00 |
Thundershoot Star Effect | ||
23D137 23D140 23D149 23D152 |
63D137 63D140 63D149 63D152 |
Source Blend Destination Blend Culling Fog Enabling |
05 02 01 00 |
Thundershoot Effect Ring | ||
23D968 23D971 23D97A 23D983 |
63D968 63D971 63D97A 63D983 |
Source Blend Destination Blend Culling Fog Enabling |
05 02 01 00 |
Thundershoot | ||
23DE45 23DE4E 23DE57 23DE60 |
63DE45 63DE4E 63DE57 63DE60 |
Source Blend Destination Blend Culling Fog Enabling |
05 02 01 00 |
Thundershoot Pipes | ||
23E383 23E38C 23E395 23E3A1 23E3AA |
63E383 63E38C 63E395 63E3A1 63E3AA |
Source Blend Destination Blend Culling UV Addres Type (UV) Fog Enabling |
05 02 01 02 00 |
Thundershoot Ring Collect Planes | ||
23FE8B 23FF6C 23FF75 23FF7E 23FF8A |
63FE8B 63FF6C 63FF75 63FF7E 63FF8A |
Vertex Alpha Enabling Source Blend Destination Blend Culling Fog Enabling |
01 05 02 01 00 |
Colored Tornado Effect | ||
23FEC5 23FEDA 23FEE3 23FEEC 23FEFD 23FF06 |
63FEC5 63FEDA 63FEE3 63FEEC 63FEFD 63FF06 |
Vertex Alpha Enabling Source Blend #1 Destination Blend #1 Blend Equation Source Blend #2 Destination Blend #2 |
01 05 02 03 01 04 |
Dark Tornado Effect | Used if the color of the tornado is colored black. Also, the blend factors below the jump opcode after the blend equation code are not used. | |
2438E8 243954 |
6438E8 643954 |
Fog Enabling #1 Fog Enabling #2 |
00 00 |
Save Screen | ||
244486 24448F 244498 2444A1 2444AA 2444B6 2444BF 2444C8 2444D1 |
644486 64448F 644498 6444A1 6444AA 6444B6 6444BF 6444C8 6444D1 |
Z-testing Z-writing Fog Enabling Source Blend Destination Blend Shade Mode Texture Filtering UV Address Type (U) UV Address Type (V) |
00 00 00 05 06 02 02 03 03 |
FMV Movies | ||
245414 24543B 245488 245491 |
645414 64543B 645488 645491 |
Culling Vertex Alpha Enabling Source Blend Destination Blend |
01 01 05 04 |
FMV Subtitles | ||
245429 245432 |
645429 645432 |
Source Blend Destination Blend |
01 04 |
FMV Subtitle Drop Shadow | ||
247E4F 247E59 |
647E4F 647E59 |
Source Blend Destination Blend |
05 06 |
RenderWare Engine Default blend options | ||
278975 27897C 278D03 278D0F 278D2F |
678975 67897C 678D03 678D0F 678D2F |
Source Blend Destination Blend Unknown Material #1 Z-buffering Unknown Material #2 |
05 02 00 00 00 |
Crystal Cage (Metal Madness) | Blend factors only affect the reflection part of the model, the base blending is handled by the main material functions using material flags. While this function runs, the reflection blending on other objects is also affected. | |
28A805 28A811 28A81A 28A831 28A83A 28A843 |
68A805 68A811 68A81A 68A831 68A83A 68A843 |
Z-testing Z-writing Texture Filtering Source Blend Destination Blend Culling |
00 00 01 05 06 01 |
More Debug Text Materials | Unused | ![]() |
Material Flags
Somewhat like BSPs with identifiers stored in .ONE files, objects have their own material flags stored in the code. Objects that use material flags provide a rendering effect through the main rendering code sections when applied to an object after it appears. Examples of objects that use material flags are Energy paths and HEXAeco Signboards. Note that not all objects use material flags separately for each model loaded in the level. Unlike the opcodes that provide the graphic appearance for the object in their code sections, the modified flags require moving away from the object until it disappears or by quiting the level and returning in-order to take effect.
Flag offset pointer entry:
00 72 00 00
Offset | Type | Description |
---|---|---|
0x00 | Byte | Pointer flag |
0x01 | 3 bytes | Always 72 00 00 |
Flag entry:
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Offset | Type | Description |
---|---|---|
0x00 | 4 Bytes | Usually model pointer |
0x04 | 4 Bytes | Pointer Sometimes uses the address for loaded models. |
0x09 | Byte | Flag |
Examples:
68 DA 77 00 00 00 00 00 14 00 00 00 00 00 00 00
D0 F8 76 00 28 3D A2 00 14 00 00 00 00 00 00 00
A list of identifier flags for objects are the following pointer and regular bytes:
Flag pointer:
Flag | Identifier | Description | Notes |
---|---|---|---|
54 | ?? | Invisible geometry | Usually used if the object set has individual material flags stored somewhere in the EXE and RAM or loads them for rendering the geometry. |
58 | DN | Sky model material | |
5C | O | Reflective material | |
60 | OS | Reflective floor material | |
64 | ON | Regular material | |
68 | ONS | Regular floor material | |
6C | ONW | Regular material without culling | |
70 | ONWS | Regular floor material without culling | |
74 | P | Alpha testing with reflective material | |
78 | PS | Alpha testing with reflective floor material | |
7C | PN | Alpha testing material | |
80 | PNS | Alpha testing floor material | |
84 | PNW | Alpha testing material without culling | |
88 | PNWS | Alpha testing floor material without culling | |
8C | DA | Alpha sky material | |
90 | AF | Alpha reflective material | |
94 | AFS | Alpha reflective floor material | |
98 | AFN | Alpha material | |
9C | AFNS | Alpha floor material | |
A0 | K | Additive alpha material | |
A4 | KW | Additive alpha material without culling | |
A8 | A | Alpha reflective material | |
AC | AS | Alpha reflective floor material | |
B0 | AN | Alpha material | |
B4 | ANS | Alpha floor material |
Individual flag ids:
Flag | Identifier | Description | Notes |
---|---|---|---|
00 | ?? | Usually used if the object set has individual material flags stored somewhere in the EXE and RAM. | |
01 | DN | Sky model material | |
02 | O | Reflective material | |
03 | OS | Reflective floor material | |
04 | ON | Regular material | |
05 | ONS | Regular floor material | |
06 | ONW | Regular material without culling | |
07 | ONWS | Regular floor material without culling | |
08 | P | Alpha testing with reflective material | |
09 | PS | Alpha testing with reflective floor material | |
0A | PN | Alpha testing material | |
0B | PNS | Alpha testing floor material | |
0C | PNW | Alpha testing material without culling | |
0D | PNWS | Alpha testing floor material without culling | |
0E | DA | Alpha sky material | |
0F | AF | Alpha reflective material | |
10 | AFS | Alpha reflective floor material | |
11 | AFN | Alpha material | |
12 | AFNS | Alpha floor material | |
13 | K | Additive alpha material | |
14 | KW | Additive alpha material without culling | |
15 | A | Alpha reflective material | |
16 | AS | Alpha reflective floor material | |
17 | AN | Alpha material | |
18 | ANS | Alpha floor material |
Material Flag Properties
Starting at 0x3BAB18, there are 12 bytes on each entry. There are 24 material flag sets available in the EXE that provide a specific material to an object or level geometry and the entry ends at 0x3BAC38
Property entry:
00 00 00 00 00 00 00 00 00 00 00 00
Offset | Description |
---|---|
0x00 | Material Pointer |
0x04 | ID |
0x08 | Parameter |
The parameters are logical and there are three valid addresses that should be used in-order for the game to work correctly when altering the type of material. Here are a list of conditions for the parameters:
Conditional Bitwise Bytes | Parameter |
---|---|
10 | Fog |
40 | Additive Alpha |
01 | Reflective Ambient |
04 | Double Sided Model |
08 | Sky clip planes |
These are a list of pointers that are available for each flag section entry:
Address (Big Endian) | Address (Little Endian) | Description |
---|---|---|
402E70 | 702E40 | Normal |
402FE0 | E02F40 | Alpha Test |
4031A0 | A03140 | Alpha |
Object Flag Offsets
A list below shows offsets found so far in the EXE for certain parts of the codes that apply material flags to objects.
In-game
Object | Addresses (EXE) | Addresses (RAM) | Models | Default byte values | Flag Type(s) | Notes |
---|---|---|---|---|---|---|
Alligator | 475330 | 875330 | Alligator | 04 | Byte ID | |
Armored Train | 3FAF28 3FAFE8 3FB000 3FB018 3FB030 3FB048 3FB060 3FB078 3FB090 3FB0A8 |
7FAF28 7FAFE8 7FB000 7FB018 7FB030 7FB048 7FB060 7FB078 7FB090 7FB0A8 |
Flashing Heat Vent Glow Train Piece (Part 1) Train Piece (Part 2) Train Piece (Part 3) Train Piece (Part 4) Train Piece (Part 5) Train Piece (Part 6) Train Piece (Part 7) Train Piece (Part 8) Train Piece (Part 9) |
13 04 04 04 04 04 04 04 04 04 |
Byte ID | |
Armored Train Engine Core | 457518 457528 |
857518 857528 |
Engine Core Base Glass |
04 17 |
Byte ID | |
Arrow Light Sign Pads | 000B0659 000B0AB8 |
004B0659 004B0AB8 |
Pad Arrow Light |
64 A0 |
72 Pointer | |
Ball Bumpers | 3EB3F4 | 7EB3F4 | Green Star Balls | 04 | Byte ID | |
Barb Fence | 3F591C | 7F591C | Barb Fence | 0A | Byte ID | |
Barrier | 001822CF | 005822CF | Barrier Effect | A4 | 72 Pointer | |
Bingo Number Chips | 003F1228 003F1238 003F1248 003F1258 003F1268 003F1278 003F1288 003F1298 003F12A8 003F12B8 003F12C8 003F12D8 003F12E8 007F12F8 003F1308 003F1318 003F1328 003F1338 003F1348 |
007F1228 007F1238 007F1248 007F1258 007F1268 007F1278 007F1288 007F1298 007F12A8 007F12B8 007F12C8 007F12D8 007F12E8 007F12F8 007F1308 007F1318 007F1328 007F1338 007F1348 |
Yellow Chip Number 1 Orange Chip Number 2 Red Chip Number 3 Mint Chip Number 4 Lime Chip Number 5 Aqua Chip Number 6 Magenta Chip Number 7 Blue Chip Number 8 Purple Chip Number 9 Broken Pieces |
11 04 11 04 11 04 11 04 11 04 11 04 11 04 11 04 11 04 04 |
Byte ID | |
Big the Cat | 001BE454 | 005BE454 | Big the Cat | 5C | 72 Pointer | |
Blocks | 0009AFA1 | 0049AFA1 | Power Plant Blocks Seaside Hill/Ocean Palace Blocks |
64 | 72 Pointer | |
Block on Rails | 9B7FC 9B815 9B82E 9B87C 9B907 9B9AE |
49B7FC 49B815 49B82E 49B87C 49B907 49B9AE |
Body Wheels Shadows Rail Piece #1 Rail Center Piece Rail Piece #2 |
64 64 B0 64 64 64 |
72 Pointer | |
Bomb Explosion | 23003E | 63003E | Saturn Explosion | A4 | 72 Pointer | |
Bouncy Fruit | E5A46 | 4E5A46 | Fruit Object | 64 | 72 Pointer | |
Broken Glass Pieces (Casino levels) | 000BB513 | 004BB513 | Glass Pieces | A4 | 72 Pointer | |
Bullet Station Tunnel | 4575B0 4575C0 4575D0 4575E0 4575F0 457600 |
8575B0 8575C0 8575D0 8575E0 8575F0 857600 |
Interior Tunnel Red Lights Blue Light #1 Blue Light #2 Light Black Square Planes |
03 13 13 13 13 03 |
Byte ID | |
Butterflies | 000DD88C 000DD8BE |
004DD88C 004DD8BE |
Butterflies | 7C 7C |
72 Pointer | |
Canyon Barrels | 3F5088 | 7F5088 | Eggman Barrels | 04 | Byte ID | |
Canyon Capsules | 3F6300 3F6310 3F6320 3F6330 |
7F6300 7F6310 7F6320 7F6330 |
Capsule #1 Capsule Glass #1 Capsule #1 Capsule Glass #1 |
04 17 04 17 |
Byte ID | |
Casino Floating 2D Signs | 3EC1BC 3EC1D8 |
7EC1BC 7EC1D8 |
Lost Marker Green Star Arrow |
13 13 |
Byte ID | |
Casino Skybox | 3EC10C | 7EC10C | Skybox | 01 | Byte ID | |
Casino Slots | 3EBD20 3EBD30 3EBD40 3EBD50 3EBD60 3EBD70 3EBD80 3EBD90 3EBDA0 3EBDB0 3EBDC0 3EBDD0 |
7EBD20 7EBD30 7EBD40 7EBD50 7EBD60 7EBD70 7EBD80 7EBD90 7EBDA0 7EBDB0 7EBDC0 7EBDD0 |
Slot Piece #1 Slot Piece #2 Glass Inactive Bet Light Active Bet Light Flashing Jackpot Light Inactive Jackpot Light Bet Light #1 Bet Light #2 Bet Light #3 Flashing Glow Arrows Jackpot Light Ring |
04 03 11 04 04 04 04 13 13 13 13 13 |
Byte ID | |
Casino Slots (Small) | BF922 3EBEE0 3EBEF0 3EBF00 3EBF10 3EBF20 |
4BF922 7EBEE0 7EBEF0 7EBF00 7EBF10 7EBF20 |
Slot Wheels Slot Piece #1 Slot Piece #2 Glass Flashing Glow Arrows Jackpot Light Ring |
64 04 03 11 13 13 |
72 Pointer Byte ID Byte ID Byte ID Byte ID Byte ID |
|
Casino Slot Wheels | 3EBDE0 3EBDF0 3EBE00 3EBE10 3EBE20 3EBE30 3EBE40 |
7EBDE0 7EBDF0 7EBE00 7EBE10 7EBE20 7EBE30 7EBE40 |
Ring Slot Sonic Slot Knuckles Slot Tails Slot Seven Slot Eggman Slot Jackpot Slot |
04 04 04 04 04 04 04 |
Byte ID | |
Casino Slot Wheels (Spinning) | BD5BB BD775 |
4BD5BB 4BD775 |
Slot Wheels Condition |
64 64 |
72 Pointer | |
Casino Slot Wheels (Spinning, Small) | BF922 BFAB3 |
4BF922 4BFAB3 |
Slot Wheels Condition |
64 64 |
72 Pointer | |
Character Models | 00181CD4 | 00581CD4 | Amy Rose Cream the Rabbit E-123 Omega Espio Knuckles Shadow Sonic |
5C | 72 Pointer | |
Charmy Bee | 001C64B4 | 005C64B4 | Charmy | 5C | 72 Pointer | |
Charmy Bee's Wings | 001C64E7 | 005C64E7 | Charmy's Wings | A8 | 72 Pointer | |
Crumbling Stone Pillars | A1FD8 A1FFC A201D A205D |
4A1FD8 4A1FFC 4A201D 4A205D |
Pillar #1 Ruin Body Shadow |
04 04 04 11 |
Byte Opcode | |
Crystal Cage | 20BE45 | 60BE45 | Crystal Ball | 90 | 72 Pointer | |
Dash Panel | 6E462 | 46E462 | Dash Panel | 60 | 72 Pointer | |
Dash Ramp | 7A39E | 47A39E | Dash Ramp | 60 | 72 Pointer | |
Dash Ring | 6ED79 6ED8F |
46ED79 46ED8F |
Dash Base Green Lights |
60 60 |
72 Pointer | |
Dice | 3EB6C8 | 7EB6C8 | Red Dice | 03 | Byte ID | |
Doors (Canyon Levels) | 3F6198 3F61A8 3F61B8 3F61C8 3F61D8 3F61E8 |
7F6198 7F61A8 7F61B8 7F61C8 7F61D8 7F61E8 |
Metal Door (Right) Door (Left) Metal Grill #1 Metal Grill #2 Metal Grill #3 |
04 04 04 10 10 10 |
Byte ID | |
Duct Grill | 3F56E8 | 7F56E8 | Grill | 0A | Byte ID | |
Egg Emperor Robot | 163F27 | 563F27 | Egg Emperor Robot | 74 | 72 Pointer | |
Egg Flapper Jet | 001E8B4A | 005E8B4A | Flapper Jet effect | A0 | 72 pointer | |
Egg Horn (Canyon Stages) | 3F573C | 7F573C | Egg Horn | 04 | Byte ID | |
Egg Treat Stars | 17759E | 57759E | Stars | B0 | 72 Pointer | |
Energy Blocker for Road | 004B3938 004B3968 004B3978 004B3988 004B3998 004B39A8 |
008B3938 008B3968 008B3978 008B3988 008B3998 004B39A8 |
Pumper Base Left Pumper Right Pumper Flashing Light Laser Fence Broken Pieces |
04 04 04 13 13 04 |
Byte ID | |
Energy Lava | 003E63C4 003E63DC |
007E63C4 007E63DC |
Lava Lava Gradient |
04 13 |
Byte ID | |
Energy Path Objects | 00172D46 00172DA1 00173279 0017330B 0017399A |
00572D46 00572DA1 00573279 0057330B 0057399A |
Energy Fill Energy Energy Path Activator Energy Path Lights |
64 64 A0 A0 A4 |
72 Pointer | |
Energy Pipe Cover | 001740F1 00174130 |
005740F1 00574130 |
Energy Pipe Handles Pipe Glass |
64 64 |
72 Pointer | |
Fake Rings | 00183A5B | 00583A5B | Rings | 5C | 72 Pointer | |
Falling Stone Structure | A0EB2 A0EC1 A0ED0 A0EFC |
4A0EB2 4A0EC1 4A0ED0 4A0EFC |
Pillar #1 Pillar #2 Ruins Shadows |
04 04 04 17 |
Byte Opcode | |
Fan | 6F9E8 | 46F9E8 | Fan | 60 | 72 Pointer | |
Fan (Bullet Station) | 45737C | 85737C | Fan Barrels | 04 | Byte ID | |
Fan (Rail Canyon) | 3F5680 3F56A4 |
7F5680 7F56A4 |
Fan Fan Machine |
04 04 |
Byte ID | |
Final Fortress Flashing Lights | 48A69C | 88A69C | Cyan Lights | 13 | Byte ID | |
Fireball Light Spots | 003E5CEC | 007E5CEC | Fireball Spot | 13 | Byte ID | |
Firedunk Balls | 23760F | 63760F | Firedunk Ball | A4 | 72 Pointer | |
Fireworks | 000B4AC3 | 004B4AC3 | Firework Effects | 14 | Byte opcode | Not used in the game. |
Floating Letters | 3EB950 3EB960 3EB970 3EB980 3EB990 3EB9A0 3EB9B0 3EB9C0 |
7EB950 7EB960 7EB970 7EB980 7EB990 7EB9A0 7EB9B0 7EB9C0 |
Floating F Floating I Floating R Floating E Floating B Floating A Floating L Another Floating L |
04 04 04 04 04 04 04 04 |
Byte ID | |
Forest Palm Trees | 468DA4 468DB4 |
868DA4 868DB4 |
Low Palm Tree Tall Palm Tree |
0A |
Byte ID | |
Fountain Wings | 000A470A 000A4747 |
004A470A 004A4747 |
Fountain Wing Waterfall |
7C A0 |
72 Pointer | |
Frogs | 00468A20 00468A44 |
00868A20 00868A44 |
Green Frog Black Frog |
04 04 |
Byte ID | |
Glass Object (Casino levels) | 003EB8B8 003EB8C8 003EB8D8 003EB8E8 003EB8F8 |
007EB8B8 007EB8C8 007EB8D8 007EB8E8 007EB8F8 |
Glass Wall Glass Floor Glass Piece #1 Glass Piece #2 Glass Piece #3 |
14 14 14 14 14 |
Byte ID | The destroyed Glass pieces mainly uses the 72 pointer, these three flags are less likely to be used. |
Glow in the Dark Mushrooms | 00468E28 | 00868E28 | Green and Pink Mushrooms | 0A | Byte ID | |
Goal Ring | 73FF1 74067 |
473FF1 474067 |
Restart Ring Goal Ring |
60 60 |
72 Pointer | |
Grand Metropolis Clouds | 001769FD | 005769FD | Clouds | 0E | Byte Opcode | |
Grand Metropolis Door | 0016FCA7 00172D46 00172DA1 |
0056FCA7 00572D46 00572DA1 |
Door Energy Fill Energy |
64 64 64 |
72 Pointer | |
Grand Metropolis Lights | 00171B48 | 00571B48 | Red Lights | A0 | 72 Pointer | |
Hang Castle Clouds | 000F77A5 | 004F77A5 | Clouds | A4 | 72 Pointer | |
Hang Castle Doors | 000F8467 | 004F8467 | Doors | 60 | 72 Pointer | |
Hang Castle Flags | 000FA73F 000FA798 |
004FA73F 004FA798 |
Flag Poles Flags |
64 7C |
72 Pointer | |
Hang Castle Grass | 000FDF6D | 004FDF6D | Grass | 88 | 72 Pointer | |
Hang Castle Platforms | 00100804 00100804 |
00500797 00500804 |
Platform Base Floor |
60 60 |
72 Pointer | |
Hang Castle Trees | 00101A68 00101A76 |
00501A68 00501A76 |
Trunk Tree Bushes |
60 88 |
72 Pointer | |
HEXAeco Signboard | 004B446C 004B4484 004B449C |
008B446C 008B4484 008B449C |
Frame Sign Layer #1 Sign Layer #2 |
04 14 14 |
Byte ID | |
Hexagonal Satellite | 003E6AB8 003E6AD0 |
007E6AB8 007E6AD0 |
Handles Mirror |
04 03 |
Byte ID | |
Homing Attack Ring Effects | 00232560 | 00632560 | Ring Effect | A4 | 72 Pointer | |
Kao | A4A8F | 4A4A8F | Kao | 60 | 72 Pointer | |
Large Green Spring Plant | 4753B4 | 8753B4 | Green Spring Plant | 04 | Byte ID | |
Liftable Bridge | 0016D3EF | 0056D3EF | Lift Bridge | 7C | 72 Pointer | |
Metal Sonic Claw Missile (Metal Overlord) | 21BA2D | 61BA2D | Claw Missile | 5C | 72 Pointer | |
Miles "Tails" Prower | 001C63D4 | 005C63D4 | Tails | 5C | 72 Pointer | |
Miles "Tails" Prower's Fox Tails | 001C6407 | 005C6407 | Tails' Fox Tails | 5C | 72 Pointer | |
Moving Structures (Ocean Palace) | A3FB4 A3FE0 |
4A3FB4 4A3FE0 |
Buildings Tree leaves |
64 7C |
72 Pointer | |
Mystic Mansion Doors | 00105E17 | 00505E17 | Doors | 60 | 72 Pointer | |
Mystic Mansion Platforms | 00106A77 00106AE2 |
00506A77 00506AE2 |
Platform Base Floor |
60 60 |
72 Pointer | |
Mystic Mansion Pocket Dimension Sphere | 00104EEA | 00504EEA | Pocket Dimension Sphere | A4 | 72 Pointer | |
Ocean Palace Plants | A2817 A284E |
4A2817 4A284E |
Plants | 84 98 |
72 Pointer | |
Ocean Palace Turtle Legs | 000A2D27 000A3274 |
004A2D27 004A3274 |
Turtle Legs Water Waves |
64 B0 |
72 Pointer | |
Ocean Palace Waterfall | 000A671C | 004A671C | Waterfall | A0 | 72 Pointer | |
Ocean Palace/Power Plant Sky | A6AB3 | 4A6AB3 | Stage Sky | 01 | Byte Opcode | |
Ocean Palace Sky Gradient | A6AE3 | 4A6AE3 | Alpha Gradient for Sky | 0E | Byte Opcode | |
Ocean Waves | 99C52 | 499C52 | Ocean Waves | B0 | 72 Pointer | |
Orange Dash Arrows | 3EB660 3EB670 3EB680 |
7EB660 7EB670 7EB680 |
Dash Arrows | 14 14 14 |
Byte ID | |
Pinball Bumpers | 003EB450 003EB460 003EB470 003EB480 |
007EB450 007EB460 007EB470 007EB480 |
Bumpers | 04 04 04 04 |
Byte ID | |
Pinball Round Bumpers | 3EB39C | 7EB39C | Round Bumpers | 04 | Byte ID | |
Pinball Flippers | 003EB75C 003EB76C |
007EB75C 007EB76C |
Left Flipper Right Flipper |
04 04 |
Byte ID | |
Pole | 7D667 | 47D667 | Pole | 60 | 72 Pointer | |
Power Gong | 83B1B | 483B1B | Power Gong | 60 | 72 Pointer | |
Power Plant Clouds | 000A6B0E | 004A6B0E | Clouds | 0F | Byte opcode | Value is one value up from 0E in this offset and decremented by the opcode after this one resulting the byte "0E" after loading. You will need to add the material flag id by 01 for your desired material effect (Example:if the byte is 15, it will become 14 before the level loading finishes.) |
Power Plant Crane | 003E5C9C 003E5CB4 003E5CCC |
007E5C9C 007E5CB4 007E5CCC |
Cab Jib Guy Line Crane Jib |
04 06 0C |
Byte ID | |
Power Plant HEXAeco Glass Ball | 003E5BEC | 007E5BEC | Glass Ball | 17 | Byte ID | |
Power Plant Room Light | 003E69CC 003E69FC |
007E69CC 007E69FC |
Pentagon Frame Mint Light |
04 13 |
Byte ID | |
Quick Ascent Ring Effects | 00231F13 | 00631F13 | Ring Effects | A4 | 72 Pointer | |
Rail Board | 3F5AC4 3F5AD4 |
7F5AC4 7F5AD4 |
Railboard Grate Rail |
0A 04 |
Byte ID | |
Rail Canyon Rails | 000D5A4A 000D5B39 |
004D5A4A 004D5B39 |
Changable Rails | A0 | 72 Pointer | |
Rail Exclamation Sign | 3F5F94 3F5FA4 |
7F5F94 7F5FA4 |
Sign | 04 13 |
Byte ID | |
Rail Signs | 3F63B0 3F63C0 3F63D0 3F63E0 3F63F0 3F6400 3F6410 |
7F63B0 7F63C0 7F63D0 7F63E0 7F63F0 7F6400 7F6410 |
Base Arrows Blue Flash Effect Red Flash Effect Blue Flash Effect (Alpha) Red Flash Effect (Alpha) Glass |
04 04 04 04 17 17 17 |
Byte ID | |
Rail Switch | 3FAE7C 3FAE8C 3FAE9C |
7FAE7C 7FAE8C 7FAE9C |
Switch Red Flash Blue Flash |
04 13 13 |
Byte ID | |
Rain Fruit | 4753FC | 8753FC | Fruit Object | 04 | Byte ID | |
Rain Fruit ripped off from stems | E6CF0 | 4E6CF0 | Fruit Object | 5C | 72 Pointer | |
Rouge the Bat | 001C6444 | 005C6444 | Rouge | 5C | 72 Pointer | |
Rouge's Bat Wings | 001C6477 | 005C6477 | Rouge's Bat Wings | 5C | 72 Pointer | |
Seaside Hill Flags | 0009543A 0009547C |
0049543A 0049547C |
Flag Pole Flag |
64 7C |
72 Pointer | |
Seaside Hill Plants | 94E79 | 494E79 | Plants | 7C | 72 Pointer | |
Seaside Hill Ruins | 98981 | 498981 | Ruin Platforms | 64 | 72 Pointer | |
Seaside Hill Ruin Waterfall | 994A7 | 4994A7 | Ruin Waterfall | B0 | 72 Pointer | |
Seaside Hill Waterfall | 96849 | 496849 | Waterfall | B0 | 72 Pointer | |
Seaside Hill Water cracks | 93FFA | 493FFA | Waterfall | B0 | 72 Pointer | |
Skeleton Fan | 0010638D | 0050638D | Skeleton Hand Fan | 60 | 72 Pointer | |
Something Related to a sky? | A6ACB | 4A6ACB | Unknown | 04 | Byte Opcode | |
Sliding Block | 9CF01 9CF19 9CF31 |
49CF01 49CF19 49CF31 |
Body Wheels Shadows |
64 64 B0 |
72 Pointer | |
Sliding Block Path | 9D364 | 49D364 | Body Wheels Shadows |
64 64 B0 |
72 Pointer | |
Small Triangular Bumpers | 003EC120 003EC130 003EC140 003EC150 |
007EC120 007EC130 007EC140 007EC150 |
Triangular Bumpers | 04 04 04 04 |
Byte ID | |
Spike Balls | 77413 | 477413 | Spike Ball | 60 | 72 Pointer | |
Spiked Grass | 000FD7BE 000FD8CE |
004FD7BE 004FD8CE |
Red Grass Grass Spikes |
60 88 |
72 Pointer | |
Spinning Spike Ball Pole | 774C6 | 4774C6 | Spike Ball Spin Pole | 60 | 72 Pointer | |
Station Doors | 3F4FF8 3F501C |
7F4FF8 7F501C |
Automatic Doors | 04 04 |
Byte ID | |
Swinging Axes | 0010000C | 0050000C | Hang Castle Axes | 60 | 72 Pointer | |
Teleporter Switch | 00102D62 00103D38 |
00502D62 00503D38 |
Switch Ball Switch Pad/Inactive Switch |
60 60 |
72 Pointer | |
Thunder (Final Fortress) | 48A700 | 88A700 | Thunder | 13 | Byte ID | Unused |
Torch Holder | 000F9C06 000F9C87 |
004F9C06 004F9C87 |
Torch Parts | 60 60 |
72 Pointer | |
Vector's Bubble Gum | 001BE5B7 | 005BE5B7 | Bubble Gum Ball | 5C | 72 Pointer | |
Vector's Bubble Gum Breath | 00185EB0 | 00585EB0 | Bubble Gum Ball | 5C | 72 Pointer | |
Vector the Crocodile | 001BE584 | 005BE584 | Vector | 5C | 72 Pointer | |
Vine Slide (Frog Forest) | ED346 ED73D |
4ED346 4ED73D |
Vine Tail Vine |
64 64 |
72 Pointer | |
Vine Slide (Lost Jungle) | F4276 F466D F4AB6 F4EAD |
4F4276 4F466D 4F4AB6 4F4EAD |
Vine #1 Vine Tail #1 Vine Tail #2 Vine #2 |
64 64 64 64 |
72 Pointer | |
Warp Flower Stem | 70617 | 470617 | Stem | 60 | 72 Pointer | |
Water (Lost Jungle) | 00476EB4 | 00876EB4 | Pond Water | 13 | Byte ID | |
Wide Spring | 59797 | 459797 | Triple Spring Board | 60 | 72 Pointer | |
Wiggly Mushrooms (Lost Jungle) | 475510 | 875510 | Mushrooms | 04 | Byte ID |
Startup
Address | Flag | Models | Object Name(s) |
---|---|---|---|
319C89 | 02 | Cannon Shooter Cannon Base Cannon Crush Pieces |
obj13_houdai_s_on obj13_houdai_S_on_base obj13_houdai_S_on_crush obj13_houdai_S_base_on_crush |
319DB0 | 04 | Cannon Bullet | obj13_houdai_S_on_bullet |
319DEF | 17 | Cannon Bullet Effect | obj13_houdai_S_on_bullet_eff |
319E33 | 04 | Cannon Step Parts | obj13_houdai_fumi_os_env obj13_houdai_fumi_base_os_env obj13_houdai_fumi_button_os_env obj13_houdai_yoko_on_bullet |
319F4F | 17 | Cannon Step Bullet Effect | obj13_houdai_yoko_on_bullet_eff |
319FA9 | 04 | Egg Ship | dobj13_senkan_s_on |
319FEE | 13 | Egg Ship (Jet) | dobj13_senkan_s_jet_an |
31A035 | 04 | Big Egg Ship | dobj13_senkan_l_on |
31A07A | 13 | Big Egg Ship (Jet) | dobj13_senkan_l_jet_an |
31A0C3 | 04 | Energy Pipe Object | dobj13_pipe dobj13_pipe_line |
31A2B3 | 04 | UFO (Egg Fleet) | dobj13_ufo_on |
31A2FC | 13 | UFO Blue Arrow (Egg Fleet) | dobj13_ufo_k |
31A251 | 04 | Egg Fleet Door | obj13_senkan_on_shut |
31A356 | 05 | Conveyor Belt | obj13_senkan_belt |
31A39A | 04 | Moving Conveyor Belt Floor | obj13_senkan_belt_move |
31A3EE | 03 | Detonator Switch | obj14_jibaku_sw_on obj14_jibaku_sw_button_on obj14_jibaku_sw_button_ons |
31A40E | 13 | Detonator Lights | obj14_jibaku_sw_button_k obj14_jibaku_sw_k_1 obj14_jibaku_sw_k_2 obj14_jibaku_sw_k_3 obj14_jibaku_sw_k_4 obj14_jibaku_sw_button_k_1 obj14_jibaku_sw_button_k_2 obj14_jibaku_sw_button_k_3 obj14_jibaku_sw_button_k_4 |
31A71F | 14 | Detonator Explosion Effect | obj14_jibaku_sw_kw |
31A76B | 13 | Laser Beam | obj14_laserbeam_Ba_k obj14_laserbeam_Bb_k obj14_laserbeam_Bc_k obj14_laserbeam_Be_k obj14_laserbeam_Ya_k obj14_laserbeam_Yb_k obj14_laserbeam_Yc_k obj14_laserbeam_Ye_k obj14_laserbeam_Ra_k obj14_laserbeam_Rb_k obj14_laserbeam_Rc_k obj14_laserbeam_Re_k |
31A84A | 14 | Blue Laser Beam (Double Sided) | obj14_laserbeam_Bd_k |
31A99A | 14 | Yellow Laser Beam (Double Sided) | obj14_laserbeam_Yd_k |
31AAEA | 14 | Magenta Laser Beam (Double Sided) | obj14_laserbeam_Rd_k |
31ABCA | 13 | Neon Decorations (Additive Models) | dobj14_holeneonA_k dobj14_holeneonB_k dobj14_goalneon_k dobj14_neonlineL_k dobj14_neonlineR_k |
31ABF4 | 04 | Neon Decorations | dobj14_holeneonA_on dobj14_goalneon_on dobj14_neonlineL_on dobj14_neonlineR_on |
31AE41 | 13 | Red Ring Neon Light | dobj14_ringklight_k |
31AE91 | 13 | Search Light | dobj14_searchlight_k |
31AEE9 | 04 | Tower Neon Decoration Part 1 | dobj14_towerneonA_on |
31AF2E | 13 | Tower Neon Decoration Light Lines Part 1 | dobj14_searchlight_k |
31AF75 | 04 | Tower Neon Decoration Part 2 | dobj14_towerneonB_on |
31AFBA | 13 | Tower Neon Decoration Light Lines Part 2 | dobj14_towerneonB_k |
31B016 | 03 | UFO (Final Fortress) | dobj14_ufo_on |
31B05F | 13 | UFO Blue Arrow (FInal Fortress) | dobj14_ufo_k |
31B564 | 02 | Dr. Eggman Egg Mobile Egg Hawk Parts Egg Pawns Egg Pawn Light |
en_egghawk en_egghawk_pawn en_eggmovile en_eggman en_em_light en_em_boost en_em_flash |
31B583 | 13 | Egg Pawn Light Glow Egg Hawk Jet Fire Egg Hawk Light |
en_bs1p_eye en_ef_egghawkjet en_ef_bs1_light |
31B59B | 04 | Egg Hawk Jet Parts | en_ef_emjet |
31B68F | 15 | Egg Mobile Wind Shield | en_em_wshield |
31BAF8 | 04 | Egg Hawk Towers | s20_on_toudai_0 s20_on_toudai_1 s20_on_toudai_hahen05 s20_on_toudai_hahen06 |
31BC83 | 04 | Egg Hawk Whale Statues | s20_on_kujira1_0 s20_on_kujira1_1 s20_on_kujira1_hahen s20_on_kujira2_0 s20_on_kujira2_1 s20_on_kujira2_hahen s20_on_kujira0_hahen1 s20_on_kujira0_hahen2 |
31BEDC | 02 | Egg Albatross parts | en_eggalbtrs en_eggalbtrsc en_bs2_propa en_bs2_propb en_bs2_cannona en_bs2_cannonb en_bs2_fina en_bs2_finb en_bs2_laser en_bs2_pod en_bs2_enginel en_bs2_enginer en_bs2_head |
31C18D | 13 | Egg Albatross Jet Fire | en_ef_bs2_jet |
31C1D4 | 08 | Eggman Albatross Ship Decal | en_bs2_mark |
Indirect Shaders
While in game, the shaders are enabled for models that use indirect texturing during the loading process for the levels. The indirect state can be found at 0x2B955C and the default ID is 01. When changed, it will trigger the effects for the indirect animations:
State ID | State | Result |
---|---|---|
00 | Disabled | ![]() |
01 | Enabled | ![]() |
Object Crash Material Properties
Objects that are used as a crashing object using a 3 such as a tree branch (being broken by an Alligator in Lost Jungle) are given materials before they appear on the 3D space.
A list of material options are available in the game for several objects:
ID | Description |
---|---|
02 | Additive Crash Object |
FF | Normal Crash Object |
As for the alpha testing material to be used if needed, you will need to do the following hex replacements to add that option to the EXE:
Address | Original Bytes | Replace With |
---|---|---|
233A84 | CC CC CC CC CC CC CC CC | 83 79 40 04 75 22 EB 0A |
233A94 | 74 | 7D |
387C34 | E0 5A 54 | 84 3A 63 |
When that is done, you can set the parameter value at 0x233A87 to anything like 04 or something. Note that values 02, 01, 00 and FF are not recommended as it will spawn a duplicate model with another material given, so the recommended range for alpha test rendering is from 03-7F.
A list of codes are in the EXE.
Address | Default Bytes | Type |
---|---|---|
232A80 | FF | Enemy Pieces |
232A20 | FF | Broken Objects |
21A2A3 | 02 | Metal Overlord Crystal Pieces |
Special Stage Object Model Settings
A list of models loaded for special stages has a number of different entries in the EXE. The section begins at 0x495980 with data that reads the blend type assigned to the object.
Blend Type:
Parameter | Description | Result |
---|---|---|
00 | Regular Alpha | ![]() |
01 | Additive Alpha | ![]() |
Entry Settings List
List of object entries are located in the addresses in the EXE.
Address | Default Blend Type (Hex.) | Description | Notes |
---|---|---|---|
495984 | 00 | Spike Bombs (Near point) | |
49599C | 00 | Colored Spheres (Near point) | Changing the byte to an additive alpha parameter will cause all spheres to use the same color during the hue cycle animation. |
4959A4 | 01 | Sphere Bubble effect | |
4959C0 | 00 | Orange Star Sphere | |
4959CC | 00 | Orange Star Sphere (Star Layer) | |
4959E4 | 00 | Blue Star Sphere | |
4959F0 | 00 | Blue Star Sphere (Star Layer) | |
495A08 | 00 | Colored Spheres (Far point) | Same as with the near point. |
495A20 | 00 | Sphere with stars (Far point) | |
495A2C | 00 | Sphere Stars (Far point) | |
495A44 | 00 | Spike Bombs (Far point) |
Chaos Emerald blend options
For the chaos emeralds that appear on Emerald Challenges, it requires the code in 0x12FF56 to be changed in-order to be customized. To do that, replace the bytes with these ones:
Address | Original Bytes | Replace With |
---|---|---|
12FF56 | 89 1D 68 7B A4 00 74 0F | C6 05 68 7B A4 00 00 90 |
After that, the blend setting will be located at 0x12FF5C which can be set before the level finishes loading.
Code:
C6 05 68 7B A4 00 00 90
*The highlighted byte is the blend parameter for the chaos emerald.
Here are a list of blend options for the chaos emeralds.
Param ID | Description |
---|---|
00 | Alpha |
01 | Add |
02 | Normal |
Chao Hot Air Balloon blend params
Like with Chaos Emeralds, they use parameters given at the start of each bonus level. However, it has an address linked with the emerald's blend parameters located at 0x1311CB
You will need to separate it from the Chaos Emerald to avoid making them use the same parameter.
Address | Original Bytes | Replace With |
---|---|---|
12FD48 | C3 CC CC CC CC | E9 C4 00 00 00 |
12FE11 | CC CC CC CC CC CC CC CC CC CC CC | C7 05 98 B7 A7 00 00 00 00 00 C3 |
13113E | B0 87 A7 | 98 B7 A7 |
1311C2 | B0 87 A7 | 98 B7 A7 |
1311CB | 68 7B A4 | 98 B7 A7 |
The parameter ID will be located at 0x12FE17 and they use the same blend params as the emeralds except that 00 is a normal (Z-buffered) material, 02 is nothing and 03 is a regular alpha material.
Tube Step Effects
There are no codes anywhere in the EXE that provide the ID for the tube stepping effect, but there is a way to customize the blending parameters for it.
To change the blend mode for that, change the bytes to these ones.
Address | Original Bytes | Replace With |
---|---|---|
12D489 | CC CC CC CC CC CC CC | C6 05 A0 87 A7 00 00 |
378C28 | 90 D4 52 | 89 D4 52 |
After that, the last byte of the code before the other will be located at 0x12D48F and the following params provide the blend options on that byte of the code:
ID | Alpha Type |
---|---|
00 | Additive |
01 | Normal |
02 | Subtractive |
Special Stage Particles (Incomplete)
List of particle blend IDs begins at 0x494AB0 and ends at 0x494AE0. Each section entry is 0x10 bytes with one byte each.
Particle | Blend ID | Address (EXE) | Address (RAM) |
---|---|---|---|
Dark Smoke | 03 | 494AB0 | 894AB0 |
Explosion Effect #1 | 00 | 494AB1 | 894AB1 |
Explosion Effect #2 | 00 | 494AB2 | 894AB2 |
Stars from Colored Balls | 01 | 494AB5 | 894AB5 |
Stars from Colored Balls (Additive) | 00 | 494AB6 | 894AB6 |
Stars from Balls with Star Decoration | 01 | 494ABA | 894ABA |
Stars from Balls with Star Decoration (Additive) | 00 | 494ABB | 894ABB |
Chaos Emerald Sparkles for Act 1 | 00 | 494AC6 | 894AC6 |
Chaos Emerald Sparkles for Act 2 | 00 | 494AC5 | 894AC5 |
Chaos Emerald Sparkles for Act 3 | 00 | 494AC7 | 894AC7 |
Chaos Emerald Sparkles for Act 4 | 00 | 494AC8 | 894AC8 |
Chaos Emerald Sparkles for Act 5 | 00 | 494AC9 | 894AC9 |
Chaos Emerald Sparkles for Act 6 | 00 | 494ACA | 894ACA |
Chaos Emerald Sparkles for Act 7 | 00 | 494ACB | 894ACB |
Blend Modes
The following IDs define the blend factors for these particle effects.
ID | Value (Src.) | Value (Dest.) | Address (EXE) #1 | Address (EXE) #2 | Address (RAM) #1 | Address (RAM) #2 | Source Factor | Dest. Factor | Description | Notes |
---|---|---|---|---|---|---|---|---|---|---|
00 | 05 | 02 | 4951D4 | 8951D4 | 4951D8 | 8951D8 | rwBLENDSRCALPHA | rwBLENDONE | Additive Alpha | |
01 | 05 | 06 | 4951DC | 8951DC | 4951E0 | 8951E0 | rwBLENDSRCALPHA | rwBLENDINVSRCALPHA | Alpha | |
02 | 02 | 01 | 4951E4 | 8951E4 | 4951E8 | 8951E8 | rwBLENDONE | rwBLENDZERO | Regular | Unused, uses the same blend factors as 01 instead. |
03 | 01 | 04 | 4951EC | 8951EC | 4951F0 | 8951F0 | rwBLENDZERO | rwBLENDINVSRCCOLOR | Subtractive Alpha | |
04 | 01 | 01 | 4951F4 | 8951F4 | 4951F8 | 8951F8 | rwBLENDZERO | rwBLENDZERO | Non-Alpha Blend | Probably unused. |
To unlock certain blend options for parameter IDs 02 and 04, change the following codes to these:
Address | Original Bytes | Replace With |
---|---|---|
12EE7B | 3C 04 | EB 04 |
12EE89 | 75 0C | EB 0C |