JAMMA Custom Arcade Project (JCAP) - Now with 100% more IDE!
escher
Posts: 138
So this is a project a long time in the making, several years actually. Life unfortunately has gotten aggressively in the way several times, but I've always returned to keep on getting on. A lot of people have helped me on these forums over the years which I can't express my appreciation enough for!
JAMMA Custom Arcade Project (JCAP)
JCAP is a project with the goal of developing a JAMMA arcade standard compatible game board using the Parallax Propeller 1 (P8X32A) microcontroller upon which a user can implement their own custom arcade game, either from scratch or by using the library of graphics, sound, input, and other drivers developed under the project. Ultimately, the project will provide:
in such a way that a user has everything they need to implement their own arcade game and have a PCB printed to build it on.
A more detailed description can be found in the JCAP readme.
Here you can see the current (breadboarded) circuit laydown. It includes the dual P8X32As in the center, with the serialized input system to the East, and the VGA DAC in the Northwest.
This is the power system including AC EMI filter, switching arcade PSU, audio amp, and +5V/+12V/GND distribution blocks.
Here's a simple demo, showcasing movement, rotating color palette animations, sprite animations, and parallax scrolling.
The project is being managed via GitHub, and can be found here.
A progress log/wiki is constantly being updated, and contains a lot of background information that some might find very interesting such as a brief history of arcade games and an analysis of historical video formats:
Currently, JCAP is on pause as a custom IDE is being developed to manage graphical assets...
JCAP Integrated Development Environment (JIDE)
JIDE is a project developed alongside JCAP in order to provide a graphics development application which can integrate with the JCAP framework. This utility features:
* A cross-platform compatible, PyQt-based GUI
* Unique environments for developing tiles, sprites, and tile maps
* A portable, human-readable JSON-based file format for easy portability and sharing
* An extensive list of intuitive graphcics development tools and features
* Pixel-perfect graphics precision
* Integration with JCAP, including programming the system directly via dual serial connection
This portion of the project is the current focus, as neglecting to develop an IDE would ultimately require hand-jamming hex matrices to create graphics assets in memory.
Features are being added daily, and it's expected to be completed in the next month or two.
Here's a short clip of the entire system in action:
JAMMA Custom Arcade Project (JCAP)
JCAP is a project with the goal of developing a JAMMA arcade standard compatible game board using the Parallax Propeller 1 (P8X32A) microcontroller upon which a user can implement their own custom arcade game, either from scratch or by using the library of graphics, sound, input, and other drivers developed under the project. Ultimately, the project will provide:
- VGA video driver
- Sprite/tile based graphics driver
- PWM sound driver
- Serialized input driver
- Game engine
- PCB schematic and CAD files
in such a way that a user has everything they need to implement their own arcade game and have a PCB printed to build it on.
A more detailed description can be found in the JCAP readme.
Here you can see the current (breadboarded) circuit laydown. It includes the dual P8X32As in the center, with the serialized input system to the East, and the VGA DAC in the Northwest.
This is the power system including AC EMI filter, switching arcade PSU, audio amp, and +5V/+12V/GND distribution blocks.
Here's a simple demo, showcasing movement, rotating color palette animations, sprite animations, and parallax scrolling.
The project is being managed via GitHub, and can be found here.
A progress log/wiki is constantly being updated, and contains a lot of background information that some might find very interesting such as a brief history of arcade games and an analysis of historical video formats:
Currently, JCAP is on pause as a custom IDE is being developed to manage graphical assets...
JCAP Integrated Development Environment (JIDE)
JIDE is a project developed alongside JCAP in order to provide a graphics development application which can integrate with the JCAP framework. This utility features:
* A cross-platform compatible, PyQt-based GUI
* Unique environments for developing tiles, sprites, and tile maps
* A portable, human-readable JSON-based file format for easy portability and sharing
* An extensive list of intuitive graphcics development tools and features
* Pixel-perfect graphics precision
* Integration with JCAP, including programming the system directly via dual serial connection
This portion of the project is the current focus, as neglecting to develop an IDE would ultimately require hand-jamming hex matrices to create graphics assets in memory.
Features are being added daily, and it's expected to be completed in the next month or two.
Here's a short clip of the entire system in action:
Comments
Although I'd recommend not going down the path of re-inventing the wheel of pixel editing. I personally don't find that to be very fun. For my game, I just have a very basic tile pattern/palette editor and everything too complex for that I draw in GraphicsGale and then copy-paste in tile-by-tile. Other things (notably, character face pictures) are just imported from PNGs.
Did you build JIDE using C# and Windows Forms (Visual Studio)?
Hey thanks! I actually used PyQt, because I am already very familiar with Qt and I knew I could rapidly develop the GUI in Python as opposed to the native C++ Qt implementation.
Rationale is that JIDE is a nice to have as part of the larger JCAP project, and I wanted to develop it quickly but functionally so I could get back to the main effort.
This decision had pretty much the exact results I expected: I was able to develop a cross-platform compatible app effortlessly and quickly, but with noticable speed trade-offs. These can be mitigated somewhat down the road however by refactoring some of the large pixel operations using ctypes and multiprocessing.