mirror of
https://github.com/pret/pmd-red.git
synced 2026-04-25 07:28:17 -05:00
more decomp
This commit is contained in:
parent
90240df441
commit
59827df253
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user