shangha3_v.cpp: proposed fix for shangha3 drawing phantom drop shadows for player sprites

This commit is contained in:
angelosa 2022-09-11 22:21:27 +02:00
parent c6082ad6cb
commit c29dfca299
2 changed files with 13 additions and 7 deletions

View file

@ -14,8 +14,10 @@ TODO:
all games:
- Blitter needs to be device-ized
shangha3:
- The zoom used for the "100" floating score when you remove tiles is very
rough.
- The zoom used for the "100" floating score when you remove tiles draws with
upper/bottom lines missing;
- identify what exactly is the "protection device";
- sometimes samples have playback drifts (btanb?);
heberpop:
- Unknown writes to sound ports 40/41
blocken:

View file

@ -71,16 +71,19 @@ void shangha3_state::video_start()
m_screen->register_screen_bitmap(m_rawbitmap);
for (i = 0;i < 14;i++)
for (i = 0; i < 14; i++)
m_drawmode_table[i] = DRAWMODE_SOURCE;
m_drawmode_table[14] = m_do_shadows ? DRAWMODE_SHADOW : DRAWMODE_SOURCE;
m_drawmode_table[15] = DRAWMODE_NONE;
if (m_do_shadows)
{
// MAME default of 0.6 causes visible drop shadow following player cursors
m_palette->set_shadow_factor(1.0);
/* Prepare the shadow table */
for (i = 0;i < 128;i++)
m_palette->shadow_table()[i] = i+128;
for (i = 0; i < 128; i++)
m_palette->shadow_table()[i] = i + 128;
}
save_item(NAME(m_gfxlist_addr));
@ -94,7 +97,8 @@ void shangha3_state::flipscreen_w(uint8_t data)
/* bit 7 flips screen, the rest seems to always be set to 0x7e */
flip_screen_set(data & 0x80);
if ((data & 0x7f) != 0x7e) popmessage("flipscreen_w %02x",data);
if ((data & 0x7f) != 0x7e)
popmessage("flipscreen_w %02x",data);
}
void shangha3_state::gfxlist_addr_w(offs_t offset, uint16_t data, uint16_t mem_mask)
@ -183,7 +187,7 @@ void shangha3_state::blitter_go_w(uint16_t data)
{
int dx,dy,tile;
/* TODO: zooming algo is definitely wrong for Blocken here */
// TODO: zooming algo is definitely wrong for Blocken here
if (condensed)
{
int addr = ((y+srcy) & 0x1f) |