Note: Information relative to ROM addresses come from Ristar (J)
Objects
----------------
Quick info: $40 bytes per object in RAM, Object list is located at $3C1E (rom), first object (ristar) is loaded at $C000 (ram). Similar to sonic engines for most part, except the SST is completely changed. Namely, the main object counter is now at $16, and a relative address to the object list is used instead of the object id.
Here's the list I have so far of the Ristar SST:
$00 - Relative Object address (word) $02 - Object Flags $03 - Animation frame (byte) $04 - ?? (frame specific mappings defined setting) (byte) $06 - Animation number $08 - Mappings offset $0E - VRAM offset $16 - Object subroutine counter (byte) $1A - Potential speed (inertia) (word, 8.8) $1C - X speed (word, 8.8) $1E - Y speed (word, 8.8) $20 - X position (long, 16.8) $24 - Y position (long, 16.8) $28 - Plane fixed X pos (word) $2A - Plane fixed Y pos (word) $2C - Object status bitfield (Ristar) $2D - Angle (byte)
RAM
----------------
Add $2478 to get the savestate address as usual. The list is obviously incomplete, but hopefully it'll grow with the time.
$0000 - 256x256 mappings (foreground) (Also temp cache Star Decompression routine) $4000 - 256x256 mappings (background) $8000 - 16x16 mappings (foreground) $9000 - Object Layout $A400 - Level layout (foreground) $A600 - Level layout (background) $B000 - Collision index $B200 - Secondary collision index? $B600 . 16x16 mappings (background) $C000 - Ristar Object area $E500 - Level ID (word) $E57D - Level ID (byte) $E502 - Level X Highest boundary $E504 - Level X Lowest boundary $E506 - Level Y Highest boundary $E508 - Level Y Lowest boundary $E51E - Ristar X Acceleration $E520 - Ristar Y Acceleration $E522 - Ristar Max X speed $E524 - Ristar Max Y speed $E526 - Ristar Jump Speed $E552 - Collision Hotspot Left angle $E556 - Collision Hotspot Right angle $EA00 - Game mode $EA02 - Game mode sub $EA18 - Last Played sound $EA3A - Joypad input $EA70 - Horizontal int code (usually 6 bytes) $EC00 - Sprite table mirror $EF00 - Palette $EF80 - Fade Palette $F000 - Camera Object area $FA00 - Underwater Palette $FA80 - Underwater Palette
ROM
----------------
$3C1E - Object list, one long per object $7D80 - Initial level position array, 4 words per level (Ristar X/Y, Camera X/Y) $810A - Level order array $11C1B8 - Level Palette pointer index. Relative addresses, uncompressed, one word per level. $129270 - 8x8 Level tiles (foreground) pointer index. 'Star' compressed. Absolute addresses, one long per level. $1292C8 - 8x8 Level tiles (background) pointer index, 'Star' compressed. Absolute addresses, one long per level. $11C764 - 16x16 level mappings (foreground) pointer index. Star compressed, absolute adresses, two longs per level* $11C814 - 16x16 level mappings (background) pointer index. Star compressed, absolute adresses, two longs per level* $163716 - 256x256 level mappings (foreground) pointer index, 'Star' compressed. Absolute addresses, one long per level. $1853B0 - 256x256 level mappings (background) pointer index, 'Star' compressed. Absolute addresses, one long per level. $188492 - Level Layout (foreground) pointer index, Uncompressed. Absolute addresses, one long per level. $188552 - Level Layout (background) pointer index, Uncompressed. Absolute addresses, one long per level. $5E4 - Object layout pointer index, Relative addresses, one word per "act". $41950 - Pattern load cues list pointer index. Relative addresses, one word per act. The Art listed for each level is Nemesis compressed. $1E97A - Collision Array 1, uncompressed $1ED3A - Collision Array 2, uncompressed $1F0FA - Angle/slope maps array, uncompressed $188BAA - Level Collision index, relative addresses, one word per "act", Star compressed. $188BAA - Secondary Level Collision index, relative addresses, one word per "act", Star compressed. $CC599 - Sound Driver *XX XX XX XX YY YY 00 00, where the X are the actual address and the Y the size
That's it for now. Decent explanations of everything to follow


00


