Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Rubberduckycooly
GitHub Repository: Rubberduckycooly/RSDKv5-Decompilation
Path: blob/master/RSDKv5/main.cpp
769 views
1
#include "RSDK/Core/RetroEngine.hpp"
2
#include "main.hpp"
3
4
#if RETRO_STANDALONE
5
#define LinkGameLogic RSDK::LinkGameLogic
6
#else
7
#define EngineInfo RSDK::EngineInfo
8
#include <GameMain.h>
9
#define LinkGameLogic LinkGameLogicDLL
10
#endif
11
12
#if RETRO_PLATFORM == RETRO_WIN && !RETRO_RENDERDEVICE_SDL2
13
14
#if RETRO_RENDERDEVICE_DIRECTX9 || RETRO_RENDERDEVICE_DIRECTX11
15
INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, INT nShowCmd)
16
{
17
RSDK::RenderDevice::hInstance = hInstance;
18
RSDK::RenderDevice::hPrevInstance = hPrevInstance;
19
RSDK::RenderDevice::nShowCmd = nShowCmd;
20
21
return RSDK_main(1, &lpCmdLine, LinkGameLogic);
22
}
23
#else
24
INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, INT nShowCmd)
25
{
26
return RSDK_main(1, &lpCmdLine, LinkGameLogic);
27
}
28
#endif
29
30
#elif RETRO_PLATFORM == RETRO_ANDROID
31
extern "C" {
32
void android_main(struct android_app *app);
33
}
34
35
void android_main(struct android_app *ap)
36
{
37
app = ap;
38
app->onAppCmd = AndroidCommandCallback;
39
app->activity->callbacks->onKeyDown = AndroidKeyDownCallback;
40
app->activity->callbacks->onKeyUp = AndroidKeyUpCallback;
41
42
JNISetup *jni = GetJNISetup();
43
// we make sure we do it here so init can chill safely before any callbacks occur
44
Paddleboat_init(jni->env, jni->thiz);
45
46
SwappyGL_init(jni->env, jni->thiz);
47
SwappyGL_setAutoSwapInterval(false);
48
SwappyGL_setSwapIntervalNS(SWAPPY_SWAP_60FPS);
49
SwappyGL_setMaxAutoSwapIntervalNS(SWAPPY_SWAP_60FPS);
50
51
getFD = jni->env->GetMethodID(jni->clazz, "getFD", "([BB)I");
52
writeLog = jni->env->GetMethodID(jni->clazz, "writeLog", "([BI)V");
53
54
setLoading = jni->env->GetMethodID(jni->clazz, "setLoadingIcon", "([B)V");
55
showLoading = jni->env->GetMethodID(jni->clazz, "showLoadingIcon", "()V");
56
hideLoading = jni->env->GetMethodID(jni->clazz, "hideLoadingIcon", "()V");
57
58
setPixSize = jni->env->GetMethodID(jni->clazz, "setPixSize", "(II)V");
59
60
#if RETRO_USE_MOD_LOADER
61
fsExists = jni->env->GetMethodID(jni->clazz, "fsExists", "([B)Z");
62
fsIsDir = jni->env->GetMethodID(jni->clazz, "fsIsDir", "([B)Z");
63
fsDirIter = jni->env->GetMethodID(jni->clazz, "fsDirIter", "([B)[Ljava/lang/String;");
64
fsRecurseIter = jni->env->GetMethodID(jni->clazz, "fsRecurseIter", "([B)Ljava/lang/String;");
65
#endif
66
67
GameActivity_setWindowFlags(app->activity,
68
AWINDOW_FLAG_KEEP_SCREEN_ON | AWINDOW_FLAG_TURN_SCREEN_ON | AWINDOW_FLAG_LAYOUT_NO_LIMITS | AWINDOW_FLAG_FULLSCREEN
69
| AWINDOW_FLAG_SHOW_WHEN_LOCKED,
70
0);
71
72
RSDK_main(0, NULL, (void *)LinkGameLogic);
73
74
Paddleboat_destroy(jni->env);
75
SwappyGL_destroy();
76
}
77
#else
78
int32 main(int32 argc, char *argv[]) { return RSDK_main(argc, argv, (void *)LinkGameLogic); }
79
#endif
80
81
int32 RSDK_main(int32 argc, char **argv, void *linkLogicPtr)
82
{
83
RSDK::linkGameLogic = (RSDK::LogicLinkHandle)linkLogicPtr;
84
85
RSDK::InitCoreAPI();
86
87
int32 exitCode = RSDK::RunRetroEngine(argc, argv);
88
89
RSDK::ReleaseCoreAPI();
90
91
return exitCode;
92
}
93