spins
The Super Pinball System.
Yes, that is a generic name, but it makes for a great package name.
An early start on hopefully fun times in the future.
Requirements
SDL is used for sound support and a virtual dot matrix display.
For SDL on Ubuntu:
sudo apt-get install libsdl2{,-image,-mixer,-ttf,-gfx}-dev
For SDL on macOS:
brew install go sdl2{,_image,_mixer,_ttf,_gfx} pkg-config
The default installation of the SDL mixer on macOS does not include MP3 support and needs to be rebuilt from source. Install the development tools:
sudo xcode-select --install
Now install mpg123 and edit the definition for sdl2_mixer
brew install mpg123
brew edit sdl2_mixer
Use the editor to change --disable-music-mp3-mpg123
to --enable-music-mp3-mpg123
.
Now, build from source:
brew reinstall --build-from-source sdl2_mixer
Thanks for the comment which lists these steps.
The P-ROC is used to interface with the pinball machine. The software for the P-ROC interface, libpinproc, can be built for Linux using Docker. This library is not necessary unless you are connecting to a real machine.
proc/libpinproc/linux-amd64/build.sh
This creates a libpinproc-linux-amd64.tar.gz
file in the dist
directory. It is easiest to install the contents into /usr/local
using the provided script:
sudo proc/libpinproc/linux-amd64/install.sh
Build
Build and install the software:
go install ./...
Run
Note: Many assets used in this project are copyrighted by other sources and
are therefore not included in this repository. The boot screen is probably
the only part that will work as-is without the additional content pack. Any
assets referenced in the x
directory are not included.
go run cmd/spins/spins.go -data game/data -k -vdmd
or...
./run
A virtual DMD should show up with a banner for the "Super Pinball System".
Key bindings:
- left arrow: left flipper
- right arrow: right flipper
- enter: start button
See a bitmap font:
go run cmd/spins-view/spins-view.go data/fonts/bm3n.dmd
Build Tags
To compile with P-ROC support:
go install -tags=proc ./...
About
Porting code from:
https://github.com/town-hall-pinball/project-omega
But making it more direct and less framework-y. And lets be serious. The odds of this running on more than one pinball machine is zero so the code is going to be written that way.
Current idea in progress:
License
MIT