mirror of
https://github.com/bsnes-emu/bsnes.git
synced 2025-02-24 07:02:27 +01:00
byuu says: Changelog: * added driver selection * added video scale + aspect correction settings * added A/V sync + audio mute settings * added configuration file * fixed compilation bugs under Windows and Linux * fixed window sizing * removed HSU1 * the system menu stays as "System", because "Game Boy Advance" was too long a string for the smallest scale size * some more stuff You guys probably won't be ecstatic about the video sizing options, but it's basically your choice of 1x, 2x or 4x scale with optional aspect correction. 3x was intentionally skipped because it looks horrible on hires SNES games. The window is resized and recentered upon loading games. The window doesn't resize otherwise. I never really liked the way v094 always left you with black screen areas and left you with off-centered window positions. I might go ahead and add the pseudo-fullscreen toggle that will jump into 4x mode (respecting your aspect setting.) Short-term: * add input port changing support * add other input types (mouse-based, etc) * add save states * add cheat codes * add timing configuration (video/audio sync) * add hotkeys (single state) We can probably do a new release once the short-term items are completed. Long-term: * add slotted cart loader (SGB, BSX, ST) * add DIP switch selection window (NSS) * add cheat code database * add state manager * add overscan masking Not planned: * video color adjustments (will allow emulated color vs raw color; but no more sliders) * pixel shaders * ananke integration (will need to make a command-line version to get my games in) * fancy audio adjustment controls (resampler, latency, volume) * input focus settings * relocating game library (not hard, just don't feel like it) * localization support (not enough users) * window geometry memory * anything else not in higan v094
123 lines
2.8 KiB
C++
123 lines
2.8 KiB
C++
struct Cartridge : property<Cartridge> {
|
|
enum class Region : unsigned {
|
|
NTSC,
|
|
PAL,
|
|
};
|
|
|
|
enum class Slot : unsigned {
|
|
Base,
|
|
Bsx,
|
|
SufamiTurbo,
|
|
SufamiTurboA,
|
|
SufamiTurboB,
|
|
GameBoy,
|
|
};
|
|
|
|
MappedRAM rom;
|
|
MappedRAM ram;
|
|
|
|
readonly<bool> loaded;
|
|
readonly<string> sha256;
|
|
|
|
readonly<Region> region;
|
|
|
|
readonly<bool> has_gb_slot;
|
|
readonly<bool> has_bs_cart;
|
|
readonly<bool> has_bs_slot;
|
|
readonly<bool> has_st_slots;
|
|
readonly<bool> has_nss_dip;
|
|
readonly<bool> has_event;
|
|
readonly<bool> has_sa1;
|
|
readonly<bool> has_superfx;
|
|
readonly<bool> has_armdsp;
|
|
readonly<bool> has_hitachidsp;
|
|
readonly<bool> has_necdsp;
|
|
readonly<bool> has_epsonrtc;
|
|
readonly<bool> has_sharprtc;
|
|
readonly<bool> has_spc7110;
|
|
readonly<bool> has_sdd1;
|
|
readonly<bool> has_obc1;
|
|
readonly<bool> has_hsu1;
|
|
readonly<bool> has_msu1;
|
|
|
|
struct Mapping {
|
|
function<uint8 (unsigned)> reader;
|
|
function<void (unsigned, uint8)> writer;
|
|
string addr;
|
|
unsigned size;
|
|
unsigned base;
|
|
unsigned mask;
|
|
|
|
Mapping();
|
|
Mapping(const function<uint8 (unsigned)>&, const function<void (unsigned, uint8)>&);
|
|
Mapping(SuperFamicom::Memory&);
|
|
};
|
|
vector<Mapping> mapping;
|
|
|
|
struct Memory {
|
|
unsigned id;
|
|
string name;
|
|
};
|
|
vector<Memory> memory;
|
|
|
|
struct Information {
|
|
struct Markup {
|
|
string cartridge;
|
|
string gameBoy;
|
|
string satellaview;
|
|
string sufamiTurboA;
|
|
string sufamiTurboB;
|
|
} markup;
|
|
|
|
struct Title {
|
|
string cartridge;
|
|
string gameBoy;
|
|
string satellaview;
|
|
string sufamiTurboA;
|
|
string sufamiTurboB;
|
|
} title;
|
|
} information;
|
|
|
|
string title();
|
|
|
|
void load();
|
|
void unload();
|
|
|
|
void serialize(serializer&);
|
|
Cartridge();
|
|
~Cartridge();
|
|
|
|
private:
|
|
void load_super_game_boy();
|
|
void load_satellaview();
|
|
void load_sufami_turbo_a();
|
|
void load_sufami_turbo_b();
|
|
|
|
void parse_markup(const char*);
|
|
void parse_markup_map(Mapping&, Markup::Node);
|
|
void parse_markup_memory(MappedRAM&, Markup::Node, unsigned id, bool writable);
|
|
|
|
void parse_markup_cartridge(Markup::Node);
|
|
void parse_markup_icd2(Markup::Node);
|
|
void parse_markup_bsx(Markup::Node);
|
|
void parse_markup_satellaview(Markup::Node);
|
|
void parse_markup_sufamiturbo(Markup::Node, bool slot);
|
|
void parse_markup_nss(Markup::Node);
|
|
void parse_markup_event(Markup::Node);
|
|
void parse_markup_sa1(Markup::Node);
|
|
void parse_markup_superfx(Markup::Node);
|
|
void parse_markup_armdsp(Markup::Node);
|
|
void parse_markup_hitachidsp(Markup::Node, unsigned roms);
|
|
void parse_markup_necdsp(Markup::Node);
|
|
void parse_markup_epsonrtc(Markup::Node);
|
|
void parse_markup_sharprtc(Markup::Node);
|
|
void parse_markup_spc7110(Markup::Node);
|
|
void parse_markup_sdd1(Markup::Node);
|
|
void parse_markup_obc1(Markup::Node);
|
|
void parse_markup_msu1(Markup::Node);
|
|
|
|
friend class Interface;
|
|
};
|
|
|
|
extern Cartridge cartridge;
|