// *********************************************** // P_INIT.C - screen + pad initialisation // *********************************************** // **** includes #include "init.h" #include "addrs.h" #include "global.h" // **** defines #define MVOL 127 /* Main volume level*/ #define SVOL 127 /* SEQ volume level*/ #define DFILE 2 /* File number*/ typedef struct { char *fname; void *addr; CdlFILE finfo; } FILE_INFO; static FILE_INFO dfile[DFILE] = { {"\\DATA\\SOUND\\STD0.VH;1", (void *)FONT_TIM, 0}, {"\\DATA\\SOUND\\STD0.VB;1", (void *)NY_1_TIM, 0}}; static short vab; // **** initialise the graphics void InitScreen(void) { SetVideoMode(MODE_PAL); GsInitGraph(320, 256, GsOFSGPU, 1 , 0); GsDefDispBuff(0, 0, 0, 256); GsInit3D(); OTable_Header[0].length = OTABLE_LENGTH; OTable_Header[1].length = OTABLE_LENGTH; OTable_Header[2].length = OTABLE_LENGTH; OTable_Header[3].length = OTABLE_LENGTH; OTable_Header[4].length = OTABLE_LENGTH; OTable_Header[5].length = OTABLE_LENGTH; OTable_Header[0].org = &OTable_Array[0][CHAR_OFFSET]; OTable_Header[1].org = &OTable_Array[1][CHAR_OFFSET]; OTable_Header[2].org = &OTable_Array[0][0]; OTable_Header[3].org = &OTable_Array[1][0]; OTable_Header[4].org = &OTable_Array[0][CHAR_OFFSET-2]; OTable_Header[5].org = &OTable_Array[1][CHAR_OFFSET-2]; GsClearOt(0, 0, &OTable_Header[0]); GsClearOt(0, 0, &OTable_Header[1]); FntLoad(960, 256); Fnt = FntOpen(-160, 60, 320, 48, 0, 256); } // **** initialise the joypad reading variables void InitPad(void) { GetPadBuf(&bb0, &bb1); } // **** read status of the joypads u_long ReadPad(void) { return(~(*(bb0+3) | *(bb0+2) << 8 | *(bb1+3) << 16 | *(bb1+2) << 24)); } void datafile_search() { int i, j; for (i = 0; i < DFILE; i++) { for (j = 0; j < 10; j++) { if (CdSearchFile(&(dfile[i].finfo), dfile[i].fname) != 0) break; else printf("%s not found.\n", dfile[i].fname); } } // printf("** "); } void datafile_read() { int i, j; int cnt; for (i = 0; i < DFILE; i++) { for (j = 0; j < 10; j++) { CdReadFile(dfile[i].fname, dfile[i].addr,dfile[i].finfo.size); while ((cnt = CdReadSync(1, 0)) > 0 ) VSync(0); if (cnt == 0) break; } } } void init_sound() { vab = SsVabTransfer( (u_char*)FONT_TIM, (u_char*)NY_1_TIM, -1, 1 ); if (vab < 0) { printf("SsVabTransfer failed (%d)\n", vab); return; } SONG[0] = SsSeqOpen((u_long *)SONG1_SEQ, vab); SONG[1] = SsSeqOpen((u_long *)SONG2_SEQ, vab); SONG[2] = SsSeqOpen((u_long *)SONG3_SEQ, vab); SONG[3] = SsSeqOpen((u_long *)SONG4_SEQ, vab); SONG[4] = SsSeqOpen((u_long *)SONG5_SEQ, vab); SONG[5] = SsSeqOpen((u_long *)SONG6_SEQ, vab); SONG[6] = SsSeqOpen((u_long *)SONG7_SEQ, vab); SONG[7] = SsSeqOpen((u_long *)SONG8_SEQ, vab); } void play_sound(u_long tSeq) { SsSetMVol(MVOL, MVOL); SsSeqSetVol(tSeq, SVOL, SVOL); SsSeqPlay(tSeq, SSPLAY_PLAY, SSPLAY_INFINITY); // printf("** "); } void stop_sound(u_long tSeq) { SsSeqStop(tSeq); VSync(0); VSync(0); } void close_sound() { SsSeqStop(SONG[0]); SsSeqStop(SONG[1]); SsSeqStop(SONG[2]); SsSeqStop(SONG[3]); SsSeqStop(SONG[4]); SsSeqStop(SONG[5]); SsSeqStop(SONG[6]); SsSeqStop(SONG[7]); VSync(0); VSync(0); SsSeqClose(SONG[0]); SsSeqClose(SONG[1]); SsSeqClose(SONG[2]); SsSeqClose(SONG[3]); SsSeqClose(SONG[4]); SsSeqClose(SONG[5]); SsSeqClose(SONG[6]); SsSeqClose(SONG[7]); SsVabClose(vab); }