diff options
Diffstat (limited to 'src/emu/bus/megadrive/ggenie.c')
-rw-r--r-- | src/emu/bus/megadrive/ggenie.c | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/src/emu/bus/megadrive/ggenie.c b/src/emu/bus/megadrive/ggenie.c index 1f1dc8ceab1..62ebfbb55aa 100644 --- a/src/emu/bus/megadrive/ggenie.c +++ b/src/emu/bus/megadrive/ggenie.c @@ -5,17 +5,17 @@ based on Charles MacDonald's docs: http://cgfm2.emuviews.com/txt/genie.txt - + There is an interesting difference between Rev.0 and Rev.A - After the codes has been entered, the former just performs - a last write to the MODE register (m_gg_regs[0]) which both - sets the enable bits for the 6 available cheats (in the low - 8 bits) and locks the GG so that later reads goes to the + After the codes has been entered, the former just performs + a last write to the MODE register (m_gg_regs[0]) which both + sets the enable bits for the 6 available cheats (in the low + 8 bits) and locks the GG so that later reads goes to the piggyback cart. The latter revision, instead, performs the - same operations in two subsequent 8bit writes, accessing + same operations in two subsequent 8bit writes, accessing separately the low and high bits of the register. - + ***********************************************************************************************************/ #include "emu.h" @@ -86,7 +86,7 @@ READ16_MEMBER(md_rom_ggenie_device::read) return m_gg_data[5]; else return m_exp->m_cart->read(space, offset); - } + } else return 0xffff; } @@ -114,7 +114,7 @@ WRITE16_MEMBER(md_rom_ggenie_device::write) else { m_gg_bypass = 0; - + // bit9 set = read goes to ASIC registers if (data & 0x200) m_reg_enable = 1; @@ -122,7 +122,7 @@ WRITE16_MEMBER(md_rom_ggenie_device::write) else m_reg_enable = 0; } - + // LOCK bit if (data & 0x100) { @@ -133,7 +133,7 @@ WRITE16_MEMBER(md_rom_ggenie_device::write) m_gg_addr[3] = ((m_gg_regs[11] & 0x3f) << 16) | m_gg_regs[12]; m_gg_addr[4] = ((m_gg_regs[14] & 0x3f) << 16) | m_gg_regs[15]; m_gg_addr[5] = ((m_gg_regs[17] & 0x3f) << 16) | m_gg_regs[18]; - + // data m_gg_data[0] = m_gg_regs[4]; m_gg_data[1] = m_gg_regs[7]; @@ -144,9 +144,9 @@ WRITE16_MEMBER(md_rom_ggenie_device::write) //printf("mode %X\n", data); //for (int i = 0; i < 6; i++) - // printf("addr %d = 0x%X - data 0x%X\n", i, m_gg_addr[i], m_gg_data[i]); + // printf("addr %d = 0x%X - data 0x%X\n", i, m_gg_addr[i], m_gg_data[i]); } - } + } else if (offset == 1) { // RESET |