diff --git a/asm/code_801EE10_mid.s b/asm/code_801EE10_mid.s index 8e6c27093..eabca5930 100644 --- a/asm/code_801EE10_mid.s +++ b/asm/code_801EE10_mid.s @@ -5,145 +5,6 @@ .text - thumb_func_start sub_8020D90 -sub_8020D90: - push {lr} - bl sub_801E8C0 - cmp r0, 0x2 - beq _08020DBC - cmp r0, 0x2 - bcc _08020DC6 - cmp r0, 0x3 - bne _08020DC6 - bl GulpinIsNextMoveLinked - ldr r1, _08020DB8 - ldr r1, [r1] - strb r0, [r1, 0x14] - bl DestroyGulpinShop - movs r0, 0x1A - bl sub_801FDA8 - b _08020DC6 - .align 2, 0 -_08020DB8: .4byte gUnknown_203B27C -_08020DBC: - bl DestroyGulpinShop - movs r0, 0x10 - bl sub_801FDA8 -_08020DC6: - pop {r0} - bx r0 - thumb_func_end sub_8020D90 - - thumb_func_start sub_8020DCC -sub_8020DCC: - push {lr} - movs r0, 0x1 - bl sub_801EF38 - cmp r0, 0x4 - bhi _08020EAA - lsls r0, 2 - ldr r1, _08020DE4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08020DE4: .4byte _08020DE8 - .align 2, 0 -_08020DE8: - .4byte _08020EAA - .4byte _08020E98 - .4byte _08020E64 - .4byte _08020DFC - .4byte _08020E30 -_08020DFC: - bl sub_801F1A4 - lsls r0, 24 - cmp r0, 0 - beq _08020E0E - ldr r0, _08020E2C - ldr r1, [r0] - movs r0, 0x1 - strb r0, [r1, 0x15] -_08020E0E: - bl sub_801F194 - ldr r1, _08020E2C - ldr r2, [r1] - str r0, [r2, 0x18] - lsls r0, 3 - adds r0, r2, r0 - ldrh r1, [r0, 0x26] - strh r1, [r2, 0x1C] - ldrh r0, [r0, 0x26] - strh r0, [r2, 0x20] - movs r0, 0x20 - bl sub_801FDA8 - b _08020EAA - .align 2, 0 -_08020E2C: .4byte gUnknown_203B27C -_08020E30: - bl sub_801F1A4 - lsls r0, 24 - cmp r0, 0 - beq _08020E42 - ldr r0, _08020E60 - ldr r1, [r0] - movs r0, 0x1 - strb r0, [r1, 0x15] -_08020E42: - bl sub_801F194 - ldr r1, _08020E60 - ldr r2, [r1] - str r0, [r2, 0x18] - lsls r0, 3 - adds r0, r2, r0 - ldrh r1, [r0, 0x26] - strh r1, [r2, 0x1C] - ldrh r0, [r0, 0x26] - strh r0, [r2, 0x20] - movs r0, 0x21 - bl sub_801FDA8 - b _08020EAA - .align 2, 0 -_08020E60: .4byte gUnknown_203B27C -_08020E64: - bl sub_801F1A4 - lsls r0, 24 - cmp r0, 0 - beq _08020E76 - ldr r0, _08020E94 - ldr r1, [r0] - movs r0, 0x1 - strb r0, [r1, 0x15] -_08020E76: - bl sub_801F214 - ldr r0, _08020E94 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x24 - ldr r1, [r1, 0x10] - adds r1, 0x2C - bl sub_8094060 - movs r0, 0x10 - bl sub_801FDA8 - b _08020EAA - .align 2, 0 -_08020E94: .4byte gUnknown_203B27C -_08020E98: - bl sub_801F1A4 - lsls r0, 24 - cmp r0, 0 - beq _08020EAA - ldr r0, _08020EB0 - ldr r1, [r0] - movs r0, 0x1 - strb r0, [r1, 0x15] -_08020EAA: - pop {r0} - bx r0 - .align 2, 0 -_08020EB0: .4byte gUnknown_203B27C - thumb_func_end sub_8020DCC - thumb_func_start sub_8020EB4 sub_8020EB4: push {r4,lr} diff --git a/include/gulpin_shop.h b/include/gulpin_shop.h index be4b6adee..48ce06f20 100644 --- a/include/gulpin_shop.h +++ b/include/gulpin_shop.h @@ -33,5 +33,6 @@ struct GulpinShopWork u32 CreateGulpinShop(s32 isAsleep, s16 pokeSpecies, struct Move *moves); void DestroyGulpinShop(void); +bool8 GulpinIsNextMoveLinked(void); #endif diff --git a/src/gulpin_shop_1.c b/src/gulpin_shop_1.c index 9ba5d2b26..2b01c0d28 100644 --- a/src/gulpin_shop_1.c +++ b/src/gulpin_shop_1.c @@ -135,6 +135,11 @@ extern void sub_801F63C(void); extern u16 sub_801F5B4(void); extern void sub_801F8D0(void); extern u32 sub_801F890(void); +extern u32 sub_801E8C0(void); +extern u32 sub_801F194(void); +bool8 sub_801F1A4(void); +void sub_801F214(void); +extern u32 sub_801EF38(u32); extern void CreateGulpinLinkMenu(void); extern void sub_802069C(void); @@ -943,3 +948,61 @@ void sub_8020D74(void) break; } } + +void sub_8020D90(void) +{ + switch(sub_801E8C0()) + { + case 3: + gUnknown_203B27C->isNextMoveLinked = GulpinIsNextMoveLinked(); + DestroyGulpinShop(); + sub_801FDA8(0x1A); + break; + case 2: + DestroyGulpinShop(); + sub_801FDA8(0x10); + break; + case 0: + case 1: + break; + } +} + +void sub_8020DCC(void) +{ + switch(sub_801EF38(1)) { + case 3: + if (sub_801F1A4() != 0) { + gUnknown_203B27C->unk15 = 1; + } + gUnknown_203B27C->moveIndex = sub_801F194(); + gUnknown_203B27C->unk1C = gUnknown_203B27C->moves [gUnknown_203B27C->moveIndex].id; + gUnknown_203B27C->unk20 = gUnknown_203B27C->moves [gUnknown_203B27C->moveIndex].id; + sub_801FDA8(0x20); + break; + case 4: + if (sub_801F1A4() != 0) { + gUnknown_203B27C->unk15 = 1; + } + gUnknown_203B27C->moveIndex = sub_801F194(); + gUnknown_203B27C->unk1C = gUnknown_203B27C->moves [gUnknown_203B27C->moveIndex].id; + gUnknown_203B27C->unk20 = gUnknown_203B27C->moves [gUnknown_203B27C->moveIndex].id; + sub_801FDA8(0x21); + break; + case 2: + if (sub_801F1A4() != 0) { + gUnknown_203B27C->unk15 = 1; + } + sub_801F214(); + sub_8094060(gUnknown_203B27C->moves,gUnknown_203B27C->pokeStruct->moves); + sub_801FDA8(0x10); + break; + case 1: + if (sub_801F1A4() != 0) { + gUnknown_203B27C->unk15 = 1; + } + break; + case 0: + break; + } +}