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