static int AppExit() { if(bIconsLoaded) { // unload driver icons UnloadDrvIcons(); bIconsLoaded = 0; } SetNumLock(bNumlockStatus); DrvExit(); // Make sure any game driver is exitted FreeROMInfo(); MediaExit(); BurnLibExit(); // Exit the Burn library #ifdef USE_SDL SDL_Quit(); #endif FBALocaliseExit(); if (hAccel) { DestroyAcceleratorTable(hAccel); hAccel = NULL; } SplashDestroy(1); CloseHandle(hMainThread); CloseDebugLog(); return 0; }
static int AppExit() { SetNumLock(bNumlockStatus); DrvExit(); // Make sure any game driver is exitted FreeROMInfo(); MediaExit(); BurnLibExit(); // Exit the Burn library #ifdef USE_SDL SDL_Quit(); #endif kailleraShutdown(); FBALocaliseExit(); if (hAccel) { DestroyAcceleratorTable(hAccel); hAccel = NULL; } SplashDestroy(1); CloseHandle(hMainThread); CloseDebugLog(); return 0; }
int DrvInit(int nDrvNum, bool bRestore) { int nStatus; bDrvOkay = 0; DrvExit(); // Make sure exitted nBurnDrvActive = nDrvNum; // Set the driver number nMaxPlayers = BurnDrvGetMaxPlayers(); GameInpInit(); // Init game input if (ConfigGameLoad(true)) { ConfigGameLoadHardwareDefaults(); } InputMake(true); GameInpDefault(); nStatus = DoLibInit(); // Init the Burn library's driver if (nStatus) { if (nStatus & 2) { BurnDrvExit(); // Exit the driver } return 1; } BurnExtLoadRom = DrvLoadRom; bDrvOkay = 1; // Okay to use all BurnDrv functions if (BurnDrvGetFlags() & BDF_ORIENTATION_VERTICAL) { bVidArcaderes = bVidArcaderesVer; nVidWidth = nVidVerWidth; nVidHeight = nVidVerHeight; } else { bVidArcaderes = bVidArcaderesHor; nVidWidth = nVidHorWidth; nVidHeight = nVidHorHeight; } nBurnLayer = 0xFF; // show all layers // Reset the speed throttling code, so we don't 'jump' after the load //RunReset(); VidExit(); return 0; }
int DrvInit(int nDrvNum, bool bRestore) { DrvExit(); // Make sure exitted // AudSoundInit(); // Init Sound (not critical if it fails) nBurnSoundRate = 0; // Assume no sound pBurnSoundOut = NULL; // if (bAudOkay) { // nBurnSoundRate = nAudSampleRate; // nBurnSoundLen = nAudSegLen; // } nBurnDrvSelect[0] = nDrvNum; // Set the driver number // Define nMaxPlayers early; GameInpInit() needs it (normally defined in DoLibInit()). nMaxPlayers = BurnDrvGetMaxPlayers(); // GameInpInit(); // Init game input // ConfigGameLoad(true); // InputMake(true); // GameInpDefault(); SndInit(); if (DoLibInit()) { // Init the Burn library's driver char szTemp[512]; BurnDrvExit(); // Exit the driver _stprintf (szTemp, _T("There was an error starting '%s'.\n"), BurnDrvGetText(DRV_FULLNAME)); return 1; } BurnExtLoadRom = DrvLoadRom; bDrvOkay = 1; // Okay to use all BurnDrv functions bSaveRAM = false; nBurnLayer = 0xFF; // show all layers // Reset the speed throttling code, so we don't 'jump' after the load RunReset(); return 0; }
int main(int argc, char *argv[]) { UINT32 i=0; ConfigAppLoad(); CheckFirstTime(); // check for first time run SDL_Init(SDL_INIT_TIMER|SDL_INIT_VIDEO); BurnLibInit(); SDL_WM_SetCaption( "FBA, SDL port.", "FBA, SDL port."); SDL_ShowCursor(SDL_DISABLE); if (argc == 2) { for (i = 0; i < nBurnDrvCount; i++) { nBurnDrvSelect[0] = i; if (strcmp(BurnDrvGetTextA(0), argv[1]) == 0) { break; } } if (i == nBurnDrvCount) { printf("%s is not supported by FB Alpha.",argv[1]); return 1; } } InputInit(); init_emu(i); RunMessageLoop(); InputExit(); DrvExit(); ConfigAppSave(); BurnLibExit(); SDL_Quit(); return 0; }
static int AppExit() { DrvExit(); // Make sure any game driver is exitted MediaExit(); BurnLibExit(); // Exit the Burn library ConfigAppSave(); // Save config for the application //ayeye if(hAccel!=NULL) { DestroyAcceleratorTable(hAccel); hAccel=NULL; } if(hImm32!=NULL) { FreeLibrary(hImm32); hImm32=NULL; } return 0; }
// With or without sound, run one frame. // If bDraw is true, it's the last frame before we are up to date, and so we should draw the screen static int RunFrame(int bDraw, int bPause) { static int bPrevPause = 0; static int bPrevDraw = 0; extern bool bDoPostInitialize; // Exit Jukebox properly if(bDoPostInitialize == true && bJukeboxInUse == true) { DrvExit(); bJukeboxDisplayed = false; bJukeboxInUse = false; bDoPostInitialize = false; POST_INITIALISE_MESSAGE; } if (bPrevDraw && !bPause) { VidPaint(0); // paint the screen (no need to validate) } if (!bDrvOkay) { return 1; } if (bPause && bJukeboxInUse == true) { GetInput(false); // Update burner inputs, but not game inputs if (bPause != bPrevPause) { VidPaint(2); // Redraw the screen (to ensure mode indicators are updated) } return 0; } if (!bPause && bJukeboxInUse == true) { //if (!bJukeboxDisplayed) JukeboxDialogCreate(); int TracklistDialog(); if (bJukeboxDisplayed == false) TracklistDialog(); nFramesEmulated++; nCurrentFrame++; BurnJukeboxFrame(); return 0; } if (bPause) { GetInput(false); // Update burner inputs, but not game inputs if (bPause != bPrevPause) { VidPaint(2); // Redraw the screen (to ensure mode indicators are updated) } } else { nFramesEmulated++; nCurrentFrame++; if (kNetGame) { GetInput(true); // Update inputs if (KailleraGetInput()) { // Synchronize input with Kaillera return 0; } } else { if (nReplayStatus == 2) { GetInput(false); // Update burner inputs, but not game inputs if (ReplayInput()) { // Read input from file bAltPause = 1; bRunPause = 1; MenuEnableItems(); InputSetCooperativeLevel(false, false); } } else { GetInput(true); // Update inputs } } if (nReplayStatus == 1) { RecordInput(); // Write input to file } if (bDraw) { nFramesRendered++; if (VidFrame()) { // Do one frame AudBlankSound(); } } else { // frame skipping pBurnDraw = NULL; // Make sure no image is drawn BurnDrvFrame(); } if (bShowFPS) { if (nDoFPS < nFramesRendered) { DisplayFPS(); nDoFPS = nFramesRendered + 30; } } } bPrevPause = bPause; bPrevDraw = bDraw; return 0; }
void run_fba_emulator(const char *fn) { char build_version[] = "Finalburn Alpha Plus for Pi ("__DATE__")"; // process rom path and name char romname[MAX_PATH]; if (BurnCacheInit(fn, romname)) goto finish; if(config_options.option_showfps) bShowFPS=true; BurnLibInit(); // find rom by name for (nBurnDrvSelect=0; nBurnDrvSelect<nBurnDrvCount; nBurnDrvSelect++) if ( strcasecmp(romname, BurnDrvGetTextA(DRV_NAME)) == 0 ) break; if (nBurnDrvSelect >= nBurnDrvCount) { // unsupport rom ... nBurnDrvSelect = ~0U; logoutput ("rom not supported!\n"); printf ("rom not supported!\n"); goto finish; } logoutput("Attempt to initialise '%s'\n", BurnDrvGetTextA(DRV_FULLNAME)); memset (titlefb, 0, 320*240*2); DrawString (build_version, (uint16*)&titlefb, 10, 20, 320); DrawString ("Based on FinalBurnAlpha", (uint16*)&titlefb, 10, 35, 320); DrawString ("Now loading ... ", (uint16 *)&titlefb, 10, 105, 320); show_rom_loading_text("Open Zip", 0, 0); memcpy (VideoBuffer, titlefb, 320*240*2); pi_video_flip(); InpInit(); InpDIP(); VideoInit(); if (DrvInit(nBurnDrvSelect, false) != 0) { logoutput ("Driver initialisation failed! Likely causes are:\n- Corrupt/Missing ROM(s)\n- I/O Error\n- Memory error\n\n"); printf ("Driver initialisation failed! Likely causes are:\n- Corrupt/Missing ROM(s)\n- I/O Error\n- Memory error\n\n"); goto finish; } RunReset(); frame_count = 0; GameLooping = true; EZX_StartTicks(); logoutput ("Lets go!\n"); logflush(); if (config_options.option_sound_enable) { int timer = 0, tick=0, i=0, fps = 0; bool bRenderFrame; if (SndOpen() == 0) { while (GameLooping) { if (bShowFPS) { timer = EZX_GetTicks(); if(timer-tick>1000000) { fps = nFramesRendered; nFramesRendered = 0; tick = timer; } } //We need to render more audio: bRenderFrame=true; // Render last frame RunOneFrame(bRenderFrame,fps); update_audio_stream(pBurnSoundOut); pi_process_events(); } } } else { int now, done=0, timer = 0, ticks=0, tick=0, i=0, fps = 0; unsigned int frame_limit = nBurnFPS/100, frametime = 100000000/nBurnFPS; while (GameLooping) { timer = EZX_GetTicks()/frametime;; if(timer-tick>frame_limit && bShowFPS) { fps = nFramesRendered; nFramesRendered = 0; tick = timer; } now = timer; ticks=now-done; if(ticks<1) continue; if(ticks>10) ticks=10; for (i=0; i<ticks-1; i++) { RunOneFrame(false,fps); } if(ticks>=1) { RunOneFrame(true,fps); } done = now; } } logoutput ("Finished emulating\n"); finish: logoutput("---- Shutdown Finalburn Alpha plus ----\n\n"); DrvExit(); BurnLibExit(); if (config_options.option_sound_enable) SndExit(); VideoExit(); InpExit(); BurnCacheExit(); }
int main(int argc, char** argv) { SceCtrlData pad; getcwd(currentPath, MAX_PATH - 1); strcat(currentPath, "/"); strcpy(szAppRomPath, currentPath); strcat(szAppRomPath, "ROMS/"); int thid = sceKernelCreateThread(PBPNAME, CallbackThread, 0x11, 0xFA0, 0, 0); if(thid >= 0) sceKernelStartThread(thid, 0, 0); nGameStage = 1; init_gui(); BurnLibInit(); for (nBurnDrvSelect=0; nBurnDrvSelect<nBurnDrvCount; nBurnDrvSelect++) if ( strcmp("aerofgt", BurnDrvGetText(DRV_NAME)) == 0 ) break; if (nBurnDrvSelect >= nBurnDrvCount) nBurnDrvSelect = ~0U; bBurnUseASMCPUEmulation = false; nInterpolation = 3; pBurnSoundOut = 0; //&mixbuf[0]; nBurnSoundRate = SND_RATE; nBurnSoundLen = 0; //SND_FRAME_SIZE; //BurnDrvGetFullSize(&VideoBufferWidth, &VideoBufferHeight); //printf("%d x %d \n", VideoBufferWidth, VideoBufferHeight); nBurnBpp = 2; nBurnPitch = 512 * 2; BurnHighCol = HighCol16; int ret = 0; //DrvInit(nBurnDrvSelect, false); //if (nRet != 0) return 0; //BurnRecalcPal(); //InpInit(); //InpDIP(); pBurnDraw = (unsigned char *) video_frame_addr(tex_frame, 0, 0); //szAppRomPath //strcat(ui_current_path, "roms"); draw_ui_main(); bGameRunning = 1; while( bGameRunning ) { sceCtrlReadBufferPositive(&pad, 1); if ( nGameStage ) { do_ui_key( pad.Buttons ); update_gui(); sceDisplayWaitVblankStart(); } else { if ( pad.Buttons & PSP_CTRL_LTRIGGER ) { scePowerSetClockFrequency(222, 222, 111); nGameStage = 1; draw_ui_main(); continue; } InpMake(pad.Buttons); nFramesEmulated++; nCurrentFrame++; nFramesRendered++; pBurnDraw = (unsigned char *) video_frame_addr(tex_frame, 0, 0); BurnDrvFrame(); pBurnDraw = NULL; update_gui(); //sceDisplayWaitVblankStart(); } show_frame = draw_frame; draw_frame = sceGuSwapBuffers(); } scePowerSetClockFrequency(222, 222, 111); exit_gui(); DrvExit(); BurnLibExit(); InpExit(); sceKernelExitGame(); }
int DrvInit(int nDrvNum, bool bRestore) { int nStatus; DrvExit(); // Make sure exitted MediaExit(); nBurnDrvActive = nDrvNum; // Set the driver number if ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SNK_MVS) { BurnExtCartridgeSetupCallback = DrvCartridgeAccess; if (SelMVSDialog()) { POST_INITIALISE_MESSAGE; return 0; } } if ((BurnDrvGetHardwareCode() & HARDWARE_PUBLIC_MASK) == HARDWARE_SNK_NEOCD) { if (CDEmuInit()) { FBAPopupAddText(PUF_TEXT_DEFAULT, MAKEINTRESOURCE(IDS_ERR_CDEMU_INI_FAIL)); FBAPopupDisplay(PUF_TYPE_ERROR); POST_INITIALISE_MESSAGE; return 0; } } MediaInit(); // Define nMaxPlayers early; GameInpInit() needs it (normally defined in DoLibInit()). nMaxPlayers = BurnDrvGetMaxPlayers(); GameInpInit(); // Init game input if(ConfigGameLoad(true)) { ConfigGameLoadHardwareDefaults(); } InputMake(true); GameInpDefault(); if (kNetGame) { nBurnCPUSpeedAdjust = 0x0100; } nStatus = DoLibInit(); // Init the Burn library's driver if (nStatus) { if (nStatus & 2) { BurnDrvExit(); // Exit the driver ScrnTitle(); FBAPopupAddText(PUF_TEXT_DEFAULT, MAKEINTRESOURCE(IDS_ERR_BURN_INIT), BurnDrvGetText(DRV_FULLNAME)); FBAPopupDisplay(PUF_TYPE_WARNING); } POST_INITIALISE_MESSAGE; return 1; } BurnExtLoadRom = DrvLoadRom; bDrvOkay = 1; // Okay to use all BurnDrv functions if (BurnDrvGetFlags() & BDF_ORIENTATION_VERTICAL) { nScreenSize = nScreenSizeVer; bVidArcaderes = bVidArcaderesVer; nVidWidth = nVidVerWidth; nVidHeight = nVidVerHeight; } else { nScreenSize = nScreenSizeHor; bVidArcaderes = bVidArcaderesHor; nVidWidth = nVidHorWidth; nVidHeight = nVidHorHeight; } bSaveRAM = false; if (kNetGame) { KailleraInitInput(); KailleraGetInput(); } else { if (bRestore) { StatedAuto(0); bSaveRAM = true; ConfigCheatLoad(); } } nBurnLayer = 0xFF; // show all layers // Reset the speed throttling code, so we don't 'jump' after the load RunReset(); VidExit(); POST_INITIALISE_MESSAGE; return 0; }