mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2025-01-23 09:16:20 -08:00
(This is not expected to be their final location, but it makes them easier to relocate when necessary, and easier for users to edit until the whole project's file structure is finalized.)
1379 lines
22 KiB
NASM
Executable File
1379 lines
22 KiB
NASM
Executable File
InitDecorations: ; 26751 (9:6751)
|
|
ld a, DECO_FEATHERY_BED
|
|
ld [Bed], a
|
|
ld a, DECO_TOWN_MAP
|
|
ld [Poster], a
|
|
ret
|
|
|
|
_KrisDecorationMenu: ; 0x2675c
|
|
ld a, [wWhichIndexSet]
|
|
push af
|
|
ld hl, .MenuDataHeader
|
|
call LoadMenuDataHeader
|
|
xor a
|
|
ld [Buffer5], a
|
|
ld a, $1
|
|
ld [Buffer6], a
|
|
.top_loop
|
|
ld a, [Buffer6]
|
|
ld [wMenuCursorBuffer], a
|
|
call .FindCategoriesWithOwnedDecos
|
|
call DoNthMenu
|
|
ld a, [wMenuCursorY]
|
|
ld [Buffer6], a
|
|
jr c, .exit_menu
|
|
ld a, [MenuSelection]
|
|
ld hl, .pointers
|
|
call MenuJumptable
|
|
jr nc, .top_loop
|
|
|
|
.exit_menu
|
|
call ExitMenu
|
|
pop af
|
|
ld [wWhichIndexSet], a
|
|
ld a, [Buffer5]
|
|
ld c, a
|
|
ret
|
|
; 0x2679a
|
|
|
|
.MenuDataHeader: ; 0x2679a
|
|
db $40 ; flags
|
|
db 00, 05 ; start coords
|
|
db 17, 19 ; end coords
|
|
dw .MenuData2
|
|
db 1 ; default option
|
|
; 0x267a2
|
|
|
|
.MenuData2: ; 0x267a2
|
|
db $a0 ; flags
|
|
db 0 ; items
|
|
dw wd002
|
|
dw PlaceNthMenuStrings
|
|
dw .pointers
|
|
; 0x267aa
|
|
|
|
.pointers ; 267aa
|
|
dw DecoBedMenu, .bed
|
|
dw DecoCarpetMenu, .carpet
|
|
dw DecoPlantMenu, .plant
|
|
dw DecoPosterMenu, .poster
|
|
dw DecoConsoleMenu, .game
|
|
dw DecoOrnamentMenu, .ornament
|
|
dw DecoBigDollMenu, .big_doll
|
|
dw DecoExitMenu, .exit
|
|
|
|
.bed db "BED@"
|
|
.carpet db "CARPET@"
|
|
.plant db "PLANT@"
|
|
.poster db "POSTER@"
|
|
.game db "GAME CONSOLE@"
|
|
.ornament db "ORNAMENT@"
|
|
.big_doll db "BIG DOLL@"
|
|
.exit db "EXIT@"
|
|
; 26806
|
|
|
|
.FindCategoriesWithOwnedDecos: ; 26806
|
|
xor a
|
|
ld [wWhichIndexSet], a
|
|
call .ClearStringBuffer2
|
|
call .FindOwndDecos
|
|
ld a, 7
|
|
call .AppendToStringBuffer2
|
|
ld hl, StringBuffer2
|
|
ld de, wd002
|
|
ld bc, ITEM_NAME_LENGTH
|
|
call CopyBytes
|
|
ret
|
|
|
|
.ClearStringBuffer2: ; 26822 (9:6822)
|
|
ld hl, StringBuffer2
|
|
xor a
|
|
ld [hli], a
|
|
ld bc, ITEM_NAME_LENGTH - 1
|
|
ld a, -1
|
|
call ByteFill
|
|
ret
|
|
|
|
.AppendToStringBuffer2: ; 26830 (9:6830)
|
|
ld hl, StringBuffer2
|
|
inc [hl]
|
|
ld e, [hl]
|
|
ld d, 0
|
|
add hl, de
|
|
ld [hl], a
|
|
ret
|
|
|
|
.FindOwndDecos: ; 2683a (9:683a)
|
|
ld hl, .dw
|
|
.loop
|
|
ld a, [hli]
|
|
ld e, a
|
|
ld a, [hli]
|
|
ld d, a
|
|
or e
|
|
jr z, .done
|
|
push hl
|
|
call _de_
|
|
pop hl
|
|
jr nc, .next
|
|
ld a, [hl]
|
|
push hl
|
|
call .AppendToStringBuffer2
|
|
pop hl
|
|
.next
|
|
inc hl
|
|
jr .loop
|
|
.done
|
|
ret
|
|
; 26855 (9:6855)
|
|
|
|
.dw ; 26855
|
|
dwb FindOwnedBeds, 0 ; bed
|
|
dwb FindOwnedCarpets, 1 ; carpet
|
|
dwb FindOwnedPlants, 2 ; plant
|
|
dwb FindOwnedPosters, 3 ; poster
|
|
dwb FindOwnedConsoles, 4 ; game console
|
|
dwb FindOwnedOrnaments, 5 ; ornament
|
|
dwb FindOwnedBigDolls, 6 ; big doll
|
|
dw 0 ; end
|
|
; 2686c
|
|
|
|
Deco_FillTempWithMinusOne: ; 2686c
|
|
xor a
|
|
ld hl, wd002
|
|
ld [hli], a
|
|
ld a, -1
|
|
ld bc, $10
|
|
call ByteFill
|
|
ret
|
|
; 2687a
|
|
|
|
CheckAllDecorationFlags: ; 2687a
|
|
.loop
|
|
ld a, [hli]
|
|
cp -1
|
|
jr z, .done
|
|
push hl
|
|
push af
|
|
ld b, CHECK_FLAG
|
|
call DecorationFlagAction
|
|
ld a, c
|
|
and a
|
|
pop bc
|
|
ld a, b
|
|
call nz, AppendDecoIndex
|
|
pop hl
|
|
jr .loop
|
|
|
|
.done
|
|
ret
|
|
; 26891
|
|
|
|
AppendDecoIndex: ; 26891
|
|
ld hl, wd002
|
|
inc [hl]
|
|
ld e, [hl]
|
|
ld d, $0
|
|
add hl, de
|
|
ld [hl], a
|
|
ret
|
|
; 2689b
|
|
|
|
FindOwnedDecosInCategory: ; 2689b
|
|
push bc
|
|
push hl
|
|
call Deco_FillTempWithMinusOne
|
|
pop hl
|
|
call CheckAllDecorationFlags
|
|
pop bc
|
|
ld a, [wd002]
|
|
and a
|
|
ret z
|
|
|
|
ld a, c
|
|
call AppendDecoIndex
|
|
ld a, 0
|
|
call AppendDecoIndex
|
|
scf
|
|
ret
|
|
; 268b5
|
|
|
|
DecoBedMenu: ; 268b5
|
|
call FindOwnedBeds
|
|
call PopulateDecoCategoryMenu
|
|
xor a
|
|
ret
|
|
; 268bd
|
|
|
|
FindOwnedBeds: ; 268bd
|
|
ld hl, .beds
|
|
ld c, BEDS
|
|
jp FindOwnedDecosInCategory
|
|
; 268c5
|
|
|
|
.beds ; 268c5
|
|
db DECO_FEATHERY_BED ; 2
|
|
db DECO_PINK_BED ; 3
|
|
db DECO_POLKADOT_BED ; 4
|
|
db DECO_PIKACHU_BED ; 5
|
|
db -1
|
|
; 268ca
|
|
|
|
DecoCarpetMenu: ; 268ca
|
|
call FindOwnedCarpets
|
|
call PopulateDecoCategoryMenu
|
|
xor a
|
|
ret
|
|
; 268d2
|
|
|
|
FindOwnedCarpets: ; 268d2
|
|
ld hl, .carpets
|
|
ld c, CARPETS
|
|
jp FindOwnedDecosInCategory
|
|
; 268da
|
|
|
|
.carpets ; 268da
|
|
db DECO_RED_CARPET ; 7
|
|
db DECO_BLUE_CARPET ; 8
|
|
db DECO_YELLOW_CARPET ; 9
|
|
db DECO_GREEN_CARPET ; a
|
|
db -1
|
|
; 268df
|
|
|
|
DecoPlantMenu: ; 268df
|
|
call FindOwnedPlants
|
|
call PopulateDecoCategoryMenu
|
|
xor a
|
|
ret
|
|
; 268e7
|
|
|
|
FindOwnedPlants: ; 268e7
|
|
ld hl, .plants
|
|
ld c, PLANTS
|
|
jp FindOwnedDecosInCategory
|
|
; 268ef
|
|
|
|
.plants ; 268ef
|
|
db DECO_MAGNAPLANT ; c
|
|
db DECO_TROPICPLANT ; d
|
|
db DECO_JUMBOPLANT ; e
|
|
db -1
|
|
; 268f3
|
|
|
|
DecoPosterMenu: ; 268f3
|
|
call FindOwnedPosters
|
|
call PopulateDecoCategoryMenu
|
|
xor a
|
|
ret
|
|
; 268fb
|
|
|
|
FindOwnedPosters: ; 268fb
|
|
ld hl, .posters
|
|
ld c, POSTERS
|
|
jp FindOwnedDecosInCategory
|
|
; 26903
|
|
|
|
.posters ; 26903
|
|
db DECO_TOWN_MAP ; 10
|
|
db DECO_PIKACHU_POSTER ; 11
|
|
db DECO_CLEFAIRY_POSTER ; 12
|
|
db DECO_JIGGLYPUFF_POSTER ; 13
|
|
db -1
|
|
; 26908
|
|
|
|
DecoConsoleMenu: ; 26908
|
|
call FindOwnedConsoles
|
|
call PopulateDecoCategoryMenu
|
|
xor a
|
|
ret
|
|
; 26910
|
|
|
|
FindOwnedConsoles: ; 26910
|
|
ld hl, .consoles
|
|
ld c, CONSOLES
|
|
jp FindOwnedDecosInCategory
|
|
; 26918
|
|
|
|
.consoles ; 26918
|
|
db DECO_FAMICOM ; 15
|
|
db DECO_SNES ; 16
|
|
db DECO_N64 ; 17
|
|
db DECO_VIRTUAL_BOY ; 18
|
|
db -1
|
|
; 2691d
|
|
|
|
DecoOrnamentMenu: ; 2691d
|
|
call FindOwnedOrnaments
|
|
call PopulateDecoCategoryMenu
|
|
xor a
|
|
ret
|
|
; 26925
|
|
|
|
FindOwnedOrnaments: ; 26925
|
|
ld hl, .ornaments
|
|
ld c, DOLLS
|
|
jp FindOwnedDecosInCategory
|
|
; 2692d
|
|
|
|
.ornaments ; 2692d
|
|
db DECO_PIKACHU_DOLL ; 1e
|
|
db DECO_SURF_PIKACHU_DOLL ; 1f
|
|
db DECO_CLEFAIRY_DOLL ; 20
|
|
db DECO_JIGGLYPUFF_DOLL ; 21
|
|
db DECO_BULBASAUR_DOLL ; 22
|
|
db DECO_CHARMANDER_DOLL ; 23
|
|
db DECO_SQUIRTLE_DOLL ; 24
|
|
db DECO_POLIWAG_DOLL ; 25
|
|
db DECO_DIGLETT_DOLL ; 26
|
|
db DECO_STARMIE_DOLL ; 27
|
|
db DECO_MAGIKARP_DOLL ; 28
|
|
db DECO_ODDISH_DOLL ; 29
|
|
db DECO_GENGAR_DOLL ; 2a
|
|
db DECO_SHELLDER_DOLL ; 2b
|
|
db DECO_GRIMER_DOLL ; 2c
|
|
db DECO_VOLTORB_DOLL ; 2d
|
|
db DECO_WEEDLE_DOLL ; 2e
|
|
db DECO_UNOWN_DOLL ; 2f
|
|
db DECO_GEODUDE_DOLL ; 30
|
|
db DECO_MACHOP_DOLL ; 31
|
|
db DECO_TENTACOOL_DOLL ; 32
|
|
db DECO_GOLD_TROPHY_DOLL ; 33
|
|
db DECO_SILVER_TROPHY_DOLL ; 34
|
|
db -1
|
|
; 26945
|
|
|
|
DecoBigDollMenu: ; 26945
|
|
call FindOwnedBigDolls
|
|
call PopulateDecoCategoryMenu
|
|
xor a
|
|
ret
|
|
; 2694d
|
|
|
|
FindOwnedBigDolls: ; 2694d
|
|
ld hl, .big_dolls
|
|
ld c, BIG_DOLLS
|
|
jp FindOwnedDecosInCategory
|
|
; 26955
|
|
|
|
.big_dolls ; 26955
|
|
db DECO_BIG_SNORLAX_DOLL ; 1a
|
|
db DECO_BIG_ONIX_DOLL ; 1b
|
|
db DECO_BIG_LAPRAS_DOLL ; 1c
|
|
db -1
|
|
; 26959
|
|
|
|
DecoExitMenu: ; 26959
|
|
scf
|
|
ret
|
|
; 2695b
|
|
|
|
PopulateDecoCategoryMenu: ; 2695b
|
|
ld a, [wd002]
|
|
and a
|
|
jr z, .empty
|
|
cp 8
|
|
jr nc, .beyond_eight
|
|
xor a
|
|
ld [wWhichIndexSet], a
|
|
ld hl, .NonscrollingMenuDataHeader
|
|
call LoadMenuDataHeader
|
|
call DoNthMenu
|
|
jr c, .no_action_1
|
|
call DoDecorationAction2
|
|
|
|
.no_action_1
|
|
call ExitMenu
|
|
ret
|
|
|
|
.beyond_eight
|
|
ld hl, wd002
|
|
ld e, [hl]
|
|
dec [hl]
|
|
ld d, 0
|
|
add hl, de
|
|
ld [hl], -1
|
|
call LoadStandardMenuDataHeader
|
|
ld hl, .ScrollingMenuDataHeader
|
|
call CopyMenuDataHeader
|
|
xor a
|
|
ld [hBGMapMode], a
|
|
call InitScrollingMenu
|
|
xor a
|
|
ld [wMenuScrollPosition], a
|
|
call ScrollingMenu
|
|
ld a, [wMenuJoypad]
|
|
cp 2
|
|
jr z, .no_action_2
|
|
call DoDecorationAction2
|
|
|
|
.no_action_2
|
|
call ExitMenu
|
|
ret
|
|
|
|
.empty
|
|
ld hl, .Text_nothing_to_choose
|
|
call MenuTextBoxBackup
|
|
ret
|
|
; 269b0
|
|
|
|
.Text_nothing_to_choose: ; 0x269b0
|
|
; There's nothing to choose.
|
|
text_jump UnknownText_0x1bc471
|
|
db "@"
|
|
; 0x269b5
|
|
|
|
.NonscrollingMenuDataHeader: ; 0x269b5
|
|
db $40 ; flags
|
|
db 00, 00 ; start coords
|
|
db 17, 19 ; end coords
|
|
dw .NonscrollingMenuData2
|
|
db 1 ; default option
|
|
; 0x269bd
|
|
|
|
.NonscrollingMenuData2: ; 0x269bd
|
|
db $a0 ; flags
|
|
db 0 ; items
|
|
dw wd002
|
|
dw DecorationMenuFunction
|
|
dw DecorationAttributes
|
|
; 0x269c5
|
|
|
|
.ScrollingMenuDataHeader: ; 0x269c5
|
|
db $40 ; flags
|
|
db 01, 01 ; start coords
|
|
db 16, 18 ; end coords
|
|
dw .ScrollingMenuData2
|
|
db 1 ; default option
|
|
; 0x269cd
|
|
|
|
.ScrollingMenuData2: ; 0x269cd
|
|
db $10 ; flags
|
|
db 8, 0 ; rows, columns
|
|
db 1 ; horizontal spacing
|
|
dbw 0, wd002 ; text pointer
|
|
dba DecorationMenuFunction
|
|
dbw 0, 0
|
|
dbw 0, 0
|
|
; 269dd
|
|
|
|
|
|
GetDecorationData: ; 269dd
|
|
ld hl, DecorationAttributes
|
|
ld bc, 6
|
|
call AddNTimes
|
|
ret
|
|
; 269e7
|
|
|
|
GetDecorationName: ; 269e7
|
|
push hl
|
|
call GetDecorationData
|
|
call GetDecoName
|
|
pop hl
|
|
call CopyName2
|
|
ret
|
|
; 269f3
|
|
|
|
DecorationMenuFunction: ; 269f3
|
|
ld a, [MenuSelection]
|
|
push de
|
|
call GetDecorationData
|
|
call GetDecoName
|
|
pop hl
|
|
call PlaceString
|
|
ret
|
|
; 26a02
|
|
|
|
DoDecorationAction2: ; 26a02
|
|
ld a, [MenuSelection]
|
|
call GetDecorationData
|
|
ld de, 2 ; function 2
|
|
add hl, de
|
|
ld a, [hl]
|
|
ld hl, .DecoActions
|
|
rst JumpTable
|
|
ret
|
|
; 26a12
|
|
|
|
.DecoActions: ; 26a12
|
|
dw DecoAction_nothing
|
|
dw DecoAction_setupbed
|
|
dw DecoAction_putawaybed
|
|
dw DecoAction_setupcarpet
|
|
dw DecoAction_putawaycarpet
|
|
dw DecoAction_setupplant
|
|
dw DecoAction_putawayplant
|
|
dw DecoAction_setupposter
|
|
dw DecoAction_putawayposter
|
|
dw DecoAction_setupconsole
|
|
dw DecoAction_putawayconsole
|
|
dw DecoAction_setupbigdoll
|
|
dw DecoAction_putawaybigdoll
|
|
dw DecoAction_setupornament
|
|
dw DecoAction_putawayornament
|
|
; 26a30
|
|
|
|
|
|
GetDecorationFlag: ; 26a30
|
|
call GetDecorationData
|
|
ld de, 3 ; event flag
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld d, [hl]
|
|
ld e, a
|
|
ret
|
|
; 26a3b
|
|
|
|
DecorationFlagAction: ; 26a3b
|
|
push bc
|
|
call GetDecorationFlag
|
|
pop bc
|
|
call EventFlagAction
|
|
ret
|
|
; 26a44
|
|
|
|
GetDecorationSprite: ; 26a44
|
|
ld a, c
|
|
call GetDecorationData
|
|
ld de, 5 ; sprite
|
|
add hl, de
|
|
ld a, [hl]
|
|
ld c, a
|
|
ret
|
|
; 26a4f
|
|
|
|
DecorationAttributes: ; 26a4f
|
|
INCLUDE "data/decoration_attributes.asm"
|
|
; 26b8d
|
|
|
|
DecorationNames: ; 26b8d
|
|
db "CANCEL@"
|
|
db "PUT IT AWAY@"
|
|
db "MAGNAPLANT@"
|
|
db "TROPICPLANT@"
|
|
db "JUMBOPLANT@"
|
|
db "TOWN MAP@"
|
|
db "NES@"
|
|
db "SUPER NES@"
|
|
db "NINTENDO 64@"
|
|
db "VIRTUAL BOY@"
|
|
db "GOLD TROPHY@"
|
|
db "SILVER TROPHY@"
|
|
db "SURF PIKACHU DOLL@"
|
|
db " BED@"
|
|
db " CARPET@"
|
|
db " POSTER@"
|
|
db " DOLL@"
|
|
db "BIG @"
|
|
db "FEATHERY@"
|
|
db "PIKACHU@"
|
|
db "PINK@"
|
|
db "POLKADOT@"
|
|
db "RED@"
|
|
db "BLUE@"
|
|
db "YELLOW@"
|
|
db "GREEN@"
|
|
; 26c72
|
|
|
|
GetDecoName: ; 26c72
|
|
ld a, [hli]
|
|
ld e, [hl]
|
|
ld bc, StringBuffer2
|
|
push bc
|
|
ld hl, .NameFunctions
|
|
rst JumpTable
|
|
pop de
|
|
ret
|
|
; 26c7e
|
|
|
|
.NameFunctions: ; 26c7e
|
|
dw .invalid
|
|
dw .plant
|
|
dw .bed
|
|
dw .carpet
|
|
dw .poster
|
|
dw .doll
|
|
dw .bigdoll
|
|
; 26c8c
|
|
|
|
|
|
.invalid ; 26c8c
|
|
ret
|
|
; 26c8d
|
|
|
|
.plant ; 26c8d
|
|
ld a, e
|
|
jr .getdeconame
|
|
|
|
.bed ; 26c90
|
|
call .plant
|
|
ld a, _BED
|
|
jr .getdeconame
|
|
|
|
.carpet ; 26c97
|
|
call .plant
|
|
ld a, _CARPET
|
|
jr .getdeconame
|
|
|
|
.poster ; 26c9e
|
|
ld a, e
|
|
call .getpokename
|
|
ld a, _POSTER
|
|
jr .getdeconame
|
|
|
|
.doll ; 26ca6
|
|
ld a, e
|
|
call .getpokename
|
|
ld a, _DOLL
|
|
jr .getdeconame
|
|
|
|
.bigdoll ; 26cae
|
|
push de
|
|
ld a, BIG_
|
|
call .getdeconame
|
|
pop de
|
|
ld a, e
|
|
jr .getpokename
|
|
|
|
.unused ; 26cb8
|
|
push de
|
|
call .getdeconame
|
|
pop de
|
|
ld a, e
|
|
jr .getdeconame
|
|
|
|
.getpokename ; 26cc0
|
|
push bc
|
|
ld [wd265], a
|
|
call GetPokemonName
|
|
pop bc
|
|
jr .copy
|
|
|
|
.getdeconame ; 26cca
|
|
call ._getdeconame
|
|
jr .copy
|
|
|
|
._getdeconame ; 26ccf
|
|
push bc
|
|
ld hl, DecorationNames
|
|
call GetNthString
|
|
ld d, h
|
|
ld e, l
|
|
pop bc
|
|
ret
|
|
|
|
.copy ; 26cda
|
|
ld h, b
|
|
ld l, c
|
|
call CopyName2
|
|
dec hl
|
|
ld b, h
|
|
ld c, l
|
|
ret
|
|
; 26ce3
|
|
|
|
DecoAction_nothing: ; 26ce3
|
|
scf
|
|
ret
|
|
; 26ce5
|
|
|
|
DecoAction_setupbed: ; 26ce5
|
|
ld hl, Bed
|
|
jp DecoAction_TrySetItUp
|
|
; 26ceb
|
|
|
|
DecoAction_putawaybed: ; 26ceb
|
|
ld hl, Bed
|
|
jp DecoAction_TryPutItAway
|
|
; 26cf1
|
|
|
|
DecoAction_setupcarpet: ; 26cf1
|
|
ld hl, Carpet
|
|
jp DecoAction_TrySetItUp
|
|
; 26cf7
|
|
|
|
DecoAction_putawaycarpet: ; 26cf7
|
|
ld hl, Carpet
|
|
jp DecoAction_TryPutItAway
|
|
; 26cfd
|
|
|
|
DecoAction_setupplant: ; 26cfd
|
|
ld hl, Plant
|
|
jp DecoAction_TrySetItUp
|
|
; 26d03
|
|
|
|
DecoAction_putawayplant: ; 26d03
|
|
ld hl, Plant
|
|
jp DecoAction_TryPutItAway
|
|
; 26d09
|
|
|
|
DecoAction_setupposter: ; 26d09
|
|
ld hl, Poster
|
|
jp DecoAction_TrySetItUp
|
|
; 26d0f
|
|
|
|
DecoAction_putawayposter: ; 26d0f
|
|
ld hl, Poster
|
|
jp DecoAction_TryPutItAway
|
|
; 26d15
|
|
|
|
DecoAction_setupconsole: ; 26d15
|
|
ld hl, Console
|
|
jp DecoAction_TrySetItUp
|
|
; 26d1b
|
|
|
|
DecoAction_putawayconsole: ; 26d1b
|
|
ld hl, Console
|
|
jp DecoAction_TryPutItAway
|
|
; 26d21
|
|
|
|
DecoAction_setupbigdoll: ; 26d21
|
|
ld hl, BigDoll
|
|
jp DecoAction_TrySetItUp
|
|
; 26d27
|
|
|
|
DecoAction_putawaybigdoll: ; 26d27
|
|
ld hl, BigDoll
|
|
jp DecoAction_TryPutItAway
|
|
; 26d2d
|
|
|
|
DecoAction_TrySetItUp: ; 26d2d
|
|
ld a, [hl]
|
|
ld [Buffer1], a
|
|
push hl
|
|
call DecoAction_SetItUp
|
|
jr c, .failed
|
|
ld a, 1
|
|
ld [Buffer5], a
|
|
pop hl
|
|
ld a, [MenuSelection]
|
|
ld [hl], a
|
|
xor a
|
|
ret
|
|
|
|
.failed
|
|
pop hl
|
|
xor a
|
|
ret
|
|
; 26d46
|
|
|
|
DecoAction_SetItUp: ; 26d46
|
|
; See if there's anything of the same type already out
|
|
ld a, [Buffer1]
|
|
and a
|
|
jr z, .nothingthere
|
|
; See if that item is already out
|
|
ld b, a
|
|
ld a, [MenuSelection]
|
|
cp b
|
|
jr z, .alreadythere
|
|
; Put away the item that's already out, and set up the new one
|
|
ld a, [MenuSelection]
|
|
ld hl, StringBuffer4
|
|
call GetDecorationName
|
|
ld a, [Buffer1]
|
|
ld hl, StringBuffer3
|
|
call GetDecorationName
|
|
ld hl, DecoText_PutAwayAndSetUp
|
|
call MenuTextBoxBackup
|
|
xor a
|
|
ret
|
|
|
|
.nothingthere
|
|
ld a, [MenuSelection]
|
|
ld hl, StringBuffer3
|
|
call GetDecorationName
|
|
ld hl, DecoText_SetUpTheDeco
|
|
call MenuTextBoxBackup
|
|
xor a
|
|
ret
|
|
|
|
.alreadythere
|
|
ld hl, DecoText_AlreadySetUp
|
|
call MenuTextBoxBackup
|
|
scf
|
|
ret
|
|
; 26d86
|
|
|
|
DecoAction_TryPutItAway: ; 26d86
|
|
; If there is no item of that type already set, there is nothing to put away.
|
|
ld a, [hl]
|
|
ld [Buffer1], a
|
|
xor a
|
|
ld [hl], a
|
|
ld a, [Buffer1]
|
|
and a
|
|
jr z, .nothingthere
|
|
; Put it away.
|
|
ld a, $1
|
|
ld [Buffer5], a
|
|
ld a, [Buffer1]
|
|
ld [MenuSelection], a
|
|
ld hl, StringBuffer3
|
|
call GetDecorationName
|
|
ld hl, DecoText_PutAwayTheDeco
|
|
call MenuTextBoxBackup
|
|
xor a
|
|
ret
|
|
|
|
.nothingthere
|
|
ld hl, DecoText_NothingToPutAway
|
|
call MenuTextBoxBackup
|
|
xor a
|
|
ret
|
|
; 26db3
|
|
|
|
DecoAction_setupornament: ; 26db3
|
|
ld hl, UnknownText_0x26e41
|
|
call DecoAction_AskWhichSide
|
|
jr c, .cancel
|
|
call DecoAction_SetItUp_Ornament
|
|
jr c, .cancel
|
|
ld a, $1
|
|
ld [Buffer5], a
|
|
jr DecoAction_FinishUp_Ornament
|
|
|
|
.cancel
|
|
xor a
|
|
ret
|
|
|
|
DecoAction_putawayornament: ; 26dc9
|
|
ld hl, DecoText_WhichSide
|
|
call DecoAction_AskWhichSide
|
|
jr nc, .incave
|
|
xor a
|
|
ret
|
|
|
|
.incave
|
|
call DecoAction_PutItAway_Ornament
|
|
|
|
DecoAction_FinishUp_Ornament: ; 26dd6
|
|
call QueryWhichSide
|
|
ld a, [wSelectedDecoration]
|
|
ld [hl], a
|
|
ld a, [wOtherDecoration]
|
|
ld [de], a
|
|
xor a
|
|
ret
|
|
; 26de3
|
|
|
|
DecoAction_SetItUp_Ornament: ; 26de3
|
|
ld a, [wSelectedDecoration]
|
|
and a
|
|
jr z, .nothingthere
|
|
ld b, a
|
|
ld a, [MenuSelection]
|
|
cp b
|
|
jr z, .failed
|
|
ld a, b
|
|
ld hl, StringBuffer3
|
|
call GetDecorationName
|
|
ld a, [MenuSelection]
|
|
ld hl, StringBuffer4
|
|
call GetDecorationName
|
|
ld a, [MenuSelection]
|
|
ld [wSelectedDecoration], a
|
|
call .getwhichside
|
|
ld hl, DecoText_PutAwayAndSetUp
|
|
call MenuTextBoxBackup
|
|
xor a
|
|
ret
|
|
|
|
.nothingthere
|
|
ld a, [MenuSelection]
|
|
ld [wSelectedDecoration], a
|
|
call .getwhichside
|
|
ld a, [MenuSelection]
|
|
ld hl, StringBuffer3
|
|
call GetDecorationName
|
|
ld hl, DecoText_SetUpTheDeco
|
|
call MenuTextBoxBackup
|
|
xor a
|
|
ret
|
|
|
|
.failed
|
|
ld hl, DecoText_AlreadySetUp
|
|
call MenuTextBoxBackup
|
|
scf
|
|
ret
|
|
; 26e33
|
|
|
|
.getwhichside ; 26e33
|
|
ld a, [MenuSelection]
|
|
ld b, a
|
|
ld a, [wOtherDecoration]
|
|
cp b
|
|
ret nz
|
|
xor a
|
|
ld [wOtherDecoration], a
|
|
ret
|
|
; 26e41
|
|
|
|
UnknownText_0x26e41: ; 0x26e41
|
|
; Which side do you want to put it on?
|
|
text_jump UnknownText_0x1bc48c
|
|
db "@"
|
|
; 0x26e46
|
|
|
|
DecoAction_PutItAway_Ornament: ; 26e46
|
|
ld a, [wSelectedDecoration]
|
|
and a
|
|
jr z, .nothingthere
|
|
ld hl, StringBuffer3
|
|
call GetDecorationName
|
|
ld a, $1
|
|
ld [Buffer5], a
|
|
xor a
|
|
ld [wSelectedDecoration], a
|
|
ld hl, DecoText_PutAwayTheDeco
|
|
call MenuTextBoxBackup
|
|
xor a
|
|
ret
|
|
|
|
.nothingthere
|
|
ld hl, DecoText_NothingToPutAway
|
|
call MenuTextBoxBackup
|
|
xor a
|
|
ret
|
|
; 26e6b
|
|
|
|
DecoText_WhichSide: ; 0x26e6b
|
|
; Which side do you want to put away?
|
|
text_jump UnknownText_0x1bc4b2
|
|
db "@"
|
|
; 0x26e70
|
|
|
|
DecoAction_AskWhichSide: ; 26e70
|
|
call MenuTextBox
|
|
ld hl, MenuDataHeader_0x26eab
|
|
call GetMenu2
|
|
call ExitMenu
|
|
call CopyMenuData2
|
|
jr c, .nope
|
|
ld a, [wMenuCursorY]
|
|
cp 3
|
|
jr z, .nope
|
|
ld [Buffer2], a
|
|
call QueryWhichSide
|
|
ld a, [hl]
|
|
ld [wSelectedDecoration], a
|
|
ld a, [de]
|
|
ld [wOtherDecoration], a
|
|
xor a
|
|
ret
|
|
|
|
.nope
|
|
scf
|
|
ret
|
|
; 26e9a
|
|
|
|
QueryWhichSide: ; 26e9a
|
|
ld hl, RightOrnament
|
|
ld de, LeftOrnament
|
|
ld a, [Buffer2]
|
|
cp 1
|
|
ret z
|
|
push hl
|
|
ld h, d
|
|
ld l, e
|
|
pop de
|
|
ret
|
|
; 26eab
|
|
|
|
MenuDataHeader_0x26eab: ; 0x26eab
|
|
db $40 ; flags
|
|
db 00, 00 ; start coords
|
|
db 07, 13 ; end coords
|
|
dw MenuData2_0x26eb3
|
|
db 1 ; default option
|
|
; 0x26eb3
|
|
|
|
MenuData2_0x26eb3: ; 0x26eb3
|
|
db $80 ; flags
|
|
db 3 ; items
|
|
db "RIGHT SIDE@"
|
|
db "LEFT SIDE@"
|
|
db "CANCEL@"
|
|
; 0x26ed1
|
|
|
|
DecoText_PutAwayTheDeco: ; 0x26ed1
|
|
; Put away the @ .
|
|
text_jump UnknownText_0x1bc4d7
|
|
db "@"
|
|
; 0x26ed6
|
|
|
|
DecoText_NothingToPutAway: ; 0x26ed6
|
|
; There's nothing to put away.
|
|
text_jump UnknownText_0x1bc4ec
|
|
db "@"
|
|
; 0x26edb
|
|
|
|
DecoText_SetUpTheDeco: ; 0x26edb
|
|
; Set up the @ .
|
|
text_jump UnknownText_0x1bc509
|
|
db "@"
|
|
; 0x26ee0
|
|
|
|
DecoText_PutAwayAndSetUp: ; 0x26ee0
|
|
; Put away the @ and set up the @ .
|
|
text_jump UnknownText_0x1bc51c
|
|
db "@"
|
|
; 0x26ee5
|
|
|
|
DecoText_AlreadySetUp: ; 0x26ee5
|
|
; That's already set up.
|
|
text_jump UnknownText_0x1bc546
|
|
db "@"
|
|
; 0x26eea
|
|
|
|
GetDecorationName_c_de: ; 26eea
|
|
ld a, c
|
|
ld h, d
|
|
ld l, e
|
|
call GetDecorationName
|
|
ret
|
|
; 26ef1
|
|
|
|
DecorationFlagAction_c: ; 26ef1
|
|
ld a, c
|
|
jp DecorationFlagAction
|
|
; 26ef5
|
|
|
|
|
|
GetDecorationName_c: ; 26ef5 (9:6ef5)
|
|
ld a, c
|
|
call GetDecorationID
|
|
ld hl, StringBuffer1
|
|
push hl
|
|
call GetDecorationName
|
|
pop de
|
|
ret
|
|
|
|
|
|
SetSpecificDecorationFlag: ; 26f02
|
|
ld a, c
|
|
call GetDecorationID
|
|
ld b, SET_FLAG
|
|
call DecorationFlagAction
|
|
ret
|
|
; 26f0c
|
|
|
|
GetDecorationID: ; 26f0c
|
|
push hl
|
|
push de
|
|
ld e, a
|
|
ld d, 0
|
|
ld hl, DecorationIDs
|
|
add hl, de
|
|
ld a, [hl]
|
|
pop de
|
|
pop hl
|
|
ret
|
|
; 26f19
|
|
|
|
SetAllDecorationFlags: ; 26f19
|
|
ld hl, DecorationIDs
|
|
.loop
|
|
ld a, [hli]
|
|
cp -1
|
|
jr z, .done
|
|
push hl
|
|
ld b, SET_FLAG
|
|
call DecorationFlagAction
|
|
pop hl
|
|
jr .loop
|
|
|
|
.done
|
|
ret
|
|
; 26f2b
|
|
|
|
DecorationIDs: ; 26f2b
|
|
db DECO_FEATHERY_BED ; 2
|
|
db DECO_PINK_BED ; 3
|
|
db DECO_POLKADOT_BED ; 4
|
|
db DECO_PIKACHU_BED ; 5
|
|
|
|
db DECO_RED_CARPET ; 7
|
|
db DECO_BLUE_CARPET ; 8
|
|
db DECO_YELLOW_CARPET ; 9
|
|
db DECO_GREEN_CARPET ; a
|
|
|
|
db DECO_MAGNAPLANT ; c
|
|
db DECO_TROPICPLANT ; d
|
|
db DECO_JUMBOPLANT ; e
|
|
|
|
db DECO_TOWN_MAP ; 10
|
|
db DECO_PIKACHU_POSTER ; 11
|
|
db DECO_CLEFAIRY_POSTER ; 12
|
|
db DECO_JIGGLYPUFF_POSTER ; 13
|
|
|
|
db DECO_FAMICOM ; 15
|
|
db DECO_SNES ; 16
|
|
db DECO_N64 ; 17
|
|
db DECO_VIRTUAL_BOY ; 18
|
|
|
|
db DECO_PIKACHU_DOLL ; 1e
|
|
db DECO_SURF_PIKACHU_DOLL ; 1f
|
|
db DECO_CLEFAIRY_DOLL ; 20
|
|
db DECO_JIGGLYPUFF_DOLL ; 21
|
|
db DECO_BULBASAUR_DOLL ; 22
|
|
db DECO_CHARMANDER_DOLL ; 23
|
|
db DECO_SQUIRTLE_DOLL ; 24
|
|
db DECO_POLIWAG_DOLL ; 25
|
|
db DECO_DIGLETT_DOLL ; 26
|
|
db DECO_STARMIE_DOLL ; 27
|
|
db DECO_MAGIKARP_DOLL ; 28
|
|
db DECO_ODDISH_DOLL ; 29
|
|
db DECO_GENGAR_DOLL ; 2a
|
|
db DECO_SHELLDER_DOLL ; 2b
|
|
db DECO_GRIMER_DOLL ; 2c
|
|
db DECO_VOLTORB_DOLL ; 2d
|
|
db DECO_WEEDLE_DOLL ; 2e
|
|
db DECO_UNOWN_DOLL ; 2f
|
|
db DECO_GEODUDE_DOLL ; 30
|
|
db DECO_MACHOP_DOLL ; 31
|
|
db DECO_TENTACOOL_DOLL ; 32
|
|
db DECO_BIG_SNORLAX_DOLL ; 1a
|
|
db DECO_BIG_ONIX_DOLL ; 1b
|
|
db DECO_BIG_LAPRAS_DOLL ; 1c
|
|
Trophys:
|
|
db DECO_GOLD_TROPHY_DOLL ; 33
|
|
db DECO_SILVER_TROPHY_DOLL ; 34
|
|
db -1
|
|
; 26f59
|
|
|
|
DescribeDecoration:: ; 26f59
|
|
ld a, b
|
|
ld hl, JumpTable_DecorationDesc
|
|
rst JumpTable
|
|
ret
|
|
; 26f5f
|
|
|
|
JumpTable_DecorationDesc: ; 26f5f
|
|
dw DecorationDesc_Poster
|
|
dw DecorationDesc_LeftOrnament
|
|
dw DecorationDesc_RightOrnament
|
|
dw DecorationDesc_GiantOrnament
|
|
dw DecorationDesc_Console
|
|
; 26f69
|
|
|
|
DecorationDesc_Poster: ; 26f69
|
|
ld a, [Poster]
|
|
ld hl, DecorationDesc_PosterPointers
|
|
ld de, 3
|
|
call IsInArray
|
|
jr c, .nope
|
|
ld de, DecorationDesc_NullPoster
|
|
ld b, BANK(DecorationDesc_NullPoster)
|
|
ret
|
|
|
|
.nope
|
|
ld b, BANK(DecorationDesc_TownMapPoster)
|
|
inc hl
|
|
ld a, [hli]
|
|
ld d, [hl]
|
|
ld e, a
|
|
ret
|
|
; 26f84
|
|
|
|
DecorationDesc_PosterPointers: ; 26f84
|
|
dbw DECO_TOWN_MAP, DecorationDesc_TownMapPoster
|
|
dbw DECO_PIKACHU_POSTER, DecorationDesc_PikachuPoster
|
|
dbw DECO_CLEFAIRY_POSTER, DecorationDesc_ClefairyPoster
|
|
dbw DECO_JIGGLYPUFF_POSTER, DecorationDesc_JigglypuffPoster
|
|
db -1
|
|
; 26f91
|
|
|
|
DecorationDesc_TownMapPoster: ; 0x26f91
|
|
opentext
|
|
writetext .TownMapText
|
|
waitbutton
|
|
special Special_TownMap
|
|
closetext
|
|
end
|
|
; 0x26f9b
|
|
|
|
.TownMapText: ; 0x26f9b
|
|
; It's the TOWN MAP.
|
|
text_jump UnknownText_0x1bc55d
|
|
db "@"
|
|
; 0x26fa0
|
|
|
|
DecorationDesc_PikachuPoster: ; 0x26fa0
|
|
jumptext .PikaPosterText
|
|
; 0x26fa3
|
|
|
|
.PikaPosterText: ; 0x26fa3
|
|
; It's a poster of a cute PIKACHU.
|
|
text_jump UnknownText_0x1bc570
|
|
db "@"
|
|
; 0x26fa8
|
|
|
|
DecorationDesc_ClefairyPoster: ; 0x26fa8
|
|
jumptext .ClefairyPosterText
|
|
; 0x26fab
|
|
|
|
.ClefairyPosterText: ; 0x26fab
|
|
; It's a poster of a cute CLEFAIRY.
|
|
text_jump UnknownText_0x1bc591
|
|
db "@"
|
|
; 0x26fb0
|
|
|
|
DecorationDesc_JigglypuffPoster: ; 0x26fb0
|
|
jumptext .JigglypuffPosterText
|
|
; 0x26fb3
|
|
|
|
.JigglypuffPosterText: ; 0x26fb3
|
|
; It's a poster of a cute JIGGLYPUFF.
|
|
text_jump UnknownText_0x1bc5b3
|
|
db "@"
|
|
; 0x26fb8
|
|
|
|
DecorationDesc_NullPoster: ; 26fb8
|
|
end
|
|
; 26fb9
|
|
|
|
DecorationDesc_LeftOrnament: ; 26fb9
|
|
ld a, [LeftOrnament]
|
|
jr DecorationDesc_OrnamentOrConsole
|
|
|
|
DecorationDesc_RightOrnament: ; 26fbe
|
|
ld a, [RightOrnament]
|
|
jr DecorationDesc_OrnamentOrConsole
|
|
|
|
DecorationDesc_Console: ; 26fc3
|
|
ld a, [Console]
|
|
jr DecorationDesc_OrnamentOrConsole
|
|
|
|
DecorationDesc_OrnamentOrConsole: ; 26fc8
|
|
ld c, a
|
|
ld de, StringBuffer3
|
|
call GetDecorationName_c_de
|
|
ld b, BANK(.OrnamentConsoleScript)
|
|
ld de, .OrnamentConsoleScript
|
|
ret
|
|
; 26fd5
|
|
|
|
.OrnamentConsoleScript: ; 26fd5
|
|
jumptext .OrnamentConsoleText
|
|
; 26fd8
|
|
|
|
.OrnamentConsoleText: ; 0x26fd8
|
|
; It's an adorable @ .
|
|
text_jump UnknownText_0x1bc5d7
|
|
db "@"
|
|
; 0x26fdd
|
|
|
|
DecorationDesc_GiantOrnament: ; 26fdd
|
|
ld b, BANK(.BigDollScript)
|
|
ld de, .BigDollScript
|
|
ret
|
|
; 26fe3
|
|
|
|
.BigDollScript: ; 26fe3
|
|
jumptext .BigDollText
|
|
; 26fe6
|
|
|
|
.BigDollText: ; 0x26fe6
|
|
; A giant doll! It's fluffy and cuddly.
|
|
text_jump UnknownText_0x1bc5ef
|
|
db "@"
|
|
; 0x26feb
|
|
|
|
ToggleMaptileDecorations: ; 26feb
|
|
lb de, 0, 4
|
|
ld a, [Bed]
|
|
call SetDecorationTile
|
|
lb de, 7, 4
|
|
ld a, [Plant]
|
|
call SetDecorationTile
|
|
lb de, 6, 0
|
|
ld a, [Poster]
|
|
call SetDecorationTile
|
|
call SetPosterVisibility
|
|
lb de, 0, 0
|
|
call PadCoords_de
|
|
ld a, [Carpet]
|
|
and a
|
|
ret z
|
|
call _GetDecorationSprite
|
|
ld [hl], a
|
|
push af
|
|
lb de, 0, 2
|
|
call PadCoords_de
|
|
pop af
|
|
inc a
|
|
ld [hli], a
|
|
inc a
|
|
ld [hli], a
|
|
dec a
|
|
ld [hl], a
|
|
ret
|
|
; 27027
|
|
|
|
SetPosterVisibility: ; 27027
|
|
ld b, SET_FLAG
|
|
ld a, [Poster]
|
|
and a
|
|
jr nz, .ok
|
|
ld b, RESET_FLAG
|
|
|
|
.ok
|
|
ld de, EVENT_KRISS_ROOM_POSTER
|
|
jp EventFlagAction
|
|
; 27037
|
|
|
|
SetDecorationTile: ; 27037
|
|
push af
|
|
call PadCoords_de
|
|
pop af
|
|
and a
|
|
ret z
|
|
call _GetDecorationSprite
|
|
ld [hl], a
|
|
ret
|
|
; 27043
|
|
|
|
ToggleDecorationsVisibility: ; 27043
|
|
ld de, EVENT_KRISS_HOUSE_2F_CONSOLE
|
|
ld hl, VariableSprites + SPRITE_CONSOLE - SPRITE_VARS
|
|
ld a, [Console]
|
|
call ToggleDecorationVisibility
|
|
ld de, EVENT_KRISS_HOUSE_2F_DOLL_1
|
|
ld hl, VariableSprites + SPRITE_DOLL_1 - SPRITE_VARS
|
|
ld a, [LeftOrnament]
|
|
call ToggleDecorationVisibility
|
|
ld de, EVENT_KRISS_HOUSE_2F_DOLL_2
|
|
ld hl, VariableSprites + SPRITE_DOLL_2 - SPRITE_VARS
|
|
ld a, [RightOrnament]
|
|
call ToggleDecorationVisibility
|
|
ld de, EVENT_KRISS_HOUSE_2F_BIG_DOLL
|
|
ld hl, VariableSprites + SPRITE_BIG_DOLL - SPRITE_VARS
|
|
ld a, [BigDoll]
|
|
call ToggleDecorationVisibility
|
|
ret
|
|
; 27074
|
|
|
|
ToggleDecorationVisibility: ; 27074
|
|
and a
|
|
jr z, .hide
|
|
call _GetDecorationSprite
|
|
ld [hl], a
|
|
ld b, RESET_FLAG
|
|
jp EventFlagAction
|
|
|
|
.hide
|
|
ld b, SET_FLAG
|
|
jp EventFlagAction
|
|
; 27085
|
|
|
|
_GetDecorationSprite: ; 27085
|
|
ld c, a
|
|
push de
|
|
push hl
|
|
callba GetDecorationSprite
|
|
pop hl
|
|
pop de
|
|
ld a, c
|
|
ret
|
|
; 27092
|