summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/video/dc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/video/dc.c')
-rw-r--r--src/mame/video/dc.c62
1 files changed, 32 insertions, 30 deletions
diff --git a/src/mame/video/dc.c b/src/mame/video/dc.c
index 51acd9399de..bf7f1e8141e 100644
--- a/src/mame/video/dc.c
+++ b/src/mame/video/dc.c
@@ -26,6 +26,7 @@ SPG_HBLANK_INT
---- ---- ---- ---- ---- --xx xxxx xxxx line_comp_val
*/
#define spg_hblank_in_irq ((state->pvrta_regs[SPG_HBLANK_INT] & 0x03ff0000) >> 16)
+#define spg_hblank_in_irq_new ((pvrta_regs[SPG_HBLANK_INT] & 0x03ff0000) >> 16)
#define spg_hblank_int_mode ((state->pvrta_regs[SPG_HBLANK_INT] & 0x00003000) >> 12)
#define spg_line_comp_val ((state->pvrta_regs[SPG_HBLANK_INT] & 0x000003ff) >> 0)
@@ -36,6 +37,8 @@ SPG_VBLANK_INT
*/
#define spg_vblank_out_irq_line_num ((state->pvrta_regs[SPG_VBLANK_INT] & 0x03ff0000) >> 16)
#define spg_vblank_in_irq_line_num ((state->pvrta_regs[SPG_VBLANK_INT] & 0x000003ff) >> 0)
+#define spg_vblank_out_irq_line_num_new ((pvrta_regs[SPG_VBLANK_INT] & 0x03ff0000) >> 16)
+#define spg_vblank_in_irq_line_num_new ((pvrta_regs[SPG_VBLANK_INT] & 0x000003ff) >> 0)
/*
@@ -2578,28 +2581,27 @@ static TIMER_CALLBACK(endofrender_isp)
}
-VIDEO_START(dc)
+void dc_state::video_start()
{
- dc_state *state = machine.driver_data<dc_state>();
- memset(state->pvrctrl_regs, 0, sizeof(state->pvrctrl_regs));
- memset(state->pvrta_regs, 0, sizeof(state->pvrta_regs));
+ memset(pvrctrl_regs, 0, sizeof(pvrctrl_regs));
+ memset(pvrta_regs, 0, sizeof(pvrta_regs));
memset(state_ta.grab, 0, sizeof(state_ta.grab));
pvr_build_parameterconfig();
// if the next 2 registers do not have the correct values, the naomi bios will hang
- state->pvrta_regs[PVRID]=0x17fd11db;
- state->pvrta_regs[REVISION]=0x11;
+ pvrta_regs[PVRID]=0x17fd11db;
+ pvrta_regs[REVISION]=0x11;
/* FIXME: move the following regs inside MACHINE_RESET */
- state->pvrta_regs[VO_CONTROL]= 0x00000108;
- state->pvrta_regs[SOFTRESET]= 0x00000007;
- state->pvrta_regs[VO_STARTX]= 0x0000009d;
- state->pvrta_regs[VO_STARTY]= 0x00150015;
- state->pvrta_regs[SPG_HBLANK]= 0x007e0345;
- state->pvrta_regs[SPG_LOAD]= 0x01060359;
- state->pvrta_regs[SPG_VBLANK]= 0x01500104;
- state->pvrta_regs[SPG_HBLANK_INT]= 0x031d0000;
- state->pvrta_regs[SPG_VBLANK_INT]= 0x01500104;
+ pvrta_regs[VO_CONTROL]= 0x00000108;
+ pvrta_regs[SOFTRESET]= 0x00000007;
+ pvrta_regs[VO_STARTX]= 0x0000009d;
+ pvrta_regs[VO_STARTY]= 0x00150015;
+ pvrta_regs[SPG_HBLANK]= 0x007e0345;
+ pvrta_regs[SPG_LOAD]= 0x01060359;
+ pvrta_regs[SPG_VBLANK]= 0x01500104;
+ pvrta_regs[SPG_HBLANK_INT]= 0x031d0000;
+ pvrta_regs[SPG_VBLANK_INT]= 0x01500104;
state_ta.tafifo_pos=0;
state_ta.tafifo_mask=7;
@@ -2611,27 +2613,27 @@ VIDEO_START(dc)
computedilated();
- state->vbout_timer = machine.scheduler().timer_alloc(FUNC(vbout));
- state->vbout_timer->adjust(machine.primary_screen->time_until_pos(spg_vblank_out_irq_line_num));
+ vbout_timer = machine().scheduler().timer_alloc(FUNC(vbout));
+ vbout_timer->adjust(machine().primary_screen->time_until_pos(spg_vblank_out_irq_line_num_new));
- state->vbin_timer = machine.scheduler().timer_alloc(FUNC(vbin));
- state->vbin_timer->adjust(machine.primary_screen->time_until_pos(spg_vblank_in_irq_line_num));
+ vbin_timer = machine().scheduler().timer_alloc(FUNC(vbin));
+ vbin_timer->adjust(machine().primary_screen->time_until_pos(spg_vblank_in_irq_line_num_new));
- state->hbin_timer = machine.scheduler().timer_alloc(FUNC(hbin));
- state->hbin_timer->adjust(machine.primary_screen->time_until_pos(0, spg_hblank_in_irq-1));
+ hbin_timer = machine().scheduler().timer_alloc(FUNC(hbin));
+ hbin_timer->adjust(machine().primary_screen->time_until_pos(0, spg_hblank_in_irq_new-1));
- state->scanline = 0;
- state->next_y = 0;
+ scanline = 0;
+ next_y = 0;
- state->endofrender_timer_isp = machine.scheduler().timer_alloc(FUNC(endofrender_isp));
- state->endofrender_timer_tsp = machine.scheduler().timer_alloc(FUNC(endofrender_tsp));
- state->endofrender_timer_video = machine.scheduler().timer_alloc(FUNC(endofrender_video));
+ endofrender_timer_isp = machine().scheduler().timer_alloc(FUNC(endofrender_isp));
+ endofrender_timer_tsp = machine().scheduler().timer_alloc(FUNC(endofrender_tsp));
+ endofrender_timer_video = machine().scheduler().timer_alloc(FUNC(endofrender_video));
- state->endofrender_timer_isp->adjust(attotime::never);
- state->endofrender_timer_tsp->adjust(attotime::never);
- state->endofrender_timer_video->adjust(attotime::never);
+ endofrender_timer_isp->adjust(attotime::never);
+ endofrender_timer_tsp->adjust(attotime::never);
+ endofrender_timer_video->adjust(attotime::never);
- fake_accumulationbuffer_bitmap = auto_bitmap_rgb32_alloc(machine,1024,1024);
+ fake_accumulationbuffer_bitmap = auto_bitmap_rgb32_alloc(machine(),1024,1024);
}