mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-26 03:34:15 +01:00
Decompile berry_powder.c
This commit is contained in:
parent
456cc3a6f0
commit
cf917a8733
@ -404,7 +404,7 @@ _08020F48:
|
|||||||
ldr r1, [r4]
|
ldr r1, [r4]
|
||||||
ldr r0, [r1, 0x68]
|
ldr r0, [r1, 0x68]
|
||||||
str r0, [r1, 0x1C]
|
str r0, [r1, 0x1C]
|
||||||
bl sub_8024700
|
bl GiveBerryPowder
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
cmp r0, 0
|
cmp r0, 0
|
||||||
bne _08020F66
|
bne _08020F66
|
||||||
@ -6510,7 +6510,7 @@ _080240DC:
|
|||||||
movs r3, 0x6
|
movs r3, 0x6
|
||||||
bl ConvertIntToDecimalStringN
|
bl ConvertIntToDecimalStringN
|
||||||
ldr r4, =gStringVar2
|
ldr r4, =gStringVar2
|
||||||
bl sub_80247BC
|
bl GetBerryPowder
|
||||||
adds r1, r0, 0
|
adds r1, r0, 0
|
||||||
adds r0, r4, 0
|
adds r0, r4, 0
|
||||||
movs r2, 0
|
movs r2, 0
|
||||||
|
@ -1,374 +0,0 @@
|
|||||||
.include "asm/macros.inc"
|
|
||||||
.include "constants/constants.inc"
|
|
||||||
|
|
||||||
.syntax unified
|
|
||||||
|
|
||||||
.text
|
|
||||||
|
|
||||||
thumb_func_start sub_8024668
|
|
||||||
sub_8024668: @ 8024668
|
|
||||||
ldr r1, =gSaveBlock2Ptr
|
|
||||||
ldr r1, [r1]
|
|
||||||
adds r1, 0xAC
|
|
||||||
ldr r0, [r0]
|
|
||||||
ldr r1, [r1]
|
|
||||||
eors r0, r1
|
|
||||||
bx lr
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_8024668
|
|
||||||
|
|
||||||
thumb_func_start SetBerryPowder
|
|
||||||
SetBerryPowder: @ 802467C
|
|
||||||
ldr r2, =gSaveBlock2Ptr
|
|
||||||
ldr r2, [r2]
|
|
||||||
adds r2, 0xAC
|
|
||||||
ldr r2, [r2]
|
|
||||||
eors r2, r1
|
|
||||||
str r2, [r0]
|
|
||||||
bx lr
|
|
||||||
.pool
|
|
||||||
thumb_func_end SetBerryPowder
|
|
||||||
|
|
||||||
thumb_func_start ApplyNewEncryptionKeyToBerryPowder
|
|
||||||
ApplyNewEncryptionKeyToBerryPowder: @ 8024690
|
|
||||||
push {lr}
|
|
||||||
adds r1, r0, 0
|
|
||||||
ldr r0, =gSaveBlock2Ptr
|
|
||||||
ldr r0, [r0]
|
|
||||||
movs r2, 0xFA
|
|
||||||
lsls r2, 1
|
|
||||||
adds r0, r2
|
|
||||||
bl ApplyNewEncryptionKeyToWord
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end ApplyNewEncryptionKeyToBerryPowder
|
|
||||||
|
|
||||||
thumb_func_start sub_80246AC
|
|
||||||
sub_80246AC: @ 80246AC
|
|
||||||
push {r4,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
ldr r0, =gSaveBlock2Ptr
|
|
||||||
ldr r0, [r0]
|
|
||||||
movs r1, 0xFA
|
|
||||||
lsls r1, 1
|
|
||||||
adds r0, r1
|
|
||||||
bl sub_8024668
|
|
||||||
cmp r0, r4
|
|
||||||
bcc _080246CC
|
|
||||||
movs r0, 0x1
|
|
||||||
b _080246CE
|
|
||||||
.pool
|
|
||||||
_080246CC:
|
|
||||||
movs r0, 0
|
|
||||||
_080246CE:
|
|
||||||
pop {r4}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_80246AC
|
|
||||||
|
|
||||||
thumb_func_start sub_80246D4
|
|
||||||
sub_80246D4: @ 80246D4
|
|
||||||
push {lr}
|
|
||||||
ldr r0, =gSaveBlock2Ptr
|
|
||||||
ldr r0, [r0]
|
|
||||||
movs r1, 0xFA
|
|
||||||
lsls r1, 1
|
|
||||||
adds r0, r1
|
|
||||||
bl sub_8024668
|
|
||||||
ldr r1, =gSpecialVar_0x8004
|
|
||||||
ldrh r1, [r1]
|
|
||||||
cmp r0, r1
|
|
||||||
bcc _080246F8
|
|
||||||
movs r0, 0x1
|
|
||||||
b _080246FA
|
|
||||||
.pool
|
|
||||||
_080246F8:
|
|
||||||
movs r0, 0
|
|
||||||
_080246FA:
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_80246D4
|
|
||||||
|
|
||||||
thumb_func_start sub_8024700
|
|
||||||
sub_8024700: @ 8024700
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r4, r0, 0
|
|
||||||
ldr r0, =gSaveBlock2Ptr
|
|
||||||
ldr r0, [r0]
|
|
||||||
movs r1, 0xFA
|
|
||||||
lsls r1, 1
|
|
||||||
adds r5, r0, r1
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl sub_8024668
|
|
||||||
adds r1, r0, r4
|
|
||||||
ldr r2, =0x0001869f @ Note to decompiler: See UNKNOWN_OFFSET
|
|
||||||
cmp r1, r2
|
|
||||||
bhi _08024730
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl SetBerryPowder
|
|
||||||
movs r0, 0x1
|
|
||||||
b _0802473A
|
|
||||||
.pool
|
|
||||||
_08024730:
|
|
||||||
adds r0, r5, 0
|
|
||||||
adds r1, r2, 0
|
|
||||||
bl SetBerryPowder
|
|
||||||
movs r0, 0
|
|
||||||
_0802473A:
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_8024700
|
|
||||||
|
|
||||||
thumb_func_start sub_8024740
|
|
||||||
sub_8024740: @ 8024740
|
|
||||||
push {r4,r5,lr}
|
|
||||||
adds r5, r0, 0
|
|
||||||
ldr r0, =gSaveBlock2Ptr
|
|
||||||
ldr r0, [r0]
|
|
||||||
movs r1, 0xFA
|
|
||||||
lsls r1, 1
|
|
||||||
adds r4, r0, r1
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl sub_80246AC
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
beq _08024774
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl sub_8024668
|
|
||||||
adds r1, r0, 0
|
|
||||||
subs r1, r5
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl SetBerryPowder
|
|
||||||
movs r0, 0x1
|
|
||||||
b _08024776
|
|
||||||
.pool
|
|
||||||
_08024774:
|
|
||||||
movs r0, 0
|
|
||||||
_08024776:
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_8024740
|
|
||||||
|
|
||||||
thumb_func_start sub_802477C
|
|
||||||
sub_802477C: @ 802477C
|
|
||||||
push {r4,r5,lr}
|
|
||||||
ldr r0, =gSaveBlock2Ptr
|
|
||||||
ldr r0, [r0]
|
|
||||||
movs r1, 0xFA
|
|
||||||
lsls r1, 1
|
|
||||||
adds r4, r0, r1
|
|
||||||
ldr r5, =gSpecialVar_0x8004
|
|
||||||
ldrh r0, [r5]
|
|
||||||
bl sub_80246AC
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080247B4
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl sub_8024668
|
|
||||||
adds r1, r0, 0
|
|
||||||
ldrh r0, [r5]
|
|
||||||
subs r1, r0
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl SetBerryPowder
|
|
||||||
movs r0, 0x1
|
|
||||||
b _080247B6
|
|
||||||
.pool
|
|
||||||
_080247B4:
|
|
||||||
movs r0, 0
|
|
||||||
_080247B6:
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_802477C
|
|
||||||
|
|
||||||
thumb_func_start sub_80247BC
|
|
||||||
sub_80247BC: @ 80247BC
|
|
||||||
push {lr}
|
|
||||||
ldr r0, =gSaveBlock2Ptr
|
|
||||||
ldr r0, [r0]
|
|
||||||
movs r1, 0xFA
|
|
||||||
lsls r1, 1
|
|
||||||
adds r0, r1
|
|
||||||
bl sub_8024668
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_80247BC
|
|
||||||
|
|
||||||
thumb_func_start sub_80247D4
|
|
||||||
sub_80247D4: @ 80247D4
|
|
||||||
push {r4-r6,lr}
|
|
||||||
mov r6, r9
|
|
||||||
mov r5, r8
|
|
||||||
push {r5,r6}
|
|
||||||
sub sp, 0xC
|
|
||||||
adds r6, r0, 0
|
|
||||||
mov r8, r2
|
|
||||||
adds r4, r3, 0
|
|
||||||
ldr r5, [sp, 0x24]
|
|
||||||
lsls r6, 24
|
|
||||||
lsrs r6, 24
|
|
||||||
mov r0, r8
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
mov r8, r0
|
|
||||||
lsls r4, 24
|
|
||||||
lsrs r4, 24
|
|
||||||
lsls r5, 24
|
|
||||||
lsrs r5, 24
|
|
||||||
ldr r0, =gStringVar1
|
|
||||||
mov r9, r0
|
|
||||||
movs r2, 0x1
|
|
||||||
movs r3, 0x5
|
|
||||||
bl ConvertIntToDecimalStringN
|
|
||||||
str r4, [sp]
|
|
||||||
str r5, [sp, 0x4]
|
|
||||||
movs r0, 0
|
|
||||||
str r0, [sp, 0x8]
|
|
||||||
adds r0, r6, 0
|
|
||||||
movs r1, 0x1
|
|
||||||
mov r2, r9
|
|
||||||
mov r3, r8
|
|
||||||
bl AddTextPrinterParameterized
|
|
||||||
add sp, 0xC
|
|
||||||
pop {r3,r4}
|
|
||||||
mov r8, r3
|
|
||||||
mov r9, r4
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_80247D4
|
|
||||||
|
|
||||||
thumb_func_start sub_802482C
|
|
||||||
sub_802482C: @ 802482C
|
|
||||||
push {r4-r6,lr}
|
|
||||||
mov r6, r8
|
|
||||||
push {r6}
|
|
||||||
sub sp, 0xC
|
|
||||||
adds r6, r0, 0
|
|
||||||
adds r4, r1, 0
|
|
||||||
adds r5, r2, 0
|
|
||||||
mov r8, r3
|
|
||||||
lsls r6, 24
|
|
||||||
lsrs r6, 24
|
|
||||||
lsls r4, 16
|
|
||||||
lsrs r4, 16
|
|
||||||
lsls r5, 24
|
|
||||||
lsrs r5, 24
|
|
||||||
adds r0, r6, 0
|
|
||||||
movs r1, 0
|
|
||||||
adds r2, r4, 0
|
|
||||||
adds r3, r5, 0
|
|
||||||
bl DrawStdFrameWithCustomTileAndPalette
|
|
||||||
ldr r2, =gText_Powder
|
|
||||||
movs r0, 0x1
|
|
||||||
str r0, [sp]
|
|
||||||
movs r0, 0xFF
|
|
||||||
str r0, [sp, 0x4]
|
|
||||||
movs r4, 0
|
|
||||||
str r4, [sp, 0x8]
|
|
||||||
adds r0, r6, 0
|
|
||||||
movs r1, 0x1
|
|
||||||
movs r3, 0
|
|
||||||
bl AddTextPrinterParameterized
|
|
||||||
str r4, [sp]
|
|
||||||
adds r0, r6, 0
|
|
||||||
mov r1, r8
|
|
||||||
movs r2, 0x1A
|
|
||||||
movs r3, 0x11
|
|
||||||
bl sub_80247D4
|
|
||||||
add sp, 0xC
|
|
||||||
pop {r3}
|
|
||||||
mov r8, r3
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_802482C
|
|
||||||
|
|
||||||
thumb_func_start sub_802488C
|
|
||||||
sub_802488C: @ 802488C
|
|
||||||
push {lr}
|
|
||||||
sub sp, 0x4
|
|
||||||
bl sub_80247BC
|
|
||||||
adds r1, r0, 0
|
|
||||||
ldr r0, =gUnknown_02022C94
|
|
||||||
ldrb r0, [r0]
|
|
||||||
movs r2, 0
|
|
||||||
str r2, [sp]
|
|
||||||
movs r2, 0x1A
|
|
||||||
movs r3, 0x11
|
|
||||||
bl sub_80247D4
|
|
||||||
add sp, 0x4
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_802488C
|
|
||||||
|
|
||||||
thumb_func_start sub_80248B0
|
|
||||||
sub_80248B0: @ 80248B0
|
|
||||||
push {r4,r5,lr}
|
|
||||||
sub sp, 0x18
|
|
||||||
movs r0, 0x7
|
|
||||||
str r0, [sp]
|
|
||||||
movs r0, 0x4
|
|
||||||
str r0, [sp, 0x4]
|
|
||||||
movs r0, 0xF
|
|
||||||
str r0, [sp, 0x8]
|
|
||||||
movs r0, 0x1C
|
|
||||||
str r0, [sp, 0xC]
|
|
||||||
add r0, sp, 0x10
|
|
||||||
movs r1, 0
|
|
||||||
movs r2, 0x1
|
|
||||||
movs r3, 0x1
|
|
||||||
bl SetWindowTemplateFields
|
|
||||||
ldr r4, =gUnknown_02022C94
|
|
||||||
add r0, sp, 0x10
|
|
||||||
bl AddWindow
|
|
||||||
strb r0, [r4]
|
|
||||||
ldrb r0, [r4]
|
|
||||||
movs r1, 0
|
|
||||||
bl FillWindowPixelBuffer
|
|
||||||
ldrb r0, [r4]
|
|
||||||
bl PutWindowTilemap
|
|
||||||
ldrb r0, [r4]
|
|
||||||
ldr r5, =0x0000021d
|
|
||||||
adds r1, r5, 0
|
|
||||||
movs r2, 0xD0
|
|
||||||
bl LoadUserWindowBorderGfx_
|
|
||||||
ldrb r4, [r4]
|
|
||||||
bl sub_80247BC
|
|
||||||
adds r3, r0, 0
|
|
||||||
adds r0, r4, 0
|
|
||||||
adds r1, r5, 0
|
|
||||||
movs r2, 0xD
|
|
||||||
bl sub_802482C
|
|
||||||
add sp, 0x18
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_80248B0
|
|
||||||
|
|
||||||
thumb_func_start sub_8024918
|
|
||||||
sub_8024918: @ 8024918
|
|
||||||
push {r4,lr}
|
|
||||||
ldr r4, =gUnknown_02022C94
|
|
||||||
ldrb r0, [r4]
|
|
||||||
bl ClearWindowTilemap
|
|
||||||
ldrb r0, [r4]
|
|
||||||
movs r1, 0x1
|
|
||||||
bl ClearStdWindowAndFrameToTransparent
|
|
||||||
ldrb r0, [r4]
|
|
||||||
bl RemoveWindow
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_8024918
|
|
||||||
|
|
||||||
.align 2, 0 @ don't pad with nop
|
|
@ -3,8 +3,9 @@
|
|||||||
|
|
||||||
.section .rodata
|
.section .rodata
|
||||||
|
|
||||||
|
|
||||||
.align 2
|
.align 2
|
||||||
gUnknown_082F7BA4_UnrefDupe:: @ 82F444C struct BgTemplate
|
gUnknown_082F7BA4_UnrefDupe:: @ 82F444C struct BgTemplate(???)
|
||||||
.4byte 0x000001e0
|
.4byte 0x000001e0
|
||||||
.4byte 0x000012c9
|
.4byte 0x000012c9
|
||||||
.4byte 0x000012ea
|
.4byte 0x000012ea
|
@ -732,11 +732,11 @@ SlateportCity_EventScript_1DD36E:: @ 81DD36E
|
|||||||
|
|
||||||
SlateportCity_EventScript_1DD39A:: @ 81DD39A
|
SlateportCity_EventScript_1DD39A:: @ 81DD39A
|
||||||
setvar VAR_0x8004, 1
|
setvar VAR_0x8004, 1
|
||||||
specialvar VAR_RESULT, sub_80246D4
|
specialvar VAR_RESULT, HasEnoughBerryPowder
|
||||||
compare VAR_RESULT, 0
|
compare VAR_RESULT, 0
|
||||||
goto_if_eq SlateportCity_EventScript_1DD3C0
|
goto_if_eq SlateportCity_EventScript_1DD3C0
|
||||||
msgbox SlateportCity_Text_1DEE40, MSGBOX_DEFAULT
|
msgbox SlateportCity_Text_1DEE40, MSGBOX_DEFAULT
|
||||||
special sub_80248B0
|
special DisplayBerryPowderVendorMenu
|
||||||
goto SlateportCity_EventScript_1DD3CA
|
goto SlateportCity_EventScript_1DD3CA
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -846,7 +846,7 @@ SlateportCity_EventScript_1DD536:: @ 81DD536
|
|||||||
|
|
||||||
SlateportCity_EventScript_1DD54A:: @ 81DD54A
|
SlateportCity_EventScript_1DD54A:: @ 81DD54A
|
||||||
msgbox SlateportCity_Text_1DEFBC, MSGBOX_DEFAULT
|
msgbox SlateportCity_Text_1DEFBC, MSGBOX_DEFAULT
|
||||||
special sub_8024918
|
special RemoveBerryPowderVendorMenu
|
||||||
release
|
release
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -855,26 +855,26 @@ SlateportCity_EventScript_1DD557:: @ 81DD557
|
|||||||
compare VAR_RESULT, 0
|
compare VAR_RESULT, 0
|
||||||
goto_if_eq SlateportCity_EventScript_1DD3CA
|
goto_if_eq SlateportCity_EventScript_1DD3CA
|
||||||
copyvar VAR_0x8004, VAR_0x8009
|
copyvar VAR_0x8004, VAR_0x8009
|
||||||
specialvar VAR_RESULT, sub_80246D4
|
specialvar VAR_RESULT, HasEnoughBerryPowder
|
||||||
compare VAR_RESULT, 0
|
compare VAR_RESULT, 0
|
||||||
goto_if_eq SlateportCity_EventScript_1DD5CE
|
goto_if_eq SlateportCity_EventScript_1DD5CE
|
||||||
giveitem_std VAR_0x8008
|
giveitem_std VAR_0x8008
|
||||||
compare VAR_RESULT, 0
|
compare VAR_RESULT, 0
|
||||||
goto_if_eq SlateportCity_EventScript_1DD5C1
|
goto_if_eq SlateportCity_EventScript_1DD5C1
|
||||||
copyvar VAR_0x8004, VAR_0x8009
|
copyvar VAR_0x8004, VAR_0x8009
|
||||||
special sub_802477C
|
special TakeBerryPowder
|
||||||
special sub_802488C
|
special PrintPlayerBerryPowderAmount
|
||||||
msgbox SlateportCity_Text_1DEEF7, MSGBOX_YESNO
|
msgbox SlateportCity_Text_1DEEF7, MSGBOX_YESNO
|
||||||
compare VAR_RESULT, 1
|
compare VAR_RESULT, 1
|
||||||
goto_if_eq SlateportCity_EventScript_1DD3CA
|
goto_if_eq SlateportCity_EventScript_1DD3CA
|
||||||
msgbox SlateportCity_Text_1DEF79, MSGBOX_DEFAULT
|
msgbox SlateportCity_Text_1DEF79, MSGBOX_DEFAULT
|
||||||
special sub_8024918
|
special RemoveBerryPowderVendorMenu
|
||||||
release
|
release
|
||||||
end
|
end
|
||||||
|
|
||||||
SlateportCity_EventScript_1DD5C1:: @ 81DD5C1
|
SlateportCity_EventScript_1DD5C1:: @ 81DD5C1
|
||||||
msgbox gUnknown_08272A89, MSGBOX_DEFAULT
|
msgbox gUnknown_08272A89, MSGBOX_DEFAULT
|
||||||
special sub_8024918
|
special RemoveBerryPowderVendorMenu
|
||||||
release
|
release
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -471,11 +471,11 @@ gSpecials:: @ 81DBA64
|
|||||||
def_special sub_813AA04
|
def_special sub_813AA04
|
||||||
def_special sub_813AA18
|
def_special sub_813AA18
|
||||||
def_special sub_813AA44
|
def_special sub_813AA44
|
||||||
def_special sub_80248B0
|
def_special DisplayBerryPowderVendorMenu
|
||||||
def_special sub_8024918
|
def_special RemoveBerryPowderVendorMenu
|
||||||
def_special sub_80246D4
|
def_special HasEnoughBerryPowder
|
||||||
def_special sub_802477C
|
def_special TakeBerryPowder
|
||||||
def_special sub_802488C
|
def_special PrintPlayerBerryPowderAmount
|
||||||
def_special sub_813A820
|
def_special sub_813A820
|
||||||
def_special sub_813A854
|
def_special sub_813A854
|
||||||
def_special sub_813B7D8
|
def_special sub_813B7D8
|
||||||
|
9
include/berry_powder.h
Executable file
9
include/berry_powder.h
Executable file
@ -0,0 +1,9 @@
|
|||||||
|
#ifndef GUARD_BERRY_POWDER_H
|
||||||
|
#define GUARD_BERRY_POWDER_H
|
||||||
|
|
||||||
|
void SetBerryPowder(u32 *powder, u32 amount);
|
||||||
|
void ApplyNewEncryptionKeyToBerryPowder(u32 encryptionKey);
|
||||||
|
bool8 GiveBerryPowder(u32 amountToAdd);
|
||||||
|
u32 GetBerryPowder(void);
|
||||||
|
|
||||||
|
#endif // GUARD_BERRY_POWDER_H
|
@ -2589,4 +2589,7 @@ extern const u8 gUnknown_085EE14B[];
|
|||||||
extern const u8 gUnknown_085EE14F[];
|
extern const u8 gUnknown_085EE14F[];
|
||||||
extern const u8 gUnknown_085EE154[];
|
extern const u8 gUnknown_085EE154[];
|
||||||
|
|
||||||
|
// Berry Powder Menu
|
||||||
|
extern const u8 gText_Powder[];
|
||||||
|
|
||||||
#endif // GUARD_STRINGS_H
|
#endif // GUARD_STRINGS_H
|
||||||
|
@ -64,7 +64,7 @@ SECTIONS {
|
|||||||
asm/mevent_news.o(.text);
|
asm/mevent_news.o(.text);
|
||||||
asm/union_room_chat.o(.text);
|
asm/union_room_chat.o(.text);
|
||||||
asm/berry_crush.o(.text);
|
asm/berry_crush.o(.text);
|
||||||
asm/berry_powder_vendor.o(.text);
|
src/berry_powder.o(.text);
|
||||||
asm/dodrio_berry_picking.o(.text);
|
asm/dodrio_berry_picking.o(.text);
|
||||||
asm/pokemon_jump.o(.text);
|
asm/pokemon_jump.o(.text);
|
||||||
src/rtc.o(.text);
|
src/rtc.o(.text);
|
||||||
@ -413,7 +413,7 @@ SECTIONS {
|
|||||||
data/mevent_server.o(.rodata);
|
data/mevent_server.o(.rodata);
|
||||||
data/union_room_chat.o(.rodata);
|
data/union_room_chat.o(.rodata);
|
||||||
data/berry_crush.o(.rodata);
|
data/berry_crush.o(.rodata);
|
||||||
data/berry_powder_vendor.o(.rodata);
|
data/berry_powder.o(.rodata);
|
||||||
data/dodrio_berry_picking.o(.rodata);
|
data/dodrio_berry_picking.o(.rodata);
|
||||||
data/pokemon_jump.o(.rodata);
|
data/pokemon_jump.o(.rodata);
|
||||||
src/rtc.o(.rodata);
|
src/rtc.o(.rodata);
|
||||||
|
128
src/berry_powder.c
Executable file
128
src/berry_powder.c
Executable file
@ -0,0 +1,128 @@
|
|||||||
|
#include "global.h"
|
||||||
|
#include "berry_powder.h"
|
||||||
|
#include "bg.h"
|
||||||
|
#include "event_data.h"
|
||||||
|
#include "load_save.h"
|
||||||
|
#include "menu.h"
|
||||||
|
#include "string_util.h"
|
||||||
|
#include "strings.h"
|
||||||
|
#include "text.h"
|
||||||
|
#include "text_window.h"
|
||||||
|
#include "window.h"
|
||||||
|
|
||||||
|
#define MAX_BERRY_POWDER 99999
|
||||||
|
|
||||||
|
static EWRAM_DATA u8 sBerryPowderVendorWindowId = 0;
|
||||||
|
|
||||||
|
static u32 DecryptBerryPowder(u32 *powder)
|
||||||
|
{
|
||||||
|
return *powder ^ gSaveBlock2Ptr->encryptionKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetBerryPowder(u32 *powder, u32 amount)
|
||||||
|
{
|
||||||
|
*powder = amount ^ gSaveBlock2Ptr->encryptionKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ApplyNewEncryptionKeyToBerryPowder(u32 encryptionKey)
|
||||||
|
{
|
||||||
|
u32 *powder = &gSaveBlock2Ptr->berryCrush.berryPowderAmount;
|
||||||
|
ApplyNewEncryptionKeyToWord(powder, encryptionKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool8 HasEnoughBerryPowder_(u32 cost)
|
||||||
|
{
|
||||||
|
u32 *powder = &gSaveBlock2Ptr->berryCrush.berryPowderAmount;
|
||||||
|
if (DecryptBerryPowder(powder) < cost)
|
||||||
|
return FALSE;
|
||||||
|
else
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 HasEnoughBerryPowder(void)
|
||||||
|
{
|
||||||
|
u32 *powder = &gSaveBlock2Ptr->berryCrush.berryPowderAmount;
|
||||||
|
if (DecryptBerryPowder(powder) < gSpecialVar_0x8004)
|
||||||
|
return FALSE;
|
||||||
|
else
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 GiveBerryPowder(u32 amountToAdd)
|
||||||
|
{
|
||||||
|
u32 *powder = &gSaveBlock2Ptr->berryCrush.berryPowderAmount;
|
||||||
|
u32 amount = DecryptBerryPowder(powder) + amountToAdd;
|
||||||
|
if (amount > MAX_BERRY_POWDER)
|
||||||
|
{
|
||||||
|
SetBerryPowder(powder, MAX_BERRY_POWDER);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SetBerryPowder(powder, amount);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool8 TakeBerryPowder_(u32 cost)
|
||||||
|
{
|
||||||
|
u32 *powder = &gSaveBlock2Ptr->berryCrush.berryPowderAmount;
|
||||||
|
if (!HasEnoughBerryPowder_(cost))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
SetBerryPowder(powder, DecryptBerryPowder(powder) - cost);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool8 TakeBerryPowder(void)
|
||||||
|
{
|
||||||
|
u32 *powder = &gSaveBlock2Ptr->berryCrush.berryPowderAmount;
|
||||||
|
if (!HasEnoughBerryPowder_(gSpecialVar_0x8004))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
SetBerryPowder(powder, DecryptBerryPowder(powder) - gSpecialVar_0x8004);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 GetBerryPowder(void)
|
||||||
|
{
|
||||||
|
u32 *powder = &gSaveBlock2Ptr->berryCrush.berryPowderAmount;
|
||||||
|
return DecryptBerryPowder(powder);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void PrintBerryPowderAmount(u8 windowId, int amount, u8 x, u8 y, u8 speed)
|
||||||
|
{
|
||||||
|
ConvertIntToDecimalStringN(gStringVar1, amount, STR_CONV_MODE_RIGHT_ALIGN, 5);
|
||||||
|
AddTextPrinterParameterized(windowId, 1, gStringVar1, x, y, speed, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void DrawPlayerPowderAmount(u8 windowId, u16 baseTileOffset, u8 paletteNum, u32 amount)
|
||||||
|
{
|
||||||
|
DrawStdFrameWithCustomTileAndPalette(windowId, FALSE, baseTileOffset, paletteNum);
|
||||||
|
AddTextPrinterParameterized(windowId, 1, gText_Powder, 0, 1, TEXT_SPEED_FF, NULL);
|
||||||
|
PrintBerryPowderAmount(windowId, amount, 26, 17, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintPlayerBerryPowderAmount(void)
|
||||||
|
{
|
||||||
|
u32 amount = GetBerryPowder();
|
||||||
|
PrintBerryPowderAmount(sBerryPowderVendorWindowId, amount, 26, 17, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void DisplayBerryPowderVendorMenu(void)
|
||||||
|
{
|
||||||
|
struct WindowTemplate template;
|
||||||
|
SetWindowTemplateFields(&template, 0, 1, 1, 7, 4, 15, 0x1C);
|
||||||
|
sBerryPowderVendorWindowId = AddWindow(&template);
|
||||||
|
FillWindowPixelBuffer(sBerryPowderVendorWindowId, PIXEL_FILL(0));
|
||||||
|
PutWindowTilemap(sBerryPowderVendorWindowId);
|
||||||
|
LoadUserWindowBorderGfx_(sBerryPowderVendorWindowId, 0x21D, 0xD0);
|
||||||
|
DrawPlayerPowderAmount(sBerryPowderVendorWindowId, 0x21D, 13, GetBerryPowder());
|
||||||
|
}
|
||||||
|
|
||||||
|
void RemoveBerryPowderVendorMenu(void)
|
||||||
|
{
|
||||||
|
ClearWindowTilemap(sBerryPowderVendorWindowId);
|
||||||
|
ClearStdWindowAndFrameToTransparent(sBerryPowderVendorWindowId, TRUE);
|
||||||
|
RemoveWindow(sBerryPowderVendorWindowId);
|
||||||
|
}
|
@ -4,6 +4,7 @@
|
|||||||
#include "battle_pyramid.h"
|
#include "battle_pyramid.h"
|
||||||
#include "battle_pyramid_bag.h"
|
#include "battle_pyramid_bag.h"
|
||||||
#include "berry.h"
|
#include "berry.h"
|
||||||
|
#include "berry_powder.h"
|
||||||
#include "bike.h"
|
#include "bike.h"
|
||||||
#include "coins.h"
|
#include "coins.h"
|
||||||
#include "data2.h"
|
#include "data2.h"
|
||||||
@ -45,8 +46,6 @@ extern u8 Route102_EventScript_274482[];
|
|||||||
extern u8 Route102_EventScript_2744C0[];
|
extern u8 Route102_EventScript_2744C0[];
|
||||||
extern u8 BattleFrontier_OutsideEast_EventScript_242CFC[];
|
extern u8 BattleFrontier_OutsideEast_EventScript_242CFC[];
|
||||||
|
|
||||||
extern s32 sub_80247BC(void);
|
|
||||||
|
|
||||||
void SetUpItemUseCallback(u8 taskId);
|
void SetUpItemUseCallback(u8 taskId);
|
||||||
void MapPostLoadHook_UseItem(void);
|
void MapPostLoadHook_UseItem(void);
|
||||||
void sub_80AF6D4(void);
|
void sub_80AF6D4(void);
|
||||||
@ -638,7 +637,7 @@ void ItemUseOutOfBattle_CoinCase(u8 taskId)
|
|||||||
|
|
||||||
void ItemUseOutOfBattle_PowderJar(u8 taskId)
|
void ItemUseOutOfBattle_PowderJar(u8 taskId)
|
||||||
{
|
{
|
||||||
ConvertIntToDecimalStringN(gStringVar1, sub_80247BC(), 0, 5);
|
ConvertIntToDecimalStringN(gStringVar1, GetBerryPowder(), 0, 5);
|
||||||
StringExpandPlaceholders(gStringVar4, gText_PowderQty);
|
StringExpandPlaceholders(gStringVar4, gText_PowderQty);
|
||||||
|
|
||||||
if (!gTasks[taskId].data[3])
|
if (!gTasks[taskId].data[3])
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#include "global.h"
|
#include "global.h"
|
||||||
#include "alloc.h"
|
#include "alloc.h"
|
||||||
|
#include "berry_powder.h"
|
||||||
#include "item.h"
|
#include "item.h"
|
||||||
#include "load_save.h"
|
#include "load_save.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
@ -15,8 +16,6 @@
|
|||||||
|
|
||||||
static void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey);
|
static void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey);
|
||||||
|
|
||||||
extern void ApplyNewEncryptionKeyToBerryPowder(u32 key);
|
|
||||||
|
|
||||||
#define SAVEBLOCK_MOVE_RANGE 128
|
#define SAVEBLOCK_MOVE_RANGE 128
|
||||||
|
|
||||||
struct LoadedSaveData
|
struct LoadedSaveData
|
||||||
|
@ -41,12 +41,12 @@
|
|||||||
#include "secret_base.h"
|
#include "secret_base.h"
|
||||||
#include "player_pc.h"
|
#include "player_pc.h"
|
||||||
#include "field_specials.h"
|
#include "field_specials.h"
|
||||||
|
#include "berry_powder.h"
|
||||||
|
|
||||||
|
|
||||||
extern void copy_strings_to_sav1(void);
|
extern void copy_strings_to_sav1(void);
|
||||||
extern void sub_801AFD8(void);
|
extern void sub_801AFD8(void);
|
||||||
extern void ResetPokeJumpResults(void);
|
extern void ResetPokeJumpResults(void);
|
||||||
extern void SetBerryPowder(u32* powder, u32 newValue);
|
|
||||||
|
|
||||||
extern const u8 EventScript_ResetAllMapFlags[];
|
extern const u8 EventScript_ResetAllMapFlags[];
|
||||||
|
|
||||||
|
@ -73,9 +73,9 @@ gUnknown_02022C8C: @ 2022C8C
|
|||||||
gUnknown_02022C90: @ 2022C90
|
gUnknown_02022C90: @ 2022C90
|
||||||
.space 0x4
|
.space 0x4
|
||||||
|
|
||||||
gUnknown_02022C94: @ 2022C94
|
.include "src/berry_powder.o"
|
||||||
.space 0x4
|
|
||||||
|
|
||||||
|
.align 2
|
||||||
gUnknown_02022C98: @ 2022C98
|
gUnknown_02022C98: @ 2022C98
|
||||||
.space 0x4
|
.space 0x4
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user