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; }
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(); }
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); }
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; }
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); }