| 1 |
#ifndef ONI_SYMBOLS_H |
| 2 |
#define ONI_SYMBOLS_H |
| 3 |
#include "stdint.h" |
| 4 |
#include <stdio.h> |
| 5 |
#include "Oni.h" |
| 6 |
#include "Oni_GL.h" |
| 7 |
#include "Oni_Character.h" |
| 8 |
#include "BFW_ScriptLang.h" |
| 9 |
|
| 10 |
|
| 11 |
//Define variables of Oni: #define VARNAME (*((TYPE*)ADDRESS)) |
| 12 |
|
| 13 |
// AIs are deaf (ger: "taub") |
| 14 |
#define ai2_deaf (*((onibool*)0x005ec0c1)) |
| 15 |
|
| 16 |
// Option "debug" ... but what does it do? |
| 17 |
#define AKgDebug_DebugMaps (*((char*)0x002b2204)) |
| 18 |
|
| 19 |
// Option "debugfiles" ... but what does it do? |
| 20 |
#define BFgDebugFileEnable (*((bool*)0x0055c8d0)) |
| 21 |
|
| 22 |
// Parameter 1 to COrTextArea_Print. Context pointer? |
| 23 |
#define COgConsoleLines (*((uint32_t*)0x005cb468)) |
| 24 |
|
| 25 |
// Default console text color |
| 26 |
#define COgDefaultTextShade (*((uint32_t*)0x00533f70)) |
| 27 |
|
| 28 |
// Default console text shadow color |
| 29 |
#define COgDefaultTextShadow (*((uint32_t*)0x00533f74)) |
| 30 |
|
| 31 |
// Console text fade timeout |
| 32 |
#define COgFadeTimeValue (*((uint32_t*)0x00533f68)) |
| 33 |
|
| 34 |
// Some kind of graphics context? |
| 35 |
#define g_Instance (*((HINSTANCE*)0x0061F9E4)) |
| 36 |
|
| 37 |
// OpenGL Gamma related |
| 38 |
#define gl_gamma_ramp (*((WORD**)0x0055fdfc)) |
| 39 |
|
| 40 |
// OpenGL Gamma related |
| 41 |
#define gl_gamma_ramp_valid (*((int*)0x005603fc)) |
| 42 |
|
| 43 |
// OpenGL: list of pointers to opengl32.dll functions (and a few functions from GL extensions) |
| 44 |
#define gl_api (*((gl_api_t**)0x00560604)) |
| 45 |
|
| 46 |
// OpenGL render engine descriptor (resolutions, flags, context methods) |
| 47 |
#define gl_eng (*((gl_engine_t**)0x00560600)) |
| 48 |
|
| 49 |
// Value of -switch/-noswitch? |
| 50 |
#define M3gResolutionSwitch (*((char*)0x00531634)) |
| 51 |
|
| 52 |
// Startup.txt file handle |
| 53 |
#define ONgFileStartup (*((FILE**)0x005711b8)) |
| 54 |
|
| 55 |
// Current GameState |
| 56 |
#define ONgGameState (*((GameState**)0x005ece7c)) |
| 57 |
|
| 58 |
// Current ONtPlatformData |
| 59 |
#define ONgPlatformData (*((ONtPlatformData*)0x0053100c)) |
| 60 |
|
| 61 |
// Load non levelX_final-files yes/no |
| 62 |
#define opt_ignore_private_data (*((char*)0x006370f0)) |
| 63 |
|
| 64 |
// Play sound yes/no |
| 65 |
#define opt_sound (*((char*)0x006370fc)) |
| 66 |
|
| 67 |
// Option "findsounds" ... but what does it do? |
| 68 |
#define SSgSearchOnDisk (*((bool*)0x005eb758)) |
| 69 |
|
| 70 |
|
| 71 |
// Method signature for script (BSL) functions |
| 72 |
typedef uint16_t ( ONICALL *sl_func)(sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], int* dontuse1, int* dontuse2, sl_arg* ret); |
| 73 |
|
| 74 |
// Used by function definition below: OBJrObjectType_EnumerateObjects |
| 75 |
typedef char ( ONICALL *OBJtEnumCallback_Object)(void *inObject, int inUserData); |
| 76 |
|
| 77 |
|
| 78 |
|
| 79 |
#define DefFunc( type, name, callingconvention, args, address) typedef type ( callingconvention * _##name ) args; static _##name name = (_##name)address |
| 80 |
|
| 81 |
// Orig timing functions, replaced by DDrMachineTime_* if option "usegettickcount" is enabled |
| 82 |
DefFunc(int64_t, UUrMachineTime_High, ONICALL, (), 0x04026480); |
| 83 |
DefFunc(double, UUrMachineTime_High_Frequency, ONICALL, (), 0x040264b0); |
| 84 |
DefFunc(int64_t, UUrMachineTime_Sixtieths, ONICALL, (), 0x040263e0); |
| 85 |
|
| 86 |
// Code to initialize platform stuff (like disabling system key combination Alt+Tab) |
| 87 |
DefFunc(void, UUrPlatform_Initialize, ONICALL, (), 0x04026010); |
| 88 |
DefFunc(void, UUrPlatform_Terminate, ONICALL, (), 0x04026310); |
| 89 |
|
| 90 |
// Oni's file access methods |
| 91 |
DefFunc(FILE*, oni_fopen, __cdecl, (const char*, const char*), 0x0051ea9f); |
| 92 |
DefFunc(int, oni_fprintf, __cdecl, (FILE*, const char*, ...), 0x0051ebbf); |
| 93 |
DefFunc(int, oni_fflush, __cdecl, (FILE*), 0x0051eab2); |
| 94 |
|
| 95 |
// Oni's main method? |
| 96 |
DefFunc(void, ONiMain, __cdecl, (int ArgCount, char *ArgList[]), 0x004d3280); |
| 97 |
|
| 98 |
// Initialization code, used to hook in windowed modes |
| 99 |
DefFunc(short, ONrPlatform_Initialize, ONICALL, (ONtPlatformData *PlatformData), 0x0050f670); |
| 100 |
DefFunc(LRESULT, ONrPlatform_WindowProc, CALLBACK, (HWND Window, UINT Message, WPARAM WParam, LPARAM LParam), 0x0050f7a0); |
| 101 |
|
| 102 |
// Retrieves a list of resolutions, replaced by "daodan_enumerate_valid_display_modes" |
| 103 |
DefFunc(unsigned int, gl_enumerate_valid_display_modes, ONICALL, (M3tDisplayMode modes[16]), 0x004083a0); |
| 104 |
DefFunc(int, gl_platform_set_pixel_format, ONICALL, (HDC hdc), 0x00407b50); |
| 105 |
|
| 106 |
// Original graphics initialization method patched to use "daodangl_platform_initialize" instead if daodangl is used |
| 107 |
DefFunc(int, gl_platform_initialize, ONICALL, (), 0x00407da0); |
| 108 |
|
| 109 |
// Retrieve gamma value from settings |
| 110 |
DefFunc(float, ONrPersist_GetGamma, ONICALL, (), 0x0050f450); |
| 111 |
|
| 112 |
// Retrieve if the game was completed |
| 113 |
DefFunc(uint8_t, ONrPersist_GetWonGame, ONICALL, (), 0x0050f660); |
| 114 |
|
| 115 |
// Print a message to the startup.txt log |
| 116 |
DefFunc(void, UUrStartupMessage, __cdecl, (const char* fmt, ...), 0x00424860); |
| 117 |
|
| 118 |
// Probably to spawn a new character |
| 119 |
DefFunc(int16_t, ONrGameState_NewCharacter, ONICALL, (void* CHAR, void* AISA, void* flag, uint32_t* list_location), 0x004dac50); |
| 120 |
|
| 121 |
// Remove character |
| 122 |
DefFunc(void, ONrGameState_DeleteCharacter, ONICALL, (Character *inCharacter), 0x004DC480); |
| 123 |
|
| 124 |
DefFunc(void, ONrGameState_Timer_Start, ONICALL, (char* function, int time), 0x004FD370); |
| 125 |
|
| 126 |
// Get active (player?) character |
| 127 |
DefFunc(ActiveCharacter*, ONrGetActiveCharacter, ONICALL, (void* CharacterPtr), 0x004f1180); |
| 128 |
|
| 129 |
DefFunc(uint32_t, ONrCharacter_GetHealthShade, ONICALL, (uint32_t health, uint32_t maxhealth), 0x004EF450); |
| 130 |
DefFunc(void, ONrCharacter_NewAnimationHook, ONICALL, (Character *ioCharacter, ActiveCharacter *ioActiveCharacter), 0x004E97A0); |
| 131 |
DefFunc(void, ONrCharacter_SetAnimationExternal, ONICALL, (Character *ioCharacter, short state, void* animation, int interpolation), 0x004EB340); |
| 132 |
DefFunc(void, ONrCharacter_SetHitPoints, ONICALL, (Character *ioCharacter, uint32_t inHitPoints), 0x004EB220); |
| 133 |
DefFunc(void, ONrCharacter_SetCharacterClass, ONICALL, (Character* Char, ONCC* Class), 0x004D7C30); |
| 134 |
DefFunc(void, ONrCorpse_Create, ONICALL, (Character* Character), 0x004EF340); |
| 135 |
|
| 136 |
|
| 137 |
// Print message to console |
| 138 |
DefFunc(void, COrTextArea_Print, ONICALL, (uint32_t area, uint32_t priority, uint32_t textshade, uint32_t textshadowshade, const char* text, uint32_t unk_alwaws_0, uint32_t fadetime), 0x00431340); |
| 139 |
|
| 140 |
// Original cheat function |
| 141 |
DefFunc(uint8_t, ONrCheater, ONICALL, (uint32_t cheat), 0x004f5c30); |
| 142 |
|
| 143 |
// ? |
| 144 |
DefFunc(int, AUrMessageBox, __cdecl, (int Buttons, char *Message, ...), 0x004378c0); |
| 145 |
DefFunc(char*, SSrMessage_Find, ONICALL, (char* message_key), 0x0047F550); |
| 146 |
DefFunc(void, ONiGameState_FindAutoPromptMessage, ONICALL, (char* Note, void* ptr), 0x004FDBE0); |
| 147 |
|
| 148 |
// Register a BSL function with a return type |
| 149 |
DefFunc(uint16_t, SLrScript_Command_Register_ReturnType, ONICALL, (char* name, char* desc, char* argfmt, sl_type type, sl_func callback), 0x00477b20); |
| 150 |
|
| 151 |
// Register a BSL function without a return value |
| 152 |
DefFunc(uint16_t, SLrScript_Command_Register_Void, ONICALL, (char* name, char* desc, char* argfmt, sl_func callback), 0x00477b40); |
| 153 |
|
| 154 |
// Register a global BSL variable |
| 155 |
DefFunc(uint16_t, SLrGlobalVariable_Register_Int32, ONICALL, (char* name, char* desc, int32_t* data), 0x00477e30); |
| 156 |
DefFunc(uint16_t, SLrGlobalVariable_Register_Float, ONICALL, (char* name, char* desc, float* data), 0x00477ec0); |
| 157 |
DefFunc(uint16_t, SLrGlobalVariable_Register_String, ONICALL, (char* name, char* desc, char* data), 0x00477fe0); |
| 158 |
|
| 159 |
// Print message to console ? |
| 160 |
DefFunc(int, COrMessage_Print, ONICALL, (char* Message, char* Key, void* noidea), 0x004304B0); |
| 161 |
|
| 162 |
DefFunc(void, COrConsole_StatusLine_Display, ONICALL, (), 0x00431E70); |
| 163 |
|
| 164 |
// Get pointer to specified data instance |
| 165 |
DefFunc(int16_t, TMrInstance_GetDataPtr, ONICALL, (int tag, char* name, void* pointer), 0x004232E0); |
| 166 |
|
| 167 |
// Get name of data instance pointed to |
| 168 |
DefFunc(char*, TMrInstance_GetInstanceName, ONICALL, (void* InstancePointer), 0x00423D90); |
| 169 |
|
| 170 |
DefFunc(short, TMrInstance_GetDataPtr_ByNumber, ONICALL, (int tag, int number, void** out), 0x00423680); |
| 171 |
DefFunc(uint32_t, TMrInstance_GetTagCount, ONICALL, (int tag), 0x004236F0); |
| 172 |
|
| 173 |
// Draw text on the screen |
| 174 |
DefFunc(int16_t, TSrContext_DrawText, ONICALL, (uint32_t TSrContext, char* Text, char alpha, uint32_t usuallyzero, void* pRect), 0x0042DF00); |
| 175 |
DefFunc(int16_t, TSrContext_New, ONICALL, (void* FontInstance, int size, int hthsik1,int hthsik2,int hthsik3, void* TSrContext), 0x0042EA30); |
| 176 |
|
| 177 |
DefFunc(int16_t, TSrContext_SetShade, ONICALL, (void *ioTextContext, uint32_t inShade), 0x0042EE50); |
| 178 |
|
| 179 |
DefFunc(uint16_t, TRrAnimation_GetDuration, ONICALL, (void* Animation), 0x00428740); |
| 180 |
DefFunc(uint16_t, TRrAnimation_GetTo, ONICALL, (void* Animation), 0x00428730); |
| 181 |
DefFunc(uint16_t, TRrAnimation_GetFrom, ONICALL, (void* Animation), 0x00428720); |
| 182 |
|
| 183 |
DefFunc(uint16_t, iSetCharacterClass, ONICALL, (sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], int* dontuse1, int* dontuse2, sl_arg* ret), 0x004D99D0); |
| 184 |
DefFunc(uint16_t, AI2iScript_Spawn, ONICALL, (sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], int* dontuse1, int* dontuse2, sl_arg* ret), 0x004B4780); |
| 185 |
//NOT USED: DefFunc(void*, OBJrObjectType_GetObject_ByNumber, ONICALL, (int inObjectType, int inIndex), ); |
| 186 |
//NOT USED: DefFunc(int, OBJiObjectGroup_GetNumObjects, ONICALL, (void *inObjectGroup), ); |
| 187 |
|
| 188 |
DefFunc(int, OBJrObjectType_EnumerateObjects, ONICALL, (int inObjectType, OBJtEnumCallback_Object inEnumCallback, int inUserData), 0x004D0080); |
| 189 |
|
| 190 |
DefFunc(void, OBJrDoor_Open, ONICALL, (DoorObject *inObject, Character *inCharacter), 0x004C26C0); |
| 191 |
DefFunc(void, OBJrDoor_ForceOpen, ONICALL, (short id), 0x004C1EE0); |
| 192 |
DefFunc(short, OBJrConsole_OnActivate, ONICALL, (void *inObject, Character *inCharacter), 0x004C0880); |
| 193 |
DefFunc(void*, OBJrConsole_GetByID, ONICALL, (short ID), 0x004C0950); |
| 194 |
|
| 195 |
|
| 196 |
DefFunc(void, ONiDrawWeaponSight, ONICALL, (Character* Char), 0x004E1900); |
| 197 |
DefFunc(void, AI2rDisplayDebuggingInfo, ONICALL, (Character* Char), 0x0048C5F0); |
| 198 |
DefFunc(uint32_t, M3rTextureMap_New, ONICALL, (short width, short height, int type, int allocated, int flags, char* name, void** output), 0x041EB00); |
| 199 |
|
| 200 |
// Make a dialog element (in)visible and change its position |
| 201 |
DefFunc(void, WMrWindow_SetVisible, ONICALL, (int window, int visibility), 0x00475a10); |
| 202 |
DefFunc(void, WMrWindow_SetLocation, ONICALL, (int window, int x, int y), 0x004756d0); |
| 203 |
|
| 204 |
#undef DefFunc |
| 205 |
|
| 206 |
#endif |