Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
.config
*.o
.include_mach
.mach
err
include/gendefine_gid.h
include/mach
tools/csum/csum
tools/imgld/imgld
tools/sched/sched
tools/srec2bin/srec2bin
tools/wpcdebug/wpcdebug
build/*
mach
.vagrant
.vscode
doc/doxygen/html/
doc/doxygen/latex/
3 changes: 3 additions & 0 deletions INSTALL
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,6 @@ there as well (replacing any zip file that was already there, which
will get backed up to a .original file; sound ROMs from the original
will also get copied into the new zip archive).

6. Dependencies

On Debian/Ubuntu you need to install build-essentials and libpth-dev.
9 changes: 8 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,9 @@ CFLAGS += -DGCC_VERSION=$(GCC_VERSION)
CFLAGS += -Wall
CONLY_FLAGS += -Wstrict-prototypes

# fix compilation on never GCC versions
CFLAGS += -fgnu89-inline

#
# Define lots of other things based on make parameters
#
Expand Down Expand Up @@ -1015,7 +1018,7 @@ callset.in :
# 'make clean' does what you think.
#
.PHONY : clean
clean: clean_derived clean_build clean_gendefines clean_tools
clean: clean_derived clean_build clean_gendefines clean_tools clean_time
$(Q)for dir in `echo . kernel common effect fonts images test $(MACHINE_DIR) $(PLATFORM_DIR) sim cpu/$(CPU)`;\
do echo "Cleaning in '$$dir' ..." && \
pushd $$dir >/dev/null && rm -f $(TMPFILES) && \
Expand All @@ -1037,6 +1040,10 @@ clean_build:
clean_tools:
$(Q)rm -f $(HOST_OBJS) $(TOOLS)

.PHONY : clean_time
clean_time:
$(Q)touch *

.PHONY : show_objs
show_objs:
$(Q)echo $(OBJS)
Expand Down
50 changes: 27 additions & 23 deletions README
Original file line number Diff line number Diff line change
@@ -1,23 +1,27 @@

This is FreeWPC, an open source operating system for the Williams
Pinball Controller (WPC) family of pinball machines. FreeWPC is
licensed under the GNU General Public License, Version 2.

The sources for the core routines are located in 'kernel';
other common code is in 'common', and game-specific code can be found
in a subdirectory based on the machine name, under 'machine'.
There are also a number of tools included with the distribution
for generating some of the source code and for building ROM images
that are under 'tools'.

You will also need several tools not here in order to build.
See the file doc/build.html for more detailed information. Most
importantly, you'll need a copy of the gcc6809 cross-compiler.
Many standard UNIX utilities are needed as well. FreeWPC has been
built successfully on Linux and Cygwin.

Email suggestions/comments/questions to <brian@oddchange.com>.

Visit the homepage at http://www.oddchange.com/freewpc for more
information.

This is FreeWPC, an open source operating system for the Williams
Pinball Controller (WPC) family of pinball machines. FreeWPC is
licensed under the GNU General Public License, Version 2.

To quickly get started, install vagrant from vagrantup.com,
clone this repository, and run the command 'vagrant up' from within
the freewpc directory. Within 30 minutes you'll have a fully configured
linux build environment!

The sources for the core routines are located in 'kernel';
other common code is in 'common', and game-specific code can be found
in a subdirectory based on the machine name, under 'machine'.
There are also a number of tools included with the distribution
for generating some of the source code and for building ROM images
that are under 'tools'.

You will also need several tools not here in order to build.
See the file doc/build.html for more detailed information. Most
importantly, you'll need a copy of the gcc6809 cross-compiler.
Many standard UNIX utilities are needed as well. FreeWPC has been
built successfully on Linux and Cygwin.

Email suggestions/comments/questions to <brian@oddchange.com>.

Visit the homepage at http://www.oddchange.com/freewpc for more
information.

47 changes: 47 additions & 0 deletions Vagrantfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :

# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
# see https://docs.vagrantup.com for more information

# We're going to run on ubuntu, 32 bit, 14.04
config.vm.box = "ubuntu/trusty32"

# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# config.vm.synced_folder "../data", "/vagrant_data"

# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
config.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
end

# We're going to mount this repository within the virtual machine at /freewpc
config.vm.synced_folder ".", "/freewpc"
config.vm.synced_folder ".", "/vagrant", disabled: true
# Change this line to the Visual Pinball pinmame rom directory
config.vm.synced_folder "C:\\Program Files (x86)\\Visual Pinball\\VPinMAME\\roms", "/roms"

# Enable provisioning with a shell script. Additional provisioners such as
# Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
# documentation for more information about their specific syntax and use.
config.vm.provision "shell", inline: <<-SHELL
apt-get update
sudo apt-get install -y git
sudo apt-get install -y zip
# 1) clone the gcc6809 source. TODO: it may be better to just have the binary
git clone https://LuskeyNoah@bitbucket.org/LuskeyNoah/gcc-4.3.4-6809.git
# 2) get the necessary dependencies to build gcc
sudo apt-get install -y libgmp-dev libmpfr-dev
# 3) go into the gcc6809 directory and build everything
cd gcc-4.3.4-6809/build-6809
sudo make everything
SHELL
end
2 changes: 1 addition & 1 deletion config.example
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
#MACHINE := tz
#MACHINE := afm
#MACHINE := wcs
#MACHINE := t2
MACHINE := t2
#MACHINE := fh
#MACHINE := tester
#MACHINE := tspp
Expand Down
14 changes: 14 additions & 0 deletions include/t2/cannon_driver.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#include <stdbool.h>

// Cannon reset : places the cannon back home and empty
// This is automatically called at the beginning and end of a ball
void cannon_reset(void);

// Cannon fire : Shoot the ball (if possible) or do nothing
void cannon_fire(void);

// Cannon is loaded : Check if the cannon contains a ball
bool cannon_is_loaded(void);

// Cannon start sequence : Start the sequence of swinging the cannon out with a ball
void cannon_start_sequence(void);
5 changes: 3 additions & 2 deletions machine/t2/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -61,11 +61,12 @@ PINMAME_OTHER_ROMS = t2_u*
# and leffs. RTTs must go into GAME_OBJS.
#

GAME_OBJS =
GAME_OBJS =

GAME_TEST_OBJS =

GAME_INCLUDES =

GAME_PAGED_OBJS = amode.o targets.o drop.o misc.o
GAME_PAGED_OBJS = skull.o shots.o combo.o cannon_driver.o
GAME2_OBJS = amode.o

Loading