summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorElectroDeoxys <ElectroDeoxys@gmail.com>2021-04-15 17:40:48 +0100
committerElectroDeoxys <ElectroDeoxys@gmail.com>2021-04-15 17:40:48 +0100
commit2fce2e7bd46d422768a43777e640bbb8eff06013 (patch)
tree91048101cbd4bbb78ef4c553003dae18fde9a3af /src
parent732a632a948595906df649252f66fdad5e2b4468 (diff)
Disassemble referenced functions in bank 2
Diffstat (limited to 'src')
-rw-r--r--src/constants/card_data_constants.asm21
-rw-r--r--src/engine/bank01.asm19
-rw-r--r--src/engine/bank02.asm3572
-rw-r--r--src/engine/bank03.asm2
-rw-r--r--src/engine/bank06.asm21
-rw-r--r--src/engine/bank1c.asm4
-rw-r--r--src/engine/effect_functions.asm2
-rw-r--r--src/engine/home.asm21
-rw-r--r--src/hram.asm1
-rw-r--r--src/sram.asm4
-rw-r--r--src/text/text2.asm44
-rw-r--r--src/text/text3.asm24
-rw-r--r--src/text/text_offsets.asm68
-rw-r--r--src/wram.asm48
14 files changed, 3660 insertions, 191 deletions
diff --git a/src/constants/card_data_constants.asm b/src/constants/card_data_constants.asm
index 3b775b0..cd7d401 100644
--- a/src/constants/card_data_constants.asm
+++ b/src/constants/card_data_constants.asm
@@ -128,13 +128,22 @@ DIAMOND EQU $1
STAR EQU $2
PROMOSTAR EQU $ff
+; card set constants (set 1)
+ const_def
+ const CARD_SET_COLOSSEUM ; $0
+ const CARD_SET_EVOLUTION ; $1
+ const CARD_SET_MYSTERY ; $2
+ const CARD_SET_LABORATORY ; $3
+ const CARD_SET_PROMOTIONAL ; $4
+ const CARD_SET_ENERGY ; $5
+
; CARD_DATA_SET constants (set 1)
-COLOSSEUM EQU $0 << 4
-EVOLUTION EQU $1 << 4
-MYSTERY EQU $2 << 4
-LABORATORY EQU $3 << 4
-PROMOTIONAL EQU $4 << 4
-ENERGY EQU $5 << 4
+COLOSSEUM EQU CARD_SET_COLOSSEUM << 4
+EVOLUTION EQU CARD_SET_EVOLUTION << 4
+MYSTERY EQU CARD_SET_MYSTERY << 4
+LABORATORY EQU CARD_SET_LABORATORY << 4
+PROMOTIONAL EQU CARD_SET_PROMOTIONAL << 4
+ENERGY EQU CARD_SET_ENERGY << 4
; CARD_DATA_SET constants (set 2)
JUNGLE EQU $1
diff --git a/src/engine/bank01.asm b/src/engine/bank01.asm
index c706842..449cd75 100644
--- a/src/engine/bank01.asm
+++ b/src/engine/bank01.asm
@@ -1813,7 +1813,7 @@ Func_4b60: ; 4b60 (1:4b60)
call ChooseInitialArenaAndBenchPokemon
call SwapTurn
jp c, .asm_4c77
- call Func_311d
+ call DrawPlayAreaToPlacePrizeCards
ldtx hl, PlacingThePrizesText
call DrawWideTextBox_WaitForInput
call ExchangeRNG
@@ -3684,7 +3684,7 @@ Func_5805: ; 5805 (1:5805)
ldtx hl, WillDrawNPrizesText
call DrawWideTextBox_WaitForInput
ld a, [wNumberPrizeCardsToTake]
- call Func_310a
+ call SelectPrizeCards
ld hl, hTemp_ffa0
ld d, [hl]
inc hl
@@ -8523,7 +8523,20 @@ Func_7576: ; 7576 (1:7576)
ret
; 0x757b
- INCROM $757b, $758a
+Func_757b: ; 757b (1:757b)
+ farcall Func_19e42
+ ret
+; 0x7580
+
+Func_7580: ; 7580 (1:7580)
+ farcall Func_1a162
+ ret
+; 0x7585
+
+Func_7585: ; 7585 (1:7585)
+ farcall Func_1a270
+ ret
+; 0x758a
Func_758a: ; 758a (1:758a)
farcall Func_19eb4
diff --git a/src/engine/bank02.asm b/src/engine/bank02.asm
index 3483af2..05a79d7 100644
--- a/src/engine/bank02.asm
+++ b/src/engine/bank02.asm
@@ -1281,7 +1281,7 @@ HandleCheckMenuInput_YourOrOppPlayArea: ; 86ac (2:46ac)
ld e, a
.erase
- ld a, $01
+ ld a, TRUE
ld [wPlaysSfx], a
push de
call EraseCheckMenuCursor_YourOrOppPlayArea
@@ -1620,8 +1620,68 @@ Func_8883_TransitionTable: ; 88fa (2:48fa)
cursor_transition $08, $38, $00, $07, $07, $05, $04
cursor_transition $08, $60, $00, $06, $06, $01, $00
-Func_8932: ; 8932 (2:4932)
- INCROM $8932, $8992
+_DrawAIPeekScreen: ; 8932 (2:4932)
+ push bc
+ call Set_OBJ_8x8
+ call LoadCursorTile
+ xor a
+ ld [wce56], a
+ ldh a, [hWhoseTurn]
+ ld l, a
+ ld de, Func_8764_TransitionTable
+ pop bc
+ bit AI_PEEK_TARGET_HAND_F, b
+ jr z, .draw_play_area
+
+; AI chose the hand
+ call SwapTurn
+ ld a, $01
+ ld [wce56], a
+ ldh a, [hWhoseTurn]
+ ld de, Func_8883_TransitionTable
+.draw_play_area
+ ld h, a
+ push bc
+ push de
+ call DrawYourOrOppPlayAreaScreen
+ pop de
+ pop bc
+
+; get the right cursor position
+; depending on what action the AI chose
+; (prize card, hand, deck)
+ ld hl, wMenuInputTablePointer
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld a, b
+ and $7f
+ cp $7f
+ jr nz, .prize_card
+; cursor on the deck
+ ld a, $7
+ ld [wPrizeCardCursorPosition], a
+ jr .got_cursor_position
+.prize_card
+ bit AI_PEEK_TARGET_PRIZE_F, a
+ jr z, .hand
+ and $3f
+ ld [wPrizeCardCursorPosition], a
+ jr .got_cursor_position
+.hand
+ ld a, $6
+ ld [wPrizeCardCursorPosition], a
+.got_cursor_position
+ call Func_89ae.draw_cursor
+
+ ld a, $1
+ ld [wVBlankOAMCopyToggle], a
+ ld a, [wce56]
+ or a
+ ret z
+ call SwapTurn
+ ret
+; 0x8992
LoadCursorTile: ; 8992 (2:4992)
ld de, v0Tiles0
@@ -1755,7 +1815,7 @@ Func_89ae: ; 89ae (2:49ae)
jr .make_bitmask_loop
.next
- ld a, $01
+ ld a, TRUE
ld [wPlaysSfx], a
; reset cursor blink
@@ -1826,11 +1886,232 @@ ZeroObjectPositionsWithCopyToggleOn: ; 8aa1 (2:4aa1)
ld [wVBlankOAMCopyToggle], a
ret
-Func_8aaa: ; 8aaa (2:4aaa)
- INCROM $8aaa, $8b85
+; handles the screen for Player to select prize card(s)
+_SelectPrizeCards: ; 8aaa (2:4aaa)
+ xor a
+ call GetFirstSetPrizeCard
+ ld [wPrizeCardCursorPosition], a
+ ld de, hTempPlayAreaLocation_ffa1
+ ld hl, wSelectedPrizeCardListPtr
+ ld [hl], e
+ inc hl
+ ld [hl], d
+
+.check_prize_cards_to_select
+ ld a, [wNumberOfPrizeCardsToSelect]
+ or a
+ jr z, .done_selection
+ ld a, DUELVARS_PRIZES
+ call GetTurnDuelistVariable
+ or a
+ jr nz, .got_prizes
+
+.done_selection
+ ld a, DUELVARS_PRIZES
+ call GetTurnDuelistVariable
+ ldh [hTemp_ffa0], a
+ ld a, [wSelectedPrizeCardListPtr + 0]
+ ld l, a
+ ld a, [wSelectedPrizeCardListPtr + 1]
+ ld h, a
+ ld [hl], $ff
+ ret
+
+.got_prizes
+ ldh a, [hWhoseTurn]
+ ld h, a
+ ld l, a
+ call DrawYourOrOppPlayAreaScreen
+ call DrawWideTextBox
+ ld de, $10e
+ call InitTextPrinting
+ ldtx hl, PleaseChooseAPrizeText
+ call ProcessTextFromID
+ ld de, .cursor_transition_table
+ ld hl, wMenuInputTablePointer
+ ld [hl], e
+ inc hl
+ ld [hl], d
+.loop_handle_input
+ ld a, $1
+ ld [wVBlankOAMCopyToggle], a
+ call DoFrame
+ call Func_89ae
+ jr nc, .loop_handle_input
+ cp $ff
+ jr z, .loop_handle_input
+
+ call ZeroObjectPositionsWithCopyToggleOn
+
+; get prize bit mask that corresponds
+; to the one pointed by the cursor
+ ld a, [wPrizeCardCursorPosition]
+ ld c, a
+ ld b, $1
+.loop
+ or a
+ jr z, .got_prize_mask
+ sla b
+ dec a
+ jr .loop
+
+.got_prize_mask
+ ; if cursor prize is not set,
+ ; then return to input loop
+ ld a, DUELVARS_PRIZES
+ call GetTurnDuelistVariable
+ and b
+ jp z, .loop_handle_input ; can be jr
+
+ ; remove prize
+ ld a, DUELVARS_PRIZES
+ call GetTurnDuelistVariable
+ sub b
+ ld [hl], a
+
+ ; get its deck index
+ ld a, c
+ add DUELVARS_PRIZE_CARDS
+ call GetTurnDuelistVariable
+
+ ld hl, wSelectedPrizeCardListPtr
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld [de], a ; store deck index
+ inc de
+ ld [hl], d
+ dec hl
+ ld [hl], e
+
+ ; add prize card to hand
+ call AddCardToHand
+ call LoadCardDataToBuffer1_FromDeckIndex
+ call Set_OBJ_8x16
+ bank1call OpenCardPage_FromHand
+ ld a, [wNumberOfPrizeCardsToSelect]
+ dec a
+ ld [wNumberOfPrizeCardsToSelect], a
+ ld a, [wPrizeCardCursorPosition]
+ call GetFirstSetPrizeCard
+ ld [wPrizeCardCursorPosition], a
+ jp .check_prize_cards_to_select
+
+.cursor_transition_table
+ cursor_transition $08, $28, $00, $04, $02, $01, $01
+ cursor_transition $30, $28, $20, $05, $03, $00, $00
+ cursor_transition $08, $38, $00, $00, $04, $03, $03
+ cursor_transition $30, $38, $20, $01, $05, $02, $02
+ cursor_transition $08, $48, $00, $02, $00, $05, $05
+ cursor_transition $30, $48, $20, $03, $01, $04, $04
+; 0x8b85
+
+_DrawPlayAreaToPlacePrizeCards: ; 8b85 (2:4b85)
+ xor a
+ ld [wTileMapFill], a
+ call ZeroObjectPositions
+ call EmptyScreen
+ call LoadSymbolsFont
+ call LoadPlacingThePrizesScreenTiles
+
+ ldh a, [hWhoseTurn]
+ ld [wCheckMenuPlayAreaWhichLayout], a
+ ld [wCheckMenuPlayAreaWhichDuelist], a
+
+ lb de, 0, 10
+ ld c, 3
+ call DrawPlayArea_BenchCards
+ ld hl, .player_icon_coordinates
+ call DrawYourOrOppPlayArea_Icons.draw
+ lb de, 8, 6
+ ld a, $a0
+ lb hl, 1, 4
+ lb bc, 4, 3
+ call FillRectangle
+
+ call SwapTurn
+ ld a, $01
+ ld [wce56], a
+ ldh a, [hWhoseTurn]
+ ld [wCheckMenuPlayAreaWhichDuelist], a
+ lb de, 6, 0
+ ld c, 3
+ call DrawPlayArea_BenchCards
+ ld hl, .opp_icon_coordinates
+ call DrawYourOrOppPlayArea_Icons.draw
+ lb de, 8, 3
+ ld a, $a0
+ lb hl, 1, 4
+ lb bc, 4, 3
+ call FillRectangle
+ call SwapTurn
+ ret
+
+.player_icon_coordinates
+ db 15, 11
+ db 15, 6
+ db 15, 8
+
+.opp_icon_coordinates
+ db 0, 0
+ db 0, 4
+ db 0, 2
+; 0x8bf2
-Func_8b85: ; 8b85 (2:4b85)
- INCROM $8b85, $8c8e
+ INCROM $8bf2, $8c57
+
+; gets the first prize card index that is set
+; beginning from index in register a
+; a = prize card index
+GetFirstSetPrizeCard: ; 8c57 (2:4c57)
+ push bc
+ push de
+ push hl
+ ld e, PRIZES_6
+ ld c, a
+ ldh a, [hWhoseTurn]
+ ld h, a
+ ld l, DUELVARS_PRIZES
+ ld d, [hl]
+.loop_prizes
+ call .GetPrizeMask
+ and d
+ jr nz, .done ; prize is set
+ dec e
+ jr nz, .next_prize
+ ld c, 0
+ jr .done
+.next_prize
+ inc c
+ ld a, PRIZES_6
+ cp c
+ jr nz, .loop_prizes
+ ld c, 0
+ jr .loop_prizes
+
+.done
+ ld a, c ; first prize index that is set
+ pop hl
+ pop de
+ pop bc
+ ret
+
+; returns 1 shifted left by c bits
+.GetPrizeMask
+ push bc
+ ld a, c
+ ld b, $1
+.loop
+ or a
+ jr z, .got_mask
+ sla b
+ dec a
+ jr .loop
+.got_mask
+ ld a, b
+ pop bc
+ ret
+; 0x8c8e
OpenGlossaryScreen_TransitionTable:
cursor_transition $08, $28, $00, $04, $01, $05, $05
@@ -1951,8 +2232,7 @@ Data_8da9: ; 8da9 (2:4da9)
db $50, $04, $01
dw HandleDeckConfigurationMenu
dw DeckConfigurationMenu_TransitionTable
-
- INCROM $8db0, $8db0
+; 0x8db0
Func_8db0: ; 8db0 (2:4db0)
ld hl, Data_8da9
@@ -1962,7 +2242,7 @@ Func_8db0: ; 8db0 (2:4db0)
xor a
Func_8dbc: ; 8dbc (2:4dbc)
- ld hl, Unknown_8de2
+ ld hl, .DeckSelectionMenuParameters
call InitializeMenuParameters
ldtx hl, PleaseSelectDeckText
call DrawWideTextBox_PrintText
@@ -1979,8 +2259,13 @@ Func_8dbc: ; 8dbc (2:4dbc)
ld [wceb1], a
jp Func_8e42
-Unknown_8de2: ; 8de2 (2:4de2)
- INCROM $8de2, $8dea
+.DeckSelectionMenuParameters
+ db 1, 2 ; cursor x, cursor y
+ db 3 ; y displacement between items
+ db 4 ; number of items
+ db SYM_CURSOR_R ; cursor tile number
+ db SYM_SPACE ; tile behind cursor
+ dw NULL ; function pointer if non-0
Func_8dea: ; 8dea (2:4dea)
ldh a, [hDPadHeld]
@@ -2031,7 +2316,7 @@ Func_8e1f: ; 8e1f (2:4e1f)
Func_8e42: ; 8e42 (2:4e42)
call DrawWideTextBox
- ld hl, Unknown_9027
+ ld hl, DeckSelectionData
call PlaceTextItems
call ResetCheckMenuCursorPositionAndBlink
.asm_8e4e
@@ -2263,8 +2548,13 @@ Func_8ff2: ; 8ff2 (2:4ff2)
Func_9026: ; 9026 (2:5026)
ret
-Unknown_9027: ; 9027 (2:5027)
- INCROM $9027, $9038
+DeckSelectionData: ; 9027 (2:5027)
+ textitem 2, 14, ModifyDeckText
+ textitem 12, 14, SelectDeckText
+ textitem 2, 16, ChangeNameText
+ textitem 12, 16, CancelText
+ db $ff
+; 0x9038
; return, in hl, the pointer to sDeckXName where X is [wceb1] + 1
GetPointerToDeckName: ; 9038 (2:5038)
@@ -2342,7 +2632,7 @@ HandleCheckMenuInput: ; 9065 (2:5065)
ld e, a
.okay
- ld a, $01
+ ld a, TRUE
ld [wPlaysSfx], a
push de
call EraseCheckMenuCursor
@@ -2538,7 +2828,7 @@ Func_9168: ; 9168 (2:5168)
lb de, 0, 9
lb bc, 20, 4
call DrawRegularTextBox
- ld hl, Unknown_9242
+ ld hl, DeckNameMenuData
call PlaceTextItems
ld a, 4
ld hl, wceb2
@@ -2621,9 +2911,15 @@ Func_9168: ; 9168 (2:5168)
call DrawHandCardsTileOnSelectedDeck
call EnableLCD
ret
+; 0x9242
-Unknown_9242: ; 9242 (2:5242)
- INCROM $9242, $9253
+DeckNameMenuData: ; 9242 (2:5242)
+ textitem 4, 2, Deck1Text
+ textitem 4, 5, Deck2Text
+ textitem 4, 8, Deck3Text
+ textitem 4, 11, Deck4Text
+ db $ff
+; 0x9253
Func_9253: ; 9253 (2:5253)
ld de, wDefaultText
@@ -2772,7 +3068,7 @@ Func_9345: ; 9345 (2:5345)
xor a
ld [wcea1], a
- ld [wced3], a
+ ld [wCurCardTypeFilter], a
call Func_993d
.skip_draw
@@ -2786,16 +3082,16 @@ Func_9345: ; 9345 (2:5345)
ld a, $01
call PlaySFXConfirmOrCancel
call ConfirmDeckConfiguration
- ld a, [wced3]
+ ld a, [wCurCardTypeFilter]
ld [wNamingScreenCursorY], a
jr .wait_input
.no_start_btn
- ld a, [wced3]
+ ld a, [wCurCardTypeFilter]
ld b, a
ld a, [wNamingScreenCursorY]
cp b
jr z, .check_down_btn
- ld [wced3], a
+ ld [wCurCardTypeFilter], a
ld hl, wcea1
ld [hl], $00
call Func_993d
@@ -2815,15 +3111,15 @@ Func_9345: ; 9345 (2:5345)
cp $ff
jp z, Func_9461
.asm_93a9
- ld a, [wceab + 3]
+ ld a, [wceae]
or a
jr z, .wait_input
xor a
.asm_93b0
ld hl, Data_9670
call Func_9a6d
- ld a, [wceab + 3]
- ld [wcfe4 + 2], a
+ ld a, [wceae]
+ ld [wcfe6], a
ld hl, wcecb
cp [hl]
jr nc, .asm_93c5
@@ -2872,7 +3168,7 @@ Func_9345: ; 9345 (2:5345)
call DrawCardTypeIconsAndPrintCardCounts
ld hl, Data_9667
call Func_9a6d
- ld a, [wced3]
+ ld a, [wCurCardTypeFilter]
ld [wNamingScreenCursorY], a
call Func_9b20
call PrintDeckBuildingCardList
@@ -2892,7 +3188,7 @@ Func_9345: ; 9345 (2:5345)
jr nz, .asm_93fc
ld hl, Data_9667
call Func_9a6d
- ld a, [wced3]
+ ld a, [wCurCardTypeFilter]
ld [wNamingScreenCursorY], a
jp .wait_input
; 0x9461
@@ -2939,7 +3235,7 @@ HandleDeckConfigurationMenu: ; 9480 (2:5480)
call DrawCardTypeIconsAndPrintCardCounts
ld a, [wced4]
ld [wNamingScreenCursorY], a
- ld a, [wced3]
+ ld a, [wCurCardTypeFilter]
call Func_993d
jp Func_9345.skip_draw
@@ -2975,10 +3271,10 @@ ConfirmDeckConfiguration: ; 94d3 (2:54d3)
call DrawCardTypeIconsAndPrintCardCounts
ld hl, Data_9667
call Func_9a6d
- ld a, [wced3]
+ ld a, [wCurCardTypeFilter]
ld [wNamingScreenCursorY], a
call Func_9b20
- ld a, [wced3]
+ ld a, [wCurCardTypeFilter]
call Func_993d
ld a, [wced6]
ld [wNamingScreenCursorY], a
@@ -3056,7 +3352,7 @@ DismantleDeck: ; 9566 (2:5566)
call EmptyScreen
ld hl, Data_9667
call Func_9a6d
- ld a, [wced3]
+ ld a, [wCurCardTypeFilter]
ld [wNamingScreenCursorY], a
call Func_9b20
call PrintDeckBuildingCardList
@@ -3458,7 +3754,7 @@ CreateFilteredCardList: ; 978b (2:578b)
.add_terminator_byte
ld a, l
- ld [wceab + 3], a
+ ld [wceae], a
; add terminator bytes in both lists
xor a
ld c, l
@@ -4061,7 +4357,57 @@ Func_9a6d: ; 9a6d (2:5a6d)
; 0x9a83
Func_9a83: ; 9a83 (2:5a83)
- INCROM $9a83, $9ad7
+ xor a
+ ld [wPlaysSfx], a
+ ldh a, [hDPadHeld]
+ or a
+ jr z, .handle_ab_btns
+ ld b, a
+ ld a, [wNamingScreenKeyboardHeight]
+ ld c, a
+ ld a, [wNamingScreenCursorY]
+ bit D_LEFT_F, b
+ jr z, .check_d_right
+ dec a
+ bit 7, a
+ jr z, .got_new_cursor_y
+ ld a, [wNamingScreenKeyboardHeight]
+ dec a
+ jr .got_new_cursor_y
+.check_d_right
+ bit D_RIGHT_F, b
+ jr z, .handle_ab_btns
+ inc a
+ cp c
+ jr c, .got_new_cursor_y
+
+ xor a
+.got_new_cursor_y
+ push af
+ ld a, TRUE
+ ld [wPlaysSfx], a
+ call Func_9b00
+ pop af
+
+ ld [wNamingScreenCursorY], a
+ xor a
+ ld [wCheckMenuCursorBlinkCounter], a
+
+.handle_ab_btns
+ ld a, [wNamingScreenCursorY]
+ ld [hffb3], a
+ ldh a, [hKeysPressed]
+ and A_BUTTON | B_BUTTON
+ jr z, Func_9ae8
+ and A_BUTTON
+ jr nz, Func_9ad7
+ ; b button
+ ld a, $ff
+ ld [hffb3], a
+ call PlaySFXConfirmOrCancel
+ scf
+ ret
+; 0x9ad7
Func_9ad7: ; 9ad7 (2:5ad7)
call Func_9b20
@@ -4074,7 +4420,25 @@ Func_9ad7: ; 9ad7 (2:5ad7)
ret
; 0x9ae8
- INCROM $9ae8, $9b03
+Func_9ae8: ; 9ae8 (2:5ae8)
+ ld a, [wPlaysSfx]
+ or a
+ jr z, .skip_sfx
+ call PlaySFX
+.skip_sfx
+ ld hl, wCheckMenuCursorBlinkCounter
+ ld a, [hl]
+ inc [hl]
+ and $0f
+ ret nz
+ ld a, [wceaa]
+ bit 4, [hl]
+ jr z, Func_9b03
+; 0x9b00
+
+Func_9b00: ; 9b00 (2:5b00)
+ ld a, [wceab]
+; fallthrough
Func_9b03: ; 9b03 (2:5b03)
ld e, a
@@ -4102,10 +4466,146 @@ Func_9b20: ; 9b20 (2:5b20)
; 0x9b25
Func_9b25: ; 9b25 (2:5b25)
- INCROM $9b25, $9c0e
+ xor a ; FALSE
+ ld [wPlaysSfx], a
+
+ ldh a, [hDPadHeld]
+ or a
+ jp z, .asm_9bb9
+ ld b, a
+ ld a, [wNamingScreenKeyboardHeight]
+ ld c, a
+ ld a, [wNamingScreenCursorY]
+ bit D_UP_F, b
+ jr z, .check_d_down
+ push af
+ ld a, TRUE
+ ld [wPlaysSfx], a
+ pop af
+ dec a
+ bit 7, a
+ jr z, .asm_9b8f
+ ld a, [wcea1]
+ or a
+ jr z, .asm_9b5a
+ dec a
+ ld [wcea1], a
+ ld hl, wcece
+ call CallIndirect
+ xor a
+ jr .asm_9b8f
+.asm_9b5a
+ xor a
+ ld [wPlaysSfx], a
+ jr .asm_9b8f
+
+.check_d_down
+ bit D_DOWN_F, b
+ jr z, .asm_9b9d
+ push af
+ ld a, TRUE
+ ld [wPlaysSfx], a
+ pop af
+ inc a
+ cp c
+ jr c, .asm_9b8f
+ push af
+ ld a, [wcecd]
+ or a
+ jr nz, .asm_9b87
+ ld a, [wcea1]
+ inc a
+ ld [wcea1], a
+ ld hl, wcece
+ call CallIndirect
+ pop af
+ dec a
+ jr .asm_9b8f
+
+.asm_9b87
+ pop af
+ dec a
+ push af
+ xor a ; FALSE
+ ld [wPlaysSfx], a
+ pop af
+.asm_9b8f
+ push af
+ call Func_9c0e
+ pop af
+ ld [wNamingScreenCursorY], a
+ xor a
+ ld [wCheckMenuCursorBlinkCounter], a
+ jr .asm_9bb9
+.asm_9b9d
+ ld a, [wced2]
+ or a
+ jr z, .asm_9bb9
+
+ bit D_LEFT_F, b
+ jr z, .check_d_right
+ call Func_9db3
+ call Func_9de4
+ jr .asm_9bb9
+.check_d_right
+ bit D_RIGHT_F, b
+ jr z, .asm_9bb9
+ call Func_9db3
+ call Func_9d0c
+.asm_9bb9
+ ld a, [wNamingScreenCursorY]
+ ld [hffb3], a
+ ld hl, wceac
+ ld a, [hli]
+ or [hl]
+ jr z, .asm_9be2
+ ld a, [hld]
+ ld l, [hl]
+ ld h, a
+ ld a, [hffb3]
+ call CallHL
+ jr nc, .handle_blink
+.asm_9bd1
+ call Func_9c3a
+ ld a, $01
+ call PlaySFXConfirmOrCancel
+ ld a, [wNamingScreenCursorY]
+ ld e, a
+ ld a, [hffb3]
+ scf
+ ret
+
+.asm_9be2
+ ldh a, [hKeysPressed]
+ and A_BUTTON | B_BUTTON
+ jr z, .asm_9bf6
+ and A_BUTTON
+ jr nz, .asm_9bd1
+ ld a, $ff
+ ld [hffb3], a
+ call PlaySFXConfirmOrCancel
+ scf
+ ret
+
+.asm_9bf6
+ ld a, [wPlaysSfx]
+ or a
+ jr z, .handle_blink
+ call PlaySFX
+.handle_blink
+ ld hl, wCheckMenuCursorBlinkCounter
+ ld a, [hl]
+ inc [hl]
+ and $0f
+ ret nz
+ ld a, [wceaa]
+ bit 4, [hl]
+ jr z, Func_9c11
+; 0x9c0e
Func_9c0e: ; 9c0e (2:5c0e)
- INCROM $9c0e, $9c11
+ ld a, [wceab]
+; fallthrough
; a = tile to write
Func_9c11: ; 9c11 (2:5c11)
@@ -4140,7 +4640,333 @@ Func_9c3a: ; 9c3a (2:5c3a)
; 0x9c3f
Func_9c3f: ; 9c3f (2:5c3f)
- INCROM $9c3f, $9e31
+ ld hl, wcfd8
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [wNamingScreenCursorY]
+ ld c, a
+ ld b, $00
+ add hl, bc
+ ld a, [wcea1]
+ ld c, a
+ ld b, $00
+ add hl, bc
+ ld e, [hl]
+ ld d, $00
+ push de
+ call LoadCardDataToBuffer1_FromCardID
+ lb de, $38, $9f
+ call SetupText
+ bank1call OpenCardPage_FromCheckHandOrDiscardPile
+ pop de
+
+.handle_input
+ ldh a, [hDPadHeld]
+ ld b, a
+ and A_BUTTON | B_BUTTON | SELECT | START
+ jp nz, .asm_9ce1
+
+ xor a ; FALSE
+ ld [wPlaysSfx], a
+ ld a, [wNamingScreenKeyboardHeight]
+ ld c, a
+ ld a, [wNamingScreenCursorY]
+ bit D_UP_F, b
+ jr z, .asm_9c94
+ push af
+ ld a, TRUE
+ ld [wPlaysSfx], a
+ pop af
+ dec a
+ bit 7, a
+ jr z, .asm_9cc6
+ ld a, [wcea1]
+ or a
+ jr z, .asm_9cd9
+ dec a
+ ld [wcea1], a
+ xor a
+ jr .asm_9cc6
+
+.asm_9c94
+ bit D_DOWN_F, b
+ jr z, .asm_9cd9
+ push af
+ ld a, TRUE
+ ld [wPlaysSfx], a
+ pop af
+ inc a
+ cp c
+ jr c, .asm_9cc6
+ push af
+ ld hl, wcfd8
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [wNamingScreenCursorY]
+ ld c, a
+ ld b, $00
+ add hl, bc
+ ld a, [wcea1]
+ inc a
+ ld c, a
+ ld b, $00
+ add hl, bc
+ ld a, [hl]
+ or a
+ jr z, .asm_9cd6
+ ld a, [wcea1]
+ inc a
+ ld [wcea1], a
+ pop af
+ dec a
+.asm_9cc6
+ ld [wNamingScreenCursorY], a
+ ld a, [wPlaysSfx]
+ or a
+ jp z, Func_9c3f
+ call PlaySFX
+ jp Func_9c3f
+
+.asm_9cd6
+ pop af
+ jr .asm_9cd9 ; unnecessary jr
+.asm_9cd9
+ push de
+ bank1call OpenCardPage.input_loop
+ pop de
+ jp .handle_input
+
+.asm_9ce1
+ ld a, $1
+ ld [wVBlankOAMCopyToggle], a
+ ld a, [wNamingScreenCursorY]
+ ld [wced4], a
+ ret
+; 0x9ced
+
+ INCROM $9ced, $9d0c
+
+Func_9d0c: ; 9d0c (2:5d0c)
+ call Func_9d22
+ ret c
+ push de
+ call PrintCardTypeCounts
+ lb de, 15, 0
+ call PrintTotalCardCount
+ pop de
+ call Func_9850
+ call Func_9dbf
+ ret
+; 0x9d22
+
+Func_9d22: ; 9d22 (2:5d22)
+ ld a, [wcfd1]
+ ld d, a
+ ld a, [wcecc]
+ cp d
+ jr nz, .asm_9d2e
+ scf
+ ret
+
+.asm_9d2e
+ push de
+ call Func_9d74
+ pop de
+ ret c
+ push de
+ call Func_9850
+ ld b, a
+ ld hl, wOwnedCardsCountList
+ ld d, $00
+ ld a, [wcea1]
+ ld e, a
+ add hl, de
+ ld a, [wNamingScreenCursorY]
+ ld e, a
+ add hl, de
+ ld d, [hl]
+ ld a, b
+ cp d
+ pop de
+ scf
+ ret z
+ ld a, SFX_01
+ call PlaySFX
+ push de
+ call Func_9d65
+ ld a, [wCurCardTypeFilter]
+ ld c, a
+ ld b, $00
+ ld hl, wcebb
+ add hl, bc
+ inc [hl]
+ pop de
+ or a
+ ret
+; 0x9d65
+
+; finds first empty slot in wcf17
+; then writes the value in e to it
+Func_9d65: ; 9d65 (2:5d65)
+ ld hl, wcf17
+.loop
+ ld a, [hl]
+ or a
+ jr z, .empty
+ inc hl
+ jr .loop
+.empty
+ ld [hl], e
+ inc hl
+ xor a
+ ld [hl], a
+ ret
+; 0x9d74
+
+; e = card id
+Func_9d74: ; 9d74 (2:5d74)
+ call LoadCardDataToBuffer1_FromCardID
+ ld a, [wLoadedCard1Type]
+ cp TYPE_ENERGY_DOUBLE_COLORLESS
+ jr z, .double_colorless
+ and TYPE_ENERGY
+ cp TYPE_ENERGY
+ jr z, .exit ; return if basic energy card
+.double_colorless
+
+; compare this card's name to
+; the names of cards in list wcf17
+ ld a, [wLoadedCard1Name + 0]
+ ld c, a
+ ld a, [wLoadedCard1Name + 1]
+ ld b, a
+ ld hl, wcf17
+ ld d, $00
+ push de
+.loop
+ ld a, [hli]
+ or a
+ jr z, .exit_pop_de
+ ld e, a
+ ld d, $00
+ call GetCardName
+ ld a, e
+ cp c
+ jr nz, .loop
+ ld a, d
+ cp b
+ jr nz, .loop
+ ; has same name
+ pop de
+ inc d
+ ld a, [wcfd1 + 1]
+ cp d
+ push de
+ jr nz, .loop
+ pop de
+ scf
+ ret
+
+.exit_pop_de
+ pop de
+.exit
+ or a
+ ret
+; 0x9db3
+
+; gets the element in wcec4
+; corresponding to index wNamingScreenCursorY
+Func_9db3: ; 9db3 (2:5db3)
+ ld hl, wcec4
+ ld a, [wNamingScreenCursorY]
+ ld e, a
+ ld d, $00
+ add hl, de
+ ld e, [hl]
+ ret
+; 0x9dbf
+
+; a = value to convert to numerical digits
+Func_9dbf: ; 9dbf (2:5dbf)
+ ld hl, wc590
+ call ConvertToNumericalDigits
+ ld [hl], TX_END
+ ld a, [wcea5 + 2]
+ ld l, a
+ ld a, [wNamingScreenCursorY]
+ ld h, a
+ call HtimesL
+ ld a, l
+ ld hl, wcea5 + 1
+ add [hl]
+ ld e, a
+ ld d, $0e
+ call InitTextPrinting
+ ld hl, wc590
+ call ProcessText
+ ret
+; 0x9de4
+
+Func_9de4: ; 9de4 (2:5de4)
+ call Func_9dfa
+ ret nc
+ push de
+ call PrintCardTypeCounts
+ lb de, 15, 0
+ call PrintTotalCardCount
+ pop de
+ call Func_9850
+ call Func_9dbf
+ ret
+; 0x9dfa
+
+Func_9dfa: ; 9dfa (2:5dfa)
+ push de
+ call Func_9850
+ pop de
+ or a
+ ret z
+ ld a, SFX_01
+ call PlaySFX
+ push de
+ call Func_9e18
+ ld a, [wCurCardTypeFilter]
+ ld c, a
+ ld b, $00
+ ld hl, wcebb
+ add hl, bc
+ dec [hl]
+ pop de
+ scf
+ ret
+; 0x9e18
+
+Func_9e18: ; 9e18 (2:5e18)
+ ld hl, wcf17
+ ld d, $00
+.loop_1
+ inc d
+ ld a, [hli]
+ cp e
+ jr nz, .loop_1
+ ld c, l
+ ld b, h
+ dec bc
+.loop_2
+ inc d
+ ld a, [hli]
+ or a
+ jr z, .done
+ ld [bc], a
+ inc bc
+ jr .loop_2
+.done
+ xor a
+ ld [bc], a
+ ret
+; 0x9e31
Func_9e31: ; 9e31 (2:5e31)
ld hl, hffb0
@@ -4164,7 +4990,7 @@ Func_9e41: ; 9e41 (2:5e41)
ld hl, Data_9eaf
call Func_9a6d
ld a, [wced9]
- ld [wcfe4+ 2], a
+ ld [wcfe6], a
cp $07
jr c, .asm_9e64
ld a, $07
@@ -4231,10 +5057,10 @@ Func_9eb8: ; 9eb8 (2:5eb8)
add d
ld b, a
add d
- ld hl, wcfe4 + 2
+ ld hl, wcfe6
cp [hl]
jr c, .asm_9ee8
- ld a, [wcfe4 + 2]
+ ld a, [wcfe6]
sub d
ld b, a
jr .asm_9ee8
@@ -4260,7 +5086,49 @@ Func_9eb8: ; 9eb8 (2:5eb8)
; 0x9efc
Func_9efc: ; 9efc (2:5efc)
- INCROM $9efc, $9f40
+ ld a, [wNamingScreenKeyboardHeight]
+ ld d, a
+ ld a, [wcea1]
+ ld c, a
+ ldh a, [hDPadHeld]
+ cp SELECT | D_DOWN
+ jr z, .sel_down
+ cp SELECT | D_UP
+ jr z, .sel_up
+ or a
+ ret
+
+.sel_down
+ ld a, [wcea1]
+ add d
+ ld b, a
+ add d
+ ld hl, wcfe6
+ cp [hl]
+ jr c, .asm_9f2c
+ ld a, [wcfe6]
+ sub d
+ ld b, a
+ jr .asm_9f2c
+.sel_up
+ ld a, [wcea1]
+ sub d
+ ld b, a
+ jr nc, .asm_9f2c
+ ld b, $00
+.asm_9f2c
+ ld a, b
+ ld [wcea1], a
+ cp c
+ jr z, .set_carry
+ ld a, SFX_01
+ call PlaySFX
+ ld hl, wcece
+ call CallIndirect
+.set_carry
+ scf
+ ret
+; 0x9f40
Func_9f40: ; 9f40 (2:5f40)
call Func_9f81
@@ -4445,14 +5313,14 @@ Func_a028: ; a028 (2:6028)
; 0xa06e
; goes through list in wcf17, and for each card in it
-; creates list in wTempHandCardList of all unique cards
+; creates list in wOwnedCardsCountList of all unique cards
; it finds (assuming wcf17 is sorted by ID)
; also counts the number of the different cards
Func_a06e: ; a06e (2:606e)
ld b, 0
ld c, $0
ld hl, wcf17
- ld de, wTempHandCardList
+ ld de, wOwnedCardsCountList
.loop
ld a, [hli]
cp c
@@ -4498,7 +5366,7 @@ PrintConfirmationCardList: ; a08a (2:608a)
ld a, [wcea1]
ld c, a
ld b, $0
- ld hl, wTempHandCardList
+ ld hl, wOwnedCardsCountList
add hl, bc
ld a, [wcecb]
.loop_cards
@@ -4747,7 +5615,7 @@ HandleSendDeckConfigurationMenu: ; a201 (2:6201)
call DrawCardTypeIconsAndPrintCardCounts
ld a, [wced4]
ld [wNamingScreenCursorY], a
- ld a, [wced3]
+ ld a, [wCurCardTypeFilter]
call Func_993d
jp Func_9345.skip_draw
.asm_a23b
@@ -4802,7 +5670,165 @@ CopyNBytesFromHLToDE: ; a281 (2:6281)
; 0xa288
Func_a288: ; a288 (2:6288)
- INCROM $a288, $a3ca
+ call Func_8ce7
+ call Func_a4c6
+ xor a
+ ld [wcea1], a
+ ld [wCurCardTypeFilter], a
+ call Func_a39f
+ call EnableLCD
+ xor a
+ ld hl, Data_9667
+ call Func_9a6d
+.asm_a2a2
+ call DoFrame
+ ld a, [wCurCardTypeFilter]
+ ld b, a
+ ld a, [wNamingScreenCursorY]
+ cp b
+ jr z, .asm_a2cc
+ ld [wCurCardTypeFilter], a
+ ld hl, wcea1
+ ld [hl], $00
+ call Func_a39f
+
+ ld hl, hffb0
+ ld [hl], $01
+ call Func_a4de
+ ld hl, hffb0
+ ld [hl], $00
+
+ ld a, $09
+ ld [wNamingScreenKeyboardHeight], a
+.asm_a2cc
+ ldh a, [hDPadHeld]
+ and D_DOWN
+ jr z, .asm_a2d7
+ call Func_9ad7
+ jr .asm_a2e4
+
+.asm_a2d7
+ call Func_9a83
+ jr nc, .asm_a2a2
+ ld a, [hffb3]
+ cp $ff
+ jr nz, .asm_a2e4
+ ret
+
+.asm_a2e4
+ ld a, [wceae]
+ or a
+ jr z, .asm_a2a2
+
+ xor a
+ ld hl, Data_a396
+ call Func_9a6d
+ ld a, [wceae]
+ ld [wcfe6], a
+ ld hl, wcecb
+ cp [hl]
+ jr nc, .asm_a300
+ ld [wNamingScreenKeyboardHeight], a
+.asm_a300
+ ld hl, PrintCardSelectionList
+ ld d, h
+ ld a, l
+ ld hl, wcece
+ ld [hli], a
+ ld [hl], d
+ xor a
+ ld [wced2], a
+
+.loop_input
+ call DoFrame
+ call Func_9efc
+ jr c, .loop_input
+ call Func_9b25
+ jr c, .asm_a36a
+ ldh a, [hDPadHeld]
+ and START
+ jr z, .loop_input
+ ; start btn pressed
+
+.asm_a321
+ ld a, $01
+ call PlaySFXConfirmOrCancel
+ ld a, [wNamingScreenKeyboardHeight]
+ ld [wcfdf], a
+ ld a, [wNamingScreenCursorY]
+ ld [wced4], a
+ ld de, wHandTempList
+ ld hl, wcfd8
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ call Func_9c3f
+ call Func_a4c6
+ ld hl, Data_9667
+ call Func_9a6d
+ ld a, [wCurCardTypeFilter]
+ ld [wNamingScreenCursorY], a
+ call Func_9b20
+ call PrintCardSelectionList
+ call EnableLCD
+ ld hl, Data_a396
+ call Func_9a6d
+ ld a, [wcfdf]
+ ld [wNamingScreenKeyboardHeight], a
+ ld a, [wced4]
+ ld [wNamingScreenCursorY], a
+ jr .loop_input
+
+.asm_a36a
+ call Func_9c0e
+ ld a, [wNamingScreenCursorY]
+ ld [wced4], a
+ ld a, [hffb3]
+ cp $ff
+ jr nz, .asm_a321
+ ld hl, Data_9667
+ call Func_9a6d
+ ld a, [wCurCardTypeFilter]
+ ld [wNamingScreenCursorY], a
+ ld hl, hffb0
+ ld [hl], $01
+ call Func_a4de
+ ld hl, hffb0
+ ld [hl], $00
+ jp .asm_a2a2
+; 0xa396
+
+Data_a396: ; a396 (2:6396)
+ db $01, $05, $02, $00, $07, $0f, $00, $00, $00
+; 0xa39f
+
+; a = which card type filter
+Func_a39f: ; a39f (2:639f)
+ push af
+ ld hl, CardTypeFilters
+ ld b, $00
+ ld c, a
+ add hl, bc
+ ld a, [hl]
+ push af
+ ld a, $ff
+ call Func_a3ca
+ pop af
+ call CreateFilteredCardList
+
+ ld a, $07
+ ld [wcecb], a
+ lb de, 2, 5
+ ld hl, wced0
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld a, SYM_SPACE
+ ld [wCursorAlternateTile], a
+ call PrintCardSelectionList
+ pop af
+ ret
+; 0xa3ca
Func_a3ca: ; a3ca (2:63ca)
ld [hffb5], a
@@ -4991,16 +6017,1523 @@ AppendOwnedCardCountNumber: ; a4ae (2:64ae)
ret
; 0xa4c6
- INCROM $a4c6, $a913
+Func_a4c6: ; a4c6 (2:64c6)
+ call Set_OBJ_8x8
+ call Func_8d78
+; fallthrough
+
+Func_a4cc: ; a4cc (2:64cc)
+ lb bc, 0, 4
+ ld a, SYM_BOX_TOP
+ call FillBGMapLineWithA
+ call PrintTotalNumberOfCardsInCollection
+ call Func_a4de
+ call DrawCardTypeIcons
+ ret
+; 0xa4de
+
+Func_a4de: ; a4de (2:64de)
+ ld de, $100
+ call InitTextPrinting
+ ld de, wc590
+ call CopyPlayerName
+ ld hl, wc590
+ call ProcessText
+ ld hl, wc590
+ call GetTextLengthInTiles
+ inc b
+ ld d, b
+ ld e, $00
+ call InitTextPrinting
+ ldtx hl, SCardsText
+ call ProcessTextFromID
+ ret
+; 0xa504
+
+PrintTotalNumberOfCardsInCollection: ; a504 (2:6504)
+ ld a, $ff
+ call Func_a3ca
+
+; count all the cards in collection
+ ld de, wTempCardCollection + 1
+ ld b, 0
+ ld hl, 0
+.loop_all_cards
+ ld a, [de]
+ inc de
+ and $7f
+ push bc
+ ld b, $00
+ ld c, a
+ add hl, bc
+ pop bc
+ inc b
+ ld a, NUM_CARDS
+ cp b
+ jr nz, .loop_all_cards
+
+; hl = total number of cards in collection
+ call .GetTotalCountDigits
+ ld hl, wTempCardCollection
+ ld de, wOnesAndTensPlace
+ ld b, $00
+ call .PlaceNumericalChar
+ call .PlaceNumericalChar
+ call .PlaceNumericalChar
+ call .PlaceNumericalChar
+ call .PlaceNumericalChar
+ ld a, $07
+ ld [hli], a
+ ld [hl], TX_END
+ ld de, $d00
+ call InitTextPrinting
+ ld hl, wTempCardCollection
+ call ProcessText
+ ret
+
+; places a numerical character in hl from de
+; doesn't place a 0 if no non-0
+; numerical character has been placed before
+; this makes it so that there are no
+; 0s in more significant digits
+.PlaceNumericalChar
+ ld [hl], TX_SYMBOL
+ inc hl
+ ld a, b
+ or a
+ jr z, .leading_num
+ ld a, [de]
+ inc de
+ ld [hli], a
+ ret
+.leading_num
+; don't place a 0 as a leading number
+ ld a, [de]
+ inc de
+ cp SYM_0
+ jr z, .space_char
+ ld [hli], a
+ ld b, $01 ; at least one non-0 char was placed
+ ret
+.space_char
+ xor a ; SYM_SPACE
+ ld [hli], a
+ ret
+
+; gets the digits in decimal form
+; of value stored in hl
+; stores the result in wOnesAndTensPlace
+.GetTotalCountDigits
+ ld de, wOnesAndTensPlace
+ ld bc, -10000
+ call .GetDigit
+ ld bc, -1000
+ call .GetDigit
+ ld bc, -100
+ call .GetDigit
+ ld bc, -10
+ call .GetDigit
+ ld bc, -1
+ call .GetDigit
+ ret
+
+.GetDigit
+ ld a, SYM_0 - 1
+.loop
+ inc a
+ add hl, bc
+ jr c, .loop
+ ld [de], a
+ inc de
+ ld a, l
+ sub c
+ ld l, a
+ ld a, h
+ sbc b
+ ld h, a
+ ret
+; 0xa596
+
+; a = CARD_SET_* constant
+Func_a596: ; a596 (2:6596)
+ push af
+ ld a, DECK_SIZE
+ ld hl, wHandTempList
+ call ClearNBytesFromHL
+ ld a, DECK_SIZE
+ ld hl, wOwnedCardsCountList
+ call ClearNBytesFromHL
+ xor a
+ ld [wcfe2], a
+ pop af
+
+ ld hl, 0
+ lb de, 0, 0
+ ld b, a
+.loop_all_cards
+ inc e
+ call LoadCardDataToBuffer1_FromCardID
+ jr c, .asm_a5e6
+ ld a, [wLoadedCard1Set]
+ and $f0 ; set 1
+ swap a
+ cp b
+ jr nz, .loop_all_cards
+
+; it's same set as input
+ ld a, e
+ cp VENUSAUR1
+ jp z, .Func_a681
+ cp MEW2
+ jp z, .Func_a667
+
+ push bc
+ push hl
+ ld bc, wHandTempList
+ add hl, bc
+ ld [hl], e ; card ID
+
+ ld hl, wTempCardCollection
+ add hl, de
+ ld a, [hl]
+ pop hl
+ push hl
+ ld bc, wOwnedCardsCountList
+ add hl, bc
+ ld [hl], a ; card count in collection
+ pop hl
+
+ inc l
+ pop bc
+ jr .loop_all_cards
+
+.asm_a5e6
+ ld a, b
+ cp CARD_SET_MYSTERY
+ jr z, .mystery
+ or a
+ jr nz, .not_colosseum_or_mystery
+
+; colosseum
+; places all basic energy cards in wHandTempList
+ lb de, 0, 0
+.loop_basic_energy_cards
+ inc e
+ ld a, e
+ cp DOUBLE_COLORLESS_ENERGY
+ jr z, .not_colosseum_or_mystery
+ push bc
+ push hl
+ ld bc, wHandTempList
+ add hl, bc
+ ld [hl], e
+ ld hl, wTempCardCollection
+ add hl, de
+ ld a, [hl]
+ pop hl
+ push hl
+ ld bc, wOwnedCardsCountList
+ add hl, bc
+ ld [hl], a
+ pop hl
+ inc l
+ pop bc
+ jr .loop_basic_energy_cards
+
+.mystery
+; places double colorless energy card in wHandTempList
+ lb de, 0, 0
+.loop_find_double_colorless
+ inc e
+ ld a, e
+ cp BULBASAUR
+ jr z, .not_colosseum_or_mystery
+ cp DOUBLE_COLORLESS_ENERGY
+ jr nz, .loop_find_double_colorless
+ ; double colorless energy
+ push bc
+ push hl
+ ld bc, wHandTempList
+ add hl, bc
+ ld [hl], e
+ ld hl, wTempCardCollection
+ add hl, de
+ ld a, [hl]
+ pop hl
+ push hl
+ ld bc, wOwnedCardsCountList
+ add hl, bc
+ ld [hl], a
+ pop hl
+ inc l
+ pop bc
+ jr .loop_find_double_colorless
+
+.not_colosseum_or_mystery
+ ld a, [wcfe2]
+ bit 0, a
+ jr z, .asm_a63e
+ call .Func_a685
+.asm_a63e
+ bit 1, a
+ jr z, .asm_a645
+ call .Func_a69a
+
+.asm_a645
+ dec l
+ ld c, l
+ ld b, h
+.loop_owned_cards
+ ld hl, wOwnedCardsCountList
+ add hl, bc
+ ld a, [hl]
+ cp $80
+ jr nz, .found_not_owned
+ dec c
+ jr .loop_owned_cards
+
+.found_not_owned
+ inc c
+ ld a, c
+ ld [wceae], a
+ xor a
+ ld hl, wHandTempList
+ add hl, bc
+ ld [hl], a
+ ld a, $ff
+ ld hl, wOwnedCardsCountList
+ add hl, bc
+ ld [hl], a
+ ret
+
+.Func_a667
+ ld a, $02
+; fallthrough
+
+.Func_a669
+ push hl
+ push bc
+ ld b, a
+ ld hl, wTempCardCollection
+ add hl, de
+ ld a, [hl]
+ cp $80
+ jr z, .asm_a67c
+ ld a, [wcfe2]
+ or b
+ ld [wcfe2], a
+.asm_a67c
+ pop bc
+ pop hl
+ jp .loop_all_cards
+
+.Func_a681
+ ld a, $01
+ jr .Func_a669
+
+.Func_a685
+ push af
+ push hl
+ ld e, VENUSAUR1
+; fallthrough
+
+.Func_a689
+ ld bc, wHandTempList
+ add hl, bc
+ ld [hl], e
+ pop hl
+ push hl
+ ld bc, wOwnedCardsCountList
+ add hl, bc
+ ld [hl], $01
+ pop hl
+ inc l
+ pop af
+ ret
+
+.Func_a69a
+ push af
+ push hl
+ ld e, MEW2
+ jr .Func_a689
+; 0xa6a0
+
+; a = CARD_SET_* constant
+Func_a6a0: ; a6a0 (2:66a0)
+ push af
+ ld hl, sCardCollection
+ ld de, wTempCardCollection
+ ld b, $ff
+ call EnableSRAM
+ call CopyNBytesFromHLToDE
+ call DisableSRAM
+ pop af
+
+ push af
+ call Func_a6ca
+ call Func_a596
+ ld a, $07
+ ld [wcecb], a
+ ld de, $204
+ ld hl, wced0
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ pop af
+ ret
+; 0xa6ca
+
+; a = CARD_SET_* constant
+Func_a6ca: ; a6ca (2:66ca)
+ push af
+ cp CARD_SET_PROMOTIONAL
+ jr nz, .asm_a6d4
+ ld de, $33f
+ jr .asm_a6f2
+.asm_a6d4
+ cp CARD_SET_LABORATORY
+ jr nz, .asm_a6dd
+ ld de, $333
+ jr .asm_a6f2
+.asm_a6dd
+ cp CARD_SET_MYSTERY
+ jr nz, .asm_a6e6
+ ld de, $332
+ jr .asm_a6f2
+.asm_a6e6
+ cp CARD_SET_EVOLUTION
+ jr nz, .asm_a6ef
+ ld de, $331
+ jr .asm_a6f2
+.asm_a6ef
+ ld de, $330
+.asm_a6f2
+ ld hl, wcfb9
+ ld [hl], d
+ inc hl
+ ld [hl], e
+ pop af
+ ret
+; 0xa6fa
+
+Func_a6fa: ; a6fa (2:66fa)
+ push bc
+ ld hl, wced0
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld b, $13
+ ld c, e
+ dec c
+ dec c
+ ld a, [wcea1]
+ or a
+ jr z, .asm_a710
+ ld a, $0c
+ jr .asm_a712
+.asm_a710
+ ld a, $19
+.asm_a712
+ call WriteByteToBGMap0
+ ld a, [wcea1]
+ ld l, a
+ ld h, $00
+ ld a, [wcecb]
+.asm_a71e
+ push de
+ or a
+ jr z, .asm_a777
+ ld b, a
+ ld de, wHandTempList
+ push hl
+ add hl, de
+ ld a, [hl]
+ pop hl
+ inc l
+ or a
+ jr z, .asm_a788
+ ld e, a
+ call Func_9a59
+ call LoadCardDataToBuffer1_FromCardID
+ push bc
+ push hl
+ ld de, wOwnedCardsCountList
+ add hl, de
+ dec hl
+ ld a, [hl]
+ cp $80
+ jr nz, .asm_a74c
+ ld hl, $6799
+ ld de, wc590
+ call CopyListFromHLToDE
+ jr .asm_a751
+.asm_a74c
+ ld a, $0d
+ call CopyCardNameAndLevel
+.asm_a751
+ pop hl
+ pop bc
+ pop de
+ push hl
+ call InitTextPrinting
+ pop hl
+ push hl
+ call Func_a7a7
+ call ProcessText
+ ld hl, wc590
+ jr .asm_a76d
+ pop de
+ push hl
+ call InitTextPrinting
+ ld hl, Text_9a36
+.asm_a76d
+ call ProcessText
+ pop hl
+ ld a, b
+ dec a
+ inc e
+ inc e
+ jr .asm_a71e
+.asm_a777
+ ld de, wHandTempList
+ add hl, de
+ ld a, [hl]
+ or a
+ jr z, .asm_a788
+ pop de
+ xor a
+ ld [wcecd], a
+ ld a, $2f
+ jr .asm_a790
+.asm_a788
+ pop de
+ ld a, $01
+ ld [wcecd], a
+ ld a, $1b
+.asm_a790
+ ld b, $13
+ ld c, $11
+ call WriteByteToBGMap0
+ pop bc
+ ret
+; 0xa799
+
+ INCROM $a799, $a7a7
+
+Func_a7a7: ; a7a7 (2:67a7)
+ push bc
+ push de
+ ld de, wHandTempList
+ add hl, de
+ dec hl
+ ld a, [hl]
+ cp BULBASAUR
+ jr c, .energy_card
+ cp VENUSAUR1
+ jr z, .phantom_card
+ cp MEW2
+ jr z, .phantom_card
+
+ ld a, [wcecb]
+ sub b
+ ld hl, wcea1
+ add [hl]
+ inc a
+ call CalculateOnesAndTensDigits
+ ld hl, wOnesAndTensPlace
+ ld a, [hli]
+ ld b, a
+ ld a, [hl]
+ or a
+ jr nz, .asm_a7d2
+ ld a, SYM_0
+.asm_a7d2
+ ld hl, wcfb9 + 2
+ ld [hl], TX_SYMBOL
+ inc hl
+ ld [hli], a
+ ld [hl], TX_SYMBOL
+ inc hl
+ ld a, b
+ ld [hli], a
+ ld [hl], TX_SYMBOL
+ inc hl
+ xor a
+ ld [hli], a
+ ld [hl], a
+ ld hl, wcfb9
+ pop de
+ pop bc
+ ret
+
+.energy_card
+ call CalculateOnesAndTensDigits
+ ld hl, wOnesAndTensPlace
+ ld a, [hli]
+ ld b, a
+ ld hl, wcfb9 + 2
+ ld de, $334
+ ld [hl], d
+ inc hl
+ ld [hl], e
+ inc hl
+ ld [hl], TX_SYMBOL
+ inc hl
+ ld a, SYM_0
+ ld [hli], a
+ ld [hl], TX_SYMBOL
+ inc hl
+ ld a, b
+ ld [hli], a
+ ld [hl], TX_SYMBOL
+ inc hl
+ xor a
+ ld [hli], a
+ ld [hl], a
+ ld hl, wcfb9 + 2
+ pop de
+ pop bc
+ ret
+
+.phantom_card
+ ld hl, wcfb9 + 2
+ ld [hl], $6c
+ inc hl
+ ld [hl], $6c
+ inc hl
+ ld [hl], TX_SYMBOL
+ inc hl
+ xor a
+ ld [hli], a
+ ld [hl], a
+ ld hl, wcfb9
+ pop de
+ pop bc
+ ret
+; 0xa828
+
+Func_a828: ; a828 (2:6828)
+ ld a, [wNamingScreenCursorY]
+ ld b, a
+ ld a, [wcea1]
+ add b
+ ld c, a
+ ld b, $00
+ ld hl, wOwnedCardsCountList
+ add hl, bc
+ ld a, [hl]
+ cp $80
+ jr z, .handle_input
+
+ ld hl, wcfd8
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ add hl, bc
+ ld e, [hl]
+ ld d, $00
+ push de
+ call LoadCardDataToBuffer1_FromCardID
+ lb de, $38, $9f
+ call SetupText
+ bank1call OpenCardPage_FromCheckHandOrDiscardPile
+ pop de
+
+.handle_input
+ ldh a, [hDPadHeld]
+ ld b, a
+ and A_BUTTON | B_BUTTON | SELECT | START
+ jp nz, .asm_a8f5
+ xor a ; FALSE
+ ld [wPlaysSfx], a
+ ld a, [wNamingScreenKeyboardHeight]
+ ld c, a
+ ld a, [wNamingScreenCursorY]
+ bit D_UP_F, b
+ jr z, .asm_a891
+
+ push af
+ ld a, TRUE
+ ld [wPlaysSfx], a
+ ld a, [wNamingScreenCursorY]
+ ld hl, wcea1
+ add [hl]
+ ld hl, wcfe5
+ cp [hl]
+ jr z, .open_card_page_pop_af
+ pop af
+
+ dec a
+ bit 7, a
+ jr z, .asm_a8c3
+ ld a, [wcea1]
+ or a
+ jr z, .open_card_page
+ dec a
+ ld [wcea1], a
+ xor a
+ jr .asm_a8c3
+
+.asm_a891
+ bit D_DOWN_F, b
+ jr z, .asm_a8d6
+
+ push af
+ ld a, TRUE
+ ld [wPlaysSfx], a
+ pop af
+
+ inc a
+ cp c
+ jr c, .asm_a8c3
+ push af
+ ld hl, wcfd8
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [wNamingScreenCursorY]
+ ld c, a
+ ld b, $00
+ add hl, bc
+ ld a, [wcea1]
+ inc a
+ ld c, a
+ ld b, $00
+ add hl, bc
+ ld a, [hl]
+ or a
+ jr z, .asm_a8d3
+ ld a, [wcea1]
+ inc a
+ ld [wcea1], a
+ pop af
+ dec a
+.asm_a8c3
+ ld [wNamingScreenCursorY], a
+ ld a, [wPlaysSfx]
+ or a
+ jp z, Func_a828
+ call PlaySFX
+ jp Func_a828
+.asm_a8d3
+ pop af
+ jr .open_card_page
+
+.asm_a8d6
+ ld a, [wced2]
+ or a
+ jr z, .open_card_page
+ bit D_LEFT_F, b
+ jr z, .asm_a8e5
+ call Func_9dfa
+ jr .open_card_page
+.asm_a8e5
+ bit D_RIGHT_F, b
+ jr z, .open_card_page
+ call Func_9d22
+
+.open_card_page_pop_af
+ pop af
+.open_card_page
+ push de
+ bank1call OpenCardPage.input_loop
+ pop de
+ jp .handle_input
+
+.asm_a8f5
+ ld a, $01
+ ld [wVBlankOAMCopyToggle], a
+ ld a, [wNamingScreenCursorY]
+ ld [wced4], a
+ ret
+; 0xa901
+
+Func_a901: ; a901 (2:6901)
+ ld hl, wOwnedCardsCountList
+ ld b, $00
+.asm_a906
+ ld a, [hli]
+ cp $80
+ jr nz, .asm_a90e
+ inc b
+ jr .asm_a906
+.asm_a90e
+ ld a, b
+ ld [wcfe5], a
+ ret
+; 0xa913
Func_a913: ; a913 (2:6913)
- INCROM $a913, $ad51
+ ld a, $01
+ ld [hffb4], a ; should be ldh
+
+ xor a
+.asm_a919
+ ld hl, .MenuParameters
+ call InitializeMenuParameters
+ call .Func_aade
+.loop_input_1
+ call DoFrame
+ call HandleMenuInput
+ jp nc, .loop_input_1 ; should be jr
+ ldh a, [hCurMenuItem]
+ cp $ff
+ ret z
+ ld c, a
+ ld b, $00
+ ld hl, wcec4
+ add hl, bc
+ ld a, [hl]
+ or a
+ jr nz, .loop_input_1
+
+ ld a, c
+ ld [wcfe0], a
+ call Func_a6a0
+ call .Func_aa24
+ xor a
+ ld [wcea1], a
+ call Func_a6fa
+ call EnableLCD
+ ld a, [wceae]
+ or a
+ jr nz, .asm_a968
+
+.loop_input_2
+ call DoFrame
+ ldh a, [hKeysPressed]
+ and B_BUTTON
+ jr z, .loop_input_2
+ ld a, $ff
+ call PlaySFXConfirmOrCancel
+ ldh a, [hCurMenuItem]
+ jp .asm_a919
+
+.asm_a968
+ call .Func_aa13
+ xor a
+ ld hl, .data_aa0a
+ call Func_9a6d
+ ld a, [wceae]
+ ld hl, wcecb
+ cp [hl]
+ jr nc, .asm_a97e
+ ld [wNamingScreenKeyboardHeight], a
+.asm_a97e
+ ld hl, Func_a6fa
+ ld d, h
+ ld a, l
+ ld hl, wcece
+ ld [hli], a
+ ld [hl], d
+
+ xor a
+ ld [wced2], a
+.loop_input_3
+ call DoFrame
+ call Func_9b25
+ jr c, .asm_a9ed
+ call Func_9eb8
+ jr c, .loop_input_3
+ ldh a, [hDPadHeld]
+ and START
+ jr z, .loop_input_3
+.asm_a99f
+ ld a, $01
+ call PlaySFXConfirmOrCancel
+ ld a, [wNamingScreenKeyboardHeight]
+ ld [wcfdf], a
+ ld a, [wNamingScreenCursorY]
+ ld [wced4], a
+ ld c, a
+ ld a, [wcea1]
+ add c
+ ld hl, wOwnedCardsCountList
+ ld c, a
+ ld b, $00
+ add hl, bc
+ ld a, [hl]
+ cp $80
+ jr z, .loop_input_3
+ ld de, wHandTempList
+ ld hl, wcfd8
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ call Func_a901
+ call Func_a828
+ call .Func_aa24
+ call Func_a6fa
+ call EnableLCD
+ ld hl, .data_aa0a
+ call Func_9a6d
+ ld a, [wcfdf]
+ ld [wNamingScreenKeyboardHeight], a
+ ld a, [wced4]
+ ld [wNamingScreenCursorY], a
+ jr .loop_input_3
+
+.asm_a9ed
+ call Func_9c0e
+ ld a, [wNamingScreenCursorY]
+ ld [wced4], a
+ ld a, [hffb3]
+ cp $ff
+ jr nz, .asm_a99f
+ ldh a, [hCurMenuItem]
+ jp .asm_a919
+
+.MenuParameters
+ db 3, 3 ; cursor x, cursor y
+ db 2 ; y displacement between items
+ db 5 ; number of items
+ db SYM_CURSOR_R ; cursor tile number
+ db SYM_SPACE ; tile behind cursor
+ dw NULL ; function pointer if non-0
+
+.data_aa0a
+ db $01, $04, $02, $00, $07, $0f, $00, $00, $00
+
+.Func_aa13
+ ld hl, wHandTempList
+ ld b, $00
+.asm_aa18
+ ld a, [hli]
+ or a
+ jr z, .asm_aa1f
+ inc b
+ jr .asm_aa18
+.asm_aa1f
+ ld a, b
+ ld [wcfe6], a
+ ret
+
+.Func_aa24
+ call Set_OBJ_8x8
+ xor a
+ ld [wTileMapFill], a
+ call ZeroObjectPositions
+ call EmptyScreen
+ ld a, $01
+ ld [wVBlankOAMCopyToggle], a
+ call LoadCursorTile
+ call LoadSymbolsFont
+ call LoadDuelCardSymbolTiles
+ bank1call SetDefaultPalettes
+ lb de, $3c, $ff
+ call SetupText
+ ld de, $101
+ call InitTextPrinting
-Func_ad51: ; ad51 (2:6d51)
- INCROM $ad51, $adfe
+ ld a, [wcfe0]
+ cp CARD_SET_PROMOTIONAL
+ jr nz, .check_laboratory
+ ldtx hl, Item5PromotionalCardText
+ ld e, 18
+ ld a, [wcfe2]
+ bit 0, a
+ jr z, .asm_aa62
+ inc e ; 19
+.asm_aa62
+ bit 1, a
+ jr z, .asm_aa8f
+ inc e ; 20
+ jr .asm_aa8f
+.check_laboratory
+ cp CARD_SET_LABORATORY
+ jr nz, .check_mystery
+ ldtx hl, Item4LaboratoryText
+ ld e, 51
+ jr .asm_aa8f
+.check_mystery
+ cp CARD_SET_MYSTERY
+ jr nz, .check_evolution
+ ldtx hl, Item3MysteryText
+ ld e, 51
+ jr .asm_aa8f
+.check_evolution
+ cp CARD_SET_EVOLUTION
+ jr nz, .colosseum
+ ldtx hl, Item2EvolutionText
+ ld e, 50
+ jr .asm_aa8f
+.colosseum
+ ldtx hl, Item1ColosseumText
+ ld e, 56
+
+.asm_aa8f
+ push de
+ call ProcessTextFromID
+ call .Func_aac8
+ ld de, SerialHandleSend.send_escaped
+ call InitTextPrinting
+
+ ld a, [wcfe1]
+ ld hl, wc590
+ call ConvertToNumericalDigits
+ call CalculateOnesAndTensDigits
+ ld [hl], TX_SYMBOL
+ inc hl
+ ld [hl], SYM_SLASH
+ inc hl
+ pop de
+
+ ld a, e
+ call ConvertToNumericalDigits
+ ld [hl], TX_END
+ ld hl, wc590
+ call ProcessText
+ lb de, 0, 2
+ lb bc, 20, 16
+ call DrawRegularTextBox
+ call EnableLCD
+ ret
+
+.Func_aac8
+ ld hl, wOwnedCardsCountList
+ ld b, $00
+.asm_aacd
+ ld a, [hli]
+ cp $ff
+ jr z, .asm_aad9
+ cp $80
+ jr z, .asm_aacd
+ inc b
+ jr .asm_aacd
+.asm_aad9
+ ld a, b
+ ld [wcfe1], a
+ ret
+
+.Func_aade
+ xor a
+ ld [wTileMapFill], a
+ call EmptyScreen
+ ld a, [hffb4]
+ dec a
+ jr nz, .asm_ab0b
+ ld [hffb4], a
+ call Set_OBJ_8x8
+ call ZeroObjectPositions
+ ld a, $01
+ ld [wVBlankOAMCopyToggle], a
+ call LoadCursorTile
+ call LoadSymbolsFont
+ call LoadDuelCardSymbolTiles
+ bank1call SetDefaultPalettes
+ lb de, $3c, $ff
+ call SetupText
+
+.asm_ab0b
+ lb de, 0, 0
+ lb bc, 20, 13
+ call DrawRegularTextBox
+ ld hl, .BoosterPacksMenuData
+ call PlaceTextItems
+ ld a, 5
+ ld hl, wcec4
+ call ClearNBytesFromHL
+ call EnableSRAM
+ ld a, [sb703]
+ call DisableSRAM
+ or a
+ jr nz, .asm_ab58
+
+ ld a, CARD_SET_PROMOTIONAL
+ call Func_a6a0
+ ld a, [wHandTempList]
+ or a
+ jr nz, .asm_ab4d
+ ld a, $01
+ ld [wcec4 + 4], a
+ ld e, $0b
+ ld d, $05
+ call InitTextPrinting
+ ldtx hl, Text0259
+ call ProcessTextFromID
+ jr .asm_ab58
+
+.asm_ab4d
+ call EnableSRAM
+ ld a, $01
+ ld [sb703], a
+ call DisableSRAM
+.asm_ab58
+ ldtx hl, ViewWhichCardFileText
+ call DrawWideTextBox_PrintText
+ call EnableLCD
+ ret
+
+.BoosterPacksMenuData
+ textitem 7, 1, BoosterPackTitleText
+ textitem 5, 3, Item1ColosseumText
+ textitem 5, 5, Item2EvolutionText
+ textitem 5, 7, Item3MysteryText
+ textitem 5, 9, Item4LaboratoryText
+ textitem 5, 11, Item5PromotionalCardText
+ db $ff
+; 0xab7b
+
+PrinterMenu_PokemonCards: ; ab7b (2:6b7b)
+ call Func_8ce7
+ call Func_a4c6
+ xor a
+ ld [wcea1], a
+ ld [wCurCardTypeFilter], a
+ call Func_a39f
+ call EnableLCD
+ xor a
+ ld hl, Data_9667
+ call Func_9a6d
+
+.loop_frame_1
+ call DoFrame
+ ld a, [wCurCardTypeFilter]
+ ld b, a
+ ld a, [wNamingScreenCursorY]
+ cp b
+ jr z, .handle_input
+ ld [wCurCardTypeFilter], a
+ ld hl, wcea1
+ ld [hl], $00
+ call Func_a39f
+ ld hl, hffb0
+ ld [hl], $01
+ call Func_a4de
+ ld hl, hffb0
+ ld [hl], $00
+ ld a, $09
+ ld [wNamingScreenKeyboardHeight], a
+.handle_input
+ ldh a, [hDPadHeld]
+ and D_DOWN
+ jr z, .asm_abca
+; d_down
+ call Func_9ad7
+ jr .asm_abd7
+.asm_abca
+ call Func_9a83
+ jr nc, .loop_frame_1
+ ld a, [hffb3]
+ cp $ff
+ jr nz, .asm_abd7
+ ret
+
+.asm_abd7
+ ld a, [wceae]
+ or a
+ jr z, .loop_frame_1
+
+ xor a
+ ld hl, Data_a396
+ call Func_9a6d
+ ld a, [wceae]
+ ld [wcfe6], a
+ ld hl, wcecb
+ cp [hl]
+ jr nc, .asm_abf6
+ ld [wNamingScreenKeyboardHeight], a
+ ld [wcfdf], a
+.asm_abf6
+ ld hl, PrintCardSelectionList
+ ld d, h
+ ld a, l
+ ld hl, wcece
+ ld [hli], a
+ ld [hl], d
+ xor a
+ ld [wced2], a
+
+.loop_frame_2
+ call DoFrame
+ call Func_9efc
+ jr c, .loop_frame_2
+ call Func_9b25
+ jr c, .asm_ac60
+ ldh a, [hDPadHeld]
+ and START
+ jr z, .loop_frame_2
+; start btn
+ ld a, $01
+ call PlaySFXConfirmOrCancel
+ ld a, [wNamingScreenKeyboardHeight]
+ ld [wcfdf], a
+ ld a, [wNamingScreenCursorY]
+ ld [wced4], a
+ ld de, wHandTempList
+ ld hl, wcfd8
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ call Func_9c3f
+ call Func_a4c6
+
+.asm_ac37
+ ld hl, Data_9667
+ call Func_9a6d
+ ld a, [wCurCardTypeFilter]
+ ld [wNamingScreenCursorY], a
+ call Func_9b20
+ call PrintCardSelectionList
+ call EnableLCD
+ ld hl, Data_a396
+ call Func_9a6d
+ ld a, [wcfdf]
+ ld [wNamingScreenKeyboardHeight], a
+ ld a, [wced4]
+ ld [wNamingScreenCursorY], a
+ jr .loop_frame_2
+
+.asm_ac60
+ call Func_9c0e
+ ld a, [wNamingScreenKeyboardHeight]
+ ld [wcfdf], a
+ ld a, [wNamingScreenCursorY]
+ ld [wced4], a
+ ld a, [hffb3]
+ cp $ff
+ jr nz, .asm_ac92
+
+ ld hl, Data_9667
+ call Func_9a6d
+ ld a, [wCurCardTypeFilter]
+ ld [wNamingScreenCursorY], a
+ ld hl, hffb0
+ ld [hl], $01
+ call Func_a4de
+ ld hl, hffb0
+ ld [hl], $00
+ jp .loop_frame_1
+
+.asm_ac92
+ call Func_9c3a
+ call .Func_acde
+ ld de, $101
+ call InitTextPrinting
+ ldtx hl, PrintThisCardYesNoText
+ call ProcessTextFromID
+ ld a, $01
+ ld hl, Data_ad05
+ call Func_9a6d
+.loop_frame
+ call DoFrame
+ call Func_9a83
+ jr nc, .loop_frame
+ ld a, [hffb3]
+ or a
+ jr nz, .asm_acd5
+ ld hl, wHandTempList
+ ld a, [wced4]
+ ld c, a
+ ld b, $00
+ add hl, bc
+ ld a, [wcea1]
+ ld c, a
+ ld b, $00
+ add hl, bc
+ ld a, [hl]
+ bank1call Func_758a
+ call Func_a4c6
+ jp .asm_ac37
+
+.asm_acd5
+ call .Func_acde
+ call Func_a4cc
+ jp .asm_ac37
+
+.Func_acde
+ xor a
+ lb hl, 0, 0
+ lb de, 0, 0
+ lb bc, 20, 4
+ call FillRectangle
+ ld a, [wConsole]
+ cp CONSOLE_CGB
+ ret nz ; exit if not CGB
+
+ xor a
+ lb hl, 0, 0
+ lb de, 0, 0
+ lb bc, 20, 4
+ call BankswitchVRAM1
+ call FillRectangle
+ call BankswitchVRAM0
+ ret
+; 0xad0e
+
+Data_ad05: ; ad05 (2:6d05)
+ db $03, $03, $00, $04, $02, $0f, $00, $00, $00
+; 0xad0e
+
+PrinterMenu_CardList: ; ad0e (2:6d0e)
+ call Func_8ce7
+ call Set_OBJ_8x8
+ call Func_8d78
+ lb bc, 0, 4
+ ld a, SYM_BOX_TOP
+ call FillBGMapLineWithA
+
+ xor a
+ ld [wcea1], a
+ ld [wCurCardTypeFilter], a
+ call Func_a39f
+ call EnableLCD
+ ld de, $101
+ call InitTextPrinting
+ ld hl, EnableLCD
+ call ProcessTextFromID
+ ld a, $01
+ ld hl, Data_ad05
+ call Func_9a6d
+.loop_frame
+ call DoFrame
+ call Func_9a83
+ jr nc, .loop_frame
+ ld a, [hffb3]
+ or a
+ ret nz
+ bank1call Func_7585
+ ret
+; 0xad51
+
+HandlePrinterMenu: ; ad51 (2:6d51)
+ bank1call Func_757b
+ ret c
+ xor a
+.loop
+ ld hl, PrinterMenuParameters
+ call InitializeMenuParameters
+ call Func_8d56
+ lb de, 4, 0
+ lb bc, 12, 12
+ call DrawRegularTextBox
+ ld de, $602
+ call InitTextPrinting
+ ldtx hl, PrintMenuItemsText
+ call ProcessTextFromID
+ ldtx hl, WhatWouldYouLikeToPrintText
+ call DrawWideTextBox_PrintText
+ call EnableLCD
+.loop_input
+ call DoFrame
+ call HandleMenuInput
+ jr nc, .loop_input
+ ldh a, [hCurMenuItem]
+ cp $ff
+ call z, PrinterMenu_QuitPrint
+ ld [wcfe4], a
+ ld hl, PrinterMenuFunctionTable
+ call JumpToFunctionInTable
+ ld a, [wcfe4]
+ jr .loop
+; 0xad9a
+
+PrinterMenu_QuitPrint: ; ad9a (2:6d9a)
+ add sp, $2 ; exit menu
+ ldtx hl, PleaseMakeSureToTurnGameBoyPrinterOffText
+ call DrawWideTextBox_WaitForInput
+ ret
+; 0xada3
+
+PrinterMenuFunctionTable: ; ada3 (2:6da3)
+ dw PrinterMenu_PokemonCards
+ dw PrinterMenu_DeckConfiguration
+ dw PrinterMenu_CardList
+ dw PrinterMenu_PrintQuality
+ dw PrinterMenu_QuitPrint
+; 0xadad
+
+PrinterMenuParameters: ; adad (2:6dad)
+ db 5, 2 ; cursor x, cursor y
+ db 2 ; y displacement between items
+ db 5 ; number of items
+ db SYM_CURSOR_R ; cursor tile number
+ db SYM_SPACE ; tile behind cursor
+ dw NULL ; function pointer if non-0
+; 0xadb5
+
+PrinterMenu_PrintQuality: ; adb5 (2:6db5)
+ ldtx hl, PleaseSetTheContrastText
+ call DrawWideTextBox_PrintText
+ call EnableSRAM
+ ld a, [sPrinterContrastLevel]
+ call DisableSRAM
+ ld hl, Data_adf5
+ call Func_9a6d
+.loop_frame
+ call DoFrame
+ call Func_9a83
+ jr nc, .loop_frame
+ ld a, [hffb3]
+ cp $ff
+ jr z, .asm_ade2
+ call EnableSRAM
+ ld [sPrinterContrastLevel], a
+ call DisableSRAM
+.asm_ade2
+ add sp, $2 ; exit menu
+ ld a, [wcfe4]
+ ld hl, PrinterMenuParameters
+ call InitializeMenuParameters
+ ldtx hl, WhatWouldYouLikeToPrintText
+ call DrawWideTextBox_PrintText
+ jr HandlePrinterMenu.loop_input
+; 0xadf5
+
+Data_adf5: ; adf5 (2:6df5)
+ db $05, $10, $00, $02, $05, $0f, $00, $00, $00
+; 0xadfe
Func_adfe: ; adfe (2:6dfe)
- INCROM $adfe, $af1d
+ push de
+ ld de, wcfb9
+ call CopyListFromHLToDEInSRAM
+ pop de
+ ld hl, wcf17
+ call Func_8cd4
+ ld a, $09
+ ld hl, wcebb
+ call ClearNBytesFromHL
+ ld a, DECK_SIZE
+ ld [wcecc], a
+ ld hl, wcebb
+ ld [hl], a
+ call Func_ae21
+ ret
+; 0xae21
+
+Func_ae21: ; ae21 (2:6e21)
+ call Func_a028
+ call Func_a06e
+ xor a
+ ld [wcea1], a
+.loop
+ ld hl, Data_ae91
+ call Func_9a6d
+ ld a, [wced9]
+ ld [wcfe6], a
+ cp $05
+ jr c, .asm_ae3d
+ ld a, $05
+.asm_ae3d
+ ld [wNamingScreenKeyboardHeight], a
+ ld [wcecb], a
+ call Func_aeb9
+ ld hl, wcfda
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ call DrawWideTextBox_PrintText
+
+ ld hl, Func_ae9a
+ ld d, h
+ ld a, l
+ ld hl, wcece
+ ld [hli], a
+ ld [hl], d
+ xor a
+ ld [wced2], a
+
+.loop_input
+ call DoFrame
+ call Func_9b25
+ jr c, .asm_ae89
+ call Func_9eb8
+ jr c, .loop_input
+ ldh a, [hDPadHeld]
+ and START
+ jr z, .loop_input
+.asm_ae70
+ ld a, $01
+ call PlaySFXConfirmOrCancel
+ ld a, [wNamingScreenCursorY]
+ ld [wced7], a
+ ld de, wOwnedCardsCountList
+ ld hl, wcfd8
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ call Func_9c3f
+ jr .loop
+
+.asm_ae89
+ ld a, [hffb3]
+ cp $ff
+ ret z
+ jr .asm_ae70
+; 0xae91
+
+Data_ae91: ; ae91 (2:6e91)
+ db $00, $03, $02, $00, $05, $0f, $00, $00, $00
+; 0xae9a
+
+Func_ae9a: ; ae9a (2:6e9a)
+ ld hl, hffb0
+ ld [hl], $01
+ call Func_aed3
+ ld de, $10e
+ call InitTextPrinting
+ ld hl, wcfda
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ call ProcessTextFromID
+ ld hl, hffb0
+ ld [hl], $00
+ jp PrintConfirmationCardList
+; 0xaeb9
+
+Func_aeb9: ; aeb9 (2:6eb9)
+ call .Func_aec9
+ ld de, $303
+ ld hl, wced0
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ call PrintConfirmationCardList
+ ret
+
+.Func_aec9
+ call Func_8d56
+ call Func_aed3
+ call EnableLCD
+ ret
+; 0xaed3
+
+Func_aed3: ; aed3 (2:6ed3)
+ ld a, [wcfb9]
+ or a
+ ret z
+ ld de, $1
+ call InitTextPrinting
+ ld a, [wceb1]
+ inc a
+ ld hl, wc590
+ call ConvertToNumericalDigits
+ ld [hl], $77
+ inc hl
+ ld [hl], TX_END
+ ld hl, wc590
+ call ProcessText
+
+ ld hl, wcfb9
+ ld de, wc590
+ call CopyListFromHLToDE
+ ld hl, wc590
+ call GetTextLengthInTiles
+ ld b, $00
+ ld hl, wc590
+ add hl, bc
+ ld d, h
+ ld e, l
+ ld hl, Data_92a7
+ call CopyListFromHLToDE
+ ld de, $301
+ ld hl, wc590
+ call InitTextPrinting
+ call ProcessText
+ ret
+; 0xaf1d
Func_af1d: ; af1d (2:6f1d)
xor a
@@ -5079,8 +7612,8 @@ Func_af98: ; af98 (2:6f98)
call Func_b141
call Func_b088
call EnableLCD
- ld a, [wceab + 3]
- ld [wcfe4 + 2], a
+ ld a, [wceae]
+ ld [wcfe6], a
ld hl, wcecb
cp [hl]
jr nc, .asm_afd4
@@ -5120,7 +7653,7 @@ Func_af98: ; af98 (2:6f98)
call EnableLCD
ld hl, Data_b04a
call Func_9a6d
- ld a, [wceab + 3]
+ ld a, [wceae]
ld hl, wcecb
cp [hl]
jr nc, .asm_b027
@@ -5261,7 +7794,7 @@ Func_b088: ; b088 (2:7088)
.asm_b119
ld a, l
- ld [wceab + 3], a
+ ld [wceae], a
xor a
ld c, l
ld b, h
@@ -5441,7 +7974,11 @@ Func_b19d: ; b19d (2:719d)
ret
Unknown_b274: ; b274 (2:7274)
- INCROM $b274, $b285
+ textitem 2, 14, SaveADeckText
+ textitem 12, 14, DeleteADeckText
+ textitem 2, 16, BuildADeckText
+ textitem 12, 16, CancelText
+ db $ff
Func_b285: ; b285 (2:7285)
ld a, $05
@@ -5462,13 +7999,157 @@ Func_b285: ; b285 (2:7285)
; 0xb29f
Func_b29f: ; b29f (2:729f)
- INCROM $b29f, $b35b
+ call DoFrame
+ call Func_9b25
+ jr c, .asm_b303
+ call .Func_b317
+ jr c, Func_b29f ; loop back to start
+ ldh a, [hDPadHeld]
+ and START
+ jr z, Func_b29f ; loop back to start
+
+; start btn
+ ld a, [wcea1]
+ ld [wd087], a
+ ld b, a
+ ld a, [wNamingScreenCursorY]
+ ld [wd086], a
+ add b
+ ld c, a
+ inc a
+ or $80
+ ld [wceb1], a
+ sla c
+ ld b, $00
+ ld hl, wd00d
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push hl
+ ld bc, $18
+ add hl, bc
+ ld d, h
+ ld e, l
+ call EnableSRAM
+ ld a, [hl]
+ call DisableSRAM
+ pop hl
+ or a
+ jr z, Func_b29f ; loop back to start
+
+ ld a, $01
+ call PlaySFXConfirmOrCancel
+ call Func_8e1f
+ ld a, [wd087]
+ ld [wcea1], a
+ call Func_b379
+ call Func_b704
+ call Func_b545
+ ld a, [wd086]
+ ld [wNamingScreenCursorY], a
+ scf
+ ret
+
+.asm_b303
+ call Func_9c3a
+ ld a, [wcea1]
+ ld [wd087], a
+ ld a, [wNamingScreenCursorY]
+ ld [wd086], a
+ ld a, [hffb3]
+ or a
+ ret
+
+.Func_b317
+ ld a, [wcea1]
+ ld c, a
+ ldh a, [hDPadHeld]
+ cp D_RIGHT
+ jr z, .d_right
+ cp D_LEFT
+ jr z, .d_left
+ or a
+ ret
+
+.d_right
+ ld a, [wcea1]
+ add $05
+ ld b, a
+ add $05
+ ld hl, wd0a5
+ cp [hl]
+ jr c, .asm_b347
+ ld a, [wd0a5]
+ sub $05
+ ld b, a
+ jr .asm_b347
+
+.d_left
+ ld a, [wcea1]
+ sub $05
+ ld b, a
+ jr nc, .asm_b347
+ ld b, $00
+
+.asm_b347
+ ld a, b
+ ld [wcea1], a
+ cp c
+ jr z, .asm_b359
+ ld a, SFX_01
+ call PlaySFX
+ call Func_b403
+ call Func_b545
+.asm_b359
+ scf
+ ret
+; 0xb35b
Func_b35b: ; b35b (2:735b)
- INCROM $b35b, $b379
+ ld a, [wd088]
+ sla a
+ ld l, a
+ ld h, $00
+ ld bc, wd00d
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld bc, $18
+ add hl, bc
+ call EnableSRAM
+ ld a, [hl]
+ call DisableSRAM
+ or a
+ ret nz
+ scf
+ ret
+; 0xb379
Func_b379: ; b379 (2:7379)
- INCROM $b379, $b3b3
+ call Set_OBJ_8x8
+ xor a
+ ld [wTileMapFill], a
+ call ZeroObjectPositions
+ call EmptyScreen
+ ld a, $01
+ ld [wVBlankOAMCopyToggle], a
+ call LoadSymbolsFont
+ call LoadDuelCardSymbolTiles
+ bank1call SetDefaultPalettes
+ lb de, $3c, $ff
+ call SetupText
+ lb de, 0, 0
+ lb bc, 20, 13
+ call DrawRegularTextBox
+ call Func_b3b3
+ call Func_b3c3
+ call Func_b3e5
+ call Func_b525
+ call EnableLCD
+ ret
+; 0xb3b3
Func_b3b3: ; b3b3 (2:73b3)
lb de, 1, 0
@@ -5481,7 +8162,29 @@ Func_b3b3: ; b3b3 (2:73b3)
ret
; 0xb3c3
- INCROM $b3c3, $b3e5
+Func_b3c3: ; b3c3 (2:73c3)
+ ld a, DECK_SIZE
+ add DECK_SIZE
+ ld hl, wd00d
+ call ClearNBytesFromHL
+ ld de, wd00d
+ ld hl, s0a350
+ ld bc, $54
+ ld a, DECK_SIZE
+.asm_b3d8
+ push af
+ ld a, l
+ ld [de], a
+ inc de
+ ld a, h
+ ld [de], a
+ inc de
+ add hl, bc
+ pop af
+ dec a
+ jr nz, .asm_b3d8
+ ret
+; 0xb3e5
Func_b3e5: ; b3e5 (2:73e5)
ld a, [wcea1]
@@ -5504,8 +8207,10 @@ Func_b3e5: ; b3e5 (2:73e5)
jr .asm_b3ed
; 0xb3fe
-Unknown_b3fe: ; b3fe (2:73fe)
- INCROM $b3fe, $b403
+Func_b3fe: ; b3fe (2:73fe)
+ call Func_b704
+ jr Func_b3e5
+; 0xb403
Func_b403: ; b403 (2:7403)
call Func_b704
@@ -5575,7 +8280,7 @@ Func_b424: ; b424 (2:7424)
pop bc
ld hl, wDefaultText
jr c, .asm_b482
- ld de, $35f
+ ld de, $35f ; "○"
jr .asm_b4c2
.asm_b482
@@ -5584,11 +8289,11 @@ Func_b424: ; b424 (2:7424)
call Func_b625
jr c, .asm_b490
pop bc
- ld de, $360
+ ld de, $360 ; "❄"
jr .asm_b4c2
.asm_b490
- ld de, $6c
+ ld de, $6c ; "✕"
call Func_22ca
pop bc
pop de
@@ -5686,13 +8391,109 @@ Func_b4e1: ; b4e1 (2:74e1)
ret
; 0xb525
- INCROM $b525, $b545
+Func_b525: ; b525 (2:7525)
+ call EnableSRAM
+ ld hl, s0a350
+ ld bc, $54
+ ld d, DECK_SIZE
+ ld e, $00
+.loop
+ ld a, [hl]
+ or a
+ jr z, .asm_b537
+ inc e
+.asm_b537
+ dec d
+ jr z, .asm_b53d
+ add hl, bc
+ jr .loop
+.asm_b53d
+ ld a, e
+ ld [wd085], a
+ call DisableSRAM
+ ret
+; 0xb545
Func_b545: ; b545 (2:7545)
- INCROM $b545, $b592
+ ld a, [wd085]
+ ld hl, wc590
+ call ConvertToNumericalDigits
+ ld a, TX_SYMBOL
+ ld [hli], a
+ ld a, SYM_SLASH
+ ld [hli], a
+ ld a, DECK_SIZE
+ call ConvertToNumericalDigits
+ ld [hl], TX_END
+ ld de, SerialHandleSend.send_escaped
+ call InitTextPrinting
+ ld hl, wc590
+ call ProcessText
+ ret
+; 0xb568
+
+ INCROM $b568, $b592
Func_b592: ; b592 (2:7592)
- INCROM $b592, $b611
+ ld a, $ff
+ call Func_9168
+ xor a
+.asm_b598
+ ld hl, DeckMachineMenuParameters
+ call InitializeMenuParameters
+ ldtx hl, ChooseADeckToSaveText
+ call DrawWideTextBox_PrintText
+.loop_input
+ call DoFrame
+ call Func_8dea
+ jr c, .asm_b598
+ call HandleMenuInput
+ jp nc, .loop_input ; should be jr
+ ldh a, [hCurMenuItem]
+ cp $ff
+ ret z
+ ld [wceb1], a
+ call Func_8ff2
+ jp nc, .Func_b5c8
+ call Func_8fe8
+ ld a, [wceb1]
+ jr .asm_b598
+
+.Func_b5c8
+ call GetPointerToDeckName
+ call Func_b611
+ ld b, $54
+ call EnableSRAM
+ call CopyNBytesFromHLToDE
+ call DisableSRAM
+ call Func_b379
+ call Func_b704
+ call Func_b545
+ ld a, [wd086]
+ ld hl, Data_b6fb
+ call Func_9a6d
+ call Func_9c3a
+ call GetPointerToDeckName
+ call EnableSRAM
+ call Func_9253
+ call DisableSRAM
+ xor a
+ ld [wTxRam2 + 0], a
+ ld [wTxRam2 + 1], a
+ ldtx hl, SavedTheConfigurationForText
+ call DrawWideTextBox_WaitForInput
+ scf
+ ret
+; 0xb609
+
+DeckMachineMenuParameters: ; b609 (2:7609)
+ db 1, 2 ; cursor x, cursor y
+ db 3 ; y displacement between items
+ db 4 ; number of items
+ db SYM_CURSOR_R ; cursor tile number
+ db SYM_SPACE ; tile behind cursor
+ dw NULL ; function pointer if non-0
+; 0xb611
Func_b611: ; b611 (2:7611)
push af
@@ -5712,13 +8513,54 @@ Func_b611: ; b611 (2:7611)
; 0xb625
Func_b625: ; b625 (2:7625)
- INCROM $b625, $b644
+ push bc
+ call Func_b644
+ call Func_a3ca
+ call Func_b664
+ pop bc
+ sla b
+ ld c, b
+ ld b, $00
+ ld hl, wd00d
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld bc, $18
+ add hl, bc
+ call Func_b675
+ ret
+; 0xb644
+; switches to SRAM bank 0 and stores current SRAM bank in wd0a4
+; skips if current SRAM bank is already 0
Func_b644: ; b644 (2:7644)
- INCROM $b644, $b653
+ push af
+ ldh a, [hBankSRAM]
+ or a
+ jr z, .skip
+ ld [wd0a4], a
+ xor a
+ call BankswitchSRAM
+.skip
+ pop af
+ ret
+; 0xb653
+; switches to SRAM bank 1 and stores current SRAM bank in wd0a4
+; skips if current SRAM bank is already 1
Func_b653: ; b653 (2:7653)
- INCROM $b653, $b664
+ push af
+ ldh a, [hBankSRAM]
+ cp BANK("SRAM1")
+ jr z, .skip
+ ld [wd0a4], a
+ ld a, BANK("SRAM1")
+ call BankswitchSRAM
+.skip
+ pop af
+ ret
+; 0xb664
Func_b664: ; b664 (2:7664)
push af
@@ -5735,19 +8577,522 @@ Func_b664: ; b664 (2:7664)
ret
; 0xb675
- INCROM $b675, $b6ca
+Func_b675: ; b675 (2:7675)
+ call EnableSRAM
+ ld de, wTempCardCollection
+ ld b, 0
+.asm_b67d
+ inc b
+ ld a, DECK_SIZE
+ cp b
+ jr c, .no_carry
+ ld a, [hli]
+ push hl
+ ld l, a
+ ld h, $00
+ add hl, de
+ ld a, [hl]
+ or a
+ jr z, .set_carry
+ cp $80
+ jr z, .set_carry
+ dec a
+ ld [hl], a
+ pop hl
+ jr .asm_b67d
+
+.set_carry
+ pop hl
+ call DisableSRAM
+ scf
+ ret
+
+.no_carry
+ call DisableSRAM
+ or a
+ ret
+; 0xb6a1
+
+Func_b6a1: ; b6a1 (2:76a1)
+ ld hl, sDeck1Cards
+ ld a, [hl]
+ or a
+ jr nz, .check_deck_2
+ xor a
+ ret
+
+.check_deck_2
+ ld hl, sDeck2Cards
+ ld a, [hl]
+ or a
+ jr nz, .check_deck_3
+ ld a, $01
+ ret
+
+.check_deck_3
+ ld hl, sDeck3Cards
+ ld a, [hl]
+ or a
+ jr nz, .check_deck_4
+ ld a, $02
+ ret
+
+.check_deck_4
+ ld hl, sDeck4Cards
+ ld a, [hl]
+ or a
+ jr nz, .set_carry
+ ld a, $03
+ ret
+
+.set_carry
+ scf
+ ret
+; 0xb6ca
Func_b6ca: ; b6ca (2:76ca)
- INCROM $b6ca, $b6fb
+ ldtx hl, DoYouReallyWishToDeleteText
+ call YesOrNoMenuWithText
+ jr c, .no
+ call Func_b611
+ ld l, e
+ ld h, d
+ push hl
+ call EnableSRAM
+ call Func_9253
+ pop hl
+ ld a, $54
+ call ClearNBytesFromHL
+ call DisableSRAM
+ xor a
+ ld [wTxRam2 + 0], a
+ ld [wTxRam2 + 1], a
+ ldtx hl, DeletedTheConfigurationForText
+ call DrawWideTextBox_WaitForInput
+ or a
+ ret
+
+.no
+ ld a, [wNamingScreenCursorY]
+ scf
+ ret
+; 0xb6fb
Data_b6fb: ; b6fb (2:76fb)
db $01, $02, $02, $00, $05, $0f, $00, $00, $00
Func_b704: ; b704 (2:7704)
- INCROM $b704, $b7c6
+ ld a, [wcea1]
+ or a
+ jr z, .asm_b70e
+ ld a, SYM_CURSOR_U
+ jr .got_tile_1
+.asm_b70e
+ ld a, SYM_BOX_RIGHT
+.got_tile_1
+ lb bc, 19, 1
+ call WriteByteToBGMap0
+
+ ld a, [wcea1]
+ add $06
+ ld b, a
+ ld a, [wd0a5]
+ cp b
+ jr c, .asm_b72a
+ xor a
+ ld [wcecd], a
+ ld a, SYM_CURSOR_D
+ jr .got_tile_2
+.asm_b72a
+ ld a, $01
+ ld [wcecd], a
+ ld a, SYM_BOX_RIGHT
+.got_tile_2
+ lb bc, 19, 11
+ call WriteByteToBGMap0
+ ret
+; 0xb738
+
+Func_b738: ; b738 (2:7738)
+ ldtx hl, YouMayOnlyCarry4DecksText
+ call DrawWideTextBox_WaitForInput
+ call Func_b644
+ ld a, $ff
+ call Func_9168
+ xor a
+.init_menu_params
+ ld hl, DeckMachineMenuParameters
+ call InitializeMenuParameters
+ ldtx hl, ChooseADeckToDismantleText
+ call DrawWideTextBox_PrintText
+.loop_input
+ call DoFrame
+ call Func_8dea
+ jr c, .init_menu_params
+ call HandleMenuInput
+ jp nc, .loop_input ; should be jr
+ ldh a, [hCurMenuItem]
+ cp $ff
+ jr nz, .asm_b76c
+ call Func_b664
+ scf
+ ret
+
+.asm_b76c
+ ld [wceb1], a
+ ldtx hl, DismantleThisDeckText
+ call YesOrNoMenuWithText
+ jr nc, .dismantle
+ ld a, [wceb1]
+ jr .init_menu_params
+
+.dismantle
+ call GetPointerToDeckName
+ push hl
+ ld de, wd089
+ call EnableSRAM
+ call CopyListFromHLToDE
+ pop hl
+ push hl
+ ld bc, $18
+ add hl, bc
+ call Func_9152
+ pop hl
+ ld a, $54
+ call ClearNBytesFromHL
+ call DisableSRAM
+ ld a, $ff
+ call Func_9168
+ ld a, [wceb1]
+ ld hl, DeckMachineMenuParameters
+ call InitializeMenuParameters
+ call DrawCursor2
+ call Func_b664
+ ld hl, wd089
+ call Func_9253
+ xor a
+ ld [wTxRam2 + 0], a
+ ld [wTxRam2 + 1], a
+ ld hl, $26a
+ call DrawWideTextBox_WaitForInput
+ ld a, [wceb1]
+ ret
+; 0xb7c6
Func_b7c6: ; b7c6 (2:77c6)
- INCROM $b7c6, $ba04
+ ld a, [wd088]
+ ld b, a
+ push bc
+ ld a, $00
+ call Func_b625
+ pop bc
+ jr nc, .asm_b7f3
+ ld a, $ff
+ call Func_b625
+ jr c, .asm_b7ea
+ ldtx hl, ThisDeckCanOnlyBeBuiltIfYouDismantleText
+ call DrawWideTextBox_WaitForInput
+ call Func_b87d
+ jr nc, .asm_b7f3
+
+.asm_b7e5
+ ld a, [wNamingScreenCursorY]
+ scf
+ ret
+
+.asm_b7ea
+ ldtx hl, YouDoNotOwnAllCardsNeededToBuildThisDeckText
+ call DrawWideTextBox_WaitForInput
+ jp Func_b8f4
+
+.asm_b7f3
+ call EnableSRAM
+ call Func_b644
+ call Func_b6a1
+ call Func_b664
+ call DisableSRAM
+ jr nc, .asm_b80b
+ call Func_b738
+ jr nc, .asm_b80b
+ scf
+ ret
+
+.asm_b80b
+ ld [wd08a + $17], a
+ ld a, [wd088]
+ ld c, a
+ ld b, $00
+ sla c
+ ld hl, wd00d
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, wc000
+ ld b, $54
+ call EnableSRAM
+ call CopyNBytesFromHLToDE
+
+ ld hl, wc000 + $18
+ call Func_b644
+ call Func_910a
+ ld a, [wd08a + $17]
+ ld l, a
+ ld h, $54
+ call HtimesL
+ ld bc, sDeck1Name
+ add hl, bc
+ ld d, h
+ ld e, l
+ ld hl, wc000
+ ld b, $54
+ call CopyNBytesFromHLToDE
+ call DisableSRAM
+
+ ld a, $ff
+ call Func_9168
+ ld a, [wd08a + $17]
+ ld [wceb1], a
+ ld hl, DeckMachineMenuParameters
+ call InitializeMenuParameters
+ call DrawCursor2
+ call GetPointerToDeckName
+ call EnableSRAM
+ call Func_9253
+ call DisableSRAM
+ call Func_b664
+
+ xor a
+ ld [wTxRam2 + 0], a
+ ld [wTxRam2 + 1], a
+ ldtx hl, BuiltDeckText
+ call DrawWideTextBox_WaitForInput
+ scf
+ ret
+; 0xb87d
+
+Func_b87d: ; b87d (2:787d)
+ farcall Func_1ba9a
+ call Func_b644
+ call Func_9168
+ ldtx hl, DismantleTheseDecksText
+ call YesOrNoMenuWithText
+ jr nc, .yes
+; no
+ call Func_b664
+ scf
+ ret
+
+.yes
+ call EnableSRAM
+ ld a, [wd0a6]
+ bit 0, a
+ jr z, .asm_b8a3
+ ld a, $00
+ call .Func_b8db
+.asm_b8a3
+ ld a, [wd0a6]
+ bit 1, a
+ jr z, .asm_b8af
+ ld a, $01
+ call .Func_b8db
+.asm_b8af
+ ld a, [wd0a6]
+ bit 2, a
+ jr z, .asm_b8bb
+ ld a, $02
+ call .Func_b8db
+.asm_b8bb
+ ld a, [wd0a6]
+ bit 3, a
+ jr z, .asm_b8c7
+ ld a, $03
+ call .Func_b8db
+.asm_b8c7
+ call DisableSRAM
+ ld a, [wd0a6]
+ call Func_9168
+ call Func_b664
+ ldtx hl, DismantledTheDeckText
+ call DrawWideTextBox_WaitForInput
+ or a
+ ret
+
+.Func_b8db
+ ld l, a
+ ld h, $54
+ call HtimesL
+ ld bc, sDeck1Name
+ add hl, bc
+ push hl
+ ld bc, $18
+ add hl, bc
+ call Func_9152
+ pop hl
+ ld a, $54
+ call ClearNBytesFromHL
+ ret
+; 0xb8f4
+
+Func_b8f4: ; b8f4 (2:78f4)
+ ld a, [wd088]
+ ld [wceb1], a
+ call Func_b611
+ ld hl, $18
+ add hl, de
+ ld de, wcf17
+ ld b, DECK_SIZE
+ call EnableSRAM
+ call CopyNBytesFromHLToDE
+ call DisableSRAM
+ xor a
+ ld [wcf53], a
+ call Func_a028
+ call Func_a06e
+ ld a, $ff
+ call Func_b644
+ call Func_a3ca
+ call Func_b664
+ ld hl, wTempHandCardList
+ ld de, wHandTempList
+.asm_b92a
+ ld a, [hli]
+ or a
+ jr z, .asm_b946
+ ld b, a
+ push bc
+ push de
+ push hl
+ ld hl, wcf17
+ call Func_b960
+ pop hl
+ pop de
+ pop bc
+ jr nc, .asm_b92a
+ ld c, a
+ ld a, b
+.asm_b93f
+ ld [de], a
+ inc de
+ dec c
+ jr nz, .asm_b93f
+ jr .asm_b92a
+.asm_b946
+ xor a
+ ld [de], a
+ ldtx bc, TheseCardsAreNeededToBuildThisDeckText
+ ld hl, wcfda
+ ld a, c
+ ld [hli], a
+ ld a, b
+ ld [hl], a
+ call Func_b611
+ ld h, d
+ ld l, e
+ ld de, wHandTempList
+ call Func_adfe
+ jp Func_b7c6.asm_b7e5
+; 0xb960
+
+Func_b960: ; b960 (2:7960)
+ call .Func_b976
+ ld hl, wc000
+ push de
+ call .Func_b986
+ ld a, e
+ pop de
+ cp d
+ jr c, .asm_b971
+ or a
+ ret
+.asm_b971
+ ld e, a
+ ld a, d
+ sub e
+ scf
+ ret z
+
+.Func_b976
+ push af
+ ld e, a
+ ld d, $00
+.loop
+ ld a, [hli]
+ or a
+ jr z, .asm_b984
+ cp e
+ jr nz, .loop
+ inc d
+ jr .loop
+.asm_b984
+ pop af
+ ret
+
+.Func_b986
+ push af
+ ld e, a
+ ld d, $00
+ add hl, de
+ ld a, [hl]
+ and $7f
+ ld e, a
+ pop af
+ ret
+; 0xb991
+
+PrinterMenu_DeckConfiguration: ; b991 (2:7991)
+ xor a
+ ld [wcea1], a
+ call Func_b379
+ ld a, DECK_SIZE
+ ld [wd0a5], a
+
+ xor a
+.asm_b99e
+ ld hl, Data_b6fb
+ call Func_9a6d
+ call Func_b704
+ call Func_b545
+ ld hl, WaitForVBlank.lcd_off
+ call DrawWideTextBox_PrintText
+ ld de, WaitForVBlank.lcd_off
+ call Func_b285
+.asm_b9b6
+ call Func_b29f
+ jr c, .asm_b99e
+ cp $ff
+ ret z
+
+ ld b, a
+ ld a, [wcea1]
+ add b
+ ld [wd088], a
+ call Func_b35b
+ jr c, .asm_b9b6
+ call DrawWideTextBox
+ ldtx hl, PrintThisDeckText
+ call YesOrNoMenuWithText
+ jr c, .no
+ call Func_b611
+ ld hl, $18
+ add hl, de
+ ld de, wcf17
+ ld b, DECK_SIZE
+ call EnableSRAM
+ call CopyNBytesFromHLToDE
+ call DisableSRAM
+ xor a
+ ld [wcf53], a
+ call Func_a028
+ ld a, [wd088]
+ bank1call Func_7580
+ call Func_b379
+
+.no
+ ld a, [wd086]
+ ld [wNamingScreenCursorY], a
+ jp .asm_b99e
+; 0xba04
Func_ba04: ; ba04 (2:7a04)
ld a, [wd0a9]
@@ -5771,13 +9116,13 @@ Func_ba04: ; ba04 (2:7a04)
; fallthrough
Func_ba25: ; ba25 (2:7a25)
- ld hl, Func_bb6e
+ ld hl, .MenuParameters
call InitializeMenuParameters
ldtx hl, PleaseSelectDeckText
call DrawWideTextBox_PrintText
ld a, $5
ld [wNamingScreenKeyboardHeight], a
- ld hl, Unknown_b3fe
+ ld hl, Func_b3fe
ld d, h
ld a, l
ld hl, wcece
@@ -5934,11 +9279,20 @@ Func_ba25: ; ba25 (2:7a25)
ld a, [wd086]
jp Func_ba25
-Func_bb6e: ; bb6e (2:7b6e)
- INCROM $bb6e, $bb76
+.MenuParameters
+ db 1, 2 ; cursor x, cursor y
+ db 2 ; y displacement between items
+ db 5 ; number of items
+ db SYM_CURSOR_R ; cursor tile number
+ db SYM_SPACE ; tile behind cursor
+ dw NULL ; function pointer if non-0
+; 0xbb76
Data_bb76: ; bb76 (2:7b76)
- INCROM $bb76, $bb83
+ textitem 2, 14, BuildADeckText
+ textitem 12, 14, CancelText
+ textitem 2, 16, ReadTheInstructionsText
+ db $ff
Data_bb83: ; bb83 (2:7b83)
tx FightingMachineText
@@ -5953,7 +9307,59 @@ Data_bb83: ; bb83 (2:7b83)
tx LegendaryMachineText
Func_bb97: ; bb97 (2:7b97)
- INCROM $bb97, $bc04
+ call Set_OBJ_8x8
+ xor a
+ ld [wTileMapFill], a
+ call ZeroObjectPositions
+ call EmptyScreen
+ ld a, $01
+ ld [wVBlankOAMCopyToggle], a
+ call LoadSymbolsFont
+ call LoadDuelCardSymbolTiles
+ bank1call SetDefaultPalettes
+ lb de, $3c, $ff
+ call SetupText
+ lb de, 0, 0
+ lb bc, 20, 13
+ call DrawRegularTextBox
+ ld de, $100
+ call InitTextPrinting
+ ld hl, wd0a2
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ call ProcessTextFromID
+ call Func_b653
+ farcall Func_1ba14
+ call Func_bbe4
+ call Func_b3e5
+ call Func_b644
+ call EnableLCD
+ ret
+; 0xbbe4
+
+Func_bbe4: ; bbe4 (2:7be4)
+ ld a, $0a
+ ld hl, wd00d
+ call ClearNBytesFromHL
+ ld de, wd00d
+ ld hl, s0a350
+ ld bc, $54
+ ld a, $05
+.loop
+ push af
+ ld a, l
+ ld [de], a
+ inc de
+ ld a, h
+ ld [de], a
+ inc de
+ add hl, bc
+ pop af
+ dec a
+ jr nz, .loop
+ ret
+; 0xbc04
Func_bc04: ; bc04 (2:7c04)
xor a
diff --git a/src/engine/bank03.asm b/src/engine/bank03.asm
index d2065ae..fa60650 100644
--- a/src/engine/bank03.asm
+++ b/src/engine/bank03.asm
@@ -1272,7 +1272,7 @@ Func_c877: ; c877 (3:4877)
ldh [hSCY], a
call Set_OBJ_8x16
farcall Func_1288c
- farcall Func_ad51
+ farcall HandlePrinterMenu
call Set_OBJ_8x8
call WhiteOutDMGPals
call DoFrameIfLCDEnabled
diff --git a/src/engine/bank06.asm b/src/engine/bank06.asm
index a03f631..c52a4a4 100644
--- a/src/engine/bank06.asm
+++ b/src/engine/bank06.asm
@@ -2087,8 +2087,8 @@ Func_1996e: ; 1996e (6:596e)
add hl, de
dec c
jr nz, .asm_199b2
- ld a, $2
- ld [s0a003], a
+ ld a, 2
+ ld [sPrinterContrastLevel], a
ld a, $2
ld [sTextSpeed], a
ld [wTextSpeed], a
@@ -2673,6 +2673,7 @@ CalculateNameHash: ; 19e32 (6:5e32)
ret
; 0x19e42
+Func_19e42: ; 19e42 (6:5e42)
INCROM $19e42, $19e5a
; shows message on screen depending on wPrinterStatus
@@ -2955,7 +2956,7 @@ Func_1a035: ; 1a035 (6:6035)
ld a, $10
ld [wce9b], a
call EnableSRAM
- ld a, [s0a003]
+ ld a, [sPrinterContrastLevel]
ld [wce99], a
call DisableSRAM
ldh a, [hBankSRAM]
@@ -3140,7 +3141,13 @@ Func_1a138: ; 1a138 (6:6138)
db $00, $20, $40, $60, $7f
; 0x1a14b
- INCROM $1a14b, $1a435
+ INCROM $1a14b, $1a162
+
+Func_1a162: ; 1a162 (6:6162)
+ INCROM $1a162, $1a270
+
+Func_1a270: ; 1a270 (6:6270)
+ INCROM $1a270, $1a435
; compresses $28 tiles in sGfxBuffer5
; and writes it in sGfxBuffer5 + $28 tiles.
@@ -4917,11 +4924,9 @@ KeyboardData_Deck: ; 1b019 (6:7019)
; unknown data.
; needs analyze.
; (6:70d6)
- INCROM $1b0d6, $1ba12
+ INCROM $1b0d6, $1ba14
-Func_1ba12: ; 1ba12 (6:7a12)
- push af
- ld [bc], a
+Func_1ba14: ; 1ba14 (6:7a14)
call EnableSRAM
ld a, [wd0a9]
ld l, a
diff --git a/src/engine/bank1c.asm b/src/engine/bank1c.asm
index 1c68fb5..e7eb5e5 100644
--- a/src/engine/bank1c.asm
+++ b/src/engine/bank1c.asm
@@ -430,7 +430,7 @@ ENDM
border_medal_tile v0Tiles1 + $23a, $6a, $10
border_medal_tile v0Tiles1 + $23c, $6b, $10
-; FIGHTING_MEDAL
+; PSYCHIC_MEDAL
border_medal_tile v0Tiles1 + $2b8, $7e, $10
border_medal_tile v0Tiles1 + $2ba, $7f, $10
border_medal_tile v0Tiles1 + $2bc, $80, $10
@@ -452,7 +452,7 @@ ENDM
border_medal_tile v0Tiles1 + $43a, $7c, $10
border_medal_tile v0Tiles1 + $43c, $7d, $10
-; PSYCHIC_MEDAL
+; FIGHTING_MEDAL
border_medal_tile v0Tiles1 + $4b8, $6c, $10
border_medal_tile v0Tiles1 + $4ba, $6d, $10
border_medal_tile v0Tiles1 + $4bc, $6e, $10
diff --git a/src/engine/effect_functions.asm b/src/engine/effect_functions.asm
index b8b4914..e999242 100644
--- a/src/engine/effect_functions.asm
+++ b/src/engine/effect_functions.asm
@@ -6660,7 +6660,7 @@ Peek_SelectEffect: ; 2e2b4 (b:62b4)
call SwapTurn
ldh a, [hAIPkmnPowerEffectParam]
xor $80
- call Func_30f9
+ call DrawAIPeekScreen
call SwapTurn
ldtx hl, CardPeekWasUsedOnText
call DrawWideTextBox_WaitForInput
diff --git a/src/engine/home.asm b/src/engine/home.asm
index b848287..05a5cdc 100644
--- a/src/engine/home.asm
+++ b/src/engine/home.asm
@@ -9315,34 +9315,35 @@ Func_30e7: ; 30e7 (0:30e7)
ld a, b
ret
-Func_30f9: ; 30f9 (0:30f9)
+DrawAIPeekScreen: ; 30f9 (0:30f9)
ld b, a
ldh a, [hBankROM]
push af
- ld a, BANK(Func_8932)
+ ld a, BANK(_DrawAIPeekScreen)
call BankswitchROM
- call Func_8932
+ call _DrawAIPeekScreen
pop af
call BankswitchROM
ret
-Func_310a: ; 310a (0:310a)
- ld [wce59], a
+; a = number of prize cards for player to select to take
+SelectPrizeCards: ; 310a (0:310a)
+ ld [wNumberOfPrizeCardsToSelect], a
ldh a, [hBankROM]
push af
- ld a, BANK(Func_8aaa)
+ ld a, BANK(_SelectPrizeCards)
call BankswitchROM
- call Func_8aaa
+ call _SelectPrizeCards
pop af
call BankswitchROM
ret
-Func_311d: ; 311d (0:311d)
+DrawPlayAreaToPlacePrizeCards: ; 311d (0:311d)
ldh a, [hBankROM]
push af
- ld a, BANK(Func_8b85)
+ ld a, BANK(_DrawPlayAreaToPlacePrizeCards)
call BankswitchROM
- call Func_8b85
+ call _DrawPlayAreaToPlacePrizeCards
pop af
call BankswitchROM
ret
diff --git a/src/hram.asm b/src/hram.asm
index fee69a9..6877f9c 100644
--- a/src/hram.asm
+++ b/src/hram.asm
@@ -171,6 +171,7 @@ hCurSelectionItem:: ; ffb2
hffb3:: ; ffb3
ds $1
+hffb4:: ; ffb4
ds $1
hffb5:: ; ffb5
diff --git a/src/sram.asm b/src/sram.asm
index 481c8e4..cb8d7d2 100644
--- a/src/sram.asm
+++ b/src/sram.asm
@@ -3,7 +3,9 @@ SECTION "SRAM0", SRAM
s0a000:: ; a000
ds $3
-s0a003:: ; a003
+; what was the last option selected by the player
+; for the printer contrast level (0 ~ 4)
+sPrinterContrastLevel:: ; a003
ds $1
s0a004:: ; a004
ds $1
diff --git a/src/text/text2.asm b/src/text/text2.asm
index 0e0c083..1cba1e0 100644
--- a/src/text/text2.asm
+++ b/src/text/text2.asm
@@ -1607,15 +1607,15 @@ PleaseSelectDeckText: ; 3ba0d (e:7a0d)
text "Please select deck."
done
-Text0225: ; 3ba22 (e:7a22)
+ModifyDeckText: ; 3ba22 (e:7a22)
text "Modify deck"
done
-Text0226: ; 3ba2f (e:7a2f)
+ChangeNameText: ; 3ba2f (e:7a2f)
text "Change name"
done
-Text0227: ; 3ba3c (e:7a3c)
+SelectDeckText: ; 3ba3c (e:7a3c)
text "Select deck"
done
@@ -1771,7 +1771,7 @@ WhichCardWouldYouLikeToSeeText: ; 3bce5 (e:7ce5)
text "Which card would you like to see?"
done
-Text024d: ; 3bd08 (e:7d08)
+PleaseChooseAPrizeText: ; 3bd08 (e:7d08)
text "Please choose a Prize."
done
@@ -1792,31 +1792,31 @@ EmptyLineText: ; 3bd42 (e:7d42)
textfw0 " ", " ", " ", " ", " ", " ", " ", " ", " "
done
-Text0252: ; 3bd55 (e:7d55)
+BoosterPackTitleText: ; 3bd55 (e:7d55)
text "Booster Pack"
done
-Text0253: ; 3bd63 (e:7d63)
+Item1ColosseumText: ; 3bd63 (e:7d63)
text "1. Colosseum"
done
-Text0254: ; 3bd71 (e:7d71)
+Item2EvolutionText: ; 3bd71 (e:7d71)
text "2. Evolution"
done
-Text0255: ; 3bd7f (e:7d7f)
+Item3MysteryText: ; 3bd7f (e:7d7f)
text "3. Mystery"
done
-Text0256: ; 3bd8b (e:7d8b)
+Item4LaboratoryText: ; 3bd8b (e:7d8b)
text "4. Laboratory"
done
-Text0257: ; 3bd9a (e:7d9a)
+Item5PromotionalCardText: ; 3bd9a (e:7d9a)
text "5. Promotional Card"
done
-Text0258: ; 3bdaf (e:7daf)
+ViewWhichCardFileText: ; 3bdaf (e:7daf)
text "View which Card File?"
done
@@ -1824,7 +1824,7 @@ Text0259: ; 3bdc6 (e:7dc6)
textfw0 "-", "-", "-", "-", "-", "-", "-", "-", "-", "-"
done
-Text025a: ; 3bdd1 (e:7dd1)
+SCardsText: ; 3bdd1 (e:7dd1)
text "'s Cards"
done
@@ -1836,19 +1836,19 @@ DeckSaveMachineText: ; 3bdea (e:7dea)
text " Deck Save Machine "
done
-Text025d: ; 3be02 (e:7e02)
+SaveADeckText: ; 3be02 (e:7e02)
text "Save a Deck"
done
-Text025e: ; 3be0f (e:7e0f)
+DeleteADeckText: ; 3be0f (e:7e0f)
text "Delete a Deck"
done
-Text025f: ; 3be1e (e:7e1e)
+BuildADeckText: ; 3be1e (e:7e1e)
text "Build a Deck"
done
-Text0260: ; 3be2c (e:7e2c)
+ChooseADeckToSaveText: ; 3be2c (e:7e2c)
text "Choose a Deck to Save."
done
@@ -1861,7 +1861,7 @@ Text0262: ; 3be7d (e:7e7d)
text "for"
done
-Text0263: ; 3be82 (e:7e82)
+SavedTheConfigurationForText: ; 3be82 (e:7e82)
text "Saved the configuration for"
line ""
text "<RAMTEXT>! "
@@ -1876,21 +1876,21 @@ Text0265: ; 3beb7 (e:7eb7)
line "configuration to delete."
done
-Text0266: ; 3bee7 (e:7ee7)
+DoYouReallyWishToDeleteText: ; 3bee7 (e:7ee7)
text "Do you really wish to delete?"
done
-Text0267: ; 3bf06 (e:7f06)
+DeletedTheConfigurationForText: ; 3bf06 (e:7f06)
text "Deleted the configuration for"
line ""
text "<RAMTEXT>."
done
-Text0268: ; 3bf29 (e:7f29)
+YouMayOnlyCarry4DecksText: ; 3bf29 (e:7f29)
text "You may only carry 4 Decks!"
done
-Text0269: ; 3bf46 (e:7f46)
+ChooseADeckToDismantleText: ; 3bf46 (e:7f46)
text "Choose a deck to dismantle."
done
@@ -1905,7 +1905,7 @@ Text026b: ; 3bf73 (e:7f73)
line "you wish to Build."
done
-Text026c: ; 3bf9e (e:7f9e)
+ThisDeckCanOnlyBeBuiltIfYouDismantleText: ; 3bf9e (e:7f9e)
text "This Deck can only be built if"
line "you dismantle another Deck."
done
diff --git a/src/text/text3.asm b/src/text/text3.asm
index 3d32c15..bf23e60 100644
--- a/src/text/text3.asm
+++ b/src/text/text3.asm
@@ -1,23 +1,23 @@
-Text026d: ; 3c000 (f:4000)
+YouDoNotOwnAllCardsNeededToBuildThisDeckText: ; 3c000 (f:4000)
text "You do not own all cards needed"
line "to build this Deck."
done
-Text026e: ; 3c035 (f:4035)
+BuiltDeckText: ; 3c035 (f:4035)
text "Built"
line "<RAMTEXT>"
done
-Text026f: ; 3c03e (f:403e)
+TheseCardsAreNeededToBuildThisDeckText: ; 3c03e (f:403e)
text "These cards are needed"
line "to build this Deck:"
done
-Text0270: ; 3c06a (f:406a)
+DismantleTheseDecksText: ; 3c06a (f:406a)
text "Dismantle these Decks?"
done
-Text0271: ; 3c082 (f:4082)
+DismantledTheDeckText: ; 3c082 (f:4082)
text "Dismantled the Deck."
done
@@ -25,11 +25,11 @@ OKIfFileDeletedText: ; 3c098 (f:4098)
text "OK if this file is deleted?"
done
-Text0273: ; 3c0b5 (f:40b5)
+ReadTheInstructionsText: ; 3c0b5 (f:40b5)
text "Read the Instructions"
done
-Text0274: ; 3c0cc (f:40cc)
+PrintThisCardYesNoText: ; 3c0cc (f:40cc)
text "Print this card?"
line " Yes No"
done
@@ -39,7 +39,7 @@ Text0275: ; 3c0ef (f:40ef)
line "to print."
done
-Text0276: ; 3c11d (f:411d)
+PrintThisDeckText: ; 3c11d (f:411d)
text "Print this Deck?"
done
@@ -48,7 +48,7 @@ Text0277: ; 3c12f (f:412f)
line " Yes No"
done
-Text0278: ; 3c156 (f:4156)
+PrintMenuItemsText: ; 3c156 (f:4156)
text "Pokémon Cards"
line "Deck Configuration"
line "Card List"
@@ -56,16 +56,16 @@ Text0278: ; 3c156 (f:4156)
line "Quit Print"
done
-Text0279: ; 3c19b (f:419b)
+WhatWouldYouLikeToPrintText: ; 3c19b (f:419b)
text "What would you like to print?"
done
-Text027a: ; 3c1ba (f:41ba)
+PleaseSetTheContrastText: ; 3c1ba (f:41ba)
text "Please set the contrast:"
line " Light 1 2 3 4 5 Dark"
done
-Text027b: ; 3c1f7 (f:41f7)
+PleaseMakeSureToTurnGameBoyPrinterOffText: ; 3c1f7 (f:41f7)
text "Please make sure to turn"
line "the Game Boy Printer OFF."
done
diff --git a/src/text/text_offsets.asm b/src/text/text_offsets.asm
index b8a1dbf..02d028b 100644
--- a/src/text/text_offsets.asm
+++ b/src/text/text_offsets.asm
@@ -550,9 +550,9 @@ TextOffsets:: ; 34000 (d:4000)
textpointer DeckNameKeyboardText ; 0x0222
textpointer NewDeckText ; 0x0223
textpointer PleaseSelectDeckText ; 0x0224
- textpointer Text0225 ; 0x0225
- textpointer Text0226 ; 0x0226
- textpointer Text0227 ; 0x0227
+ textpointer ModifyDeckText ; 0x0225
+ textpointer ChangeNameText ; 0x0226
+ textpointer SelectDeckText ; 0x0227
textpointer CancelText ; 0x0228
textpointer Text0229 ; 0x0229
textpointer ChosenAsDuelingDeckText ; 0x022a
@@ -590,53 +590,53 @@ TextOffsets:: ; 34000 (d:4000)
textpointer InPlayAreaText ; 0x024a
textpointer GlossaryText ; 0x024b
textpointer WhichCardWouldYouLikeToSeeText ; 0x024c
- textpointer Text024d ; 0x024d
+ textpointer PleaseChooseAPrizeText ; 0x024d
textpointer HandText_2 ; 0x024e
textpointer DuelistHandText_2 ; 0x024f
textpointer DuelistDiscardPileText ; 0x0250
textpointer EmptyLineText ; 0x0251
- textpointer Text0252 ; 0x0252
- textpointer Text0253 ; 0x0253
- textpointer Text0254 ; 0x0254
- textpointer Text0255 ; 0x0255
- textpointer Text0256 ; 0x0256
- textpointer Text0257 ; 0x0257
- textpointer Text0258 ; 0x0258
+ textpointer BoosterPackTitleText ; 0x0252
+ textpointer Item1ColosseumText ; 0x0253
+ textpointer Item2EvolutionText ; 0x0254
+ textpointer Item3MysteryText ; 0x0255
+ textpointer Item4LaboratoryText ; 0x0256
+ textpointer Item5PromotionalCardText ; 0x0257
+ textpointer ViewWhichCardFileText ; 0x0258
textpointer Text0259 ; 0x0259
- textpointer Text025a ; 0x025a
+ textpointer SCardsText ; 0x025a
textpointer Text025b ; 0x025b
textpointer DeckSaveMachineText ; 0x025c
- textpointer Text025d ; 0x025d
- textpointer Text025e ; 0x025e
- textpointer Text025f ; 0x025f
- textpointer Text0260 ; 0x0260
+ textpointer SaveADeckText ; 0x025d
+ textpointer DeleteADeckText ; 0x025e
+ textpointer BuildADeckText ; 0x025f
+ textpointer ChooseADeckToSaveText ; 0x0260
textpointer Text0261 ; 0x0261
textpointer Text0262 ; 0x0262
- textpointer Text0263 ; 0x0263
+ textpointer SavedTheConfigurationForText ; 0x0263
textpointer Text0264 ; 0x0264
textpointer Text0265 ; 0x0265
- textpointer Text0266 ; 0x0266
- textpointer Text0267 ; 0x0267
- textpointer Text0268 ; 0x0268
- textpointer Text0269 ; 0x0269
+ textpointer DoYouReallyWishToDeleteText ; 0x0266
+ textpointer DeletedTheConfigurationForText ; 0x0267
+ textpointer YouMayOnlyCarry4DecksText ; 0x0268
+ textpointer ChooseADeckToDismantleText ; 0x0269
textpointer Text026a ; 0x026a
textpointer Text026b ; 0x026b
- textpointer Text026c ; 0x026c
- textpointer Text026d ; 0x026d
- textpointer Text026e ; 0x026e
- textpointer Text026f ; 0x026f
- textpointer Text0270 ; 0x0270
- textpointer Text0271 ; 0x0271
+ textpointer ThisDeckCanOnlyBeBuiltIfYouDismantleText ; 0x026c
+ textpointer YouDoNotOwnAllCardsNeededToBuildThisDeckText ; 0x026d
+ textpointer BuiltDeckText ; 0x026e
+ textpointer TheseCardsAreNeededToBuildThisDeckText ; 0x026f
+ textpointer DismantleTheseDecksText ; 0x0270
+ textpointer DismantledTheDeckText ; 0x0271
textpointer OKIfFileDeletedText ; 0x0272
- textpointer Text0273 ; 0x0273
- textpointer Text0274 ; 0x0274
+ textpointer ReadTheInstructionsText ; 0x0273
+ textpointer PrintThisCardYesNoText ; 0x0274
textpointer Text0275 ; 0x0275
- textpointer Text0276 ; 0x0276
+ textpointer PrintThisDeckText ; 0x0276
textpointer Text0277 ; 0x0277
- textpointer Text0278 ; 0x0278
- textpointer Text0279 ; 0x0279
- textpointer Text027a ; 0x027a
- textpointer Text027b ; 0x027b
+ textpointer PrintMenuItemsText ; 0x0278
+ textpointer WhatWouldYouLikeToPrintText ; 0x0279
+ textpointer PleaseSetTheContrastText ; 0x027a
+ textpointer PleaseMakeSureToTurnGameBoyPrinterOffText ; 0x027b
textpointer ProceduresForSendingCardsText ; 0x027c
textpointer CardSendingProceduresText ; 0x027d
textpointer PleaseReadTheProceduresForSendingCardsText ; 0x027e
diff --git a/src/wram.asm b/src/wram.asm
index 75e1e66..f1b740d 100644
--- a/src/wram.asm
+++ b/src/wram.asm
@@ -1740,9 +1740,14 @@ wInPlayAreaPreservedPosition:: ; ce57
wInPlayAreaTemporaryPosition:: ; ce58
ds $1
-wce59:: ; ce59
+; number of prize cards still to be
+; picked by the player
+wNumberOfPrizeCardsToSelect:: ; ce59
ds $1
+; pointer to a $ff-terminated list
+; of the prize cards selected by the player
+wSelectedPrizeCardListPtr:: ; ce5a
ds $2
wce5c:: ; ce5c
@@ -1917,7 +1922,13 @@ wceaa:: ; ceaa
ds $1
wceab:: ; ceab
- ds $4
+ ds $1
+
+wceac:: ; ceac
+ ds $2
+
+wceae:: ; ceae
+ ds $1
wCheckMenuCursorXPosition:: ; ceaf
ds $1
@@ -1974,7 +1985,9 @@ wced0:: ; ced0
wced2:: ; ced2
ds $1
-wced3:: ; ced3
+; the current filter being used
+; from the CardTypeFilters list
+wCurCardTypeFilter:: ; ced3
ds $1
wced4:: ; ced4
@@ -2012,7 +2025,10 @@ wcf16:: ; cf16
wcf17:: ; cf17
ds DECK_SIZE
- ds $15
+wcf53:: ; cf53
+ ds $1
+
+ ds $14
; stores the count number of cards owned
; can be 0 in the case that a card is not available
@@ -2049,14 +2065,27 @@ wCursorAlternateTile:: ; cfde
wcfdf:: ; cfdf
ds $1
- ds $3
+wcfe0:: ; cfe0
+ ds $1
+
+wcfe1:: ; cfe1
+ ds $1
+
+wcfe2:: ; cfe2
+ ds $1
; a flag indicating whether sfx should be played.
wPlaysSfx:: ; cfe3
ds $1
wcfe4:: ; cfe4
- ds $3
+ ds $1
+
+wcfe5:: ; cfe5
+ ds $1
+
+wcfe6:: ; cfe6
+ ds $1
; a name buffer in the naming screen.
wNamingScreenBuffer:: ; cfe7
@@ -2092,9 +2121,12 @@ wd009:: ; d009
ds $4
wd00d:: ; d00d
- ds $1
+ ds $18
- ds $78
+ ds $60
+
+wd085:: ; d085
+ ds $1
wd086:: ; d086
ds $1