summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/forte2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/forte2.cpp')
-rw-r--r--src/mame/drivers/forte2.cpp174
1 files changed, 0 insertions, 174 deletions
diff --git a/src/mame/drivers/forte2.cpp b/src/mame/drivers/forte2.cpp
deleted file mode 100644
index 95ba1f28fa6..00000000000
--- a/src/mame/drivers/forte2.cpp
+++ /dev/null
@@ -1,174 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:hap, Mariusz Wojcieszek
-/* Brazilian bootleg board from 1989. Forte II Games, Industria Brasileira.
-MAME driver by Mariusz Wojcieszek & hap, based on
-information from Alexandre Souza (a.k.a. "Tabajara").
-
-Hardware is based on MSX1, excluding i8255 PPI:
- 64KB RAM, largely unused
- 64KB EPROM (2764-15, contains hacked BIOS and game ROM)
- Z80 @ 3.58MHz
- GI AY-3-8910
- TI TMS9928A
- (no dipswitches)
-
-Games:
-Pesadelo (means 'nightmare' in Portuguese), 1989 bootleg of Knightmare (Majou
-Densetsu in Japan) (C) 1986 Konami, originally released exclusively on MSX.
-This arcade conversion has been made a bit harder, eg. bonus power-ups deplete
-three times quicker, and the game starts at a later, more difficult level.
-A precise translation of the Brazilian Portuguese text displayed
-upon inserting a coin is:
-
- NIGHTMARE DIFFICULTY-LEVEL 2 DOES NOT ACCUMULATE
- CREDITS , ONLY INSERT A NEW
- COIN AFTER THE END OF THE GAME
- IN ORDER TO START THE GAME PRESS
- THE FIRE BUTTON.
-
- GOOD LUCK!
-
-If the coin detector is activated for a few seconds, an error message
-meaning STUCK COIN shows up blinking and beeping:
-
- FICHA PRESA
-
-According to Alexandre, there are more games for this board, but not
-found/dumped yet. */
-
-#include "emu.h"
-#include "cpu/z80/z80.h"
-#include "video/tms9928a.h"
-#include "sound/ay8910.h"
-#include "screen.h"
-#include "speaker.h"
-
-
-class forte2_state : public driver_device
-{
-public:
- forte2_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- , m_maincpu(*this, "maincpu")
- { }
-
- void init_pesadelo();
- void pesadelo(machine_config &config);
-
-private:
- virtual void machine_start() override;
- virtual void machine_reset() override;
- void io_mem(address_map &map);
- void program_mem(address_map &map);
-
- DECLARE_READ8_MEMBER(ay8910_read_input);
- DECLARE_WRITE8_MEMBER(ay8910_set_input_mask);
-
- required_device<cpu_device> m_maincpu;
-
- uint8_t m_input_mask;
-};
-
-
-
-void forte2_state::program_mem(address_map &map)
-{
- map(0x0000, 0xbfff).rom();
- map(0xc000, 0xffff).ram();
-}
-
-void forte2_state::io_mem(address_map &map)
-{
- map.unmap_value_high();
- map.global_mask(0xff);
- map(0x98, 0x99).rw("tms9928a", FUNC(tms9928a_device::read), FUNC(tms9928a_device::write));
- map(0xa0, 0xa1).w("aysnd", FUNC(ay8910_device::address_data_w));
- map(0xa2, 0xa2).r("aysnd", FUNC(ay8910_device::data_r));
-// map(0xa8, 0xa8).ram(); // Ports a8-ab are originally for communicating with the i8255 PPI on MSX.
-// map(0xa9, 0xab).noprw(); // Since this arcade board doesn't have one, those ports should be unmapped.
-}
-
-static INPUT_PORTS_START( pesadelo )
- PORT_START("IN0")
- PORT_BIT (0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP)
- PORT_BIT (0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN)
- PORT_BIT (0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT)
- PORT_BIT (0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT)
- PORT_BIT (0x10, IP_ACTIVE_LOW, IPT_BUTTON1)
- PORT_BIT (0x20, IP_ACTIVE_LOW, IPT_START1)
- PORT_BIT (0x40, IP_ACTIVE_LOW, IPT_UNUSED)
- PORT_BIT (0x80, IP_ACTIVE_LOW, IPT_COIN1)
-INPUT_PORTS_END
-
-
-READ8_MEMBER(forte2_state::ay8910_read_input)
-{
- return ioport("IN0")->read() | (m_input_mask & 0x3f);
-}
-
-WRITE8_MEMBER(forte2_state::ay8910_set_input_mask)
-{
- /* PSG reg 15, writes 0 at coin insert, 0xff at boot and game over */
- m_input_mask = data;
-}
-
-void forte2_state::machine_reset()
-{
- m_input_mask = 0xff;
-}
-
-void forte2_state::machine_start()
-{
- /* register for save states */
- save_item(NAME(m_input_mask));
-}
-
-
-void forte2_state::pesadelo(machine_config &config)
-{
- /* basic machine hardware */
- Z80(config, m_maincpu, XTAL(3'579'545));
- m_maincpu->set_addrmap(AS_PROGRAM, &forte2_state::program_mem);
- m_maincpu->set_addrmap(AS_IO, &forte2_state::io_mem);
-
- /* video hardware */
- tms9928a_device &vdp(TMS9928A(config, "tms9928a", XTAL(10'738'635)));
- vdp.set_screen("screen");
- vdp.set_vram_size(0x4000);
- vdp.int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
-
- /* sound hardware */
- SPEAKER(config, "mono").front_center();
- ay8910_device &aysnd(AY8910(config, "aysnd", XTAL(3'579'545)/2));
- aysnd.port_a_read_callback().set(FUNC(forte2_state::ay8910_read_input));
- aysnd.port_b_write_callback().set(FUNC(forte2_state::ay8910_set_input_mask));
- aysnd.add_route(ALL_OUTPUTS, "mono", 0.50);
-}
-
-void forte2_state::init_pesadelo()
-{
- uint8_t *mem = memregion("maincpu")->base();
- int memsize = memregion("maincpu")->bytes();
-
- // data swap
- for (int i = 0; i < memsize; i++)
- {
- mem[i] = bitswap<8>(mem[i],3,5,6,7,0,4,2,1);
- }
-
- // address line swap
- std::vector<uint8_t> buf(&mem[0], &mem[memsize]);
-
- for (int i = 0; i < memsize; i++)
- {
- mem[bitswap<16>(i,11,9,8,13,14,15,12,7,6,5,4,3,2,1,0,10)] = buf[i];
- }
-}
-
-ROM_START( pesadelo )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "epr2764.15", 0x00000, 0x10000, CRC(1ae2f724) SHA1(12880dd7ad82acf04861843fb9d4f0f926d18f6b) )
-ROM_END
-
-GAME( 1989, pesadelo, 0, pesadelo, pesadelo, forte2_state, init_pesadelo, ROT0, "bootleg (Forte II Games) / Konami", "Pesadelo (bootleg of Knightmare on MSX)", MACHINE_SUPPORTS_SAVE )