Ghouls and Ghosts is available as 2 single-sided Pasti images. It works but I want to put the game in 1 Double Sided disk in plain .ST format. I know Automation hacked and packed this in Automation 199 but I thought I could do it for my own interest. The Automation version still has the annoying please insert disk B, press space to continue message which is easy to remove.
The problem is that when copied to one double sided disk the enemy sprites do not appear and when daggers are thrown they do not appear!
The 2 main files to change are: auto\boot.prg and ghouls.dat
This game uses an identical protection to Indiana Jones as described here:
http://www.markus-fritze.de/posts/2011/ ... t_crusade/
Does anyone know the proper name for this copy protection?
There is a CRC error on disk 1 track 79, sector 6.
I thought that the magic key might be read from track 78, stored in memory (dc.l) and then checked later in the game but that seems to not be the case.
I disassembled boot.prg using Easy Rider and put the key\magic value in the memory location and the old MOVE.L #0,D0 ; success.
I then reassembled boot.prg and put it on my double sided disk image, but that didn't work. I even merged the track buffer into the new boot.prg and that didn't work either. I'm stumped.
There is also a rather curious bit in this copy protection:
Code: Select all
0001888c: b0bc 0000 1784 CMP.L #$1784,D0 ;6020 bytes
00018892: 6e00 000a BGT *+$C [$1889E]
This jumps to the fail case if the track is greater than 6020 bytes long, but a track would never be that length. Surely if the disk duplicator had written a long track which couldn't normally be written by an ST then this should be BLT fail.
Even 11 sectors would be 512*11=5632 bytes. I'm sorry if I'm missing something obvious here.
GHOULS.DAT doesn't read tracks 78 or 79 according to SteemDebug (Pasti Breakpoints). If we boot using the original disk 1, then insert the double sided copy as disk 2 and press space to continue the game works perfectly so all copy protection checks must have passed by that point.