2 * STed: defload.c (def file)
20 0,14*64+28*2048+28*2,28*64+28*2048+14*2,28*64+28*2048+28*2,
21 11*64+11*2048+11*2,6*64+6*2048+6*2,0x2708,
23 11*2048+14*2,14*2048+17*2, 17*2048,31*2048,31*2048+31*2,
24 17*64+17*2048,31*64+31*2048,16*64+16*2048+16*2,31*64+31*2048+31*2};
26 unsigned char stgt_def[30]={
27 192,144, 96, 72, 48, 36, 24, 18, 12, 6,
28 188,140, 92, 68, 45, 34, 22, 16, 10, 5,
29 1, 15, 29, 43, 57, 71, 85, 99,113,127};
33 char defrhyna[32][15];
34 unsigned char defrhyno[32][2];
36 char def_user_exc_memo[8][25];
37 unsigned char def_user_exc_data[8][24];
40 /* ================================================== file */
46 for(i=0;i<32;i++){rhinit2(i);}
50 strcpy(rhyna[i],defrhyna[i]);
51 rhyno[i][0]=defrhyno[i][0];rhyno[i][1]=defrhyno[i][1];
57 for(i=0;i<8;i++){user_exc_init2(i);}
59 void user_exc_init2(int i)
63 strcpy(user_exc_memo[i],def_user_exc_memo[i]);
64 for(j=0;j<24;j++){user_exc_data[i][j]=def_user_exc_data[i][j];}
67 /***************************/
72 for(i=0;i<30;i++){stgt_init2(i);}
74 void stgt_init2(int i)
76 stgt_tbl[i]=stgt_def[i];
78 /***************************/
84 for(i=1;i<=16;i++){if(tim_asin[i]<4){tim_asin[i]=0;}}
85 for(i=0x8d;i<=0x8d+8;i++){
89 if(i<0x8d+8){tim_asin[a]=1;}else{tim_asin[a]=2;}
93 for(i=0x583c;i<=0x583c+5;i++){
94 a=cm6[i]+1;if(a<17){if( tim_asin[a]==0){tim_asin[a]=3;}}
102 for(i=1;i<33;i++){tim_asin[i]=tim_asin2[i];}
104 /***************************/
109 inpmode=0;grpmode=0;thrumode=0;vis_reso=100;
111 for(i=0;i<16;i++){mplay[i][0]=0;palet_dat[i]=gpal_no[i];}
112 strcpy(mplay[1],"rcp -pbs");strcpy(mplay[9],"rcp -ps");
114 for(i=0;i<128;i++){keyst_table[0][i]=0;keyst_table[1][i]=0;}
115 for(i=0;i<26*3*2;i++){repl_t[i][0]=0;repl_d[i][0]=0;}
117 for(i=0;i<16;i++){rhy_vel[i]=0;}
118 for(i=1;i<10;i++){rhy_vel[i]=i*14;}
121 /***************************/
126 strcpy(card_name[0],"NoUse <<PCM CARD>>");
127 for(i=1;i<17;i++){strcpy(card_name[i]," --------");}
129 for(i=0;i<80*128;i++){tim_name[i][0]=0;}
130 for(i=0;i<400;i++){tim_top[i]=0;tim_name[i][0]=0;tim_head[i][0]=0;}
132 for(i=0;i<8;i++){for(j=0;j<24;j++){
133 def_user_exc_memo[i][j]=0;def_user_exc_data[i][j]=0xf7;}}
135 init_exc_data[0]=255;
137 for(i=0;i<18*128;i++){gs_bank[i]=0;}
138 for(i=0;i<18;i++){gs_mode[i]=0;}
141 for(i=0;i<16;i++){rfilt[i][0]=0;rfilt[i][1]=0;rfilt[i+16][0]=128;rfilt[i+16][1]=128;}
143 rec_met[0]=16;rec_met[1]=0;
144 rec_met[2]=64;rec_met[3]=2;rec_met[4]=117;
145 rec_met[5]=64;rec_met[6]=2;rec_met[7]=127;
147 rhy_stest[0]=10;rhy_stest[1]=-1;
148 rhy_stest[2]=-1;rhy_stest[4]=127;
150 player_name[0]=0; /* Jun.28.1998 Daisuke Nagano */
151 midi_port_name[0]=0; /* Sep.02.1998 Daisuke Nagano */
152 font_name[0]=0; /* Sep.04.1998 */
153 player_flag=0; /* Nov.25.1998 */
155 strcpy( KEY_XF1, "Alt_L" );
156 strcpy( KEY_XF2, "Muhenkan" );
157 strcpy( KEY_XF3, "Henkan_Mode" );
158 strcpy( KEY_XF4, "Hiragana_Katakana" );
159 strcpy( KEY_XF5, "Alt_R" );
160 strcpy( KEY_KANA, "Caps_Lock" );
161 strcpy( KEY_KIGO, "F11" );
162 strcpy( KEY_TOROKU, "F12" ); /* Nov 25.1998 Daisuke Nagano */
163 strcpy( KEY_INS, "Insert" );
164 strcpy( KEY_DEL, "Delete" );
165 strcpy( KEY_HOME, "Home" );
166 strcpy( KEY_UNDO, "End" );
167 strcpy( KEY_RUP, "Page_Up" );
168 strcpy( KEY_RDOWN, "Page_Down" );
169 strcpy( KEY_OPT1, "" );
170 strcpy( KEY_OPT2, "" ); /* Dec.22.1998 Daisuke Nagano */
173 lsp_wait=1;bend_range=12;
177 /***************************/
179 cmdflag= gs_mode= mdlfalg=
181 84218421 84218421 84218421 84218421
182 00000000 00000000 00000000 00000000
183 |||||||| |||||||| || ||| ||||||||
184 |||||||| |||||||| || ||| ||||++++MODULE ID(1=CM-64 2=SC-55
185 |||||||| |||||||| || ||| ++++---- 3=SC-88)
186 |||||||| |||||||| || ||+bit0 1=capital down on
187 |||||||| |||||||| || |+-bit1 1=rhy.cap down on
188 |||||||| |||||||| || +--bit2 0=bank msb 1=bank lsb
190 |||||||| |||||||| |+------bit6 1=rhythm mode on
191 |||||||| |||||||| +-------bit7 1=bank mode on
192 |||||||| |||||||+TIMBRE NAME
193 |||||||| ||||||+-RET&SPC
194 |||||||| |||||+--SPC.CTRL SEL
195 |||||||| ||||+---BUF LOAD
196 |||||||| |||+----BUF SET
197 |||||||| ||+-----PROG_MIN
198 |||||||| |+------ALL NOTE OFF
199 |||||||| +-------RCD POINT PLAY
201 ||||||+-MOUSE CONTROL (0=on 1=off)
202 |||||+--RHY AS. check (0=yes/no check 1=all yes)
203 ||||+---RHY AS. change(0=on 1=off)
204 |||+----timbre select (0=val 1=sel)
205 ||+-----timbre select mode(0=normal 1=bank)
206 |+------meas play mluti track lsp
207 +-------rcp panel mode
214 |||||||| |||||||+file selecter sort
215 |||||||| ||||||+-file write check
216 |||||||| |||||+--file back up
217 |||||||| ||||+---file selecter path move(0=on 1=off)
220 |||||||| |+------file save mode(0=r36 1=rcp)
221 |||||||| +-------file load part assign read
224 ||||||+-t.set. option mode(0=option2 1=option1)
225 |||||+--t.edit option mode(0=option2 1=option1)
227 |||+----replace selecter mode(0=normal 1=select)
228 ||+-----one touch stgt (0=normal 1=chord)
229 |+------visual edit (0=normal 1=wide)
230 +-------gs bar display (0=normal 1=reverse)
233 int defload(char *fi,int md)
235 char tmp0[2048],tmp1[1024],li[1024],li2[1024];
236 int ad,nm,ln,n,i0=0,i1=0,f,mutef=0,initf=0;
237 int last_no=4*128,last_co=0;
240 if(str_search(fi,".dfb")||str_search(fi,".DFB")>0){return def_bload(fi,md);}
242 /*if(!(fp= fopen2(fi,"rb"))){return(-1);}*/
244 if ((fp=fopen2(fi,"rb"))==NULL) {
245 strcpy( tmp0, STED_DEFAULT_PATH );
246 if ( tmp0[strlen(tmp0)]!='/' ) strcat(tmp0,"/");
247 strcat( tmp0, (strrchr(fi,'/')==NULL)?fi:(strrchr(fi,'/')+1) );
248 if ((fp=fopen2( tmp0, "rb" ))==NULL) return(-1);
249 } /* Oct.13.1998 by Daisuke Nagano */
250 ln=fread(dat,1,work_size,fp);ad=0;nm=99999;
254 /*B_PRINT("定義ファイルのロード中です。\r\n");*/ /* Oct.17.1998 by Daisuke Nagano */
257 msg(_("Loading config file.\n"));
261 B_PRINT(_("Compiling config file.\n"));
271 ln--;if(ln==0){ln=fread(dat,1,work_size,fp);ad=0;if(ln==0){break;}}
273 /*if(a==13){break;}*/ /* Sep.02.1998 Daisuke Nagano */
274 if(a==13||a==0x0a){break;}
279 if(n!=0 && li[n-1]=='\\'){n--;a='*';}
281 if(a=='=' && li[0]=='#'){while(li[n-1]==' '){n--;}}
286 /*if(dat[ad]==0x0a){ad++;*/ /* Sep.02.1998 Daisuke Nagano */
287 if(dat[ad]==0x0a||dat[ad]==0x0d){ad++;
288 ln--;if(ln==0){ln=fread(dat,1,work_size,fp);ad=0;}
292 if( li[0]==0 ){goto top;}
295 strcpy(li2,li);jstrupr(li2);
297 if( str_search(li2,"#END")>0 ){break;}
300 if( str_search(li2,"#COMMENT=")>0 ){strcpy(comment,&li[9]);}
302 if( str_search(li2,"#DEF_FILE=")>0 ){
303 if(def_file[0]==0){strcpy(def_file,&li[10]);}}
304 if( str_search(li2,"#DEF_PATH=")>0 ){
305 if(def_path[0]==0){strcpy(def_path,&li[10]);}}
307 if( str_search(li2,"#FON_PATH=")>0 ){
308 if(fon_path[0]==0){strcpy(fon_path,&li[10]);}}
309 if( str_search(li2,"#HLP_PATH=")>0 ){
310 if(hlp_path[0]==0){strcpy(hlp_path,&li[10]);}}
312 if( str_search(li2,"#PRT_PATH=")>0 ){
313 if(prt_path[0]==0){strcpy(prt_path,&li[10]);}}
314 if( str_search(li2,"#TRK_PATH=")>0 ){
315 if(trk_path[0]==0){strcpy(trk_path,&li[10]);}}
317 if(str_search(li2,"#FSORT=ON" )>0){cnfflag|=0x0001;}
318 if(str_search(li2,"#FCHECK=ON" )>0){cnfflag|=0x0002;}
319 if(str_search(li2,"#FBACKUP=ON" )>0){cnfflag|=0x0004;}
320 if(str_search(li2,"#FSEL_MOV=OFF")>0){cnfflag|=0x0008;}
321 if(str_search(li2,"#SAVE_DEF=RCP")>0){cnfflag|=0x0040;}
322 if(str_search(li2,"#PAS_READ=OFF")>0){cnfflag|=0x0080;}
324 /* if(str_search(li2,"#MAIN_OPT=ON" )>0){cnfflag|=0x0100;}*/
325 if(str_search(li2,"#TSET_OPT=ON" )>0){cnfflag|=0x0200;}
326 if(str_search(li2,"#TEDT_OPT=ON" )>0){cnfflag|=0x0400;}
327 if(str_search(li2,"#REPL_SEL=ON" )>0){cnfflag|=0x1000;}
329 if(str_search(li2,"#ONE_CHORD=ON")>0){cnfflag|=0x2000;}
330 if(str_search(li2,"#VIS_WIDE=ON" )>0){cnfflag|=0x4000;}
331 if(str_search(li2,"#BAR_REV=ON" )>0){cnfflag|=0x8000;}
333 if(str_search(li2,"#TONENAME=OFF")>0){cmdflag|=0x0001;}
334 if(str_search(li2,"#ENTER=ON" )>0){cmdflag|=0x0002;}
335 if(str_search(li2,"#SPC_SEL=ON" )>0){cmdflag|=0x0004;}
336 if(str_search(li2,"#PROG_MIN=1" )>0){cmdflag|=0x0020;}
337 if(str_search(li2,"#NOTEOFF=ON" )>0){cmdflag|=0x0040;}
338 if(str_search(li2,"#ROL_HEX=ON" )>0){cmdflag|=0x0100;}
339 if(str_search(li2,"#RHY_TRK=ON" )>0){cmdflag|=0x0400;}
340 if(str_search(li2,"#RHY_TRK=OFF" )>0){cmdflag|=0x0800;}
341 if(str_search(li2,"#TONESEL=OFF" )>0){cmdflag|=0x1000;}
342 if(str_search(li2,"#TSELBANK=ON" )>0){cmdflag|=0x2000;}
343 if(str_search(li2,"#MP_MLSP=OFF" )>0){cmdflag|=0x4000;}
345 /* if(str_search(li2,"#RHY_SYM=ON" )>0){cmdflag|=0x20000;}*/
346 if(str_search(li2,"#THRUMODE=ON" )>0){thrumode=1;}
348 if( str_search(li2,"#TIME_LAG=")>0){
349 int n=str_val(&li[10]);if( n>99 && n<65536 ){tm_lag=n;}
351 if( str_search(li2,"#EDIT_MODE=")>0){
352 int n=str_val(&li[11]);if( n>=0 && n<6 ){inpmode=n;}
354 if( str_search(li2,"#GRAP_MODE=")>0){
355 int n=str_val(&li[11]);if( n>=0 && n<8 ){grpmode=n;}
358 if( str_search(li2,"#VIS_RESO=")>0){
359 int n=str_val(&li[10]);if( n>=1 && n<=100 ){vis_reso=n;}
362 if( str_search(li2,"#PROGRAM=")>0 ){cnf_prog(li,li2,0);}
363 if( str_search(li2,"#SUBPROG=")>0 ){cnf_prog(li,li2,1);}
365 if( str_search(li2,"#REPLACE=")>0 ){cnf_repl(li,li2,0);}
366 if( str_search(li2,"#DELETE=")>0 ){cnf_repl(li,li2,1);}
367 if( str_search(li2,"#FIND=")>0 ){cnf_repl(li,li2,2);}
369 if( str_search(li2,"#MPLAY=")>0 ){
373 strcpy(tmp1,&li[9]);strcat(tmp1,",");
375 c=str_search(tmp1,",");if( c==0 ){break;}
376 strcpy(tmp0,tmp1);tmp0[c-1]=0;spcut(tmp0);
377 strcpy(tmp1,&tmp1[c]);
379 strcpy(mplay[n],tmp0);
385 if( str_search(li2,"#RHY_VEL=")>0 ){cnf_rvel(li);}
387 if( str_search(li2,"#FKEY_ST=")>0 ){cnf_stgt(li,0);}
388 if( str_search(li2,"#FKEY_GT=")>0 ){cnf_stgt(li,10);}
389 if( str_search(li2,"#FKEY_VE=")>0 ){cnf_stgt(li,20);}
391 if( str_search(li2,"#KEYST=")>0 ){
393 strcpy(tmp1,&li[7]);strcat(tmp1,",");n=0;
395 c=str_search(tmp1,",");if( c==0 ){break;}
396 strcpy(tmp0,tmp1);tmp0[c-1]=0;spcut(tmp0);
397 strcpy(tmp1,&tmp1[c]);
400 if(k<0||k>127){break;}
402 keyst_table[n-1][k]=str_val(tmp0);
408 if( str_search(li2,"#PALET")>0 ){
410 c=str_search(li,"=");
412 li2[c]=0;n=str_val(&li2[6]);
414 strcpy(tmp1,&li[c]);strcat(tmp1,",");
416 c=str_search(tmp1,",");if( c==0 ){break;}
417 strcpy(tmp0,tmp1);tmp0[c-1]=0;
418 spcut(tmp0);palet_dat[n]=str_val(tmp0);
419 strcpy(tmp1,&tmp1[c]);n++;
427 if( str_search(li2,"#MODULE=")>0 ){strcpy(module,&li[8]);}
429 if( str_search(li2,"#ID=")>0 ){
430 strcpy(tmp1,&li2[4]);
431 if( str_search(tmp1,"CM64")>0 ){mdlflag|=1;}
432 if( str_search(tmp1,"SC55")>0 ){mdlflag|=2;}
433 if( str_search(tmp1,"SC88")>0 ){mdlflag|=3;}
434 if( str_search(tmp1,"05RW")>0 ){mdlflag|=4;}
436 if( str_search(li2,"#MUTE=")>0 ){
437 strcpy(tmp1,&li2[6]);mutef=0;
438 if( str_search(tmp1,"OFF")>0 ){mutef=1;}
439 if( str_search(tmp1,"CM64")>0 ){mutef=2;}
440 if( str_search(tmp1,"SC55")>0 ){mutef=3;}
442 if( str_search(li2,"#INIT=")>0 ){
443 strcpy(tmp1,&li2[6]);initf=0;
444 if( str_search(tmp1,"OFF")>0 ){initf=1;}
445 if( str_search(tmp1,"CM64")>0 ){initf=2;}
446 if( str_search(tmp1,"SC55")>0 ){initf=3;}
447 if( str_search(tmp1,"SC88")>0 ){initf=5;}
450 if( str_search(li2,"#LSP_WAIT=")>0){
451 int n=str_val(&li[10]);if( n>=-1 && n<16 ){lsp_wait=n;}
453 if( str_search(li2,"#PB_RANGE=")>0){
454 int n=str_val(&li[10]);if( n>0 && n<96 ){bend_range=n;}
457 if( str_search(li2,"#GROUP")>0 ){
459 c=str_search(li,"=");
461 n=0;if(li2[7]=='B'){n=16;}
462 strcpy(tmp1,&li[c]);strcat(tmp1,",");
464 c=str_search(tmp1,",");if(c==0){break;}
465 strcpy(tmp0,tmp1);tmp0[c-1]=0;
466 n++;tim_asin2[n]=str_val(tmp0);
467 strcpy(tmp1,&tmp1[c]);
471 if( str_search(li2,"#CARD_NO=")>0 ){
472 int n=str_val(&li[9]);if(n>=0 && n<=16){card_no[0]=n;}
475 if( str_search(li2,"#PART=")>0 ){
477 ch=str_val(&li2[6])-1;
478 c=str_search(li,",");
480 strcpy(tmp1,&li[c]);strcat(tmp1,",");n=0;
482 c=str_search(tmp1,",");if( c==0 ){break;}
483 strcpy(tmp0,tmp1);tmp0[c-1]=0;
484 if(n==0){strcpy(tim_head[ch],tmp0);}
485 else{strcpy(tim_sym[ch],tmp0);}
486 strcpy(tmp1,&tmp1[c]);n++;
488 nm=ch*128;if( ch==1 ){nm=192;}
489 if(tmp1[0]!=0){nm+=str_val(tmp1);}
492 if(last_no<80*128-1){
493 tim_name[last_no++][0]=0;
494 tim_top[ch]=last_no;last_co=0;
495 if(tmp1[0]!=0){last_co=str_val(tmp1);}
500 if( str_search(li2,"#USER_EXC=")>0 ){
503 ch=str_val(&li2[10]);
504 c=str_search(li,",");
508 c=str_search(tmp1,",");
509 strcpy(tmp0,tmp1);if(c){tmp0[c-1]=0;}
512 while(i<c && j<24 && tmp0[i]!=0){
514 if(tmp0[i]==32){i++;}else{
515 strcpy(tmp9,&tmp0[i]);
517 tmp9[1]='H';tmp9[2]=0;
519 tmp9[2]='H';tmp9[3]=0;
521 a=str_val(tmp9);tmp9[2]=0;
522 if(strcmp(tmp9,"GT")==0){a=0x80;}
523 if(strcmp(tmp9,"VE")==0){a=0x81;}
524 if(strcmp(tmp9,"CH")==0){a=0x82;}
525 if(strcmp(tmp9,"CS")==0){a=0x83;}
526 if(strcmp(tmp9,"SS")==0){a=0x84;}
528 def_user_exc_data[ch][j++]=a;
533 strcpy(tmp0,&tmp1[c]);
534 tmp0[24]=0;strcpy(def_user_exc_memo[ch],tmp0);
538 if( str_search(li2,"#INIT_EXC=")>0 ){def_init(li);}
540 if( str_search(li2,"#CARD=")>0 ){
543 c=str_search(tmp1,",");
545 strcpy(tmp0,tmp1);tmp0[c-1]=0;ch=str_val(tmp0);
546 strcpy(tmp0,&tmp1[c]);
548 strcpy(card_name[ch],tmp0);
551 if(last_no<80*128-1){
552 tim_name[last_no++][0]=0;
553 tim_top[ch+15]=last_no;last_co=0;
559 if( str_search(li2,"#GS_PBANK")>0 ){gs_mode[ 7]|=128 ;nm=0x10380;}
560 if( str_search(li2,"#GS_RBANK")>0 ){gs_mode[ 8]|=128+64;nm=0x10400;}
561 if( str_search(li2,"#GM_PBANK")>0 ){gs_mode[ 9]|=128 ;nm=0x10480;}
562 if( str_search(li2,"#GM_RBANK")>0 ){gs_mode[10]|=128+64;nm=0x10500;}
563 if( str_search(li2,"#GX_PBANK")>0 ){gs_mode[11]|=128 ;nm=0x10580;}
564 if( str_search(li2,"#GX_RBANK")>0 ){gs_mode[12]|=128+64;nm=0x10600;}
565 if( str_search(li2,"#GY_PBANK")>0 ){gs_mode[13]|=128 ;nm=0x10680;}
566 if( str_search(li2,"#GY_RBANK")>0 ){gs_mode[14]|=128+64;nm=0x10700;}
568 if( str_search(li2,"#GS_PGROUP")>0 ){gs_mode[16]|=128 ;nm=0x10800;}
569 if( str_search(li2,"#GS_RGROUP")>0 ){gs_mode[17]|=128+64;nm=0x10880;}
571 if( str_search(li2,"#GS_GMODE=")>0){
572 int n=str_val(&li[10]);
573 if( n>=0 && n<16){gs_mode[16]&=0xf0;gs_mode[16]|=n;}
576 if( str_search(li2,"#GS_MODE=")>0){
577 int n=str_val(&li[9]);
578 if( n>=0 && n<16){gs_mode[7]&=0xf0;gs_mode[7]|=n;}
580 if( str_search(li2,"#GM_MODE=")>0){
581 int n=str_val(&li[9]);
582 if( n>=0 && n<16){gs_mode[9]&=0xf0;gs_mode[9]|=n;}
584 if( str_search(li2,"#GX_MODE=")>0){
585 int n=str_val(&li[9]);
586 if( n>=0 && n<16){gs_mode[11]&=0xf0;gs_mode[11]|=n;}
588 if( str_search(li2,"#GY_MODE=")>0){
589 int n=str_val(&li[9]);
590 if( n>=0 && n<16){gs_mode[13]&=0xf0;gs_mode[13]|=n;}
593 if( str_search(li2,"#RHY_AS=")>0 ){
595 nm=0x10000+128*18;i0=0;i1=0;
597 c=str_search(li,"=");
600 strcpy(tmp1,&li[c]);strcat(tmp1,",");
603 c=str_search(tmp1,",");if(c==0){break;}
604 strcpy(tmp0,tmp1);tmp0[c-1]=0;
605 if(n==0){cc=strch(0,tmp0);
606 }else{cc=str_val(tmp0);}
607 if((cc>=0||(n>0 && n<5))&& cc<=127){rhy_stest[n]=cc;}
608 strcpy(tmp1,&tmp1[c]);
615 if( str_search(li2,"#REC_MET")>0 ){
617 c=str_search(li,"=");
620 strcpy(tmp1,&li[c]);strcat(tmp1,",");
622 c=str_search(tmp1,",");if(c==0){break;}
623 strcpy(tmp0,tmp1);tmp0[c-1]=0;
624 rec_met[n++]=str_val(tmp0);
625 strcpy(tmp1,&tmp1[c]);
630 if( str_search(li2,"#DEFOFF")>0 ){nm=99999;}
633 /* the following configurations are introduced only UNIX version */
635 if( str_search(li2,"#PLAYER=")>0 ){
636 player_flag=li[8]-'0';strcpy(player_name,&li[10]); }
637 /* Jun.28.1998 Daisuke Nagano, Nov.12.1998 kino */
639 /*if( str_search(li2,"#ISSMFPLAYER=TRUE")>0 ){issmfplayer=1;}*/
640 /* Aug.09.1998 Daisuke Nagano, Nov.12.1998 kino */
642 if( str_search(li2,"#MIDI_PORT=")>0 ){
643 strcpy(midi_port_name, &li[11]); }
644 /* Sep.02.1998 Daisuke Nagano */
646 if( str_search(li2,"#FONT_NAME=")>0 ){
647 strcpy(font_name, &li[11]); }
648 /* Sep.04.1998 Daisuke Nagano */
650 if ( str_search(li2, "#KEY_XF1=")>0 )
651 strcpy( KEY_XF1, &li[9]);
652 if ( str_search(li2, "#KEY_XF2=")>0 )
653 strcpy( KEY_XF2, &li[9]);
654 if ( str_search(li2, "#KEY_XF3=")>0 )
655 strcpy( KEY_XF3, &li[9]);
656 if ( str_search(li2, "#KEY_XF4=")>0 )
657 strcpy( KEY_XF4, &li[9]);
658 if ( str_search(li2, "#KEY_XF5=")>0 )
659 strcpy( KEY_XF5, &li[9]);
660 if ( str_search(li2, "#KEY_KANA=")>0 )
661 strcpy( KEY_KANA, &li[10]);
662 if ( str_search(li2, "#KEY_KIGO=")>0 )
663 strcpy( KEY_KIGO, &li[10]);
664 if ( str_search(li2, "#KEY_TOROKU=")>0 )
665 strcpy( KEY_TOROKU, &li[12]);
666 /* Nov.25.1998 Daisuke Nagano */
668 if ( str_search(li2, "#KEY_INS=")>0 )
669 strcpy( KEY_INS, &li[9]);
670 if ( str_search(li2, "#KEY_DEL=")>0 )
671 strcpy( KEY_DEL, &li[9]);
672 if ( str_search(li2, "#KEY_HOME=")>0 )
673 strcpy( KEY_HOME, &li[10]);
674 if ( str_search(li2, "#KEY_UNDO=")>0 )
675 strcpy( KEY_UNDO, &li[10]);
676 if ( str_search(li2, "#KEY_RUP=")>0 )
677 strcpy( KEY_RUP, &li[9]);
678 if ( str_search(li2, "#KEY_RDOWM=")>0 )
679 strcpy( KEY_RDOWN, &li[11]);
680 if ( str_search(li2, "#KEY_OPT1=")>0 )
681 strcpy( KEY_OPT1, &li[10]);
682 if ( str_search(li2, "#KEY_OPT2=")>0 )
683 strcpy( KEY_OPT2, &li[10]);
684 /* Dec.22.1998 Daisuke Nagano */
691 c=str_search(pp,",");if( c==0 ){break;}
692 tmp0=pp;tmp0[c-1]=0;pp+=c;
695 if(c>15){tmp0[14]=0;}
699 strcpy(tim_name[nm],tmp0);
701 if(last_no<80*128-1){
703 strcpy(tim_name[last_no],tmp0);
704 tim_name[last_no++][14]=last_co;
706 if(last_co++==127){nm=99999;}
711 int ch=str_val(tmp0);
713 gs_bank[nm-0x10000]=ch;
718 defrhyno[i0][i1-1]=str_val(tmp0);
720 defrhyno[i0][0]=ctc(60,tmp0,0);
722 defrhyno[i0][1]=str_val(tmp0);
725 if(c>15){tmp0[14]=0;}
726 strcpy(defrhyna[i0],tmp0);
728 i1++;if(i1>=3){i1=0;i0++;}
734 /* if(md==1){msg(fstr(last_no,5));}*/
738 tim_name[last_no++][0]=0;
741 f=(mdlflag&0x7);if(f>2){f=2;}
742 if(f>0 && f<4){rcd->moduletype=f-1;}
744 if(mutef){rcd->mute_mode=mutef-1;}
745 if(initf){rcd->init_mode=initf-1;}
749 def_bsave(fi,last_no,mutef,initf);
755 /***************************//*4.66(2.18) 4.00(1.85)*/
756 /***************************/
758 void cnf_stgt(char *li,int nn)
764 c=str_search(li,"=");
766 strcpy(tmp1,&li[c]);strcat(tmp1,",");n=nn;
768 c=str_search(tmp1,",");if(c==0){break;}
769 strcpy(tmp0,tmp1);tmp0[c-1]=0;
770 stgt_def[n++]=str_val(tmp0);
771 strcpy(tmp1,&tmp1[c]);
776 /***************************/
777 void cnf_rvel(char *li)
783 c=str_search(li,"=");
786 strcpy(tmp1,&li[c]);strcat(tmp1,",");
789 c=str_search(tmp1,",");if(c==0){break;}
790 strcpy(tmp0,tmp1);tmp0[c-1]=0;
791 n++;cc=str_val(tmp0);
792 if(cc>=0 && cc<=127){rhy_vel[n]=cc;}
793 strcpy(tmp1,&tmp1[c]);
798 /***************************/
799 void cnf_prog(char *li,char *li2,int md)
809 strcpy(tmp1,&li[11]);strcat(tmp1,",");n=0;
811 c=str_search(tmp1,",");if( c==0 ){break;}
813 if(c>1 && tmp1[c-2]=='\\'){
815 strcpy(&tmp1[c-2],&tmp1[c-1]);
817 d=str_search(&tmp1[c-1],",");if( d==0 ){break;}
821 strcpy(tmp0,tmp1);tmp0[c-1]=0;spcut(tmp0);
822 strcpy(tmp1,&tmp1[c]);
825 strcpy(chcom_s[i][n>>1],tmp0);
828 strcpy(chcom_c[i][n>>1],tmp0);
835 /***************************/
836 void cnf_repl(char *li,char *li2,int md)
842 c=9;if(md){c=8;if(md>1){c=6;}}
845 if(li2[c]=='S' && li2[c+1]>='A' && li2[c+1]<='Z'){i=(li2[c+1]-'A')+26;c++;}else{
846 if(li2[c]==' '){i=(li2[c+1]-'A');c++;}}
848 c=str_search(li,",");if( c==0 ){return;}
851 strcpy(tmp1,&li[c/*+2*/]);
852 c=str_search(tmp1,",");if( c==0 ){return;}
853 strcpy(tmp0,tmp1);tmp0[c-1]=0;spcut(tmp0);
854 strcpy(tmp1,&tmp1[c]);spcut(tmp1);
856 while(tmp1[0]==32){strcpy(tmp1,&tmp1[1]);}
858 tmp0[35]=0;strcpy(repl_t[i+md*52],tmp0);
859 tmp1[35]=0;strcpy(repl_d[i+md*52],tmp1);
864 /***************************/
865 void def_init(char *li)
871 strcpy(tmp0,&li[10]);
874 while(j<256 && tmp0[i]!=0){
878 strcpy(tmp1,&tmp0[i]);
880 tmp1[1]='H';tmp1[2]=0;
882 tmp1[2]='H';tmp1[3]=0;
884 a=str_val(tmp1);tmp1[2]=0;
885 if(strcmp(tmp1,"CS")==0){sum=0;goto ne;}
886 if(strcmp(tmp1,"SS")==0){a=(127-(sum&0x7f)&0x7f);}
887 init_exc_data[j++]=a;sum+=a;
892 init_exc_data[j]=0xff;
895 /***************************/
897 int defsave(char *fi,int md,int mutef,int initf)
902 char gggg[12][12]={"#gs_pbank","#gs_rbank","#gm_pbank","#gm_rbank",
903 "#gx_pbank","#gx_rbank","#gy_pbank","#gy_rbank","",
904 "#gs_pgroup","#gs_rgroup"};
906 char li0[]= "*--------------------------------------------------------------------------------------\r\n";
907 char li1[]= "*======================================================================================\r\n";
910 if(!(fp=fopen2(fi,"wb"))){B_PRINT("ファイルがオープン出来ません。\r\n");exit(1);}
914 n=buf_put("\r\n#module=",n);n=buf_put(module,n);n=buf_put("\r\n\r\n",n);
919 if((mdlflag&15)==1){n=buf_put("cm64",n);}
920 if((mdlflag&15)==2){n=buf_put("sc55",n);}
921 if((mdlflag&15)==3){n=buf_put("sc88",n);}
922 if((mdlflag&15)==4){n=buf_put("05rw",n);}
927 n=buf_put("#mute=",n);
928 if(mutef==1){n=buf_put("off",n);}
929 if(mutef==2){n=buf_put("cm64",n);}
930 if(mutef==3){n=buf_put("sc55",n);}
934 n=buf_put("#init=",n);
935 if(initf==1){n=buf_put("off",n);}
936 if(initf==2){n=buf_put("cm64",n);}
937 if(initf==3){n=buf_put("sc55",n);}
938 if(initf==5){n=buf_put("sc88",n);}
944 n=buf_put("#card_no=",n);n=buf_put(fstr(card_no[0],2),n);n=buf_put("\r\n",n);
946 n=buf_put("#lsp_wait=",n);n=buf_put(fstr(lsp_wait,2),n);n=buf_put("\r\n",n);
948 n=buf_put("#pb_range=",n);n=buf_put(fstr(bend_range,2),n);n=buf_put("\r\n",n);
954 n=buf_put("\r\n#rec_met=",n);
955 for(i=0;i<8;i++){n=buf_put(fstr(rec_met[i],3),n);if(i<7){n=buf_put(",",n);}}
956 n=buf_put("\r\n\r\n",n);
962 n=buf_put("#user_exc=",n);
963 n=buf_put(fstr(i,1),n);n=buf_put(",",n);
964 n=buf_put(exc_str(def_user_exc_data[i],24,0),n);
966 n=buf_put(def_user_exc_memo[i],n);n=buf_put("\r\n",n);
970 if(init_exc_data[0]!=0xff){
971 n=buf_put("#init_exc=",n);
972 n=buf_put(exc_str(init_exc_data,256,1),n);
973 n=buf_put("\r\n\r\n",n);
978 n=buf_put("#rhy_as=",n);
979 for(i=0;i<5;i++){n=buf_put(fstr(rhy_stest[i],3),n);if(i<4){n=buf_put(",",n);}}
982 n=buf_put(defrhyna[i],n);n=buf_put(",",n);
983 n=buf_put(fstr(defrhyno[i][0],3),n);n=buf_put(",",n);
984 if(defrhyno[i][1]<100){
985 n=buf_put(fstr(defrhyno[i][1],2),n);
987 n=buf_put(fstr(defrhyno[i][1],3),n);
989 if((i&3)==3){n=buf_put("\r\n",n);}else{n=buf_put(",",n);}
991 n=buf_put("#defoff\r\n\r\n",n);
996 n=buf_put("#group_a=",n);
997 for(i=1;i<17;i++){n=buf_put(fstr(tim_asin2[i],2),n);if(i<16){n=buf_put(",",n);}}
999 n=buf_put("#group_b=",n);
1000 for(i=17;i<33;i++){n=buf_put(fstr(tim_asin2[i],2),n);if(i<32){n=buf_put(",",n);}}
1001 n=buf_put("\r\n\r\n",n);
1003 if(gs_mode[7]&15){n=buf_put("#gs_mode=",n);
1004 n=buf_put(fstr(gs_mode[7]&15,3),n);n=buf_put("\r\n\r\n",n);}
1005 if(gs_mode[9]&15){n=buf_put("#gm_mode=",n);
1006 n=buf_put(fstr(gs_mode[9]&15,3),n);n=buf_put("\r\n\r\n",n);}
1007 if(gs_mode[11]&15){n=buf_put("#gx_mode=",n);
1008 n=buf_put(fstr(gs_mode[11]&15,3),n);n=buf_put("\r\n\r\n",n);}
1009 if(gs_mode[13]&15){n=buf_put("#gy_mode=",n);
1010 n=buf_put(fstr(gs_mode[13]&15,3),n);n=buf_put("\r\n\r\n",n);}
1012 if(gs_mode[16]&128){n=buf_put("#gs_gmode=",n);
1013 n=buf_put(fstr(gs_mode[16]&15,3),n);n=buf_put("\r\n\r\n",n);}
1014 n=buf_put("\r\n",n);
1017 if(gs_mode[i]&0xf0){
1018 n=buf_put(gggg[i-7],n);n=buf_put("\r\n",n);
1021 n=buf_put(fstr(gs_bank[i*128+j],3),n);
1022 if((j&15)!=15){n=buf_put(",",n);}else{n=buf_put("\r\n",n);}
1024 n=buf_put("\r\n",n);
1030 ln=fwrite(dat,1,n,fp);n=0;
1033 if( tim_top[i-1]!=0 || tim_head[i-1][0]!=0 ){
1035 n=buf_put("#part=",n);
1036 n=buf_put(fstr(i,3),n);n=buf_put(",",n);
1037 n=buf_put(tim_head[i-1],n);n=buf_put(",",n);
1038 n=buf_put(tim_sym[i-1],n);n=buf_put("\r\n",n);
1041 stp=0;if( i==2 ){stp=64;}
1043 for(j=stp;j<128;j++){
1044 n=buf_put(spadd(tim_names(j+i*128-128),10),n);
1045 if((j&7)!=7){n=buf_put(",",n);}else{n=buf_put("\r\n",n);}
1048 n=buf_put("#defoff\r\n\r\n",n);
1053 if( tim_top[i-1]!=0 || tim_head[i-1][0]!=0 ){
1055 n=buf_put("#part=",n);
1056 n=buf_put(fstr(i,3),n);n=buf_put(",",n);
1057 n=buf_put(tim_head[i-1],n);n=buf_put(",",n);
1058 n=buf_put(tim_sym[i-1],n);n=buf_put("\r\n",n);
1062 n=buf_put(tim_names(j+i*128-128),n);
1063 if((j&3)!=3){n=buf_put(",",n);}else{n=buf_put("\r\n",n);}
1066 n=buf_put("#defoff\r\n\r\n",n);
1071 if( card_name[i][0]!=32 ){
1073 n=buf_put("#card=",n);
1074 n=buf_put(fstr(i,2),n);n=buf_put(",",n);
1075 n=buf_put(card_name[i],n);n=buf_put("\r\n",n);
1078 edp=127;while(edp>=0){
1079 if(tim_names(edp+(15+i)*128)[0]!=0){break;}
1084 for(j=0;j<=edp;j++){
1085 n=buf_put(spadd(tim_names(j+(15+i)*128),10),n);
1086 if((j&7)!=7){n=buf_put(",",n);}else{n=buf_put("\r\n",n);}
1090 n=buf_put("#defoff\r\n\r\n",n);
1095 for(i=16;i<400;i++){
1096 if( tim_top[i-1]!=0 || tim_head[i-1][0]!=0 ){
1098 n=buf_put("#part=",n);
1099 n=buf_put(fstr(i,3),n);n=buf_put(",",n);
1100 n=buf_put(tim_head[i-1],n);n=buf_put(",",n);
1101 n=buf_put(tim_sym[i-1],n);n=buf_put("\r\n",n);
1105 n=buf_put(tim_names(j+i*128-128),n);
1106 if((j&3)!=3){n=buf_put(",",n);}else{n=buf_put("\r\n",n);}
1109 n=buf_put("#defoff\r\n\r\n",n);
1111 if(i==100||i==200||i==300){ln=fwrite(dat,1,n,fp);n=0;}
1114 n=buf_put("#end\r\n\r\n",n);
1117 ln=fwrite(dat,1,n,fp);
1121 B_PRINT(_("Compile complete.\n"));
1127 /***************************//*4.66(2.18) 4.00(1.85)*/
1128 char *exc_str(unsigned char *li,int ln,int md)
1135 while(i<ln && tmp0[i]!=0){
1140 if(a==0xf7){if(md!=0){strcat(tmp0,"F7");}break;}
1143 strcat(tmp0,hex_s(a,2));
1145 if(a==0xf0){strcat(tmp0,"F0 ");}
1147 if(a==0x80){strcat(tmp0,"gt ");}
1148 if(a==0x81){strcat(tmp0,"ve ");}
1149 if(a==0x82){strcat(tmp0,"ch ");}
1150 if(a==0x83){strcat(tmp0,"cs ");}
1151 if(a==0x84){strcat(tmp0,"cs ");}
1158 /***************************/
1159 int buf_put(char *ptr,int ln)
1161 /* if((rcd->bufcap)<(po+ln)){return(po+ln);}
1169 /***************************/
1170 int def_bsave(char *fi,int last_no,int mutef,int initf)
1172 int i,ln,n,top_no,cc,ad;
1175 strmfe(fi,fi,"dfb");
1176 if(!(fp=fopen2(fi,"wb"))){B_PRINT(_("Cannot open file.\n"));exit(1);}
1178 for(i=0;i<work_size;i++){dat[i]=0;}
1180 memcpy(&dat[0x0000],"STED2DEFFILE0.01",16);
1181 memcpy(&dat[0x0010],module,32); /*module*/
1182 dat[0x30]=mdlflag; /*id*/
1183 dat[0x32]=mutef; /*mute*/
1184 dat[0x33]=initf; /*init*/
1185 n=lsp_wait;if(n<0){n=128;}dat[0x34]=n; /*lsp_wait*/
1186 dat[0x36]=bend_range; /*bend range*/
1187 dat[0x38]=card_no[0]; /*card_no*/
1190 memcpy(&dat[0x40+i*48],def_user_exc_memo[i],24);
1191 memcpy(&dat[0x40+i*48+24],def_user_exc_data[i],24); /*USER_EXC*/
1193 memcpy(&dat[0x01c0],init_exc_data,256); /*INIT_EXC*/
1195 for(i=0;i<10;i++){n=rec_met[i];if(n<0){n=128;}dat[0x2c0+i]=n;} /*REC_MET*/
1196 for(i=0;i<6;i++){n=rhy_stest[i];if(n<0){n=128;}dat[0x2ca+i]=n;} /*RHY_AS*/
1199 memcpy(&dat[0x300+i*16],defrhyna[i],14);
1200 dat[0x300+i*16+14]=defrhyno[i][0];dat[0x300+i*16+15]=defrhyno[i][1];
1202 for(i=0;i<16;i++){memcpy(&dat[0x500+i*48],card_name[i+1],48);} /*card*/
1204 memcpy(&dat[0x800],&tim_asin2[1],32); /*group*/
1205 memcpy(&dat[0x820],&gs_mode[4],14*2); /*gsmode*/
1206 memcpy(&dat[0x840],&gs_bank[128*4],14*128*2); /*gsbank*/
1209 cc=0;for(i=0;i<400;i++){if(tim_top[i]>0 || tim_head[i][0]>0){cc++;}}
1210 dat[0x1640]=cc>>8;dat[0x1641]=cc&0xff;
1211 top_no=0;while(top_no<last_no){if(tim_name[top_no][0]){break;}top_no++;}
1212 dat[0x1642]=last_no>>8;dat[0x1643]=last_no&0xff;
1213 dat[0x1644]=top_no>>8;dat[0x1645]=top_no&0xff;
1217 if(tim_top[i]>0 || tim_head[i][0]>0){
1218 memcpy(&dat[ad],tim_head[i],20);
1219 memcpy(&dat[ad+20],tim_sym[i],8);
1220 dat[ad+28]=i>>8;dat[ad+29]=i&0xff;
1221 dat[ad+30]=tim_top[i]>>8;dat[ad+31]=tim_top[i]&0xff;
1227 ln=fwrite(dat,1,ad,fp);
1230 if(ln){ln=fwrite(&tim_name[top_no][0],1,ln*15,fp);} /*tim_name*/
1234 B_PRINT(_("Compile complete.\n"));
1241 /***************************/
1242 int def_bload(char *fi,int md)
1244 int i,ln,n,f,top_no,last_no,mutef=0,initf=0,cc,ad;
1247 strmfe(fi,fi,"dfb");
1248 /*if(!(fp=fopen2(fi,"rb"))){return(-1);}*/
1249 if (!(fp=fopen2(fi,"rb"))) {
1251 strcpy( tmp0, STED_DEFAULT_PATH );
1252 strcat( tmp0, "//" );
1253 strcat( tmp0, (strrchr(fi,'/')==NULL)?fi:(strrchr(fi,'/')+1) );
1254 if (!(fp=fopen2( tmp0, "rb" ))) return(-1);
1255 } /* Oct.13.1998 by Daisuke Nagano */
1257 ln=fread(dat,1,0x1650,fp);
1262 B_PRINT(_("Loading config file.\n"));
1265 msg(_("Loading config file.\n"));
1269 B_PRINT(_("Dis-compiling config file.\n"));
1272 if( strncmp((const char *)&dat[0x0000],"STED2DEFFILE0.01",16)!=0 ){
1274 B_PRINT(_("Invalid version number of config file.\n"));
1276 msg(_("Invalid version number of config file.\n"));
1279 /*fclose(fp);return(-2);*/
1283 memcpy(module,&dat[0x0010],32); /*module*/
1284 mdlflag=dat[0x30]; /*id*/
1285 mutef=dat[0x32]; /*mute*/
1286 initf=dat[0x33]; /*init*/
1287 n=dat[0x34];if(n>127){n=-1;}lsp_wait=n; /*lsp_wait*/
1288 bend_range=dat[0x36]; /*bend range*/
1289 card_no[0]=dat[0x38]; /*card_no*/
1292 memcpy(def_user_exc_memo[i],&dat[0x40+i*48],24);
1293 memcpy(def_user_exc_data[i],&dat[0x40+i*48+24],24); /*USER_EXC*/
1295 memcpy(init_exc_data,&dat[0x01c0],256); /*INIT_EXC*/
1297 for(i=0;i<10;i++){n=dat[0x2c0+i];if(n>127){n=-1;}rec_met[i]=n;} /*REC_MET*/
1298 for(i=0;i<6;i++){n=dat[0x2ca+i];if(n>127){n=-1;}rhy_stest[i]=n;}/*RHY_AS*/
1301 memcpy(defrhyna[i],&dat[0x300+i*16],14);
1302 defrhyno[i][0]=dat[0x300+i*16+14];
1303 defrhyno[i][1]=dat[0x300+i*16+15];
1306 for(i=0;i<16;i++){memcpy(card_name[i+1],&dat[0x500+i*48],48);} /*card*/
1307 memcpy(&tim_asin2[1],&dat[0x800],32); /*group*/
1308 memcpy(&gs_mode[4],&dat[0x820],14*2); /*gsmode*/
1309 memcpy(&gs_bank[128*4],&dat[0x840],14*128*2); /*gsbank*/
1311 cc=dat[0x1640]*256+dat[0x1641];
1312 last_no=dat[0x1642]*256+dat[0x1643];
1313 top_no=dat[0x1644]*256+dat[0x1645];
1315 ln=fread(dat,1,cc*32,fp);
1319 int n=dat[ad+28]*256+dat[ad+29];
1320 memcpy(tim_head[n],&dat[ad],20);
1321 memcpy(tim_sym[n],&dat[ad+20],8);
1322 tim_top[n]=dat[ad+30]*256+dat[ad+31];
1327 if(ln){ln=fread(&tim_name[top_no][0],1,ln*15,fp);} /*tim_name*/
1332 f=(mdlflag&0x7);if(f>2){f=2;}
1333 if(f>0 && f<4){rcd->moduletype=f-1;}
1335 if(mutef){rcd->mute_mode=mutef-1;}
1336 if(initf){rcd->init_mode=initf-1;}
1340 defsave(fi,md,mutef,initf);