pokecrystal/engine/decorations.asm

1304 lines
21 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 MENU_BACKUP_TILES ; flags
menu_coords 5, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
dw .MenuData2
db 1 ; default option
; 0x267a2
.MenuData2: ; 0x267a2
db STATICMENU_CURSOR | STATICMENU_WRAP ; 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 MENU_BACKUP_TILES ; flags
menu_coords 0, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1
dw .NonscrollingMenuData2
db 1 ; default option
; 0x269bd
.NonscrollingMenuData2: ; 0x269bd
db STATICMENU_CURSOR | STATICMENU_WRAP ; flags
db 0 ; items
dw wd002
dw DecorationMenuFunction
dw DecorationAttributes
; 0x269c5
.ScrollingMenuDataHeader: ; 0x269c5
db MENU_BACKUP_TILES ; flags
menu_coords 1, 1, SCREEN_WIDTH - 2, SCREEN_HEIGHT - 2
dw .ScrollingMenuData2
db 1 ; default option
; 0x269cd
.ScrollingMenuData2: ; 0x269cd
db SCROLLINGMENU_DISPLAY_ARROWS ; 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
INCLUDE "data/decorations/attributes.asm"
INCLUDE "data/decorations/names.asm"
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 MENU_BACKUP_TILES ; flags
menu_coords 0, 0, 13, 7
dw MenuData2_0x26eb3
db 1 ; default option
; 0x26eb3
MenuData2_0x26eb3: ; 0x26eb3
db STATICMENU_CURSOR ; 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
INCLUDE "data/decorations/decorations.asm"
DescribeDecoration:: ; 26f59
ld a, b
ld hl, .JumpTable
rst JumpTable
ret
; 26f5f
.JumpTable: ; 26f5f
; entries correspond to DECODESC_* constants
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
Special_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
Special_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
farcall GetDecorationSprite
pop hl
pop de
ld a, c
ret
; 27092
PadCoords_de: ; 27092
ld a, d
add 4
ld d, a
ld a, e
add 4
ld e, a
call GetBlockLocation
ret