clean up some chess machines (no whatsnew)
This commit is contained in:
parent
43f00aa98f
commit
94bc36dc01
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -6204,6 +6204,7 @@ src/mess/includes/mac.h svneol=native#text/plain
|
||||
src/mess/includes/macpci.h svneol=native#text/plain
|
||||
src/mess/includes/mbc55x.h svneol=native#text/plain
|
||||
src/mess/includes/mbee.h svneol=native#text/plain
|
||||
src/mess/includes/mboard.h svneol=native#text/plain
|
||||
src/mess/includes/mc1000.h svneol=native#text/plain
|
||||
src/mess/includes/mc68328.h svneol=native#text/plain
|
||||
src/mess/includes/mc80.h svneol=native#text/plain
|
||||
@ -6941,7 +6942,6 @@ src/mess/machine/mb89352.h svneol=native#text/plain
|
||||
src/mess/machine/mbc55x.c svneol=native#text/plain
|
||||
src/mess/machine/mbee.c svneol=native#text/plain
|
||||
src/mess/machine/mboard.c svneol=native#text/plain
|
||||
src/mess/machine/mboard.h svneol=native#text/plain
|
||||
src/mess/machine/mc68328.c svneol=native#text/plain
|
||||
src/mess/machine/mc68328.h svneol=native#text/plain
|
||||
src/mess/machine/mc6843.c svneol=native#text/plain
|
||||
|
@ -50,14 +50,14 @@ R.Schaefer Oct 2010
|
||||
#include "cpu/m68000/m68000.h"
|
||||
#include "glasgow.lh"
|
||||
#include "sound/beep.h"
|
||||
#include "machine/mboard.h"
|
||||
#include "includes/mboard.h"
|
||||
|
||||
|
||||
class glasgow_state : public driver_device
|
||||
class glasgow_state : public mboard_state
|
||||
{
|
||||
public:
|
||||
glasgow_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
: mboard_state(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_beep(*this, BEEPER_TAG)
|
||||
{ }
|
||||
@ -293,7 +293,7 @@ void glasgow_state::machine_start()
|
||||
m_lcd_shift_counter = 3;
|
||||
beep_set_frequency(m_beep, 44);
|
||||
|
||||
mboard_savestate_register(machine());
|
||||
mboard_savestate_register();
|
||||
}
|
||||
|
||||
|
||||
@ -303,7 +303,7 @@ MACHINE_START_MEMBER(glasgow_state,dallas32)
|
||||
m_lcd_shift_counter = 3;
|
||||
beep_set_frequency(m_beep, 44);
|
||||
|
||||
mboard_savestate_register(machine());
|
||||
mboard_savestate_register();
|
||||
}
|
||||
|
||||
|
||||
@ -321,8 +321,8 @@ static ADDRESS_MAP_START(glasgow_mem, AS_PROGRAM, 16, glasgow_state)
|
||||
AM_RANGE(0x00010000, 0x00010001) AM_WRITE(glasgow_lcd_w)
|
||||
AM_RANGE(0x00010002, 0x00010003) AM_READWRITE(glasgow_keys_r,glasgow_keys_w)
|
||||
AM_RANGE(0x00010004, 0x00010005) AM_WRITE(glasgow_lcd_flag_w)
|
||||
AM_RANGE(0x00010006, 0x00010007) AM_READWRITE_LEGACY(mboard_read_board_16,mboard_write_LED_16)
|
||||
AM_RANGE(0x00010008, 0x00010009) AM_WRITE_LEGACY(mboard_write_board_16)
|
||||
AM_RANGE(0x00010006, 0x00010007) AM_READWRITE(mboard_read_board_16,mboard_write_LED_16)
|
||||
AM_RANGE(0x00010008, 0x00010009) AM_WRITE(mboard_write_board_16)
|
||||
AM_RANGE(0x0001c000, 0x0001ffff) AM_RAM // 16KB
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -333,10 +333,10 @@ static ADDRESS_MAP_START(amsterd_mem, AS_PROGRAM, 16, glasgow_state)
|
||||
AM_RANGE(0x00800002, 0x00800003) AM_WRITE(write_lcd)
|
||||
AM_RANGE(0x00800008, 0x00800009) AM_WRITE(write_lcd_flag)
|
||||
AM_RANGE(0x00800004, 0x00800005) AM_WRITE(write_irq_flag)
|
||||
AM_RANGE(0x00800010, 0x00800011) AM_WRITE_LEGACY(mboard_write_board_16)
|
||||
AM_RANGE(0x00800020, 0x00800021) AM_READ_LEGACY(mboard_read_board_16)
|
||||
AM_RANGE(0x00800010, 0x00800011) AM_WRITE(mboard_write_board_16)
|
||||
AM_RANGE(0x00800020, 0x00800021) AM_READ(mboard_read_board_16)
|
||||
AM_RANGE(0x00800040, 0x00800041) AM_READ(read_newkeys16)
|
||||
AM_RANGE(0x00800088, 0x00800089) AM_WRITE_LEGACY(mboard_write_LED_16)
|
||||
AM_RANGE(0x00800088, 0x00800089) AM_WRITE(mboard_write_LED_16)
|
||||
AM_RANGE(0x00ffc000, 0x00ffffff) AM_RAM // 16KB
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -348,10 +348,10 @@ static ADDRESS_MAP_START(dallas32_mem, AS_PROGRAM, 32, glasgow_state)
|
||||
AM_RANGE(0x00800000, 0x00800003) AM_WRITE(write_lcd32)
|
||||
AM_RANGE(0x00800004, 0x00800007) AM_WRITE(write_beeper32)
|
||||
AM_RANGE(0x00800008, 0x0080000B) AM_WRITE(write_lcd_flag32)
|
||||
AM_RANGE(0x00800010, 0x00800013) AM_WRITE_LEGACY(mboard_write_board_32)
|
||||
AM_RANGE(0x00800020, 0x00800023) AM_READ_LEGACY(mboard_read_board_32)
|
||||
AM_RANGE(0x00800010, 0x00800013) AM_WRITE(mboard_write_board_32)
|
||||
AM_RANGE(0x00800020, 0x00800023) AM_READ(mboard_read_board_32)
|
||||
AM_RANGE(0x00800040, 0x00800043) AM_READ(read_newkeys32)
|
||||
AM_RANGE(0x00800088, 0x0080008b) AM_WRITE_LEGACY(mboard_write_LED_32)
|
||||
AM_RANGE(0x00800088, 0x0080008b) AM_WRITE(mboard_write_LED_32)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static INPUT_PORTS_START( new_keyboard ) //Amsterdam, Dallas 32, Roma, Roma 32
|
||||
@ -517,7 +517,7 @@ static MACHINE_CONFIG_START( glasgow, glasgow_state )
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi_timer", glasgow_state, update_nmi, attotime::from_hz(50))
|
||||
MCFG_TIMER_ADD_PERIODIC("artwork_timer", mboard_update_artwork, attotime::from_hz(100))
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("artwork_timer", glasgow_state, mboard_update_artwork, attotime::from_hz(100))
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( amsterd, glasgow )
|
||||
|
@ -65,14 +65,14 @@ Mephisto 4 Turbo Kit 18mhz - (mm4tk)
|
||||
#include "sound/beep.h"
|
||||
//#include "mephisto.lh"
|
||||
|
||||
#include "machine/mboard.h"
|
||||
#include "includes/mboard.h"
|
||||
|
||||
|
||||
class mephisto_state : public driver_device
|
||||
class mephisto_state : public mboard_state
|
||||
{
|
||||
public:
|
||||
mephisto_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
: mboard_state(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_beep(*this, BEEPER_TAG)
|
||||
{ }
|
||||
@ -163,10 +163,10 @@ static ADDRESS_MAP_START( rebel5_mem, AS_PROGRAM, 8, mephisto_state )
|
||||
AM_RANGE( 0x0000, 0x1fff) AM_RAM // AM_BASE(m_p_ram)
|
||||
AM_RANGE( 0x2000, 0x2007) AM_WRITE(write_led) // Status LEDs+ buzzer
|
||||
AM_RANGE( 0x3000, 0x3007) AM_READ(read_keys) // Rebel 5.0
|
||||
AM_RANGE( 0x3000, 0x4000) AM_READ_LEGACY(mboard_read_board_8) // Chessboard
|
||||
AM_RANGE( 0x3000, 0x4000) AM_READ(mboard_read_board_8) // Chessboard
|
||||
AM_RANGE( 0x5000, 0x5000) AM_WRITE(write_lcd)
|
||||
AM_RANGE( 0x6000, 0x6000) AM_WRITE_LEGACY(mboard_write_LED_8) // Chessboard
|
||||
AM_RANGE( 0x7000, 0x7000) AM_WRITE_LEGACY(mboard_write_board_8) // Chessboard
|
||||
AM_RANGE( 0x6000, 0x6000) AM_WRITE(mboard_write_LED_8) // Chessboard
|
||||
AM_RANGE( 0x7000, 0x7000) AM_WRITE(mboard_write_board_8) // Chessboard
|
||||
AM_RANGE( 0x8000, 0xffff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -174,10 +174,10 @@ ADDRESS_MAP_END
|
||||
static ADDRESS_MAP_START( mephisto_mem, AS_PROGRAM, 8, mephisto_state )
|
||||
AM_RANGE( 0x0000, 0x1fff) AM_RAM //AM_BASE(m_p_ram)
|
||||
AM_RANGE( 0x2000, 0x2000) AM_WRITE(write_lcd)
|
||||
AM_RANGE( 0x2400, 0x2407) AM_WRITE_LEGACY(mboard_write_LED_8) // Chessboard
|
||||
AM_RANGE( 0x2800, 0x2800) AM_WRITE_LEGACY(mboard_write_board_8) // Chessboard
|
||||
AM_RANGE( 0x2400, 0x2407) AM_WRITE(mboard_write_LED_8) // Chessboard
|
||||
AM_RANGE( 0x2800, 0x2800) AM_WRITE(mboard_write_board_8) // Chessboard
|
||||
AM_RANGE( 0x2c00, 0x2c07) AM_READ(read_keys)
|
||||
AM_RANGE( 0x3000, 0x3000) AM_READ_LEGACY(mboard_read_board_8) // Chessboard
|
||||
AM_RANGE( 0x3000, 0x3000) AM_READ(mboard_read_board_8) // Chessboard
|
||||
AM_RANGE( 0x3400, 0x3407) AM_WRITE(write_led) // Status LEDs+ buzzer
|
||||
AM_RANGE( 0x3800, 0x3800) AM_WRITE(mephisto_NMI) // NMI enable
|
||||
AM_RANGE( 0x4000, 0x7fff) AM_ROM // Opening Library
|
||||
@ -188,10 +188,10 @@ static ADDRESS_MAP_START( mm2_mem, AS_PROGRAM, 8, mephisto_state )
|
||||
AM_RANGE( 0x0000, 0x0fff) AM_RAM //AM_BASE(m_p_ram)
|
||||
AM_RANGE( 0x1000, 0x1007) AM_WRITE(write_led_mm2) //Status LEDs
|
||||
AM_RANGE( 0x1800, 0x1807) AM_READ(read_keys)
|
||||
AM_RANGE( 0x2000, 0x2000) AM_READ_LEGACY(mboard_read_board_8) //Chessboard
|
||||
AM_RANGE( 0x2000, 0x2000) AM_READ(mboard_read_board_8) //Chessboard
|
||||
AM_RANGE( 0x2800, 0x2800) AM_WRITE(write_lcd)
|
||||
AM_RANGE( 0x3000, 0x3000) AM_WRITE_LEGACY(mboard_write_LED_8) //Chessboard
|
||||
AM_RANGE( 0x3800, 0x3800) AM_WRITE_LEGACY(mboard_write_board_8) //Chessboard
|
||||
AM_RANGE( 0x3000, 0x3000) AM_WRITE(mboard_write_LED_8) //Chessboard
|
||||
AM_RANGE( 0x3800, 0x3800) AM_WRITE(mboard_write_board_8) //Chessboard
|
||||
AM_RANGE( 0x4000, 0x7fff) AM_ROM // Opening Library ?
|
||||
AM_RANGE( 0x8000, 0xffff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
@ -361,7 +361,7 @@ void mephisto_state::machine_start()
|
||||
{
|
||||
m_lcd_shift_counter = 3;
|
||||
m_allowNMI = 1;
|
||||
mboard_savestate_register(machine());
|
||||
mboard_savestate_register();
|
||||
}
|
||||
|
||||
MACHINE_START_MEMBER(mephisto_state,mm2)
|
||||
@ -369,7 +369,7 @@ MACHINE_START_MEMBER(mephisto_state,mm2)
|
||||
m_lcd_shift_counter = 3;
|
||||
m_led7=0xff;
|
||||
|
||||
mboard_savestate_register(machine());
|
||||
mboard_savestate_register();
|
||||
}
|
||||
|
||||
|
||||
@ -411,7 +411,7 @@ static MACHINE_CONFIG_START( mephisto, mephisto_state )
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi_timer", mephisto_state, update_nmi, attotime::from_hz(600))
|
||||
MCFG_TIMER_ADD_PERIODIC("artwork_timer", mboard_update_artwork, attotime::from_hz(100))
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("artwork_timer", mephisto_state, mboard_update_artwork, attotime::from_hz(100))
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( rebel5, mephisto )
|
||||
|
@ -95,7 +95,7 @@ Bit 5+6 LED 1-8 enable
|
||||
|
||||
#include "rendlay.h"
|
||||
|
||||
#include "machine/mboard.h"
|
||||
#include "includes/mboard.h"
|
||||
#include "machine/nvram.h"
|
||||
|
||||
//static UINT16 unknown2_data = 0;
|
||||
@ -124,11 +124,11 @@ INPUT_PORTS_EXTERN( chessboard );
|
||||
|
||||
UINT8 lcd32_char;
|
||||
|
||||
class polgar_state : public driver_device
|
||||
class polgar_state : public mboard_state
|
||||
{
|
||||
public:
|
||||
polgar_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag) { }
|
||||
: mboard_state(mconfig, type, tag) { }
|
||||
|
||||
UINT8 led_status;
|
||||
UINT8 lcd_char;
|
||||
@ -200,6 +200,7 @@ public:
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(timer_update_irq6);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(timer_update_irq2);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(timer_update_irq_academy);
|
||||
void common_chess_start();
|
||||
};
|
||||
|
||||
static HD44780_INTERFACE( chess_display )
|
||||
@ -234,17 +235,6 @@ static UINT8 convert_imputmask(UINT8 input)
|
||||
}
|
||||
}
|
||||
|
||||
static int get_first_cleared_bit(UINT8 data)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
if (!BIT(data, i))
|
||||
return i;
|
||||
|
||||
return NOT_VALID;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(polgar_state::write_polgar_IO)
|
||||
{
|
||||
int i;
|
||||
@ -1024,11 +1014,10 @@ MACHINE_START_MEMBER(polgar_state,van32)
|
||||
|
||||
MACHINE_START_MEMBER(polgar_state,risc)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
static void common_chess_start(void)
|
||||
void polgar_state::common_chess_start()
|
||||
{
|
||||
mboard_set_border_pieces();
|
||||
mboard_set_board();
|
||||
@ -1037,45 +1026,38 @@ static void common_chess_start(void)
|
||||
MACHINE_START_MEMBER(polgar_state,polgar)
|
||||
{
|
||||
common_chess_start();
|
||||
mboard_savestate_register(machine());
|
||||
mboard_savestate_register();
|
||||
}
|
||||
|
||||
MACHINE_START_MEMBER(polgar_state,sfortea)
|
||||
{
|
||||
common_chess_start();
|
||||
mboard_savestate_register(machine());
|
||||
mboard_savestate_register();
|
||||
}
|
||||
|
||||
MACHINE_START_MEMBER(polgar_state,diablo68)
|
||||
{
|
||||
|
||||
common_chess_start();
|
||||
|
||||
}
|
||||
|
||||
MACHINE_START_MEMBER(polgar_state,van16)
|
||||
{
|
||||
|
||||
mboard_savestate_register(machine());
|
||||
|
||||
mboard_savestate_register();
|
||||
}
|
||||
|
||||
MACHINE_RESET_MEMBER(polgar_state,van16)
|
||||
{
|
||||
common_chess_start();
|
||||
|
||||
}
|
||||
|
||||
MACHINE_RESET_MEMBER(polgar_state,polgar)
|
||||
{
|
||||
common_chess_start();
|
||||
|
||||
}
|
||||
|
||||
MACHINE_RESET_MEMBER(polgar_state,sfortea)
|
||||
{
|
||||
common_chess_start();
|
||||
|
||||
}
|
||||
|
||||
MACHINE_RESET_MEMBER(polgar_state,monteciv)
|
||||
@ -1119,9 +1101,9 @@ GFXDECODE_END
|
||||
|
||||
static ADDRESS_MAP_START(polgar_mem , AS_PROGRAM, 8, polgar_state )
|
||||
AM_RANGE( 0x0000, 0x1fff ) AM_RAM
|
||||
AM_RANGE( 0x2400, 0x2400 ) AM_WRITE_LEGACY(mboard_write_LED_8 ) // Chessboard
|
||||
AM_RANGE( 0x2800, 0x2800 ) AM_WRITE_LEGACY(mboard_write_board_8) // Chessboard
|
||||
AM_RANGE( 0x3000, 0x3000 ) AM_READ_LEGACY(mboard_read_board_8 ) // Chessboard
|
||||
AM_RANGE( 0x2400, 0x2400 ) AM_WRITE(mboard_write_LED_8 ) // Chessboard
|
||||
AM_RANGE( 0x2800, 0x2800 ) AM_WRITE(mboard_write_board_8) // Chessboard
|
||||
AM_RANGE( 0x3000, 0x3000 ) AM_READ(mboard_read_board_8 ) // Chessboard
|
||||
AM_RANGE( 0x3400, 0x3405 ) AM_WRITE(polgar_write_LED) // Function LEDs
|
||||
AM_RANGE( 0x2c00, 0x2c07 ) AM_READ(read_keys)
|
||||
AM_RANGE( 0x2004, 0x2004 ) AM_WRITE(write_polgar_IO ) // LCD Instr. Reg + Beeper
|
||||
@ -1144,11 +1126,11 @@ static ADDRESS_MAP_START(gen32_mem, AS_PROGRAM, 32, polgar_state )
|
||||
|
||||
AM_RANGE( 0x00000000, 0x0003ffff ) AM_ROM
|
||||
|
||||
AM_RANGE( 0xc0000000 , 0xc0000003 ) AM_READ_LEGACY(mboard_read_board_32 )
|
||||
AM_RANGE( 0xc8000000 , 0xc8000003 ) AM_WRITE_LEGACY(mboard_write_board_32 )
|
||||
AM_RANGE( 0xc8000004 , 0xc8000007 ) AM_WRITE_LEGACY(mboard_write_board_32 )
|
||||
AM_RANGE( 0xd0000000 , 0xd0000003 ) AM_WRITE_LEGACY(mboard_write_LED_32 )
|
||||
AM_RANGE( 0xd0000004 , 0xd0000007 ) AM_WRITE_LEGACY(mboard_write_LED_32 )
|
||||
AM_RANGE( 0xc0000000 , 0xc0000003 ) AM_READ(mboard_read_board_32 )
|
||||
AM_RANGE( 0xc8000000 , 0xc8000003 ) AM_WRITE(mboard_write_board_32 )
|
||||
AM_RANGE( 0xc8000004 , 0xc8000007 ) AM_WRITE(mboard_write_board_32 )
|
||||
AM_RANGE( 0xd0000000 , 0xd0000003 ) AM_WRITE(mboard_write_LED_32 )
|
||||
AM_RANGE( 0xd0000004 , 0xd0000007 ) AM_WRITE(mboard_write_LED_32 )
|
||||
AM_RANGE( 0xf0000004 , 0xf0000013 ) AM_READ(read_buttons_gen32 )
|
||||
AM_RANGE( 0xe0000000 , 0xe0000003 ) AM_WRITE(write_LCD_data_32 )
|
||||
AM_RANGE( 0xe0000010 , 0xe0000013 ) AM_WRITE(write_IOenables_32 )
|
||||
@ -1179,9 +1161,9 @@ static ADDRESS_MAP_START(van32_mem, AS_PROGRAM, 32, polgar_state )
|
||||
|
||||
AM_RANGE( 0x00000000, 0x0003ffff ) AM_ROM
|
||||
|
||||
AM_RANGE( 0x800000fc , 0x800000ff ) AM_READ_LEGACY(mboard_read_board_32 )
|
||||
AM_RANGE( 0x88000000 , 0x88000007 ) AM_WRITE_LEGACY(mboard_write_board_32 )
|
||||
AM_RANGE( 0x90000000 , 0x90000007 ) AM_WRITE_LEGACY(mboard_write_LED_32 )
|
||||
AM_RANGE( 0x800000fc , 0x800000ff ) AM_READ(mboard_read_board_32 )
|
||||
AM_RANGE( 0x88000000 , 0x88000007 ) AM_WRITE(mboard_write_board_32 )
|
||||
AM_RANGE( 0x90000000 , 0x90000007 ) AM_WRITE(mboard_write_LED_32 )
|
||||
AM_RANGE( 0x800000ec , 0x800000ff ) AM_READ(read_buttons_van32 )
|
||||
AM_RANGE( 0xa0000000 , 0xa0000003 ) AM_WRITE(write_LCD_data_32 )
|
||||
AM_RANGE( 0xa0000010 , 0xa0000013 ) AM_WRITE(write_IOenables_32 )
|
||||
@ -1199,9 +1181,9 @@ static ADDRESS_MAP_START(alm32_mem, AS_PROGRAM, 32, polgar_state )
|
||||
|
||||
AM_RANGE( 0x00000000, 0x0001ffff ) AM_ROM
|
||||
|
||||
AM_RANGE( 0x800000fc , 0x800000ff ) AM_READ_LEGACY(mboard_read_board_32 )
|
||||
AM_RANGE( 0x88000000 , 0x88000007 ) AM_WRITE_LEGACY(mboard_write_board_32 )
|
||||
AM_RANGE( 0x90000000 , 0x90000007 ) AM_WRITE_LEGACY(mboard_write_LED_32 )
|
||||
AM_RANGE( 0x800000fc , 0x800000ff ) AM_READ(mboard_read_board_32 )
|
||||
AM_RANGE( 0x88000000 , 0x88000007 ) AM_WRITE(mboard_write_board_32 )
|
||||
AM_RANGE( 0x90000000 , 0x90000007 ) AM_WRITE(mboard_write_LED_32 )
|
||||
AM_RANGE( 0x800000ec , 0x800000ff ) AM_READ(read_buttons_van32 )
|
||||
AM_RANGE( 0xa0000000 , 0xa0000003 ) AM_WRITE(write_LCD_data_32 )
|
||||
AM_RANGE( 0xa0000010 , 0xa0000013 ) AM_WRITE(write_IOenables_32 )
|
||||
@ -1227,9 +1209,9 @@ static ADDRESS_MAP_START(van16_mem, AS_PROGRAM, 16, polgar_state )
|
||||
|
||||
AM_RANGE( 0x000000, 0x03ffff ) AM_ROM
|
||||
|
||||
AM_RANGE( 0xc00000 , 0xc00001 ) AM_READ_LEGACY(mboard_read_board_16 )
|
||||
AM_RANGE( 0xc80000 , 0xc80001 ) AM_WRITE_LEGACY(mboard_write_board_16 )
|
||||
AM_RANGE( 0xd00000 , 0xd00001 ) AM_WRITE_LEGACY(mboard_write_LED_16 )
|
||||
AM_RANGE( 0xc00000 , 0xc00001 ) AM_READ(mboard_read_board_16 )
|
||||
AM_RANGE( 0xc80000 , 0xc80001 ) AM_WRITE(mboard_write_board_16 )
|
||||
AM_RANGE( 0xd00000 , 0xd00001 ) AM_WRITE(mboard_write_LED_16 )
|
||||
AM_RANGE( 0xf00000 , 0xf00009 ) AM_READ(read_buttons_van16 )
|
||||
AM_RANGE( 0xd80000 , 0xd80001 ) AM_WRITE(write_LCD_data )
|
||||
AM_RANGE( 0xd80008 , 0xd80009 ) AM_WRITE(write_IOenables )
|
||||
@ -1246,9 +1228,9 @@ static ADDRESS_MAP_START(alm16_mem, AS_PROGRAM, 16, polgar_state )
|
||||
|
||||
AM_RANGE( 0x000000, 0x01ffff ) AM_ROM
|
||||
|
||||
AM_RANGE( 0xc00000 , 0xc00001 ) AM_READ_LEGACY(mboard_read_board_16 )
|
||||
AM_RANGE( 0xc80000 , 0xc80001 ) AM_WRITE_LEGACY(mboard_write_board_16 )
|
||||
AM_RANGE( 0xd00000 , 0xd00001 ) AM_WRITE_LEGACY(mboard_write_LED_16 )
|
||||
AM_RANGE( 0xc00000 , 0xc00001 ) AM_READ(mboard_read_board_16 )
|
||||
AM_RANGE( 0xc80000 , 0xc80001 ) AM_WRITE(mboard_write_board_16 )
|
||||
AM_RANGE( 0xd00000 , 0xd00001 ) AM_WRITE(mboard_write_LED_16 )
|
||||
AM_RANGE( 0xf00000 , 0xf00009 ) AM_READ(read_buttons_van16 )
|
||||
AM_RANGE( 0xd80000 , 0xd80001 ) AM_WRITE(write_LCD_data )
|
||||
AM_RANGE( 0xd80008 , 0xd80009 ) AM_WRITE(write_IOenables )
|
||||
@ -1278,7 +1260,7 @@ static ADDRESS_MAP_START(academy_mem , AS_PROGRAM, 8, polgar_state )
|
||||
AM_RANGE( 0x0000, 0x1fff ) AM_RAM
|
||||
AM_RANGE( 0x2400, 0x2400 ) AM_READ(read_keys_board_academy )
|
||||
AM_RANGE( 0x2800, 0x2800 ) AM_WRITE(academy_write_board ) // Chessboard
|
||||
AM_RANGE( 0x2c00, 0x2c00 ) AM_WRITE_LEGACY(mboard_write_LED_8 ) // Chessboard
|
||||
AM_RANGE( 0x2c00, 0x2c00 ) AM_WRITE(mboard_write_LED_8 ) // Chessboard
|
||||
AM_RANGE( 0x3002, 0x3002 ) AM_WRITE(beep_academy )
|
||||
AM_RANGE( 0x3001, 0x3001 ) AM_WRITE(academy_inhibitNMI )
|
||||
AM_RANGE( 0x3400, 0x3400 ) AM_WRITE(academy_write_LED )
|
||||
@ -1290,7 +1272,7 @@ static ADDRESS_MAP_START(monteciv_mem , AS_PROGRAM, 8, polgar_state )
|
||||
AM_RANGE( 0x0000, 0x1fff ) AM_RAM
|
||||
AM_RANGE( 0x2400, 0x2400 ) AM_READ(read_keys_board_monteciv )
|
||||
AM_RANGE( 0x2800, 0x2800 ) AM_WRITE(academy_write_board ) // Chessboard
|
||||
AM_RANGE( 0x2c00, 0x2c00 ) AM_WRITE_LEGACY(mboard_write_LED_8 ) // Chessboard
|
||||
AM_RANGE( 0x2c00, 0x2c00 ) AM_WRITE(mboard_write_LED_8 ) // Chessboard
|
||||
AM_RANGE( 0x3400, 0x3400 ) AM_WRITE(academy_write_LED ) // Status LEDs
|
||||
AM_RANGE( 0x3000, 0x3001 ) AM_WRITE(monteciv_select_line ) // Select Keyline
|
||||
AM_RANGE( 0x3002, 0x3002 ) AM_WRITE(beep_academy )
|
||||
@ -1306,7 +1288,7 @@ static ADDRESS_MAP_START(megaiv_mem , AS_PROGRAM, 8, polgar_state )
|
||||
AM_RANGE( 0x0000, 0x1fff ) AM_RAM
|
||||
/// AM_RANGE( 0x2400, 0x2400 ) AM_READ(read_keys_board_monteciv )
|
||||
AM_RANGE( 0x6800, 0x6800 ) AM_WRITE(academy_write_board ) // 2800 // Chessboard
|
||||
/// AM_RANGE( 0x2c00, 0x2c00 ) AM_WRITE_LEGACY(mboard_write_LED_8 ) // Chessboard
|
||||
/// AM_RANGE( 0x2c00, 0x2c00 ) AM_WRITE(mboard_write_LED_8 ) // Chessboard
|
||||
/// AM_RANGE( 0x3400, 0x3400 ) AM_WRITE(academy_write_LED ) // Status LEDs
|
||||
AM_RANGE( 0x4400, 0x4400 ) AM_WRITE(megaiv_write_LED ) // 2400 // Select Keyline
|
||||
AM_RANGE( 0x7000, 0x7001 ) AM_WRITE(megaiv_IO ) // Select Keyline
|
||||
@ -1567,7 +1549,7 @@ static MACHINE_CONFIG_START( polgar, polgar_state )
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_timer", polgar_state, cause_nmi, attotime::from_hz(600))
|
||||
MCFG_TIMER_START_DELAY(attotime::from_hz(60))
|
||||
MCFG_TIMER_ADD_PERIODIC("artwork_timer", mboard_update_artwork, attotime::from_hz(100))
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("artwork_timer", polgar_state, mboard_update_artwork, attotime::from_hz(100))
|
||||
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
@ -1584,7 +1566,7 @@ static MACHINE_CONFIG_START( sfortea, polgar_state )
|
||||
|
||||
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_ADD_PERIODIC("artwork_timer", mboard_update_artwork, attotime::from_hz(100))
|
||||
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 )
|
||||
@ -1593,7 +1575,7 @@ static MACHINE_CONFIG_START( alm32, polgar_state )
|
||||
MCFG_MACHINE_START_OVERRIDE(polgar_state,van32)
|
||||
MCFG_MACHINE_RESET_OVERRIDE(polgar_state,van16)
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("int_timer", polgar_state, timer_update_irq6, attotime::from_hz(750))
|
||||
MCFG_TIMER_ADD_PERIODIC("artwork_timer", mboard_update_artwork, attotime::from_hz(120))
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("artwork_timer", polgar_state, mboard_update_artwork, attotime::from_hz(120))
|
||||
|
||||
MCFG_FRAGMENT_ADD( chess_common )
|
||||
MCFG_NVRAM_ADD_0FILL("nvram")
|
||||
@ -1626,7 +1608,7 @@ static MACHINE_CONFIG_START( monteciv, polgar_state )
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_timer", polgar_state, cause_nmi, attotime::from_hz(600))
|
||||
MCFG_TIMER_ADD_PERIODIC("artwork_timer", mboard_update_artwork, attotime::from_hz(100))
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("artwork_timer", polgar_state, mboard_update_artwork, attotime::from_hz(100))
|
||||
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
@ -1647,7 +1629,7 @@ static MACHINE_CONFIG_START( diablo68, polgar_state )
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("int_timer", polgar_state, timer_update_irq2, attotime::from_hz(60))
|
||||
MCFG_TIMER_START_DELAY(attotime::from_hz(30))
|
||||
MCFG_TIMER_ADD_PERIODIC("artwork_timer", mboard_update_artwork, attotime::from_hz(120))
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("artwork_timer", polgar_state, mboard_update_artwork, attotime::from_hz(120))
|
||||
|
||||
|
||||
MACHINE_CONFIG_END
|
||||
@ -1659,7 +1641,7 @@ static MACHINE_CONFIG_START( van16, polgar_state )
|
||||
MCFG_MACHINE_RESET_OVERRIDE(polgar_state,van16)
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("int_timer", polgar_state, timer_update_irq6, attotime::from_hz(600))
|
||||
//MCFG_TIMER_DRIVER_ADD_PERIODIC("int_timer", polgar_state, timer_update_irq6, attotime::from_hz(587))
|
||||
MCFG_TIMER_ADD_PERIODIC("artwork_timer", mboard_update_artwork, attotime::from_hz(120))
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("artwork_timer", polgar_state, mboard_update_artwork, attotime::from_hz(120))
|
||||
MCFG_FRAGMENT_ADD( chess_common )
|
||||
MCFG_NVRAM_ADD_0FILL("nvram")
|
||||
|
||||
@ -1676,7 +1658,7 @@ static MACHINE_CONFIG_START( van32, polgar_state )
|
||||
MCFG_MACHINE_START_OVERRIDE(polgar_state,van32)
|
||||
MCFG_MACHINE_RESET_OVERRIDE(polgar_state,van16)
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("int_timer", polgar_state, timer_update_irq6, attotime::from_hz(750))
|
||||
MCFG_TIMER_ADD_PERIODIC("artwork_timer", mboard_update_artwork, attotime::from_hz(120))
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("artwork_timer", polgar_state, mboard_update_artwork, attotime::from_hz(120))
|
||||
|
||||
MCFG_FRAGMENT_ADD( chess_common )
|
||||
MCFG_NVRAM_ADD_0FILL("nvram")
|
||||
@ -1688,7 +1670,7 @@ static MACHINE_CONFIG_START( risc, polgar_state )
|
||||
MCFG_CPU_PROGRAM_MAP(risc_mem)
|
||||
MCFG_MACHINE_START_OVERRIDE(polgar_state,risc)
|
||||
MCFG_MACHINE_RESET_OVERRIDE(polgar_state,van16)
|
||||
MCFG_TIMER_ADD_PERIODIC("artwork_timer", mboard_update_artwork, attotime::from_hz(120))
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("artwork_timer", polgar_state, mboard_update_artwork, attotime::from_hz(120))
|
||||
|
||||
MCFG_FRAGMENT_ADD( chess_common )
|
||||
// MCFG_NVRAM_ADD_0FILL("nvram")
|
||||
@ -1702,7 +1684,7 @@ static MACHINE_CONFIG_START( gen32, polgar_state )
|
||||
MCFG_MACHINE_RESET_OVERRIDE(polgar_state,van16)
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("int_timer", polgar_state, timer_update_irq6, attotime::from_hz(375))
|
||||
//MCFG_TIMER_DRIVER_ADD_PERIODIC("int_timer", polgar_state, timer_update_irq6, attotime::from_hz(368.64))
|
||||
MCFG_TIMER_ADD_PERIODIC("artwork_timer", mboard_update_artwork, attotime::from_hz(120))
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("artwork_timer", polgar_state, mboard_update_artwork, attotime::from_hz(120))
|
||||
|
||||
MCFG_FRAGMENT_ADD( chess_common )
|
||||
MCFG_NVRAM_ADD_0FILL("nvram")
|
||||
@ -1725,7 +1707,7 @@ static MACHINE_CONFIG_START( bpl32, polgar_state )
|
||||
MCFG_MACHINE_START_OVERRIDE(polgar_state,van32)
|
||||
MCFG_MACHINE_RESET_OVERRIDE(polgar_state,van16)
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("int_timer", polgar_state, timer_update_irq6, attotime::from_hz(750))
|
||||
MCFG_TIMER_ADD_PERIODIC("artwork_timer", mboard_update_artwork, attotime::from_hz(100))
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("artwork_timer", polgar_state, mboard_update_artwork, attotime::from_hz(100))
|
||||
|
||||
MCFG_FRAGMENT_ADD( chess_common )
|
||||
MCFG_NVRAM_ADD_0FILL("nvram")
|
||||
|
99
src/mess/includes/mboard.h
Normal file
99
src/mess/includes/mboard.h
Normal file
@ -0,0 +1,99 @@
|
||||
/**********************************************************************
|
||||
|
||||
Mephisto Chess Computers
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
#ifndef __MBOARD_H__
|
||||
#define __MBOARD_H__
|
||||
|
||||
/***************************************************************************
|
||||
MACROS
|
||||
***************************************************************************/
|
||||
|
||||
enum
|
||||
{
|
||||
EM, /*No piece*/
|
||||
BP,
|
||||
BN,
|
||||
BB,
|
||||
BR,
|
||||
BQ,
|
||||
BK,
|
||||
WP,
|
||||
WN,
|
||||
WB,
|
||||
WR,
|
||||
WQ,
|
||||
WK
|
||||
};
|
||||
|
||||
#define NOT_VALID 99
|
||||
#define BORDER_PIECE 64
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
FUNCTION PROTOTYPES
|
||||
***************************************************************************/
|
||||
|
||||
class mboard_state : public driver_device
|
||||
{
|
||||
public:
|
||||
mboard_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag)
|
||||
{ }
|
||||
|
||||
DECLARE_READ8_MEMBER(mboard_read_board_8);
|
||||
DECLARE_WRITE8_MEMBER(mboard_write_board_8);
|
||||
DECLARE_WRITE8_MEMBER(mboard_write_LED_8);
|
||||
|
||||
DECLARE_READ16_MEMBER(mboard_read_board_16);
|
||||
DECLARE_WRITE16_MEMBER(mboard_write_board_16);
|
||||
DECLARE_WRITE16_MEMBER(mboard_write_LED_16);
|
||||
|
||||
DECLARE_READ32_MEMBER(mboard_read_board_32);
|
||||
DECLARE_WRITE32_MEMBER(mboard_write_board_32);
|
||||
DECLARE_WRITE32_MEMBER(mboard_write_LED_32);
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER( mboard_update_artwork);
|
||||
|
||||
void mboard_savestate_register();
|
||||
|
||||
void mboard_set_board();
|
||||
void mboard_set_border_pieces();
|
||||
|
||||
inline UINT8 pos_to_num(UINT8 val);
|
||||
|
||||
UINT8 mboard_lcd_invert;
|
||||
UINT8 mboard_key_select;
|
||||
UINT8 mboard_key_selector;
|
||||
|
||||
int get_first_cleared_bit(UINT8 data);
|
||||
private:
|
||||
static const int start_board[64];
|
||||
static UINT8 border_pieces[12];
|
||||
|
||||
int m_board[64];
|
||||
int save_board[64];
|
||||
UINT16 Line18_LED;
|
||||
UINT16 Line18_REED;
|
||||
|
||||
int mouse_hold_border_piece;
|
||||
UINT8 mouse_hold_from;
|
||||
UINT8 mouse_hold_piece;
|
||||
|
||||
int read_board_flag;
|
||||
int get_first_bit(UINT8 data);
|
||||
UINT8 read_board();
|
||||
void write_board(UINT8 data);
|
||||
void write_LED(UINT8 data);
|
||||
void board_presave();
|
||||
void board_postload();
|
||||
void clear_board();
|
||||
void set_artwork();
|
||||
void check_board_buttons();
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif /* __MBOARD_H__ */
|
@ -4,16 +4,14 @@
|
||||
|
||||
**********************************************************************/
|
||||
#include "emu.h"
|
||||
#include "machine/mboard.h"
|
||||
#include "includes/mboard.h"
|
||||
/***************************************************************************
|
||||
TYPE DEFINITIONS
|
||||
***************************************************************************/
|
||||
|
||||
static void set_artwork(running_machine &machine );
|
||||
static void check_board_buttons(running_machine &machine );
|
||||
#define IsPiece(x) ((m_board[x] >=1) && (m_board[x] <=12))
|
||||
|
||||
UINT8 mboard_lcd_invert;
|
||||
UINT8 mboard_key_select;
|
||||
UINT8 mboard_key_selector;
|
||||
|
||||
static const int start_board[64] =
|
||||
const int mboard_state::start_board[64] =
|
||||
{
|
||||
BR, BN, BB, BQ, BK, BB, BN, BR,
|
||||
BP, BP, BP, BP, BP, BP, BP, BP,
|
||||
@ -25,18 +23,10 @@ static const int start_board[64] =
|
||||
WR, WN, WB, WQ, WK, WB, WN, WR
|
||||
};
|
||||
|
||||
static UINT8 border_pieces[12] = {WK,WQ,WR,WB,WN,WP,BK,BQ,BR,BB,BN,BP,};
|
||||
UINT8 mboard_state::border_pieces[12] = {WK,WQ,WR,WB,WN,WP,BK,BQ,BR,BB,BN,BP,};
|
||||
|
||||
static int m_board[64];
|
||||
static int save_board[64];
|
||||
static UINT16 Line18_LED;
|
||||
static UINT16 Line18_REED;
|
||||
|
||||
static MOUSE_HOLD mouse_hold;
|
||||
|
||||
static int read_board_flag = TRUE;
|
||||
|
||||
static int get_first_bit(UINT8 data)
|
||||
int mboard_state::get_first_bit(UINT8 data)
|
||||
{
|
||||
int i;
|
||||
|
||||
@ -47,7 +37,24 @@ static int get_first_bit(UINT8 data)
|
||||
return NOT_VALID;
|
||||
}
|
||||
|
||||
static int get_first_cleared_bit(UINT8 data)
|
||||
|
||||
inline UINT8 mboard_state::pos_to_num(UINT8 val)
|
||||
{
|
||||
switch (val)
|
||||
{
|
||||
case 0xfe: return 7;
|
||||
case 0xfd: return 6;
|
||||
case 0xfb: return 5;
|
||||
case 0xf7: return 4;
|
||||
case 0xef: return 3;
|
||||
case 0xdf: return 2;
|
||||
case 0xbf: return 1;
|
||||
case 0x7f: return 0;
|
||||
default: return 0xff;
|
||||
}
|
||||
}
|
||||
|
||||
int mboard_state::get_first_cleared_bit(UINT8 data)
|
||||
{
|
||||
int i;
|
||||
|
||||
@ -58,7 +65,7 @@ static int get_first_cleared_bit(UINT8 data)
|
||||
return NOT_VALID;
|
||||
}
|
||||
|
||||
static UINT8 read_board(void)
|
||||
UINT8 mboard_state::read_board()
|
||||
{
|
||||
UINT8 i_18, i_AH;
|
||||
UINT8 data;
|
||||
@ -110,12 +117,12 @@ data: 0 0000 0000 all fields occupied
|
||||
}
|
||||
|
||||
|
||||
static void write_board( running_machine &machine, UINT8 data)
|
||||
void mboard_state::write_board(UINT8 data)
|
||||
{
|
||||
|
||||
Line18_REED=data;
|
||||
|
||||
if (read_board_flag && !strcmp(machine.system().name,"glasgow") ) //HACK
|
||||
if (read_board_flag && !strcmp(machine().system().name,"glasgow") ) //HACK
|
||||
Line18_LED = 0;
|
||||
else
|
||||
Line18_LED = data;
|
||||
@ -128,7 +135,7 @@ static void write_board( running_machine &machine, UINT8 data)
|
||||
|
||||
|
||||
|
||||
static void write_LED(UINT8 data)
|
||||
void mboard_state::write_LED(UINT8 data)
|
||||
{
|
||||
int i;
|
||||
UINT8 i_AH, i_18;
|
||||
@ -169,7 +176,7 @@ data: 10 0001 0000 Line E
|
||||
|
||||
|
||||
|
||||
READ8_HANDLER( mboard_read_board_8 )
|
||||
READ8_MEMBER(mboard_state::mboard_read_board_8)
|
||||
{
|
||||
UINT8 data;
|
||||
|
||||
@ -178,7 +185,7 @@ READ8_HANDLER( mboard_read_board_8 )
|
||||
return data;
|
||||
}
|
||||
|
||||
READ16_HANDLER( mboard_read_board_16 )
|
||||
READ16_MEMBER(mboard_state::mboard_read_board_16)
|
||||
{
|
||||
UINT8 data;
|
||||
|
||||
@ -186,7 +193,7 @@ READ16_HANDLER( mboard_read_board_16 )
|
||||
return data << 8;
|
||||
}
|
||||
|
||||
READ32_HANDLER( mboard_read_board_32 )
|
||||
READ32_MEMBER(mboard_state::mboard_read_board_32)
|
||||
{
|
||||
UINT8 data;
|
||||
|
||||
@ -194,41 +201,41 @@ READ32_HANDLER( mboard_read_board_32 )
|
||||
return data<<24;
|
||||
}
|
||||
|
||||
WRITE8_HANDLER( mboard_write_board_8 )
|
||||
WRITE8_MEMBER(mboard_state::mboard_write_board_8)
|
||||
{
|
||||
write_board(space.machine(),data);
|
||||
write_board(data);
|
||||
logerror("Write Board Port Data = %02x\n",data);
|
||||
}
|
||||
|
||||
WRITE16_HANDLER( mboard_write_board_16 )
|
||||
WRITE16_MEMBER(mboard_state::mboard_write_board_16)
|
||||
{
|
||||
if (data & 0xff) write_board(space.machine(),data);
|
||||
if (data & 0xff) write_board(data);
|
||||
logerror("write board 16 %08x\n",data);
|
||||
write_board(space.machine(),data>>8);
|
||||
write_board(data>>8);
|
||||
}
|
||||
|
||||
WRITE32_HANDLER( mboard_write_board_32 )
|
||||
WRITE32_MEMBER(mboard_state::mboard_write_board_32)
|
||||
{
|
||||
// data |= data << 24;
|
||||
//printf("write board %08x %08x\n",offset,data);
|
||||
logerror("write board 32 o: %08x d: %08x\n",offset,data);
|
||||
if (offset) write_board(space.machine(),data);
|
||||
else write_board(space.machine(),data>>24);
|
||||
if (offset) write_board(data);
|
||||
else write_board(data>>24);
|
||||
}
|
||||
|
||||
WRITE8_HANDLER( mboard_write_LED_8 )
|
||||
WRITE8_MEMBER(mboard_state::mboard_write_LED_8)
|
||||
{
|
||||
write_LED(data);
|
||||
space.device().execute().spin_until_time(attotime::from_usec(7));
|
||||
}
|
||||
|
||||
WRITE16_HANDLER( mboard_write_LED_16 )
|
||||
WRITE16_MEMBER(mboard_state::mboard_write_LED_16)
|
||||
{
|
||||
write_LED(data >> 8);
|
||||
space.device().execute().spin_until_time(attotime::from_usec(9));
|
||||
}
|
||||
|
||||
WRITE32_HANDLER( mboard_write_LED_32 )
|
||||
WRITE32_MEMBER(mboard_state::mboard_write_LED_32)
|
||||
{
|
||||
// data = data | data << 24;
|
||||
//printf("write LED %08x %08x\n",offset,data);
|
||||
@ -241,14 +248,14 @@ WRITE32_HANDLER( mboard_write_LED_32 )
|
||||
|
||||
/* save states callback */
|
||||
|
||||
static void board_presave(running_machine *machine)
|
||||
void mboard_state::board_presave()
|
||||
{
|
||||
int i;
|
||||
for (i=0;i<64;i++)
|
||||
save_board[i]=m_board[i];
|
||||
}
|
||||
|
||||
static void board_postload(running_machine *machine)
|
||||
void mboard_state::board_postload()
|
||||
{
|
||||
int i;
|
||||
for (i=0;i<64;i++)
|
||||
@ -256,49 +263,50 @@ static void board_postload(running_machine *machine)
|
||||
|
||||
}
|
||||
|
||||
void mboard_savestate_register(running_machine &machine)
|
||||
void mboard_state::mboard_savestate_register()
|
||||
{
|
||||
state_save_register_global_array(machine,save_board);
|
||||
machine.save().register_postload(save_prepost_delegate(FUNC(board_postload),&machine));
|
||||
machine.save().register_presave(save_prepost_delegate(FUNC(board_presave),&machine));
|
||||
state_save_register_global_array(machine(),save_board);
|
||||
machine().save().register_postload(save_prepost_delegate(FUNC(mboard_state::board_postload),this));
|
||||
machine().save().register_presave(save_prepost_delegate(FUNC(mboard_state::board_presave),this));
|
||||
}
|
||||
|
||||
void mboard_set_board( void )
|
||||
void mboard_state::mboard_set_board()
|
||||
{
|
||||
read_board_flag = TRUE;
|
||||
int i;
|
||||
for (i=0;i<64;i++)
|
||||
m_board[i]=start_board[i];
|
||||
}
|
||||
|
||||
static void clear_board( void )
|
||||
void mboard_state::clear_board()
|
||||
{
|
||||
int i;
|
||||
for (i=0;i<64;i++)
|
||||
m_board[i]=EM;
|
||||
}
|
||||
|
||||
static void set_artwork ( running_machine &machine )
|
||||
void mboard_state::set_artwork()
|
||||
{
|
||||
int i;
|
||||
for (i=0;i<64;i++)
|
||||
output_set_indexed_value("P", i, m_board[i]);
|
||||
}
|
||||
|
||||
void mboard_set_border_pieces (void)
|
||||
void mboard_state::mboard_set_border_pieces()
|
||||
{
|
||||
int i;
|
||||
for (i=0;i<12;i++)
|
||||
output_set_indexed_value("Q", i, border_pieces[i]);
|
||||
}
|
||||
|
||||
TIMER_DEVICE_CALLBACK( mboard_update_artwork )
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(mboard_state::mboard_update_artwork )
|
||||
{
|
||||
check_board_buttons(timer.machine());
|
||||
set_artwork(timer.machine());
|
||||
check_board_buttons();
|
||||
set_artwork();
|
||||
mboard_set_border_pieces();
|
||||
}
|
||||
|
||||
static void check_board_buttons ( running_machine &machine )
|
||||
void mboard_state::check_board_buttons()
|
||||
{
|
||||
int field;
|
||||
int i;
|
||||
@ -315,14 +323,14 @@ static void check_board_buttons ( running_machine &machine )
|
||||
|
||||
/* check click on border pieces */
|
||||
i=0;
|
||||
port_input=machine.root_device().ioport("B_BLACK")->read();
|
||||
port_input=machine().root_device().ioport("B_BLACK")->read();
|
||||
if (port_input)
|
||||
{
|
||||
i=get_first_bit(port_input)+6;
|
||||
click_on_border_piece=TRUE;
|
||||
}
|
||||
|
||||
port_input=machine.root_device().ioport("B_WHITE")->read();
|
||||
port_input=machine().root_device().ioport("B_WHITE")->read();
|
||||
if (port_input)
|
||||
{
|
||||
i=get_first_bit(port_input);
|
||||
@ -335,20 +343,20 @@ static void check_board_buttons ( running_machine &machine )
|
||||
{
|
||||
if (border_pieces[i] > 12 ) /* second click on selected border piece */
|
||||
{
|
||||
mouse_hold.border_piece=FALSE;
|
||||
mouse_hold_border_piece=FALSE;
|
||||
border_pieces[i]=border_pieces[i]-12;
|
||||
mouse_hold.from=0;
|
||||
mouse_hold.piece=0;
|
||||
mouse_hold_from=0;
|
||||
mouse_hold_piece=0;
|
||||
}
|
||||
else if (!mouse_hold.piece) /*select border piece */
|
||||
else if (!mouse_hold_piece) /*select border piece */
|
||||
{
|
||||
if (mouse_hold.border_piece)
|
||||
border_pieces[mouse_hold.from]=border_pieces[mouse_hold.from]-12;
|
||||
if (mouse_hold_border_piece)
|
||||
border_pieces[mouse_hold_from]=border_pieces[mouse_hold_from]-12;
|
||||
|
||||
mouse_hold.from=i;
|
||||
mouse_hold.piece=border_pieces[i];
|
||||
mouse_hold_from=i;
|
||||
mouse_hold_piece=border_pieces[i];
|
||||
border_pieces[i]=border_pieces[i]+12;
|
||||
mouse_hold.border_piece=TRUE;
|
||||
mouse_hold_border_piece=TRUE;
|
||||
}
|
||||
|
||||
mouse_down = board_row + 1;
|
||||
@ -359,7 +367,7 @@ static void check_board_buttons ( running_machine &machine )
|
||||
|
||||
|
||||
/* check click on board */
|
||||
data = machine.root_device().ioport(keynames[board_row])->read_safe(0xff);
|
||||
data = machine().root_device().ioport(keynames[board_row])->read_safe(0xff);
|
||||
|
||||
if ((data != 0xff) && (!mouse_down) )
|
||||
{
|
||||
@ -371,30 +379,30 @@ static void check_board_buttons ( running_machine &machine )
|
||||
if (!(pos2num_res < 8))
|
||||
logerror("Position out of bound!");
|
||||
|
||||
else if ((mouse_hold.piece) && (!IsPiece(field)))
|
||||
else if ((mouse_hold_piece) && (!IsPiece(field)))
|
||||
{
|
||||
/* Moving a piece onto a blank */
|
||||
m_board[field] = mouse_hold.piece;
|
||||
m_board[field] = mouse_hold_piece;
|
||||
|
||||
if (mouse_hold.border_piece)
|
||||
if (mouse_hold_border_piece)
|
||||
{
|
||||
border_pieces[mouse_hold.from]=border_pieces[mouse_hold.from]-12;
|
||||
}else if ( field != mouse_hold.from ) /* Put a selected piece back to the source field */
|
||||
m_board[mouse_hold.from] = 0;
|
||||
border_pieces[mouse_hold_from]=border_pieces[mouse_hold_from]-12;
|
||||
}else if ( field != mouse_hold_from ) /* Put a selected piece back to the source field */
|
||||
m_board[mouse_hold_from] = 0;
|
||||
|
||||
|
||||
mouse_hold.from = 0;
|
||||
mouse_hold.piece = 0;
|
||||
mouse_hold.border_piece=FALSE;
|
||||
mouse_hold_from = 0;
|
||||
mouse_hold_piece = 0;
|
||||
mouse_hold_border_piece=FALSE;
|
||||
}
|
||||
else if ((!mouse_hold.piece) )
|
||||
else if ((!mouse_hold_piece) )
|
||||
{
|
||||
/* Picking up a piece */
|
||||
|
||||
if (IsPiece(field))
|
||||
{
|
||||
mouse_hold.from = field;
|
||||
mouse_hold.piece = m_board[field];
|
||||
mouse_hold_from = field;
|
||||
mouse_hold_piece = m_board[field];
|
||||
m_board[field] = m_board[field]+12;
|
||||
}
|
||||
|
||||
@ -406,18 +414,18 @@ static void check_board_buttons ( running_machine &machine )
|
||||
mouse_down = 0;
|
||||
|
||||
/* check click on border - remove selected piece*/
|
||||
if (machine.root_device().ioport("LINE10")->read_safe(0x01))
|
||||
if (machine().root_device().ioport("LINE10")->read_safe(0x01))
|
||||
{
|
||||
if (mouse_hold.piece)
|
||||
if (mouse_hold_piece)
|
||||
{
|
||||
if (mouse_hold.border_piece)
|
||||
border_pieces[mouse_hold.from]=border_pieces[mouse_hold.from]-12;
|
||||
if (mouse_hold_border_piece)
|
||||
border_pieces[mouse_hold_from]=border_pieces[mouse_hold_from]-12;
|
||||
else
|
||||
m_board[mouse_hold.from] = 0;
|
||||
m_board[mouse_hold_from] = 0;
|
||||
|
||||
mouse_hold.from = 0;
|
||||
mouse_hold.piece = 0;
|
||||
mouse_hold.border_piece = FALSE;
|
||||
mouse_hold_from = 0;
|
||||
mouse_hold_piece = 0;
|
||||
mouse_hold_border_piece = FALSE;
|
||||
}
|
||||
|
||||
return;
|
||||
@ -427,7 +435,7 @@ static void check_board_buttons ( running_machine &machine )
|
||||
if (data == 0xff)
|
||||
{
|
||||
|
||||
port_input=machine.root_device().ioport("B_BUTTONS")->read();
|
||||
port_input=machine().root_device().ioport("B_BUTTONS")->read();
|
||||
if (port_input==0x01)
|
||||
{
|
||||
clear_board();
|
||||
|
@ -1,98 +0,0 @@
|
||||
/**********************************************************************
|
||||
|
||||
Mephisto Chess Computers
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
#ifndef __MBOARD_H__
|
||||
#define __MBOARD_H__
|
||||
|
||||
#include "emu.h"
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
MACROS
|
||||
***************************************************************************/
|
||||
|
||||
enum
|
||||
{
|
||||
EM, /*No piece*/
|
||||
BP,
|
||||
BN,
|
||||
BB,
|
||||
BR,
|
||||
BQ,
|
||||
BK,
|
||||
WP,
|
||||
WN,
|
||||
WB,
|
||||
WR,
|
||||
WQ,
|
||||
WK
|
||||
};
|
||||
|
||||
#define NOT_VALID 99
|
||||
#define BORDER_PIECE 64
|
||||
|
||||
#define IsPiece(x) ((m_board[x] >=1) && (m_board[x] <=12))
|
||||
|
||||
#define IsBitSet(x,y) ( y & (1<<x) ) //ersetzen durch BIT
|
||||
|
||||
/***************************************************************************
|
||||
TYPE DEFINITIONS
|
||||
***************************************************************************/
|
||||
|
||||
struct MOUSE_HOLD {
|
||||
int border_piece;
|
||||
UINT8 from;
|
||||
UINT8 piece;
|
||||
};
|
||||
|
||||
/***************************************************************************
|
||||
FUNCTION PROTOTYPES
|
||||
***************************************************************************/
|
||||
|
||||
DECLARE_READ8_HANDLER( mboard_read_board_8 );
|
||||
DECLARE_WRITE8_HANDLER( mboard_write_board_8 );
|
||||
DECLARE_WRITE8_HANDLER( mboard_write_LED_8 );
|
||||
|
||||
DECLARE_READ16_HANDLER( mboard_read_board_16 );
|
||||
DECLARE_WRITE16_HANDLER( mboard_write_board_16 );
|
||||
DECLARE_WRITE16_HANDLER( mboard_write_LED_16 );
|
||||
|
||||
DECLARE_READ32_HANDLER( mboard_read_board_32 );
|
||||
DECLARE_WRITE32_HANDLER( mboard_write_board_32 );
|
||||
DECLARE_WRITE32_HANDLER( mboard_write_LED_32 );
|
||||
|
||||
TIMER_DEVICE_CALLBACK( mboard_update_artwork );
|
||||
|
||||
void mboard_savestate_register(running_machine &machine);
|
||||
|
||||
void mboard_set_board( void );
|
||||
void mboard_set_border_pieces (void);
|
||||
|
||||
INLINE UINT8 pos_to_num(UINT8 val)
|
||||
{
|
||||
switch (val)
|
||||
{
|
||||
case 0xfe: return 7;
|
||||
case 0xfd: return 6;
|
||||
case 0xfb: return 5;
|
||||
case 0xf7: return 4;
|
||||
case 0xef: return 3;
|
||||
case 0xdf: return 2;
|
||||
case 0xbf: return 1;
|
||||
case 0x7f: return 0;
|
||||
default: return 0xff;
|
||||
}
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
GLOBALS
|
||||
***************************************************************************/
|
||||
|
||||
extern UINT8 mboard_lcd_invert;
|
||||
extern UINT8 mboard_key_select;
|
||||
extern UINT8 mboard_key_selector;
|
||||
|
||||
#endif /* __MBOARD_H__ */
|
Loading…
Reference in New Issue
Block a user