ROM
Version 1.4.20901

Summary:

1. ROM Map
2. Text Strings
3. Level Headers / Level Headers Pointers
4. Level Palettes / Level Palettes Pointers

1. ROM Map

Here is a ROM Map. It is will give you the general sections of the Chaotix ROM.

000000 - 000100 - Vector Table (3F0 is the Code Entry Point)
000100 - 000200 - ROM Header
000200 - 0003F0 - Some Crapy Code (only contain Jumps)
0003F0 - 00536A - Unknown
00536A - 0056EA - Levels Sprite Layout Pointers
0056EA - 03FDEA - Unknown
03FDEA - 03FE6A - Level Select Strings
03FE6A - 03FE7C - Unknown
03FE7C - 040000 - Blank Space
040000 - 04E7FC - Musics
04E7FC - 050000 - Blank Space
050000 - 054190 - Musics
054190 - 056000 - Blank Space
056000 - 0570B0 - Sound Effects
0570B0 - 058000 - Blank Space
058000 - 058160 - PWM Samples Pointers
058160 - 074000 - PWM Samples
074000 - 07738A - Unknown
07738A - 077554 - Level Names
077554 - 077574 - Unknown
077574 - 077800 - Blank Space
077800 - 0985F0 - Unknown
0985F0 - 0A0000 - Blank Space
0A0000 - 22438A - Sprite / Gaphisms
22438A - 227000 - Blank Space
227000 - 227337 - Unknown
227337 - 227562 - Sound Test Strings
227562 - 22BC06 - Unknown
22BC06 - 22C000 - Blank Space
22C000 - 2B3280 - Unknown
2B32B0 - 2B3470 - Palettes Pointers
2B3470 - 2B4B70 - Palettes
2B4B70 - 2B4D34 - Level Headers Addresses Pointers
2B4D34 - 2B4F50 - Level Headers Addresses
2B4F50 - 2B52B4 - Level Headers
2B52B4 - 2CD38E - Unknown (but contains Pointers / Data, alternatively)
2CD38E - 2CD6C2 - Practice Strings 1
2CD6C2 - 2CDF68 - Unknown
2CDF68 - 2CE002 - Practice Strings 2
2CE002 - 2D9980 - Unknown (but contains Pointers / Data, alternatively)
2D9980 - 2D9A9A - Credits
2D9A9A - 2DA05E - Unknown (but contains Pointers / Data, alternatively)
2DA05E - 2F83DA - Levels Sprite Layout
2F83D7 - 300000 - Blank Space


2. Text Strings

There are several text strings in the game. Although it is a very small part of the game, editing them *is* ROM hacking. The format is very simple : simply edit the strings in the ASCII view of your hex Editor !

Text Strings Locations:
03FDEA - 03FE6A - Menu Strings
07738A - 077554 - Level Select (cheat) Strings
227337 - 227562 - Sound Test Strings (music names)
2CD38E - 2CD6C2 - Practice Strings 1 2CDF68 - 2CE002 - Practice Strings 2


3. Level Palettes / Level Palettes Pointers

A. Level Palettes Pointers:

In Chaotix, levels use 4 palettes : morning, day, evening and night. For each palette, there is a 2 byte pointer, so, 8 bytes for each level. The pointer indicates how many bytes away from the begining of the current pointer is the palette located.

Palettes Pointers are located at : 2B32B0 - 2B3470

Here are the known pointers :
2B32B8: Botanic Base 1
2B32C0: Botanic Base 2
2B32C8: Botanic Base 3
2B32D0: Botanic Base 4
2B32D8: Botanic Base 5
2B32F0: Speed Slider 1
2B32F8: Speed Slider 2
2B3300: Speed Slider 3
2B3308: Speed Slider 4
2B3310: Speed Slider 5
2B3328: Amazing Arena 1
2B3330: Amazing Arena 2
2B3338: Amazing Arena 3
2B3340: Amazing Arena 4
2B3348: Amazing Arena 5
2B3360: Techno Tower 1
2B3368: Techno Tower 2
2B3370: Techno Tower 3
2B3378: Techno Tower 4
2B3380: Techno Tower 5
2B3398: Marina Madness 1
2B33A0: Marina Madness 2
2B33A8: Marina Madness 3
2B33B0: Marina Madness 4
2B33B8: Marina Madness 5
2B33D0: Isolated Island 1
2B33D8: Isolated Island 2
2B33E0: Isolated Island 3
2B33E8: Isolated Island 4
2B3400: Introduction 1
2B3408: Introduction 2
2B3410: Introduction 3
2B3418: Introduction 4
2B3420: Introduction 5
2B3428: Practice
2B3438: World entrance
2B3448: Final Boss

B. Level Palettes:

Once you are at a location indicated by a pointer, you can start editing the palette. In fact, the 32X uses 5 sub-palettes for a level, not one. The first sub-palette is for sprites however, so, here, we will have 4 sub-palettes defined. Each sub-palette contains 16 colors, and each color use two bytes. So, one sub-palette use 32 bytes, and the 4 sub-palettes (so, one palette) use 128 bytes.

The format for each color is : 0B GR

Color values work as follow :
Red and blue : 0 = 0 ; 2 = 32 ; 4 = 79 ; 6 = 111 ; 8 = 144 ; A = 176 ; C = 223 ; E = 255
Green : 0 = 0 ; 2 = 39 ; 4 = 72 ; 6 = 111 ; 8 = 144 ; A = 163 ; C = 216 ; E = 255

As you can see, values go 2 by 2. If you add one to the value of the color, then the color will flicker. For example, a red value of 5 will set the red component of the color to 79, but it will flicker.

Level Palettes are located at : 2B3470 - 2B4B70

4. Level Headers / Level Headers Pointers

Each level has a header. This header contains several pieces of data, such as starting position, level dimensions, etc. Each level header is 16 bytes long and is referenced by an address. However, addresses are referenced by pointers !

A. Addresses Pointers:

Addresses Pointers look like the Palettes Pointers. For each address, there is a 2 byte number indicating how many bytes away from the begining of the current pointer is the address located at. Note that for each level, there are 4 pointers, because there are 4 time periods.

Addresses Pointers are located at : 2B4B70 - 2B4D34

B. Level Headers Addresses:

Level Headers Addresses are a bit strange. You have to substract 700000h to the actual value. This is because of the way the Genesis deals with the memory when it works with the 32X. Well... Level Addresses are 4 bytes long. Once you substracted 700000h, you can go to the location you found, in order to edit the level header.

Level Header Addresses are located at: 2B4D34 – 2B4F50

C. Level Headers:

Each level header use 16 bytes. Here is the format (partial):

SX SX SY SY ?? ?? LW LW ?? ?? LH LH ?? ?? ?? ??

SX, SY (Start X, Start Y): Player starting position (from B8 for SX, and from 6C for SY)
LW, LH (Level Width, Level height): Indicates the width and height of the level

Level Headers are located at: 2B4F50 – 2B52B4

The Chaotix Hacking Guide - ROM
Made by David "Chaos" Declerck
For The Sonic Stuff Research Group
Contact me :
Davdeclerck@aol.com