1
0
Fork 0
mirror of https://github.com/imjasonh/nescript synced 2026-07-09 09:18:01 +00:00
nescript/tests/emulator/goldens
Claude c5b04c2065
platformer: move HUD from sprite OAM slots to background + sprite-0 split
The status bar now paints into NT row 1 (coin + score digits on
the left, heart + lives digit on the right) using the `bg3`
sub-palette that matches `sp0` pixel-for-pixel. A single OAM
slot-0 anchor sprite sits over the coin tile; its one opaque
pixel lines up with the coin's bottom row so sprite-0 hit fires
at scanline 15, and a trailing `sprite_0_split(camera_x, 0)`
latches the playfield scroll starting at scanline 16. NT rows
0-1 stay pinned while scanlines 16+ scroll with the camera.

Score / lives updates are shadow-compared (`last_score`,
`last_lives`) so the VRAM ring sees an entry only when the
backing state actually changes — most frames append zero bytes.
OAM footprint drops from 5 sprites per frame down to 1.

Tile pipeline gains a 27th entry — a 7-transparent-row + 1-pixel
anchor — so the sprite-0 hit lands on scanline 15 instead of
scanline 8 (the latter would smear the HUD glyphs across the
split). `gen_platformer_tiles.rs` is updated in lockstep.

Ancillary changes: `bg3` retuned from `[yellow, orange,
dk_orange]` to `[red, orange, white]` (matching `sp0`);
`palette_map` row 0 flips from bg0 to bg3; legend gains `o`, `h`,
`0`, `3` so the initial map can preload the static HUD tiles and
the committed nametable already reads "coin 00 ... heart 3" on
frame 0.

`docs/future-work.md` loses the sprite-0 HUD follow-up section
(this commit lands it). Goldens + gif refreshed.
2026-04-20 17:21:20 +00:00
..
arrays_and_functions.audio.hash
arrays_and_functions.png
audio_demo.audio.hash peephole: step past non-A ops in remove_dead_loads 2026-04-19 01:43:58 +00:00
audio_demo.png
auto_chr_background.audio.hash
auto_chr_background.png
auto_sprite_flicker.audio.hash compiler: GNROM / debug port / sprite flicker / fade / sprite-0 split + docs 2026-04-18 19:31:55 +00:00
auto_sprite_flicker.png compiler: GNROM / debug port / sprite flicker / fade / sprite-0 split + docs 2026-04-18 19:31:55 +00:00
axrom_simple.audio.hash compiler: PRNG / edge input / palette fade / AxROM / CNROM / FCEUX labels 2026-04-18 18:13:18 +00:00
axrom_simple.png compiler: PRNG / edge input / palette fade / AxROM / CNROM / FCEUX labels 2026-04-18 18:13:18 +00:00
bitwise_ops.audio.hash
bitwise_ops.png
bouncing_ball.audio.hash
bouncing_ball.png
cnrom_simple.audio.hash compiler: PRNG / edge input / palette fade / AxROM / CNROM / FCEUX labels 2026-04-18 18:13:18 +00:00
cnrom_simple.png compiler: PRNG / edge input / palette fade / AxROM / CNROM / FCEUX labels 2026-04-18 18:13:18 +00:00
coin_cavern.audio.hash
coin_cavern.png
comparisons.audio.hash
comparisons.png
edge_input_demo.audio.hash compiler: PRNG / edge input / palette fade / AxROM / CNROM / FCEUX labels 2026-04-18 18:13:18 +00:00
edge_input_demo.png compiler: PRNG / edge input / palette fade / AxROM / CNROM / FCEUX labels 2026-04-18 18:13:18 +00:00
fade_demo.audio.hash compiler: GNROM / debug port / sprite flicker / fade / sprite-0 split + docs 2026-04-18 19:31:55 +00:00
fade_demo.png compiler: GNROM / debug port / sprite flicker / fade / sprite-0 split + docs 2026-04-18 19:31:55 +00:00
feature_canary.audio.hash
feature_canary.png
friendly_assets.audio.hash peephole: step past non-A ops in remove_dead_loads 2026-04-19 01:43:58 +00:00
friendly_assets.png
function_chain.audio.hash
function_chain.png
gnrom_simple.audio.hash compiler: GNROM / debug port / sprite flicker / fade / sprite-0 split + docs 2026-04-18 19:31:55 +00:00
gnrom_simple.png compiler: GNROM / debug port / sprite flicker / fade / sprite-0 split + docs 2026-04-18 19:31:55 +00:00
hello_sprite.audio.hash
hello_sprite.png
hud_demo.audio.hash docs + example: HUD demo and language-guide VRAM buffer section 2026-04-18 21:34:44 +00:00
hud_demo.png runtime: reset PPU scroll after VRAM buffer drain 2026-04-18 22:57:46 +00:00
i16_demo.audio.hash compiler: i16 / SRAM saves / inline-asm dot labels / docs 2026-04-18 20:49:06 +00:00
i16_demo.png compiler: i16 / SRAM saves / inline-asm dot labels / docs 2026-04-18 20:49:06 +00:00
inline_asm_demo.audio.hash
inline_asm_demo.png
logic_ops.audio.hash
logic_ops.png
loop_break_continue.audio.hash
loop_break_continue.png
match_demo.audio.hash
match_demo.png
metasprite_demo.audio.hash
metasprite_demo.png
metatiles_demo.audio.hash metatiles + collision: metatileset, room, paint_room, collides_at 2026-04-19 01:28:17 +00:00
metatiles_demo.png metatiles + collision: metatileset, room, paint_room, collides_at 2026-04-19 01:28:17 +00:00
mmc1_banked.audio.hash
mmc1_banked.png
mmc3_per_state_split.audio.hash
mmc3_per_state_split.png
nested_structs.audio.hash
nested_structs.png
noise_triangle_sfx.audio.hash peephole: step past non-A ops in remove_dead_loads 2026-04-19 01:43:58 +00:00
noise_triangle_sfx.png
palette_and_background.audio.hash
palette_and_background.png
palette_brightness_demo.audio.hash compiler: PRNG / edge input / palette fade / AxROM / CNROM / FCEUX labels 2026-04-18 18:13:18 +00:00
palette_brightness_demo.png compiler: PRNG / edge input / palette fade / AxROM / CNROM / FCEUX labels 2026-04-18 18:13:18 +00:00
platformer.audio.hash platformer: move HUD from sprite OAM slots to background + sprite-0 split 2026-04-20 17:21:20 +00:00
platformer.png platformer: move HUD from sprite OAM slots to background + sprite-0 split 2026-04-20 17:21:20 +00:00
pong.audio.hash peephole: step past non-A ops in remove_dead_loads 2026-04-19 01:43:58 +00:00
pong.png
prng_demo.audio.hash compiler: PRNG / edge input / palette fade / AxROM / CNROM / FCEUX labels 2026-04-18 18:13:18 +00:00
prng_demo.png review: tighten PRNG / void-intrinsic / FCEUX path handling 2026-04-18 18:48:55 +00:00
scanline_split.audio.hash
scanline_split.png
sfx_pitch_envelope.audio.hash
sfx_pitch_envelope.png
sha256.audio.hash
sha256.png
signed_compare.audio.hash ir/codegen: signed comparison lowering for i8/i16 2026-04-19 00:17:34 +00:00
signed_compare.png ir/codegen: signed comparison lowering for i8/i16 2026-04-19 00:17:34 +00:00
sprite_0_split_demo.audio.hash compiler: GNROM / debug port / sprite flicker / fade / sprite-0 split + docs 2026-04-18 19:31:55 +00:00
sprite_0_split_demo.png compiler: GNROM / debug port / sprite flicker / fade / sprite-0 split + docs 2026-04-18 19:31:55 +00:00
sprite_flicker_demo.audio.hash
sprite_flicker_demo.png
sprites_and_palettes.audio.hash
sprites_and_palettes.png
sram_demo.audio.hash compiler: i16 / SRAM saves / inline-asm dot labels / docs 2026-04-18 20:49:06 +00:00
sram_demo.png compiler: i16 / SRAM saves / inline-asm dot labels / docs 2026-04-18 20:49:06 +00:00
state_machine.audio.hash
state_machine.png
structs_enums_for.audio.hash
structs_enums_for.png
two_player.audio.hash
two_player.png
uxrom_banked.audio.hash
uxrom_banked.png
uxrom_banked_to_banked.audio.hash
uxrom_banked_to_banked.png
uxrom_user_banked.audio.hash
uxrom_user_banked.png
vram_buffer_demo.audio.hash compiler: VRAM update buffer (nt_set / nt_attr / nt_fill_h) 2026-04-18 21:14:31 +00:00
vram_buffer_demo.png runtime: reset PPU scroll after VRAM buffer drain 2026-04-18 22:57:46 +00:00
war.audio.hash peephole: step past non-A ops in remove_dead_loads 2026-04-19 01:43:58 +00:00
war.png