Joe Musashi Posted October 3, 2015 Share Posted October 3, 2015 Now and then when reading the forum, I come across a post that inspires me to try out some new things. This time it a was repost of Andrew Davie's Chronocolour ™ Mario demo. Despite the flicker it looks fantastic, so I was wondering if it would also be useful for dynamic content in a game. As an example, I wanted to see how Zaxxon would look with this technique. This requires more memory and compute resources than a standard 2600 has, so the demo uses DPC+ and ARM code and therefore needs a Harmony or Melody card to run on a real machine. The demo attached below renders a scrolling 8-color background and additionally draws some software sprites on top. The graphics are generated on the fly by ARM code that writes all pixels into RAM frame buffers, which then are displayed by a 6507 48-pixel kernel. This is just a graphics demo, you can shoot, but there are no enemies and there is no collision detection. As expected, the 20 Hz flicker is very intense, however, if you move away a few meters from your TV, it doesn't look so bad. The controls are as follows: Joystick Left/Right - move ship left/right Joystick Up/Down - move ship down/up (pilot control) Button - fire Console reset - reset background scrolling Console select - stop/restart scrolling There are no plans to make this a full game. The Harmony is already at its limit regarding both memory and speed. On a Harmony Encore there might be sufficient memory for the complete original arcade graphics, but it would also need to be faster to be able to draw more sprites and to handle the game logic. As usual the source is attached. Feel free to use from it whatever you like. ZaxxonHDDemo_150927_NTSC.bin ZaxxonHDDemo_150927_PAL60.bin ZaxxonHDDemo_150927.zip 34 Quote Link to comment Share on other sites More sharing options...
Albert Posted October 3, 2015 Share Posted October 3, 2015 Wow, that is damn cool!! Ran it in Stella, but will have to put this on a Melody board to see how it looks on a CRT. 3 Quote Link to comment Share on other sites More sharing options...
+SpiceWare Posted October 3, 2015 Share Posted October 3, 2015 Impressive, looks really slick on my 1084S! Is there a benefit to accessing the variables via var->frameCtr vs just using frameCtr? Quote Link to comment Share on other sites More sharing options...
Mountain King Posted October 4, 2015 Share Posted October 4, 2015 This is really impressive! Quote Link to comment Share on other sites More sharing options...
+Nathan Strum Posted October 4, 2015 Share Posted October 4, 2015 Very cool! Might be usable for RPG cut-scenes... Quote Link to comment Share on other sites More sharing options...
+nanochess Posted October 4, 2015 Share Posted October 4, 2015 Plain amazing! when you said flicker I thought it would look bad, but it's good enough! Quote Link to comment Share on other sites More sharing options...
iesposta Posted October 4, 2015 Share Posted October 4, 2015 I would buy and play this if it were a game and it only had black and 2 gray levels. That would also let you use less data and up the frame rate 30, giving black, gray and white. I still want an undersea game with a RAM bitmap display. (Suicide Mission did this, and it could be done now without skip-a-line. ) Quote Link to comment Share on other sites More sharing options...
+Cafeman Posted October 4, 2015 Share Posted October 4, 2015 I haven't kept up , so I don't know what extra processing the DPC+ gives. But that demo is leagues beyond 2600 and 5200 capabilities. Quote Link to comment Share on other sites More sharing options...
iesposta Posted October 4, 2015 Share Posted October 4, 2015 I haven't kept up , so I don't know what extra processing the DPC+ gives. But that demo is leagues beyond 2600 and 5200 capabilities. Nah, not beyond its capabilities. It is just an advancement of this: bin00003.bin 2 Quote Link to comment Share on other sites More sharing options...
Joe Musashi Posted October 4, 2015 Author Share Posted October 4, 2015 Impressive, looks really slick on my 1084S! Is there a benefit to accessing the variables via var->frameCtr vs just using frameCtr? Thanks! I'm using var only to organize my variables in a struct so I do not have to define pointers for each of them. Since the effective address is known at compile time, the compiler should generate the same code in both cases. But, honestly, I never really checked. If it bloats the code, then for a game it should better be avoided. Quote Link to comment Share on other sites More sharing options...
Joe Musashi Posted October 4, 2015 Author Share Posted October 4, 2015 I would buy and play this if it were a game and it only had black and 2 gray levels. That would also let you use less data and up the frame rate 30, giving black, gray and white. I still want an undersea game with a RAM bitmap display. (Suicide Mission did this, and it could be done now without skip-a-line. ) Another possibility would be a 96-pixel bitmap with spectrum style black/white graphics. 3 Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted October 4, 2015 Share Posted October 4, 2015 While the 48 pixel version looks truly amazing, I think 96 pixel B/W would offer much better playability. But I think by using DPC+, it should somehow be possible to display a wider display than 48 pixel. 3 Quote Link to comment Share on other sites More sharing options...
LS_Dracon Posted October 4, 2015 Share Posted October 4, 2015 Perhaps with the upcoming "Bus Stuffing" support... Quote Link to comment Share on other sites More sharing options...
Crimefighter Posted October 4, 2015 Share Posted October 4, 2015 Well we'll settle for the Zaxxon clone "Space Raid". 1 Quote Link to comment Share on other sites More sharing options...
tschak909 Posted October 5, 2015 Share Posted October 5, 2015 holy...crap... -Thom Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted October 5, 2015 Share Posted October 5, 2015 Perhaps with the upcoming "Bus Stuffing" support...Maybe. But there are quite a number of problems to solve. DPC+ with bus stuffing will provide a lot of extra time but not necessarily at the right time. And that one CPU cycle equals three pixel doesn't make it easier too. Quote Link to comment Share on other sites More sharing options...
awhite2600 Posted October 5, 2015 Share Posted October 5, 2015 Very cool. I'm impressed if this remains nothing more than a tech demo. Thanks for sharing. Quote Link to comment Share on other sites More sharing options...
Joe Musashi Posted October 5, 2015 Author Share Posted October 5, 2015 While the 48 pixel version looks truly amazing, I think 96 pixel B/W would offer much better playability. But I think by using DPC+, it should somehow be possible to display a wider display than 48 pixel. There have already been some experiments with wide bitmaps. Coincidentally, the 7 digit score thread just came up again. Using 1 or 2 pixel wide ball and missiles, at least 48+6 = 54 pixel non-flickering bitmaps should be possible. Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted October 5, 2015 Share Posted October 5, 2015 There have already been some experiments with wide bitmaps.That one is really cool. 115 pixel flickering at 30Hz. Quote Link to comment Share on other sites More sharing options...
Atariboy2600 Posted October 7, 2015 Share Posted October 7, 2015 Wow I just made a label art for the upcoming 5200 version on it but now seeing this game on the 2600 I mean WOW. 4 Quote Link to comment Share on other sites More sharing options...
Mr SQL Posted October 8, 2015 Share Posted October 8, 2015 This game demo is incredible! Just tried it on the Harmony - Joe if you can crunch it to squeeze in just a tiny bit more like being able to hit the fuel tanks and other targets with the lasers this could become an awesome game, already have it in my Zaxxon folder with Space Raid, Zaxxon and Buck Rogers 1 Quote Link to comment Share on other sites More sharing options...
+FujiSkunk Posted October 8, 2015 Share Posted October 8, 2015 I don't have a lot of technical know-how about the stock 2600 and pretty much zero about DPC+, but a while ago I figured we were getting to the point where a programmer could have complete control of at least a 48x192 bitmap. And now here we are. Excellent work! Quote Link to comment Share on other sites More sharing options...
+SpiceWare Posted October 8, 2015 Share Posted October 8, 2015 I don't have a lot of technical know-how about the stock 2600 and pretty much zero about DPC+, but a while ago I figured we were getting to the point where a programmer could have complete control of at least a 48x192 bitmap. And now here we are. Excellent work! It doesn't look like much, but the original Harmony DPC+ ARM Programming example draws a 3D cube on a 96x200 bitmap. It updates at 60 fps, and you control the rotation and zoom factor via the joystick. Due to DPC+ revisions over the years that ROM no longer works in Stella, though it does work on a Harmony. Same holds true of the early Stay Frosty 2 ROMs. 3 Quote Link to comment Share on other sites More sharing options...
iesposta Posted October 8, 2015 Share Posted October 8, 2015 I don't have a lot of technical know-how about the stock 2600 and pretty much zero about DPC+, but a while ago I figured we were getting to the point where a programmer could have complete control of at least a 48x192 bitmap. And now here we are. Excellent work! User ScumSoft was working on a DPC+ bitmap kernel in assembly but has not been very active here the last year or so. His Eggventure's title screen is a wide colorful bitmap kernel display. ScumSoft even mentioned working on bus stuffing kernel techniques like SpiceWare. I don't know if ScumSoft knows C programming to use the extra ARM cycles as a co-processor like SpiceWare and Joe Musashi. This early ScumSoft demo of moving a night soft sprite around the bitmap was exciting to me, even though it has skip-a-line: SpriteTest.bin Quote Link to comment Share on other sites More sharing options...
Thomas Jentzsch Posted October 8, 2015 Share Posted October 8, 2015 It doesn't look like much, but the original Harmony DPC+ ARM Programming example draws a 3D cube on a 96x200 bitmap. 96 pixel without flickering? Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.