///////////////////////////// FICHEROS A INCLUIR ///////////////////////////// #include #include #include #include #include #include #include #include "CD_SND.H" //extern unsigned _stklen = 16000U; #include "XmsSupp.h" #include "cd_icons.h" #include "cd_error.h" #include "c:\program\src_dos\libs\make_bot\make_bot.h" #include "c:\program\src_dos\libs\wavplav\wavplay.h" extern int /*far _cdecl*/ Fichero_cd_img(char Dinamicos_Estaticos); extern int far _Cdecl Svga256_fdriver[]; int huge DetectVGA256(){ return 2; } int Load_Snd(void); extern void Menu_de_Edicion(void); extern void Inicializa_Iconos(void); extern Abre_Ficha_CD_CFG(int R_W); extern void Coloca_Iconos(int Start_Icon); extern void Coloca_Iconos_Dos_Windows(void); extern void Inicializa_Dibujo(int L_Imagen, char *N_Imagen2); extern char far *Icono; void InicializaSVGA(void); extern char dac[256*3]; extern "C" void APAGA_PANTALLA(char *); extern "C" void ENCIENDE_PANTALLA(char *); extern char far *dir_vga; extern "C" void CHANGE_BANK(int); char _XMS = 1; // int Raton_o_Tecla(void); void Sonido( char Sonido ); typedef struct { unsigned int Exit_after_EXE : 1; unsigned int With_Out_Sound : 1; unsigned int Auto_Install : 1; unsigned int Check_Free_Size : 1; unsigned int Format_Always : 1; unsigned int Without_Backgr : 1; unsigned int Futura_Ampliac : 4; } Cd_CFG; extern Cd_CFG CD_CFG1; char _VerImagen = 1; XmsSupp Xms_Image_Bank1, Xms_Image_Bank2, Xms_Image_Bank3, Xms_Image_Bank4, Xms_Image_Bank5; typedef struct { char Nombre_del_Programa[70]; char Comentario_Inicial[70]; char VerHi, VerLow; char Register; long Records; } CABECERA; typedef struct { char Wave_Name[13]; // Nombre del Wave char ID_code; // Codigo ID_ del Wave unsigned long Pos; // Posici¢n de comienzo dentro del archivo destino unsigned long Len; // Longitud } CD_SND; CD_SND CD_Snd[19]; int main(int argc, char *argv[]){ // /*Û*/ if( Fichero_cd_img(0) /*Û*/ // /*Û*/ == SIN_MEMORIA ) { // "botones.p1" /*Û*/ // /*Û*/ closegraph(); /*Û*/ // /*Û*/ cprintf("\n\rError en la CARGA DE BOTONES"); /*Û*/ // /*Û*/ exit(112); /*Û*/ // /*Û*/ } /*Û*/ // despliega_datos(); // getch(); // return 21; int L_Imagen = -1; char *N_Imagen2; // ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ // Û Carga de los argumentos Û //ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ// /*Û*/ /*Û*/ /*Û*/ for(int i=1; i<=argc; i++) /*Û*/ /*Û*/ { /*Û*/ /*Û*/ if( strcmp( argv[i], "-0") == 0 ) L_Imagen=0; else /*Û*/ /*Û*/ if( strcmp( argv[i], "-1") == 0 ) L_Imagen=1; else /*Û*/ /*Û*/ if( strcmp( argv[i], "-2") == 0 ) L_Imagen=2; else /*Û*/ /*Û*/ if( strcmp( argv[i], "-3") == 0 ) L_Imagen=3; else /*Û*/ /*Û*/ if( strcmp( argv[i], "-4") == 0 ) L_Imagen=4; else /*Û*/ /*Û*/ if( strcmp( argv[i], "-5") == 0 ) L_Imagen=5; else /*Û*/ /*Û*/ if( strcmp( argv[i], "-6") == 0 ) L_Imagen=6; else /*Û*/ /*Û*/ if( strcmp( argv[i], "-7") == 0 ) L_Imagen=7; else /*Û*/ /*Û*/ if( strcmp( argv[i], "-8") == 0 ) L_Imagen=8; else /*Û*/ /*Û*/ if( strcmp( argv[i], "-9") == 0 ) L_Imagen=9; else /*Û*/ /*Û*/ if( strncmpi( argv[i], "-N:", 3) == 0 ) { L_Imagen=-2; /*Û*/ /*Û*/ N_Imagen2 = argv[i]; /*Û*/ /*Û*/ N_Imagen2 += 3; /*Û*/ /*Û*/ } else /*Û*/ /*Û*/ if( strcmp( argv[i], "-NO_XMS") == 0 ) _VerImagen = 0; /*Û*/ /*Û*/ if( strcmp( argv[i], "-NO_SND") == 0 ) CD_CFG1.With_Out_Sound=1;/*Û*/ /*Û*/ } /*Û*/ /*Û*/ /*Û*/ //ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ// // ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ // Û Carga la Configuraci¢n Û //ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ// /*Û*/ /*Û*/ /*Û*/ clrscr(); /*Û*/ /*Û*/ cprintf("JD & CD_OUT\r\n\r\n"); /*Û*/ /*Û*/ cprintf("Cargando fichero de Configuraci¢n. "); /*Û*/ /*Û*/ Abre_Ficha_CD_CFG(0); /*Û*/ /*Û*/ cprintf(" --> Ok!\n\r"); /*Û*/ /*Û*/ /*Û*/ //ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ// // ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ // Û Inicializaci¢n Sonidos Û //ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ// /*Û*/ if ( !CD_CFG1.With_Out_Sound ) /*Û*/ /*Û*/ { /*Û*/ /*Û*/cprintf("Inicializando sonidos. "); /*Û*/ /*Û*/ switch ( InitSB() ) { /*Û*/ /*Û*/ case 0: /*Û*/ /*Û*/ cprintf(" --> Speaker Ok!\n\r"); /*Û*/ /*Û*/ break; /*Û*/ /*Û*/ case 1: /*Û*/ /*Û*/ cprintf(" --> Sound Blaster Ok!\n\r"); /*Û*/ /*Û*/ break; /*Û*/ /*Û*/ case 2: /*Û*/ /*Û*/ cprintf(" --> Dac Casero Ok!\n\r"); /*Û*/ /*Û*/ break; /*Û*/ /*Û*/ } /*Û*/ /*Û*/ } else cprintf(" --> Sin Sonidos Ok!\n\r"); /*Û*/ /*Û*/ /*Û*/ /*Û*/cprintf("Cargando estructura de sonidos. "); /*Û*/ /*Û*/if( !Load_Snd() ) /*Û*/ /*Û*/{ /*Û*/ /*Û*/ CD_CFG1.With_Out_Sound = 0; /*Û*/ /*Û*/ cprintf(" --> ERROR EN LA CARGA DE SONIDOS!\n\r"); /*Û*/ /*Û*/} else { /*Û*/ /*Û*/ cprintf(" --> Ok!\n\r"); /*Û*/ /*Û*/} /*Û*/ /*Û*/ /*Û*/ /*Û*/ /*Û*/ /*Û*/ /*Û*/ //ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ// // ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ // Û Inicializaci¢n de la XMS Û //ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ// /*Û*/ /*Û*/ /*Û*/ cprintf("Inicializando XMS... \n\r"); /*Û*/ /*Û*/ /*Û*/ /*Û*/ // Errores en Inicializacion XMS. /*Û*/ /*Û*/ /*Û*/ /*Û*/ Xms_Image_Bank1.lError=0; /*Û*/ /*Û*/ Xms_Image_Bank2.lError=0; /*Û*/ /*Û*/ Xms_Image_Bank3.lError=0; /*Û*/ /*Û*/ Xms_Image_Bank4.lError=0; /*Û*/ /*Û*/ Xms_Image_Bank5.lError=0; /*Û*/ /*Û*/ /*Û*/ /*Û*/ InitXms(&Xms_Image_Bank1); /*Û*/ /*Û*/ InitXms(&Xms_Image_Bank2); /*Û*/ /*Û*/ InitXms(&Xms_Image_Bank3); /*Û*/ /*Û*/ InitXms(&Xms_Image_Bank4); /*Û*/ /*Û*/ InitXms(&Xms_Image_Bank5); /*Û*/ /*Û*/ /*Û*/ /*Û*/ GetInfo(&Xms_Image_Bank1); // Informe de estado. /*Û*/ /*Û*/ if(Xms_Image_Bank1.lError || Xms_Image_Bank2.lError || /*Û*/ /*Û*/ Xms_Image_Bank3.lError || Xms_Image_Bank4.lError || /*Û*/ /*Û*/ Xms_Image_Bank5.lError )/*Û*/ /*Û*/ /*Û*/ /*Û*/ { /*Û*/ /*Û*/ printf("Bank1 %s\n",Xms_Image_Bank1.cError); /*Û*/ /*Û*/ printf("Bank2 %s\n",Xms_Image_Bank2.cError); /*Û*/ /*Û*/ printf("Bank3 %s\n",Xms_Image_Bank3.cError); /*Û*/ /*Û*/ printf("Bank4 %s\n",Xms_Image_Bank4.cError); /*Û*/ /*Û*/ printf("Bank5 %s\n",Xms_Image_Bank5.cError); /*Û*/ /*Û*/ _XMS = 0; /*Û*/ /*Û*/ } /*Û*/ /*Û*/ // Reservamos 64K * 5 bancos. Si hay Error lo Visualizamos. /*Û*/ /*Û*/ AllocXms( 64, &Xms_Image_Bank1); /*Û*/ /*Û*/ AllocXms( 64, &Xms_Image_Bank2); /*Û*/ /*Û*/ AllocXms( 64, &Xms_Image_Bank3); /*Û*/ /*Û*/ AllocXms( 64, &Xms_Image_Bank4); /*Û*/ /*Û*/ AllocXms( 64, &Xms_Image_Bank5); /*Û*/ /*Û*/ if(Xms_Image_Bank1.lError || Xms_Image_Bank2.lError || /*Û*/ /*Û*/ Xms_Image_Bank3.lError || Xms_Image_Bank4.lError || /*Û*/ /*Û*/ Xms_Image_Bank5.lError )/*Û*/ /*Û*/ /*Û*/ /*Û*/ { /*Û*/ /*Û*/ printf("Bank1 %s\n",Xms_Image_Bank1.cError); /*Û*/ /*Û*/ printf("Bank2 %s\n",Xms_Image_Bank2.cError); /*Û*/ /*Û*/ printf("Bank3 %s\n",Xms_Image_Bank3.cError); /*Û*/ /*Û*/ printf("Bank4 %s\n",Xms_Image_Bank4.cError); /*Û*/ /*Û*/ printf("Bank5 %s\n",Xms_Image_Bank5.cError); /*Û*/ /*Û*/ _XMS = 0; /*Û*/ /*Û*/ /*Û*/ /*Û*/ } /*Û*/ //ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ// // ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ // Û Inicializaci¢n Pantalla Û //ÛßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßÛ// /*Û*/ /*Û*/ /*Û*/ InicializaSVGA(); /*Û*/ ///*Û*/ APAGA_PANTALLA(dac); /*Û*/ /*Û*/ memset( dac, 0, 256*3 ); /*Û*/ unsigned Segt = FP_SEG(dac), Off = FP_OFF(dac); /*Û*/ asm mov ax, 0x1012 ; /*Û*/ /*Û*/ asm mov bx, 0 ; /*Û*/ /*Û*/ asm mov cx, 256 ; /*Û*/ /*Û*/ asm mov es, Segt ; /*Û*/ /*Û*/ asm mov dx, Off ; /*Û*/ /*Û*/ asm int 0x10 ; /*Û*/ /*Û*/ /*Û*/ /*Û*/ if( CD_CFG1.Without_Backgr != 1 ) /*Û*/ /*Û*/ Inicializa_Dibujo( L_Imagen, N_Imagen2 ); /*Û*/ /*Û*/ /*Û*/ /*Û*///if( carga_botones("cd_out.img") // Carga botones del fichero/*Û*/ /*Û*/ if( Fichero_cd_img(0) /*Û*/ /*Û*/ != 1 ) { // "botones.p1" /*Û*/ /*Û*/ closegraph(); /*Û*/ /*Û*/ cprintf("\n\rError en la CARGA DE BOTONES"); /*Û*/ /*Û*/ exit(112); /*Û*/ /*Û*/ } /*Û*/ /*Û*/ /*Û*/ /*Û*///Imprime_Estaticos( 1, "cd_out.img"); // Imprime botones estaticos/*Û*/ /*Û*/ Fichero_cd_img(1); /*Û*/ /*Û*/ // 'Seccion 1' /*Û*/ /*Û*/ Imprime_Secuencia(1); // Imprime secuencia 1. /*Û*/ /*Û*/ /*Û*/ /*Û*///Imprime_Estaticos( 2, "cd_out.img"); // Imprime botones estaticos/*Û*/ /*Û*/ Fichero_cd_img(2); /*Û*/ /*Û*/ // 'Seccion 2' para los textosÛ*/ /*Û*/ PunteroRaton = 100; /*Û*/ /*Û*/ inicializa_raton_grafico( 0, 0, 618, 460); /*Û*/ /*Û*/ if ( PunteroRaton != 100 ) { /*Û*/ /*Û*/ closegraph(); /*Û*/ /*Û*/ cprintf("Memoria_Insuficiente para el RATON\n\r");/*Û*/ /*Û*/ exit(1); /*Û*/ /*Û*/ } /*Û*/ /*Û*/ /*Û*/ /*Û*/ Inicializa_Iconos(); /*Û*/ /*Û*/ Coloca_Iconos_Dos_Windows(); /*Û*/ /*Û*/ Coloca_Iconos(1); /*Û*/ /*Û*/ /*Û*/ /*Û*/ ENCIENDE_PANTALLA(dac); /*Û*/ /*Û*/ /*Û*/ /*Û*/ True_Push = ON; // Activa el TRUE PUSH ( PRESION REAL )/*Û*/ /*Û*/ /*Û*/ //ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ// // Sonido("CD_OUT00.WAV"); Sonido( Start_Program ); Menu_de_Edicion(); // ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ // ± Liberacion miscelanea ± //±ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß±// /*±*/ Libera_Raton_Animado(); /*±*/ /*±*/ /*±*/ /*±*/ APAGA_PANTALLA(dac); /*±*/ /*±*/ closegraph(); /*±*/ /*±*/ farfree(Icono); /*±*/ /*±*/ /*±*/ /*±*/// Sonido("CD_OUTFF.WAV"); /*±*/ /*±*/ Sonido( End_Program ); /*±*/ /*±*/ DeInitSB(); /*±*/ //±ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜܱ// // ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ // ± Liberacion de la XMS ± //±ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß±// /*±*/ // Liberamos XMS si hay ERROR lo Visualizamos. /*±*/ /*±*/ FreeXms(&Xms_Image_Bank1); /*±*/ /*±*/ FreeXms(&Xms_Image_Bank2); /*±*/ /*±*/ FreeXms(&Xms_Image_Bank3); /*±*/ /*±*/ FreeXms(&Xms_Image_Bank4); /*±*/ /*±*/ FreeXms(&Xms_Image_Bank5); /*±*/ /*Û*/ if(Xms_Image_Bank1.lError || Xms_Image_Bank2.lError || Xms_Image_Bank3.lError || Xms_Image_Bank4.lError || Xms_Image_Bank5.lError )/*Û*/ /*Û*/ /*Û*/ /*Û*/ { /*Û*/ /*Û*/ printf("Bank1 %s\n",Xms_Image_Bank1.cError); /*Û*/ /*Û*/ printf("Bank2 %s\n",Xms_Image_Bank2.cError); /*Û*/ /*Û*/ printf("Bank3 %s\n",Xms_Image_Bank3.cError); /*Û*/ /*Û*/ printf("Bank4 %s\n",Xms_Image_Bank4.cError); /*Û*/ /*Û*/ printf("Bank5 %s\n",Xms_Image_Bank5.cError); /*Û*/ /*Û*/ _XMS = 0; /*Û*/ /*Û*/ } /*Û*/ /*±*/ /*±*/ //±ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜܱ// cprintf("Programa registrado a: [ SEGUEL ], n§ reg. 034-002\n\r"); cprintf("\n\r"); cprintf("Gracias por utilizar mi Software\n\r"); cprintf(" Jos‚ David Guill‚n\n\r"); cprintf(" (versi¢n gratuita en: http:\\\\www.arrakis.es\\~infomundo\\JD\n\r"); cprintf("\n\r"); cprintf("­­­ El autor de este programa no se hace responsable de la utilizaci¢n\n\r"); cprintf(" del mismo, para la catalogaci¢n de CD's con contenido pirata. !!!\n\r"); cprintf("\n\r"); return 0; } void InicializaSVGA(void) { int Gd = DETECT, Gm; int Drv, errorcode; installuserdriver("Svga256",DetectVGA256); /* If driver is linked with file, remove comments */ registerfarbgidriver(Svga256_fdriver); errorcode = registerfarbgifont(small_font_far); /* report any registration errors */ if (errorcode < 0) { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* terminate with an error code */ } initgraph(&Gd,&Gm,""); /* read result of initialization */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Presione una tecla para finalizar:"); getch(); exit(1); /* return with error code */ } } void Sonido(char Sonido){ if ( !CD_CFG1.With_Out_Sound && Sonido != -1 && Sonido < 19 ) { while( kbhit() ) getch(); if ( PlayWav((char far *)"CD_OUT.SND", CD_Snd[Sonido].Pos, CD_Snd[Sonido].Len ) == -1 ) PlayLongWav((char far *)"CD_OUT.SND", CD_Snd[Sonido].Pos, CD_Snd[Sonido].Len ); while( kbhit() ) getch(); } } int Load_Snd(void) { CABECERA Cabecera; FILE *DESTINO; if ( ( DESTINO = fopen( "CD_OUT.SND", "rb") ) == NULL ) { return 0; } fread( &Cabecera, sizeof( Cabecera ), 1, DESTINO ); fread( CD_Snd, sizeof( CD_SND ), 19, DESTINO ); fclose(DESTINO); return 1; }