diff --git a/src/mame/drivers/taitoair.cpp b/src/mame/drivers/taitoair.cpp index 0ec2eb8e635..bd33ce6fc52 100644 --- a/src/mame/drivers/taitoair.cpp +++ b/src/mame/drivers/taitoair.cpp @@ -209,7 +209,7 @@ perhaps? The two writes seem to take only two values. MEMORY handlers ***********************************************************/ -WRITE16_MEMBER(taitoair_state::system_control_w) +void taitoair_state::system_control_w(offs_t offset, u16 data, u16 mem_mask) { if ((ACCESSING_BITS_0_7 == 0) && ACCESSING_BITS_8_15) data >>= 8; @@ -222,32 +222,32 @@ WRITE16_MEMBER(taitoair_state::system_control_w) logerror("68K:%06x writing %04x to TMS32025. %s HOLD , %s RESET\n", m_maincpu->pcbase(), data, ((data & 4) ? "Clear" : "Assert"), ((data & 1) ? "Clear" : "Assert")); } -READ16_MEMBER(taitoair_state::lineram_r) +u16 taitoair_state::lineram_r(offs_t offset) { return m_line_ram[offset]; } -WRITE16_MEMBER(taitoair_state::lineram_w) +void taitoair_state::lineram_w(offs_t offset, u16 data, u16 mem_mask) { if (ACCESSING_BITS_8_15 && ACCESSING_BITS_0_7) m_line_ram[offset] = data; - //if(offset == 0x3fff) + //if (offset == 0x3fff) // printf("LineRAM go %d\n",(int)m_screen->frame_number()); } -READ16_MEMBER(taitoair_state::dspram_r) +u16 taitoair_state::dspram_r(offs_t offset) { return m_dsp_ram[offset]; } -WRITE16_MEMBER(taitoair_state::dspram_w) +void taitoair_state::dspram_w(offs_t offset, u16 data, u16 mem_mask) { if (ACCESSING_BITS_8_15 && ACCESSING_BITS_0_7) m_dsp_ram[offset] = data; } -READ16_MEMBER(taitoair_state::dsp_HOLD_signal_r) +u16 taitoair_state::dsp_HOLD_signal_r() { /* HOLD signal is active low */ // logerror("TMS32025:%04x Reading %01x level from HOLD signal\n", m_dsp->pcbase(), m_dsp_hold_signal); @@ -255,43 +255,39 @@ READ16_MEMBER(taitoair_state::dsp_HOLD_signal_r) return m_dsp_hold_signal; } -WRITE16_MEMBER(taitoair_state::dsp_HOLDA_signal_w) +void taitoair_state::dsp_HOLDA_signal_w(offs_t offset, u16 data) { if (offset) logerror("TMS32025:%04x Writing %01x level to HOLD-Acknowledge signal\n", m_dsp->pcbase(), data); } -WRITE16_MEMBER(taitoair_state::airsys_paletteram16_w)/* xxBBBBxRRRRxGGGG */ +void taitoair_state::paletteram_w(offs_t offset, u16 data, u16 mem_mask)/* xxBBBBxRRRRxGGGG */ { - int a; - COMBINE_DATA(&m_paletteram[offset]); - a = m_paletteram[offset]; + const u16 a = m_paletteram[offset]; m_palette->set_pen_color(offset, pal4bit(a >> 0), pal4bit(a >> 5), pal4bit(a >> 10)); } -WRITE16_MEMBER(taitoair_state::airsys_gradram_w) +void taitoair_state::gradram_w(offs_t offset, u16 data, u16 mem_mask) { - uint32_t pen; - int r,g,b; //int pal_r,pal_g,pal_b; COMBINE_DATA(&m_gradram[offset]); offset &= 0x1fff; - pen = (m_gradram[offset])|(m_gradram[(offset+0x2000)]<<16); + const u32 pen = (m_gradram[offset]) | (m_gradram[(offset + 0x2000)] << 16); /* TODO: correct? */ - r = (pen & 0x00007f) >> 0; - g = (pen & 0x007f00) >> (8); - b = (pen & 0x7f0000) >> (16); + u8 r = (pen & 0x00007f) >> 0; + u8 g = (pen & 0x007f00) >> (8); + u8 b = (pen & 0x7f0000) >> (16); r = (r << 1) | (r & 1); g = (g << 1) | (g & 1); b = (b << 1) | (b & 1); - m_palette->set_pen_color(offset+0x2000, r, g, b); + m_palette->set_pen_color(offset + 0x2000, r, g, b); } @@ -301,7 +297,7 @@ WRITE16_MEMBER(taitoair_state::airsys_gradram_w) READ16_MEMBER(taitoair_state::stick_input_r) { - switch( offset ) + switch (offset) { case 0x00: /* "counter 1" lo */ return m_yoke->throttle_r(space,0) & 0xff; @@ -321,7 +317,7 @@ READ16_MEMBER(taitoair_state::stick_input_r) READ16_MEMBER(taitoair_state::stick2_input_r) { - switch( offset ) + switch (offset) { case 0x00: /* "counter 3" lo */ return m_yoke->sticky_r(space,0); @@ -333,9 +329,9 @@ READ16_MEMBER(taitoair_state::stick2_input_r) return 0; } -WRITE8_MEMBER(taitoair_state::sound_bankswitch_w) +void taitoair_state::sound_bankswitch_w(u8 data) { - membank("z80bank")->set_entry(data & 3); + m_z80bank->set_entry(data & 3); } /*! @@ -348,17 +344,17 @@ WRITE8_MEMBER(taitoair_state::sound_bankswitch_w) [2] (unused) [3] both games uses 0xb7, most likely a register setting. */ -WRITE16_MEMBER(taitoair_state::dma_regs_w) +void taitoair_state::dma_regs_w(offs_t offset, u16 data, u16 mem_mask) { printf("%08x %04x\n",offset,data); - if(offset == 0 && ACCESSING_BITS_8_15) + if (offset == 0 && ACCESSING_BITS_8_15) { - if(data == 0x1fff) + if (data == 0x1fff) { fb_erase_op(); } - else if(data & 0x8000) + else if (data & 0x8000) { /*! @todo it also flushes current palette. */ fb_copy_op(); @@ -366,7 +362,7 @@ WRITE16_MEMBER(taitoair_state::dma_regs_w) } } -WRITE8_MEMBER(taitoair_state::coin_control_w) +void taitoair_state::coin_control_w(u8 data) { machine().bookkeeping().coin_lockout_w(0, ~data & 0x01); machine().bookkeeping().coin_lockout_w(1, ~data & 0x02); @@ -383,8 +379,8 @@ void taitoair_state::airsys_map(address_map &map) map(0x000000, 0x0bffff).rom(); map(0x0c0000, 0x0cffff).ram().share("m68000_mainram"); map(0x140000, 0x140001).w(FUNC(taitoair_state::system_control_w)); /* Pause the TMS32025 */ - map(0x180000, 0x187fff).ram().w(FUNC(taitoair_state::airsys_gradram_w)).share("gradram"); /* "gradiation ram (0/1)" */ - map(0x188000, 0x189fff).mirror(0x2000).ram().w(FUNC(taitoair_state::airsys_paletteram16_w)).share("paletteram"); + map(0x180000, 0x187fff).ram().w(FUNC(taitoair_state::gradram_w)).share("gradram"); /* "gradiation ram (0/1)" */ + map(0x188000, 0x189fff).mirror(0x2000).ram().w(FUNC(taitoair_state::paletteram_w)).share("paletteram"); map(0x800000, 0x820fff).rw(m_tc0080vco, FUNC(tc0080vco_device::word_r), FUNC(tc0080vco_device::word_w)); /* tilemaps, sprites */ map(0x906000, 0x906007).w(FUNC(taitoair_state::dma_regs_w)); // DMA? map(0x908000, 0x90ffff).ram().share("line_ram"); /* "line ram" */ @@ -418,38 +414,38 @@ void taitoair_state::sound_map(address_map &map) /********************************** TMS32025 ********************************/ -WRITE16_MEMBER(taitoair_state::dsp_test_start_w) +void taitoair_state::dsp_test_start_w(u16 data) { m_dsp_test_object_type = data; m_dsp_test_or_clip = 0; m_dsp_test_and_clip = 0xf; } -WRITE16_MEMBER(taitoair_state::dsp_test_x_w) +void taitoair_state::dsp_test_x_w(u16 data) { m_dsp_test_x = data; } -WRITE16_MEMBER(taitoair_state::dsp_test_y_w) +void taitoair_state::dsp_test_y_w(u16 data) { m_dsp_test_y = data; } -WRITE16_MEMBER(taitoair_state::dsp_test_z_w) +void taitoair_state::dsp_test_z_w(u16 data) { m_dsp_test_z = data; } -READ16_MEMBER(taitoair_state::dsp_test_point_r) +u16 taitoair_state::dsp_test_point_r() { - uint16_t r = 0; - if(m_dsp_test_x < -m_dsp_test_z) + u16 r = 0; + if (m_dsp_test_x < -m_dsp_test_z) r |= 1; - if(m_dsp_test_x > m_dsp_test_z) + if (m_dsp_test_x > m_dsp_test_z) r |= 2; - if(m_dsp_test_y < -m_dsp_test_z) + if (m_dsp_test_y < -m_dsp_test_z) r |= 4; - if(m_dsp_test_y > m_dsp_test_z) + if (m_dsp_test_y > m_dsp_test_z) r |= 8; m_dsp_test_or_clip |= r; @@ -457,60 +453,60 @@ READ16_MEMBER(taitoair_state::dsp_test_point_r) return r; } -READ16_MEMBER(taitoair_state::dsp_test_or_clip_r) +u16 taitoair_state::dsp_test_or_clip_r() { return m_dsp_test_or_clip; } -READ16_MEMBER(taitoair_state::dsp_test_and_clip_r) +u16 taitoair_state::dsp_test_and_clip_r() { return m_dsp_test_and_clip; } -WRITE16_MEMBER(taitoair_state::dsp_muldiv_a_1_w) +void taitoair_state::dsp_muldiv_a_1_w(u16 data) { m_dsp_muldiv_a_1 = data; } -WRITE16_MEMBER(taitoair_state::dsp_muldiv_b_1_w) +void taitoair_state::dsp_muldiv_b_1_w(u16 data) { m_dsp_muldiv_b_1 = data; } -WRITE16_MEMBER(taitoair_state::dsp_muldiv_c_1_w) +void taitoair_state::dsp_muldiv_c_1_w(u16 data) { m_dsp_muldiv_c_1 = data; } -READ16_MEMBER(taitoair_state::dsp_muldiv_1_r) +u16 taitoair_state::dsp_muldiv_1_r() { - if(m_dsp_muldiv_c_1 == 0) + if (m_dsp_muldiv_c_1 == 0) return 0xffff; /**< @todo true value? */ - return m_dsp_muldiv_a_1*m_dsp_muldiv_b_1/m_dsp_muldiv_c_1; + return m_dsp_muldiv_a_1 * m_dsp_muldiv_b_1 / m_dsp_muldiv_c_1; } -WRITE16_MEMBER(taitoair_state::dsp_muldiv_a_2_w) +void taitoair_state::dsp_muldiv_a_2_w(u16 data) { m_dsp_muldiv_a_2 = data; } -WRITE16_MEMBER(taitoair_state::dsp_muldiv_b_2_w) +void taitoair_state::dsp_muldiv_b_2_w(u16 data) { m_dsp_muldiv_b_2 = data; } -WRITE16_MEMBER(taitoair_state::dsp_muldiv_c_2_w) +void taitoair_state::dsp_muldiv_c_2_w(u16 data) { m_dsp_muldiv_c_2 = data; } -READ16_MEMBER(taitoair_state::dsp_muldiv_2_r) +u16 taitoair_state::dsp_muldiv_2_r() { - if(m_dsp_muldiv_c_2 == 0) + if (m_dsp_muldiv_c_2 == 0) return 0xffff; /**< @todo true value? */ - return m_dsp_muldiv_a_2*m_dsp_muldiv_b_2/m_dsp_muldiv_c_2; + return m_dsp_muldiv_a_2 * m_dsp_muldiv_b_2 / m_dsp_muldiv_c_2; } @@ -653,16 +649,12 @@ INPUT_PORTS_END static const gfx_layout tilelayout = { 16,16, /* 16x16 pixels */ - RGN_FRAC(1,4), + RGN_FRAC(1,1), 4, - { 0, 1, 2, 3 }, - { 4, 0, 12, 8, - RGN_FRAC(1,4)+4, RGN_FRAC(1,4), RGN_FRAC(1,4)+12, RGN_FRAC(1,4)+8, - RGN_FRAC(2,4)+4, RGN_FRAC(2,4), RGN_FRAC(2,4)+12, RGN_FRAC(2,4)+8, - RGN_FRAC(3,4)+4, RGN_FRAC(3,4), RGN_FRAC(3,4)+12, RGN_FRAC(3,4)+8 }, - { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16, - 8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16 }, - 16*16 + { STEP4(0, 1) }, + { STEP16(15*4, -4) }, + { STEP16(0, 16*4) }, + 16*16*4 }; static GFXDECODE_START( gfx_airsys ) @@ -676,7 +668,7 @@ GFXDECODE_END void taitoair_state::machine_start() { - membank("z80bank")->configure_entries(0, 4, memregion("audiocpu")->base(), 0x4000); + m_z80bank->configure_entries(0, 4, memregion("audiocpu")->base(), 0x4000); save_item(NAME(m_q.header)); save_item(NAME(m_q.pcount)); @@ -690,11 +682,9 @@ void taitoair_state::machine_start() void taitoair_state::machine_reset() { - int i; - m_dsp_hold_signal = ASSERT_LINE; - for (i = 0; i < TAITOAIR_POLY_MAX_PT; i++) + for (int i = 0; i < TAITOAIR_POLY_MAX_PT; i++) { m_q.p[i].x = 0; m_q.p[i].y = 0; @@ -737,7 +727,7 @@ void taitoair_state::airsys(machine_config &config) // m_screen->set_visarea(0*16, 32*16-1, 3*16, 28*16-1); // Estimated, assume same as mlanding.cpp m_screen->set_raw(16000000, 640, 0, 512, 462, 3*16, 28*16); - m_screen->set_screen_update(FUNC(taitoair_state::screen_update_taitoair)); + m_screen->set_screen_update(FUNC(taitoair_state::screen_update)); m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_airsys); @@ -809,14 +799,14 @@ ROM_START( topland ) ROM_LOAD( "b62_mecha.rom", 0x00000, 0x08000, NO_DUMP ) ROM_REGION( 0x100000, "gfx1", 0 ) /* 16x16 tiles */ - ROM_LOAD16_BYTE( "b62-33.39", 0x000000, 0x20000, CRC(38786867) SHA1(7292e3fa69cad6494f2e8e7efa9c3f989bdf958d) ) - ROM_LOAD16_BYTE( "b62-36.48", 0x000001, 0x20000, CRC(4259e76a) SHA1(eb0dc5d0a6f875e3b8335fb30d4c2ad3880c31b9) ) - ROM_LOAD16_BYTE( "b62-29.27", 0x040000, 0x20000, CRC(efdd5c51) SHA1(6df3e9782946cf6f4a21ee3d335548c53cd21e3a) ) - ROM_LOAD16_BYTE( "b62-34.40", 0x040001, 0x20000, CRC(a7e10ca4) SHA1(862c23c095f96f9e0cae00d70947782d5f4e45e6) ) - ROM_LOAD16_BYTE( "b62-35.47", 0x080000, 0x20000, CRC(cba7bac5) SHA1(5305c84abcbcc23281744454803b849853b26632) ) - ROM_LOAD16_BYTE( "b62-30.28", 0x080001, 0x20000, CRC(30e37cb8) SHA1(6bc777bdf1a56952dbfbe2f595279a43e2fa98fd) ) - ROM_LOAD16_BYTE( "b62-31.29", 0x0c0000, 0x20000, CRC(3feebfe3) SHA1(5b014d7d6fa1daf400ac1a437f551281debfdba6) ) - ROM_LOAD16_BYTE( "b62-32.30", 0x0c0001, 0x20000, CRC(66806646) SHA1(d8e0c37b5227d8583d523164ffc6828b4508d5a3) ) + ROM_LOAD64_BYTE( "b62-33.39", 0x000007, 0x20000, CRC(38786867) SHA1(7292e3fa69cad6494f2e8e7efa9c3f989bdf958d) ) + ROM_LOAD64_BYTE( "b62-36.48", 0x000006, 0x20000, CRC(4259e76a) SHA1(eb0dc5d0a6f875e3b8335fb30d4c2ad3880c31b9) ) + ROM_LOAD64_BYTE( "b62-29.27", 0x000005, 0x20000, CRC(efdd5c51) SHA1(6df3e9782946cf6f4a21ee3d335548c53cd21e3a) ) + ROM_LOAD64_BYTE( "b62-34.40", 0x000004, 0x20000, CRC(a7e10ca4) SHA1(862c23c095f96f9e0cae00d70947782d5f4e45e6) ) + ROM_LOAD64_BYTE( "b62-35.47", 0x000003, 0x20000, CRC(cba7bac5) SHA1(5305c84abcbcc23281744454803b849853b26632) ) + ROM_LOAD64_BYTE( "b62-30.28", 0x000002, 0x20000, CRC(30e37cb8) SHA1(6bc777bdf1a56952dbfbe2f595279a43e2fa98fd) ) + ROM_LOAD64_BYTE( "b62-31.29", 0x000001, 0x20000, CRC(3feebfe3) SHA1(5b014d7d6fa1daf400ac1a437f551281debfdba6) ) + ROM_LOAD64_BYTE( "b62-32.30", 0x000000, 0x20000, CRC(66806646) SHA1(d8e0c37b5227d8583d523164ffc6828b4508d5a3) ) ROM_REGION( 0xa0000, "ymsnd", 0 ) /* ADPCM samples */ ROM_LOAD( "b62-17.5", 0x00000, 0x20000, CRC(36447066) SHA1(91c8cc4e99534b2d533895a342abb22766a20090) ) @@ -858,14 +848,14 @@ ROM_START( toplandj ) ROM_LOAD( "b62_mecha.rom", 0x00000, 0x08000, NO_DUMP ) ROM_REGION( 0x100000, "gfx1", 0 ) /* 16x16 tiles */ - ROM_LOAD16_BYTE( "b62-33.39", 0x000000, 0x20000, CRC(38786867) SHA1(7292e3fa69cad6494f2e8e7efa9c3f989bdf958d) ) - ROM_LOAD16_BYTE( "b62-36.48", 0x000001, 0x20000, CRC(4259e76a) SHA1(eb0dc5d0a6f875e3b8335fb30d4c2ad3880c31b9) ) - ROM_LOAD16_BYTE( "b62-29.27", 0x040000, 0x20000, CRC(efdd5c51) SHA1(6df3e9782946cf6f4a21ee3d335548c53cd21e3a) ) - ROM_LOAD16_BYTE( "b62-34.40", 0x040001, 0x20000, CRC(a7e10ca4) SHA1(862c23c095f96f9e0cae00d70947782d5f4e45e6) ) - ROM_LOAD16_BYTE( "b62-35.47", 0x080000, 0x20000, CRC(cba7bac5) SHA1(5305c84abcbcc23281744454803b849853b26632) ) - ROM_LOAD16_BYTE( "b62-30.28", 0x080001, 0x20000, CRC(30e37cb8) SHA1(6bc777bdf1a56952dbfbe2f595279a43e2fa98fd) ) - ROM_LOAD16_BYTE( "b62-31.29", 0x0c0000, 0x20000, CRC(3feebfe3) SHA1(5b014d7d6fa1daf400ac1a437f551281debfdba6) ) - ROM_LOAD16_BYTE( "b62-32.30", 0x0c0001, 0x20000, CRC(66806646) SHA1(d8e0c37b5227d8583d523164ffc6828b4508d5a3) ) + ROM_LOAD64_BYTE( "b62-33.39", 0x000007, 0x20000, CRC(38786867) SHA1(7292e3fa69cad6494f2e8e7efa9c3f989bdf958d) ) + ROM_LOAD64_BYTE( "b62-36.48", 0x000006, 0x20000, CRC(4259e76a) SHA1(eb0dc5d0a6f875e3b8335fb30d4c2ad3880c31b9) ) + ROM_LOAD64_BYTE( "b62-29.27", 0x000005, 0x20000, CRC(efdd5c51) SHA1(6df3e9782946cf6f4a21ee3d335548c53cd21e3a) ) + ROM_LOAD64_BYTE( "b62-34.40", 0x000004, 0x20000, CRC(a7e10ca4) SHA1(862c23c095f96f9e0cae00d70947782d5f4e45e6) ) + ROM_LOAD64_BYTE( "b62-35.47", 0x000003, 0x20000, CRC(cba7bac5) SHA1(5305c84abcbcc23281744454803b849853b26632) ) + ROM_LOAD64_BYTE( "b62-30.28", 0x000002, 0x20000, CRC(30e37cb8) SHA1(6bc777bdf1a56952dbfbe2f595279a43e2fa98fd) ) + ROM_LOAD64_BYTE( "b62-31.29", 0x000001, 0x20000, CRC(3feebfe3) SHA1(5b014d7d6fa1daf400ac1a437f551281debfdba6) ) + ROM_LOAD64_BYTE( "b62-32.30", 0x000000, 0x20000, CRC(66806646) SHA1(d8e0c37b5227d8583d523164ffc6828b4508d5a3) ) ROM_REGION( 0xa0000, "ymsnd", 0 ) /* ADPCM samples */ ROM_LOAD( "b62-17.5", 0x00000, 0x20000, CRC(36447066) SHA1(91c8cc4e99534b2d533895a342abb22766a20090) ) @@ -908,14 +898,14 @@ ROM_START( ainferno ) ROM_LOAD( "c45-30.9", 0x00000, 0x10000, CRC(fa2db40f) SHA1(91c34a53d2fec619f2536ca79fdc6a17fb0d21e4) ) // 27c512, 1111xxxxxxxxxxxx = 0xFF ROM_REGION( 0x100000, "gfx1", 0 ) /* 16x16 tiles */ - ROM_LOAD16_BYTE( "c45-11.28", 0x000000, 0x20000, CRC(d9b4b77c) SHA1(69d570efa8146fb0a712ff45e77bda6fd85769f8) ) - ROM_LOAD16_BYTE( "c45-15.40", 0x000001, 0x20000, CRC(d4610698) SHA1(5de519a23300d5b3b09ce7cf8c02a1a6b2fb985c) ) - ROM_LOAD16_BYTE( "c45-12.29", 0x040000, 0x20000, CRC(4ae305b8) SHA1(2bbb981853a7abbba90afb8eb58f6869357551d3) ) - ROM_LOAD16_BYTE( "c45-16.41", 0x040001, 0x20000, CRC(c6eb93b0) SHA1(d0b1adfce5c1f4e21c5d84527d22ace14578f2d7) ) - ROM_LOAD16_BYTE( "c45-13.30", 0x080000, 0x20000, CRC(69b82af6) SHA1(13c035e84affa59734c6dd1b07963c08654b5f5a) ) - ROM_LOAD16_BYTE( "c45-17.42", 0x080001, 0x20000, CRC(0dbee000) SHA1(41073d5cf20df12d5ba1c424c9d9f0b2d9836d5d) ) - ROM_LOAD16_BYTE( "c45-14.31", 0x0c0000, 0x20000, CRC(481b6f29) SHA1(0b047e805663b144dc2388c86438950fcdc29658) ) - ROM_LOAD16_BYTE( "c45-18.43", 0x0c0001, 0x20000, CRC(ba7ecf3b) SHA1(dd073b7bfbf2f88432337027ae9fb6c4f02a538f) ) + ROM_LOAD64_BYTE( "c45-11.28", 0x000007, 0x20000, CRC(d9b4b77c) SHA1(69d570efa8146fb0a712ff45e77bda6fd85769f8) ) + ROM_LOAD64_BYTE( "c45-15.40", 0x000006, 0x20000, CRC(d4610698) SHA1(5de519a23300d5b3b09ce7cf8c02a1a6b2fb985c) ) + ROM_LOAD64_BYTE( "c45-12.29", 0x000005, 0x20000, CRC(4ae305b8) SHA1(2bbb981853a7abbba90afb8eb58f6869357551d3) ) + ROM_LOAD64_BYTE( "c45-16.41", 0x000004, 0x20000, CRC(c6eb93b0) SHA1(d0b1adfce5c1f4e21c5d84527d22ace14578f2d7) ) + ROM_LOAD64_BYTE( "c45-13.30", 0x000003, 0x20000, CRC(69b82af6) SHA1(13c035e84affa59734c6dd1b07963c08654b5f5a) ) + ROM_LOAD64_BYTE( "c45-17.42", 0x000002, 0x20000, CRC(0dbee000) SHA1(41073d5cf20df12d5ba1c424c9d9f0b2d9836d5d) ) + ROM_LOAD64_BYTE( "c45-14.31", 0x000001, 0x20000, CRC(481b6f29) SHA1(0b047e805663b144dc2388c86438950fcdc29658) ) + ROM_LOAD64_BYTE( "c45-18.43", 0x000000, 0x20000, CRC(ba7ecf3b) SHA1(dd073b7bfbf2f88432337027ae9fb6c4f02a538f) ) ROM_REGION( 0xa0000, "ymsnd", 0 ) /* ADPCM samples */ ROM_LOAD( "c45-01.5", 0x00000, 0x20000, CRC(052997b2) SHA1(3aa8b4f759a1c196de39754a9ccdf4fabdbab388) ) @@ -963,14 +953,14 @@ ROM_START( ainfernoj ) ROM_LOAD( "c45-30.9", 0x00000, 0x10000, CRC(fa2db40f) SHA1(91c34a53d2fec619f2536ca79fdc6a17fb0d21e4) ) // 27c512, 1111xxxxxxxxxxxx = 0xFF ROM_REGION( 0x100000, "gfx1", 0 ) /* 16x16 tiles */ - ROM_LOAD16_BYTE( "c45-11.28", 0x000000, 0x20000, CRC(d9b4b77c) SHA1(69d570efa8146fb0a712ff45e77bda6fd85769f8) ) - ROM_LOAD16_BYTE( "c45-15.40", 0x000001, 0x20000, CRC(d4610698) SHA1(5de519a23300d5b3b09ce7cf8c02a1a6b2fb985c) ) - ROM_LOAD16_BYTE( "c45-12.29", 0x040000, 0x20000, CRC(4ae305b8) SHA1(2bbb981853a7abbba90afb8eb58f6869357551d3) ) - ROM_LOAD16_BYTE( "c45-16.41", 0x040001, 0x20000, CRC(c6eb93b0) SHA1(d0b1adfce5c1f4e21c5d84527d22ace14578f2d7) ) - ROM_LOAD16_BYTE( "c45-13.30", 0x080000, 0x20000, CRC(69b82af6) SHA1(13c035e84affa59734c6dd1b07963c08654b5f5a) ) - ROM_LOAD16_BYTE( "c45-17.42", 0x080001, 0x20000, CRC(0dbee000) SHA1(41073d5cf20df12d5ba1c424c9d9f0b2d9836d5d) ) - ROM_LOAD16_BYTE( "c45-14.31", 0x0c0000, 0x20000, CRC(481b6f29) SHA1(0b047e805663b144dc2388c86438950fcdc29658) ) - ROM_LOAD16_BYTE( "c45-18.43", 0x0c0001, 0x20000, CRC(ba7ecf3b) SHA1(dd073b7bfbf2f88432337027ae9fb6c4f02a538f) ) + ROM_LOAD64_BYTE( "c45-11.28", 0x000007, 0x20000, CRC(d9b4b77c) SHA1(69d570efa8146fb0a712ff45e77bda6fd85769f8) ) + ROM_LOAD64_BYTE( "c45-15.40", 0x000006, 0x20000, CRC(d4610698) SHA1(5de519a23300d5b3b09ce7cf8c02a1a6b2fb985c) ) + ROM_LOAD64_BYTE( "c45-12.29", 0x000005, 0x20000, CRC(4ae305b8) SHA1(2bbb981853a7abbba90afb8eb58f6869357551d3) ) + ROM_LOAD64_BYTE( "c45-16.41", 0x000004, 0x20000, CRC(c6eb93b0) SHA1(d0b1adfce5c1f4e21c5d84527d22ace14578f2d7) ) + ROM_LOAD64_BYTE( "c45-13.30", 0x000003, 0x20000, CRC(69b82af6) SHA1(13c035e84affa59734c6dd1b07963c08654b5f5a) ) + ROM_LOAD64_BYTE( "c45-17.42", 0x000002, 0x20000, CRC(0dbee000) SHA1(41073d5cf20df12d5ba1c424c9d9f0b2d9836d5d) ) + ROM_LOAD64_BYTE( "c45-14.31", 0x000001, 0x20000, CRC(481b6f29) SHA1(0b047e805663b144dc2388c86438950fcdc29658) ) + ROM_LOAD64_BYTE( "c45-18.43", 0x000000, 0x20000, CRC(ba7ecf3b) SHA1(dd073b7bfbf2f88432337027ae9fb6c4f02a538f) ) ROM_REGION( 0xa0000, "ymsnd", 0 ) /* ADPCM samples */ ROM_LOAD( "c45-01.5", 0x00000, 0x20000, CRC(052997b2) SHA1(3aa8b4f759a1c196de39754a9ccdf4fabdbab388) ) diff --git a/src/mame/includes/taitoair.h b/src/mame/includes/taitoair.h index c8b861904f2..81fd71e8993 100644 --- a/src/mame/includes/taitoair.h +++ b/src/mame/includes/taitoair.h @@ -20,13 +20,13 @@ enum { TAITOAIR_FRAC_SHIFT = 16, TAITOAIR_POLY_MAX_PT = 16 }; struct taitoair_spoint { - int32_t x, y; + s32 x, y; }; struct taitoair_poly { struct taitoair_spoint p[TAITOAIR_POLY_MAX_PT]; int pcount; - uint16_t header; + u16 header; }; @@ -50,18 +50,19 @@ public: , m_gfxdecode(*this, "gfxdecode") , m_screen(*this, "screen") , m_palette(*this, "palette") + , m_z80bank(*this, "z80bank") { } void airsys(machine_config &config); private: /* memory pointers */ - required_shared_ptr m_m68000_mainram; - required_shared_ptr m_line_ram; - required_shared_ptr m_dsp_ram; // Shared 68000/TMS32025 RAM - required_shared_ptr m_paletteram; - required_shared_ptr m_gradram; - required_shared_ptr m_tc0430grw; + required_shared_ptr m_m68000_mainram; + required_shared_ptr m_line_ram; + required_shared_ptr m_dsp_ram; // Shared 68000/TMS32025 RAM + required_shared_ptr m_paletteram; + required_shared_ptr m_gradram; + required_shared_ptr m_tc0430grw; /* video-related */ taitoair_poly m_q; @@ -80,70 +81,72 @@ private: required_device m_screen; required_device m_palette; + required_memory_bank m_z80bank; + std::unique_ptr m_framebuffer[2]; /* 3d info */ - int16_t m_frustumLeft; - int16_t m_frustumBottom; - int16_t m_eyecoordBuffer[4]; /* homogeneous */ + s16 m_frustumLeft; + s16 m_frustumBottom; + s16 m_eyecoordBuffer[4]; /* homogeneous */ bool m_gradbank; - uint16_t m_dsp_test_object_type; - int16_t m_dsp_test_or_clip, m_dsp_test_and_clip; - int16_t m_dsp_test_x, m_dsp_test_y, m_dsp_test_z; + u16 m_dsp_test_object_type; + s16 m_dsp_test_or_clip, m_dsp_test_and_clip; + s16 m_dsp_test_x, m_dsp_test_y, m_dsp_test_z; - DECLARE_WRITE16_MEMBER(dsp_test_start_w); - DECLARE_WRITE16_MEMBER(dsp_test_x_w); - DECLARE_WRITE16_MEMBER(dsp_test_y_w); - DECLARE_WRITE16_MEMBER(dsp_test_z_w); - DECLARE_READ16_MEMBER(dsp_test_point_r); - DECLARE_READ16_MEMBER(dsp_test_or_clip_r); - DECLARE_READ16_MEMBER(dsp_test_and_clip_r); + void dsp_test_start_w(u16 data); + void dsp_test_x_w(u16 data); + void dsp_test_y_w(u16 data); + void dsp_test_z_w(u16 data); + u16 dsp_test_point_r(); + u16 dsp_test_or_clip_r(); + u16 dsp_test_and_clip_r(); - int16_t m_dsp_muldiv_a_1, m_dsp_muldiv_b_1, m_dsp_muldiv_c_1; + s16 m_dsp_muldiv_a_1, m_dsp_muldiv_b_1, m_dsp_muldiv_c_1; - DECLARE_WRITE16_MEMBER(dsp_muldiv_a_1_w); - DECLARE_WRITE16_MEMBER(dsp_muldiv_b_1_w); - DECLARE_WRITE16_MEMBER(dsp_muldiv_c_1_w); - DECLARE_READ16_MEMBER(dsp_muldiv_1_r); + void dsp_muldiv_a_1_w(u16 data); + void dsp_muldiv_b_1_w(u16 data); + void dsp_muldiv_c_1_w(u16 data); + u16 dsp_muldiv_1_r(); - int16_t m_dsp_muldiv_a_2, m_dsp_muldiv_b_2, m_dsp_muldiv_c_2; + s16 m_dsp_muldiv_a_2, m_dsp_muldiv_b_2, m_dsp_muldiv_c_2; - DECLARE_WRITE16_MEMBER(dsp_muldiv_a_2_w); - DECLARE_WRITE16_MEMBER(dsp_muldiv_b_2_w); - DECLARE_WRITE16_MEMBER(dsp_muldiv_c_2_w); - DECLARE_READ16_MEMBER(dsp_muldiv_2_r); + void dsp_muldiv_a_2_w(u16 data); + void dsp_muldiv_b_2_w(u16 data); + void dsp_muldiv_c_2_w(u16 data); + u16 dsp_muldiv_2_r(); //bitmap_ind16 *m_buffer3d; - DECLARE_WRITE16_MEMBER(system_control_w); - DECLARE_READ16_MEMBER(lineram_r); - DECLARE_WRITE16_MEMBER(lineram_w); - DECLARE_READ16_MEMBER(dspram_r); - DECLARE_WRITE16_MEMBER(dspram_w); - DECLARE_READ16_MEMBER(dsp_HOLD_signal_r); - DECLARE_WRITE16_MEMBER(dsp_HOLDA_signal_w); - DECLARE_WRITE16_MEMBER(airsys_paletteram16_w); - DECLARE_WRITE16_MEMBER(airsys_gradram_w); + void system_control_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); + u16 dspram_r(offs_t offset); + void dspram_w(offs_t offset, u16 data, u16 mem_mask = ~0); + u16 dsp_HOLD_signal_r(); + void dsp_HOLDA_signal_w(offs_t offset, u16 data); + void paletteram_w(offs_t offset, u16 data, u16 mem_mask = ~0); + void gradram_w(offs_t offset, u16 data, u16 mem_mask = ~0); DECLARE_READ16_MEMBER(stick_input_r); DECLARE_READ16_MEMBER(stick2_input_r); - DECLARE_WRITE8_MEMBER(coin_control_w); - DECLARE_WRITE8_MEMBER(sound_bankswitch_w); - DECLARE_WRITE16_MEMBER(dsp_flags_w); - DECLARE_WRITE16_MEMBER(dma_regs_w); + void coin_control_w(u8 data); + void sound_bankswitch_w(u8 data); + void dsp_flags_w(offs_t offset, u16 data); + void dma_regs_w(offs_t offset, u16 data, u16 mem_mask = ~0); virtual void machine_start() override; virtual void machine_reset() override; virtual void video_start() override; - uint32_t screen_update_taitoair(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - int draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ); - int draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int start_offset ); + u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + int draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); + int draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int start_offset); void fb_copy_op(void); void fb_fill_op(void); void fb_erase_op(void); - void fill_slope( bitmap_ind16 &bitmap, const rectangle &cliprect, uint16_t header, int32_t x1, int32_t x2, int32_t sl1, int32_t sl2, int32_t y1, int32_t y2, int32_t *nx1, int32_t *nx2 ); - void fill_poly( bitmap_ind16 &bitmap, const rectangle &cliprect, const struct taitoair_poly *q ); + void fill_slope(bitmap_ind16 &bitmap, const rectangle &cliprect, u16 header, s32 x1, s32 x2, s32 sl1, s32 sl2, s32 y1, s32 y2, s32 *nx1, s32 *nx2); + void fill_poly(bitmap_ind16 &bitmap, const rectangle &cliprect, const struct taitoair_poly *q); void DSP_map_data(address_map &map); void DSP_map_program(address_map &map); diff --git a/src/mame/video/taitoair.cpp b/src/mame/video/taitoair.cpp index d61fd4386db..e04aab1f25a 100644 --- a/src/mame/video/taitoair.cpp +++ b/src/mame/video/taitoair.cpp @@ -70,7 +70,7 @@ static const int zoomy_conv_table[] = Screen refresh ***************************************************************************/ -int taitoair_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ) +int taitoair_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) { return draw_sprites(bitmap,cliprect, 0x3f8 / 2); } @@ -79,20 +79,14 @@ int taitoair_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec @param start_offset DMA sprite offset source @return value acquired by a pause flag acquisition. */ -int taitoair_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int start_offset ) +int taitoair_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int start_offset) { /* Y chain size is 16/32?/64/64? pixels. X chain size is always 64 pixels. */ - //const uint16_t stop_values[4] = { 0xc00, 0, 0, 0 }; - static const int size[] = { 1, 2, 4, 4 }; - int x0, y0, x, y, dx, dy, ex, ey, zx, zy; - int ysize; - int j, k; - int offs; /* sprite RAM offset */ - int tile_offs; /* sprite chain offset */ - int zoomx, zoomy; /* zoom value */ + //const u16 stop_values[4] = { 0xc00, 0, 0, 0 }; + static const u8 size[] = { 1, 2, 4, 4 }; - for (offs = start_offset; offs >= 0; offs -= 0x008 / 2) + for (int offs = start_offset; offs >= 0; offs -= 0x008 / 2) { /*! Starting at a particular sequence, sprite DMA seems to stop there and resume via "something", @@ -101,23 +95,23 @@ int taitoair_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec @todo reported sequence for DMA pause flag is 0x0c** 0x0000 0x0000 0x0000. Verify how exactly via HW test. Continuing may be determined by a DMA bit write. */ - if(m_tc0080vco->sprram_r(offs + 0) == 0xc00 || + if (m_tc0080vco->sprram_r(offs + 0) == 0xc00 || m_tc0080vco->sprram_r(offs + 0) == 0xcff) // Air Inferno return offs - 8/2; - x0 = m_tc0080vco->sprram_r(offs + 1) & 0x3ff; - y0 = m_tc0080vco->sprram_r(offs + 0) & 0x3ff; - zoomx = (m_tc0080vco->sprram_r(offs + 2) & 0x7f00) >> 8; - zoomy = (m_tc0080vco->sprram_r(offs + 2) & 0x007f); - tile_offs = (m_tc0080vco->sprram_r(offs + 3) & 0x1fff) << 2; - ysize = size[(m_tc0080vco->sprram_r(offs) & 0x0c00) >> 10]; - + int x0 = m_tc0080vco->sprram_r(offs + 1) & 0x3ff; + int y0 = m_tc0080vco->sprram_r(offs + 0) & 0x3ff; + int zoomx = (m_tc0080vco->sprram_r(offs + 2) & 0x7f00) >> 8; + int zoomy = (m_tc0080vco->sprram_r(offs + 2) & 0x007f); + u32 tile_offs = (m_tc0080vco->sprram_r(offs + 3) & 0x1fff) << 2; + const u8 ysize = size[(m_tc0080vco->sprram_r(offs) & 0x0c00) >> 10]; if (tile_offs) { /* Convert zoomy value to real value as zoomx */ zoomy = zoomy_conv_table[zoomy]; + int dx, dy, ex, ey, zx, zy; if (zoomx < 63) { dx = 8 + (zoomx + 2) / 8; @@ -160,37 +154,33 @@ int taitoair_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec y0 += 2; } - y = y0; - for (j = 0; j < ysize; j ++) + int y = y0; + for (int j = 0; j < ysize; j++) { - x = x0; - for (k = 0; k < 4; k ++) + int x = x0; + for (int k = 0; k < 4; k++) { if (tile_offs >= 0x1000) { - int tile, color, flipx, flipy; - - tile = m_tc0080vco->cram_0_r(tile_offs) & 0x7fff; - color = m_tc0080vco->cram_1_r(tile_offs) & 0x001f; - flipx = m_tc0080vco->cram_1_r(tile_offs) & 0x0040; - flipy = m_tc0080vco->cram_1_r(tile_offs) & 0x0080; + const u32 tile = m_tc0080vco->cram_0_r(tile_offs) & 0x7fff; + const u32 color = m_tc0080vco->cram_1_r(tile_offs) & 0x001f; + int flipx = m_tc0080vco->cram_1_r(tile_offs) & 0x0040; + int flipy = m_tc0080vco->cram_1_r(tile_offs) & 0x0080; if (m_tc0080vco->flipscreen_r()) { - flipx ^= 0x0040; - flipy ^= 0x0080; + flipx = !flipx; + flipy = !flipy; } - - m_gfxdecode->gfx(0)->zoom_transpen(bitmap,cliprect, + m_gfxdecode->gfx(0)->zoom_transpen(bitmap,cliprect, tile, color, flipx, flipy, x, y, - zx, zy, 0 - ); + zx, zy, 0); } - tile_offs ++; + tile_offs++; x += dx; } y += dy; @@ -201,7 +191,7 @@ int taitoair_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprec return 0; } -void taitoair_state::fill_slope( bitmap_ind16 &bitmap, const rectangle &cliprect, uint16_t header, int32_t x1, int32_t x2, int32_t sl1, int32_t sl2, int32_t y1, int32_t y2, int32_t *nx1, int32_t *nx2 ) +void taitoair_state::fill_slope(bitmap_ind16 &bitmap, const rectangle &cliprect, u16 header, s32 x1, s32 x2, s32 sl1, s32 sl2, s32 y1, s32 y2, s32 *nx1, s32 *nx2) { if (y1 > cliprect.max_y) return; @@ -230,7 +220,7 @@ void taitoair_state::fill_slope( bitmap_ind16 &bitmap, const rectangle &cliprect if (x1 > x2 || (x1==x2 && sl1 > sl2)) { - int32_t t, *tp; + s32 t, *tp; t = x1; x1 = x2; x2 = t; @@ -258,17 +248,17 @@ void taitoair_state::fill_slope( bitmap_ind16 &bitmap, const rectangle &cliprect if (xx2 > cliprect.max_x) xx2 = cliprect.max_x; - if(header & 0x4000 && machine().input().code_pressed(KEYCODE_Q)) + if (header & 0x4000 && machine().input().code_pressed(KEYCODE_Q)) { base_color = machine().rand() & 0x3fff; grad_col = 0; } - else if(m_paletteram[(header & 0xff)+0x300] & 0x8000) + else if (m_paletteram[(header & 0xff)+0x300] & 0x8000) { /* Terrain elements, with a gradient applied. */ /*! @todo it's unknown if gradient color applies by global screen Y coordinate or there's a calculation to somewhere ... */ base_color = ((header & 0x3f) * 0x80) + 0x2040; - if(header & 0x3fe0) + if (header & 0x3fe0) base_color = machine().rand() & 0x3fff; grad_col = (y1 >> 3) & 0x3f; } @@ -295,22 +285,21 @@ void taitoair_state::fill_slope( bitmap_ind16 &bitmap, const rectangle &cliprect *nx2 = x2; } -void taitoair_state::fill_poly( bitmap_ind16 &bitmap, const rectangle &cliprect, const struct taitoair_poly *q ) +void taitoair_state::fill_poly(bitmap_ind16 &bitmap, const rectangle &cliprect, const struct taitoair_poly *q) { - int32_t sl1, sl2, cury, limy, x1, x2; - int pmin, pmax, i, ps1, ps2; + s32 sl1, sl2, x1, x2; struct taitoair_spoint p[TAITOAIR_POLY_MAX_PT * 2]; - uint16_t header = q->header; + u16 header = q->header; int pcount = q->pcount; - for (i = 0; i < pcount; i++) + for (int i = 0; i < pcount; i++) { p[i].x = p[i + pcount].x = q->p[i].x << TAITOAIR_FRAC_SHIFT; p[i].y = p[i + pcount].y = q->p[i].y; } - pmin = pmax = 0; - for (i = 1; i < pcount; i++) + int pmin = 0, pmax = 0; + for (int i = 1; i < pcount; i++) { if (p[i].y < p[pmin].y) pmin = i; @@ -318,8 +307,8 @@ void taitoair_state::fill_poly( bitmap_ind16 &bitmap, const rectangle &cliprect, pmax = i; } - cury = p[pmin].y; - limy = p[pmax].y; + s32 cury = p[pmin].y; + s32 limy = p[pmax].y; if (cury == limy) return; @@ -332,8 +321,8 @@ void taitoair_state::fill_poly( bitmap_ind16 &bitmap, const rectangle &cliprect, if (limy > cliprect.max_y) limy = cliprect.max_y; - ps1 = pmin + pcount; - ps2 = pmin; + int ps1 = pmin + pcount; + int ps2 = pmin; goto startup; @@ -469,7 +458,7 @@ void taitoair_state::fb_fill_op() @todo still don't know how this works. It calls three values (0x1fff-0x5fff-0xdfff), for two or three offsets. In theory this should fit into framebuffer draw, display, clear and swap in some way. */ -WRITE16_MEMBER(taitoair_state::dsp_flags_w) +void taitoair_state::dsp_flags_w(offs_t offset, u16 data) { rectangle cliprect; @@ -480,67 +469,67 @@ WRITE16_MEMBER(taitoair_state::dsp_flags_w) cliprect.max_x = m_screen->width() - 1; cliprect.max_y = m_screen->height() - 1; + /* clear and copy operation if offset is 0x3001 */ + if (offset == 1) { - /* clear and copy operation if offset is 0x3001 */ - if(offset == 1) - { - fb_copy_op(); - } + fb_copy_op(); + } - /* if offset 0x3001 OR 0x3002 we put data in the buffer fb */ - if(offset) - { - fb_fill_op(); - } + /* if offset 0x3001 OR 0x3002 we put data in the buffer fb */ + if (offset) + { + fb_fill_op(); } } void taitoair_state::video_start() { - int width, height; - - width = m_screen->width(); - height = m_screen->height(); + int width = m_screen->width(); + int height = m_screen->height(); m_framebuffer[0] = std::make_unique(width, height); m_framebuffer[1] = std::make_unique(width, height); //m_buffer3d = std::make_unique(width, height); } -uint32_t taitoair_state::screen_update_taitoair(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +u32 taitoair_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - int sprite_ptr; m_tc0080vco->tilemap_update(); - uint32_t counter1 = (m_tc0430grw[0] << 16) | m_tc0430grw[1]; - uint32_t inc1x = int16_t(m_tc0430grw[2]); - uint32_t inc1y = int16_t(m_tc0430grw[3]); - uint32_t counter2 = (m_tc0430grw[4] << 16) | m_tc0430grw[5]; - uint32_t inc2x = int16_t(m_tc0430grw[6]); - uint32_t inc2y = int16_t(m_tc0430grw[7]); + u32 counter1 = (m_tc0430grw[0] << 16) | m_tc0430grw[1]; + u32 inc1x = s16(m_tc0430grw[2]); + u32 inc1y = s16(m_tc0430grw[3]); + u32 counter2 = (m_tc0430grw[4] << 16) | m_tc0430grw[5]; + u32 inc2x = s16(m_tc0430grw[6]); + u32 inc2y = s16(m_tc0430grw[7]); // Deltas are 118/31 int dx = cliprect.min_x + 118; int dy = cliprect.min_y - 48 + 31; - counter1 += dx*inc1x + dy*inc1y; - counter2 += dx*inc2x + dy*inc2y; + counter1 += dx * inc1x + dy * inc1y; + counter2 += dx * inc2x + dy * inc2y; - for(int y = cliprect.min_y; y <= cliprect.max_y; y++) { - uint32_t c1b = counter1; - uint32_t c2b = counter2; - uint16_t *dest = &bitmap.pix(y, cliprect.min_x); - for(int x = cliprect.min_x; x <= cliprect.max_x; x++) { - uint16_t base = 0; - uint32_t cntr = 0; - if(c2b & 0x800000) { + for (int y = cliprect.min_y; y <= cliprect.max_y; y++) + { + u32 c1b = counter1; + u32 c2b = counter2; + u16 *dest = &bitmap.pix(y, cliprect.min_x); + for (int x = cliprect.min_x; x <= cliprect.max_x; x++) + { + u16 base = 0; + u32 cntr = 0; + if (c2b & 0x800000) + { base = 0x2040; cntr = c2b; - } else if(c1b & 0x800000) { + } + else if (c1b & 0x800000) + { base = 0x2000; cntr = c1b; } - if(m_gradbank == true) - base|= 0x1000; + if (m_gradbank == true) + base |= 0x1000; *dest++ = base | (cntr >= 0x83f000 ? 0x3f : (cntr >> 12) & 0x3f); @@ -551,13 +540,11 @@ uint32_t taitoair_state::screen_update_taitoair(screen_device &screen, bitmap_in counter2 += inc2y; } - - copybitmap_trans(bitmap, *m_framebuffer[1], 0, 0, 0, 0, cliprect, 0); m_tc0080vco->tilemap_draw(screen, bitmap, cliprect, 0, 0, 0); - sprite_ptr = draw_sprites(bitmap, cliprect); + int sprite_ptr = draw_sprites(bitmap, cliprect); m_tc0080vco->tilemap_draw(screen, bitmap, cliprect, 1, 0, 0);