From 0cf7e30b410cda1736e322067162e61e3d1b9146 Mon Sep 17 00:00:00 2001 From: hap Date: Mon, 14 Nov 2022 23:22:57 +0100 Subject: namcos22: add object brightness adjust --- src/mame/namco/namcos22.cpp | 53 ++++++++++++++++----------------- src/mame/namco/namcos22.h | 13 ++++---- src/mame/namco/namcos22_v.cpp | 69 +++++++++++++++++++++++++++++++------------ 3 files changed, 84 insertions(+), 51 deletions(-) diff --git a/src/mame/namco/namcos22.cpp b/src/mame/namco/namcos22.cpp index d1505097a1c..7daf8002470 100644 --- a/src/mame/namco/namcos22.cpp +++ b/src/mame/namco/namcos22.cpp @@ -28,8 +28,6 @@ TODO: - improve ss22 lighting: + mountains in alpinr2b selection screen + ridgerac waving flag shadowing - + cybrcomm enemies should flash white when you shoot them, probably lighting related - + timecris helicopter, car, grenade boxes should flash white when you shoot them (similar to cybrcomm) - improve ss22 spot, used in dirtdash, alpines highscore entry, testmode screen#14 - not understood well: + does not work at all in alpines (uses spot_factor, not spotram, should show a spotlight with darkened background) + should be done before global fade, see dirtdash when starting at jungle level @@ -2068,7 +2066,7 @@ u16 namcos22_state::point_loword_r() u16 namcos22_state::point_hiword_ir() { - // high bit is unknown busy signal (ridgerac, ridgera2, raveracw, cybrcomm) + // high bit is unknown busy signal (ridgerac, ridgera2, raverace, cybrcomm) return 0x8000 | (point_read(m_point_address++) >> 16 & 0x00ff); } @@ -3043,7 +3041,7 @@ static INPUT_PORTS_START( ridgera2 ) PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) INPUT_PORTS_END -static INPUT_PORTS_START( raveracw ) +static INPUT_PORTS_START( raverace ) PORT_INCLUDE( ridgera ) PORT_MODIFY("INPUTS") @@ -3110,7 +3108,7 @@ static INPUT_PORTS_START( cybrcomm ) PORT_BIT( 0x0000ffff, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END -static INPUT_PORTS_START( acedrvr ) +static INPUT_PORTS_START( acedrive ) PORT_START("INPUTS") PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_NAME("Shift Down") PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_NAME("Shift Up") @@ -3188,7 +3186,7 @@ static INPUT_PORTS_START( acedrvr ) INPUT_PORTS_END static INPUT_PORTS_START( victlap ) - PORT_INCLUDE( acedrvr ) + PORT_INCLUDE( acedrive ) PORT_MODIFY("CUSTOM.0") PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CONDITION("DEV", 0x01, EQUALS, 0x01) PORT_PLAYER(2) PORT_NAME("Dev Service Exit") @@ -3673,6 +3671,7 @@ void namcos22_state::machine_start() save_item(NAME(m_keycus_id)); save_item(NAME(m_keycus_rng)); save_item(NAME(m_cz_adjust)); + save_item(NAME(m_bri_adjust)); save_item(NAME(m_dspram_bank)); save_item(NAME(m_dspram16_latch)); save_item(NAME(m_slave_simulation_active)); @@ -6089,19 +6088,19 @@ void namcos22s_state::install_141_speedup() /*********************************************************************************************/ -void namcos22_state::init_ridgeraj() +void namcos22_state::init_ridgerac() { m_gametype = NAMCOS22_RIDGE_RACER; install_c74_speedup(); } -void namcos22_state::init_ridger2j() +void namcos22_state::init_ridgera2() { m_gametype = NAMCOS22_RIDGE_RACER2; install_c74_speedup(); } -void namcos22_state::init_acedrvr() +void namcos22_state::init_acedrive() { m_gametype = NAMCOS22_ACE_DRIVER; install_c74_speedup(); @@ -6113,7 +6112,7 @@ void namcos22_state::init_victlap() install_c74_speedup(); } -void namcos22_state::init_raveracw() +void namcos22_state::init_raverace() { m_gametype = NAMCOS22_RAVE_RACER; install_c74_speedup(); @@ -6189,7 +6188,7 @@ void propcycl_state::init_propcyclj() install_141_speedup(); } -void namcos22s_state::init_cybrcyc() +void namcos22s_state::init_cybrcycc() { m_gametype = NAMCOS22_CYBER_CYCLES; install_130_speedup(); @@ -6231,21 +6230,21 @@ void namcos22s_state::init_dirtdash() /* YEAR, NAME, PARENT, MACHINE, INPUT, CLASS, INIT, MNTR, COMPANY, FULLNAME, FLAGS */ // System22 games -GAME( 1993, ridgerac, 0, namcos22, ridgera, namcos22_state, init_ridgeraj, ROT0, "Namco", "Ridge Racer (World, RR2 Ver.B)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // 1994-01-17 -GAME( 1993, ridgeraca, ridgerac, namcos22, ridgera, namcos22_state, init_ridgeraj, ROT0, "Namco", "Ridge Racer (World, RR2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // 1993-10-28 -GAME( 1993, ridgeracb, ridgerac, namcos22, ridgera, namcos22_state, init_ridgeraj, ROT0, "Namco", "Ridge Racer (US, RR3 Ver.B)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // 1994-01-17, reports as "-Foreign B-" RR3 means USA? -GAME( 1993, ridgeracc, ridgerac, namcos22, ridgera, namcos22_state, init_ridgeraj, ROT0, "Namco", "Ridge Racer (US, RR3)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // 1993-10-28, purportedly 3 Screen version, reports as "-Foreign B-" -GAME( 1993, ridgeracj, ridgerac, namcos22, ridgera, namcos22_state, init_ridgeraj, ROT0, "Namco", "Ridge Racer (Japan, RR1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // 1993-10-07 -GAME( 1993, ridgeracf, ridgerac, namcos22, ridgeracf, namcos22_state, init_ridgeraj, ROT0, "Namco", "Ridge Racer Full Scale (World, RRF2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) // 1993-12-13, very different version, incomplete dump. -GAME( 1994, ridgera2, 0, namcos22, ridgera2, namcos22_state, init_ridger2j, ROT0, "Namco", "Ridge Racer 2 (World, RRS2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN ) // 1994-06-21 - NOT labeled "B" but based off Japan Rev.B -GAME( 1994, ridgera2j, ridgera2, namcos22, ridgera2, namcos22_state, init_ridger2j, ROT0, "Namco", "Ridge Racer 2 (Japan, RRS1 Ver.B)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN ) // 1994-06-21 -GAME( 1994, ridgera2ja, ridgera2, namcos22, ridgera2, namcos22_state, init_ridger2j, ROT0, "Namco", "Ridge Racer 2 (Japan, RRS1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN ) // 1994-06-13 -GAME( 1994, ridgera28, ridgera2, namcos22, ridgera2, namcos22_state, init_ridger2j, ROT0, "Namco", "Ridge Racer 2 (World, RRS8)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN ) // 1994-XX-XX - Test Location / proto?? +GAME( 1993, ridgerac, 0, namcos22, ridgera, namcos22_state, init_ridgerac, ROT0, "Namco", "Ridge Racer (World, RR2 Ver.B)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // 1994-01-17 +GAME( 1993, ridgeraca, ridgerac, namcos22, ridgera, namcos22_state, init_ridgerac, ROT0, "Namco", "Ridge Racer (World, RR2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // 1993-10-28 +GAME( 1993, ridgeracb, ridgerac, namcos22, ridgera, namcos22_state, init_ridgerac, ROT0, "Namco", "Ridge Racer (US, RR3 Ver.B)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // 1994-01-17, reports as "-Foreign B-" RR3 means USA? +GAME( 1993, ridgeracc, ridgerac, namcos22, ridgera, namcos22_state, init_ridgerac, ROT0, "Namco", "Ridge Racer (US, RR3)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // 1993-10-28, purportedly 3 Screen version, reports as "-Foreign B-" +GAME( 1993, ridgeracj, ridgerac, namcos22, ridgera, namcos22_state, init_ridgerac, ROT0, "Namco", "Ridge Racer (Japan, RR1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // 1993-10-07 +GAME( 1993, ridgeracf, ridgerac, namcos22, ridgeracf, namcos22_state, init_ridgerac, ROT0, "Namco", "Ridge Racer Full Scale (World, RRF2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) // 1993-12-13, very different version, incomplete dump. +GAME( 1994, ridgera2, 0, namcos22, ridgera2, namcos22_state, init_ridgera2, ROT0, "Namco", "Ridge Racer 2 (World, RRS2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN ) // 1994-06-21 - NOT labeled "B" but based off Japan Rev.B +GAME( 1994, ridgera2j, ridgera2, namcos22, ridgera2, namcos22_state, init_ridgera2, ROT0, "Namco", "Ridge Racer 2 (Japan, RRS1 Ver.B)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN ) // 1994-06-21 +GAME( 1994, ridgera2ja, ridgera2, namcos22, ridgera2, namcos22_state, init_ridgera2, ROT0, "Namco", "Ridge Racer 2 (Japan, RRS1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN ) // 1994-06-13 +GAME( 1994, ridgera28, ridgera2, namcos22, ridgera2, namcos22_state, init_ridgera2, ROT0, "Namco", "Ridge Racer 2 (World, RRS8)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN ) // 1994-XX-XX - Test Location / proto?? GAME( 1994, cybrcomm, 0, cybrcomm, cybrcomm, namcos22_state, init_cybrcomm, ROT0, "Namco", "Cyber Commando (Japan, CY1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN ) // 10/14/94 -GAME( 1995, raverace, 0, namcos22, raveracw, namcos22_state, init_raveracw, ROT0, "Namco", "Rave Racer (World, RV2 Ver.B)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN ) // 07/16/95 -GAME( 1995, raveracej, raverace, namcos22, raveracw, namcos22_state, init_raveracw, ROT0, "Namco", "Rave Racer (Japan, RV1 Ver.B)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN ) // 07/16/95 -GAME( 1995, raveraceja, raverace, namcos22, raveracw, namcos22_state, init_raveracw, ROT0, "Namco", "Rave Racer (Japan, RV1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN ) // 06/29/95 -GAME( 1994, acedrive, 0, namcos22, acedrvr, namcos22_state, init_acedrvr, ROT0, "Namco", "Ace Driver: Racing Evolution (World, AD2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN ) // 94/10/20 16:22:25 +GAME( 1995, raverace, 0, namcos22, raverace, namcos22_state, init_raverace, ROT0, "Namco", "Rave Racer (World, RV2 Ver.B)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN ) // 07/16/95 +GAME( 1995, raveracej, raverace, namcos22, raverace, namcos22_state, init_raverace, ROT0, "Namco", "Rave Racer (Japan, RV1 Ver.B)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN ) // 07/16/95 +GAME( 1995, raveraceja, raverace, namcos22, raverace, namcos22_state, init_raverace, ROT0, "Namco", "Rave Racer (Japan, RV1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN ) // 06/29/95 +GAME( 1994, acedrive, 0, namcos22, acedrive, namcos22_state, init_acedrive, ROT0, "Namco", "Ace Driver: Racing Evolution (World, AD2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN ) // 94/10/20 16:22:25 GAME( 1996, victlap, 0, namcos22, victlap, namcos22_state, init_victlap, ROT0, "Namco", "Ace Driver: Victory Lap (World, ADV2 Ver.B)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN ) // 96/05/21 19:39:59 GAME( 1996, victlapa, victlap, namcos22, victlap, namcos22_state, init_victlap, ROT0, "Namco", "Ace Driver: Victory Lap (World, ADV2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN ) // 96/02/13 17:29:10 GAME( 1996, victlapj, victlap, namcos22, victlap, namcos22_state, init_victlap, ROT0, "Namco", "Ace Driver: Victory Lap (Japan, ADV1 Ver.C)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN ) // 96/02/13 17:29:10 @@ -6255,8 +6254,8 @@ GAME( 1994, alpinerd, 0, alpine, alpiner, alpine_state, init_al GAME( 1994, alpinerc, alpinerd, alpine, alpiner, alpine_state, init_alpiner, ROT0, "Namco", "Alpine Racer (World, AR2 Ver.C)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) GAME( 1994, alpinerjc, alpinerd, alpine, alpiner, alpine_state, init_alpiner, ROT0, "Namco", "Alpine Racer (Japan, AR1 Ver.C)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) GAME( 1995, airco22b, 0, airco22b, airco22, namcos22s_state, init_airco22, ROT0, "Namco", "Air Combat 22 (Japan, ACS1 Ver.B)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, cybrcycc, 0, cybrcycc, cybrcycc, namcos22s_state, init_cybrcyc, ROT0, "Namco", "Cyber Cycles (World, CB2 Ver.C)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN ) // 95/04/04 -GAME( 1995, cybrcyccj, cybrcycc, cybrcycc, cybrcycc, namcos22s_state, init_cybrcyc, ROT0, "Namco", "Cyber Cycles (Japan, CB1 Ver.C)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN ) // 95/04/04 +GAME( 1995, cybrcycc, 0, cybrcycc, cybrcycc, namcos22s_state, init_cybrcycc, ROT0, "Namco", "Cyber Cycles (World, CB2 Ver.C)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN ) // 95/04/04 +GAME( 1995, cybrcyccj, cybrcycc, cybrcycc, cybrcycc, namcos22s_state, init_cybrcycc, ROT0, "Namco", "Cyber Cycles (Japan, CB1 Ver.C)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN ) // 95/04/04 GAME( 1995, dirtdash, 0, dirtdash, dirtdash, namcos22s_state, init_dirtdash, ROT0, "Namco", "Dirt Dash (World, DT2 Ver.B)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) // 96/?1/0? 21:03:?6, one ROM is bad GAME( 1995, dirtdasha, dirtdash, dirtdash, dirtdash, namcos22s_state, init_dirtdash, ROT0, "Namco", "Dirt Dash (World, DT2 Ver.A)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // 95/12/20 20:01:56 GAME( 1995, dirtdashj, dirtdash, dirtdash, dirtdash, namcos22s_state, init_dirtdash, ROT0, "Namco", "Dirt Dash (Japan, DT1 Ver.A)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // 95/12/20 20:06:45 diff --git a/src/mame/namco/namcos22.h b/src/mame/namco/namcos22.h index c2562cc1758..dd55adad501 100644 --- a/src/mame/namco/namcos22.h +++ b/src/mame/namco/namcos22.h @@ -82,6 +82,7 @@ struct namcos22_scenenode int cmode; int flags; int cz_adjust; + int bri_adjust; int direct; namcos22_polyvertex v[4]; } quad; @@ -120,6 +121,7 @@ struct namcos22_object_data int cmode; int fadefactor; int pfade_enabled; + int brifactor; int fogfactor; int zfog_enabled; int cz_adjust; @@ -225,12 +227,12 @@ public: void cybrcomm(machine_config &config); void namcos22(machine_config &config); - void init_acedrvr(); - void init_raveracw(); - void init_ridger2j(); + void init_acedrive(); + void init_raverace(); + void init_ridgera2(); void init_victlap(); void init_cybrcomm(); - void init_ridgeraj(); + void init_ridgerac(); // renderer u16 *m_texture_tilemap; @@ -458,6 +460,7 @@ protected: u16 m_keycus_rng = 0; int m_gametype = 0; int m_cz_adjust = 0; + int m_bri_adjust = 0; std::unique_ptr m_poly; u16 m_dspram_bank = 0; u16 m_dspram16_latch = 0; @@ -521,7 +524,7 @@ public: void tokyowar(machine_config &config); void init_aquajet(); - void init_cybrcyc(); + void init_cybrcycc(); void init_tokyowar(); void init_dirtdash(); void init_airco22(); diff --git a/src/mame/namco/namcos22_v.cpp b/src/mame/namco/namcos22_v.cpp index 18d8e5a5812..0e03acca42c 100644 --- a/src/mame/namco/namcos22_v.cpp +++ b/src/mame/namco/namcos22_v.cpp @@ -44,12 +44,14 @@ void namcos22_renderer::renderscanline_uvi_full(int32_t scanline, const extent_t int zfog_enabled = extra.zfog_enabled; int fogfactor = 0xff - extra.fogfactor; int fadefactor = 0xff - extra.fadefactor; + int brifactor = 0xff - extra.brifactor; int alphafactor = 0xff - extra.alpha; bool alpha_enabled = extra.alpha_enabled; u8 alpha_pen = m_state.m_poly_alpha_pen; rgbaint_t fogcolor = extra.fogcolor; rgbaint_t fadecolor = extra.fadecolor; rgbaint_t polycolor = extra.polycolor; + rgbaint_t white(0, 0xff, 0xff, 0xff); int polyfade_enabled = extra.pfade_enabled; int penmask = 0xff; int penshift = 0; @@ -172,6 +174,12 @@ void namcos22_renderer::renderscanline_uvi_full(int32_t scanline, const extent_t int shade = i*ooz; rgb.scale_imm_and_clamp(shade << 2); + // additional brightness + if (brifactor != 0xff) + { + rgb.blend(white, brifactor); + } + dest[x] = rgb.to_rgba(); primap[x] = (primap[x] & ~1) | prioverchar; @@ -297,16 +305,19 @@ void namcos22_renderer::poly3d_drawquad(screen_device &screen, bitmap_rgb32 &bit } } - namcos22_object_data &extra = object_data().next(); int flags = node->data.quad.flags; int color = node->data.quad.color; int cz_adjust = node->data.quad.cz_adjust; + int bri_adjust = node->data.quad.bri_adjust; + + namcos22_object_data &extra = object_data().next(); extra.destbase = &bitmap; extra.pfade_enabled = 0; extra.zfog_enabled = 0; extra.fadefactor = 0; extra.fogfactor = 0; + extra.brifactor = 0; extra.pens = &m_state.m_palette->pen((color & 0x7f) << 8); extra.primap = &screen.priority(); @@ -370,6 +381,11 @@ void namcos22_renderer::poly3d_drawquad(screen_device &screen, bitmap_rgb32 &bit extra.czram = m_state.m_recalc_czram[bank].get(); } } + else + { + extra.fogcolor.set(0, 0xff, 0xff, 0xff); + extra.fogfactor = std::clamp(bri_adjust >> 15 & 0x1c0, 0, 0xff); + } } } @@ -396,6 +412,9 @@ void namcos22_renderer::poly3d_drawquad(screen_device &screen, bitmap_rgb32 &bit extra.czram = (u8*)&m_state.m_czram[cztype << (13-2)]; } } + + // additional brightness, only used in cybrcomm + extra.brifactor = std::clamp(bri_adjust >> 15 & 0x1c0, 0, 0xff); } render_triangle_fan<4>(m_cliprect, render_delegate(&namcos22_renderer::renderscanline_uvi_full, this), clipverts, clipv); @@ -536,7 +555,7 @@ struct namcos22_scenenode *namcos22_renderer::alloc_scenenode(running_machine &m { if (node) { - /* use free pool */ + // use free pool m_scenenode_cur = node->next; } else @@ -559,7 +578,7 @@ struct namcos22_scenenode *namcos22_renderer::new_scenenode(running_machine &mac struct namcos22_scenenode *next = node->data.nonleaf.next[hash]; if (!next) { - /* lazily allocate tree node for this radix */ + // lazily allocate tree node for this radix next = alloc_scenenode(machine, m_scenenode_cur); next->type = NAMCOS22_SCENENODE_NONLEAF; node->data.nonleaf.next[hash] = next; @@ -571,7 +590,7 @@ struct namcos22_scenenode *namcos22_renderer::new_scenenode(running_machine &mac if (node->type == NAMCOS22_SCENENODE_NONLEAF) { - /* first leaf allocation on this branch */ + // first leaf allocation on this branch node->type = type; return node; } @@ -732,7 +751,7 @@ void namcos22_state::register_normals(int addr, float m[4][4]) float ny = dspfixed_to_nativefloat(point_read(addr + i * 3 + 1)); float nz = dspfixed_to_nativefloat(point_read(addr + i * 3 + 2)); - /* transform normal vector */ + // transform normal vector transform_normal(&nx, &ny, &nz, m); float dotproduct = nx*m_camera_lx + ny*m_camera_ly + nz*m_camera_lz; if (dotproduct < 0.0f) @@ -790,6 +809,7 @@ void namcos22_state::draw_direct_poly(const u16 *src) node->data.quad.texturebank = (src[1 + 4] & 0xf000) >> 12; } node->data.quad.cz_adjust = m_cz_adjust; + node->data.quad.bri_adjust = m_bri_adjust; node->data.quad.flags = (src[3] << 6 & 0x1fff00) | cztype; node->data.quad.color = (src[2] & 0xff00) >> 8; src += 4; @@ -901,7 +921,7 @@ void namcos22_state::blit_single_quad(u32 color, u32 addr, float m[4][4], int po transform_point(&pv->x, &pv->y, &pv->z, m); } - /* backface cull one-sided polygons */ + // backface cull one-sided polygons if (flags & 0x0020) { float c1 = @@ -1010,6 +1030,7 @@ void namcos22_state::blit_single_quad(u32 color, u32 addr, float m[4][4], int po node->data.quad.color = (color >> 8) & 0xff; node->data.quad.flags = flags >> 10 & 3; node->data.quad.cz_adjust = m_cz_adjust; + node->data.quad.bri_adjust = m_bri_adjust; for (i = 0; i < 4; i++) { @@ -1290,9 +1311,9 @@ void namcos22_state::slavesim_handle_200002(const s32 *src, int code) m[1][2] = dspfixed_to_nativefloat(src[0x8]); m[2][2] = dspfixed_to_nativefloat(src[0x9]); - m[3][0] = src[0xa]; /* xpos */ - m[3][1] = src[0xb]; /* ypos */ - m[3][2] = src[0xc]; /* zpos */ + m[3][0] = src[0xa]; // xpos + m[3][1] = src[0xb]; // ypos + m[3][2] = src[0xc]; // zpos matrix3d_multiply(m, m_viewmatrix); blit_polyobject(code, m); @@ -1322,18 +1343,28 @@ void namcos22_state::slavesim_handle_300000(const s32 *src) void namcos22_state::slavesim_handle_233002(const s32 *src) { - /* - 00233002 - 00000000 // cz adjust (signed24) - 0003dd00 // z bias adjust - 001fffff // far plane? - 00007fff 00000000 00000000 - 00000000 00007fff 00000000 - 00000000 00000000 00007fff - 00000000 00000000 00000000 + /** + * 00233002 + * 00000000 // cz adjust (signed24) + * 0003dd00 // z bias adjust + * 001fffff // brightness adjust? + * 00007fff 00000000 00000000 + * 00000000 00007fff 00000000 + * 00000000 00000000 00007fff + * 00000000 00000000 00000000 */ m_cz_adjust = signed24(src[1]); m_objectshift = src[2]; + + /** + * 001fffff: common - no effect + * 003fffff: adillor arrows on level select screen - no effect according to video + * 003fffff: propcycl attract mode particles when Solitar rises - unknown + * 003fffff: timecris shoot helicopter - small increase in brightness + * 005fffff: timecris shoot other destructible object - big increase in brightness + * 009fffff: cybrcomm shoot enemy with machine gun - opaque white (no shading) + */ + m_bri_adjust = src[3]; } void namcos22_state::simulate_slavedsp() @@ -2389,7 +2420,7 @@ void namcos22_state::update_mixer() m_screen_fade_g = nthbyte(m_mixer, 0x13) << 8 | nthbyte(m_mixer, 0x14); m_screen_fade_b = nthbyte(m_mixer, 0x15) << 8 | nthbyte(m_mixer, 0x16); - // raveracw is the only game using multiple fog colors (city smog, cars under tunnels, brake disc in attract mode) + // raverace is the only game using multiple fog colors (city smog, cars under tunnels, brake disc in attract mode) m_fog_colormask = m_mixer[0x84/4]; // fog color per cz type -- cgit v1.2.3