| Age | Commit message (Collapse) | Author |
|
CSV: mechanical renames for uking functions
|
|
data: name TU static initialisers
|
|
|
|
|
|
Update functions CSV for library functions
|
|
Names come from the shape of each body, its vtable slot and the
singleton disposer pattern. Thunks are named after the slot they
forward to (e.g. IndoorStageMapProps::m2 is actually
IndoorStage::getMapFileNameForPlayerPos_thunk10).
Also renames the j__ZdlPv_NNN operator delete stubs to dtorDelete, and
two j_ stubs after the uking functions they jump to.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
The decomp's top-level game headers declare namespace uking.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
Most of these just gain the uking::ui namespace, the owner class the
CSV already uses for that code, or the SingletonDisposer_ spelling.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
In the IDB, UI parts are identified by vtables that derive from the
common part base; map icons, markers, resources and managers by their
own vtables. Type info getters are named after eui's GetRuntimeTypeInfo
(from Labo symbols), and sead-style ones keep sead's names.
SingletonDisposer_ dtors follow sead's singleton macro.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
Screen rows that already had a decomp name move into uking::ui. ScreenEx
and ScreenAppCamera overrides take the trailing underscore of the
eui::Screen virtuals they override, such as doBuildLayout_.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
Screens have secondary vtables at +0x108 and +0x110, hence the
_thunk108/_thunk110 suffixes on the dtor thunks. The 4-byte
j_ScreenEx::m0 jump stubs are screen dtors; most of them sit right
before their screen's dtor_thunk108. RTTI getters take sead's
checkDerivedRuntimeTypeInfo/getRuntimeTypeInfo names. The namespace is
uking::ui, as in src/Game/UI.
Also renames some PauseMenuScreen rows to ScreenPauseMenu, the name its
ctor row uses.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
m<N> placeholders take the name of the slot they override. Slot names
come from actBaseProc.h/actActor.h where declared, otherwise from the
IDB's name for the base class's slot.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
Adjustor thunks keep a suffix taken from their vtable's offset-to-top,
e.g. _thunk180 for actors' first secondary vtable. A few ActorOption and
DamageMgrBow dtor thunks use mangled non-virtual thunk names instead.
Plain forwarding thunks take a j_ prefix on their target's name.
Also names five deleteInstance functions.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
uking::act follows the decomp's src/Game/Actor headers, which already
declare it. acc:: was never a namespace: its accessors move into
uking::act, most of them taking an ActorLinkConstDataAccess, and so do
the dlc::, dragon:: and wm:: free functions.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
Base class slots were named in the IDB from the base class body and how
the overrides use them, and each name is carried to the overrides, e.g.
WolfLinkRoot::m34 becomes shouldChangeToWaterAction.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
Most rows are dtors of AI helper classes (actor filters, message senders
and receivers, damage callbacks), identified by the base class vtable
their dtor reinstalls. Damage callbacks are nested in the AI that
installs them, e.g. GolemRoot::DamageCallback.
Also names the camera AIs' dtors, dtorDelete rows that were j__ZdlPv_NN
placeholders, a few secondary-base thunks and
IsPlayerOrWolfLinkActorFilter's ctor.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
Base class slots were named in the IDB from how the base class calls
them and what the overrides do, and each name is carried to every
override, e.g. m32 becomes playGrabAS in Grab and the other grab
actions.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
Names follow the owning vtable. Thunks of other virtuals in secondary
vtables keep a _thunkNN suffix (e.g.
SandwichDetectionAreaTag::observeActor_thunk20).
One ctor and its dtors belong to an observer, not an action, so they're
named uking::act::ChemicalElementObserver.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
Slot names are the virtual functions that ksys::act::ai::Behavior
declares, applied by vtable position. Nearly all of these rows also move
from the AI_Behavior prefix into uking::behavior.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
The IDB's rtti1/rtti2 placeholders become checkDerivedRuntimeTypeInfo
and getRuntimeTypeInfo, and j_ thunks take their target's slot name
(e.g. m6 becomes init_). A damage callback that only one behaviour
installs in the IDB is nested in it, e.g.
SetAllOneDamageDCCallback::DamageCallback.
Also fixes two deleting dtors that were misnamed Enemy::dtor_delete and
Guardian::dtor_delete. They follow the EnemyFrontNeckRotate and
SwarmPatternCross ctors, so they're those behaviours' dtors.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
The IDB's AI_Behavior prefix becomes uking::behavior on these rows,
matching uking::action and uking::ai. There's no game-side behaviour
source in the decomp yet.
Some rows also change class. Registered names come from
AIDef_Game.product.yml; base class names come from the IDB, based on the
base class ctor each ctor calls. The XBase names,
CreateEaselFromMapUnit, NoiseWithSensor, NoisySwarmPattern and the
existing SetDamageCallback aren't official.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
The IDB's AI_Action, AI_AI and AI_Query prefixes become uking::action,
uking::ai and uking::query.
Most AI_Action<Name>/AI_AI<Name> ctors also move to the class whose
vtable they install in the IDB; nearly all of them sit right before that
class's members (e.g. uking::ai::VacuumEnemyRoot's).
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
Each of these is the create_fn that the AI factory tables pair with a
class name hash, so it's the make<T> for the class that
AIDef_Game.product.yml gives that hash. Unknown_<hash> entries are
resolved by crc32 (e.g. crc32("Die") = 0x0135b937).
The ones whose make<T> the decomp already instantiates are now marked as
compiled (matching or non-matching).
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
Some uking::action and uking::ai reenter_ names had copied ActionBase's
own mangling, so their S2_ back-reference pointed at nothing and they
couldn't be demangled. They now spell out ksys::act::ai::ActionBase*,
as declared in actAiActionBase.h.
(AI assisted using Claude Opus 5.5)
|
|
Named sinit_ plus a best guess at their TU's file name, from the
functions around them; Maybe marks the weak guesses.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
0x71013f2cd0 installs the same vtables as OfxLensFlare's ctor and is
called by its deleting dtor, so it's OfxLensFlare's dtor, not
OfxLensFlareDynamic's.
The other three are named from where they are and what's around them
(the sinit between sead::CalendarTime and sead::DateSpan, createInstance
between ParticleMgr's singleton disposer and deleteInstance, and getLerp
after SHUtil's setConstantColor with the same size as Labo's).
(AI assisted using Claude Opus 5.5)
|
|
In Labo, the 1108-byte EmitBySearchOrder comes before InitializeParticle
and the 8-byte Emit comes after it, and BotW's functions there have the
same sizes. The atk ctor is where Labo has
StreamSoundPrefetchFileReader's ctor, right after StreamSoundPlayer's
sound-thread thunks and before its Initialize.
(AI assisted using Claude Opus 5.5)
|
|
0x7100c1016c had an agl::pfx name that was only based on a similar
function body. Labo's gsys has ModelScene::skipDraw with the same body,
also right before isBoundLayer_.
(AI assisted using Claude Opus 5.5)
|
|
Names unnamed and placeholder rows, mostly gsys, agl, nn and eui, by
lining up address order, call sequences, vtables and callees with
already named functions, then reading the rest. A spot check on an
earlier, larger version of this set found 210 of 215 names right.
Also fixes about 40 wrong names (e.g. swapped agl::ShaderProgram
create/destroy pairs), moves the GPUMemBlock<sead::Vector4f> dtor name
to 0x71013bd2c4 and blanks four nullsub_ placeholders. Three
GPUMemBlock dtors get placeholder classes until T is known.
(AI assisted using Claude Opus 5.5)
|
|
Each function is named in the IDB after the vtable slot it fills. The
sead NinJoyNpadController and eui GetRuntimeTypeInfo names are in Labo's
symbols, and getSortKey is the xlink2::IUser slot that Labo's own
override is named after. The hcl and nn::nex names match other overrides
of the same slot that are already in the CSV.
Also marks the hcl row as L since Havok is excluded from the decomp.
(AI assisted using Claude Opus 5.5)
|
|
Out-of-line ctors and dtors are C1/D1 like in the reference builds, and
inline ones are C2/D2. Only the symbol variant changes, except that
sead::FrameHeap's dtor also drops a _0 suffix it doesn't need.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
The IDB names come from Super Mario Odyssey, Labo and Splatoon 2
matches, vtable installs, and, for delegates, the owner and member
function stored where each one is constructed. Most rows had no name or
were nullsub_.
The rest had placeholders or wrong names, like
nn::nex::SecureStream::ReleaseURL on sead::TreeMap::deleteValue. The
RIDDemoSaveFileDevice rows are actually sead::PathPrefixFileDevice, and
the LightPrePassLightMgr rows use agl's light types, not al:: ones.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
These function bodies match builds with symbols of Super Mario Odyssey
1.0, Labo or Splatoon 2 3.1.0; fuzzy matches were checked against
callees in the IDB. Most rows had no name and the rest were nullsub_
placeholders.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
Unnamed and nullsub_ rows get the name of the virtual they implement,
from the vtable types in the lib/ headers and, in the IDB, from Super
Mario Odyssey vtables with identical bodies.
Also makes FixedSafeString rows carry the size each caller constructs
(0x7100b70d20 is actually EnvObj::setGroupNameCopy in the IDB, which
frees FixedSafeString<59> for 0x7101026ec0), drops unneeded _0
suffixes, adds missing namespaces, removes stray `$`s, and gives a
few rows the class or type the IDB has for them (e.g.
FxReverbI3DL2::setupGains_).
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
Classes come from the vtable a ctor or dtor installs, or from matching
vtables slot by slot against Super Mario Odyssey and Splatoon 2. The
RTTI rows include sead::RuntimeTypeInfo::Derive<>::isDerived
instantiations over ksys and uking classes.
Also fixes dtor names that a body shape match had put on the wrong
class, and the this-adjustment of three aal::AuxBusRootFx thunks.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
For code that isn't in the decomp yet. The IDB names mostly come from
Splatoon 2 and Super Mario Odyssey matches and from names carried over
between vtables with the same RTTI class.
Some of these replace wrong names rather than placeholders: agl, eui and
gsys names that sat on nex, atk, g3d and ui2d functions, DataStore
*_PrepareRequest names on NATTraversalEngine and SocketTransport
functions, and DataStore Call* stubs, which are now named after the RMC
method ID each one passes.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
These function bodies match builds with symbols of Super Mario Odyssey
1.0, Splatoon 2 3.1.0 or Labo. Fuzzy matches are checked against callees
and strings, and the weakest ones get a Maybe suffix.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
These rows had the right member function on the wrong class, mostly
PseudoGlobalVariable<X> names shifted between instantiations and
sibling atk sound classes. Classes come from vtable RTTI matched against
Super Mario Odyssey, or from identical Labo/Splatoon 2 bodies.
Also moves 0x710133adb4 to the one-argument
SoundArchivePlayer::GetRequiredMemSize overload.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
Slot names come from Super Mario Odyssey's vtable for the class with
the same RTTI name, kept only where the neighbouring slots and the
function body agree. The two names that no symbol spells out get a
Maybe suffix.
Also fixes a few wrong names, e.g. 0x7100abe02c is Window::DrawSelf,
not Picture's.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
Classes come from each vtable's RTTI name, and symbols from the same
vtable slot in Super Mario Odyssey or Splatoon 2, checked against the
function body.
Also fixes rows that a body shape match had given another nex class's
name (e.g. 0x7100cafa3c is LockChecker's dtor, not Event's), and a few
nex thunks with the wrong this-adjustment.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
Most static initialisers are named after the reflection record they
build, and the hkSingletonRegister ones after the singleton they
register. The rest are the IDB's names, which came from the Havok
2014.1 headers, the Havok Project Anarchy headers (for hkai) or a Win32
Havok build with symbols.
Also replaces a few agl/aal/nn::font/game names that a body match had
put on Havok code (e.g. SnowVolume::clearModifyFlag).
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
hk and hka slots follow the Havok 2014.1 headers, and hkai slots the
Havok Project Anarchy headers (2014.0.5, two minor versions older than
the game's 2014.2.0). hcl has no public headers, so its names, and the
hkai slots that 2014.2 added, are inferred from reflected fields,
asserts and timer labels; the least certain ones get a Maybe suffix. As
in hkp, ctorFinish rows take the class of the finishFunctionImpl<T>
that calls them.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
Dtors fill slots 0 and 1 of a vtable found through hkTypeInfo or
through the ctor that installs it, which also names the ctor. D1 vs D2
follows the IDB, which took it from the reference builds' symbols. Most
thunks take their target's IDB name with a _thunkNN suffix; dtor thunks
for secondary bases take their _ZThn symbol. Nested classes such as
hkaiPathfindingUtil::FindPathInput take the scoped name from their
hkTypeInfo.
Also fixes hkBinaryPackfileWriter::save, which is actually the D1 dtor.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
Covers hkp rows that aren't in the decomp source yet. The IDB named
them mostly from Havok reflection and the Havok 2014.1 headers; static
initialisers are named after the reflection records they build.
Also replaces a few nex, atk, ui2d and Super Mario Odyssey names that a
matcher had put on Havok code because the bodies looked similar, and
fixes some older hkp names (e.g. hkpRigidBody::getClass is actually
staticClass).
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
Vtables are found through hkTypeInfo and named from the Havok 2014.1
headers, but only where the slot count matches exactly. ctorFinish
rows take the class of the finishFunctionImpl<T> that calls them.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
Classes come from hkTypeInfo/hkClass registration and vtable slots from
the Havok 2014.1 headers. Thunks take their target's IDB name and
this-offset, e.g. hkpListShape::dtor_thunk18.
Also respells some older hkp dtor names as D0/D1/D2 symbols, and moves
one dtor from hkpClosestCdPointCollector to the base dtor of
hkpCdPointCollector.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
Almost all of these are the finish or cleanup function of an hkTypeInfo
record. The IDB names them after the record's type name string, e.g.
finishFunctionImpl<hclClothContainer>. The odd one out is
hkTypeInfo::cleanupLoadedObject.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
Only parts of Havok were marked L, so the progress percentage measured
neither all code nor in-scope code. The rest of the Havok TUs are now
L too.
Havok header code emitted in KingSystem TUs (e.g. the hkMemorySystem
defaults in FreeListMemorySystem, and the hkaiEdgePath and hclCollidable
dtors in the NavMeshUtil and ClothSet TUs) stays in scope, like hkStubs
and the rest of ksys::phys and gsys.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
|
|
Fix various issues in the functions CSV
|
|
The decomp links all libraries before the game code, whereas the
original interleaves them with it, so every library object counted as
misordered (156 of 157) and each newly bound library row added one.
A weak function's copy in the original comes from whichever object the
linker saw first, so it says nothing about where its decomp object
belongs: 172 of 248 strays were weak copies. Weak functions now only
count for order within their object's main block.
(AI assisted using Claude Opus 5.5)
|