summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame
diff options
context:
space:
mode:
author RobertoFresca <robertofresca@recreativas.org>2021-01-20 19:27:58 +0100
committer RobertoFresca <robertofresca@recreativas.org>2021-01-20 19:27:58 +0100
commit42a36976f1770be0cc7973e9776bc21bca677325 (patch)
tree57b121e0e2950aad8257cc8aea8241713682c60f /src/mame
parente669b5ef466f5f83fb3b10e61752fad467fc1582 (diff)
Forte Card improvements: Added a default serial EEPROM after an exhaustive
reverse-engineering work of Grull Osgo. Refactored and cleaned up the sets and driver. Added technical notes. Clones promoted to working -------------------------- Forte Card (Ver 103, English) [Grull Osgo, Roberto Fresca]
Diffstat (limited to 'src/mame')
-rw-r--r--src/mame/drivers/fortecar.cpp205
-rw-r--r--src/mame/mame.lst2
2 files changed, 99 insertions, 108 deletions
diff --git a/src/mame/drivers/fortecar.cpp b/src/mame/drivers/fortecar.cpp
index e37bea077cc..f105c2109d2 100644
--- a/src/mame/drivers/fortecar.cpp
+++ b/src/mame/drivers/fortecar.cpp
@@ -6,17 +6,27 @@
1994, Fortex Ltd.
Driver by Angelo Salese.
- Additional work by Roberto Fresca & Rob Ragon.
+ Additional work by Roberto Fresca.
+
+
+ Supported sets:
+
+ * Forte Card (Ver 110, Spanish), 1994, Fortex Ltd.
+ * Forte Card (Ver 103, English), 1994, Fortex Ltd.
+
+
+ Special thanks to Grull Osgo for his exhaustive reverse engineering that allowed to recreate
+ the original default serial EEPROM contents for the english set, critical to get it working.
+
+ Special thanks to Rob Ragon for dump the spanish set, and all the tests on the real hardware.
+
+-------------------------------------------------------------------------------------------------
Notes:
- NMI mask and vblank bit are made thru SW usage of the I register (that is unused
if the z80 is in IM 1).
-
- TODO:
- - fortecar requires a proper EEPROM dump, doesn't start due of it.
- - fortecrd has non-default data in the default EEPROM.
-
+ Debug notes:
English set: bp 512 do pc=53e
Spanish set: bp 512 do pc=562
@@ -86,6 +96,8 @@
Game Notes...
+ The game takes some seconds to boot, due to a lot of complex checks at begining.
+ NVRAM is created automatically.
There are 3 keys for service modes:
@@ -331,10 +343,10 @@
#define AY_CLOCK (MASTER_CLOCK/8)
-class fortecar_state : public driver_device
+class fortecrd_state : public driver_device
{
public:
- fortecar_state(const machine_config &mconfig, device_type type, const char *tag) :
+ fortecrd_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_maincpu(*this,"maincpu"),
m_watchdog(*this, "watchdog"),
@@ -345,9 +357,7 @@ public:
m_lamps(*this, "lamp%u", 0U)
{ }
- void fortecar(machine_config &config);
-
- void init_fortecar();
+ void fortecrd(machine_config &config);
protected:
virtual void machine_start() override;
@@ -367,11 +377,11 @@ private:
void ayporta_w(uint8_t data);
void ayportb_w(uint8_t data);
- void fortecar_palette(palette_device &palette) const;
+ void fortecrd_palette(palette_device &palette) const;
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
- void fortecar_map(address_map &map);
- void fortecar_ports(address_map &map);
+ void fortecrd_map(address_map &map);
+ void fortecrd_ports(address_map &map);
};
@@ -379,12 +389,12 @@ private:
* Video Hardware *
***********************************/
-void fortecar_state::machine_start()
+void fortecrd_state::machine_start()
{
m_lamps.resolve();
}
-uint32_t fortecar_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+uint32_t fortecrd_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
int count = 0;
@@ -408,7 +418,7 @@ uint32_t fortecar_state::screen_update(screen_device &screen, bitmap_rgb32 &bitm
return 0;
}
-void fortecar_state::fortecar_palette(palette_device &palette) const
+void fortecrd_state::fortecrd_palette(palette_device &palette) const
{
/* Video resistors...
@@ -463,7 +473,7 @@ R = 82 Ohms Pull Down.
* Misc R/W Handlers *
***********************************/
-void fortecar_state::ppi0_portc_w(uint8_t data)
+void fortecrd_state::ppi0_portc_w(uint8_t data)
{
/*
NM93CS56N Serial EEPROM
@@ -478,13 +488,13 @@ DOUT PPI_PC4
m_eeprom->clk_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE);
}
-uint8_t fortecar_state::ppi0_portc_r()
+uint8_t fortecrd_state::ppi0_portc_r()
{
// popmessage("%s",machine().describe_context());
return ((m_eeprom->do_read() << 4) & 0x10);
}
-void fortecar_state::ayporta_w(uint8_t data)
+void fortecrd_state::ayporta_w(uint8_t data)
{
/* System Lamps...
@@ -514,7 +524,7 @@ void fortecar_state::ayporta_w(uint8_t data)
}
-void fortecar_state::ayportb_w(uint8_t data)
+void fortecrd_state::ayportb_w(uint8_t data)
{
/*
@@ -529,12 +539,10 @@ trigger a reset.
Seems to work properly, but must be checked closely...
*/
- if (((data >> 7) & 0x01) == 0) /* check for bit7 */
+ if (((data >> 7) & 0x01) == 0) // check for bit7
{
m_watchdog->watchdog_reset();
}
-
-// logerror("AY port B write %02x\n",data);
}
@@ -542,22 +550,21 @@ Seems to work properly, but must be checked closely...
* Memory Map Information *
***********************************/
-void fortecar_state::fortecar_map(address_map &map)
+void fortecrd_state::fortecrd_map(address_map &map)
{
- map(0x0000, 0xbfff).rom();
- map(0xc000, 0xc7ff).rom();
+ map(0x0000, 0xc7ff).rom();
map(0xd000, 0xd7ff).ram().share("nvram");
map(0xd800, 0xffff).ram().share("vram");
}
-void fortecar_state::fortecar_ports(address_map &map)
+void fortecrd_state::fortecrd_ports(address_map &map)
{
map.global_mask(0xff);
map(0x20, 0x20).w("crtc", FUNC(mc6845_device::address_w)); // pc=444
map(0x21, 0x21).w("crtc", FUNC(mc6845_device::register_w));
map(0x40, 0x40).r("aysnd", FUNC(ay8910_device::data_r));
map(0x40, 0x41).w("aysnd", FUNC(ay8910_device::address_data_w));
- map(0x60, 0x63).rw("fcppi0", FUNC(i8255_device::read), FUNC(i8255_device::write));//M5L8255AP
+ map(0x60, 0x63).rw("fcppi0", FUNC(i8255_device::read), FUNC(i8255_device::write)); // M5L8255AP
// map(0x80, 0x81) //8251A UART
map(0xa0, 0xa0).rw("rtc", FUNC(v3021_device::read), FUNC(v3021_device::write));
map(0xa1, 0xa1).portr("DSW");
@@ -572,6 +579,7 @@ Error messages:
"FALSA PRUEBA NVR" (NVRAM new, no serial EEPROM connected)
"FALLO EN NVR" (NVRAM ok, no serial EEPROM connected)
"FALSA PRUEBA NVRAM PERMANENTE" (NVRAM new, serial EEPROM connected)
+"FALSA PRUEBA BOTONES" (Input ports error )
*/
@@ -580,8 +588,28 @@ Error messages:
* Input Ports *
***********************************/
-static INPUT_PORTS_START( fortecar )
- PORT_START("DSW") /* 8bit */
+static INPUT_PORTS_START( fortecrd )
+ PORT_START("INPUT")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH ) PORT_NAME("Red / Bet")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_LOW ) PORT_NAME("Black")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD1 )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD2 )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD3 )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_POKER_HOLD4 )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_POKER_HOLD5 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL )
+
+ PORT_START("SYSTEM")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Rear Door") PORT_CODE(KEYCODE_D) PORT_TOGGLE
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_NAME("Payout")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_NAME("Coin In")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // to trace
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_NAME("Note In")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Credits Key") PORT_CODE(KEYCODE_Q) PORT_TOGGLE
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Owner Key") PORT_CODE(KEYCODE_0) PORT_TOGGLE
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Rental Key") PORT_CODE(KEYCODE_9) PORT_TOGGLE
+
+ PORT_START("DSW")
PORT_DIPNAME( 0x01, 0x01, "DSW-1" ) PORT_DIPLOCATION("DSW:1")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
@@ -606,26 +634,6 @@ static INPUT_PORTS_START( fortecar )
PORT_DIPNAME( 0x80, 0x80, "DSW-8" ) PORT_DIPLOCATION("DSW:8")
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("INPUT") /* 8bit */
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH ) PORT_NAME("Red / Bet")
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_LOW ) PORT_NAME("Black")
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD1 )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD2 )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD3 )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_POKER_HOLD4 )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_POKER_HOLD5 )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL )
-
- PORT_START("SYSTEM") /* 8bit */
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Rear Door") PORT_CODE(KEYCODE_D) PORT_TOGGLE
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_NAME("Payout")
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_NAME("Coin In")
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* to trace */
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_NAME("Note In")
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Credits Key") PORT_CODE(KEYCODE_Q) PORT_TOGGLE
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Owner Key") PORT_CODE(KEYCODE_0) PORT_TOGGLE
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Rental Key") PORT_CODE(KEYCODE_9) PORT_TOGGLE
INPUT_PORTS_END
@@ -660,7 +668,7 @@ static const gfx_layout tiles8x8_layout_6bpp =
* Graphics Decode Information *
****************************************/
-static GFXDECODE_START( gfx_fortecar )
+static GFXDECODE_START( gfx_fortecrd )
GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout_3bpp, 0x000, 0x20 )
GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout_6bpp, 0x100, 0x04 )
GFXDECODE_END
@@ -670,9 +678,9 @@ GFXDECODE_END
* Machine Start & Reset *
***********************************/
-void fortecar_state::machine_reset()
+void fortecrd_state::machine_reset()
{
- /* apparently there's a random fill in there (checked thru trojan TODO: extract proper algorithm) */
+ // apparently there's a random fill in there (checked thru trojan)
for (int i = 0; i < m_vram.bytes(); i++)
m_vram[i] = machine().rand();
}
@@ -682,41 +690,41 @@ void fortecar_state::machine_reset()
* Machine Drivers *
***********************************/
-void fortecar_state::fortecar(machine_config &config)
+void fortecrd_state::fortecrd(machine_config &config)
{
- /* basic machine hardware */
- Z80(config, m_maincpu, CPU_CLOCK); /* 3 MHz, measured */
- m_maincpu->set_addrmap(AS_PROGRAM, &fortecar_state::fortecar_map);
- m_maincpu->set_addrmap(AS_IO, &fortecar_state::fortecar_ports);
+ // basic machine hardware
+ Z80(config, m_maincpu, CPU_CLOCK); // 3 MHz, measured
+ m_maincpu->set_addrmap(AS_PROGRAM, &fortecrd_state::fortecrd_map);
+ m_maincpu->set_addrmap(AS_IO, &fortecrd_state::fortecrd_ports);
- WATCHDOG_TIMER(config, m_watchdog).set_time(attotime::from_msec(200)); /* guess */
+ WATCHDOG_TIMER(config, m_watchdog).set_time(attotime::from_msec(200)); // guess
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
- /* video hardware */
+ // 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(640, 256);
- screen.set_visarea(0, 600-1, 0, 240-1); /* driven by CRTC */
- screen.set_screen_update(FUNC(fortecar_state::screen_update));
+ screen.set_visarea(0, 600-1, 0, 240-1); // driven by CRTC
+ screen.set_screen_update(FUNC(fortecrd_state::screen_update));
EEPROM_93C56_16BIT(config, "eeprom").default_value(0);
i8255_device &fcppi0(I8255A(config, "fcppi0"));
- /* Init with 0x9a... A, B and high C as input
- Serial Eprom connected to Port C */
+// PPI init with 0x9a... A, B and high C as input.
+// Serial Eprom connected to Port C.
fcppi0.in_pa_callback().set_ioport("SYSTEM");
fcppi0.in_pb_callback().set_ioport("INPUT");
- fcppi0.in_pc_callback().set(FUNC(fortecar_state::ppi0_portc_r));
- fcppi0.out_pc_callback().set(FUNC(fortecar_state::ppi0_portc_w));
+ fcppi0.in_pc_callback().set(FUNC(fortecrd_state::ppi0_portc_r));
+ fcppi0.out_pc_callback().set(FUNC(fortecrd_state::ppi0_portc_w));
V3021(config, "rtc");
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_fortecar);
- PALETTE(config, m_palette, FUNC(fortecar_state::fortecar_palette), 0x200);
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_fortecrd);
+ PALETTE(config, m_palette, FUNC(fortecrd_state::fortecrd_palette), 0x200);
- mc6845_device &crtc(MC6845(config, "crtc", CRTC_CLOCK)); /* 1.5 MHz, measured */
+ mc6845_device &crtc(MC6845(config, "crtc", CRTC_CLOCK)); // 1.5 MHz, measured
crtc.set_screen("screen");
crtc.set_show_border_area(false);
crtc.set_char_width(8);
@@ -724,9 +732,9 @@ void fortecar_state::fortecar(machine_config &config)
SPEAKER(config, "mono").front_center();
- ay8910_device &aysnd(AY8910(config, "aysnd", AY_CLOCK)); /* 1.5 MHz, measured */
- aysnd.port_a_write_callback().set(FUNC(fortecar_state::ayporta_w));
- aysnd.port_b_write_callback().set(FUNC(fortecar_state::ayportb_w));
+ ay8910_device &aysnd(AY8910(config, "aysnd", AY_CLOCK)); // 1.5 MHz, measured
+ aysnd.port_a_write_callback().set(FUNC(fortecrd_state::ayporta_w));
+ aysnd.port_b_write_callback().set(FUNC(fortecrd_state::ayportb_w));
aysnd.add_route(ALL_OUTPUTS, "mono", 0.50);
}
@@ -737,58 +745,41 @@ void fortecar_state::fortecar(machine_config &config)
ROM_START( fortecrd )
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "forte_card.u7", 0x00000, 0x010000, CRC(79fc6dd3) SHA1(5454f2ee12b62d573b61c54e48398f43332b000e) )
+ ROM_LOAD( "forte_card_sp.u7", 0x00000, 0x010000, CRC(79fc6dd3) SHA1(5454f2ee12b62d573b61c54e48398f43332b000e) )
ROM_REGION( 0x30000, "gfx1", 0 )
- ROM_LOAD( "forte_card.u38", 0x00000, 0x10000, CRC(258fb7bf) SHA1(cd75001fe40836b2dc229caddfc38f6076df7a79) )
- ROM_LOAD( "forte_card.u39", 0x10000, 0x10000, CRC(3d9c478e) SHA1(eb86115d1c36038f2c80cd116f5aeddd94036424) )
- ROM_LOAD( "forte_card.u40", 0x20000, 0x10000, CRC(9693bb83) SHA1(e3e3bc750c89a1edd1072ce3890b2ce498dec633) )
-
- ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */
- ROM_LOAD( "fortecrd_nvram.u6", 0x0000, 0x0800, CRC(7d3e7eb5) SHA1(788fe7adc381bcc6eaefed33f5aa1081340608a0) )
+ ROM_LOAD( "forte_card_sp.u38", 0x00000, 0x10000, CRC(258fb7bf) SHA1(cd75001fe40836b2dc229caddfc38f6076df7a79) )
+ ROM_LOAD( "forte_card_sp.u39", 0x10000, 0x10000, CRC(3d9c478e) SHA1(eb86115d1c36038f2c80cd116f5aeddd94036424) )
+ ROM_LOAD( "forte_card_sp.u40", 0x20000, 0x10000, CRC(9693bb83) SHA1(e3e3bc750c89a1edd1072ce3890b2ce498dec633) ) // identical to the english version
- ROM_REGION16_BE( 0x0100, "eeprom", 0 ) /* default serial EEPROM */
- ROM_LOAD16_WORD_SWAP( "forte_card_93cs56_serial_12345678.u13", 0x0000, 0x0100, CRC(2fc5961d) SHA1(f958c8b2b4e48cc6e5a607a6751acde5592bd27f) )
+ ROM_REGION16_BE( 0x0100, "eeprom", 0 ) // default serial EEPROM
+ ROM_LOAD16_WORD_SWAP( "forte_card_sp_93cs56_serial_12345678.u13", 0x0000, 0x0100, CRC(2fc5961d) SHA1(f958c8b2b4e48cc6e5a607a6751acde5592bd27f) )
ROM_REGION( 0x0200, "proms", 0 )
ROM_LOAD( "forte_card_82s147.u47", 0x0000, 0x0200, CRC(7e631818) SHA1(ac08b0de30260278af3a1c5dee5810d4304cb9ca) )
ROM_END
-ROM_START( fortecar )
+ROM_START( fortecrde )
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "fortecar.u7", 0x00000, 0x010000, CRC(2a4b3429) SHA1(8fa630dac949e758678a1a36b05b3412abe8ae16) )
+ ROM_LOAD( "forte_card_en.u7", 0x00000, 0x010000, CRC(2a4b3429) SHA1(8fa630dac949e758678a1a36b05b3412abe8ae16) )
ROM_REGION( 0x30000, "gfx1", 0 )
- ROM_LOAD( "fortecar.u38", 0x00000, 0x10000, CRC(c2090690) SHA1(f0aa8935b90a2ab6043555ece69f926372246648) )
- ROM_LOAD( "fortecar.u39", 0x10000, 0x10000, CRC(fc3ddf4f) SHA1(4a95b24c4edb67f6d59f795f86dfbd12899e01b0) )
- ROM_LOAD( "fortecar.u40", 0x20000, 0x10000, CRC(9693bb83) SHA1(e3e3bc750c89a1edd1072ce3890b2ce498dec633) )
+ ROM_LOAD( "forte_card_en.u38", 0x00000, 0x10000, CRC(c2090690) SHA1(f0aa8935b90a2ab6043555ece69f926372246648) )
+ ROM_LOAD( "forte_card_en.u39", 0x10000, 0x10000, CRC(fc3ddf4f) SHA1(4a95b24c4edb67f6d59f795f86dfbd12899e01b0) )
+ ROM_LOAD( "forte_card_en.u40", 0x20000, 0x10000, CRC(9693bb83) SHA1(e3e3bc750c89a1edd1072ce3890b2ce498dec633) )
- /* taken from the Spanish version, these are likely to be identical anyway */
- ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */
- ROM_LOAD( "fortecrd_nvram.u6", 0x0000, 0x0800, BAD_DUMP CRC(7d3e7eb5) SHA1(788fe7adc381bcc6eaefed33f5aa1081340608a0) )
-
- ROM_REGION16_BE( 0x0100, "eeprom", 0 ) /* default serial EEPROM */
- ROM_LOAD16_WORD_SWAP( "forte_card_93cs56_serial_12345678.u13", 0x0000, 0x0100, BAD_DUMP CRC(2fc5961d) SHA1(f958c8b2b4e48cc6e5a607a6751acde5592bd27f) )
+ ROM_REGION16_BE( 0x0100, "eeprom", 0 ) // default serial EEPROM
+ ROM_LOAD16_WORD_SWAP( "forte_card_en_93cs56_serial_12345678.u13", 0x0000, 0x0100, CRC(2f546bcd) SHA1(ffd610aa60515eda91bfbbeab8b4f88491f79fcf) )
ROM_REGION( 0x200, "proms", 0 )
- ROM_LOAD( "forte_card_82s147.u47", 0x0000, 0x0200, BAD_DUMP CRC(7e631818) SHA1(ac08b0de30260278af3a1c5dee5810d4304cb9ca) )
+ ROM_LOAD( "forte_card_82s147.u47", 0x0000, 0x0200, CRC(7e631818) SHA1(ac08b0de30260278af3a1c5dee5810d4304cb9ca) )
ROM_END
/***********************************
-* Driver Init *
-***********************************/
-
-void fortecar_state::init_fortecar()
-{
- // ...
-}
-
-
-/***********************************
* Game Drivers *
***********************************/
-// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME FLAGS LAYOUT
-GAMEL( 1994, fortecrd, 0, fortecar, fortecar, fortecar_state, init_fortecar, ROT0, "Fortex Ltd", "Forte Card (Ver 110, Spanish)", 0, layout_fortecrd )
-GAMEL( 1994, fortecar, fortecrd, fortecar, fortecar, fortecar_state, init_fortecar, ROT0, "Fortex Ltd", "Forte Card (Ver 103, English)", MACHINE_NOT_WORKING, layout_fortecrd )
+// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME FLAGS LAYOUT
+GAMEL( 1994, fortecrd, 0, fortecrd, fortecrd, fortecrd_state, empty_init, ROT0, "Fortex Ltd.", "Forte Card (Ver 110, Spanish)", 0, layout_fortecrd )
+GAMEL( 1994, fortecrde, fortecrd, fortecrd, fortecrd, fortecrd_state, empty_init, ROT0, "Fortex Ltd.", "Forte Card (Ver 103, English)", 0, layout_fortecrd )
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 3e2fd42afc6..8f5016a7122 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -13866,7 +13866,7 @@ pesadelo // (c) 1989 Forte II Games
@source:fortecar.cpp
fortecrd // (c) 1994, Fortex Ltd.
-fortecar // (c) 1994, Fortex Ltd.
+fortecrde // (c) 1994, Fortex Ltd.
@source:fp1100.cpp
fp1100 //