-0x00, 0x01, /* modulator frequency multiple... 0x20 */\r
-0x00, 0x00, /* modulator frequency level... 0x40 */\r
-0xF0, 0xF0, /* modulator attack/decay... 0x60 */\r
-0x73, 0x73, /* modulator sustain/release... 0x80 */\r
-0x03, 0x00, /* output waveform distortion 0xE0 */\r
-0x36, /* feedback algorithm and strength 0xC0 */\r
-};
-
- IN_Startup();
- FMReset();
- FMSetVoice(0, &testInst);
- printf("press Z! to noise\npress ESC to quit");
- printf("p");
- while(!IN_qb(1))
- {
- if(IN_qb(44))
- {
- printf("e");\r
- FMKeyOn(0, 0x106, 4);
- }
- else
- {
- FMKeyOff(0);
+ static global_game_variables_t gvar;\r
+ word i;\r
+ boolean done;\r
+ ScanCode scan;\r
+// static FMInstrument testInst =\r
+//{\r
+//0x00, 0x01, /* modulator frequency multiple... 0x20 */\r
+//0x00, 0x00, /* modulator frequency level... 0x40 */\r
+//0xF0, 0xF0, /* modulator attack/decay... 0x60 */\r
+//0x73, 0x73, /* modulator sustain/release... 0x80 */\r
+//0x03, 0x00, /* output waveform distortion 0xE0 */\r
+//0x36, /* feedback algorithm and strength 0xC0 */\r
+//};\r
+\r
+ //FMReset();\r
+ //FMSetVoice(0, &testInst);\r
+ if(!init_adlib())\r
+ {\r
+ printf("Cannot init library\n");\r
+ exit(-1);\r
+ }\r
+ IN_Startup(&gvar);\r
+\r
+ if (adlib_fm_voices > 9)\r
+ printf("OPL3!\n");\r
+// vga_bios_set_80x50_text();\r
+\r
+ memset(adlib_fm,0,sizeof(adlib_fm));\r
+ memset(&adlib_reg_bd,0,sizeof(adlib_reg_bd));\r
+ for (i=0;i < adlib_fm_voices;i++) {\r
+ struct adlib_fm_operator *f;\r
+ f = &adlib_fm[i].mod;\r
+ f->ch_a = f->ch_b = f->ch_c = f->ch_d = 1;\r
+ f = &adlib_fm[i].car;\r
+ f->ch_a = f->ch_b = f->ch_c = f->ch_d = 1;\r
+ }\r
+\r
+ for (i=0;i < /*adlib_fm_voices*/1;i++) {\r
+ struct adlib_fm_operator *f;\r
+\r
+ f = &adlib_fm[i].mod;\r
+ f->mod_multiple = 1;\r
+ f->total_level = 63 - 16;\r
+ f->attack_rate = 15;\r
+ f->decay_rate = 0;\r
+ f->sustain_level = 7;\r
+ f->release_rate = 7;\r
+ f->f_number = musical_scale[i%18];\r
+ f->octave = 4;\r
+ f->key_on = 0;\r
+\r
+ f = &adlib_fm[i].car;\r
+ f->mod_multiple = 1;\r
+ f->total_level = 63 - 16;\r
+ f->attack_rate = 15;\r
+ f->decay_rate = 0;\r
+ f->sustain_level = 7;\r
+ f->release_rate = 7;\r
+ f->f_number = 0;\r
+ f->octave = 0;\r
+ f->key_on = 0;\r
+ }\r
+\r
+ adlib_apply_all();\r
+\r
+ printf("press Z! to noise\npress ESC to quit");\r
+ printf("\np");\r
+ for (done = false;!done;)\r
+ {\r
+ while (!(scan = gvar.in.inst->LastScan))\r
+ {}\r
+// SD_Poll();\r
+\r
+ IN_ClearKey(scan);\r
+ switch (scan)\r
+ {\r
+ case sc_Escape:\r
+ done = true;\r
+ break;\r
+ case sc_Z:\r
+ adlib_fm[0].mod.key_on = 1;\r
+ //FMKeyOn(0, 0x106, 4);\r
+ break;\r
+ default:\r
+ adlib_fm[0].mod.key_on = 0;\r
+ //FMKeyOff(0);\r
+ break;\r