Thanks for the kind words, and for the clear report! You were right: the disk used a fast loader that only works on real Commodore drives, so on an SD2IEC it hung. v1.1 is up now: on a 1541/1571/1541U it still uses the fast loader, and on an SD2IEC (or anything else it can't speed up) it now loads through the standard KERNAL instead. It's the same disk for everyone, just slower to load on an SD2IEC. I've only been able to test it in emulation, so if you get a chance to try it on your SD2IEC, I'd love to hear whether it works for you.
I’ve tested the v1.1, by using my SD2IEC device, on which the latest official firmware from this website: https://www.sd2iec.de/ is installed. Unfortunately, I’m encountering some issues. It seems to work correctly in the VICE emulator, when true-drive emulation is turned off and virtual-device-traps are turned on. But on a real SD2IEC, there are problems.
While the game does load on my SD2IEC, it’s clear that something isn’t quite right during the loading-process, because the red LED on my SD2IEC lights up from time to time, which indicates a problem. When the game’s intro-screen finally appears, the music is missing, which is another sign, that something's wrong. Nevertheless, the game proceeds to the game-menu and I can even start the first level, but there are graphical glitches visible, because some sprites are corrupted. When I tried this, I tried it without using any of my cartridges, on the C64.
Then I also tried it, using my Final Cartridge 3, because the FC3’s intern fastloader is compatible with the SD2IEC and the overall loading-process is much faster then. But the same problems persist. Again the red LED on the SD2IEC lights up occasionally and graphical glitches almost always occur. I write "almost" because on one occasion, out of about ten loading-attempts, there were no graphical glitches, even though, I followed the exact same loading-procedure as always. It seems, the loader is somewhat unstable, causing issues most of the time, with only rare exceptions.
Something's clearly amiss. If the loader were entirely kernal based, there shouldn’t be any errors at all, when I load the game with a SD2IEC, but here we have some. There must be an incompatibility somewhere. Maybe it has to do with all these small files in the beginning of the load-process? Therefore I also tried to load the game in an C64 emulator, to let it load behind this critical point, where the red LED flashes and then freeze it, at the intro-screen (when the music is playing in this screen). But it didn't work, when I load this freeze on my SD2IEC then, because on the SD2IEC, the game don't go on loading, from this freeze (while it works on a real 1541 floppy and on my 1541-Ultimate). Therefore also this is not a solution.
Thanks for testing v1.1 so carefully, that's really useful. Since you got the FC3 speed-up, the game is using its new KERNAL loading path on your SD2IEC, as intended. I've now tested that path against a real 1541 drive in emulation. Every file arrived byte-perfect and the music and sprites were fine, so whatever's going wrong I think is specific to your setup, and I'd like to pin it down. Could you check a few things for me?
1. Your firmware version: OPEN15,8,15,"UI":INPUT#15,A$,B$:PRINTA$;B$:CLOSE15
2. When the red LED is blinking during the game, reset the C64 (not the drive) and type OPEN15,8,15:INPUT#15,A$,B$,C$,D$:PRINTA$;B$;C$;D$:CLOSE15. That shows which error the drive is reporting.
3. Does the LED blink steadily (an error waiting) or just flicker while it reads?
4. Is anything else connected to the serial bus (another drive, a printer), and is it switched on?
5. Are you running the .d64 mounted as an image, or files copied onto the card?
With that I should be able to find it.
Thanks again for your patience!
Hy. It has proven worthwhile for me, to take a closer look at this again, as it led me to update the SD2IEC firmware to the very latest version now, which is "SD2IEC V1.0.0atentdead0-57-ge2dd332". My previous version wasn't actually that old and I never had problems loading a game with it. Therefore I had assumed, that any subsequent updates, were relatively minor. An impression I also gathered from the texts on the SD2IEC website, to every of these updates. As it turns out, that wasn't the case, because now, with the latest firmware version, the situation looks a bit different, when it comes to your "Nuts & Dolts" game.
(A) when I now turn off my FC3 cartridge with the "kill" command in the BASIC screen and then load your game with the LOAD"boot",8,1 command, everything seems to work correctly at this time, because suddenly, I have music in the intro-picture now (which I didn't have before) and I see no more graphic-bugs in the sprites of the game, when I start the first level.
(B) when I load the game with the FC3 active, it loads alot faster, but sadly, there are the same problems, I had described earlier. Here the firmware update didn't change the situation. When loaded with the FC3, there's no music, when the intro-picture of the game is visible and the red LED blinks in that moment. When I press SPACE next, the game-menu appears and the red LED blinking is over. No more red LED and the menue is there (but also no music in the menu), but when I start the first level next, in the most cases (but not in all, as I already mentioned), I have some graphic-bugs on the walking sprites and they are partly destroyed. In rare cases (about one or two attempts out of ten), no graphic-bugs appear and it seems to work correctly, but there must still be a problem, because the loader seems to be unstable and already the missing music in the intro-pic and the game-menu, together with the blinking red LED, makes it clear, that something's wrong, when the game is loaded with an active FC3.
That’s how things stand in the moment. Fortunately, everything seems to run bug-free now, if I disable the FC3 cartridge. The downside is, that the loading of the game takes about six times as long then. Perhaps there’s still something that can be done here, given that I generally have no issues with 99% of C64 games, when loading them via the FC3 fastloader. I am sure, other FC3 users can confirm this, as the module's fastloader is highly compatible. Of course, it’s not strictly necessary, to make the game’s loader compatible to it, but it would be a nice touch, since the FC3 is quite widely used in the C64 scene (especially when SD2IEC's are involved, because its fastloader also works on SD2IEC) and the cartridge makes loading, as well as reloading in the gameplay, alot faster. You can consider, whether you want to do anything further, to make this work, or not? At the very least, the game does run correctly on SD2IEC's, when the latest firmware is used and when it's loaded without a FC3 and its fastloader (and probably also without any other fastloader cartridge). Downside is, that the loading-time is quite long now, but it’s still manageable, though.
To answer your other questions. Nothing else is connected to the serial-bus of my C64 and I run the game from the d64. Have not tried it, when all single files of the game are copied directly to the SD-card in an own "Nuts & Dolts" game-folder. By the way, in addition to the official SD2IEC firmware, there's also another firmware by the user "Thierer." It works with a wider range of C64 fastloaders, allowing also many demos, that load additional data (reloading), to work on SD2IEC. But sadly this firmware can only be used on specific SD2IEC models, as it requires a 128KB microcontroller. Both of my SD2IEC units, for example, use an ATmega644, which only has 64KB of memory and it seems, there simply isn't enough free space left, for the modifications included in Thierer's SD2IEC firmware. When it comes to games, however, it doesn't make that much of a difference, since for about 90% of all C64 games, you can also find versions that work with the official SD2IEC firmware. For demos, though, it makes a big difference.
Thanks Sparky-D, that nails it: the problem is the FC3's fastloader, not the SD2IEC. On a drive the fast loader can't drive, the game loads its tunes and sprite files through the KERNAL LOAD vector. The FC3 hooks that vector, and its loader doesn't cope with how the game calls it mid-game. There's a test build on the game page now, nuts-and-dolts-v1.2-test.d64, next to v1.1: it skips the vector and calls the ROM's LOAD directly. The FC3 still speeds up the boot, and the in-game loads (a tune, a few small files) run at normal speed. Could you try it with the FC3 switched on, and tell me whether the intro music plays, the LED stays quiet and level 1's sprites are clean? If it's good, it becomes v1.2.
Yes, when using the latest SD2IEC firmware, the issue was indeed related to the FC3. But just to clarify. With the older firmware, I had installed previously, the game wouldn't load correctly, even when the FC3 was disabled. So, updating the SD2IEC firmware was part of the solution. It was worth updating and I definitely wouldn’t have done it, if not for this game. Thanks for that. :-)
I’ve now tested your v1.2 and things look good. The game loads correctly now, even with the FC3 and its fastloader enabled and also the music in the game-intro and the game-menu is there. And no more red LED blinking is visible. However, with the FC3 active, the loading-time now isn't significantly faster anymore, than it's without it. I timed it and it needs 53 seconds now, until the game-intro screen appears, with the FC3 enabled and it needs 1:05 minute without it. Still the fact, that you no longer need to disable the FC3 cartridge (and presumably other cartridges as well) every single time, is a clear advantage now. Therefore v1.2 clearly is the best version.
I also noticed one other thing, that surprised me a bit. The game can not be loaded, using the standard LOAD"*",8,1 command. Instead, you have to type LOAD"boot",8,1 but that’s only a minor detail and with a fastloader-cartridge active, you don’t have to type anything at all, you simply press the corresponding F-key to initiate the load and that's it. So everything fits now. Good work.
Great news, thanks for testing it so thoroughly! Good to know about the firmware too. I wouldn't have guessed the older SD2IEC firmware was part of the problem.
v1.2 is now the official release. v1.1 and the test file are gone, so nuts-and-dolts-v1.2.d64 is the only download.
The speed makes sense. The FC3 only speeds up the first load. After that the game loads its own files (the tunes and a few small data files) through the ROM's normal LOAD, which is exactly what keeps the FC3 out of the way. So there isn't much left for it to speed up, but at least you don't have to switch it off anymore.
About LOAD"*": BOOT is the first file on the disk, so on a real 1541 it works. On an SD2IEC, "*" can pick a file from the SD card's own directory rather than from the mounted .d64. LOAD"BOOT",8,1 always works, and I've put that tip in the release notes.
Thanks again, this would never have been found without your help.
Hy. Last point regarding this Loading "*" matter. Normally, when I am inside a d64 file on the SD2IEC, the command LOAD"*",8,1 should only load the first file of this mounted d64 and nothing else. At least that's my experience so far. But not in this case here. Strange. But that's not really an important thing, because most SD2IEC users will have a fastloader-cartridge too and then they don't need to write loading commands at all. But good idea from you, to put this tip in the release notes in the future. And thanks for making the game compatible to SD2IEC, IDE64, etc, as well as to the FC3 (and probably also to other fastloader-cartridges, as a result of this change). More users will benefit from this.
Hi! Thanks, and you're right, LOAD"*",8,1 should give the first file of the mounted .d64, and on this disk that's BOOT. My best guess is the drive's memory of the last file. A real 1541 treats "*" as "the last file I loaded" if anything was loaded since power-on. It only falls back to the first file in the directory when nothing has been loaded yet. SD2IEC may copy that. So if you'd loaded something else (or switched images) earlier in the session, "*" could still point there. I haven't tested that on a real SD2IEC, so take it as a theory. Either way LOAD"BOOT",8,1, or a fastloader cart, avoids it.
And thanks for the kind words. Making it work with SD2IEC, IDE64 and the FC3 was only possible because you tested it so carefully. Enjoy the game!
Yes, you can be sure, I will enjoy it, because there aren't many games in the *Lemmings" style, so it’s great to have another one. Regarding the "Running it" section, here on the website, it seems like part of a sentence is missing, specifically concerning the SD2IEC, because it now reads, as if it would also work by using the LOAD"*",8,1 command, with this hardware.