Caldor wrote: ↑Thu Feb 25, 2021 10:44 am
Btw, if a game can be in one PRG file, then a simple way to "crack" the game would be using the save to disk feature that some cartridges have.
This example shows how a cartridge can be used to make a save state for a C64 game. Its on the Ultimate 1541 II+, but it should be quite similar on the C64 core on the MiSTer. I might make a video on how to do it with the MiSTer.
https://www.youtube.com/watch?v=Lat9QPdHOtU&t=320s
So, idea is to load any C64 game, get past the point where it has crack intros and such, and then save the state of the game. The main issue here compared to the original version of the game is that it might then lack some intro screens. It can also be used for G64 games though.
I f.ex. have The Great Escape on its original floppy, then made a SCP file from it, and converted it to a G64 file. But you can load the game and once the game has started, you can make a save state. This way you practically cracked the game, but with no crack intro or anything. The downside here is that you will miss out on the intro screen I think. Pretty sure it had an intro screen.
Another downside to this though, is that it will probably end up making the PRG bigger than it has to be. It dumps the C64 RAM / state, and I do not think it cares whether the RAM is empty or not. So even a small game would end up being close to the max size PRG files can be. It should not matter much though as I think the MiSTer load PRGs directly into the RAM?
Not sure what method has been used so far... its probably even better than this I am guessing.
Indeed, that is what is called "freeze cracking" and of course is nice and simple, but the cracking part is somewhat of a misnomer as you suggested.
This is the quick and dirty method of achieving what we're after, but has a couple of drawbacks:
1. It looks a bit crap as the screen displays varying amounts of garbage as the program is unfrozen.
2. As the frozen file is not started at the precise start address (i.e. it starts at the point at which the freeze button was pressed), things that rely on correct IO register state and such can be broken, leading to corrupt gfx or sound. This actually happened quite frequently with freeze carts, but can be subtle and therefore go unnoticed.
However, the games in OL64 use an actual cracking approach to allow for clean startup of the games. I load up an image of the original media (TAP, D64, G64 etc, which are included in the Originals folder of the project) in an emulator, and then use it's inbuilt machine code monitor to step through the loader and find the games starting address after it has completed loading into the emulated C64's memory. I then dump most of the emulated C64's RAM to a file (either $0334 or $0400 upwards, which ends up in the Dumps folder along with a metadata XML file which documents the dump specifics, which I then convert to the Magic Desk CRT format, as well as both uncrunched and crunched PRGs using a custom tool and boot code I've written, making the files bootable in an emulator, or with a device such as the Kung Fu Fash, BackBit, Ultimate-1541, SD2IEC, Tapecart etc on real hardware.
I should also point out that none of the games in OL64 are based on scene releases with their intros removed, as distributing games extracted from scene releases is quite rightly frowned upon. This is why I created the OneLoad64 Games Collection which only uses images of original media as the source, with a couple of exceptions where I've had to use an unattributed scene release for something that was never officially unreleased (e.g. Mario Bros from Atarisoft).