Skip to content

Commit 38125f4

Browse files
doublegateclaude
andcommitted
chore(release): v0.8.1 - M9 Known Issues Resolution 85% Complete
Version bump to v0.8.1 capturing M9 Known Issues Resolution progress: ## Phase 1 - Version Updates - Workspace Cargo.toml: 0.8.0 -> 0.8.1 - rustynes-apu Cargo.toml: 0.8.0 -> 0.8.1 - rustynes-desktop Cargo.toml: 0.8.0 -> 0.8.1 - GUI About dialog: Version 0.8.0 -> Version 0.8.1 ## Phase 2 - Documentation Updates - CLAUDE.md: Updated status, version, milestones, added v0.8.1 accomplishments - README.md: Updated status, Quick Start, milestone table, citation - CHANGELOG.md: Added comprehensive v0.8.1 entry with sprint details - ROADMAP.md: Added v0.8.1 to Recent Updates and version history - PHASE-1.5-OVERVIEW.md: Updated status and current version - M9-OVERVIEW.md: Added current version field ## M9 Sprint Status (85% Complete) - S1: Audio Improvements - COMPLETE - Two-stage decimation via rubato (1.79MHz -> 192kHz -> 48kHz) - A/V sync with adaptive speed adjustment (0.99x-1.01x) - Dynamic buffer sizing (2048-16384 samples) - S2: PPU Edge Cases - COMPLETE - Sprite overflow bug with hardware-accurate false positive/negative - Palette RAM mirroring at $3F10/$3F14/$3F18/$3F1C - Mid-scanline write detection for split-screen effects - S3: Performance Optimization - CORE COMPLETE - CPU: #[inline] on step(), execute_opcode(), handle_nmi(), handle_irq() - PPU: #[inline] on step(), step_with_chr() - 68+ existing inline annotations verified - S4: Bug Fixes & Polish - PENDING ## Test Results - 508+ tests passing (0 failures, 0 ignored) - 100% Blargg pass rate (90/90 tests) - Zero accuracy regressions 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 61eaca3 commit 38125f4

File tree

10 files changed

+144
-27
lines changed

10 files changed

+144
-27
lines changed

CHANGELOG.md

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,74 @@ No unreleased changes.
1111

1212
---
1313

14+
## [0.8.1] - 2025-12-28 - M9 Known Issues Resolution (85% Complete)
15+
16+
**Status**: Phase 1.5 Stabilization - M9 Sprints 1-3 Core Implementation Complete
17+
18+
This release advances M9 Known Issues Resolution to 85% complete, implementing core improvements for audio quality, PPU edge cases, and performance optimization while maintaining zero test regressions.
19+
20+
### Highlights
21+
22+
- **Audio Improvements (S1 Complete):** Two-stage decimation via rubato, A/V sync with adaptive speed adjustment
23+
- **PPU Edge Cases (S2 Complete):** Sprite overflow bug emulation, palette RAM mirroring, mid-scanline writes
24+
- **Performance Optimization (S3 Core Complete):** `#[inline]` hints on CPU/PPU hot paths
25+
- **Zero Regressions:** 508+ tests passing, 100% Blargg pass rate maintained
26+
27+
### Added
28+
29+
- **CPU Inline Hints:** `#[inline]` attributes on step(), execute_opcode(), handle_nmi(), handle_irq()
30+
- **PPU Inline Hints:** `#[inline]` attributes on step(), step_with_chr()
31+
- **M9 Progress Tracking:** Current version field in M9-OVERVIEW.md
32+
33+
### Changed
34+
35+
#### Audio Improvements (Sprint 1)
36+
37+
- Two-stage decimation via rubato: 1.79MHz -> 192kHz -> 48kHz
38+
- A/V sync with adaptive speed adjustment (0.99x-1.01x)
39+
- Dynamic buffer sizing (2048-16384 samples)
40+
- Hardware-accurate mixer with NES filter chain
41+
42+
#### PPU Edge Cases (Sprint 2)
43+
44+
- Sprite overflow bug with false positive/negative matching hardware behavior
45+
- Palette RAM mirroring at $3F10/$3F14/$3F18/$3F1C verified
46+
- Mid-scanline write detection for split-screen effects
47+
- Attribute byte extraction verified for all quadrants
48+
49+
#### Performance Optimization (Sprint 3)
50+
51+
- Added `#[inline]` to CPU hot paths: step(), execute_opcode(), handle_nmi(), handle_irq()
52+
- Added `#[inline]` to PPU hot paths: step(), step_with_chr()
53+
- Verified 68+ existing inline annotations in CPU/PPU crates
54+
- Zero accuracy regressions confirmed
55+
56+
### Technical Specifications
57+
58+
**M9 Sprint Status:**
59+
60+
| Sprint | Status | Core Tasks |
61+
|--------|--------|------------|
62+
| S1: Audio | COMPLETE | Dynamic resampling, A/V sync, buffer management |
63+
| S2: PPU | COMPLETE | Sprite overflow, palette RAM, mid-scanline, attributes |
64+
| S3: Performance | CORE COMPLETE | Inline hints, hot path optimization |
65+
| S4: Bug Fixes | PENDING | GitHub issues, release prep |
66+
67+
**Test Results:**
68+
69+
- Total tests: 508+ passing
70+
- Failures: 0
71+
- Ignored: 0
72+
- Blargg pass rate: 100% (90/90 tests)
73+
74+
### What's Next
75+
76+
- **Sprint 4:** GitHub issue triage and resolution
77+
- **v0.9.0:** Full M9 completion with all bug fixes
78+
- **M10:** Final polish and v1.0.0-alpha.1 preparation
79+
80+
---
81+
1482
## [0.8.0] - 2025-12-28 - Rust 2024 Edition & Dependency Modernization
1583

1684
**Status**: Phase 1.5 Stabilization - M9 Sprint 0 Complete (Dependency Upgrade)

CLAUDE.md

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,20 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
66

77
RustyNES is a next-generation Nintendo Entertainment System (NES) emulator written in Rust. Target: 100% TASVideos accuracy test pass rate, 300+ mappers, RetroAchievements, GGPO netplay, TAS tools, Lua scripting.
88

9-
**Status:** v0.8.0 - Phase 1.5 Stabilization In Progress (M7-M8 Complete, M9-M10 Planned). All Phase 1 milestones (M1-M6) done.
9+
**Status:** v0.8.1 - Phase 1.5 Stabilization In Progress (M7-M8 Complete, M9 85% Complete). All Phase 1 milestones (M1-M6) done.
1010

1111
**Test Status:** 508+ tests passing (0 failures, 0 ignored). 100% Blargg pass rate (90/90 tests)
1212

13-
**Current Version:** v0.8.0 (December 28, 2025)
13+
**Current Version:** v0.8.1 (December 28, 2025)
14+
- M9 Known Issues Resolution: Core implementation 85% complete
15+
- CPU performance: #[inline] hints on step(), execute_opcode(), handle_nmi(), handle_irq()
16+
- PPU performance: #[inline] hints on step(), step_with_chr()
17+
- Audio improvements: Dynamic resampling, A/V sync, buffer management (S1 complete)
18+
- PPU edge cases: Sprite overflow, palette RAM, mid-scanline writes (S2 complete)
19+
- Performance optimization: Hot path inline hints (S3 core complete)
20+
- Zero accuracy regressions (508+ tests passing)
21+
22+
**Previous Version:** v0.8.0 (December 28, 2025)
1423
- Rust 2024 Edition adoption (MSRV 1.88)
1524
- Comprehensive dependency modernization
1625
- eframe 0.33 + egui 0.33 immediate mode GUI
@@ -275,10 +284,41 @@ Cloned emulators for study and pattern reference:
275284
| **M8: Test ROMs** | ✅ v0.7.0 | 100% Blargg pass rate (90/90 tests) |
276285
| **GUI Migration** | ✅ v0.7.1 | eframe + egui desktop reimplementation |
277286
| **Dependency Upgrade** | ✅ v0.8.0 | Rust 2024, eframe 0.33, egui 0.33, cpal 0.16, ron 0.12 |
278-
| **M9-10: Phase 1.5** | 🔄 PLANNED | Known issues resolution, polish, documentation |
287+
| **M9: Known Issues** | 🔄 v0.8.1 (85%) | Audio S1, PPU S2, Performance S3 complete; S4 pending |
288+
| **M10: Final Polish** | 📋 PLANNED | UI/UX improvements, documentation, v1.0.0-alpha.1 |
279289
| **Phase 2+** | 📋 TBD | Advanced features |
280290

281-
## Recent Accomplishments (v0.8.0 - Dec 28, 2025)
291+
## Recent Accomplishments (v0.8.1 - Dec 28, 2025)
292+
293+
### M9 Known Issues Resolution (85% Complete)
294+
295+
Systematic resolution of known issues identified during Phase 1.5 development:
296+
297+
#### Sprint 1: Audio Improvements (Complete)
298+
- Two-stage decimation via rubato: 1.79MHz -> 192kHz -> 48kHz
299+
- A/V sync with adaptive speed adjustment (0.99x-1.01x)
300+
- Dynamic buffer sizing (2048-16384 samples)
301+
- Hardware-accurate mixer with NES filter chain
302+
303+
#### Sprint 2: PPU Edge Cases (Complete)
304+
- Sprite overflow bug with false positive/negative matching hardware
305+
- Palette RAM mirroring at $3F10/$3F14/$3F18/$3F1C
306+
- Mid-scanline write detection for split-screen effects
307+
- Attribute byte extraction verified for all quadrants
308+
309+
#### Sprint 3: Performance Optimization (Core Complete)
310+
- Added `#[inline]` to CPU hot paths: step(), execute_opcode(), handle_nmi(), handle_irq()
311+
- Added `#[inline]` to PPU hot paths: step(), step_with_chr()
312+
- Verified 68+ existing inline annotations in CPU/PPU crates
313+
- Zero accuracy regressions (508+ tests passing)
314+
315+
#### Sprint 4: Bug Fixes & Polish (Pending)
316+
- GitHub issue triage and resolution
317+
- Release preparation for v0.9.0
318+
319+
---
320+
321+
## Previous Accomplishments (v0.8.0 - Dec 28, 2025)
282322

283323
### Comprehensive Dependency Modernization
284324

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ members = [
1515
]
1616

1717
[workspace.package]
18-
version = "0.8.0"
18+
version = "0.8.1"
1919
edition = "2024"
2020
rust-version = "1.88"
2121
authors = ["doublegate"]

README.md

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ A next-generation NES emulator written in pure Rust — targeting 100% accuracy,
2828

2929
---
3030

31-
> **Status:** v0.8.0 Released - Rust 2024 Edition & Dependency Modernization Complete
31+
> **Status:** v0.8.1 Released - M9 Known Issues Resolution 85% Complete
3232
>
3333
> **Milestones Completed:**
3434
>
@@ -41,6 +41,7 @@ A next-generation NES emulator written in pure Rust — targeting 100% accuracy,
4141
> -**M7: Accuracy** - CPU/PPU/APU timing refinements, OAM DMA 513/514 cycle precision, hardware-accurate mixer
4242
> -**M8: Test ROMs** - 100% Pass Rate on all integrated test suites (CPU, PPU, APU, Mappers)
4343
> -**M9-S0: Dependencies** - Rust 2024 Edition, eframe 0.33, egui 0.33, cpal 0.16, ron 0.12
44+
> - 🔄 **M9: Known Issues** (85%) - Audio S1, PPU S2, Performance S3 complete; Bug fixes S4 pending
4445
>
4546
> **Test Suite:** 508+ tests passing (0 failures, 0 ignored)
4647
>
@@ -88,22 +89,20 @@ RustyNES combines **accuracy-first emulation** with **modern features** and the
8889

8990
## Quick Start
9091

91-
### Recent Release: v0.8.0 (December 28, 2025)
92+
### Recent Release: v0.8.1 (December 28, 2025)
9293

93-
RustyNES v0.8.0 completes comprehensive dependency modernization and adopts Rust 2024 Edition:
94+
RustyNES v0.8.1 advances M9 Known Issues Resolution to 85% complete with core implementation work:
9495

95-
**What's New in v0.8.0:**
96+
**What's New in v0.8.1:**
9697

97-
- **Rust 2024 Edition:** Latest Rust language features and improvements (MSRV 1.88)
98-
- **eframe 0.33 + egui 0.33:** Latest immediate mode GUI with improved widget system
99-
- **cpal 0.16:** Audio device improvements and better cross-platform support
100-
- **rubato 0.16:** High-quality audio resampling for flexible sample rate support
101-
- **ron 0.12:** Configuration format improvements
102-
- **thiserror 2.0:** Error handling modernization
103-
- **Performance:** Inline hints on critical paths, buffer reuse patterns
98+
- **Audio Improvements (S1):** Two-stage decimation via rubato, A/V sync with adaptive speed adjustment
99+
- **PPU Edge Cases (S2):** Sprite overflow, palette RAM mirroring, mid-scanline write detection
100+
- **Performance Optimization (S3):** `#[inline]` hints on CPU/PPU hot paths (step, execute_opcode, handle_nmi/irq)
101+
- **Zero Regressions:** 508+ tests passing, 100% Blargg pass rate maintained
104102

105103
**Previous Releases:**
106104

105+
- **v0.8.0** - Dependency Modernization: Rust 2024 Edition, eframe 0.33, egui 0.33, cpal 0.16, ron 0.12
107106
- **v0.7.1** - GUI Framework Migration: eframe 0.29/egui 0.29, immediate mode GUI, debug windows
108107
- **v0.7.0** - Milestone 8: 100% Blargg test pass rate, cycle-accurate CPU tick(), PPU open bus, CHR-RAM routing
109108
- **v0.6.0** - Milestone 7: APU frame counter precision, hardware-accurate mixer, OAM DMA 513/514 cycles
@@ -302,7 +301,7 @@ Controls will be fully configurable through the configuration system.
302301

303302
## Features
304303

305-
### Current Status (v0.8.0 - December 2025)
304+
### Current Status (v0.8.1 - December 2025)
306305

307306
- [x] **Architecture Design** - Complete modular crate structure with 10 component crates
308307
- [x] **Documentation** - 40+ comprehensive specification and implementation guides covering CPU, PPU, APU, mappers, testing, and development
@@ -853,9 +852,9 @@ If you use RustyNES in academic research, please cite:
853852
author = {RustyNES Contributors},
854853
title = {RustyNES: A Next-Generation NES Emulator in Rust},
855854
year = {2025},
856-
version = {0.8.0},
855+
version = {0.8.1},
857856
url = {https://github.com/doublegate/RustyNES},
858-
note = {Cycle-accurate NES emulator with 100\% Blargg test pass rate, Rust 2024 Edition, eframe/egui desktop GUI, and hardware-accurate emulation}
857+
note = {Cycle-accurate NES emulator with 100\% Blargg test pass rate, M9 Known Issues Resolution 85\% complete, Rust 2024 Edition, eframe/egui desktop GUI}
859858
}
860859
```
861860

ROADMAP.md

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,17 @@
2121

2222
---
2323

24-
## Recent Updates (v2.9.0 - December 2025)
24+
## Recent Updates (v2.10.0 - December 2025)
25+
26+
**v0.8.1 Released - December 28, 2025** - M9 Known Issues Resolution 85% Complete!
27+
28+
**M9 Sprint Achievements:**
29+
30+
- **Audio Improvements (S1):** Two-stage decimation via rubato, A/V sync with adaptive speed adjustment
31+
- **PPU Edge Cases (S2):** Sprite overflow, palette RAM mirroring, mid-scanline write detection
32+
- **Performance Optimization (S3):** `#[inline]` hints on CPU/PPU hot paths (step, execute_opcode, handle_nmi/irq)
33+
- **Zero Regressions:** 508+ tests passing, 100% Blargg pass rate maintained
34+
- **Documentation:** Updated all project files with v0.8.1 version references
2535

2636
**v0.8.0 Released - December 28, 2025** - Rust 2024 Edition & Dependency Modernization!
2737

@@ -31,8 +41,6 @@
3141
- **Dependency Upgrades:** eframe 0.33, egui 0.33, cpal 0.16, ron 0.12, rfd 0.15
3242
- **Audio Resampling:** rubato 0.16 integration for high-quality sample rate conversion
3343
- **Performance:** Inline hints and buffer reuse optimizations across APU subsystem
34-
- **Test Suite:** 508+ tests passing (0 failures, 0 ignored)
35-
- **Documentation:** Complete version reference updates across all project files
3644

3745
**v0.7.1 Released - December 27, 2025** - Desktop GUI Framework Migration Complete!
3846

@@ -98,6 +106,7 @@
98106
- v0.7.0 (December 21, 2025): M8 Test ROM Validation - 100% Blargg pass rate (90/90 tests)
99107
- v0.7.1 (December 27, 2025): GUI Framework Migration - Complete rewrite from Iced+wgpu to eframe+egui
100108
- v0.8.0 (December 28, 2025): Rust 2024 Edition - MSRV 1.88+, dependency modernization, audio resampling
109+
- v0.8.1 (December 28, 2025): M9 Known Issues (85%) - Audio S1, PPU S2, Performance S3 complete
101110

102111
**Project Status Change:**
103112

crates/rustynes-apu/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "rustynes-apu"
3-
version = "0.8.0"
3+
version = "0.8.1"
44
edition = "2024"
55
rust-version = "1.88"
66
authors = ["RustyNES Contributors"]

crates/rustynes-desktop/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "rustynes-desktop"
3-
version = "0.8.0"
3+
version = "0.8.1"
44
edition = "2024"
55
rust-version = "1.88"
66
authors = ["doublegate"]

crates/rustynes-desktop/src/gui/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ fn render_about_window(ctx: &Context, open: &mut bool) {
178178
.show(ctx, |ui| {
179179
ui.vertical_centered(|ui| {
180180
ui.heading("RustyNES");
181-
ui.label("Version 0.8.0");
181+
ui.label("Version 0.8.1");
182182
ui.add_space(10.0);
183183
ui.label("A cycle-accurate NES emulator written in Rust");
184184
ui.add_space(10.0);

to-dos/phase-1.5-stabilization/PHASE-1.5-OVERVIEW.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
**Phase:** 1.5 (Stabilization & Accuracy)
44
**Duration:** ~12 weeks / 3 months (January 2026 - April 2026)
5-
**Status:** In Progress (M7-M8 Complete, M10-S0 Complete)
5+
**Status:** In Progress (M7-M8 Complete, M9 85% Complete, M10-S0 Complete)
66
**Goal:** Bridge MVP to production-quality emulator with 95%+ test ROM pass rate
7-
**Current Version:** v0.8.0 (December 2025)
7+
**Current Version:** v0.8.1 (December 2025)
88
**Test Status:** 508+ unit tests passing, 100% Blargg pass rate (90/90 ROMs)
99

1010
---

to-dos/phase-1.5-stabilization/milestone-9-known-issues/M9-OVERVIEW.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
**Status:** CORE IMPLEMENTATION COMPLETE
77
**Version Target:** v0.9.0
88
**Progress:** 85%
9+
**Current Version:** v0.8.1 (Interim release with S1-S3 core work complete)
910
**Baseline:** v0.8.0 (Rust 2024 Edition, Dependency Modernization Complete)
1011
**Last Updated:** December 28, 2025
1112

0 commit comments

Comments
 (0)