Sonic and Sega Retro Message Board: Chaotix Hacking (formerly Chaotix Level Editing) - Sonic and Sega Retro Message Board

Jump to content

Hey there, Guest!  (Log In · Register) Help
Loading News Feed...
 

Chaotix Hacking (formerly Chaotix Level Editing) In case you haven't noticed what I'm doing to the SCHG page...

#136 User is offline Andlabs 

Posted 16 July 2010 - 12:01 AM

  • 「いっきまーす」
  • Posts: 2069
  • Joined: 11-July 08
  • Gender:Male
  • Project:Writing my own MD/Genesis sound driver :D
  • Wiki edits:7,061
Ok so the Special Stage's draw distance is a variable which can easily be changed; in this case I increased it from the default $15C0 to $4000. (As always, level select is on by default.) I have the functions that actually prepare for rendering disassembled now (and I already converted one to pseudo-C++), so I hope to get the layout format nailed by summer's end smile.png
This post has been edited by Andlabs: 16 July 2010 - 12:01 AM

#137 User is offline Hanoch 

Posted 16 July 2010 - 12:07 AM

  • Also known as TheKnock, Birashot
  • Posts: 491
  • Joined: 01-June 08
  • Gender:Male
  • Location:Israel
  • Project:everything
  • Wiki edits:8
Seems to lag the special stages a bit. Also before the first end (after you get the first 6 spheres) before the COOL message appeared, I could see beyond the pipe a different level layout, and then it cleared itself when the COOL message appeard and afterwards it redrew the layout.

I don't know if this could help you, but maybe you should try cracking the sonic 2 special stage format first?

#138 User is offline Andlabs 

Posted 16 July 2010 - 12:14 AM

  • 「いっきまーす」
  • Posts: 2069
  • Joined: 11-July 08
  • Gender:Male
  • Project:Writing my own MD/Genesis sound driver :D
  • Wiki edits:7,061
Yeah. In my tests, there appear to be two layout objects: one containing the layouts for all the stages (this confirms that part) in a continuous chunk and one that's a continuous chunk of goal pieces; the two are swapped when you complete one area/start the next. The draw distance increasing would cause lag because the game is trying to draw more in one frame, and that second of the next level showing up is a result =P

#139 User is offline Andlabs 

Posted 21 July 2010 - 01:14 AM

  • 「いっきまーす」
  • Posts: 2069
  • Joined: 11-July 08
  • Gender:Male
  • Project:Writing my own MD/Genesis sound driver :D
  • Wiki edits:7,061
CODE
CART:2081DFA SSLayoutOffsets:.data.w h'FFC8    ; DATA XREF: CART:208006Co
CART:2081DFA                                ; goal
CART:2081DFC                 .data.w h'E89A    ; 1.1
CART:2081DFE                 .data.w h'E9B2    ; 1.2
CART:2081E00                 .data.w h'EAB6    ; 2.1
CART:2081E02                 .data.w h'ED74    ; 2.2
CART:2081E04                 .data.w h'EF36    ; 3.1
CART:2081E06                 .data.w h'F076    ; 3.2
CART:2081E08                 .data.w h'F25C    ; 4.1
CART:2081E0A                 .data.w h'F3D8    ; 4.2
CART:2081E0C                 .data.w h'F57C    ; 5.1
CART:2081E0E                 .data.w h'F8AC    ; 5.2
CART:2081E10                 .data.w h'FB54    ; 6.1
CART:2081E12                 .data.w h'FD52    ; 6.2


Yep, once I figure out what these offset from (or if they are offsets), I will have this special stage format nailed. (Drop the $20 from the CART segment address to get the ROM address. This comes from a master layout system pointer list that I have to deconstruct fully; for interested eyes it's at ROM $80060.)
This post has been edited by Andlabs: 21 July 2010 - 01:15 AM

#140 User is offline Andlabs 

Posted 21 July 2010 - 08:54 PM

  • 「いっきまーす」
  • Posts: 2069
  • Joined: 11-July 08
  • Gender:Male
  • Project:Writing my own MD/Genesis sound driver :D
  • Wiki edits:7,061
CODE
ROM:06005ED8; if a command does not specify that it takes a byte argument then a byte 0 must follow the command byte and preceed a offset/word argument
ROM:06005ED8 off_6005ED8:    .data.w sub_6005E84 - loc_6005E72; DATA XREF: sub_6005E4E+1Co
ROM:06005ED8                                ; 0 byte offset - nextpos += offset; r13[byte].w = somefunction()
ROM:06005EDA                 .data.w sub_6005E90 - loc_6005E72; 2 - stop
ROM:06005EDC                 .data.w sub_6005E9C - loc_6005E72; 4 offset - gosub (nextpos + offset)
ROM:06005EDE                 .data.w sub_6005EA8 - loc_6005E72; 6 offset - nextpos += offset
ROM:06005EE0                 .data.w sub_6005EB0 - loc_6005E72; 8 byte offset - r13[byte].w--; if (r13[byte].w != 0) nextpos += offset
ROM:06005EE2                 .data.w sub_6005EC0 - loc_6005E72; $A byte word - r13[byte].w = word
ROM:06005EE4                 .data.w sub_6005EC8 - loc_6005E72; $C byte word - r13[byte].b = (word & 0xFF)
ROM:06005EE6                 .data.w sub_6005ED0 - loc_6005E72; $E byte - r13[5].b = byte (TODO)
So apparently Chaotix has some sort of bytecode for special stage events. Here's an example:
CODE
ROM:06006ABC SS_GoalChain:   .data.b 4            ; DATA XREF: ROM:06005018o
ROM:06006ABC                                ; ROM:off_6005028o
ROM:06006ABC                                ; DONE
ROM:06006ABC                                ; loc_6005E68
ROM:06006ABC                                ; so begins the end of stage tests
ROM:06006ABC                                ; this will do the check and reroute the engine if the check fails
ROM:06006ABD                 .data.b 0
ROM:06006ABE                 .data.w sub_6006AE8 - byte_6006AC0; DONE
ROM:06006AC0 byte_6006AC0:   .data.b 4            ; DATA XREF: ROM:06006ABEo
ROM:06006AC0                                ; if it succeeds, the engine will fall here
ROM:06006AC1                 .data.b 0
ROM:06006AC2                 .data.w sub_6006CEA - byte_6006AC4; DONE
ROM:06006AC4 byte_6006AC4:   .data.b 4            ; DATA XREF: ROM:06006AC2o
ROM:06006AC5                 .data.b 0
ROM:06006AC6                 .data.w sub_6006B3C - byte_6006AC8; DONE
ROM:06006AC8 byte_6006AC8:   .data.b 4            ; DATA XREF: ROM:06006AC6o
ROM:06006AC9                 .data.b 0
ROM:06006ACA                 .data.w sub_6006B20 - byte_6006ACC; DONE
ROM:06006ACC byte_6006ACC:   .data.b 4            ; DATA XREF: LoadSpecialStageStuff+116o
ROM:06006ACC                                ; ROM:off_6005E20o ...
ROM:06006ACC                                ; DONE
ROM:06006ACD                 .data.b 0
ROM:06006ACE                 .data.w sub_6006BC8 - byte_6006AD0; DONE
ROM:06006AD0 byte_6006AD0:   .data.b 4            ; DATA XREF: ROM:06006ACEo
ROM:06006AD1                 .data.b 0
ROM:06006AD2                 .data.w sub_6006B3C - byte_6006AD4; DONE
ROM:06006AD4 byte_6006AD4:   .data.b 4            ; DATA XREF: ROM:06006AD2o
ROM:06006AD5                 .data.b 0
ROM:06006AD6                 .data.w sub_6006C4A - byte_6006AD8; DONE
ROM:06006AD8 byte_6006AD8:   .data.b 2            ; DATA XREF: ROM:06006AD6o
ROM:06006AD9                 .data.b 0
All the bytecode programs are static in ROM, so I read through them all (there are chains of them) and now there should be only very specific cases in which I wouldn't be able to find a routine that accesses the special stage layout chunk, which is copied and rebased to a piece of SDRAM because it contains one pointer that points to a list of variables (ok why?).

EDIT
FFFFFFFFFFFFFFFFFF Turns out I now need to hunt down those cases because I still can't find the accesses I need
This post has been edited by Andlabs: 21 July 2010 - 08:57 PM

#141 User is offline nineko 

Posted 22 July 2010 - 08:21 PM

  • I am the Holy Cat
  • Posts: 5238
  • Joined: 17-August 06
  • Gender:Male
  • Location:italy
  • Project:I... don't even know anymore :U
  • Wiki edits:5,251
QUOTE (Hanoch @ Jul 16 2010, 07:07 AM)
I don't know if this could help you, but maybe you should try cracking the sonic 2 special stage format first?
I thought it was cracked since years ago, Qjimbo even made a (text mode) special stage viewer...

#142 User is offline Sik 

Posted 22 July 2010 - 10:32 PM

  • Sik is pronounced as "seek", not as "sick".
  • Posts: 6719
  • Joined: 17-March 06
  • Gender:Male
  • Project:being an asshole =P
  • Wiki edits:11
Didn't it use savestates? Meaning it only would read the Special Stage data from RAM, not ROM.

#143 User is offline nineko 

Posted 23 July 2010 - 03:09 AM

  • I am the Holy Cat
  • Posts: 5238
  • Joined: 17-August 06
  • Gender:Male
  • Location:italy
  • Project:I... don't even know anymore :U
  • Wiki edits:5,251
QUOTE (Sik @ Jul 23 2010, 05:32 AM)
Didn't it use savestates? Meaning it only would read the Special Stage data from RAM, not ROM.
Unless Qjimbo lied, he said ROM.

#144 User is offline Sik 

Posted 23 July 2010 - 04:02 AM

  • Sik is pronounced as "seek", not as "sick".
  • Posts: 6719
  • Joined: 17-March 06
  • Gender:Male
  • Project:being an asshole =P
  • Wiki edits:11
2008? Huh, I was talking about some much older tool... so yeah, I guess that's something else then.

  • 10 Pages +
  • ◄ First
  • 8
  • 9
  • 10
    Locked
    Locked Forum

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users