diff --git a/ext_tools_doc/pgd16cnv.md b/ext_tools_doc/pgd16cnv.md new file mode 100644 index 0000000..7521888 --- /dev/null +++ b/ext_tools_doc/pgd16cnv.md @@ -0,0 +1,19 @@ +# pgd16cnv +[zurapce library](https://github.com/zurachu/zurapce)用16階調拡張P/ECE BMPコンバータ + +8bit or 4bitのWindows BMPを、 +[zurapce library](https://github.com/zurachu/zurapce)のLDirect_DrawObject()で描画できる +16階調拡張P/ECE BMPに変換します。 + +## 8bit or 4bit Windoes BMP の作成 + +グレースケールで、パレットの0番~15番を白~黒にして作成して下さい。 +8bit の場合は、それ以外の色は透過色として扱われます。 +幅は、8の倍数にしてください(通常のP/ECE BMPと同様の制約) + +## コンバータ実行方法 + + pgd16cnv [option] bmpfile ... + option -t テキスト出力 (.c) デフォルト + -b バイナリ出力 (.pgx) + bmpfile Windows BMP ファイル名 複数指定可能、ワイルドカードも使えます diff --git a/mk.bat b/mk.bat index 69bf752..0c1eff9 100644 --- a/mk.bat +++ b/mk.bat @@ -7,7 +7,7 @@ del *T.BM2 F*.BM2 THUM*.BM2 THLF*.BM2 BAR*.BM2 BUTTON*.BM2 NE*.BM2 OPTION*.BM2 del ALBUM.BM2 BG.BM2 DATE.BM2 FRAME.BM2 GENERAL.BM2 MAPSELECT.BM2 MEMOCA.BM2 SAKURA.BM2 SAVELOAD.BM2 TITLE.BM2 YESNO.BM2 th2bm2cmv *.BM2 pceth2bmp *.bmp -pgd16cmv -b *.bmp +pgd16cnv -b *.bmp copy /Y CAL\* .\ diff --git a/pceth2_win.sln b/pceth2_win.sln index dd671ba..2e0f1c9 100644 --- a/pceth2_win.sln +++ b/pceth2_win.sln @@ -4,8 +4,6 @@ VisualStudioVersion = 15.0.26430.6 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unpack000", "unpack000\unpack000.vcxproj", "{9AE56C73-F8CE-498F-88C1-62E7F15735A8}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pgd16cmv", "pgd16cmv\pgd16cmv.vcxproj", "{234D94A6-ABBA-44CC-811F-096DA5810855}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pceth2bmp", "pceth2bmp\pceth2bmp.vcxproj", "{4C2B6180-E2EC-484E-B94A-939B6A9E297D}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "th2bm2cmv", "th2bm2cmv\th2bm2cmv.vcxproj", "{58D687AE-AF84-4555-B9EE-725F1E50DE1F}" @@ -24,10 +22,6 @@ Global {9AE56C73-F8CE-498F-88C1-62E7F15735A8}.Debug|x86.Build.0 = Debug|Win32 {9AE56C73-F8CE-498F-88C1-62E7F15735A8}.Release|x86.ActiveCfg = Release|Win32 {9AE56C73-F8CE-498F-88C1-62E7F15735A8}.Release|x86.Build.0 = Release|Win32 - {234D94A6-ABBA-44CC-811F-096DA5810855}.Debug|x86.ActiveCfg = Debug|Win32 - {234D94A6-ABBA-44CC-811F-096DA5810855}.Debug|x86.Build.0 = Debug|Win32 - {234D94A6-ABBA-44CC-811F-096DA5810855}.Release|x86.ActiveCfg = Release|Win32 - {234D94A6-ABBA-44CC-811F-096DA5810855}.Release|x86.Build.0 = Release|Win32 {4C2B6180-E2EC-484E-B94A-939B6A9E297D}.Debug|x86.ActiveCfg = Debug|Win32 {4C2B6180-E2EC-484E-B94A-939B6A9E297D}.Debug|x86.Build.0 = Debug|Win32 {4C2B6180-E2EC-484E-B94A-939B6A9E297D}.Release|x86.ActiveCfg = Release|Win32 diff --git a/pgd16cmv/main.cpp b/pgd16cmv/main.cpp deleted file mode 100644 index 088d280..0000000 --- a/pgd16cmv/main.cpp +++ /dev/null @@ -1,163 +0,0 @@ -/* - * pgd16cmv - * 4^8bitkBMP16KgPIECE_BMPRo[^ - * - * (c)2005 ĂƂ灚ۂ - * - * 2005/02/16 - * 2005/02/20 ̃ChJ[hΉisetargv.objNj - */ - -#include -#include -#include -#include -#include - -typedef struct tagPBMP_FILEHEADER{ - DWORD head; // HEADER 'PBEX' - DWORD fsize; // t@C iBYTEPʁj - BYTE bpp; // bit[x i4j - BYTE mask; // }XNbit[x i0/1j - short w; // X 8sNZPʌ - short h; // Y - DWORD buf_size; // BMPTCY iBYTEPʁj -}PBMP_FILEHEADER; - -int main(int argc, char *argv[]) -{ - FILE *fp = NULL; - BITMAPFILEHEADER bf; - BITMAPINFOHEADER bi; - PBMP_FILEHEADER pb; - BYTE *bmp = NULL, *buf = NULL, *mask = NULL; - char output_flag = 't'; - char path[_MAX_PATH]; - char drive[_MAX_DRIVE]; - char dir[_MAX_DIR]; - char fname[_MAX_FNAME]; - char ext[_MAX_EXT]; - - if(argc == 1) { // usage - fprintf(stderr, "4^8bitkBMP16KgPIECE_BMPRo[^\n"); - fprintf(stderr, "pgd16cmv [option] filename ..\n"); - fprintf(stderr, "-b oCio(.pgx)\n"); - fprintf(stderr, "-t eLXgo(.c)ftHg\n"); - return 1; - } - - for(int i = 1; i < argc; i++) { - if(!strcmp(argv[i], "-t")) { // Ȍ̃t@C̓eLXgo - output_flag = 't'; - continue; - } - if(!strcmp(argv[i], "-b")) { // Ȍ̃t@C̓oCio - output_flag = 'b'; - continue; - } - - _splitpath(argv[i], drive, dir, fname, ext); - if((fp = fopen(argv[i], "rb")) == NULL) goto ERR; - // BITMAPFILEHEADER - if(fread(&bf, 1, sizeof(BITMAPFILEHEADER), fp) != sizeof(BITMAPFILEHEADER)) goto ERR; - if(strncmp((char*)&bf.bfType, "BM", 2)) goto ERR; - // BITMAPINFOHEADER - if(fread(&bi, 1, sizeof(BITMAPINFOHEADER), fp) != sizeof(BITMAPINFOHEADER)) goto ERR; - if(bi.biSize != sizeof(BITMAPINFOHEADER)) goto ERR; - if(bi.biWidth % 8) goto ERR; // 8sNZP - if(bi.biBitCount != 8 && bi.biBitCount != 4) goto ERR; // 4/8bit - if(bi.biCompression != BI_RGB) goto ERR; // k - if(bi.biClrUsed == 0) bi.biClrUsed = 1 << bi.biBitCount; - // RGBQUAD[bi.biClrUsed]iǂݔ΂j - if(fseek(fp, sizeof(RGBQUAD) * bi.biClrUsed, SEEK_CUR)) goto ERR; - // BITMAP{ - if((bmp = (BYTE*)malloc(bi.biWidth * bi.biHeight * bi.biBitCount / 8)) == NULL) goto ERR; - if(bi.biHeight < 0) { // gbv_E - fread(bmp, 1, bi.biWidth * bi.biHeight * bi.biBitCount / 8, fp); - bi.biHeight = -bi.biHeight; - } else { // {gAbv - for(int y = bi.biHeight - 1; y >= 0; y--) { - fread(bmp + bi.biWidth * y * bi.biBitCount / 8, 1, bi.biWidth * bi.biBitCount / 8, fp); - } - } - fclose(fp); - - // PBMP_FILEHEADER - strncpy((char*)&pb.head, "XEBP", sizeof(DWORD)); - pb.bpp = 4; - pb.mask = 0; - pb.w = (short)bi.biWidth; - pb.h = (short)bi.biHeight; - // PIECE_BMP{ - if((buf = (BYTE*)malloc(pb.w * pb.h / 2)) == NULL) goto ERR; - if((mask = (BYTE*)malloc(pb.w * pb.h / 8)) == NULL) goto ERR; - if(bi.biBitCount == 8) { // 8bit}XNL/16K - BYTE *b = buf, *m = mask; - for(int j = 0; j < pb.w * pb.h; j += 8) { // }XN - for(int k = 0; k < 8; k++) { - *m <<= 1; - if(bmp[j+k] & 0xF0) { - bmp[j+k] = 0; - *m |= 1; - pb.mask = 1; - } - } - m++; - } - for(int j = 0; j < pb.w * pb.h; j += 2) { // f - *b++ = bmp[j] << 4 | bmp[j+1]; - } - } else { // 4bit}XN16K - memcpy(buf, bmp, pb.w * pb.h / 2); - } - // PBMP_FILEHEADER - pb.buf_size = (pb.bpp + pb.mask) * pb.w * pb.h / 8; - pb.fsize = sizeof(PBMP_FILEHEADER) + pb.buf_size; - free(bmp); - bmp = NULL; - - if(output_flag == 't') { // eLXgo - _makepath(path, drive, dir, fname, ".c"); - if((fp = fopen(path, "wt")) == NULL) goto ERR; - fprintf(fp, "unsigned char %s[] = {\n", fname); - BYTE *p = (BYTE*)&pb; - for(int j = 0; j < sizeof(PBMP_FILEHEADER); j++) fprintf(fp, "0x%02x, ",*p++); - fprintf(fp, "\n"); - p = buf; - for(int y = 0; y < pb.h; y++) { - for(int x = 0; x < pb.w; x += 2) { - fprintf(fp, "0x%02x, ", *p++); - } - fprintf(fp, "\n"); - } - if(pb.mask) { - p = mask; - for(int y = 0; y < pb.h; y++) { - for(int x = 0; x < pb.w; x += 8) { - fprintf(fp, "0x%02x, ", *p++); - } - fprintf(fp, "\n"); - } - } - fprintf(fp, "\n};\n"); - } else { // oCio - _makepath(path, drive, dir, fname, ".pgx"); - if((fp = fopen(path, "wb")) == NULL) goto ERR; - fwrite(&pb, 1, sizeof(PBMP_FILEHEADER), fp); - fwrite(buf, 1, pb.w * pb.h / 2, fp); - if(pb.mask) fwrite(mask, 1, pb.w * pb.h / 8, fp); - } - printf("%s - ܂B\n", path); - goto FREE; - -ERR: - fprintf(stderr, "%s - s܂B\n", argv[i]); -FREE: - if(fp != NULL) fclose(fp); - if(bmp != NULL) free(bmp); - if(buf != NULL) free(buf); - if(mask != NULL) free(mask); - } - - return 0; -} \ No newline at end of file diff --git a/pgd16cmv/pgd16cmv.vcxproj b/pgd16cmv/pgd16cmv.vcxproj deleted file mode 100644 index d76cc55..0000000 --- a/pgd16cmv/pgd16cmv.vcxproj +++ /dev/null @@ -1,96 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {234D94A6-ABBA-44CC-811F-096DA5810855} - Win32Proj - 10.0.15063.0 - - - - Application - v141 - MultiByte - - - Application - v141 - MultiByte - - - - - - - - - - - - - <_ProjectFileVersion>15.0.26419.1 - - - Debug\ - Debug\ - true - - - Release\ - Release\ - false - - - - Disabled - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebug - - Level3 - EditAndContinue - - - setargv.obj;%(AdditionalDependencies) - $(OutDir)pgd16cmv.exe - true - $(OutDir)pgd16cmv.pdb - Console - MachineX86 - - - - - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - MultiThreaded - - Level3 - ProgramDatabase - - - setargv.obj;%(AdditionalDependencies) - $(OutDir)../../pgd16cmv.exe - true - Console - true - true - MachineX86 - - - - - - - - - \ No newline at end of file diff --git a/pgd16cmv/pgd16cmv.vcxproj.filters b/pgd16cmv/pgd16cmv.vcxproj.filters deleted file mode 100644 index f0fee13..0000000 --- a/pgd16cmv/pgd16cmv.vcxproj.filters +++ /dev/null @@ -1,22 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx - - - - - ソース ファイル - - - \ No newline at end of file