2017-06-06 01:39:27 +00:00
|
|
|
auto Cartridge::serialize(serializer& s) -> void {
|
2015-11-10 11:02:29 +00:00
|
|
|
mrom.serialize(s);
|
|
|
|
if(hasSRAM) sram.serialize(s);
|
|
|
|
if(hasEEPROM) eeprom.serialize(s);
|
|
|
|
if(hasFLASH) flash.serialize(s);
|
Update to v087r26 release.
byuu says:
Changelog:
- fixed FIFO[1] reset behavior (fixes audio in Sword of Mana)
- added FlashROM emulation (both sizes)
- GBA parses RAM settings from manifest.xml now
- save RAM is written to disk now
- added save state support (it's currently broken, though)
- fixed ROM/RAM access timings
- open bus should mostly work (we don't do the PC+12 stuff yet)
- emulated the undocumented memory control register (mirror IWRAM,
disable I+EWRAM, EWRAM wait state count)
- emulated keypad interrupts
- emulated STOP (freezes video, audio, DMA and timers; only breaks on
keypad IRQs)
- probably a lot more, it was a long night ...
Show stoppers, missing things, broken things, etc:
- ST018 is still completely broken
- GBC audio sequencer apparently needs work
- GBA audio FIFO buffer seems too quiet
- PHI / ROM prefetch needs to be emulated (no idea on how to do this,
especially PHI)
- SOUNDBIAS 64/128/256khz modes should output at that resolution
(really, we need to simulate PWM properly, no idea on how to do this)
- object mosaic top-left coordinates are wrong (minor, fixing will
actually make the effect look worse)
- need to emulate PPU greenswap and color palette distortion (no idea on
how do this)
- need GBA save type database (I would also LIKE to blacklist
/ patch-out trainers, but that's a discussion for another day.)
- some ARM ops advance the prefetch buffer, so you can read PC+12 in
some cases
2012-04-16 12:19:39 +00:00
|
|
|
}
|
2017-06-06 01:39:27 +00:00
|
|
|
|
|
|
|
auto Cartridge::MROM::serialize(serializer& s) -> void {
|
|
|
|
s.integer(size);
|
|
|
|
s.integer(mask);
|
|
|
|
}
|
|
|
|
|
|
|
|
auto Cartridge::SRAM::serialize(serializer& s) -> void {
|
|
|
|
s.array(data, size);
|
|
|
|
s.integer(size);
|
|
|
|
s.integer(mask);
|
|
|
|
}
|
|
|
|
|
|
|
|
auto Cartridge::EEPROM::serialize(serializer& s) -> void {
|
|
|
|
s.array(data, size);
|
|
|
|
s.integer(size);
|
|
|
|
s.integer(mask);
|
|
|
|
s.integer(test);
|
|
|
|
s.integer(bits);
|
|
|
|
s.integer((uint&)mode);
|
|
|
|
s.integer(offset);
|
|
|
|
s.integer(address);
|
|
|
|
s.integer(addressbits);
|
|
|
|
}
|
|
|
|
|
|
|
|
auto Cartridge::FLASH::serialize(serializer& s) -> void {
|
|
|
|
s.array(data, size);
|
|
|
|
s.integer(size);
|
|
|
|
s.integer(id);
|
|
|
|
s.integer(unlockhi);
|
|
|
|
s.integer(unlocklo);
|
|
|
|
s.integer(idmode);
|
|
|
|
s.integer(erasemode);
|
|
|
|
s.integer(bankselect);
|
|
|
|
s.integer(writeselect);
|
|
|
|
s.integer(bank);
|
|
|
|
}
|