EmuCR Feeds
Email Us

Commodore 64 Emulator v0.7.9.5-alpha is released. A Commodore 64 emulator written in modern C++, built with SDL2 and designed around two priorities:Accuracy-first emulation (with a strong focus on real hardware behavior over “good enough” hacks); Debuggability (integrated monitor, break/watchpoints, and visibility into what the machine is doing). This project is actively under development; expect rough edges and incomplete features.

Commodore 64 Emulator Changelog:
This release focuses on improving the hardware accuracy of the VIC-II emulation through a series of targeted fixes and cleanup work completed over the last two weeks. The main areas of improvement were bad-line handling, BA/AEC bus arbitration, display row progression, fetched-row ownership, open-bus behavior, raster timing cleanup, VIC state/save-load consistency, and joystick input handling through CIA1.
Highlights
VIC-II bad-line and display row improvements
Refined bad-line behavior and tightened the relationship between bad-line start, row fetch setup, and active display state.
Improved how display-row state is carried across lines to better match real VIC-II behavior.
Decoupled parts of bad-line fetch startup from broader display-enable behavior.
Cleaned up vmliBase handling so fetched row state remains more stable across display shutdown/opening transitions.
Added explicit bad-line matrix fetch progress tracking with vmliFetchIndex, making the internal row-fetch model closer to real hardware and easier to reason about.
BA/AEC bus arbitration improvements
Improved VIC-II bus arbitration behavior to better separate BA-low warning/ownership from true AEC-low CPU steal cycles.
Sprite pointer fetches no longer force full AEC steals, while real sprite data fetches still do.
Reduced overly aggressive bus-steal behavior that could cause performance/timing regressions in some games.
Fetched-row ownership and display sourcing
Continued moving the emulator toward a cleaner model where fetched row data owns active display output.
Improved consistency between bad-line fetched row data and the data consumed during active display.
Laid groundwork for stricter FIFO-backed row usage during active display rendering.
Open-bus behavior cleanup
Moved open-bus updates toward the actual fetch moment instead of later render-time usage.
Cleaned up bitmap, ECM, text, sprite, and bad-line fetch paths so open bus is updated when bytes are actually fetched.
Removed several duplicate render-time open-bus relatches that were less hardware-faithful.
Raster, IRQ, and latch timing cleanup
Continued refining raster/IRQ timing behavior and per-raster latch usage.
Improved handling of per-raster VIC register state and timing-sensitive behavior tied to those latches.
Kept the internal timing model more consistent across line start, decision phases, and fetch phases.
Save/load and internal state correctness
Expanded VIC save/load coverage to better preserve internal runtime state.
Added persistence and restoration for new VIC runtime fields like bad-line fetch progress.
Improved reset/frame-start cleanup so transient VIC row-fetch state does not leak across frames or states.
Added additional sanity/clamp handling for restored VIC runtime values.
Joystick input fixes
Fixed joystick handling for Joy1 and Joy2 through CIA1.
Improved controller input routing so joystick state is presented through the correct hardware path instead of behaving inconsistently at the emulator input layer.
Better matches real C64 joystick port behavior and improves compatibility with games that rely on correct CIA1-backed joystick input.
Practical impact
These changes improve compatibility and correctness across a range of timing-sensitive titles and test cases, especially in areas involving:
bad lines
display row progression
bus arbitration
sprite fetch interaction with CPU timing
open-bus-sensitive behavior
frame/row state stability
joystick handling through CIA1
Internal focus of this release
This was primarily a hardware-accuracy release, not a feature release. Most of the work went into making the VIC-II and related input behavior act more like the real hardware in edge cases rather than adding new user-facing functionality.

Download: Commodore 64 Emulator v0.7.9.5-alpha
Source: Here



Random Related Topic Refresh Related Topic

Random Related Topic Loading...

0 Comments

Post a Comment

Can't post a comment? Try This!