summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhap <hap@749742ba-7341-0410-aadc-df50b521781e>2012-05-24 01:09:55 (GMT)
committer hap <hap@749742ba-7341-0410-aadc-df50b521781e>2012-05-24 01:09:55 (GMT)
commit0dd998e4b231ac46722c11095e6cfe6313791e68 (patch)
tree1ffa0338718facd53fb82602b7488aebf29166bc
parenta0bf0d0b8c772378ad2e6aa151c2c2fc9709192e (diff)
downloadmame-0dd998e4b231ac46722c11095e6cfe6313791e68.zip
mame-0dd998e4b231ac46722c11095e6cfe6313791e68.tar.bz2
added layer enable
git-svn-id: svn://mamedev.org/mame/trunk@16415 749742ba-7341-0410-aadc-df50b521781e
-rw-r--r--src/mame/drivers/flipjack.c126
1 files changed, 75 insertions, 51 deletions
diff --git a/src/mame/drivers/flipjack.c b/src/mame/drivers/flipjack.c
index 63a9f31..c4b4df7 100644
--- a/src/mame/drivers/flipjack.c
+++ b/src/mame/drivers/flipjack.c
@@ -49,11 +49,12 @@ public:
UINT8 m_soundlatch;
UINT8 m_bank;
+ UINT8 m_layer;
DECLARE_WRITE8_MEMBER(flipjack_sound_nmi_ack_w);
DECLARE_WRITE8_MEMBER(flipjack_soundlatch_w);
DECLARE_WRITE8_MEMBER(flipjack_bank_w);
- DECLARE_WRITE8_MEMBER(flipjack_unk_w);
+ DECLARE_WRITE8_MEMBER(flipjack_layer_w);
DECLARE_INPUT_CHANGED_MEMBER(flipjack_coin);
};
@@ -68,59 +69,39 @@ static SCREEN_UPDATE_RGB32( flipjack )
bitmap.fill(get_black_pen(screen.machine()), cliprect);
- count = (0);
-
- for(y=0;y<192;y++)
+ // draw playfield
+ if (state->m_layer & 2)
{
- for(x=0;x<256;x+=8)
- {
- UINT32 pen_r,pen_g,pen_b,color;
- int xi;
-
- pen_r = (blit_ram[count] & 0xff)>>0;
- pen_g = (blit_ram[count+0x2000] & 0xff)>>0;
- pen_b = (blit_ram[count+0x4000] & 0xff)>>0;
-
- for(xi=0;xi<8;xi++)
- {
- if(cliprect.contains(x+xi, y))
- {
- color = ((pen_r >> (7-xi)) & 1);
- color|= ((pen_g >> (7-xi)) & 1)<<1;
- color|= ((pen_b >> (7-xi)) & 1)<<2;
- bitmap.pix32(y, x+xi) = screen.machine().pens[color];
- }
- }
+ count = 0;
- count++;
- }
- }
-
- count = 0;
-
- for(y=0;y<192;y++)
- {
- for(x=0;x<256;x+=8)
+ for(y=0;y<192;y++)
{
- UINT32 pen,color;
- int xi;
+ for(x=0;x<256;x+=8)
+ {
+ UINT32 pen_r,pen_g,pen_b,color;
+ int xi;
- pen = (state->m_fbram[count] & 0xff)>>0;
+ pen_r = (blit_ram[count] & 0xff)>>0;
+ pen_g = (blit_ram[count+0x2000] & 0xff)>>0;
+ pen_b = (blit_ram[count+0x4000] & 0xff)>>0;
- for(xi=0;xi<8;xi++)
- {
- if(cliprect.contains(x+xi, y))
+ for(xi=0;xi<8;xi++)
{
- color = ((pen >> (7-xi)) & 1) ? 7 : 0;
- if(color)
+ if(cliprect.contains(x+xi, y))
+ {
+ color = ((pen_r >> (7-xi)) & 1);
+ color|= ((pen_g >> (7-xi)) & 1)<<1;
+ color|= ((pen_b >> (7-xi)) & 1)<<2;
bitmap.pix32(y, x+xi) = screen.machine().pens[color];
+ }
}
- }
- count++;
+ count++;
+ }
}
}
+ // draw tiles
for (y=0;y<32;y++)
{
for (x=0;x<32;x++)
@@ -132,6 +113,36 @@ static SCREEN_UPDATE_RGB32( flipjack )
}
}
+ // draw framebuffer
+ if (state->m_layer & 4)
+ {
+ count = 0;
+
+ for(y=0;y<192;y++)
+ {
+ for(x=0;x<256;x+=8)
+ {
+ UINT32 pen,color;
+ int xi;
+
+ pen = (state->m_fbram[count] & 0xff)>>0;
+
+ for(xi=0;xi<8;xi++)
+ {
+ if(cliprect.contains(x+xi, y))
+ {
+ color = ((pen >> (7-xi)) & 1) ? 7 : 0;
+ if(color)
+ bitmap.pix32(y, x+xi) = screen.machine().pens[color];
+ }
+ }
+
+ count++;
+ }
+ }
+ }
+
+
return 0;
}
@@ -148,13 +159,23 @@ WRITE8_MEMBER(flipjack_state::flipjack_soundlatch_w)
WRITE8_MEMBER(flipjack_state::flipjack_bank_w)
{
+ // d0-d1: tile bank
+ // d2: prg bank
+ // d4: ?
+ // other bits: unused?
m_bank = data;
membank("bank1")->set_entry(data >> 2 & 1);
}
-WRITE8_MEMBER(flipjack_state::flipjack_unk_w)
+WRITE8_MEMBER(flipjack_state::flipjack_layer_w)
{
+ // d0: flip screen
+ // d1: enable playfield layer
+ // d2: enable framebuffer layer
+ // d3: ?
+ // other bits: unused?
+ m_layer = data;
}
static READ8_DEVICE_HANDLER( flipjack_soundlatch_r )
@@ -167,8 +188,7 @@ static READ8_DEVICE_HANDLER( flipjack_soundlatch_r )
static WRITE8_DEVICE_HANDLER( flipjack_portc_w )
{
- //flipjack_state *state = device->machine().driver_data<flipjack_state>();
- //printf("port c %X\n",data>>4);
+ // watchdog?
}
@@ -189,7 +209,7 @@ static ADDRESS_MAP_START( flipjack_main_map, AS_PROGRAM, 8, flipjack_state )
AM_RANGE(0x7010, 0x7010) AM_DEVWRITE("crtc", hd6845_device, address_w)
AM_RANGE(0x7011, 0x7011) AM_DEVWRITE("crtc", hd6845_device, register_w)
AM_RANGE(0x7020, 0x7020) AM_READ_PORT("DSW")
- AM_RANGE(0x7800, 0x7800) AM_WRITE(flipjack_unk_w)
+ AM_RANGE(0x7800, 0x7800) AM_WRITE(flipjack_layer_w)
AM_RANGE(0x8000, 0x9fff) AM_ROM
AM_RANGE(0xa000, 0xbfff) AM_RAM AM_SHARE("cram")
AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("vram")
@@ -241,10 +261,10 @@ static INPUT_PORTS_START( flipjack )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("P3")
- PORT_DIPUNKNOWN_DIPLOC( 0x01, 0x01, "P3:1" ) // coin?
- PORT_DIPUNKNOWN_DIPLOC( 0x02, 0x02, "P3:2" )
- PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "P3:3" )
- PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "P3:4" )
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED ) // output
PORT_START("DSW")
@@ -343,6 +363,10 @@ static MACHINE_START( flipjack )
UINT8 *ROM = machine.root_device().memregion("maincpu")->base();
machine.root_device().membank("bank1")->configure_entries(0, 2, &ROM[0x10000], 0x2000);
state->membank("bank1")->set_entry(0);
+
+ state->save_item(NAME(state->m_soundlatch));
+ state->save_item(NAME(state->m_bank));
+ state->save_item(NAME(state->m_layer));
}
@@ -411,4 +435,4 @@ ROM_END
-GAME( 198?, flipjack, 0, flipjack, flipjack, 0, ROT90, "Jackson Co., Ltd.", "Flipper Jack", GAME_NOT_WORKING )
+GAME( 198?, flipjack, 0, flipjack, flipjack, 0, ROT90, "Jackson Co., Ltd.", "Flipper Jack", GAME_IMPERFECT_GRAPHICS | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )