95DosBox wrote:I remember most of the C64 games were programmed in pure BASIC. What programs did you use to crack into the C64 game? Was ther […]
Show full quote
SaxxonPike wrote:I loved a couple games on the 64 enough to learn how to code 6502, crack a couple and assemble them into a two game cartridge.
Legacy of the Ancients and Legend of Blacksilver are pretty outstanding for their day.
http://csdb.dk/release/?id=128480
I remember most of the C64 games were programmed in pure BASIC. What programs did you use to crack into the C64 game? Was there some special program to decrypt the BASIC language file?
How did you transfer the program to the cartridge? Are most cartridge games unprotected so you can dump them and run them on a floppy?
I know Lode Runner came on both the floppy version and the cartridge.
Maybe if there was some sort of cartridge to USB flash drive interface you could run any C64 image through it and dump the game using your PC into it. Then you could use the actual C64 hardware to play the games without the floppy delay.
BASIC is just tokenized. Meaning each key word is a single byte, and there's a few more for preserving line numbers. It's not encrypted at all. And the games that use BASIC pretty much have to keep the code in the open so the KERNAL can read it.
I used VICE's debugger to step through the code and Transmission to disassemble it outside the emulator. I wrote my own tool for decrypting EA's disk protection for Legacy, and I used VICE's debugger to use Epyx's own Vorpal system code to extract the data files from Legend. I also wrote my own program to assemble the EasyFlash cartridge file, and developed a file system driver that would replace the drivers in both games. (They were both custom, separate from most game code and pretty easy to replace.)
Lots of cartridge games are unprotected, but some use special tricks like writing to the ROM space. If it's a cartridge, nothing happens. But if it's a file loaded from disk, it's in RAM instead, and the program gets modified in memory. Some cartridges also have special banking hardware that needs to be converted.
Going from disk to cartridge is somewhat easy for single load games, but if there's any attempted access to the disk drive past the first load, it'll fail. There's also the issue with cartridge ROM replacing RAM, and that means you'd likely have to copy/decompress the whole game to RAM and magically turn off the cartridge. I did this with my EasyFlash driver, but not all cartridges have the hardware to do this. You need to be able to control a pin on the cartridge slot via hardware.
Funny you mention USB to Cartridge interface: the 1541 Ultimate cartridge is just that. I just bought one. It plugs in the cartridge slot, and can connect to both the serial (disk) interface and tape interface, and emulate both a datasette drive and a 1541 drive, as well as most cartridge images. A shame it can't allow EasyFlash images to be written to- my cartridge conversion of the two games listed above saves games right to the cartridge, and that doesn't work on the 1541u.