mirror of
https://github.com/holub/mame
synced 2025-06-29 23:48:56 +03:00
Merge branch 'master' of https://github.com/mamedev/mame.git
This commit is contained in:
commit
fecfedd92f
@ -50,7 +50,7 @@
|
||||
*MP1604 ? 1981, Hanzawa Twinvader III/Tandy Cosmic Fire Away 3000 (? note: VFD-capable)
|
||||
@MP1801 TMS1700 1981, Tiger Ditto/Tandy Pocket Repeat (model 60-2152)
|
||||
@MP2105 TMS1370 1979, Gakken/Entex Poker (6005)
|
||||
*MP2139 TMS1370? 1982, Gakken Galaxy Invader 1000
|
||||
*MP2139 TMS1370 1982, Gakken Galaxy Invader 1000/Tandy Cosmic 1000 Fire Away
|
||||
@MP2726 TMS1040 1979, Tomy Break Up
|
||||
*MP2788 TMS1040? 1980, Bandai Flight Time (? note: VFD-capable)
|
||||
@MP3005 TMS1730 1989, Tiger Copy Cat (model 7-522)
|
||||
|
@ -107,8 +107,6 @@ uint8_t latch2400 = 0;
|
||||
|
||||
uint8_t diablo68_3c0000 = 0;
|
||||
|
||||
uint8_t sfortea_latch = 0;
|
||||
|
||||
|
||||
INPUT_PORTS_EXTERN( chessboard );
|
||||
|
||||
@ -134,10 +132,6 @@ public:
|
||||
uint8_t latch_data;
|
||||
DECLARE_WRITE8_MEMBER(write_polgar_IO);
|
||||
DECLARE_WRITE8_MEMBER(write_LCD_polgar);
|
||||
DECLARE_READ8_MEMBER(read_1ff1_sfortea);
|
||||
DECLARE_READ8_MEMBER(read_1ff0_sfortea);
|
||||
DECLARE_WRITE8_MEMBER(write_latch_sfortea);
|
||||
DECLARE_WRITE8_MEMBER(write_lcd_IO_sfortea);
|
||||
DECLARE_WRITE8_MEMBER(write_LCD_academy);
|
||||
// DECLARE_WRITE16_MEMBER(diablo68_aciawrite);
|
||||
// DECLARE_READ16_MEMBER(diablo68_aciaread);
|
||||
@ -181,8 +175,6 @@ public:
|
||||
DECLARE_DRIVER_INIT(polgar);
|
||||
DECLARE_MACHINE_START(polgar);
|
||||
DECLARE_MACHINE_RESET(polgar);
|
||||
DECLARE_MACHINE_START(sfortea);
|
||||
DECLARE_MACHINE_RESET(sfortea);
|
||||
DECLARE_MACHINE_START(van32);
|
||||
DECLARE_MACHINE_RESET(van16);
|
||||
DECLARE_MACHINE_RESET(monteciv);
|
||||
@ -268,69 +260,6 @@ WRITE8_MEMBER(polgar_state::write_LCD_polgar)
|
||||
|
||||
}
|
||||
|
||||
READ8_MEMBER(polgar_state::read_1ff1_sfortea)
|
||||
{
|
||||
uint8_t data;
|
||||
data = ioport("BUTTONS_SFOR1")->read();
|
||||
logerror("1ff0 data %02x\n",data);
|
||||
return 0;
|
||||
// return data;
|
||||
}
|
||||
|
||||
READ8_MEMBER(polgar_state::read_1ff0_sfortea)
|
||||
{
|
||||
uint8_t data;
|
||||
data = ioport("BUTTONS_SFOR2")->read();
|
||||
logerror("1ff0 data %02x\n",data);
|
||||
return 0;
|
||||
// return data;
|
||||
|
||||
// static uint8_t temp = 0;
|
||||
// temp++;
|
||||
// logerror("read 1ff0 %02x\n",temp);
|
||||
// printf("read 1ff0 %02x\n",temp);
|
||||
|
||||
// return (0x00);
|
||||
}
|
||||
|
||||
|
||||
|
||||
WRITE8_MEMBER(polgar_state::write_latch_sfortea)
|
||||
{
|
||||
sfortea_latch = data;
|
||||
logerror("latch data %02x\n",data);
|
||||
// printf("latch data %02x\n",data);
|
||||
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(polgar_state::write_lcd_IO_sfortea)
|
||||
{
|
||||
/* bits
|
||||
7
|
||||
6 paired with 5
|
||||
5
|
||||
4
|
||||
3 irq on off?
|
||||
2 select HD44780
|
||||
1
|
||||
0 LCD command/data select
|
||||
*/
|
||||
|
||||
|
||||
if (BIT(sfortea_latch,2))
|
||||
{
|
||||
if(BIT(sfortea_latch,0)) {
|
||||
m_lcdc->data_write(space, 0, data);
|
||||
logerror("LCD DTA = %02x\n",data);
|
||||
} else {
|
||||
if (BIT(data,7)) {
|
||||
if ((data & 0x7f) >= 0x40) data -= 56; // adjust for 16x1 display as 2 sets of 8
|
||||
}
|
||||
m_lcdc->control_write(space, 0, data);
|
||||
logerror("LCD CMD = %02x\n",data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(polgar_state::write_LCD_academy)
|
||||
{
|
||||
@ -994,11 +923,6 @@ MACHINE_START_MEMBER(polgar_state,polgar)
|
||||
common_chess_start();
|
||||
}
|
||||
|
||||
MACHINE_START_MEMBER(polgar_state,sfortea)
|
||||
{
|
||||
common_chess_start();
|
||||
}
|
||||
|
||||
MACHINE_START_MEMBER(polgar_state,diablo68)
|
||||
{
|
||||
common_chess_start();
|
||||
@ -1018,11 +942,6 @@ MACHINE_RESET_MEMBER(polgar_state,polgar)
|
||||
common_chess_start();
|
||||
}
|
||||
|
||||
MACHINE_RESET_MEMBER(polgar_state,sfortea)
|
||||
{
|
||||
common_chess_start();
|
||||
}
|
||||
|
||||
MACHINE_RESET_MEMBER(polgar_state,monteciv)
|
||||
{
|
||||
montecivtop = 0;
|
||||
@ -1074,16 +993,6 @@ static ADDRESS_MAP_START(polgar_mem , AS_PROGRAM, 8, polgar_state )
|
||||
AM_RANGE( 0x4000, 0xffff ) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START(sfortea_mem , AS_PROGRAM, 8, polgar_state )
|
||||
AM_RANGE( 0x0000, 0x1fef ) AM_RAM
|
||||
AM_RANGE( 0x1ff6, 0x1ff6 ) AM_WRITE(write_latch_sfortea) // IO control
|
||||
AM_RANGE( 0x1ff7, 0x1ff7 ) AM_WRITE(write_lcd_IO_sfortea) // LCD Char Reg.
|
||||
// AM_RANGE( 0x1ffc, 0x1fff ) AM_DEVREADWRITE_LEGACY("acia65c51", acia_6551_r,acia_6551_w)
|
||||
AM_RANGE( 0x1ff1, 0x1ff1 ) AM_READ(read_1ff1_sfortea )
|
||||
AM_RANGE( 0x1ff0, 0x1ff0 ) AM_READ(read_1ff0_sfortea )
|
||||
AM_RANGE( 0x2000, 0xffff ) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
static ADDRESS_MAP_START(gen32_mem, AS_PROGRAM, 32, polgar_state )
|
||||
|
||||
@ -1499,22 +1408,6 @@ static MACHINE_CONFIG_START( polgar, polgar_state )
|
||||
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_START( sfortea, polgar_state )
|
||||
MCFG_CPU_ADD("maincpu",M65C02,5000000)
|
||||
MCFG_CPU_PROGRAM_MAP(sfortea_mem)
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(60))
|
||||
MCFG_MACHINE_START_OVERRIDE(polgar_state, sfortea )
|
||||
MCFG_MACHINE_RESET_OVERRIDE(polgar_state, sfortea )
|
||||
MCFG_FRAGMENT_ADD( chess_common )
|
||||
|
||||
/* acia */
|
||||
// MCFG_MOS6551_ADD("acia65c51", XTAL_1_8432MHz, nullptr)
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_timer", polgar_state, cause_M6502_irq, attotime::from_hz(600))
|
||||
MCFG_TIMER_START_DELAY(attotime::from_hz(60))
|
||||
//MCFG_TIMER_DRIVER_ADD_PERIODIC("artwork_timer", polgar_state, mboard_update_artwork, attotime::from_hz(100))
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_START( alm32, polgar_state )
|
||||
MCFG_CPU_ADD("maincpu", M68020, XTAL_12MHz)
|
||||
MCFG_CPU_PROGRAM_MAP(alm32_mem)
|
||||
@ -1649,13 +1542,6 @@ ROM_START(polgar)
|
||||
ROM_LOAD("polgar.bin", 0x0000, 0x10000, CRC(88d55c0f) SHA1(e86d088ec3ac68deaf90f6b3b97e3e31b1515913))
|
||||
ROM_END
|
||||
|
||||
ROM_START(sfortea)
|
||||
ROM_REGION(0x18000,"maincpu",0)
|
||||
ROM_LOAD("sfalo.bin", 0x0000, 0x8000, CRC(86e0230a) SHA1(0d6e18a17e636b8c7292c8f331349d361892d1a8))
|
||||
ROM_LOAD("sfahi.bin", 0x8000, 0x8000, CRC(81c02746) SHA1(0bf68b68ade5a3263bead88da0a8965fc71483c1))
|
||||
ROM_LOAD("sfabook.bin", 0x10000, 0x8000, CRC(3e42cf7c) SHA1(b2faa36a127e08e5755167a25ed4a07f12d62957))
|
||||
ROM_END
|
||||
|
||||
ROM_START( alm16 )
|
||||
ROM_REGION16_BE( 0x20000, "maincpu", 0 )
|
||||
ROM_LOAD16_BYTE("alm16eve.bin", 0x00000, 0x10000,CRC(EE5B6EC4) SHA1(30920C1B9E16FFAE576DA5AFA0B56DA59ADA3DBB))
|
||||
@ -1667,20 +1553,6 @@ ROM_START( alm32 )
|
||||
ROM_LOAD("alm32.bin", 0x00000, 0x20000,CRC(38F4B305) SHA1(43459A057FF29248C74D656A036AC325202B9C15))
|
||||
ROM_END
|
||||
|
||||
ROM_START(sforteb)
|
||||
ROM_REGION(0x18000,"maincpu",0)
|
||||
ROM_LOAD("forte_b.lo", 0x0000, 0x8000, CRC(48bfe5d6) SHA1(323642686b6d2fb8db2b7d50c6cd431058078ce1))
|
||||
ROM_LOAD("forte_b.hi1", 0x8000, 0x8000, CRC(9778ca2c) SHA1(d8b88b9768a1a9171c68cbb0892b817d68d78351))
|
||||
ROM_LOAD("forte_b.hi0", 0x10000, 0x8000, CRC(bb07ad52) SHA1(30cf9005021ab2d7b03facdf2d3588bc94dc68a6))
|
||||
ROM_END
|
||||
|
||||
ROM_START(sforteba)
|
||||
ROM_REGION(0x18000,"maincpu",0)
|
||||
ROM_LOAD("forte b_l.bin", 0x0000, 0x8000, CRC(e3d194a1) SHA1(80457580d7c57e07895fd14bfdaf14b30952afca))
|
||||
ROM_LOAD("forte b_h.bin", 0x8000, 0x8000, CRC(dd824be8) SHA1(cd8666b6b525887f9fc48a730b71ceabcf07f3b9))
|
||||
ROM_LOAD("forte_b.hi0", 0x10000, 0x8000, BAD_DUMP CRC(bb07ad52) SHA1(30cf9005021ab2d7b03facdf2d3588bc94dc68a6))
|
||||
ROM_END
|
||||
|
||||
ROM_START(academy)
|
||||
ROM_REGION(0x10000,"maincpu",0)
|
||||
ROM_LOAD("acad8000.bin", 0x8000, 0x8000, CRC(a967922b) SHA1(1327903ff89bf96d72c930c400f367ae19e3ec68))
|
||||
@ -1699,14 +1571,6 @@ ROM_START(milano)
|
||||
ROM_END
|
||||
|
||||
|
||||
ROM_START(sfortec)
|
||||
ROM_REGION(0x18000,"maincpu",0)
|
||||
ROM_LOAD("sfclow.bin", 0x0000, 0x8000, CRC(f040cf30) SHA1(1fc1220b8ed67cdffa3866d230ce001721cf684f))
|
||||
ROM_LOAD("sfchi.bin", 0x8000, 0x8000, CRC(0f926b32) SHA1(9c7270ecb3f41dd9172a9a7928e6e04e64b2a340))
|
||||
ROM_LOAD("sfcbook.bin", 0x10000, 0x8000, CRC(c6a1419a) SHA1(017a0ffa9aa59438c879624a7ddea2071d1524b8))
|
||||
ROM_END
|
||||
|
||||
|
||||
ROM_START( lyon16 )
|
||||
ROM_REGION16_BE( 0x20000, "maincpu", 0 )
|
||||
ROM_LOAD16_BYTE("lyon16ev.bin", 0x00000, 0x10000,CRC(497BD41A) SHA1(3FFEFEEAC694F49997C10D248EC6A7AA932898A4))
|
||||
@ -1782,16 +1646,12 @@ DRIVER_INIT_MEMBER(polgar_state,polgar)
|
||||
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
|
||||
CONS( 1986, polgar, 0, 0, polgar, polgar, polgar_state, polgar, "Hegener & Glaser", "Mephisto Polgar Schachcomputer", MACHINE_NOT_WORKING | MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK)
|
||||
CONS( 1987, sfortea, 0, 0, sfortea, sfortea, driver_device, 0, "Novag", "Novag Super Forte Chess Computer (version A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1988, alm16, van16, 0, alm16, van16, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Almeria 68000", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1988, alm32, van16, 0, alm32, van32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Alimera 68020", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1988, sforteb, sfortea, 0, sfortea, sfortea, driver_device, 0, "Novag", "Novag Super Forte Chess Computer (version B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1988, sforteba, sfortea, 0, sfortea, sfortea, driver_device, 0, "Novag", "Novag Super Forte Chess Computer (version B, alt)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1989, academy, 0, 0, academy, academy, driver_device, 0, "Hegener & Glaser", "Mephisto Academy Schachcomputer", MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1989, megaiv, 0, 0, megaiv, megaiv, driver_device, 0, "Hegener & Glaser", "Mephisto Mega IV Schachcomputer", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1989, milano, polgar, 0, milano, polgar, polgar_state, polgar, "Hegener & Glaser", "Mephisto Milano Schachcomputer", MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
|
||||
//CONS( 1989, montec4, 0, 0, monteciv, monteciv, driver_device, 0, "Hegener & Glaser", "Mephisto Monte Carlo IV", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1989, sfortec, sfortea, 0, sfortea, sfortea, driver_device, 0, "Novag", "Novag Super Forte Chess Computer (version C)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1990, lyon16, van16, 0, alm16, van16, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Lyon 68000", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1990, lyon32, van16, 0, alm32, van32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Lyon 68020", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1990, monteciv, 0, 0, monteciv, monteciv, driver_device, 0, "Hegener & Glaser", "Mephisto Monte Carlo IV LE Schachcomputer", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK )
|
||||
|
@ -1,5 +1,6 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:hap
|
||||
// thanks-to:Berger
|
||||
/******************************************************************************
|
||||
|
||||
Novag generic 6502 based chess computer driver
|
||||
@ -24,8 +25,10 @@ Super Constellation Chess Computer (model 844):
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/m6502/m6502.h"
|
||||
#include "cpu/m6502/m65c02.h"
|
||||
#include "machine/nvram.h"
|
||||
#include "sound/beep.h"
|
||||
#include "video/hd44780.h"
|
||||
|
||||
// internal artwork
|
||||
#include "supercon.lh" // clickable
|
||||
@ -38,6 +41,7 @@ public:
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_beeper(*this, "beeper"),
|
||||
m_lcd(*this, "hd44780"),
|
||||
m_inp_matrix(*this, "IN.%u", 0),
|
||||
m_display_wait(33),
|
||||
m_display_maxy(1),
|
||||
@ -47,13 +51,9 @@ public:
|
||||
// devices/pointers
|
||||
required_device<cpu_device> m_maincpu;
|
||||
optional_device<beep_device> m_beeper;
|
||||
optional_device<hd44780_device> m_lcd;
|
||||
optional_ioport_array<8> m_inp_matrix;
|
||||
|
||||
DECLARE_WRITE8_MEMBER(supercon_1e_w);
|
||||
DECLARE_WRITE8_MEMBER(supercon_1f_w);
|
||||
DECLARE_READ8_MEMBER(supercon_1e_r);
|
||||
DECLARE_READ8_MEMBER(supercon_1f_r);
|
||||
|
||||
// misc common
|
||||
uint16_t m_inp_mux; // multiplexed keypad mask
|
||||
uint16_t m_led_select;
|
||||
@ -70,6 +70,8 @@ public:
|
||||
uint16_t m_display_segmask[0x20]; // if not 0, display matrix row is a digit, mask indicates connected segments
|
||||
uint32_t m_display_cache[0x20]; // (internal use)
|
||||
uint8_t m_display_decay[0x20][0x20]; // (internal use)
|
||||
|
||||
uint8_t m_lcd_control;
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
|
||||
void display_update();
|
||||
@ -77,6 +79,25 @@ public:
|
||||
void set_display_segmask(uint32_t digits, uint32_t mask);
|
||||
void display_matrix(int maxx, int maxy, uint32_t setx, uint32_t sety, bool update = true);
|
||||
|
||||
// Super Constellation
|
||||
DECLARE_WRITE8_MEMBER(supercon_1e_w);
|
||||
DECLARE_WRITE8_MEMBER(supercon_1f_w);
|
||||
DECLARE_READ8_MEMBER(supercon_1e_r);
|
||||
DECLARE_READ8_MEMBER(supercon_1f_r);
|
||||
|
||||
// Super Expert
|
||||
DECLARE_WRITE8_MEMBER(sexpert_leds_w);
|
||||
DECLARE_WRITE8_MEMBER(sexpert_mux_w);
|
||||
DECLARE_WRITE8_MEMBER(sexpert_lcd_control_w);
|
||||
DECLARE_WRITE8_MEMBER(sexpert_lcd_data_w);
|
||||
DECLARE_READ8_MEMBER(sexpert_lcd_data_r);
|
||||
DECLARE_READ8_MEMBER(sexpert_input1_r);
|
||||
DECLARE_READ8_MEMBER(sexpert_input2_r);
|
||||
DECLARE_PALETTE_INIT(sexpert);
|
||||
HD44780_PIXEL_UPDATE(sexpert_pixel_update);
|
||||
DECLARE_MACHINE_RESET(sexpert);
|
||||
DECLARE_DRIVER_INIT(sexpert);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
virtual void machine_reset() override;
|
||||
@ -96,6 +117,7 @@ void novag6502_state::machine_start()
|
||||
m_inp_mux = 0;
|
||||
m_led_select = 0;
|
||||
m_led_data = 0;
|
||||
m_lcd_control = 0;
|
||||
|
||||
// register for savestates
|
||||
save_item(NAME(m_display_maxy));
|
||||
@ -110,6 +132,7 @@ void novag6502_state::machine_start()
|
||||
save_item(NAME(m_inp_mux));
|
||||
save_item(NAME(m_led_select));
|
||||
save_item(NAME(m_led_data));
|
||||
save_item(NAME(m_lcd_control));
|
||||
}
|
||||
|
||||
void novag6502_state::machine_reset()
|
||||
@ -279,10 +302,104 @@ READ8_MEMBER(novag6502_state::supercon_1f_r)
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
Super Expert
|
||||
******************************************************************************/
|
||||
|
||||
// LCD
|
||||
|
||||
PALETTE_INIT_MEMBER(novag6502_state, sexpert)
|
||||
{
|
||||
palette.set_pen_color(0, rgb_t(138, 146, 148)); // background
|
||||
palette.set_pen_color(1, rgb_t(92, 83, 88)); // lcd pixel on
|
||||
palette.set_pen_color(2, rgb_t(131, 136, 139)); // lcd pixel off
|
||||
}
|
||||
|
||||
HD44780_PIXEL_UPDATE(novag6502_state::sexpert_pixel_update)
|
||||
{
|
||||
// char size is 5x8
|
||||
if (x > 4 || y > 7)
|
||||
return;
|
||||
|
||||
if (line < 2 && pos < 8)
|
||||
{
|
||||
// internal: (8+8)*1, external: 1*16
|
||||
bitmap.pix16(1 + y, 1 + line*8*6 + pos*6 + x) = state ? 1 : 2;
|
||||
}
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(novag6502_state::sexpert_lcd_control_w)
|
||||
{
|
||||
// d0: HD44780 RS
|
||||
// d1: HD44780 R/W
|
||||
// d2: HD44780 E
|
||||
m_lcd_control = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(novag6502_state::sexpert_lcd_data_w)
|
||||
{
|
||||
if (m_lcd_control & 4 && ~m_lcd_control & 2)
|
||||
m_lcd->write(space, m_lcd_control & 1, data);
|
||||
}
|
||||
|
||||
READ8_MEMBER(novag6502_state::sexpert_lcd_data_r)
|
||||
{
|
||||
// unused?
|
||||
return 0;
|
||||
}
|
||||
|
||||
// TTL/generic
|
||||
|
||||
WRITE8_MEMBER(novag6502_state::sexpert_leds_w)
|
||||
{
|
||||
// d0-d7: chessboard leds
|
||||
m_led_data = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(novag6502_state::sexpert_mux_w)
|
||||
{
|
||||
// d0: rom bankswitch
|
||||
membank("bank1")->set_entry(data & 1);
|
||||
|
||||
// d3: enable beeper
|
||||
m_beeper->set_state(data >> 3 & 1);
|
||||
|
||||
// d4-d7: 74145 to input mux/led select
|
||||
m_inp_mux = 1 << (data >> 4 & 0xf) & 0xff;
|
||||
}
|
||||
|
||||
READ8_MEMBER(novag6502_state::sexpert_input1_r)
|
||||
{
|
||||
// d0-d7: multiplexed inputs (chessboard squares)
|
||||
return ~read_inputs(8) & 0xff;
|
||||
}
|
||||
|
||||
READ8_MEMBER(novag6502_state::sexpert_input2_r)
|
||||
{
|
||||
// d0-d2: printer port
|
||||
// d5-d7: multiplexed inputs (side panel)
|
||||
return (read_inputs(8) >> 3 & 0xc0) ^ 0xff;
|
||||
}
|
||||
|
||||
MACHINE_RESET_MEMBER(novag6502_state, sexpert)
|
||||
{
|
||||
membank("bank1")->set_entry(0);
|
||||
novag6502_state::machine_reset();
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(novag6502_state, sexpert)
|
||||
{
|
||||
membank("bank1")->configure_entries(0, 2, memregion("maincpu")->base() + 0x8000, 0x8000);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
Address Maps
|
||||
******************************************************************************/
|
||||
|
||||
// Super Constellation
|
||||
|
||||
static ADDRESS_MAP_START( supercon_mem, AS_PROGRAM, 8, novag6502_state )
|
||||
AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("nvram")
|
||||
AM_RANGE(0x1c00, 0x1c00) AM_WRITENOP // printer/clock?
|
||||
@ -293,6 +410,24 @@ static ADDRESS_MAP_START( supercon_mem, AS_PROGRAM, 8, novag6502_state )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
// Super Expert
|
||||
|
||||
static ADDRESS_MAP_START( sexpert_mem, AS_PROGRAM, 8, novag6502_state )
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
AM_RANGE(0x0000, 0x1fef) AM_RAM // 8KB RAM, but RAM CE pin is deactivated on $1ff0-$1fff
|
||||
AM_RANGE(0x1ff0, 0x1ff0) AM_READ(sexpert_input1_r)
|
||||
AM_RANGE(0x1ff1, 0x1ff1) AM_READ(sexpert_input2_r)
|
||||
AM_RANGE(0x1ff2, 0x1ff2) AM_WRITENOP // printer port
|
||||
AM_RANGE(0x1ff3, 0x1ff3) AM_WRITENOP // printer port
|
||||
AM_RANGE(0x1ff4, 0x1ff4) AM_WRITE(sexpert_leds_w)
|
||||
AM_RANGE(0x1ff5, 0x1ff5) AM_WRITE(sexpert_mux_w)
|
||||
AM_RANGE(0x1ff6, 0x1ff6) AM_WRITE(sexpert_lcd_control_w)
|
||||
AM_RANGE(0x1ff7, 0x1ff7) AM_READWRITE(sexpert_lcd_data_r, sexpert_lcd_data_w)
|
||||
AM_RANGE(0x2000, 0x7fff) AM_ROM
|
||||
AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1")
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
Input Ports
|
||||
@ -380,6 +515,89 @@ static INPUT_PORTS_START( cb_buttons )
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Board Sensor")
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( cb_magnets )
|
||||
PORT_START("IN.0")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
|
||||
PORT_START("IN.1")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
|
||||
PORT_START("IN.2")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
|
||||
PORT_START("IN.3")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
|
||||
PORT_START("IN.4")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
|
||||
PORT_START("IN.5")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
|
||||
PORT_START("IN.6")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
|
||||
PORT_START("IN.7")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_TOGGLE PORT_NAME("Board Sensor")
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static INPUT_PORTS_START( supercon )
|
||||
PORT_INCLUDE( cb_buttons )
|
||||
|
||||
@ -417,6 +635,51 @@ static INPUT_PORTS_START( supercon )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static INPUT_PORTS_START( sexpert )
|
||||
PORT_INCLUDE( cb_magnets )
|
||||
|
||||
PORT_MODIFY("IN.0")
|
||||
PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_K)
|
||||
PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_I)
|
||||
PORT_BIT(0x400, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8)
|
||||
|
||||
PORT_MODIFY("IN.1")
|
||||
PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_J)
|
||||
PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_U)
|
||||
PORT_BIT(0x400, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7)
|
||||
|
||||
PORT_MODIFY("IN.2")
|
||||
PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H)
|
||||
PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Y)
|
||||
PORT_BIT(0x400, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6)
|
||||
|
||||
PORT_MODIFY("IN.3")
|
||||
PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G)
|
||||
PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T)
|
||||
PORT_BIT(0x400, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5)
|
||||
|
||||
PORT_MODIFY("IN.4")
|
||||
PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F)
|
||||
PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R)
|
||||
PORT_BIT(0x400, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4)
|
||||
|
||||
PORT_MODIFY("IN.5")
|
||||
PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_D)
|
||||
PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E)
|
||||
PORT_BIT(0x400, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3)
|
||||
|
||||
PORT_MODIFY("IN.6")
|
||||
PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S)
|
||||
PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W)
|
||||
PORT_BIT(0x400, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2)
|
||||
|
||||
PORT_MODIFY("IN.7")
|
||||
PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A)
|
||||
PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q)
|
||||
PORT_BIT(0x400, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1)
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
Machine Drivers
|
||||
@ -440,6 +703,42 @@ static MACHINE_CONFIG_START( supercon, novag6502_state )
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_START( sexpert, novag6502_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M65C02, XTAL_10MHz/2)
|
||||
MCFG_CPU_PERIODIC_INT_DRIVER(novag6502_state, irq0_line_hold, XTAL_32_768kHz/128)
|
||||
MCFG_CPU_PROGRAM_MAP(sexpert_mem)
|
||||
|
||||
MCFG_MACHINE_RESET_OVERRIDE(novag6502_state, sexpert)
|
||||
|
||||
/* video hardware */
|
||||
MCFG_SCREEN_ADD("screen", LCD)
|
||||
MCFG_SCREEN_REFRESH_RATE(60) // arbitrary
|
||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
|
||||
MCFG_SCREEN_SIZE(6*16+1, 10)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 6*16, 0, 10-1)
|
||||
MCFG_SCREEN_UPDATE_DEVICE("hd44780", hd44780_device, screen_update)
|
||||
MCFG_SCREEN_PALETTE("palette")
|
||||
MCFG_PALETTE_ADD("palette", 3)
|
||||
MCFG_PALETTE_INIT_OWNER(novag6502_state, sexpert)
|
||||
|
||||
|
||||
MCFG_HD44780_ADD("hd44780")
|
||||
MCFG_HD44780_LCD_SIZE(2, 8)
|
||||
MCFG_HD44780_PIXEL_UPDATE_CB(novag6502_state, sexpert_pixel_update)
|
||||
|
||||
//MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", novag6502_state, display_decay_tick, attotime::from_msec(1))
|
||||
//MCFG_DEFAULT_LAYOUT(layout_sexpert)
|
||||
|
||||
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
MCFG_SOUND_ADD("beeper", BEEP, XTAL_32_768kHz/32)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
@ -453,6 +752,35 @@ ROM_START( supercon )
|
||||
ROM_END
|
||||
|
||||
|
||||
ROM_START( sfortea )
|
||||
ROM_REGION( 0x18000, "maincpu", 0 )
|
||||
ROM_LOAD("sfalo.bin", 0x0000, 0x8000, CRC(86e0230a) SHA1(0d6e18a17e636b8c7292c8f331349d361892d1a8) )
|
||||
ROM_LOAD("sfahi.bin", 0x8000, 0x8000, CRC(81c02746) SHA1(0bf68b68ade5a3263bead88da0a8965fc71483c1) )
|
||||
ROM_LOAD("sfabook.bin", 0x10000, 0x8000, CRC(3e42cf7c) SHA1(b2faa36a127e08e5755167a25ed4a07f12d62957) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( sforteb )
|
||||
ROM_REGION( 0x18000, "maincpu", 0 )
|
||||
ROM_LOAD("forte_b.lo", 0x0000, 0x8000, CRC(48bfe5d6) SHA1(323642686b6d2fb8db2b7d50c6cd431058078ce1) )
|
||||
ROM_LOAD("forte_b.hi1", 0x8000, 0x8000, CRC(9778ca2c) SHA1(d8b88b9768a1a9171c68cbb0892b817d68d78351) )
|
||||
ROM_LOAD("forte_b.hi0", 0x10000, 0x8000, CRC(bb07ad52) SHA1(30cf9005021ab2d7b03facdf2d3588bc94dc68a6) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( sforteba )
|
||||
ROM_REGION( 0x18000, "maincpu", 0 )
|
||||
ROM_LOAD("forte b_l.bin", 0x0000, 0x8000, CRC(e3d194a1) SHA1(80457580d7c57e07895fd14bfdaf14b30952afca) )
|
||||
ROM_LOAD("forte b_h.bin", 0x8000, 0x8000, CRC(dd824be8) SHA1(cd8666b6b525887f9fc48a730b71ceabcf07f3b9) )
|
||||
ROM_LOAD("forte_b.hi0", 0x10000, 0x8000, BAD_DUMP CRC(bb07ad52) SHA1(30cf9005021ab2d7b03facdf2d3588bc94dc68a6) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( sfortec )
|
||||
ROM_REGION( 0x18000, "maincpu", 0 )
|
||||
ROM_LOAD("sfclow.bin", 0x0000, 0x8000, CRC(f040cf30) SHA1(1fc1220b8ed67cdffa3866d230ce001721cf684f) )
|
||||
ROM_LOAD("sfchi.bin", 0x8000, 0x8000, CRC(0f926b32) SHA1(9c7270ecb3f41dd9172a9a7928e6e04e64b2a340) )
|
||||
ROM_LOAD("sfcbook.bin", 0x10000, 0x8000, CRC(c6a1419a) SHA1(017a0ffa9aa59438c879624a7ddea2071d1524b8) )
|
||||
ROM_END
|
||||
|
||||
|
||||
ROM_START( sexpertc )
|
||||
ROM_REGION( 0x18000, "maincpu", 0 ) // Version 3.6 of firmware
|
||||
ROM_LOAD("seclow.bin", 0x0000, 0x8000, CRC(5a29105e) SHA1(be37bb29b530dbba847a5e8d27d81b36525e47f7) )
|
||||
@ -476,5 +804,10 @@ ROM_END
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
|
||||
CONS( 1984, supercon, 0, 0, supercon, supercon, driver_device, 0, "Novag", "Super Constellation", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||
|
||||
CONS( 1989, sexpertc, 0, 0, supercon, supercon, driver_device, 0, "Novag", "Novag Super Expert C Chess Computer", MACHINE_NO_SOUND|MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1988, sexpertb, sexpertc, 0, supercon, supercon, driver_device, 0, "Novag", "Novag Super Expert B Chess Computer", MACHINE_NO_SOUND|MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK )
|
||||
CONS( 1987, sfortea, 0, 0, sexpert, sexpert, novag6502_state, sexpert, "Novag", "Novag Super Forte Chess Computer (version A)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
|
||||
CONS( 1988, sforteb, sfortea, 0, sexpert, sexpert, novag6502_state, sexpert, "Novag", "Novag Super Forte Chess Computer (version B)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
|
||||
CONS( 1988, sforteba, sfortea, 0, sexpert, sexpert, novag6502_state, sexpert, "Novag", "Novag Super Forte Chess Computer (version B, alt)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
|
||||
CONS( 1989, sfortec, sfortea, 0, sexpert, sexpert, novag6502_state, sexpert, "Novag", "Novag Super Forte Chess Computer (version C)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
|
||||
|
||||
CONS( 1989, sexpertc, 0, 0, sexpert, sexpert, novag6502_state, sexpert, "Novag", "Novag Super Expert C Chess Computer", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
|
||||
CONS( 1988, sexpertb, sexpertc, 0, sexpert, sexpert, novag6502_state, sexpert, "Novag", "Novag Super Expert B Chess Computer", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
|
||||
|
@ -20497,10 +20497,6 @@ megaiv // 1989 Mephisto Mega IV Schachcomputer
|
||||
milano // 1989 Mephisto Milano Schachcomputer
|
||||
monteciv // 1990 Mephisto Monte Carlo IV LE Schachcomputer
|
||||
polgar // 1986 Mephisto Polgar Schachcomputer
|
||||
sfortea // 1987 Novag Super Forte A Chess Computer
|
||||
sforteb // 1988 Novag Super Forte B Chess Computer
|
||||
sforteba // 1988 Novag Super Forte B Chess Computer (ALT)
|
||||
sfortec // 1989 Novag Super Forte C Chess Computer
|
||||
van16 // 1991 Mephisto Vancouver 68000
|
||||
van32 // 1991 Mephisto Vancouver 68020
|
||||
|
||||
@ -29204,6 +29200,10 @@ raiders5t // UPL-85004 (c) 1985 Taito license
|
||||
@source:novag6502.cpp
|
||||
sexpertb //
|
||||
sexpertc //
|
||||
sfortea //
|
||||
sforteb //
|
||||
sforteba //
|
||||
sfortec //
|
||||
supercon //
|
||||
|
||||
@source:nsm.cpp
|
||||
|
Loading…
Reference in New Issue
Block a user