bsnes/higan/processor/gsu/gsu.hpp

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;
};
}