Decomp 42 small dungeon-mode functions in overlay_29

Landed as one batch after verifying every function individually, rather than in
groups of ten. Five clusters:

- Sound and effect veneers that tail-call a shared helper with fixed ids:
  PlaySeByIdIfShouldDisplayEntity, PlayEffectAnimationPos,
  PlayEffectAnimationPixelPos, ChangeMonsterAnimation and ov29_022E67E4.
- Four DoMoveDamage__* wrappers plus DoMoveVacuumCut, all
  `return DealDamage(...) != 0`.
- DoMoveExpose, DoMoveSport, DoMoveMirrorMove, DoMoveMiracleEye,
  DoMoveNightmare, DoMoveSureShot, DoMoveFeint and DoMoveRockPolish, which
  branch or sequence two calls rather than forwarding once.
- Minimap byte accessors over GetMinimapData, and GetTileTerrain.
- Wrappers whose argument setup evidences the callee arity:
  ShouldDisplayEntityWrapper, UseSingleUseItemSelf, CalcSpeedStageWrapper,
  GenerateCleanItem and three ov29_* forwarders.

Eight further candidates were prepared and are deliberately NOT included:
DoMoveHealOrder, DoMoveScreech, DoMoveCharm, DoMoveGrowl, DoMoveLowerDefense1,
DoMoveFakeTears, DoMoveFeatherDance and DoMoveMetalSound. Each passes a constant
on the stack to a six-argument stat helper, and each differs from the target only
in instruction *order*: retail loads the stat global before materialising the
constant, the candidate after. Same instructions, same count. They stay in asm.

Authored by Claude (Opus 5) under human direction. All 42 verified at score 0
individually before landing; confirmed together by a single matching build:
build/pmdsky.us/pmdsky.us.nds: OK. None carries a region conditional, so US
alone is sufficient.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
cecilarmitais
2026-08-19 17:06:17 -07:00
parent 6174b66bdb
commit c433875956
153 changed files with 18991 additions and 18599 deletions

View File

@@ -1,82 +1,4 @@
#pragma once
.public _s32_div_f
.public AddSimpleObjToOam
.public ChangeSimpleObjTexture
.public DirectoryFileMngr_OpenDirectoryFile
.public DrawTeamStats
.public DUNGEON_PTR
.public FillPaletteInitInfo
.public FreeMapAndTeam
.public FreeTeamStats
.public GetDefaultTileTextureId
.public HandleSir0Translation
.public IsBackgroundTileset
.public LoadObjPalette
.public MemAlloc
.public MemFree
.public MemZero
.public OBJ_GRAPHICS_CONTROLS_PTR
.public ov10_022C0814
.public ov10_022C096C
.public ov10_022C0998
.public ov10_022C0F6C
.public ov10_022C11D8
.public ov10_022C14D0
.public ov10_022C159C
.public ov10_022C22A0
.public ov29_022DC2B8
.public ov29_022DC33C
.public ov29_02350F88
.public ov29_02350F8C
.public ov29_02350F90
.public ov29_0235109C
.public ov29_023510B8
.public ov29_023510BC
.public ov29_02353518
.public ov29_0235351C
.public ov29_02353524
.public ov29_0235352C
.public ov29_02353530
.public ov29_02353534
.public ov29_023538B4
.public ov29_0236CEF0
.public ov29_0236D5EC
.public ov29_023735EC
.public ov29_023735F0
.public ov29_023735F4
.public ov29_023735F8
.public ov29_023735FC
.public ov29_0237360C
.public ov29_0237368C
.public ov29_02373690
.public ov29_0237C6D4
.public ov29_0237C714
.public sub_01FF9BA0
.public sub_01FF9E14
.public sub_01FF9F80
.public sub_02008BF4
.public sub_0200A2CC
.public sub_0200A2F4
.public sub_0200A544
.public sub_0200B330
.public sub_0200B3D4
.public sub_0201BCCC
.public sub_0201BCF4
.public sub_0201BD1C
.public sub_020275C0
.public sub_020275DC
.public sub_020519D0
.public sub_02051B44
.public sub_02051C24
.public sub_02051D68
.public sub_02051DD0
.public sub_02051E60
.public sub_02051ED4
.public sub_02051EF0
.public sub_02063628
.public sub_0206367C
.public sub_02063734
.public sub_02063770
.public sub_02063830
.public UnloadFile
.public UpdateTeamStats

View File

@@ -0,0 +1,78 @@
#pragma once
.public AddSimpleObjToOam
.public ChangeSimpleObjTexture
.public DUNGEON_PTR
.public DirectoryFileMngr_OpenDirectoryFile
.public DrawTeamStats
.public FillPaletteInitInfo
.public FreeMapAndTeam
.public FreeTeamStats
.public GetDefaultTileTextureId
.public HandleSir0Translation
.public IsBackgroundTileset
.public LoadObjPalette
.public MemAlloc
.public MemFree
.public MemZero
.public OBJ_GRAPHICS_CONTROLS_PTR
.public UnloadFile
.public UpdateTeamStats
.public _s32_div_f
.public ov10_022C0814
.public ov10_022C096C
.public ov10_022C0F6C
.public ov10_022C11D8
.public ov10_022C14D0
.public ov10_022C159C
.public ov10_022C22A0
.public ov29_02350F88
.public ov29_02350F8C
.public ov29_02350F90
.public ov29_0235109C
.public ov29_023510B8
.public ov29_023510BC
.public ov29_02353518
.public ov29_0235351C
.public ov29_02353524
.public ov29_0235352C
.public ov29_02353530
.public ov29_02353534
.public ov29_0236CEF0
.public ov29_0236D5EC
.public ov29_023735EC
.public ov29_023735F0
.public ov29_023735F4
.public ov29_023735F8
.public ov29_023735FC
.public ov29_0237360C
.public ov29_0237368C
.public ov29_02373690
.public ov29_0237C6D4
.public ov29_0237C714
.public sub_01FF9BA0
.public sub_01FF9E14
.public sub_01FF9F80
.public sub_02008BF4
.public sub_0200A2CC
.public sub_0200A2F4
.public sub_0200A544
.public sub_0200B330
.public sub_0200B3D4
.public sub_0201BCCC
.public sub_0201BCF4
.public sub_0201BD1C
.public sub_020275C0
.public sub_020275DC
.public sub_020519D0
.public sub_02051B44
.public sub_02051C24
.public sub_02051D68
.public sub_02051DD0
.public sub_02051E60
.public sub_02051ED4
.public sub_02051EF0
.public sub_02063628
.public sub_0206367C
.public sub_02063734
.public sub_02063770
.public sub_02063830

View File

@@ -9,6 +9,8 @@
.public HasDropeyeStatus
.public HiddenStairsPresent
.public IsPositionActuallyInSight
.public PopulateActiveMonsterPtrs
.public SECONDARY_TERRAIN_TYPES
.public ov29_022DE954
.public ov29_022DE9F8
.public ov29_022DEA10
@@ -18,5 +20,3 @@
.public ov29_02304830
.public ov29_0237C754
.public ov29_0237C79C
.public PopulateActiveMonsterPtrs
.public SECONDARY_TERRAIN_TYPES

View File

@@ -1,90 +1,12 @@
#pragma once
.public AdvanceFrame
.public AnimationHasMoreFrames
.public CanMonsterSpawn
.public ChangeDungeonMusic
.public ChangeMonsterAnimation
.public CheckActiveChallengeRequest
.public CheckSpawnThreshold
.public DIRECTIONS_XY
.public DisplayAnimatedNumbers
.public DUNGEON_PTR
.public DungeonFloorToGroupFloor
.public DungeonGetTotalSpriteFileSize
.public DungeonGoesUp
.public DungeonRandInt
.public DungeonRngSetPrimary
.public DungeonRngSetSecondary
.public EntityIsValid__022E37B8
.public FloorNumberIsEven
.public GetEffectAnimationField0x19
.public GetFloorType
.public GetLeader
.public GetMonsterGenderVeneer
.public GetMonsterIdFromSpawnEntry
.public GetMonsterLevelFromSpawnEntry
.public GetNbFloorsPlusOne
.public GetNbPrecedingFloors
.public GetNbRecruited
.public GetSecondFormIfValid
.public GetSpriteFileSize
.public HandleSir0Translation
.public InitOamAdjustmentInfo
.public IsBossFight
.public IsCurrentFixedRoomBossFight
.public IsCurrentMissionType
.public IsDestinationFloorWithFixedRoom
.public IsDestinationFloorWithMonster
.public IsDojoDungeon
.public IsFullFloorFixedRoom
.public IsInSpawnList
.public IsItemForSpecialSpawnInBag
.public LoadFileFromRom
.public LoadFixedRoom
.public LogMessageByIdWithPopup
.public MemAlloc
.public MemFree
.public MonsterIsType
.public NeedsItemToSpawn
.public ov10_022BDC68
.public ov10_022BDE50
.public ov10_022BEC08
.public ov10_022BEC94
.public ov10_022BEFD8
.public ov10_022BF274
.public ov10_022BF2B4
.public ov10_022BF45C
.public ov10_022BF9CC
.public ov10_022BFB6C
.public ov29_022DE5D8
.public ov29_022DE5F0
.public ov29_022E2CA0
.public ov29_022EA370
.public ov29_022ED0F4
.public ov29_0230D618
.public ov29_02339148
.public ov29_02349378
.public ov29_0234B1A4
.public ov29_0235118C
.public ov29_02351194
.public ov29_0235119C
.public ov29_023511A4
.public ov29_023511B0
.public ov29_023511DC
.public ov29_0235122C
.public ov29_0235124C
.public ov29_02351464
.public ov29_02351584
.public ov29_02351594
.public ov29_023515B0
.public ov29_023515CC
.public ov29_0235354C
.public PlayEffectAnimationEntity
.public PlayMeByIdIfNot998
.public PlaySeByIdIfNotSilence
.public RandIntSafe
.public SetMonsterId
.public ShouldDisplayEntityWrapper
.public PlaySeByIdIfShouldDisplayEntity
.public STATUS_ICON_ARRAY_BIDE
.public STATUS_ICON_ARRAY_BLINDED
.public STATUS_ICON_ARRAY_BURN
@@ -100,7 +22,12 @@
.public STATUS_ICON_ARRAY_REFLECT
.public STATUS_ICON_ARRAY_SLEEP
.public STATUS_ICON_ARRAY_SURE_SHOT
.public sub_0201CF90
.public sub_0201D034
.public SubstitutePlaceholderStringTags
.public UnloadFile
.public ov10_022BDC68
.public ov10_022BF274
.public ov10_022BF2B4
.public ov10_022BF9CC
.public ov29_022DE5D8
.public ov29_022DE5F0
.public ov29_022E6E40
.public ov29_022ED0F4
.public ov29_0235354C

View File

@@ -0,0 +1,3 @@
#pragma once
.public GetEffectAnimationField0x19
.public PlayEffectAnimationEntity

View File

@@ -0,0 +1,3 @@
#pragma once
.public GetEffectAnimationField0x19
.public PlayEffectAnimationEntity

View File

@@ -0,0 +1,3 @@
#pragma once
.public DisplayAnimatedNumbers
.public ShouldDisplayEntityAdvanced

View File

@@ -0,0 +1,5 @@
#pragma once
.public GetEffectAnimationField0x19
.public MonsterIsType
.public PlayEffectAnimationEntity
.public PlaySeByIdIfShouldDisplayEntity

View File

@@ -0,0 +1,5 @@
#pragma once
.public DUNGEON_PTR
.public GetEffectAnimationField0x19
.public PlayEffectAnimationEntity
.public ov29_0230D618

View File

@@ -0,0 +1,41 @@
#pragma once
.public AdvanceFrame
.public AnimationHasMoreFrames
.public ChangeDungeonMusic
.public ChangeMonsterAnimation
.public DIRECTIONS_XY
.public DUNGEON_PTR
.public DungeonGoesUp
.public EntityIsValid__022E37B8
.public GetEffectAnimationField0x19
.public GetFloorType
.public GetLeader
.public InitOamAdjustmentInfo
.public IsCurrentFixedRoomBossFight
.public LogMessageByIdWithPopup
.public PlayEffectAnimationEntity
.public PlayEffectAnimationPixelPos
.public PlayEffectAnimationPos
.public PlayMeByIdIfNot998
.public PlaySeByIdIfNotSilence
.public ShouldDisplayEntityWrapper
.public SubstitutePlaceholderStringTags
.public ov10_022BDC68
.public ov10_022BEC08
.public ov10_022BEC94
.public ov10_022BF274
.public ov10_022BF2B4
.public ov10_022BF45C
.public ov29_022E2CA0
.public ov29_022E6A00
.public ov29_022E6C08
.public ov29_022E6CE0
.public ov29_022EA370
.public ov29_02339148
.public ov29_0234B1A4
.public ov29_02351194
.public ov29_0235119C
.public ov29_023511DC
.public ov29_0235122C
.public ov29_0235124C
.public sub_0201D034

View File

@@ -0,0 +1,3 @@
#pragma once
.public GetEffectAnimationField0x19
.public PlayEffectAnimationEntity

View File

@@ -0,0 +1,8 @@
#pragma once
.public AdvanceFrame
.public AnimationDelayOrSomething
.public DUNGEON_PTR
.public GetEffectAnimationField0x19
.public PlayEffectAnimationEntity
.public ShouldDisplayEntityAdvanced
.public ov29_022EA370

View File

@@ -0,0 +1,59 @@
#pragma once
.public AdvanceFrame
.public AnimationHasMoreFrames
.public CanMonsterSpawn
.public CheckActiveChallengeRequest
.public CheckSpawnThreshold
.public DUNGEON_PTR
.public DungeonFloorToGroupFloor
.public DungeonGetTotalSpriteFileSize
.public DungeonRandInt
.public DungeonRngSetPrimary
.public DungeonRngSetSecondary
.public FloorNumberIsEven
.public GetEffectAnimationField0x19
.public GetLeader
.public GetMonsterGenderVeneer
.public GetMonsterIdFromSpawnEntry
.public GetMonsterLevelFromSpawnEntry
.public GetNbFloorsPlusOne
.public GetNbPrecedingFloors
.public GetNbRecruited
.public GetSecondFormIfValid
.public GetSpriteFileSize
.public HandleSir0Translation
.public IsBossFight
.public IsCurrentMissionType
.public IsDestinationFloorWithFixedRoom
.public IsDestinationFloorWithMonster
.public IsDojoDungeon
.public IsFullFloorFixedRoom
.public IsInSpawnList
.public IsItemForSpecialSpawnInBag
.public LoadFileFromRom
.public LoadFixedRoom
.public MemAlloc
.public MemFree
.public NeedsItemToSpawn
.public PlayEffectAnimationEntity
.public RandIntSafe
.public SetMonsterId
.public UnloadFile
.public ov10_022BDC68
.public ov10_022BDE50
.public ov10_022BEFD8
.public ov10_022BF274
.public ov10_022BF2B4
.public ov10_022BF45C
.public ov10_022BFB6C
.public ov29_02349378
.public ov29_0235118C
.public ov29_023511A4
.public ov29_023511B0
.public ov29_02351464
.public ov29_02351584
.public ov29_02351594
.public ov29_023515B0
.public ov29_023515CC
.public ov29_0235354C
.public sub_0201CF90

View File

@@ -1,27 +1,27 @@
#pragma once
.public CloseTextBox2
.public CreateTextBox
.public DrawTextInWindow
.public DUNGEON_CONTROLS_MENU_PTR
.public DUNGEON_CONTROLS_MENU_WINDOW_PARAMS
.public DUNGEON_FRAMES_PASSED
.public DUNGEON_PTR
.public DungeonChangeTopScreenType
.public DungeonGetSpriteIndex
.public FreeDungeonControlsMenu
.public FreeTopScreen
.public GetIdleAnimationId
.public GetPlayerGender
.public GetTopScreenOption
.public InitPreprocessorArgs
.public InitDungeonControlsMenu
.public IsTeamStatsOnTopScreen
.public MemAlloc
.public MemFree
.public MemZero
.public ov10_022C1DE0
.public SetMinimapDataE447
.public SetMinimapDataE448
.public TOP_SCREEN_STATUS_PTR
.public UpdateMinimap
.public ov10_022C1E50
.public ov10_022C1E80
.public ov10_022C21D8
.public ov10_022C2278
.public ov10_022C22A0
.public ov29_022DC684
.public ov29_022DC694
.public ov29_022DC6D0
.public ov29_022DC6DC
@@ -31,29 +31,19 @@
.public ov29_022DC76C
.public ov29_022DC778
.public ov29_022DC77C
.public ov29_0230027C
.public ov29_022E8708
.public ov29_022E8CE8
.public ov29_022E8F78
.public ov29_022E8FCC
.public ov29_022E8FF8
.public ov29_022E9008
.public ov29_022E9014
.public ov29_02339138
.public ov29_02339D7C
.public ov29_0233A0E8
.public ov29_0233A1BC
.public ov29_0234B4E0
.public ov29_0234C70C
.public ov29_0234F25C
.public ov29_0234F278
.public ov29_0234F290
.public ov29_0234F2B8
.public ov29_023515E8
.public ov29_0235352C
.public SetMinimapDataE447
.public SetMinimapDataE448
.public StartFadeDungeonWrapper
.public StringFromId
.public sub_0200B330
.public sub_0200B3D4
.public sub_02048384
.public sub_020483B8
.public sub_020483D8
.public sub_02048400
.public TOP_SCREEN_STATUS_PTR
.public UpdateMinimap
.public UpdateWindow

View File

@@ -0,0 +1,51 @@
#pragma once
.public CloseTextBox2
.public CreateTextBox
.public DUNGEON_CONTROLS_MENU_PTR
.public DUNGEON_CONTROLS_MENU_WINDOW_PARAMS
.public DUNGEON_PTR
.public DrawTextInWindow
.public FreeDungeonControlsMenuWithBg
.public FreeTeamStatsWrapper
.public GetIdleAnimationId
.public GetTopScreenOption
.public InitDungeonControlsMenuWithBg
.public InitPreprocessorArgs
.public InitializeTeamStats
.public MemAlloc
.public MemFree
.public MemZero
.public StartFadeDungeonWrapper
.public StringFromId
.public TOP_SCREEN_STATUS_PTR
.public UpdateTeamStatsWrapper
.public UpdateWindow
.public ov10_022C1DE0
.public ov10_022C2278
.public ov29_022DC684
.public ov29_022E7F94
.public ov29_022E8018
.public ov29_022E8054
.public ov29_022E80D0
.public ov29_022E8104
.public ov29_022E81C8
.public ov29_022E81F8
.public ov29_022E840C
.public ov29_022E847C
.public ov29_022E84B0
.public ov29_022E854C
.public ov29_022E85A8
.public ov29_022E85F4
.public ov29_022E8630
.public ov29_022E8650
.public ov29_022E869C
.public ov29_0230027C
.public ov29_0234C70C
.public ov29_0234F25C
.public ov29_0234F278
.public ov29_0234F290
.public ov29_0234F2B8
.public ov29_023515E8
.public ov29_0235352C
.public sub_0200B330
.public sub_0200B3D4

View File

@@ -1,42 +1,2 @@
#pragma once
.public ApplyItemEffect
.public CanMonsterUseItem
.public ChangeMonsterAnimation
.public ChangeMonsterAnimationToIdle
.public DecrementStackItem
.public DUNGEON_PTR
.public DungeonRandInt
.public EntityIsValid__022F528C
.public ExclusiveItemEffectFlagTest
.public GetItemCategoryVeneer
.public GetItemToUse
.public GetMessageLogPreprocessorArgs
.public HandleCurvedProjectileThrow
.public HandleRegularProjectileThrow
.public IqSkillIsEnabled
.public ItemIsActive__022F5994
.public ItemZInit
.public LogItemBlockedByEmbargo
.public LogMessageByIdWithPopupCheckUser
.public MonsterHasEmbargoStatus
.public ov29_022E5728
.public ov29_022E9A9C
.public ov29_022EA370
.public ov29_022EB378
.public ov29_022F3B8C
.public ov29_0230F9A4
.public ov29_02343D30
.public ov29_02346FB8
.public ov29_02347000
.public PlaySeByIdIfShouldDisplayEntity
.public PrepareItemForPrinting__02345728
.public PrepareItemForPrinting__02345754
.public RemoveEmptyItemsInBagWrapper
.public RemoveEquivItemNoHole
.public RemoveGroundItem
.public RemoveUsedItem
.public SetPreprocessorArgsStringToName
.public ShouldDisplayEntityWrapper
.public ShouldMonsterRunAwayAndShowEffect
.public SpawnItem
.public TryTriggerMonsterHouse

View File

@@ -0,0 +1,41 @@
#pragma once
.public ApplyItemEffect
.public CanMonsterUseItem
.public ChangeMonsterAnimation
.public ChangeMonsterAnimationToIdle
.public DUNGEON_PTR
.public DecrementStackItem
.public DungeonRandInt
.public EntityIsValid__022F528C
.public ExclusiveItemEffectFlagTest
.public GetItemCategoryVeneer
.public GetItemToUse
.public GetMessageLogPreprocessorArgs
.public HandleCurvedProjectileThrow
.public HandleRegularProjectileThrow
.public IqSkillIsEnabled
.public ItemIsActive__022F5994
.public ItemZInit
.public LogItemBlockedByEmbargo
.public LogMessageByIdWithPopupCheckUser
.public MonsterHasEmbargoStatus
.public PlaySeByIdIfShouldDisplayEntity
.public PrepareItemForPrinting__02345728
.public PrepareItemForPrinting__02345754
.public RemoveEmptyItemsInBagWrapper
.public RemoveEquivItemNoHole
.public RemoveGroundItem
.public RemoveUsedItem
.public SetPreprocessorArgsStringToName
.public ShouldDisplayEntityWrapper
.public ShouldMonsterRunAwayAndShowEffect
.public SpawnItem
.public TryTriggerMonsterHouse
.public ov29_022E5728
.public ov29_022E9A9C
.public ov29_022EA370
.public ov29_022EB378
.public ov29_022F3B8C
.public ov29_0230F9A4
.public ov29_02346FB8
.public ov29_02347000

View File

@@ -1,13 +1,12 @@
#pragma once
.public AbilityIsActive
.public CalcSpeedStage
.public EntityIsValid__023000E4
.public EXCL_ITEM_EFFECTS_WEATHER_ATK_SPEED_BOOST
.public EntityIsValid__023000E4
.public ExclusiveItemEffectIsActive__022FFF28
.public GetApparentWeather
.public GetExclusiveItemWithEffectFromBag
.public LogMessageByIdWithPopupCheckUser
.public ov29_022E655C
.public PrepareItemForPrinting__02345728
.public SubstitutePlaceholderStringTags
.public UpdateStateFlags
.public ov29_022E655C

View File

@@ -3,22 +3,19 @@
.public AdvanceFrame
.public AreTileJumpsAllowed
.public CalcDamageFixedNoCategory
.public CanMonsterUseMove
.public CannotStandOnTile__02300384
.public CannotStandOnTile__023006C8
.public ChangeMonsterAnimationToIdle
.public DetermineTileWalkableNeighbors
.public DiscoverMinimap
.public DUNGEON_FRAMES_PASSED
.public DUNGEON_PTR
.public DetermineTileWalkableNeighbors
.public DiscoverMinimap
.public EntityIsValid__02320764
.public EntityIsValid__02321438
.public ExclusiveItemEffectIsActiveWithLogging
.public FindClosestUnoccupiedTileWithin2
.public FindUnoccupiedTileWithin3
.public GetApparentWeather
.public GetLeader
.public GetMonsterInFront
.public GetRandomTile
.public GetTileSafe
.public InitMove
@@ -26,24 +23,8 @@
.public LogMessageByIdWithPopupCheckUserTarget
.public MonsterIsType
.public MoveMonsterToPos
.public ov29_022E4C84
.public ov29_022E4CD4
.public ov29_022E5560
.public ov29_022E55F0
.public ov29_022E5650
.public ov29_022F42F8
.public ov29_022F62CC
.public ov29_022F9C74
.public ov29_022FAA04
.public ov29_02305814
.public ov29_02322374
.public ov29_023247B4
.public ov29_02336694
.public ov29_023529B8
.public ov29_02353700
.public RemoveGroundItem
.public ShouldDisplayEntityWrapper
.public sub_01FFB62C
.public SubstitutePlaceholderStringTags
.public TryEndPetrifiedOrSleepStatus
.public TryInflictPetrifiedStatus
@@ -51,5 +32,16 @@
.public UpdateCamera
.public UpdateEntityPixelPos
.public UpdateMinimap
.public UpdateMovePp
.public UpdateTrapsVisibility
.public ov29_022E5560
.public ov29_022E55F0
.public ov29_022E5650
.public ov29_022F42F8
.public ov29_022F62CC
.public ov29_022F9C74
.public ov29_02305814
.public ov29_02321238
.public ov29_02336694
.public ov29_023529B8
.public ov29_02353700
.public sub_01FFB62C

View File

@@ -0,0 +1,2 @@
#pragma once
.public ov29_0232119C

View File

@@ -0,0 +1,12 @@
#pragma once
.public CanMonsterUseMove
.public EntityIsValid__02321438
.public GetMonsterInFront
.public LogMessageByIdWithPopupCheckUserTarget
.public SubstitutePlaceholderStringTags
.public UpdateMovePp
.public ov29_022E4C84
.public ov29_022E4CD4
.public ov29_022FAA04
.public ov29_02322374
.public ov29_023247B4

View File

@@ -1,34 +1,17 @@
#pragma once
.public ATK_STAT_IDX
.public AdvanceFrame
.public AnimationHasMoreFrames
.public CalcStatusDuration
.public DealDamage
.public DungeonRandOutcomeUserTargetInteraction
.public EntityIsValid__02325620
.public GetApparentWeather
.public GetEffectAnimation
.public GetMoveAnimation
.public GetTileAtEntity
.public IRON_TAIL_LOWER_DEFENSE_CHANCE
.public IsChargingTwoTurnMove
.public IsMonsterSleeping
.public IsTileGround
.public LowerDefensiveStat
.public MORNING_SUN_HP_RESTORATION_TABLE
.public NIGHTMARE_TURN_RANGE
.public ROLLOUT_DAMAGE_MULT_TABLE
.public ROLLOUT_ICE_BALL_MISSED
.public ROLLOUT_ICE_BALL_SUCCESSIVE_HITS
.public SLEEP_TURN_RANGE
.public ShouldDisplayEntityAdvanced
.public TryIncreaseHp
.public TryInflictNightmareStatus
.public TryInflictSleepStatus
.public TryInflictYawningStatus
.public UnkMapRelatedFunc
.public WaitUntilAlertBoxPauseIsOver
.public YAWN_TURN_RANGE
.public ov10_022BED90
.public ov10_022BF160
.public ov10_022BFC5C

View File

@@ -0,0 +1,14 @@
#pragma once
.public ATK_STAT_IDX
.public CalcStatusDuration
.public DealDamage
.public DungeonRandOutcomeUserTargetInteraction
.public IRON_TAIL_LOWER_DEFENSE_CHANCE
.public LowerDefensiveStat
.public ROLLOUT_DAMAGE_MULT_TABLE
.public ROLLOUT_ICE_BALL_MISSED
.public ROLLOUT_ICE_BALL_SUCCESSIVE_HITS
.public SLEEP_TURN_RANGE
.public TryInflictSleepStatus
.public TryInflictYawningStatus
.public YAWN_TURN_RANGE

View File

@@ -0,0 +1,4 @@
#pragma once
.public GetApparentWeather
.public MORNING_SUN_HP_RESTORATION_TABLE
.public TryIncreaseHp

View File

@@ -1,27 +1,4 @@
#pragma once
.public ATK_STAT_IDX
.public AURORA_BEAM_LOWER_ATTACK_CHANCE
.public ApplyOffensiveStatMultiplier
.public BoostOffensiveStat
.public CalcDamageFixedWrapper
.public CalcStatusDuration
.public DealDamage
.public DungeonRandOutcomeUserAction
.public DungeonRandOutcomeUserTargetInteraction
.public EndFrozenStatus
.public GetDamageSourceWrapper
.public GetFlashFireStatus
.public GetMoveCategory
.public GetMoveType
.public LogMessageByIdWithPopupCheckUserTarget
.public LowerHitChanceStat
.public OCTAZOOKA_LOWER_ACCURACY_CHANCE
.public SMOKESCREEN_TURN_RANGE
.public SPATK_STAT_IDX
.public SubstitutePlaceholderStringTags
.public TryInflictBurnStatus
.public TryInflictConfusedStatus
.public TryInflictMirrorMoveStatus
.public TryInflictWhifferStatus
.public ov10_022C4C0C
.public ov10_022C4C0E

View File

@@ -0,0 +1,23 @@
#pragma once
.public ATK_STAT_IDX
.public AURORA_BEAM_LOWER_ATTACK_CHANCE
.public ApplyOffensiveStatMultiplier
.public BoostOffensiveStat
.public CalcDamageFixedWrapper
.public DealDamage
.public DungeonRandOutcomeUserAction
.public DungeonRandOutcomeUserTargetInteraction
.public EndFrozenStatus
.public GetDamageSourceWrapper
.public GetFlashFireStatus
.public GetMoveCategory
.public GetMoveType
.public LogMessageByIdWithPopupCheckUserTarget
.public LowerHitChanceStat
.public OCTAZOOKA_LOWER_ACCURACY_CHANCE
.public SPATK_STAT_IDX
.public SubstitutePlaceholderStringTags
.public TryInflictBurnStatus
.public TryInflictConfusedStatus
.public ov10_022C4C0C
.public ov10_022C4C0E

View File

@@ -5,4 +5,3 @@
.public FLAMETHROWER_BURN_CHANCE
.public FLAME_WHEEL_BURN_CHANCE
.public TryInflictBurnStatus
.public TryInflictExposedStatus

View File

@@ -1,22 +1,4 @@
#pragma once
.public ATK_STAT_IDX
.public BeginChargedMove
.public BoostDefensiveStat
.public BoostOffensiveStat
.public CalcStatusDuration
.public DealDamage
.public DungeonRandOutcomeUserAction
.public DungeonRandOutcomeUserTargetInteraction
.public EndTwoTurnMove
.public IsChargingTwoTurnMove
.public METEOR_MASH_BOOST_ATTACK_CHANCE
.public POWDER_SNOW_FREEZE_CHANCE
.public RAPID_SPIN_BINDING_REMOVAL
.public SKY_ATTACK_CRINGE_CHANCE
.public SKY_ATTACK_DAMAGE_MULTIPLIER
.public SPATK_STAT_IDX
.public SURE_SHOT_TURN_RANGE
.public StringFromId
.public TryInflictCringeStatus
.public TryInflictFrozenStatus
.public TryInflictSureShotStatus

View File

@@ -0,0 +1,17 @@
#pragma once
.public ATK_STAT_IDX
.public BeginChargedMove
.public BoostDefensiveStat
.public BoostOffensiveStat
.public DealDamage
.public DungeonRandOutcomeUserTargetInteraction
.public EndTwoTurnMove
.public IsChargingTwoTurnMove
.public METEOR_MASH_BOOST_ATTACK_CHANCE
.public POWDER_SNOW_FREEZE_CHANCE
.public SKY_ATTACK_CRINGE_CHANCE
.public SKY_ATTACK_DAMAGE_MULTIPLIER
.public SPATK_STAT_IDX
.public StringFromId
.public TryInflictCringeStatus
.public TryInflictFrozenStatus

View File

@@ -1,7 +1,5 @@
#pragma once
.public ATK_STAT_IDX
.public AbilityIsActiveVeneer
.public ActivateSportCondition
.public AddHeldItemToBag
.public BOUNCE_DAMAGE_MULTIPLIER
.public BOUNCE_PARALYZE_CHANCE
@@ -18,7 +16,6 @@
.public GetMoveTypeForMonster
.public IsChargingTwoTurnMove
.public LogMessageByIdWithPopupCheckUserTarget
.public LowerHitChanceStat
.public POISON_FANG_POISON_CHANCE
.public POISON_STING_POISON_CHANCE
.public RemoveEmptyItemsInBagWrapper

View File

@@ -0,0 +1,5 @@
#pragma once
.public ATK_STAT_IDX
.public DealDamage
.public DungeonRandOutcomeUserTargetInteraction
.public LowerHitChanceStat

View File

@@ -1,4 +1,2 @@
#pragma once
.public LogMessageByIdWithPopupCheckUserTarget
.public ov10_022C456C
.public ov29_02332F18

View File

@@ -4,7 +4,6 @@
.public DealDamage
.public DungeonRandOutcomeUserTargetInteraction
.public EndFrozenStatus
.public EndProtectStatus
.public EntityIsValidMoveEffects__0232E250
.public FLARE_BLITZ_BURN_CHANCE
.public TryInflictBurnStatus

View File

@@ -3,13 +3,10 @@
.public DungeonRandOutcomeUserTargetInteraction
.public EndFrozenStatus
.public EndNegativeStatusConditionWrapper
.public EndSleepClassStatus
.public FIRE_FANG_CRINGE_CHANCE
.public FLARE_BLITZ_BURN_CHANCE
.public HEALING_WISH_HP_RESTORATION
.public ResetHitChanceStat
.public RestoreAllMovePP
.public TryIncreaseHp
.public TryInflictBurnStatus
.public TryInflictCringeStatus
.public TryInflictMiracleEyeStatus

View File

@@ -1,2 +1,3 @@
#pragma once
.public DealDamage
.public EndSleepClassStatus

View File

@@ -1,6 +1,5 @@
#pragma once
.public AbilityIsActiveVeneer
.public BoostSpeedOneStage
.public CalcRecoilDamageFixed
.public DealDamage
.public DefenderAbilityIsActiveMoveEffects__0232DE20

View File

@@ -1,70 +1,32 @@
#pragma once
.public AddSimpleObjToOam
.public CORNER_CARDINAL_NEIGHBOR_IS_OPEN
.public ConvertWallsToChasms
.public DIRECTIONS_XY
.public DUNGEON_PTR
.public DungeonRandInt
.public DungeonRandRange
.public FLOOR_GENERATION_STATUS
.public GenerateSecondaryTerrainFormations
.public GetBottomScreenOption
.public GetFinalKecleonShopSpawnChance
.public GetFloorType
.public GetHiddenStairsType
.public GetKecleonIdToSpawnByFloor
.public GetMinimapData
.public GetNextFixedRoomAction
.public GetTile
.public GetTileSafe
.public GetTopScreenOption
.public GetTrapInfo
.public HIDDEN_STAIRS_SPAWN_BLOCKED
.public InitMinimapDisplayTile
.public IsBehaviorLoneOutlaw
.public IsCurrentMissionType
.public IsCurrentMissionTypeExact
.public IsCurrentTilesetBackground
.public IsDestinationFloorWithMonster
.public IsExperienceLocked
.public IsGoldenChamber
.public IsHiddenStairsFloor
.public IsMapShownOnEitherScreen
.public IsOutlawMonsterHouseFloor
.public LoadFixedRoomData
.public MAP_COLOR_TABLE
.public MarkEnemySpawns
.public MarkNonEnemySpawns
.public MarkShopkeeperSpawn
.public MemZero
.public Memcpy32
.public OBJ_GRAPHICS_CONTROLS_PTR
.public PlaceFixedRoomTile
.public PosIsOutOfBounds
.public ResetHiddenStairsSpawn
.public ResetImportantSpawnPositions
.public ResetInnerBoundaryTileRows
.public SECONDARY_TERRAIN_TYPES
.public ShouldMinimapDisplayEntity
.public StairsAlwaysReachable
.public TILESET_PROPERTIES
.public _s32_div_f
.public abs
.public ov10_022BFD20
.public ov29_022E7F7C
.public ov29_022EA408
.public ov29_0233900C
.public ov29_0234217C
.public ov29_02342594
.public ov29_023427E4
.public ov29_02343DC4
.public ov29_02343DD8
.public ov29_0233A470
.public ov29_0233A548
.public ov29_02352FCC
.public ov29_02352FF4
.public ov29_0235352C
.public ov29_0235376C
.public ov29_0235377C
.public ov29_0237CFB8
.public sub_0200A174
.public sub_0200B330
.public sub_0200B3FC
.public sub_0200C008

View File

@@ -0,0 +1,58 @@
#pragma once
.public ConvertSecondaryTerrainToChasms
.public ConvertWallsToChasms
.public DUNGEON_PTR
.public DungeonRand100
.public DungeonRandInt
.public DungeonRandRange
.public EnsureImpassableTilesAreWalls
.public FLOOR_GENERATION_STATUS
.public FinalizeJunctions
.public FlagHallwayJunctions
.public GenerateBeetleFloor
.public GenerateCrossFloor
.public GenerateCrossroadsFloor
.public GenerateFixedRoom
.public GenerateLineFloor
.public GenerateOneRoomMonsterHouseFloor
.public GenerateOuterRingFloor
.public GenerateOuterRoomsFloor
.public GenerateSecondaryTerrainFormations
.public GenerateStandardFloor
.public GenerateTwoRoomsWithMonsterHouseFloor
.public GetFinalKecleonShopSpawnChance
.public GetFloorType
.public GetHiddenStairsType
.public GetKecleonIdToSpawnByFloor
.public GetMinimapData
.public GetTile
.public GetTileTerrain
.public IsCurrentMissionType
.public IsCurrentMissionTypeExact
.public IsGoldenChamber
.public IsHiddenStairsFloor
.public IsNotFullFloorFixedRoom
.public IsOutlawMonsterHouseFloor
.public LoadFixedRoomData
.public MAP_COLOR_TABLE
.public MarkEnemySpawns
.public MarkNonEnemySpawns
.public MarkShopkeeperSpawn
.public ResetFloor
.public ResetHiddenStairsSpawn
.public ResetImportantSpawnPositions
.public ResetInnerBoundaryTileRows
.public ResolveInvalidSpawns
.public SECONDARY_TERRAIN_TYPES
.public StairsAlwaysReachable
.public _s32_div_f
.public abs
.public ov29_0233A0E8
.public ov29_023427E4
.public ov29_02343DC4
.public ov29_02343DD8
.public ov29_0235352C
.public ov29_0235376C
.public ov29_0235377C
.public sub_0200A174
.public sub_0200C008

View File

@@ -0,0 +1,22 @@
#pragma once
.public CORNER_CARDINAL_NEIGHBOR_IS_OPEN
.public DIRECTIONS_XY
.public DUNGEON_PTR
.public DungeonRandInt
.public DungeonRandRange
.public FLOOR_GENERATION_STATUS
.public GetFloorType
.public GetNextFixedRoomAction
.public GetTile
.public GetTileSafe
.public HIDDEN_STAIRS_SPAWN_BLOCKED
.public IsCurrentTilesetBackground
.public IsDestinationFloorWithMonster
.public IsOutlawMonsterHouseFloor
.public PlaceFixedRoomTile
.public PosIsOutOfBounds
.public ResetHiddenStairsSpawn
.public _s32_div_f
.public abs
.public ov29_0234217C
.public ov29_02342594

View File

@@ -1,51 +1,7 @@
#pragma once
.public _s32_div_f
.public AddItemToBagNoHeld
.public AddMoneyCarried
.public AdvanceFrame
.public DisplayItemTip
.public DUNGEON_PTR
.public DungeonRand16Bit
.public DungeonRandInt
.public DungeonRandRange
.public DungeonRngSetPrimary
.public DungeonRngSetSecondary
.public EntityIsValid__02345698
.public GenerateItem
.public GetActualBuyPrice
.public GetActualSellPrice
.public GetCurrentBagCapacity
.public GetItemAtIdx
.public GetItemCategoryVeneer
.public GetItemIdToSpawn
.public GetItemInfo
.public GetItemToRetrieve
.public GetLeader
.public GetMoneyQuantity
.public GetTile
.public GetTileSafe
.public IqSkillIsEnabled
.public IsDestinationFloorWithItem
.public IsShoppableItem
.public LogMessageByIdWithPopupCheckUser
.public MemAlloc
.public MemFree
.public ov29_022FB920
.public ov29_02347040
.public ov29_02348D3C
.public ov29_02348DD8
.public ov29_02348ECC
.public ov29_023531A0
.public SetPreprocessorArgsIdVal
.public SubstitutePlaceholderItemTags
.public ov29_023531A4
.public ov29_023531BC
.public ov29_023531CC
.public ov29_023537B0
.public PlaySeByIdIfNotSilence
.public RemoveEmptyItemsInBag
.public RemoveEquivItemNoHole
.public RemoveGroundItem
.public SetPreprocessorArgsIdVal
.public ShouldMonsterRunAwayAndShowEffect
.public SpawnItemEntity
.public SubstitutePlaceholderItemTags
.public SubstitutePlaceholderStringTags

View File

@@ -0,0 +1,50 @@
#pragma once
.public AddItemToBagNoHeld
.public AddMoneyCarried
.public AdvanceFrame
.public DUNGEON_PTR
.public DisplayItemTip
.public DungeonRand16Bit
.public DungeonRandInt
.public DungeonRandRange
.public DungeonRngSetPrimary
.public DungeonRngSetSecondary
.public EntityIsValid__02345698
.public GenerateItem
.public GetActualBuyPrice
.public GetActualSellPrice
.public GetCurrentBagCapacity
.public GetItemAtIdx
.public GetItemCategoryVeneer
.public GetItemIdToSpawn
.public GetItemInfo
.public GetItemToRetrieve
.public GetLeader
.public GetMoneyQuantity
.public GetTile
.public GetTileSafe
.public IqSkillIsEnabled
.public IsDestinationFloorWithItem
.public IsShoppableItem
.public LogMessageByIdWithPopupCheckUser
.public MemAlloc
.public MemFree
.public PlaySeByIdIfNotSilence
.public RemoveEmptyItemsInBag
.public RemoveEquivItemNoHole
.public RemoveGroundItem
.public SetPreprocessorArgsIdVal
.public ShouldMonsterRunAwayAndShowEffect
.public SpawnItemEntity
.public SubstitutePlaceholderItemTags
.public SubstitutePlaceholderStringTags
.public _s32_div_f
.public ov29_022FB920
.public ov29_02347040
.public ov29_02348D3C
.public ov29_02348DD8
.public ov29_02348ECC
.public ov29_023531A0
.public ov29_023531BC
.public ov29_023531CC
.public ov29_023537B0

File diff suppressed because it is too large Load Diff

2727
asm/overlay_29_022DC694.s Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1050,21 +1050,3 @@ _022E271C:
_022E2724: .word DUNGEON_PTR
_022E2728: .word 0x0001A224 + SHOULD_DISPLAY_ENTITY_OFFSET
arm_func_end ShouldDisplayEntity
arm_func_start ShouldDisplayEntityWrapper
ShouldDisplayEntityWrapper: ; 0x022E272C
ldr ip, _022E2738 ; =ShouldDisplayEntity
mov r1, #0
bx ip
.align 2, 0
_022E2738: .word ShouldDisplayEntity
arm_func_end ShouldDisplayEntityWrapper
arm_func_start ov29_022E273C
ov29_022E273C: ; 0x022E273C
ldr ip, _022E2748 ; =ShouldDisplayEntity
mov r1, #1
bx ip
.align 2, 0
_022E2748: .word ShouldDisplayEntity
arm_func_end ov29_022E273C

File diff suppressed because it is too large Load Diff

322
asm/overlay_29_022E41F0.s Normal file
View File

@@ -0,0 +1,322 @@
.include "asm/macros.inc"
.include "overlay_29_022E41F0.inc"
.text
arm_func_start ov29_022E41F0
ov29_022E41F0: ; 0x022E41F0
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
ldr r0, _022E423C ; =0x000001A7
bl GetEffectAnimationField0x19
mov r2, r0
and r3, r2, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
ldr r1, _022E423C ; =0x000001A7
mov r0, r4
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
.align 2, 0
_022E423C: .word 0x000001A7
arm_func_end ov29_022E41F0
arm_func_start PlayParalysisEffect
PlayParalysisEffect: ; 0x022E4240
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
ldr r0, _022E428C ; =0x000001A7
bl GetEffectAnimationField0x19
mov r2, r0
and r3, r2, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
ldr r1, _022E428C ; =0x000001A7
mov r0, r4
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
.align 2, 0
_022E428C: .word 0x000001A7
arm_func_end PlayParalysisEffect
arm_func_start ov29_022E4290
ov29_022E4290: ; 0x022E4290
bx lr
arm_func_end ov29_022E4290
arm_func_start ov29_022E4294
ov29_022E4294: ; 0x022E4294
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
mov r0, #0x4c
bl GetEffectAnimationField0x19
mov r1, r0
and r3, r1, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
mov r0, r4
mov r1, #0x4c
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
arm_func_end ov29_022E4294
arm_func_start ov29_022E42E0
ov29_022E42E0: ; 0x022E42E0
bx lr
arm_func_end ov29_022E42E0
arm_func_start ov29_022E42E4
ov29_022E42E4: ; 0x022E42E4
bx lr
arm_func_end ov29_022E42E4
arm_func_start PlayEffectAnimationEntityStandard
PlayEffectAnimationEntityStandard: ; 0x022E42E8
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x10
mov r4, r1
mov r5, r0
mov r0, r4
bl GetEffectAnimationField0x19
mov r2, r0
and r3, r2, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
mov r0, r5
mov r1, r4
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, pc}
arm_func_end PlayEffectAnimationEntityStandard
arm_func_start ov29_022E4338
ov29_022E4338: ; 0x022E4338
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
ldr r0, _022E4384 ; =0x000001A9
bl GetEffectAnimationField0x19
mov r2, r0
and r3, r2, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
ldr r1, _022E4384 ; =0x000001A9
mov r0, r4
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
.align 2, 0
_022E4384: .word 0x000001A9
arm_func_end ov29_022E4338
arm_func_start ov29_022E4388
ov29_022E4388: ; 0x022E4388
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
ldr r0, _022E43D4 ; =0x0000013A
bl GetEffectAnimationField0x19
mov r2, r0
mov ip, #0
mov r1, #2
stmia sp, {r1, ip}
sub r0, ip, #1
str r0, [sp, #8]
and r3, r2, #0xff
mov r0, r4
add r1, r1, #0x138
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
.align 2, 0
_022E43D4: .word 0x0000013A
arm_func_end ov29_022E4388
arm_func_start ov29_022E43D8
ov29_022E43D8: ; 0x022E43D8
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
ldr r0, _022E4424 ; =0x0000013A
bl GetEffectAnimationField0x19
mov r2, r0
mov ip, #0
mov r1, #2
stmia sp, {r1, ip}
sub r0, ip, #1
str r0, [sp, #8]
and r3, r2, #0xff
mov r0, r4
add r1, r1, #0x138
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
.align 2, 0
_022E4424: .word 0x0000013A
arm_func_end ov29_022E43D8
arm_func_start ov29_022E4428
ov29_022E4428: ; 0x022E4428
bx lr
arm_func_end ov29_022E4428
arm_func_start ov29_022E442C
ov29_022E442C: ; 0x022E442C
bx lr
arm_func_end ov29_022E442C
arm_func_start ov29_022E4430
ov29_022E4430: ; 0x022E4430
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
ldr r0, _022E447C ; =0x00000171
bl GetEffectAnimationField0x19
mov r2, r0
and r3, r2, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
ldr r1, _022E447C ; =0x00000171
mov r0, r4
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
.align 2, 0
_022E447C: .word 0x00000171
arm_func_end ov29_022E4430
arm_func_start ov29_022E4480
ov29_022E4480: ; 0x022E4480
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
mov r0, #7
bl GetEffectAnimationField0x19
mov r1, r0
and r3, r1, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
mov r0, r4
mov r1, #7
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
arm_func_end ov29_022E4480
arm_func_start PlaySpeedUpEffect
PlaySpeedUpEffect: ; 0x022E44CC
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
ldr r0, _022E4518 ; =0x0000018B
bl GetEffectAnimationField0x19
mov r2, r0
and r3, r2, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
ldr r1, _022E4518 ; =0x0000018B
mov r0, r4
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
.align 2, 0
_022E4518: .word 0x0000018B
arm_func_end PlaySpeedUpEffect
arm_func_start PlaySpeedDownEffect
PlaySpeedDownEffect: ; 0x022E451C
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
ldr r0, _022E4568 ; =0x0000018A
bl GetEffectAnimationField0x19
mov r2, r0
mov ip, #0
mov r1, #2
stmia sp, {r1, ip}
sub r0, ip, #1
str r0, [sp, #8]
and r3, r2, #0xff
mov r0, r4
add r1, r1, #0x188
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
.align 2, 0
_022E4568: .word 0x0000018A
arm_func_end PlaySpeedDownEffect
arm_func_start ov29_022E456C
ov29_022E456C: ; 0x022E456C
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
mov r0, #5
bl GetEffectAnimationField0x19
mov r1, r0
and r3, r1, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
mov r0, r4
mov r1, #5
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
arm_func_end ov29_022E456C

101
asm/overlay_29_022E45CC.s Normal file
View File

@@ -0,0 +1,101 @@
.include "asm/macros.inc"
.include "overlay_29_022E45CC.inc"
.text
arm_func_start ov29_022E45CC
ov29_022E45CC: ; 0x022E45CC
bx lr
arm_func_end ov29_022E45CC
arm_func_start ov29_022E45D0
ov29_022E45D0: ; 0x022E45D0
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x10
mov r5, r0
mov r0, #0x2f
mov r4, r1
bl GetEffectAnimationField0x19
mov r1, r0
and r3, r1, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
mov r0, r4
mov r1, #0x2f
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
mov r0, #0x30
bl GetEffectAnimationField0x19
mov r1, r0
and r3, r1, #0xff
mov r1, #2
str r1, [sp]
mov r2, #0
str r2, [sp, #4]
sub r1, r2, #1
str r1, [sp, #8]
str r2, [sp, #0xc]
mov r0, r5
mov r1, #0x30
mov r2, #1
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ov29_022E45D0
arm_func_start ov29_022E465C
ov29_022E465C: ; 0x022E465C
bx lr
arm_func_end ov29_022E465C
arm_func_start ov29_022E4660
ov29_022E4660: ; 0x022E4660
bx lr
arm_func_end ov29_022E4660
arm_func_start ov29_022E4664
ov29_022E4664: ; 0x022E4664
bx lr
arm_func_end ov29_022E4664
arm_func_start ov29_022E4668
ov29_022E4668: ; 0x022E4668
bx lr
arm_func_end ov29_022E4668
arm_func_start ov29_022E466C
ov29_022E466C: ; 0x022E466C
bx lr
arm_func_end ov29_022E466C
arm_func_start ov29_022E4670
ov29_022E4670: ; 0x022E4670
bx lr
arm_func_end ov29_022E4670
arm_func_start ov29_022E4674
ov29_022E4674: ; 0x022E4674
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
mov r0, #0x21
bl GetEffectAnimationField0x19
mov r1, r0
and r3, r1, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
mov r0, r4
mov r1, #0x21
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
arm_func_end ov29_022E4674

29
asm/overlay_29_022E46D0.s Normal file
View File

@@ -0,0 +1,29 @@
.include "asm/macros.inc"
.include "overlay_29_022E46D0.inc"
.text
arm_func_start ov29_022E46D0
ov29_022E46D0: ; 0x022E46D0
bx lr
arm_func_end ov29_022E46D0
arm_func_start DisplayStockpileNumbers
DisplayStockpileNumbers: ; 0x022E46D4
stmdb sp!, {r4, lr}
mov r4, r0
bl ShouldDisplayEntityAdvanced
cmp r0, #0
ldmeqia sp!, {r4, pc}
ldr r0, [r4, #0xb4]
mov r1, r4
#ifdef JAPAN
ldrb r0, [r0, #0x11a]
#else
ldrb r0, [r0, #0x11e]
#endif
mov r2, #1
mov r3, #0xb
bl DisplayAnimatedNumbers
ldmia sp!, {r4, pc}
arm_func_end DisplayStockpileNumbers

384
asm/overlay_29_022E4714.s Normal file
View File

@@ -0,0 +1,384 @@
.include "asm/macros.inc"
.include "overlay_29_022E4714.inc"
.text
arm_func_start ov29_022E4714
ov29_022E4714: ; 0x022E4714
bx lr
arm_func_end ov29_022E4714
arm_func_start ov29_022E4718
ov29_022E4718: ; 0x022E4718
bx lr
arm_func_end ov29_022E4718
arm_func_start ov29_022E471C
ov29_022E471C: ; 0x022E471C
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
ldr r0, _022E4768 ; =0x00000131
bl GetEffectAnimationField0x19
mov r2, r0
and r3, r2, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
ldr r1, _022E4768 ; =0x00000131
mov r0, r4
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
.align 2, 0
_022E4768: .word 0x00000131
arm_func_end ov29_022E471C
arm_func_start ov29_022E476C
ov29_022E476C: ; 0x022E476C
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
mov r0, #0x30
bl GetEffectAnimationField0x19
mov r1, r0
and r3, r1, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
mov r0, r4
mov r1, #0x30
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
arm_func_end ov29_022E476C
arm_func_start ov29_022E47B8
ov29_022E47B8: ; 0x022E47B8
bx lr
arm_func_end ov29_022E47B8
arm_func_start ov29_022E47BC
ov29_022E47BC: ; 0x022E47BC
bx lr
arm_func_end ov29_022E47BC
arm_func_start ov29_022E47C0
ov29_022E47C0: ; 0x022E47C0
bx lr
arm_func_end ov29_022E47C0
arm_func_start ov29_022E47C4
ov29_022E47C4: ; 0x022E47C4
bx lr
arm_func_end ov29_022E47C4
arm_func_start ov29_022E47C8
ov29_022E47C8: ; 0x022E47C8
bx lr
arm_func_end ov29_022E47C8
arm_func_start ov29_022E47CC
ov29_022E47CC: ; 0x022E47CC
stmdb sp!, {r3, r4, r5, lr}
sub sp, sp, #0x10
mov r5, r1
mov r1, #0xe
mov r4, r0
bl MonsterIsType
cmp r0, #0
beq _022E4828
mov r0, r5
bl GetEffectAnimationField0x19
mov r2, r0
and r3, r2, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
mov r0, r4
mov r1, r5
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
b _022E4860
_022E4828:
mov r0, #0xe
bl GetEffectAnimationField0x19
mov r1, r0
and r3, r1, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
mov r0, r4
mov r1, #0xe
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
_022E4860:
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ov29_022E47CC
arm_func_start ov29_022E4868
ov29_022E4868: ; 0x022E4868
bx lr
arm_func_end ov29_022E4868
arm_func_start ov29_022E486C
ov29_022E486C: ; 0x022E486C
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
mov r0, #0x41
bl GetEffectAnimationField0x19
mov r1, r0
and r3, r1, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
mov r0, r4
mov r1, #0x41
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
arm_func_end ov29_022E486C
arm_func_start ov29_022E48B8
ov29_022E48B8: ; 0x022E48B8
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
ldr r0, _022E4910 ; =0x0000011E
bl GetEffectAnimationField0x19
mov r2, r0
mov ip, #0
mov r1, #2
stmia sp, {r1, ip}
sub r0, ip, #1
str r0, [sp, #8]
and r3, r2, #0xff
mov r0, r4
add r1, r1, #0x11c
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
mov r0, r4
mov r1, #0x20c
bl PlaySeByIdIfShouldDisplayEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
.align 2, 0
_022E4910: .word 0x0000011E
arm_func_end ov29_022E48B8
arm_func_start ov29_022E4914
ov29_022E4914: ; 0x022E4914
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
ldr r0, _022E4960 ; =0x000001AE
bl GetEffectAnimationField0x19
mov r2, r0
mov ip, #0
mov r1, #2
stmia sp, {r1, ip}
sub r0, ip, #1
str r0, [sp, #8]
and r3, r2, #0xff
mov r0, r4
add r1, r1, #0x1ac
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
.align 2, 0
_022E4960: .word 0x000001AE
arm_func_end ov29_022E4914
arm_func_start ShowPpRestoreEffect
ShowPpRestoreEffect: ; 0x022E4964
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
ldr r0, _022E49B0 ; =0x000001B1
bl GetEffectAnimationField0x19
mov r2, r0
and r3, r2, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
ldr r1, _022E49B0 ; =0x000001B1
mov r0, r4
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
.align 2, 0
_022E49B0: .word 0x000001B1
arm_func_end ShowPpRestoreEffect
arm_func_start ov29_022E49B4
ov29_022E49B4: ; 0x022E49B4
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
ldr r0, _022E4A00 ; =0x000001A9
bl GetEffectAnimationField0x19
mov r2, r0
and r3, r2, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
ldr r1, _022E4A00 ; =0x000001A9
mov r0, r4
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
.align 2, 0
_022E4A00: .word 0x000001A9
arm_func_end ov29_022E49B4
arm_func_start ov29_022E4A04
ov29_022E4A04: ; 0x022E4A04
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
ldr r0, _022E4A50 ; =0x00000192
bl GetEffectAnimationField0x19
mov r2, r0
mov ip, #0
mov r1, #2
stmia sp, {r1, ip}
sub r0, ip, #1
str r0, [sp, #8]
and r3, r2, #0xff
mov r0, r4
add r1, r1, #0x190
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
.align 2, 0
_022E4A50: .word 0x00000192
arm_func_end ov29_022E4A04
arm_func_start ov29_022E4A54
ov29_022E4A54: ; 0x022E4A54
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
ldr r0, _022E4AA0 ; =0x0000018E
bl GetEffectAnimationField0x19
mov r2, r0
mov ip, #0
mov r1, #2
stmia sp, {r1, ip}
sub r0, ip, #1
str r0, [sp, #8]
and r3, r2, #0xff
mov r0, r4
add r1, r1, #0x18c
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
.align 2, 0
_022E4AA0: .word 0x0000018E
arm_func_end ov29_022E4A54
arm_func_start ov29_022E4AA4
ov29_022E4AA4: ; 0x022E4AA4
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
mov r0, #0x190
bl GetEffectAnimationField0x19
mov r1, r0
and r3, r1, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
mov r0, r4
mov r1, #0x190
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
arm_func_end ov29_022E4AA4
arm_func_start ov29_022E4AF0
ov29_022E4AF0: ; 0x022E4AF0
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
mov r0, #0x15
bl GetEffectAnimationField0x19
mov r1, r0
and r3, r1, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
mov r0, r4
mov r1, #0x15
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
arm_func_end ov29_022E4AF0
arm_func_start ov29_022E4B3C
ov29_022E4B3C: ; 0x022E4B3C
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
ldr r0, _022E4B88 ; =0x00000171
bl GetEffectAnimationField0x19
mov r2, r0
and r3, r2, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
ldr r1, _022E4B88 ; =0x00000171
mov r0, r4
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
.align 2, 0
_022E4B88: .word 0x00000171
arm_func_end ov29_022E4B3C

825
asm/overlay_29_022E4BB4.s Normal file
View File

@@ -0,0 +1,825 @@
.include "asm/macros.inc"
.include "overlay_29_022E4BB4.inc"
.text
arm_func_start ov29_022E4BB4
ov29_022E4BB4: ; 0x022E4BB4
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
mov r0, #0x15
bl GetEffectAnimationField0x19
mov r1, r0
and r3, r1, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
mov r0, r4
mov r1, #0x15
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
arm_func_end ov29_022E4BB4
arm_func_start ov29_022E4C00
ov29_022E4C00: ; 0x022E4C00
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
mov r0, #0xf
bl GetEffectAnimationField0x19
mov r1, r0
and r3, r1, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
mov r0, r4
mov r1, #0xf
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
arm_func_end ov29_022E4C00
arm_func_start ov29_022E4C4C
ov29_022E4C4C: ; 0x022E4C4C
stmdb sp!, {r3, lr}
sub sp, sp, #0x10
mov r1, #2
mov ip, #0
stmia sp, {r1, ip}
sub r1, ip, #1
str r1, [sp, #8]
mov r1, #0x15
mov r2, #1
mov r3, #3
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r3, pc}
arm_func_end ov29_022E4C4C
arm_func_start ov29_022E4C84
ov29_022E4C84: ; 0x022E4C84
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
ldr r0, _022E4CD0 ; =0x000001F7
bl GetEffectAnimationField0x19
mov r2, r0
and r3, r2, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
ldr r1, _022E4CD0 ; =0x000001F7
mov r0, r4
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
.align 2, 0
_022E4CD0: .word 0x000001F7
arm_func_end ov29_022E4C84
arm_func_start ov29_022E4CD4
ov29_022E4CD4: ; 0x022E4CD4
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
ldr r0, _022E4D20 ; =0x000001F9
bl GetEffectAnimationField0x19
mov r2, r0
and r3, r2, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
ldr r1, _022E4D20 ; =0x000001F9
mov r0, r4
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
.align 2, 0
_022E4D20: .word 0x000001F9
arm_func_end ov29_022E4CD4
arm_func_start ov29_022E4D24
ov29_022E4D24: ; 0x022E4D24
bx lr
arm_func_end ov29_022E4D24
arm_func_start PlayOffensiveStatDownEffect
PlayOffensiveStatDownEffect: ; 0x022E4D28
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
ldr r1, [sp, #0x1c]
mov r4, r0
cmp r1, #0
bne _022E4D80
mov r0, #0x194
bl GetEffectAnimationField0x19
mov r1, r0
and r3, r1, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
mov r0, r4
mov r1, #0x194
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
b _022E4DB8
_022E4D80:
ldr r0, _022E4DC8 ; =0x00000193
bl GetEffectAnimationField0x19
mov r2, r0
and r3, r2, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
ldr r1, _022E4DC8 ; =0x00000193
mov r0, r4
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
_022E4DB8:
add sp, sp, #0x10
ldmia sp!, {r4, lr}
add sp, sp, #0x10
bx lr
.align 2, 0
_022E4DC8: .word 0x00000193
arm_func_end PlayOffensiveStatDownEffect
arm_func_start PlayDefensiveStatDownEffect
PlayDefensiveStatDownEffect: ; 0x022E4DCC
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
ldr r1, [sp, #0x1c]
mov r4, r0
cmp r1, #0
bne _022E4E24
ldr r0, _022E4E6C ; =0x0000018F
bl GetEffectAnimationField0x19
mov r2, r0
and r3, r2, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
ldr r1, _022E4E6C ; =0x0000018F
mov r0, r4
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
b _022E4E5C
_022E4E24:
ldr r0, _022E4E70 ; =0x00000191
bl GetEffectAnimationField0x19
mov r2, r0
and r3, r2, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
ldr r1, _022E4E70 ; =0x00000191
mov r0, r4
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
_022E4E5C:
add sp, sp, #0x10
ldmia sp!, {r4, lr}
add sp, sp, #0x10
bx lr
.align 2, 0
_022E4E6C: .word 0x0000018F
_022E4E70: .word 0x00000191
arm_func_end PlayDefensiveStatDownEffect
arm_func_start PlayOffensiveStatUpEffect
PlayOffensiveStatUpEffect: ; 0x022E4E74
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
ldr r1, [sp, #0x1c]
mov r4, r0
cmp r1, #0
bne _022E4ECC
ldr r0, _022E4F14 ; =0x000001A9
bl GetEffectAnimationField0x19
mov r2, r0
and r3, r2, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
ldr r1, _022E4F14 ; =0x000001A9
mov r0, r4
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
b _022E4F04
_022E4ECC:
ldr r0, _022E4F18 ; =0x00000192
bl GetEffectAnimationField0x19
mov r2, r0
mov ip, #0
mov r1, #2
stmia sp, {r1, ip}
sub r0, ip, #1
str r0, [sp, #8]
and r3, r2, #0xff
mov r0, r4
add r1, r1, #0x190
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
_022E4F04:
add sp, sp, #0x10
ldmia sp!, {r4, lr}
add sp, sp, #0x10
bx lr
.align 2, 0
_022E4F14: .word 0x000001A9
_022E4F18: .word 0x00000192
arm_func_end PlayOffensiveStatUpEffect
arm_func_start PlayDefensiveStatUpEffect
PlayDefensiveStatUpEffect: ; 0x022E4F1C
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
ldr r1, [sp, #0x1c]
mov r4, r0
cmp r1, #0
bne _022E4F74
ldr r0, _022E4FBC ; =0x0000018E
bl GetEffectAnimationField0x19
mov r2, r0
mov ip, #0
mov r1, #2
stmia sp, {r1, ip}
sub r0, ip, #1
str r0, [sp, #8]
and r3, r2, #0xff
mov r0, r4
add r1, r1, #0x18c
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
b _022E4FAC
_022E4F74:
mov r0, #0x190
bl GetEffectAnimationField0x19
mov r1, r0
and r3, r1, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
mov r0, r4
mov r1, #0x190
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
_022E4FAC:
add sp, sp, #0x10
ldmia sp!, {r4, lr}
add sp, sp, #0x10
bx lr
.align 2, 0
_022E4FBC: .word 0x0000018E
arm_func_end PlayDefensiveStatUpEffect
arm_func_start PlayOffensiveStatMultiplierUpEffect
PlayOffensiveStatMultiplierUpEffect: ; 0x022E4FC0
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
ldr r1, [sp, #0x1c]
mov r4, r0
cmp r1, #0
bne _022E5018
ldr r0, _022E5060 ; =0x000001A9
bl GetEffectAnimationField0x19
mov r2, r0
and r3, r2, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
ldr r1, _022E5060 ; =0x000001A9
mov r0, r4
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
b _022E5050
_022E5018:
ldr r0, _022E5064 ; =0x00000192
bl GetEffectAnimationField0x19
mov r2, r0
mov ip, #0
mov r1, #2
stmia sp, {r1, ip}
sub r0, ip, #1
str r0, [sp, #8]
and r3, r2, #0xff
mov r0, r4
add r1, r1, #0x190
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
_022E5050:
add sp, sp, #0x10
ldmia sp!, {r4, lr}
add sp, sp, #0x10
bx lr
.align 2, 0
_022E5060: .word 0x000001A9
_022E5064: .word 0x00000192
arm_func_end PlayOffensiveStatMultiplierUpEffect
arm_func_start PlayOffensiveStatMultiplierDownEffect
PlayOffensiveStatMultiplierDownEffect: ; 0x022E5068
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
ldr r1, [sp, #0x1c]
mov r4, r0
cmp r1, #0
bne _022E50C0
mov r0, #0x194
bl GetEffectAnimationField0x19
mov r1, r0
and r3, r1, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
mov r0, r4
mov r1, #0x194
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
b _022E50F8
_022E50C0:
ldr r0, _022E5108 ; =0x00000193
bl GetEffectAnimationField0x19
mov r2, r0
and r3, r2, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
ldr r1, _022E5108 ; =0x00000193
mov r0, r4
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
_022E50F8:
add sp, sp, #0x10
ldmia sp!, {r4, lr}
add sp, sp, #0x10
bx lr
.align 2, 0
_022E5108: .word 0x00000193
arm_func_end PlayOffensiveStatMultiplierDownEffect
arm_func_start PlayDefensiveStatMultiplierUpEffect
PlayDefensiveStatMultiplierUpEffect: ; 0x022E510C
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
ldr r1, [sp, #0x1c]
mov r4, r0
cmp r1, #0
bne _022E5164
ldr r0, _022E51AC ; =0x0000018E
bl GetEffectAnimationField0x19
mov r2, r0
mov ip, #0
mov r1, #2
stmia sp, {r1, ip}
sub r0, ip, #1
str r0, [sp, #8]
and r3, r2, #0xff
mov r0, r4
add r1, r1, #0x18c
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
b _022E519C
_022E5164:
mov r0, #0x190
bl GetEffectAnimationField0x19
mov r1, r0
and r3, r1, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
mov r0, r4
mov r1, #0x190
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
_022E519C:
add sp, sp, #0x10
ldmia sp!, {r4, lr}
add sp, sp, #0x10
bx lr
.align 2, 0
_022E51AC: .word 0x0000018E
arm_func_end PlayDefensiveStatMultiplierUpEffect
arm_func_start PlayDefensiveStatMultiplierDownEffect
PlayDefensiveStatMultiplierDownEffect: ; 0x022E51B0
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
ldr r1, [sp, #0x1c]
mov r4, r0
cmp r1, #0
bne _022E5208
ldr r0, _022E5250 ; =0x0000018F
bl GetEffectAnimationField0x19
mov r2, r0
and r3, r2, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
ldr r1, _022E5250 ; =0x0000018F
mov r0, r4
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
b _022E5240
_022E5208:
ldr r0, _022E5254 ; =0x00000191
bl GetEffectAnimationField0x19
mov r2, r0
and r3, r2, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
ldr r1, _022E5254 ; =0x00000191
mov r0, r4
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
_022E5240:
add sp, sp, #0x10
ldmia sp!, {r4, lr}
add sp, sp, #0x10
bx lr
.align 2, 0
_022E5250: .word 0x0000018F
_022E5254: .word 0x00000191
arm_func_end PlayDefensiveStatMultiplierDownEffect
arm_func_start PlayHitChanceUpEffect
PlayHitChanceUpEffect: ; 0x022E5258
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
ldr r1, [sp, #0x1c]
mov r4, r0
cmp r1, #0
bne _022E52B0
mov r0, #0x18c
bl GetEffectAnimationField0x19
mov r1, r0
and r3, r1, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
mov r0, r4
mov r1, #0x18c
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
b _022E52E8
_022E52B0:
mov r0, #0xd
bl GetEffectAnimationField0x19
mov r1, r0
and r3, r1, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
mov r0, r4
mov r1, #0xd
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
_022E52E8:
add sp, sp, #0x10
ldmia sp!, {r4, lr}
add sp, sp, #0x10
bx lr
arm_func_end PlayHitChanceUpEffect
arm_func_start PlayHitChanceDownEffect
PlayHitChanceDownEffect: ; 0x022E52F8
stmdb sp!, {r0, r1, r2, r3}
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
ldr r1, [sp, #0x1c]
mov r4, r0
cmp r1, #0
bne _022E5350
ldr r0, _022E5398 ; =0x0000018D
bl GetEffectAnimationField0x19
mov r2, r0
and r3, r2, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
ldr r1, _022E5398 ; =0x0000018D
mov r0, r4
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
b _022E5388
_022E5350:
mov r0, #0xe
bl GetEffectAnimationField0x19
mov r1, r0
and r3, r1, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
mov r0, r4
mov r1, #0xe
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
_022E5388:
add sp, sp, #0x10
ldmia sp!, {r4, lr}
add sp, sp, #0x10
bx lr
.align 2, 0
_022E5398: .word 0x0000018D
arm_func_end PlayHitChanceDownEffect
arm_func_start PlayExclamationPointEffect__022E5D4C
PlayExclamationPointEffect__022E5D4C: ; 0x022E539C
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
ldr r0, _022E53E8 ; =0x00000143
bl GetEffectAnimationField0x19
mov r2, r0
and r3, r2, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
ldr r1, _022E53E8 ; =0x00000143
mov r0, r4
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
.align 2, 0
_022E53E8: .word 0x00000143
arm_func_end PlayExclamationPointEffect__022E5D4C
arm_func_start ov29_022E53EC
ov29_022E53EC: ; 0x022E53EC
bx lr
arm_func_end ov29_022E53EC
arm_func_start ov29_022E53F0
ov29_022E53F0: ; 0x022E53F0
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
mov r0, #0x19
bl GetEffectAnimationField0x19
mov r1, r0
and r3, r1, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
mov r0, r4
mov r1, #0x19
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
arm_func_end ov29_022E53F0
arm_func_start ov29_022E543C
ov29_022E543C: ; 0x022E543C
stmdb sp!, {r3, lr}
sub sp, sp, #0x10
mov r1, #2
mov ip, #0
stmia sp, {r1, ip}
sub r1, ip, #1
str r1, [sp, #8]
mov r1, #0x15
mov r2, #1
mov r3, #3
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r3, pc}
arm_func_end ov29_022E543C
arm_func_start ov29_022E5474
ov29_022E5474: ; 0x022E5474
bx lr
arm_func_end ov29_022E5474
arm_func_start ov29_022E5478
ov29_022E5478: ; 0x022E5478
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
ldr r2, _022E5508 ; =DUNGEON_PTR
mov r4, r0
ldr r2, [r2]
ldr r0, [r1, #8]
ldrb r1, [r2, #0x1c5]
cmp r1, #0
beq _022E54A0
bl ov29_0230D618
_022E54A0:
cmp r0, #3
addls pc, pc, r0, lsl #2
b _022E54BC
_022E54AC: ; jump table
b _022E54BC ; case 0
b _022E54C4 ; case 1
b _022E54CC ; case 2
b _022E54D4 ; case 3
_022E54BC:
mov r1, #8
b _022E54D8
_022E54C4:
mov r1, #9
b _022E54D8
_022E54CC:
mov r1, #0xa
b _022E54D8
_022E54D4:
mov r1, #0xb
_022E54D8:
mov ip, #0
mov r2, #1
str ip, [sp]
str r2, [sp, #4]
sub r0, r2, #2
str r0, [sp, #8]
mov r0, r4
mov r3, #3
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
.align 2, 0
_022E5508: .word DUNGEON_PTR
arm_func_end ov29_022E5478
arm_func_start ov29_022E550C
ov29_022E550C: ; 0x022E550C
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
ldr r0, _022E5558 ; =0x0000013E
bl GetEffectAnimationField0x19
mov r2, r0
mov ip, #0
mov r1, #2
stmia sp, {r1, ip}
sub r0, ip, #1
str r0, [sp, #8]
and r3, r2, #0xff
mov r0, r4
add r1, r1, #0x13c
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
.align 2, 0
_022E5558: .word 0x0000013E
arm_func_end ov29_022E550C
arm_func_start ov29_022E555C
ov29_022E555C: ; 0x022E555C
bx lr
arm_func_end ov29_022E555C
arm_func_start ov29_022E5560
ov29_022E5560: ; 0x022E5560
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r1
cmp r2, #1
bne _022E55B0
mov r0, #0xf8
bl GetEffectAnimationField0x19
mov r1, r0
and r3, r1, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
mov r0, r4
mov r1, #0xf8
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
b _022E55E8
_022E55B0:
mov r0, #0xf9
bl GetEffectAnimationField0x19
mov r1, r0
and r3, r1, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
mov r0, r4
mov r1, #0xf9
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
_022E55E8:
add sp, sp, #0x10
ldmia sp!, {r4, pc}
arm_func_end ov29_022E5560
arm_func_start ov29_022E55F0
ov29_022E55F0: ; 0x022E55F0
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r0, #0x2a
mov r4, r1
bl GetEffectAnimationField0x19
mov r1, r0
and r3, r1, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
mov r0, r4
mov r1, #0x2a
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
arm_func_end ov29_022E55F0

1311
asm/overlay_29_022E5650.s Normal file

File diff suppressed because it is too large Load Diff

50
asm/overlay_29_022E66D8.s Normal file
View File

@@ -0,0 +1,50 @@
.include "asm/macros.inc"
.include "overlay_29_022E66D8.inc"
.text
arm_func_start ov29_022E66D8
ov29_022E66D8: ; 0x022E66D8
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
mov r0, #0x15
bl GetEffectAnimationField0x19
mov r1, r0
and r3, r1, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
mov r0, r4
mov r1, #0x15
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
arm_func_end ov29_022E66D8
arm_func_start ov29_022E6724
ov29_022E6724: ; 0x022E6724
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
mov r0, #0x1b4
bl GetEffectAnimationField0x19
mov r1, r0
and r3, r1, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
mov r0, r4
mov r1, #0x1b4
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
arm_func_end ov29_022E6724

94
asm/overlay_29_022E6798.s Normal file
View File

@@ -0,0 +1,94 @@
.include "asm/macros.inc"
.include "overlay_29_022E6798.inc"
.text
arm_func_start ov29_022E6798
ov29_022E6798: ; 0x022E6798
stmdb sp!, {r4, lr}
sub sp, sp, #0x10
mov r4, r0
mov r0, #0x18
bl GetEffectAnimationField0x19
mov r1, r0
and r3, r1, #0xff
mov r0, #2
mov ip, #0
stmia sp, {r0, ip}
sub r0, ip, #1
str r0, [sp, #8]
mov r0, r4
mov r1, #0x18
mov r2, #1
str ip, [sp, #0xc]
bl PlayEffectAnimationEntity
add sp, sp, #0x10
ldmia sp!, {r4, pc}
arm_func_end ov29_022E6798
arm_func_start ov29_022E67E4
ov29_022E67E4: ; 0x022E67E4
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x10
mov r6, r1
mov r7, r0
mov r0, r6
mov r4, r2
mov r5, #0x200
bl ShouldDisplayEntityAdvanced
cmp r0, #0
beq _022E68AC
mov r0, r7
bl GetEffectAnimationField0x19
mov r3, r0
mov r0, #2
mov r2, #0
stmia sp, {r0, r2}
sub r0, r2, #1
str r0, [sp, #8]
mov r0, r6
mov r1, r7
and r3, r3, #0xff
str r2, [sp, #0xc]
bl PlayEffectAnimationEntity
mov r0, r4
mov r1, #0x42
bl ov29_022EA370
mov r4, #0x42
ldr sb, _022E68B4 ; =DUNGEON_PTR
ldr r7, _022E68B8 ; =0x0001A226
mvn r8, #7
b _022E6894
_022E6860:
mov r0, r4
bl AdvanceFrame
ldr r0, [r6, #0x1c]
add r2, r0, r5
str r2, [r6, #0x1c]
ldr r0, [sb]
ldr r1, [r6, #0x10]
ldrsh r0, [r0, r7]
sub r1, r1, r2
add r5, r5, #0x100
rsb r0, r0, r1, asr #8
cmp r0, r8
blt _022E68A0
_022E6894:
ldr r0, [r6, #0x1c]
cmp r0, #0xc800
blt _022E6860
_022E68A0:
mov r0, #0
strb r0, [r6, #0x20]
bl AnimationDelayOrSomething
_022E68AC:
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_022E68B4: .word DUNGEON_PTR
#ifdef JAPAN
_022E68B8: .word 0x0001A182
#else
_022E68B8: .word 0x0001A226
#endif
arm_func_end ov29_022E67E4

1278
asm/overlay_29_022E6928.s Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -655,800 +655,3 @@ ov29_022E8650: ; 0x022E8650
.align 2, 0
_022E8698: .word TOP_SCREEN_STATUS_PTR
arm_func_end ov29_022E8650
arm_func_start ov29_022E869C
ov29_022E869C: ; 0x022E869C
mov r0, #1
bx lr
arm_func_end ov29_022E869C
arm_func_start ov29_022E86A4
ov29_022E86A4: ; 0x022E86A4
bx lr
arm_func_end ov29_022E86A4
arm_func_start ov29_022E86A8
ov29_022E86A8: ; 0x022E86A8
stmdb sp!, {r3, lr}
ldr r0, _022E86C4 ; =TOP_SCREEN_STATUS_PTR
ldr r0, [r0]
add r0, r0, #0x80
bl ov10_022C2278
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_022E86C4: .word TOP_SCREEN_STATUS_PTR
arm_func_end ov29_022E86A8
arm_func_start AssignTopScreenHandlers
AssignTopScreenHandlers: ; 0x022E86C8
str r1, [r0]
ldr r1, [sp]
stmib r0, {r2, r3}
str r1, [r0, #0xc]
mov r1, #1
strb r1, [r0, #0x10]
bx lr
arm_func_end AssignTopScreenHandlers
arm_func_start ov29_022E86E4
ov29_022E86E4: ; 0x022E86E4
stmdb sp!, {r3, lr}
ldr r0, _022E8704 ; =TOP_SCREEN_STATUS_PTR
ldr r0, [r0]
ldr r0, [r0, #0x18]
cmp r0, #0
ldmeqia sp!, {r3, pc}
blx r0
ldmia sp!, {r3, pc}
.align 2, 0
_022E8704: .word TOP_SCREEN_STATUS_PTR
arm_func_end ov29_022E86E4
arm_func_start ov29_022E8708
ov29_022E8708: ; 0x022E8708
stmdb sp!, {r3, lr}
bl GetTopScreenOption
cmp r0, #3
bne _022E8724
mov r0, #3
bl DungeonChangeTopScreenType
ldmia sp!, {r3, pc}
_022E8724:
cmp r0, #2
bne _022E8738
mov r0, #0
bl DungeonChangeTopScreenType
ldmia sp!, {r3, pc}
_022E8738:
cmp r0, #0
bne _022E874C
mov r0, #2
bl DungeonChangeTopScreenType
ldmia sp!, {r3, pc}
_022E874C:
cmp r0, #4
bne _022E8760
mov r0, #4
bl DungeonChangeTopScreenType
ldmia sp!, {r3, pc}
_022E8760:
bl ov29_022E81F8
ldmia sp!, {r3, pc}
arm_func_end ov29_022E8708
arm_func_start ov29_022E8768
ov29_022E8768: ; 0x022E8768
ldr ip, _022E8774 ; =DungeonChangeTopScreenType
mov r0, #5
bx ip
.align 2, 0
_022E8774: .word DungeonChangeTopScreenType
arm_func_end ov29_022E8768
arm_func_start ov29_022E8778
ov29_022E8778: ; 0x022E8778
stmdb sp!, {r3, lr}
ldr r0, _022E87B0 ; =TOP_SCREEN_STATUS_PTR
mov r3, #3
ldr r2, [r0]
sub r1, r3, #4
str r3, [r2, #0xc]
ldr r0, [r0]
strh r1, [r0, #0x10]
bl ov29_022E8104
ldr r0, _022E87B0 ; =TOP_SCREEN_STATUS_PTR
ldr r1, [r0]
ldrsh r0, [r1, #0x10]
strh r0, [r1, #8]
ldmia sp!, {r3, pc}
.align 2, 0
_022E87B0: .word TOP_SCREEN_STATUS_PTR
arm_func_end ov29_022E8778
arm_func_start ov29_022E87B4
ov29_022E87B4: ; 0x022E87B4
ldr r1, _022E87D8 ; =TOP_SCREEN_STATUS_PTR
ldr r2, [r1]
ldrsh r1, [r2, #8]
cmp r1, r0
ldreq r0, [r2, #4]
cmpeq r0, #5
moveq r0, #1
movne r0, #0
bx lr
.align 2, 0
_022E87D8: .word TOP_SCREEN_STATUS_PTR
arm_func_end ov29_022E87B4
arm_func_start ov29_022E87DC
ov29_022E87DC: ; 0x022E87DC
stmdb sp!, {r3, lr}
bl GetTopScreenOption
ldr r1, _022E87F8 ; =ov29_023515E8
mov r0, r0, lsl #1
ldrsh r0, [r1, r0]
bl ov29_022E87B4
ldmia sp!, {r3, pc}
.align 2, 0
_022E87F8: .word ov29_023515E8
arm_func_end ov29_022E87DC
arm_func_start ov29_022E87FC
ov29_022E87FC: ; 0x022E87FC
ldr r1, _022E880C ; =TOP_SCREEN_STATUS_PTR
ldr r1, [r1]
strb r0, [r1, #0x2b]
bx lr
.align 2, 0
_022E880C: .word TOP_SCREEN_STATUS_PTR
arm_func_end ov29_022E87FC
arm_func_start ov29_022E8810
ov29_022E8810: ; 0x022E8810
ldr r0, _022E8830 ; =TOP_SCREEN_STATUS_PTR
ldr r0, [r0]
ldr r0, [r0, #4]
cmp r0, #1
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_022E8830: .word TOP_SCREEN_STATUS_PTR
arm_func_end ov29_022E8810
arm_func_start ov29_022E8834
ov29_022E8834: ; 0x022E8834
ldr r1, _022E8844 ; =TOP_SCREEN_STATUS_PTR
ldr r1, [r1]
strb r0, [r1, #0x2c]
bx lr
.align 2, 0
_022E8844: .word TOP_SCREEN_STATUS_PTR
arm_func_end ov29_022E8834
arm_func_start ov29_022E8848
ov29_022E8848: ; 0x022E8848
ldr r0, _022E8868 ; =TOP_SCREEN_STATUS_PTR
ldr r0, [r0]
ldr r0, [r0, #4]
cmp r0, #3
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_022E8868: .word TOP_SCREEN_STATUS_PTR
arm_func_end ov29_022E8848
arm_func_start HandleTopScreenFades
HandleTopScreenFades: ; 0x022E886C
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _022E8BA0 ; =TOP_SCREEN_STATUS_PTR
ldr r5, [r0]
cmp r5, #0
ldmeqia sp!, {r3, r4, r5, pc}
ldr r1, [r5, #4]
cmp r1, #6
addls pc, pc, r1, lsl #2
ldmia sp!, {r3, r4, r5, pc}
_022E8890: ; jump table
ldmia sp!, {r3, r4, r5, pc} ; case 0
b _022E88AC ; case 1
b _022E88C0 ; case 2
b _022E8A80 ; case 3
b _022E8AC8 ; case 4
b _022E8B00 ; case 5
b _022E8B5C ; case 6
_022E88AC:
ldrb r0, [r5, #0x2b]
cmp r0, #0
moveq r0, #2
streq r0, [r5, #4]
ldmia sp!, {r3, r4, r5, pc}
_022E88C0:
ldrb r0, [r5, #2]
cmp r0, #0
beq _022E88EC
mov r0, #1
bl ov29_0234C70C
cmp r0, #0
ldmneia sp!, {r3, r4, r5, pc}
ldr r0, _022E8BA0 ; =TOP_SCREEN_STATUS_PTR
mov r1, #5
ldr r0, [r0]
str r1, [r0, #4]
_022E88EC:
bl FreeTopScreen
ldr r0, _022E8BA0 ; =TOP_SCREEN_STATUS_PTR
ldr r4, [r0]
ldrsh r0, [r4, #0x10]
cmp r0, #5
addls pc, pc, r0, lsl #2
b _022E89DC
_022E8908: ; jump table
b _022E8920 ; case 0
b _022E8940 ; case 1
b _022E8960 ; case 2
b _022E8980 ; case 3
b _022E89A0 ; case 4
b _022E89C0 ; case 5
_022E8920:
ldr ip, _022E8BA4 ; =ov29_022E84B0
ldr r1, _022E8BA8 ; =ov29_022E840C
ldr r3, _022E8BAC ; =ov29_022E847C
add r0, r4, #0x14
mov r2, #0
str ip, [sp]
bl AssignTopScreenHandlers
b _022E89DC
_022E8940:
ldr ip, _022E8BB0 ; =FreeTeamStatsWrapper
ldr r1, _022E8BB4 ; =InitializeTeamStats
ldr r2, _022E8BB8 ; =UpdateTeamStatsWrapper
ldr r3, _022E8BBC ; =ov29_022E81C8
add r0, r4, #0x14
str ip, [sp]
bl AssignTopScreenHandlers
b _022E89DC
_022E8960:
ldr ip, _022E8BC0 ; =FreeDungeonControlsMenuWithBg
ldr r1, _022E8BC4 ; =InitDungeonControlsMenuWithBg
ldr r3, _022E8BC8 ; =ov29_022E854C
add r0, r4, #0x14
mov r2, #0
str ip, [sp]
bl AssignTopScreenHandlers
b _022E89DC
_022E8980:
ldr ip, _022E8BCC ; =ov29_022E80D0
ldr r1, _022E8BD0 ; =ov29_022E7F94
ldr r2, _022E8BD4 ; =ov29_022E8018
ldr r3, _022E8BD8 ; =ov29_022E8054
add r0, r4, #0x14
str ip, [sp]
bl AssignTopScreenHandlers
b _022E89DC
_022E89A0:
ldr ip, _022E8BDC ; =ov29_022E8630
ldr r1, _022E8BE0 ; =ov29_022E85A8
ldr r3, _022E8BE4 ; =ov29_022E85F4
add r0, r4, #0x14
mov r2, #0
str ip, [sp]
bl AssignTopScreenHandlers
b _022E89DC
_022E89C0:
ldr ip, _022E8BE8 ; =ov29_022E86A8
ldr r1, _022E8BEC ; =ov29_022E8650
ldr r2, _022E8BF0 ; =ov29_022E869C
ldr r3, _022E8BF4 ; =ov29_022E86A4
add r0, r4, #0x14
str ip, [sp]
bl AssignTopScreenHandlers
_022E89DC:
ldr r0, _022E8BA0 ; =TOP_SCREEN_STATUS_PTR
ldrsh r1, [r4, #0x10]
ldr r0, [r0]
strh r1, [r0, #8]
ldr r0, [r4, #0x14]
cmp r0, #0
beq _022E8A20
ldr r0, _022E8BF8 ; =ov29_0235352C
ldr r0, [r0]
ldr r0, [r0, #0x30]
bl sub_0200B3D4
ldr r0, _022E8BF8 ; =ov29_0235352C
ldr r0, [r0]
ldr r0, [r0, #0x30]
bl sub_0200B330
ldr r0, [r4, #0x14]
blx r0
_022E8A20:
mov r1, #0
ldr r0, _022E8BA0 ; =TOP_SCREEN_STATUS_PTR
str r1, [r5, #0xc]
ldr r2, [r0]
ldrb r1, [r2, #0x2c]
cmp r1, #0
movne r0, #3
strne r0, [r2, #4]
ldmneia sp!, {r3, r4, r5, pc}
mov r1, #5
str r1, [r2, #4]
ldr r0, [r0]
ldrb r0, [r0, #2]
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
mov r0, #1
mov r2, r0
mov r1, #0x4000
bl StartFadeDungeonWrapper
ldr r0, _022E8BA0 ; =TOP_SCREEN_STATUS_PTR
mov r1, #4
ldr r0, [r0]
str r1, [r0, #4]
ldmia sp!, {r3, r4, r5, pc}
_022E8A80:
ldrb r1, [r5, #0x2c]
cmp r1, #0
ldmneia sp!, {r3, r4, r5, pc}
mov r1, #5
str r1, [r5, #4]
ldr r0, [r0]
ldrb r0, [r0, #2]
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
mov r0, #1
mov r2, r0
mov r1, #0x4000
bl StartFadeDungeonWrapper
ldr r0, _022E8BA0 ; =TOP_SCREEN_STATUS_PTR
mov r1, #4
ldr r0, [r0]
str r1, [r0, #4]
ldmia sp!, {r3, r4, r5, pc}
_022E8AC8:
bl ov29_022E86E4
ldr r0, _022E8BA0 ; =TOP_SCREEN_STATUS_PTR
ldr r0, [r0]
ldrb r0, [r0, #2]
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
mov r0, #1
bl ov29_0234C70C
cmp r0, #0
ldreq r0, _022E8BA0 ; =TOP_SCREEN_STATUS_PTR
moveq r1, #5
ldreq r0, [r0]
streq r1, [r0, #4]
ldmia sp!, {r3, r4, r5, pc}
_022E8B00:
bl ov29_022E86E4
ldr r0, [r5, #0xc]
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
ldr r0, _022E8BA0 ; =TOP_SCREEN_STATUS_PTR
ldr r2, [r0]
ldrb r1, [r2, #1]
strb r1, [r2, #2]
ldr r1, [r0]
ldrb r0, [r1, #2]
cmp r0, #0
moveq r0, #6
streq r0, [r1, #4]
ldmeqia sp!, {r3, r4, r5, pc}
mov r0, #2
mov r1, #0x4000
mov r2, #1
bl StartFadeDungeonWrapper
ldr r0, _022E8BA0 ; =TOP_SCREEN_STATUS_PTR
mov r1, #6
ldr r0, [r0]
str r1, [r0, #4]
ldmia sp!, {r3, r4, r5, pc}
_022E8B5C:
ldrb r0, [r5, #2]
cmp r0, #0
beq _022E8B78
mov r0, #1
bl ov29_0234C70C
cmp r0, #0
ldmneia sp!, {r3, r4, r5, pc}
_022E8B78:
bl FreeTopScreen
ldr r0, _022E8BA0 ; =TOP_SCREEN_STATUS_PTR
ldr r1, [r0]
ldrb r0, [r1, #0x2b]
cmp r0, #0
movne r0, #1
strne r0, [r1, #4]
moveq r0, #2
streq r0, [r1, #4]
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_022E8BA0: .word TOP_SCREEN_STATUS_PTR
_022E8BA4: .word ov29_022E84B0
_022E8BA8: .word ov29_022E840C
_022E8BAC: .word ov29_022E847C
_022E8BB0: .word FreeTeamStatsWrapper
_022E8BB4: .word InitializeTeamStats
_022E8BB8: .word UpdateTeamStatsWrapper
_022E8BBC: .word ov29_022E81C8
_022E8BC0: .word FreeDungeonControlsMenuWithBg
_022E8BC4: .word InitDungeonControlsMenuWithBg
_022E8BC8: .word ov29_022E854C
_022E8BCC: .word ov29_022E80D0
_022E8BD0: .word ov29_022E7F94
_022E8BD4: .word ov29_022E8018
_022E8BD8: .word ov29_022E8054
_022E8BDC: .word ov29_022E8630
_022E8BE0: .word ov29_022E85A8
_022E8BE4: .word ov29_022E85F4
_022E8BE8: .word ov29_022E86A8
_022E8BEC: .word ov29_022E8650
_022E8BF0: .word ov29_022E869C
_022E8BF4: .word ov29_022E86A4
_022E8BF8: .word ov29_0235352C
arm_func_end HandleTopScreenFades
arm_func_start ov29_022E8BFC
ov29_022E8BFC: ; 0x022E8BFC
ldr r1, _022E8C0C ; =TOP_SCREEN_STATUS_PTR
ldr r1, [r1]
strb r0, [r1, #1]
bx lr
.align 2, 0
_022E8C0C: .word TOP_SCREEN_STATUS_PTR
arm_func_end ov29_022E8BFC
arm_func_start ov29_022E8C10
ov29_022E8C10: ; 0x022E8C10
stmdb sp!, {r3, lr}
ldr r0, _022E8C48 ; =TOP_SCREEN_STATUS_PTR
ldr r2, [r0]
cmp r2, #0
ldmeqia sp!, {r3, pc}
ldrb r0, [r2, #0x2a]
cmp r0, #0
ldmneia sp!, {r3, pc}
ldr r1, [r2, #0x1c]
cmp r1, #0
ldmeqia sp!, {r3, pc}
add r0, r2, #0x14
blx r1
ldmia sp!, {r3, pc}
.align 2, 0
_022E8C48: .word TOP_SCREEN_STATUS_PTR
arm_func_end ov29_022E8C10
arm_func_start FreeTopScreen
FreeTopScreen: ; 0x022E8C4C
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _022E8CA4 ; =TOP_SCREEN_STATUS_PTR
ldr r4, [r0]
ldr r0, [r4, #0x20]
cmp r0, #0
beq _022E8C98
mov r0, #0
str r0, [r4, #0x1c]
ldr r0, [r4, #0x20]
blx r0
movs r5, r0
beq _022E8C9C
mov r1, #0
mov r2, r1
mov r3, r1
add r0, r4, #0x14
str r1, [sp]
bl AssignTopScreenHandlers
b _022E8C9C
_022E8C98:
mov r5, #1
_022E8C9C:
mov r0, r5
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_022E8CA4: .word TOP_SCREEN_STATUS_PTR
arm_func_end FreeTopScreen
arm_func_start DungeonChangeTopScreenType
DungeonChangeTopScreenType: ; 0x022E8CA8
ldr r1, _022E8CE4 ; =TOP_SCREEN_STATUS_PTR
ldr r3, [r1]
ldrsh r2, [r3, #8]
cmp r2, r0
ldrne r2, [r3, #0xc]
cmpne r2, #1
bxeq lr
mov r2, #1
str r2, [r3, #0xc]
ldr r3, [r1]
mov r2, #0
strh r0, [r3, #0x10]
ldr r0, [r1]
strb r2, [r0, #0x28]
bx lr
.align 2, 0
_022E8CE4: .word TOP_SCREEN_STATUS_PTR
arm_func_end DungeonChangeTopScreenType
arm_func_start ov29_022E8CE8
ov29_022E8CE8: ; 0x022E8CE8
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x54
mov sb, #0
ldr fp, _022E8E54 ; =0x000003E7
mov r8, sb
_022E8CFC:
ldr r0, _022E8E58 ; =DUNGEON_PTR
ldr r1, [r0]
add r0, r1, r8, lsl #2
add r0, r0, #0x12000
#ifdef JAPAN
ldr r0, [r0, #0xa84]
#else
ldr r0, [r0, #0xb28]
#endif
cmp r0, #0
moveq r0, #0
beq _022E8D30
ldr r0, [r0]
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
_022E8D30:
cmp r0, #0
beq _022E8DE4
add r0, r1, r8, lsl #2
add r0, r0, #0x12000
#ifdef JAPAN
ldr r6, [r0, #0xa84]
#else
ldr r6, [r0, #0xb28]
#endif
ldr r0, _022E8E5C ; =TOP_SCREEN_STATUS_PTR
ldr r7, [r6, #0xb4]
ldr r0, [r0]
add r5, r0, #0xb8
mov r0, #0x5c
smulbb r4, sb, r0
#ifdef JAPAN
ldrb r0, [r7, #0x161]
#else
ldrb r0, [r7, #0x165]
#endif
cmp r0, #0
bne _022E8DE4
add r0, sp, #0x14
mov r1, r7
mov r2, #0
bl ov29_0230027C
ldrsh r1, [r7, #0x12]
ldrsh r0, [r7, #0x16]
add sl, r1, r0
cmp sl, fp
mov r0, r6
movgt sl, fp
bl GetIdleAnimationId
ldrb r3, [r7, #0xa]
mov r1, sl, lsl #0x10
mov r1, r1, asr #0x10
str r3, [sp]
ldrsh r3, [r7, #0x10]
add r2, sp, #0x14
str r3, [sp, #4]
str r1, [sp, #8]
ldrsh r1, [r6, #0xa8]
str r1, [sp, #0xc]
str r0, [sp, #0x10]
ldr r1, [r7, #0xb0]
ldrsh r3, [r7, #4]
mov r1, r1, lsl #0x10
add r0, r5, r4
mov r1, r1, asr #0x10
bl ov10_022C1DE0
add r0, sb, #1
mov r0, r0, lsl #0x10
mov sb, r0, asr #0x10
_022E8DE4:
add r0, r8, #1
mov r0, r0, lsl #0x10
mov r8, r0, asr #0x10
cmp r8, #4
blt _022E8CFC
mov r0, #0x5c
smulbb r4, sb, r0
mov r3, #0
ldr r1, _022E8E5C ; =TOP_SCREEN_STATUS_PTR
b _022E8E24
_022E8E0C:
ldr r2, [r1]
add r0, sb, #1
add r2, r4, r2
mov r0, r0, lsl #0x10
strb r3, [r2, #0xb8]
mov sb, r0, asr #0x10
_022E8E24:
cmp sb, #4
blt _022E8E0C
ldr r0, _022E8E5C ; =TOP_SCREEN_STATUS_PTR
ldr r0, [r0]
add r0, r0, #0xb8
bl ov29_022DC684
ldr r0, _022E8E5C ; =TOP_SCREEN_STATUS_PTR
mov r1, #1
ldr r0, [r0]
strb r1, [r0, #0x228]
add sp, sp, #0x54
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_022E8E54: .word 0x000003E7
_022E8E58: .word DUNGEON_PTR
_022E8E5C: .word TOP_SCREEN_STATUS_PTR
arm_func_end ov29_022E8CE8
arm_func_start DrawDungeonControlsText
DrawDungeonControlsText: ; 0x022E8E60
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, _022E8E90 ; =0x00003FCB
bl StringFromId
mov r1, #0
mov r3, r0
mov r0, r4
mov r2, r1
bl DrawTextInWindow
mov r0, r4
bl UpdateWindow
ldmia sp!, {r4, pc}
.align 2, 0
#if defined(EUROPE)
_022E8E90: .word 0x00003FCD
#elif defined(JAPAN)
_022E8E90: .word 0x000049CE
#else
_022E8E90: .word 0x00003FCB
#endif
arm_func_end DrawDungeonControlsText
arm_func_start InitDungeonControlsMenu
InitDungeonControlsMenu: ; 0x022E8E94
stmdb sp!, {r3, lr}
sub sp, sp, #0x10
ldr r0, _022E8F1C ; =DUNGEON_CONTROLS_MENU_PTR
ldr r0, [r0]
cmp r0, #0
movne r0, #0
bne _022E8F14
mov r0, #0x54
mov r1, #8
bl MemAlloc
ldr r2, _022E8F1C ; =DUNGEON_CONTROLS_MENU_PTR
mov r1, #0x54
str r0, [r2]
bl MemZero
ldr r0, _022E8F20 ; =DUNGEON_CONTROLS_MENU_WINDOW_PARAMS
add ip, sp, #0
ldmia r0, {r0, r1, r2, r3}
stmia ip, {r0, r1, r2, r3}
ldr r1, _022E8F24 ; =DrawDungeonControlsText
mov r0, ip
bl CreateTextBox
ldr r1, _022E8F1C ; =DUNGEON_CONTROLS_MENU_PTR
ldr r2, [r1]
strb r0, [r2]
ldr r0, [r1]
add r0, r0, #4
bl InitPreprocessorArgs
ldr r0, _022E8F1C ; =DUNGEON_CONTROLS_MENU_PTR
mov r2, #0x10000
ldr r1, [r0]
mov r0, #1
str r2, [r1, #0x50]
_022E8F14:
add sp, sp, #0x10
ldmia sp!, {r3, pc}
.align 2, 0
_022E8F1C: .word DUNGEON_CONTROLS_MENU_PTR
_022E8F20: .word DUNGEON_CONTROLS_MENU_WINDOW_PARAMS
_022E8F24: .word DrawDungeonControlsText
arm_func_end InitDungeonControlsMenu
arm_func_start FreeDungeonControlsMenu
FreeDungeonControlsMenu: ; 0x022E8F28
stmdb sp!, {r3, lr}
ldr r0, _022E8F74 ; =DUNGEON_CONTROLS_MENU_PTR
ldr r0, [r0]
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r3, pc}
ldrsb r0, [r0]
bl CloseTextBox2
ldr r0, _022E8F74 ; =DUNGEON_CONTROLS_MENU_PTR
mvn r2, #1
ldr r1, [r0]
strb r2, [r1]
ldr r0, [r0]
bl MemFree
ldr r0, _022E8F74 ; =DUNGEON_CONTROLS_MENU_PTR
mov r1, #0
str r1, [r0]
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_022E8F74: .word DUNGEON_CONTROLS_MENU_PTR
arm_func_end FreeDungeonControlsMenu
arm_func_start ov29_022E8F78
ov29_022E8F78: ; 0x022E8F78
stmdb sp!, {r4, lr}
ldrb r1, [r0]
cmp r1, #0
ldmeqia sp!, {r4, pc}
mov r1, #0
strb r1, [r0]
ldr r1, _022E8FC4 ; =DUNGEON_CONTROLS_MENU_PTR
ldr r0, _022E8FC8 ; =0x00003FCB
ldr r1, [r1]
ldrsb r4, [r1]
bl StringFromId
mov r1, #0
mov r3, r0
mov r0, r4
mov r2, r1
bl DrawTextInWindow
mov r0, r4
bl UpdateWindow
ldmia sp!, {r4, pc}
.align 2, 0
_022E8FC4: .word DUNGEON_CONTROLS_MENU_PTR
#if defined(EUROPE)
_022E8FC8: .word 0x00003FCD
#elif defined(JAPAN)
_022E8FC8: .word 0x000049CE
#else
_022E8FC8: .word 0x00003FCB
#endif
arm_func_end ov29_022E8F78
arm_func_start ov29_022E8FCC
ov29_022E8FCC: ; 0x022E8FCC
stmdb sp!, {r3, lr}
ldr r0, _022E8FF4 ; =DUNGEON_PTR
ldr r1, [r0]
add r0, r1, #0x700
ldrsb r0, [r0, #0x98]
ldrb r1, [r1, #0x748]
bl ov29_0234F25C
bl ov29_0234F278
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_022E8FF4: .word DUNGEON_PTR
arm_func_end ov29_022E8FCC
arm_func_start ov29_022E8FF8
ov29_022E8FF8: ; 0x022E8FF8
stmdb sp!, {r3, lr}
bl ov29_0234F2B8
mov r0, #1
ldmia sp!, {r3, pc}
arm_func_end ov29_022E8FF8
arm_func_start ov29_022E9008
ov29_022E9008: ; 0x022E9008
ldr ip, _022E9010 ; =ov29_0234F290
bx ip
.align 2, 0
_022E9010: .word ov29_0234F290
arm_func_end ov29_022E9008
arm_func_start ov29_022E9014
ov29_022E9014: ; 0x022E9014
ldrb r0, [r0]
cmp r0, #0
bx lr
arm_func_end ov29_022E9014

795
asm/overlay_29_022E86A4.s Normal file
View File

@@ -0,0 +1,795 @@
.include "asm/macros.inc"
.include "overlay_29_022E86A4.inc"
.text
arm_func_start ov29_022E86A4
ov29_022E86A4: ; 0x022E86A4
bx lr
arm_func_end ov29_022E86A4
arm_func_start ov29_022E86A8
ov29_022E86A8: ; 0x022E86A8
stmdb sp!, {r3, lr}
ldr r0, _022E86C4 ; =TOP_SCREEN_STATUS_PTR
ldr r0, [r0]
add r0, r0, #0x80
bl ov10_022C2278
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_022E86C4: .word TOP_SCREEN_STATUS_PTR
arm_func_end ov29_022E86A8
arm_func_start AssignTopScreenHandlers
AssignTopScreenHandlers: ; 0x022E86C8
str r1, [r0]
ldr r1, [sp]
stmib r0, {r2, r3}
str r1, [r0, #0xc]
mov r1, #1
strb r1, [r0, #0x10]
bx lr
arm_func_end AssignTopScreenHandlers
arm_func_start ov29_022E86E4
ov29_022E86E4: ; 0x022E86E4
stmdb sp!, {r3, lr}
ldr r0, _022E8704 ; =TOP_SCREEN_STATUS_PTR
ldr r0, [r0]
ldr r0, [r0, #0x18]
cmp r0, #0
ldmeqia sp!, {r3, pc}
blx r0
ldmia sp!, {r3, pc}
.align 2, 0
_022E8704: .word TOP_SCREEN_STATUS_PTR
arm_func_end ov29_022E86E4
arm_func_start ov29_022E8708
ov29_022E8708: ; 0x022E8708
stmdb sp!, {r3, lr}
bl GetTopScreenOption
cmp r0, #3
bne _022E8724
mov r0, #3
bl DungeonChangeTopScreenType
ldmia sp!, {r3, pc}
_022E8724:
cmp r0, #2
bne _022E8738
mov r0, #0
bl DungeonChangeTopScreenType
ldmia sp!, {r3, pc}
_022E8738:
cmp r0, #0
bne _022E874C
mov r0, #2
bl DungeonChangeTopScreenType
ldmia sp!, {r3, pc}
_022E874C:
cmp r0, #4
bne _022E8760
mov r0, #4
bl DungeonChangeTopScreenType
ldmia sp!, {r3, pc}
_022E8760:
bl ov29_022E81F8
ldmia sp!, {r3, pc}
arm_func_end ov29_022E8708
arm_func_start ov29_022E8768
ov29_022E8768: ; 0x022E8768
ldr ip, _022E8774 ; =DungeonChangeTopScreenType
mov r0, #5
bx ip
.align 2, 0
_022E8774: .word DungeonChangeTopScreenType
arm_func_end ov29_022E8768
arm_func_start ov29_022E8778
ov29_022E8778: ; 0x022E8778
stmdb sp!, {r3, lr}
ldr r0, _022E87B0 ; =TOP_SCREEN_STATUS_PTR
mov r3, #3
ldr r2, [r0]
sub r1, r3, #4
str r3, [r2, #0xc]
ldr r0, [r0]
strh r1, [r0, #0x10]
bl ov29_022E8104
ldr r0, _022E87B0 ; =TOP_SCREEN_STATUS_PTR
ldr r1, [r0]
ldrsh r0, [r1, #0x10]
strh r0, [r1, #8]
ldmia sp!, {r3, pc}
.align 2, 0
_022E87B0: .word TOP_SCREEN_STATUS_PTR
arm_func_end ov29_022E8778
arm_func_start ov29_022E87B4
ov29_022E87B4: ; 0x022E87B4
ldr r1, _022E87D8 ; =TOP_SCREEN_STATUS_PTR
ldr r2, [r1]
ldrsh r1, [r2, #8]
cmp r1, r0
ldreq r0, [r2, #4]
cmpeq r0, #5
moveq r0, #1
movne r0, #0
bx lr
.align 2, 0
_022E87D8: .word TOP_SCREEN_STATUS_PTR
arm_func_end ov29_022E87B4
arm_func_start ov29_022E87DC
ov29_022E87DC: ; 0x022E87DC
stmdb sp!, {r3, lr}
bl GetTopScreenOption
ldr r1, _022E87F8 ; =ov29_023515E8
mov r0, r0, lsl #1
ldrsh r0, [r1, r0]
bl ov29_022E87B4
ldmia sp!, {r3, pc}
.align 2, 0
_022E87F8: .word ov29_023515E8
arm_func_end ov29_022E87DC
arm_func_start ov29_022E87FC
ov29_022E87FC: ; 0x022E87FC
ldr r1, _022E880C ; =TOP_SCREEN_STATUS_PTR
ldr r1, [r1]
strb r0, [r1, #0x2b]
bx lr
.align 2, 0
_022E880C: .word TOP_SCREEN_STATUS_PTR
arm_func_end ov29_022E87FC
arm_func_start ov29_022E8810
ov29_022E8810: ; 0x022E8810
ldr r0, _022E8830 ; =TOP_SCREEN_STATUS_PTR
ldr r0, [r0]
ldr r0, [r0, #4]
cmp r0, #1
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_022E8830: .word TOP_SCREEN_STATUS_PTR
arm_func_end ov29_022E8810
arm_func_start ov29_022E8834
ov29_022E8834: ; 0x022E8834
ldr r1, _022E8844 ; =TOP_SCREEN_STATUS_PTR
ldr r1, [r1]
strb r0, [r1, #0x2c]
bx lr
.align 2, 0
_022E8844: .word TOP_SCREEN_STATUS_PTR
arm_func_end ov29_022E8834
arm_func_start ov29_022E8848
ov29_022E8848: ; 0x022E8848
ldr r0, _022E8868 ; =TOP_SCREEN_STATUS_PTR
ldr r0, [r0]
ldr r0, [r0, #4]
cmp r0, #3
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_022E8868: .word TOP_SCREEN_STATUS_PTR
arm_func_end ov29_022E8848
arm_func_start HandleTopScreenFades
HandleTopScreenFades: ; 0x022E886C
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _022E8BA0 ; =TOP_SCREEN_STATUS_PTR
ldr r5, [r0]
cmp r5, #0
ldmeqia sp!, {r3, r4, r5, pc}
ldr r1, [r5, #4]
cmp r1, #6
addls pc, pc, r1, lsl #2
ldmia sp!, {r3, r4, r5, pc}
_022E8890: ; jump table
ldmia sp!, {r3, r4, r5, pc} ; case 0
b _022E88AC ; case 1
b _022E88C0 ; case 2
b _022E8A80 ; case 3
b _022E8AC8 ; case 4
b _022E8B00 ; case 5
b _022E8B5C ; case 6
_022E88AC:
ldrb r0, [r5, #0x2b]
cmp r0, #0
moveq r0, #2
streq r0, [r5, #4]
ldmia sp!, {r3, r4, r5, pc}
_022E88C0:
ldrb r0, [r5, #2]
cmp r0, #0
beq _022E88EC
mov r0, #1
bl ov29_0234C70C
cmp r0, #0
ldmneia sp!, {r3, r4, r5, pc}
ldr r0, _022E8BA0 ; =TOP_SCREEN_STATUS_PTR
mov r1, #5
ldr r0, [r0]
str r1, [r0, #4]
_022E88EC:
bl FreeTopScreen
ldr r0, _022E8BA0 ; =TOP_SCREEN_STATUS_PTR
ldr r4, [r0]
ldrsh r0, [r4, #0x10]
cmp r0, #5
addls pc, pc, r0, lsl #2
b _022E89DC
_022E8908: ; jump table
b _022E8920 ; case 0
b _022E8940 ; case 1
b _022E8960 ; case 2
b _022E8980 ; case 3
b _022E89A0 ; case 4
b _022E89C0 ; case 5
_022E8920:
ldr ip, _022E8BA4 ; =ov29_022E84B0
ldr r1, _022E8BA8 ; =ov29_022E840C
ldr r3, _022E8BAC ; =ov29_022E847C
add r0, r4, #0x14
mov r2, #0
str ip, [sp]
bl AssignTopScreenHandlers
b _022E89DC
_022E8940:
ldr ip, _022E8BB0 ; =FreeTeamStatsWrapper
ldr r1, _022E8BB4 ; =InitializeTeamStats
ldr r2, _022E8BB8 ; =UpdateTeamStatsWrapper
ldr r3, _022E8BBC ; =ov29_022E81C8
add r0, r4, #0x14
str ip, [sp]
bl AssignTopScreenHandlers
b _022E89DC
_022E8960:
ldr ip, _022E8BC0 ; =FreeDungeonControlsMenuWithBg
ldr r1, _022E8BC4 ; =InitDungeonControlsMenuWithBg
ldr r3, _022E8BC8 ; =ov29_022E854C
add r0, r4, #0x14
mov r2, #0
str ip, [sp]
bl AssignTopScreenHandlers
b _022E89DC
_022E8980:
ldr ip, _022E8BCC ; =ov29_022E80D0
ldr r1, _022E8BD0 ; =ov29_022E7F94
ldr r2, _022E8BD4 ; =ov29_022E8018
ldr r3, _022E8BD8 ; =ov29_022E8054
add r0, r4, #0x14
str ip, [sp]
bl AssignTopScreenHandlers
b _022E89DC
_022E89A0:
ldr ip, _022E8BDC ; =ov29_022E8630
ldr r1, _022E8BE0 ; =ov29_022E85A8
ldr r3, _022E8BE4 ; =ov29_022E85F4
add r0, r4, #0x14
mov r2, #0
str ip, [sp]
bl AssignTopScreenHandlers
b _022E89DC
_022E89C0:
ldr ip, _022E8BE8 ; =ov29_022E86A8
ldr r1, _022E8BEC ; =ov29_022E8650
ldr r2, _022E8BF0 ; =ov29_022E869C
ldr r3, _022E8BF4 ; =ov29_022E86A4
add r0, r4, #0x14
str ip, [sp]
bl AssignTopScreenHandlers
_022E89DC:
ldr r0, _022E8BA0 ; =TOP_SCREEN_STATUS_PTR
ldrsh r1, [r4, #0x10]
ldr r0, [r0]
strh r1, [r0, #8]
ldr r0, [r4, #0x14]
cmp r0, #0
beq _022E8A20
ldr r0, _022E8BF8 ; =ov29_0235352C
ldr r0, [r0]
ldr r0, [r0, #0x30]
bl sub_0200B3D4
ldr r0, _022E8BF8 ; =ov29_0235352C
ldr r0, [r0]
ldr r0, [r0, #0x30]
bl sub_0200B330
ldr r0, [r4, #0x14]
blx r0
_022E8A20:
mov r1, #0
ldr r0, _022E8BA0 ; =TOP_SCREEN_STATUS_PTR
str r1, [r5, #0xc]
ldr r2, [r0]
ldrb r1, [r2, #0x2c]
cmp r1, #0
movne r0, #3
strne r0, [r2, #4]
ldmneia sp!, {r3, r4, r5, pc}
mov r1, #5
str r1, [r2, #4]
ldr r0, [r0]
ldrb r0, [r0, #2]
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
mov r0, #1
mov r2, r0
mov r1, #0x4000
bl StartFadeDungeonWrapper
ldr r0, _022E8BA0 ; =TOP_SCREEN_STATUS_PTR
mov r1, #4
ldr r0, [r0]
str r1, [r0, #4]
ldmia sp!, {r3, r4, r5, pc}
_022E8A80:
ldrb r1, [r5, #0x2c]
cmp r1, #0
ldmneia sp!, {r3, r4, r5, pc}
mov r1, #5
str r1, [r5, #4]
ldr r0, [r0]
ldrb r0, [r0, #2]
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
mov r0, #1
mov r2, r0
mov r1, #0x4000
bl StartFadeDungeonWrapper
ldr r0, _022E8BA0 ; =TOP_SCREEN_STATUS_PTR
mov r1, #4
ldr r0, [r0]
str r1, [r0, #4]
ldmia sp!, {r3, r4, r5, pc}
_022E8AC8:
bl ov29_022E86E4
ldr r0, _022E8BA0 ; =TOP_SCREEN_STATUS_PTR
ldr r0, [r0]
ldrb r0, [r0, #2]
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
mov r0, #1
bl ov29_0234C70C
cmp r0, #0
ldreq r0, _022E8BA0 ; =TOP_SCREEN_STATUS_PTR
moveq r1, #5
ldreq r0, [r0]
streq r1, [r0, #4]
ldmia sp!, {r3, r4, r5, pc}
_022E8B00:
bl ov29_022E86E4
ldr r0, [r5, #0xc]
cmp r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
ldr r0, _022E8BA0 ; =TOP_SCREEN_STATUS_PTR
ldr r2, [r0]
ldrb r1, [r2, #1]
strb r1, [r2, #2]
ldr r1, [r0]
ldrb r0, [r1, #2]
cmp r0, #0
moveq r0, #6
streq r0, [r1, #4]
ldmeqia sp!, {r3, r4, r5, pc}
mov r0, #2
mov r1, #0x4000
mov r2, #1
bl StartFadeDungeonWrapper
ldr r0, _022E8BA0 ; =TOP_SCREEN_STATUS_PTR
mov r1, #6
ldr r0, [r0]
str r1, [r0, #4]
ldmia sp!, {r3, r4, r5, pc}
_022E8B5C:
ldrb r0, [r5, #2]
cmp r0, #0
beq _022E8B78
mov r0, #1
bl ov29_0234C70C
cmp r0, #0
ldmneia sp!, {r3, r4, r5, pc}
_022E8B78:
bl FreeTopScreen
ldr r0, _022E8BA0 ; =TOP_SCREEN_STATUS_PTR
ldr r1, [r0]
ldrb r0, [r1, #0x2b]
cmp r0, #0
movne r0, #1
strne r0, [r1, #4]
moveq r0, #2
streq r0, [r1, #4]
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_022E8BA0: .word TOP_SCREEN_STATUS_PTR
_022E8BA4: .word ov29_022E84B0
_022E8BA8: .word ov29_022E840C
_022E8BAC: .word ov29_022E847C
_022E8BB0: .word FreeTeamStatsWrapper
_022E8BB4: .word InitializeTeamStats
_022E8BB8: .word UpdateTeamStatsWrapper
_022E8BBC: .word ov29_022E81C8
_022E8BC0: .word FreeDungeonControlsMenuWithBg
_022E8BC4: .word InitDungeonControlsMenuWithBg
_022E8BC8: .word ov29_022E854C
_022E8BCC: .word ov29_022E80D0
_022E8BD0: .word ov29_022E7F94
_022E8BD4: .word ov29_022E8018
_022E8BD8: .word ov29_022E8054
_022E8BDC: .word ov29_022E8630
_022E8BE0: .word ov29_022E85A8
_022E8BE4: .word ov29_022E85F4
_022E8BE8: .word ov29_022E86A8
_022E8BEC: .word ov29_022E8650
_022E8BF0: .word ov29_022E869C
_022E8BF4: .word ov29_022E86A4
_022E8BF8: .word ov29_0235352C
arm_func_end HandleTopScreenFades
arm_func_start ov29_022E8BFC
ov29_022E8BFC: ; 0x022E8BFC
ldr r1, _022E8C0C ; =TOP_SCREEN_STATUS_PTR
ldr r1, [r1]
strb r0, [r1, #1]
bx lr
.align 2, 0
_022E8C0C: .word TOP_SCREEN_STATUS_PTR
arm_func_end ov29_022E8BFC
arm_func_start ov29_022E8C10
ov29_022E8C10: ; 0x022E8C10
stmdb sp!, {r3, lr}
ldr r0, _022E8C48 ; =TOP_SCREEN_STATUS_PTR
ldr r2, [r0]
cmp r2, #0
ldmeqia sp!, {r3, pc}
ldrb r0, [r2, #0x2a]
cmp r0, #0
ldmneia sp!, {r3, pc}
ldr r1, [r2, #0x1c]
cmp r1, #0
ldmeqia sp!, {r3, pc}
add r0, r2, #0x14
blx r1
ldmia sp!, {r3, pc}
.align 2, 0
_022E8C48: .word TOP_SCREEN_STATUS_PTR
arm_func_end ov29_022E8C10
arm_func_start FreeTopScreen
FreeTopScreen: ; 0x022E8C4C
stmdb sp!, {r3, r4, r5, lr}
ldr r0, _022E8CA4 ; =TOP_SCREEN_STATUS_PTR
ldr r4, [r0]
ldr r0, [r4, #0x20]
cmp r0, #0
beq _022E8C98
mov r0, #0
str r0, [r4, #0x1c]
ldr r0, [r4, #0x20]
blx r0
movs r5, r0
beq _022E8C9C
mov r1, #0
mov r2, r1
mov r3, r1
add r0, r4, #0x14
str r1, [sp]
bl AssignTopScreenHandlers
b _022E8C9C
_022E8C98:
mov r5, #1
_022E8C9C:
mov r0, r5
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_022E8CA4: .word TOP_SCREEN_STATUS_PTR
arm_func_end FreeTopScreen
arm_func_start DungeonChangeTopScreenType
DungeonChangeTopScreenType: ; 0x022E8CA8
ldr r1, _022E8CE4 ; =TOP_SCREEN_STATUS_PTR
ldr r3, [r1]
ldrsh r2, [r3, #8]
cmp r2, r0
ldrne r2, [r3, #0xc]
cmpne r2, #1
bxeq lr
mov r2, #1
str r2, [r3, #0xc]
ldr r3, [r1]
mov r2, #0
strh r0, [r3, #0x10]
ldr r0, [r1]
strb r2, [r0, #0x28]
bx lr
.align 2, 0
_022E8CE4: .word TOP_SCREEN_STATUS_PTR
arm_func_end DungeonChangeTopScreenType
arm_func_start ov29_022E8CE8
ov29_022E8CE8: ; 0x022E8CE8
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x54
mov sb, #0
ldr fp, _022E8E54 ; =0x000003E7
mov r8, sb
_022E8CFC:
ldr r0, _022E8E58 ; =DUNGEON_PTR
ldr r1, [r0]
add r0, r1, r8, lsl #2
add r0, r0, #0x12000
#ifdef JAPAN
ldr r0, [r0, #0xa84]
#else
ldr r0, [r0, #0xb28]
#endif
cmp r0, #0
moveq r0, #0
beq _022E8D30
ldr r0, [r0]
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
_022E8D30:
cmp r0, #0
beq _022E8DE4
add r0, r1, r8, lsl #2
add r0, r0, #0x12000
#ifdef JAPAN
ldr r6, [r0, #0xa84]
#else
ldr r6, [r0, #0xb28]
#endif
ldr r0, _022E8E5C ; =TOP_SCREEN_STATUS_PTR
ldr r7, [r6, #0xb4]
ldr r0, [r0]
add r5, r0, #0xb8
mov r0, #0x5c
smulbb r4, sb, r0
#ifdef JAPAN
ldrb r0, [r7, #0x161]
#else
ldrb r0, [r7, #0x165]
#endif
cmp r0, #0
bne _022E8DE4
add r0, sp, #0x14
mov r1, r7
mov r2, #0
bl ov29_0230027C
ldrsh r1, [r7, #0x12]
ldrsh r0, [r7, #0x16]
add sl, r1, r0
cmp sl, fp
mov r0, r6
movgt sl, fp
bl GetIdleAnimationId
ldrb r3, [r7, #0xa]
mov r1, sl, lsl #0x10
mov r1, r1, asr #0x10
str r3, [sp]
ldrsh r3, [r7, #0x10]
add r2, sp, #0x14
str r3, [sp, #4]
str r1, [sp, #8]
ldrsh r1, [r6, #0xa8]
str r1, [sp, #0xc]
str r0, [sp, #0x10]
ldr r1, [r7, #0xb0]
ldrsh r3, [r7, #4]
mov r1, r1, lsl #0x10
add r0, r5, r4
mov r1, r1, asr #0x10
bl ov10_022C1DE0
add r0, sb, #1
mov r0, r0, lsl #0x10
mov sb, r0, asr #0x10
_022E8DE4:
add r0, r8, #1
mov r0, r0, lsl #0x10
mov r8, r0, asr #0x10
cmp r8, #4
blt _022E8CFC
mov r0, #0x5c
smulbb r4, sb, r0
mov r3, #0
ldr r1, _022E8E5C ; =TOP_SCREEN_STATUS_PTR
b _022E8E24
_022E8E0C:
ldr r2, [r1]
add r0, sb, #1
add r2, r4, r2
mov r0, r0, lsl #0x10
strb r3, [r2, #0xb8]
mov sb, r0, asr #0x10
_022E8E24:
cmp sb, #4
blt _022E8E0C
ldr r0, _022E8E5C ; =TOP_SCREEN_STATUS_PTR
ldr r0, [r0]
add r0, r0, #0xb8
bl ov29_022DC684
ldr r0, _022E8E5C ; =TOP_SCREEN_STATUS_PTR
mov r1, #1
ldr r0, [r0]
strb r1, [r0, #0x228]
add sp, sp, #0x54
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_022E8E54: .word 0x000003E7
_022E8E58: .word DUNGEON_PTR
_022E8E5C: .word TOP_SCREEN_STATUS_PTR
arm_func_end ov29_022E8CE8
arm_func_start DrawDungeonControlsText
DrawDungeonControlsText: ; 0x022E8E60
stmdb sp!, {r4, lr}
mov r4, r0
ldr r0, _022E8E90 ; =0x00003FCB
bl StringFromId
mov r1, #0
mov r3, r0
mov r0, r4
mov r2, r1
bl DrawTextInWindow
mov r0, r4
bl UpdateWindow
ldmia sp!, {r4, pc}
.align 2, 0
#if defined(EUROPE)
_022E8E90: .word 0x00003FCD
#elif defined(JAPAN)
_022E8E90: .word 0x000049CE
#else
_022E8E90: .word 0x00003FCB
#endif
arm_func_end DrawDungeonControlsText
arm_func_start InitDungeonControlsMenu
InitDungeonControlsMenu: ; 0x022E8E94
stmdb sp!, {r3, lr}
sub sp, sp, #0x10
ldr r0, _022E8F1C ; =DUNGEON_CONTROLS_MENU_PTR
ldr r0, [r0]
cmp r0, #0
movne r0, #0
bne _022E8F14
mov r0, #0x54
mov r1, #8
bl MemAlloc
ldr r2, _022E8F1C ; =DUNGEON_CONTROLS_MENU_PTR
mov r1, #0x54
str r0, [r2]
bl MemZero
ldr r0, _022E8F20 ; =DUNGEON_CONTROLS_MENU_WINDOW_PARAMS
add ip, sp, #0
ldmia r0, {r0, r1, r2, r3}
stmia ip, {r0, r1, r2, r3}
ldr r1, _022E8F24 ; =DrawDungeonControlsText
mov r0, ip
bl CreateTextBox
ldr r1, _022E8F1C ; =DUNGEON_CONTROLS_MENU_PTR
ldr r2, [r1]
strb r0, [r2]
ldr r0, [r1]
add r0, r0, #4
bl InitPreprocessorArgs
ldr r0, _022E8F1C ; =DUNGEON_CONTROLS_MENU_PTR
mov r2, #0x10000
ldr r1, [r0]
mov r0, #1
str r2, [r1, #0x50]
_022E8F14:
add sp, sp, #0x10
ldmia sp!, {r3, pc}
.align 2, 0
_022E8F1C: .word DUNGEON_CONTROLS_MENU_PTR
_022E8F20: .word DUNGEON_CONTROLS_MENU_WINDOW_PARAMS
_022E8F24: .word DrawDungeonControlsText
arm_func_end InitDungeonControlsMenu
arm_func_start FreeDungeonControlsMenu
FreeDungeonControlsMenu: ; 0x022E8F28
stmdb sp!, {r3, lr}
ldr r0, _022E8F74 ; =DUNGEON_CONTROLS_MENU_PTR
ldr r0, [r0]
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r3, pc}
ldrsb r0, [r0]
bl CloseTextBox2
ldr r0, _022E8F74 ; =DUNGEON_CONTROLS_MENU_PTR
mvn r2, #1
ldr r1, [r0]
strb r2, [r1]
ldr r0, [r0]
bl MemFree
ldr r0, _022E8F74 ; =DUNGEON_CONTROLS_MENU_PTR
mov r1, #0
str r1, [r0]
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_022E8F74: .word DUNGEON_CONTROLS_MENU_PTR
arm_func_end FreeDungeonControlsMenu
arm_func_start ov29_022E8F78
ov29_022E8F78: ; 0x022E8F78
stmdb sp!, {r4, lr}
ldrb r1, [r0]
cmp r1, #0
ldmeqia sp!, {r4, pc}
mov r1, #0
strb r1, [r0]
ldr r1, _022E8FC4 ; =DUNGEON_CONTROLS_MENU_PTR
ldr r0, _022E8FC8 ; =0x00003FCB
ldr r1, [r1]
ldrsb r4, [r1]
bl StringFromId
mov r1, #0
mov r3, r0
mov r0, r4
mov r2, r1
bl DrawTextInWindow
mov r0, r4
bl UpdateWindow
ldmia sp!, {r4, pc}
.align 2, 0
_022E8FC4: .word DUNGEON_CONTROLS_MENU_PTR
#if defined(EUROPE)
_022E8FC8: .word 0x00003FCD
#elif defined(JAPAN)
_022E8FC8: .word 0x000049CE
#else
_022E8FC8: .word 0x00003FCB
#endif
arm_func_end ov29_022E8F78
arm_func_start ov29_022E8FCC
ov29_022E8FCC: ; 0x022E8FCC
stmdb sp!, {r3, lr}
ldr r0, _022E8FF4 ; =DUNGEON_PTR
ldr r1, [r0]
add r0, r1, #0x700
ldrsb r0, [r0, #0x98]
ldrb r1, [r1, #0x748]
bl ov29_0234F25C
bl ov29_0234F278
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_022E8FF4: .word DUNGEON_PTR
arm_func_end ov29_022E8FCC
arm_func_start ov29_022E8FF8
ov29_022E8FF8: ; 0x022E8FF8
stmdb sp!, {r3, lr}
bl ov29_0234F2B8
mov r0, #1
ldmia sp!, {r3, pc}
arm_func_end ov29_022E8FF8
arm_func_start ov29_022E9008
ov29_022E9008: ; 0x022E9008
ldr ip, _022E9010 ; =ov29_0234F290
bx ip
.align 2, 0
_022E9010: .word ov29_0234F290
arm_func_end ov29_022E9008
arm_func_start ov29_022E9014
ov29_022E9014: ; 0x022E9014
ldrb r0, [r0]
cmp r0, #0
bx lr
arm_func_end ov29_022E9014

View File

@@ -10,534 +10,3 @@ ov29_022F52B0: ; 0x022F52B0
.align 2, 0
_022F52B8: .word ov29_02343D30
arm_func_end ov29_022F52B0
arm_func_start UseSingleUseItemSelf
UseSingleUseItemSelf: ; 0x022F52BC
ldr ip, _022F52C8 ; =UseSingleUseItem
mov r1, r0
bx ip
.align 2, 0
_022F52C8: .word UseSingleUseItem
arm_func_end UseSingleUseItemSelf
arm_func_start UseSingleUseItemWrapper
UseSingleUseItemWrapper: ; 0x022F52CC
ldr r2, [r0, #0xb4]
ldr r1, _022F52F0 ; =DUNGEON_PTR
ldrb r2, [r2, #0x54]
ldr r1, [r1]
ldr ip, _022F52F4 ; =UseSingleUseItem
add r1, r1, r2, lsl #2
add r1, r1, #0x12000
#ifdef JAPAN
ldr r1, [r1, #0xa84]
#else
ldr r1, [r1, #0xb28]
#endif
bx ip
.align 2, 0
_022F52F0: .word DUNGEON_PTR
_022F52F4: .word UseSingleUseItem
arm_func_end UseSingleUseItemWrapper
arm_func_start UseSingleUseItem
UseSingleUseItem: ; 0x022F52F8
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x10
mov r8, r1
mov sb, r0
mov r0, r8
ldr r5, [r8, #0xb4]
bl MonsterHasEmbargoStatus
cmp r0, #0
beq _022F5334
mov r0, r8
bl LogItemBlockedByEmbargo
mov r0, #0x14
mov r1, #9
bl ov29_022EA370
b _022F54B0
_022F5334:
mov r0, sb
bl ov29_022F3B8C
mov r0, sb
mov r1, #0
mov r2, #8
bl GetItemToUse
mov r4, r0
mov r1, r4
mov r0, #0
bl PrepareItemForPrinting__02345728
bl GetMessageLogPreprocessorArgs
mov r2, r5
mov r1, #0
str r1, [sp]
mov r3, r1
bl SetPreprocessorArgsStringToName
mov r0, r8
mov r1, r4
bl CanMonsterUseItem
cmp r0, #0
beq _022F54B0
mov r0, r4
bl ov29_022EB378
mov r1, r0
mov r0, r8
bl LogMessageByIdWithPopupCheckUser
ldrh r2, [r4]
mov r0, sb
mov r1, #0
strh r2, [sp, #8]
ldrh r3, [r4, #2]
mov r2, #0x66
strh r3, [sp, #0xa]
ldrh r3, [r4, #4]
strh r3, [sp, #0xc]
bl RemoveUsedItem
mov r0, #0x1e
mov r1, #0x11
bl ov29_022EA370
mov r0, #0
str r8, [sp]
add r1, sp, #8
str r1, [sp, #4]
mov r1, r0
mov r2, r0
mov r3, r8
bl ApplyItemEffect
mov r0, r8
bl EntityIsValid__022F528C
cmp r0, #0
ldrne r0, [r8, #0xb4]
ldrneb r0, [r0, #7]
cmpne r0, #0
beq _022F5498
mov r0, r8
mov r1, #0x33
bl IqSkillIsEnabled
cmp r0, #0
beq _022F5498
ldrsh r0, [sp, #0xc]
bl ov29_02347000
cmp r0, #0
beq _022F5498
mov r7, #0
ldr r4, _022F54B8 ; =DUNGEON_PTR
add r6, sp, #8
mov r5, r7
_022F5440:
ldr r0, [r4]
add r0, r0, r7, lsl #2
add r0, r0, #0x12000
#ifdef JAPAN
ldr sl, [r0, #0xa84]
#else
ldr sl, [r0, #0xb28]
#endif
cmp sl, r8
beq _022F5484
mov r0, sl
bl EntityIsValid__022F528C
cmp r0, #0
beq _022F5484
str sl, [sp]
mov r0, r5
mov r1, r5
mov r2, r5
mov r3, r8
str r6, [sp, #4]
bl ApplyItemEffect
_022F5484:
add r0, r7, #1
mov r0, r0, lsl #0x10
mov r7, r0, asr #0x10
cmp r7, #4
blt _022F5440
_022F5498:
ldr r1, _022F54B8 ; =DUNGEON_PTR
mov r0, sb
ldr r1, [r1]
add r1, r1, #0x4000
#ifdef JAPAN
ldrb r1, [r1, #0x20]
#else
ldrb r1, [r1, #0xc4]
#endif
bl TryTriggerMonsterHouse
_022F54B0:
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_022F54B8: .word DUNGEON_PTR
arm_func_end UseSingleUseItem
arm_func_start UseThrowableItem
UseThrowableItem: ; 0x022F54BC
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x14
mov sb, r0
ldr r8, [sb, #0xb4]
bl ov29_022F3B8C
mov r0, sb
mov r1, #0
mov r2, #9
bl GetItemToUse
mov r4, r0
mov r0, sb
bl MonsterHasEmbargoStatus
cmp r0, #0
beq _022F550C
mov r0, sb
bl LogItemBlockedByEmbargo
mov r0, #0x14
mov r1, #9
bl ov29_022EA370
b _022F5978
_022F550C:
ldrb r0, [r8, #0x4e]
cmp r0, #0x81
bne _022F5558
ldrb r0, [r4]
tst r0, #8
movne r0, #1
moveq r0, #0
tst r0, #0xff
beq _022F5558
mov r1, r4
mov r0, #0
bl PrepareItemForPrinting__02345728
ldr r1, _022F5980 ; =0x00000BAE
mov r0, sb
bl LogMessageByIdWithPopupCheckUser
mov r0, #0x14
mov r1, #0x4c
bl ov29_022EA370
b _022F5978
_022F5558:
ldrsh r0, [r4, #4]
bl GetItemCategoryVeneer
cmp r0, #0
beq _022F5578
ldrsh r0, [r4, #4]
bl GetItemCategoryVeneer
cmp r0, #1
bne _022F55B8
_022F5578:
ldrb r0, [r4]
tst r0, #8
movne r0, #1
moveq r0, #0
tst r0, #0xff
beq _022F55B8
mov r1, r4
mov r0, #0
bl PrepareItemForPrinting__02345728
ldr r1, _022F5980 ; =0x00000BAE
mov r0, sb
bl LogMessageByIdWithPopupCheckUser
mov r0, #0x14
mov r1, #0x4c
bl ov29_022EA370
b _022F5978
_022F55B8:
mov r0, sb
mov r1, #1
bl ShouldMonsterRunAwayAndShowEffect
cmp r0, #0
beq _022F55E8
ldr r1, _022F5984 ; =0x00000BBE
mov r0, sb
bl LogMessageByIdWithPopupCheckUser
mov r0, #0x14
mov r1, #0x4c
bl ov29_022EA370
b _022F5978
_022F55E8:
ldrh r0, [r4]
mov r2, #0
add r1, sp, #0xc
strh r0, [sp, #0xc]
ldrh r5, [r4, #2]
ldrb r3, [sp, #0xc]
mov r0, sb
strh r5, [sp, #0xe]
ldrh r5, [r4, #4]
bic r3, r3, #0x10
strh r5, [sp, #0x10]
strb r3, [sp, #0xc]
strb r2, [sp, #0xd]
bl ov29_0230F9A4
ldrb r0, [r8, #0x4e]
cmp r0, #0x80
bne _022F563C
add r0, r8, #0x50
mov r1, #1
mov r4, #0
bl RemoveGroundItem
_022F563C:
ldrsh r0, [sp, #0x10]
mov r5, #1
bl GetItemCategoryVeneer
cmp r0, #0
beq _022F5660
ldrsh r0, [sp, #0x10]
bl GetItemCategoryVeneer
cmp r0, #1
bne _022F566C
_022F5660:
ldrh r0, [sp, #0xe]
cmp r0, #1
movhi r5, #0
_022F566C:
cmp r5, #0
ldrb r0, [r8, #0x4e]
beq _022F56A8
cmp r0, #0x80
beq _022F56F4
mov r0, r4
bl ov29_02346FB8
cmp r0, #0
blt _022F5698
mov r0, r4
bl RemoveEquivItemNoHole
_022F5698:
mov r0, r4
bl ItemZInit
bl RemoveEmptyItemsInBagWrapper
b _022F56F4
_022F56A8:
cmp r0, #0x80
bne _022F56D0
ldrh r2, [sp, #0xe]
add r1, sp, #0xc
add r0, r8, #0x50
sub r3, r2, #1
mov r2, #1
strh r3, [sp, #0xe]
bl SpawnItem
b _022F56F4
_022F56D0:
mov r0, r4
bl ov29_02346FB8
cmp r0, #0
blt _022F56E8
mov r0, r4
bl DecrementStackItem
_022F56E8:
ldrh r0, [r4, #2]
sub r0, r0, #1
strh r0, [r4, #2]
_022F56F4:
mov r0, sb
mov r1, #0x30
bl ItemIsActive__022F5994
cmp r0, #0
beq _022F5714
mov r0, #8
bl DungeonRandInt
strb r0, [r8, #0x4c]
_022F5714:
mov r0, sb
bl ShouldDisplayEntityWrapper
cmp r0, #0
beq _022F577C
ldr r1, _022F5988 ; =0x00000103
mov r0, sb
ldrb r7, [r8, #0x4c]
bl PlaySeByIdIfShouldDisplayEntity
mov r6, #0
mov r5, r6
mov r4, #2
mov sl, #0x15
_022F5744:
sub r0, r7, #1
and r7, r0, #7
mov r0, sb
mov r1, r5
mov r2, r7
bl ChangeMonsterAnimation
mov r0, r4
mov r1, sl
bl ov29_022EA370
add r6, r6, #1
cmp r6, #8
blt _022F5744
mov r0, #4
#ifdef JAPAN
strb r0, [r8, #0x175]
#else
strb r0, [r8, #0x179]
#endif
_022F577C:
ldrsh r0, [sp, #0x10]
bl GetItemCategoryVeneer
cmp r0, #0
beq _022F579C
ldrsh r0, [sp, #0x10]
bl GetItemCategoryVeneer
cmp r0, #1
bne _022F57A4
_022F579C:
mov r0, #1
strh r0, [sp, #0xe]
_022F57A4:
add r1, sp, #0xc
mov r0, #0
bl PrepareItemForPrinting__02345754
bl GetMessageLogPreprocessorArgs
mov r1, #0
mov r2, r8
mov r3, r1
str r1, [sp]
bl SetPreprocessorArgsStringToName
ldrsh r0, [sp, #0x10]
bl GetItemCategoryVeneer
cmp r0, #0
bne _022F57E8
#ifdef JAPAN
ldr r1, _022F6F84 ; =0x000008FF
mov r0, sb
#else
mov r0, sb
mov r1, #0xbc0
#endif
bl LogMessageByIdWithPopupCheckUser
b _022F57F4
_022F57E8:
ldr r1, _022F598C ; =0x00000BBF
mov r0, sb
bl LogMessageByIdWithPopupCheckUser
_022F57F4:
ldrsh r0, [sp, #0x10]
bl GetItemCategoryVeneer
mov r1, r0
mov r0, sb
bl ov29_022E5728
mov r0, sb
mov r1, #0x2e
bl ItemIsActive__022F5994
cmp r0, #0
movne r0, #1
strneb r0, [sp, #9]
moveq r0, #0
streqb r0, [sp, #9]
ldrb r0, [r8, #0xee]
cmp r0, #3
addls pc, pc, r0, lsl #2
b _022F5880
_022F5838: ; jump table
b _022F5848 ; case 0
b _022F585C ; case 1
b _022F5870 ; case 2
b _022F5880 ; case 3
_022F5848:
mov r1, #0
mov r0, #0xa
strb r1, [sp, #8]
strh r0, [sp, #0xa]
b _022F5880
_022F585C:
mov r1, #0
mov r0, #0x63
strb r1, [sp, #8]
strh r0, [sp, #0xa]
b _022F5880
_022F5870:
mov r1, #1
mov r0, #0x63
strb r1, [sp, #8]
strh r0, [sp, #0xa]
_022F5880:
ldr r1, [sb, #0xb4]
ldrb r0, [r1, #6]
cmp r0, #0
movne r0, #0
bne _022F58A0
#ifdef JAPAN
add r0, r1, #0x224
#else
add r0, r1, #0x228
#endif
mov r1, #0x24
bl ExclusiveItemEffectFlagTest
_022F58A0:
cmp r0, #0
movne r1, #0
movne r0, #0x63
strneb r1, [sp, #8]
strneh r0, [sp, #0xa]
mov r0, sb
mov r1, #0x16
bl ItemIsActive__022F5994
cmp r0, #0
bne _022F58DC
mov r0, sb
mov r1, #0x42
bl IqSkillIsEnabled
cmp r0, #0
beq _022F58EC
_022F58DC:
mov r1, #1
mov r0, #0x63
strb r1, [sp, #8]
strh r0, [sp, #0xa]
_022F58EC:
ldrsh r0, [sp, #0x10]
bl GetItemCategoryVeneer
cmp r0, #1
bne _022F5928
add r0, sp, #4
mov r1, sb
bl ov29_022E9A9C
add r4, sp, #8
add r1, sp, #0xc
add r3, sp, #4
mov r0, sb
add r2, sb, #4
str r4, [sp]
bl HandleCurvedProjectileThrow
b _022F5944
_022F5928:
add r0, sp, #8
str r0, [sp]
ldrb r3, [r8, #0x4c]
add r1, sp, #0xc
mov r0, sb
add r2, sb, #4
bl HandleRegularProjectileThrow
_022F5944:
mov r0, sb
bl EntityIsValid__022F528C
cmp r0, #0
beq _022F5978
ldrb r1, [r8, #0x4c]
mov r0, sb
bl ChangeMonsterAnimationToIdle
ldr r1, _022F5990 ; =DUNGEON_PTR
mov r0, sb
ldr r1, [r1]
add r1, r1, #0x4000
#ifdef JAPAN
ldrb r1, [r1, #0x20]
#else
ldrb r1, [r1, #0xc4]
#endif
bl TryTriggerMonsterHouse
_022F5978:
add sp, sp, #0x14
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
#ifdef JAPAN
#define USE_THROWABLE_ITEM_OFFSET -0x2C1
#else
#define USE_THROWABLE_ITEM_OFFSET 0
#endif
_022F5980: .word 0x00000BAE + USE_THROWABLE_ITEM_OFFSET
_022F5984: .word 0x00000BBE + USE_THROWABLE_ITEM_OFFSET
_022F5988: .word 0x00000103
#ifdef JAPAN
_022F6F84: .word 0x000008FF
#endif
_022F598C: .word 0x00000BBF + USE_THROWABLE_ITEM_OFFSET
_022F5990: .word DUNGEON_PTR
arm_func_end UseThrowableItem

526
asm/overlay_29_022F52CC.s Normal file
View File

@@ -0,0 +1,526 @@
.include "asm/macros.inc"
.include "overlay_29_022F52CC.inc"
.text
arm_func_start UseSingleUseItemWrapper
UseSingleUseItemWrapper: ; 0x022F52CC
ldr r2, [r0, #0xb4]
ldr r1, _022F52F0 ; =DUNGEON_PTR
ldrb r2, [r2, #0x54]
ldr r1, [r1]
ldr ip, _022F52F4 ; =UseSingleUseItem
add r1, r1, r2, lsl #2
add r1, r1, #0x12000
#ifdef JAPAN
ldr r1, [r1, #0xa84]
#else
ldr r1, [r1, #0xb28]
#endif
bx ip
.align 2, 0
_022F52F0: .word DUNGEON_PTR
_022F52F4: .word UseSingleUseItem
arm_func_end UseSingleUseItemWrapper
arm_func_start UseSingleUseItem
UseSingleUseItem: ; 0x022F52F8
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x10
mov r8, r1
mov sb, r0
mov r0, r8
ldr r5, [r8, #0xb4]
bl MonsterHasEmbargoStatus
cmp r0, #0
beq _022F5334
mov r0, r8
bl LogItemBlockedByEmbargo
mov r0, #0x14
mov r1, #9
bl ov29_022EA370
b _022F54B0
_022F5334:
mov r0, sb
bl ov29_022F3B8C
mov r0, sb
mov r1, #0
mov r2, #8
bl GetItemToUse
mov r4, r0
mov r1, r4
mov r0, #0
bl PrepareItemForPrinting__02345728
bl GetMessageLogPreprocessorArgs
mov r2, r5
mov r1, #0
str r1, [sp]
mov r3, r1
bl SetPreprocessorArgsStringToName
mov r0, r8
mov r1, r4
bl CanMonsterUseItem
cmp r0, #0
beq _022F54B0
mov r0, r4
bl ov29_022EB378
mov r1, r0
mov r0, r8
bl LogMessageByIdWithPopupCheckUser
ldrh r2, [r4]
mov r0, sb
mov r1, #0
strh r2, [sp, #8]
ldrh r3, [r4, #2]
mov r2, #0x66
strh r3, [sp, #0xa]
ldrh r3, [r4, #4]
strh r3, [sp, #0xc]
bl RemoveUsedItem
mov r0, #0x1e
mov r1, #0x11
bl ov29_022EA370
mov r0, #0
str r8, [sp]
add r1, sp, #8
str r1, [sp, #4]
mov r1, r0
mov r2, r0
mov r3, r8
bl ApplyItemEffect
mov r0, r8
bl EntityIsValid__022F528C
cmp r0, #0
ldrne r0, [r8, #0xb4]
ldrneb r0, [r0, #7]
cmpne r0, #0
beq _022F5498
mov r0, r8
mov r1, #0x33
bl IqSkillIsEnabled
cmp r0, #0
beq _022F5498
ldrsh r0, [sp, #0xc]
bl ov29_02347000
cmp r0, #0
beq _022F5498
mov r7, #0
ldr r4, _022F54B8 ; =DUNGEON_PTR
add r6, sp, #8
mov r5, r7
_022F5440:
ldr r0, [r4]
add r0, r0, r7, lsl #2
add r0, r0, #0x12000
#ifdef JAPAN
ldr sl, [r0, #0xa84]
#else
ldr sl, [r0, #0xb28]
#endif
cmp sl, r8
beq _022F5484
mov r0, sl
bl EntityIsValid__022F528C
cmp r0, #0
beq _022F5484
str sl, [sp]
mov r0, r5
mov r1, r5
mov r2, r5
mov r3, r8
str r6, [sp, #4]
bl ApplyItemEffect
_022F5484:
add r0, r7, #1
mov r0, r0, lsl #0x10
mov r7, r0, asr #0x10
cmp r7, #4
blt _022F5440
_022F5498:
ldr r1, _022F54B8 ; =DUNGEON_PTR
mov r0, sb
ldr r1, [r1]
add r1, r1, #0x4000
#ifdef JAPAN
ldrb r1, [r1, #0x20]
#else
ldrb r1, [r1, #0xc4]
#endif
bl TryTriggerMonsterHouse
_022F54B0:
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
_022F54B8: .word DUNGEON_PTR
arm_func_end UseSingleUseItem
arm_func_start UseThrowableItem
UseThrowableItem: ; 0x022F54BC
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x14
mov sb, r0
ldr r8, [sb, #0xb4]
bl ov29_022F3B8C
mov r0, sb
mov r1, #0
mov r2, #9
bl GetItemToUse
mov r4, r0
mov r0, sb
bl MonsterHasEmbargoStatus
cmp r0, #0
beq _022F550C
mov r0, sb
bl LogItemBlockedByEmbargo
mov r0, #0x14
mov r1, #9
bl ov29_022EA370
b _022F5978
_022F550C:
ldrb r0, [r8, #0x4e]
cmp r0, #0x81
bne _022F5558
ldrb r0, [r4]
tst r0, #8
movne r0, #1
moveq r0, #0
tst r0, #0xff
beq _022F5558
mov r1, r4
mov r0, #0
bl PrepareItemForPrinting__02345728
ldr r1, _022F5980 ; =0x00000BAE
mov r0, sb
bl LogMessageByIdWithPopupCheckUser
mov r0, #0x14
mov r1, #0x4c
bl ov29_022EA370
b _022F5978
_022F5558:
ldrsh r0, [r4, #4]
bl GetItemCategoryVeneer
cmp r0, #0
beq _022F5578
ldrsh r0, [r4, #4]
bl GetItemCategoryVeneer
cmp r0, #1
bne _022F55B8
_022F5578:
ldrb r0, [r4]
tst r0, #8
movne r0, #1
moveq r0, #0
tst r0, #0xff
beq _022F55B8
mov r1, r4
mov r0, #0
bl PrepareItemForPrinting__02345728
ldr r1, _022F5980 ; =0x00000BAE
mov r0, sb
bl LogMessageByIdWithPopupCheckUser
mov r0, #0x14
mov r1, #0x4c
bl ov29_022EA370
b _022F5978
_022F55B8:
mov r0, sb
mov r1, #1
bl ShouldMonsterRunAwayAndShowEffect
cmp r0, #0
beq _022F55E8
ldr r1, _022F5984 ; =0x00000BBE
mov r0, sb
bl LogMessageByIdWithPopupCheckUser
mov r0, #0x14
mov r1, #0x4c
bl ov29_022EA370
b _022F5978
_022F55E8:
ldrh r0, [r4]
mov r2, #0
add r1, sp, #0xc
strh r0, [sp, #0xc]
ldrh r5, [r4, #2]
ldrb r3, [sp, #0xc]
mov r0, sb
strh r5, [sp, #0xe]
ldrh r5, [r4, #4]
bic r3, r3, #0x10
strh r5, [sp, #0x10]
strb r3, [sp, #0xc]
strb r2, [sp, #0xd]
bl ov29_0230F9A4
ldrb r0, [r8, #0x4e]
cmp r0, #0x80
bne _022F563C
add r0, r8, #0x50
mov r1, #1
mov r4, #0
bl RemoveGroundItem
_022F563C:
ldrsh r0, [sp, #0x10]
mov r5, #1
bl GetItemCategoryVeneer
cmp r0, #0
beq _022F5660
ldrsh r0, [sp, #0x10]
bl GetItemCategoryVeneer
cmp r0, #1
bne _022F566C
_022F5660:
ldrh r0, [sp, #0xe]
cmp r0, #1
movhi r5, #0
_022F566C:
cmp r5, #0
ldrb r0, [r8, #0x4e]
beq _022F56A8
cmp r0, #0x80
beq _022F56F4
mov r0, r4
bl ov29_02346FB8
cmp r0, #0
blt _022F5698
mov r0, r4
bl RemoveEquivItemNoHole
_022F5698:
mov r0, r4
bl ItemZInit
bl RemoveEmptyItemsInBagWrapper
b _022F56F4
_022F56A8:
cmp r0, #0x80
bne _022F56D0
ldrh r2, [sp, #0xe]
add r1, sp, #0xc
add r0, r8, #0x50
sub r3, r2, #1
mov r2, #1
strh r3, [sp, #0xe]
bl SpawnItem
b _022F56F4
_022F56D0:
mov r0, r4
bl ov29_02346FB8
cmp r0, #0
blt _022F56E8
mov r0, r4
bl DecrementStackItem
_022F56E8:
ldrh r0, [r4, #2]
sub r0, r0, #1
strh r0, [r4, #2]
_022F56F4:
mov r0, sb
mov r1, #0x30
bl ItemIsActive__022F5994
cmp r0, #0
beq _022F5714
mov r0, #8
bl DungeonRandInt
strb r0, [r8, #0x4c]
_022F5714:
mov r0, sb
bl ShouldDisplayEntityWrapper
cmp r0, #0
beq _022F577C
ldr r1, _022F5988 ; =0x00000103
mov r0, sb
ldrb r7, [r8, #0x4c]
bl PlaySeByIdIfShouldDisplayEntity
mov r6, #0
mov r5, r6
mov r4, #2
mov sl, #0x15
_022F5744:
sub r0, r7, #1
and r7, r0, #7
mov r0, sb
mov r1, r5
mov r2, r7
bl ChangeMonsterAnimation
mov r0, r4
mov r1, sl
bl ov29_022EA370
add r6, r6, #1
cmp r6, #8
blt _022F5744
mov r0, #4
#ifdef JAPAN
strb r0, [r8, #0x175]
#else
strb r0, [r8, #0x179]
#endif
_022F577C:
ldrsh r0, [sp, #0x10]
bl GetItemCategoryVeneer
cmp r0, #0
beq _022F579C
ldrsh r0, [sp, #0x10]
bl GetItemCategoryVeneer
cmp r0, #1
bne _022F57A4
_022F579C:
mov r0, #1
strh r0, [sp, #0xe]
_022F57A4:
add r1, sp, #0xc
mov r0, #0
bl PrepareItemForPrinting__02345754
bl GetMessageLogPreprocessorArgs
mov r1, #0
mov r2, r8
mov r3, r1
str r1, [sp]
bl SetPreprocessorArgsStringToName
ldrsh r0, [sp, #0x10]
bl GetItemCategoryVeneer
cmp r0, #0
bne _022F57E8
#ifdef JAPAN
ldr r1, _022F6F84 ; =0x000008FF
mov r0, sb
#else
mov r0, sb
mov r1, #0xbc0
#endif
bl LogMessageByIdWithPopupCheckUser
b _022F57F4
_022F57E8:
ldr r1, _022F598C ; =0x00000BBF
mov r0, sb
bl LogMessageByIdWithPopupCheckUser
_022F57F4:
ldrsh r0, [sp, #0x10]
bl GetItemCategoryVeneer
mov r1, r0
mov r0, sb
bl ov29_022E5728
mov r0, sb
mov r1, #0x2e
bl ItemIsActive__022F5994
cmp r0, #0
movne r0, #1
strneb r0, [sp, #9]
moveq r0, #0
streqb r0, [sp, #9]
ldrb r0, [r8, #0xee]
cmp r0, #3
addls pc, pc, r0, lsl #2
b _022F5880
_022F5838: ; jump table
b _022F5848 ; case 0
b _022F585C ; case 1
b _022F5870 ; case 2
b _022F5880 ; case 3
_022F5848:
mov r1, #0
mov r0, #0xa
strb r1, [sp, #8]
strh r0, [sp, #0xa]
b _022F5880
_022F585C:
mov r1, #0
mov r0, #0x63
strb r1, [sp, #8]
strh r0, [sp, #0xa]
b _022F5880
_022F5870:
mov r1, #1
mov r0, #0x63
strb r1, [sp, #8]
strh r0, [sp, #0xa]
_022F5880:
ldr r1, [sb, #0xb4]
ldrb r0, [r1, #6]
cmp r0, #0
movne r0, #0
bne _022F58A0
#ifdef JAPAN
add r0, r1, #0x224
#else
add r0, r1, #0x228
#endif
mov r1, #0x24
bl ExclusiveItemEffectFlagTest
_022F58A0:
cmp r0, #0
movne r1, #0
movne r0, #0x63
strneb r1, [sp, #8]
strneh r0, [sp, #0xa]
mov r0, sb
mov r1, #0x16
bl ItemIsActive__022F5994
cmp r0, #0
bne _022F58DC
mov r0, sb
mov r1, #0x42
bl IqSkillIsEnabled
cmp r0, #0
beq _022F58EC
_022F58DC:
mov r1, #1
mov r0, #0x63
strb r1, [sp, #8]
strh r0, [sp, #0xa]
_022F58EC:
ldrsh r0, [sp, #0x10]
bl GetItemCategoryVeneer
cmp r0, #1
bne _022F5928
add r0, sp, #4
mov r1, sb
bl ov29_022E9A9C
add r4, sp, #8
add r1, sp, #0xc
add r3, sp, #4
mov r0, sb
add r2, sb, #4
str r4, [sp]
bl HandleCurvedProjectileThrow
b _022F5944
_022F5928:
add r0, sp, #8
str r0, [sp]
ldrb r3, [r8, #0x4c]
add r1, sp, #0xc
mov r0, sb
add r2, sb, #4
bl HandleRegularProjectileThrow
_022F5944:
mov r0, sb
bl EntityIsValid__022F528C
cmp r0, #0
beq _022F5978
ldrb r1, [r8, #0x4c]
mov r0, sb
bl ChangeMonsterAnimationToIdle
ldr r1, _022F5990 ; =DUNGEON_PTR
mov r0, sb
ldr r1, [r1]
add r1, r1, #0x4000
#ifdef JAPAN
ldrb r1, [r1, #0x20]
#else
ldrb r1, [r1, #0xc4]
#endif
bl TryTriggerMonsterHouse
_022F5978:
add sp, sp, #0x14
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
#ifdef JAPAN
#define USE_THROWABLE_ITEM_OFFSET -0x2C1
#else
#define USE_THROWABLE_ITEM_OFFSET 0
#endif
_022F5980: .word 0x00000BAE + USE_THROWABLE_ITEM_OFFSET
_022F5984: .word 0x00000BBE + USE_THROWABLE_ITEM_OFFSET
_022F5988: .word 0x00000103
#ifdef JAPAN
_022F6F84: .word 0x000008FF
#endif
_022F598C: .word 0x00000BBF + USE_THROWABLE_ITEM_OFFSET
_022F5990: .word DUNGEON_PTR
arm_func_end UseThrowableItem

View File

@@ -1,17 +1,8 @@
.include "asm/macros.inc"
.include "overlay_29_022FFF4C.inc"
.include "overlay_29_022FFF5C.inc"
.text
arm_func_start CalcSpeedStageWrapper
CalcSpeedStageWrapper: ; 0x022FFF4C
ldr ip, _022FFF58 ; =CalcSpeedStage
mov r1, #1
bx ip
.align 2, 0
_022FFF58: .word CalcSpeedStage
arm_func_end CalcSpeedStageWrapper
arm_func_start GetNumberOfAttacks
GetNumberOfAttacks: ; 0x022FFF5C
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}

View File

@@ -828,176 +828,3 @@ _02321210:
.align 2, 0
_02321234: .word DUNGEON_PTR
arm_func_end ov29_0232119C
arm_func_start ov29_02321238
ov29_02321238: ; 0x02321238
ldr ip, _02321248 ; =ov29_0232119C
mov r1, #0
mov r2, #1
bx ip
.align 2, 0
_02321248: .word ov29_0232119C
arm_func_end ov29_02321238
arm_func_start ov29_0232124C
ov29_0232124C: ; 0x0232124C
ldr ip, _0232125C ; =ov29_0232119C
mov r1, #1
mov r2, r1
bx ip
.align 2, 0
_0232125C: .word ov29_0232119C
arm_func_end ov29_0232124C
arm_func_start ov29_02321260
ov29_02321260: ; 0x02321260
ldr ip, _02321270 ; =ov29_0232119C
mov r1, #0
mov r2, r1
bx ip
.align 2, 0
_02321270: .word ov29_0232119C
arm_func_end ov29_02321260
arm_func_start ov29_02321274
ov29_02321274: ; 0x02321274
ldr ip, _02321284 ; =ov29_0232119C
mov r1, #1
mov r2, #0
bx ip
.align 2, 0
_02321284: .word ov29_0232119C
arm_func_end ov29_02321274
arm_func_start ov29_02321288
ov29_02321288: ; 0x02321288
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x10
mov sl, r0
mov sb, r1
mov r8, r2
mov r7, r3
ldr r6, [sp, #0x34]
ldr r5, [sl, #0xb4]
bl GetMonsterInFront
movs r4, r0
bne _023212E0
mov r0, sl
mov r1, r6
bl ov29_022FAA04
ldrh r2, [r6, #2]
mov r0, sl
mov r1, #1
orr r2, r2, #8
strh r2, [r6, #2]
bl UpdateMovePp
mov r0, #0
b _02321428
_023212E0:
add r2, sp, #8
mov r3, r6
mov r1, #4
_023212EC:
ldrh r0, [r3], #2
subs r1, r1, #1
strh r0, [r2], #2
bne _023212EC
mov r0, r4
bl ov29_023247B4
strh r0, [sp, #0xc]
ldrh r0, [sp, #0xc]
cmp r0, #0
bne _02321360
mov r0, #0
mov r1, r4
mov r2, r0
bl SubstitutePlaceholderStringTags
ldr r2, _02321430 ; =0x00000F11
mov r0, sl
mov r1, r4
bl LogMessageByIdWithPopupCheckUserTarget
mov r0, sl
mov r1, r6
bl ov29_022FAA04
ldrh r2, [r6, #2]
mov r0, sl
mov r1, #1
orr r2, r2, #8
strh r2, [r6, #2]
bl UpdateMovePp
mov r0, #0
b _02321428
_02321360:
mov r0, sl
mov r1, r6
mov r2, #1
bl CanMonsterUseMove
cmp r0, #0
beq _023213E4
mov r0, r4
bl ov29_022E4C84
mov r0, sl
bl ov29_022E4CD4
mov r0, #1
#ifdef JAPAN
strb r0, [r5, #0x21d]
#else
strb r0, [r5, #0x221]
#endif
mov r0, #0
mov r1, sl
mov r2, r0
bl SubstitutePlaceholderStringTags
ldr r2, _02321434 ; =0x00000F12
mov r1, r4
mov r0, sl
bl LogMessageByIdWithPopupCheckUserTarget
ldr r4, [sp, #0x30]
add r0, sp, #8
str r4, [sp]
str r0, [sp, #4]
mov r1, sb
mov r2, r8
mov r3, r7
mov r0, sl
bl ov29_02322374
mov r4, r0
mov r0, #0
#ifdef JAPAN
strb r0, [r5, #0x21d]
#else
strb r0, [r5, #0x221]
#endif
b _02321408
_023213E4:
ldr r1, [sp, #0x30]
mov r0, sl
str r1, [sp]
mov r1, sb
mov r2, r8
mov r3, r7
str r6, [sp, #4]
bl ov29_02322374
mov r4, r0
_02321408:
mov r0, sl
bl EntityIsValid__02321438
cmp r0, #0
beq _02321424
mov r0, sl
mov r1, r6
bl ov29_022FAA04
_02321424:
mov r0, r4
_02321428:
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
#ifdef JAPAN
_02321430: .word 0x00000C53
_02321434: .word 0x00000C54
#else
_02321430: .word 0x00000F11
_02321434: .word 0x00000F12
#endif
arm_func_end ov29_02321288

24
asm/overlay_29_0232124C.s Normal file
View File

@@ -0,0 +1,24 @@
.include "asm/macros.inc"
.include "overlay_29_0232124C.inc"
.text
arm_func_start ov29_0232124C
ov29_0232124C: ; 0x0232124C
ldr ip, _0232125C ; =ov29_0232119C
mov r1, #1
mov r2, r1
bx ip
.align 2, 0
_0232125C: .word ov29_0232119C
arm_func_end ov29_0232124C
arm_func_start ov29_02321260
ov29_02321260: ; 0x02321260
ldr ip, _02321270 ; =ov29_0232119C
mov r1, #0
mov r2, r1
bx ip
.align 2, 0
_02321270: .word ov29_0232119C
arm_func_end ov29_02321260

137
asm/overlay_29_02321288.s Normal file
View File

@@ -0,0 +1,137 @@
.include "asm/macros.inc"
.include "overlay_29_02321288.inc"
.text
arm_func_start ov29_02321288
ov29_02321288: ; 0x02321288
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
sub sp, sp, #0x10
mov sl, r0
mov sb, r1
mov r8, r2
mov r7, r3
ldr r6, [sp, #0x34]
ldr r5, [sl, #0xb4]
bl GetMonsterInFront
movs r4, r0
bne _023212E0
mov r0, sl
mov r1, r6
bl ov29_022FAA04
ldrh r2, [r6, #2]
mov r0, sl
mov r1, #1
orr r2, r2, #8
strh r2, [r6, #2]
bl UpdateMovePp
mov r0, #0
b _02321428
_023212E0:
add r2, sp, #8
mov r3, r6
mov r1, #4
_023212EC:
ldrh r0, [r3], #2
subs r1, r1, #1
strh r0, [r2], #2
bne _023212EC
mov r0, r4
bl ov29_023247B4
strh r0, [sp, #0xc]
ldrh r0, [sp, #0xc]
cmp r0, #0
bne _02321360
mov r0, #0
mov r1, r4
mov r2, r0
bl SubstitutePlaceholderStringTags
ldr r2, _02321430 ; =0x00000F11
mov r0, sl
mov r1, r4
bl LogMessageByIdWithPopupCheckUserTarget
mov r0, sl
mov r1, r6
bl ov29_022FAA04
ldrh r2, [r6, #2]
mov r0, sl
mov r1, #1
orr r2, r2, #8
strh r2, [r6, #2]
bl UpdateMovePp
mov r0, #0
b _02321428
_02321360:
mov r0, sl
mov r1, r6
mov r2, #1
bl CanMonsterUseMove
cmp r0, #0
beq _023213E4
mov r0, r4
bl ov29_022E4C84
mov r0, sl
bl ov29_022E4CD4
mov r0, #1
#ifdef JAPAN
strb r0, [r5, #0x21d]
#else
strb r0, [r5, #0x221]
#endif
mov r0, #0
mov r1, sl
mov r2, r0
bl SubstitutePlaceholderStringTags
ldr r2, _02321434 ; =0x00000F12
mov r1, r4
mov r0, sl
bl LogMessageByIdWithPopupCheckUserTarget
ldr r4, [sp, #0x30]
add r0, sp, #8
str r4, [sp]
str r0, [sp, #4]
mov r1, sb
mov r2, r8
mov r3, r7
mov r0, sl
bl ov29_02322374
mov r4, r0
mov r0, #0
#ifdef JAPAN
strb r0, [r5, #0x21d]
#else
strb r0, [r5, #0x221]
#endif
b _02321408
_023213E4:
ldr r1, [sp, #0x30]
mov r0, sl
str r1, [sp]
mov r1, sb
mov r2, r8
mov r3, r7
str r6, [sp, #4]
bl ov29_02322374
mov r4, r0
_02321408:
mov r0, sl
bl EntityIsValid__02321438
cmp r0, #0
beq _02321424
mov r0, sl
mov r1, r6
bl ov29_022FAA04
_02321424:
mov r0, r4
_02321428:
add sp, sp, #0x10
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
.align 2, 0
#ifdef JAPAN
_02321430: .word 0x00000C53
_02321434: .word 0x00000C54
#else
_02321430: .word 0x00000F11
_02321434: .word 0x00000F12
#endif
arm_func_end ov29_02321288

View File

@@ -554,163 +554,3 @@ ov29_02325D7C: ; 0x02325D7C
bl AdvanceFrame
ldmia sp!, {r4, pc}
arm_func_end ov29_02325D7C
arm_func_start DoMoveDamage__02325DC0
DoMoveDamage__02325DC0: ; 0x02325DC0
stmdb sp!, {r3, lr}
str r3, [sp]
mov r3, #0x100
bl DealDamage
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end DoMoveDamage__02325DC0
arm_func_start DoMoveIronTail
DoMoveIronTail: ; 0x02325DE4
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
str r3, [sp]
mov r3, #0x100
mov r6, r0
mov r5, r1
mov r4, #0
bl DealDamage
cmp r0, #0
beq _02325E50
ldr r1, _02325E5C ; =IRON_TAIL_LOWER_DEFENSE_CHANCE
mov r0, r6
ldrsh r2, [r1]
mov r1, r5
mov r4, #1
bl DungeonRandOutcomeUserTargetInteraction
cmp r0, #0
beq _02325E50
ldr r0, _02325E60 ; =ATK_STAT_IDX
mov r3, r4
ldr r2, [r0]
mov r0, r6
mov r1, r5
str r3, [sp]
mov ip, #0
str ip, [sp, #4]
bl LowerDefensiveStat
_02325E50:
mov r0, r4
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02325E5C: .word IRON_TAIL_LOWER_DEFENSE_CHANCE
_02325E60: .word ATK_STAT_IDX
arm_func_end DoMoveIronTail
arm_func_start DoMoveDamageMultihitUntilMiss
DoMoveDamageMultihitUntilMiss: ; 0x02325E64
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
ldr ip, _02325EB8 ; =ROLLOUT_ICE_BALL_SUCCESSIVE_HITS
str r3, [sp]
ldr ip, [ip]
ldr r3, _02325EBC ; =ROLLOUT_DAMAGE_MULT_TABLE
mov r4, #0
ldr r3, [r3, ip, lsl #2]
bl DealDamage
cmp r0, #0
ldreq r0, _02325EC0 ; =ROLLOUT_ICE_BALL_MISSED
moveq r1, #1
streqb r1, [r0]
ldr r1, _02325EB8 ; =ROLLOUT_ICE_BALL_SUCCESSIVE_HITS
movne r4, #1
ldr r2, [r1]
mov r0, r4
add r2, r2, #1
str r2, [r1]
add sp, sp, #4
ldmia sp!, {r3, r4, pc}
.align 2, 0
_02325EB8: .word ROLLOUT_ICE_BALL_SUCCESSIVE_HITS
_02325EBC: .word ROLLOUT_DAMAGE_MULT_TABLE
_02325EC0: .word ROLLOUT_ICE_BALL_MISSED
arm_func_end DoMoveDamageMultihitUntilMiss
arm_func_start DoMoveYawn
DoMoveYawn: ; 0x02325EC4
stmdb sp!, {r3, r4, r5, lr}
mov r4, r1
mov r5, r0
ldr r1, _02325EFC ; =YAWN_TURN_RANGE
mov r0, r4
mov r2, #1
bl CalcStatusDuration
mov r2, r0
mov r0, r5
mov r1, r4
add r2, r2, #1
bl TryInflictYawningStatus
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02325EFC: .word YAWN_TURN_RANGE
arm_func_end DoMoveYawn
arm_func_start DoMoveSleep
DoMoveSleep: ; 0x02325F00
stmdb sp!, {r3, r4, r5, lr}
mov r4, r1
mov r5, r0
ldr r1, _02325F38 ; =SLEEP_TURN_RANGE
mov r0, r4
mov r2, #1
bl CalcStatusDuration
mov r2, r0
mov r0, r5
mov r1, r4
mov r3, #1
bl TryInflictSleepStatus
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02325F38: .word SLEEP_TURN_RANGE
arm_func_end DoMoveSleep
arm_func_start DoMoveNightmare
DoMoveNightmare: ; 0x02325F3C
stmdb sp!, {r3, r4, r5, lr}
mov r4, r1
mov r5, r0
ldr r1, _02325F70 ; =NIGHTMARE_TURN_RANGE
mov r0, r4
mov r2, #1
bl CalcStatusDuration
mov r2, r0
mov r0, r5
mov r1, r4
bl TryInflictNightmareStatus
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02325F70: .word NIGHTMARE_TURN_RANGE
arm_func_end DoMoveNightmare
arm_func_start DoMoveMorningSun
DoMoveMorningSun: ; 0x02325F74
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl GetApparentWeather
mov ip, #1
ldr r1, _02325FB0 ; =MORNING_SUN_HP_RESTORATION_TABLE
mov r0, r0, lsl #1
ldrsh r2, [r1, r0]
mov r0, r5
mov r1, r4
mov r3, #0
str ip, [sp]
bl TryIncreaseHp
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02325FB0: .word MORNING_SUN_HP_RESTORATION_TABLE
arm_func_end DoMoveMorningSun

111
asm/overlay_29_02325DE4.s Normal file
View File

@@ -0,0 +1,111 @@
.include "asm/macros.inc"
.include "overlay_29_02325DE4.inc"
.text
arm_func_start DoMoveIronTail
DoMoveIronTail: ; 0x02325DE4
stmdb sp!, {r4, r5, r6, lr}
sub sp, sp, #8
str r3, [sp]
mov r3, #0x100
mov r6, r0
mov r5, r1
mov r4, #0
bl DealDamage
cmp r0, #0
beq _02325E50
ldr r1, _02325E5C ; =IRON_TAIL_LOWER_DEFENSE_CHANCE
mov r0, r6
ldrsh r2, [r1]
mov r1, r5
mov r4, #1
bl DungeonRandOutcomeUserTargetInteraction
cmp r0, #0
beq _02325E50
ldr r0, _02325E60 ; =ATK_STAT_IDX
mov r3, r4
ldr r2, [r0]
mov r0, r6
mov r1, r5
str r3, [sp]
mov ip, #0
str ip, [sp, #4]
bl LowerDefensiveStat
_02325E50:
mov r0, r4
add sp, sp, #8
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02325E5C: .word IRON_TAIL_LOWER_DEFENSE_CHANCE
_02325E60: .word ATK_STAT_IDX
arm_func_end DoMoveIronTail
arm_func_start DoMoveDamageMultihitUntilMiss
DoMoveDamageMultihitUntilMiss: ; 0x02325E64
stmdb sp!, {r3, r4, lr}
sub sp, sp, #4
ldr ip, _02325EB8 ; =ROLLOUT_ICE_BALL_SUCCESSIVE_HITS
str r3, [sp]
ldr ip, [ip]
ldr r3, _02325EBC ; =ROLLOUT_DAMAGE_MULT_TABLE
mov r4, #0
ldr r3, [r3, ip, lsl #2]
bl DealDamage
cmp r0, #0
ldreq r0, _02325EC0 ; =ROLLOUT_ICE_BALL_MISSED
moveq r1, #1
streqb r1, [r0]
ldr r1, _02325EB8 ; =ROLLOUT_ICE_BALL_SUCCESSIVE_HITS
movne r4, #1
ldr r2, [r1]
mov r0, r4
add r2, r2, #1
str r2, [r1]
add sp, sp, #4
ldmia sp!, {r3, r4, pc}
.align 2, 0
_02325EB8: .word ROLLOUT_ICE_BALL_SUCCESSIVE_HITS
_02325EBC: .word ROLLOUT_DAMAGE_MULT_TABLE
_02325EC0: .word ROLLOUT_ICE_BALL_MISSED
arm_func_end DoMoveDamageMultihitUntilMiss
arm_func_start DoMoveYawn
DoMoveYawn: ; 0x02325EC4
stmdb sp!, {r3, r4, r5, lr}
mov r4, r1
mov r5, r0
ldr r1, _02325EFC ; =YAWN_TURN_RANGE
mov r0, r4
mov r2, #1
bl CalcStatusDuration
mov r2, r0
mov r0, r5
mov r1, r4
add r2, r2, #1
bl TryInflictYawningStatus
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02325EFC: .word YAWN_TURN_RANGE
arm_func_end DoMoveYawn
arm_func_start DoMoveSleep
DoMoveSleep: ; 0x02325F00
stmdb sp!, {r3, r4, r5, lr}
mov r4, r1
mov r5, r0
ldr r1, _02325F38 ; =SLEEP_TURN_RANGE
mov r0, r4
mov r2, #1
bl CalcStatusDuration
mov r2, r0
mov r0, r5
mov r1, r4
mov r3, #1
bl TryInflictSleepStatus
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02325F38: .word SLEEP_TURN_RANGE
arm_func_end DoMoveSleep

25
asm/overlay_29_02325F74.s Normal file
View File

@@ -0,0 +1,25 @@
.include "asm/macros.inc"
.include "overlay_29_02325F74.inc"
.text
arm_func_start DoMoveMorningSun
DoMoveMorningSun: ; 0x02325F74
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl GetApparentWeather
mov ip, #1
ldr r1, _02325FB0 ; =MORNING_SUN_HP_RESTORATION_TABLE
mov r0, r0, lsl #1
ldrsh r2, [r1, r0]
mov r0, r5
mov r1, r4
mov r3, #0
str ip, [sp]
bl TryIncreaseHp
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02325FB0: .word MORNING_SUN_HP_RESTORATION_TABLE
arm_func_end DoMoveMorningSun

View File

@@ -22,302 +22,3 @@ DoMoveSmokescreen: ; 0x023268CC
.align 2, 0
_02326904: .word SMOKESCREEN_TURN_RANGE
arm_func_end DoMoveSmokescreen
arm_func_start DoMoveMirrorMove
DoMoveMirrorMove: ; 0x02326908
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
bl EndFrozenStatus
mov r0, r5
mov r1, r4
bl TryInflictMirrorMoveStatus
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
arm_func_end DoMoveMirrorMove
arm_func_start DoMoveOverheat
DoMoveOverheat: ; 0x0232692C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov sb, r0
mov r8, r1
mov r7, r2
ldr r5, [sb, #0xb4]
mov r6, r3
mov r4, #0
bl EndFrozenStatus
mov r0, sb
mov r1, r8
mov r2, r7
mov r3, #0x100
str r6, [sp]
bl DealDamage
cmp r0, #0
beq _02326988
mov r1, r4
mov r0, sb
mov r4, #1
bl DungeonRandOutcomeUserAction
cmp r0, #0
movne r0, r4
#ifdef JAPAN
strneb r0, [r5, #0x15b]
#else
strneb r0, [r5, #0x15f]
#endif
_02326988:
mov r0, r4
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
arm_func_end DoMoveOverheat
arm_func_start DoMoveAuroraBeam
DoMoveAuroraBeam: ; 0x02326990
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
str r3, [sp]
mov r3, #0x100
mov r6, r0
mov r5, r1
mov r4, #0
bl DealDamage
cmp r0, #0
beq _023269F8
ldr r1, _02326A04 ; =AURORA_BEAM_LOWER_ATTACK_CHANCE
mov r0, r6
ldrsh r2, [r1]
mov r1, r5
mov r4, #1
bl DungeonRandOutcomeUserTargetInteraction
cmp r0, #0
beq _023269F8
ldr r0, _02326A08 ; =ATK_STAT_IDX
mov ip, #0
ldr r2, [r0]
mov r0, r6
mov r1, r5
mov r3, #0x80
str ip, [sp]
bl ApplyOffensiveStatMultiplier
_023269F8:
mov r0, r4
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_02326A04: .word AURORA_BEAM_LOWER_ATTACK_CHANCE
_02326A08: .word ATK_STAT_IDX
arm_func_end DoMoveAuroraBeam
arm_func_start DoMoveMemento
DoMoveMemento: ; 0x02326A0C
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
mov r6, r0
ldr r2, _02326A6C ; =ATK_STAT_IDX
ldr r4, [r6, #0xb4]
mov ip, #1
strh ip, [r4, #0x10]
ldr r2, [r2]
mov r3, #0x40
mov r5, r1
str ip, [sp]
bl ApplyOffensiveStatMultiplier
ldr r0, _02326A70 ; =SPATK_STAT_IDX
mov ip, #1
ldr r2, [r0]
mov r0, r6
mov r1, r5
mov r3, #0x40
str ip, [sp]
bl ApplyOffensiveStatMultiplier
mov r0, #1
#ifdef JAPAN
strb r0, [r4, #0x15a]
#else
strb r0, [r4, #0x15e]
#endif
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_02326A6C: .word ATK_STAT_IDX
_02326A70: .word SPATK_STAT_IDX
arm_func_end DoMoveMemento
arm_func_start DoMoveOctazooka
DoMoveOctazooka: ; 0x02326A74
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
str r3, [sp]
mov r3, #0x100
mov r6, r0
mov r5, r1
mov r4, #0
bl DealDamage
cmp r0, #0
beq _02326AD4
ldr r1, _02326AE0 ; =OCTAZOOKA_LOWER_ACCURACY_CHANCE
mov r0, r6
ldrsh r2, [r1]
mov r1, r5
mov r4, #1
bl DungeonRandOutcomeUserTargetInteraction
cmp r0, #0
beq _02326AD4
ldr r1, _02326AE4 ; =ATK_STAT_IDX
mov r0, r6
ldr r2, [r1]
mov r1, r5
mov r3, #0
bl LowerHitChanceStat
_02326AD4:
mov r0, r4
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_02326AE0: .word OCTAZOOKA_LOWER_ACCURACY_CHANCE
_02326AE4: .word ATK_STAT_IDX
arm_func_end DoMoveOctazooka
arm_func_start DoMoveFlatter
DoMoveFlatter: ; 0x02326AE8
stmdb sp!, {r3, r4, r5, lr}
mov r2, #1
mov r3, #0
mov r5, r0
mov r4, r1
bl TryInflictConfusedStatus
ldr r1, _02326B20 ; =SPATK_STAT_IDX
mov r0, r5
ldr r2, [r1]
mov r1, r4
mov r3, #1
bl BoostOffensiveStat
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02326B20: .word SPATK_STAT_IDX
arm_func_end DoMoveFlatter
arm_func_start DoMoveWillOWisp
DoMoveWillOWisp: ; 0x02326B24
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
mov r6, r0
mov r5, r1
bl GetFlashFireStatus
movs r4, r0
beq _02326B94
ldr r3, [r5, #0xb4]
#ifdef JAPAN
ldrb r0, [r3, #0x158]
#else
ldrb r0, [r3, #0x15c]
#endif
cmp r0, #0
bne _02326BAC
mov r0, #1
mov r1, r5
mov r2, #0
#ifdef JAPAN
strb r0, [r3, #0x158]
#else
strb r0, [r3, #0x15c]
#endif
bl SubstitutePlaceholderStringTags
cmp r4, #1
bne _02326B80
ldr r2, _02326BB8 ; =0x00000CDD
mov r0, r6
mov r1, r5
bl LogMessageByIdWithPopupCheckUserTarget
b _02326BAC
_02326B80:
ldr r2, _02326BBC ; =0x00000CDC
mov r0, r6
mov r1, r5
bl LogMessageByIdWithPopupCheckUserTarget
b _02326BAC
_02326B94:
mov r2, #0
mov r0, r6
mov r1, r5
mov r3, #1
str r2, [sp]
bl TryInflictBurnStatus
_02326BAC:
mov r0, #1
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
#ifdef JAPAN
_02326BB8: .word 0x00000A1D
_02326BBC: .word 0x00000A1C
#else
_02326BB8: .word 0x00000CDD
_02326BBC: .word 0x00000CDC
#endif
arm_func_end DoMoveWillOWisp
arm_func_start DoMoveReturn
DoMoveReturn: ; 0x02326BC0
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x20
mov sb, r0
mov r4, r3
mov r8, r1
mov r7, r2
ldr lr, [sb, #0xb4]
mov r6, #1
mov ip, #0
ldr r3, _02326C98 ; =ov10_022C4C0C
ldr r0, _02326C9C ; =0x000003E7
b _02326C18
_02326BF0:
mov r5, ip, lsl #2
ldrsh r2, [r3, r5]
cmp r2, #0
blt _02326C20
ldrsh r1, [lr, #0xe]
cmp r1, r2
ldrlt r0, _02326CA0 ; =ov10_022C4C0E
ldrltsh r6, [r0, r5]
blt _02326C20
add ip, ip, #1
_02326C18:
cmp ip, r0
blt _02326BF0
_02326C20:
mov r0, r7
bl GetMoveType
mov r5, r0
ldrh r0, [r7, #4]
bl GetMoveCategory
mov r1, r4
mov r4, r0
mov r0, r7
bl GetDamageSourceWrapper
add r3, sp, #0x1c
stmia sp, {r3, r5}
str r4, [sp, #8]
mov r2, r6
str r0, [sp, #0xc]
mov r6, #0
str r6, [sp, #0x10]
mov r3, #1
str r3, [sp, #0x14]
mov r1, r8
mov r0, sb
str r6, [sp, #0x18]
bl CalcDamageFixedWrapper
ldrb r0, [sp, #0x1c]
cmp r0, #0
moveq r0, #1
movne r0, r6
strb r0, [sp, #0x1c]
and r0, r0, #0xff
add sp, sp, #0x20
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_02326C98: .word ov10_022C4C0C
_02326C9C: .word 0x000003E7
_02326CA0: .word ov10_022C4C0E
arm_func_end DoMoveReturn

290
asm/overlay_29_0232692C.s Normal file
View File

@@ -0,0 +1,290 @@
.include "asm/macros.inc"
.include "overlay_29_0232692C.inc"
.text
arm_func_start DoMoveOverheat
DoMoveOverheat: ; 0x0232692C
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov sb, r0
mov r8, r1
mov r7, r2
ldr r5, [sb, #0xb4]
mov r6, r3
mov r4, #0
bl EndFrozenStatus
mov r0, sb
mov r1, r8
mov r2, r7
mov r3, #0x100
str r6, [sp]
bl DealDamage
cmp r0, #0
beq _02326988
mov r1, r4
mov r0, sb
mov r4, #1
bl DungeonRandOutcomeUserAction
cmp r0, #0
movne r0, r4
#ifdef JAPAN
strneb r0, [r5, #0x15b]
#else
strneb r0, [r5, #0x15f]
#endif
_02326988:
mov r0, r4
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
arm_func_end DoMoveOverheat
arm_func_start DoMoveAuroraBeam
DoMoveAuroraBeam: ; 0x02326990
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
str r3, [sp]
mov r3, #0x100
mov r6, r0
mov r5, r1
mov r4, #0
bl DealDamage
cmp r0, #0
beq _023269F8
ldr r1, _02326A04 ; =AURORA_BEAM_LOWER_ATTACK_CHANCE
mov r0, r6
ldrsh r2, [r1]
mov r1, r5
mov r4, #1
bl DungeonRandOutcomeUserTargetInteraction
cmp r0, #0
beq _023269F8
ldr r0, _02326A08 ; =ATK_STAT_IDX
mov ip, #0
ldr r2, [r0]
mov r0, r6
mov r1, r5
mov r3, #0x80
str ip, [sp]
bl ApplyOffensiveStatMultiplier
_023269F8:
mov r0, r4
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_02326A04: .word AURORA_BEAM_LOWER_ATTACK_CHANCE
_02326A08: .word ATK_STAT_IDX
arm_func_end DoMoveAuroraBeam
arm_func_start DoMoveMemento
DoMoveMemento: ; 0x02326A0C
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
mov r6, r0
ldr r2, _02326A6C ; =ATK_STAT_IDX
ldr r4, [r6, #0xb4]
mov ip, #1
strh ip, [r4, #0x10]
ldr r2, [r2]
mov r3, #0x40
mov r5, r1
str ip, [sp]
bl ApplyOffensiveStatMultiplier
ldr r0, _02326A70 ; =SPATK_STAT_IDX
mov ip, #1
ldr r2, [r0]
mov r0, r6
mov r1, r5
mov r3, #0x40
str ip, [sp]
bl ApplyOffensiveStatMultiplier
mov r0, #1
#ifdef JAPAN
strb r0, [r4, #0x15a]
#else
strb r0, [r4, #0x15e]
#endif
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_02326A6C: .word ATK_STAT_IDX
_02326A70: .word SPATK_STAT_IDX
arm_func_end DoMoveMemento
arm_func_start DoMoveOctazooka
DoMoveOctazooka: ; 0x02326A74
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
str r3, [sp]
mov r3, #0x100
mov r6, r0
mov r5, r1
mov r4, #0
bl DealDamage
cmp r0, #0
beq _02326AD4
ldr r1, _02326AE0 ; =OCTAZOOKA_LOWER_ACCURACY_CHANCE
mov r0, r6
ldrsh r2, [r1]
mov r1, r5
mov r4, #1
bl DungeonRandOutcomeUserTargetInteraction
cmp r0, #0
beq _02326AD4
ldr r1, _02326AE4 ; =ATK_STAT_IDX
mov r0, r6
ldr r2, [r1]
mov r1, r5
mov r3, #0
bl LowerHitChanceStat
_02326AD4:
mov r0, r4
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_02326AE0: .word OCTAZOOKA_LOWER_ACCURACY_CHANCE
_02326AE4: .word ATK_STAT_IDX
arm_func_end DoMoveOctazooka
arm_func_start DoMoveFlatter
DoMoveFlatter: ; 0x02326AE8
stmdb sp!, {r3, r4, r5, lr}
mov r2, #1
mov r3, #0
mov r5, r0
mov r4, r1
bl TryInflictConfusedStatus
ldr r1, _02326B20 ; =SPATK_STAT_IDX
mov r0, r5
ldr r2, [r1]
mov r1, r4
mov r3, #1
bl BoostOffensiveStat
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02326B20: .word SPATK_STAT_IDX
arm_func_end DoMoveFlatter
arm_func_start DoMoveWillOWisp
DoMoveWillOWisp: ; 0x02326B24
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
mov r6, r0
mov r5, r1
bl GetFlashFireStatus
movs r4, r0
beq _02326B94
ldr r3, [r5, #0xb4]
#ifdef JAPAN
ldrb r0, [r3, #0x158]
#else
ldrb r0, [r3, #0x15c]
#endif
cmp r0, #0
bne _02326BAC
mov r0, #1
mov r1, r5
mov r2, #0
#ifdef JAPAN
strb r0, [r3, #0x158]
#else
strb r0, [r3, #0x15c]
#endif
bl SubstitutePlaceholderStringTags
cmp r4, #1
bne _02326B80
ldr r2, _02326BB8 ; =0x00000CDD
mov r0, r6
mov r1, r5
bl LogMessageByIdWithPopupCheckUserTarget
b _02326BAC
_02326B80:
ldr r2, _02326BBC ; =0x00000CDC
mov r0, r6
mov r1, r5
bl LogMessageByIdWithPopupCheckUserTarget
b _02326BAC
_02326B94:
mov r2, #0
mov r0, r6
mov r1, r5
mov r3, #1
str r2, [sp]
bl TryInflictBurnStatus
_02326BAC:
mov r0, #1
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
#ifdef JAPAN
_02326BB8: .word 0x00000A1D
_02326BBC: .word 0x00000A1C
#else
_02326BB8: .word 0x00000CDD
_02326BBC: .word 0x00000CDC
#endif
arm_func_end DoMoveWillOWisp
arm_func_start DoMoveReturn
DoMoveReturn: ; 0x02326BC0
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
sub sp, sp, #0x20
mov sb, r0
mov r4, r3
mov r8, r1
mov r7, r2
ldr lr, [sb, #0xb4]
mov r6, #1
mov ip, #0
ldr r3, _02326C98 ; =ov10_022C4C0C
ldr r0, _02326C9C ; =0x000003E7
b _02326C18
_02326BF0:
mov r5, ip, lsl #2
ldrsh r2, [r3, r5]
cmp r2, #0
blt _02326C20
ldrsh r1, [lr, #0xe]
cmp r1, r2
ldrlt r0, _02326CA0 ; =ov10_022C4C0E
ldrltsh r6, [r0, r5]
blt _02326C20
add ip, ip, #1
_02326C18:
cmp ip, r0
blt _02326BF0
_02326C20:
mov r0, r7
bl GetMoveType
mov r5, r0
ldrh r0, [r7, #4]
bl GetMoveCategory
mov r1, r4
mov r4, r0
mov r0, r7
bl GetDamageSourceWrapper
add r3, sp, #0x1c
stmia sp, {r3, r5}
str r4, [sp, #8]
mov r2, r6
str r0, [sp, #0xc]
mov r6, #0
str r6, [sp, #0x10]
mov r3, #1
str r3, [sp, #0x14]
mov r1, r8
mov r0, sb
str r6, [sp, #0x18]
bl CalcDamageFixedWrapper
ldrb r0, [sp, #0x1c]
cmp r0, #0
moveq r0, #1
movne r0, r6
strb r0, [sp, #0x1c]
and r0, r0, #0xff
add sp, sp, #0x20
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_02326C98: .word ov10_022C4C0C
_02326C9C: .word 0x000003E7
_02326CA0: .word ov10_022C4C0E
arm_func_end DoMoveReturn

View File

@@ -82,19 +82,3 @@ _02326DC8:
.align 2, 0
_02326DD4: .word FLAMETHROWER_BURN_CHANCE
arm_func_end DoMoveDamageBurn10
arm_func_start DoMoveExpose
DoMoveExpose: ; 0x02326DD8
stmdb sp!, {r3, lr}
ldrh r3, [r2, #4]
ldr r2, _02326E00 ; =0x0000013B
cmp r3, r2
moveq r2, #0x7a
movne r2, #0x51
mov r3, #0
bl TryInflictExposedStatus
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_02326E00: .word 0x0000013B
arm_func_end DoMoveExpose

View File

@@ -39,192 +39,3 @@ _023279A0:
.align 2, 0
_023279A8: .word RAPID_SPIN_BINDING_REMOVAL
arm_func_end DoMoveRapidSpin
arm_func_start DoMoveSureShot
DoMoveSureShot: ; 0x023279AC
stmdb sp!, {r3, r4, r5, lr}
mov r4, r1
mov r5, r0
ldr r1, _023279E0 ; =SURE_SHOT_TURN_RANGE
mov r0, r4
mov r2, #0
bl CalcStatusDuration
mov r2, r0
mov r0, r5
mov r1, r4
bl TryInflictSureShotStatus
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_023279E0: .word SURE_SHOT_TURN_RANGE
arm_func_end DoMoveSureShot
arm_func_start DoMoveCosmicPower
DoMoveCosmicPower: ; 0x023279E4
stmdb sp!, {r3, r4, r5, lr}
ldr r2, _02327A20 ; =ATK_STAT_IDX
mov r3, #1
ldr r2, [r2]
mov r5, r0
mov r4, r1
bl BoostDefensiveStat
ldr r1, _02327A24 ; =SPATK_STAT_IDX
mov r0, r5
ldr r2, [r1]
mov r1, r4
mov r3, #1
bl BoostDefensiveStat
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02327A20: .word ATK_STAT_IDX
_02327A24: .word SPATK_STAT_IDX
arm_func_end DoMoveCosmicPower
arm_func_start DoMoveSkyAttack
DoMoveSkyAttack: ; 0x02327A28
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
sub sp, sp, #4
mov r6, r2
mov r7, r1
mov r1, r6
mov r8, r0
mov r5, r3
mov r4, #0
bl IsChargingTwoTurnMove
cmp r0, #0
beq _02327AB8
ldr r1, _02327AE8 ; =SKY_ATTACK_DAMAGE_MULTIPLIER
mov r0, r8
ldr r3, [r1]
mov r1, r7
mov r2, r6
str r5, [sp]
bl DealDamage
cmp r0, #0
beq _02327AAC
ldr r1, _02327AEC ; =SKY_ATTACK_CRINGE_CHANCE
mov r0, r8
ldrsh r2, [r1]
mov r1, r7
mov r4, #1
bl DungeonRandOutcomeUserTargetInteraction
cmp r0, #0
beq _02327AAC
mov r2, #0
mov r0, r8
mov r1, r7
mov r3, r2
bl TryInflictCringeStatus
_02327AAC:
mov r0, r8
bl EndTwoTurnMove
b _02327ADC
_02327AB8:
ldr r0, _02327AF0 ; =0x00000CD1
bl StringFromId
str r0, [sp]
mov r0, r8
mov r1, r8
mov r3, r6
mov r2, #3
bl BeginChargedMove
mov r4, #1
_02327ADC:
mov r0, r4
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
.align 2, 0
_02327AE8: .word SKY_ATTACK_DAMAGE_MULTIPLIER
_02327AEC: .word SKY_ATTACK_CRINGE_CHANCE
#ifdef JAPAN
_02327AF0: .word 0x00000A11
#else
_02327AF0: .word 0x00000CD1
#endif
arm_func_end DoMoveSkyAttack
arm_func_start DoMoveDamageFreeze15
DoMoveDamageFreeze15: ; 0x02327AF4
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
str r3, [sp]
mov r3, #0x100
mov r6, r0
mov r5, r1
mov r4, #0
bl DealDamage
cmp r0, #0
beq _02327B4C
ldr r1, _02327B58 ; =POWDER_SNOW_FREEZE_CHANCE
mov r0, r6
ldrsh r2, [r1]
mov r1, r5
mov r4, #1
bl DungeonRandOutcomeUserTargetInteraction
cmp r0, #0
beq _02327B4C
mov r0, r6
mov r1, r5
mov r2, #0
bl TryInflictFrozenStatus
_02327B4C:
mov r0, r4
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_02327B58: .word POWDER_SNOW_FREEZE_CHANCE
arm_func_end DoMoveDamageFreeze15
arm_func_start DoMoveMeteorMash
DoMoveMeteorMash: ; 0x02327B5C
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
str r3, [sp]
mov r3, #0x100
mov r6, r0
#ifdef EUROPE
mov r5, r1
#endif
mov r4, #0
bl DealDamage
cmp r0, #0
beq _02327BCC
ldr r1, _02327BD8 ; =METEOR_MASH_BOOST_ATTACK_CHANCE
mov r0, r6
ldrsh r2, [r1]
#ifdef EUROPE
mov r1, r5
#else
mov r1, r6
#endif
mov r4, #1
bl DungeonRandOutcomeUserTargetInteraction
cmp r0, #0
beq _02327BCC
ldr r0, _02327BDC ; =ATK_STAT_IDX
ldr r5, [r6, #0xb4]
ldr r2, [r0]
mov r0, r6
mov r1, r6
mov r3, r4
bl BoostOffensiveStat
#ifdef JAPAN
ldrb r0, [r5, #0x107]
cmp r0, #1
movlo r0, r4
strlob r0, [r5, #0x107]
#else
ldrb r0, [r5, #0x108]
cmp r0, #1
movlo r0, r4
strlob r0, [r5, #0x108]
#endif
_02327BCC:
mov r0, r4
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_02327BD8: .word METEOR_MASH_BOOST_ATTACK_CHANCE
_02327BDC: .word ATK_STAT_IDX
arm_func_end DoMoveMeteorMash

174
asm/overlay_29_023279E4.s Normal file
View File

@@ -0,0 +1,174 @@
.include "asm/macros.inc"
.include "overlay_29_023279E4.inc"
.text
arm_func_start DoMoveCosmicPower
DoMoveCosmicPower: ; 0x023279E4
stmdb sp!, {r3, r4, r5, lr}
ldr r2, _02327A20 ; =ATK_STAT_IDX
mov r3, #1
ldr r2, [r2]
mov r5, r0
mov r4, r1
bl BoostDefensiveStat
ldr r1, _02327A24 ; =SPATK_STAT_IDX
mov r0, r5
ldr r2, [r1]
mov r1, r4
mov r3, #1
bl BoostDefensiveStat
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_02327A20: .word ATK_STAT_IDX
_02327A24: .word SPATK_STAT_IDX
arm_func_end DoMoveCosmicPower
arm_func_start DoMoveSkyAttack
DoMoveSkyAttack: ; 0x02327A28
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
sub sp, sp, #4
mov r6, r2
mov r7, r1
mov r1, r6
mov r8, r0
mov r5, r3
mov r4, #0
bl IsChargingTwoTurnMove
cmp r0, #0
beq _02327AB8
ldr r1, _02327AE8 ; =SKY_ATTACK_DAMAGE_MULTIPLIER
mov r0, r8
ldr r3, [r1]
mov r1, r7
mov r2, r6
str r5, [sp]
bl DealDamage
cmp r0, #0
beq _02327AAC
ldr r1, _02327AEC ; =SKY_ATTACK_CRINGE_CHANCE
mov r0, r8
ldrsh r2, [r1]
mov r1, r7
mov r4, #1
bl DungeonRandOutcomeUserTargetInteraction
cmp r0, #0
beq _02327AAC
mov r2, #0
mov r0, r8
mov r1, r7
mov r3, r2
bl TryInflictCringeStatus
_02327AAC:
mov r0, r8
bl EndTwoTurnMove
b _02327ADC
_02327AB8:
ldr r0, _02327AF0 ; =0x00000CD1
bl StringFromId
str r0, [sp]
mov r0, r8
mov r1, r8
mov r3, r6
mov r2, #3
bl BeginChargedMove
mov r4, #1
_02327ADC:
mov r0, r4
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
.align 2, 0
_02327AE8: .word SKY_ATTACK_DAMAGE_MULTIPLIER
_02327AEC: .word SKY_ATTACK_CRINGE_CHANCE
#ifdef JAPAN
_02327AF0: .word 0x00000A11
#else
_02327AF0: .word 0x00000CD1
#endif
arm_func_end DoMoveSkyAttack
arm_func_start DoMoveDamageFreeze15
DoMoveDamageFreeze15: ; 0x02327AF4
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
str r3, [sp]
mov r3, #0x100
mov r6, r0
mov r5, r1
mov r4, #0
bl DealDamage
cmp r0, #0
beq _02327B4C
ldr r1, _02327B58 ; =POWDER_SNOW_FREEZE_CHANCE
mov r0, r6
ldrsh r2, [r1]
mov r1, r5
mov r4, #1
bl DungeonRandOutcomeUserTargetInteraction
cmp r0, #0
beq _02327B4C
mov r0, r6
mov r1, r5
mov r2, #0
bl TryInflictFrozenStatus
_02327B4C:
mov r0, r4
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_02327B58: .word POWDER_SNOW_FREEZE_CHANCE
arm_func_end DoMoveDamageFreeze15
arm_func_start DoMoveMeteorMash
DoMoveMeteorMash: ; 0x02327B5C
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
str r3, [sp]
mov r3, #0x100
mov r6, r0
#ifdef EUROPE
mov r5, r1
#endif
mov r4, #0
bl DealDamage
cmp r0, #0
beq _02327BCC
ldr r1, _02327BD8 ; =METEOR_MASH_BOOST_ATTACK_CHANCE
mov r0, r6
ldrsh r2, [r1]
#ifdef EUROPE
mov r1, r5
#else
mov r1, r6
#endif
mov r4, #1
bl DungeonRandOutcomeUserTargetInteraction
cmp r0, #0
beq _02327BCC
ldr r0, _02327BDC ; =ATK_STAT_IDX
ldr r5, [r6, #0xb4]
ldr r2, [r0]
mov r0, r6
mov r1, r6
mov r3, r4
bl BoostOffensiveStat
#ifdef JAPAN
ldrb r0, [r5, #0x107]
cmp r0, #1
movlo r0, r4
strlob r0, [r5, #0x107]
#else
ldrb r0, [r5, #0x108]
cmp r0, #1
movlo r0, r4
strlob r0, [r5, #0x108]
#endif
_02327BCC:
mov r0, r4
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_02327BD8: .word METEOR_MASH_BOOST_ATTACK_CHANCE
_02327BDC: .word ATK_STAT_IDX
arm_func_end DoMoveMeteorMash

View File

@@ -558,53 +558,3 @@ DoMoveTripleKick: ; 0x02329F78
.align 2, 0
_02329FB0: .word TRIPLE_KICK_SUCCESSIVE_HITS
arm_func_end DoMoveTripleKick
arm_func_start DoMoveSport
DoMoveSport: ; 0x02329FB4
stmdb sp!, {r3, lr}
ldrh r0, [r2, #4]
cmp r0, #0xd4
bne _02329FD0
mov r0, #0
bl ActivateSportCondition
b _02329FD8
_02329FD0:
mov r0, #1
bl ActivateSportCondition
_02329FD8:
mov r0, #1
ldmia sp!, {r3, pc}
arm_func_end DoMoveSport
arm_func_start DoMoveMudSlap
DoMoveMudSlap: ; 0x02329FE0
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
str r3, [sp]
mov r3, #0x100
mov r6, r0
mov r5, r1
mov r4, #0
bl DealDamage
cmp r0, #0
beq _0232A03C
mov r2, r4
mov r0, r6
mov r1, r5
mov r4, #1
bl DungeonRandOutcomeUserTargetInteraction
cmp r0, #0
beq _0232A03C
ldr r1, _0232A048 ; =ATK_STAT_IDX
mov r0, r6
ldr r2, [r1]
mov r1, r5
mov r3, #0
bl LowerHitChanceStat
_0232A03C:
mov r0, r4
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_0232A048: .word ATK_STAT_IDX
arm_func_end DoMoveMudSlap

37
asm/overlay_29_02329FE0.s Normal file
View File

@@ -0,0 +1,37 @@
.include "asm/macros.inc"
.include "overlay_29_02329FE0.inc"
.text
arm_func_start DoMoveMudSlap
DoMoveMudSlap: ; 0x02329FE0
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
str r3, [sp]
mov r3, #0x100
mov r6, r0
mov r5, r1
mov r4, #0
bl DealDamage
cmp r0, #0
beq _0232A03C
mov r2, r4
mov r0, r6
mov r1, r5
mov r4, #1
bl DungeonRandOutcomeUserTargetInteraction
cmp r0, #0
beq _0232A03C
ldr r1, _0232A048 ; =ATK_STAT_IDX
mov r0, r6
ldr r2, [r1]
mov r1, r5
mov r3, #0
bl LowerHitChanceStat
_0232A03C:
mov r0, r4
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
.align 2, 0
_0232A048: .word ATK_STAT_IDX
arm_func_end DoMoveMudSlap

View File

@@ -1,21 +1,8 @@
.include "asm/macros.inc"
.include "overlay_29_0232A500.inc"
.include "overlay_29_0232A524.inc"
.text
arm_func_start DoMoveDamage__0232A500
DoMoveDamage__0232A500: ; 0x0232A500
stmdb sp!, {r3, lr}
str r3, [sp]
mov r3, #0x100
bl DealDamage
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end DoMoveDamage__0232A500
arm_func_start DoMoveSuperpower
DoMoveSuperpower: ; 0x0232A524
stmdb sp!, {r4, r5, lr}

View File

@@ -1,17 +0,0 @@
.include "asm/macros.inc"
.include "overlay_29_0232B8B0.inc"
.text
arm_func_start DoMoveDamage__0232B8B0
DoMoveDamage__0232B8B0: ; 0x0232B8B0
stmdb sp!, {r3, lr}
str r3, [sp]
mov r3, #0x100
bl DealDamage
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end DoMoveDamage__0232B8B0

View File

@@ -1,35 +0,0 @@
.include "asm/macros.inc"
.include "overlay_29_0232CE50.inc"
.text
arm_func_start DoMoveVacuumCut
DoMoveVacuumCut: ; 0x0232CE50
stmdb sp!, {r3, lr}
ldr ip, _0232CE78 ; =ov10_022C456C
str r3, [sp]
ldrsh r3, [ip]
bl ov29_02332F18
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
.align 2, 0
_0232CE78: .word ov10_022C456C
arm_func_end DoMoveVacuumCut
arm_func_start DoMoveReviver
DoMoveReviver: ; 0x0232CE7C
stmdb sp!, {r3, lr}
ldr r2, _0232CE90 ; =0x00000F09
bl LogMessageByIdWithPopupCheckUserTarget
mov r0, #0
ldmia sp!, {r3, pc}
.align 2, 0
#ifdef JAPAN
_0232CE90: .word 0x00000C4B
#else
_0232CE90: .word 0x00000F09
#endif
arm_func_end DoMoveReviver

19
asm/overlay_29_0232CE7C.s Normal file
View File

@@ -0,0 +1,19 @@
.include "asm/macros.inc"
.include "overlay_29_0232CE7C.inc"
.text
arm_func_start DoMoveReviver
DoMoveReviver: ; 0x0232CE7C
stmdb sp!, {r3, lr}
ldr r2, _0232CE90 ; =0x00000F09
bl LogMessageByIdWithPopupCheckUserTarget
mov r0, #0
ldmia sp!, {r3, pc}
.align 2, 0
#ifdef JAPAN
_0232CE90: .word 0x00000C4B
#else
_0232CE90: .word 0x00000F09
#endif
arm_func_end DoMoveReviver

View File

@@ -1,21 +1,8 @@
.include "asm/macros.inc"
.include "overlay_29_0232DD88.inc"
.include "overlay_29_0232DDAC.inc"
.text
arm_func_start DoMoveDamage__0232DD88
DoMoveDamage__0232DD88: ; 0x0232DD88
stmdb sp!, {r3, lr}
str r3, [sp]
mov r3, #0x100
bl DealDamage
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end DoMoveDamage__0232DD88
arm_func_start DoMoveWorrySeed
DoMoveWorrySeed: ; 0x0232DDAC
stmdb sp!, {r4, r5, r6, lr}

View File

@@ -1,26 +1,8 @@
.include "asm/macros.inc"
.include "overlay_29_0232E0F8.inc"
.include "overlay_29_0232E130.inc"
.text
arm_func_start DoMoveFeint
DoMoveFeint: ; 0x0232E0F8
stmdb sp!, {r3, r4, r5, lr}
str r3, [sp]
mov r3, #0x100
mov r5, r0
mov r4, r1
bl DealDamage
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r3, r4, r5, pc}
mov r0, r5
mov r1, r4
bl EndProtectStatus
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
arm_func_end DoMoveFeint
arm_func_start DoMoveFlareBlitz
DoMoveFlareBlitz: ; 0x0232E130
stmdb sp!, {r3, r4, r5, r6, r7, lr}

View File

@@ -84,60 +84,3 @@ DoMoveLunarDance: ; 0x0232E368
_0232E3C8: .word HEALING_WISH_HP_RESTORATION
_0232E3CC: .word 0x000003E7
arm_func_end DoMoveLunarDance
arm_func_start DoMoveMiracleEye
DoMoveMiracleEye: ; 0x0232E3D0
stmdb sp!, {r3, r4, r5, lr}
mov r2, #0
mov r5, r0
mov r4, r1
bl TryInflictMiracleEyeStatus
mov r2, #1
mov r0, r5
mov r1, r4
mov r3, r2
bl ResetHitChanceStat
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
arm_func_end DoMoveMiracleEye
arm_func_start DoMoveWakeUpSlap
DoMoveWakeUpSlap: ; 0x0232E400
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
mov r5, r1
ldr ip, [r5, #0xb4]
mov r6, r0
ldrb ip, [ip, #0xbd]
cmp ip, #1
cmpne ip, #3
cmpne ip, #5
str r3, [sp]
bne _0232E468
mov r0, r6
mov r1, r5
mov r3, #0x200
bl DealDamage
cmp r0, #0
movne r4, #1
moveq r4, #0
mov r2, #0
mov r0, r6
mov r1, r5
mov r3, #1
str r2, [sp]
and r4, r4, #0xff
bl EndSleepClassStatus
b _0232E480
_0232E468:
mov r3, #0x100
bl DealDamage
cmp r0, #0
movne r0, #1
moveq r0, #0
and r4, r0, #0xff
_0232E480:
mov r0, r4
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
arm_func_end DoMoveWakeUpSlap

45
asm/overlay_29_0232E400.s Normal file
View File

@@ -0,0 +1,45 @@
.include "asm/macros.inc"
.include "overlay_29_0232E400.inc"
.text
arm_func_start DoMoveWakeUpSlap
DoMoveWakeUpSlap: ; 0x0232E400
stmdb sp!, {r3, r4, r5, r6, lr}
sub sp, sp, #4
mov r5, r1
ldr ip, [r5, #0xb4]
mov r6, r0
ldrb ip, [ip, #0xbd]
cmp ip, #1
cmpne ip, #3
cmpne ip, #5
str r3, [sp]
bne _0232E468
mov r0, r6
mov r1, r5
mov r3, #0x200
bl DealDamage
cmp r0, #0
movne r4, #1
moveq r4, #0
mov r2, #0
mov r0, r6
mov r1, r5
mov r3, #1
str r2, [sp]
and r4, r4, #0xff
bl EndSleepClassStatus
b _0232E480
_0232E468:
mov r3, #0x100
bl DealDamage
cmp r0, #0
movne r0, #1
moveq r0, #0
and r4, r0, #0xff
_0232E480:
mov r0, r4
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, pc}
arm_func_end DoMoveWakeUpSlap

View File

@@ -180,20 +180,3 @@ _0232E6D4:
.align 2, 0
_0232E6DC: .word SPATK_STAT_IDX
arm_func_end DoMoveDracoMeteor
arm_func_start DoMoveRockPolish
DoMoveRockPolish: ; 0x0232E6E0
stmdb sp!, {r3, r4, r5, lr}
mov r2, #0
mov r5, r0
mov r4, r1
mov r3, r2
bl BoostSpeedOneStage
mov r0, r5
mov r1, r4
mov r2, #0
mov r3, #1
bl BoostSpeedOneStage
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
arm_func_end DoMoveRockPolish

File diff suppressed because it is too large Load Diff

897
asm/overlay_29_0233A248.s Normal file
View File

@@ -0,0 +1,897 @@
.include "asm/macros.inc"
.include "overlay_29_0233A248.inc"
.text
arm_func_start ov29_0233A248
ov29_0233A248: ; 0x0233A248
stmdb sp!, {r4, lr}
mov r4, r0
mov r1, r4
mov r0, #0
bl ov29_0233A0E8
cmp r4, #0
bne _0233A274
bl GetMinimapData
add r0, r0, #0xe000
mov r1, #0
strb r1, [r0, #0x447]
_0233A274:
cmp r4, #1
ldmneia sp!, {r4, pc}
bl GetMinimapData
add r0, r0, #0xe000
mov r1, #0
strb r1, [r0, #0x448]
ldmia sp!, {r4, pc}
arm_func_end ov29_0233A248
arm_func_start InitWeirdMinimapMatrix
InitWeirdMinimapMatrix: ; 0x0233A290
stmdb sp!, {r3, r4, r5, lr}
bl GetMinimapData
add r1, r0, #0xe000
ldrb r1, [r1, #0x446]
cmp r1, #0
ldmeqia sp!, {r3, r4, r5, pc}
mov r4, #0
mov r3, r4
mov ip, r4
mov r2, #0x1c
_0233A2B8:
mla r5, r4, r2, r0
mov lr, ip
_0233A2C0:
add r1, r5, lr
add r1, r1, #0xe000
add lr, lr, #1
strb r3, [r1]
cmp lr, #0x38
blt _0233A2C0
add r4, r4, #1
cmp r4, #0x20
blt _0233A2B8
add r0, r0, #0xe000
strb r3, [r0, #0x446]
ldmia sp!, {r3, r4, r5, pc}
arm_func_end InitWeirdMinimapMatrix
arm_func_start InitMinimapDisplayTile
InitMinimapDisplayTile: ; 0x0233A2F0
ldr r3, [r0]
ldmia r1, {r2, ip}
and r2, r3, r2
orr r2, ip, r2
str r2, [r0]
ldr r3, [r0, #4]
ldr r2, [r1, #8]
ldr ip, [r1, #0xc]
and r2, r3, r2
orr r2, ip, r2
str r2, [r0, #4]
ldr r3, [r0, #8]
ldr r2, [r1, #0x10]
ldr ip, [r1, #0x14]
and r2, r3, r2
orr r2, ip, r2
str r2, [r0, #8]
ldr r3, [r0, #0xc]
ldr r2, [r1, #0x18]
ldr ip, [r1, #0x1c]
and r2, r3, r2
orr r2, ip, r2
str r2, [r0, #0xc]
ldr r3, [r0, #0x10]
ldr r2, [r1, #0x20]
ldr ip, [r1, #0x24]
and r2, r3, r2
orr r2, ip, r2
str r2, [r0, #0x10]
ldr r3, [r0, #0x14]
ldr r2, [r1, #0x28]
ldr ip, [r1, #0x2c]
and r2, r3, r2
orr r2, ip, r2
str r2, [r0, #0x14]
ldr r3, [r0, #0x18]
ldr r2, [r1, #0x30]
ldr ip, [r1, #0x34]
and r2, r3, r2
orr r2, ip, r2
str r2, [r0, #0x18]
ldr r3, [r0, #0x1c]
ldr r2, [r1, #0x38]
ldr ip, [r1, #0x3c]
and r2, r3, r2
orr r2, ip, r2
str r2, [r0, #0x1c]
ldr r3, [r0, #0x20]
ldr r2, [r1, #0x40]
ldr ip, [r1, #0x44]
and r2, r3, r2
orr r2, ip, r2
str r2, [r0, #0x20]
ldr r3, [r0, #0x24]
ldr r2, [r1, #0x48]
ldr ip, [r1, #0x4c]
and r2, r3, r2
orr r2, ip, r2
str r2, [r0, #0x24]
ldr r3, [r0, #0x28]
ldr r2, [r1, #0x50]
ldr ip, [r1, #0x54]
and r2, r3, r2
orr r2, ip, r2
str r2, [r0, #0x28]
ldr r3, [r0, #0x2c]
ldr r2, [r1, #0x58]
ldr ip, [r1, #0x5c]
and r2, r3, r2
orr r2, ip, r2
str r2, [r0, #0x2c]
ldr r3, [r0, #0x30]
ldr r2, [r1, #0x60]
ldr ip, [r1, #0x64]
and r2, r3, r2
orr r2, ip, r2
str r2, [r0, #0x30]
ldr r3, [r0, #0x34]
ldr r2, [r1, #0x68]
ldr ip, [r1, #0x6c]
and r2, r3, r2
orr r2, ip, r2
str r2, [r0, #0x34]
ldr r3, [r0, #0x38]
ldr r2, [r1, #0x70]
ldr ip, [r1, #0x74]
and r2, r3, r2
orr r2, ip, r2
str r2, [r0, #0x38]
ldr r3, [r0, #0x3c]
ldr r2, [r1, #0x78]
ldr ip, [r1, #0x7c]
and r1, r3, r2
orr r1, ip, r1
str r1, [r0, #0x3c]
bx lr
arm_func_end InitMinimapDisplayTile
arm_func_start ov29_0233A470
ov29_0233A470: ; 0x0233A470
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
mov r4, #0
add r2, r0, #0x21c0
add r5, r0, #0xe000
add ip, r2, #0xc000
ldr r0, _0233A544 ; =ov29_0235377C
mov r6, r4
b _0233A534
_0233A490:
add lr, ip, r4, lsl #4
add r2, lr, r1, lsl #2
ldr r3, [r2, #4]
ldr sb, [ip, r4, lsl #4]
ldr r8, [r0, r1, lsl #2]
ldr r7, [r3]
add r2, sb, r8
str r7, [sb, r8]
ldr r7, [r3, #4]
add r4, r4, #1
str r7, [r2, #4]
ldr r7, [r3, #8]
str r7, [r2, #8]
ldr r7, [r3, #0xc]
str r7, [r2, #0xc]
ldr r7, [r3, #0x10]
str r7, [r2, #0x10]
ldr r7, [r3, #0x14]
str r7, [r2, #0x14]
ldr r7, [r3, #0x18]
str r7, [r2, #0x18]
ldr r7, [r3, #0x1c]
str r7, [r2, #0x1c]
ldr r7, [r3, #0x20]
str r7, [r2, #0x20]
ldr r7, [r3, #0x24]
str r7, [r2, #0x24]
ldr r7, [r3, #0x28]
str r7, [r2, #0x28]
ldr r7, [r3, #0x2c]
str r7, [r2, #0x2c]
ldr r7, [r3, #0x30]
str r7, [r2, #0x30]
ldr r7, [r3, #0x34]
str r7, [r2, #0x34]
ldr r7, [r3, #0x38]
str r7, [r2, #0x38]
ldr r3, [r3, #0x3c]
str r3, [r2, #0x3c]
ldr r2, [lr, #0xc]
strb r6, [r2]
_0233A534:
ldr r2, [r5, #0x440]
cmp r4, r2
blt _0233A490
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
.align 2, 0
_0233A544: .word ov29_0235377C
arm_func_end ov29_0233A470
arm_func_start ov29_0233A548
ov29_0233A548: ; 0x0233A548
stmdb sp!, {r3, r4, r5, r6, r7, lr}
ldr r2, _0233A5E0 ; =MAP_COLOR_TABLE
ldr r7, _0233A5E4 ; =ov29_0235376C
mov r6, r1
add r5, r2, r0, lsl #2
mov r4, #0
_0233A560:
cmp r4, #7
bne _0233A5B0
cmp r6, #0
bne _0233A58C
add r0, r4, #0x100
mov r1, r0, lsl #0x10
mov r0, r5
mov r2, r6
mov r1, r1, asr #0x10
bl ov29_0233A5E8
b _0233A5D0
_0233A58C:
ldr r1, [r7, #8]
add r0, r4, #0x100
ldr r3, [r1, #4]
mov r1, r0, lsl #0x10
mov r2, r6
add r0, r3, r4, lsl #2
mov r1, r1, asr #0x10
bl ov29_0233A5E8
b _0233A5D0
_0233A5B0:
ldr r1, [r7, #8]
add r0, r4, #0x100
ldr r3, [r1, #4]
mov r1, r0, lsl #0x10
mov r2, r6
add r0, r3, r4, lsl #2
mov r1, r1, asr #0x10
bl ov29_0233A5E8
_0233A5D0:
add r4, r4, #1
cmp r4, #0x10
blt _0233A560
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_0233A5E0: .word MAP_COLOR_TABLE
_0233A5E4: .word ov29_0235376C
arm_func_end ov29_0233A548
arm_func_start ov29_0233A5E8
ov29_0233A5E8: ; 0x0233A5E8
stmdb sp!, {r4, lr}
ldr ip, _0233A620 ; =ov29_0235352C
mov r3, #0xc
ldr ip, [ip]
mov lr, r0
add r0, ip, #0x20
mla r4, r2, r3, r0
ldr r0, [r4, #8]
mov r2, r1
mov r1, lr
bl sub_0200C008
ldr r0, [r4, #8]
bl sub_0200A174
ldmia sp!, {r4, pc}
.align 2, 0
_0233A620: .word ov29_0235352C
arm_func_end ov29_0233A5E8
arm_func_start LoadFixedRoomDataVeneer
LoadFixedRoomDataVeneer: ; 0x0233A624
ldr ip, _0233A62C ; =LoadFixedRoomData
bx ip
.align 2, 0
_0233A62C: .word LoadFixedRoomData
arm_func_end LoadFixedRoomDataVeneer
arm_func_start UnloadFixedRoomData
UnloadFixedRoomData: ; 0x0233A630
stmdb sp!, {r3, lr}
bl ov29_02343DD8
ldr r0, _0233A650 ; =DUNGEON_PTR
mov r1, #0
ldr r0, [r0]
add r0, r0, #0x12000
#ifdef JAPAN
str r1, [r0, #0xa00]
#else
str r1, [r0, #0xaa4]
#endif
ldmia sp!, {r3, pc}
.align 2, 0
_0233A650: .word DUNGEON_PTR
arm_func_end UnloadFixedRoomData
arm_func_start IsNormalFloor
IsNormalFloor: ; 0x0233A654
stmdb sp!, {r3, lr}
bl IsHiddenStairsFloor
cmp r0, #0
bne _0233A6C4
bl IsGoldenChamber
cmp r0, #0
bne _0233A6C4
mov r0, #0xb
bl IsCurrentMissionType
cmp r0, #0
bne _0233A6C4
mov r0, #0xa
mov r1, #6
bl IsCurrentMissionTypeExact
cmp r0, #0
bne _0233A6C4
mov r0, #0xc
bl IsCurrentMissionType
cmp r0, #0
bne _0233A6C4
ldr r0, _0233A6D4 ; =DUNGEON_PTR
ldr r0, [r0]
add r0, r0, #0x4000
#ifdef JAPAN
ldrb r0, [r0, #0x36]
#else
ldrb r0, [r0, #0xda]
#endif
cmp r0, #0
beq _0233A6CC
cmp r0, #0xa5
bhs _0233A6CC
_0233A6C4:
mov r0, #0
ldmia sp!, {r3, pc}
_0233A6CC:
mov r0, #1
ldmia sp!, {r3, pc}
.align 2, 0
_0233A6D4: .word DUNGEON_PTR
arm_func_end IsNormalFloor
arm_func_start GenerateFloor
GenerateFloor: ; 0x0233A6D8
#ifdef JAPAN
#define GENERATE_FLOOR_OFFSET -0xA4
#else
#define GENERATE_FLOOR_OFFSET 0
#endif
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x54
ldr r2, _0233AE64 ; =DUNGEON_PTR
mov r8, #0
ldr r3, [r2]
ldr r0, _0233AE68 ; =0x000286B2
add r1, r3, #0x12000
str r8, [r1, #0xaa4 + GENERATE_FLOOR_OFFSET]
ldr r1, [r2]
add sb, r3, r0
add r0, r1, #0x3f00
strh r8, [r0, #0xc2 + GENERATE_FLOOR_OFFSET]
bl LoadFixedRoomDataVeneer
bl ov29_02343DC4
ldr r1, _0233AE64 ; =DUNGEON_PTR
ldr r2, _0233AE6C ; =FLOOR_GENERATION_STATUS
ldr r1, [r1]
mov r3, r8
add r1, r1, #0x12000
str r0, [r1, #0xaa4 + GENERATE_FLOOR_OFFSET]
strb r3, [r2, #3]
strb r3, [r2, #1]
strb r3, [r2, #7]
bl ResetHiddenStairsSpawn
bl IsOutlawMonsterHouseFloor
ldr r1, _0233AE64 ; =DUNGEON_PTR
ldr r3, _0233AE6C ; =FLOOR_GENERATION_STATUS
ldr r2, [r1]
mov r1, sb
add r2, r2, #0xc4 + GENERATE_FLOOR_OFFSET
strb r0, [r3, #8]
add r0, r2, #0x4000
bl GetHiddenStairsType
ldr r1, _0233AE64 ; =DUNGEON_PTR
ldr r2, _0233AE6C ; =FLOOR_GENERATION_STATUS
ldr r1, [r1]
str r0, [r2, #0x2c]
add r0, r1, #0x4000
ldrsh r1, [r0, #0xd4 + GENERATE_FLOOR_OFFSET]
ldr r0, _0233AE70 ; =SECONDARY_TERRAIN_TYPES
ldrb r0, [r0, r1]
mov r1, #0xff
cmp r0, #2
moveq r2, #1
ldr r0, _0233AE6C ; =FLOOR_GENERATION_STATUS
movne r2, r8
strb r2, [r0, #4]
strb r1, [r0, #2]
mov r1, #0
strb r1, [r0, #6]
ldrb r0, [sb, #7]
bl GetFinalKecleonShopSpawnChance
ldr r1, _0233AE6C ; =FLOOR_GENERATION_STATUS
strh r0, [r1, #0xc]
ldrb r0, [sb, #8]
strh r0, [r1, #0x10]
ldrb r0, [r1, #8]
cmp r0, #0
movne r0, #0x64
strneh r0, [r1, #0x10]
ldr r0, _0233AE6C ; =FLOOR_GENERATION_STATUS
mov r1, #1
strb r1, [r0]
sub r1, r1, #2
str r1, [r0, #0x30]
str r1, [r0, #0x38]
str r1, [r0, #0x34]
str r1, [r0, #0x3c]
bl ResetFloor
bl IsNormalFloor
cmp r0, #0
bne _0233A810
ldr r0, _0233AE64 ; =DUNGEON_PTR
mov r1, #0
ldr r0, [r0]
add r0, r0, #0x700
strh r1, [r0, #0x86]
b _0233A828
_0233A810:
ldrb r0, [sb, #6]
bl abs
ldr r1, _0233AE64 ; =DUNGEON_PTR
ldr r1, [r1]
add r1, r1, #0x700
strh r0, [r1, #0x86]
_0233A828:
ldr r3, _0233AE64 ; =DUNGEON_PTR
mov r7, #0
ldr r0, [r3]
ldr r1, _0233AE74 ; =0x00012AFA
add r0, r0, #0x4000
strb r7, [r0, #0xc5 + GENERATE_FLOOR_OFFSET]
ldr r0, [r3]
ldr r2, _0233AE6C ; =FLOOR_GENERATION_STATUS
add r0, r0, #0x4000
strb r7, [r0, #0xc6 + GENERATE_FLOOR_OFFSET]
ldr r0, [r3]
strh r7, [r0, r1]
ldr r0, [r3]
add r0, r0, #0x4000
str r7, [r0, #0xcc + GENERATE_FLOOR_OFFSET]
ldrb r0, [sb, #0xc]
str r0, [r2, #0x18]
b _0233AD3C
_0233A870:
ldr r1, _0233AE64 ; =DUNGEON_PTR
mov r0, #0
str r0, [sp]
ldr r0, [r1]
add r0, r0, #0xc4 + GENERATE_FLOOR_OFFSET
add r0, r0, #0x4000
bl ResetImportantSpawnPositions
mov r6, #0
mvn r5, #0
ldr r4, _0233AE64 ; =DUNGEON_PTR
b _0233AC50
_0233A89C:
ldr r0, [sp]
cmp r0, #0
beq _0233A8C8
ldr r0, [r4]
add r0, r0, #0x4000
ldrb r0, [r0, #0xda + GENERATE_FLOOR_OFFSET]
bl IsNotFullFloorFixedRoom
cmp r0, #0
beq _0233AC58
mov r0, #0
str r0, [sp]
_0233A8C8:
ldr r0, [r4]
cmp r6, #1
add r0, r0, #0x4000
strh r6, [r0, #0xde + GENERATE_FLOOR_OFFSET]
ldrge r0, _0233AE6C ; =FLOOR_GENERATION_STATUS
movge r1, #0
strge r1, [r0, #0x18]
ldr r0, _0233AE6C ; =FLOOR_GENERATION_STATUS
mov r1, #0
strb r1, [r0, #5]
strh r5, [r0, #0x20]
strh r5, [r0, #0x22]
bl ResetFloor
ldr r0, [r4]
add r0, r0, #0xcc00
strh r5, [r0, #0xe0 + GENERATE_FLOOR_OFFSET]
ldr r0, [r4]
add r0, r0, #0xcc00
strh r5, [r0, #0xe2 + GENERATE_FLOOR_OFFSET]
ldr r0, [r4]
add r1, r0, #0x4000
mov r0, #0
strb r0, [r1, #0xc4 + GENERATE_FLOOR_OFFSET]
ldr r0, [r4]
add r0, r0, #0x4000
ldrb r0, [r0, #0xda + GENERATE_FLOOR_OFFSET]
cmp r0, #0
beq _0233A954
mov r1, sb
bl GenerateFixedRoom
cmp r0, #0
bne _0233AC58
mov r0, #1
str r0, [sp]
b _0233AB78
_0233A954:
mov r0, #2
ldrb sl, [sb]
mov fp, #0x20
str r0, [sp, #4]
str r0, [sp, #8]
b _0233A9DC
_0233A96C:
cmp sl, #8
mov r0, #2
beq _0233A998
mov r1, #9
bl DungeonRandRange
str r0, [sp, #8]
mov r0, #2
mov r1, #8
bl DungeonRandRange
str r0, [sp, #4]
b _0233A9B4
_0233A998:
mov r1, #5
bl DungeonRandRange
str r0, [sp, #8]
mov r0, #2
mov r1, #4
bl DungeonRandRange
str r0, [sp, #4]
_0233A9B4:
ldr r0, [sp, #8]
cmp r0, #6
ldrle r0, [sp, #4]
cmple r0, #4
ble _0233A9E4
subs fp, fp, #1
moveq r0, #4
streq r0, [sp, #8]
streq r0, [sp, #4]
beq _0233A9E4
_0233A9DC:
cmp fp, #0
bne _0233A96C
_0233A9E4:
ldr r1, [sp, #8]
mov r0, #0x38
bl _s32_div_f
cmp r0, #7
movle r0, #1
strle r0, [sp, #8]
ldr r1, [sp, #4]
mov r0, #0x20
bl _s32_div_f
ldr r1, [r4]
cmp r0, #7
add r2, r1, #0x4000
mov r1, #0
strb r1, [r2, #0xc4 + GENERATE_FLOOR_OFFSET]
ldr r1, [r4]
movle r0, #1
add r2, r1, #0x4000
mov r1, #0xff
strb r1, [r2, #0xc9 + GENERATE_FLOOR_OFFSET]
ldr r1, _0233AE6C ; =FLOOR_GENERATION_STATUS
strle r0, [sp, #4]
and r0, sl, #0xf
cmp r0, #0xb
str sl, [r1, #0x28]
addls pc, pc, r0, lsl #2
b _0233AAD4
_0233AA4C: ; jump table
b _0233AAD4 ; case 0
b _0233AA7C ; case 1
b _0233AAEC ; case 2
b _0233AB04 ; case 3
b _0233AB14 ; case 4
b _0233AB24 ; case 5
b _0233AB3C ; case 6
b _0233AB4C ; case 7
b _0233AAD4 ; case 8
b _0233AB58 ; case 9
b _0233AB64 ; case 10
b _0233AAA8 ; case 11
_0233AA7C:
mov r0, #2
bl DungeonRandInt
ldr r1, _0233AE6C ; =FLOOR_GENERATION_STATUS
mov r2, #1
strb r2, [r1, #6]
add r1, r0, #2
mov r0, #4
mov r2, sb
bl GenerateStandardFloor
mov r8, #1
b _0233AB78
_0233AAA8:
mov r0, #2
bl DungeonRandInt
ldr r1, _0233AE6C ; =FLOOR_GENERATION_STATUS
mov r2, #2
strb r2, [r1, #6]
add r1, r0, #2
mov r0, #4
mov r2, sb
bl GenerateStandardFloor
mov r8, #1
b _0233AB78
_0233AAD4:
ldr r0, [sp, #8]
ldr r1, [sp, #4]
mov r2, sb
bl GenerateStandardFloor
mov r8, #1
b _0233AB78
_0233AAEC:
bl GenerateOneRoomMonsterHouseFloor
ldr r0, [r4]
add r1, r0, #0x4000
mov r0, #1
strb r0, [r1, #0xc4 + GENERATE_FLOOR_OFFSET]
b _0233AB78
_0233AB04:
mov r0, sb
bl GenerateOuterRingFloor
mov r8, #1
b _0233AB78
_0233AB14:
mov r0, sb
bl GenerateCrossroadsFloor
mov r8, #1
b _0233AB78
_0233AB24:
bl GenerateTwoRoomsWithMonsterHouseFloor
ldr r0, [r4]
add r1, r0, #0x4000
mov r0, #1
strb r0, [r1, #0xc4 + GENERATE_FLOOR_OFFSET]
b _0233AB78
_0233AB3C:
mov r0, sb
bl GenerateLineFloor
mov r8, #1
b _0233AB78
_0233AB4C:
mov r0, sb
bl GenerateCrossFloor
b _0233AB78
_0233AB58:
mov r0, sb
bl GenerateBeetleFloor
b _0233AB78
_0233AB64:
ldr r0, [sp, #8]
ldr r1, [sp, #4]
mov r2, sb
bl GenerateOuterRoomsFloor
mov r8, #1
_0233AB78:
bl ResetInnerBoundaryTileRows
bl EnsureImpassableTilesAreWalls
ldr r0, _0233AE6C ; =FLOOR_GENERATION_STATUS
ldrb r0, [r0, #5]
cmp r0, #0
bne _0233AC4C
mov sl, #0
mov r2, sl
_0233AB98:
mov r1, #0
add r0, sp, #0x14
strb r1, [r0, r2]
add r2, r2, #1
cmp r2, #0x40
blt _0233AB98
mov r0, r1
str r0, [sp, #0xc]
_0233ABB8:
mov fp, #0
_0233ABBC:
ldr r0, [sp, #0xc]
mov r1, fp
bl GetTile
str r0, [sp, #0x10]
bl GetTileTerrain
cmp r0, #1
bne _0233ABFC
ldr r0, [sp, #0x10]
ldrb r2, [r0, #7]
cmp r2, #0xf0
bhi _0233ABFC
cmp r2, #0x40
movlo r1, #1
addlo r0, sp, #0x14
add sl, sl, #1
strlob r1, [r0, r2]
_0233ABFC:
add fp, fp, #1
cmp fp, #0x20
blt _0233ABBC
ldr r0, [sp, #0xc]
add r0, r0, #1
str r0, [sp, #0xc]
cmp r0, #0x38
blt _0233ABB8
mov r1, #0
mov r2, r1
_0233AC24:
add r0, sp, #0x14
ldrb r0, [r0, r2]
add r2, r2, #1
cmp r0, #0
addne r1, r1, #1
cmp r2, #0x40
blt _0233AC24
cmp sl, #0x1e
cmpge r1, #2
bge _0233AC58
_0233AC4C:
add r6, r6, #1
_0233AC50:
cmp r6, #0xa
blt _0233A89C
_0233AC58:
cmp r6, #0xa
bne _0233AC88
ldr r0, _0233AE6C ; =FLOOR_GENERATION_STATUS
mvn r1, #0
strh r1, [r0, #0x20]
strh r1, [r0, #0x22]
bl GenerateOneRoomMonsterHouseFloor
ldr r0, _0233AE64 ; =DUNGEON_PTR
mov r1, #1
ldr r0, [r0]
add r0, r0, #0x4000
strb r1, [r0, #0xc4 + GENERATE_FLOOR_OFFSET]
_0233AC88:
bl FinalizeJunctions
cmp r8, #0
beq _0233ACA0
mov r1, sb
mov r0, #1
bl GenerateSecondaryTerrainFormations
_0233ACA0:
bl DungeonRand100
ldrb r1, [sb, #0x19]
cmp r0, r1
movlt r0, #1
movge r0, #0
and r4, r0, #0xff
mov r0, sb
mov r1, r4
bl MarkNonEnemySpawns
mov r0, sb
mov r1, r4
bl MarkEnemySpawns
bl ResolveInvalidSpawns
ldr r0, _0233AE64 ; =DUNGEON_PTR
mvn r1, #0
ldr r0, [r0]
add r0, r0, #0xcc00
ldrsh r2, [r0, #0xe0 + GENERATE_FLOOR_OFFSET]
cmp r2, r1
ldrnesh r0, [r0, #0xe2 + GENERATE_FLOOR_OFFSET]
cmpne r0, r1
beq _0233AD38
bl GetFloorType
cmp r0, #1
beq _0233AD44
ldr r0, _0233AE64 ; =DUNGEON_PTR
mvn r2, #0
ldr r0, [r0]
add r1, r0, #0xcc00
ldrsh r0, [r1, #0xe4 + GENERATE_FLOOR_OFFSET]
cmp r0, r2
ldrnesh r1, [r1, #0xe6 + GENERATE_FLOOR_OFFSET]
cmpne r1, r2
beq _0233AD38
mov r2, #0
bl StairsAlwaysReachable
cmp r0, #0
bne _0233AD44
_0233AD38:
add r7, r7, #1
_0233AD3C:
cmp r7, #0xa
blt _0233A870
_0233AD44:
cmp r7, #0xa
bne _0233AD98
ldr r0, _0233AE6C ; =FLOOR_GENERATION_STATUS
mvn r1, #0
strh r1, [r0, #0x20]
strh r1, [r0, #0x22]
bl ResetFloor
bl GenerateOneRoomMonsterHouseFloor
ldr r0, _0233AE64 ; =DUNGEON_PTR
mov r1, #1
ldr r0, [r0]
add r0, r0, #0x4000
strb r1, [r0, #0xc4 + GENERATE_FLOOR_OFFSET]
bl FinalizeJunctions
mov r0, sb
mov r1, #0
bl MarkNonEnemySpawns
mov r0, sb
mov r1, #0
bl MarkEnemySpawns
bl ResolveInvalidSpawns
_0233AD98:
ldr r0, _0233AE6C ; =FLOOR_GENERATION_STATUS
ldrsh r1, [r0, #0x20]
cmp r1, #0
ldrgesh r0, [r0, #0x22]
cmpge r0, #0
blt _0233ADCC
bl GetKecleonIdToSpawnByFloor
ldr r1, _0233AE6C ; =FLOOR_GENERATION_STATUS
mov r2, r0
ldrsh r0, [r1, #0x20]
ldrsh r1, [r1, #0x22]
mov r3, #0
bl MarkShopkeeperSpawn
_0233ADCC:
ldr r0, _0233AE6C ; =FLOOR_GENERATION_STATUS
ldr r0, [r0, #0x30]
cmp r0, #0
ldrlt r0, _0233AE64 ; =DUNGEON_PTR
movlt r1, #0
blt _0233ADF4
mov r0, sb
bl ov29_023427E4
ldr r0, _0233AE64 ; =DUNGEON_PTR
mov r1, #1
_0233ADF4:
ldr r0, [r0]
mov r2, #0x38
add r0, r0, #0x4000
strb r1, [r0, #0xc6 + GENERATE_FLOOR_OFFSET]
mov r0, #0
mov r1, r0
mov r3, #0x20
bl FlagHallwayJunctions
ldr r0, _0233AE6C ; =FLOOR_GENERATION_STATUS
ldrb r0, [r0, #4]
cmp r0, #0
beq _0233AE28
bl ConvertSecondaryTerrainToChasms
_0233AE28:
ldr r0, _0233AE64 ; =DUNGEON_PTR
ldr r0, [r0]
add r0, r0, #0x4000
ldrsh r0, [r0, #0xd4 + GENERATE_FLOOR_OFFSET]
sub r0, r0, #0x1a
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
cmp r0, #1
bhi _0233AE58
bl ConvertWallsToChasms
_0233AE58:
bl UnloadFixedRoomData
add sp, sp, #0x54
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_0233AE64: .word DUNGEON_PTR
_0233AE68: .word 0x000286B2 + GENERATE_FLOOR_OFFSET
_0233AE6C: .word FLOOR_GENERATION_STATUS
_0233AE70: .word SECONDARY_TERRAIN_TYPES
_0233AE74: .word 0x00012AFA + GENERATE_FLOOR_OFFSET
arm_func_end GenerateFloor

6802
asm/overlay_29_0233AE84.s Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -87,786 +87,3 @@ GenerateStandardItem: ; 0x02344BD0
.align 2, 0
_02344BE0: .word GenerateItem
arm_func_end GenerateStandardItem
arm_func_start GenerateCleanItem
GenerateCleanItem: ; 0x02344BE4
ldr ip, _02344BF4 ; =GenerateItem
mov r2, #0
mov r3, #2
bx ip
.align 2, 0
_02344BF4: .word GenerateItem
arm_func_end GenerateCleanItem
arm_func_start ov29_02344BF8
ov29_02344BF8: ; 0x02344BF8
stmdb sp!, {r4, lr}
sub sp, sp, #0x48
ldr r3, _02344C48 ; =ov29_023531CC
add r2, sp, #0
mov r4, r0
mov r1, #0x24
_02344C10:
ldrh r0, [r3], #2
subs r1, r1, #1
strh r0, [r2], #2
bne _02344C10
bl DungeonRand16Bit
mov r1, #0xc
bl _s32_div_f
add r2, sp, #0
mov r0, #6
smlabb r0, r1, r0, r2
mov r1, r4, lsl #1
ldrsh r0, [r1, r0]
add sp, sp, #0x48
ldmia sp!, {r4, pc}
.align 2, 0
_02344C48: .word ov29_023531CC
arm_func_end ov29_02344BF8
arm_func_start ov29_02344C4C
ov29_02344C4C: ; 0x02344C4C
#ifdef JAPAN
#define OV29_02344C4C_OFFSET -0xA4
#else
#define OV29_02344C4C_OFFSET 0
#endif
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x20
mov sb, #0
str sb, [sp, #8]
mov r8, sb
bl IsDestinationFloorWithItem
cmp r0, #0
ldr r1, _02344E7C ; =DUNGEON_PTR
ldr r0, _02344E80 ; =0x0002C9E8
ldr r1, [r1]
movne sb, #1
ldrsh r0, [r1, r0]
cmp r0, #0
movne r0, #1
strne r0, [sp, #8]
mov r0, #0x38
bl DungeonRandInt
mov r6, r0
mov r0, #0x20
bl DungeonRandInt
ldr r1, _02344E7C ; =DUNGEON_PTR
mov r5, #0
ldr r1, [r1]
ldr r2, _02344E84 ; =ov29_023531A0
add r1, r1, #0x3f00
strh r5, [r1, #0xc0 + OV29_02344C4C_OFFSET]
ldrh r3, [r2]
ldrh r1, [r2, #2]
mov r7, r0
strh r3, [sp, #0x10]
strh r1, [sp, #0x12]
_02344CC8:
add r7, r7, #1
cmp r7, #0x20
moveq r7, #0
mov r0, r7, lsl #0x10
mov r0, r0, asr #0x10
mov r4, #0
str r0, [sp, #0xc]
_02344CE4:
add r6, r6, #1
cmp r6, #0x38
mov r0, #0
moveq r6, #0
str r0, [sp, #4]
mov r0, r6
mov r1, r7
bl GetTile
ldrh r1, [r0]
tst r1, #0x200
bne _02344E40
ldrh r1, [r0, #2]
tst r1, #2
beq _02344E40
ldr r1, [sp, #0xc]
strh r6, [sp, #0x1a]
strh r1, [sp, #0x1c]
ldrh r0, [r0]
tst r0, #0x20
movne r0, #1
strne r0, [sp]
movne sl, r0
bne _02344D80
tst r0, #3
moveq r0, #0
streq r0, [sp]
moveq sl, #3
beq _02344D80
tst r0, #0x40
mov r0, #0
strne r0, [sp]
movne sl, #2
bne _02344D80
cmp sb, #0
cmpeq r8, #0
str r0, [sp]
mov sl, r0
addeq r8, r8, #1
beq _02344E40
_02344D80:
cmp sl, #0
bne _02344DB0
cmp sb, #0
beq _02344DB0
cmp r8, #0
bne _02344DB0
bl GetItemToRetrieve
mov fp, r0
mov r0, #2
mov sb, #0
str r0, [sp, #4]
b _02344DEC
_02344DB0:
cmp sl, #0
bne _02344DE0
ldr r0, [sp, #8]
cmp r0, #0
beq _02344DE0
ldr r0, _02344E7C ; =DUNGEON_PTR
ldr r1, [r0]
mov r0, #0
str r0, [sp, #8]
ldr r0, _02344E80 ; =0x0002C9E8
ldrsh fp, [r1, r0]
b _02344DEC
_02344DE0:
mov r0, sl
bl GetItemIdToSpawn
mov fp, r0
_02344DEC:
mov r0, fp
bl IsShoppableItem
cmp r0, #0
moveq r0, #0
streq r0, [sp]
ldr r3, [sp, #4]
mov r1, fp
add r0, sp, #0x14
mov r2, #0
bl GenerateItem
ldr r0, [sp]
add r1, sp, #0x14
cmp r0, #0
ldrneb r0, [sp, #0x14]
mov r2, #1
orrne r0, r0, #2
strneb r0, [sp, #0x14]
add r0, sp, #0x1a
bl SpawnItem
cmp sl, #0
addeq r8, r8, #1
_02344E40:
add r4, r4, #1
cmp r4, #0x38
blt _02344CE4
add r5, r5, #1
cmp r5, #0x20
blt _02344CC8
ldr r0, _02344E7C ; =DUNGEON_PTR
ldr r0, [r0]
add r0, r0, #0x3f00
ldrsh r2, [r0, #0xc0 + OV29_02344C4C_OFFSET]
ldrsh r1, [r0, #0xc2 + OV29_02344C4C_OFFSET]
add r1, r2, r1
strh r1, [r0, #0xc0 + OV29_02344C4C_OFFSET]
add sp, sp, #0x20
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_02344E7C: .word DUNGEON_PTR
_02344E80: .word 0x0002C9E8 + OV29_02344C4C_OFFSET
_02344E84: .word ov29_023531A0
arm_func_end ov29_02344C4C
arm_func_start ov29_02344E88
ov29_02344E88: ; 0x02344E88
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xc
mov r4, r0
mov r0, #2
bl DungeonRngSetSecondary
ldrsh r0, [r4]
ldrsh r1, [r4, #2]
bl DungeonRandRange
mov r8, r0
cmp r8, #0
ble _02344FF8
mov r4, #0
mov r1, r4
mov r0, #0x1c00
bl MemAlloc
mov sl, r0
mov sb, r4
mov r6, r4
_02344ED0:
mov r0, sb, lsl #0x10
mov r7, r6
mov r5, r0, asr #0x10
_02344EDC:
mov r0, r7
mov r1, sb
bl GetTile
ldrb r1, [r0, #7]
cmp r1, #0xff
beq _02344F2C
ldrh r1, [r0]
tst r1, #0x200
bne _02344F2C
tst r1, #1
beq _02344F2C
ldr r1, [r0, #0xc]
cmp r1, #0
ldreq r0, [r0, #0x10]
cmpeq r0, #0
moveq r1, r4, lsl #2
addeq r0, sl, r4, lsl #2
streqh r7, [sl, r1]
streqh r5, [r0, #2]
addeq r4, r4, #1
_02344F2C:
add r7, r7, #1
cmp r7, #0x38
blt _02344EDC
add sb, sb, #1
cmp sb, #0x20
blt _02344ED0
sub r6, r4, #1
mov r5, #0
b _02344F9C
_02344F50:
mov r0, r4
bl DungeonRandInt
mov fp, r5, lsl #2
add r1, sl, r5, lsl #2
mov sb, r0, lsl #2
ldrh r7, [sl, fp]
ldrh r3, [r1, #2]
ldrh r2, [sl, sb]
strh r7, [sp]
strh r3, [sp, #2]
strh r2, [sl, fp]
add r7, sl, r0, lsl #2
ldrh r3, [r7, #2]
ldrh r2, [sp]
ldrh r0, [sp, #2]
strh r3, [r1, #2]
strh r2, [sl, sb]
strh r0, [r7, #2]
add r5, r5, #1
_02344F9C:
cmp r5, r6
blt _02344F50
mov sb, #0
add r7, sp, #4
mov r6, #0xb7
mov r5, sb
mov r4, #2
mov fp, #1
b _02344FE8
_02344FC0:
mov r0, r7
mov r1, r6
mov r2, r5
mov r3, r4
bl GenerateItem
mov r1, r7
mov r2, fp
add r0, sl, sb, lsl #2
bl SpawnItem
add sb, sb, #1
_02344FE8:
cmp sb, r8
blt _02344FC0
mov r0, sl
bl MemFree
_02344FF8:
bl DungeonRngSetPrimary
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end ov29_02344E88
arm_func_start ov29_02345004
ov29_02345004: ; 0x02345004
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
ldrb r0, [r5]
mov r4, #0
tst r0, #0x80
bicne r0, r0, #0x80
strneb r0, [r5]
mov r0, r5
movne r4, #1
bl AddItemToBagNoHeld
cmp r0, #0
beq _02345050
cmp r4, #0
ldrneb r0, [r5]
orrne r0, r0, #0x80
strneb r0, [r5]
#ifdef EUROPE
mov r0, #0
#endif
bl ov29_022FB920
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
_02345050:
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ov29_02345004
arm_func_start TryLeaderItemPickUp
TryLeaderItemPickUp: ; 0x02345058
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x198
mov sl, r0
mov sb, r1
bl GetLeader
mov r4, r0
ldrsh r0, [sl]
ldrsh r1, [sl, #2]
ldr r7, [r4, #0xb4]
bl GetTile
ldr r0, [r0, #0x10]
cmp r0, #0
beq _02345508
ldr r1, [r0]
cmp r1, #3
bne _02345508
bl GetItemInfo
ldrb r1, [r7, #0x4e]
mov r5, r0
mov r0, r4
cmp r1, #0
bne _02345108
mov r1, r5
mov r2, sb
bl ov29_02348DD8
cmp r0, #0
bne _02345508
cmp sb, #0
beq _02345508
mov r0, #0
mov r1, #0x40000
bl SetPreprocessorArgsIdVal
ldr r2, _02345510 ; =ov29_023531BC
mov r1, r5
mov r0, #0
bl SubstitutePlaceholderItemTags
mov r0, #0
mov r1, r4
mov r2, r0
bl SubstitutePlaceholderStringTags
ldr r1, _02345514 ; =0x00000BD2
mov r0, r4
bl LogMessageByIdWithPopupCheckUser
b _02345508
_02345108:
mov r1, #1
bl ShouldMonsterRunAwayAndShowEffect
cmp r0, #0
beq _0234515C
cmp sb, #0
beq _02345508
mov r0, #0
mov r1, #0x40000
bl SetPreprocessorArgsIdVal
ldr r2, _02345510 ; =ov29_023531BC
mov r1, r5
mov r0, #0
bl SubstitutePlaceholderItemTags
mov r0, #0
mov r1, r4
mov r2, r0
bl SubstitutePlaceholderStringTags
ldr r1, _02345518 ; =0x00000BD3
mov r0, r4
bl LogMessageByIdWithPopupCheckUser
b _02345508
_0234515C:
ldrsh r0, [r5, #4]
bl GetItemCategoryVeneer
cmp r0, #6
bne _023451EC
mov r0, r4
mov r1, #0x1b
bl IqSkillIsEnabled
cmp r0, #0
ldrneb r0, [r5]
orrne r0, r0, #0x20
strneb r0, [r5]
mov r0, r5
bl GetMoneyQuantity
mov r6, r0
ldr r0, _0234551C ; =0x00001308
bl PlaySeByIdIfNotSilence
mov r0, #0x62
bl AdvanceFrame
mov r0, r6
bl AddMoneyCarried
mov r0, #0
mov r1, #0x40000
bl SetPreprocessorArgsIdVal
ldr r2, _02345510 ; =ov29_023531BC
mov r0, #0
mov r1, r5
bl SubstitutePlaceholderItemTags
mov r0, sl
mov r1, #1
bl RemoveGroundItem
ldr r1, _02345520 ; =0x00000BD6
mov r0, r4
bl LogMessageByIdWithPopupCheckUser
ldrsh r0, [r5, #4]
bl DisplayItemTip
b _02345508
_023451EC:
ldr r0, _02345524 ; =DUNGEON_PTR
ldr r0, [r0]
ldrb r0, [r0, #0x75b]
cmp r0, #0
beq _02345238
mov r8, #0
add r6, sp, #0
add fp, sp, #0xcc
_0234520C:
mov r0, r8, lsl #0x10
mov r0, r0, asr #0x10
bl GetItemAtIdx
str r0, [r6, r8, lsl #2]
str r8, [fp, r8, lsl #2]
add r8, r8, #1
cmp r8, #0x32
blt _0234520C
bl GetCurrentBagCapacity
mov r6, r0
b _0234524C
_02345238:
add r1, r7, #0x62
mvn r0, #0
str r1, [sp]
str r0, [sp, #0xcc]
mov r6, #1
_0234524C:
ldrsh ip, [r5, #4]
cmp ip, #0xb
bge _02345378
ldrb r0, [r5]
tst r0, #2
bne _02345378
mvn r8, #0
mov fp, r8
mov lr, #0
and r0, r0, #8
b _023452D8
_02345278:
add r1, sp, #0
ldr r1, [r1, lr, lsl #2]
ldrb r1, [r1]
tst r1, #1
movne r1, #1
moveq r1, #0
tst r1, #0xff
beq _023452D4
add r1, sp, #0
ldr r3, [r1, lr, lsl #2]
ldrb r2, [r3]
tst r2, #2
ldreqsh r1, [r3, #4]
cmpeq ip, r1
andeq r1, r2, #8
cmpeq r0, r1
bne _023452D4
ldrh r1, [r3, #2]
cmp r1, #0x63
beq _023452D4
cmp fp, r1
movlt fp, r1
movlt r8, lr
_023452D4:
add lr, lr, #1
_023452D8:
cmp lr, r6
blt _02345278
mvn r0, #0
cmp r8, r0
beq _02345378
add r1, sp, #0
ldr r2, [r1, r8, lsl #2]
ldrh r0, [r5, #2]
ldrh r1, [r2, #2]
add r0, r1, r0
cmp r0, #0x63
movge r0, #0x63
strh r0, [r2, #2]
bl ov29_02347040
mov r0, #0
mov r1, #0x40000
bl SetPreprocessorArgsIdVal
ldr r2, _02345510 ; =ov29_023531BC
mov r1, r5
mov r0, #0
bl SubstitutePlaceholderItemTags
mov r0, sl
mov r1, #1
bl RemoveGroundItem
ldr r0, _02345528 ; =0x00001304
bl PlaySeByIdIfNotSilence
add r0, sp, #0xcc
ldr r0, [r0, r8, lsl #2]
cmp r0, #0
bge _02345360
ldr r1, _0234552C ; =0x00000BD4
mov r0, r4
bl LogMessageByIdWithPopupCheckUser
b _0234536C
_02345360:
ldr r1, _02345530 ; =0x00000BD5
mov r0, r4
bl LogMessageByIdWithPopupCheckUser
_0234536C:
ldrsh r0, [r5, #4]
bl DisplayItemTip
b _02345508
_02345378:
mov r8, #0
add r3, sp, #0
mov r0, r8
mov r1, #1
b _023453AC
_0234538C:
ldr r2, [r3, r8, lsl #2]
ldrb r2, [r2]
tst r2, #1
movne r2, r1
moveq r2, r0
tst r2, #0xff
beq _023453B4
add r8, r8, #1
_023453AC:
cmp r8, r6
blt _0234538C
_023453B4:
mov r0, r4
mov r1, r5
mov r2, sb
bl ov29_02348DD8
cmp r0, #0
bne _02345508
cmp r8, r6
bne _02345418
cmp sb, #0
beq _02345508
mov r0, #0
mov r1, #0x40000
bl SetPreprocessorArgsIdVal
ldr r2, _02345510 ; =ov29_023531BC
mov r1, r5
mov r0, #0
bl SubstitutePlaceholderItemTags
mov r0, #0
mov r1, r4
mov r2, r0
bl SubstitutePlaceholderStringTags
ldr r1, _02345514 ; =0x00000BD2
mov r0, r4
bl LogMessageByIdWithPopupCheckUser
b _02345508
_02345418:
ldr r0, _02345528 ; =0x00001304
bl PlaySeByIdIfNotSilence
add r0, sp, #0xcc
ldr r0, [r0, r8, lsl #2]
cmp r0, #0
bge _02345480
ldrh r2, [r5]
mov r0, #0
mov r1, #0x40000
strh r2, [r7, #0x62]
ldrh r2, [r5, #2]
strh r2, [r7, #0x64]
ldrh r2, [r5, #4]
strh r2, [r7, #0x66]
bl SetPreprocessorArgsIdVal
ldr r2, _02345510 ; =ov29_023531BC
mov r1, r5
mov r0, #0
bl SubstitutePlaceholderItemTags
mov r0, sl
mov r1, #1
bl RemoveGroundItem
ldr r1, _0234552C ; =0x00000BD4
mov r0, r4
bl LogMessageByIdWithPopupCheckUser
b _02345500
_02345480:
mov r0, r5
bl ov29_02348D3C
mov r6, r0
mov r0, r5
bl ov29_02345004
cmp r0, #0
mov r0, #0
beq _023454BC
mov r1, r4
mov r2, r0
bl SubstitutePlaceholderStringTags
ldr r1, _02345534 ; =0x00000BD7
mov r0, r4
bl LogMessageByIdWithPopupCheckUser
b _02345500
_023454BC:
mov r1, #0x40000
bl SetPreprocessorArgsIdVal
ldr r2, _02345510 ; =ov29_023531BC
mov r1, r5
mov r0, #0
bl SubstitutePlaceholderItemTags
mov r0, sl
mov r1, #1
bl RemoveGroundItem
ldr r1, _02345530 ; =0x00000BD5
mov r0, r4
bl LogMessageByIdWithPopupCheckUser
mov r0, r5
mov r1, r6
bl ov29_02348ECC
cmp r0, #0
bne _02345508
_02345500:
ldrsh r0, [r5, #4]
bl DisplayItemTip
_02345508:
add sp, sp, #0x198
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
#ifdef JAPAN
#define TRY_LEADER_ITEM_PICK_UP_OFFSET -0x2C1
#else
#define TRY_LEADER_ITEM_PICK_UP_OFFSET 0
#endif
_02345510: .word ov29_023531BC
_02345514: .word 0x00000BD2 + TRY_LEADER_ITEM_PICK_UP_OFFSET
_02345518: .word 0x00000BD3 + TRY_LEADER_ITEM_PICK_UP_OFFSET
_0234551C: .word 0x00001308
_02345520: .word 0x00000BD6 + TRY_LEADER_ITEM_PICK_UP_OFFSET
_02345524: .word DUNGEON_PTR
_02345528: .word 0x00001304
_0234552C: .word 0x00000BD4 + TRY_LEADER_ITEM_PICK_UP_OFFSET
_02345530: .word 0x00000BD5 + TRY_LEADER_ITEM_PICK_UP_OFFSET
_02345534: .word 0x00000BD7 + TRY_LEADER_ITEM_PICK_UP_OFFSET
arm_func_end TryLeaderItemPickUp
arm_func_start SpawnItem
SpawnItem: ; 0x02345538
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r5, r2
bl SpawnItemEntity
movs r4, r0
moveq r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
ldrh r0, [r6]
ldr r1, [r4, #0xb4]
strh r0, [r1]
ldrh r0, [r6, #2]
strh r0, [r1, #2]
ldrh r0, [r6, #4]
strh r0, [r1, #4]
ldr r1, [r4, #0xb4]
ldrb r0, [r1]
bic r0, r0, #0x10
strb r0, [r1]
ldr r1, [r4, #0xb4]
ldrb r0, [r1]
bic r0, r0, #0x20
strb r0, [r1]
ldrb r0, [r6, #1]
cmp r0, #0
beq _023455A8
mov r0, r6
bl RemoveEquivItemNoHole
_023455A8:
mov r0, #1
strb r0, [r4, #0x20]
ldrsh r0, [r7]
ldrsh r1, [r7, #2]
bl GetTileSafe
ldr r1, _02345690 ; =ov29_023537B0
str r4, [r0, #0x10]
ldrb r1, [r1]
cmp r1, #0
bne _0234563C
ldrh r0, [r0]
tst r0, #0x20
beq _0234563C
ldrsh r0, [r6, #4]
bl IsShoppableItem
cmp r0, #0
beq _0234563C
ldrb r0, [r6]
tst r0, #2
beq _02345620
cmp r5, #0
beq _0234563C
mov r0, r6
bl GetActualBuyPrice
ldr r1, _02345694 ; =DUNGEON_PTR
ldr r2, [r1]
ldr r1, [r2, #0x7bc]
add r0, r1, r0
str r0, [r2, #0x7bc]
b _0234563C
_02345620:
mov r0, r6
bl GetActualSellPrice
ldr r1, _02345694 ; =DUNGEON_PTR
ldr r2, [r1]
ldr r1, [r2, #0x7c0]
add r0, r1, r0
str r0, [r2, #0x7c0]
_0234563C:
mov r4, #0
ldr r5, _02345694 ; =DUNGEON_PTR
mov r6, r4
_02345648:
ldr r0, [r5]
add r0, r0, r6, lsl #2
add r0, r0, #0x12000
#ifdef JAPAN
ldr r0, [r0, #0xb24]
#else
ldr r0, [r0, #0xbc8]
#endif
bl EntityIsValid__02345698
cmp r0, #0
addne r4, r6, #1
add r6, r6, #1
cmp r6, #0x40
blt _02345648
ldr r0, _02345694 ; =DUNGEON_PTR
ldr r0, [r0]
add r0, r0, #0x3f00
#ifdef JAPAN
strh r4, [r0, #0x1c]
#else
strh r4, [r0, #0xc0]
#endif
bl RemoveEmptyItemsInBag
#ifdef EUROPE
mov r0, #0
#endif
bl ov29_022FB920
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02345690: .word ov29_023537B0
_02345694: .word DUNGEON_PTR
arm_func_end SpawnItem

777
asm/overlay_29_02344BF8.s Normal file
View File

@@ -0,0 +1,777 @@
.include "asm/macros.inc"
.include "overlay_29_02344BF8.inc"
.text
arm_func_start ov29_02344BF8
ov29_02344BF8: ; 0x02344BF8
stmdb sp!, {r4, lr}
sub sp, sp, #0x48
ldr r3, _02344C48 ; =ov29_023531CC
add r2, sp, #0
mov r4, r0
mov r1, #0x24
_02344C10:
ldrh r0, [r3], #2
subs r1, r1, #1
strh r0, [r2], #2
bne _02344C10
bl DungeonRand16Bit
mov r1, #0xc
bl _s32_div_f
add r2, sp, #0
mov r0, #6
smlabb r0, r1, r0, r2
mov r1, r4, lsl #1
ldrsh r0, [r1, r0]
add sp, sp, #0x48
ldmia sp!, {r4, pc}
.align 2, 0
_02344C48: .word ov29_023531CC
arm_func_end ov29_02344BF8
arm_func_start ov29_02344C4C
ov29_02344C4C: ; 0x02344C4C
#ifdef JAPAN
#define OV29_02344C4C_OFFSET -0xA4
#else
#define OV29_02344C4C_OFFSET 0
#endif
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x20
mov sb, #0
str sb, [sp, #8]
mov r8, sb
bl IsDestinationFloorWithItem
cmp r0, #0
ldr r1, _02344E7C ; =DUNGEON_PTR
ldr r0, _02344E80 ; =0x0002C9E8
ldr r1, [r1]
movne sb, #1
ldrsh r0, [r1, r0]
cmp r0, #0
movne r0, #1
strne r0, [sp, #8]
mov r0, #0x38
bl DungeonRandInt
mov r6, r0
mov r0, #0x20
bl DungeonRandInt
ldr r1, _02344E7C ; =DUNGEON_PTR
mov r5, #0
ldr r1, [r1]
ldr r2, _02344E84 ; =ov29_023531A0
add r1, r1, #0x3f00
strh r5, [r1, #0xc0 + OV29_02344C4C_OFFSET]
ldrh r3, [r2]
ldrh r1, [r2, #2]
mov r7, r0
strh r3, [sp, #0x10]
strh r1, [sp, #0x12]
_02344CC8:
add r7, r7, #1
cmp r7, #0x20
moveq r7, #0
mov r0, r7, lsl #0x10
mov r0, r0, asr #0x10
mov r4, #0
str r0, [sp, #0xc]
_02344CE4:
add r6, r6, #1
cmp r6, #0x38
mov r0, #0
moveq r6, #0
str r0, [sp, #4]
mov r0, r6
mov r1, r7
bl GetTile
ldrh r1, [r0]
tst r1, #0x200
bne _02344E40
ldrh r1, [r0, #2]
tst r1, #2
beq _02344E40
ldr r1, [sp, #0xc]
strh r6, [sp, #0x1a]
strh r1, [sp, #0x1c]
ldrh r0, [r0]
tst r0, #0x20
movne r0, #1
strne r0, [sp]
movne sl, r0
bne _02344D80
tst r0, #3
moveq r0, #0
streq r0, [sp]
moveq sl, #3
beq _02344D80
tst r0, #0x40
mov r0, #0
strne r0, [sp]
movne sl, #2
bne _02344D80
cmp sb, #0
cmpeq r8, #0
str r0, [sp]
mov sl, r0
addeq r8, r8, #1
beq _02344E40
_02344D80:
cmp sl, #0
bne _02344DB0
cmp sb, #0
beq _02344DB0
cmp r8, #0
bne _02344DB0
bl GetItemToRetrieve
mov fp, r0
mov r0, #2
mov sb, #0
str r0, [sp, #4]
b _02344DEC
_02344DB0:
cmp sl, #0
bne _02344DE0
ldr r0, [sp, #8]
cmp r0, #0
beq _02344DE0
ldr r0, _02344E7C ; =DUNGEON_PTR
ldr r1, [r0]
mov r0, #0
str r0, [sp, #8]
ldr r0, _02344E80 ; =0x0002C9E8
ldrsh fp, [r1, r0]
b _02344DEC
_02344DE0:
mov r0, sl
bl GetItemIdToSpawn
mov fp, r0
_02344DEC:
mov r0, fp
bl IsShoppableItem
cmp r0, #0
moveq r0, #0
streq r0, [sp]
ldr r3, [sp, #4]
mov r1, fp
add r0, sp, #0x14
mov r2, #0
bl GenerateItem
ldr r0, [sp]
add r1, sp, #0x14
cmp r0, #0
ldrneb r0, [sp, #0x14]
mov r2, #1
orrne r0, r0, #2
strneb r0, [sp, #0x14]
add r0, sp, #0x1a
bl SpawnItem
cmp sl, #0
addeq r8, r8, #1
_02344E40:
add r4, r4, #1
cmp r4, #0x38
blt _02344CE4
add r5, r5, #1
cmp r5, #0x20
blt _02344CC8
ldr r0, _02344E7C ; =DUNGEON_PTR
ldr r0, [r0]
add r0, r0, #0x3f00
ldrsh r2, [r0, #0xc0 + OV29_02344C4C_OFFSET]
ldrsh r1, [r0, #0xc2 + OV29_02344C4C_OFFSET]
add r1, r2, r1
strh r1, [r0, #0xc0 + OV29_02344C4C_OFFSET]
add sp, sp, #0x20
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_02344E7C: .word DUNGEON_PTR
_02344E80: .word 0x0002C9E8 + OV29_02344C4C_OFFSET
_02344E84: .word ov29_023531A0
arm_func_end ov29_02344C4C
arm_func_start ov29_02344E88
ov29_02344E88: ; 0x02344E88
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0xc
mov r4, r0
mov r0, #2
bl DungeonRngSetSecondary
ldrsh r0, [r4]
ldrsh r1, [r4, #2]
bl DungeonRandRange
mov r8, r0
cmp r8, #0
ble _02344FF8
mov r4, #0
mov r1, r4
mov r0, #0x1c00
bl MemAlloc
mov sl, r0
mov sb, r4
mov r6, r4
_02344ED0:
mov r0, sb, lsl #0x10
mov r7, r6
mov r5, r0, asr #0x10
_02344EDC:
mov r0, r7
mov r1, sb
bl GetTile
ldrb r1, [r0, #7]
cmp r1, #0xff
beq _02344F2C
ldrh r1, [r0]
tst r1, #0x200
bne _02344F2C
tst r1, #1
beq _02344F2C
ldr r1, [r0, #0xc]
cmp r1, #0
ldreq r0, [r0, #0x10]
cmpeq r0, #0
moveq r1, r4, lsl #2
addeq r0, sl, r4, lsl #2
streqh r7, [sl, r1]
streqh r5, [r0, #2]
addeq r4, r4, #1
_02344F2C:
add r7, r7, #1
cmp r7, #0x38
blt _02344EDC
add sb, sb, #1
cmp sb, #0x20
blt _02344ED0
sub r6, r4, #1
mov r5, #0
b _02344F9C
_02344F50:
mov r0, r4
bl DungeonRandInt
mov fp, r5, lsl #2
add r1, sl, r5, lsl #2
mov sb, r0, lsl #2
ldrh r7, [sl, fp]
ldrh r3, [r1, #2]
ldrh r2, [sl, sb]
strh r7, [sp]
strh r3, [sp, #2]
strh r2, [sl, fp]
add r7, sl, r0, lsl #2
ldrh r3, [r7, #2]
ldrh r2, [sp]
ldrh r0, [sp, #2]
strh r3, [r1, #2]
strh r2, [sl, sb]
strh r0, [r7, #2]
add r5, r5, #1
_02344F9C:
cmp r5, r6
blt _02344F50
mov sb, #0
add r7, sp, #4
mov r6, #0xb7
mov r5, sb
mov r4, #2
mov fp, #1
b _02344FE8
_02344FC0:
mov r0, r7
mov r1, r6
mov r2, r5
mov r3, r4
bl GenerateItem
mov r1, r7
mov r2, fp
add r0, sl, sb, lsl #2
bl SpawnItem
add sb, sb, #1
_02344FE8:
cmp sb, r8
blt _02344FC0
mov r0, sl
bl MemFree
_02344FF8:
bl DungeonRngSetPrimary
add sp, sp, #0xc
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end ov29_02344E88
arm_func_start ov29_02345004
ov29_02345004: ; 0x02345004
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
ldrb r0, [r5]
mov r4, #0
tst r0, #0x80
bicne r0, r0, #0x80
strneb r0, [r5]
mov r0, r5
movne r4, #1
bl AddItemToBagNoHeld
cmp r0, #0
beq _02345050
cmp r4, #0
ldrneb r0, [r5]
orrne r0, r0, #0x80
strneb r0, [r5]
#ifdef EUROPE
mov r0, #0
#endif
bl ov29_022FB920
mov r0, #0
ldmia sp!, {r3, r4, r5, pc}
_02345050:
mov r0, #1
ldmia sp!, {r3, r4, r5, pc}
arm_func_end ov29_02345004
arm_func_start TryLeaderItemPickUp
TryLeaderItemPickUp: ; 0x02345058
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x198
mov sl, r0
mov sb, r1
bl GetLeader
mov r4, r0
ldrsh r0, [sl]
ldrsh r1, [sl, #2]
ldr r7, [r4, #0xb4]
bl GetTile
ldr r0, [r0, #0x10]
cmp r0, #0
beq _02345508
ldr r1, [r0]
cmp r1, #3
bne _02345508
bl GetItemInfo
ldrb r1, [r7, #0x4e]
mov r5, r0
mov r0, r4
cmp r1, #0
bne _02345108
mov r1, r5
mov r2, sb
bl ov29_02348DD8
cmp r0, #0
bne _02345508
cmp sb, #0
beq _02345508
mov r0, #0
mov r1, #0x40000
bl SetPreprocessorArgsIdVal
ldr r2, _02345510 ; =ov29_023531BC
mov r1, r5
mov r0, #0
bl SubstitutePlaceholderItemTags
mov r0, #0
mov r1, r4
mov r2, r0
bl SubstitutePlaceholderStringTags
ldr r1, _02345514 ; =0x00000BD2
mov r0, r4
bl LogMessageByIdWithPopupCheckUser
b _02345508
_02345108:
mov r1, #1
bl ShouldMonsterRunAwayAndShowEffect
cmp r0, #0
beq _0234515C
cmp sb, #0
beq _02345508
mov r0, #0
mov r1, #0x40000
bl SetPreprocessorArgsIdVal
ldr r2, _02345510 ; =ov29_023531BC
mov r1, r5
mov r0, #0
bl SubstitutePlaceholderItemTags
mov r0, #0
mov r1, r4
mov r2, r0
bl SubstitutePlaceholderStringTags
ldr r1, _02345518 ; =0x00000BD3
mov r0, r4
bl LogMessageByIdWithPopupCheckUser
b _02345508
_0234515C:
ldrsh r0, [r5, #4]
bl GetItemCategoryVeneer
cmp r0, #6
bne _023451EC
mov r0, r4
mov r1, #0x1b
bl IqSkillIsEnabled
cmp r0, #0
ldrneb r0, [r5]
orrne r0, r0, #0x20
strneb r0, [r5]
mov r0, r5
bl GetMoneyQuantity
mov r6, r0
ldr r0, _0234551C ; =0x00001308
bl PlaySeByIdIfNotSilence
mov r0, #0x62
bl AdvanceFrame
mov r0, r6
bl AddMoneyCarried
mov r0, #0
mov r1, #0x40000
bl SetPreprocessorArgsIdVal
ldr r2, _02345510 ; =ov29_023531BC
mov r0, #0
mov r1, r5
bl SubstitutePlaceholderItemTags
mov r0, sl
mov r1, #1
bl RemoveGroundItem
ldr r1, _02345520 ; =0x00000BD6
mov r0, r4
bl LogMessageByIdWithPopupCheckUser
ldrsh r0, [r5, #4]
bl DisplayItemTip
b _02345508
_023451EC:
ldr r0, _02345524 ; =DUNGEON_PTR
ldr r0, [r0]
ldrb r0, [r0, #0x75b]
cmp r0, #0
beq _02345238
mov r8, #0
add r6, sp, #0
add fp, sp, #0xcc
_0234520C:
mov r0, r8, lsl #0x10
mov r0, r0, asr #0x10
bl GetItemAtIdx
str r0, [r6, r8, lsl #2]
str r8, [fp, r8, lsl #2]
add r8, r8, #1
cmp r8, #0x32
blt _0234520C
bl GetCurrentBagCapacity
mov r6, r0
b _0234524C
_02345238:
add r1, r7, #0x62
mvn r0, #0
str r1, [sp]
str r0, [sp, #0xcc]
mov r6, #1
_0234524C:
ldrsh ip, [r5, #4]
cmp ip, #0xb
bge _02345378
ldrb r0, [r5]
tst r0, #2
bne _02345378
mvn r8, #0
mov fp, r8
mov lr, #0
and r0, r0, #8
b _023452D8
_02345278:
add r1, sp, #0
ldr r1, [r1, lr, lsl #2]
ldrb r1, [r1]
tst r1, #1
movne r1, #1
moveq r1, #0
tst r1, #0xff
beq _023452D4
add r1, sp, #0
ldr r3, [r1, lr, lsl #2]
ldrb r2, [r3]
tst r2, #2
ldreqsh r1, [r3, #4]
cmpeq ip, r1
andeq r1, r2, #8
cmpeq r0, r1
bne _023452D4
ldrh r1, [r3, #2]
cmp r1, #0x63
beq _023452D4
cmp fp, r1
movlt fp, r1
movlt r8, lr
_023452D4:
add lr, lr, #1
_023452D8:
cmp lr, r6
blt _02345278
mvn r0, #0
cmp r8, r0
beq _02345378
add r1, sp, #0
ldr r2, [r1, r8, lsl #2]
ldrh r0, [r5, #2]
ldrh r1, [r2, #2]
add r0, r1, r0
cmp r0, #0x63
movge r0, #0x63
strh r0, [r2, #2]
bl ov29_02347040
mov r0, #0
mov r1, #0x40000
bl SetPreprocessorArgsIdVal
ldr r2, _02345510 ; =ov29_023531BC
mov r1, r5
mov r0, #0
bl SubstitutePlaceholderItemTags
mov r0, sl
mov r1, #1
bl RemoveGroundItem
ldr r0, _02345528 ; =0x00001304
bl PlaySeByIdIfNotSilence
add r0, sp, #0xcc
ldr r0, [r0, r8, lsl #2]
cmp r0, #0
bge _02345360
ldr r1, _0234552C ; =0x00000BD4
mov r0, r4
bl LogMessageByIdWithPopupCheckUser
b _0234536C
_02345360:
ldr r1, _02345530 ; =0x00000BD5
mov r0, r4
bl LogMessageByIdWithPopupCheckUser
_0234536C:
ldrsh r0, [r5, #4]
bl DisplayItemTip
b _02345508
_02345378:
mov r8, #0
add r3, sp, #0
mov r0, r8
mov r1, #1
b _023453AC
_0234538C:
ldr r2, [r3, r8, lsl #2]
ldrb r2, [r2]
tst r2, #1
movne r2, r1
moveq r2, r0
tst r2, #0xff
beq _023453B4
add r8, r8, #1
_023453AC:
cmp r8, r6
blt _0234538C
_023453B4:
mov r0, r4
mov r1, r5
mov r2, sb
bl ov29_02348DD8
cmp r0, #0
bne _02345508
cmp r8, r6
bne _02345418
cmp sb, #0
beq _02345508
mov r0, #0
mov r1, #0x40000
bl SetPreprocessorArgsIdVal
ldr r2, _02345510 ; =ov29_023531BC
mov r1, r5
mov r0, #0
bl SubstitutePlaceholderItemTags
mov r0, #0
mov r1, r4
mov r2, r0
bl SubstitutePlaceholderStringTags
ldr r1, _02345514 ; =0x00000BD2
mov r0, r4
bl LogMessageByIdWithPopupCheckUser
b _02345508
_02345418:
ldr r0, _02345528 ; =0x00001304
bl PlaySeByIdIfNotSilence
add r0, sp, #0xcc
ldr r0, [r0, r8, lsl #2]
cmp r0, #0
bge _02345480
ldrh r2, [r5]
mov r0, #0
mov r1, #0x40000
strh r2, [r7, #0x62]
ldrh r2, [r5, #2]
strh r2, [r7, #0x64]
ldrh r2, [r5, #4]
strh r2, [r7, #0x66]
bl SetPreprocessorArgsIdVal
ldr r2, _02345510 ; =ov29_023531BC
mov r1, r5
mov r0, #0
bl SubstitutePlaceholderItemTags
mov r0, sl
mov r1, #1
bl RemoveGroundItem
ldr r1, _0234552C ; =0x00000BD4
mov r0, r4
bl LogMessageByIdWithPopupCheckUser
b _02345500
_02345480:
mov r0, r5
bl ov29_02348D3C
mov r6, r0
mov r0, r5
bl ov29_02345004
cmp r0, #0
mov r0, #0
beq _023454BC
mov r1, r4
mov r2, r0
bl SubstitutePlaceholderStringTags
ldr r1, _02345534 ; =0x00000BD7
mov r0, r4
bl LogMessageByIdWithPopupCheckUser
b _02345500
_023454BC:
mov r1, #0x40000
bl SetPreprocessorArgsIdVal
ldr r2, _02345510 ; =ov29_023531BC
mov r1, r5
mov r0, #0
bl SubstitutePlaceholderItemTags
mov r0, sl
mov r1, #1
bl RemoveGroundItem
ldr r1, _02345530 ; =0x00000BD5
mov r0, r4
bl LogMessageByIdWithPopupCheckUser
mov r0, r5
mov r1, r6
bl ov29_02348ECC
cmp r0, #0
bne _02345508
_02345500:
ldrsh r0, [r5, #4]
bl DisplayItemTip
_02345508:
add sp, sp, #0x198
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
#ifdef JAPAN
#define TRY_LEADER_ITEM_PICK_UP_OFFSET -0x2C1
#else
#define TRY_LEADER_ITEM_PICK_UP_OFFSET 0
#endif
_02345510: .word ov29_023531BC
_02345514: .word 0x00000BD2 + TRY_LEADER_ITEM_PICK_UP_OFFSET
_02345518: .word 0x00000BD3 + TRY_LEADER_ITEM_PICK_UP_OFFSET
_0234551C: .word 0x00001308
_02345520: .word 0x00000BD6 + TRY_LEADER_ITEM_PICK_UP_OFFSET
_02345524: .word DUNGEON_PTR
_02345528: .word 0x00001304
_0234552C: .word 0x00000BD4 + TRY_LEADER_ITEM_PICK_UP_OFFSET
_02345530: .word 0x00000BD5 + TRY_LEADER_ITEM_PICK_UP_OFFSET
_02345534: .word 0x00000BD7 + TRY_LEADER_ITEM_PICK_UP_OFFSET
arm_func_end TryLeaderItemPickUp
arm_func_start SpawnItem
SpawnItem: ; 0x02345538
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
mov r6, r1
mov r5, r2
bl SpawnItemEntity
movs r4, r0
moveq r0, #0
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
ldrh r0, [r6]
ldr r1, [r4, #0xb4]
strh r0, [r1]
ldrh r0, [r6, #2]
strh r0, [r1, #2]
ldrh r0, [r6, #4]
strh r0, [r1, #4]
ldr r1, [r4, #0xb4]
ldrb r0, [r1]
bic r0, r0, #0x10
strb r0, [r1]
ldr r1, [r4, #0xb4]
ldrb r0, [r1]
bic r0, r0, #0x20
strb r0, [r1]
ldrb r0, [r6, #1]
cmp r0, #0
beq _023455A8
mov r0, r6
bl RemoveEquivItemNoHole
_023455A8:
mov r0, #1
strb r0, [r4, #0x20]
ldrsh r0, [r7]
ldrsh r1, [r7, #2]
bl GetTileSafe
ldr r1, _02345690 ; =ov29_023537B0
str r4, [r0, #0x10]
ldrb r1, [r1]
cmp r1, #0
bne _0234563C
ldrh r0, [r0]
tst r0, #0x20
beq _0234563C
ldrsh r0, [r6, #4]
bl IsShoppableItem
cmp r0, #0
beq _0234563C
ldrb r0, [r6]
tst r0, #2
beq _02345620
cmp r5, #0
beq _0234563C
mov r0, r6
bl GetActualBuyPrice
ldr r1, _02345694 ; =DUNGEON_PTR
ldr r2, [r1]
ldr r1, [r2, #0x7bc]
add r0, r1, r0
str r0, [r2, #0x7bc]
b _0234563C
_02345620:
mov r0, r6
bl GetActualSellPrice
ldr r1, _02345694 ; =DUNGEON_PTR
ldr r2, [r1]
ldr r1, [r2, #0x7c0]
add r0, r1, r0
str r0, [r2, #0x7c0]
_0234563C:
mov r4, #0
ldr r5, _02345694 ; =DUNGEON_PTR
mov r6, r4
_02345648:
ldr r0, [r5]
add r0, r0, r6, lsl #2
add r0, r0, #0x12000
#ifdef JAPAN
ldr r0, [r0, #0xb24]
#else
ldr r0, [r0, #0xbc8]
#endif
bl EntityIsValid__02345698
cmp r0, #0
addne r4, r6, #1
add r6, r6, #1
cmp r6, #0x40
blt _02345648
ldr r0, _02345694 ; =DUNGEON_PTR
ldr r0, [r0]
add r0, r0, #0x3f00
#ifdef JAPAN
strh r4, [r0, #0x1c]
#else
strh r4, [r0, #0xc0]
#endif
bl RemoveEmptyItemsInBag
#ifdef EUROPE
mov r0, #0
#endif
bl ov29_022FB920
mov r0, #1
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02345690: .word ov29_023537B0
_02345694: .word DUNGEON_PTR
arm_func_end SpawnItem

View File

@@ -0,0 +1,10 @@
#ifndef PMDSKY_OVERLAY_29_022DC684_H
#define PMDSKY_OVERLAY_29_022DC684_H
#include "dungeon_mode.h"
#include "item.h"
#include "move.h"
void ov29_022DC684(s32 a);
#endif

View File

@@ -0,0 +1,11 @@
#ifndef PMDSKY_OVERLAY_29_022E272C_H
#define PMDSKY_OVERLAY_29_022E272C_H
#include "dungeon_mode.h"
#include "item.h"
#include "move.h"
bool8 ShouldDisplayEntityWrapper(struct entity *entity);
bool8 ov29_022E273C(struct entity *entity);
#endif

View File

@@ -0,0 +1,12 @@
#ifndef PMDSKY_OVERLAY_29_022E41CC_H
#define PMDSKY_OVERLAY_29_022E41CC_H
#include "dungeon_mode.h"
#include "item.h"
#include "move.h"
void ov29_022E41B0(struct entity *entity, s32 a);
void ov29_022E41CC(struct entity *entity);
void ov29_022E41DC(struct entity *entity);
#endif

View File

@@ -0,0 +1,10 @@
#ifndef PMDSKY_OVERLAY_29_022E45B8_H
#define PMDSKY_OVERLAY_29_022E45B8_H
#include "dungeon_mode.h"
#include "item.h"
#include "move.h"
void ov29_022E45B8(struct entity *entity);
#endif

View File

@@ -0,0 +1,10 @@
#ifndef PMDSKY_OVERLAY_29_022E46C0_H
#define PMDSKY_OVERLAY_29_022E46C0_H
#include "dungeon_mode.h"
#include "item.h"
#include "move.h"
void ov29_022E46C0(struct entity *entity);
#endif

View File

@@ -0,0 +1,10 @@
#ifndef PMDSKY_OVERLAY_29_022E4704_H
#define PMDSKY_OVERLAY_29_022E4704_H
#include "dungeon_mode.h"
#include "item.h"
#include "move.h"
void PlayInvisifySeIfShouldDisplayEntity(struct entity *entity);
#endif

View File

@@ -0,0 +1,11 @@
#ifndef PMDSKY_OVERLAY_29_022E4B8C_H
#define PMDSKY_OVERLAY_29_022E4B8C_H
#include "dungeon_mode.h"
#include "item.h"
#include "move.h"
void ov29_022E4B8C(struct entity *entity);
void ov29_022E4BA0(struct entity *entity);
#endif

View File

@@ -0,0 +1,10 @@
#ifndef PMDSKY_OVERLAY_29_022E563C_H
#define PMDSKY_OVERLAY_29_022E563C_H
#include "dungeon_mode.h"
#include "item.h"
#include "move.h"
void ov29_022E563C(struct entity *entity);
#endif

View File

@@ -0,0 +1,10 @@
#ifndef PMDSKY_OVERLAY_29_022E66C4_H
#define PMDSKY_OVERLAY_29_022E66C4_H
#include "dungeon_mode.h"
#include "item.h"
#include "move.h"
void ov29_022E66C4(struct entity *entity);
#endif

View File

@@ -0,0 +1,11 @@
#ifndef PMDSKY_OVERLAY_29_022E6770_H
#define PMDSKY_OVERLAY_29_022E6770_H
#include "dungeon_mode.h"
#include "item.h"
#include "move.h"
void ov29_022E6770(struct entity *entity);
void ov29_022E6784(struct entity *entity);
#endif

View File

@@ -0,0 +1,13 @@
#ifndef PMDSKY_OVERLAY_29_022E68BC_H
#define PMDSKY_OVERLAY_29_022E68BC_H
#include "dungeon_mode.h"
#include "item.h"
#include "move.h"
void ov29_022E68BC(struct entity *entity);
void ov29_022E68D8(struct entity *entity);
void ov29_022E68F0(struct entity *entity);
void ov29_022E690C(struct entity *entity);
#endif

View File

@@ -0,0 +1,10 @@
#ifndef PMDSKY_OVERLAY_29_022E869C_H
#define PMDSKY_OVERLAY_29_022E869C_H
#include "dungeon_mode.h"
#include "item.h"
#include "move.h"
bool8 ov29_022E869C(void);
#endif

Some files were not shown because too many files have changed in this diff Show More