warriorb.cpp : Updates

Correct clock (related to XTAL on actual PCB), Simplify handlers, gfxdecodes, Correct ROM loading, Add notes, Reduce unnecessary lines, Fix namings
This commit is contained in:
cam900 2019-06-06 23:58:31 +09:00
parent d0d95fb05b
commit 25bd98f329
3 changed files with 80 additions and 112 deletions

View File

@ -197,7 +197,7 @@ void warriorb_state::pancontrol_w(offs_t offset, u8 data)
}
WRITE16_MEMBER(warriorb_state::tc0100scn_dual_screen_w)
void warriorb_state::tc0100scn_dual_screen_w(offs_t offset, u16 data, u16 mem_mask)
{
m_tc0100scn[0]->ram_w(offset, data, mem_mask);
m_tc0100scn[1]->ram_w(offset, data, mem_mask);
@ -376,36 +376,14 @@ INPUT_PORTS_END
GFX DECODING
***********************************************************/
static const gfx_layout tilelayout =
{
16,16, /* 16*16 sprites */
RGN_FRAC(1,1),
4, /* 4 bits per pixel */
{ 0, 1, 2, 3 },
{ 3*4, 2*4, 11*4, 10*4, 1*4, 0*4, 9*4, 8*4, 7*4, 6*4, 15*4, 14*4, 5*4, 4*4, 13*4, 12*4 },
{ 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 charlayout =
{
8,8, /* 8*8 characters */
RGN_FRAC(1,1),
4, /* 4 bits per pixel */
{ 0, 1, 2, 3 },
{ 2*4, 3*4, 0*4, 1*4, 6*4, 7*4, 4*4, 5*4 },
{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
32*8 /* every sprite takes 32 consecutive bytes */
};
static GFXDECODE_START( gfx_warriorb_1 )
GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 0, 256 ) /* sprites */
GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 256 ) /* scr tiles (screen 1) */
GFXDECODE_ENTRY( "sprites", 0, gfx_16x16x4_packed_lsb, 0, 256 ) /* sprites */
GFXDECODE_ENTRY( "tc0100scn_1", 0, gfx_8x8x4_packed_msb, 0, 256 ) /* scr tiles (screen 1) */
GFXDECODE_END
static GFXDECODE_START( gfx_warriorb_2 )
GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 0, 256 ) /* sprites */
GFXDECODE_ENTRY( "gfx3", 0, charlayout, 0, 256 ) /* scr tiles (screen 2) */
GFXDECODE_ENTRY( "sprites", 0, gfx_16x16x4_packed_lsb, 0, 256 ) /* sprites */
GFXDECODE_ENTRY( "tc0100scn_2", 0, gfx_8x8x4_packed_msb, 0, 256 ) /* scr tiles (screen 2) */
GFXDECODE_END
/***********************************************************
@ -428,11 +406,11 @@ void warriorb_state::machine_reset()
void warriorb_state::darius2d(machine_config &config)
{
/* basic machine hardware */
M68000(config, m_maincpu, 12000000); /* 12 MHz ??? (Might well be 16!) */
M68000(config, m_maincpu, 16_MHz_XTAL); /* MC68000P12F 16 MHz, 16 MHz XTAL */
m_maincpu->set_addrmap(AS_PROGRAM, &warriorb_state::darius2d_map);
m_maincpu->set_vblank_int("lscreen", FUNC(warriorb_state::irq4_line_hold));
z80_device &audiocpu(Z80(config, "audiocpu", 16000000/4)); /* 4 MHz ? */
z80_device &audiocpu(Z80(config, "audiocpu", 16_MHz_XTAL / 4)); /* 4 MHz (16 MHz XTAL / 4) */
audiocpu.set_addrmap(AS_PROGRAM, &warriorb_state::z80_sound_map);
TC0220IOC(config, m_tc0220ioc, 0);
@ -486,7 +464,7 @@ void warriorb_state::darius2d(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
ym2610_device &ymsnd(YM2610(config, "ymsnd", 16000000/2));
ym2610_device &ymsnd(YM2610(config, "ymsnd", 16_MHz_XTAL / 2));
ymsnd.irq_handler().set_inputline("audiocpu", 0);
ymsnd.add_route(0, "lspeaker", 0.25);
ymsnd.add_route(0, "rspeaker", 0.25);
@ -508,11 +486,11 @@ void warriorb_state::darius2d(machine_config &config)
void warriorb_state::warriorb(machine_config &config)
{
/* basic machine hardware */
M68000(config, m_maincpu, 16000000); /* 16 MHz ? */
M68000(config, m_maincpu, 16_MHz_XTAL); /* MC68000P12F 16 MHz, 16 MHz XTAL */
m_maincpu->set_addrmap(AS_PROGRAM, &warriorb_state::warriorb_map);
m_maincpu->set_vblank_int("lscreen", FUNC(warriorb_state::irq4_line_hold));
z80_device &audiocpu(Z80(config, "audiocpu", 16000000/4)); /* 4 MHz ? */
z80_device &audiocpu(Z80(config, "audiocpu", 16_MHz_XTAL / 4)); /* 4 MHz (16 MHz XTAL / 4) */
audiocpu.set_addrmap(AS_PROGRAM, &warriorb_state::z80_sound_map);
TC0510NIO(config, m_tc0510nio, 0);
@ -567,7 +545,7 @@ void warriorb_state::warriorb(machine_config &config)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
ym2610b_device &ymsnd(YM2610B(config, "ymsnd", 16000000/2));
ym2610b_device &ymsnd(YM2610B(config, "ymsnd", 16_MHz_XTAL / 2));
ymsnd.irq_handler().set_inputline("audiocpu", 0);
ymsnd.add_route(0, "lspeaker", 0.25);
ymsnd.add_route(0, "rspeaker", 0.25);
@ -603,22 +581,19 @@ ROM_START( sagaia )
ROM_REGION( 0x20000, "audiocpu", 0 ) /* sound cpu */
ROM_LOAD( "c07_41.69", 0x00000, 0x20000, CRC(b50256ea) SHA1(6ed271e4dafd1c759adaa55d5b2343d7374c721a) )
ROM_REGION( 0x100000, "gfx1", 0 )
ROM_LOAD( "c07-03.12", 0x00000, 0x80000, CRC(189bafce) SHA1(d885e444523489fe24269b90dec58e0d92cfbd6e) ) /* SCr(screen 1) */
ROM_LOAD( "c07-04.11", 0x80000, 0x80000, CRC(50421e81) SHA1(27ac420602f1dac00dc32903543a518e6f47fb2f) )
ROM_REGION( 0x200000, "sprites", 0 )
ROM_LOAD64_WORD( "c07-05.24", 0x00000, 0x80000, CRC(fb6d0550) SHA1(2d570ff5ef262cb4cb52e8584a7f167263194d37) ) /* OBJ */
ROM_LOAD64_WORD( "c07-06.27", 0x00002, 0x80000, CRC(5eebbcd6) SHA1(d4d860bf6b099956c45c7273ad77b1d35deba4c1) )
ROM_LOAD64_WORD( "c07-07.26", 0x00004, 0x80000, CRC(fd9f9e74) SHA1(e89beb5cac844fe16662465b0c76337692591aae) )
ROM_LOAD64_WORD( "c07-08.25", 0x00006, 0x80000, CRC(a07dc846) SHA1(7199a604fcd693215ddb7670bfb2daf150145fd7) )
ROM_REGION( 0x200000, "gfx2", 0 )
ROM_LOAD32_BYTE( "c07-06.27", 0x00000, 0x80000, CRC(5eebbcd6) SHA1(d4d860bf6b099956c45c7273ad77b1d35deba4c1) ) /* OBJ */
ROM_LOAD32_BYTE( "c07-05.24", 0x00001, 0x80000, CRC(fb6d0550) SHA1(2d570ff5ef262cb4cb52e8584a7f167263194d37) )
ROM_LOAD32_BYTE( "c07-08.25", 0x00002, 0x80000, CRC(a07dc846) SHA1(7199a604fcd693215ddb7670bfb2daf150145fd7) )
ROM_LOAD32_BYTE( "c07-07.26", 0x00003, 0x80000, CRC(fd9f9e74) SHA1(e89beb5cac844fe16662465b0c76337692591aae) )
ROM_REGION( 0x100000, "tc0100scn_1", 0 )
ROM_LOAD16_WORD_SWAP( "c07-03.12", 0x00000, 0x80000, CRC(189bafce) SHA1(d885e444523489fe24269b90dec58e0d92cfbd6e) ) /* SCr(screen 1) */
ROM_LOAD16_WORD_SWAP( "c07-04.11", 0x80000, 0x80000, CRC(50421e81) SHA1(27ac420602f1dac00dc32903543a518e6f47fb2f) )
ROM_REGION( 0x100000, "gfx3", 0 )
ROM_COPY( "gfx1", 0x00000, 0x000000, 0x100000 ) /* SCr(screen 2) */
/* The actual board duplicates the SCR gfx roms for the 2nd TC0100SCN */
// ROM_LOAD( "c07-03.47", 0x00000, 0x80000, CRC(189bafce) SHA1(d885e444523489fe24269b90dec58e0d92cfbd6e) )
// ROM_LOAD( "c07-04.48", 0x80000, 0x80000, CRC(50421e81) SHA1(27ac420602f1dac00dc32903543a518e6f47fb2f) )
ROM_REGION( 0x100000, "tc0100scn_2", 0 )
ROM_LOAD16_WORD_SWAP( "c07-03.47", 0x00000, 0x80000, CRC(189bafce) SHA1(d885e444523489fe24269b90dec58e0d92cfbd6e) ) /* SCr(screen 2) */
ROM_LOAD16_WORD_SWAP( "c07-04.48", 0x80000, 0x80000, CRC(50421e81) SHA1(27ac420602f1dac00dc32903543a518e6f47fb2f) )
ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */
ROM_LOAD( "c07-10.95", 0x00000, 0x80000, CRC(4bbe0ed9) SHA1(081b73c4e4d4fa548445e5548573099bcb1e9213) )
@ -648,22 +623,19 @@ ROM_START( darius2d )
ROM_REGION( 0x20000, "audiocpu", 0 ) /* sound cpu */
ROM_LOAD( "c07_17.69", 0x00000, 0x20000, CRC(ae16c905) SHA1(70ba5aacd8a8e00b94719e3955abad8827c67aa8) )
ROM_REGION( 0x100000, "gfx1", 0 )
ROM_LOAD( "c07-03.12", 0x00000, 0x80000, CRC(189bafce) SHA1(d885e444523489fe24269b90dec58e0d92cfbd6e) ) /* SCr(screen 1) */
ROM_LOAD( "c07-04.11", 0x80000, 0x80000, CRC(50421e81) SHA1(27ac420602f1dac00dc32903543a518e6f47fb2f) )
ROM_REGION( 0x200000, "sprites", 0 )
ROM_LOAD64_WORD( "c07-05.24", 0x00000, 0x80000, CRC(fb6d0550) SHA1(2d570ff5ef262cb4cb52e8584a7f167263194d37) ) /* OBJ */
ROM_LOAD64_WORD( "c07-06.27", 0x00002, 0x80000, CRC(5eebbcd6) SHA1(d4d860bf6b099956c45c7273ad77b1d35deba4c1) )
ROM_LOAD64_WORD( "c07-07.26", 0x00004, 0x80000, CRC(fd9f9e74) SHA1(e89beb5cac844fe16662465b0c76337692591aae) )
ROM_LOAD64_WORD( "c07-08.25", 0x00006, 0x80000, CRC(a07dc846) SHA1(7199a604fcd693215ddb7670bfb2daf150145fd7) )
ROM_REGION( 0x200000, "gfx2", 0 )
ROM_LOAD32_BYTE( "c07-06.27", 0x00000, 0x80000, CRC(5eebbcd6) SHA1(d4d860bf6b099956c45c7273ad77b1d35deba4c1) ) /* OBJ */
ROM_LOAD32_BYTE( "c07-05.24", 0x00001, 0x80000, CRC(fb6d0550) SHA1(2d570ff5ef262cb4cb52e8584a7f167263194d37) )
ROM_LOAD32_BYTE( "c07-08.25", 0x00002, 0x80000, CRC(a07dc846) SHA1(7199a604fcd693215ddb7670bfb2daf150145fd7) )
ROM_LOAD32_BYTE( "c07-07.26", 0x00003, 0x80000, CRC(fd9f9e74) SHA1(e89beb5cac844fe16662465b0c76337692591aae) )
ROM_REGION( 0x100000, "tc0100scn_1", 0 )
ROM_LOAD16_WORD_SWAP( "c07-03.12", 0x00000, 0x80000, CRC(189bafce) SHA1(d885e444523489fe24269b90dec58e0d92cfbd6e) ) /* SCr(screen 1) */
ROM_LOAD16_WORD_SWAP( "c07-04.11", 0x80000, 0x80000, CRC(50421e81) SHA1(27ac420602f1dac00dc32903543a518e6f47fb2f) )
ROM_REGION( 0x100000, "gfx3", 0 )
ROM_COPY( "gfx1", 0x00000, 0x000000, 0x100000 ) /* SCr(screen 2) */
/* The actual board duplicates the SCR gfx roms for the 2nd TC0100SCN */
// ROM_LOAD( "c07-03.47", 0x00000, 0x80000, CRC(189bafce) SHA1(d885e444523489fe24269b90dec58e0d92cfbd6e) )
// ROM_LOAD( "c07-04.48", 0x80000, 0x80000, CRC(50421e81) SHA1(27ac420602f1dac00dc32903543a518e6f47fb2f) )
ROM_REGION( 0x100000, "tc0100scn_2", 0 )
ROM_LOAD16_WORD_SWAP( "c07-03.47", 0x00000, 0x80000, CRC(189bafce) SHA1(d885e444523489fe24269b90dec58e0d92cfbd6e) ) /* SCr(screen 2) */
ROM_LOAD16_WORD_SWAP( "c07-04.48", 0x80000, 0x80000, CRC(50421e81) SHA1(27ac420602f1dac00dc32903543a518e6f47fb2f) )
ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */
ROM_LOAD( "c07-10.95", 0x00000, 0x80000, CRC(4bbe0ed9) SHA1(081b73c4e4d4fa548445e5548573099bcb1e9213) )
@ -693,22 +665,19 @@ ROM_START( darius2do )
ROM_REGION( 0x20000, "audiocpu", 0 ) /* sound cpu */
ROM_LOAD( "c07_17.69", 0x00000, 0x20000, CRC(ae16c905) SHA1(70ba5aacd8a8e00b94719e3955abad8827c67aa8) )
ROM_REGION( 0x100000, "gfx1", 0 )
ROM_LOAD( "c07-03.12", 0x00000, 0x80000, CRC(189bafce) SHA1(d885e444523489fe24269b90dec58e0d92cfbd6e) ) /* SCr(screen 1) */
ROM_LOAD( "c07-04.11", 0x80000, 0x80000, CRC(50421e81) SHA1(27ac420602f1dac00dc32903543a518e6f47fb2f) )
ROM_REGION( 0x200000, "sprites", 0 )
ROM_LOAD64_WORD( "c07-05.24", 0x00000, 0x80000, CRC(fb6d0550) SHA1(2d570ff5ef262cb4cb52e8584a7f167263194d37) ) /* OBJ */
ROM_LOAD64_WORD( "c07-06.27", 0x00002, 0x80000, CRC(5eebbcd6) SHA1(d4d860bf6b099956c45c7273ad77b1d35deba4c1) )
ROM_LOAD64_WORD( "c07-07.26", 0x00004, 0x80000, CRC(fd9f9e74) SHA1(e89beb5cac844fe16662465b0c76337692591aae) )
ROM_LOAD64_WORD( "c07-08.25", 0x00006, 0x80000, CRC(a07dc846) SHA1(7199a604fcd693215ddb7670bfb2daf150145fd7) )
ROM_REGION( 0x200000, "gfx2", 0 )
ROM_LOAD32_BYTE( "c07-06.27", 0x00000, 0x80000, CRC(5eebbcd6) SHA1(d4d860bf6b099956c45c7273ad77b1d35deba4c1) ) /* OBJ */
ROM_LOAD32_BYTE( "c07-05.24", 0x00001, 0x80000, CRC(fb6d0550) SHA1(2d570ff5ef262cb4cb52e8584a7f167263194d37) )
ROM_LOAD32_BYTE( "c07-08.25", 0x00002, 0x80000, CRC(a07dc846) SHA1(7199a604fcd693215ddb7670bfb2daf150145fd7) )
ROM_LOAD32_BYTE( "c07-07.26", 0x00003, 0x80000, CRC(fd9f9e74) SHA1(e89beb5cac844fe16662465b0c76337692591aae) )
ROM_REGION( 0x100000, "tc0100scn_1", 0 )
ROM_LOAD16_WORD_SWAP( "c07-03.12", 0x00000, 0x80000, CRC(189bafce) SHA1(d885e444523489fe24269b90dec58e0d92cfbd6e) ) /* SCr(screen 1) */
ROM_LOAD16_WORD_SWAP( "c07-04.11", 0x80000, 0x80000, CRC(50421e81) SHA1(27ac420602f1dac00dc32903543a518e6f47fb2f) )
ROM_REGION( 0x100000, "gfx3", 0 )
ROM_COPY( "gfx1", 0x00000, 0x000000, 0x100000 ) /* SCr(screen 2) */
/* The actual board duplicates the SCR gfx roms for the 2nd TC0100SCN */
// ROM_LOAD( "c07-03.47", 0x00000, 0x80000, CRC(189bafce) SHA1(d885e444523489fe24269b90dec58e0d92cfbd6e) )
// ROM_LOAD( "c07-04.48", 0x80000, 0x80000, CRC(50421e81) SHA1(27ac420602f1dac00dc32903543a518e6f47fb2f) )
ROM_REGION( 0x100000, "tc0100scn_2", 0 )
ROM_LOAD16_WORD_SWAP( "c07-03.47", 0x00000, 0x80000, CRC(189bafce) SHA1(d885e444523489fe24269b90dec58e0d92cfbd6e) ) /* SCr(screen 2) */
ROM_LOAD16_WORD_SWAP( "c07-04.48", 0x80000, 0x80000, CRC(50421e81) SHA1(27ac420602f1dac00dc32903543a518e6f47fb2f) )
ROM_REGION( 0x100000, "ymsnd", 0 ) /* ADPCM samples */
ROM_LOAD( "c07-10.95", 0x00000, 0x80000, CRC(4bbe0ed9) SHA1(081b73c4e4d4fa548445e5548573099bcb1e9213) )
@ -735,19 +704,19 @@ ROM_START( warriorb )
ROM_REGION( 0x20000, "audiocpu", 0 ) /* sound cpu */
ROM_LOAD( "d24_17.69", 0x00000, 0x20000, CRC(e41e4aae) SHA1(9bf40b6e8aa5c6ec62c5d21edbb2214f6550c94f) )
ROM_REGION( 0x200000, "gfx1", 0 )
ROM_LOAD( "d24-02.12", 0x000000, 0x100000, CRC(9f50c271) SHA1(1a1b2ae7cb7785e7f66aa26258a6cd2921a29545) ) /* SCR A, screen 1 */
ROM_LOAD( "d24-01.11", 0x100000, 0x100000, CRC(326dcca9) SHA1(1993776d71bca7d6dfc6f84dd9262d0dcae87f69) )
ROM_REGION( 0x400000, "sprites", 0 )
ROM_LOAD64_WORD( "d24-03.24", 0x000000, 0x100000, CRC(46db9fd7) SHA1(f08f3c9833d80ce161b06f4ae484c5c79539639c) ) /* OBJ */
ROM_LOAD64_WORD( "d24-06.27", 0x000002, 0x100000, CRC(918486fe) SHA1(cc9e287221ef33dba77a22975e23b250ba50b758) )
ROM_LOAD64_WORD( "d24-05.26", 0x000004, 0x100000, CRC(9f414317) SHA1(204cf47404e5e1085c1108abacd2b79a6cd0f74a) )
ROM_LOAD64_WORD( "d24-04.25", 0x000006, 0x100000, CRC(148e0493) SHA1(f1cb819830e5bd544b11762784e228b5cb62b7e4) )
ROM_REGION( 0x400000, "gfx2", 0 )
ROM_LOAD32_BYTE( "d24-06.27", 0x000000, 0x100000, CRC(918486fe) SHA1(cc9e287221ef33dba77a22975e23b250ba50b758) ) /* OBJ */
ROM_LOAD32_BYTE( "d24-03.24", 0x000001, 0x100000, CRC(46db9fd7) SHA1(f08f3c9833d80ce161b06f4ae484c5c79539639c) )
ROM_LOAD32_BYTE( "d24-04.25", 0x000002, 0x100000, CRC(148e0493) SHA1(f1cb819830e5bd544b11762784e228b5cb62b7e4) )
ROM_LOAD32_BYTE( "d24-05.26", 0x000003, 0x100000, CRC(9f414317) SHA1(204cf47404e5e1085c1108abacd2b79a6cd0f74a) )
ROM_REGION( 0x200000, "tc0100scn_1", 0 )
ROM_LOAD16_WORD_SWAP( "d24-02.12", 0x000000, 0x100000, CRC(9f50c271) SHA1(1a1b2ae7cb7785e7f66aa26258a6cd2921a29545) ) /* SCR A, screen 1 */
ROM_LOAD16_WORD_SWAP( "d24-01.11", 0x100000, 0x100000, CRC(326dcca9) SHA1(1993776d71bca7d6dfc6f84dd9262d0dcae87f69) )
ROM_REGION( 0x200000, "gfx3", 0 )
ROM_LOAD( "d24-07.47", 0x000000, 0x100000, CRC(9f50c271) SHA1(1a1b2ae7cb7785e7f66aa26258a6cd2921a29545) ) /* SCR B, screen 2 */
ROM_LOAD( "d24-08.48", 0x100000, 0x100000, CRC(1e6d1528) SHA1(d6843aa67befd7db44f468be16ba2f0efb85d40f) )
ROM_REGION( 0x200000, "tc0100scn_2", 0 )
ROM_LOAD16_WORD_SWAP( "d24-07.47", 0x000000, 0x100000, CRC(9f50c271) SHA1(1a1b2ae7cb7785e7f66aa26258a6cd2921a29545) ) /* SCR B, screen 2 */
ROM_LOAD16_WORD_SWAP( "d24-08.48", 0x100000, 0x100000, CRC(1e6d1528) SHA1(d6843aa67befd7db44f468be16ba2f0efb85d40f) )
ROM_REGION( 0x300000, "ymsnd", 0 ) /* ADPCM samples */
ROM_LOAD( "d24-12.107", 0x000000, 0x100000, CRC(279203a1) SHA1(ed75e811a1f0863c134034457ce2e97372726bdb) )

View File

@ -17,8 +17,8 @@
class warriorb_state : public driver_device
{
public:
warriorb_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
warriorb_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_tc0140syt(*this, "tc0140syt"),
m_tc0100scn(*this, "tc0100scn_%u", 1),
@ -29,7 +29,8 @@ public:
m_2610_r(*this, "2610.%u.r", 1),
m_gfxdecode(*this, "gfxdecode_%u", 1),
m_spriteram(*this, "spriteram"),
m_z80bank(*this, "z80bank") { }
m_z80bank(*this, "z80bank")
{ }
void warriorb(machine_config &config);
void darius2d(machine_config &config);
@ -47,7 +48,7 @@ private:
required_device_array<gfxdecode_device, 2> m_gfxdecode;
/* memory pointers */
required_shared_ptr<uint16_t> m_spriteram;
required_shared_ptr<u16> m_spriteram;
/* memory regions */
required_memory_bank m_z80bank;
@ -58,15 +59,15 @@ private:
void coin_control_w(u8 data);
void sound_bankswitch_w(u8 data);
void pancontrol_w(offs_t offset, u8 data);
DECLARE_WRITE16_MEMBER(tc0100scn_dual_screen_w);
void tc0100scn_dual_screen_w(offs_t offset, u16 data, u16 mem_mask = ~0);
virtual void machine_start() override;
virtual void machine_reset() override;
uint32_t screen_update_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
u32 screen_update_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
u32 screen_update_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int x_offs, int y_offs, int chip);
uint32_t update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int xoffs, int chip);
u32 update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int xoffs, int chip);
void darius2d_map(address_map &map);
void warriorb_map(address_map &map);

View File

@ -10,38 +10,36 @@
void warriorb_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int x_offs, int y_offs, int chip)
{
int offs, data, data2, tilenum, color, flipx, flipy;
int x, y, priority, pri_mask;
u32 pri_mask;
#ifdef MAME_DEBUG
int unknown = 0;
#endif
/* pdrawgfx() needs us to draw sprites front to back */
for (offs = 0; offs < m_spriteram.bytes() / 2; offs += 4)
for (int offs = 0; offs < m_spriteram.bytes() / 2; offs += 4)
{
data = m_spriteram[offs + 1];
tilenum = data & 0x7fff;
int data = m_spriteram[offs + 1];
const u32 tilenum = data & 0x7fff;
data = m_spriteram[offs + 0];
y = (-(data & 0x1ff) - 24) & 0x1ff; /* (inverted y adjusted for vis area) */
flipy = (data & 0x200) >> 9;
int y = (-(data & 0x1ff) - 24) & 0x1ff; /* (inverted y adjusted for vis area) */
const bool flipy = (data & 0x200) >> 9;
data2 = m_spriteram[offs + 2];
const u16 data2 = m_spriteram[offs + 2];
/* 8,4 also seen in msbyte */
priority = (data2 & 0x0100) >> 8; // 1 = low
const int priority = (data2 & 0x0100) >> 8; // 1 = low
if(priority)
pri_mask = 0xfffe;
else
pri_mask = 0;
color = (data2 & 0x7f);
const u32 color = (data2 & 0x7f);
data = m_spriteram[offs + 3];
x = (data & 0x3ff);
flipx = (data & 0x400) >> 10;
int x = (data & 0x3ff);
const bool flipx = (data & 0x400) >> 10;
#ifdef MAME_DEBUG
if (data2 & 0xf280) unknown |= (data2 &0xf280);
@ -73,10 +71,10 @@ void warriorb_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, c
SCREEN REFRESH
**************************************************************/
uint32_t warriorb_state::update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int xoffs, int chip)
u32 warriorb_state::update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int xoffs, int chip)
{
tc0100scn_device *tc0100scn = m_tc0100scn[chip];
uint8_t layer[3], nodraw;
u8 layer[3];
tc0100scn->tilemap_update();
@ -89,7 +87,7 @@ uint32_t warriorb_state::update_screen(screen_device &screen, bitmap_ind16 &bitm
/* chip 0 does tilemaps on the left, chip 1 does the ones on the right */
// draw bottom layer
nodraw = tc0100scn->tilemap_draw(screen, bitmap, cliprect, layer[0], TILEMAP_DRAW_OPAQUE, 0); /* left */
const u8 nodraw = tc0100scn->tilemap_draw(screen, bitmap, cliprect, layer[0], TILEMAP_DRAW_OPAQUE, 0); /* left */
/* Ensure screen blanked even when bottom layers not drawn due to disable bit */
if (nodraw)
@ -106,5 +104,5 @@ uint32_t warriorb_state::update_screen(screen_device &screen, bitmap_ind16 &bitm
return 0;
}
uint32_t warriorb_state::screen_update_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect){ return update_screen(screen, bitmap, cliprect, 40 * 8, 0); }
uint32_t warriorb_state::screen_update_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect){ return update_screen(screen, bitmap, cliprect, 40 * 8, 1); }
u32 warriorb_state::screen_update_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect){ return update_screen(screen, bitmap, cliprect, 40 * 8, 0); }
u32 warriorb_state::screen_update_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect){ return update_screen(screen, bitmap, cliprect, 40 * 8, 1); }