I have been learning m68k assembly recently with some help from the nice guides in the wiki. I'm starting with Sonic 1, generally implementing the bug fixes and learning as I go. I thought of a relatively simple feature I'd like to add, the ability to restart a level by pressing a button when paused, like in CD. I managed to track down the specific code that handles the button inputs in the pause loop and moved instructions around so that the A button can be pressed even with debug mode off. Having done that I started to dig deep into the disassembly looking for how the game restarts a level when you die. After a while of trying out different labels like 'KillSonic', 'Sonic_Death' and other similar-sounding instructions I realized it wasn't going to be as easy as "calling a function". So TL;DR: where and how does Sonic 1 restart levels? How can I replicate it in my own label? (by 'label' I mean where you begin 'functions', like "Pause_Reset:", with the colon at the end, but no '@' sign to the left) Here's the code I have right now, please excuse the mess, I like to comment out things before I'm certain they're working: Spoiler Code (Text): Pause_Loop: move.b #$10,(v_vbla_routine).w bsr.w WaitForVBla ; now the A button will reset even outside of debug mode btst #bitA,(v_jpadpress1).w ; is button A pressed? bne.s Pause_Reset tst.b (f_slomocheat).w ; is slow-motion cheat on? beq.s Pause_ChkStart ; if not, branch ;btst #bitA,(v_jpadpress1).w ; is button A pressed? beq.s Pause_ChkBC ; if not, branch ;move.b #id_Title,(v_gamemode).w ; set game mode to 4 (title screen) ;nop ;bra.s Pause_EndMusic ; =========================================================================== ; TODO: make reset just reload the level Pause_Reset: move.b #id_Title,(v_gamemode).w ; set game mode to 4 (title screen) nop bra.s Pause_EndMusic As you can see all I have done for now was separate the game restart functionality, so I could work on it more clearly. Also I'm new to these forums, so please tell me if I did anything wrong.