Skip to content

Latest commit

 

History

History
98 lines (55 loc) · 3.62 KB

README.md

File metadata and controls

98 lines (55 loc) · 3.62 KB

Arduino UNO Game Engine

Manic Miner, Scramble and Space Invaders on the Arduino UNO with composite output

This is a project to demonstrate the use of my game engine, with a port of Manic Miner, originally for the ZX Spectrum, by Matthew Smith, and the original Scramble and Space Invaders arcade machine. Please note that this is for the original Arduino UNO with the ATMega328P microcontroller - it will not work on any other versions of the Arduino. Also, some of the cheaper "Arduino compatible" boards use resonators instead of crystals for their clock. These are nowhere near accurate enough to generate the video signal. I have tried several and it caused extreme jitter in the image. If you can, use an official Arduino, or at least a board with a proper 16Mhz crystal!!

Engine Features:

  • Composite output using 2 resistors
  • Scrolling tilemap background
  • Up to 9 16x16 sprites on screen, with up to 7 per scanline
  • 1 sprite has pixel-perfect collision detection against other sprites
  • Fixed framerate of 50fps
  • Effective resolution is 256x256 (no framebuffer, everything is generated by "racing the beam")
  • Lots of spare cycles, enough to run game logic and easily update sprite positions, and even all tile indexes on screen every frame!

PCB Features:

  • PCB design schematics for a shield for the Arduino UNO, with buttons, composite output, speaker driving circuit and a an area to mount a Nintendo NES controller port to use instead of the buttons
  • All files for PCB, including production files ready to place a fully assembled order (except for the NES port and header pins) from JLCPCB. Cost including delivery per board for 20 fully assembled boards seems to be around £4 for me in the UK.

Manic Miner Game Features:

  • All 20 original levels
  • All "special" boss and other mechanics. Including Eugene, the Kong Beast, Skylab crashing enemies and Solar Generator beam
  • Extra animation on final cavern level showing realtime tile animation
  • Menu screen with options to choose start level, turn music on/off and reset high score which is persistant between boots
  • 2 channel audio with original music
  • Special end screen and message if you complete the game!

Space Invaders Game Features:

  • Pixel perfect recreation of original graphics
  • Gameplay logic matches the original game
  • Persistant high score (can be reset by holding Option+Start at boot)
  • 2 Channel Audio

Scramble Game Features

  • Level data from original ROMs
  • Gameplay logic matches original game
  • Smooth pixel scrolling, with fixed starfield in background
  • Persistant high score (can be reset by holding Start at boot)
  • 2 Channel Audio

YouTube:

Manic Miner on Arduino UNO Manic Miner on Arduino UNO Manic Miner on Arduino UNO

Screen-shots:

CRT monitor:

Render

Render

Render

Render

Render

Render

Render

Render

Render

Render

Render

Render

TFT TV screen:

Render

Render

PCB shield with NES controller

Render