- 30
- 58 863
The 8 Bit Theory
Austria
เข้าร่วมเมื่อ 22 พ.ค. 2022
The C128, VIC-20, C64, Mega65, and Commander X16 generate QR Codes. In Basic, C and 6502 Assembly
We go through the process of generating a QR-Code. And compare performance of implementations in Basic v2, v7, Basic65, C and 6502 Assembly Language.
Links to content mentioned:
www.nayuki.io/page/creating-a-qr-code-step-by-step
www.godot64.de/german/m_qrcodegen.htm
en.wikipedia.org/wiki/QR_code
github.com/c1570/Reblitz64
csdb.dk/release/?id=106999
mega65.org
www.commanderx16.com/
Links to content mentioned:
www.nayuki.io/page/creating-a-qr-code-step-by-step
www.godot64.de/german/m_qrcodegen.htm
en.wikipedia.org/wiki/QR_code
github.com/c1570/Reblitz64
csdb.dk/release/?id=106999
mega65.org
www.commanderx16.com/
มุมมอง: 402
วีดีโอ
C128 re-creating Ultima 4 EGA Opening Sequence Part 2. In Commodore Basic on the VDC Chip
มุมมอง 9238 หลายเดือนก่อน
We're using Ultima IV's Opening Sequence to show how animations work on the VDC-Chip The code for this episode can be found here: github.com/The8BitTheory/vdc-u4opening opening2 and u4.d71 are the relevant files for this episode U4-decompiled can be found on github.com/ergonomy-joe/u4-decompiled Ultima IV resources have been taken from wiki.ultimacodex.com/wiki/Ultima_IV_internal_formats Get th...
The C128 re-creating Ultima 4's EGA Opening Sequence Animations. In Commodore Basic on the VDC Chip
มุมมอง 2.7K10 หลายเดือนก่อน
We're using Ultima IV's Opening Sequence to show how animations work on the VDC-Chip The code for this episode can be found here: github.com/The8BitTheory/vdc-u4opening U4-decompiled can be found on github.com/ergonomy-joe/u4-decompiled Ultima IV resources have been taken from wiki.ultimacodex.com/wiki/Ultima_IV_internal_formats Get the z64k emulator here: www.z64k.com/
Ultima IV Opening on the C64 and the Amstrad PC1640 EGA. Side by side CRT. Sound by SID.
มุมมอง 44210 หลายเดือนก่อน
Opening Sequences of Ultima IV. Side by side on CRT screens. C64 is running the Remastered 2.2.1 Easyflash on an Ultimate II . github.com/MagerValp/u4remastered The PC1640 is running the Version available on gog.com - without Dosbox of course :-D
Solved: Horizontal 16-EGA-Color Bitmap Scrolling on the C128's VDC-Chip!
มุมมอง 1.6Kปีที่แล้ว
This is how you scroll 16 color bitmap graphics on the Commodore 128. The code for this episode can be found here: github.com/The8BitTheory/vdc-horscroll The previous video showing all the details of this problem: th-cam.com/video/NLUrxx0t2HU/w-d-xo.html Get the z64k emulator here: www.z64k.com/
Blitz!64 and Blitz!128 Commodore Basic Compilers. Plus a bit of X16 and Mega65.
มุมมอง 3.7Kปีที่แล้ว
Blitz! is one of the easiest to use Basic Compilers. This video gives full insight into * Speed * C64 vs C128 vs X16 vs Mega65 Performance Benchmarks * Split your Basic Code into Modules * and much more! Blitz! was also released as AustroComp and maybe more names. But it‘s basically the same program. Links: Sourcecode shown: github.com/The8BitTheory/blitz-compiler Blitz! 128 download: commodore...
Scroll Fullscreen EGA-like Graphics using Basic on the C128. Much easier than on the C64
มุมมอง 6Kปีที่แล้ว
This time we're leveraging the VDC chip's hardware scrolling capabilities, block fill and block copy to bring some motion to the screen. Deutsche Version dieses Videos: th-cam.com/video/le7WBDwDQ2g/w-d-xo.htmlsi=RAKE9mkk1hf910_q Find this episode's source code here: github.com/The8BitTheory/vdc-scrolling VDC-Basic is available here: github.com/The8BitTheory/vdc-basic The VDC-II project on hacka...
EGA am C128? Sieht großartig aus!
มุมมอง 605ปีที่แล้ว
English Version of this video: th-cam.com/video/ES4eBcKxmE4/w-d-xo.html Wir vergleichen EGA Grafikkarten mit dem VDC-Chip vom C128. Wenig überraschend schlägt sich der C128 echt gut :-) Programmiert wird wieder in Commodore Basic 7, inklusive der 30 Jahre alten VDC-Basic Extension. Find the english version of this video here: th-cam.com/video/ES4eBcKxmE4/w-d-xo.html Den Basic-Code, Farbpaletten...
EGA on the C128? And it looks great
มุมมอง 24Kปีที่แล้ว
Errata: VGA was actually introduced in 1987, not in 1989! German version of this video here (including a small scene featuring my Amstrad PC1640 showing Ultima V EGA on a CGA monitor): th-cam.com/video/79ypQEWnoNU/w-d-xo.html We compare capabilities of EGA graphics cards with the VDC-Chip. Not surprisingly, the VDC-Chip holds up pretty well. Programming is done in Commodore Basic 7, introducing...
C128 zeigt CGA in 16 Farben bei 160x100. Mit der 30 Jahre alten VDC-Basic extension
มุมมอง 793ปีที่แล้ว
In diesem Video stellt sich der VDC-Chip vom C128 der CGA-Grafikkarte aus dem IBM-PC. CGA-Lowresgrafik mit 160x100 Auflösung in 16 Farben wird am VDC-Chip dargestellt. Programmiert wird das Ganze in Commodore Basic 7 mit Hilfe der 30 Jahre alten VDC-Basic Extension. Find the english version of this video here: th-cam.com/video/yvTVJPRz8GY/w-d-xo.html Quellcode aus dem Video gibts hier: github.c...
C128 Basic 100x faster? - Fast like a Flash: the Basic Microcompiler - RLE decoding on the C128
มุมมอง 1.9Kปีที่แล้ว
We're using the only Basic Microcompiler on the C128 in existance (?) to compile a very slow Basic Routine directly into Assembler Code. Find the MC128 for Download on GitHub: github.com/The8BitTheory/mc128 The links mentioned in the video are: github.com/EgonOlsen71/microcompiler www.youtube.com/@EORetro Looking forward to your comments here below the video This video is also available in Germ...
C128‘s VDC vs IBM XT‘s CGA: 16 Color Graphics using the 30 year old VDC-Basic extension
มุมมอง 5Kปีที่แล้ว
This video compares the C128's VDC chip to the IBM-PCs CGA technology. It shows how CGA-Lowres graphics in 160x100 resolution with 16 colors can be displayed on the VDC-chip. Programming is done in Commodore Basic 7, introducing a 30-year old Basic extension called VDC-Basic. Find the german version of this video here: th-cam.com/video/DrqkpNE_LRQ/w-d-xo.html Sources shown in the video: github....
C128 Basic 100x schneller? - Microcompiler so schnell wie Nachbar's Lumpi - RLE Entpacken am C128
มุมมอง 1.7Kปีที่แล้ว
C128 Basic 100x schneller? - Microcompiler so schnell wie Nachbar's Lumpi - RLE Entpacken am C128
Basic und Echtzeit am Commodore 128: „Neuer Arbeiter eingetroffen!!!" - Zeit der Gilden 10
มุมมอง 219ปีที่แล้ว
Basic und Echtzeit am Commodore 128: „Neuer Arbeiter eingetroffen!!!" - Zeit der Gilden 10
Tuned Simons' Basic - Beautiful as a Vermeer
มุมมอง 2.4Kปีที่แล้ว
Tuned Simons' Basic - Beautiful as a Vermeer
Neue C128 WiSim - Zeit der Gilden - Alpha Version Einblicke
มุมมอง 281ปีที่แล้ว
Neue C128 WiSim - Zeit der Gilden - Alpha Version Einblicke
"Big" Data mit Commodore Basic - Excel als Basic-Codegenerator
มุมมอง 295ปีที่แล้ว
"Big" Data mit Commodore Basic - Excel als Basic-Codegenerator
Karren versenden und Waren handeln in Commodore Basic - Der Brauer, eine neue (alte) WiSim - Teil 9
มุมมอง 217ปีที่แล้ว
Karren versenden und Waren handeln in Commodore Basic - Der Brauer, eine neue (alte) WiSim - Teil 9
How to make REU and GeoRAM work with Commodore BASIC easily
มุมมอง 1.5Kปีที่แล้ว
How to make REU and GeoRAM work with Commodore BASIC easily
Der Brauer Teil 8 - Karren beladen und entladen
มุมมอง 234ปีที่แล้ว
Der Brauer Teil 8 - Karren beladen und entladen
Der Brauer Teil 7 - Händler und Marktkarren
มุมมอง 152ปีที่แล้ว
Der Brauer Teil 7 - Händler und Marktkarren
Datenmodelle und Performance für eine Commodore WiSim - Der Brauer Teil 5
มุมมอง 266ปีที่แล้ว
Datenmodelle und Performance für eine Commodore WiSim - Der Brauer Teil 5
Wirtschaftssimulation in Commodore Basic: Güter produzieren - Der Brauer Teil 4
มุมมอง 276ปีที่แล้ว
Wirtschaftssimulation in Commodore Basic: Güter produzieren - Der Brauer Teil 4
Basic WiSim: Arbeiter, Gebäude und Rezepte verwalten - Der Brauer Teil 3
มุมมอง 321ปีที่แล้ว
Basic WiSim: Arbeiter, Gebäude und Rezepte verwalten - Der Brauer Teil 3
Benutzeroberfläche in Commodore Basic - Der Brauer Teil 2
มุมมอง 516ปีที่แล้ว
Benutzeroberfläche in Commodore Basic - Der Brauer Teil 2
Die Gilde in 8 bit? - Der Brauer Teil 1
มุมมอง 1.1K2 ปีที่แล้ว
Die Gilde in 8 bit? - Der Brauer Teil 1
Neat! 👌
Glad you like it!
I'll start with 'alles Bahnhof', but it was very interesting {I'll probably need to re-watch it}. I never really got busy with QR codes, watched this until the end anyway {because also C128 was involved, haha} Just out of curiosity, i typed just an 'a' to create little QR Code while visiting nayuki webpage. Sure it did create it. Then i also typed 'commodore' and that used even less squares than just an 'a' I am wondering if that is so because QR Codes must look as QR Codes and therefore things are added, but are actually having no real meaning or is the whole content mandatory?? The idea is: it would make it significantly faster on retro computers if the unnecessary data could be left out?
The QR Codes grow in steps of 4 (the versions). Each version has a defined "capacity". If less characters are given, the remaining space will be filled with 0xEC 0x11. The Basic generator always generates Version 5 codes, and I think the repeating pattern because of the padding is very visible in these QR-Codes. So, "a" should definitely result in a smaller code than "Commodore". Speed of code generation is mostly similar between versions. So, reducing by a couple of characters only matters if that results in a smaller version.
Well explained. There is much more to QR codes than i previously thought,
Fully agreed, that topic is a rabbit hole 😁. Thanks for your feedback
Absolutely brilliant! Thank you for creating this video to show off your impressive work.
My pleasure! I enjoyed every second of the journey ☺️. Glad you enjoyed it
Great work, explanation, and demonstration!
Glad you liked it! Thanks!
Hi.Just put my hands on a C128, I had a C64 when I was young (1983).I wonder whether it's possible to display 40x25 characters on the VDC, with 4 colors per character
You can set the registers so it displays 40x25. 4 Colors won‘t work in textmode, but 4 shades of gray should work
@the8bittheory thanx. And because I own french tv sets with scart connectors, I can enjoy sharp image on a lcd display. Scart is still the goto
I would think that 640x200 in 16 colours should be possible, or 320x200x16 with dual page buffers or screen+sprite buffer, as the VRAM is 64kB. The VDC now feels a bit like a failure, and not an improvement. The only positive is no jailbars and chroma bleed.
You might be interested in the VDC-Modemania Demo. I think that shows the potential pretty well. Thanks for your input!
What is the fastest way to create 1 bit wide soft sprites on the vdc.
I mean to render 32x32 pixel sprites of 1 color.
The transparent parts of the Sprite need to be ORed with the background pixels in CPU RAM and then written to VRAM. Probably one of the slowest things you can do. If the background is predictable you might be able to keep pre-merged Sprite data in VRAM and use block copy.
@@the8bittheory thank you. I use also a technique to render in advance in ram 8 images of the same sprite, bit shifted with 1 bit to the right. So they can be quickly or-ed.
@@the8bittheory I'm sure you're fighting the same speed issues ... Still, I do believe that the vdc should be able to achieve acceptable speeds in 320x200 pixel screen mode.
Working with only screen ram or attribute ram speeds things up quite a bit. For VRAM-only operations it should be fairly quick, I agree
500 Dollar für den 128d? Am Ende, am EOL im Abverkauf vielleicht...
Der Preis versteht sich ohne Monitor und Zubehör. Einführungspreis für den c128 waren 300 $. 500$ für den 128D scheint mir legitim zu sein.
Nooooo this optimization of BASIC seems like something you would find in JavaScript $A = "Hello" + ""
Ha, right :-D
Oh, please keep these fantastic C128 VDC vids coming! incredible, incredible work! 👍👍👍
Thanks for the input. I‘ll definitely try to get back into the routine :-)
I enjoyed the video. For the Commodore 64, I have two Basic favorites. The one that comes with the computer and the recently released Vision Basic. As a compiler is faster than Blitz and allows greater flexibility with graphics and inline assembly language programming.
Glad you liked the video. I also enjoy Vision Basic a lot. I need to find some time working on something serious with it :-)
In the late 80s I downloaded a copy of the Austro Speed compiler for C64 from the Quantum Link online service in the US. Insofar as I'm aware now, it was identical or nearly identical to Blitz! apart from the name, though at time I thought it was public domain software. I didn't use it a lot, as I mostly programmed in C128 BASIC, but I did find one great use for it. There was a Rogue-like RPG I really wanted to like called Telengard. It was commercial but written entirely in BASIC, and while quite good it played very slowly and was a test of patience. In 1982 when it came out, I'm sure people didn't have high expectations when it came to performance, but I came to the scene six years later and newer games written in assembly had already spoiled me. Running the Telengard code through Austro Speed made it play fast enough for me to really enjoy playing, and I was able to start making good progress, exploring many more levels of the vast dungeon in much less time. It ended up becoming one of my favorite RPGs, and if it hadn't been for that compiler it might've been something I only played a few times and then moved on.
D.h. der VDC kennt keine Color-Cells wie der VIC-II?
Es gibt schon auch Color Cells. Die sind aber anders angelegt als die am VIC-II. Deren Größe ist variabel und pro Cell sind nur 2 Farben möglich.
3rd party developers really let that machine down the games could have been better than some nes titles but they only sold 2.5million c128s twice as many as a commodore 16 and that had over 500titles while the c128 had about 27 but thats commodore....they were funny buggers
Right. But also, there was next to no documentation of the VDC chip‘s bitmap mode, or it’s 64kb capabilities, for example. So the chip just wasn‘t attractive to any game developer I think. Thanks for your input!
@the8bittheory did u know that a plus 4 can intrupt the raster to produce a resolution of 496x320 graphics with the Ted chip
@the8bittheory the +4 could use raster intrupt and achieve 320x496 they use 6502 assembly in this mode
Super cool, I am really enjoying your work with the 128's VDC. Thanks for sharing!
Thanks for the great feedback! Glad you enjoy it :-)
8:36 There's less flickering if you copy the color attributes before the bitmap.
I‘ll try that. Thanks for the input!
this is just amazing!
Thanks for the great feedback!
I can't say I recognize him, but I look forward to finding out more.
He‘s part of the Ultima 4 opening sequence. Video about that coming soon :-)
I would guess the fade-in of the Ultima logo is done by covering the logo by less and less blocks of random black pixels, so basically doing a form of crude dithering. You could do it in reverse by grabbing random blocks of the logo from the back buffer and put them on the visible area of the screen, instead of blitting the whole logo as a whole. The "waving flag" effect could be done by shifting the scan lines left and right in an alternating fashion while copying in the logo.
Yes that could work. The actual puece if code was already explained in another comment here, but it‘s probably not going to work that way on the Commodore. So, an alternate approach like yours will probably make sense. Thanks!
Wasn't one of the VDC's shortcomings that it didn't have the performance compared to the VIC? A lot of games took heavy advantage of the VIC's hardware capabilities to make them run fast and smooth, I have no idea whether the VDC was also somewhat capable of doing that, or if it was more of a 'dumb' display adapter that just displayed whatever you put in VRAM and not much more. PC's didn't really have that limitation since the EGA was already pretty much a dumb adapter from the start and CPU's were fast enough to handle the simple bit-banging method of generating graphics, so it didn't need any accelerating features like hardware sprites. With regards to graphics quality games like Sierra or LucasArts adventures would really have shined on the C128. Imagine "The Secret of Monkey Island" releasing a few years earlier with Michael Land's music on (stereo?) SID sound.
It‘s mainly the missing sprite capability and the lack of raster interrupts that really limit the chip. In-memory operations are ok in speed, I guess. And 64k of VRAM make up for a lot of things. It‘s no arcade chip, though. EGA was no better, you‘re right. But the 286 and 386 have much more horsepower to make it shine. Soft-sprites are no problem with sufficient processing power. LucasArts games should have worked. Sierra not so much because the vector drawing doesn’t go well alongside the color-resolution limitations of the VDC.
Great video!
Thank you!
Outstanding video, thanks for your hard work.
Glad you like it. Thanks for the great feedback!
ah so there is a work around, I was originally trying to get 160x100 mode working on a 16K chip, by using the offset mode, as I don't care about the bitmap data looping around in memory as the bitmap is identical for the whole screen. But I ran into issues, maybe the solution was to put the Attributes then Bitmap rather than Bitmap then Attributes. Does it behave the same on the other VDC chip? as it has the scrolling offset backwards it might change the fix required in this case as well.
Interesting thought about the other VDC-chip. Unfortunately I can't verify that as I only own newer VDC chips. And Z64K doesn't offer different VDC-revisions afaik. How does 160x100 work on a 16k chip? I haven't found a way to do squeeze all the data in. Thanks for your input, highly appreciated!
@@the8bittheory well if bitmap offsetting worked what you do put it in memory bitmap row attribute row bitmap roe attribute row now the trick here is you will run out of memory for the bitmap, however the bitmap is just XXXX0000 for every char on every line, so if the bitmap wraps around the 16K mark back to $0000 it will then just get the same bitmap data which is fine. But you then get a unique line for each attribute
I think I understand. That could work. Address-Increment-per-Row set to 81 and visible columns to 79. Not for scrolling, but for having interleaved memory addresses. The start of Attribute-RAM would be at 0 Start of Screen-RAM would also be at 0. Bitmap data 0x0F is filling 80-159, 240-319, 400-479, etc (the "interleaved" screen-rows) Attribute data is FG/BG-color filled into 0-79, 160-239, 320-399, etc (the "visible" screen-rows) While this looks like visible and invisible memory areas are overlapping, it should actually be not. Because of the weird latching(?) behavior that's responsible for the 79-bytes offset between screen-ram and attribute-ram. Let me know if you get around to trying that :-) Maybe I'll find the time to try that, too
I tried this now, but it only really works for the top half of the screen. However, I had to set both, starts of Attribute-RAM and Screen-RAM to 80 to make it look right. So, I'm still pretty sure I misunderstand something about memory alignment. We'll see ...
@@the8bittheory there is something with the memory layout in 16K emulation with 64K ram installed which might explain why "half the screen works" maybe in that it doesn't give the same actual bits that you are skipping/rely upon in the latch issue?
It's too bad that the C128's VDC chip was not utilized more by developers. I know the 8-bit guy's "Attack of the PETSCII Robots" for the C128 allows you to use a second monitor (which uses the VDC chip), but I can't think of another example, sadly.
The c64 port of Eye of the Beholder also uses it for displaying the Automap. But it‘s only used as a secondary display, not fully using its potential. Thanks for your input!
@@the8bittheoryNow that you mention it, I do remember reading about that. This is the home brew version of Eye of the Beholder, right? (The original version for the Amiga is my brother's all-time favorite game on any system ever. He used to sit and play that game for 10 or 12 hours at a time, or until our mom said, "Go outside and play for crying out loud!")
@JustWasted3HoursHere Right, that‘s not an official release. Sounds like my mom 😁
@@the8bittheoryThe homebrew scene is red-hot right now and I'm loving every minute of it. We're seeing what's possible when you can take your time and work on it until it's perfect, instead of being rushed so that it can be ready for the upcoming holiday season. Funny thing about my mom: She was always making fun of us kids when we'd play some of those old games and yell at the screen, "Oh come on! That guy was nowhere close to me!" etc. But, she's going to be 81 this year, and guess who discovered video games after she retired and now does the same thing? Yep! Also funny: She's played Tetris Attack on the SNES so much that I can't even beat her. She's an inhuman monster on that game! [side note: That's one of the best designed puzzle type games I have ever seen on any system.]
With so many restrictions, this micro compiler doesn't really bring any advantages to just writing the code in assembler, for example in Turbo Macro Pro and targeting the C=128. It's basically in the same class as the cc65 C compiler, which does not have the basic float and double data types, and therefore cannot do floating point arithmetic, and doesn't come with libc, which pretty much defeats the purpose of writing software for the C=64 in C, or compiling existing body of C software for the C=64. These pieces of software are the antithesis to core UNIX software design principles.
From today's perspective that's completely right. Back then, the micro compiler was a type-in program. It basically came for free (well, the price of the magazine), which was one of the main benefits, I guess. All the restrictions only make it useful for targeting very specific tasks, not for writing full programs. Any probably only for people who aren't familiar with assembly language.
By the by, "variable" in English is pronounced the same way as in German, the only difference being that the "a" in "va" is short, not long. Pronounced "Weriable".
I'll keep that in mind, thanks! Highly appreciate your feedback :-)
@@the8bittheory ...and I appreciate how much you go into detail, and also that you've decided to do a series of videos on the C=128, because it's not a well documented, well understood system, and there should be more (modern) software for it to exploit its full capabilities in comparison to the C=64.
Your vdc videos are the most exciting thing for me on youtube currently. Thank you for these videos and any future videos!
Glad you like the content! It’s amazing stuff for me, too :-) Thanks for the amazing feedback!
When you copy the logo and paste it an you copy out psudo random parts and past them on so it appears in blocks. You would need to create a data table of the copy positions but it should work and look passible.
That‘s probably the best way to do this. Maybe I can even extract the data table from the original DOS source code Thanks for your input!
What? The c64 was famous for its arcade ports and fast games. It was comparable to the nes.
Absolutely agreed. Did I say something different?
@@the8bittheory I might have misunderstood, but I thought you said the c128 was good at playing slower type games implying it couldn't handle faster arcade type games.
You understood right. I was referring to the VDC chip, but probably wasn‘t very clear on that. With the VIC-II, the c128 is great for fast paced action and arcade games.
@@the8bittheory Oh, I see! Yes, I can see that. I'm not too familiar with the C128 architecture, but the vdc was the 128s text display chip? Ok, I can definitely see how that applies then. Thanks for clarifying!
You‘re very welcome. Thanks for your input!
And fwiw, drawing the Ultima IV logo the same way as the DOS version is going to be hard to do with that VDC basic extension, as you would probably have to draw it pixel by pixel, which will be too slow. Looking at the drawing code of the DOS version, it blits the logo 56 times, and uses the table at D_32D0 to mask out different pixels in each step. It's the code at C_17C1 that's ANDing the mask for each of the four bit planes that are being written. At offset 56, that table contains a mask of ffffh, so then all pixels will be set.
Thanks for providing these insights! Right, I'm also pretty sure the Ultima IV Logo won't work that way by using VDC-Basic.
The Ultima IV logo doesn't appear in one go, because it takes to long to copy the data within one frame, so you can see it for one frame without the correct attribute data. I'd try to copy the attribute data first, before copying the pixel data.
Thanks for the input, I didn’t think about that before :-)
You may even be able to exploit that to accomplish the fade-in effect. Since you can just place the pixel data without modifying the attribute data, you can put random data blocks in the attribute memory to manipulate the color (going from black to the eventual colour), and use the pixel data to shift the logo around in the meantime, so you don't have to render in the entire logo pixels every time.
Happy and healthy new year! Very interesting video, you got a new subscriber! Thank you very much!
Happy New Year! Thanks for the great feedback and welcome on board :-)
Your study of EGA and the C64 is amazing! It brings up questions I have had recently about the relative merits of an early x86 PC with EGA versus the Commodore 64. It seems as if the C64 was a really great gaming computer for its time. Better than the early IBM PC with CGA. With EGA, it becomes somewhat closer. A 286 with EGA could run games like Keen 1. However, that setup is much more expensive than a C64, and came much later. So it feels as if the value proposition of a C64 was very high relative to IBM, for a long time. EGA cards were bitmap-based in their drawing, I think. VIC-II had HW sprites. So the latter would have been far more efficient for platforming and other functions. I'm just wondering, what do you get for all that $$$ and giant EGA card in an IBM? It seems EGA had an advantage in bitmap graphics. If you look at some of the adventure games that ran on it, they were more detailed and higher-resolution than what a C64 would produce. And 8086 with EGA could run a game like F-19 Stealth Fighter sharper than C64. But it shouldn't have been so close! I guess maybe an IBM PC with composite CGA-out would have been a closer match to a C64. The Commodore had many games optimized for it come out, but IBM PC with composite CGA had far fewer games that were optimized for that specific configuration. Otherwise, gaming on that particular model of PC could have been better. So it's partly about optimization.
I agree with everything you said. And you can even add sound and music to the comparison. For gaming, the c64 was the much better option for the price. Maybe the c128 with it’s 80 column output is closer to the PC‘s definition. With regards to gaming, I like the CGA-composite you‘re bringing up. This wasn’t an option for non-NTSC regions, btw. Thanks for your input!
First of all in 1986-1987, which is when both PC gaming took off and the C64 was at its peak, a turbo XT clone with 640k 8088@8mhz and EGA cost just over US$500. By 1989-1990 a 286@12-16mhz with VGA cost the same. By comparison a c64c with a 1541c disk drive was $420. PC clones were actually cheaper than the C128 (with a disk drive) while offering more memory, faster & cheaper storage options, better resolutions, better keyboards, and the ability to run real software. In terms of gaming, the c64 was definitely better than the original IBM 5150 but it was purely a business machine not intended for gaming or the home market and hence games in 1981-1985 were never made to take advantage of its capabilities. However a turbo XT with EGA was capable of running games well beyond what the C64 could do and was actually reasonably competitive with the ST and Amiga other than sound. For examples Prince of Persia, Quest for Glory, Monkey Island, Ultima 6, F-19 stealth fighter, Pools of Radiance, and Commander Keen to name a small list. Even older titles like Elite and Ultima 5 played far better on a turbo XT thanks to the faster cpu, higher memory and much faster storage. A fast 286 with VGA was actually more capable than the Amiga 500 hence why the PC game market started to pull ahead of the Amiga one by 1990-1991.
Very nice video, great work! 👍
Thanks for the great feedback! Glad you like it
So did you report this bug to the VICE team? If not, it will obviously not be fixed...
Not yet, I still have to check with daily builds. But you‘re right, I need to do that. Thanks for bringing this up!
Interesting stuff! 👍 ps. There is a loud 15.5khz flyback transformer whine in the background whenever there is a monitor on the screen. Unfortunately I am still "fortunate" enough to hear it. :D I would suggest filtering the audio track with a low-pass filter whenever there is a monitor on the video. Or maybe even low-pass it all the time.
Thanks for bringing this up. I‘ll definitely do that. I‘m one of the fortunate ones it seems 😁
@@the8bittheory Haha, the sound brings back the memories. Always remember hearing that as a kid but we all were used to it anyways so I didn't really bother so much.😄 Oh and happy new year!
Thanks! Have a happy new year, too !
"Bounces" has a fantastic fade intro that I was always fascinated by. I'm certain it must be done by algorithm, I would love to one day sort out how it's done. (It's all over within 3 seconds into this video, the entire fade is 14 frames long. You can step frame-by-frame with , and . buttons.) th-cam.com/video/pfevZuVHI5c/w-d-xo.html
Oh yes, this is really great. I'd also love to know how these are done. I'll have to dig into that :-) Thanks for bringing this up!
I am repeating myself, but imagine now C128 on the left screen with 4MHz :-)) And on top of that with 121 colors from Plus 4. haha... That would have blew the competition away with ease back in the days! Thanks for the efforts btw. It is always interesting to see what Commodore computers were since always capable to do even with limited resources.
Actually, MHz don‘t compare 1:1 between 6502 and 8088 architectures. Given the PCs 4,77 MHz, the c128 with 2MHz should be an equal contender (the MHz Ratio changed with 286s, though)
Well, it obviously can be done. Nice work! ... VDC is a complicated piece of hardware and accessible only through two registers (if i can recall correctly). Running unfortunately only at 2MHz instead of 4MHz. The engineers did the same mistake with VIC and C128 normal mode in general. They did add tons of extras directly accessible with better BASIC. Built-in ML monitor. Added more memory, better keyboard compared to C64 and they put even C64 inside of C128. But they made a catastrophic mistake. You had to drive with Fiat Punto to explore the big C128 area. Same car as you had with C64, but slower in C128 mode! That's unforgivable and only a few million sold C128 are good evidence for it. Otherwise every existing C64 owner would back then also buy C128 after selling his C64. After all that were more than 20 million units. Old customers could use all the C64 software and would hold this in his hands: Imagine: 4MHz 8502 CPU inside of a C128! Without defect Z80, and without incompatible VIC! That would have written totally different story for us as customers and also for the Commodore company back then. And make C128 significantly cheaper and better accessible. I see more than 20 million sold units because developers would have surely develop also for the C128 and could still sale C64 software because of the compatibility. But 1MHz C128??? What were they thinking (Management and Engineers). Hope some smart guy (not me, haha...) can develop a module for Commodore C128 with 4MHz 8502 CPU and 4MHz compatible VIC version. I would immediately buy it because i love my C128 even if it's full of mistakes 😁
Right, more speed would have been great. I think the story, why things went the way they did, has already been told by Bil Herd. It‘s still a great machine though, I completely agree with that last sentence of yours :-) Thanks for your input !
@@the8bittheory haha...true, the story went the way it did. But if a broken C128 close to 40 years later can be fixed, it should be possible to also fix the C128 story itself. I bet Bil Herd could do that, to give a new birth to C128 with less mess inside, and focus only on what is of importance (as mentioned)... People made CommanderX16 now, but new C128 (with mentioned specs) would be far more interesting (at least for me)... I thought CX16 could be a good replacement, but hmmm... The VERA part is more complicated than the C128 VDC especially if one is not 24/7 CX16 user. My first Commodore was C128 (parents bought me that) and then i had no idea what it was (back then i was a concerned little village citizen in Croatia, we had no road and availability of electricity was a lottery show ;-). Instruction was in German language. I had only C128, and small b/w (i still have that one) TV)... Anyway, as said i hope someone, anyone can create this module (4MHz CPU and working VIC) for C128... That would be amazing! Guten Rutsch und all the best wishes bald im neuen Jahr.
Thanks! Best wishes, too!
@@miselzivanovic2181 The problem with any new-build Commodore computer today is in the video chip. Nobody is producing or can affordably produce the specialized video hardware. Something like a VIC-II chip is very difficult to produce affordably. If you want a custom chip for a better C128, that is going to cost even more. That is why CX16 went with FPGA for the video card - it's the only way to do it. And it's not inauthentic - some 1980s hardware used 'chip-on-a-chip' type solutions. But yes, VERA is very capable, and with capabilities from late 1980s. I don't know if a C128 with better chips and video card would have been possible or not. Would have to review Bill Herd's story again. I think that maybe the Commodore retro community should have come together to release some kind of enhanced C64. Something with more RAM, dual SID chips, basically all the improvements that already exist. But standardized in one build. That way, it would be reverse-compatible with C64 software. But you could also release new programs for it, taking advantage of added RAM and dual-SID. Kind of a "C64 NEXT" like the ZX Spectrum has. Except with real hardware [since most compatible parts are in production.]
@@brendanstone3073 CX16 is an interesting machine, and VERA is a very capable chip. It's probably going to be something out of it with a proper basic/compiler solution. Because not everyone can do ML coding, but everyone wants to have fun nevertheless. You can have that only with proper dev tools (unless you do cross-compiling. Then you need just the HW... Retro feeling ? Not at all... ) Back in the days they had 8502 with 4MHz for C128, however they took the 2MHz version instead, combined with the incompatible VIC is then what we got eventually. Probably was that a cheaper solution then taking 4MHz which also wouldn't work with VIC. Better C128 is actually already existing (Mega 65). Basic version 10 and 40 MHz speed (also 1, 2, 3.5 MHz frequencies possible). That's then good, but it's stealing the 8-bit magic. That's why I said C128 4MHz and compatible VIC. Everything else can remain the same... Retro feeling preserved, happy about 4MHz and...don't even need 121 colors from the previous version Plus 4. 15 colors is enough. Can even be a FPGA solution. Shouldn't cost more than CX16. Well, can be that someone can make this wish come true for the next Christmas 🎄🎁 😁 Thanks for your feedback. Have a great new year and hopefully we will be blessed with 4MHz for C128 😉
It is a shame that the VDC display wasn't more accessible. Some people tell me that some VGA monitors can support the C128's VDC, but I didn't find any that work in the UK, so I'm guessing it was NTSC machines that worked with some VGA monitors, not PAL machines.
I think support for 15kHz hor freq is the key requirement. With that, only a few resistors are required to make a working connection. Otherwise you need at least a scandoubler to make it work.
VGA monitors that support the necessary scan rates exist, but are unusual. It is basically a CGA signal.
I have to admit, EGA version has warmer and more vibrant colours.
Right, at least on PAL C64s. Supposedly, NTSC C64s had at least a bit more vibrant colors. Really good point, thanks for bringing this up!
I would not call it scrolling flawlessly until I see some smooth scrolling. Maybe it’s the videos capture issues. But all I see is some rather choppy scrolling compared to what the VICII hardware scroll does
Correct. It‘s not smooth scrolling. I was so excited that I didn‘t make a difference. Smooth scrolling is possible but requires use of Assembly language. Not sure when I will be able to cover that. Thanks for your input!
@@the8bittheory haha no worries. Also depending on the setup of the hardware do asm really make it possible? I mean do the chip have enough brute force power to push the requirement data in 60fps? One thing is the code to excite the data copy to the chip. That for sure could be speeds up. Still really cool to see someone taking time to explore this “forgotten” chip :)
The VDC has a shift register for pixel-level scrolling, just like the VIC-II. For setting this from 7 to 0 (or vice versa), vblank needs to be leveraged. Otherwise it jitters. 60 fps won’t be possible. I think for fullscreen, 10 is a more realistic number.
@@the8bittheory yes that was I feared. For me 10fps is unbearable. 25fps can work depending on scenario tho
The VDC chip will never become an Arcade powerhouse 😁
Programming was always a mystery to me. Tbh, i still dont know how C64 games were programmed.
But you‘re very interested in the topic anyways, right? Game programming is probably the most attractive field in programming, but also the most complex one.
I had a pirated copy of Blitz back in the 80s, but beyond using it on BASIC programs, I never knew how to use it. I knew it had various options and other things you could do with it, but since I never had a manual for it, all I could do was run it on a BASIC program and hope it worked. If I recall correctly, I used it on a few simple conversion programs I made. Like one to convert Printshop graphics from Commodore to non-Commodore printer formats by doubling all the pixels horizontally. Or my program to convert a copy of Championship Lode Runner into a data disk for use with the original game (so you could use the built-in cheats). I seem to recall having some other BASIC compiler as well, but I forget what it was called. Then there was one published by Compute!'s Gazette. It only worked on a subset of BASIC commands, but produced really fast results. I think it converted the commands directly to ML, which is probably why it only allowed the use of certain commands.
Conversion programs are a great use case :-). For both, Basic and Basic compilers. I also made a video about micro compilers. That‘s probably close to the one from Computer Gazette you mentioned. Thanks for your input!
The 960x540 mono with blue or red really looks SO crisp
Good to know, I‘ll have to give that a try ☺️ Thanks for the input!
That ends up looking quite acceptable in the end. Congratulations! It's great that there is someone doing this on the C128 with a focus on clear, understandable code. This is the sort of thing that will get more people trying things out themselves, which will really enhance the community. Thanks for what you are doing!
Your channel is a great source of inspiration for this. Thanks for the great feedback!
so why not compile to assembler, directly, from basic. no interpreter required. way too complex "compiler solution". so you already have the code and jump tables, why not compile to c64 assembler directly. even the unoptimized assembler code translation is way faster. this was totally non required speed up software, you are smart. also modules/libraries work if you...
There‘s other compilers that do directly compile to assembler, so you can do that - at least for the c64. But on the c128 options are really limited. Thanks for your input!
like vision basic but that seems to lack some parenthesis functionality, of basic, so not full basic compatibility, I dont care of the extra if the basic is not working@@the8bittheory
but if so and common, why would blitz even exist, are they all paid@@the8bittheory
You might want to take a look at MOSpeed. www.c64-wiki.com/wiki/MOSpeed
how about c/c++ to c64/128 asm/executable?@@the8bittheory
Very nice! One further optimization you could do is to fill the entire bitmap with %00001111. If two pixels are the same color, just set the attribute to the same color for both foreground and background. This way you can clear the bitmap with fast block fills of %00001111 and only have to individually set the color attribute RAM bytes. Going beyond that, there is also a double-width mode with which you can do theoretically do a 320x200 mode, which only takes up 8000 bytes of bitmap, and then treat it as 160x100x16 as here. I can't recall what that does to the color attributes though. There's also something in my memory about timing weirdness in double-width mode which can result in it requiring doing a slightly smaller horizontal width. So in actuality it might end up being something strange like 304x200, leaving you with 152x100. I'm without a C128 at the moment (but expecting to have one again soon) so I can't reliably experiment to reproduce the mode. It's also entirely possible that I just wasn't adjusting something correctly and could've gotten 320x200 working reliably with different settings. Even with the VDC's limitations compared to the VIC-II's strengths, I still find it a fascinating chip, and think more could've and would've been done on the graphics and gaming side in the 80s and 90s if people had understood it better. It's great to see people like yourself doing videos like these, and I hope it'll inspire more people to see what they can make the VDC do. One more thing regarding the double-width mode is that since it reduces the bitmap to only needing 8000 bytes, I wonder if the mode I described above could be done on the 16K chip? With attributes taking up 8000 bytes, we'd be at 16000 total. Seems like it could be doable, but I may be missing something that would change the math.
Thanks for the input! Double width mode also halves the color resolution, unfortunately. That would have been a great memory saver. Wrt 8000 bytes: if you‘re good with greyscale, you can really use textmode to fake graphics just as CGA does for the 160x100 mode. Also, thanks for the great feedback. I also hope that this inspires more people to look into the c128‘s unique capabilities.
@@the8bittheory Ah, thank you for correcting my flawed memory! Maybe you can also help me recall how attribute RAM works with interlace. Is it interleaved the same way as the bitmap is, so for example byte 1 of color RAM in 8x2 mode would choose the colors for lines 1 and 3, or does it behave in a contiguous way and it would color lines 1 and 2? I believe it's interleaved, but I don't trust my memory on it. Contiguous would be extremely useful, but seems unlikely.
Unfortunately, I haven’t found the time to look into interlaced mode yet. But it‘s on the list :-)
wizzable is a great word!
😁 it‘s just really hard to use it correctly. That made my day, thanks for bringing it up 😁
@@the8bittheory I used it in an AI image generator prompt and liked the result (-:
Ha, nice!