summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatarGravatar Angelo Salese <angelosa@users.noreply.github.com>2011-06-28 14:18:32 +0000
committerGravatarGravatar Angelo Salese <angelosa@users.noreply.github.com>2011-06-28 14:18:32 +0000
commitd581aa1cbdeb01b8f7bc75e38e093f0d3f7e719b (patch) (github)
treeaa6bc541e8137b788655c5dc11e443e89bdfbd6b
parent5a6492b3773964cd03240117d56c28ef82761ab2 (diff)
downloadmame-d581aa1cbdeb01b8f7bc75e38e093f0d3f7e719b.tar.bz2
mame-d581aa1cbdeb01b8f7bc75e38e093f0d3f7e719b.zip
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]
-rw-r--r--src/emu/sound/okim6376.c21
-rw-r--r--src/mame/drivers/mpu4.c20
-rw-r--r--src/mame/drivers/mpu4drvr.c285
-rw-r--r--src/mame/layout/connect4.lay100
4 files changed, 262 insertions, 164 deletions
diff --git a/src/emu/sound/okim6376.c b/src/emu/sound/okim6376.c
index 87aa1c1d354..a128224aa4a 100644
--- a/src/emu/sound/okim6376.c
+++ b/src/emu/sound/okim6376.c
@@ -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));
}
/**********************************************************************************************
diff --git a/src/mame/drivers/mpu4.c b/src/mame/drivers/mpu4.c
index 788d8d454b3..1da932f6088 100644
--- a/src/mame/drivers/mpu4.c
+++ b/src/mame/drivers/mpu4.c
@@ -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;
diff --git a/src/mame/drivers/mpu4drvr.c b/src/mame/drivers/mpu4drvr.c
index 0254b8bc8ac..5e38c502ff6 100644
--- a/src/mame/drivers/mpu4drvr.c
+++ b/src/mame/drivers/mpu4drvr.c
@@ -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 */
diff --git a/src/mame/layout/connect4.lay b/src/mame/layout/connect4.lay
index 9b893bb5489..5aee1dee596 100644
--- a/src/mame/layout/connect4.lay
+++ b/src/mame/layout/connect4.lay
@@ -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">