diff options
Diffstat (limited to 'src/mame/drivers/unkhorse.cpp')
-rw-r--r-- | src/mame/drivers/unkhorse.cpp | 243 |
1 files changed, 0 insertions, 243 deletions
diff --git a/src/mame/drivers/unkhorse.cpp b/src/mame/drivers/unkhorse.cpp deleted file mode 100644 index 5d66f583be4..00000000000 --- a/src/mame/drivers/unkhorse.cpp +++ /dev/null @@ -1,243 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:hap, Tomasz Slanina -/*************************************************************************** - - unknown Japanese horse gambling game - probably early 80s, manufacturer unknown - - from a broken PCB, labeled EFI TG-007 - 8085A CPU + 8155 (for I/O and sound) - 8KB RAM mainly for bitmap video, and 512x4 RAM for color map - -TODO: -- identify game! -- improve I/O: - * more buttons/sensors? - * horse_output_w bits - * 6-pos dipswitch on the pcb, only 4 are known at the moment -- confirm colors and sound pitch - -***************************************************************************/ - -#include "emu.h" -#include "cpu/i8085/i8085.h" -#include "machine/i8155.h" -#include "sound/spkrdev.h" -#include "emupal.h" -#include "screen.h" -#include "speaker.h" - - -class horse_state : public driver_device -{ -public: - horse_state(const machine_config &mconfig, device_type type, const char *tag) : - driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu"), - m_speaker(*this, "speaker"), - m_inputs(*this, "IN.%u", 0), - m_vram(*this, "vram") - { } - - void horse(machine_config &config); - -private: - required_device<cpu_device> m_maincpu; - required_device<speaker_sound_device> m_speaker; - required_ioport_array<4> m_inputs; - required_shared_ptr<uint8_t> m_vram; - - std::unique_ptr<uint8_t[]> m_colorram; - uint8_t m_output; - - DECLARE_READ8_MEMBER(colorram_r) { return m_colorram[(offset >> 2 & 0x1e0) | (offset & 0x1f)] | 0x0f; } - DECLARE_WRITE8_MEMBER(colorram_w) { m_colorram[(offset >> 2 & 0x1e0) | (offset & 0x1f)] = data & 0xf0; } - DECLARE_READ8_MEMBER(input_r); - DECLARE_WRITE8_MEMBER(output_w); - - virtual void machine_start() override; - uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void horse_io_map(address_map &map); - void horse_map(address_map &map); -}; - -void horse_state::machine_start() -{ - m_colorram = std::make_unique<uint8_t []>(0x200); - save_pointer(NAME(m_colorram), 0x200); - save_item(NAME(m_output)); -} - - - -/*************************************************************************** - - Video - -***************************************************************************/ - -uint32_t horse_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - for (int y = cliprect.min_y; y <= cliprect.max_y; y++) - { - for (int x = 0; x < 32; x++) - { - uint8_t data = m_vram[y << 5 | x]; - uint8_t color = m_colorram[(y << 1 & 0x1e0) | x] >> 4; - - for (int i = 0; i < 8; i++) - bitmap.pix16(y, x << 3 | i) = (data >> i & 1) ? color : 0; - } - } - - return 0; -} - - - -/*************************************************************************** - - I/O - -***************************************************************************/ - -void horse_state::horse_map(address_map &map) -{ - map(0x0000, 0x37ff).rom(); - map(0x4000, 0x40ff).rw("i8155", FUNC(i8155_device::memory_r), FUNC(i8155_device::memory_w)); - map(0x6000, 0x7fff).ram().share("vram"); - map(0x8000, 0x87ff).mirror(0x0800).rw(FUNC(horse_state::colorram_r), FUNC(horse_state::colorram_w)); -} - -void horse_state::horse_io_map(address_map &map) -{ - map(0x40, 0x47).rw("i8155", FUNC(i8155_device::io_r), FUNC(i8155_device::io_w)); -} - - -READ8_MEMBER(horse_state::input_r) -{ - return m_inputs[m_output >> 6 & 3]->read(); -} - -WRITE8_MEMBER(horse_state::output_w) -{ - m_output = data; - - // d4: payout related - // d6-d7: input mux - // other bits: ? -} - - - -/*************************************************************************** - - Inputs - -***************************************************************************/ - -static INPUT_PORTS_START( horse ) - PORT_START("IN.0") - PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW:1,2,3") - PORT_DIPSETTING( 0x01, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x03, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x04, DEF_STR( 1C_4C ) ) - PORT_DIPSETTING( 0x05, DEF_STR( 1C_5C ) ) - PORT_DIPSETTING( 0x06, DEF_STR( 1C_6C ) ) - PORT_DIPSETTING( 0x07, DEF_STR( 1C_7C ) ) - PORT_DIPSETTING( 0x00, "1 Coin/10 Credits" ) - PORT_DIPNAME( 0x08, 0x08, "UNK04" ) PORT_DIPLOCATION("SW:4") - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, "UNK05" ) PORT_DIPLOCATION("SW:5") - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, "Maximum Bet" ) PORT_DIPLOCATION("SW:6") - PORT_DIPSETTING( 0x20, "20" ) - PORT_DIPSETTING( 0x00, "50" ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("IN.1") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("IN.2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_TILT ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) - - PORT_START("IN.3") - PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) -INPUT_PORTS_END - - - -/*************************************************************************** - - Machine Config - -***************************************************************************/ - -void horse_state::horse(machine_config &config) -{ - /* basic machine hardware */ - I8085A(config, m_maincpu, XTAL(12'000'000) / 2); - m_maincpu->set_addrmap(AS_PROGRAM, &horse_state::horse_map); - m_maincpu->set_addrmap(AS_IO, &horse_state::horse_io_map); - - i8155_device &i8155(I8155(config, "i8155", XTAL(12'000'000) / 4)); // port A input, B output, C output but unused - i8155.in_pa_callback().set(FUNC(horse_state::input_r)); - i8155.out_pb_callback().set(FUNC(horse_state::output_w)); - i8155.out_to_callback().set("speaker", FUNC(speaker_sound_device::level_w)); - - /* video hardware */ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_refresh_hz(60); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); - screen.set_size(32*8, 32*8); - screen.set_visarea(0*8, 32*8-1, 1*8, 31*8-1); - screen.set_screen_update(FUNC(horse_state::screen_update)); - screen.screen_vblank().set_inputline(m_maincpu, I8085_RST75_LINE); - screen.set_palette("palette"); - PALETTE(config, "palette", palette_device::BGR_3BIT); - - /* sound hardware */ - SPEAKER(config, "mono").front_center(); - SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.25); -} - - - -/*************************************************************************** - - Game drivers - -***************************************************************************/ - -ROM_START( unkhorse ) - ROM_REGION( 0x04000, "maincpu", 0 ) - ROM_LOAD( "h1.bin", 0x0000, 0x0800, CRC(2b6fc963) SHA1(bdbf71bd0994231517ecf8188ea19cc7d42e5333) ) - ROM_LOAD( "h2.bin", 0x0800, 0x0800, CRC(b9653e78) SHA1(fd1369c734a0fec8def5b7819b14e4c0d1361896) ) - ROM_LOAD( "h3.bin", 0x1000, 0x0800, CRC(77ce7149) SHA1(e6a38f9eb676f84ec0e4c28e27d0aa959b97301f) ) - ROM_LOAD( "h4.bin", 0x1800, 0x0800, CRC(7e77d95d) SHA1(0e0b7acd622806b4eee3c691f05a04bd2989dbea) ) - ROM_LOAD( "h5.bin", 0x2000, 0x0800, CRC(e2c6abdb) SHA1(555f759897904e577a0a38abaaa7636e974192da) ) - ROM_LOAD( "h6.bin", 0x2800, 0x0800, CRC(8b179039) SHA1(079bec1ead7e04e29e552e3b48bec740a869751d) ) - ROM_LOAD( "h7.bin", 0x3000, 0x0800, CRC(db21fc82) SHA1(38cf58c4d33da3e919d058abb482566c8f70d276) ) -ROM_END - - -GAME( 1981?, unkhorse, 0, horse, horse, horse_state, empty_init, ROT270, "<unknown>", "unknown Japanese horse gambling game", MACHINE_SUPPORTS_SAVE ) // copyright not shown, datecodes on pcb suggests early-1981 |