|
|
| version 1.1, 2004/08/01 05:31:31 | version 1.6, 2004/08/08 09:12:06 |
|---|---|
| Line 3 | Line 3 |
| #include <io.h> | #include <io.h> |
| #include "strres.h" | #include "strres.h" |
| #include "xmil.h" | #include "xmil.h" |
| #include "oemtext.h" | |
| #include "dosio.h" | #include "dosio.h" |
| #include "ini.h" | #include "ini.h" |
| #include "pccore.h" | #include "pccore.h" |
| Line 13 void ini_read(const OEMCHAR *path, const | Line 14 void ini_read(const OEMCHAR *path, const |
| const INITBL *p; | const INITBL *p; |
| const INITBL *pterm; | const INITBL *pterm; |
| #if defined(OSLANG_UCS2) | |
| OEMCHAR item[10]; | |
| #else | |
| const OEMCHAR *item; | |
| #endif | |
| OEMCHAR work[512]; | OEMCHAR work[512]; |
| UINT32 val; | UINT32 val; |
| p = tbl; | p = tbl; |
| pterm = tbl + count; | pterm = tbl + count; |
| while(p < pterm) { | while(p < pterm) { |
| #if defined(OSLANG_UCS2) | |
| oemtext_sjis2oem(item, NELEMENTS(item), p->item, (UINT)-1); | |
| #else | |
| item = p->item; | |
| #endif | |
| switch(p->itemtype & INITYPE_MASK) { | switch(p->itemtype & INITYPE_MASK) { |
| case INITYPE_STR: | case INITYPE_STR: |
| GetPrivateProfileString(title, p->item, (OEMCHAR *)p->value, | GetPrivateProfileString(title, item, (OEMCHAR *)p->value, |
| (OEMCHAR *)p->value, p->arg, path); | (OEMCHAR *)p->value, p->arg, path); |
| break; | break; |
| case INITYPE_BOOL: | case INITYPE_BOOL: |
| GetPrivateProfileString(title, p->item, | GetPrivateProfileString(title, item, |
| (*((UINT8 *)p->value))?str_true:str_false, | (*((UINT8 *)p->value))?str_true:str_false, |
| work, NELEMENTS(work), path); | work, NELEMENTS(work), path); |
| *((UINT8 *)p->value) = (!milstr_cmp(work, str_true))?1:0; | *((UINT8 *)p->value) = (!milstr_cmp(work, str_true))?1:0; |
| Line 34 const INITBL *pterm; | Line 45 const INITBL *pterm; |
| case INITYPE_SINT8: | case INITYPE_SINT8: |
| case INITYPE_UINT8: | case INITYPE_UINT8: |
| val = (UINT8)GetPrivateProfileInt(title, p->item, | val = (UINT8)GetPrivateProfileInt(title, item, |
| *(UINT8 *)p->value, path); | *(UINT8 *)p->value, path); |
| *(UINT8 *)p->value = (UINT8)val; | *(UINT8 *)p->value = (UINT8)val; |
| break; | break; |
| case INITYPE_SINT16: | case INITYPE_SINT16: |
| case INITYPE_UINT16: | case INITYPE_UINT16: |
| val = (UINT16)GetPrivateProfileInt(title, p->item, | val = (UINT16)GetPrivateProfileInt(title, item, |
| *(UINT16 *)p->value, path); | *(UINT16 *)p->value, path); |
| *(UINT16 *)p->value = (UINT16)val; | *(UINT16 *)p->value = (UINT16)val; |
| break; | break; |
| case INITYPE_SINT32: | case INITYPE_SINT32: |
| case INITYPE_UINT32: | case INITYPE_UINT32: |
| val = (UINT32)GetPrivateProfileInt(title, p->item, | val = (UINT32)GetPrivateProfileInt(title, item, |
| *(UINT32 *)p->value, path); | *(UINT32 *)p->value, path); |
| *(UINT32 *)p->value = (UINT32)val; | *(UINT32 *)p->value = (UINT32)val; |
| break; | break; |
| case INITYPE_HEX8: | case INITYPE_HEX8: |
| SPRINTF(work, str_x, *(UINT8 *)p->value), | SPRINTF(work, str_x, *(UINT8 *)p->value), |
| GetPrivateProfileString(title, p->item, work, | GetPrivateProfileString(title, item, work, |
| work, NELEMENTS(work), path); | work, NELEMENTS(work), path); |
| val = (UINT8)milstr_solveHEX(work); | val = (UINT8)milstr_solveHEX(work); |
| *(UINT8 *)p->value = (UINT8)val; | *(UINT8 *)p->value = (UINT8)val; |
| Line 63 const INITBL *pterm; | Line 74 const INITBL *pterm; |
| case INITYPE_HEX16: | case INITYPE_HEX16: |
| SPRINTF(work, str_x, *(UINT16 *)p->value), | SPRINTF(work, str_x, *(UINT16 *)p->value), |
| GetPrivateProfileString(title, p->item, work, | GetPrivateProfileString(title, item, work, |
| work, NELEMENTS(work), path); | work, NELEMENTS(work), path); |
| val = (UINT16)milstr_solveHEX(work); | val = (UINT16)milstr_solveHEX(work); |
| *(UINT16 *)p->value = (UINT16)val; | *(UINT16 *)p->value = (UINT16)val; |
| Line 71 const INITBL *pterm; | Line 82 const INITBL *pterm; |
| case INITYPE_HEX32: | case INITYPE_HEX32: |
| SPRINTF(work, str_x, *(UINT32 *)p->value), | SPRINTF(work, str_x, *(UINT32 *)p->value), |
| GetPrivateProfileString(title, p->item, work, | GetPrivateProfileString(title, item, work, |
| work, NELEMENTS(work), path); | work, NELEMENTS(work), path); |
| val = (UINT32)milstr_solveHEX(work); | val = (UINT32)milstr_solveHEX(work); |
| *(UINT32 *)p->value = (UINT32)val; | *(UINT32 *)p->value = (UINT32)val; |
| Line 145 const OEMCHAR *set; | Line 156 const OEMCHAR *set; |
| break; | break; |
| } | } |
| if (set) { | 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); | WritePrivateProfileString(title, p->item, set, path); |
| #endif | |
| } | } |
| } | } |
| p++; | p++; |
| Line 170 static const INITBL iniitem[] = { | Line 187 static const INITBL iniitem[] = { |
| {"Win_Snap", INITYPE_BOOL, &xmiloscfg.WINSNAP, 0}, | {"Win_Snap", INITYPE_BOOL, &xmiloscfg.WINSNAP, 0}, |
| {"backgrnd", INIAND_UINT8, &xmiloscfg.background, 0x03}, | {"backgrnd", INIAND_UINT8, &xmiloscfg.background, 0x03}, |
| {"DspClock", INIAND_UINT8, &xmiloscfg.DISPCLK, 0x03}, | {"DspClock", INIAND_UINT8, &xmiloscfg.DISPCLK, 0x03}, |
| {"s_NOWAIT", INITYPE_BOOL, &xmiloscfg.NOWAIT, 0}, | |
| {"StartDir", INITYPE_STR, fddfolder, MAX_PATH}, | {"SkpFrame", INITYPE_UINT8, &xmiloscfg.DRAW_SKIP, 0}, |
| {"FDfolder", INITYPE_STR, fddfolder, MAX_PATH}, | |
| {"bmap_Dir", INITYPE_STR, bmpfilefolder, MAX_PATH}, | {"bmap_Dir", INITYPE_STR, bmpfilefolder, MAX_PATH}, |
| {"IPL_TYPE", INIMAX_UINT8, &xmilcfg.ROM_TYPE, 3}, | {"IPL_TYPE", INIMAX_UINT8, &xmilcfg.ROM_TYPE, 3}, |
| {"cpu_8MHz", INITYPE_BOOL, &xmilcfg.CPU8MHz, 0}, | {"cpu_8MHz", INITYPE_BOOL, &xmilcfg.CPU8MHz, 0}, |
| {"Resolute", INITYPE_HEX8, &xmilcfg.DIP_SW, 0}, | {"Resolute", INITYPE_HEX8, &xmilcfg.DIP_SW, 0}, |
| {"SkipLine", INITYPE_BOOL, &xmilcfg.SKIP_LINE, 0}, | |
| {"s_NOWAIT", INITYPE_BOOL, &xmilcfg.NOWAIT, 0}, | |
| {"SkpFrame", INITYPE_UINT8, &xmilcfg.DRAW_SKIP, 0}, | |
| {"LinLIGHT", INITYPE_HEX8, &xmilcfg.LINEDEPTH, 0}, | |
| {"BlkLIGHT", INITYPE_HEX8, &xmilcfg.BLKLIGHT, 0}, | |
| {"TxtLIGHT", INITYPE_HEX8, &xmilcfg.LINETEXT, 0}, | |
| {"Text_Ext", INITYPE_BOOL, &xmilcfg.TEXTMODE, 0}, | |
| {"Text_400", INITYPE_HEX8, &xmilcfg.TEXT400L, 0}, | |
| {"OPMsound", INITYPE_BOOL, &xmilcfg.SOUND_SW, 0}, | {"DispSync", INITYPE_BOOL, &xmilcfg.DISPSYNC, 0}, |
| {"Real_Pal", INITYPE_BOOL, &xmilcfg.RASTER, 0}, | |
| {"skipline", INITYPE_BOOL, &xmilcfg.skipline, 0}, | |
| {"skplight", INITYPE_UINT16, &xmilcfg.skiplight, 0}, | |
| {"SampleHz", INITYPE_UINT16, &xmilcfg.samplingrate, 0}, | {"SampleHz", INITYPE_UINT16, &xmilcfg.samplingrate, 0}, |
| {"Latencys", INITYPE_UINT16, &xmilcfg.delayms, 0}, | {"Latencys", INITYPE_UINT16, &xmilcfg.delayms, 0}, |
| {"SoundPly", INITYPE_BOOL, &xmilcfg.SOUNDPLY, 0}, | {"OPMsound", INITYPE_BOOL, &xmilcfg.SOUND_SW, 0}, |
| {"Seek_Snd", INITYPE_BOOL, &xmilcfg.MOTOR, 0}, | {"Seek_Snd", INITYPE_BOOL, &xmilcfg.MOTOR, 0}, |
| {"Seek_Vol", INIMAX_UINT8, &xmilcfg.MOTORVOL, 100}, | {"Seek_Vol", INIMAX_UINT8, &xmilcfg.MOTORVOL, 100}, |
| {"MouseInt", INITYPE_BOOL, &xmilcfg.MOUSE_SW, 0}, | |
| {"btnRAPID", INITYPE_BOOL, &xmilcfg.BTN_RAPID, 0}, | {"btnRAPID", INITYPE_BOOL, &xmilcfg.BTN_RAPID, 0}, |
| {"btn_MODE", INITYPE_BOOL, &xmilcfg.BTN_MODE, 0}, | {"btn_MODE", INITYPE_BOOL, &xmilcfg.BTN_MODE, 0}, |
| {"MouseInt", INITYPE_BOOL, &xmilcfg.MOUSE_SW, 0}, | |
| {"Joystick", INITYPE_BOOL, &xmiloscfg.JOYSTICK, 0}, | {"Joystick", INITYPE_BOOL, &xmiloscfg.JOYSTICK, 0}, |
| {"clocknow", INITYPE_UINT8, &xmiloscfg.clockx, 0}, | {"clocknow", INITYPE_UINT8, &xmiloscfg.clockx, 0}, |
| {"clockfnt", INITYPE_UINT8, &xmiloscfg.clockfnt, 0}, | {"clockfnt", INITYPE_UINT8, &xmiloscfg.clockfnt, 0}, |
| {"clock_up", INIROAND_HEX32, &xmiloscfg.clockcolor1, 0xffffff}, | {"clock_up", INIROAND_HEX32, &xmiloscfg.clockcolor1, 0xffffff}, |
| Line 211 static const INITBL iniitem[] = { | Line 223 static const INITBL iniitem[] = { |
| static void initgetfile(OEMCHAR *path, UINT size) { | static void initgetfile(OEMCHAR *path, UINT size) { |
| file_cpyname(path, __argv[0], size); | file_cpyname(path, modulefile, size); |
| file_cutext(path); | file_cutext(path); |
| file_catname(path, OEMTEXT(".ini"), size); | file_catname(path, OEMTEXT(".ini"), size); |
| } | } |