Hi all,
Just re-posted Disc018 in Section 3 after adding my new disc copy of Lode Runner.
If anyone remembers, In its old disc hacked form you could only load and play one of the blocks of 40 screens at a time and any edited screens you created could only be saved to tape - although they could then be transferred to disc and loaded, but that was a pain.
So... to get Lode Runner working from disc...
Firstly, using the *DISC, *DR.0, *DIR $, ?&DFE=&97 (or &17 if using 1770 DFS) and ?&1082=&FF routine (borrowed from the recent posting of Blockbusters), I have managed to get Lode Runner to load the next level from disc.
The original tape version seemed to try to load the file LEVELS, so I have called the 3 extra blocks of 40 screens LEVEL2, LEVEL3 and LEVEL4 and I have added some code to make the game cycle through these when you select the LOAD option and after LEVEL4 return to load LEVEL2 again and so on, Shame the author didn't include the first 40 screens as a LEVEL1 file, but I have left it as is it as there is no room on this disc to add anything else.
So when you select the LOAD option my code moves all code between &D00-&1200 up to &7600-&7B00 which is at the bottom of the screen but hidden with a mask routine blanking out the bottom of the screen whilst the code is there.
Then after the LEVEL file is loaded (with the routine listed above) the code is moved back from &7600 to &D00 and the code at &7600 is removed and another screen mask routine puts the screen back to normal ready for the game.
I have also included a hidden bit of BASIC code that is stored at &400 which is run upon the main game loading which include a ON ERROR routine that will move the code from &7600 down to &D00 and restart the game should you try to load a LEVEL from a disc that doesn't have it, or try to save your screens to a disc that is write-protected or the LEVEL2 file is locked. Otherwise the game would just crash/break etc. Code is now stored between &138 and &17C which will print "DISC ERROR" in red and then return you to the menu after a few seconds.
The screen editor will save your screens to the file LEVEL2. Upon loading the main game you can swap discs and any edited screens can be saved to that disc and then you can easily reload them at any time in the future by loading the main game and then swapping discs and choosing the LOAD option which will load the LEVEL2 file from whatever disc is in the drive. Again, the ON ERROR routine will kick in if you put in a wrong disc and allow you to try to load the LEVEL2 file again if you put in another disc and select LOAD.
BTW if you want to cheat, then *LOAD LEVEL? and then a simple ?&EA at &1915 and at &1916 (saving the file to a blank disc) stops you from dying.
I used the cheat program to select screen 040 and complete it, and the program automatically loaded in LEVEL2 and you keep your score plus get an extra man for completing the previous level - just like the instructions said. BTW, another nifty way to cheat is to load a second copy of the game on another emulator (either on the same or an adjacent computer) and use the EDIT option and load in the screen you are about to play. It will show you all the hidden things like traps and escape ladder etc.
If you manually load the next LEVEL file with the LOAD option then your score is zeroed, again as per instructions.
Oh, and when you have completed screen 160 (screen 40 in LEVEL4) the game re-loads LEVEL2 and starts again with screen 001 of that block. A bit confusing as I would have expected that to be screen 041 and not 001, but the code in the main game checks for completion of screen 040 and then loads the next level file, so that may be limitations of the game/code written.
I have hacked the graphical text to replace "PRESS PLAY ON TAPE" with "LOADING LEVEL2" etc and "PRESS RECORD THEN RETURN" with "SAVING SCREENS TO DISC".
I have also amended the instructions to now include loading/saving from disc and the limitations of doing so.
This version also works correctly under BeebEm with DFS 1.20 and Watford E00. It also works under B-em with DFS 0.90 and DFS 2.26 (1770). It will require *DTRAP on a real BBC with a Datacentre fitted.
Hopefully, it works correctly, and I ask if anyone will playtest it and let me know if there are any errors. I have played various screens for the past week, but I am not really that good at this game. If it is OK then maybe it could be used for a high score challenge too.
Oh, and if anyone does happen to have a full tape copy of this game they can post here then I will be able to check that all the screens are correct. All copies of the final screen of LEVEL4 that contained this level had your man fall from the top and go through the bottom of the screen crashing the game which can't be right, surely?. I have edited this screen to match 0xCode's Electron version for this one screen and all seems OK.
Also, most old copies of this game I have seen have the game crash after screen 040 during whichever LEVEL is loaded as it tries to load the next level etc. A simple RTS or JMP to the menu over the load routine would probably have cured that.
Anyway, I think I have got this play as closely as possible to the tape version.
Lastly, you would have thought the game would have ended with a "Congratulations" message on completing the last screen (160) but it just plays on from screen 001 in LEVEL2 until you get killed.
Mick.
Just re-posted Disc018 in Section 3 after adding my new disc copy of Lode Runner.
If anyone remembers, In its old disc hacked form you could only load and play one of the blocks of 40 screens at a time and any edited screens you created could only be saved to tape - although they could then be transferred to disc and loaded, but that was a pain.
So... to get Lode Runner working from disc...
Firstly, using the *DISC, *DR.0, *DIR $, ?&DFE=&97 (or &17 if using 1770 DFS) and ?&1082=&FF routine (borrowed from the recent posting of Blockbusters), I have managed to get Lode Runner to load the next level from disc.
The original tape version seemed to try to load the file LEVELS, so I have called the 3 extra blocks of 40 screens LEVEL2, LEVEL3 and LEVEL4 and I have added some code to make the game cycle through these when you select the LOAD option and after LEVEL4 return to load LEVEL2 again and so on, Shame the author didn't include the first 40 screens as a LEVEL1 file, but I have left it as is it as there is no room on this disc to add anything else.
So when you select the LOAD option my code moves all code between &D00-&1200 up to &7600-&7B00 which is at the bottom of the screen but hidden with a mask routine blanking out the bottom of the screen whilst the code is there.
Then after the LEVEL file is loaded (with the routine listed above) the code is moved back from &7600 to &D00 and the code at &7600 is removed and another screen mask routine puts the screen back to normal ready for the game.
I have also included a hidden bit of BASIC code that is stored at &400 which is run upon the main game loading which include a ON ERROR routine that will move the code from &7600 down to &D00 and restart the game should you try to load a LEVEL from a disc that doesn't have it, or try to save your screens to a disc that is write-protected or the LEVEL2 file is locked. Otherwise the game would just crash/break etc. Code is now stored between &138 and &17C which will print "DISC ERROR" in red and then return you to the menu after a few seconds.
The screen editor will save your screens to the file LEVEL2. Upon loading the main game you can swap discs and any edited screens can be saved to that disc and then you can easily reload them at any time in the future by loading the main game and then swapping discs and choosing the LOAD option which will load the LEVEL2 file from whatever disc is in the drive. Again, the ON ERROR routine will kick in if you put in a wrong disc and allow you to try to load the LEVEL2 file again if you put in another disc and select LOAD.
BTW if you want to cheat, then *LOAD LEVEL? and then a simple ?&EA at &1915 and at &1916 (saving the file to a blank disc) stops you from dying.
I used the cheat program to select screen 040 and complete it, and the program automatically loaded in LEVEL2 and you keep your score plus get an extra man for completing the previous level - just like the instructions said. BTW, another nifty way to cheat is to load a second copy of the game on another emulator (either on the same or an adjacent computer) and use the EDIT option and load in the screen you are about to play. It will show you all the hidden things like traps and escape ladder etc.
If you manually load the next LEVEL file with the LOAD option then your score is zeroed, again as per instructions.
Oh, and when you have completed screen 160 (screen 40 in LEVEL4) the game re-loads LEVEL2 and starts again with screen 001 of that block. A bit confusing as I would have expected that to be screen 041 and not 001, but the code in the main game checks for completion of screen 040 and then loads the next level file, so that may be limitations of the game/code written.
I have hacked the graphical text to replace "PRESS PLAY ON TAPE" with "LOADING LEVEL2" etc and "PRESS RECORD THEN RETURN" with "SAVING SCREENS TO DISC".
I have also amended the instructions to now include loading/saving from disc and the limitations of doing so.
This version also works correctly under BeebEm with DFS 1.20 and Watford E00. It also works under B-em with DFS 0.90 and DFS 2.26 (1770). It will require *DTRAP on a real BBC with a Datacentre fitted.
Hopefully, it works correctly, and I ask if anyone will playtest it and let me know if there are any errors. I have played various screens for the past week, but I am not really that good at this game. If it is OK then maybe it could be used for a high score challenge too.
Oh, and if anyone does happen to have a full tape copy of this game they can post here then I will be able to check that all the screens are correct. All copies of the final screen of LEVEL4 that contained this level had your man fall from the top and go through the bottom of the screen crashing the game which can't be right, surely?. I have edited this screen to match 0xCode's Electron version for this one screen and all seems OK.
Also, most old copies of this game I have seen have the game crash after screen 040 during whichever LEVEL is loaded as it tries to load the next level etc. A simple RTS or JMP to the menu over the load routine would probably have cured that.
Anyway, I think I have got this play as closely as possible to the tape version.
Lastly, you would have thought the game would have ended with a "Congratulations" message on completing the last screen (160) but it just plays on from screen 001 in LEVEL2 until you get killed.
Mick.
Statistics: Posted by Michael Brown — Mon Jul 29, 2024 1:09 pm