Added K188in1 Mapper and fixed missleading names
Added K188in1 Mapper Changed "msx.cpp" to "zemina" as lots of MSX ports dont use the mapper and its only used by ports by Zemina.
このコミットが含まれているのは:
コミット
bb67742864
|
@ -3,11 +3,12 @@ namespace Board {
|
|||
#include "sega.cpp"
|
||||
#include "codemasters.cpp"
|
||||
#include "korea.cpp"
|
||||
#include "msx.cpp"
|
||||
#include "zemina.cpp"
|
||||
#include "janggun.cpp"
|
||||
#include "pak4.cpp"
|
||||
#include "hicom.cpp"
|
||||
#include "hap2000.cpp"
|
||||
#include "k188in1.cpp"
|
||||
|
||||
auto Interface::load(Memory::Readable<n8>& memory, string name) -> bool {
|
||||
if(auto fp = pak->read(name)) {
|
||||
|
|
|
@ -12,25 +12,25 @@ struct Hicom: Interface {
|
|||
|
||||
auto read(n16 address, n8 data) -> n8 override {
|
||||
if (address <= 0x7fff)
|
||||
return rom.read((m_rom_bank_base * 0x8000) | (address & 0x7fff));
|
||||
return rom.read((romBank * 0x8000) | (address & 0x7fff));
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
auto write(n16 address, n8 data) -> void override {
|
||||
if (address == 0xffff) {
|
||||
m_rom_bank_base = data % (m_rom_page_count << 1);
|
||||
romBank = data % (romBankCount << 1);
|
||||
}
|
||||
}
|
||||
|
||||
auto power() -> void override {
|
||||
m_rom_bank_base = 0;
|
||||
romBank = 0;
|
||||
}
|
||||
|
||||
auto serialize(serializer & s) -> void override {
|
||||
s(m_rom_bank_base);
|
||||
s(romBank);
|
||||
}
|
||||
|
||||
n8 m_rom_bank_base;
|
||||
n8 m_rom_page_count = 5;
|
||||
n8 romBank;
|
||||
n8 romBankCount = 5;
|
||||
};
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
|
||||
// TODO: Game 6 and 13 do not work, posibly others also fail.
|
||||
|
||||
struct K188in1: Interface {
|
||||
using Interface::Interface;
|
||||
Memory::Readable < n8 > rom;
|
||||
|
||||
auto load() -> void override {
|
||||
Interface::load(rom, "program.rom");
|
||||
}
|
||||
|
||||
auto save() -> void override {
|
||||
}
|
||||
|
||||
auto unload() -> void override {
|
||||
}
|
||||
|
||||
auto read(n16 address, n8 data) -> n8 override {
|
||||
if (address <= 0x3fff) // static
|
||||
return rom.read((address & 0x3fff));
|
||||
if (address <= 0xbfff) // banked
|
||||
return rom.read((address-0x4000)+(romBank*0x2000));
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
auto write(n16 address, n8 data) -> void override {
|
||||
if ((address & 0x6000) == 0x2000) {
|
||||
romBank = data ^ 0x1F;
|
||||
}
|
||||
}
|
||||
|
||||
auto power() -> void override {
|
||||
romBank = 0;
|
||||
}
|
||||
|
||||
auto serialize(serializer & s) -> void override {
|
||||
s(romBank);
|
||||
}
|
||||
|
||||
n16 romBank;
|
||||
};
|
|
@ -1,8 +1,8 @@
|
|||
struct MSX : Interface {
|
||||
struct Zemina : Interface {
|
||||
using Interface::Interface;
|
||||
Memory::Readable<n8> rom;
|
||||
|
||||
MSX(Cartridge& cartridge, bool nemesis) : Interface(cartridge), nemesis(nemesis) {
|
||||
Zemina(Cartridge& cartridge, bool nemesis) : Interface(cartridge), nemesis(nemesis) {
|
||||
}
|
||||
|
||||
auto load() -> void override {
|
|
@ -22,14 +22,16 @@ auto Cartridge::connect() -> void {
|
|||
if(information.board == "Sega") board = new Board::Sega{*this};
|
||||
if(information.board == "Codemasters") board = new Board::Codemasters{*this};
|
||||
if(information.board == "Korea") board = new Board::Korea{*this};
|
||||
if(information.board == "MSX") board = new Board::MSX{*this, 0};
|
||||
if(information.board == "Nemesis") board = new Board::MSX{*this, 1}; // Nemesis (Korea)
|
||||
if(information.board == "Zemina") board = new Board::Zemina{*this, 0}; // Zemina made games
|
||||
if(information.board == "Zemina_Nemesis") board = new Board::Zemina{*this, 1}; // Zemina's Nemesis port only
|
||||
if(information.board == "Janggun") board = new Board::Janggun{*this};
|
||||
if(information.board == "Hicom") board = new Board::Hicom{*this};
|
||||
if(information.board == "pak4") board = new Board::Pak4{*this}; // 4 PAK All Action (Australia)
|
||||
if(information.board == "Hap2000") board = new Board::Hap2000{*this}; // 2 Hap in 1 - David-2 ~ Moai-ui bomul (KR)
|
||||
if(information.board == "K188in1") board = new Board::K188in1{*this}; // Korean 188 in 1
|
||||
|
||||
// WIP
|
||||
|
||||
if(information.board == "Korea_NB") board = new Board::Korea{*this}; // TODO: Some of these games work but should not have bank switching.
|
||||
|
||||
|
||||
|
|
|
@ -224,19 +224,6 @@ auto MasterSystem::analyze(vector<u8>& rom) -> string {
|
|||
|
||||
//Korean No-Bank Mapper
|
||||
//=====
|
||||
//Bubble Bobble (Korea, YM Soft)##
|
||||
if(hash == "1ec2649067ac12a952fc12b86d1e4474c31aefaa7c2c2252c246cc7cdb3ceb05") {
|
||||
board = "Korea_NB";
|
||||
region = "NTSC-J";
|
||||
ram = 0;
|
||||
}
|
||||
|
||||
//C_So! (Korea)
|
||||
if(hash == "60716197f2643a5c87e38d26f32f370e328e740aaaea879b521986c31f8cdded") {
|
||||
board = "Korea_NB";
|
||||
region = "NTSC-J";
|
||||
ram = 0;
|
||||
}
|
||||
|
||||
//FA Tetris (Korea)
|
||||
if(hash == "46d86dd5782b248430cd84e9ba5b4fc68abec6472213bb898b2dbb213b4debcf") {
|
||||
|
@ -244,8 +231,23 @@ auto MasterSystem::analyze(vector<u8>& rom) -> string {
|
|||
region = "NTSC-J";
|
||||
ram = 0;
|
||||
}
|
||||
|
||||
//Sky Jaguar
|
||||
if(hash == "6b154d9fde7c8c6f1cf45adc50bf4727197746bb30c25f2f3f65874cc85cdf3e") {
|
||||
board = "Korea_NB";
|
||||
region = "NTSC-J";
|
||||
ram = 0;
|
||||
}
|
||||
|
||||
//Sky Jaguar [Clover]
|
||||
if(hash == "05462f928c1b39716dea4b230e2ed36b923e9fff47b81fa47c7afdce7cb57e49") {
|
||||
board = "Korea_NB";
|
||||
region = "NTSC-J";
|
||||
ram = 0;
|
||||
}
|
||||
|
||||
//Flashpoint (Korea)##
|
||||
//Flashpoint (Korea)
|
||||
// TODO: NOT WORKING!
|
||||
if(hash == "c6d945e79a22cc6da9ed6937d6a93a6df64835f1a577454e1c90b03e7d245186") {
|
||||
board = "Korea_NB";
|
||||
region = "NTSC-J";
|
||||
|
@ -306,67 +308,64 @@ auto MasterSystem::analyze(vector<u8>& rom) -> string {
|
|||
region = "NTSC-J";
|
||||
ram = 0;
|
||||
}
|
||||
|
||||
//Zemina / Nemesis
|
||||
//===
|
||||
//Nemesis (Korea)##
|
||||
if(hash == "c5b5126b0fdcacc70f350c3673f8d081b8d59d2db251ef917bf3ca8dd3d63430") {
|
||||
board = "Zemina_Nemesis";
|
||||
region = "NTSC-J";
|
||||
ram = 0;
|
||||
}
|
||||
|
||||
//Zemina
|
||||
//===
|
||||
|
||||
//Cyborg Z (Korea)
|
||||
if(hash == "685530e434c9d78da8441475f795591210873622622b7f3168348ce08abc7f8e") {
|
||||
board = "MSX";
|
||||
region = "NTSC-J";
|
||||
ram = 0;
|
||||
}
|
||||
|
||||
//F-1 Spirit: The Way to Formula-1 (Korea)
|
||||
if(hash == "42dbc2ccf30a8d8e6d1d64fd0abb98d2f29b06da2113cedb9ed15af57fd9cfe0") {
|
||||
board = "MSX";
|
||||
region = "NTSC-J";
|
||||
ram = 0;
|
||||
}
|
||||
|
||||
//Knightmare II: The Maze of Galious (Korea)
|
||||
if(hash == "a906127be07469e6083ef6eb9657f5ece6ffe65b3cf793a0423959fc446e2799") {
|
||||
board = "MSX";
|
||||
region = "NTSC-J";
|
||||
ram = 0;
|
||||
}
|
||||
|
||||
//Nemesis 2 (Korea)
|
||||
//Super Boy 3
|
||||
|
||||
//Nemesis 2 (Korea)##
|
||||
if(hash == "52d0772347e1bd73eea1a31f19400a4e24b43fb148b265ace9018ce2b677b3e4") {
|
||||
board = "MSX";
|
||||
board = "Zemina";
|
||||
region = "NTSC-J";
|
||||
ram = 0;
|
||||
}
|
||||
|
||||
//Penguin Adventure (Korea)
|
||||
|
||||
//Penguin Adventure (Korea)##
|
||||
if(hash == "17958bcf247f6d18b616c519cc1466f7250901ada61831890ca58767fbfbb4b8") {
|
||||
board = "MSX";
|
||||
board = "Zemina";
|
||||
region = "NTSC-J";
|
||||
ram = 0;
|
||||
}
|
||||
|
||||
//Street Master (Korea)
|
||||
if(hash == "cad9e768d6c7a1f781f2bf6c13ceab9142135d36fadab8db4b77edc9ae926be7") {
|
||||
board = "MSX";
|
||||
board = "Zemina";
|
||||
region = "NTSC-J";
|
||||
ram = 0;
|
||||
}
|
||||
|
||||
//Cyborg Z (Korea) ##
|
||||
if(hash == "685530e434c9d78da8441475f795591210873622622b7f3168348ce08abc7f8e") {
|
||||
board = "Zemina";
|
||||
region = "NTSC-J";
|
||||
ram = 0;
|
||||
}
|
||||
|
||||
//Knightmare II: The Maze of Galious (Korea)
|
||||
if(hash == "a906127be07469e6083ef6eb9657f5ece6ffe65b3cf793a0423959fc446e2799") {
|
||||
board = "Zemina";
|
||||
region = "NTSC-J";
|
||||
ram = 0;
|
||||
}
|
||||
|
||||
//Wonsiin (Korea)
|
||||
if(hash == "ee22d7b7fcd59e81ee6fda7b82356883d9c3d8ea3c99e6591487d1f28d569073") {
|
||||
board = "MSX";
|
||||
board = "Zemina";
|
||||
region = "NTSC-J";
|
||||
ram = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//Nemesis
|
||||
//===
|
||||
|
||||
//Nemesis (Korea)
|
||||
if(hash == "c5b5126b0fdcacc70f350c3673f8d081b8d59d2db251ef917bf3ca8dd3d63430") {
|
||||
board = "Nemesis";
|
||||
//F-1 Spirit: The Way to Formula-1 (Korea)
|
||||
if(hash == "42dbc2ccf30a8d8e6d1d64fd0abb98d2f29b06da2113cedb9ed15af57fd9cfe0") {
|
||||
board = "Zemina";
|
||||
region = "NTSC-J";
|
||||
ram = 0;
|
||||
}
|
||||
|
@ -392,6 +391,65 @@ auto MasterSystem::analyze(vector<u8>& rom) -> string {
|
|||
}
|
||||
|
||||
|
||||
//Korean 188 in 1
|
||||
// TODO: Game 6 and 13 do not work, posibly others also fail.
|
||||
//=======
|
||||
|
||||
//Not public dump
|
||||
// 128 Hap (KR)
|
||||
|
||||
//Game Mo-eumjip 188 Hap (Korea) (v0)##
|
||||
if(hash == "f6fa88b8f0396e1bda26e00fd8427effc26aaabed6f811aef68efec32b4c4df3") {
|
||||
board = "K188in1";
|
||||
region = "NTSC-J";
|
||||
ram = 0;
|
||||
}
|
||||
//Game Mo-eumjip 188 Hap (Korea) (v1)##
|
||||
if(hash == "e77553e86a0359c45e5b8250666ea402b0ae0d989b7fce0c28b42954cb5e106a") {
|
||||
board = "K188in1";
|
||||
region = "NTSC-J";
|
||||
ram = 0;
|
||||
}
|
||||
|
||||
//Seo Jin Multi-cart
|
||||
//=======
|
||||
|
||||
//Super Game 11-in-1 (Korea)##
|
||||
if(hash == "08bc15836676cb0f4cc4d0deadcc23a51903bc384cc4b3050c8fae34518e1b78") {
|
||||
board = "Janggun";
|
||||
region = "NTSC-J";
|
||||
ram = 0;
|
||||
}
|
||||
|
||||
//Unknown Mappers
|
||||
//=======
|
||||
|
||||
//Super Multi Game - Super 125 in 1 (Korea)##
|
||||
if(hash == "1f9cd857c8e8922826b4781872b656f6ff677d04f2bb4efdb11db8860fdba255") {
|
||||
board = "Janggun";
|
||||
region = "NTSC-J";
|
||||
ram = 0;
|
||||
}
|
||||
//Super Game 52 Hap (Korea)##
|
||||
if(hash == "af2822e40a46e32cb7ceaa5e54708b23554bd01f673c06a217c42dd5a8745535") {
|
||||
board = "Janggun";
|
||||
region = "NTSC-J";
|
||||
ram = 0;
|
||||
}
|
||||
//Super Game 45 (Korea)## [same mapper as "Super Game 52 Hap (Korea)"?]
|
||||
if(hash == "26463c23acf6ebf6277cc1b1448bf284c8244943fb8f5f24608a64b1f20c7d55") {
|
||||
board = "Janggun";
|
||||
region = "NTSC-J";
|
||||
ram = 0;
|
||||
}
|
||||
//Bubble Bobble (Korea, YM Soft)
|
||||
// TODO: NOT WORKING!XX
|
||||
if(hash == "1ec2649067ac12a952fc12b86d1e4474c31aefaa7c2c2252c246cc7cdb3ceb05") {
|
||||
board = "Korea_NB";
|
||||
region = "NTSC-J";
|
||||
ram = 0;
|
||||
}
|
||||
|
||||
|
||||
string s;
|
||||
s += "game\n";
|
||||
|
|
読み込み中…
新しいイシューから参照