As of today, I made my first C64 cartridge. Most of my programming experience is either through floppy or tape based storage. Making a ROM/BIN file and getting it to work was a tougher than I thought. It was more problems with getting a CRT/BIN combo into the tool chain for testing in an emulator, than to actually make a cart and burn an EEPROM. My first cart is nothing amazing, but it pumps out the INC $d021’s.
I have a few of these guys in a box, mostly for a long term project that I have been working on. I haven’t had much need for them in the last while as VICE has great networking support.
Lately, it has been crazy fun doing TCP/IP communications with the IP65 networking stack. It’s definitely the way to go for making games that need updates from time to time. Write a bootloader that fits in ROM, place it in the socket and off you go. Yes there are issues with a ROM update later on and that you need to have internet access to enjoy the software. Oh well, its a connected world.
One of these guys needs to get crossed with a 16 MB REU. It would be pretty awesome combo. But for now; this thing is still great.
I will say three things about Michal’s c64 programming series: his video’s are fun, fast and packed with information.
I am not a bad assembly programmer, -not the best- but not bad. After watching a few seasons of his videos I started to notice subtle ways to improve my style.
There is a common problem with programmers in general. We need a problem to learn something and anything else in the way gets filtered out. So when Michal’s videos had Basic language sections, I was going to skip them for more interesting topics. I’m glad I didn’t. In fact, a few assumptions (over the years) that I’ve made were proven wrong (about the DATA statement in Basic). Suddenly, I wanted to know if there were other things that I was mistaken about.
Before you complain about it being a paid service; its worth it. Its a good refresher and its interesting to see how he works and his logic. He even manages to get automated testing into the mix.. on an 8bit 64k machine. It’s worth the money and I’m happy when a new episode appears in my inbox.
Well, it’s pretty awesome. A quote from the site, explains the awesomeness of this:
Since the nineties, arcade emulators like MAME can emulate the classics like Asteroids on the PC or the Mac. This program is an Asteroids emulator for the Commodore 64. The “emulation” of the arcade machine’s CPU is done natively by the 6510 processor of the C64. The video and sound hardware is simulated by the Asteroids emulator program. In this way, the original arcade game program is executed and interpreted, and the original game play is (more or less) exactly reproduced.
I can remember the disappointment in the conversions that showed up over the years of this amazing game. It was one of the first games I loaded in MAME to check out. Well Done Norbert!
This segment is from the opening of Doctor Who, (I think Tom Baker :)) and slightly tweaked to allow it to loop better. The output of GIF2C64, is generally just RAW data or a text file with a long stream of .byte(s). I’ve added some ASM output options like a mini player for animated gif’s (in this example) and scrolling code for images larger than the screen of the C64. There were a few video’s out there, in the 80’s that someone made — one of them was of HE-MAN. It was black and white pixels represented by the standard font map. Seeing that video made me a little crazy for video on the C64, even much later I was working in DPaint on the Amiga with ambitions to get the anims over to the C64. I can also remember the first digitized audio I ever heard on the C64, I think it was “stay a while, stay forever!”.. the next was “Born in the USA” by Bruce Springsteen.
Dirk Dead: Down the street from my house (when I was very young), there was a Dragon’s Lair arcade game. I have always loved that game. I ended up with the real arcade laser disk and a copy of it on DVD. When I got the C64 game, it was a million disks and there were always errors on the various disks (or failed copy protection). But when the C64 game ran, I was thinking *what? this isn’t Dragons Lair!*.. then the first few sequences would run… then crash.
One of the coding projects I always wanted to try was to create a video codec (and transfer process) to bring Dragons Lair properly over to the C64. This was my first segment, which of course is without audio. I know that there are carts out there that can output higher res video with audio, but I wanted this to run on a stock C64.. maybe a little more memory wouldn’t be bad 🙂
This was created by GIF2C64 a C# application I am working on.
Skull Tumbler v1-4 : Coding, GFX and Music by Wolfgang Bochar. This is a long time coming, I’ve managed to the IRQ timing correct, 16 sprite blockers to give the window effect and no jitters. Works on NTSC and PAL machines, though PAL is a little slower on the playback. I used to have closer to 18 rows of text graphics scrolling — but when combined with the audio, sprites and x-y scrolling in the two raster areas.. it got quite jittery. There is only so much raster time to render the image, so I started running frame 0 half image then frame 1 lower half — then the Y scrolling started to look jumpy with the timing. This version has a smaller window, but I like the simple layout better (but full screen video is great too). Something to work at in the future.
I am pretty happy with this, it is the cleanest and most complex IRQ coding I’ve every done. I’d like to thank the crew at Covert Bitops for the ASM Notes and GoatTracker (which I composed the music on), The KickAss Assembler and the Kick IDE guys (makes Dev so much faster), Oliver Achten and Jens Schönfeld for the MMC Replay (makes testing on a real C64 fast and easy) and Takeshi Yano (for all the C64 chats over the years).
The Source graphic (and any video data on this site) was generated by GIF2C64 (C# application), that takes gifs (animated too) and generates custom charsets. I haven’t got all the bugs out, but after alpha is finished I’ll post a beta version for external testing.
This is my most recent output from my GIF2C64 conversion utility. I made an image in photoshop, that would appear seemless when scrolled. 4 colour gif, converted to a custom multi-colour font, basically dividing the character into quadrants with each possible combination of patterns. The output software also handles font compression, to strip out excess unused patterns, which is how the Letters have been retained in the fontmap. Gif2C64 also can take animated gifs, which with more frames in the video the less space is available for letters. I’ll try to post an example of video later..
The ASM to scrolling code could use some work, this is my first experience with multiple raster calling. At certain points the music starts to kaak, due it fighting with the drawing routines. I’ll get there 🙂