Merge pull request #148 from Kermalis/kermalis-kecleon_shop

Complete Kecleon Bros + Clean Kecleon/Kangaskhan
This commit is contained in:
Cheng Hann Gan
2023-08-05 13:51:01 -04:00
committed by GitHub
62 changed files with 3015 additions and 3651 deletions

View File

@@ -124,7 +124,8 @@ $(C_BUILDDIR)/agb_flash_mx.o: CC1FLAGS := -O -mthumb-interwork
$(C_BUILDDIR)/m4a.o: CC1 := tools/agbcc/bin/old_agbcc
$(C_BUILDDIR)/kecleon_items_1.o: CC1FLAGS := -mthumb-interwork -Wimplicit -Wparentheses -Werror -O2 -fhex-asm
# Stack size in sub_801A9E0 is funky with an unused var
$(C_BUILDDIR)/kecleon_bros.o: CC1FLAGS := -mthumb-interwork -Wimplicit -Wparentheses -Werror -O2 -fhex-asm
#### Main Rules ####

View File

@@ -1548,7 +1548,7 @@ _08001298:
pop {r0}
bx r0
.align 2, 0
_080012B8: .4byte gTeamInventory_203B460
_080012B8: .4byte gTeamInventoryRef
_080012BC: .4byte gRecruitedPokemonRef
thumb_func_end sub_8001248
@@ -1607,7 +1607,7 @@ _08001306:
pop {r0}
bx r0
.align 2, 0
_08001324: .4byte gTeamInventory_203B460
_08001324: .4byte gTeamInventoryRef
_08001328: .4byte gRecruitedPokemonRef
thumb_func_end sub_80012C0

View File

@@ -192,7 +192,7 @@ _0801F074:
b _0801F12E
.align 2, 0
_0801F0C8: .4byte gUnknown_203B270
_0801F0CC: .4byte gTeamInventory_203B460
_0801F0CC: .4byte gTeamInventoryRef
_0801F0D0:
ldr r0, _0801F0E0
ldr r1, [r0]

View File

@@ -173,7 +173,7 @@ _08021502:
.align 2, 0
_08021568: .4byte gUnknown_203B280
_0802156C: .4byte gUnknown_80DC494
_08021570: .4byte gTeamInventory_203B460
_08021570: .4byte gTeamInventoryRef
_08021574:
mov r0, r10
ldr r1, _08021598

View File

@@ -2732,7 +2732,7 @@ _080441A4:
.align 2, 0
_080441AC: .4byte gDungeon
_080441B0: .4byte 0x00000644
_080441B4: .4byte gTeamInventory_203B460
_080441B4: .4byte gTeamInventoryRef
_080441B8: .4byte gRecruitedPokemonRef
thumb_func_end sub_8044124

View File

@@ -24,7 +24,7 @@ sub_8044CC8:
adds r0, r1
b _08044D34
.align 2, 0
_08044CE8: .4byte gTeamInventory_203B460
_08044CE8: .4byte gTeamInventoryRef
_08044CEC:
adds r0, r1, 0
cmp r0, 0x80
@@ -97,7 +97,7 @@ sub_8044D40:
bl FillInventoryGaps
b _08044D88
.align 2, 0
_08044D70: .4byte gTeamInventory_203B460
_08044D70: .4byte gTeamInventoryRef
_08044D74:
lsls r0, r1, 24
lsrs r0, 24

View File

@@ -122,7 +122,7 @@ _08045E94:
.align 2, 0
_08045EA8: .4byte gDungeon
_08045EAC: .4byte 0x0000065b
_08045EB0: .4byte gTeamInventory_203B460
_08045EB0: .4byte gTeamInventoryRef
_08045EB4:
ldr r0, [sp, 0xAC]
adds r0, 0x60

View File

@@ -36,7 +36,7 @@ _08047180:
pop {r0}
bx r0
.align 2, 0
_0804718C: .4byte gTeamInventory_203B460
_0804718C: .4byte gTeamInventoryRef
thumb_func_end sub_8047158
thumb_func_start sub_8047190

View File

@@ -14912,7 +14912,7 @@ _08052196:
movs r0, 0
b _080521CA
.align 2, 0
_080521B4: .4byte gTeamInventory_203B460
_080521B4: .4byte gTeamInventoryRef
_080521B8: .4byte gRecruitedPokemonRef
_080521BC: .4byte 0x00008df8
_080521C0: .4byte 0x00008e38

View File

@@ -786,7 +786,7 @@ _0805DEFC: .4byte gGameOptionsRef
_0805DF00: .4byte gRealInputs
_0805DF04: .4byte gUnknown_202F22D
_0805DF08: .4byte 0x01000200
_0805DF0C: .4byte gTeamInventory_203B460
_0805DF0C: .4byte gTeamInventoryRef
_0805DF10: .4byte gDungeon
_0805DF14: .4byte 0x0001820a
_0805DF18: .4byte gUnknown_202EE00
@@ -4319,7 +4319,7 @@ _0805FBB8: .4byte gFieldMenuGroundPtr
_0805FBBC: .4byte gPlayTimeRef
_0805FBC0: .4byte gUnknown_202DE30
_0805FBC4: .4byte gUnknown_80F9174
_0805FBC8: .4byte gTeamInventory_203B460
_0805FBC8: .4byte gTeamInventoryRef
_0805FBCC: .4byte gUnknown_80F9190
_0805FBD0: .4byte gAvailablePokemonNames
_0805FBD4: .4byte gUnknown_80F91A8
@@ -4807,7 +4807,7 @@ _0805FF66:
b _0805FFE8
.align 2, 0
_0805FFA8: .4byte gUnknown_202F240
_0805FFAC: .4byte gTeamInventory_203B460
_0805FFAC: .4byte gTeamInventoryRef
_0805FFB0: .4byte gDungeon
_0805FFB4: .4byte 0x0001357c
_0805FFB8: .4byte gUnknown_202F258
@@ -5256,7 +5256,7 @@ _0806033C:
.align 2, 0
_0806034C: .4byte gUnknown_202EE10
_08060350: .4byte gUnknown_202F248
_08060354: .4byte gTeamInventory_203B460
_08060354: .4byte gTeamInventoryRef
_08060358: .4byte gUnknown_202F240
_0806035C: .4byte gRealInputs
_08060360: .4byte gDungeon
@@ -5553,7 +5553,7 @@ _08060592:
b _08060794
.align 2, 0
_080605C0: .4byte gTeamToolboxAPtr
_080605C4: .4byte gTeamInventory_203B460
_080605C4: .4byte gTeamInventoryRef
_080605C8: .4byte gUnknown_8106B60
_080605CC:
ldr r0, _08060630
@@ -5605,7 +5605,7 @@ _080605FC:
b _08060794
.align 2, 0
_08060630: .4byte gTeamToolboxBPtr
_08060634: .4byte gTeamInventory_203B460
_08060634: .4byte gTeamInventoryRef
_08060638: .4byte gUnknown_8106B60
_0806063C:
mov r1, r9
@@ -6012,7 +6012,7 @@ _08060964: .4byte gUnknown_202F238
_08060968: .4byte gUnknown_202EE6C
_0806096C: .4byte gDungeon
_08060970: .4byte 0x0000065b
_08060974: .4byte gTeamInventory_203B460
_08060974: .4byte gTeamInventoryRef
_08060978:
mov r0, r10
adds r0, 0x60
@@ -6182,7 +6182,7 @@ _08060ABE:
bl sub_8044FF0
b _08060B3C
.align 2, 0
_08060AD4: .4byte gTeamInventory_203B460
_08060AD4: .4byte gTeamInventoryRef
_08060AD8: .4byte gUnknown_202F238
_08060ADC: .4byte gDungeon
_08060AE0: .4byte 0x0001357c
@@ -6210,7 +6210,7 @@ _08060AE8:
.align 2, 0
_08060B10: .4byte gDungeon
_08060B14: .4byte 0x0000065b
_08060B18: .4byte gTeamInventory_203B460
_08060B18: .4byte gTeamInventoryRef
_08060B1C:
ldrb r1, [r7, 0x2]
movs r0, 0x37
@@ -6356,7 +6356,7 @@ _08060C32:
.align 2, 0
_08060C50: .4byte gDungeon
_08060C54: .4byte 0x0001357c
_08060C58: .4byte gTeamInventory_203B460
_08060C58: .4byte gTeamInventoryRef
_08060C5C: .4byte 0x0000065b
_08060C60:
ldrb r1, [r7, 0x2]
@@ -6586,7 +6586,7 @@ _08060E1A:
.align 2, 0
_08060E28: .4byte gDungeon
_08060E2C: .4byte 0x0000065b
_08060E30: .4byte gTeamInventory_203B460
_08060E30: .4byte gTeamInventoryRef
_08060E34: .4byte 0x0001357c
thumb_func_end sub_8060D64
@@ -17762,7 +17762,7 @@ _08066798:
ldr r0, _080667CC
b _080667DE
.align 2, 0
_080667C0: .4byte gTeamInventory_203B460
_080667C0: .4byte gTeamInventoryRef
_080667C4: .4byte gUnknown_202DE58
_080667C8: .4byte 0x00000133
_080667CC: .4byte gUnknown_80F8D04
@@ -17857,7 +17857,7 @@ _08066856:
bl SendMessage
b _080668BE
.align 2, 0
_0806688C: .4byte gTeamInventory_203B460
_0806688C: .4byte gTeamInventoryRef
_08066890: .4byte gUnknown_202DE58
_08066894: .4byte gUnknown_80F8C7C
_08066898:
@@ -18139,7 +18139,7 @@ sub_8066AC0:
ldr r0, _08066AF4
b _08066B10
.align 2, 0
_08066AF0: .4byte gTeamInventory_203B460
_08066AF0: .4byte gTeamInventoryRef
_08066AF4: .4byte gUnknown_80F8D60
_08066AF8:
ldrb r1, [r5]

View File

@@ -1857,7 +1857,7 @@ _0806DEC8:
bl SendWaitingEndMessage
b _0806DEF2
.align 2, 0
_0806DED4: .4byte gTeamInventory_203B460
_0806DED4: .4byte gTeamInventoryRef
_0806DED8: .4byte gDungeon
_0806DEDC: .4byte 0x00000679
_0806DEE0: .4byte 0x00000676

View File

@@ -173,7 +173,7 @@ _08073E48:
.align 2, 0
_08073E64: .4byte gDungeon
_08073E68: .4byte 0x0000065b
_08073E6C: .4byte gTeamInventory_203B460
_08073E6C: .4byte gTeamInventoryRef
_08073E70:
mov r0, r10
adds r0, 0x60

View File

@@ -1470,7 +1470,7 @@ _0807F204:
movs r0, 0x2
b _0807F31C
.align 2, 0
_0807F224: .4byte gTeamInventory_203B460
_0807F224: .4byte gTeamInventoryRef
_0807F228: .4byte gUnknown_80FE520
_0807F22C:
movs r0, 0xA6
@@ -1597,7 +1597,7 @@ _0807F31C:
pop {r1}
bx r1
.align 2, 0
_0807F324: .4byte gTeamInventory_203B460
_0807F324: .4byte gTeamInventoryRef
_0807F328: .4byte gDungeon
_0807F32C: .4byte 0x000135cc
_0807F330: .4byte 0x00000694
@@ -1723,7 +1723,7 @@ _0807F41C: .4byte gDungeon
_0807F420: .4byte 0x0000066e
_0807F424: .4byte 0x0000066f
_0807F428: .4byte gUnknown_80FE4B8
_0807F42C: .4byte gTeamInventory_203B460
_0807F42C: .4byte gTeamInventoryRef
_0807F430: .4byte 0x000135cc
_0807F434: .4byte 0x00000694
_0807F438: .4byte 0x0000068c

View File

@@ -791,7 +791,7 @@ _08080300:
bl sub_80522F4
b _0808034A
.align 2, 0
_0808030C: .4byte gTeamInventory_203B460
_0808030C: .4byte gTeamInventoryRef
_08080310: .4byte gUnknown_80FDC40
_08080314:
adds r0, r6, 0
@@ -1032,7 +1032,7 @@ _080804B6:
ldr r0, _080804C8
b _080804D4
.align 2, 0
_080804C0: .4byte gTeamInventory_203B460
_080804C0: .4byte gTeamInventoryRef
_080804C4: .4byte gUnknown_80F4E0E
_080804C8: .4byte gUnknown_80FD788
_080804CC:

View File

@@ -406,7 +406,7 @@ _080844FC: .4byte gDungeon
_08084500: .4byte 0x0000068a
_08084504: .4byte gUnknown_80FA32C
_08084508: .4byte gUnknown_202DE58
_0808450C: .4byte gTeamInventory_203B460
_0808450C: .4byte gTeamInventoryRef
_08084510: .4byte gUnknown_80FA448
_08084514:
lsls r1, r3, 2

View File

@@ -717,7 +717,7 @@ _08086104:
movs r0, 0x1
b _0808611C
.align 2, 0
_08086108: .4byte gTeamInventory_203B460
_08086108: .4byte gTeamInventoryRef
_0808610C: .4byte gDungeon
_08086110: .4byte 0x0001357c
_08086114:

View File

@@ -5658,7 +5658,7 @@ _0809BCE8:
beq _0809BCF0
movs r0, 0x3
_0809BCF0:
bl DisplayKeckleonDialogueSprite
bl CreateKecleonBros
lsls r0, 24
cmp r0, 0
beq _0809BD10
@@ -6386,7 +6386,7 @@ _0809C2CA:
movs r1, 0x1
b _0809C318
.align 2, 0
_0809C304: .4byte gTeamInventory_203B460
_0809C304: .4byte gTeamInventoryRef
_0809C308: .4byte gUnknown_202DE58
_0809C30C:
ldr r0, [r6]
@@ -7562,7 +7562,7 @@ sub_809CBBC:
.align 2, 0
_0809CC0C: .4byte gUnknown_81163E4
_0809CC10: .4byte gItemParametersData
_0809CC14: .4byte gTeamInventory_203B460
_0809CC14: .4byte gTeamInventoryRef
_0809CC18: .4byte 0x0001869f
_0809CC1C:
str r1, [r2]
@@ -7648,7 +7648,7 @@ sub_809CC90:
b _0809CCD6
.align 2, 0
_0809CCBC: .4byte gUnknown_81163BC
_0809CCC0: .4byte gTeamInventory_203B460
_0809CCC0: .4byte gTeamInventoryRef
_0809CCC4: .4byte 0x0001869f
_0809CCC8:
bl GetNumberOfFilledInventorySlots

View File

@@ -581,7 +581,7 @@ _080907F0: .4byte gUnknown_8115DD4
_080907F4: .4byte gUnknown_8115E00
_080907F8: .4byte gUnknown_8115E28
_080907FC: .4byte gUnknown_8115E54
_08090800: .4byte gTeamInventory_203B460
_08090800: .4byte gTeamInventoryRef
_08090804: .4byte gUnknown_8115E80
_08090808: .4byte gUnknown_8108F50
_0809080C:

View File

@@ -258,7 +258,7 @@ _08001754:
lsls r1, 2
b _0800176C
.align 2, 0
_08001760: .4byte gTeamInventory_203B460
_08001760: .4byte gTeamInventoryRef
_08001764:
ldr r0, _08001774
ldr r0, [r0]
@@ -269,7 +269,7 @@ _0800176C:
ldr r0, [r0]
b _0800177A
.align 2, 0
_08001774: .4byte gTeamInventory_203B460
_08001774: .4byte gTeamInventoryRef
_08001778:
movs r0, 0
_0800177A:
@@ -423,7 +423,7 @@ _080018A4:
ldr r0, [r0]
b _080018CE
.align 2, 0
_080018B4: .4byte gTeamInventory_203B460
_080018B4: .4byte gTeamInventoryRef
_080018B8:
ldr r0, _080018C8
ldr r0, [r0]
@@ -433,7 +433,7 @@ _080018B8:
ldr r0, [r0]
b _080018CE
.align 2, 0
_080018C8: .4byte gTeamInventory_203B460
_080018C8: .4byte gTeamInventoryRef
_080018CC:
movs r0, 0
_080018CE:
@@ -528,7 +528,7 @@ _08001972:
adds r0, r1
b _0800198E
.align 2, 0
_08001980: .4byte gTeamInventory_203B460
_08001980: .4byte gTeamInventoryRef
_08001984:
ldr r0, _08001998
ldr r0, [r0]
@@ -543,7 +543,7 @@ _08001990:
pop {r0}
bx r0
.align 2, 0
_08001998: .4byte gTeamInventory_203B460
_08001998: .4byte gTeamInventoryRef
thumb_func_end sub_80018D8
thumb_func_start sub_800199C
@@ -642,7 +642,7 @@ _08001A4E:
lsls r1, 2
b _08001A64
.align 2, 0
_08001A58: .4byte gTeamInventory_203B460
_08001A58: .4byte gTeamInventoryRef
_08001A5C:
ldr r0, _08001A70
ldr r0, [r0]
@@ -657,7 +657,7 @@ _08001A68:
pop {r0}
bx r0
.align 2, 0
_08001A70: .4byte gTeamInventory_203B460
_08001A70: .4byte gTeamInventoryRef
thumb_func_end sub_800199C
.align 2, 0 @ Don't pad with nop.

View File

@@ -7579,7 +7579,7 @@ _080A1C5E:
b _080A236A
.align 2, 0
_080A1C64: .4byte gUnknown_81167E4
_080A1C68: .4byte gTeamInventory_203B460
_080A1C68: .4byte gTeamInventoryRef
_080A1C6C: .4byte 0x000003e6
_080A1C70:
ldr r0, _080A1C80
@@ -8016,7 +8016,7 @@ _080A1FE0:
.align 2, 0
_080A200C: .4byte gUnknown_8116844
_080A2010: .4byte 0x000003e6
_080A2014: .4byte gTeamInventory_203B460
_080A2014: .4byte gTeamInventoryRef
_080A2018:
ldrb r0, [r6, 0x2]
movs r1, 0

View File

@@ -1,758 +0,0 @@
#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start UpdateKecleonStoreDialogue
UpdateKecleonStoreDialogue:
push {r4,lr}
sub sp, 0x14
ldr r1, _08018EA4
ldr r0, [r1]
ldr r0, [r0, 0x8]
adds r4, r1, 0
cmp r0, 0x20
bls _08018E9A
b _080194E8
_08018E9A:
lsls r0, 2
ldr r1, _08018EA8
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08018EA4: .4byte gUnknown_203B210
_08018EA8: .4byte _08018EAC
.align 2, 0
_08018EAC:
.4byte _08018F30
.4byte _08018F58
.4byte _08018FA8
.4byte _08018FD0
.4byte _080194E8
.4byte _08018FFC
.4byte _08019024
.4byte _0801904C
.4byte _08019070
.4byte _08019094
.4byte _080190B8
.4byte _080190DC
.4byte _08019104
.4byte _0801912C
.4byte _08019164
.4byte _0801918C
.4byte _080191B4
.4byte _08019294
.4byte _080191DC
.4byte _080191FA
.4byte _08019218
.4byte _080193F4
.4byte _08019254
.4byte _08019314
.4byte _0801933C
.4byte _080193FE
.4byte _08019364
.4byte _08019372
.4byte _08019380
.4byte _080193F4
.4byte _080193B4
.4byte _0801946C
.4byte _080194C0
_08018F30:
bl sub_8019DAC
bl sub_80194F8
movs r0, 0
bl sub_8019E04
ldr r2, _08018F50
ldr r0, _08018F54
ldr r4, [r0]
ldr r1, [r4]
movs r0, 0x5C
muls r0, r1
adds r0, r2
b _08018F76
.align 2, 0
_08018F50: .4byte gKecleonShopDialogue
_08018F54: .4byte gUnknown_203B210
_08018F58:
bl sub_8019DAC
bl sub_80194F8
movs r0, 0
bl sub_8019E04
ldr r1, _08018FA0
ldr r0, _08018FA4
ldr r4, [r0]
ldr r2, [r4]
movs r0, 0x5C
muls r0, r2
adds r1, 0x4
adds r0, r1
_08018F76:
ldr r0, [r0]
ldr r2, [r4, 0x28]
adds r3, r4, 0
adds r3, 0x34
adds r1, r4, 0
adds r1, 0x74
str r1, [sp]
movs r1, 0x4
str r1, [sp, 0x4]
movs r1, 0
str r1, [sp, 0x8]
adds r1, r4, 0
adds r1, 0xE4
ldr r1, [r1]
str r1, [sp, 0xC]
movs r1, 0xC
str r1, [sp, 0x10]
movs r1, 0
bl sub_8014248
b _080194E8
.align 2, 0
_08018FA0: .4byte gKecleonShopDialogue
_08018FA4: .4byte gUnknown_203B210
_08018FA8:
ldr r1, [r4]
movs r0, 0x1
str r0, [r1, 0xC]
movs r0, 0
bl sub_8019E04
ldr r1, _08018FCC
ldr r2, [r4]
ldr r3, [r2]
movs r0, 0x5C
muls r0, r3
adds r1, 0x58
adds r0, r1
ldr r0, [r0]
adds r2, 0xE4
ldr r2, [r2]
b _08019454
.align 2, 0
_08018FCC: .4byte gKecleonShopDialogue
_08018FD0:
ldr r1, [r4]
movs r0, 0x4
str r0, [r1, 0xC]
movs r0, 0
bl sub_8019E04
ldr r1, _08018FF4
ldr r2, [r4]
ldr r3, [r2]
movs r0, 0x5C
muls r0, r3
adds r1, 0x8
adds r0, r1
ldr r0, [r0]
adds r2, 0xE4
ldr r2, [r2]
ldr r3, _08018FF8
b _08019456
.align 2, 0
_08018FF4: .4byte gKecleonShopDialogue
_08018FF8: .4byte 0x0000030d
_08018FFC:
ldr r1, [r4]
movs r0, 0x1
str r0, [r1, 0xC]
movs r0, 0
bl sub_8019E04
ldr r1, _08019020
ldr r2, [r4]
ldr r3, [r2]
movs r0, 0x5C
muls r0, r3
adds r1, 0x30
adds r0, r1
ldr r0, [r0]
adds r2, 0xE4
ldr r2, [r2]
b _08019454
.align 2, 0
_08019020: .4byte gKecleonShopDialogue
_08019024:
ldr r1, [r4]
movs r0, 0x10
str r0, [r1, 0xC]
movs r0, 0x1
bl sub_8019E04
ldr r1, _08019048
ldr r2, [r4]
ldr r3, [r2]
movs r0, 0x5C
muls r0, r3
adds r1, 0x34
adds r0, r1
ldr r0, [r0]
adds r2, 0xE4
ldr r2, [r2]
b _08019454
.align 2, 0
_08019048: .4byte gKecleonShopDialogue
_0801904C:
ldr r1, [r4]
movs r0, 0x1
str r0, [r1, 0xC]
bl sub_8019E04
ldr r1, _0801906C
ldr r2, [r4]
ldr r3, [r2]
movs r0, 0x5C
muls r0, r3
adds r1, 0x38
adds r0, r1
ldr r0, [r0]
adds r2, 0xE4
ldr r2, [r2]
b _08019454
.align 2, 0
_0801906C: .4byte gKecleonShopDialogue
_08019070:
ldr r1, [r4]
movs r0, 0x1
str r0, [r1, 0xC]
bl sub_8019E04
ldr r1, _08019090
ldr r2, [r4]
ldr r3, [r2]
movs r0, 0x5C
muls r0, r3
adds r1, 0x3C
adds r0, r1
ldr r0, [r0]
adds r2, 0xE4
ldr r2, [r2]
b _08019454
.align 2, 0
_08019090: .4byte gKecleonShopDialogue
_08019094:
ldr r1, [r4]
movs r0, 0x1
str r0, [r1, 0xC]
bl sub_8019E04
ldr r1, _080190B4
ldr r2, [r4]
ldr r3, [r2]
movs r0, 0x5C
muls r0, r3
adds r1, 0x40
adds r0, r1
ldr r0, [r0]
adds r2, 0xE4
ldr r2, [r2]
b _08019454
.align 2, 0
_080190B4: .4byte gKecleonShopDialogue
_080190B8:
ldr r1, [r4]
movs r0, 0x1
str r0, [r1, 0xC]
bl sub_8019E04
ldr r1, _080190D8
ldr r2, [r4]
ldr r3, [r2]
movs r0, 0x5C
muls r0, r3
adds r1, 0x44
adds r0, r1
ldr r0, [r0]
adds r2, 0xE4
ldr r2, [r2]
b _08019454
.align 2, 0
_080190D8: .4byte gKecleonShopDialogue
_080190DC:
ldr r1, [r4]
movs r0, 0x1
str r0, [r1, 0xC]
movs r0, 0
bl sub_8019E04
ldr r1, _08019100
ldr r2, [r4]
ldr r3, [r2]
movs r0, 0x5C
muls r0, r3
adds r1, 0x48
adds r0, r1
ldr r0, [r0]
adds r2, 0xE4
ldr r2, [r2]
b _08019454
.align 2, 0
_08019100: .4byte gKecleonShopDialogue
_08019104:
ldr r1, [r4]
movs r0, 0x10
str r0, [r1, 0xC]
movs r0, 0x1
bl sub_8019E04
ldr r1, _08019128
ldr r2, [r4]
ldr r3, [r2]
movs r0, 0x5C
muls r0, r3
adds r1, 0x4C
adds r0, r1
ldr r0, [r0]
adds r2, 0xE4
ldr r2, [r2]
b _08019454
.align 2, 0
_08019128: .4byte gKecleonShopDialogue
_0801912C:
ldr r0, _0801915C
ldr r1, [r4]
adds r1, 0x1C
movs r2, 0
bl sub_8090E14
ldr r1, [r4]
movs r0, 0x18
str r0, [r1, 0xC]
movs r0, 0x1
bl sub_8019E04
ldr r1, _08019160
ldr r2, [r4]
ldr r3, [r2]
movs r0, 0x5C
muls r0, r3
adds r1, 0x50
adds r0, r1
ldr r0, [r0]
adds r2, 0xE4
ldr r2, [r2]
b _08019454
.align 2, 0
_0801915C: .4byte gUnknown_202DE58
_08019160: .4byte gKecleonShopDialogue
_08019164:
ldr r1, [r4]
movs r0, 0x18
str r0, [r1, 0xC]
movs r0, 0x1
bl sub_8019E04
ldr r1, _08019188
ldr r2, [r4]
ldr r3, [r2]
movs r0, 0x5C
muls r0, r3
adds r1, 0x54
adds r0, r1
ldr r0, [r0]
adds r2, 0xE4
ldr r2, [r2]
b _08019454
.align 2, 0
_08019188: .4byte gKecleonShopDialogue
_0801918C:
ldr r1, [r4]
movs r0, 0x12
str r0, [r1, 0xC]
movs r0, 0
bl sub_8019E04
ldr r1, _080191B0
ldr r2, [r4]
ldr r3, [r2]
movs r0, 0x5C
muls r0, r3
adds r1, 0xC
adds r0, r1
ldr r0, [r0]
adds r2, 0xE4
ldr r2, [r2]
b _08019454
.align 2, 0
_080191B0: .4byte gKecleonShopDialogue
_080191B4:
ldr r1, [r4]
movs r0, 0x13
str r0, [r1, 0xC]
movs r0, 0
bl sub_8019E04
ldr r1, _080191D8
ldr r2, [r4]
ldr r3, [r2]
movs r0, 0x5C
muls r0, r3
adds r1, 0x10
adds r0, r1
ldr r0, [r0]
adds r2, 0xE4
ldr r2, [r2]
b _08019454
.align 2, 0
_080191D8: .4byte gKecleonShopDialogue
_080191DC:
ldr r0, [r4]
ldrb r0, [r0, 0x4]
cmp r0, 0
beq _080191EC
movs r0, 0x3
bl sub_8019E40
b _080191F2
_080191EC:
movs r0, 0x3
bl sub_801A20C
_080191F2:
movs r0, 0
bl sub_801AD34
b _08019378
_080191FA:
ldr r0, [r4]
ldrb r0, [r0, 0x4]
cmp r0, 0
beq _0801920A
movs r0, 0x1
bl sub_8019FCC
b _08019210
_0801920A:
movs r0, 0x1
bl sub_801A398
_08019210:
movs r0, 0
bl sub_801AD34
b _08019378
_08019218:
ldr r0, [r4]
ldrb r0, [r0, 0x4]
cmp r0, 0
beq _08019226
bl sub_801A0D8
b _0801922A
_08019226:
bl sub_801A4A4
_0801922A:
movs r0, 0
bl sub_801AD34
movs r0, 0x1
bl DrawTeamMoneyBox
bl sub_80195C0
ldr r0, _08019250
ldr r2, [r0]
adds r0, r2, 0
adds r0, 0x84
adds r1, r2, 0
adds r1, 0x34
adds r3, r2, 0
adds r3, 0x74
ldr r2, [r2, 0x30]
b _080193A0
.align 2, 0
_08019250: .4byte gUnknown_203B210
_08019254:
bl sub_8019700
ldr r0, _08019284
ldr r4, _08019288
ldr r1, [r4]
adds r1, 0x1C
movs r2, 0
bl sub_8090E14
ldr r1, _0801928C
ldr r0, [r4]
ldr r0, [r0, 0x10]
str r0, [r1]
movs r0, 0
bl sub_8019E04
ldr r1, _08019290
ldr r4, [r4]
ldr r2, [r4]
movs r0, 0x5C
muls r0, r2
adds r1, 0x14
b _0801948C
.align 2, 0
_08019284: .4byte gUnknown_202DE58
_08019288: .4byte gUnknown_203B210
_0801928C: .4byte gUnknown_202DE30
_08019290: .4byte gKecleonShopDialogue
_08019294:
bl CountKecleonItems
cmp r0, 0
bne _080192C0
ldr r0, _080192AC
ldr r0, [r0]
ldrb r0, [r0, 0x4]
cmp r0, 0
beq _080192B0
bl sub_801A010
b _080192B4
.align 2, 0
_080192AC: .4byte gUnknown_203B210
_080192B0:
bl sub_801A3DC
_080192B4:
ldr r0, _080192BC
ldr r1, [r0]
movs r0, 0xB
b _080192F2
.align 2, 0
_080192BC: .4byte gUnknown_203B210
_080192C0:
bl GetNumberOfFilledInventorySlots
cmp r0, 0x13
ble _080192EC
ldr r0, _080192D8
ldr r0, [r0]
ldrb r0, [r0, 0x4]
cmp r0, 0
beq _080192DC
bl sub_801A010
b _080192E0
.align 2, 0
_080192D8: .4byte gUnknown_203B210
_080192DC:
bl sub_801A3DC
_080192E0:
ldr r0, _080192E8
ldr r1, [r0]
movs r0, 0x1
b _080192F2
.align 2, 0
_080192E8: .4byte gUnknown_203B210
_080192EC:
ldr r0, _0801930C
ldr r1, [r0]
movs r0, 0x10
_080192F2:
str r0, [r1, 0xC]
movs r0, 0
bl sub_8019E04
ldr r2, _08019310
ldr r0, _0801930C
ldr r1, [r0]
ldr r3, [r1]
movs r0, 0x5C
muls r0, r3
adds r2, 0x18
b _0801944C
.align 2, 0
_0801930C: .4byte gUnknown_203B210
_08019310: .4byte gKecleonShopDialogue
_08019314:
ldr r1, [r4]
movs r0, 0x1A
str r0, [r1, 0xC]
movs r0, 0
bl sub_8019E04
ldr r1, _08019338
ldr r2, [r4]
ldr r3, [r2]
movs r0, 0x5C
muls r0, r3
adds r1, 0x1C
adds r0, r1
ldr r0, [r0]
adds r2, 0xE4
ldr r2, [r2]
b _08019454
.align 2, 0
_08019338: .4byte gKecleonShopDialogue
_0801933C:
ldr r1, [r4]
movs r0, 0x1B
str r0, [r1, 0xC]
movs r0, 0
bl sub_8019E04
ldr r1, _08019360
ldr r2, [r4]
ldr r3, [r2]
movs r0, 0x5C
muls r0, r3
adds r1, 0x20
adds r0, r1
ldr r0, [r0]
adds r2, 0xE4
ldr r2, [r2]
b _08019454
.align 2, 0
_08019360: .4byte gKecleonShopDialogue
_08019364:
movs r0, 0x4
movs r1, 0x3
movs r2, 0
movs r3, 0xA
bl sub_801A5D8
b _08019378
_08019372:
movs r0, 0x1
bl sub_801A8D0
_08019378:
movs r0, 0x1
bl DrawTeamMoneyBox
b _080194E8
_08019380:
bl sub_801A9E0
movs r0, 0x1
bl DrawTeamMoneyBox
bl sub_8019660
ldr r0, _080193B0
ldr r2, [r0]
adds r0, r2, 0
adds r0, 0x84
adds r1, r2, 0
adds r1, 0x34
adds r3, r2, 0
adds r3, 0x74
ldr r2, [r2, 0x2C]
_080193A0:
str r2, [sp]
movs r2, 0x2
str r2, [sp, 0x4]
movs r2, 0
bl sub_8012D60
b _080194E8
.align 2, 0
_080193B0: .4byte gUnknown_203B210
_080193B4:
bl sub_8019700
ldr r0, _080193E4
ldr r4, _080193E8
ldr r1, [r4]
adds r1, 0x1C
movs r2, 0
bl sub_8090E14
ldr r1, _080193EC
ldr r0, [r4]
ldr r0, [r0, 0x10]
str r0, [r1]
movs r0, 0
bl sub_8019E04
ldr r1, _080193F0
ldr r4, [r4]
ldr r2, [r4]
movs r0, 0x5C
muls r0, r2
adds r1, 0x24
b _0801948C
.align 2, 0
_080193E4: .4byte gUnknown_202DE58
_080193E8: .4byte gUnknown_203B210
_080193EC: .4byte gUnknown_202DE30
_080193F0: .4byte gKecleonShopDialogue
_080193F4:
ldr r0, [r4]
adds r0, 0x1C
bl sub_801B3C0
b _080194E8
_080193FE:
bl GetNumberOfFilledInventorySlots
cmp r0, 0
beq _08019418
ldr r0, _08019424
ldr r0, [r0]
movs r1, 0x98
lsls r1, 2
adds r0, r1
ldr r1, [r0]
ldr r0, _08019428
cmp r1, r0
ble _08019430
_08019418:
bl sub_801A928
ldr r0, _0801942C
ldr r1, [r0]
movs r0, 0x1
b _08019436
.align 2, 0
_08019424: .4byte gTeamInventory_203B460
_08019428: .4byte 0x0001869e
_0801942C: .4byte gUnknown_203B210
_08019430:
ldr r0, _08019460
ldr r1, [r0]
movs r0, 0x18
_08019436:
str r0, [r1, 0xC]
movs r0, 0
bl sub_8019E04
ldr r2, _08019464
ldr r0, _08019460
ldr r1, [r0]
ldr r3, [r1]
movs r0, 0x5C
muls r0, r3
adds r2, 0x2C
_0801944C:
adds r0, r2
ldr r0, [r0]
adds r1, 0xE4
ldr r2, [r1]
_08019454:
ldr r3, _08019468
_08019456:
movs r1, 0
bl sub_80141B4
b _080194E8
.align 2, 0
_08019460: .4byte gUnknown_203B210
_08019464: .4byte gKecleonShopDialogue
_08019468: .4byte 0x0000010d
_0801946C:
bl sub_8019700
ldr r1, _080194B4
ldr r4, _080194B8
ldr r0, [r4]
ldr r0, [r0, 0x18]
str r0, [r1]
movs r0, 0
bl sub_8019E04
ldr r1, _080194BC
ldr r4, [r4]
ldr r2, [r4]
movs r0, 0x5C
muls r0, r2
adds r1, 0x28
_0801948C:
adds r0, r1
ldr r0, [r0]
adds r3, r4, 0
adds r3, 0x34
movs r2, 0
str r2, [sp]
movs r1, 0x4
str r1, [sp, 0x4]
str r2, [sp, 0x8]
adds r4, 0xE4
ldr r1, [r4]
str r1, [sp, 0xC]
movs r1, 0xC
str r1, [sp, 0x10]
movs r1, 0
movs r2, 0x5
bl sub_8014248
b _080194E8
.align 2, 0
_080194B4: .4byte gUnknown_202DE30
_080194B8: .4byte gUnknown_203B210
_080194BC: .4byte gKecleonShopDialogue
_080194C0:
ldr r1, [r4]
movs r0, 0x1
str r0, [r1, 0xC]
movs r0, 0
bl sub_8019E04
ldr r1, _080194F0
ldr r2, [r4]
ldr r3, [r2]
movs r0, 0x5C
muls r0, r3
adds r1, 0x2C
adds r0, r1
ldr r0, [r0]
adds r2, 0xE4
ldr r2, [r2]
ldr r3, _080194F4
movs r1, 0
bl sub_80141B4
_080194E8:
add sp, 0x14
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080194F0: .4byte gKecleonShopDialogue
_080194F4: .4byte 0x0000010d
thumb_func_end UpdateKecleonStoreDialogue
.align 2,0

View File

@@ -133,8 +133,8 @@ gUnknown_81161B8: @ 81161B8
gUnknown_81161C8: @ 81161C8
.byte 0x01, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.4byte sub_8016E40
.4byte sub_8016D54
.4byte DeleteKangaskhanStorage
.4byte KangaskhanStorageCallback
.global gUnknown_81161D8
gUnknown_81161D8: @ 81161D8
@@ -154,8 +154,8 @@ gUnknown_81161E8: @ 81161E8
gUnknown_81161F8: @ 81161F8
.byte 0x01, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00
.4byte sub_8018CF0
.4byte sub_8018C04
.4byte DeleteKecleonBros
.4byte KecleonBrosCallback
.global gUnknown_8116208
gUnknown_8116208: @ 8116208

View File

@@ -42,4 +42,6 @@ extern struct FelicityBankWork *gFelicityBankWork;
#define FELICITY_BANK_ACTION_WITHDRAW 0
#define FELICITY_BANK_ACTION_DEPOSIT 1
void DrawTeamMoneyBox(u32 param_1);
#endif

View File

@@ -1,22 +1,23 @@
#ifndef GUARD_KANGASKHAN_STORAGE_H
#define GUARD_KANGASKHAN_STORAGE_H
#include "text.h"
#include "menu.h"
#include "file_system.h"
#include "item.h"
#include "menu.h"
#include "text.h"
struct unkStruct_203B208
// size: 0x14C
struct KangaskhanStorageWork
{
// size: 0x14C
bool32 isAsleep;
u32 currState;
u32 fallbackState;
struct Item storedItem;
u32 itemIndex;
u8 id; // another id?
u32 menuAction1;
u32 menuAction2;
u32 menuAction3;
/* 0x0 */ bool32 isAsleep;
/* 0x4 */ u32 currState;
/* 0x8 */ u32 fallbackState;
/* 0xC */ struct Item storedItem;
/* 0x10 */ u32 itemIndex;
/* 0x14 */ u8 id; // another id?
/* 0x18 */ u32 menuAction1;
/* 0x1C */ u32 menuAction2;
/* 0x20 */ u32 menuAction3;
struct MenuItem unk24[5];
u16 unk4C[5];
struct MenuStruct unk58;
@@ -31,8 +32,8 @@ struct unkStruct_203B208
u32 unkC8;
u8 unkCC[0xD4 - 0xCC];
u32 unkD4;
struct OpenedFile *faceFile;
u8 *faceData;
/* 0xD8 */ struct OpenedFile *faceFile;
/* 0xDC */ u8 *faceData;
u16 unkE0;
u16 unkE2;
u8 unkE4;
@@ -43,16 +44,17 @@ struct unkStruct_203B208
struct UnkTextStruct2 unkEC[4];
};
// size: 0x150
struct unkStruct_203B20C
{
u32 state;
/* 0x0 */ u32 state;
u8 unk4[4];
struct Item item;
u32 itemIndex;
u8 id;
u32 menuAction1;
u32 menuAction2;
u32 menuAction3;
/* 0x8 */ struct Item item;
/* 0xC */ u32 itemIndex;
/* 0x10 */ u8 id;
/* 0x14 */ u32 menuAction1;
/* 0x18 */ u32 menuAction2;
/* 0x1C */ u32 menuAction3;
struct MenuItem unk20[8];
u16 unk60[8];
struct MenuStruct unk70;
@@ -69,7 +71,8 @@ struct unkStruct_203B20C
struct UnkTextStruct2 unkF0[4];
};
enum KangaskhanStorageStates {
enum KangaskhanStorageStates
{
KANGASKHAN_STORAGE_INIT = 0,
KANGASKHAN_STORAGE_MAIN_MENU = 1,
KANGASKHAN_STORAGE_EXIT = 4,
@@ -78,4 +81,8 @@ enum KangaskhanStorageStates {
KANGASKHAN_STORAGE_IS_MONEY_USED_TM = 9,
};
u32 CreateKangaskhanStorage(bool32 isAsleep);
void DeleteKangaskhanStorage(void);
u32 KangaskhanStorageCallback(void);
#endif

102
include/kecleon_bros.h Normal file
View File

@@ -0,0 +1,102 @@
#ifndef GUARD_KECLEON_BROS_H
#define GUARD_KECLEON_BROS_H
#include "file_system.h"
#include "item.h"
#include "menu.h"
#include "text.h"
// size: 0x148
struct KecleonBrosWork
{
/* 0x0 */ u32 mode; // Corresponds to the enum: KecleonBrosMode
/* 0x4 */ bool8 isKecleonItemShop; // FALSE indicates it is Kecleon TM Shop
/* 0x8 */ u32 currState;
/* 0xC */ u32 fallbackState;
/* 0x10 */ s32 itemSellPrice;
/* 0x14 */ u32 numInventoryItemToSell;
/* 0x18 */ s32 inventoryItemSellPrice;
/* 0x1C */ struct Item soldItem;
/* 0x20 */ u8 itemShopItemIndex;
/* 0x21 */ u8 wareShopItemIndex;
/* 0x24 */ u32 soldItemInventoryIndex;
/* 0x28 */ u32 menuAction1;
/* 0x2C */ u32 menuAction2;
/* 0x30 */ u32 menuAction3;
/* 0x34 */ struct MenuItem menuItems[8];
u16 unk74[8];
/* 0x84 */ struct MenuStruct menu;
/* 0xD4 */ struct OpenedFile *faceFile;
/* 0xD8 */ u8 *faceData;
u16 unkDC;
u16 unkDE;
u8 unkE0;
u8 unkE1;
u8 unkE2;
u8 unkE3;
struct OpenedFile **unkE4;
struct UnkTextStruct2 unkE8[4];
};
// size: 0xA0
struct unkStruct_203B214
{
/* 0x0 */ struct MenuInputStruct input;
u32 unk34;
struct UnkTextStruct2 *unk38;
struct UnkTextStruct2 unk3C[4];
u8 unk9C[4];
};
// size: 0xF4
struct unkStruct_203B224
{
u32 unk0;
u32 unk4[INVENTORY_SIZE];
/* 0x54 */ struct MenuInputStruct input;
u32 unk88;
struct UnkTextStruct2 *unk8C;
struct UnkTextStruct2 unk90[4];
u8 unkF0[4];
};
enum KecleonBrosMode
{
KECLEON_BROS_MODE_ITEMS_AWAKE,
KECLEON_BROS_MODE_ITEMS_ASLEEP,
KECLEON_BROS_MODE_WARES_AWAKE,
KECLEON_BROS_MODE_WARES_ASLEEP,
KECLEON_BROS_MODE_COUNT
};
enum KecleonStoreStates
{
KECLEON_STORE_INIT = 0,
KECLEON_STORE_MAIN_MENU = 1,
KECLEON_STORE_EXIT = 4,
KECLEON_STORE_NO_STORE_ITEMS = 5,
KECLEON_STORE_NO_MONEY = 6,
KECLEON_STORE_NO_ITEMS_TO_SELL = 9,
KECLEON_STORE_TOO_MANY_ITEMS = 10,
KECLEON_STORE_NOT_ENOUGH_MONEY = 12,
KECLEON_STORE_CANT_SELL_ITEM = 13,
};
// mode corresponds to the enum: KecleonBrosMode
u32 CreateKecleonBros(u32 mode);
void DeleteKecleonBros(void);
u32 KecleonBrosCallback(void);
bool32 sub_801A5D8(u32, s32, struct UnkTextStruct2_sub *, u32);
u32 sub_801A6E8(bool8);
s32 sub_801A8AC(void);
void sub_801A8D0(u8);
void sub_801A928(void);
void sub_801A9E0(void);
void sub_801AD34(u32);
bool8 sub_801ADA0(s32);
void sub_801AE84(void);
s32 sub_801AED0(s32);
s32 sub_801AEA8(void);
#endif // GUARD_KECLEON_BROS_H

View File

@@ -1,65 +0,0 @@
#ifndef GUARD_KECLEON_ITEMS_H
#define GUARD_KECLEON_ITEMS_H
#include "team_inventory.h"
#include "text.h"
#include "menu.h"
struct unkStruct_203B210
{
// size: 0x148
u32 unk0;
bool8 isKecleonItemShop; // FALSE indicates it is Kecleon TM Shop
u32 currState;
u32 fallbackState;
s32 itemSellPrice;
u32 numInventoryItemToSell;
s32 inventoryItemSellPrice;
struct Item soldItem;
u8 itemShopItemIndex;
u8 wareShopItemIndex;
u32 soldItemInventoryIndex;
u32 menuAction1;
u32 menuAction2;
u32 menuAction3;
struct MenuItem menuItems[8];
u16 unk74[8];
struct MenuStruct menu;
struct OpenedFile *faceFile;
u8 *faceData;
u16 unkDC;
u16 unkDE;
u8 unkE0;
u8 unkE1;
u8 unkE2;
u8 unkE3;
struct OpenedFile **unkE4;
struct UnkTextStruct2 unkE8[4];
};
struct unkStruct_203B224
{
// size: 0xF4
u32 unk0;
u32 unk4[INVENTORY_SIZE];
/* 0x54 */ struct MenuInputStruct input;
u32 unk88;
struct UnkTextStruct2 *unk8C;
struct UnkTextStruct2 unk90[4];
u8 unkF0[4];
};
enum KecleonStoreStates
{
KECLEON_STORE_INIT = 0,
KECLEON_STORE_MAIN_MENU = 1,
KECLEON_STORE_EXIT = 4,
KECLEON_STORE_NO_STORE_ITEMS = 5,
KECLEON_STORE_NO_MONEY = 6,
KECLEON_STORE_NO_ITEMS_TO_SELL = 9,
KECLEON_STORE_TOO_MANY_ITEMS = 10,
KECLEON_STORE_NOT_ENOUGH_MONEY = 12,
KECLEON_STORE_CANT_SELL_ITEM = 13
};
#endif // GUARD_KECLEON_ITEMS_H

View File

@@ -15,7 +15,7 @@ struct TeamInventory
/* 0x264 */ s32 teamSavings;
};
extern struct TeamInventory *gTeamInventory_203B460;
extern struct TeamInventory *gTeamInventoryRef;
#define MAX_TEAM_MONEY 99999
#define MAX_TEAM_SAVINGS 9999999

View File

@@ -31,7 +31,7 @@ struct UnkTextStruct2_sub
{
// I haven't found a func that reads these separately yet, but simply making an arr[2] will cause assignments to break.
// Some funcs only match with this union for some reason even though they don't access the variables separately...
// The first func to break is currently sub_801A5D8 in kecleon_items_1.c
// The first func to break is currently sub_801A5D8 in kecleon_bros.c
// The first func I matched that uses the array is sub_8006554 in text_1.c (using the separated fields doesn't match or get even close)
union {
struct {

View File

@@ -97,9 +97,7 @@ SECTIONS {
src/code_8012A18_1.o(.text);
src/felicity_bank.o(.text);
src/kangaskhan_storage.o(.text);
src/kecleon_items.o(.text);
asm/kecleon_items.o(.text);
src/kecleon_items_1.o(.text);
src/kecleon_bros.o(.text);
src/code_801AFA4.o(.text);
src/code_801B3C0.o(.text);
src/code_801C620.o(.text);

View File

@@ -63,7 +63,7 @@ u32 sub_801AFA4(u32 index)
{
gUnknown_203B22C = MemoryAlloc(sizeof(struct unkStruct_203B22C), 8);
gUnknown_203B22C->teamItemIndex = index;
gUnknown_203B22C->id = gTeamInventory_203B460->teamItems[index].id;
gUnknown_203B22C->id = gTeamInventoryRef->teamItems[index].id;
gUnknown_203B22C->moveID = GetItemMoveID(gUnknown_203B22C->id);
sub_8092C84(gUnknown_202E1C8, gUnknown_203B22C->moveID);
sub_8099690(0);
@@ -135,8 +135,8 @@ void sub_801B080(void)
sub_8094060(gUnknown_203B22C->moves, gUnknown_203B22C->pokeStruct->moves);
if(!IsHMItem(gUnknown_203B22C->id))
{
gTeamInventory_203B460->teamItems[gUnknown_203B22C->teamItemIndex].quantity = gUnknown_203B22C->id - 0x7D;
gTeamInventory_203B460->teamItems[gUnknown_203B22C->teamItemIndex].id = ITEM_TM_USED_TM;
gTeamInventoryRef->teamItems[gUnknown_203B22C->teamItemIndex].quantity = gUnknown_203B22C->id - 0x7D;
gTeamInventoryRef->teamItems[gUnknown_203B22C->teamItemIndex].id = ITEM_TM_USED_TM;
}
PlaySound(0x9C << 1);
// {CENTER_ALIGN}CM{ARG_POKEMON_8}{END_COLOR_TEXT_1} learned

View File

@@ -9,6 +9,7 @@
#include "team_inventory.h"
#include "menu_input.h"
#include "subStruct_203B240.h"
#include "kecleon_bros.h"
// based off of 203B240..
struct unkStruct_203B230
@@ -72,12 +73,8 @@ 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;
@@ -93,11 +90,6 @@ extern void PlayMenuSoundEffect(u32);
extern void sub_8013F84(void);
extern s32 sub_80913E0(struct Item *, u32, struct subStruct_203B240 **);
extern void sub_80141B4(u8 *, u32, u32 *, u32);
extern void sub_801BB20(void);
extern void sub_801A8D0(u32);
extern void sub_801A9E0(void);
extern void sub_801BC24(void);
extern void sub_801A5D8(u32, u32, u32, u32);
extern void sub_8014248(const char *, u32, u32, struct MenuItem *, u32, u32, u32, u32, u32);
extern void sub_80140B4(struct UnkTextStruct2 *);
extern void sub_801B46C(u32);
@@ -116,9 +108,11 @@ extern void sub_800199C(u32, u32, u32, u32);
extern void PlaySound(u32);
extern s32 sub_808D544(u32);
void sub_801B51C();
void sub_801B590();
void sub_801B480();
void sub_801B480(void);
void sub_801B51C(void);
void sub_801B590(void);
void sub_801BB20(void);
void sub_801BC24(void);
u32 sub_801B3C0(struct Item *item)
@@ -407,14 +401,14 @@ void sub_801B874(void)
{
if(IsNotMoneyOrUsedTMItem(gUnknown_203B234->unk10.id))
{
if((gTeamInventory_203B460->teamStorage[gUnknown_203B234->unk10.id] + gUnknown_203B234->unkC) > 0x3e7)
if((gTeamInventoryRef->teamStorage[gUnknown_203B234->unk10.id] + gUnknown_203B234->unkC) > 0x3e7)
{
store:
gUnknown_203B234->fallbackState = 6;
}
else
{
gTeamInventory_203B460->teamStorage[gUnknown_203B234->unk10.id] += gUnknown_203B234->unkC;
gTeamInventoryRef->teamStorage[gUnknown_203B234->unk10.id] += gUnknown_203B234->unkC;
PlaySound(0xCB);
gUnknown_203B234->fallbackState = 5;
}
@@ -611,20 +605,20 @@ void sub_801BC94(void)
void sub_801BCCC(void)
{
switch(sub_801A6E8(1))
switch(sub_801A6E8(TRUE))
{
case 0:
case 1:
break;
case 3:
gUnknown_203B234->unk24 = sub_801A8AC();
gUnknown_203B234->unk20 = gTeamInventory_203B460->teamItems[gUnknown_203B234->unk24];
gUnknown_203B234->unk20 = gTeamInventoryRef->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];
gUnknown_203B234->unk20 = gTeamInventoryRef->teamItems[gUnknown_203B234->unk24];
sub_8090E14(gUnknown_202DEA8, &gUnknown_203B234->unk20, &gUnknown_203B234->unk14);
sub_8099690(0);
sub_801B748(0xB);
@@ -641,7 +635,7 @@ void sub_801BD80(void)
s32 menuAction;
menuAction = 0;
sub_801A6E8(0);
sub_801A6E8(FALSE);
if (!sub_8012FD8(&gUnknown_203B234->unk28)) {
sub_8013114(&gUnknown_203B234->unk28,&menuAction);
if (menuAction != 1) gUnknown_203B234->menuAction = menuAction;
@@ -676,7 +670,7 @@ void sub_801BE30(void)
s32 menuAction;
menuAction = 0;
sub_801A6E8(0);
sub_801A6E8(FALSE);
sub_8012FD8(&gUnknown_203B234->unk28);
if (!sub_8012FD8(&gUnknown_203B234->unk78)) {
sub_8013114(&gUnknown_203B234->unk78,&menuAction);

View File

@@ -139,19 +139,16 @@ extern char gUnknown_80DBE30[]; // {ARG_POKEMON_0}
extern u8 gUnknown_80DBDC8[];
extern u8 *gUnknown_80D4970[];
void sub_8007B7C(s32, s32, s32, s32, s32);
extern bool8 sub_801CF14(s32);
extern void sub_8007B7C(s32, s32, s32, s32, s32);
extern u32 sub_801CE58(void);
extern void sub_801CC38(void);
extern void sub_801CCD8(void);
extern void sub_801CF94(void);
extern void ResetSprites(u32);
extern void sub_80140B4(struct UnkTextStruct2 *);
extern void sub_8008C54(u32);
extern void sub_80073B8(u32);
extern void sub_80073E0(u32);
extern u32 sub_8097DF0(char *, struct subStruct_203B240 **);
extern void sub_8013F84();
extern void sub_8013F84(void);
extern void PlayMenuSoundEffect(u32);
extern char * GetIQSkillDescription(u8 r0);
extern s32 GetNumAvailableIQSkills(u8 *param_1, s32 pokeIQ);
@@ -167,9 +164,12 @@ extern void sub_801C6B4(void);
void sub_801BFB4(s32);
void sub_801C6D0(s32);
void sub_801C7D4();
void sub_801C6E4();
void sub_801C848();
void sub_801C7D4(void);
void sub_801C6E4(void);
void sub_801C848(void);
void sub_801CCD8(void);
bool8 sub_801CF14(s32);
void sub_801CF94(void);
u32 sub_801C308(u8);
extern void PlaySound(u32);
@@ -184,15 +184,15 @@ void sub_801C3B0(u8);
void sub_801BFCC(void);
void sub_801C03C(void);
void sub_801C118();
void sub_801C1A0();
void sub_801C228();
void sub_801C118(void);
void sub_801C1A0(void);
void sub_801C228(void);
u8 sub_801CB24(void);
extern u8 sub_801CB24();
extern u32 sub_801CFE0(u8);
extern s32 sub_801CFB8(void);
extern void sub_801D220();
extern void sub_801D3A8();
u32 sub_801CFE0(u8);
s32 sub_801CFB8(void);
extern void sub_801D220(void);
extern void sub_801D3A8(void);
bool8 sub_801BEEC(s16 species)
@@ -968,7 +968,7 @@ void sub_801CCD8(void)
xxx_call_draw_string(8,y,buffer,gUnknown_203B244->unk4E8,0);
y2 = sub_8013800(&gUnknown_203B244->input,index);
sub_8012BC4((gUnknown_203B244->unk4EC->unkC << 3) - 2,y2,
gTeamInventory_203B460->teamStorage[uVar3],3,5,gUnknown_203B244->unk4E8);
gTeamInventoryRef->teamStorage[uVar3],3,5,gUnknown_203B244->unk4E8);
if ((sub_801CFE0(uVar3) & 1) != 0) {
sub_8007B7C(gUnknown_203B244->unk4E8,0x8,sub_8013800(&gUnknown_203B244->input,index), (gUnknown_203B244->unk4EC->unkC + -1) * '\b',10);
}
@@ -989,7 +989,7 @@ u32 sub_801CE58(void)
for(itemIndex = 1; itemIndex < NUMBER_OF_ITEM_IDS; itemIndex++)
{
if ((gUnknown_203B244->unk0 == 2) ||
((gTeamInventory_203B460->teamStorage[itemIndex] != 0) && (IsNotMoneyOrUsedTMItem(itemIndex)))) {
((gTeamInventoryRef->teamStorage[itemIndex] != 0) && (IsNotMoneyOrUsedTMItem(itemIndex)))) {
gUnknown_203B244->itemIDs[itemCount] = itemIndex;
itemCount++;
}
@@ -1017,7 +1017,7 @@ bool8 sub_801CF14(s32 param_1) {
else {
for(itemID = ITEM_STICK; itemID < NUMBER_OF_ITEM_IDS; itemID++)
{
if ((gTeamInventory_203B460->teamStorage[itemID] != 0) && (IsNotMoneyOrUsedTMItem(itemID))) return FALSE;
if ((gTeamInventoryRef->teamStorage[itemID] != 0) && (IsNotMoneyOrUsedTMItem(itemID))) return FALSE;
}
return TRUE;
}
@@ -1031,7 +1031,7 @@ bool8 sub_801CF50(s32 param_1) {
else {
for(itemID = ITEM_STICK; itemID < NUMBER_OF_ITEM_IDS; itemID++)
{
if ((IsNotMoneyOrUsedTMItem(itemID)) && (gTeamInventory_203B460->teamStorage[itemID] < 999)) return FALSE;
if ((IsNotMoneyOrUsedTMItem(itemID)) && (gTeamInventoryRef->teamStorage[itemID] < 999)) return FALSE;
}
return TRUE;
}

View File

@@ -481,7 +481,7 @@ void sub_801D894(void)
rank = GetRescueTeamRank();
sprintfStatic(buffer, r5, GetTeamRankString(rank), GetTeamRankPts());
xxx_call_draw_string(32, 4, buffer, 2, 0);
sprintfStatic(buffer, gUnknown_80DBF4C, gTeamInventory_203B460->teamMoney);
sprintfStatic(buffer, gUnknown_80DBF4C, gTeamInventoryRef->teamMoney);
xxx_call_draw_string(32, 18, buffer, 2, 0);
sub_80073E0(2);
}

View File

@@ -75,7 +75,7 @@ u32 sub_8021274(u8 param_1)
PlayMenuSoundEffect(1);
return 2;
case INPUT_A_BUTTON:
if ((gUnknown_203B280->unk3C == 2) && (GetFriendAreaPrice(sub_802132C()) > gTeamInventory_203B460->teamMoney))
if ((gUnknown_203B280->unk3C == 2) && (GetFriendAreaPrice(sub_802132C()) > gTeamInventoryRef->teamMoney))
{
PlayMenuSoundEffect(2);
}

View File

@@ -14,6 +14,7 @@
#include "code_8023144.h"
#include "code_800D090.h"
#include "friend_area.h"
#include "kecleon_bros.h"
struct unkStruct_3001B5C
{
@@ -68,11 +69,8 @@ extern void sub_801B450(void);
void GetGummiItemStatBoost(struct PokemonStruct* pokemon, u8 id, bool8 checkBoostFlags, struct Gummi* gummi);
extern u32 sub_801A6E8(u32);
extern void sub_8099690(u32);
extern void sub_801A928(void);
s32 GetNumAvailableIQSkills(u8 *iqSkillBuffer, s32 pokeIQ);
extern u32 sub_801A8AC(void);
void sub_8022D2C(void) {
s32 index;
@@ -126,16 +124,16 @@ void sub_8022D2C(void) {
void sub_8022E78(void)
{
switch(sub_801A6E8(1))
switch(sub_801A6E8(TRUE))
{
case 3:
gUnknown_203B294->itemIndex = sub_801A8AC();
gUnknown_203B294->item = gTeamInventory_203B460->teamItems[gUnknown_203B294->itemIndex];
gUnknown_203B294->item = gTeamInventoryRef->teamItems[gUnknown_203B294->itemIndex];
sub_8022924(2);
break;
case 4:
gUnknown_203B294->itemIndex = sub_801A8AC();
gUnknown_203B294->item = gTeamInventory_203B460->teamItems[gUnknown_203B294->itemIndex];
gUnknown_203B294->item = gTeamInventoryRef->teamItems[gUnknown_203B294->itemIndex];
sub_8099690(0);
sub_8022924(4);
break;
@@ -151,7 +149,7 @@ void sub_8022EF4(void)
s32 boostAmount;
menuAction = 0;
sub_801A6E8(0);
sub_801A6E8(FALSE);
if (sub_8012FD8(&gUnknown_203B294->unk54) == 0) {
sub_8013114(&gUnknown_203B294->unk54,&menuAction);
if(menuAction != 1) gUnknown_203B294->menuAction = menuAction;
@@ -172,7 +170,7 @@ void sub_8022EF4(void)
gUnknown_203B294->unk40 = 1;
boostAmount = gUnknown_203B294->gummi.boostAmount;
sub_8090E14(gUnknown_202DE58, &gTeamInventory_203B460->teamItems[gUnknown_203B294->itemIndex], NULL);
sub_8090E14(gUnknown_202DE58, &gTeamInventoryRef->teamItems[gUnknown_203B294->itemIndex], NULL);
if(boostAmount != -1)
ShiftItemsDownFrom(gUnknown_203B294->itemIndex);
@@ -219,7 +217,7 @@ void sub_8023068(void)
s32 menuAction;
menuAction = 0;
sub_801A6E8(0);
sub_801A6E8(FALSE);
sub_8012FD8(&gUnknown_203B294->unk54);
if (sub_8012FD8(&gUnknown_203B294->unkA4) == 0) {
sub_8013114(&gUnknown_203B294->unkA4,&menuAction);

View File

@@ -287,7 +287,7 @@ void sub_8096AF8(struct unkStruct_8096AF8 *param_1, u8 slotIndex,u8 dungeon)
if (jobSlot->mailType == MAIL_TYPE_TAKEN_JOB) {
for(index = 0; index < INVENTORY_SIZE; index++)
{
item = &gTeamInventory_203B460->teamItems[index];
item = &gTeamInventoryRef->teamItems[index];
if (((item->flags & ITEM_FLAG_EXISTS)) && (item->id == jobSlot->targetItem)) {
param_1->unk0 = TRUE;
}

View File

@@ -232,7 +232,7 @@ void sub_803A5A0(void)
gUnknown_203B3F0->unkAC = 3;
gUnknown_203B3F0->unkA4 = 0;
gUnknown_203B3F0->unkA8 = 0x3e7;
gUnknown_203B3F0->unkA0 = gTeamInventory_203B460->teamStorage[gUnknown_203B3F0->id];
gUnknown_203B3F0->unkA0 = gTeamInventoryRef->teamStorage[gUnknown_203B3F0->id];
gUnknown_203B3F0->unkB0 = 1;
gUnknown_203B3F0->unkB4 = &gUnknown_203B3F0->unkD8[1];
gUnknown_203B3F0->unkB8 = 0x2C;
@@ -331,7 +331,7 @@ void sub_803A810(void)
switch(sub_8013BBC(&gUnknown_203B3F0->unk9C))
{
case 3:
gTeamInventory_203B460->teamStorage[gUnknown_203B3F0->id] = gUnknown_203B3F0->unk9C;
gTeamInventoryRef->teamStorage[gUnknown_203B3F0->id] = gUnknown_203B3F0->unk9C;
// Fallthrough needed to match
case 2:
sub_803A504(1);

View File

@@ -38,7 +38,7 @@ extern s32 gNumPotentialTargets;
extern u32 gPotentialItemTargetWeights[NUM_DIRECTIONS];
extern u32 gPotentialItemTargetDirections[NUM_DIRECTIONS];
extern bool8 gTargetAhead[NUM_DIRECTIONS];
extern struct TeamInventory *gTeamInventory_203B460;
extern struct TeamInventory *gTeamInventoryRef;
void sub_807360C(struct Entity *pokemon)
{
@@ -176,7 +176,7 @@ void DecideUseItem(struct Entity *pokemon)
}
else if (pokemonInfo->isTeamLeader)
{
item = &gTeamInventory_203B460->teamItems[toolboxIndex - 2];
item = &gTeamInventoryRef->teamItems[toolboxIndex - 2];
selectedToolboxIndex = toolboxIndex - 1;
}
else

View File

@@ -111,7 +111,7 @@ void MusicBoxCreation(void)
indexes[1] = -1;
indexes[2] = -1;
for(iVar4 = 0, pbVar3 = &gTeamInventory_203B460->teamItems[iVar4]; iVar4 < 20; pbVar3++, iVar4++)
for(iVar4 = 0, pbVar3 = &gTeamInventoryRef->teamItems[iVar4]; iVar4 < 20; pbVar3++, iVar4++)
{
if (pbVar3->flags & ITEM_FLAG_EXISTS) {
if (pbVar3->id == ITEM_ROCK_PART) {
@@ -136,23 +136,23 @@ void MusicBoxCreation(void)
createMusicBox = TRUE;
// clear out each of the parts
pbVar4 = &gTeamInventory_203B460->teamItems[indexes[0]];
pbVar4 = &gTeamInventoryRef->teamItems[indexes[0]];
pbVar4->id = 0;
pbVar4->quantity = 0;
pbVar4->flags = 0;
pbVar5 = &gTeamInventory_203B460->teamItems[indexes[1]];
pbVar5 = &gTeamInventoryRef->teamItems[indexes[1]];
pbVar5->id = 0;
pbVar5->quantity = 0;
pbVar5->flags = 0;
pbVar5 = &gTeamInventory_203B460->teamItems[indexes[2]];
pbVar5 = &gTeamInventoryRef->teamItems[indexes[2]];
pbVar5->id = 0;
pbVar5->quantity = 0;
pbVar5->flags = 0;
// init the music box
xxx_init_itemslot_8090A8C(&gTeamInventory_203B460->teamItems[indexes[0]], ITEM_MUSIC_BOX, 0);
xxx_init_itemslot_8090A8C(&gTeamInventoryRef->teamItems[indexes[0]], ITEM_MUSIC_BOX, 0);
}
} while (musicBoxOnce);
@@ -342,7 +342,7 @@ void MusicBoxCreation(void)
"\tpop {r0}\n"
"\tbx r0\n"
"\t.align 2, 0\n"
"_08046EDC: .4byte gTeamInventory_203B460\n"
"_08046EDC: .4byte gTeamInventoryRef\n"
"_08046EE0: .4byte sub_80861A8\n"
"_08046EE4: .4byte gDungeon\n"
"_08046EE8: .4byte 0x0001356c\n"
@@ -394,7 +394,7 @@ void sub_8046F84(s32 itemFlag)
for(index = 0; index < INVENTORY_SIZE; index++)
{
item = &gTeamInventory_203B460->teamItems[index];
item = &gTeamInventoryRef->teamItems[index];
if ((item->flags & ITEM_FLAG_EXISTS) && (item->flags & itemFlag)) {
item->id = 0;
item->quantity = 0;
@@ -427,7 +427,7 @@ void sub_804700C(void)
for(index = 0; index < INVENTORY_SIZE; index++)
{
item = &gTeamInventory_203B460->teamItems[index];
item = &gTeamInventoryRef->teamItems[index];
if ((item->flags & ITEM_FLAG_EXISTS)) {
xxx_init_itemslot_8090A8C(item, ITEM_PLAIN_SEED, 0);
}
@@ -456,7 +456,7 @@ bool8 sub_8047084(s32 itemFlag)
// NEED THIS ORDERING TO MATCH
index = 0;
item = &gTeamInventory_203B460->teamItems[index];
item = &gTeamInventoryRef->teamItems[index];
for(index = 0; index < INVENTORY_SIZE; item++, index++)
{
@@ -487,7 +487,7 @@ void sub_8047104(void)
for(index = 0; index < INVENTORY_SIZE; index++)
{
item = &gTeamInventory_203B460->teamItems[index];
item = &gTeamInventoryRef->teamItems[index];
if (item->flags & ITEM_FLAG_EXISTS)
{
if(item->id == ITEM_POKE)

View File

@@ -252,7 +252,7 @@ void sub_8001D88(void)
}
if (auStack8 > 0x11) {
sub_80973A8(0x25,1);
if (((FindItemInInventory(ITEM_HM_DIVE) != -1) || (gTeamInventory_203B460->teamStorage[ITEM_HM_DIVE] != 0)) ||
if (((FindItemInInventory(ITEM_HM_DIVE) != -1) || (gTeamInventoryRef->teamStorage[ITEM_HM_DIVE] != 0)) ||
(sub_8001D44(5,0x21,3) != 0)) {
sub_80973A8(0x22,1);
}
@@ -278,7 +278,7 @@ void sub_8001D88(void)
if (sub_8001D08(5,0,0)) {
ScenarioCalc(5,0x21,1);
}
if ((FindItemInInventory(ITEM_HM_SURF) != -1) || (gTeamInventory_203B460->teamStorage[ITEM_HM_SURF] != 0)) {
if ((FindItemInInventory(ITEM_HM_SURF) != -1) || (gTeamInventoryRef->teamStorage[ITEM_HM_SURF] != 0)) {
if (sub_8001D08(7,0,0)) {
ScenarioCalc(7,0x26,1);
}

View File

@@ -175,11 +175,11 @@ void UpdateFelicityBankDialogue(void)
case 0x1:
CreateFelicityBankShopMenu();
gFelicityBankWork->fallbackState = 2;
if (gTeamInventory_203B460->teamSavings == 0)
if (gTeamInventoryRef->teamSavings == 0)
sub_8014248(gFelicityDialogue[gFelicityBankWork->isAsleep][1], 0, gFelicityBankWork->menuAction,
gFelicityBankWork->unk14, gFelicityBankWork->unk54, 4, 0, gFelicityBankWork->unkA4, 0xC);
else {
gUnknown_202DE30 = gTeamInventory_203B460->teamSavings;
gUnknown_202DE30 = gTeamInventoryRef->teamSavings;
sub_8014248(gFelicityDialogue[gFelicityBankWork->isAsleep][2], 0, gFelicityBankWork->menuAction,
gFelicityBankWork->unk14, gFelicityBankWork->unk54, 4, 0, gFelicityBankWork->unkA4, 0xC);
}
@@ -190,10 +190,10 @@ void UpdateFelicityBankDialogue(void)
break;
case 0x4:
gFelicityBankWork->fallbackState = 6;
if (gTeamInventory_203B460->teamSavings == 0)
if (gTeamInventoryRef->teamSavings == 0)
sub_80141B4(gFelicityDialogue[gFelicityBankWork->isAsleep][4], 0, gFelicityBankWork->unkA4, 0x10D);
else {
gUnknown_202DE30 = gTeamInventory_203B460->teamSavings;
gUnknown_202DE30 = gTeamInventoryRef->teamSavings;
sub_80141B4(gFelicityDialogue[gFelicityBankWork->isAsleep][5], 0, gFelicityBankWork->unkA4, 0x10D);
}
break;
@@ -202,11 +202,11 @@ void UpdateFelicityBankDialogue(void)
sub_80141B4(gFelicityDialogue[gFelicityBankWork->isAsleep][3], 0, gFelicityBankWork->unkA4, 0x10D);
break;
case 0x7:
if (gTeamInventory_203B460->teamMoney == 0) {
if (gTeamInventoryRef->teamMoney == 0) {
gFelicityBankWork->fallbackState = 1;
sub_80141B4(gFelicityDialogue[gFelicityBankWork->isAsleep][7], 0, gFelicityBankWork->unkA4, 0x10D);
}
else if (gTeamInventory_203B460->teamSavings >= MAX_TEAM_SAVINGS) {
else if (gTeamInventoryRef->teamSavings >= MAX_TEAM_SAVINGS) {
gFelicityBankWork->fallbackState = 1;
sub_80141B4(gFelicityDialogue[gFelicityBankWork->isAsleep][8], 0, gFelicityBankWork->unkA4, 0x10D);
}
@@ -216,9 +216,9 @@ void UpdateFelicityBankDialogue(void)
}
break;
case 0x8:
gFelicityBankWork->maximumDepositWithdraw = MAX_TEAM_SAVINGS - gTeamInventory_203B460->teamSavings;
if (gFelicityBankWork->maximumDepositWithdraw > gTeamInventory_203B460->teamMoney)
gFelicityBankWork->maximumDepositWithdraw = gTeamInventory_203B460->teamMoney;
gFelicityBankWork->maximumDepositWithdraw = MAX_TEAM_SAVINGS - gTeamInventoryRef->teamSavings;
if (gFelicityBankWork->maximumDepositWithdraw > gTeamInventoryRef->teamMoney)
gFelicityBankWork->maximumDepositWithdraw = gTeamInventoryRef->teamMoney;
gFelicityBankWork->unk68 = gFelicityBankWork->maximumDepositWithdraw;
gFelicityBankWork->unk6C = 1;
gFelicityBankWork->unk74 = 5;
@@ -236,24 +236,24 @@ void UpdateFelicityBankDialogue(void)
sub_80141B4(gFelicityDialogue[gFelicityBankWork->isAsleep][9], 0, gFelicityBankWork->unkA4, 0x10D);
break;
case 0xA:
if (gTeamInventory_203B460->teamMoney >= MAX_TEAM_MONEY) {
if (gTeamInventoryRef->teamMoney >= MAX_TEAM_MONEY) {
gFelicityBankWork->fallbackState = 1;
sub_80141B4(gFelicityDialogue[gFelicityBankWork->isAsleep][12], 0, gFelicityBankWork->unkA4, 0x10D);
}
else if (gTeamInventory_203B460->teamSavings == 0) {
else if (gTeamInventoryRef->teamSavings == 0) {
gFelicityBankWork->fallbackState = 1;
sub_80141B4(gFelicityDialogue[gFelicityBankWork->isAsleep][11], 0, gFelicityBankWork->unkA4, 0x10D);
}
else {
gFelicityBankWork->fallbackState = 11;
gUnknown_202DE30 = gTeamInventory_203B460->teamSavings;
gUnknown_202DE30 = gTeamInventoryRef->teamSavings;
sub_80141B4(gFelicityDialogue[gFelicityBankWork->isAsleep][10], 0, gFelicityBankWork->unkA4, 0x10D);
}
break;
case 0xB:
gFelicityBankWork->maximumDepositWithdraw = MAX_TEAM_MONEY - gTeamInventory_203B460->teamMoney;
if (gFelicityBankWork->maximumDepositWithdraw > gTeamInventory_203B460->teamSavings)
gFelicityBankWork->maximumDepositWithdraw = gTeamInventory_203B460->teamSavings;
gFelicityBankWork->maximumDepositWithdraw = MAX_TEAM_MONEY - gTeamInventoryRef->teamMoney;
if (gFelicityBankWork->maximumDepositWithdraw > gTeamInventoryRef->teamSavings)
gFelicityBankWork->maximumDepositWithdraw = gTeamInventoryRef->teamSavings;
gFelicityBankWork->unk68 = gFelicityBankWork->maximumDepositWithdraw;
gFelicityBankWork->unk6C = 1;
gFelicityBankWork->unk74 = 5;
@@ -343,8 +343,8 @@ void Felicity_DepositMoney(void)
break;
case 3:
gFelicityBankWork->chosenAmount = gFelicityBankWork->unk64;
gTeamInventory_203B460->teamSavings += gFelicityBankWork->chosenAmount;
gTeamInventory_203B460->teamMoney -= gFelicityBankWork->chosenAmount;
gTeamInventoryRef->teamSavings += gFelicityBankWork->chosenAmount;
gTeamInventoryRef->teamMoney -= gFelicityBankWork->chosenAmount;
PlaySound(0x14c);
UpdateFelicityBankState(9);
break;
@@ -364,8 +364,8 @@ void Felicity_WithdrawMoney(void)
break;
case 3:
gFelicityBankWork->chosenAmount = gFelicityBankWork->unk64;
gTeamInventory_203B460->teamMoney += gFelicityBankWork->chosenAmount;
gTeamInventory_203B460->teamSavings -= gFelicityBankWork->chosenAmount;
gTeamInventoryRef->teamMoney += gFelicityBankWork->chosenAmount;
gTeamInventoryRef->teamSavings -= gFelicityBankWork->chosenAmount;
PlaySound(0x14c);
UpdateFelicityBankState(0xc);
break;
@@ -410,9 +410,9 @@ void CreateFelicityMoneySavingsHeader(u32 param_1)
sub_8008C54(param_1);
sub_80073B8(param_1);
xxx_call_draw_string(16, 4, gFelicityMoney, param_1, 0);
sub_8012BC4(96, 4, gTeamInventory_203B460->teamMoney, 5, 5, param_1);
sub_8012BC4(96, 4, gTeamInventoryRef->teamMoney, 5, 5, param_1);
xxx_call_draw_string(112, 4, gFelicitySavings, param_1, 0);
sub_8012BC4(200, 4, gTeamInventory_203B460->teamSavings, 7, 5, param_1);
sub_8012BC4(200, 4, gTeamInventoryRef->teamSavings, 7, 5, param_1);
sub_80073E0(param_1);
}
@@ -421,6 +421,6 @@ void DrawTeamMoneyBox(u32 param_1)
sub_8008C54(param_1);
sub_80073B8(param_1);
xxx_call_draw_string(6, 0, &gUnknown_80DB738, param_1, 0); // Money
sub_8012BC4(42, 12, gTeamInventory_203B460->teamMoney, 5, 5, param_1);
sub_8012BC4(42, 12, gTeamInventoryRef->teamMoney, 5, 5, param_1);
sub_80073E0(param_1);
}

View File

@@ -8,6 +8,7 @@
#include "team_inventory.h"
#include "friend_area_action_menu.h"
#include "menu_input.h"
#include "kecleon_bros.h"
extern struct unkStruct_203B2BC *gUnknown_203B2BC;
@@ -22,9 +23,6 @@ extern void sub_801BEEC(s16);
extern void GetLinkedSequence(u32, struct Move *, u16*);
extern void sub_801F808(u16*);
extern void sub_8027794();
extern void sub_801A5D8(u32, u32, u32, u32);
extern void sub_801A8D0(u32);
extern void sub_801A9E0();
extern void sub_801F1B0(u32, u32);
extern void sub_801B3C0(struct Item *);
extern void unk_CopyMoves4To8(struct Move *, struct Move *);

View File

@@ -9,9 +9,10 @@
#include "pokemon.h"
#include "friend_area_action_menu.h"
#include "menu_input.h"
#include "kecleon_bros.h"
extern struct unkStruct_203B2BC *gUnknown_203B2BC;
extern struct TeamInventory *gTeamInventory_203B460;
extern struct TeamInventory *gTeamInventoryRef;
extern u32 sub_801B410();
extern void sub_801B450();
@@ -21,10 +22,7 @@ extern void sub_801F214();
extern void SetFriendAreaActionMenuState(u32);
extern void PlaySound(u32);
extern void nullsub_104();
extern void sub_801A928();
extern void sub_8099690(u32);
extern u32 sub_801A8AC();
extern u32 sub_801A6E8(u32);
extern s32 sub_80144A4(s32 *);
extern void sub_8027EB8();
@@ -320,18 +318,18 @@ void sub_8027AE4(void)
void sub_8027B28(void)
{
switch(sub_801A6E8(1))
switch(sub_801A6E8(TRUE))
{
case 3:
gUnknown_203B2BC->id = sub_801A8AC();
gUnknown_203B2BC->itemToGive.id = gTeamInventory_203B460->teamItems[gUnknown_203B2BC->id].id;
gUnknown_203B2BC->itemToGive.quantity = gTeamInventory_203B460->teamItems[gUnknown_203B2BC->id].quantity;
gUnknown_203B2BC->itemToGive.id = gTeamInventoryRef->teamItems[gUnknown_203B2BC->id].id;
gUnknown_203B2BC->itemToGive.quantity = gTeamInventoryRef->teamItems[gUnknown_203B2BC->id].quantity;
SetFriendAreaActionMenuState(0xc);
break;
case 4:
gUnknown_203B2BC->id = sub_801A8AC();
gUnknown_203B2BC->itemToGive.id = gTeamInventory_203B460->teamItems[gUnknown_203B2BC->id].id;
gUnknown_203B2BC->itemToGive.quantity = gTeamInventory_203B460->teamItems[gUnknown_203B2BC->id].quantity;
gUnknown_203B2BC->itemToGive.id = gTeamInventoryRef->teamItems[gUnknown_203B2BC->id].id;
gUnknown_203B2BC->itemToGive.quantity = gTeamInventoryRef->teamItems[gUnknown_203B2BC->id].quantity;
sub_8099690(0);
SetFriendAreaActionMenuState(0xd);
break;
@@ -350,7 +348,7 @@ void sub_8027BD8(void)
s32 menuAction;
menuAction = 0;
sub_801A6E8(0);
sub_801A6E8(FALSE);
if ((sub_8012FD8(&gUnknown_203B2BC->unk7C) == 0) && (sub_8013114(&gUnknown_203B2BC->unk7C,&menuAction), menuAction != 1)) {
gUnknown_203B2BC->menuAction2 = menuAction;
}
@@ -518,10 +516,10 @@ bool8 sub_8027E4C(struct PokemonStruct *pokeStruct)
{
if(IsThrowableItem(pokeStruct->heldItem.id))
{
if(gTeamInventory_203B460->teamStorage[pokeStruct->heldItem.id] + pokeStruct->heldItem.quantity > 0x3e7)
if(gTeamInventoryRef->teamStorage[pokeStruct->heldItem.id] + pokeStruct->heldItem.quantity > 0x3e7)
return FALSE;
}
else if(gTeamInventory_203B460->teamStorage[pokeStruct->heldItem.id] > 0x3e6)
else if(gTeamInventoryRef->teamStorage[pokeStruct->heldItem.id] > 0x3e6)
{
return FALSE;
}
@@ -545,9 +543,9 @@ void sub_8027EB8(void)
case 2:
PlaySound(0x14d);
if(IsThrowableItem(gUnknown_203B2BC->item2.id))
gTeamInventory_203B460->teamStorage[gUnknown_203B2BC->item2.id] += gUnknown_203B2BC->item2.quantity;
gTeamInventoryRef->teamStorage[gUnknown_203B2BC->item2.id] += gUnknown_203B2BC->item2.quantity;
else
gTeamInventory_203B460->teamStorage[gUnknown_203B2BC->item2.id] += 1;
gTeamInventoryRef->teamStorage[gUnknown_203B2BC->item2.id] += 1;
gUnknown_203B2BC->item2.id = ITEM_NOTHING;
gUnknown_203B2BC->item2.quantity = 0;
GivePokemonItem(gUnknown_203B2BC->targetPoke, &gUnknown_203B2BC->item2);

View File

@@ -9,7 +9,7 @@
#include "moves.h"
#include "menu_input.h"
#include "team_inventory.h"
#include "kecleon_bros.h"
// there might be more overlap with unkStruct_203B2BC
// I was working on the moves and put the data that seemed to correspond to that
@@ -126,9 +126,6 @@ extern bool8 sub_8024108(u32);
extern u32 sub_801B3C0(struct Item *param_1);
extern void sub_8023868(u32, u32, u32, u32);
extern void sub_801F1B0(u32, u32);
extern void sub_801A5D8(u32,u32, u32, u32);
extern void sub_801A8D0(u32);
extern void sub_801A9E0(void);
extern void PlaySound(u32);
extern void sub_8024458(s16, u32);
extern void sub_801BEEC(s16);
@@ -149,10 +146,7 @@ extern void sub_801F214(void);
extern void sub_801EE10(u32, s16, struct Move *, u32, u32, u32);
extern void sub_801F808(u16 *);
extern u32 sub_801602C(u32 r0, u8 *name);
extern u32 sub_801A6E8(u32);
extern u32 sub_801A8AC(void);
extern void sub_8099690(u32);
extern void sub_801A928(void);
extern void sub_801F8D0(void);
extern u32 sub_801F890(void);
extern void sub_80160D8(void);
@@ -613,18 +607,18 @@ void sub_8025BE8(void)
void sub_8025C04(void)
{
switch(sub_801A6E8(1))
switch(sub_801A6E8(TRUE))
{
case 3:
gUnknown_203B2B4->itemIndex = sub_801A8AC();
gUnknown_203B2B4->item1.id = gTeamInventory_203B460->teamItems[gUnknown_203B2B4->itemIndex].id;
gUnknown_203B2B4->item1.quantity = gTeamInventory_203B460->teamItems[gUnknown_203B2B4->itemIndex].quantity;
gUnknown_203B2B4->item1.id = gTeamInventoryRef->teamItems[gUnknown_203B2B4->itemIndex].id;
gUnknown_203B2B4->item1.quantity = gTeamInventoryRef->teamItems[gUnknown_203B2B4->itemIndex].quantity;
sub_8025434(0xD);
break;
case 4:
gUnknown_203B2B4->itemIndex = sub_801A8AC();
gUnknown_203B2B4->item1.id = gTeamInventory_203B460->teamItems[gUnknown_203B2B4->itemIndex].id;
gUnknown_203B2B4->item1.quantity = gTeamInventory_203B460->teamItems[gUnknown_203B2B4->itemIndex].quantity;
gUnknown_203B2B4->item1.id = gTeamInventoryRef->teamItems[gUnknown_203B2B4->itemIndex].id;
gUnknown_203B2B4->item1.quantity = gTeamInventoryRef->teamItems[gUnknown_203B2B4->itemIndex].quantity;
sub_8099690(0);
sub_8025434(0xE);
break;
@@ -646,7 +640,7 @@ void sub_8025CB4(void)
struct Item item;
menuAction = 0;
sub_801A6E8(0);
sub_801A6E8(FALSE);
if ((!sub_8012FD8(&gUnknown_203B2B4->unk78)) && (sub_8013114(&gUnknown_203B2B4->unk78,&menuAction), menuAction != 1)) {
gUnknown_203B2B4->menuAction2 = menuAction;
}

View File

@@ -24,7 +24,7 @@ extern u32 sub_802F298();
extern char gUnknown_202E5D8[0x50];
extern char gAvailablePokemonNames[0x50];
extern struct TeamInventory *gTeamInventory_203B460;
extern struct TeamInventory *gTeamInventoryRef;
extern u8 gUnknown_80E44A4[];
extern u8 gUnknown_80E4500[];
@@ -2692,7 +2692,7 @@ void sub_8034F88(void)
mail = GetMailatIndex(gUnknown_203B33C->unk218);
if(gUnknown_203B33C->item.id != ITEM_NOTHING)
mail->item = gUnknown_203B33C->item;
gTeamInventory_203B460->teamStorage[gUnknown_203B33C->item.id]--;
gTeamInventoryRef->teamStorage[gUnknown_203B33C->item.id]--;
SetFriendRescueMenuState(0x75);
break;
case 7:

View File

@@ -10,6 +10,7 @@
#include "menu_input.h"
#include "gulpin_shop.h"
#include "moves.h"
#include "felicity_bank.h"
// size: 0x1E0
struct unkStruct_203B27C
@@ -90,7 +91,6 @@ 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);
extern void DrawTeamMoneyBox(u32);
void sub_8020950(void);
void sub_8020900(void);
bool8 sub_801F808(u16 *moveIDs);
@@ -243,7 +243,7 @@ u32 sub_801FC40(void)
break;
case 0xd:
if (gUnknown_203B27C->unk15 == TRUE) {
gTeamInventory_203B460->teamMoney -= 150;
gTeamInventoryRef->teamMoney -= 150;
}
return 3;
default:
@@ -1049,7 +1049,7 @@ void sub_8020EB4(void)
sub_801FDA8(0x1F);
break;
case 8:
if(gTeamInventory_203B460->teamMoney < 150)
if(gTeamInventoryRef->teamMoney < 150)
{
PlayMenuSoundEffect(2);
sub_801FDA8(0x3);

View File

@@ -35,8 +35,8 @@ extern u8 gInvalidItemIDs[0x10];
EWRAM_DATA struct OpenedFile *gItemParametersFile = {0};
EWRAM_DATA struct ItemDataEntry *gItemParametersData = {0};
EWRAM_DATA struct TeamInventory gUnknown_20389A8 = {0};
EWRAM_DATA_2 struct TeamInventory *gTeamInventory_203B460 = {0};
EWRAM_DATA struct TeamInventory gTeamInventory = {0};
EWRAM_DATA_2 struct TeamInventory *gTeamInventoryRef = {0};
extern s32 sub_8090FEC(s32 a1, u8* a2, u8 a3);
extern void sub_80073B8(u32);
@@ -50,14 +50,14 @@ bool8 AddKecleonWareItem(u8);
void LoadItemParameters(void)
{
gTeamInventory_203B460 = &gUnknown_20389A8;
gTeamInventoryRef = &gTeamInventory;
gItemParametersFile = OpenFileAndGetFileDataPtr(gItemParaFileName,&gSystemFileArchive);
gItemParametersData = (struct ItemDataEntry *) gItemParametersFile->data;
}
struct TeamInventory *GetMoneyItemsInfo(void)
{
return &gUnknown_20389A8;
return &gTeamInventory;
}
void InitializeMoneyItems(void)
@@ -66,20 +66,20 @@ void InitializeMoneyItems(void)
for(i = 0; i < INVENTORY_SIZE; i++)
{
gTeamInventory_203B460->teamItems[i].flags = 0;
gTeamInventoryRef->teamItems[i].flags = 0;
}
for(i = 0; i < STORAGE_SIZE; i++)
{
gTeamInventory_203B460->teamStorage[i] = 0;
gTeamInventoryRef->teamStorage[i] = 0;
}
for(i = 0; i < MAX_KECLEON_ITEM_SHOP_ITEMS; i++)
{
InitKecleonShopItem(i);
}
gTeamInventory_203B460->teamMoney = 0;
gTeamInventory_203B460->teamSavings = 0;
gTeamInventoryRef->teamMoney = 0;
gTeamInventoryRef->teamSavings = 0;
}
s32 GetNumberOfFilledInventorySlots(void)
@@ -90,7 +90,7 @@ s32 GetNumberOfFilledInventorySlots(void)
count = 0;
for(i = 0; i < INVENTORY_SIZE; i++)
{
if ((gTeamInventory_203B460->teamItems[i].flags & ITEM_FLAG_EXISTS) != 0) {
if ((gTeamInventoryRef->teamItems[i].flags & ITEM_FLAG_EXISTS) != 0) {
count++;
}
}
@@ -465,7 +465,7 @@ void FillInventoryGaps()
do {
while (slot_checking < INVENTORY_SIZE) {
if (slot_checking[gTeamInventory_203B460->teamItems].flags & ITEM_FLAG_EXISTS) {
if (slot_checking[gTeamInventoryRef->teamItems].flags & ITEM_FLAG_EXISTS) {
break;
}
// find next empty slot
@@ -478,7 +478,7 @@ void FillInventoryGaps()
if (slot_checking > last_filled) {
// shift it down
gTeamInventory_203B460->teamItems[last_filled] = gTeamInventory_203B460->teamItems[slot_checking];
gTeamInventoryRef->teamItems[last_filled] = gTeamInventoryRef->teamItems[slot_checking];
}
slot_checking++;
last_filled++;
@@ -488,12 +488,12 @@ void FillInventoryGaps()
for (; last_filled < INVENTORY_SIZE; last_filled++) {
struct Item *slot;
#ifdef NONMATCHING
slot = &gTeamInventory_203B460->teamItems[last_filled];
slot = &gTeamInventoryRef->teamItems[last_filled];
#else
size_t offs = last_filled << 2;
size_t _slot = offs;
_slot += (size_t)gTeamInventory_203B460->teamItems;
slot = (struct Item*)_slot; // &gTeamInventory_203B460->teamItems[end];
_slot += (size_t)gTeamInventoryRef->teamItems;
slot = (struct Item*)_slot; // &gTeamInventoryRef->teamItems[end];
#endif
slot->id = ITEM_NOTHING;
slot->quantity = 0;
@@ -505,7 +505,7 @@ s32 FindItemInInventory(u8 id)
{
s32 i;
for (i = 0; i < INVENTORY_SIZE; i++) {
if ((gTeamInventory_203B460->teamItems[i].flags & ITEM_FLAG_EXISTS) && (gTeamInventory_203B460->teamItems[i].id == id)) {
if ((gTeamInventoryRef->teamItems[i].flags & ITEM_FLAG_EXISTS) && (gTeamInventoryRef->teamItems[i].id == id)) {
return i;
}
}
@@ -518,7 +518,7 @@ s32 GetItemCountInInventory(u8 _id)
s32 count = 0;
s32 i;
for (i = 0; i < INVENTORY_SIZE; i++) {
if ((gTeamInventory_203B460->teamItems[i].unk0 & 1) && (gTeamInventory_203B460->teamItems[i].id == _id)) {
if ((gTeamInventoryRef->teamItems[i].unk0 & 1) && (gTeamInventoryRef->teamItems[i].id == _id)) {
count++;
}
}
@@ -527,7 +527,7 @@ s32 GetItemCountInInventory(u8 _id)
// have to do hacky stuff to fix initialization order of r6 and r2
u32 id = _id;
s32 count = 0;
struct Item *slot = gTeamInventory_203B460->teamItems;
struct Item *slot = gTeamInventoryRef->teamItems;
s32 one = 1;
s32 i = 19;
@@ -566,16 +566,16 @@ void ShiftItemsDownFrom(s32 start)
{
s32 i, j;
for (i = start, j = start + 1; i < INVENTORY_SIZE - 1; i++, j++) {
gTeamInventory_203B460->teamItems[i] = gTeamInventory_203B460->teamItems[j];
gTeamInventoryRef->teamItems[i] = gTeamInventoryRef->teamItems[j];
}
gTeamInventory_203B460->teamItems[INVENTORY_SIZE - 1].id = ITEM_NOTHING;
gTeamInventory_203B460->teamItems[INVENTORY_SIZE - 1].flags = 0;
gTeamInventoryRef->teamItems[INVENTORY_SIZE - 1].id = ITEM_NOTHING;
gTeamInventoryRef->teamItems[INVENTORY_SIZE - 1].flags = 0;
}
void ClearItemSlotAt(u32 index)
{
gTeamInventory_203B460->teamItems[index].id = ITEM_NOTHING;
gTeamInventory_203B460->teamItems[index].flags = 0;
gTeamInventoryRef->teamItems[index].id = ITEM_NOTHING;
gTeamInventoryRef->teamItems[index].flags = 0;
}
bool8 sub_809124C(u8 id, u8 param_3)
@@ -599,9 +599,9 @@ bool8 AddItemToInventory(const struct Item* slot)
// try to add item to inventory, return 1 if failed
for (i = 0; i < INVENTORY_SIZE; i++) {
UNUSED struct Item* current = &gTeamInventory_203B460->teamItems[i];
if (!(i[gTeamInventory_203B460->teamItems].flags & ITEM_FLAG_EXISTS)) {
gTeamInventory_203B460->teamItems[i] = *slot;
UNUSED struct Item* current = &gTeamInventoryRef->teamItems[i];
if (!(i[gTeamInventoryRef->teamItems].flags & ITEM_FLAG_EXISTS)) {
gTeamInventoryRef->teamItems[i] = *slot;
return FALSE;
}
}
@@ -613,10 +613,10 @@ void ConvertMoneyItemToMoney()
s32 i = 0;
do {
UNUSED struct TeamInventory * _gTeamInventory_203B460 = gTeamInventory_203B460;
UNUSED struct TeamInventory * _gTeamInventoryRef = gTeamInventoryRef;
UNUSED size_t offs = offsetof(struct TeamInventory, teamItems[i]);
struct Item* current_slot = &gTeamInventory_203B460->teamItems[i];
struct Item* current_slot = &gTeamInventoryRef->teamItems[i];
if ((current_slot->flags & ITEM_FLAG_EXISTS) && (current_slot->id == ITEM_POKE)) {
u32 result;
@@ -634,27 +634,27 @@ void ConvertMoneyItemToMoney()
s32 lowest_index = -1;
UNUSED size_t offs = offsetof(struct TeamInventory, teamItems[i]);
bool8 item_occupied = i[gTeamInventory_203B460->teamItems].flags & ITEM_FLAG_EXISTS;
bool8 item_occupied = i[gTeamInventoryRef->teamItems].flags & ITEM_FLAG_EXISTS;
s32 next = i + 1;
if (item_occupied) {
s32 lowest_order = GetItemOrder(gTeamInventory_203B460->teamItems[i].id);
s32 lowest_order = GetItemOrder(gTeamInventoryRef->teamItems[i].id);
s32 j;
// find next lowest
for (j = next; j < INVENTORY_SIZE; j++) {
UNUSED size_t offs = offsetof(struct TeamInventory, teamItems[j]);
if ((j[gTeamInventory_203B460->teamItems].flags & ITEM_FLAG_EXISTS) && (lowest_order > GetItemOrder(gTeamInventory_203B460->teamItems[j].id))) {
if ((j[gTeamInventoryRef->teamItems].flags & ITEM_FLAG_EXISTS) && (lowest_order > GetItemOrder(gTeamInventoryRef->teamItems[j].id))) {
lowest_index = j;
lowest_order = GetItemOrder(gTeamInventory_203B460->teamItems[j].id);
lowest_order = GetItemOrder(gTeamInventoryRef->teamItems[j].id);
}
}
if (lowest_index >= 0) {
// swap the slots
struct Item current = gTeamInventory_203B460->teamItems[i];
gTeamInventory_203B460->teamItems[i] = gTeamInventory_203B460->teamItems[lowest_index];
gTeamInventory_203B460->teamItems[lowest_index] = current;
struct Item current = gTeamInventoryRef->teamItems[i];
gTeamInventoryRef->teamItems[i] = gTeamInventoryRef->teamItems[lowest_index];
gTeamInventoryRef->teamItems[lowest_index] = current;
}
}
} while (++i < INVENTORY_SIZE);
@@ -664,17 +664,17 @@ void ConvertMoneyItemToMoney()
void AddToTeamMoney(s32 amount)
{
s32 clamped_money;
gTeamInventory_203B460->teamMoney += amount;
gTeamInventoryRef->teamMoney += amount;
// clamp money
clamped_money = MAX_TEAM_MONEY;
if (gTeamInventory_203B460->teamMoney <= MAX_TEAM_MONEY) {
if (gTeamInventory_203B460->teamMoney >= 0) {
if (gTeamInventoryRef->teamMoney <= MAX_TEAM_MONEY) {
if (gTeamInventoryRef->teamMoney >= 0) {
return;
}
clamped_money = 0;
}
gTeamInventory_203B460->teamMoney = clamped_money;
gTeamInventoryRef->teamMoney = clamped_money;
}
u16 GetItemMoveID(u8 index)
@@ -932,7 +932,7 @@ bool8 HasGummiItem()
s32 i;
for (i = 0; i < INVENTORY_SIZE; i++) {
UNUSED size_t offs = offsetof(struct TeamInventory, teamItems[i]);
if ((i[gTeamInventory_203B460->teamItems].flags & ITEM_FLAG_EXISTS) && IsGummiItem(i[gTeamInventory_203B460->teamItems].id)) {
if ((i[gTeamInventoryRef->teamItems].flags & ITEM_FLAG_EXISTS) && IsGummiItem(i[gTeamInventoryRef->teamItems].id)) {
return TRUE;
}
}
@@ -942,14 +942,14 @@ bool8 HasGummiItem()
void MoveToStorage(struct Item* slot)
{
if (IsThrowableItem(slot->id)) {
gTeamInventory_203B460->teamStorage[slot->id] += slot->quantity;
gTeamInventoryRef->teamStorage[slot->id] += slot->quantity;
}
else {
gTeamInventory_203B460->teamStorage[slot->id]++;
gTeamInventoryRef->teamStorage[slot->id]++;
}
if (gTeamInventory_203B460->teamStorage[slot->id] > 999) {
gTeamInventory_203B460->teamStorage[slot->id] = 999;
if (gTeamInventoryRef->teamStorage[slot->id] > 999) {
gTeamInventoryRef->teamStorage[slot->id] = 999;
}
}
@@ -958,7 +958,7 @@ s32 CountKecleonShopItems(void)
s32 i;
s32 counter = 0;
for (i = 0; i < MAX_KECLEON_ITEM_SHOP_ITEMS; i++) {
if (gTeamInventory_203B460->kecleonShopItems[i].id) {
if (gTeamInventoryRef->kecleonShopItems[i].id) {
counter++;
}
}
@@ -969,14 +969,14 @@ void InitKecleonShopItem(u8 index)
{
struct BulkItem* shopItem;
shopItem = &gTeamInventory_203B460->kecleonShopItems[index];
shopItem = &gTeamInventoryRef->kecleonShopItems[index];
shopItem->id = ITEM_NOTHING;
shopItem->quantity = 0;
}
struct BulkItem* GetKecleonShopItem(u8 i)
{
return &gTeamInventory_203B460->kecleonShopItems[i];
return &gTeamInventoryRef->kecleonShopItems[i];
}
void FillKecleonShopGaps(void)
@@ -986,7 +986,7 @@ void FillKecleonShopGaps(void)
do {
while (slot_checking < MAX_KECLEON_ITEM_SHOP_ITEMS) {
if (gTeamInventory_203B460->kecleonShopItems[slot_checking].id) {
if (gTeamInventoryRef->kecleonShopItems[slot_checking].id) {
break;
}
// find next empty slot
@@ -999,7 +999,7 @@ void FillKecleonShopGaps(void)
if (slot_checking > last_filled) {
// shift it down
gTeamInventory_203B460->kecleonShopItems[last_filled] = gTeamInventory_203B460->kecleonShopItems[slot_checking];
gTeamInventoryRef->kecleonShopItems[last_filled] = gTeamInventoryRef->kecleonShopItems[slot_checking];
}
slot_checking++;
last_filled++;
@@ -1017,12 +1017,12 @@ void SortKecleonShopInventory(void) {
for (i = 0; i < MAX_KECLEON_ITEM_SHOP_ITEMS - 1; i++) {
s32 j;
for (j = i + 1; j < MAX_KECLEON_ITEM_SHOP_ITEMS; j++) {
s32 order_i = GetItemOrder(gTeamInventory_203B460->kecleonShopItems[i].id);
s32 order_j = GetItemOrder(gTeamInventory_203B460->kecleonShopItems[j].id);
if (order_i > order_j || (order_i == order_j && gTeamInventory_203B460->kecleonShopItems[i].quantity < gTeamInventory_203B460->kecleonShopItems[j].quantity)) {
struct BulkItem str_i = gTeamInventory_203B460->kecleonShopItems[i];
gTeamInventory_203B460->kecleonShopItems[i] = gTeamInventory_203B460->kecleonShopItems[j];
gTeamInventory_203B460->kecleonShopItems[j] = str_i;
s32 order_i = GetItemOrder(gTeamInventoryRef->kecleonShopItems[i].id);
s32 order_j = GetItemOrder(gTeamInventoryRef->kecleonShopItems[j].id);
if (order_i > order_j || (order_i == order_j && gTeamInventoryRef->kecleonShopItems[i].quantity < gTeamInventoryRef->kecleonShopItems[j].quantity)) {
struct BulkItem str_i = gTeamInventoryRef->kecleonShopItems[i];
gTeamInventoryRef->kecleonShopItems[i] = gTeamInventoryRef->kecleonShopItems[j];
gTeamInventoryRef->kecleonShopItems[j] = str_i;
}
}
}
@@ -1051,8 +1051,8 @@ bool8 AddKecleonShopItem(u8 itemIndex) {
xxx_init_helditem_8090B08(&held, itemIndex); // initialize
for (i = 0; i < MAX_KECLEON_ITEM_SHOP_ITEMS; i++) {
if (!gTeamInventory_203B460->kecleonShopItems[i].id) {
gTeamInventory_203B460->kecleonShopItems[i] = held;
if (!gTeamInventoryRef->kecleonShopItems[i].id) {
gTeamInventoryRef->kecleonShopItems[i] = held;
return FALSE;
}
}
@@ -1063,7 +1063,7 @@ u32 CountKecleonWareItems(void) {
s32 i;
u32 count = 0;
for (i = 0; i < MAX_KECLEON_WARE_SHOP_ITEMS; i++) {
if (gTeamInventory_203B460->kecleonWareItems[i].id) {
if (gTeamInventoryRef->kecleonWareItems[i].id) {
count++;
}
}
@@ -1071,13 +1071,13 @@ u32 CountKecleonWareItems(void) {
}
void InitKecleonWareItem(u8 index) {
struct BulkItem* wareItem = &gTeamInventory_203B460->kecleonWareItems[index];
struct BulkItem* wareItem = &gTeamInventoryRef->kecleonWareItems[index];
wareItem->id = ITEM_NOTHING;
wareItem->quantity = 0;
}
struct BulkItem* GetKecleonWareItem(u8 index) {
return &gTeamInventory_203B460->kecleonWareItems[index];
return &gTeamInventoryRef->kecleonWareItems[index];
}
void FillKecleonWareGaps(void) {
@@ -1086,7 +1086,7 @@ void FillKecleonWareGaps(void) {
do {
while (slot_checking < MAX_KECLEON_WARE_SHOP_ITEMS) {
if (gTeamInventory_203B460->kecleonWareItems[slot_checking].id != ITEM_NOTHING) {
if (gTeamInventoryRef->kecleonWareItems[slot_checking].id != ITEM_NOTHING) {
break;
}
slot_checking++;
@@ -1098,7 +1098,7 @@ void FillKecleonWareGaps(void) {
if (slot_checking > last_filled) {
// shift it down
gTeamInventory_203B460->kecleonWareItems[last_filled] = gTeamInventory_203B460->kecleonWareItems[slot_checking];
gTeamInventoryRef->kecleonWareItems[last_filled] = gTeamInventoryRef->kecleonWareItems[slot_checking];
}
slot_checking++;
last_filled++;
@@ -1116,12 +1116,12 @@ void SortKecleonWareInventory(void) {
for (i = 0; i < MAX_KECLEON_WARE_SHOP_ITEMS - 1; i++) {
s32 j;
for (j = i + 1; j < MAX_KECLEON_WARE_SHOP_ITEMS; j++) {
s32 order_i = GetItemOrder(gTeamInventory_203B460->kecleonWareItems[i].id);
s32 order_j = GetItemOrder(gTeamInventory_203B460->kecleonWareItems[j].id);
if (order_i > order_j || (order_i == order_j && gTeamInventory_203B460->kecleonWareItems[i].quantity < gTeamInventory_203B460->kecleonWareItems[j].quantity)) {
struct BulkItem str_i = gTeamInventory_203B460->kecleonWareItems[i];
gTeamInventory_203B460->kecleonWareItems[i] = gTeamInventory_203B460->kecleonWareItems[j];
gTeamInventory_203B460->kecleonWareItems[j] = str_i;
s32 order_i = GetItemOrder(gTeamInventoryRef->kecleonWareItems[i].id);
s32 order_j = GetItemOrder(gTeamInventoryRef->kecleonWareItems[j].id);
if (order_i > order_j || (order_i == order_j && gTeamInventoryRef->kecleonWareItems[i].quantity < gTeamInventoryRef->kecleonWareItems[j].quantity)) {
struct BulkItem str_i = gTeamInventoryRef->kecleonWareItems[i];
gTeamInventoryRef->kecleonWareItems[i] = gTeamInventoryRef->kecleonWareItems[j];
gTeamInventoryRef->kecleonWareItems[j] = str_i;
}
}
}
@@ -1149,8 +1149,8 @@ bool8 AddKecleonWareItem(u8 itemIndex) {
xxx_init_helditem_8090B08(&held, itemIndex); // initialize
for (i = 0; i < MAX_KECLEON_WARE_SHOP_ITEMS; i++) {
if (!gTeamInventory_203B460->kecleonWareItems[i].id) {
gTeamInventory_203B460->kecleonWareItems[i] = held;
if (!gTeamInventoryRef->kecleonWareItems[i].id) {
gTeamInventoryRef->kecleonWareItems[i] = held;
return FALSE;
}
}
@@ -1164,19 +1164,19 @@ s32 SaveTeamInventory(u8* unk0, u32 size)
xxx_init_struct_8094924_save_809486C(&unk, unk0, size);
for (i = 0; i < INVENTORY_SIZE; i++) {
SaveItemSlot(&unk, &gTeamInventory_203B460->teamItems[i]);
SaveItemSlot(&unk, &gTeamInventoryRef->teamItems[i]);
}
for (i = 0; i < STORAGE_SIZE; i++) {
SaveIntegerBits(&unk, &gTeamInventory_203B460->teamStorage[i], 10);
SaveIntegerBits(&unk, &gTeamInventoryRef->teamStorage[i], 10);
}
for (i = 0; i < MAX_KECLEON_ITEM_SHOP_ITEMS; i++) {
SaveHeldItem(&unk, &gTeamInventory_203B460->kecleonShopItems[i]);
SaveHeldItem(&unk, &gTeamInventoryRef->kecleonShopItems[i]);
}
for (i = 0; i < MAX_KECLEON_WARE_SHOP_ITEMS; i++) {
SaveHeldItem(&unk, &gTeamInventory_203B460->kecleonWareItems[i]);
SaveHeldItem(&unk, &gTeamInventoryRef->kecleonWareItems[i]);
}
SaveIntegerBits(&unk, &gTeamInventory_203B460->teamMoney, 24);
SaveIntegerBits(&unk, &gTeamInventory_203B460->teamSavings, 24);
SaveIntegerBits(&unk, &gTeamInventoryRef->teamMoney, 24);
SaveIntegerBits(&unk, &gTeamInventoryRef->teamSavings, 24);
nullsub_102(&unk);
return unk.unk8;
}
@@ -1188,19 +1188,19 @@ s32 RestoreTeamInventory(u8 *unk0, u32 size)
xxx_init_struct_8094924_restore_809485C(&unk, unk0, size);
for (i = 0; i < INVENTORY_SIZE; i++) {
RestoreItemSlot(&unk, &gTeamInventory_203B460->teamItems[i]);
RestoreItemSlot(&unk, &gTeamInventoryRef->teamItems[i]);
}
for (i = 0; i < STORAGE_SIZE; i++) {
RestoreIntegerBits(&unk, &gTeamInventory_203B460->teamStorage[i], 10);
RestoreIntegerBits(&unk, &gTeamInventoryRef->teamStorage[i], 10);
}
for (i = 0; i < MAX_KECLEON_ITEM_SHOP_ITEMS; i++) {
RestoreHeldItem(&unk, &gTeamInventory_203B460->kecleonShopItems[i]);
RestoreHeldItem(&unk, &gTeamInventoryRef->kecleonShopItems[i]);
}
for (i = 0; i < MAX_KECLEON_WARE_SHOP_ITEMS; i++) {
RestoreHeldItem(&unk, &gTeamInventory_203B460->kecleonWareItems[i]);
RestoreHeldItem(&unk, &gTeamInventoryRef->kecleonWareItems[i]);
}
RestoreIntegerBits(&unk, &gTeamInventory_203B460->teamMoney, 24);
RestoreIntegerBits(&unk, &gTeamInventory_203B460->teamSavings, 24);
RestoreIntegerBits(&unk, &gTeamInventoryRef->teamMoney, 24);
RestoreIntegerBits(&unk, &gTeamInventoryRef->teamSavings, 24);
nullsub_102(&unk);
return unk.unk8;
}
@@ -1467,7 +1467,7 @@ void ClearAllItems_8091FB4() {
s32 i;
for (i = 0; i < INVENTORY_SIZE; i++) {
struct Item* slot = &gTeamInventory_203B460->teamItems[i];
struct Item* slot = &gTeamInventoryRef->teamItems[i];
if (slot->flags & ITEM_FLAG_EXISTS) {
slot->flags &= 0xf7;
if (slot->id == ITEM_POKE) {

File diff suppressed because it is too large Load Diff

1777
src/kecleon_bros.c Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,190 +0,0 @@
#include "global.h"
#include "file_system.h"
#include "pokemon.h"
#include "input.h"
#include "item.h"
#include "kecleon_items.h"
#include "memory.h"
extern struct unkStruct_203B210 *gUnknown_203B210;
extern u8 gUnknown_202E5D8[];
extern u8 gUnknown_202E1C8[];
extern struct UnkTextStruct2 gUnknown_80DB840;
extern struct UnkTextStruct2 gUnknown_80DB870;
extern struct UnkTextStruct2 gUnknown_80DB888;
extern struct UnkTextStruct2 gUnknown_80DB858;
void UpdateKecleonStoreState(u32);
extern void sub_8019730();
extern void sub_80199CC();
extern void sub_8019B08();
extern void sub_8019BBC();
extern void sub_8019C78();
extern void sub_8019850();
extern void sub_80198E8();
extern void sub_8019944();
extern void sub_8019D30();
extern void sub_8019D4C();
extern void sub_8019D68();
extern void sub_8018D30();
extern void UpdateKecleonStoreDialogue();
u32 DisplayKeckleonDialogueSprite(u32 param_1)
{
char *monName;
struct OpenedFile *faceFile;
gUnknown_203B210 = MemoryAlloc(sizeof(struct unkStruct_203B210),8);
gUnknown_203B210->menuAction1 = 0;
gUnknown_203B210->menuAction2 = 0;
gUnknown_203B210->menuAction3 = 0;
gUnknown_203B210->unk0 = param_1;
switch(param_1)
{
case 0:
gUnknown_203B210->isKecleonItemShop = TRUE;
gUnknown_203B210->unkE4 = &gUnknown_203B210->faceFile;
CopyYellowMonsterNametoBuffer(gUnknown_202E5D8, MONSTER_KECLEON);
CopyYellowMonsterNametoBuffer(gUnknown_202E1C8, MONSTER_KECLEON);
monName = GetMonSpecies( MONSTER_KECLEON);
strcpy(gUnknown_202E1C8 - 0x50, monName);
break;
case 1:
gUnknown_203B210->isKecleonItemShop = TRUE;
gUnknown_203B210->unkE4 = NULL;
CopyYellowMonsterNametoBuffer(gUnknown_202E5D8, MONSTER_KECLEON);
CopyYellowMonsterNametoBuffer(gUnknown_202E1C8, MONSTER_KECLEON);
monName = GetMonSpecies( MONSTER_KECLEON);
strcpy(gUnknown_202E1C8 - 0x50, monName);
break;
case 2:
gUnknown_203B210->isKecleonItemShop = FALSE;
gUnknown_203B210->unkE4 = &gUnknown_203B210->faceFile;
CopyYellowMonsterNametoBuffer(gUnknown_202E5D8, MONSTER_KECLEON);
CopyYellowMonsterNametoBuffer(gUnknown_202E1C8, MONSTER_KECLEON);
monName = GetMonSpecies( MONSTER_KECLEON);
strcpy(gUnknown_202E1C8 - 0x50, monName);
break;
case 3:
gUnknown_203B210->isKecleonItemShop = FALSE;
gUnknown_203B210->unkE4 = NULL;
CopyYellowMonsterNametoBuffer(gUnknown_202E5D8, MONSTER_KECLEON);
CopyYellowMonsterNametoBuffer(gUnknown_202E1C8, MONSTER_KECLEON);
monName = GetMonSpecies( MONSTER_KECLEON);
strcpy(gUnknown_202E1C8 - 0x50, monName);
break;
default:
break;
}
faceFile = GetDialogueSpriteDataPtr(MONSTER_KECLEON);
gUnknown_203B210->faceFile = faceFile;
gUnknown_203B210->faceData = faceFile->data;
gUnknown_203B210->unkE0 = 0;
gUnknown_203B210->unkE1 = 0;
gUnknown_203B210->unkE2 = 0;
gUnknown_203B210->unkDC = 2;
gUnknown_203B210->unkDE = 8;
UpdateKecleonStoreState(KECLEON_STORE_INIT);
return 1;
}
u32 sub_8018C04(void)
{
switch(gUnknown_203B210->currState) {
case KECLEON_STORE_INIT:
case KECLEON_STORE_MAIN_MENU:
sub_8019730();
break;
case 0x12:
case 0x13:
sub_80199CC();
break;
case 0x1a:
case 0x1b:
sub_8019B08();
break;
case 0x14:
sub_8019BBC();
break;
case 0x1c:
sub_8019C78();
break;
case 0x16:
sub_8019850();
break;
case 0x1e:
sub_80198E8();
break;
case 0x1f:
sub_8019944();
break;
case 0x15:
sub_8019D30();
break;
case 0x1d:
sub_8019D4C();
break;
case KECLEON_STORE_EXIT:
return 3;
default:
sub_8019D68();
break;
}
return 0;
}
void sub_8018CF0(void)
{
if(gUnknown_203B210 != NULL)
{
CloseFile(gUnknown_203B210->faceFile);
MemoryFree(gUnknown_203B210);
gUnknown_203B210 = NULL;
}
}
void UpdateKecleonStoreState(u32 newState)
{
gUnknown_203B210->currState = newState;
sub_8018D30();
UpdateKecleonStoreDialogue();
}
void sub_8018D30(void)
{
s32 index;
sub_8006518(gUnknown_203B210->unkE8);
switch(gUnknown_203B210->currState)
{
case 0x12:
case 0x13:
gUnknown_203B210->unkE8[0] = gUnknown_80DB840;
gUnknown_203B210->unkE8[2] = gUnknown_80DB840;
gUnknown_203B210->unkE8[0] = gUnknown_80DB870;
gUnknown_203B210->unkE8[1] = gUnknown_80DB888;
break;
case 0x1A:
case 0x1B:
gUnknown_203B210->unkE8[0] = gUnknown_80DB840;
gUnknown_203B210->unkE8[1] = gUnknown_80DB840;
gUnknown_203B210->unkE8[2] = gUnknown_80DB840;
gUnknown_203B210->unkE8[1] = gUnknown_80DB888;
break;
case 0x14:
case 0x1C:
gUnknown_203B210->unkE8[2] = gUnknown_80DB858;
break;
default:
case 0x15:
case 0x16:
case 0x17:
case 0x18:
case 0x19:
for(index = 0; index < 4; index++)
gUnknown_203B210->unkE8[index] = gUnknown_80DB840;
break;
}
ResetUnusedInputStruct();
sub_800641C(gUnknown_203B210->unkE8, 1, 1);
}

File diff suppressed because it is too large Load Diff

View File

@@ -11,6 +11,7 @@
#include "text_util.h"
#include "team_inventory.h"
#include "menu_input.h"
#include "kecleon_bros.h"
struct unkStruct_203B2B0
{
@@ -193,9 +194,6 @@ void PlaySound(u32);
void sub_8024CFC(void);
void sub_8025254(void);
void sub_8024D48(void);
extern void sub_801A5D8(u32, u32, u32, u32);
extern void sub_801A8D0(u32);
extern void sub_801A9E0();
extern void sub_801B3C0(struct Item *);
extern void nullsub_104();
void sub_8024DBC(void);
@@ -204,10 +202,7 @@ void sub_801AEE4(u32, u32);
void sub_808F734(struct PokemonStruct *, s16);
u32 sub_801602C(u32 r0, u8 *name);
extern s32 sub_80144A4(s32 *);
extern u32 sub_801A6E8(u32);
extern s32 sub_801A8AC(void);
extern void sub_8099690(u32);
extern void sub_801A928(void);
extern void PlayMenuSoundEffect(u32);
extern u32 sub_801B410(void);
extern void sub_801B450(void);
@@ -734,16 +729,16 @@ void sub_8024F70(void)
void sub_8024FD4(void)
{
switch(sub_801A6E8(1))
switch(sub_801A6E8(TRUE))
{
case 3:
gUnknown_203B2B0->evoItem1_InvIndex = sub_801A8AC();
gUnknown_203B2B0->evoItem2_InvIndex = INVENTORY_SIZE;
gUnknown_203B2B0->chosenItem = gTeamInventory_203B460->teamItems[gUnknown_203B2B0->evoItem1_InvIndex];
gUnknown_203B2B0->chosenItem = gTeamInventoryRef->teamItems[gUnknown_203B2B0->evoItem1_InvIndex];
UpdateLuminousCaveState(8);
break;
case 4:
gUnknown_203B2B0->chosenItem = gTeamInventory_203B460->teamItems[sub_801A8AC()];
gUnknown_203B2B0->chosenItem = gTeamInventoryRef->teamItems[sub_801A8AC()];
sub_8099690(0);
UpdateLuminousCaveState(9);
break;
@@ -756,20 +751,20 @@ void sub_8024FD4(void)
void sub_8025058(void)
{
switch(sub_801A6E8(1))
switch(sub_801A6E8(TRUE))
{
case 3:
if(gUnknown_203B2B0->evoItem1_InvIndex != sub_801A8AC())
{
gUnknown_203B2B0->evoItem2_InvIndex = sub_801A8AC();
gUnknown_203B2B0->chosenItem = gTeamInventory_203B460->teamItems[gUnknown_203B2B0->evoItem2_InvIndex];
gUnknown_203B2B0->chosenItem = gTeamInventoryRef->teamItems[gUnknown_203B2B0->evoItem2_InvIndex];
UpdateLuminousCaveState(0xD);
}
else
PlayMenuSoundEffect(2);
break;
case 4:
gUnknown_203B2B0->chosenItem = gTeamInventory_203B460->teamItems[sub_801A8AC()];
gUnknown_203B2B0->chosenItem = gTeamInventoryRef->teamItems[sub_801A8AC()];
sub_8099690(0);
UpdateLuminousCaveState(0xE);
break;
@@ -784,7 +779,7 @@ void sub_80250EC(void)
{
s32 menuAction;
menuAction = 0;
sub_801A6E8(0);
sub_801A6E8(FALSE);
if(!sub_8012FD8(&gUnknown_203B2B0->unk84))
{
@@ -811,7 +806,7 @@ void sub_802515C(void)
{
s32 menuAction;
menuAction = 0;
sub_801A6E8(0);
sub_801A6E8(FALSE);
if(!sub_8012FD8(&gUnknown_203B2B0->unk84))
{
@@ -893,13 +888,13 @@ void sub_8025254(void)
gUnknown_203B2B0->evoItem1_itemIndex = 0;
else
{
gUnknown_203B2B0->evoItem1_itemIndex = gTeamInventory_203B460->teamItems[gUnknown_203B2B0->evoItem1_InvIndex].id;
gUnknown_203B2B0->evoItem1_itemIndex = gTeamInventoryRef->teamItems[gUnknown_203B2B0->evoItem1_InvIndex].id;
}
if(gUnknown_203B2B0->evoItem2_InvIndex == INVENTORY_SIZE)
gUnknown_203B2B0->evoItem2_ItemIndex = 0;
else
{
gUnknown_203B2B0->evoItem2_ItemIndex = gTeamInventory_203B460->teamItems[gUnknown_203B2B0->evoItem2_InvIndex].id;
gUnknown_203B2B0->evoItem2_ItemIndex = gTeamInventoryRef->teamItems[gUnknown_203B2B0->evoItem2_InvIndex].id;
}
gUnknown_203B2B0->unk6 = RandInt(0xFF);

View File

@@ -462,7 +462,7 @@ void sub_8030480(void)
}
}
#ifdef NONMATCHING
#ifdef NONMATCHING // https://decomp.me/scratch/lM7lE
void sub_80304C8(void)
{
s16 test;

View File

@@ -642,7 +642,7 @@ void sub_80371B8(void)
sub_8035CF4(gUnknown_203B35C->unk1C, 0, 1);
if ((gUnknown_203B35C->linkStatus != COMMS_GOOD) && (gUnknown_203B35C->unk0 == 0) &&
(item = sub_8035D94(), item->itemIndex.itemIndex_u8 != ITEM_NOTHING) && (item->numItems != 0)) {
gTeamInventory_203B460->teamStorage[item->itemIndex.itemIndex_u8] += item->numItems;
gTeamInventoryRef->teamStorage[item->itemIndex.itemIndex_u8] += item->numItems;
}
}
}

View File

@@ -185,14 +185,14 @@ void sub_8037E38(struct unkStruct_8035D94 *param_1,struct unkStruct_8035D94 *par
r3 = sub_800D588() == 0 ? param_1 : param_2;
if ((r4->itemIndex).itemIndex_u8 == (r3->itemIndex).itemIndex_u8) {
load = gTeamInventory_203B460->teamStorage[r4->itemIndex.itemIndex_u8];
load = gTeamInventoryRef->teamStorage[r4->itemIndex.itemIndex_u8];
load += r3->numItems;
gTeamInventory_203B460->teamStorage[r4->itemIndex.itemIndex_u8] = load;
gTeamInventoryRef->teamStorage[r4->itemIndex.itemIndex_u8] = load;
}
else {
load = gTeamInventory_203B460->teamStorage[r3->itemIndex.itemIndex_u8];
load = gTeamInventoryRef->teamStorage[r3->itemIndex.itemIndex_u8];
load += r3->numItems;
gTeamInventory_203B460->teamStorage[r3->itemIndex.itemIndex_u8] = load;
gTeamInventoryRef->teamStorage[r3->itemIndex.itemIndex_u8] = load;
}
}
@@ -295,7 +295,7 @@ s32 sub_8038014(struct unkStruct_8035D94 *param_1,struct unkStruct_8035D94 *para
r3 = sub_800D588() == 0 ? param_1 : param_2;
if ((r4->itemIndex).itemIndex_u8 == (r3->itemIndex).itemIndex_u8) {
r2 = gTeamInventory_203B460->teamStorage[r4->itemIndex.itemIndex_u8];
r2 = gTeamInventoryRef->teamStorage[r4->itemIndex.itemIndex_u8];
r2 += r3->numItems;
if (r2 > 999) {
linkStatus = COMMS_NO_ROOM_STORAGE;
@@ -304,7 +304,7 @@ s32 sub_8038014(struct unkStruct_8035D94 *param_1,struct unkStruct_8035D94 *para
linkStatus = COMMS_GOOD;
}
else {
r2 = gTeamInventory_203B460->teamStorage[r3->itemIndex.itemIndex_u8];
r2 = gTeamInventoryRef->teamStorage[r3->itemIndex.itemIndex_u8];
r2 += r3->numItems;
if (r2 > 999) {
linkStatus = COMMS_NO_ROOM_STORAGE;

View File

@@ -12,6 +12,7 @@
#include "code_800D090.h"
#include "menu_input.h"
#include "moves.h"
#include "kecleon_bros.h"
struct unkStruct_203B2B8
{
@@ -180,10 +181,7 @@ extern void sub_801F8D0(void);
extern u32 sub_801B410(void);
extern void sub_801B450(void);
extern void nullsub_104(void);
extern void sub_801A928(void);
extern void sub_8099690(u32);
extern u32 sub_801A6E8(u32);
extern u32 sub_801A8AC(void);
extern u32 sub_8022860(void);
extern void sub_8022908(void);
extern void sub_801BF98(void);
@@ -197,10 +195,7 @@ bool8 sub_8026E88(struct PokemonStruct *r0);
bool8 HasGummiItem();
bool8 sub_8026EB8(struct PokemonStruct *r0);
extern void sub_801BB20(void);
extern void sub_801A8D0(u32);
extern void sub_801A9E0(void);
extern void sub_801BC24(void);
extern void sub_801A5D8(u32, u32, u32, u32);
extern void sub_8024458(s16, u32);
void sub_8026E08(u32 r0);
void sub_8026DAC(u32 r0, struct BulkItem *item);
@@ -811,18 +806,18 @@ void sub_8026B48(void)
void sub_8026B64(void)
{
switch(sub_801A6E8(1))
switch(sub_801A6E8(TRUE))
{
case 3:
gUnknown_203B2B8->id = sub_801A8AC();
gUnknown_203B2B8->item1.id = gTeamInventory_203B460->teamItems[gUnknown_203B2B8->id].id;
gUnknown_203B2B8->item1.quantity = gTeamInventory_203B460->teamItems[gUnknown_203B2B8->id].quantity;
gUnknown_203B2B8->item1.id = gTeamInventoryRef->teamItems[gUnknown_203B2B8->id].id;
gUnknown_203B2B8->item1.quantity = gTeamInventoryRef->teamItems[gUnknown_203B2B8->id].quantity;
sub_8026074(0x14);
break;
case 4:
gUnknown_203B2B8->id = sub_801A8AC();
gUnknown_203B2B8->item1.id = gTeamInventory_203B460->teamItems[gUnknown_203B2B8->id].id;
gUnknown_203B2B8->item1.quantity = gTeamInventory_203B460->teamItems[gUnknown_203B2B8->id].quantity;
gUnknown_203B2B8->item1.id = gTeamInventoryRef->teamItems[gUnknown_203B2B8->id].id;
gUnknown_203B2B8->item1.quantity = gTeamInventoryRef->teamItems[gUnknown_203B2B8->id].quantity;
sub_8099690(0);
sub_8026074(0x15);
break;
@@ -844,7 +839,7 @@ void sub_8026C14(void)
struct Item slot;
menuAction = 0;
sub_801A6E8(0);
sub_801A6E8(FALSE);
if ((sub_8012FD8(&gUnknown_203B2B8->unkCC) == '\0') && (sub_8013114(&gUnknown_203B2B8->unkCC,&menuAction), menuAction != 1)) {
gUnknown_203B2B8->menuAction2 = menuAction;
}
@@ -1028,12 +1023,12 @@ bool8 CanTakePokemonHeldItem(struct PokemonStruct *r0)
{
if(IsThrowableItem(r0->heldItem.id))
{
if((gTeamInventory_203B460->teamStorage[r0->heldItem.id] + r0->heldItem.quantity) > 999)
if((gTeamInventoryRef->teamStorage[r0->heldItem.id] + r0->heldItem.quantity) > 999)
return FALSE;
}
else
{
if(gTeamInventory_203B460->teamStorage[r0->heldItem.id] > 998)
if(gTeamInventoryRef->teamStorage[r0->heldItem.id] > 998)
return FALSE;
}
}
@@ -1059,11 +1054,11 @@ void sub_8026FA4(void)
PlaySound(0x14d);
if(IsThrowableItem(gUnknown_203B2B8->item2.id))
{
gTeamInventory_203B460->teamStorage[gUnknown_203B2B8->item2.id] += gUnknown_203B2B8->item2.quantity;
gTeamInventoryRef->teamStorage[gUnknown_203B2B8->item2.id] += gUnknown_203B2B8->item2.quantity;
}
else
{
gTeamInventory_203B460->teamStorage[gUnknown_203B2B8->item2.id] += 1;
gTeamInventoryRef->teamStorage[gUnknown_203B2B8->item2.id] += 1;
}
gUnknown_203B2B8->item2.id = ITEM_NOTHING;

View File

@@ -609,7 +609,7 @@ void sub_8012334(struct UnkStruct_203B184 *r0)
gUnknown_203B184 = r0;
if(r0 != NULL)
{
gTeamInventory_203B460 = r0->MoneyItems;
gTeamInventoryRef = r0->MoneyItems;
gRecruitedPokemonRef = r0->recruitedPokemon;
gUnknown_203B480 = r0->unk8;
gUnknown_203B484 = r0->unkC;
@@ -624,7 +624,7 @@ void sub_8012334(struct UnkStruct_203B184 *r0)
gPlayTimeRef = r0->playTime;
return;
}
gTeamInventory_203B460 = GetMoneyItemsInfo();
gTeamInventoryRef = GetMoneyItemsInfo();
gRecruitedPokemonRef = GetRecruitedPokemon();
gUnknown_203B480 = sub_80950F8();
gUnknown_203B484 = sub_8095100();

View File

@@ -596,10 +596,10 @@ bool8 RecycleMoveAction(struct Entity * pokemon, struct Entity * target)
for(index = 0; index < INVENTORY_SIZE; index++)
{
#ifdef NONMATCHING
item = &gTeamInventory_203B460->teamItems[index];
item = &gTeamInventoryRef->teamItems[index];
#else
register size_t offset asm("r1") = offsetof(struct TeamInventory, teamItems[index]);
struct Item* p = gTeamInventory_203B460->teamItems;
struct Item* p = gTeamInventoryRef->teamItems;
size_t addr = offset + (size_t)p;
item = (struct Item*)addr;
#endif
@@ -832,11 +832,11 @@ bool8 CleanseOrbAction(struct Entity * pokemon, struct Entity * target)
if (!entityInfo->isNotTeamMember) {
for(index = 0; index < INVENTORY_SIZE; index++){
// WTF why does this work...
UNUSED struct Item* current = &gTeamInventory_203B460->teamItems[index];
flag = index[gTeamInventory_203B460->teamItems].flags;
UNUSED struct Item* current = &gTeamInventoryRef->teamItems[index];
flag = index[gTeamInventoryRef->teamItems].flags;
if (((flag & ITEM_FLAG_EXISTS) != 0) && ((flag & ITEM_FLAG_IN_SHOP) == 0))
if((flag & ITEM_FLAG_STICKY) != 0) {
gTeamInventory_203B460->teamItems[index].flags = flag & 0xf7;
gTeamInventoryRef->teamItems[index].flags = flag & 0xf7;
isItemCleaned = TRUE;
}
}

View File

@@ -959,7 +959,7 @@ void HandleConfirmItemtoSendMenu(void)
{
mail->item = gUnknown_203B2C4->unk41C;
}
gTeamInventory_203B460->teamStorage[gUnknown_203B2C4->unk41C.id]--;
gTeamInventoryRef->teamStorage[gUnknown_203B2C4->unk41C.id]--;
SetThankYouMailMenuState(0x29);
break;
case 8:

View File

@@ -401,9 +401,9 @@ void TradeItem_SendItemConfirm(void)
case 5:
sub_801CBB8();
// Used temp var to get correct statements
load = gTeamInventory_203B460->teamStorage[gTradeItemsMenu->itemToSend.id];
load = gTeamInventoryRef->teamStorage[gTradeItemsMenu->itemToSend.id];
load -= gTradeItemsMenu->quantityToSend;
gTeamInventory_203B460->teamStorage[gTradeItemsMenu->itemToSend.id] = load;
gTeamInventoryRef->teamStorage[gTradeItemsMenu->itemToSend.id] = load;
SetTradeItemMenu(TRADE_ITEMS_PREPARE_TRADE_SAVING);
PrepareSavePakWrite(MONSTER_NONE);
break;
@@ -497,9 +497,9 @@ void TradeItem_AddItem(void)
{
// Use temp var to get correct statements
u16 load;
load = gTeamInventory_203B460->teamStorage[gTradeItemsMenu->sentItem.itemIdx.id];
load = gTeamInventoryRef->teamStorage[gTradeItemsMenu->sentItem.itemIdx.id];
load += gTradeItemsMenu->sentItem.quantity;
gTeamInventory_203B460->teamStorage[gTradeItemsMenu->sentItem.itemIdx.id] = load;
gTeamInventoryRef->teamStorage[gTradeItemsMenu->sentItem.itemIdx.id] = load;
}
void sub_80369FC(void)
@@ -790,7 +790,7 @@ void sub_8036F30(void)
void sub_8036F74(void)
{
sub_8006518(gTradeItemsMenu->unk184);
sub_8036ECC(2, gTeamInventory_203B460->teamStorage[gTradeItemsMenu->itemToSend.id]);
sub_8036ECC(2, gTeamInventoryRef->teamStorage[gTradeItemsMenu->itemToSend.id]);
sub_801CCD8();
sub_8035CF4(gTradeItemsMenu->unk44, 3, 0);
sub_8036F30();

View File

@@ -10,6 +10,7 @@
#include "menu_input.h"
#include "friend_area.h"
#include "wigglytuff_shop.h"
#include "felicity_bank.h"
extern struct UnkTextStruct2 gUnknown_80DC534;
extern struct UnkTextStruct2 gUnknown_80DC564;
@@ -38,7 +39,6 @@ u8 sub_8021700(u32);
void sub_8092578(u8 *buffer, u8 index, u8 r2);
extern void sub_8014248(const char *r0, u32, u32, const struct MenuItem *r4, u16 *, u32, u32,u8 *r5, u32);
extern void sub_80141B4(const u8 *, u32, u8*, u32);
extern void DrawTeamMoneyBox(u32);
extern void sub_80211AC(u32, u32);
extern void sub_8021354(u32);
extern void sub_8021494();
@@ -478,7 +478,7 @@ void HandleWigglytuffConfirmFriendAreaMenu(void)
switch(menuAction)
{
case 5:
gTeamInventory_203B460->teamMoney -= gWigglytuffShop->friendAreaPrice;
gTeamInventoryRef->teamMoney -= gWigglytuffShop->friendAreaPrice;
UnlockFriendArea(gWigglytuffShop->chosenFriendArea);
PlaySound(0x14C);
SetWigglytuffState(CONFIRM_BUY_FRIEND_AREA);
@@ -530,11 +530,11 @@ void sub_80225C8(void)
switch(menuAction)
{
case 2:
if(gTeamInventory_203B460->teamMoney == 0)
if(gTeamInventoryRef->teamMoney == 0)
{
SetWigglytuffState(NO_MONEY);
}
else if(gWigglytuffShop->friendAreaPrice > gTeamInventory_203B460->teamMoney)
else if(gWigglytuffShop->friendAreaPrice > gTeamInventoryRef->teamMoney)
{
SetWigglytuffState(NOT_ENOUGH_MONEY);
}

View File

@@ -139,7 +139,7 @@ gUnknown_203B200: /* 203B200 */
.include "src/felicity_bank.o"
.include "src/kangaskhan_storage.o"
gUnknown_203B210: /* 203B210 */
gKecleonBrosWork: /* 203B210 */
.space 0x4
gUnknown_203B214: /* 203B214 */