More gulpin decomp

This commit is contained in:
Seth Barberee 2023-07-30 21:51:39 -07:00
parent 0db89b429a
commit a3ff33a4cf
2 changed files with 266 additions and 499 deletions

View File

@ -5,503 +5,6 @@
.text
thumb_func_start sub_80209AC
sub_80209AC:
push {lr}
sub sp, 0x4
mov r0, sp
bl sub_80144A4
cmp r0, 0
bne _080209F4
ldr r0, _080209D4
ldr r1, [r0]
ldr r0, [sp]
str r0, [r1, 0x6C]
ldr r0, [sp]
cmp r0, 0x2
beq _080209DE
cmp r0, 0x2
bgt _080209D8
cmp r0, 0x1
beq _080209EE
b _080209F4
.align 2, 0
_080209D4: .4byte gUnknown_203B27C
_080209D8:
cmp r0, 0xB
beq _080209E6
b _080209F4
_080209DE:
movs r0, 0xE
bl sub_801FDA8
b _080209F4
_080209E6:
movs r0, 0x8
bl sub_801FDA8
b _080209F4
_080209EE:
movs r0, 0xC
bl sub_801FDA8
_080209F4:
add sp, 0x4
pop {r0}
bx r0
thumb_func_end sub_80209AC
thumb_func_start sub_80209FC
sub_80209FC:
push {lr}
sub sp, 0x4
mov r0, sp
bl sub_80144A4
cmp r0, 0
bne _08020A2E
ldr r0, [sp]
cmp r0, 0x10
beq _08020A20
cmp r0, 0x10
bgt _08020A1A
cmp r0, 0x1
beq _08020A28
b _08020A2E
_08020A1A:
cmp r0, 0x11
beq _08020A28
b _08020A2E
_08020A20:
movs r0, 0xE
bl sub_801FDA8
b _08020A2E
_08020A28:
movs r0, 0xC
bl sub_801FDA8
_08020A2E:
add sp, 0x4
pop {r0}
bx r0
thumb_func_end sub_80209FC
thumb_func_start sub_8020A34
sub_8020A34:
push {lr}
sub sp, 0x4
mov r0, sp
bl sub_80144A4
cmp r0, 0
bne _08020A7A
ldr r0, [sp]
cmp r0, 0xD
beq _08020A5C
cmp r0, 0xD
bgt _08020A52
cmp r0, 0x1
beq _08020A74
b _08020A7A
_08020A52:
cmp r0, 0xE
beq _08020A64
cmp r0, 0xF
beq _08020A6C
b _08020A7A
_08020A5C:
movs r0, 0x9
bl sub_801FDA8
b _08020A7A
_08020A64:
movs r0, 0xA
bl sub_801FDA8
b _08020A7A
_08020A6C:
movs r0, 0xB
bl sub_801FDA8
b _08020A7A
_08020A74:
movs r0, 0x1
bl sub_801FDA8
_08020A7A:
add sp, 0x4
pop {r0}
bx r0
thumb_func_end sub_8020A34
thumb_func_start sub_8020A80
sub_8020A80:
push {r4,lr}
movs r0, 0x1
bl sub_8023A94
cmp r0, 0x4
bhi _08020B32
lsls r0, 2
ldr r1, _08020A98
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08020A98: .4byte _08020A9C
.align 2, 0
_08020A9C:
.4byte _08020B32
.4byte _08020B32
.4byte _08020B28
.4byte _08020AB0
.4byte _08020AEC
_08020AB0:
bl sub_8023B44
ldr r4, _08020AE0
ldr r1, [r4]
strh r0, [r1, 0xC]
ldr r3, _08020AE4
movs r0, 0xC
ldrsh r2, [r1, r0]
movs r0, 0x58
muls r2, r0
ldr r0, [r3]
adds r0, r2
str r0, [r1, 0x10]
ldrb r0, [r0, 0x2]
strb r0, [r1, 0x16]
ldr r0, _08020AE8
ldr r1, [r4]
ldr r1, [r1, 0x10]
bl PrintPokeNameToBuffer
movs r0, 0x11
bl sub_801FDA8
b _08020B32
.align 2, 0
_08020AE0: .4byte gUnknown_203B27C
_08020AE4: .4byte gRecruitedPokemonRef
_08020AE8: .4byte gUnknown_202E128
_08020AEC:
bl sub_8023B44
ldr r4, _08020B1C
ldr r1, [r4]
strh r0, [r1, 0xC]
ldr r3, _08020B20
movs r0, 0xC
ldrsh r2, [r1, r0]
movs r0, 0x58
muls r2, r0
ldr r0, [r3]
adds r0, r2
str r0, [r1, 0x10]
ldrb r0, [r0, 0x2]
strb r0, [r1, 0x16]
ldr r0, _08020B24
ldr r1, [r4]
ldr r1, [r1, 0x10]
bl PrintPokeNameToBuffer
movs r0, 0x12
bl sub_801FDA8
b _08020B32
.align 2, 0
_08020B1C: .4byte gUnknown_203B27C
_08020B20: .4byte gRecruitedPokemonRef
_08020B24: .4byte gUnknown_202E128
_08020B28:
bl sub_8023C60
movs r0, 0x7
bl sub_801FDA8
_08020B32:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8020A80
thumb_func_start sub_8020B38
sub_8020B38:
push {r4,lr}
sub sp, 0x4
movs r0, 0
str r0, [sp]
bl sub_8023A94
ldr r4, _08020B7C
ldr r0, [r4]
adds r0, 0xCC
bl sub_8012FD8
lsls r0, 24
cmp r0, 0
bne _08020B68
ldr r0, [r4]
adds r0, 0xCC
mov r1, sp
bl sub_8013114
ldr r1, [sp]
cmp r1, 0x1
beq _08020B68
ldr r0, [r4]
str r1, [r0, 0x70]
_08020B68:
ldr r0, [sp]
subs r0, 0x1
cmp r0, 0x10
bhi _08020C24
lsls r0, 2
ldr r1, _08020B80
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08020B7C: .4byte gUnknown_203B27C
_08020B80: .4byte _08020B84
.align 2, 0
_08020B84:
.4byte _08020BC8
.4byte _08020C24
.4byte _08020BD0
.4byte _08020C0E
.4byte _08020C24
.4byte _08020C24
.4byte _08020C24
.4byte _08020C24
.4byte _08020C24
.4byte _08020C24
.4byte _08020C16
.4byte _08020C1E
.4byte _08020C24
.4byte _08020C24
.4byte _08020C24
.4byte _08020C24
.4byte _08020BC8
_08020BC8:
movs r0, 0x10
bl sub_801FDA8
b _08020C24
_08020BD0:
ldr r0, _08020BF0
ldr r0, [r0]
ldr r0, [r0, 0x10]
movs r1, 0x8
ldrsh r0, [r0, r1]
bl GetBaseSpeciesNoUnown
lsls r0, 16
movs r1, 0xCF
lsls r1, 17
cmp r0, r1
bne _08020BF4
movs r0, 0x1C
bl sub_801FDA8
b _08020C24
.align 2, 0
_08020BF0: .4byte gUnknown_203B27C
_08020BF4:
bl sub_8021178
lsls r0, 24
cmp r0, 0
beq _08020C06
movs r0, 0x1B
bl sub_801FDA8
b _08020C24
_08020C06:
movs r0, 0x14
bl sub_801FDA8
b _08020C24
_08020C0E:
movs r0, 0x1E
bl sub_801FDA8
b _08020C24
_08020C16:
movs r0, 0x12
bl sub_801FDA8
b _08020C24
_08020C1E:
movs r0, 0x13
bl sub_801FDA8
_08020C24:
add sp, 0x4
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8020B38
thumb_func_start sub_8020C2C
sub_8020C2C:
push {lr}
bl sub_80244E4
cmp r0, 0x1
bls _08020C44
cmp r0, 0x3
bhi _08020C44
bl sub_802453C
movs r0, 0x10
bl sub_801FDA8
_08020C44:
pop {r0}
bx r0
thumb_func_end sub_8020C2C
thumb_func_start sub_8020C48
sub_8020C48:
push {lr}
bl sub_801BF48
cmp r0, 0x1
bls _08020C60
cmp r0, 0x3
bhi _08020C60
bl sub_801BF98
movs r0, 0x10
bl sub_801FDA8
_08020C60:
pop {r0}
bx r0
thumb_func_end sub_8020C48
thumb_func_start sub_8020C64
sub_8020C64:
push {lr}
movs r0, 0x1
bl sub_801F520
cmp r0, 0x3
beq _08020C80
cmp r0, 0x3
bhi _08020C7A
cmp r0, 0x2
beq _08020CB0
b _08020CBA
_08020C7A:
cmp r0, 0x4
beq _08020C98
b _08020CBA
_08020C80:
bl sub_801F5B4
ldr r1, _08020C94
ldr r1, [r1]
strh r0, [r1, 0x1C]
strh r0, [r1, 0x1E]
movs r0, 0x17
bl sub_801FDA8
b _08020CBA
.align 2, 0
_08020C94: .4byte gUnknown_203B27C
_08020C98:
bl sub_801F5B4
ldr r1, _08020CAC
ldr r1, [r1]
strh r0, [r1, 0x1C]
strh r0, [r1, 0x1E]
movs r0, 0x18
bl sub_801FDA8
b _08020CBA
.align 2, 0
_08020CAC: .4byte gUnknown_203B27C
_08020CB0:
bl sub_801F63C
movs r0, 0x10
bl sub_801FDA8
_08020CBA:
pop {r0}
bx r0
thumb_func_end sub_8020C64
thumb_func_start sub_8020CC0
sub_8020CC0:
push {r4-r6,lr}
sub sp, 0x4
movs r0, 0
str r0, [sp]
bl sub_801F520
ldr r4, _08020D00
ldr r0, [r4]
adds r0, 0xCC
bl sub_8012FD8
lsls r0, 24
cmp r0, 0
bne _08020CF0
ldr r0, [r4]
adds r0, 0xCC
mov r1, sp
bl sub_8013114
ldr r1, [sp]
cmp r1, 0x1
beq _08020CF0
ldr r0, [r4]
str r1, [r0, 0x74]
_08020CF0:
ldr r0, [sp]
cmp r0, 0x3
beq _08020D14
cmp r0, 0x3
bgt _08020D04
cmp r0, 0x1
beq _08020D0C
b _08020D6C
.align 2, 0
_08020D00: .4byte gUnknown_203B27C
_08020D04:
cmp r0, 0xB
beq _08020D66
cmp r0, 0x11
bne _08020D6C
_08020D0C:
movs r0, 0x16
bl sub_801FDA8
b _08020D6C
_08020D14:
bl sub_801F63C
ldr r4, _08020D30
ldr r1, [r4]
adds r0, r1, 0
adds r0, 0x24
ldr r1, [r1, 0x10]
adds r1, 0x2C
bl unk_CopyMoves4To8
movs r5, 0
adds r6, r4, 0
movs r4, 0x24
b _08020D38
.align 2, 0
_08020D30: .4byte gUnknown_203B27C
_08020D34:
adds r4, 0x8
adds r5, 0x1
_08020D38:
cmp r5, 0x7
bgt _08020D52
ldr r3, [r6]
adds r2, r3, r4
ldrb r1, [r2]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _08020D34
ldrh r1, [r3, 0x1E]
adds r0, r2, 0
bl InitZeroedPPPokemonMove
_08020D52:
cmp r5, 0x3
ble _08020D5E
movs r0, 0x1D
bl sub_801FDA8
b _08020D6C
_08020D5E:
movs r0, 0x19
bl sub_801FDA8
b _08020D6C
_08020D66:
movs r0, 0x18
bl sub_801FDA8
_08020D6C:
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_8020CC0
thumb_func_start sub_8020D74
sub_8020D74:
push {lr}
bl sub_801F890
cmp r0, 0x1
bls _08020D8C
cmp r0, 0x3
bhi _08020D8C
bl sub_801F8D0
movs r0, 0x16
bl sub_801FDA8
_08020D8C:
pop {r0}
bx r0
thumb_func_end sub_8020D74
thumb_func_start sub_8020D90
sub_8020D90:
push {lr}

View File

@ -2,6 +2,7 @@
#include "memory.h"
#include "menu.h"
#include "pokemon.h"
#include "pokemon_3.h"
#include "file_system.h"
#include "input.h"
#include "text.h"
@ -20,7 +21,7 @@ struct unkStruct_203B27C
/* 0x10 */ struct PokemonStruct *pokeStruct;
/* 0x14 */ bool8 isNextMoveLinked;
u8 unk15;
u8 unk16;
u8 isTeamLeader;
u8 unk17;
/* 0x18 */ u32 moveIndex;
u16 unk1C;
@ -78,7 +79,9 @@ extern u8 *gUnknown_80D4970[];
extern u8 gUnknown_80DC428[];
extern u8 gUnknown_80DC438[];
extern u8 gUnknown_80DC448[];
extern u8 gUnknown_202E128[];
bool8 sub_8021178(void);
void CreateGulpinShopMenu(void);
extern void sub_8014248(const u8 *, u32, u32, const struct MenuItem *, void *, u32, u32, struct OpenedFile **, u32);
extern void sub_80141B4(const u8 *, u32, struct OpenedFile **, u32);
@ -120,6 +123,18 @@ extern void sub_80209FC(void);
extern void sub_8020A34(void);
extern void sub_801FDC0(void);
extern void sub_801FF28(void);
u32 sub_8023A94(u32);
void sub_8023C60(void);
extern s16 sub_8023B44(void);
extern u32 sub_80244E4(void);
extern u32 sub_801BF48(void);
extern void sub_802453C(void);
extern void sub_801BF98(void);
extern u32 sub_801F520(u32);
extern void sub_801F63C(void);
extern u16 sub_801F5B4(void);
extern void sub_801F8D0(void);
extern u32 sub_801F890(void);
extern void CreateGulpinLinkMenu(void);
extern void sub_802069C(void);
@ -576,7 +591,7 @@ void CreateGulpinLinkMenu(void)
MemoryFill16(gUnknown_203B27C->unkBC, 0, sizeof(gUnknown_203B27C->unkBC));
if(gUnknown_203B27C->unk16)
if(gUnknown_203B27C->isTeamLeader)
{
if(IsMoveSet(gUnknown_203B27C->moveIndex, gUnknown_203B27C->moves))
{
@ -679,3 +694,252 @@ void sub_8020950(void)
gUnknown_203B27C->unk7C[loopMax].text = NULL;
gUnknown_203B27C->unk7C[loopMax].menuAction = 1;
}
extern s32 sub_80144A4(s32 *);
void sub_80209AC(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
gUnknown_203B27C->unk6C = temp;
switch(temp)
{
case 2:
sub_801FDA8(0xe);
break;
case 0xB:
sub_801FDA8(0x8);
break;
case 1:
sub_801FDA8(0xC);
break;
}
}
}
void sub_80209FC(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
switch(temp)
{
case 0x10:
sub_801FDA8(0xe);
break;
case 0x11:
case 1:
sub_801FDA8(0xC);
break;
}
}
}
void sub_8020A34(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
switch(temp)
{
case 0xD:
sub_801FDA8(0x9);
break;
case 0xE:
sub_801FDA8(10);
break;
case 0xF:
sub_801FDA8(0xb);
break;
case 1:
sub_801FDA8(0x1);
break;
}
}
}
void sub_8020A80(void)
{
switch(sub_8023A94(1))
{
case 3:
gUnknown_203B27C->speciesNum = sub_8023B44();
gUnknown_203B27C->pokeStruct = &gRecruitedPokemonRef->pokemon[gUnknown_203B27C->speciesNum];
gUnknown_203B27C->isTeamLeader = gUnknown_203B27C->pokeStruct->isTeamLeader;
PrintPokeNameToBuffer(gUnknown_202E128, gUnknown_203B27C->pokeStruct);
sub_801FDA8(0x11);
break;
case 4:
gUnknown_203B27C->speciesNum = sub_8023B44();
gUnknown_203B27C->pokeStruct = &gRecruitedPokemonRef->pokemon[gUnknown_203B27C->speciesNum];
gUnknown_203B27C->isTeamLeader = gUnknown_203B27C->pokeStruct->isTeamLeader;
PrintPokeNameToBuffer(gUnknown_202E128, gUnknown_203B27C->pokeStruct);
sub_801FDA8(0x12);
break;
case 0:
case 1:
break;
case 2:
sub_8023C60();
sub_801FDA8(7);
break;
}
}
void sub_8020B38(void)
{
s32 menuAction;
menuAction = 0;
sub_8023A94(0);
if (!sub_8012FD8(&gUnknown_203B27C->unkCC)) {
sub_8013114(&gUnknown_203B27C->unkCC,&menuAction);
if (menuAction != 1) {
gUnknown_203B27C->unk70 = menuAction;
}
}
switch(menuAction)
{
case 0x1:
case 0x11:
sub_801FDA8(0x10);
break;
case 0x3:
if(GetBaseSpeciesNoUnown(gUnknown_203B27C->pokeStruct->speciesNum) == MONSTER_DEOXYS_NORMAL)
{
sub_801FDA8(0x1C);
}
else if(sub_8021178())
{
sub_801FDA8(0x1b);
}
else
{
sub_801FDA8(0x14);
}
break;
case 0x4:
sub_801FDA8(0x1e);
break;
case 0xB:
sub_801FDA8(0x12);
break;
case 0xC:
sub_801FDA8(0x13);
break;
}
}
void sub_8020C2C(void)
{
switch(sub_80244E4())
{
case 2:
case 3:
sub_802453C();
sub_801FDA8(0x10);
break;
case 0:
case 1:
break;
}
}
void sub_8020C48(void)
{
switch(sub_801BF48())
{
case 2:
case 3:
sub_801BF98();
sub_801FDA8(0x10);
break;
case 0:
case 1:
break;
}
}
void sub_8020C64(void)
{
switch(sub_801F520(1))
{
case 3:
gUnknown_203B27C->unk1E = gUnknown_203B27C->unk1C = sub_801F5B4();
sub_801FDA8(0x17);
break;
case 4:
gUnknown_203B27C->unk1E = gUnknown_203B27C->unk1C = sub_801F5B4();
sub_801FDA8(0x18);
break;
case 2:
sub_801F63C();
sub_801FDA8(0x10);
break;
}
}
void sub_8020CC0(void)
{
s32 menuAction;
s32 index;
struct Move *move;
menuAction = 0;
sub_801F520(0);
if (!sub_8012FD8(&gUnknown_203B27C->unkCC)) {
sub_8013114(&gUnknown_203B27C->unkCC,&menuAction);
if (menuAction != 1) {
gUnknown_203B27C->unk74 = menuAction;
}
}
switch(menuAction)
{
case 0x1:
case 0x11:
sub_801FDA8(0x16);
break;
case 0x3:
sub_801F63C();
unk_CopyMoves4To8(gUnknown_203B27C->moves,gUnknown_203B27C->pokeStruct->moves);
for(index = 0; index < 8; index++)
{
move = &gUnknown_203B27C->moves[index];
if(!(move->moveFlags & MOVE_FLAG_EXISTS))
{
InitZeroedPPPokemonMove(move,gUnknown_203B27C->unk1E);
break;
}
}
if(index >= 4)
{
sub_801FDA8(0x1d);
}
else
{
sub_801FDA8(0x19);
}
break;
case 0xB:
sub_801FDA8(0x18);
break;
}
}
void sub_8020D74(void)
{
switch(sub_801F890())
{
case 2:
case 3:
sub_801F8D0();
sub_801FDA8(0x16);
break;
case 0:
case 1:
break;
}
}