--- np2/win9x/ini.cpp 2004/01/05 05:04:54 1.18 +++ np2/win9x/ini.cpp 2004/03/31 14:02:51 1.27 @@ -2,6 +2,7 @@ #include #include #include "strres.h" +#include "profile.h" #include "np2.h" #include "np2arg.h" #include "dosio.h" @@ -10,6 +11,26 @@ #include "pccore.h" + +static BOOL inigetbmp(const BYTE *ptr, UINT pos) { + + return((ptr[pos >> 3] >> (pos & 7)) & 1); +} + +static void inisetbmp(BYTE *ptr, UINT pos, BOOL set) { + + UINT8 bit; + + ptr += (pos >> 3); + bit = 1 << (pos & 7); + if (set) { + *ptr |= bit; + } + else { + *ptr &= ~bit; + } +} + static void inirdargs16(const char *src, const INITBL *ini) { SINT16 *dst; @@ -163,6 +184,14 @@ const INITBL *pterm; *((BYTE *)p->value) = (!milstr_cmp(work, str_true))?1:0; break; + case INITYPE_BITMAP: + GetPrivateProfileString(title, p->item, + (inigetbmp((BYTE *)p->value, p->arg))?str_true:str_false, + work, sizeof(work), path); + inisetbmp((BYTE *)p->value, p->arg, + (milstr_cmp(work, str_true) == 0)); + break; + case INITYPE_ARGS16: GetPrivateProfileString(title, p->item, str_null, work, sizeof(work), path); @@ -179,7 +208,7 @@ const INITBL *pterm; case INITYPE_UINT8: val = (BYTE)GetPrivateProfileInt(title, p->item, *(BYTE *)p->value, path); - *(BYTE *)p->value = (BYTE)val; + *(UINT8 *)p->value = (UINT8)val; break; case INITYPE_SINT16: @@ -201,7 +230,7 @@ const INITBL *pterm; GetPrivateProfileString(title, p->item, work, work, sizeof(work), path); val = (BYTE)milstr_solveHEX(work); - *(BYTE *)p->value = (BYTE)val; + *(UINT8 *)p->value = (UINT8)val; break; case INITYPE_HEX16: @@ -217,7 +246,7 @@ const INITBL *pterm; GetPrivateProfileString(title, p->item, work, work, sizeof(work), path); val = (UINT32)milstr_solveHEX(work); - *(UINT16 *)p->value = (UINT32)val; + *(UINT32 *)p->value = (UINT32)val; break; case INITYPE_BYTE3: @@ -264,7 +293,7 @@ const char *set; break; case INITYPE_SINT8: - SPRINTF(work, str_d, *((char *)p->value)); + SPRINTF(work, str_d, *((SINT8 *)p->value)); break; case INITYPE_SINT16: @@ -276,7 +305,7 @@ const char *set; break; case INITYPE_UINT8: - SPRINTF(work, str_u, *((BYTE *)p->value)); + SPRINTF(work, str_u, *((UINT8 *)p->value)); break; case INITYPE_UINT16: @@ -288,7 +317,7 @@ const char *set; break; case INITYPE_HEX8: - SPRINTF(work, str_x, *((BYTE *)p->value)); + SPRINTF(work, str_x, *((UINT8 *)p->value)); break; case INITYPE_HEX16: @@ -319,6 +348,8 @@ static const char ini_title[] = "NekoPro 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, @@ -343,6 +374,8 @@ static const INITBL iniitem[] = { {"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, sizeof(np2cfg.model)}, @@ -354,9 +387,14 @@ static const INITBL iniitem[] = { {"ExMemory", INIMAX_UINT8, &np2cfg.EXTMEM, 13}, {"ITF_WORK", INIRO_BOOL, &np2cfg.ITF_WORK, 0}, - {"HDD1FILE", INITYPE_STR, np2cfg.hddfile[0], MAX_PATH}, - {"HDD2FILE", INITYPE_STR, np2cfg.hddfile[1], MAX_PATH}, -// {"Removabl", INI_EX|1, 0, &np2cfg.REMOVEHD, 0}, + {"HDD1FILE", INITYPE_STR, np2cfg.sasihdd[0], MAX_PATH}, + {"HDD2FILE", INITYPE_STR, np2cfg.sasihdd[1], MAX_PATH}, +#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}, +#endif {"SampleHz", INITYPE_UINT16, &np2cfg.samplingrate, 0}, {"Latencys", INITYPE_UINT16, &np2cfg.delayms, 0}, @@ -372,7 +410,7 @@ static const INITBL iniitem[] = { {"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}, + {"optMPU98", INITYPE_HEX8, &np2cfg.mpuopt, 0}, {"volume_F", INIMAX_UINT8, &np2cfg.vol_fm, 128}, {"volume_S", INIMAX_UINT8, &np2cfg.vol_ssg, 128}, @@ -411,6 +449,11 @@ static const INITBL iniitem[] = { {"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}, + // OS°Í¸¡© {"keyboard", INIRO_KB, &np2oscfg.KEYBOARD, 0}, @@ -462,6 +505,7 @@ static const INITBL iniitem[] = { {"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 {"I286SAVE", INIRO_BOOL, &np2oscfg.I286SAVE, 0}};