mirror of
https://github.com/holub/mame
synced 2025-06-10 06:47:18 +03:00
namcos22: change ss22 spot, a bit better, a bit worse (nw)
This commit is contained in:
parent
10e4f10d41
commit
310357fd16
@ -23,32 +23,34 @@ TODO:
|
|||||||
- EEPROM write timing should be around 5ms, it doesn't do any data/rdy polling
|
- EEPROM write timing should be around 5ms, it doesn't do any data/rdy polling
|
||||||
- where is the steering wheel motor torque output for dirtdash? Answer: The data comes from the Serial Port on the MOTHER PCB at J2 Pin 7 /TXD
|
- where is the steering wheel motor torque output for dirtdash? Answer: The data comes from the Serial Port on the MOTHER PCB at J2 Pin 7 /TXD
|
||||||
- texture u/v mapping is often 1 pixel off, resulting in many glitch lines/gaps between textures. The glitch may be in MAME core:
|
- texture u/v mapping is often 1 pixel off, resulting in many glitch lines/gaps between textures. The glitch may be in MAME core:
|
||||||
it used to be much worse with the legacy_poly_manager
|
it used to be much worse with the legacy_poly_manager
|
||||||
- find out how/where vics num_sprites is determined exactly, currently a workaround is needed for airco22b and dirtdash
|
- find out how/where vics num_sprites is determined exactly, currently a workaround is needed for airco22b and dirtdash
|
||||||
- improve ss22 lighting:
|
- improve ss22 lighting:
|
||||||
+ mountains in alpinr2b selection screen
|
+ mountains in alpinr2b selection screen
|
||||||
+ ridgerac waving flag shadowing
|
+ ridgerac waving flag shadowing
|
||||||
+ cybrcomm enemies should flash white when you shoot them, probably lighting related
|
+ 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)
|
+ timecris helicopter, car, grenade boxes should flash white when you shoot them (similar to cybrcomm)
|
||||||
- improve ss22 spot:
|
- improve ss22 spot, only used in dirtdash and testmode, not understood well:
|
||||||
+ dirtdash record time message creates a 'gap' in the spotlight when entering the jungle level
|
+ should probably be done before global fade
|
||||||
+ how is it enabled exactly? the enable bit in spotram is set in tokyowar too(which doesn't use spot)
|
+ should not apply to some of the sprites in dirtdash jungle level (eg. time/position)
|
||||||
+ what is the high bit in spot_factor for? darkness instead of brightness? not used anywhere
|
+ how is it enabled exactly? the enable bit in spotram is set in tokyowar too(which doesn't use spot)
|
||||||
|
+ what is the high bit in spot_factor for? not used anywhere
|
||||||
|
+ high bits in spot_data are unknown, maybe blend mode
|
||||||
|
+ testmode looks wrong, spot_data high bits is 0 here (2 in dirtdash)
|
||||||
- PDP command 0xfff9, used in alpinr2b to modify titlescreen logo animation in pointram (should show a snow melting effect)
|
- PDP command 0xfff9, used in alpinr2b to modify titlescreen logo animation in pointram (should show a snow melting effect)
|
||||||
- support for text layer video partial updates after posirq, alpinesa does raster effects on it
|
- support for text layer video partial updates after posirq, alpinesa does raster effects on it
|
||||||
- alpha blended sprite/poly with priority over alpha blended text doesn't work right (see dirtdash countdown when you start at jungle level)
|
- alpha blended sprite/poly with priority over alpha blended text doesn't work right
|
||||||
- ss22 poly translucency is probably more limited than currently emulated, not supporting stacked layers
|
- ss22 poly translucency is probably more limited than currently emulated, not supporting stacked layers
|
||||||
- there's a sprite limit per scanline, eg. timecris submarine explosion smoke partially erases sprites on real hardware
|
- there's a sprite limit per scanline, eg. timecris submarine explosion smoke partially erases sprites on real hardware
|
||||||
- cybrcycc speed dial needle is missing
|
- cybrcycc speed dial needle polygon is missing
|
||||||
- global offset is wrong in non-super22 servicemode video test, and above that, it flickers in acedrvrw, victlapw
|
- global offset is wrong in non-super22 servicemode video test, and above that, it flickers in acedrvrw, victlapw
|
||||||
- ridgerac fogging isn't applied to the upper/side part of the sky (best seen when driving down a hill), it's fine in ridgera2
|
- ridgerac fogging isn't applied to the upper/side part of the sky (best seen when driving down a hill), it's fine in ridgera2,
|
||||||
czram contents is rather odd here and partly cleared (probably the cause?):
|
czram contents is rather odd here and partly cleared (probably the cause?):
|
||||||
$0000-$0d7f - gradual increase from $00-$7c
|
+ $0000-$0d7f - gradual increase from $00-$7c
|
||||||
$0d80-$0fff - $73, huh, why lower?
|
+ $0d80-$0fff - $73, huh, why lower?
|
||||||
$1000-$19ff - $00, huh!? (it's specifically cleared, memsetting czram at boot does not fix the issue)
|
+ $1000-$19ff - $00, huh!? (it's specifically cleared, memsetting czram at boot does not fix the issue)
|
||||||
$1a00-$0dff - $77
|
+ $1a00-$0dff - $77
|
||||||
$1e00-$1fff - $78
|
+ $1e00-$1fff - $78
|
||||||
|
|
||||||
- lots of smaller issues
|
- lots of smaller issues
|
||||||
|
|
||||||
***********************************************************************************************************
|
***********************************************************************************************************
|
||||||
|
@ -1936,9 +1936,7 @@ void namcos22s_state::namcos22s_mix_text_layer(screen_device &screen, bitmap_rgb
|
|||||||
// prepare spot
|
// prepare spot
|
||||||
bool spot_enabled = (m_spotram_enable & 1) && (m_chipselect & 0xc000);
|
bool spot_enabled = (m_spotram_enable & 1) && (m_chipselect & 0xc000);
|
||||||
int spot_factor = (m_spot_factor < 0x100) ? 0 : m_spot_factor & 0xff;
|
int spot_factor = (m_spot_factor < 0x100) ? 0 : m_spot_factor & 0xff;
|
||||||
rgbaint_t spot_color(0, spot_factor, spot_factor, spot_factor);
|
|
||||||
int spot_palbase = m_text_palbase >> 8 & 3; // src[x] >> 8 & 3
|
int spot_palbase = m_text_palbase >> 8 & 3; // src[x] >> 8 & 3
|
||||||
int spot_shift = 0;
|
|
||||||
|
|
||||||
// prepare fader
|
// prepare fader
|
||||||
bool fade_enabled = (m_mixer_flags & 2) && m_screen_fade_factor;
|
bool fade_enabled = (m_mixer_flags & 2) && m_screen_fade_factor;
|
||||||
@ -1959,16 +1957,11 @@ void namcos22s_state::namcos22s_mix_text_layer(screen_device &screen, bitmap_rgb
|
|||||||
if (spot_enabled)
|
if (spot_enabled)
|
||||||
{
|
{
|
||||||
// remap pen
|
// remap pen
|
||||||
int spot_data = m_spotram[(src[x] << 2 | spot_palbase) & 0x3ff];
|
pen = m_spotram[(src[x] << 2 | spot_palbase) & 0x3ff];
|
||||||
pen = spot_data;
|
if (pen < 0x80)
|
||||||
|
|
||||||
if (pen >= 0x80)
|
|
||||||
{
|
|
||||||
spot_shift = spot_data >> 8 & 7;
|
|
||||||
rgb.set(spot_color);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
rgb.set(pens[pen | m_text_palbase]);
|
rgb.set(pens[pen | m_text_palbase]);
|
||||||
|
else if (prival != 6)
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1976,17 +1969,23 @@ void namcos22s_state::namcos22s_mix_text_layer(screen_device &screen, bitmap_rgb
|
|||||||
pen = src[x];
|
pen = src[x];
|
||||||
}
|
}
|
||||||
|
|
||||||
// apply fade
|
|
||||||
if (fade_enabled)
|
|
||||||
rgb.blend(fade_color, fade_factor);
|
|
||||||
|
|
||||||
// spot pen becomes brightness factor
|
// spot pen becomes brightness factor
|
||||||
if (spot_enabled && pen >= 0x80)
|
if (spot_enabled && pen >= 0x80)
|
||||||
rgb.blend(rgbaint_t(dest[x]), (~pen & 0x7f) >> spot_shift);
|
{
|
||||||
|
rgb.set(rgbaint_t(dest[x]));
|
||||||
|
u16 factor = (spot_factor * (pen & 0x7f)) >> 7;
|
||||||
|
rgb.scale_imm_and_clamp(0x100 - factor);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// apply fade
|
||||||
|
if (fade_enabled)
|
||||||
|
rgb.blend(fade_color, fade_factor);
|
||||||
|
|
||||||
// otherwise apply alpha
|
// apply alpha
|
||||||
else if (alpha_factor && ((pen & 0xf) == alpha_mask || (pen >= alpha_check12 && pen <= alpha_check13)))
|
if (alpha_factor && ((pen & 0xf) == alpha_mask || (pen >= alpha_check12 && pen <= alpha_check13)))
|
||||||
rgb.blend(rgbaint_t(dest[x]), 0xff - alpha_factor);
|
rgb.blend(rgbaint_t(dest[x]), 0xff - alpha_factor);
|
||||||
|
}
|
||||||
|
|
||||||
dest[x] = rgb.to_rgba();
|
dest[x] = rgb.to_rgba();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user