Centipede


james1095

Recommended Posts

I came across a release of the original arcade game Centipede by a guy named Brad Parker. It was written for the Pipistrello board and is in Verilog which is not my thing but with much effort I was able to get it running on the Papilio One board. There are a couple of bugs remaining:

-- Audio is not working
-- Motion objects visible in the top row where the scores are displayed, these should not be there
-- When using joystick control, player 2 fire is still on player 1 joystick
-- Colors don't match those in MAME, currently not sure if this is correct
-- Self test causes game to freeze, may be related to vblank signal which is fed into latch K9, used in self test
-- Reset doesn't actually reset the game

 

The audio is the most serious issue, I cannot figure out why it isn't working but maybe getting another pair of eyes on the code will fix that. I've set it up to use joysticks for now but it should be straightforward to connect an arcade trackball.

 

Original (Pipistrello) release: https://github.com/lisper/arcade-centipede

If someone has a Pipistrello board and can see if any of these issues occur on that I would be interested in hearing the results. Attached is the code I've been working on, if you toss the MAME ROMs in there and run the build roms batch, it should just compile. It's currently set up for a Papilio One 500k with Arcade Megawing but it should be easy to port it to other platforms. Hopefully with a bit of polish this can get into the Papilio Arcade collection, things have been a bit stagnant on that front, I don't think any new games have been added in years.

 

If someone has an original Centipede machine it would be great to get a comparison of the colors. I have a real board but don't have the connector I need to hook it up to a monitor at the moment.

Centipede_P1.zip

Link to comment
Share on other sites

  • 2 weeks later...

Currently it's set up to use joysticks, the original Centipede hardware actually had joystick support but it was never used to my knowledge. Changing it to a trackball like the arcade cabinet should be trivial, the code is there, it's simply not "wired" up to the top level at the moment. The joystick input was just the easiest thing to use at this stage, once everything is working I'll hook up an arcade trackball I have, shouldn't be too hard to interface a PS/2 pointing device instead if one desired.

Link to comment
Share on other sites

  • 2 months later...

disregard.  vlait said i am wrong :)

not that i know a thing about verilog, but

centipede.v

   assign sync_o = comp_sync;
   assign hsync_o = hsync;
   assign vsync_o = vsync;
   assign audio_o = { 2'b0, audio };
   assign hblank_o = hblank;
   assign vblank_o = vblank;

 

p1-arcade-mega.ucf

NET AUDIO_L_O                 LOC = "P84" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8;	#
NET AUDIO_R_O                 LOC = "P86" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8;	#

 

 

shouldn't AUDIO_L_O and AUDIO_R_O both be AUDIO_O(1)  ? or some such...

or rather, i am guessing "2'b0" is the "return/gnd" and "audio" is the actual noise?

as i wrote, i don't quite understand it but something just seems off..

 

Link to comment
Share on other sites

  • 2 weeks later...
  • 2 years later...

A bug thumbs up to @james1095 .

Just for a quick thing to do on a Saturday afternoon while listening to the football (UK) on the internet, I downloaded the Github original respository. I was pleased to see Verilog source files, but the organisation wasn't great and documentation was sparse. So I downloaded the ZIP file (above), and made changes to the UCF to implement on a Papilio Pro with Arcade megawing. I had the usual problems of having to re-generate the RAMs and DCM, and even now I get some strange warnings about missing files related to the RAM and DCM blocks, however it does compile, download and work over VGA.

It would be nice to get audio working and I will take a look at this in the next week or so. I also found out that one of the buttons causes the game to freeze, and the reset button can't recover from this.

Link to comment
Share on other sites

  • 4 weeks later...

I've tried a couple of fairly simple things to try to eliminate possible reasons for the audio problems.

I wired up a 8 bit Ferranti ZN428 (really old chip now, but easy to use) to 4 spare outputs in order to check the datastream without the sigma-delta DAC. The audio was distorted in an identical way.

I then added a second Pokey (easy with RTL and a FPGA!) and wrote some simple code to write test values to it, in fact the same ones as listed in the schematics. The tones were generated correctly.

In amongst all the noise, there is some hint of correlation with what is happening on the screen.

I'm not sure what to try next :-(.

I'll post again if I make any progress.

Link to comment
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.