Rolling Rasters: 8-bit C64 intros I wrote 21 years ago - http://www.youtube.com/watch...
Opps, look like I had this video marked private. It's public now. - Ray Cromwell
I love how this is available in HD. - Andy Bakun
Hah... I remember doing that on PC VGA controllers too. Changing the palette registers every scanline was fun. Most of the hard-code VGA hacking I did was with Mode-X. :) - Matt M (inactive)
I never had the opportunity to hack on a system with hardware sprites, though. Amazing that the PC took off for gaming as quickly as it did, considering how awkward it was to do much in VGA mode. - Matt M (inactive)
More than just palette changing. I remember having problems with getting the border color changing to be perfectly synced up with the background color changing to get the bars to look solid. I didn't write many demos/intros though. - Andy Bakun
Timing the rasters was difficult, since the CPU was so slow. Typically, you'd have something like lda table, x; sta $d020; sta $d021; delay_loop: ldy table,x; dey, bne delay_loop. IIRC, an STA was 4 cycles so there was enough time to poke the screen background after poking the border. A vic scanline was 63 cycles, except for every 8th line was a 'badline' where DMA would steal 40 cycles leaving you with 23. Thus, you tried to aim for 7 scanlines consuming 63 cycles exactly, and the last line consuming 23 cycles. - Ray Cromwell
Note that the stuff I was doing on the PC was half a decade after this. :) - Matt M (inactive)
Ray, the break dancing guy on the right just slayed me! :D - Micah
The last intro (Conquest) was especially difficult, because I had to update the background/border colors, and 8 sprite data pointers (to blank out the sprites that are occluded), That's 11 store instructions or 44 cycles not counting other calculations. Special tricks had to be used for the 'badlines' (when DMA is performed), I can't recall exactly, but I think I used a trick which allows you to stop the VIC from fetching data. Since there are no fonts/characters/text where those CONQUEST sprites are, there's no need to fetch that data. But it's been so long, I can't remember the details exactly. - Ray Cromwell
One of the cool things about the last one is that I put in PAL/NTSC detection so that Europeans re-importing some stuff could see the intro (typically they're re-import if I added a cheat/trainer to a game). The main thing I did was intros and NTSC-fixes for PAL games, plus some cracking of disk loaders once in awhile, but ESI/ATC/UCF did most cracking. The Break Dancing once was interesting because I added experimental anti-ripping code. I obfuscated the routines by using illegal C64 opcodes, and ran a detection routine in the C64's NMI (non-maskable interrupt) which would scan for people using ripper cartridges like the Action Replay. - Ray Cromwell
BTW, I did not author the scrolltext you see. Typically I wrote the intros along with a combined text-editor/cruncher/linker where you'd load the game into it, and it would place the intro on it, compress it, and save it out. Other people would use the tool to slap intros on imported titles. The economics of the virtual warez economy of the 80s 8-bit scene would make an interesting study. Americans would buy fast modems for Europeans, and mail them modems and calling cards. They'd then call the US import groups which would upload them American warez in return for European warez. That's why every game typically had TWO intros. One from the crack group, and one from the importer. Sometimes another one from a fixer/trainer. - Ray Cromwell
@Micah, this one's for you. :) http://www.youtube.com/watch... - Ray Cromwell
Ray, I thought you could swap the (uh, I can't remember what it was called exactly, it's been a long time) z-index on the sprites (only one bit, so they would appear in front of or behind the text/graphics), then you could draw the bars using graphics and color cycle them based on the scanline. Then you just move the sprites around and change this value at the top and bottom of the paths. Or maybe I'm thinking of static color bars, not moving ones. - Andy Bakun
It is unfortunate that the experimental anti-ripping code doesn't come through on the Youtube videos. :) I mean, awesome demos, and it's awesome they can still be shared, but a lot of the really interesting stuff happened under the hood on these. - Andy Bakun
Andy, you might be able to do it like you suggest, and color cycle text bars by using the extended-color mode, I did a scroller like that one time. I recall the inspiration for doing my first intro was disassembling a Death Demon/FBR demo that used extended-color mode. (see here for extended color mode: http://www.c64-wiki.com/index...) - Ray Cromwell
That code is long since bit-rotted on 1541 floppies. I gave my C64/C128 to my brother in law when I upgraded to an Amiga, plus all disks. I lost alot of stuff I wish I had preserved for posterity, including a multi-tasking multi-window kernel I had worked on, a BBS that sat on top of that (Sysops could perform system functions in separate windows simultaneously while users were doing stuff! :) ) all written in ASM Merlin 128 assembler. I wrote a demo that used some weird VIC effects (arbitrary horizontal scrolling, hi-res interlace mode, >16 color palette via cycling) . I also lost all my Amiga demos as well. Too bad there's no google back then indexing all those BBSes. :) - Ray Cromwell
Extended color mode also halved the horizontal resolution. - Andy Bakun
The last commodore I had was a 128D, and I had it all the way up until 2007 when I finally got rid of it when I moved to San Francisco. There was blown capacitor in the powersupply that kept it from working, and I never fixed it. I wish I had kept a lot of that stuff too. - Andy Bakun
ah, the 128D, I loved that machine. I remember when the 1581 came out, it was such a big advancement. :) The 128 had a cool "2Mhz mode" that could even be enabled in C64 mode. Using that mode, you could blank the screen (required for 2Mhz mode) and change $D020 every 10 pixels, effectively turning the entire screen into a bitmap using nothing but the border color. The 128 also had an MMU, IIRC, one under-exploited trick was to map zero-page up into $D000. If you can do that, then you can use the 2-cycle zero-page STA to change the border color every 5 pixels. :) - Ray Cromwell
Extended color mode != multicolor mode. Multicolor mode is what you're thinking of, it halved the screen resolution for bit-map mode. Extended color mode was a text mode. You could only display the first 64 characters of your character set. The upper two bits of each character code controlled which register $d021-$d024 that the background color for the character was taken from. - Ray Cromwell
I remember wanting a Lt. Kernel hard drive really bad. - Andy Bakun
Ah, there was one local BBS to me that had one, the guy had tons of warez to leech (most old), but it was amazing the amount of messages his forums would keep. Most C64 bbs would scroll off after just 10-20 messages per forum. For me, the greatest piece of additional hardware I had was an Action Replay Cartridge. Indispensable for development, cracking, etc. This cartridge could somehow even show you the values of write-only latches when you 'froze' the system and went into the machine language monitor. - Ray Cromwell
This brings back some great memories. I loved that little machine -- it's really amazing what you can do when given a few hardware sprites, v/h blank interrupts, and a character generator. Hell, that's pretty much every game console from the Atari 2600 to the SNES and Genesis. - Joel Webber
I always thought it was particularly cool that the C64's bitmapped graphics mode used the character generator's memory to designate which colors would be available in 1- and 2-bit modes. Remember how many games had weird "color block artifacts" because you had to pick a set of 2 or 4 colors that were available in each 8x8 block? - Joel Webber
I also miss the default hackability of these things. I mean, even if you were a snot-nosed 13 year old kid (e.g. me), you could find a magazine, start typing BASIC code, and have access to most everything the machine could do. There were even half-decent commercial games (published by EA, no less) where you could tell someone just sat down and started typing a whole bunch of ugly BASIC code until they were done. The TI-99 was even better for this (though kind of a crappy machine overall), because they had extended BASIC to make it trivially easy to create hardware sprites and remap the character set. Ah, those were the days... - Joel Webber
I recall there was an extended basic cartridge for Vic-20 and C64 too that added turtle-style graphics. I think there were some software versions too. C64 BASIC had a hook called CHRGET that allowed you to easily extend the basic grammar. - Ray Cromwell