File: MAIN.C | Size: 5,313 bytes | Download file | Back to directory listing | BWPOW's homepage
#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);
}