Jump to content
Joe Musashi

[DPC+] Zaxxon HD Demo

Recommended Posts

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.

 

post-27536-0-28820100-1443906170_thumb.png

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

 

  • Like 29

Share this post


Link to post
Share on other sites

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. :)

  • Like 1

Share this post


Link to post
Share on other sites

Impressive, looks really slick on my 1084S!

 

Is there a benefit to accessing the variables via var->frameCtr vs just using frameCtr?

Share this post


Link to post
Share on other sites

Plain amazing! when you said flicker I thought it would look bad, but it's good enough! :) :thumbsup:

Share this post


Link to post
Share on other sites

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. )

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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

  • Like 2

Share this post


Link to post
Share on other sites

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.

 

Share this post


Link to post
Share on other sites

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.

 

post-27536-0-78230100-1443975939_thumb.jpg

  • Like 2

Share this post


Link to post
Share on other sites

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.

  • Like 3

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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 :)

  • Like 1

Share this post


Link to post
Share on other sites

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!

Share this post


Link to post
Share on other sites

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.

 

post-3056-0-27526700-1444321205_thumb.jpg

 

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.

  • Like 3

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...