#include <unistd.h> #include <pc.h> #include <conio.h> #include <dos.h> #include <allegro.h> #include <sp1.h> #include <tdgui.h> #include <loadpng.h> #include "datafile.h" #include "pp.h" //#define DF_NAME "#" // Datafile name #define DF_NAME "pp.dat" #define PATH_MAX 1024 extern char vis_on; DATAFILE *data; int backtext[80*50]; char fisrtt=0; char gfx_ch=1; extern char s_d,s_m; extern int s_w,s_h; void default_gfx() { RGB rgb={63,63,63}; if(gfx_ch==1){ gfx_ch=0; set_color_depth(8); set_gfx_mode(0,640,480,0,0); if(fisrtt==0) set_gfx_mode(0,640,480,0,0); fisrtt=1; set_palette(data_pal); set_palette(data_pal); } } int main(int argc,char *argv[]) { PALETTE bpal,pal; BITMAP *bmp; union REGS r; int i,cols,rows,k; char *cwd,disk; cwd=malloc(PATH_MAX); disk=getdisk(); if(getcwd(cwd,PATH_MAX)==NULL){ printf("Disk read error!\n"); exit(12); } printf("PacePlayer 2.0.09beta by IdeaZ (%s,%s)\n",__DATE__,__TIME__); get_palette(bpal); cols=ScreenCols();//80 rows=ScreenRows();//25 gettext(1,1,cols,rows,backtext); allegro_init(); bill_init(); install_timer(); install_keyboard(); if(install_mouse()==-1){ allegro_exit(); printf("You need to have mouse.\n"); exit(2); } register_png_file_type(); check_cpu(); if(cpu_fpu==FALSE){ printf("You need to have FPU to run this programme.\n"); allegro_exit(); exit(1); } if(cpu_mmx==FALSE&&cpu_3dnow==FALSE) vis_on=0; sp1_init(); if(argc>=2){ if(file_exists(argv[1],0,0)==0){ printf("Can't find file %s!\n",argv[1]); } else{ k=inter_get_ext(argv[1]); if(k==-1){ printf("Unknown type of file!\n"); goto end; } nahraj_config(); packfile_password("PacePlay"); data=load_datafile(DF_NAME); memcpy(data_pal,data[dpal].dat,sizeof(PALETTE)); if(data==0) goto end; if((k>=0&&k<=4)||(k>=12&&k<=32)||(k==39)||(k==40)||(k==42)||(k==43)){ gfx_ch=0; set_color_depth(8); set_gfx_mode(0,640,480,0,0); if(k>=0&&k<=3) paceplay_view(0,s_d,s_w,s_h,argv[1]); if(k==4) paceplay_view(1,s_d,s_w,s_h,argv[1]); if(k>=12&&k<=13) paceplay_view(2,s_d,s_w,s_h,argv[1]); if(k>=14&&k<=32) paceplay_view(3,s_d,s_w,s_h,argv[1]); if(k==39) paceplay_view(4,s_d,s_w,s_h,argv[1]); if(k==40) paceplay_view(1,s_d,s_w,s_h,argv[1]); if(k==42) paceplay_view(5,s_d,s_w,s_h,argv[1]); if(k==43) paceplay_view(6,s_d,s_w,s_h,argv[1]); } else{ set_color_depth(8); bmp=create_bitmap(640,480); if(bmp==0){ printf("Not enough memory!\n"); goto end; } clear(bmp); textout(bmp,font,"PacePlayer by Samuel Kupka, IdeaZ 2000",0,0,255); data_pp=create_bitmap(205,55); memcpy(data_pp->dat,((BITMAP *)data[bmp_pp].dat)->dat,205*55); data_box=create_bitmap(128,128); memcpy(data_box->dat,((BITMAP *)data[bmp_box].dat)->dat,128*128); data_but1=create_bitmap(114,18); data_but2=create_bitmap(114,18); memcpy(data_but1->dat,((BITMAP *)data[buttons1].dat)->dat,114*18); memcpy(data_but2->dat,((BITMAP *)data[buttons2].dat)->dat,114*18); unload_datafile(data); fade_out(8); default_gfx(); init_player(); // init player bitmaps if(k==10) paceplay_play(0,argv[1],bmp); if(k==9) paceplay_play(1,argv[1],bmp); if(k==33) paceplay_play(1,argv[1],bmp); if(k==11) paceplay_play(2,argv[1],bmp); if(k>=5&&k<=8) paceplay_play(3,argv[1],bmp); if(k>=34&&k<=38) paceplay_play(3,argv[1],bmp); if(k==41) paceplay_play(5,argv[1],bmp); fade_out(8); } set_gfx_mode(-1,0,0,0,0); _set_screen_lines(rows); set_palette(black_pallete); puttext(1,1,cols,rows,backtext); fade_in(bpal,8); } } else{ packfile_password("PacePlay"); data=load_datafile(DF_NAME); if(data==0) goto end; memcpy(data_pal,data[dpal].dat,sizeof(PALETTE)); data_ideaz=create_bitmap(205,154); data_pp=create_bitmap(205,55); memcpy(data_ideaz->dat,((BITMAP *)data[bmp_ideaz].dat)->dat,205*154); memcpy(data_pp->dat,((BITMAP *)data[bmp_pp].dat)->dat,205*55); data_but1=create_bitmap(114,18); data_but2=create_bitmap(114,18); data_box=create_bitmap(128,128); memcpy(data_box->dat,((BITMAP *)data[bmp_box].dat)->dat,128*128); memcpy(data_but1->dat,((BITMAP *)data[buttons1].dat)->dat,114*18); memcpy(data_but2->dat,((BITMAP *)data[buttons2].dat)->dat,114*18); unload_datafile(data); fade_out(8); default_gfx(); interface(); fade_out(8); set_gfx_mode(-1,0,0,0,0); _set_screen_lines(rows); set_palette(black_pallete); puttext(1,1,cols,rows,backtext); fade_in(bpal,8); destroy_bitmap(data_ideaz); } end:; allegro_exit(); setdisk(disk); chdir(cwd); free(cwd); exit(0); }