|
|
| version 1.15, 2004/08/18 09:17:56 | version 1.18, 2005/02/27 14:43:35 |
|---|---|
| Line 11 | Line 11 |
| MAKESCRN makescrn; | MAKESCRN makescrn; |
| UINT drawtime = 0; | |
| UINT8 scrnallflash; | |
| UINT drawtime = 0; | |
| static void fillupdatetmp(void) { | static void fillupdatetmp(void) { |
| UINT32 *p; | |
| UINT i; | UINT i; |
| p = (UINT32 *)updatetmp; | for (i=0; i<0x800; i++) { |
| for (i=0; i<0x200; i++) { | TRAMUPDATE(i) |= UPDATE_TVRAM; |
| p[i] |= (UPDATE_TVRAM << 24) | (UPDATE_TVRAM << 16) | | |
| (UPDATE_TVRAM << 8) | UPDATE_TVRAM; | |
| } | } |
| } | } |
| Line 47 static void flashupdatetmp(void) { | Line 42 static void flashupdatetmp(void) { |
| y = crtc.e.yl; | y = crtc.e.yl; |
| do { | do { |
| for (x=0; x<crtc.s.reg[CRTCREG_HDISP]; x++) { | for (x=0; x<crtc.s.reg[CRTCREG_HDISP]; x++) { |
| if (!(tram[TRAM_ATR + LOW11(posl + x)] & TRAMATR_Yx2)) { | if (!(TRAM_ATR(LOW11(posl + x)) & TRAMATR_Yx2)) { |
| break; | break; |
| } | } |
| } | } |
| Line 56 static void flashupdatetmp(void) { | Line 51 static void flashupdatetmp(void) { |
| r = (crtc.s.reg[CRTCREG_HDISP] + 1) >> 1; | r = (crtc.s.reg[CRTCREG_HDISP] + 1) >> 1; |
| do { | do { |
| posr = LOW11(posl + 1); | posr = LOW11(posl + 1); |
| atr = (tram[TRAM_ATR + posl] << 8) | tram[TRAM_ATR + posr]; | atr = (TRAM_ATR(posl) << 8) | TRAM_ATR(posr); |
| udt = udtbase; | udt = udtbase; |
| if (!y2) { | if (!y2) { |
| if (atr & (TRAMATR_Yx2 << 8)) { | if (atr & (TRAMATR_Yx2 << 8)) { |
| Line 80 static void flashupdatetmp(void) { | Line 75 static void flashupdatetmp(void) { |
| if (atr & (TRAMATR_Xx2 << 0)) { // ±¦Â¦ÇܳÑ? | if (atr & (TRAMATR_Xx2 << 0)) { // ±¦Â¦ÇܳÑ? |
| udt |= 0x0008; | udt |= 0x0008; |
| } | } |
| if ((updatetmp[posl] ^ (udt >> 8)) & 0x1f) { | if ((TRAMUPDATE(posl) ^ (udt >> 8)) & 0x1f) { |
| updatetmp[posl] = (UINT8)((udt >> 8) | UPDATE_TVRAM); | TRAMUPDATE(posl) = (UINT8)((udt >> 8) | UPDATE_TVRAM); |
| } | } |
| if ((updatetmp[posr] ^ (udt >> 0)) & 0x1f) { | if ((TRAMUPDATE(posr) ^ (udt >> 0)) & 0x1f) { |
| updatetmp[posr] = (UINT8)((udt >> 0) | UPDATE_TVRAM); | TRAMUPDATE(posr) = (UINT8)((udt >> 0) | UPDATE_TVRAM); |
| } | } |
| posl = LOW11(posl + 2); | posl = LOW11(posl + 2); |
| } while(--r); | } while(--r); |
| Line 100 static BRESULT updateblink(void) { | Line 95 static BRESULT updateblink(void) { |
| REG8 update; | REG8 update; |
| UINT r; | UINT r; |
| if (makescrn.blinktime) { | pos = makescrn.vramtop; |
| makescrn.blinktime--; | makescrn.blinktest ^= 0x10; |
| return(FALSE); | update = 0; |
| r = makescrn.vramsize; | |
| while(r) { | |
| r--; | |
| if (TRAM_ATR(pos) & 0x10) { | |
| TRAMUPDATE(pos) |= UPDATE_TRAM; | |
| update = UPDATE_TRAM; | |
| } | |
| pos = LOW11(pos + 1); | |
| } | |
| if (update) { | |
| return(TRUE); | |
| } | } |
| else { | else { |
| makescrn.blinktime = 30 - 1; | return(FALSE); |
| pos = makescrn.vramtop; | |
| makescrn.blinktest ^= 0x10; | |
| update = 0; | |
| r = makescrn.vramsize; | |
| while(r) { | |
| r--; | |
| if (tram[TRAM_ATR + pos] & 0x10) { | |
| updatetmp[pos] |= UPDATE_TRAM; | |
| update = UPDATE_TRAM; | |
| } | |
| pos = LOW11(pos + 1); | |
| } | |
| if (update) { | |
| makescrn.existblink = 1; | |
| return(TRUE); | |
| } | |
| else { | |
| return(FALSE); | |
| } | |
| } | } |
| } | } |
| Line 194 static void changemodes(void) { | Line 181 static void changemodes(void) { |
| if (dispmode & DISPMODE_WIDTH80) { | if (dispmode & DISPMODE_WIDTH80) { |
| makescrn.drawmode |= 1; | makescrn.drawmode |= 1; |
| } | } |
| sysmng_scrnwidth((dispmode & DISPMODE_WIDTH80) == 0); | sysmng_scrnwidth((REG8)((dispmode & DISPMODE_WIDTH80) == 0)); |
| if (!(dispmode & DISPMODE_BANK1)) { | if (!(dispmode & DISPMODE_BANK1)) { |
| makescrn.disp1 = gram + GRAM_BANK0; | makescrn.disp1 = gram + GRAM_BANK0; |
| Line 206 static void changemodes(void) { | Line 193 static void changemodes(void) { |
| makescrn.disp2 = gram + GRAM_BANK0; | makescrn.disp2 = gram + GRAM_BANK0; |
| makescrn.dispflag = UPDATE_TRAM + UPDATE_VRAM1; | makescrn.dispflag = UPDATE_TRAM + UPDATE_VRAM1; |
| } | } |
| scrnallflash = 1; | |
| makescrn.palandply = 1; | |
| } | } |
| static void changecrtc(void) { | static void changecrtc(void) { |
| Line 292 static void changecrtc(void) { | Line 277 static void changecrtc(void) { |
| void scrnupdate(void) { | void scrnupdate(void) { |
| BRESULT ddrawflash; | REG8 flag; |
| BRESULT allflash; | REG8 existblink; |
| if (!corestat.drawframe) { | if (!corestat.drawframe) { |
| return; | return; |
| } | } |
| corestat.drawframe = 0; | corestat.drawframe = 0; |
| ddrawflash = makescrn.nextdraw; | flag = makescrn.nextdraw; |
| allflash = FALSE; | if (crtc.e.scrnflash) { |
| crtc.e.scrnflash = 0; | |
| flag |= SCRNUPD_FLASH; | |
| } | |
| if (crtc.e.scrnallflash) { | |
| crtc.e.scrnallflash = 0; | |
| flag |= SCRNUPD_ALLFLASH; | |
| } | |
| if (crtc.e.palandply) { | |
| crtc.e.palandply = 0; | |
| flag |= SCRNUPD_PALANDPLY; | |
| } | |
| if (makescrn.dispmode != crtc.e.dispmode) { | if (makescrn.dispmode != crtc.e.dispmode) { |
| TRACEOUT(("change mode!")); | TRACEOUT(("change mode!")); |
| changemodes(); | changemodes(); |
| flag |= SCRNUPD_ALLFLASH | SCRNUPD_PALANDPLY; | |
| } | } |
| if (scrnallflash) { | if (flag & SCRNUPD_ALLFLASH) { |
| scrnallflash = 0; | |
| changecrtc(); | changecrtc(); |
| TRACEOUT(("flash! %dx%d", makescrn.surfcx, makescrn.surfcy)); | TRACEOUT(("flash! %dx%d", makescrn.surfcx, makescrn.surfcy)); |
| fillupdatetmp(); | fillupdatetmp(); |
| ddrawflash = TRUE; | flag |= SCRNUPD_FLASH; |
| allflash = TRUE; | |
| makescrn.scrnflash = 1; | |
| } | } |
| if (makescrn.remakeattr) { | if (crtc.e.remakeattr) { |
| makescrn.remakeattr = 0; | crtc.e.remakeattr = 0; |
| flashupdatetmp(); | flashupdatetmp(); |
| } | } |
| if (makescrn.palandply) { | if (flag & SCRNUPD_PALANDPLY) { |
| makescrn.palandply = 0; | |
| pal_update(); | pal_update(); |
| ddrawflash = TRUE; | |
| } | } |
| if (makescrn.existblink) { | |
| makescrn.scrnflash |= updateblink(); | if (crtc.e.blinktime) { |
| crtc.e.blinktime--; | |
| } | |
| else { | |
| crtc.e.blinktime = 30 - 1; | |
| if (crtc.e.existblink) { | |
| existblink = updateblink(); | |
| crtc.e.existblink = existblink; | |
| flag |= existblink; | |
| } | |
| } | } |
| if (makescrn.scrnflash) { | if (flag & SCRNUPD_FLASH) { |
| makescrn.scrnflash = 0; | |
| if (makescrn.vramsize) { | if (makescrn.vramsize) { |
| makescrn.fontycnt = 0; | makescrn.fontycnt = 0; |
| screenmake[makescrn.dispmode & DISPMODE_MASKMODE](); | screenmake[makescrn.dispmode & DISPMODE_MASKMODE](); |
| Line 386 void scrnupdate(void) { | Line 387 void scrnupdate(void) { |
| break; | break; |
| } | } |
| #endif | #endif |
| ddrawflash = TRUE; | |
| } | } |
| } | } |
| if (ddrawflash) { | if (flag) { |
| makescrn.nextdraw = scrndraw_draw(allflash); | makescrn.nextdraw = scrndraw_draw((REG8)(flag & SCRNUPD_ALLFLASH)); |
| drawtime++; | drawtime++; |
| } | } |
| } | } |