The committed Makefile does not search /opt/homebrew, so SDL2
headers are not found on the arm64 macOS runner. src/ is frozen,
so pass the paths through the environment instead.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
gcc on ubuntu fails -Werror with -Wimplicit-fallthrough in two.c;
src/ is frozen until Phase 9, so build C where it has always built
(macOS, as Travis did).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Adds the parallel Rust workspace under rust/ per REWRITE.md:
- ewm-core (headless lib, zero dependencies) and ewm (binary,
declares sdl2 now so CI installs SDL2 headers from day one;
prints the same usage line as the C binary)
- rust-toolchain.toml pinning 1.91.1 with rustfmt + clippy
- GitHub Actions CI: C build job (ubuntu + libsdl2-dev) and Rust
job (fmt --check, clippy -D warnings, test)
- Anchor the 'ewm' gitignore pattern to src/ so rust/ewm is tracked;
ignore rust/target/
- README note pointing at REWRITE.md
The C tree in src/ is untouched.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Add sound subsystem that emulates the Apple II speaker by:
- Tracking speaker state toggles when $C030 is accessed
- Generating audio samples based on CPU cycle timing
- Outputting 44.1 kHz audio via SDL
New files: snd.h, snd.c
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Replace the 2-bit pairing approach with per-pixel rendering to eliminate
color artifacts at edges. The new implementation processes each pixel
individually, uses each byte's own high bit for palette selection, and
properly detects adjacent pixels for white rendering.
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>