mirror of
https://github.com/pret/pmd-sky.git
synced 2026-08-20 01:25:24 -05:00
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:
@@ -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
|
||||
|
||||
78
asm/include/overlay_29_022DC694.inc
Normal file
78
asm/include/overlay_29_022DC694.inc
Normal 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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
3
asm/include/overlay_29_022E41F0.inc
Normal file
3
asm/include/overlay_29_022E41F0.inc
Normal file
@@ -0,0 +1,3 @@
|
||||
#pragma once
|
||||
.public GetEffectAnimationField0x19
|
||||
.public PlayEffectAnimationEntity
|
||||
3
asm/include/overlay_29_022E45CC.inc
Normal file
3
asm/include/overlay_29_022E45CC.inc
Normal file
@@ -0,0 +1,3 @@
|
||||
#pragma once
|
||||
.public GetEffectAnimationField0x19
|
||||
.public PlayEffectAnimationEntity
|
||||
3
asm/include/overlay_29_022E46D0.inc
Normal file
3
asm/include/overlay_29_022E46D0.inc
Normal file
@@ -0,0 +1,3 @@
|
||||
#pragma once
|
||||
.public DisplayAnimatedNumbers
|
||||
.public ShouldDisplayEntityAdvanced
|
||||
5
asm/include/overlay_29_022E4714.inc
Normal file
5
asm/include/overlay_29_022E4714.inc
Normal file
@@ -0,0 +1,5 @@
|
||||
#pragma once
|
||||
.public GetEffectAnimationField0x19
|
||||
.public MonsterIsType
|
||||
.public PlayEffectAnimationEntity
|
||||
.public PlaySeByIdIfShouldDisplayEntity
|
||||
5
asm/include/overlay_29_022E4BB4.inc
Normal file
5
asm/include/overlay_29_022E4BB4.inc
Normal file
@@ -0,0 +1,5 @@
|
||||
#pragma once
|
||||
.public DUNGEON_PTR
|
||||
.public GetEffectAnimationField0x19
|
||||
.public PlayEffectAnimationEntity
|
||||
.public ov29_0230D618
|
||||
41
asm/include/overlay_29_022E5650.inc
Normal file
41
asm/include/overlay_29_022E5650.inc
Normal 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
|
||||
3
asm/include/overlay_29_022E66D8.inc
Normal file
3
asm/include/overlay_29_022E66D8.inc
Normal file
@@ -0,0 +1,3 @@
|
||||
#pragma once
|
||||
.public GetEffectAnimationField0x19
|
||||
.public PlayEffectAnimationEntity
|
||||
8
asm/include/overlay_29_022E6798.inc
Normal file
8
asm/include/overlay_29_022E6798.inc
Normal file
@@ -0,0 +1,8 @@
|
||||
#pragma once
|
||||
.public AdvanceFrame
|
||||
.public AnimationDelayOrSomething
|
||||
.public DUNGEON_PTR
|
||||
.public GetEffectAnimationField0x19
|
||||
.public PlayEffectAnimationEntity
|
||||
.public ShouldDisplayEntityAdvanced
|
||||
.public ov29_022EA370
|
||||
59
asm/include/overlay_29_022E6928.inc
Normal file
59
asm/include/overlay_29_022E6928.inc
Normal 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
|
||||
@@ -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
|
||||
|
||||
51
asm/include/overlay_29_022E86A4.inc
Normal file
51
asm/include/overlay_29_022E86A4.inc
Normal 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
|
||||
@@ -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
|
||||
|
||||
41
asm/include/overlay_29_022F52CC.inc
Normal file
41
asm/include/overlay_29_022F52CC.inc
Normal 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
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
2
asm/include/overlay_29_0232124C.inc
Normal file
2
asm/include/overlay_29_0232124C.inc
Normal file
@@ -0,0 +1,2 @@
|
||||
#pragma once
|
||||
.public ov29_0232119C
|
||||
12
asm/include/overlay_29_02321288.inc
Normal file
12
asm/include/overlay_29_02321288.inc
Normal 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
|
||||
@@ -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
|
||||
|
||||
14
asm/include/overlay_29_02325DE4.inc
Normal file
14
asm/include/overlay_29_02325DE4.inc
Normal 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
|
||||
4
asm/include/overlay_29_02325F74.inc
Normal file
4
asm/include/overlay_29_02325F74.inc
Normal file
@@ -0,0 +1,4 @@
|
||||
#pragma once
|
||||
.public GetApparentWeather
|
||||
.public MORNING_SUN_HP_RESTORATION_TABLE
|
||||
.public TryIncreaseHp
|
||||
@@ -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
|
||||
|
||||
23
asm/include/overlay_29_0232692C.inc
Normal file
23
asm/include/overlay_29_0232692C.inc
Normal 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
|
||||
@@ -5,4 +5,3 @@
|
||||
.public FLAMETHROWER_BURN_CHANCE
|
||||
.public FLAME_WHEEL_BURN_CHANCE
|
||||
.public TryInflictBurnStatus
|
||||
.public TryInflictExposedStatus
|
||||
|
||||
@@ -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
|
||||
|
||||
17
asm/include/overlay_29_023279E4.inc
Normal file
17
asm/include/overlay_29_023279E4.inc
Normal 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
|
||||
@@ -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
|
||||
|
||||
5
asm/include/overlay_29_02329FE0.inc
Normal file
5
asm/include/overlay_29_02329FE0.inc
Normal file
@@ -0,0 +1,5 @@
|
||||
#pragma once
|
||||
.public ATK_STAT_IDX
|
||||
.public DealDamage
|
||||
.public DungeonRandOutcomeUserTargetInteraction
|
||||
.public LowerHitChanceStat
|
||||
@@ -1,4 +1,2 @@
|
||||
#pragma once
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public ov10_022C456C
|
||||
.public ov29_02332F18
|
||||
@@ -4,7 +4,6 @@
|
||||
.public DealDamage
|
||||
.public DungeonRandOutcomeUserTargetInteraction
|
||||
.public EndFrozenStatus
|
||||
.public EndProtectStatus
|
||||
.public EntityIsValidMoveEffects__0232E250
|
||||
.public FLARE_BLITZ_BURN_CHANCE
|
||||
.public TryInflictBurnStatus
|
||||
@@ -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
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
#pragma once
|
||||
.public DealDamage
|
||||
.public EndSleepClassStatus
|
||||
@@ -1,6 +1,5 @@
|
||||
#pragma once
|
||||
.public AbilityIsActiveVeneer
|
||||
.public BoostSpeedOneStage
|
||||
.public CalcRecoilDamageFixed
|
||||
.public DealDamage
|
||||
.public DefenderAbilityIsActiveMoveEffects__0232DE20
|
||||
|
||||
@@ -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
|
||||
|
||||
58
asm/include/overlay_29_0233A248.inc
Normal file
58
asm/include/overlay_29_0233A248.inc
Normal 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
|
||||
22
asm/include/overlay_29_0233AE84.inc
Normal file
22
asm/include/overlay_29_0233AE84.inc
Normal 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
|
||||
@@ -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
|
||||
|
||||
50
asm/include/overlay_29_02344BF8.inc
Normal file
50
asm/include/overlay_29_02344BF8.inc
Normal 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
2727
asm/overlay_29_022DC694.s
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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
322
asm/overlay_29_022E41F0.s
Normal 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
101
asm/overlay_29_022E45CC.s
Normal 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
29
asm/overlay_29_022E46D0.s
Normal 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
384
asm/overlay_29_022E4714.s
Normal 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
825
asm/overlay_29_022E4BB4.s
Normal 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
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
50
asm/overlay_29_022E66D8.s
Normal 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
94
asm/overlay_29_022E6798.s
Normal 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
1278
asm/overlay_29_022E6928.s
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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
795
asm/overlay_29_022E86A4.s
Normal 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
|
||||
@@ -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
526
asm/overlay_29_022F52CC.s
Normal 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
|
||||
@@ -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}
|
||||
@@ -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
24
asm/overlay_29_0232124C.s
Normal 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
137
asm/overlay_29_02321288.s
Normal 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
|
||||
@@ -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
111
asm/overlay_29_02325DE4.s
Normal 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
25
asm/overlay_29_02325F74.s
Normal 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
|
||||
@@ -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
290
asm/overlay_29_0232692C.s
Normal 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
|
||||
@@ -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
|
||||
|
||||
@@ -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
174
asm/overlay_29_023279E4.s
Normal 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
|
||||
@@ -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
37
asm/overlay_29_02329FE0.s
Normal 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
|
||||
@@ -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}
|
||||
@@ -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
|
||||
@@ -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
19
asm/overlay_29_0232CE7C.s
Normal 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
|
||||
@@ -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}
|
||||
@@ -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}
|
||||
@@ -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
45
asm/overlay_29_0232E400.s
Normal 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
|
||||
@@ -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
897
asm/overlay_29_0233A248.s
Normal 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
6802
asm/overlay_29_0233AE84.s
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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
777
asm/overlay_29_02344BF8.s
Normal 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
|
||||
10
include/overlay_29_022DC684.h
Normal file
10
include/overlay_29_022DC684.h
Normal 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
|
||||
11
include/overlay_29_022E272C.h
Normal file
11
include/overlay_29_022E272C.h
Normal 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
|
||||
12
include/overlay_29_022E41CC.h
Normal file
12
include/overlay_29_022E41CC.h
Normal 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
|
||||
10
include/overlay_29_022E45B8.h
Normal file
10
include/overlay_29_022E45B8.h
Normal 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
|
||||
10
include/overlay_29_022E46C0.h
Normal file
10
include/overlay_29_022E46C0.h
Normal 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
|
||||
10
include/overlay_29_022E4704.h
Normal file
10
include/overlay_29_022E4704.h
Normal 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
|
||||
11
include/overlay_29_022E4B8C.h
Normal file
11
include/overlay_29_022E4B8C.h
Normal 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
|
||||
10
include/overlay_29_022E563C.h
Normal file
10
include/overlay_29_022E563C.h
Normal 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
|
||||
10
include/overlay_29_022E66C4.h
Normal file
10
include/overlay_29_022E66C4.h
Normal 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
|
||||
11
include/overlay_29_022E6770.h
Normal file
11
include/overlay_29_022E6770.h
Normal 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
|
||||
13
include/overlay_29_022E68BC.h
Normal file
13
include/overlay_29_022E68BC.h
Normal 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
|
||||
10
include/overlay_29_022E869C.h
Normal file
10
include/overlay_29_022E869C.h
Normal 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
Reference in New Issue
Block a user