Léo Lam
c4c7c00e85
aoc: Manager is ksys, the DLC managers stay game-side
...
aoc::Manager is created during engine start-up and called by gdt, map
and StarterPackMgr; only game code uses HardModeManager and
ChampionBalladManager.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
2026-10-06 03:19:39 +02:00
Léo Lam
38905c8c07
AutoPlacement is game code: move it to Game/
...
It is created only from game code, no engine code calls it, and it
hardcodes game actor names.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
2026-10-06 03:19:38 +02:00
Léo Lam
4a6239bbbf
ksys: small declaration fixes
...
setCamera's only caller passes the camera actor, a ksys::act::Actor;
ksys::act::Camera is only forward-declared.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
2026-10-06 03:19:38 +02:00
Léo Lam
d8da4fc5f2
Actor: PlayerInfo/PlayerBase are game, GameConfig ksys
...
Every decomp user of PlayerInfo is game code, and PlayerBase sits right
above Player. GameConfig.h models the engine base that
links at GameConfig's slot in KingSystem/System.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
2026-10-06 03:19:38 +02:00
Léo Lam
34e57daf61
AI: merge the duplicate DummyAction into ksys
...
The action factory uses the single ksys ctor for both entries and
DummyDropTable's ctor calls it too; deriving from it makes
DummyDropTable's five functions match.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
2026-10-06 03:19:38 +02:00
Léo Lam
a168b93bbc
snd: move sound actions and AIs to KingSystem/Sound
...
They link with KingSystem/Sound (0x7100fe8b54-0x7101060ed4) as sorted
Action/AI passes of their own. The three area tag actions keep their
game base AreaTagAction, which links in the Game/Actor/Area block.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
2026-10-06 03:19:38 +02:00
Léo Lam
7bc225838a
Name placeholder declarations after the IDB
...
Keeps source and CSV from drifting from the IDB. Names are read from the
bodies, e.g. ActionBase::applyParams is what all 13 non-stub overrides
of that slot do.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
2026-10-06 03:19:37 +02:00
Léo Lam
891c0a8494
Merge pull request #216 from leoetlino/stack/03a-ai-base-renames
...
AI: rename misordered base classes
2026-10-06 01:57:14 +01:00
Flatener
9595c31c7f
world: implement Manager::isRaining ( #214 )
...
* world: implement Manager::isRaining
Implement the position-based rain check for Rain, HeavyRain, ThunderRain,
and BlueskyRain. Declare the climate weather lookup dependency and name
both functions in the function table.
The rain check matches the original function at 0x71010f33a4.
* world: keep rainfall queries const
Restore const on Manager::isRaining and make its climate weather helper
const. Both queries only read Manager state. Update their function-table
symbols; the rain check still matches the original.
2026-10-05 11:09:41 -07:00
Léo Lam
b12306210c
AI: rename misordered base classes
...
AI and Action TUs link in case-insensitive file-name order, so a guessed
base name that breaks it is wrong. Each new name sorts into the slot
where the class's TU sits (neighbouring TUs and an address in the TU
below) and comes from the class's params, child states and derived
classes.
ai::
| Old | New | Links between | In TU |
|---|---|---|---|
| AddViewTargetPosBase | AddViewTarget | AddSwarmMove – AddViewTargetPos | 0x71002f9c68 |
| AncientNecklaceBallBase | PlayASSwitch | PipeDrawing – PlayerSetTarget | 0x71004f6a78 |
| AnimalRoamBase | AnimalRndMove | AnimalRangeKeepMoveWithLOS – AnimalRoam | 0x710030a6c0 |
| AppearNearTarget | AppearFromTarget | AnimalTimelineAI – AppearFromTargetFrontAfterChase | 0x710030d868 |
| AssassinFieldShooterBattleBase | AssassinShooterBattle | AssassinRoot – AssassinShooterJuniorAzitoRoot | 0x7100321dc4 |
| AssassinMagicTgtSelect | TargetHeightAreaSelect | TargetExistSelect – TargetHomeDir | 0x71005bef5c |
| AssassinNormal | GuardHomePosNormal | GuardFrequencySelect – GuardianAI | 0x710040cd68 |
| BeamExplodeBase | SimpleBeamExplode | SimpleASBridge – SimpleEnemyNormal | 0x710056c5fc |
| ChildFavoriteSelectorBase | ChildSelector | ChildHaveSelect – ChmCheck | 0x710034aad0 |
| DragonRootBase | ControlRailRoot | ConditionMoveActionSelect – CookPotRoot | 0x7100356664 |
| EnemyChemTargetActionBase | EnemyTargetAction | EnemySyncAttack – EnemyTargetGearSelect | 0x71003bf75c |
| FlyingEnemyKeepMove | FlyingEnemyDistanceKeepMove | FlyingEnemyDiagonallyKeepMove – FlyingEnemyFindPlayer | 0x71003d1694 |
| GoronCannonBase | BigCannon | BezierRailMove – BirdDead | 0x710032cd80 |
| GuardNearTarget | InvincibleNearTargetBase | InvincibleNearTarget – InvisibleKorokRailMove | 0x710044c6b8 |
| GuardianBeamAttackBase | GuardianCommonBeamAttack | GuardianCloseBattle – GuardianDown | 0x7100411da0 |
| HorseCheckLineOfSightSelectorBase | CheckLineOfSightSelector | ChaseSound – ChemicalEnemyFindPlayer | 0x7100346868 |
| LargeEnemyFindPlayer | GiantEnemyFindPlayer | GiantEarthReleaseAttack – GiantEscapeFromDamageWater | 0x71003f69c8 |
| MimicCliffStopEnemyNormalBase | CliffStopEnemyNormal | CliffDistanceSelectThreeAction – CloseSmallAttackBase | 0x71003522f4 |
| MiniBeamAttack | GuideBeamAttackEnemyBattle | GuardianWait – GyroActivateTerminal | 0x710042cae8 |
| MotorcycleRootBase | HorseRiddenStatusSelector | HorseRiddenByNPC – HorseRideChargeAttack | 0x710043ea88 |
| NPCTravelBase | NPCScheduleMove | NPCRunaway – NPCSearch | 0x71004df66c |
| NonPlayerHorseRide | RideHorseNonPlayer | RideHorseAI – WildHorseDefWanderAI (Horse) | 0x7100e60178 |
| OctarockEscape | OctarockHideEscapeBase | OctarockHideEscape – OctarockOptionRoot | 0x71004ec368 |
| OctarockRootBase | VacuumEnemyRoot | VacuumedBombDamageSelect – VehicleSelector | 0x71005e3348 |
| OneMemoryMagicBattleBase | MagicBattle | LynelWarp – MagneGearRoot | 0x710049d0d8 |
| PriestBossMode | PriestBoss | PreyStun – PriestBossActorCloneRoot | 0x7100505b7c |
| RailMove | BezierRailMove | BeeSwarmRoot – BigCannon | 0x710032bbf0 |
| RangeSelect | NewRangeSelect | NewMannequinRoot – NormalHumanEquipableShield | 0x71004bc0e8 |
| RegistedActorNumTwoSelectBase | RegistedActor | ReflectableThrown – RegistedActorNumTwoSelect | 0x710053dfcc |
| RemainElectricCannonRootBase | LargeCannonRoot | LargeCannonAttackRoot – LastAttackerSelect | 0x71004741e4 |
| SandwormNormalBase | AwnSeal | AwarenessScale – BackAttackEnemyBattle | 0x71003258b4 |
| SeqTwoLineReachableTargetActionBase | SeqTwoLineReachableTarget | SeqTwoAction – SeqTwoLineReachableTargetAction | 0x7100567460 |
| SimpleWildlifeRoot | CapturedActorRoot | CapturedActorReactionChemical – CarryBox | 0x7100342690 |
| SiteBossChemicalProjectile | GanonFlameBall | GanonFarAttackRootOnWall – GanonGrudgeNormal | 0x71003e996c |
| SiteBossRecognizeRootBase | LastBossRecognizeRoot | LastBossRailWarpRoot – LastBossRoot | 0x7100478930 |
| SpecialEnemySleep | SleepNormal | SleepBedRoot – SleepSelect | 0x710059a8c0 |
| TargetAttackAttitudeTgtSelectBase | TargetAttackAttitudeTgt | TargetAngerSelect – TargetAttackAttitudeTgtSelect | 0x71005bb3ac |
| TargetPosAI | TargetActorPos | TargetActorGrabAdapter – TargetAngerSelect | 0x71005bab4c |
| TargetPosDynParamRot | TargetPosDynParamRotFromMyPos | TargetPosDynParamRotFromCtrPos – TargetPosLostCheck | 0x71005c4f8c |
| TargetPosOffset | OffsetTargetPos | OctarockWaterWait – OnCliffEnemyBattle | 0x71004f16d8 |
| TimedGuardNearTarget | InvincibleNearTarget | InvincibleHiddenOctarock – InvincibleNearTargetBase | 0x710044c1a4 |
| UnarmedEnemySearch | NavMove | NavMeshTurnAwayFromHitPos – NavMoveNearTarget | 0x71004b5ec0 |
| UnarmedEnemySearchWeapon | EnemySearch | EnemyRoot – EnemySearchHorse | 0x71003b6460 |
| WholeDungeonRotateTag | DungeonRotateTagApp | DungeonRotateTag4WindApp – DungeonRotateTagCont | 0x7100379554 |
action::
| Old | New | Links between | In TU |
|---|---|---|---|
| AirOctaFloatBase | AirOctaMoveBase | AirOctaMgr – AirOctaNoticeTurn | 0x71000880f8 |
| AtkTackleMove | TackleAttack | SystemWarp – TackleMove | 0x71002910a4 |
| BasicSignalEnemy | BasicSignalEnemyNotice | BasicSignalEnemyForceNotice – BattleCloseDangerAvoidRun* | 0x71000ba65c |
| BattleCloseAction | AvoidingCloseMoveBase | AvoidingCloseMoveActionWithAcc – AwarenessShareOnePartsASPlay | 0x71000aed44 |
| BattleCloseActionWithAcc | AvoidingCloseMoveActionWithAcc | AttackPartBind – AvoidingCloseMoveBase* | 0x71000ae8ec |
| BattleCloseSlippedWalkBase | BattleCloseSlippedMoveBase | BattleCloseMoveAction – BattleCloseSlippedWalk | 0x71000becc8 |
| CameraLockOnBase | CameraTrackBase | CameraTail – CameraWakeboard (Camera) | 0x71007850e4 |
| ChargeAndShoot | ArrowChargeAndShoot | AreaRoot – ArrowShootHoming | 0x71000a17a4 |
| ChemicalAttack | EmitAttackBase | ElectricParalysis – EmitElectricWaterBall | 0x7100104f54 |
| ChemicalAttackBall | ChemicalAttack | CheckHorseCustomizeEdit – ChemicalElectricWaterBall | 0x71000db0e8 |
| FlyingCharacterReaction | FlyingCharacterFreeFallBase | FlyingCharacterFreeFall – FlyingCharacterFreeFallDie | 0x7100132590 |
| FollowChallenge | AppearFollowChallenge | AnimeDrivenTurn – AppearNumHeroSeal | 0x710004d0b4 |
| ForkASTrgEmitShockWave | ForkEmitShockWave | ForkEmitExpandFieldWithCreate – ForkEmitShockWaveByContact | 0x710014f188 |
| GolemThrowPartsToTargetBase | GolemThrowPartsBase | GolemRepairParts – GolemThrowPartsToTarget | 0x710018d678 |
| HorseRideMoveCommand | HorseRideSetGearCommand | HorseRideSearch – HorseRideShoot | 0x71001b0828 |
| OctarockBalloonBase | BalloonRopeBase | BalloonBase – BasicSignalBossAwakeSleep | 0x71000b8b9c |
| PlayerGlide | PlayerParashawlGlideBase | PlayerParashawlGlide – PlayerPickUp (Player) | 0x710080352c |
| PriestBossWarpOrVanish | PriestBossCloneFastWarp | PreJumpAttack – PriestBossClonesSpawn | 0x7100221304 |
| RotateTurnToTarget | ASPlayRotateTurnToTarget | AscendingCurrentFixedSize – ASPlaySimpleAnmDriven | 0x71000a7bec |
| SetGetFlagBase | SetFlag | SetExtraLifeOfPlayer – SetFrameASPlay | 0x7100247990 |
| SimpleMessageDialogCtrl | ForkBasicMessageDialogCtrl | ForkAttackWithWeaponOrWithout – ForkBattleNodeForAttackGround | 0x71001471cc |
| SiteBossBlowOff | LastBossBlowOff | LargeDamage – LastBossChemicalPillarAttack | 0x71001cf0ec |
| SiteBossLswordAtk | SiteBossLswordAttack | SiteBossLswordAtkWithChemical – SiteBossLswordFireBall | 0x710025c470 |
| WaitOnObjBase | StopOnObj | StopJump – StorePlayerPosAndRotate* | 0x710027f974 |
| WaterUpDownMoveBase | WaterDepthMoveBase | WarpToStaticAnchor – WaterEmitter | 0x71002b33cc |
Neighbours marked * are the nearest correctly placed TU; a TU that is
itself still misnamed sits in between.
(AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
2026-10-04 23:40:26 +02:00
Léo Lam
b9c6e58791
Remove the AI class status lists
...
Decompilation progress is tracked per function in uking_functions.csv
and on the kanban board. These per-class lists stopped being updated
long ago (20 of 1927 actions "done") and only cost upkeep on renames.
(AI assisted using Claude Opus 5.5)
2026-10-04 23:40:13 +02:00
Léo Lam
8b562cb791
gdt: rename IncreaseLogger to DeferredFlagWriter
...
It logs nothing: it queues flag increments per core and
GameDataMgr::calc0 applies them once per frame. The IDB already uses
this name.
(AI assisted using Claude Opus 5.5)
2026-10-04 06:50:36 +02:00
Léo Lam
b0404a3630
data: fix O rows tools/check cannot tell apart
...
Each pair differs only in the vtable it installs or slot it fills, which
tools/check ignores. E.g. 0x7100b15bf4 installs FileDeviceReadStream's
vtable, and the ASAssetResource/ASAssetExResource D0 rows were swapped.
(AI assisted using Claude Opus 5.5)
2026-09-29 03:50:01 +02:00
Léo Lam
a5fb0a1632
aoc: fix the HardMode flag name
...
The flag is "AoC_HardMode_Enabled", as 0x71008e3dbc returns; tools/check
ignores string literals, so the misspelling still matched.
(AI assisted using Claude Opus 5.5)
2026-09-29 03:50:00 +02:00
Pistonight
4eb51c96aa
lib: update xlink2
2026-09-20 13:56:17 -07:00
Pistonight
21d20529a8
update libs
2026-09-20 13:03:47 -07:00
Michael Zhao
7c65472576
Merge pull request #185 from RobbyV2/phys-system-heap-accessors
...
Match phys::System heap accessors
2026-07-30 17:06:14 -07:00
Michael Zhao
4f1f92f132
Merge pull request #184 from RobbyV2/phys-system-contact-listeners
...
Match phys::System contact listener and group handler forwarders
2026-07-30 17:04:47 -07:00
Nitr4m12
31a894a4ff
data: fix function sizes
2026-07-30 10:37:52 -04:00
RobbyV2
1e080b32eb
phys: match System contact listener and group handler functions
2026-07-30 09:09:55 -04:00
RobbyV2
c6c8beaf58
phys: match System heap accessors
2026-07-30 09:07:17 -04:00
Michael Zhao
cd3e7a9fbd
Merge pull request #182 from RobbyV2/actor-get-character-controller
...
Match Actor::getCharacterController
2026-07-29 20:52:36 -07:00
Michael Zhao
4caa1241f3
Merge pull request #179 from Nitr4m12/symbols
...
data: add aal symbols
2026-07-29 20:49:22 -07:00
RobbyV2
ab0fe61df9
Match Actor::getCharacterController
2026-07-28 21:08:32 -04:00
Nitr4m12
7edfb11683
data: add aal symbols
2026-07-27 22:12:23 -04:00
mairokaizo
c99e6cfe94
ksys::phys::System: implement isPaused and collision/handler helpers
2026-07-24 09:43:16 -03:00
Nitr4m12
5094381e62
lib: Add xlink2 decomp as submodule
2026-07-11 23:40:06 -04:00
root
003de4ab9f
various: fix mismatches in some action stubs and ResourceMgrTask
2026-06-23 03:05:43 -06:00
Narr the Reg
9ee5f0e4c4
data: Fill symbols
2026-06-01 10:04:08 -06:00
Pistonight
3183601b59
fix new viking and update mismatches
2026-05-31 14:20:38 -07:00
Pistonight
2974a95d82
chore: update libs
2026-05-15 11:40:16 -07:00
Michael Zhao
5af715fc24
Merge pull request #163 from n8pjl/aiEnemyDefaultReaction__isChangeable
...
add function in aiEnemyDefaultReaction
2026-04-16 20:10:43 -07:00
Peter Lafreniere
a50a58a759
add function in aiEnemyDefaultReaction
2026-04-16 12:02:45 -04:00
hgh32
276f32f366
match more ai::Query
2026-04-16 00:24:28 -04:00
auguste120
3a2c2b4e16
Implements gsys::MemBuffer
2026-04-03 21:25:25 +02:00
hgh32
007bdc90d6
Implement CheckE3Mode::doQuery
2026-03-04 23:01:47 -05:00
MonsterDruide1
d7d31865a2
lib: Update sead
2026-01-13 21:22:18 +01:00
Pistonight
7ed2356f34
chore: update libs
2025-09-29 18:59:24 -07:00
MonsterDruide1
f829734b79
lib: Update libraries
2025-07-27 21:30:15 +02:00
Pistonight
3d92031404
CreatePlayerEquipActorMgr
2025-06-19 12:18:30 -07:00
Pistonight
81feab300b
merge BaseProcHandle and BaseProcUnit TU
2025-05-15 11:31:51 -07:00
Pistonight
316dc2d1a2
matched (thanks to TheGreatB3 :)
2025-05-04 16:45:33 -07:00
Pistonight
cd19e8cd96
PauseMenuDataMgr createPlayerEquipment
2025-05-02 20:47:19 -07:00
Pistonight
56ef34dc6b
match PMDM autoEquip and unequipAll
2025-05-02 20:26:00 -07:00
Pistonight
c4d936d117
add gdt flag name constant getters
2025-05-02 20:21:28 -07:00
MonsterDruide1
9fc27d394a
lib/sead: Update submodule
2025-03-30 22:58:28 +02:00
Pistonight
1f1fee5593
update data_symbols.csv
2025-03-06 17:51:01 -08:00
Pistonight
2363fbfe20
PlayerInfo stuff that doesn't require PlayerBase
2024-12-30 21:43:28 -08:00
Pistonight
c4e0a55dd9
LayoutResourceMgr functions + update NintendoSDK.
2024-10-14 23:18:35 -07:00
ThePixelGamer
878f95dffb
Update agl, nnSdk, sead
2024-08-28 07:41:29 -05:00