You are a photon trapped in a colorful maze. Your goal is to collect the four colored orbs scattered throughout the maze (red, yellow, green, and blue), then exit through the portal that appears. However, it is not that easy. Enemy photons are constantly shooting across the maze, threatening to destory you if you touch one of them. In addition, the clock is ticking down, and if it runs out it's Game Over. How far can you get in the Gauntlet of Doom?
Press Start to Play the game. Using the Control Pad, navigate around the maze to collect the 4 energy orbs and make it to the exit portal. You can also press the A button at any time to turn invisible, but you have a limited number of invisibility power-ups (as indicated by a counter on the status bar). You get one invisibility power-up for every level that you clear. If you hit an enemy photon, the energy orbs are reset and you respawn in your origional position. When the clock runs out, it is Game Over.
Challenge: See if you can discover the secret cheat code...
Linear Collision uses NESASM3.exe to compile the assembly code into a NES rom.
To compile, run compile.bat on Windows, or compile.sh on Linux. When compiling on Linux, make sure Wine is installed so that NESASM3 runs properly.
The source code is broken into logical folders to help make it easier to understand.
- Audio - Music and sound, along with Metal Slime's sound engine code
- Data - Raw binary data (like map layouts, title screen, text, etc.)
- Macros - Not code, but used by NESASM3 to generate code, similar to C++ templates or the C preprocessor
- Scripts - Additional code files to aid the main game
- Utilities - Programs that aid the development of Linear Collision
Various programs in the Utilities directory were used to aid the development of Linear Collision. Below is a breif summary of each one:
- Build Maze - Used to generate the Raw tile data for the origional map (before multiple map support was added)
- Demo - Gameplay demo programmed using GameMaker 8 to playtest the game before development
- GenerateLookupTable - Aids the creation of a lookup table used by the map loader to generate the map outline.
- Maps are stored in binary, so the lookup table is used to convert binary into tiles that outline the map.
- MapBuilder - Very powerful tool to develop a Linear Collision map.
- You can use this to create your own in-game map layouts.
- TextToHex - Convert text characters into the character data ASCII characters
- Tile Generator - I used this to build the title screen using GameMaker's tile layout utility
In case you want to burn a physical NES cartridge, Linear Collision uses NES Mapper 0 (NROM) with 32K of program data and 8K of character data. However, only 4K of the character data is used.
- Nerdy Nights Tutorials
- NES Dev Wiki
- Metal Slime's Sound Engine Tutorial
- David Estrada for composing the music and sound
- My family for support