mirror of
https://github.com/holub/mame
synced 2025-05-20 04:39:11 +03:00
Merge pull request #5182 from cam900/taito_f3_args
taito_f3.cpp, 2mindril.cpp : Updates
This commit is contained in:
commit
650142e5cb
@ -55,26 +55,27 @@ public:
|
||||
|
||||
void init_drill();
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
virtual void machine_reset() override;
|
||||
|
||||
private:
|
||||
/* input-related */
|
||||
required_ioport m_in0;
|
||||
uint8_t m_defender_sensor;
|
||||
uint8_t m_shutter_sensor;
|
||||
uint16_t m_irq_reg;
|
||||
u8 m_defender_sensor;
|
||||
u8 m_shutter_sensor;
|
||||
u16 m_irq_reg;
|
||||
|
||||
/* devices */
|
||||
DECLARE_READ8_MEMBER(arm_pwr_r);
|
||||
DECLARE_READ8_MEMBER(sensors_r);
|
||||
DECLARE_WRITE8_MEMBER(coins_w);
|
||||
DECLARE_WRITE16_MEMBER(sensors_w);
|
||||
DECLARE_READ16_MEMBER(drill_irq_r);
|
||||
DECLARE_WRITE16_MEMBER(drill_irq_w);
|
||||
u8 arm_pwr_r();
|
||||
u8 sensors_r();
|
||||
void coins_w(u8 data);
|
||||
void sensors_w(u16 data);
|
||||
u16 irq_r();
|
||||
void irq_w(offs_t offset, u16 data, u16 mem_mask);
|
||||
|
||||
DECLARE_MACHINE_START(drill);
|
||||
DECLARE_MACHINE_RESET(drill);
|
||||
INTERRUPT_GEN_MEMBER(drill_vblank_irq);
|
||||
INTERRUPT_GEN_MEMBER(vblank_irq);
|
||||
//INTERRUPT_GEN_MEMBER(drill_device_irq);
|
||||
void tile_decode();
|
||||
DECLARE_WRITE_LINE_MEMBER(irqhandler);
|
||||
|
||||
void drill_map(address_map &map);
|
||||
@ -92,23 +93,23 @@ protected:
|
||||
};
|
||||
|
||||
|
||||
READ8_MEMBER(_2mindril_state::arm_pwr_r)
|
||||
u8 _2mindril_state::arm_pwr_r()
|
||||
{
|
||||
int arm_pwr = m_in0->read();//throw
|
||||
|
||||
if(arm_pwr > 0xe0) return ~0x18;
|
||||
if(arm_pwr > 0xc0) return ~0x14;
|
||||
if(arm_pwr > 0x80) return ~0x12;
|
||||
if(arm_pwr > 0x40) return ~0x10;
|
||||
if (arm_pwr > 0xe0) return ~0x18;
|
||||
if (arm_pwr > 0xc0) return ~0x14;
|
||||
if (arm_pwr > 0x80) return ~0x12;
|
||||
if (arm_pwr > 0x40) return ~0x10;
|
||||
else return ~0x00;
|
||||
}
|
||||
|
||||
READ8_MEMBER(_2mindril_state::sensors_r)
|
||||
u8 _2mindril_state::sensors_r()
|
||||
{
|
||||
return (m_defender_sensor) | (m_shutter_sensor);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(_2mindril_state::coins_w)
|
||||
void _2mindril_state::coins_w(u8 data)
|
||||
{
|
||||
machine().bookkeeping().coin_counter_w(0, data & 0x04);
|
||||
machine().bookkeeping().coin_counter_w(1, data & 0x08);
|
||||
@ -147,7 +148,7 @@ void _2mindril_state::device_timer(emu_timer &timer, device_timer_id id, int par
|
||||
}
|
||||
#endif
|
||||
|
||||
WRITE16_MEMBER(_2mindril_state::sensors_w)
|
||||
void _2mindril_state::sensors_w(u16 data)
|
||||
{
|
||||
/*---- xxxx ---- ---- select "lamps" (guess)*/
|
||||
/*---- ---- ---- -x-- lamp*/
|
||||
@ -174,12 +175,12 @@ WRITE16_MEMBER(_2mindril_state::sensors_w)
|
||||
}
|
||||
}
|
||||
|
||||
READ16_MEMBER(_2mindril_state::drill_irq_r)
|
||||
u16 _2mindril_state::irq_r()
|
||||
{
|
||||
return m_irq_reg;
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(_2mindril_state::drill_irq_w)
|
||||
void _2mindril_state::irq_w(offs_t offset, u16 data, u16 mem_mask)
|
||||
{
|
||||
/*
|
||||
(note: could rather be irq mask)
|
||||
@ -187,13 +188,13 @@ WRITE16_MEMBER(_2mindril_state::drill_irq_w)
|
||||
---- ---- ---- x--- irq lv 4 ack, 0->1 latch
|
||||
---- ---- -??- -??? connected to the other levels?
|
||||
*/
|
||||
if(((m_irq_reg & 8) == 0) && data & 8)
|
||||
if (((m_irq_reg & 8) == 0) && data & 8)
|
||||
m_maincpu->set_input_line(4, CLEAR_LINE);
|
||||
|
||||
if(((m_irq_reg & 0x10) == 0) && data & 0x10)
|
||||
if (((m_irq_reg & 0x10) == 0) && data & 0x10)
|
||||
m_maincpu->set_input_line(5, CLEAR_LINE);
|
||||
|
||||
if(data & 0xffe7)
|
||||
if (data & 0xffe7)
|
||||
printf("%04x\n",data);
|
||||
|
||||
COMBINE_DATA(&m_irq_reg);
|
||||
@ -204,18 +205,18 @@ void _2mindril_state::drill_map(address_map &map)
|
||||
map(0x000000, 0x07ffff).rom();
|
||||
map(0x200000, 0x20ffff).ram();
|
||||
map(0x300000, 0x3000ff).ram();
|
||||
map(0x400000, 0x40ffff).rw(FUNC(_2mindril_state::f3_spriteram_r), FUNC(_2mindril_state::f3_spriteram_w));
|
||||
map(0x410000, 0x41bfff).rw(FUNC(_2mindril_state::f3_pf_data_r), FUNC(_2mindril_state::f3_pf_data_w));
|
||||
map(0x41c000, 0x41dfff).rw(FUNC(_2mindril_state::f3_videoram_r), FUNC(_2mindril_state::f3_videoram_w));
|
||||
map(0x41e000, 0x41ffff).rw(FUNC(_2mindril_state::f3_vram_r), FUNC(_2mindril_state::f3_vram_w));
|
||||
map(0x420000, 0x42ffff).rw(FUNC(_2mindril_state::f3_lineram_r), FUNC(_2mindril_state::f3_lineram_w));
|
||||
map(0x430000, 0x43ffff).rw(FUNC(_2mindril_state::f3_pivot_r), FUNC(_2mindril_state::f3_pivot_w));
|
||||
map(0x460000, 0x46000f).w(FUNC(_2mindril_state::f3_control_0_w));
|
||||
map(0x460010, 0x46001f).w(FUNC(_2mindril_state::f3_control_1_w));
|
||||
map(0x400000, 0x40ffff).ram().share("spriteram");
|
||||
map(0x410000, 0x41bfff).ram().w(FUNC(_2mindril_state::pf_ram_w)).share("pf_ram");
|
||||
map(0x41c000, 0x41dfff).ram().w(FUNC(_2mindril_state::textram_w)).share("textram");
|
||||
map(0x41e000, 0x41ffff).ram().w(FUNC(_2mindril_state::charram_w)).share("charram");
|
||||
map(0x420000, 0x42ffff).ram().share("line_ram");
|
||||
map(0x430000, 0x43ffff).ram().w(FUNC(_2mindril_state::pivot_w)).share("pivot_ram");
|
||||
map(0x460000, 0x46000f).w(FUNC(_2mindril_state::control_0_w));
|
||||
map(0x460010, 0x46001f).w(FUNC(_2mindril_state::control_1_w));
|
||||
map(0x500000, 0x501fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
|
||||
map(0x502022, 0x502023).nopw(); //countinously switches between 0 and 2
|
||||
map(0x600000, 0x600007).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)).umask16(0x00ff);
|
||||
map(0x60000c, 0x60000d).rw(FUNC(_2mindril_state::drill_irq_r), FUNC(_2mindril_state::drill_irq_w));
|
||||
map(0x60000c, 0x60000d).rw(FUNC(_2mindril_state::irq_r), FUNC(_2mindril_state::irq_w));
|
||||
map(0x60000e, 0x60000f).ram(); // unknown purpose, zeroed at start-up and nothing else
|
||||
map(0x700000, 0x70000f).rw("tc0510nio", FUNC(tc0510nio_device::read), FUNC(tc0510nio_device::write)).umask16(0xff00);
|
||||
map(0x800000, 0x800001).w(FUNC(_2mindril_state::sensors_w));
|
||||
@ -269,7 +270,7 @@ static const gfx_layout charlayout =
|
||||
4,
|
||||
{ 0,1,2,3 },
|
||||
{ 20, 16, 28, 24, 4, 0, 12, 8 },
|
||||
{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
|
||||
{ STEP8(0,4*8) },
|
||||
32*8
|
||||
};
|
||||
|
||||
@ -280,52 +281,19 @@ static const gfx_layout pivotlayout =
|
||||
4,
|
||||
{ 0,1,2,3 },
|
||||
{ 20, 16, 28, 24, 4, 0, 12, 8 },
|
||||
{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
|
||||
{ STEP8(0,4*8) },
|
||||
32*8
|
||||
};
|
||||
|
||||
static const gfx_layout spriteram_layout =
|
||||
{
|
||||
16,16,
|
||||
RGN_FRAC(1,2),
|
||||
6, /* Palettes have 4 bpp indexes despite up to 6 bpp data */
|
||||
{ RGN_FRAC(1,2)+0, RGN_FRAC(1,2)+1, 0, 1, 2, 3 },
|
||||
{
|
||||
4, 0, 12, 8,
|
||||
16+4, 16+0, 16+12, 16+8,
|
||||
32+4, 32+0, 32+12, 32+8,
|
||||
48+4, 48+0, 48+12, 48+8 },
|
||||
{ 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64,
|
||||
8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 },
|
||||
128*8 /* every sprite takes 128 consecutive bytes */
|
||||
};
|
||||
|
||||
static const gfx_layout tile_layout =
|
||||
{
|
||||
16,16,
|
||||
RGN_FRAC(1,2),
|
||||
6, /* Palettes have 4 bpp indexes despite up to 6 bpp data */
|
||||
{ RGN_FRAC(1,2)+2, RGN_FRAC(1,2)+3, 0, 1, 2, 3 },
|
||||
{
|
||||
4, 0, 16+4, 16+0,
|
||||
8+4, 8+0, 24+4, 24+0,
|
||||
32+4, 32+0, 48+4, 48+0,
|
||||
40+4, 40+0, 56+4, 56+0,
|
||||
},
|
||||
{ 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64,
|
||||
8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 },
|
||||
128*8 /* every sprite takes 128 consecutive bytes */
|
||||
};
|
||||
|
||||
static GFXDECODE_START( gfx_2mindril )
|
||||
GFXDECODE_ENTRY( nullptr, 0x000000, charlayout, 0x0000, 0x0400>>4 ) /* Dynamically modified */
|
||||
GFXDECODE_ENTRY( "gfx2", 0x000000, tile_layout, 0x0000, 0x2000>>4 ) /* Tiles area */
|
||||
GFXDECODE_ENTRY( "gfx1", 0x000000, spriteram_layout, 0x1000, 0x1000>>4 ) /* Sprites area */
|
||||
GFXDECODE_ENTRY( nullptr, 0x000000, pivotlayout, 0x0000, 0x400>>4 ) /* Dynamically modified */
|
||||
GFXDECODE_ENTRY( nullptr, 0x000000, charlayout, 0x0000, 0x0400>>4 ) /* Dynamically modified */
|
||||
GFXDECODE_ENTRY( "tilemap", 0x000000, gfx_16x16x4_packed_lsb, 0x0000, 0x2000>>4 ) /* Tiles area */
|
||||
GFXDECODE_ENTRY( "sprites", 0x000000, gfx_16x16x4_packed_lsb, 0x1000, 0x1000>>4 ) /* Sprites area */
|
||||
GFXDECODE_ENTRY( nullptr, 0x000000, pivotlayout, 0x0000, 0x400>>4 ) /* Dynamically modified */
|
||||
GFXDECODE_END
|
||||
|
||||
|
||||
INTERRUPT_GEN_MEMBER(_2mindril_state::drill_vblank_irq)
|
||||
INTERRUPT_GEN_MEMBER(_2mindril_state::vblank_irq)
|
||||
{
|
||||
device.execute().set_input_line(4, ASSERT_LINE);
|
||||
}
|
||||
@ -344,14 +312,14 @@ WRITE_LINE_MEMBER(_2mindril_state::irqhandler)
|
||||
}
|
||||
|
||||
|
||||
MACHINE_START_MEMBER(_2mindril_state,drill)
|
||||
void _2mindril_state::machine_start()
|
||||
{
|
||||
save_item(NAME(m_defender_sensor));
|
||||
save_item(NAME(m_shutter_sensor));
|
||||
save_item(NAME(m_irq_reg));
|
||||
}
|
||||
|
||||
MACHINE_RESET_MEMBER(_2mindril_state,drill)
|
||||
void _2mindril_state::machine_reset()
|
||||
{
|
||||
m_defender_sensor = 0;
|
||||
m_shutter_sensor = 0;
|
||||
@ -362,7 +330,7 @@ void _2mindril_state::drill(machine_config &config)
|
||||
{
|
||||
M68000(config, m_maincpu, 16000000);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &_2mindril_state::drill_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(_2mindril_state::drill_vblank_irq));
|
||||
m_maincpu->set_vblank_int("screen", FUNC(_2mindril_state::vblank_irq));
|
||||
//MCFG_DEVICE_PERIODIC_INT_DRIVER(_2mindril_state, drill_device_irq, 60)
|
||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx_2mindril);
|
||||
|
||||
@ -373,16 +341,13 @@ void _2mindril_state::drill(machine_config &config)
|
||||
tc0510nio.write_4_callback().set(FUNC(_2mindril_state::coins_w));
|
||||
tc0510nio.read_7_callback().set_ioport("COINS");
|
||||
|
||||
MCFG_MACHINE_START_OVERRIDE(_2mindril_state,drill)
|
||||
MCFG_MACHINE_RESET_OVERRIDE(_2mindril_state,drill)
|
||||
|
||||
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||
m_screen->set_refresh_hz(60);
|
||||
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* inaccurate, same as Taito F3? (needs screen raw params anyway) */
|
||||
m_screen->set_size(40*8+48*2, 32*8);
|
||||
m_screen->set_visarea(46, 40*8-1 + 46, 24, 24+224-1);
|
||||
m_screen->set_screen_update(FUNC(_2mindril_state::screen_update_f3));
|
||||
m_screen->screen_vblank().set(FUNC(_2mindril_state::screen_vblank_f3));
|
||||
m_screen->set_screen_update(FUNC(_2mindril_state::screen_update));
|
||||
m_screen->screen_vblank().set(FUNC(_2mindril_state::screen_vblank));
|
||||
|
||||
PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 0x2000);
|
||||
|
||||
@ -406,78 +371,20 @@ ROM_START( 2mindril )
|
||||
ROM_REGION( 0x200000, "ymsnd", 0 ) /* Samples */
|
||||
ROM_LOAD( "d58-11.ic31", 0x000000, 0x200000, CRC(dc26d58d) SHA1(cffb18667da18f5367b02af85a2f7674dd61ae97) )
|
||||
|
||||
ROM_REGION( 0x800000, "gfx1", ROMREGION_ERASE00 )
|
||||
ROM_REGION( 0x400000, "sprites", ROMREGION_ERASE00 )
|
||||
ROM_REGION( 0x200000, "sprites_hi", ROMREGION_ERASE00 )
|
||||
|
||||
ROM_REGION( 0x800000, "gfx2", 0 )
|
||||
ROM_LOAD16_BYTE( "d58-09.ic28", 0x000001, 0x200000, CRC(d8f6a86a) SHA1(d6b2ec309e21064574ee63e025ae4716b1982a98) )
|
||||
ROM_LOAD16_BYTE( "d58-08.ic27", 0x000000, 0x200000, CRC(9f5a3f52) SHA1(7b696bd823819965b974c853cebc1660750db61e) )
|
||||
ROM_LOAD( "d58-10.ic29", 0x400000, 0x200000, CRC(74c87e08) SHA1(f39b3a64f8338ccf5ca6eb76cee92a10fe0aad8f) )
|
||||
ROM_RELOAD( 0x600000, 0x200000 )
|
||||
ROM_REGION( 0x400000, "tilemap", 0 )
|
||||
ROM_LOAD32_WORD( "d58-08.ic27", 0x000000, 0x200000, CRC(9f5a3f52) SHA1(7b696bd823819965b974c853cebc1660750db61e) )
|
||||
ROM_LOAD32_WORD( "d58-09.ic28", 0x000002, 0x200000, CRC(d8f6a86a) SHA1(d6b2ec309e21064574ee63e025ae4716b1982a98) )
|
||||
|
||||
ROM_REGION( 0x200000, "tilemap_hi", 0 )
|
||||
ROM_LOAD ( "d58-10.ic29", 0x000000, 0x200000, CRC(74c87e08) SHA1(f39b3a64f8338ccf5ca6eb76cee92a10fe0aad8f) )
|
||||
ROM_END
|
||||
|
||||
void _2mindril_state::tile_decode()
|
||||
{
|
||||
uint8_t lsb,msb;
|
||||
uint32_t offset,i;
|
||||
uint8_t *gfx = memregion("gfx2")->base();
|
||||
int size=memregion("gfx2")->bytes();
|
||||
int data;
|
||||
|
||||
/* Setup ROM formats:
|
||||
|
||||
Some games will only use 4 or 5 bpp sprites, and some only use 4 bpp tiles,
|
||||
I don't believe this is software or prom controlled but simply the unused data lines
|
||||
are tied low on the game board if unused. This is backed up by the fact the palette
|
||||
indices are always related to 4 bpp data, even in 6 bpp games.
|
||||
|
||||
Most (all?) games with 5bpp tiles have the sixth bit set. Also, in Arabian Magic
|
||||
sprites 1200-120f contain 6bpp data which is probably bogus.
|
||||
video_start clears the fifth and sixth bit of the decoded graphics according
|
||||
to the bit depth specified in f3_config_table.
|
||||
|
||||
*/
|
||||
|
||||
offset = size/2;
|
||||
for (i = size/2+size/4; i<size; i+=2)
|
||||
{
|
||||
/* Expand 2bits into 4bits format */
|
||||
lsb = gfx[i+1];
|
||||
msb = gfx[i];
|
||||
|
||||
gfx[offset+0]=((msb&0x02)<<3) | ((msb&0x01)>>0) | ((lsb&0x02)<<4) | ((lsb&0x01)<<1);
|
||||
gfx[offset+2]=((msb&0x08)<<1) | ((msb&0x04)>>2) | ((lsb&0x08)<<2) | ((lsb&0x04)>>1);
|
||||
gfx[offset+1]=((msb&0x20)>>1) | ((msb&0x10)>>4) | ((lsb&0x20)<<0) | ((lsb&0x10)>>3);
|
||||
gfx[offset+3]=((msb&0x80)>>3) | ((msb&0x40)>>6) | ((lsb&0x80)>>2) | ((lsb&0x40)>>5);
|
||||
|
||||
offset+=4;
|
||||
}
|
||||
|
||||
gfx = memregion("gfx1")->base();
|
||||
size=memregion("gfx1")->bytes();
|
||||
|
||||
offset = size/2;
|
||||
for (i = size/2+size/4; i<size; i++)
|
||||
{
|
||||
int d1,d2,d3,d4;
|
||||
|
||||
/* Expand 2bits into 4bits format */
|
||||
data = gfx[i];
|
||||
d1 = (data>>0) & 3;
|
||||
d2 = (data>>2) & 3;
|
||||
d3 = (data>>4) & 3;
|
||||
d4 = (data>>6) & 3;
|
||||
|
||||
gfx[offset] = (d1<<2) | (d2<<6);
|
||||
offset++;
|
||||
|
||||
gfx[offset] = (d3<<2) | (d4<<6);
|
||||
offset++;
|
||||
}
|
||||
}
|
||||
|
||||
void _2mindril_state::init_drill()
|
||||
{
|
||||
m_f3_game = TMDRILL;
|
||||
m_game = TMDRILL;
|
||||
tile_decode();
|
||||
}
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -60,19 +60,28 @@ public:
|
||||
taito_f3_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_audiocpu(*this, "taito_en:audiocpu"),
|
||||
m_taito_en(*this, "taito_en"),
|
||||
m_watchdog(*this, "watchdog"),
|
||||
m_oki(*this, "oki"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_screen(*this, "screen"),
|
||||
m_palette(*this, "palette"),
|
||||
m_eeprom(*this, "eeprom"),
|
||||
m_f3_ram(*this,"f3_ram"),
|
||||
m_paletteram32(*this, "paletteram"),
|
||||
m_spriterom_hi(*this, "sprites_hi"),
|
||||
m_tilemaprom_hi(*this, "tilemap_hi"),
|
||||
m_textram(*this, "textram", 0),
|
||||
m_spriteram(*this, "spriteram", 0),
|
||||
m_charram(*this, "charram", 0),
|
||||
m_line_ram(*this, "line_ram", 0),
|
||||
m_pf_ram(*this, "pf_ram", 0),
|
||||
m_pivot_ram(*this, "pivot_ram", 0),
|
||||
m_input(*this, "IN.%u", 0),
|
||||
m_dial(*this, "DIAL.%u", 0),
|
||||
m_eepromin(*this, "EEPROMIN")
|
||||
m_eepromin(*this, "EEPROMIN"),
|
||||
m_eepromout(*this, "EEPROMOUT"),
|
||||
m_audiocpu(*this, "taito_en:audiocpu"),
|
||||
m_taito_en(*this, "taito_en"),
|
||||
m_oki(*this, "oki"),
|
||||
m_paletteram32(*this, "paletteram"),
|
||||
m_okibank(*this, "okibank")
|
||||
{ }
|
||||
|
||||
void f3_eeprom(machine_config &config);
|
||||
@ -132,75 +141,103 @@ protected:
|
||||
TIMER_F3_INTERRUPT3
|
||||
};
|
||||
|
||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
|
||||
virtual void device_post_load(void) override;
|
||||
|
||||
virtual void machine_start() override;
|
||||
virtual void machine_reset() override;
|
||||
virtual void video_start() override;
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
optional_device<cpu_device> m_audiocpu;
|
||||
optional_device<taito_en_device> m_taito_en;
|
||||
optional_device<watchdog_timer_device> m_watchdog;
|
||||
optional_device<okim6295_device> m_oki;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<palette_device> m_palette;
|
||||
optional_device<eeprom_serial_base_device> m_eeprom;
|
||||
|
||||
optional_shared_ptr<uint32_t> m_f3_ram;
|
||||
optional_shared_ptr<uint32_t> m_paletteram32;
|
||||
optional_region_ptr<u8> m_spriterom_hi; // all but 2mindril, bubsymphb
|
||||
optional_region_ptr<u8> m_tilemaprom_hi;
|
||||
|
||||
required_shared_ptr<u16> m_textram;
|
||||
required_shared_ptr<u16> m_spriteram;
|
||||
required_shared_ptr<u16> m_charram;
|
||||
required_shared_ptr<u16> m_line_ram;
|
||||
required_shared_ptr<u16> m_pf_ram;
|
||||
required_shared_ptr<u16> m_pivot_ram;
|
||||
|
||||
optional_ioport_array<6> m_input;
|
||||
optional_ioport_array<2> m_dial;
|
||||
optional_ioport m_eepromin;
|
||||
|
||||
|
||||
std::unique_ptr<uint16_t[]> m_videoram;
|
||||
std::unique_ptr<uint16_t[]> m_spriteram;
|
||||
std::unique_ptr<uint16_t[]> m_f3_vram;
|
||||
std::unique_ptr<uint16_t[]> m_f3_line_ram;
|
||||
std::unique_ptr<uint16_t[]> m_f3_pf_data;
|
||||
std::unique_ptr<uint16_t[]> m_f3_pivot_ram;
|
||||
optional_ioport m_eepromout;
|
||||
|
||||
emu_timer *m_interrupt3_timer;
|
||||
uint32_t m_coin_word[2];
|
||||
int m_f3_game;
|
||||
tilemap_t *m_pf1_tilemap;
|
||||
tilemap_t *m_pf2_tilemap;
|
||||
tilemap_t *m_pf3_tilemap;
|
||||
tilemap_t *m_pf4_tilemap;
|
||||
tilemap_t *m_pf5_tilemap;
|
||||
tilemap_t *m_pf6_tilemap;
|
||||
tilemap_t *m_pf7_tilemap;
|
||||
tilemap_t *m_pf8_tilemap;
|
||||
u32 m_coin_word[2];
|
||||
|
||||
struct tempsprite
|
||||
{
|
||||
int code, color;
|
||||
int flipx, flipy;
|
||||
int x, y;
|
||||
int zoomx, zoomy;
|
||||
int pri;
|
||||
};
|
||||
|
||||
struct f3_playfield_line_inf
|
||||
{
|
||||
int alpha_mode[256];
|
||||
int pri[256];
|
||||
|
||||
/* use for draw_scanlines */
|
||||
u16 *src[256], *src_s[256], *src_e[256];
|
||||
u8 *tsrc[256], *tsrc_s[256];
|
||||
int x_count[256];
|
||||
u32 x_zoom[256];
|
||||
u32 clip0[256];
|
||||
u32 clip1[256];
|
||||
};
|
||||
|
||||
struct f3_spritealpha_line_inf
|
||||
{
|
||||
u16 alpha_level[256];
|
||||
u16 spri[256];
|
||||
u16 sprite_alpha[256];
|
||||
u32 sprite_clip0[256];
|
||||
u32 sprite_clip1[256];
|
||||
s16 clip0_l[256];
|
||||
s16 clip0_r[256];
|
||||
s16 clip1_l[256];
|
||||
s16 clip1_r[256];
|
||||
};
|
||||
|
||||
int m_game;
|
||||
tilemap_t *m_tilemap[8];
|
||||
tilemap_t *m_pixel_layer;
|
||||
tilemap_t *m_vram_layer;
|
||||
std::unique_ptr<uint16_t[]> m_spriteram16_buffered;
|
||||
uint16_t m_f3_control_0[8];
|
||||
uint16_t m_f3_control_1[8];
|
||||
std::unique_ptr<u16[]> m_spriteram16_buffered;
|
||||
u16 m_control_0[8];
|
||||
u16 m_control_1[8];
|
||||
int m_flipscreen;
|
||||
uint8_t m_sprite_extra_planes;
|
||||
uint8_t m_sprite_pen_mask;
|
||||
uint16_t *m_f3_pf_data_1;
|
||||
uint16_t *m_f3_pf_data_2;
|
||||
uint16_t *m_f3_pf_data_3;
|
||||
uint16_t *m_f3_pf_data_4;
|
||||
uint16_t *m_f3_pf_data_5;
|
||||
uint16_t *m_f3_pf_data_6;
|
||||
uint16_t *m_f3_pf_data_7;
|
||||
uint16_t *m_f3_pf_data_8;
|
||||
u8 m_sprite_extra_planes;
|
||||
u8 m_sprite_pen_mask;
|
||||
u16 *m_pf_data[8];
|
||||
int m_sprite_lag;
|
||||
uint8_t m_sprite_pri_usage;
|
||||
u8 m_sprite_pri_usage;
|
||||
bitmap_ind8 m_pri_alp_bitmap;
|
||||
int m_f3_alpha_level_2as;
|
||||
int m_f3_alpha_level_2ad;
|
||||
int m_f3_alpha_level_3as;
|
||||
int m_f3_alpha_level_3ad;
|
||||
int m_f3_alpha_level_2bs;
|
||||
int m_f3_alpha_level_2bd;
|
||||
int m_f3_alpha_level_3bs;
|
||||
int m_f3_alpha_level_3bd;
|
||||
int m_alpha_level_2as;
|
||||
int m_alpha_level_2ad;
|
||||
int m_alpha_level_3as;
|
||||
int m_alpha_level_3ad;
|
||||
int m_alpha_level_2bs;
|
||||
int m_alpha_level_2bd;
|
||||
int m_alpha_level_3bs;
|
||||
int m_alpha_level_3bd;
|
||||
int m_alpha_level_last;
|
||||
int m_width_mask;
|
||||
int m_twidth_mask;
|
||||
int m_twidth_mask_bit;
|
||||
std::unique_ptr<uint8_t[]> m_tile_opaque_sp;
|
||||
std::unique_ptr<uint8_t[]> m_tile_opaque_pf[8];
|
||||
uint8_t m_add_sat[256][256];
|
||||
std::unique_ptr<u8[]> m_tile_opaque_sp;
|
||||
std::unique_ptr<u8[]> m_tile_opaque_pf[8];
|
||||
u8 m_add_sat[256][256];
|
||||
int m_alpha_s_1_1;
|
||||
int m_alpha_s_1_2;
|
||||
int m_alpha_s_1_4;
|
||||
@ -221,197 +258,151 @@ protected:
|
||||
int m_alpha_s_3b_0;
|
||||
int m_alpha_s_3b_1;
|
||||
int m_alpha_s_3b_2;
|
||||
uint32_t m_dval;
|
||||
uint8_t m_pval;
|
||||
uint8_t m_tval;
|
||||
uint8_t m_pdest_2a;
|
||||
uint8_t m_pdest_2b;
|
||||
u32 m_dval;
|
||||
u8 m_pval;
|
||||
u8 m_tval;
|
||||
u8 m_pdest_2a;
|
||||
u8 m_pdest_2b;
|
||||
int m_tr_2a;
|
||||
int m_tr_2b;
|
||||
uint8_t m_pdest_3a;
|
||||
uint8_t m_pdest_3b;
|
||||
u8 m_pdest_3a;
|
||||
u8 m_pdest_3b;
|
||||
int m_tr_3a;
|
||||
int m_tr_3b;
|
||||
uint16_t *m_src0;
|
||||
uint16_t *m_src_s0;
|
||||
uint16_t *m_src_e0;
|
||||
uint16_t m_clip_al0;
|
||||
uint16_t m_clip_ar0;
|
||||
uint16_t m_clip_bl0;
|
||||
uint16_t m_clip_br0;
|
||||
uint8_t *m_tsrc0;
|
||||
uint8_t *m_tsrc_s0;
|
||||
uint32_t m_x_count0;
|
||||
uint32_t m_x_zoom0;
|
||||
uint16_t *m_src1;
|
||||
uint16_t *m_src_s1;
|
||||
uint16_t *m_src_e1;
|
||||
uint16_t m_clip_al1;
|
||||
uint16_t m_clip_ar1;
|
||||
uint16_t m_clip_bl1;
|
||||
uint16_t m_clip_br1;
|
||||
uint8_t *m_tsrc1;
|
||||
uint8_t *m_tsrc_s1;
|
||||
uint32_t m_x_count1;
|
||||
uint32_t m_x_zoom1;
|
||||
uint16_t *m_src2;
|
||||
uint16_t *m_src_s2;
|
||||
uint16_t *m_src_e2;
|
||||
uint16_t m_clip_al2;
|
||||
uint16_t m_clip_ar2;
|
||||
uint16_t m_clip_bl2;
|
||||
uint16_t m_clip_br2;
|
||||
uint8_t *m_tsrc2;
|
||||
uint8_t *m_tsrc_s2;
|
||||
uint32_t m_x_count2;
|
||||
uint32_t m_x_zoom2;
|
||||
uint16_t *m_src3;
|
||||
uint16_t *m_src_s3;
|
||||
uint16_t *m_src_e3;
|
||||
uint16_t m_clip_al3;
|
||||
uint16_t m_clip_ar3;
|
||||
uint16_t m_clip_bl3;
|
||||
uint16_t m_clip_br3;
|
||||
uint8_t *m_tsrc3;
|
||||
uint8_t *m_tsrc_s3;
|
||||
uint32_t m_x_count3;
|
||||
uint32_t m_x_zoom3;
|
||||
uint16_t *m_src4;
|
||||
uint16_t *m_src_s4;
|
||||
uint16_t *m_src_e4;
|
||||
uint16_t m_clip_al4;
|
||||
uint16_t m_clip_ar4;
|
||||
uint16_t m_clip_bl4;
|
||||
uint16_t m_clip_br4;
|
||||
uint8_t *m_tsrc4;
|
||||
uint8_t *m_tsrc_s4;
|
||||
uint32_t m_x_count4;
|
||||
uint32_t m_x_zoom4;
|
||||
u16 *m_src[5];
|
||||
u16 *m_src_s[5];
|
||||
u16 *m_src_e[5];
|
||||
u16 m_clip_al[5];
|
||||
u16 m_clip_ar[5];
|
||||
u16 m_clip_bl[5];
|
||||
u16 m_clip_br[5];
|
||||
u8 *m_tsrc[5];
|
||||
u8 *m_tsrc_s[5];
|
||||
u32 m_x_count[5];
|
||||
u32 m_x_zoom[5];
|
||||
struct tempsprite *m_spritelist;
|
||||
const struct tempsprite *m_sprite_end;
|
||||
struct f3_playfield_line_inf *m_pf_line_inf;
|
||||
struct f3_spritealpha_line_inf *m_sa_line_inf;
|
||||
const struct F3config *m_f3_game_config;
|
||||
int (taito_f3_state::*m_dpix_n[8][16])(uint32_t s_pix);
|
||||
int (taito_f3_state::**m_dpix_lp[5])(uint32_t s_pix);
|
||||
int (taito_f3_state::**m_dpix_sp[9])(uint32_t s_pix);
|
||||
const struct F3config *m_game_config;
|
||||
int (taito_f3_state::*m_dpix_n[8][16])(u32 s_pix);
|
||||
int (taito_f3_state::**m_dpix_lp[5])(u32 s_pix);
|
||||
int (taito_f3_state::**m_dpix_sp[9])(u32 s_pix);
|
||||
|
||||
DECLARE_READ32_MEMBER(f3_control_r);
|
||||
DECLARE_WRITE32_MEMBER(f3_control_w);
|
||||
DECLARE_WRITE32_MEMBER(f3_sound_reset_0_w);
|
||||
DECLARE_WRITE32_MEMBER(f3_sound_reset_1_w);
|
||||
DECLARE_WRITE32_MEMBER(f3_sound_bankswitch_w);
|
||||
DECLARE_WRITE16_MEMBER(f3_unk_w);
|
||||
DECLARE_READ32_MEMBER(bubsympb_oki_r);
|
||||
DECLARE_WRITE32_MEMBER(bubsympb_oki_w);
|
||||
DECLARE_READ16_MEMBER(f3_pf_data_r);
|
||||
DECLARE_WRITE16_MEMBER(f3_pf_data_w);
|
||||
DECLARE_WRITE16_MEMBER(f3_control_0_w);
|
||||
DECLARE_WRITE16_MEMBER(f3_control_1_w);
|
||||
DECLARE_READ16_MEMBER(f3_spriteram_r);
|
||||
DECLARE_WRITE16_MEMBER(f3_spriteram_w);
|
||||
DECLARE_READ16_MEMBER(f3_videoram_r);
|
||||
DECLARE_WRITE16_MEMBER(f3_videoram_w);
|
||||
DECLARE_READ16_MEMBER(f3_vram_r);
|
||||
DECLARE_WRITE16_MEMBER(f3_vram_w);
|
||||
DECLARE_READ16_MEMBER(f3_pivot_r);
|
||||
DECLARE_WRITE16_MEMBER(f3_pivot_w);
|
||||
DECLARE_READ16_MEMBER(f3_lineram_r);
|
||||
DECLARE_WRITE16_MEMBER(f3_lineram_w);
|
||||
DECLARE_WRITE32_MEMBER(f3_palette_24bit_w);
|
||||
u16 pf_ram_r(offs_t offset);
|
||||
void pf_ram_w(offs_t offset, u16 data, u16 mem_mask = ~0);
|
||||
void control_0_w(offs_t offset, u16 data, u16 mem_mask = ~0);
|
||||
void control_1_w(offs_t offset, u16 data, u16 mem_mask = ~0);
|
||||
u16 spriteram_r(offs_t offset);
|
||||
void spriteram_w(offs_t offset, u16 data, u16 mem_mask = ~0);
|
||||
u16 textram_r(offs_t offset);
|
||||
void textram_w(offs_t offset, u16 data, u16 mem_mask = ~0);
|
||||
u16 charram_r(offs_t offset);
|
||||
void charram_w(offs_t offset, u16 data, u16 mem_mask = ~0);
|
||||
u16 pivot_r(offs_t offset);
|
||||
void pivot_w(offs_t offset, u16 data, u16 mem_mask = ~0);
|
||||
u16 lineram_r(offs_t offset);
|
||||
void lineram_w(offs_t offset, u16 data, u16 mem_mask = ~0);
|
||||
|
||||
TILE_GET_INFO_MEMBER(get_tile_info1);
|
||||
TILE_GET_INFO_MEMBER(get_tile_info2);
|
||||
TILE_GET_INFO_MEMBER(get_tile_info3);
|
||||
TILE_GET_INFO_MEMBER(get_tile_info4);
|
||||
TILE_GET_INFO_MEMBER(get_tile_info5);
|
||||
TILE_GET_INFO_MEMBER(get_tile_info6);
|
||||
TILE_GET_INFO_MEMBER(get_tile_info7);
|
||||
TILE_GET_INFO_MEMBER(get_tile_info8);
|
||||
TILE_GET_INFO_MEMBER(get_tile_info_vram);
|
||||
template<unsigned Layer> TILE_GET_INFO_MEMBER(get_tile_info);
|
||||
TILE_GET_INFO_MEMBER(get_tile_info_text);
|
||||
TILE_GET_INFO_MEMBER(get_tile_info_pixel);
|
||||
uint32_t screen_update_f3(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
DECLARE_WRITE_LINE_MEMBER(screen_vblank_f3);
|
||||
INTERRUPT_GEN_MEMBER(f3_interrupt2);
|
||||
u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
DECLARE_WRITE_LINE_MEMBER(screen_vblank);
|
||||
|
||||
void bubsympb_map(address_map &map);
|
||||
void f3_map(address_map &map);
|
||||
|
||||
virtual void machine_start() override;
|
||||
virtual void machine_reset() override;
|
||||
virtual void video_start() override;
|
||||
void tile_decode();
|
||||
|
||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
|
||||
virtual void device_post_load(void) override;
|
||||
|
||||
inline void get_tile_info(tile_data &tileinfo, int tile_index, uint16_t *gfx_base);
|
||||
inline void f3_drawgfx(bitmap_rgb32 &dest_bmp,const rectangle &clip,gfx_element *gfx,int code,int color,int flipx,int flipy,int sx,int sy,uint8_t pri_dst);
|
||||
inline void f3_drawgfxzoom(bitmap_rgb32 &dest_bmp,const rectangle &clip,gfx_element *gfx,int code,int color,int flipx,int flipy,int sx,int sy,int scalex,int scaley,uint8_t pri_dst);
|
||||
inline void f3_drawgfx(bitmap_rgb32 &dest_bmp, const rectangle &clip, gfx_element *gfx, int code, int color, int flipx, int flipy, int sx, int sy, u8 pri_dst);
|
||||
inline void f3_drawgfxzoom(bitmap_rgb32 &dest_bmp, const rectangle &clip, gfx_element *gfx, int code, int color, int flipx, int flipy, int sx, int sy, int scalex, int scaley, u8 pri_dst);
|
||||
void draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
void get_sprite_info(const uint16_t *spriteram16_ptr);
|
||||
void get_sprite_info(const u16 *spriteram16_ptr);
|
||||
void print_debug_info(bitmap_rgb32 &bitmap);
|
||||
inline void f3_alpha_set_level();
|
||||
inline void f3_alpha_blend32_s(int alphas, uint32_t s);
|
||||
inline void f3_alpha_blend32_d(int alphas, uint32_t s);
|
||||
inline void f3_alpha_blend_1_1(uint32_t s);
|
||||
inline void f3_alpha_blend_1_2(uint32_t s);
|
||||
inline void f3_alpha_blend_1_4(uint32_t s);
|
||||
inline void f3_alpha_blend_1_5(uint32_t s);
|
||||
inline void f3_alpha_blend_1_6(uint32_t s);
|
||||
inline void f3_alpha_blend_1_8(uint32_t s);
|
||||
inline void f3_alpha_blend_1_9(uint32_t s);
|
||||
inline void f3_alpha_blend_1_a(uint32_t s);
|
||||
inline void f3_alpha_blend_2a_0(uint32_t s);
|
||||
inline void f3_alpha_blend_2a_4(uint32_t s);
|
||||
inline void f3_alpha_blend_2a_8(uint32_t s);
|
||||
inline void f3_alpha_blend_2b_0(uint32_t s);
|
||||
inline void f3_alpha_blend_2b_4(uint32_t s);
|
||||
inline void f3_alpha_blend_2b_8(uint32_t s);
|
||||
inline void f3_alpha_blend_3a_0(uint32_t s);
|
||||
inline void f3_alpha_blend_3a_1(uint32_t s);
|
||||
inline void f3_alpha_blend_3a_2(uint32_t s);
|
||||
inline void f3_alpha_blend_3b_0(uint32_t s);
|
||||
inline void f3_alpha_blend_3b_1(uint32_t s);
|
||||
inline void f3_alpha_blend_3b_2(uint32_t s);
|
||||
int dpix_1_noalpha(uint32_t s_pix);
|
||||
int dpix_ret1(uint32_t s_pix);
|
||||
int dpix_ret0(uint32_t s_pix);
|
||||
int dpix_1_1(uint32_t s_pix);
|
||||
int dpix_1_2(uint32_t s_pix);
|
||||
int dpix_1_4(uint32_t s_pix);
|
||||
int dpix_1_5(uint32_t s_pix);
|
||||
int dpix_1_6(uint32_t s_pix);
|
||||
int dpix_1_8(uint32_t s_pix);
|
||||
int dpix_1_9(uint32_t s_pix);
|
||||
int dpix_1_a(uint32_t s_pix);
|
||||
int dpix_2a_0(uint32_t s_pix);
|
||||
int dpix_2a_4(uint32_t s_pix);
|
||||
int dpix_2a_8(uint32_t s_pix);
|
||||
int dpix_3a_0(uint32_t s_pix);
|
||||
int dpix_3a_1(uint32_t s_pix);
|
||||
int dpix_3a_2(uint32_t s_pix);
|
||||
int dpix_2b_0(uint32_t s_pix);
|
||||
int dpix_2b_4(uint32_t s_pix);
|
||||
int dpix_2b_8(uint32_t s_pix);
|
||||
int dpix_3b_0(uint32_t s_pix);
|
||||
int dpix_3b_1(uint32_t s_pix);
|
||||
int dpix_3b_2(uint32_t s_pix);
|
||||
int dpix_2_0(uint32_t s_pix);
|
||||
int dpix_2_4(uint32_t s_pix);
|
||||
int dpix_2_8(uint32_t s_pix);
|
||||
int dpix_3_0(uint32_t s_pix);
|
||||
int dpix_3_1(uint32_t s_pix);
|
||||
int dpix_3_2(uint32_t s_pix);
|
||||
inline void dpix_1_sprite(uint32_t s_pix);
|
||||
inline void dpix_bg(uint32_t bgcolor);
|
||||
inline void alpha_set_level();
|
||||
inline void alpha_blend32_s(int alphas, u32 s);
|
||||
inline void alpha_blend32_d(int alphas, u32 s);
|
||||
inline void alpha_blend_1_1(u32 s);
|
||||
inline void alpha_blend_1_2(u32 s);
|
||||
inline void alpha_blend_1_4(u32 s);
|
||||
inline void alpha_blend_1_5(u32 s);
|
||||
inline void alpha_blend_1_6(u32 s);
|
||||
inline void alpha_blend_1_8(u32 s);
|
||||
inline void alpha_blend_1_9(u32 s);
|
||||
inline void alpha_blend_1_a(u32 s);
|
||||
inline void alpha_blend_2a_0(u32 s);
|
||||
inline void alpha_blend_2a_4(u32 s);
|
||||
inline void alpha_blend_2a_8(u32 s);
|
||||
inline void alpha_blend_2b_0(u32 s);
|
||||
inline void alpha_blend_2b_4(u32 s);
|
||||
inline void alpha_blend_2b_8(u32 s);
|
||||
inline void alpha_blend_3a_0(u32 s);
|
||||
inline void alpha_blend_3a_1(u32 s);
|
||||
inline void alpha_blend_3a_2(u32 s);
|
||||
inline void alpha_blend_3b_0(u32 s);
|
||||
inline void alpha_blend_3b_1(u32 s);
|
||||
inline void alpha_blend_3b_2(u32 s);
|
||||
int dpix_1_noalpha(u32 s_pix);
|
||||
int dpix_ret1(u32 s_pix);
|
||||
int dpix_ret0(u32 s_pix);
|
||||
int dpix_1_1(u32 s_pix);
|
||||
int dpix_1_2(u32 s_pix);
|
||||
int dpix_1_4(u32 s_pix);
|
||||
int dpix_1_5(u32 s_pix);
|
||||
int dpix_1_6(u32 s_pix);
|
||||
int dpix_1_8(u32 s_pix);
|
||||
int dpix_1_9(u32 s_pix);
|
||||
int dpix_1_a(u32 s_pix);
|
||||
int dpix_2a_0(u32 s_pix);
|
||||
int dpix_2a_4(u32 s_pix);
|
||||
int dpix_2a_8(u32 s_pix);
|
||||
int dpix_3a_0(u32 s_pix);
|
||||
int dpix_3a_1(u32 s_pix);
|
||||
int dpix_3a_2(u32 s_pix);
|
||||
int dpix_2b_0(u32 s_pix);
|
||||
int dpix_2b_4(u32 s_pix);
|
||||
int dpix_2b_8(u32 s_pix);
|
||||
int dpix_3b_0(u32 s_pix);
|
||||
int dpix_3b_1(u32 s_pix);
|
||||
int dpix_3b_2(u32 s_pix);
|
||||
int dpix_2_0(u32 s_pix);
|
||||
int dpix_2_4(u32 s_pix);
|
||||
int dpix_2_8(u32 s_pix);
|
||||
int dpix_3_0(u32 s_pix);
|
||||
int dpix_3_1(u32 s_pix);
|
||||
int dpix_3_2(u32 s_pix);
|
||||
inline void dpix_1_sprite(u32 s_pix);
|
||||
inline void dpix_bg(u32 bgcolor);
|
||||
void init_alpha_blend_func();
|
||||
inline void draw_scanlines(bitmap_rgb32 &bitmap, int xsize, int16_t *draw_line_num, const struct f3_playfield_line_inf **line_t, const int *sprite, uint32_t orient, int skip_layer_num);
|
||||
void visible_tile_check(struct f3_playfield_line_inf *line_t, int line, uint32_t x_index_fx,uint32_t y_index, uint16_t *f3_pf_data_n);
|
||||
void calculate_clip(int y, uint16_t pri, uint32_t* clip0, uint32_t* clip1, int* line_enable);
|
||||
inline void draw_scanlines(bitmap_rgb32 &bitmap, int xsize, s16 *draw_line_num, const struct f3_playfield_line_inf **line_t, const int *sprite, u32 orient, int skip_layer_num);
|
||||
void visible_tile_check(struct f3_playfield_line_inf *line_t, int line, u32 x_index_fx, u32 y_index, u16 *pf_data_n);
|
||||
void calculate_clip(int y, u16 pri, u32* clip0, u32* clip1, int *line_enable);
|
||||
void get_spritealphaclip_info();
|
||||
void get_line_ram_info(tilemap_t *tmap, int sx, int sy, int pos, uint16_t *f3_pf_data_n);
|
||||
void get_line_ram_info(tilemap_t *tmap, int sx, int sy, int pos, u16 *pf_data_n);
|
||||
void get_vram_info(tilemap_t *vram_tilemap, tilemap_t *pixel_tilemap, int sx, int sy);
|
||||
void scanline_draw(bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
|
||||
private:
|
||||
optional_device<cpu_device> m_audiocpu;
|
||||
optional_device<taito_en_device> m_taito_en;
|
||||
optional_device<okim6295_device> m_oki;
|
||||
|
||||
optional_shared_ptr<u32> m_paletteram32;
|
||||
optional_memory_bank m_okibank;
|
||||
|
||||
void bubsympb_oki_w(u8 data);
|
||||
u32 f3_control_r(offs_t offset);
|
||||
void f3_control_w(offs_t offset, u32 data, u32 mem_mask = ~0);
|
||||
void f3_unk_w(offs_t offset, u16 data);
|
||||
void sound_reset_0_w(u32 data);
|
||||
void sound_reset_1_w(u32 data);
|
||||
void sound_bankswitch_w(offs_t offset, u32 data, u32 mem_mask = ~0);
|
||||
void palette_24bit_w(offs_t offset, u32 data, u32 mem_mask = ~0);
|
||||
|
||||
INTERRUPT_GEN_MEMBER(interrupt2);
|
||||
|
||||
void bubsympb_oki_map(address_map &map);
|
||||
};
|
||||
|
||||
#endif // MAME_INCLUDES_TAITO_F3_H
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user