Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
08912 Graphics Minor Always Sep 5, 2024, 05:10 28 days ago
Tester dink View Status Public Platform MAME (Official Binary)
Assigned To Resolution Open OS Windows Vista/7/8 (64-bit)
Status [?] Confirmed Driver
Version 0.269 Fixed in Version Build 64-bit
Fixed in Git Commit Github Pull Request #
Summary 08912: sgx [daimakai]: Clipping (Window in huc6202) in game ending is broken
Description The ending squeezes the sides of the screen, but, something went wrong?
Note; each side is supposed to be squeezed by the same amount of pixels, so that the view is in the center of the screen.
Steps To Reproduce Play 2-all, watch ending
Additional Information seriously, just play the game; it's really easy, and fun. Then watch the ending after beating king lucifer.
... or just download attached state file, 0.269-compatible
Github Commit
Flags
Regression Version
Affected Sets / Systems sgx [daimakai]
Attached Files
png file icon dmk_window.png (81,666 bytes) Sep 5, 2024, 05:10 Uploaded by dink
dink
zip file icon gab75_daimakai_end.zip (59,039 bytes) Sep 5, 2024, 05:14 Uploaded by dink
ending state for MAME 0.269, c/o my good friend Gab75
png file icon dmk_probably_ok.png (13,051 bytes) Sep 5, 2024, 13:24 Uploaded by dink
assumed this is how it's supposed to look, (a few frames later than previous screenshot - w/text)
dink
Relationships
There are no relationship linked to this issue.
Notes
2
User avatar
No.22305
Robbbert
Senior Tester
Sep 5, 2024, 09:17
Used the save state.

Also noticed that the text on the left side is truncated when the screen narrows.
User avatar
No.22352
dink
Tester
28 days ago
in devices/video/huc6202.cpp, function: next_pixel()

It's setting up a priority bitmap based on the window arrangements 0..511, but, huc6270 was updated to use 1024 (or 1024+64? +64?) instead of 512.
The window value, which is 0-512 needs to be scaled to the new pixel size, this is how I do it on my side:

int win1_adj = m_window1 * 1024 / 512;
int win2_adj = m_window2 * 1024 / 512;

if ( m_window1 < 0x40 || i > win1_adj )
{
m_prio_map [ i ] |= 1;
}
if ( m_window2 < 0x40 || i > win2_adj )
{
m_prio_map[ i ] |= 2;
}

note: my window size is 1024, but, I think MAME is using 1024+64 or 64+1024+64, (look at the set_raw in mame/nec/pce.cpp)
note2: 0x40 is a special value, so m_window1, m_window2 needs to be tested for this, not the new adjusted value.

best regards,
- dink