Decomped IsDojoDungeon, IsFutureDungeon, IsSpecialEpisodeDungeon

This commit is contained in:
Chesyon
2025-07-19 15:47:45 -04:00
parent d09d457083
commit 9eeb6261ef
7 changed files with 243 additions and 243 deletions

View File

@@ -2,17 +2,11 @@
.public CopyBitsFrom
.public CopyBitsTo
.public DUNGEON_RESTRICTIONS
.public DungeonFloorToGroupFloor
.public GetItemIdFromList
.public GetNbFloorsPlusOne
.public MISSION_FLOORS_FORBIDDEN
.public RandIntSafe
.public _020A0C68
.public _020A0C69
.public _020A0C6A
.public _020A0C6C
.public _020A0C6E
.public _020A1864
.public _020AFF7C
.public _020AFF80
.public _020AFF88

View File

@@ -0,0 +1,10 @@
#pragma once
.public CopyBitsFrom
.public CopyBitsTo
.public DUNGEON_RESTRICTIONS
.public DungeonFloorToGroupFloor
.public GetItemIdFromList
.public GetNbFloorsPlusOne
.public MISSION_FLOORS_FORBIDDEN
.public RandIntSafe
.public _020A1864

View File

@@ -370,240 +370,3 @@ _020514A8:
and r0, r0, #0xff
bx lr
arm_func_end JoinedAtRangeCheck
arm_func_start IsDojoDungeon
IsDojoDungeon: ; 0x020514B0
cmp r0, #0xb4
blo _020514C4
cmp r0, #0xd3
movls r0, #1
bxls lr
_020514C4:
mov r0, #0
bx lr
arm_func_end IsDojoDungeon
arm_func_start IsFutureDungeon
IsFutureDungeon: ; 0x020514CC
cmp r0, #0x1b
blo _020514E0
cmp r0, #0x21
movls r0, #1
bxls lr
_020514E0:
mov r0, #0
bx lr
arm_func_end IsFutureDungeon
arm_func_start IsSpecialEpisodeDungeon
IsSpecialEpisodeDungeon: ; 0x020514E8
cmp r0, #0x7b
blo _020514FC
cmp r0, #0xa4
movls r0, #1
bxls lr
_020514FC:
mov r0, #0
bx lr
arm_func_end IsSpecialEpisodeDungeon
arm_func_start RetrieveFromItemList1
RetrieveFromItemList1: ; 0x02051504
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
ldr r0, _02051564 ; =0x0000270F
mov r6, r1
bl RandIntSafe
mov r4, r0
ldr r0, _02051564 ; =0x0000270F
bl RandIntSafe
mov r5, r0
ldrb r0, [r7]
cmp r0, #0xb4
cmphs r0, #0xd3
movhs r0, #0x55
ldmhsia sp!, {r3, r4, r5, r6, r7, pc}
bl GetNbFloorsPlusOne
ldrb r1, [r7, #1]
cmp r1, r0
movhs r0, #0x55
ldmhsia sp!, {r3, r4, r5, r6, r7, pc}
mov r0, r6
mov r1, r4
mov r2, r5
bl GetItemIdFromList
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02051564: .word 0x0000270F
arm_func_end RetrieveFromItemList1
arm_func_start IsForbiddenFloor
IsForbiddenFloor: ; 0x02051568
stmdb sp!, {r3, lr}
mov r1, r0
add r0, sp, #0
bl DungeonFloorToGroupFloor
ldrb ip, [sp]
ldrb lr, [sp, #1]
ldr r1, _020515C0 ; =MISSION_FLOORS_FORBIDDEN
mov r3, #0
_02051588:
ldrb r0, [r1, r3, lsl #1]
mov r2, r3, lsl #1
cmp r0, #0x64
beq _020515B8
cmp ip, r0
addeq r0, r1, r2
ldreqb r0, [r0, #1]
cmpeq lr, r0
moveq r0, #1
ldmeqia sp!, {r3, pc}
add r3, r3, #1
b _02051588
_020515B8:
mov r0, #0
ldmia sp!, {r3, pc}
.align 2, 0
_020515C0: .word MISSION_FLOORS_FORBIDDEN
arm_func_end IsForbiddenFloor
arm_func_start sub_020515C4
sub_020515C4: ; 0x020515C4
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
mov r2, #8
bl CopyBitsTo
mov r0, r5
add r1, r4, #1
mov r2, #8
bl CopyBitsTo
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020515C4
arm_func_start Copy16BitsFrom
Copy16BitsFrom: ; 0x020515EC
stmdb sp!, {r3, r4, r5, lr}
mov r4, r1
mov r3, #0
strb r3, [r4]
mov r5, r0
mov r2, #8
strb r3, [r4, #1]
bl CopyBitsFrom
mov r0, r5
add r1, r4, #1
mov r2, #8
bl CopyBitsFrom
ldmia sp!, {r3, r4, r5, pc}
arm_func_end Copy16BitsFrom
arm_func_start sub_02051620
sub_02051620: ; 0x02051620
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
mov r2, #7
bl CopyBitsTo
mov r0, r5
add r1, r4, #1
mov r2, #7
bl CopyBitsTo
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_02051620
arm_func_start sub_02051648
sub_02051648: ; 0x02051648
stmdb sp!, {r3, r4, r5, lr}
mov r4, r1
mov r3, #0
strb r3, [r4]
mov r5, r0
mov r2, #7
strb r3, [r4, #1]
bl CopyBitsFrom
mov r0, r5
add r1, r4, #1
mov r2, #7
bl CopyBitsFrom
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_02051648
arm_func_start RetrieveFromItemList2
RetrieveFromItemList2: ; 0x0205167C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
ldr r0, _020516D8 ; =0x0000270F
mov r6, r1
bl RandIntSafe
mov r5, r0
ldr r0, _020516D8 ; =0x0000270F
bl RandIntSafe
mov r4, r0
ldrb r0, [r7]
cmp r0, #0xb4
movhs r0, #0x55
ldmhsia sp!, {r3, r4, r5, r6, r7, pc}
bl GetNbFloorsPlusOne
ldrb r1, [r7, #1]
cmp r1, r0
movhs r0, #0x55
ldmhsia sp!, {r3, r4, r5, r6, r7, pc}
mov r0, r6
mov r1, r5
mov r2, r4
bl GetItemIdFromList
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020516D8: .word 0x0000270F
arm_func_end RetrieveFromItemList2
arm_func_start IsInvalidForMission
IsInvalidForMission: ; 0x020516DC
cmp r0, #0xb4
movhs r0, #1
bxhs lr
mov r2, #0
ldr r1, _02051718 ; =_020A1864
b _02051704
_020516F4:
cmp r3, r0
moveq r0, #1
bxeq lr
add r2, r2, #1
_02051704:
ldrb r3, [r1, r2]
cmp r3, #0xb4
bne _020516F4
mov r0, #0
bx lr
.align 2, 0
_02051718: .word _020A1864
arm_func_end IsInvalidForMission
arm_func_start IsExpEnabledInDungeon
IsExpEnabledInDungeon: ; 0x0205171C
mov r1, #0xc
mul r1, r0, r1
ldr r0, _02051740 ; =DUNGEON_RESTRICTIONS
ldr r0, [r0, r1]
tst r0, #4
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_02051740: .word DUNGEON_RESTRICTIONS
arm_func_end IsExpEnabledInDungeon
arm_func_start IsSkyExclusiveDungeon
IsSkyExclusiveDungeon: ; 0x02051744
cmp r0, #0x67
blo _02051758
cmp r0, #0xb0
movls r0, #1
bxls lr
_02051758:
mov r0, #0
bx lr
arm_func_end IsSkyExclusiveDungeon

205
asm/main_02051504.s Normal file
View File

@@ -0,0 +1,205 @@
.include "asm/macros.inc"
.include "main_02051504.inc"
.text
arm_func_start RetrieveFromItemList1
RetrieveFromItemList1: ; 0x02051504
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
ldr r0, _02051564 ; =0x0000270F
mov r6, r1
bl RandIntSafe
mov r4, r0
ldr r0, _02051564 ; =0x0000270F
bl RandIntSafe
mov r5, r0
ldrb r0, [r7]
cmp r0, #0xb4
cmphs r0, #0xd3
movhs r0, #0x55
ldmhsia sp!, {r3, r4, r5, r6, r7, pc}
bl GetNbFloorsPlusOne
ldrb r1, [r7, #1]
cmp r1, r0
movhs r0, #0x55
ldmhsia sp!, {r3, r4, r5, r6, r7, pc}
mov r0, r6
mov r1, r4
mov r2, r5
bl GetItemIdFromList
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_02051564: .word 0x0000270F
arm_func_end RetrieveFromItemList1
arm_func_start IsForbiddenFloor
IsForbiddenFloor: ; 0x02051568
stmdb sp!, {r3, lr}
mov r1, r0
add r0, sp, #0
bl DungeonFloorToGroupFloor
ldrb ip, [sp]
ldrb lr, [sp, #1]
ldr r1, _020515C0 ; =MISSION_FLOORS_FORBIDDEN
mov r3, #0
_02051588:
ldrb r0, [r1, r3, lsl #1]
mov r2, r3, lsl #1
cmp r0, #0x64
beq _020515B8
cmp ip, r0
addeq r0, r1, r2
ldreqb r0, [r0, #1]
cmpeq lr, r0
moveq r0, #1
ldmeqia sp!, {r3, pc}
add r3, r3, #1
b _02051588
_020515B8:
mov r0, #0
ldmia sp!, {r3, pc}
.align 2, 0
_020515C0: .word MISSION_FLOORS_FORBIDDEN
arm_func_end IsForbiddenFloor
arm_func_start sub_020515C4
sub_020515C4: ; 0x020515C4
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
mov r2, #8
bl CopyBitsTo
mov r0, r5
add r1, r4, #1
mov r2, #8
bl CopyBitsTo
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_020515C4
arm_func_start Copy16BitsFrom
Copy16BitsFrom: ; 0x020515EC
stmdb sp!, {r3, r4, r5, lr}
mov r4, r1
mov r3, #0
strb r3, [r4]
mov r5, r0
mov r2, #8
strb r3, [r4, #1]
bl CopyBitsFrom
mov r0, r5
add r1, r4, #1
mov r2, #8
bl CopyBitsFrom
ldmia sp!, {r3, r4, r5, pc}
arm_func_end Copy16BitsFrom
arm_func_start sub_02051620
sub_02051620: ; 0x02051620
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
mov r4, r1
mov r2, #7
bl CopyBitsTo
mov r0, r5
add r1, r4, #1
mov r2, #7
bl CopyBitsTo
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_02051620
arm_func_start sub_02051648
sub_02051648: ; 0x02051648
stmdb sp!, {r3, r4, r5, lr}
mov r4, r1
mov r3, #0
strb r3, [r4]
mov r5, r0
mov r2, #7
strb r3, [r4, #1]
bl CopyBitsFrom
mov r0, r5
add r1, r4, #1
mov r2, #7
bl CopyBitsFrom
ldmia sp!, {r3, r4, r5, pc}
arm_func_end sub_02051648
arm_func_start RetrieveFromItemList2
RetrieveFromItemList2: ; 0x0205167C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, r0
ldr r0, _020516D8 ; =0x0000270F
mov r6, r1
bl RandIntSafe
mov r5, r0
ldr r0, _020516D8 ; =0x0000270F
bl RandIntSafe
mov r4, r0
ldrb r0, [r7]
cmp r0, #0xb4
movhs r0, #0x55
ldmhsia sp!, {r3, r4, r5, r6, r7, pc}
bl GetNbFloorsPlusOne
ldrb r1, [r7, #1]
cmp r1, r0
movhs r0, #0x55
ldmhsia sp!, {r3, r4, r5, r6, r7, pc}
mov r0, r6
mov r1, r5
mov r2, r4
bl GetItemIdFromList
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_020516D8: .word 0x0000270F
arm_func_end RetrieveFromItemList2
arm_func_start IsInvalidForMission
IsInvalidForMission: ; 0x020516DC
cmp r0, #0xb4
movhs r0, #1
bxhs lr
mov r2, #0
ldr r1, _02051718 ; =_020A1864
b _02051704
_020516F4:
cmp r3, r0
moveq r0, #1
bxeq lr
add r2, r2, #1
_02051704:
ldrb r3, [r1, r2]
cmp r3, #0xb4
bne _020516F4
mov r0, #0
bx lr
.align 2, 0
_02051718: .word _020A1864
arm_func_end IsInvalidForMission
arm_func_start IsExpEnabledInDungeon
IsExpEnabledInDungeon: ; 0x0205171C
mov r1, #0xc
mul r1, r0, r1
ldr r0, _02051740 ; =DUNGEON_RESTRICTIONS
ldr r0, [r0, r1]
tst r0, #4
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
bx lr
.align 2, 0
_02051740: .word DUNGEON_RESTRICTIONS
arm_func_end IsExpEnabledInDungeon
arm_func_start IsSkyExclusiveDungeon
IsSkyExclusiveDungeon: ; 0x02051744
cmp r0, #0x67
blo _02051758
cmp r0, #0xb0
movls r0, #1
bxls lr
_02051758:
mov r0, #0
bx lr
arm_func_end IsSkyExclusiveDungeon

9
include/main_020514CC.h Normal file
View File

@@ -0,0 +1,9 @@
#ifndef PMDSKY_MAIN_020514CC_H
#define PMDSKY_MAIN_020514CC_H
#include "util.h"
bool32 IsDojoDungeon(u8 dungeon_id);
bool32 IsFutureDungeon(u8 dungeon_id);
bool32 IsSpecialEpisodeDungeon(u8 dungeon_id);
#endif //PMDSKY_MAIN_020514CC_H

View File

@@ -57,6 +57,8 @@ Static main
Object asm/main_0204B018.o
Object src/number_util.o
Object asm/main_02051098.o
Object src/main_020514CC.o
Object asm/main_02051504.o
Object src/main_02051760.o
Object asm/main_02051788.o
Object src/main_02052874.o

17
src/main_020514CC.c Normal file
View File

@@ -0,0 +1,17 @@
#include "main_020514CC.h"
#include "util.h"
#include "enums.h"
bool32 IsDojoDungeon(u8 dungeon_id)
{
return dungeon_id >= DUNGEON_NORMAL_FLY_MAZE && dungeon_id <= DUNGEON_DOJO_0xD3;
}
bool32 IsFutureDungeon(u8 dungeon_id) {
return dungeon_id >= DUNGEON_CHASM_CAVE && dungeon_id <= DUNGEON_DEEP_DUSK_FOREST;
}
bool32 IsSpecialEpisodeDungeon(u8 dungeon_id) {
return dungeon_id >= DUNGEON_STAR_CAVE_SE1 && dungeon_id <= DUNGEON_SPRING_CAVE_PIT;
}