diff options
author | angelosa <salese_corp_ltd@email.it> | 2017-04-12 02:53:51 +0200 |
---|---|---|
committer | angelosa <salese_corp_ltd@email.it> | 2017-04-12 02:53:51 +0200 |
commit | 28e287458e5000b7f9ea833251605526e40ab33e (patch) | |
tree | 2019bc606937a0dc8b97a44becb4c38f872d242d | |
parent | d68e1d996d740f601320a58dcad291d73a050d3a (diff) |
Workaround for finlarch/sasissu/magzun ODD bit regression. (nw)
-rw-r--r-- | src/devices/video/stvvdp2.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/devices/video/stvvdp2.cpp b/src/devices/video/stvvdp2.cpp index aa81381c211..a0044067ec9 100644 --- a/src/devices/video/stvvdp2.cpp +++ b/src/devices/video/stvvdp2.cpp @@ -199,7 +199,7 @@ enum bit-> /----15----|----14----|----13----|----12----|----11----|----10----|----09----|----08----\ | -- | -- | -- | -- | -- | -- | EXLTFG | EXSYFG | |----07----|----06----|----05----|----04----|----03----|----02----|----01----|----00----| - | -- | -- | -- | -- | VBLANK | HBLANK | ODD | EVEN | + | -- | -- | -- | -- | VBLANK | HBLANK | ODD | PAL | \----------|----------|----------|----------|----------|----------|----------|---------*/ /* 180006 - r/w - VRSIZE - VRAM Size @@ -6001,14 +6001,20 @@ uint8_t saturn_state::get_vblank( void ) } // TODO: seabass explicitly wants this bit to be 0 when screen is disabled from bios to game transition, assume following disp bit. +// this is actually wrong for finlarch/sasissu/magzun so it needs to be tested on real HW. uint8_t saturn_state::get_odd_bit( void ) { if(STV_VDP2_HRES & 4) //exclusive monitor mode makes this bit to be always 1 - return STV_VDP2_DISP; + return 1; if(STV_VDP2_LSMD == 0) // same for non-interlace mode - return STV_VDP2_DISP; - + { + if((STV_VDP2_HRES & 1) == 0) + return STV_VDP2_DISP; + + return 1; + } + return machine().first_screen()->frame_number() & 1; } |