This repository is the game engine and firmware base for our specific NEN board built around the PIC18F4550 and a 128x64 LCD. It is no longer just the current demo project.
The goal of this repo is to stay as a reusable engine for this exact hardware target, so new games should be created by forking it and replacing the demo materials with your own maps, dialogue, HUD assets, and game logic.
- PIC18F4550
- 2 KB RAM
- 32 KB flash
- 128x64 monochrome LCD
- 5 buttons
- 5 button LEDs
- PWM-controlled backlight
- a raycasting renderer tuned for this board
- fixed-point math helpers for movement and camera logic
- a
96x64world viewport with a32x64HUD strip - map-driven collision, event tiles, and dialogue tiles
- minimap, banner, compass, item slot, stats, and dialogue HUD rendering
- a build-time asset precompute step for spawn points and dialogue layout
- low-level LCD and SPI support for the target board
- Create a game walkthrough: full start-to-finish guide for turning this fork into your own game
Recommended workflow:
- Fork the repo.
- Build the original project once.
- Duplicate or replace the demo maps and dialogue in
assets.c. - Point
CurrentMapinmain.cat your own level. - Remove old demo content once your replacement boots correctly.
main.c: board init, main loop, active map selection, player startup stateassets.c: maps, dialogue, minimaps, banners, HUD assets, and other game-owned contentassets.h: content declarations and core content structsraycasting.c: renderer, movement, wall behavior, tile trigger dispatchHUDStuff.c: HUD and dialogue renderingdogm128_fast.c: LCD drawing primitives and bitmap blittingResources/MapMaker.html: map editor for authoring and exporting map dataResources/precompute_assets.py: generatesassets_precomputed.hfromassets.c
The top-level Makefile runs a pre-build asset generation step:
py -3 Resources/precompute_assets.py --source assets.c --output assets_precomputed.hThat means:
assets_precomputed.his generated, not hand-maintained- changing dialogue text or map spawn tiles in
assets.caffects generated output on the next build
The engine is already usable for building board-specific games around:
- first-person exploration
- map-based triggers
- dialogue-driven progression
- HUD-heavy gameplay on constrained hardware
The sprite pipeline is still being worked on, so the current walkthrough deliberately focuses on the stable parts of the engine first: maps, HUD, dialogue, events, and board integration.
Current renderer running on hardware:
