One-off tech demos and test ROMs for NES
This repository will contain several tech demos for Nintendo Entertainment System that I've produced over more than a decade prior to 2019.
- 768-byte level editor
- Action 53 (mapper 28) big CHR RAM
- Action 53 (mapper 28) comprehensive test
- Anti-DiskDude header cleaner
- BNROM and AOROM size and mirroring test
- Boing 2007: squashing the background using mistimed VRAM reads
- Boolean Beakers
- ca65 macros reimplementing 6502 mnemonics
- CHR compression through pixel RLE
- Compatibility Benchmarks for 2001
- Concentration Room Emblem Designer prototype
- Convergence
- DAC nonlinear volume
- DPCM Split: generate a stable raster split without external timer hardware
- EQ test: pink noise and sine sweep generators
- Eighty: read buttons on the NES Four Score accessory
- Fairydust Editor with Compressed Output
- FamiTracker module to video renderer
- File extractor for Family Computer Disk System (FDS) images
- FME-7 big PRG RAM
- FME-7 IRQ acknowledgment
- gmewav: render anything libgme or DUMB plays to a WAV file
- GNOME vs. KDE: Battle of the Desktops: Bingo-inspired 2-player game
- Hello World program produced while learning ca65
- Insane Game: incomplete attempt to port the TI-83 version of SameGame
- IRE tiny: port of the IRE (brightness level) test of 240p Test Suite to run on a minimalist devcart
- Mapper 78 submappers: test for handling of nametable mirroring in ROMs intended to run on the Uchuusen and Holy Diver cartridge boards
- Math library: multiply, divide, square root, binary to decimal
- Meece: first NES program to use a Super NES Mouse
- Metatile engine using 32x16-pixel cells
- MMC3 big CHR RAM
- MMC3 save data viewer
- Nibbles: the snake game people have loved since the QBasic era, which ended up on a few famiclones' built-in pirate multicarts
- OAM reset quirk: 2 sprites will be missing after Reset
- Password save
- PAL chroma phase: investigate how a TV comb filter combines scanlines in the video from various NES and famiclone models
- Port test for famiclone assembly
- Pretendo and other fake logos: generate entropy without a button press to randomly choose a parody logo to drop into the Game Boy boot ROM intro
- Raw PCM Hello: compare PCM to DPCM and attempt playback through pulse channels' volume registers
- RGB121: display 16-color images on an NES using pseudo-interlacing
- Russian Roulette
- Software parallax: use bit shifting to rotate background tiles horizontally
- Sound drivers that never progressed far
- Sprite 0 hit interactive test
- Sprite Cans
- Sprite scaling: real-time shrinking is possible using lookup tables
- Tall Pixel: stretch an image vertically by 150%
- Telling LYs?: sub-frame input timing test
- Text to spectrogram
- Tuning table generator for NSD.Lib
- Vaus Test: read the Arkanoid controller
- Volume tester: Relative volumes of APU channels
- VWF terminal
- Zapper lag tests
- Projects that never proceeded past pixel art prototypes
Many of them have patches to their build system to help them build under Python 3 and late-2010s versions of cc65. (To get set up to build, see the instructions for nrom-template.) The build process is tested under Debian and Ubuntu distributions of the GNU/Linux operating system and may need changes to work on Microsoft Windows.
Most should be under the zlib license or an equivalent GNU all-permissive license, though this merits an audit.