james1095

Asteroids Deluxe on the Papilio Pro

7 posts in this topic

It works!!

 

I'd started this a couple years ago but only recently have become proficient enough with VHDL to get it working. This started as MikeJ's implementation of Asteroids Deluxe, a classic Atari vector game. I have chopped off the rasterizer and added some PWM DACs from the Black Widow project on http://spritesmods.com and ported everything to the Spartan6. If you haven't played Asteroids on a real vector monitor, you haven't really played Asteroids IMHO, there's no better example I know of a game taking full advantage of the unique capabilities of the monitor with those blinding bright missiles.There is information on the SpritesMods site on converting a CRT TV to a vector monitor, or with a couple of op-amps to boost the voltage levels this could drive a real vector monitor such as the Electrohome G05 or Wells-Gardner 19V2000. You can also play it on an oscilloscope that has a XY mode. I had a look over the schematics and the original Asteroids appears to be almost identical to AD except the latter uses a POKEY instead of the cool analog sound circuits. s That means that this hardware *might* run the original Asteroids which IMO is a better game than Deluxe, I haven't tried yet.

 

The attached zip should have everything needed to get this going except I have removed the ROM images to keep the lawyers happy. The MAME ROM 'astdelux.zip' can be found various places and has the files you need. If you get stuck, feel free to contact me directly and I'd be happy to send you the files.

Asteroids_PapPro.zip

Share this post


Link to post
Share on other sites

nice! will check this out tonite after the wife goes to bed :D

 

i assuming forward is thrust and backwards is shield?

Share this post


Link to post
Share on other sites

This snippet of code shows the button mapping to the input registers.

 

    -- self test, slam, diag step, fire, shields
    control_ip0_l <= "11111";
    control_ip0_l(4) <= SELF_TEST_SWITCH_L;
    control_ip0_l(1) <= BUTTON(0);
    control_ip0_l(0) <= BUTTON(6);
    test_l           <= SELF_TEST_SWITCH_L;
    -- left, right, thrust, start2, start1, coinr, coinc, coinl
    control_ip1_l <= "11111111";

    control_ip1_l(7) <= BUTTON(3);
    control_ip1_l(6) <= BUTTON(1);
    control_ip1_l(5) <= BUTTON(4);
    control_ip1_l(4) <= BUTTON(7);
    control_ip1_l(3) <= BUTTON(5);
    control_ip1_l(0) <= BUTTON(2);

 

 

These are mapped to C0-C8 in the constraints file. You can of course change this to anything you like.

Share this post


Link to post
Share on other sites

is there any chance at all to port this to use normal vga? while i do have a vector monitor here, i would prefer

1) not to mess with hvac 2) not to take it apart to hook a papilio up to it 

 

however, the chance to play real asteroids again is tempting.

Share this post


Link to post
Share on other sites

Well you might be able to port the original fpgaarcade code. It has a rasterizer that uses external SRAM but you may be able to use the SDRAM on the Papilio Pro. Personally I think if you want to play Asteroids on a VGA monitor you may as well fire up MAME on your PC but it would be interesting to see if this would work.

 

Attached is the original code if you want to have a go at this.

asteroids_rel003.zip

Share this post


Link to post
Share on other sites

no idea. maybe i see if i can get it to run on my vectrex assuming the silly thing even works but thats way low on my list of priorities.

 

either way, well done :)

Share this post


Link to post
Share on other sites

That may actually work. I know there was a MAME driven peripheral made at one point to drive real vector monitors and the Vectrex was one of the supported platforms but the name escapes me at the moment. Also if you look on that spritesmods site he details modification of a small portable CRT TV into a vector monitor. Ideally you need to rewind the vertical portion of the deflection yoke but this is not as scary as it sounds. If you use a B&W TV there is no purity or convergence to deal with and you can find those little Chinese portable sets cheaply at thrift stores and garage sales, especially now that analog broadcast TV is gone. For a minimalist design,  you can retain the original chassis for the HV and video amplifier and add his deflection driver which is simple enough that it could be built on perfboard.

 

If you want to wait a while, I've been puttering away at a more complete vector monitor design taking the integrated amplifier IC's and combining them with aspects of the G05 and 19K6100 monitors, dispensing with the need for any of the original electronics from the TV. The one pitfall is that the HV board will be somewhat specific to the flyback/LOPT used in the particular TV I harvest that and the CRT from. CRT displays are disappearing fast so I'm not sure how much longer it will be easy to find donors.

 

Another idea in the back of my head is a vector output wing for the Papilio. This would consist of R/C filters, some op-amps and a DC-DC converter and output the deflection and video voltages needed to drive a G05, 19V2000 or 19K6100 monitor. The circuit is trivial, it's just a matter of getting it drawn up in KiCad and doing a board layout. I suspect the market to be limited though as there are likely not a whole lot of Papilio owners who also happen to have a 35 year old vector monitor laying around. It would be possible to make an adapter to plug into a real Atari vector game cabinet to play other games though.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now