Actions

SCHG How-to

Set up a Sonic 1 split disassembly

From Sonic Retro

(Original guide by Qjimbo / The Glowing Bridge)

Introduction and Overview

So, you want to modify Sonic 1? The first step for most people might be to download SonED1, or ESE II, and edit the ROM directly. However there is another way of ROM editing, called using a split disassembly. Here we are going to cover the basics of using a disassembly, and allow you the user to understand how they work, so you can get modifying Sonic 1!

Files and Useful Tools

For rebuilding the ROM from its split form.
For creating and editing the levels (a guide for SonLVL, another level editor, is available here).

Setting up the Project

1. Open the SonED2 rar file and extract it into a folder. I'll use C:\SonED2-1\ (For this you need WinRAR)
2. Now open the zip file containing the Git Sonic 1 disassembly and extract it to a subdirectory inside your chosen folder. In my case, this will be C:\SonED2-1\s1h\, and with that you're ready to go! The SonED2 project files can be found under C:\SonED2-1\s1h\SonED2 Projects.

Advantages over hex editing

  • One of the most common problems you run into with hex editing is when something doesn't fit, and has to be put at the end of the ROM, and all the pointers changed. This is incredibly wasteful. With a split disassembly everything is kept organized and pointers automatically change during the assembling process, so you can, for example, replace art with a larger file, assemble the ROM and everything will be adjusted accordingly.
  • As everything is in separate files, there is no extracting -> decompressing -> editing -> recompressing -> inserting into the ROM. All you have to do are the middle three steps, sometimes only the editing if files are compressed during the build.
  • Editing the code. While this might seem awkward, it's amazing how far a little bit of patience can go in terms of teaching yourself the basics of assembly. Editing in hex makes code editing a lot harder.

Possibilities

The possibilities are only as limited as the hardware and your imagination. You can edit the code of the game, the artwork, the level layouts, the music, anything! All these parts of the game are labelled and in separate files. This is why I believe more people should be aware of the advantages of using a split disassembly, even if they plan not to even touch the assembly code.

SCHG How-To Guide: Sonic the Hedgehog (16-bit)
Fixing Bugs
Fix Demo Playback | Fix a Race Condition with Pattern Load Cues | Fix the SEGA Sound | Display the Press Start Button Text | Fix the Level Select Menu | Fix the Hidden Points Bug | Fix Accidental Deletion of Scattered Rings | Fix Ring Timers | Fix the Walk-Jump Bug | Correct Drowning Bugs | Fix the Death Boundary Bug | Fix the Camera Follow Bug | Fix Song Restoration Bugs | Fix the HUD Blinking | Fix the Level Select Graphics Bug
Changing Design Choices
Change Spike Behavior | Fix Special Stage Jumping Physics | Improve the Fade In\Fade Out Progression Routines | Fix Scattered Rings' Underwater Physics | Remove the Speed Cap | Port the REV01 Background Effects | Port Sonic 2's Level Art Loader | Retain Rings Between Acts | Add Sonic 2 (Simon Wai Prototype) Level Select | Improve ObjectMove Subroutines
Adding Features
Add Spin Dash ( Part 1 / Part 2 / Part 3 / Part 4 ) | Add Eggman Monitor
Sound Features
Expand Music Index From $94 to $9F | Extend Music Slots | Play Different Songs Per Act | Expand Music Index to Start at $00 | Port Sonic 2 Final Sound Driver | Port Sonic 3's Sound Driver
Extending the Game
Load Chunks From ROM | Add Extra Characters | Make an Alternative Title Screen | Use Dynamic Tilesets | Make GHZ Load Alternate Art | Add a New Zone | Set Up the Goggle Monitor | Add New Moves | Add a Dynamic Collision System | Dynamic Special Stage Walls System | Extend Sprite Mappings and Art Limit | Enigma Credits
Miscellaneous
Convert the Hivebrain 2005 Disassembly to ASM68K
Split Disassembly Guides
Set Up a Split Disassembly | Basic Level Editing | Basic Art Editing | Basic ASM Editing (Spin Dash)