mirror of
https://github.com/holub/mame
synced 2025-07-03 17:08:39 +03:00
This is a temporary fix for Mating Game which disables the 'Line Zero' interrupt condition. [J. Wallace]
Fixed state saving for OKIM6376 (hopefully) [J. Wallace] Used a Dolbeck Systems flyer to correct the colours of the Connect 4 built-in layout. [J. Wallace]
This commit is contained in:
parent
5a6492b377
commit
d581aa1cbd
@ -373,6 +373,13 @@ static STREAM_UPDATE( okim6376_update )
|
||||
|
||||
***********************************************************************************************/
|
||||
|
||||
static void okim6376_postload(device_t *device)
|
||||
{
|
||||
okim6376_state *info = get_safe_token(device);
|
||||
|
||||
okim6376_set_frequency(device, info->master_clock);
|
||||
}
|
||||
|
||||
static void adpcm_state_save_register(struct ADPCMVoice *voice, device_t *device, int index)
|
||||
{
|
||||
device->save_item(NAME(voice->playing), index);
|
||||
@ -391,8 +398,22 @@ static void okim6376_state_save_register(okim6376_state *info, device_t *device)
|
||||
{
|
||||
adpcm_state_save_register(&info->voice[j], device, j);
|
||||
}
|
||||
device->machine().save().register_postload(save_prepost_delegate(FUNC(okim6376_postload), device));
|
||||
device->save_item(NAME(info->command[0]));
|
||||
device->save_item(NAME(info->command[1]));
|
||||
device->save_item(NAME(info->stage[0]));
|
||||
device->save_item(NAME(info->stage[1]));
|
||||
device->save_item(NAME(info->latch));
|
||||
device->save_item(NAME(info->divisor));
|
||||
device->save_item(NAME(info->nar));
|
||||
device->save_item(NAME(info->nartimer));
|
||||
device->save_item(NAME(info->busy));
|
||||
device->save_item(NAME(info->st));
|
||||
device->save_item(NAME(info->st_pulses));
|
||||
device->save_item(NAME(info->st_update));
|
||||
device->save_item(NAME(info->ch2));
|
||||
device->save_item(NAME(info->ch2_update));
|
||||
device->save_item(NAME(info->master_clock));
|
||||
}
|
||||
|
||||
/**********************************************************************************************
|
||||
|
@ -263,6 +263,7 @@ static TIMER_CALLBACK( ic24_timeout );
|
||||
|
||||
static const UINT8 reel_mux_table[8]= {0,4,2,6,1,5,3,7};//include 7, although I don't think it's used, this is basically a wire swap
|
||||
static const UINT8 reel_mux_table7[8]= {3,1,5,6,4,2,0,7};
|
||||
static const UINT8 vsync_table[4] = {3,1,5,7}; //Video related
|
||||
|
||||
static const UINT8 bwb_chr_table_common[10]= {0x00,0x04,0x04,0x0c,0x0c,0x1c,0x14,0x2c,0x5c,0x2c};
|
||||
|
||||
@ -399,7 +400,7 @@ public:
|
||||
int m_gfx_index;
|
||||
UINT16 * m_vid_vidram;
|
||||
UINT16 * m_vid_mainram;
|
||||
UINT8 m_scn2674_IR[16];
|
||||
// UINT8 m_scn2674_IR[16];
|
||||
UINT8 m_scn2675_IR_pointer;
|
||||
UINT8 m_scn2674_screen1_l;
|
||||
UINT8 m_scn2674_screen1_h;
|
||||
@ -412,6 +413,8 @@ public:
|
||||
UINT8 m_scn2674_irq_mask;
|
||||
UINT8 m_scn2674_gfx_enabled;
|
||||
UINT8 m_scn2674_display_enabled;
|
||||
UINT8 m_scn2674_display_enabled_field;
|
||||
UINT8 m_scn2674_display_enabled_scanline;
|
||||
UINT8 m_scn2674_cursor_enabled;
|
||||
UINT8 m_IR0_scn2674_double_ht_wd;
|
||||
UINT8 m_IR0_scn2674_scanline_per_char_row;
|
||||
@ -425,17 +428,30 @@ public:
|
||||
UINT8 m_IR3_scn2674_vert_front_porch;
|
||||
UINT8 m_IR3_scn2674_vert_back_porch;
|
||||
UINT8 m_IR4_scn2674_rows_per_screen;
|
||||
UINT8 m_IR4_scn2674_character_blink_rate;
|
||||
UINT8 m_IR4_scn2674_character_blink_rate_divisor;
|
||||
UINT8 m_IR5_scn2674_character_per_row;
|
||||
UINT8 m_IR6_scn2674_cursor_first_scanline;
|
||||
UINT8 m_IR6_scn2674_cursor_last_scanline;
|
||||
UINT8 m_IR7_scn2674_cursor_underline_position;
|
||||
UINT8 m_IR7_scn2674_cursor_rate_divisor;
|
||||
UINT8 m_IR7_scn2674_cursor_blink;
|
||||
UINT8 m_IR7_scn2674_vsync_width;
|
||||
UINT8 m_IR8_scn2674_display_buffer_first_address_LSB;
|
||||
UINT8 m_IR9_scn2674_display_buffer_first_address_MSB;
|
||||
UINT8 m_IR9_scn2674_display_buffer_last_address;
|
||||
UINT8 m_IR10_scn2674_display_pointer_address_lower;
|
||||
UINT8 m_IR11_scn2674_display_pointer_address_upper;
|
||||
UINT8 m_IR11_scn2674_reset_scanline_counter_on_scrollup;
|
||||
UINT8 m_IR11_scn2674_reset_scanline_counter_on_scrolldown;
|
||||
UINT8 m_IR12_scn2674_scroll_start;
|
||||
UINT8 m_IR12_scn2674_split_register_1;
|
||||
UINT8 m_IR13_scn2674_scroll_end;
|
||||
UINT8 m_IR13_scn2674_split_register_2;
|
||||
UINT8 m_IR14_scn2674_scroll_lines;
|
||||
UINT8 m_IR14_scn2674_double_1;
|
||||
UINT8 m_IR14_scn2674_double_2;
|
||||
UINT8 m_scn2674_spl1;
|
||||
UINT8 m_scn2674_spl2;
|
||||
INT8 m_cur[2];
|
||||
UINT8 *m_dealem_videoram;
|
||||
int m_rowcounter;
|
||||
|
@ -170,6 +170,7 @@ TODO:
|
||||
* They have a slightly different 68k memory map. The 6850 is at e00000 and the 6840 is at e01000
|
||||
They appear to hang on the handshake with the MPU4 board
|
||||
- Find out what causes the games to reset in service mode (see jump taken at CPU1:c8e8)
|
||||
Changing the state of the doors should force a reset but not in the mode itself - is there an input we should be checking?
|
||||
- Deal 'Em lockouts vary on certain cabinets (normally connected to AUX2, but not there?)
|
||||
- Deal 'Em has bad tiles (apostrophe, logo, bottom corner), black should actually be transparent
|
||||
to give black on green.
|
||||
@ -452,7 +453,7 @@ static SCREEN_UPDATE( mpu4_vid )
|
||||
/* count = 0x0018b6/2; - crmaze count = 0x004950/2; - turnover */
|
||||
|
||||
/* we're in row table mode...thats why */
|
||||
for(y = 0; y <= state->m_IR4_scn2674_rows_per_screen; y++)
|
||||
for(y = 0; y < state->m_IR4_scn2674_rows_per_screen; y++)
|
||||
{
|
||||
int screen2_base = (state->m_scn2674_screen2_h << 8) | state->m_scn2674_screen2_l;
|
||||
|
||||
@ -464,7 +465,7 @@ static SCREEN_UPDATE( mpu4_vid )
|
||||
|
||||
if (dbl_size&2) gfxregion = 1;
|
||||
|
||||
for(x = 0; x <= state->m_IR5_scn2674_character_per_row; x++)
|
||||
for(x = 0; x < state->m_IR5_scn2674_character_per_row; x++)
|
||||
{
|
||||
UINT16 tiledat;
|
||||
UINT16 attr;
|
||||
@ -509,24 +510,6 @@ static WRITE16_HANDLER( mpu4_vid_vidram_w )
|
||||
SCN2674 - Advanced Video Display Controller (AVDC) (Video Chip)
|
||||
|
||||
15 Initialization Registers (8-bit each)
|
||||
|
||||
-- fill me in later ---
|
||||
|
||||
IR0 ---- ----
|
||||
IR1 ---- ----
|
||||
IR2 ---- ----
|
||||
IR3 ---- ----
|
||||
IR4 ---- ----
|
||||
IR5 ---- ----
|
||||
IR6 ---- ----
|
||||
IR7 ---- ----
|
||||
IR8 ---- ----
|
||||
IR9 ---- ----
|
||||
IR10 ---- ----
|
||||
IR11 ---- ----
|
||||
IR12 ---- ----
|
||||
IR13 ---- ----
|
||||
IR14 ---- ----
|
||||
*/
|
||||
|
||||
|
||||
@ -534,69 +517,88 @@ static void scn2674_write_init_regs(mpu4_state *state, UINT8 data)
|
||||
{
|
||||
LOGSTUFF(("scn2674_write_init_regs %02x %02x\n",state->m_scn2675_IR_pointer,data));
|
||||
|
||||
state->m_scn2674_IR[state->m_scn2675_IR_pointer]=data;
|
||||
// state->m_scn2674_IR[state->m_scn2675_IR_pointer]=data;
|
||||
|
||||
|
||||
switch ( state->m_scn2675_IR_pointer) /* display some debug info, set mame specific variables */
|
||||
{
|
||||
case 0:
|
||||
state->m_IR0_scn2674_double_ht_wd = (data & 0x80)>>7;
|
||||
state->m_IR0_scn2674_scanline_per_char_row = (data & 0x78)>>3;
|
||||
state->m_IR0_scn2674_scanline_per_char_row = ((data & 0x78)>>3) + 1;
|
||||
state->m_IR0_scn2674_sync_select = (data&0x04)>>2;
|
||||
state->m_IR0_scn2674_buffer_mode_select = (data&0x03);
|
||||
|
||||
LOGSTUFF(("IR0 - Double Ht Wd %02x\n",state->m_IR0_scn2674_double_ht_wd));
|
||||
LOGSTUFF(("IR0 - Scanlines per Character Row %02x\n",state->m_IR0_scn2674_scanline_per_char_row));
|
||||
LOGSTUFF(("IR0 - Sync Select %02x\n",state->m_IR0_scn2674_sync_select));
|
||||
LOGSTUFF(("IR0 - Buffer Mode Select %02x\n",state->m_IR0_scn2674_buffer_mode_select));
|
||||
LOGSTUFF(("IR0 - Double Ht Wd %02x\n",state->m_IR0_scn2674_double_ht_wd));//affects IR14 as well
|
||||
LOGSTUFF(("IR0 - Scanlines per Character Row %02x\n",state->m_IR0_scn2674_scanline_per_char_row));//value+1 = scanlines
|
||||
|
||||
if (state->m_IR0_scn2674_scanline_per_char_row != 8)
|
||||
{
|
||||
popmessage("Row size change, contact MAMEDEV");
|
||||
}
|
||||
LOGSTUFF(("IR0 - Sync Select %02x\n",state->m_IR0_scn2674_sync_select));//1 = csync
|
||||
LOGSTUFF(("IR0 - Buffer Mode Select %02x\n",state->m_IR0_scn2674_buffer_mode_select)); //0 independent 1 transparent 2 shared 3 row
|
||||
break;
|
||||
|
||||
case 1:
|
||||
state->m_IR1_scn2674_interlace_enable = (data&0x80)>>7;
|
||||
state->m_IR1_scn2674_equalizing_constant = (data&0x7f);
|
||||
state->m_IR1_scn2674_equalizing_constant = (data&0x7f)+1;
|
||||
|
||||
LOGSTUFF(("IR1 - Interlace Enable %02x\n",state->m_IR1_scn2674_interlace_enable));
|
||||
LOGSTUFF(("IR1 - Equalizing Constant %02x\n",state->m_IR1_scn2674_equalizing_constant));
|
||||
LOGSTUFF(("IR1 - Equalizing Constant %02x CCLKs\n",state->m_IR1_scn2674_equalizing_constant));
|
||||
break;
|
||||
|
||||
case 2:
|
||||
state->m_IR2_scn2674_row_table = (data&0x80)>>7;
|
||||
state->m_IR2_scn2674_horz_sync_width = (data&0x78)>>3;
|
||||
state->m_IR2_scn2674_horz_back_porch = (data&0x07);
|
||||
state->m_IR2_scn2674_horz_sync_width = (((data&0x78)>>3)*2) + 2;
|
||||
state->m_IR2_scn2674_horz_back_porch = ((data&0x07)*4) - 1;
|
||||
|
||||
LOGSTUFF(("IR2 - Row Table %02x\n",state->m_IR2_scn2674_row_table));
|
||||
LOGSTUFF(("IR2 - Horizontal Sync Width %02x\n",state->m_IR2_scn2674_horz_sync_width));
|
||||
LOGSTUFF(("IR2 - Horizontal Back Porch %02x\n",state->m_IR2_scn2674_horz_back_porch));
|
||||
LOGSTUFF(("IR2 - Horizontal Sync Width %02x CCLKs\n",state->m_IR2_scn2674_horz_sync_width));
|
||||
LOGSTUFF(("IR2 - Horizontal Back Porch %02x CCLKs\n",state->m_IR2_scn2674_horz_back_porch));
|
||||
break;
|
||||
|
||||
case 3:
|
||||
state->m_IR3_scn2674_vert_front_porch = (data&0xe0)>>5;
|
||||
state->m_IR3_scn2674_vert_back_porch = (data&0x1f)>>0;
|
||||
state->m_IR3_scn2674_vert_front_porch = (((data&0xe0)>>5) * 4)+4 ;//returning actual value
|
||||
state->m_IR3_scn2674_vert_back_porch = ((data&0x1f) * 2) + 4;
|
||||
|
||||
LOGSTUFF(("IR3 - Vertical Front Porch %02x\n",state->m_IR3_scn2674_vert_front_porch));
|
||||
LOGSTUFF(("IR3 - Vertical Back Porch %02x\n",state->m_IR3_scn2674_vert_back_porch));
|
||||
LOGSTUFF(("IR3 - Vertical Front Porch %02x Lines\n",state->m_IR3_scn2674_vert_front_porch));
|
||||
LOGSTUFF(("IR3 - Vertical Back Porch %02x Lines\n",state->m_IR3_scn2674_vert_back_porch));
|
||||
break;
|
||||
|
||||
case 4:
|
||||
state->m_IR4_scn2674_rows_per_screen = data&0x7f;
|
||||
state->m_IR4_scn2674_character_blink_rate = (data & 0x80)>>7;
|
||||
state->m_IR4_scn2674_rows_per_screen = (data&0x7f) + 1;
|
||||
state->m_IR4_scn2674_character_blink_rate_divisor = ((data & 0x80)>>7 ? 128:64);
|
||||
|
||||
LOGSTUFF(("IR4 - Rows Per Screen %02x\n",state->m_IR4_scn2674_rows_per_screen));
|
||||
LOGSTUFF(("IR4 - Character Blink Rate %02x\n",state->m_IR4_scn2674_character_blink_rate));
|
||||
LOGSTUFF(("IR4 - Character Blink Rate = 1/%02x\n",state->m_IR4_scn2674_character_blink_rate_divisor));
|
||||
break;
|
||||
|
||||
case 5:
|
||||
/* IR5 - Active Characters Per Row
|
||||
cccc cccc
|
||||
c = Characters Per Row */
|
||||
state->m_IR5_scn2674_character_per_row = data;
|
||||
state->m_IR5_scn2674_character_per_row = data + 1;
|
||||
LOGSTUFF(("IR5 - Active Characters Per Row %02x\n",state->m_IR5_scn2674_character_per_row));
|
||||
break;
|
||||
|
||||
case 6:
|
||||
state->m_IR6_scn2674_cursor_last_scanline = (data & 0x0f);
|
||||
state->m_IR6_scn2674_cursor_first_scanline = (data & 0xf0)>>4;
|
||||
LOGSTUFF(("IR6 - First Line of Cursor %02x\n",state->m_IR6_scn2674_cursor_first_scanline));
|
||||
LOGSTUFF(("IR6 - Last Line of Cursor %02x\n",state->m_IR6_scn2674_cursor_last_scanline));
|
||||
break;
|
||||
|
||||
case 7:
|
||||
state->m_IR7_scn2674_cursor_underline_position = (data & 0x0f);
|
||||
state->m_IR7_scn2674_cursor_rate_divisor = ((data & 0x10)>>4 ? 64:32);
|
||||
state->m_IR7_scn2674_cursor_blink = (data & 0x20)>>5;
|
||||
|
||||
state->m_IR7_scn2674_vsync_width = vsync_table[(data & 0xC0)>>6];
|
||||
|
||||
LOGSTUFF(("IR7 - Underline Position %02x\n",state->m_IR7_scn2674_cursor_underline_position));
|
||||
LOGSTUFF(("IR7 - Cursor rate 1/%02x\n",state->m_IR7_scn2674_cursor_rate_divisor));
|
||||
LOGSTUFF(("IR7 - Cursor blink %02x\n",state->m_IR7_scn2674_cursor_blink));
|
||||
LOGSTUFF(("IR7 - Vsync Width %02x\n",state->m_IR7_scn2674_vsync_width));
|
||||
break;
|
||||
|
||||
case 8:
|
||||
@ -618,7 +620,12 @@ static void scn2674_write_init_regs(mpu4_state *state, UINT8 data)
|
||||
|
||||
case 11:
|
||||
state->m_IR11_scn2674_display_pointer_address_upper= data&0x3f;
|
||||
state->m_IR11_scn2674_reset_scanline_counter_on_scrollup= (data&0x40 >> 6);
|
||||
state->m_IR11_scn2674_reset_scanline_counter_on_scrolldown= (data&0x80 >> 7);
|
||||
|
||||
LOGSTUFF(("IR11 - Display Pointer Address Lower %02x\n",state->m_IR11_scn2674_display_pointer_address_upper));
|
||||
LOGSTUFF(("IR11 - Reset Scanline Counter on Scroll Up %02x\n",state->m_IR11_scn2674_reset_scanline_counter_on_scrollup));
|
||||
LOGSTUFF(("IR11 - Reset Scanline Counter on Scroll Down %02x\n",state->m_IR11_scn2674_reset_scanline_counter_on_scrolldown));
|
||||
break;
|
||||
|
||||
case 12:
|
||||
@ -636,6 +643,18 @@ static void scn2674_write_init_regs(mpu4_state *state, UINT8 data)
|
||||
break;
|
||||
|
||||
case 14:
|
||||
state->m_IR14_scn2674_scroll_lines = (data & 0x0f);
|
||||
if (!state->m_IR0_scn2674_double_ht_wd)
|
||||
{
|
||||
state->m_IR14_scn2674_double_1 = (data & 0xc0)>>6;
|
||||
LOGSTUFF(("IR14 - Double 1 %02x\n",state->m_IR14_scn2674_double_1));
|
||||
}
|
||||
//0 normal, 1, double width, 2, double width and double tops 3, double width and double bottoms
|
||||
//1 affects SSR1, 2 affects SSR2
|
||||
//If Double Height enabled in IR0, Screen start 1 upper (bits 7 and 6)replace Double 1, and Double 2 is unused
|
||||
state->m_IR14_scn2674_double_2 = (data & 0x30)>>4;
|
||||
LOGSTUFF(("IR14 - Scroll Lines %02x\n",state->m_IR14_scn2674_scroll_lines));
|
||||
LOGSTUFF(("IR14 - Double 2 %02x\n",state->m_IR14_scn2674_double_2));
|
||||
break;
|
||||
|
||||
case 15: /* not valid! */
|
||||
@ -650,7 +669,7 @@ static void scn2674_write_init_regs(mpu4_state *state, UINT8 data)
|
||||
static void scn2674_write_command(running_machine &machine, UINT8 data)
|
||||
{
|
||||
mpu4_state *state = machine.driver_data<mpu4_state>();
|
||||
UINT8 oprand;
|
||||
UINT8 operand;
|
||||
int i;
|
||||
|
||||
LOGSTUFF(("scn2674_write_command %02x\n",data));
|
||||
@ -672,10 +691,10 @@ static void scn2674_write_command(running_machine &machine, UINT8 data)
|
||||
if ((data&0xf0)==0x10)
|
||||
{
|
||||
/* set IR pointer */
|
||||
LOGSTUFF(("set IR pointer %02x\n",data));
|
||||
operand = data & 0x0f;
|
||||
LOGSTUFF(("set IR pointer %02x\n",operand));
|
||||
|
||||
oprand = data & 0x0f;
|
||||
state->m_scn2675_IR_pointer=oprand;
|
||||
state->m_scn2675_IR_pointer=operand;
|
||||
|
||||
}
|
||||
|
||||
@ -698,11 +717,11 @@ static void scn2674_write_command(running_machine &machine, UINT8 data)
|
||||
if ((data&0xe9)==0x28)
|
||||
{
|
||||
/* Display off */
|
||||
oprand = data & 0x04;
|
||||
operand = data & 0x04;
|
||||
|
||||
state->m_scn2674_display_enabled = 0;
|
||||
|
||||
if (oprand)
|
||||
if (operand)
|
||||
LOGSTUFF(("display OFF - float DADD bus %02x\n",data));
|
||||
else
|
||||
LOGSTUFF(("display OFF - no float DADD bus %02x\n",data));
|
||||
@ -711,14 +730,20 @@ static void scn2674_write_command(running_machine &machine, UINT8 data)
|
||||
if ((data&0xe9)==0x29)
|
||||
{
|
||||
/* Display on */
|
||||
oprand = data & 0x04;
|
||||
operand = data & 0x04;
|
||||
|
||||
state->m_scn2674_display_enabled = 1;
|
||||
//state->m_scn2674_display_enabled = 1;
|
||||
|
||||
if (oprand)
|
||||
if (operand)
|
||||
{
|
||||
state->m_scn2674_display_enabled_field = 1;
|
||||
LOGSTUFF(("display ON - next field %02x\n",data));
|
||||
}
|
||||
else
|
||||
{
|
||||
state->m_scn2674_display_enabled_scanline = 1;
|
||||
LOGSTUFF(("display ON - next scanline %02x\n",data));
|
||||
}
|
||||
}
|
||||
|
||||
if ((data&0xf1)==0x30)
|
||||
@ -740,17 +765,18 @@ static void scn2674_write_command(running_machine &machine, UINT8 data)
|
||||
if ((data&0xe0)==0x40)
|
||||
{
|
||||
/* Reset Interrupt / Status bit */
|
||||
oprand = data & 0x1f;
|
||||
LOGSTUFF(("reset interrupt / status bit %02x\n",data));
|
||||
operand = data & 0x1f;
|
||||
LOGSTUFF(("reset interrupt / status bit %02x\n",operand));
|
||||
|
||||
LOGSTUFF(("Split 2 IRQ: %d Reset\n",(data>>0)&1));
|
||||
LOGSTUFF(("Ready IRQ: %d Reset\n",(data>>1)&1));
|
||||
LOGSTUFF(("Split 1 IRQ: %d Reset\n",(data>>2)&1));
|
||||
LOGSTUFF(("Line Zero IRQ: %d Reset\n",(data>>3)&1));
|
||||
LOGSTUFF(("V-Blank IRQ: %d Reset\n",(data>>4)&1));
|
||||
state->m_scn2674_irq_register &= ~(data & 0x1f);//((data & 0x1f)^0x1f);
|
||||
state->m_scn2674_status_register &= ~(data & 0x1f);//((data & 0x1f)^0x1f);
|
||||
|
||||
state->m_scn2674_irq_register &= ((data & 0x1f)^0x1f);
|
||||
state->m_scn2674_status_register &= ((data & 0x1f)^0x1f);
|
||||
LOGSTUFF(("IRQ Status after reset\n"));
|
||||
LOGSTUFF(("Split 2 IRQ: %d Active\n",(state->m_scn2674_irq_register>>0)&1));
|
||||
LOGSTUFF(("Ready IRQ: %d Active\n",(state->m_scn2674_irq_register>>1)&1));
|
||||
LOGSTUFF(("Split 1 IRQ: %d Active\n",(state->m_scn2674_irq_register>>2)&1));
|
||||
LOGSTUFF(("Line Zero IRQ: %d Active\n",(state->m_scn2674_irq_register>>3)&1));
|
||||
LOGSTUFF(("V-Blank IRQ: %d Active\n",(state->m_scn2674_irq_register>>4)&1));
|
||||
|
||||
state->m_scn2674_irq_state = 0;
|
||||
|
||||
@ -767,32 +793,45 @@ static void scn2674_write_command(running_machine &machine, UINT8 data)
|
||||
if ((data&0xe0)==0x80)
|
||||
{
|
||||
/* Disable Interrupt mask*/
|
||||
oprand = data & 0x1f;
|
||||
LOGSTUFF(("disable interrupt %02x\n",data));
|
||||
LOGSTUFF(("Split 2 IRQ: %d Disabled\n",(data>>0)&1));
|
||||
LOGSTUFF(("Ready IRQ: %d Disabled\n",(data>>1)&1));
|
||||
LOGSTUFF(("Split 1 IRQ: %d Disabled\n",(data>>2)&1));
|
||||
LOGSTUFF(("Line Zero IRQ: %d Disabled\n",(data>>3)&1));
|
||||
LOGSTUFF(("V-Blank IRQ: %d Disabled\n",(data>>4)&1));
|
||||
operand = data & 0x1f;
|
||||
state->m_scn2674_irq_mask &= ~(data & 0x1f);
|
||||
//While the datasheet says that bits can only be cleared by reset,
|
||||
//Mating game hangs waiting for line zero to be cleared unless disabling does turn the irq bits off
|
||||
//Timing clearly needs fixing
|
||||
LOGSTUFF(("IRQ Mask after disable %x\n",operand));
|
||||
LOGSTUFF(("Split 2 IRQ: %d Unmasked\n",(state->m_scn2674_irq_mask>>0)&1));
|
||||
LOGSTUFF(("Ready IRQ: %d Unmasked\n",(state->m_scn2674_irq_mask>>1)&1));
|
||||
LOGSTUFF(("Split 1 IRQ: %d Unmasked\n",(state->m_scn2674_irq_mask>>2)&1));
|
||||
LOGSTUFF(("Line Zero IRQ: %d Unmasked\n",(state->m_scn2674_irq_mask>>3)&1));
|
||||
LOGSTUFF(("V-Blank IRQ: %d Unmasked\n",(state->m_scn2674_irq_mask>>4)&1));
|
||||
|
||||
/* state->m_scn2674_irq_mask &= ((data & 0x1f)^0x1f); disables.. doesn't enable? */
|
||||
|
||||
state->m_scn2674_irq_mask &= ~(data & 0x1f);
|
||||
//mask changes, but bit can ONLY be cleared by reset
|
||||
// state->m_scn2674_irq_state = 0;
|
||||
|
||||
// for (i = 0; i < 5; i++)
|
||||
// {
|
||||
// if ((state->m_scn2674_irq_register>>i&1)&(state->m_scn2674_irq_mask>>i&1))
|
||||
// {
|
||||
// state->m_scn2674_irq_state = 1;
|
||||
// }
|
||||
// }
|
||||
// update_mpu68_interrupts(machine);
|
||||
}
|
||||
|
||||
if ((data&0xe0)==0x60)
|
||||
{
|
||||
/* Enable Interrupt mask*/
|
||||
LOGSTUFF(("enable interrupt %02x\n",data));
|
||||
LOGSTUFF(("Split 2 IRQ: %d Enabled\n",(data>>0)&1));
|
||||
LOGSTUFF(("Ready IRQ: %d Enabled\n",(data>>1)&1));
|
||||
LOGSTUFF(("Split 1 IRQ: %d Enabled\n",(data>>2)&1));
|
||||
LOGSTUFF(("Line Zero IRQ: %d Enabled\n",(data>>3)&1));
|
||||
LOGSTUFF(("V-Blank IRQ: %d Enabled\n",(data>>4)&1));
|
||||
|
||||
operand = data & 0x1f;
|
||||
state->m_scn2674_irq_mask |= (data & 0x1f); /* enables .. doesn't disable? */
|
||||
//mask changes, but IRQ can ONLY be triggered by the next event, according to datasheet
|
||||
|
||||
LOGSTUFF(("IRQ Mask after enable %x\n",operand));
|
||||
LOGSTUFF(("Split 2 IRQ: %d Unmasked\n",(state->m_scn2674_irq_mask>>0)&1));
|
||||
LOGSTUFF(("Ready IRQ: %d Unmasked\n",(state->m_scn2674_irq_mask>>1)&1));
|
||||
LOGSTUFF(("Split 1 IRQ: %d Unmasked\n",(state->m_scn2674_irq_mask>>2)&1));
|
||||
LOGSTUFF(("Line Zero IRQ: %d Unmasked\n",(state->m_scn2674_irq_mask>>3)&1));
|
||||
LOGSTUFF(("V-Blank IRQ: %d Unmasked\n",(state->m_scn2674_irq_mask>>4)&1));
|
||||
|
||||
}
|
||||
|
||||
/* Delayed Commands */
|
||||
@ -801,55 +840,55 @@ static void scn2674_write_command(running_machine &machine, UINT8 data)
|
||||
if (data == 0xa4)
|
||||
{
|
||||
/* read at pointer address */
|
||||
LOGSTUFF(("read at pointer address %02x\n",data));
|
||||
LOGSTUFF(("DELAYED read at pointer address %02x\n",data));
|
||||
}
|
||||
|
||||
if (data == 0xa2)
|
||||
{
|
||||
/* write at pointer address */
|
||||
LOGSTUFF(("write at pointer address %02x\n",data));
|
||||
LOGSTUFF(("DELAYED write at pointer address %02x\n",data));
|
||||
}
|
||||
|
||||
if (data == 0xa9)
|
||||
{
|
||||
/* increase cursor address */
|
||||
LOGSTUFF(("increase cursor address %02x\n",data));
|
||||
LOGSTUFF(("DELAYED increase cursor address %02x\n",data));
|
||||
}
|
||||
|
||||
if (data == 0xac)
|
||||
{
|
||||
/* read at cursor address */
|
||||
LOGSTUFF(("read at cursor address %02x\n",data));
|
||||
LOGSTUFF(("DELAYED read at cursor address %02x\n",data));
|
||||
}
|
||||
|
||||
if (data == 0xaa)
|
||||
{
|
||||
/* write at cursor address */
|
||||
LOGSTUFF(("write at cursor address %02x\n",data));
|
||||
LOGSTUFF(("DELAYED write at cursor address %02x\n",data));
|
||||
}
|
||||
|
||||
if (data == 0xad)
|
||||
{
|
||||
/* read at cursor address + increment */
|
||||
LOGSTUFF(("read at cursor address+increment %02x\n",data));
|
||||
LOGSTUFF(("DELAYED read at cursor address+increment %02x\n",data));
|
||||
}
|
||||
|
||||
if (data == 0xab)
|
||||
{
|
||||
/* write at cursor address + increment */
|
||||
LOGSTUFF(("write at cursor address+increment %02x\n",data));
|
||||
LOGSTUFF(("DELAYED write at cursor address+increment %02x\n",data));
|
||||
}
|
||||
|
||||
if (data == 0xbb)
|
||||
{
|
||||
/* write from cursor address to pointer address */
|
||||
LOGSTUFF(("write from cursor address to pointer address %02x\n",data));
|
||||
LOGSTUFF(("DELAYED write from cursor address to pointer address %02x\n",data));
|
||||
}
|
||||
|
||||
if (data == 0xbd)
|
||||
{
|
||||
/* read from cursor address to pointer address */
|
||||
LOGSTUFF(("read from cursor address to pointer address %02x\n",data));
|
||||
LOGSTUFF(("DELAYED read from cursor address to pointer address %02x\n",data));
|
||||
}
|
||||
}
|
||||
|
||||
@ -876,21 +915,21 @@ static READ16_HANDLER( mpu4_vid_scn2674_r )
|
||||
|
||||
--RV ZSRs
|
||||
|
||||
-- = ALWAYS 0
|
||||
R = RDFLG (Status Register Only)
|
||||
V = Vblank
|
||||
Z = Line Zero
|
||||
S = Split 1
|
||||
R = Ready
|
||||
s = Split 2
|
||||
6+7 -- = ALWAYS 0
|
||||
5 R = RDFLG (Status Register Only)
|
||||
4 V = Vblank
|
||||
3 Z = Line Zero
|
||||
2 S = Split 1
|
||||
1 R = Ready
|
||||
0 s = Split 2
|
||||
*/
|
||||
|
||||
case 0:
|
||||
LOGSTUFF(("Read Irq Register %06x\n",cpu_get_pc(&space->device())));
|
||||
LOGSTUFF(("Read Irq Register %02x %06x\n",state->m_scn2674_irq_register,cpu_get_pc(&space->device())));
|
||||
return state->m_scn2674_irq_register;
|
||||
|
||||
case 1:
|
||||
LOGSTUFF(("Read Status Register %06x\n",cpu_get_pc(&space->device())));
|
||||
LOGSTUFF(("Read Status Register %02X %06x\n",state->m_scn2674_status_register,cpu_get_pc(&space->device())));
|
||||
return state->m_scn2674_status_register;
|
||||
|
||||
case 2: LOGSTUFF(("Read Screen1_l Register %06x\n",cpu_get_pc(&space->device())));return state->m_scn2674_screen1_l;
|
||||
@ -933,11 +972,25 @@ static WRITE16_HANDLER( mpu4_vid_scn2674_w )
|
||||
break;
|
||||
|
||||
case 2: state->m_scn2674_screen1_l = data; break;
|
||||
case 3: state->m_scn2674_screen1_h = data; break;
|
||||
case 3:
|
||||
state->m_scn2674_screen1_h = (data&0x3f);//uppermost two bytes not part of register
|
||||
if (state->m_IR0_scn2674_double_ht_wd)
|
||||
{
|
||||
state->m_IR14_scn2674_double_1 = (data & 0xc0)>>6;
|
||||
LOGSTUFF(("IR14 - Double 1 overridden %02x\n",state->m_IR14_scn2674_double_1));
|
||||
}
|
||||
break;
|
||||
|
||||
case 4: state->m_scn2674_cursor_l = data; break;
|
||||
case 5: state->m_scn2674_cursor_h = data; break;
|
||||
case 6: state->m_scn2674_screen2_l = data; break;
|
||||
case 7: state->m_scn2674_screen2_h = data; break;
|
||||
case 7:
|
||||
state->m_scn2674_screen2_h = (data&0x3f);
|
||||
state->m_scn2674_spl1 = (data & 0x40);
|
||||
state->m_scn2674_spl2 = (data & 0x80);
|
||||
break;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1124,8 +1177,7 @@ static READ8_DEVICE_HANDLER( pia_ic5_porta_track_r )
|
||||
mainboard. As per usual, they've taken the cheap route here, reading and processing the
|
||||
raw quadrature signal from the encoder wheels for a 4 bit interface, rather than use any
|
||||
additional hardware to simplify matters. What makes matters worse is that there is a 45 degree rotation to take into account.
|
||||
For our purposes, two fake ports give the X and Y positions,
|
||||
which are then worked back into the signal levels.
|
||||
For our purposes, two fake ports give the X and Y positions, which are then worked back into the signal levels.
|
||||
We invert the X and Y data at source due to the use of Schmitt triggers in the interface, which
|
||||
clean up the pulses and flip the active phase.*/
|
||||
|
||||
@ -1999,12 +2051,13 @@ static MACHINE_RESET( mpu4_vid )
|
||||
|
||||
static ADDRESS_MAP_START( mpu4_68k_map, AS_PROGRAM, 16 )
|
||||
AM_RANGE(0x000000, 0x7fffff) AM_ROM
|
||||
AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_BASE_MEMBER(mpu4_state, m_vid_mainram)
|
||||
AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_BASE_MEMBER(mpu4_state, m_vid_mainram) AM_MIRROR(0x10000)
|
||||
// AM_RANGE(0x810000, 0x81ffff) AM_RAM /* ? */
|
||||
AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_data_w, 0x00ff)
|
||||
AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_control_w, 0x00ff)
|
||||
AM_RANGE(0xa00000, 0xa00003) AM_READWRITE(ef9369_r, ef9369_w)
|
||||
/* AM_RANGE(0xa00004, 0xa0000f) AM_READWRITE(mpu4_vid_unmap_r, mpu4_vid_unmap_w) */
|
||||
AM_RANGE(0xb00000, 0xb0000f) AM_READWRITE(mpu4_vid_scn2674_r, mpu4_vid_scn2674_w)
|
||||
AM_RANGE(0xb00000, 0xb0000f) AM_READWRITE(mpu4_vid_scn2674_r, mpu4_vid_scn2674_w)//where is BLANK?
|
||||
AM_RANGE(0xc00000, 0xc1ffff) AM_READWRITE(mpu4_vid_vidram_r, mpu4_vid_vidram_w)
|
||||
AM_RANGE(0xff8000, 0xff8001) AM_DEVREADWRITE8_MODERN("acia6850_1", acia6850_device, status_read, control_write, 0xff)
|
||||
AM_RANGE(0xff8002, 0xff8003) AM_DEVREADWRITE8_MODERN("acia6850_1", acia6850_device, data_read, data_write, 0xff)
|
||||
@ -2013,9 +2066,9 @@ static ADDRESS_MAP_START( mpu4_68k_map, AS_PROGRAM, 16 )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( mpu4oki_68k_map, AS_PROGRAM, 16 )
|
||||
AM_RANGE(0x000000, 0x5fffff) AM_ROM AM_WRITENOP
|
||||
AM_RANGE(0x000000, 0x5fffff) AM_ROM //AM_WRITENOP
|
||||
AM_RANGE(0x600000, 0x63ffff) AM_RAM /* The Mating Game has an extra 256kB RAM on the program card */
|
||||
AM_RANGE(0x640000, 0x7fffff) AM_NOP /* Possible bug, reads and writes here */
|
||||
// AM_RANGE(0x640000, 0x7fffff) AM_NOP /* Possible bug, reads and writes here */
|
||||
AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_BASE_MEMBER(mpu4_state, m_vid_mainram)
|
||||
AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_data_w, 0x00ff)
|
||||
AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_control_w, 0x00ff)
|
||||
@ -2029,7 +2082,7 @@ static ADDRESS_MAP_START( mpu4oki_68k_map, AS_PROGRAM, 16 )
|
||||
AM_RANGE(0xffa040, 0xffa04f) AM_WRITE8(ic3ss_vid_w,0x00ff) // 6840PTM on sampled sound board
|
||||
AM_RANGE(0xffa060, 0xffa067) AM_DEVREADWRITE8_MODERN("pia_ic4ss", pia6821_device, read, write,0x00ff) // PIA6821 on sampled sound board
|
||||
AM_RANGE(0xffd000, 0xffd00f) AM_READWRITE(characteriser16_r, characteriser16_w)
|
||||
AM_RANGE(0xfff000, 0xffffff) AM_NOP /* Possible bug, reads and writes here */
|
||||
// AM_RANGE(0xfff000, 0xffffff) AM_NOP /* Possible bug, reads and writes here */
|
||||
ADDRESS_MAP_END
|
||||
|
||||
/* TODO: Fix up MPU4 map*/
|
||||
@ -2281,6 +2334,10 @@ static TIMER_DEVICE_CALLBACK( scanline_timer_callback )
|
||||
int current_scanline=param;
|
||||
timer.machine().scheduler().synchronize();
|
||||
|
||||
if ((state->m_scn2674_display_enabled_scanline)&&(!state->m_scn2674_display_enabled))
|
||||
{
|
||||
state->m_scn2674_display_enabled = 1;
|
||||
}
|
||||
|
||||
if (current_scanline==0)
|
||||
{
|
||||
@ -2302,36 +2359,38 @@ static TIMER_DEVICE_CALLBACK( scanline_timer_callback )
|
||||
}
|
||||
|
||||
// should be triggered at the start of each ROW (line zero for that row)
|
||||
if ((current_scanline%8 == 7) && (current_scanline<296))
|
||||
//Disabling for now, doesn't seem to be tested, and hangs things up
|
||||
if ((current_scanline%8 == 7) && (current_scanline<296) &&(state->m_scn2674_display_enabled))//7
|
||||
{
|
||||
|
||||
state->m_scn2674_status_register |= 0x08;
|
||||
if (state->m_scn2674_irq_mask&0x08)
|
||||
/* if (state->m_scn2674_irq_mask&0x08)
|
||||
{
|
||||
logerror("scanline %d\n",current_scanline);
|
||||
LOG2674(("SCN2674 Line Zero\n"));
|
||||
state->m_scn2674_irq_state = 1;
|
||||
state->m_scn2674_irq_register |= 0x08;
|
||||
update_mpu68_interrupts(timer.machine());
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
// this is ROWS not scanlines!!
|
||||
if (current_scanline == state->m_IR12_scn2674_split_register_1*8)
|
||||
/* Split Screen 1 */
|
||||
{
|
||||
if (state->m_scn2674_screen2_h & 0x40)
|
||||
if (state->m_scn2674_spl1)
|
||||
{
|
||||
popmessage("Split screen 1 address shift required, contact MAMEDEV");
|
||||
}
|
||||
state->m_scn2674_status_register |= 0x04;
|
||||
if (state->m_scn2674_irq_mask&0x04)
|
||||
{
|
||||
state->m_scn2674_irq_register |= 0x04;
|
||||
LOG2674(("SCN2674 Split Screen 1\n"));
|
||||
state->m_scn2674_irq_state = 1;
|
||||
update_mpu68_interrupts(timer.machine());
|
||||
timer.machine().primary_screen->update_partial(timer.machine().primary_screen->vpos());
|
||||
|
||||
state->m_scn2674_irq_register |= 0x04;
|
||||
}
|
||||
}
|
||||
|
||||
@ -2339,7 +2398,7 @@ static TIMER_DEVICE_CALLBACK( scanline_timer_callback )
|
||||
if (current_scanline == state->m_IR13_scn2674_split_register_2*8)
|
||||
/* Split Screen 2 */
|
||||
{
|
||||
if (state->m_scn2674_screen2_h & 0x80)
|
||||
if (state->m_scn2674_spl2)
|
||||
{
|
||||
popmessage("Split screen 2 address shift required, contact MAMEDEV");
|
||||
}
|
||||
@ -2356,14 +2415,15 @@ static TIMER_DEVICE_CALLBACK( scanline_timer_callback )
|
||||
}
|
||||
|
||||
// vblank?
|
||||
if (current_scanline == 300)
|
||||
if (current_scanline == 300)//300)
|
||||
{
|
||||
/* if (state->m_scn2674_display_enabled) ? */
|
||||
// if (state->m_scn2674_display_enabled)
|
||||
{
|
||||
state->m_scn2674_status_register |= 0x10;
|
||||
if (state->m_scn2674_irq_mask&0x10)
|
||||
{
|
||||
//LOG2674(("vblank irq\n"));
|
||||
LOG2674(("vblank irq\n"));
|
||||
state->m_scn2674_irq_state = 1;
|
||||
state->m_scn2674_irq_register |= 0x10;
|
||||
update_mpu68_interrupts(timer.machine());
|
||||
@ -2396,6 +2456,7 @@ static MACHINE_CONFIG_START( mpu4_vid, mpu4_state )
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_RGB32)
|
||||
MCFG_SCREEN_SIZE(64*8, 40*8) // note this directly affects the scanline counters used below, and thus the timing of everything
|
||||
//8*28 + 4 + 22 +
|
||||
MCFG_SCREEN_VISIBLE_AREA(0*8, 63*8-1, 0*8, 37*8-1)
|
||||
MCFG_SCREEN_REFRESH_RATE(50)
|
||||
MCFG_SCREEN_UPDATE(mpu4_vid)
|
||||
@ -3557,8 +3618,8 @@ GAME( 1989, adders, bctvidbs, mpu4_vid, adders, adders, ROT0, "Barcrest"
|
||||
|
||||
GAME( 1989, timemchn, bctvidbs, mpu4_vid, skiltrek, timemchn, ROT0, "Barcrest", "Time Machine (v2.0)", GAME_NOT_WORKING )
|
||||
|
||||
GAME( 199?, mating, bctvidbs, mating, mating, mating, ROT0, "Barcrest", "The Mating Game (v0.4)", GAME_NOT_WORKING )//SWP 0.2 /* Using crmaze controls for now, cabinet has trackball */
|
||||
GAME( 199?, matingd, mating, mating, mating, mating, ROT0, "Barcrest", "The Mating Game (v0.4, Datapak)", GAME_NOT_WORKING )//SWP 0.2D
|
||||
GAME( 1996?, mating, bctvidbs, mating, mating, mating, ROT0, "Barcrest", "The Mating Game (v0.4)", GAME_NOT_WORKING )//SWP 0.2 /* Using crmaze controls for now, cabinet has trackball */
|
||||
GAME( 1996?, matingd, mating, mating, mating, mating, ROT0, "Barcrest", "The Mating Game (v0.4, Datapak)", GAME_NOT_WORKING )//SWP 0.2D
|
||||
|
||||
/* Barquest */
|
||||
/* Barquest II */
|
||||
|
@ -50,10 +50,10 @@
|
||||
<color red="0.7" green="0.0" blue="0.0" />
|
||||
</disk>
|
||||
</element>
|
||||
<element name="bluepiece">
|
||||
<element name="yellowpiece">
|
||||
<disk state ="1">
|
||||
<bounds x="0" y="0" width="7" height="7" />
|
||||
<color red="0.0" green="0.0" blue="0.7" />
|
||||
<color red="0.7" green="0.7" blue="0.0" />
|
||||
</disk>
|
||||
</element>
|
||||
<element name="greenpiece">
|
||||
@ -71,42 +71,42 @@
|
||||
|
||||
<element name="C" defstate="0">
|
||||
<text string="C" state="1">
|
||||
<color red="1.0" green="1.0" blue="0.0" />
|
||||
<color red="0.0" green="0.0" blue="1.0" />
|
||||
<bounds x="0" y="0.1" width="1" height="0.8" />
|
||||
</text>
|
||||
</element>
|
||||
|
||||
<element name="O" defstate="0">
|
||||
<text string="O" state="1">
|
||||
<color red="1.0" green="1.0" blue="0.0" />
|
||||
<color red="0.0" green="0.0" blue="1.0" />
|
||||
<bounds x="0" y="0.1" width="1" height="0.8" />
|
||||
</text>
|
||||
</element>
|
||||
|
||||
<element name="N" defstate="0">
|
||||
<text string="N" state="1">
|
||||
<color red="1.0" green="1.0" blue="0.0" />
|
||||
<color red="0.0" green="0.0" blue="1.0" />
|
||||
<bounds x="0" y="0.1" width="1" height="0.8" />
|
||||
</text>
|
||||
</element>
|
||||
|
||||
<element name="E" defstate="0">
|
||||
<text string="E" state="1">
|
||||
<color red="1.0" green="1.0" blue="0.0" />
|
||||
<color red="0.0" green="0.0" blue="1.0" />
|
||||
<bounds x="0" y="0.1" width="1" height="0.8" />
|
||||
</text>
|
||||
</element>
|
||||
|
||||
<element name="T" defstate="0">
|
||||
<text string="T" state="1">
|
||||
<color red="1.0" green="1.0" blue="0.0" />
|
||||
<color red="0.0" green="0.0" blue="1.0" />
|
||||
<bounds x="0" y="0.1" width="1" height="0.8" />
|
||||
</text>
|
||||
</element>
|
||||
|
||||
<element name="4" defstate="0">
|
||||
<text string="4" state="1">
|
||||
<color red="1.0" green="0.0" blue="0.0" />
|
||||
<color red="1.0" green="1.0" blue="0.0" />
|
||||
<bounds x="0" y="0.1" width="1" height="0.8" />
|
||||
</text>
|
||||
</element>
|
||||
@ -226,25 +226,25 @@
|
||||
<backdrop name="blank" element="emptypiece" state="0">
|
||||
<bounds x="48" y="7" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp0" element="bluepiece" state="0">
|
||||
<backdrop name="lamp0" element="yellowpiece" state="0">
|
||||
<bounds x="0" y="7" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp1" element="bluepiece" state="0">
|
||||
<backdrop name="lamp1" element="yellowpiece" state="0">
|
||||
<bounds x="8" y="7" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp2" element="bluepiece" state="0">
|
||||
<backdrop name="lamp2" element="yellowpiece" state="0">
|
||||
<bounds x="16" y="7" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp3" element="bluepiece" state="0">
|
||||
<backdrop name="lamp3" element="yellowpiece" state="0">
|
||||
<bounds x="24" y="7" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp4" element="bluepiece" state="0">
|
||||
<backdrop name="lamp4" element="yellowpiece" state="0">
|
||||
<bounds x="32" y="7" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp5" element="bluepiece" state="0">
|
||||
<backdrop name="lamp5" element="yellowpiece" state="0">
|
||||
<bounds x="40" y="7" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp6" element="bluepiece" state="0">
|
||||
<backdrop name="lamp6" element="yellowpiece" state="0">
|
||||
<bounds x="48" y="7" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp8" element="redpiece" state="0">
|
||||
@ -310,25 +310,25 @@
|
||||
<backdrop name="lamp30" element="redpiece" state="0">
|
||||
<bounds x="48" y="14" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp16" element="bluepiece" state="0">
|
||||
<backdrop name="lamp16" element="yellowpiece" state="0">
|
||||
<bounds x="0" y="14" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp17" element="bluepiece" state="0">
|
||||
<backdrop name="lamp17" element="yellowpiece" state="0">
|
||||
<bounds x="8" y="14" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp18" element="bluepiece" state="0">
|
||||
<backdrop name="lamp18" element="yellowpiece" state="0">
|
||||
<bounds x="16" y="14" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp19" element="bluepiece" state="0">
|
||||
<backdrop name="lamp19" element="yellowpiece" state="0">
|
||||
<bounds x="24" y="14" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp20" element="bluepiece" state="0">
|
||||
<backdrop name="lamp20" element="yellowpiece" state="0">
|
||||
<bounds x="32" y="14" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp21" element="bluepiece" state="0">
|
||||
<backdrop name="lamp21" element="yellowpiece" state="0">
|
||||
<bounds x="40" y="14" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp22" element="bluepiece" state="0">
|
||||
<backdrop name="lamp22" element="yellowpiece" state="0">
|
||||
<bounds x="48" y="14" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="blank" element="emptypiece" state="0">
|
||||
@ -352,25 +352,25 @@
|
||||
<backdrop name="blank" element="emptypiece" state="0">
|
||||
<bounds x="48" y="21" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp32" element="bluepiece" state="0">
|
||||
<backdrop name="lamp32" element="yellowpiece" state="0">
|
||||
<bounds x="0" y="21" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp33" element="bluepiece" state="0">
|
||||
<backdrop name="lamp33" element="yellowpiece" state="0">
|
||||
<bounds x="8" y="21" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp34" element="bluepiece" state="0">
|
||||
<backdrop name="lamp34" element="yellowpiece" state="0">
|
||||
<bounds x="16" y="21" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp35" element="bluepiece" state="0">
|
||||
<backdrop name="lamp35" element="yellowpiece" state="0">
|
||||
<bounds x="24" y="21" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp36" element="bluepiece" state="0">
|
||||
<backdrop name="lamp36" element="yellowpiece" state="0">
|
||||
<bounds x="32" y="21" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp37" element="bluepiece" state="0">
|
||||
<backdrop name="lamp37" element="yellowpiece" state="0">
|
||||
<bounds x="40" y="21" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp38" element="bluepiece" state="0">
|
||||
<backdrop name="lamp38" element="yellowpiece" state="0">
|
||||
<bounds x="48" y="21" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp40" element="redpiece" state="0">
|
||||
@ -415,25 +415,25 @@
|
||||
<backdrop name="blank" element="emptypiece" state="0">
|
||||
<bounds x="48" y="28" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp48" element="bluepiece" state="0">
|
||||
<backdrop name="lamp48" element="yellowpiece" state="0">
|
||||
<bounds x="0" y="28" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp49" element="bluepiece" state="0">
|
||||
<backdrop name="lamp49" element="yellowpiece" state="0">
|
||||
<bounds x="8" y="28" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp50" element="bluepiece" state="0">
|
||||
<backdrop name="lamp50" element="yellowpiece" state="0">
|
||||
<bounds x="16" y="28" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp51" element="bluepiece" state="0">
|
||||
<backdrop name="lamp51" element="yellowpiece" state="0">
|
||||
<bounds x="24" y="28" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp52" element="bluepiece" state="0">
|
||||
<backdrop name="lamp52" element="yellowpiece" state="0">
|
||||
<bounds x="32" y="28" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp53" element="bluepiece" state="0">
|
||||
<backdrop name="lamp53" element="yellowpiece" state="0">
|
||||
<bounds x="40" y="28" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp54" element="bluepiece" state="0">
|
||||
<backdrop name="lamp54" element="yellowpiece" state="0">
|
||||
<bounds x="48" y="28" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp56" element="redpiece" state="0">
|
||||
@ -478,25 +478,25 @@
|
||||
<backdrop name="blank" element="emptypiece" state="0">
|
||||
<bounds x="48" y="35" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp64" element="bluepiece" state="0">
|
||||
<backdrop name="lamp64" element="yellowpiece" state="0">
|
||||
<bounds x="0" y="35" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp65" element="bluepiece" state="0">
|
||||
<backdrop name="lamp65" element="yellowpiece" state="0">
|
||||
<bounds x="8" y="35" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp66" element="bluepiece" state="0">
|
||||
<backdrop name="lamp66" element="yellowpiece" state="0">
|
||||
<bounds x="16" y="35" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp67" element="bluepiece" state="0">
|
||||
<backdrop name="lamp67" element="yellowpiece" state="0">
|
||||
<bounds x="24" y="35" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp68" element="bluepiece" state="0">
|
||||
<backdrop name="lamp68" element="yellowpiece" state="0">
|
||||
<bounds x="32" y="35" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp69" element="bluepiece" state="0">
|
||||
<backdrop name="lamp69" element="yellowpiece" state="0">
|
||||
<bounds x="40" y="35" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp70" element="bluepiece" state="0">
|
||||
<backdrop name="lamp70" element="yellowpiece" state="0">
|
||||
<bounds x="48" y="35" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp72" element="redpiece" state="0">
|
||||
@ -541,25 +541,25 @@
|
||||
<backdrop name="blank" element="emptypiece" state="0">
|
||||
<bounds x="48" y="42" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp80" element="bluepiece" state="0">
|
||||
<backdrop name="lamp80" element="yellowpiece" state="0">
|
||||
<bounds x="0" y="42" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp81" element="bluepiece" state="0">
|
||||
<backdrop name="lamp81" element="yellowpiece" state="0">
|
||||
<bounds x="8" y="42" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp82" element="bluepiece" state="0">
|
||||
<backdrop name="lamp82" element="yellowpiece" state="0">
|
||||
<bounds x="16" y="42" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp83" element="bluepiece" state="0">
|
||||
<backdrop name="lamp83" element="yellowpiece" state="0">
|
||||
<bounds x="24" y="42" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp84" element="bluepiece" state="0">
|
||||
<backdrop name="lamp84" element="yellowpiece" state="0">
|
||||
<bounds x="32" y="42" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp85" element="bluepiece" state="0">
|
||||
<backdrop name="lamp85" element="yellowpiece" state="0">
|
||||
<bounds x="40" y="42" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp86" element="bluepiece" state="0">
|
||||
<backdrop name="lamp86" element="yellowpiece" state="0">
|
||||
<bounds x="48" y="42" width="7" height="7"/>
|
||||
</backdrop>
|
||||
<backdrop name="lamp88" element="redpiece" state="0">
|
||||
|
Loading…
Reference in New Issue
Block a user