mirror of
https://github.com/ekeeke/Genesis-Plus-GX.git
synced 2024-11-13 06:15:07 +01:00
[Core/CD] fixed 32x32 pixels stamp index masking during GFX operation (fixes #436)
This commit is contained in:
parent
e366ca817f
commit
4ecd33f4cd
@ -39,15 +39,18 @@ Genesis Plus GX 1.7.5 (xx/xx/xxxx) (Eke-Eke)
|
||||
* fixed WAV file detection to support files generated by Audacity/FFmpeg/libavformat with RIFF header metadata chunks
|
||||
* fixed PRG-RAM access from MAIN-CPU side on system reset
|
||||
* fixed state loading bug when SUB-CPU interrupt is pending
|
||||
* fixed incorrect masking of Level 3 (GFX) interrupts (spurious freeze during Japanese BIOS intro)
|
||||
* fixed H-INT vector handling when using Mode 1
|
||||
* fixed H-INT vector upper word value
|
||||
* fixed access to "write-only" communication flags (verified on real hardware by Notaz)
|
||||
* fixed access to Sub-CPU "read-only" communication registers (fixes Round 5 Boss freeze in Streets of Rage / Sega Classics Arcade Collection)
|
||||
* fixed byte access to memory mode, timer and font color registers at even address (verified on real hardware, cf. Krikzz's mcd-verificator)
|
||||
* fixed byte access to font data registers
|
||||
* fixed pending level 1 interrupts when GFX interrupt is disabled (fixes random freezes when exiting "Batman Returns" option menu)
|
||||
* fixed CDD seek command again (Final Fight CD freeze with model 2 BIOS)
|
||||
* fixed CDD status reported during seek/access time (sound effect synchronization issue in Bari Arm)
|
||||
* fixed word access to CDD control register (fixes spurious audio track playback on startup with Mode 1 patched games using MSU-MD driver)
|
||||
* fixed CD communication registers state on peripheral reset (fixes SUB-CPU side initialization in MSU-MD sample demo and some Mode 1 patched games using MSU-MD driver)
|
||||
* fixed 32x32 pixels stamp index masking during GFX operation (fixes graphics rotation/scaling effects in "Chuck Rock II - Son of Chuck")
|
||||
* optimized Sub-CPU / Main-CPU synchronization
|
||||
|
||||
[Core/MD]
|
||||
|
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 3.8 MiB After Width: | Height: | Size: 3.8 MiB |
Binary file not shown.
Before Width: | Height: | Size: 4.0 MiB After Width: | Height: | Size: 4.0 MiB |
@ -2,7 +2,7 @@
|
||||
* Genesis Plus
|
||||
* CD graphics processor
|
||||
*
|
||||
* Copyright (C) 2012-2019 Eke-Eke (Genesis Plus GX)
|
||||
* Copyright (C) 2012-2022 Eke-Eke (Genesis Plus GX)
|
||||
*
|
||||
* Redistribution and use of this code or any derivative works are permitted
|
||||
* provided that the following conditions are met:
|
||||
@ -460,6 +460,9 @@ INLINE void gfx_render(uint32 bufferIndex, uint32 width)
|
||||
uint16 stamp_data;
|
||||
uint32 stamp_index;
|
||||
|
||||
/* bits [1:0] of 32x32 pixels stamp index are masked (see Chuck Rock II - Son of Chuck) */
|
||||
uint32 stamp_mask = (scd.regs[0x58>>1].byte.l & 0x02) ? 0x7fc : 0x7ff;
|
||||
|
||||
/* pixel map start position for current line (13.3 format converted to 13.11) */
|
||||
uint32 xpos = *gfx.tracePtr++ << 8;
|
||||
uint32 ypos = *gfx.tracePtr++ << 8;
|
||||
@ -502,7 +505,7 @@ INLINE void gfx_render(uint32 bufferIndex, uint32 width)
|
||||
/* c = cell offset (0-3 for 16x16, 0-15 for 32x32) */
|
||||
/* yyy = line offset (0-7) */
|
||||
/* xxx = pixel offset (0-7) */
|
||||
stamp_index = (stamp_data & 0x7ff) << 8;
|
||||
stamp_index = (stamp_data & stamp_mask) << 8;
|
||||
|
||||
if (stamp_index)
|
||||
{
|
||||
|
@ -2,7 +2,7 @@
|
||||
* Genesis Plus
|
||||
* CD graphics processor
|
||||
*
|
||||
* Copyright (C) 2012-2019 Eke-Eke (Genesis Plus GX)
|
||||
* Copyright (C) 2012-2022 Eke-Eke (Genesis Plus GX)
|
||||
*
|
||||
* Redistribution and use of this code or any derivative works are permitted
|
||||
* provided that the following conditions are met:
|
||||
|
Loading…
Reference in New Issue
Block a user