From 07427e4697f947542e9e57c0af6bf8f91935d654 Mon Sep 17 00:00:00 2001 From: byuu <2107894+byuu@users.noreply.github.com> Date: Sat, 5 Oct 2019 13:24:14 +0900 Subject: [PATCH] v110.7 Improvements to HDMA timing (courtesy of test ROM from undisbeliever] This fixes flickering in Full Throttle - All-American Racing --- README.md | 7 +++++-- bsnes/emulator/emulator.hpp | 2 +- bsnes/sfc/cpu/timing.cpp | 34 +++++++++++++++++----------------- 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 02accd60..1f829294 100644 --- a/README.md +++ b/README.md @@ -32,12 +32,11 @@ Unique Features - Built-in games database with thousands of game entries - Built-in cheat code database for hundreds of popular games (by mightymo) - Built-in save state manager with screenshot previews and naming capabilities - - Support for ASIO low-latency audio - Customizable per-byte game mappings to support any cartridges, including prototype games - 7-zip decompression support - Extensive Satellaview emulation, including BS Memory flash write and wear-leveling emulation - - 30-bit color output support (where supported) - Optional higan game folder support (standard game ROM files are also fully supported!) + - Advanced mapping system allowing multiple bindings to every emulated input Standard Features ----------------- @@ -56,6 +55,7 @@ Standard Features - Sprite limit disable support - Cubic audio interpolation support - Optional high-level emulation of most SNES coprocessors + - Optional emulation of flaws in older emulators for compatibility with older unofficial software - CPU, SA1, and SuperFX overclocking support - Frame advance support - Screenshot support @@ -63,12 +63,15 @@ Standard Features - Movie recording and playback support - Rewind support - HiDPI support + - Multi-monitor support + - Turbo support for controller inputs Links ----- - [Official website](https://bsnes.byuu.org) - [Official git repository](https://github.com/byuu/bsnes) + - [Developer resources](https://byuu.net) - [Donations](https://patreon.com/byuu) Nightly Builds diff --git a/bsnes/emulator/emulator.hpp b/bsnes/emulator/emulator.hpp index 43be1686..0a54237f 100644 --- a/bsnes/emulator/emulator.hpp +++ b/bsnes/emulator/emulator.hpp @@ -29,7 +29,7 @@ using namespace nall; namespace Emulator { static const string Name = "bsnes"; - static const string Version = "110.6"; + static const string Version = "110.7"; static const string Author = "byuu"; static const string License = "GPLv3"; static const string Website = "https://byuu.org"; diff --git a/bsnes/sfc/cpu/timing.cpp b/bsnes/sfc/cpu/timing.cpp index 2b2e3b5e..cd20e2e8 100644 --- a/bsnes/sfc/cpu/timing.cpp +++ b/bsnes/sfc/cpu/timing.cpp @@ -54,6 +54,23 @@ auto CPU::step() -> void { status.dramRefresh = 1; step<6,0>(); status.dramRefresh = 2; step<2,0>(); aluEdge(); } + if(!status.hdmaSetupTriggered && hcounter() >= status.hdmaSetupPosition) { + status.hdmaSetupTriggered = true; + hdmaReset(); + if(hdmaEnable()) { + status.hdmaPending = true; + status.hdmaMode = 0; + } + } + + if(!status.hdmaTriggered && hcounter() >= status.hdmaPosition) { + status.hdmaTriggered = true; + if(hdmaActive()) { + status.hdmaPending = true; + status.hdmaMode = 1; + } + } + if constexpr(Synchronize) { if(configuration.hacks.coprocessor.delayedSync) return; synchronizeCoprocessors(); @@ -162,23 +179,6 @@ auto CPU::dmaEdge() -> void { } } - if(!status.hdmaSetupTriggered && hcounter() >= status.hdmaSetupPosition) { - status.hdmaSetupTriggered = true; - hdmaReset(); - if(hdmaEnable()) { - status.hdmaPending = true; - status.hdmaMode = 0; - } - } - - if(!status.hdmaTriggered && hcounter() >= status.hdmaPosition) { - status.hdmaTriggered = true; - if(hdmaActive()) { - status.hdmaPending = true; - status.hdmaMode = 1; - } - } - if(!status.dmaActive) { if(status.dmaPending || status.hdmaPending) { status.dmaActive = true;