static MENUHDL append1(MENUSYS *sys, const MSYSITEM *item) { MENUHDL ret; _MENUHDL hdl; ZeroMemory(&hdl, sizeof(hdl)); hdl.id = item->id; hdl.flag = item->flag & (~MENU_DELETED); if (item->string) { milstr_ncpy(hdl.string, item->string, NELEMENTS(hdl.string)); } ret = (MENUHDL)listarray_enum(sys->res, seaempty, NULL); if (ret) { *ret = hdl; } else { ret = (MENUHDL)listarray_append(sys->res, &hdl); } if (ret) { if (sys->lastres) { sys->lastres->chain = ret; } sys->lastres = ret; } return(ret); }
static BRESULT fappend(LISTARRAY flist, FLINFO *fli) { FLIST fl; FLIST *st; FLIST cur; fl = (FLIST)listarray_append(flist, NULL); if (fl == NULL) { return(FAILURE); } fl->isdir = (fli->attr & 0x10)?1:0; file_cpyname(fl->name, fli->path, NELEMENTS(fl->name)); st = &filesel.fbase; while(1) { cur = *st; if (cur == NULL) { break; } if (fl->isdir > cur->isdir) { break; } if ((fl->isdir == cur->isdir) && (file_cmpname(fl->name, cur->name) < 0)) { break; } st = &cur->next; } fl->next = *st; *st = fl; return(SUCCESS); }
static void VERMOUTHCL pathadd(MIDIMOD mod, const OEMCHAR *path) { _PATHLIST pl; PATHLIST p; ZeroMemory(&pl, sizeof(pl)); if (path) { pl.path[0] = '\0'; // separator change! file_catname(pl.path, path, NELEMENTS(pl.path)); if (path[0]) { #if defined(SUPPORT_ARC) if (milstr_chr(pl.path, '#') == NULL) #endif file_setseparator(pl.path, NELEMENTS(pl.path)); } } pl.next = mod->pathlist; p = pl.next; while(p) { if (!file_cmpname(p->path, pl.path)) { return; } p = p->next; } p = (PATHLIST)listarray_append(mod->pathtbl, &pl); if (p) { mod->pathlist = p; } }
static void pathadd(MIDIMOD mod, const OEMCHAR *path) { _PATHLIST pl; PATHLIST p; ZeroMemory(&pl, sizeof(pl)); if (path) { pl.path[0] = '\0'; // separator change! file_catname(pl.path, path, NELEMENTS(pl.path)); if (path[0]) { file_setseparator(pl.path, NELEMENTS(pl.path)); } } pl.next = mod->pathlist; p = pl.next; while(p) { if (!file_cmpname(p->path, pl.path)) { return; } p = p->next; } p = (PATHLIST)listarray_append(mod->pathtbl, &pl); if (p) { mod->pathlist = p; } }
static void VERMOUTHCL settone(MIDIMOD mod, int bank, int argc, OEMCHAR *argv[]) { int val; TONECFG tone; OEMCHAR *name; int i; OEMCHAR *key; OEMCHAR *data; UINT8 flag; if ((bank < 0) || (bank >= (MIDI_BANKS * 2)) || (argc < 2) || (cfggetval(argv[0], &val) != SUCCESS) || (val < 0) || (val >= 128)) { return; } tone = mod->tonecfg[bank]; if (tone == NULL) { tone = (TONECFG)_MALLOC(sizeof(_TONECFG) * 128, "tone cfg"); if (tone == NULL) { return; } mod->tonecfg[bank] = tone; ZeroMemory(tone, sizeof(_TONECFG) * 128); } tone += val; name = tone->name; if (name == NULL) { name = (OEMCHAR *)listarray_append(mod->namelist, NULL); tone->name = name; } if (name) { name[0] = '\0'; file_catname(name, argv[1], MAX_NAME); // separator change! } flag = TONECFG_EXIST; tone->amp = TONECFG_AUTOAMP; tone->pan = TONECFG_VARIABLE; if (!(bank & 1)) { // for tone tone->note = TONECFG_VARIABLE; } else { // for drums flag |= TONECFG_NOLOOP | TONECFG_NOENV; tone->note = (UINT8)val; } for (i=2; i<argc; i++) { key = argv[i]; data = seachr(key, '='); if (data == NULL) { continue; } *data++ = '\0'; if (!milstr_cmp(key, str_amp)) { if (cfggetval(data, &val) == SUCCESS) { if (val < 0) { val = 0; } else if (val > CFG_MAXAMP) { val = CFG_MAXAMP; } tone->amp = val; } } else if (!milstr_cmp(key, str_keep)) { if (!milstr_cmp(data, str_env)) { flag &= ~TONECFG_NOENV; flag |= TONECFG_KEEPENV; } else if (!milstr_cmp(data, str_loop)) { flag &= ~TONECFG_NOLOOP; } } else if (!milstr_cmp(key, str_note)) { if ((cfggetval(data, &val) == SUCCESS) && (val >= 0) && (val < 128)) { tone->note = (UINT8)val; } } else if (!milstr_cmp(key, str_pan)) { if (!milstr_cmp(data, str_left)) { val = 0; } else if (!milstr_cmp(data, str_center)) { val = 64; } else if (!milstr_cmp(data, str_right)) { val = 127; } else if (cfggetval(data, &val) == SUCCESS) { if (val < -100) { val = -100; } else if (val > 100) { val = 100; } val = val + 100; val *= 127; val += 100; val /= 200; } else { continue; } tone->pan = (UINT8)val; } else if (!milstr_cmp(key, str_strip)) { if (!milstr_cmp(data, str_env)) { flag &= ~TONECFG_KEEPENV; flag |= TONECFG_NOENV; } else if (!milstr_cmp(data, str_loop)) { flag |= TONECFG_NOLOOP; } else if (!milstr_cmp(data, str_tail)) { flag |= TONECFG_NOTAIL; } } } tone->flag = flag; }