1
0
Fork 0
mirror of https://github.com/imjasonh/nescript synced 2026-07-09 09:18:01 +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

73 lines
1.9 KiB
Markdown

# 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:
- **[Mesen](https://www.mesen.ca/)** (recommended — best debugging support)
- **[FCEUX](https://fceux.com/)**
- **[Nestopia](http://nestopia.sourceforge.net/)**
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
```