# Turing Complete PacMan This program is intended to be used as "level validation" for the `IO` level (in which player add support for keyboard, timer and screen display). It thus should be able to run on the architecture and ISA the players have built at that point, and must be able to run smoothly on a simulation speed of `1 MHz` or above. ## About this repository The `main` branch contains a minimal implementation of the game. The following branches contains variations, allowing comparisons of performances, visuals, gameplay, ... - `res-2`: 256x192 screen resolution, 17x17 tile ## Build script File inclusion is currently not supported by the game, so a `build.ts` script it provided that will concatenate the content of the hard-coded `.asm` files and output the result on stdout. It also convert the PPM assets (map and sprites) into ASM raw values representation and append it after all the code. Usage example: ```sh ./build.ts > /path/to/the/game/schematics/architecture/Symfony/sandbox/main.asm ``` The script is build over Deno's API, so you'll need to have a `deno` binary in your PATH to use it that way. ## Assets PPM files that may be converted into the game's raw data format. ### Map The `assets/map.ppm` file contains a representation of the initial state of the map. The corresponding tile values are: PPM 8bits channels | Tile -- | -- `0x00_00_00` | `0` (Empty) `0xFF_00_00` | `1` (Wall) `0xFF_FF_00` | `2` (Coin) ### Sprites The corresponding in-game color values are: PPM 8bits channels | In-game `RRRGGGBB` value | Name -- | -- | -- `0x00_00_00` | `000_000_00` | Black `0x00_00_FF` | `000_000_11` | Blue `0x00_FF_00` | `000_111_00` | Green `0x77_77_77` | `010_011_10` | Gray `0xFF_00_00` | `111_000_00` | Red `0xFF_00_FF` | `111_000_11` | Pink `0xFF_80_00` | `111_100_00` | Orange `0xFF_FF_00` | `111_110_00` | Yellow `0xFF_FF_FF` | `111_111_11` | White