summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
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
commit2d0b13909fb9ad4953b90e2e131c625ae219dbdf (patch)
tree0f2779ca9d0a9ec3e1cdc81fb53015b811fea3e4
parent4800ffe7491c32c70dd092010cfcf328acf23157 (diff)
Improved the SPG_STATUS read handling
-rw-r--r--src/mame/video/dc.c20
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;