|
|
| version 1.6, 2004/08/10 10:41:53 | version 1.7, 2004/08/12 13:32:52 |
|---|---|
| Line 14 | Line 14 |
| BYTE scrnallflash; | BYTE scrnallflash; |
| static BYTE lastdisp = 0; | static BYTE lastdisp = 0; |
| static BYTE blinktime = 1; | static BYTE blinktime = 1; |
| DWORD drawtime = 0; | UINT drawtime = 0; |
| static void fillupdatetmp(void) { | static void fillupdatetmp(void) { |
| Line 42 static void flashupdatetmp(void) { | Line 42 static void flashupdatetmp(void) { |
| REG16 udtbase; | REG16 udtbase; |
| REG16 udt; | REG16 udt; |
| if (!makescrn.vramsize) { | |
| return; | |
| } | |
| posl = crtc.s.TXT_TOP; | posl = crtc.s.TXT_TOP; |
| y = crtc.s.TXT_YL; | y = crtc.s.TXT_YL; |
| do { | do { |
| Line 234 static void changemodes(void) { | Line 237 static void changemodes(void) { |
| lastdisp = crtc.e.dispmode; | lastdisp = crtc.e.dispmode; |
| if (!(lastdisp & SCRN_BANK1)) { | if (!(lastdisp & SCRN_BANK1)) { |
| makescrn.disp1 = GRP_RAM + GRAM_BANK0; | makescrn.disp1 = gram + GRAM_BANK0; |
| makescrn.disp2 = GRP_RAM + GRAM_BANK1; | makescrn.disp2 = gram + GRAM_BANK1; |
| makescrn.dispflag = UPDATE_TRAM | UPDATE_VRAM0; | makescrn.dispflag = UPDATE_TRAM | UPDATE_VRAM0; |
| } | } |
| else { | else { |
| makescrn.disp1 = GRP_RAM + GRAM_BANK1; | makescrn.disp1 = gram + GRAM_BANK1; |
| makescrn.disp2 = GRP_RAM + GRAM_BANK0; | makescrn.disp2 = gram + GRAM_BANK0; |
| makescrn.dispflag = UPDATE_TRAM | UPDATE_VRAM1; | makescrn.dispflag = UPDATE_TRAM | UPDATE_VRAM1; |
| } | } |
| scrnallflash = 1; | scrnallflash = 1; |
| Line 249 static void changemodes(void) { | Line 252 static void changemodes(void) { |
| static void changecrtc(void) { | static void changecrtc(void) { |
| UINT scrnxmax; | |
| UINT scrnymax; | |
| UINT textxl; | |
| UINT surfcx; | |
| REG8 widthmode; | REG8 widthmode; |
| UINT fontcy; | UINT fontcy; |
| UINT underlines; | UINT underlines; |
| REG8 y2; | REG8 y2; |
| UINT charcy; | UINT charcy; |
| UINT surfcy; | UINT surfcy; |
| UINT x; | |
| UINT y; | |
| UINT8 *p; | |
| makescrn.vramtop = LOW11(crtc.s.TXT_TOP); | makescrn.vramtop = LOW11(crtc.s.TXT_TOP); |
| scrnxmax = (crtc.s.TXT_XL <= 40)?40:80; | |
| scrnymax = 200; | |
| if (crtc.s.TXT_XL <= 40) { | if (crtc.s.TXT_XL <= 40) { |
| if (lastdisp & SCRN_DRAW4096) { | if (lastdisp & SCRN_DRAW4096) { |
| widthmode = SCRNWIDTHMODE_4096; | widthmode = SCRNWIDTHMODE_4096; |
| Line 271 static void changecrtc(void) { | Line 283 static void changecrtc(void) { |
| } | } |
| scrndraw_changewidth(widthmode); | scrndraw_changewidth(widthmode); |
| makescrn.surfcx = min(80, crtc.s.TXT_XL); | textxl = crtc.s.TXT_XL; |
| makescrn.surfrx = crtc.s.TXT_XL - makescrn.surfcx; | surfcx = min(scrnxmax, textxl); |
| fontcy = crtc.s.FNT_YL; | fontcy = crtc.e.fonty; |
| if (crtc.s.SCRN_BITS & SCRN_24KHZ) { | |
| fontcy >>= 1; | |
| } | |
| underlines = (crtc.s.SCRN_BITS & SCRN_UNDERLINE)?2:0; | underlines = (crtc.s.SCRN_BITS & SCRN_UNDERLINE)?2:0; |
| if (fontcy > underlines) { | if (fontcy > underlines) { |
| fontcy -= underlines; | fontcy -= underlines; |
| Line 301 static void changecrtc(void) { | Line 310 static void changecrtc(void) { |
| charcy = fontcy + underlines; | charcy = fontcy + underlines; |
| makescrn.fontcy = fontcy; | makescrn.fontcy = fontcy; |
| makescrn.charcy = charcy; | makescrn.charcy = charcy; |
| charcy <<= y2; | charcy <<= y2; |
| surfcy = 200 / charcy; | surfcy = scrnymax / charcy; |
| if (surfcy > crtc.s.TXT_YL) { | if (surfcy > crtc.s.TXT_YL) { |
| surfcy = crtc.s.TXT_YL; | surfcy = crtc.s.TXT_YL; |
| } | } |
| surfcy = max(1, surfcy); | |
| x = min(scrnxmax, makescrn.surfcx); | |
| if (surfcx < x) { // 小さくなった | |
| x = (x - surfcx) * 8; | |
| p = screenmap + (surfcx * 8); | |
| y = surfcy * 2; | |
| while(y) { | |
| y--; | |
| ZeroMemory(p, x); | |
| p += SURFACE_WIDTH; | |
| } | |
| } | |
| if (surfcy < makescrn.surfcy) { | |
| ZeroMemory(screenmap + (SURFACE_WIDTH * surfcy * 2), | |
| SURFACE_WIDTH * (makescrn.surfcy - surfcy) * 2); | |
| } | |
| makescrn.surfcx = surfcx; | |
| makescrn.surfrx = textxl - surfcx; | |
| makescrn.surfcy = surfcy; | makescrn.surfcy = surfcy; |
| makescrn.surfstep = (SURFACE_WIDTH * charcy * 2) - (makescrn.surfcx * 8); | makescrn.surfstep = (SURFACE_WIDTH * charcy * 2) - (surfcx * 8); |
| makescrn.vramsize = min(0x800, surfcy * crtc.s.TXT_XL); | makescrn.vramsize = min(0x800, surfcy * textxl); |
| scrnmng_setheight(0, charcy * surfcy * 2); | // scrnmng_setheight(0, charcy * surfcy * 2); |
| } | } |
| Line 335 static const DRAWFN screendraw2[8] = { | Line 360 static const DRAWFN screendraw2[8] = { |
| void scrnupdate(void) { | void scrnupdate(void) { |
| BRESULT ddrawflash; | BRESULT ddrawflash; |
| BRESULT allflash; | |
| if (!corestat.drawframe) { | if (!corestat.drawframe) { |
| return; | return; |
| Line 342 void scrnupdate(void) { | Line 368 void scrnupdate(void) { |
| corestat.drawframe = 0; | corestat.drawframe = 0; |
| ddrawflash = FALSE; | ddrawflash = FALSE; |
| allflash = FALSE; | |
| if (lastdisp != crtc.e.dispmode) { | if (lastdisp != crtc.e.dispmode) { |
| changemodes(); | changemodes(); |
| } | } |
| Line 349 void scrnupdate(void) { | Line 376 void scrnupdate(void) { |
| scrnallflash = 0; | scrnallflash = 0; |
| fillupdatetmp(); | fillupdatetmp(); |
| changecrtc(); | changecrtc(); |
| allflash = TRUE; | |
| makescrn.scrnflash = 1; | makescrn.scrnflash = 1; |
| } | } |
| if (makescrn.remakeattr) { | if (makescrn.remakeattr) { |
| Line 366 void scrnupdate(void) { | Line 394 void scrnupdate(void) { |
| if (makescrn.scrnflash) { | if (makescrn.scrnflash) { |
| makescrn.scrnflash = 0; | makescrn.scrnflash = 0; |
| makescrn.fontycnt = 0; | if (makescrn.vramsize) { |
| switch(lastdisp & SCRN64_MASK) { | makescrn.fontycnt = 0; |
| case SCRN64_320x200: | switch(lastdisp & SCRN64_MASK) { |
| // width40x25_64s(); | case SCRN64_320x200: |
| break; | // width40x25_64s(); |
| break; | |
| case SCRN64_L320x200x2: | |
| // width40x25_64x2(); | case SCRN64_L320x200x2: |
| break; | // width40x25_64x2(); |
| break; | |
| case SCRN64_L640x200: | |
| // width80x25_64s(); | case SCRN64_L640x200: |
| break; | // width80x25_64s(); |
| break; | |
| case SCRN64_H320x400: | |
| // width40x25_64h(); | case SCRN64_H320x400: |
| break; | // width40x25_64h(); |
| break; | |
| case SCRN64_320x200x4096: | |
| // width40x25_4096(); | case SCRN64_320x200x4096: |
| break; | // width40x25_4096(); |
| break; | |
| case SCRN64_320x100: | |
| // width40x12_64l(); | case SCRN64_320x100: |
| break; | // width40x12_64l(); |
| break; | |
| case SCRN64_320x100x2: | |
| // width40x12_64x2(); | case SCRN64_320x100x2: |
| break; | // width40x12_64x2(); |
| break; | |
| case SCRN64_L640x100: | |
| // width80x12_64s(); | case SCRN64_L640x100: |
| break; | // width80x12_64s(); |
| break; | |
| case SCRN64_H320x200: | |
| // width40x12_64h(); | case SCRN64_H320x200: |
| break; | // width40x12_64h(); |
| break; | |
| case SCRN64_320x100x4096: | |
| // width40x12_4096(); | case SCRN64_320x100x4096: |
| break; | // width40x12_4096(); |
| break; | |
| // case SCRN64_INVALID: | |
| default: | // case SCRN64_INVALID: |
| if (!(crtc.s.SCRN_BITS & SCRN_UNDERLINE)) { | default: |
| screendraw[crtc.s.SCRN_BITS & 7](); | if (!(crtc.s.SCRN_BITS & SCRN_UNDERLINE)) { |
| } | screendraw[crtc.s.SCRN_BITS & 7](); |
| else { | } |
| screendraw2[crtc.s.SCRN_BITS & 7](); | else { |
| } | screendraw2[crtc.s.SCRN_BITS & 7](); |
| break; | } |
| break; | |
| } | |
| ddrawflash = 1; | |
| } | } |
| ddrawflash = 1; | |
| } | } |
| if (ddrawflash) { | if (ddrawflash) { |
| ddrawflash = 0; | ddrawflash = 0; |
| scrndraw_draw(FALSE); | scrndraw_draw(allflash); |
| drawtime++; | drawtime++; |
| } | } |
| } | } |