Coder Social home page Coder Social logo

convenient / mazeman Goto Github PK

View Code? Open in Web Editor NEW
21.0 2.0 1.0 58.08 MB

MazeMan - A procedurally generated dungeon game for the Nintendo DS

C 23.79% C++ 53.74% Assembly 3.11% Makefile 3.86% Python 0.43% Logos 0.04% XC 0.04% XS 0.04% Objective-C 1.40% Shell 0.10% Groff 13.39% Perl 0.03% GLSL 0.01%
game r4-flash-cartridge retrogaming nintendo-ds nintendo-hacking

mazeman's Introduction

MazeMan

A procedurally generated dungeon game for the Nintendo DS

You take control of MazeMan. Escape the 5 dungeons. Open colour coded doors. Grab some gold. Kill zombies.

Playing

  1. Download the .nds file.
  2. Fire up your favourite Nintendo DS emulator, or pop it on your R4 flash cartridge and play away.

This game used to play fine on Desumume on Windows XP. However it occasionally crashes my Ubuntu 15.10 machine. Probably due to my extremely naive and CPU hungry game loop. The R4 flash cartridge on the actual hardware seems to work reliably.

For more information on this insanity see "What was I thinking?"

What was I thinking?

I started making this game at the tail end of 2010 when it was a command line game on Windows.

The original C source for this game was converted into C++ to be compatible with devkitARM and libNDS and that's when the complexities started to creep in.

This was all way before I knew what to do about the following things:

  • Version control - I pulled this code from a directory path on an old hard drive like ./devkitPro/C++/nds/new/test/new. Good times.
  • Compiler warnings - If you want to see some funny and easily fixed compilation problems look at src/make.log.
  • Memory management - "Oh yeah, let's allocate every icon I need in the entire game when loading up the ROM boot screen. I'm bound to have enough RAM available." Clever stuff past Luke, clever stuff.
  • Single Responsibility Principle - A 4520 line long src/main.cpp file? What's going on in there! Oh yeah, EVERYTHING.
  • Basically anything about software engineering, design patterns, reusability. Hell, I even derived dijkstra's algorithm for this game then felt cheated when I found out it was invented 50 odd years previously.

The only reasonable decisions I made in this project were

  • Calling him MazeMan. It's a pretty obvious homage to Jumpman, which is what Mario was originally called in Donkey Kong.
  • Reading the Pac-Man Dossier.
  • Finishing it. It's a game with 5 levels an a kind-of boss level at the end. A lot of games never get it that far.

Compiling

cd src/
rm -rf build
export DEVKITPRO="/home/luker/src/mazeman/devkitpro/"
export DEVKITARM=${DEVKITPRO}/devkitARM
make
//Ignore the compiler warnings and feel free to judge younger, past me.

Contributing

This code is primarily on GitHub as a monument to my sins.

I'd like to keep the master branch as-is, a time-capsule from Spring 2011.

However, if you feel the desire to tidy up some of the mess then feel free to make a pull request to the develop branch.

If you're working from the develop branch then the compiler warnings have been cleaned up by code archaeologist @jcolicchio.

mazeman's People

Contributors

convenient avatar

Stargazers

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

Watchers

 avatar  avatar

Forkers

jcolicchio

mazeman's Issues

Using master as a time capsule

"I'd like to keep the master branch as-is, a time-capsule from Spring 2011."

The git mechanism for keeping track of a specific version is tagging. While a lot of people use branches this way I think it just helps to confuse contributors.

My suggestion is to do:

git checkout master;
git tag 0.0.1;
git push origin --tags;
git pull develop;

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.