Post by nikoniko on Oct 13, 2018 13:46:45 GMT
Hi all,
And an especially warm Howdy! to anyone from Landover who may remember me from there. It's been a good decade or more since I largely retired from online life, as well as put my more-ambition-than-ability projects on hold, but at hydrophilic's urging I want to share the following idea for someone who has both the ambition and ability to make it happen. The timing is too hairy to work out myself, plus unfortunately I no longer have my 128 to test on. I actually wrote hydrophilic about this last year, but completely missed his encouraging reply in my mailbox until I was looking for something else this morning.
Anyway, on to the actual subject of this post. For background, you will need to be familiar with the brilliant VIC-IIe interlace mode that hydrophilic worked out. In a quick search I don't see a thread for it here, so please reference his website. The long and short of it is, he pioneered a method for creating true interlace with the VIC-IIe using careful timing and raster cuts via the test bit of register 48 (accessible at $D030). It allows the display of distinct odd and even fields on alternate frames. Amazing stuff. My idea for a Speedy but not Fast CPU "mode" expands on what he accomplished. I'm going to quote my e-mail and his reply below, and hope it spurs some interesting discussion.
My idea:
And hydrophilic's reply:
I don't care about receiving credit at all, but I appreciate your thoughtfulness, hydrophilic. All the credit really goes to you for opening up the possibilities with your work on VIC interlace! More than anything I don't want to keep the idea to myself where it will go to waste. If someone can make anything of it, that would be wonderful. First question though, would it even be worth the effort compared to settling for the smaller and much easier speed boost that many programs already use by switching to 2Mhz in the border? I think for the right game or application the extra boost would be worthwhile. Drawing lines for a vector style game was one that immediately came to mind (eg. an even speedier Elite for C128, or an enhanced version of the Asteroids Emulator), but it could also be valuable in an application where a long process is initiated that would benefit from Fast mode but you want to keep the screen on to show updates on the progress. Maybe you can imagine even more possibilities.
Anyone want to tackle implementation? It's always exciting to see the 128's potential pushed further, even all these many years after release.
And an especially warm Howdy! to anyone from Landover who may remember me from there. It's been a good decade or more since I largely retired from online life, as well as put my more-ambition-than-ability projects on hold, but at hydrophilic's urging I want to share the following idea for someone who has both the ambition and ability to make it happen. The timing is too hairy to work out myself, plus unfortunately I no longer have my 128 to test on. I actually wrote hydrophilic about this last year, but completely missed his encouraging reply in my mailbox until I was looking for something else this morning.
Anyway, on to the actual subject of this post. For background, you will need to be familiar with the brilliant VIC-IIe interlace mode that hydrophilic worked out. In a quick search I don't see a thread for it here, so please reference his website. The long and short of it is, he pioneered a method for creating true interlace with the VIC-IIe using careful timing and raster cuts via the test bit of register 48 (accessible at $D030). It allows the display of distinct odd and even fields on alternate frames. Amazing stuff. My idea for a Speedy but not Fast CPU "mode" expands on what he accomplished. I'm going to quote my e-mail and his reply below, and hope it spurs some interesting discussion.
My idea:
I have a theoretical to run by you as I think you'd understand the timing better than anyone, seeing as you invented the brilliant VIC-IIe interlaced mode. Let me say that what I'm proposing probably doesn't have a lot of practical use, but is more of a can-we-make-the-128-do-a-thing-it-hasn't-done-before idea.
What if one were to do the raster cuts as if to set up the second field of an interlaced display, but instead of showing a picture we blank the
VIC and switch to fast mode for the rest of the frame? Could we effectively get a ~1.5Mhz mode? Maybe even 1.6 - 1.7Mhz if we switch to
fast mode as soon as we hit the bottom border of the first frame? Would timing be even more hairy than what you already do for interlace? Of
course the resulting display would be dim and flickery with its main field refreshing at 30Hz/25Hz, a major downside compared to not doing
interlace and just sticking to the fast mode during borders trick, but I suppose it could work for something like a vector game, eg. Asteroids,
and create a kind of authentic eye-straining vector flicker while providing more time for calculations. Again, I'm asking as more of a can-it-be-done rather than a should-it.
What if one were to do the raster cuts as if to set up the second field of an interlaced display, but instead of showing a picture we blank the
VIC and switch to fast mode for the rest of the frame? Could we effectively get a ~1.5Mhz mode? Maybe even 1.6 - 1.7Mhz if we switch to
fast mode as soon as we hit the bottom border of the first frame? Would timing be even more hairy than what you already do for interlace? Of
course the resulting display would be dim and flickery with its main field refreshing at 30Hz/25Hz, a major downside compared to not doing
interlace and just sticking to the fast mode during borders trick, but I suppose it could work for something like a vector game, eg. Asteroids,
and create a kind of authentic eye-straining vector flicker while providing more time for calculations. Again, I'm asking as more of a can-it-be-done rather than a should-it.
And hydrophilic's reply:
I think your idea for psudo-1.6MHz is an *awesome* idea! In fact, I'm kicking myself in the pants right now because I *didn't* think of it!!!!
Naturally this would limit frame rate to only 30 Hz (NTSC) or 25 Hz (PAL), but for some video games, and most applications, this would be perfectly acceptible.
Maybe you should make a post on c-128.freeforums.net/? I would be happy to support you if you did. I really don't want to create a new post there... it would seem like I am stealing your idea. And it is a great idea that deserves your full credit!!
Naturally this would limit frame rate to only 30 Hz (NTSC) or 25 Hz (PAL), but for some video games, and most applications, this would be perfectly acceptible.
Maybe you should make a post on c-128.freeforums.net/? I would be happy to support you if you did. I really don't want to create a new post there... it would seem like I am stealing your idea. And it is a great idea that deserves your full credit!!
I don't care about receiving credit at all, but I appreciate your thoughtfulness, hydrophilic. All the credit really goes to you for opening up the possibilities with your work on VIC interlace! More than anything I don't want to keep the idea to myself where it will go to waste. If someone can make anything of it, that would be wonderful. First question though, would it even be worth the effort compared to settling for the smaller and much easier speed boost that many programs already use by switching to 2Mhz in the border? I think for the right game or application the extra boost would be worthwhile. Drawing lines for a vector style game was one that immediately came to mind (eg. an even speedier Elite for C128, or an enhanced version of the Asteroids Emulator), but it could also be valuable in an application where a long process is initiated that would benefit from Fast mode but you want to keep the screen on to show updates on the progress. Maybe you can imagine even more possibilities.
Anyone want to tackle implementation? It's always exciting to see the 128's potential pushed further, even all these many years after release.