mirror of
https://github.com/holub/mame
synced 2025-04-28 19:14:55 +03:00
ddragon3.c: fix m68k byte smearing regression in wwfwfest (nw)
This commit is contained in:
parent
3cbc6f46ca
commit
2bae75a257
@ -277,9 +277,9 @@ WRITE16_MEMBER(wwfwfest_state::wwfwfest_paletteram_w)
|
|||||||
/*- Priority Control -*/
|
/*- Priority Control -*/
|
||||||
|
|
||||||
|
|
||||||
WRITE16_MEMBER(wwfwfest_state::wwfwfest_1410_write)
|
WRITE8_MEMBER(wwfwfest_state::wwfwfest_priority_w)
|
||||||
{
|
{
|
||||||
m_pri = data & 0xff;
|
m_pri = data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -362,7 +362,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, wwfwfest_state )
|
|||||||
AM_RANGE(0x10000a, 0x10000b) AM_WRITE(wwfwfest_flipscreen_w)
|
AM_RANGE(0x10000a, 0x10000b) AM_WRITE(wwfwfest_flipscreen_w)
|
||||||
AM_RANGE(0x140000, 0x140003) AM_WRITE(wwfwfest_irq_ack_w)
|
AM_RANGE(0x140000, 0x140003) AM_WRITE(wwfwfest_irq_ack_w)
|
||||||
AM_RANGE(0x14000c, 0x14000d) AM_WRITE(wwfwfest_soundwrite)
|
AM_RANGE(0x14000c, 0x14000d) AM_WRITE(wwfwfest_soundwrite)
|
||||||
AM_RANGE(0x140010, 0x140011) AM_WRITE(wwfwfest_1410_write)
|
AM_RANGE(0x140010, 0x140011) AM_WRITE8(wwfwfest_priority_w, 0x00ff)
|
||||||
AM_RANGE(0x140020, 0x140021) AM_READ_PORT("P1")
|
AM_RANGE(0x140020, 0x140021) AM_READ_PORT("P1")
|
||||||
AM_RANGE(0x140022, 0x140023) AM_READ_PORT("P2")
|
AM_RANGE(0x140022, 0x140023) AM_READ_PORT("P2")
|
||||||
AM_RANGE(0x140024, 0x140025) AM_READ_PORT("P3")
|
AM_RANGE(0x140024, 0x140025) AM_READ_PORT("P3")
|
||||||
|
@ -49,7 +49,7 @@ public:
|
|||||||
|
|
||||||
/* misc */
|
/* misc */
|
||||||
UINT16 m_io_reg[8];
|
UINT16 m_io_reg[8];
|
||||||
UINT16 m_pri;
|
UINT8 m_pri;
|
||||||
|
|
||||||
/* devices */
|
/* devices */
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
@ -100,7 +100,7 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
//required_device<buffered_spriteram16_device> m_spriteram;
|
//required_device<buffered_spriteram16_device> m_spriteram;
|
||||||
DECLARE_WRITE16_MEMBER(wwfwfest_1410_write);
|
DECLARE_WRITE8_MEMBER(wwfwfest_priority_w);
|
||||||
DECLARE_WRITE16_MEMBER(wwfwfest_scroll_write);
|
DECLARE_WRITE16_MEMBER(wwfwfest_scroll_write);
|
||||||
DECLARE_WRITE16_MEMBER(wwfwfest_irq_ack_w);
|
DECLARE_WRITE16_MEMBER(wwfwfest_irq_ack_w);
|
||||||
DECLARE_WRITE16_MEMBER(wwfwfest_flipscreen_w);
|
DECLARE_WRITE16_MEMBER(wwfwfest_flipscreen_w);
|
||||||
|
@ -110,14 +110,8 @@ TILE_GET_INFO_MEMBER(wwfwfest_state::get_fg0_tile_info)
|
|||||||
|
|
||||||
WRITE16_MEMBER(wwfwfest_state::wwfwfest_fg0_videoram_w)
|
WRITE16_MEMBER(wwfwfest_state::wwfwfest_fg0_videoram_w)
|
||||||
{
|
{
|
||||||
/* Videoram is 8 bit, upper & lower byte writes end up in the same place */
|
/* Videoram is 8 bit, upper & lower byte writes end up in the same place due to m68k byte smearing */
|
||||||
if (ACCESSING_BITS_8_15 && ACCESSING_BITS_0_7) {
|
m_fg0_videoram[offset]=data&0xff;
|
||||||
COMBINE_DATA(&m_fg0_videoram[offset]);
|
|
||||||
} else if (ACCESSING_BITS_8_15) {
|
|
||||||
m_fg0_videoram[offset]=(data>>8)&0xff;
|
|
||||||
} else {
|
|
||||||
m_fg0_videoram[offset]=data&0xff;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_fg0_tilemap->mark_tile_dirty(offset/2);
|
m_fg0_tilemap->mark_tile_dirty(offset/2);
|
||||||
}
|
}
|
||||||
@ -292,7 +286,7 @@ UINT32 ddragon3_state::screen_update_ctribe(screen_device &screen, bitmap_ind16
|
|||||||
|
|
||||||
UINT32 wwfwfest_state::screen_update_wwfwfest(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
UINT32 wwfwfest_state::screen_update_wwfwfest(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||||
{
|
{
|
||||||
if (m_pri == 0x0078) {
|
if (m_pri == 0x78) {
|
||||||
m_fg_tilemap->set_scrolly(0, m_fg_scrolly );
|
m_fg_tilemap->set_scrolly(0, m_fg_scrolly );
|
||||||
m_fg_tilemap->set_scrollx(0, m_fg_scrollx + m_bg0_dx);
|
m_fg_tilemap->set_scrollx(0, m_fg_scrollx + m_bg0_dx);
|
||||||
m_bg_tilemap->set_scrolly(0, m_bg_scrolly );
|
m_bg_tilemap->set_scrolly(0, m_bg_scrolly );
|
||||||
@ -306,19 +300,19 @@ UINT32 wwfwfest_state::screen_update_wwfwfest(screen_device &screen, bitmap_ind1
|
|||||||
|
|
||||||
/* todo : which bits of pri are significant to the order */
|
/* todo : which bits of pri are significant to the order */
|
||||||
|
|
||||||
if (m_pri == 0x007b) {
|
if (m_pri == 0x7b) {
|
||||||
m_fg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE,0);
|
m_fg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE,0);
|
||||||
m_bg_tilemap->draw(screen, bitmap, cliprect, 0,0);
|
m_bg_tilemap->draw(screen, bitmap, cliprect, 0,0);
|
||||||
draw_sprites(bitmap,cliprect);
|
draw_sprites(bitmap,cliprect);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_pri == 0x007c) {
|
if (m_pri == 0x7c) {
|
||||||
m_fg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE,0);
|
m_fg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE,0);
|
||||||
draw_sprites(bitmap,cliprect);
|
draw_sprites(bitmap,cliprect);
|
||||||
m_bg_tilemap->draw(screen, bitmap, cliprect, 0,0);
|
m_bg_tilemap->draw(screen, bitmap, cliprect, 0,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_pri == 0x0078) {
|
if (m_pri == 0x78) {
|
||||||
m_bg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE,0);
|
m_bg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE,0);
|
||||||
m_fg_tilemap->draw(screen, bitmap, cliprect, 0,0);
|
m_fg_tilemap->draw(screen, bitmap, cliprect, 0,0);
|
||||||
draw_sprites(bitmap,cliprect);
|
draw_sprites(bitmap,cliprect);
|
||||||
|
Loading…
Reference in New Issue
Block a user