NESFab Studio v0.1 — Available on itch.io
NESFab Studio

NESFab
Studio

The NES development IDE
you always wanted

A complete NES game development environment. CHR tile editor, metatile composer, nametable painter, object classes, and a purpose-built language that compiles directly to 6502 assembly.

SCROLL TO EXPLORE

Everything in one place

No more juggling a dozen separate tools. NESFab Studio unifies every stage of NES game development in a single, cohesive environment.

CHR Editor
Draw NES CHR tiles directly in the studio. Full palette support, 8×8 pixel grid, multiple banks. See your sprites live as you paint them.
Nametable Painter
Paint your level nametables using metatile stamps. 16×15 metatile grid maps directly to the NES PPU nametable — what you see is what runs.
Metatile Composer
Build 2×2 metatile sets from your CHR tiles. Assign palette attributes per quadrant. Build reusable tile vocabularies for your levels.
NESFab Language
Write game logic in NESFab — a purpose-built language that compiles to optimized 6502. First-class NES concepts: NMI handlers, PPU registers, OAM, palettes.
Object Classes
Define typed object classes with custom fields directly in the map editor. Spawn points, enemy configs, and triggers — all visible and editable in context.
Integrated Build
One-click build that generates .fab source files from your maps and compiles the full project. The console shows errors and paths inline — no terminal switching.

Write code.
Paint levels.
Build ROMs.

NESFab Studio collapses the full NES development cycle into a single project. Your .chr, .fab, and map files all live together and compile in one step.

01
Draw CHR tiles
Paint 8×8 pixel tiles in the CHR editor. Organize across CHR banks. Tiles are instantly available in the metatile and map editors.
02
Compose metatiles
Combine 4 CHR tiles into a 16×16 metatile. Assign palette attributes to each 2×2 quadrant for accurate NES attribute table output.
03
Paint the nametable
Stamp metatiles onto the 16×15 level grid. Place object instances — enemies, spawn points, triggers — directly on the map.
04
Write NESFab logic
Open main.fab and write your game loop, NMI handler, and entity logic. The language maps 1:1 to NES hardware primitives.
05
Build & run
Hit Build. The studio generates .fab data files from your maps, compiles the project, and outputs a ready-to-run .nes ROM.
MAIN.FAB — NESFab source
// CompTest — NESFab main entry point   nmi game_nmi()   {PPUSCROLL}(0)   {PPUSCROLL}(0)   {PPUMASK}(PPUMASK_BG_ON)   ppu_upload_oam_poll_pads(0)   mode main()   : nmi game_nmi     {PPUCTRL}(0)     {PPUMASK}(0)     // Upload palette   for U i = 0; i < 16; i += 1     palette[i] = pal_level(i)     ppu_upload_palette()     {PPUSTATUS}()   {PPUADDR}($20)   {PPUADDR}($00)

CHR SHEET — 8×8 tiles · CHR-0 · 64 tiles total

Pixel-perfect
tile art

Paint NES CHR tiles directly inside the studio. The editor enforces the NES 4-color-per-tile limit and gives you a live zoomed preview with the full CHR sheet visible alongside.

Pencil, eraser, fill, eyedropper tools
4-color NES palette enforced per tile
Multiple CHR banks, live preview
Auto-save on every edit stroke

Paint levels
tile by tile

The nametable editor maps your metatile stamps directly to the NES's 16×15 metatile nametable grid. Object instances sit on a separate layer, keeping visual and data concerns clean.

Stamp, dropper, and fill tools
Toggle MT grid and attribute grid overlays
Separate tile and object layers
Generates .fab data automatically on save
Nametable
Metatiles
Palettes
Objects

Type-safe
game objects

Define object classes with typed fields — U8, U16, Bool — and place instances directly on the map. The compiler generates tight 6502 data tables from your object definitions.

Integer and boolean typed fields
Per-class color coding on the map
Multiple object classes per scene
Compiled to efficient 6502 data tables
Object Classes level.scene
Classes
enemies
spawn_points
// Object class: enemies
// Fields: 1
ct U8 hitpoints = 100
Fields
hitpoints
U8
100
Add Field

16х16 tiles with
palette control

Compose 2×2 metatiles from your CHR tileset and assign one of four palettes to each 2×2 attribute block. The editor enforces NES hardware constraints so there are no surprises at compile time.

TL / TR / BL / BR quadrant selection
Per-quadrant palette assignment (0–3)
Live full CHR sheet for tile picking
Subtile index shown on hover
Editing MT #00 Subtile: 0
TL
TR
BL
BR
PALETTE
CHR SHEET

Watch the
full showcase

See NESFab Studio's CHR editor, metatile composer, nametable painter, object system, and build pipeline all working together in a complete walkthrough.


Start Building

$10 on itch.io. No subscription. Yours to keep.

Buy on itch.io — $10 Explore Features