|
|
| version 1.1, 2004/08/01 05:31:31 | version 1.8, 2004/08/17 14:46:37 |
|---|---|
| Line 1 | Line 1 |
| #include "compiler.h" | #include "compiler.h" |
| #include "scrnmng.h" | #include "scrnmng.h" |
| #include "sysmng.h" | #include "sysmng.h" |
| #include "pccore.h" | |
| #include "iocore.h" | |
| #include "scrndraw.h" | #include "scrndraw.h" |
| #include "sdraw.h" | #include "sdraw.h" |
| #include "draw.h" | |
| #include "palettes.h" | #include "palettes.h" |
| #include "makescrn.h" | |
| SCRN scrn; | SCRN scrn; |
| UINT8 renewalline[SCREEN_HEIGHT+4]; | UINT8 renewalline[SURFACE_HEIGHT+4]; |
| UINT8 screenmap[SCREEN_WIDTH * SCREEN_HEIGHT]; | UINT8 screenmap[SURFACE_SIZE]; |
| static void updateallline(UINT32 update) { | static void updateallline(UINT32 update) { |
| Line 27 static void updateallline(UINT32 update) | Line 29 static void updateallline(UINT32 update) |
| void scrndraw_initialize(void) { // ddraws_init | void scrndraw_initialize(void) { // ddraws_init |
| ZeroMemory(screenmap, sizeof(screenmap)); | ZeroMemory(screenmap, sizeof(screenmap)); |
| ZeroMemory(x1n_pal32, sizeof(x1n_pal32)); | ZeroMemory(xmil_pal32, sizeof(xmil_pal32)); |
| xmil_palettes = 0; | |
| scrn.widthmode = SCRNWIDTHMODE_WIDTH40; | scrn.widthmode = SCRNWIDTHMODE_WIDTH40; |
| xm_palettes = 0; | |
| updateallline(0x03030303); // updateallline(0x01010101); | updateallline(0x03030303); // updateallline(0x01010101); |
| scrnmng_allflash(); | scrnmng_allflash(); |
| sysmng_scrnwidth(scrn.widthmode); | sysmng_scrnwidth(scrn.widthmode); |
| Line 55 void scrndraw_changepalette(void) { | Line 57 void scrndraw_changepalette(void) { |
| return; | return; |
| } | } |
| #endif | #endif |
| #if defined(SUPPORT_16BPP) | updateallline(0x01010101); // fillrenewalline(0x03030303) |
| if (scrnmng_getbpp() == 16) { | } |
| pals_cnv16pal(x1n_pal16, x1n_pal32, xm_palettes); | |
| // ---- | |
| #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<maxy; y+=2) { | |
| if (event >= 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 | #endif |
| updateallline(0x01010101); // fillrenewalline(0x03030303) | } |
| (*sdrawfn)(sdraw, maxy); | |
| } | |
| if (palevent.vsyncpal) { | |
| return(2); | |
| } | |
| else if (nextupdate) { | |
| for (y=0; y<nextupdate; y+=2) { | |
| *(UINT16 *)(renewal_line + y) |= 0x8080; | |
| } | |
| return(1); | |
| } | |
| else { | |
| return(0); | |
| } | |
| } | } |
| #endif | |
| #endif | |
| // ---- | |
| REG8 scrndraw_draw(REG8 redraw) { | REG8 scrndraw_draw(REG8 redraw) { |
| Line 70 const SDRAWFN *sdrawfn; | Line 143 const SDRAWFN *sdrawfn; |
| SDRAWFN fn; | SDRAWFN fn; |
| _SDRAW sdraw; | _SDRAW sdraw; |
| UINT i; | UINT i; |
| REG8 ret; | |
| if (redraw) { | |
| updateallline(0x01010101); | |
| } | |
| surf = scrnmng_surflock(); | surf = scrnmng_surflock(); |
| if (surf == NULL) { | if (surf == NULL) { |
| Line 111 const SDRAWFN *sdrawfn; | Line 189 const SDRAWFN *sdrawfn; |
| sdraw.y = 0; | sdraw.y = 0; |
| sdraw.xalign = surf->xalign; | sdraw.xalign = surf->xalign; |
| sdraw.yalign = surf->yalign; | sdraw.yalign = surf->yalign; |
| ret = 0; | |
| #if 1 | |
| (*fn)(&sdraw, 400); | (*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: | sddr_exit2: |
| scrnmng_surfunlock(surf); | scrnmng_surfunlock(surf); |
| sddr_exit1: | sddr_exit1: |
| return(0); | return(ret); |
| } | } |
| void scrndraw_redraw(void) { | void scrndraw_redraw(void) { |
| scrnmng_allflash(); | scrnmng_allflash(); |
| scrnmng_palchanged(); // ? | pal_update(); |
| updateallline(0x01010101); // fillrenewalline(0x03030303) | scrndraw_draw(TRUE); |
| palettes(); | |
| scrndraw_draw(FALSE); | |
| } | } |