mirror of
https://github.com/bsnes-emu/bsnes.git
synced 2025-02-23 06:32:32 +01:00
byuu says: Changelog: - fixed Super Game Boy regression from v096r04 with bottom tile row flickering - fixed GB STAT IRQ regression from previous WIP - Altered Space is now playable - GBVideoPlayer isn't; but nobody seems to know exactly what weird hardware quirk that one relies on to work - ~3-4% speed improvement in SuperFX games by eliminating function<> callback on register assignments - most noticeable in Doom in-game; least noticeable on Yoshi's Island title screen (darn) - finished GSU core and SuperFX coprocessor code cleanups - did some more work cleaning up the LR35902 core and GB CPU code Just a fair warning: don't get your hopes up on these GB fixes. Cliffhanger now hangs completely (har har), and none of the other bugs are fixed. We pretty much did all this work just for Altered Space. So, I hope you like playing Altered Space.
43 lines
969 B
C++
43 lines
969 B
C++
#include <processor/processor.hpp>
|
|
#include "gsu.hpp"
|
|
|
|
//note: multiplication results *may* sometimes be invalid when both CLSR and MS0 are set
|
|
//the product of multiplication in this mode (21mhz + fast-multiply) has not been analyzed;
|
|
//however, the timing of this mode has been confirmed to work as specified below
|
|
|
|
namespace Processor {
|
|
|
|
#include "instructions.cpp"
|
|
#include "switch.cpp"
|
|
#include "serialization.cpp"
|
|
#include "disassembler.cpp"
|
|
|
|
auto GSU::power() -> void {
|
|
}
|
|
|
|
auto GSU::reset() -> void {
|
|
for(auto& r : regs.r) {
|
|
r.data = 0x0000;
|
|
r.modified = false;
|
|
}
|
|
|
|
regs.sfr = 0x0000;
|
|
regs.pbr = 0x00;
|
|
regs.rombr = 0x00;
|
|
regs.rambr = 0;
|
|
regs.cbr = 0x0000;
|
|
regs.scbr = 0x00;
|
|
regs.scmr = 0x00;
|
|
regs.colr = 0x00;
|
|
regs.por = 0x00;
|
|
regs.bramr = 0;
|
|
regs.vcr = 0x04;
|
|
regs.cfgr = 0x00;
|
|
regs.clsr = 0;
|
|
regs.pipeline = 0x01; //nop
|
|
regs.ramaddr = 0x0000;
|
|
regs.reset();
|
|
}
|
|
|
|
}
|