Improvements to HDMA timing (courtesy of test ROM from undisbeliever]
This fixes flickering in Full Throttle - All-American Racing
This commit is contained in:
byuu 2019-10-05 13:24:14 +09:00
parent b5301b7ea8
commit 07427e4697
3 changed files with 23 additions and 20 deletions

View File

@ -32,12 +32,11 @@ Unique Features
- Built-in games database with thousands of game entries - Built-in games database with thousands of game entries
- Built-in cheat code database for hundreds of popular games (by mightymo) - Built-in cheat code database for hundreds of popular games (by mightymo)
- Built-in save state manager with screenshot previews and naming capabilities - 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 - Customizable per-byte game mappings to support any cartridges, including prototype games
- 7-zip decompression support - 7-zip decompression support
- Extensive Satellaview emulation, including BS Memory flash write and wear-leveling emulation - 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!) - 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 Standard Features
----------------- -----------------
@ -56,6 +55,7 @@ Standard Features
- Sprite limit disable support - Sprite limit disable support
- Cubic audio interpolation support - Cubic audio interpolation support
- Optional high-level emulation of most SNES coprocessors - 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 - CPU, SA1, and SuperFX overclocking support
- Frame advance support - Frame advance support
- Screenshot support - Screenshot support
@ -63,12 +63,15 @@ Standard Features
- Movie recording and playback support - Movie recording and playback support
- Rewind support - Rewind support
- HiDPI support - HiDPI support
- Multi-monitor support
- Turbo support for controller inputs
Links Links
----- -----
- [Official website](https://bsnes.byuu.org) - [Official website](https://bsnes.byuu.org)
- [Official git repository](https://github.com/byuu/bsnes) - [Official git repository](https://github.com/byuu/bsnes)
- [Developer resources](https://byuu.net)
- [Donations](https://patreon.com/byuu) - [Donations](https://patreon.com/byuu)
Nightly Builds Nightly Builds

View File

@ -29,7 +29,7 @@ using namespace nall;
namespace Emulator { namespace Emulator {
static const string Name = "bsnes"; 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 Author = "byuu";
static const string License = "GPLv3"; static const string License = "GPLv3";
static const string Website = "https://byuu.org"; static const string Website = "https://byuu.org";

View File

@ -54,6 +54,23 @@ auto CPU::step() -> void {
status.dramRefresh = 1; step<6,0>(); status.dramRefresh = 2; step<2,0>(); aluEdge(); 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 constexpr(Synchronize) {
if(configuration.hacks.coprocessor.delayedSync) return; if(configuration.hacks.coprocessor.delayedSync) return;
synchronizeCoprocessors(); 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.dmaActive) {
if(status.dmaPending || status.hdmaPending) { if(status.dmaPending || status.hdmaPending) {
status.dmaActive = true; status.dmaActive = true;