These are installation instructions for hacks and ROMs on the "Mega Drive" / "Genesis".
As the screen is relative and non-invasive it is also compatible with 32x and Mega CD projects, although installation instructions won't be provided for these.
The splash screen itself is just under 25kb, showing the SHC logo and the web address for access.
(Please note that the above was recorded for SHC2021 and as such there may be minor differences for subsequent years.)
Download: Here
Place the screen in your disassembly folder and include it into the source somewhere (preferably near the end):
--- Sonic 1 ---
SHC: incbin "SHC_Sonic12.bin"
even
--- Sonic 2 ---
SHC: binclude "SHC_Sonic12.bin"
even
Now to make the screen run go to the title screen's code:
--- Sonic 1 (2005) and Sonic 2 (2007 & GIT) ---
TitleScreen:
--- Sonic 1 (GIT) ---
GM_Title:
Look for this line:
bsr.w ClearScreen
After that line, add this one:
jsr SHC
The screen is now installed and will run after the SEGA screen.
Download: Here
Place the screen in your disassembly folder and include it into the source somewhere (preferably near the end):
SHC: binclude "SHC_Sonic3K.bin"
even
Now to make the screen run, go to the title screen's code (Title_Screen
) and look for this line:
bsr.w Clear_DisplayData
After that line, add this one:
jsr SHC
The screen is now installed and will run before the SEGA screen.
The splash screen is designed to be non-invasive, has its own internal V-blank, backs up 68k RAM, obtains controller data on its own, clears VDP memory once it is finished, and several other things. Everything it needs is internal and it requires nothing from your own game/hack.
Unfortunately the VDP registers cannot be backed up, and while we have had moderate success in using exploits to obtain some of the registers not all can be obtained. If you are working on a unique project where the registers are different somehow, or you've changed the engine to the point of a different VDP register setup, then this download is for you.
Download: Here
Place the screen in your source, and include it into the source somewhere:
--- asm68k ---
SHC: incbin "SHC_Advanced.bin"
--- AS ---
SHC: binclude "SHC_Advanced.bin"
Then insert a call to the screen where you want it to run:
jsr SHC
It is strongly advised that you call the splash screen at a time where the screen has gone black/blank and preferably where you would expect the VDP memory to be cleared. Finally, after the include line; you will need to insert a series of VDP register data bytes that the screen will restore with, here is an example:
SHC: incbin "SHC_Advanced.bin"
dc.b %00000100 ; $80
dc.b %01110100 ; $81
dc.b ((($C000)>>$0A)&$FF) ; $82
dc.b ((($A000)>>$0A)&$FF) ; $83
dc.b ((($E000)>>$0D)&$FF) ; $84
dc.b ((($F800)>>$09)&$FF) ; $85
dc.b %00000000 ; $86
dc.b $20 ; $87
dc.b %00000000 ; $88
dc.b %00000000 ; $89
dc.b $00 ; $8A
dc.b %00000000 ; $8B
dc.b %10000001 ; $8C
dc.b ((($FC00)>>$0A)&$FF) ; $8D
dc.b %00000000 ; $8E
dc.b $02 ; $8F
dc.b %00000001 ; $90
dc.b $00 ; $91
dc.b $00 ; $92
even
It is assumed that, if you are using the advanced splash screen, you will know what you are doing and what these registers mean. If you don't know the state of the registers before the splash screen starts then you can find out by adding a +2
to the splash screen call:
jsr SHC+2
When the splash screen is run the game should outright freeze with a solid GREEN screen. From here you can then use an emulator that shows VDP registers or make a savestate and get the VDP registers from there. This will be the data that's already in the registers before the screen starts and you can then update the VDP register table above. Once done remove the +2
and the screen should function and restore the VDP properly for your game/hack.
Graphics and Coding by MarkeyJester (based on logo by Cinossu)
Tested on real hardware by redhotsonic and Ace9921