Coder Social home page Coder Social logo

smashcat / uno_manic_miner Goto Github PK

View Code? Open in Web Editor NEW
30.0 5.0 2.0 23.32 MB

Arduino UNO game engine with Manic Miner Scramble, and Space Invaders demo games

License: GNU General Public License v3.0

C++ 1.79% C 71.90% Assembly 25.70% Makefile 0.60%
arduino-uno game-engine manic-miner space-invaders

uno_manic_miner's Introduction

Arduino UNO Game Engine

Manic Miner 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 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

YouTube:

Manic Miner on Arduino UNO Manic Miner on Arduino UNO

Screen-shots:

CRT monitor:

Render

Render

Render

Render

Render

Render

Render

Render

TFT TV screen:

Render

Render

PCB shield with NES controller

Render

uno_manic_miner's People

Contributors

smashcat avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

uno_manic_miner's Issues

Scrambled start / menu screen

Hi there - I love the project! I posted this on YouTube, thought an image might be useful.

I built the project using a breadboard and have buttons and sound working - and video, except on the menu screen.

I've swapped the resistor values to the latest ones, and I'm getting the same results: the menu screen is badly garbled as if there's something wrong with the code / compilation. I can see where the menu highlight bar is, and move it down, but there's no readable text, just (crisp) patterns of dots. The level screens all seem to show ok though. All I did to the code was delete the debug file and the reference to it, to make it small enough to compile. My Arduino is an old but genuine Uno - and the game is mostly working!

IMG_6610
IMG_6606 copy

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.