summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Angelo Salese <angelosa@users.noreply.github.com>2010-05-12 22:58:36 +0000
committer Angelo Salese <angelosa@users.noreply.github.com>2010-05-12 22:58:36 +0000
commit021eef3ca40e10e76ccc899282d4927b5e3d062d (patch)
tree68fd7f1ce6d894b9847ff3f2f615f71a431b6b51 /src
parentff57271d13ccfc14dcf5f800334e03cefe279236 (diff)
Implemented bare bones timing for the blitter status and fixed vertical half line counter
Diffstat (limited to 'src')
-rw-r--r--src/mame/drivers/cojag.c3
-rw-r--r--src/mame/includes/jaguar.h1
-rw-r--r--src/mame/video/jaguar.c21
3 files changed, 23 insertions, 2 deletions
diff --git a/src/mame/drivers/cojag.c b/src/mame/drivers/cojag.c
index 045b24e72ab..e67896d558d 100644
--- a/src/mame/drivers/cojag.c
+++ b/src/mame/drivers/cojag.c
@@ -371,6 +371,9 @@ static MACHINE_RESET( cojag )
/* halt the CPUs */
jaguargpu_ctrl_w(devtag_get_device(machine, "gpu"), G_CTRL, 0, 0xffffffff);
jaguardsp_ctrl_w(devtag_get_device(machine, "audiocpu"), D_CTRL, 0, 0xffffffff);
+
+ /* set blitter idle flag */
+ blitter_status = 1;
}
diff --git a/src/mame/includes/jaguar.h b/src/mame/includes/jaguar.h
index 02b02cda834..f525d65aa55 100644
--- a/src/mame/includes/jaguar.h
+++ b/src/mame/includes/jaguar.h
@@ -26,6 +26,7 @@ extern UINT32 *jaguar_gpu_clut;
extern UINT32 *jaguar_dsp_ram;
extern UINT32 *jaguar_wave_rom;
+extern UINT8 blitter_status;
/*----------- defined in audio/jaguar.c -----------*/
diff --git a/src/mame/video/jaguar.c b/src/mame/video/jaguar.c
index 7272d888397..3ff7968dc61 100644
--- a/src/mame/video/jaguar.c
+++ b/src/mame/video/jaguar.c
@@ -200,6 +200,7 @@ static bitmap_t *screen_bitmap;
static pen_t *pen_table;
+UINT8 blitter_status;
/*************************************
@@ -602,13 +603,17 @@ if (++reps % 100 == 99)
profiler_mark_end();
}
+static TIMER_CALLBACK( blitter_done )
+{
+ blitter_status = 1;
+}
READ32_HANDLER( jaguar_blitter_r )
{
switch (offset)
{
case B_CMD: /* B_CMD */
- return 1;
+ return blitter_status & 3;
default:
logerror("%08X:Blitter read register @ F022%02X\n", cpu_get_previouspc(space->cpu), offset * 4);
@@ -621,7 +626,11 @@ WRITE32_HANDLER( jaguar_blitter_w )
{
COMBINE_DATA(&blitter_regs[offset]);
if (offset == B_CMD)
+ {
+ blitter_status = 0;
+ timer_set(space->machine, ATTOTIME_IN_USEC(100), NULL, 0, blitter_done);
blitter_run(space->machine);
+ }
if (LOG_BLITTER_WRITE)
logerror("%08X:Blitter write register @ F022%02X = %08X\n", cpu_get_previouspc(space->cpu), offset * 4, data);
@@ -649,8 +658,16 @@ READ16_HANDLER( jaguar_tom_regs_r )
return video_screen_get_hpos(space->machine->primary_screen) % (video_screen_get_width(space->machine->primary_screen) / 2);
case VC:
- return video_screen_get_vpos(space->machine->primary_screen) * 2 + gpu_regs[VBE];
+ {
+ UINT8 half_line;
+
+ if(video_screen_get_hpos(space->machine->primary_screen) >= (video_screen_get_width(space->machine->primary_screen) / 2))
+ half_line = 1;
+ else
+ half_line = 0;
+ return video_screen_get_vpos(space->machine->primary_screen) * 2 + half_line;
+ }
}
return gpu_regs[offset];