--- np2/win9x/ini.cpp 2005/03/16 06:05:18 1.35 +++ np2/win9x/ini.cpp 2005/05/16 06:08:22 1.41 @@ -15,26 +15,10 @@ -static BOOL inigetbmp(const UINT8 *ptr, UINT pos) { - return((ptr[pos >> 3] >> (pos & 7)) & 1); -} - -static void inisetbmp(UINT8 *ptr, UINT pos, BOOL set) { - - UINT8 bit; - - ptr += (pos >> 3); - bit = 1 << (pos & 7); - if (set) { - *ptr |= bit; - } - else { - *ptr &= ~bit; - } -} +// ---- user -static void inirdargs16(const OEMCHAR *src, const INITBL *ini) { +static void inirdargs16(const OEMCHAR *src, const PFTBL *ini) { SINT16 *dst; int dsize; @@ -61,19 +45,69 @@ static void inirdargs16(const OEMCHAR *s } } -static void inirdargh8(const OEMCHAR *src, const INITBL *ini) { +static void inirdbyte3(const OEMCHAR *src, const PFTBL *ini) { - UINT8 *dst; - int dsize; - int i; + UINT i; + + for (i=0; i<3; i++) { + if (src[i] == '\0') { + break; + } + if ((((src[i] - '0') & 0xff) < 9) || + (((src[i] - 'A') & 0xdf) < 26)) { + ((UINT8 *)ini->value)[i] = (UINT8)src[i]; + } + } +} + +static void inirdkb(const OEMCHAR *src, const PFTBL *ini) { + + if ((!milstr_extendcmp(src, OEMTEXT("PC98"))) || + (!milstr_cmp(src, OEMTEXT("98")))) { + *(UINT8 *)ini->value = KEY_PC98; + } + else if ((!milstr_extendcmp(src, OEMTEXT("DOS"))) || + (!milstr_cmp(src, OEMTEXT("PCAT"))) || + (!milstr_cmp(src, OEMTEXT("AT")))) { + *(UINT8 *)ini->value = KEY_KEY106; + } + else if ((!milstr_extendcmp(src, OEMTEXT("KEY101"))) || + (!milstr_cmp(src, OEMTEXT("101")))) { + *(UINT8 *)ini->value = KEY_KEY101; + } +} + + +// ---- Use WinAPI + +#if !defined(_UNICODE) +static void bitmapset(UINT8 *ptr, UINT pos, BOOL set) { + + UINT8 bit; + + ptr += (pos >> 3); + bit = 1 << (pos & 7); + if (set) { + *ptr |= bit; + } + else { + *ptr &= ~bit; + } +} + +static BOOL bitmapget(const UINT8 *ptr, UINT pos) { + + return((ptr[pos >> 3] >> (pos & 7)) & 1); +} + +static void binset(UINT8 *bin, UINT binlen, const OEMCHAR *src) { + + UINT i; UINT8 val; BOOL set; OEMCHAR c; - dst = (UINT8 *)ini->value; - dsize = ini->arg; - - for (i=0; ivalue; - arg = ini->arg; - if (arg > 0) { - OEMSPRINTF(tmp, OEMTEXT("%.2x"), ptr[0]); + if (binlen) { + OEMSPRINTF(tmp, OEMTEXT("%.2x"), bin[0]); milstr_ncpy(work, tmp, size); } - for (i=1; ivalue)[i] = (UINT8)src[i]; - } - } -} - -static void inirdkb(const OEMCHAR *src, const INITBL *ini) { - - if ((!milstr_extendcmp(src, OEMTEXT("PC98"))) || - (!milstr_cmp(src, OEMTEXT("98")))) { - *(UINT8 *)ini->value = KEY_PC98; - } - else if ((!milstr_extendcmp(src, OEMTEXT("DOS"))) || - (!milstr_cmp(src, OEMTEXT("PCAT"))) || - (!milstr_cmp(src, OEMTEXT("AT")))) { - *(UINT8 *)ini->value = KEY_KEY106; - } - else if ((!milstr_extendcmp(src, OEMTEXT("KEY101"))) || - (!milstr_cmp(src, OEMTEXT("101")))) { - *(UINT8 *)ini->value = KEY_KEY101; - } -} - - -// ---- - void ini_read(const OEMCHAR *path, const OEMCHAR *title, - const INITBL *tbl, UINT count) { + const PFTBL *tbl, UINT count) { -const INITBL *p; -const INITBL *pterm; -#if defined(OSLANG_UCS2) - OEMCHAR item[10]; -#else -const OEMCHAR *item; -#endif - OEMCHAR work[512]; - UINT32 val; +const PFTBL *p; +const PFTBL *pterm; + OEMCHAR work[512]; + UINT32 val; p = tbl; pterm = tbl + count; while(p < pterm) { -#if defined(OSLANG_UCS2) - oemtext_sjistooem(item, NELEMENTS(item), p->item, (UINT)-1); -#else - item = p->item; -#endif - switch(p->itemtype & INITYPE_MASK) { - case INITYPE_STR: - GetPrivateProfileString(title, item, (OEMCHAR *)p->value, + switch(p->itemtype & PFTYPE_MASK) { + case PFTYPE_STR: + GetPrivateProfileString(title, p->item, (OEMCHAR *)p->value, (OEMCHAR *)p->value, p->arg, path); break; - case INITYPE_BOOL: - GetPrivateProfileString(title, item, + case PFTYPE_BOOL: + GetPrivateProfileString(title, p->item, (*((UINT8 *)p->value))?str_true:str_false, work, NELEMENTS(work), path); *((UINT8 *)p->value) = (!milstr_cmp(work, str_true))?1:0; break; - case INITYPE_BITMAP: - GetPrivateProfileString(title, item, - (inigetbmp((UINT8 *)p->value, p->arg))?str_true:str_false, + case PFTYPE_BITMAP: + GetPrivateProfileString(title, p->item, + (bitmapget((UINT8 *)p->value, p->arg))?str_true:str_false, work, NELEMENTS(work), path); - inisetbmp((UINT8 *)p->value, p->arg, + bitmapset((UINT8 *)p->value, p->arg, (milstr_cmp(work, str_true) == 0)); break; - case INITYPE_ARGS16: - GetPrivateProfileString(title, item, str_null, + case PFTYPE_BIN: + GetPrivateProfileString(title, p->item, str_null, work, NELEMENTS(work), path); - inirdargs16(work, p); + binset((UINT8 *)p->value, p->arg, work); break; - case INITYPE_ARGH8: - GetPrivateProfileString(title, item, str_null, - work, NELEMENTS(work), path); - inirdargh8(work, p); - break; - - case INITYPE_SINT8: - case INITYPE_UINT8: - val = (UINT8)GetPrivateProfileInt(title, item, + case PFTYPE_SINT8: + case PFTYPE_UINT8: + val = (UINT8)GetPrivateProfileInt(title, p->item, *(UINT8 *)p->value, path); *(UINT8 *)p->value = (UINT8)val; break; - case INITYPE_SINT16: - case INITYPE_UINT16: - val = (UINT16)GetPrivateProfileInt(title, item, + case PFTYPE_SINT16: + case PFTYPE_UINT16: + val = (UINT16)GetPrivateProfileInt(title, p->item, *(UINT16 *)p->value, path); *(UINT16 *)p->value = (UINT16)val; break; - case INITYPE_SINT32: - case INITYPE_UINT32: - val = (UINT32)GetPrivateProfileInt(title, item, + case PFTYPE_SINT32: + case PFTYPE_UINT32: + val = (UINT32)GetPrivateProfileInt(title, p->item, *(UINT32 *)p->value, path); *(UINT32 *)p->value = (UINT32)val; break; - case INITYPE_HEX8: + case PFTYPE_HEX8: OEMSPRINTF(work, str_x, *(UINT8 *)p->value), - GetPrivateProfileString(title, item, work, + GetPrivateProfileString(title, p->item, work, work, NELEMENTS(work), path); val = (UINT8)milstr_solveHEX(work); *(UINT8 *)p->value = (UINT8)val; break; - case INITYPE_HEX16: + case PFTYPE_HEX16: OEMSPRINTF(work, str_x, *(UINT16 *)p->value), - GetPrivateProfileString(title, item, work, + GetPrivateProfileString(title, p->item, work, work, NELEMENTS(work), path); val = (UINT16)milstr_solveHEX(work); *(UINT16 *)p->value = (UINT16)val; break; - case INITYPE_HEX32: + case PFTYPE_HEX32: OEMSPRINTF(work, str_x, *(UINT32 *)p->value), - GetPrivateProfileString(title, item, work, + GetPrivateProfileString(title, p->item, work, work, NELEMENTS(work), path); val = (UINT32)milstr_solveHEX(work); *(UINT32 *)p->value = (UINT32)val; break; - case INITYPE_BYTE3: - GetPrivateProfileString(title, item, str_null, + case PFTYPE_ARGS16: + GetPrivateProfileString(title, p->item, str_null, + work, NELEMENTS(work), path); + inirdargs16(work, p); + break; + + case PFTYPE_BYTE3: + GetPrivateProfileString(title, p->item, str_null, work, NELEMENTS(work), path); inirdbyte3(work, p); break; - case INITYPE_KB: - GetPrivateProfileString(title, item, str_null, + case PFTYPE_KB: + GetPrivateProfileString(title, p->item, str_null, work, NELEMENTS(work), path); inirdkb(work, p); break; @@ -279,65 +261,70 @@ const OEMCHAR *item; } void ini_write(const OEMCHAR *path, const OEMCHAR *title, - const INITBL *tbl, UINT count) { + const PFTBL *tbl, UINT count) { -const INITBL *p; -const INITBL *pterm; +const PFTBL *p; +const PFTBL *pterm; const OEMCHAR *set; OEMCHAR work[512]; p = tbl; pterm = tbl + count; while(p < pterm) { - if (!(p->itemtype & INIFLAG_RO)) { + if (!(p->itemtype & PFFLAG_RO)) { work[0] = '\0'; set = work; - switch(p->itemtype & INITYPE_MASK) { - case INITYPE_STR: + switch(p->itemtype & PFTYPE_MASK) { + case PFTYPE_STR: set = (OEMCHAR *)p->value; break; - case INITYPE_BOOL: + case PFTYPE_BOOL: set = (*((UINT8 *)p->value))?str_true:str_false; break; - case INITYPE_ARGH8: - iniwrsetargh8(work, NELEMENTS(work), p); + case PFTYPE_BITMAP: + set = (bitmapget((UINT8 *)p->value, p->arg))? + str_true:str_false; + break; + + case PFTYPE_BIN: + binget(work, NELEMENTS(work), (UINT8 *)p->value, p->arg); break; - case INITYPE_SINT8: + case PFTYPE_SINT8: OEMSPRINTF(work, str_d, *((SINT8 *)p->value)); break; - case INITYPE_SINT16: + case PFTYPE_SINT16: OEMSPRINTF(work, str_d, *((SINT16 *)p->value)); break; - case INITYPE_SINT32: + case PFTYPE_SINT32: OEMSPRINTF(work, str_d, *((SINT32 *)p->value)); break; - case INITYPE_UINT8: + case PFTYPE_UINT8: OEMSPRINTF(work, str_u, *((UINT8 *)p->value)); break; - case INITYPE_UINT16: + case PFTYPE_UINT16: OEMSPRINTF(work, str_u, *((UINT16 *)p->value)); break; - case INITYPE_UINT32: + case PFTYPE_UINT32: OEMSPRINTF(work, str_u, *((UINT32 *)p->value)); break; - case INITYPE_HEX8: + case PFTYPE_HEX8: OEMSPRINTF(work, str_x, *((UINT8 *)p->value)); break; - case INITYPE_HEX16: + case PFTYPE_HEX16: OEMSPRINTF(work, str_x, *((UINT16 *)p->value)); break; - case INITYPE_HEX32: + case PFTYPE_HEX32: OEMSPRINTF(work, str_x, *((UINT32 *)p->value)); break; @@ -346,19 +333,48 @@ const OEMCHAR *set; break; } if (set) { -#if defined(OSLANG_UCS2) - OEMCHAR item[10]; - oemtext_sjis2oem(item, NELEMENTS(item), p->item, (UINT)-1); - WritePrivateProfileString(title, item, set, path); -#else WritePrivateProfileString(title, p->item, set, path); -#endif } } p++; } } +#else // !defined(_UNICODE) + +// ---- Use profile.c + +static void pfread(const PFTBL *item, const OEMCHAR *string) { + + switch(item->itemtype & PFTYPE_MASK) { + case PFTYPE_ARGS16: + inirdargs16(string, item); + break; + + case PFTYPE_BYTE3: + inirdbyte3(string, item); + break; + + case PFTYPE_KB: + inirdkb(string, item); + break; + } +} + +void ini_read(const OEMCHAR *path, const OEMCHAR *title, + const PFTBL *tbl, UINT count) { + + profile_iniread(path, title, tbl, count, pfread); +} + +void ini_write(const OEMCHAR *path, const OEMCHAR *title, + const PFTBL *tbl, UINT count) { + + profile_iniwrite(path, title, tbl, count, NULL); +} + +#endif // !defined(_UNICODE) + // ---- @@ -369,171 +385,170 @@ static const OEMCHAR ini_title[] = OEMTE #endif enum { - INIRO_STR = INITYPE_STR + INIFLAG_RO, - INIRO_BOOL = INITYPE_BOOL + INIFLAG_RO, - INIRO_BITMAP = INITYPE_BITMAP + INIFLAG_RO, - INIRO_UINT8 = INITYPE_UINT8 + INIFLAG_RO, - INIMAX_UINT8 = INITYPE_UINT8 + INIFLAG_MAX, - INIAND_UINT8 = INITYPE_UINT8 + INIFLAG_AND, - INIROMAX_SINT32 = INITYPE_SINT32 + INIFLAG_RO + INIFLAG_MAX, - INIROAND_HEX32 = INITYPE_HEX32 + INIFLAG_RO + INIFLAG_AND, - - INIRO_BYTE3 = INITYPE_BYTE3 + INIFLAG_RO, - INIRO_KB = INITYPE_KB + INIFLAG_RO + PFRO_STR = PFFLAG_RO + PFTYPE_STR, + PFRO_BOOL = PFFLAG_RO + PFTYPE_BOOL, + PFRO_BITMAP = PFFLAG_RO + PFTYPE_BITMAP, + PFRO_UINT8 = PFFLAG_RO + PFTYPE_UINT8, + PFRO_SINT32 = PFFLAG_RO + PFTYPE_SINT32, + PFRO_HEX32 = PFFLAG_RO + PFTYPE_HEX32, + PFRO_BYTE3 = PFFLAG_RO + PFTYPE_BYTE3, + PFRO_KB = PFFLAG_RO + PFTYPE_KB }; -static const INITBL iniitem[] = { - {"np2title", INIRO_STR, np2oscfg.titles, - NELEMENTS(np2oscfg.titles)}, - {"np2winid", INIRO_BYTE3, np2oscfg.winid, 0}, - {"WindposX", INITYPE_SINT32, &np2oscfg.winx, 0}, - {"WindposY", INITYPE_SINT32, &np2oscfg.winy, 0}, - {"paddingx", INIROMAX_SINT32, &np2oscfg.paddingx, 32}, - {"paddingy", INIROMAX_SINT32, &np2oscfg.paddingy, 32}, - {"Win_Snap", INITYPE_BOOL, &np2oscfg.WINSNAP, 0}, - - {"FDfolder", INITYPE_STR, fddfolder, MAX_PATH}, - {"HDfolder", INITYPE_STR, hddfolder, MAX_PATH}, - {"bmap_Dir", INITYPE_STR, bmpfilefolder, MAX_PATH}, - {"fontfile", INITYPE_STR, np2cfg.fontfile, MAX_PATH}, - {"biospath", INIRO_STR, np2cfg.biospath, MAX_PATH}, - {"hdrvroot", INIRO_STR, np2cfg.hdrvroot, MAX_PATH}, - {"hdrv_acc", INIRO_UINT8, &np2cfg.hdrvacc, 0}, - - {"pc_model", INITYPE_STR, &np2cfg.model, - NELEMENTS(np2cfg.model)}, - {"clk_base", INITYPE_UINT32, &np2cfg.baseclock, 0}, - {"clk_mult", INITYPE_UINT32, &np2cfg.multiple, 0}, - - {"DIPswtch", INITYPE_ARGH8, np2cfg.dipsw, 3}, - {"MEMswtch", INITYPE_ARGH8, np2cfg.memsw, 8}, - {"ExMemory", INIMAX_UINT8, &np2cfg.EXTMEM, 63}, - {"ITF_WORK", INIRO_BOOL, &np2cfg.ITF_WORK, 0}, +static const PFTBL iniitem[] = { + PFSTR("np2title", PFRO_STR, np2oscfg.titles), + PFVAL("np2winid", PFRO_BYTE3, np2oscfg.winid), + PFVAL("WindposX", PFTYPE_SINT32, &np2oscfg.winx), + PFVAL("WindposY", PFTYPE_SINT32, &np2oscfg.winy), + PFMAX("paddingx", PFRO_SINT32, &np2oscfg.paddingx, 32), + PFMAX("paddingy", PFRO_SINT32, &np2oscfg.paddingy, 32), + PFVAL("Win_Snap", PFTYPE_BOOL, &np2oscfg.WINSNAP), + + PFSTR("FDfolder", PFTYPE_STR, fddfolder), + PFSTR("HDfolder", PFTYPE_STR, hddfolder), + PFSTR("bmap_Dir", PFTYPE_STR, bmpfilefolder), + PFSTR("fontfile", PFTYPE_STR, np2cfg.fontfile), + PFSTR("biospath", PFRO_STR, np2cfg.biospath), + +#if defined(SUPPORT_HOSTDRV) + PFSTR("hdrvroot", PFRO_STR, np2cfg.hdrvroot), + PFVAL("hdrv_acc", PFRO_UINT8, &np2cfg.hdrvacc), +#endif + + PFSTR("pc_model", PFTYPE_STR, np2cfg.model), + PFVAL("clk_base", PFTYPE_UINT32, &np2cfg.baseclock), + PFVAL("clk_mult", PFTYPE_UINT32, &np2cfg.multiple), + + PFEXT("DIPswtch", PFTYPE_BIN, np2cfg.dipsw, 3), + PFEXT("MEMswtch", PFTYPE_BIN, np2cfg.memsw, 8), + PFMAX("ExMemory", PFTYPE_UINT8, &np2cfg.EXTMEM, 63), + PFVAL("ITF_WORK", PFRO_BOOL, &np2cfg.ITF_WORK), - {"HDD1FILE", INITYPE_STR, np2cfg.sasihdd[0], MAX_PATH}, - {"HDD2FILE", INITYPE_STR, np2cfg.sasihdd[1], MAX_PATH}, + PFSTR("HDD1FILE", PFTYPE_STR, np2cfg.sasihdd[0]), + PFSTR("HDD2FILE", PFTYPE_STR, np2cfg.sasihdd[1]), #if defined(SUPPORT_SCSI) - {"SCSIHDD0", INITYPE_STR, np2cfg.scsihdd[0], MAX_PATH}, - {"SCSIHDD1", INITYPE_STR, np2cfg.scsihdd[1], MAX_PATH}, - {"SCSIHDD2", INITYPE_STR, np2cfg.scsihdd[2], MAX_PATH}, - {"SCSIHDD3", INITYPE_STR, np2cfg.scsihdd[3], MAX_PATH}, + PFSTR("SCSIHDD0", PFTYPE_STR, np2cfg.scsihdd[0]), + PFSTR("SCSIHDD1", PFTYPE_STR, np2cfg.scsihdd[1]), + PFSTR("SCSIHDD2", PFTYPE_STR, np2cfg.scsihdd[2]), + PFSTR("SCSIHDD3", PFTYPE_STR, np2cfg.scsihdd[3]), #endif - {"SampleHz", INITYPE_UINT16, &np2cfg.samplingrate, 0}, - {"Latencys", INITYPE_UINT16, &np2cfg.delayms, 0}, - {"SNDboard", INITYPE_HEX8, &np2cfg.SOUND_SW, 0}, - {"BEEP_vol", INIAND_UINT8, &np2cfg.BEEP_VOL, 3}, - {"xspeaker", INIRO_BOOL, &np2cfg.snd_x, 0}, - - {"SND14vol", INITYPE_ARGH8, np2cfg.vol14, 6}, -// {"opt14BRD", INITYPE_ARGH8, np2cfg.snd14opt, 3}, - {"opt26BRD", INITYPE_HEX8, &np2cfg.snd26opt, 0}, - {"opt86BRD", INITYPE_HEX8, &np2cfg.snd86opt, 0}, - {"optSPBRD", INITYPE_HEX8, &np2cfg.spbopt, 0}, - {"optSPBVR", INITYPE_HEX8, &np2cfg.spb_vrc, 0}, - {"optSPBVL", INIMAX_UINT8, &np2cfg.spb_vrl, 24}, - {"optSPB_X", INITYPE_BOOL, &np2cfg.spb_x, 0}, - {"optMPU98", INITYPE_HEX8, &np2cfg.mpuopt, 0}, - - {"volume_F", INIMAX_UINT8, &np2cfg.vol_fm, 128}, - {"volume_S", INIMAX_UINT8, &np2cfg.vol_ssg, 128}, - {"volume_A", INIMAX_UINT8, &np2cfg.vol_adpcm, 128}, - {"volume_P", INIMAX_UINT8, &np2cfg.vol_pcm, 128}, - {"volume_R", INIMAX_UINT8, &np2cfg.vol_rhythm, 128}, - - {"Seek_Snd", INITYPE_BOOL, &np2cfg.MOTOR, 0}, - {"Seek_Vol", INIMAX_UINT8, &np2cfg.MOTORVOL, 100}, - - {"btnRAPID", INITYPE_BOOL, &np2cfg.BTN_RAPID, 0}, - {"btn_MODE", INITYPE_BOOL, &np2cfg.BTN_MODE, 0}, - {"Mouse_sw", INITYPE_BOOL, &np2oscfg.MOUSE_SW, 0}, - {"MS_RAPID", INITYPE_BOOL, &np2cfg.MOUSERAPID, 0}, - - {"backgrnd", INIAND_UINT8, &np2oscfg.background, 3}, - {"VRAMwait", INITYPE_ARGH8, np2cfg.wait, 6}, - {"DspClock", INIAND_UINT8, &np2oscfg.DISPCLK, 3}, - {"DispSync", INITYPE_BOOL, &np2cfg.DISPSYNC, 0}, - {"Real_Pal", INITYPE_BOOL, &np2cfg.RASTER, 0}, - {"RPal_tim", INIMAX_UINT8, &np2cfg.realpal, 64}, - {"s_NOWAIT", INITYPE_BOOL, &np2oscfg.NOWAIT, 0}, - {"SkpFrame", INITYPE_UINT8, &np2oscfg.DRAW_SKIP, 0}, - {"uPD72020", INITYPE_BOOL, &np2cfg.uPD72020, 0}, - {"GRCG_EGC", INIAND_UINT8, &np2cfg.grcg, 3}, - {"color16b", INITYPE_BOOL, &np2cfg.color16, 0}, - {"skipline", INITYPE_BOOL, &np2cfg.skipline, 0}, - {"skplight", INITYPE_UINT16, &np2cfg.skiplight, 0}, - {"LCD_MODE", INIAND_UINT8, &np2cfg.LCD_MODE, 0x03}, - {"BG_COLOR", INIROAND_HEX32, &np2cfg.BG_COLOR, 0xffffff}, - {"FG_COLOR", INIROAND_HEX32, &np2cfg.FG_COLOR, 0xffffff}, - - {"pc9861_e", INITYPE_BOOL, &np2cfg.pc9861enable, 0}, - {"pc9861_s", INITYPE_ARGH8, np2cfg.pc9861sw, 3}, - {"pc9861_j", INITYPE_ARGH8, np2cfg.pc9861jmp, 6}, - - {"calendar", INITYPE_BOOL, &np2cfg.calendar, 0}, - {"USE144FD", INITYPE_BOOL, &np2cfg.usefd144, 0}, - {"FDDRIVE1", INIRO_BITMAP, &np2cfg.fddequip, 0}, - {"FDDRIVE2", INIRO_BITMAP, &np2cfg.fddequip, 1}, - {"FDDRIVE3", INIRO_BITMAP, &np2cfg.fddequip, 2}, - {"FDDRIVE4", INIRO_BITMAP, &np2cfg.fddequip, 3}, - + PFVAL("SampleHz", PFTYPE_UINT16, &np2cfg.samplingrate), + PFVAL("Latencys", PFTYPE_UINT16, &np2cfg.delayms), + PFVAL("SNDboard", PFTYPE_HEX8, &np2cfg.SOUND_SW), + PFAND("BEEP_vol", PFTYPE_UINT8, &np2cfg.BEEP_VOL, 3), + PFVAL("xspeaker", PFRO_BOOL, &np2cfg.snd_x), + + PFEXT("SND14vol", PFTYPE_BIN, np2cfg.vol14, 6), +// PFEXT("opt14BRD", PFTYPE_BIN, np2cfg.snd14opt, 3), + PFVAL("opt26BRD", PFTYPE_HEX8, &np2cfg.snd26opt), + PFVAL("opt86BRD", PFTYPE_HEX8, &np2cfg.snd86opt), + PFVAL("optSPBRD", PFTYPE_HEX8, &np2cfg.spbopt), + PFVAL("optSPBVR", PFTYPE_HEX8, &np2cfg.spb_vrc), + PFMAX("optSPBVL", PFTYPE_UINT8, &np2cfg.spb_vrl, 24), + PFVAL("optSPB_X", PFTYPE_BOOL, &np2cfg.spb_x), + PFVAL("optMPU98", PFTYPE_HEX8, &np2cfg.mpuopt), + + PFMAX("volume_F", PFTYPE_UINT8, &np2cfg.vol_fm, 128), + PFMAX("volume_S", PFTYPE_UINT8, &np2cfg.vol_ssg, 128), + PFMAX("volume_A", PFTYPE_UINT8, &np2cfg.vol_adpcm, 128), + PFMAX("volume_P", PFTYPE_UINT8, &np2cfg.vol_pcm, 128), + PFMAX("volume_R", PFTYPE_UINT8, &np2cfg.vol_rhythm, 128), + + PFVAL("Seek_Snd", PFTYPE_BOOL, &np2cfg.MOTOR), + PFMAX("Seek_Vol", PFTYPE_UINT8, &np2cfg.MOTORVOL, 100), + + PFVAL("btnRAPID", PFTYPE_BOOL, &np2cfg.BTN_RAPID), + PFVAL("btn_MODE", PFTYPE_BOOL, &np2cfg.BTN_MODE), + PFVAL("Mouse_sw", PFTYPE_BOOL, &np2oscfg.MOUSE_SW), + PFVAL("MS_RAPID", PFTYPE_BOOL, &np2cfg.MOUSERAPID), + + PFAND("backgrnd", PFTYPE_UINT8, &np2oscfg.background, 3), + PFEXT("VRAMwait", PFTYPE_BIN, np2cfg.wait, 6), + PFAND("DspClock", PFTYPE_UINT8, &np2oscfg.DISPCLK, 3), + PFVAL("DispSync", PFTYPE_BOOL, &np2cfg.DISPSYNC), + PFVAL("Real_Pal", PFTYPE_BOOL, &np2cfg.RASTER), + PFMAX("RPal_tim", PFTYPE_UINT8, &np2cfg.realpal, 64), + PFVAL("s_NOWAIT", PFTYPE_BOOL, &np2oscfg.NOWAIT), + PFVAL("SkpFrame", PFTYPE_UINT8, &np2oscfg.DRAW_SKIP), + PFVAL("uPD72020", PFTYPE_BOOL, &np2cfg.uPD72020), + PFAND("GRCG_EGC", PFTYPE_UINT8, &np2cfg.grcg, 3), + PFVAL("color16b", PFTYPE_BOOL, &np2cfg.color16), + PFVAL("skipline", PFTYPE_BOOL, &np2cfg.skipline), + PFVAL("skplight", PFTYPE_UINT16, &np2cfg.skiplight), + PFAND("LCD_MODE", PFTYPE_UINT8, &np2cfg.LCD_MODE, 0x03), + PFAND("BG_COLOR", PFRO_HEX32, &np2cfg.BG_COLOR, 0xffffff), + PFAND("FG_COLOR", PFRO_HEX32, &np2cfg.FG_COLOR, 0xffffff), + + PFVAL("pc9861_e", PFTYPE_BOOL, &np2cfg.pc9861enable), + PFEXT("pc9861_s", PFTYPE_BIN, np2cfg.pc9861sw, 3), + PFEXT("pc9861_j", PFTYPE_BIN, np2cfg.pc9861jmp, 6), + + PFVAL("calendar", PFTYPE_BOOL, &np2cfg.calendar), + PFVAL("USE144FD", PFTYPE_BOOL, &np2cfg.usefd144), + PFEXT("FDDRIVE1", PFRO_BITMAP, &np2cfg.fddequip, 0), + PFEXT("FDDRIVE2", PFRO_BITMAP, &np2cfg.fddequip, 1), + PFEXT("FDDRIVE3", PFRO_BITMAP, &np2cfg.fddequip, 2), + PFEXT("FDDRIVE4", PFRO_BITMAP, &np2cfg.fddequip, 3), // OS°Í¸¡© - {"keyboard", INIRO_KB, &np2oscfg.KEYBOARD, 0}, - {"F12_COPY", INITYPE_UINT8, &np2oscfg.F12COPY, 0}, - {"Joystick", INITYPE_BOOL, &np2oscfg.JOYPAD1, 0}, - {"Joy1_btn", INITYPE_ARGH8, np2oscfg.JOY1BTN, 4}, - - {"clocknow", INITYPE_UINT8, &np2oscfg.clk_x, 0}, - {"clockfnt", INITYPE_UINT8, &np2oscfg.clk_fnt, 0}, - {"clock_up", INIROAND_HEX32, &np2oscfg.clk_color1, 0xffffff}, - {"clock_dn", INIROAND_HEX32, &np2oscfg.clk_color2, 0xffffff}, - - {"use_sstp", INITYPE_BOOL, &np2oscfg.sstp, 0}, - {"sstpport", INITYPE_UINT16, &np2oscfg.sstpport, 0}, - {"comfirm_", INITYPE_BOOL, &np2oscfg.comfirm, 0}, - {"shortcut", INITYPE_HEX8, &np2oscfg.shortcut, 0}, // ver0.30 - - {"mpu98map", INITYPE_STR, np2oscfg.mpu.mout, MAXPNAMELEN}, - {"mpu98min", INITYPE_STR, np2oscfg.mpu.min, MAXPNAMELEN}, - {"mpu98mdl", INITYPE_STR, np2oscfg.mpu.mdl, 64}, - {"mpu98def", INITYPE_STR, np2oscfg.mpu.def, MAX_PATH}, - - {"com1port", INIMAX_UINT8, &np2oscfg.com1.port, 5}, // ver0.34 - {"com1para", INITYPE_UINT8, &np2oscfg.com1.param, 0}, - {"com1_bps", INITYPE_UINT32, &np2oscfg.com1.speed, 0}, - {"com1mmap", INITYPE_STR, np2oscfg.com1.mout, MAXPNAMELEN}, - {"com1mmdl", INITYPE_STR, np2oscfg.com1.mdl, 64}, - {"com1mdef", INITYPE_STR, np2oscfg.com1.def, MAX_PATH}, - - {"com2port", INIMAX_UINT8, &np2oscfg.com2.port, 5}, // ver0.34 - {"com2para", INITYPE_UINT8, &np2oscfg.com2.param, 0}, - {"com2_bps", INITYPE_UINT32, &np2oscfg.com2.speed, 0}, - {"com2mmap", INITYPE_STR, np2oscfg.com2.mout, MAXPNAMELEN}, - {"com2mmdl", INITYPE_STR, np2oscfg.com2.mdl, 64}, - {"com2mdef", INITYPE_STR, np2oscfg.com2.def, MAX_PATH}, - - {"com3port", INIMAX_UINT8, &np2oscfg.com3.port, 5}, // ver0.34 - {"com3para", INITYPE_UINT8, &np2oscfg.com3.param, 0}, - {"com3_bps", INITYPE_UINT32, &np2oscfg.com3.speed, 0}, - {"com3mmap", INITYPE_STR, np2oscfg.com3.mout, MAXPNAMELEN}, - {"com3mmdl", INITYPE_STR, np2oscfg.com3.mdl, 64}, - {"com3mdef", INITYPE_STR, np2oscfg.com3.def, MAX_PATH}, - - {"force400", INIRO_BOOL, &np2oscfg.force400, 0}, - {"e_resume", INITYPE_BOOL, &np2oscfg.resume, 0}, - {"STATSAVE", INIRO_BOOL, &np2oscfg.statsave, 0}, - {"nousemmx", INITYPE_BOOL, &np2oscfg.disablemmx, 0}, // ver0.36 - {"windtype", INITYPE_UINT8, &np2oscfg.wintype, 0}, - {"toolwind", INITYPE_BOOL, &np2oscfg.toolwin, 0}, // ver0.38 - {"keydispl", INITYPE_BOOL, &np2oscfg.keydisp, 0}, - {"jast_snd", INITYPE_BOOL, &np2oscfg.jastsnd, 0}, // ver0.73 - {"useromeo", INITYPE_BOOL, &np2oscfg.useromeo, 0}, // ver0.74 - {"thickfrm", INITYPE_BOOL, &np2oscfg.thickframe, 0}, // ver0.77 - {"xrollkey", INIRO_BOOL, &np2oscfg.xrollkey, 0}, // ver0.78 - {"fscrnbpp", INIRO_UINT8, &np2oscfg.fscrnbpp, 0}, - {"I286SAVE", INIRO_BOOL, &np2oscfg.I286SAVE, 0}}; + PFVAL("keyboard", PFRO_KB, &np2oscfg.KEYBOARD), + PFVAL("F12_COPY", PFTYPE_UINT8, &np2oscfg.F12COPY), + PFVAL("Joystick", PFTYPE_BOOL, &np2oscfg.JOYPAD1), + PFEXT("Joy1_btn", PFTYPE_BIN, np2oscfg.JOY1BTN, 4), + + PFVAL("clocknow", PFTYPE_UINT8, &np2oscfg.clk_x), + PFVAL("clockfnt", PFTYPE_UINT8, &np2oscfg.clk_fnt), + PFAND("clock_up", PFRO_HEX32, &np2oscfg.clk_color1, 0xffffff), + PFAND("clock_dn", PFRO_HEX32, &np2oscfg.clk_color2, 0xffffff), + + PFVAL("use_sstp", PFTYPE_BOOL, &np2oscfg.sstp), + PFVAL("sstpport", PFTYPE_UINT16, &np2oscfg.sstpport), + PFVAL("comfirm_", PFTYPE_BOOL, &np2oscfg.comfirm), + PFVAL("shortcut", PFTYPE_HEX8, &np2oscfg.shortcut), + + PFSTR("mpu98map", PFTYPE_STR, np2oscfg.mpu.mout), + PFSTR("mpu98min", PFTYPE_STR, np2oscfg.mpu.min), + PFSTR("mpu98mdl", PFTYPE_STR, np2oscfg.mpu.mdl), + PFSTR("mpu98def", PFTYPE_STR, np2oscfg.mpu.def), + + PFMAX("com1port", PFTYPE_UINT8, &np2oscfg.com1.port, 5), + PFVAL("com1para", PFTYPE_UINT8, &np2oscfg.com1.param), + PFVAL("com1_bps", PFTYPE_UINT32, &np2oscfg.com1.speed), + PFSTR("com1mmap", PFTYPE_STR, np2oscfg.com1.mout), + PFSTR("com1mmdl", PFTYPE_STR, np2oscfg.com1.mdl), + PFSTR("com1mdef", PFTYPE_STR, np2oscfg.com1.def), + + PFMAX("com2port", PFTYPE_UINT8, &np2oscfg.com2.port, 5), + PFVAL("com2para", PFTYPE_UINT8, &np2oscfg.com2.param), + PFVAL("com2_bps", PFTYPE_UINT32, &np2oscfg.com2.speed), + PFSTR("com2mmap", PFTYPE_STR, np2oscfg.com2.mout), + PFSTR("com2mmdl", PFTYPE_STR, np2oscfg.com2.mdl), + PFSTR("com2mdef", PFTYPE_STR, np2oscfg.com2.def), + + PFMAX("com3port", PFTYPE_UINT8, &np2oscfg.com3.port, 5), + PFVAL("com3para", PFTYPE_UINT8, &np2oscfg.com3.param), + PFVAL("com3_bps", PFTYPE_UINT32, &np2oscfg.com3.speed), + PFSTR("com3mmap", PFTYPE_STR, np2oscfg.com3.mout), + PFSTR("com3mmdl", PFTYPE_STR, np2oscfg.com3.mdl), + PFSTR("com3mdef", PFTYPE_STR, np2oscfg.com3.def), + + PFVAL("force400", PFRO_BOOL, &np2oscfg.force400), + PFVAL("e_resume", PFTYPE_BOOL, &np2oscfg.resume), + PFVAL("STATSAVE", PFRO_BOOL, &np2oscfg.statsave), + PFVAL("nousemmx", PFTYPE_BOOL, &np2oscfg.disablemmx), + PFVAL("windtype", PFTYPE_UINT8, &np2oscfg.wintype), + PFVAL("toolwind", PFTYPE_BOOL, &np2oscfg.toolwin), + PFVAL("keydispl", PFTYPE_BOOL, &np2oscfg.keydisp), + PFVAL("jast_snd", PFTYPE_BOOL, &np2oscfg.jastsnd), + PFVAL("useromeo", PFTYPE_BOOL, &np2oscfg.useromeo), + PFVAL("thickfrm", PFTYPE_BOOL, &np2oscfg.thickframe), + PFVAL("xrollkey", PFRO_BOOL, &np2oscfg.xrollkey), + PFVAL("fscrnbpp", PFRO_UINT8, &np2oscfg.fscrnbpp), + PFVAL("I286SAVE", PFRO_BOOL, &np2oscfg.I286SAVE)}; + +static const OEMCHAR ext_ini[] = OEMTEXT(".ini"); void initgetfile(OEMCHAR *path, UINT size) { @@ -550,12 +565,12 @@ const OEMCHAR *ext; } ext = file_getext(path); if (ext[0] != '\0') { - file_catname(path, OEMTEXT(".ini"), size); + file_catname(path, ext_ini, size); } } else { file_cutext(path); - file_catname(path, OEMTEXT(".ini"), size); + file_catname(path, ext_ini, size); } }