trunk/hash/msx2_flop.xml
| r30838 | r30839 | |
| 309 | 309 | </software> |
| 310 | 310 | --> |
| 311 | 311 | |
| 312 | | <!-- Needs specific mapper --> |
| 313 | | <software name="arc" supported="no"> |
| 312 | <software name="arc"> |
| 314 | 313 | <description>Arc</description> |
| 315 | 314 | <year>1990</year> |
| 316 | 315 | <publisher>Parallax</publisher> |
| 317 | | <part name="flop1" interface="floppy_3_5"> |
| 316 | <!-- Floppy #2 is the game disk --> |
| 317 | <part name="flop2" interface="floppy_3_5"> |
| 318 | 318 | <dataarea name="flop" size="737280"> |
| 319 | | <rom name="ARC_disk_A.dsk" size="737280" crc="dfd9c28d" sha1="ddff24b17fd4fcaecd8197fb8a20099483924565" offset="0" /> |
| 319 | <rom name="ARC_disk_B.dsk" size="737280" crc="af2bd084" sha1="8d91f61e28c0d813f16adb06e019da911aa84b2c" offset="0" /> |
| 320 | 320 | </dataarea> |
| 321 | 321 | </part> |
| 322 | | <part name="flop2" interface="floppy_3_5"> |
| 322 | <!-- Floppy #1 contains the manual --> |
| 323 | <part name="flop1" interface="floppy_3_5"> |
| 323 | 324 | <dataarea name="flop" size="737280"> |
| 324 | | <rom name="ARC_disk_B.dsk" size="737280" crc="af2bd084" sha1="8d91f61e28c0d813f16adb06e019da911aa84b2c" offset="0" /> |
| 325 | <rom name="ARC_disk_A.dsk" size="737280" crc="dfd9c28d" sha1="ddff24b17fd4fcaecd8197fb8a20099483924565" offset="0" /> |
| 325 | 326 | </dataarea> |
| 326 | 327 | </part> |
| 327 | 328 | <part name="cart" interface="msx_cart"> |
trunk/src/emu/bus/msx_cart/arc.c
| r0 | r30839 | |
| 1 | #include "emu.h" |
| 2 | #include "arc.h" |
| 3 | |
| 4 | |
| 5 | const device_type MSX_CART_ARC = &device_creator<msx_cart_arc>; |
| 6 | |
| 7 | |
| 8 | msx_cart_arc::msx_cart_arc(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) |
| 9 | : device_t(mconfig, MSX_CART_ARC, "MSX Cartridge - Arc", tag, owner, clock, "msx_cart_arc", __FILE__) |
| 10 | , msx_cart_interface(mconfig, *this) |
| 11 | , m_7f(0) |
| 12 | { |
| 13 | } |
| 14 | |
| 15 | |
| 16 | void msx_cart_arc::device_start() |
| 17 | { |
| 18 | // Install IO read/write handlers |
| 19 | address_space &space = machine().device<cpu_device>("maincpu")->space(AS_IO); |
| 20 | space.install_write_handler(0x7f, 0x7f, write8_delegate(FUNC(msx_cart_arc::io_7f_w), this)); |
| 21 | space.install_read_handler(0x7f, 0x7f, read8_delegate(FUNC(msx_cart_arc::io_7f_r), this)); |
| 22 | } |
| 23 | |
| 24 | |
| 25 | void msx_cart_arc::device_reset() |
| 26 | { |
| 27 | m_7f = 0; |
| 28 | } |
| 29 | |
| 30 | |
| 31 | void msx_cart_arc::initialize_cartridge() |
| 32 | { |
| 33 | if (get_rom_size() != 0x8000) |
| 34 | { |
| 35 | fatalerror("arc: Invalid ROM size\n"); |
| 36 | } |
| 37 | } |
| 38 | |
| 39 | |
| 40 | READ8_MEMBER(msx_cart_arc::read_cart) |
| 41 | { |
| 42 | if (offset >= 0x4000 && offset < 0xc000) |
| 43 | { |
| 44 | return get_rom_base()[offset - 0x4000]; |
| 45 | } |
| 46 | return 0xff; |
| 47 | } |
| 48 | |
| 49 | |
| 50 | WRITE8_MEMBER(msx_cart_arc::io_7f_w) |
| 51 | { |
| 52 | if (data == 0x35) |
| 53 | { |
| 54 | m_7f++; |
| 55 | } |
| 56 | } |
| 57 | |
| 58 | |
| 59 | READ8_MEMBER(msx_cart_arc::io_7f_r) |
| 60 | { |
| 61 | return ((m_7f & 0x03) == 0x03) ? 0xda : 0xff; |
| 62 | } |
| 63 | |
trunk/src/emu/bus/msx_cart/arc.h
| r0 | r30839 | |
| 1 | #ifndef __MSX_CART_ARC_H |
| 2 | #define __MSX_CART_ARC_H |
| 3 | |
| 4 | #include "bus/msx_cart/cartridge.h" |
| 5 | |
| 6 | |
| 7 | extern const device_type MSX_CART_ARC; |
| 8 | |
| 9 | |
| 10 | class msx_cart_arc : public device_t |
| 11 | , public msx_cart_interface |
| 12 | { |
| 13 | public: |
| 14 | msx_cart_arc(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 15 | |
| 16 | // device-level overrides |
| 17 | virtual void device_start(); |
| 18 | virtual void device_reset(); |
| 19 | |
| 20 | virtual void initialize_cartridge(); |
| 21 | |
| 22 | virtual DECLARE_READ8_MEMBER(read_cart); |
| 23 | |
| 24 | DECLARE_WRITE8_MEMBER(io_7f_w); |
| 25 | DECLARE_READ8_MEMBER(io_7f_r); |
| 26 | |
| 27 | private: |
| 28 | UINT8 m_7f; |
| 29 | }; |
| 30 | |
| 31 | |
| 32 | #endif |