From e740962d5fcea1cc640eb169cbeed7118771277d Mon Sep 17 00:00:00 2001 From: hap Date: Thu, 4 Oct 2018 12:30:39 +0200 Subject: [PATCH] namcos22: small misc update (nw) --- src/mame/drivers/namcos22.cpp | 251 +++++++++++++++++----------------- src/mame/drivers/taitojc.cpp | 4 +- src/mame/includes/namcos22.h | 23 ++-- src/mame/video/namcos22.cpp | 42 +++--- 4 files changed, 159 insertions(+), 161 deletions(-) diff --git a/src/mame/drivers/namcos22.cpp b/src/mame/drivers/namcos22.cpp index 5c822bb8085..7a719b4c752 100644 --- a/src/mame/drivers/namcos22.cpp +++ b/src/mame/drivers/namcos22.cpp @@ -2170,129 +2170,127 @@ READ16_MEMBER(namcos22_state::pdp_status_r) return m_dsp_master_bioz; } -uint32_t namcos22_state::pdp_polygonram_read(offs_t offs) -{ - return m_polygonram[offs & 0x7fff]; -} - -void namcos22_state::pdp_polygonram_write(offs_t offs, uint32_t data) -{ - m_polygonram[offs & 0x7fff] = data; -} - READ16_MEMBER(namcos22_state::pdp_begin_r) { - /* this feature appears to be only used on Super System22 hardware */ - if (m_is_ss22) + /** + * This presumably kickstarts the PDP(polygon display parser/processor?) + * It parses through the displaylist and sends commands to the 3D render device. + * In MAME, this main task is done in simulate_slavedsp instead. Ideally, we'd make the PDP a device with execute_run + * Super System 22 supports more than just "goto" and render commands, they are handled here. + */ + m_dsp_master_bioz = 1; + uint16_t offs = (m_is_ss22) ? pdp_polygonram_read(0x7fff) : m_pdp_base; + + if (!m_is_ss22) + return 0; + + for (;;) { - uint16_t offs = pdp_polygonram_read(0x7fff); - m_dsp_master_bioz = 1; - for (;;) + offs &= 0x7fff; + uint16_t start = offs; + uint16_t cmd = pdp_polygonram_read(offs++); + uint32_t srcAddr; + uint32_t dstAddr; + uint32_t numWords; + uint32_t data; + switch (cmd) { - uint16_t start = offs; - uint16_t cmd = pdp_polygonram_read(offs++); - uint32_t srcAddr; - uint32_t dstAddr; - uint32_t numWords; - uint32_t data; - switch (cmd) - { - case 0xfff0: - /* NOP? used in 'PDP LOOP TEST' */ - break; + case 0xfff0: + // NOP? used in 'PDP LOOP TEST' + break; - case 0xfff5: - /* write to point ram */ - dstAddr = pdp_polygonram_read(offs++); /* 32 bit PointRAM address */ - data = pdp_polygonram_read(offs++); /* 24 bit data */ - point_write(dstAddr, data); - break; + case 0xfff5: + // write to point ram + dstAddr = pdp_polygonram_read(offs++); // 32 bit PointRAM address + data = pdp_polygonram_read(offs++); // 24 bit data + point_write(dstAddr, data); + break; - case 0xfff6: - /* read word from point ram */ - srcAddr = pdp_polygonram_read(offs++); /* 32 bit PointRAM address */ - dstAddr = pdp_polygonram_read(offs++); /* CommRAM address; receives 24 bit PointRAM data */ - data = point_read(srcAddr); - pdp_polygonram_write(dstAddr, data); - break; + case 0xfff6: + /* read word from point ram */ + srcAddr = pdp_polygonram_read(offs++); // 32 bit PointRAM address + dstAddr = pdp_polygonram_read(offs++); // CommRAM address; receives 24 bit PointRAM data + data = point_read(srcAddr); + pdp_polygonram_write(dstAddr, data); + break; - case 0xfff7: - /* block move (CommRAM to CommRAM) */ - srcAddr = pdp_polygonram_read(offs++); - dstAddr = pdp_polygonram_read(offs++); - numWords = pdp_polygonram_read(offs++); - while (numWords--) - { - data = pdp_polygonram_read(srcAddr++); - pdp_polygonram_write(dstAddr++, data); - } - break; + case 0xfff7: + // block move (CommRAM to CommRAM) + srcAddr = pdp_polygonram_read(offs++); + dstAddr = pdp_polygonram_read(offs++); + numWords = pdp_polygonram_read(offs++); + while (numWords--) + { + data = pdp_polygonram_read(srcAddr++); + pdp_polygonram_write(dstAddr++, data); + } + break; - case 0xfffa: - /* read block from point ram */ - srcAddr = pdp_polygonram_read(offs++); /* 32 bit PointRAM address */ - dstAddr = pdp_polygonram_read(offs++); /* CommRAM address; receives data */ - numWords = pdp_polygonram_read(offs++); /* block size */ - while (numWords--) - { - data = point_read(srcAddr++); - pdp_polygonram_write(dstAddr++, data); - } - break; + case 0xfffa: + // read block from point ram + srcAddr = pdp_polygonram_read(offs++); // 32 bit PointRAM address + dstAddr = pdp_polygonram_read(offs++); // CommRAM address; receives data + numWords = pdp_polygonram_read(offs++); // block size + while (numWords--) + { + data = point_read(srcAddr++); + pdp_polygonram_write(dstAddr++, data); + } + break; - case 0xfffb: - /* write block to point ram */ - dstAddr = pdp_polygonram_read(offs++); /* 32 bit PointRAM address */ - numWords = pdp_polygonram_read(offs++); /* block size */ - while (numWords--) - { - data = pdp_polygonram_read(offs++); /* 24 bit source data */ - point_write(dstAddr++, data); - } - break; + case 0xfffb: + // write block to point ram + dstAddr = pdp_polygonram_read(offs++); // 32 bit PointRAM address + numWords = pdp_polygonram_read(offs++); // block size + while (numWords--) + { + data = pdp_polygonram_read(offs++); // 24 bit source data + point_write(dstAddr++, data); + } + break; - case 0xfffc: - /* point ram to point ram */ - srcAddr = pdp_polygonram_read(offs++); - dstAddr = pdp_polygonram_read(offs++); - numWords = pdp_polygonram_read(offs++); - while (numWords--) - { - data = point_read(srcAddr++); - point_write(dstAddr++, data); - } - break; + case 0xfffc: + // point ram to point ram + srcAddr = pdp_polygonram_read(offs++); + dstAddr = pdp_polygonram_read(offs++); + numWords = pdp_polygonram_read(offs++); + while (numWords--) + { + data = point_read(srcAddr++); + point_write(dstAddr++, data); + } + break; - case 0xfffd: - /* direct command to render device */ - // len -> command (eg. BB0003) -> data - numWords = pdp_polygonram_read(offs++); - while (numWords--) - { - data = pdp_polygonram_read(offs++); - //namcos22_WriteDataToRenderDevice(data); - } - break; + case 0xfffd: + // direct command to render device + // len -> command (eg. BB0003) -> data + numWords = pdp_polygonram_read(offs++); + while (numWords--) + { + data = pdp_polygonram_read(offs++); + //namcos22_WriteDataToRenderDevice(data); + } + break; - case 0xfffe: - /* unknown */ - data = pdp_polygonram_read(offs++); /* ??? (usually 0x400 or 0) */ - break; + case 0xfffe: + // unknown + data = pdp_polygonram_read(offs++); // ??? (usually 0x400 or 0) + break; - case 0xffff: - /* "goto" command */ - offs = pdp_polygonram_read(offs); - if (offs == start) - { - /* most commands end with a "goto self" */ - return 0; - } - break; - - default: - logerror("unknown PDP cmd = 0x%04x!\n", cmd); + case 0xffff: + // "goto" command + offs = pdp_polygonram_read(offs) & 0x7fff; + if (offs == start) + { + // MAME will get stuck with a "goto self", so bail out + // in reality, the cpu can overwrite this address or retrigger pdp_begin return 0; - } + } + break; + + default: + logerror("unknown PDP cmd = 0x%04x!\n", cmd); + return 0; } } @@ -2334,6 +2332,7 @@ WRITE16_MEMBER(namcos22_state::dsp_unk2_w) * Prop Cycle doesn't use this; instead it writes this * addr to the uppermost word of CommRAM. */ + m_pdp_base = data; } READ16_MEMBER(namcos22_state::dsp_unk_port3_r) @@ -2550,7 +2549,7 @@ void namcos22_state::master_dsp_io(address_map &map) } -READ16_MEMBER(namcos22_state::dsp_bioz_r) +READ16_MEMBER(namcos22_state::dsp_slave_bioz_r) { /* STUB */ return 1; @@ -3368,13 +3367,13 @@ static INPUT_PORTS_START( airco22 ) PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("ADC.0") - PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_MINMAX(0x40, 0xc0) PORT_SENSITIVITY(100) PORT_KEYDELTA(2) + PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_MINMAX(0x40, 0xc0) PORT_SENSITIVITY(100) PORT_KEYDELTA(3) PORT_START("ADC.1") - PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_MINMAX(0x40, 0xc0) PORT_SENSITIVITY(100) PORT_KEYDELTA(2) + PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_MINMAX(0x40, 0xc0) PORT_SENSITIVITY(100) PORT_KEYDELTA(3) PORT_START("ADC.2") // throttle stick auto-centers - PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Z ) PORT_MINMAX(0x40, 0xc0) PORT_SENSITIVITY(100) PORT_KEYDELTA(2) PORT_NAME("Throttle Stick") + PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Z ) PORT_MINMAX(0x40, 0xc0) PORT_SENSITIVITY(100) PORT_KEYDELTA(3) PORT_NAME("Throttle Stick") INPUT_PORTS_END static INPUT_PORTS_START( cybrcycc ) @@ -3750,7 +3749,7 @@ MACHINE_CONFIG_START(namcos22_state::namcos22) slave.set_addrmap(AS_PROGRAM, &namcos22_state::slave_dsp_program); slave.set_addrmap(AS_DATA, &namcos22_state::slave_dsp_data); slave.set_addrmap(AS_IO, &namcos22_state::slave_dsp_io); - slave.bio_in_cb().set(FUNC(namcos22_state::dsp_bioz_r)); + slave.bio_in_cb().set(FUNC(namcos22_state::dsp_slave_bioz_r)); slave.hold_in_cb().set(FUNC(namcos22_state::dsp_hold_signal_r)); slave.hold_ack_out_cb().set(FUNC(namcos22_state::dsp_hold_ack_w)); slave.xf_out_cb().set(FUNC(namcos22_state::dsp_xf_output_w)); @@ -3787,8 +3786,8 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(namcos22_state::cybrcomm) namcos22(config); - SPEAKER(config, "rear_left", -0.2, 0.0, -0.5); - SPEAKER(config, "rear_right", 0.2, 0.0, -0.5); + SPEAKER(config, "rear_left").rear_left(); + SPEAKER(config, "rear_right").rear_right(); MCFG_DEVICE_MODIFY("c352") MCFG_SOUND_ROUTE(2, "rear_left", 1.00) @@ -3819,7 +3818,7 @@ MACHINE_CONFIG_START(namcos22_state::namcos22s) slave.set_addrmap(AS_PROGRAM, &namcos22_state::slave_dsp_program); slave.set_addrmap(AS_DATA, &namcos22_state::slave_dsp_data); slave.set_addrmap(AS_IO, &namcos22_state::slave_dsp_io); - slave.bio_in_cb().set(FUNC(namcos22_state::dsp_bioz_r)); + slave.bio_in_cb().set(FUNC(namcos22_state::dsp_slave_bioz_r)); slave.hold_in_cb().set(FUNC(namcos22_state::dsp_hold_signal_r)); slave.hold_ack_out_cb().set(FUNC(namcos22_state::dsp_hold_ack_w)); slave.xf_out_cb().set(FUNC(namcos22_state::dsp_xf_output_w)); @@ -3853,10 +3852,10 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(namcos22_state::airco22b) namcos22s(config); - SPEAKER(config, "bodysonic").front_center(); + SPEAKER(config, "bodysonic").subwoofer(); MCFG_DEVICE_MODIFY("c352") - MCFG_SOUND_ROUTE(2, "bodysonic", 0.50) + MCFG_SOUND_ROUTE(2, "bodysonic", 0.50) // to subwoofer MACHINE_CONFIG_END MACHINE_CONFIG_START(namcos22_state::alpine) @@ -3880,7 +3879,7 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(namcos22_state::cybrcycc) namcos22s(config); - SPEAKER(config, "tank").front_center(); + SPEAKER(config, "tank", 0.0, 0.0, 0.0); MCFG_DEVICE_MODIFY("c352") MCFG_SOUND_ROUTE(2, "tank", 1.00) @@ -3889,12 +3888,10 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(namcos22_state::dirtdash) namcos22s(config); - SPEAKER(config, "road").front_center(); - SPEAKER(config, "under").front_center(); + SPEAKER(config, "road", 0.0, 0.0, 0.0); MCFG_DEVICE_MODIFY("c352") - MCFG_SOUND_ROUTE(2, "road", 1.00) - MCFG_SOUND_ROUTE(3, "under", 0.50) // from sound test + MCFG_SOUND_ROUTE(3, "road", 1.00) MACHINE_CONFIG_END MACHINE_CONFIG_START(namcos22_state::timecris) @@ -3908,12 +3905,12 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(namcos22_state::tokyowar) namcos22s(config); - SPEAKER(config, "seat", 0.0, 0.0, 0.0); - SPEAKER(config, "vibration", 0.0, 0.0, 0.0); + SPEAKER(config, "vibration").subwoofer(); + SPEAKER(config, "seat", 0.0, 0.0, -0.5); MCFG_DEVICE_MODIFY("c352") + MCFG_SOUND_ROUTE(2, "vibration", 0.50) // to "bass shaker" MCFG_SOUND_ROUTE(3, "seat", 1.00) - MCFG_SOUND_ROUTE(2, "vibration", 0.50) MACHINE_CONFIG_END MACHINE_CONFIG_START(namcos22_state::propcycl) diff --git a/src/mame/drivers/taitojc.cpp b/src/mame/drivers/taitojc.cpp index 5197bc9ef31..bc20523d409 100644 --- a/src/mame/drivers/taitojc.cpp +++ b/src/mame/drivers/taitojc.cpp @@ -1133,9 +1133,9 @@ MACHINE_CONFIG_START(taitojc_state::dendego) MCFG_SCREEN_UPDATE_DRIVER(taitojc_state, screen_update_dendego) /* sound hardware */ - SPEAKER(config, "subwoofer", 0.0, 0.0, 1.0); + SPEAKER(config, "vibration").subwoofer(); MCFG_DEVICE_ADD("oki", OKIM6295, 1056000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "subwoofer", 0.20) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "vibration", 0.20) MACHINE_CONFIG_END diff --git a/src/mame/includes/namcos22.h b/src/mame/includes/namcos22.h index 4e84b25cc9a..2fa76c17b78 100644 --- a/src/mame/includes/namcos22.h +++ b/src/mame/includes/namcos22.h @@ -323,7 +323,7 @@ private: DECLARE_WRITE16_MEMBER(dsp_led_w); DECLARE_WRITE16_MEMBER(dsp_unk8_w); DECLARE_WRITE16_MEMBER(master_render_device_w); - DECLARE_READ16_MEMBER(dsp_bioz_r); + DECLARE_READ16_MEMBER(dsp_slave_bioz_r); DECLARE_READ16_MEMBER(dsp_slave_port3_r); DECLARE_READ16_MEMBER(dsp_slave_port4_r); DECLARE_READ16_MEMBER(dsp_slave_port5_r); @@ -379,8 +379,8 @@ private: void handle_driving_io(); void handle_coinage(int slots, int address_is_odd); void handle_cybrcomm_io(); - uint32_t pdp_polygonram_read(offs_t offs); - void pdp_polygonram_write(offs_t offs, uint32_t data); + inline uint32_t pdp_polygonram_read(offs_t offs) { return m_polygonram[offs & 0x7fff]; } + inline void pdp_polygonram_write(offs_t offs, uint32_t data) { m_polygonram[offs & 0x7fff] = data; } void point_write(offs_t offs, uint32_t data); int32_t pointram_read(offs_t offs); inline int32_t point_read(offs_t offs) { offs &= 0x00ffffff; return (offs < m_pointrom_size) ? m_pointrom[offs] : pointram_read(offs); } @@ -394,24 +394,24 @@ private: void transform_normal(float *nx, float *ny, float *nz, float m[4][4]); void register_normals(int32_t addr, float m[4][4]); - void blit_single_quad(bitmap_rgb32 &bitmap, uint32_t color, uint32_t addr, float m[4][4], int32_t polyshift, int flags, int packetformat); - void blit_quads(bitmap_rgb32 &bitmap, int32_t addr, float m[4][4], int32_t base); - void blit_polyobject(bitmap_rgb32 &bitmap, int code, float m[4][4]); + void blit_single_quad(uint32_t color, uint32_t addr, float m[4][4], int32_t polyshift, int flags, int packetformat); + void blit_quads(int32_t addr, float m[4][4], int32_t base); + void blit_polyobject(int code, float m[4][4]); void slavesim_handle_bb0003(const int32_t *src); - void slavesim_handle_200002(bitmap_rgb32 &bitmap, const int32_t *src); + void slavesim_handle_200002(const int32_t *src); void slavesim_handle_300000(const int32_t *src); void slavesim_handle_233002(const int32_t *src); - void simulate_slavedsp(bitmap_rgb32 &bitmap); + void simulate_slavedsp(); void init_tables(); void update_mixer(); void update_palette(); void recalc_czram(); void draw_direct_poly(const uint16_t *src); - void draw_polygons(bitmap_rgb32 &bitmap); - void draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect); - void draw_sprite_group(bitmap_rgb32 &bitmap, const rectangle &cliprect, const uint32_t *src, const uint32_t *attr, int num_sprites, int deltax, int deltay, int y_lowres); + void draw_polygons(); + void draw_sprites(); + void draw_sprite_group(const uint32_t *src, const uint32_t *attr, int num_sprites, int deltax, int deltay, int y_lowres); void draw_text_layer(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); void namcos22s_mix_text_layer(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, int prival); void namcos22_mix_text_layer(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); @@ -495,6 +495,7 @@ private: uint32_t m_old_coin_state; uint32_t m_credits1; uint32_t m_credits2; + uint16_t m_pdp_base; uint32_t m_point_address; uint32_t m_point_data; uint16_t m_SerialDataSlaveToMasterNext; diff --git a/src/mame/video/namcos22.cpp b/src/mame/video/namcos22.cpp index 7bea57b42c7..9ae1937bb54 100644 --- a/src/mame/video/namcos22.cpp +++ b/src/mame/video/namcos22.cpp @@ -986,7 +986,7 @@ void namcos22_state::draw_direct_poly(const uint16_t *src) * 0x07350 - guardrail * 0x061a8 - red car */ -void namcos22_state::blit_single_quad(bitmap_rgb32 &bitmap, uint32_t color, uint32_t addr, float m[4][4], int32_t polyshift, int flags, int packetformat) +void namcos22_state::blit_single_quad(uint32_t color, uint32_t addr, float m[4][4], int32_t polyshift, int flags, int packetformat) { int absolute_priority = m_absolute_priority; int32_t zsort; @@ -1130,7 +1130,7 @@ void namcos22_state::blit_single_quad(bitmap_rgb32 &bitmap, uint32_t color, uint } -void namcos22_state::blit_quads(bitmap_rgb32 &bitmap, int32_t addr, float m[4][4], int32_t base) +void namcos22_state::blit_quads(int32_t addr, float m[4][4], int32_t base) { // int additionalnormals = 0; int chunklength = point_read(addr++); @@ -1169,7 +1169,7 @@ void namcos22_state::blit_quads(bitmap_rgb32 &bitmap, int32_t addr, float m[4][4 flags = point_read(addr + 1); color = point_read(addr + 2); bias = 0; - blit_single_quad(bitmap, color, addr + 3, m, bias, flags, packetformat); + blit_single_quad(color, addr + 3, m, bias, flags, packetformat); break; case 0x18: @@ -1182,7 +1182,7 @@ void namcos22_state::blit_quads(bitmap_rgb32 &bitmap, int32_t addr, float m[4][4 flags = point_read(addr + 1); color = point_read(addr + 2); bias = point_read(addr + 3); - blit_single_quad(bitmap, color, addr + 4, m, bias, flags, packetformat); + blit_single_quad(color, addr + 4, m, bias, flags, packetformat); break; case 0x10: /* vertex lighting */ @@ -1219,7 +1219,7 @@ void namcos22_state::blit_quads(bitmap_rgb32 &bitmap, int32_t addr, float m[4][4 } } -void namcos22_state::blit_polyobject(bitmap_rgb32 &bitmap, int code, float m[4][4]) +void namcos22_state::blit_polyobject(int code, float m[4][4]) { uint32_t addr1 = point_read(code); m_LitSurfaceCount = 0; @@ -1230,7 +1230,7 @@ void namcos22_state::blit_polyobject(bitmap_rgb32 &bitmap, int code, float m[4][ int32_t addr2 = point_read(addr1++); if (addr2 < 0) break; - blit_quads(bitmap, addr2, m, code); + blit_quads(addr2, m, code); } } @@ -1318,7 +1318,7 @@ void namcos22_state::slavesim_handle_bb0003(const int32_t *src) transform_normal(&m_camera_lx, &m_camera_ly, &m_camera_lz, m_viewmatrix); } -void namcos22_state::slavesim_handle_200002(bitmap_rgb32 &bitmap, const int32_t *src) +void namcos22_state::slavesim_handle_200002(const int32_t *src) { /** * 0xfffd @@ -1351,7 +1351,7 @@ void namcos22_state::slavesim_handle_200002(bitmap_rgb32 &bitmap, const int32_t m[3][2] = src[0xc]; /* zpos */ matrix3d_multiply(m, m_viewmatrix); - blit_polyobject(bitmap, m_PrimitiveID, m); + blit_polyobject(m_PrimitiveID, m); } else if (m_PrimitiveID != 0 && m_PrimitiveID != 2) { @@ -1393,7 +1393,7 @@ void namcos22_state::slavesim_handle_233002(const int32_t *src) m_objectshift = src[2]; } -void namcos22_state::simulate_slavedsp(bitmap_rgb32 &bitmap) +void namcos22_state::simulate_slavedsp() { const int32_t *src = 0x300 + (int32_t *)m_polygonram.target(); @@ -1433,7 +1433,7 @@ void namcos22_state::simulate_slavedsp(bitmap_rgb32 &bitmap) break; case 0x0d: - slavesim_handle_200002(bitmap, src); /* render primitive */ + slavesim_handle_200002(src); /* render primitive */ break; default: @@ -1455,7 +1455,7 @@ void namcos22_state::simulate_slavedsp(bitmap_rgb32 &bitmap) src += len; src++; /* always 0xffff */ - uint16_t next = 0x7fff & *src++; /* link to next command */ + uint16_t next = *src++ & 0x7fff; /* link to next command */ if (next != (index + len + 1 + 1)) { /* end of list */ @@ -1469,11 +1469,11 @@ void namcos22_state::simulate_slavedsp(bitmap_rgb32 &bitmap) } } -void namcos22_state::draw_polygons(bitmap_rgb32 &bitmap) +void namcos22_state::draw_polygons() { if (m_slave_simulation_active) { - simulate_slavedsp(bitmap); + simulate_slavedsp(); m_poly->wait("draw_polygons"); } } @@ -1482,7 +1482,7 @@ void namcos22_state::draw_polygons(bitmap_rgb32 &bitmap) /*********************************************************************************************/ -void namcos22_state::draw_sprite_group(bitmap_rgb32 &bitmap, const rectangle &cliprect, const uint32_t *src, const uint32_t *attr, int num_sprites, int deltax, int deltay, int y_lowres) +void namcos22_state::draw_sprite_group(const uint32_t *src, const uint32_t *attr, int num_sprites, int deltax, int deltay, int y_lowres) { for (int i = 0; i < num_sprites; i++) { @@ -1607,7 +1607,7 @@ void namcos22_state::draw_sprite_group(bitmap_rgb32 &bitmap, const rectangle &cl } } -void namcos22_state::draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect) +void namcos22_state::draw_sprites() { const uint32_t *src; const uint32_t *attr; @@ -1678,7 +1678,7 @@ void namcos22_state::draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprec { src = &m_spriteram[0x04000/4 + base*4]; attr = &m_spriteram[0x20000/4 + base*2]; - draw_sprite_group(bitmap, cliprect, src, attr, num_sprites, deltax, deltay, y_lowres); + draw_sprite_group(src, attr, num_sprites, deltax, deltay, y_lowres); } /* VICS RAM provides two additional banks (also many unknown regs here) */ @@ -1712,7 +1712,7 @@ void namcos22_state::draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprec { src = &m_vics_data[(m_vics_control[0x48/4] & 0xffff)/4]; attr = &m_vics_data[(m_vics_control[0x58/4] & 0xffff)/4]; - draw_sprite_group(bitmap, cliprect, src, attr, num_sprites, deltax, deltay, y_lowres); + draw_sprite_group(src, attr, num_sprites, deltax, deltay, y_lowres); } num_sprites = m_vics_control[0x60/4] >> 4 & 0x1ff; // no +1 @@ -1728,7 +1728,7 @@ void namcos22_state::draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprec { src = &m_vics_data[(m_vics_control[0x68/4] & 0xffff)/4]; attr = &m_vics_data[(m_vics_control[0x78/4] & 0xffff)/4]; - draw_sprite_group(bitmap, cliprect, src, attr, num_sprites, deltax, deltay, y_lowres); + draw_sprite_group(src, attr, num_sprites, deltax, deltay, y_lowres); } } @@ -2341,8 +2341,8 @@ uint32_t namcos22_state::screen_update_namcos22s(screen_device &screen, bitmap_r // layers uint8_t layer = nthbyte(m_mixer, 0x1f); if (layer & 4) draw_text_layer(screen, bitmap, cliprect); - if (layer & 2) draw_sprites(bitmap, cliprect); - if (layer & 1) draw_polygons(bitmap); + if (layer & 2) draw_sprites(); + if (layer & 1) draw_polygons(); m_poly->render_scene(screen, bitmap); if (layer & 4) namcos22s_mix_text_layer(screen, bitmap, cliprect, 6); @@ -2376,7 +2376,7 @@ uint32_t namcos22_state::screen_update_namcos22(screen_device &screen, bitmap_rg bitmap.fill(m_palette->pen(0x7fff), cliprect); // layers - draw_polygons(bitmap); + draw_polygons(); m_poly->render_scene(screen, bitmap); draw_text_layer(screen, bitmap, cliprect); // text layer + final mix(gamma)