mirror of
https://github.com/holub/mame
synced 2025-07-05 18:08:04 +03:00
(MESS) msx.c: Added support for protection used by Baby Dinosaur Dooly (hopefully complete). (nw)
This commit is contained in:
parent
db5294cec3
commit
8d559f580c
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -997,6 +997,8 @@ src/emu/bus/msx_cart/cartridge.c svneol=native#text/plain
|
|||||||
src/emu/bus/msx_cart/cartridge.h svneol=native#text/plain
|
src/emu/bus/msx_cart/cartridge.h svneol=native#text/plain
|
||||||
src/emu/bus/msx_cart/crossblaim.c svneol=native#text/plain
|
src/emu/bus/msx_cart/crossblaim.c svneol=native#text/plain
|
||||||
src/emu/bus/msx_cart/crossblaim.h svneol=native#text/plain
|
src/emu/bus/msx_cart/crossblaim.h svneol=native#text/plain
|
||||||
|
src/emu/bus/msx_cart/dooly.c svneol=native#text/plain
|
||||||
|
src/emu/bus/msx_cart/dooly.h svneol=native#text/plain
|
||||||
src/emu/bus/msx_cart/fmpac.c svneol=native#text/plain
|
src/emu/bus/msx_cart/fmpac.c svneol=native#text/plain
|
||||||
src/emu/bus/msx_cart/fmpac.h svneol=native#text/plain
|
src/emu/bus/msx_cart/fmpac.h svneol=native#text/plain
|
||||||
src/emu/bus/msx_cart/hfox.c svneol=native#text/plain
|
src/emu/bus/msx_cart/hfox.c svneol=native#text/plain
|
||||||
|
@ -17101,6 +17101,17 @@ legacy FM implementations cannot find it.
|
|||||||
|
|
||||||
<!-- SORT -->
|
<!-- SORT -->
|
||||||
|
|
||||||
|
<software name="dooly">
|
||||||
|
<description>Baby Dinosaur Dooly</description>
|
||||||
|
<year>1991</year>
|
||||||
|
<publisher>Daou</publisher>
|
||||||
|
<part name="cart" interface="msx_cart">
|
||||||
|
<feature name="slot" value="dooly" />
|
||||||
|
<dataarea name="rom" size="32768">
|
||||||
|
<rom name="dooly.rom" size="32768" crc="71a1b1ec" sha1="dbac346f03950fbef81a003b4a42b2898a4e54c1" offset="0" />
|
||||||
|
</dataarea>
|
||||||
|
</part>
|
||||||
|
</software>
|
||||||
|
|
||||||
|
|
||||||
</softwarelist>
|
</softwarelist>
|
||||||
|
@ -410,6 +410,7 @@ OBJDIRS += $(BUSOBJ)/msx_cart
|
|||||||
BUSOBJS += $(BUSOBJ)/msx_cart/ascii.o
|
BUSOBJS += $(BUSOBJ)/msx_cart/ascii.o
|
||||||
BUSOBJS += $(BUSOBJ)/msx_cart/cartridge.o
|
BUSOBJS += $(BUSOBJ)/msx_cart/cartridge.o
|
||||||
BUSOBJS += $(BUSOBJ)/msx_cart/crossblaim.o
|
BUSOBJS += $(BUSOBJ)/msx_cart/crossblaim.o
|
||||||
|
BUSOBJS += $(BUSOBJ)/msx_cart/dooly.o
|
||||||
BUSOBJS += $(BUSOBJ)/msx_cart/fmpac.o
|
BUSOBJS += $(BUSOBJ)/msx_cart/fmpac.o
|
||||||
BUSOBJS += $(BUSOBJ)/msx_cart/hfox.o
|
BUSOBJS += $(BUSOBJ)/msx_cart/hfox.o
|
||||||
BUSOBJS += $(BUSOBJ)/msx_cart/holy_quran.o
|
BUSOBJS += $(BUSOBJ)/msx_cart/holy_quran.o
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
#include "cartridge.h"
|
#include "cartridge.h"
|
||||||
#include "ascii.h"
|
#include "ascii.h"
|
||||||
#include "crossblaim.h"
|
#include "crossblaim.h"
|
||||||
|
#include "dooly.h"
|
||||||
#include "fmpac.h"
|
#include "fmpac.h"
|
||||||
#include "hfox.h"
|
#include "hfox.h"
|
||||||
#include "holy_quran.h"
|
#include "holy_quran.h"
|
||||||
@ -47,6 +48,7 @@ SLOT_INTERFACE_START(msx_cart)
|
|||||||
SLOT_INTERFACE_INTERNAL("hfox", MSX_CART_HFOX)
|
SLOT_INTERFACE_INTERNAL("hfox", MSX_CART_HFOX)
|
||||||
SLOT_INTERFACE_INTERNAL("keyboard_master", MSX_CART_KEYBOARD_MASTER)
|
SLOT_INTERFACE_INTERNAL("keyboard_master", MSX_CART_KEYBOARD_MASTER)
|
||||||
SLOT_INTERFACE_INTERNAL("holy_quran", MSX_CART_HOLY_QURAN)
|
SLOT_INTERFACE_INTERNAL("holy_quran", MSX_CART_HOLY_QURAN)
|
||||||
|
SLOT_INTERFACE_INTERNAL("dooly", MSX_CART_DOOLY)
|
||||||
SLOT_INTERFACE_END
|
SLOT_INTERFACE_END
|
||||||
|
|
||||||
|
|
||||||
|
66
src/emu/bus/msx_cart/dooly.c
Normal file
66
src/emu/bus/msx_cart/dooly.c
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
#include "emu.h"
|
||||||
|
#include "dooly.h"
|
||||||
|
|
||||||
|
|
||||||
|
const device_type MSX_CART_DOOLY = &device_creator<msx_cart_dooly>;
|
||||||
|
|
||||||
|
|
||||||
|
msx_cart_dooly::msx_cart_dooly(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||||
|
: device_t(mconfig, MSX_CART_DOOLY, "MSX Cartridge - Dooly", tag, owner, clock, "msx_cart_dooly", __FILE__)
|
||||||
|
, msx_cart_interface(mconfig, *this)
|
||||||
|
, m_prot(0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void msx_cart_dooly::device_start()
|
||||||
|
{
|
||||||
|
save_item(NAME(m_prot));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void msx_cart_dooly::device_reset()
|
||||||
|
{
|
||||||
|
m_prot = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void msx_cart_dooly::initialize_cartridge()
|
||||||
|
{
|
||||||
|
if (get_rom_size() != 0x8000)
|
||||||
|
{
|
||||||
|
fatalerror("dooly: Invalid ROM size\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
READ8_MEMBER(msx_cart_dooly::read_cart)
|
||||||
|
{
|
||||||
|
if (offset >= 0x4000 && offset < 0xc000)
|
||||||
|
{
|
||||||
|
UINT8 data = get_rom_base()[offset - 0x4000];
|
||||||
|
|
||||||
|
switch (m_prot)
|
||||||
|
{
|
||||||
|
case 0x04:
|
||||||
|
data = BITSWAP8(data, 7, 6, 5, 4, 3, 1, 0, 2);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
return 0xff;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
WRITE8_MEMBER(msx_cart_dooly::write_cart)
|
||||||
|
{
|
||||||
|
if (offset >= 0x4000 && offset < 0xc000)
|
||||||
|
{
|
||||||
|
m_prot = data & 0x07;
|
||||||
|
if (m_prot != 0 && m_prot != 4)
|
||||||
|
{
|
||||||
|
logerror("msx_cart_dooly: unhandled write %02x to %04x\n", data, offset);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
30
src/emu/bus/msx_cart/dooly.h
Normal file
30
src/emu/bus/msx_cart/dooly.h
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
#ifndef __MSX_CART_DOOLY_H
|
||||||
|
#define __MSX_CART_DOOLY_H
|
||||||
|
|
||||||
|
#include "bus/msx_cart/cartridge.h"
|
||||||
|
|
||||||
|
|
||||||
|
extern const device_type MSX_CART_DOOLY;
|
||||||
|
|
||||||
|
|
||||||
|
class msx_cart_dooly : public device_t
|
||||||
|
, public msx_cart_interface
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
msx_cart_dooly(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||||
|
|
||||||
|
// device-level overrides
|
||||||
|
virtual void device_start();
|
||||||
|
virtual void device_reset();
|
||||||
|
|
||||||
|
virtual void initialize_cartridge();
|
||||||
|
|
||||||
|
virtual DECLARE_READ8_MEMBER(read_cart);
|
||||||
|
virtual DECLARE_WRITE8_MEMBER(write_cart);
|
||||||
|
|
||||||
|
private:
|
||||||
|
UINT8 m_prot;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in New Issue
Block a user