From 6ae14ec244935c1b1d0330b8300250a534feebe8 Mon Sep 17 00:00:00 2001 From: angelosa Date: Tue, 22 Oct 2024 23:44:10 +0200 Subject: nec/pc9801_v.cpp: more aggressive PCG LR checks, fix mightyhd and volley2a --- hash/pc98.xml | 6 +----- src/mame/nec/pc9801_v.cpp | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/hash/pc98.xml b/hash/pc98.xml index 9bac1cbb796..47da841de34 100644 --- a/hash/pc98.xml +++ b/hash/pc98.xml @@ -31285,7 +31285,6 @@ Optional [AMD-98] support, needs PIT for BGM 1986 アポロテクニカ (Apollo Technica) @@ -66539,13 +66538,10 @@ Crashes with a BASIC error when accessing house near starting point, incomplete - + Volleyball 2 on 2 (5.25" Disk) 19?? <unofficial> - diff --git a/src/mame/nec/pc9801_v.cpp b/src/mame/nec/pc9801_v.cpp index b7b88602285..489a107a2d2 100644 --- a/src/mame/nec/pc9801_v.cpp +++ b/src/mame/nec/pc9801_v.cpp @@ -125,24 +125,38 @@ void pc9801_state::draw_text(bitmap_rgb32 &bitmap, uint32_t addr, int y, int wd, kanji_sel = 1; if((tile & 0x7e00) == 0x5600) { + // ikochan (karaoke intro) and mightyhd (game start and gameplay) + // draws these PCG strips where first tile is identical to second, with LR disabled. + // TODO: what happens with LR enabled? if(lasttile == (tile | knj_tile)) { tile_lr = 1; lasttile = -1; } else + { tile_lr = pcg_lr; + lasttile = (tile | knj_tile); + } x_step = 1; } else if((tile & 0x7c00) == 0x0800) // 8x16 charset selector + { x_step = 1; + lasttile = -1; + } else + { x_step = 2; + lasttile = -1; + } // kanji_lr = 0; } else + { x_step = 1; - lasttile = (tile | knj_tile); + lasttile = -1; + } for(kanji_lr=0;kanji_lr