summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Tauwasser <tauwasser@tauwasser.eu>2017-07-15 06:17:28 +0200
committer Vas Crabb <cuavas@users.noreply.github.com>2017-07-15 14:17:28 +1000
commit7aad252b347fe055d533e413b7273028936794ac (patch)
tree32562e4dd62a012f79c586e0d2a5f36aceca06eb
parent15c2bb0c08aeb3eff32ee17e70d38866192e782a (diff)
Gameboy v8 (#2477)
Miscellaneous Game Boy changes: * gameboy: add Super Chinese Land 1.2.3' to MBC1 Collection check code * gameboy: fix MMM01 zero-adjust logic for ROM bank New working software list additions -------------------------------- * gameboy.xml: Sachen 4 in 1 (Euro, 4B-003) [Tauwasser]
-rw-r--r--hash/gameboy.xml14
-rw-r--r--src/devices/bus/gameboy/gb_slot.cpp4
-rw-r--r--src/devices/bus/gameboy/mbc.cpp2
3 files changed, 17 insertions, 3 deletions
diff --git a/hash/gameboy.xml b/hash/gameboy.xml
index aa74fddd3a6..12513bd76e7 100644
--- a/hash/gameboy.xml
+++ b/hash/gameboy.xml
@@ -7,7 +7,6 @@
- Shanghai Pocket by Sunsoft: are serial and release date correct or do they refer to the GBC version?
Undumped pirate carts:
- - 4B-003: Sachen 4-in-1 version 3 (Taiwan's Mahjong, Japan's Mahjong, Hong Kong's Mahjong, Store Tris)
- GOWIN carts (see below the list of known games)
-->
@@ -24950,6 +24949,19 @@
</dataarea>
</part>
</software>
+
+ <software name="4in1_003">
+ <description>4 in 1 (Euro, 4B-003)</description>
+ <year>19??</year>
+ <publisher>Sachen</publisher>
+ <info name="serial" value="4B-003"/>
+ <part name="cart" interface="gameboy_cart">
+ <feature name="slot" value="rom_sachen1" />
+ <dataarea name="rom" size="65536">
+ <rom name="4b-003.bin" size="65536" crc="c294aa21" sha1="b5a3ee09692476d801d873a703d508d17ee24fbd" offset="0" />
+ </dataarea>
+ </part>
+ </software>
<!-- 4in1_003 missing -->
diff --git a/src/devices/bus/gameboy/gb_slot.cpp b/src/devices/bus/gameboy/gb_slot.cpp
index 3b2cdb0b1f7..74a6a605a4a 100644
--- a/src/devices/bus/gameboy/gb_slot.cpp
+++ b/src/devices/bus/gameboy/gb_slot.cpp
@@ -480,9 +480,11 @@ bool gb_cart_slot_device_base::is_mbc1col_game(const uint8_t *ROM, uint32_t len)
"MORTALKOMBAT DUO",
/* Mortal Kombat I & II US */
"MORTALKOMBATI&II",
+ /* Super Chinese Land 1,2,3' */
+ "SUPERCHINESE 123"
};
- const uint8_t rows = sizeof(internal_names) / sizeof(internal_names[0]);
+ const uint8_t rows = ARRAY_LENGTH(internal_names);
for (uint8_t i = 0x00; i < rows; ++i) {
if (0 == memcmp(&ROM[0x134], &internal_names[i][0], name_length))
diff --git a/src/devices/bus/gameboy/mbc.cpp b/src/devices/bus/gameboy/mbc.cpp
index 5f867933516..de71f483779 100644
--- a/src/devices/bus/gameboy/mbc.cpp
+++ b/src/devices/bus/gameboy/mbc.cpp
@@ -720,7 +720,7 @@ WRITE8_MEMBER(gb_rom_m161_device::write_bank)
READ8_MEMBER(gb_rom_mmm01_device::read_rom)
{
- uint16_t romb = m_romb & ~m_romb_nwe;
+ uint16_t romb = m_romb & ~(0x1e0 | m_romb_nwe);
uint16_t romb_base = m_romb & (0x1e0 | m_romb_nwe);
uint8_t ramb_masked = ((offset & 0x4000) | m_mode ? m_ramb : m_ramb & ~0x03);