|
|
| version 1.2, 2004/08/03 12:50:54 | version 1.3, 2004/08/04 15:18:26 |
|---|---|
| Line 105 void bmpsavefile(const OEMCHAR *filename | Line 105 void bmpsavefile(const OEMCHAR *filename |
| long y; | long y; |
| BYTE *p; | BYTE *p; |
| BYTE bit; | BYTE bit; |
| BYTE work[SCREEN_WIDTH]; | BYTE work[SURFACE_WIDTH]; |
| if (bmc->bmi.biClrImportant <= 2) { | if (bmc->bmi.biClrImportant <= 2) { |
| bmc->bmi.biBitCount = 1; | bmc->bmi.biBitCount = 1; |
| Line 193 const OEMCHAR *f; | Line 193 const OEMCHAR *f; |
| OEMCHAR *r; | OEMCHAR *r; |
| if ((hbmc = GlobalAlloc(GPTR, (DWORD)sizeof(BMP_CTRL) + 1 + | if ((hbmc = GlobalAlloc(GPTR, (DWORD)sizeof(BMP_CTRL) + 1 + |
| ((DWORD)SCREEN_WIDTH * SCREEN_HEIGHT * 3L))) == NULL) { | ((DWORD)SURFACE_WIDTH * SURFACE_HEIGHT * 3L))) == NULL) { |
| return; | return; |
| } | } |
| if ((bmc = (BMP_CTRL *)GlobalLock(hbmc)) == NULL) { | if ((bmc = (BMP_CTRL *)GlobalLock(hbmc)) == NULL) { |
| Line 203 const OEMCHAR *f; | Line 203 const OEMCHAR *f; |
| ZeroMemory(bmc, sizeof(BMP_CTRL)); | ZeroMemory(bmc, sizeof(BMP_CTRL)); |
| ZeroMemory(remap, 256); | ZeroMemory(remap, 256); |
| ZeroMemory(remapflg, 256); | ZeroMemory(remapflg, 256); |
| bmc->bmi.biWidth = SCREEN_WIDTH; | bmc->bmi.biWidth = SURFACE_WIDTH; |
| bmc->bmi.biHeight = SCREEN_HEIGHT; | bmc->bmi.biHeight = SURFACE_HEIGHT; |
| p = screenmap; | p = screenmap; |
| q = (BYTE *)bmc + sizeof(BMP_CTRL); | q = (BYTE *)bmc + sizeof(BMP_CTRL); |
| for (y=0; y<SCREEN_HEIGHT; y++) { | for (y=0; y<SURFACE_HEIGHT; y++) { |
| switch(scrn.widthmode) { | switch(scrn.widthmode) { |
| case SCRNWIDTHMODE_WIDTH80: | case SCRNWIDTHMODE_WIDTH80: |
| default: | default: |
| for (x=0; x<SCREEN_WIDTH; x++) { | for (x=0; x<SURFACE_WIDTH; x++) { |
| c = *p++; | c = *p++; |
| if (!remapflg[c]) { | if (!remapflg[c]) { |
| remapflg[c] = 1; | remapflg[c] = 1; |
| Line 223 const OEMCHAR *f; | Line 223 const OEMCHAR *f; |
| break; | break; |
| case SCRNWIDTHMODE_WIDTH40: | case SCRNWIDTHMODE_WIDTH40: |
| for (x=0; x<SCREEN_WIDTH/2; x++) { | for (x=0; x<SURFACE_WIDTH/2; x++) { |
| c = *p++; | c = *p++; |
| if (!remapflg[c]) { | if (!remapflg[c]) { |
| remapflg[c] = 1; | remapflg[c] = 1; |
| Line 233 const OEMCHAR *f; | Line 233 const OEMCHAR *f; |
| *q++ = remap[c]; | *q++ = remap[c]; |
| *q++ = remap[c]; | *q++ = remap[c]; |
| } | } |
| p += SCREEN_WIDTH/2; | p += SURFACE_WIDTH/2; |
| break; | break; |
| case SCRNWIDTHMODE_4096: | case SCRNWIDTHMODE_4096: |
| for (x=0; x<SCREEN_WIDTH/2; x++) { | for (x=0; x<SURFACE_WIDTH/2; x++) { |
| c = bmps_appal(&pals, bmc->pal, | c = bmps_appal(&pals, bmc->pal, |
| x1z_pal32[(p[320] << 8) | p[0]].d); | x1z_pal32[(p[320] << 8) | p[0]].d); |
| p++; | p++; |
| *q++ = c; | *q++ = c; |
| *q++ = c; | *q++ = c; |
| } | } |
| p += SCREEN_WIDTH/2; | p += SURFACE_WIDTH/2; |
| break; | break; |
| } | } |
| if (pals > 256) { | if (pals > 256) { |
| Line 257 const OEMCHAR *f; | Line 257 const OEMCHAR *f; |
| f = bmpextstr[3]; | f = bmpextstr[3]; |
| p = screenmap; | p = screenmap; |
| q = (BYTE *)bmc + sizeof(BMP_CTRL); | q = (BYTE *)bmc + sizeof(BMP_CTRL); |
| for (y=0; y<SCREEN_HEIGHT; y++) { | for (y=0; y<SURFACE_HEIGHT; y++) { |
| switch(scrn.widthmode) { | switch(scrn.widthmode) { |
| case 0: | case 0: |
| default: | default: |
| for (x=0; x<SCREEN_WIDTH; x++) { | for (x=0; x<SURFACE_WIDTH; x++) { |
| *(DWORD *)q = x1n_pal32[*p++].d; | *(DWORD *)q = x1n_pal32[*p++].d; |
| q += 3; | q += 3; |
| } | } |
| break; | break; |
| case 1: | case 1: |
| for (x=0; x<SCREEN_WIDTH/2; x++) { | for (x=0; x<SURFACE_WIDTH/2; x++) { |
| *(DWORD *)q = x1n_pal32[*p].d; | *(DWORD *)q = x1n_pal32[*p].d; |
| *(DWORD *)(q+3) = x1n_pal32[*p].d; | *(DWORD *)(q+3) = x1n_pal32[*p].d; |
| p++; | p++; |
| q += 6; | q += 6; |
| } | } |
| p += SCREEN_WIDTH/2; | p += SURFACE_WIDTH/2; |
| break; | break; |
| case 2: | case 2: |
| for (x=0; x<SCREEN_WIDTH/2; x++) { | for (x=0; x<SURFACE_WIDTH/2; x++) { |
| *(DWORD *)q = x1z_pal32[(p[320] << 8) | p[0]].d; | *(DWORD *)q = x1z_pal32[(p[320] << 8) | p[0]].d; |
| *(DWORD *)(q+3) = x1z_pal32[(p[320] << 8) | p[0]].d; | *(DWORD *)(q+3) = x1z_pal32[(p[320] << 8) | p[0]].d; |
| p++; | p++; |
| q += 6; | q += 6; |
| } | } |
| p += SCREEN_WIDTH/2; | p += SURFACE_WIDTH/2; |
| break; | break; |
| } | } |
| } | } |
| Line 314 const OEMCHAR *f; | Line 314 const OEMCHAR *f; |
| OEMCHAR *r; | OEMCHAR *r; |
| if ((hbmc = GlobalAlloc(GPTR, (DWORD)sizeof(BMP_CTRL) + 1 + | if ((hbmc = GlobalAlloc(GPTR, (DWORD)sizeof(BMP_CTRL) + 1 + |
| ((DWORD)SCREEN_WIDTH * SCREEN_HEIGHT * 3L))) == NULL) { | ((DWORD)SURFACE_WIDTH * SURFACE_HEIGHT * 3L))) == NULL) { |
| return; | return; |
| } | } |
| if ((bmc = (BMP_CTRL *)GlobalLock(hbmc)) == NULL) { | if ((bmc = (BMP_CTRL *)GlobalLock(hbmc)) == NULL) { |
| Line 322 const OEMCHAR *f; | Line 322 const OEMCHAR *f; |
| return; | return; |
| } | } |
| ZeroMemory(bmc, sizeof(BMP_CTRL)); | ZeroMemory(bmc, sizeof(BMP_CTRL)); |
| bmc->bmi.biWidth = SCREEN_WIDTH/2; | bmc->bmi.biWidth = SURFACE_WIDTH/2; |
| bmc->bmi.biHeight = SCREEN_HEIGHT/2; | bmc->bmi.biHeight = SURFACE_HEIGHT/2; |
| p = screenmap; | p = screenmap; |
| q = (BYTE *)bmc + sizeof(BMP_CTRL); | q = (BYTE *)bmc + sizeof(BMP_CTRL); |
| for (y=0; y<SCREEN_HEIGHT/2; y++) { | for (y=0; y<SURFACE_HEIGHT/2; y++) { |
| switch(scrn.widthmode) { | switch(scrn.widthmode) { |
| case SCRNWIDTHMODE_WIDTH80: | case SCRNWIDTHMODE_WIDTH80: |
| default: | default: |
| for (x=0; x<SCREEN_WIDTH/2; x++) { | for (x=0; x<SURFACE_WIDTH/2; x++) { |
| *q++ = bmps_appal(&pals, bmc->pal, palettesmix(p).d); | *q++ = bmps_appal(&pals, bmc->pal, palettesmix(p).d); |
| p += 2; | p += 2; |
| } | } |
| p += SCREEN_WIDTH; | p += SURFACE_WIDTH; |
| break; | break; |
| case SCRNWIDTHMODE_WIDTH40: | case SCRNWIDTHMODE_WIDTH40: |
| for (x=0; x<SCREEN_WIDTH/2; x++) { | for (x=0; x<SURFACE_WIDTH/2; x++) { |
| *q++ = bmps_appal(&pals, bmc->pal, x1n_pal32[*p++].d); | *q++ = bmps_appal(&pals, bmc->pal, x1n_pal32[*p++].d); |
| } | } |
| p += SCREEN_WIDTH + (SCREEN_WIDTH/2); | p += SURFACE_WIDTH + (SURFACE_WIDTH/2); |
| break; | break; |
| case SCRNWIDTHMODE_4096: | case SCRNWIDTHMODE_4096: |
| for (x=0; x<SCREEN_WIDTH/2; x++) { | for (x=0; x<SURFACE_WIDTH/2; x++) { |
| *q++ = bmps_appal(&pals, bmc->pal, | *q++ = bmps_appal(&pals, bmc->pal, |
| x1z_pal32[(p[320] << 8) | p[0]].d); | x1z_pal32[(p[320] << 8) | p[0]].d); |
| p++; | p++; |
| } | } |
| p += SCREEN_WIDTH + (SCREEN_WIDTH/2); | p += SURFACE_WIDTH + (SURFACE_WIDTH/2); |
| break; | break; |
| } | } |
| if (pals > 256) { | if (pals > 256) { |
| Line 363 const OEMCHAR *f; | Line 363 const OEMCHAR *f; |
| f = bmpextstr[3]; | f = bmpextstr[3]; |
| p = screenmap; | p = screenmap; |
| q = (BYTE *)bmc + sizeof(BMP_CTRL); | q = (BYTE *)bmc + sizeof(BMP_CTRL); |
| for (y=0; y<SCREEN_HEIGHT/2; y++) { | for (y=0; y<SURFACE_HEIGHT/2; y++) { |
| switch(scrn.widthmode) { | switch(scrn.widthmode) { |
| case SCRNWIDTHMODE_WIDTH80: | case SCRNWIDTHMODE_WIDTH80: |
| default: | default: |
| for (x=0; x<SCREEN_WIDTH/2; x++) { | for (x=0; x<SURFACE_WIDTH/2; x++) { |
| *(DWORD *)q = palettesmix(p).d; | *(DWORD *)q = palettesmix(p).d; |
| p += 2; | p += 2; |
| q += 3; | q += 3; |
| } | } |
| p += SCREEN_WIDTH; | p += SURFACE_WIDTH; |
| break; | break; |
| case SCRNWIDTHMODE_WIDTH40: | case SCRNWIDTHMODE_WIDTH40: |
| for (x=0; x<SCREEN_WIDTH/2; x++) { | for (x=0; x<SURFACE_WIDTH/2; x++) { |
| *(DWORD *)q = x1n_pal32[*p++].d; | *(DWORD *)q = x1n_pal32[*p++].d; |
| q += 3; | q += 3; |
| } | } |
| p += SCREEN_WIDTH + (SCREEN_WIDTH/2); | p += SURFACE_WIDTH + (SURFACE_WIDTH/2); |
| break; | break; |
| case SCRNWIDTHMODE_4096: | case SCRNWIDTHMODE_4096: |
| for (x=0; x<SCREEN_WIDTH/2; x++) { | for (x=0; x<SURFACE_WIDTH/2; x++) { |
| *(DWORD *)q = x1z_pal32[(p[320] << 8) | p[0]].d; | *(DWORD *)q = x1z_pal32[(p[320] << 8) | p[0]].d; |
| p++; | p++; |
| q += 3; | q += 3; |
| } | } |
| p += SCREEN_WIDTH + (SCREEN_WIDTH/2); | p += SURFACE_WIDTH + (SURFACE_WIDTH/2); |
| break; | break; |
| } | } |
| } | } |