void TearDown() { std::cerr<<"src1 :"; output_binary(std::cerr, data1[num_data/2]); std::cerr<<"\n"; std::cerr<<"src2 :"; output_binary(std::cerr, data2[num_data/2]); std::cerr<<"\n"; std::cerr<<"result :"; output_binary(std::cerr, result[num_data/2]); std::cerr<<"\n"; re_initialize(); }
int main(int argc, char *argv[]) { int opt; int fullscreen = 0, resizable = 0, borderless = 0; const char *appTitle = DEFAULT_APP_TITLE; const char *game_dir = NULL; const char *pak_filename = "game.pak"; const char *rlog_filename = "rengine.log"; const char *startstate; struct game_state *gs = NULL; int demo = 0; SDL_version compiled, linked; log_init(rlog_filename); json_error = rerror; if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER | SDL_INIT_AUDIO) < 0) { rerror("SDL_Init: %s", SDL_GetError()); return 1; } atexit(SDL_Quit); while((opt = getopt(argc, argv, "p:g:l:d?")) != -1) { switch(opt) { case 'p': { pak_filename = optarg; } break; case 'g' : { game_dir = optarg; pak_filename = NULL; } break; case 'l': { rlog_filename = optarg; } break; case 'd': { demo = 1; } break; case '?' : { usage(argv[0]); return 1; } } } if(!getcwd(initial_dir, sizeof initial_dir)) { rerror("error in getcwd(): %s", strerror(errno)); return 1; } rlog("Running engine from %s", initial_dir); if(!gdb_new()) { rerror("Unable to create Game Database"); return 1; } re_initialize(); states_initialize(); if(!snd_init()) { rerror("Terminating because of audio problem."); return 1; } /* Don't quite know how to use this in Windows yet. */ SDL_LogSetAllPriority(SDL_LOG_PRIORITY_WARN); SDL_Log("Testing Log capability."); SDL_VERSION(&compiled); SDL_GetVersion(&linked); rlog("SDL version %d.%d.%d (compile)", compiled.major, compiled.minor, compiled.patch); rlog("SDL version %d.%d.%d (link)", linked.major, linked.minor, linked.patch); if(!demo) { if(pak_filename) { rlog("Loading game PAK file: %s", pak_filename); if(!rs_read_pak(pak_filename)) { rerror("Unable to open PAK file '%s'; Playing demo mode.", pak_filename); goto start_demo; } } else { rlog("Not using a PAK file. Using '%s' instead.", game_dir); if(chdir(game_dir)) { rerror("Unable to change to '%s': %s", game_dir, strerror(errno)); return 1; } } game_ini = re_get_ini(GAME_INI); if(game_ini) { appTitle = ini_get(game_ini, "init", "appTitle", "Rengine"); screenWidth = atoi(ini_get(game_ini, "screen", "width", PARAM(SCREEN_WIDTH))); screenHeight = atoi(ini_get(game_ini, "screen", "height", PARAM(SCREEN_HEIGHT))); resizable = atoi(ini_get(game_ini, "screen", "resizable", "0")) ? SDL_WINDOW_RESIZABLE : 0; borderless = atoi(ini_get(game_ini, "screen", "borderless", "0")) ? SDL_WINDOW_BORDERLESS : 0; fullscreen = atoi(ini_get(game_ini, "screen", "fullscreen", "0")) ? SDL_WINDOW_FULLSCREEN_DESKTOP : 0; fps = atoi(ini_get(game_ini, "screen", "fps", PARAM(DEFAULT_FPS))); if(fps <= 0) fps = DEFAULT_FPS; filter = !my_stricmp(ini_get(game_ini, "screen", "filter", "nearest"), "linear")? "1": "0"; virt_width = atoi(ini_get(game_ini, "virtual", "width", PARAM(VIRT_WIDTH))); virt_height = atoi(ini_get(game_ini, "virtual", "height", PARAM(VIRT_HEIGHT))); show_cursor = atoi(ini_get(game_ini, "mouse", "show-cursor", PARAM(1)))? 1 : 0; startstate = ini_get(game_ini, "init", "startstate", NULL); if(startstate) { gs = get_state(startstate); if(!gs) { rerror("Unable to get initial state: %s", startstate); return 1; } } else { rerror("No initial state in %s", GAME_INI); return 1; } } else { rerror("Unable to load %s", GAME_INI); return 1; } } else { start_demo: rlog("Starting demo mode"); gs = get_demo_state("demo"); } rlog("Initialising..."); if(!init(appTitle, fullscreen | borderless | resizable)) { return 1; } if(!bmf_init()){ rlog("Quiting; Unable to start FreeType font library"); return 1; } assert(gs); rlog("Entering initial state..."); if(!change_state(gs)) { rlog("Quiting, because of earlier problems with the initial state"); return 1; } frameStart = SDL_GetTicks(); rlog("Event loop starting..."); while(!quit) { gs = current_state(); if(!gs) { break; } if(gs->update) gs->update(gs, bmp); advanceFrame(); } rlog("Event loop stopped."); gs = current_state(); if(gs && gs->deinit) gs->deinit(gs); bm_free(bmp); SDL_DestroyTexture(tex); SDL_DestroyRenderer(ren); SDL_DestroyWindow(win); SDL_Quit(); ini_free(game_ini); re_clean_up(); bmf_deinit(); gdb_save("dump.db"); /* For testing the game database functionality. Remove later. */ gdb_close(); snd_deinit(); rlog("Engine shut down."); return 0; }