| craft | |
| examples | |
| audio | |
| apu_switch | |
| main.c | Hot-swapping APU programs at runtime — apuReset() in action |
| echo | |
| main.c | Family 8 (Audio) · rung 8.9 — echo / reverb from the S-DSP |
| pitch_mod | |
| main.c | Hardware vibrato — one voice's output modulates another's pitch |
| play_noise | |
| main.c | Drum loop from the DSP noise generator — no samples at all |
| sfx_from_wav | |
| main.c | One-shot sound effects from WAV files — the wav2brr pipeline |
| snesmod_music | |
| main.c | Tracker music playback with transport controls via SNESMOD |
| snesmod_music_large | |
| main.c | Large soundbank music playback (>32KB, multi-bank LoROM) |
| snesmod_sfx | |
| main.c | Sound effect playback with pitch control via SNESMOD |
| soundboard | |
| main.c | Soundboard — the audio v2 engine driven entirely from C |
| speech_synth | |
| main.c | Speech synthesis — the SNES says "OPEN SNES" |
| backgrounds | |
| mode0 | |
| main.c | Mode 0 parallax scrolling with four independent 2bpp backgrounds |
| vram_map.h | |
| mode1 | |
| main.c | Static 16-color background display in Mode 1 (4bpp) |
| mode1_bg3_priority | |
| main.c | Mode 1 BG3 high-priority overlay for HUD-style layering |
| mode1_lz77 | |
| main.c | LZ77-compressed tile loading with LZSS decompression to VRAM |
| vram_map.h | |
| mode2 | |
| main.c | Backgrounds — Mode 2 offset-per-tile: per-column scroll from BG3 |
| mode3 | |
| main.c | Mode 3 full-color (256-color, 8bpp) background with assembly DMA loader |
| mode5 | |
| main.c | Mode 5 hi-resolution background display |
| mode5_hires | |
| main.c | Hi-res text — BG Mode 5 + interlace (512 horizontal pixels) |
| basics | |
| aim_target | |
| main.c | Aim, distance, and angle showcase for <snes/math.h> |
| collision_demo | |
| main.c | AABB and tile-based collision detection with visual feedback |
| vram_map.h | |
| fix32_orbit | |
| main.c | 16.16 fixed-point orbit demo (B5 capstone) |
| game_skeleton | |
| main.c | Game skeleton — the smallest complete game: title -> play -> over |
| panel_hud | |
| main.c | Game math & UI, rung — panel HUD: a status box that survives a dialog |
| random | |
| main.c | Random number generation demo |
| scene_stack | |
| main.c | Scene stack demo — title → counter → pause overlay |
| timer | |
| main.c | VBlank frame counter display, written against the gameloop framework |
| chips | |
| dsp1_cube | |
| main.c | DSP-1 pseudo-3D: a cube tumbling in 3D, rotated by the coprocessor |
| sa1_hello | |
| main.c | SA-1 boot diagnostic (Phase 1) |
| sa1_starfield | |
| main.c | SA-1 Murmuration Demo — 128 dots in Lissajous sine patterns |
| superfx_3d | |
| main.c | SuperFX 3D — auto-rotating wireframe cube (2-axis rotation) |
| superfx_hello | |
| main.c | SuperFX (GSU) Hello World — boot diagnostic |
| color | |
| direct_color | |
| main.c | Direct color — the pixel byte IS the color (CGWSEL bit 0) |
| gradient_9bit | |
| main.c | "9-bit" gradient — brightness-dithered backdrop, two HDMA channels |
| hicolor_1792 | |
| main.c | HiColor — 1792 colors on screen from a 4bpp background |
| hicolor_blend | |
| main.c | "3840 colors" — RGB channel-split blend across two backgrounds |
| palette_cycle | |
| main.c | Colour, rung 6b — palette cycling: animate without touching a pixel |
| shadow_tint | |
| main.c | Colour, rung 6c.2 — shadow & tint: recolour a whole scene at once |
| transparency | |
| main.c | Color addition transparency between two background layers |
| fundamentals | |
| text_glyphs | |
| main.c | Fundamentals — how a glyph is drawn: hand-coded 2bpp font tiles |
| games | |
| breakout | |
| main.c | Breakout game with brick collision, paddle physics, and level cycling |
| likemario | |
| main.c | Side-scrolling platformer with scroll streaming and SNESMOD audio |
| mapandobjects | |
| goomba.c | |
| goomba.h | |
| koopatroopa.c | |
| koopatroopa.h | |
| main.c | Scrolling platformer with object engine and enemy AI |
| mario.c | |
| mario.h | |
| mode7_flying | |
| main.c | Mode 7 flying — a Pilotwings-style demo (#4, part 2) |
| mode7_racing | |
| main.c | Mode 7 racing — an F-Zero-style mini game (#4, part 1) |
| rpg | |
| main.c | RPG template (#7) — Tiled-driven overworld with dialog boxes |
| shmup_1942 | |
| main.c | Shmup_1942 — S5: bullets, collision and enemy destruction |
| tetris | |
| board.c | |
| board.h | |
| hud.c | |
| hud.h | |
| main.c | Tetris with 3-layer BG architecture, DAS input, and SNESMOD audio |
| piece.c | |
| piece.h | |
| render.c | |
| render.h | |
| hdma | |
| gradient_colors | |
| main.c | HDMA-driven per-scanline backdrop color gradient |
| hdma_helpers | |
| main.c | Interactive showcase of all four HDMA library helper effects |
| hdma_indirect_gradient | |
| main.c | Indirect HDMA — 32-band backdrop gradient from a pointer table |
| hdma_wave | |
| main.c | HDMA-driven sinusoidal wave distortion on background |
| hdma_wave_table | |
| main.c | Raw HDMA table in C — per-scanline wave, krom-style |
| input | |
| controller | |
| main.c | Single controller input display |
| mouse | |
| main.c | SNES mouse input with cursor sprite, buttons, and sensitivity |
| move_sprite | |
| main.c | Family 4 (Input) · rung 4.2 — drive a sprite with the pad |
| superscope | |
| main.c | SNES Super Scope light gun detection, calibration, and firing |
| two_players | |
| main.c | Two-player simultaneous input with independent sprites |
| maps | |
| dynamic_map | |
| main.c | Tilemap-based sprite engine with 32x32 and 64x64 map modes |
| map32x32.c | |
| map32x32.h | |
| map64x64.c | |
| map64x64.h | |
| map_scroll | |
| main.c | Scrolling map with animated sprite character |
| slope_collision | |
| main.c | Platformer with diagonal slope collision detection |
| mario.c | |
| mario.h | |
| tiled | |
| main.c | Tiled map editor integration with the map scrolling engine |
| memory | |
| hirom_demo | |
| main.c | HiROM memory mapping mode with 64KB bank access |
| save_game | |
| main.c | SRAM battery-backed save with multiple save slots |
| mode7 | |
| perspective | |
| main.c | Mode 7 perspective with HDMA split-screen (F-Zero style) |
| perspective_rotate | |
| main.c | Rotating Mode 7 perspective — full matrix driven by 4 HDMA channels |
| rotate_scale | |
| main.c | Mode 7 rotation and scaling demo |
| scrolling | |
| continuous_scroll | |
| main.c | Two-layer parallax scrolling with player sprite |
| mixed_scroll | |
| main.c | Mixed scrolling with fixed and auto-scrolling background layers |
| vram_map.h | |
| parallax_scroll | |
| main.c | HDMA-driven parallax scrolling with three speed zones |
| sprites | |
| animated_sprite | |
| main.c | Direction-based sprite animation with horizontal flip |
| dynamic_metasprite | |
| main.c | Dynamic metasprite engine demo — multi-tile characters with VRAM streaming |
| dynamic_sprite | |
| main.c | Dynamic sprite engine with per-frame VRAM tile streaming |
| metasprite | |
| main.c | Metasprite composition with switchable OBJ size modes |
| vram_map.h | |
| simple_sprite | |
| main.c | Display a single static 32x32 sprite |
| sprite_sizes | |
| main.c | Interactive demo of all six SNES OBJ size modes |
| sprite_swarm | |
| main.c | Sprites showcase — a bouncing swarm, and the OAM throughput ceiling |
| text | |
| print_string | |
| main.c | Family 1 (Text) · rung 1.1 — print a string with the built-in font |
| scroll_message | |
| main.c | Family 1 (Text) · rung 1.4 — move a message across the screen |
| transitions | |
| fading | |
| main.c | Screen fade in/out using INIDISP brightness control |
| vram_map.h | |
| mosaic | |
| main.c | Mosaic and fade screen transition effects |
| windows | |
| transparent_window | |
| main.c | Semi-transparent darkened rectangle via HDMA windows and color math |
| window | |
| main.c | HDMA-driven triangle window masking on selectable BG layers |
| window_multi_hdma | |
| main.c | Multi-window HDMA — both windows' edges driven per scanline |
| hardware | |
| lib | |
| include | |
| snes | |
| anim.h | Declarative animation player — data-driven frame sequencing |
| apu.h | Raw APU (SPC700) access — IPL upload and execution |
| asset.h | Opt-in asset bundle convention — package tiles + palette (+ optional tilemap) into a typed value, load it with one function call |
| audio.h | OpenSNES Audio System |
| background.h | SNES Background Layer Management |
| collision.h | SNES Collision Detection |
| colormath.h | SNES Color Math (Blending/Transparency) |
| console.h | SNES Console Initialization and Core Functions |
| debug.h | Debug utilities for SNES development |
| dma.h | SNES DMA (Direct Memory Access) |
| dsp1.h | DSP-1 coprocessor (NEC µPD77C25) — fixed-point 3D math from C |
| fixed32.h | SNES 16.16 Fixed-Point Math |
| gameloop.h | Opt-in game loop framework — write your update, the engine runs the VBlank synchronisation |
| hdma.h | SNES HDMA (Horizontal-blanking DMA) |
| input.h | SNES Controller Input |
| interrupt.h | SNES Interrupt Handling |
| lzss.h | LZSS (LZ77) Decompression for SNES |
| map.h | Scrolling tilemap engine for Mode 1 backgrounds |
| math.h | SNES Fixed-Point Math |
| mode7.h | SNES Mode 7 Support |
| mosaic.h | SNES Mosaic Effects |
| object.h | Game object engine with physics and collision (CONTRIB module) |
| panel.h | Opt-in 9-slice panels — bordered boxes on a background layer |
| profile.h | Performance profiling tools for SNES development |
| registers.h | SNES Hardware Register Definitions |
| sa1.h | SA-1 Enhancement Chip Interface |
| scene.h | Opt-in scene/state stack — push/pop game scenes without rolling your own state machine |
| snesmod.h | SNESMOD - Tracker-based Audio Engine |
| sprite.h | SNES Sprite (Object) Management |
| sram.h | SNES SRAM (Save RAM) Functions |
| superfx.h | SuperFX (GSU) coprocessor library — registers, config, and API |
| system.h | SNES System Variables (crt0.asm exports) |
| text.h | Text rendering functions for OpenSNES |
| types.h | OpenSNES Standard Types |
| video.h | SNES Video / PPU Functions |
| window.h | SNES Window/Masking System |
| snes.h | OpenSNES common-case master header |
| tools | |
| tutorials | |