1
0
Fork 0
mirror of https://github.com/imjasonh/nescript synced 2026-07-08 08:55:38 +00:00
nescript/examples/README.md
Claude fd5a940c89
Add example builds to CI, document sprite name behavior
- CI: new "Build Examples" job compiles all .ne files and validates
  the output ROMs have correct iNES headers
- Examples: add notes explaining that sprite names (Smiley, Ball) are
  parsed but not yet resolved — all draws use the built-in CHR tile 0.
  Custom sprite declarations come in M3.
- Codegen: explicit `let _ = &draw.sprite_name` to document the
  intentional skip, with comment about M2/M3 scope

https://claude.ai/code/session_01W6eQFStA66EuMKHUFo2rx3
2026-04-11 22:55:43 +00:00

1.9 KiB

NEScript Examples

Quick Start

1. Build the compiler

cargo build --release

2. Compile an example

cargo run -- build examples/hello_sprite.ne

This produces examples/hello_sprite.nes — a valid iNES ROM file.

3. Run in an emulator

Open the .nes file in any NES emulator:

Use the d-pad (arrow keys in most emulators) to move the sprite.

Examples

File Description
hello_sprite.ne Move a smiley face with the d-pad
bouncing_ball.ne A sprite that bounces around the screen automatically

What you'll see

The ROM displays a small 8x8 smiley-face sprite. This is a default tile built into the compiler's CHR data. In hello_sprite, you control it with the d-pad. In bouncing_ball, it moves on its own and bounces off the screen edges.

About sprite names

In Milestone 1, the name in draw Smiley at: (x, y) is parsed but not resolved to a specific tile — all draws use CHR tile 0 (the built-in smiley). The draw syntax is forward-compatible: when sprite declarations and the asset pipeline arrive in M3, names like Smiley will reference actual sprite definitions with custom tile data from PNGs.

Emulator controls

NES Button Typical Key
D-pad Arrow keys
A Z
B X
Start Enter
Select Right Shift

(Exact mappings vary by emulator — check your emulator's input settings.)

Compiler commands

# Compile to ROM
cargo run -- build examples/hello_sprite.ne

# Compile with custom output path
cargo run -- build examples/hello_sprite.ne --output my_game.nes

# Type-check only (no ROM output)
cargo run -- check examples/hello_sprite.ne