Skip to content

Instantly share code, notes, and snippets.

@h1romas4
Last active November 23, 2022 11:13
Show Gist options
  • Save h1romas4/dff99741f6b2ea8a4badb2092180cf07 to your computer and use it in GitHub Desktop.
Save h1romas4/dff99741f6b2ea8a4badb2092180cf07 to your computer and use it in GitHub Desktop.
build MAME for MSX C-BIOS support
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 47df942731c..fd11ec76d5f 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -31402,6 +31402,7 @@ canonv20f //
canonv20g //
canonv20s //
canonv8 //
+cbiosm1jp // C-BIOS MSX
cf1200 // 1984 MSX Japan
cf2000 // 1983 MSX Japan
cf2700 // 1984 MSX Japan
@@ -31551,6 +31552,7 @@ ax370 //
ax500 //
canonv25 //
canonv30f //
+cbiosm2jp // C-BIOS MSX2
cpc300 // 1986 MSX2 Korea
cpc300e // 1986 MSX2 Korea
cpc330k //
diff --git a/src/mame/msx/msx1.cpp b/src/mame/msx/msx1.cpp
index 47fe0eeb184..7e03a961a17 100644
--- a/src/mame/msx/msx1.cpp
+++ b/src/mame/msx/msx1.cpp
@@ -110,6 +110,7 @@ public:
void canonv20(machine_config &config);
void canonv20e(machine_config &config);
void canonv25(machine_config &config);
+ void cbiosm1jp(machine_config &config);
void cf1200(machine_config &config);
void cf2000(machine_config &config);
void cf2700(machine_config &config);
@@ -3664,8 +3665,27 @@ void msx1_state::mx64(machine_config &config)
msx1(VDP_TMS9928A, SND_AY8910, config);
}
-} // anonymous namespace
+/* MSX - C-BIOS */
+
+ROM_START (cbiosm1jp)
+ ROM_REGION (0x10000, "mainrom",0)
+ ROM_LOAD ("cbios_main_msx1_jp.rom", 0x0000, 0x8000, CRC(296d77a3) SHA1(933719a975a62395068b0a251dd4395b67217630))
+ ROM_LOAD ("cbios_logo_msx1.rom", 0x8000, 0x4000, CRC(88e2b691) SHA1(9fbbe400dbaf186aeba42e170d9424b032412c42))
+ ROM_LOAD ("cbios_sub.rom", 0xc000, 0x4000, CRC(5466ccb6) SHA1(2fcb40413e7d373f0f2dbdc815ce18746ddf3684))
+ROM_END
+void msx1_state::cbiosm1jp(machine_config &config)
+{
+ add_internal_slot(config, MSX_SLOT_ROM, "mainrom", 0, 0, 3, "mainrom");
+ add_cartridge_slot<1>(config, 1);
+ add_cartridge_slot<2>(config, 2);
+ add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); /* 64KB RAM */
+ add_internal_slot(config, MSX_SLOT_ROM, "sub", 3, 1, 0, 1, "mainrom", 0xc000);
+
+ msx1(VDP_TMS9928A, SND_YM2149, config);
+}
+
+} // anonymous namespace
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */
/* MSX1 */
@@ -3677,6 +3697,7 @@ COMP(1985, canonv20e, canonv20, 0, canonv20e, msxuk, msx1_state, empty_
COMP(1985, canonv20f, canonv20, 0, canonv20e, msxfr, msx1_state, empty_init, "Canon", "V-20F (MSX1, France)", 0)
COMP(198?, canonv20g, canonv20, 0, canonv20e, msxde, msx1_state, empty_init, "Canon", "V-20G (MSX1, Germany)", 0)
COMP(198?, canonv20s, canonv20, 0, canonv20e, msxsp, msx1_state, empty_init, "Canon", "V-20S (MSX1, Spain)", 0)
+COMP(2018, cbiosm1jp, 0, 0, cbiosm1jp, msxjp, msx1_state, empty_init, "C-BIOS", "C-BIOS (MSX1)", 0)
COMP(1985, mx10, mx15, 0, mx10, msxjp, msx1_state, empty_init, "Casio", "MX-10 (MSX1, Japan)", 0)
COMP(1987, mx101, mx15, 0, mx101, msxjp, msx1_state, empty_init, "Casio", "MX-101 (MSX1, Japan)", 0)
COMP(1986, mx15, 0, 0, mx15, msx, msx1_state, empty_init, "Casio", "MX-15 (MSX1, International)", 0)
diff --git a/src/mame/msx/msx2.cpp b/src/mame/msx/msx2.cpp
index bae2d0b8893..52312cdc81e 100644
--- a/src/mame/msx/msx2.cpp
+++ b/src/mame/msx/msx2.cpp
@@ -73,6 +73,7 @@ public:
void canonv25(machine_config &config);
void canonv30(machine_config &config);
void canonv30f(machine_config &config);
+ void cbiosm2jp(machine_config &config);
void cpc300(machine_config &config);
void cpc300e(machine_config &config);
void cpc330k(machine_config &config);
@@ -4579,11 +4580,32 @@ void msx2_state::fsa1st(machine_config &config)
turbor(SND_AY8910, config);
}
+/* MSX2 - C-BIOS */
+
+ROM_START (cbiosm2jp)
+ ROM_REGION (0x10000, "mainrom", 0)
+ ROM_LOAD ("cbios_main_msx2_jp.rom", 0x0000, 0x8000, CRC(0c2d6b99) SHA1(47cc280f0d8b0611fdb1069e6fd7b854cae93546))
+ ROM_LOAD ("cbios_logo_msx2.rom", 0x8000, 0x4000, CRC(41b12c7b) SHA1(d4e5b98ce23573669fb44447582d656e390791c0))
+ ROM_LOAD ("cbios_sub.rom", 0xc000, 0x4000, CRC(5466ccb6) SHA1(2fcb40413e7d373f0f2dbdc815ce18746ddf3684))
+ROM_END
+
+void msx2_state::cbiosm2jp(machine_config &config)
+{
+ add_internal_slot(config, MSX_SLOT_ROM, "mainrom", 0, 0, 3, "mainrom");
+ add_cartridge_slot<1>(config, 1);
+ add_cartridge_slot<2>(config, 2);
+ add_internal_slot(config, MSX_SLOT_RAM, "ram", 3, 0, 0, 4); /* 64KB RAM */
+ add_internal_slot(config, MSX_SLOT_ROM, "sub", 3, 1, 0, 1, "mainrom", 0xc000);
+
+ msx2(SND_YM2149, config);
+}
+
} // anonymous namespace
/* MSX2 */
COMP(1985, canonv25, 0, 0, canonv25, msxjp, msx2_state, empty_init, "Canon", "V-25 (MSX2, Japan)", 0)
COMP(1985, canonv30f, 0, 0, canonv30f, msx2, msx2_state, empty_init, "Canon", "V-30F (MSX2, Japan)", 0)
+COMP(2018, cbiosm2jp, 0, 0, cbiosm2jp, msx2jp, msx2_state, empty_init, "C-BIOS", "C-BIOS (MSX2)", 0)
COMP(1986, cpc300, 0, 0, cpc300, msx2kr, msx2_state, empty_init, "Daewoo", "IQ-2000 CPC-300 (MSX2, Korea)", 0)
COMP(1987, cpc300e, 0, 0, cpc300e, msx2kr, msx2_state, empty_init, "Daewoo", "IQ-2000 CPC-300E (MSX2, Korea)", 0)
COMP(1988, cpc330k, 0, 0, cpc330k, msx2kr, msx2_state, empty_init, "Daewoo", "CPC-330K KOBO (MSX2, Korea)", 0)

Patch

git clone https://github.com/mamedev/mame.git
git checkout 04e529dcb54753b885edfda0455bf2fb1a278dbc
patch -p1 < add-support-msx-cbios.patch
make -j4 SOURCES=src/mame/msx/msx1.cpp,src/mame/msx/msx2.cpp

Deploy C-BIOS (https://ja.osdn.net/projects/sfnet_cbios/ - cbios-0.29a.zip)

ls -laF roms/cbiosm1jp/
-rw-r--r--  1 hiromasa hiromasa 16384 11月 23 17:42 cbios_logo_msx1.rom
-rw-r--r--  1 hiromasa hiromasa 32768 11月 23 16:18 cbios_main_msx1_jp.rom
-rw-r--r--  1 hiromasa hiromasa 16384 11月 23 17:42 cbios_sub.rom
ls -laF roms/cbiosm2jp/
-rw-r--r--  1 hiromasa hiromasa 16384 11月 23 16:27 cbios_logo_msx2.rom
-rw-r--r--  1 hiromasa hiromasa 32768 11月 23 16:27 cbios_main_msx2_jp.rom
-rw-r--r--  1 hiromasa hiromasa 16384 11月 23 16:51 cbios_sub.rom

Launch

./mame cbiosm1jp -window -resolution 800x600 -video soft
./mame cbiosm2jp -window -resolution 800x600 -video soft
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment