mirror of
https://github.com/pret/pmd-red.git
synced 2026-06-02 22:09:45 -05:00
clean up more wigglytuff
This commit is contained in:
parent
ef9adf4db0
commit
85d6dd724a
|
|
@ -1,292 +0,0 @@
|
|||
#include "asm/constants/gba_constants.inc"
|
||||
#include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_8021410
|
||||
sub_8021410:
|
||||
push {r4,lr}
|
||||
ldr r4, _08021490
|
||||
ldr r0, [r4]
|
||||
adds r0, 0xDC
|
||||
movs r2, 0
|
||||
movs r1, 0x1
|
||||
strb r1, [r0]
|
||||
ldr r0, [r4]
|
||||
adds r0, 0xDD
|
||||
strb r2, [r0]
|
||||
ldr r0, [r4]
|
||||
adds r0, 0xDE
|
||||
movs r1, 0xC
|
||||
strb r1, [r0]
|
||||
ldr r0, [r4]
|
||||
adds r0, 0xDF
|
||||
strb r2, [r0]
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x7C
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x5A
|
||||
movs r1, 0
|
||||
ldrsh r0, [r0, r1]
|
||||
movs r1, 0xC
|
||||
bl sub_80095E4
|
||||
adds r0, 0x2
|
||||
lsls r0, 16
|
||||
ldr r2, [r4]
|
||||
ldr r3, [r2, 0x74]
|
||||
lsls r1, r3, 1
|
||||
adds r1, r3
|
||||
lsls r1, 3
|
||||
adds r1, r2, r1
|
||||
adds r1, 0x8A
|
||||
asrs r3, r0, 16
|
||||
lsrs r0, 16
|
||||
strh r0, [r1]
|
||||
ldr r1, [r2, 0x74]
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 3
|
||||
adds r2, r0
|
||||
adds r3, 0x2
|
||||
adds r2, 0x8C
|
||||
strh r3, [r2]
|
||||
bl ResetUnusedInputStruct
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x7C
|
||||
movs r1, 0x1
|
||||
movs r2, 0x1
|
||||
bl sub_800641C
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08021490: .4byte gUnknown_203B280
|
||||
thumb_func_end sub_8021410
|
||||
|
||||
thumb_func_start sub_8021494
|
||||
sub_8021494:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0xA8
|
||||
ldr r4, _08021568
|
||||
ldr r0, [r4]
|
||||
ldr r0, [r0, 0x74]
|
||||
bl sub_8008C54
|
||||
ldr r0, [r4]
|
||||
ldr r0, [r0, 0x74]
|
||||
bl sub_80073B8
|
||||
ldr r2, _0802156C
|
||||
ldr r0, [r4]
|
||||
ldr r3, [r0, 0x74]
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
movs r0, 0xA
|
||||
movs r1, 0
|
||||
bl xxx_call_draw_string
|
||||
ldr r3, [r4]
|
||||
adds r0, r3, 0
|
||||
adds r0, 0xDE
|
||||
ldrb r0, [r0]
|
||||
lsls r0, 3
|
||||
adds r0, 0x4
|
||||
adds r1, r3, 0
|
||||
adds r1, 0x5E
|
||||
movs r5, 0
|
||||
ldrsh r2, [r1, r5]
|
||||
adds r2, 0x1
|
||||
movs r1, 0x7
|
||||
str r1, [sp]
|
||||
ldr r1, [r3, 0x74]
|
||||
str r1, [sp, 0x4]
|
||||
movs r1, 0
|
||||
movs r3, 0x1
|
||||
bl sub_8012BC4
|
||||
movs r0, 0
|
||||
mov r9, r0
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x5A
|
||||
movs r1, 0
|
||||
ldrsh r0, [r0, r1]
|
||||
cmp r9, r0
|
||||
blt _080214FC
|
||||
b _08021646
|
||||
_080214FC:
|
||||
mov r8, r4
|
||||
add r2, sp, 0x58
|
||||
mov r10, r2
|
||||
_08021502:
|
||||
mov r3, r8
|
||||
ldr r2, [r3]
|
||||
adds r0, r2, 0
|
||||
adds r0, 0x5E
|
||||
movs r5, 0
|
||||
ldrsh r1, [r0, r5]
|
||||
subs r0, 0x2
|
||||
movs r3, 0
|
||||
ldrsh r0, [r0, r3]
|
||||
muls r0, r1
|
||||
add r0, r9
|
||||
adds r0, r2, r0
|
||||
ldrb r5, [r0]
|
||||
adds r7, r5, 0
|
||||
ldr r6, [r2, 0x3C]
|
||||
cmp r6, 0x2
|
||||
bne _0802159C
|
||||
add r0, sp, 0x8
|
||||
adds r1, r5, 0
|
||||
movs r2, 0x1
|
||||
bl sub_8092578
|
||||
adds r0, r5, 0
|
||||
bl GetFriendAreaPrice
|
||||
ldr r1, _08021570
|
||||
ldr r1, [r1]
|
||||
movs r5, 0x98
|
||||
lsls r5, 2
|
||||
adds r1, r5
|
||||
ldr r1, [r1]
|
||||
cmp r0, r1
|
||||
bgt _08021574
|
||||
mov r1, r8
|
||||
ldr r0, [r1]
|
||||
adds r0, 0x40
|
||||
mov r1, r9
|
||||
bl sub_8013800
|
||||
adds r1, r0, 0
|
||||
mov r2, r8
|
||||
ldr r0, [r2]
|
||||
ldr r3, [r0, 0x74]
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
movs r0, 0x8
|
||||
add r2, sp, 0x8
|
||||
bl xxx_call_draw_string
|
||||
b _08021632
|
||||
.align 2, 0
|
||||
_08021568: .4byte gUnknown_203B280
|
||||
_0802156C: .4byte gUnknown_80DC494
|
||||
_08021570: .4byte gTeamInventoryRef
|
||||
_08021574:
|
||||
mov r0, r10
|
||||
ldr r1, _08021598
|
||||
add r2, sp, 0x8
|
||||
bl sprintfStatic
|
||||
mov r3, r8
|
||||
ldr r0, [r3]
|
||||
adds r0, 0x40
|
||||
mov r1, r9
|
||||
bl sub_8013800
|
||||
adds r1, r0, 0
|
||||
mov r5, r8
|
||||
ldr r0, [r5]
|
||||
ldr r3, [r0, 0x74]
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
b _080215FE
|
||||
.align 2, 0
|
||||
_08021598: .4byte gUnknown_80DC4A4
|
||||
_0802159C:
|
||||
cmp r6, 0
|
||||
bne _0802160C
|
||||
ldr r0, _080215D4
|
||||
ldr r0, [r0]
|
||||
adds r0, r5
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x1
|
||||
bne _080215D8
|
||||
adds r0, r2, 0
|
||||
adds r0, 0x40
|
||||
mov r1, r9
|
||||
bl sub_8013800
|
||||
adds r4, r0, 0
|
||||
adds r0, r5, 0
|
||||
bl GetFriendAreaName
|
||||
adds r2, r0, 0
|
||||
mov r1, r8
|
||||
ldr r0, [r1]
|
||||
ldr r3, [r0, 0x74]
|
||||
str r6, [sp]
|
||||
movs r0, 0x8
|
||||
adds r1, r4, 0
|
||||
bl xxx_call_draw_string
|
||||
b _08021632
|
||||
.align 2, 0
|
||||
_080215D4: .4byte gFriendAreas
|
||||
_080215D8:
|
||||
adds r0, r5, 0
|
||||
bl GetFriendAreaName
|
||||
adds r2, r0, 0
|
||||
mov r0, r10
|
||||
ldr r1, _08021608
|
||||
bl sprintfStatic
|
||||
mov r2, r8
|
||||
ldr r0, [r2]
|
||||
adds r0, 0x40
|
||||
mov r1, r9
|
||||
bl sub_8013800
|
||||
adds r1, r0, 0
|
||||
mov r3, r8
|
||||
ldr r0, [r3]
|
||||
ldr r3, [r0, 0x74]
|
||||
str r6, [sp]
|
||||
_080215FE:
|
||||
movs r0, 0x8
|
||||
mov r2, r10
|
||||
bl xxx_call_draw_string
|
||||
b _08021632
|
||||
.align 2, 0
|
||||
_08021608: .4byte gUnknown_80DC4AC
|
||||
_0802160C:
|
||||
adds r0, r2, 0
|
||||
adds r0, 0x40
|
||||
mov r1, r9
|
||||
bl sub_8013800
|
||||
adds r4, r0, 0
|
||||
adds r0, r7, 0
|
||||
bl GetFriendAreaName
|
||||
adds r2, r0, 0
|
||||
mov r5, r8
|
||||
ldr r0, [r5]
|
||||
ldr r3, [r0, 0x74]
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
movs r0, 0x8
|
||||
adds r1, r4, 0
|
||||
bl xxx_call_draw_string
|
||||
_08021632:
|
||||
movs r0, 0x1
|
||||
add r9, r0
|
||||
mov r1, r8
|
||||
ldr r0, [r1]
|
||||
adds r0, 0x5A
|
||||
movs r2, 0
|
||||
ldrsh r0, [r0, r2]
|
||||
cmp r9, r0
|
||||
bge _08021646
|
||||
b _08021502
|
||||
_08021646:
|
||||
ldr r0, _08021660
|
||||
ldr r0, [r0]
|
||||
ldr r0, [r0, 0x74]
|
||||
bl sub_80073E0
|
||||
add sp, 0xA8
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08021660: .4byte gUnknown_203B280
|
||||
thumb_func_end sub_8021494
|
||||
|
||||
.align 2,0
|
||||
|
|
@ -656,54 +656,4 @@ _08090880:
|
|||
bx r1
|
||||
thumb_func_end sub_8090820
|
||||
|
||||
thumb_func_start sub_8090888
|
||||
sub_8090888:
|
||||
push {r4-r7,lr}
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
movs r6, 0
|
||||
b _0809089C
|
||||
_08090892:
|
||||
ldrb r0, [r4]
|
||||
cmp r0, 0xA
|
||||
bne _0809089A
|
||||
adds r6, 0x1
|
||||
_0809089A:
|
||||
adds r4, 0x1
|
||||
_0809089C:
|
||||
ldrb r0, [r4]
|
||||
cmp r0, 0
|
||||
bne _08090892
|
||||
ldrb r7, [r5]
|
||||
b _080908AE
|
||||
_080908A6:
|
||||
movs r0, 0xA
|
||||
strb r0, [r4]
|
||||
adds r4, 0x1
|
||||
adds r6, 0x1
|
||||
_080908AE:
|
||||
adds r0, r6, 0
|
||||
movs r1, 0x3
|
||||
bl __modsi3
|
||||
cmp r0, 0
|
||||
bne _080908A6
|
||||
adds r1, r7, 0
|
||||
lsls r0, r1, 24
|
||||
cmp r0, 0
|
||||
beq _080908CE
|
||||
_080908C2:
|
||||
strb r1, [r4]
|
||||
adds r4, 0x1
|
||||
adds r5, 0x1
|
||||
ldrb r1, [r5]
|
||||
cmp r1, 0
|
||||
bne _080908C2
|
||||
_080908CE:
|
||||
movs r0, 0
|
||||
strb r0, [r4]
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8090888
|
||||
|
||||
.align 2,0
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ void UnlockFriendArea(u8 index);
|
|||
u8 *GetFriendAreaDescription(u8 index);
|
||||
u8 GetFriendAreaUnlockCondition(u8 index);
|
||||
s32 GetFriendAreaPrice(u8 index);
|
||||
void sub_8092578(u8 *buffer, u8 index, bool8 printPrice);
|
||||
const char *GetFriendAreaName(u8 index);
|
||||
void sub_809249C(u8 friendArea, u8 clear);
|
||||
void sub_8092638(u8 friendArea, struct unkStruct_8092638 *param_2, u8 param_3, u8 param_4);
|
||||
|
|
|
|||
|
|
@ -66,5 +66,14 @@ enum WigglytuffStates
|
|||
WIGGLYTUFF_CHECK_LEGENDARY = 0x1C,
|
||||
};
|
||||
|
||||
bool8 sub_80211AC(u32 mode, u32 param_2);
|
||||
bool8 sub_8021774(u8 friendArea, bool8 param_2, s32 param_3);
|
||||
u32 sub_8021274(u8 param_1);
|
||||
u8 sub_802132C(void);
|
||||
void sub_8021354(bool8 param_1);
|
||||
void sub_80213A0(void);
|
||||
void sub_8021494(void);
|
||||
u32 sub_80217EC(void);
|
||||
void sub_8021830(void);
|
||||
|
||||
#endif // GUARD_WIGGLYTUFF_SHOP_H
|
||||
|
|
|
|||
|
|
@ -107,9 +107,6 @@ SECTIONS {
|
|||
asm/code_801EE10.o(.text);
|
||||
src/code_801EE10_mid.o(.text);
|
||||
src/gulpin_shop_1.o(.text);
|
||||
src/code_8021774_pre.o(.text);
|
||||
asm/code_801EE10_mid.o(.text);
|
||||
src/code_8021774.o(.text);
|
||||
src/wigglytuff_shop.o(.text);
|
||||
src/code_8023144_pre.o(.text);
|
||||
asm/code_8023144.o(.text);
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
#include "menu_input.h"
|
||||
#include "code_8021774.h"
|
||||
#include "code_80118A4.h"
|
||||
#include "wigglytuff_shop.h"
|
||||
|
||||
struct unkStruct_203B258
|
||||
{
|
||||
|
|
@ -151,7 +152,7 @@ void sub_801D3A8(void)
|
|||
sub_801BEEC(gUnknown_203B250->index);
|
||||
break;
|
||||
case 10:
|
||||
sub_8021774(gUnknown_203B250->currFriendAreaLocation, 1, 2);
|
||||
sub_8021774(gUnknown_203B250->currFriendAreaLocation, TRUE, 2);
|
||||
break;
|
||||
case 11:
|
||||
InitializeJobListMenu(0);
|
||||
|
|
|
|||
|
|
@ -1,445 +0,0 @@
|
|||
#include "constants/friend_area.h"
|
||||
#include "global.h"
|
||||
#include "input.h"
|
||||
#include "memory.h"
|
||||
#include "text1.h"
|
||||
#include "text2.h"
|
||||
#include "pokemon.h"
|
||||
#include "exclusive_pokemon.h"
|
||||
#include "friend_area.h"
|
||||
#include "code_800D090.h"
|
||||
#include "menu_input.h"
|
||||
#include "code_8021774.h"
|
||||
#include "code_80118A4.h"
|
||||
|
||||
struct unkStruct_203B28C
|
||||
{
|
||||
struct MenuInputStructSub unk0;
|
||||
u8 friendArea;
|
||||
u8 unkD;
|
||||
s16 unkE[0x10];
|
||||
u32 unk30[0x10];
|
||||
s32 unk70;
|
||||
s32 unk74;
|
||||
struct UnkTextStruct2 *unk78;
|
||||
struct UnkTextStruct2 unk7C[4];
|
||||
u8 unkDC[4];
|
||||
};
|
||||
extern struct unkStruct_203B28C *gUnknown_203B28C;
|
||||
|
||||
struct unkStruct_203B280
|
||||
{
|
||||
u8 unk0[NUM_FRIEND_AREAS];
|
||||
u32 unk3C;
|
||||
struct MenuInputStruct unk40;
|
||||
s32 unk74;
|
||||
struct UnkTextStruct2 *unk78;
|
||||
struct UnkTextStruct2 unk7C[4];
|
||||
u8 unkDC[4];
|
||||
};
|
||||
extern struct unkStruct_203B280 *gUnknown_203B280;
|
||||
|
||||
|
||||
|
||||
extern struct UnkTextStruct2 gUnknown_80DC4BC;
|
||||
extern struct UnkTextStruct2 gUnknown_80DC4D8;
|
||||
s16 GetBaseSpeciesNoUnown(s16 index);
|
||||
s32 sub_8021B58(s16 param_1);
|
||||
|
||||
extern u8 gUnknown_80DC518[];
|
||||
extern u8 gUnknown_80DC4F0[];
|
||||
extern u8 *gUnknown_80D49BC[];
|
||||
extern u8 gUnknown_80DC524[];
|
||||
extern void sub_8008C54(u32);
|
||||
extern void sub_8092578(u8 *buffer, u8 index, u8 r2);
|
||||
|
||||
extern void sub_8021878(void);
|
||||
extern void sub_8021894(void);
|
||||
extern void sub_8021A60(void);
|
||||
void sub_8021820(void);
|
||||
u8 sub_80023E4(u32);
|
||||
|
||||
s32 sub_8021664(void)
|
||||
{
|
||||
s32 index;
|
||||
s32 counter;
|
||||
|
||||
counter = 0;
|
||||
switch(gUnknown_203B280->unk3C)
|
||||
{
|
||||
case 0:
|
||||
for(index = BOUNTIFUL_SEA; index < NUM_FRIEND_AREAS; index++)
|
||||
{
|
||||
gUnknown_203B280->unk0[counter] = index;
|
||||
counter++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
for(index = BOUNTIFUL_SEA; index < NUM_FRIEND_AREAS; index++)
|
||||
{
|
||||
if(gFriendAreas[index])
|
||||
{
|
||||
gUnknown_203B280->unk0[counter] = index;
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
for(index = BOUNTIFUL_SEA; index < NUM_FRIEND_AREAS; index++)
|
||||
{
|
||||
if (gFriendAreas[index] == 0) {
|
||||
switch(GetFriendAreaUnlockCondition(index))
|
||||
{
|
||||
case UNLOCK_SHOP_STORY:
|
||||
gUnknown_203B280->unk0[counter] = index;
|
||||
counter++;
|
||||
break;
|
||||
case UNLOCK_SHOP_POST_GAME:
|
||||
if(sub_80023E4(6) != 0) {
|
||||
gUnknown_203B280->unk0[counter] = index;
|
||||
counter++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
return counter;
|
||||
}
|
||||
|
||||
|
||||
u8 sub_8021700(u32 mode)
|
||||
{
|
||||
s32 index;
|
||||
|
||||
switch(mode)
|
||||
{
|
||||
case 0:
|
||||
return FALSE;
|
||||
case 1:
|
||||
for(index = BOUNTIFUL_SEA; index < NUM_FRIEND_AREAS; index++)
|
||||
{
|
||||
if (gFriendAreas[index] != 0) {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
for(index = BOUNTIFUL_SEA; index < NUM_FRIEND_AREAS; index++)
|
||||
{
|
||||
if (gFriendAreas[index] == 0) {
|
||||
switch(GetFriendAreaUnlockCondition(index))
|
||||
{
|
||||
case UNLOCK_SHOP_STORY:
|
||||
return FALSE;
|
||||
case UNLOCK_SHOP_POST_GAME:
|
||||
if(sub_80023E4(6) != 0) {
|
||||
return FALSE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
bool8 sub_8021774(u8 friendArea, u8 param_2, s32 param_3)
|
||||
{
|
||||
gUnknown_203B28C = MemoryAlloc(sizeof(struct unkStruct_203B28C), 8);
|
||||
gUnknown_203B28C->friendArea = friendArea;
|
||||
gUnknown_203B28C->unkD = param_2;
|
||||
sub_801317C(&gUnknown_203B28C->unk0);
|
||||
sub_8021A60();
|
||||
gUnknown_203B28C->unk74 = param_3;
|
||||
gUnknown_203B28C->unk78 = &gUnknown_203B28C->unk7C[param_3];
|
||||
sub_8006518(gUnknown_203B28C->unk7C);
|
||||
gUnknown_203B28C->unk7C[gUnknown_203B28C->unk74] = gUnknown_80DC4D8;
|
||||
sub_8021820();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u32 sub_80217EC(void)
|
||||
{
|
||||
switch(sub_8012A64(&gUnknown_203B28C->unk0, gUnknown_203B28C->unk74))
|
||||
{
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
return 2;
|
||||
case 1:
|
||||
PlayMenuSoundEffect(0);
|
||||
return 3;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8021820(void)
|
||||
{
|
||||
sub_8021878();
|
||||
sub_8021894();
|
||||
}
|
||||
|
||||
void sub_8021830(void)
|
||||
{
|
||||
if(gUnknown_203B28C)
|
||||
{
|
||||
gUnknown_203B28C->unk7C[gUnknown_203B28C->unk74] = gUnknown_80DC4BC;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B28C->unk7C, 1, 1);
|
||||
MemoryFree(gUnknown_203B28C);
|
||||
gUnknown_203B28C = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8021878(void)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B28C->unk7C, 1, 1);
|
||||
}
|
||||
|
||||
void sub_8021894(void)
|
||||
{
|
||||
u8 *string;
|
||||
s32 iVar1;
|
||||
u32 y;
|
||||
u32 x;
|
||||
s32 index;
|
||||
u8 buffer1 [256];
|
||||
u8 buffer2 [100];
|
||||
|
||||
sub_80073B8(gUnknown_203B28C->unk74);
|
||||
sub_8092578(buffer1,gUnknown_203B28C->friendArea,0);
|
||||
xxx_call_draw_string(0x14,0,buffer1,gUnknown_203B28C->unk74,0);
|
||||
string = GetFriendAreaDescription(gUnknown_203B28C->friendArea);
|
||||
xxx_call_draw_string(10,0x14,string,gUnknown_203B28C->unk74,0);
|
||||
if (gUnknown_203B28C->unkD != 0) {
|
||||
xxx_call_draw_string(0x20,0x3c,gUnknown_80DC4F0,gUnknown_203B28C->unk74,0);
|
||||
}
|
||||
else {
|
||||
xxx_call_draw_string(0x20,0x3c,gUnknown_80DC518,gUnknown_203B28C->unk74,0); // Inhabitants
|
||||
}
|
||||
sub_800792C(gUnknown_203B28C->unk74,4,0x40,0x14,4);
|
||||
if (gUnknown_203B28C->unkD != 0) {
|
||||
sub_800792C(gUnknown_203B28C->unk74,0xb8,0x40,0x14,4);
|
||||
}
|
||||
else {
|
||||
sub_800792C(gUnknown_203B28C->unk74,0x5e,0x40,0x6e,4);
|
||||
}
|
||||
sub_800792C(gUnknown_203B28C->unk74,4,0x82,200,4);
|
||||
sub_8007A78(gUnknown_203B28C->unk74,3,0x40,0x43,4);
|
||||
sub_8007A78(gUnknown_203B28C->unk74,0xcc,0x40,0x43,4);
|
||||
for(index = 0; index < gUnknown_203B28C->unk70; index++)
|
||||
{
|
||||
iVar1 = index % 3;
|
||||
x = iVar1 * 0x3f + 7;
|
||||
iVar1 = index / 3;
|
||||
y = iVar1 * 0xc + 0x47;
|
||||
sub_808D930(buffer2, gUnknown_203B28C->unkE[index]);
|
||||
switch(gUnknown_203B28C->unk30[index])
|
||||
{
|
||||
case 0:
|
||||
xxx_call_draw_string(x,y,*gUnknown_80D49BC,gUnknown_203B28C->unk74,0); // ???
|
||||
break;
|
||||
case 1:
|
||||
xxx_call_draw_string(x,y,buffer2,gUnknown_203B28C->unk74,0); // %s
|
||||
break;
|
||||
case 2:
|
||||
sprintfStatic(buffer1,gUnknown_80DC524,buffer2); // {CYAN} %s {END_COLOR}
|
||||
xxx_call_draw_string(x,y,buffer1,gUnknown_203B28C->unk74,0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
sub_80073E0(gUnknown_203B28C->unk74);
|
||||
}
|
||||
|
||||
// https://decomp.me/scratch/P2BiC
|
||||
// 99.40% matching (Seth)
|
||||
#ifndef NONMATCHING
|
||||
NAKED
|
||||
void sub_8021A60(void)
|
||||
{
|
||||
asm_unified(
|
||||
"\tpush {r4-r7,lr}\n"
|
||||
"\tldr r2, _08021B4C\n"
|
||||
"\tldr r1, [r2]\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tstr r0, [r1, 0x70]\n"
|
||||
"\tmovs r6, 0\n"
|
||||
"\tadds r4, r2, 0\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"_08021A70:\n"
|
||||
"\tldr r1, [r4]\n"
|
||||
"\tlsls r2, r6, 1\n"
|
||||
"\tadds r0, r1, 0\n"
|
||||
"\tadds r0, 0xE\n"
|
||||
"\tadds r0, r2\n"
|
||||
"\tstrh r3, [r0]\n"
|
||||
"\tlsls r0, r6, 2\n"
|
||||
"\tadds r1, 0x30\n"
|
||||
"\tadds r1, r0\n"
|
||||
"\tstr r3, [r1]\n"
|
||||
"\tadds r6, 0x1\n"
|
||||
"\tcmp r6, 0xF\n"
|
||||
"\tble _08021A70\n"
|
||||
"\tmovs r6, 0\n"
|
||||
"\tldr r7, _08021B4C\n"
|
||||
"_08021A8E:\n"
|
||||
"\tlsls r0, r6, 16\n"
|
||||
"\tasrs r5, r0, 16\n"
|
||||
"\tldr r4, [r7]\n"
|
||||
"\tadds r0, r5, 0\n"
|
||||
"\tbl GetFriendArea\n"
|
||||
"\tldrb r1, [r4, 0xC]\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r0, 24\n"
|
||||
"\tcmp r1, r0\n"
|
||||
"\tbne _08021AC4\n"
|
||||
"\tadds r0, r5, 0\n"
|
||||
"\tbl GetBaseSpeciesNoUnown\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tasrs r0, 16\n"
|
||||
"\tcmp r5, r0\n"
|
||||
"\tbne _08021AC4\n"
|
||||
"\tldr r3, [r7]\n"
|
||||
"\tldr r1, [r3, 0x70]\n"
|
||||
"\tlsls r2, r1, 1\n"
|
||||
"\tadds r0, r3, 0\n"
|
||||
"\tadds r0, 0xE\n"
|
||||
"\tadds r0, r2\n"
|
||||
"\tstrh r5, [r0]\n"
|
||||
"\tadds r1, 0x1\n"
|
||||
"\tstr r1, [r3, 0x70]\n"
|
||||
"_08021AC4:\n"
|
||||
"\tadds r6, 0x1\n"
|
||||
"\tldr r0, _08021B50\n"
|
||||
"\tcmp r6, r0\n"
|
||||
"\tble _08021A8E\n"
|
||||
"\tmovs r6, 0\n"
|
||||
"_08021ACE:\n"
|
||||
"\tlsls r0, r6, 16\n"
|
||||
"\tasrs r4, r0, 16\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tbl sub_8098134\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _08021AFC\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tbl sub_8021B58\n"
|
||||
"\tadds r2, r0, 0\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tnegs r0, r0\n"
|
||||
"\tcmp r2, r0\n"
|
||||
"\tbeq _08021AFC\n"
|
||||
"\tldr r0, _08021B4C\n"
|
||||
"\tldr r1, [r0]\n"
|
||||
"\tlsls r0, r2, 2\n"
|
||||
"\tadds r1, 0x30\n"
|
||||
"\tadds r1, r0\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tstr r0, [r1]\n"
|
||||
"_08021AFC:\n"
|
||||
"\tadds r6, 0x1\n"
|
||||
"\tldr r0, _08021B50\n"
|
||||
"\tcmp r6, r0\n"
|
||||
"\tble _08021ACE\n"
|
||||
"\tmovs r6, 0\n"
|
||||
"\tldr r4, _08021B54\n"
|
||||
"_08021B08:\n"
|
||||
"\tmovs r0, 0x58\n"
|
||||
"\tadds r1, r6, 0\n"
|
||||
"\tmuls r1, r0\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r2, r0, r1\n"
|
||||
"\tldrb r1, [r2]\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tands r0, r1\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _08021B3C\n"
|
||||
"\tmovs r1, 0x8\n"
|
||||
"\tldrsh r0, [r2, r1]\n"
|
||||
"\tbl sub_8021B58\n"
|
||||
"\tadds r2, r0, 0\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tnegs r0, r0\n"
|
||||
"\tcmp r2, r0\n"
|
||||
"\tbeq _08021B3C\n"
|
||||
"\tldr r0, _08021B4C\n"
|
||||
"\tldr r1, [r0]\n"
|
||||
"\tlsls r0, r2, 2\n"
|
||||
"\tadds r1, 0x30\n"
|
||||
"\tadds r1, r0\n"
|
||||
"\tmovs r0, 0x2\n"
|
||||
"\tstr r0, [r1]\n"
|
||||
"_08021B3C:\n"
|
||||
"\tadds r6, 0x1\n"
|
||||
"\tmovs r0, 0xCE\n"
|
||||
"\tlsls r0, 1\n"
|
||||
"\tcmp r6, r0\n"
|
||||
"\tble _08021B08\n"
|
||||
"\tpop {r4-r7}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_08021B4C: .4byte gUnknown_203B28C\n"
|
||||
"_08021B50: .4byte 0x000001a7\n"
|
||||
"_08021B54: .4byte gRecruitedPokemonRef");
|
||||
|
||||
}
|
||||
#else
|
||||
void sub_8021A60(void)
|
||||
{
|
||||
s32 sVar4;
|
||||
s32 iVar6;
|
||||
s32 index;
|
||||
struct PokemonStruct *pokeStruct;
|
||||
|
||||
gUnknown_203B28C->unk70 = 0;
|
||||
for(index = 0; index < 0x10; index++)
|
||||
{
|
||||
gUnknown_203B28C->unkE[index] = 0;
|
||||
gUnknown_203B28C->unk30[index] = 0;
|
||||
}
|
||||
for(index = 0; index < 0x1A8; index++)
|
||||
{
|
||||
if ((gUnknown_203B28C->friendArea == GetFriendArea((s16)index)) &&
|
||||
((s16)index == GetBaseSpeciesNoUnown(index))) {
|
||||
iVar6 = gUnknown_203B28C->unk70;
|
||||
gUnknown_203B28C->unkE[iVar6] = index;
|
||||
gUnknown_203B28C->unk70 = iVar6 + 1;
|
||||
}
|
||||
}
|
||||
for(index = 0; index < 0x1A8; index++)
|
||||
{
|
||||
if ((sub_8098134(index) != '\0') && (sVar4 = sub_8021B58(index), sVar4 != -1)) {
|
||||
gUnknown_203B28C->unk30[sVar4] = 1;
|
||||
}
|
||||
}
|
||||
for(index = 0; index < 0x19d; index++)
|
||||
{
|
||||
pokeStruct = &gRecruitedPokemonRef->pokemon[index];
|
||||
if (((*(u8 *)&pokeStruct->unk0 & 1) != 0) &&
|
||||
(sVar4 = sub_8021B58(pokeStruct->speciesNum), sVar4 != -1)) {
|
||||
gUnknown_203B28C->unk30[sVar4] = 2;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
s32 sub_8021B58(s16 species)
|
||||
{
|
||||
s32 baseSpecies;
|
||||
int index;
|
||||
|
||||
baseSpecies = GetBaseSpeciesNoUnown(species);
|
||||
for(index = 0; index < gUnknown_203B28C->unk70; index++)
|
||||
{
|
||||
if (baseSpecies == gUnknown_203B28C->unkE[index]) return index;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
@ -1,136 +0,0 @@
|
|||
#include "global.h"
|
||||
#include "code_80118A4.h"
|
||||
#include "code_801EE10_mid.h"
|
||||
#include "code_8021774_pre.h"
|
||||
#include "constants/friend_area.h"
|
||||
#include "constants/input.h"
|
||||
#include "friend_area.h"
|
||||
#include "input.h"
|
||||
#include "memory.h"
|
||||
#include "text1.h"
|
||||
#include "text2.h"
|
||||
#include "item.h"
|
||||
#include "team_inventory.h"
|
||||
#include "menu_input.h"
|
||||
|
||||
// size: 0xE0
|
||||
struct unkStruct_203B280
|
||||
{
|
||||
u8 unk0[NUM_FRIEND_AREAS];
|
||||
u32 unk3C;
|
||||
struct MenuInputStruct unk40;
|
||||
s32 unk74;
|
||||
struct UnkTextStruct2 *unk78;
|
||||
struct UnkTextStruct2 unk7C[4];
|
||||
u8 unkDC[4];
|
||||
};
|
||||
|
||||
extern struct unkStruct_203B280 *gUnknown_203B280;
|
||||
extern u32 gUnknown_203B284;
|
||||
extern u16 gUnknown_203B288;
|
||||
extern u16 gUnknown_203B28A;
|
||||
|
||||
extern struct UnkTextStruct2 gUnknown_80DC47C;
|
||||
extern struct UnkTextStruct2 gUnknown_80DC464;
|
||||
|
||||
u8 sub_8021700(u32 mode);
|
||||
s32 sub_8021664(void);
|
||||
extern void sub_8021410(void);
|
||||
|
||||
bool8 sub_80211AC(u32 param_1, u32 param_2)
|
||||
{
|
||||
if(sub_8021700(param_1))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
else {
|
||||
gUnknown_203B280 = MemoryAlloc(sizeof(struct unkStruct_203B280), 8);
|
||||
gUnknown_203B280->unk3C = param_1;
|
||||
gUnknown_203B280->unk74 = param_2;
|
||||
gUnknown_203B280->unk78 = &gUnknown_203B280->unk7C[gUnknown_203B280->unk74];
|
||||
sub_8006518(gUnknown_203B280->unk7C);
|
||||
gUnknown_203B280->unk7C[gUnknown_203B280->unk74] = gUnknown_80DC47C;
|
||||
gUnknown_203B280->unk78->unk14 = gUnknown_203B280->unkDC;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B280->unk7C, 1, 1);
|
||||
sub_8013818(&gUnknown_203B280->unk40, sub_8021664(), 10, param_2);
|
||||
if(gUnknown_203B284 == gUnknown_203B280->unk3C)
|
||||
{
|
||||
gUnknown_203B280->unk40.menuIndex = gUnknown_203B288;
|
||||
gUnknown_203B280->unk40.unk1E = gUnknown_203B28A;
|
||||
sub_8013984(&gUnknown_203B280->unk40);
|
||||
}
|
||||
sub_8021410();
|
||||
sub_8021494();
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_8021274(bool8 param_1)
|
||||
{
|
||||
if (param_1 == 0) {
|
||||
sub_8013660(&gUnknown_203B280->unk40);
|
||||
return 0;
|
||||
}
|
||||
switch(GetKeyPress(&gUnknown_203B280->unk40))
|
||||
{
|
||||
case INPUT_B_BUTTON:
|
||||
PlayMenuSoundEffect(1);
|
||||
return 2;
|
||||
case INPUT_A_BUTTON:
|
||||
if ((gUnknown_203B280->unk3C == 2) && (GetFriendAreaPrice(sub_802132C()) > gTeamInventoryRef->teamMoney))
|
||||
{
|
||||
PlayMenuSoundEffect(2);
|
||||
}
|
||||
else
|
||||
{
|
||||
PlayMenuSoundEffect(0);
|
||||
}
|
||||
return 3;
|
||||
case INPUT_START_BUTTON:
|
||||
PlayMenuSoundEffect(4);
|
||||
return 4;
|
||||
default:
|
||||
if (sub_80138B8(&gUnknown_203B280->unk40, 1) != 0) {
|
||||
sub_8021410();
|
||||
sub_8021494();
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
u8 sub_802132C(void)
|
||||
{
|
||||
return gUnknown_203B280->unk0[gUnknown_203B280->unk40.unk1E * gUnknown_203B280->unk40.unk1C + gUnknown_203B280->unk40.menuIndex];
|
||||
}
|
||||
|
||||
void sub_8021354(bool8 param_1)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B280->unk7C,0,0);
|
||||
gUnknown_203B280->unk40.unk22 = sub_8021664();
|
||||
sub_8013984(&gUnknown_203B280->unk40);
|
||||
sub_8021410();
|
||||
sub_8021494();
|
||||
if (param_1) {
|
||||
AddMenuCursorSprite(&gUnknown_203B280->unk40);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80213A0(void)
|
||||
{
|
||||
if(gUnknown_203B280)
|
||||
{
|
||||
gUnknown_203B284 = gUnknown_203B280->unk3C;
|
||||
gUnknown_203B288 = gUnknown_203B280->unk40.menuIndex;
|
||||
gUnknown_203B28A = gUnknown_203B280->unk40.unk1E;
|
||||
gUnknown_203B280->unk7C[gUnknown_203B280->unk74] = gUnknown_80DC464;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B280->unk7C, 1, 1);
|
||||
MemoryFree(gUnknown_203B280);
|
||||
gUnknown_203B280 = NULL;
|
||||
}
|
||||
}
|
||||
|
|
@ -390,7 +390,6 @@ extern u8 JirachiFriendAreaSearch(void);
|
|||
|
||||
extern u8 sub_80860A8(u32);
|
||||
extern void sub_8049ED4();
|
||||
extern void sub_8092578(u8 *buffer, u8 index, u8 r2);
|
||||
extern void sub_8052D44(s16 *, struct Entity *, struct Entity *);
|
||||
extern void SetMessageArgument(u8 *, struct Entity *, u32);
|
||||
extern struct Entity *GetLeader();
|
||||
|
|
@ -3736,7 +3735,7 @@ void JirachiWish(void)
|
|||
PlaySoundEffect(0xd4);
|
||||
LeaderEntity = GetLeader();
|
||||
SetMessageArgument(gAvailablePokemonNames,LeaderEntity,0);
|
||||
sub_8092578(gUnknown_202DE58,friendArea,0);
|
||||
sub_8092578(gUnknown_202DE58,friendArea,FALSE);
|
||||
// Obtained the friend area!
|
||||
DisplayDungeonDialogue(&gUnknown_8105B68);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,6 +12,38 @@ extern u8 *gUnknown_8108084[];
|
|||
|
||||
s32 sub_8091E94(s32 a1, s32 a2, s32 a3); // items.c
|
||||
|
||||
|
||||
void sub_8090888(u8 *param_1, u8 *param_2)
|
||||
{
|
||||
s32 iVar3;
|
||||
|
||||
iVar3 = 0;
|
||||
|
||||
if(*param_1 != 0)
|
||||
{
|
||||
do {
|
||||
if (*param_1 == 0xA) {
|
||||
iVar3++;
|
||||
}
|
||||
param_1++;
|
||||
} while (*param_1 != 0);
|
||||
}
|
||||
|
||||
while (iVar3 % 3) {
|
||||
*param_1 = 0xA;
|
||||
param_1++;
|
||||
iVar3++;
|
||||
}
|
||||
|
||||
while (*param_2 != 0) {
|
||||
*param_1 = *param_2;
|
||||
param_1++;
|
||||
param_2++;
|
||||
}
|
||||
|
||||
*param_1 = 0;
|
||||
}
|
||||
|
||||
u32 sub_80908D8(struct DungeonLocation *dungeon)
|
||||
{
|
||||
if ((dungeon->id < DUNGEON_OUT_ON_RESCUE) && (dungeon->floor < gDungeonFloorCount[dungeon->id])) {
|
||||
|
|
|
|||
|
|
@ -515,11 +515,11 @@ void sub_8092558(u8 *buffer, u8 index)
|
|||
sprintfStatic(buffer, &gUnknown_81098A4, gFriendAreaNames[index]);
|
||||
}
|
||||
|
||||
void sub_8092578(u8 *buffer, u8 index, u8 r2)
|
||||
void sub_8092578(u8 *buffer, u8 index, bool8 printPrice)
|
||||
{
|
||||
// I think this is when we buy the friend area from wigglytuff
|
||||
u8 priceBuffer[0x14];
|
||||
if(r2)
|
||||
if(printPrice)
|
||||
{
|
||||
sub_8090FEC(gFriendAreaSettings[index].price, priceBuffer, 1);
|
||||
sprintfStatic(buffer, &gUnknown_81098AC, gFriendAreaNames[index], 96, priceBuffer);
|
||||
|
|
@ -574,7 +574,7 @@ void sub_8092638(u8 friendArea, struct unkStruct_8092638 *param_2, u8 param_3, u
|
|||
param_2->unk8 = iVar4;
|
||||
|
||||
param_2->hasFriendArea = gFriendAreas[counter];
|
||||
if (param_2->hasFriendArea != 0) {
|
||||
if (param_2->hasFriendArea) {
|
||||
param_2->unk2 = 0;
|
||||
param_2->numPokemon = gFriendAreaSettings[counter].num_pokemon;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,12 @@
|
|||
#include "global.h"
|
||||
#include "constants/friend_area.h"
|
||||
#include "pokemon.h"
|
||||
#include "constants/input.h"
|
||||
#include "file_system.h"
|
||||
#include "menu.h"
|
||||
#include "pokemon.h"
|
||||
#include "pokemon_3.h"
|
||||
#include "input.h"
|
||||
#include "team_inventory.h"
|
||||
#include "text1.h"
|
||||
#include "text2.h"
|
||||
|
|
@ -10,17 +16,44 @@
|
|||
#include "wigglytuff_shop.h"
|
||||
#include "felicity_bank.h"
|
||||
#include "code_80130A8.h"
|
||||
#include "code_8021774_pre.h"
|
||||
#include "code_801EE10_mid.h"
|
||||
#include "code_8021774.h"
|
||||
#include "code_80118A4.h"
|
||||
#include "code_800D090.h"
|
||||
#include "event_flag.h"
|
||||
|
||||
extern struct UnkTextStruct2 gUnknown_80DC534;
|
||||
extern struct UnkTextStruct2 gUnknown_80DC564;
|
||||
extern struct UnkTextStruct2 gUnknown_80DC54C;
|
||||
extern struct UnkTextStruct2 gUnknown_80DC534;
|
||||
struct unkStruct_203B280
|
||||
{
|
||||
/* 0x0 */ u8 friendAreas[NUM_FRIEND_AREAS];
|
||||
/* 0x3C */ u32 mode;
|
||||
struct MenuInputStruct unk40;
|
||||
s32 unk74;
|
||||
struct UnkTextStruct2 *unk78;
|
||||
struct UnkTextStruct2 unk7C[4];
|
||||
u8 unkDC[4];
|
||||
};
|
||||
EWRAM_DATA_2 struct unkStruct_203B280 *gUnknown_203B280 = {0};
|
||||
EWRAM_DATA_2 u32 gUnknown_203B284 = {0};
|
||||
EWRAM_DATA_2 u16 gUnknown_203B288 = {0};
|
||||
EWRAM_DATA_2 u16 gUnknown_203B28A = {0};
|
||||
|
||||
struct unkStruct_203B28C
|
||||
{
|
||||
struct MenuInputStructSub unk0;
|
||||
/* 0xC */ u8 friendArea;
|
||||
bool8 unkD;
|
||||
s16 unkE[0x10];
|
||||
u32 unk30[0x10];
|
||||
/* 0x70 */ s32 numPokemoninFriendArea;
|
||||
s32 unk74;
|
||||
struct UnkTextStruct2 *unk78;
|
||||
struct UnkTextStruct2 unk7C[4];
|
||||
u8 unkDC[4];
|
||||
};
|
||||
EWRAM_DATA_2 struct unkStruct_203B28C *gUnknown_203B28C = {0};
|
||||
|
||||
EWRAM_DATA_2 struct WigglytuffShop *gWigglytuffShop = {0};
|
||||
extern u8 *gFriendAreas;
|
||||
|
||||
extern u8 gUnknown_202E628[];
|
||||
extern u32 gUnknown_202DE30[2];
|
||||
|
|
@ -35,13 +68,31 @@ extern const u8 *gUnknown_80D4928[];
|
|||
extern const u8 *gUnknown_80D4934[];
|
||||
extern const u8 *gUnknown_80D4970[];
|
||||
extern const u8 *gUnknown_80D4978[];
|
||||
extern struct UnkTextStruct2 gUnknown_80DC464;
|
||||
extern struct UnkTextStruct2 gUnknown_80DC47C;
|
||||
extern struct UnkTextStruct2 gUnknown_80DC4BC;
|
||||
extern struct UnkTextStruct2 gUnknown_80DC4D8;
|
||||
extern struct UnkTextStruct2 gUnknown_80DC534;
|
||||
extern struct UnkTextStruct2 gUnknown_80DC54C;
|
||||
extern struct UnkTextStruct2 gUnknown_80DC564;
|
||||
|
||||
extern u8 *gUnknown_80D49BC[];
|
||||
extern u8 gUnknown_80DC4A4[];
|
||||
extern u8 gUnknown_80DC494[];
|
||||
extern u8 gUnknown_80DC4AC[];
|
||||
extern u8 gUnknown_80DC4F0[];
|
||||
extern u8 gUnknown_80DC518[];
|
||||
extern u8 gUnknown_80DC524[];
|
||||
|
||||
u8 sub_8021700(u32);
|
||||
void sub_8092578(u8 *buffer, u8 index, u8 r2);
|
||||
extern void DrawTeamMoneyBox(u32);
|
||||
extern void sub_803AA34();
|
||||
extern u8 sub_803ABC8(void);
|
||||
extern u8 sub_802132C(void);
|
||||
extern void sub_8022380(void);
|
||||
bool8 sub_8023144(s32 param_1, s32 index, struct UnkTextStruct2_sub *sub, u32 param_4);
|
||||
void sub_8023354(u8 param_1);
|
||||
extern bool8 sub_80023E4(u32);
|
||||
extern void CreateWigglytuffConfirmFriendAreaMenu(void);
|
||||
extern u8 sub_8099B94(void);
|
||||
extern void sub_8099AFC(u32, u32, u32);
|
||||
|
|
@ -65,6 +116,609 @@ void SetWigglytuffState(s32);
|
|||
void sub_8021D5C(void);
|
||||
void UpdateWigglytuffDialogue(void);
|
||||
|
||||
extern void sub_8008C54(u32);
|
||||
//extern void sub_80073B8(u32);
|
||||
//extern void sub_80073E0(u32);
|
||||
//void sub_800792C(u32, u32, u32, u32, u32);
|
||||
//void sub_8007A78(u32, u32, u32, u32, u32);
|
||||
|
||||
void sub_8021878(void);
|
||||
void sub_8021894(void);
|
||||
void sub_8021820(void);
|
||||
void sub_8021A60(void);
|
||||
s32 sub_8021664(void);
|
||||
void sub_8021410(void);
|
||||
|
||||
extern void PlayMenuSoundEffect(u32);
|
||||
|
||||
bool8 sub_80211AC(u32 mode, u32 param_2)
|
||||
{
|
||||
if(sub_8021700(mode))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
else {
|
||||
gUnknown_203B280 = MemoryAlloc(sizeof(struct unkStruct_203B280), 8);
|
||||
gUnknown_203B280->mode = mode;
|
||||
gUnknown_203B280->unk74 = param_2;
|
||||
gUnknown_203B280->unk78 = &gUnknown_203B280->unk7C[gUnknown_203B280->unk74];
|
||||
sub_8006518(gUnknown_203B280->unk7C);
|
||||
gUnknown_203B280->unk7C[gUnknown_203B280->unk74] = gUnknown_80DC47C;
|
||||
gUnknown_203B280->unk78->unk14 = gUnknown_203B280->unkDC;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B280->unk7C, 1, 1);
|
||||
sub_8013818(&gUnknown_203B280->unk40, sub_8021664(), 10, param_2);
|
||||
if(gUnknown_203B284 == gUnknown_203B280->mode)
|
||||
{
|
||||
gUnknown_203B280->unk40.menuIndex = gUnknown_203B288;
|
||||
gUnknown_203B280->unk40.unk1E = gUnknown_203B28A;
|
||||
sub_8013984(&gUnknown_203B280->unk40);
|
||||
}
|
||||
sub_8021410();
|
||||
sub_8021494();
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_8021274(u8 param_1)
|
||||
{
|
||||
if (param_1 == 0) {
|
||||
sub_8013660(&gUnknown_203B280->unk40);
|
||||
return 0;
|
||||
}
|
||||
switch(GetKeyPress(&gUnknown_203B280->unk40))
|
||||
{
|
||||
case INPUT_B_BUTTON:
|
||||
PlayMenuSoundEffect(1);
|
||||
return 2;
|
||||
case INPUT_A_BUTTON:
|
||||
if ((gUnknown_203B280->mode == 2) && (GetFriendAreaPrice(sub_802132C()) > gTeamInventoryRef->teamMoney))
|
||||
{
|
||||
PlayMenuSoundEffect(2);
|
||||
}
|
||||
else
|
||||
{
|
||||
PlayMenuSoundEffect(0);
|
||||
}
|
||||
return 3;
|
||||
case INPUT_START_BUTTON:
|
||||
PlayMenuSoundEffect(4);
|
||||
return 4;
|
||||
default:
|
||||
if (sub_80138B8(&gUnknown_203B280->unk40, 1) != 0) {
|
||||
sub_8021410();
|
||||
sub_8021494();
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
u8 sub_802132C(void)
|
||||
{
|
||||
return gUnknown_203B280->friendAreas[gUnknown_203B280->unk40.unk1E * gUnknown_203B280->unk40.unk1C + gUnknown_203B280->unk40.menuIndex];
|
||||
}
|
||||
|
||||
void sub_8021354(bool8 param_1)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B280->unk7C,0,0);
|
||||
gUnknown_203B280->unk40.unk22 = sub_8021664();
|
||||
sub_8013984(&gUnknown_203B280->unk40);
|
||||
sub_8021410();
|
||||
sub_8021494();
|
||||
if (param_1) {
|
||||
AddMenuCursorSprite(&gUnknown_203B280->unk40);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80213A0(void)
|
||||
{
|
||||
if(gUnknown_203B280)
|
||||
{
|
||||
gUnknown_203B284 = gUnknown_203B280->mode;
|
||||
gUnknown_203B288 = gUnknown_203B280->unk40.menuIndex;
|
||||
gUnknown_203B28A = gUnknown_203B280->unk40.unk1E;
|
||||
gUnknown_203B280->unk7C[gUnknown_203B280->unk74] = gUnknown_80DC464;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B280->unk7C, 1, 1);
|
||||
MemoryFree(gUnknown_203B280);
|
||||
gUnknown_203B280 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
NAKED
|
||||
void sub_8021410(void)
|
||||
{
|
||||
asm_unified(
|
||||
"\tpush {r4,lr}\n"
|
||||
"\tldr r4, _08021490\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0xDC\n"
|
||||
"\tmovs r2, 0\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0xDD\n"
|
||||
"\tstrb r2, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0xDE\n"
|
||||
"\tmovs r1, 0xC\n"
|
||||
"\tstrb r1, [r0]\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0xDF\n"
|
||||
"\tstrb r2, [r0]\n"
|
||||
"\tbl ResetUnusedInputStruct\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0x7C\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tmovs r2, 0x1\n"
|
||||
"\tbl sub_800641C\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0x5A\n"
|
||||
"\tmovs r1, 0\n"
|
||||
"\tldrsh r0, [r0, r1]\n"
|
||||
"\tmovs r1, 0xC\n"
|
||||
"\tbl sub_80095E4\n"
|
||||
"\tadds r0, 0x2\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tldr r2, [r4]\n"
|
||||
"\tldr r3, [r2, 0x74]\n"
|
||||
"\tlsls r1, r3, 1\n"
|
||||
"\tadds r1, r3\n"
|
||||
"\tlsls r1, 3\n"
|
||||
"\tadds r1, r2, r1\n"
|
||||
"\tadds r1, 0x8A\n"
|
||||
"\tasrs r3, r0, 16\n"
|
||||
"\tlsrs r0, 16\n"
|
||||
"\tstrh r0, [r1]\n"
|
||||
"\tldr r1, [r2, 0x74]\n"
|
||||
"\tlsls r0, r1, 1\n"
|
||||
"\tadds r0, r1\n"
|
||||
"\tlsls r0, 3\n"
|
||||
"\tadds r2, r0\n"
|
||||
"\tadds r3, 0x2\n"
|
||||
"\tadds r2, 0x8C\n"
|
||||
"\tstrh r3, [r2]\n"
|
||||
"\tbl ResetUnusedInputStruct\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r0, 0x7C\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tmovs r2, 0x1\n"
|
||||
"\tbl sub_800641C\n"
|
||||
"\tpop {r4}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_08021490: .4byte gUnknown_203B280");
|
||||
|
||||
}
|
||||
|
||||
void sub_8021494(void)
|
||||
{
|
||||
u8 friendAreaIndex;
|
||||
s32 index;
|
||||
u8 buffer1 [80];
|
||||
u8 buffer2 [80];
|
||||
|
||||
sub_8008C54(gUnknown_203B280->unk74);
|
||||
sub_80073B8(gUnknown_203B280->unk74);
|
||||
xxx_call_draw_string(10,0,gUnknown_80DC494,gUnknown_203B280->unk74,0); // Friend Areas
|
||||
sub_8012BC4(gUnknown_203B280->unkDC[2] * 8 + 4,0,(gUnknown_203B280->unk40).unk1E + 1,1,7,gUnknown_203B280->unk74);
|
||||
|
||||
for(index = 0; index < (gUnknown_203B280->unk40).unk1A; index++)
|
||||
{
|
||||
friendAreaIndex = gUnknown_203B280->friendAreas[(gUnknown_203B280->unk40).unk1E * (gUnknown_203B280->unk40).unk1C + index];
|
||||
if (gUnknown_203B280->mode == 2) {
|
||||
sub_8092578(buffer1,friendAreaIndex,TRUE);
|
||||
|
||||
if (GetFriendAreaPrice(friendAreaIndex) <= gTeamInventoryRef->teamMoney) {
|
||||
xxx_call_draw_string(8,sub_8013800(&gUnknown_203B280->unk40,index),buffer1,gUnknown_203B280->unk74,0);
|
||||
}
|
||||
else {
|
||||
sprintfStatic(buffer2,gUnknown_80DC4A4,buffer1); // {RED} %s {END}
|
||||
xxx_call_draw_string(8,sub_8013800(&gUnknown_203B280->unk40,index),buffer2,gUnknown_203B280->unk74,0);
|
||||
}
|
||||
}
|
||||
else if (gUnknown_203B280->mode == 0) {
|
||||
if (gFriendAreas[friendAreaIndex] == 1) {
|
||||
xxx_call_draw_string(8,sub_8013800(&gUnknown_203B280->unk40,index),GetFriendAreaName(friendAreaIndex),gUnknown_203B280->unk74,0);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprintfStatic(buffer2,gUnknown_80DC4AC,GetFriendAreaName(friendAreaIndex)); // {GREEN} %s {END}
|
||||
xxx_call_draw_string(8,sub_8013800(&gUnknown_203B280->unk40,index),buffer2,gUnknown_203B280->unk74,0);
|
||||
}
|
||||
}
|
||||
else {
|
||||
xxx_call_draw_string(8,sub_8013800(&gUnknown_203B280->unk40,index),GetFriendAreaName(friendAreaIndex),gUnknown_203B280->unk74,0);
|
||||
}
|
||||
}
|
||||
sub_80073E0(gUnknown_203B280->unk74);
|
||||
}
|
||||
|
||||
s32 sub_8021664(void)
|
||||
{
|
||||
s32 index;
|
||||
s32 counter;
|
||||
|
||||
counter = 0;
|
||||
switch(gUnknown_203B280->mode)
|
||||
{
|
||||
case 0:
|
||||
for(index = BOUNTIFUL_SEA; index < NUM_FRIEND_AREAS; index++)
|
||||
{
|
||||
gUnknown_203B280->friendAreas[counter] = index;
|
||||
counter++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
for(index = BOUNTIFUL_SEA; index < NUM_FRIEND_AREAS; index++)
|
||||
{
|
||||
if(gFriendAreas[index])
|
||||
{
|
||||
gUnknown_203B280->friendAreas[counter] = index;
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
for(index = BOUNTIFUL_SEA; index < NUM_FRIEND_AREAS; index++)
|
||||
{
|
||||
if (gFriendAreas[index] == 0) {
|
||||
switch(GetFriendAreaUnlockCondition(index))
|
||||
{
|
||||
case UNLOCK_SHOP_STORY:
|
||||
gUnknown_203B280->friendAreas[counter] = index;
|
||||
counter++;
|
||||
break;
|
||||
case UNLOCK_SHOP_POST_GAME:
|
||||
if(sub_80023E4(6) != 0) {
|
||||
gUnknown_203B280->friendAreas[counter] = index;
|
||||
counter++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
return counter;
|
||||
}
|
||||
|
||||
|
||||
u8 sub_8021700(u32 mode)
|
||||
{
|
||||
s32 index;
|
||||
|
||||
switch(mode)
|
||||
{
|
||||
case 0:
|
||||
return FALSE;
|
||||
case 1:
|
||||
for(index = BOUNTIFUL_SEA; index < NUM_FRIEND_AREAS; index++)
|
||||
{
|
||||
if (gFriendAreas[index] != 0) {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
for(index = BOUNTIFUL_SEA; index < NUM_FRIEND_AREAS; index++)
|
||||
{
|
||||
if (gFriendAreas[index] == 0) {
|
||||
switch(GetFriendAreaUnlockCondition(index))
|
||||
{
|
||||
case UNLOCK_SHOP_STORY:
|
||||
return FALSE;
|
||||
case UNLOCK_SHOP_POST_GAME:
|
||||
if(sub_80023E4(6) != 0) {
|
||||
return FALSE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_8021774(u8 friendArea, bool8 param_2, s32 param_3)
|
||||
{
|
||||
gUnknown_203B28C = MemoryAlloc(sizeof(struct unkStruct_203B28C), 8);
|
||||
gUnknown_203B28C->friendArea = friendArea;
|
||||
gUnknown_203B28C->unkD = param_2;
|
||||
sub_801317C(&gUnknown_203B28C->unk0);
|
||||
sub_8021A60();
|
||||
gUnknown_203B28C->unk74 = param_3;
|
||||
gUnknown_203B28C->unk78 = &gUnknown_203B28C->unk7C[param_3];
|
||||
sub_8006518(gUnknown_203B28C->unk7C);
|
||||
gUnknown_203B28C->unk7C[gUnknown_203B28C->unk74] = gUnknown_80DC4D8;
|
||||
sub_8021820();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u32 sub_80217EC(void)
|
||||
{
|
||||
switch(sub_8012A64(&gUnknown_203B28C->unk0, gUnknown_203B28C->unk74))
|
||||
{
|
||||
case 2:
|
||||
PlayMenuSoundEffect(1);
|
||||
return 2;
|
||||
case 1:
|
||||
PlayMenuSoundEffect(0);
|
||||
return 3;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8021820(void)
|
||||
{
|
||||
sub_8021878();
|
||||
sub_8021894();
|
||||
}
|
||||
|
||||
void sub_8021830(void)
|
||||
{
|
||||
if(gUnknown_203B28C)
|
||||
{
|
||||
gUnknown_203B28C->unk7C[gUnknown_203B28C->unk74] = gUnknown_80DC4BC;
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B28C->unk7C, 1, 1);
|
||||
MemoryFree(gUnknown_203B28C);
|
||||
gUnknown_203B28C = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8021878(void)
|
||||
{
|
||||
ResetUnusedInputStruct();
|
||||
sub_800641C(gUnknown_203B28C->unk7C, 1, 1);
|
||||
}
|
||||
|
||||
void sub_8021894(void)
|
||||
{
|
||||
u8 *string;
|
||||
u32 y;
|
||||
u32 x;
|
||||
s32 index;
|
||||
u8 buffer1 [256];
|
||||
u8 buffer2 [100];
|
||||
|
||||
sub_80073B8(gUnknown_203B28C->unk74);
|
||||
sub_8092578(buffer1,gUnknown_203B28C->friendArea,FALSE);
|
||||
xxx_call_draw_string(0x14,0,buffer1,gUnknown_203B28C->unk74,0);
|
||||
string = GetFriendAreaDescription(gUnknown_203B28C->friendArea);
|
||||
xxx_call_draw_string(10,0x14,string,gUnknown_203B28C->unk74,0);
|
||||
if (gUnknown_203B28C->unkD != 0) {
|
||||
xxx_call_draw_string(0x20,0x3c,gUnknown_80DC4F0,gUnknown_203B28C->unk74,0);
|
||||
}
|
||||
else {
|
||||
xxx_call_draw_string(0x20,0x3c,gUnknown_80DC518,gUnknown_203B28C->unk74,0); // Inhabitants
|
||||
}
|
||||
sub_800792C(gUnknown_203B28C->unk74,4,0x40,0x14,4);
|
||||
if (gUnknown_203B28C->unkD != 0) {
|
||||
sub_800792C(gUnknown_203B28C->unk74,0xb8,0x40,0x14,4);
|
||||
}
|
||||
else {
|
||||
sub_800792C(gUnknown_203B28C->unk74,0x5e,0x40,0x6e,4);
|
||||
}
|
||||
sub_800792C(gUnknown_203B28C->unk74,4,0x82,200,4);
|
||||
sub_8007A78(gUnknown_203B28C->unk74,3,0x40,0x43,4);
|
||||
sub_8007A78(gUnknown_203B28C->unk74,0xcc,0x40,0x43,4);
|
||||
for(index = 0; index < gUnknown_203B28C->numPokemoninFriendArea; index++)
|
||||
{
|
||||
x = (index % 3) * 63 + 7;
|
||||
y = (index / 3) * 12 + 0x47;
|
||||
sub_808D930(buffer2, gUnknown_203B28C->unkE[index]);
|
||||
switch(gUnknown_203B28C->unk30[index])
|
||||
{
|
||||
case 0: // Not recruited/seen
|
||||
xxx_call_draw_string(x,y,*gUnknown_80D49BC,gUnknown_203B28C->unk74,0); // ???
|
||||
break;
|
||||
case 1: // Seen but not recruited
|
||||
xxx_call_draw_string(x,y,buffer2,gUnknown_203B28C->unk74,0); // %s
|
||||
break;
|
||||
case 2:
|
||||
sprintfStatic(buffer1,gUnknown_80DC524,buffer2); // {CYAN} %s {END_COLOR}
|
||||
xxx_call_draw_string(x,y,buffer1,gUnknown_203B28C->unk74,0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
sub_80073E0(gUnknown_203B28C->unk74);
|
||||
}
|
||||
|
||||
// https://decomp.me/scratch/P2BiC
|
||||
// 99.40% matching (Seth)
|
||||
#ifndef NONMATCHING
|
||||
NAKED
|
||||
void sub_8021A60(void)
|
||||
{
|
||||
asm_unified(
|
||||
"\tpush {r4-r7,lr}\n"
|
||||
"\tldr r2, _08021B4C\n"
|
||||
"\tldr r1, [r2]\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tstr r0, [r1, 0x70]\n"
|
||||
"\tmovs r6, 0\n"
|
||||
"\tadds r4, r2, 0\n"
|
||||
"\tmovs r3, 0\n"
|
||||
"_08021A70:\n"
|
||||
"\tldr r1, [r4]\n"
|
||||
"\tlsls r2, r6, 1\n"
|
||||
"\tadds r0, r1, 0\n"
|
||||
"\tadds r0, 0xE\n"
|
||||
"\tadds r0, r2\n"
|
||||
"\tstrh r3, [r0]\n"
|
||||
"\tlsls r0, r6, 2\n"
|
||||
"\tadds r1, 0x30\n"
|
||||
"\tadds r1, r0\n"
|
||||
"\tstr r3, [r1]\n"
|
||||
"\tadds r6, 0x1\n"
|
||||
"\tcmp r6, 0xF\n"
|
||||
"\tble _08021A70\n"
|
||||
"\tmovs r6, 0\n"
|
||||
"\tldr r7, _08021B4C\n"
|
||||
"_08021A8E:\n"
|
||||
"\tlsls r0, r6, 16\n"
|
||||
"\tasrs r5, r0, 16\n"
|
||||
"\tldr r4, [r7]\n"
|
||||
"\tadds r0, r5, 0\n"
|
||||
"\tbl GetFriendArea\n"
|
||||
"\tldrb r1, [r4, 0xC]\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r0, 24\n"
|
||||
"\tcmp r1, r0\n"
|
||||
"\tbne _08021AC4\n"
|
||||
"\tadds r0, r5, 0\n"
|
||||
"\tbl GetBaseSpeciesNoUnown\n"
|
||||
"\tlsls r0, 16\n"
|
||||
"\tasrs r0, 16\n"
|
||||
"\tcmp r5, r0\n"
|
||||
"\tbne _08021AC4\n"
|
||||
"\tldr r3, [r7]\n"
|
||||
"\tldr r1, [r3, 0x70]\n"
|
||||
"\tlsls r2, r1, 1\n"
|
||||
"\tadds r0, r3, 0\n"
|
||||
"\tadds r0, 0xE\n"
|
||||
"\tadds r0, r2\n"
|
||||
"\tstrh r5, [r0]\n"
|
||||
"\tadds r1, 0x1\n"
|
||||
"\tstr r1, [r3, 0x70]\n"
|
||||
"_08021AC4:\n"
|
||||
"\tadds r6, 0x1\n"
|
||||
"\tldr r0, _08021B50\n"
|
||||
"\tcmp r6, r0\n"
|
||||
"\tble _08021A8E\n"
|
||||
"\tmovs r6, 0\n"
|
||||
"_08021ACE:\n"
|
||||
"\tlsls r0, r6, 16\n"
|
||||
"\tasrs r4, r0, 16\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tbl sub_8098134\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _08021AFC\n"
|
||||
"\tadds r0, r4, 0\n"
|
||||
"\tbl sub_8021B58\n"
|
||||
"\tadds r2, r0, 0\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tnegs r0, r0\n"
|
||||
"\tcmp r2, r0\n"
|
||||
"\tbeq _08021AFC\n"
|
||||
"\tldr r0, _08021B4C\n"
|
||||
"\tldr r1, [r0]\n"
|
||||
"\tlsls r0, r2, 2\n"
|
||||
"\tadds r1, 0x30\n"
|
||||
"\tadds r1, r0\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tstr r0, [r1]\n"
|
||||
"_08021AFC:\n"
|
||||
"\tadds r6, 0x1\n"
|
||||
"\tldr r0, _08021B50\n"
|
||||
"\tcmp r6, r0\n"
|
||||
"\tble _08021ACE\n"
|
||||
"\tmovs r6, 0\n"
|
||||
"\tldr r4, _08021B54\n"
|
||||
"_08021B08:\n"
|
||||
"\tmovs r0, 0x58\n"
|
||||
"\tadds r1, r6, 0\n"
|
||||
"\tmuls r1, r0\n"
|
||||
"\tldr r0, [r4]\n"
|
||||
"\tadds r2, r0, r1\n"
|
||||
"\tldrb r1, [r2]\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tands r0, r1\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _08021B3C\n"
|
||||
"\tmovs r1, 0x8\n"
|
||||
"\tldrsh r0, [r2, r1]\n"
|
||||
"\tbl sub_8021B58\n"
|
||||
"\tadds r2, r0, 0\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"\tnegs r0, r0\n"
|
||||
"\tcmp r2, r0\n"
|
||||
"\tbeq _08021B3C\n"
|
||||
"\tldr r0, _08021B4C\n"
|
||||
"\tldr r1, [r0]\n"
|
||||
"\tlsls r0, r2, 2\n"
|
||||
"\tadds r1, 0x30\n"
|
||||
"\tadds r1, r0\n"
|
||||
"\tmovs r0, 0x2\n"
|
||||
"\tstr r0, [r1]\n"
|
||||
"_08021B3C:\n"
|
||||
"\tadds r6, 0x1\n"
|
||||
"\tmovs r0, 0xCE\n"
|
||||
"\tlsls r0, 1\n"
|
||||
"\tcmp r6, r0\n"
|
||||
"\tble _08021B08\n"
|
||||
"\tpop {r4-r7}\n"
|
||||
"\tpop {r0}\n"
|
||||
"\tbx r0\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_08021B4C: .4byte gUnknown_203B28C\n"
|
||||
"_08021B50: .4byte 0x000001a7\n"
|
||||
"_08021B54: .4byte gRecruitedPokemonRef");
|
||||
|
||||
}
|
||||
#else
|
||||
void sub_8021A60(void)
|
||||
{
|
||||
s32 sVar4;
|
||||
s32 iVar6;
|
||||
s32 index;
|
||||
struct PokemonStruct *pokeStruct;
|
||||
|
||||
gUnknown_203B28C->unk70 = 0;
|
||||
for(index = 0; index < 0x10; index++)
|
||||
{
|
||||
gUnknown_203B28C->unkE[index] = 0;
|
||||
gUnknown_203B28C->unk30[index] = 0;
|
||||
}
|
||||
for(index = 0; index < 0x1A8; index++)
|
||||
{
|
||||
if ((gUnknown_203B28C->friendArea == GetFriendArea((s16)index)) &&
|
||||
((s16)index == GetBaseSpeciesNoUnown(index))) {
|
||||
iVar6 = gUnknown_203B28C->unk70;
|
||||
gUnknown_203B28C->unkE[iVar6] = index;
|
||||
gUnknown_203B28C->unk70 = iVar6 + 1;
|
||||
}
|
||||
}
|
||||
for(index = 0; index < 0x1A8; index++)
|
||||
{
|
||||
if ((sub_8098134(index) != '\0') && (sVar4 = sub_8021B58(index), sVar4 != -1)) {
|
||||
gUnknown_203B28C->unk30[sVar4] = 1;
|
||||
}
|
||||
}
|
||||
for(index = 0; index < 0x19d; index++)
|
||||
{
|
||||
pokeStruct = &gRecruitedPokemonRef->pokemon[index];
|
||||
if (((*(u8 *)&pokeStruct->unk0 & 1) != 0) &&
|
||||
(sVar4 = sub_8021B58(pokeStruct->speciesNum), sVar4 != -1)) {
|
||||
gUnknown_203B28C->unk30[sVar4] = 2;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
s32 sub_8021B58(s16 species)
|
||||
{
|
||||
s32 baseSpecies;
|
||||
int index;
|
||||
|
||||
baseSpecies = GetBaseSpeciesNoUnown(species);
|
||||
for(index = 0; index < gUnknown_203B28C->numPokemoninFriendArea; index++)
|
||||
{
|
||||
if (baseSpecies == gUnknown_203B28C->unkE[index]) return index;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
bool8 CreateWigglytuffShop(bool32 isAsleep)
|
||||
{
|
||||
char *string;
|
||||
|
|
@ -248,16 +902,16 @@ void UpdateWigglytuffDialogue(void)
|
|||
break;
|
||||
case BUY_FRIEND_AREA:
|
||||
CreateWigglytuffConfirmFriendAreaMenu();
|
||||
sub_8092578(gUnknown_202E628,gWigglytuffShop->chosenFriendArea,0);
|
||||
sub_8092578(gUnknown_202E628,gWigglytuffShop->chosenFriendArea,FALSE);
|
||||
gUnknown_202DE30[0] = gWigglytuffShop->friendAreaPrice;
|
||||
sub_8014248(gWigglytuffDialogue[gWigglytuffShop->isAsleep][5],0,5,gWigglytuffShop->unk1C,0,4,0,gWigglytuffShop->unkCC,0xc);
|
||||
break;
|
||||
case FRIEND_AREA_INFO:
|
||||
sub_8021774(gWigglytuffShop->chosenFriendArea,0,2);
|
||||
sub_8021774(gWigglytuffShop->chosenFriendArea,FALSE,2);
|
||||
break;
|
||||
case CONFIRM_BUY_FRIEND_AREA:
|
||||
gWigglytuffShop->fallbackState = WIGGLYTUFF_UNKD;
|
||||
sub_8092578(gUnknown_202E628,gWigglytuffShop->chosenFriendArea,0);
|
||||
sub_8092578(gUnknown_202E628,gWigglytuffShop->chosenFriendArea,FALSE);
|
||||
sub_80141B4(gWigglytuffDialogue[gWigglytuffShop->isAsleep][6],0,gWigglytuffShop->unkCC,0x10d);
|
||||
break;
|
||||
case WIGGLYTUFF_UNKD:
|
||||
|
|
@ -324,7 +978,7 @@ void UpdateWigglytuffDialogue(void)
|
|||
}
|
||||
string = GetMonSpecies(gWigglytuffShop->chosenSpecies);
|
||||
strcpy(gAvailablePokemonNames,string);
|
||||
sub_8092578(gUnknown_202E628,gWigglytuffShop->chosenFriendArea,0);
|
||||
sub_8092578(gUnknown_202E628,gWigglytuffShop->chosenFriendArea,FALSE);
|
||||
sub_80141B4(gWigglytuffDialogue[gWigglytuffShop->isAsleep][14],0,gWigglytuffShop->unkCC,0x10d);
|
||||
break;
|
||||
case WIGGLYTUFF_CHECK_HAS_FRIEND_AREA:
|
||||
|
|
|
|||
|
|
@ -125,7 +125,6 @@ extern void ProceedToNextRewardSceneState(void);
|
|||
extern void sub_802F300(void);
|
||||
extern s32 sub_808D544(u32);
|
||||
extern u32 sub_801B60C(u32, u8, u8);
|
||||
extern void sub_8092578(u8 *buffer, u8 index, u8 r2);
|
||||
void HandleMissionReward(void);
|
||||
const u8 *sub_80974A0(s16 index);
|
||||
|
||||
|
|
@ -555,7 +554,7 @@ void HandleMissionReward(void)
|
|||
SetRewardSceneState(PREP_ITEM_REWARD);
|
||||
}
|
||||
else {
|
||||
sub_8092578(gUnknown_202E628,gUnknown_203B310->unk10->friendAreaReward,0);
|
||||
sub_8092578(gUnknown_202E628,gUnknown_203B310->unk10->friendAreaReward,FALSE);
|
||||
if (gUnknown_203B310->displayClientDialogueSprite) {
|
||||
sub_80141B4(gUnknown_80E04B4,0,&gUnknown_203B310->faceFile,0x10d);
|
||||
gUnknown_203B310->nextState = UNLOCK_FRIEND_AREA;
|
||||
|
|
|
|||
|
|
@ -228,21 +228,6 @@ gUnknown_203B278: /* 203B278 */
|
|||
|
||||
.include "src/gulpin_shop_1.o"
|
||||
|
||||
gUnknown_203B280: /* 203B280 */
|
||||
.space 0x4
|
||||
|
||||
gUnknown_203B284: /* 203B284 */
|
||||
.space 0x4
|
||||
|
||||
gUnknown_203B288: /* 203B288 */
|
||||
.space 0x2
|
||||
|
||||
gUnknown_203B28A: /* 203B28A */
|
||||
.space 0x2
|
||||
|
||||
gUnknown_203B28C: /* 203B28C */
|
||||
.space 0x4
|
||||
|
||||
.include "src/wigglytuff_shop.o"
|
||||
|
||||
gUnknown_203B294: /* 203B294 */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user