Actions

SCHG

Sonic Jam 6/ROM Editing

From Sonic Retro

Revision as of 12:28, 31 October 2008 by Shibunoa (talk | contribs)
SCHG: Sonic Jam 6
Main Article
ROM Editing
Editing ROM
Values
Functions
Title Screen
Levels
Bonus Level
Sound Driver
Play BGM
Play SFX
RAM Editing
Editing RAM
Art Editing
Editing Art
Title Screen
Title Screen Palette
Levels
Level Palettes
Value Reference
Value Reference
Level Map Numbers
SFX Numbers

Values

Offset Description Note
0x1430 Array which contains music numbers for each map (WORD ARRAY).
0x0ad2 Demo properties (structure array, 0xe bytes long).
  • 0 (w), Level map number
  • 2 (w), Level scroll page to start from (but the next scroll page won't be the next to this!)
  • 4 (w), ???
  • 6 (w), ???
  • 8 (w), Player start X position + 128
  • A (w), Player start Y position + 128
  • C (w), ???
0x0dde Level map world-level number (structure array, 0x4 bytes long).
  • 0 (w), World number tile
  • 2 (w), Level number tile
  • To put a number just write <number> + 0x1A, zero extended

Functions

Title Screen Functions

Button check

Offset Description
ROM:00000B18 title_screen_check_buttons CODE XREF: sub_84E+15C�p.
ROM:00000B18 btst #5,(word_FF001C).l ; Check C button.
ROM:00000B20 bne.w loc_B4C ; If it's pressed, branch.
ROM:00000B24 btst #7,(word_FF001C).l ; Check Start button.
ROM:00000B2C bne.w loc_B4C ; If it's pressed, branch.
ROM:00000B30 btst #6,(word_FF001C).l ; Check A button.
ROM:00000B38 bne.w loc_B4C ;If it's pressed, branch.
ROM:00000B3C btst #4,(word_FF001C).l ; Check B button.
ROM:00000B44 bne.w loc_B4C ; If it's pressed, branch.
ROM:00000B48 bra.w locret_B6A ; No button pressed, branch to this other one.

Level Functions

Bonus Level

Offset Instruction Comment
ROM:0000780A move.w d3,d0
ROM:0000780C mulu.w #$20,d0
ROM:00007810 cmpi.w #0,4(a6,d0.w)
ROM:00007816 bne.w loc_792A
ROM:0000781A cmpi.w #2,(word_FF0042).l Compare 2 with current level map number
ROM:00007822 beq.w loc_7836 If level map number is 2, branch
ROM:00007826 cmpi.w #5,(word_FF0042).l Compare 5 with current level map number
ROM:0000782E beq.w loc_7836 If level map number is 5, branch
ROM:00007832 bra.w loc_7842

As you can clearly see, level map number 2 and 5 are respectively the Level 1-1 bonus, and the Level 1-2 bonus. This makes the level not restart after exiting out of this level and returning to the main one, making it appear as a single level. Adding another level to the list should be as simple as adding a cmp instruction and branching accordingly.