# Function names for sacred.exe (Sacred Gold 2.28), applied to the Ghidra # project by tools/rename.ps1. One "0xADDRESS Name" per line; "Class::Method" # names go into a class namespace. Keep in sync with src/game/addresses.h. # --- startup / engine core --------------------------------------------------- 0x0066f1c0 Log 0x00813140 CmdLineHasFlag 0x0066e500 GetMouseClientPos 0x008122a0 MainWindowProc 0x00849701 __RTDynamicCast 0x0084aa86 ToUpper # --- renderer ---------------------------------------------------------------- 0x00645390 DxDriver7::SetDisplayMode 0x00645f70 DxDriver7::Flip 0x00646f50 DxDriver7::BeginScene 0x00646fd0 DxDriver7::EndScene 0x006469d0 DxDriver7::LoadingScreen # --- kernel event queue ------------------------------------------------------ 0x00808490 Kernel_Instance 0x00808930 cKernel::PostEvent # (event, flags, delayMs); key events (category 4) are queued 0x008087b0 cKernel::DispatchQueued # --- engine (cEngine, vtable 0x88ff34) --------------------------------------- 0x0060e3f0 cEngine::RenderThreadLoop 0x0060f1d0 cEngine::Tick # per game tick (10 Hz): queued events, then hold-to-move orders 0x00618130 cEngine::ReceiveEvent # vf00: offers events to the UI, then engine hotkeys (A, P, Q/W/E/R/B/Space, ^) 0x00617360 cEngine::HandleMouseButton # click: pick object / walk to ground point 0x006170d0 cEngine::SendCreatureOrder # (creature, cEvent_creature*): snaps ground targets, then creature->vf18 0x00611f10 cEngine::UpdateCursorPick # per frame: object under the cursor 0x00610650 cEngine::ScrollInput # arrow keys: walk object #2 or scroll the camera 0x00613040 cEngine::UseActionSlot # hotkeys Q/W/E/R/B/Space 0x00613710 cEngine::CaptureScreen # save-game thumbnail # --- objects / creatures ----------------------------------------------------- 0x005fe060 cObjectManager::GetObject # (id); manager at *0xad3bc0 0x00603e90 cObjectManager::GetPlayerHero 0x00546ed0 cCreature::IsWalking # state +0x150 == 1 0x0052e400 cCreature::ReceiveOrder # vf18 0x004fb620 cCreature::TraceToCursor # line trace from the creature to the cursor's world point (aiming) # --- mouse cursor (single instance) ------------------------------------------ 0x006550f0 MouseCursor_Instance 0x00654e10 cMouseCursor::cMouseCursor 0x00655670 cMouseCursor::SetPosition 0x006559e0 cMouseCursor::GetX 0x006559f0 cMouseCursor::GetY 0x006559a0 cMouseCursor::GetPreviousPosition 0x006555e0 cMouseCursor::DrawItem 0x00655ab0 cMouseCursor::IsButtonHeld # --- world view (cWorldView0, vtable 0x8900f8) ------------------------------- 0x00624ae0 cWorldView0::SetupView 0x00628210 cWorldView0::SetZoom 0x006322b0 cWorldView0::Render 0x0062a730 cWorldView0::UpdateCamera 0x0062b000 cWorldView0::RenderTileRow # tiles + collects objects into the draw lists 0x0062e580 cWorldView0::DrawObjects 0x006300d0 cWorldView0::DrawObjects2 0x00623c40 cWorldView0::WorldToScreen 0x00623a20 cWorldView0::ScreenToView 0x00626d30 cWorldView0::PickObjectAt # (screen x, y) -> object id 0x00627260 cWorldView0::DrawObjectLabels # Alt 0x006426a0 BuildOrthoMatrix # --- UI ---------------------------------------------------------------------- 0x00756820 UiManager_Instance # *0x17ecb3c 0x00756940 cUI_Manager::ThreadLoop 0x00757120 cUI_Manager::ReceiveEvent # vf00: UI hotkeys (C F H I L M N O S T) 0x007587b0 cUI_Manager::Render 0x0075a860 cUI_Manager::GetFocus 0x0075a370 cUI_Manager::IsUiAtPoint 0x0075bbf0 cUI_Manager::DrawStatusLine 0x0075c200 cUI_Manager::DrawMessage 0x00731d40 cUI_Window2::HitTest 0x006dfb10 cUI_Taskbar2::HitTest 0x006e1970 cUI_Taskbar2::HandleEvent # digit keys: 1-5 weapon sets, 6-0 combat-art slots 0x006e1440 cUI_Taskbar2::SelectWeaponSet # digits 1-5 0x006e17d0 cUI_Taskbar2::SelectSkillSlot # digits 6-0: right mouse button combat art 0x006e3ac0 cUI_Taskbar2::Render 0x006e7300 cUI_Tooltip::Render # cInventoryEntry (32 x 0x1180 in one block, see docs/skill-slots.md) 0x005deb80 cInventoryManager::Instance # allocates 32 inventories (0x23008 bytes) 0x005dec50 cInventoryManager::GetInventory # index * 0x1180 0x005d7a10 cInventoryEntry::Construct 0x005d7bf0 cInventoryEntry::Destruct 0x005d7d30 cInventoryEntry::Clear # zeroes grid, weapon sets, art slots 0x005d80e0 cInventoryEntry::ReplaceItemId # grid + weapon sets 0x005d86c0 cInventoryEntry::GetWeaponSetItem # (set, hand) 0x005d86f0 cInventoryEntry::SetWeaponSetItem # (set, hand, id, notify) -> network 299 0x005d8930 cInventoryEntry::SetWeaponSet # (set, left, right, notify) -> network 300 0x005d8be0 cInventoryEntry::TakeWeaponSetItem 0x005d8d00 cInventoryEntry::GetWeaponSetItemPos 0x005d9200 cInventoryEntry::SetArtVariant # 0x1162 bit 2: second art slot set (mounted?) 0x005d93e0 cInventoryEntry::GetArtSlotType 0x005d9420 cInventoryEntry::GetArtSlotRef 0x005d9480 cInventoryEntry::SetArtSlot # -> network 0x129 0x005d9680 cInventoryEntry::ClearArtSlot # -> network 0x12a 0x005d9820 cInventoryEntry::SelectSlot # (slot, kind 0 weapons / 1 arts) -> +0xd58 0x005d9b60 cInventoryEntry::GetSelectedSlot # (kind) 0x005dd9f0 cInventoryEntry::Serialize # (stream, write) 0x005de8a0 cInventoryEntry::FixInventory 0x005da880 cInventoryEntry::GetPotionRef 0x0057f750 SlotCountForLevel # table 0x95503c, max 5 0x008110d0 GameWindowProc # in-game window procedure: keys (dead keys, modifiers 0x182cdec) 0x005def60 cInventoryManager::Serialize # (stream, write, x): all 32 inventories, save games 0x005d9450 cInventoryEntry::GetArtSlotData 0x005de4e0 cInventoryEntry::CollectItemIds # grid items only 0x0055fac0 cCreature::AssignArtToSlot # (art, slot), rejects slot > 4 0x006046f0 ItemDataMgr::saveHero 0x00605900 ItemDataMgr::loadHero 0x006dffa0 cUI_Taskbar2::SetSlotCount # shows the first n slots of each row, n from SlotCountForLevel 0x006e4ba0 cUI_Taskbar2::Layout # creates the slot controls and buttons 0x006dfce0 cUI_Taskbar2::SkillSlotAt # (x, y, out slot) 0x006dfd40 cUI_Taskbar2::WeaponSetAt # (x, y, out slot) 0x006df9a0 cUI_Taskbar2::UpdateSlotHighlight 0x006e2790 cUI_Taskbar2::RenderWeaponSets 0x006e31e0 cUI_Taskbar2::RenderArtSlots 0x006e4310 cUI_Taskbar2::UpdateTooltips 0x0081c020 Options::CombineSlots # COMBINE_SLOTS: weapon set also selects the art slot