another asm file gone and few more funcs decomped

This commit is contained in:
Seth Barberee
2024-08-03 13:11:48 -07:00
parent a66a508999
commit cf4d5c2539
6 changed files with 182 additions and 349 deletions

View File

@@ -1,331 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_8085EB0
sub_8085EB0:
ldr r0, _08085EC0
ldr r0, [r0]
ldr r1, _08085EC4
adds r0, r1
movs r1, 0x1
strb r1, [r0]
bx lr
.align 2, 0
_08085EC0: .4byte gDungeon
_08085EC4: .4byte 0x00018215
thumb_func_end sub_8085EB0
thumb_func_start sub_8085EC8
sub_8085EC8:
push {r4-r6,lr}
mov r6, r9
mov r5, r8
push {r5,r6}
sub sp, 0x28
adds r4, r0, 0
mov r8, r1
mov r9, r2
adds r6, r3, 0
ldr r5, [sp, 0x40]
lsls r4, 16
asrs r4, 16
lsls r5, 24
lsrs r5, 24
adds r0, r4, 0
bl sub_800EE5C
bl sub_800EF64
movs r0, 0x46
bl sub_803E46C
str r4, [sp]
mov r0, r8
str r0, [sp, 0x4]
mov r2, r9
str r2, [sp, 0x8]
mov r1, sp
ldrh r0, [r6]
movs r2, 0
strh r0, [r1, 0xC]
ldrh r0, [r6, 0x2]
strh r0, [r1, 0xE]
mov r0, sp
strh r2, [r0, 0x10]
strh r2, [r0, 0x12]
ldr r0, _08085F3C
str r0, [sp, 0x18]
add r1, sp, 0x1C
ldr r0, _08085F40
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
mov r0, sp
bl sub_800E890
cmp r5, 0
beq _08085F2E
bl sub_8085F44
movs r0, 0x1
negs r0, r0
_08085F2E:
add sp, 0x28
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_08085F3C: .4byte 0x0000ffff
_08085F40: .4byte gUnknown_8107374
thumb_func_end sub_8085EC8
thumb_func_start sub_8085F44
sub_8085F44:
push {r4,lr}
adds r4, r0, 0
b _08085F5C
_08085F4A:
ldr r0, _08085F70
ldr r0, [r0]
ldr r1, _08085F74
adds r0, r1
bl sub_800E90C
movs r0, 0x46
bl sub_803E46C
_08085F5C:
adds r0, r4, 0
bl sub_800E9A8
lsls r0, 24
cmp r0, 0
bne _08085F4A
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08085F70: .4byte gDungeon
_08085F74: .4byte 0x000181f0
thumb_func_end sub_8085F44
thumb_func_start sub_8085F78
sub_8085F78:
push {lr}
ldr r0, _08085F94
ldr r0, [r0]
ldr r1, _08085F98
adds r0, r1
ldrb r0, [r0]
cmp r0, 0x3C
bls _08085F8A
b _080860A4
_08085F8A:
lsls r0, 2
ldr r1, _08085F9C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08085F94: .4byte gDungeon
_08085F98: .4byte 0x00003a0d
_08085F9C: .4byte _08085FA0
.align 2, 0
_08085FA0:
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _08086094
.4byte _08086094
.4byte _08086094
.4byte _0808609A
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A0
.4byte _080860A0
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
.4byte _080860A4
_08086094:
bl sub_8088848
b _080860A4
_0808609A:
bl sub_8088EE8
b _080860A4
_080860A0:
bl sub_808A718
_080860A4:
pop {r0}
bx r0
thumb_func_end sub_8085F78
thumb_func_start sub_80860A8
sub_80860A8:
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
movs r5, 0
ldr r0, _08086108
ldr r2, [r0]
movs r3, 0x1
_080860B6:
ldrb r1, [r2]
adds r0, r3, 0
ands r0, r1
cmp r0, 0
beq _080860C6
ldrb r0, [r2, 0x2]
cmp r0, r6
beq _08086104
_080860C6:
adds r2, 0x4
adds r5, 0x1
cmp r5, 0x13
ble _080860B6
movs r5, 0
_080860D0:
ldr r0, _0808610C
ldr r0, [r0]
lsls r1, r5, 2
ldr r2, _08086110
adds r0, r2
adds r0, r1
ldr r4, [r0]
adds r0, r4, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _08086114
ldr r2, [r4, 0x70]
adds r0, r2, 0
adds r0, 0x60
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _08086114
adds r0, r2, 0
adds r0, 0x62
ldrb r0, [r0]
cmp r0, r6
bne _08086114
_08086104:
movs r0, 0x1
b _0808611C
.align 2, 0
_08086108: .4byte gTeamInventoryRef
_0808610C: .4byte gDungeon
_08086110: .4byte 0x0001357c
_08086114:
adds r5, 0x1
cmp r5, 0x3
ble _080860D0
movs r0, 0
_0808611C:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_80860A8
thumb_func_start sub_8086124
sub_8086124:
ldr r0, [r0, 0x70]
movs r2, 0xB0
lsls r2, 1
adds r0, r2
strb r1, [r0]
bx lr
thumb_func_end sub_8086124
thumb_func_start sub_8086130
sub_8086130:
push {lr}
movs r0, 0x3C
bl DungeonFadeOutBGM
movs r0, 0x3C
movs r1, 0x46
bl sub_803E708
ldr r0, _08086194
ldr r0, [r0]
bl sub_8052FB8
movs r0, 0x1E
movs r1, 0x46
bl sub_803E708
ldr r0, _08086198
ldr r0, [r0]
bl sub_8052FB8
movs r0, 0x1E
movs r1, 0x46
bl sub_803E708
ldr r0, _0808619C
ldr r0, [r0]
bl sub_8052FB8
movs r0, 0x1E
movs r1, 0x46
bl sub_803E708
ldr r0, _080861A0
ldr r0, [r0]
bl sub_8052FB8
movs r0, 0x1E
movs r1, 0x46
bl sub_803E708
ldr r0, _080861A4
ldr r0, [r0]
bl sub_8052FB8
movs r0, 0x1E
movs r1, 0x46
bl sub_803E708
pop {r0}
bx r0
.align 2, 0
_08086194: .4byte gUnknown_810665C
_08086198: .4byte gUnknown_810668C
_0808619C: .4byte gUnknown_81066D4
_080861A0: .4byte gUnknown_81066F0
_080861A4: .4byte gUnknown_810671C
thumb_func_end sub_8086130

View File

@@ -290,7 +290,8 @@ typedef struct EntityInfo
u8 unk15D;
u8 unk15E;
u8 unk15F;
u8 fill160[0x164 - 0x160];
u8 unk160;
u8 fill161[3];
/* 0x164 */ u8 unk164;
/* 0x165 */ u8 unk165;
/* 0x166 */ u8 unk166;

View File

@@ -302,7 +302,6 @@ SECTIONS {
src/dungeon_util_1.o(.text);
asm/code_8085B80.o(.text);
src/code_8085E98.o(.text);
asm/code_8085EB0.o(.text);
src/code_80861A8.o(.text);
asm/code_80861B8.o(.text);
src/code_80869E4.o(.text);

View File

@@ -101,14 +101,14 @@ void sub_803D1A8(u8 *param_1, u8 *param_2, s32 size)
bool8 sub_803D204(u8 *buffer,unkStruct_203B480 *param_2)
{
s32 innerIndex;
u8 uVar3;
u8 checksum;
u8 local_c4 [34];
u8 translateBuffer [PASSWORD_BUFFER_SIZE];
u8 localBuffer [PASSWORD_BUFFER_SIZE];
unkStruct_8094924 uStack_30;
s32 index;
uVar3 = 0;
checksum = 0;
MemoryCopy8(localBuffer,buffer,sizeof(localBuffer));
for(index = 0; index < PASSWORD_BUFFER_SIZE; index++)
{
@@ -124,9 +124,9 @@ bool8 sub_803D204(u8 *buffer,unkStruct_203B480 *param_2)
for(index = 1; index < 34; index++)
{
uVar3 += local_c4[index] + index;
checksum += local_c4[index] + index;
}
if (local_c4[0] == uVar3) {
if (local_c4[0] == checksum) {
xxx_init_struct_8094924_restore_809485C(&uStack_30,&local_c4[1],33);
sub_8095774(&uStack_30,param_2);
nullsub_102(&uStack_30);
@@ -138,14 +138,14 @@ bool8 sub_803D204(u8 *buffer,unkStruct_203B480 *param_2)
void sub_803D2C0(u8 *buffer, unkStruct_203B480 *mail)
{
u8 uVar2;
u8 checksum;
int index;
u8 local_c0 [34];
u8 buffer1 [PASSWORD_BUFFER_SIZE];
u8 buffer2 [PASSWORD_BUFFER_SIZE];
unkStruct_8094924 auStack_2c;
uVar2 = 0;
checksum = 0;
for(index = 0; index < 34; index++)
{
@@ -157,9 +157,9 @@ void sub_803D2C0(u8 *buffer, unkStruct_203B480 *mail)
nullsub_102(&auStack_2c);
for(index = 1; index < 34; index++)
{
uVar2 += + local_c0[index] + index;
checksum += + local_c0[index] + index;
}
local_c0[0] = uVar2;
local_c0[0] = checksum;
sub_803D1A8(buffer1,local_c0,sizeof(buffer1));
for(index = 0; index < PASSWORD_BUFFER_SIZE; index++)
{
@@ -172,13 +172,13 @@ bool8 DecodeWonderMailPassword(u8* buffer, WonderMail *mail)
{
s32 innerIndex;
int index;
u8 uVar5;
u8 checksum;
u8 local_70 [16];
u8 local_60 [24];
u8 password [24];
unkStruct_8094924 puVar1;
uVar5 = 0;
checksum = 0;
MemoryCopy8(password,buffer,24);
for(index = 0; index < 24; index++)
@@ -196,9 +196,9 @@ bool8 DecodeWonderMailPassword(u8* buffer, WonderMail *mail)
for(index = 1; index < 0xF; index++)
{
uVar5 += (local_70[index] + index);
checksum += (local_70[index] + index);
}
if (local_70[0] == uVar5) {
if (local_70[0] == checksum) {
xxx_init_struct_8094924_restore_809485C(&puVar1,&local_70[1],0xc);
RestoreWonderMail(&puVar1,mail);
nullsub_102(&puVar1);
@@ -210,14 +210,14 @@ bool8 DecodeWonderMailPassword(u8* buffer, WonderMail *mail)
void sub_803D414(u8 *buffer,WonderMail *mail)
{
u8 uVar2;
u8 checksum;
s32 index;
u8 local_6c [15];
u8 local_5c [24];
u8 auStack_44 [24];
unkStruct_8094924 uStack_2c;
uVar2 = 0;
checksum = 0;
for(index = 0; index < 0xF; index++)
{
local_6c[index] = 0;
@@ -229,9 +229,9 @@ void sub_803D414(u8 *buffer,WonderMail *mail)
for(index = 1; index < 0xF; index++)
{
uVar2 += local_6c[index] + index;
checksum += local_6c[index] + index;
}
local_6c[0] = uVar2;
local_6c[0] = checksum;
sub_803D1A8(local_5c,local_6c, sizeof(local_5c));
for(index = 0; index < 0x18; index++)
{

View File

@@ -1,9 +1,141 @@
#include "global.h"
#include "code_8085E98.h"
#include "code_800E9A8.h"
#include "code_803E46C.h"
#include "dungeon_util.h"
#include "items.h"
#include "structs/str_dungeon.h"
struct unkStruct_80420E8
{
u32 unk0;
u32 unk4;
u32 unk8;
};
extern const struct unkStruct_80420E8 gUnknown_8107374;
typedef struct unkStruct_80416E0
{
s32 unk0;
s32 unk4;
s32 unk8;
u16 x;
u16 y;
u16 unk10;
u16 unk12;
s32 unk14;
u32 unk18;
} unkStruct_80416E0;
extern u32 sub_800E890(unkStruct_80416E0 *);
void sub_800EF64(void);
void sub_800EE5C(s32);
void sub_8085F44(s32);
void sub_800E90C(Position *);
void sub_8088EE8(void);
void sub_8088848(void);
void sub_808A718(void);
void sub_8085E98(void)
{
gDungeon->unk181e8.unk18215 = 0;
}
void sub_8085EB0(void)
{
gDungeon->unk181e8.unk18215 = 1;
}
u32 sub_8085EC8(s16 param_1,u32 param_2,u32 param_3,Position *param_4,bool32 param_5)
{
u32 uVar1;
unkStruct_80416E0 local_40;
struct unkStruct_80420E8 local;
bool8 param_5_bool8;
s32 param_1_s32 = param_1;
param_5_bool8 = param_5;
sub_800EE5C(param_1_s32);
sub_800EF64();
sub_803E46C(0x46);
local_40.unk0 = param_1;
local_40.unk4 = param_2;
local_40.unk8 = param_3;
local_40.x = param_4->x;
local_40.y = param_4->y;
local_40.unk10 = 0;
local_40.unk12 = 0;
local_40.unk18 = 0xffff;
local = gUnknown_8107374;
uVar1 = sub_800E890(&local_40);
if (param_5_bool8) {
sub_8085F44(uVar1);
uVar1 = -1;
}
return uVar1;
}
void sub_8085F44(s32 param_1)
{
while (sub_800E9A8(param_1)) {
sub_800E90C(&gDungeon->unk181e8.cameraPixelPos);
sub_803E46C(0x46);
}
}
void sub_8085F78(void)
{
switch(gDungeon->unk3A0D) {
case 0x12:
case 0x13:
case 0x14:
sub_8088848();
break;
case 0x15:
sub_8088EE8();
break;
case 0x29:
case 0x2A:
sub_808A718();
break;
case 0:
case 0x3C:
default:
break;
}
return;
}
bool8 sub_80860A8(u8 id)
{
Item *item;
EntityInfo *info;
Entity *entity;
int index;
for(index = 0; index < INVENTORY_SIZE; index++)
{
item = &gTeamInventoryRef->teamItems[index];
if((item->flags & 1) != 0)
{
if((item->id) == id) return TRUE;
}
}
for(index = 0; index < MAX_TEAM_MEMBERS; index++)
{
entity = gDungeon->teamPokemon[index];
if (((EntityExists(entity)) && (info = entity->info, ((info->heldItem).flags & 1))) && ((info->heldItem).id == id)) return TRUE;
}
return FALSE;
}

View File

@@ -2,10 +2,42 @@
#include "constants/direction.h"
#include "code_80861A8.h"
#include "code_803E668.h"
#include "code_806CD90.h"
#include "dungeon_music.h"
extern const u8 *gUnknown_810665C[];
extern const u8 *gUnknown_810668C[];
extern const u8 *gUnknown_81066D4[];
extern const u8 *gUnknown_81066F0[];
extern const u8 *gUnknown_810671C[];
static void sub_80861EC(Entity *);
void sub_8052FB8(const u8 *);
void sub_8086124(Entity *entity, u8 param_2)
{
entity->info->unk160 = param_2;
}
void sub_8086130(void)
{
DungeonFadeOutBGM(0x3c);
sub_803E708(0x3c,0x46);
sub_8052FB8(*gUnknown_810665C);
sub_803E708(0x1e,0x46);
sub_8052FB8(*gUnknown_810668C);
sub_803E708(0x1e,0x46);
sub_8052FB8(*gUnknown_81066D4);
sub_803E708(0x1e,0x46);
sub_8052FB8(*gUnknown_81066F0);
sub_803E708(0x1e,0x46);
sub_8052FB8(*gUnknown_810671C);
sub_803E708(0x1e,0x46);
}
void sub_80861A8(Entity *a0)
{
sub_806CDD4(a0, 0, NUM_DIRECTIONS);