mirror of
https://github.com/pret/pmd-sky.git
synced 2026-08-20 01:25:24 -05:00
Decomp ten more dungeon-state accessors in overlay_29
Decompile from asm: IsMarowakTrainingMaze ov29_022EAEFC FixedRoomIsSubstituteRoom ov29_022EAF20 IsSecretRoom SetUnkMusicFlag IsDungeonEndReasonFailure ov29_0234969C ChangeDungeonMusic ov29_023496B0 All ten reach struct dungeon through DUNGEON_PTR and every offset lands on a named field: id at 0x748, hidden_outlaw_defeated_message at 0x2, unk_music_flag at 0x792, dungeon_music_playing_id and field_0x2cb00 at 0x2CB06 and 0x2CB00, gen_info.fixed_room_id at 0x40DA, and fainted_monster_dungeon_end_reason at 0x2CA66. No new types. The constants resolve to existing enumerators that corroborate the function names rather than being chosen to fit them: FIXED_SUBSTITUTE_ROOM is 110 and FIXED_SECRET_ROOM is 113, which is what FixedRoomIsSubstituteRoom and IsSecretRoom compare against; DAMAGE_SOURCE_ESCAPE is 633, the 0x279 in IsDungeonEndReasonFailure. IsMarowakTrainingMaze tests the range DUNGEON_NORMAL_FLY_MAZE to DUNGEON_EXPLORER_MAZE inclusive, 180 to 190. IsDungeonEndReasonFailure reads its union member through an explicit (s16) cast. enum damage_source_non_move declares no negative enumerator, so under -enum min it is unsigned and compiles to ldrh with an unsigned comparison, where the target has ldrsh and a signed one. The cast is local and reversible; adding a sentinel to a shared enum, as was done for monster_id earlier on this branch, would not be. Two of the ten merged into src/run_dungeon_1.c, which already declares DUNGEON_PTR as an array and reaches it as DUNGEON_PTR[0]. They follow that file's convention rather than introducing a second spelling; both forms were checked on a scratch and produce identical bytes. No comments are added to any pmd-sky file. Authored by Claude (Opus 5) under human direction. Confirmed by a matching build: build/pmdsky.us/pmdsky.us.nds: OK. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,41 +1,20 @@
|
||||
#pragma once
|
||||
.public _s32_div_f
|
||||
.public AbilityIsActiveVeneer
|
||||
.public AdvanceFrame
|
||||
.public ChangeDungeonMusic
|
||||
.public DUNGEON_PRNG_STATE
|
||||
.public DUNGEON_PTR
|
||||
.public DungeonRandInt
|
||||
.public DungeonRandRange
|
||||
.public FIXED_ROOM_PROPERTIES_TABLE
|
||||
.public GetFloorType
|
||||
.public GetLeaderMonster
|
||||
.public IqSkillIsEnabled
|
||||
.public IsCurrentFixedRoomBossFight
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public MoveMonsterToPos
|
||||
.public MUSIC_ID_TABLE
|
||||
.public ov29_022E555C
|
||||
.public ov29_02321260
|
||||
.public ov29_023516E8
|
||||
.public ov29_02352030
|
||||
.public ov29_02352032
|
||||
.public ov29_02352070
|
||||
.public ov29_0237C91C
|
||||
.public ov29_0237C91E
|
||||
.public PlayBgmByIdVeneer
|
||||
.public PlayBgmByIdVolumeVeneer
|
||||
.public RANDOM_MUSIC_ID_TABLE
|
||||
.public RoundUpDiv256
|
||||
.public strcmp
|
||||
.public StringFromId
|
||||
.public sub_0200D208
|
||||
.public sub_02017ACC
|
||||
.public _s32_div_f
|
||||
.public ov29_022EAE40
|
||||
.public sub_02017B18
|
||||
.public sub_02017B70
|
||||
.public sub_02017B7C
|
||||
.public sub_02017C50
|
||||
.public sub_02017C68
|
||||
.public sub_02017C74
|
||||
.public sub_02017D80
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public UpdateEntityPixelPos
|
||||
|
||||
4
asm/include/overlay_29_022EAE40.inc
Normal file
4
asm/include/overlay_29_022EAE40.inc
Normal file
@@ -0,0 +1,4 @@
|
||||
#pragma once
|
||||
.public DUNGEON_PTR
|
||||
.public sub_02017ACC
|
||||
.public sub_02017D80
|
||||
26
asm/include/overlay_29_022EAF48.inc
Normal file
26
asm/include/overlay_29_022EAF48.inc
Normal file
@@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
.public AbilityIsActiveVeneer
|
||||
.public DUNGEON_PTR
|
||||
.public GetFloorType
|
||||
.public GetLeaderMonster
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public MoveMonsterToPos
|
||||
.public MusicTableIdxToMusicId
|
||||
.public PlayBgmByIdVeneer
|
||||
.public PlayBgmByIdVolumeVeneer
|
||||
.public StringFromId
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public UpdateEntityPixelPos
|
||||
.public ov29_022E555C
|
||||
.public ov29_022EAE40
|
||||
.public ov29_02321260
|
||||
.public ov29_023516E8
|
||||
.public ov29_02352030
|
||||
.public ov29_02352032
|
||||
.public ov29_02352070
|
||||
.public ov29_0237C91C
|
||||
.public ov29_0237C91E
|
||||
.public strcmp
|
||||
.public sub_0200D208
|
||||
.public sub_02017B70
|
||||
.public sub_02017B7C
|
||||
@@ -4,7 +4,6 @@
|
||||
.public EntityIsValid__022ECDC0
|
||||
.public GetMonsterName
|
||||
.public GetStringFromFileVeneer
|
||||
.public MemZero
|
||||
.public memset
|
||||
.public ov29_0237C974
|
||||
.public strcpy
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
#pragma once
|
||||
.public DUNGEON_PTR
|
||||
.public MemZero
|
||||
@@ -1,11 +1,3 @@
|
||||
#pragma once
|
||||
.public DUNGEON_PTR
|
||||
.public DrawMinimapTile
|
||||
.public GetLeader
|
||||
.public GetTileSafe
|
||||
.public IsSecretBazaar
|
||||
.public LogMessageByIdWithPopupCheckUser
|
||||
.public PlayEffectAnimationPos
|
||||
.public TeamMemberHasExclusiveItemEffectActive
|
||||
.public UpdateTrapsVisibility
|
||||
.public ov29_022E2418
|
||||
|
||||
11
asm/include/overlay_29_02338684.inc
Normal file
11
asm/include/overlay_29_02338684.inc
Normal file
@@ -0,0 +1,11 @@
|
||||
#pragma once
|
||||
.public DUNGEON_PTR
|
||||
.public DrawMinimapTile
|
||||
.public GetLeader
|
||||
.public GetTileSafe
|
||||
.public IsSecretBazaar
|
||||
.public IsSecretRoom
|
||||
.public LogMessageByIdWithPopupCheckUser
|
||||
.public PlayEffectAnimationPos
|
||||
.public UpdateTrapsVisibility
|
||||
.public ov29_022E2418
|
||||
@@ -1,44 +1,8 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_022E08A0.inc"
|
||||
.include "overlay_29_022E08F4.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start IsMarowakTrainingMaze
|
||||
IsMarowakTrainingMaze: ; 0x022E08A0
|
||||
ldr r0, _022E08C8 ; =DUNGEON_PTR
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, #0x748]
|
||||
cmp r0, #0xb4
|
||||
blo _022E08C0
|
||||
cmp r0, #0xbe
|
||||
movls r0, #1
|
||||
bxls lr
|
||||
_022E08C0:
|
||||
mov r0, #0
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_022E08C8: .word DUNGEON_PTR
|
||||
arm_func_end IsMarowakTrainingMaze
|
||||
|
||||
arm_func_start FixedRoomIsSubstituteRoom
|
||||
FixedRoomIsSubstituteRoom: ; 0x022E08CC
|
||||
ldr r0, _022E08F0 ; =DUNGEON_PTR
|
||||
ldr r0, [r0]
|
||||
add r0, r0, #0x4000
|
||||
#ifdef JAPAN
|
||||
ldrb r0, [r0, #0x36]
|
||||
#else
|
||||
ldrb r0, [r0, #0xda]
|
||||
#endif
|
||||
cmp r0, #0x6e
|
||||
moveq r0, #1
|
||||
movne r0, #0
|
||||
and r0, r0, #0xff
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_022E08F0: .word DUNGEON_PTR
|
||||
arm_func_end FixedRoomIsSubstituteRoom
|
||||
|
||||
arm_func_start ov29_022E08F4
|
||||
ov29_022E08F4: ; 0x022E08F4
|
||||
ldr r0, _022E0924 ; =DUNGEON_PTR
|
||||
@@ -246,511 +246,3 @@ _022EAE08: .word 0x00001410
|
||||
_022EAE0C: .word DUNGEON_PTR
|
||||
_022EAE10: .word FIXED_ROOM_PROPERTIES_TABLE
|
||||
arm_func_end ov29_022EAD68
|
||||
|
||||
arm_func_start ChangeDungeonMusic
|
||||
ChangeDungeonMusic: ; 0x022EAE14
|
||||
ldr r3, _022EAE38 ; =DUNGEON_PTR
|
||||
ldr r1, _022EAE3C ; =0x0002CB06
|
||||
ldr ip, [r3]
|
||||
sub r2, r1, #6
|
||||
strh r0, [ip, r1]
|
||||
ldr r0, [r3]
|
||||
mov r1, #0
|
||||
strh r1, [r0, r2]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_022EAE38: .word DUNGEON_PTR
|
||||
#ifdef JAPAN
|
||||
_022EAE3C: .word 0x0002CA62
|
||||
#else
|
||||
_022EAE3C: .word 0x0002CB06
|
||||
#endif
|
||||
arm_func_end ChangeDungeonMusic
|
||||
|
||||
arm_func_start ov29_022EAE40
|
||||
ov29_022EAE40: ; 0x022EAE40
|
||||
stmdb sp!, {r4, lr}
|
||||
ldr lr, _022EAEA0 ; =DUNGEON_PTR
|
||||
ldr r2, _022EAEA4 ; =0x0002CB02
|
||||
ldr r4, [lr]
|
||||
ldr r1, _022EAEA8 ; =0x000003E7
|
||||
add r3, r2, #4
|
||||
strh r1, [r4, r2]
|
||||
ldr r4, [lr]
|
||||
add ip, r2, #2
|
||||
strh r0, [r4, r3]
|
||||
ldr r4, [lr]
|
||||
mov r3, #4
|
||||
strh r0, [r4, ip]
|
||||
ldr r0, [lr]
|
||||
sub r2, r2, #2
|
||||
add r0, r0, #0x2c000
|
||||
#ifdef JAPAN
|
||||
str r3, [r0, #0xa54]
|
||||
#else
|
||||
str r3, [r0, #0xaf8]
|
||||
#endif
|
||||
ldr r0, [lr]
|
||||
mov r3, #0
|
||||
strh r3, [r0, r2]
|
||||
ldr r0, [lr]
|
||||
add r0, r0, #0x700
|
||||
strh r1, [r0, #0x96]
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_022EAEA0: .word DUNGEON_PTR
|
||||
#ifdef JAPAN
|
||||
_022EAEA4: .word 0x0002CA5E
|
||||
#else
|
||||
_022EAEA4: .word 0x0002CB02
|
||||
#endif
|
||||
_022EAEA8: .word 0x000003E7
|
||||
arm_func_end ov29_022EAE40
|
||||
|
||||
arm_func_start ov29_022EAEAC
|
||||
ov29_022EAEAC: ; 0x022EAEAC
|
||||
stmdb sp!, {r3, lr}
|
||||
bl sub_02017ACC
|
||||
ldr r0, _022EAEE4 ; =0x0002CB02
|
||||
ldr r2, _022EAEE8 ; =DUNGEON_PTR
|
||||
ldr ip, _022EAEEC ; =0x000003E7
|
||||
ldr r3, [r2]
|
||||
add r1, r0, #2
|
||||
strh ip, [r3, r0]
|
||||
ldr r3, [r2]
|
||||
add r0, r0, #4
|
||||
strh ip, [r3, r1]
|
||||
ldr r1, [r2]
|
||||
strh ip, [r1, r0]
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_022EAEE4: .word 0x0002CA5E
|
||||
#else
|
||||
_022EAEE4: .word 0x0002CB02
|
||||
#endif
|
||||
_022EAEE8: .word DUNGEON_PTR
|
||||
_022EAEEC: .word 0x000003E7
|
||||
arm_func_end ov29_022EAEAC
|
||||
|
||||
arm_func_start ov29_022EAEF0
|
||||
ov29_022EAEF0: ; 0x022EAEF0
|
||||
ldr ip, _022EAEF8 ; =sub_02017D80
|
||||
bx ip
|
||||
.align 2, 0
|
||||
_022EAEF8: .word sub_02017D80
|
||||
arm_func_end ov29_022EAEF0
|
||||
|
||||
arm_func_start ov29_022EAEFC
|
||||
ov29_022EAEFC: ; 0x022EAEFC
|
||||
ldr r0, _022EAF1C ; =DUNGEON_PTR
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, #0x792]
|
||||
cmp r0, #0
|
||||
moveq r0, #1
|
||||
movne r0, #0
|
||||
and r0, r0, #0xff
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_022EAF1C: .word DUNGEON_PTR
|
||||
arm_func_end ov29_022EAEFC
|
||||
|
||||
arm_func_start ov29_022EAF20
|
||||
ov29_022EAF20: ; 0x022EAF20
|
||||
ldr r0, _022EAF30 ; =DUNGEON_PTR
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, #0x792]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_022EAF30: .word DUNGEON_PTR
|
||||
arm_func_end ov29_022EAF20
|
||||
|
||||
arm_func_start SetUnkMusicFlag
|
||||
SetUnkMusicFlag: ; 0x022EAF34
|
||||
ldr r1, _022EAF44 ; =DUNGEON_PTR
|
||||
ldr r1, [r1]
|
||||
strb r0, [r1, #0x792]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_022EAF44: .word DUNGEON_PTR
|
||||
arm_func_end SetUnkMusicFlag
|
||||
|
||||
arm_func_start ov29_022EAF48
|
||||
ov29_022EAF48: ; 0x022EAF48
|
||||
stmdb sp!, {r4, lr}
|
||||
ldr ip, _022EAFA8 ; =DUNGEON_PTR
|
||||
mov r4, #0
|
||||
ldr r3, [ip]
|
||||
ldr lr, _022EAFAC ; =0x000003E7
|
||||
#ifdef JAPAN
|
||||
add r2, r3, #0x254
|
||||
add r3, r3, #0x2c000
|
||||
str r4, [r3, #0xa54]
|
||||
#else
|
||||
add r2, r3, #0x2f8
|
||||
add r3, r3, #0x2c000
|
||||
str r4, [r3, #0xaf8]
|
||||
#endif
|
||||
add r3, r2, #0x2c800
|
||||
str r4, [r3, #4]
|
||||
ldr r2, [ip]
|
||||
cmp r1, #0
|
||||
add r1, r2, #0x700
|
||||
strh lr, [r1, #0x96]
|
||||
bne _022EAF8C
|
||||
cmp r0, lr
|
||||
bne _022EAFA0
|
||||
_022EAF8C:
|
||||
ldr r0, _022EAFAC ; =0x000003E7
|
||||
strh r0, [r3, #0xa]
|
||||
strh r0, [r3, #0xc]
|
||||
strh r0, [r3, #0xe]
|
||||
ldmia sp!, {r4, pc}
|
||||
_022EAFA0:
|
||||
bl ov29_022EAE40
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_022EAFA8: .word DUNGEON_PTR
|
||||
_022EAFAC: .word 0x000003E7
|
||||
arm_func_end ov29_022EAF48
|
||||
|
||||
arm_func_start ov29_022EAFB0
|
||||
ov29_022EAFB0: ; 0x022EAFB0
|
||||
stmdb sp!, {r4, lr}
|
||||
ldr r0, _022EB168 ; =DUNGEON_PTR
|
||||
ldr r3, [r0]
|
||||
cmp r3, #0
|
||||
ldmeqia sp!, {r4, pc}
|
||||
add r0, r3, #0x700
|
||||
ldrh r0, [r0, #0x96]
|
||||
ldr r2, _022EB16C ; =0x000003E7
|
||||
#ifdef JAPAN
|
||||
add r1, r3, #0x254
|
||||
#else
|
||||
add r1, r3, #0x2f8
|
||||
#endif
|
||||
cmp r0, r2
|
||||
add r4, r1, #0x2c800
|
||||
bne _022EB034
|
||||
ldrb r1, [r3, #0x792]
|
||||
cmp r1, #0
|
||||
beq _022EB004
|
||||
ldr r0, _022EB170 ; =ov29_023516E8
|
||||
ldr r0, [r0, r1, lsl #2]
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r0, r0, asr #0x10
|
||||
bl MusicTableIdxToMusicId
|
||||
b _022EB034
|
||||
_022EB004:
|
||||
ldrb r0, [r3, #0x791]
|
||||
cmp r0, #0
|
||||
movne r0, #0xd
|
||||
bne _022EB034
|
||||
ldrb r0, [r3, #0x794]
|
||||
cmp r0, #0
|
||||
movne r0, #0xb
|
||||
bne _022EB034
|
||||
ldrb r0, [r3, #0x7c9]
|
||||
cmp r0, #0
|
||||
movne r0, #0xc
|
||||
ldreqh r0, [r4, #0xe]
|
||||
_022EB034:
|
||||
ldr r1, [r4]
|
||||
cmp r1, #4
|
||||
bne _022EB058
|
||||
ldrh r1, [r4, #0xc]
|
||||
cmp r0, r1
|
||||
movne r1, #2
|
||||
strne r1, [r4]
|
||||
strneh r0, [r4, #0xa]
|
||||
b _022EB078
|
||||
_022EB058:
|
||||
ldr r1, _022EB16C ; =0x000003E7
|
||||
cmp r0, r1
|
||||
beq _022EB078
|
||||
ldrh r2, [r4, #0xa]
|
||||
cmp r2, r1
|
||||
moveq r1, #1
|
||||
streq r1, [r4]
|
||||
streqh r0, [r4, #0xa]
|
||||
_022EB078:
|
||||
ldr r0, [r4]
|
||||
cmp r0, #4
|
||||
addls pc, pc, r0, lsl #2
|
||||
ldmia sp!, {r4, pc}
|
||||
_022EB088: ; jump table
|
||||
ldmia sp!, {r4, pc} ; case 0
|
||||
b _022EB09C ; case 1
|
||||
b _022EB108 ; case 2
|
||||
b _022EB124 ; case 3
|
||||
ldmia sp!, {r4, pc} ; case 4
|
||||
_022EB09C:
|
||||
ldrh r2, [r4, #0xa]
|
||||
ldr r0, _022EB16C ; =0x000003E7
|
||||
cmp r2, r0
|
||||
moveq r0, #0
|
||||
streq r0, [r4]
|
||||
beq _022EB0FC
|
||||
tst r2, #0x8000
|
||||
ldr r0, _022EB174 ; =0x00007FFF
|
||||
beq _022EB0D4
|
||||
and r0, r2, r0
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r0, r0, lsr #0x10
|
||||
bl PlayBgmByIdVeneer
|
||||
b _022EB0EC
|
||||
_022EB0D4:
|
||||
and r0, r2, r0
|
||||
mov r0, r0, lsl #0x10
|
||||
ldrh r1, [r4, #8]
|
||||
mov r0, r0, lsr #0x10
|
||||
mov r2, #0x100
|
||||
bl PlayBgmByIdVolumeVeneer
|
||||
_022EB0EC:
|
||||
ldrh r1, [r4, #0xa]
|
||||
mov r0, #4
|
||||
strh r1, [r4, #0xc]
|
||||
str r0, [r4]
|
||||
_022EB0FC:
|
||||
ldr r0, _022EB16C ; =0x000003E7
|
||||
strh r0, [r4, #0xa]
|
||||
ldmia sp!, {r4, pc}
|
||||
_022EB108:
|
||||
mov r0, #0x1e
|
||||
bl sub_02017B7C
|
||||
mov r0, #0x1e
|
||||
str r0, [r4, #4]
|
||||
mov r0, #3
|
||||
str r0, [r4]
|
||||
ldmia sp!, {r4, pc}
|
||||
_022EB124:
|
||||
ldr r0, [r4, #4]
|
||||
cmp r0, #0
|
||||
subne r0, r0, #1
|
||||
strne r0, [r4, #4]
|
||||
ldr r0, [r4, #4]
|
||||
cmp r0, #0
|
||||
ldmneia sp!, {r4, pc}
|
||||
ldrh r1, [r4, #0xa]
|
||||
ldr r0, _022EB16C ; =0x000003E7
|
||||
cmp r1, r0
|
||||
movne r0, #1
|
||||
strne r0, [r4]
|
||||
ldmneia sp!, {r4, pc}
|
||||
bl sub_02017B70
|
||||
mov r0, #0
|
||||
str r0, [r4]
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_022EB168: .word DUNGEON_PTR
|
||||
_022EB16C: .word 0x000003E7
|
||||
_022EB170: .word ov29_023516E8
|
||||
_022EB174: .word 0x00007FFF
|
||||
arm_func_end ov29_022EAFB0
|
||||
|
||||
arm_func_start TrySwitchPlace
|
||||
TrySwitchPlace: ; 0x022EB178
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
sub sp, sp, #8
|
||||
mov r4, r1
|
||||
mov r1, #0xe
|
||||
mov r5, r0
|
||||
bl AbilityIsActiveVeneer
|
||||
cmp r0, #0
|
||||
beq _022EB1BC
|
||||
mov r0, #0
|
||||
mov r1, r5
|
||||
mov r2, r0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
ldr r2, _022EB2C4 ; =0x00000B76
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
b _022EB2BC
|
||||
_022EB1BC:
|
||||
cmp r5, r4
|
||||
beq _022EB204
|
||||
cmp r5, #0
|
||||
moveq r0, #0
|
||||
beq _022EB1E4
|
||||
ldr r0, [r5]
|
||||
cmp r0, #1
|
||||
moveq r0, #1
|
||||
movne r0, #0
|
||||
and r0, r0, #0xff
|
||||
_022EB1E4:
|
||||
cmp r0, #0
|
||||
beq _022EB204
|
||||
mov r0, r5
|
||||
mov r1, #0x53
|
||||
bl AbilityIsActiveVeneer
|
||||
cmp r0, #0
|
||||
movne r0, #0
|
||||
bne _022EB210
|
||||
_022EB204:
|
||||
mov r0, r4
|
||||
mov r1, #0xe
|
||||
bl AbilityIsActiveVeneer
|
||||
_022EB210:
|
||||
cmp r0, #0
|
||||
beq _022EB23C
|
||||
mov r0, #0
|
||||
mov r1, r4
|
||||
mov r2, r0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
ldr r2, _022EB2C4 ; =0x00000B76
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
b _022EB2BC
|
||||
_022EB23C:
|
||||
ldrsh r1, [r5, #4]
|
||||
add r0, sp, #4
|
||||
strh r1, [sp, #4]
|
||||
ldrsh r1, [r5, #6]
|
||||
strh r1, [sp, #6]
|
||||
ldrsh r1, [r4, #4]
|
||||
strh r1, [sp]
|
||||
ldrsh r1, [r4, #6]
|
||||
strh r1, [sp, #2]
|
||||
bl ov29_022E555C
|
||||
add r0, sp, #0
|
||||
bl ov29_022E555C
|
||||
ldrsh r1, [sp]
|
||||
ldrsh r2, [sp, #2]
|
||||
mov r0, r5
|
||||
mov r3, #1
|
||||
bl MoveMonsterToPos
|
||||
ldrsh r1, [sp, #4]
|
||||
ldrsh r2, [sp, #6]
|
||||
mov r0, r4
|
||||
mov r3, #1
|
||||
bl MoveMonsterToPos
|
||||
mov r0, r5
|
||||
mov r1, #0
|
||||
bl UpdateEntityPixelPos
|
||||
mov r0, r4
|
||||
mov r1, #0
|
||||
bl UpdateEntityPixelPos
|
||||
mov r0, r5
|
||||
bl ov29_02321260
|
||||
mov r0, r4
|
||||
bl ov29_02321260
|
||||
_022EB2BC:
|
||||
add sp, sp, #8
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_022EB2C4: .word 0x00000887
|
||||
#else
|
||||
_022EB2C4: .word 0x00000B76
|
||||
#endif
|
||||
arm_func_end TrySwitchPlace
|
||||
|
||||
arm_func_start ov29_022EB2C8
|
||||
ov29_022EB2C8: ; 0x022EB2C8
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
mov r5, r0
|
||||
ldr r0, _022EB360 ; =ov29_0237C91C
|
||||
mov r2, r5, lsl #3
|
||||
ldrh r6, [r0, r2]
|
||||
mov r4, r1
|
||||
cmp r6, #0x26
|
||||
bne _022EB2F8
|
||||
bl GetFloorType
|
||||
cmp r0, #2
|
||||
ldreq r0, _022EB364 ; =0x000009C9
|
||||
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
_022EB2F8:
|
||||
#ifdef JAPAN
|
||||
add r0, r6, #0x57
|
||||
add r0, r0, #0x2300
|
||||
#else
|
||||
add r0, r6, #0x87
|
||||
add r0, r0, #0x900
|
||||
#endif
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r7, r0, lsr #0x10
|
||||
mov r0, r7
|
||||
bl StringFromId
|
||||
ldr r1, _022EB368 ; =ov29_02352070
|
||||
bl strcmp
|
||||
cmp r0, #0
|
||||
moveq r0, #1
|
||||
movne r0, #0
|
||||
tst r0, #0xff
|
||||
beq _022EB34C
|
||||
ldr r0, _022EB36C ; =ov29_0237C91E
|
||||
mov r1, r5, lsl #3
|
||||
ldrsh r0, [r0, r1]
|
||||
bl sub_0200D208
|
||||
ldr r1, _022EB370 ; =ov29_02352032
|
||||
mov r0, r0, lsl #2
|
||||
ldrh r0, [r1, r0]
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
_022EB34C:
|
||||
cmp r4, #1
|
||||
cmpeq r6, #0x1a
|
||||
ldreq r0, _022EB374 ; =0x000009CA
|
||||
movne r0, r7
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_022EB360: .word ov29_0237C91C
|
||||
#ifdef JAPAN
|
||||
_022EB364: .word 0x00002399
|
||||
#else
|
||||
_022EB364: .word 0x000009C9
|
||||
#endif
|
||||
_022EB368: .word ov29_02352070
|
||||
_022EB36C: .word ov29_0237C91E
|
||||
_022EB370: .word ov29_02352032
|
||||
#ifdef JAPAN
|
||||
_022EB374: .word 0x0000239A
|
||||
#else
|
||||
_022EB374: .word 0x000009CA
|
||||
#endif
|
||||
arm_func_end ov29_022EB2C8
|
||||
|
||||
arm_func_start ov29_022EB378
|
||||
ov29_022EB378: ; 0x022EB378
|
||||
stmdb sp!, {r3, lr}
|
||||
ldrsh r0, [r0, #4]
|
||||
bl sub_0200D208
|
||||
ldr r1, _022EB394 ; =ov29_02352030
|
||||
mov r0, r0, lsl #2
|
||||
ldrh r0, [r1, r0]
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_022EB394: .word ov29_02352030
|
||||
arm_func_end ov29_022EB378
|
||||
|
||||
arm_func_start ResetLeaderActionFields
|
||||
ResetLeaderActionFields: ; 0x022EB398
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
bl GetLeaderMonster
|
||||
mov r1, #0
|
||||
strh r1, [r0, #0x4a]
|
||||
cmp r4, #0
|
||||
strneb r1, [r0, #0x4e]
|
||||
strneb r1, [r0, #0x54]
|
||||
subne r1, r1, #1
|
||||
strneh r1, [r0, #0x5a]
|
||||
strneh r1, [r0, #0x5c]
|
||||
ldmia sp!, {r4, pc}
|
||||
arm_func_end ResetLeaderActionFields
|
||||
|
||||
arm_func_start SetLeaderActionFields
|
||||
SetLeaderActionFields: ; 0x022EB3C8
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
bl GetLeaderMonster
|
||||
mov r1, #0
|
||||
strh r4, [r0, #0x4a]
|
||||
strb r1, [r0, #0x4e]
|
||||
strb r1, [r0, #0x54]
|
||||
sub r1, r1, #1
|
||||
strh r1, [r0, #0x5a]
|
||||
strh r1, [r0, #0x5c]
|
||||
ldmia sp!, {r4, pc}
|
||||
arm_func_end SetLeaderActionFields
|
||||
|
||||
78
asm/overlay_29_022EAE40.s
Normal file
78
asm/overlay_29_022EAE40.s
Normal file
@@ -0,0 +1,78 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_022EAE40.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start ov29_022EAE40
|
||||
ov29_022EAE40: ; 0x022EAE40
|
||||
stmdb sp!, {r4, lr}
|
||||
ldr lr, _022EAEA0 ; =DUNGEON_PTR
|
||||
ldr r2, _022EAEA4 ; =0x0002CB02
|
||||
ldr r4, [lr]
|
||||
ldr r1, _022EAEA8 ; =0x000003E7
|
||||
add r3, r2, #4
|
||||
strh r1, [r4, r2]
|
||||
ldr r4, [lr]
|
||||
add ip, r2, #2
|
||||
strh r0, [r4, r3]
|
||||
ldr r4, [lr]
|
||||
mov r3, #4
|
||||
strh r0, [r4, ip]
|
||||
ldr r0, [lr]
|
||||
sub r2, r2, #2
|
||||
add r0, r0, #0x2c000
|
||||
#ifdef JAPAN
|
||||
str r3, [r0, #0xa54]
|
||||
#else
|
||||
str r3, [r0, #0xaf8]
|
||||
#endif
|
||||
ldr r0, [lr]
|
||||
mov r3, #0
|
||||
strh r3, [r0, r2]
|
||||
ldr r0, [lr]
|
||||
add r0, r0, #0x700
|
||||
strh r1, [r0, #0x96]
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_022EAEA0: .word DUNGEON_PTR
|
||||
#ifdef JAPAN
|
||||
_022EAEA4: .word 0x0002CA5E
|
||||
#else
|
||||
_022EAEA4: .word 0x0002CB02
|
||||
#endif
|
||||
_022EAEA8: .word 0x000003E7
|
||||
arm_func_end ov29_022EAE40
|
||||
|
||||
arm_func_start ov29_022EAEAC
|
||||
ov29_022EAEAC: ; 0x022EAEAC
|
||||
stmdb sp!, {r3, lr}
|
||||
bl sub_02017ACC
|
||||
ldr r0, _022EAEE4 ; =0x0002CB02
|
||||
ldr r2, _022EAEE8 ; =DUNGEON_PTR
|
||||
ldr ip, _022EAEEC ; =0x000003E7
|
||||
ldr r3, [r2]
|
||||
add r1, r0, #2
|
||||
strh ip, [r3, r0]
|
||||
ldr r3, [r2]
|
||||
add r0, r0, #4
|
||||
strh ip, [r3, r1]
|
||||
ldr r1, [r2]
|
||||
strh ip, [r1, r0]
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_022EAEE4: .word 0x0002CA5E
|
||||
#else
|
||||
_022EAEE4: .word 0x0002CB02
|
||||
#endif
|
||||
_022EAEE8: .word DUNGEON_PTR
|
||||
_022EAEEC: .word 0x000003E7
|
||||
arm_func_end ov29_022EAEAC
|
||||
|
||||
arm_func_start ov29_022EAEF0
|
||||
ov29_022EAEF0: ; 0x022EAEF0
|
||||
ldr ip, _022EAEF8 ; =sub_02017D80
|
||||
bx ip
|
||||
.align 2, 0
|
||||
_022EAEF8: .word sub_02017D80
|
||||
arm_func_end ov29_022EAEF0
|
||||
384
asm/overlay_29_022EAF48.s
Normal file
384
asm/overlay_29_022EAF48.s
Normal file
@@ -0,0 +1,384 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_022EAF48.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start ov29_022EAF48
|
||||
ov29_022EAF48: ; 0x022EAF48
|
||||
stmdb sp!, {r4, lr}
|
||||
ldr ip, _022EAFA8 ; =DUNGEON_PTR
|
||||
mov r4, #0
|
||||
ldr r3, [ip]
|
||||
ldr lr, _022EAFAC ; =0x000003E7
|
||||
#ifdef JAPAN
|
||||
add r2, r3, #0x254
|
||||
add r3, r3, #0x2c000
|
||||
str r4, [r3, #0xa54]
|
||||
#else
|
||||
add r2, r3, #0x2f8
|
||||
add r3, r3, #0x2c000
|
||||
str r4, [r3, #0xaf8]
|
||||
#endif
|
||||
add r3, r2, #0x2c800
|
||||
str r4, [r3, #4]
|
||||
ldr r2, [ip]
|
||||
cmp r1, #0
|
||||
add r1, r2, #0x700
|
||||
strh lr, [r1, #0x96]
|
||||
bne _022EAF8C
|
||||
cmp r0, lr
|
||||
bne _022EAFA0
|
||||
_022EAF8C:
|
||||
ldr r0, _022EAFAC ; =0x000003E7
|
||||
strh r0, [r3, #0xa]
|
||||
strh r0, [r3, #0xc]
|
||||
strh r0, [r3, #0xe]
|
||||
ldmia sp!, {r4, pc}
|
||||
_022EAFA0:
|
||||
bl ov29_022EAE40
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_022EAFA8: .word DUNGEON_PTR
|
||||
_022EAFAC: .word 0x000003E7
|
||||
arm_func_end ov29_022EAF48
|
||||
|
||||
arm_func_start ov29_022EAFB0
|
||||
ov29_022EAFB0: ; 0x022EAFB0
|
||||
stmdb sp!, {r4, lr}
|
||||
ldr r0, _022EB168 ; =DUNGEON_PTR
|
||||
ldr r3, [r0]
|
||||
cmp r3, #0
|
||||
ldmeqia sp!, {r4, pc}
|
||||
add r0, r3, #0x700
|
||||
ldrh r0, [r0, #0x96]
|
||||
ldr r2, _022EB16C ; =0x000003E7
|
||||
#ifdef JAPAN
|
||||
add r1, r3, #0x254
|
||||
#else
|
||||
add r1, r3, #0x2f8
|
||||
#endif
|
||||
cmp r0, r2
|
||||
add r4, r1, #0x2c800
|
||||
bne _022EB034
|
||||
ldrb r1, [r3, #0x792]
|
||||
cmp r1, #0
|
||||
beq _022EB004
|
||||
ldr r0, _022EB170 ; =ov29_023516E8
|
||||
ldr r0, [r0, r1, lsl #2]
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r0, r0, asr #0x10
|
||||
bl MusicTableIdxToMusicId
|
||||
b _022EB034
|
||||
_022EB004:
|
||||
ldrb r0, [r3, #0x791]
|
||||
cmp r0, #0
|
||||
movne r0, #0xd
|
||||
bne _022EB034
|
||||
ldrb r0, [r3, #0x794]
|
||||
cmp r0, #0
|
||||
movne r0, #0xb
|
||||
bne _022EB034
|
||||
ldrb r0, [r3, #0x7c9]
|
||||
cmp r0, #0
|
||||
movne r0, #0xc
|
||||
ldreqh r0, [r4, #0xe]
|
||||
_022EB034:
|
||||
ldr r1, [r4]
|
||||
cmp r1, #4
|
||||
bne _022EB058
|
||||
ldrh r1, [r4, #0xc]
|
||||
cmp r0, r1
|
||||
movne r1, #2
|
||||
strne r1, [r4]
|
||||
strneh r0, [r4, #0xa]
|
||||
b _022EB078
|
||||
_022EB058:
|
||||
ldr r1, _022EB16C ; =0x000003E7
|
||||
cmp r0, r1
|
||||
beq _022EB078
|
||||
ldrh r2, [r4, #0xa]
|
||||
cmp r2, r1
|
||||
moveq r1, #1
|
||||
streq r1, [r4]
|
||||
streqh r0, [r4, #0xa]
|
||||
_022EB078:
|
||||
ldr r0, [r4]
|
||||
cmp r0, #4
|
||||
addls pc, pc, r0, lsl #2
|
||||
ldmia sp!, {r4, pc}
|
||||
_022EB088: ; jump table
|
||||
ldmia sp!, {r4, pc} ; case 0
|
||||
b _022EB09C ; case 1
|
||||
b _022EB108 ; case 2
|
||||
b _022EB124 ; case 3
|
||||
ldmia sp!, {r4, pc} ; case 4
|
||||
_022EB09C:
|
||||
ldrh r2, [r4, #0xa]
|
||||
ldr r0, _022EB16C ; =0x000003E7
|
||||
cmp r2, r0
|
||||
moveq r0, #0
|
||||
streq r0, [r4]
|
||||
beq _022EB0FC
|
||||
tst r2, #0x8000
|
||||
ldr r0, _022EB174 ; =0x00007FFF
|
||||
beq _022EB0D4
|
||||
and r0, r2, r0
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r0, r0, lsr #0x10
|
||||
bl PlayBgmByIdVeneer
|
||||
b _022EB0EC
|
||||
_022EB0D4:
|
||||
and r0, r2, r0
|
||||
mov r0, r0, lsl #0x10
|
||||
ldrh r1, [r4, #8]
|
||||
mov r0, r0, lsr #0x10
|
||||
mov r2, #0x100
|
||||
bl PlayBgmByIdVolumeVeneer
|
||||
_022EB0EC:
|
||||
ldrh r1, [r4, #0xa]
|
||||
mov r0, #4
|
||||
strh r1, [r4, #0xc]
|
||||
str r0, [r4]
|
||||
_022EB0FC:
|
||||
ldr r0, _022EB16C ; =0x000003E7
|
||||
strh r0, [r4, #0xa]
|
||||
ldmia sp!, {r4, pc}
|
||||
_022EB108:
|
||||
mov r0, #0x1e
|
||||
bl sub_02017B7C
|
||||
mov r0, #0x1e
|
||||
str r0, [r4, #4]
|
||||
mov r0, #3
|
||||
str r0, [r4]
|
||||
ldmia sp!, {r4, pc}
|
||||
_022EB124:
|
||||
ldr r0, [r4, #4]
|
||||
cmp r0, #0
|
||||
subne r0, r0, #1
|
||||
strne r0, [r4, #4]
|
||||
ldr r0, [r4, #4]
|
||||
cmp r0, #0
|
||||
ldmneia sp!, {r4, pc}
|
||||
ldrh r1, [r4, #0xa]
|
||||
ldr r0, _022EB16C ; =0x000003E7
|
||||
cmp r1, r0
|
||||
movne r0, #1
|
||||
strne r0, [r4]
|
||||
ldmneia sp!, {r4, pc}
|
||||
bl sub_02017B70
|
||||
mov r0, #0
|
||||
str r0, [r4]
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_022EB168: .word DUNGEON_PTR
|
||||
_022EB16C: .word 0x000003E7
|
||||
_022EB170: .word ov29_023516E8
|
||||
_022EB174: .word 0x00007FFF
|
||||
arm_func_end ov29_022EAFB0
|
||||
|
||||
arm_func_start TrySwitchPlace
|
||||
TrySwitchPlace: ; 0x022EB178
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
sub sp, sp, #8
|
||||
mov r4, r1
|
||||
mov r1, #0xe
|
||||
mov r5, r0
|
||||
bl AbilityIsActiveVeneer
|
||||
cmp r0, #0
|
||||
beq _022EB1BC
|
||||
mov r0, #0
|
||||
mov r1, r5
|
||||
mov r2, r0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
ldr r2, _022EB2C4 ; =0x00000B76
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
b _022EB2BC
|
||||
_022EB1BC:
|
||||
cmp r5, r4
|
||||
beq _022EB204
|
||||
cmp r5, #0
|
||||
moveq r0, #0
|
||||
beq _022EB1E4
|
||||
ldr r0, [r5]
|
||||
cmp r0, #1
|
||||
moveq r0, #1
|
||||
movne r0, #0
|
||||
and r0, r0, #0xff
|
||||
_022EB1E4:
|
||||
cmp r0, #0
|
||||
beq _022EB204
|
||||
mov r0, r5
|
||||
mov r1, #0x53
|
||||
bl AbilityIsActiveVeneer
|
||||
cmp r0, #0
|
||||
movne r0, #0
|
||||
bne _022EB210
|
||||
_022EB204:
|
||||
mov r0, r4
|
||||
mov r1, #0xe
|
||||
bl AbilityIsActiveVeneer
|
||||
_022EB210:
|
||||
cmp r0, #0
|
||||
beq _022EB23C
|
||||
mov r0, #0
|
||||
mov r1, r4
|
||||
mov r2, r0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
ldr r2, _022EB2C4 ; =0x00000B76
|
||||
mov r0, r5
|
||||
mov r1, r4
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
b _022EB2BC
|
||||
_022EB23C:
|
||||
ldrsh r1, [r5, #4]
|
||||
add r0, sp, #4
|
||||
strh r1, [sp, #4]
|
||||
ldrsh r1, [r5, #6]
|
||||
strh r1, [sp, #6]
|
||||
ldrsh r1, [r4, #4]
|
||||
strh r1, [sp]
|
||||
ldrsh r1, [r4, #6]
|
||||
strh r1, [sp, #2]
|
||||
bl ov29_022E555C
|
||||
add r0, sp, #0
|
||||
bl ov29_022E555C
|
||||
ldrsh r1, [sp]
|
||||
ldrsh r2, [sp, #2]
|
||||
mov r0, r5
|
||||
mov r3, #1
|
||||
bl MoveMonsterToPos
|
||||
ldrsh r1, [sp, #4]
|
||||
ldrsh r2, [sp, #6]
|
||||
mov r0, r4
|
||||
mov r3, #1
|
||||
bl MoveMonsterToPos
|
||||
mov r0, r5
|
||||
mov r1, #0
|
||||
bl UpdateEntityPixelPos
|
||||
mov r0, r4
|
||||
mov r1, #0
|
||||
bl UpdateEntityPixelPos
|
||||
mov r0, r5
|
||||
bl ov29_02321260
|
||||
mov r0, r4
|
||||
bl ov29_02321260
|
||||
_022EB2BC:
|
||||
add sp, sp, #8
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
_022EB2C4: .word 0x00000887
|
||||
#else
|
||||
_022EB2C4: .word 0x00000B76
|
||||
#endif
|
||||
arm_func_end TrySwitchPlace
|
||||
|
||||
arm_func_start ov29_022EB2C8
|
||||
ov29_022EB2C8: ; 0x022EB2C8
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
mov r5, r0
|
||||
ldr r0, _022EB360 ; =ov29_0237C91C
|
||||
mov r2, r5, lsl #3
|
||||
ldrh r6, [r0, r2]
|
||||
mov r4, r1
|
||||
cmp r6, #0x26
|
||||
bne _022EB2F8
|
||||
bl GetFloorType
|
||||
cmp r0, #2
|
||||
ldreq r0, _022EB364 ; =0x000009C9
|
||||
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
_022EB2F8:
|
||||
#ifdef JAPAN
|
||||
add r0, r6, #0x57
|
||||
add r0, r0, #0x2300
|
||||
#else
|
||||
add r0, r6, #0x87
|
||||
add r0, r0, #0x900
|
||||
#endif
|
||||
mov r0, r0, lsl #0x10
|
||||
mov r7, r0, lsr #0x10
|
||||
mov r0, r7
|
||||
bl StringFromId
|
||||
ldr r1, _022EB368 ; =ov29_02352070
|
||||
bl strcmp
|
||||
cmp r0, #0
|
||||
moveq r0, #1
|
||||
movne r0, #0
|
||||
tst r0, #0xff
|
||||
beq _022EB34C
|
||||
ldr r0, _022EB36C ; =ov29_0237C91E
|
||||
mov r1, r5, lsl #3
|
||||
ldrsh r0, [r0, r1]
|
||||
bl sub_0200D208
|
||||
ldr r1, _022EB370 ; =ov29_02352032
|
||||
mov r0, r0, lsl #2
|
||||
ldrh r0, [r1, r0]
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
_022EB34C:
|
||||
cmp r4, #1
|
||||
cmpeq r6, #0x1a
|
||||
ldreq r0, _022EB374 ; =0x000009CA
|
||||
movne r0, r7
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_022EB360: .word ov29_0237C91C
|
||||
#ifdef JAPAN
|
||||
_022EB364: .word 0x00002399
|
||||
#else
|
||||
_022EB364: .word 0x000009C9
|
||||
#endif
|
||||
_022EB368: .word ov29_02352070
|
||||
_022EB36C: .word ov29_0237C91E
|
||||
_022EB370: .word ov29_02352032
|
||||
#ifdef JAPAN
|
||||
_022EB374: .word 0x0000239A
|
||||
#else
|
||||
_022EB374: .word 0x000009CA
|
||||
#endif
|
||||
arm_func_end ov29_022EB2C8
|
||||
|
||||
arm_func_start ov29_022EB378
|
||||
ov29_022EB378: ; 0x022EB378
|
||||
stmdb sp!, {r3, lr}
|
||||
ldrsh r0, [r0, #4]
|
||||
bl sub_0200D208
|
||||
ldr r1, _022EB394 ; =ov29_02352030
|
||||
mov r0, r0, lsl #2
|
||||
ldrh r0, [r1, r0]
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_022EB394: .word ov29_02352030
|
||||
arm_func_end ov29_022EB378
|
||||
|
||||
arm_func_start ResetLeaderActionFields
|
||||
ResetLeaderActionFields: ; 0x022EB398
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
bl GetLeaderMonster
|
||||
mov r1, #0
|
||||
strh r1, [r0, #0x4a]
|
||||
cmp r4, #0
|
||||
strneb r1, [r0, #0x4e]
|
||||
strneb r1, [r0, #0x54]
|
||||
subne r1, r1, #1
|
||||
strneh r1, [r0, #0x5a]
|
||||
strneh r1, [r0, #0x5c]
|
||||
ldmia sp!, {r4, pc}
|
||||
arm_func_end ResetLeaderActionFields
|
||||
|
||||
arm_func_start SetLeaderActionFields
|
||||
SetLeaderActionFields: ; 0x022EB3C8
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
bl GetLeaderMonster
|
||||
mov r1, #0
|
||||
strh r4, [r0, #0x4a]
|
||||
strb r1, [r0, #0x4e]
|
||||
strb r1, [r0, #0x54]
|
||||
sub r1, r1, #1
|
||||
strh r1, [r0, #0x5a]
|
||||
strh r1, [r0, #0x5c]
|
||||
ldmia sp!, {r4, pc}
|
||||
arm_func_end SetLeaderActionFields
|
||||
@@ -108,81 +108,3 @@ _022ECF3C: .word 0x00000A41
|
||||
#endif
|
||||
_022ECF40: .word 0x000003E7
|
||||
arm_func_end CreateMonsterSummaryFromEntityOuter
|
||||
|
||||
arm_func_start IsDungeonEndReasonFailure
|
||||
IsDungeonEndReasonFailure: ; 0x022ECF44
|
||||
ldr r1, _022ECF6C ; =DUNGEON_PTR
|
||||
ldr r0, _022ECF70 ; =0x0002CA66
|
||||
ldr r2, [r1]
|
||||
ldr r1, _022ECF74 ; =0x00000279
|
||||
ldrsh r0, [r2, r0]
|
||||
cmp r0, r1
|
||||
movlt r0, #1
|
||||
movge r0, #0
|
||||
and r0, r0, #0xff
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_022ECF6C: .word DUNGEON_PTR
|
||||
#ifdef JAPAN
|
||||
_022ECF70: .word 0x0002C9C2
|
||||
#else
|
||||
_022ECF70: .word 0x0002CA66
|
||||
#endif
|
||||
_022ECF74: .word 0x00000279
|
||||
arm_func_end IsDungeonEndReasonFailure
|
||||
|
||||
arm_func_start ov29_022ECF78
|
||||
ov29_022ECF78: ; 0x022ECF78
|
||||
ldr r1, _022ECFAC ; =DUNGEON_PTR
|
||||
ldr r0, _022ECFB0 ; =0x0002CA66
|
||||
ldr r2, [r1]
|
||||
ldr r1, _022ECFB4 ; =0x0000027A
|
||||
ldrsh r2, [r2, r0]
|
||||
cmp r2, r1
|
||||
addne r0, r1, #3
|
||||
cmpne r2, r0
|
||||
addne r0, r1, #1
|
||||
cmpne r2, r0
|
||||
moveq r0, #1
|
||||
movne r0, #0
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_022ECFAC: .word DUNGEON_PTR
|
||||
#ifdef JAPAN
|
||||
_022ECFB0: .word 0x0002C9C2
|
||||
#else
|
||||
_022ECFB0: .word 0x0002CA66
|
||||
#endif
|
||||
_022ECFB4: .word 0x0000027A
|
||||
arm_func_end ov29_022ECF78
|
||||
|
||||
arm_func_start ov29_022ECFB8
|
||||
ov29_022ECFB8: ; 0x022ECFB8
|
||||
stmdb sp!, {r4, lr}
|
||||
ldr r1, _022ED004 ; =DUNGEON_PTR
|
||||
mov r4, r0
|
||||
ldr r1, [r1]
|
||||
cmp r1, #0
|
||||
beq _022ECFF8
|
||||
#ifdef JAPAN
|
||||
add r0, r1, #0x168
|
||||
#else
|
||||
add r0, r1, #0x20c
|
||||
#endif
|
||||
add lr, r0, #0x2c800
|
||||
mov ip, #0xe
|
||||
_022ECFDC:
|
||||
ldmia lr!, {r0, r1, r2, r3}
|
||||
stmia r4!, {r0, r1, r2, r3}
|
||||
subs ip, ip, #1
|
||||
bne _022ECFDC
|
||||
ldmia lr, {r0, r1}
|
||||
stmia r4, {r0, r1}
|
||||
ldmia sp!, {r4, pc}
|
||||
_022ECFF8:
|
||||
mov r1, #0xe8
|
||||
bl MemZero
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_022ED004: .word DUNGEON_PTR
|
||||
arm_func_end ov29_022ECFB8
|
||||
|
||||
60
asm/overlay_29_022ECF78.s
Normal file
60
asm/overlay_29_022ECF78.s
Normal file
@@ -0,0 +1,60 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_022ECF78.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start ov29_022ECF78
|
||||
ov29_022ECF78: ; 0x022ECF78
|
||||
ldr r1, _022ECFAC ; =DUNGEON_PTR
|
||||
ldr r0, _022ECFB0 ; =0x0002CA66
|
||||
ldr r2, [r1]
|
||||
ldr r1, _022ECFB4 ; =0x0000027A
|
||||
ldrsh r2, [r2, r0]
|
||||
cmp r2, r1
|
||||
addne r0, r1, #3
|
||||
cmpne r2, r0
|
||||
addne r0, r1, #1
|
||||
cmpne r2, r0
|
||||
moveq r0, #1
|
||||
movne r0, #0
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_022ECFAC: .word DUNGEON_PTR
|
||||
#ifdef JAPAN
|
||||
_022ECFB0: .word 0x0002C9C2
|
||||
#else
|
||||
_022ECFB0: .word 0x0002CA66
|
||||
#endif
|
||||
_022ECFB4: .word 0x0000027A
|
||||
arm_func_end ov29_022ECF78
|
||||
|
||||
arm_func_start ov29_022ECFB8
|
||||
ov29_022ECFB8: ; 0x022ECFB8
|
||||
stmdb sp!, {r4, lr}
|
||||
ldr r1, _022ED004 ; =DUNGEON_PTR
|
||||
mov r4, r0
|
||||
ldr r1, [r1]
|
||||
cmp r1, #0
|
||||
beq _022ECFF8
|
||||
#ifdef JAPAN
|
||||
add r0, r1, #0x168
|
||||
#else
|
||||
add r0, r1, #0x20c
|
||||
#endif
|
||||
add lr, r0, #0x2c800
|
||||
mov ip, #0xe
|
||||
_022ECFDC:
|
||||
ldmia lr!, {r0, r1, r2, r3}
|
||||
stmia r4!, {r0, r1, r2, r3}
|
||||
subs ip, ip, #1
|
||||
bne _022ECFDC
|
||||
ldmia lr, {r0, r1}
|
||||
stmia r4, {r0, r1}
|
||||
ldmia sp!, {r4, pc}
|
||||
_022ECFF8:
|
||||
mov r1, #0xe8
|
||||
bl MemZero
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_022ED004: .word DUNGEON_PTR
|
||||
arm_func_end ov29_022ECFB8
|
||||
@@ -31,197 +31,3 @@ UpdateShouldBoostHiddenStairsSpawnChance: ; 0x0233861C
|
||||
.align 2, 0
|
||||
_02338658: .word DUNGEON_PTR
|
||||
arm_func_end UpdateShouldBoostHiddenStairsSpawnChance
|
||||
|
||||
arm_func_start IsSecretRoom
|
||||
IsSecretRoom: ; 0x0233865C
|
||||
ldr r0, _02338680 ; =DUNGEON_PTR
|
||||
ldr r0, [r0]
|
||||
add r0, r0, #0x4000
|
||||
#ifdef JAPAN
|
||||
ldrb r0, [r0, #0x36]
|
||||
#else
|
||||
ldrb r0, [r0, #0xda]
|
||||
#endif
|
||||
cmp r0, #0x71
|
||||
moveq r0, #1
|
||||
movne r0, #0
|
||||
and r0, r0, #0xff
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_02338680: .word DUNGEON_PTR
|
||||
arm_func_end IsSecretRoom
|
||||
|
||||
arm_func_start IsSecretFloor
|
||||
IsSecretFloor: ; 0x02338684
|
||||
stmdb sp!, {r3, lr}
|
||||
bl IsSecretBazaar
|
||||
cmp r0, #0
|
||||
bne _023386A0
|
||||
bl IsSecretRoom
|
||||
cmp r0, #0
|
||||
beq _023386A8
|
||||
_023386A0:
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, pc}
|
||||
_023386A8:
|
||||
mov r0, #0
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end IsSecretFloor
|
||||
|
||||
arm_func_start GetCurrentHiddenStairsType
|
||||
GetCurrentHiddenStairsType: ; 0x023386B0
|
||||
stmdb sp!, {r3, lr}
|
||||
bl IsSecretBazaar
|
||||
cmp r0, #0
|
||||
movne r0, #1
|
||||
ldmneia sp!, {r3, pc}
|
||||
bl IsSecretRoom
|
||||
cmp r0, #0
|
||||
movne r0, #2
|
||||
moveq r0, #0
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end GetCurrentHiddenStairsType
|
||||
|
||||
arm_func_start HiddenStairsPresent
|
||||
HiddenStairsPresent: ; 0x023386D8
|
||||
ldr r0, _02338704 ; =DUNGEON_PTR
|
||||
mvn r1, #0
|
||||
ldr r0, [r0]
|
||||
add r0, r0, #0xcc00
|
||||
#ifdef JAPAN
|
||||
ldrsh r2, [r0, #0x44]
|
||||
cmp r2, r1
|
||||
ldrnesh r0, [r0, #0x46]
|
||||
#else
|
||||
ldrsh r2, [r0, #0xe8]
|
||||
cmp r2, r1
|
||||
ldrnesh r0, [r0, #0xea]
|
||||
#endif
|
||||
cmpne r0, r1
|
||||
moveq r0, #0
|
||||
movne r0, #1
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_02338704: .word DUNGEON_PTR
|
||||
arm_func_end HiddenStairsPresent
|
||||
|
||||
arm_func_start PositionIsOnHiddenStairs
|
||||
PositionIsOnHiddenStairs: ; 0x02338708
|
||||
ldr r1, _02338738 ; =DUNGEON_PTR
|
||||
ldrsh r2, [r0]
|
||||
ldr r1, [r1]
|
||||
add r1, r1, #0xcc00
|
||||
#ifdef JAPAN
|
||||
ldrsh r3, [r1, #0x44]
|
||||
cmp r3, r2
|
||||
ldreqsh r1, [r1, #0x46]
|
||||
#else
|
||||
ldrsh r3, [r1, #0xe8]
|
||||
cmp r3, r2
|
||||
ldreqsh r1, [r1, #0xea]
|
||||
#endif
|
||||
ldreqsh r0, [r0, #2]
|
||||
cmpeq r1, r0
|
||||
moveq r0, #1
|
||||
movne r0, #0
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_02338738: .word DUNGEON_PTR
|
||||
arm_func_end PositionIsOnHiddenStairs
|
||||
|
||||
arm_func_start ov29_0233873C
|
||||
ov29_0233873C: ; 0x0233873C
|
||||
stmdb sp!, {r3, lr}
|
||||
bl HiddenStairsPresent
|
||||
cmp r0, #0
|
||||
ldmeqia sp!, {r3, pc}
|
||||
ldr r0, _02338764 ; =DUNGEON_PTR
|
||||
ldr r0, [r0]
|
||||
#ifdef JAPAN
|
||||
add r0, r0, #0x44
|
||||
#else
|
||||
add r0, r0, #0xe8
|
||||
#endif
|
||||
add r0, r0, #0xcc00
|
||||
bl ov29_02338768
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_02338764: .word DUNGEON_PTR
|
||||
arm_func_end ov29_0233873C
|
||||
|
||||
arm_func_start ov29_02338768
|
||||
ov29_02338768: ; 0x02338768
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov r5, r0
|
||||
bl ov29_022E2418
|
||||
mov r4, r0
|
||||
ldrsh r0, [r5]
|
||||
ldrsh r1, [r5, #2]
|
||||
bl GetTileSafe
|
||||
str r4, [r0, #0x10]
|
||||
mov r0, #0
|
||||
strb r0, [r4, #0x20]
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
arm_func_end ov29_02338768
|
||||
|
||||
arm_func_start HiddenStairsTrigger
|
||||
HiddenStairsTrigger: ; 0x02338794
|
||||
#ifdef JAPAN
|
||||
#define HIDDEN_STAIRS_TRIGGER_OFFSET -0xA4
|
||||
#else
|
||||
#define HIDDEN_STAIRS_TRIGGER_OFFSET 0
|
||||
#endif
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov r5, r0
|
||||
bl HiddenStairsPresent
|
||||
cmp r0, #0
|
||||
ldmeqia sp!, {r3, r4, r5, pc}
|
||||
ldr r0, _02338848 ; =DUNGEON_PTR
|
||||
ldr r0, [r0]
|
||||
add r1, r0, #0xcc00
|
||||
ldrsh r0, [r1, #0xe8 + HIDDEN_STAIRS_TRIGGER_OFFSET]
|
||||
ldrsh r1, [r1, #0xea + HIDDEN_STAIRS_TRIGGER_OFFSET]
|
||||
bl GetTileSafe
|
||||
mov r4, r0
|
||||
ldr r0, [r4, #0x10]
|
||||
ldrb r0, [r0, #0x20]
|
||||
cmp r0, #0
|
||||
ldmneia sp!, {r3, r4, r5, pc}
|
||||
ldr r0, _02338848 ; =DUNGEON_PTR
|
||||
ldr r2, [r0]
|
||||
add r0, r2, #0x1a000
|
||||
ldrb r1, [r0, #0x246 + HIDDEN_STAIRS_TRIGGER_OFFSET]
|
||||
cmp r1, #0
|
||||
ldreqb r0, [r0, #0x244 + HIDDEN_STAIRS_TRIGGER_OFFSET]
|
||||
cmpeq r0, #0
|
||||
bne _0233881C
|
||||
cmp r5, #0
|
||||
beq _0233881C
|
||||
add r0, r2, #0xe8 + HIDDEN_STAIRS_TRIGGER_OFFSET
|
||||
add r0, r0, #0xcc00
|
||||
mov r1, #0x41
|
||||
mov r2, #1
|
||||
bl PlayEffectAnimationPos
|
||||
bl GetLeader
|
||||
ldr r1, _0233884C ; =0x00000F31
|
||||
bl LogMessageByIdWithPopupCheckUser
|
||||
_0233881C:
|
||||
ldr r1, [r4, #0x10]
|
||||
mov r2, #1
|
||||
ldr r0, _02338848 ; =DUNGEON_PTR
|
||||
strb r2, [r1, #0x20]
|
||||
ldr r0, [r0]
|
||||
add r1, r0, #0xcc00
|
||||
ldrsh r0, [r1, #0xe8 + HIDDEN_STAIRS_TRIGGER_OFFSET]
|
||||
ldrsh r1, [r1, #0xea + HIDDEN_STAIRS_TRIGGER_OFFSET]
|
||||
bl DrawMinimapTile
|
||||
bl UpdateTrapsVisibility
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_02338848: .word DUNGEON_PTR
|
||||
#ifdef JAPAN
|
||||
_0233884C: .word 0x000008A8
|
||||
#else
|
||||
_0233884C: .word 0x00000F31
|
||||
#endif
|
||||
arm_func_end HiddenStairsTrigger
|
||||
|
||||
179
asm/overlay_29_02338684.s
Normal file
179
asm/overlay_29_02338684.s
Normal file
@@ -0,0 +1,179 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_02338684.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start IsSecretFloor
|
||||
IsSecretFloor: ; 0x02338684
|
||||
stmdb sp!, {r3, lr}
|
||||
bl IsSecretBazaar
|
||||
cmp r0, #0
|
||||
bne _023386A0
|
||||
bl IsSecretRoom
|
||||
cmp r0, #0
|
||||
beq _023386A8
|
||||
_023386A0:
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, pc}
|
||||
_023386A8:
|
||||
mov r0, #0
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end IsSecretFloor
|
||||
|
||||
arm_func_start GetCurrentHiddenStairsType
|
||||
GetCurrentHiddenStairsType: ; 0x023386B0
|
||||
stmdb sp!, {r3, lr}
|
||||
bl IsSecretBazaar
|
||||
cmp r0, #0
|
||||
movne r0, #1
|
||||
ldmneia sp!, {r3, pc}
|
||||
bl IsSecretRoom
|
||||
cmp r0, #0
|
||||
movne r0, #2
|
||||
moveq r0, #0
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end GetCurrentHiddenStairsType
|
||||
|
||||
arm_func_start HiddenStairsPresent
|
||||
HiddenStairsPresent: ; 0x023386D8
|
||||
ldr r0, _02338704 ; =DUNGEON_PTR
|
||||
mvn r1, #0
|
||||
ldr r0, [r0]
|
||||
add r0, r0, #0xcc00
|
||||
#ifdef JAPAN
|
||||
ldrsh r2, [r0, #0x44]
|
||||
cmp r2, r1
|
||||
ldrnesh r0, [r0, #0x46]
|
||||
#else
|
||||
ldrsh r2, [r0, #0xe8]
|
||||
cmp r2, r1
|
||||
ldrnesh r0, [r0, #0xea]
|
||||
#endif
|
||||
cmpne r0, r1
|
||||
moveq r0, #0
|
||||
movne r0, #1
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_02338704: .word DUNGEON_PTR
|
||||
arm_func_end HiddenStairsPresent
|
||||
|
||||
arm_func_start PositionIsOnHiddenStairs
|
||||
PositionIsOnHiddenStairs: ; 0x02338708
|
||||
ldr r1, _02338738 ; =DUNGEON_PTR
|
||||
ldrsh r2, [r0]
|
||||
ldr r1, [r1]
|
||||
add r1, r1, #0xcc00
|
||||
#ifdef JAPAN
|
||||
ldrsh r3, [r1, #0x44]
|
||||
cmp r3, r2
|
||||
ldreqsh r1, [r1, #0x46]
|
||||
#else
|
||||
ldrsh r3, [r1, #0xe8]
|
||||
cmp r3, r2
|
||||
ldreqsh r1, [r1, #0xea]
|
||||
#endif
|
||||
ldreqsh r0, [r0, #2]
|
||||
cmpeq r1, r0
|
||||
moveq r0, #1
|
||||
movne r0, #0
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_02338738: .word DUNGEON_PTR
|
||||
arm_func_end PositionIsOnHiddenStairs
|
||||
|
||||
arm_func_start ov29_0233873C
|
||||
ov29_0233873C: ; 0x0233873C
|
||||
stmdb sp!, {r3, lr}
|
||||
bl HiddenStairsPresent
|
||||
cmp r0, #0
|
||||
ldmeqia sp!, {r3, pc}
|
||||
ldr r0, _02338764 ; =DUNGEON_PTR
|
||||
ldr r0, [r0]
|
||||
#ifdef JAPAN
|
||||
add r0, r0, #0x44
|
||||
#else
|
||||
add r0, r0, #0xe8
|
||||
#endif
|
||||
add r0, r0, #0xcc00
|
||||
bl ov29_02338768
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_02338764: .word DUNGEON_PTR
|
||||
arm_func_end ov29_0233873C
|
||||
|
||||
arm_func_start ov29_02338768
|
||||
ov29_02338768: ; 0x02338768
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov r5, r0
|
||||
bl ov29_022E2418
|
||||
mov r4, r0
|
||||
ldrsh r0, [r5]
|
||||
ldrsh r1, [r5, #2]
|
||||
bl GetTileSafe
|
||||
str r4, [r0, #0x10]
|
||||
mov r0, #0
|
||||
strb r0, [r4, #0x20]
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
arm_func_end ov29_02338768
|
||||
|
||||
arm_func_start HiddenStairsTrigger
|
||||
HiddenStairsTrigger: ; 0x02338794
|
||||
#ifdef JAPAN
|
||||
#define HIDDEN_STAIRS_TRIGGER_OFFSET -0xA4
|
||||
#else
|
||||
#define HIDDEN_STAIRS_TRIGGER_OFFSET 0
|
||||
#endif
|
||||
stmdb sp!, {r3, r4, r5, lr}
|
||||
mov r5, r0
|
||||
bl HiddenStairsPresent
|
||||
cmp r0, #0
|
||||
ldmeqia sp!, {r3, r4, r5, pc}
|
||||
ldr r0, _02338848 ; =DUNGEON_PTR
|
||||
ldr r0, [r0]
|
||||
add r1, r0, #0xcc00
|
||||
ldrsh r0, [r1, #0xe8 + HIDDEN_STAIRS_TRIGGER_OFFSET]
|
||||
ldrsh r1, [r1, #0xea + HIDDEN_STAIRS_TRIGGER_OFFSET]
|
||||
bl GetTileSafe
|
||||
mov r4, r0
|
||||
ldr r0, [r4, #0x10]
|
||||
ldrb r0, [r0, #0x20]
|
||||
cmp r0, #0
|
||||
ldmneia sp!, {r3, r4, r5, pc}
|
||||
ldr r0, _02338848 ; =DUNGEON_PTR
|
||||
ldr r2, [r0]
|
||||
add r0, r2, #0x1a000
|
||||
ldrb r1, [r0, #0x246 + HIDDEN_STAIRS_TRIGGER_OFFSET]
|
||||
cmp r1, #0
|
||||
ldreqb r0, [r0, #0x244 + HIDDEN_STAIRS_TRIGGER_OFFSET]
|
||||
cmpeq r0, #0
|
||||
bne _0233881C
|
||||
cmp r5, #0
|
||||
beq _0233881C
|
||||
add r0, r2, #0xe8 + HIDDEN_STAIRS_TRIGGER_OFFSET
|
||||
add r0, r0, #0xcc00
|
||||
mov r1, #0x41
|
||||
mov r2, #1
|
||||
bl PlayEffectAnimationPos
|
||||
bl GetLeader
|
||||
ldr r1, _0233884C ; =0x00000F31
|
||||
bl LogMessageByIdWithPopupCheckUser
|
||||
_0233881C:
|
||||
ldr r1, [r4, #0x10]
|
||||
mov r2, #1
|
||||
ldr r0, _02338848 ; =DUNGEON_PTR
|
||||
strb r2, [r1, #0x20]
|
||||
ldr r0, [r0]
|
||||
add r1, r0, #0xcc00
|
||||
ldrsh r0, [r1, #0xe8 + HIDDEN_STAIRS_TRIGGER_OFFSET]
|
||||
ldrsh r1, [r1, #0xea + HIDDEN_STAIRS_TRIGGER_OFFSET]
|
||||
bl DrawMinimapTile
|
||||
bl UpdateTrapsVisibility
|
||||
ldmia sp!, {r3, r4, r5, pc}
|
||||
.align 2, 0
|
||||
_02338848: .word DUNGEON_PTR
|
||||
#ifdef JAPAN
|
||||
_0233884C: .word 0x000008A8
|
||||
#else
|
||||
_0233884C: .word 0x00000F31
|
||||
#endif
|
||||
arm_func_end HiddenStairsTrigger
|
||||
@@ -1,24 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_0234969C.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start ov29_0234969C
|
||||
ov29_0234969C: ; 0x0234969C
|
||||
ldr r1, _023496AC ; =DUNGEON_PTR
|
||||
ldr r1, [r1]
|
||||
strb r0, [r1, #2]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_023496AC: .word DUNGEON_PTR
|
||||
arm_func_end ov29_0234969C
|
||||
|
||||
arm_func_start ov29_023496B0
|
||||
ov29_023496B0: ; 0x023496B0
|
||||
ldr r0, _023496C0 ; =DUNGEON_PTR
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, #2]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_023496C0: .word DUNGEON_PTR
|
||||
arm_func_end ov29_023496B0
|
||||
9
include/overlay_29_022EAE14.h
Normal file
9
include/overlay_29_022EAE14.h
Normal file
@@ -0,0 +1,9 @@
|
||||
#ifndef PMDSKY_OVERLAY_29_022EAE14_H
|
||||
#define PMDSKY_OVERLAY_29_022EAE14_H
|
||||
|
||||
#include "dungeon.h"
|
||||
#include "util.h"
|
||||
|
||||
void ChangeDungeonMusic(enum music_id music);
|
||||
|
||||
#endif
|
||||
11
include/overlay_29_022EAEFC.h
Normal file
11
include/overlay_29_022EAEFC.h
Normal file
@@ -0,0 +1,11 @@
|
||||
#ifndef PMDSKY_OVERLAY_29_022EAEFC_H
|
||||
#define PMDSKY_OVERLAY_29_022EAEFC_H
|
||||
|
||||
#include "dungeon.h"
|
||||
#include "util.h"
|
||||
|
||||
bool8 ov29_022EAEFC(void);
|
||||
u8 ov29_022EAF20(void);
|
||||
void SetUnkMusicFlag(u8 value);
|
||||
|
||||
#endif
|
||||
9
include/overlay_29_022ECF44.h
Normal file
9
include/overlay_29_022ECF44.h
Normal file
@@ -0,0 +1,9 @@
|
||||
#ifndef PMDSKY_OVERLAY_29_022ECF44_H
|
||||
#define PMDSKY_OVERLAY_29_022ECF44_H
|
||||
|
||||
#include "dungeon.h"
|
||||
#include "util.h"
|
||||
|
||||
bool8 IsDungeonEndReasonFailure(void);
|
||||
|
||||
#endif
|
||||
9
include/overlay_29_0233865C.h
Normal file
9
include/overlay_29_0233865C.h
Normal file
@@ -0,0 +1,9 @@
|
||||
#ifndef PMDSKY_OVERLAY_29_0233865C_H
|
||||
#define PMDSKY_OVERLAY_29_0233865C_H
|
||||
|
||||
#include "dungeon.h"
|
||||
#include "util.h"
|
||||
|
||||
bool8 IsSecretRoom(void);
|
||||
|
||||
#endif
|
||||
@@ -5,5 +5,7 @@
|
||||
#include "util.h"
|
||||
|
||||
void ov29_02349688(bool8 value);
|
||||
void ov29_0234969C(bool8 value);
|
||||
bool8 ov29_023496B0(void);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -6,5 +6,7 @@
|
||||
|
||||
bool8 IsBossFight(enum fixed_room_id fixed_room_id);
|
||||
bool8 IsCurrentFixedRoomBossFight();
|
||||
bool8 IsMarowakTrainingMaze(void);
|
||||
bool8 FixedRoomIsSubstituteRoom(void);
|
||||
|
||||
#endif //PMDSKY_RUN_DUNGEON_1_H
|
||||
|
||||
11
main.lsf
11
main.lsf
@@ -752,7 +752,7 @@ Overlay OVY_29
|
||||
Object src/dg.o
|
||||
Object asm/overlay_29_022E0378.o
|
||||
Object src/run_dungeon_1.o
|
||||
Object asm/overlay_29_022E08A0.o
|
||||
Object asm/overlay_29_022E08F4.o
|
||||
Object src/overlay_29_022E0A04.o
|
||||
Object asm/overlay_29_022E0A18.o
|
||||
Object src/overlay_29_022E1610.o
|
||||
@@ -783,6 +783,10 @@ Overlay OVY_29
|
||||
Object asm/overlay_29_022E9618.o
|
||||
Object src/dg_random.o
|
||||
Object asm/overlay_29_022EAB50.o
|
||||
Object src/overlay_29_022EAE14.o
|
||||
Object asm/overlay_29_022EAE40.o
|
||||
Object src/overlay_29_022EAEFC.o
|
||||
Object asm/overlay_29_022EAF48.o
|
||||
Object src/dungeon_action.o
|
||||
Object asm/overlay_29_022EB44C.o
|
||||
Object src/overlay_29_022EBC50.o
|
||||
@@ -793,6 +797,8 @@ Overlay OVY_29
|
||||
Object asm/overlay_29_022EC62C.o
|
||||
Object src/overlay_29_022ECDC0.o
|
||||
Object asm/overlay_29_022ECDE4.o
|
||||
Object src/overlay_29_022ECF44.o
|
||||
Object asm/overlay_29_022ECF78.o
|
||||
Object src/overlay_29_022ED01C.o
|
||||
Object asm/overlay_29_022ED030.o
|
||||
Object src/overlay_29_022ED868.o
|
||||
@@ -1024,6 +1030,8 @@ Overlay OVY_29
|
||||
Object src/overlay_29_02338560.o
|
||||
Object src/overlay_29_02338604.o
|
||||
Object asm/overlay_29_0233861C.o
|
||||
Object src/overlay_29_0233865C.o
|
||||
Object asm/overlay_29_02338684.o
|
||||
Object src/overlay_29_02338850.o
|
||||
Object asm/overlay_29_023388B0.o
|
||||
Object src/overlay_29_02339118.o
|
||||
@@ -1059,7 +1067,6 @@ Overlay OVY_29
|
||||
Object src/overlay_29_02349620.o
|
||||
Object asm/overlay_29_02349658.o
|
||||
Object src/overlay_29_02349688.o
|
||||
Object asm/overlay_29_0234969C.o
|
||||
Object src/overlay_29_023496D8.o
|
||||
Object asm/overlay_29_023496EC.o
|
||||
Object src/overlay_29_0234987C.o
|
||||
|
||||
10
src/overlay_29_022EAE14.c
Normal file
10
src/overlay_29_022EAE14.c
Normal file
@@ -0,0 +1,10 @@
|
||||
#include "overlay_29_022EAE14.h"
|
||||
#include "dungeon.h"
|
||||
|
||||
extern struct dungeon *DUNGEON_PTR;
|
||||
|
||||
void ChangeDungeonMusic(enum music_id music)
|
||||
{
|
||||
DUNGEON_PTR->dungeon_music_playing_id = music;
|
||||
DUNGEON_PTR->field_0x2cb00 = 0;
|
||||
}
|
||||
19
src/overlay_29_022EAEFC.c
Normal file
19
src/overlay_29_022EAEFC.c
Normal file
@@ -0,0 +1,19 @@
|
||||
#include "overlay_29_022EAEFC.h"
|
||||
#include "dungeon.h"
|
||||
|
||||
extern struct dungeon *DUNGEON_PTR;
|
||||
|
||||
bool8 ov29_022EAEFC(void)
|
||||
{
|
||||
return DUNGEON_PTR->unk_music_flag == 0;
|
||||
}
|
||||
|
||||
u8 ov29_022EAF20(void)
|
||||
{
|
||||
return DUNGEON_PTR->unk_music_flag;
|
||||
}
|
||||
|
||||
void SetUnkMusicFlag(u8 value)
|
||||
{
|
||||
DUNGEON_PTR->unk_music_flag = value;
|
||||
}
|
||||
9
src/overlay_29_022ECF44.c
Normal file
9
src/overlay_29_022ECF44.c
Normal file
@@ -0,0 +1,9 @@
|
||||
#include "overlay_29_022ECF44.h"
|
||||
#include "dungeon.h"
|
||||
|
||||
extern struct dungeon *DUNGEON_PTR;
|
||||
|
||||
bool8 IsDungeonEndReasonFailure(void)
|
||||
{
|
||||
return (s16) DUNGEON_PTR->fainted_monster_dungeon_end_reason.other < DAMAGE_SOURCE_ESCAPE;
|
||||
}
|
||||
9
src/overlay_29_0233865C.c
Normal file
9
src/overlay_29_0233865C.c
Normal file
@@ -0,0 +1,9 @@
|
||||
#include "overlay_29_0233865C.h"
|
||||
#include "dungeon.h"
|
||||
|
||||
extern struct dungeon *DUNGEON_PTR;
|
||||
|
||||
bool8 IsSecretRoom(void)
|
||||
{
|
||||
return DUNGEON_PTR->gen_info.fixed_room_id == FIXED_SECRET_ROOM;
|
||||
}
|
||||
@@ -14,3 +14,13 @@ void ov29_02349688(bool8 value)
|
||||
{
|
||||
DUNGEON_PTR->target_enemy_defeated_message = value;
|
||||
}
|
||||
|
||||
void ov29_0234969C(bool8 value)
|
||||
{
|
||||
DUNGEON_PTR->hidden_outlaw_defeated_message = value;
|
||||
}
|
||||
|
||||
bool8 ov29_023496B0(void)
|
||||
{
|
||||
return DUNGEON_PTR->hidden_outlaw_defeated_message;
|
||||
}
|
||||
|
||||
@@ -15,3 +15,18 @@ bool8 IsCurrentFixedRoomBossFight()
|
||||
{
|
||||
IsBossFight(DUNGEON_PTR[0]->gen_info.fixed_room_id);
|
||||
}
|
||||
|
||||
bool8 IsMarowakTrainingMaze(void)
|
||||
{
|
||||
enum dungeon_id id = DUNGEON_PTR[0]->id;
|
||||
|
||||
if (id >= DUNGEON_NORMAL_FLY_MAZE && id <= DUNGEON_EXPLORER_MAZE) {
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 FixedRoomIsSubstituteRoom(void)
|
||||
{
|
||||
return DUNGEON_PTR[0]->gen_info.fixed_room_id == FIXED_SUBSTITUTE_ROOM;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user