The ED/FB level loader mr216@greenwich.ac.uk (Russell Marks) ---------------------- Games uploaded by Russell Marks Outrun Turrican Midnight Resistance Power Drift Gauntlet Afterburner Op. Thunderbolt Description by Russell Marks: Hmm. Possibly, but it'd involve a bit of hacking. The .DAT files have to be loaded on a speccy (or maybe on Z80 with the tape I/F) *with the original loader routine*. I usually just cut out the relevant bit, run it from basic on my +3 with a little M/C routine which gives it the right values and checks the load worked, save the files, and transfer those back to my PC, where I strip the +3DOS header and make sure the files are the right length (I think I screwed this up on Gauntlet BTW, and some of the graphics get a bit corrupted :-( ). I wrote a fairly lame README when I first added this level loader hack to xzx, which I uploaded to ijs along with (I think) Gauntlet and Op. Thunderbolt (or possibly Afterburner). Here it is: Details of the level loading mechanism -------------------------------------- The idea is that initially, a 48k snapshot - usually in .sna format - is loaded containing the game. Then, whenever the game would ordinarily load an extra section from tape, something like this happens; ... LD HL,address_to_load_data_at LD A,level_number DEFB 0EDh DEFB 0FBh ... This section will of course take the place of the original load-from-tape routine. The emulator then traps the opcode ED/FB, and loads a file at the specified address. Under xzx, the filenames are generated as follows (described as an sprintf() for clarity): sprintf(filename,"%s%d.dat",prefix,level_number); ...with the level_number being the value the A register had when the emulator trapped the opcode. In xzx, the prefix is taken from the 'basename' of the last snapshot loaded, e.g. "wibble.sna" -> "wibble". There is also provision for the re-loading of game-in-progress snapshots, such that you can directly supply the prefix used while specifying a snapshot to load, e.g. "game_name,my_game.sna". This will then read in game_name1.dat, game_name2.dat etc. as appropriate.