Path: blob/master/RSDKv5/main.cpp
1153 views
#include "RSDK/Core/RetroEngine.hpp"1#include "main.hpp"23#if RETRO_STANDALONE4#define LinkGameLogic RSDK::LinkGameLogic5#else6#define EngineInfo RSDK::EngineInfo7#include <GameMain.h>8#define LinkGameLogic LinkGameLogicDLL9#endif1011#if RETRO_PLATFORM == RETRO_WIN && !RETRO_RENDERDEVICE_SDL21213#if RETRO_RENDERDEVICE_DIRECTX9 || RETRO_RENDERDEVICE_DIRECTX1114INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, INT nShowCmd)15{16RSDK::RenderDevice::hInstance = hInstance;17RSDK::RenderDevice::hPrevInstance = hPrevInstance;18RSDK::RenderDevice::nShowCmd = nShowCmd;1920return RSDK_main(1, &lpCmdLine, LinkGameLogic);21}22#else23INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, INT nShowCmd)24{25return RSDK_main(1, &lpCmdLine, LinkGameLogic);26}27#endif2829#elif RETRO_PLATFORM == RETRO_ANDROID30extern "C" {31void android_main(struct android_app *app);32}3334void android_main(struct android_app *ap)35{36app = ap;37app->onAppCmd = AndroidCommandCallback;38app->activity->callbacks->onKeyDown = AndroidKeyDownCallback;39app->activity->callbacks->onKeyUp = AndroidKeyUpCallback;4041JNISetup *jni = GetJNISetup();42// we make sure we do it here so init can chill safely before any callbacks occur43Paddleboat_init(jni->env, jni->thiz);4445SwappyGL_init(jni->env, jni->thiz);46SwappyGL_setAutoSwapInterval(false);47SwappyGL_setSwapIntervalNS(SWAPPY_SWAP_60FPS);48SwappyGL_setMaxAutoSwapIntervalNS(SWAPPY_SWAP_60FPS);4950getFD = jni->env->GetMethodID(jni->clazz, "getFD", "([BB)I");51writeLog = jni->env->GetMethodID(jni->clazz, "writeLog", "([BI)V");5253setLoading = jni->env->GetMethodID(jni->clazz, "setLoadingIcon", "([B)V");54showLoading = jni->env->GetMethodID(jni->clazz, "showLoadingIcon", "()V");55hideLoading = jni->env->GetMethodID(jni->clazz, "hideLoadingIcon", "()V");5657setPixSize = jni->env->GetMethodID(jni->clazz, "setPixSize", "(II)V");5859#if RETRO_USE_MOD_LOADER60fsExists = jni->env->GetMethodID(jni->clazz, "fsExists", "([B)Z");61fsIsDir = jni->env->GetMethodID(jni->clazz, "fsIsDir", "([B)Z");62fsDirIter = jni->env->GetMethodID(jni->clazz, "fsDirIter", "([B)[Ljava/lang/String;");63fsRecurseIter = jni->env->GetMethodID(jni->clazz, "fsRecurseIter", "([B)Ljava/lang/String;");64#endif6566GameActivity_setWindowFlags(app->activity,67AWINDOW_FLAG_KEEP_SCREEN_ON | AWINDOW_FLAG_TURN_SCREEN_ON | AWINDOW_FLAG_LAYOUT_NO_LIMITS | AWINDOW_FLAG_FULLSCREEN68| AWINDOW_FLAG_SHOW_WHEN_LOCKED,690);7071RSDK_main(0, NULL, (void *)LinkGameLogic);7273Paddleboat_destroy(jni->env);74SwappyGL_destroy();75}76#else77int32 main(int32 argc, char *argv[]) { return RSDK_main(argc, argv, (void *)LinkGameLogic); }78#endif7980int32 RSDK_main(int32 argc, char **argv, void *linkLogicPtr)81{82RSDK::linkGameLogic = (RSDK::LogicLinkHandle)linkLogicPtr;8384RSDK::InitCoreAPI();8586int32 exitCode = RSDK::RunRetroEngine(argc, argv);8788RSDK::ReleaseCoreAPI();8990return exitCode;91}9293