Beispiel #1
0
int ReadScreen( void )
{
  char name[FNSIZE], directory[FMSIZE];
  short button;
  int f, status;
  	  
  status = 0;
  getcd( 0, directory);
  strcat( directory, "\\*.NEO");
  *name = 0;
  fsel_exinput( directory, name, &button, "L„s NEO-sk„rm");
  if (button == 1)
  {
  	*(strrchr( directory, '\\')+1) = 0;
    strcat( directory, name);
    f = open( directory, O_RDONLY | O_RAW, 0);
    if (f >= 0)
    {
      if (filelength( f) == 32128)
      {
        read( f, Physbase(), 128);
        read( f, Physbase(), 32000);
        status = 1;
      }
      else
        form_alert( 1, "[3][Ej NeoChrome fil][Ok]");
      close( f);
    }
    else
      form_alert( 1, "[3][Filen finns inte][Ok]");
  }
  return status;
}
Beispiel #2
0
int init_display()
{
	unsigned short loop,yr;
	unsigned short k,i;

	screen_buffer_backup_aligned=(unsigned char*)malloc(16*1024);

	SCREEN_YRESOL=200;
	NUMBER_OF_FILE_ON_DISPLAY=19-5;// 19-5 //19 -240

	old_physical_adr=(unsigned long)Physbase();
	screen_buffer=(unsigned char*)malloc((32*1024) + 256);
	memset(screen_buffer,0,(32*1024) + 256);
	screen_buffer_aligned = (unsigned char*)(((unsigned long)screen_buffer| 0xff)+1);

        screen_buffer_backup=(unsigned char*)malloc((8*1000) + 256);
	memset(screen_buffer_backup,0,(8*1000) + 256);
	screen_buffer_backup_aligned = (unsigned char*)(((unsigned long)screen_buffer_backup| 0xff)+1);

	Blitmode(1);
	
    Setscreen( -1, screen_buffer_aligned, 1 );
	color=0;
    Supexec(initpal);

	init_buffer();
}
Beispiel #3
0
int InitTank()
{
	int ii;

	/* initialiser cookie */
	InitCookie();

	/* sauvegarder palette des couleurs */
	for ( ii = 0; ii < 16; ii++ )
		SavPalette[ii] = Setcolor(ii,-1);

	/* aller en basse resolution */
	SavRez = Getrez();
	if ( SavRez > 1 )
		return (1);

	/* mise en place des ecrans de travail */
	_SavLogScreen = (char *)Logbase();
	_SavPhyScreen = (char *)Physbase();

	_Screens[0] = (char *)malloc(32256L);
	_Screens[1] = (char *)malloc(32256L);
	if ( _Screens[0] == 0 || _Screens[1] == 0L )
		return (2);
	_Screens[0] = _ShowScreen = (char *)((long)(_Screens[0] + 255) & 0xFFFFFF00L);
	_Screens[1] = _HideScreen = (char *)((long)(_Screens[1] + 255) & 0xFFFFFF00L);
	MemClear(_Screens[0],32000L);
	MemClear(_Screens[1],32000L);

	Setpalette(BlackPalette);

	if ( ShipSetUp(0) == 0 )
		return (2);
	if ( MiscSetUp() == 0 )
		return (2);
	if ( StarSetUp() == 0 )
		return (2);
	if ( AstSetUp() == 0 )
		return (2);
	if ( ExplSetUp() == 0 )
		return (2);

	Setscreen(_Screens[0],_Screens[0],0);

	TTSpl = ((Cookies.snd & 2) != 0);
	SplOn._proc = _SplOnProc[ TTSpl ];
	SplOff._proc = _SplOffProc[ TTSpl ];

	NStars = (Cookies.cpu > 10) ? 32 : 16;

	return (0);
}
Beispiel #4
0
int main() {
	int i = 0;
	int j = 1;
	int musicCounter = 0;
	UINT8 *base = Physbase();
	UINT8 *base2 = buffer;
	
	UINT8 ch;
	UINT8 has_moved = 1;
	UINT8 switchBase = 0;
	
	UINT32 timeNow, timeThen, prevCall;

	struct Model game;
	struct Model *gamePtr = &game;
	
	base2 += 256 - ((long)base2 & (long)0xFF);

	init_model(gamePtr);
	
	disable_cursor();
	Setscreen(-1, base2, -1);
	disable_cursor();
	Setscreen(-1, base, -1);
	
	timeNow = get_time();
	timeThen = timeNow + DELAY;
	
	start_sound();
	prevCall = timeNow;
	srand(time(0));
	
	while(!game_over(gamePtr)) {
	
		if(update_music(get_time() - prevCall)){
			prevCall = get_time();		
		}
			
		/* Check if there is kbd input */
		if(kbd_is_waiting()) {
			ch = kbd_read_char();	
			request_player_move(gamePtr, 0, ch);
		}

		/* If clock ticked */
		if(timeNow != get_time()) {

			
			/* Check if a second has passed */
			if(timeNow >= timeThen) {
				update_score(gamePtr, 1);
				timeThen = timeNow + DELAY;
			}
			
			/* Move player ship */
			has_moved = move_player_ship(gamePtr, 0);
			if(has_moved){
				thruster();
			}

			/* Move enemy ships and check collisions with player ship */
			for(i = 0; i < NUM_ENEMIES; i++) {
				move_enemy_ship(gamePtr, i);
				collision(gamePtr,i,0);
			}	
			

			/* Render the model with double buffering */
			if(switchBase) {
				render_model(gamePtr, base, has_moved);
				Setscreen(-1, base, -1);
			}
			else {
				render_model(gamePtr, base2, has_moved);
				Setscreen(-1, base2, -1);
			}

			Vsync();
			switchBase = !switchBase;
			
		}
		
		stop_thruster();		
		timeNow = get_time();
	
	}
	
	stop_sound();
	explosion();
	
	render_model(gamePtr, base, has_moved);
	Setscreen(-1, base, -1);
	Vsync();
	
	return 0;
}
Beispiel #5
0
init_sys()
{
    WORD work_in[11];
    WORD work_out[57];
    WORD i;



    save_critical();
    got_blitter = ( (_xbios(64, -1) & 3 ) == 3);
    if ( (gl_apid = appl_init()) == -1)
    {
        exit(-1);
    }
    aline = ainit();


    if (!init_mem())
        exit(-2);

    /* save initial rez ... we'll see if GEM agrees with this later */
    if ( (irez = Getrez()) != 0)
    {
        if (irez != 1)
        {
            puts("Cyber Paint can't run on black and white systems, sorry");
            for (i=0; i<60; i++)
            {
                Vsync();
            }
            exit(-3);
        }
    }

    get_cmap(color_env);
    copy_words(init_cmap, sys_cmap, COLORS);
    put_cmap(sys_cmap);
    initted_color = 1;

    if (!init_pulls())
        return(-4);

    /* save mouse wrap-around */
    mouse_bx = *((WORD *)(aline-692));
    mouse_by = *((WORD *)(aline-690));
    /* save # of colors gem thinks exist */
    gem_colr = *((WORD *)(aline-666));

    gr_handle = graf_handle(&gr_hwchar, &gr_hhchar, &gr_hwbox, &gr_hhbox);
    handle = gr_handle;
    stuff_words(work_in, 1, 10);
    work_in[10] = 2;
    v_opnvwk(work_in, &handle, work_out);
    if (handle == 0)
        return(-5);
    if (work_out[0] == 639)
    {
        gem_mrez = 1;	/* see what GEM thinks rez is in so file-requestor can
						work */
        /* poke in initial mouse location (in case off-screen for lo-rez */
        *((WORD *)(aline-602)) = 160;
        *((WORD *)(aline-600)) = 100;
    }
    jim_rez();
    pscreen = cscreen = (WORD *)Physbase();

    if ((uscreen = askmem(32000)) == NULL)
        return(-6);
    if ((start_screen = askmem(32000)) == NULL)
        return(-7);
    if ((end_screen = askmem(32000)) == NULL)
        return(-8);
    if ((prev_screen = laskmem(2L*32000L)) == NULL)
        /* prev/next form 64K buffer */
        return(-9);
    next_screen = prev_screen+16000;
    if ((bscreen = askmem(32000)) == NULL)
        return(-11);
    empty_ram_dlt();
    zero_screens();
    if (!init_input())
        return(-13);
    init_fname();
    init_menu_colors();
    install_critical();
    jimints_on();

    cel_mem_alloc = mem_free;	/* "user" memory starts here */

    return(1);
}