shithub: pokecrystal

Download patch

ref: e88c88ff2015a55ff0d04f9ac1dc55d7f0567f7c
parent: 4bfe086ef6412e5fdba99e6143db6de75c7c9458
author: PikalaxALT <PikalaxALT@gmail.com>
date: Tue Nov 17 10:54:03 EST 2015

engine/decorations.asm

--- a/constants/deco_constants.asm
+++ b/constants/deco_constants.asm
@@ -52,12 +52,12 @@
 	const PUT_AWAY_ORNAMENT
 
 const_value = 1
-	const DECO_01
+	const DECO_BEDS
 	const DECO_FEATHERY_BED ; 2
 	const DECO_PINK_BED ; 3
 	const DECO_POLKADOT_BED ; 4
 	const DECO_PIKACHU_BED ; 5
-	const DECO_06
+	const DECO_CARPETS
 	const DECO_RED_CARPET ; 7
 	const DECO_BLUE_CARPET ; 8
 	const DECO_YELLOW_CARPET ; 9
@@ -66,21 +66,21 @@
 	const DECO_MAGNAPLANT ; c
 	const DECO_TROPICPLANT ; d
 	const DECO_JUMBOPLANT ; e
-	const DECO_0F
+	const DECO_POSTERS
 	const DECO_TOWN_MAP ; 10
 	const DECO_PIKACHU_POSTER ; 11
 	const DECO_CLEFAIRY_POSTER ; 12
 	const DECO_JIGGLYPUFF_POSTER ; 13
-	const DECO_14
+	const DECO_CONSOLES
 	const DECO_FAMICOM ; 15
 	const DECO_SNES ; 16
 	const DECO_N64 ; 17
 	const DECO_VIRTUAL_BOY ; 18
-	const DECO_19
+	const DECO_BIG_DOLLS
 	const DECO_BIG_SNORLAX_DOLL ; 1a
 	const DECO_BIG_ONIX_DOLL ; 1b
 	const DECO_BIG_LAPRAS_DOLL ; 1c
-	const DECO_1D
+	const DECO_DOLLS
 	const DECO_PIKACHU_DOLL ; 1e
 	const DECO_SURF_PIKACHU_DOLL ; 1f
 	const DECO_CLEFAIRY_DOLL ; 20
--- /dev/null
+++ b/engine/decorations.asm
@@ -1,0 +1,1437 @@
+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, [wcf76]
+	push af
+	ld hl, .MenuDataHeader
+	call LoadMenuDataHeader
+	xor a
+	ld [wd1ee], a
+	ld a, $1
+	ld [wd1ef], a
+.top_loop
+	ld a, [wd1ef]
+	ld [wMenuCursorBuffer], a
+	call .FindCategoriesWithOwnedDecos
+	call DoNthMenu
+	ld a, [MenuSelection2]
+	ld [wd1ef], a
+	jr c, .exit_menu
+	ld a, [MenuSelection]
+	ld hl, .pointers
+	call MenuJumptable
+	jr nc, .top_loop
+
+.exit_menu
+	call ExitMenu
+	pop af
+	ld [wcf76], a
+	ld a, [wd1ee]
+	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 [wcf76], 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, .jumptable
+.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)
+
+.jumptable: ; 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, DECO_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, DECO_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, DECO_0B
+	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, DECO_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, DECO_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, DECO_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, DECO_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 [wcf76], 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 [wd0e4], a
+	call HandleScrollingMenu
+	ld a, [wcf73]
+	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
+
+decoration: MACRO
+	; type, name, command, event flag, tile/sprite
+	db \1, \2, \3
+	dw \4
+	db \5
+ENDM
+
+DecorationAttributes: ; 26a4f
+	decoration DECO_PLANT,    $00,               $0,                 EVENT_GAVE_KURT_APRICORNS,                         $00
+	decoration DECO_PLANT,    PUT_IT_AWAY,       PUT_AWAY_BED,       EVENT_GAVE_KURT_APRICORNS,                         $00
+	decoration DECO_BED,      FEATHERY_BED,      SET_UP_BED,         EVENT_DECO_BED_1,                  $1b
+	decoration DECO_BED,      PINK_BED,          SET_UP_BED,         EVENT_DECO_BED_2,                  $1c
+	decoration DECO_BED,      POLKADOT_BED,      SET_UP_BED,         EVENT_DECO_BED_3,                  $1d
+	decoration DECO_BED,      PIKACHU_BED,       SET_UP_BED,         EVENT_DECO_BED_4,                  $1e
+	decoration DECO_PLANT,    PUT_IT_AWAY,       PUT_AWAY_CARPET,    EVENT_GAVE_KURT_APRICORNS,                         $00
+	decoration DECO_CARPET,   RED_CARPET,        SET_UP_CARPET,      EVENT_DECO_CARPET_1,               $08
+	decoration DECO_CARPET,   BLUE_CARPET,       SET_UP_CARPET,      EVENT_DECO_CARPET_2,               $0b
+	decoration DECO_CARPET,   YELLOW_CARPET,     SET_UP_CARPET,      EVENT_DECO_CARPET_3,               $0e
+	decoration DECO_CARPET,   GREEN_CARPET,      SET_UP_CARPET,      EVENT_DECO_CARPET_4,               $11
+	decoration DECO_PLANT,    PUT_IT_AWAY,       PUT_AWAY_PLANT,     EVENT_GAVE_KURT_APRICORNS,                         $00
+	decoration DECO_PLANT,    MAGNAPLANT,        SET_UP_PLANT,       EVENT_DECO_PLANT_1,                $20
+	decoration DECO_PLANT,    TROPICPLANT,       SET_UP_PLANT,       EVENT_DECO_PLANT_2,                $21
+	decoration DECO_PLANT,    JUMBOPLANT,        SET_UP_PLANT,       EVENT_DECO_PLANT_3,                $22
+	decoration DECO_PLANT,    PUT_IT_AWAY,       PUT_AWAY_POSTER,    EVENT_GAVE_KURT_APRICORNS,                         $00
+	decoration DECO_PLANT,    TOWN_MAP_D,        SET_UP_POSTER,      EVENT_DECO_PLANT_4,                $1f
+	decoration DECO_POSTER,   PIKACHU,           SET_UP_POSTER,      EVENT_DECO_POSTER_1,               $23
+	decoration DECO_POSTER,   CLEFAIRY,          SET_UP_POSTER,      EVENT_DECO_POSTER_2,               $24
+	decoration DECO_POSTER,   JIGGLYPUFF,        SET_UP_POSTER,      EVENT_DECO_POSTER_3,               $25
+	decoration DECO_PLANT,    PUT_IT_AWAY,       PUT_AWAY_CONSOLE,   EVENT_GAVE_KURT_APRICORNS,                         $00
+	decoration DECO_PLANT,    FAMICOM,           SET_UP_CONSOLE,     EVENT_DECO_FAMICOM,                SPRITE_FAMICOM
+	decoration DECO_PLANT,    SUPER_NES,         SET_UP_CONSOLE,     EVENT_DECO_SNES,                   SPRITE_SNES
+	decoration DECO_PLANT,    NINTENDO_64,       SET_UP_CONSOLE,     EVENT_DECO_N64,                    SPRITE_N64
+	decoration DECO_PLANT,    VIRTUAL_BOY,       SET_UP_CONSOLE,     EVENT_DECO_VIRTUAL_BOY,            SPRITE_VIRTUAL_BOY
+	decoration DECO_PLANT,    PUT_IT_AWAY,       PUT_AWAY_BIG_DOLL,  EVENT_GAVE_KURT_APRICORNS,                         $00
+	decoration DECO_BIGDOLL,  SNORLAX,           SET_UP_BIG_DOLL,    EVENT_DECO_BIG_SNORLAX_DOLL,       SPRITE_BIG_SNORLAX
+	decoration DECO_BIGDOLL,  ONIX,              SET_UP_BIG_DOLL,    EVENT_DECO_BIG_ONIX_DOLL,          SPRITE_BIG_ONIX
+	decoration DECO_BIGDOLL,  LAPRAS,            SET_UP_BIG_DOLL,    EVENT_DECO_BIG_LAPRAS_DOLL,        SPRITE_BIG_LAPRAS
+	decoration DECO_PLANT,    PUT_IT_AWAY,       PUT_AWAY_DOLL,      EVENT_GAVE_KURT_APRICORNS,                         $00
+	decoration DECO_DOLL,     PIKACHU,           SET_UP_DOLL,        EVENT_DECO_PIKACHU_DOLL,           SPRITE_PIKACHU
+	decoration DECO_PLANT,    SURF_PIKA_DOLL,    SET_UP_DOLL,        EVENT_DECO_SURFING_PIKACHU_DOLL,   SPRITE_SURFING_PIKACHU
+	decoration DECO_DOLL,     CLEFAIRY,          SET_UP_DOLL,        EVENT_DECO_CLEFAIRY_DOLL,          SPRITE_CLEFAIRY
+	decoration DECO_DOLL,     JIGGLYPUFF,        SET_UP_DOLL,        EVENT_DECO_JIGGLYPUFF_DOLL,        SPRITE_JIGGLYPUFF
+	decoration DECO_DOLL,     BULBASAUR,         SET_UP_DOLL,        EVENT_DECO_BULBASAUR_DOLL,         SPRITE_BULBASAUR
+	decoration DECO_DOLL,     CHARMANDER,        SET_UP_DOLL,        EVENT_DECO_CHARMANDER_DOLL,        SPRITE_CHARMANDER
+	decoration DECO_DOLL,     SQUIRTLE,          SET_UP_DOLL,        EVENT_DECO_SQUIRTLE_DOLL,          SPRITE_SQUIRTLE
+	decoration DECO_DOLL,     POLIWAG,           SET_UP_DOLL,        EVENT_DECO_POLIWAG_DOLL,           SPRITE_POLIWAG
+	decoration DECO_DOLL,     DIGLETT,           SET_UP_DOLL,        EVENT_DECO_DIGLETT_DOLL,           SPRITE_DIGLETT
+	decoration DECO_DOLL,     STARYU,            SET_UP_DOLL,        EVENT_DECO_STARMIE_DOLL,           SPRITE_STARMIE
+	decoration DECO_DOLL,     MAGIKARP,          SET_UP_DOLL,        EVENT_DECO_MAGIKARP_DOLL,          SPRITE_MAGIKARP
+	decoration DECO_DOLL,     ODDISH,            SET_UP_DOLL,        EVENT_DECO_ODDISH_DOLL,            SPRITE_ODDISH
+	decoration DECO_DOLL,     GENGAR,            SET_UP_DOLL,        EVENT_DECO_GENGAR_DOLL,            SPRITE_GENGAR
+	decoration DECO_DOLL,     SHELLDER,          SET_UP_DOLL,        EVENT_DECO_SHELLDER_DOLL,          SPRITE_SHELLDER
+	decoration DECO_DOLL,     GRIMER,            SET_UP_DOLL,        EVENT_DECO_GRIMER_DOLL,            SPRITE_GRIMER
+	decoration DECO_DOLL,     VOLTORB,           SET_UP_DOLL,        EVENT_DECO_VOLTORB_DOLL,           SPRITE_VOLTORB
+	decoration DECO_DOLL,     WEEDLE,            SET_UP_DOLL,        EVENT_DECO_WEEDLE_DOLL,            SPRITE_WEEDLE
+	decoration DECO_DOLL,     UNOWN,             SET_UP_DOLL,        EVENT_DECO_UNOWN_DOLL,             SPRITE_UNOWN
+	decoration DECO_DOLL,     GEODUDE,           SET_UP_DOLL,        EVENT_DECO_GEODUDE_DOLL,           SPRITE_GEODUDE
+	decoration DECO_DOLL,     MACHOP,            SET_UP_DOLL,        EVENT_DECO_MACHOP_DOLL,            SPRITE_MACHOP
+	decoration DECO_DOLL,     TENTACOOL,         SET_UP_DOLL,        EVENT_DECO_TENTACOOL_DOLL,         SPRITE_TENTACOOL
+	decoration DECO_PLANT,    GOLD_TROPHY,       SET_UP_DOLL,        EVENT_DECO_GOLD_TROPHY,            SPRITE_GOLD_TROPHY
+	decoration DECO_PLANT,    SILVER_TROPHY,     SET_UP_DOLL,        EVENT_DECO_SILVER_TROPHY,          SPRITE_SILVER_TROPHY
+; 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 [wd1ee], 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 [wd1ee], 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 [wd1ee], 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, [wd1ec]
+	ld [hl], a
+	ld a, [wd1ed]
+	ld [de], a
+	xor a
+	ret
+; 26de3
+
+DecoAction_SetItUp_Ornament: ; 26de3
+	ld a, [wd1ec]
+	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 [wd1ec], a
+	call .getwhichside
+	ld hl, DecoText_PutAwayAndSetUp
+	call MenuTextBoxBackup
+	xor a
+	ret
+
+.nothingthere
+	ld a, [MenuSelection]
+	ld [wd1ec], 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, [wd1ed]
+	cp b
+	ret nz
+	xor a
+	ld [wd1ed], 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, [wd1ec]
+	and a
+	jr z, .nothingthere
+	ld hl, StringBuffer3
+	call GetDecorationName
+	ld a, $1
+	ld [wd1ee], a
+	xor a
+	ld [wd1ec], 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, [MenuSelection2]
+	cp 3
+	jr z, .nope
+	ld [Buffer2], a
+	call QueryWhichSide
+	ld a, [hl]
+	ld [wd1ec], a
+	ld a, [de]
+	ld [wd1ed], 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
+	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
+	loadfont
+	writetext .TownMapText
+	closetext
+	special Special_TownMap
+	loadmovesprites
+	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
--- /dev/null
+++ b/engine/trainer_card.asm
@@ -1,0 +1,611 @@
+Function25105: ; 25105
+	ld a, [VramState]
+	push af
+	xor a
+	ld [VramState], a
+	ld hl, Options
+	ld a, [hl]
+	push af
+	set 4, [hl]
+	call Function2513b
+.asm_25117
+	call UpdateTime
+	call JoyTextDelay
+	ld a, [wJumptableIndex]
+	bit 7, a
+	jr nz, .asm_25132
+	ld a, [hJoyLast]
+	and B_BUTTON
+	jr nz, .asm_25132
+	call Function2518e
+	call DelayFrame
+	jr .asm_25117
+.asm_25132
+	pop af
+	ld [Options], a
+	pop af
+	ld [VramState], a
+	ret
+
+Function2513b: ; 2513b (9:513b)
+	call ClearBGPalettes
+	call ClearSprites
+	call ClearTileMap
+	call DisableLCD
+
+	callba Function8833e
+
+	ld hl, CardRightCornerGFX
+	ld de, VTiles2 tile $1c
+	ld bc, 1 tiles
+	ld a, BANK(CardRightCornerGFX)
+	call FarCopyBytes
+
+	ld hl, CardStatusGFX
+	ld de, VTiles2 tile $29
+	ld bc, $56 tiles
+	ld a, BANK(CardStatusGFX)
+	call FarCopyBytes
+
+	call Function25299
+
+	hlcoord 0, 8
+	ld d, $6
+	call Function253b0
+
+	call EnableLCD
+	call WaitBGMap
+	ld b, SCGB_15
+	call GetSGBLayout
+	call SetPalettes
+	call WaitBGMap
+	ld hl, wJumptableIndex
+	xor a
+rept 3
+	ld [hli], a
+endr
+	ld [hl], a
+	ret
+
+Function2518e: ; 2518e (9:518e)
+	ld a, [wJumptableIndex]
+	ld e, a
+	ld d, $0
+	ld hl, Jumptable_2519d
+rept 2
+	add hl, de
+endr
+	ld a, [hli]
+	ld h, [hl]
+	ld l, a
+	jp [hl]
+
+Jumptable_2519d: ; 2519d (9:519d)
+	dw Function251b6
+	dw Function251d7
+	dw Function251f4
+	dw Function25221
+	dw Function2524c
+	dw Function25279
+	dw Function251b0
+
+
+Function251ab: ; 251ab (9:51ab)
+	ld hl, wJumptableIndex
+	inc [hl]
+	ret
+
+Function251b0: ; 251b0 (9:51b0)
+	ld hl, wJumptableIndex
+	set 7, [hl]
+	ret
+
+Function251b6: ; 251b6 (9:51b6)
+	call ClearSprites
+	hlcoord 0, 8
+	ld d, $6
+	call Function253b0
+	call WaitBGMap
+	ld de, CardStatusGFX
+	ld hl, VTiles2 tile $29
+	lb bc, BANK(CardStatusGFX), $56
+	call Request2bpp
+	call Function2530a
+	call Function251ab
+	ret
+
+Function251d7: ; 251d7 (9:51d7)
+	call Function25415
+	ld hl, hJoyLast
+	ld a, [hl]
+	and D_RIGHT | A_BUTTON
+	jr nz, .pressed_right_a
+	ret
+
+.pressed_right_a
+	ld a, $2
+	ld [wJumptableIndex], a
+	ret
+; 251e9 (9:51e9)
+
+Function251e9: ; 251e9
+	ld a, [KantoBadges]
+	and a
+	ret z
+
+	ld a, $4
+	ld [wJumptableIndex], a
+	ret
+; 251f4
+
+Function251f4: ; 251f4 (9:51f4)
+	call ClearSprites
+	hlcoord 0, 8
+	ld d, $6
+	call Function253b0
+	call WaitBGMap
+	ld de, LeaderGFX
+	ld hl, VTiles2 tile $29
+	lb bc, BANK(LeaderGFX), $56
+	call Request2bpp
+	ld de, BadgeGFX
+	ld hl, VTiles0 tile $00
+	lb bc, BANK(BadgeGFX), $2c
+	call Request2bpp
+	call Function2536c
+	call Function251ab
+	ret
+
+Function25221: ; 25221 (9:5221)
+	ld hl, Unknown_254c9
+	call Function25438
+	ld hl, hJoyLast
+	ld a, [hl]
+	and A_BUTTON
+	jr nz, Function25246
+	ld a, [hl]
+	and D_LEFT
+	jr nz, .asm_25235
+	ret
+.asm_25235
+	ld a, $0
+	ld [wJumptableIndex], a
+	ret
+; 2523b (9:523b)
+
+Function2523b: ; 2523b
+	ld a, [KantoBadges]
+	and a
+	ret z
+	ld a, $4
+	ld [wJumptableIndex], a
+	ret
+; 25246
+
+Function25246: ; 25246
+	ld a, $6
+	ld [wJumptableIndex], a
+	ret
+
+Function2524c: ; 2524c (9:524c)
+	call ClearSprites
+	hlcoord 0, 8
+	ld d, $6
+	call Function253b0
+	call WaitBGMap
+	ld de, LeaderGFX2
+	ld hl, VTiles2 tile $29
+	lb bc, BANK(LeaderGFX2), $56
+	call Request2bpp
+	ld de, BadgeGFX2
+	ld hl, VTiles0 tile $00
+	lb bc, BANK(BadgeGFX2), $2c
+	call Request2bpp
+	call Function2536c
+	call Function251ab
+	ret
+
+Function25279: ; 25279 (9:5279)
+	ld hl, Unknown_254c9
+	call Function25438
+	ld hl, hJoyLast
+	ld a, [hl]
+	and D_LEFT
+	jr nz, .asm_2528d
+	ld a, [hl]
+	and D_RIGHT
+	jr nz, .asm_25293
+	ret
+.asm_2528d
+	ld a, $2
+	ld [wJumptableIndex], a
+	ret
+.asm_25293
+	ld a, $0
+	ld [wJumptableIndex], a
+	ret
+
+Function25299: ; 25299 (9:5299)
+	hlcoord 0, 0
+	ld d, $5
+	call Function253b0
+	hlcoord 2, 2
+	ld de, String_252ec
+	call PlaceString
+	hlcoord 2, 4
+	ld de, Tilemap_252f9
+	call Function253a8
+	hlcoord 7, 2
+	ld de, PlayerName
+	call PlaceString
+	hlcoord 5, 4
+	ld de, PlayerID
+	lb bc, PRINTNUM_LEADINGZEROS | 2, 5
+	call PrintNum
+	hlcoord 7, 6
+	ld de, Money
+	lb bc, PRINTNUM_MONEY | 3, 6
+	call PrintNum
+	hlcoord 1, 3
+	ld de, Tilemap_252fc
+	call Function253a8
+	hlcoord 14, 1
+	lb bc, 5, 7
+	xor a
+	ld [hFillBox], a
+	predef FillBox
+	ret
+; 252ec (9:52ec)
+
+String_252ec: ; 252ec
+	db   "NAME/"
+	next ""
+	next "MONEY@"
+
+Tilemap_252f9: ; 252f9
+	db $27, $28, $ff ; ID NO
+
+Tilemap_252fc: ; 252fc
+	db $25, $25, $25, $25, $25, $25, $25, $25, $25, $25, $25, $25, $26, $ff ; ____________>
+; 2530a
+
+Function2530a: ; 2530a (9:530a)
+	hlcoord 2, 10
+	ld de, String_2534c
+	call PlaceString
+	hlcoord 10, 15
+	ld de, String_2535c
+	call PlaceString
+	ld hl, PokedexCaught
+	ld b, $20
+	call CountSetBits
+	ld de, wd265
+	hlcoord 15, 10
+	lb bc, 1, 3
+	call PrintNum
+	call Function25415
+	hlcoord 2, 8
+	ld de, Tilemap_25366
+	call Function253a8
+	ld a, [StatusFlags] ; pokedex
+	bit 0, a
+	ret nz
+	hlcoord 1, 9
+	lb bc, 2, 17
+	call ClearBox
+	ret
+; 2534c (9:534c)
+
+String_2534c: ; 2534c
+	db   "#DEX"
+	next "PLAY TIME"
+	db   "@"
+
+String_2535b: ; 2535b
+	db "@"
+
+String_2535c: ; 2535c
+	db "  BADGES▶@"
+
+Tilemap_25366: ; 25366
+	db $29, $2a, $2b, $2c, $2d, $ff
+; 2536c
+
+Function2536c: ; 2536c (9:536c)
+	hlcoord 2, 8
+	ld de, Tilemap_253a2
+	call Function253a8
+	hlcoord 2, 10
+	ld a, $29
+	ld c, $4
+.asm_2537c
+	call Function253f4
+rept 4
+	inc hl
+endr
+	dec c
+	jr nz, .asm_2537c
+	hlcoord 2, 13
+	ld a, $51
+	ld c, $4
+.asm_2538d
+	call Function253f4
+rept 4
+	inc hl
+endr
+	dec c
+	jr nz, .asm_2538d
+	xor a
+	ld [wcf64], a
+	ld hl, Unknown_254c9
+	call Function25448
+	ret
+; 253a2 (9:53a2)
+
+Tilemap_253a2: ; 253a2
+	db $79, $7a, $7b, $7c, $7d, $ff ; "BADGES"
+; 253a8
+
+Function253a8: ; 253a8 (9:53a8)
+	ld a, [de]
+	cp $ff
+	ret z
+	ld [hli], a
+	inc de
+	jr Function253a8
+
+Function253b0: ; 253b0 (9:53b0)
+	ld e, $14
+.asm_253b2
+	ld a, $23
+	ld [hli], a
+	dec e
+	jr nz, .asm_253b2
+	ld a, $23
+	ld [hli], a
+	ld e, $11
+	ld a, $7f
+.asm_253bf
+	ld [hli], a
+	dec e
+	jr nz, .asm_253bf
+	ld a, $1c
+	ld [hli], a
+	ld a, $23
+	ld [hli], a
+.asm_253c9
+	ld a, $23
+	ld [hli], a
+	ld e, $12
+	ld a, $7f
+.asm_253d0
+	ld [hli], a
+	dec e
+	jr nz, .asm_253d0
+	ld a, $23
+	ld [hli], a
+	dec d
+	jr nz, .asm_253c9
+	ld a, $23
+	ld [hli], a
+	ld a, $24
+	ld [hli], a
+	ld e, $11
+	ld a, $7f
+.asm_253e4
+	ld [hli], a
+	dec e
+	jr nz, .asm_253e4
+	ld a, $23
+	ld [hli], a
+	ld e, $14
+.asm_253ed
+	ld a, $23
+	ld [hli], a
+	dec e
+	jr nz, .asm_253ed
+	ret
+
+Function253f4: ; 253f4 (9:53f4)
+	push de
+	push hl
+	ld [hli], a
+	inc a
+	ld [hli], a
+	inc a
+	ld [hli], a
+	inc a
+	ld [hli], a
+	inc a
+	ld de, $11
+	add hl, de
+	ld [hli], a
+	inc a
+	ld [hli], a
+	inc a
+	ld [hli], a
+	inc a
+	ld de, $11
+	add hl, de
+	ld [hli], a
+	inc a
+	ld [hli], a
+	inc a
+	ld [hli], a
+	inc a
+	pop hl
+	pop de
+	ret
+
+Function25415: ; 25415 (9:5415)
+	hlcoord 11, 12
+	ld de, GameTimeHours
+	lb bc, 2, 4
+	call PrintNum
+	inc hl
+	ld de, GameTimeMinutes
+	lb bc, PRINTNUM_LEADINGZEROS | 1, 2
+	call PrintNum
+	ld a, [hVBlankCounter]
+	and $1f
+	ret nz
+	hlcoord 15, 12
+	ld a, [hl]
+	xor $51
+	ld [hl], a
+	ret
+
+Function25438: ; 25438 (9:5438)
+	ld a, [hVBlankCounter]
+	and $7
+	ret nz
+	ld a, [wcf64]
+	inc a
+	and $7
+	ld [wcf64], a
+	jr Function25448
+
+Function25448: ; 25448 (9:5448)
+	ld a, [hli]
+	ld e, a
+	ld a, [hli]
+	ld d, a
+	ld a, [de]
+	ld c, a
+	ld de, Sprites
+	ld b, 8
+.asm_25453
+	srl c
+	push bc
+	jr nc, .asm_25472
+	push hl
+	ld a, [hli]
+	ld b, a
+	ld a, [hli]
+	ld c, a
+	ld a, [hli]
+	ld [wcf66], a
+	ld a, [wcf64]
+	add l
+	ld l, a
+	ld a, 0
+	adc h
+	ld h, a
+	ld a, [hl]
+	ld [wcf65], a
+	call Function2547b
+	pop hl
+.asm_25472
+	ld bc, $b
+	add hl, bc
+	pop bc
+	dec b
+	jr nz, .asm_25453
+	ret
+
+Function2547b: ; 2547b (9:547b)
+	ld a, [wcf65]
+	and $80
+	jr nz, .asm_25487
+	ld hl, Unknown_254a7
+	jr .asm_2548a
+.asm_25487
+	ld hl, Unknown_254b8
+.asm_2548a
+	ld a, [hli]
+	cp $ff
+	ret z
+	add b
+	ld [de], a
+	inc de
+	ld a, [hli]
+	add c
+	ld [de], a
+	inc de
+	ld a, [wcf65]
+	and $7f
+	add [hl]
+	ld [de], a
+	inc hl
+	inc de
+	ld a, [wcf66]
+	add [hl]
+	ld [de], a
+	inc hl
+	inc de
+	jr .asm_2548a
+; 254a7 (9:54a7)
+
+Unknown_254a7: ; 254a7
+	db $00, $00, $00, $00
+	db $00, $08, $01, $00
+	db $08, $00, $02, $00
+	db $08, $08, $03, $00
+	db $ff
+
+Unknown_254b8: ; 254b8
+	db $00, $00, $01, $20
+	db $00, $08, $00, $20
+	db $08, $00, $03, $20
+	db $08, $08, $02, $20
+	db $ff
+
+Unknown_254c9: ; 254c9
+; Template OAM data for each badge on the trainer card.
+; Format:
+	; y, x, palette
+	; cycle 1: face tile, in1 tile, in2 tile, in3 tile
+	; cycle 2: face tile, in1 tile, in2 tile, in3 tile
+
+	dw JohtoBadges
+
+	; Zephyrbadge
+	db $68, $18, $00
+	db $00, $20, $24, $20 | $80
+	db $00, $20, $24, $20 | $80
+
+	; Hivebadge
+	db $68, $38, $00
+	db $04, $20, $24, $20 | $80
+	db $04, $20, $24, $20 | $80
+
+	; Plainbadge
+	db $68, $58, $00
+	db $08, $20, $24, $20 | $80
+	db $08, $20, $24, $20 | $80
+
+	; Fogbadge
+	db $68, $78, $00
+	db $0c, $20, $24, $20 | $80
+	db $0c, $20, $24, $20 | $80
+
+	; Mineralbadge
+	db $80, $38, $00
+	db $10, $20, $24, $20 | $80
+	db $10, $20, $24, $20 | $80
+
+	; Stormbadge
+	db $80, $18, $00
+	db $14, $20, $24, $20 | $80
+	db $14, $20, $24, $20 | $80
+
+	; Glacierbadge
+	db $80, $58, $00
+	db $18, $20, $24, $20 | $80
+	db $18, $20, $24, $20 | $80
+
+	; Risingbadge
+	; X-flips on alternate cycles.
+	db $80, $78, $00
+	db $1c, $20, $24, $20 | $80
+	db $1c | $80, $20, $24, $20 | $80
+; 25523
+
+CardStatusGFX: INCBIN "gfx/misc/card_status.2bpp"
+
+LeaderGFX:  INCBIN "gfx/misc/leaders.w24.2bpp"
+LeaderGFX2: INCBIN "gfx/misc/leaders.w24.2bpp"
+BadgeGFX:   INCBIN "gfx/misc/badges.2bpp"
+BadgeGFX2:  INCBIN "gfx/misc/badges.2bpp"
+
+CardRightCornerGFX: INCBIN "gfx/misc/card_right_corner.2bpp"
--- a/event/buena.asm
+++ b/event/buena.asm
@@ -250,7 +250,7 @@
 	xor a
 	ld [wcf76], a
 	ld [hBGMapMode], a
-	call Function352f
+	call InitScrollingMenu
 	call UpdateSprites
 	call HandleScrollingMenu
 	ld a, [MenuSelection]
--- a/event/elevator.asm
+++ b/event/elevator.asm
@@ -127,7 +127,7 @@
 	call Elevator_GetCurrentFloorText
 	ld hl, Elevator_MenuDataHeader
 	call CopyMenuDataHeader
-	call Function352f
+	call InitScrollingMenu
 	call UpdateSprites
 	xor a
 	ld [wd0e4], a
--- a/event/kurt.asm
+++ b/event/kurt.asm
@@ -65,7 +65,7 @@
 	ld [wMenuCursorBuffer], a
 	xor a
 	ld [hBGMapMode], a
-	call Function352f
+	call InitScrollingMenu
 	call UpdateSprites
 	call HandleScrollingMenu
 	ld a, [wcf73]
--- a/home.asm
+++ b/home.asm
@@ -1173,7 +1173,7 @@
 	jp SetPalettes
 ; 352f
 
-Function352f:: ; 352f
+InitScrollingMenu:: ; 352f
 	ld a, [wMenuBorderTopCoord]
 	dec a
 	ld b, a
@@ -1192,7 +1192,7 @@
 	jp TextBox
 ; 354b
 
-Function354b:: ; 354b
+Function354b:: ; 354b joypad
 	call DelayFrame
 
 	ld a, [hInMenu]
--- a/main.asm
+++ b/main.asm
@@ -13429,12 +13429,12 @@
 	dn 2, 2 ; rows, columns
 	db 6 ; spacing
 	dba Strings24f3d
-	dbw $09, 0
+	dbw BANK(MenuData_0x24f34), 0
 ; 0x24f3d
 
 Strings24f3d: ; 0x24f3d
 	db "FIGHT@"
-	db $4a, "@"
+	db "<PKMN>@"
 	db "PACK@"
 	db "RUN@"
 ; 24f4e
@@ -13540,95 +13540,95 @@
 Function24ff9: ; 24ff9
 	ld a, $1
 	ld [wItemQuantityChangeBuffer], a
-.asm_24ffe
-	call Function25072
-	call Function2500e
-	jr nc, .asm_24ffe
-	cp $ff
-	jr nz, .asm_2500c
+.loop
+	call Function25072 ; update display
+	call Function2500e ; joy action
+	jr nc, .loop
+	cp -1
+	jr nz, .nope
 	scf
 	ret
 
-.asm_2500c
+.nope
 	and a
 	ret
 ; 2500e
 
 Function2500e: ; 2500e
-	call Function354b
-	bit 1, c
-	jr nz, .asm_2502b
-	bit 0, c
-	jr nz, .asm_2502f
-	bit 7, c
-	jr nz, .asm_25033
-	bit 6, c
-	jr nz, .asm_2503f
-	bit 5, c
-	jr nz, .asm_2504d
-	bit 4, c
-	jr nz, .asm_2505f
+	call Function354b ; get joypad
+	bit B_BUTTON_F, c
+	jr nz, .b
+	bit A_BUTTON_F, c
+	jr nz, .a
+	bit D_DOWN_F, c
+	jr nz, .down
+	bit D_UP_F, c
+	jr nz, .up
+	bit D_LEFT_F, c
+	jr nz, .left
+	bit D_RIGHT_F, c
+	jr nz, .right
 	and a
 	ret
 
-.asm_2502b
-	ld a, $ff
+.b
+	ld a, -1
 	scf
 	ret
 
-.asm_2502f
-	ld a, $0
+.a
+	ld a, 0
 	scf
 	ret
 
-.asm_25033
+.down
 	ld hl, wItemQuantityChangeBuffer
 	dec [hl]
-	jr nz, .asm_2503d
+	jr nz, .finish_down
 	ld a, [wItemQuantityBuffer]
 	ld [hl], a
 
-.asm_2503d
+.finish_down
 	and a
 	ret
 
-.asm_2503f
+.up
 	ld hl, wItemQuantityChangeBuffer
 	inc [hl]
 	ld a, [wItemQuantityBuffer]
 	cp [hl]
-	jr nc, .asm_2504b
+	jr nc, .finish_up
 	ld [hl], $1
 
-.asm_2504b
+.finish_up
 	and a
 	ret
 
-.asm_2504d
+.left
 	ld a, [wItemQuantityChangeBuffer]
 	sub $a
-	jr c, .asm_25058
-	jr z, .asm_25058
-	jr .asm_2505a
+	jr c, .load_1
+	jr z, .load_1
+	jr .finish_left
 
-.asm_25058
+.load_1
 	ld a, $1
 
-.asm_2505a
+.finish_left
 	ld [wItemQuantityChangeBuffer], a
 	and a
 	ret
 
-.asm_2505f
+.right
 	ld a, [wItemQuantityChangeBuffer]
 	add $a
 	ld b, a
 	ld a, [wItemQuantityBuffer]
 	cp b
-	jr nc, .asm_2506c
+	jr nc, .finish_right
 	ld b, a
 
-.asm_2506c
+.finish_right
 	ld a, b
 	ld [wItemQuantityChangeBuffer], a
 	and a
@@ -13745,611 +13745,8 @@
 	db 0 ; default option
 ; 0x25105
 
-Function25105: ; 25105
-	ld a, [VramState]
-	push af
-	xor a
-	ld [VramState], a
-	ld hl, Options
-	ld a, [hl]
-	push af
-	set 4, [hl]
-	call Function2513b
-.asm_25117
-	call UpdateTime
-	call JoyTextDelay
-	ld a, [wJumptableIndex]
-	bit 7, a
-	jr nz, .asm_25132
-	ld a, [hJoyLast]
-	and B_BUTTON
-	jr nz, .asm_25132
-	call Function2518e
-	call DelayFrame
-	jr .asm_25117
-.asm_25132
-	pop af
-	ld [Options], a
-	pop af
-	ld [VramState], a
-	ret
+INCLUDE "engine/trainer_card.asm"
 
-Function2513b: ; 2513b (9:513b)
-	call ClearBGPalettes
-	call ClearSprites
-	call ClearTileMap
-	call DisableLCD
-	callba Function8833e
-	ld hl, CardRightCornerGFX
-	ld de, VTiles2 tile $1c
-	ld bc, $10
-	ld a, BANK(CardRightCornerGFX)
-	call FarCopyBytes
-	ld hl, CardStatusGFX
-	ld de, VTiles2 tile $29
-	ld bc, $60 + $500
-	ld a, BANK(CardStatusGFX)
-	call FarCopyBytes
-	call Function25299
-	hlcoord 0, 8
-	ld d, $6
-	call Function253b0
-	call EnableLCD
-	call WaitBGMap
-	ld b, SCGB_15
-	call GetSGBLayout
-	call SetPalettes
-	call WaitBGMap
-	ld hl, wJumptableIndex
-	xor a
-rept 3
-	ld [hli], a
-endr
-	ld [hl], a
-	ret
-
-Function2518e: ; 2518e (9:518e)
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, $0
-	ld hl, Jumptable_2519d
-rept 2
-	add hl, de
-endr
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp [hl]
-
-Jumptable_2519d: ; 2519d (9:519d)
-	dw Function251b6
-	dw Function251d7
-	dw Function251f4
-	dw Function25221
-	dw Function2524c
-	dw Function25279
-	dw Function251b0
-
-
-Function251ab: ; 251ab (9:51ab)
-	ld hl, wJumptableIndex
-	inc [hl]
-	ret
-
-Function251b0: ; 251b0 (9:51b0)
-	ld hl, wJumptableIndex
-	set 7, [hl]
-	ret
-
-Function251b6: ; 251b6 (9:51b6)
-	call ClearSprites
-	hlcoord 0, 8
-	ld d, $6
-	call Function253b0
-	call WaitBGMap
-	ld de, CardStatusGFX
-	ld hl, VTiles2 tile $29
-	lb bc, BANK(CardStatusGFX), $6 + $50
-	call Request2bpp
-	call Function2530a
-	call Function251ab
-	ret
-
-Function251d7: ; 251d7 (9:51d7)
-	call Function25415
-	ld hl, hJoyLast
-	ld a, [hl]
-	and D_RIGHT | A_BUTTON
-	jr nz, .asm_251e3
-	ret
-.asm_251e3
-	ld a, $2
-	ld [wJumptableIndex], a
-	ret
-; 251e9 (9:51e9)
-
-Function251e9: ; 251e9
-	ld a, [KantoBadges]
-	and a
-	ret z
-	ld a, $4
-	ld [wJumptableIndex], a
-	ret
-; 251f4
-
-Function251f4: ; 251f4 (9:51f4)
-	call ClearSprites
-	hlcoord 0, 8
-	ld d, $6
-	call Function253b0
-	call WaitBGMap
-	ld de, LeaderGFX
-	ld hl, VTiles2 tile $29
-	lb bc, BANK(LeaderGFX), $56
-	call Request2bpp
-	ld de, BadgeGFX
-	ld hl, VTiles0 tile $00
-	lb bc, BANK(BadgeGFX), $2c
-	call Request2bpp
-	call Function2536c
-	call Function251ab
-	ret
-
-Function25221: ; 25221 (9:5221)
-	ld hl, Unknown_254c9
-	call Function25438
-	ld hl, hJoyLast
-	ld a, [hl]
-	and A_BUTTON
-	jr nz, Function25246
-	ld a, [hl]
-	and D_LEFT
-	jr nz, .asm_25235
-	ret
-.asm_25235
-	ld a, $0
-	ld [wJumptableIndex], a
-	ret
-; 2523b (9:523b)
-
-Function2523b: ; 2523b
-	ld a, [KantoBadges]
-	and a
-	ret z
-	ld a, $4
-	ld [wJumptableIndex], a
-	ret
-; 25246
-
-Function25246: ; 25246
-	ld a, $6
-	ld [wJumptableIndex], a
-	ret
-
-Function2524c: ; 2524c (9:524c)
-	call ClearSprites
-	hlcoord 0, 8
-	ld d, $6
-	call Function253b0
-	call WaitBGMap
-	ld de, LeaderGFX2
-	ld hl, VTiles2 tile $29
-	lb bc, BANK(LeaderGFX2), $56
-	call Request2bpp
-	ld de, BadgeGFX2
-	ld hl, VTiles0 tile $00
-	lb bc, BANK(BadgeGFX2), $2c
-	call Request2bpp
-	call Function2536c
-	call Function251ab
-	ret
-
-Function25279: ; 25279 (9:5279)
-	ld hl, Unknown_254c9
-	call Function25438
-	ld hl, hJoyLast
-	ld a, [hl]
-	and D_LEFT
-	jr nz, .asm_2528d
-	ld a, [hl]
-	and D_RIGHT
-	jr nz, .asm_25293
-	ret
-.asm_2528d
-	ld a, $2
-	ld [wJumptableIndex], a
-	ret
-.asm_25293
-	ld a, $0
-	ld [wJumptableIndex], a
-	ret
-
-Function25299: ; 25299 (9:5299)
-	hlcoord 0, 0
-	ld d, $5
-	call Function253b0
-	hlcoord 2, 2
-	ld de, String_252ec
-	call PlaceString
-	hlcoord 2, 4
-	ld de, Tilemap_252f9
-	call Function253a8
-	hlcoord 7, 2
-	ld de, PlayerName
-	call PlaceString
-	hlcoord 5, 4
-	ld de, PlayerID
-	lb bc, PRINTNUM_LEADINGZEROS | 2, 5
-	call PrintNum
-	hlcoord 7, 6
-	ld de, Money
-	lb bc, PRINTNUM_MONEY | 3, 6
-	call PrintNum
-	hlcoord 1, 3
-	ld de, Tilemap_252fc
-	call Function253a8
-	hlcoord 14, 1
-	lb bc, 5, 7
-	xor a
-	ld [hFillBox], a
-	predef FillBox
-	ret
-; 252ec (9:52ec)
-
-String_252ec: ; 252ec
-	db   "NAME/"
-	next ""
-	next "MONEY@"
-
-Tilemap_252f9: ; 252f9
-	db $27, $28, $ff ; ID NO
-
-Tilemap_252fc: ; 252fc
-	db $25, $25, $25, $25, $25, $25, $25, $25, $25, $25, $25, $25, $26, $ff ; ____________>
-; 2530a
-
-Function2530a: ; 2530a (9:530a)
-	hlcoord 2, 10
-	ld de, String_2534c
-	call PlaceString
-	hlcoord 10, 15
-	ld de, String_2535c
-	call PlaceString
-	ld hl, PokedexCaught
-	ld b, $20
-	call CountSetBits
-	ld de, wd265
-	hlcoord 15, 10
-	lb bc, 1, 3
-	call PrintNum
-	call Function25415
-	hlcoord 2, 8
-	ld de, Tilemap_25366
-	call Function253a8
-	ld a, [StatusFlags] ; pokedex
-	bit 0, a
-	ret nz
-	hlcoord 1, 9
-	lb bc, 2, 17
-	call ClearBox
-	ret
-; 2534c (9:534c)
-
-String_2534c: ; 2534c
-	db   "#DEX"
-	next "PLAY TIME"
-	db   "@"
-
-String_2535b: ; 2535b
-	db "@"
-
-String_2535c: ; 2535c
-	db "  BADGES▶@"
-
-Tilemap_25366: ; 25366
-	db $29, $2a, $2b, $2c, $2d, $ff
-; 2536c
-
-Function2536c: ; 2536c (9:536c)
-	hlcoord 2, 8
-	ld de, Tilemap_253a2
-	call Function253a8
-	hlcoord 2, 10
-	ld a, $29
-	ld c, $4
-.asm_2537c
-	call Function253f4
-rept 4
-	inc hl
-endr
-	dec c
-	jr nz, .asm_2537c
-	hlcoord 2, 13
-	ld a, $51
-	ld c, $4
-.asm_2538d
-	call Function253f4
-rept 4
-	inc hl
-endr
-	dec c
-	jr nz, .asm_2538d
-	xor a
-	ld [wcf64], a
-	ld hl, Unknown_254c9
-	call Function25448
-	ret
-; 253a2 (9:53a2)
-
-Tilemap_253a2: ; 253a2
-	db $79, $7a, $7b, $7c, $7d, $ff ; "BADGES"
-; 253a8
-
-Function253a8: ; 253a8 (9:53a8)
-	ld a, [de]
-	cp $ff
-	ret z
-	ld [hli], a
-	inc de
-	jr Function253a8
-
-Function253b0: ; 253b0 (9:53b0)
-	ld e, $14
-.asm_253b2
-	ld a, $23
-	ld [hli], a
-	dec e
-	jr nz, .asm_253b2
-	ld a, $23
-	ld [hli], a
-	ld e, $11
-	ld a, $7f
-.asm_253bf
-	ld [hli], a
-	dec e
-	jr nz, .asm_253bf
-	ld a, $1c
-	ld [hli], a
-	ld a, $23
-	ld [hli], a
-.asm_253c9
-	ld a, $23
-	ld [hli], a
-	ld e, $12
-	ld a, $7f
-.asm_253d0
-	ld [hli], a
-	dec e
-	jr nz, .asm_253d0
-	ld a, $23
-	ld [hli], a
-	dec d
-	jr nz, .asm_253c9
-	ld a, $23
-	ld [hli], a
-	ld a, $24
-	ld [hli], a
-	ld e, $11
-	ld a, $7f
-.asm_253e4
-	ld [hli], a
-	dec e
-	jr nz, .asm_253e4
-	ld a, $23
-	ld [hli], a
-	ld e, $14
-.asm_253ed
-	ld a, $23
-	ld [hli], a
-	dec e
-	jr nz, .asm_253ed
-	ret
-
-Function253f4: ; 253f4 (9:53f4)
-	push de
-	push hl
-	ld [hli], a
-	inc a
-	ld [hli], a
-	inc a
-	ld [hli], a
-	inc a
-	ld [hli], a
-	inc a
-	ld de, $11
-	add hl, de
-	ld [hli], a
-	inc a
-	ld [hli], a
-	inc a
-	ld [hli], a
-	inc a
-	ld de, $11
-	add hl, de
-	ld [hli], a
-	inc a
-	ld [hli], a
-	inc a
-	ld [hli], a
-	inc a
-	pop hl
-	pop de
-	ret
-
-Function25415: ; 25415 (9:5415)
-	hlcoord 11, 12
-	ld de, GameTimeHours
-	lb bc, 2, 4
-	call PrintNum
-	inc hl
-	ld de, GameTimeMinutes
-	lb bc, PRINTNUM_LEADINGZEROS | 1, 2
-	call PrintNum
-	ld a, [hVBlankCounter]
-	and $1f
-	ret nz
-	hlcoord 15, 12
-	ld a, [hl]
-	xor $51
-	ld [hl], a
-	ret
-
-Function25438: ; 25438 (9:5438)
-	ld a, [hVBlankCounter]
-	and $7
-	ret nz
-	ld a, [wcf64]
-	inc a
-	and $7
-	ld [wcf64], a
-	jr Function25448
-
-Function25448: ; 25448 (9:5448)
-	ld a, [hli]
-	ld e, a
-	ld a, [hli]
-	ld d, a
-	ld a, [de]
-	ld c, a
-	ld de, Sprites
-	ld b, 8
-.asm_25453
-	srl c
-	push bc
-	jr nc, .asm_25472
-	push hl
-	ld a, [hli]
-	ld b, a
-	ld a, [hli]
-	ld c, a
-	ld a, [hli]
-	ld [wcf66], a
-	ld a, [wcf64]
-	add l
-	ld l, a
-	ld a, 0
-	adc h
-	ld h, a
-	ld a, [hl]
-	ld [wcf65], a
-	call Function2547b
-	pop hl
-.asm_25472
-	ld bc, $b
-	add hl, bc
-	pop bc
-	dec b
-	jr nz, .asm_25453
-	ret
-
-Function2547b: ; 2547b (9:547b)
-	ld a, [wcf65]
-	and $80
-	jr nz, .asm_25487
-	ld hl, Unknown_254a7
-	jr .asm_2548a
-.asm_25487
-	ld hl, Unknown_254b8
-.asm_2548a
-	ld a, [hli]
-	cp $ff
-	ret z
-	add b
-	ld [de], a
-	inc de
-	ld a, [hli]
-	add c
-	ld [de], a
-	inc de
-	ld a, [wcf65]
-	and $7f
-	add [hl]
-	ld [de], a
-	inc hl
-	inc de
-	ld a, [wcf66]
-	add [hl]
-	ld [de], a
-	inc hl
-	inc de
-	jr .asm_2548a
-; 254a7 (9:54a7)
-
-Unknown_254a7: ; 254a7
-	db $00, $00, $00, $00
-	db $00, $08, $01, $00
-	db $08, $00, $02, $00
-	db $08, $08, $03, $00
-	db $ff
-
-Unknown_254b8: ; 254b8
-	db $00, $00, $01, $20
-	db $00, $08, $00, $20
-	db $08, $00, $03, $20
-	db $08, $08, $02, $20
-	db $ff
-
-Unknown_254c9: ; 254c9
-; Template OAM data for each badge on the trainer card.
-; Format:
-	; y, x, palette
-	; cycle 1: face tile, in1 tile, in2 tile, in3 tile
-	; cycle 2: face tile, in1 tile, in2 tile, in3 tile
-
-	dw JohtoBadges
-
-	; Zephyrbadge
-	db $68, $18, $00
-	db $00, $20, $24, $20 | $80
-	db $00, $20, $24, $20 | $80
-
-	; Hivebadge
-	db $68, $38, $00
-	db $04, $20, $24, $20 | $80
-	db $04, $20, $24, $20 | $80
-
-	; Plainbadge
-	db $68, $58, $00
-	db $08, $20, $24, $20 | $80
-	db $08, $20, $24, $20 | $80
-
-	; Fogbadge
-	db $68, $78, $00
-	db $0c, $20, $24, $20 | $80
-	db $0c, $20, $24, $20 | $80
-
-	; Mineralbadge
-	db $80, $38, $00
-	db $10, $20, $24, $20 | $80
-	db $10, $20, $24, $20 | $80
-
-	; Stormbadge
-	db $80, $18, $00
-	db $14, $20, $24, $20 | $80
-	db $14, $20, $24, $20 | $80
-
-	; Glacierbadge
-	db $80, $58, $00
-	db $18, $20, $24, $20 | $80
-	db $18, $20, $24, $20 | $80
-
-	; Risingbadge
-	; X-flips on alternate cycles.
-	db $80, $78, $00
-	db $1c, $20, $24, $20 | $80
-	db $1c | $80, $20, $24, $20 | $80
-; 25523
-
-CardStatusGFX: INCBIN "gfx/misc/card_status.2bpp"
-
-LeaderGFX:  INCBIN "gfx/misc/leaders.w24.2bpp"
-LeaderGFX2: INCBIN "gfx/misc/leaders.w24.2bpp"
-BadgeGFX:   INCBIN "gfx/misc/badges.2bpp"
-BadgeGFX2:  INCBIN "gfx/misc/badges.2bpp"
-
-CardRightCornerGFX: INCBIN "gfx/misc/card_right_corner.2bpp"
-
-
 ProfOaksPC: ; 0x265d3
 	ld hl, OakPCText1
 	call MenuTextBox
@@ -14630,1401 +14027,8 @@
 	text_jump _OakPCText4
 	db "@"
 
+INCLUDE "engine/decorations.asm"
 
-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, [wcf76]
-	push af
-	ld hl, MenuDataHeader_0x2679a
-	call LoadMenuDataHeader
-	xor a
-	ld [wd1ee], a
-	ld a, $1
-	ld [wd1ef], a
-.asm_2676f
-	ld a, [wd1ef]
-	ld [wMenuCursorBuffer], a
-	call Function26806
-	call DoNthMenu
-	ld a, [MenuSelection2]
-	ld [wd1ef], a
-	jr c, .asm_2678e
-	ld a, [MenuSelection]
-	ld hl, Unknown_267aa
-	call MenuJumptable
-	jr nc, .asm_2676f
-
-.asm_2678e
-	call ExitMenu
-	pop af
-	ld [wcf76], a
-	ld a, [wd1ee]
-	ld c, a
-	ret
-; 0x2679a
-
-MenuDataHeader_0x2679a: ; 0x2679a
-	db $40 ; flags
-	db 00, 05 ; start coords
-	db 17, 19 ; end coords
-	dw MenuData2_0x267a2
-	db 1 ; default option
-; 0x267a2
-
-MenuData2_0x267a2: ; 0x267a2
-	db $a0 ; flags
-	db 0 ; items
-	dw wd002
-	dw PlaceNthMenuStrings
-	dw Unknown_267aa
-; 0x267aa
-
-Unknown_267aa: ; 267aa
-	dw Function268b5, .bed
-	dw Function268ca, .carpet
-	dw Function268df, .plant
-	dw Function268f3, .poster
-	dw Function26908, .game
-	dw Function2691d, .ornament
-	dw Function26945, .big_doll
-	dw Function26959, .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
-
-Function26806: ; 26806
-	xor a
-	ld [wcf76], a
-	call Function26822
-	call Function2683a
-	ld a, $7
-	call Function26830
-	ld hl, StringBuffer2
-	ld de, wd002
-	ld bc, $d
-	call CopyBytes
-	ret
-
-Function26822: ; 26822 (9:6822)
-	ld hl, StringBuffer2
-	xor a
-	ld [hli], a
-	ld bc, ITEM_NAME_LENGTH - 1
-	ld a, -1
-	call ByteFill
-	ret
-
-Function26830: ; 26830 (9:6830)
-	ld hl, StringBuffer2
-	inc [hl]
-	ld e, [hl]
-	ld d, 0
-	add hl, de
-	ld [hl], a
-	ret
-
-Function2683a: ; 2683a (9:683a)
-	ld hl, Jumptable_26855
-.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 Function26830
-	pop hl
-.next
-	inc hl
-	jr .loop
-.done
-	ret
-; 26855 (9:6855)
-
-Jumptable_26855: ; 26855
-	dwb Function268bd, 0 ; bed
-	dwb Function268d2, 1 ; carpet
-	dwb Function268e7, 2 ; plant
-	dwb Function268fb, 3 ; poster
-	dwb Function26910, 4 ; game console
-	dwb Function26925, 5 ; ornament
-	dwb Function2694d, 6 ; big doll
-	dw 0 ; end
-; 2686c
-
-Function2686c: ; 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, Function26891
-	pop hl
-	jr .loop
-
-.done
-	ret
-; 26891
-
-Function26891: ; 26891
-	ld hl, wd002
-	inc [hl]
-	ld e, [hl]
-	ld d, $0
-	add hl, de
-	ld [hl], a
-	ret
-; 2689b
-
-Function2689b: ; 2689b
-	push bc
-	push hl
-	call Function2686c
-	pop hl
-	call CheckAllDecorationFlags
-	pop bc
-	ld a, [wd002]
-	and a
-	ret z
-	ld a, c
-	call Function26891
-	ld a, $0
-	call Function26891
-	scf
-	ret
-; 268b5
-
-Function268b5: ; 268b5
-	call Function268bd
-	call Function2695b
-	xor a
-	ret
-; 268bd
-
-Function268bd: ; 268bd
-	ld hl, Unknown_268c5
-	ld c, 1
-	jp Function2689b
-; 268c5
-
-Unknown_268c5: ; 268c5
-	db 2, 3, 4, 5, $ff
-; 268ca
-
-Function268ca: ; 268ca
-	call Function268d2
-	call Function2695b
-	xor a
-	ret
-; 268d2
-
-Function268d2: ; 268d2
-	ld hl, Unknown_268da
-	ld c, 6
-	jp Function2689b
-; 268da
-
-Unknown_268da: ; 268da
-	db 7, 8, 9, 10, $ff
-; 268df
-
-Function268df: ; 268df
-	call Function268e7
-	call Function2695b
-	xor a
-	ret
-; 268e7
-
-Function268e7: ; 268e7
-	ld hl, Unknown_268ef
-	ld c, 11
-	jp Function2689b
-; 268ef
-
-Unknown_268ef: ; 268ef
-	db 12, 13, 14, $ff
-; 268f3
-
-Function268f3: ; 268f3
-	call Function268fb
-	call Function2695b
-	xor a
-	ret
-; 268fb
-
-Function268fb: ; 268fb
-	ld hl, Unknown_26903
-	ld c, 15
-	jp Function2689b
-; 26903
-
-Unknown_26903: ; 26903
-	db 16, 17, 18, 19, $ff
-; 26908
-
-Function26908: ; 26908
-	call Function26910
-	call Function2695b
-	xor a
-	ret
-; 26910
-
-Function26910: ; 26910
-	ld hl, Unknown_26918
-	ld c, 20
-	jp Function2689b
-; 26918
-
-Unknown_26918: ; 26918
-	db 21, 22, 23, 24, $ff
-; 2691d
-
-Function2691d: ; 2691d
-	call Function26925
-	call Function2695b
-	xor a
-	ret
-; 26925
-
-Function26925: ; 26925
-	ld hl, Unknown_2692d
-	ld c, 29
-	jp Function2689b
-; 2692d
-
-Unknown_2692d: ; 2692d
-	db 30, 31, 32, 33, 34, 35, 36, 37, 38, 39
-	db 40, 41, 42, 43, 44, 45, 46, 47, 48, 49
-	db 50, 51, 52, -1
-; 26945
-
-Function26945: ; 26945
-	call Function2694d
-	call Function2695b
-	xor a
-	ret
-; 2694d
-
-Function2694d: ; 2694d
-	ld hl, Unknown_26955
-	ld c, 25
-	jp Function2689b
-; 26955
-
-Unknown_26955: ; 26955
-	db 26, 27, 28, -1
-; 26959
-
-Function26959: ; 26959
-	scf
-	ret
-; 2695b
-
-Function2695b: ; 2695b
-	ld a, [wd002]
-	and a
-	jr z, .empty
-	cp 8
-	jr nc, .beyond_eight
-	xor a
-	ld [wcf76], a
-	ld hl, MenuDataHeader_0x269b5
-	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, MenuDataHeader_0x269c5
-	call CopyMenuDataHeader
-	xor a
-	ld [hBGMapMode], a
-	call Function352f
-	xor a
-	ld [wd0e4], a
-	call HandleScrollingMenu
-	ld a, [wcf73]
-	cp 2
-	jr z, .no_action_2
-	call DoDecorationAction2
-
-.no_action_2
-	call ExitMenu
-	ret
-
-.empty
-	ld hl, UnknownText_0x269b0
-	call MenuTextBoxBackup
-	ret
-; 269b0
-
-UnknownText_0x269b0: ; 0x269b0
-	; There's nothing to choose.
-	text_jump UnknownText_0x1bc471
-	db "@"
-; 0x269b5
-
-MenuDataHeader_0x269b5: ; 0x269b5
-	db $40 ; flags
-	db 00, 00 ; start coords
-	db 17, 19 ; end coords
-	dw MenuData2_0x269bd
-	db 1 ; default option
-; 0x269bd
-
-MenuData2_0x269bd: ; 0x269bd
-	db $a0 ; flags
-	db 0 ; items
-	dw wd002
-	dw DecorationMenuFunction
-	dw DecorationAttributes
-; 0x269c5
-
-MenuDataHeader_0x269c5: ; 0x269c5
-	db $40 ; flags
-	db 01, 01 ; start coords
-	db 16, 18 ; end coords
-	dw MenuData2_0x269cd
-	db 1 ; default option
-; 0x269cd
-
-MenuData2_0x269cd: ; 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
-
-decoration: MACRO
-	; type, name, command, event flag, tile/sprite
-	db \1, \2, \3
-	dw \4
-	db \5
-ENDM
-
-DecorationAttributes: ; 26a4f
-	decoration DECO_PLANT,    $00,               $0,                 EVENT_GAVE_KURT_APRICORNS,                         $00
-	decoration DECO_PLANT,    PUT_IT_AWAY,       PUT_AWAY_BED,       EVENT_GAVE_KURT_APRICORNS,                         $00
-	decoration DECO_BED,      FEATHERY_BED,      SET_UP_BED,         EVENT_DECO_BED_1,                  $1b
-	decoration DECO_BED,      PINK_BED,          SET_UP_BED,         EVENT_DECO_BED_2,                  $1c
-	decoration DECO_BED,      POLKADOT_BED,      SET_UP_BED,         EVENT_DECO_BED_3,                  $1d
-	decoration DECO_BED,      PIKACHU_BED,       SET_UP_BED,         EVENT_DECO_BED_4,                  $1e
-	decoration DECO_PLANT,    PUT_IT_AWAY,       PUT_AWAY_CARPET,    EVENT_GAVE_KURT_APRICORNS,                         $00
-	decoration DECO_CARPET,   RED_CARPET,        SET_UP_CARPET,      EVENT_DECO_CARPET_1,               $08
-	decoration DECO_CARPET,   BLUE_CARPET,       SET_UP_CARPET,      EVENT_DECO_CARPET_2,               $0b
-	decoration DECO_CARPET,   YELLOW_CARPET,     SET_UP_CARPET,      EVENT_DECO_CARPET_3,               $0e
-	decoration DECO_CARPET,   GREEN_CARPET,      SET_UP_CARPET,      EVENT_DECO_CARPET_4,               $11
-	decoration DECO_PLANT,    PUT_IT_AWAY,       PUT_AWAY_PLANT,     EVENT_GAVE_KURT_APRICORNS,                         $00
-	decoration DECO_PLANT,    MAGNAPLANT,        SET_UP_PLANT,       EVENT_DECO_PLANT_1,                $20
-	decoration DECO_PLANT,    TROPICPLANT,       SET_UP_PLANT,       EVENT_DECO_PLANT_2,                $21
-	decoration DECO_PLANT,    JUMBOPLANT,        SET_UP_PLANT,       EVENT_DECO_PLANT_3,                $22
-	decoration DECO_PLANT,    PUT_IT_AWAY,       PUT_AWAY_POSTER,    EVENT_GAVE_KURT_APRICORNS,                         $00
-	decoration DECO_PLANT,    TOWN_MAP_D,        SET_UP_POSTER,      EVENT_DECO_PLANT_4,                $1f
-	decoration DECO_POSTER,   PIKACHU,           SET_UP_POSTER,      EVENT_DECO_POSTER_1,               $23
-	decoration DECO_POSTER,   CLEFAIRY,          SET_UP_POSTER,      EVENT_DECO_POSTER_2,               $24
-	decoration DECO_POSTER,   JIGGLYPUFF,        SET_UP_POSTER,      EVENT_DECO_POSTER_3,               $25
-	decoration DECO_PLANT,    PUT_IT_AWAY,       PUT_AWAY_CONSOLE,   EVENT_GAVE_KURT_APRICORNS,                         $00
-	decoration DECO_PLANT,    FAMICOM,           SET_UP_CONSOLE,     EVENT_DECO_FAMICOM,                SPRITE_FAMICOM
-	decoration DECO_PLANT,    SUPER_NES,         SET_UP_CONSOLE,     EVENT_DECO_SNES,                   SPRITE_SNES
-	decoration DECO_PLANT,    NINTENDO_64,       SET_UP_CONSOLE,     EVENT_DECO_N64,                    SPRITE_N64
-	decoration DECO_PLANT,    VIRTUAL_BOY,       SET_UP_CONSOLE,     EVENT_DECO_VIRTUAL_BOY,            SPRITE_VIRTUAL_BOY
-	decoration DECO_PLANT,    PUT_IT_AWAY,       PUT_AWAY_BIG_DOLL,  EVENT_GAVE_KURT_APRICORNS,                         $00
-	decoration DECO_BIGDOLL,  SNORLAX,           SET_UP_BIG_DOLL,    EVENT_DECO_BIG_SNORLAX_DOLL,       SPRITE_BIG_SNORLAX
-	decoration DECO_BIGDOLL,  ONIX,              SET_UP_BIG_DOLL,    EVENT_DECO_BIG_ONIX_DOLL,          SPRITE_BIG_ONIX
-	decoration DECO_BIGDOLL,  LAPRAS,            SET_UP_BIG_DOLL,    EVENT_DECO_BIG_LAPRAS_DOLL,        SPRITE_BIG_LAPRAS
-	decoration DECO_PLANT,    PUT_IT_AWAY,       PUT_AWAY_DOLL,      EVENT_GAVE_KURT_APRICORNS,                         $00
-	decoration DECO_DOLL,     PIKACHU,           SET_UP_DOLL,        EVENT_DECO_PIKACHU_DOLL,           SPRITE_PIKACHU
-	decoration DECO_PLANT,    SURF_PIKA_DOLL,    SET_UP_DOLL,        EVENT_DECO_SURFING_PIKACHU_DOLL,   SPRITE_SURFING_PIKACHU
-	decoration DECO_DOLL,     CLEFAIRY,          SET_UP_DOLL,        EVENT_DECO_CLEFAIRY_DOLL,          SPRITE_CLEFAIRY
-	decoration DECO_DOLL,     JIGGLYPUFF,        SET_UP_DOLL,        EVENT_DECO_JIGGLYPUFF_DOLL,        SPRITE_JIGGLYPUFF
-	decoration DECO_DOLL,     BULBASAUR,         SET_UP_DOLL,        EVENT_DECO_BULBASAUR_DOLL,         SPRITE_BULBASAUR
-	decoration DECO_DOLL,     CHARMANDER,        SET_UP_DOLL,        EVENT_DECO_CHARMANDER_DOLL,        SPRITE_CHARMANDER
-	decoration DECO_DOLL,     SQUIRTLE,          SET_UP_DOLL,        EVENT_DECO_SQUIRTLE_DOLL,          SPRITE_SQUIRTLE
-	decoration DECO_DOLL,     POLIWAG,           SET_UP_DOLL,        EVENT_DECO_POLIWAG_DOLL,           SPRITE_POLIWAG
-	decoration DECO_DOLL,     DIGLETT,           SET_UP_DOLL,        EVENT_DECO_DIGLETT_DOLL,           SPRITE_DIGLETT
-	decoration DECO_DOLL,     STARYU,            SET_UP_DOLL,        EVENT_DECO_STARMIE_DOLL,           SPRITE_STARMIE
-	decoration DECO_DOLL,     MAGIKARP,          SET_UP_DOLL,        EVENT_DECO_MAGIKARP_DOLL,          SPRITE_MAGIKARP
-	decoration DECO_DOLL,     ODDISH,            SET_UP_DOLL,        EVENT_DECO_ODDISH_DOLL,            SPRITE_ODDISH
-	decoration DECO_DOLL,     GENGAR,            SET_UP_DOLL,        EVENT_DECO_GENGAR_DOLL,            SPRITE_GENGAR
-	decoration DECO_DOLL,     SHELLDER,          SET_UP_DOLL,        EVENT_DECO_SHELLDER_DOLL,          SPRITE_SHELLDER
-	decoration DECO_DOLL,     GRIMER,            SET_UP_DOLL,        EVENT_DECO_GRIMER_DOLL,            SPRITE_GRIMER
-	decoration DECO_DOLL,     VOLTORB,           SET_UP_DOLL,        EVENT_DECO_VOLTORB_DOLL,           SPRITE_VOLTORB
-	decoration DECO_DOLL,     WEEDLE,            SET_UP_DOLL,        EVENT_DECO_WEEDLE_DOLL,            SPRITE_WEEDLE
-	decoration DECO_DOLL,     UNOWN,             SET_UP_DOLL,        EVENT_DECO_UNOWN_DOLL,             SPRITE_UNOWN
-	decoration DECO_DOLL,     GEODUDE,           SET_UP_DOLL,        EVENT_DECO_GEODUDE_DOLL,           SPRITE_GEODUDE
-	decoration DECO_DOLL,     MACHOP,            SET_UP_DOLL,        EVENT_DECO_MACHOP_DOLL,            SPRITE_MACHOP
-	decoration DECO_DOLL,     TENTACOOL,         SET_UP_DOLL,        EVENT_DECO_TENTACOOL_DOLL,         SPRITE_TENTACOOL
-	decoration DECO_PLANT,    GOLD_TROPHY,       SET_UP_DOLL,        EVENT_DECO_GOLD_TROPHY,            SPRITE_GOLD_TROPHY
-	decoration DECO_PLANT,    SILVER_TROPHY,     SET_UP_DOLL,        EVENT_DECO_SILVER_TROPHY,          SPRITE_SILVER_TROPHY
-; 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 [wd1ee], 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, UnknownText_0x26ee0
-	call MenuTextBoxBackup
-	xor a
-	ret
-
-.nothingthere
-	ld a, [MenuSelection]
-	ld hl, StringBuffer3
-	call GetDecorationName
-	ld hl, UnknownText_0x26edb
-	call MenuTextBoxBackup
-	xor a
-	ret
-
-.alreadythere
-	ld hl, UnknownText_0x26ee5
-	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 [wd1ee], a
-	ld a, [Buffer1]
-	ld [MenuSelection], a
-	ld hl, StringBuffer3
-	call GetDecorationName
-	ld hl, UnknownText_0x26ed1
-	call MenuTextBoxBackup
-	xor a
-	ret
-
-.nothingthere
-	ld hl, UnknownText_0x26ed6
-	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 [wd1ee], a
-	jr DecoAction_FinishUp_Ornament
-
-.cancel
-	xor a
-	ret
-
-DecoAction_putawayornament: ; 26dc9
-	ld hl, UnknownText_0x26e6b
-	call DecoAction_AskWhichSide
-	jr nc, .incave
-	xor a
-	ret
-
-.incave
-	call DecoAction_PutItAway_Ornament
-
-DecoAction_FinishUp_Ornament: ; 26dd6
-	call QueryWhichSide
-	ld a, [wd1ec]
-	ld [hl], a
-	ld a, [wd1ed]
-	ld [de], a
-	xor a
-	ret
-; 26de3
-
-DecoAction_SetItUp_Ornament: ; 26de3
-	ld a, [wd1ec]
-	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 [wd1ec], a
-	call .getwhichside
-	ld hl, UnknownText_0x26ee0
-	call MenuTextBoxBackup
-	xor a
-	ret
-
-.nothingthere
-	ld a, [MenuSelection]
-	ld [wd1ec], a
-	call .getwhichside
-	ld a, [MenuSelection]
-	ld hl, StringBuffer3
-	call GetDecorationName
-	ld hl, UnknownText_0x26edb
-	call MenuTextBoxBackup
-	xor a
-	ret
-
-.failed
-	ld hl, UnknownText_0x26ee5
-	call MenuTextBoxBackup
-	scf
-	ret
-; 26e33
-
-.getwhichside: ; 26e33
-	ld a, [MenuSelection]
-	ld b, a
-	ld a, [wd1ed]
-	cp b
-	ret nz
-	xor a
-	ld [wd1ed], 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, [wd1ec]
-	and a
-	jr z, .nothingthere
-	ld hl, StringBuffer3
-	call GetDecorationName
-	ld a, $1
-	ld [wd1ee], a
-	xor a
-	ld [wd1ec], a
-	ld hl, UnknownText_0x26ed1
-	call MenuTextBoxBackup
-	xor a
-	ret
-
-.nothingthere
-	ld hl, UnknownText_0x26ed6
-	call MenuTextBoxBackup
-	xor a
-	ret
-; 26e6b
-
-UnknownText_0x26e6b: ; 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, [MenuSelection2]
-	cp 3
-	jr z, .nope
-	ld [Buffer2], a
-	call QueryWhichSide
-	ld a, [hl]
-	ld [wd1ec], a
-	ld a, [de]
-	ld [wd1ed], 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
-
-UnknownText_0x26ed1: ; 0x26ed1
-	; Put away the @ .
-	text_jump UnknownText_0x1bc4d7
-	db "@"
-; 0x26ed6
-
-UnknownText_0x26ed6: ; 0x26ed6
-	; There's nothing to put away.
-	text_jump UnknownText_0x1bc4ec
-	db "@"
-; 0x26edb
-
-UnknownText_0x26edb: ; 0x26edb
-	; Set up the @ .
-	text_jump UnknownText_0x1bc509
-	db "@"
-; 0x26ee0
-
-UnknownText_0x26ee0: ; 0x26ee0
-	; Put away the @ and set up the @ .
-	text_jump UnknownText_0x1bc51c
-	db "@"
-; 0x26ee5
-
-UnknownText_0x26ee5: ; 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
-	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_GiantDoll
-	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
-	loadfont
-	writetext UnknownText_0x26f9b
-	closetext
-	special Special_TownMap
-	loadmovesprites
-	end
-; 0x26f9b
-
-UnknownText_0x26f9b: ; 0x26f9b
-	; It's the TOWN MAP.
-	text_jump UnknownText_0x1bc55d
-	db "@"
-; 0x26fa0
-
-DecorationDesc_PikachuPoster: ; 0x26fa0
-	jumptext UnknownText_0x26fa3
-; 0x26fa3
-
-UnknownText_0x26fa3: ; 0x26fa3
-	; It's a poster of a cute PIKACHU.
-	text_jump UnknownText_0x1bc570
-	db "@"
-; 0x26fa8
-
-DecorationDesc_ClefairyPoster: ; 0x26fa8
-	jumptext UnknownText_0x26fab
-; 0x26fab
-
-UnknownText_0x26fab: ; 0x26fab
-	; It's a poster of a cute CLEFAIRY.
-	text_jump UnknownText_0x1bc591
-	db "@"
-; 0x26fb0
-
-DecorationDesc_JigglypuffPoster: ; 0x26fb0
-	jumptext UnknownText_0x26fb3
-; 0x26fb3
-
-UnknownText_0x26fb3: ; 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(Unknown_26fd5)
-	ld de, Unknown_26fd5
-	ret
-; 26fd5
-
-Unknown_26fd5: ; 26fd5
-	dbw $53, UnknownText_0x26fd8
-; 26fd8
-
-UnknownText_0x26fd8: ; 0x26fd8
-	; It's an adorable @ .
-	text_jump UnknownText_0x1bc5d7
-	db "@"
-; 0x26fdd
-
-DecorationDesc_GiantDoll: ; 26fdd
-	ld b, BANK(Unknown_26fe3)
-	ld de, Unknown_26fe3
-	ret
-; 26fe3
-
-Unknown_26fe3: ; 26fe3
-	dbw $53, UnknownText_0x26fe6
-; 26fe6
-
-UnknownText_0x26fe6: ; 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
-
 PadCoords_de: ; 27092
 	ld a, d
 	add 4
@@ -17117,7 +15121,7 @@
 	db DECO_BIG_SNORLAX_DOLL
 	db DECO_BIG_ONIX_DOLL
 	db DECO_BIG_LAPRAS_DOLL
-	db DECO_1D
+	db DECO_DOLLS
 	db DECO_PIKACHU_DOLL
 	db DECO_SURF_PIKACHU_DOLL
 	db DECO_CLEFAIRY_DOLL
@@ -17131,15 +15135,15 @@
 	db DECO_DIGLETT_DOLL
 	db DECO_BLUE_CARPET
 	db DECO_YELLOW_CARPET
-	db DECO_0F
+	db DECO_POSTERS
 	db DECO_PIKACHU_POSTER
 	db DECO_N64
-	db DECO_19
-	db DECO_01
+	db DECO_BIG_DOLLS
+	db DECO_BEDS
 	db DECO_FEATHERY_BED
 	db DECO_POLKADOT_BED
 	db DECO_PIKACHU_BED
-	db DECO_06
+	db DECO_CARPETS
 	db DECO_RED_CARPET
 	db DECO_GREEN_CARPET
 	db DECO_CLEFAIRY_POSTER
@@ -17146,7 +15150,7 @@
 	db DECO_ODDISH_DOLL
 	db DECO_MAGNAPLANT
 	db DECO_GENGAR_DOLL
-	db DECO_14
+	db DECO_CONSOLES
 	db DECO_PINK_BED
 	db DECO_SQUIRTLE_DOLL
 	db DECO_STARMIE_DOLL
@@ -20343,7 +18347,7 @@
 	call CopyMenuDataHeader
 	xor a
 	ld [hBGMapMode], a
-	call Function352f
+	call InitScrollingMenu
 	call UpdateSprites
 	ld a, [wd0f1]
 	ld [wMenuCursorBuffer], a
@@ -32411,16 +30415,16 @@
 	db $40 ; flags
 	db 00, 00 ; start coords
 	db 11, 10 ; end coords
-	dw MenuData2_0x882be
+	dw .MaleNames
 	db 1 ; ????
 	db 0 ; default option
 ; 882be
 
-MenuData2_0x882be: ; 882be
+.MaleNames: ; 882be
 	db $91 ; flags
 	db 5 ; items
 	db "NEW NAME@"
-Unknown_882c9: ; 882c9
+MalePlayerNameArray: ; 882c9
 	db "CHRIS@"
 	db "MAT@"
 	db "ALLAN@"
@@ -32433,16 +30437,16 @@
 	db $40 ; flags
 	db 00, 00 ; start coords
 	db 11, 10 ; end coords
-	dw MenuData2_0x882ee
+	dw .FemaleNames
 	db 1 ; ????
 	db 0 ; default option
 ; 882ee
 
-MenuData2_0x882ee: ; 882ee
+.FemaleNames: ; 882ee
 	db $91 ; flags
 	db 5 ; items
 	db "NEW NAME@"
-Unknown_882f9: ; 882f9
+FemalePlayerNameArray: ; 882f9
 	db "KRIS@"
 	db "AMANDA@"
 	db "JUANA@"
@@ -32453,11 +30457,11 @@
 
 GetPlayerNameArray: ; 88318 This Function is never called
 	ld hl, PlayerName
-	ld de, Unknown_882c9
+	ld de, MalePlayerNameArray
 	ld a, [PlayerGender]
 	bit 0, a
 	jr z, .done
-	ld de, Unknown_882f9
+	ld de, FemalePlayerNameArray
 
 .done
 	call InitName
@@ -32491,12 +30495,12 @@
 	ld hl, KrisCardPic
 .GotClass
 	ld de, VTiles2 tile $00
-	ld bc, $230
+	ld bc, $23 tiles
 	ld a, BANK(ChrisCardPic) ; BANK(KrisCardPic)
 	call FarCopyBytes
 	ld hl, CardGFX
 	ld de, VTiles2 tile $23
-	ld bc, $60
+	ld bc, 6 tiles
 	ld a, BANK(CardGFX)
 	call FarCopyBytes
 	ret