mirror of
https://github.com/thornAvery/kep-hack.git
synced 2025-11-15 09:36:41 +13:00
disasm of pokemart code
hg-commit-id: f40e4921716f
This commit is contained in:
parent
c8b23cfa9a
commit
44b47cf2b2
427
main.asm
427
main.asm
|
|
@ -5158,7 +5158,7 @@ DisplayPokemartDialogue: ; 2A2E
|
||||||
ld a,$01
|
ld a,$01
|
||||||
ld [$ffb8],a
|
ld [$ffb8],a
|
||||||
ld [$2000],a
|
ld [$2000],a
|
||||||
call $6c20
|
call DisplayPokemartDialogue_
|
||||||
pop af
|
pop af
|
||||||
ld [$ffb8],a
|
ld [$ffb8],a
|
||||||
ld [$2000],a
|
ld [$2000],a
|
||||||
|
|
@ -5352,7 +5352,26 @@ CountSetBits: ; 2B7F
|
||||||
ld [$d11e],a ; store number of set bits
|
ld [$d11e],a ; store number of set bits
|
||||||
ret
|
ret
|
||||||
|
|
||||||
INCBIN "baserom.gbc",$2B96,$2BBB - $2B96
|
; subtracts the amount the player paid from their money
|
||||||
|
; sets carry flag if there is enough money and unsets carry flag if not
|
||||||
|
SubtractAmountPaidFromMoney: ; 2B96
|
||||||
|
ld b,BANK(SubtractAmountPaidFromMoney_)
|
||||||
|
ld hl,SubtractAmountPaidFromMoney_
|
||||||
|
jp Bankswitch
|
||||||
|
|
||||||
|
; adds the amount the player sold to their money
|
||||||
|
AddAmountSoldToMoney: ; 2B9E
|
||||||
|
ld de,W_PLAYERMONEY1
|
||||||
|
ld hl,$ffa1 ; total price of items
|
||||||
|
ld c,3 ; length of money in bytes
|
||||||
|
ld a,$0b
|
||||||
|
call Predef ; add total price to money
|
||||||
|
ld a,$13
|
||||||
|
ld [$d125],a
|
||||||
|
call DisplayTextBoxID ; redraw money text box
|
||||||
|
ld a,$b2
|
||||||
|
call $3740 ; play sound
|
||||||
|
jp $3748 ; wait until sound is done playing
|
||||||
|
|
||||||
; function to remove an item (in varying quantities) from the player's bag or PC box
|
; function to remove an item (in varying quantities) from the player's bag or PC box
|
||||||
; INPUT:
|
; INPUT:
|
||||||
|
|
@ -5412,7 +5431,7 @@ DisplayListMenuID: ; 2BE6
|
||||||
ld hl,$d730
|
ld hl,$d730
|
||||||
set 6,[hl] ; turn off letter printing delay
|
set 6,[hl] ; turn off letter printing delay
|
||||||
xor a
|
xor a
|
||||||
ld [$cc35],a
|
ld [$cc35],a ; 0 means no item is currently being swapped
|
||||||
ld [$d12a],a
|
ld [$d12a],a
|
||||||
ld a,[$cf8b]
|
ld a,[$cf8b]
|
||||||
ld l,a
|
ld l,a
|
||||||
|
|
@ -5563,7 +5582,7 @@ DisplayListMenuIDLoop: ; 2C53
|
||||||
bit 1,a ; was the B button pressed?
|
bit 1,a ; was the B button pressed?
|
||||||
jp nz,ExitListMenu ; if so, exit the menu
|
jp nz,ExitListMenu ; if so, exit the menu
|
||||||
bit 2,a ; was the select button pressed?
|
bit 2,a ; was the select button pressed?
|
||||||
jp nz,$6b44 ; if so, allow the player to swap menu entries
|
jp nz,HandleItemListSwapping ; if so, allow the player to swap menu entries
|
||||||
ld b,a
|
ld b,a
|
||||||
bit 7,b ; was Down pressed?
|
bit 7,b ; was Down pressed?
|
||||||
ld hl,$cc36 ; index of top (visible) menu item within the list
|
ld hl,$cc36 ; index of top (visible) menu item within the list
|
||||||
|
|
@ -5704,11 +5723,11 @@ DisplayChooseQuantityMenu: ; 2D57
|
||||||
jp .waitForKeyPressLoop\@
|
jp .waitForKeyPressLoop\@
|
||||||
.buttonAPressed\@ ; the player chose to make the transaction
|
.buttonAPressed\@ ; the player chose to make the transaction
|
||||||
xor a
|
xor a
|
||||||
ld [$cc35],a
|
ld [$cc35],a ; 0 means no item is currently being swapped
|
||||||
ret
|
ret
|
||||||
.buttonBPressed\@ ; the player chose to cancel the transaction
|
.buttonBPressed\@ ; the player chose to cancel the transaction
|
||||||
xor a
|
xor a
|
||||||
ld [$cc35],a
|
ld [$cc35],a ; 0 means no item is currently being swapped
|
||||||
ld a,$ff
|
ld a,$ff
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
@ -5730,7 +5749,7 @@ ExitListMenu: ; 2E3B
|
||||||
res 6,[hl]
|
res 6,[hl]
|
||||||
call BankswitchBack
|
call BankswitchBack
|
||||||
xor a
|
xor a
|
||||||
ld [$cc35],a
|
ld [$cc35],a ; 0 means no item is currently being swapped
|
||||||
scf
|
scf
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
@ -5899,14 +5918,14 @@ PrintListMenuEntries: ; 2E5A
|
||||||
inc c
|
inc c
|
||||||
push bc
|
push bc
|
||||||
inc c
|
inc c
|
||||||
ld a,[$cc35]
|
ld a,[$cc35] ; ID of item chosen for swapping (counts from 1)
|
||||||
and a
|
and a ; is an item being swapped?
|
||||||
jr z,.nextListEntry\@
|
jr z,.nextListEntry\@
|
||||||
sla a
|
sla a
|
||||||
cp c
|
cp c ; is it this item?
|
||||||
jr nz,.nextListEntry\@
|
jr nz,.nextListEntry\@
|
||||||
dec hl
|
dec hl
|
||||||
ld a,$ec ; unfilled right arrow menu cursor
|
ld a,$ec ; unfilled right arrow menu cursor to indicate an item being swapped
|
||||||
ld [hli],a
|
ld [hli],a
|
||||||
.nextListEntry\@
|
.nextListEntry\@
|
||||||
ld bc,2 * 20 ; 2 rows
|
ld bc,2 * 20 ; 2 rows
|
||||||
|
|
@ -8155,7 +8174,391 @@ DefaultNamesRivalList:
|
||||||
db "NEW NAME@RED@ASH@JACK@@"
|
db "NEW NAME@RED@ASH@JACK@@"
|
||||||
ENDC
|
ENDC
|
||||||
|
|
||||||
INCBIN "baserom.gbc",$6b21,$6e0c - $6b21
|
; subtracts the amount the player paid from their money
|
||||||
|
; sets carry flag if there is enough money and unsets carry flag if not
|
||||||
|
SubtractAmountPaidFromMoney_: ; 6B21
|
||||||
|
ld de,W_PLAYERMONEY3
|
||||||
|
ld hl,$ff9f ; total price of items
|
||||||
|
ld c,3 ; length of money in bytes
|
||||||
|
call StringCmp
|
||||||
|
ret c
|
||||||
|
ld de,W_PLAYERMONEY1
|
||||||
|
ld hl,$ffa1 ; total price of items
|
||||||
|
ld c,3 ; length of money in bytes
|
||||||
|
ld a,$0c
|
||||||
|
call Predef ; subtract total price from money
|
||||||
|
ld a,$13
|
||||||
|
ld [$d125],a
|
||||||
|
call DisplayTextBoxID ; redraw money text box
|
||||||
|
and a
|
||||||
|
ret
|
||||||
|
|
||||||
|
HandleItemListSwapping: ; 6B44
|
||||||
|
ld a,[W_LISTMENUID]
|
||||||
|
cp a,ITEMLISTMENU
|
||||||
|
jp nz,DisplayListMenuIDLoop ; only rearrange item list menus
|
||||||
|
push hl
|
||||||
|
ld hl,$cf8b
|
||||||
|
ld a,[hli]
|
||||||
|
ld h,[hl]
|
||||||
|
ld l,a
|
||||||
|
inc hl ; hl = beginning of list entries
|
||||||
|
ld a,[W_CURMENUITEMID]
|
||||||
|
ld b,a
|
||||||
|
ld a,[$cc36] ; index of top (visible) menu item within the list
|
||||||
|
add b
|
||||||
|
add a
|
||||||
|
ld c,a
|
||||||
|
ld b,0
|
||||||
|
add hl,bc ; hl = address of currently selected item entry
|
||||||
|
ld a,[hl]
|
||||||
|
pop hl
|
||||||
|
inc a
|
||||||
|
jp z,DisplayListMenuIDLoop ; ignore attempts to swap the Cancel menu item
|
||||||
|
ld a,[$cc35] ; ID of item chosen for swapping (counts from 1)
|
||||||
|
and a ; has the first item to swap already been chosen?
|
||||||
|
jr nz,.swapItems\@
|
||||||
|
; if not, set the currently selected item as the first item
|
||||||
|
ld a,[W_CURMENUITEMID]
|
||||||
|
inc a
|
||||||
|
ld b,a
|
||||||
|
ld a,[$cc36] ; index of top (visible) menu item within the list
|
||||||
|
add b
|
||||||
|
ld [$cc35],a ; ID of item chosen for swapping (counts from 1)
|
||||||
|
ld c,20
|
||||||
|
call DelayFrames
|
||||||
|
jp DisplayListMenuIDLoop
|
||||||
|
.swapItems\@
|
||||||
|
ld a,[W_CURMENUITEMID]
|
||||||
|
inc a
|
||||||
|
ld b,a
|
||||||
|
ld a,[$cc36] ; index of top (visible) menu item within the list
|
||||||
|
add b
|
||||||
|
ld b,a
|
||||||
|
ld a,[$cc35] ; ID of item chosen for swapping (counts from 1)
|
||||||
|
cp b ; is the currently selected item the same as the first item to swap?
|
||||||
|
jp z,DisplayListMenuIDLoop ; ignore attempts to swap an item with itself
|
||||||
|
dec a
|
||||||
|
ld [$cc35],a ; ID of item chosen for swapping (counts from 1)
|
||||||
|
ld c,20
|
||||||
|
call DelayFrames
|
||||||
|
push hl
|
||||||
|
push de
|
||||||
|
ld hl,$cf8b
|
||||||
|
ld a,[hli]
|
||||||
|
ld h,[hl]
|
||||||
|
ld l,a
|
||||||
|
inc hl ; hl = beginning of list entries
|
||||||
|
ld d,h
|
||||||
|
ld e,l ; de = beginning of list entries
|
||||||
|
ld a,[W_CURMENUITEMID]
|
||||||
|
ld b,a
|
||||||
|
ld a,[$cc36] ; index of top (visible) menu item within the list
|
||||||
|
add b
|
||||||
|
add a
|
||||||
|
ld c,a
|
||||||
|
ld b,0
|
||||||
|
add hl,bc ; hl = address of currently selected item entry
|
||||||
|
ld a,[$cc35] ; ID of item chosen for swapping (counts from 1)
|
||||||
|
add a
|
||||||
|
add e
|
||||||
|
ld e,a
|
||||||
|
jr nc,.noCarry\@
|
||||||
|
inc d
|
||||||
|
.noCarry\@ ; de = address of first item to swap
|
||||||
|
ld a,[de]
|
||||||
|
ld b,a
|
||||||
|
ld a,[hli]
|
||||||
|
cp b
|
||||||
|
jr z,.swapSameItemType\@
|
||||||
|
.swapDifferentItems\@
|
||||||
|
ld [$ff95],a ; [$ff95] = second item ID
|
||||||
|
ld a,[hld]
|
||||||
|
ld [$ff96],a ; [$ff96] = second item quantity
|
||||||
|
ld a,[de]
|
||||||
|
ld [hli],a ; put first item ID in second item slot
|
||||||
|
inc de
|
||||||
|
ld a,[de]
|
||||||
|
ld [hl],a ; put first item quantity in second item slot
|
||||||
|
ld a,[$ff96]
|
||||||
|
ld [de],a ; put second item quantity in first item slot
|
||||||
|
dec de
|
||||||
|
ld a,[$ff95]
|
||||||
|
ld [de],a ; put second item ID in first item slot
|
||||||
|
xor a
|
||||||
|
ld [$cc35],a ; 0 means no item is currently being swapped
|
||||||
|
pop de
|
||||||
|
pop hl
|
||||||
|
jp DisplayListMenuIDLoop
|
||||||
|
.swapSameItemType\@
|
||||||
|
inc de
|
||||||
|
ld a,[hl]
|
||||||
|
ld b,a
|
||||||
|
ld a,[de]
|
||||||
|
add b ; a = sum of both item quantities
|
||||||
|
cp a,100 ; is the sum too big for one item slot?
|
||||||
|
jr c,.combineItemSlots\@
|
||||||
|
; swap enough items from the first slot to max out the second slot if they can't be combined
|
||||||
|
sub a,99
|
||||||
|
ld [de],a
|
||||||
|
ld a,99
|
||||||
|
ld [hl],a
|
||||||
|
jr .done\@
|
||||||
|
.combineItemSlots\@
|
||||||
|
ld [hl],a ; put the sum in the second item slot
|
||||||
|
ld hl,$cf8b
|
||||||
|
ld a,[hli]
|
||||||
|
ld h,[hl]
|
||||||
|
ld l,a
|
||||||
|
dec [hl] ; decrease the number of items
|
||||||
|
ld a,[hl]
|
||||||
|
ld [$d12a],a ; update number of items variable
|
||||||
|
cp a,1
|
||||||
|
jr nz,.skipSettingMaxMenuItemID\@
|
||||||
|
ld [W_MAXMENUITEMID],a ; if the number of items is only one now, update the max menu item ID
|
||||||
|
.skipSettingMaxMenuItemID\@
|
||||||
|
dec de
|
||||||
|
ld h,d
|
||||||
|
ld l,e
|
||||||
|
inc hl
|
||||||
|
inc hl ; hl = address of item after first item to swap
|
||||||
|
.moveItemsUpLoop\@ ; erase the first item slot and move up all the following item slots to fill the gap
|
||||||
|
ld a,[hli]
|
||||||
|
ld [de],a
|
||||||
|
inc de
|
||||||
|
inc a ; reached the $ff terminator?
|
||||||
|
jr z,.afterMovingItemsUp\@
|
||||||
|
ld a,[hli]
|
||||||
|
ld [de],a
|
||||||
|
inc de
|
||||||
|
jr .moveItemsUpLoop\@
|
||||||
|
.afterMovingItemsUp\@
|
||||||
|
xor a
|
||||||
|
ld [$cc36],a ; 0 means no item is currently being swapped
|
||||||
|
ld [W_CURMENUITEMID],a
|
||||||
|
.done\@
|
||||||
|
xor a
|
||||||
|
ld [$cc35],a ; 0 means no item is currently being swapped
|
||||||
|
pop de
|
||||||
|
pop hl
|
||||||
|
jp DisplayListMenuIDLoop
|
||||||
|
|
||||||
|
DisplayPokemartDialogue_: ; 6C20
|
||||||
|
ld a,[$cc36]
|
||||||
|
ld [$d07e],a
|
||||||
|
call $2429 ; move sprites
|
||||||
|
xor a
|
||||||
|
ld [$cf0a],a ; flag that is set if something is sold or bought
|
||||||
|
.loop\@
|
||||||
|
xor a
|
||||||
|
ld [$cc36],a
|
||||||
|
ld [W_CURMENUITEMID],a
|
||||||
|
ld [$cc2f],a
|
||||||
|
inc a
|
||||||
|
ld [$cf93],a
|
||||||
|
ld a,$13
|
||||||
|
ld [$d125],a
|
||||||
|
call DisplayTextBoxID ; draw money text box
|
||||||
|
ld a,$15
|
||||||
|
ld [$d125],a
|
||||||
|
call DisplayTextBoxID ; do buy/sell/quit menu
|
||||||
|
ld hl,$d128 ; pointer to this pokemart's inventory
|
||||||
|
ld a,[hli]
|
||||||
|
ld l,[hl]
|
||||||
|
ld h,a ; hl = address of inventory
|
||||||
|
ld a,[$d12e]
|
||||||
|
cp a,$02
|
||||||
|
jp z,.done\@
|
||||||
|
ld a,[$d12d] ; ID of the chosen menu item
|
||||||
|
and a ; buying?
|
||||||
|
jp z,.buyMenu\@
|
||||||
|
dec a ; selling?
|
||||||
|
jp z,.sellMenu\@
|
||||||
|
dec a ; quitting?
|
||||||
|
jp z,.done\@
|
||||||
|
.sellMenu\@
|
||||||
|
xor a
|
||||||
|
ld [$cf93],a
|
||||||
|
ld a,$02
|
||||||
|
ld [$d11b],a
|
||||||
|
ld hl,$5bd5
|
||||||
|
ld b,$0e
|
||||||
|
call Bankswitch
|
||||||
|
ld a,[W_NUMBAGITEMS]
|
||||||
|
and a
|
||||||
|
jp z,.bagEmpty\@
|
||||||
|
ld hl,PokemonSellingGreetingText
|
||||||
|
call PrintText
|
||||||
|
call $3719 ; save screen
|
||||||
|
.sellMenuLoop\@
|
||||||
|
call $3725 ; restore saved screen
|
||||||
|
ld a,$13
|
||||||
|
ld [$d125],a
|
||||||
|
call DisplayTextBoxID ; draw money text box
|
||||||
|
ld hl,W_NUMBAGITEMS
|
||||||
|
ld a,l
|
||||||
|
ld [$cf8b],a
|
||||||
|
ld a,h
|
||||||
|
ld [$cf8c],a
|
||||||
|
xor a
|
||||||
|
ld [$cf93],a
|
||||||
|
ld [W_CURMENUITEMID],a
|
||||||
|
ld a,ITEMLISTMENU
|
||||||
|
ld [W_LISTMENUID],a
|
||||||
|
call DisplayListMenuID
|
||||||
|
jp c,.returnToMainPokemartMenu\@ ; if the player closed the menu
|
||||||
|
.confirmItemSale\@ ; if the player is trying to sell a specific item
|
||||||
|
call $30d9 ; check if item is unsellable
|
||||||
|
ld a,[$d124]
|
||||||
|
and a
|
||||||
|
jr nz,.unsellableItem\@
|
||||||
|
ld a,[$cf91]
|
||||||
|
call IsItemHM
|
||||||
|
jr c,.unsellableItem\@
|
||||||
|
ld a,PRICEDITEMLISTMENU
|
||||||
|
ld [W_LISTMENUID],a
|
||||||
|
ld [$ff8e],a ; halve prices when selling
|
||||||
|
call DisplayChooseQuantityMenu
|
||||||
|
inc a
|
||||||
|
jr z,.sellMenuLoop\@ ; if the player closed the choose quantity menu with the B button
|
||||||
|
ld hl,PokemartTellSellPrice
|
||||||
|
ld bc,$0e01
|
||||||
|
call PrintText
|
||||||
|
FuncCoord 14,7
|
||||||
|
ld hl,Coord
|
||||||
|
ld bc,$080f
|
||||||
|
ld a,$14
|
||||||
|
ld [$d125],a
|
||||||
|
call DisplayTextBoxID ; yes/no menu
|
||||||
|
ld a,[$d12e]
|
||||||
|
cp a,$02
|
||||||
|
jr z,.sellMenuLoop\@ ; if the player pressed the B button
|
||||||
|
ld a,[$d12d] ; ID of the chosen menu item
|
||||||
|
dec a
|
||||||
|
jr z,.sellMenuLoop\@ ; if the player chose No
|
||||||
|
.sellItem\@
|
||||||
|
ld a,[$cf0a] ; flag that is set if something is sold or bought
|
||||||
|
and a
|
||||||
|
jr nz,.skipSettingFlag1\@
|
||||||
|
inc a
|
||||||
|
ld [$cf0a],a
|
||||||
|
.skipSettingFlag1\@
|
||||||
|
call AddAmountSoldToMoney
|
||||||
|
ld hl,W_NUMBAGITEMS
|
||||||
|
call RemoveItemFromInventory
|
||||||
|
jp .sellMenuLoop\@
|
||||||
|
.unsellableItem\@
|
||||||
|
ld hl,PokemartUnsellableItemText
|
||||||
|
call PrintText
|
||||||
|
jp .returnToMainPokemartMenu\@
|
||||||
|
.bagEmpty\@
|
||||||
|
ld hl,PokemartItemBagEmptyText
|
||||||
|
call PrintText
|
||||||
|
call $3719 ; save screen
|
||||||
|
jp .returnToMainPokemartMenu\@
|
||||||
|
.buyMenu\@
|
||||||
|
ld a,$01
|
||||||
|
ld [$cf93],a
|
||||||
|
ld a,$03
|
||||||
|
ld [$d11b],a
|
||||||
|
ld hl,$5bd5
|
||||||
|
ld b,$0e
|
||||||
|
call Bankswitch
|
||||||
|
ld hl,PokemartBuyingGreetingText
|
||||||
|
call PrintText
|
||||||
|
call $3719 ; save screen
|
||||||
|
.buyMenuLoop\@
|
||||||
|
call $3725 ; restore saved screen
|
||||||
|
ld a,$13
|
||||||
|
ld [$d125],a
|
||||||
|
call DisplayTextBoxID ; draw money text box
|
||||||
|
ld hl,$cf7b
|
||||||
|
ld a,l
|
||||||
|
ld [$cf8b],a
|
||||||
|
ld a,h
|
||||||
|
ld [$cf8c],a
|
||||||
|
xor a
|
||||||
|
ld [W_CURMENUITEMID],a
|
||||||
|
inc a
|
||||||
|
ld [$cf93],a
|
||||||
|
inc a ; a = 2 (PRICEDITEMLISTMENU)
|
||||||
|
ld [W_LISTMENUID],a
|
||||||
|
call DisplayListMenuID
|
||||||
|
jr c,.returnToMainPokemartMenu\@ ; if the player closed the menu
|
||||||
|
ld a,$63
|
||||||
|
ld [$cf97],a
|
||||||
|
xor a
|
||||||
|
ld [$ff8e],a
|
||||||
|
call DisplayChooseQuantityMenu
|
||||||
|
inc a
|
||||||
|
jr z,.buyMenuLoop\@ ; if the player closed the choose quantity menu with the B button
|
||||||
|
ld a,[$cf91] ; item ID
|
||||||
|
ld [$d11e],a ; store item ID for GetItemName
|
||||||
|
call GetItemName
|
||||||
|
call $3826 ; copy name to $cf4b
|
||||||
|
ld hl,PokemartTellBuyPrice
|
||||||
|
call PrintText
|
||||||
|
FuncCoord 14,7
|
||||||
|
ld hl,Coord
|
||||||
|
ld bc,$080f
|
||||||
|
ld a,$14
|
||||||
|
ld [$d125],a
|
||||||
|
call DisplayTextBoxID ; yes/no menu
|
||||||
|
ld a,[$d12e]
|
||||||
|
cp a,$02
|
||||||
|
jp z,.buyMenuLoop\@ ; if the player pressed the B button
|
||||||
|
ld a,[$d12d] ; ID of the chosen menu item
|
||||||
|
dec a
|
||||||
|
jr z,.buyMenuLoop\@ ; if the player chose No
|
||||||
|
.buyItem\@
|
||||||
|
call .isThereEnoughMoney\@
|
||||||
|
jr c,.notEnoughMoney\@
|
||||||
|
ld hl,W_NUMBAGITEMS
|
||||||
|
call AddItemToInventory
|
||||||
|
jr nc,.bagFull\@
|
||||||
|
call SubtractAmountPaidFromMoney
|
||||||
|
ld a,[$cf0a] ; flag that is set if something is sold or bought
|
||||||
|
and a
|
||||||
|
jr nz,.skipSettingFlag2\@
|
||||||
|
ld a,$01
|
||||||
|
ld [$cf0a],a
|
||||||
|
.skipSettingFlag2\@
|
||||||
|
ld a,$b2
|
||||||
|
call $3740 ; play sound
|
||||||
|
call $3748 ; wait until sound is done playing
|
||||||
|
ld hl,PokemartBoughtItemText
|
||||||
|
call PrintText
|
||||||
|
jp .buyMenuLoop\@
|
||||||
|
.returnToMainPokemartMenu\@
|
||||||
|
call $3725 ; restore save screen
|
||||||
|
ld a,$13
|
||||||
|
ld [$d125],a
|
||||||
|
call DisplayTextBoxID ; draw money text box
|
||||||
|
ld hl,PokemartAnythingElseText
|
||||||
|
call PrintText
|
||||||
|
jp .loop\@
|
||||||
|
.isThereEnoughMoney\@
|
||||||
|
ld de,W_PLAYERMONEY3
|
||||||
|
ld hl,$ff9f ; item price
|
||||||
|
ld c,3 ; length of money in bytes
|
||||||
|
jp StringCmp
|
||||||
|
.notEnoughMoney\@
|
||||||
|
ld hl,PokemartNotEnoughMoneyText
|
||||||
|
call PrintText
|
||||||
|
jr .returnToMainPokemartMenu\@
|
||||||
|
.bagFull\@
|
||||||
|
ld hl,PokemartItemBagFullText
|
||||||
|
call PrintText
|
||||||
|
jr .returnToMainPokemartMenu\@
|
||||||
|
.done\@
|
||||||
|
ld hl,PokemartThankYouText
|
||||||
|
call PrintText
|
||||||
|
ld a,$01
|
||||||
|
ld [$cfcb],a
|
||||||
|
call $2429 ; move sprites
|
||||||
|
ld a,[$d07e]
|
||||||
|
ld [$cc36],a
|
||||||
|
ret
|
||||||
|
|
||||||
PokemartBuyingGreetingText: ; 0x6e0c
|
PokemartBuyingGreetingText: ; 0x6e0c
|
||||||
TX_FAR _PokemartBuyingGreetingText
|
TX_FAR _PokemartBuyingGreetingText
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue