|
|
| version 1.8, 2004/08/17 14:46:37 | version 1.11, 2004/08/20 08:41:41 |
|---|---|
| Line 1 | Line 1 |
| #include "compiler.h" | #include "compiler.h" |
| #include "scrnmng.h" | #include "scrnmng.h" |
| #include "sysmng.h" | |
| #include "pccore.h" | #include "pccore.h" |
| #include "iocore.h" | #include "iocore.h" |
| #include "scrndraw.h" | #include "scrndraw.h" |
| Line 9 | Line 8 |
| #include "makescrn.h" | #include "makescrn.h" |
| SCRN scrn; | |
| UINT8 renewalline[SURFACE_HEIGHT+4]; | UINT8 renewalline[SURFACE_HEIGHT+4]; |
| UINT8 screenmap[SURFACE_SIZE]; | UINT8 screenmap[SURFACE_SIZE]; |
| Line 32 void scrndraw_initialize(void) { // | Line 30 void scrndraw_initialize(void) { // |
| ZeroMemory(xmil_pal32, sizeof(xmil_pal32)); | ZeroMemory(xmil_pal32, sizeof(xmil_pal32)); |
| xmil_palettes = 0; | xmil_palettes = 0; |
| scrn.widthmode = SCRNWIDTHMODE_WIDTH40; | |
| updateallline(0x03030303); // updateallline(0x01010101); | updateallline(0x03030303); // updateallline(0x01010101); |
| scrnmng_allflash(); | scrnmng_allflash(); |
| sysmng_scrnwidth(scrn.widthmode); | |
| } | |
| void scrndraw_changewidth(REG8 widthmode) { | |
| if (scrn.widthmode != widthmode) { | |
| scrn.widthmode = widthmode; | |
| sysmng_scrnwidth(widthmode); | |
| updateallline(0x01010101); // fillrenewalline(0x03030303) | |
| } | |
| } | } |
| void scrndraw_changepalette(void) { | void scrndraw_changepalette(void) { |
| Line 63 void scrndraw_changepalette(void) { | Line 49 void scrndraw_changepalette(void) { |
| // ---- | // ---- |
| #if 0 | #if defined(SUPPORT_PALEVENT) |
| #if defined(SUPPORT_RASTER) | |
| static REG8 rasterdraw(SDRAWFN sdrawfn, SDRAW sdraw, int maxy) { | static REG8 rasterdraw(SDRAWFN sdrawfn, SDRAW sdraw, int maxy) { |
| UINT8 rgbp[8]; | |
| SINT32 rasterclock; | SINT32 rasterclock; |
| SINT32 clock; | SINT32 clock; |
| PAL1EVENT *event; | PAL1EVENT *event; |
| Line 74 static REG8 rasterdraw(SDRAWFN sdrawfn, | Line 60 static REG8 rasterdraw(SDRAWFN sdrawfn, |
| int nextupdate; | int nextupdate; |
| int y; | int y; |
| CopyMemory(rgbp, palevent.rgbp, 8); | |
| rasterclock = crtc.e.rasterclock8; | rasterclock = crtc.e.rasterclock8; |
| if (crtc.s.SCRN_BITS & SCRN_24KHZ) { | if (crtc.s.SCRN_BITS & SCRN_24KHZ) { |
| rasterclock = rasterclock * 2; | rasterclock = rasterclock * 2; |
| Line 90 static REG8 rasterdraw(SDRAWFN sdrawfn, | Line 77 static REG8 rasterdraw(SDRAWFN sdrawfn, |
| clock += rasterclock; | clock += rasterclock; |
| // お弁当はあった? | // お弁当はあった? |
| if (clock > (event->clock << 8)) { | if (clock > (event->clock << 8)) { |
| pal_update1(rgbp); | |
| (*sdrawfn)(sdraw, y); | (*sdrawfn)(sdraw, y); |
| nextupdate = y; | nextupdate = y; |
| // お弁当を食べる | // お弁当を食べる |
| while(clock > (event->clock << 8)) { | while(clock > (event->clock << 8)) { |
| // ((BYTE *)pal)[event->color] = event->value; | ((UINT8 *)rgbp)[event->rgbp] = event->value; |
| event++; | event++; |
| if (event >= eventterm) { | if (event >= eventterm) { |
| break; | break; |
| Line 103 static REG8 rasterdraw(SDRAWFN sdrawfn, | Line 91 static REG8 rasterdraw(SDRAWFN sdrawfn, |
| } | } |
| } | } |
| if (y < maxy) { | if (y < maxy) { |
| if (!(np2cfg.LCD_MODE & 1)) { | pal_update1(rgbp); |
| 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); | (*sdrawfn)(sdraw, maxy); |
| } | } |
| if (palevent.vsyncpal) { | // 戻すすすす |
| return(2); | pal_update1(crtc.s.rgbp); |
| } | |
| else if (nextupdate) { | if (nextupdate) { |
| for (y=0; y<nextupdate; y+=2) { | for (y=0; y<nextupdate; y+=2) { |
| *(UINT16 *)(renewal_line + y) |= 0x8080; | *(UINT16 *)(renewalline + y) |= 0x0101; |
| } | } |
| return(1); | return(1); |
| } | } |
| Line 131 static REG8 rasterdraw(SDRAWFN sdrawfn, | Line 108 static REG8 rasterdraw(SDRAWFN sdrawfn, |
| } | } |
| } | } |
| #endif | #endif |
| #endif | |
| // ---- | // ---- |
| REG8 scrndraw_draw(REG8 redraw) { | REG8 scrndraw_draw(REG8 redraw) { |
| REG8 ret; | |
| const SCRNSURF *surf; | const SCRNSURF *surf; |
| const SDRAWFN *sdrawfn; | const SDRAWFN *sdrawfn; |
| SDRAWFN fn; | SDRAWFN fn; |
| _SDRAW sdraw; | _SDRAW sdraw; |
| UINT i; | UINT i; |
| REG8 ret; | |
| if (redraw) { | if (redraw) { |
| updateallline(0x01010101); | updateallline(0x01010101); |
| } | } |
| ret = 0; | |
| surf = scrnmng_surflock(); | surf = scrnmng_surflock(); |
| if (surf == NULL) { | if (surf == NULL) { |
| goto sddr_exit1; | goto sddr_exit1; |
| Line 157 const SDRAWFN *sdrawfn; | Line 134 const SDRAWFN *sdrawfn; |
| if (sdrawfn == NULL) { | if (sdrawfn == NULL) { |
| goto sddr_exit2; | goto sddr_exit2; |
| } | } |
| switch(scrn.widthmode) { | sdrawfn += makescrn.drawmode; |
| case SCRNWIDTHMODE_WIDTH80: | |
| default: | |
| break; | |
| case SCRNWIDTHMODE_WIDTH40: | |
| sdrawfn += 1; | |
| break; | |
| case SCRNWIDTHMODE_4096: | |
| sdrawfn += 2; | |
| break; | |
| } | |
| fn = *sdrawfn; | fn = *sdrawfn; |
| if (fn == NULL) { | if (fn == NULL) { |
| goto sddr_exit2; | goto sddr_exit2; |
| Line 184 const SDRAWFN *sdrawfn; | Line 149 const SDRAWFN *sdrawfn; |
| sdraw.src = screenmap; | sdraw.src = screenmap; |
| sdraw.dst = surf->ptr; | sdraw.dst = surf->ptr; |
| #if defined(SIZE_QVGA) | |
| sdraw.width = surf->width >> 1; | |
| #else | |
| sdraw.width = surf->width; | sdraw.width = surf->width; |
| sdraw.xbytes = surf->xalign * surf->width; | #endif |
| sdraw.xbytes = surf->xalign * sdraw.width; | |
| 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); | |
| #else | |
| #if !defined(SUPPORT_PALEVENT) | #if !defined(SUPPORT_PALEVENT) |
| (*fn)(&sdraw, 400); | (*fn)(&sdraw, 400); |
| #else | #else |
| if (((dispmode & SCRN64_MASK) != SCRN64_INVALID) || | if ((crtc.e.dispmode & SCRN64_ENABLE) || |
| (palevent.events >= PALEVENTMAX)) { | (palevent.events >= SUPPORT_PALEVENT)) { |
| (*fn)(&sdraw, 400); | (*fn)(&sdraw, 400); |
| } | } |
| else { | else { |
| ret = rasterdraw(*sdrawfn, &sdraw, 400); | ret = rasterdraw(*sdrawfn, &sdraw, 400); |
| } | } |
| #endif | #endif |
| #endif | |
| sddr_exit2: | sddr_exit2: |
| scrnmng_surfunlock(surf); | scrnmng_surfunlock(surf); |