Decomped sub_0205B354

Decomped by @slaw-22
This commit is contained in:
AnonymousRandomPerson 2026-03-17 21:08:34 -04:00
parent 7263f85f8d
commit a174a88286
9 changed files with 246 additions and 231 deletions

View File

@ -0,0 +1,14 @@
#pragma once
.public AURA_BOW_STAT_BOOST
.public DEF_SCARF_STAT_BOOST
.public EnableAllLearnableIqSkills
.public GetHpBoostFromExclusiveItems
.public GetType
.public IqSkillFlagTest
.public IsAuraBow
.public MUNCH_BELT_STAT_BOOST
.public POWER_BAND_STAT_BOOST
.public SPECIAL_BAND_STAT_BOOST
.public ZINC_BAND_STAT_BOOST
.public _020A1870
.public sub_02011220

View File

@ -1,6 +1,5 @@
#pragma once
.public ARM9_UNKNOWN_TABLE__NA_20A68BC
.public AURA_BOW_STAT_BOOST
.public AllocateTemp1024ByteBufferFromPool
.public BulkItemToItem
.public CAFE_MISSION_REWARD_TYPE_WEIGHTS
@ -16,7 +15,6 @@
.public CreateCollectionMenu
.public CreatePortraitBox
.public DEFAULT_MISSION_REWARD_TYPE_WEIGHTS
.public DEF_SCARF_STAT_BOOST
.public DEMO_TEAMS
.public Debug_GetDebugFlag
.public Debug_Print0
@ -28,7 +26,6 @@
.public DungeonSwapIdToIdx
.public ENTITIES
.public EVENTS
.public EnableAllLearnableIqSkills
.public EnqueueRender3dTiling
.public ExplorersOfSkyMain
.public FemaleToMaleForm
@ -42,7 +39,6 @@
.public GetFirstMatchingMemberIdx
.public GetHero
.public GetHeroMemberIdx
.public GetHpBoostFromExclusiveItems
.public GetLanguageType
.public GetMainCharacter1
.public GetMainCharacter1MemberIdx
@ -77,8 +73,6 @@
.public InitScriptVariableValues
.public InitSpecialEpisodeHero
.public InitWanTable
.public IqSkillFlagTest
.public IsAuraBow
.public IsCollectionMenuActive
.public IsForbiddenFloor
.public IsInvalidForMission
@ -126,7 +120,6 @@
.public MISSION_RANK_POINTS
.public MISSION_STRING_IDS
.public MISSION_VALIDATION_FUNCTION_LIST
.public MUNCH_BELT_STAT_BOOST
.public MainGame
.public MemAlloc
.public MemFree
@ -140,7 +133,6 @@
.public NoteSaveBase
.public OUTLAW_MISSION_REWARD_TYPE_WEIGHTS
.public OverlayIsLoaded
.public POWER_BAND_STAT_BOOST
.public PlaySeVolumeWrapper
.public PreprocessString
.public PreprocessStringFromId
@ -153,7 +145,6 @@
.public ReadSaveHeader
.public RemoveFirstUnequippedItemOfType
.public RetrieveFromItemList2
.public SPECIAL_BAND_STAT_BOOST
.public SaveScriptVariableValue
.public SetAdventureLogStructLocation
.public SetBothScreensWindowsColor
@ -173,13 +164,10 @@
.public UnloadOverlay
.public UpdateWindow
.public WAN_TABLE
.public ZINC_BAND_STAT_BOOST
.public ZeroInitScriptVariable
.public _020A1870
.public _020A18FC
.public _020A1904
.public _020A1958
.public _020A34D2
.public _020A353C
.public _020A3544
.public _020A354C
@ -327,7 +315,6 @@
.public sub_0200C020
.public sub_0200CA8C
.public sub_0200D310
.public sub_02011220
.public sub_0201BB3C
.public sub_0201D7A8
.public sub_0201DD90

185
asm/main_0205B0B8.s Normal file
View File

@ -0,0 +1,185 @@
.include "asm/macros.inc"
.include "main_0205B0B8.inc"
.text
arm_func_start sub_0205B0B8
sub_0205B0B8: ; 0x0205B0B8
stmdb sp!, {r3, lr}
ldrsh r1, [r0, #0x56]
mov r2, #0x10
mov lr, #0
mov r3, lr
sub ip, r1, #1
sub r2, r2, #0xc
b _0205B110
_0205B0D8:
cmp ip, #0
cmpge r2, #0x10
blt _0205B104
cmp ip, #0x1e
bge _0205B118
add r1, r0, ip
ldrb r1, [r1, #0x58]
cmp r1, #0
beq _0205B104
cmp r3, #1
addge lr, lr, #1
_0205B104:
add r3, r3, #1
add ip, ip, #1
add r2, r2, #0xc
_0205B110:
cmp r3, #0xa
blt _0205B0D8
_0205B118:
mov r0, lr
ldmia sp!, {r3, pc}
arm_func_end sub_0205B0B8
arm_func_start sub_0205B120
sub_0205B120: ; 0x0205B120
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x24
mov r5, r0
mov r6, #0
strh r6, [r5]
strh r6, [r5, #2]
strh r6, [r5, #4]
mov r4, r2
strh r6, [r5, #6]
add r0, sp, #0
mov r7, r1
mov r2, r3
strh r6, [r5, #8]
bl EnableAllLearnableIqSkills
mov r0, r7
mov r1, r6
bl GetType
mov r6, r0
mov r0, r7
mov r1, #1
bl GetType
mov r3, r0
mov r1, r7
mov r2, r6
add r0, sp, #0xc
bl sub_02011220
add r0, sp, #0xc
bl GetHpBoostFromExclusiveItems
ldrsh r2, [r5]
ldrb r1, [sp, #0x38]
add r0, r2, r0
strh r0, [r5]
cmp r1, #0
ldrsh r1, [r5, #2]
ldrb r0, [sp, #0xc]
add r0, r1, r0
strh r0, [r5, #2]
ldrsh r1, [r5, #4]
ldrb r0, [sp, #0xd]
add r0, r1, r0
strh r0, [r5, #4]
ldrsh r1, [r5, #6]
ldrb r0, [sp, #0xe]
add r0, r1, r0
strh r0, [r5, #6]
ldrsh r1, [r5, #8]
ldrb r0, [sp, #0xf]
add r0, r1, r0
strh r0, [r5, #8]
bne _0205B30C
cmp r4, #0
beq _0205B30C
ldrb r0, [r4]
tst r0, #1
movne r1, #1
moveq r1, #0
tst r1, #0xff
beq _0205B30C
tst r0, #8
movne r0, #1
moveq r0, #0
tst r0, #0xff
bne _0205B30C
ldrsh r0, [r4, #4]
cmp r0, #0x1a
ldreq r0, _0205B338 ; =POWER_BAND_STAT_BOOST
ldreqsh r1, [r5, #2]
ldreqsh r0, [r0]
addeq r0, r1, r0
streqh r0, [r5, #2]
ldrsh r0, [r4, #4]
cmp r0, #0x32
ldreq r0, _0205B33C ; =MUNCH_BELT_STAT_BOOST
ldreqsh r1, [r5, #2]
ldreqsh r0, [r0]
addeq r0, r1, r0
streqh r0, [r5, #2]
ldrsh r0, [r4, #4]
cmp r0, #0x28
ldreq r0, _0205B340 ; =SPECIAL_BAND_STAT_BOOST
ldreqsh r1, [r5, #4]
ldreqsh r0, [r0]
addeq r0, r1, r0
streqh r0, [r5, #4]
ldrsh r0, [r4, #4]
cmp r0, #0x32
ldreq r0, _0205B33C ; =MUNCH_BELT_STAT_BOOST
ldreqsh r1, [r5, #4]
ldreqsh r0, [r0]
addeq r0, r1, r0
streqh r0, [r5, #4]
ldrsh r0, [r4, #4]
cmp r0, #0x25
ldreq r0, _0205B344 ; =DEF_SCARF_STAT_BOOST
ldreqsh r1, [r5, #6]
ldreqsh r0, [r0]
addeq r0, r1, r0
streqh r0, [r5, #6]
ldrsh r0, [r4, #4]
cmp r0, #0x29
ldreq r0, _0205B348 ; =ZINC_BAND_STAT_BOOST
ldreqsh r1, [r5, #8]
ldreqsh r0, [r0]
addeq r0, r1, r0
streqh r0, [r5, #8]
ldrsh r0, [r4, #4]
bl IsAuraBow
cmp r0, #0
beq _0205B30C
ldr r0, _0205B34C ; =AURA_BOW_STAT_BOOST
ldrsh r1, [r5, #2]
ldrsh r2, [r0]
add r0, r1, r2
strh r0, [r5, #2]
ldrsh r0, [r5, #4]
add r0, r0, r2
strh r0, [r5, #4]
ldrsh r0, [r5, #6]
add r0, r0, r2
strh r0, [r5, #6]
ldrsh r0, [r5, #8]
add r0, r0, r2
strh r0, [r5, #8]
_0205B30C:
add r0, sp, #0
mov r1, #0x38
bl IqSkillFlagTest
cmp r0, #0
ldrne r0, _0205B350 ; =_020A1870
ldrnesh r1, [r5]
ldrnesh r0, [r0]
addne r0, r1, r0
strneh r0, [r5]
add sp, sp, #0x24
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
_0205B338: .word POWER_BAND_STAT_BOOST
_0205B33C: .word MUNCH_BELT_STAT_BOOST
_0205B340: .word SPECIAL_BAND_STAT_BOOST
_0205B344: .word DEF_SCARF_STAT_BOOST
_0205B348: .word ZINC_BAND_STAT_BOOST
_0205B34C: .word AURA_BOW_STAT_BOOST
_0205B350: .word _020A1870
arm_func_end sub_0205B120

View File

@ -1,224 +1,8 @@
.include "asm/macros.inc"
.include "main_0205B0A0.inc"
.include "main_0205B39C.inc"
.text
arm_func_start sub_0205B0A0
sub_0205B0A0: ; 0x0205B0A0
ldr ip, _0205B0B0 ; =sub_0205B39C
mov r1, r0
ldr r0, _0205B0B4 ; =_020A34D2
bx ip
.align 2, 0
_0205B0B0: .word sub_0205B39C
_0205B0B4: .word _020A34D2
arm_func_end sub_0205B0A0
arm_func_start sub_0205B0B8
sub_0205B0B8: ; 0x0205B0B8
stmdb sp!, {r3, lr}
ldrsh r1, [r0, #0x56]
mov r2, #0x10
mov lr, #0
mov r3, lr
sub ip, r1, #1
sub r2, r2, #0xc
b _0205B110
_0205B0D8:
cmp ip, #0
cmpge r2, #0x10
blt _0205B104
cmp ip, #0x1e
bge _0205B118
add r1, r0, ip
ldrb r1, [r1, #0x58]
cmp r1, #0
beq _0205B104
cmp r3, #1
addge lr, lr, #1
_0205B104:
add r3, r3, #1
add ip, ip, #1
add r2, r2, #0xc
_0205B110:
cmp r3, #0xa
blt _0205B0D8
_0205B118:
mov r0, lr
ldmia sp!, {r3, pc}
arm_func_end sub_0205B0B8
arm_func_start sub_0205B120
sub_0205B120: ; 0x0205B120
stmdb sp!, {r4, r5, r6, r7, lr}
sub sp, sp, #0x24
mov r5, r0
mov r6, #0
strh r6, [r5]
strh r6, [r5, #2]
strh r6, [r5, #4]
mov r4, r2
strh r6, [r5, #6]
add r0, sp, #0
mov r7, r1
mov r2, r3
strh r6, [r5, #8]
bl EnableAllLearnableIqSkills
mov r0, r7
mov r1, r6
bl GetType
mov r6, r0
mov r0, r7
mov r1, #1
bl GetType
mov r3, r0
mov r1, r7
mov r2, r6
add r0, sp, #0xc
bl sub_02011220
add r0, sp, #0xc
bl GetHpBoostFromExclusiveItems
ldrsh r2, [r5]
ldrb r1, [sp, #0x38]
add r0, r2, r0
strh r0, [r5]
cmp r1, #0
ldrsh r1, [r5, #2]
ldrb r0, [sp, #0xc]
add r0, r1, r0
strh r0, [r5, #2]
ldrsh r1, [r5, #4]
ldrb r0, [sp, #0xd]
add r0, r1, r0
strh r0, [r5, #4]
ldrsh r1, [r5, #6]
ldrb r0, [sp, #0xe]
add r0, r1, r0
strh r0, [r5, #6]
ldrsh r1, [r5, #8]
ldrb r0, [sp, #0xf]
add r0, r1, r0
strh r0, [r5, #8]
bne _0205B30C
cmp r4, #0
beq _0205B30C
ldrb r0, [r4]
tst r0, #1
movne r1, #1
moveq r1, #0
tst r1, #0xff
beq _0205B30C
tst r0, #8
movne r0, #1
moveq r0, #0
tst r0, #0xff
bne _0205B30C
ldrsh r0, [r4, #4]
cmp r0, #0x1a
ldreq r0, _0205B338 ; =POWER_BAND_STAT_BOOST
ldreqsh r1, [r5, #2]
ldreqsh r0, [r0]
addeq r0, r1, r0
streqh r0, [r5, #2]
ldrsh r0, [r4, #4]
cmp r0, #0x32
ldreq r0, _0205B33C ; =MUNCH_BELT_STAT_BOOST
ldreqsh r1, [r5, #2]
ldreqsh r0, [r0]
addeq r0, r1, r0
streqh r0, [r5, #2]
ldrsh r0, [r4, #4]
cmp r0, #0x28
ldreq r0, _0205B340 ; =SPECIAL_BAND_STAT_BOOST
ldreqsh r1, [r5, #4]
ldreqsh r0, [r0]
addeq r0, r1, r0
streqh r0, [r5, #4]
ldrsh r0, [r4, #4]
cmp r0, #0x32
ldreq r0, _0205B33C ; =MUNCH_BELT_STAT_BOOST
ldreqsh r1, [r5, #4]
ldreqsh r0, [r0]
addeq r0, r1, r0
streqh r0, [r5, #4]
ldrsh r0, [r4, #4]
cmp r0, #0x25
ldreq r0, _0205B344 ; =DEF_SCARF_STAT_BOOST
ldreqsh r1, [r5, #6]
ldreqsh r0, [r0]
addeq r0, r1, r0
streqh r0, [r5, #6]
ldrsh r0, [r4, #4]
cmp r0, #0x29
ldreq r0, _0205B348 ; =ZINC_BAND_STAT_BOOST
ldreqsh r1, [r5, #8]
ldreqsh r0, [r0]
addeq r0, r1, r0
streqh r0, [r5, #8]
ldrsh r0, [r4, #4]
bl IsAuraBow
cmp r0, #0
beq _0205B30C
ldr r0, _0205B34C ; =AURA_BOW_STAT_BOOST
ldrsh r1, [r5, #2]
ldrsh r2, [r0]
add r0, r1, r2
strh r0, [r5, #2]
ldrsh r0, [r5, #4]
add r0, r0, r2
strh r0, [r5, #4]
ldrsh r0, [r5, #6]
add r0, r0, r2
strh r0, [r5, #6]
ldrsh r0, [r5, #8]
add r0, r0, r2
strh r0, [r5, #8]
_0205B30C:
add r0, sp, #0
mov r1, #0x38
bl IqSkillFlagTest
cmp r0, #0
ldrne r0, _0205B350 ; =_020A1870
ldrnesh r1, [r5]
ldrnesh r0, [r0]
addne r0, r1, r0
strneh r0, [r5]
add sp, sp, #0x24
ldmia sp!, {r4, r5, r6, r7, pc}
.align 2, 0
_0205B338: .word POWER_BAND_STAT_BOOST
_0205B33C: .word MUNCH_BELT_STAT_BOOST
_0205B340: .word SPECIAL_BAND_STAT_BOOST
_0205B344: .word DEF_SCARF_STAT_BOOST
_0205B348: .word ZINC_BAND_STAT_BOOST
_0205B34C: .word AURA_BOW_STAT_BOOST
_0205B350: .word _020A1870
arm_func_end sub_0205B120
arm_func_start sub_0205B354
sub_0205B354: ; 0x0205B354
ldrb r1, [r0, #0x45]
cmp r1, #0
movne r0, #0
bxne lr
mov r2, #0
b _0205B38C
_0205B36C:
add r1, r0, r2
ldrb r1, [r1, #0x18]
cmp r1, #0x6f
moveq r0, #1
bxeq lr
add r1, r2, #1
mov r1, r1, lsl #0x10
mov r2, r1, asr #0x10
_0205B38C:
cmp r2, #2
blt _0205B36C
mov r0, #0
bx lr
arm_func_end sub_0205B354
arm_func_start sub_0205B39C
sub_0205B39C: ; 0x0205B39C
stmdb sp!, {r3, r4, r5, r6, r7, lr}

View File

@ -5,5 +5,6 @@
void sub_0205B008(struct monster_summary *monster_summary, u32 b);
void sub_0205B028(struct monster_summary *monster_summary, s32 member_idx);
void sub_0205B0A0(void *p1);
#endif //PMDSKY_MAIN_0205B008_H

15
include/main_0205B354.h Normal file
View File

@ -0,0 +1,15 @@
#ifndef PMDSKY_MAIN_0205B354_H
#define PMDSKY_MAIN_0205B354_H
#include "util.h"
struct unkStruct_sub_0205B354 {
u8 fill0[0x18];
u8 unk18[2];
u8 fill1A[0x45 - 0x1A];
u8 unk45;
};
bool8 sub_0205B354(struct unkStruct_sub_0205B354 *ptr);
#endif //PMDSKY_MAIN_0205B354_H

View File

@ -140,7 +140,9 @@ Static main
Object src/main_0205A430.o
Object asm/main_0205A4B4.o
Object src/main_0205B008.o
Object asm/main_0205B0A0.o
Object asm/main_0205B0B8.o
Object src/main_0205B354.o
Object asm/main_0205B39C.o
Object src/dungeon_init_2.o
Object asm/main_0206A750.o
Object src/main_0206C98C.o

View File

@ -1,12 +1,15 @@
#include "main_0205B008.h"
#include "common.h"
extern u8 _020A34D2;
extern s32 sub_02055894(u32 b);
extern s32 GetActiveRosterIndex(s32 member_idx);
extern void sub_02053224(struct team_member *team_member, s32 member_idx, s32 arg2);
extern bool8 sub_020564B0(s32 member_idx);
extern struct team_member* GetActiveTeamMember(s32 roster_idx);
extern void CreateMonsterSummaryFromTeamMember(struct monster_summary *monster_summary, struct team_member *team_member, bool8 is_leader);
extern void sub_0205B39C(void *p0, void *p1);
void sub_0205B008(struct monster_summary *monster_summary, u32 b)
{
@ -29,3 +32,8 @@ void sub_0205B028(struct monster_summary *monster_summary, s32 member_idx)
CreateMonsterSummaryFromTeamMember(monster_summary, active_team_member, sub_020564B0(member_idx));
}
}
void sub_0205B0A0(void *p1)
{
sub_0205B39C(&_020A34D2, p1);
}

19
src/main_0205B354.c Normal file
View File

@ -0,0 +1,19 @@
#include "main_0205B354.h"
bool8 sub_0205B354(struct unkStruct_sub_0205B354 *ptr)
{
if (ptr->unk45 != 0)
{
return FALSE;
}
for (s16 i = 0; i < 2; i++)
{
if (ptr->unk18[i] == 111)
{
return TRUE;
}
}
return FALSE;
}