mirror of
https://github.com/pret/pmd-sky.git
synced 2026-08-22 02:24:45 -05:00
Decomped IsDojoDungeon, IsFutureDungeon, IsSpecialEpisodeDungeon
This commit is contained in:
@@ -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
|
||||
|
||||
10
asm/include/main_02051504.inc
Normal file
10
asm/include/main_02051504.inc
Normal 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
|
||||
@@ -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
205
asm/main_02051504.s
Normal 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
9
include/main_020514CC.h
Normal 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
|
||||
2
main.lsf
2
main.lsf
@@ -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
17
src/main_020514CC.c
Normal 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;
|
||||
}
|
||||
Reference in New Issue
Block a user