Up till now, the answer to that question was: Well, maybe, but only if the TAP/TZX file contains no non-standard blocks (i.e. blocks loaded by anything other than the ROM load routine) or headerless blocks, and if you're also willing to put in the time to figure out what the game's start address is.
So I'm pleased to announce that tap2sna.py just got a bit more reliable. It still requires standard speed, ROM-loaded blocks, but it can now handle headerless blocks, and with any luck it will also automatically figure out the game's start address. If you want to try it out, you'll need to grab the latest development version of SkoolKit from GitHub (either by cloning the repo, or by clicking the green Code button and selecting Download ZIP). Once you've done that, find a TAP file, and do the following:
Code: Select all
tap2sna.py --sim-load game.tap game.z80
Code: Select all
$ tap2sna.py --sim-load manic_miner.tap manic_miner.z80
Program: ManicMiner
Loading data block: 23755,69
Bytes: mmm
Loading data block: 22784,256
Bytes: mm1
Loading data block: 32768,32768
Simulation ended: PC=33792
Writing manic_miner.z80
Anyway, this functionality will be present in the next full release of SkoolKit (8.7).
As for non-ROM-loaded blocks, turbo loaders, and other custom loading schemes, well, I'll probably be looking at supporting those for SkoolKit 8.8. All in good time.