--- xmil/vram/scrndraw.c 2004/08/07 12:10:27 1.4 +++ xmil/vram/scrndraw.c 2004/08/17 14:46:37 1.8 @@ -1,6 +1,8 @@ #include "compiler.h" #include "scrnmng.h" #include "sysmng.h" +#include "pccore.h" +#include "iocore.h" #include "scrndraw.h" #include "sdraw.h" #include "palettes.h" @@ -27,11 +29,11 @@ static void updateallline(UINT32 update) void scrndraw_initialize(void) { // ddraws_init ZeroMemory(screenmap, sizeof(screenmap)); - ZeroMemory(x1n_pal32, sizeof(x1n_pal32)); + ZeroMemory(xmil_pal32, sizeof(xmil_pal32)); + xmil_palettes = 0; scrn.widthmode = SCRNWIDTHMODE_WIDTH40; - xm_palettes = 0; updateallline(0x03030303); // updateallline(0x01010101); scrnmng_allflash(); sysmng_scrnwidth(scrn.widthmode); @@ -58,6 +60,82 @@ void scrndraw_changepalette(void) { updateallline(0x01010101); // fillrenewalline(0x03030303) } + +// ---- + +#if 0 +#if defined(SUPPORT_RASTER) +static REG8 rasterdraw(SDRAWFN sdrawfn, SDRAW sdraw, int maxy) { + + SINT32 rasterclock; + SINT32 clock; + PAL1EVENT *event; + PAL1EVENT *eventterm; + int nextupdate; + int y; + + rasterclock = crtc.e.rasterclock8; + if (crtc.s.SCRN_BITS & SCRN_24KHZ) { + rasterclock = rasterclock * 2; + } + clock = 0; + event = palevent.event; + eventterm = event + palevent.events; + nextupdate = 0; + + for (y=2; y= eventterm) { + break; + } + clock += rasterclock; + // お弁当はあった? + if (clock > (event->clock << 8)) { + (*sdrawfn)(sdraw, y); + nextupdate = y; + // お弁当を食べる + while(clock > (event->clock << 8)) { +// ((BYTE *)pal)[event->color] = event->value; + event++; + if (event >= eventterm) { + break; + } + } + } + } + if (y < maxy) { + if (!(np2cfg.LCD_MODE & 1)) { + pal_makeanalog(pal, 0xffff); + } + else { + pal_makeanalog_lcd(pal, 0xffff); + } + if (np2cfg.skipline) { + np2_pal32[0].d = np2_pal32[NP2PAL_SKIP].d; +#if defined(SUPPORT_16BPP) + np2_pal16[0] = np2_pal16[NP2PAL_SKIP]; +#endif + } + (*sdrawfn)(sdraw, maxy); + } + if (palevent.vsyncpal) { + return(2); + } + else if (nextupdate) { + for (y=0; yxalign; sdraw.yalign = surf->yalign; + ret = 0; +#if 1 (*fn)(&sdraw, 400); +#else +#if !defined(SUPPORT_PALEVENT) + (*fn)(&sdraw, 400); +#else + if (((dispmode & SCRN64_MASK) != SCRN64_INVALID) || + (palevent.events >= PALEVENTMAX)) { + (*fn)(&sdraw, 400); + } + else { + ret = rasterdraw(*sdrawfn, &sdraw, 400); + } +#endif +#endif sddr_exit2: scrnmng_surfunlock(surf); sddr_exit1: - return(0); + return(ret); } void scrndraw_redraw(void) { scrnmng_allflash(); pal_update(); - updateallline(0x01010101); // fillrenewalline(0x03030303) - scrndraw_draw(FALSE); + scrndraw_draw(TRUE); }