don't click here

Zoom! hacking and memory locations in common with Sonic

Discussion in 'Technical Discussion' started by saxman, Dec 17, 2021.

  1. saxman

    saxman

    Oldbie Tech Member
    About 13 years ago, I did a little Zoom hacking. Recently, I was playing this game again and decided to play with the hacking again for the fun of it. I couldn't find my notes, so I started writing new notes from scratch. I was able to remember a few small things and used those as a reference point. I'll post my hacking notes as they stand at the moment below.

    But what I found interesting was locations starting at $FFF600. It looks like Sega had some sort of common code that was used by multiple games, because these locations just happen to do the very same things as Sonic 1/2/3/&K. While a small thing, I thought it would be noteworthy.

    And now for the notes:

    ==========

    Code (Text):
    1. 00029F - Game mode when game is first booted.
    2.  
    3. 0002D4 - Initialize game mode 00
    4. 0002DA - Initialize game mode 04
    5. 0002E0 - Initialize game mode 08
    6. 0002E6 - Initialize game mode 0C
    7. 0002EC - Initialize game mode 10
    8. 0002F2 - Initialize game mode 14
    9. 0002F8 - Initialize game mode 18
    10. 0002FE - Initialize game mode 1C
    11.  
    12. 000AF4 - Pointer to SELECTOR menu with DEBUG OFF
    13. 000B04 - Pointer to SELECTOR menu with DEBUG ON
    14.  
    15. 000FC8 - SELECTOR menu with DEBUG OFF
    16.     Format:
    17.         Word: Function
    18.             0000 - Return to main menu
    19.                 000B68 - bra $a70
    20.             0001 - Play demo
    21.                 000B6C - bra $b7c
    22.             0002 - Debug toggle
    23.                 000B70 - bra $b84
    24.             0003 - Enter MUSIC MODE menu
    25.                 000B74 - bra $bac
    26.             0004 - Save demo
    27.                 000B78 - bra $b9c
    28.             0005 - Play demo
    29.                 000B7C - Effectively duplicates function 01
    30.                     move.b #$18, D0
    31.                     bra $b4c
    32.             0006 - Play demo
    33.                 000B80 - No $18 moved to D0 register
    34.                     bra $b4c
    35.         Byte: X position of text (in 8 pixel units)
    36.         Byte: Y position of text (in 8 pixel units)
    37.         Dword: Absolute address of text
    38.  
    39. 000A70 - Return to main menu
    40.  
    41. 000B7C - Play demo
    42.     move.b    #$18, D0
    43.     bra    $b4c
    44.  
    45. 000B84 - Debug toggle
    46.  
    47. 000BAC - Enter MUSIC MODE menu
    48.  
    49. 000B9C - Save demo
    50.     move.b    #$1c, D0
    51.     move.b    #$37, $fff167.l
    52.     bra    $b4c
    53.  
    54. 004DF8 - Is this the address where demo recordings get saved?
    55.    
    56.  
    57.  
    58. FFF000 - Word : Current level
    59. FFF004 - Word : Lives display value (player 1)
    60. FFF008 - Word : Number of squares left
    61. FFF00A - Word : Number of lives (player 1)
    62. FFF010 - Word : Go through enemies without dying (0000=disabled)
    63. FFF012 - Word : Time left in seconds
    64. FFF022 - Word : Rubber balls left (player 1)
    65. FFF028 - Word : Score x10 (player 1)
    66. FFF02E - Word : Sun effect count in seconds (player 1)
    67. FFF030 - Word : Move slowly (0000=disabled)
    68. FFF032 - Word : Number of times rubber balls used
    69. FFF034 - Word : Difficulty (0000=normal, otherwise hard)
    70. FFF10C - Word : Restart level (0000=no)
    71. FFF10E - Word : Bananna effect count in seconds
    72. FFF110 - Word : Hour Glass effect count in seconds
    73. FFF116 - Word : Show "GAME OVER" on status (player 2) (0000=no)
    74. FFF118 - Word : Disable controls and make invulnerable (player 1) (4000=yes, 8000=no)
    75. FFF166 - Byte : Debug mode enable (0x55 enables it)
    76.  
    77. FFF600 - Byte : Game mode (same as Sonic)
    78.         00 - Sega logo
    79.         04 - Start level
    80.         08 - Push Start Button screen
    81.         0C - Ending
    82.         10 - Intro
    83.         14 - Start level (from continue)
    84.         18 - Start level with demo playback
    85.         1C - Start level with demo recording
    86.  
    87. FFF602 - Byte : Controller 1 button hold logical (same as Sonic)
    88. FFF603 - Byte : Controller 1 button press logical (same as Sonic)
    89.  
    90. FFF604 - Byte : Controller 1 button hold (same as Sonic)
    91. FFF605 - Byte : Controller 1 button press (same as Sonic)
    92.  
    93. FFF606 - Byte : Controller 2 button hold logical (same as Sonic)
    94. FFF607 - Byte : Controller 2 button press logical (same as Sonic)
    95.  
    96. FFF608 - Byte : Controller 2 button hold (same as Sonic)
    97. FFF609 - Byte : Controller 2 button press (same as Sonic)
    98.  
    99. FFF60C - Byte : Show background (as is done during level intro) (00=no, 01=yes)
    100. FFF60E - Byte : Hide board (as is done when paused) (00=no, 01=yes)
     
    • Informative Informative x 5
    • List