mirror of
https://github.com/holub/mame
synced 2025-04-19 23:12:11 +03:00
namcos22: add object brightness adjust
This commit is contained in:
parent
103a89ddeb
commit
0cf7e30b41
@ -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
|
||||
|
@ -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<namcos22_renderer> 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();
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user