From 6baa0e1e2e4f35f97522f989446483a2df84885e Mon Sep 17 00:00:00 2001 From: superp00t Date: Sat, 12 Apr 2025 23:38:45 -0400 Subject: [PATCH] feat(profile): tidy profile and add some more symbols --- .../ida/batch/import_data_types.idc | 4 +- .../ida/batch/import_functions.idc | 28 ++ .../ida/batch/import_symbols.idc | 275 +++++++++++++++- .../symbol/account/func.sym | 2 +- .../symbol/actionbar/func.sym | 2 +- .../symbol/actionbar/label.sym | 6 +- .../symbol/asyncfile/func.sym | 8 +- .../symbol/barbershop/func.sym | 2 +- profile/3.3.5a-windows-386/symbol/bc/func.sym | 6 +- .../3.3.5a-windows-386/symbol/camera/func.sym | 2 - .../symbol/character/func.sym | 2 +- .../symbol/characterselection/func.sym | 2 +- .../3.3.5a-windows-386/symbol/client/func.sym | 9 +- .../symbol/client/label.sym | 2 +- .../symbol/clientconnection/func.sym | 2 +- .../symbol/clientservices/func.sym | 32 +- .../symbol/clientservices/label.sym | 2 +- .../symbol/cmdline/func.sym | 2 +- .../symbol/cmdline/label.sym | 2 +- .../symbol/console/func.sym | 13 +- .../symbol/coordinate/func.sym | 10 +- .../3.3.5a-windows-386/symbol/cursor/func.sym | 2 +- .../symbol/cursor/label.sym | 2 +- .../symbol/dataallocator/func.sym | 2 +- .../symbol/datarecycler/func.sym | 2 +- .../symbol/datastore/func.sym | 2 +- .../symbol/datastore/label.sym | 2 +- .../symbol/daynight/func.sym | 2 +- profile/3.3.5a-windows-386/symbol/db/func.sym | 2 +- .../3.3.5a-windows-386/symbol/db/label.sym | 34 +- .../3.3.5a-windows-386/symbol/effect/func.sym | 2 +- .../3.3.5a-windows-386/symbol/event/func.sym | 67 ++-- .../3.3.5a-windows-386/symbol/event/label.sym | 4 +- .../3.3.5a-windows-386/symbol/ffx/func.sym | 2 +- .../3.3.5a-windows-386/symbol/file/func.sym | 2 +- .../3.3.5a-windows-386/symbol/file/label.sym | 2 +- .../symbol/framescript/func.sym | 18 +- .../symbol/framescript/label.sym | 2 +- .../symbol/framestrata/func.sym | 2 +- .../symbol/framexml/func.sym | 6 +- .../symbol/gamecamera/func.sym | 1 + .../3.3.5a-windows-386/symbol/gameui/func.sym | 74 ++--- .../symbol/gameui/label.sym | 26 +- .../symbol/gluemgr/func.sym | 68 ++-- .../symbol/gluemgr/label.sym | 24 +- profile/3.3.5a-windows-386/symbol/gx/func.sym | 2 +- .../3.3.5a-windows-386/symbol/gx/label.sym | 2 +- .../3.3.5a-windows-386/symbol/gxbuf/func.sym | 2 +- .../symbol/gxdevice/func.sym | 5 +- .../symbol/gxdevice/label.sym | 8 +- .../symbol/gxdeviced3d/func.sym | 2 +- .../symbol/gxdeviced3d/label.sym | 4 +- .../symbol/gxdeviced3d9ex/func.sym | 2 +- .../symbol/gxdeviced3d9ex/label.sym | 2 +- .../symbol/gxformat/func.sym | 2 +- .../3.3.5a-windows-386/symbol/gxprim/func.sym | 6 +- .../symbol/gxshader/func.sym | 2 +- .../symbol/gxtexture/func.sym | 2 +- .../3.3.5a-windows-386/symbol/gxu/func.sym | 12 +- .../3.3.5a-windows-386/symbol/handle/func.sym | 2 +- .../3.3.5a-windows-386/symbol/heap/func.sym | 2 +- .../symbol/layoutframe/func.sym | 2 +- .../symbol/loadingscreen/func.sym | 2 +- .../3.3.5a-windows-386/symbol/lock/func.sym | 2 +- .../3.3.5a-windows-386/symbol/lua/func.sym | 2 +- profile/3.3.5a-windows-386/symbol/m2/func.sym | 2 +- profile/3.3.5a-windows-386/symbol/main.sym | 293 +++++++++++++++++- .../symbol/missile/func.sym | 2 +- .../symbol/movement/func.sym | 2 +- .../symbol/netclient/func.sym | 2 +- .../symbol/nullsub/func.sym | 8 +- profile/3.3.5a-windows-386/symbol/os/func.sym | 7 +- .../3.3.5a-windows-386/symbol/ostime/func.sym | 4 +- .../symbol/ostime/label.sym | 2 +- .../symbol/partyinfo/func.sym | 2 +- .../3.3.5a-windows-386/symbol/player/func.sym | 2 +- .../symbol/rcstring/func.sym | 2 +- .../symbol/realmlist/func.sym | 2 +- .../3.3.5a-windows-386/symbol/screen/func.sym | 4 +- .../symbol/screen/label.sym | 2 +- .../3.3.5a-windows-386/symbol/script/func.sym | 2 +- .../symbol/scriptobject/func.sym | 2 +- .../symbol/scriptregion/func.sym | 2 +- .../symbol/shadereffect/func.sym | 2 +- .../symbol/shadereffect/label.sym | 2 +- .../symbol/simplecamera/func.sym | 1 + .../symbol/simplefontstring/func.sym | 2 +- .../symbol/simpleframe/func.sym | 6 +- .../symbol/simplemodel/func.sym | 2 +- .../symbol/simpleregion/func.sym | 2 +- .../symbol/simpletop/func.sym | 2 +- .../3.3.5a-windows-386/symbol/sound/func.sym | 6 +- .../3.3.5a-windows-386/symbol/spell/func.sym | 2 +- .../3.3.5a-windows-386/symbol/storm/func.sym | 1 + .../3.3.5a-windows-386/symbol/storm/label.sym | 6 +- .../3.3.5a-windows-386/symbol/sysmsg/func.sym | 2 +- .../symbol/tempest/func.sym | 6 +- .../symbol/textblock/func.sym | 4 +- .../symbol/texture/func.sym | 78 ++--- .../symbol/texture/label.sym | 2 +- .../3.3.5a-windows-386/symbol/unit/func.sym | 2 +- .../3.3.5a-windows-386/symbol/utf/func.sym | 3 +- .../3.3.5a-windows-386/symbol/utf/label.sym | 2 +- .../symbol/videooptions/func.sym | 2 +- .../3.3.5a-windows-386/symbol/world/func.sym | 2 +- .../symbol/worldframe/func.sym | 26 +- .../3.3.5a-windows-386/symbol/wowsys/func.sym | 6 +- profile/3.3.5a-windows-386/x64dbg/game.dd32 | Bin 119634 -> 128658 bytes 108 files changed, 953 insertions(+), 386 deletions(-) create mode 100644 profile/3.3.5a-windows-386/symbol/gamecamera/func.sym create mode 100644 profile/3.3.5a-windows-386/symbol/simplecamera/func.sym diff --git a/profile/3.3.5a-windows-386/ida/batch/import_data_types.idc b/profile/3.3.5a-windows-386/ida/batch/import_data_types.idc index 0b7a510..46ced0e 100644 --- a/profile/3.3.5a-windows-386/ida/batch/import_data_types.idc +++ b/profile/3.3.5a-windows-386/ida/batch/import_data_types.idc @@ -233,6 +233,7 @@ static import_data_types() { apply_type(0x00689E80, "int32_t __stdcall func(void* a, void* b)"); apply_type(0x00689EA0, "int32_t __stdcall func(PDISPLAY_DEVICEA device, uint32_t flag)"); apply_type(0x00689EF0, "CGxDevice* __stdcall func()"); + apply_type(0x00689F20, "int32_t __stdcall func(CGxMonitorMode* mode)"); apply_type(0x0068A090, "CGxMonitorMode* __thiscall func(TSGrowableArray_CGxMonitorMode* this)"); apply_type(0x0068A0F0, "void __thiscall func(TSGrowableArray_CGxMonitorMode* this, uint32_t count)"); apply_type(0x0068A4C0, "void __stdcall func(TSGrowableArray_CGxMonitorMode* modes)"); @@ -357,7 +358,8 @@ static import_data_types() { apply_type(0x00764A10, "int32_t __stdcall func(EVENT_DATA_MOUSE* data, void* param)"); apply_type(0x00764B90, "int32_t __stdcall func(EVENT_DATA_KEY* data, void* param)"); apply_type(0x00765270, "void __stdcall func(char* str, COLOR_T color)"); - apply_type(0x007653B0, "void __stdcall func(char* str, COLOR_T color, ...)"); + apply_type(0x00765360, "void __stdcall func(char* format, COLOR_T color, ...)"); + apply_type(0x007653B0, "void __stdcall func(char* str,...)"); apply_type(0x007658A0, "void __stdcall func(char* commandLine, int32_t addToHistory)"); apply_type(0x007659C0, "int32_t __stdcall func(EVENT_DATA_IDLE* data,void* param)"); apply_type(0x00765AF0, "int32_t __stdcall func(EVENT_DATA_KEY* data, void* param)"); diff --git a/profile/3.3.5a-windows-386/ida/batch/import_functions.idc b/profile/3.3.5a-windows-386/ida/batch/import_functions.idc index 7d66569..3cce1b9 100644 --- a/profile/3.3.5a-windows-386/ida/batch/import_functions.idc +++ b/profile/3.3.5a-windows-386/ida/batch/import_functions.idc @@ -3,6 +3,7 @@ static import_functions() { // Import function addresses and comments msg("Importing function addresses and comments"); + set_func_cmt(0x00401010, "void* operator new(size_t)", 0); set_func_cmt(0x00401030, "void operator delete(void*)", 0); set_func_cmt(0x00401070, "protected: int __thiscall CDataStore::FetchWrite(unsigned int,unsigned int,char const *,int)", 0); set_func_cmt(0x004010D0, "CDataStore::IsRead() const", 0); @@ -12,6 +13,7 @@ static import_functions() { set_func_cmt(0x004038A0, "CDataStore::~CDataStore()", 0); set_func_cmt(0x00405A10, "int __cdecl PatchFiles::EnumPatchArchives(OS_FILE_DATA *fileData, PatchOnDemand__Cache *cbParam)", 0); set_func_cmt(0x00405AB0, "int __thiscall PatchFiles::LoadArchives(PatchFiles *this, const char *localeCode, char a3)", 0); + set_func_cmt(0x004066D0, "00005400C", 0); set_func_cmt(0x00427130, "Blizzard::File::Delete(char const*)", 0); set_func_cmt(0x00427500, "Blizzard::File::MakeAbsolutePath(char const*, char*, int, bool)", 0); set_func_cmt(0x00427560, "Blizzard::File::Move(char const*, char const*)", 0); @@ -41,12 +43,38 @@ static import_functions() { set_func_cmt(0x0047B560, "CDataStore::GetArray(unsigned char*, unsigned int)", 0); set_func_cmt(0x0047B6B0, "CDataStore::GetDataInSitu(void*&, unsigned int)", 0); set_func_cmt(0x0047B800, "void __cdecl quicksort(unsigned int, unsigned int, int, int (__cdecl *)(unsigned int, unsigned int, int), int)", 0); + set_func_cmt(0x0047BD40, "int __cdecl sgetu8(_BYTE *, _DWORD *)", 0); set_func_cmt(0x0047F230, "IEvtSchedulerProcess as an independent function appears to be optimized out", 0); set_func_cmt(0x004A2780, "_CBackdropGenerator::LoadXML(linkObject*, CStatus*)", 0); set_func_cmt(0x004A81B0, "FrameScript_GetObjectThis(lua_State*, int)", 0); set_func_cmt(0x004DBFD0, "thanks namreeb :^)", 0); set_func_cmt(0x00532AF0, "public: class CGxCaps const & __thiscall CGxDevice::Caps(void)const", 0); set_func_cmt(0x005EEB70, "SErrDisplayAppFatal resolves to this in release mode?", 0); + set_func_cmt(0x00631D30, "00005400", 0); + set_func_cmt(0x00631E10, "NetClient::ConnectInternal(char const*, unsigned short)", 0); + set_func_cmt(0x00631EA0, "00005400", 0); + set_func_cmt(0x00631F70, "NetClient::SetLoginData(LoginData*)", 0); + set_func_cmt(0x00631FA0, "void __thiscall NetClient::SetMessageHandler(enum NETMESSAGE, int (__fastcall *)(void *, enum NETMESSAGE, unsigned long, class CDataStore *), void *)", 0); + set_func_cmt(0x00631FE0, "NetClient::ProcessMessage(unsigned long, CDataStore*, int)", 0); + set_func_cmt(0x00632060, "NetClient::WCConnected(WowConnection*, WowConnection*, unsigned long, NETCONNADDR const*)", 0); + set_func_cmt(0x006320D0, "void __thiscall NetClient::GetNetStats(float &, float &, unsigned long &)", 0); + set_func_cmt(0x006321A0, "00005400", 0); + set_func_cmt(0x006322A0, "00005400", 0); + set_func_cmt(0x00632390, "00005400", 0); + set_func_cmt(0x006323C0, "NetClient::Connect(char const*)", 0); + set_func_cmt(0x00632460, "NetClient::HandleData(unsigned long, void*, int)", 0); + set_func_cmt(0x00632510, "00005400", 0); + set_func_cmt(0x00632540, "00005400", 0); + set_func_cmt(0x006325C0, "void __thiscall NetClient::PongHandler(class CDataStore *)", 0); + set_func_cmt(0x006326D0, "NetClient::WCDisconnected(WowConnection*, unsigned long, NETCONNADDR const*)", 0); + set_func_cmt(0x00632730, "00005410", 0); + set_func_cmt(0x00632A40, "00005410", 0); + set_func_cmt(0x00632B50, "NetClient::Send(CDataStore*)", 0); + set_func_cmt(0x00632C10, "NetClient::WCCantConnect(WowConnection*, unsigned long, NETCONNADDR const*)", 0); + set_func_cmt(0x00632CD0, "NetClient::Ping(CONNECTION_ID)", 0); + set_func_cmt(0x00632DB0, "00005400", 0); + set_func_cmt(0x00632E00, "00005410", 0); + set_func_cmt(0x00633330, "NetClient::WCMessageReady(WowConnection*, unsigned long, CDataStore*)", 0); set_func_cmt(0x006337D0, "00005400", 0); set_func_cmt(0x00634C60, "00005400", 0); set_func_cmt(0x00634E00, "ClientDBInitialize()", 0); diff --git a/profile/3.3.5a-windows-386/ida/batch/import_symbols.idc b/profile/3.3.5a-windows-386/ida/batch/import_symbols.idc index f4ebf76..d6ace50 100644 --- a/profile/3.3.5a-windows-386/ida/batch/import_symbols.idc +++ b/profile/3.3.5a-windows-386/ida/batch/import_symbols.idc @@ -2,25 +2,34 @@ static import_symbols() { // Set/create names - set_name(0x00401010, "Blizzard__Memory__Allocate"); - set_name(0x00401030, "Blizzard__Memory__Free"); + set_name(0x00401010, "operator_new"); + set_name(0x00401030, "operator_delete"); set_name(0x00401050, "CDataStore__CDataStore"); set_name(0x00401070, "CDataStore__FetchWrite"); set_name(0x004010D0, "CDataStore__IsRead"); set_name(0x004010E0, "CDataStore__Reset"); set_name(0x00401130, "CDataStore__Finalize"); set_name(0x00401200, "PatchFiles__qsortpatchfiles"); + set_name(0x00401520, "MovementInit"); + set_name(0x00402670, "AsyncFileReadThreadSleepCallback"); + set_name(0x00402690, "AsyncFileReadHandlerTimeoutCallback"); set_name(0x00402B20, "SetPaths"); + set_name(0x00403200, "TimingMethodCallback"); set_name(0x004032A0, "CCommand_TimingInfo"); set_name(0x004033B0, "ClientKillTimer"); + set_name(0x004033C0, "ClientPostClose"); set_name(0x00403600, "StartupStreaming"); set_name(0x004038A0, "CDataStore__destructor"); + set_name(0x00404130, "WowClientInit"); set_name(0x004052F0, "WowClientDB_StartupStringsRec__Load"); set_name(0x00405A10, "PatchFiles__EnumPatchArchives"); set_name(0x00405AB0, "PatchFiles__LoadArchives"); + set_name(0x004066D0, "DestroyHandlerPlayer"); set_name(0x004067F0, "InitializeGlobal"); set_name(0x00406B70, "DestroyGlobal"); set_name(0x00406C70, "CommonMain"); + set_name(0x00407E30, "LoadingScreenSetTip"); + set_name(0x00407E40, "LoadingScreenSetScreenTipForRaceData"); set_name(0x00407F40, "C44Matrix__C44Matrix"); set_name(0x00407F80, "C44Matrix__operator_assign_C44Matrix"); set_name(0x00408030, "GxXformSetProjection"); @@ -30,6 +39,15 @@ static import_symbols() { set_name(0x00408240, "GxRsSet_CGxShader"); set_name(0x00408BF0, "GxRsSet_int32_t"); set_name(0x00409670, "CGxDevice__RsPush"); + set_name(0x0040AB70, "LoadingScreenEnable"); + set_name(0x0040B320, "WowSysMessageOutput__Shutdown"); + set_name(0x0040B390, "WowSysMessageOutput__Enable"); + set_name(0x0040B3C0, "WowSysMessageOutput__Disable"); + set_name(0x0040B3E0, "WowSysMessageOutput__Show"); + set_name(0x0040B400, "WowSysMessageOutput__Hide"); + set_name(0x0040B420, "WowSysMessageOutput__Output"); + set_name(0x0040B540, "WowSysMessageOutput__Paint"); + set_name(0x0040B710, "WowSysMessageOutput__Initialize"); set_name(0x0040BAA5, "purecall"); set_name(0x0040D3B5, "nullsub_1"); set_name(0x00421750, "SFile__DisableSFileCheckDisk"); @@ -50,6 +68,7 @@ static import_symbols() { set_name(0x00424B10, "SFile__FileExistsEx"); set_name(0x00424B50, "SFile__OpenEx"); set_name(0x00424E80, "SFile__Load"); + set_name(0x00424F50, "SFile__LoadFile"); set_name(0x00424F80, "SFile__Open"); set_name(0x004270D0, "Blizzard__Debug__ErrorStackAsText"); set_name(0x004270F0, "Blizzard__File__Close"); @@ -78,6 +97,7 @@ static import_symbols() { set_name(0x00427C70, "System_File__FromNativeAttributes"); set_name(0x00427CC0, "System_File__ReadP"); set_name(0x00427D10, "System_File__WriteP"); + set_name(0x00428010, "Blizzard__Streaming__IsStreamingMode"); set_name(0x004281D0, "Blizzard__File__IsDirectory"); set_name(0x004281F0, "Blizzard__File__IsFile"); set_name(0x00428210, "Blizzard__File__SimpleGlob"); @@ -193,6 +213,7 @@ static import_symbols() { set_name(0x0047B760, "j_nullsub_3"); set_name(0x0047B800, "quicksort"); set_name(0x0047B9E0, "ConvertUTF16toUTF8"); + set_name(0x0047BD40, "sgetu8"); set_name(0x0047BF30, "HandleClose"); set_name(0x0047BF50, "HandleCreate"); set_name(0x0047BF70, "HandleDuplicate"); @@ -223,6 +244,7 @@ static import_symbols() { set_name(0x0047D530, "EventSetTimer"); set_name(0x0047D620, "EventKillTimer"); set_name(0x0047D690, "EventSetMouseMode"); + set_name(0x0047D760, "EventPostClose"); set_name(0x0047D770, "EventRegister"); set_name(0x0047D790, "EventUnregister"); set_name(0x0047D990, "IEvtSchedulerShutdown"); @@ -275,8 +297,12 @@ static import_symbols() { set_name(0x004880E0, "CSimpleRegion__CSimpleRegion"); set_name(0x004881D0, "CSimpleRegion__destructor"); set_name(0x00488310, "CScriptRegion__CScriptRegion"); + set_name(0x004898B0, "CLayoutFrame__ResizePending"); + set_name(0x0048B5F0, "CScriptObject__GetScriptObjectByName"); set_name(0x0048D800, "CSimpleFontString_SetFormattedText"); set_name(0x0048EA10, "CSimpleFrame__SetFrameAlpha"); + set_name(0x0048F580, "CSimpleFrame__SetFrameScale"); + set_name(0x0048F5D0, "CSimpleFrame__SetFrameDepth"); set_name(0x00493BF0, "GxCapsWindowSizeInScreenCoords"); set_name(0x00494EE0, "CFrameStrata__BuildBatches"); set_name(0x00494F30, "CFrameStrata__RenderBatch"); @@ -288,18 +314,42 @@ static import_symbols() { set_name(0x004A2D40, "CBackdropGenerator__CBackdropGenerator"); set_name(0x004A2E00, "CBackdropGenerator__SetOutput"); set_name(0x004A81B0, "FrameScript_GetObjectThis"); + set_name(0x004A84A0, "ScrnSetScreenshotQuality"); set_name(0x004A8500, "ScrnLayerSetRect"); set_name(0x004A8720, "OnPaint"); set_name(0x004A8BB0, "ScrnLayerCreate"); set_name(0x004A8D10, "GxuFontShutdown"); + set_name(0x004A8DC0, "ScrnGetStockFont"); + set_name(0x004A8DE0, "ScrnGetStockFontHeight"); + set_name(0x004B4E50, "SysMsgEnable"); + set_name(0x004B4E60, "SysMsgSetMaxDisplayLevel"); + set_name(0x004B4E80, "SysMsgSetMinDisplayLevel"); + set_name(0x004B4EA0, "SysMsgGetMinDisplayLevel"); + set_name(0x004B4EB0, "SysMsgGetMaxDisplayLevel"); + set_name(0x004B4EC0, "SysMsgSetFilter"); + set_name(0x004B4ED0, "SysMsgGetFilter"); + set_name(0x004B4EE0, "SysMsgGetSeverityColor"); + set_name(0x004B4F30, "SysMsgInitialize"); + set_name(0x004B5390, "TextureEnableAtlas"); set_name(0x004B5510, "TextureCalcMipCount"); set_name(0x004B5550, "TextureGenerateMips"); + set_name(0x004B55E0, "TextureFreeMippedImg"); set_name(0x004B5A00, "LoadPredrawnMips"); + set_name(0x004B6580, "TextureSetCacheSize"); + set_name(0x004B6AE0, "TextureCacheUpdate"); set_name(0x004B7220, "TextureAllocMippedImg"); - set_name(0x004B7300, "TextureFreeMippedImg"); + set_name(0x004B7300, "TextureFreeMippedImg@2"); set_name(0x004B78A0, "LoadTgaMips"); + set_name(0x004B7F80, "TextureInitialize"); set_name(0x004B8070, "LoadBlpMips"); set_name(0x004B81D0, "TextureLoadImage"); + set_name(0x004B9910, "AsyncFileReadProgressCallback"); + set_name(0x004B9930, "AsyncFileReadIngameProgressCallback"); + set_name(0x004B9B20, "AsyncFileReadPollHandler"); + set_name(0x004B9C60, "AsyncFileReadAddPollHandler"); + set_name(0x004B9D20, "AsyncFileReadAddStatusHandler"); + set_name(0x004BAA40, "AsyncFileReadInitialize"); + set_name(0x004BAD80, "AsyncFileReadIsReading"); set_name(0x004BD9D0, "TextBlockGetFontPtr"); set_name(0x004BDAA0, "TextBlockCreate"); set_name(0x004BDBF0, "TextBlockSetStringPos"); @@ -333,12 +383,22 @@ static import_symbols() { set_name(0x004C3600, "C3Vector__Normalize_2"); set_name(0x004C4B80, "TSGrowableArray_C3Vector__SetCount"); set_name(0x004C51B0, "C33Matrix__operator_assign_C33Matrix"); + set_name(0x004C6390, "SE2__StopSound"); + set_name(0x004C6A40, "SE2__PlaySoundKit"); + set_name(0x004C8610, "SI2__SetWeatherKitID"); + set_name(0x004C93B0, "SI2__StopAllMusic"); + set_name(0x004D27D0, "HeapUsageDestroy"); + set_name(0x004D2A30, "HeapUsageInitialize"); + set_name(0x004D7D20, "CGlueMgr__InitializeFFX"); set_name(0x004D7DA0, "CGlueMgr__UpdateWaitQueue"); set_name(0x004D7F60, "CGlueMgr__SetCurrentAccount"); set_name(0x004D7F90, "CGlueMgr__LoginEnterPIN"); set_name(0x004D7FB0, "CGlueMgr__LoginEnterMatrix"); + set_name(0x004D7FF0, "CGlueMgr__LoginCommitMatrix"); set_name(0x004D8030, "CGlueMgr__LoginGetMatrixCoordinate"); + set_name(0x004D8080, "CGlueMgr__LoginEnterToken"); set_name(0x004D80C0, "CGlueMgr__DisplayLoginStatus"); + set_name(0x004D8200, "CGlueMgr__OnRealmSplitMsg"); set_name(0x004D82A0, "CGlueMgr__SetScreen"); set_name(0x004D82C0, "CGlueMgr__UpdateCurrentScreen"); set_name(0x004D8350, "CGlueMgr__QuitGame"); @@ -352,6 +412,8 @@ static import_symbols() { set_name(0x004D8C60, "CGlueMgr__CreateCharacter"); set_name(0x004D8CC0, "CGlueMgr__DeleteCharacter"); set_name(0x004D8D20, "CGlueMgr__RenameCharacter"); + set_name(0x004D9190, "CGlueMgr__OnCharCustomizeResult"); + set_name(0x004D92D0, "CGlueMgr__OnCharFactionChangeResult"); set_name(0x004D9500, "CGlueMgr__OnKickReasonMsg"); set_name(0x004D95C0, "CGlueMgr__GetCharacterList"); set_name(0x004D9610, "CGlueMgr__GetRealmList"); @@ -360,6 +422,8 @@ static import_symbols() { set_name(0x004D99E0, "CGlueMgr__CancelLogin"); set_name(0x004D9A40, "CGlueMgr__DeclineCharacter"); set_name(0x004D9BD0, "CGlueMgr__EnterWorld"); + set_name(0x004D9F50, "CGlueMgr__AddChangedOptionWarning"); + set_name(0x004DA090, "CGlueMgr__OnCharRenameResult"); set_name(0x004DA240, "CGlueMgr__AcceptChangedOptionWarnings"); set_name(0x004DA3D0, "CGlueMgr__LogConnectionStatus"); set_name(0x004DA4B0, "CGlueMgr__SetLoginStateAndResult"); @@ -372,14 +436,60 @@ static import_symbols() { set_name(0x004DCE40, "Script_IsWindowsClient"); set_name(0x004DD400, "Script_RestartGx"); set_name(0x004DD420, "Script_RestoreVideoStereoDefaults"); + set_name(0x004DD5B0, "GlueScriptEventsUnregisterFunctions"); set_name(0x004DD610, "Script_GetMovieResolution"); set_name(0x004DDC20, "Script_GetExpansionLevel"); + set_name(0x004DE4D0, "RealmListRegisterScriptFunctions"); + set_name(0x004DE500, "RealmListUnregisterScriptFunctions"); + set_name(0x004DF580, "CRealmList__Initialize"); + set_name(0x004DFD30, "CharacterCreateUnregisterScriptFunctions"); + set_name(0x004E2570, "CharSelectRegisterScriptFunctions"); + set_name(0x004E25A0, "CharSelectUnregisterScriptFunctions"); + set_name(0x004E47F0, "CCharacterSelection__ClearCharacterList"); set_name(0x004E4880, "CGlueMgr__SurveyDownloadFeed"); + set_name(0x004E48A0, "CGlueMgr__SurveySendResults"); + set_name(0x004E48E0, "CGlueMgr__SurveyDownloadStart"); set_name(0x004E4A40, "CGlueMgr__SurveyDownloadCancel"); + set_name(0x004E4B30, "CGlueMgr__SurveyExecute"); + set_name(0x004E51C0, "CGlueMgr__PatchDownloadFeed"); + set_name(0x004E51E0, "CGlueMgr__GetPatchFolder"); + set_name(0x004E5200, "CGlueMgr__PatchDownloadStart"); set_name(0x004E53A0, "CGlueMgr__PatchDownloadCancel"); set_name(0x004E5420, "CGlueMgr__PatchFailed"); set_name(0x004E54D0, "CGlueMgr__PatchDownloadIdle"); + set_name(0x004F5960, "CGWorldFrame__GetActiveCamera"); + set_name(0x004F5980, "CGWorldFrame__SendObjectTrackEvent"); + set_name(0x004F59F0, "CGWorldFrame__CursorTrackObject"); + set_name(0x004F5A90, "CGWorldFrame__OnFrameSizeChanged"); + set_name(0x004F5C10, "CGWorldFrame__OnLayerCursorExit"); + set_name(0x004F5D80, "CGWorldFrame__SetNamePlateUpdate"); + set_name(0x004F6680, "CGWorldFrame__GetCameraFacing"); + set_name(0x004F66C0, "CGWorldFrame__OnLayerTrackTerrain"); + set_name(0x004F6C10, "CGWorldFrame__OnLayerMouseDown"); + set_name(0x004F6D20, "CGWorldFrame__GetScreenCoordinates"); + set_name(0x004F6F50, "CGWorldFrame__SetCameraTarget"); + set_name(0x004F7020, "CGWorldFrame__SetScreenEffect"); set_name(0x004F71A0, "TSList__LinkNode"); + set_name(0x004F7530, "CGWorldFrame__IsLegalSelection"); + set_name(0x004F7650, "CGWorldFrame__GetHitTestFilterFlags"); + set_name(0x004F7880, "CGWorldFrame__PerformDefaultAction"); + set_name(0x004F7A50, "CGWorldFrame__CursorTrackUnit"); + set_name(0x004F8000, "CGWorldFrame__CursorTrackCorpse"); + set_name(0x004F8190, "CGWorldFrame__OnLayerTrackObject"); + set_name(0x004F88B0, "CGWorldFrame__UpdateScreenEffect"); + set_name(0x004F8EA0, "CGWorldFrame__OnWorldRender"); + set_name(0x004F9310, "CGWorldFrame__MoveToFreeList"); + set_name(0x004F9550, "CGWorldFrame__FindClosestModel"); + set_name(0x004F9930, "CGWorldFrame__HitTest"); + set_name(0x004F9DA0, "CGWorldFrame__HitTestPoint"); + set_name(0x004F9F70, "CGWorldFrame__ObjectEnumProc"); + set_name(0x004FA040, "CGWorldFrame__OnLayerUpdate"); + set_name(0x004FA570, "CGWorldFrame__SetupDefaultAction"); + set_name(0x004FA5D0, "CGWorldFrame__UnitClear"); + set_name(0x004FA5F0, "CGWorldFrame__OnWorldUpdate"); + set_name(0x004FABD0, "CGWorldFrame__CGWorldFrame_Ctor"); + set_name(0x004FAF90, "CGWorldFrame__RenderWorld"); + set_name(0x004FB080, "CGWorldFrame__OnFrameRender"); set_name(0x004FBD00, "Script_LoggingChat"); set_name(0x004FBD20, "Script_LoggingCombat"); set_name(0x004FBD40, "Script_GetActiveVoiceChannel"); @@ -468,6 +578,7 @@ static import_symbols() { set_name(0x0050DAE0, "Script_ListChannels"); set_name(0x0050DC10, "Script_SetSavedInstanceExtend"); set_name(0x0050ED00, "Script_ComplainChat"); + set_name(0x0050F7C0, "CGxDevice__CapsAspectRatio"); set_name(0x0050F830, "Script_FrameXML_Debug"); set_name(0x0050F890, "Script_GetBuildInfo"); set_name(0x0050F8F0, "Script_SetLayoutMode"); @@ -549,12 +660,14 @@ static import_symbols() { set_name(0x00512090, "Script_ConsoleAddMessage"); set_name(0x00512570, "CGGameUI__OpenGuildInvite"); set_name(0x00512A00, "CGGameUI__IsPartyMember"); + set_name(0x00512B50, "CGGameUI__UnitModelUpdate"); set_name(0x00512E20, "CGGameUI__HandleScreenshot"); set_name(0x00512E60, "CGGameUI__CloseInteraction"); set_name(0x005134C0, "CGGameUI__SetMinimapZoneText"); set_name(0x00513530, "CGGameUI__ShowBlockedActionFeedback"); set_name(0x00513640, "CGGameUI__ShowBlockedFrameFeedback"); set_name(0x00513660, "CGGameUI__GetCursorItem"); + set_name(0x00513680, "CGGameUI__GetCursorItem@2"); set_name(0x005136C0, "CGGameUI__GetCursorSpell"); set_name(0x005136D0, "CGGameUI__GetCursorVirtualItem"); set_name(0x005136E0, "CGGameUI__GetCursorVirtualItem@2"); @@ -732,12 +845,14 @@ static import_symbols() { set_name(0x0051D5A0, "Script_GetAllowLowLevelRaid"); set_name(0x0051D600, "Script_SetAllowLowLevelRaid"); set_name(0x0051D7C0, "CGGameUI__StopCinematicInternal"); + set_name(0x0051F5C0, "CGGameUI__UpdateCorpseDistance"); set_name(0x0051F790, "CGGameUI__HandleObjectTrackChange"); set_name(0x0051FA50, "CGGameUI__FilterMouseDown"); set_name(0x0051FB00, "CGGameUI__HandleMouseDown"); set_name(0x0051FB60, "CGGameUI__HandleSpriteTrack"); set_name(0x0051FB80, "CGGameUI__HandleDisplaySizeChanged"); set_name(0x0051FCE0, "CGGameUI__SetInteractTarget"); + set_name(0x0051FDE0, "CGGameUI__UpdateInteractTarget"); set_name(0x0051FF20, "CGGameUI__SetFocusTarget"); set_name(0x00520410, "CGGameUI__CanInspect"); set_name(0x005204C0, "CGGameUI__NewZoneFeedback"); @@ -747,6 +862,7 @@ static import_symbols() { set_name(0x00520C60, "CGGameUI__SetCursorPet"); set_name(0x00520D30, "CGGameUI__SetCursorVirtualItem"); set_name(0x00520DC0, "CGGameUI__SetCursorEquipmentSet"); + set_name(0x00521040, "CGGameUI__RegisterFrameFactories"); set_name(0x005216F0, "CGGameUI__DisplayError"); set_name(0x005220B0, "CGGameUI__AutoMouseOver"); set_name(0x005222E0, "Script_ReloadUI"); @@ -777,6 +893,8 @@ static import_symbols() { set_name(0x005233D0, "Script_EndBoundTradeable"); set_name(0x00523640, "CGGameUI__CloseLoot"); set_name(0x00523E80, "CGGameUI__GetCorpseLocation"); + set_name(0x00523EB0, "CGGameUI__SetAreaSpiritHealer"); + set_name(0x00524010, "CGGameUI__UpdateAreaSpiritHealerDistance"); set_name(0x005240E0, "CGGameUI__HandleDisplaySizeChanged@2"); set_name(0x005241B0, "CGGameUI__ClearTarget"); set_name(0x00524350, "CGGameUI__BreakTarget"); @@ -784,6 +902,7 @@ static import_symbols() { set_name(0x00524B60, "CGGameUI__AcceptAreaSpiritHeal"); set_name(0x00524BF0, "CGGameUI__Target"); set_name(0x00524FC0, "CGGameUI__TargetNearestUnit"); + set_name(0x005252D0, "CGGameUI__TargetDirection"); set_name(0x00525A30, "Script_TargetUnit"); set_name(0x00525A90, "Script_TargetNearest"); set_name(0x00525AD0, "Script_TargetNearestEnemy"); @@ -806,14 +925,17 @@ static import_symbols() { set_name(0x00526370, "CGGameUI__StartCinematicCamera"); set_name(0x00527360, "CGGameUI__OnTerrainClick"); set_name(0x00527830, "CGGameUI__HandleTerrainClick"); + set_name(0x005278C0, "CGGameUI__HandleWorldClick"); set_name(0x00527F00, "Script_InteractUnit"); set_name(0x00528010, "CGGameUI__EnterWorld"); set_name(0x00528920, "Script_LoadAddOn"); + set_name(0x00528AF0, "CGGameUI__StartCinematic"); set_name(0x00528C30, "CGGameUI__LeaveWorld"); set_name(0x00528F00, "CGGameUI__Shutdown"); set_name(0x00529160, "CGGameUI__ShutdownGame"); set_name(0x0052A980, "CGGameUI__Initialize"); set_name(0x0052AED0, "CGGameUI__RegisterSavedVariable"); + set_name(0x0052AF40, "CGGameUI__Idle"); set_name(0x0052B470, "Script_RegisterForSave"); set_name(0x0052B4E0, "Script_RegisterForSavePerCharacter"); set_name(0x0052B550, "CGGameUI__InitializeGame"); @@ -825,6 +947,7 @@ static import_symbols() { set_name(0x0052C2D0, "Script_GetOptOutOfLoot"); set_name(0x0052C310, "Script_IsPartyLFG"); set_name(0x0052C350, "Script_HasLFGRestrictions"); + set_name(0x0052CC30, "CGPartyInfo__CheckClearLFGSlot"); set_name(0x0052CCD0, "Script_IsPartyLeader"); set_name(0x0052CD30, "Script_IsRealPartyLeader"); set_name(0x0052CD90, "Script_GetLootMethod"); @@ -843,6 +966,7 @@ static import_symbols() { set_name(0x0052E850, "Script_GetBarberShopStyleInfo"); set_name(0x0052E9B0, "Script_GetHairCustomization"); set_name(0x0052E9D0, "Script_GetFacialHairCustomization"); + set_name(0x0052E9F0, "CGBarberShop__DisableBarberShop"); set_name(0x0052ED60, "Script_GetBarberShopTotalCost"); set_name(0x0052ED80, "Script_CancelBarberShop"); set_name(0x0052EEF0, "Script_ApplyBarberShopStyle"); @@ -1052,6 +1176,8 @@ static import_symbols() { set_name(0x0054EB10, "Script_GetTerrainMip"); set_name(0x0054EB40, "Script_SetTerrainMip"); set_name(0x0054EBC0, "Script_IsPlayerResolutionAvailable"); + set_name(0x0054EC00, "CGVideoOptions__RegisterScriptFunctions"); + set_name(0x0054EC30, "CGVideoOptions__UnregisterScriptFunction"); set_name(0x0054ED80, "Script_SetupFullscreenScale"); set_name(0x0054EE60, "Script_GetVideoCaps"); set_name(0x0054EF90, "Script_IsStereoVideoAvailable"); @@ -1063,6 +1189,8 @@ static import_symbols() { set_name(0x0054F820, "Script_GetMultisampleFormats"); set_name(0x0054F8B0, "Script_GetCurrentMultisampleFormat"); set_name(0x0054F980, "Script_SetMultisampleFormat"); + set_name(0x00550080, "AccountMsg_RegisterScriptFunctions"); + set_name(0x005500B0, "AccountMsg_UnregisterScriptFunctions"); set_name(0x00551720, "Script_KBSetup_BeginLoading"); set_name(0x00551760, "Script_KBSetup_IsLoaded"); set_name(0x00551790, "Script_KBSetup_GetLanguageCount"); @@ -2101,6 +2229,7 @@ static import_symbols() { set_name(0x005EAC90, "Script_RequestInspectHonorData"); set_name(0x005EACA0, "Script_GetWeaponEnchantInfo"); set_name(0x005EAE90, "Script_HasWandEquipped"); + set_name(0x005ED080, "DisableFadingScreen"); set_name(0x005EEB70, "nullsub_3"); set_name(0x005F9550, "Script_VehicleAimGetNormPower"); set_name(0x005F9DD0, "Script_IsMouselooking"); @@ -2172,6 +2301,8 @@ static import_symbols() { set_name(0x00604C80, "Script_ResetView"); set_name(0x00604CE0, "Script_NextView"); set_name(0x00604D10, "Script_PrevView"); + set_name(0x006066E0, "CGCamera__SetTarget"); + set_name(0x00607BD0, "CSimpleCamera__SetFacing"); set_name(0x006081F0, "Script_GetTime"); set_name(0x00608230, "Script_GetGameTime"); set_name(0x00608270, "Script_ConsoleExec"); @@ -2180,6 +2311,8 @@ static import_symbols() { set_name(0x00608580, "Script_CanSwitchVehicleSeat"); set_name(0x00608690, "Script_GetItemStats"); set_name(0x00608760, "Script_GetItemStatDelta"); + set_name(0x0060A120, "SystemRegisterFunctions"); + set_name(0x0060A150, "SystemUnregisterFunctions"); set_name(0x0060A450, "Script_IsLoggedIn"); set_name(0x0060A490, "Script_GetPlayerFacing"); set_name(0x0060A510, "Script_FillLocalizedClassList"); @@ -2348,7 +2481,32 @@ static import_symbols() { set_name(0x00616800, "CursorSetMode"); set_name(0x00616AD0, "GxXformPush_EGxXform_C44Matrix"); set_name(0x00616CA0, "TSGrowableArray_CImVector__SetCount"); + set_name(0x00631D30, "NetClient__Initialize"); + set_name(0x00631E10, "NetClient__ConnectInternal"); + set_name(0x00631EA0, "NetClient__Disconnect"); + set_name(0x00631F70, "NetClient__SetLoginData"); + set_name(0x00631FA0, "NetClient__SetMessageHandler"); + set_name(0x00631FE0, "NetClient__ProcessMessage"); set_name(0x00632050, "nullsub_4"); + set_name(0x00632060, "NetClient__WCConnected"); + set_name(0x006320D0, "NetClient__GetNetStats"); + set_name(0x006321A0, "NetClient__PollEventQueue"); + set_name(0x006322A0, "NetClient__Destroy"); + set_name(0x00632390, "NetClient__DelayedDelete"); + set_name(0x006323C0, "NetClient__Connect"); + set_name(0x00632460, "NetClient__HandleData"); + set_name(0x00632510, "NetClient__HandleConnect"); + set_name(0x00632540, "NetClient__HandleDisconnect"); + set_name(0x006325C0, "NetClient__PongHandler"); + set_name(0x006326D0, "NetClient__WCDisconnected"); + set_name(0x00632730, "NetClient__AuthChallengeHandler"); + set_name(0x00632A40, "NetClient__NetClient"); + set_name(0x00632B50, "NetClient__Send"); + set_name(0x00632C10, "NetClient__WCCantConnect"); + set_name(0x00632CD0, "NetClient__Ping"); + set_name(0x00632DB0, "NetClient__HandleIdle"); + set_name(0x00632E00, "NetClient__RedirectHandler"); + set_name(0x00633330, "NetClient__WCMessageReady"); set_name(0x006337D0, "StaticDBLoadAll"); set_name(0x00634C60, "ClientDBShutdown"); set_name(0x00634E00, "ClientDBInitialize"); @@ -2484,6 +2642,7 @@ static import_symbols() { set_name(0x00689E80, "CGxMonitorModeSort"); set_name(0x00689EA0, "CGxDevice__FindDisplayDevice"); set_name(0x00689EF0, "CGxDevice__NewD3d"); + set_name(0x00689F20, "CGxDevice__AdapterDesktopMode"); set_name(0x0068A090, "TSGrowableArray_CGxMonitorMode__New"); set_name(0x0068A0F0, "TSGrowableArray_CGxMonitorMode__SetCount"); set_name(0x0068A4C0, "CGxDevice__AdapterMonitorModes"); @@ -2622,9 +2781,22 @@ static import_symbols() { set_name(0x006AFCE0, "CBLPFile__Lock2"); set_name(0x006AFF10, "CBLPFile__Open"); set_name(0x006AFFD0, "CBLPFile__LockChain2"); + set_name(0x006B0190, "ClientServices__LoadCDKey"); + set_name(0x006B0850, "ClientConnection__Cleanup"); + set_name(0x006B0940, "ClientServices__Disconnect"); set_name(0x006B0960, "nullsub_154"); set_name(0x006B0970, "ClientServices__Connection"); set_name(0x006B0990, "ClientServices__LoginConnection"); + set_name(0x006B09A0, "ClientServices__EnterPIN"); + set_name(0x006B09E0, "ClientServices__EnterMatrix"); + set_name(0x006B0A40, "ClientServices__CommitMatrix"); + set_name(0x006B0A70, "ClientServices__FinalizeMatrix"); + set_name(0x006B0AA0, "ClientServices__EnterToken"); + set_name(0x006B0AD0, "ClientServices__FileAccept"); + set_name(0x006B0B00, "ClientServices__StartDownload"); + set_name(0x006B0B10, "ClientServices__SendSurveyData"); + set_name(0x006B0B30, "ClientServices__SendSurveyFailed"); + set_name(0x006B0B40, "ClientServices__GetSurveyId"); set_name(0x006B0B50, "ClientServices__SendOnConnection"); set_name(0x006B0B80, "ClientServices__SetMessageHandler"); set_name(0x006B0BC0, "ClientServices_ClearMessageHandler"); @@ -2632,12 +2804,39 @@ static import_symbols() { set_name(0x006B0DC0, "ClientServices__GetSelectedRealmName"); set_name(0x006B0E10, "ClientServices__GetRealmList"); set_name(0x006B0ED0, "ClientServices__GetSelectedRealm"); + set_name(0x006B0EE0, "ClientServices__FileData"); + set_name(0x006B0F30, "ClientServices__LaunchURL"); set_name(0x006B0F40, "ClientServices__GetErrorToken"); set_name(0x006B0F60, "ClientServices__ValidDisconnect"); + set_name(0x006B0F90, "ClientServices__CharacterValidateName"); + set_name(0x006B0FC0, "ClientServices__CharacterValidateDeclension"); + set_name(0x006B0FE0, "ClientServices__SetAccountName"); + set_name(0x006B1010, "ClientServices__GetAccountName"); + set_name(0x006B1020, "ClientServices__SetCharacterInfo"); + set_name(0x006B1050, "ClientServices__GetCharacterInfo"); + set_name(0x006B1060, "ClientServices__GetCharacterName"); + set_name(0x006B1070, "ClientServices__GetCharacterRace"); + set_name(0x006B1080, "ClientServices__GetCharacterClass"); + set_name(0x006B1090, "ClientServices__GetCharacterSex"); + set_name(0x006B10A0, "ClientServices__GetCharacterLevel"); + set_name(0x006B1100, "ClientServices__PollStatus"); + set_name(0x006B1200, "ClientConnection__Cancel"); + set_name(0x006B1620, "ClientServices__RequestCharacterCreate"); + set_name(0x006B1840, "ClientServices__CharacterSetInGame"); + set_name(0x006B1930, "ClientServices__CharacterLogout"); + set_name(0x006B1A70, "ClientServices__RequestCharacterDelete"); set_name(0x006B1B80, "nullsub_151"); set_name(0x006B1B90, "nullsub_6"); set_name(0x006B1BA0, "nullsub_155"); + set_name(0x006B1C70, "ClientServices__GetClientStamp"); + set_name(0x006B1E00, "ClientServices__LoginServerStatus"); + set_name(0x006B21F0, "ClientServices__CharacterForceLogout"); + set_name(0x006B2200, "ClientServices__Initialize"); set_name(0x006B22A0, "ClientServices__Report"); + set_name(0x006B2CF0, "ClientServices__SetSelectedRealmInfo"); + set_name(0x006B2DF0, "ClientServices__SelectRealm"); + set_name(0x006B2EB0, "ClientServices__GetRealmInfoByIndex"); + set_name(0x006B3070, "ClientServices__JoinRealmResult"); set_name(0x006B33D0, "Script_GetNumWhoResults"); set_name(0x006B3430, "Script_SetWhoToUI"); set_name(0x006B4060, "Script_GetNumFriends"); @@ -2669,6 +2868,7 @@ static import_symbols() { set_name(0x006B7C90, "Script_SetFriendNotes"); set_name(0x006B7D70, "Script_DelIgnore"); set_name(0x006B7DA0, "Script_DelMute"); + set_name(0x006B9900, "AccountDataInitializeBasicSystem"); set_name(0x006BCE10, "GxuFontAddToBatch"); set_name(0x006BCE40, "GxuFontRenderBatch"); set_name(0x006BCE60, "GxuFontGetTextExtent"); @@ -2692,6 +2892,11 @@ static import_symbols() { set_name(0x006BFE00, "GxuXformCreateProjection_SG"); set_name(0x006BFE60, "GxuXformCreateLookAtSgCompat"); set_name(0x006C8CC0, "IGxuFontGlyphRenderGlyph"); + set_name(0x006F0C30, "MovementDestroy"); + set_name(0x006FA3C0, "CEffect__Destroy"); + set_name(0x006FAFD0, "CloseAllLootRolls"); + set_name(0x006FBF00, "CGUnit_C__StopMissileTrajectoryTargeting"); + set_name(0x00703770, "CMissile__ClearInFlightMissiles"); set_name(0x00743550, "nullsub_152"); set_name(0x00743560, "nullsub_153"); set_name(0x0074D580, "Script_CombatTextSetActiveUnit"); @@ -2718,6 +2923,8 @@ static import_symbols() { set_name(0x00763B40, "CONSOLELINE__Up"); set_name(0x00763B90, "CONSOLELINE__Down"); set_name(0x00763BE0, "OnKeyUp"); + set_name(0x00763C20, "GetConsoleMessage"); + set_name(0x00763C30, "SetConsoleMessage"); set_name(0x00763C50, "ConsolePostClose"); set_name(0x00763D60, "EventCloseCallback"); set_name(0x00763DF0, "DrawBackground"); @@ -2733,7 +2940,8 @@ static import_symbols() { set_name(0x00764A10, "OnMouseDown"); set_name(0x00764B90, "OnKeyDownRepeat"); set_name(0x00765270, "ConsoleWrite"); - set_name(0x007653B0, "ConsoleWriteA"); + set_name(0x00765360, "ConsoleWriteA"); + set_name(0x007653B0, "ConsolePrintf"); set_name(0x007658A0, "ConsoleCommandExecute"); set_name(0x007659C0, "OnIdle"); set_name(0x00765AF0, "OnKeyDown"); @@ -2795,12 +3003,14 @@ static import_symbols() { set_name(0x0076A580, "CVGxRefreshCallback"); set_name(0x0076A630, "RegisterGxCVars"); set_name(0x0076AB80, "ConsoleDeviceInitialize"); - set_name(0x0076B3F0, "SetDefaults"); + set_name(0x0076B3F0, "ConsoleDetectSetDefaults"); set_name(0x0076B520, "ConsoleDetectSetDefaultsFormat"); set_name(0x0076B540, "SetVideoIdx"); set_name(0x0076B5A0, "PrintStartupError"); set_name(0x0076B620, "ConsoleDetectSaveHardware"); set_name(0x0076BA30, "ConsoleDetectDetectHardware"); + set_name(0x0076DD20, "NameNeedsDeclensions"); + set_name(0x0076E270, "RussianNameNeedsDeclensions"); set_name(0x0076E4A0, "SMemSetDebugFlags"); set_name(0x0076E540, "SMemAlloc"); set_name(0x0076E5A0, "SMemFree"); @@ -2847,6 +3057,7 @@ static import_symbols() { set_name(0x00773890, "SCmdProcess"); set_name(0x00773990, "SCmdProcessCommandLine"); set_name(0x007739E0, "StormInitialize"); + set_name(0x00773A00, "StormDestroy"); set_name(0x00773A80, "StormSetOption"); set_name(0x00774620, "SCritSect__SCritSect"); set_name(0x00774630, "SCritSect__destructor"); @@ -2866,6 +3077,8 @@ static import_symbols() { set_name(0x00777590, "SRgnGetBoundingRectf"); set_name(0x00777940, "SRgnDelete"); set_name(0x00777980, "SRgnCreate"); + set_name(0x00779340, "MD5Init"); + set_name(0x00779AE0, "MD5Final"); set_name(0x0077AC80, "TSFixedArray_uint32_t_Set"); set_name(0x0077ACF0, "BigBuffer__operator_index"); set_name(0x0077AD10, "Compare"); @@ -2901,6 +3114,7 @@ static import_symbols() { set_name(0x0077C700, "SBigMul"); set_name(0x0077C720, "PowMod"); set_name(0x0077C980, "SBigPowMod"); + set_name(0x0077EC90, "World__SetLoadProgressCallback"); set_name(0x007DAB80, "Script_VoiceEnumerateOutputDevices"); set_name(0x007DAC40, "Script_VoiceEnumerateCaptureDevices"); set_name(0x007DACF0, "Script_VoiceSelectOutputDevice"); @@ -2916,6 +3130,8 @@ static import_symbols() { set_name(0x007DC910, "Script_VoiceIsDisabledByClient"); set_name(0x007DEEF0, "Script_GetVoiceSessionMemberInfoBySessionID"); set_name(0x007DF0B0, "Script_UnitIsTalking"); + set_name(0x007E1030, "IsRussian"); + set_name(0x007FC9F0, "SpellVisualsClear"); set_name(0x007FDCD0, "Script_SpellIsTargeting"); set_name(0x007FDD10, "Script_SpellCanTargetItem"); set_name(0x007FDD60, "Script_SpellCanTargetGlyph"); @@ -2924,28 +3140,45 @@ static import_symbols() { set_name(0x00802270, "Script_CannotBeResurrected"); set_name(0x00804190, "Script_SpellCanTargetUnit"); set_name(0x00804220, "Script_CancelUnitBuff"); + set_name(0x00809A60, "Spell_C_StopTargeting"); set_name(0x00809E30, "Script_SpellStopTargeting"); set_name(0x00809EA0, "Script_SpellStopCasting"); set_name(0x0080DC00, "Script_SpellTargetUnit"); + set_name(0x00812530, "FrameXML_LoadXML"); + set_name(0x00812840, "FrameXML_RegisterLoadProgressCallback"); + set_name(0x00812FA0, "FrameXML_CreateFrame"); + set_name(0x00813D20, "FrameXML_RegisterFactory"); + set_name(0x00813DF0, "FrameXML_RegisterDefault"); + set_name(0x00813EE0, "FrameXML_ProcessFile"); + set_name(0x00814340, "FrameXML_CreateFrames"); + set_name(0x008165E0, "FrameXML_CheckSignature"); set_name(0x00816790, "FrameScript_Object__CreateScriptMetaTable"); set_name(0x008167E0, "FrameScript_Object__FillScriptMethodTable"); set_name(0x00818070, "FrameScript_Sprintf"); set_name(0x00819830, "FrameScript_Object__FrameScript_Object"); set_name(0x00819850, "FrameScript_Object__destructor"); set_name(0x008199C0, "FrameScript_Object__UnregisterScriptObject"); + set_name(0x00819BB0, "FrameScript_Initialize"); set_name(0x00819EA0, "FrameScript_Execute"); set_name(0x0081A2C0, "FrameScript_Object__RunScript"); + set_name(0x0081A9A0, "FrameScript_Destroy"); set_name(0x0081AA00, "FrameScript_SignalEvent"); + set_name(0x0081AC70, "FrameScript_Flush"); set_name(0x0081AC90, "vFrameScript_SignalEvent"); set_name(0x0081B530, "FrameScript_SignalEvent@2"); set_name(0x0081B5F0, "FrameScript_CreateEvents"); set_name(0x0081B720, "Script_GetText"); set_name(0x0081B7B0, "Script_CreateFont"); set_name(0x0081B820, "Script_GetCurrentKeyBoardFocus"); + set_name(0x0081B870, "RegisterSimpleFrameScriptMethods"); + set_name(0x0081B920, "UnregisterSimpleFrameScriptMethods"); set_name(0x0081B9C0, "Script_EnumerateFrames"); set_name(0x0081BAB0, "Script_GetNumFrames"); set_name(0x0081BB20, "Script_CreateFrame"); set_name(0x0081BE70, "Script_GetFramesRegisteredForEvent"); + set_name(0x0081C0B0, "M2GetCacheFlags"); + set_name(0x0081C0C0, "M2SetCacheFlags"); + set_name(0x0081C6E0, "M2Initialize"); set_name(0x0084DBD0, "_lua_gettop"); set_name(0x0084DBF0, "_lua_settop"); set_name(0x0084DCC0, "_lua_insert"); @@ -2970,12 +3203,14 @@ static import_symbols() { set_name(0x00857CA0, "_luaV_execute"); set_name(0x008695B0, "RestoreMouse"); set_name(0x00869620, "OsInputSetWindowResizeLock"); + set_name(0x00869630, "OsInputGetMouseSpeed"); set_name(0x00869720, "OsInputInitialize"); set_name(0x00869760, "OsInputDestroy"); set_name(0x00869D90, "OsInputSetEventPollProc"); set_name(0x00869DB0, "CenterMouse"); set_name(0x00869E00, "OsInputGet"); set_name(0x0086A020, "OsInputSetMouseMode"); + set_name(0x0086A070, "OsInputSetMouseSpeed"); set_name(0x0086A0D0, "OsInputGetMousePosition"); set_name(0x0086A130, "OsInputSetMousePosition"); set_name(0x0086A1A0, "OsGetDefaultWindowRect"); @@ -3001,6 +3236,7 @@ static import_symbols() { set_name(0x0086B480, "OsGetComputerName"); set_name(0x0086B4A0, "OsGetUserName"); set_name(0x0086B4C0, "OsGetPhysicalMemory"); + set_name(0x0086B4F0, "OsSystemInitialize"); set_name(0x0086B600, "IOsParseProcessorFrequency"); set_name(0x0086B710, "IOsGetPowerProfFrequency"); set_name(0x0086B780, "OsIsRemoteSession"); @@ -3019,6 +3255,7 @@ static import_symbols() { set_name(0x0086D0C0, "OsIMEDestroy"); set_name(0x0086D430, "OsTimeStartup"); set_name(0x0086D440, "OsTimeShutdown"); + set_name(0x0086D6D0, "OsTlsGetValue"); set_name(0x0086E200, "TSExplicitList_CGxBuf__LinkToTail"); set_name(0x0086F5A0, "OsCallSetContext"); set_name(0x0086F760, "OsCallInitialize"); @@ -3029,6 +3266,7 @@ static import_symbols() { set_name(0x008727E0, "IOsClipboardPutString"); set_name(0x00872C10, "CShaderEffect__UpdateProjMatrix"); set_name(0x008A1420, "stub_return_one_byte"); + set_name(0x008C0360, "FFX__Destroy"); set_name(0x008C8DE0, "GxDefaultApi"); set_name(0x008E5250, "stub_return_zero4"); set_name(0x00936900, "stub_return_xor_eax"); @@ -3105,7 +3343,12 @@ static import_symbols() { set_name(0x00985E30, "Script_VoiceChat_IsPlayingLoopbackSound"); set_name(0x00985E60, "Script_VoiceChat_GetCurrentMicrophoneSignalLevel"); set_name(0x00985E90, "Script_VoiceChat_ActivatePrimaryCaptureCallback"); + set_name(0x00985EA0, "SI2__RegisterScriptFunctions"); + set_name(0x00985ED0, "SI2__UnregisterScriptFunctions"); set_name(0x00985EF0, "Script_VoiceChat_StartCapture"); + set_name(0x00985F70, "SI2__StopGlueAmbience"); + set_name(0x009860E0, "SI2__StopGlueMusic"); + set_name(0x00986D00, "SI2__PlayVocalErrorSound"); set_name(0x009AD000, "DayNight__DNGlare__Initialize"); set_name(0x009D34B0, "nullsub_7"); set_name(0x009D34C0, "nullsub_8"); @@ -3269,6 +3512,7 @@ static import_symbols() { set_name(0x00AB91C0, "System_File__Stacked__s_nullstack"); set_name(0x00AB92C0, "System_File__Stacked__s_basestack"); set_name(0x00AC1B9C, "s_zorderlist"); + set_name(0x00AC3DA4, "ClientServices__m_loginState"); set_name(0x00AC80A8, "CGGameUI__m_visible"); set_name(0x00AD2808, "s_cursorNames"); set_name(0x00AD305C, "g_achievementDB"); @@ -3540,14 +3784,26 @@ static import_symbols() { set_name(0x00B417C8, "s_mainThread"); set_name(0x00B417D0, "s_interactiveCount"); set_name(0x00B41850, "s_messageRecycler"); + set_name(0x00B6A180, "CGlueMgr__m_ffxActive"); + set_name(0x00B6A184, "CGlueMgr__m_deathEffect"); + set_name(0x00B6A188, "CGlueMgr__m_glowEffect"); + set_name(0x00B6A190, "CGlueMgr__m_serverAlert"); set_name(0x00B6A994, "CGlueMgr__m_patchLastUpdate"); set_name(0x00B6A99C, "CGlueMgr__m_queueTime"); set_name(0x00B6A9BC, "CGlueMgr__m_queuePosition"); set_name(0x00B6A9DC, "CGlueMgr__m_cursorMipBits"); + set_name(0x00B6AA20, "CGlueMgr__m_simpleTop"); + set_name(0x00B6AA24, "CGlueMgr__m_reload"); set_name(0x00B6AA2C, "CGlueMgr__m_suspended"); set_name(0x00B6AA38, "CGlueMgr__m_indleState"); + set_name(0x00B6AF40, "ClientServices__m_matrixRemaining"); set_name(0x00B6AF44, "CGlueMgr__m_estimatedWaitTime"); set_name(0x00B6AF4C, "CGlueMgr__m_characterInfo"); + set_name(0x00B6AF7C, "CGlueMgr__m_screenWidgth"); + set_name(0x00B6AF80, "CGlueMgr__m_screenHeight"); + set_name(0x00B6AF84, "CGlueMgr__m_aspect"); + set_name(0x00B6AF88, "CGlueMgr__m_pendingServerAlert"); + set_name(0x00B6AF8C, "CGlueMgr__m_processServerAlert"); set_name(0x00B6AF9C, "CGlueMgr__m_numChangedOptionWarnings"); set_name(0x00B6AFA0, "CGlueMgr__m_showedDisconnect"); set_name(0x00B6B250, "CGlueMgr__m_surveyDownload"); @@ -3559,17 +3815,21 @@ static import_symbols() { set_name(0x00BD0750, "CGGameUI__m_cursorVirtualSlot"); set_name(0x00BD0754, "CGGameUI__m_cursorVirtualDisplay"); set_name(0x00BD0758, "CGGameUI__m_cursorVirtualID"); + set_name(0x00BD0760, "CGGameUI__m_cursorItemContainer"); + set_name(0x00BD0768, "CGGameUI__m_cursorItem"); set_name(0x00BD0770, "CGGameUI__m_stackSplit"); set_name(0x00BD0778, "CGGameUI__m_UISimpleParent"); set_name(0x00BD077C, "CGGameUI__m_minimapZoneText"); set_name(0x00BD0784, "CGGameUI__m_subZoneText"); set_name(0x00BD0788, "CGGameUI__m_zoneText"); set_name(0x00BD078C, "CGGameUI__m_simpleTop"); + set_name(0x00BD0790, "CGGameUI__m_currentlyReloadingUI"); set_name(0x00BD0791, "CGGameUI__m_reloadUIRequested"); set_name(0x00BD0792, "CGGameUI__m_inWorld"); set_name(0x00BD0798, "CGGameUI__m_interactMaxDistSq"); set_name(0x00BD079C, "CGGameUI__m_cursorMoney"); set_name(0x00BD07A0, "CGGameUI__m_currentObjectTrack"); + set_name(0x00BD07AC, "CGGameUI__m_interactTarget"); set_name(0x00BD07B8, "CGGameUI__m_lastTarget"); set_name(0x00BD07C0, "CGGameUI__m_lastEnemyTarget"); set_name(0x00BD07C8, "CGGameUI__m_lastFriendTraget"); @@ -3611,6 +3871,11 @@ static import_symbols() { set_name(0x00C5FFF8, "CGxDevice__m_log"); set_name(0x00C5FFFC, "CGxDevice__s_uiPixelShader"); set_name(0x00C60760, "isIdent"); + set_name(0x00C79CE4, "ClientServices__m_instance"); + set_name(0x00C79CE9, "ClientServices__m_selectRealmInfoValid"); + set_name(0x00C79CEC, "ClientServices__s_loginObj"); + set_name(0x00C79CF4, "ClientServices__m_currentConnection"); + set_name(0x00C79D10, "ClientServices__s_characterInfo"); set_name(0x00CA1690, "s_caretpixheight"); set_name(0x00CA1694, "s_caret"); set_name(0x00CA1698, "s_copyText"); diff --git a/profile/3.3.5a-windows-386/symbol/account/func.sym b/profile/3.3.5a-windows-386/symbol/account/func.sym index a32eb9f..20b9464 100644 --- a/profile/3.3.5a-windows-386/symbol/account/func.sym +++ b/profile/3.3.5a-windows-386/symbol/account/func.sym @@ -1,3 +1,3 @@ AccountMsg_RegisterScriptFunctions 00550080 f end=005500A3 AccountMsg_UnregisterScriptFunctions 005500B0 f end=005500CC -AccountDataInitializeBasicSystem 006B9900 f end=006B996D \ No newline at end of file +AccountDataInitializeBasicSystem 006B9900 f end=006B996D diff --git a/profile/3.3.5a-windows-386/symbol/actionbar/func.sym b/profile/3.3.5a-windows-386/symbol/actionbar/func.sym index d44735b..86a0556 100644 --- a/profile/3.3.5a-windows-386/symbol/actionbar/func.sym +++ b/profile/3.3.5a-windows-386/symbol/actionbar/func.sym @@ -26,4 +26,4 @@ CGActionBar__RemoveEquipmentSet 005AAE20 f end=005AAE71 CGActionBar__SetAction 005AAE80 f end=005AAFCB CGActionBar__PutActionInSlot 005AB120 f end=005AB7F4 CGActionBar__UseAction 005ABBC0 f end=005ABE63 -CGActionBar__PickupAction 005ABE70 f end=005ABFF6 \ No newline at end of file +CGActionBar__PickupAction 005ABE70 f end=005ABFF6 diff --git a/profile/3.3.5a-windows-386/symbol/actionbar/label.sym b/profile/3.3.5a-windows-386/symbol/actionbar/label.sym index 6e8406a..120bf16 100644 --- a/profile/3.3.5a-windows-386/symbol/actionbar/label.sym +++ b/profile/3.3.5a-windows-386/symbol/actionbar/label.sym @@ -1,7 +1,7 @@ -CGActionBar__m_slotUseCount 00C1E118 l type="uint32_t[144]" -CGActionBar__m_slotUsable 00C1DED8 l type="uint32_t[144]" CGActionBar__m_slotNoMana 00C1DC98 l type="uint32_t[144]" +CGActionBar__m_slotUsable 00C1DED8 l type="uint32_t[144]" +CGActionBar__m_slotUseCount 00C1E118 l type="uint32_t[144]" CGActionBar__m_slotActions 00C1E358 l type="uint32_t[144]" CGActionBar__m_currentPage 00C1E598 l CGActionBar__m_bonusBarOffset 00C1E59C l -CGActionBar__m_tempPageActiveFlags 00C1E5A0 l \ No newline at end of file +CGActionBar__m_tempPageActiveFlags 00C1E5A0 l diff --git a/profile/3.3.5a-windows-386/symbol/asyncfile/func.sym b/profile/3.3.5a-windows-386/symbol/asyncfile/func.sym index abc876f..16f3fe8 100644 --- a/profile/3.3.5a-windows-386/symbol/asyncfile/func.sym +++ b/profile/3.3.5a-windows-386/symbol/asyncfile/func.sym @@ -1,9 +1,9 @@ +AsyncFileReadThreadSleepCallback 00402670 f end=00402684 +AsyncFileReadHandlerTimeoutCallback 00402690 f end=004026A9 AsyncFileReadProgressCallback 004B9910 f end=004B9926 AsyncFileReadIngameProgressCallback 004B9930 f end=004B9946 +AsyncFileReadPollHandler 004B9B20 f end=004B9BF6 AsyncFileReadAddPollHandler 004B9C60 f end=004B9D15 AsyncFileReadAddStatusHandler 004B9D20 f end=004B9DD5 AsyncFileReadInitialize 004BAA40 f end=004BAB45 -AsyncFileReadThreadSleepCallback 00402670 f end=00402684 -AsyncFileReadHandlerTimeoutCallback 00402690 f end=004026A9 -AsyncFileReadPollHandler 004B9B20 f end=004B9BF6 -AsyncFileReadIsReading 004BAD80 f end=004BAE09 \ No newline at end of file +AsyncFileReadIsReading 004BAD80 f end=004BAE09 diff --git a/profile/3.3.5a-windows-386/symbol/barbershop/func.sym b/profile/3.3.5a-windows-386/symbol/barbershop/func.sym index 5bf2054..af0fcc0 100644 --- a/profile/3.3.5a-windows-386/symbol/barbershop/func.sym +++ b/profile/3.3.5a-windows-386/symbol/barbershop/func.sym @@ -1 +1 @@ -CGBarberShop__DisableBarberShop 0052E9F0 f end=0052EB91 \ No newline at end of file +CGBarberShop__DisableBarberShop 0052E9F0 f end=0052EB91 diff --git a/profile/3.3.5a-windows-386/symbol/bc/func.sym b/profile/3.3.5a-windows-386/symbol/bc/func.sym index 4e312b8..ccac0a9 100644 --- a/profile/3.3.5a-windows-386/symbol/bc/func.sym +++ b/profile/3.3.5a-windows-386/symbol/bc/func.sym @@ -1,5 +1,5 @@ -Blizzard__Memory__Allocate 00401010 f end=00401067 type="void* __stdcall func(uint32_t count)" -Blizzard__Memory__Free 00401030 f end=0040104B type="void __stdcall func(void* ptr)" ; void operator delete(void*) +operator_new 00401010 f end=00401067 type="void* __stdcall func(uint32_t count)" ; void* operator new(size_t) +operator_delete 00401030 f end=0040104B type="void __stdcall func(void* ptr)" ; void operator delete(void*) Blizzard__Debug__ErrorStackAsText 004270D0 f end=004270E6 Blizzard__File__Close 004270F0 f end=0042712F Blizzard__File__Delete 00427130 f end=0042716F ; Blizzard::File::Delete(char const*) @@ -27,6 +27,7 @@ System_File__ToNativeAttributes 00427C20 f end=00427C68 System_File__FromNativeAttributes 00427C70 f end=00427CBC System_File__ReadP 00427CC0 f type="int32_t __stdcall func(Blizzard__File__Filesystem* fs, System_File__Stacked__FileParms* parms)" System_File__WriteP 00427D10 f end=00427D5C type="int32_t __stdcall func(Blizzard__File__Filesystem* fs, System_File__Stacked__FileParms* parms)" +Blizzard__Streaming__IsStreamingMode 00428010 f end=0042802B Blizzard__File__IsDirectory 004281D0 f end=004281EB Blizzard__File__IsFile 004281F0 f end=0042820B Blizzard__File__SimpleGlob 00428210 f end=004282F2 type="bool __stdcall func(char* name, char* pattern)" @@ -114,4 +115,3 @@ OsCreateFileMode 00461EF0 f end=00461F68 type="Blizzard__File__Mode __stdcall fu OsFileGetDownloadFolder 00461F70 f end=00461F91 type="char* __stdcall func()" OsCreateFile 00461FA0 f end=00461FFA type="HOSFILE __stdcall func(char* fileName, uint32_t desiredAccess, uint32_t shareMode, uint32_t createDisposition, uint32_t flagsAndAttributes, uint32_t extendedFileType)" OsFileList 00462000 f end=0046209C -Blizzard__Streaming__IsStreamingMode 00428010 f end=0042802B \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/camera/func.sym b/profile/3.3.5a-windows-386/symbol/camera/func.sym index 0f3dd5e..054320c 100644 --- a/profile/3.3.5a-windows-386/symbol/camera/func.sym +++ b/profile/3.3.5a-windows-386/symbol/camera/func.sym @@ -3,5 +3,3 @@ CameraSetupScreenProjection 004BEE60 f end=004BF0B9 CameraSetupWorldProjection 004BF0C0 f end=004BF0E2 CCamera__CCamera 004BF770 f end=004BFA4E CameraCreate 004BFCA0 f end=004BFCD4 -CGCamera__SetTarget 006066E0 f end=00606967 -CSimpleCamera__SetFacing 00607BD0 f end=00607BF6 \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/character/func.sym b/profile/3.3.5a-windows-386/symbol/character/func.sym index 56180e2..6a9c74a 100644 --- a/profile/3.3.5a-windows-386/symbol/character/func.sym +++ b/profile/3.3.5a-windows-386/symbol/character/func.sym @@ -1,3 +1,3 @@ CharacterCreateUnregisterScriptFunctions 004DFD30 f end=004DFD4F CharSelectRegisterScriptFunctions 004E2570 f end=004E2593 -CharSelectUnregisterScriptFunctions 004E25A0 f end=004E25BC \ No newline at end of file +CharSelectUnregisterScriptFunctions 004E25A0 f end=004E25BC diff --git a/profile/3.3.5a-windows-386/symbol/characterselection/func.sym b/profile/3.3.5a-windows-386/symbol/characterselection/func.sym index ea31f35..7eb4e97 100644 --- a/profile/3.3.5a-windows-386/symbol/characterselection/func.sym +++ b/profile/3.3.5a-windows-386/symbol/characterselection/func.sym @@ -1 +1 @@ -CCharacterSelection__ClearCharacterList 004E47F0 f end=004E4877 \ No newline at end of file +CCharacterSelection__ClearCharacterList 004E47F0 f end=004E4877 diff --git a/profile/3.3.5a-windows-386/symbol/client/func.sym b/profile/3.3.5a-windows-386/symbol/client/func.sym index 0b9661d..aefcce5 100644 --- a/profile/3.3.5a-windows-386/symbol/client/func.sym +++ b/profile/3.3.5a-windows-386/symbol/client/func.sym @@ -1,20 +1,21 @@ PatchFiles__qsortpatchfiles 00401200 f ; int __cdecl PatchFiles::qsortpatchfiles(char **, char **) SetPaths 00402B20 f end=00402B8B +TimingMethodCallback 00403200 f end=00403294 CCommand_TimingInfo 004032A0 f end=004032FF ClientKillTimer 004033B0 f end=004033B9 +ClientPostClose 004033C0 f end=004033D1 StartupStreaming 00403600 f end=004036A4 type="void __stdcall func(char* manifest@)" +WowClientInit 00404130 f end=004042BC PatchFiles__EnumPatchArchives 00405A10 f ; int __cdecl PatchFiles::EnumPatchArchives(OS_FILE_DATA *fileData, PatchOnDemand__Cache *cbParam) PatchFiles__LoadArchives 00405AB0 f ; int __thiscall PatchFiles::LoadArchives(PatchFiles *this, const char *localeCode, char a3) +DestroyHandlerPlayer 004066D0 f end=0040673F ; 00005400C InitializeGlobal 004067F0 f end=00406B67 DestroyGlobal 00406B70 f end=00406C65 CommonMain 00406C70 f end=00406D64 quicksort 0047B800 f ; void __cdecl quicksort(unsigned int, unsigned int, int, int (__cdecl *)(unsigned int, unsigned int, int), int) ConvertPosition 0047FC90 f end=0047FDD4 -TimingMethodCallback 00403200 f end=00403294 -WowClientInit 00404130 f end=004042BC -DestroyHandlerPlayer 004066D0 f end=0040673F ; 00005400ClientPostClose 004033C0 f end=0047D769 NameNeedsDeclensions 0076DD20 f end=0076DD3B RussianNameNeedsDeclensions 0076E270 f end=0076E2A6 MD5Init 00779340 f end=0077936B MD5Final 00779AE0 f end=00779B97 -IsRussian 007E1030 f end=007E1049 \ No newline at end of file +IsRussian 007E1030 f end=007E1049 diff --git a/profile/3.3.5a-windows-386/symbol/client/label.sym b/profile/3.3.5a-windows-386/symbol/client/label.sym index 8f8205c..317a6a4 100644 --- a/profile/3.3.5a-windows-386/symbol/client/label.sym +++ b/profile/3.3.5a-windows-386/symbol/client/label.sym @@ -1,2 +1,2 @@ +g_clientEventContext 00B2F994 l type="HEVENTCONTEXT" _CURRENT_LANGUAGE 00C5DE9C l type="int32_t" -g_clientEventContext 00B2F994 l type="HEVENTCONTEXT" \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/clientconnection/func.sym b/profile/3.3.5a-windows-386/symbol/clientconnection/func.sym index e806da4..e33ab83 100644 --- a/profile/3.3.5a-windows-386/symbol/clientconnection/func.sym +++ b/profile/3.3.5a-windows-386/symbol/clientconnection/func.sym @@ -1,2 +1,2 @@ ClientConnection__Cleanup 006B0850 f end=006B086B -ClientConnection__Cancel 006B1200 f end=006B1252 \ No newline at end of file +ClientConnection__Cancel 006B1200 f end=006B1252 diff --git a/profile/3.3.5a-windows-386/symbol/clientservices/func.sym b/profile/3.3.5a-windows-386/symbol/clientservices/func.sym index 8cd7195..89a3fb3 100644 --- a/profile/3.3.5a-windows-386/symbol/clientservices/func.sym +++ b/profile/3.3.5a-windows-386/symbol/clientservices/func.sym @@ -1,17 +1,7 @@ -ClientServices__Connection 006B0970 f end=006B098A -ClientServices__LoginConnection 006B0990 f end=006B0996 -ClientServices__SendOnConnection 006B0B50 f end=006B0B79 -ClientServices__SetMessageHandler 006B0B80 f end=006B0BB5 -ClientServices_ClearMessageHandler 006B0BC0 f end=006B0BE9 -ClientServices__InitLoginServerCVars 006B0BF0 f end=006B0DB7 -ClientServices__GetSelectedRealmName 006B0DC0 f end=006B0DF0 -ClientServices__GetRealmList 006B0E10 f end=006B0EC2 -ClientServices__GetSelectedRealm 006B0ED0 f end=006B0EDF -ClientServices__GetErrorToken 006B0F40 f end=006B0F5E -ClientServices__ValidDisconnect 006B0F60 f end=006B0F8F -ClientServices__Report 006B22A0 f end=006B2A36 ClientServices__LoadCDKey 006B0190 f end=006B0246 ClientServices__Disconnect 006B0940 f end=006B095E +ClientServices__Connection 006B0970 f end=006B098A +ClientServices__LoginConnection 006B0990 f end=006B0996 ClientServices__EnterPIN 006B09A0 f end=006B09D3 ClientServices__EnterMatrix 006B09E0 f end=006B0A0F ClientServices__CommitMatrix 006B0A40 f end=006B0A66 @@ -22,8 +12,19 @@ ClientServices__StartDownload 006B0B00 f end=006B0B08 ClientServices__SendSurveyData 006B0B10 f end=006B0B2A ClientServices__SendSurveyFailed 006B0B30 f end=006B0B3D ClientServices__GetSurveyId 006B0B40 f end=006B0B4D +ClientServices__SendOnConnection 006B0B50 f end=006B0B79 +ClientServices__SetMessageHandler 006B0B80 f end=006B0BB5 +ClientServices_ClearMessageHandler 006B0BC0 f end=006B0BE9 +ClientServices__InitLoginServerCVars 006B0BF0 f end=006B0DB7 +ClientServices__GetSelectedRealmName 006B0DC0 f end=006B0DF0 +ClientServices__GetRealmList 006B0E10 f end=006B0EC2 +ClientServices__GetSelectedRealm 006B0ED0 f end=006B0EDF ClientServices__FileData 006B0EE0 f end=006B0EF7 ClientServices__LaunchURL 006B0F30 f end=006B0F39 +ClientServices__GetErrorToken 006B0F40 f end=006B0F5E +ClientServices__ValidDisconnect 006B0F60 f end=006B0F8F +ClientServices__CharacterValidateName 006B0F90 f end=006B0FB5 +ClientServices__CharacterValidateDeclension 006B0FC0 f end=006B0FDF ClientServices__SetAccountName 006B0FE0 f end=006B100E ClientServices__GetAccountName 006B1010 f end=006B101F ClientServices__SetCharacterInfo 006B1020 f end=006B104E @@ -39,12 +40,11 @@ ClientServices__CharacterSetInGame 006B1840 f end=006B18B8 ClientServices__CharacterLogout 006B1930 f end=006B1A02 ClientServices__RequestCharacterDelete 006B1A70 f end=006B1B62 ClientServices__GetClientStamp 006B1C70 f end=006B1DFE +ClientServices__LoginServerStatus 006B1E00 f end=006B1EE9 +ClientServices__CharacterForceLogout 006B21F0 f end=006B21FA ClientServices__Initialize 006B2200 f end=006B22A0 +ClientServices__Report 006B22A0 f end=006B2A36 ClientServices__SetSelectedRealmInfo 006B2CF0 f end=006B2DED ClientServices__SelectRealm 006B2DF0 f end=006B2E2C ClientServices__GetRealmInfoByIndex 006B2EB0 f end=006B2F12 ClientServices__JoinRealmResult 006B3070 f end=006B318F -ClientServices__CharacterValidateName 006B0F90 f end=006B0FB5 -ClientServices__CharacterValidateDeclension 006B0FC0 f end=006B0FDF -ClientServices__CharacterForceLogout 006B21F0 f end=006B21FA -ClientServices__LoginServerStatus 006B1E00 f end=006B1EE9 \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/clientservices/label.sym b/profile/3.3.5a-windows-386/symbol/clientservices/label.sym index 270b850..e79fbe6 100644 --- a/profile/3.3.5a-windows-386/symbol/clientservices/label.sym +++ b/profile/3.3.5a-windows-386/symbol/clientservices/label.sym @@ -4,4 +4,4 @@ ClientServices__m_instance 00C79CE4 l ClientServices__m_selectRealmInfoValid 00C79CE9 l ClientServices__s_loginObj 00C79CEC l ClientServices__m_currentConnection 00C79CF4 l -ClientServices__s_characterInfo 00C79D10 l \ No newline at end of file +ClientServices__s_characterInfo 00C79D10 l diff --git a/profile/3.3.5a-windows-386/symbol/cmdline/func.sym b/profile/3.3.5a-windows-386/symbol/cmdline/func.sym index 0e88052..001bf85 100644 --- a/profile/3.3.5a-windows-386/symbol/cmdline/func.sym +++ b/profile/3.3.5a-windows-386/symbol/cmdline/func.sym @@ -1,3 +1,3 @@ CmdLineGetBool 0047B6F0 f end=0047B6FE type="int32_t __stdcall func(CMDOPT)" CmdLineGetString 0047B700 f end=0047B71D type="char* __stdcall func(CMDOPT)" -CmdLineProcess 0047B720 f end=0047B736 type="int32_t __stdcall func()" \ No newline at end of file +CmdLineProcess 0047B720 f end=0047B736 type="int32_t __stdcall func()" diff --git a/profile/3.3.5a-windows-386/symbol/cmdline/label.sym b/profile/3.3.5a-windows-386/symbol/cmdline/label.sym index 248ce1e..cc1d473 100644 --- a/profile/3.3.5a-windows-386/symbol/cmdline/label.sym +++ b/profile/3.3.5a-windows-386/symbol/cmdline/label.sym @@ -1 +1 @@ -s_wowArgList 009E1BE0 l type="ARGLIST[17]" \ No newline at end of file +s_wowArgList 009E1BE0 l type="ARGLIST[17]" diff --git a/profile/3.3.5a-windows-386/symbol/console/func.sym b/profile/3.3.5a-windows-386/symbol/console/func.sym index d6e4cdd..758424d 100644 --- a/profile/3.3.5a-windows-386/symbol/console/func.sym +++ b/profile/3.3.5a-windows-386/symbol/console/func.sym @@ -12,6 +12,8 @@ CONSOLELINE__Delete 00763B10 f end=00763B40 type="void __thiscall func(CONSOLELI CONSOLELINE__Up 00763B40 f end=00763B83 type="void __thiscall func(CONSOLELINE* this)" ; static void CONSOLELINE::Up() CONSOLELINE__Down 00763B90 f end=00763BD6 type="void __thiscall func(CONSOLELINE* this)" ; static void CONSOLELINE::Down() OnKeyUp 00763BE0 f end=00763C0A type="int32_t __stdcall func(EVENT_DATA_KEY* data, void* param)" +GetConsoleMessage 00763C20 f end=00763C26 +SetConsoleMessage 00763C30 f end=00763C3D ConsolePostClose 00763C50 f end=00763C5D type="void __stdcall func()" EventCloseCallback 00763D60 f end=00763D71 type="int32_t __stdcall func(void* param)" DrawBackground 00763DF0 f end=00764039 type="void __stdcall func()" @@ -27,7 +29,8 @@ OnChar 00764990 f end=00764A03 type="int32_t __stdcall func(EVENT_DATA_CHAR* dat OnMouseDown 00764A10 f end=00764B88 type="int32_t __stdcall func(EVENT_DATA_MOUSE* data, void* param)" OnKeyDownRepeat 00764B90 f end=00764E4F type="int32_t __stdcall func(EVENT_DATA_KEY* data, void* param)" ConsoleWrite 00765270 f end=00765359 type="void __stdcall func(char* str, COLOR_T color)" -ConsoleWriteA 007653B0 f end=00765400 type="void __stdcall func(char* str, COLOR_T color, ...)" +ConsoleWriteA 00765360 f end=007653AD type="void __stdcall func(char* format, COLOR_T color, ...)" +ConsolePrintf 007653B0 f end=00765400 type="void __stdcall func(char* str,...)" ConsoleCommandExecute 007658A0 f end=007659BF type="void __stdcall func(char* commandLine, int32_t addToHistory)" OnIdle 007659C0 f end=00765AE5 type="int32_t __stdcall func(EVENT_DATA_IDLE* data,void* param)" OnKeyDown 00765AF0 f end=00765FB2 type="int32_t __stdcall func(EVENT_DATA_KEY* data, void* param)" @@ -38,14 +41,14 @@ CVar__Load 00766400 f end=0076652C type="int32_t __stdcall func(HOSFILE file)" CVar__Load 00766530 f end=007665C2 type="int32_t __stdcall func(char* filename)" CVar__SaveCvar 00766640 f end=007666A1 type="bool __stdcall func(char* name, char* value, void* param)" CVar__LogCvar 007666B0 f end=007666F9 ; CVar::LogCvar(char const*, char const*, void*) -CVar__InternalSet 007667B0 f end=00766855 ; CVar::InternalSet(char const*, bool, bool, bool, bool) +CVar__InternalSet 007667B0 f end=00766855 ; CVar::InternalSet(char const*, bool, bool, bool, bool) CVar__Set 007668C0 f end=00766936 type="bool __thiscall func(CVar* this, char* value, bool setValue, bool setReset, bool setDefault, bool a6)" CVar__Reset 00766990 f end=00766A14 ; public: void __thiscall CVar::Reset(void) CVar__Default 00766A20 f end=00766AA4 type="bool __thiscall func(CVar* this)" ; public: bool __thiscall CVar::Default(void) CVar__Update 00766AB0 f end=00766B1F type="bool __thiscall func(CVar* this)" ; CVar::Update() CVar__IterateForArchive 00767030 f end=007670DA type="int32_t __stdcall func(uint32_t a1, uint32_t a2, void* callback, void* param)" ; CVar::IterateForArchive(unsigned int, unsigned int, int (*)(char const*, char const*, void*), void*) CVarSaveFile 00767100 f end=0076719C type="void __stdcall func()" -CVar__LogAll 007671A0 f end=007671CF ; CVar::LogAll(char*, unsigned long, unsigned int, unsigned int) +CVar__LogAll 007671A0 f end=007671CF ; CVar::LogAll(char*, unsigned long, unsigned int, unsigned int) CvarListCommandHandler 00767220 f end=0076734A ; 00005410 CVar__DeleteAccountCVars 007673A0 f end=007673E4 ; 00005400 CVar__Destroy 007673F0 f end=00767434 type="void __stdcall func()" @@ -68,12 +71,10 @@ ValidateFormatMonitor 00769E10 f end=00769FF0 CCGxRestart 00769FF0 f end=0076A12E RegisterGxCVars 0076A630 f end=0076AAA8 ConsoleDeviceInitialize 0076AB80 f end=0076B287 type="int32_t __stdcall func(char* title, int32_t multithreaded)" -SetDefaults 0076B3F0 f type="void __stdcall func(DefaultSettings* defaults, Hardware* hardware)" ; void SetDefaults(DefaultSettings&, const Hardware&) +ConsoleDetectSetDefaults 0076B3F0 f type="void __stdcall func(DefaultSettings* defaults, Hardware* hardware)" ; void SetDefaults(DefaultSettings&, const Hardware&) ConsoleDetectSetDefaultsFormat 0076B520 f end=0076B53D type="void __stdcall func(DefaultSettings* defaults, Hardware* hardware)" ; ConsoleDetectSetDefaultsFormat(DefaultSettings&, const Hardware&) SetVideoIdx 0076B540 f end=0076B594 type="void __stdcall func(Hardware* hardware@)" PrintStartupError 0076B5A0 f end=0076B616 type="void __usercall __noreturn func(int32_t messageID, const char* fallbackMessage)" ConsoleDetectSaveHardware 0076B620 f end=0076B7DB ConsoleDetectDetectHardware 0076BA30 f end=0076BBE9 type="void __stdcall func(Hardware* hardware, bool* hwChanged)" ; ConsoleDetectDetectHardware(Hardware&, bool&) ConsoleCommandHistoryDepth 0095BFB0 f end=0095BFB6 type="int32_t __stdcall func()" -GetConsoleMessage 00763C20 f end=00763C26 -SetConsoleMessage 00763C30 f end=00763C3D \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/coordinate/func.sym b/profile/3.3.5a-windows-386/symbol/coordinate/func.sym index 8ea29a1..47adae6 100644 --- a/profile/3.3.5a-windows-386/symbol/coordinate/func.sym +++ b/profile/3.3.5a-windows-386/symbol/coordinate/func.sym @@ -1,9 +1,9 @@ +CoordinateSetAspectRatio 0047BF90 f end=0047BFC8 +CoordinateGetAspectRatio 0047BFD0 f end=0047BFD7 +CoordinateGetAspectCompensation 0047BFE0 f end=0047BFE7 +NDCToDDC 0047BFF0 f end=0047C019 +DDCToNDC 0047C020 f end=0047C049 DDCToNDCWidth 0047C050 f end=0047C05E DDCToNDCHeight 0047C060 f end=0047C06E NDCToDDCWidth 0047C070 f end=0047C07E NDCToDDCHeight 0047C080 f end=0047C08E -NDCToDDC 0047BFF0 f end=0047C019 -DDCToNDC 0047C020 f end=0047C049 -CoordinateSetAspectRatio 0047BF90 f end=0047BFC8 -CoordinateGetAspectRatio 0047BFD0 f end=0047BFD7 -CoordinateGetAspectCompensation 0047BFE0 f end=0047BFE7 \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/cursor/func.sym b/profile/3.3.5a-windows-386/symbol/cursor/func.sym index c1d8bf7..af88129 100644 --- a/profile/3.3.5a-windows-386/symbol/cursor/func.sym +++ b/profile/3.3.5a-windows-386/symbol/cursor/func.sym @@ -1,4 +1,4 @@ -CursorInitialize 006163B0 f end=006164A5 CopyCursorImage 006160B0 f end=00616211 type="int32_t __usercall func@(uint32_t** image@, MipBits* mipImages@, uint32_t width@, uint32_t height)" UpdateCursor 006162C0 f end=006163AD +CursorInitialize 006163B0 f end=006164A5 CursorSetMode 00616800 f end=0061682E type="void __stdcall func(CURSORMODE mode)" diff --git a/profile/3.3.5a-windows-386/symbol/cursor/label.sym b/profile/3.3.5a-windows-386/symbol/cursor/label.sym index a9c2bb4..61b4173 100644 --- a/profile/3.3.5a-windows-386/symbol/cursor/label.sym +++ b/profile/3.3.5a-windows-386/symbol/cursor/label.sym @@ -7,4 +7,4 @@ s_cursorItemType 00C25DE0 l s_cursorResetMode 00C25DE4 l s_cursorItem 00C25DE8 l type="uint32_t[1024]" s_cursorMode 00C26DE8 l type="CURSORMODE" -s_cursorImages 00C26DF0 l type="uint32_t[53][1024]" \ No newline at end of file +s_cursorImages 00C26DF0 l type="uint32_t[53][1024]" diff --git a/profile/3.3.5a-windows-386/symbol/dataallocator/func.sym b/profile/3.3.5a-windows-386/symbol/dataallocator/func.sym index 8aad0de..7ceab80 100644 --- a/profile/3.3.5a-windows-386/symbol/dataallocator/func.sym +++ b/profile/3.3.5a-windows-386/symbol/dataallocator/func.sym @@ -1,2 +1,2 @@ CDataAllocator__GetData 0095D110 f ; CDataAllocator::GetData(int, char const*, int) -CDataAllocator__PutData 0095D1B0 f ; CDataAllocator::PutData(void*, char const*, int) \ No newline at end of file +CDataAllocator__PutData 0095D1B0 f ; CDataAllocator::PutData(void*, char const*, int) diff --git a/profile/3.3.5a-windows-386/symbol/datarecycler/func.sym b/profile/3.3.5a-windows-386/symbol/datarecycler/func.sym index 52f5338..d209f2b 100644 --- a/profile/3.3.5a-windows-386/symbol/datarecycler/func.sym +++ b/profile/3.3.5a-windows-386/symbol/datarecycler/func.sym @@ -1,3 +1,3 @@ CDataRecycler__Clear 0095CEC0 f end=0095CF39 +CDataRecycler__GetData 0095CF40 f end=0095CFAE CDataRecycler__PutData 0095CFB0 f end=0095D077 -CDataRecycler__GetData 0095CF40 f end=0095CFAE \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/datastore/func.sym b/profile/3.3.5a-windows-386/symbol/datastore/func.sym index a2c1754..cf8be4e 100644 --- a/profile/3.3.5a-windows-386/symbol/datastore/func.sym +++ b/profile/3.3.5a-windows-386/symbol/datastore/func.sym @@ -24,4 +24,4 @@ CDataStore__Get_uint64_t 0047B400 f end=0047B43A ; CDataStore::Get(unsigned long CDataStore__Get_float 0047B440 f end=0047B471 ; CDataStore::Get(float&) CDataStore__GetString 0047B480 f end=0047B560 ; CDataStore::GetString(char*, unsigned int) CDataStore__GetArray 0047B560 f end=0047B5ED ; CDataStore::GetArray(unsigned char*, unsigned int) -CDataStore__GetDataInSitu 0047B6B0 f end=0047B6E9 ; CDataStore::GetDataInSitu(void*&, unsigned int) \ No newline at end of file +CDataStore__GetDataInSitu 0047B6B0 f end=0047B6E9 ; CDataStore::GetDataInSitu(void*&, unsigned int) diff --git a/profile/3.3.5a-windows-386/symbol/datastore/label.sym b/profile/3.3.5a-windows-386/symbol/datastore/label.sym index 342f2f3..8cd5273 100644 --- a/profile/3.3.5a-windows-386/symbol/datastore/label.sym +++ b/profile/3.3.5a-windows-386/symbol/datastore/label.sym @@ -1 +1 @@ -CDataStore__v_table 009E0E24 l type="CDataStore__v_table" \ No newline at end of file +CDataStore__v_table 009E0E24 l type="CDataStore__v_table" diff --git a/profile/3.3.5a-windows-386/symbol/daynight/func.sym b/profile/3.3.5a-windows-386/symbol/daynight/func.sym index 4a30c8f..73ef056 100644 --- a/profile/3.3.5a-windows-386/symbol/daynight/func.sym +++ b/profile/3.3.5a-windows-386/symbol/daynight/func.sym @@ -1 +1 @@ -DayNight__DNGlare__Initialize 009AD000 f end=009AD0A3 type="void __thiscall func(DayNight__DNGlare* this, char* a1)" \ No newline at end of file +DayNight__DNGlare__Initialize 009AD000 f end=009AD0A3 type="void __thiscall func(DayNight__DNGlare* this, char* a1)" diff --git a/profile/3.3.5a-windows-386/symbol/db/func.sym b/profile/3.3.5a-windows-386/symbol/db/func.sym index 1d9032a..99d81cd 100644 --- a/profile/3.3.5a-windows-386/symbol/db/func.sym +++ b/profile/3.3.5a-windows-386/symbol/db/func.sym @@ -1,3 +1,4 @@ +WowClientDB_StartupStringsRec__Load 004052F0 f end=0040553D StaticDBLoadAll 006337D0 f end=0063478E ; 00005400 ClientDBShutdown 00634C60 f end=00634CBB ; 00005400 ClientDBInitialize 00634E00 f end=00634E62 ; ClientDBInitialize() @@ -10,4 +11,3 @@ WowClientDB_Cfg_CategoriesRec__LoadRecords 00659910 f end=00659A03 ; WowClientDB WowClientDB_CharBaseInfoRec__LoadRecords 00659B80 f end=00659C82 ; WowClientDB::LoadRecords(SFile*, char const*, int) WowClientDB__GetRecord 0065C290 f end=0065C2B4 ; 00005410 WowClientDB_AchievementRec__GetRecordByIndex 0065F520 f end=0065F55B ; WowClientDB::GetRecordByIndex(int, void*) -WowClientDB_StartupStringsRec__Load 004052f0 f end=0040553D \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/db/label.sym b/profile/3.3.5a-windows-386/symbol/db/label.sym index a775e1b..f295671 100644 --- a/profile/3.3.5a-windows-386/symbol/db/label.sym +++ b/profile/3.3.5a-windows-386/symbol/db/label.sym @@ -1,3 +1,4 @@ +g_startup_StringsDB 00AB6350 l type="WowClientDB_Startup_StringsRec" g_achievementDB 00AD305C l type="WowClientDB_AchievementRec" ; 0xEB g_achievement_CriteriaDB 00AD3080 l type="WowClientDB_Achievement_CriteriaRec" ; 0xEC g_achievement_CategoryDB 00AD30A4 l type="WowClientDB_Achievement_CategoryRec" ; 0xED @@ -28,8 +29,8 @@ g_chrClassesDB 00AD3404 l type="WowClientDB_ChrClassesRec" ; 0x105 g_chrRacesDB 00AD3428 l type="WowClientDB_ChrRacesRec" ; 0x106 g_cinematicCameraDB 00AD344C l type="WowClientDB_CinematicCameraRec" ; 0x107 g_cinematicSequencesDB 00AD3470 l type="WowClientDB_CinematicSequencesRec" ; 0x108 -g_creatureDisplayInfoDB 00AD34B8 l type="WowClientDB_CreatureDisplayInfoRec" ; 0x109 g_creatureDisplayInfoExtraDB 00AD3494 l type="WowClientDB_CreatureDisplayInfoExtraRec" ; 0x10A +g_creatureDisplayInfoDB 00AD34B8 l type="WowClientDB_CreatureDisplayInfoRec" ; 0x109 g_creatureFamilyDB 00AD34DC l type="WowClientDB_CreatureFamilyRec" ; 0x10B g_creatureModelDataDB 00AD3500 l type="WowClientDB_CreatureModelDataRec" ; 0x10C g_creatureMovementInfoDB 00AD3524 l type="WowClientDB_CreatureMovementInfoRec" ; 0x10D @@ -47,13 +48,13 @@ g_dungeonMapChunkDB 00AD36F8 l type="WowClientDB_DungeonMapChunkRec" ; 0x118 g_durabilityCostsDB 00AD371C l type="WowClientDB_DurabilityCostsRec" ; 0x119 g_durabilityQualityDB 00AD3740 l type="WowClientDB_DurabilityQualityRec" ; 0x11A g_emotesDB 00AD3764 l type="WowClientDB_EmotesRec" ; 0x11B -g_emotesTextDB 00AD37D0 l type="WowClientDB_EmotesTextRec" ; 0x11C g_emotesTextDataDB 00AD3788 l type="WowClientDB_EmotesTextDataRec" ; 0x11D g_emotesTextSoundDB 00AD37AC l type="WowClientDB_EmotesTextSoundRec" ; 0x11E +g_emotesTextDB 00AD37D0 l type="WowClientDB_EmotesTextRec" ; 0x11C g_environmentalDamageDB 00AD37F4 l type="WowClientDB_EnvironmentalDamageRec" ; 0x11F g_exhaustionDB 00AD3818 l type="WowClientDB_ExhaustionRec" ; 0x120 -g_factionDB 00AD3860 l type="WowClientDB_FactionRec" ; 0x121 g_factionGroupDB 00AD383C l type="WowClientDB_FactionGroupRec" ; 0x122 +g_factionDB 00AD3860 l type="WowClientDB_FactionRec" ; 0x121 g_factionTemplateDB 00AD3884 l type="WowClientDB_FactionTemplateRec" ; 0x123 g_fileDataDB 00AD38A8 l type="WowClientDB_FileDataRec" ; 0x124 g_footprintTexturesDB 00AD38CC l type="WowClientDB_FootprintTexturesRec" ; 0x125 @@ -101,8 +102,8 @@ g_itemPurchaseGroupDB 00AD3E90 l type="WowClientDB_ItemPurchaseGroupRec" ; 0x14E g_itemRandomPropertiesDB 00AD3EB4 l type="WowClientDB_ItemRandomPropertiesRec" ; 0x14F g_itemRandomSuffixDB 00AD3ED8 l type="WowClientDB_ItemRandomSuffixRec" ; 0x150 g_itemSetDB 00AD3EFC l type="WowClientDB_ItemSetRec" ; 0x151 -g_itemSubClassDB 00AD3F44 l type="WowClientDB_ItemSubClassRec" ; 0x152 g_itemSubClassMaskDB 00AD3F20 l type="WowClientDB_ItemSubClassMaskRec" ; 0x153 +g_itemSubClassDB 00AD3F44 l type="WowClientDB_ItemSubClassRec" ; 0x152 g_itemVisualEffectsDB 00AD3F68 l type="WowClientDB_ItemVisualEffectsRec" ; 0x154 g_itemVisualsDB 00AD3F8C l type="WowClientDB_ItemVisualsRec" ; 0x155 g_languageWordsDB 00AD3FB0 l type="WowClientDB_LanguageWordsRec" ; 0x156 @@ -110,11 +111,6 @@ g_languagesDB 00AD3FD4 l type="WowClientDB_LanguagesRec" ; 0x157 g_lfgDungeonExpansionDB 00AD3FF8 l type="WowClientDB_LfgDungeonExpansionRec" ; 0x158 g_lfgDungeonGroupDB 00AD401C l type="WowClientDB_LfgDungeonGroupRec" ; 0x159 g_lfgDungeonsDB 00AD4040 l type="WowClientDB_LfgDungeonsRec" ; 0x15A -g_lightDB 00AF4A28 l type="WowClientDB_LightRec" ; 0x15B -g_lightFloatBandDB 00AF49E0 l type="WowClientDB_LightFloatBandRec" ; 0x15C -g_lightIntBandDB 00AF49BC l type="WowClientDB_LightIntBandRec" ; 0x15D -g_lightParamsDB 00AF4A04 l type="WowClientDB_LightParamsRec" ; 0x15E -g_lightSkyboxDB 00AF4998 l type="WowClientDB_LightSkyboxRec" ; 0x15F g_liquidTypeDB 00AD4064 l type="WowClientDB_LiquidTypeRec" ; 0x160 g_liquidMaterialDB 00AD4088 l type="WowClientDB_LiquidMaterialRec" ; 0x161 g_loadingScreensDB 00AD40AC l type="WowClientDB_LoadingScreensRec" ; 0x162 @@ -158,8 +154,8 @@ g_skillLineDB 00AD45E0 l type="WowClientDB_SkillLineRec" ; 0x187 g_skillRaceClassInfoDB 00AD4604 l type="WowClientDB_SkillRaceClassInfoRec" ; 0x188 g_skillTiersDB 00AD4628 l type="WowClientDB_SkillTiersRec" ; 0x189 g_soundAmbienceDB 00AD464C l type="WowClientDB_SoundAmbienceRec" ; 0x18A -g_soundEmittersDB 00AD4694 l type="WowClientDB_SoundEmittersRec" ; 0x18B g_soundEntriesDB 00AD4670 l type="WowClientDB_SoundEntriesRec" ; 0x18C +g_soundEmittersDB 00AD4694 l type="WowClientDB_SoundEmittersRec" ; 0x18B g_soundProviderPreferencesDB 00AD46B8 l type="WowClientDB_SoundProviderPreferencesRec" ; 0x18D g_soundSamplePreferencesDB 00AD46DC l type="WowClientDB_SoundSamplePreferencesRec" ; 0x18E g_soundWaterTypeDB 00AD4700 l type="WowClientDB_SoundWaterTypeRec" ; 0x18F @@ -167,7 +163,6 @@ g_spamMessagesDB 00AD4724 l type="WowClientDB_SpamMessagesRec" ; 0x190 g_spellCastTimesDB 00AD4748 l type="WowClientDB_SpellCastTimesRec" ; 0x191 g_spellCategoryDB 00AD476C l type="WowClientDB_SpellCategoryRec" ; 0x192 g_spellChainEffectsDB 00AD4790 l type="WowClientDB_SpellChainEffectsRec" ; 0x193 -g_spellDB 00AD49D0 l type="WowClientDB_SpellRec" ; 0x194 g_spellDescriptionVariablesDB 00AD47B4 l type="WowClientDB_SpellDescriptionVariablesRec" ; 0x195 g_spellDifficultyDB 00AD47D8 l type="WowClientDB_SpellDifficultyRec" ; 0x196 g_spellDispelTypeDB 00AD47FC l type="WowClientDB_SpellDispelTypeRec" ; 0x197 @@ -183,22 +178,22 @@ g_spellMissileMotionDB 00AD4940 l type="WowClientDB_SpellMissileMotionRec" ; 0x1 g_spellRadiusDB 00AD4964 l type="WowClientDB_SpellRadiusRec" ; 0x1A1 g_spellRangeDB 00AD4988 l type="WowClientDB_SpellRangeRec" ; 0x1A2 g_spellRuneCostDB 00AD49AC l type="WowClientDB_SpellRuneCostRec" ; 0x1A3 +g_spellDB 00AD49D0 l type="WowClientDB_SpellRec" ; 0x194 g_spellShapeshiftFormDB 00AD49F4 l type="WowClientDB_SpellShapeshiftFormRec" ; 0x1A4 -g_spellVisualDB 00AD4AA8 l type="WowClientDB_SpellVisualRec" ; 0x1A5 g_spellVisualEffectNameDB 00AD4A18 l type="WowClientDB_SpellVisualEffectNameRec" ; 0x1A6 g_spellVisualKitDB 00AD4A3C l type="WowClientDB_SpellVisualKitRec" ; 0x1A7 g_spellVisualKitAreaModelDB 00AD4A60 l type="WowClientDB_SpellVisualKitAreaModelRec" ; 0x1A8 g_spellVisualKitModelAttachDB 00AD4A84 l type="WowClientDB_SpellVisualKitModelAttachRec" ; 0x1A9 +g_spellVisualDB 00AD4AA8 l type="WowClientDB_SpellVisualRec" ; 0x1A5 g_stableSlotPricesDB 00AD4ACC l type="WowClientDB_StableSlotPricesRec" ; 0x1AA g_stationeryDB 00AD4AF0 l type="WowClientDB_StationeryRec" ; 0x1AB g_stringLookupsDB 00AD4B14 l type="WowClientDB_StringLookupsRec" ; 0x1AC -g_startup_StringsDB 00AB6350 l type="WowClientDB_Startup_StringsRec" g_summonPropertiesDB 00AD4B38 l type="WowClientDB_SummonPropertiesRec" ; 0x1AD g_talentDB 00AD4B5C l type="WowClientDB_TalentRec" ; 0x1AE g_talentTabDB 00AD4B80 l type="WowClientDB_TalentTabRec" ; 0x1AF g_taxiNodesDB 00AD4BA4 l type="WowClientDB_TaxiNodesRec" ; 0x1B0 -g_taxiPathDB 00AD4BEC l type="WowClientDB_TaxiPathRec" ; 0x1B1 g_taxiPathNodeDB 00AD4BC8 l type="WowClientDB_TaxiPathNodeRec" ; 0x1B2 +g_taxiPathDB 00AD4BEC l type="WowClientDB_TaxiPathRec" ; 0x1B1 g_teamContributionPointsDB 00AD4C10 l type="WowClientDB_TeamContributionPointsRec" ; 0x1B3 g_terrainTypeDB 00AD4C34 l type="WowClientDB_TerrainTypeRec" ; 0x1B4 g_terrainTypeSoundsDB 00AD4C58 l type="WowClientDB_TerrainTypeSoundsRec" ; 0x1B5 @@ -207,8 +202,8 @@ g_transportAnimationDB 00AD4CA0 l type="WowClientDB_TransportAnimationRec" ; 0x1 g_transportPhysicsDB 00AD4CC4 l type="WowClientDB_TransportPhysicsRec" ; 0x1B8 g_transportRotationDB 00AD4CE8 l type="WowClientDB_TransportRotationRec" ; 0x1B9 g_uISoundLookupsDB 00AD4D0C l type="WowClientDB_UISoundLookupsRec" ; 0x1BA -g_unitBloodDB 00AD4D54 l type="WowClientDB_UnitBloodRec" ; 0x1BB g_unitBloodLevelsDB 00AD4D30 l type="WowClientDB_UnitBloodLevelsRec" ; 0x1BC +g_unitBloodDB 00AD4D54 l type="WowClientDB_UnitBloodRec" ; 0x1BB g_vehicleDB 00AD4D78 l type="WowClientDB_VehicleRec" ; 0x1BD g_vehicleSeatDB 00AD4D9C l type="WowClientDB_VehicleSeatRec" ; 0x1BE g_vehicleUIIndicatorDB 00AD4DC0 l type="WowClientDB_VehicleUIIndicatorRec" ; 0x1BF @@ -219,9 +214,9 @@ g_weaponImpactSoundsDB 00AD4E50 l type="WowClientDB_WeaponImpactSoundsRec" ; 0x1 g_weaponSwingSounds2DB 00AD4E74 l type="WowClientDB_WeaponSwingSounds2Rec" ; 0x1C4 g_weatherDB 00AD4E98 l type="WowClientDB_WeatherRec" ; 0x1C5 g_worldMapAreaDB 00AD4EBC l type="WowClientDB_WorldMapAreaRec" ; 0x1C6 -g_worldMapTransformsDB 00AD4F28 l type="WowClientDB_WorldMapTransformsRec" ; 0x1C7 g_worldMapContinentDB 00AD4EE0 l type="WowClientDB_WorldMapContinentRec" ; 0x1C8 g_worldMapOverlayDB 00AD4F04 l type="WowClientDB_WorldMapOverlayRec" ; 0x1C9 +g_worldMapTransformsDB 00AD4F28 l type="WowClientDB_WorldMapTransformsRec" ; 0x1C7 g_worldSafeLocsDB 00AD4F4C l type="WowClientDB_WorldSafeLocsRec" ; 0x1CA g_worldStateUIDB 00AD4F70 l type="WowClientDB_WorldStateUIRec" ; 0x1CB g_zoneIntroMusicTableDB 00AD4F94 l type="WowClientDB_ZoneIntroMusicTableRec" ; 0x1CC @@ -235,4 +230,9 @@ g_objectEffectModifierDB 00AD5090 l type="WowClientDB_ObjectEffectModifierRec" ; g_objectEffectPackageDB 00AD50B4 l type="WowClientDB_ObjectEffectPackageRec" ; 0x1D4 g_objectEffectPackageElemDB 00AD50D8 l type="WowClientDB_ObjectEffectPackageElemRec" ; 0x1D5 g_soundFilterDB 00AD50FC l type="WowClientDB_SoundFilterRec" ; 0x1D6 -g_soundFilterElemDB 00AD5120 l type="WowClientDB_SoundFilterElemRec" ; 0x1D7 \ No newline at end of file +g_soundFilterElemDB 00AD5120 l type="WowClientDB_SoundFilterElemRec" ; 0x1D7 +g_lightSkyboxDB 00AF4998 l type="WowClientDB_LightSkyboxRec" ; 0x15F +g_lightIntBandDB 00AF49BC l type="WowClientDB_LightIntBandRec" ; 0x15D +g_lightFloatBandDB 00AF49E0 l type="WowClientDB_LightFloatBandRec" ; 0x15C +g_lightParamsDB 00AF4A04 l type="WowClientDB_LightParamsRec" ; 0x15E +g_lightDB 00AF4A28 l type="WowClientDB_LightRec" ; 0x15B diff --git a/profile/3.3.5a-windows-386/symbol/effect/func.sym b/profile/3.3.5a-windows-386/symbol/effect/func.sym index e9f601b..a593a77 100644 --- a/profile/3.3.5a-windows-386/symbol/effect/func.sym +++ b/profile/3.3.5a-windows-386/symbol/effect/func.sym @@ -1 +1 @@ -CEffect__Destroy 006FA3C0 f end=006FA444 \ No newline at end of file +CEffect__Destroy 006FA3C0 f end=006FA444 diff --git a/profile/3.3.5a-windows-386/symbol/event/func.sym b/profile/3.3.5a-windows-386/symbol/event/func.sym index 418a4d0..c9d69f0 100644 --- a/profile/3.3.5a-windows-386/symbol/event/func.sym +++ b/profile/3.3.5a-windows-386/symbol/event/func.sym @@ -1,52 +1,53 @@ -EventDestroy 0047D030 f end=0047D04E -EventDestroy_cleanup 00480EA0 f end=00480ED9 +PropSelectContext 0047CBF0 f end=0047CC08 +PropGet 0047CC20 f end=0047CC41 +PropSet 0047CC50 f end=0047CC70 EventInitialize 0047CFF0 f end=0047D02D +EventDestroy 0047D030 f end=0047D04E EventCreateContextEx 0047D080 f end=0047D089 EventSetConfirmCloseCallback 0047D090 f end=0047D099 EventIsButtonDown 0047D1D0 f end=0047D230 EventIsKeyDown 0047D230 f end=0047D290 EventPostCloseEx 0047D290 f end=0047D305 +EventQueuePost 0047D310 f end=0047D3AF EventRegisterEx 0047D3C0 f end=0047D443 -EventSetMouseMode 0047D690 f end=0047D6FD +EventUnregisterEx 0047D450 f end=0047D4B7 EventSetTimer 0047D530 f end=0047D59C +EventKillTimer 0047D620 f end=0047D683 +EventSetMouseMode 0047D690 f end=0047D6FD +EventPostClose 0047D760 f end=0047D769 EventRegister 0047D770 f end=0047D78D EventUnregister 0047D790 f end=0047D7A9 -EventUnregisterEx 0047D450 f end=0047D4B7 -EventDoMessageLoop 0047F2D0 f end=0047F2EC +IEvtSchedulerShutdown 0047D990 f end=0047D9EB +SynthesizeIdle 0047DBC0 f end=0047DC14 +SynthesizePoll 0047DC20 f end=0047DC50 +SynthesizePaint 0047DC50 f end=0047DC8D EventForceIdleProcessing 0047DCA0 f end=0047DE09 -EventKillTimer 0047D620 f end=0047D683 -EventQueuePost 0047D310 f end=0047D3AF -IEvtInputProcess 00480410 f end=004804A8 -ProcessInput 00480130 f end=0048040C -IEvtInputGetMousePosition 004800A0 f end=004800EF -IEvtInputInitialize 0047FBA0 f end=0047FBA5 -IEvtInputSetConfirmCloseCallback 0047FC20 f end=0047FC36 -IEvtInputSetMouseMode 0047FBB0 f end=0047FC17 +IEvtSchedulerDestroy 0047DEA0 f end=0047E117 +InitializeSchedulerThread 0047E910 f end=0047EA69 +AttachContextToThread 0047EC10 f +SchedulerThreadProcProcess 0047EFF0 f end=0047F225 +SchedulerThreadProc 0047F230 f end=0047F2C1 ; IEvtSchedulerProcess as an independent function appears to be optimized out +EventDoMessageLoop 0047F2D0 f end=0047F2EC +IEvtSchedulerInitialize 0047F2F0 f end=0047F5BA +IEvtSchedulerCreateContext 0047F5C0 f end=0047F6B9 +PostMouseModeChanged 0047FAC0 f end=0047FB22 IEvtInputDestroy 0047FB80 f end=0047FB92 -IEvtQueueCheckSyncKeyState 00480A50 f end=00480AC2 -IEvtQueueCheckSyncMouseState 004804C0 f end=004804E6 +IEvtInputInitialize 0047FBA0 f end=0047FBA5 +IEvtInputSetMouseMode 0047FBB0 f end=0047FC17 +IEvtInputSetConfirmCloseCallback 0047FC20 f end=0047FC36 +IEvtInputGetMousePosition 004800A0 f end=004800EF +ProcessInput 00480130 f end=0048040C +IEvtInputProcess 00480410 f end=004804A8 IEvtQueueDestroy 004804B0 f end=004804BA +IEvtQueueCheckSyncMouseState 004804C0 f end=004804E6 +IEvtQueueRegister 004804F0 f end=004805F4 type="void __cdecl func(EvtContext* context, EVENTID id, void* handler, void* param, float priority)" +IEvtQueuePost 004806A0 f end=0048071F type="int32_t __cdecl func(EvtContext* context, EVENTID id, void *data, size_t bytes)" +IEvtQueueCheckSyncKeyState 00480A50 f end=00480AC2 IEvtQueueDispatch 00480AD0 f end=00480BCB IEvtQueueDispatchAll 00480BD0 f end=00480D28 -IEvtQueueRegister 004804F0 f end=004805F4 type="void __cdecl func(EvtContext* context, EVENTID id, void* handler, void* param, float priority)" IEvtQueueUnregister 00480D30 f end=00480DD1 -IEvtQueuePost 004806A0 f end=0048071F type="int32_t __cdecl func(EvtContext* context, EVENTID id, void *data, size_t bytes)" -IEvtSchedulerCreateContext 0047F5C0 f end=0047F6B9 -IEvtSchedulerInitialize 0047F2F0 f end=0047F5BA -IEvtSchedulerDestroy 0047DEA0 f end=0047E117 -IEvtSchedulerShutdown 0047D990 f end=0047D9EB -SchedulerThreadProc 0047F230 f end=0047F2C1 ; IEvtSchedulerProcess as an independent function appears to be optimized out -SchedulerThreadProcProcess 0047EFF0 f end=0047F225 -IEvtTimerDispatch 00481100 f end=00481289 +EventDestroy_cleanup 00480EA0 f end=00480ED9 IEvtTimerGetNextTime 00480F70 f end=00480FCA +IEvtTimerDispatch 00481100 f end=00481289 IEvtTimerKill 00481290 f end=0048138F IEvtTimerSet 00481390 f end=004814E4 -PostMouseModeChanged 0047FAC0 f end=0047FB22 -PropSelectContext 0047CBF0 f end=0047CC08 -PropSet 0047CC50 f end=0047CC70 -PropGet 0047CC20 f end=0047CC41 -InitializeSchedulerThread 0047E910 f end=0047EA69 -SynthesizeIdle 0047DBC0 f end=0047DC14 -SynthesizePaint 0047DC50 f end=0047DC8D -SynthesizePoll 0047DC20 f end=0047DC50 -AttachContextToThread 0047EC10 f \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/event/label.sym b/profile/3.3.5a-windows-386/symbol/event/label.sym index 2b63664..7afc348 100644 --- a/profile/3.3.5a-windows-386/symbol/event/label.sym +++ b/profile/3.3.5a-windows-386/symbol/event/label.sym @@ -1,3 +1,3 @@ -s_mainThread 00b417c8 l type="uint32_t" +s_mainThread 00B417C8 l type="uint32_t" +s_interactiveCount 00B417D0 l type="int32_t" s_messageRecycler 00B41850 l type="CDataRecycler" -s_interactiveCount 00B417D0 l type="int32_t" \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/ffx/func.sym b/profile/3.3.5a-windows-386/symbol/ffx/func.sym index 4a7eb98..08b0892 100644 --- a/profile/3.3.5a-windows-386/symbol/ffx/func.sym +++ b/profile/3.3.5a-windows-386/symbol/ffx/func.sym @@ -1 +1 @@ -FFX__Destroy 008C0360 f end=008C0589 \ No newline at end of file +FFX__Destroy 008C0360 f end=008C0589 diff --git a/profile/3.3.5a-windows-386/symbol/file/func.sym b/profile/3.3.5a-windows-386/symbol/file/func.sym index 30d78eb..ec7ed11 100644 --- a/profile/3.3.5a-windows-386/symbol/file/func.sym +++ b/profile/3.3.5a-windows-386/symbol/file/func.sym @@ -16,5 +16,5 @@ SFile__Close 00422910 f end=004229AB SFile__FileExistsEx 00424B10 f end=00424B41 SFile__OpenEx 00424B50 f end=00424E44 SFile__Load 00424E80 f end=00424F46 +SFile__LoadFile 00424F50 f end=00424F74 SFile__Open 00424F80 f end=00424F98 -SFile__LoadFile 00424F50 f end=00424F74 \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/file/label.sym b/profile/3.3.5a-windows-386/symbol/file/label.sym index bae5fe9..da3e5a2 100644 --- a/profile/3.3.5a-windows-386/symbol/file/label.sym +++ b/profile/3.3.5a-windows-386/symbol/file/label.sym @@ -1 +1 @@ -s_streamingdiag 00B2F050 l \ No newline at end of file +s_streamingdiag 00B2F050 l diff --git a/profile/3.3.5a-windows-386/symbol/framescript/func.sym b/profile/3.3.5a-windows-386/symbol/framescript/func.sym index cd829e6..f55c3f3 100644 --- a/profile/3.3.5a-windows-386/symbol/framescript/func.sym +++ b/profile/3.3.5a-windows-386/symbol/framescript/func.sym @@ -1,16 +1,16 @@ -FrameScript_Execute 00819EA0 f end=0081A2B5 type="void __stdcall func(int32_t function, FrameScript_Object* object, int32_t args, char* args_fmt, FrameScript_EventObject* eventObject)" -FrameScript_SignalEvent 0081B530 f end=0081B549 ; FrameScript_SignalEvent(unsigned int, char const*, ...) -FrameScript_Sprintf 00818070 f end=0081839F type="void __stdcall func(lua_State* L, int startIndex, char* buffer, uint32_t bufferSize)" ; startIndex is the index of starting argument on stack +FrameScript_GetObjectThis 004A81B0 f end=004A8235 ; FrameScript_GetObjectThis(lua_State*, int) FrameScript_Object__CreateScriptMetaTable 00816790 f end=008167D3 ; FrameScript_Object::CreateScriptMetaTable(lua_State*, void (*)(lua_State*)) FrameScript_Object__FillScriptMethodTable 008167E0 f end=00816822 ; FrameScript_Object::FillScriptMethodTable(lua_State*, FrameScript_Method*, int) +FrameScript_Sprintf 00818070 f end=0081839F type="void __stdcall func(lua_State* L, int startIndex, char* buffer, uint32_t bufferSize)" ; startIndex is the index of starting argument on stack FrameScript_Object__FrameScript_Object 00819830 f end=0081984B type="void __thiscall func(FrameScript_Object* this)" ; FrameScript_Object::FrameScript_Object() FrameScript_Object__destructor 00819850 f end=00819872 ; FrameScript_Object::~FrameScript_Object() FrameScript_Object__UnregisterScriptObject 008199C0 f end=00819A58 ; FrameScript_Object::UnregisterScriptObject(char const*) -FrameScript_Object__RunScript 0081A2C0 f end=0081A2E7 ; FrameScript_Object__RunScript(FrameScript_Object::ScriptIx const&, int, char const*) -FrameScript_SignalEvent 0081AA00 f end=0081AB59 ; FrameScript_SignalEvent(unsigned int, lua_State*, int) -vFrameScript_SignalEvent 0081AC90 f end=0081AE4F ; vFrameScript_SignalEvent(unsigned int, char const*, char*) -FrameScript_CreateEvents 0081B5F0 f end=0081B714 ; FrameScript_CreateEvents(char const**, unsigned int) -FrameScript_GetObjectThis 004A81B0 f end=004A8235 ; FrameScript_GetObjectThis(lua_State*, int) FrameScript_Initialize 00819BB0 f end=00819D38 +FrameScript_Execute 00819EA0 f end=0081A2B5 type="void __stdcall func(int32_t function, FrameScript_Object* object, int32_t args, char* args_fmt, FrameScript_EventObject* eventObject)" +FrameScript_Object__RunScript 0081A2C0 f end=0081A2E7 ; FrameScript_Object__RunScript(FrameScript_Object::ScriptIx const&, int, char const*) FrameScript_Destroy 0081A9A0 f end=0081A9FF -FrameScript_Flush 0081AC70 f end=0081AC8B \ No newline at end of file +FrameScript_SignalEvent 0081AA00 f end=0081AB59 ; FrameScript_SignalEvent(unsigned int, lua_State*, int) +FrameScript_Flush 0081AC70 f end=0081AC8B +vFrameScript_SignalEvent 0081AC90 f end=0081AE4F ; vFrameScript_SignalEvent(unsigned int, char const*, char*) +FrameScript_SignalEvent 0081B530 f end=0081B549 ; FrameScript_SignalEvent(unsigned int, char const*, ...) +FrameScript_CreateEvents 0081B5F0 f end=0081B714 ; FrameScript_CreateEvents(char const**, unsigned int) diff --git a/profile/3.3.5a-windows-386/symbol/framescript/label.sym b/profile/3.3.5a-windows-386/symbol/framescript/label.sym index 092b3ce..34b55a5 100644 --- a/profile/3.3.5a-windows-386/symbol/framescript/label.sym +++ b/profile/3.3.5a-windows-386/symbol/framescript/label.sym @@ -1 +1 @@ -s_scriptProfileEnabled 00D3F798 l type="int32_t" \ No newline at end of file +s_scriptProfileEnabled 00D3F798 l type="int32_t" diff --git a/profile/3.3.5a-windows-386/symbol/framestrata/func.sym b/profile/3.3.5a-windows-386/symbol/framestrata/func.sym index 37a43a5..c595706 100644 --- a/profile/3.3.5a-windows-386/symbol/framestrata/func.sym +++ b/profile/3.3.5a-windows-386/symbol/framestrata/func.sym @@ -1,2 +1,2 @@ CFrameStrata__BuildBatches 00494EE0 f end=00494F2E type="int32_t __thiscall func(CFrameStrata* this, int32_t a2)" -CFrameStrata__RenderBatch 00494F30 f end=00494F89 type="void __thiscall func(CFrameStrata* this)" \ No newline at end of file +CFrameStrata__RenderBatch 00494F30 f end=00494F89 type="void __thiscall func(CFrameStrata* this)" diff --git a/profile/3.3.5a-windows-386/symbol/framexml/func.sym b/profile/3.3.5a-windows-386/symbol/framexml/func.sym index f9f282e..628378e 100644 --- a/profile/3.3.5a-windows-386/symbol/framexml/func.sym +++ b/profile/3.3.5a-windows-386/symbol/framexml/func.sym @@ -1,8 +1,8 @@ -FrameXML_RegisterFactory 00813D20 f end=00813DEF -FrameXML_RegisterDefault 00813DF0 f end=00813EDC FrameXML_LoadXML 00812530 f end=008125C0 FrameXML_RegisterLoadProgressCallback 00812840 f end=00812869 FrameXML_CreateFrame 00812FA0 f end=008131CD +FrameXML_RegisterFactory 00813D20 f end=00813DEF +FrameXML_RegisterDefault 00813DF0 f end=00813EDC FrameXML_ProcessFile 00813EE0 f end=00814333 FrameXML_CreateFrames 00814340 f end=008145A3 -FrameXML_CheckSignature 008165E0 f end=00816767 \ No newline at end of file +FrameXML_CheckSignature 008165E0 f end=00816767 diff --git a/profile/3.3.5a-windows-386/symbol/gamecamera/func.sym b/profile/3.3.5a-windows-386/symbol/gamecamera/func.sym new file mode 100644 index 0000000..d7fdcd1 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/gamecamera/func.sym @@ -0,0 +1 @@ +CGCamera__SetTarget 006066E0 f end=00606967 diff --git a/profile/3.3.5a-windows-386/symbol/gameui/func.sym b/profile/3.3.5a-windows-386/symbol/gameui/func.sym index a013bc4..50308df 100644 --- a/profile/3.3.5a-windows-386/symbol/gameui/func.sym +++ b/profile/3.3.5a-windows-386/symbol/gameui/func.sym @@ -1,72 +1,72 @@ CGGameUI__OpenGuildInvite 00512570 f end=0051258F CGGameUI__IsPartyMember 00512A00 f end=00512A2C +CGGameUI__UnitModelUpdate 00512B50 f end=00512B59 CGGameUI__HandleScreenshot 00512E20 f end=00512E52 CGGameUI__CloseInteraction 00512E60 f end=005130CF +CGGameUI__SetMinimapZoneText 005134C0 f end=00513530 CGGameUI__ShowBlockedActionFeedback 00513530 f end=00513640 +CGGameUI__ShowBlockedFrameFeedback 00513640 f end=00513653 +CGGameUI__GetCursorItem 00513660 f end=0051367A +CGGameUI__GetCursorItem 00513680 f end=005136B8 +CGGameUI__GetCursorSpell 005136C0 f end=005136C6 +CGGameUI__GetCursorVirtualItem 005136D0 f end=005136D6 CGGameUI__GetCursorVirtualItem 005136E0 f end=005136FA CGGameUI__IsAutoLooting 00513700 f end=00513740 CGGameUI__UnlockItem 00513770 f end=005137A0 CGGameUI__GetPartyMember 005138D0 f end=005138F1 CGGameUI__SetInstanceLockTime 00513B20 f end=00513B8A CGGameUI__GetPartyMemberState 00513C30 f end=00513C66 +CGGameUI__UpdateUnitHighlights 00513CF0 f end=00513D92 CGGameUI__LastErrorMessage 00513DF0 f end=00513DF6 CGGameUI__ResetCamera 005186A0 f end=005186F2 CGGameUI__ClearInteractTarget 00518D50 f end=00518DBE +CGGameUI__SendTarget 00518DC0 f end=00518E36 +CGGameUI__CanPerformAction 005191C0 f end=0051924E CGGameUI__ClearCursor 00519280 f end=00519481 +CGGameUI__DoPowerRegen 005196F0 f end=00519774 +CGGameUI__StopCinematicInternal 0051D7C0 f end=0051D95B +CGGameUI__UpdateCorpseDistance 0051F5C0 f end=0051F684 +CGGameUI__HandleObjectTrackChange 0051F790 f end=0051F9C3 +CGGameUI__FilterMouseDown 0051FA50 f end=0051FAFF CGGameUI__HandleMouseDown 0051FB00 f end=0051FB5E +CGGameUI__HandleSpriteTrack 0051FB60 f end=0051FB7F +CGGameUI__HandleDisplaySizeChanged 0051FB80 f end=0051FCD1 CGGameUI__SetInteractTarget 0051FCE0 f end=0051FDD9 +CGGameUI__UpdateInteractTarget 0051FDE0 f end=0051FF1B +CGGameUI__SetFocusTarget 0051FF20 f end=0051FFD5 CGGameUI__CanInspect 00520410 f end=005204B6 +CGGameUI__NewZoneFeedback 005204C0 f end=005206DE CGGameUI__SetCursorItem 00520770 f end=0052087C +CGGameUI__SetCursorMoney 00520880 f end=005208E5 CGGameUI__SetCursorPetAction 00520A80 f end=00520BAF CGGameUI__SetCursorPet 00520C60 f end=00520D29 +CGGameUI__SetCursorVirtualItem 00520D30 f end=00520DB3 CGGameUI__SetCursorEquipmentSet 00520DC0 f end=00520E38 +CGGameUI__RegisterFrameFactories 00521040 f end=005210CF CGGameUI__DisplayError 005216F0 f end=005218AD +CGGameUI__AutoMouseOver 005220B0 f end=0052217B +CGGameUI__CloseLoot 00523640 f end=005237D2 CGGameUI__GetCorpseLocation 00523E80 f end=00523EA7 +CGGameUI__SetAreaSpiritHealer 00523EB0 f end=00523F74 +CGGameUI__UpdateAreaSpiritHealerDistance 00524010 f end=005240D7 +CGGameUI__HandleDisplaySizeChanged 005240E0 f end=005241A7 +CGGameUI__ClearTarget 005241B0 f end=0052434D +CGGameUI__BreakTarget 00524350 f end=0052443C CGGameUI__AcceptAreaSpiritHeal 00524B60 f end=00524BEE +CGGameUI__Target 00524BF0 f end=00524FB6 +CGGameUI__TargetNearestUnit 00524FC0 f end=005252C4 +CGGameUI__TargetDirection 005252D0 f end=00525526 CGGameUI__StartCinematicCamera 00526370 f end=005264ED CGGameUI__OnTerrainClick 00527360 f end=005274E7 CGGameUI__HandleTerrainClick 00527830 f end=00527863 +CGGameUI__HandleWorldClick 005278C0 f end=00527A2A CGGameUI__EnterWorld 00528010 f end=005284D0 +CGGameUI__StartCinematic 00528AF0 f end=00528C2E CGGameUI__LeaveWorld 00528C30 f end=00528EF9 CGGameUI__Shutdown 00528F00 f end=0052915A CGGameUI__ShutdownGame 00529160 f end=00529541 CGGameUI__Initialize 0052A980 f end=0052AEC6 -CGGameUI__InitializeGame 0052B550 f end=0052BADA -CGGameUI__ShowBlockedFrameFeedback 00513640 f end=00513653 -CGGameUI__GetCursorItem 00513660 f end=0051367A -CGGameUI__GetCursorSpell 005136C0 f end=005136C6 -CGGameUI__GetCursorVirtualItem 005136D0 f end=005136D6 -CGGameUI__UpdateUnitHighlights 00513CF0 f end=00513D92 -CGGameUI__SendTarget 00518DC0 f end=00518E36 -CGGameUI__CanPerformAction 005191C0 f end=0051924E -CGGameUI__DoPowerRegen 005196F0 f end=00519774 -CGGameUI__StopCinematicInternal 0051D7C0 f end=0051D95B -CGGameUI__HandleObjectTrackChange 0051F790 f end=0051F9C3 -CGGameUI__HandleSpriteTrack 0051FB60 f end=0051FB7F -CGGameUI__HandleDisplaySizeChanged 0051FB80 f end=0051FCD1 -CGGameUI__SetFocusTarget 0051FF20 f end=0051FFD5 -CGGameUI__AutoMouseOver 005220B0 f end=0052217B -CGGameUI__ClearTarget 005241B0 f end=0052434D -CGGameUI__BreakTarget 00524350 f end=0052443C -CGGameUI__Target 00524BF0 f end=00524FB6 CGGameUI__RegisterSavedVariable 0052AED0 f end=0052AF3F -CGGameUI__SetMinimapZoneText 005134C0 f end=00513530 -CGGameUI__FilterMouseDown 0051FA50 f end=0051FAFF -CGGameUI__NewZoneFeedback 005204C0 f end=005206DE -CGGameUI__SetCursorMoney 00520880 f end=005208E5 -CGGameUI__SetCursorVirtualItem 00520D30 f end=00520DB3 -CGGameUI__CloseLoot 00523640 f end=005237D2 -CGGameUI__HandleDisplaySizeChanged 005240E0 f end=005241A7 -CGGameUI__TargetNearestUnit 00524FC0 f end=005252C4 +CGGameUI__Idle 0052AF40 f end=0052B36B +CGGameUI__InitializeGame 0052B550 f end=0052BADA DisableFadingScreen 005ED080 f end=005ED116 -CGGameUI__UnitModelUpdate 00512B50 f end=00512B59 -CGGameUI__GetCursorItem 00513680 f end=005136B8 -CGGameUI__UpdateCorpseDistance 0051F5C0 f end=0051F684 -CGGameUI__UpdateInteractTarget 0051FDE0 f end=0051FF1B -CGGameUI__RegisterFrameFactories 00521040 f end=005210CF -CGGameUI__SetAreaSpiritHealer 00523EB0 f end=00523F74 -CGGameUI__UpdateAreaSpiritHealerDistance 00524010 f end=005240D7 -CGGameUI__TargetDirection 005252D0 f end=00525526 -CGGameUI__HandleWorldClick 005278C0 f end=00527A2A -CGGameUI__StartCinematic 00528AF0 f end=00528C2E -CGGameUI__Idle 0052AF40 f end=0052B36B \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/gameui/label.sym b/profile/3.3.5a-windows-386/symbol/gameui/label.sym index ee8f59c..7f34953 100644 --- a/profile/3.3.5a-windows-386/symbol/gameui/label.sym +++ b/profile/3.3.5a-windows-386/symbol/gameui/label.sym @@ -1,3 +1,4 @@ +CGGameUI__m_visible 00AC80A8 l CGGameUI__m_hasControl 00BCFB8C l CGGameUI__m_lastErrorMessage 00BCFB90 l CGGameUI__m_cursorItemType 00BD0748 l @@ -5,15 +6,27 @@ CGGameUI__m_cursorHasAction 00BD074C l CGGameUI__m_cursorVirtualSlot 00BD0750 l CGGameUI__m_cursorVirtualDisplay 00BD0754 l CGGameUI__m_cursorVirtualID 00BD0758 l +CGGameUI__m_cursorItemContainer 00BD0760 l +CGGameUI__m_cursorItem 00BD0768 l CGGameUI__m_stackSplit 00BD0770 l +CGGameUI__m_UISimpleParent 00BD0778 l +CGGameUI__m_minimapZoneText 00BD077C l +CGGameUI__m_subZoneText 00BD0784 l +CGGameUI__m_zoneText 00BD0788 l +CGGameUI__m_simpleTop 00BD078C l +CGGameUI__m_currentlyReloadingUI 00BD0790 l +CGGameUI__m_reloadUIRequested 00BD0791 l CGGameUI__m_inWorld 00BD0792 l CGGameUI__m_interactMaxDistSq 00BD0798 l CGGameUI__m_cursorMoney 00BD079C l +CGGameUI__m_currentObjectTrack 00BD07A0 l +CGGameUI__m_interactTarget 00BD07AC l CGGameUI__m_lastTarget 00BD07B8 l CGGameUI__m_lastEnemyTarget 00BD07C0 l CGGameUI__m_lastFriendTraget 00BD07C8 l CGGameUI__m_directionalTarget 00BD07D8 l CGGameUI__m_cursorSpell 00BD07E0 l +CGGameUI__m_aspect 00BD07F8 l CGGameUI__m_inCinematic 00BD07FC l CGGameUI__m_corpseMapID 00BD0818 l CGGameUI__m_corpseActualMapID 00BD081C l @@ -24,16 +37,3 @@ CGGameUI__m_instanceLockExtending 00BD0860 l CGGameUI__m_billingExpireTime 00BD086C l CGGameUI__m_lastRegenTime 00BD08A0 l CGGameUI__m_luaTainted 00D4139C l -CGGameUI__m_simpleTop 00BD078C l -CGGameUI__m_currentObjectTrack 00BD07A0 l -CGGameUI__m_visible 00AC80A8 l -CGGameUI__m_aspect 00BD07F8 l -CGGameUI__m_UISimpleParent 00BD0778 l -CGGameUI__m_reloadUIRequested 00BD0791 l -CGGameUI__m_minimapZoneText 00BD077C l -CGGameUI__m_subZoneText 00BD0784 l -CGGameUI__m_zoneText 00BD0788 l -CGGameUI__m_interactTarget 00BD07AC l -CGGameUI__m_cursorItemContainer 00BD0760 l -CGGameUI__m_cursorItem 00BD0768 l -CGGameUI__m_currentlyReloadingUI 00bd0790 l \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/gluemgr/func.sym b/profile/3.3.5a-windows-386/symbol/gluemgr/func.sym index f0f83fc..cb2b6d5 100644 --- a/profile/3.3.5a-windows-386/symbol/gluemgr/func.sym +++ b/profile/3.3.5a-windows-386/symbol/gluemgr/func.sym @@ -1,57 +1,57 @@ +CGlueMgr__InitializeFFX 004D7D20 f end=004D7D93 +CGlueMgr__UpdateWaitQueue 004D7DA0 f end=004D7E3A CGlueMgr__SetCurrentAccount 004D7F60 f end=004D7F82 +CGlueMgr__LoginEnterPIN 004D7F90 f end=004D7FAD +CGlueMgr__LoginEnterMatrix 004D7FB0 f end=004D7FCD +CGlueMgr__LoginCommitMatrix 004D7FF0 f end=004D802A +CGlueMgr__LoginGetMatrixCoordinate 004D8030 f end=004D8071 +CGlueMgr__LoginEnterToken 004D8080 f end=004D809D CGlueMgr__DisplayLoginStatus 004D80C0 f end=004D8200 +CGlueMgr__OnRealmSplitMsg 004D8200 f end=004D826A CGlueMgr__SetScreen 004D82A0 f end=004D82B8 CGlueMgr__UpdateCurrentScreen 004D82C0 f end=004D834D +CGlueMgr__QuitGame 004D8350 f end=004D8359 +CGlueMgr__DownloadFeed 004D8380 f end=004D83A3 +CGlueMgr__HandleBattlenetDisconnect 004D84A0 f end=004D8520 +CGlueMgr__ShowChangedOptionWarnings 004D8570 f end=004D857D CGlueMgr__HandleDisplaySizeChanged 004D8860 f end=004D8924 CGlueMgr__Suspend 004D8930 f end=004D8A2D CGlueMgr__LoginServerLogin 004D8A30 f end=004D8B9C CGlueMgr__ChangeRealm 004D8BD0 f end=004D8C56 +CGlueMgr__CreateCharacter 004D8C60 f end=004D8CB8 +CGlueMgr__DeleteCharacter 004D8CC0 f end=004D8D20 +CGlueMgr__RenameCharacter 004D8D20 f end=004D8E0B +CGlueMgr__OnCharCustomizeResult 004D9190 f end=004D92C7 +CGlueMgr__OnCharFactionChangeResult 004D92D0 f end=004D9480 CGlueMgr__OnKickReasonMsg 004D9500 f end=004D9582 CGlueMgr__GetCharacterList 004D95C0 f end=004D960D +CGlueMgr__GetRealmList 004D9610 f end=004D9656 +CGlueMgr__SetUIDepth 004D9810 f end=004D989B CGlueMgr__StatusDialogClick 004D98D0 f end=004D99D4 +CGlueMgr__CancelLogin 004D99E0 f end=004D99EF +CGlueMgr__DeclineCharacter 004D9A40 f end=004D9BCE +CGlueMgr__EnterWorld 004D9BD0 f end=004D9F4F +CGlueMgr__AddChangedOptionWarning 004D9F50 f end=004D9FA5 +CGlueMgr__OnCharRenameResult 004DA090 f end=004DA189 +CGlueMgr__AcceptChangedOptionWarnings 004DA240 f end=004DA274 CGlueMgr__LogConnectionStatus 004DA3D0 f end=004DA4A8 CGlueMgr__SetLoginStateAndResult 004DA4B0 f end=004DA50D CGlueMgr__Resume 004DA5F0 f end=004DA9C4 CGlueMgr__NetDisconnectHandler 004DA9D0 f end=004DAB3D CGlueMgr__Idle 004DAB40 f end=004DB9E4 CGlueMgr__Initialize 004DB9F0 f end=004DBBBF -CGlueMgr__SurveyDownloadCancel 004E4A40 f end=004E4A9E -CGlueMgr__UpdateWaitQueue 004D7DA0 f end=004D7E3A -CGlueMgr__LoginEnterPIN 004D7F90 f end=004D7FAD -CGlueMgr__LoginEnterMatrix 004D7FB0 f end=004D7FCD -CGlueMgr__LoginGetMatrixCoordinate 004D8030 f end=004D8071 -CGlueMgr__QuitGame 004D8350 f end=004D8359 -CGlueMgr__DownloadFeed 004D8380 f end=004D83A3 -CGlueMgr__HandleBattlenetDisconnect 004D84A0 f end=004D8520 -CGlueMgr__ShowChangedOptionWarnings 004D8570 f end=004D857D -CGlueMgr__CreateCharacter 004D8C60 f end=004D8CB8 -CGlueMgr__DeleteCharacter 004D8CC0 f end=004D8D20 -CGlueMgr__RenameCharacter 004D8D20 f end=004D8E0B -CGlueMgr__GetRealmList 004D9610 f end=004D9656 -CGlueMgr__SetUIDepth 004D9810 f end=004D989B -CGlueMgr__CancelLogin 004D99E0 f end=004D99EF -CGlueMgr__DeclineCharacter 004D9A40 f end=004D9BCE -CGlueMgr__EnterWorld 004D9BD0 f end=004D9F4F -CGlueMgr__AcceptChangedOptionWarnings 004DA240 f end=004DA274 CGlueMgr__Shutdown 004DBBC0 f end=004DBC6C +GlueScriptEventsUnregisterFunctions 004DD5B0 f end=004DD5CF CGlueMgr__SurveyDownloadFeed 004E4880 f end=004E489E +CGlueMgr__SurveySendResults 004E48A0 f end=004E48D4 +CGlueMgr__SurveyDownloadStart 004E48E0 f end=004E4A38 +CGlueMgr__SurveyDownloadCancel 004E4A40 f end=004E4A9E +CGlueMgr__SurveyExecute 004E4B30 f end=004E4E75 +CGlueMgr__PatchDownloadFeed 004E51C0 f end=004E51DE +CGlueMgr__GetPatchFolder 004E51E0 f end=004E51F8 +CGlueMgr__PatchDownloadStart 004E5200 f end=004E53A0 CGlueMgr__PatchDownloadCancel 004E53A0 f end=004E541F CGlueMgr__PatchFailed 004E5420 f end=004E54C8 CGlueMgr__PatchDownloadIdle 004E54D0 f end=004E5722 -CGlueMgr__LoginCommitMatrix 004D7FF0 f end=004D802A -CGlueMgr__LoginEnterToken 004D8080 f end=004D809D -CGlueMgr__SurveySendResults 004E48A0 f end=004E48D4 -CGlueMgr__SurveyDownloadStart 004E48E0 f end=004E4A38 -CGlueMgr__SurveyExecute 004E4B30 f end=004E4E75 -CGlueMgr__GetPatchFolder 004E51E0 f end=004E51F8 -CGlueMgr__PatchDownloadStart 004E5200 f end=004E53A0 -CGlueMgr__AddChangedOptionWarning 004D9F50 f end=004D9FA5 -CGlueMgr__InitializeFFX 004D7D20 f end=004D7D93 -CGlueMgr__OnRealmSplitMsg 004D8200 f end=004D826A -CGlueMgr__OnCharCustomizeResult 004D9190 f end=004D92C7 -CGlueMgr__OnCharFactionChangeResult 004D92D0 f end=004D9480 -CGlueMgr__OnCharRenameResult 004DA090 f end=004DA189 -CGlueMgr__PatchDownloadFeed 004E51C0 f end=004E51DE -GlueScriptEventsUnregisterFunctions 004DD5B0 f end=004DD5CF SystemRegisterFunctions 0060A120 f end=0060A143 -SystemUnregisterFunctions 0060A150 f end=0060A16C \ No newline at end of file +SystemUnregisterFunctions 0060A150 f end=0060A16C diff --git a/profile/3.3.5a-windows-386/symbol/gluemgr/label.sym b/profile/3.3.5a-windows-386/symbol/gluemgr/label.sym index 47da892..fcb64a5 100644 --- a/profile/3.3.5a-windows-386/symbol/gluemgr/label.sym +++ b/profile/3.3.5a-windows-386/symbol/gluemgr/label.sym @@ -1,23 +1,23 @@ -CGlueMgr__m_cursorMipBits 00B6A9DC l type="MipBits*" +CGlueMgr__m_ffxActive 00B6A180 l +CGlueMgr__m_deathEffect 00B6A184 l +CGlueMgr__m_glowEffect 00B6A188 l +CGlueMgr__m_serverAlert 00B6A190 l CGlueMgr__m_patchLastUpdate 00B6A994 l CGlueMgr__m_queueTime 00B6A99C l CGlueMgr__m_queuePosition 00B6A9BC l +CGlueMgr__m_cursorMipBits 00B6A9DC l type="MipBits*" +CGlueMgr__m_simpleTop 00B6AA20 l +CGlueMgr__m_reload 00B6AA24 l CGlueMgr__m_suspended 00B6AA2C l CGlueMgr__m_indleState 00B6AA38 l CGlueMgr__m_estimatedWaitTime 00B6AF44 l CGlueMgr__m_characterInfo 00B6AF4C l +CGlueMgr__m_screenWidgth 00B6AF7C l +CGlueMgr__m_screenHeight 00B6AF80 l +CGlueMgr__m_aspect 00B6AF84 l +CGlueMgr__m_pendingServerAlert 00B6AF88 l +CGlueMgr__m_processServerAlert 00B6AF8C l CGlueMgr__m_numChangedOptionWarnings 00B6AF9C l CGlueMgr__m_showedDisconnect 00B6AFA0 l CGlueMgr__m_surveyDownload 00B6B250 l CGlueMgr__m_patchDownload 00B6B25C l -CGlueMgr__m_ffxActive 00b6a180 l -CGlueMgr__m_deathEffect 00b6a184 l -CGlueMgr__m_glowEffect 00b6a188 l -CGlueMgr__m_serverAlert 00b6a190 l -CGlueMgr__m_simpleTop 00b6aa20 l -CGlueMgr__m_reload 00b6aa24 l -CGlueMgr__m_screenWidgth 00b6af7c l -CGlueMgr__m_screenHeight 00b6af80 l -CGlueMgr__m_aspect 00b6af84 l -CGlueMgr__m_pendingServerAlert 00b6af88 l -CGlueMgr__m_processServerAlert 00b6af8c l \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/gx/func.sym b/profile/3.3.5a-windows-386/symbol/gx/func.sym index 66dae06..65e62d8 100644 --- a/profile/3.3.5a-windows-386/symbol/gx/func.sym +++ b/profile/3.3.5a-windows-386/symbol/gx/func.sym @@ -27,11 +27,11 @@ GxGetMaxFPS 00681780 f end=00681786 GxSetMaxFPSBk 00681790 f end=0068179D type="void __stdcall func(uint32_t maxFPSBk)" GxGetMaxFPSBk 006817A0 f end=006817A6 GxLogOpen 006817C0 f end=006817C5 type="void __stdcall func()" +GxLogClose 006817D0 f end=006817D5 GxLog 006817E0 f end=006817F5 type="int __stdcall func(char* format, ...)" GxTexCreate 00681CB0 f end=00681D87 GxXformSetViewport 00681F60 f end=00682124 type="void __stdcall func(float minX, float maxX, float minY, float maxY, float minZ, float maxZ)" GxScenePresent 00682A00 f end=00682A33 GxDevDestroy 00682B80 f end=00682C35 -GxLogClose 006817D0 f end=006817D5 CGxMonitorModeSort 00689E80 f type="int32_t __stdcall func(void* a, void* b)" GxDefaultApi 008C8DE0 f type="EGxApi __stdcall func()" diff --git a/profile/3.3.5a-windows-386/symbol/gx/label.sym b/profile/3.3.5a-windows-386/symbol/gx/label.sym index cd8e9ef..ea27a33 100644 --- a/profile/3.3.5a-windows-386/symbol/gx/label.sym +++ b/profile/3.3.5a-windows-386/symbol/gx/label.sym @@ -1,2 +1,2 @@ +s_maxFPSBk 00C5DF74 l type="uint32_t" s_maxFPS 00C5DF7C l type="uint32_t" -s_maxFPSBk 00C5DF74 l type="uint32_t" \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/gxbuf/func.sym b/profile/3.3.5a-windows-386/symbol/gxbuf/func.sym index 214ba6e..b89d523 100644 --- a/profile/3.3.5a-windows-386/symbol/gxbuf/func.sym +++ b/profile/3.3.5a-windows-386/symbol/gxbuf/func.sym @@ -1 +1 @@ -TSExplicitList_CGxBuf__LinkToTail 0086E200 f end=0086E25F type="void __thiscall func(TSExplicitList_CGxBuf* this, CGxBuf* ptr)" \ No newline at end of file +TSExplicitList_CGxBuf__LinkToTail 0086E200 f end=0086E25F type="void __thiscall func(TSExplicitList_CGxBuf* this, CGxBuf* ptr)" diff --git a/profile/3.3.5a-windows-386/symbol/gxdevice/func.sym b/profile/3.3.5a-windows-386/symbol/gxdevice/func.sym index 13e8452..004258d 100644 --- a/profile/3.3.5a-windows-386/symbol/gxdevice/func.sym +++ b/profile/3.3.5a-windows-386/symbol/gxdevice/func.sym @@ -1,4 +1,5 @@ CGxDevice__RsPush 00409670 f end=004096CC type="void __thiscall func(CGxDevice* this)" +CGxDevice__CapsAspectRatio 0050F7C0 f end=0050F824 CGxDevice__Caps 00532AF0 f end=00532AF7 type="CGxCaps* __thiscall func(CGxDevice* this)" ; public: class CGxCaps const & __thiscall CGxDevice::Caps(void)const CGxDevice__DeviceCreate 00682CB0 f end=00682CCB type="void __thiscall func(CGxDevice* this, int32_t (*windowProc)(void*, uint32_t, uintptr_t, intptr_t), CGxFormat* format)" CGxDevice__DeviceCreate 00682CD0 f end=00682CF0 type="void __thiscall func(CGxDevice* this, uintptr_t hwnd, CGxFormat* format)" @@ -51,10 +52,10 @@ CGxDevice__ITexMarkAsUpdated 00684900 f end=0068492D type="void __thiscall func( CGxDevice__IShaderLoad 00684970 f end=00684AC8 type="int32_t __thiscall func(CGxDevice* this, CGxShader** shaders, EGxShTarget target, char* a4, char* a5, int32_t permutations)" CGxDevice__ICursorCreate 00684AD0 f end=00684B4A type="void __thiscall func(CGxDevice* this, CGxFormat* format)" CGxDevice__CursorUnlock 00684B50 f end=00684B99 type="void __thiscall func(CGxDevice* this, uint32_t x, uint32_t y)" +CGxDevice__VLog 00684BA0 f end=00684C15 type="void __stdcall func(char* format, va_list args)" CGxDevice__Log 00684C20 f end=00684C3E type="void __stdcall func(char* format, ...)" CGxDevice__Log 00684C40 f end=00684D07 type="void __stdcall func(CGxCaps* caps)" ; CGxDevice::Log(CGxCaps const&) const CGxDevice__Log 00684D10 f end=00684D6C type="void __stdcall func(CGxFormat* format)" -CGxDevice__VLog 00684BA0 f end=00684C15 type="void __stdcall func(char* format, va_list args)" CGxDevice__DeviceOverride 00684FE0 f end=00685036 type="void __thiscall func(CGxDevice* this, EGxOverride override, uint32_t value)" CGxDevice__AddDeviceRestoredCallback 006853B0 f end=006853C6 type="void __thiscall func(CGxDevice* this, DEVICERESTOREDCALLBACK fn)" CGxDevice__RemoveDeviceRestoredCallback 006853D0 f end=0068545C type="int32_t __thiscall func(CGxDevice* this, DEVICERESTOREDCALLBACK fn)" @@ -91,8 +92,8 @@ CGxDevice__AdapterID 00689C10 f end=00689DA2 CGxDevice__AdapterInfer 00689DB0 f end=00689E7B CGxDevice__FindDisplayDevice 00689EA0 f end=00689EF0 type="int32_t __stdcall func(PDISPLAY_DEVICEA device, uint32_t flag)" ; UC CGxDevice__NewD3d 00689EF0 f end=00689F14 type="CGxDevice* __stdcall func()" +CGxDevice__AdapterDesktopMode 00689F20 f end=00689F87 type="int32_t __stdcall func(CGxMonitorMode* mode)" CGxDevice__AdapterMonitorModes 0068A4C0 f end=0068A589 type="void __stdcall func(TSGrowableArray_CGxMonitorMode* modes)" CGxDevice__NewOpenGl 0068BF20 f end=0068BF44 type="CGxDevice* __stdcall func()" CGxDevice__NewD3d9Ex 0068C220 f end=0068C244 type="CGxDevice* __stdcall func()" CGxDevice__ITexWHDStartEnd 006A5EF0 f end=006A5FDF type="void __thiscall func(CGxDevice* this, CGxTex* texId, uint32_t* width, uint32_t* height, uint32_t* baseMip, uint32_t* mipCount)" -CGxDevice__CapsAspectRatio 0050F7C0 f end=0050F824 \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/gxdevice/label.sym b/profile/3.3.5a-windows-386/symbol/gxdevice/label.sym index f840057..4f1a6c5 100644 --- a/profile/3.3.5a-windows-386/symbol/gxdevice/label.sym +++ b/profile/3.3.5a-windows-386/symbol/gxdevice/label.sym @@ -1,7 +1,7 @@ -g_theGxDevicePtr 00C5DF88 l type="CGxDevice*" CGxDevice__vtable 00A2DDC0 l type="CGxDevice__vtable" -CGxDevice__s_shadowConstants 00C5DFE0 l +g_theGxDevicePtr 00C5DF88 l type="CGxDevice*" CGxDevice__s_uiVertexShader 00C5DFDC l -CGxDevice__s_uiPixelShader 00C5FFFC l +CGxDevice__s_shadowConstants 00C5DFE0 l CGxDevice__m_logBytes 00C5FFF4 l type="uint32_t" -CGxDevice__m_log 00C5FFF8 l type="HSLOG" \ No newline at end of file +CGxDevice__m_log 00C5FFF8 l type="HSLOG" +CGxDevice__s_uiPixelShader 00C5FFFC l diff --git a/profile/3.3.5a-windows-386/symbol/gxdeviced3d/func.sym b/profile/3.3.5a-windows-386/symbol/gxdeviced3d/func.sym index aead747..ea23ff4 100644 --- a/profile/3.3.5a-windows-386/symbol/gxdeviced3d/func.sym +++ b/profile/3.3.5a-windows-386/symbol/gxdeviced3d/func.sym @@ -1,3 +1,4 @@ +CGxDeviceD3d__IUnloadD3dLib 0068E140 f end=0068E174 CGxDeviceD3d__ICreateD3dIB 0068E180 f end=0068E1E8 CGxDeviceD3d__ISetPresentParms 0068E250 f end=0068E448 CGxDeviceD3d__DeviceEvictResources 0068E450 f end=0068E49E type="void __thiscall func(CGxDeviceD3d* this)" @@ -16,7 +17,6 @@ CGxDeviceD3d__QueryBegin 0068EA10 f end=0068EA81 type="bool __thiscall func(CGxD CGxDeviceD3d__QueryGetParam 0068EA90 f end=0068EB1D type="bool __thiscall func(CGxDeviceD3d* this, CGxQuery* query, EGxQueryParam param, uint32_t* data)" CGxDeviceD3d__ICreateWindow 0068EBB0 f end=0068ED78 CGxDeviceD3d__ILoadD3dLib 0068ED80 f end=0068EE13 -CGxDeviceD3d__IUnloadD3dLib 0068E140 f end=0068E174 CGxDeviceD3d__ISetCaps 0068EE20 f end=0068F36D CGxDeviceD3d__ICreateD3dDevice 0068F3D0 f end=0068F692 CGxDeviceD3d__DeviceSetRenderTarget 0068F770 f end=0068F8F2 type="void __thiscall func(CGxDeviceD3d* this, EGxBuffer buffer, CGxTex* texture, uint32_t plane)" diff --git a/profile/3.3.5a-windows-386/symbol/gxdeviced3d/label.sym b/profile/3.3.5a-windows-386/symbol/gxdeviced3d/label.sym index 73e97c2..b7c68da 100644 --- a/profile/3.3.5a-windows-386/symbol/gxdeviced3d/label.sym +++ b/profile/3.3.5a-windows-386/symbol/gxdeviced3d/label.sym @@ -1,2 +1,2 @@ -CGxDeviceD3d__vtable 00a2e718 l -isIdent 00C60760 l \ No newline at end of file +CGxDeviceD3d__vtable 00A2E718 l +isIdent 00C60760 l diff --git a/profile/3.3.5a-windows-386/symbol/gxdeviced3d9ex/func.sym b/profile/3.3.5a-windows-386/symbol/gxdeviced3d9ex/func.sym index 6b121fd..8337db4 100644 --- a/profile/3.3.5a-windows-386/symbol/gxdeviced3d9ex/func.sym +++ b/profile/3.3.5a-windows-386/symbol/gxdeviced3d9ex/func.sym @@ -1 +1 @@ -CGxDeviceD3d9Ex__CGxDeviceD3d9Ex 006A1A90 f end=006A1C24 \ No newline at end of file +CGxDeviceD3d9Ex__CGxDeviceD3d9Ex 006A1A90 f end=006A1C24 diff --git a/profile/3.3.5a-windows-386/symbol/gxdeviced3d9ex/label.sym b/profile/3.3.5a-windows-386/symbol/gxdeviced3d9ex/label.sym index b99cac5..f9f056b 100644 --- a/profile/3.3.5a-windows-386/symbol/gxdeviced3d9ex/label.sym +++ b/profile/3.3.5a-windows-386/symbol/gxdeviced3d9ex/label.sym @@ -1 +1 @@ -CGxDeviceD3d9Ex__vtable 00a2f500 l \ No newline at end of file +CGxDeviceD3d9Ex__vtable 00A2F500 l diff --git a/profile/3.3.5a-windows-386/symbol/gxformat/func.sym b/profile/3.3.5a-windows-386/symbol/gxformat/func.sym index 53e8806..4012bc2 100644 --- a/profile/3.3.5a-windows-386/symbol/gxformat/func.sym +++ b/profile/3.3.5a-windows-386/symbol/gxformat/func.sym @@ -1 +1 @@ -CGxFormat__CGxFormat 00681950 f type="CGxFormat* __thiscall func(CGxFormat* this)" \ No newline at end of file +CGxFormat__CGxFormat 00681950 f type="CGxFormat* __thiscall func(CGxFormat* this)" diff --git a/profile/3.3.5a-windows-386/symbol/gxprim/func.sym b/profile/3.3.5a-windows-386/symbol/gxprim/func.sym index eabcebf..d91e92b 100644 --- a/profile/3.3.5a-windows-386/symbol/gxprim/func.sym +++ b/profile/3.3.5a-windows-386/symbol/gxprim/func.sym @@ -1,7 +1,7 @@ +GxDrawLockedElements 00681A60 f end=00681AAB type="void __stdcall func()" GxPrimIndexPtr 00681AB0 f end=00681AFB type="void __stdcall func(uint32_t indexCount, uint16_t* indices)" GxPrimVertexPtr 00681B00 f end=00681B4B type="void __stdcall func(CGxBuf* buf, EGxVertexBufferFormat format)" +GxDrawLockedElements 00682340 f end=0068239E type="void __stdcall func(EGxPrim primType, uint32_t, uint16_t*)" +GxPrimLockIndexPtr 006823A0 f end=006823F8 type="void __stdcall func(EGxPrim primType, uint32_t indexCount, uint16_t* indices)" GxPrimVertexPtr 00682400 f end=00682781 type="void __stdcall func(uint32_t vertexCount, C3Vector* pos, uint32_t posStride, C3Vector* normal, uint32_t normalStride, CImVector* color, uint32_t colorStride, C2Vector* tex0, uint32_t tex0Stride, C2Vector* tex1, uint32_t tex1Stride)" ; this is one of the functions named 'GxPrimVertexPtr' that uses the fixed-function pipeline GxPrimLockVertexPtrs 006828C0 f end=006828FE type="void __stdcall func(uint32_t vertexCount, C3Vector* pos, uint32_t posStride, C3Vector* normal, uint32_t normalStride, CImVector* color, uint32_t colorStride, uint8_t* bone, uint32_t boneStride, C2Vector* tex0, uint32_t tex0Stride, C2Vector* tex1, uint32_t tex1Stride)" -GxPrimLockIndexPtr 006823A0 f end=006823F8 type="void __stdcall func(EGxPrim primType, uint32_t indexCount, uint16_t* indices)" -GxDrawLockedElements 00682340 f end=0068239E type="void __stdcall func(EGxPrim primType, uint32_t, uint16_t*)" -GxDrawLockedElements 00681A60 f end=00681AAB type="void __stdcall func()" \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/gxshader/func.sym b/profile/3.3.5a-windows-386/symbol/gxshader/func.sym index 1df389c..bd85870 100644 --- a/profile/3.3.5a-windows-386/symbol/gxshader/func.sym +++ b/profile/3.3.5a-windows-386/symbol/gxshader/func.sym @@ -1 +1 @@ -CGxShader__Valid 00689A50 f end=00689A6F \ No newline at end of file +CGxShader__Valid 00689A50 f end=00689A6F diff --git a/profile/3.3.5a-windows-386/symbol/gxtexture/func.sym b/profile/3.3.5a-windows-386/symbol/gxtexture/func.sym index 2369ea2..558ed02 100644 --- a/profile/3.3.5a-windows-386/symbol/gxtexture/func.sym +++ b/profile/3.3.5a-windows-386/symbol/gxtexture/func.sym @@ -1 +1 @@ -CGxTexFlags__CGxTexFlags 00681BE0 f end=00681CAB ; UC \ No newline at end of file +CGxTexFlags__CGxTexFlags 00681BE0 f end=00681CAB ; UC diff --git a/profile/3.3.5a-windows-386/symbol/gxu/func.sym b/profile/3.3.5a-windows-386/symbol/gxu/func.sym index 20bacbb..937715d 100644 --- a/profile/3.3.5a-windows-386/symbol/gxu/func.sym +++ b/profile/3.3.5a-windows-386/symbol/gxu/func.sym @@ -1,24 +1,24 @@ GxuFontShutdown 004A8D10 f end=004A8DBF -GxuFontGetOneToOneHeight 006BD020 f end=006BD069 GxuFontAddToBatch 006BCE10 f end=006BCE32 GxuFontRenderBatch 006BCE40 f end=006BCE52 GxuFontGetTextExtent 006BCE60 f end=006BCE98 GxuFontGetMaxCharsWithinWidth 006BCEA0 f end=006BCEE7 +GxuFontGetOneToOneHeight 006BD020 f end=006BD069 GxuFontSetStringPosition 006BD0A0 f end=006BD0BE GxuFontAddShadow 006BD0C0 f end=006BD0DF GxuDetermineQuotedCode 006BD5A0 f end=006BD89D GxuFontDestroyString 006BDFC0 f end=006BE014 -GxuFontDestroyBatch 006BE3B0 f end=006BE3DD -GxuFontUpdate 006BE3E0 f end=006BEE87 GxuFontWindowSizeChanged 006BE020 f end=006BE221 GxuFontCreateString 006BE2B0 f end=006BE390 GxuFontClearBatch 006BE390 f end=006BE3AD +GxuFontDestroyBatch 006BE3B0 f end=006BE3DD +GxuFontUpdate 006BE3E0 f end=006BEE87 GxuFontCreateBatch 006BF160 f end=006BF202 GxuXformCreateProjection_Exact 006BF370 f end=006BF4B2 +GxuXformCreateOrtho 006BF4C0 f end=006BF5A4 type="void __stdcall func(float minX, float maxX, float minY, float maxY, float minZ, float maxZ, C44Matrix* dst)" +GxuXformCreateOrthoDepth 006BF5B0 f end=006BF6CD GxuXformCalcFrustumCorners 006BF6D0 f end=006BFB60 GxuUpdateSingleColorTexture 006BFDA0 f end=006BFDFE GxuXformCreateProjection_SG 006BFE00 f end=006BFE5C GxuXformCreateLookAtSgCompat 006BFE60 f end=006C004D -GxuXformCreateOrtho 006BF4C0 f end=006BF5A4 type="void __stdcall func(float minX, float maxX, float minY, float maxY, float minZ, float maxZ, C44Matrix* dst)" -GxuXformCreateOrthoDepth 006BF5B0 f end=006BF6CD -IGxuFontGlyphRenderGlyph 006C8CC0 f end=006C8E6B \ No newline at end of file +IGxuFontGlyphRenderGlyph 006C8CC0 f end=006C8E6B diff --git a/profile/3.3.5a-windows-386/symbol/handle/func.sym b/profile/3.3.5a-windows-386/symbol/handle/func.sym index 058c1b6..e1070a4 100644 --- a/profile/3.3.5a-windows-386/symbol/handle/func.sym +++ b/profile/3.3.5a-windows-386/symbol/handle/func.sym @@ -1,3 +1,3 @@ HandleClose 0047BF30 f end=0047BF46 HandleCreate 0047BF50 f end=0047BF6B -HandleDuplicate 0047BF70 f end=0047BF82 \ No newline at end of file +HandleDuplicate 0047BF70 f end=0047BF82 diff --git a/profile/3.3.5a-windows-386/symbol/heap/func.sym b/profile/3.3.5a-windows-386/symbol/heap/func.sym index 9a7d203..3b3e39f 100644 --- a/profile/3.3.5a-windows-386/symbol/heap/func.sym +++ b/profile/3.3.5a-windows-386/symbol/heap/func.sym @@ -1,2 +1,2 @@ HeapUsageDestroy 004D27D0 f end=004D27DC -HeapUsageInitialize 004D2A30 f end=004D2A95 \ No newline at end of file +HeapUsageInitialize 004D2A30 f end=004D2A95 diff --git a/profile/3.3.5a-windows-386/symbol/layoutframe/func.sym b/profile/3.3.5a-windows-386/symbol/layoutframe/func.sym index d22adaa..ab29f16 100644 --- a/profile/3.3.5a-windows-386/symbol/layoutframe/func.sym +++ b/profile/3.3.5a-windows-386/symbol/layoutframe/func.sym @@ -1 +1 @@ -CLayoutFrame__ResizePending 004898B0 f end=00489978 \ No newline at end of file +CLayoutFrame__ResizePending 004898B0 f end=00489978 diff --git a/profile/3.3.5a-windows-386/symbol/loadingscreen/func.sym b/profile/3.3.5a-windows-386/symbol/loadingscreen/func.sym index b27728b..7449457 100644 --- a/profile/3.3.5a-windows-386/symbol/loadingscreen/func.sym +++ b/profile/3.3.5a-windows-386/symbol/loadingscreen/func.sym @@ -1,3 +1,3 @@ LoadingScreenSetTip 00407E30 f end=00407E3D LoadingScreenSetScreenTipForRaceData 00407E40 f end=00407E88 -LoadingScreenEnable 0040AB70 f end=0040AD50 \ No newline at end of file +LoadingScreenEnable 0040AB70 f end=0040AD50 diff --git a/profile/3.3.5a-windows-386/symbol/lock/func.sym b/profile/3.3.5a-windows-386/symbol/lock/func.sym index d252e81..f35fa29 100644 --- a/profile/3.3.5a-windows-386/symbol/lock/func.sym +++ b/profile/3.3.5a-windows-386/symbol/lock/func.sym @@ -1,2 +1,2 @@ CSRWLock__Enter 0047D0E0 f end=0047D16A -CSRWLock__Leave 00774660 f end=00774675 \ No newline at end of file +CSRWLock__Leave 00774660 f end=00774675 diff --git a/profile/3.3.5a-windows-386/symbol/lua/func.sym b/profile/3.3.5a-windows-386/symbol/lua/func.sym index 90e98e0..1d219b2 100644 --- a/profile/3.3.5a-windows-386/symbol/lua/func.sym +++ b/profile/3.3.5a-windows-386/symbol/lua/func.sym @@ -19,4 +19,4 @@ _luaG_runerror 00850920 f _luaD_throw 008562E0 f _luaD_precall 00856370 f luaD_call 00856760 f -_luaV_execute 00857CA0 f \ No newline at end of file +_luaV_execute 00857CA0 f diff --git a/profile/3.3.5a-windows-386/symbol/m2/func.sym b/profile/3.3.5a-windows-386/symbol/m2/func.sym index 4f2ee94..b0ff2f4 100644 --- a/profile/3.3.5a-windows-386/symbol/m2/func.sym +++ b/profile/3.3.5a-windows-386/symbol/m2/func.sym @@ -1,3 +1,3 @@ M2GetCacheFlags 0081C0B0 f end=0081C0B6 M2SetCacheFlags 0081C0C0 f end=0081C0CD -M2Initialize 0081C6E0 f end=0081C747 \ No newline at end of file +M2Initialize 0081C6E0 f end=0081C747 diff --git a/profile/3.3.5a-windows-386/symbol/main.sym b/profile/3.3.5a-windows-386/symbol/main.sym index 100dc53..4f3e33e 100644 --- a/profile/3.3.5a-windows-386/symbol/main.sym +++ b/profile/3.3.5a-windows-386/symbol/main.sym @@ -1,22 +1,31 @@ -Blizzard__Memory__Allocate 00401010 f end=00401067 type="void* __stdcall func(uint32_t count)" -Blizzard__Memory__Free 00401030 f end=0040104B type="void __stdcall func(void* ptr)" ; void operator delete(void*) +operator_new 00401010 f end=00401067 type="void* __stdcall func(uint32_t count)" ; void* operator new(size_t) +operator_delete 00401030 f end=0040104B type="void __stdcall func(void* ptr)" ; void operator delete(void*) CDataStore__CDataStore 00401050 f end=0040106E type="CDataStore* __thiscall func(CDataStore* this)" CDataStore__FetchWrite 00401070 f ; protected: int __thiscall CDataStore::FetchWrite(unsigned int,unsigned int,char const *,int) CDataStore__IsRead 004010D0 f ; CDataStore::IsRead() const CDataStore__Reset 004010E0 f ; CDataStore::Reset() CDataStore__Finalize 00401130 f ; CDataStore::Finalize() PatchFiles__qsortpatchfiles 00401200 f ; int __cdecl PatchFiles::qsortpatchfiles(char **, char **) +MovementInit 00401520 f end=004015E0 +AsyncFileReadThreadSleepCallback 00402670 f end=00402684 +AsyncFileReadHandlerTimeoutCallback 00402690 f end=004026A9 SetPaths 00402B20 f end=00402B8B +TimingMethodCallback 00403200 f end=00403294 CCommand_TimingInfo 004032A0 f end=004032FF ClientKillTimer 004033B0 f end=004033B9 +ClientPostClose 004033C0 f end=004033D1 StartupStreaming 00403600 f end=004036A4 type="void __stdcall func(char* manifest@)" CDataStore__destructor 004038A0 f ; CDataStore::~CDataStore() -WowClientDB_StartupStringsRec__Load 004052f0 f end=0040553D +WowClientInit 00404130 f end=004042BC +WowClientDB_StartupStringsRec__Load 004052F0 f end=0040553D PatchFiles__EnumPatchArchives 00405A10 f ; int __cdecl PatchFiles::EnumPatchArchives(OS_FILE_DATA *fileData, PatchOnDemand__Cache *cbParam) PatchFiles__LoadArchives 00405AB0 f ; int __thiscall PatchFiles::LoadArchives(PatchFiles *this, const char *localeCode, char a3) +DestroyHandlerPlayer 004066D0 f end=0040673F ; 00005400C InitializeGlobal 004067F0 f end=00406B67 DestroyGlobal 00406B70 f end=00406C65 CommonMain 00406C70 f end=00406D64 +LoadingScreenSetTip 00407E30 f end=00407E3D +LoadingScreenSetScreenTipForRaceData 00407E40 f end=00407E88 C44Matrix__C44Matrix 00407F40 f end=00407F76 C44Matrix__operator_assign_C44Matrix 00407F80 f end=00407FEA GxXformSetProjection 00408030 f end=00408049 @@ -26,6 +35,15 @@ GxShaderConstantsSet 00408210 f end=0040823B GxRsSet_CGxShader 00408240 f end=00408258 GxRsSet_int32_t 00408BF0 f end=00408C27 CGxDevice__RsPush 00409670 f end=004096CC type="void __thiscall func(CGxDevice* this)" +LoadingScreenEnable 0040AB70 f end=0040AD50 +WowSysMessageOutput__Shutdown 0040B320 f end=0040B38C +WowSysMessageOutput__Enable 0040B390 f end=0040B3B3 +WowSysMessageOutput__Disable 0040B3C0 f end=0040B3D1 +WowSysMessageOutput__Show 0040B3E0 f end=0040B3F1 +WowSysMessageOutput__Hide 0040B400 f end=0040B411 +WowSysMessageOutput__Output 0040B420 f end=0040B53E +WowSysMessageOutput__Paint 0040B540 f end=0040B70E +WowSysMessageOutput__Initialize 0040B710 f end=0040B7CD purecall 0040BAA5 f end=0040BACF nullsub_1 0040D3B5 f SFile__DisableSFileCheckDisk 00421750 f end=00421758 @@ -46,6 +64,7 @@ SFile__Close 00422910 f end=004229AB SFile__FileExistsEx 00424B10 f end=00424B41 SFile__OpenEx 00424B50 f end=00424E44 SFile__Load 00424E80 f end=00424F46 +SFile__LoadFile 00424F50 f end=00424F74 SFile__Open 00424F80 f end=00424F98 Blizzard__Debug__ErrorStackAsText 004270D0 f end=004270E6 Blizzard__File__Close 004270F0 f end=0042712F @@ -74,6 +93,7 @@ System_File__ToNativeAttributes 00427C20 f end=00427C68 System_File__FromNativeAttributes 00427C70 f end=00427CBC System_File__ReadP 00427CC0 f type="int32_t __stdcall func(Blizzard__File__Filesystem* fs, System_File__Stacked__FileParms* parms)" System_File__WriteP 00427D10 f end=00427D5C type="int32_t __stdcall func(Blizzard__File__Filesystem* fs, System_File__Stacked__FileParms* parms)" +Blizzard__Streaming__IsStreamingMode 00428010 f end=0042802B Blizzard__File__IsDirectory 004281D0 f end=004281EB Blizzard__File__IsFile 004281F0 f end=0042820B Blizzard__File__SimpleGlob 00428210 f end=004282F2 type="bool __stdcall func(char* name, char* pattern)" @@ -189,6 +209,7 @@ CmdLineProcess 0047B720 f end=0047B736 type="int32_t __stdcall func()" j_nullsub_3 0047B760 f quicksort 0047B800 f ; void __cdecl quicksort(unsigned int, unsigned int, int, int (__cdecl *)(unsigned int, unsigned int, int), int) ConvertUTF16toUTF8 0047B9E0 f end=0047BB9C type="int __stdcall func(char* dst, uint32_t dstMaxChars, uint16_t* src, uint32_t srcMaxChars, uint32_t* dstChars, uint32_t* srcChars)" +sgetu8 0047BD40 f ; int __cdecl sgetu8(_BYTE *, _DWORD *) HandleClose 0047BF30 f end=0047BF46 HandleCreate 0047BF50 f end=0047BF6B HandleDuplicate 0047BF70 f end=0047BF82 @@ -219,6 +240,7 @@ EventUnregisterEx 0047D450 f end=0047D4B7 EventSetTimer 0047D530 f end=0047D59C EventKillTimer 0047D620 f end=0047D683 EventSetMouseMode 0047D690 f end=0047D6FD +EventPostClose 0047D760 f end=0047D769 EventRegister 0047D770 f end=0047D78D EventUnregister 0047D790 f end=0047D7A9 IEvtSchedulerShutdown 0047D990 f end=0047D9EB @@ -271,8 +293,12 @@ CSimpleRegion__OnColorChanged 00487D70 f type="void __thiscall func(CSimpleRegio CSimpleRegion__CSimpleRegion 004880E0 f type="void __thiscall func(CSimpleRegion* this, CSimpleFrame* frame, uint32_t drawLayer, int32_t show)" CSimpleRegion__destructor 004881D0 f type="void __thiscall func(CSimpleRegion* this)" CScriptRegion__CScriptRegion 00488310 f end=00488348 type="void __thiscall func(CScriptRegion* this)" +CLayoutFrame__ResizePending 004898B0 f end=00489978 +CScriptObject__GetScriptObjectByName 0048B5F0 f end=0048B671 CSimpleFontString_SetFormattedText 0048D800 f end=0048D88B type="int32_t __stdcall func(lua_State* L)" CSimpleFrame__SetFrameAlpha 0048EA10 f end=0048EA32 type="void __thiscall func(CSimpleFrame* this, uint8_t alpha)" +CSimpleFrame__SetFrameScale 0048F580 f end=0048F5CC +CSimpleFrame__SetFrameDepth 0048F5D0 f end=0048F611 GxCapsWindowSizeInScreenCoords 00493BF0 f end=00493C09 CFrameStrata__BuildBatches 00494EE0 f end=00494F2E type="int32_t __thiscall func(CFrameStrata* this, int32_t a2)" CFrameStrata__RenderBatch 00494F30 f end=00494F89 type="void __thiscall func(CFrameStrata* this)" @@ -284,18 +310,42 @@ CBackdropGenerator__Generate 004A29D0 f end=004A2D34 type="void __thiscall func( CBackdropGenerator__CBackdropGenerator 004A2D40 f end=004A2DF9 type="void __thiscall func(CBackdropGenerator* this)" CBackdropGenerator__SetOutput 004A2E00 f end=004A36EE type="void __thiscall func(CBackdropGenerator* this, CSimpleFrame* a1)" FrameScript_GetObjectThis 004A81B0 f end=004A8235 ; FrameScript_GetObjectThis(lua_State*, int) +ScrnSetScreenshotQuality 004A84A0 f end=004A84FF ScrnLayerSetRect 004A8500 f end=004A8522 OnPaint 004A8720 f end=004A8B58 ScrnLayerCreate 004A8BB0 f end=004A8C83 GxuFontShutdown 004A8D10 f end=004A8DBF +ScrnGetStockFont 004A8DC0 f end=004A8DDF +ScrnGetStockFontHeight 004A8DE0 f end=004A8DFF +SysMsgEnable 004B4E50 f end=004B4E5D +SysMsgSetMaxDisplayLevel 004B4E60 f end=004B4E7A +SysMsgSetMinDisplayLevel 004B4E80 f end=004B4E9A +SysMsgGetMinDisplayLevel 004B4EA0 f end=004B4EA6 +SysMsgGetMaxDisplayLevel 004B4EB0 f end=004B4EB6 +SysMsgSetFilter 004B4EC0 f end=004B4ECD +SysMsgGetFilter 004B4ED0 f end=004B4ED6 +SysMsgGetSeverityColor 004B4EE0 f end=004B4F2D +SysMsgInitialize 004B4F30 f end=004B4F59 +TextureEnableAtlas 004B5390 f end=004B539D TextureCalcMipCount 004B5510 f end=004B5549 type="int32_t __stdcall func(uint32_t width, uint32_t height)" TextureGenerateMips 004B5550 f end=004B55D7 +TextureFreeMippedImg 004B55E0 f end=004B55FE LoadPredrawnMips 004B5A00 f end=004B5BA2 +TextureSetCacheSize 004B6580 f end=004B65D5 +TextureCacheUpdate 004B6AE0 f end=004B6C47 TextureAllocMippedImg 004B7220 f end=004B72F4 type="MipBits* __stdcall func(PIXEL_FORMAT format, uint32_t width, uint32_t height)" TextureFreeMippedImg 004B7300 f end=004B73D9 type="void func(MipBits* image)" LoadTgaMips 004B78A0 f end=004B7AA0 type="int32_t __usercall func@(char* ext@, char* filename, int32_t a3, MipBits** mipBits, uint32_t* width, uint32_t* height, PIXEL_FORMAT* texFormat, int32_t* isOpaque@, uint32_t* alphaBits, PIXEL_FORMAT* dataFormat)" +TextureInitialize 004B7F80 f end=004B7FF7 LoadBlpMips 004B8070 f end=004B81CE type="int32_t __usercall func@(char* ext@, char* filename@, int32_t a3, MipBits** mipBits, uint32_t* width, uint32_t* height, uint32_t* isOpaque, uint32_t* alphaBits, PIXEL_FORMAT* dataFormat)" TextureLoadImage 004B81D0 f end=004B8385 type="MipBits* func(const char* filename, uint32_t* width, uint32_t* height, PIXEL_FORMAT* dataFormat, int32_t* isOpaque, CStatus* status, uint32_t* alphaBits, int32_t a8)" +AsyncFileReadProgressCallback 004B9910 f end=004B9926 +AsyncFileReadIngameProgressCallback 004B9930 f end=004B9946 +AsyncFileReadPollHandler 004B9B20 f end=004B9BF6 +AsyncFileReadAddPollHandler 004B9C60 f end=004B9D15 +AsyncFileReadAddStatusHandler 004B9D20 f end=004B9DD5 +AsyncFileReadInitialize 004BAA40 f end=004BAB45 +AsyncFileReadIsReading 004BAD80 f end=004BAE09 TextBlockGetFontPtr 004BD9D0 f end=004BD9EA type="CGxFont* __stdcall func(HTEXTFONT font)" TextBlockCreate 004BDAA0 f end=004BDBE4 type="HTEXTBLOCK __stdcall func(HTEXTFONT font, char* text, CImVector* color, C3Vector* pos, float fontHeight, float blockWidth, float blockHeight, uint32_t flags, float charSpacing, float lineSpacing)" TextBlockSetStringPos 004BDBF0 f end=004BDC4C type="void __stdcall func(HTEXTBLOCK stringHandle, C2Vector* pos)" @@ -329,12 +379,22 @@ C3Vector__Normalize_1 004C3420 f C3Vector__Normalize_2 004C3600 f TSGrowableArray_C3Vector__SetCount 004C4B80 f end=004C4C75 type="void __thiscall func(TSGrowableArray_C3Vector* this, uint32_t count)" C33Matrix__operator_assign_C33Matrix 004C51B0 f +SE2__StopSound 004C6390 f end=004C6410 +SE2__PlaySoundKit 004C6A40 f end=004C713B +SI2__SetWeatherKitID 004C8610 f end=004C8622 +SI2__StopAllMusic 004C93B0 f end=004C941B +HeapUsageDestroy 004D27D0 f end=004D27DC +HeapUsageInitialize 004D2A30 f end=004D2A95 +CGlueMgr__InitializeFFX 004D7D20 f end=004D7D93 CGlueMgr__UpdateWaitQueue 004D7DA0 f end=004D7E3A CGlueMgr__SetCurrentAccount 004D7F60 f end=004D7F82 CGlueMgr__LoginEnterPIN 004D7F90 f end=004D7FAD CGlueMgr__LoginEnterMatrix 004D7FB0 f end=004D7FCD +CGlueMgr__LoginCommitMatrix 004D7FF0 f end=004D802A CGlueMgr__LoginGetMatrixCoordinate 004D8030 f end=004D8071 +CGlueMgr__LoginEnterToken 004D8080 f end=004D809D CGlueMgr__DisplayLoginStatus 004D80C0 f end=004D8200 +CGlueMgr__OnRealmSplitMsg 004D8200 f end=004D826A CGlueMgr__SetScreen 004D82A0 f end=004D82B8 CGlueMgr__UpdateCurrentScreen 004D82C0 f end=004D834D CGlueMgr__QuitGame 004D8350 f end=004D8359 @@ -348,6 +408,8 @@ CGlueMgr__ChangeRealm 004D8BD0 f end=004D8C56 CGlueMgr__CreateCharacter 004D8C60 f end=004D8CB8 CGlueMgr__DeleteCharacter 004D8CC0 f end=004D8D20 CGlueMgr__RenameCharacter 004D8D20 f end=004D8E0B +CGlueMgr__OnCharCustomizeResult 004D9190 f end=004D92C7 +CGlueMgr__OnCharFactionChangeResult 004D92D0 f end=004D9480 CGlueMgr__OnKickReasonMsg 004D9500 f end=004D9582 CGlueMgr__GetCharacterList 004D95C0 f end=004D960D CGlueMgr__GetRealmList 004D9610 f end=004D9656 @@ -356,6 +418,8 @@ CGlueMgr__StatusDialogClick 004D98D0 f end=004D99D4 CGlueMgr__CancelLogin 004D99E0 f end=004D99EF CGlueMgr__DeclineCharacter 004D9A40 f end=004D9BCE CGlueMgr__EnterWorld 004D9BD0 f end=004D9F4F +CGlueMgr__AddChangedOptionWarning 004D9F50 f end=004D9FA5 +CGlueMgr__OnCharRenameResult 004DA090 f end=004DA189 CGlueMgr__AcceptChangedOptionWarnings 004DA240 f end=004DA274 CGlueMgr__LogConnectionStatus 004DA3D0 f end=004DA4A8 CGlueMgr__SetLoginStateAndResult 004DA4B0 f end=004DA50D @@ -368,14 +432,60 @@ Script_GetLocale 004DBFD0 f end=004DBFF3 ; thanks namreeb :^) Script_IsWindowsClient 004DCE40 f end=004DCE5E Script_RestartGx 004DD400 f end=004DD412 Script_RestoreVideoStereoDefaults 004DD420 f end=004DD42D +GlueScriptEventsUnregisterFunctions 004DD5B0 f end=004DD5CF Script_GetMovieResolution 004DD610 f end=004DD671 Script_GetExpansionLevel 004DDC20 f end=004DDC51 +RealmListRegisterScriptFunctions 004DE4D0 f end=004DE4F3 +RealmListUnregisterScriptFunctions 004DE500 f end=004DE51C +CRealmList__Initialize 004DF580 f end=004DF66C +CharacterCreateUnregisterScriptFunctions 004DFD30 f end=004DFD4F +CharSelectRegisterScriptFunctions 004E2570 f end=004E2593 +CharSelectUnregisterScriptFunctions 004E25A0 f end=004E25BC +CCharacterSelection__ClearCharacterList 004E47F0 f end=004E4877 CGlueMgr__SurveyDownloadFeed 004E4880 f end=004E489E +CGlueMgr__SurveySendResults 004E48A0 f end=004E48D4 +CGlueMgr__SurveyDownloadStart 004E48E0 f end=004E4A38 CGlueMgr__SurveyDownloadCancel 004E4A40 f end=004E4A9E +CGlueMgr__SurveyExecute 004E4B30 f end=004E4E75 +CGlueMgr__PatchDownloadFeed 004E51C0 f end=004E51DE +CGlueMgr__GetPatchFolder 004E51E0 f end=004E51F8 +CGlueMgr__PatchDownloadStart 004E5200 f end=004E53A0 CGlueMgr__PatchDownloadCancel 004E53A0 f end=004E541F CGlueMgr__PatchFailed 004E5420 f end=004E54C8 CGlueMgr__PatchDownloadIdle 004E54D0 f end=004E5722 +CGWorldFrame__GetActiveCamera 004F5960 f end=004F5973 +CGWorldFrame__SendObjectTrackEvent 004F5980 f end=004F59E2 +CGWorldFrame__CursorTrackObject 004F59F0 f end=004F5A52 +CGWorldFrame__OnFrameSizeChanged 004F5A90 f end=004F5C10 +CGWorldFrame__OnLayerCursorExit 004F5C10 f end=004F5C78 +CGWorldFrame__SetNamePlateUpdate 004F5D80 f end=004F5D88 +CGWorldFrame__GetCameraFacing 004F6680 f end=004F66B4 +CGWorldFrame__OnLayerTrackTerrain 004F66C0 f end=004F6961 +CGWorldFrame__OnLayerMouseDown 004F6C10 f end=004F6C89 +CGWorldFrame__GetScreenCoordinates 004F6D20 f end=004F6F4C +CGWorldFrame__SetCameraTarget 004F6F50 f end=004F6F85 +CGWorldFrame__SetScreenEffect 004F7020 f end=004F716A TSList__LinkNode 004F71A0 f end=004F724D +CGWorldFrame__IsLegalSelection 004F7530 f end=004F75B9 +CGWorldFrame__GetHitTestFilterFlags 004F7650 f end=004F77BA +CGWorldFrame__PerformDefaultAction 004F7880 f end=004F7A3B +CGWorldFrame__CursorTrackUnit 004F7A50 f end=004F7FE7 +CGWorldFrame__CursorTrackCorpse 004F8000 f end=004F8182 +CGWorldFrame__OnLayerTrackObject 004F8190 f end=004F837C +CGWorldFrame__UpdateScreenEffect 004F88B0 f end=004F89D1 +CGWorldFrame__OnWorldRender 004F8EA0 f end=004F9298 +CGWorldFrame__MoveToFreeList 004F9310 f end=004F940F +CGWorldFrame__FindClosestModel 004F9550 f end=004F992E +CGWorldFrame__HitTest 004F9930 f end=004F9D94 +CGWorldFrame__HitTestPoint 004F9DA0 f end=004F9F6B +CGWorldFrame__ObjectEnumProc 004F9F70 f end=004FA040 +CGWorldFrame__OnLayerUpdate 004FA040 f end=004FA371 +CGWorldFrame__SetupDefaultAction 004FA570 f end=004FA5CE +CGWorldFrame__UnitClear 004FA5D0 f end=004FA5EF +CGWorldFrame__OnWorldUpdate 004FA5F0 f end=004FABC5 +CGWorldFrame__CGWorldFrame_Ctor 004FABD0 f end=004FAF5E +CGWorldFrame__RenderWorld 004FAF90 f end=004FB079 +CGWorldFrame__OnFrameRender 004FB080 f end=004FB0AD Script_LoggingChat 004FBD00 f end=004FBD13 Script_LoggingCombat 004FBD20 f end=004FBD36 Script_GetActiveVoiceChannel 004FBD40 f end=004FBD90 @@ -464,6 +574,7 @@ Script_JoinPermanentChannel 0050DAC0 f end=0050DAD4 Script_ListChannels 0050DAE0 f end=0050DC01 Script_SetSavedInstanceExtend 0050DC10 f end=0050DDD5 Script_ComplainChat 0050ED00 f end=0050EDC5 +CGxDevice__CapsAspectRatio 0050F7C0 f end=0050F824 Script_FrameXML_Debug 0050F830 f end=0050F884 Script_GetBuildInfo 0050F890 f end=0050F8E7 Script_SetLayoutMode 0050F8F0 f end=0050F943 @@ -545,12 +656,14 @@ Script_GetThreatStatusColor 00511FE0 f end=0051208A Script_ConsoleAddMessage 00512090 f end=005120DD CGGameUI__OpenGuildInvite 00512570 f end=0051258F CGGameUI__IsPartyMember 00512A00 f end=00512A2C +CGGameUI__UnitModelUpdate 00512B50 f end=00512B59 CGGameUI__HandleScreenshot 00512E20 f end=00512E52 CGGameUI__CloseInteraction 00512E60 f end=005130CF CGGameUI__SetMinimapZoneText 005134C0 f end=00513530 CGGameUI__ShowBlockedActionFeedback 00513530 f end=00513640 CGGameUI__ShowBlockedFrameFeedback 00513640 f end=00513653 CGGameUI__GetCursorItem 00513660 f end=0051367A +CGGameUI__GetCursorItem 00513680 f end=005136B8 CGGameUI__GetCursorSpell 005136C0 f end=005136C6 CGGameUI__GetCursorVirtualItem 005136D0 f end=005136D6 CGGameUI__GetCursorVirtualItem 005136E0 f end=005136FA @@ -728,12 +841,14 @@ Script_GameMovieFinished 0051D590 f end=0051D598 Script_GetAllowLowLevelRaid 0051D5A0 f end=0051D5FC Script_SetAllowLowLevelRaid 0051D600 f end=0051D706 CGGameUI__StopCinematicInternal 0051D7C0 f end=0051D95B +CGGameUI__UpdateCorpseDistance 0051F5C0 f end=0051F684 CGGameUI__HandleObjectTrackChange 0051F790 f end=0051F9C3 CGGameUI__FilterMouseDown 0051FA50 f end=0051FAFF CGGameUI__HandleMouseDown 0051FB00 f end=0051FB5E CGGameUI__HandleSpriteTrack 0051FB60 f end=0051FB7F CGGameUI__HandleDisplaySizeChanged 0051FB80 f end=0051FCD1 CGGameUI__SetInteractTarget 0051FCE0 f end=0051FDD9 +CGGameUI__UpdateInteractTarget 0051FDE0 f end=0051FF1B CGGameUI__SetFocusTarget 0051FF20 f end=0051FFD5 CGGameUI__CanInspect 00520410 f end=005204B6 CGGameUI__NewZoneFeedback 005204C0 f end=005206DE @@ -743,6 +858,7 @@ CGGameUI__SetCursorPetAction 00520A80 f end=00520BAF CGGameUI__SetCursorPet 00520C60 f end=00520D29 CGGameUI__SetCursorVirtualItem 00520D30 f end=00520DB3 CGGameUI__SetCursorEquipmentSet 00520DC0 f end=00520E38 +CGGameUI__RegisterFrameFactories 00521040 f end=005210CF CGGameUI__DisplayError 005216F0 f end=005218AD CGGameUI__AutoMouseOver 005220B0 f end=0052217B Script_ReloadUI 005222E0 f end=00522314 @@ -773,6 +889,8 @@ Script_EndRefund 00523370 f end=005233C5 Script_EndBoundTradeable 005233D0 f end=0052349D CGGameUI__CloseLoot 00523640 f end=005237D2 CGGameUI__GetCorpseLocation 00523E80 f end=00523EA7 +CGGameUI__SetAreaSpiritHealer 00523EB0 f end=00523F74 +CGGameUI__UpdateAreaSpiritHealerDistance 00524010 f end=005240D7 CGGameUI__HandleDisplaySizeChanged 005240E0 f end=005241A7 CGGameUI__ClearTarget 005241B0 f end=0052434D CGGameUI__BreakTarget 00524350 f end=0052443C @@ -780,6 +898,7 @@ Script_StopCinematic 00524980 f end=005249B7 CGGameUI__AcceptAreaSpiritHeal 00524B60 f end=00524BEE CGGameUI__Target 00524BF0 f end=00524FB6 CGGameUI__TargetNearestUnit 00524FC0 f end=005252C4 +CGGameUI__TargetDirection 005252D0 f end=00525526 Script_TargetUnit 00525A30 f end=00525A8B Script_TargetNearest 00525A90 f end=00525ACB Script_TargetNearestEnemy 00525AD0 f end=00525B0B @@ -802,14 +921,17 @@ Script_TargetTotem 005262E0 f end=00526362 CGGameUI__StartCinematicCamera 00526370 f end=005264ED CGGameUI__OnTerrainClick 00527360 f end=005274E7 CGGameUI__HandleTerrainClick 00527830 f end=00527863 +CGGameUI__HandleWorldClick 005278C0 f end=00527A2A Script_InteractUnit 00527F00 f end=00527FD4 CGGameUI__EnterWorld 00528010 f end=005284D0 Script_LoadAddOn 00528920 f end=00528AE1 +CGGameUI__StartCinematic 00528AF0 f end=00528C2E CGGameUI__LeaveWorld 00528C30 f end=00528EF9 CGGameUI__Shutdown 00528F00 f end=0052915A CGGameUI__ShutdownGame 00529160 f end=00529541 CGGameUI__Initialize 0052A980 f end=0052AEC6 CGGameUI__RegisterSavedVariable 0052AED0 f end=0052AF3F +CGGameUI__Idle 0052AF40 f end=0052B36B Script_RegisterForSave 0052B470 f end=0052B4D4 Script_RegisterForSavePerCharacter 0052B4E0 f end=0052B544 CGGameUI__InitializeGame 0052B550 f end=0052BADA @@ -821,6 +943,7 @@ Script_GetLootThreshold 0052C2A0 f end=0052C2C2 Script_GetOptOutOfLoot 0052C2D0 f end=0052C30A Script_IsPartyLFG 0052C310 f end=0052C34A Script_HasLFGRestrictions 0052C350 f end=0052C36C +CGPartyInfo__CheckClearLFGSlot 0052CC30 f end=0052CCD0 Script_IsPartyLeader 0052CCD0 f end=0052CD26 Script_IsRealPartyLeader 0052CD30 f end=0052CD86 Script_GetLootMethod 0052CD90 f end=0052CEDD @@ -839,6 +962,7 @@ Script_CanAlterSkin 0052E4F0 f end=0052E512 Script_GetBarberShopStyleInfo 0052E850 f end=0052E9A6 Script_GetHairCustomization 0052E9B0 f end=0052E9CC Script_GetFacialHairCustomization 0052E9D0 f end=0052E9EC +CGBarberShop__DisableBarberShop 0052E9F0 f end=0052EB91 Script_GetBarberShopTotalCost 0052ED60 f end=0052ED7C Script_CancelBarberShop 0052ED80 f end=0052ED88 Script_ApplyBarberShopStyle 0052EEF0 f end=0052EEF8 @@ -1048,6 +1172,8 @@ Script_SetGamma 0054EA90 f end=0054EB0B Script_GetTerrainMip 0054EB10 f end=0054EB3B Script_SetTerrainMip 0054EB40 f end=0054EBBA Script_IsPlayerResolutionAvailable 0054EBC0 f end=0054EBFB +CGVideoOptions__RegisterScriptFunctions 0054EC00 f end=0054EC23 +CGVideoOptions__UnregisterScriptFunction 0054EC30 f end=0054EC4C Script_SetupFullscreenScale 0054ED80 f end=0054EE58 Script_GetVideoCaps 0054EE60 f end=0054EF87 Script_IsStereoVideoAvailable 0054EF90 f end=0054EFD5 @@ -1059,6 +1185,8 @@ Script_GetRefreshRates 0054F690 f end=0054F81D Script_GetMultisampleFormats 0054F820 f end=0054F8AA Script_GetCurrentMultisampleFormat 0054F8B0 f end=0054F97B Script_SetMultisampleFormat 0054F980 f end=0054FB0B +AccountMsg_RegisterScriptFunctions 00550080 f end=005500A3 +AccountMsg_UnregisterScriptFunctions 005500B0 f end=005500CC Script_KBSetup_BeginLoading 00551720 f end=00551759 Script_KBSetup_IsLoaded 00551760 f end=00551783 Script_KBSetup_GetLanguageCount 00551790 f end=005517D0 @@ -2097,6 +2225,7 @@ Script_OffhandHasWeapon 005EAC10 f end=005EAC81 Script_RequestInspectHonorData 005EAC90 f end=005EAC98 Script_GetWeaponEnchantInfo 005EACA0 f end=005EAE8C Script_HasWandEquipped 005EAE90 f end=005EAF27 +DisableFadingScreen 005ED080 f end=005ED116 nullsub_3 005EEB70 f end=005EEB71 ; SErrDisplayAppFatal resolves to this in release mode? Script_VehicleAimGetNormPower 005F9550 f end=005F9572 Script_IsMouselooking 005F9DD0 f end=005F9E0F @@ -2168,6 +2297,8 @@ Script_SetView 006039B0 f end=00603A0F Script_ResetView 00604C80 f end=00604CD3 Script_NextView 00604CE0 f end=00604D0A Script_PrevView 00604D10 f end=00604D3A +CGCamera__SetTarget 006066E0 f end=00606967 +CSimpleCamera__SetFacing 00607BD0 f end=00607BF6 Script_GetTime 006081F0 f end=0060822A Script_GetGameTime 00608230 f end=00608266 Script_ConsoleExec 00608270 f end=006082B6 @@ -2176,6 +2307,8 @@ Script_GetWaterDetail 00608560 f end=0060857E Script_CanSwitchVehicleSeat 00608580 f end=006085C1 Script_GetItemStats 00608690 f end=00608760 Script_GetItemStatDelta 00608760 f end=0060887A +SystemRegisterFunctions 0060A120 f end=0060A143 +SystemUnregisterFunctions 0060A150 f end=0060A16C Script_IsLoggedIn 0060A450 f end=0060A48A Script_GetPlayerFacing 0060A490 f end=0060A50A Script_FillLocalizedClassList 0060A510 f end=0060A5CE @@ -2344,7 +2477,32 @@ CursorInitialize 006163B0 f end=006164A5 CursorSetMode 00616800 f end=0061682E type="void __stdcall func(CURSORMODE mode)" GxXformPush_EGxXform_C44Matrix 00616AD0 f end=00616AE8 TSGrowableArray_CImVector__SetCount 00616CA0 f end=00616D07 type="void __thiscall func(TSGrowableArray_CImVector* this, uint32_t count)" +NetClient__Initialize 00631D30 f end=00631E01 ; 00005400 +NetClient__ConnectInternal 00631E10 f end=00631E92 ; NetClient::ConnectInternal(char const*, unsigned short) +NetClient__Disconnect 00631EA0 f end=00631F69 ; 00005400 +NetClient__SetLoginData 00631F70 f end=00631F88 ; NetClient::SetLoginData(LoginData*) +NetClient__SetMessageHandler 00631FA0 f end=00631FBE ; void __thiscall NetClient::SetMessageHandler(enum NETMESSAGE, int (__fastcall *)(void *, enum NETMESSAGE, unsigned long, class CDataStore *), void *) +NetClient__ProcessMessage 00631FE0 f end=00632048 ; NetClient::ProcessMessage(unsigned long, CDataStore*, int) nullsub_4 00632050 f +NetClient__WCConnected 00632060 f end=006320D0 ; NetClient::WCConnected(WowConnection*, WowConnection*, unsigned long, NETCONNADDR const*) +NetClient__GetNetStats 006320D0 f end=0063219E ; void __thiscall NetClient::GetNetStats(float &, float &, unsigned long &) +NetClient__PollEventQueue 006321A0 f end=006321AB ; 00005400 +NetClient__Destroy 006322A0 f end=00632381 ; 00005400 +NetClient__DelayedDelete 00632390 f end=006323BD ; 00005400 +NetClient__Connect 006323C0 f end=0063245C ; NetClient::Connect(char const*) +NetClient__HandleData 00632460 f end=00632501 ; NetClient::HandleData(unsigned long, void*, int) +NetClient__HandleConnect 00632510 f end=0063253C ; 00005400 +NetClient__HandleDisconnect 00632540 f end=00632581 ; 00005400 +NetClient__PongHandler 006325C0 f end=0063268A ; void __thiscall NetClient::PongHandler(class CDataStore *) +NetClient__WCDisconnected 006326D0 f end=00632728 ; NetClient::WCDisconnected(WowConnection*, unsigned long, NETCONNADDR const*) +NetClient__AuthChallengeHandler 00632730 f end=00632965 ; 00005410 +NetClient__NetClient 00632A40 f end=00632B43 ; 00005410 +NetClient__Send 00632B50 f end=00632C02 ; NetClient::Send(CDataStore*) +NetClient__WCCantConnect 00632C10 f end=00632CCD ; NetClient::WCCantConnect(WowConnection*, unsigned long, NETCONNADDR const*) +NetClient__Ping 00632CD0 f end=00632DA8 ; NetClient::Ping(CONNECTION_ID) +NetClient__HandleIdle 00632DB0 f end=00632DFD ; 00005400 +NetClient__RedirectHandler 00632E00 f end=00633015 ; 00005410 +NetClient__WCMessageReady 00633330 f end=0063343D ; NetClient::WCMessageReady(WowConnection*, unsigned long, CDataStore*) StaticDBLoadAll 006337D0 f end=0063478E ; 00005400 ClientDBShutdown 00634C60 f end=00634CBB ; 00005400 ClientDBInitialize 00634E00 f end=00634E62 ; ClientDBInitialize() @@ -2480,6 +2638,7 @@ CGxDevice__AdapterInfer 00689DB0 f end=00689E7B CGxMonitorModeSort 00689E80 f type="int32_t __stdcall func(void* a, void* b)" CGxDevice__FindDisplayDevice 00689EA0 f end=00689EF0 type="int32_t __stdcall func(PDISPLAY_DEVICEA device, uint32_t flag)" ; UC CGxDevice__NewD3d 00689EF0 f end=00689F14 type="CGxDevice* __stdcall func()" +CGxDevice__AdapterDesktopMode 00689F20 f end=00689F87 type="int32_t __stdcall func(CGxMonitorMode* mode)" TSGrowableArray_CGxMonitorMode__New 0068A090 f end=0068A0ED type="CGxMonitorMode* __thiscall func(TSGrowableArray_CGxMonitorMode* this)" TSGrowableArray_CGxMonitorMode__SetCount 0068A0F0 f end=0068A165 type="void __thiscall func(TSGrowableArray_CGxMonitorMode* this, uint32_t count)" CGxDevice__AdapterMonitorModes 0068A4C0 f end=0068A589 type="void __stdcall func(TSGrowableArray_CGxMonitorMode* modes)" @@ -2618,9 +2777,22 @@ CBLPFile__DecompPal 006AF810 f end=006AF984 type="int32_t __thiscall func(CBLPFi CBLPFile__Lock2 006AFCE0 f end=006AFF06 type="int32_t __thiscall func(CBLPFile* this, char* fileName, PIXEL_FORMAT format, uint32_t mipLevel, unsigned char* data, uint32_t* stride)" CBLPFile__Open 006AFF10 f end=006AFFCF type="int32_t __thiscall func(CBLPFile* this, char* filename)" CBLPFile__LockChain2 006AFFD0 f end=006B012E type="int32_t __thiscall func(CBLPFile* this, char* fileName, PIXEL_FORMAT format, MipBits** images, uint32_t mipLevel, int32_t a6)" +ClientServices__LoadCDKey 006B0190 f end=006B0246 +ClientConnection__Cleanup 006B0850 f end=006B086B +ClientServices__Disconnect 006B0940 f end=006B095E nullsub_154 006B0960 f ClientServices__Connection 006B0970 f end=006B098A ClientServices__LoginConnection 006B0990 f end=006B0996 +ClientServices__EnterPIN 006B09A0 f end=006B09D3 +ClientServices__EnterMatrix 006B09E0 f end=006B0A0F +ClientServices__CommitMatrix 006B0A40 f end=006B0A66 +ClientServices__FinalizeMatrix 006B0A70 f end=006B0A96 +ClientServices__EnterToken 006B0AA0 f end=006B0ACF +ClientServices__FileAccept 006B0AD0 f end=006B0AF5 +ClientServices__StartDownload 006B0B00 f end=006B0B08 +ClientServices__SendSurveyData 006B0B10 f end=006B0B2A +ClientServices__SendSurveyFailed 006B0B30 f end=006B0B3D +ClientServices__GetSurveyId 006B0B40 f end=006B0B4D ClientServices__SendOnConnection 006B0B50 f end=006B0B79 ClientServices__SetMessageHandler 006B0B80 f end=006B0BB5 ClientServices_ClearMessageHandler 006B0BC0 f end=006B0BE9 @@ -2628,12 +2800,39 @@ ClientServices__InitLoginServerCVars 006B0BF0 f end=006B0DB7 ClientServices__GetSelectedRealmName 006B0DC0 f end=006B0DF0 ClientServices__GetRealmList 006B0E10 f end=006B0EC2 ClientServices__GetSelectedRealm 006B0ED0 f end=006B0EDF +ClientServices__FileData 006B0EE0 f end=006B0EF7 +ClientServices__LaunchURL 006B0F30 f end=006B0F39 ClientServices__GetErrorToken 006B0F40 f end=006B0F5E ClientServices__ValidDisconnect 006B0F60 f end=006B0F8F +ClientServices__CharacterValidateName 006B0F90 f end=006B0FB5 +ClientServices__CharacterValidateDeclension 006B0FC0 f end=006B0FDF +ClientServices__SetAccountName 006B0FE0 f end=006B100E +ClientServices__GetAccountName 006B1010 f end=006B101F +ClientServices__SetCharacterInfo 006B1020 f end=006B104E +ClientServices__GetCharacterInfo 006B1050 f end=006B1056 +ClientServices__GetCharacterName 006B1060 f end=006B106F +ClientServices__GetCharacterRace 006B1070 f end=006B1076 +ClientServices__GetCharacterClass 006B1080 f end=006B1086 +ClientServices__GetCharacterSex 006B1090 f end=006B1096 +ClientServices__GetCharacterLevel 006B10A0 f end=006B10A6 +ClientServices__PollStatus 006B1100 f end=006B11FC +ClientConnection__Cancel 006B1200 f end=006B1252 +ClientServices__RequestCharacterCreate 006B1620 f end=006B1785 +ClientServices__CharacterSetInGame 006B1840 f end=006B18B8 +ClientServices__CharacterLogout 006B1930 f end=006B1A02 +ClientServices__RequestCharacterDelete 006B1A70 f end=006B1B62 nullsub_151 006B1B80 f nullsub_6 006B1B90 f nullsub_155 006B1BA0 f +ClientServices__GetClientStamp 006B1C70 f end=006B1DFE +ClientServices__LoginServerStatus 006B1E00 f end=006B1EE9 +ClientServices__CharacterForceLogout 006B21F0 f end=006B21FA +ClientServices__Initialize 006B2200 f end=006B22A0 ClientServices__Report 006B22A0 f end=006B2A36 +ClientServices__SetSelectedRealmInfo 006B2CF0 f end=006B2DED +ClientServices__SelectRealm 006B2DF0 f end=006B2E2C +ClientServices__GetRealmInfoByIndex 006B2EB0 f end=006B2F12 +ClientServices__JoinRealmResult 006B3070 f end=006B318F Script_GetNumWhoResults 006B33D0 f end=006B3428 Script_SetWhoToUI 006B3430 f end=006B344C Script_GetNumFriends 006B4060 f end=006B412B @@ -2665,6 +2864,7 @@ Script_RemoveFriend 006B7BD0 f end=006B7C8A Script_SetFriendNotes 006B7C90 f end=006B7D6F Script_DelIgnore 006B7D70 f end=006B7D9B Script_DelMute 006B7DA0 f end=006B7DCB +AccountDataInitializeBasicSystem 006B9900 f end=006B996D GxuFontAddToBatch 006BCE10 f end=006BCE32 GxuFontRenderBatch 006BCE40 f end=006BCE52 GxuFontGetTextExtent 006BCE60 f end=006BCE98 @@ -2688,6 +2888,11 @@ GxuUpdateSingleColorTexture 006BFDA0 f end=006BFDFE GxuXformCreateProjection_SG 006BFE00 f end=006BFE5C GxuXformCreateLookAtSgCompat 006BFE60 f end=006C004D IGxuFontGlyphRenderGlyph 006C8CC0 f end=006C8E6B +MovementDestroy 006F0C30 f end=006F0C6E +CEffect__Destroy 006FA3C0 f end=006FA444 +CloseAllLootRolls 006FAFD0 f end=006FB0FD +CGUnit_C__StopMissileTrajectoryTargeting 006FBF00 f end=006FBF7B +CMissile__ClearInFlightMissiles 00703770 f end=00703802 nullsub_152 00743550 f nullsub_153 00743560 f Script_CombatTextSetActiveUnit 0074D580 f end=0074D5A8 @@ -2714,6 +2919,8 @@ CONSOLELINE__Delete 00763B10 f end=00763B40 type="void __thiscall func(CONSOLELI CONSOLELINE__Up 00763B40 f end=00763B83 type="void __thiscall func(CONSOLELINE* this)" ; static void CONSOLELINE::Up() CONSOLELINE__Down 00763B90 f end=00763BD6 type="void __thiscall func(CONSOLELINE* this)" ; static void CONSOLELINE::Down() OnKeyUp 00763BE0 f end=00763C0A type="int32_t __stdcall func(EVENT_DATA_KEY* data, void* param)" +GetConsoleMessage 00763C20 f end=00763C26 +SetConsoleMessage 00763C30 f end=00763C3D ConsolePostClose 00763C50 f end=00763C5D type="void __stdcall func()" EventCloseCallback 00763D60 f end=00763D71 type="int32_t __stdcall func(void* param)" DrawBackground 00763DF0 f end=00764039 type="void __stdcall func()" @@ -2729,7 +2936,8 @@ OnChar 00764990 f end=00764A03 type="int32_t __stdcall func(EVENT_DATA_CHAR* dat OnMouseDown 00764A10 f end=00764B88 type="int32_t __stdcall func(EVENT_DATA_MOUSE* data, void* param)" OnKeyDownRepeat 00764B90 f end=00764E4F type="int32_t __stdcall func(EVENT_DATA_KEY* data, void* param)" ConsoleWrite 00765270 f end=00765359 type="void __stdcall func(char* str, COLOR_T color)" -ConsoleWriteA 007653B0 f end=00765400 type="void __stdcall func(char* str, COLOR_T color, ...)" +ConsoleWriteA 00765360 f end=007653AD type="void __stdcall func(char* format, COLOR_T color, ...)" +ConsolePrintf 007653B0 f end=00765400 type="void __stdcall func(char* str,...)" ConsoleCommandExecute 007658A0 f end=007659BF type="void __stdcall func(char* commandLine, int32_t addToHistory)" OnIdle 007659C0 f end=00765AE5 type="int32_t __stdcall func(EVENT_DATA_IDLE* data,void* param)" OnKeyDown 00765AF0 f end=00765FB2 type="int32_t __stdcall func(EVENT_DATA_KEY* data, void* param)" @@ -2740,14 +2948,14 @@ CVar__Load 00766400 f end=0076652C type="int32_t __stdcall func(HOSFILE file)" CVar__Load 00766530 f end=007665C2 type="int32_t __stdcall func(char* filename)" CVar__SaveCvar 00766640 f end=007666A1 type="bool __stdcall func(char* name, char* value, void* param)" CVar__LogCvar 007666B0 f end=007666F9 ; CVar::LogCvar(char const*, char const*, void*) -CVar__InternalSet 007667B0 f end=00766855 ; CVar::InternalSet(char const*, bool, bool, bool, bool) +CVar__InternalSet 007667B0 f end=00766855 ; CVar::InternalSet(char const*, bool, bool, bool, bool) CVar__Set 007668C0 f end=00766936 type="bool __thiscall func(CVar* this, char* value, bool setValue, bool setReset, bool setDefault, bool a6)" CVar__Reset 00766990 f end=00766A14 ; public: void __thiscall CVar::Reset(void) CVar__Default 00766A20 f end=00766AA4 type="bool __thiscall func(CVar* this)" ; public: bool __thiscall CVar::Default(void) CVar__Update 00766AB0 f end=00766B1F type="bool __thiscall func(CVar* this)" ; CVar::Update() CVar__IterateForArchive 00767030 f end=007670DA type="int32_t __stdcall func(uint32_t a1, uint32_t a2, void* callback, void* param)" ; CVar::IterateForArchive(unsigned int, unsigned int, int (*)(char const*, char const*, void*), void*) CVarSaveFile 00767100 f end=0076719C type="void __stdcall func()" -CVar__LogAll 007671A0 f end=007671CF ; CVar::LogAll(char*, unsigned long, unsigned int, unsigned int) +CVar__LogAll 007671A0 f end=007671CF ; CVar::LogAll(char*, unsigned long, unsigned int, unsigned int) CvarListCommandHandler 00767220 f end=0076734A ; 00005410 CVar__DeleteAccountCVars 007673A0 f end=007673E4 ; 00005400 CVar__Destroy 007673F0 f end=00767434 type="void __stdcall func()" @@ -2791,12 +2999,14 @@ CVGxResolutionCallback 0076A220 f end=0076A57F type="bool __stdcall func(CVar* h CVGxRefreshCallback 0076A580 f end=0076A62D type="bool __stdcall func(CVar* h, char* oldValue, char* newValue, void* arg)" RegisterGxCVars 0076A630 f end=0076AAA8 ConsoleDeviceInitialize 0076AB80 f end=0076B287 type="int32_t __stdcall func(char* title, int32_t multithreaded)" -SetDefaults 0076B3F0 f type="void __stdcall func(DefaultSettings* defaults, Hardware* hardware)" ; void SetDefaults(DefaultSettings&, const Hardware&) +ConsoleDetectSetDefaults 0076B3F0 f type="void __stdcall func(DefaultSettings* defaults, Hardware* hardware)" ; void SetDefaults(DefaultSettings&, const Hardware&) ConsoleDetectSetDefaultsFormat 0076B520 f end=0076B53D type="void __stdcall func(DefaultSettings* defaults, Hardware* hardware)" ; ConsoleDetectSetDefaultsFormat(DefaultSettings&, const Hardware&) SetVideoIdx 0076B540 f end=0076B594 type="void __stdcall func(Hardware* hardware@)" PrintStartupError 0076B5A0 f end=0076B616 type="void __usercall __noreturn func(int32_t messageID, const char* fallbackMessage)" ConsoleDetectSaveHardware 0076B620 f end=0076B7DB ConsoleDetectDetectHardware 0076BA30 f end=0076BBE9 type="void __stdcall func(Hardware* hardware, bool* hwChanged)" ; ConsoleDetectDetectHardware(Hardware&, bool&) +NameNeedsDeclensions 0076DD20 f end=0076DD3B +RussianNameNeedsDeclensions 0076E270 f end=0076E2A6 SMemSetDebugFlags 0076E4A0 f end=0076E4D2 type="void __stdcall func(uint32_t flags, uint8_t changeMask)" SMemAlloc 0076E540 f end=0076E59A type="void* __stdcall func(uint32_t bytes, char* filename, int32_t linenumber, uint32_t flags)" SMemFree 0076E5A0 f end=0076E5C4 type="int32_t __stdcall func(void* ptr, char* filename, int32_t linenumber, uint32_t flags)" @@ -2843,6 +3053,7 @@ SCmdRegisterArgList 00773590 f end=007737C2 type="int32_t __stdcall func(ARGLIST SCmdProcess 00773890 f end=00773986 type="int32_t __stdcall func(char* cmdline, int32_t skipprogname, CMDEXTRACALLBACK extracallback, CMDERRORCALLBACK errorcallback)" SCmdProcessCommandLine 00773990 f end=007739AD type="int32_t __stdcall func(CMDEXTRACALLBACK extracallback, CMDERRORCALLBACK errorcallback)" StormInitialize 007739E0 f end=007739F4 +StormDestroy 00773A00 f end=00773A2F StormSetOption 00773A80 f end=00773C81 type="int32_t __stdcall func(int optname, void* optval, uint32_t optlen)" SCritSect__SCritSect 00774620 f end=0077462E type="SCritSect* __thiscall func(SCritSect* this)" SCritSect__destructor 00774630 f end=00774638 type="void __thiscall func(SCritSect *this)" @@ -2862,6 +3073,8 @@ SRgnCombineRectf 00777420 f end=00777588 type="void __stdcall func(HSRGN handle, SRgnGetBoundingRectf 00777590 f end=00777897 type="void __stdcall func(HSRGN handle, RECTF* rect)" SRgnDelete 00777940 f end=00777971 type="void __stdcall func(HSRGN handle)" SRgnCreate 00777980 f end=00777A78 type="void __stdcall func(HSRGN* handlePtr, uint32_t reserved)" +MD5Init 00779340 f end=0077936B +MD5Final 00779AE0 f end=00779B97 TSFixedArray_uint32_t_Set 0077AC80 f end=0077ACE4 type="void __thiscall func(TSFixedArray_uint32_t* this, uint32_t count, uint32_t* data)" BigBuffer__operator_index 0077ACF0 f end=0077AD10 type="uint32_t __thiscall func(BigBuffer* this, uint32_t index)" ; public: unsigned int __thiscall BigBuffer::operator[](unsigned int)const Compare 0077AD10 f end=0077ADC5 type="int32_t __fastcall func(BigBuffer* a, BigBuffer* b)" @@ -2897,6 +3110,7 @@ SBigDel 0077C6A0 f end=0077C6F6 type="void __stdcall func(BigData* num)" SBigMul 0077C700 f end=0077C71F type="void __stdcall func(BigData* a, BigData* b, BigData* c)" PowMod 0077C720 f end=0077C97B type="void __stdcall func(BigBuffer* a, BigBuffer* b, BigBuffer* c, BigBuffer* d, BigStack* stack)" SBigPowMod 0077C980 f end=0077C9A4 type="void __stdcall func(BigData* a, BigData* b, BigData* c, BigData* d)" +World__SetLoadProgressCallback 0077EC90 f end=0077ECA6 Script_VoiceEnumerateOutputDevices 007DAB80 f end=007DAC34 Script_VoiceEnumerateCaptureDevices 007DAC40 f end=007DACEA Script_VoiceSelectOutputDevice 007DACF0 f end=007DADD2 @@ -2912,6 +3126,8 @@ Script_GetVoiceStatus 007DB8D0 f end=007DB9AC Script_VoiceIsDisabledByClient 007DC910 f end=007DC94A Script_GetVoiceSessionMemberInfoBySessionID 007DEEF0 f end=007DF0AF Script_UnitIsTalking 007DF0B0 f end=007DF142 +IsRussian 007E1030 f end=007E1049 +SpellVisualsClear 007FC9F0 f end=007FCA29 Script_SpellIsTargeting 007FDCD0 f end=007FDD0A Script_SpellCanTargetItem 007FDD10 f end=007FDD56 Script_SpellCanTargetGlyph 007FDD60 f end=007FDDA6 @@ -2920,28 +3136,45 @@ Script_CancelItemTempEnchantment 008021D0 f end=0080226B Script_CannotBeResurrected 00802270 f end=008022C9 Script_SpellCanTargetUnit 00804190 f end=0080421D Script_CancelUnitBuff 00804220 f end=00804420 +Spell_C_StopTargeting 00809A60 f end=00809A79 Script_SpellStopTargeting 00809E30 f end=00809E96 Script_SpellStopCasting 00809EA0 f end=00809F7E Script_SpellTargetUnit 0080DC00 f end=0080DCE3 +FrameXML_LoadXML 00812530 f end=008125C0 +FrameXML_RegisterLoadProgressCallback 00812840 f end=00812869 +FrameXML_CreateFrame 00812FA0 f end=008131CD +FrameXML_RegisterFactory 00813D20 f end=00813DEF +FrameXML_RegisterDefault 00813DF0 f end=00813EDC +FrameXML_ProcessFile 00813EE0 f end=00814333 +FrameXML_CreateFrames 00814340 f end=008145A3 +FrameXML_CheckSignature 008165E0 f end=00816767 FrameScript_Object__CreateScriptMetaTable 00816790 f end=008167D3 ; FrameScript_Object::CreateScriptMetaTable(lua_State*, void (*)(lua_State*)) FrameScript_Object__FillScriptMethodTable 008167E0 f end=00816822 ; FrameScript_Object::FillScriptMethodTable(lua_State*, FrameScript_Method*, int) FrameScript_Sprintf 00818070 f end=0081839F type="void __stdcall func(lua_State* L, int startIndex, char* buffer, uint32_t bufferSize)" ; startIndex is the index of starting argument on stack FrameScript_Object__FrameScript_Object 00819830 f end=0081984B type="void __thiscall func(FrameScript_Object* this)" ; FrameScript_Object::FrameScript_Object() FrameScript_Object__destructor 00819850 f end=00819872 ; FrameScript_Object::~FrameScript_Object() FrameScript_Object__UnregisterScriptObject 008199C0 f end=00819A58 ; FrameScript_Object::UnregisterScriptObject(char const*) +FrameScript_Initialize 00819BB0 f end=00819D38 FrameScript_Execute 00819EA0 f end=0081A2B5 type="void __stdcall func(int32_t function, FrameScript_Object* object, int32_t args, char* args_fmt, FrameScript_EventObject* eventObject)" FrameScript_Object__RunScript 0081A2C0 f end=0081A2E7 ; FrameScript_Object__RunScript(FrameScript_Object::ScriptIx const&, int, char const*) +FrameScript_Destroy 0081A9A0 f end=0081A9FF FrameScript_SignalEvent 0081AA00 f end=0081AB59 ; FrameScript_SignalEvent(unsigned int, lua_State*, int) +FrameScript_Flush 0081AC70 f end=0081AC8B vFrameScript_SignalEvent 0081AC90 f end=0081AE4F ; vFrameScript_SignalEvent(unsigned int, char const*, char*) FrameScript_SignalEvent 0081B530 f end=0081B549 ; FrameScript_SignalEvent(unsigned int, char const*, ...) FrameScript_CreateEvents 0081B5F0 f end=0081B714 ; FrameScript_CreateEvents(char const**, unsigned int) Script_GetText 0081B720 f end=0081B7AF Script_CreateFont 0081B7B0 f end=0081B81E Script_GetCurrentKeyBoardFocus 0081B820 f end=0081B86C +RegisterSimpleFrameScriptMethods 0081B870 f end=0081B914 +UnregisterSimpleFrameScriptMethods 0081B920 f end=0081B9B8 Script_EnumerateFrames 0081B9C0 f end=0081BAAA Script_GetNumFrames 0081BAB0 f end=0081BB15 Script_CreateFrame 0081BB20 f end=0081BE68 Script_GetFramesRegisteredForEvent 0081BE70 f end=0081BF4D +M2GetCacheFlags 0081C0B0 f end=0081C0B6 +M2SetCacheFlags 0081C0C0 f end=0081C0CD +M2Initialize 0081C6E0 f end=0081C747 _lua_gettop 0084DBD0 f _lua_settop 0084DBF0 f _lua_insert 0084DCC0 f @@ -2966,12 +3199,14 @@ luaD_call 00856760 f _luaV_execute 00857CA0 f RestoreMouse 008695B0 f end=008695FB OsInputSetWindowResizeLock 00869620 f end=0086962D +OsInputGetMouseSpeed 00869630 f end=0086963D OsInputInitialize 00869720 f end=00869757 OsInputDestroy 00869760 f end=008697D3 OsInputSetEventPollProc 00869D90 f end=00869D9D CenterMouse 00869DB0 f end=00869DF6 OsInputGet 00869E00 f end=0086A01A OsInputSetMouseMode 0086A020 f end=0086A063 +OsInputSetMouseSpeed 0086A070 f end=0086A0C8 OsInputGetMousePosition 0086A0D0 f end=0086A130 OsInputSetMousePosition 0086A130 f end=0086A194 OsGetDefaultWindowRect 0086A1A0 f end=0086A20C @@ -2997,6 +3232,7 @@ OsGetVersionString 0086B430 f end=0086B458 OsGetComputerName 0086B480 f end=0086B493 OsGetUserName 0086B4A0 f end=0086B4B3 OsGetPhysicalMemory 0086B4C0 f end=0086B4E1 +OsSystemInitialize 0086B4F0 f end=0086D6DF IOsParseProcessorFrequency 0086B600 f end=0086B703 IOsGetPowerProfFrequency 0086B710 f end=0086B774 OsIsRemoteSession 0086B780 f end=0086B78C @@ -3015,6 +3251,7 @@ OsIMEInitialize 0086D0A0 f end=0086D0B8 OsIMEDestroy 0086D0C0 f end=0086D0Df OsTimeStartup 0086D430 f end=0086D439 type="void __stdcall func(TimingMethod timingMethod)" OsTimeShutdown 0086D440 f end=0086D445 +OsTlsGetValue 0086D6D0 f end=0086D6DF TSExplicitList_CGxBuf__LinkToTail 0086E200 f end=0086E25F type="void __thiscall func(TSExplicitList_CGxBuf* this, CGxBuf* ptr)" OsCallSetContext 0086F5A0 f end=0086F5EA OsCallInitialize 0086F760 f end=0086F875 @@ -3025,6 +3262,7 @@ IOsClipboardGetString 008726F0 f end=008727BB IOsClipboardPutString 008727E0 f end=008728B8 CShaderEffect__UpdateProjMatrix 00872C10 f end=00872CD5 stub_return_one_byte 008A1420 f end=008A1423 ; known names: System_File::Shutdown, CVGxVideoOptionsVersionCallback +FFX__Destroy 008C0360 f end=008C0589 GxDefaultApi 008C8DE0 f type="EGxApi __stdcall func()" stub_return_zero4 008E5250 f end=008E5253 ; Script_ToggleTris stub_return_xor_eax 00936900 f end=00936905 @@ -3101,7 +3339,12 @@ Script_VoiceChat_IsRecordingLoopbackSound 00985E00 f end=00985E2D Script_VoiceChat_IsPlayingLoopbackSound 00985E30 f end=00985E5D Script_VoiceChat_GetCurrentMicrophoneSignalLevel 00985E60 f end=00985E8A Script_VoiceChat_ActivatePrimaryCaptureCallback 00985E90 f end=00985E98 +SI2__RegisterScriptFunctions 00985EA0 f end=00985EC6 +SI2__UnregisterScriptFunctions 00985ED0 f end=00985EEF Script_VoiceChat_StartCapture 00985EF0 f end=00985F6B +SI2__StopGlueAmbience 00985F70 f end=00985FA2 +SI2__StopGlueMusic 009860E0 f end=00986128 +SI2__PlayVocalErrorSound 00986D00 f end=00986DD6 DayNight__DNGlare__Initialize 009AD000 f end=009AD0A3 type="void __thiscall func(DayNight__DNGlare* this, char* a1)" nullsub_7 009D34B0 f nullsub_8 009D34C0 f @@ -3252,12 +3495,12 @@ s_wowArgList 009E1BE0 l type="ARGLIST[17]" firstByteMark 009E537C l type="uint32_t[7]" bytesFromUTF8 009E5398 l type="uint8_t[256]" s_noinfo 009E5630 l type="Blizzard__File__FileInfo" -firstByteMark 009e9ec8 l type="uint32_t[7]" +firstByteMark 009E9EC8 l type="uint32_t[7]" s_pixelFormatToMipBitsCache 009F1074 l CGxDevice__vtable 00A2DDC0 l type="CGxDevice__vtable" CGxDeviceOpenGl__vtable 00A2E198 l -CGxDeviceD3d__vtable 00a2e718 l -CGxDeviceD3d9Ex__vtable 00a2f500 l +CGxDeviceD3d__vtable 00A2E718 l +CGxDeviceD3d9Ex__vtable 00A2F500 l g_startup_StringsDB 00AB6350 l type="WowClientDB_Startup_StringsRec" System_File__Stacked__s_manager 00AB90AC l type="Blizzard__File__Filesystem*" System_File__read_func 00AB912C l ; type="int32_t (*)(Blizzard__File__Filesystem* fs, System_File__Stacked__FileParms* parms)" @@ -3265,6 +3508,7 @@ System_File__write_func 00AB91B4 l ; type="int32_t (*)(Blizzard__File__Filesyste System_File__Stacked__s_nullstack 00AB91C0 l type="Blizzard__File__Filesystem" System_File__Stacked__s_basestack 00AB92C0 l type="Blizzard__File__Filesystem" s_zorderlist 00AC1B9C f type="TSExplicitList_CILayer" +ClientServices__m_loginState 00AC3DA4 l CGGameUI__m_visible 00AC80A8 l s_cursorNames 00AD2808 l type="char*[53]" g_achievementDB 00AD305C l type="WowClientDB_AchievementRec" ; 0xEB @@ -3527,23 +3771,35 @@ g_lightParamsDB 00AF4A04 l type="WowClientDB_LightParamsRec" ; 0x15E g_lightDB 00AF4A28 l type="WowClientDB_LightRec" ; 0x15B s_sleepInBackground 00B1D2AC l type="int32_t" s_streamingdiag 00B2F050 l -g_clientEventContext 00B2F994 l type="HEVENTCONTEXT" +g_clientEventContext 00B2F994 l type="HEVENTCONTEXT" Blizzard__Streaming__s_streamingReady 00B38180 l type="bool" Blizzard__Streaming__s_isStreamingTrial 00B38181 l type="bool" System_File__s_read_init 00B38A5C l type="Blizzard__Lock__DoOnceData" System_File__s_write_init 00B38A64 l type="Blizzard__Lock__DoOnceData" OsFileGetDownloadFolder__s_downloadfolder 00B38A88 l ; OsFileGetDownloadFolder()::s_downloadfolder; -s_mainThread 00b417c8 l type="uint32_t" +s_mainThread 00B417C8 l type="uint32_t" s_interactiveCount 00B417D0 l type="int32_t" s_messageRecycler 00B41850 l type="CDataRecycler" +CGlueMgr__m_ffxActive 00B6A180 l +CGlueMgr__m_deathEffect 00B6A184 l +CGlueMgr__m_glowEffect 00B6A188 l +CGlueMgr__m_serverAlert 00B6A190 l CGlueMgr__m_patchLastUpdate 00B6A994 l CGlueMgr__m_queueTime 00B6A99C l CGlueMgr__m_queuePosition 00B6A9BC l CGlueMgr__m_cursorMipBits 00B6A9DC l type="MipBits*" +CGlueMgr__m_simpleTop 00B6AA20 l +CGlueMgr__m_reload 00B6AA24 l CGlueMgr__m_suspended 00B6AA2C l CGlueMgr__m_indleState 00B6AA38 l +ClientServices__m_matrixRemaining 00B6AF40 l CGlueMgr__m_estimatedWaitTime 00B6AF44 l CGlueMgr__m_characterInfo 00B6AF4C l +CGlueMgr__m_screenWidgth 00B6AF7C l +CGlueMgr__m_screenHeight 00B6AF80 l +CGlueMgr__m_aspect 00B6AF84 l +CGlueMgr__m_pendingServerAlert 00B6AF88 l +CGlueMgr__m_processServerAlert 00B6AF8C l CGlueMgr__m_numChangedOptionWarnings 00B6AF9C l CGlueMgr__m_showedDisconnect 00B6AFA0 l CGlueMgr__m_surveyDownload 00B6B250 l @@ -3555,17 +3811,21 @@ CGGameUI__m_cursorHasAction 00BD074C l CGGameUI__m_cursorVirtualSlot 00BD0750 l CGGameUI__m_cursorVirtualDisplay 00BD0754 l CGGameUI__m_cursorVirtualID 00BD0758 l +CGGameUI__m_cursorItemContainer 00BD0760 l +CGGameUI__m_cursorItem 00BD0768 l CGGameUI__m_stackSplit 00BD0770 l CGGameUI__m_UISimpleParent 00BD0778 l CGGameUI__m_minimapZoneText 00BD077C l CGGameUI__m_subZoneText 00BD0784 l CGGameUI__m_zoneText 00BD0788 l CGGameUI__m_simpleTop 00BD078C l +CGGameUI__m_currentlyReloadingUI 00BD0790 l CGGameUI__m_reloadUIRequested 00BD0791 l CGGameUI__m_inWorld 00BD0792 l CGGameUI__m_interactMaxDistSq 00BD0798 l CGGameUI__m_cursorMoney 00BD079C l CGGameUI__m_currentObjectTrack 00BD07A0 l +CGGameUI__m_interactTarget 00BD07AC l CGGameUI__m_lastTarget 00BD07B8 l CGGameUI__m_lastEnemyTarget 00BD07C0 l CGGameUI__m_lastFriendTraget 00BD07C8 l @@ -3607,6 +3867,11 @@ CGxDevice__m_logBytes 00C5FFF4 l type="uint32_t" CGxDevice__m_log 00C5FFF8 l type="HSLOG" CGxDevice__s_uiPixelShader 00C5FFFC l isIdent 00C60760 l +ClientServices__m_instance 00C79CE4 l +ClientServices__m_selectRealmInfoValid 00C79CE9 l +ClientServices__s_loginObj 00C79CEC l +ClientServices__m_currentConnection 00C79CF4 l +ClientServices__s_characterInfo 00C79D10 l s_caretpixheight 00CA1690 l type="float" s_caret 00CA1694 l type="int32_t" ; int32 s_copyText 00CA1698 l @@ -3683,8 +3948,8 @@ s_desktopFormat 00CABD40 l type="CGxFormat" s_fallbackFormat 00CABDA8 l type="CGxFormat" s_lastGoodFormat 00CABE00 l type="CGxFormat" s_formats 00CABE98 l type="CGxFormat[5]" -s_alloccount 00CAE950 l type="uint32_t" -s_freecount 00CAE954 l type="uint32_t" +s_alloccount 00CAE950 l type="uint32_t" +s_freecount 00CAE954 l type="uint32_t" g_opt 00CAE958 l type="STORMOPTIONS" s_scriptProfileEnabled 00D3F798 l type="int32_t" CGGameUI__m_luaTainted 00D4139C l diff --git a/profile/3.3.5a-windows-386/symbol/missile/func.sym b/profile/3.3.5a-windows-386/symbol/missile/func.sym index 8311933..cdfe6cd 100644 --- a/profile/3.3.5a-windows-386/symbol/missile/func.sym +++ b/profile/3.3.5a-windows-386/symbol/missile/func.sym @@ -1 +1 @@ -CMissile__ClearInFlightMissiles 00703770 f end=00703802 \ No newline at end of file +CMissile__ClearInFlightMissiles 00703770 f end=00703802 diff --git a/profile/3.3.5a-windows-386/symbol/movement/func.sym b/profile/3.3.5a-windows-386/symbol/movement/func.sym index f2808fb..6058853 100644 --- a/profile/3.3.5a-windows-386/symbol/movement/func.sym +++ b/profile/3.3.5a-windows-386/symbol/movement/func.sym @@ -1,2 +1,2 @@ MovementInit 00401520 f end=004015E0 -MovementDestroy 006F0C30 f end=006F0C6E \ No newline at end of file +MovementDestroy 006F0C30 f end=006F0C6E diff --git a/profile/3.3.5a-windows-386/symbol/netclient/func.sym b/profile/3.3.5a-windows-386/symbol/netclient/func.sym index 3e22e24..6dbaf2b 100644 --- a/profile/3.3.5a-windows-386/symbol/netclient/func.sym +++ b/profile/3.3.5a-windows-386/symbol/netclient/func.sym @@ -3,7 +3,7 @@ NetClient__ConnectInternal 00631E10 f end=00631E92 ; NetClient::ConnectInternal( NetClient__Disconnect 00631EA0 f end=00631F69 ; 00005400 NetClient__SetLoginData 00631F70 f end=00631F88 ; NetClient::SetLoginData(LoginData*) NetClient__SetMessageHandler 00631FA0 f end=00631FBE ; void __thiscall NetClient::SetMessageHandler(enum NETMESSAGE, int (__fastcall *)(void *, enum NETMESSAGE, unsigned long, class CDataStore *), void *) -NetClient__ProcessMessage 00631FE0 f end=00632048 ; NetClient::ProcessMessage(unsigned long, CDataStore*, int) +NetClient__ProcessMessage 00631FE0 f end=00632048 ; NetClient::ProcessMessage(unsigned long, CDataStore*, int) NetClient__WCConnected 00632060 f end=006320D0 ; NetClient::WCConnected(WowConnection*, WowConnection*, unsigned long, NETCONNADDR const*) NetClient__GetNetStats 006320D0 f end=0063219E ; void __thiscall NetClient::GetNetStats(float &, float &, unsigned long &) NetClient__PollEventQueue 006321A0 f end=006321AB ; 00005400 diff --git a/profile/3.3.5a-windows-386/symbol/nullsub/func.sym b/profile/3.3.5a-windows-386/symbol/nullsub/func.sym index 42108dd..dc9c6fe 100644 --- a/profile/3.3.5a-windows-386/symbol/nullsub/func.sym +++ b/profile/3.3.5a-windows-386/symbol/nullsub/func.sym @@ -1,3 +1,4 @@ +purecall 0040BAA5 f end=0040BACF nullsub_1 0040D3B5 f nullsub_2 0047ADD0 f j_nullsub_3 0047B760 f @@ -10,6 +11,9 @@ nullsub_6 006B1B90 f nullsub_155 006B1BA0 f nullsub_152 00743550 f nullsub_153 00743560 f +stub_return_one_byte 008A1420 f end=008A1423 ; known names: System_File::Shutdown, CVGxVideoOptionsVersionCallback +stub_return_zero4 008E5250 f end=008E5253 ; Script_ToggleTris +stub_return_xor_eax 00936900 f end=00936905 nullsub_7 009D34B0 f nullsub_8 009D34C0 f nullsub_9 009D4260 f @@ -154,7 +158,3 @@ nullsub_147 009DE1A0 f nullsub_148 009DE1B0 f nullsub_149 009DE1C0 f nullsub_150 009DE1D0 f -stub_return_zero4 008E5250 f end=008E5253 ; Script_ToggleTris -purecall 0040BAA5 f end=0040BACF -stub_return_one_byte 008A1420 f end=008A1423 ; known names: System_File::Shutdown, CVGxVideoOptionsVersionCallback -stub_return_xor_eax 00936900 f end=00936905 \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/os/func.sym b/profile/3.3.5a-windows-386/symbol/os/func.sym index c0c720e..ec3843a 100644 --- a/profile/3.3.5a-windows-386/symbol/os/func.sym +++ b/profile/3.3.5a-windows-386/symbol/os/func.sym @@ -1,11 +1,13 @@ RestoreMouse 008695B0 f end=008695FB OsInputSetWindowResizeLock 00869620 f end=0086962D +OsInputGetMouseSpeed 00869630 f end=0086963D OsInputInitialize 00869720 f end=00869757 OsInputDestroy 00869760 f end=008697D3 OsInputSetEventPollProc 00869D90 f end=00869D9D CenterMouse 00869DB0 f end=00869DF6 OsInputGet 00869E00 f end=0086A01A OsInputSetMouseMode 0086A020 f end=0086A063 +OsInputSetMouseSpeed 0086A070 f end=0086A0C8 OsInputGetMousePosition 0086A0D0 f end=0086A130 OsInputSetMousePosition 0086A130 f end=0086A194 OsGetDefaultWindowRect 0086A1A0 f end=0086A20C @@ -21,6 +23,7 @@ OsGetVersionString 0086B430 f end=0086B458 OsGetComputerName 0086B480 f end=0086B493 OsGetUserName 0086B4A0 f end=0086B4B3 OsGetPhysicalMemory 0086B4C0 f end=0086B4E1 +OsSystemInitialize 0086B4F0 f end=0086D6DF IOsParseProcessorFrequency 0086B600 f end=0086B703 IOsGetPowerProfFrequency 0086B710 f end=0086B774 OsIsRemoteSession 0086B780 f end=0086B78C @@ -37,6 +40,7 @@ OsGuiSetGxWindow 0086C6D0 f end=0086C6DD OsGuiMessageBox 0086C6E0 f end=0086C7D0 type="int32_t __stdcall func(void* parentWindow, int32_t style, const char* message, const char* title)" OsIMEInitialize 0086D0A0 f end=0086D0B8 OsIMEDestroy 0086D0C0 f end=0086D0Df +OsTlsGetValue 0086D6D0 f end=0086D6DF OsCallSetContext 0086F5A0 f end=0086F5EA OsCallInitialize 0086F760 f end=0086F875 OsCallInitializeContext 0086F880 f end=0086F902 @@ -44,6 +48,3 @@ OsClipboardGetString 00872280 f end=00872297 OsClipboardPutString 008722A0 f end=008722BF IOsClipboardGetString 008726F0 f end=008727BB IOsClipboardPutString 008727E0 f end=008728B8 -OsInputGetMouseSpeed 00869630 f end=0086963D -OsInputSetMouseSpeed 0086A070 f end=0086A0C8 -OsTlsGetValue 0086D6D0 f end=0086D6DF \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/ostime/func.sym b/profile/3.3.5a-windows-386/symbol/ostime/func.sym index 154fe66..20bb1d3 100644 --- a/profile/3.3.5a-windows-386/symbol/ostime/func.sym +++ b/profile/3.3.5a-windows-386/symbol/ostime/func.sym @@ -1,12 +1,12 @@ OsTimeManager__Calibrate 0086AB30 f end=0086AD4A type="TimingMethod __thiscall func(OsTimeManager* this)" +OsTimeGetTestError 0086AD50 f end=0086AD59 OsTimeGetTimingMethodName 0086AD70 f end=0086ADB8 type="char* __stdcall func(TimingMethod method)" OsTimeManager__Snapshot 0086ADC0 f end=0086AE20 type="uint64_t __thiscall func(OsTimeManager* this)" OsGetAsyncTimeMs 0086AE20 f end=0086AE2B OsGetAsyncTimeClocks 0086AE30 f end=0086AE68 OsGetAsyncClocksPerSecond 0086AE70 f end=0086AE94 OsTimeManager__OsTimeManager 0086AEA0 f end=0086AF15 type="OsTimeManager* __thiscall func(OsTimeManager* this, int32_t a2)" -OsTimeManagerDestroy 0086AF60 f end=0086AF83 OsTimeManagerCreate 0086AF20 f end=0086AF58 +OsTimeManagerDestroy 0086AF60 f end=0086AF83 OsTimeStartup 0086D430 f end=0086D439 type="void __stdcall func(TimingMethod timingMethod)" OsTimeShutdown 0086D440 f end=0086D445 -OsTimeGetTestError 0086AD50 f end=0086AD59 \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/ostime/label.sym b/profile/3.3.5a-windows-386/symbol/ostime/label.sym index a7f4328..4c0510d 100644 --- a/profile/3.3.5a-windows-386/symbol/ostime/label.sym +++ b/profile/3.3.5a-windows-386/symbol/ostime/label.sym @@ -1 +1 @@ -s_OsTimeMgr 00D4159C l type="OsTimeManager*" \ No newline at end of file +s_OsTimeMgr 00D4159C l type="OsTimeManager*" diff --git a/profile/3.3.5a-windows-386/symbol/partyinfo/func.sym b/profile/3.3.5a-windows-386/symbol/partyinfo/func.sym index dfb7631..a9af785 100644 --- a/profile/3.3.5a-windows-386/symbol/partyinfo/func.sym +++ b/profile/3.3.5a-windows-386/symbol/partyinfo/func.sym @@ -1 +1 @@ -CGPartyInfo__CheckClearLFGSlot 0052CC30 f end=0052CCD0 \ No newline at end of file +CGPartyInfo__CheckClearLFGSlot 0052CC30 f end=0052CCD0 diff --git a/profile/3.3.5a-windows-386/symbol/player/func.sym b/profile/3.3.5a-windows-386/symbol/player/func.sym index f31c3e9..8ec74aa 100644 --- a/profile/3.3.5a-windows-386/symbol/player/func.sym +++ b/profile/3.3.5a-windows-386/symbol/player/func.sym @@ -1 +1 @@ -CloseAllLootRolls 006FAFD0 f end=006FB0FD \ No newline at end of file +CloseAllLootRolls 006FAFD0 f end=006FB0FD diff --git a/profile/3.3.5a-windows-386/symbol/rcstring/func.sym b/profile/3.3.5a-windows-386/symbol/rcstring/func.sym index 24ac921..a231c33 100644 --- a/profile/3.3.5a-windows-386/symbol/rcstring/func.sym +++ b/profile/3.3.5a-windows-386/symbol/rcstring/func.sym @@ -1 +1 @@ -RCString__Copy 0047CF80 f end=0047CFEC \ No newline at end of file +RCString__Copy 0047CF80 f end=0047CFEC diff --git a/profile/3.3.5a-windows-386/symbol/realmlist/func.sym b/profile/3.3.5a-windows-386/symbol/realmlist/func.sym index 0b9af6b..ed0fe6f 100644 --- a/profile/3.3.5a-windows-386/symbol/realmlist/func.sym +++ b/profile/3.3.5a-windows-386/symbol/realmlist/func.sym @@ -1,3 +1,3 @@ RealmListRegisterScriptFunctions 004DE4D0 f end=004DE4F3 RealmListUnregisterScriptFunctions 004DE500 f end=004DE51C -CRealmList__Initialize 004DF580 f end=004DF66C \ No newline at end of file +CRealmList__Initialize 004DF580 f end=004DF66C diff --git a/profile/3.3.5a-windows-386/symbol/screen/func.sym b/profile/3.3.5a-windows-386/symbol/screen/func.sym index 4fd031a..41d6e21 100644 --- a/profile/3.3.5a-windows-386/symbol/screen/func.sym +++ b/profile/3.3.5a-windows-386/symbol/screen/func.sym @@ -1,5 +1,5 @@ ScrnSetScreenshotQuality 004A84A0 f end=004A84FF +ScrnLayerSetRect 004A8500 f end=004A8522 +ScrnLayerCreate 004A8BB0 f end=004A8C83 ScrnGetStockFont 004A8DC0 f end=004A8DDF ScrnGetStockFontHeight 004A8DE0 f end=004A8DFF -ScrnLayerSetRect 004A8500 f end=004A8522 -ScrnLayerCreate 004A8BB0 f end=004A8C83 \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/screen/label.sym b/profile/3.3.5a-windows-386/symbol/screen/label.sym index 4fb8e79..c9b2a4f 100644 --- a/profile/3.3.5a-windows-386/symbol/screen/label.sym +++ b/profile/3.3.5a-windows-386/symbol/screen/label.sym @@ -1 +1 @@ -s_zorderlist 00AC1B9C f type="TSExplicitList_CILayer" \ No newline at end of file +s_zorderlist 00AC1B9C f type="TSExplicitList_CILayer" diff --git a/profile/3.3.5a-windows-386/symbol/script/func.sym b/profile/3.3.5a-windows-386/symbol/script/func.sym index d01e2d9..671e4b0 100644 --- a/profile/3.3.5a-windows-386/symbol/script/func.sym +++ b/profile/3.3.5a-windows-386/symbol/script/func.sym @@ -1969,4 +1969,4 @@ Script_VoiceChat_IsRecordingLoopbackSound 00985E00 f end=00985E2D Script_VoiceChat_IsPlayingLoopbackSound 00985E30 f end=00985E5D Script_VoiceChat_GetCurrentMicrophoneSignalLevel 00985E60 f end=00985E8A Script_VoiceChat_ActivatePrimaryCaptureCallback 00985E90 f end=00985E98 -Script_VoiceChat_StartCapture 00985EF0 f end=00985F6B \ No newline at end of file +Script_VoiceChat_StartCapture 00985EF0 f end=00985F6B diff --git a/profile/3.3.5a-windows-386/symbol/scriptobject/func.sym b/profile/3.3.5a-windows-386/symbol/scriptobject/func.sym index c54d2ba..331a87a 100644 --- a/profile/3.3.5a-windows-386/symbol/scriptobject/func.sym +++ b/profile/3.3.5a-windows-386/symbol/scriptobject/func.sym @@ -1 +1 @@ -CScriptObject__GetScriptObjectByName 0048B5F0 f end=0048B671 \ No newline at end of file +CScriptObject__GetScriptObjectByName 0048B5F0 f end=0048B671 diff --git a/profile/3.3.5a-windows-386/symbol/scriptregion/func.sym b/profile/3.3.5a-windows-386/symbol/scriptregion/func.sym index 787de44..a9cf036 100644 --- a/profile/3.3.5a-windows-386/symbol/scriptregion/func.sym +++ b/profile/3.3.5a-windows-386/symbol/scriptregion/func.sym @@ -1 +1 @@ -CScriptRegion__CScriptRegion 00488310 f end=00488348 type="void __thiscall func(CScriptRegion* this)" \ No newline at end of file +CScriptRegion__CScriptRegion 00488310 f end=00488348 type="void __thiscall func(CScriptRegion* this)" diff --git a/profile/3.3.5a-windows-386/symbol/shadereffect/func.sym b/profile/3.3.5a-windows-386/symbol/shadereffect/func.sym index d49ed92..a71eec6 100644 --- a/profile/3.3.5a-windows-386/symbol/shadereffect/func.sym +++ b/profile/3.3.5a-windows-386/symbol/shadereffect/func.sym @@ -1 +1 @@ -CShaderEffect__UpdateProjMatrix 00872C10 f end=00872CD5 \ No newline at end of file +CShaderEffect__UpdateProjMatrix 00872C10 f end=00872CD5 diff --git a/profile/3.3.5a-windows-386/symbol/shadereffect/label.sym b/profile/3.3.5a-windows-386/symbol/shadereffect/label.sym index a790527..40df4be 100644 --- a/profile/3.3.5a-windows-386/symbol/shadereffect/label.sym +++ b/profile/3.3.5a-windows-386/symbol/shadereffect/label.sym @@ -1 +1 @@ -CShaderEffect__s_enableShaders 00D43020 l type="int32_t" \ No newline at end of file +CShaderEffect__s_enableShaders 00D43020 l type="int32_t" diff --git a/profile/3.3.5a-windows-386/symbol/simplecamera/func.sym b/profile/3.3.5a-windows-386/symbol/simplecamera/func.sym new file mode 100644 index 0000000..05770c1 --- /dev/null +++ b/profile/3.3.5a-windows-386/symbol/simplecamera/func.sym @@ -0,0 +1 @@ +CSimpleCamera__SetFacing 00607BD0 f end=00607BF6 diff --git a/profile/3.3.5a-windows-386/symbol/simplefontstring/func.sym b/profile/3.3.5a-windows-386/symbol/simplefontstring/func.sym index 8d23dd9..5e1a2ad 100644 --- a/profile/3.3.5a-windows-386/symbol/simplefontstring/func.sym +++ b/profile/3.3.5a-windows-386/symbol/simplefontstring/func.sym @@ -1,2 +1,2 @@ +CSimpleFontString__SetText 00483910 f end=00483A3D type="void __thiscall func(CSimpleFontString* this, char* a1, int32_t a2)" CSimpleFontString_SetFormattedText 0048D800 f end=0048D88B type="int32_t __stdcall func(lua_State* L)" -CSimpleFontString__SetText 00483910 f end=00483A3D type="void __thiscall func(CSimpleFontString* this, char* a1, int32_t a2)" \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/simpleframe/func.sym b/profile/3.3.5a-windows-386/symbol/simpleframe/func.sym index 3c79de5..3b92b51 100644 --- a/profile/3.3.5a-windows-386/symbol/simpleframe/func.sym +++ b/profile/3.3.5a-windows-386/symbol/simpleframe/func.sym @@ -1,6 +1,6 @@ -CSimpleFrame_SetAlpha 0049F9E0 f end=0049FAA1 type="void __stdcall func(lua_State* L)" CSimpleFrame__SetFrameAlpha 0048EA10 f end=0048EA32 type="void __thiscall func(CSimpleFrame* this, uint8_t alpha)" CSimpleFrame__SetFrameScale 0048F580 f end=0048F5CC CSimpleFrame__SetFrameDepth 0048F5D0 f end=0048F611 -RegisterSimpleFrameScriptMethods 0081B870 f end=009707D9 -UnregisterSimpleFrameScriptMethods 0081B920 f end=00970655 \ No newline at end of file +CSimpleFrame_SetAlpha 0049F9E0 f end=0049FAA1 type="void __stdcall func(lua_State* L)" +RegisterSimpleFrameScriptMethods 0081B870 f end=0081B914 +UnregisterSimpleFrameScriptMethods 0081B920 f end=0081B9B8 diff --git a/profile/3.3.5a-windows-386/symbol/simplemodel/func.sym b/profile/3.3.5a-windows-386/symbol/simplemodel/func.sym index 431ae15..6a5349c 100644 --- a/profile/3.3.5a-windows-386/symbol/simplemodel/func.sym +++ b/profile/3.3.5a-windows-386/symbol/simplemodel/func.sym @@ -42,4 +42,4 @@ CSimpleModel_GetFogNear 00961350 f end=00961393 type="int32_t __stdcall func(lua CSimpleModel_SetFogFar 009613A0 f end=00961418 type="int32_t __stdcall func(lua_State* L)" CSimpleModel_GetFogFar 00961420 f end=00961463 type="int32_t __stdcall func(lua_State* L)" CSimpleModel_ClearFog 00961470 f end=009614A7 type="int32_t __stdcall func(lua_State* L)" -CSimpleModel_SetGlow 009614B0 f end=00961534 type="int32_t __stdcall func(lua_State* L)" \ No newline at end of file +CSimpleModel_SetGlow 009614B0 f end=00961534 type="int32_t __stdcall func(lua_State* L)" diff --git a/profile/3.3.5a-windows-386/symbol/simpleregion/func.sym b/profile/3.3.5a-windows-386/symbol/simpleregion/func.sym index 31a0796..d08e426 100644 --- a/profile/3.3.5a-windows-386/symbol/simpleregion/func.sym +++ b/profile/3.3.5a-windows-386/symbol/simpleregion/func.sym @@ -1,3 +1,4 @@ +CSimpleRegion__Hide 00482C20 f type="void __thiscall func(CSimpleRegion* this)" CSimpleRegion__SetVertexColor 00487A10 f type="void __thiscall func(CSimpleRegion* this, CImVector* color)" CSimpleRegion__GetVertexColor 00487AB0 f type="void __thiscall func(CSimpleRegion* this, CImVector* color)" CSimpleRegion__HideThis 00487BF0 f type="void __thiscall func(CSimpleRegion* this)" @@ -6,4 +7,3 @@ CSimpleRegion__OnRegionChanged 00487CA0 f type="void __thiscall func(CSimpleRegi CSimpleRegion__OnColorChanged 00487D70 f type="void __thiscall func(CSimpleRegion* this, bool a2)" CSimpleRegion__CSimpleRegion 004880E0 f type="void __thiscall func(CSimpleRegion* this, CSimpleFrame* frame, uint32_t drawLayer, int32_t show)" CSimpleRegion__destructor 004881D0 f type="void __thiscall func(CSimpleRegion* this)" -CSimpleRegion__Hide 00482C20 f type="void __thiscall func(CSimpleRegion* this)" \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/simpletop/func.sym b/profile/3.3.5a-windows-386/symbol/simpletop/func.sym index de5d99c..cdbad08 100644 --- a/profile/3.3.5a-windows-386/symbol/simpletop/func.sym +++ b/profile/3.3.5a-windows-386/symbol/simpletop/func.sym @@ -1 +1 @@ -CSimpleTop__OnLayerRender 00495410 f end=0049546A \ No newline at end of file +CSimpleTop__OnLayerRender 00495410 f end=0049546A diff --git a/profile/3.3.5a-windows-386/symbol/sound/func.sym b/profile/3.3.5a-windows-386/symbol/sound/func.sym index 0a725cc..e5f5e70 100644 --- a/profile/3.3.5a-windows-386/symbol/sound/func.sym +++ b/profile/3.3.5a-windows-386/symbol/sound/func.sym @@ -1,9 +1,9 @@ -SI2__SetWeatherKitID 004C8610 f end=004C8622 SE2__StopSound 004C6390 f end=004C6410 SE2__PlaySoundKit 004C6A40 f end=004C713B +SI2__SetWeatherKitID 004C8610 f end=004C8622 SI2__StopAllMusic 004C93B0 f end=004C941B +SI2__RegisterScriptFunctions 00985EA0 f end=00985EC6 +SI2__UnregisterScriptFunctions 00985ED0 f end=00985EEF SI2__StopGlueAmbience 00985F70 f end=00985FA2 SI2__StopGlueMusic 009860E0 f end=00986128 SI2__PlayVocalErrorSound 00986D00 f end=00986DD6 -SI2__RegisterScriptFunctions 00985EA0 f end=00985EC6 -SI2__UnregisterScriptFunctions 00985ED0 f end=00985EEF \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/spell/func.sym b/profile/3.3.5a-windows-386/symbol/spell/func.sym index 4edb4fb..98d6281 100644 --- a/profile/3.3.5a-windows-386/symbol/spell/func.sym +++ b/profile/3.3.5a-windows-386/symbol/spell/func.sym @@ -1,2 +1,2 @@ SpellVisualsClear 007FC9F0 f end=007FCA29 -Spell_C_StopTargeting 00809A60 f end=00809A79 \ No newline at end of file +Spell_C_StopTargeting 00809A60 f end=00809A79 diff --git a/profile/3.3.5a-windows-386/symbol/storm/func.sym b/profile/3.3.5a-windows-386/symbol/storm/func.sym index b8c9c06..fa5c809 100644 --- a/profile/3.3.5a-windows-386/symbol/storm/func.sym +++ b/profile/3.3.5a-windows-386/symbol/storm/func.sym @@ -47,6 +47,7 @@ SCmdRegisterArgList 00773590 f end=007737C2 type="int32_t __stdcall func(ARGLIST SCmdProcess 00773890 f end=00773986 type="int32_t __stdcall func(char* cmdline, int32_t skipprogname, CMDEXTRACALLBACK extracallback, CMDERRORCALLBACK errorcallback)" SCmdProcessCommandLine 00773990 f end=007739AD type="int32_t __stdcall func(CMDEXTRACALLBACK extracallback, CMDERRORCALLBACK errorcallback)" StormInitialize 007739E0 f end=007739F4 +StormDestroy 00773A00 f end=00773A2F StormSetOption 00773A80 f end=00773C81 type="int32_t __stdcall func(int optname, void* optval, uint32_t optlen)" SCritSect__SCritSect 00774620 f end=0077462E type="SCritSect* __thiscall func(SCritSect* this)" SCritSect__destructor 00774630 f end=00774638 type="void __thiscall func(SCritSect *this)" diff --git a/profile/3.3.5a-windows-386/symbol/storm/label.sym b/profile/3.3.5a-windows-386/symbol/storm/label.sym index 691b33c..a4524fe 100644 --- a/profile/3.3.5a-windows-386/symbol/storm/label.sym +++ b/profile/3.3.5a-windows-386/symbol/storm/label.sym @@ -1,3 +1,3 @@ -s_alloccount 00CAE950 l type="uint32_t" -s_freecount 00CAE954 l type="uint32_t" -g_opt 00CAE958 l type="STORMOPTIONS" \ No newline at end of file +s_alloccount 00CAE950 l type="uint32_t" +s_freecount 00CAE954 l type="uint32_t" +g_opt 00CAE958 l type="STORMOPTIONS" diff --git a/profile/3.3.5a-windows-386/symbol/sysmsg/func.sym b/profile/3.3.5a-windows-386/symbol/sysmsg/func.sym index ff9760e..a7df0a6 100644 --- a/profile/3.3.5a-windows-386/symbol/sysmsg/func.sym +++ b/profile/3.3.5a-windows-386/symbol/sysmsg/func.sym @@ -6,4 +6,4 @@ SysMsgGetMaxDisplayLevel 004B4EB0 f end=004B4EB6 SysMsgSetFilter 004B4EC0 f end=004B4ECD SysMsgGetFilter 004B4ED0 f end=004B4ED6 SysMsgGetSeverityColor 004B4EE0 f end=004B4F2D -SysMsgInitialize 004B4F30 f end=004B4F59 \ No newline at end of file +SysMsgInitialize 004B4F30 f end=004B4F59 diff --git a/profile/3.3.5a-windows-386/symbol/tempest/func.sym b/profile/3.3.5a-windows-386/symbol/tempest/func.sym index 57cb1d8..cc59b50 100644 --- a/profile/3.3.5a-windows-386/symbol/tempest/func.sym +++ b/profile/3.3.5a-windows-386/symbol/tempest/func.sym @@ -1,6 +1,6 @@ -CRndSeed__SetSeed 004C1510 f C44Matrix__C44Matrix 00407F40 f end=00407F76 C44Matrix__operator_assign_C44Matrix 00407F80 f end=00407FEA +CRndSeed__SetSeed 004C1510 f C44Matrix__Determinant 004C1930 f C44Matrix__Translate 004C1B30 f C44Matrix__Scale_C3Vector 004C1B90 f @@ -20,7 +20,7 @@ C44Matrix__RotateAroundZ 004C3380 f C44Matrix__Rotate 004C33C0 f C3Vector__Normalize_1 004C3420 f C3Vector__Normalize_2 004C3600 f -C33Matrix__operator_assign_C33Matrix 004C51B0 f TSGrowableArray_C3Vector__SetCount 004C4B80 f end=004C4C75 type="void __thiscall func(TSGrowableArray_C3Vector* this, uint32_t count)" +C33Matrix__operator_assign_C33Matrix 004C51B0 f +TSGrowableArray_C2Vector__SetCount 0057FDD0 f end=0057FE93 type="void __thiscall func(TSGrowableArray_C2Vector* this, uint32_t count)" TSGrowableArray_CImVector__SetCount 00616CA0 f end=00616D07 type="void __thiscall func(TSGrowableArray_CImVector* this, uint32_t count)" -TSGrowableArray_C2Vector__SetCount 0057FDD0 f end=0057FE93 type="void __thiscall func(TSGrowableArray_C2Vector* this, uint32_t count)" \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/textblock/func.sym b/profile/3.3.5a-windows-386/symbol/textblock/func.sym index e15ff95..a91a660 100644 --- a/profile/3.3.5a-windows-386/symbol/textblock/func.sym +++ b/profile/3.3.5a-windows-386/symbol/textblock/func.sym @@ -1,5 +1,5 @@ -TextBlockCreate 004BDAA0 f end=004BDBE4 type="HTEXTBLOCK __stdcall func(HTEXTFONT font, char* text, CImVector* color, C3Vector* pos, float fontHeight, float blockWidth, float blockHeight, uint32_t flags, float charSpacing, float lineSpacing)" -TextBlockGenerateFont 004BE9C0 f end=004BEB8C type="HTEXTFONT __stdcall func(char* fontName, uint32_t fontFlags, float fontHeight)" TextBlockGetFontPtr 004BD9D0 f end=004BD9EA type="CGxFont* __stdcall func(HTEXTFONT font)" +TextBlockCreate 004BDAA0 f end=004BDBE4 type="HTEXTBLOCK __stdcall func(HTEXTFONT font, char* text, CImVector* color, C3Vector* pos, float fontHeight, float blockWidth, float blockHeight, uint32_t flags, float charSpacing, float lineSpacing)" TextBlockSetStringPos 004BDBF0 f end=004BDC4C type="void __stdcall func(HTEXTBLOCK stringHandle, C2Vector* pos)" TextBlockGetWrappedTextHeight 004BDD80 f end=004BDE39 type="float __stdcall func(HTEXTFONT fontHandle, char* text, float a3, float a4, C2Vector* a5, float a6, float a7, uint32_t flags)" +TextBlockGenerateFont 004BE9C0 f end=004BEB8C type="HTEXTFONT __stdcall func(char* fontName, uint32_t fontFlags, float fontHeight)" diff --git a/profile/3.3.5a-windows-386/symbol/texture/func.sym b/profile/3.3.5a-windows-386/symbol/texture/func.sym index 5d121a7..72deb0f 100644 --- a/profile/3.3.5a-windows-386/symbol/texture/func.sym +++ b/profile/3.3.5a-windows-386/symbol/texture/func.sym @@ -1,50 +1,50 @@ -TextureLoadImage 004B81D0 f end=004B8385 type="MipBits* func(const char* filename, uint32_t* width, uint32_t* height, PIXEL_FORMAT* dataFormat, int32_t* isOpaque, CStatus* status, uint32_t* alphaBits, int32_t a8)" +TextureEnableAtlas 004B5390 f end=004B539D +TextureCalcMipCount 004B5510 f end=004B5549 type="int32_t __stdcall func(uint32_t width, uint32_t height)" +TextureGenerateMips 004B5550 f end=004B55D7 +TextureFreeMippedImg 004B55E0 f end=004B55FE +LoadPredrawnMips 004B5A00 f end=004B5BA2 +TextureSetCacheSize 004B6580 f end=004B65D5 +TextureCacheUpdate 004B6AE0 f end=004B6C47 +TextureAllocMippedImg 004B7220 f end=004B72F4 type="MipBits* __stdcall func(PIXEL_FORMAT format, uint32_t width, uint32_t height)" TextureFreeMippedImg 004B7300 f end=004B73D9 type="void func(MipBits* image)" LoadTgaMips 004B78A0 f end=004B7AA0 type="int32_t __usercall func@(char* ext@, char* filename, int32_t a3, MipBits** mipBits, uint32_t* width, uint32_t* height, PIXEL_FORMAT* texFormat, int32_t* isOpaque@, uint32_t* alphaBits, PIXEL_FORMAT* dataFormat)" +TextureInitialize 004B7F80 f end=004B7FF7 LoadBlpMips 004B8070 f end=004B81CE type="int32_t __usercall func@(char* ext@, char* filename@, int32_t a3, MipBits** mipBits, uint32_t* width, uint32_t* height, uint32_t* isOpaque, uint32_t* alphaBits, PIXEL_FORMAT* dataFormat)" -CBLPFile__Pixels 006AF6A0 f end=006AF6D1 type="uint32_t __thiscall func(CBLPFile* this, uint32_t mipLevel)" +TextureLoadImage 004B81D0 f end=004B8385 type="MipBits* func(const char* filename, uint32_t* width, uint32_t* height, PIXEL_FORMAT* dataFormat, int32_t* isOpaque, CStatus* status, uint32_t* alphaBits, int32_t a8)" +CTgaFile__ColorMapEntryBytes 006AA350 f end=006AA379 ; UC +CTgaFile__ColorMapBytes 006AA380 f end=006AA3B0 +CTgaFile__ValidateColorDepth 006AA3B0 f end=006AA3E0 type="int32_t __thiscall func(CTgaFile* this)" +CTgaFile__PreImageBytes 006AA3E0 f end=006AA41B type="uint32_t __thiscall func(CTgaFile* this)" +CTgaFile__AddAlphaChannel_internal 006AA420 f end=006AA51E type="void __thiscall func(CTgaFile* this, uint8_t* pAlphaData, uint8_t* pNoAlphaData, uint8_t* alpha)" ; private utility method +CTgaFile__ReadRawImage 006AA520 f end=006AA62F +CTgaFile__RLEDecompressImage 006AA630 f end=006AA6F2 type="int32_t __thiscall func(CTgaFile* this, uint8_t* pRLEData, uint8_t* pData)" +CTgaFile__SetTopDown 006AA700 f end=006AA81D type="void __thiscall func(CTgaFile* this, int32_t set)" +CTgaFile__ImageTGA32Pixel 006AA840 f end=006AA867 type="TGA32Pixel* __thiscall func(CTgaFile* this)" +CTgaFile__RemoveAlphaChannels 006AA870 f end=006AA948 type="int32_t __thiscall func(CTgaFile* this)" +CTgaFile__Close 006AAF40 f end=006AAFA5 type="int32_t __thiscall func(CTgaFile* this)" +CTgaFile__Open 006AAFB0 f end=006AB0D4 type="int32_t __thiscall func(CTgaFile* this, char* filename, int32_t a3)" +CTgaFile__ConvertColorMapped 006AB0E0 f end=006AB212 +CTgaFile__ReadRleImage 006AB220 f end=006AB381 +CTgaFile__AddAlphaChannel 006AB390 f end=006AB447 type="int32_t __thiscall func(CTgaFile* this, void* pImg)" ; public method +CTgaFile__ReadColorMappedImage 006AB450 f end=006AB4A1 +CTgaFile__LoadImageData 006AB4B0 f end=006AB5B8 type="int32_t __thiscall func(CTgaFile* this, int32_t flags)" +GetBitDepth 006AB5C0 f end=006AB614 +CalcLevelSize 006AB620 f end=006AB6B9 type="uint32_t __cdecl func(uint32_t level, uint32_t width, uint32_t height, uint32_t fourCC)" +CalcLevelCount 006AB700 f end=006AB75C type="uint32_t __stdcall func(uint32_t width, uint32_t height)" +MippedImgAllocA 006AB760 f end=006AB7DF type="MipBits* __stdcall func(uint32_t fourCC, uint32_t width, uint32_t height, char* filename, int32_t linenumber)" +MippedImgSet 006AB810 f end=006AB85E type="void __stdcall func(uint32_t fourCC, uint32_t width, uint32_t height, MipBits* bits)" +FullShrink 006AB860 f end=006ABAAF type="void _stdcall func(C4Pixel* dest, uint32_t destWidth, uint32_t destHeight, C4Pixel* source, uint32_t sourceWidth, uint32_t sourceHeight)" CBLPFile__Close 006AE8B0 f end=006AE8DA type="void __thiscall func(CBLPFile* this)" -CBLPFile__Open 006AFF10 f end=006AFFCF type="int32_t __thiscall func(CBLPFile* this, char* filename)" CBLPFile__Source 006AE900 f end=006AE990 type="int32_t __thiscall func(CBLPFile* this, void* fileBits)" -CBLPFile__LockChain2 006AFFD0 f end=006B012E type="int32_t __thiscall func(CBLPFile* this, char* fileName, PIXEL_FORMAT format, MipBits** images, uint32_t mipLevel, int32_t a6)" -CBLPFile__Lock2 006AFCE0 f end=006AFF06 type="int32_t __thiscall func(CBLPFile* this, char* fileName, PIXEL_FORMAT format, uint32_t mipLevel, unsigned char* data, uint32_t* stride)" -CBLPFile__GetFormatSize 006AF730 f end=006AF7E9 type="int32_t __thiscall func(CBLPFile *this, PIXEL_FORMAT format, uint32_t mipLevel, uint32_t* size, uint32_t* stride)" -CBLPFile__DecompPalARGB8888 006AE9E0 f end=006AEB93 type="void __thiscall func(CBLPFile* this, uint8_t* data, void* tempbuffer, uint32_t colorSize)" CBLPFile__DecompPalFastPath 006AE990 f end=006AE9D6 type="void __thiscall func(CBLPFile* this, uint8_t* data, void* tempbuffer, uint32_t colorSize)" +CBLPFile__DecompPalARGB8888 006AE9E0 f end=006AEB93 type="void __thiscall func(CBLPFile* this, uint8_t* data, void* tempbuffer, uint32_t colorSize)" CBLPFile__DecompPalARGB4444DitherFloydSteinberg 006AEBA0 f end=006AEE61 type="void __thiscall func(CBLPFile* this, uint8_t* data, void* tempbuffer, uint32_t width, uint32_t height)" CBLPFile__DecompPalARGB1555DitherFloydSteinberg 006AEE70 f end=006AF133 type="void __thiscall func(CBLPFile* this, uint8_t* data, void* tempbuffer, uint32_t width, uint32_t height)" CBLPFile__DecompPalARGB565DitherFloydSteinberg 006AF140 f end=006AF33F type="void __thiscall func(CBLPFile* this, uint8_t* data, void* tempbuffer, uint32_t width, uint32_t height)" CBLPFile__DecompPalARGB2565DitherFloydSteinberg 006AF340 f end=006AF65D type="void __thiscall func(CBLPFile* this, uint8_t* data, void* tempbuffer, uint32_t width, uint32_t height)" +CBLPFile__Pixels 006AF6A0 f end=006AF6D1 type="uint32_t __thiscall func(CBLPFile* this, uint32_t mipLevel)" +CBLPFile__GetFormatSize 006AF730 f end=006AF7E9 type="int32_t __thiscall func(CBLPFile *this, PIXEL_FORMAT format, uint32_t mipLevel, uint32_t* size, uint32_t* stride)" CBLPFile__DecompPal 006AF810 f end=006AF984 type="int32_t __thiscall func(CBLPFile* this, PIXEL_FORMAT format, uint32_t mipLevel, uint8_t* data, void* tempBuffer)" -CTgaFile__AddAlphaChannel_internal 006AA420 f end=006AA51E type="void __thiscall func(CTgaFile* this, uint8_t* pAlphaData, uint8_t* pNoAlphaData, uint8_t* alpha)" ; private utility method -CTgaFile__AddAlphaChannel 006AB390 f end=006AB447 type="int32_t __thiscall func(CTgaFile* this, void* pImg)" ; public method -CTgaFile__RemoveAlphaChannels 006AA870 f end=006AA948 type="int32_t __thiscall func(CTgaFile* this)" -CTgaFile__Open 006AAFB0 f end=006AB0D4 type="int32_t __thiscall func(CTgaFile* this, char* filename, int32_t a3)" -CTgaFile__Close 006AAF40 f end=006AAFA5 type="int32_t __thiscall func(CTgaFile* this)" -CTgaFile__LoadImageData 006AB4B0 f end=006AB5B8 type="int32_t __thiscall func(CTgaFile* this, int32_t flags)" -CTgaFile__ReadRawImage 006AA520 f end=006AA62F -CTgaFile__ReadRleImage 006AB220 f end=006AB381 -CTgaFile__ConvertColorMapped 006AB0E0 f end=006AB212 -CTgaFile__ReadColorMappedImage 006AB450 f end=006AB4A1 -CTgaFile__ColorMapEntryBytes 006AA350 f end=006AA379 ; UC -CTgaFile__ColorMapBytes 006AA380 f end=006AA3B0 -CTgaFile__SetTopDown 006AA700 f end=006AA81D type="void __thiscall func(CTgaFile* this, int32_t set)" -CTgaFile__ImageTGA32Pixel 006AA840 f end=006AA867 type="TGA32Pixel* __thiscall func(CTgaFile* this)" -CTgaFile__ValidateColorDepth 006AA3B0 f end=006AA3E0 type="int32_t __thiscall func(CTgaFile* this)" -CTgaFile__PreImageBytes 006AA3E0 f end=006AA41B type="uint32_t __thiscall func(CTgaFile* this)" -CTgaFile__RLEDecompressImage 006AA630 f end=006AA6F2 type="int32_t __thiscall func(CTgaFile* this, uint8_t* pRLEData, uint8_t* pData)" -TextureCalcMipCount 004B5510 f end=004B5549 type="int32_t __stdcall func(uint32_t width, uint32_t height)" -TextureAllocMippedImg 004B7220 f end=004B72F4 type="MipBits* __stdcall func(PIXEL_FORMAT format, uint32_t width, uint32_t height)" -MippedImgSet 006AB810 f end=006AB85E type="void __stdcall func(uint32_t fourCC, uint32_t width, uint32_t height, MipBits* bits)" -MippedImgAllocA 006AB760 f end=006AB7DF type="MipBits* __stdcall func(uint32_t fourCC, uint32_t width, uint32_t height, char* filename, int32_t linenumber)" -LoadPredrawnMips 004B5A00 f end=004B5BA2 -FullShrink 006AB860 f end=006ABAAF type="void _stdcall func(C4Pixel* dest, uint32_t destWidth, uint32_t destHeight, C4Pixel* source, uint32_t sourceWidth, uint32_t sourceHeight)" -TextureGenerateMips 004B5550 f end=004B55D7 -CalcLevelSize 006AB620 f end=006AB6B9 type="uint32_t __cdecl func(uint32_t level, uint32_t width, uint32_t height, uint32_t fourCC)" -CalcLevelCount 006AB700 f end=006AB75C type="uint32_t __stdcall func(uint32_t width, uint32_t height)" -GetBitDepth 006AB5C0 f end=006AB614 -TextureEnableAtlas 004B5390 f end=004B539D -TextureFreeMippedImg 004B55E0 f end=004B55FE -TextureSetCacheSize 004B6580 f end=004B65D5 -TextureCacheUpdate 004B6AE0 f end=004B6C47 -TextureInitialize 004B7F80 f end=004B7FF7 \ No newline at end of file +CBLPFile__Lock2 006AFCE0 f end=006AFF06 type="int32_t __thiscall func(CBLPFile* this, char* fileName, PIXEL_FORMAT format, uint32_t mipLevel, unsigned char* data, uint32_t* stride)" +CBLPFile__Open 006AFF10 f end=006AFFCF type="int32_t __thiscall func(CBLPFile* this, char* filename)" +CBLPFile__LockChain2 006AFFD0 f end=006B012E type="int32_t __thiscall func(CBLPFile* this, char* fileName, PIXEL_FORMAT format, MipBits** images, uint32_t mipLevel, int32_t a6)" diff --git a/profile/3.3.5a-windows-386/symbol/texture/label.sym b/profile/3.3.5a-windows-386/symbol/texture/label.sym index c700436..9e366c6 100644 --- a/profile/3.3.5a-windows-386/symbol/texture/label.sym +++ b/profile/3.3.5a-windows-386/symbol/texture/label.sym @@ -1,3 +1,3 @@ s_pixelFormatToMipBitsCache 009F1074 l +CBLPFile__s_eightBitAlphaLookup 00AD90B0 l type="uint8_t[16]" CBLPFile__s_oneBitAlphaLookup 00AD90C0 l type="uint8_t[2]" -CBLPFile__s_eightBitAlphaLookup 00AD90B0 l type="uint8_t[16]" \ No newline at end of file diff --git a/profile/3.3.5a-windows-386/symbol/unit/func.sym b/profile/3.3.5a-windows-386/symbol/unit/func.sym index b2e072c..2e5b336 100644 --- a/profile/3.3.5a-windows-386/symbol/unit/func.sym +++ b/profile/3.3.5a-windows-386/symbol/unit/func.sym @@ -1 +1 @@ -CGUnit_C__StopMissileTrajectoryTargeting 006FBF00 f end=006FBF7B \ No newline at end of file +CGUnit_C__StopMissileTrajectoryTargeting 006FBF00 f end=006FBF7B diff --git a/profile/3.3.5a-windows-386/symbol/utf/func.sym b/profile/3.3.5a-windows-386/symbol/utf/func.sym index 00810bd..e122f8d 100644 --- a/profile/3.3.5a-windows-386/symbol/utf/func.sym +++ b/profile/3.3.5a-windows-386/symbol/utf/func.sym @@ -1 +1,2 @@ -ConvertUTF16toUTF8 0047B9E0 f end=0047BB9C type="int __stdcall func(char* dst, uint32_t dstMaxChars, uint16_t* src, uint32_t srcMaxChars, uint32_t* dstChars, uint32_t* srcChars)" \ No newline at end of file +ConvertUTF16toUTF8 0047B9E0 f end=0047BB9C type="int __stdcall func(char* dst, uint32_t dstMaxChars, uint16_t* src, uint32_t srcMaxChars, uint32_t* dstChars, uint32_t* srcChars)" +sgetu8 0047BD40 f ; int __cdecl sgetu8(_BYTE *, _DWORD *) diff --git a/profile/3.3.5a-windows-386/symbol/utf/label.sym b/profile/3.3.5a-windows-386/symbol/utf/label.sym index a8225ea..ad40629 100644 --- a/profile/3.3.5a-windows-386/symbol/utf/label.sym +++ b/profile/3.3.5a-windows-386/symbol/utf/label.sym @@ -1 +1 @@ -firstByteMark 009e9ec8 l type="uint32_t[7]" \ No newline at end of file +firstByteMark 009E9EC8 l type="uint32_t[7]" diff --git a/profile/3.3.5a-windows-386/symbol/videooptions/func.sym b/profile/3.3.5a-windows-386/symbol/videooptions/func.sym index 75a57ed..f4591d6 100644 --- a/profile/3.3.5a-windows-386/symbol/videooptions/func.sym +++ b/profile/3.3.5a-windows-386/symbol/videooptions/func.sym @@ -1,2 +1,2 @@ CGVideoOptions__RegisterScriptFunctions 0054EC00 f end=0054EC23 -CGVideoOptions__UnregisterScriptFunction 0054EC30 f end=0054EC4C \ No newline at end of file +CGVideoOptions__UnregisterScriptFunction 0054EC30 f end=0054EC4C diff --git a/profile/3.3.5a-windows-386/symbol/world/func.sym b/profile/3.3.5a-windows-386/symbol/world/func.sym index 22900e9..2aa52a1 100644 --- a/profile/3.3.5a-windows-386/symbol/world/func.sym +++ b/profile/3.3.5a-windows-386/symbol/world/func.sym @@ -1 +1 @@ -World__SetLoadProgressCallback 0077EC90 f end=0077ECA6 \ No newline at end of file +World__SetLoadProgressCallback 0077EC90 f end=0077ECA6 diff --git a/profile/3.3.5a-windows-386/symbol/worldframe/func.sym b/profile/3.3.5a-windows-386/symbol/worldframe/func.sym index e58a2c2..bbdeba5 100644 --- a/profile/3.3.5a-windows-386/symbol/worldframe/func.sym +++ b/profile/3.3.5a-windows-386/symbol/worldframe/func.sym @@ -1,32 +1,32 @@ -CGWorldFrame__UnitClear 004FA5D0 f end=004FA5EF CGWorldFrame__GetActiveCamera 004F5960 f end=004F5973 CGWorldFrame__SendObjectTrackEvent 004F5980 f end=004F59E2 CGWorldFrame__CursorTrackObject 004F59F0 f end=004F5A52 +CGWorldFrame__OnFrameSizeChanged 004F5A90 f end=004F5C10 CGWorldFrame__OnLayerCursorExit 004F5C10 f end=004F5C78 +CGWorldFrame__SetNamePlateUpdate 004F5D80 f end=004F5D88 CGWorldFrame__GetCameraFacing 004F6680 f end=004F66B4 CGWorldFrame__OnLayerTrackTerrain 004F66C0 f end=004F6961 +CGWorldFrame__OnLayerMouseDown 004F6C10 f end=004F6C89 CGWorldFrame__GetScreenCoordinates 004F6D20 f end=004F6F4C CGWorldFrame__SetCameraTarget 004F6F50 f end=004F6F85 CGWorldFrame__SetScreenEffect 004F7020 f end=004F716A +CGWorldFrame__IsLegalSelection 004F7530 f end=004F75B9 +CGWorldFrame__GetHitTestFilterFlags 004F7650 f end=004F77BA CGWorldFrame__PerformDefaultAction 004F7880 f end=004F7A3B CGWorldFrame__CursorTrackUnit 004F7A50 f end=004F7FE7 CGWorldFrame__CursorTrackCorpse 004F8000 f end=004F8182 CGWorldFrame__OnLayerTrackObject 004F8190 f end=004F837C +CGWorldFrame__UpdateScreenEffect 004F88B0 f end=004F89D1 CGWorldFrame__OnWorldRender 004F8EA0 f end=004F9298 CGWorldFrame__MoveToFreeList 004F9310 f end=004F940F -CGWorldFrame__HitTestPoint 004F9DA0 f end=004F9F6B -CGWorldFrame__OnLayerUpdate 004FA040 f end=004FA371 -CGWorldFrame__OnWorldUpdate 004FA5F0 f end=004FABC5 -CGWorldFrame__RenderWorld 004FAF90 f end=004FB079 -CGWorldFrame__OnFrameRender 004FB080 f end=004FB0AD -CGWorldFrame__IsLegalSelection 004F7530 f end=004F75B9 -CGWorldFrame__GetHitTestFilterFlags 004F7650 f end=004F77BA -CGWorldFrame__UpdateScreenEffect 004F88B0 f end=004F89D1 CGWorldFrame__FindClosestModel 004F9550 f end=004F992E CGWorldFrame__HitTest 004F9930 f end=004F9D94 +CGWorldFrame__HitTestPoint 004F9DA0 f end=004F9F6B CGWorldFrame__ObjectEnumProc 004F9F70 f end=004FA040 +CGWorldFrame__OnLayerUpdate 004FA040 f end=004FA371 CGWorldFrame__SetupDefaultAction 004FA570 f end=004FA5CE -CGWorldFrame__OnFrameSizeChanged 004F5A90 f end=004F5C10 -CGWorldFrame__SetNamePlateUpdate 004F5D80 f end=004F5D88 -CGWorldFrame__OnLayerMouseDown 004F6C10 f end=004F6C89 -CGWorldFrame__CGWorldFrame_Ctor 004FABD0 f end=004FAF5E \ No newline at end of file +CGWorldFrame__UnitClear 004FA5D0 f end=004FA5EF +CGWorldFrame__OnWorldUpdate 004FA5F0 f end=004FABC5 +CGWorldFrame__CGWorldFrame_Ctor 004FABD0 f end=004FAF5E +CGWorldFrame__RenderWorld 004FAF90 f end=004FB079 +CGWorldFrame__OnFrameRender 004FB080 f end=004FB0AD diff --git a/profile/3.3.5a-windows-386/symbol/wowsys/func.sym b/profile/3.3.5a-windows-386/symbol/wowsys/func.sym index e23aaf8..c441725 100644 --- a/profile/3.3.5a-windows-386/symbol/wowsys/func.sym +++ b/profile/3.3.5a-windows-386/symbol/wowsys/func.sym @@ -1,8 +1,8 @@ +WowSysMessageOutput__Shutdown 0040B320 f end=0040B38C WowSysMessageOutput__Enable 0040B390 f end=0040B3B3 WowSysMessageOutput__Disable 0040B3C0 f end=0040B3D1 -WowSysMessageOutput__Output 0040B420 f end=0040B53E -WowSysMessageOutput__Initialize 0040B710 f end=0040B7CD WowSysMessageOutput__Show 0040B3E0 f end=0040B3F1 WowSysMessageOutput__Hide 0040B400 f end=0040B411 +WowSysMessageOutput__Output 0040B420 f end=0040B53E WowSysMessageOutput__Paint 0040B540 f end=0040B70E -WowSysMessageOutput__Shutdown 0040B320 f end=0040B38C \ No newline at end of file +WowSysMessageOutput__Initialize 0040B710 f end=0040B7CD diff --git a/profile/3.3.5a-windows-386/x64dbg/game.dd32 b/profile/3.3.5a-windows-386/x64dbg/game.dd32 index 5dbe7d0ab3f427f6ff7f97852635e995e778c4ea..c2b4fff35bc7d8d92a5a0feb2ee8ed96b99f9c75 100644 GIT binary patch literal 128658 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%0A7~L-n_$#EIj72V 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

8qT}|dOGS1V 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