Make function linkage use unmangled names

This commit is contained in:
2024-09-23 23:58:09 +08:00
parent 2b945e4406
commit 96ea861c26
23 changed files with 310 additions and 20 deletions

View File

@@ -32,10 +32,12 @@ target_link_libraries(game_re PRIVATE spdlog)
file(GLOB GH_AUTO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/gh_auto/*.cxx)
file(GLOB GH_FIX_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/gh_fix/*.cxx)
file(GLOB GH_STUB_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/gh_stub/*.cxx)
target_sources(game_re PRIVATE
${GH_AUTO_SOURCES}
${GH_FIX_SOURCES}
${GH_STUB_SOURCES}
)
# Ignore -Wformat-security

View File

@@ -30,6 +30,27 @@ enum R3ModuleId : uint8_t {
R3ModId_not_initialized = 0xff,
};
typedef uint32_t cc_type_t;
template <typename T0, typename T1>
inline constexpr cc_type_t CONCAT11(T0 a, T1 b) {
return cc_type_t(a) << 8 | cc_type_t(b);
}
template <typename T0, typename T1>
inline constexpr cc_type_t CONCAT21(T0 a, T1 b) {
return cc_type_t(a) << 8 | cc_type_t(b);
}
template <typename T0, typename T1>
inline constexpr cc_type_t CONCAT22(T0 a, T1 b) {
return cc_type_t(a) << 16 | cc_type_t(b);
}
template <typename T0, typename T1>
inline constexpr cc_type_t CONCAT23(T0 a, T1 b) {
return cc_type_t(a) << 24 | cc_type_t(b);
}
// Can not export enums for some reason
#endif /* A523F6DB_0645_4DEB_8AEB_3792CB732B49 */

View File

@@ -3,25 +3,27 @@
#include <gh_auto_binder.h>
#include "../gh_global.h"
extern undefined r3_initEngine(void); // 00401220 // r3_initEngine
extern "C" {
undefined r3_initEngine(void); // 00401220 // r3_initEngine
extern undefined r3_module0_init(void); // 00401000 // r3_module0_init
extern uint32_t r3_containsCmdLine(
uint *param_1, char *param_2); // 004028e0 // r3_containsCmdLine
extern uint32_t
r3_containsCmdLine(uint *param_1,
char *param_2); // 004028e0 // r3_containsCmdLine
extern undefined FUN_004010b0(void); // 004010b0 // FUN_004010b0
extern undefined FUN_004464f0(void); // 004464f0 // FUN_004464f0
extern undefined FUN_00503710(void); // 00503710 // FUN_00503710
extern undefined r3_setupWindow(
HINSTANCE hInstance, undefined4 param_2,
undefined4 param_3); // 00402140 // r3_setupWindow
extern undefined FUN_00401320(void); // 00401320 // FUN_00401320
extern undefined spawnThread(void); // 004477d0 // spawnThread
extern undefined FUN_005038e0(void); // 005038e0 // FUN_005038e0
extern undefined FUN_004fb300(void); // 004fb300 // FUN_004fb300
extern void g_setInitVar0(void); // 00401310 // g_setInitVar0
extern undefined
r3_setupWindow(HINSTANCE hInstance, undefined4 param_2,
undefined4 param_3); // 00402140 // r3_setupWindow
extern undefined FUN_00401320(void); // 00401320 // FUN_00401320
extern undefined spawnThread(void); // 004477d0 // spawnThread
extern undefined FUN_005038e0(void); // 005038e0 // FUN_005038e0
extern undefined FUN_004fb300(void); // 004fb300 // FUN_004fb300
extern void g_setInitVar0(void); // 00401310 // g_setInitVar0
extern void r3_noop(void *p_cTxt1,
void *p_cTxt2); // 00401100 // r3_noop
void *p_cTxt2); // 00401100 // r3_noop
extern undefined r3_checkDisc(void); // 004464f0 // r3_checkDisc
extern undefined gfx_init2(void); // 00470be0 // gfx_init2
extern undefined gfx_init2(void); // 00470be0 // gfx_init2
extern undefined4 __cdecl r3_get_gli_width(
void); // 0047baf0 // r3_get_gli_width
extern undefined FUN_00472150(void); // 00472150 // FUN_00472150
@@ -413,7 +415,7 @@ LAB_004017ce:
sprintf(acStack_810, s_Please_run_the__s_setup__005b63f4, s_windowTitle);
sprintf(acStack_508, s__s_not_initialized__005b63e0, s_windowTitle);
// FUN_0043e540(acStack_810, acStack_508, 0);
MessageBoxA(g_gameHWND, acStack_810, acStack_508,
0 | 0x10000);
MessageBoxA(g_gameHWND, acStack_810, acStack_508, 0 | 0x10000);
exit(1);
}
}

View File

@@ -0,0 +1,14 @@
// AUTO-GENERATED FILE!!!!
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
// with possible manualy fixes
#include <gh_auto_binder.h>
#include "../gh_global.h"
#include <stdexcept>
// 004010b0
// FUN_004010b0
extern "C" undefined FUN_004010b0(void) {
// TODO: Implement this function
throw std::runtime_error("Function not implemented: FUN_004010b0");
}

View File

@@ -0,0 +1,14 @@
// AUTO-GENERATED FILE!!!!
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
// with possible manualy fixes
#include <gh_auto_binder.h>
#include "../gh_global.h"
#include <stdexcept>
// 00401320
// FUN_00401320
extern "C" undefined FUN_00401320(void) {
// TODO: Implement this function
throw std::runtime_error("Function not implemented: FUN_00401320");
}

View File

@@ -0,0 +1,14 @@
// AUTO-GENERATED FILE!!!!
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
// with possible manualy fixes
#include <gh_auto_binder.h>
#include "../gh_global.h"
#include <stdexcept>
// 00470db0
// FUN_00470db0
extern "C" undefined FUN_00470db0(void) {
// TODO: Implement this function
throw std::runtime_error("Function not implemented: FUN_00470db0");
}

View File

@@ -0,0 +1,14 @@
// AUTO-GENERATED FILE!!!!
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
// with possible manualy fixes
#include <gh_auto_binder.h>
#include "../gh_global.h"
#include <stdexcept>
// 00472150
// FUN_00472150
extern "C" undefined FUN_00472150(void) {
// TODO: Implement this function
throw std::runtime_error("Function not implemented: FUN_00472150");
}

View File

@@ -0,0 +1,14 @@
// AUTO-GENERATED FILE!!!!
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
// with possible manualy fixes
#include <gh_auto_binder.h>
#include "../gh_global.h"
#include <stdexcept>
// 004725a0
// FUN_004725a0
extern "C" undefined FUN_004725a0(void) {
// TODO: Implement this function
throw std::runtime_error("Function not implemented: FUN_004725a0");
}

View File

@@ -0,0 +1,14 @@
// AUTO-GENERATED FILE!!!!
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
// with possible manualy fixes
#include <gh_auto_binder.h>
#include "../gh_global.h"
#include <stdexcept>
// 004fb300
// FUN_004fb300
extern "C" undefined FUN_004fb300(void) {
// TODO: Implement this function
throw std::runtime_error("Function not implemented: FUN_004fb300");
}

View File

@@ -0,0 +1,14 @@
// AUTO-GENERATED FILE!!!!
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
// with possible manualy fixes
#include <gh_auto_binder.h>
#include "../gh_global.h"
#include <stdexcept>
// 00503710
// FUN_00503710
extern "C" undefined FUN_00503710(void) {
// TODO: Implement this function
throw std::runtime_error("Function not implemented: FUN_00503710");
}

View File

@@ -0,0 +1,14 @@
// AUTO-GENERATED FILE!!!!
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
// with possible manualy fixes
#include <gh_auto_binder.h>
#include "../gh_global.h"
#include <stdexcept>
// 005038e0
// FUN_005038e0
extern "C" undefined FUN_005038e0(void) {
// TODO: Implement this function
throw std::runtime_error("Function not implemented: FUN_005038e0");
}

View File

@@ -0,0 +1,14 @@
// AUTO-GENERATED FILE!!!!
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
// with possible manualy fixes
#include <gh_auto_binder.h>
#include "../gh_global.h"
#include <stdexcept>
// 00401310
// g_setInitVar0
extern "C" void g_setInitVar0(void) {
// TODO: Implement this function
throw std::runtime_error("Function not implemented: g_setInitVar0");
}

View File

@@ -0,0 +1,14 @@
// AUTO-GENERATED FILE!!!!
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
// with possible manualy fixes
#include <gh_auto_binder.h>
#include "../gh_global.h"
#include <stdexcept>
// 00470be0
// gfx_init2
extern "C" undefined gfx_init2(void) {
// TODO: Implement this function
throw std::runtime_error("Function not implemented: gfx_init2");
}

View File

@@ -0,0 +1,14 @@
// AUTO-GENERATED FILE!!!!
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
// with possible manualy fixes
#include <gh_auto_binder.h>
#include "../gh_global.h"
#include <stdexcept>
// 004464f0
// r3_checkDisc
extern "C" undefined r3_checkDisc(void) {
// TODO: Implement this function
throw std::runtime_error("Function not implemented: r3_checkDisc");
}

View File

@@ -0,0 +1,14 @@
// AUTO-GENERATED FILE!!!!
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
// with possible manualy fixes
#include <gh_auto_binder.h>
#include "../gh_global.h"
#include <stdexcept>
// 0047bb00
// r3_get_gli_height1
extern "C" int r3_get_gli_height1(void) {
// TODO: Implement this function
throw std::runtime_error("Function not implemented: r3_get_gli_height1");
}

View File

@@ -0,0 +1,14 @@
// AUTO-GENERATED FILE!!!!
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
// with possible manualy fixes
#include <gh_auto_binder.h>
#include "../gh_global.h"
#include <stdexcept>
// 0047baf0
// r3_get_gli_width1
extern "C" undefined4 r3_get_gli_width1(void) {
// TODO: Implement this function
throw std::runtime_error("Function not implemented: r3_get_gli_width1");
}

View File

@@ -0,0 +1,14 @@
// AUTO-GENERATED FILE!!!!
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
// with possible manualy fixes
#include <gh_auto_binder.h>
#include "../gh_global.h"
#include <stdexcept>
// 00401220
// r3_initEngine
extern "C" undefined r3_initEngine(void) {
// TODO: Implement this function
throw std::runtime_error("Function not implemented: r3_initEngine");
}

View File

@@ -0,0 +1,14 @@
// AUTO-GENERATED FILE!!!!
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
// with possible manualy fixes
#include <gh_auto_binder.h>
#include "../gh_global.h"
#include <stdexcept>
// 00401000
// r3_module0_init
extern "C" undefined r3_module0_init(void) {
// TODO: Implement this function
throw std::runtime_error("Function not implemented: r3_module0_init");
}

View File

@@ -0,0 +1,14 @@
// AUTO-GENERATED FILE!!!!
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
// with possible manualy fixes
#include <gh_auto_binder.h>
#include "../gh_global.h"
#include <stdexcept>
// 00402140
// r3_setupWindow
extern "C" undefined r3_setupWindow(undefined4 hInstance, undefined4 param_2, undefined4 maximizeWindow) {
// TODO: Implement this function
throw std::runtime_error("Function not implemented: r3_setupWindow");
}

View File

@@ -0,0 +1,14 @@
// AUTO-GENERATED FILE!!!!
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
// with possible manualy fixes
#include <gh_auto_binder.h>
#include "../gh_global.h"
#include <stdexcept>
// 0043e540
// r3_wait_for_dvd
extern "C" undefined r3_wait_for_dvd(undefined4 param_1, undefined4 param_2, undefined4 param_3) {
// TODO: Implement this function
throw std::runtime_error("Function not implemented: r3_wait_for_dvd");
}

View File

@@ -0,0 +1,14 @@
// AUTO-GENERATED FILE!!!!
// This function has yet to be decompiled using 'Dump Current Function' in ghidra
// with possible manualy fixes
#include <gh_auto_binder.h>
#include "../gh_global.h"
#include <stdexcept>
// 004477d0
// spawnThread
extern "C" undefined spawnThread(void) {
// TODO: Implement this function
throw std::runtime_error("Function not implemented: spawnThread");
}

View File

@@ -3,8 +3,8 @@
#include <stdexcept>
#include <stdio.h>
int r3_main(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR *cmdline,
int showCmd);
extern "C" int r3_main(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR *cmdline, int showCmd);
extern void gh_init_data_segment();
int main() {