summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/engine/bank01.asm4
-rw-r--r--src/engine/bank06.asm583
-rw-r--r--src/engine/home.asm6
-rw-r--r--src/macros/text.asm4
-rw-r--r--src/text/text3.asm4
-rw-r--r--src/text/text_offsets.asm4
-rw-r--r--src/wram.asm27
7 files changed, 452 insertions, 180 deletions
diff --git a/src/engine/bank01.asm b/src/engine/bank01.asm
index df61f37..e81f95d 100644
--- a/src/engine/bank01.asm
+++ b/src/engine/bank01.asm
@@ -7682,7 +7682,7 @@ Func_741a: ; 741a (1:741a)
xor a
ld [wd4b0], a
push hl
- farcall $6, $4f9c
+ farcall Func_006_4f9c
pop hl
jr .loop
.done
@@ -7770,7 +7770,7 @@ Func_7571: ; 7571 (1:7571)
INCROM $7571, $7576
Func_7576: ; 7576 (1:7576)
- farcall $6, $591f
+ farcall Func_006_591f
ret
; 0x757b
diff --git a/src/engine/bank06.asm b/src/engine/bank06.asm
index 9b1e54d..e6793d5 100644
--- a/src/engine/bank06.asm
+++ b/src/engine/bank06.asm
@@ -152,89 +152,115 @@ _CopyCardNameAndLevel_HalfwidthText:
ret
; 0x180d5
-Func_180d5: ; 180d5 (6:40d5)
+; this function is called when the player
+; is shown the appearance of the play area.
+; it can be called in the command window
+; from either pressing select button
+; or selecting check command.
+HandlePlayAreaView: ; 180d5 (6:40d5)
ld a, $05
- ld [$ce52], a
-.asm_006_40da
+ ld [wPlayAreaCursorPosition], a
+.start
xor a
ld [wcea3], a
farcall $2, $42ce
call EnableLCD
call IsClairvoyanceActive
- jr c, .asm_006_40ef
- ld de, $42db
- jr .asm_006_40f2
-.asm_006_40ef
- ld de, $434b
-.asm_006_40f2
- ld hl, $ce53
+ jr c, .clairvoyance_on
+
+ ld de, Data_006_42db
+ jr .clairvoyance_off
+
+.clairvoyance_on
+ ld de, Data_006_434b
+.clairvoyance_off
+ ld hl, wPlayAreaInputTablePointer
ld [hl], e
inc hl
ld [hl], d
- ld a, [$ce52]
- call .asm_006_4171
-.asm_006_40fe
+ ld a, [wPlayAreaCursorPosition]
+ call PrintCardName_HandlePlayAreaView
+.on_frame
ld a, $01
ld [wVBlankOAMCopyToggle], a
call DoFrame
+
ldh a, [hDPadHeld]
- and $08
- jr nz, .asm_006_4153
- ld a, [wce60]
+ and START
+ jr nz, .selection
+
+ ; if this function's been called from 'select' button,
+ ; wIsFromSelectButton is on.
+ ld a, [wIsFromSelectButton]
or a
- jr z, .asm_006_4118
+ jr z, .handle_input ; if it's from the check command, jump.
+
ldh a, [hDPadHeld]
- and $04
- jr nz, .asm_006_4148
-.asm_006_4118
- ld a, [$ce52]
- ld [$ce58], a
- call Func_006_43bb
- jr c, .asm_006_4139
- ld a, [$ce52]
- cp $10
- jp z, .asm_006_41f8
- cp $11
- jp z, .asm_006_4210
- ld hl, $ce58
+ and SELECT
+ jr nz, .toggle_view
+
+.handle_input
+ ld a, [wPlayAreaCursorPosition]
+ ld [wPlayAreaPreservedPosition_2], a
+ call HandleInput_PlayArea
+ jr c, .pressed
+
+ ld a, [wPlayAreaCursorPosition]
+ cp $10 ; player's hand
+ jp z, ShowPlayerHand_HandlePlayAreaView
+ cp $11 ; opponent's hand
+ jp z, ShowOpponentHand_HandlePlayAreaView
+
+ ; check if the cursor moved.
+ ld hl, wPlayAreaPreservedPosition_2
cp [hl]
- call nz, .asm_006_4171
- jr .asm_006_40fe
-.asm_006_4139
- cp $ff
- jr nz, .asm_006_4153
+ call nz, PrintCardName_HandlePlayAreaView
+
+ jr .on_frame
+
+.pressed
+ cp -1
+ jr nz, .selection
+
+ ; pressed b button.
call Func_006_44bf
lb de, $38, $9f
call SetupText
scf
ret
-.asm_006_4148
+
+.toggle_view
call Func_006_44bf
lb de, $38, $9f
call SetupText
or a
ret
-.asm_006_4153
+
+.selection ; pressed a button or start button.
call Func_006_44bf
lb de, $38, $9f
call SetupText
- ld a, [$ce52]
- ld [$ce57], a
- ld hl, .jump_table
+ ld a, [wPlayAreaCursorPosition]
+ ld [wPlayAreaPreservedPosition], a
+ ld hl, JumpTable_HandlePlayAreaView
call JumpToFunctionInTable
- ld a, [$ce57]
- ld [$ce52], a
- jp .asm_006_40da
-.asm_006_4171 ; 18171 (6:4171)
+ ld a, [wPlayAreaPreservedPosition]
+ ld [wPlayAreaCursorPosition], a
+
+ jp .start
+
+PrintCardName_HandlePlayAreaView: ; 18171 (6:4171)
push af
lb de, 1, 17
call InitTextPrinting
ldtx hl, EmptyLineText
call ProcessTextFromID
+
ld hl, hffb0
ld [hl], $01
ldtx hl, HandText_2
call ProcessTextFromID
+
ld hl, hffb0
ld [hl], $00
lb de, 1, 17
@@ -244,33 +270,40 @@ Func_180d5: ; 180d5 (6:40d5)
ld b, 0
sla a
ld c, a
- add hl, bc
+ add hl, bc ; hl = 0x42bb + 2 * (wPlayAreaCursorPostion)
+
ld a, [hli]
ld h, [hl]
ld l, a
ld a, h
or a
jr nz, .asm_006_41e3
+
ld a, l
cp $06
jr nc, .asm_006_41e3
- ld a, [$ce52]
+
+ ld a, [wPlayAreaCursorPosition]
cp $06
jr nc, .asm_006_41c2
+
ld a, l
add DUELVARS_ARENA_CARD
call GetTurnDuelistVariable
cp -1
ret z
+
call GetCardIDFromDeckIndex
call LoadCardDataToBuffer1_FromCardID
jr .asm_006_41d7
+
.asm_006_41c2
ld a, l
add DUELVARS_ARENA_CARD
call GetNonTurnDuelistVariable
cp -1
ret z
+
call SwapTurn
call GetCardIDFromDeckIndex
call LoadCardDataToBuffer1_FromCardID
@@ -281,18 +314,21 @@ Func_180d5: ; 180d5 (6:40d5)
ld hl, wDefaultText
call ProcessText
ret
+
.asm_006_41e3
- ld a, [$ce52]
+ ld a, [wPlayAreaCursorPosition]
cp $08
jr nc, .asm_006_41ee
call PrintTextNoDelay
ret
+
.asm_006_41ee
call SwapTurn
call PrintTextNoDelay
call SwapTurn
ret
-.asm_006_41f8
+
+ShowPlayerHand_HandlePlayAreaView:
lb de, $38, $9f
call SetupText
ldh a, [hWhoseTurn]
@@ -300,10 +336,11 @@ Func_180d5: ; 180d5 (6:40d5)
bank1call OpenTurnHolderPlayAreaScreen
pop af
ldh [hWhoseTurn], a
- ld a, [$ce57]
- ld [$ce52], a
- jp .asm_006_40da
-.asm_006_4210
+ ld a, [wPlayAreaPreservedPosition]
+ ld [wPlayAreaCursorPosition], a
+ jp HandlePlayAreaView.start
+
+ShowOpponentHand_HandlePlayAreaView:
lb de, $38, $9f
call SetupText
ldh a, [hWhoseTurn]
@@ -311,10 +348,11 @@ Func_180d5: ; 180d5 (6:40d5)
bank1call OpenNonTurnHolderPlayAreaScreen
pop af
ldh [hWhoseTurn], a
- ld a, [$ce57]
- ld [$ce52], a
- jp .asm_006_40da
-.jump_table ; (6:4228)
+ ld a, [wPlayAreaPreservedPosition]
+ ld [wPlayAreaCursorPosition], a
+ jp HandlePlayAreaView.start
+
+JumpTable_HandlePlayAreaView ; (6:4228)
dw Func_006_4248
dw Func_006_4248
dw Func_006_4248
@@ -333,7 +371,7 @@ Func_180d5: ; 180d5 (6:40d5)
dw Func_006_426a
Func_006_4248:
- ld a, [$ce52]
+ ld a, [wPlayAreaCursorPosition]
inc a
cp PLAY_AREA_BENCH_5 + $01
jr nz, .asm_006_4251
@@ -352,7 +390,7 @@ Func_006_4248:
ret
Func_006_426a:
- ld a, [$ce52]
+ ld a, [wPlayAreaCursorPosition]
sub $08
or a
jr z, .asm_006_4274
@@ -422,154 +460,222 @@ TextIDTable_182bb:
tx PKMNPowerText
tx DoneText
- INCROM $182db, $183bb
-
-Func_006_43bb: ; 183bb (6:43bb)
+Data_006_42db:
+; transitions[]
+ db $18, $8c, $00, $05, $10, $01, $04
+ db $30, $8c, $00, $05, $10, $02, $00
+ db $48, $8c, $00, $05, $10, $03, $01
+ db $60, $8c, $00, $05, $10, $04, $02
+ db $78, $8c, $00, $05, $10, $00, $03
+ db $30, $6c, $00, $08, $00, $07, $07
+ db $78, $80, $00, $07, $00, $05, $05
+ db $78, $70, $00, $08, $06, $05, $05
+ db $78, $34, $20, $0b, $05, $0a, $0a
+ db $30, $20, $20, $0b, $0a, $08, $08
+ db $30, $38, $20, $0b, $05, $08, $08
+ db $90, $14, $20, $11, $08, $0f, $0c
+ db $78, $14, $20, $11, $08, $0b, $0d
+ db $60, $14, $20, $11, $08, $0c, $0e
+ db $48, $14, $20, $11, $08, $0d, $0f
+ db $30, $14, $20, $11, $08, $0e, $0b
+
+Data_006_434b:
+; transitions[]
+ db $18, $8c, $00, $05, $10, $01, $04
+ db $30, $8c, $00, $05, $10, $02, $00
+ db $48, $8c, $00, $05, $10, $03, $01
+ db $60, $8c, $00, $05, $10, $04, $02
+ db $78, $8c, $00, $05, $10, $00, $03
+ db $30, $6c, $00, $08, $00, $07, $07
+ db $78, $80, $00, $07, $00, $05, $05
+ db $78, $70, $00, $08, $06, $05, $05
+ db $78, $34, $20, $0b, $05, $0a, $0a
+ db $30, $20, $20, $0b, $0a, $08, $08
+ db $30, $38, $20, $09, $05, $08, $08
+ db $90, $14, $20, $11, $08, $0f, $0c
+ db $78, $14, $20, $11, $08, $0b, $0d
+ db $60, $14, $20, $11, $08, $0c, $0e
+ db $48, $14, $20, $11, $08, $0d, $0f
+ db $30, $14, $20, $11, $08, $0e, $0b
+
+HandleInput_PlayArea: ; 183bb (6:43bb)
xor a
ld [wcfe3], a
- ld hl, $ce53
-.asm_006_43c2
+ ld hl, wPlayAreaInputTablePointer
ld e, [hl]
inc hl
ld d, [hl]
- ld a, [$ce52]
+ ld a, [wPlayAreaCursorPosition]
ld l, a
-.asm_006_43c9
ld h, $07
call HtimesL
add hl, de
+
ldh a, [hDPadHeld]
or a
- jp z, .asm_006_446b
+ jp z, .check_button
+
inc hl
inc hl
inc hl
+
+ ; check d-pad
bit D_UP_F, a
- jr z, .asm_006_43df
-.asm_006_43dc
+ jr z, .else_if_down
+
+ ; up
ld a, [hl]
- jr .asm_006_43f5
-.asm_006_43df
+ jr .process_dpad
+
+.else_if_down
inc hl
bit D_DOWN_F, a
- jr z, .asm_006_43e7
+ jr z, .else_if_right
+
+ ; down
ld a, [hl]
- jr .asm_006_43f5
-.asm_006_43e7
+ jr .process_dpad
+
+.else_if_right
inc hl
bit D_RIGHT_F, a
- jr z, .asm_006_43ef
+ jr z, .else_if_left
+
+ ; right
ld a, [hl]
- jr .asm_006_43f5
-.asm_006_43ef
+ jr .process_dpad
+
+.else_if_left
inc hl
bit D_LEFT_F, a
- jr z, .asm_006_446b
+ jr z, .check_button
+
+ ; left
ld a, [hl]
-.asm_006_43f5
+.process_dpad
push af
- ld a, [$ce52]
- ld [$ce57], a
+ ld a, [wPlayAreaCursorPosition]
+ ld [wPlayAreaPreservedPosition], a
pop af
- ld [$ce52], a
+ ld [wPlayAreaCursorPosition], a
+
cp $05
jr c, .asm_006_440e
cp $0b
jr c, .asm_006_4462
cp $10
jr c, .asm_006_4437
+
jr .asm_006_4462
+
.asm_006_440e
ld a, DUELVARS_NUMBER_OF_POKEMON_IN_PLAY_AREA
call GetTurnDuelistVariable
dec a
jr nz, .asm_006_441d
+
ld a, $10
- ld [$ce52], a
+ ld [wPlayAreaCursorPosition], a
jr .asm_006_4462
+
.asm_006_441d
ld b, a
- ld a, [$ce52]
+ ld a, [wPlayAreaCursorPosition]
cp b
jr c, .asm_006_4462
+
ldh a, [hDPadHeld]
bit D_RIGHT_F, a
jr z, .asm_006_4430
+
xor a
- ld [$ce52], a
+ ld [wPlayAreaCursorPosition], a
jr .asm_006_4462
-.asm_006_4430:
+
+.asm_006_4430
ld a, b
dec a
- ld [$ce52], a
+ ld [wPlayAreaCursorPosition], a
jr .asm_006_4462
-.asm_006_4437:
+
+.asm_006_4437
ld a, DUELVARS_NUMBER_OF_POKEMON_IN_PLAY_AREA
call GetNonTurnDuelistVariable
dec a
jr nz, .asm_006_4446
+
ld a, $11
- ld [$ce52], a
+ ld [wPlayAreaCursorPosition], a
jr .asm_006_4462
+
.asm_006_4446
ld b, a
- ld a, [$ce52]
+ ld a, [wPlayAreaCursorPosition]
sub $0b
cp b
jr c, .asm_006_4462
+
ldh a, [hDPadHeld]
bit D_LEFT_F, a
jr z, .asm_006_445c
+
ld a, $0b
- ld [$ce52], a
+ ld [wPlayAreaCursorPosition], a
jr .asm_006_4462
+
.asm_006_445c
ld a, b
add $0a
- ld [$ce52], a
+ ld [wPlayAreaCursorPosition], a
.asm_006_4462
ld a, $01
ld [wcfe3], a
xor a
ld [wcea3], a
-.asm_006_446b
+.check_button
ldh a, [hKeysPressed]
- and $03
- jr z, .asm_006_448b
- and $01
- jr nz, .asm_006_447d
- ld a, $ff
+ and A_BUTTON | B_BUTTON
+ jr z, .return
+
+ and A_BUTTON
+ jr nz, .a_button
+
+ ; pressed b button
+ ld a, -1
farcall Func_90fb
scf
ret
-.asm_006_447d
+
+.a_button
call Func_006_44a0
ld a, $01
farcall Func_90fb
- ld a, [$ce52]
+ ld a, [wPlayAreaCursorPosition]
scf
ret
-.asm_006_448b
+
+.return
ld a, [wcfe3]
or a
- jr z, .asm_006_4494
+ jr z, .skip_sfx
call PlaySFX
-.asm_006_4494
+.skip_sfx
ld hl, wcea3
ld a, [hl]
inc [hl]
and $0f
ret nz
+
bit D_RIGHT_F, [hl]
jr nz, Func_006_44bf
Func_006_44a0: ; 184a0 (6:44a0)
call ZeroObjectPositions
- ld hl, $ce53
+ ld hl, wPlayAreaInputTablePointer
ld e, [hl]
inc hl
ld d, [hl]
- ld a, [$ce52]
+ ld a, [wPlayAreaCursorPosition]
ld l, a
ld h, $07
call HtimesL
@@ -593,10 +699,11 @@ Func_006_44bf: ; 184bf (6:44bf)
xor a
ld [wGlossaryPageNo], a
call Func_006_452b
+
xor a
- ld [$ce52], a
+ ld [wPlayAreaCursorPosition], a
ld de, $4c8e
- ld hl, $ce53
+ ld hl, wPlayAreaInputTablePointer
ld [hl], e
inc hl
ld [hl], d
@@ -609,26 +716,29 @@ Func_006_44bf: ; 184bf (6:44bf)
ld [wVBlankOAMCopyToggle], a
call DoFrame
ldh a, [hKeysPressed]
- and $04
- jr nz, .asm_006_4518
+ and SELECT
+ jr nz, .on_select
farcall $2, $49ae
jr nc, .asm_006_44e5
- cp $ff
+ cp -1
jr nz, .asm_006_4502
farcall $2, $4aa1
ret
+
.asm_006_4502
push af
farcall $2, $4aa1
pop af
cp $09
jr z, .asm_006_451e
+
call Func_006_4598
call Func_006_452b
xor a
ld [wcea3], a
jr .asm_006_44e5
-.asm_006_4518
+
+.on_select
ld a, $01
farcall Func_90fb
.asm_006_451e
@@ -650,10 +760,10 @@ Func_006_452b: ; 1852b (6:452b)
farcall $2, $4992
lb de, 5, 0
call InitTextPrinting
- ldtx hl, Text02f6
+ ldtx hl, GlossaryText
call ProcessTextFromID
call Func_006_455a
- ldtx hl, Text02f9
+ ldtx hl, ChooseWordInGlossaryText
call DrawWideTextBox_PrintText
ret
@@ -701,10 +811,10 @@ Func_006_4598: ; 18598 (6:4598)
call EmptyScreen
lb de, 5, 0
call InitTextPrinting
- ldtx hl, Text02f6
+ ldtx hl, GlossaryText
call ProcessTextFromID
- ld de, $0004
- ld bc, $140e
+ lb de, 0, 4
+ lb bc, 20, 14
call DrawRegularTextBox
ld a, [wGlossaryPageNo]
or a
@@ -1196,8 +1306,56 @@ Func_006_5168: ; 19168 (6:5168)
bank1call DrawDuelHUDs
ret
- INCROM $191a3, $1996e
+ INCROM $191a3, $1991f
+
+Func_006_591f:
+ add a
+ ld e, a
+ ld d, 0
+ ld hl, .data
+ add hl, de
+ ld a, PLAYER_TURN
+ ldh [hWhoseTurn], a
+ ld a, [hli]
+ add $02
+ push hl
+ ld hl, sDeck1Name
+ call Func_199e0
+ pop hl
+ call SwapTurn
+ ld a, [hli]
+ add $02
+ call LoadDeck
+ call SwapTurn
+ call EnableSRAM
+ ld h, $a1
+ ld de, wPlayerDeck
+ ld c, $3c
+.asm_006_594c
+ ld a, [de]
+ inc de
+ ld l, a
+ res 7, [hl]
+ dec c
+ jr nz, .asm_006_594c
+
+ ld h, $a1
+ ld de, wOpponentDeck
+ ld c, $1e
+.asm_006_595b
+ ld a, [de]
+ inc de
+ ld l, a
+ res 7, [hl]
+ inc [hl]
+ dec c
+ jr nz, .asm_006_595b
+ call DisableSRAM
+ ret
+.data
+ db $03, $04, $05, $06, $07, $08
+
Func_1996e: ; 1996e (6:596e)
call EnableSRAM
ld a, PLAYER_TURN
@@ -1393,8 +1551,8 @@ Func_006_668d:
lb de, $38, $9f
call SetupText
bank1call InitAndDrawCardListScreenLayout
- ld hl, $0056
- ld de, $0196
+ ldtx hl, ChooseTheCardYouWishToExamineText
+ ldtx de, Text0196
bank1call SetCardListHeaderText
ld a, A_BUTTON | START
ld [wNoItemSelectionMenuKeys], a
@@ -1737,7 +1895,7 @@ PrintPlayerNameFromInput:
sub e
inc a
ld e, a
- ld d, $00
+ ld d, 0
; print the underbars
; before print the input.
ld hl, .char_underbar
@@ -2082,7 +2240,7 @@ NamingScreen_ProcessInput:
ld a, [wd009]
cp $02
jr z, .read_char
- ld bc, $0359 ; “
+ ldfw3 bc, "“"
ld a, d
cp b
jr nz, .asm_006_6af4
@@ -2096,7 +2254,7 @@ NamingScreen_ProcessInput:
jr c, .nothing
jr .asm_006_6b09
.asm_006_6af4
- ld bc, $035b ; º
+ ldfw3 bc, "º(2)"
ld a, d
cp b
jr nz, .asm_006_6b1d
@@ -2276,62 +2434,76 @@ GetCharInfoFromPos_Player:
; - unused data contains its character code as zero.
kbitem: MACRO
db \1, \2, \3, \4
+if (_NARG == 5)
dw \5
+elif (\5 == TX_FULLWIDTH3)
+ dw (\5 << 8) | STRCAT("FW3_", \6)
+else
+ dw (\5 << 8) | \6
+endc
ENDM
KeyboardData_Player: ; (6:6baf)
- kbitem $04, $02, $11, $00, $0330
- kbitem $06, $02, $12, $00, $0339
- kbitem $08, $02, $13, $00, $0342
- kbitem $0a, $02, $14, $00, $006f
- kbitem $0c, $02, $15, $00, $0064
+ kbitem $04, $02, $11, $00, TX_FULLWIDTH3, "A"
+ kbitem $06, $02, $12, $00, TX_FULLWIDTH3, "J"
+ kbitem $08, $02, $13, $00, TX_FULLWIDTH3, "S"
+ kbitem $0a, $02, $14, $00, "o"
+ kbitem $0c, $02, $15, $00, "d"
kbitem $10, $0f, $01, $09, $0000
- kbitem $04, $04, $16, $00, $0331
- kbitem $06, $04, $17, $00, $033a
- kbitem $08, $04, $18, $00, $0343
- kbitem $0a, $04, $19, $00, $035d
- kbitem $0c, $04, $1a, $00, $0065
+
+ kbitem $04, $04, $16, $00, TX_FULLWIDTH3, "B"
+ kbitem $06, $04, $17, $00, TX_FULLWIDTH3, "K"
+ kbitem $08, $04, $18, $00, TX_FULLWIDTH3, "T"
+ kbitem $0a, $04, $19, $00, TX_FULLWIDTH3, "&"
+ kbitem $0c, $04, $1a, $00, "e"
kbitem $10, $0f, $01, $09, $0000
- kbitem $04, $06, $1b, $00, $0332
- kbitem $06, $06, $1c, $00, $033b
- kbitem $08, $06, $1d, $00, $0344
- kbitem $0a, $06, $1e, $00, $006a
- kbitem $0c, $06, $1f, $00, $0066
+
+ kbitem $04, $06, $1b, $00, TX_FULLWIDTH3, "C"
+ kbitem $06, $06, $1c, $00, TX_FULLWIDTH3, "L"
+ kbitem $08, $06, $1d, $00, TX_FULLWIDTH3, "U"
+ kbitem $0a, $06, $1e, $00, "j"
+ kbitem $0c, $06, $1f, $00, "f"
kbitem $10, $0f, $01, $09, $0000
- kbitem $04, $08, $20, $00, $0333
- kbitem $06, $08, $21, $00, $033c
- kbitem $08, $08, $22, $00, $0345
- kbitem $0a, $08, $23, $00, $006b
- kbitem $0c, $08, $24, $00, $0067
+
+ kbitem $04, $08, $20, $00, TX_FULLWIDTH3, "D"
+ kbitem $06, $08, $21, $00, TX_FULLWIDTH3, "M"
+ kbitem $08, $08, $22, $00, TX_FULLWIDTH3, "V"
+ kbitem $0a, $08, $23, $00, "k"
+ kbitem $0c, $08, $24, $00, "g"
kbitem $10, $0f, $01, $09, $0000
- kbitem $04, $0a, $25, $00, $0334
- kbitem $06, $0a, $26, $00, $033d
- kbitem $08, $0a, $27, $00, $0346
- kbitem $0a, $0a, $28, $00, $0077
- kbitem $0c, $0a, $29, $00, $0068
+
+ kbitem $04, $0a, $25, $00, TX_FULLWIDTH3, "E"
+ kbitem $06, $0a, $26, $00, TX_FULLWIDTH3, "N"
+ kbitem $08, $0a, $27, $00, TX_FULLWIDTH3, "W"
+ kbitem $0a, $0a, $28, $00, "w"
+ kbitem $0c, $0a, $29, $00, "h"
kbitem $10, $0f, $01, $09, $0000
- kbitem $04, $0c, $2a, $00, $0335
- kbitem $06, $0c, $2b, $00, $033e
- kbitem $08, $0c, $2c, $00, $0347
- kbitem $0a, $0c, $2d, $00, $0060
- kbitem $0c, $0c, $2e, $00, $0069
+
+ kbitem $04, $0c, $2a, $00, TX_FULLWIDTH3, "F"
+ kbitem $06, $0c, $2b, $00, TX_FULLWIDTH3, "O"
+ kbitem $08, $0c, $2c, $00, TX_FULLWIDTH3, "X"
+ kbitem $0a, $0c, $2d, $00, "`"
+ kbitem $0c, $0c, $2e, $00, "i"
kbitem $10, $0f, $01, $09, $0000
- kbitem $04, $0e, $2f, $00, $0336
- kbitem $06, $0e, $30, $00, $033f
- kbitem $08, $0e, $31, $00, $0348
- kbitem $0a, $0e, $32, $00, $0061
- kbitem $0c, $0e, $33, $00, $0513
+
+ kbitem $04, $0e, $2f, $00, TX_FULLWIDTH3, "G"
+ kbitem $06, $0e, $30, $00, TX_FULLWIDTH3, "P"
+ kbitem $08, $0e, $31, $00, TX_FULLWIDTH3, "Y"
+ kbitem $0a, $0e, $32, $00, "a"
+ kbitem $0c, $0e, $33, $00, TX_SYMBOL, SYM_No
kbitem $10, $0f, $01, $09, $0000
- kbitem $04, $10, $34, $00, $0337
- kbitem $06, $10, $35, $00, $0340
- kbitem $08, $10, $36, $00, $0349
- kbitem $0a, $10, $3c, $00, $0062
- kbitem $0c, $10, $3d, $00, $0511
+
+ kbitem $04, $10, $34, $00, TX_FULLWIDTH3, "H"
+ kbitem $06, $10, $35, $00, TX_FULLWIDTH3, "Q"
+ kbitem $08, $10, $36, $00, TX_FULLWIDTH3, "Z"
+ kbitem $0a, $10, $3c, $00, "b"
+ kbitem $0c, $10, $3d, $00, TX_SYMBOL, SYM_Lv
kbitem $10, $0f, $01, $09, $0000
- kbitem $04, $12, $37, $00, $0338
- kbitem $06, $12, $38, $00, $0341
- kbitem $08, $12, $39, $00, $006e
- kbitem $0a, $12, $3a, $00, $0063
- kbitem $0c, $12, $3b, $00, $0070
+
+ kbitem $04, $12, $37, $00, TX_FULLWIDTH3, "I"
+ kbitem $06, $12, $38, $00, TX_FULLWIDTH3, "R"
+ kbitem $08, $12, $39, $00, "n"
+ kbitem $0a, $12, $3a, $00, "c"
+ kbitem $0c, $12, $3b, $00, "p"
kbitem $10, $0f, $01, $09, $0000
kbitem $00, $00, $00, $00, $0000
; a set of transition datum.
@@ -2816,10 +2988,83 @@ GetCharInfoFromPos_Deck:
jr nz, .loop
ret
-; a bunch of data
KeyboardData_Deck: ; (6:7019)
- INCROM $1b019, $1b8e8
- INCROM $1b8e8, $1ba12
+ db $04, $02, "A"
+ db $06, $02, "J"
+ db $08, $02, "S"
+ db $0a, $02, "?"
+ db $0c, $02, "4"
+ db $0e, $02, $02
+ db $10, $0f, $01
+
+ db $04, $04, "B"
+ db $06, $04, "K"
+ db $08, $04, "T"
+ db $0a, $04, "&"
+ db $0c, $04, "5"
+ db $0e, $04, $02
+ db $10, $0f, $01
+
+ db $04, $06, "C"
+ db $06, $06, "L"
+ db $08, $06, "U"
+ db $0a, $06, "+"
+ db $0c, $06, "6"
+ db $0e, $06, $02
+ db $10, $0f, $01
+
+ db $04, $08, "D"
+ db $06, $08, "M"
+ db $08, $08, "V"
+ db $0a, $08, "-"
+ db $0c, $08, "7"
+ db $0e, $08, $02
+ db $10, $0f, $01
+
+ db $04, $0a, "E"
+ db $06, $0a, "N"
+ db $08, $0a, "W"
+ db $0a, $0a, "'"
+ db $0c, $0a, "8"
+ db $0e, $0a, $02
+ db $10, $0f, $01
+
+ db $04, $0c, "F"
+ db $06, $0c, "O"
+ db $08, $0c, "X"
+ db $0a, $0c, "0"
+ db $0c, $0c, "9"
+ db $0e, $0c, $02
+ db $10, $0f, $01
+
+ db $04, $0e, "G"
+ db $06, $0e, "P"
+ db $08, $0e, "Y"
+ db $0a, $0e, "1"
+ db $0c, $0e, " "
+ db $0e, $0e, $02
+ db $10, $0f, $01
+
+ db $04, $10, "H"
+ db $06, $10, "Q"
+ db $08, $10, "Z"
+ db $0a, $10, "2"
+ db $0c, $10, " "
+ db $0e, $10, $02
+ db $10, $0f, $01
+
+ db $04, $12, "I"
+ db $06, $12, "R"
+ db $08, $12, "!"
+ db $0a, $12, "3"
+ db $0c, $12, " "
+ db $0e, $12, $02
+ db $10, $0f, $01
+
+; unknown data.
+; needs analyze.
+; (6:70d6)
+ INCROM $1b0d6, $1ba12
Func_006_7a12: ; (6:7a12)
push af
diff --git a/src/engine/home.asm b/src/engine/home.asm
index c4507ef..7739545 100644
--- a/src/engine/home.asm
+++ b/src/engine/home.asm
@@ -9289,11 +9289,11 @@ Func_3096: ; 3096 (0:3096)
Func_30a6: ; 30a6 (0:30a6)
ldh a, [hBankROM]
push af
- ld a, BANK(Func_180d5)
+ ld a, BANK(HandlePlayAreaView)
call BankswitchROM
ld a, $1
- ld [wce60], a
- call Func_180d5
+ ld [wIsFromSelectButton], a
+ call HandlePlayAreaView
pop bc
ld a, b
call BankswitchROM
diff --git a/src/macros/text.asm b/src/macros/text.asm
index dd47c02..8ad94e8 100644
--- a/src/macros/text.asm
+++ b/src/macros/text.asm
@@ -82,3 +82,7 @@ endc
shift
endr
ENDM
+
+ldfw3: MACRO
+ ld \1, (TX_FULLWIDTH3 << 8) | STRCAT("FW3_", \2)
+ENDM \ No newline at end of file
diff --git a/src/text/text3.asm b/src/text/text3.asm
index 04d0b05..5d72609 100644
--- a/src/text/text3.asm
+++ b/src/text/text3.asm
@@ -619,7 +619,7 @@ Text02f5: ; 3d2e6 (f:52e6)
line "very rare Pokémon cards!"
done
-Text02f6: ; 3d31c (f:531c)
+GlossaryText: ; 3d31c (f:531c)
text "Pokémon Card Glossary"
done
@@ -639,7 +639,7 @@ Text02f8: ; 3d3e0 (f:53e0)
line "Attack To previous page"
done
-Text02f9: ; 3d48f (f:548f)
+ChooseWordInGlossaryText: ; 3d48f (f:548f)
text "Choose a word and press the"
line "A button."
done
diff --git a/src/text/text_offsets.asm b/src/text/text_offsets.asm
index 2f56aaa..8421f29 100644
--- a/src/text/text_offsets.asm
+++ b/src/text/text_offsets.asm
@@ -759,10 +759,10 @@ TextOffsets:: ; 34000 (d:4000)
textpointer Text02f3 ; 0x02f3
textpointer Text02f4 ; 0x02f4
textpointer Text02f5 ; 0x02f5
- textpointer Text02f6 ; 0x02f6
+ textpointer GlossaryText ; 0x02f6
textpointer Text02f7 ; 0x02f7
textpointer Text02f8 ; 0x02f8
- textpointer Text02f9 ; 0x02f9
+ textpointer ChooseWordInGlossaryText ; 0x02f9
textpointer Text02fa ; 0x02fa
textpointer Text02fb ; 0x02fb
textpointer Text02fc ; 0x02fc
diff --git a/src/wram.asm b/src/wram.asm
index 3af5361..7a7f0ad 100644
--- a/src/wram.asm
+++ b/src/wram.asm
@@ -1289,7 +1289,30 @@ wce50:: ; ce50
wce51:: ; ce51
ds $1
- ds $7
+; the position of cursor
+; in the display of play area.
+; note that it's used in neither
+; player's nor opponent's alone.
+wPlayAreaCursorPosition:: ; ce52
+ ds $1
+
+; pointer to the table which contains
+; information for each key-press.
+wPlayAreaInputTablePointer:: ; ce53
+ ds $2
+
+ ds $2
+
+; it's used for restore the position of cursor
+; when going into another view, and returning to
+; the previous view.
+wPlayAreaPreservedPosition:: ; ce57
+ ds $1
+
+; it's used for checking if the player changed
+; the cursor in the play area view.
+wPlayAreaPreservedPosition_2:: ; ce58
+ ds $1
wce59:: ; ce59
ds $1
@@ -1301,7 +1324,7 @@ wce5e:: ; ce5e
ds $1
-wce60:: ; ce60
+wIsFromSelectButton:: ; ce60
ds $1
wce61:: ; ce61