summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
authorZumi <13794376+ZoomTen@users.noreply.github.com>2021-05-09 00:15:39 +0700
committerGitHub <noreply@github.com>2021-05-08 13:15:39 -0400
commitf17cbee7a98c2f81d14ed26707157bddbcfce755 (patch)
tree8bbd0cb9ae08087548f92a74238cc724f8da9de9 /engine
parent2709ce5259a26719c1ef3c4288f2fa2dd5d3af85 (diff)
Dump banks $09 and $0B (#93)
Diffstat (limited to 'engine')
-rw-r--r--engine/dumps/bank09.asm2003
-rw-r--r--engine/dumps/bank0b.asm476
2 files changed, 2479 insertions, 0 deletions
diff --git a/engine/dumps/bank09.asm b/engine/dumps/bank09.asm
new file mode 100644
index 0000000..39d902e
--- /dev/null
+++ b/engine/dumps/bank09.asm
@@ -0,0 +1,2003 @@
+INCLUDE "constants.asm"
+
+SECTION "engine/dumps/bank09.asm@Function24000", ROMX
+
+Function24000:
+ xor a
+ call OpenSRAM
+ ld hl, wWindowStackPointer
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ push de
+ ld b, $10
+ ld hl, wMenuDataHeader
+.asm_24010
+ ld a, [hli]
+ ld [de], a
+ dec de
+ dec b
+ jr nz, .asm_24010
+ ld a, [wMenuDataHeader]
+ bit 6, a
+ jr nz, .asm_24028
+ bit 7, a
+ jr z, .asm_2404e
+ push de
+ call asm_240b3
+ pop de
+ jr nc, .asm_2404e
+.asm_24028
+ ld hl, wWindowStackPointer
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ set 0, [hl]
+ call MenuBoxCoord2Tile
+ call GetMenuBoxDims
+ inc b
+ inc c
+ call Function2406d
+
+.asm_2403b
+ push bc
+ push hl
+.asm_2403d
+ ld a, [hli]
+ ld [de], a
+ dec de
+ dec c
+ jr nz, .asm_2403d
+ pop hl
+ ld bc, SCREEN_WIDTH
+ add hl, bc
+ pop bc
+ dec b
+ jr nz, .asm_2403b
+ jr .asm_24055
+
+.asm_2404e
+ pop hl
+ push hl
+ ld a, [hld]
+ ld l, [hl]
+ ld h, a
+ res 0, [hl]
+
+.asm_24055
+ pop hl
+ call Function2406d
+ ld a, h
+ ld [de], a
+ dec de
+ ld a, l
+ ld [de], a
+ dec de
+ ld hl, wWindowStackPointer
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ call CloseSRAM
+ ld hl, wWindowStackSize
+ inc [hl]
+ ret
+
+Function2406d:
+ push bc
+ push de
+ push hl
+ xor a
+ ld l, c
+ ld h, $00
+ ld c, b
+ ld b, $00
+ ld a, $14
+ call AddNTimes
+ ld a, h
+ cpl
+ ld h, a
+ ld a, l
+ cpl
+ ld l, a
+ inc hl
+ add hl, de
+ ld a, e
+ sub $00
+ ld a, d
+ sbc $b8
+ jr c, Function24090
+ pop hl
+ pop de
+ pop bc
+ ret
+
+Function24090:
+ ld hl, .text_2409c
+ call PrintText
+ call WaitBGMap
+.asm_24099
+ nop
+ jr .asm_24099
+
+.text_2409c:
+ text "ウィンドウセーブエりアが"
+ next "オーバーしました"
+ done
+
+asm_240b3:
+ ld hl, wWindowStackPointer
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+asm_240b9:
+ inc hl
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ or h
+ jr z, asm_240d0
+ push hl
+ dec hl
+ ld b, [hl]
+ dec hl
+ ld c, [hl]
+ dec hl
+ ld d, [hl]
+ dec hl
+ ld e, [hl]
+ call asm_240f2
+ pop hl
+ ret c
+ jr asm_240b9
+asm_240d0:
+ ld hl, wMenuBorderTopCoord
+ ld b, [hl]
+ inc hl
+ ld c, [hl]
+ inc hl
+ ld d, [hl]
+ inc hl
+ ld e, [hl]
+ inc hl
+ ld hl, wWindowStackPointer
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+asm_240e1:
+ inc hl
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ or h
+ ret z
+ push hl
+ ld a, [hld]
+ ld l, [hl]
+ ld h, a
+ call asm_24116
+ pop hl
+ ret c
+ jr asm_240e1
+asm_240f2:
+ ld a, [wMenuBorderTopCoord]
+ ld h, a
+ ld a, [wMenuBorderLeftCoord]
+ ld l, a
+ call asm_24116
+ ret c
+ ld a, [wMenuBorderBottomCoord]
+ ld h, a
+ call asm_24116
+ ret c
+ ld a, [wMenuBorderRightCoord]
+ ld l, a
+ call asm_24116
+ ret c
+ ld a, [wMenuBorderTopCoord]
+ ld h, a
+ call asm_24116
+ ret
+
+asm_24116:
+ ld a, h
+ cp b
+ jr c, asm_2412a
+ cp d
+ jr c, asm_2411f
+ jr nz, asm_2412a
+asm_2411f:
+ ld a, l
+ cp c
+ jr c, asm_2412a
+ cp e
+ jr c, asm_24128
+ jr nz, asm_2412a
+asm_24128:
+ scf
+ ret
+
+asm_2412a:
+ and a
+ ret
+
+_ExitMenu::
+ xor a
+ ldh [hBGMapMode], a
+ xor a
+ call OpenSRAM
+ call GetWindowStackTop
+ ld a, l
+ or h
+ jp z, Function24164
+ ld a, l
+ ld [wWindowStackPointer], a
+ ld a, h
+ ld [wWindowStackPointer + 1], a
+ call PopWindow
+ ld a, [wMenuDataHeader]
+ bit 0, a
+ jr z, asm_24152
+ ld d, h
+ ld e, l
+ call RestoreTileBackup
+asm_24152:
+ call GetWindowStackTop
+ ld a, h
+ or l
+ jr z, asm_2415c
+ call PopWindow
+asm_2415c:
+ call CloseSRAM
+ ld hl, wWindowStackSize
+ dec [hl]
+ ret
+
+Function24164:
+ ld hl, .text_2416f
+ call PrintText
+ call WaitBGMap
+.loop
+ jr .loop
+
+.text_2416f:
+ text "ポップできる ウィンドウが"
+ next "ありません!"
+ done
+
+Function24185::
+ xor a
+ call OpenSRAM
+ call GetWindowStackTop
+ ld a, l
+ or h
+ jr z, asm_24195
+ call _ExitMenu
+ jr Function24185
+asm_24195:
+ call CloseSRAM
+ ret
+
+_InitVerticalMenuCursor::
+ ld a, [wMenuDataHeaderEnd]
+ ld b, a
+ ld hl, wMenuData3
+ ld a, [wMenuBorderTopCoord]
+ inc a
+ bit 6, b
+ jr nz, asm_241a9
+ inc a
+asm_241a9:
+ ld [hli], a
+ ld a, [wMenuBorderLeftCoord]
+ inc a
+ ld [hli], a
+ ld a, [wMenuDataItems]
+ ld [hli], a
+ ld a, $01
+ ld [hli], a
+ ld [hl], $00
+ bit 5, b
+ jr z, asm_241be
+ set 5, [hl]
+asm_241be:
+ ld a, [wMenuDataHeader]
+ bit 4, a
+ jr z, asm_241c7
+ set 6, [hl]
+asm_241c7:
+ inc hl
+ xor a
+ ld [hli], a
+ ld a, $20
+ ld [hli], a
+ ld a, $01
+ bit 0, b
+ jr nz, asm_241d5
+ add $02
+asm_241d5:
+ ld [hli], a
+ ld a, [wMenuCursorBuffer]
+ and a
+ jr z, asm_241e3
+ ld c, a
+ ld a, [wMenuDataItems]
+ cp c
+ jr nc, asm_241e5
+asm_241e3:
+ ld c, $01
+asm_241e5:
+ ld [hl], c
+ inc hl
+ ld a, $01
+ ld [hli], a
+ xor a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ret
+
+UpdateItemDescription::
+ ld a, [wMenuSelection]
+ ld [wSelectedItem], a
+ hlcoord 0, 12
+ ld b, $04
+ ld c, $12
+ call DrawTextBox
+ decoord 1, 14
+ callab ShowItemDescription
+ ret
+
+Function2420b:
+ ld a, $01
+ ldh [hBGMapMode], a
+ ld hl, .MenuHeader24262
+ call LoadMenuHeader
+ call MenuBox
+ call UpdateSprites
+ ld b, SGB_POKEPIC
+ call GetSGBLayout
+ xor a
+ ldh [hBGMapMode], a
+ ld a, [wMonDexIndex]
+ ld [wCurSpecies], a
+ call GetMonHeader
+ ld de, vFont
+ call LoadMonFrontSprite
+ ld a, [wMenuBorderTopCoord]
+ inc a
+ ld b, a
+ ld a, [wMenuBorderLeftCoord]
+ inc a
+ ld c, a
+ call Coord2Tile
+ ld a, $80
+ ldh [hGraphicStartTile], a
+ ld bc, $0707
+ predef PlaceGraphic
+ ld a, $01
+ ldh [hBGMapMode], a
+ call TextboxWaitPressAorB_BlinkCursor
+ call ClearMenuBoxInterior
+ call WaitBGMap
+ call GetMemSGBLayout
+ call CloseWindow
+ call LoadFont
+ ret
+
+.MenuHeader24262:
+ db MENU_BACKUP_TILES
+ menu_coords 6, 4, $e, $d
+ dw 0
+ db 1
+
+_InitScrollingMenu::
+ xor a
+ ld [wMenuJoypad], a
+ ldh [hBGMapMode], a
+ inc a
+ ldh [hJoyDebounceSrc], a
+ ld hl, wce5f
+ set 4, [hl]
+ call asm_243c3
+ call asm_243fc
+ ld c, $0a
+ call DelayFrames
+ call Function242a3
+ ret
+
+_ScrollingMenu::
+ call Function242b6
+ jp c, .asm_24296
+ ld a, $00
+ ldh [hJoypadSum], a
+ call z, Function242a3
+ jr _ScrollingMenu
+.asm_24296
+ ld [wMenuJoypad], a
+ ld a, $00
+ ldh [hJoyDebounceSrc], a
+ ld hl, wce5f
+ res 4, [hl]
+ ret
+
+Function242a3:
+ xor a
+ ldh [hBGMapMode], a
+ call Function24475
+ call Function244ff
+ call Function2452c
+ xor a
+ ldh [hJoypadSum], a
+ call WaitBGMap
+ ret
+
+Function242b6:
+ call Get2DMenuJoypad_NoPlaceCursor
+ ldh a, [hJoySum]
+ and $f0
+ ld b, a
+ ldh a, [hJoypadSum]
+ and $0f
+ or b
+ bit 0, a
+ jp nz, Function242f1
+ bit 1, a
+ jp nz, asm_2431c
+ bit 2, a
+ jp nz, Function24320
+ bit 3, a
+ jp nz, Function24342
+ bit 4, a
+ jp nz, asm_24362
+ bit 5, a
+ jp nz, asm_2434e
+ bit 6, a
+ jp nz, asm_24376
+ bit 7, a
+ jp nz, asm_2438a
+ jr Function242b6
+ ld a, $ff
+ and a
+ ret
+
+Function242f1:
+ call PlaceHollowCursor
+ ld a, [w2DMenuDataEnd]
+ dec a
+ call asm_24555
+ ld a, [wMenuSelection]
+ ld [wCurItem], a
+ ld a, [wMenuSelectionQuantity]
+ ld [wItemQuantityBuffer], a
+ call asm_243a5
+ dec a
+ ld [wScrollingMenuCursorPosition], a
+ ld [wItemIndex], a
+ ld a, [wMenuSelection]
+ cp $ff
+ jr z, asm_2431c
+ ld a, $01
+ scf
+ ret
+
+asm_2431c:
+ ld a, $02
+ scf
+ ret
+
+Function24320:
+ ld a, [wMenuDataHeaderEnd]
+ bit 7, a
+ jp z, SetFFInAccumulator
+ ld a, [w2DMenuDataEnd]
+ dec a
+ call asm_24555
+ ld a, [wMenuSelection]
+ cp $ff
+ jp z, SetFFInAccumulator
+ call asm_243a5
+ dec a
+ ld [wScrollingMenuCursorPosition], a
+ ld a, $04
+ scf
+ ret
+
+Function24342:
+ ld a, [wMenuDataHeaderEnd]
+ bit 6, a
+ jp z, SetFFInAccumulator
+ ld a, $08
+ scf
+ ret
+
+asm_2434e:
+ ld hl, w2DMenuFlags + 1
+ bit 7, [hl]
+ jp z, SetFFInAccumulator
+ ld a, [wMenuDataHeaderEnd]
+ bit 3, a
+ jp z, SetFFInAccumulator
+ ld a, $20
+ scf
+ ret
+
+asm_24362:
+ ld hl, w2DMenuFlags + 1
+ bit 7, [hl]
+ jp z, SetFFInAccumulator
+ ld a, [wMenuDataHeaderEnd]
+ bit 2, a
+ jp z, SetFFInAccumulator
+ ld a, $10
+ scf
+ ret
+
+asm_24376:
+ ld hl, w2DMenuFlags + 1
+ bit 7, [hl]
+ jp z, ClearAccumulator
+ ld hl, wMenuScrollPosition
+ ld a, [hl]
+ and a
+ jp z, ClearAccumulator
+ dec [hl]
+ jp ClearAccumulator
+
+asm_2438a:
+ ld hl, w2DMenuFlags + 1
+ bit 7, [hl]
+ jp z, ClearAccumulator
+ ld hl, wMenuScrollPosition
+ ld a, [wMenuDataItems]
+ add [hl]
+ ld b, a
+ ld a, [wcdbc]
+ cp b
+ jp c, ClearAccumulator
+ inc [hl]
+ jp ClearAccumulator
+
+asm_243a5:
+ ld a, [wMenuScrollPosition]
+ ld c, a
+ ld a, [w2DMenuDataEnd]
+ add c
+ ld c, a
+ ret
+
+ScrollingMenu_ClearLeftColumn::
+ call MenuBoxCoord2Tile
+ ld de, $14
+ add hl, de
+ ld de, $28
+ ld a, [wMenuDataItems]
+asm_243bc:
+ ld [hl], $7f
+ add hl, de
+ dec a
+ jr nz, asm_243bc
+ ret
+
+asm_243c3:
+ ld hl, wMenuDataDisplayFunctionPointer + 1
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [wMenuDataDisplayFunctionPointer]
+ call GetFarByte
+ ld [wcdbc], a
+ ld a, [wMenuScrollPosition]
+ ld c, a
+ ld a, [wMenuCursorBuffer]
+ add c
+ ld b, a
+ ld a, [wcdbc]
+ inc a
+ cp b
+ jr c, .asm_243f2
+ ld a, [wMenuScrollPosition]
+ ld c, a
+ ld a, [wMenuDataItems]
+ add c
+ ld b, a
+ ld a, [wcdbc]
+ inc a
+ cp b
+ jr nc, .asm_243fb
+.asm_243f2
+ xor a
+ ld [wMenuScrollPosition], a
+ ld a, $01
+ ld [wMenuCursorBuffer], a
+.asm_243fb
+ ret
+
+asm_243fc:
+ ld a, [wMenuDataHeaderEnd]
+ ld c, a
+ ld a, [wcdbc]
+ ld b, a
+ ld a, [wMenuBorderTopCoord]
+ add $01
+ ld [wMenuData3], a
+ ld a, [wMenuBorderLeftCoord]
+ add $00
+ ld [w2DMenuCursorInitX], a
+ ld a, [wMenuDataItems]
+ cp b
+ jr c, asm_2441e
+ jr z, asm_2441e
+ ld a, b
+ inc a
+asm_2441e:
+ ld [w2DMenuNumRows], a
+ ld a, $01
+ ld [w2DMenuNumCols], a
+ ld a, $8c
+ bit 2, c
+ jr z, asm_2442e
+ set 0, a
+asm_2442e:
+ bit 3, c
+ jr z, asm_24434
+ set 1, a
+asm_24434:
+ ld [w2DMenuFlags], a
+ xor a
+ ld [w2DMenuFlags + 1], a
+ ld a, $20
+ ld [w2DMenuCursorOffsets], a
+ ld a, $c3
+ bit 7, c
+ jr z, asm_24448
+ add $04
+asm_24448:
+ bit 6, c
+ jr z, asm_2444e
+ add $08
+asm_2444e:
+ ld [wMenuJoypadFilter], a
+ ld a, [w2DMenuNumRows]
+ ld b, a
+ ld a, [wMenuCursorBuffer]
+ and a
+ jr z, asm_24460
+ cp b
+ jr z, asm_24462
+ jr c, asm_24462
+asm_24460:
+ ld a, $01
+asm_24462:
+ ld [w2DMenuDataEnd], a
+ ld a, $01
+ ld [wMenuCursorX], a
+ xor a
+ ld [wCursorCurrentTile], a
+ ld [wCursorCurrentTile + 1], a
+ ld [wCursorOffCharacter], a
+ ret
+
+Function24475:
+ call ClearWholeMenuBox
+ ld a, [wMenuScrollPosition]
+ and a
+ jr z, asm_2448b
+ ld a, [wMenuBorderTopCoord]
+ ld b, a
+ ld a, [wMenuBorderRightCoord]
+ ld c, a
+ call Coord2Tile
+ ld [hl], $61
+asm_2448b:
+ call MenuBoxCoord2Tile
+ ld bc, $0015
+ add hl, bc
+ ld a, [wMenuDataItems]
+ ld b, a
+ ld c, $00
+asm_24498:
+ ld a, [wMenuScrollPosition]
+ add c
+ ld [wScrollingMenuCursorPosition], a
+ ld a, c
+ call asm_24555
+ ld a, [wMenuSelection]
+ cp $ff
+ jr z, asm_244c8
+ push bc
+ push hl
+ call asm_244e2
+ pop hl
+ ld bc, $0028
+ add hl, bc
+ pop bc
+ inc c
+ ld a, c
+ cp b
+ jr nz, asm_24498
+ ld a, [wMenuBorderBottomCoord]
+ ld b, a
+ ld a, [wMenuBorderRightCoord]
+ ld c, a
+ call Coord2Tile
+ ld [hl], $ee
+ ret
+
+asm_244c8:
+ ld a, [wMenuDataHeaderEnd]
+ bit 0, a
+ jr nz, asm_244da
+ ld de, .text_244d6
+ call PlaceString
+ ret
+
+.text_244d6:
+ db "やめる@"
+
+asm_244da:
+ ld d, h
+ ld e, l
+ ld hl, wMenuDataPointerTableAddr + 1
+ jp CallFar_atHL
+
+asm_244e2:
+ push hl
+ ld d, h
+ ld e, l
+ ld hl, wMenuDataPointerTableAddr + 1
+ call CallFar_atHL
+ pop hl
+ ld a, [wMenuDataIndicesPointer]
+ and a
+ jr z, asm_244fe
+ ld e, a
+ ld d, $00
+ add hl, de
+ ld d, h
+ ld e, l
+ ld hl, wcc1c
+ call CallFar_atHL
+asm_244fe:
+ ret
+
+Function244ff:
+ ld a, [wSelectedSwapPosition]
+ and a
+ jr z, asm_2452b
+ ld b, a
+ ld a, [wMenuScrollPosition]
+ cp b
+ jr nc, asm_2452b
+ ld c, a
+ ld a, [wMenuDataItems]
+ add c
+ cp b
+ jr c, asm_2452b
+ ld a, b
+ sub c
+ dec a
+ add a
+ add $01
+ ld c, a
+ ld a, [wMenuBorderTopCoord]
+ add c
+ ld b, a
+ ld a, [wMenuBorderLeftCoord]
+ add $00
+ ld c, a
+ call Coord2Tile
+ ld [hl], $ec
+asm_2452b:
+ ret
+
+Function2452c:
+ ld a, [wMenuDataHeaderEnd]
+ bit 5, a
+ ret z
+ hlcoord 0, 12
+ ld b, $04
+ ld c, $12
+ call DrawTextBox
+ ld a, [w2DMenuDataEnd]
+ dec a
+ call asm_24555
+ ld a, [wMenuSelection]
+ cp $ff
+ jr z, .done
+ decoord 1, 14
+ ld hl, wcc1f
+ call CallFar_atHL
+ ret
+
+.done
+ ret
+
+asm_24555:
+ push de
+ push hl
+ ld e, a
+ ld a, [wMenuScrollPosition]
+ add e
+ ld e, a
+ ld d, $00
+ ld hl, wMenuDataDisplayFunctionPointer + 1
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ inc hl
+ ld a, [wMenuDataIndicesPointer + 1]
+ cp $01
+ jr z, asm_24576
+ cp $02
+ jr z, asm_24575
+ cp $80
+ jr z, asm_24590
+asm_24575:
+ add hl, de
+asm_24576:
+ add hl, de
+ ld a, [wMenuDataDisplayFunctionPointer]
+ call GetFarByte
+ ld [wMenuSelection], a
+ ld [wCurItem], a
+ inc hl
+ ld a, [wMenuDataDisplayFunctionPointer]
+ call GetFarByte
+ ld [wMenuSelectionQuantity], a
+ pop hl
+ pop de
+ ret
+
+asm_24590:
+ ld a, [wcdbc]
+ ld d, a
+ ld a, e
+ cp d
+ jr nc, asm_245b5
+ inc e
+ ld d, $00
+asm_2459b:
+ inc d
+ ld a, [hli]
+ and a
+ jr z, asm_2459b
+ dec e
+ jr nz, asm_2459b
+ dec hl
+ dec d
+ push bc
+ push hl
+ ld c, d
+ callab GetBallByIndex
+ ld d, c
+ pop hl
+ pop bc
+ jr asm_245b7
+asm_245b5:
+ ld d, $ff
+asm_245b7:
+ ld a, d
+ ld [wMenuSelection], a
+ ld [wCurItem], a
+ ld a, [hl]
+ ld [wMenuSelectionQuantity], a
+ pop hl
+ pop de
+ ret
+
+SwitchItemsInBag::
+ ld a, [wSelectedSwapPosition]
+ and a
+ jr z, asm_24602
+ ld b, a
+ ld a, [wScrollingMenuCursorPosition]
+ inc a
+ cp b
+ jr z, asm_2460a
+ ld a, [wScrollingMenuCursorPosition]
+ call asm_246f7
+ ld a, [hl]
+ cp $ff
+ ret z
+ ld a, [wSelectedSwapPosition]
+ dec a
+ ld [wSelectedSwapPosition], a
+ ld a, [wSelectedSwapPosition]
+ call asm_246f7
+ push hl
+ ld a, [wScrollingMenuCursorPosition]
+ call asm_246f7
+ ld a, [hl]
+ pop hl
+ cp [hl]
+ jr z, asm_2466c
+ ld a, [wScrollingMenuCursorPosition]
+ ld c, a
+ ld a, [wSelectedSwapPosition]
+ cp c
+ jr c, asm_2463f
+ jr asm_2460f
+asm_24602:
+ ld a, [wScrollingMenuCursorPosition]
+ inc a
+ ld [wSelectedSwapPosition], a
+ ret
+
+asm_2460a:
+ xor a
+ ld [wSelectedSwapPosition], a
+ ret
+
+asm_2460f:
+ ld a, [wSelectedSwapPosition]
+ call asm_246db
+ ld a, [wScrollingMenuCursorPosition]
+ ld d, a
+ ld a, [wSelectedSwapPosition]
+ ld e, a
+ call asm_24707
+ push bc
+ ld a, [wSelectedSwapPosition]
+ call asm_246f7
+ dec hl
+ push hl
+ call asm_2471b
+ add hl, bc
+ ld d, h
+ ld e, l
+ pop hl
+ pop bc
+ call asm_24732
+ ld a, [wScrollingMenuCursorPosition]
+ call asm_246e8
+ xor a
+ ld [wSelectedSwapPosition], a
+ ret
+
+asm_2463f:
+ ld a, [wSelectedSwapPosition]
+ call asm_246db
+ ld a, [wScrollingMenuCursorPosition]
+ ld d, a
+ ld a, [wSelectedSwapPosition]
+ ld e, a
+ call asm_24707
+ push bc
+ ld a, [wSelectedSwapPosition]
+ call asm_246f7
+ ld d, h
+ ld e, l
+ call asm_2471b
+ add hl, bc
+ pop bc
+ call CopyBytes
+ ld a, [wScrollingMenuCursorPosition]
+ call asm_246e8
+ xor a
+ ld [wSelectedSwapPosition], a
+ ret
+
+asm_2466c:
+ ld a, [wSelectedSwapPosition]
+ call asm_246f7
+ inc hl
+ push hl
+ ld a, [wScrollingMenuCursorPosition]
+ call asm_246f7
+ inc hl
+ ld a, [hl]
+ pop hl
+ add [hl]
+ cp $64
+ jr c, asm_2469c
+ sub $63
+ push af
+ ld a, [wScrollingMenuCursorPosition]
+ call asm_246f7
+ inc hl
+ ld [hl], $63
+ ld a, [wSelectedSwapPosition]
+ call asm_246f7
+ inc hl
+ pop af
+ ld [hl], a
+ xor a
+ ld [wSelectedSwapPosition], a
+ ret
+
+asm_2469c:
+ push af
+ ld a, [wScrollingMenuCursorPosition]
+ call asm_246f7
+ inc hl
+ pop af
+ ld [hl], a
+ ld hl, wMenuDataDisplayFunctionPointer + 1
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [wSelectedSwapPosition]
+ cp [hl]
+ jr nz, asm_246c0
+ dec [hl]
+ ld a, [wSelectedSwapPosition]
+ call asm_246f7
+ ld [hl], $ff
+ xor a
+ ld [wSelectedSwapPosition], a
+ ret
+
+asm_246c0:
+ dec [hl]
+ call asm_2471b
+ push bc
+ ld a, [wSelectedSwapPosition]
+ call asm_246f7
+ pop bc
+ push hl
+ add hl, bc
+ pop de
+asm_246cf:
+ ld a, [hli]
+ ld [de], a
+ inc de
+ cp $ff
+ jr nz, asm_246cf
+ xor a
+ ld [wSelectedSwapPosition], a
+ ret
+
+asm_246db:
+ call asm_246f7
+ ld de, wMovementBufferCount
+ call asm_2471b
+ call CopyBytes
+ ret
+
+asm_246e8:
+ call asm_246f7
+ ld d, h
+ ld e, l
+ ld hl, wMovementBufferCount
+ call asm_2471b
+ call CopyBytes
+ ret
+
+asm_246f7:
+ push af
+ call asm_2471b
+ ld hl, wMenuDataDisplayFunctionPointer + 1
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ inc hl
+ pop af
+ call AddNTimes
+ ret
+
+asm_24707:
+ push hl
+ call asm_2471b
+ ld a, d
+ sub e
+ jr nc, asm_24711
+ dec a
+ cpl
+asm_24711:
+ ld hl, 0
+ call AddNTimes
+ ld b, h
+ ld c, l
+ pop hl
+ ret
+
+asm_2471b:
+ push hl
+ ld a, [wMenuDataIndicesPointer + 1]
+ ld c, a
+ ld b, $00
+ ld hl, .data_2472c
+ add hl, bc
+ add hl, bc
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ pop hl
+ ret
+
+.data_2472c:
+ dw 0
+ dw 1
+ dw 2
+
+asm_24732:
+ ld a, [hld]
+ ld [de], a
+ dec de
+ dec bc
+ ld a, b
+ or c
+ jr nz, asm_24732
+ ret
+
+Function2473b::
+ ld a, [wMenuSelection]
+ cp $ff
+ jr z, .asm_24762
+ push de
+ callab CheckItemMenu
+ ld a, [wItemAttributeParamBuffer]
+ ld e, a
+ ld d, $00
+ ld hl, .data_2475b
+ add hl, de
+ ld a, [hl]
+ pop de
+ ld [de], a
+ inc de
+ jr PlaceMenuItemName
+
+.data_2475b:
+ db $7f, $62, $64, $63, $7f, $7f, $7f
+
+.asm_24762
+ ld h, d
+ ld l, e
+ ld de, .text_2476b
+ call PlaceString
+ ret
+
+.text_2476b:
+ db " ーーやめるーー@"
+
+PlaceMenuItemName::
+ push de
+ ld a, [wMenuSelection]
+ ld [wNamedObjectIndexBuffer], a
+ call GetItemName
+ pop hl
+ call PlaceString
+ ret
+
+PlaceMenuItemQuantity::
+ push de
+ ld a, [wMenuSelection]
+ ld [wCurItem], a
+ callab _CheckTossableItem
+ ld a, [wItemAttributeParamBuffer]
+ pop hl
+ and a
+ jr nz, .done
+ ld [hl], $f1
+ inc hl
+ ld de, wMenuSelectionQuantity
+ ld bc, $0102
+ call PrintNumber
+.done
+ ret
+
+asm_247a6:
+ ld hl, wPartyMonOTEnd
+ jr .asm_247ae
+ ld hl, wdf17
+.asm_247ae
+ push de
+ ld a, [wScrollingMenuCursorPosition]
+ call GetNick
+ pop hl
+ call PlaceString
+ ret
+
+asm_247ba:
+ ld a, $00
+ ld [wMonType], a
+ jr .asm_247c6
+ ld a, $02
+ ld [wMonType], a
+.asm_247c6
+ push de
+ ld a, [wScrollingMenuCursorPosition]
+ ld [wWhichPokemon], a
+ predef Function50000
+ pop hl
+ call PrintLevel
+ ret
+
+ret_247d7:
+ ret
+
+asm_247d8:
+ push de
+ ld a, [wScrollingMenuCursorPosition]
+ ld c, a
+ ld b, $00
+ ld hl, wBoxList
+ add hl, bc
+ ld a, [hl]
+ ld [wNamedObjectIndexBuffer], a
+ call GetPokemonName
+ pop hl
+ call PlaceString
+ ld de, 6
+ add hl, de
+ push hl
+ ld a, [wScrollingMenuCursorPosition]
+ ld hl, wdf17
+ call GetNick
+ pop hl
+ call PlaceString
+ ld de, 6
+ add hl, de
+ push hl
+ ld a, [wScrollingMenuCursorPosition]
+ ld [wWhichPokemon], a
+ ld a, $02
+ ld [wMonType], a
+ ld a, $31
+ call Predef
+ pop hl
+ push hl
+ call PrintLevel
+ pop hl
+ ld de, 3
+ add hl, de
+ push hl
+ callab Function5069e
+ ld a, $ef
+ jr c, .asm_2482e
+ ld a, $f5
+.asm_2482e
+ pop hl
+ ld [hl], a
+ ret
+
+asm_4831:
+ ld hl, .MenuHeader2484e
+ call CopyMenuHeader
+ call MenuBox
+ call PlaceVerticalMenuItems
+ call MenuBoxCoord2Tile
+ ld de, $0015
+ add hl, de
+ ld de, wd15d
+ ld bc, $4306
+ call PrintNumber
+ ret
+
+.MenuHeader2484e:
+ db 0
+ menu_coords 11, 0, $13, 2
+ dw .data_24856
+ db 1
+
+.data_24856:
+ db $40, $01
+ db "      円@"
+
+asm_24860:
+ ld hl, MenuHeader24888
+ call CopyMenuHeader
+ jr asm_24872
+
+asm_24868:
+ ld hl, MenuHeader24888
+ ld d, $0b
+ ld e, $00
+ call OffsetMenuHeader
+
+asm_24872:
+ call MenuBox
+ call MenuBoxCoord2Tile
+ ld de, $0015
+ add hl, de
+ ld de, wd15d
+ ld bc, $4306
+ call PrintNumber
+ ld [hl], $f0
+ ret
+
+MenuHeader24888:
+ db MENU_BACKUP_TILES
+ menu_coords 11, 0, $13, 2
+ dw 0
+ db 1
+
+asm_24890:
+ ld hl, .MenuHeader2489a
+ call LoadMenuHeader
+ call VerticalMenu
+ ret
+
+.MenuHeader2489a:
+ db MENU_BACKUP_TILES
+ menu_coords 0, 0, 6, 10
+ dw .text_248a2
+ db 1
+
+.text_248a2:
+ db "たエ゛うる@"
+ db "かう@"
+ db "やめる@"
+ db "くさかり@"
+ db "とんでけ@"
+ db "どんぶらこ@"
+ db "フルパワー@"
+ db "ひかりゴケ@"
+ db "うずしお@"
+ db "とびはねる@"
+ db "あなをほる@"
+ db "テレポート@"
+ db "タマゴうみ@"
+
+Text248e7:
+ db "つよさをみる@"
+ db "ならびかえ@"
+ db "そうび@"
+ db "キャンセル@"
+ db "もちわざ@"
+ db "メール@"
+ db "エラー!@"
+
+Data2490c:
+ db $f5, $01
+ db $f6, $02
+ db $f7, $03
+ db $f8, $04
+ db $f9, $05
+ db $fa, $06
+ db $fb, $07
+ db $5b, $08
+ db $64, $09
+ db $87, $0a
+ db $ff
+
+Data24921:
+ db $01, $01, $f5
+ db $01, $02, $f6
+ db $01, $03, $f7
+ db $01, $04, $f8
+ db $01, $05, $f9
+ db $01, $06, $fa
+ db $01, $07, $fb
+ db $01, $08, $5b
+ db $01, $09, $64
+ db $01, $0a, $87
+ db $00, $0b, $01
+ db $00, $0c, $02
+ db $00, $0d, $03
+ db $00, $0e, $04
+ db $00, $0f, $05
+ db $00, $10, $06
+ db $00, $11, $07
+ db $ff
+
+Function24955::
+ xor a
+ ldh [hBGMapMode], a
+ call asm_24a0c
+ callab Function_8f1cb
+ ld hl, .MenuHeader2497d
+ call LoadMenuHeader
+ call asm_24985
+ call asm_249c9
+ ld a, 1
+ ldh [hBGMapMode], a
+ call asm_24997
+ ld [wMenuSelection], a
+ call CloseWindow
+ ret
+
+.MenuHeader2497d:
+ db $40
+ menu_coords 11, 0, $13, $11
+ dw 0
+ db 1
+
+asm_24985:
+ ld a, [wFieldMoveScriptID]
+ inc a
+ add a
+ ld b, a
+ ld a, [wMenuBorderBottomCoord]
+ sub b
+ inc a
+ ld [wMenuBorderTopCoord], a
+ call MenuBox
+ ret
+
+asm_24997:
+ ld a, $a0
+ ld [wMenuDataHeaderEnd], a
+ ld a, [wFieldMoveScriptID]
+ ld [wMenuDataItems], a
+ call InitVerticalMenuCursor
+ ld hl, w2DMenuFlags
+ set 6, [hl]
+ call Get2DMenuJoypad
+ ldh a, [hJoyDown]
+ bit 0, a
+ jr nz, asm_249bc
+ bit 1, a
+ jr nz, asm_249b9
+ jr asm_24997
+asm_249b9:
+ ld a, $0e
+ ret
+
+asm_249bc:
+ ld a, [w2DMenuDataEnd]
+ dec a
+ ld c, a
+ ld b, $00
+ ld hl, wMapBlocksAddress
+ add hl, bc
+ ld a, [hl]
+ ret
+
+asm_249c9:
+ call MenuBoxCoord2Tile
+ ld bc, $002a
+ add hl, bc
+ ld de, wMapBlocksAddress
+asm_249d3:
+ ld a, [de]
+ inc de
+ cp $ff
+ ret z
+ push de
+ push hl
+ call asm_249e8
+ pop hl
+ call PlaceString
+ ld bc, $0028
+ add hl, bc
+ pop de
+ jr asm_249d3
+asm_249e8:
+ dec a
+ ld b, a
+ add a
+ add b
+ ld c, a
+ ld b, $00
+ ld hl, Data24921
+ add hl, bc
+ ld a, [hli]
+ and a
+ jr z, asm_24a00
+ inc hl
+ ld a, [hl]
+ ld [wNamedObjectIndexBuffer], a
+ call Unreferenced_GetMoveName
+ ret
+
+asm_24a00:
+ inc hl
+ ld a, [hl]
+ dec a
+ ld hl, Text248e7
+ call GetNthString
+ ld d, h
+ ld e, l
+ ret
+
+asm_24a0c:
+ call asm_24a78
+ ld a, $02
+ call GetPartyParamLocation
+ ld d, h
+ ld e, l
+ ld hl, wMapBlocksAddress
+ ld c, $04
+asm_24a1b:
+ push bc
+ push de
+ ld a, [de]
+ and a
+ jr z, asm_24a2b
+ push hl
+ call asm_24a63
+ pop hl
+ jr nc, asm_24a2b
+ call asm_24a93
+asm_24a2b:
+ pop de
+ inc de
+ pop bc
+ dec c
+ jr nz, asm_24a1b
+ ld a, $0b
+ call asm_24a93
+ ld a, $0c
+ call asm_24a93
+ ld a, $0f
+ call asm_24a93
+ push hl
+ ld a, $01
+ call GetPartyParamLocation
+ ld a, [hl]
+ pop hl
+ cp $9e
+ ld a, $0d
+ jr nz, asm_24a50
+ ld a, $10
+asm_24a50:
+ call asm_24a93
+ ld a, [wFieldMoveScriptID]
+ cp $08
+ jr z, asm_24a5f
+ ld a, $0e
+ call asm_24a93
+asm_24a5f:
+ call asm_24a86
+ ret
+
+asm_24a63:
+ ld b, a
+ ld hl, Data24921
+asm_24a67:
+ ld a, [hli]
+ cp $ff
+ jr z, asm_24a77
+ and a
+ jr z, asm_24a77
+ ld d, [hl]
+ inc hl
+ ld a, [hli]
+ cp b
+ jr nz, asm_24a67
+ ld a, d
+ scf
+asm_24a77:
+ ret
+
+asm_24a78:
+ xor a
+ ld [wFieldMoveScriptID], a
+ ld hl, wMapBlocksAddress
+ ld bc, $9
+ call ByteFill
+ ret
+
+asm_24a86:
+ ld a, [wFieldMoveScriptID]
+ ld e, a
+ ld d, $00
+ ld hl, wMapBlocksAddress
+ add hl, de
+ ld [hl], $ff
+ ret
+
+asm_24a93:
+ push hl
+ push de
+ push af
+ ld a, [wFieldMoveScriptID]
+ ld e, a
+ inc a
+ ld [wFieldMoveScriptID], a
+ ld d, $00
+ ld hl, wMapBlocksAddress
+ add hl, de
+ pop af
+ ld [hl], a
+ pop de
+ pop hl
+ ret
+
+asm_24aa9:
+ ld hl, .MenuHeader24ae9
+ call CopyMenuHeader
+ xor a
+ ldh [hBGMapMode], a
+ call MenuBox
+ call UpdateSprites
+ call PlaceVerticalMenuItems
+ call WaitBGMap
+ ld hl, wMenuDataPointer
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, wMenuDataHeaderEnd
+ ld bc, $8
+ call CopyBytes
+ ld a, [wMenuDataHeaderEnd]
+ bit 7, a
+ jr z, .asm_24ae4
+ call InitVerticalMenuCursor
+ ld hl, w2DMenuFlags
+ set 6, [hl]
+ call Get2DMenuJoypad
+ bit 1, a
+ jr z, .asm_24ae6
+ ret z
+.asm_24ae4:
+ scf
+ ret
+
+.asm_24ae6:
+ and a
+ ret
+
+ ret
+
+.MenuHeader24ae9:
+ db 0
+ menu_coords 11, 11, $13, $11
+ dw .text_24af1
+ db 1
+
+.text_24af1:
+ db "たエ゛とりかえる@"
+ db "つよさをみる@"
+ db "キャンセル@"
+
+asm_24b06:
+ ld hl, MenuHeader24b24
+ jr asm_24b0e
+
+asm_24b0b:
+ ld hl, MenuHeader24b3e
+asm_24b0e:
+ call LoadMenuHeader
+ ld a, [wStartmenuCursor]
+ ld [wMenuCursorBuffer], a
+ call asm_24b67
+ ld a, [wMenuCursorBuffer]
+ ld [wStartmenuCursor], a
+ call ExitMenu
+ ret
+
+MenuHeader24b24:
+ db MENU_BACKUP_TILES
+ menu_coords 9, 12, $13, $11
+ dw .text_24b2c
+ db 1
+
+.text_24b2c:
+ db "ア<TA!>ガたたかう@"
+ db "どうぐ@"
+ db "#@"
+ db "にげる@"
+
+MenuHeader24b3e:
+ db MENU_BACKUP_TILES
+ menu_coords 0, 12, $13, $11
+ dw .text_24b46
+ db 1
+
+.text_24b46:
+ db "ア<TA!>ジサファりボール×   @"
+ db "エサをなげる@"
+ db "いしをなげる@"
+ db "にげる@"
+
+asm_24b67:
+ call CopyMenuData
+ call MenuBox
+ ld a, [wMenuDataItems]
+ ld b, a
+ and $0f
+ ld [wMovementBufferCount], a
+ ld a, b
+ and $f0
+ swap a
+ ld [wMovementBufferObject], a
+ call asm_24bb8
+ call asm_24bee
+ call Get2DMenuJoypad
+ ldh a, [hJoySum]
+ bit 2, a
+ jr nz, asm_24ba2
+ ld a, [w2DMenuNumRows]
+ ld c, a
+ ld a, [w2DMenuDataEnd]
+ dec a
+ call asm_24ba4
+ ld c, a
+ ld a, [wMenuCursorX]
+ add c
+ ld [wMenuCursorBuffer], a
+ and a
+ ret
+
+asm_24ba2:
+ scf
+ ret
+
+asm_24ba4:
+ and a
+ ret z
+ push bc
+ ld b, a
+ xor a
+asm_24ba9:
+ add c
+ dec b
+ jr nz, asm_24ba9
+ pop bc
+ ret
+
+asm_24baf:
+ ld b, $00
+asm_24bb1:
+ inc b
+ sub c
+ jr nc, asm_24bb1
+ dec b
+ add c
+ ret
+
+asm_24bb8:
+ ld hl, wMenuDataPointer
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, $0003
+ add hl, de
+ ld d, h
+ ld e, l
+ call GetMenuTextStartCoord
+ call Coord2Tile
+ ld a, [wMovementBufferCount]
+ ld b, a
+asm_24bce:
+ push bc
+ push hl
+ ld a, [wMovementBufferObject]
+ ld c, a
+asm_24bd4:
+ push bc
+ call PlaceString
+ inc de
+ ld a, [wMenuDataIndicesPointer]
+ ld c, a
+ ld b, $00
+ add hl, bc
+ pop bc
+ dec c
+ jr nz, asm_24bd4
+ pop hl
+ ld bc, $0028
+ add hl, bc
+ pop bc
+ dec b
+ jr nz, asm_24bce
+ ret
+
+asm_24bee:
+ call GetMenuTextStartCoord
+ ld a, b
+ ld [wMenuData3], a
+ dec c
+ ld a, c
+ ld [w2DMenuCursorInitX], a
+ ld a, [wMovementBufferCount]
+ ld [w2DMenuNumRows], a
+ ld a, [wMovementBufferObject]
+ ld [w2DMenuNumCols], a
+ ld a, [wMenuDataHeaderEnd]
+ ld d, a
+ bit 5, d
+ ld a, $00
+ jr z, asm_24c12
+ ld a, $30
+asm_24c12:
+ ld [w2DMenuFlags], a
+ ld a, [wMenuDataIndicesPointer]
+ or $20
+ ld [w2DMenuCursorOffsets], a
+ ld a, $05
+ ld [wMenuJoypadFilter], a
+ ld a, [w2DMenuNumCols]
+ ld e, a
+ ld a, [wMenuCursorBuffer]
+ ld b, a
+ xor a
+ ld d, $00
+asm_24c2d:
+ inc d
+ add e
+ cp b
+ jr c, asm_24c2d
+ sub e
+ ld c, a
+ ld a, b
+ sub c
+ and a
+ jr z, asm_24c3e
+ cp e
+ jr z, asm_24c40
+ jr c, asm_24c40
+asm_24c3e:
+ ld a, $01
+asm_24c40:
+ ld [wMenuCursorX], a
+ ld a, [w2DMenuNumRows]
+ ld e, a
+ ld a, d
+ and a
+ jr z, asm_24c50
+ cp e
+ jr z, asm_24c52
+ jr c, asm_24c52
+asm_24c50:
+ ld a, $01
+asm_24c52:
+ ld [w2DMenuDataEnd], a
+ xor a
+ ld [wCursorOffCharacter], a
+ ld [wCursorCurrentTile], a
+ ld [wCursorCurrentTile + 1], a
+ ret
+
+SelectQuantityToToss::
+ ld hl, MenuHeader24d64
+ call LoadMenuHeader
+ call asm_24c84
+ ret
+
+asm_24c64:
+ callab GetItemPrice
+ ld a, d
+ ld [wFieldMoveScriptID], a
+ ld a, e
+ ld [wMapBlocksAddress], a
+ ld hl, MenuHeader24d6c
+ call LoadMenuHeader
+ call asm_24c84
+ ret
+
+asm_24c84:
+ ld a, 1
+ ld [wItemQuantity], a
+asm_24c89:
+ call GetJoypad
+ ldh a, [hJoyState]
+ bit 0, a
+ jr nz, asm_24c89
+asm_24c92:
+ call asm_24d15
+ call asm_24ca2
+ jr nc, asm_24c92
+ cp $ff
+ jr nz, asm_24ca0
+ scf
+ ret
+
+asm_24ca0:
+ and a
+ ret
+
+asm_24ca2:
+ call DelayFrame
+ ldh a, [hJoyDebounceSrc]
+ push af
+ ld a, $01
+ ldh [hJoyDebounceSrc], a
+ call GetJoypadDebounced
+ pop af
+ ldh [hJoyDebounceSrc], a
+ ldh a, [hJoyDown]
+ bit 1, a
+ jr nz, asm_24cd0
+ bit 0, a
+ jr nz, asm_24cd4
+ ldh a, [hJoySum]
+ bit 7, a
+ jr nz, asm_24cd6
+ bit 6, a
+ jr nz, asm_24ce2
+ bit 5, a
+ jr nz, asm_24cf0
+ bit 4, a
+ jr nz, asm_24d02
+ jr asm_24ca2
+asm_24cd0:
+ ld a, $ff
+ scf
+ ret
+
+asm_24cd4:
+ scf
+ ret
+
+asm_24cd6:
+ ld hl, wItemQuantity
+ dec [hl]
+ jr nz, asm_24ce0
+ ld a, [wItemQuantityBuffer]
+ ld [hl], a
+asm_24ce0:
+ and a
+ ret
+
+asm_24ce2:
+ ld hl, wItemQuantity
+ inc [hl]
+ ld a, [wItemQuantityBuffer]
+ cp [hl]
+ jr nc, asm_24cee
+ ld [hl], 1
+asm_24cee:
+ and a
+ ret
+
+asm_24cf0:
+ ld a, [wItemQuantity]
+ sub 10
+ jr c, asm_24cfb
+ jr z, asm_24cfb
+ jr asm_24cfd
+asm_24cfb:
+ ld a, 1
+asm_24cfd:
+ ld [wItemQuantity], a
+ and a
+ ret
+
+asm_24d02:
+ ld a, [wItemQuantity]
+ add 10
+ ld b, a
+ ld a, [wItemQuantityBuffer]
+ cp b
+ jr nc, asm_24d0f
+ ld b, a
+asm_24d0f:
+ ld a, b
+ ld [wItemQuantity], a
+ and a
+ ret
+
+asm_24d15:
+ call MenuBox
+ call MenuBoxCoord2Tile
+ ld de, $15
+ add hl, de
+ ld [hl], $f1
+ inc hl
+ ld de, wItemQuantity
+ ld bc, $8102
+ call PrintNumber
+ ld a, [wMenuDataPointer]
+ cp $ff
+ ret nz
+ xor a
+ ldh [hMultiplicand], a
+ ld a, [wFieldMoveScriptID]
+ ldh [hMultiplicand + 1], a
+ ld a, [wMapBlocksAddress]
+ ldh [hMultiplicand + 2], a
+ ld a, [wItemQuantity]
+ ldh [hMultiplier], a
+ push hl
+ call Multiply
+ ld hl, hFFCD
+ ldh a, [hMultiplicand]
+ ld [hli], a
+ ldh a, [hMultiplicand + 1]
+ ld [hli], a
+ ldh a, [hMultiplicand + 2]
+ ld [hl], a
+ pop hl
+ inc hl
+ ld de, hFFCD
+ ld bc, $0406
+ call PrintNumber
+ ld [hl], $f0
+ call WaitBGMap
+ ret
+
+MenuHeader24d64:
+ db MENU_BACKUP_TILES
+ menu_coords 15, 9, $13, 11
+ dw 0
+ db 0
+
+MenuHeader24d6c:
+ db MENU_BACKUP_TILES
+ menu_coords 7, 15, $13, $11
+ dw $ff
+ db $ff
+
diff --git a/engine/dumps/bank0b.asm b/engine/dumps/bank0b.asm
new file mode 100644
index 0000000..f1b484a
--- /dev/null
+++ b/engine/dumps/bank0b.asm
@@ -0,0 +1,476 @@
+INCLUDE "constants.asm"
+
+SECTION "engine/dumps/bank0b.asm", ROMX
+
+ShowItemDescription::
+ push de
+ ld hl, ItemDescriptions
+ ld a, [wSelectedItem]
+ dec a
+ ld c, a
+ ld b, 0
+ add hl, bc
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ pop hl
+ jp PlaceString
+
+INCLUDE "data/items/descriptions.inc"
+
+Function2d2fc:
+ ld a, $1
+ ldh [hJoyDebounceSrc], a
+ call sub_2d436
+ ld a, $0
+ ldh [hJoyDebounceSrc], a
+ ret nc
+ call PlaceHollowCursor
+ call WaitBGMap
+ ld a, $1
+ ldh [hBGMapMode], a
+ ld a, [wCurItem]
+ cp $3a
+ ret nc
+ ld [wce37], a
+ ld a, $1b
+ call Predef
+ ld a, [wce37]
+ ld [wce32], a
+ call Unreferenced_GetMoveName
+ call CopyStringToStringBuffer2
+ ld hl, text_2d3bf
+ call PrintText
+ ld hl, text_2d3d9
+ call PrintText
+ call YesNoBox
+ jp c, asm_2d3a8
+
+asm_2d33e:
+ ld hl, wStringBuffer2
+ ld de, wcd1d
+ ld bc, $8
+ call CopyBytes
+ ld hl, wVramState
+ res 0, [hl]
+ ld a, $3
+ ld [wcdb9], a
+ ld a, $36
+ call Predef
+ push af
+ ld hl, wcd1d
+ ld de, wStringBuffer2
+ ld bc, $8
+ call CopyBytes
+ pop af
+ jr nc, asm_2d36c
+ jp asm_2d3ad
+
+asm_2d36c:
+ ld a, $1a
+ call Predef
+ push bc
+ ld a, [wWhichPokemon]
+ ld hl, wPartyMonNicknames
+ call GetNick
+ pop bc
+ ld a, c
+ and a
+ jr nz, asm_2d390
+ push de
+ ld de, $14
+ call PlaySFX
+ pop de
+ ld hl, text_2d404
+ call PrintText
+ jr asm_2d33e
+
+asm_2d390:
+ callab Functionfdab
+ jr c, asm_2d33e
+ ld a, $0
+ call Predef
+ ld a, b
+ and a
+ jr z, asm_2d3a8
+ call sub_2d64e
+ jr asm_2d3ad
+
+asm_2d3a8:
+ ld a, $2
+ ld [wFieldMoveSucceeded], a
+
+asm_2d3ad:
+ call ClearBGPalettes
+ call ClearSprites
+ ld hl, wVramState
+ set 0, [hl]
+ call Function360b
+ call GetMemSGBLayout
+ ret
+
+text_2d3bf:
+ text "<TM>を きどうした!"
+ prompt
+ text "ひでんマシンを きどうした!"
+
+text_2d3d9:
+ text "なかには @"
+ text_from_ram wStringBuffer2
+ text "が"
+ line "きろくされていた!"
+ para "@"
+ text_from_ram wStringBuffer2
+ text "を"
+ line "#に おぼえさせますか?"
+ done
+
+text_2d404:
+ text_from_ram wStringBuffer1
+ text "と @"
+ text_from_ram wStringBuffer2
+ text "は"
+ line "あいしょうが わるかった!"
+ para "@"
+ text_from_ram wStringBuffer2
+ text "は おぼえられない!"
+ prompt
+ db $02, $04, $00, $01
+ db $0c, $20
+ db $c3
+
+sub_2d436:
+ xor a
+ ldh [hBGMapMode], a
+ call sub_2d577
+ ld a, $2
+ ld [w2DMenuCursorInitY], a
+ ld a, $4
+ ld [w2DMenuCursorInitY + 1], a
+ ld a, $1
+ ld [w2DMenuNumCols], a
+ ld a, $4
+ sub d
+ inc a
+ cp $5
+ jr nz, asm_2d454
+ dec a
+
+asm_2d454:
+ ld [w2DMenuNumRows], a
+ ld a, $c
+ ld [w2DMenuFlags], a
+ xor a
+ ld [w2DMenuFlags + 1], a
+ ld a, $20
+ ld [w2DMenuCursorOffsets], a
+ ld a, $c3
+ ld [w2DMenuCursorOffsets + 1], a
+ ld a, [wcd42]
+ inc a
+ ld [wMenuCursorY], a
+ ld a, $1
+ ld [wMenuCursorX], a
+ jr asm_2d4a3
+
+asm_2d478:
+ call sub_2d577
+
+asm_2d47b:
+ call WaitBGMap
+ ld a, $1
+ ldh [hBGMapMode], a
+ call Get2DMenuJoypad
+ ld b, a
+ ld a, [wMenuCursorY]
+ dec a
+ ld [wcd42], a
+ xor a
+ ldh [hBGMapMode], a
+ ld a, [w2DMenuFlags + 1]
+ bit 7, a
+ jp nz, asm_2d537
+ ld a, b
+ bit 0, a
+ jp nz, sub_2d51a
+ bit 1, a
+ jp nz, asm_2d535
+
+asm_2d4a3:
+ call sub_2d51a
+ ld hl, $c368
+ ld b, $6
+ ld c, $12
+ call DrawTextBox
+ call UpdateSprites
+ ld a, [wCurItem]
+ cp $3a
+ jr nc, asm_2d47b
+ ld [wce37], a
+ ld hl, $c391
+ ld de, string_2d572
+ call PlaceString
+ ld a, $1b
+ call Predef
+ ld a, [wce37]
+ ld [wCurSpecies], a
+ ld b, a
+ ld hl, $c395
+ ld a, $3f
+ call Predef
+ ld hl, $c3b9
+ call Function2d663
+ ld hl, $c39b
+ ld de, string_2d568
+ call PlaceString
+ ld a, [wCurSpecies]
+ dec a
+ ld hl, Data4a8b8
+ ld bc, $7
+ call AddNTimes
+ ld a, BANK(Data4a8b8)
+ call GetFarByte
+ ld hl, $c3a0
+ cp $2
+ jr c, asm_2d511
+ ld [wce37], a
+ ld de, wce37
+ ld bc, $103
+ call PrintNumber
+ jp asm_2d478
+
+asm_2d511:
+ ld de, string_2d56e
+ call PlaceString
+ jp asm_2d478
+
+sub_2d51a:
+ call sub_2d5f8
+ ld a, [wMenuCursorY]
+ ld b, a
+
+asm_2d521:
+ inc c
+ ld a, c
+ cp $3a
+ jr nc, asm_2d52f
+ ld a, [hli]
+ and a
+ jr z, asm_2d521
+ dec b
+ jr nz, asm_2d521
+ ld a, c
+
+asm_2d52f:
+ ld [wCurItem], a
+ cp $ff
+ ret
+
+asm_2d535:
+ and a
+ ret
+
+asm_2d537:
+ ld a, b
+ bit 7, a
+ jr nz, asm_2d54b
+ ld hl, wcd47
+ ld a, [hl]
+ and a
+ jp z, asm_2d478
+ dec [hl]
+ call sub_2d577
+ jp asm_2d4a3
+
+asm_2d54b:
+ call sub_2d5f8
+ ld b, $5
+
+asm_2d550:
+ inc c
+ ld a, c
+ cp $3a
+ jp nc, asm_2d478
+ ld a, [hli]
+ and a
+ jr z, asm_2d550
+ dec b
+ jr nz, asm_2d550
+ ld hl, wcd47
+ inc [hl]
+ call sub_2d577
+ jp asm_2d4a3
+
+string_2d568:
+ db "いりょく/@"
+
+string_2d56e:
+ db "ーーー@"
+
+string_2d572:
+ db "タイプ/@"
+
+sub_2d577:
+ ld hl, $c2a3
+ ld b, $8
+ ld c, $f
+ call DrawTextBox
+ call sub_2d5f8
+ ld d, $4
+
+asm_2d586:
+ inc c
+ ld a, c
+ cp $3a
+ jr nc, asm_2d5dd
+ ld a, [hli]
+ and a
+ jr z, asm_2d586
+ ld b, a
+ ld a, c
+ ld [wce37], a
+ push hl
+ push de
+ push bc
+ call sub_2d5e9
+ push hl
+ ld de, wce37
+ ld bc, $8102
+ call PrintNumber
+ ld a, $1b
+ call Predef
+ ld a, [wce37]
+ ld [wce32], a
+ call Unreferenced_GetMoveName
+ pop hl
+ ld bc, $3
+ add hl, bc
+ push hl
+ call PlaceString
+ pop hl
+ ld bc, $8
+ add hl, bc
+ ld [hl], $f1
+ inc hl
+ ld a, $f6
+ pop bc
+ push bc
+ ld a, b
+ ld [wce37], a
+ ld de, wce37
+ ld bc, $102
+ call PrintNumber
+ pop bc
+ pop de
+ pop hl
+ dec d
+ jr nz, asm_2d586
+ jr asm_2d5e8
+
+asm_2d5dd:
+ call sub_2d5e9
+ ld a, $d4
+ ld [hli], a
+ ld a, $d2
+ ld [hli], a
+ ld [hl], $d9
+
+asm_2d5e8:
+ ret
+
+sub_2d5e9:
+ ld hl, $c2a5
+ ld bc, $28
+ ld a, $5
+ sub d
+ ld d, a
+
+asm_2d5f3:
+ add hl, bc
+ dec d
+ jr nz, asm_2d5f3
+ ret
+
+sub_2d5f8:
+ ld hl, wTMsHMs
+ ld a, [wcd47]
+ ld b, a
+ inc b
+ ld c, $0
+
+asm_2d602:
+ inc c
+ ld a, [hli]
+ and a
+ jr z, asm_2d602
+ dec b
+ jr nz, asm_2d602
+ dec hl
+ dec c
+ ret
+ call sub_2d63c
+ ld hl, text_2d61b
+ jr nc, asm_2d618
+ ld hl, text_2d62f
+
+asm_2d618:
+ jp PrintText
+
+text_2d61b:
+ text_from_ram wStringBuffer1
+ text "は これいじょう"
+ line "もてません!"
+ prompt
+
+text_2d62f:
+ text_from_ram wStringBuffer1
+ text "を てにいれた!"
+ prompt
+
+sub_2d63c:
+ ld a, [wCurItem]
+ dec a
+ ld hl, wTMsHMs
+ ld b, $0
+ ld c, a
+ add hl, bc
+ ld a, [hl]
+ inc a
+ cp $a
+ ret nc
+ ld [hl], a
+ ret
+
+sub_2d64e:
+ ld a, [wCurItem]
+ dec a
+ ld hl, wTMsHMs
+ ld b, $0
+ ld c, a
+ add hl, bc
+ ld a, [hl]
+ and a
+ ret z
+ dec a
+ ld [hl], a
+ ret nz
+ ld [wcd47], a
+ ret
+
+Function2d663:
+ push hl
+ ld hl, MoveDescriptions
+ ld a, [wCurSpecies]
+ dec a
+ ld c, a
+ ld b, $0
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ ld e, a
+ ld d, [hl]
+ pop hl
+ jp PlaceString
+
+INCLUDE "data/moves/descriptions.inc"