|
|
| version 1.1, 2003/10/21 14:57:41 | version 1.17, 2005/05/16 06:08:23 |
|---|---|
| Line 1 | Line 1 |
| #include "compiler.h" | #include "compiler.h" |
| #include "strres.h" | #include "strres.h" |
| #include "profile.h" | #include "textfile.h" |
| #include "np2.h" | #include "np2.h" |
| #include "dosio.h" | #include "dosio.h" |
| #include "ini.h" | #include "ini.h" |
| #include "pccore.h" | #include "pccore.h" |
| typedef struct { | static void binset(UINT8 *bin, UINT binlen, const OEMCHAR *src) { |
| const char *title; | |
| const INITBL *tbl; | |
| const INITBL *tblterm; | |
| UINT count; | |
| } _INIARG, *INIARG; | |
| static void inirdarg8(BYTE *dst, int dsize, const char *src) { | UINT i; |
| UINT8 val; | |
| int i; | |
| BYTE val; | |
| BOOL set; | BOOL set; |
| char c; | OEMCHAR c; |
| for (i=0; i<dsize; i++) { | for (i=0; i<binlen; i++) { |
| val = 0; | val = 0; |
| set = FALSE; | set = FALSE; |
| while(*src == ' ') { | while(*src == ' ') { |
| Line 50 static void inirdarg8(BYTE *dst, int dsi | Line 43 static void inirdarg8(BYTE *dst, int dsi |
| if (set == FALSE) { | if (set == FALSE) { |
| break; | break; |
| } | } |
| dst[i] = val; | bin[i] = val; |
| } | } |
| } | } |
| static BOOL inireadcb(void *arg, const char *para, | static void binget(OEMCHAR *work, int size, const UINT8 *bin, UINT binlen) { |
| const char *key, const char *data) { | |
| const INITBL *p; | UINT i; |
| OEMCHAR tmp[8]; | |
| if (binlen) { | |
| OEMSPRINTF(tmp, OEMTEXT("%.2x"), bin[0]); | |
| milstr_ncpy(work, tmp, size); | |
| } | |
| for (i=1; i<binlen; i++) { | |
| OEMSPRINTF(tmp, OEMTEXT(" %.2x"), bin[i]); | |
| milstr_ncat(work, tmp, size); | |
| } | |
| } | |
| // ---- | |
| typedef struct { | |
| const OEMCHAR *title; | |
| const PFTBL *tbl; | |
| const PFTBL *tblterm; | |
| UINT count; | |
| } _PFARG, *PFARG; | |
| static BOOL inireadcb(void *arg, const OEMCHAR *para, | |
| const OEMCHAR *key, const OEMCHAR *data) { | |
| const PFTBL *p; | |
| if (arg == NULL) { | if (arg == NULL) { |
| return(FAILURE); | return(FAILURE); |
| } | } |
| if (milstr_cmp(para, ((INIARG)arg)->title)) { | if (milstr_cmp(para, ((PFARG)arg)->title)) { |
| return(SUCCESS); | return(SUCCESS); |
| } | } |
| p = ((INIARG)arg)->tbl; | p = ((PFARG)arg)->tbl; |
| while(p < ((INIARG)arg)->tblterm) { | while(p < ((PFARG)arg)->tblterm) { |
| if (!milstr_cmp(key, p->item)) { | if (!milstr_cmp(key, p->item)) { |
| switch(p->itemtype) { | switch(p->itemtype & PFTYPE_MASK) { |
| case INITYPE_STR: | case PFTYPE_STR: |
| milstr_ncpy((char *)p->value, data, p->size); | milstr_ncpy((OEMCHAR *)p->value, data, p->arg); |
| break; | break; |
| case INITYPE_BOOL: | case PFTYPE_BOOL: |
| *((BYTE *)p->value) = (!milstr_cmp(data, str_true))?1:0; | *((UINT8 *)p->value) = (!milstr_cmp(data, str_true))?1:0; |
| break; | break; |
| case INITYPE_BYTEARG: | case PFTYPE_BIN: |
| inirdarg8((BYTE *)p->value, p->size, data); | binset((UINT8 *)p->value, p->arg, data); |
| break; | break; |
| case INITYPE_SINT8: | case PFTYPE_SINT8: |
| case INITYPE_UINT8: | case PFTYPE_UINT8: |
| *((BYTE *)p->value) = (BYTE)milstr_solveINT(data); | *((UINT8 *)p->value) = (UINT8)milstr_solveINT(data); |
| break; | break; |
| case INITYPE_SINT16: | case PFTYPE_SINT16: |
| case INITYPE_UINT16: | case PFTYPE_UINT16: |
| *((UINT16 *)p->value) = (UINT16)milstr_solveINT(data); | *((UINT16 *)p->value) = (UINT16)milstr_solveINT(data); |
| break; | break; |
| case INITYPE_SINT32: | case PFTYPE_SINT32: |
| case INITYPE_UINT32: | case PFTYPE_UINT32: |
| *((UINT32 *)p->value) = (UINT32)milstr_solveINT(data); | *((UINT32 *)p->value) = (UINT32)milstr_solveINT(data); |
| break; | break; |
| case INITYPE_HEX8: | case PFTYPE_HEX8: |
| *((BYTE *)p->value) = (BYTE)milstr_solveHEX(data); | *((UINT8 *)p->value) = (UINT8)milstr_solveHEX(data); |
| break; | break; |
| case INITYPE_HEX16: | case PFTYPE_HEX16: |
| *((UINT16 *)p->value) = (UINT16)milstr_solveHEX(data); | *((UINT16 *)p->value) = (UINT16)milstr_solveHEX(data); |
| break; | break; |
| case INITYPE_HEX32: | case PFTYPE_HEX32: |
| *((UINT32 *)p->value) = (UINT32)milstr_solveHEX(data); | *((UINT32 *)p->value) = (UINT32)milstr_solveHEX(data); |
| break; | break; |
| } | } |
| Line 114 const INITBL *p; | Line 132 const INITBL *p; |
| return(SUCCESS); | return(SUCCESS); |
| } | } |
| void ini_read(const char *path, const char *title, | void ini_read(const OEMCHAR *path, const OEMCHAR *title, |
| const INITBL *tbl, UINT count) { | const PFTBL *tbl, UINT count) { |
| _INIARG iniarg; | _PFARG iniarg; |
| if (path == NULL) { | if (path == NULL) { |
| return; | return; |
| Line 131 void ini_read(const char *path, const ch | Line 149 void ini_read(const char *path, const ch |
| // ---- | // ---- |
| static void iniwrsetstr(char *work, int size, const char *ptr) { | static void iniwrsetstr(OEMCHAR *work, int size, const OEMCHAR *ptr) { |
| int i; | int i; |
| char c; | OEMCHAR c; |
| if (ptr[0] == ' ') { | if (ptr[0] == ' ') { |
| goto iwss_extend; | goto iwss_extend; |
| } | } |
| i = strlen(ptr); | i = OEMSTRLEN(ptr); |
| if ((i) && (ptr[i-1] == ' ')) { | if ((i) && (ptr[i-1] == ' ')) { |
| goto iwss_extend; | goto iwss_extend; |
| } | } |
| Line 177 iwss_extend: | Line 194 iwss_extend: |
| } | } |
| } | } |
| static void iniwrsetarg8(char *work, int size, const BYTE *ptr, int arg) { | void ini_write(const OEMCHAR *path, const OEMCHAR *title, |
| const PFTBL *tbl, UINT count) { | |
| int i; | |
| char tmp[8]; | |
| if (arg > 0) { | |
| SPRINTF(tmp, "%.2x", ptr[0]); | |
| milstr_ncpy(work, tmp, size); | |
| } | |
| for (i=1; i<arg; i++) { | |
| SPRINTF(tmp, " %.2x", ptr[i]); | |
| milstr_ncat(work, tmp, size); | |
| } | |
| } | |
| void ini_write(const char *path, const char *title, | |
| const INITBL *tbl, UINT count) { | |
| FILEH fh; | TEXTFILEH tfh; |
| const INITBL *p; | const PFTBL *p; |
| const INITBL *pterm; | const PFTBL *pterm; |
| BOOL set; | BOOL set; |
| char work[512]; | OEMCHAR work[512]; |
| fh = file_create(path); | tfh = textfile_create(path, 0x800); |
| if (fh == FILEH_INVALID) { | if (tfh == NULL) { |
| return; | return; |
| } | } |
| milstr_ncpy(work, "[", sizeof(work)); | milstr_ncpy(work, OEMTEXT("["), NELEMENTS(work)); |
| milstr_ncat(work, title, sizeof(work)); | milstr_ncat(work, title, NELEMENTS(work)); |
| milstr_ncat(work, "]\r\n", sizeof(work)); | milstr_ncat(work, OEMTEXT("]\r\n"), NELEMENTS(work)); |
| file_write(fh, work, strlen(work)); | textfile_write(tfh, work); |
| p = tbl; | p = tbl; |
| pterm = tbl + count; | pterm = tbl + count; |
| while(p < pterm) { | while(p < pterm) { |
| work[0] = '\0'; | work[0] = '\0'; |
| set = SUCCESS; | set = SUCCESS; |
| switch(p->itemtype) { | switch(p->itemtype & PFTYPE_MASK) { |
| case INITYPE_STR: | case PFTYPE_STR: |
| iniwrsetstr(work, sizeof(work), (char *)p->value); | iniwrsetstr(work, NELEMENTS(work), (OEMCHAR *)p->value); |
| break; | break; |
| case INITYPE_BOOL: | case PFTYPE_BOOL: |
| milstr_ncpy(work, (*((BYTE *)p->value))?str_true:str_false, | milstr_ncpy(work, (*((UINT8 *)p->value))?str_true:str_false, |
| sizeof(work)); | NELEMENTS(work)); |
| break; | break; |
| case INITYPE_BYTEARG: | case PFTYPE_BIN: |
| iniwrsetarg8(work, sizeof(work), (BYTE *)p->value, p->size); | binget(work, NELEMENTS(work), (UINT8 *)p->value, p->arg); |
| break; | break; |
| case INITYPE_SINT8: | case PFTYPE_SINT8: |
| SPRINTF(work, "%d", *((char *)p->value)); | OEMSPRINTF(work, str_d, *((SINT8 *)p->value)); |
| break; | break; |
| case INITYPE_SINT16: | case PFTYPE_SINT16: |
| SPRINTF(work, "%d", *((SINT16 *)p->value)); | OEMSPRINTF(work, str_d, *((SINT16 *)p->value)); |
| break; | break; |
| case INITYPE_SINT32: | case PFTYPE_SINT32: |
| SPRINTF(work, "%d", *((SINT32 *)p->value)); | OEMSPRINTF(work, str_d, *((SINT32 *)p->value)); |
| break; | break; |
| case INITYPE_UINT8: | case PFTYPE_UINT8: |
| SPRINTF(work, "%u", *((BYTE *)p->value)); | OEMSPRINTF(work, str_u, *((UINT8 *)p->value)); |
| break; | break; |
| case INITYPE_UINT16: | case PFTYPE_UINT16: |
| SPRINTF(work, "%u", *((UINT16 *)p->value)); | OEMSPRINTF(work, str_u, *((UINT16 *)p->value)); |
| break; | break; |
| case INITYPE_UINT32: | case PFTYPE_UINT32: |
| SPRINTF(work, "%u", *((UINT32 *)p->value)); | OEMSPRINTF(work, str_u, *((UINT32 *)p->value)); |
| break; | break; |
| case INITYPE_HEX8: | case PFTYPE_HEX8: |
| SPRINTF(work, "%x", *((BYTE *)p->value)); | OEMSPRINTF(work, str_x, *((UINT8 *)p->value)); |
| break; | break; |
| case INITYPE_HEX16: | case PFTYPE_HEX16: |
| SPRINTF(work, "%x", *((UINT16 *)p->value)); | OEMSPRINTF(work, str_x, *((UINT16 *)p->value)); |
| break; | break; |
| case INITYPE_HEX32: | case PFTYPE_HEX32: |
| SPRINTF(work, "%x", *((UINT32 *)p->value)); | OEMSPRINTF(work, str_x, *((UINT32 *)p->value)); |
| break; | break; |
| default: | default: |
| Line 270 const INITBL *pterm; | Line 272 const INITBL *pterm; |
| break; | break; |
| } | } |
| if (set == SUCCESS) { | if (set == SUCCESS) { |
| file_write(fh, p->item, strlen(p->item)); | textfile_write(tfh, p->item); |
| file_write(fh, "=", 1); | textfile_write(tfh, OEMTEXT("=")); |
| file_write(fh, work, strlen(work)); | textfile_write(tfh, work); |
| file_write(fh, "\r\n", 2); | textfile_write(tfh, OEMTEXT("\r\n")); |
| } | } |
| p++; | p++; |
| } | } |
| file_close(fh); | textfile_close(tfh); |
| } | } |
| // ---- | // ---- |
| static const char ini_title[] = "NekoProjectII"; | #if defined(OSLANG_UTF8) |
| static const char inifile[] = "np2.cfg"; | static const OEMCHAR ini_title[] = OEMTEXT("NekoProjectIICE"); |
| static const OEMCHAR inifile[] = OEMTEXT("np2ce.cfg"); | |
| static const INITBL iniitem[] = { | #else |
| {"clk_base", INITYPE_SINT32, &np2cfg.baseclock, 0}, | static const OEMCHAR ini_title[] = OEMTEXT("NekoProjectII"); |
| {"clk_mult", INITYPE_SINT32, &np2cfg.multiple, 0}, | static const OEMCHAR inifile[] = OEMTEXT("np2.cfg"); |
| #endif | |
| {"DIPswtch", INITYPE_BYTEARG, np2cfg.dipsw, 3}, | |
| {"MEMswtch", INITYPE_BYTEARG, np2cfg.memsw, 8}, | enum { |
| {"ExMemory", INITYPE_UINT8, &np2cfg.EXTMEM, 0}, | PFRO_STR = PFFLAG_RO + PFTYPE_STR, |
| {"ITF_WORK", INITYPE_BOOL, &np2cfg.ITF_WORK, 0}, | PFRO_BOOL = PFFLAG_RO + PFTYPE_BOOL, |
| PFRO_HEX32 = PFFLAG_RO + PFTYPE_HEX32 | |
| {"HDD1FILE", INITYPE_STR, np2cfg.hddfile[0], MAX_PATH}, | }; |
| {"HDD2FILE", INITYPE_STR, np2cfg.hddfile[1], MAX_PATH}, | |
| static const PFTBL iniitem[] = { | |
| {"SampleHz", INITYPE_UINT16, &np2cfg.samplingrate, 0}, | PFSTR("pc_model", PFTYPE_STR, np2cfg.model), |
| {"Latencys", INITYPE_UINT16, &np2cfg.delayms, 0}, | PFVAL("clk_base", PFTYPE_UINT32, &np2cfg.baseclock), |
| {"SNDboard", INITYPE_HEX8, &np2cfg.SOUND_SW, 0}, | PFVAL("clk_mult", PFTYPE_UINT32, &np2cfg.multiple), |
| {"BEEP_vol", INITYPE_UINT8, &np2cfg.BEEP_VOL, 0}, | |
| {"xspeaker", INITYPE_BOOL, &np2cfg.snd_x, 0}, | PFEXT("DIPswtch", PFTYPE_BIN, np2cfg.dipsw, 3), |
| PFEXT("MEMswtch", PFTYPE_BIN, np2cfg.memsw, 8), | |
| {"SND14vol", INITYPE_BYTEARG, np2cfg.vol14, 6}, | PFMAX("ExMemory", PFTYPE_UINT8, &np2cfg.EXTMEM, 63), |
| // {"opt14BRD", INITYPE_BYTEARG, np2cfg.snd14opt, 3}, | PFVAL("ITF_WORK", PFRO_BOOL, &np2cfg.ITF_WORK), |
| {"opt26BRD", INITYPE_HEX8, &np2cfg.snd26opt, 0}, | |
| {"opt86BRD", INITYPE_HEX8, &np2cfg.snd86opt, 0}, | PFSTR("HDD1FILE", PFTYPE_STR, np2cfg.sasihdd[0]), |
| {"optSPBRD", INITYPE_HEX8, &np2cfg.spbopt, 0}, | PFSTR("HDD2FILE", PFTYPE_STR, np2cfg.sasihdd[1]), |
| {"optSPBVR", INITYPE_HEX8, &np2cfg.spb_vrc, 0}, | #if defined(SUPPORT_SCSI) |
| {"optSPBVL", INITYPE_UINT8, &np2cfg.spb_vrl, 0}, | PFSTR("SCSIHDD0", PFTYPE_STR, np2cfg.scsihdd[0]), |
| {"optSPB_X", INITYPE_BOOL, &np2cfg.spb_x, 0}, | PFSTR("SCSIHDD1", PFTYPE_STR, np2cfg.scsihdd[1]), |
| {"optMPU98", INITYPE_HEX8, &np2cfg.mpuopt, 0}, | PFSTR("SCSIHDD2", PFTYPE_STR, np2cfg.scsihdd[2]), |
| PFSTR("SCSIHDD3", PFTYPE_STR, np2cfg.scsihdd[3]), | |
| {"volume_F", INITYPE_UINT8, &np2cfg.vol_fm, 0}, | #endif |
| {"volume_S", INITYPE_UINT8, &np2cfg.vol_ssg, 0}, | PFSTR("fontfile", PFTYPE_STR, np2cfg.fontfile), |
| {"volume_A", INITYPE_UINT8, &np2cfg.vol_adpcm, 0}, | PFSTR("biospath", PFRO_STR, np2cfg.biospath), |
| {"volume_P", INITYPE_UINT8, &np2cfg.vol_pcm, 0}, | |
| {"volume_R", INITYPE_UINT8, &np2cfg.vol_rhythm, 0}, | PFVAL("SampleHz", PFTYPE_UINT16, &np2cfg.samplingrate), |
| PFVAL("Latencys", PFTYPE_UINT16, &np2cfg.delayms), | |
| {"Seek_Snd", INITYPE_BOOL, &np2cfg.MOTOR, 0}, | PFVAL("SNDboard", PFTYPE_HEX8, &np2cfg.SOUND_SW), |
| {"Seek_Vol", INITYPE_UINT8, &np2cfg.MOTORVOL, 0}, | PFAND("BEEP_vol", PFTYPE_UINT8, &np2cfg.BEEP_VOL, 3), |
| PFVAL("xspeaker", PFRO_BOOL, &np2cfg.snd_x), | |
| {"btnRAPID", INITYPE_BOOL, &np2cfg.BTN_RAPID, 0}, | |
| {"btn_MODE", INITYPE_BOOL, &np2cfg.BTN_MODE, 0}, | PFEXT("SND14vol", PFTYPE_BIN, np2cfg.vol14, 6), |
| {"MS_RAPID", INITYPE_BOOL, &np2cfg.MOUSERAPID, 0}, | // PFEXT("opt14BRD", PFTYPE_BIN, np2cfg.snd14opt, 3), |
| PFVAL("opt26BRD", PFTYPE_HEX8, &np2cfg.snd26opt), | |
| {"VRAMwait", INITYPE_BYTEARG, np2cfg.wait, 6}, | PFVAL("opt86BRD", PFTYPE_HEX8, &np2cfg.snd86opt), |
| {"DispSync", INITYPE_BOOL, &np2cfg.DISPSYNC, 0}, | PFVAL("optSPBRD", PFTYPE_HEX8, &np2cfg.spbopt), |
| {"Real_Pal", INITYPE_BOOL, &np2cfg.RASTER, 0}, | PFVAL("optSPBVR", PFTYPE_HEX8, &np2cfg.spb_vrc), |
| {"RPal_tim", INITYPE_UINT8, &np2cfg.realpal, 0}, | PFMAX("optSPBVL", PFTYPE_UINT8, &np2cfg.spb_vrl, 24), |
| {"s_NOWAIT", INITYPE_BOOL, &np2oscfg.NOWAIT, 0}, | PFVAL("optSPB_X", PFTYPE_BOOL, &np2cfg.spb_x), |
| {"SkpFrame", INITYPE_UINT8, &np2oscfg.DRAW_SKIP, 0}, | PFVAL("optMPU98", PFTYPE_HEX8, &np2cfg.mpuopt), |
| {"uPD72020", INITYPE_BOOL, &np2cfg.uPD72020, 0}, | |
| {"GRCG_EGC", INITYPE_UINT8, &np2cfg.grcg, 0}, | PFMAX("volume_F", PFTYPE_UINT8, &np2cfg.vol_fm, 128), |
| {"color16b", INITYPE_BOOL, &np2cfg.color16, 0}, | PFMAX("volume_S", PFTYPE_UINT8, &np2cfg.vol_ssg, 128), |
| {"skipline", INITYPE_BOOL, &np2cfg.skipline, 0}, | PFMAX("volume_A", PFTYPE_UINT8, &np2cfg.vol_adpcm, 128), |
| {"skplight", INITYPE_SINT16, &np2cfg.skiplight, 0}, | PFMAX("volume_P", PFTYPE_UINT8, &np2cfg.vol_pcm, 128), |
| {"LCD_MODE", INITYPE_UINT8, &np2cfg.LCD_MODE, 0}, | PFMAX("volume_R", PFTYPE_UINT8, &np2cfg.vol_rhythm, 128), |
| {"BG_COLOR", INITYPE_HEX32, &np2cfg.BG_COLOR, 0}, | |
| {"FG_COLOR", INITYPE_HEX32, &np2cfg.FG_COLOR, 0}, | PFVAL("Seek_Snd", PFTYPE_BOOL, &np2cfg.MOTOR), |
| {"pc9861_e", INITYPE_BOOL, &np2cfg.pc9861enable, 0}, | PFMAX("Seek_Vol", PFTYPE_UINT8, &np2cfg.MOTORVOL, 100), |
| {"pc9861_s", INITYPE_BYTEARG, np2cfg.pc9861sw, 3}, | |
| {"pc9861_j", INITYPE_BYTEARG, np2cfg.pc9861jmp, 6}, | PFVAL("btnRAPID", PFTYPE_BOOL, &np2cfg.BTN_RAPID), |
| {"calendar", INITYPE_BOOL, &np2cfg.calendar, 0}, | PFVAL("btn_MODE", PFTYPE_BOOL, &np2cfg.BTN_MODE), |
| {"USE144FD", INITYPE_BOOL, &np2cfg.usefd144, 0}}; | PFVAL("MS_RAPID", PFTYPE_BOOL, &np2cfg.MOUSERAPID), |
| #define INIITEMS (sizeof(iniitem) / sizeof(INITBL)) | PFEXT("VRAMwait", PFTYPE_BIN, np2cfg.wait, 6), |
| PFVAL("DispSync", PFTYPE_BOOL, &np2cfg.DISPSYNC), | |
| PFVAL("Real_Pal", PFTYPE_BOOL, &np2cfg.RASTER), | |
| PFMAX("RPal_tim", PFTYPE_UINT8, &np2cfg.realpal, 64), | |
| 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), | |
| // OS°Í¸¡Á | |
| PFVAL("s_NOWAIT", PFTYPE_BOOL, &np2oscfg.NOWAIT), | |
| PFVAL("SkpFrame", PFTYPE_UINT8, &np2oscfg.DRAW_SKIP), | |
| PFVAL("F12_bind", PFTYPE_UINT8, &np2oscfg.F12KEY), | |
| PFVAL("e_resume", PFTYPE_BOOL, &np2oscfg.resume), | |
| #if !defined(GX_DLL) | |
| PFVAL("WindposX", PFTYPE_SINT32, &np2oscfg.winx), | |
| PFVAL("WindposY", PFTYPE_SINT32, &np2oscfg.winy), | |
| #endif | |
| #if defined(WIN32_PLATFORM_PSPC) | |
| PFVAL("pbindcur", PFTYPE_UINT8, &np2oscfg.bindcur), | |
| PFVAL("pbindbtn", PFTYPE_UINT8, &np2oscfg.bindbtn), | |
| #endif | |
| PFVAL("jast_snd", PFTYPE_BOOL, &np2oscfg.jastsnd), | |
| }; | |
| void initload(void) { | void initload(void) { |
| char path[MAX_PATH]; | OEMCHAR path[MAX_PATH]; |
| milstr_ncpy(path, file_getcd(inifile), sizeof(path)); | milstr_ncpy(path, file_getcd(inifile), NELEMENTS(path)); |
| ini_read(path, ini_title, iniitem, INIITEMS); | ini_read(path, ini_title, iniitem, NELEMENTS(iniitem)); |
| } | } |
| void initsave(void) { | void initsave(void) { |
| char path[MAX_PATH]; | OEMCHAR path[MAX_PATH]; |
| milstr_ncpy(path, file_getcd(inifile), sizeof(path)); | milstr_ncpy(path, file_getcd(inifile), NELEMENTS(path)); |
| ini_write(path, ini_title, iniitem, INIITEMS); | ini_write(path, ini_title, iniitem, NELEMENTS(iniitem)); |
| } | } |