diff options
author | Angelo Salese <angelosa@users.noreply.github.com> | 2010-04-18 20:37:11 +0000 |
---|---|---|
committer | Angelo Salese <angelosa@users.noreply.github.com> | 2010-04-18 20:37:11 +0000 |
commit | 2d0b13909fb9ad4953b90e2e131c625ae219dbdf (patch) | |
tree | 0f2779ca9d0a9ec3e1cdc81fb53015b811fea3e4 | |
parent | 4800ffe7491c32c70dd092010cfcf328acf23157 (diff) |
Improved the SPG_STATUS read handling
-rw-r--r-- | src/mame/video/dc.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/mame/video/dc.c b/src/mame/video/dc.c index 19ece4d85fd..6aee7b79928 100644 --- a/src/mame/video/dc.c +++ b/src/mame/video/dc.c @@ -1063,8 +1063,24 @@ READ64_HANDLER( pvr_ta_r ) switch (reg) { case SPG_STATUS: - pvrta_regs[reg] = (video_screen_get_vblank(space->machine->primary_screen) << 13) | (video_screen_get_hblank(space->machine->primary_screen) << 12) | (video_screen_get_vpos(space->machine->primary_screen) & 0x3ff); - break; + { + UINT8 fieldnum,vsync,hsync,blank; + + fieldnum = (video_screen_get_frame_number(space->machine->primary_screen) & 1) ? 1 : 0; + + vsync = video_screen_get_vblank(space->machine->primary_screen) ? 1 : 0; + if(pvrta_vsync_pol) { vsync^=1; } + + hsync = video_screen_get_hblank(space->machine->primary_screen) ? 1 : 0; + if(pvrta_hsync_pol) { hsync^=1; } + + /* FIXME: following is just a wild guess */ + blank = (video_screen_get_vblank(space->machine->primary_screen) | video_screen_get_hblank(space->machine->primary_screen)) ? 0 : 1; + if(pvrta_blank_pol) { blank^=1; } + + pvrta_regs[reg] = (vsync << 13) | (hsync << 12) | (blank << 11) | (fieldnum << 10) | (video_screen_get_vpos(space->machine->primary_screen) & 0x1ff); + break; + } case SPG_TRIGGER_POS: printf("Warning: read at h/v counter ext latches\n"); break; |