combine another file

This commit is contained in:
Seth Barberee 2023-06-16 09:57:12 -07:00
parent 09b38d7aab
commit 099b4e3bc3
6 changed files with 410 additions and 703 deletions

View File

@ -1,112 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_801BB5C
sub_801BB5C:
push {r4-r7,lr}
ldr r4, _0801BBEC
ldr r2, [r4]
adds r1, r2, 0
adds r1, 0xCC
ldr r0, _0801BBF0
str r0, [r1]
adds r1, 0x4
movs r0, 0x6
str r0, [r1]
ldr r0, [r2, 0x24]
bl sub_801ADA0
lsls r0, 24
cmp r0, 0
bne _0801BB86
ldr r0, [r4]
adds r0, 0xD0
movs r1, 0x1
negs r1, r1
str r1, [r0]
_0801BB86:
ldr r0, [r4]
mov r12, r0
movs r3, 0x1
movs r2, 0x8
mov r1, r12
adds r1, 0xD4
ldr r0, _0801BBF4
str r0, [r1]
adds r1, 0x4
movs r0, 0x7
str r0, [r1]
adds r1, 0x4
ldr r0, _0801BBF8
ldr r0, [r0]
str r0, [r1]
mov r0, r12
adds r0, 0xE0
str r2, [r0]
movs r5, 0x3
adds r1, 0x8
movs r0, 0
str r0, [r1]
mov r0, r12
adds r0, 0xE8
str r3, [r0]
movs r3, 0
adds r6, r4, 0
movs r7, 0x1
negs r7, r7
mov r4, r12
adds r4, 0xC8
subs r1, 0x14
_0801BBC6:
ldr r2, [r1]
cmp r2, r7
beq _0801BBD2
ldr r0, [r4]
cmp r2, r0
beq _0801BC1C
_0801BBD2:
adds r1, 0x8
adds r3, 0x1
cmp r3, r5
blt _0801BBC6
movs r3, 0
cmp r3, r5
bge _0801BC1C
ldr r2, [r6]
adds r0, r2, 0
adds r0, 0xD0
ldr r1, [r0]
b _0801BC0E
.align 2, 0
_0801BBEC: .4byte gUnknown_203B234
_0801BBF0: .4byte gKangaskhanStorage
_0801BBF4: .4byte gKangaskhanTrash
_0801BBF8: .4byte gUnknown_80D4970
_0801BBFC:
adds r3, 0x1
cmp r3, r5
bge _0801BC1C
ldr r2, [r6]
lsls r0, r3, 3
adds r1, r2, 0
adds r1, 0xD0
adds r1, r0
ldr r1, [r1]
_0801BC0E:
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _0801BBFC
adds r0, r2, 0
adds r0, 0xC8
str r1, [r0]
_0801BC1C:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_801BB5C
.align 2,0

View File

@ -204,354 +204,4 @@ _0801D384:
_0801D3A4: .4byte gUnknown_203B250
thumb_func_end sub_801D220
thumb_func_start sub_801D3A8
sub_801D3A8:
push {r4-r6,lr}
sub sp, 0x8
ldr r1, _0801D3C4
ldr r0, [r1]
ldr r0, [r0, 0x10]
adds r6, r1, 0
cmp r0, 0xC
bls _0801D3BA
b _0801D4B6
_0801D3BA:
lsls r0, 2
ldr r1, _0801D3C8
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0801D3C4: .4byte gUnknown_203B250
_0801D3C8: .4byte _0801D3CC
.align 2, 0
_0801D3CC:
.4byte _0801D400
.4byte _0801D400
.4byte _0801D4B6
.4byte _0801D458
.4byte _0801D462
.4byte _0801D468
.4byte _0801D472
.4byte _0801D47A
.4byte _0801D482
.4byte _0801D490
.4byte _0801D49C
.4byte _0801D4AA
.4byte _0801D4B2
_0801D400:
ldr r0, [r6]
ldr r5, [r0]
cmp r5, 0
beq _0801D438
ldr r4, _0801D434
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0x7
bl PrintColoredPokeNameToBuffer
ldr r2, [r6]
str r4, [r2, 0x18]
adds r0, r2, 0
adds r0, 0x18
adds r1, r2, 0
adds r1, 0x68
adds r3, r2, 0
adds r3, 0xA8
ldr r2, [r2, 0x14]
str r2, [sp]
movs r2, 0
str r2, [sp, 0x4]
bl sub_8012D60
b _0801D4B6
.align 2, 0
_0801D434: .4byte gAvailablePokemonNames
_0801D438:
bl sub_801D894
ldr r2, [r6]
adds r0, r2, 0
adds r0, 0x18
adds r1, r2, 0
adds r1, 0x68
adds r3, r2, 0
adds r3, 0xA8
ldr r2, [r2, 0x14]
str r2, [sp]
str r5, [sp, 0x4]
movs r2, 0
bl sub_8012D60
b _0801D4B6
_0801D458:
ldr r0, [r6]
ldr r0, [r0]
bl sub_80227B8
b _0801D4B6
_0801D462:
bl sub_8027074
b _0801D4B6
_0801D468:
ldr r0, [r6]
ldr r0, [r0]
bl sub_8025EF4
b _0801D4B6
_0801D472:
movs r0, 0
bl sub_80252F0
b _0801D4B6
_0801D47A:
movs r0, 0x1
bl sub_80252F0
b _0801D4B6
_0801D482:
ldr r0, [r6]
movs r1, 0x4
ldrsh r0, [r0, r1]
movs r1, 0x2
bl sub_8024458
b _0801D4B6
_0801D490:
ldr r0, [r6]
movs r1, 0x4
ldrsh r0, [r0, r1]
bl sub_801BEEC
b _0801D4B6
_0801D49C:
ldr r0, [r6]
ldrb r0, [r0, 0x6]
movs r1, 0x1
movs r2, 0x2
bl sub_8021774
b _0801D4B6
_0801D4AA:
movs r0, 0
bl InitializeJobListMenu
b _0801D4B6
_0801D4B2:
bl sub_801DCC4
_0801D4B6:
add sp, 0x8
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_801D3A8
thumb_func_start sub_801D4C0
sub_801D4C0:
push {r4-r7,lr}
movs r6, 0
ldr r4, _0801D554
ldr r0, [r4]
adds r0, 0xA8
movs r1, 0
movs r2, 0x10
bl MemoryFill16
ldr r0, [r4]
ldrb r0, [r0, 0x6]
cmp r0, 0
bne _0801D568
bl sub_8096E2C
lsls r0, 24
cmp r0, 0
beq _0801D534
ldr r1, [r4]
movs r0, 0x2
str r0, [r1, 0x6C]
ldr r0, _0801D558
str r0, [r1, 0x68]
bl GetNumberOfFilledInventorySlots
cmp r0, 0
bne _0801D4FE
ldr r0, [r4]
adds r0, 0xA8
movs r1, 0x1
strh r1, [r0]
_0801D4FE:
ldr r1, [r4]
ldr r0, _0801D55C
str r0, [r1, 0x70]
movs r0, 0x4
str r0, [r1, 0x74]
movs r6, 0x2
movs r0, 0x2
bl sub_80023E4
lsls r0, 24
cmp r0, 0
beq _0801D534
ldr r1, [r4]
ldr r0, _0801D560
str r0, [r1, 0x78]
movs r0, 0x9
str r0, [r1, 0x7C]
bl HasNoAcceptedJobs
lsls r0, 24
cmp r0, 0
beq _0801D532
ldr r0, [r4]
adds r0, 0xAC
movs r1, 0x1
strh r1, [r0]
_0801D532:
movs r6, 0x3
_0801D534:
ldr r4, _0801D554
ldr r2, [r4]
lsls r3, r6, 3
adds r0, r2, 0
adds r0, 0x68
adds r0, r3
ldr r1, _0801D564
str r1, [r0]
adds r2, 0x6C
adds r2, r3
movs r0, 0xB
str r0, [r2]
adds r6, 0x1
adds r7, r4, 0
b _0801D5E6
.align 2, 0
_0801D554: .4byte gUnknown_203B250
_0801D558: .4byte gMenuItems
_0801D55C: .4byte gMenuTeam
_0801D560: .4byte gMenuJobList
_0801D564: .4byte gMenuOthers
_0801D568:
ldr r0, _0801D63C
ldr r1, _0801D640
bl strcpy
bl sub_8096E2C
lsls r0, 24
cmp r0, 0
beq _0801D5B6
ldr r1, [r4]
ldr r0, _0801D644
ldr r0, [r0]
str r0, [r1, 0x68]
movs r0, 0x5
str r0, [r1, 0x6C]
movs r0, 0x4
bl sub_8024108
lsls r0, 24
cmp r0, 0
beq _0801D59A
ldr r0, [r4]
adds r0, 0xA8
movs r1, 0x1
strh r1, [r0]
_0801D59A:
movs r6, 0x1
ldr r1, [r4]
movs r0, 0x2
str r0, [r1, 0x74]
ldr r0, _0801D648
str r0, [r1, 0x70]
bl GetNumberOfFilledInventorySlots
cmp r0, 0
bne _0801D5B4
ldr r0, [r4]
adds r0, 0xAA
strh r6, [r0]
_0801D5B4:
movs r6, 0x2
_0801D5B6:
ldr r5, _0801D64C
ldr r1, [r5]
lsls r2, r6, 3
adds r3, r1, 0
adds r3, 0x68
adds r4, r3, r2
ldr r0, _0801D650
ldr r0, [r0]
str r0, [r4]
adds r1, 0x6C
adds r2, r1, r2
movs r0, 0x8
str r0, [r2]
adds r6, 0x1
lsls r2, r6, 3
adds r3, r2
ldr r0, _0801D654
ldr r0, [r0]
str r0, [r3]
adds r1, r2
movs r0, 0xA
str r0, [r1]
adds r6, 0x1
adds r7, r5, 0
_0801D5E6:
ldr r4, [r7]
lsls r2, r6, 3
adds r0, r4, 0
adds r0, 0x68
adds r0, r2
movs r1, 0
str r1, [r0]
adds r1, r4, 0
adds r1, 0x6C
adds r2, r1, r2
movs r0, 0x1
str r0, [r2]
movs r3, 0
cmp r3, r6
bge _0801D622
adds r5, r4, 0
adds r4, 0xA8
adds r2, r1, 0
_0801D60A:
ldrh r0, [r4]
cmp r0, 0
bne _0801D618
ldr r1, [r2]
ldr r0, [r5, 0x14]
cmp r1, r0
beq _0801D67A
_0801D618:
adds r4, 0x2
adds r2, 0x8
adds r3, 0x1
cmp r3, r6
blt _0801D60A
_0801D622:
movs r3, 0
cmp r3, r6
bge _0801D67A
ldr r1, [r7]
adds r0, r1, 0
adds r0, 0xA8
ldrh r0, [r0]
cmp r0, 0
bne _0801D658
ldr r0, [r1, 0x6C]
str r0, [r1, 0x14]
b _0801D67A
.align 2, 0
_0801D63C: .4byte gAvailablePokemonNames
_0801D640: .4byte gUnknown_80DBF34
_0801D644: .4byte gUnknown_80D49A8
_0801D648: .4byte gMenuItems
_0801D64C: .4byte gUnknown_203B250
_0801D650: .4byte gUnknown_80D4970
_0801D654: .4byte gUnknown_80D49B4
_0801D658:
adds r3, 0x1
cmp r3, r6
bge _0801D67A
ldr r2, [r7]
lsls r0, r3, 1
adds r1, r2, 0
adds r1, 0xA8
adds r1, r0
ldrh r0, [r1]
cmp r0, 0
bne _0801D658
lsls r0, r3, 3
adds r1, r2, 0
adds r1, 0x6C
adds r1, r0
ldr r0, [r1]
str r0, [r2, 0x14]
_0801D67A:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_801D4C0
.align 2,0

View File

@ -107,7 +107,6 @@ SECTIONS {
src/kecleon_items_1.o(.text);
src/code_801AFA4.o(.text);
src/code_801B3C0.o(.text);
asm/code_801B3C0.o(.text);
src/code_801C620.o(.text);
asm/code_801C620.o(.text);
src/code_801D760.o(.text);

View File

@ -66,6 +66,20 @@ extern u8 gUnknown_80DBB08[];
extern u8 gUnknown_80DBB38[];
extern u8 gKangaskhanTrashToolboxItem[];
extern u8 gKangaskhanTrashReceivedItem[];
extern u8 gKangaskhanStorage[];
extern u8 gKangaskhanTrash[];
extern u8 *gUnknown_80D4970[];
extern u8 gUnknown_202DEA8[];
extern u8 *gUnknown_80D4920[];
extern u8 *gUnknown_80D4928[];
extern s32 sub_80144A4(s32 *);
extern u32 sub_801A6E8(u32);
extern u32 sub_801A8AC();
extern void sub_8099690(u32);
extern void sub_801A928(void);
extern bool8 sub_801ADA0(s32);
extern struct UnkTextStruct2 gUnknown_80DBA58;
extern struct UnkTextStruct2 gUnknown_80DBA88;
extern struct UnkTextStruct2 gUnknown_80DBA70;
@ -508,3 +522,206 @@ void sub_801BB20(void)
gUnknown_203B234->unkCC[loopMax].text = NULL;
gUnknown_203B234->unkCC[loopMax].menuAction = -1;
}
void sub_801BB5C(void)
{
int index;
s32 loopMax = 0;
gUnknown_203B234->unkCC[loopMax].text = gKangaskhanStorage;
gUnknown_203B234->unkCC[loopMax].menuAction = 6;
if (!sub_801ADA0(gUnknown_203B234->unk24)) {
gUnknown_203B234->unkCC[loopMax].menuAction = -1;
}
loopMax++;
gUnknown_203B234->unkCC[loopMax].text = gKangaskhanTrash;
gUnknown_203B234->unkCC[loopMax].menuAction = 7;
loopMax++;
gUnknown_203B234->unkCC[loopMax].text = *gUnknown_80D4970;
gUnknown_203B234->unkCC[loopMax].menuAction = 8;
loopMax++;
gUnknown_203B234->unkCC[loopMax].text = 0;
gUnknown_203B234->unkCC[loopMax].menuAction = 1;
for(index = 0; index < loopMax; index++)
{
if(gUnknown_203B234->unkCC[index].menuAction != -1)
if(gUnknown_203B234->unkCC[index].menuAction == gUnknown_203B234->menuAction)
return;
}
for(index = 0; index < loopMax; index++)
{
if(gUnknown_203B234->unkCC[index].menuAction != -1)
{
gUnknown_203B234->menuAction = gUnknown_203B234->unkCC[index].menuAction;
break;
}
}
}
void sub_801BC24(void)
{
s32 loopMax;
loopMax = 0;
gUnknown_203B234->unkCC[loopMax].text = *gUnknown_80D4920;
gUnknown_203B234->unkCC[loopMax].menuAction = 2;
loopMax += 1;
gUnknown_203B234->unkCC[loopMax].text = *gUnknown_80D4928;
gUnknown_203B234->unkCC[loopMax].menuAction = 3;
loopMax += 1;
gUnknown_203B234->unkCC[loopMax].text = NULL;
gUnknown_203B234->unkCC[loopMax].menuAction = 1;
}
void sub_801BC64(void)
{
s32 temp;
if(sub_80144A4(&temp)== 0)
{
switch(temp)
{
case 4:
sub_801B748(0x8);
break;
case 5:
sub_801B748(0x7);
break;
}
}
}
void sub_801BC94(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
switch(temp)
{
case 2:
sub_801B748(0xD);
break;
case 1:
case 3:
sub_801B748(0x6);
break;
}
}
}
void sub_801BCCC(void)
{
switch(sub_801A6E8(1))
{
case 0:
case 1:
break;
case 3:
gUnknown_203B234->unk24 = sub_801A8AC();
gUnknown_203B234->unk20 = gTeamInventory_203B460->teamItems[gUnknown_203B234->unk24];
sub_8090E14(gUnknown_202DEA8, &gUnknown_203B234->unk20, &gUnknown_203B234->unk14);
sub_801B748(0xA);
break;
case 4:
gUnknown_203B234->unk24 = sub_801A8AC();
gUnknown_203B234->unk20 = gTeamInventory_203B460->teamItems[gUnknown_203B234->unk24];
sub_8090E14(gUnknown_202DEA8, &gUnknown_203B234->unk20, &gUnknown_203B234->unk14);
sub_8099690(0);
sub_801B748(0xB);
break;
case 2:
sub_801A928();
sub_801B748(6);
break;
}
}
void sub_801BD80(void)
{
s32 menuAction;
menuAction = 0;
sub_801A6E8(0);
if (!sub_8012FD8(&gUnknown_203B234->unk28)) {
sub_8013114(&gUnknown_203B234->unk28,&menuAction);
if (menuAction != 1) gUnknown_203B234->menuAction = menuAction;
}
switch(menuAction)
{
case 6:
MoveToStorage(&gUnknown_203B234->unk20);
ShiftItemsDownFrom(gUnknown_203B234->unk24);
AddItemToInventory(&gUnknown_203B234->unk10);
FillInventoryGaps();
PlaySound(0xcb);
sub_8099690(0);
sub_801A928();
sub_801B748(0xE);
break;
case 7:
sub_801B748(0xC);
break;
case 8:
sub_8099690(0);
sub_801B748(0xB);
break;
case 1:
sub_801B748(0x9);
break;
}
}
void sub_801BE30(void)
{
s32 menuAction;
menuAction = 0;
sub_801A6E8(0);
sub_8012FD8(&gUnknown_203B234->unk28);
if (!sub_8012FD8(&gUnknown_203B234->unk78)) {
sub_8013114(&gUnknown_203B234->unk78,&menuAction);
}
switch(menuAction)
{
case 1:
case 3:
sub_801B748(9);
break;
case 2:
ShiftItemsDownFrom(gUnknown_203B234->unk24);
AddItemToInventory(&gUnknown_203B234->unk10);
FillInventoryGaps();
PlaySound(0xcb);
sub_801A928();
sub_801B748(0xf);
break;
}
}
void sub_801BEAC(void)
{
switch(sub_801B410())
{
case 2:
case 3:
sub_801B450();
sub_801B748(9);
case 0:
case 1:
break;
}
}
void sub_801BEC8(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
sub_801B748(gUnknown_203B234->fallbackState);
}
}

View File

@ -11,27 +11,6 @@
#include "subStruct_203B240.h"
#include "menu_input.h"
struct unkStruct_203B234
{
// size: 0x154
u32 unk0;
u32 state;
u32 fallbackState;
u8 unkC;
struct Item unk10;
struct unkStruct_8090F58 unk14;
struct Item unk20;
u32 unk24;
struct MenuStruct unk28;
struct MenuStruct unk78;
u32 menuAction;
struct MenuItem unkCC[5];
struct UnkTextStruct2 unkF4[4];
};
extern struct unkStruct_203B234 *gUnknown_203B234;
struct unkStruct_203B238
{
// size: 0x124
@ -115,7 +94,7 @@ struct unkStruct_203B244
struct unk_203B250
{
struct PokemonStruct *unk0;
struct PokemonStruct *pokeStruct;
s16 index;
/* 0x6 */ u8 currFriendAreaLocation; // 0 when not in a friend area
u8 unk7;
@ -239,188 +218,12 @@ void sub_801C118();
void sub_801C1A0();
void sub_801C228();
void sub_801B748(u32);
extern s32 sub_80144A4(s32 *);
extern u32 sub_801B410(void);
extern void sub_801B450(void);
extern u32 sub_801A6E8(u32);
extern void sub_801A928(void);
extern void sub_8099690(u32);
extern u32 sub_801A8AC();
extern u8 sub_801CB24();
extern u32 sub_801CFE0(u8);
extern s32 sub_801CFB8(void);
extern void sub_801D220();
extern void sub_801D3A8();
extern u8 *gUnknown_80D4920[];
extern u8 *gUnknown_80D4928[];
void sub_801BC24(void)
{
struct unkStruct_203B234 *puVar1;
u8 *nullText;
u32 menuAction;
puVar1 = gUnknown_203B234;
nullText = NULL;
puVar1->unkCC[0].text = *gUnknown_80D4920;
gUnknown_203B234->unkCC[0].menuAction = 2;
menuAction = 1;
gUnknown_203B234->unkCC[1].text = *gUnknown_80D4928;
gUnknown_203B234->unkCC[1].menuAction = 3;
gUnknown_203B234->unkCC[2].text = nullText;
gUnknown_203B234->unkCC[2].menuAction = menuAction;
}
void sub_801BC64(void)
{
s32 temp;
if(sub_80144A4(&temp)== 0)
{
switch(temp)
{
case 4:
sub_801B748(0x8);
break;
case 5:
sub_801B748(0x7);
break;
}
}
}
void sub_801BC94(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
switch(temp)
{
case 2:
sub_801B748(0xD);
break;
case 1:
case 3:
sub_801B748(0x6);
break;
}
}
}
void sub_801BCCC(void)
{
switch(sub_801A6E8(1))
{
case 0:
case 1:
break;
case 3:
gUnknown_203B234->unk24 = sub_801A8AC();
gUnknown_203B234->unk20 = gTeamInventory_203B460->teamItems[gUnknown_203B234->unk24];
sub_8090E14(gUnknown_202DEA8, &gUnknown_203B234->unk20, &gUnknown_203B234->unk14);
sub_801B748(0xA);
break;
case 4:
gUnknown_203B234->unk24 = sub_801A8AC();
gUnknown_203B234->unk20 = gTeamInventory_203B460->teamItems[gUnknown_203B234->unk24];
sub_8090E14(gUnknown_202DEA8, &gUnknown_203B234->unk20, &gUnknown_203B234->unk14);
sub_8099690(0);
sub_801B748(0xB);
break;
case 2:
sub_801A928();
sub_801B748(6);
break;
}
}
void sub_801BD80(void)
{
s32 menuAction;
menuAction = 0;
sub_801A6E8(0);
if (sub_8012FD8(&gUnknown_203B234->unk28) == '\0') {
sub_8013114(&gUnknown_203B234->unk28,&menuAction);
if (menuAction != 1) gUnknown_203B234->menuAction = menuAction;
}
switch(menuAction)
{
case 6:
MoveToStorage(&gUnknown_203B234->unk20);
ShiftItemsDownFrom(gUnknown_203B234->unk24);
AddItemToInventory(&gUnknown_203B234->unk10);
FillInventoryGaps();
PlaySound(0xcb);
sub_8099690(0);
sub_801A928();
sub_801B748(0xE);
break;
case 7:
sub_801B748(0xC);
break;
case 8:
sub_8099690(0);
sub_801B748(0xB);
break;
case 1:
sub_801B748(0x9);
break;
}
}
void sub_801BE30(void)
{
s32 menuAction;
menuAction = 0;
sub_801A6E8(0);
sub_8012FD8(&gUnknown_203B234->unk28);
if (sub_8012FD8(&gUnknown_203B234->unk78) == '\0') {
sub_8013114(&gUnknown_203B234->unk78,&menuAction);
}
switch(menuAction)
{
case 1:
case 3:
sub_801B748(9);
break;
case 2:
ShiftItemsDownFrom(gUnknown_203B234->unk24);
AddItemToInventory(&gUnknown_203B234->unk10);
FillInventoryGaps();
PlaySound(0xcb);
sub_801A928();
sub_801B748(0xf);
break;
}
}
void sub_801BEAC(void)
{
switch(sub_801B410())
{
case 2:
case 3:
sub_801B450();
sub_801B748(9);
case 0:
case 1:
break;
}
}
void sub_801BEC8(void)
{
s32 temp;
if(sub_80144A4(&temp) == 0)
{
sub_801B748(gUnknown_203B234->fallbackState);
}
}
bool8 sub_801BEEC(s16 species)
{
@ -1307,42 +1110,42 @@ struct unkStruct_203B244 *sub_801D008(void)
bool8 sub_801D014(struct PokemonStruct *param_1)
{
s32 index;
struct PokemonStruct *pokemon;
struct unk_203B250 *preload;
ResetUnusedInputStruct();
sub_800641C(0,1,1);
gUnknown_203B250 = MemoryAlloc(sizeof(struct unk_203B250), 8);
gUnknown_203B250->menuAction = gUnknown_203B254;
gUnknown_203B250->unk0 = param_1;
if (gUnknown_203B250->unk0 != NULL) {
for(index = 0; index < NUM_MONSTERS; index++)
{
preload = gUnknown_203B250;
pokemon = &gRecruitedPokemonRef->pokemon[(s16)index]; // cast is needed here
if(preload->unk0 == pokemon)
s32 index;
struct PokemonStruct *pokemon;
struct unk_203B250 *preload;
ResetUnusedInputStruct();
sub_800641C(0,1,1);
gUnknown_203B250 = MemoryAlloc(sizeof(struct unk_203B250), 8);
gUnknown_203B250->menuAction = gUnknown_203B254;
gUnknown_203B250->pokeStruct = param_1;
if (gUnknown_203B250->pokeStruct != NULL) {
for(index = 0; index < NUM_MONSTERS; index++)
{
preload->index = index;
break;
preload = gUnknown_203B250;
pokemon = &gRecruitedPokemonRef->pokemon[(s16)index]; // cast is needed here
if(preload->pokeStruct == pokemon)
{
preload->index = index;
break;
}
}
}
}
else {
gUnknown_203B250->index = NUM_MONSTERS;
}
gUnknown_203B250->currFriendAreaLocation = sub_8002658(sub_80A5728());
gUnknown_203B250->unk8 = 0;
gUnknown_203B250->unk9 = 0;
gUnknown_203B250->unkC = GetPlayerPokemonStruct();
gUnknown_203B250->unk7 = 0;
if (gUnknown_203B250->unk0 != 0) {
sub_801D208(5);
}
else {
sub_801D208(0);
}
return 1;
}
else {
gUnknown_203B250->index = NUM_MONSTERS;
}
gUnknown_203B250->currFriendAreaLocation = sub_8002658(sub_80A5728());
gUnknown_203B250->unk8 = 0;
gUnknown_203B250->unk9 = 0;
gUnknown_203B250->unkC = GetPlayerPokemonStruct();
gUnknown_203B250->unk7 = 0;
if (gUnknown_203B250->pokeStruct != NULL) {
sub_801D208(5);
}
else {
sub_801D208(0);
}
return 1;
}
u32 sub_801D0DC(void)
@ -1390,10 +1193,8 @@ u32 sub_801D0DC(void)
u32 sub_801D178(void)
{
struct unk_203B250 *preload;
struct PokemonStruct *pokeStruct;
preload = gUnknown_203B250;
if (gUnknown_203B250->unk9 != 0)
{
return 2;
@ -1406,12 +1207,12 @@ u32 sub_801D178(void)
{
return 1;
}
else if (preload->unkC != GetPlayerPokemonStruct())
else if (gUnknown_203B250->unkC != GetPlayerPokemonStruct())
{
goto _ret4;
}
else if (sub_80A7AE8(7) < 0)
{
{
return 0;
}
else if((pokeStruct = sub_808D3F8(), (pokeStruct->unk0 >> 1 & 1) == 0))

View File

@ -6,6 +6,7 @@
#include "friend_list_menu.h"
#include "item.h"
#include "menu.h"
#include "pokemon.h"
#include "team_inventory.h"
#include "memory.h"
#include "input.h"
@ -63,6 +64,7 @@ extern void sub_8027168();
extern u32 sub_80270A4();
extern u32 sub_802C898(void);
extern void sub_802C8F4(void);
extern void InitializeJobListMenu(u32);
extern const char *sub_8098FB4();
extern void xxx_format_string(const char *, u8 *, u32 **, u32);
@ -78,8 +80,18 @@ extern void sub_8007E20(u32, u32, u32, u32, u32, u8 *, u32);
extern struct FileArchive gTitleMenuFileArchive;
extern const char gTeamRankBadgeFileName;
extern u8 gAvailablePokemonNames[];
extern char gUnknown_80DBF3C[];
extern char gUnknown_80DBF4C[];
extern u8 gMenuItems[];
extern u8 gMenuJobList[];
extern u8 gMenuTeam[];
extern u8 gMenuOthers[];
extern u8 *gUnknown_80D49B4[];
extern u8 gUnknown_80DBF34[];
extern u8 *gUnknown_80D49A8[];
extern u8 *gUnknown_80D4970[];
struct TeamBadgeData
{
@ -89,13 +101,12 @@ struct TeamBadgeData
struct unk_203B250
{
u32 unk0;
u16 unk4;
struct PokemonStruct *pokeStruct;
s16 index;
/* 0x6 */ u8 currFriendAreaLocation; // 0 when not in a friend area
u8 unk7;
u8 unk8;
u8 unk9;
u8 fillA[0xC - 0xA];
struct PokemonStruct *unkC;
u32 state;
u32 menuAction;
@ -107,13 +118,154 @@ struct unk_203B250
struct unk_203B250 *gUnknown_203B250;
extern bool8 HasNoAcceptedJobs(void);
extern bool8 sub_8024108(u32);
extern bool8 sub_8096E2C(void);
extern bool8 sub_80023E4(u32);
extern u32 sub_801DCC4(void);
extern u32 sub_8027074(void);
extern void sub_80227B8(struct PokemonStruct *);
extern bool8 sub_8024458(s16, u32);
extern bool8 sub_801BEEC(s16);
extern void sub_8021774(u8, u32, u32);
void sub_801D894(void);
u32 sub_8025EF4(struct PokemonStruct *);
void sub_801D3A8(void)
{
switch(gUnknown_203B250->state)
{
case 0:
case 1:
if(gUnknown_203B250->pokeStruct != NULL)
{
PrintColoredPokeNameToBuffer(gAvailablePokemonNames, gUnknown_203B250->pokeStruct, 7);
gUnknown_203B250->unk18.unk0 = gAvailablePokemonNames;
sub_8012D60(&gUnknown_203B250->unk18, gUnknown_203B250->unk68, 0, gUnknown_203B250->unkA8, gUnknown_203B250->menuAction, 0);
}
else {
sub_801D894();
sub_8012D60(&gUnknown_203B250->unk18, gUnknown_203B250->unk68, 0, gUnknown_203B250->unkA8, gUnknown_203B250->menuAction, 0);
}
break;
case 3:
sub_80227B8(gUnknown_203B250->pokeStruct);
break;
case 4:
sub_8027074();
break;
case 5:
sub_8025EF4(gUnknown_203B250->pokeStruct);
break;
case 6:
sub_80252F0(0);
break;
case 7:
sub_80252F0(1);
break;
case 8:
sub_8024458(gUnknown_203B250->index, 2);
break;
case 9:
sub_801BEEC(gUnknown_203B250->index);
break;
case 10:
sub_8021774(gUnknown_203B250->currFriendAreaLocation, 1, 2);
break;
case 11:
InitializeJobListMenu(0);
break;
case 12:
sub_801DCC4();
break;
}
}
void sub_801D4C0(void)
{
s32 index;
s32 loopMax;
loopMax = 0;
MemoryFill16(gUnknown_203B250->unkA8,0,sizeof(gUnknown_203B250->unkA8));
if (gUnknown_203B250->currFriendAreaLocation == 0) {
if (sub_8096E2C()) {
gUnknown_203B250->unk68[loopMax].menuAction = 2;
gUnknown_203B250->unk68[loopMax].text = gMenuItems;
if (GetNumberOfFilledInventorySlots() == 0) {
gUnknown_203B250->unkA8[loopMax] = 1;
}
loopMax++;
gUnknown_203B250->unk68[loopMax].text = gMenuTeam;
gUnknown_203B250->unk68[loopMax].menuAction = 4;
loopMax++;
if (sub_80023E4(2)) {
gUnknown_203B250->unk68[loopMax].text = gMenuJobList;
gUnknown_203B250->unk68[loopMax].menuAction = 9;
if (HasNoAcceptedJobs()) {
gUnknown_203B250->unkA8[loopMax] = 1;
}
loopMax++;
}
}
gUnknown_203B250->unk68[loopMax].text = gMenuOthers;
gUnknown_203B250->unk68[loopMax].menuAction = 0xb;
loopMax++;
}
else {
strcpy(gAvailablePokemonNames,gUnknown_80DBF34);
if (sub_8096E2C()) {
gUnknown_203B250->unk68[loopMax].text = *gUnknown_80D49A8;
gUnknown_203B250->unk68[loopMax].menuAction = 5;
if (sub_8024108(4)) {
gUnknown_203B250->unkA8[loopMax] = 1;
}
loopMax++;
gUnknown_203B250->unk68[loopMax].menuAction = 2;
gUnknown_203B250->unk68[loopMax].text = gMenuItems;
if (GetNumberOfFilledInventorySlots() == 0) {
gUnknown_203B250->unkA8[loopMax] = 1;
}
loopMax++;
}
gUnknown_203B250->unk68[loopMax].text = *gUnknown_80D4970;
gUnknown_203B250->unk68[loopMax].menuAction = 8;
loopMax++;
gUnknown_203B250->unk68[loopMax].text = *gUnknown_80D49B4;
gUnknown_203B250->unk68[loopMax].menuAction = 10;
loopMax++;
}
gUnknown_203B250->unk68[loopMax].text = NULL;
gUnknown_203B250->unk68[loopMax].menuAction = 1;
for(index = 0; index < loopMax; index++)
{
if(gUnknown_203B250->unkA8[index] == 0)
{
if(gUnknown_203B250->unk68[index].menuAction == gUnknown_203B250->menuAction)
{
return;
}
}
}
for(index = 0; index < loopMax; index++)
{
if(gUnknown_203B250->unkA8[index] == 0)
{
gUnknown_203B250->menuAction = gUnknown_203B250->unk68[index].menuAction;
break;
}
}
}
void sub_801D680(void)
{
int menuAction;
menuAction = 0;
if ((sub_8012FD8(&gUnknown_203B250->unk18) == '\0') && (sub_8013114(&gUnknown_203B250->unk18,&menuAction), menuAction != 1)) {
if (!(sub_8012FD8(&gUnknown_203B250->unk18)) && (sub_8013114(&gUnknown_203B250->unk18,&menuAction), menuAction != 1)) {
gUnknown_203B250->menuAction = menuAction;
}
switch(menuAction) {