From 5949574352bb243ad122dc4093d046f96fe4d152 Mon Sep 17 00:00:00 2001 From: Angelo Salese Date: Fri, 31 Mar 2023 21:50:31 +0200 Subject: huc6270.cpp: fix RCR sync, it happens one line earlier (#11048) - fix: draculax Stage 4' "all blue" Richter; - fix: faussete Stage 2 excessive slowdown and erratic water line; - fix: xwiber Stage 2 boss never spawning [MT#07384](https://mametesters.org/view.php?id=7384) - fix: ppersia misplaced line [MT#07727](https://mametesters.org/view.php?id=7727) - fix: ddragon2 options menu display; - fix: tblade hang after third person view [MT#08585](https://mametesters.org/view.php?id=8585) --- hash/pce.xml | 42 ++++++++++++++++++++++++++++++------ hash/pcecd.xml | 29 ++++++++++++++++++++----- src/devices/bus/pce_ctrl/pcectrl.cpp | 3 +++ src/devices/video/huc6270.cpp | 14 ++++++++++-- 4 files changed, 74 insertions(+), 14 deletions(-) diff --git a/hash/pce.xml b/hash/pce.xml index 220cd529cdf..23be70743d3 100644 --- a/hash/pce.xml +++ b/hash/pce.xml @@ -375,10 +375,13 @@ license:CC0-1.0 - + Bomberman '94 1993 Hudson + @@ -498,10 +501,13 @@ license:CC0-1.0 - + Cadash 1991 Taito + @@ -656,6 +662,9 @@ license:CC0-1.0 Cross Wiber - Cyber Combat Police 1990 Face + @@ -1233,10 +1242,13 @@ license:CC0-1.0 - + Fire Pro Wrestling - Combination Tag 1989 Human + @@ -1510,10 +1522,14 @@ license:CC0-1.0 - + Hanii in the Sky 1989 Face + @@ -3818,10 +3834,13 @@ license:CC0-1.0 - + Takeda Shingen 1989 Aicom + @@ -3832,10 +3851,13 @@ license:CC0-1.0 - + Takeda Shingen (alt) 1989 Aicom + @@ -3930,6 +3952,9 @@ license:CC0-1.0 Thunder Blade 1990 NEC Avenue + @@ -4277,10 +4302,13 @@ license:CC0-1.0 - + Wonder Momo 1989 Namcot + diff --git a/hash/pcecd.xml b/hash/pcecd.xml index 2cbed0b21b9..274580533da 100644 --- a/hash/pcecd.xml +++ b/hash/pcecd.xml @@ -1683,10 +1683,13 @@ Cheat: Up, up, up, down, down, down, II, II, II, I, I, I during intro for "debug - + Flash Hiders (Japan) 1993 Right Stuff + @@ -2329,10 +2332,13 @@ Unsupported [セーブくん] joypad slot peripheral - + Hyper Dyne SideArms Special (Japan) 1989 NEC Avenue + @@ -2587,10 +2593,13 @@ New game intro sports glitchy portraits - + Juuouki (Japan) 1989 NEC Avenue + @@ -7187,10 +7196,14 @@ Omake: Press U R D L II at menu to access Bomberman - + The Addams Family (USA) 1991 ICOM Simulations + @@ -7243,10 +7256,13 @@ Omake: Press U R D L II at menu to access Bomberman - + Camp California (USA) 1993 ICOM Simulations + @@ -7607,6 +7623,9 @@ Crashes after first action, [SCSI] timing sensitive Prince of Persia (USA) 1992 Brøderbund + diff --git a/src/devices/bus/pce_ctrl/pcectrl.cpp b/src/devices/bus/pce_ctrl/pcectrl.cpp index b398a5dc470..6d0f9ffa7de 100644 --- a/src/devices/bus/pce_ctrl/pcectrl.cpp +++ b/src/devices/bus/pce_ctrl/pcectrl.cpp @@ -193,5 +193,8 @@ void pce_control_port_devices(device_slot_interface &device) // NEC Memory Base 128 (PI-AD19, メモリベース128) // Koei Save-Kun (セーブくん), clone of above? + // Serial Monitor for PCEMon + // https://www.chrismcovell.com/PCEmon/index.html + // etc... } diff --git a/src/devices/video/huc6270.cpp b/src/devices/video/huc6270.cpp index 09f49963ba9..8f608ae97b5 100644 --- a/src/devices/video/huc6270.cpp +++ b/src/devices/video/huc6270.cpp @@ -224,7 +224,10 @@ void huc6270_device::select_sprites() static const int cgy_table[4] = { 16, 32, 64, 64 }; int cgy = ( m_sat[i+3] >> 12 ) & 0x03; int height = cgy_table[ cgy ]; - int sprite_line = m_raster_count - m_sat[i]; + // TODO: we are one line off in alignment, is following compensation right? + // cfr. rennybla & draculax (at least), they are otherwise offset by 1 + // compared to background. + int sprite_line = m_raster_count - 1 - m_sat[i]; if ( sprite_line >= 0 && sprite_line < height ) { @@ -532,7 +535,14 @@ WRITE_LINE_MEMBER( huc6270_device::hsync_changed ) m_horz_steps = 0; m_byr_latched += 1; m_raster_count += 1; - if ( m_vert_to_go == 1 && m_vert_state == v_state::VDS ) + // raster count VSW latch happens one line earlier (cfr. +2 on assignment) + // This has been confirmed on real HW, where the last possible RCR with + // 240 VDW is 0x130 (i.e. 64 + 240). m_vert_to_go == 1 will also + // cause several side effects, namely: + // - draculax Stage 4' "all blue" Richter; + // - faussete Stage 2 excessive slowdown; + // - xwiber Stage 2 boss never spawning (MT#07384) + if ( m_vert_to_go == 2 && m_vert_state == v_state::VDS ) { m_raster_count = 0x40; } -- cgit v1.2.3