comparison system/system_config.cc @ 65:4416cfac86ae

Convert EUC-JP files to UTF8
author Thibaut Girka <thib@sitedethib.com>
date Fri, 26 Nov 2010 10:53:15 +0100
parents d7cde171a1de
children
comparison
equal deleted inserted replaced
64:045ca45f9610 65:4416cfac86ae
1 /* system_config.cc 1 /* system_config.cc
2 * gameexe.ini ファイルの読み込み 2 * gameexe.ini <ゃ茯粋昭
3 */ 3 */
4 4
5 /* 5 /*
6 * 6 *
7 * Copyright (C) 2000- Kazunori Ueno(JAGARL) <jagarl@creator.club.ne.jp> 7 * Copyright (C) 2000- Kazunori Ueno(JAGARL) <jagarl@creator.club.ne.jp>
39 # define dprintf(X) printf X 39 # define dprintf(X) printf X
40 #else 40 #else
41 # define dprintf(X) 41 # define dprintf(X)
42 #endif /* DEBUG_CONFIG */ 42 #endif /* DEBUG_CONFIG */
43 43
44 #define MAXTOKEN 10 /* = で区切られた領域の最大数 */ 44 #define MAXTOKEN 10 /* = у阪紊ф */
45 #define MAXVARS 32 /* , で区切られた数値の最大数 */ 45 #define MAXVARS 32 /* , у阪医ゃ紊ф */
46 46
47 // 初期化ファイルの読み込み 47 // <ゃ茯粋昭
48 /* config は 文字列、数列、その複合など、いろいろな形式がありうる */ 48 /* config 絖医茲綵√ */
49 /* 文字列と数列は一般に AyuSys_Config クラスに含める */ 49 /* 絖医筝 AyuSys_Config 鴻 */
50 50
51 51
52 /**********************************************************/ 52 /**********************************************************/
53 /* とりあえずハッシュ比較付き文字列 */ 53 /* 激ユ莠篁絖 */
54 class HashStr { 54 class HashStr {
55 const char* str; 55 const char* str;
56 unsigned int hash; 56 unsigned int hash;
57 public: 57 public:
58 HashStr(const char*); 58 HashStr(const char*);
78 return; /* invalid string */ 78 return; /* invalid string */
79 } 79 }
80 char* new_str = new char[strlen(s)+1]; 80 char* new_str = new char[strlen(s)+1];
81 strcpy(new_str, s); 81 strcpy(new_str, s);
82 str = new_str; 82 str = new_str;
83 /* calc hash... 適当 */ 83 /* calc hash... 綵 */
84 int h = strlen(s); 84 int h = strlen(s);
85 while(*s != 0) { 85 while(*s != 0) {
86 h = *s + ((h * (0x9449+*s))>>7); 86 h = *s + ((h * (0x9449+*s))>>7);
87 s++; 87 s++;
88 } 88 }
99 hash = orig.hash; 99 hash = orig.hash;
100 } 100 }
101 101
102 /********************************************************** 102 /**********************************************************
103 **AyuSys_Config_[String | Intlist] : 103 **AyuSys_Config_[String | Intlist] :
104 ** 設定の本体 104 ** 荐絎篏
105 ** original : 元設定 105 ** original : 荐絎
106 ** old_data : 前回 ClearDiff() したときの設定 106 ** old_data : ClearDiff() 荐絎
107 ** new_data : ClearDiff() 以降に設定した内容を保存 107 ** new_data : ClearDiff() 篁ラ荐絎絎鴻篆絖
108 ** データ設定: 108 ** 若粋┃絎鐚
109 ** Init() : 元設定を作成 109 ** Init() : 荐絎篏
110 ** Set() : 設定を変更 110 ** Set() : 荐絎紊
111 ** Get() : 最も新しい設定を得る 111 ** Get() : 違荐絎緇
112 ** 112 **
113 ** 変更の記録: 113 ** 紊眼荐駕
114 ** Diff() : 前回のClearDiff() から変更した内容を得る 114 ** Diff() : ClearDiff() 紊眼絎鴻緇
115 ** DiffLen() : Diff() で必要な文字列長を得る 115 ** DiffLen() : Diff() у荀絖激緇
116 ** ClearDiff() : 変更記録を消す 116 ** ClearDiff() : 紊頑蚊羔
117 ** PatchOld() : Diff() で得た記録に基づき、変更前の状態に戻す 117 ** PatchOld() : Diff() у荐蚊冴ャ紊翫倶祉
118 ** PatchNew() : Diff() で得た記録に基づき、変更後の状態に戻す 118 ** PatchNew() : Diff() у荐蚊冴ャ紊翫倶祉
119 ** 119 **
120 ** 元設定からの変更の記録: 120 ** 荐絎紊眼荐駕
121 ** SetOriginal() : 元設定に戻す 121 ** SetOriginal() : 荐絎祉
122 ** DiffOriginal() : 元設定から現在の設定の変更を得る 122 ** DiffOriginal() : 荐絎憜荐絎紊眼緇
123 ** DiffOriginalLen() : DiffOriginal() で必要な文字列長を得る 123 ** DiffOriginalLen() : DiffOriginal() у荀絖激緇
124 ** PatchOriginal() : DiffOriginal() で得た記録に基づき、設定を復旧する 124 ** PatchOriginal() : DiffOriginal() у荐蚊冴ャ荐絎緇с
125 */ 125 */
126 126
127 /************************************************ 127 /************************************************
128 ** AyuSysConfigStringItem 128 ** AyuSysConfigStringItem
129 ** 文字列をデータとしてもつ設定項目 129 ** 絖若帥よ┃絎
130 */ 130 */
131 class AyuSysConfigStringItem { 131 class AyuSysConfigStringItem {
132 char* original_data; 132 char* original_data;
133 char* old_data; 133 char* old_data;
134 char* new_data; 134 char* new_data;
158 if (o.new_data) { 158 if (o.new_data) {
159 new_data = new char[strlen(o.new_data)+1]; 159 new_data = new char[strlen(o.new_data)+1];
160 strcpy(new_data, o.new_data); 160 strcpy(new_data, o.new_data);
161 } 161 }
162 } 162 }
163 /* 設定:Init で初期化、Set で変更、Get で変更を優先して取り出す */ 163 /* 荐絎鐚Init уSet у眼Get у眼冴 */
164 void Init(int deal, const char* str) { /* deal は無視 */ 164 void Init(int deal, const char* str) { /* deal ∴ */
165 if (original_data) delete[] original_data; 165 if (original_data) delete[] original_data;
166 int len = strlen(str); 166 int len = strlen(str);
167 original_data = new char[len+1]; 167 original_data = new char[len+1];
168 strcpy(original_data, str); 168 strcpy(original_data, str);
169 original_data[len] = '\0'; 169 original_data[len] = '\0';
170 } 170 }
171 void Set(int deal, const char* str) { /* deal は無視 */ 171 void Set(int deal, const char* str) { /* deal ∴ */
172 if (new_data) delete[] new_data; 172 if (new_data) delete[] new_data;
173 int len = strlen(str); 173 int len = strlen(str);
174 new_data = new char[len+1]; 174 new_data = new char[len+1];
175 strcpy(new_data, str); 175 strcpy(new_data, str);
176 new_data[len] = '\0'; 176 new_data[len] = '\0';
177 } 177 }
178 const char* Get(int deal) const {/* deal は無視 */ 178 const char* Get(int deal) const {/* deal ∴ */
179 if (new_data) return new_data; 179 if (new_data) return new_data;
180 else if (old_data) return old_data; 180 else if (old_data) return old_data;
181 return original_data; 181 return original_data;
182 } 182 }
183 const char* GetOriginal(int deal) const { 183 const char* GetOriginal(int deal) const {
184 return original_data; 184 return original_data;
185 } 185 }
186 int Deal(void) const { 186 int Deal(void) const {
187 return 1; 187 return 1;
188 } 188 }
189 /* オリジナルからの変化の調査 : 189 /* 吾紊茯炊 :
190 ** DiffOriginal で変化を文字列で取り出し、PatchOriginal で 190 ** DiffOriginal у絖у冴PatchOriginal
191 ** 変化を反映 191 ** 紊
192 */ 192 */
193 int DiffOriginalLen(void) { 193 int DiffOriginalLen(void) {
194 if (new_data == NULL) return 0; 194 if (new_data == NULL) return 0;
195 return strlen(new_data)+1; 195 return strlen(new_data)+1;
196 } 196 }
197 void DiffOriginal(string& data) { 197 void DiffOriginal(string& data) {
198 if (new_data == NULL) { /* あり得ない */ 198 if (new_data == NULL) { /* 緇 */
199 fprintf(stderr,"AyuSysConfigStringItem::DiffOriginal : this method must not called if not required!\n"); 199 fprintf(stderr,"AyuSysConfigStringItem::DiffOriginal : this method must not called if not required!\n");
200 return; 200 return;
201 } 201 }
202 char* out_data = new char[strlen(new_data)*2+1]; 202 char* out_data = new char[strlen(new_data)*2+1];
203 char* buf = out_data; 203 char* buf = out_data;
261 } 261 }
262 }; 262 };
263 263
264 /************************************************ 264 /************************************************
265 ** AyuSysConfigIntlistItem 265 ** AyuSysConfigIntlistItem
266 ** 数値列をデータとしてもつ設定項目 266 ** 医ゅ若帥よ┃絎
267 */ 267 */
268 class AyuSysConfigIntlistItem { 268 class AyuSysConfigIntlistItem {
269 int item_deal; 269 int item_deal;
270 int* original_data; 270 int* original_data;
271 int* old_data; 271 int* old_data;
298 if (o.new_data) { 298 if (o.new_data) {
299 new_data = new int[item_deal]; 299 new_data = new int[item_deal];
300 memcpy(new_data, o.new_data, sizeof(int)*item_deal); 300 memcpy(new_data, o.new_data, sizeof(int)*item_deal);
301 } 301 }
302 } 302 }
303 /* 設定:Init で初期化、Set で変更、Get で変更を優先して取り出す */ 303 /* 荐絎鐚Init уSet у眼Get у眼冴 */
304 void Init(int deal, const int* list) { /* deal は無視 */ 304 void Init(int deal, const int* list) { /* deal ∴ */
305 if (original_data) delete[] original_data; 305 if (original_data) delete[] original_data;
306 original_data = NULL; 306 original_data = NULL;
307 if (deal <= 0) { 307 if (deal <= 0) {
308 item_deal = 0; return; 308 item_deal = 0; return;
309 } 309 }
310 item_deal = deal; 310 item_deal = deal;
311 original_data = new int[item_deal]; 311 original_data = new int[item_deal];
312 memcpy(original_data, list, sizeof(int)*deal); 312 memcpy(original_data, list, sizeof(int)*deal);
313 } 313 }
314 void Set(int deal, const int* list) { /* deal は無視 */ 314 void Set(int deal, const int* list) { /* deal ∴ */
315 item_deal = deal; 315 item_deal = deal;
316 if (new_data) delete[] new_data; 316 if (new_data) delete[] new_data;
317 new_data = new int[item_deal]; 317 new_data = new int[item_deal];
318 memcpy(new_data, list, sizeof(int)*item_deal); 318 memcpy(new_data, list, sizeof(int)*item_deal);
319 } 319 }
320 const int* Get(int deal) const {/* deal は無視 */ 320 const int* Get(int deal) const {/* deal ∴ */
321 if (item_deal == 0) return NULL; 321 if (item_deal == 0) return NULL;
322 if (deal > item_deal) { 322 if (deal > item_deal) {
323 fprintf(stderr,"AyuSysConfigIntlistItem::Get : invalid items deal %d (correct: %d)\n",deal,item_deal); 323 fprintf(stderr,"AyuSysConfigIntlistItem::Get : invalid items deal %d (correct: %d)\n",deal,item_deal);
324 return NULL; 324 return NULL;
325 } 325 }
326 if (new_data) return new_data; 326 if (new_data) return new_data;
327 else if (old_data) return old_data; 327 else if (old_data) return old_data;
328 return original_data; 328 return original_data;
329 } 329 }
330 const int* GetOriginal(int deal) const {/* deal は無視 */ 330 const int* GetOriginal(int deal) const {/* deal ∴ */
331 if (item_deal == 0) return NULL; 331 if (item_deal == 0) return NULL;
332 if (deal > item_deal) { 332 if (deal > item_deal) {
333 fprintf(stderr,"AyuSysConfigIntlistItem::Get : invalid items deal %d (correct: %d)\n",deal,item_deal); 333 fprintf(stderr,"AyuSysConfigIntlistItem::Get : invalid items deal %d (correct: %d)\n",deal,item_deal);
334 return NULL; 334 return NULL;
335 } 335 }
336 return original_data; 336 return original_data;
337 } 337 }
338 int Deal(void) const { 338 int Deal(void) const {
339 return item_deal; 339 return item_deal;
340 } 340 }
341 /* オリジナルからの変化の調査 : 341 /* 吾紊茯炊 :
342 ** DiffOriginal で変化を文字列で取り出し、PatchOriginal で 342 ** DiffOriginal у絖у冴PatchOriginal
343 ** 変化を反映 343 ** 紊
344 */ 344 */
345 int DiffOriginalLen(void) { 345 int DiffOriginalLen(void) {
346 if (new_data == NULL) return 0; 346 if (new_data == NULL) return 0;
347 return 12 * item_deal + 1; 347 return 12 * item_deal + 1;
348 } 348 }
349 void DiffOriginal(string& data) { 349 void DiffOriginal(string& data) {
350 if (new_data == NULL) { /* あり得ない */ 350 if (new_data == NULL) { /* 緇 */
351 fprintf(stderr,"AyuSysConfigStringItem::DiffOriginal : this method must not called if not required!\n"); 351 fprintf(stderr,"AyuSysConfigStringItem::DiffOriginal : this method must not called if not required!\n");
352 return; 352 return;
353 } 353 }
354 int i; char buf[1024]; 354 int i; char buf[1024];
355 for (i=0; i<item_deal; i++) { 355 for (i=0; i<item_deal; i++) {
407 // template map<HashStr, AyuSysConfigStringItem>; 407 // template map<HashStr, AyuSysConfigStringItem>;
408 // template map<HashStr, AyuSysConfigIntlistItem>; 408 // template map<HashStr, AyuSysConfigIntlistItem>;
409 409
410 /************************************************ 410 /************************************************
411 ** AyuSysConfigItem 411 ** AyuSysConfigItem
412 ** データ名 -> データ本体の map と、map 全体に 412 ** 若水 -> 若炊篏 map map 篏
413 ** 様々な操作を行うためのメソッド 413 ** 罕篏茵<純
414 */ 414 */
415 415
416 template<class ItemType, class DataType> class AyuSysConfigItem { 416 template<class ItemType, class DataType> class AyuSysConfigItem {
417 typedef map<HashStr,ItemType> maptype; 417 typedef map<HashStr,ItemType> maptype;
418 typedef typename maptype::iterator mapiterator; 418 typedef typename maptype::iterator mapiterator;
419 typedef typename maptype::const_iterator const_mapiterator; 419 typedef typename maptype::const_iterator const_mapiterator;
420 maptype data; 420 maptype data;
421 public: 421 public:
422 void SetOrig(HashStr& name, int deal, const DataType* str) { 422 void SetOrig(HashStr& name, int deal, const DataType* str) {
423 if (str == NULL) return; /* 無効 */ 423 if (str == NULL) return; /* ≦ */
424 data[name].Init(deal, str); 424 data[name].Init(deal, str);
425 } 425 }
426 void Set(HashStr& name, int deal, const DataType* new_data) { 426 void Set(HashStr& name, int deal, const DataType* new_data) {
427 if (new_data == NULL) return; /* 無効 */ 427 if (new_data == NULL) return; /* ≦ */
428 /* 設定を検索 */ 428 /* 荐絎罎膣 */
429 mapiterator it = data.find(name); 429 mapiterator it = data.find(name);
430 /* 設定が元設定に見つからないなら失敗 */ 430 /* 荐絎荐絎荀ゃ紊掩 */
431 if (it == data.end()) { 431 if (it == data.end()) {
432 fprintf(stderr,"AyuSysConfigItem::Set : there is no '%s' parameter\n",name.c_str()); 432 fprintf(stderr,"AyuSysConfigItem::Set : there is no '%s' parameter\n",name.c_str());
433 return; 433 return;
434 } 434 }
435 /* 設定を変更 */ 435 /* 荐絎紊 */
436 it->second.Set(deal, new_data); 436 it->second.Set(deal, new_data);
437 } 437 }
438 /* 新しい設定を優先して返す */ 438 /* 違荐絎菴 */
439 const DataType* Get(int deal, HashStr& name) const { 439 const DataType* Get(int deal, HashStr& name) const {
440 const_mapiterator it = data.find(name); 440 const_mapiterator it = data.find(name);
441 if (it == data.end()) return NULL; 441 if (it == data.end()) return NULL;
442 return it->second.Get(deal); 442 return it->second.Get(deal);
443 } 443 }
449 int Deal(HashStr& name) const { 449 int Deal(HashStr& name) const {
450 const_mapiterator it = data.find(name); 450 const_mapiterator it = data.find(name);
451 if (it == data.end()) return NULL; 451 if (it == data.end()) return NULL;
452 return it->second.Deal(); 452 return it->second.Deal();
453 } 453 }
454 /* オリジナルからの変化の調査 : 454 /* 吾紊茯炊 :
455 ** DiffOriginal で変化を文字列で取り出し、PatchOriginal で 455 ** DiffOriginal у絖у冴PatchOriginal
456 ** 変化を反映 456 ** 紊
457 */ 457 */
458 void DiffOriginal(string& ret_str) { 458 void DiffOriginal(string& ret_str) {
459 mapiterator it = data.begin(); 459 mapiterator it = data.begin();
460 for (; it != data.end(); it++) { 460 for (; it != data.end(); it++) {
461 int len = it->second.DiffOriginalLen(); 461 int len = it->second.DiffOriginalLen();
508 }; 508 };
509 // template AyuSysConfigItem<AyuSysConfigStringItem, char>; 509 // template AyuSysConfigItem<AyuSysConfigStringItem, char>;
510 // template AyuSysConfigItem<AyuSysConfigIntlistItem, int>; 510 // template AyuSysConfigItem<AyuSysConfigIntlistItem, int>;
511 511
512 /************************************************/ 512 /************************************************/
513 /* ラッパ */ 513 /* */
514 struct AyuSysConfigString { 514 struct AyuSysConfigString {
515 AyuSysConfigItem<AyuSysConfigStringItem,char> orig; 515 AyuSysConfigItem<AyuSysConfigStringItem,char> orig;
516 void Dump(FILE* f) const { 516 void Dump(FILE* f) const {
517 fprintf(f, "string config:\n"); 517 fprintf(f, "string config:\n");
518 orig.Dump(f); 518 orig.Dump(f);
525 orig.Dump(f); 525 orig.Dump(f);
526 } 526 }
527 }; 527 };
528 528
529 /************************************************/ 529 /************************************************/
530 /* AyuSysConfig クラス */ 530 /* AyuSysConfig */
531 int AyuSysConfig::SearchParam(const char* name) const{ 531 int AyuSysConfig::SearchParam(const char* name) const{
532 HashStr str(name); 532 HashStr str(name);
533 if (str_config->orig.Get(1, str)) return 1; /* char* のパラメータ */ 533 if (str_config->orig.Get(1, str)) return 1; /* char* <若 */
534 else if (int_config->orig.Get(1, str)) return 2; /* int のパラメータ */ 534 else if (int_config->orig.Get(1, str)) return 2; /* int <若 */
535 /* XXX.015.XXX の類のキー名を XXX.000.XXX の形に規格化して再検索 */ 535 /* XXX.015.XXX 蕁弱 XXX.000.XXX 綵≪荀弱罎膣 */
536 char name_copy[1024]; 536 char name_copy[1024];
537 strncpy(name_copy, name, 1000); 537 strncpy(name_copy, name, 1000);
538 name_copy[1000] = 0; 538 name_copy[1000] = 0;
539 char* s; 539 char* s;
540 for (s=name_copy; s != NULL; s = strchr(s,'.')) { 540 for (s=name_copy; s != NULL; s = strchr(s,'.')) {
542 s[1] = '0'; s[2] = '0'; s[3] = '0'; 542 s[1] = '0'; s[2] = '0'; s[3] = '0';
543 } 543 }
544 s++; 544 s++;
545 } 545 }
546 HashStr str2(name_copy); 546 HashStr str2(name_copy);
547 if (str_config->orig.Get(1, str2)) return 1; /* char* のパラメータ */ 547 if (str_config->orig.Get(1, str2)) return 1; /* char* <若 */
548 else if (int_config->orig.Get(1, str2)) return 2; /* int のパラメータ */ 548 else if (int_config->orig.Get(1, str2)) return 2; /* int <若 */
549 else return 0; 549 else return 0;
550 } 550 }
551 const char* AyuSysConfig::GetParaStr(const char* name) const{ 551 const char* AyuSysConfig::GetParaStr(const char* name) const{
552 HashStr str(name); 552 HashStr str(name);
553 const char* ret = str_config->orig.Get(1,str); 553 const char* ret = str_config->orig.Get(1,str);
650 void AyuSysConfig::SetOrigParamArray(const char* name, int deal, int* array) { 650 void AyuSysConfig::SetOrigParamArray(const char* name, int deal, int* array) {
651 HashStr str(name); 651 HashStr str(name);
652 int_config->orig.SetOrig(str, deal, array); 652 int_config->orig.SetOrig(str, deal, array);
653 } 653 }
654 void AyuSysConfig::SetOriginal(void) { 654 void AyuSysConfig::SetOriginal(void) {
655 /* 全ての設定を元に戻す */ 655 /* 荐絎祉 */
656 str_config->orig.SetOriginal(); 656 str_config->orig.SetOriginal();
657 int_config->orig.SetOriginal(); 657 int_config->orig.SetOriginal();
658 change_flag = 1; 658 change_flag = 1;
659 } 659 }
660 void AyuSysConfig::DiffOriginal(string& data) { 660 void AyuSysConfig::DiffOriginal(string& data) {
672 str_config->Dump(f); 672 str_config->Dump(f);
673 int_config->Dump(f); 673 int_config->Dump(f);
674 } 674 }
675 675
676 /************************************************ 676 /************************************************
677 ** AyuSysConfig のコンストラクタ: 677 ** AyuSysConfig 潟潟鴻随
678 ** 全ての config 項目を初期化する 678 ** config
679 */ 679 */
680 680
681 AyuSysConfig * AyuSysConfig::_singleton = NULL; 681 AyuSysConfig * AyuSysConfig::_singleton = NULL;
682 682
683 AyuSysConfig* AyuSysConfig::GetInstance(void) 683 AyuSysConfig* AyuSysConfig::GetInstance(void)
701 701
702 change_flag = 1; dirty_flag = 0; 702 change_flag = 1; dirty_flag = 0;
703 str_config = new AyuSysConfigString; 703 str_config = new AyuSysConfigString;
704 int_config = new AyuSysConfigIntlist; 704 int_config = new AyuSysConfigIntlist;
705 705
706 /****** 文字列 *******/ 706 /****** 絖 *******/
707 SetOrigParaStr("#WAKUPDT", "GRDAT"); /* 枠、マウスカーソルなどの画像ファイル */ 707 SetOrigParaStr("#WAKUPDT", "GRDAT"); /* 鴻若純糸<ゃ */
708 SetOrigParaStr("#REGNAME", "xclannad"); /* レジストリ名。セーブファイルの作成に使う */ 708 SetOrigParaStr("#REGNAME", "xclannad"); /* 吾鴻祉若<ゃ篏篏帥 */
709 SetOrigParaStr("#CAPTION", "xclannad"); /* ウィンドウのタイトル */ 709 SetOrigParaStr("#CAPTION", "xclannad"); /* c潟帥ゃ */
710 SetOrigParaStr("#SAVENAME","SAVE.INI"); /* セーブファイルの名前 */ 710 SetOrigParaStr("#SAVENAME","SAVE.INI"); /* 祉若<ゃ */
711 SetOrigParaStr("#SAVETITLE", "This is save file"); /* セーブファイルの先頭の文字列 */ 711 SetOrigParaStr("#SAVETITLE", "This is save file"); /* 祉若<ゃ絖 */
712 SetOrigParaStr("#SAVENOTITLE", "-----------------"); /* 使われてないセーブデータの名前 */ 712 SetOrigParaStr("#SAVENOTITLE", "-----------------"); /* 篏帥祉若若帥 */
713 SetOrigParaStr("#CGM_FILE", "MODE.CGM");/* CG mode の設定が保存されたファイル名 */ 713 SetOrigParaStr("#CGM_FILE", "MODE.CGM");/* CG mode 荐絎篆絖<ゃ */
714 SetOrigParaStr("#CGTABLE_FILE", "MODE.CGM");/* CG mode の設定が保存されたファイル名 */ 714 SetOrigParaStr("#CGTABLE_FILE", "MODE.CGM");/* CG mode 荐絎篆絖<ゃ */
715 715
716 SetOrigParaStr("#WAKU.000.000.NAME", ""); // テキストウィンドウの窓飾り画像名 716 SetOrigParaStr("#WAKU.000.000.NAME", ""); // 鴻c潟腦蕋障糸
717 SetOrigParaStr("#WAKU.000.000.BACK", ""); // テキストウィンドウのテキスト背景画像名 717 SetOrigParaStr("#WAKU.000.000.BACK", ""); // 鴻c潟鴻糸
718 SetOrigParaStr("#WAKU.000.000.BTN", ""); // テキストウィンドウのボタン画像名 718 SetOrigParaStr("#WAKU.000.000.BTN", ""); // 鴻c潟帥括糸
719 719
720 SetOrigParaStr("#MOUSE_CURSOR.000.NAME", ""); // マウスカーソルのファイル名 720 SetOrigParaStr("#MOUSE_CURSOR.000.NAME", ""); // 鴻若純<ゃ
721 SetOrigParaStr("#CURSOR.000.NAME", ""); // リターンカーソルのファイル名 721 SetOrigParaStr("#CURSOR.000.NAME", ""); // 帥若潟若純<ゃ
722 SetOrigParaStr("#SELBTN.000.NAME", ""); // 選択肢背景 722 SetOrigParaStr("#SELBTN.000.NAME", ""); // 御∵
723 SetOrigParaStr("#SELBTN.000.BACK", ""); // 選択肢背景 723 SetOrigParaStr("#SELBTN.000.BACK", ""); // 御∵
724 724
725 char name_str[8] = "#NAME.A"; 725 char name_str[8] = "#NAME.A";
726 for (i='A'; i<='Z'; i++) { 726 for (i='A'; i<='Z'; i++) {
727 name_str[6] = i; 727 name_str[6] = i;
728 SetOrigParaStr(name_str, ""); 728 SetOrigParaStr(name_str, "");
729 } 729 }
730 730
731 /****** 数値列 *******/ 731 /****** 医ゅ *******/
732 SetOrigParam("#CANCELCALL", 2, 0,0); /* キャンセルボタン(右クリック)したときに呼び出されるサブルーチン番号(メニュー) */ 732 SetOrigParam("#CANCELCALL", 2, 0,0); /* c潟祉帥(劻)若喝冴泣若括(<ャ) */
733 SetOrigParam("#COM2_TITLE", 1, 1); /* ? */ 733 SetOrigParam("#COM2_TITLE", 1, 1); /* 鐚 */
734 SetOrigParam("#COM2_TITLE_COLOR", 1, 2); /* 選択肢タイトルの色 */ 734 SetOrigParam("#COM2_TITLE_COLOR", 1, 2); /* 御≪帥ゃ */
735 SetOrigParam("#COM2_TITLE_INDENT", 1, 2); /* ? */ 735 SetOrigParam("#COM2_TITLE_INDENT", 1, 2); /* 鐚 */
736 SetOrigParam("#SAVEFILETIME", 1, 24); /* セーブする場所の数 */ 736 SetOrigParam("#SAVEFILETIME", 1, 24); /* 祉若贋 */
737 SetOrigParam("#SEEN_START", 1, 0); /* ゲームを開始するシナリオ番号 */ 737 SetOrigParam("#SEEN_START", 1, 0); /* 蚊若紮激 */
738 SetOrigParam("#SEEN_SRT", 1, 0); /* ゲームを開始するシナリオ番号(好き好き大好き) */ 738 SetOrigParam("#SEEN_SRT", 1, 0); /* 蚊若紮激(絅純絅純紊уソ) */
739 SetOrigParam("#SEEN_MENU", 1, 0); /* メニューのシナリオ番号 */ 739 SetOrigParam("#SEEN_MENU", 1, 0); /* <ャ若激 */
740 SetOrigParam("#SEEN_TEXT_CURRENT", 1, 0); /* seen.txt を root directory に置くか */ 740 SetOrigParam("#SEEN_TEXT_CURRENT", 1, 0); /* seen.txt root directory 臀 */
741 SetOrigParam("#FADE_TIME", 1, 40); /* 画面のフェード・アウトの速度 */ 741 SetOrigParam("#FADE_TIME", 1, 40); /* 脂≪с若祉≪綺 */
742 SetOrigParam("#NVL_SYSTEM",1, 0); /* テキストウィンドウが全画面か否か */ 742 SetOrigParam("#NVL_SYSTEM",1, 0); /* 鴻c潟脂≪ */
743 SetOrigParam("#WINDOW_ATTR", 5, -1, 128,128, 190, 0); /* テキストウィンドウの色 */ 743 SetOrigParam("#WINDOW_ATTR", 5, -1, 128,128, 190, 0); /* 鴻c潟 */
744 SetOrigParam("#WINDOW_ATTR_AREA", 4, 4,4,4,4); /* テキストウィンドウの範囲 */ 744 SetOrigParam("#WINDOW_ATTR_AREA", 4, 4,4,4,4); /* 鴻c潟膀 */
745 SetOrigParam("#WINDOW_ATTR_TYPE", 1, 0); /* テキストウィンドウを半透明にするか */ 745 SetOrigParam("#WINDOW_ATTR_TYPE", 1, 0); /* 鴻c潟 */
746 SetOrigParam("#WINDOW_MSG_POS", 2, 22, 350); /* テキストウィンドウの位置 */ 746 SetOrigParam("#WINDOW_MSG_POS", 2, 22, 350); /* 鴻c潟篏臀 */
747 SetOrigParam("#WINDOW_COM_POS", 2,450, 250); /* 選択ウィンドウの位置 */ 747 SetOrigParam("#WINDOW_COM_POS", 2,450, 250); /* 御c潟篏臀 */
748 SetOrigParam("#WINDOW_GRP_POS", 2, 16, 100); /* なにかのウィンドウの位置 */ 748 SetOrigParam("#WINDOW_GRP_POS", 2, 16, 100); /* c潟篏臀 */
749 SetOrigParam("#WINDOW_SUB_POS", 2, 48, 100); /* なにかのウィンドウの位置 */ 749 SetOrigParam("#WINDOW_SUB_POS", 2, 48, 100); /* c潟篏臀 */
750 SetOrigParam("#WINDOW_SYS_POS", 2, 32, 100); /* なにかのウィンドウの位置 */ 750 SetOrigParam("#WINDOW_SYS_POS", 2, 32, 100); /* c潟篏臀 */
751 SetOrigParam("#WINDOW_WAKU_TYPE", 1, 0); /* テキストウィンドウの枠の種類。xkanon 独自設定 */ 751 SetOrigParam("#WINDOW_WAKU_TYPE", 1, 0); /* 鴻c潟腮蕁xkanon 荐絎 */
752 SetOrigParam("#RETN_CONT", 1, 16); /* リターンカーソルの数 */ 752 SetOrigParam("#RETN_CONT", 1, 16); /* 帥若潟若純 */
753 SetOrigParam("#RETN_SPEED",1,100); /* リターンカーソルの動く速度 */ 753 SetOrigParam("#RETN_SPEED",1,100); /* 帥若潟若純綺 */
754 SetOrigParam("#RETN_XSIZE", 1, 16); /* リターンカーソルの大きさ */ 754 SetOrigParam("#RETN_XSIZE", 1, 16); /* 帥若潟若純紊с */
755 SetOrigParam("#RETN_YSIZE", 1, 16); /* リターンカーソルの大きさ */ 755 SetOrigParam("#RETN_YSIZE", 1, 16); /* 帥若潟若純紊с */
756 SetOrigParam("#FONT_SIZE", 1, 26); /* フォントの大きさ */ 756 SetOrigParam("#FONT_SIZE", 1, 26); /* 潟紊с */
757 SetOrigParam("#FONT_WEIGHT", 1, 100); /* フォントの weight */ 757 SetOrigParam("#FONT_WEIGHT", 1, 100); /* 潟 weight */
758 SetOrigParam("#MSG_MOJI_SIZE", 2, 12, 29); /* 文字の大きさ(半角) */ 758 SetOrigParam("#MSG_MOJI_SIZE", 2, 12, 29); /* 絖紊с(茹) */
759 SetOrigParam("#MESSAGE_SIZE", 2, 23, 3); /* メッセージウィンドウの文字数 */ 759 SetOrigParam("#MESSAGE_SIZE", 2, 23, 3); /* <祉若吾c潟絖 */
760 SetOrigParam("#COM_MESSAGE_SIZE", 2, 23, 3); /* メッセージウィンドウの文字数 */ 760 SetOrigParam("#COM_MESSAGE_SIZE", 2, 23, 3); /* <祉若吾c潟絖 */
761 SetOrigParam("#INIT_MESSAGE_SPEED", 1, 30); /* テキスト表示速度 */ 761 SetOrigParam("#INIT_MESSAGE_SPEED", 1, 30); /* 鴻茵腓咲綺 */
762 SetOrigParam("#INIT_MESSAGE_SPEED_MOD", 1, 0); /* テキスト表示 no wait */ 762 SetOrigParam("#INIT_MESSAGE_SPEED_MOD", 1, 0); /* 鴻茵腓 no wait */
763 SetOrigParam("#MESSAGE_KEY_WAIT_USE", 1, 0); /* テキスト進行オートモード */ 763 SetOrigParam("#MESSAGE_KEY_WAIT_USE", 1, 0); /* 鴻画若≪若 */
764 SetOrigParam("#MESSAGE_KEY_WAIT_TIME", 1, 1500); /* オートモードでのキー待ち時間 */ 764 SetOrigParam("#MESSAGE_KEY_WAIT_TIME", 1, 1500); /* 若≪若с弱≧ */
765 765
766 SetOrigParam("#GRP_DC_TIMES", 1, 4); /* 裏画面の数 */ 766 SetOrigParam("#GRP_DC_TIMES", 1, 4); /* 茖脂≪ */
767 SetOrigParam("#MUSIC_LINEAR_PAC",1,0); /* PCM データの 8bit -> 16bit 変換を行うか */ 767 SetOrigParam("#MUSIC_LINEAR_PAC",1,0); /* PCM 若帥 8bit -> 16bit 紊茵 */
768 SetOrigParam("#MUSIC_TYPE",1,0); /* PCM データの種類 */ 768 SetOrigParam("#MUSIC_TYPE",1,0); /* PCM 若帥腮蕁 */
769 SetOrigParam("#WINDOW_MSGBK_BOX",1,0); /* バックログ用のボタン */ 769 SetOrigParam("#WINDOW_MSGBK_BOX",1,0); /* 亥帥 */
770 SetOrigParam("#WINDOW_MSGBK_LBOX_POS",4,15,7,8,0); /* バックログ用のボタン(左)の位置 */ 770 SetOrigParam("#WINDOW_MSGBK_LBOX_POS",4,15,7,8,0); /* 亥帥(綏)篏臀 */
771 SetOrigParam("#WINDOW_MSGBK_RBOX_POS",4,7,7,0,0); /* バックログ用のボタン(左)の位置 */ 771 SetOrigParam("#WINDOW_MSGBK_RBOX_POS",4,7,7,0,0); /* 亥帥(綏)篏臀 */
772 SetOrigParam("#MSGBK_MOD",1,0); /* バックログ用のボタンを使用するか */ 772 SetOrigParam("#MSGBK_MOD",1,0); /* 亥帥潟篏睡 */
773 773
774 SetOrigParam("#WAKU.000.000.TYPE", 1, 5); 774 SetOrigParam("#WAKU.000.000.TYPE", 1, 5);
775 SetOrigParam("#WAKU.000.000.MOVE_BOX", 5, 0, 0, 0, 0, 0); // テキストウィンドウの移動用ボタン位置 775 SetOrigParam("#WAKU.000.000.MOVE_BOX", 5, 0, 0, 0, 0, 0); // 鴻c潟腱糸帥割臀
776 SetOrigParam("#WAKU.000.000.CLEAR_BOX", 5, 0, 0, 0, 0, 0); // 一時消去用ボタン位置 776 SetOrigParam("#WAKU.000.000.CLEAR_BOX", 5, 0, 0, 0, 0, 0); // 筝羔サ帥割臀
777 SetOrigParam("#WAKU.000.000.READJUMP_BOX", 5, 0, 0, 0, 0, 0); // スキップ用ボタン位置 777 SetOrigParam("#WAKU.000.000.READJUMP_BOX", 5, 0, 0, 0, 0, 0); // 鴻帥割臀
778 SetOrigParam("#WAKU.000.000.AUTOMODE_BOX", 5, 0, 0, 0, 0, 0); // オート用ボタン位置 778 SetOrigParam("#WAKU.000.000.AUTOMODE_BOX", 5, 0, 0, 0, 0, 0); // 若帥割臀
779 SetOrigParam("#WAKU.000.000.MSGBK_BOX", 5, 0, 0, 0, 0, 0); // バックログボタン位置 779 SetOrigParam("#WAKU.000.000.MSGBK_BOX", 5, 0, 0, 0, 0, 0); // 違帥割臀
780 SetOrigParam("#WAKU.000.000.MSGBKLEFT_BOX", 5, 0, 0, 0, 0, 0); // バックログ(進める)ボタン位置 780 SetOrigParam("#WAKU.000.000.MSGBKLEFT_BOX", 5, 0, 0, 0, 0, 0); // 逸蚊鐚帥割臀
781 SetOrigParam("#WAKU.000.000.MSGBKRIGHT_BOX", 5, 0, 0, 0, 0, 0); // バックログ(戻る)ボタン位置 781 SetOrigParam("#WAKU.000.000.MSGBKRIGHT_BOX", 5, 0, 0, 0, 0, 0); // 逸祉鐚帥割臀
782 SetOrigParam("#WAKU.000.000.EXBTN_000_BOX", 5, 0, 0, 0, 0, 0); // その他ボタン0位置 782 SetOrigParam("#WAKU.000.000.EXBTN_000_BOX", 5, 0, 0, 0, 0, 0); // 篁帥鰹篏臀
783 SetOrigParam("#WAKU.000.000.EXBTN_001_BOX", 5, 0, 0, 0, 0, 0); // その他ボタン1位置 783 SetOrigParam("#WAKU.000.000.EXBTN_001_BOX", 5, 0, 0, 0, 0, 0); // 篁帥鰹篏臀
784 SetOrigParam("#WAKU.000.000.EXBTN_002_BOX", 5, 0, 0, 0, 0, 0); // その他ボタン2位置 784 SetOrigParam("#WAKU.000.000.EXBTN_002_BOX", 5, 0, 0, 0, 0, 0); // 篁帥鰹篏臀
785 785
786 SetOrigParam("#WINDOW.000.MOJI_SIZE", 1, 21); // 文字サイズ 786 SetOrigParam("#WINDOW.000.MOJI_SIZE", 1, 21); // 絖泣ゃ
787 SetOrigParam("#WINDOW.000.MOJI_REP", 2, -1, 2); // 文字の余裕 787 SetOrigParam("#WINDOW.000.MOJI_REP", 2, -1, 2); // 絖篏茖
788 SetOrigParam("#WINDOW.000.MOJI_CNT", 2, 20, 3); // ウィンドウ内の文字数 788 SetOrigParam("#WINDOW.000.MOJI_CNT", 2, 20, 3); // c潟絖
789 SetOrigParam("#WINDOW.000.MOJI_POS", 4, 100, 0, 180, 40); // テキスト位置。3つ目がx で1つ目がyらしい 789 SetOrigParam("#WINDOW.000.MOJI_POS", 4, 100, 0, 180, 40); // 鴻篏臀3ょx 1ょy
790 SetOrigParam("#WINDOW.000.MOJI_SHADOW", 1, 0); // 文字に影を付けるか 790 SetOrigParam("#WINDOW.000.MOJI_SHADOW", 1, 0); // 絖綵宴篁
791 SetOrigParam("#WINDOW.000.LUBY_SIZE", 1, 8); // ルビの文字サイズ 791 SetOrigParam("#WINDOW.000.LUBY_SIZE", 1, 8); // 絖泣ゃ
792 SetOrigParam("#WINDOW.000.MOJI_MIN", 2, 8, 1); // 文字同士の隙間? 792 SetOrigParam("#WINDOW.000.MOJI_MIN", 2, 8, 1); // 絖紕鐚
793 SetOrigParam("#WINDOW.000.SELCOM_USE", 1, 0); // 選択肢の実装方法 793 SetOrigParam("#WINDOW.000.SELCOM_USE", 1, 0); // 御≪絎茖号
794 SetOrigParam("#WINDOW.000.POS", 4, 100, 0, 0, 260); // ウィンドウ位置 794 SetOrigParam("#WINDOW.000.POS", 4, 100, 0, 0, 260); // c潟篏臀
795 SetOrigParam("#WINDOW.000.ATTR_MOD", 1, 0); // ウィンドウ色 795 SetOrigParam("#WINDOW.000.ATTR_MOD", 1, 0); // c潟
796 SetOrigParam("#WINDOW.000.ATTR", 5, -1, -1, -1, -1, -1); // ウィンドウ色 796 SetOrigParam("#WINDOW.000.ATTR", 5, -1, -1, -1, -1, -1); // c潟
797 /* SELCOM はよくわからんので無視 */ 797 /* SELCOM х∴ */
798 SetOrigParam("#WINDOW.000.OPEN_ANM_MOD", 1, 0); // ウィンドウを開くときの効果らしい 798 SetOrigParam("#WINDOW.000.OPEN_ANM_MOD", 1, 0); // c潟号
799 SetOrigParam("#WINDOW.000.OPEN_ANM_TIME", 1, 500); 799 SetOrigParam("#WINDOW.000.OPEN_ANM_TIME", 1, 500);
800 SetOrigParam("#WINDOW.000.CLOSE_ANM_MOD", 1, 0); // ウィンドウを閉じるときの効果らしい 800 SetOrigParam("#WINDOW.000.CLOSE_ANM_MOD", 1, 0); // c潟号
801 SetOrigParam("#WINDOW.000.CLOSE_ANM_TIME", 1, 500); 801 SetOrigParam("#WINDOW.000.CLOSE_ANM_TIME", 1, 500);
802 SetOrigParam("#WINDOW.000.WAKU_SETNO", 1, 0); // 枠の種類 802 SetOrigParam("#WINDOW.000.WAKU_SETNO", 1, 0); // 腮蕁
803 SetOrigParam("#WINDOW.000.MOVE_USE", 1, 0); // ウィンドウ枠移動ボタン使用の可否 803 SetOrigParam("#WINDOW.000.MOVE_USE", 1, 0); // c潟腱糸帥割戎
804 SetOrigParam("#WINDOW.000.CLEAR_USE", 1, 0); // ウィンドウ枠消去ボタン使用の可否 804 SetOrigParam("#WINDOW.000.CLEAR_USE", 1, 0); // c潟羔サ帥割戎
805 SetOrigParam("#WINDOW.000.READJUMP_USE", 1, 0); // スキップボタン使用の可否 805 SetOrigParam("#WINDOW.000.READJUMP_USE", 1, 0); // 鴻帥割戎
806 SetOrigParam("#WINDOW.000.AUTOMODE_USE", 1, 0); // スキップボタン使用の可否 806 SetOrigParam("#WINDOW.000.AUTOMODE_USE", 1, 0); // 鴻帥割戎
807 SetOrigParam("#WINDOW.000.MSGBK_USE", 1, 0); // バックログボタン使用の可否 807 SetOrigParam("#WINDOW.000.MSGBK_USE", 1, 0); // 違帥割戎
808 SetOrigParam("#WINDOW.000.MSGBKLEFT_USE", 1, 0); // バックログ(進む)ボタン使用の可否 808 SetOrigParam("#WINDOW.000.MSGBKLEFT_USE", 1, 0); // 逸蚊鐚帥割戎
809 SetOrigParam("#WINDOW.000.MSGBKRIGHT_USE", 1, 0); // バックログ(戻る)ボタン使用の可否 809 SetOrigParam("#WINDOW.000.MSGBKRIGHT_USE", 1, 0); // 逸祉鐚帥割戎
810 SetOrigParam("#WINDOW.000.EXBTN_000_USE", 1, 0); // その他ボタン0使用の可否 810 SetOrigParam("#WINDOW.000.EXBTN_000_USE", 1, 0); // 篁帥鰹篏睡
811 SetOrigParam("#WINDOW.000.EXBTN_001_USE", 1, 0); // その他ボタン1使用の可否 811 SetOrigParam("#WINDOW.000.EXBTN_001_USE", 1, 0); // 篁帥鰹篏睡
812 SetOrigParam("#WINDOW.000.EXBTN_002_USE", 1, 0); // その他ボタン2使用の可否 812 SetOrigParam("#WINDOW.000.EXBTN_002_USE", 1, 0); // 篁帥鰹篏睡
813 SetOrigParam("#WINDOW.000.NAME_MOD", 1, 0); // 名前ウィンドウを別途使用するか 813 SetOrigParam("#WINDOW.000.NAME_MOD", 1, 0); // c潟ラ篏睡
814 SetOrigParam("#WINDOW.000.NAME_MOJI_SIZE", 1, 20); // 名前フォントのサイズ 814 SetOrigParam("#WINDOW.000.NAME_MOJI_SIZE", 1, 20); // 潟泣ゃ
815 SetOrigParam("#WINDOW.000.NAME_MOJI_POS", 2, 0, 0); // 名前ウィンドウの文字の位置 815 SetOrigParam("#WINDOW.000.NAME_MOJI_POS", 2, 0, 0); // c潟絖篏臀
816 SetOrigParam("#WINDOW.000.NAME_MOJI_MIN", 1, 0); // 名前ウィンドウの幅 816 SetOrigParam("#WINDOW.000.NAME_MOJI_MIN", 1, 0); // c潟綛
817 SetOrigParam("#WINDOW.000.NAME_CENTERING", 1, 1); // 名前のセンタリングの有無 817 SetOrigParam("#WINDOW.000.NAME_CENTERING", 1, 1); // 祉潟帥潟違
818 SetOrigParam("#WINDOW.000.NAME_POS", 2, 159, 78); // 名前ウィンドウ位置(左下位置らしい) 818 SetOrigParam("#WINDOW.000.NAME_POS", 2, 159, 78); // c潟篏臀鐚綏筝篏臀鐚
819 SetOrigParam("#WINDOW.000.NAME_WAKU_SETNO", 1, -1); // 名前ウィンドウ位置(左下位置らしい) 819 SetOrigParam("#WINDOW.000.NAME_WAKU_SETNO", 1, -1); // c潟篏臀鐚綏筝篏臀鐚
820 SetOrigParam("#WINDOW.000.FACE.000", 5, 0, 0, 1, 1, 1); // 顔ウィンドウ位置(始め2つがx,y、MOJI_POSからの相対位置なのに注意) 820 SetOrigParam("#WINDOW.000.FACE.000", 5, 0, 0, 1, 1, 1); // 蕁c潟篏臀(紮鐚ゃx,yMOJI_POS後鞘臀羈)
821 SetOrigParam("#WINDOW.000.KEYCUR_MOD", 3, 0, 0, 0); // リターンカーソルの位置 821 SetOrigParam("#WINDOW.000.KEYCUR_MOD", 3, 0, 0, 0); // 帥若潟若純篏臀
822 822
823 823
824 SetOrigParam("#CURSOR.000.SIZE", 2, 0, 0); // リターンカーソルの大きさ 824 SetOrigParam("#CURSOR.000.SIZE", 2, 0, 0); // 帥若潟若純紊с
825 SetOrigParam("#CURSOR.000.CONT", 1, 50); // リターンカーソルの繰り返し数 825 SetOrigParam("#CURSOR.000.CONT", 1, 50); // 帥若潟若純膵違菴
826 SetOrigParam("#CURSOR.000.SPEED", 1, 1000); // ブリンクする速さ 826 SetOrigParam("#CURSOR.000.SPEED", 1, 1000); // 潟
827 827
828 SetOrigParam("#SELBTN.000.CENTERING", 2, 0, 0); 828 SetOrigParam("#SELBTN.000.CENTERING", 2, 0, 0);
829 SetOrigParam("#SELBTN.000.BASEPOS", 2, 0, 0); // 選択肢ウィンドウの位置 829 SetOrigParam("#SELBTN.000.BASEPOS", 2, 0, 0); // 御≪c潟篏臀
830 SetOrigParam("#SELBTN.000.REPPOS", 2, 0, 50); // 選択肢ウィンドウの次の位置(相対) 830 SetOrigParam("#SELBTN.000.REPPOS", 2, 0, 50); // 御≪c潟罨<篏臀鐚後常
831 SetOrigParam("#SELBTN.000.MOJISIZE", 4, 26, 0,0,0); // 文字の大きさ 831 SetOrigParam("#SELBTN.000.MOJISIZE", 4, 26, 0,0,0); // 絖紊с
832 SetOrigParam("#SELBTN.000.MOJIDEFAULTCOL", 1, 0); // 非選択時の文字色 832 SetOrigParam("#SELBTN.000.MOJIDEFAULTCOL", 1, 0); // 御絖
833 SetOrigParam("#SELBTN.000.MOJISELECTCOL", 1, 0); // 選択時の文字色 833 SetOrigParam("#SELBTN.000.MOJISELECTCOL", 1, 0); // 御絖
834 834
835 SetOrigParam("#COLOR_TABLE.000", 3, 255,255,255); 835 SetOrigParam("#COLOR_TABLE.000", 3, 255,255,255);
836 SetOrigParam("#SHAKE.000", 3, 0,0,0); 836 SetOrigParam("#SHAKE.000", 3, 0,0,0);
837 837
838 SetOrigParam("#SELR.000",16,0,0,640,480,0,0,500,50,0,0,0,0,0,0,255,0); 838 SetOrigParam("#SELR.000",16,0,0,640,480,0,0,500,50,0,0,0,0,0,0,255,0);
848 delete str_config; 848 delete str_config;
849 delete int_config; 849 delete int_config;
850 } 850 }
851 851
852 static int SplitVar(const char* str, int* ret_var, int ret_size) { 852 static int SplitVar(const char* str, int* ret_var, int ret_size) {
853 /* , あるいは ),:( をセパレータとして、-?[0-9]+ の 853 /* , ),:( 祉若帥-?[0-9]+
854 ** フォーマットの数値列を読み込む。先頭に (、末尾に ) が付きうる。 854 ** 若医ゅ茯粋昭 (絨障 ) 篁
855 ** (),-[0-9] 以外の文字があったらそこで終了 855 ** (),-[0-9] 篁ュ絖cх篋
856 ** 得られたデータ数を返す 856 ** 緇若炊違菴
857 */ 857 */
858 if (*str == '(') str++; 858 if (*str == '(') str++;
859 int i; for (i=0; i<ret_size; i++) { 859 int i; for (i=0; i<ret_size; i++) {
860 int c; int is_positive = 1; 860 int c; int is_positive = 1;
861 /* セパレータの読み飛ばし */ 861 /* 祉若帥茯翠違 */
862 c = *str; 862 c = *str;
863 if (c == ',' || c == ':') { 863 if (c == ',' || c == ':') {
864 str++; 864 str++;
865 } else if (c == ')' && str[1] == '(') { 865 } else if (c == ')' && str[1] == '(') {
866 str += 2; 866 str += 2;
867 } 867 }
868 /* - を parse */ 868 /* - parse */
869 c = *str; 869 c = *str;
870 if (c == '-' && isdigit(str[1])) { 870 if (c == '-' && isdigit(str[1])) {
871 is_positive = -1; str++; 871 is_positive = -1; str++;
872 } else if (! isdigit(c)) { 872 } else if (! isdigit(c)) {
873 return i; /* 異常な文字を見つけた:終了 */ 873 return i; /* 医幻絖荀ゃ鐚腟篋 */
874 } 874 }
875 int number = 0; 875 int number = 0;
876 /* 数字読み込み */ 876 /* 医茯粋昭 */
877 while(isdigit( (c=*str) )) { 877 while(isdigit( (c=*str) )) {
878 number *= 10; 878 number *= 10;
879 number += c-'0'; 879 number += c-'0';
880 str++; 880 str++;
881 } 881 }
882 ret_var[i] = is_positive * number; 882 ret_var[i] = is_positive * number;
883 } 883 }
884 return i; 884 return i;
885 } 885 }
886 /* 決められた数の引数を得る。-1 ならエラーが生じた */ 886 /* 羆冴違綣違緇-1 若 */
887 static inline int SplitVar(const char* str, int& var1) { 887 static inline int SplitVar(const char* str, int& var1) {
888 if (SplitVar(str, &var1, 1) != 1) return -1; 888 if (SplitVar(str, &var1, 1) != 1) return -1;
889 return 0; 889 return 0;
890 } 890 }
891 static inline int SplitVar(const char* str, int& var1, int& var2) { 891 static inline int SplitVar(const char* str, int& var1, int& var2) {
923 delete info; return false; 923 delete info; return false;
924 } 924 }
925 unsigned char* buf_end = buf_orig + size; 925 unsigned char* buf_end = buf_orig + size;
926 int line_count = 0; 926 int line_count = 0;
927 while(buf_orig < buf_end) { 927 while(buf_orig < buf_end) {
928 /* buf_orig から一行読み込む */ 928 /* buf_orig 筝茵茯粋昭 */
929 /* その際に、 929 /*
930 ** ・頭が # 以外なら次の行までとばす 930 ** 脂 # 篁ュ罨<茵障с違
931 ** ・"" 外のスペース、TABを初めとする制御文字 (0x20 以下のASCIIコード)を削除 931 ** "" 紊鴻若鴻TAB九勝絖 (0x20 篁ヤASCII潟若)
932 ** ・= で区切る。区切りは最大で10個で、tokens に代入される 932 ** = у阪阪紊с10сtokens 篁eャ
933 ** などの操作を行う 933 ** 篏茵
934 */ 934 */
935 935
936 /* # チェック */ 936 /* # с */
937 if (*buf_orig != '#') { 937 if (*buf_orig != '#') {
938 /* 次の '\n' まで読み飛ばし */ 938 /* 罨< '\n' 障ц翠違 */
939 while(buf_orig < buf_end && 939 while(buf_orig < buf_end &&
940 *buf_orig != '\n' && *buf_orig != '\r') buf_orig++; 940 *buf_orig != '\n' && *buf_orig != '\r') buf_orig++;
941 if (buf_orig < buf_end-1 && *buf_orig == '\r' && buf_orig[1] == '\n') buf_orig += 2; 941 if (buf_orig < buf_end-1 && *buf_orig == '\r' && buf_orig[1] == '\n') buf_orig += 2;
942 else if (*buf_orig == '\r' || *buf_orig == '\n') buf_orig++; 942 else if (*buf_orig == '\r' || *buf_orig == '\n') buf_orig++;
943 line_count++; 943 line_count++;
944 continue; 944 continue;
945 } 945 }
946 /* 初期化 */ 946 /* */
947 token_deal = 1; 947 token_deal = 1;
948 tokens[0] = buf; 948 tokens[0] = buf;
949 buf_ptr = NULL; 949 buf_ptr = NULL;
950 int in_quote = 0; 950 int in_quote = 0;
951 951
952 while(buf_orig < buf_end && buf_ptr < 1023) { 952 while(buf_orig < buf_end && buf_ptr < 1023) {
953 if (in_quote) { 953 if (in_quote) {
954 /* "" の中 */ 954 /* "" 筝 */
955 int c = *buf_orig; 955 int c = *buf_orig;
956 if (c == '\n' || c == '\r') { 956 if (c == '\n' || c == '\r') {
957 break; 957 break;
958 } else if (c == '\"') { 958 } else if (c == '\"') {
959 in_quote = 0; 959 in_quote = 0;
960 } else { 960 } else {
961 buf[buf_ptr++] = c; 961 buf[buf_ptr++] = c;
962 } 962 }
963 buf_orig++; 963 buf_orig++;
964 } else { /* quote されてない */ 964 } else { /* quote */
965 /* 制御文字を読み飛ばす */ 965 /* 九勝絖茯翠違 */
966 while(*buf_orig <= 0x20 && buf_orig < buf_end && 966 while(*buf_orig <= 0x20 && buf_orig < buf_end &&
967 *buf_orig != '\n' && *buf_orig != '\r') buf_orig++; 967 *buf_orig != '\n' && *buf_orig != '\r') buf_orig++;
968 int c = *buf_orig; 968 int c = *buf_orig;
969 if (c == '\n' || c == '\r') break; 969 if (c == '\n' || c == '\r') break;
970 /* = なら次の token */ 970 /* = 罨< token */
971 if (c == '=') { 971 if (c == '=') {
972 c = 0; 972 c = 0;
973 tokens[token_deal++] = buf+buf_ptr+1; 973 tokens[token_deal++] = buf+buf_ptr+1;
974 if (token_deal >= MAXTOKEN) break; 974 if (token_deal >= MAXTOKEN) break;
975 } else if (c == '\"') { 975 } else if (c == '\"') {
978 buf[buf_ptr++] = c; 978 buf[buf_ptr++] = c;
979 buf_orig++; 979 buf_orig++;
980 } 980 }
981 } 981 }
982 buf[buf_ptr] = '\0'; 982 buf[buf_ptr] = '\0';
983 /* 末尾の \r\n を消去 */ 983 /* 絨障 \r\n 羔サ */
984 if (buf_orig < buf_end-1 && buf_orig[0] == '\r' && buf_orig[1] == '\n') buf_orig += 2; 984 if (buf_orig < buf_end-1 && buf_orig[0] == '\r' && buf_orig[1] == '\n') buf_orig += 2;
985 else if (buf_orig < buf_end && (buf_orig[0] == '\r' || buf_orig[0] == '\n')) buf_orig++; 985 else if (buf_orig < buf_end && (buf_orig[0] == '\r' || buf_orig[0] == '\n')) buf_orig++;
986 /* 必要なら parse 内容を出力 */ 986 /* 綽荀 parse 絎鴻阪 */
987 dprintf(("line %3d ",line_count)); 987 dprintf(("line %3d ",line_count));
988 for (i=0; i<token_deal; i++) { 988 for (i=0; i<token_deal; i++) {
989 dprintf(("%d:\"%s\", ",i,tokens[i])); 989 dprintf(("%d:\"%s\", ",i,tokens[i]));
990 } 990 }
991 dprintf(("\n")); 991 dprintf(("\n"));
992 if (in_quote) { 992 if (in_quote) {
993 fprintf(stderr, "Warning : open quote is found while parsing gameexe.ini, line %d\n",line_count); 993 fprintf(stderr, "Warning : open quote is found while parsing gameexe.ini, line %d\n",line_count);
994 } 994 }
995 995
996 996
997 /* 得られた内容を parse */ 997 /* 緇絎鴻 parse */
998 998
999 /* #NAME=<文字列> */ 999 /* #NAME=<絖> */
1000 int type = SearchParam(tokens[0]); 1000 int type = SearchParam(tokens[0]);
1001 if (type == 1) { /* #NAME=<文字列> */ 1001 if (type == 1) { /* #NAME=<絖> */
1002 if (token_deal != 2) { 1002 if (token_deal != 2) {
1003 dprintf(("Parse error, line %d, %s\n",line_count, tokens[0])); 1003 dprintf(("Parse error, line %d, %s\n",line_count, tokens[0]));
1004 goto parse_error; 1004 goto parse_error;
1005 } 1005 }
1006 SetOrigParaStr(tokens[0], tokens[1]); 1006 SetOrigParaStr(tokens[0], tokens[1]);
1007 goto parse_end; 1007 goto parse_end;
1008 } else if (type == 2) { /* #NAME=<数値列> */ 1008 } else if (type == 2) { /* #NAME=<医ゅ> */
1009 if (token_deal != 2) { 1009 if (token_deal != 2) {
1010 dprintf(("Parse error, line %d, %s\n",line_count, tokens[0])); 1010 dprintf(("Parse error, line %d, %s\n",line_count, tokens[0]));
1011 goto parse_error; 1011 goto parse_error;
1012 } 1012 }
1013 int number_deal = SplitVar(tokens[1], numbers, MAXVARS); 1013 int number_deal = SplitVar(tokens[1], numbers, MAXVARS);
1014 SetOrigParamArray(tokens[0], number_deal, numbers); 1014 SetOrigParamArray(tokens[0], number_deal, numbers);
1015 goto parse_end; 1015 goto parse_end;
1016 } 1016 }
1017 /* 一般的な設定以外 : cdrom track など */ 1017 /* 筝荐絎篁ュ : cdrom track */
1018 if (strncmp(tokens[0],"#NAME.", 6) == 0) { 1018 if (strncmp(tokens[0],"#NAME.", 6) == 0) {
1019 if (token_deal != 2) goto parse_error; 1019 if (token_deal != 2) goto parse_error;
1020 SetOrigParaStr(tokens[0], tokens[1]); 1020 SetOrigParaStr(tokens[0], tokens[1]);
1021 goto parse_end; 1021 goto parse_end;
1022 } else if (strncmp(tokens[0],"#DIRC.",6) == 0) { 1022 } else if (strncmp(tokens[0],"#DIRC.",6) == 0) {
1023 if (token_deal != 3) goto parse_error; 1023 if (token_deal != 3) goto parse_error;
1024 /* ファイル形式の指定 */ 1024 /* <ゃ綵√絎 */
1025 FileSearcher::FILETYPE type; 1025 FileSearcher::FILETYPE type;
1026 char* name = tokens[0]+6; 1026 char* name = tokens[0]+6;
1027 if (strcmp(name, "PDT") == 0) type = FileSearcher::PDT; 1027 if (strcmp(name, "PDT") == 0) type = FileSearcher::PDT;
1028 else if (strcmp(name, "G00") == 0) type = FileSearcher::PDT; 1028 else if (strcmp(name, "G00") == 0) type = FileSearcher::PDT;
1029 else if (strcmp(name, "GRP") == 0) type = FileSearcher::PDT; 1029 else if (strcmp(name, "GRP") == 0) type = FileSearcher::PDT;
1032 else if (strcmp(name, "ARD") == 0) type = FileSearcher::ARD; 1032 else if (strcmp(name, "ARD") == 0) type = FileSearcher::ARD;
1033 else if (strcmp(name, "CUR") == 0) type = FileSearcher::CUR; 1033 else if (strcmp(name, "CUR") == 0) type = FileSearcher::CUR;
1034 else if (strcmp(name, "WAV") == 0) type = FileSearcher::WAV; 1034 else if (strcmp(name, "WAV") == 0) type = FileSearcher::WAV;
1035 else if (strcmp(name, "KOE") == 0) type = FileSearcher::KOE; 1035 else if (strcmp(name, "KOE") == 0) type = FileSearcher::KOE;
1036 else if (strcmp(name, "GAN") == 0) type = FileSearcher::GAN; 1036 else if (strcmp(name, "GAN") == 0) type = FileSearcher::GAN;
1037 else goto parse_error; /* 他に ALL,ROOT,MID,KOE,BGM。たぶん、存在しない */ 1037 else goto parse_error; /* 篁 ALL,ROOT,MID,KOE,BGM吟絖 */
1038 if (tokens[2][0] == 'N') { /* directory */ 1038 if (tokens[2][0] == 'N') { /* directory */
1039 file_searcher->SetFileInformation(type, FileSearcher::ATYPE_DIR, tokens[1]); 1039 file_searcher->SetFileInformation(type, FileSearcher::ATYPE_DIR, tokens[1]);
1040 dprintf(("set file directory; type %s, directory %s\n",name,tokens[1])); 1040 dprintf(("set file directory; type %s, directory %s\n",name,tokens[1]));
1041 } else if (tokens[2][0] == 'P' && tokens[2][1] == ':') { /* アーカイブ */ 1041 } else if (tokens[2][0] == 'P' && tokens[2][1] == ':') { /* ≪若ゃ */
1042 file_searcher->SetFileInformation(type, FileSearcher::ATYPE_ARC, tokens[2]+2); 1042 file_searcher->SetFileInformation(type, FileSearcher::ATYPE_ARC, tokens[2]+2);
1043 dprintf(("set file archive; type %s, file %s\n",name,tokens[2]+2)); 1043 dprintf(("set file archive; type %s, file %s\n",name,tokens[2]+2));
1044 } else goto parse_error; 1044 } else goto parse_error;
1045 goto parse_end; 1045 goto parse_end;
1046 } 1046 }
1047 if (strncmp(tokens[0],"#ADRC.",6) == 0) { 1047 if (strncmp(tokens[0],"#ADRC.",6) == 0) {
1048 if (token_deal != 3) goto parse_error; 1048 if (token_deal != 3) goto parse_error;
1049 /* ファイル形式の指定 */ 1049 /* <ゃ綵√絎 */
1050 FileSearcher::FILETYPE type; 1050 FileSearcher::FILETYPE type;
1051 char* name = tokens[0]+6; 1051 char* name = tokens[0]+6;
1052 if (strcmp(name, "PDT") == 0) type = FileSearcher::PDT; 1052 if (strcmp(name, "PDT") == 0) type = FileSearcher::PDT;
1053 else if (strcmp(name, "G00") == 0) type = FileSearcher::PDT; 1053 else if (strcmp(name, "G00") == 0) type = FileSearcher::PDT;
1054 else if (strcmp(name, "GRP") == 0) type = FileSearcher::PDT; 1054 else if (strcmp(name, "GRP") == 0) type = FileSearcher::PDT;
1057 else if (strcmp(name, "ARD") == 0) type = FileSearcher::ARD; 1057 else if (strcmp(name, "ARD") == 0) type = FileSearcher::ARD;
1058 else if (strcmp(name, "CUR") == 0) type = FileSearcher::CUR; 1058 else if (strcmp(name, "CUR") == 0) type = FileSearcher::CUR;
1059 else if (strcmp(name, "WAV") == 0) type = FileSearcher::WAV; 1059 else if (strcmp(name, "WAV") == 0) type = FileSearcher::WAV;
1060 else if (strcmp(name, "KOE") == 0) type = FileSearcher::KOE; 1060 else if (strcmp(name, "KOE") == 0) type = FileSearcher::KOE;
1061 else if (strcmp(name, "GAN") == 0) type = FileSearcher::GAN; 1061 else if (strcmp(name, "GAN") == 0) type = FileSearcher::GAN;
1062 else goto parse_error; /* 他に ALL,ROOT,MID,KOE,BGM。たぶん、存在しない */ 1062 else goto parse_error; /* 篁 ALL,ROOT,MID,KOE,BGM吟絖 */
1063 if (tokens[2][0] == 'N') { /* directory */ 1063 if (tokens[2][0] == 'N') { /* directory */
1064 file_searcher->AppendFileInformation(type, FileSearcher::ATYPE_DIR, tokens[1]); 1064 file_searcher->AppendFileInformation(type, FileSearcher::ATYPE_DIR, tokens[1]);
1065 dprintf(("set file directory; type %s, directory %s\n",name,tokens[1])); 1065 dprintf(("set file directory; type %s, directory %s\n",name,tokens[1]));
1066 } else if (tokens[2][0] == 'P' && tokens[2][1] == ':') { /* アーカイブ */ 1066 } else if (tokens[2][0] == 'P' && tokens[2][1] == ':') { /* ≪若ゃ */
1067 file_searcher->AppendFileInformation(type, FileSearcher::ATYPE_ARC, tokens[2]+2); 1067 file_searcher->AppendFileInformation(type, FileSearcher::ATYPE_ARC, tokens[2]+2);
1068 dprintf(("set file archive; type %s, file %s\n",name,tokens[2]+2)); 1068 dprintf(("set file archive; type %s, file %s\n",name,tokens[2]+2));
1069 } else if (tokens[2][0] == 'R' && tokens[2][1] == ':') { /* それ散るアーカイブ */ 1069 } else if (tokens[2][0] == 'R' && tokens[2][1] == ':') { /* c≪若ゃ */
1070 file_searcher->AppendFileInformation(type, FileSearcher::ATYPE_ARC, tokens[2]+2); 1070 file_searcher->AppendFileInformation(type, FileSearcher::ATYPE_ARC, tokens[2]+2);
1071 dprintf(("set file archive; type %s, file %s\n",name,tokens[2]+2)); 1071 dprintf(("set file archive; type %s, file %s\n",name,tokens[2]+2));
1072 } else goto parse_error; 1072 } else goto parse_error;
1073 goto parse_end; 1073 goto parse_end;
1074 } 1074 }
1075 if (strncmp(tokens[0],"#FOLDNAME.",10) == 0) { 1075 if (strncmp(tokens[0],"#FOLDNAME.",10) == 0) {
1076 if (token_deal != 3) goto parse_error; 1076 if (token_deal != 3) goto parse_error;
1077 /* ファイル形式の指定 */ 1077 /* <ゃ綵√絎 */
1078 FileSearcher::FILETYPE type; 1078 FileSearcher::FILETYPE type;
1079 char* name = tokens[0]+10; 1079 char* name = tokens[0]+10;
1080 if (strcmp(name, "PDT") == 0) type = FileSearcher::PDT; 1080 if (strcmp(name, "PDT") == 0) type = FileSearcher::PDT;
1081 else if (strcmp(name, "G00") == 0) type = FileSearcher::PDT; 1081 else if (strcmp(name, "G00") == 0) type = FileSearcher::PDT;
1082 else if (strcmp(name, "GRP") == 0) type = FileSearcher::PDT; 1082 else if (strcmp(name, "GRP") == 0) type = FileSearcher::PDT;
1085 else if (strcmp(name, "ARD") == 0) type = FileSearcher::ARD; 1085 else if (strcmp(name, "ARD") == 0) type = FileSearcher::ARD;
1086 else if (strcmp(name, "CUR") == 0) type = FileSearcher::CUR; 1086 else if (strcmp(name, "CUR") == 0) type = FileSearcher::CUR;
1087 else if (strcmp(name, "WAV") == 0) type = FileSearcher::WAV; 1087 else if (strcmp(name, "WAV") == 0) type = FileSearcher::WAV;
1088 else if (strcmp(name, "BGM") == 0) type = FileSearcher::BGM; 1088 else if (strcmp(name, "BGM") == 0) type = FileSearcher::BGM;
1089 else if (strcmp(name, "GAN") == 0) type = FileSearcher::GAN; 1089 else if (strcmp(name, "GAN") == 0) type = FileSearcher::GAN;
1090 else goto parse_error; /* 他に ALL,ROOT,MID,KOE,BGM。たぶん、存在しない */ 1090 else goto parse_error; /* 篁 ALL,ROOT,MID,KOE,BGM吟絖 */
1091 if (tokens[2][0] == '0') { /* directory */ 1091 if (tokens[2][0] == '0') { /* directory */
1092 file_searcher->AppendFileInformation(type, FileSearcher::ATYPE_DIR, tokens[1]); 1092 file_searcher->AppendFileInformation(type, FileSearcher::ATYPE_DIR, tokens[1]);
1093 dprintf(("set file directory; type %s, directory %s\n",name,tokens[1])); 1093 dprintf(("set file directory; type %s, directory %s\n",name,tokens[1]));
1094 } else if (tokens[2][0] == '1' && tokens[2][1] == ':') { /* アーカイブ */ 1094 } else if (tokens[2][0] == '1' && tokens[2][1] == ':') { /* ≪若ゃ */
1095 file_searcher->AppendFileInformation(type, FileSearcher::ATYPE_SCN2k, tokens[2]+2); 1095 file_searcher->AppendFileInformation(type, FileSearcher::ATYPE_SCN2k, tokens[2]+2);
1096 dprintf(("set file archive; type %s, file %s\n",name,tokens[2]+2)); 1096 dprintf(("set file archive; type %s, file %s\n",name,tokens[2]+2));
1097 } else goto parse_error; 1097 } else goto parse_error;
1098 goto parse_end; 1098 goto parse_end;
1099 } 1099 }
1104 goto parse_end; 1104 goto parse_end;
1105 } 1105 }
1106 if (strcmp(tokens[0], "#DSTRACK") == 0) { 1106 if (strcmp(tokens[0], "#DSTRACK") == 0) {
1107 /* #DSTRACK=00000000-99999000-00782556="filename" ="name" */ 1107 /* #DSTRACK=00000000-99999000-00782556="filename" ="name" */
1108 /* #DSTRACK=00000000-99999000-00782556="name" */ 1108 /* #DSTRACK=00000000-99999000-00782556="name" */
1109 /* 第二トークンの3つめのパラメータを得る(繰り返しの時の再生開始位置) */ 1109 /* 膃篋若潟鐚ゃ<若帥緇鐚膵違菴紮篏臀鐚 */
1110 int start_pt = 0; 1110 int start_pt = 0;
1111 const char* tk1 = strchr(tokens[1], '-'); 1111 const char* tk1 = strchr(tokens[1], '-');
1112 const char* tk2 = NULL; 1112 const char* tk2 = NULL;
1113 if (tk1 && *tk1) tk2 = strchr(tk1+1, '-'); 1113 if (tk1 && *tk1) tk2 = strchr(tk1+1, '-');
1114 if (tk2 && *tk2) start_pt = atoi(tk2+1); 1114 if (tk2 && *tk2) start_pt = atoi(tk2+1);
1131 } 1131 }
1132 } 1132 }
1133 dprintf(("Set SE %d, name %s\n",atoi(tokens[0]+4), tokens[1])); 1133 dprintf(("Set SE %d, name %s\n",atoi(tokens[0]+4), tokens[1]));
1134 goto parse_end; 1134 goto parse_end;
1135 } 1135 }
1136 /* 設定項目が見つからなかった */ 1136 /* 荐絎荀ゃc */
1137 dprintf(("Cannot find configuration name: %s\n",tokens[0])); 1137 dprintf(("Cannot find configuration name: %s\n",tokens[0]));
1138 parse_error: 1138 parse_error:
1139 parse_end: 1139 parse_end:
1140 line_count++; 1140 line_count++;
1141 } 1141 }
1142 delete info; 1142 delete info;
1143 /* デフォルトのオプションを指定する */ 1143 /* 激с潟絎 */
1144 // set_game(GetParaStr("#REGNAME"), *this); 1144 // set_game(GetParaStr("#REGNAME"), *this);
1145 return true; 1145 return true;
1146 } 1146 }
1147 1147
1148 TrackName::TrackName(void) { 1148 TrackName::TrackName(void) {