Tim Allen 9b452c9f5f Update to v098r17 release.
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.
2016-06-06 08:10:01 +10:00

87 lines
2.1 KiB
C++

#pragma once
namespace Processor {
struct GSU {
#include "registers.hpp"
virtual auto step(uint clocks) -> void = 0;
virtual auto stop() -> void = 0;
virtual auto color(uint8 source) -> uint8 = 0;
virtual auto plot(uint8 x, uint8 y) -> void = 0;
virtual auto rpix(uint8 x, uint8 y) -> uint8 = 0;
virtual auto pipe() -> uint8 = 0;
virtual auto syncROMBuffer() -> void = 0;
virtual auto readROMBuffer() -> uint8 = 0;
virtual auto syncRAMBuffer() -> void = 0;
virtual auto readRAMBuffer(uint16 addr) -> uint8 = 0;
virtual auto writeRAMBuffer(uint16 addr, uint8 data) -> void = 0;
virtual auto flushCache() -> void = 0;
virtual auto read(uint24 addr, uint8 data = 0x00) -> uint8 = 0;
virtual auto write(uint24 addr, uint8 data) -> void = 0;
//gsu.cpp
auto power() -> void;
auto reset() -> void;
//instructions.cpp
auto op_add_adc(uint n);
auto op_alt1();
auto op_alt2();
auto op_alt3();
auto op_and_bic(uint n);
auto op_asr_div2();
auto op_branch(bool c);
auto op_cache();
auto op_color_cmode();
auto op_dec(uint n);
auto op_fmult_lmult();
auto op_from_moves(uint n);
auto op_getb();
auto op_getc_ramb_romb();
auto op_hib();
auto op_ibt_lms_sms(uint n);
auto op_inc(uint n);
auto op_iwt_lm_sm(uint n);
auto op_jmp_ljmp(uint n);
auto op_link(uint n);
auto op_load(uint n);
auto op_lob();
auto op_loop();
auto op_lsr();
auto op_merge();
auto op_mult_umult(uint n);
auto op_nop();
auto op_not();
auto op_or_xor(uint n);
auto op_plot_rpix();
auto op_rol();
auto op_ror();
auto op_sbk();
auto op_sex();
auto op_store(uint n);
auto op_stop();
auto op_sub_sbc_cmp(uint n);
auto op_swap();
auto op_to_move(uint n);
auto op_with(uint n);
//switch.cpp
auto instruction(uint8 opcode) -> void;
//serialization.cpp
auto serialize(serializer&) -> void;
//disassembler.cpp
auto disassembleOpcode(char* output) -> void;
auto disassembleAlt0(char* output) -> void;
auto disassembleAlt1(char* output) -> void;
auto disassembleAlt2(char* output) -> void;
auto disassembleAlt3(char* output) -> void;
};
}