• Content count

  • Joined

  • Last visited

  • Days Won


Everything posted by james1095

  1. The libraries are a fantastic aspect of the Arduino and the key thing that makes it a worthwhile if otherwise rather flawed platform. It took me a long time to warm up to Arduino but I love the way I can grab some widget and very often grab a library with example code to make it do something right away. It provides a great way to test the thing out and explore its capabilities right off the bat. I'd love to see a similar collection of HDL modules form, blocks of code that do the grunt work like initializing the device and communicating via whatever interface it uses and bring the controls out to sensible interfaces that can be tied into other modules in the top level file. Ideally these modules should be well commented, especially at the top level explaining what all the inputs and outputs do and what sort of signals they expect.
  2. I may be showing my age but I absolutely loathe nearly any kind of web based software. There are certain things it is convenient for, checking email when I'm away from my own PC with a proper desktop client, occasionally a simple tool, but for any kind of productivity software I find it frustrating. It's always slower, invariably I seem to have to do a lot of scrolling, it never seems to work equally well in all browsers, then for reasons I've never been able to fathom many browsers interpret the backspace key as navigate back to the previous page causing you to lose all the data. I'm forced to use a lot of web based crap at work and I never have taken to liking it. Especially these days when vastly powerful PCs with massive hard drives and gobs of RAM cost peanuts I'm baffled by the trend to return the the mainframe-dumb terminal paradigm. I guess what's old enough is new. That said, I suppose it doesn't really matter to me, I'm pretty content using ISE for my Papilio boards. I'd much rather spend any time I have writing code rather than learning a new tool. VHDL and Verilog are industry standards, code written in a standard language can be synthesized on any suitably large FPGA with minimal changes. With so few developers in the community it's essential to minimize fragmentation.
  3. I didn't take any pictures but it's pretty trivial to load it onto a Papilio Pro and fire it up. It just looks like Centipede, the only major issue it still has is the sound not working and I'm not sure why that is because I didn't mess with that part.
  4. 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
  5. This has more or less been my opinion for a while, DesignLab is a neat idea but IMHO it is a huge amount of work to create and maintain while in the end being a dead end that will serve as a crutch enabling people to avoid ever learning HDL and that will become a huge limiting factor down the road. I'm not going to try to tell you what to do but I think it would be great to focus on collecting a library of code a bit like OpenCores, processors, support chips, sound chips, and other interesting widgets that are tested working, and then attempt to clean them up so that they're somewhat consistent and well commented. One of my favorite FPGA projects is the Multicomp by Grant Searle because it is modular and provides a great tutorial on "wiring" up VHDL components into simple but functional computers. Then there is the larger issue that despite the efforts of many including myself, there seem to be very, very few hobbyist FPGA developers, especially the really talented ones who have developed entire projects. I've tried and largely failed to recruit nearly every technically minded person I know and just haven't succeeded in getting much interest and this frustrates me. Part of this is that FPGA development *is* difficult and there is a very steep learning curve but I think an even bigger obstacle is the perception that it's hard when in actuality putting together a project out of existing modules is not much harder than writing an Arduino program. There is a lot of fragmentation, a number of different FPGA platforms out there, each with their own community and largely the same collection of code, much of which has been circulating for years. Too many people who do create interesting new projects seem reluctant to share their code which is something I find baffling, why bother to create something and show it off if you're not willing to share it? Anyway I think we need more people involved, more basic tutorials, more Multicomp-like projects, think something like a kit where the main components are already coded and a tutorial is provided to write the code that glues it all together and results in something cool to play with. Maybe drum up some interest in local hackerspaces? A ~2 hour entry level presentation/class? A YouTube channel that presents FPGA exercises? Reverse engineering an existing FPGA project and explaining in detail what each section does? A tutorial to port projects from other FPGA platforms to the Papilio? I've learned a lot by porting various projects from Xilinx to Altera and vice versa. Something to get more people over the initial hump and writing some code, the more people we have contributing, the more interesting stuff there will be for everybody to draw from and contribute to. It's been far too quiet around here recently, I would love to see more people engaging.
  6. I've recently been playing with a TFT screen that has a plain RGB dot clock interface and got it working with a couple of the arcade games. I have a few small TFT displays that are capable of interfacing with the same method but they require initializing via the SPI interface to configure them to enable the RGB interface. One uses the SSD2119 chipset and a couple others are various ILI9xxx chipsets, all of which work similarly. Have any of you used one of these displays? I'm looking for a chunk of VHDL (ideally, but Verilog would work in a pinch) that will spit out a series of commands to initialize the display, anyone got something that already works? This seems like the sort of thing that would be out there but I haven't quite found what I'm looking for.
  7. Perfect, thanks! So I had the second one right, the first one I had no idea but it makes sense now that I see it explained. The problem I've had with this sort of thing is trying to search for explanation I can't just google the line of code because the signal names are arbitrary. One of these days I should probably learn Verilog too but it's hard enough to be proficient in just one language without taking on a second one.
  8. 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.
  9. Nobody is interested in Centipede? I got it 90% of the way there, the game is playable on the Papilio Pro, has anyone else had a go with it?
  10. After playing around with this a bit I've decided to translate it to VHDL so it's easier for me to work with. Most of it is pretty straightforward but a couple of the lines I'm not entirely sure what they do. Could one of the resident Verilog experts explain exactly what these two lines of code do? The second one I suspect is assigning cs <= '0' when internalSck is true but I'm not certain. idle <= &counter; if (internalSck) cs <= 1'b0;
  11. At the very least you'll need to install ISE and you'll need the Papilio Loader application to load the bitfile. DesignLab is optional, I've never used it but it's supposed to be an easy way for beginners to get going.
  12. Usually when something like this doesn't work, it comes down to a problem with the .ucf file that assigns the IO. It has to be tailored to the specific board and wing in order to work, otherwise ISE will put the signals on the wrong pins.
  13. The Logicstart wing has only mono audio, however it should play through both sides if you plug in stereo headphones. I vaguely remember something about a layout error involving the audio, I don't remember if it's related to this though. If it is then a simple bridge wire between two pins on the phone jack would fix it.
  14. This thread is a bit stale, but I'm pretty sure I've seen some MPEG encoder cores that can be implemented in an FPGA so while it's beyond my current abilities I think what you want to do should be easily manageable with the hardware. Capture the image in RAM, compress it and then pump it out over USB to the host PC. Another option is to use an ethernet core and pump the data out over IP. 320x240 is quite low bandwidth by modern standards, especially if you are only transmitting what changes from frame to frame.
  15. The cycle accurate 6809 is certainly of interest, I'll have to give that a try with some of the pinball sound boards I was playing with a while back, the 6809 based ones worked but the sound pitch was often wrong. It would enable building an FPGA based Vectrex too.
  16. Thanks, I actually came across that link the other day and thought I'd give it a try. Unfortunately it's in Verilog but I picked up a ILI9341 based display and figured I'd try to get the example working. Once that's done I can translate it to VHDL and then attempt to modify it for the other displays. Those TFT controller datasheets have a lot of information but I found it difficult to find good info on just what needs to happen to initialize the display.
  17. That's fine, thanks for giving it a go. I'll take a look over the weekend and upload a ready to go configuration.
  18. I just wanted to show off my latest FPGA project, this is not currently Papilio based but I'm contemplating doing a megawing for the Papilio One/Pro if there is enough interest, I don't want to manufacture it but I would open source the design. For the time being this is based on the little Altera Cyclone II boards that can be had for about $13, cheap enough to integrate into projects. I designed a daughterboard that plugs onto these and holds a triple DAC, op-amps with gain and offset adjustments for the X and Y deflection, a DC-DC converter to provide the +/-15V rails for the amps, an audio amplifier with volume control and I tossed in a I2C EEPROM with hopes of using it to emulate the EAROM that stores the high scores in Asteroids Deluxe. Initially I tried using delta-sigma DACs for the deflection as Spritesmods did with his Black Widow project but I was not happy with the result. Then I got the idea to use a VGA DAC since it's a high quality high speed 10 bit triple DAC and there was one on my DE2 dev board that I used for prototyping. It worked perfectly so I carried it over to this design. The monitor is based on a cheap 5" B&W CRT TV with the vertical winding of the deflection yoke rewound and a custom electronics, the initial deflection board was designed by Fred Kono a number of years ago but I'm working on a cleaner and more integrated solution. I've also tested this FPGA board with a G05 and a 19K6101 vector monitor in my fullsized cabinets and it drives them fine. As it stands, I've got Asteroids Deluxe working perfectly using code originally from fpgaarcade.com modified to eliminate the rasterizer and ported to my hardware. As of yesterday I also have the original Asteroids working except I have not modeled the analog circuits for many of the sounds which Deluxe replaced with a POKEY chip. If anyone is interested in helping out with this project there are a few items on the to-do list that I could use a hand with, in the process I'd be happy to post the code I have and provide all of the details for anyone who wants to replicate this to do so. Eventually my plan is to build a few miniature arcade cabinets replicating the original classic games in small desktop form. To do: - Implement missing sound effects in Asteroids, all of the control logic is there and working, still need the thump-thump, ship and saucer firing sound and saucer warble. - Implement EAROM emulation, I'm not entirely certain how feasible this is but I included an EEPROM because there was space. It's trivial to use a block RAM in place of the EAROM but that needs to be backed up to and restored from the serial EEPROM. - Get Lunar Lander working on the platform, I made an initial attempt and was not successful, I plan to give it another go. I've brought out the I2C bus on my board with thoughts of using a I2C ADC for the thrust input. - Implement Omega Race hardware, this is a much larger task since it's a completely different hardware platform. It uses the same 10 bit DACs as the Atari games and the hardware is of similar complexity. One last thing worth mentioning, these little CRT TVs are currently fairly easy to find but they are going away fast. They are essentially useless to most people since the death of analog TV but they are perfect for projects like this, a real CRT is the only way games like this look right at all, if you come across these things pick them up while you can because nobody is making CRTs anymore and they are disappearing fast.
  19. Interesting, I'll have to give that a go and see what I can do. Yes it does need signals to be preset, I can post my test bench files when I'm home, they're simple but it's not as simple when you haven't been dealing with the code. I had to figure out a few things but I was able to get Isim to work on it. I had to make sure I set Reset_l high, and I think I had to add a default value for the clock divider signal.
  20. I don't know how to use the MAME debugger, that isn't something I've ever done. I don't think I ever saw the input latch signals assert during the simulation runs I tried, it's relatively easy to load it up in Isim and do a run though.
  21. What about making the USB to serial chip a separate board that can be connected for programming? I like the idea of the nano being a minimal board, something that is simple and inexpensive enough to be built into a project, for example develop on one of the bigger Papilio boards and then wire up a nano with just the stuff you need and make it a permanent part of the project. One could just develop directly on the Nano depending on needs.
  22. I realized I forgot to mention isn't there a Papilio Nano? That would be ideal for this sort of thing, basic low cost board without all the extra stuff that isn't needed when it's being built into a cabinet. The Midway 8080 games will run on that with nothing more than a couple resistors to mix the video and sync and a resistor and capacitor for the audio. IMHO classic games look like sh!t on LCD monitors, CRT is the only way to go, nothing else looks right at all and I cringe whenever I see a classic cabinet with one of those nasty looking LCD monitors stuffed into it. Driving a CRT arcade monitor from an FPGA is fairly easy, some of them have enough headroom that they will work with the VGA levels, otherwise you just need an amplifier for each of the 3 colors. This can be as simple as a single transistor or you can get single IC's specifically designed as video amplifiers.
  23. Any sensor that puts out a digital signal can be used, the challenge is writing the HDL to talk to it, and that depends heavily on the specific sensor being used.
  24. The Papilio Pro is a great dev board, but if you want to integrate it into a game cabinet it's huge overkill, especially for a game as simple as SI. For what it's worth, I have Space Invaders running on a $13 Cyclone II FPGA board I got from ebay, using only an external EEPROM or SRAM, a pair of resistors for the video and a simple RC filter for the audio. I'm running Galaxian on the same board, but PacMan requires more ROM and the two ROM areas do not share the same bus. Asteroids and Asteroids Deluxe are also working, using a small vector monitor I built myself. Any of the Papilio boards will run SI, and most of the other Midway 8080 games ought to work with minimal effort though some used special controllers. Bomb Jack is a bit different as outlined above, but no matter what FPGA you use, you'll probably find that most arcade games are memory constrained. For example most of the classics that have been implemented in FPGA form will fit easily in the old Papilio 250 except there is not enough block memory to hold all of the ROM and RAM. By adding some ROM and/or RAM externally you can greatly expand what the FPGA can do.
  25. That's probably a reasonable way to go about it, I'm not sure I have the skills and mental energy to try right now though, I've been beating my head against a wall for weeks now trying to get this to work and I need to force myself to take a break and finish up the hardware side. If I have a complete monitor design that others can duplicate, maybe others will want to build these too and then a Papilio vector megawing could make sense. I'm not trying to compete with Gadget Factory in any way with this project, I'd love to see others jump in and take it further. FPGA based retro arcade development seems to have seriously stalled since the initial batch of games released quite a few years ago. In the meantime I'm hoping I can convince someone else to take a crack at this, it's possible that the problem will be obvious to a second set of eyes. Unfortunately outside of this forum I've found very little in the way of hobby FPGA discussion, I've tried and failed to get any of the other techie people I know interested enough to get over the very steep initial learning curve.