mirror of
https://github.com/holub/mame
synced 2025-06-06 12:53:46 +03:00
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]
This commit is contained in:
parent
e669b5ef46
commit
42a36976f1
@ -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_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_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */
|
||||
ROM_LOAD( "fortecrd_nvram.u6", 0x0000, 0x0800, 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, 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 )
|
||||
|
@ -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 //
|
||||
|
Loading…
Reference in New Issue
Block a user