From 615a16fcb0cd533bafa330141c7c9a7d183db94d Mon Sep 17 00:00:00 2001 From: Melissa Goad Date: Tue, 3 Oct 2017 10:48:35 -0500 Subject: [PATCH] PTIMER now fully works, I hope --- src/video/vid_nv_riva128.c | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/src/video/vid_nv_riva128.c b/src/video/vid_nv_riva128.c index 71e8fdf69..31a593568 100644 --- a/src/video/vid_nv_riva128.c +++ b/src/video/vid_nv_riva128.c @@ -231,6 +231,8 @@ typedef struct riva128_t int mtime, mfreq; int nvtime, nvfreq; + int menable; + int nvenable; } riva128_t; //Internally, the RIVA 128 operates in a weird 38-bit color depth, with 10 bits for RGB, and 8 bits for alpha, according to envytools. @@ -2807,7 +2809,9 @@ void riva128_ptimer_tick(void *p) } riva128->mfreq = freq; + riva128->menable = 0; riva128->mtime = (int)((TIMER_USEC * 1000000.0) / riva128->mfreq); + riva128->menable = 1; freq = 13500000.0; @@ -2819,7 +2823,9 @@ void riva128_ptimer_tick(void *p) } riva128->nvfreq = freq; + riva128->nvenable = 0; riva128->nvtime = (int)((TIMER_USEC * 1000000.0) / riva128->nvfreq); + riva128->nvenable = 1; } void *riva128_init() @@ -2943,8 +2949,11 @@ void riva128_ptimer_tick(void *p) } } - timer_add(riva128_mclk_poll, &riva128->mtime, TIMER_ALWAYS_ENABLED, riva128); - timer_add(riva128_nvclk_poll, &riva128->nvtime, TIMER_ALWAYS_ENABLED, riva128); + riva128->menable = 0; + riva128->nvenable = 0; + + timer_add(riva128_mclk_poll, &riva128->mtime, &riva128->menable, riva128); + timer_add(riva128_nvclk_poll, &riva128->nvtime, &riva128->nvenable, riva128); riva128->svga.vblank_start = riva128_vblank_start; @@ -3168,8 +3177,11 @@ device_t riva128_device = } } - timer_add(riva128_mclk_poll, &riva128->mtime, TIMER_ALWAYS_ENABLED, riva128); - timer_add(riva128_nvclk_poll, &riva128->nvtime, TIMER_ALWAYS_ENABLED, riva128); + riva128->menable = 0; + riva128->nvenable = 0; + + timer_add(riva128_mclk_poll, &riva128->mtime, &riva128->menable, riva128); + timer_add(riva128_nvclk_poll, &riva128->nvtime, &riva128->nvenable, riva128); riva128->svga.vblank_start = riva128_vblank_start; @@ -3369,8 +3381,11 @@ device_t rivatnt_device = } } - timer_add(riva128_mclk_poll, &riva128->mtime, TIMER_ALWAYS_ENABLED, riva128); - timer_add(riva128_nvclk_poll, &riva128->nvtime, TIMER_ALWAYS_ENABLED, riva128); + riva128->menable = 0; + riva128->nvenable = 0; + + timer_add(riva128_mclk_poll, &riva128->mtime, &riva128->menable, riva128); + timer_add(riva128_nvclk_poll, &riva128->nvtime, &riva128->nvenable, riva128); riva128->svga.vblank_start = riva128_vblank_start;