3D rail shooter written in ARM assembly
Assembly CMake Python
Permalink
Failed to load latest commit information.
assets Added images Jun 21, 2014
.gitignore Merged .gitignore Jun 18, 2014
CMakeLists.txt Added more toolchains Jun 22, 2014
LICENSE Modify LICENSE Jun 19, 2014
README.md Update README.md Nov 14, 2014
bullets.s Github release Jun 18, 2014
enemies.s Github release Jun 18, 2014
game.s Github release Jun 18, 2014
gfx.s Github release Jun 18, 2014
imager.py Github release Jun 18, 2014
input.s Github release Jun 18, 2014
kernel.ld Add more comments to kernel.ld Jan 13, 2016
kernel.s Github release Jun 18, 2014
math.s Github release Jun 18, 2014
mbox.s Github release Jun 18, 2014
objects.s Github release Jun 18, 2014
pillars.s Github release Jun 18, 2014
player.s Github release Jun 18, 2014
ports.s Github release Jun 18, 2014
printf.s Github release Jun 18, 2014
rockets.s Github release Jun 18, 2014
sound.s Github release Jun 18, 2014
test.s Github release Jun 18, 2014

README.md

PiFox

Video of the game in action: https://www.youtube.com/watch?v=-5n9IxSQH1M

Developed as an extension to a first year group project at Imperial College London.

Bare Metal 3D rail shooter game

Dependencies

Using your favourite Linux package manager, install:

  • arm-none-eabi-binutils
  • cmake

Build

The project uses CMake and requires an ARM assembler supporting GNU as syntax.

mkdir build
cd build
cmake ..
make

Emulation

PiEmu (https://github.com/ICTeam28/PiEmu) can run the game without sound. Assuming PiFox and PiEmu have been cloned in the same directory and both are built, PiEmu must be invoked with the following command inside PiFox's build directory:

../../PiEmu/build/piemu --graphics --quiet --memory=256M --addr=65536 --nes kernel.img 

A qemu branch can be used to emulate the game at a higher framerate, but sound must be disabled. (https://github.com/Torlus/qemu/tree/rpi)

config.txt

In order to be compatible with qemu, the kernel must be loaded at address 0x10000.

disable_overscan=1
disable_pvt=1
force_turbo=1
gpu_mem_256=160
gpu_mem_512=316
cma_lwm=16
cma_hwm=32
kernel_address=65536

Wiring the controller

NES Raspberry Pi
GND Ground
VCC 3v3
CUP GPIO 10
OUT 0 GPIO 11
D1 GPIO 4

NES Pinout

Raspberry PI Pinout

Authors

Nandor Licker

  • Email: nandor.licker13[at]imperial.ac.uk
  • Github @nandor

Ilija Radosavovic

  • Email: ilija.radosavovic13[at]imperial.ac.uk
  • Github @ir413

David Avedissian

Nic Prettejohn

  • Email: nicolas.prettejohn13[at]imperial.ac.uk
  • Github @nkp
  • Twitter @thisisnkp

Special thanks

Special thanks to chpatrick (Patrick Chilton) for his advice.