more decomp

This commit is contained in:
Seth Barberee
2025-02-08 16:53:52 -08:00
parent 151821a077
commit 782bca6cf3
8 changed files with 68 additions and 190 deletions

View File

@@ -2974,173 +2974,4 @@ _0806860C: .4byte 0x00000fff
_08068610: .4byte 0x000001ff
thumb_func_end sub_80684C4
thumb_func_start sub_8068614
sub_8068614:
push {lr}
ldr r0, _0806862C
ldr r1, _08068630
bl OpenFileAndGetFileDataPtr
ldr r1, _08068634
ldr r1, [r1]
ldr r2, _08068638
adds r1, r2
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_0806862C: .4byte gUnknown_8106E98
_08068630: .4byte gMonsterFileArchive
_08068634: .4byte gDungeon
_08068638: .4byte 0x000181e4
thumb_func_end sub_8068614
thumb_func_start sub_806863C
sub_806863C:
push {lr}
ldr r0, _08068650
ldr r0, [r0]
ldr r1, _08068654
adds r0, r1
ldr r0, [r0]
bl CloseFile
pop {r0}
bx r0
.align 2, 0
_08068650: .4byte gDungeon
_08068654: .4byte 0x000181e4
thumb_func_end sub_806863C
thumb_func_start LoadDungeonPokemonSprites
LoadDungeonPokemonSprites:
push {r4-r6,lr}
movs r4, 0
ldr r6, _08068740
ldr r5, _08068744
ldr r3, _08068748
movs r2, 0
_08068664:
ldr r0, [r5]
lsls r1, r4, 2
adds r0, r3
adds r0, r1
str r2, [r0]
adds r4, 0x1
cmp r4, r6
ble _08068664
ldr r0, _0806874C
movs r1, 0x1
bl LoadPokemonSprite
movs r4, 0
ldr r1, _08068744
ldr r0, [r1]
ldr r2, _08068750
adds r0, r2
ldr r0, [r0]
cmp r4, r0
bge _080686B2
adds r6, r1, 0
ldr r5, _08068754
_08068690:
ldr r0, [r6]
adds r0, r5
bl ExtractSpeciesIndex
lsls r0, 16
asrs r0, 16
movs r1, 0x1
bl LoadPokemonSprite
adds r5, 0x8
adds r4, 0x1
ldr r0, [r6]
ldr r1, _08068750
adds r0, r1
ldr r0, [r0]
cmp r4, r0
blt _08068690
_080686B2:
ldr r0, _08068744
ldr r0, [r0]
movs r2, 0xD1
lsls r2, 3
adds r1, r0, r2
movs r2, 0
ldrsh r0, [r1, r2]
cmp r0, 0
beq _080686CA
movs r1, 0x1
bl LoadPokemonSprite
_080686CA:
movs r4, 0
ldr r6, _08068758
movs r5, 0x1
_080686D0:
movs r0, 0x64
muls r0, r4
ldr r1, _0806875C
adds r0, r1
ldr r1, [r6]
adds r1, r0
ldrh r2, [r1]
adds r0, r5, 0
ands r0, r2
cmp r0, 0
beq _080686F8
lsrs r0, r2, 1
ands r0, r5
cmp r0, 0
beq _080686F8
movs r2, 0xE
ldrsh r0, [r1, r2]
movs r1, 0
bl LoadPokemonSprite
_080686F8:
adds r4, 0x1
cmp r4, 0x3
ble _080686D0
ldr r0, _08068744
ldr r0, [r0]
ldr r1, _08068760
adds r0, r1
movs r2, 0
ldrsh r0, [r0, r2]
cmp r0, 0x31
bne _08068738
movs r4, 0
ldr r5, _08068758
_08068712:
movs r0, 0x58
muls r0, r4
ldr r1, _08068764
adds r0, r1
ldr r1, [r5]
adds r2, r1, r0
ldrb r1, [r2]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _08068732
movs r1, 0x8
ldrsh r0, [r2, r1]
movs r1, 0x1
bl LoadPokemonSprite
_08068732:
adds r4, 0x1
cmp r4, 0x3
ble _08068712
_08068738:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08068740: .4byte 0x000001a7
_08068744: .4byte gDungeon
_08068748: .4byte 0x00017b44
_0806874C: .4byte 0x000001a5
_08068750: .4byte 0x000037e4
_08068754: .4byte 0x0000343c
_08068758: .4byte gRecruitedPokemonRef
_0806875C: .4byte 0x00008df8
_08068760: .4byte 0x00003a14
_08068764: .4byte 0x00008f88
thumb_func_end LoadDungeonPokemonSprites
.align 2,0

View File

@@ -26,6 +26,7 @@ void sub_800DAC0(u32);
void sub_800DB7C(void);
void sub_800DBBC(void);
bool8 sub_800E90C(DungeonPos *);
void sub_800E8AC(s32 a0, DungeonPos *a1, DungeonPos *a2, s32 a3, struct unkStruct_203B0CC_sub_2 *a4);
void sub_800E8AC(s32 a0, DungeonPos *a1, DungeonPos *a2, s32 a3, unkStruct_2039DB0 *a4);
#endif // GUARD_CODE_800DAC0_H

View File

@@ -1,15 +1,10 @@
#ifndef GUARD_CODE_800E9A8_H
#define GUARD_CODE_800E9A8_H
#include "structs/axdata.h"
#include "structs/sprite_oam.h"
#include "structs/str_position.h"
struct unkStruct_203B0CC_sub_2
{
u32 unk0;
u32 unk4;
u32 unk8;
};
struct unkStruct_203B0CC_sub
{
// size: 0xD0
@@ -23,17 +18,20 @@ struct unkStruct_203B0CC_sub
DungeonPos unk1c;
s32 unk20;
s32 unk24;
struct unkStruct_203B0CC_sub_2 unk28;
unkStruct_2039DB0 spriteMasks;
u32 unk34;
u32 effectID;
u8 fill3C[0x4C - 0x3C];
s32 paletteNum;
u8 fill40[0x4C - 0x40];
u32 unk4C;
s32 unk50;
u8 unk54;
u8 fill55[0xB8 - 0x55];
u8 fill55[0x58 - 0x55];
struct axObject unk58;
u8 fillA4[0xB8 - 0xA4];
u32 unkB8;
u8 fillBC[0xCC - 0xBC];
u32 unkCC;
s16 unkCC[2]; // NOTE: might be DungeonPos
};
struct unkStruct_203B0CC

View File

@@ -5,6 +5,9 @@
void CloseAllSpriteFiles(void);
void OpenDungeonPaletteFile(void);
void CloseDungeonPaletteFile(void);
void LoadDungeonPokemonSprites(void);
void sub_8068768(void);
void sub_80687AC(void);
OpenedFile *GetSpriteData(s32 _species);

View File

@@ -55,7 +55,7 @@ u32 sub_800E890(unkStruct_80416E0 *param_1)
return sub_800E208(7, (void*)&param_1->unk0);
}
void sub_800E8AC(s32 a0, DungeonPos *a1, DungeonPos *a2, s32 a3, struct unkStruct_203B0CC_sub_2 *a4)
void sub_800E8AC(s32 a0, DungeonPos *a1, DungeonPos *a2, s32 a3, unkStruct_2039DB0 *a4)
{
s32 index;
struct unkStruct_203B0CC_sub *ptr;
@@ -68,7 +68,7 @@ void sub_800E8AC(s32 a0, DungeonPos *a1, DungeonPos *a2, s32 a3, struct unkStruc
if(a1 != NULL) ptr->unk18 = *a1;
if(a2 != NULL) ptr->unk1c = *a2;
if(a3 != 0xFFFF) ptr->unk24 = a3;
if(a4 != NULL) ptr->unk28 = *a4;
if(a4 != NULL) ptr->spriteMasks = *a4;
}
}

View File

@@ -99,7 +99,7 @@ void sub_800EB24(s32 param_1, DungeonPos *param_2, DungeonPos *param_3, s32 r5,
if (idx != -1) {
struct unkStruct_203B0CC_sub *curStruct;
curStruct = &gUnknown_203B0CC->unk0[idx];
if (curStruct->unkCC == 0) {
if (curStruct->unkCC[0] == 0 && curStruct->unkCC[1] == 0) {
curStruct->unk18 = *param_2;
}

View File

@@ -265,7 +265,6 @@ extern void sub_8040124(void);
extern void sub_803E830(void);
extern void sub_803E214(void);
extern void nullsub_56(void);
extern void sub_806863C(void);
extern void sub_8040218(void);
extern void sub_8047104(void);
extern void sub_8068F28(void);
@@ -282,7 +281,6 @@ extern void sub_803E02C(void);
extern void sub_80847D4(void);
extern void sub_8043D60(void);
extern void sub_806890C(void);
extern void sub_8068614(void);
extern void sub_80840A4(void);
extern void sub_803E178(void);
extern void sub_80848F0(void);
@@ -327,7 +325,6 @@ extern bool8 sub_8044B28(void);
extern bool8 sub_8083C24(void);
extern bool8 sub_8083C88(u8 param_1);
extern bool8 sub_8043ED0(bool8);
extern void LoadDungeonPokemonSprites(void);
extern void ShowDungeonNameBanner(void);
extern void sub_803EAF0(u32, u32);
extern void sub_806A914(bool8 a0, bool8 a1, bool8 showRunAwayEffect);
@@ -487,7 +484,7 @@ void xxx_dungeon_8042F6C(struct UnkStruct_xxx_dungeon_8042F6C *r8)
}
}
sub_8068614();
OpenDungeonPaletteFile();
if (!r6 && gDungeon->unk644.unk34 == 1) {
if (sub_8099394(&sp)) {
unkStruct_203B480 *mailStr = GetMailatIndex(sp);
@@ -914,7 +911,7 @@ void xxx_dungeon_8042F6C(struct UnkStruct_xxx_dungeon_8042F6C *r8)
}
}
sub_806863C();
CloseDungeonPaletteFile();
sub_803E214();
nullsub_56();
sub_8040218();

View File

@@ -2,19 +2,67 @@
#include "code_805D8C8.h"
#include "structs/str_dungeon.h"
#include "dungeon_util.h"
#include "dungeon_util_1.h"
#include "file_system.h"
#include "pokemon.h"
#include "pokemon_3.h"
// monster_sbin.s
extern const struct FileArchive gMonsterFileArchive;
// data_8106A4C.s
extern const u8 gUnknown_8106EA0[]; // ax%03d
extern const u8 gUnknown_8106E98[]; // palet
// ???
extern s32 sprintf(char *, const char *, ...);
static void EnsureCastformLoaded(void);
static void EnsureDeoxysLoaded(void);
void OpenDungeonPaletteFile(void)
{
gDungeon->paletFile = OpenFileAndGetFileDataPtr(gUnknown_8106E98, &gMonsterFileArchive);
}
void CloseDungeonPaletteFile(void)
{
CloseFile(gDungeon->paletFile);
}
void LoadDungeonPokemonSprites(void)
{
s32 index;
for(index = 0; index < 0x1A8; index++)
{
gDungeon->sprites[index] = NULL;
}
LoadPokemonSprite(MONSTER_DECOY, TRUE);
for(index = 0; index < gDungeon->unk37E4; index++)
{
LoadPokemonSprite(ExtractSpeciesIndex(&gDungeon->unk343C[index]), TRUE);
}
if(gDungeon->unk644.unk44)
{
LoadPokemonSprite(gDungeon->unk644.unk44, TRUE);
}
for(index = 0; index < 4; index++)
{
PokemonStruct2 *ptr = &gRecruitedPokemonRef->pokemon2[index];
if(PokemonFlag1Struct2(ptr))
if(PokemonFlag2Struct2(ptr))
LoadPokemonSprite(ptr->speciesNum, FALSE);
}
if(gDungeon->fixedRoomNumber == 0x31)
{
for(index = 0; index < MAX_TEAM_MEMBERS; index++)
{
PokemonStruct1 *ptr = &gRecruitedPokemonRef->team[index];
if(PokemonFlag1(ptr))
LoadPokemonSprite(ptr->speciesNum, TRUE);
}
}
}
void sub_8068768(void)
{
Entity *entity;