[876] | 1 | #ifndef ONI_SYMBOLS_H
|
---|
[677] | 2 | #define ONI_SYMBOLS_H
|
---|
[692] | 3 | #include "stdint.h"
|
---|
[677] | 4 | #include <stdio.h>
|
---|
| 5 | #include "Oni.h"
|
---|
[692] | 6 | #include "Oni_GL.h"
|
---|
[677] | 7 | #include "Oni_Character.h"
|
---|
| 8 | #include "BFW_ScriptLang.h"
|
---|
[688] | 9 |
|
---|
[677] | 10 |
|
---|
[690] | 11 | //Define variables of Oni: #define VARNAME (*((TYPE*)ADDRESS))
|
---|
[677] | 12 |
|
---|
[690] | 13 | // AIs are deaf (ger: "taub")
|
---|
| 14 | #define ai2_deaf (*((onibool*)0x005ec0c1))
|
---|
[677] | 15 |
|
---|
[690] | 16 | // Option "debug" ... but what does it do?
|
---|
| 17 | #define AKgDebug_DebugMaps (*((char*)0x002b2204))
|
---|
[677] | 18 |
|
---|
[690] | 19 | // Option "debugfiles" ... but what does it do?
|
---|
| 20 | #define BFgDebugFileEnable (*((bool*)0x0055c8d0))
|
---|
[677] | 21 |
|
---|
[690] | 22 | // Parameter 1 to COrTextArea_Print. Context pointer?
|
---|
| 23 | #define COgConsoleLines (*((uint32_t*)0x005cb468))
|
---|
[677] | 24 |
|
---|
[690] | 25 | // Default console text color
|
---|
| 26 | #define COgDefaultTextShade (*((uint32_t*)0x00533f70))
|
---|
[677] | 27 |
|
---|
[690] | 28 | // Default console text shadow color
|
---|
| 29 | #define COgDefaultTextShadow (*((uint32_t*)0x00533f74))
|
---|
[677] | 30 |
|
---|
[690] | 31 | // Console text fade timeout
|
---|
| 32 | #define COgFadeTimeValue (*((uint32_t*)0x00533f68))
|
---|
[677] | 33 |
|
---|
[705] | 34 | // Game termination flag (ONiRunGame loops on it).
|
---|
| 35 | #define ONgTerminateGame (*((UUtBool*)0x00630ffd))
|
---|
[876] | 36 |
|
---|
[705] | 37 | // Window manager is running (drawing and updating windows).
|
---|
| 38 | #define WMgActive (*((UUtBool*)0x005e99a0))
|
---|
[876] | 39 |
|
---|
[705] | 40 | // Set by WinMain, used by UUrPlatform_Initialize and ONrPlatform_Initialize,
|
---|
| 41 | // which copies it into ONgPlatformData.
|
---|
| 42 | #define ONgInstance (*((HINSTANCE*)0x0061f9e4))
|
---|
[876] | 43 |
|
---|
[705] | 44 | // Keeps initial gamma ramp value (before any change).
|
---|
| 45 | #define GLgInitialGammaRamp (((M3tWin32GammaRamp*)0x0055fdfc))
|
---|
[677] | 46 |
|
---|
[705] | 47 | // Nonzero when gamma ramp was successfully read into GLgInitialGammaRamp.
|
---|
| 48 | #define GLgGammaRampValid (*((int*)0x005603fc))
|
---|
[677] | 49 |
|
---|
[692] | 50 | // OpenGL: list of pointers to opengl32.dll functions (and a few functions from GL extensions)
|
---|
[690] | 51 | #define gl_api (*((gl_api_t**)0x00560604))
|
---|
| 52 |
|
---|
[692] | 53 | // OpenGL render engine descriptor (resolutions, flags, context methods)
|
---|
[705] | 54 | #define gl (*((gl_engine_t**)0x00560600))
|
---|
[690] | 55 |
|
---|
[705] | 56 | // Initial display mode (saved by gl_library_is_loaded).
|
---|
| 57 | #define GLgInitialMode (*((DEVMODE*)0x0055fd60))
|
---|
| 58 |
|
---|
| 59 | // False to prevent Oni from changing display settings (however Bink
|
---|
| 60 | // player does not respect this setting).
|
---|
[690] | 61 | #define M3gResolutionSwitch (*((char*)0x00531634))
|
---|
| 62 |
|
---|
| 63 | // Startup.txt file handle
|
---|
| 64 | #define ONgFileStartup (*((FILE**)0x005711b8))
|
---|
| 65 |
|
---|
| 66 | // Current GameState
|
---|
| 67 | #define ONgGameState (*((GameState**)0x005ece7c))
|
---|
| 68 |
|
---|
| 69 | // Current ONtPlatformData
|
---|
[705] | 70 | #define ONgPlatformData (*((ONtPlatformData*)0x00631008))
|
---|
[690] | 71 |
|
---|
| 72 | // Load non levelX_final-files yes/no
|
---|
| 73 | #define opt_ignore_private_data (*((char*)0x006370f0))
|
---|
| 74 |
|
---|
| 75 | // Play sound yes/no
|
---|
| 76 | #define opt_sound (*((char*)0x006370fc))
|
---|
| 77 |
|
---|
| 78 | // Option "findsounds" ... but what does it do?
|
---|
| 79 | #define SSgSearchOnDisk (*((bool*)0x005eb758))
|
---|
| 80 |
|
---|
| 81 |
|
---|
| 82 | // Method signature for script (BSL) functions
|
---|
[688] | 83 | typedef uint16_t ( ONICALL *sl_func)(sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], int* dontuse1, int* dontuse2, sl_arg* ret);
|
---|
[690] | 84 |
|
---|
| 85 | // Used by function definition below: OBJrObjectType_EnumerateObjects
|
---|
[688] | 86 | typedef char ( ONICALL *OBJtEnumCallback_Object)(void *inObject, int inUserData);
|
---|
[677] | 87 |
|
---|
| 88 |
|
---|
[690] | 89 |
|
---|
[688] | 90 | #define DefFunc( type, name, callingconvention, args, address) typedef type ( callingconvention * _##name ) args; static _##name name = (_##name)address
|
---|
[690] | 91 |
|
---|
| 92 | // Orig timing functions, replaced by DDrMachineTime_* if option "usegettickcount" is enabled
|
---|
[688] | 93 | DefFunc(int64_t, UUrMachineTime_High, ONICALL, (), 0x04026480);
|
---|
| 94 | DefFunc(double, UUrMachineTime_High_Frequency, ONICALL, (), 0x040264b0);
|
---|
| 95 | DefFunc(int64_t, UUrMachineTime_Sixtieths, ONICALL, (), 0x040263e0);
|
---|
[690] | 96 |
|
---|
| 97 | // Code to initialize platform stuff (like disabling system key combination Alt+Tab)
|
---|
[688] | 98 | DefFunc(void, UUrPlatform_Initialize, ONICALL, (), 0x04026010);
|
---|
| 99 | DefFunc(void, UUrPlatform_Terminate, ONICALL, (), 0x04026310);
|
---|
[677] | 100 |
|
---|
[690] | 101 | // Oni's file access methods
|
---|
[688] | 102 | DefFunc(FILE*, oni_fopen, __cdecl, (const char*, const char*), 0x0051ea9f);
|
---|
| 103 | DefFunc(int, oni_fprintf, __cdecl, (FILE*, const char*, ...), 0x0051ebbf);
|
---|
| 104 | DefFunc(int, oni_fflush, __cdecl, (FILE*), 0x0051eab2);
|
---|
[677] | 105 |
|
---|
[690] | 106 | // Oni's main method?
|
---|
[688] | 107 | DefFunc(void, ONiMain, __cdecl, (int ArgCount, char *ArgList[]), 0x004d3280);
|
---|
[690] | 108 |
|
---|
| 109 | // Initialization code, used to hook in windowed modes
|
---|
[688] | 110 | DefFunc(short, ONrPlatform_Initialize, ONICALL, (ONtPlatformData *PlatformData), 0x0050f670);
|
---|
| 111 | DefFunc(LRESULT, ONrPlatform_WindowProc, CALLBACK, (HWND Window, UINT Message, WPARAM WParam, LPARAM LParam), 0x0050f7a0);
|
---|
[690] | 112 |
|
---|
| 113 | // Retrieves a list of resolutions, replaced by "daodan_enumerate_valid_display_modes"
|
---|
[688] | 114 | DefFunc(unsigned int, gl_enumerate_valid_display_modes, ONICALL, (M3tDisplayMode modes[16]), 0x004083a0);
|
---|
| 115 | DefFunc(int, gl_platform_set_pixel_format, ONICALL, (HDC hdc), 0x00407b50);
|
---|
[691] | 116 |
|
---|
[705] | 117 | // Original graphics initialization/cleanup functions patched to use
|
---|
| 118 | // DD_GLrPlatform_Initialize/DD_GLrPlatform_Dispoose instead if daodangl is used.
|
---|
| 119 | DefFunc(UUtBool, gl_platform_initialize, ONICALL, (void), 0x00407da0);
|
---|
| 120 | DefFunc(void, gl_platform_dispose, ONICALL, (void), 0x408210);
|
---|
[677] | 121 |
|
---|
[692] | 122 | // Retrieve gamma value from settings
|
---|
[688] | 123 | DefFunc(float, ONrPersist_GetGamma, ONICALL, (), 0x0050f450);
|
---|
[692] | 124 |
|
---|
| 125 | // Retrieve if the game was completed
|
---|
[688] | 126 | DefFunc(uint8_t, ONrPersist_GetWonGame, ONICALL, (), 0x0050f660);
|
---|
[677] | 127 |
|
---|
[692] | 128 | // Print a message to the startup.txt log
|
---|
[688] | 129 | DefFunc(void, UUrStartupMessage, __cdecl, (const char* fmt, ...), 0x00424860);
|
---|
[692] | 130 |
|
---|
| 131 | // Probably to spawn a new character
|
---|
[688] | 132 | DefFunc(int16_t, ONrGameState_NewCharacter, ONICALL, (void* CHAR, void* AISA, void* flag, uint32_t* list_location), 0x004dac50);
|
---|
[692] | 133 |
|
---|
| 134 | // Remove character
|
---|
| 135 | DefFunc(void, ONrGameState_DeleteCharacter, ONICALL, (Character *inCharacter), 0x004DC480);
|
---|
| 136 |
|
---|
| 137 | DefFunc(void, ONrGameState_Timer_Start, ONICALL, (char* function, int time), 0x004FD370);
|
---|
| 138 |
|
---|
| 139 | // Get active (player?) character
|
---|
[688] | 140 | DefFunc(ActiveCharacter*, ONrGetActiveCharacter, ONICALL, (void* CharacterPtr), 0x004f1180);
|
---|
[692] | 141 |
|
---|
| 142 | DefFunc(uint32_t, ONrCharacter_GetHealthShade, ONICALL, (uint32_t health, uint32_t maxhealth), 0x004EF450);
|
---|
[688] | 143 | DefFunc(void, ONrCharacter_NewAnimationHook, ONICALL, (Character *ioCharacter, ActiveCharacter *ioActiveCharacter), 0x004E97A0);
|
---|
| 144 | DefFunc(void, ONrCharacter_SetAnimationExternal, ONICALL, (Character *ioCharacter, short state, void* animation, int interpolation), 0x004EB340);
|
---|
[692] | 145 | DefFunc(void, ONrCharacter_SetHitPoints, ONICALL, (Character *ioCharacter, uint32_t inHitPoints), 0x004EB220);
|
---|
| 146 | DefFunc(void, ONrCharacter_SetCharacterClass, ONICALL, (Character* Char, ONCC* Class), 0x004D7C30);
|
---|
| 147 | DefFunc(void, ONrCorpse_Create, ONICALL, (Character* Character), 0x004EF340);
|
---|
[677] | 148 |
|
---|
[692] | 149 |
|
---|
| 150 | // Print message to console
|
---|
[688] | 151 | 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);
|
---|
[692] | 152 |
|
---|
| 153 | // Original cheat function
|
---|
[688] | 154 | DefFunc(uint8_t, ONrCheater, ONICALL, (uint32_t cheat), 0x004f5c30);
|
---|
[692] | 155 |
|
---|
| 156 | // ?
|
---|
[688] | 157 | DefFunc(int, AUrMessageBox, __cdecl, (int Buttons, char *Message, ...), 0x004378c0);
|
---|
| 158 | DefFunc(char*, SSrMessage_Find, ONICALL, (char* message_key), 0x0047F550);
|
---|
| 159 | DefFunc(void, ONiGameState_FindAutoPromptMessage, ONICALL, (char* Note, void* ptr), 0x004FDBE0);
|
---|
[677] | 160 |
|
---|
[692] | 161 | // Register a BSL function with a return type
|
---|
[688] | 162 | DefFunc(uint16_t, SLrScript_Command_Register_ReturnType, ONICALL, (char* name, char* desc, char* argfmt, sl_type type, sl_func callback), 0x00477b20);
|
---|
[692] | 163 |
|
---|
| 164 | // Register a BSL function without a return value
|
---|
[688] | 165 | DefFunc(uint16_t, SLrScript_Command_Register_Void, ONICALL, (char* name, char* desc, char* argfmt, sl_func callback), 0x00477b40);
|
---|
[692] | 166 |
|
---|
| 167 | // Register a global BSL variable
|
---|
[688] | 168 | DefFunc(uint16_t, SLrGlobalVariable_Register_Int32, ONICALL, (char* name, char* desc, int32_t* data), 0x00477e30);
|
---|
| 169 | DefFunc(uint16_t, SLrGlobalVariable_Register_Float, ONICALL, (char* name, char* desc, float* data), 0x00477ec0);
|
---|
| 170 | DefFunc(uint16_t, SLrGlobalVariable_Register_String, ONICALL, (char* name, char* desc, char* data), 0x00477fe0);
|
---|
[677] | 171 |
|
---|
[692] | 172 | // Print message to console ?
|
---|
[688] | 173 | DefFunc(int, COrMessage_Print, ONICALL, (char* Message, char* Key, void* noidea), 0x004304B0);
|
---|
[692] | 174 |
|
---|
[688] | 175 | DefFunc(void, COrConsole_StatusLine_Display, ONICALL, (), 0x00431E70);
|
---|
[692] | 176 |
|
---|
| 177 | // Get pointer to specified data instance
|
---|
[688] | 178 | DefFunc(int16_t, TMrInstance_GetDataPtr, ONICALL, (int tag, char* name, void* pointer), 0x004232E0);
|
---|
[692] | 179 |
|
---|
| 180 | // Get name of data instance pointed to
|
---|
[688] | 181 | DefFunc(char*, TMrInstance_GetInstanceName, ONICALL, (void* InstancePointer), 0x00423D90);
|
---|
[677] | 182 |
|
---|
[692] | 183 | DefFunc(short, TMrInstance_GetDataPtr_ByNumber, ONICALL, (int tag, int number, void** out), 0x00423680);
|
---|
| 184 | DefFunc(uint32_t, TMrInstance_GetTagCount, ONICALL, (int tag), 0x004236F0);
|
---|
| 185 |
|
---|
| 186 | // Draw text on the screen
|
---|
[688] | 187 | DefFunc(int16_t, TSrContext_DrawText, ONICALL, (uint32_t TSrContext, char* Text, char alpha, uint32_t usuallyzero, void* pRect), 0x0042DF00);
|
---|
| 188 | DefFunc(int16_t, TSrContext_New, ONICALL, (void* FontInstance, int size, int hthsik1,int hthsik2,int hthsik3, void* TSrContext), 0x0042EA30);
|
---|
[677] | 189 |
|
---|
[688] | 190 | DefFunc(int16_t, TSrContext_SetShade, ONICALL, (void *ioTextContext, uint32_t inShade), 0x0042EE50);
|
---|
[692] | 191 |
|
---|
[688] | 192 | DefFunc(uint16_t, TRrAnimation_GetDuration, ONICALL, (void* Animation), 0x00428740);
|
---|
| 193 | DefFunc(uint16_t, TRrAnimation_GetTo, ONICALL, (void* Animation), 0x00428730);
|
---|
| 194 | DefFunc(uint16_t, TRrAnimation_GetFrom, ONICALL, (void* Animation), 0x00428720);
|
---|
[677] | 195 |
|
---|
[688] | 196 | DefFunc(uint16_t, iSetCharacterClass, ONICALL, (sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], int* dontuse1, int* dontuse2, sl_arg* ret), 0x004D99D0);
|
---|
| 197 | DefFunc(uint16_t, AI2iScript_Spawn, ONICALL, (sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], int* dontuse1, int* dontuse2, sl_arg* ret), 0x004B4780);
|
---|
| 198 | //NOT USED: DefFunc(void*, OBJrObjectType_GetObject_ByNumber, ONICALL, (int inObjectType, int inIndex), );
|
---|
| 199 | //NOT USED: DefFunc(int, OBJiObjectGroup_GetNumObjects, ONICALL, (void *inObjectGroup), );
|
---|
[677] | 200 |
|
---|
[688] | 201 | DefFunc(int, OBJrObjectType_EnumerateObjects, ONICALL, (int inObjectType, OBJtEnumCallback_Object inEnumCallback, int inUserData), 0x004D0080);
|
---|
[677] | 202 |
|
---|
[688] | 203 | DefFunc(void, OBJrDoor_Open, ONICALL, (DoorObject *inObject, Character *inCharacter), 0x004C26C0);
|
---|
| 204 | DefFunc(void, OBJrDoor_ForceOpen, ONICALL, (short id), 0x004C1EE0);
|
---|
| 205 | DefFunc(short, OBJrConsole_OnActivate, ONICALL, (void *inObject, Character *inCharacter), 0x004C0880);
|
---|
| 206 | DefFunc(void*, OBJrConsole_GetByID, ONICALL, (short ID), 0x004C0950);
|
---|
[677] | 207 |
|
---|
| 208 |
|
---|
[688] | 209 | DefFunc(void, ONiDrawWeaponSight, ONICALL, (Character* Char), 0x004E1900);
|
---|
| 210 | DefFunc(void, AI2rDisplayDebuggingInfo, ONICALL, (Character* Char), 0x0048C5F0);
|
---|
| 211 | DefFunc(uint32_t, M3rTextureMap_New, ONICALL, (short width, short height, int type, int allocated, int flags, char* name, void** output), 0x041EB00);
|
---|
[693] | 212 |
|
---|
| 213 | // Make a dialog element (in)visible and change its position
|
---|
[705] | 214 | DefFunc(void, WMrWindow_SetVisible, ONICALL, (WMtWindow* window, int visibility), 0x00475a10);
|
---|
| 215 | DefFunc(void, WMrWindow_SetLocation, ONICALL, (WMtWindow* window, int x, int y), 0x004756d0);
|
---|
[693] | 216 |
|
---|
[705] | 217 | // Plays movie using Bink blitting method (ie., non-OpenGL blitting).
|
---|
| 218 | DefFunc(void, ONrMovie_Play, ONICALL, (const char* movie, int unknown), 0x004d5580);
|
---|
| 219 |
|
---|
| 220 | // Sets minimum and maximum values for a slider control.
|
---|
| 221 | DefFunc(void, WMrSlider_SetRange, ONICALL, (WMtWindow* window, int min_value, int max_value), 0x00472650);
|
---|
| 222 |
|
---|
| 223 | // Enables or disables window.
|
---|
| 224 | DefFunc(void, WMrWindow_SetEnabled, ONICALL, (WMtWindow* window, UUtBool enabled), 0x00475580);
|
---|
| 225 |
|
---|
| 226 | // Sets gamma to specified factor (0.0 .. 1.0).
|
---|
| 227 | DefFunc(void, M3rSetGamma, ONICALL, (float factor), 0x00407a60);
|
---|
| 228 |
|
---|
| 229 | // Resets gl_api pointers, unloads OPENGL32.DLL.
|
---|
| 230 | DefFunc(void, gl_unload_library, ONICALL, (void), 0x0040ac40);
|
---|
| 231 |
|
---|
| 232 | // Notifies platform-specific local input implementation about internal (ie.,
|
---|
| 233 | // real) input mode change.
|
---|
| 234 | DefFunc(void, LIrPlatform_Mode_Set, ONICALL, (unsigned int active_mode), 0x00402cf0);
|
---|
| 235 |
|
---|
| 236 | // Terminates platform-specific local-input.
|
---|
| 237 | DefFunc(void, LIrPlatform_Terminate, ONICALL, (void), 0x00403620);
|
---|
| 238 |
|
---|
[688] | 239 | #undef DefFunc
|
---|
[677] | 240 |
|
---|
| 241 | #endif
|
---|