1
0
Fork 0
mirror of https://github.com/imjasonh/nescript synced 2026-07-08 08:55:38 +00:00
nescript/tests/emulator/goldens/war.audio.hash

2 lines
16 B
Text
Raw Normal View History

peephole: step past non-A ops in remove_dead_loads `remove_dead_loads` now scans past opcodes that touch neither A nor the flags an LDA sets, so a redundant LDA gets caught by its successor's overwrite even when an index load or counter bump sits between them. The extension covers LDX/LDY/INX/INY/DEX/DEY and the flag ops (CLC/SEC/CLI/SEI/CLD/SED/CLV) alongside the INC/DEC/STX/STY opcodes the pass already stepped past. The highest-leverage case is the shape every single-tile `draw` emits. After copy propagation and dead-store elimination do their work, the stream reads: LDA #<y> ; stray producer, value never consumed LDY oam_cursor LDA #<y> ; real load before STA STA $0200,Y The first LDA was surviving because the pass bailed on the LDY. With the step-past, it drops. One LDA gone per draw, 2 bytes each. Measured LDA-count reduction on committed examples: platformer 242 → 221 (-21, -8.7 %) war 785 → 754 (-31, -4.0 %) pong 843 → 827 (-16, -1.9 %) **Audio goldens.** The cycle savings shift the main-loop/NMI boundary in audio-emitting programs, which re-times which frame each SFX trigger lands in. Six audio hashes re-baseline as a result: audio_demo, friendly_assets, noise_triangle_sfx, platformer, pong, war. All 50 PNG goldens, the platformer/war/pong demo gifs, and every non-audio program stay byte-identical. The re-baselined output is still sample-accurate; what changed is the first-SFX offset within the captured 132 084-sample window. This is the audio-shift tradeoff documented in future-work. Two new peephole unit tests lock in the behaviour: - `dead_load_elim_steps_past_ldx_ldy` — the DrawSprite shape folds. - `dead_load_elim_preserves_lda_when_used_by_shift` — a subsequent ASL on A keeps the LDA alive across an intervening LDY. Also updates future-work.md to reflect the shipped change and the remaining register-allocator wins worth chasing next.
2026-04-19 01:43:58 +00:00
67e9a4c0 132084