more decomp

This commit is contained in:
Seth Barberee 2024-10-06 21:44:44 -07:00
parent 90240df441
commit 59827df253
9 changed files with 212 additions and 298 deletions

View File

@ -1762,60 +1762,4 @@ _08015F7C:
bx r1
thumb_func_end sub_8015F44
thumb_func_start sub_8015F84
sub_8015F84:
push {r4-r7,lr}
movs r6, 0
movs r5, 0
ldr r3, _08015FBC
ldr r0, [r3]
ldrb r0, [r0, 0x1B]
cmp r5, r0
bge _08015FE4
adds r7, r3, 0
_08015F96:
ldr r1, [r7]
lsls r4, r5, 1
adds r0, r1, 0
adds r0, 0x1E
adds r0, r4
strh r6, [r0]
adds r0, r1, 0
adds r0, 0xF8
ldr r0, [r0]
adds r2, r0, r5
ldrb r0, [r2]
cmp r0, 0
bne _08015FC0
adds r0, r1, 0
adds r0, 0x8A
adds r0, r4
movs r1, 0x8
strh r1, [r0]
b _08015FE4
.align 2, 0
_08015FBC: .4byte gUnknown_203B1FC
_08015FC0:
ldrb r0, [r2]
bl ReturnIntFromChar2
bl GetCharacter
ldr r3, [r7]
adds r1, r3, 0
adds r1, 0x8A
adds r1, r4
ldrh r2, [r0, 0x6]
strh r2, [r1]
movs r1, 0x6
ldrsh r0, [r0, r1]
adds r6, r0
adds r5, 0x1
ldrb r3, [r3, 0x1B]
cmp r5, r3
blt _08015F96
_08015FE4:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_8015F84
.align 2,0

View File

@ -5,91 +5,6 @@
.text
thumb_func_start sub_806A338
sub_806A338:
push {r4-r6,lr}
movs r5, 0
ldr r6, _0806A378
_0806A33E:
ldr r0, [r6]
lsls r1, r5, 2
ldr r2, _0806A37C
adds r0, r2
adds r0, r1
ldr r4, [r0]
adds r0, r4, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _0806A384
ldr r0, [r4, 0x70]
adds r0, 0xC8
ldrb r0, [r0]
cmp r0, 0x3
bne _0806A384
ldr r1, [r6]
ldr r2, _0806A380
adds r0, r1, r2
str r4, [r0]
ldr r0, [r4, 0x70]
adds r2, 0xC
adds r1, r2
adds r0, 0x98
ldr r0, [r0]
str r0, [r1]
b _0806A38A
.align 2, 0
_0806A378: .4byte gDungeon
_0806A37C: .4byte 0x000135cc
_0806A380: .4byte 0x00017b30
_0806A384:
adds r5, 0x1
cmp r5, 0x13
ble _0806A33E
_0806A38A:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_806A338
thumb_func_start sub_806A390
sub_806A390:
push {r4-r7,lr}
ldr r0, [r0, 0x70]
movs r7, 0
movs r1, 0x8C
lsls r1, 1
adds r4, r0, r1
adds r5, r4, 0
movs r6, 0x3
_0806A3A0:
ldrb r1, [r4]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _0806A3C2
ldrb r1, [r4, 0x1]
movs r0, 0xF7
ands r0, r1
movs r1, 0xEF
ands r0, r1
movs r1, 0x4
orrs r0, r1
strb r0, [r4, 0x1]
adds r0, r5, 0
bl GetMoveBasePP
strb r0, [r4, 0x4]
_0806A3C2:
adds r4, 0x8
adds r5, 0x8
subs r6, 0x1
cmp r6, 0
bge _0806A3A0
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_806A390
thumb_func_start sub_806A3D4
sub_806A3D4:
push {r4-r7,lr}

View File

@ -1,137 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_802FBF4
sub_802FBF4:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
movs r0, 0
mov r8, r0
movs r1, 0
str r1, [sp]
_0802FC08:
ldr r1, [sp]
lsls r0, r1, 16
asrs r4, r0, 16
mov r10, r4
adds r0, r4, 0
bl sub_80A27CC
lsls r0, 24
cmp r0, 0
beq _0802FCCE
cmp r4, 0x13
beq _0802FCCE
cmp r4, 0x1D
beq _0802FCCE
ldr r7, _0802FC88
ldr r1, [r7]
mov r0, r8
lsls r6, r0, 1
adds r0, r1, r6
strh r4, [r0]
adds r1, 0x5C
add r1, r8
movs r0, 0
strb r0, [r1]
ldr r0, [r7]
adds r0, 0x8A
add r0, r8
movs r1, 0
strb r1, [r0]
ldr r0, [r7]
adds r0, 0xB8
ldrb r0, [r0]
cmp r0, 0
beq _0802FCCA
cmp r4, 0xD
beq _0802FCCA
adds r0, r4, 0
bl sub_80A270C
lsls r0, 24
lsrs r0, 24
mov r9, r0
movs r5, 0
cmp r4, 0x1E
bgt _0802FCA8
adds r0, r4, 0
bl sub_8097384
lsls r0, 24
cmp r0, 0
bne _0802FCA6
cmp r4, 0x6
bne _0802FC8C
movs r0, 0x13
bl sub_8097384
lsls r0, 24
cmp r0, 0
beq _0802FCA8
ldr r0, [r7]
adds r0, r6
movs r1, 0x13
b _0802FCA4
.align 2, 0
_0802FC88: .4byte gUnknown_203B314
_0802FC8C:
mov r0, r10
cmp r0, 0xA
bne _0802FCA8
movs r0, 0x1D
bl sub_8097384
lsls r0, 24
cmp r0, 0
beq _0802FCA8
ldr r0, [r7]
adds r0, r6
movs r1, 0x1D
_0802FCA4:
strh r1, [r0]
_0802FCA6:
movs r5, 0x1
_0802FCA8:
ldr r4, _0802FCEC
ldr r0, [r4]
adds r0, 0x5C
add r0, r8
strb r5, [r0]
cmp r5, 0
bne _0802FCCA
mov r0, r9
bl CountJobsinDungeon
cmp r0, 0
ble _0802FCCA
ldr r0, [r4]
adds r0, 0x8A
add r0, r8
movs r1, 0x1
strb r1, [r0]
_0802FCCA:
movs r1, 0x1
add r8, r1
_0802FCCE:
ldr r0, [sp]
adds r0, 0x1
str r0, [sp]
cmp r0, 0x2D
ble _0802FC08
mov r0, r8
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_0802FCEC: .4byte gUnknown_203B314
thumb_func_end sub_802FBF4
.align 2,0

View File

@ -166,8 +166,6 @@ SECTIONS {
src/wonder_mail_3_mid.o(.text);
src/mission_reward.o(.text);
src/code_8072F3C.o(.text);
asm/wonder_mail_3_mid.o(.text);
src/wonder_mail_3_1.o(.text);
src/makuhita_dojo1.o(.text);
src/makuhita_dojo2.o(.text);
src/wonder_mail_4.o(.text);

View File

@ -1,8 +1,53 @@
#include "global.h"
#include "code_8012A18_1.h"
#include "sprite_oam.h"
#include "text_util.h"
#include "text2.h"
struct unkStruct_203B1FC
{
// size: 0x198
u32 unk0;
u8 unk4;
SpriteOAM unk6;
SpriteOAM unkE;
u8 unk16;
u8 unk17;
u8 unk18;
u8 unk1B;
u8 unk1C;
s16 unk1E[1];
u8 fill20[0x8A - 0x20];
s16 unk8A[2];
u8 fill8E[0xF8 - 0x8E];
u8 *unkF8;
u8 unkFC[54];
};
extern struct unkStruct_203B1FC *gUnknown_203B1FC;
void sub_8015F84(void)
{
u32 uVar2;
const struct unkChar *puVar3;
s32 index;
s32 total;
total = 0;
for(index = 0; index < gUnknown_203B1FC->unk1B; index++)
{
gUnknown_203B1FC->unk1E[index] = total;
if (gUnknown_203B1FC->unkF8[index] == 0) {
gUnknown_203B1FC->unk8A[index] = 8;
return;
}
uVar2 = ReturnIntFromChar2(gUnknown_203B1FC->unkF8[index]);
puVar3 = GetCharacter(uVar2);
gUnknown_203B1FC->unk8A[index] = puVar3->unk6;
total += puVar3->unk6;
}
}
// TODO: Above code is in code_80130A8.s
s32 sub_8015FEC(u8 *buffer, s32 size)

View File

@ -14,6 +14,7 @@
#include "dungeon_util.h"
#include "game_options.h"
#include "move_effects_target.h"
#include "moves.h"
#include "pokemon.h"
#include "structs/dungeon_entity.h"
#include "structs/str_dungeon.h"
@ -294,3 +295,96 @@ void sub_806A2BC(Entity *pokemon, u8 param_2)
void nullsub_95(void)
{}
// https://decomp.me/scratch/tBuxP (90.38% matching - Seth)
#ifdef NONMATCHING
void sub_806A338(void)
{
Entity *entity;
EntityInfo *info;
s32 index;
for(index = 0; index < DUNGEON_MAX_POKEMON; index++)
{
entity = gDungeon->allPokemon[index];
if (EntityExists(entity) && (entity->info->waitingStruct.waitingStatus == 3))
{
gDungeon->snatchPokemon = entity;
info = gDungeon->snatchPokemon->info;
gDungeon->unk17B3C = info->unk98;
break;
}
}
}
#else
NAKED
void sub_806A338(void)
{
asm_unified(
"\tpush {r4-r6,lr}\n"
"\tmovs r5, 0\n"
"\tldr r6, _0806A378\n"
"_0806A33E:\n"
"\tldr r0, [r6]\n"
"\tlsls r1, r5, 2\n"
"\tldr r2, _0806A37C\n"
"\tadds r0, r2\n"
"\tadds r0, r1\n"
"\tldr r4, [r0]\n"
"\tadds r0, r4, 0\n"
"\tbl EntityExists\n"
"\tlsls r0, 24\n"
"\tcmp r0, 0\n"
"\tbeq _0806A384\n"
"\tldr r0, [r4, 0x70]\n"
"\tadds r0, 0xC8\n"
"\tldrb r0, [r0]\n"
"\tcmp r0, 0x3\n"
"\tbne _0806A384\n"
"\tldr r1, [r6]\n"
"\tldr r2, _0806A380\n"
"\tadds r0, r1, r2\n"
"\tstr r4, [r0]\n"
"\tldr r0, [r4, 0x70]\n"
"\tadds r2, 0xC\n"
"\tadds r1, r2\n"
"\tadds r0, 0x98\n"
"\tldr r0, [r0]\n"
"\tstr r0, [r1]\n"
"\tb _0806A38A\n"
"\t.align 2, 0\n"
"_0806A378: .4byte gDungeon\n"
"_0806A37C: .4byte 0x000135cc\n"
"_0806A380: .4byte 0x00017b30\n"
"_0806A384:\n"
"\tadds r5, 0x1\n"
"\tcmp r5, 0x13\n"
"\tble _0806A33E\n"
"_0806A38A:\n"
"\tpop {r4-r6}\n"
"\tpop {r0}\n"
"\tbx r0"
);
}
#endif
void sub_806A390(Entity *pokemon)
{
s32 index;
EntityInfo *info;
Move *move;
info = pokemon->info;
for(index = 0; index < MAX_MON_MOVES; index++)
{
move = &info->moves.moves[index];
if(move->moveFlags & MOVE_FLAG_EXISTS)
{
move->moveFlags2 &= 0xF7;
move->moveFlags2 &= 0xEF;
move->moveFlags2 |= MOVE_FLAG2_UNK4;
move->PP = GetMoveBasePP(move);
}
}
}

View File

@ -2,6 +2,8 @@
#include "globaldata.h"
#include "constants/input.h"
#include "code_80118A4.h"
#include "code_80958E8.h"
#include "code_80A26CC.h"
#include "input.h"
#include "memory.h"
#include "menu_input.h"
@ -61,12 +63,13 @@ ALIGNED(4) const u8 gUnknown_80E0754[] = {0x83, 0xC0};
void sub_802F9C0(void);
void sub_802FA50(void);
const u8 *sub_80974A0(s16 index);
extern bool8 sub_802FCF0(u32);
extern s32 sub_802FBF4(void);
extern bool8 sub_802FCF0(void);
s32 sub_802FBF4(void);
extern u8 sub_8097384(s16);
u32 sub_802F73C(u32 r0, UnkTextStruct2_sub *r1, u32 r2, u8 r3)
{
if (sub_802FCF0(r0))
if (sub_802FCF0())
return 0;
if (gUnknown_203B314 == NULL)
@ -223,3 +226,69 @@ void sub_802FA50(void)
}
sub_80073E0(gUnknown_203B314->sBC.s0.unk34);
}
static inline void sub_802FBF4_sub(u8 *test, s32 counter)
{
test[counter] = 0;
}
s32 sub_802FBF4(void)
{
bool8 bVar1;
u32 dungeonIndex;
s32 iVar6;
s32 counter;
s32 index;
counter = 0;
for(index = 0; index < 0x2E; index++)
{
iVar6 = iVar6 = (s16)index; // NOTE: LOLOL
if (((sub_80A27CC(index) != 0) && (iVar6 != 0x13)) && (iVar6 != 0x1d)) {
gUnknown_203B314->unk0[counter] = iVar6;
sub_802FBF4_sub(gUnknown_203B314->unk5C, counter);
sub_802FBF4_sub(gUnknown_203B314->unk8A, counter);
if ((gUnknown_203B314->unkB8 != 0) && (iVar6 != 0xd)) {
dungeonIndex = sub_80A270C(index);
bVar1 = FALSE;
if (0x1e >= iVar6)
{
if (sub_8097384(iVar6) == 0) {
if (iVar6 == 6) {
if (sub_8097384(0x13) != 0) {
gUnknown_203B314->unk0[counter] = 0x13;
bVar1 = TRUE;
}
}
else if ((iVar6 == 10) && (sub_8097384(0x1d) != 0)) {
gUnknown_203B314->unk0[counter] = 0x1d;
bVar1 = TRUE;
}
}
else {
bVar1 = TRUE;
}
}
gUnknown_203B314->unk5C[counter] = bVar1;
if ((!bVar1) && (0 < CountJobsinDungeon(dungeonIndex))) {
gUnknown_203B314->unk8A[counter] = 1;
}
}
counter++;
}
}
return counter;
}
bool8 sub_802FCF0(void)
{
s32 i;
for (i = 0; i < 0x2E; i++) {
if (sub_80A27CC(i))
return FALSE;
}
return TRUE;
}

View File

@ -1,14 +0,0 @@
#include "global.h"
#include "code_80A26CC.h"
bool8 sub_802FCF0(void)
{
s32 i;
for (i = 0; i < 0x2E; i++) {
if (sub_80A27CC(i))
return FALSE;
}
return TRUE;
}

View File

@ -141,7 +141,7 @@ void sub_8030E48(void)
case WONDER_MAIL_TYPE_AOK:
stack.mailDescriptionType = 10;
break;
case 5:
case WONDER_MAIL_TYPE_THANK_YOU:
stack.mailDescriptionType = 11;
break;
case WONDER_MAIL_TYPE_NONE: