1:48 made me nostalgic for the golden days when flipping through someone else’s collection of floppy disks was a journey filled with excitement and wonder! Every disk held the promise of a new adventure, a game never played, or a program never used. The words on each label teased endless possibilities, sparking imagination and curiosity. Ah, those were the days when discoveries were made not through a search bar but through a tangible, colorful stack of potential fun and learning!
Load Runner, Defender of The Crown, mrraow, yum - Guess Shadow of the Beast or Turrican would be too new school, lol. On topic tho, C128 is still on my must-have-once-just-for-me-myself-and-i-list, right next to an Acorn Archimedes 3000. Wonder why no RUclipsrs collection contains LAZER, was a great game. But there were so many. Pluh.
The command to kick the 1571 into double-sided mode on the C64 is OPEN 15,8,15,"U0>M1":CLOSE 15 and to go back to single-sided mode substitute "U0>M0" instead. I made a little cheat sheet of disk commands when I first got my 1571 off eBay a few years ago. It's so nice to have 1328 blocks of space compared to the usual 664 without having to flip the disk. ;)
Loved this! I like to imagine Robin is effortlessly just finding these solutions and fixes during the video without all the hard work and hours of research :P
OMG! The Run Magazine Cover at 1:35! I wrote Address Box 128 when I was 16 years old. I have not seen this cover in literallty 35 Years! Thank you for making my day!
Great research and testing! On the topic of 1571 problems at around 48:00 -- in addition to knowing the exact version of software being tested, it would be equally valuable to know whether the drive used for testing contained the 03 (initial) ROM or the 05 (fixed) ROM, as it has been suggested that they may differ in 1541 compatibility. -- JC
58:29 Strange that "Mayhem in Monsterland" doesn't work on the 128. I remember pictures/articles of Apex (Rownlands Brothers) being printed in Commodore Format back in the day, and John Rowlands did all the programming for Creatures on a C128 (I assume he did the same for Mayhem in Monsterland). Also worth noting that they previously published on Thalamus, and there are 3 other Thalamus games on that list.
I suspect the Thalamus problem is in a particular tape loader system that they shared, so the games on disk or otherwise cracked probably work okay. I wasn't able to replicate the Thalamus problems on my C128.
Everyone. Please start sharing robins page with everyone. He doesn’t have near enough the RUclips subscribers that he should. He should at least be in the 500 k range so help him out
The reason you weren't able to find any software that breaks because of the bit differences in address 1 is because it would be programmatically a bad idea to check against the whole byte value when you are only checking for the state of individual bits. You can't control the other bits nor do you want to check them, so the 'correct' thing to do would be to take the value of byte 1 and then AND it against the correct bitmask to check the bits you want. And if programmers did it that way, then it wouldn't be affected by a different bit changing.
Hi Robin, nice video! At the end it's not the C128 to be not fully compatibile with the C64, the truth is that some C64 software are buggy but they still run on the actual C64 because it has less registers than the C128, expecially for the VIC II, and so as result it's more tollerant to these bugs types.
OMG COHEN'S TOWERS! I had this game on my Atari 130XE back in the day and I couldn't for the life of me remember what it was called. I've spent literally years trying to remember. Thanks again Robin! 🙂
If we believe Google saying there have been 5,000 - 10,000 games released for the C64… That 99.8% compatibility should translate to about 10-20 incompatible games. I don’t know. Sounds like it is closer to 99.9% compatible based on your research. 😀 Great video Robin. I was actually expecting a few more incompatible games based on the anecdotal hearsay about the C128 / 1571 I’ve heard/read over the years. Nice to see the results of all your research and how even the “confirmed list” isn’t all that confirmed without identification of specific versions.
As part of the Mega65 community, I have come to realize how important your deep dive documentaries are with helping modern hardware achieve better compatibility.
The reason, why $D500 doesn't mirror SID anymore on the C128, is because it was used there for other chips: $D500+= MMC of C128 (not accessible in C64 mode, but it also means it doesn't mirror to SID in C64 mode) $D600+= VDC 80col mode of C128 (actually also accessible in C64 mode)
It's slightly incorrect to say the VIC-II wasn't updated to handle 2 MHz. The VIC-IIe in the C128 is what generates the 1 MHz/2MHz clock, after all. What wasn't updated was the DRAM. The RAM still runs at only 2 MHz, so when the VIC-IIe is generating a 2 MHz CPU clock it can't perform video fetches in every other memory cycle. What you're seeing on the screen is whatever the CPU has on the data bus. $D030 bit 1 (POKE 53296,2) does a bit more than blank the screen. The reason the screen blanks to the border color is because the row counter has been disabled along with vertical sync (you can see your capture device has to resync when you press reset). This has some interesting side effects: With careful timing it is possible to delay vertical sync during v-blank by half a scan line, which is how NTSC/PAL does interlace. By doing this and switching the VIC-II bank or screen/character base on every frame, you can make it do a true 320x400 interlace mode. The other thing you can do (on PAL systems, anyway) is force the chroma 180º out of phase, shifting the hue of all colors to an alternate palette. I don't know why GEOS on that list. It absolutely does work on a 128 in 64 mode, and has support for the 1571 and 1581.
I get what you're saying; I guess I could have said "the VIC-II and RAM system weren't updated to handle 2 MHz" instead. What clocks the DRAM currently? Are you saying the existing VIC-IIe would work perfectly in 2 MHz mode, if only the DRAM were 4 MHz capable? That's cool about all the neat timing stuff you can do with the VIC-IIe. I now recall reading a bit about that but haven't ever looked into it more. Maybe a very early version of GEOS didn't work on 128 or 1571; I tried v1.2, v1.3 and 2.0 and they're of course fine. I don't own copies of GEOS v1.0 or 1.1 - if they ever were released.
@@8_Bit No, the VIC-IIe wouldn't be able to do video fetches at 4 MHz if you had faster DRAM. It is still running from an 8 MHz dot clock and has to be able to clock everything from that. The VIC-II generates every clock in the system by dividing 8 MHz down. ø0: 1 (or 2) MHz into the 6510/8502. ø2 comes out of the CPU, delayed to be in sync with the CPU machine cycle. In the 64 all other chips are driven by ø2 out of the CPU, but not in the 128. This actually causes timing issues with a few C64 cartridges. RAS/CAS: These clock the DRAM. Low byte of the address is latched on RAS, which also refreshes DRAM. If RAM is selected, the high byte is latched on CAS and data goes in or out. Both are 2 MHz clocks at opposite phases from each other. So in 1 MHz mode, RAM is running twice as fast as the CPU and the VIC can get every other access. AEC: Address enable control, this takes the CPU off the bus during video accesses. Normally 1 MHz and opposite ø0 but if the VIC needs more for sprites or character pointers (badlines) it will stop the CPU and hold it low. When the VIC-IIe is put in 2 MHz mode, it doubles ø0 so the CPU runs twice as fast. RAS/CAS stay the same because the DRAM and many parts of the VIC-II cannot run any faster, and it stops asserting AEC so whatever is on the bus during "video fetches" just gets displayed. But wait there's more! The SID, CIA, and even the VIC registers can only run at 1 MHz even when the CPU is at 2 MHz, so in the 128 ø2 comes out of the VIC-IIe and is always 1 MHz, and there's a signal from the PLA to slow the CPU down to 1MHz for I/O access. The Z80 needs a 4 MHz clock, so the VIC-IIe generates that as well.
Outstanding compilation of discoveries and diagnostics! I wouldn’t be surprised if you pushed compatibility up an extra 0.1% for a 99.9% Frantic Freddy rules; that music brought back good memories!
Brilliant video Robin!!! =D I suspect the cassette version of Gryzor may "work" using that capslock test btw! That has a check to determine if the tape is playing still - as it ends loading. (basically its to check you didnt dump it and run from FDD...)
Wow, another fantastic video, Robin!! Don't know how many times I wondered what the main differences were between real C64 and C64-within-C128 were. Thanks for the in-depth exposé on the subject. I only had a C128 very briefly, but it was in C64 mode the majority of the time as well. 🙂
Very interesting video Robin. It is probably not a big surprise that I already knew all the underlying issues causing such incompatibilities, but I never tried many of those games, quite nice. Mostly hidden from the typical user, there are some hardware compatibility issues on the cartridge/expansion port due to timing being slightly different between the 2. The difference is small and more pronounced in 128 mode, but is also there in 64 mode. It is why the 1700 and 1750 REU are ever so slightly different from a 1764 REU, through in reality, this is rarely ever a real issue (ie, a 1750 typically works fine with a C64 and a 1764 typically works fine with a C128). One cartridge which is clearly sensitive to this is the Ultimate II+ cartridge (heh... that reminds me, I *REALLY* should put one in a box and send it to you). But also cartridges which try to do kernal replacement may fail due to this.
This is pretty cool and weird timing as we just put out our c128 pickup vid. Ha ha great stuff! We also made a new AI named 80HD for our channel using the C128. Cheers!
me again, sorry one little comment .. when you press the cassete buttons at 45:00 .. you can actually see several times, that the print output is 23 for just one frame .. and then it changes back to 0x55. What's with that intermediate state ?
Yes, I didn't notice that while recording, but it's interesting. I think what's happening is that pressing the cassette button(s) changes bit 4 in the I/O port. Then the KERNAL system interrupt, next time it occurs (within about 1/60th of a second), notices that bit has been changed, and enables the cassette motor control (bit 5). And then when the STOP button is pressed, that bit 4 changes again, then the KERNAL notices, and the motor is disabled within a frame later.
Really interesting! I had friends with 128's (I had a 64), and they spent all their time in 64 mode. We spent a lot of time, nearly 40ish years back, "sailing the high seas" if you know what I mean... and I can't recall them ever having a problem running anything I was running on my 64. Great job finding some exceptions, this was really informative!
Of course, the last v8 is also one of the very rare action games which got a dedicated C128 release, which solves the compatibility issues, and actually has some improvements from what I understand.
0:45 Before i start - just watched Computer Chronicles 1988 with C64 shown as "not yet obsolete" at exact same year episode about multitasking on DOS. And i was thinking "hey why Commodore did not provide more RAM, and some special keys to switch between programs, banking RAM or something" allowing CPU running twice as fast or sharing cycles between two screens. Without need to reset any of these. I hope to find out that they make modes switchable in such way we are switching tabs in browser. Did they? I can imagine having C64 switchable F1-F4 just like Linux terminals. And one special mode just like in Linux XFree86 that would be cool for next 10 years! They could also make C64 accelerator for PC to run C64 as Apple MacOS was running Windows 3.1. So much potencial to create awsome machine. Amiga + C64 they could make this platform alive. I don't know answer yet, having separate mode doesn't sound like good idea..
There were some programs available for the C64 and C128 that allowed that kind of task-switching or limited multi-tasking but they required programs to be fairly well-behaved and many were not. If Commodore was more forward-thinking they could have provided better operating system support from the beginning that would have encouraged more programs to be well-behaved. Alternatively they could have provided hardware support for that kind of task-switching in later models, but it didn't seem to be a priority. It would have been really interesting to see if Commodore could have successfully brought their C64/128 line into the future but instead they went somewhat half-heartedly into both the Amiga and MS-DOS platforms.
Thank you for all your quality videos so far! When it comes to 1541 vs. 1571 (C128D) compatibility problems, I still remember Turbo Nibbler(s) and ever famous Duplicator programs did not work for my copying needs as having a 128D. The big boys then told me Turbo Nibbler was the weapon of choice for the "trickier ones" (krhm... ..originals..) when copying whole disksides... On the other hand I maybe just had "too tricky" disks.. ;-) Still, would be very interesting to know now what caused these problems in the first place and if something could have been done.
Frantic Freddie was one my favourite games when got my early breadbin. The music was incredible and how you had to go up one side of the ladder and down the other side was infuriating but added a different dimension to the gameplay. Also the interlude between levels was like Pac- Man. I really wish Commodore would've built a monitor programme into the C64 like they did with the Plus 4 and C128. I might have learned programming instead of just playing games. Cool video Robin.
0:58 Obviously, you can come up with a number like 99.8% using statistical methods. 3:32 In Fast mode, is the VIC disconnected from the address bus and just reading the values that are on the data bus from CPU activity as if the VIC had requested them? I wonder if you can build an image with careful programming. 4:20 Seems unnecessary, since the VIC already had a method to blank the screen. I guess it was easy to wire this new bit into the existing functionality. 15:00 Odd that it scrolls perfectly smoothly horizontally, but is all glitchy vertically. 35:17 What, Dave's a Canadian?! 36:30 You could use a variable and a "." to make the pitch a little higher. 37:52 Page $D5 is the Memory Management Unit on the C128. I'll assume that address $D518 maps to $D508, which is the RAM-bank byte of the Zero-Page Pointer. Though, I guess this stuff isn't active in C64 mode. Though, is the C64 Mode flag at $D505 available in C64 mode? Probably not, since it'd be easier to disable MMU chip selection altogether in the PLA if C64 mode is active. 41:56 Bit 6 of location $0001 is CapsLock read. Games would pretty much only write to $0001 to reconfigure the memory but not read from it. 42:52 Ah, the IRQ routine is changing the Tape Motor bit in response to the Tape Sense bit. 45:41 Pressing the other keys produces a '0' bit on the input lines, so they'd need to add an inverter to the CapsLock line to make it compatible with the software that you were unable to find(!), which means adding another chip to the motherboard. A proper program filters out the bits it doesn't want. 52:01 Do you run into more 1571-compatibility problems if you GO64 instead of Commodore-Reset? 52:56 Is the 1541-II 100% compatible?
re: 99.8%, I have no doubt that number can be calculated somehow; but I'm curious about the data used. Is it based on the number of programs and those that fail? Number of memory locations that aren't fully compatible? That would be really cool to figure out how to display an image on the VIC-II in fast mode. Or maybe focusing on getting one or more sprites to display something coherent? Yes, Dave grew up in Saskatchewan. I'm still trying to find where he talked about the Frantic Freddie guys, but one of my patrons did find a talk he gave at the University of Regina as an alumni: ruclips.net/video/Ig_5syuWUh0/видео.html As far as I know, none of the $D5xx MMU stuff is available in C64 mode. I did try loading a lot of disks with GO64 hoping to find more 1571 compatibility issues, but didn't find any. It seems I neglected to mention this in the video!! As I understand it, GO64 will leave the 1571 in 1571 (2 MHz?) mode while doing C= + Reset will force the 1571 to 1541 compatibility mode.
It is partially disconnected, as it still handles ram refresh, also in 2mhz mode. It indeed reads whatever is on the bus during what would have been the vic2 cycle. Creating an image seems difficult, but its certainly possible to produce some predictable effects. Also, as c128 developer who mostly uses and writes for 2mhz mode, I often use it to get an idea of if the machine is actually executing the code I was expecting, as especially loops can be very recognizable. In 64 mode, the mmu registers are completely invisible, a hardware reset is required to make them visible again.
@@8_Bit re: 1571, what happens is the 1571 always starts up in 'compatibility mode', but switches to 'fast' mode when it gets addressed using the fast serial protocol.
The "test" bit that blanks the screen does more than blank the screen. Blanking is just a side effect. See my comment above for more info. You can actually tweak vertical sync timing to do 320x400 interlace, shift the palette on PAL, etc.
I know that Rescue on Fractalus was one of the games that would not work properly on the 128's C64 mode. My friend had a 128 and couldn't get it to run. He figured it was something wrong with the copy, but when I borrowed it from him, it worked on my C64. Star Rank Boxing (Barry McGuigan's boxing in Europe) was another
I tried a few versions of Fractalus as it was on that list on Lemon64 and they all worked fine for me. So it must be a particular version that I didn't find online. Interesting about Star Rank Boxing, I'll see if I can replicate.
Here's a thought. What about adding a decoder that deselects the vic2 when it recognizes that both the address of one of those new Vic 2 registers is being selected, and a switch installed on the back of the computer. That would solve a lot of compatibility issues.
Back to questions about the CPM system on the C128. How does it work with two active CPUs in the system? Does activating CPM totally shut down the 6510 or does it stay awake and communicate with the Z80? If so, how? I know the C128 has its own Video chip but how does the CPM system put out video, does it use the same 80 column video system as the C128?
Love it! Thanks so much as this was a great watch. I recall a few times I had to bring out my C64 back in the day because some software wouldn't work on my 128. It was so many years ago that I don't recall which. I know it wasn't very many. I probably still have those disks though.
Hi, Robin. Will you please try to find a non-English native-BASIC-based computer, especially Commodore, and especially a 128 or 64 if feasible, and show us a good little sample of BASIC programming on it, including several error messages (because in all these four decades I don't ever remember seeing a demonstration of programming BASIC in another human language than English, and I think it would be fun to see)? Also, if you happen to know some of the other high- or medium-high-level languages, like C, on whatever machine you happen to have a compiler of it for, will you please try to find a non-English version of that too, and then compile and run (or maybe another interpreted one)?
The only built-in non-English BASIC I've heard of is a Chinese one in some obscure Apple II clones. I've never seen those or had an opportunity to buy one. A little more realistic to find some day is a French BASIC called "BASICOIS" which probably was loaded from tape or disk for TRS-80 and PET, but haven't yet found a download of it to try.
@@8_Bit: Wow, that's interesting. I would have thought that all those non-English Commodore 64s and stuff had a non-English version of BASIC to go with them. Kind of sad that all those non-native-English-speaking/writing people had to learn enough English just to understand how to program in BASIC; that BASIC is so English-centered.
I had a C128D growing up. I used 64 mode almost exclusively as I was never able to find much 128 software. I did have problems with Project Stealth Fighter and had to return it as I couldn't get it to work. The shop verified it didn't work on their 128 either before they would refund my money.
Anyone who was trying to get the status would use bitwise operations as it is never guaranteed that any value will be in that register... several of my own programs would do memory operations with the first 3 bits to add basic utilities, modify the kernel, etc...
Great work Robin! Always enjoy your videos! Yes peek (1) is definitely an incompatibility issue and the fix is easy. A software "fix" (other than locking down CAPS LOCK) you can do is to simply mask out the effects of that added pin on the 8502 by peek(1)and63. Voila! Compatible :)
With any register that has multiple flags, you should check for only the bit that you care about by doing an AND with the value that you want. So code should really be 'peek(1) and 16 0' on line 20 and 'peek(1) and 16 16' on line 40. Or, if you want to check the cassette motor bit as well as the cassette switch bit, use the value 48 (bit 5 %00010000 is decimal 32).
C64 mode normally ran in RAM bank 0, but I remember I was able to run it in RAM bank 1. There was no real point in doing that, I just thought it was a neat trick. The 128's reset switch defeated the way some C-64 programs protected themselves from being examined. I remember a terminal program for the 64 that put RAM at the top of memory, changing the reset vector so that, if you had a reset switch connected and used it, the computer would display a message that said "That's a no-no!" and lock up. On the 128 in C-64 mode, that won't happen. (I had wondered if there would be a difference between an external reset switch and the built-in one, with only the built-in one able to break out of 64 mode, but no, there wasn't.)
Regarding the C128 caps lock, there's a similar annoying issue on the C64 with the shift lock. Many times the C64 refused to work and I had not realized I accidentally pressed the shift lock. A few times I pulled the whole machine apart in an attempt to fix it only to eventually realize it was only the shift lock causing it heh!
The VIC-II registers were all mirrored too, in all the 64-byte banks from $D040 through $D3FF. I wonder if the 128's VIC-II is wired up the same way as its SID and can't use those redundant registers either. Did Compute! ever release an updated edition of _Mapping the C64_ with notes on the 128's differences?
They released an updated Mapping the Commodore 64 for the 64c, and a separate Mapping the Commodore 128, which is really good and detailed with regards to 128 mode. A must have for anyone wanting to do some more serious programming on this machine.
Frantic Freddie was along with Tapper my first games ever played (back in 1985 being 2 years old). Something not a lot of people know, the red monster in Frantic Freddie will always follow you vertically, you can stay in the middle of the ladder and the red monster will always go up and down until you move. Later monsters like green and grey share the same behaviour. Yellow and blue are completely random though, and horizontal direction is random as well for all monsters.
I wasn't aware! I'll see if I can get further with that info. I think level 7 or 8 is the furthest I've ever got. I've heard that level 16 is unbeatable due to some missing ladders, and I've meant to investigate that sometime.
@@8_Bit On real C64, I reached level 13 or 14 .. level 16 is the last level, and at least from walkthroughs Ive seen, it's finishable. Then you access level 17 which is just an ending cutscene using the game engine. Would love to see a Frantic Freddie video where you analyze the code and quircks.
@@DarkMoe Thanks, it seems that whoever thought there was a level 16 bug was confused and it was actually level 17 and the developers deliberately removed the ladders for the ending cutscene in that level.
I probably won't go as early December is a terrible time to travel to Toronto, both due to potentially bad weather, and it being a busy time for my kids with end of school semester and pre-Christmas events. I used to go to WoC fairly regularly and always enjoyed the event and people, but the travelling and particular time away from my family greatly detract from my eagerness to go. I guess I didn't have to explain all that, but that's why :)
@8_Bit I will be going and have a table too. Will be showing my new PET board that I will be selling. It's called PET Companion, which provides external composite video, audio, RGB2HDMI connection, and joystick connection. If you come to the show, I will have one for you for free. Would love for you to review it and keep it. Thanks
One game I had an issue with on the 1571 was Skyfox. Ran fine on my brother-in-law's C64 w/ Enhancer 2000, would hang/not load on my C128 in C64 mode w/ 1571. Mind, this was in... '88, so I fear I have little in the way of details.
I noticed that the broken version of "Frantic Freddie" was 96 blocks, but the fixed version was only 55 blocks. Was it because only the relevant code to demonstrate that it works was included?
@@8_BitWow, that's impressive! I think this would make an excellent subject of a future video! (hint hint!) Was "exomizer" something that was available for the C64 back in the day? I've never heard of it.
@@JustWasted3HoursHere I'm pretty sure I've shown exomizer briefly in a video or two. Probably the second part of the "Livingstone, I Presume?" video. It's a command line program that runs on modern computers, and really benefits from the huge amount of RAM and CPU power available to it. But it essentially does the same sort of things that packers and crunchers on the C64 did, like "Cruel Crunch" or "AB Cruncher" or dozens of others. I've shown those once or twice too, but I can't remember where :)
About 10 years ago when I was setting up my (current) C64 system, I'd decided on using a C-128 as the 64, as it was more versatile. It didn't take long to discover that C64 mode was not 100% compatible with a real 64. It only lasted a week before I pulled the 128 and replaced it with a breadbox. Trouble solved.
Also 2 other games you needed to add to this list! Infernal Runner and Rescue on Fractalus! This was talked about back in the day! 1571 on a C128 defaults to 1571 mode in C64 mode of C128 so this could be why it fails! Nice to have these bug fixes so those still finding new games which were made back in the early c64 years have came about and may need fixed!
There's actually quite a bit of "productivity" type software for the C128, like word processors, spreadsheets and more, which would take quite a while to cover thoroughly. But there's only a small number of dedicated C128 games.
27:49 Unexpected 'Don't Bring Me Down' by ELO :D That first song that plays in the game is apparently Boogie Fever by The Sylvers rather than Daytripper
I used to have a Spinnaker educational game called "Rhymes and Riddles", which I'd run using my C-128D as a youngling. It would work fine for the most part, unless you successfully solved the "One Little, Two Little, Three Little Indians" puzzle, in which case the screen would freak out in a similar manner to what you showed and forced me to reset the machine to fix it. I tried recreating this in VICE but the game works perfectly, so I'm wondering if this is one of those instances of the hardware compatibility not being 100% there but the emulator somehow solving that issue?
Interesting! Two possibilities: the C128 emulator doesn't emulate the freakout properly. If you just start up your C128 emulator in BASIC and type POKE 53296,1 then the screen should go crazy. If not, then the emulator doesn't handle that situation. The other possibility is that the Rhymes and Riddles game was patched to fix the problem and that's the version that's been archived online.
@@8_Bit I'd forgotten the possibility of the game being patched even though I did watch the video where you'd pointed out another game and this being the case. That said, I tried the POKE command in both the NTSC model settings in VICE (C128 and C128 DCR), and it didn't freak out, so I guess it's the emulator.
Wait...My understanding of the datasette issue : If C64 software relies on the push of the play button (PEEK=7), it won´t work on the C128. Does that, vice versa, mean that the C128 "load,1" can´t recognize the playbutton when CAPSLOCK is active?! or will it check both values C64/C128 resulting from CAPS lock vs unlock?
Datasette load/save works fine on the C128, and anything properly programmed works fine as well. I was trying to find a professionally made program that failed because of this difference in location 1 on the C128 but was unable, so I created my own plausible program to demonstrate the potential incompatibility. If I had written my BASIC example properly (by using AND to mask out the irrelevant bits) I could have made it work on both C64 and C128 without messing around with the Caps Lock key.
In the first two games, I wonder if maybe it was being ported to C64 and they copied the loop for setting the values and since on C64 the $D02F and $D030 are nothing, they left the loop as it was. Just strange to have a loop that stores to registers that don't do anything. It works I guess, but later doesn't work on the 128.
Yes, I think Frank Cohen was already very accomplished on the Atari and then ported his games to the C64. It'd be interesting if that was the reason for this loop. I just looked up the CTIA/GTIA registers and coincidentally they're also mapped to $D0xx, from $D000 to $D01F, so the original (theoretical) Atari initialization loop would have gone to $20. It's not a huge stretch to think he would just bump it up to a nice round $30 to accommodate the VIC-II's extra registers and not noticing any problems, just move on.
@8_Bit What is interesting now, if this is possibly the case, is what values were in the array at those locations and why? Were they just the beginning of another array? That would be my guess at least. Oh the things that make our brains spin round. Thanks for this fun one Robin.
Not to sound like I can't figure things out - but how did you get the text to zig-zag in your outro? I know it's BASIC, but I'd sure like to use something like that in some of my programming. :) Might you be able to share some of that coding goodness? In any event, this was a very informative video, and thanks so much for showing us "mere mortals" the INs and OUTs of the two Commodore machines!
Awesome video! I love the C128... I really want to get one but they are hard to find for anything near reasonable prices. I've always wanted to write some software for the C128.
Thanks, it's an unreleased song from an unreleased album from my band. I gotta get around to releasing it. Here's a much earlier/rougher mix of another song that will be on the same album: ruclips.net/video/U1VKwqUWYa8/видео.html
Not sure how I feel about reminiscing through the EARLY days of Commodore gaming, (which were GREAT times), with an Atari box and logo in the frame the whole time??!!?? Another great video Robin!. Frantic Freddie is DEFINITELY a warm, fuzzy classic and you are 100% on Cohens Tower, I vaguely remember saying. "F-this stupid game!!" It's brutally hard!
Fun stuff :) I never had a C64 back in the day and only got a used C128 around the time that Amigas started coming around but I loved it. Was lucky enough to get it with a 1541-II . So some of those games that I never got to work could possibly have not worked due to these little quirks, interesting! Fun fact about playing Bard's Tale 2 via the 1541-II; quite by accident I flipped up the disk lock before moving a wand from one character to the other at an inn (IIRC) and I noticed that it was instead copied, so the original owner still had and the new owner had it as well :D Guess if I used that glitch to have a fighting chance in the beginning :) Guess it should also work on the original 1541 :) Pretty sure I've played both Delta and The Last V8 but the first one could be because I ran it from disc, or maybe it was just the pirated version that works? I'd understand if that solved any copy protection issues but that 2MHz-issue must have been solved by someone... Reminds me that I have to try my copy of Psycho Soldier on the real C64 I have not yet tested. Didn't get my original to work on my C128 when I tried. Seem to remember I had issues on a real C64 as well unless I loaded it in just the right way (copy protection I think...)
That would be very frustrating! I hope you were able to play some of the C128-enhanced games to make them jealous too :) Andrew Braybrook often made his games a little better for the C128.
The Goonies by DataSoft won't load on my C128D from the internal 1571 drive. I don't know if it's the C128's C64 mode, the 1571, or a combination of both.
Cool, thanks for the tip. I thought I tried it but maybe not, or maybe it's a 128D specific thing which would be extra interesting :) I'll give it a try.
Kevin Pickell - I knew I recognised the name! He went on to work at EA Sports and in particular on the first FIFA games for the Megadrive, pretty sure they named the players after the development team so I scored plenty of goals as Pickell.
well , i am not an expert but if you time a loop on a real 64 and poke that 2MHZ Byte (which does nothing if i am correct)and then time the loop again on a C64 within a C128 (with the poke working) the loop finishes earlier thus a programm then knows it runs on a C128 in C64 mode. But there maybe a simpler way to determine the machine :)
You know, my first C64 experience I can remember was on a commodore 128d. I was around 6yo back then. It is said I could use one of these before I could read.
I know Rescue On Fractalus didn't work.....found out how to fix the 2Mhz bug the hard way...thank God for the C64 Programmer's reference guide. Awesome video as always!
Huh I had no idea the 128 had that bug with the switch sense line. My Bleepload transfer I recently uploaded to CSDB will fail on the c128 then if you want an actual program to test with.
Hi Scott, good to hear from you! So Bleepload is a particular cassette load system and you've made a program that can automatically archive those tapes? That's awesome! I did a quick search for Bleepload and I guess it was made for multiple platforms? I'm getting more Spectrum and CPC hits but obviously there were a lot of games that used it on the C64 too.
The Ilearth ("Illearth") Stone has to be a reference to the Thomas Covenant novels by Stephen Donaldson. How the game got that name I couldn't say; it doesn't seem that the gameplay has anything to do with the books.
That is possible! I've also heard the disk drive built into the 128D has some compatibility issues of its own; I'm not sure if that's due to ROM versions or what.
@@8_Bit What you said later in the video about a possibly incompatible chip in some revisions of the drive is close enough I guess. You know much more about this than I do but a heathy discussion is always nice. :)
I suspect at roughly the 50 minute mark any game that relies on the error 27 at a specific track and sector doesn't work on the 1571 as opposed to the 1541 because hardware...
I yearned after a Commodore64 because of the "He-Man and the Masters of the Universe", but my cracked copy must've been fixed because it ran fine on my C=128D (once I finally got a C=64-compatible system). It's hilarious hearing it play so sped up because of NTSC! Idea for a video: fixing that with the CIA IRQ replay.
Curious, how hard would it be to hack the games to run in straight 128k mode? As you can tell I know next to nothing about architecture differences, but nievely, I'd imagine that C128 mode had a reasonable overlap? would be interesting just to see what happens trying to run C64 games in 128 mode :D (course, it could be none work; Though would make an interesting video why that is)
I don't know about MiSTer but I have a few different versions of VICE on my computer and it's only very recent versions that seem to handle some of these C128 compatibility issues properly. Older versions of VICE just carry on fine when a real C128 would crash or become inoperable. I haven't done a thorough test of it; I'm mainly interested in the vintage hardware and just use emulators as a tool when convenient.
@@8_Bit and I applaud you for it. Anyone can use an emulator (it's all I have at the moment), but I appreciate you going the old school route and bringing us the *real* stuff.
Z64K offers pixel accurate C128 emulation - it even accurately replicates the POKE 53296,1 behavior. I guess Z64K would give same results with these games as the real hw.
Maybe, but unlike what some seem to believe, the C128 sold really well, with the total number of units sold being approx 10 times the number Commodore expected to sell when introducing it. That means the number of C128s sold is approx the same as all 'non GS' Apple II models combined. Sales wasn't really a problem with this machine, despite there not being that much software which took advantage of its capabilities.
@@c128stuff Yes, that’s true. In our collective memory it’s overshadowed by the Amiga, but they still moved a lot C128 of hardware. I think it’s a great machine, just don’t run CP/M on it. 😀
@@Doug_in_NC Ah they would had to redo the whole VIC chip then, because it was so perfect in timing, that it would be hardly compatible to the old one ;)... Timing is hugely critical on those old machines with racing the beam ;)... So only C128 in 80col mode could do 2MHz. But around 1,25Mhz was possible in both C128 40col and C64 mode by switching to 2 Mhz during vertical blank, while the screen borders where drawn, some games and an addon for GEOS used that trick to get a bit extra speed.
I guess Frantic Freddie must not use the SID for random number generation (seed etc), or at least the routine that did that used the correct base address, assuming there is any randomness to the monsters etc at all?
Yes, I think there is some randomness to the monster's movement, but it doesn't seem to use the SID at all for that randomness. I assume it's using some other timer or counter that works well enough for the purpose, but I haven't looked into it.
Yeah I remember my uncle buying one of these when they came out. I absolutely loved the quality of this computer over the C64 I had. But yep was almost 100% in C64 mode... have fond memories of playing Scarabaeus on it... we had no idea what we were doing... :D
I've meant to make a video about this sometime. It's actually a myth that no software was produced, but there were very few C128-only games. There was a good amount of business and productivity-type software for the C128 though, like word processors, spreadsheets, and GEOS128 for example.
@43:26 So spooky just in time for Halloween, your C128 typed in that program all by itself! :O @45:28 "What a dumb computer" perfect comic timing, made me laugh out loud!
Hmm.. so maybe my datasette wasn't broken some 35 years ago when I upgraded to a C128. I didn't have too many games on tape, so I never bothered trying to fix or repair it.
Generally the datasette will work on the C128, but some software will fail. Some of those titles should be fixable by pressing the "CAPS LOCK" key before you load. I guess you don't still have it to give it a try :)
Hi Robin, Ghost Chaser is another from Frank Cohen. Does it work? I liked it back in the day. Played fine on my c64, of course. EDIT: OK, So you like Ghost Chaser too. I take it it works on the c128. Also, How did you bring Frantic Freddie from 96 blocks down to 55? BTW, As soon as you mentioned Kevin Pickell I right away went back to the Disk Doctor program he made.
1:48 made me nostalgic for the golden days when flipping through someone else’s collection of floppy disks was a journey filled with excitement and wonder! Every disk held the promise of a new adventure, a game never played, or a program never used. The words on each label teased endless possibilities, sparking imagination and curiosity. Ah, those were the days when discoveries were made not through a search bar but through a tangible, colorful stack of potential fun and learning!
I was about to post something similar. I had a lot of the same games and utilities. The labels are instantly recognizable.
Load Runner, Defender of The Crown, mrraow, yum - Guess Shadow of the Beast or Turrican would be too new school, lol. On topic tho, C128 is still on my must-have-once-just-for-me-myself-and-i-list, right next to an Acorn Archimedes 3000.
Wonder why no RUclipsrs collection contains LAZER, was a great game. But there were so many. Pluh.
The command to kick the 1571 into double-sided mode on the C64 is OPEN 15,8,15,"U0>M1":CLOSE 15 and to go back to single-sided mode substitute "U0>M0" instead. I made a little cheat sheet of disk commands when I first got my 1571 off eBay a few years ago. It's so nice to have 1328 blocks of space compared to the usual 664 without having to flip the disk. ;)
Loved this! I like to imagine Robin is effortlessly just finding these solutions and fixes during the video without all the hard work and hours of research :P
You think exactly like my boss does.
Given some of these may never have been patched by anybody - you probably now hold a speed-running record for the C128!
@36:07 Nice, you're treating the SID like a 1-bit speaker, and in BASIC no less. Very cool!
OMG! The Run Magazine Cover at 1:35! I wrote Address Box 128 when I was 16 years old. I have not seen this cover in literallty 35 Years! Thank you for making my day!
Ha, I'm glad I happened to choose that issue to show! That's really cool that you had a program published in RUN, congrats!
Great research and testing! On the topic of 1571 problems at around 48:00 -- in addition to knowing the exact version of software being tested, it would be equally valuable to know whether the drive used for testing contained the 03 (initial) ROM or the 05 (fixed) ROM, as it has been suggested that they may differ in 1541 compatibility. -- JC
58:29 Strange that "Mayhem in Monsterland" doesn't work on the 128. I remember pictures/articles of Apex (Rownlands Brothers) being printed in Commodore Format back in the day, and John Rowlands did all the programming for Creatures on a C128 (I assume he did the same for Mayhem in Monsterland). Also worth noting that they previously published on Thalamus, and there are 3 other Thalamus games on that list.
I suspect the Thalamus problem is in a particular tape loader system that they shared, so the games on disk or otherwise cracked probably work okay. I wasn't able to replicate the Thalamus problems on my C128.
Everyone. Please start sharing robins page with everyone. He doesn’t have near enough the RUclips subscribers that he should. He should at least be in the 500 k range so help him out
I've mentioned him as much as possible in my usual hangouts. No idea if anyone has picked up on it yet, but I do make the effort.
56:34 You should send them back to Origin, and they will send you a replacement.
The reason you weren't able to find any software that breaks because of the bit differences in address 1 is because it would be programmatically a bad idea to check against the whole byte value when you are only checking for the state of individual bits. You can't control the other bits nor do you want to check them, so the 'correct' thing to do would be to take the value of byte 1 and then AND it against the correct bitmask to check the bits you want. And if programmers did it that way, then it wouldn't be affected by a different bit changing.
Educational, interesting and great without being boring! As always! Thanks Robin!
Hi Robin, nice video!
At the end it's not the C128 to be not fully compatibile with the C64, the truth is that some C64 software are buggy but they still run on the actual C64 because it has less registers than the C128, expecially for the VIC II, and so as result it's more tollerant to these bugs types.
The world needs a conversation video with Bill Herd and Robin discussing these differences and bugs
OMG COHEN'S TOWERS! I had this game on my Atari 130XE back in the day and I couldn't for the life of me remember what it was called. I've spent literally years trying to remember. Thanks again Robin! 🙂
Cool! Was it just as unforgiving a game on the Atari? Were you able to finish the first level?
@@8_Bit The first level I think, but I do remember it being brutal.
If we believe Google saying there have been 5,000 - 10,000 games released for the C64… That 99.8% compatibility should translate to about 10-20 incompatible games. I don’t know. Sounds like it is closer to 99.9% compatible based on your research. 😀
Great video Robin. I was actually expecting a few more incompatible games based on the anecdotal hearsay about the C128 / 1571 I’ve heard/read over the years. Nice to see the results of all your research and how even the “confirmed list” isn’t all that confirmed without identification of specific versions.
As part of the Mega65 community, I have come to realize how important your deep dive documentaries are with helping modern hardware achieve better compatibility.
The reason, why $D500 doesn't mirror SID anymore on the C128, is because it was used there for other chips:
$D500+= MMC of C128 (not accessible in C64 mode, but it also means it doesn't mirror to SID in C64 mode)
$D600+= VDC 80col mode of C128 (actually also accessible in C64 mode)
Thanks for your tireless efforts while researching this video. Fantastic work as always my friend. 👍👍
It's slightly incorrect to say the VIC-II wasn't updated to handle 2 MHz. The VIC-IIe in the C128 is what generates the 1 MHz/2MHz clock, after all. What wasn't updated was the DRAM. The RAM still runs at only 2 MHz, so when the VIC-IIe is generating a 2 MHz CPU clock it can't perform video fetches in every other memory cycle. What you're seeing on the screen is whatever the CPU has on the data bus.
$D030 bit 1 (POKE 53296,2) does a bit more than blank the screen. The reason the screen blanks to the border color is because the row counter has been disabled along with vertical sync (you can see your capture device has to resync when you press reset). This has some interesting side effects: With careful timing it is possible to delay vertical sync during v-blank by half a scan line, which is how NTSC/PAL does interlace. By doing this and switching the VIC-II bank or screen/character base on every frame, you can make it do a true 320x400 interlace mode. The other thing you can do (on PAL systems, anyway) is force the chroma 180º out of phase, shifting the hue of all colors to an alternate palette.
I don't know why GEOS on that list. It absolutely does work on a 128 in 64 mode, and has support for the 1571 and 1581.
I get what you're saying; I guess I could have said "the VIC-II and RAM system weren't updated to handle 2 MHz" instead. What clocks the DRAM currently? Are you saying the existing VIC-IIe would work perfectly in 2 MHz mode, if only the DRAM were 4 MHz capable?
That's cool about all the neat timing stuff you can do with the VIC-IIe. I now recall reading a bit about that but haven't ever looked into it more.
Maybe a very early version of GEOS didn't work on 128 or 1571; I tried v1.2, v1.3 and 2.0 and they're of course fine. I don't own copies of GEOS v1.0 or 1.1 - if they ever were released.
@@8_Bit No, the VIC-IIe wouldn't be able to do video fetches at 4 MHz if you had faster DRAM. It is still running from an 8 MHz dot clock and has to be able to clock everything from that. The VIC-II generates every clock in the system by dividing 8 MHz down.
ø0: 1 (or 2) MHz into the 6510/8502. ø2 comes out of the CPU, delayed to be in sync with the CPU machine cycle. In the 64 all other chips are driven by ø2 out of the CPU, but not in the 128. This actually causes timing issues with a few C64 cartridges.
RAS/CAS: These clock the DRAM. Low byte of the address is latched on RAS, which also refreshes DRAM. If RAM is selected, the high byte is latched on CAS and data goes in or out. Both are 2 MHz clocks at opposite phases from each other. So in 1 MHz mode, RAM is running twice as fast as the CPU and the VIC can get every other access.
AEC: Address enable control, this takes the CPU off the bus during video accesses. Normally 1 MHz and opposite ø0 but if the VIC needs more for sprites or character pointers (badlines) it will stop the CPU and hold it low.
When the VIC-IIe is put in 2 MHz mode, it doubles ø0 so the CPU runs twice as fast. RAS/CAS stay the same because the DRAM and many parts of the VIC-II cannot run any faster, and it stops asserting AEC so whatever is on the bus during "video fetches" just gets displayed.
But wait there's more! The SID, CIA, and even the VIC registers can only run at 1 MHz even when the CPU is at 2 MHz, so in the 128 ø2 comes out of the VIC-IIe and is always 1 MHz, and there's a signal from the PLA to slow the CPU down to 1MHz for I/O access. The Z80 needs a 4 MHz clock, so the VIC-IIe generates that as well.
Outstanding compilation of discoveries and diagnostics! I wouldn’t be surprised if you pushed compatibility up an extra 0.1% for a 99.9% Frantic Freddy rules; that music brought back good memories!
Brilliant video Robin!!! =D I suspect the cassette version of Gryzor may "work" using that capslock test btw! That has a check to determine if the tape is playing still - as it ends loading. (basically its to check you didnt dump it and run from FDD...)
Very cool, I'll try to track it down!
Wow, another fantastic video, Robin!! Don't know how many times I wondered what the main differences were between real C64 and C64-within-C128 were. Thanks for the in-depth exposé on the subject. I only had a C128 very briefly, but it was in C64 mode the majority of the time as well. 🙂
Very interesting video Robin.
It is probably not a big surprise that I already knew all the underlying issues causing such incompatibilities, but I never tried many of those games, quite nice.
Mostly hidden from the typical user, there are some hardware compatibility issues on the cartridge/expansion port due to timing being slightly different between the 2.
The difference is small and more pronounced in 128 mode, but is also there in 64 mode. It is why the 1700 and 1750 REU are ever so slightly different from a 1764 REU, through in reality, this is rarely ever a real issue (ie, a 1750 typically works fine with a C64 and a 1764 typically works fine with a C128). One cartridge which is clearly sensitive to this is the Ultimate II+ cartridge (heh... that reminds me, I *REALLY* should put one in a box and send it to you). But also cartridges which try to do kernal replacement may fail due to this.
This is pretty cool and weird timing as we just put out our c128 pickup vid. Ha ha great stuff! We also made a new AI named 80HD for our channel using the C128. Cheers!
me again, sorry one little comment .. when you press the cassete buttons at 45:00 .. you can actually see several times, that the print output is 23 for just one frame .. and then it changes back to 0x55. What's with that intermediate state ?
Yes, I didn't notice that while recording, but it's interesting. I think what's happening is that pressing the cassette button(s) changes bit 4 in the I/O port. Then the KERNAL system interrupt, next time it occurs (within about 1/60th of a second), notices that bit has been changed, and enables the cassette motor control (bit 5). And then when the STOP button is pressed, that bit 4 changes again, then the KERNAL notices, and the motor is disabled within a frame later.
Really interesting! I had friends with 128's (I had a 64), and they spent all their time in 64 mode. We spent a lot of time, nearly 40ish years back, "sailing the high seas" if you know what I mean... and I can't recall them ever having a problem running anything I was running on my 64. Great job finding some exceptions, this was really informative!
lol, the spreadsheet at the end shows the last V8 by Matertronic.... Did they predict the cars movies franchise 20 years earlier? We may never know...
Of course, the last v8 is also one of the very rare action games which got a dedicated C128 release, which solves the compatibility issues, and actually has some improvements from what I understand.
"The Last V8" was named after a line from the original 1979 "Mad Max" movie.
0:45 Before i start - just watched Computer Chronicles 1988 with C64 shown as "not yet obsolete" at exact same year episode about multitasking on DOS. And i was thinking "hey why Commodore did not provide more RAM, and some special keys to switch between programs, banking RAM or something" allowing CPU running twice as fast or sharing cycles between two screens. Without need to reset any of these. I hope to find out that they make modes switchable in such way we are switching tabs in browser. Did they? I can imagine having C64 switchable F1-F4 just like Linux terminals. And one special mode just like in Linux XFree86 that would be cool for next 10 years! They could also make C64 accelerator for PC to run C64 as Apple MacOS was running Windows 3.1. So much potencial to create awsome machine. Amiga + C64 they could make this platform alive. I don't know answer yet, having separate mode doesn't sound like good idea..
1:00 Oh, it was Z80 so no chance for what i just wrote :O I knew there was better mode but Z80?! WTF
There were some programs available for the C64 and C128 that allowed that kind of task-switching or limited multi-tasking but they required programs to be fairly well-behaved and many were not. If Commodore was more forward-thinking they could have provided better operating system support from the beginning that would have encouraged more programs to be well-behaved. Alternatively they could have provided hardware support for that kind of task-switching in later models, but it didn't seem to be a priority. It would have been really interesting to see if Commodore could have successfully brought their C64/128 line into the future but instead they went somewhat half-heartedly into both the Amiga and MS-DOS platforms.
Thank you for all your quality videos so far! When it comes to 1541 vs. 1571 (C128D) compatibility problems, I still remember Turbo Nibbler(s) and ever famous Duplicator programs did not work for my copying needs as having a 128D. The big boys then told me Turbo Nibbler was the weapon of choice for the "trickier ones" (krhm... ..originals..) when copying whole disksides... On the other hand I maybe just had "too tricky" disks.. ;-)
Still, would be very interesting to know now what caused these problems in the first place and if something could have been done.
Frantic Freddie was one my favourite games when got my early breadbin. The music was incredible and how you had to go up one side of the ladder and down the other side was infuriating but added a different dimension to the gameplay. Also the interlude between levels was like Pac- Man. I really wish Commodore would've built a monitor programme into the C64 like they did with the Plus 4 and C128. I might have learned programming instead of just playing games. Cool video Robin.
I remember that one C64/Game Magazine in Germany claimed that 'Rescue On Fractalus' did not run on the C128 in C64-mode.
0:58 Obviously, you can come up with a number like 99.8% using statistical methods.
3:32 In Fast mode, is the VIC disconnected from the address bus and just reading the values that are on the data bus from CPU activity as if the VIC had requested them? I wonder if you can build an image with careful programming.
4:20 Seems unnecessary, since the VIC already had a method to blank the screen. I guess it was easy to wire this new bit into the existing functionality.
15:00 Odd that it scrolls perfectly smoothly horizontally, but is all glitchy vertically.
35:17 What, Dave's a Canadian?!
36:30 You could use a variable and a "." to make the pitch a little higher.
37:52 Page $D5 is the Memory Management Unit on the C128. I'll assume that address $D518 maps to $D508, which is the RAM-bank byte of the Zero-Page Pointer. Though, I guess this stuff isn't active in C64 mode. Though, is the C64 Mode flag at $D505 available in C64 mode? Probably not, since it'd be easier to disable MMU chip selection altogether in the PLA if C64 mode is active.
41:56 Bit 6 of location $0001 is CapsLock read. Games would pretty much only write to $0001 to reconfigure the memory but not read from it.
42:52 Ah, the IRQ routine is changing the Tape Motor bit in response to the Tape Sense bit.
45:41 Pressing the other keys produces a '0' bit on the input lines, so they'd need to add an inverter to the CapsLock line to make it compatible with the software that you were unable to find(!), which means adding another chip to the motherboard. A proper program filters out the bits it doesn't want.
52:01 Do you run into more 1571-compatibility problems if you GO64 instead of Commodore-Reset?
52:56 Is the 1541-II 100% compatible?
re: 99.8%, I have no doubt that number can be calculated somehow; but I'm curious about the data used. Is it based on the number of programs and those that fail? Number of memory locations that aren't fully compatible?
That would be really cool to figure out how to display an image on the VIC-II in fast mode. Or maybe focusing on getting one or more sprites to display something coherent?
Yes, Dave grew up in Saskatchewan. I'm still trying to find where he talked about the Frantic Freddie guys, but one of my patrons did find a talk he gave at the University of Regina as an alumni: ruclips.net/video/Ig_5syuWUh0/видео.html
As far as I know, none of the $D5xx MMU stuff is available in C64 mode.
I did try loading a lot of disks with GO64 hoping to find more 1571 compatibility issues, but didn't find any. It seems I neglected to mention this in the video!! As I understand it, GO64 will leave the 1571 in 1571 (2 MHz?) mode while doing C= + Reset will force the 1571 to 1541 compatibility mode.
It is partially disconnected, as it still handles ram refresh, also in 2mhz mode.
It indeed reads whatever is on the bus during what would have been the vic2 cycle. Creating an image seems difficult, but its certainly possible to produce some predictable effects. Also, as c128 developer who mostly uses and writes for 2mhz mode, I often use it to get an idea of if the machine is actually executing the code I was expecting, as especially loops can be very recognizable.
In 64 mode, the mmu registers are completely invisible, a hardware reset is required to make them visible again.
@@8_Bit re: 1571, what happens is the 1571 always starts up in 'compatibility mode', but switches to 'fast' mode when it gets addressed using the fast serial protocol.
The "test" bit that blanks the screen does more than blank the screen. Blanking is just a side effect. See my comment above for more info. You can actually tweak vertical sync timing to do 320x400 interlace, shift the palette on PAL, etc.
Thanks. I followed along on both the C64 and C128 core on my MiSTer fpga device. I'd love to hear your oppinion on those one day.
I know that Rescue on Fractalus was one of the games that would not work properly on the 128's C64 mode. My friend had a 128 and couldn't get it to run. He figured it was something wrong with the copy, but when I borrowed it from him, it worked on my C64.
Star Rank Boxing (Barry McGuigan's boxing in Europe) was another
I tried a few versions of Fractalus as it was on that list on Lemon64 and they all worked fine for me. So it must be a particular version that I didn't find online. Interesting about Star Rank Boxing, I'll see if I can replicate.
I always follow your videos with admiration and I am amazed at how deeply you know the structure of the C64.
Great respect!
Here's a thought. What about adding a decoder that deselects the vic2 when it recognizes that both the address of one of those new Vic 2 registers is being selected, and a switch installed on the back of the computer. That would solve a lot of compatibility issues.
Back to questions about the CPM system on the C128. How does it work with two active CPUs in the system? Does activating CPM totally shut down the 6510 or does it stay awake and communicate with the Z80? If so, how? I know the C128 has its own Video chip but how does the CPM system put out video, does it use the same 80 column video system as the C128?
Only one of the two CPUs can be active at once in the C128, unfortunately. CP/M mode uses the same 80 column "VDC" as C128 mode.
Love it! Thanks so much as this was a great watch. I recall a few times I had to bring out my C64 back in the day because some software wouldn't work on my 128. It was so many years ago that I don't recall which. I know it wasn't very many. I probably still have those disks though.
2:28 What is that Nintendo 64 disk? :D
A gift from a friend :) He collected all the various Nintendo ports, both official and unofficial, and put them together on that disk.
Hi, Robin. Will you please try to find a non-English native-BASIC-based computer, especially Commodore, and especially a 128 or 64 if feasible, and show us a good little sample of BASIC programming on it, including several error messages (because in all these four decades I don't ever remember seeing a demonstration of programming BASIC in another human language than English, and I think it would be fun to see)?
Also, if you happen to know some of the other high- or medium-high-level languages, like C, on whatever machine you happen to have a compiler of it for, will you please try to find a non-English version of that too, and then compile and run (or maybe another interpreted one)?
The only built-in non-English BASIC I've heard of is a Chinese one in some obscure Apple II clones. I've never seen those or had an opportunity to buy one. A little more realistic to find some day is a French BASIC called "BASICOIS" which probably was loaded from tape or disk for TRS-80 and PET, but haven't yet found a download of it to try.
@@8_Bit: Wow, that's interesting. I would have thought that all those non-English Commodore 64s and stuff had a non-English version of BASIC to go with them. Kind of sad that all those non-native-English-speaking/writing people had to learn enough English just to understand how to program in BASIC; that BASIC is so English-centered.
I had a C128D growing up. I used 64 mode almost exclusively as I was never able to find much 128 software. I did have problems with Project Stealth Fighter and had to return it as I couldn't get it to work. The shop verified it didn't work on their 128 either before they would refund my money.
Anyone who was trying to get the status would use bitwise operations as it is never guaranteed that any value will be in that register... several of my own programs would do memory operations with the first 3 bits to add basic utilities, modify the kernel, etc...
Great work Robin! Always enjoy your videos! Yes peek (1) is definitely an incompatibility issue and the fix is easy. A software "fix" (other than locking down CAPS LOCK) you can do is to simply mask out the effects of that added pin on the 8502 by peek(1)and63. Voila! Compatible :)
With any register that has multiple flags, you should check for only the bit that you care about by doing an AND with the value that you want. So code should really be 'peek(1) and 16 0' on line 20 and 'peek(1) and 16 16' on line 40. Or, if you want to check the cassette motor bit as well as the cassette switch bit, use the value 48 (bit 5 %00010000 is decimal 32).
In one video, you added a number of "new" games to the Commodore 128 ! Another victory for the most famous talking hands in the retro world.
C64 mode normally ran in RAM bank 0, but I remember I was able to run it in RAM bank 1. There was no real point in doing that, I just thought it was a neat trick.
The 128's reset switch defeated the way some C-64 programs protected themselves from being examined. I remember a terminal program for the 64 that put RAM at the top of memory, changing the reset vector so that, if you had a reset switch connected and used it, the computer would display a message that said "That's a no-no!" and lock up. On the 128 in C-64 mode, that won't happen. (I had wondered if there would be a difference between an external reset switch and the built-in one, with only the built-in one able to break out of 64 mode, but no, there wasn't.)
Regarding the C128 caps lock, there's a similar annoying issue on the C64 with the shift lock. Many times the C64 refused to work and I had not realized I accidentally pressed the shift lock. A few times I pulled the whole machine apart in an attempt to fix it only to eventually realize it was only the shift lock causing it heh!
The VIC-II registers were all mirrored too, in all the 64-byte banks from $D040 through $D3FF. I wonder if the 128's VIC-II is wired up the same way as its SID and can't use those redundant registers either. Did Compute! ever release an updated edition of _Mapping the C64_ with notes on the 128's differences?
They released an updated Mapping the Commodore 64 for the 64c, and a separate Mapping the Commodore 128, which is really good and detailed with regards to 128 mode. A must have for anyone wanting to do some more serious programming on this machine.
Frantic Freddie was along with Tapper my first games ever played (back in 1985 being 2 years old). Something not a lot of people know, the red monster in Frantic Freddie will always follow you vertically, you can stay in the middle of the ladder and the red monster will always go up and down until you move. Later monsters like green and grey share the same behaviour. Yellow and blue are completely random though, and horizontal direction is random as well for all monsters.
I wasn't aware! I'll see if I can get further with that info. I think level 7 or 8 is the furthest I've ever got. I've heard that level 16 is unbeatable due to some missing ladders, and I've meant to investigate that sometime.
@@8_Bit On real C64, I reached level 13 or 14 .. level 16 is the last level, and at least from walkthroughs Ive seen, it's finishable. Then you access level 17 which is just an ending cutscene using the game engine. Would love to see a Frantic Freddie video where you analyze the code and quircks.
@@DarkMoe Thanks, it seems that whoever thought there was a level 16 bug was confused and it was actually level 17 and the developers deliberately removed the ladders for the ending cutscene in that level.
Amazing work and video! Will you be going to the World of Commodore this Dec 2 and 3 near Toronto Airport? Thanks for sharing
I probably won't go as early December is a terrible time to travel to Toronto, both due to potentially bad weather, and it being a busy time for my kids with end of school semester and pre-Christmas events. I used to go to WoC fairly regularly and always enjoyed the event and people, but the travelling and particular time away from my family greatly detract from my eagerness to go. I guess I didn't have to explain all that, but that's why :)
@8_Bit I completely understand and thought I would ask :)
@@RudysRetroIntel Thanks for asking, and if you're going, I hope you have a great time :) Maybe it'll still work out for me, but it's unlikely.
@8_Bit I will be going and have a table too. Will be showing my new PET board that I will be selling. It's called PET Companion, which provides external composite video, audio, RGB2HDMI connection, and joystick connection. If you come to the show, I will have one for you for free. Would love for you to review it and keep it. Thanks
One game I had an issue with on the 1571 was Skyfox. Ran fine on my brother-in-law's C64 w/ Enhancer 2000, would hang/not load on my C128 in C64 mode w/ 1571. Mind, this was in... '88, so I fear I have little in the way of details.
I noticed that the broken version of "Frantic Freddie" was 96 blocks, but the fixed version was only 55 blocks. Was it because only the relevant code to demonstrate that it works was included?
After fixing Frantic Freddie I used the "exomizer" cruncher to shrink the file size. It's very effective!
@@8_BitWow, that's impressive! I think this would make an excellent subject of a future video! (hint hint!) Was "exomizer" something that was available for the C64 back in the day? I've never heard of it.
@@JustWasted3HoursHere I'm pretty sure I've shown exomizer briefly in a video or two. Probably the second part of the "Livingstone, I Presume?" video. It's a command line program that runs on modern computers, and really benefits from the huge amount of RAM and CPU power available to it. But it essentially does the same sort of things that packers and crunchers on the C64 did, like "Cruel Crunch" or "AB Cruncher" or dozens of others. I've shown those once or twice too, but I can't remember where :)
About 10 years ago when I was setting up my (current) C64 system, I'd decided on using a C-128 as the 64, as it was more versatile. It didn't take long to discover that C64 mode was not 100% compatible with a real 64.
It only lasted a week before I pulled the 128 and replaced it with a breadbox. Trouble solved.
Hello,
do you know how to create an optional rom for the C128 with my own made lm pgm ?
Also 2 other games you needed to add to this list! Infernal Runner and Rescue on Fractalus!
This was talked about back in the day! 1571 on a C128 defaults to 1571 mode in C64 mode of C128 so this could be why it fails!
Nice to have these bug fixes so those still finding new games which were made back in the early c64 years have came about and may need fixed!
Star Rank Boxing (Barry McGuigan's boxing in Europe) was another
Could we get a video of software that works natively for C128? I know there aren't many, so one video ought to cover it.
There's actually quite a bit of "productivity" type software for the C128, like word processors, spreadsheets and more, which would take quite a while to cover thoroughly. But there's only a small number of dedicated C128 games.
27:49 Unexpected 'Don't Bring Me Down' by ELO :D That first song that plays in the game is apparently Boogie Fever by The Sylvers rather than Daytripper
I used to have a Spinnaker educational game called "Rhymes and Riddles", which I'd run using my C-128D as a youngling. It would work fine for the most part, unless you successfully solved the "One Little, Two Little, Three Little Indians" puzzle, in which case the screen would freak out in a similar manner to what you showed and forced me to reset the machine to fix it. I tried recreating this in VICE but the game works perfectly, so I'm wondering if this is one of those instances of the hardware compatibility not being 100% there but the emulator somehow solving that issue?
Interesting! Two possibilities: the C128 emulator doesn't emulate the freakout properly. If you just start up your C128 emulator in BASIC and type POKE 53296,1 then the screen should go crazy. If not, then the emulator doesn't handle that situation. The other possibility is that the Rhymes and Riddles game was patched to fix the problem and that's the version that's been archived online.
@@8_Bit I'd forgotten the possibility of the game being patched even though I did watch the video where you'd pointed out another game and this being the case. That said, I tried the POKE command in both the NTSC model settings in VICE (C128 and C128 DCR), and it didn't freak out, so I guess it's the emulator.
Wait...My understanding of the datasette issue : If C64 software relies on the push of the play button (PEEK=7), it won´t work on the C128.
Does that, vice versa, mean that the C128 "load,1" can´t recognize the playbutton when CAPSLOCK is active?! or will it check both values C64/C128 resulting from CAPS lock vs unlock?
Datasette load/save works fine on the C128, and anything properly programmed works fine as well. I was trying to find a professionally made program that failed because of this difference in location 1 on the C128 but was unable, so I created my own plausible program to demonstrate the potential incompatibility. If I had written my BASIC example properly (by using AND to mask out the irrelevant bits) I could have made it work on both C64 and C128 without messing around with the Caps Lock key.
Thanks. All we can do is try to spread the word. He does great content.
In the first two games, I wonder if maybe it was being ported to C64 and they copied the loop for setting the values and since on C64 the $D02F and $D030 are nothing, they left the loop as it was. Just strange to have a loop that stores to registers that don't do anything. It works I guess, but later doesn't work on the 128.
Yes, I think Frank Cohen was already very accomplished on the Atari and then ported his games to the C64. It'd be interesting if that was the reason for this loop. I just looked up the CTIA/GTIA registers and coincidentally they're also mapped to $D0xx, from $D000 to $D01F, so the original (theoretical) Atari initialization loop would have gone to $20. It's not a huge stretch to think he would just bump it up to a nice round $30 to accommodate the VIC-II's extra registers and not noticing any problems, just move on.
@8_Bit What is interesting now, if this is possibly the case, is what values were in the array at those locations and why? Were they just the beginning of another array? That would be my guess at least. Oh the things that make our brains spin round. Thanks for this fun one Robin.
Not to sound like I can't figure things out - but how did you get the text to zig-zag in your outro? I know it's BASIC, but I'd sure like to use something like that in some of my programming. :)
Might you be able to share some of that coding goodness?
In any event, this was a very informative video, and thanks so much for showing us
"mere mortals" the INs and OUTs of the two Commodore machines!
Awesome video! I love the C128... I really want to get one but they are hard to find for anything near reasonable prices. I've always wanted to write some software for the C128.
Lovely song at the end there, can we get some info?
Thanks, it's an unreleased song from an unreleased album from my band. I gotta get around to releasing it. Here's a much earlier/rougher mix of another song that will be on the same album: ruclips.net/video/U1VKwqUWYa8/видео.html
Not sure how I feel about reminiscing through the EARLY days of Commodore gaming, (which were GREAT times), with an Atari box and logo in the frame the whole time??!!??
Another great video Robin!. Frantic Freddie is DEFINITELY a warm, fuzzy classic and you are 100% on Cohens Tower, I vaguely remember saying. "F-this stupid game!!" It's brutally hard!
I would hope so, but I've never tried.
I deliberately put the Atari box in frame in the new video I just recorded ;)
Sounds like the intro tune in Frantic Freddie is actually Crazy Little Thing Called Love by Queen (from their 1980 album The Game)
Yes, and rumours abound that it was Freddie Mercury of Queen that inspired Frantic Freddie's name :)
Fun stuff :) I never had a C64 back in the day and only got a used C128 around the time that Amigas started coming around but I loved it. Was lucky enough to get it with a 1541-II . So some of those games that I never got to work could possibly have not worked due to these little quirks, interesting!
Fun fact about playing Bard's Tale 2 via the 1541-II; quite by accident I flipped up the disk lock before moving a wand from one character to the other at an inn (IIRC) and I noticed that it was instead copied, so the original owner still had and the new owner had it as well :D Guess if I used that glitch to have a fighting chance in the beginning :) Guess it should also work on the original 1541 :)
Pretty sure I've played both Delta and The Last V8 but the first one could be because I ran it from disc, or maybe it was just the pirated version that works? I'd understand if that solved any copy protection issues but that 2MHz-issue must have been solved by someone... Reminds me that I have to try my copy of Psycho Soldier on the real C64 I have not yet tested. Didn't get my original to work on my C128 when I tried. Seem to remember I had issues on a real C64 as well unless I loaded it in just the right way (copy protection I think...)
He-man was the only game I came across that did not work back in the day. I remember feeling annoyed that my friends could play it but not me. 🙂
That would be very frustrating! I hope you were able to play some of the C128-enhanced games to make them jealous too :) Andrew Braybrook often made his games a little better for the C128.
The Goonies by DataSoft won't load on my C128D from the internal 1571 drive. I don't know if it's the C128's C64 mode, the 1571, or a combination of both.
Cool, thanks for the tip. I thought I tried it but maybe not, or maybe it's a 128D specific thing which would be extra interesting :) I'll give it a try.
This was awesome Robin!
Kevin Pickell - I knew I recognised the name! He went on to work at EA Sports and in particular on the first FIFA games for the Megadrive, pretty sure they named the players after the development team so I scored plenty of goals as Pickell.
This is amazing work man!
I'm curious if it's possible for a program to detect if it's on a C64 or if it's on a C128 in C64 mode ?
well , i am not an expert but if you time a loop on a real 64 and poke that 2MHZ Byte (which does nothing if i am correct)and then time the loop again on a C64 within a C128 (with the poke working) the loop finishes earlier thus a programm then knows it runs on a C128 in C64 mode. But there maybe a simpler way to determine the machine :)
You know, my first C64 experience I can remember was on a commodore 128d. I was around 6yo back then.
It is said I could use one of these before I could read.
I know Rescue On Fractalus didn't work.....found out how to fix the 2Mhz bug the hard way...thank God for the C64 Programmer's reference guide. Awesome video as always!
Huh I had no idea the 128 had that bug with the switch sense line. My Bleepload transfer I recently uploaded to CSDB will fail on the c128 then if you want an actual program to test with.
Hi Scott, good to hear from you! So Bleepload is a particular cassette load system and you've made a program that can automatically archive those tapes? That's awesome! I did a quick search for Bleepload and I guess it was made for multiple platforms? I'm getting more Spectrum and CPC hits but obviously there were a lot of games that used it on the C64 too.
The box for your copy of Gemstone Warrior says C64/C128. Did the original version say that, as well? I'm thinking no.
Yeah, very likely there was an original v1.0 release of Gemstone Warrior that was pre-C128, and I've got the later compatible release.
Another fantastic video again.
What are the lyrics to the song ?
The Ilearth ("Illearth") Stone has to be a reference to the Thomas Covenant novels by Stephen Donaldson. How the game got that name I couldn't say; it doesn't seem that the gameplay has anything to do with the books.
Could it have to do with different rom versions in the 1571 wether it works with copy protection or not?
That is possible! I've also heard the disk drive built into the 128D has some compatibility issues of its own; I'm not sure if that's due to ROM versions or what.
@@8_Bit What you said later in the video about a possibly incompatible chip in some revisions of the drive is close enough I guess. You know much more about this than I do but a heathy discussion is always nice. :)
35:45 Wait, a Canadian is created for PC-98 and FM Towns games? That's a shock.
I suspect at roughly the 50 minute mark any game that relies on the error 27 at a specific track and sector doesn't work on the 1571 as opposed to the 1541 because hardware...
I yearned after a Commodore64 because of the "He-Man and the Masters of the Universe", but my cracked copy must've been fixed because it ran fine on my C=128D (once I finally got a C=64-compatible system). It's hilarious hearing it play so sped up because of NTSC! Idea for a video: fixing that with the CIA IRQ replay.
I love Ghost Chaser too! I just love the idea of breaking in to a scary house. Its' like maniac mansion as a platformer.
Curious, how hard would it be to hack the games to run in straight 128k mode? As you can tell I know next to nothing about architecture differences, but nievely, I'd imagine that C128 mode had a reasonable overlap? would be interesting just to see what happens trying to run C64 games in 128 mode :D (course, it could be none work; Though would make an interesting video why that is)
I wonder about the MiSTer and VICE with your C128/C64 compatability tests.
I don't know about MiSTer but I have a few different versions of VICE on my computer and it's only very recent versions that seem to handle some of these C128 compatibility issues properly. Older versions of VICE just carry on fine when a real C128 would crash or become inoperable. I haven't done a thorough test of it; I'm mainly interested in the vintage hardware and just use emulators as a tool when convenient.
@@8_Bit and I applaud you for it. Anyone can use an emulator (it's all I have at the moment), but I appreciate you going the old school route and bringing us the *real* stuff.
Z64K offers pixel accurate C128 emulation - it even accurately replicates the POKE 53296,1 behavior. I guess Z64K would give same results with these games as the real hw.
You have to wonder how many more C128s Commodore might have sold if it was able to run in C64 Mode at 2 MHz as well as at 1 MHz.
Maybe, but unlike what some seem to believe, the C128 sold really well, with the total number of units sold being approx 10 times the number Commodore expected to sell when introducing it.
That means the number of C128s sold is approx the same as all 'non GS' Apple II models combined.
Sales wasn't really a problem with this machine, despite there not being that much software which took advantage of its capabilities.
Uhm, in C64 mode it WAS able to run in 2 MHz. But (just like in C128 mode) with no 40col VIC display output. Thats the issue here...
@@Lofote that’s what I meant - to run games that struggled at 1 MHz at 2MHz with the VIC II able to keep up.
@@c128stuff Yes, that’s true. In our collective memory it’s overshadowed by the Amiga, but they still moved a lot C128 of hardware. I think it’s a great machine, just don’t run CP/M on it. 😀
@@Doug_in_NC Ah they would had to redo the whole VIC chip then, because it was so perfect in timing, that it would be hardly compatible to the old one ;)... Timing is hugely critical on those old machines with racing the beam ;)...
So only C128 in 80col mode could do 2MHz. But around 1,25Mhz was possible in both C128 40col and C64 mode by switching to 2 Mhz during vertical blank, while the screen borders where drawn, some games and an addon for GEOS used that trick to get a bit extra speed.
Oddly I remember Commodore’s International Soccer not working on the C128 in C64 mode.
I guess Frantic Freddie must not use the SID for random number generation (seed etc), or at least the routine that did that used the correct base address, assuming there is any randomness to the monsters etc at all?
Yes, I think there is some randomness to the monster's movement, but it doesn't seem to use the SID at all for that randomness. I assume it's using some other timer or counter that works well enough for the purpose, but I haven't looked into it.
Greg Malone, as in Minit Man (mainly on the Apple ][)?
Yeah I remember my uncle buying one of these when they came out. I absolutely loved the quality of this computer over the C64 I had. But yep was almost 100% in C64 mode... have fond memories of playing Scarabaeus on it... we had no idea what we were doing... :D
Are those changes in the machine code permanent?
What I (still) wanna know is why like no software titles were ever produced for the then-new C=128? ???
I've meant to make a video about this sometime. It's actually a myth that no software was produced, but there were very few C128-only games. There was a good amount of business and productivity-type software for the C128 though, like word processors, spreadsheets, and GEOS128 for example.
@43:26 So spooky just in time for Halloween, your C128 typed in that program all by itself! :O
@45:28 "What a dumb computer" perfect comic timing, made me laugh out loud!
Well how compatible was it with CP/M?
Ultimate Wizard and Ace of Aces on the original floppy - oh my God.
More CanCon! Enjoyed the video, Robin.
Hmm.. so maybe my datasette wasn't broken some 35 years ago when I upgraded to a C128. I didn't have too many games on tape, so I never bothered trying to fix or repair it.
Generally the datasette will work on the C128, but some software will fail. Some of those titles should be fixable by pressing the "CAPS LOCK" key before you load. I guess you don't still have it to give it a try :)
I own a c128 I never did have any issue with it ever. Best computer I own in the 80's (still owns it and it still works)
The C128 is a great computer. As shown in this video, the incompatibilities were very rare.
@@8_Bit yes I did not found one of the games I did have.
Hi Robin, Ghost Chaser is another from Frank Cohen. Does it work? I liked it back in the day. Played fine on my c64, of course.
EDIT: OK, So you like Ghost Chaser too. I take it it works on the c128. Also, How did you bring Frantic Freddie from 96 blocks down to 55? BTW, As soon as you mentioned Kevin Pickell I right away went back to the Disk Doctor program he made.
Yes, Ghost Chaser is great and it works fine on the C128 already.
After I fixed Frantic Freddie I used the "exomizer" cruncher to make the file smaller. It's a great utility.