Fix unkStruct_80416E0

This commit is contained in:
DizzyEggg 2025-04-03 16:32:55 +02:00
parent 404637ae22
commit fd37f54f65
5 changed files with 78 additions and 85 deletions

View File

@ -1,37 +1,7 @@
.section .rodata
.string "pksdir0\0"
.global gUnknown_8107234
gUnknown_8107234: @ 8107234
.byte 0x01, 0x01, 0x00, 0x02, 0x01, 0x03, 0x00, 0x00, 0x02, 0x04, 0x02, 0x05, 0x03, 0x06, 0x00, 0x00
.byte 0x03, 0x07, 0x04, 0x08, 0x05, 0x09, 0x00, 0x00, 0x04, 0x0a, 0x06, 0x0b, 0x07, 0x0c, 0x00, 0x00
.byte 0x05, 0x0d, 0x08, 0x0e, 0x09, 0x0f, 0x00, 0x00, 0x06, 0x10, 0x0a, 0x11, 0x0a, 0x11, 0x00, 0x00
.byte 0x07, 0x12, 0x0b, 0x13, 0x0c, 0x14, 0x00, 0x00, 0x14, 0x15, 0x0d, 0x16, 0x0d, 0x16, 0x00, 0x00
.byte 0x08, 0x17, 0x0e, 0x18, 0x0f, 0x19, 0x00, 0x00, 0x0b, 0x1a, 0x10, 0x1b, 0x11, 0x1c, 0x00, 0x00
.byte 0x09, 0x1d, 0x12, 0x1e, 0x13, 0x1f, 0x00, 0x00, 0x0c, 0x20, 0x14, 0x21, 0x15, 0x22, 0x00, 0x00
.byte 0x0d, 0x23, 0x16, 0x24, 0x17, 0x25, 0x00, 0x00, 0x0e, 0x26, 0x18, 0x27, 0x19, 0x28, 0x00, 0x00
.byte 0x0f, 0x29, 0x40, 0x29, 0x1a, 0x2a, 0x00, 0x00, 0x10, 0x2b, 0x1b, 0x2c, 0x1c, 0x2d, 0x00, 0x00
.byte 0x11, 0x2e, 0x40, 0x2e, 0x40, 0x2e, 0x00, 0x00, 0x12, 0x2f, 0x40, 0x2f, 0x40, 0x2f, 0x00, 0x00
.byte 0x13, 0x30, 0x40, 0x30, 0x40, 0x30, 0x00, 0x00, 0x0a, 0x31, 0x40, 0x31, 0x1e, 0x32, 0x00, 0x00
.byte 0x15, 0x33, 0x40, 0x33, 0x40, 0x33, 0x00, 0x00, 0x16, 0x34, 0x40, 0x34, 0x40, 0x34, 0x00, 0x00
.byte 0x17, 0x35, 0x40, 0x35, 0x40, 0x35, 0x00, 0x00, 0x19, 0x36, 0x40, 0x36, 0x40, 0x36, 0x00, 0x00
.byte 0x1b, 0x37, 0x40, 0x37, 0x40, 0x37, 0x00, 0x00, 0x1a, 0x38, 0x20, 0x39, 0x20, 0x39, 0x00, 0x00
.byte 0x18, 0x3a, 0x21, 0x3b, 0x21, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.global gUnknown_8107314
gUnknown_8107314: @ 8107314
.byte 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff
.byte 0x02, 0x00, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff
.byte 0x04, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff
.byte 0x04, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff
.byte 0x04, 0x00, 0x00, 0x00
.global gUnknown_8107358
gUnknown_8107358: @ 8107358
.byte 0x04, 0x03, 0x02, 0x03, 0x04, 0x05, 0x06, 0x05, 0x04, 0x03, 0x02, 0x03, 0x04, 0x05, 0x06, 0x05
.byte 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00
.align 2
.global gUnknown_8107374
gUnknown_8107374: @ 8107374
.byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

View File

@ -16,6 +16,7 @@ typedef struct unkStruct_80416E0
u16 unk12;
s32 unk14;
u32 unk18;
unkStruct_2039DB0 unk1C;
} unkStruct_80416E0;
u32 sub_800E890(unkStruct_80416E0 *);

View File

@ -621,6 +621,7 @@ SECTIONS {
src/dungeon_random.o(.rodata);
src/dungeon_cleared_window.o(.rodata);
src/dungeon_jobs.o(.rodata);
src/code_80848F0.o(.rodata);
data/data_8107224.o(.rodata);
src/pokemon.o(.rodata);
data/data_81076E4.o(.rodata);

View File

@ -216,7 +216,6 @@ s32 sub_8041550(Entity *entity, s32 a1, u8 a2, u8 a3, s32 a4, u8 a5)
EntityInfo *entInfo;
DungeonPos pos;
unkStruct_80416E0 sp;
unkStruct_2039DB0 unkStruct;
PixelPos pixelPos;
s32 var;
s32 r4;
@ -258,7 +257,7 @@ s32 sub_8041550(Entity *entity, s32 a1, u8 a2, u8 a3, s32 a4, u8 a5)
sp.unk12 = 0;
sp.unk18 = var;
sub_8004E8C(&unkStruct);
sub_8004E8C(&sp.unk1C);
r4 = sub_8041764(&sp, FALSE);
if (a2) {
for (i = 0; i < 100; i++) {
@ -286,7 +285,6 @@ s32 sub_80416E0(PixelPos *pos, u32 param_2, bool8 param_3)
int counter;
s32 ret;
unkStruct_80416E0 auStack_10;
unkStruct_2039DB0 stack1C;
auStack_10.unk0 = param_2;
auStack_10.unk4 = 0;
@ -299,7 +297,7 @@ s32 sub_80416E0(PixelPos *pos, u32 param_2, bool8 param_3)
auStack_10.unk10 = 0;
auStack_10.unk12 = 0;
auStack_10.unk18 = 0xffff;
sub_8004E8C(&stack1C);
sub_8004E8C(&auStack_10.unk1C);
ret = sub_8041764(&auStack_10, FALSE);
if (param_3) {
counter = 0;
@ -1227,7 +1225,6 @@ s32 sub_8042520(Entity *a0)
u32 dir;
s32 iVar8;
unkStruct_80416E0 local_58;
unkStruct_2039DB0 u203; // Unused
PixelPos local_2c;
if (sub_8045888(a0)) {
@ -1245,7 +1242,7 @@ s32 sub_8042520(Entity *a0)
local_58.unk12 = 0;
local_58.unk14 = -1;
local_58.unk18 = iVar8;
sub_8004E8C(&u203);
sub_8004E8C(&local_58.unk1C);
uVar4 = sub_8041764(&local_58, 0);
for (i = 0; i < 6; i++) {
@ -1568,7 +1565,6 @@ static const unkStruct_2039DB0 gUnknown_80F683C = {0xFFFF, 0xFFFF, 0xFFFF, 0, 0,
void sub_8042B34(s32 a0, s32 a1, s32 a2)
{
unkStruct_80416E0 spStruct;
unkStruct_2039DB0 stack1C;
s32 i;
s32 r8 = 0;
Entity *leader = xxx_call_GetLeader();
@ -1598,7 +1594,7 @@ void sub_8042B34(s32 a0, s32 a1, s32 a2)
spStruct.unk12 = gUnknown_203B414->unk8C[i].y;
spStruct.unk14 = 4;
spStruct.unk18 = 0xFFFF;
stack1C = gUnknown_80F683C;
spStruct.unk1C = gUnknown_80F683C;
gUnknown_203B414->unkC[i] = sub_800E890(&spStruct);
r8++;

View File

@ -1,4 +1,5 @@
#include "global.h"
#include "globaldata.h"
#include "constants/weather.h"
#include "constants/dungeon.h"
#include "constants/direction.h"
@ -34,6 +35,7 @@
#include "code_800E9E4.h"
#include "code_80869E4.h"
#include "pokemon_3.h"
#include "dungeon_boss_dialogue.h"
struct RgbS16
{
@ -49,14 +51,7 @@ extern s32 gUnknown_202F3D8;
extern const u8 gUnknown_8107358[25];
extern const DungeonPos gUnknown_80F4598[];
extern const unkStruct_2039DB0 gUnknown_8107374;
extern const unkStruct_2039DB0 gUnknown_8107380;
extern const u8 *const gUnknown_810665C;
extern const u8 *const gUnknown_810668C;
extern const u8 *const gUnknown_81066D4;
extern const u8 *const gUnknown_81066F0;
extern const u8 *const gUnknown_810671C;
extern const u32 gUnknown_8107314[];
extern const struct unkStruct_2039DB0 gUnknown_8107380;
extern bool8 sub_8004C00(unkStruct_202EE8C *a0, s32 a1, s32 a2, s32 brightness, const RGB *ramp, struct RgbS16 *a5);
extern void ShowWholeRevealedDungeonMap(void);
@ -85,16 +80,55 @@ extern void PlaySoundEffect(u32);
extern u32 sub_8002A70(u32, s32, u8);
extern s8 sub_8002984(s8, u8);
static void sub_80861EC(Entity *);
struct unkData_8107234
{
u8 unk0[8];
u8 unk0;
u8 unk1;
u8 unk2;
u8 unk3;
u8 unk4;
u8 unk5;
};
extern struct unkData_8107234 gUnknown_8107234[];
static void sub_8084854(const struct unkData_8107234 *);
static void sub_80861EC(Entity *);
void sub_8084854(struct unkData_8107234 *);
static const struct unkData_8107234 gUnknown_8107234[28] = {
[0] = {1, 1, 0, 2, 1, 3},
[1] = {2, 4, 2, 5, 3, 6},
[2] = {3, 7, 4, 8, 5, 9},
[3] = {4, 0xA, 6, 0xB, 7, 0xC},
[4] = {5, 0xD, 8, 0xE, 9, 0xF},
[5] = {6, 0x10, 0xA, 0x11, 0xA, 0x11},
[6] = {7, 0x12, 0xB, 0x13, 0xC, 0x14},
[7] = {0x14, 0x15, 0xD, 0x16, 0xD, 0x16},
[8] = {8, 0x17, 0xE, 0x18, 0xF, 0x19},
[9] = {0xB, 0x1A, 0x10, 0x1B, 0x11, 0x1C},
[10] = {9, 0x1D, 0x12, 0x1E, 0x13, 0x1F},
[11] = {0xC, 0x20, 0x14, 0x21, 0x15, 0x22},
[12] = {0xD, 0x23, 0x16, 0x24, 0x17, 0x25},
[13] = {0xE, 0x26, 0x18, 0x27, 0x19, 0x28},
[14] = {0xF, 0x29, 0x40, 0x29, 0x1A, 0x2A},
[15] = {0x10, 0x2B, 0x1B, 0x2C, 0x1C, 0x2D},
[16] = {0x11, 0x2E, 0x40, 0x2E, 0x40, 0x2E},
[17] = {0x12, 0x2F, 0x40, 0x2F, 0x40, 0x2F},
[18] = {0x13, 0x30, 0x40, 0x30, 0x40, 0x30},
[19] = {0xA, 0x31, 0x40, 0x31, 0x1E, 0x32},
[20] = {0x15, 0x33, 0x40, 0x33, 0x40, 0x33},
[21] = {0x16, 0x34, 0x40, 0x34, 0x40, 0x34},
[22] = {0x17, 0x35, 0x40, 0x35, 0x40, 0x35},
[23] = {0x19, 0x36, 0x40, 0x36, 0x40, 0x36},
[24] = {0x1B, 0x37, 0x40, 0x37, 0x40, 0x37},
[25] = {0x1A, 0x38, 0x20, 0x39, 0x20, 0x39},
[26] = {0x18, 0x3A, 0x21, 0x3B, 0x21, 0x3B},
[27] = {0},
};
static const s32 gUnknown_8107314[] = {
0, -1, 1, -2, 2, -3, 3, -4,
4, -4, 4, -4, 4, -4, 4, -4,
4
};
EWRAM_DATA static unkStruct_202F3D0 gUnknown_202F3D0 = {0};
@ -106,12 +140,12 @@ void sub_80847D4(void)
gDungeon->unk3A0D = 0;
gDungeon->unk1356C = 0;
ShowWholeRevealedDungeonMap();
for(index = 0; index < 0x3e7 && gUnknown_8107234[index].unk0[0] != 0; index++) {
for(index = 0; index < 0x3e7 && gUnknown_8107234[index].unk0 != 0; index++) {
fixedRoomNumber = gDungeon->fixedRoomNumber;
if (fixedRoomNumber - 0x1c < 0x16) {
fixedRoomNumber = 0x1b;
}
if (fixedRoomNumber == gUnknown_8107234[index].unk0[0])
if (fixedRoomNumber == gUnknown_8107234[index].unk0)
{
sub_8084854(&gUnknown_8107234[index]);
break;
@ -120,32 +154,26 @@ void sub_80847D4(void)
sub_8097FF8();
}
void sub_8084854(struct unkData_8107234 *param_1)
void sub_8084854(const struct unkData_8107234 *param_1)
{
if (gDungeon->unk644.unk34 != 0) {
gDungeon->unk3A0D = param_1->unk0[5];
}
else
{
if (sub_8098100(param_1->unk0[4]) != 0) {
gDungeon->unk3A0D = param_1->unk0[5];
if (gDungeon->unk644.unk34 != 0) {
gDungeon->unk3A0D = param_1->unk5;
}
else
{
if (sub_8098100(param_1->unk0[2]) != 0) {
gDungeon->unk3A0D = param_1->unk0[3];
}
else
{
gDungeon->unk3A0D = param_1->unk0[1];
if (param_1->unk0[2] != 0x40) {
sub_8097FA8(param_1->unk0[2]);
else if (sub_8098100(param_1->unk4) != 0) {
gDungeon->unk3A0D = param_1->unk5;
}
else if (sub_8098100(param_1->unk2) != 0) {
gDungeon->unk3A0D = param_1->unk3;
}
else {
gDungeon->unk3A0D = param_1->unk1;
if (param_1->unk2 != 0x40) {
sub_8097FA8(param_1->unk2);
}
}
}
}
gDungeon->unk644.unk31 = 1;
sub_807E5E4(WEATHER_CLEAR);
gDungeon->unk644.unk31 = 1;
sub_807E5E4(WEATHER_CLEAR);
}
u32 sub_80848EC(void)
@ -1134,12 +1162,9 @@ bool8 ShouldRunMonsterAI(Entity *pokemon)
UNUSED static void sub_8085B0C(Entity *pokemon)
{
s32 index;
u8 local_28 [25];
s32 index = 0;
u8 local_28[] = {4, 3, 2, 3, 4, 5, 6, 5, 4, 3, 2, 3, 4, 5, 6, 5, 4, 4, 4, 4, 4, 4, 5, 6, 0};
index = 0;
memcpy(local_28, gUnknown_8107358, 25);
while (local_28[index] != 0) {
SetFacingDirection(pokemon, local_28[index]);
sub_803E708(6,0x46);
@ -1308,11 +1333,12 @@ void sub_8085EB0(void)
gDungeon->unk181e8.unk18215 = 1;
}
extern const unkStruct_2039DB0 gUnknown_8107374;
u32 sub_8085EC8(s16 param_1,u32 param_2,u32 param_3,DungeonPos *param_4, bool32 param_5)
{
u32 uVar1;
unkStruct_80416E0 local_40;
unkStruct_2039DB0 stack1C;
bool8 param_5_bool8;
s32 param_1_s32 = param_1;
@ -1331,7 +1357,7 @@ u32 sub_8085EC8(s16 param_1,u32 param_2,u32 param_3,DungeonPos *param_4, bool32
local_40.unk10 = 0;
local_40.unk12 = 0;
local_40.unk18 = 0xffff;
stack1C = gUnknown_8107374;
local_40.unk1C = gUnknown_8107374;
uVar1 = sub_800E890(&local_40);
if (param_5_bool8) {
@ -1451,7 +1477,6 @@ s32 sub_80861F8(s32 param_1,Entity *param_2,bool32 param_3)
s32 uStack_38;
DungeonPos pos;
unkStruct_80416E0 stack;
unkStruct_2039DB0 stack1C;
// Needed to match.
s32 param_1Copy2 = (s16) param_1;
@ -1478,7 +1503,7 @@ s32 sub_80861F8(s32 param_1,Entity *param_2,bool32 param_3)
stack.unk12 = pos.y;
stack.unk14 = uStack_38;
stack.unk18 = 0xffff;
stack1C = gUnknown_8107380;
stack.unk1C = gUnknown_8107380;
uVar2 = sub_800E890(&stack);
if (param_3_bool32) {