summaryrefslogtreecommitdiff
path: root/engine/menu
diff options
context:
space:
mode:
Diffstat (limited to 'engine/menu')
-rw-r--r--engine/menu/bills_pc.asm4
-rw-r--r--engine/menu/diploma.asm (renamed from engine/menu/diploma_1.asm)0
-rw-r--r--engine/menu/draw_badges.asm120
-rw-r--r--engine/menu/draw_start_menu.asm87
-rw-r--r--engine/menu/link_menu.asm2
-rwxr-xr-xengine/menu/main_menu.asm146
-rwxr-xr-xengine/menu/naming_screen.asm6
-rwxr-xr-xengine/menu/oaks_pc.asm3
-rwxr-xr-xengine/menu/party_menu.asm208
-rwxr-xr-xengine/menu/pc.asm16
-rwxr-xr-xengine/menu/pokedex.asm18
-rwxr-xr-xengine/menu/prize_menu.asm86
-rwxr-xr-xengine/menu/start_menu.asm14
-rwxr-xr-xengine/menu/start_sub_menus.asm558
-rwxr-xr-xengine/menu/status_screen.asm7
-rw-r--r--engine/menu/swap_items.asm180
-rw-r--r--engine/menu/text_box.asm (renamed from engine/menu/text_ids2.asm)122
-rw-r--r--engine/menu/text_ids1.asm163
-rwxr-xr-xengine/menu/vending_machine.asm3
19 files changed, 898 insertions, 845 deletions
diff --git a/engine/menu/bills_pc.asm b/engine/menu/bills_pc.asm
index 2f7dcaa9..41626310 100644
--- a/engine/menu/bills_pc.asm
+++ b/engine/menu/bills_pc.asm
@@ -103,7 +103,7 @@ BillsPC_::
bit 3, a ; accessing Bill's PC through another PC?
jr nz, BillsPCMenu
; accessing it directly
- ld a, $99
+ ld a, SFX_TURN_ON_PC
call PlaySound
ld hl, SwitchOnText
call PrintText
@@ -190,7 +190,7 @@ ExitBillsPC:
jr nz, .next
; accessing it directly
call LoadTextBoxTilePatterns
- ld a, $9a
+ ld a, SFX_TURN_OFF_PC
call PlaySound
call WaitForSoundToFinish
.next
diff --git a/engine/menu/diploma_1.asm b/engine/menu/diploma.asm
index 3f309bd2..3f309bd2 100644
--- a/engine/menu/diploma_1.asm
+++ b/engine/menu/diploma.asm
diff --git a/engine/menu/draw_badges.asm b/engine/menu/draw_badges.asm
new file mode 100644
index 00000000..9e6262a0
--- /dev/null
+++ b/engine/menu/draw_badges.asm
@@ -0,0 +1,120 @@
+DrawBadges:
+; Draw 4x2 gym leader faces, with the faces replaced by
+; badges if they are owned. Used in the player status screen.
+
+; In Japanese versions, names are displayed above faces.
+; Instead of removing relevant code, the name graphics were erased.
+
+; Tile ids for face/badge graphics.
+ ld de, wBadgeOrFaceTiles
+ ld hl, .FaceBadgeTiles
+ ld bc, 8
+ call CopyData
+
+; Booleans for each badge.
+ ld hl, wTempObtainedBadgesBooleans
+ ld bc, 8
+ xor a
+ call FillMemory
+
+; Alter these based on owned badges.
+ ld de, wTempObtainedBadgesBooleans
+ ld hl, wBadgeOrFaceTiles
+ ld a, [wObtainedBadges]
+ ld b, a
+ ld c, 8
+.CheckBadge
+ srl b
+ jr nc, .NextBadge
+ ld a, [hl]
+ add 4 ; Badge graphics are after each face
+ ld [hl], a
+ ld a, 1
+ ld [de], a
+.NextBadge
+ inc hl
+ inc de
+ dec c
+ jr nz, .CheckBadge
+
+; Draw two rows of badges.
+ ld hl, wBadgeNumberTile
+ ld a, $d8 ; [1]
+ ld [hli], a
+ ld [hl], $60 ; First name
+
+ coord hl, 2, 11
+ ld de, wTempObtainedBadgesBooleans
+ call .DrawBadgeRow
+
+ coord hl, 2, 14
+ ld de, wTempObtainedBadgesBooleans + 4
+; call .DrawBadgeRow
+; ret
+
+.DrawBadgeRow
+; Draw 4 badges.
+
+ ld c, 4
+.DrawBadge
+ push de
+ push hl
+
+; Badge no.
+ ld a, [wBadgeNumberTile]
+ ld [hli], a
+ inc a
+ ld [wBadgeNumberTile], a
+
+; Names aren't printed if the badge is owned.
+ ld a, [de]
+ and a
+ ld a, [wBadgeNameTile]
+ jr nz, .SkipName
+ call .PlaceTiles
+ jr .PlaceBadge
+
+.SkipName
+ inc a
+ inc a
+ inc hl
+
+.PlaceBadge
+ ld [wBadgeNameTile], a
+ ld de, SCREEN_WIDTH - 1
+ add hl, de
+ ld a, [wBadgeOrFaceTiles]
+ call .PlaceTiles
+ add hl, de
+ call .PlaceTiles
+
+; Shift badge array back one byte.
+ push bc
+ ld hl, wBadgeOrFaceTiles + 1
+ ld de, wBadgeOrFaceTiles
+ ld bc, 8
+ call CopyData
+ pop bc
+
+ pop hl
+ ld de, 4
+ add hl, de
+
+ pop de
+ inc de
+ dec c
+ jr nz, .DrawBadge
+ ret
+
+.PlaceTiles
+ ld [hli], a
+ inc a
+ ld [hl], a
+ inc a
+ ret
+
+.FaceBadgeTiles
+ db $20, $28, $30, $38, $40, $48, $50, $58
+
+GymLeaderFaceAndBadgeTileGraphics:
+ INCBIN "gfx/badges.2bpp"
diff --git a/engine/menu/draw_start_menu.asm b/engine/menu/draw_start_menu.asm
new file mode 100644
index 00000000..632b8c3a
--- /dev/null
+++ b/engine/menu/draw_start_menu.asm
@@ -0,0 +1,87 @@
+; function that displays the start menu
+DrawStartMenu:
+ CheckEvent EVENT_GOT_POKEDEX
+; menu with pokedex
+ coord hl, 10, 0
+ lb bc, 14, 8
+ jr nz,.drawTextBoxBorder
+; shorter menu if the player doesn't have the pokedex
+ coord hl, 10, 0
+ lb bc, 12, 8
+.drawTextBoxBorder
+ call TextBoxBorder
+ ld a, D_DOWN | D_UP | START | B_BUTTON | A_BUTTON
+ ld [wMenuWatchedKeys], a
+ ld a, $02
+ ld [wTopMenuItemY], a ; Y position of first menu choice
+ ld a, $0b
+ ld [wTopMenuItemX], a ; X position of first menu choice
+ ld a, [wBattleAndStartSavedMenuItem] ; remembered menu selection from last time
+ ld [wCurrentMenuItem], a
+ ld [wLastMenuItem], a
+ xor a
+ ld [wMenuWatchMovingOutOfBounds], a
+ ld hl, wd730
+ set 6, [hl] ; no pauses between printing each letter
+ coord hl, 12, 2
+ CheckEvent EVENT_GOT_POKEDEX
+; case for not having pokedex
+ ld a, $06
+ jr z, .storeMenuItemCount
+; case for having pokedex
+ ld de, StartMenuPokedexText
+ call PrintStartMenuItem
+ ld a, $07
+.storeMenuItemCount
+ ld [wMaxMenuItem], a ; number of menu items
+ ld de, StartMenuPokemonText
+ call PrintStartMenuItem
+ ld de, StartMenuItemText
+ call PrintStartMenuItem
+ ld de, wPlayerName ; player's name
+ call PrintStartMenuItem
+ ld a, [wd72e]
+ bit 6, a ; is the player using the link feature?
+; case for not using link feature
+ ld de, StartMenuSaveText
+ jr z, .printSaveOrResetText
+; case for using link feature
+ ld de, StartMenuResetText
+.printSaveOrResetText
+ call PrintStartMenuItem
+ ld de, StartMenuOptionText
+ call PrintStartMenuItem
+ ld de, StartMenuExitText
+ call PlaceString
+ ld hl, wd730
+ res 6, [hl] ; turn pauses between printing letters back on
+ ret
+
+StartMenuPokedexText:
+ db "POKéDEX@"
+
+StartMenuPokemonText:
+ db "#MON@"
+
+StartMenuItemText:
+ db "ITEM@"
+
+StartMenuSaveText:
+ db "SAVE@"
+
+StartMenuResetText:
+ db "RESET@"
+
+StartMenuExitText:
+ db "EXIT@"
+
+StartMenuOptionText:
+ db "OPTION@"
+
+PrintStartMenuItem:
+ push hl
+ call PlaceString
+ pop hl
+ ld de, SCREEN_WIDTH * 2
+ add hl, de
+ ret
diff --git a/engine/menu/link_menu.asm b/engine/menu/link_menu.asm
index 3782e93e..9bc28b31 100644
--- a/engine/menu/link_menu.asm
+++ b/engine/menu/link_menu.asm
@@ -904,7 +904,7 @@ TextTerminator_f5a16:
db "@"
TradeCenterText:
- db "TRADE CENTER"
+ db "TRADE CENTER"
next "COLOSSEUM"
next "COLOSSEUM2"
next "CANCEL@"
diff --git a/engine/menu/main_menu.asm b/engine/menu/main_menu.asm
index 5ff9cc7d..ce27ebba 100755
--- a/engine/menu/main_menu.asm
+++ b/engine/menu/main_menu.asm
@@ -2,42 +2,42 @@ MainMenu:
; Check save file
call InitOptions
xor a
- ld [wOptionsInitialized],a
+ ld [wOptionsInitialized], a
inc a
- ld [wSaveFileStatus],a
+ ld [wSaveFileStatus], a
call CheckForPlayerNameInSRAM
- jr nc,.mainMenuLoop
+ jr nc, .mainMenuLoop
predef LoadSAV
.mainMenuLoop
- ld c,20
+ ld c, 20
call DelayFrames
xor a ; LINK_STATE_NONE
- ld [wLinkState],a
- ld hl,wPartyAndBillsPCSavedMenuItem
- ld [hli],a
- ld [hli],a
- ld [hli],a
- ld [hl],a
- ld [wDefaultMap],a
- ld hl,wd72e
- res 6,[hl]
+ ld [wLinkState], a
+ ld hl, wPartyAndBillsPCSavedMenuItem
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hl], a
+ ld [wDefaultMap], a
+ ld hl, wd72e
+ res 6, [hl]
call ClearScreen
call RunDefaultPaletteCommand
call LoadTextBoxTilePatterns
call LoadFontTilePatterns
- ld hl,wd730
- set 6,[hl]
- ld a,[wSaveFileStatus]
- cp a,1
- jr z,.noSaveFile
+ ld hl, wd730
+ set 6, [hl]
+ ld a, [wSaveFileStatus]
+ cp 1
+ jr z, .noSaveFile
; there's a save file
coord hl, 0, 0
lb bc, 6, 13
call TextBoxBorder
coord hl, 2, 2
- ld de,ContinueText
+ ld de, ContinueText
call PlaceString
jr .next2
.noSaveFile
@@ -45,89 +45,89 @@ MainMenu:
lb bc, 4, 13
call TextBoxBorder
coord hl, 2, 2
- ld de,NewGameText
+ ld de, NewGameText
call PlaceString
.next2
- ld hl,wd730
- res 6,[hl]
+ ld hl, wd730
+ res 6, [hl]
call UpdateSprites
xor a
- ld [wCurrentMenuItem],a
- ld [wLastMenuItem],a
- ld [wMenuJoypadPollCount],a
+ ld [wCurrentMenuItem], a
+ ld [wLastMenuItem], a
+ ld [wMenuJoypadPollCount], a
inc a
- ld [wTopMenuItemX],a
+ ld [wTopMenuItemX], a
inc a
- ld [wTopMenuItemY],a
- ld a,A_BUTTON | B_BUTTON | START
- ld [wMenuWatchedKeys],a
- ld a,[wSaveFileStatus]
- ld [wMaxMenuItem],a
+ ld [wTopMenuItemY], a
+ ld a, A_BUTTON | B_BUTTON | START
+ ld [wMenuWatchedKeys], a
+ ld a, [wSaveFileStatus]
+ ld [wMaxMenuItem], a
call HandleMenuInput
- bit 1,a ; pressed B?
- jp nz,DisplayTitleScreen ; if so, go back to the title screen
- ld c,20
+ bit 1, a ; pressed B?
+ jp nz, DisplayTitleScreen ; if so, go back to the title screen
+ ld c, 20
call DelayFrames
- ld a,[wCurrentMenuItem]
- ld b,a
- ld a,[wSaveFileStatus]
- cp a,2
- jp z,.skipInc
+ ld a, [wCurrentMenuItem]
+ ld b, a
+ ld a, [wSaveFileStatus]
+ cp 2
+ jp z, .skipInc
; If there's no save file, increment the current menu item so that the numbers
; are the same whether or not there's a save file.
inc b
.skipInc
- ld a,b
+ ld a, b
and a
- jr z,.choseContinue
- cp a,1
- jp z,StartNewGame
+ jr z, .choseContinue
+ cp 1
+ jp z, StartNewGame
call DisplayOptionMenu
- ld a,1
- ld [wOptionsInitialized],a
+ ld a, 1
+ ld [wOptionsInitialized], a
jp .mainMenuLoop
.choseContinue
call DisplayContinueGameInfo
- ld hl,wCurrentMapScriptFlags
- set 5,[hl]
+ ld hl, wCurrentMapScriptFlags
+ set 5, [hl]
.inputLoop
xor a
- ld [hJoyPressed],a
- ld [hJoyReleased],a
- ld [hJoyHeld],a
+ ld [hJoyPressed], a
+ ld [hJoyReleased], a
+ ld [hJoyHeld], a
call Joypad
- ld a,[hJoyHeld]
- bit 0,a
- jr nz,.pressedA
- bit 1,a
- jp nz,.mainMenuLoop ; pressed B
+ ld a, [hJoyHeld]
+ bit 0, a
+ jr nz, .pressedA
+ bit 1, a
+ jp nz, .mainMenuLoop ; pressed B
jr .inputLoop
.pressedA
call GBPalWhiteOutWithDelay3
call ClearScreen
- ld a,PLAYER_DIR_DOWN
- ld [wPlayerDirection],a
- ld c,10
+ ld a, PLAYER_DIR_DOWN
+ ld [wPlayerDirection], a
+ ld c, 10
call DelayFrames
- ld a,[wNumHoFTeams]
+ ld a, [wNumHoFTeams]
and a
- jp z,SpecialEnterMap
- ld a,[wCurMap] ; map ID
- cp a,HALL_OF_FAME
- jp nz,SpecialEnterMap
+ jp z, SpecialEnterMap
+ ld a, [wCurMap] ; map ID
+ cp HALL_OF_FAME
+ jp nz, SpecialEnterMap
xor a
- ld [wDestinationMap],a
- ld hl,wd732
- set 2,[hl] ; fly warp or dungeon warp
+ ld [wDestinationMap], a
+ ld hl, wd732
+ set 2, [hl] ; fly warp or dungeon warp
call SpecialWarpIn
jp SpecialEnterMap
InitOptions:
- ld a,1 ; no delay
- ld [wLetterPrintingDelayFlags],a
- ld a,3 ; medium speed
- ld [wOptions],a
- ld a,64 ; audio?
+ ld a, 1 ; no delay
+ ld [wLetterPrintingDelayFlags], a
+ ld a, 3 ; medium speed
+ ld [wOptions], a
+ ld a, 64 ; audio?
ld [wPrinterSettings], a
ret
@@ -175,8 +175,8 @@ ContinueText:
db "CONTINUE", $4e
NewGameText:
- db "NEW GAME", $4e
- db "OPTION@"
+ db "NEW GAME"
+ next "OPTION@"
DisplayContinueGameInfo:
xor a
diff --git a/engine/menu/naming_screen.asm b/engine/menu/naming_screen.asm
index 911c4e99..2560677a 100755
--- a/engine/menu/naming_screen.asm
+++ b/engine/menu/naming_screen.asm
@@ -380,10 +380,10 @@ PrintAlphabet:
jp Delay3
LowerCaseAlphabet:
- db "abcdefghijklmnopqrstuvwxyz ×():;[]",$e1,$e2,"-?!♂♀/",$f2,",¥UPPER CASE@"
+ db "abcdefghijklmnopqrstuvwxyz ×():;[]",$e1,$e2,"-?!♂♀/⠄,¥UPPER CASE@"
UpperCaseAlphabet:
- db "ABCDEFGHIJKLMNOPQRSTUVWXYZ ×():;[]",$e1,$e2,"-?!♂♀/",$f2,",¥lower case@"
+ db "ABCDEFGHIJKLMNOPQRSTUVWXYZ ×():;[]",$e1,$e2,"-?!♂♀/⠄,¥lower case@"
PrintNicknameAndUnderscores:
call CalcStringLength
@@ -423,7 +423,7 @@ PrintNicknameAndUnderscores:
call EraseMenuCursor
ld a, $11 ; "ED" x coord
ld [wTopMenuItemX], a
- ld a, $5 ; "ED" y corrd
+ ld a, $5 ; "ED" y coord
ld [wCurrentMenuItem], a
ld a, [wNamingScreenType]
cp NAME_MON_SCREEN
diff --git a/engine/menu/oaks_pc.asm b/engine/menu/oaks_pc.asm
index e4172ec7..03c9b8f1 100755
--- a/engine/menu/oaks_pc.asm
+++ b/engine/menu/oaks_pc.asm
@@ -20,7 +20,8 @@ GetDexRatedText:
ClosedOaksPCText:
TX_FAR _ClosedOaksPCText
- db $0d,"@"
+ TX_WAIT
+ db "@"
AccessedOaksPCText:
TX_FAR _AccessedOaksPCText
diff --git a/engine/menu/party_menu.asm b/engine/menu/party_menu.asm
index 669d49db..00c757be 100755
--- a/engine/menu/party_menu.asm
+++ b/engine/menu/party_menu.asm
@@ -19,38 +19,38 @@
; f8: leveled up
DrawPartyMenu_:
xor a
- ld [H_AUTOBGTRANSFERENABLED],a
+ ld [H_AUTOBGTRANSFERENABLED], a
call ClearScreen
call UpdateSprites
callba LoadMonPartySpriteGfxWithLCDDisabled ; load pokemon icon graphics
RedrawPartyMenu_:
- ld a,[wPartyMenuTypeOrMessageID]
- cp a,SWAP_MONS_PARTY_MENU
- jp z,.printMessage
+ ld a, [wPartyMenuTypeOrMessageID]
+ cp SWAP_MONS_PARTY_MENU
+ jp z, .printMessage
call ErasePartyMenuCursors
callba InitPartyMenuBlkPacket
coord hl, 3, 0
- ld de,wPartySpecies
+ ld de, wPartySpecies
xor a
- ld c,a
- ld [hPartyMonIndex],a
- ld [wWhichPartyMenuHPBar],a
+ ld c, a
+ ld [hPartyMonIndex], a
+ ld [wWhichPartyMenuHPBar], a
.loop
- ld a,[de]
- cp a,$FF ; reached the terminator?
- jp z,.afterDrawingMonEntries
+ ld a, [de]
+ cp $FF ; reached the terminator?
+ jp z, .afterDrawingMonEntries
push bc
push de
push hl
- ld a,c
+ ld a, c
push hl
- ld hl,wPartyMonNicks
+ ld hl, wPartyMonNicks
call GetPartyMonName
pop hl
call PlaceString ; print the pokemon's name
- ld a,[hPartyMonIndex]
- ld [wWhichPokemon],a
+ ld a, [hPartyMonIndex]
+ ld [wWhichPokemon], a
callab IsThisPartymonStarterPikachu_Party
jr nc, .regularMon
call CheckPikachuFollowingPlayer
@@ -61,49 +61,49 @@ RedrawPartyMenu_:
callba WriteMonPartySpriteOAMByPartyIndex ; place the appropriate pokemon icon
ld a, [wWhichPokemon]
inc a
- ld [hPartyMonIndex],a
+ ld [hPartyMonIndex], a
call LoadMonData
pop hl
push hl
- ld a,[wMenuItemToSwap]
+ ld a, [wMenuItemToSwap]
and a ; is the player swapping pokemon positions?
- jr z,.skipUnfilledRightArrow
+ jr z, .skipUnfilledRightArrow
; if the player is swapping pokemon positions
dec a
- ld b,a
- ld a,[wWhichPokemon]
+ ld b, a
+ ld a, [wWhichPokemon]
cp b ; is the player swapping the current pokemon in the list?
- jr nz,.skipUnfilledRightArrow
+ jr nz, .skipUnfilledRightArrow
; the player is swapping the current pokemon in the list
dec hl
dec hl
dec hl
- ld a,$EC ; unfilled right arrow menu cursor
- ld [hli],a ; place the cursor
+ ld a, "▷" ; unfilled right arrow menu cursor
+ ld [hli], a ; place the cursor
inc hl
inc hl
.skipUnfilledRightArrow
- ld a,[wPartyMenuTypeOrMessageID] ; menu type
- cp a,TMHM_PARTY_MENU
- jr z,.teachMoveMenu
- cp a,EVO_STONE_PARTY_MENU
- jr z,.evolutionStoneMenu
+ ld a, [wPartyMenuTypeOrMessageID] ; menu type
+ cp TMHM_PARTY_MENU
+ jr z, .teachMoveMenu
+ cp EVO_STONE_PARTY_MENU
+ jr z, .evolutionStoneMenu
push hl
- ld bc,14 ; 14 columns to the right
- add hl,bc
- ld de,wLoadedMonStatus
+ ld bc, 14 ; 14 columns to the right
+ add hl, bc
+ ld de, wLoadedMonStatus
call PrintStatusCondition
pop hl
push hl
- ld bc,20 + 1 ; down 1 row and right 1 column
- ld a,[hFlags_0xFFFA]
- set 0,a
- ld [hFlags_0xFFFA],a
- add hl,bc
+ ld bc, SCREEN_WIDTH + 1 ; down 1 row and right 1 column
+ ld a, [hFlags_0xFFFA]
+ set 0, a
+ ld [hFlags_0xFFFA], a
+ add hl, bc
predef DrawHP2 ; draw HP bar and prints current / max HP
- ld a,[hFlags_0xFFFA]
- res 0,a
- ld [hFlags_0xFFFA],a
+ ld a, [hFlags_0xFFFA]
+ res 0, a
+ ld [hFlags_0xFFFA], a
call SetPartyMenuHPBarColor ; color the HP bar (on SGB)
pop hl
jr .printLevel
@@ -111,26 +111,26 @@ RedrawPartyMenu_:
push hl
predef CanLearnTM ; check if the pokemon can learn the move
pop hl
- ld de,.ableToLearnMoveText
- ld a,c
+ ld de, .ableToLearnMoveText
+ ld a, c
and a
- jr nz,.placeMoveLearnabilityString
- ld de,.notAbleToLearnMoveText
+ jr nz, .placeMoveLearnabilityString
+ ld de, .notAbleToLearnMoveText
.placeMoveLearnabilityString
push hl
- ld bc,20 + 9 ; down 1 row and right 9 columns
- add hl,bc
+ ld bc, 20 + 9 ; down 1 row and right 9 columns
+ add hl, bc
call PlaceString
pop hl
.printLevel
- ld bc,10 ; move 10 columns to the right
- add hl,bc
+ ld bc, 10 ; move 10 columns to the right
+ add hl, bc
call PrintLevel
pop hl
pop de
inc de
- ld bc,2 * 20
- add hl,bc
+ ld bc, 2 * 20
+ add hl, bc
pop bc
inc c
jp .loop
@@ -140,54 +140,54 @@ RedrawPartyMenu_:
db "NOT ABLE@"
.evolutionStoneMenu
push hl
- ld hl,EvosMovesPointerTable
- ld b,0
- ld a,[wLoadedMonSpecies]
+ ld hl, EvosMovesPointerTable
+ ld b, 0
+ ld a, [wLoadedMonSpecies]
dec a
add a
rl b
- ld c,a
- add hl,bc
- ld de,wcd6d
- ld a,BANK(EvosMovesPointerTable)
- ld bc,2
+ ld c, a
+ add hl, bc
+ ld de, wEvosMoves
+ ld a, BANK(EvosMovesPointerTable)
+ ld bc, 2
call FarCopyData
- ld hl,wcd6d
- ld a,[hli]
- ld h,[hl]
- ld l,a
- ld de,wcd6d
- ld a,BANK(EvosMovesPointerTable)
- ld bc, $0d ; Mon133_EvosEnd - Mon133_EvosMoves
+ ld hl, wEvosMoves
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, wEvosMoves
+ ld a, BANK(EvosMovesPointerTable)
+ ld bc, wEvosMoves.end - wEvosMoves
call FarCopyData
- ld hl,wcd6d
- ld de,.notAbleToEvolveText
+ ld hl, wEvosMoves
+ ld de, .notAbleToEvolveText
; loop through the pokemon's evolution entries
.checkEvolutionsLoop
- ld a,[hli]
+ ld a, [hli]
and a ; reached terminator?
- jr z,.placeEvolutionStoneString ; if so, place the "NOT ABLE" string
+ jr z, .placeEvolutionStoneString ; if so, place the "NOT ABLE" string
inc hl
inc hl
- cp a,EV_ITEM
- jr nz,.checkEvolutionsLoop
+ cp EV_ITEM
+ jr nz, .checkEvolutionsLoop
; if it's a stone evolution entry
dec hl
dec hl
- ld b,[hl]
- ld a,[wEvoStoneItemID] ; the stone the player used
+ ld b, [hl]
+ ld a, [wEvoStoneItemID] ; the stone the player used
inc hl
inc hl
inc hl
cp b ; does the player's stone match this evolution entry's stone?
- jr nz,.checkEvolutionsLoop
+ jr nz, .checkEvolutionsLoop
; if it does match
- ld de,.ableToEvolveText
+ ld de, .ableToEvolveText
.placeEvolutionStoneString
pop hl
push hl
- ld bc,20 + 9 ; down 1 row and right 9 columns
- add hl,bc
+ ld bc, 20 + 9 ; down 1 row and right 9 columns
+ add hl, bc
call PlaceString
pop hl
jr .printLevel
@@ -199,44 +199,44 @@ RedrawPartyMenu_:
ld b, SET_PAL_PARTY_MENU
call RunPaletteCommand
.printMessage
- ld hl,wd730
- ld a,[hl]
+ ld hl, wd730
+ ld a, [hl]
push af
push hl
- set 6,[hl] ; turn off letter printing delay
- ld a,[wPartyMenuTypeOrMessageID] ; message ID
- cp a,$F0
- jr nc,.printItemUseMessage
+ set 6, [hl] ; turn off letter printing delay
+ ld a, [wPartyMenuTypeOrMessageID] ; message ID
+ cp $F0
+ jr nc, .printItemUseMessage
add a
- ld hl,PartyMenuMessagePointers
- ld b,0
- ld c,a
- add hl,bc
- ld a,[hli]
- ld h,[hl]
- ld l,a
+ ld hl, PartyMenuMessagePointers
+ ld b, 0
+ ld c, a
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
call PrintText
.done
pop hl
pop af
- ld [hl],a
- ld a,1
- ld [H_AUTOBGTRANSFERENABLED],a
+ ld [hl], a
+ ld a, 1
+ ld [H_AUTOBGTRANSFERENABLED], a
call Delay3
jp GBPalNormal
.printItemUseMessage
- and a,$0F
- ld hl,PartyMenuItemUseMessagePointers
+ and $0F
+ ld hl, PartyMenuItemUseMessagePointers
add a
- ld c,a
- ld b,0
- add hl,bc
- ld a,[hli]
- ld h,[hl]
- ld l,a
+ ld c, a
+ ld b, 0
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
push hl
- ld a,[wUsedItemOnWhichPokemon]
- ld hl,wPartyMonNicks
+ ld a, [wUsedItemOnWhichPokemon]
+ ld hl, wPartyMonNicks
call GetPartyMonName
pop hl
call PrintText
@@ -315,8 +315,8 @@ ReviveText:
RareCandyText:
TX_FAR _RareCandyText
- db $0B
- db $06
+ TX_SFX_ITEM_1 ; probably supposed to play SFX_LEVEL_UP but the wrong music bank is loaded
+ TX_BLINK
db "@"
SetPartyMenuHPBarColor:
diff --git a/engine/menu/pc.asm b/engine/menu/pc.asm
index c9e2cf08..5639bd99 100755
--- a/engine/menu/pc.asm
+++ b/engine/menu/pc.asm
@@ -17,34 +17,34 @@ PCMainMenu:
bit 1, a ;if player pressed B
jp nz, LogOff
ld a, [wMaxMenuItem]
- cp a, 2
+ cp 2
jr nz, .next ;if not 2 menu items (not counting log off) (2 occurs before you get the pokedex)
ld a, [wCurrentMenuItem]
and a
jp z, BillsPC ;if current menu item id is 0, it's bills pc
- cp a, 1
+ cp 1
jr z, .playersPC ;if current menu item id is 1, it's players pc
jp LogOff ;otherwise, it's 2, and you're logging off
.next
- cp a, 3
+ cp 3
jr nz, .next2 ;if not 3 menu items (not counting log off) (3 occurs after you get the pokedex, before you beat the pokemon league)
ld a, [wCurrentMenuItem]
and a
jp z, BillsPC ;if current menu item id is 0, it's bills pc
- cp a, 1
+ cp 1
jr z, .playersPC ;if current menu item id is 1, it's players pc
- cp a, 2
+ cp 2
jp z, OaksPC ;if current menu item id is 2, it's oaks pc
jp LogOff ;otherwise, it's 3, and you're logging off
.next2
ld a, [wCurrentMenuItem]
and a
jp z, BillsPC ;if current menu item id is 0, it's bills pc
- cp a, 1
+ cp 1
jr z, .playersPC ;if current menu item id is 1, it's players pc
- cp a, 2
+ cp 2
jp z, OaksPC ;if current menu item id is 2, it's oaks pc
- cp a, 3
+ cp 3
jp z, PKMNLeague ;if current menu item id is 3, it's pkmnleague
jp LogOff ;otherwise, it's 4, and you're logging off
.playersPC
diff --git a/engine/menu/pokedex.asm b/engine/menu/pokedex.asm
index 166e026d..bc2a7e9b 100755
--- a/engine/menu/pokedex.asm
+++ b/engine/menu/pokedex.asm
@@ -260,7 +260,7 @@ Pokedex_DrawInterface:
ld [H_AUTOBGTRANSFERENABLED], a
; draw the horizontal line separating the seen and owned amounts from the menu
coord hl, 15, 6
- ld a, $7a ; horizontal line tile
+ ld a, "─"
ld [hli], a
ld [hli], a
ld [hli], a
@@ -356,7 +356,7 @@ Pokedex_PlacePokemonList:
ld [wd11e], a
ld d, 7
ld a, [wDexMaxSeenMon]
- cp a, 7
+ cp 7
jr nc, .printPokemonLoop
ld d, a
dec a
@@ -403,7 +403,7 @@ Pokedex_PlacePokemonList:
inc hl
call PlaceString
pop hl
- ld bc, 2 * 20
+ ld bc, 2 * SCREEN_WIDTH
add hl, bc
pop de
pop af
@@ -475,7 +475,7 @@ ShowPokedexDataInternal:
ret
HeightWeightText:
- db "HT ?", $60, "??", $61
+ db "HT ?", $60, "??", $61
next "WT ???lb@"
; XXX does anything point to this?
@@ -556,7 +556,7 @@ DrawDexEntryOnScreen:
coord hl, 2, 8
ld a, "№"
ld [hli], a
- ld a, $f2
+ ld a, "⠄"
ld [hli], a
ld de, wd11e
lb bc, LEADING_ZEROES | 1, 3
@@ -628,16 +628,16 @@ DrawDexEntryOnScreen:
call PrintNumber ; print weight
coord hl, 14, 8
ld a, [hDexWeight + 1]
- sub a, 10
+ sub 10
ld a, [hDexWeight]
- sbc a, 0
+ sbc 0
jr nc, .next
ld [hl], "0" ; if the weight is less than 10, put a 0 before the decimal point
.next
inc hl
ld a, [hli]
ld [hld], a ; make space for the decimal point by moving the last digit forward one tile
- ld [hl], $f2 ; decimal point tile
+ ld [hl], "⠄" ; decimal point tile
pop af
ld [hDexWeight + 1], a ; restore original value of [hDexWeight + 1]
pop af
@@ -729,7 +729,7 @@ PokedexToIndex:
ret
IndexToPokedex:
- ; converts the indexédex number at wd11e to a Pokédex number
+ ; converts the index number at wd11e to a Pokédex number
push bc
push hl
ld a, [wd11e]
diff --git a/engine/menu/prize_menu.asm b/engine/menu/prize_menu.asm
index d1b1be3c..405441c8 100755
--- a/engine/menu/prize_menu.asm
+++ b/engine/menu/prize_menu.asm
@@ -1,38 +1,38 @@
CeladonPrizeMenu:
- ld b,COIN_CASE
+ ld b, COIN_CASE
call IsItemInBag
- jr nz,.havingCoinCase
- ld hl,RequireCoinCaseTextPtr
+ jr nz, .havingCoinCase
+ ld hl, RequireCoinCaseTextPtr
jp PrintText
.havingCoinCase
- ld hl,wd730
- set 6,[hl] ; disable letter-printing delay
- ld hl,ExchangeCoinsForPrizesTextPtr
+ ld hl, wd730
+ set 6, [hl] ; disable letter-printing delay
+ ld hl, ExchangeCoinsForPrizesTextPtr
call PrintText
; the following are the menu settings
xor a
- ld [wCurrentMenuItem],a
- ld [wLastMenuItem],a
- ld a,A_BUTTON | B_BUTTON
- ld [wMenuWatchedKeys],a
- ld a,$03
- ld [wMaxMenuItem],a
- ld a,$04
- ld [wTopMenuItemY],a
- ld a,$01
- ld [wTopMenuItemX],a
+ ld [wCurrentMenuItem], a
+ ld [wLastMenuItem], a
+ ld a, A_BUTTON | B_BUTTON
+ ld [wMenuWatchedKeys], a
+ ld a, $03
+ ld [wMaxMenuItem], a
+ ld a, $04
+ ld [wTopMenuItemY], a
+ ld a, $01
+ ld [wTopMenuItemX], a
call PrintPrizePrice
coord hl, 0, 2
lb bc, 8, 16
call TextBoxBorder
call GetPrizeMenuId
call UpdateSprites
- ld hl,WhichPrizeTextPtr
+ ld hl, WhichPrizeTextPtr
call PrintText
call HandleMenuInput ; menu choice handler
- bit 1,a ; keypress = B (Cancel)
+ bit 1, a ; keypress = B (Cancel)
jr nz, .noChoice
- ld a,[wCurrentMenuItem]
+ ld a, [wCurrentMenuItem]
cp 3 ; "NO,THANKS" choice
jr z, .noChoice
call HandlePrizeChoice
@@ -43,7 +43,7 @@ CeladonPrizeMenu:
RequireCoinCaseTextPtr:
TX_FAR _RequireCoinCaseText
- db $0D
+ TX_WAIT
db "@"
ExchangeCoinsForPrizesTextPtr:
@@ -131,11 +131,11 @@ GetPrizeMenuId:
; reg. c:
; [low nybble] number of bytes
; [bit 765 = %100] space-padding (not zero-padding)
- ld c,(1 << 7 | 2)
+ ld c, (1 << 7 | 2)
; Function $15CD displays BCD value (same routine
; used by text-command $02)
call PrintBCDNumber
- ld de,wPrize2Price
+ ld de, wPrize2Price
coord hl, 13, 7
ld c, (1 << 7 | 2)
call PrintBCDNumber
@@ -161,8 +161,8 @@ PrintPrizePrice:
ld de, .SixSpacesString
call PlaceString
coord hl, 13, 1
- ld de,wPlayerCoins
- ld c, (1 << 7 | 2)
+ ld de, wPlayerCoins
+ ld c, %10000010
call PrintBCDNumber
ret
@@ -173,7 +173,7 @@ PrintPrizePrice:
db " @"
LoadCoinsToSubtract:
- ld a,[wWhichPrize]
+ ld a, [wWhichPrize]
add a
ld d, 0
ld e, a
@@ -204,7 +204,7 @@ HandlePrizeChoice:
.getMonName
call GetMonName
.givePrize
- ld hl,SoYouWantPrizeTextPtr
+ ld hl, SoYouWantPrizeTextPtr
call PrintText
call YesNoChoice
ld a, [wCurrentMenuItem] ; yes/no answer (Y=0, N=1)
@@ -216,7 +216,7 @@ HandlePrizeChoice:
ld a, [wWhichPrizeWindow]
cp $02
jr nz, .giveMon
- ld a,[wd11e]
+ ld a, [wd11e]
ld b, a
ld a, 1
ld c, a
@@ -224,20 +224,20 @@ HandlePrizeChoice:
jr nc, .bagFull
jr .subtractCoins
.giveMon
- ld a,[wd11e]
- ld [wcf91],a
+ ld a, [wd11e]
+ ld [wcf91], a
push af
call GetPrizeMonLevel
- ld c,a
+ ld c, a
pop af
- ld b,a
+ ld b, a
call GivePokemon
; If either the party or box was full, wait after displaying message.
push af
- ld a,[wAddedToParty]
+ ld a, [wAddedToParty]
and a
- call z,WaitForTextScrollButtonPress
+ call z, WaitForTextScrollButtonPress
pop af
; If the mon couldn't be given to the player (because both the party and box
@@ -246,19 +246,19 @@ HandlePrizeChoice:
.subtractCoins
call LoadCoinsToSubtract
- ld hl,hCoins + 1
- ld de,wPlayerCoins + 1
- ld c,$02 ; how many bytes
+ ld hl, hCoins + 1
+ ld de, wPlayerCoins + 1
+ ld c, $02 ; how many bytes
predef SubBCDPredef
jp PrintPrizePrice
.bagFull
- ld hl,PrizeRoomBagIsFullTextPtr
+ ld hl, PrizeRoomBagIsFullTextPtr
jp PrintText
.notEnoughCoins
- ld hl,SorryNeedMoreCoinsText
+ ld hl, SorryNeedMoreCoinsText
jp PrintText
.printOhFineThen
- ld hl,OhFineThenTextPtr
+ ld hl, OhFineThenTextPtr
jp PrintText
UnknownPrizeData:
@@ -267,7 +267,7 @@ UnknownPrizeData:
HereYouGoTextPtr:
TX_FAR _HereYouGoText
- db $0D
+ TX_WAIT
db "@"
SoYouWantPrizeTextPtr:
@@ -276,17 +276,17 @@ SoYouWantPrizeTextPtr:
SorryNeedMoreCoinsText:
TX_FAR _SorryNeedMoreCoinsText
- db $0D
+ TX_WAIT
db "@"
PrizeRoomBagIsFullTextPtr:
TX_FAR _OopsYouDontHaveEnoughRoomText
- db $0D
+ TX_WAIT
db "@"
OhFineThenTextPtr:
TX_FAR _OhFineThenText
- db $0D ; wait keypress (A/B) without blink
+ TX_WAIT
db "@"
GetPrizeMonLevel:
diff --git a/engine/menu/start_menu.asm b/engine/menu/start_menu.asm
index af687432..498d1467 100755
--- a/engine/menu/start_menu.asm
+++ b/engine/menu/start_menu.asm
@@ -53,7 +53,7 @@ RedisplayStartMenu_DoNotDrawStartMenu:
ld a, [wCurrentMenuItem]
ld [wBattleAndStartSavedMenuItem], a ; save current menu selection
ld a, b
- and a, %00001010 ; was the Start button or B button pressed?
+ and %00001010 ; was the Start button or B button pressed?
jp nz, CloseStartMenu
call SaveScreenTilesToBuffer2 ; copy background from wTileMap to wTileMapBackup2
CheckEvent EVENT_GOT_POKEDEX
@@ -61,17 +61,17 @@ RedisplayStartMenu_DoNotDrawStartMenu:
jr nz, .displayMenuItem
inc a ; adjust position to account for missing pokedex menu item
.displayMenuItem
- cp a, 0
+ cp 0
jp z, StartMenu_Pokedex
- cp a, 1
+ cp 1
jp z, StartMenu_Pokemon
- cp a, 2
+ cp 2
jp z, StartMenu_Item
- cp a, 3
+ cp 3
jp z, StartMenu_TrainerInfo
- cp a, 4
+ cp 4
jp z, StartMenu_SaveReset
- cp a, 5
+ cp 5
jp z, StartMenu_Option
; EXIT falls through to here
diff --git a/engine/menu/start_sub_menus.asm b/engine/menu/start_sub_menus.asm
index a93fb2e3..abc8f000 100755
--- a/engine/menu/start_sub_menus.asm
+++ b/engine/menu/start_sub_menus.asm
@@ -7,22 +7,22 @@ StartMenu_Pokedex:
jp RedisplayStartMenu
StartMenu_Pokemon:
- ld a,[wPartyCount]
+ ld a, [wPartyCount]
and a
- jp z,RedisplayStartMenu
+ jp z, RedisplayStartMenu
xor a
- ld [wMenuItemToSwap],a
- ld [wPartyMenuTypeOrMessageID],a
- ld [wUpdateSpritesEnabled],a
+ ld [wMenuItemToSwap], a
+ ld [wPartyMenuTypeOrMessageID], a
+ ld [wUpdateSpritesEnabled], a
call DisplayPartyMenu
jr .checkIfPokemonChosen
.loop
xor a
- ld [wMenuItemToSwap],a
- ld [wPartyMenuTypeOrMessageID],a
+ ld [wMenuItemToSwap], a
+ ld [wPartyMenuTypeOrMessageID], a
call GoBackToPartyMenu
.checkIfPokemonChosen
- jr nc,.chosePokemon
+ jr nc, .chosePokemon
.exitMenu
call GBPalWhiteOutWithDelay3
call RestoreScreenTilesAndReloadTilePatterns
@@ -30,94 +30,94 @@ StartMenu_Pokemon:
jp RedisplayStartMenu
.chosePokemon
call SaveScreenTilesToBuffer1
- ld a,FIELD_MOVE_MON_MENU
- ld [wTextBoxID],a
+ ld a, FIELD_MOVE_MON_MENU
+ ld [wTextBoxID], a
call DisplayTextBoxID ; display pokemon menu options
- ld hl,wFieldMoves
+ ld hl, wFieldMoves
lb bc, 2, 12 ; max menu item ID, top menu item Y
- ld e,5
+ ld e, 5
.adjustMenuVariablesLoop
dec e
- jr z,.storeMenuVariables
- ld a,[hli]
+ jr z, .storeMenuVariables
+ ld a, [hli]
and a ; end of field moves?
- jr z,.storeMenuVariables
+ jr z, .storeMenuVariables
inc b
dec c
dec c
jr .adjustMenuVariablesLoop
.storeMenuVariables
- ld hl,wTopMenuItemY
- ld a,c
- ld [hli],a ; top menu item Y
- ld a,[hFieldMoveMonMenuTopMenuItemX]
- ld [hli],a ; top menu item X
+ ld hl, wTopMenuItemY
+ ld a, c
+ ld [hli], a ; top menu item Y
+ ld a, [hFieldMoveMonMenuTopMenuItemX]
+ ld [hli], a ; top menu item X
xor a
- ld [hli],a ; current menu item ID
+ ld [hli], a ; current menu item ID
inc hl
- ld a,b
- ld [hli],a ; max menu item ID
- ld a,A_BUTTON | B_BUTTON
- ld [hli],a ; menu watched keys
+ ld a, b
+ ld [hli], a ; max menu item ID
+ ld a, A_BUTTON | B_BUTTON
+ ld [hli], a ; menu watched keys
xor a
- ld [hl],a
+ ld [hl], a
call HandleMenuInput
push af
call LoadScreenTilesFromBuffer1 ; restore saved screen
pop af
- bit 1,a ; was the B button pressed?
- jp nz,.loop
+ bit 1, a ; was the B button pressed?
+ jp nz, .loop
; if the B button wasn't pressed
- ld a,[wMaxMenuItem]
- ld b,a
- ld a,[wCurrentMenuItem] ; menu selection
+ ld a, [wMaxMenuItem]
+ ld b, a
+ ld a, [wCurrentMenuItem] ; menu selection
cp b
- jp z,.exitMenu ; if the player chose Cancel
+ jp z, .exitMenu ; if the player chose Cancel
dec b
cp b
- jr z,.choseSwitch
+ jr z, .choseSwitch
dec b
cp b
- jp z,.choseStats
- ld c,a
- ld b,0
- ld hl,wFieldMoves
- add hl,bc
+ jp z, .choseStats
+ ld c, a
+ ld b, 0
+ ld hl, wFieldMoves
+ add hl, bc
jp .choseOutOfBattleMove
.choseSwitch
- ld a,[wPartyCount]
- cp a,2 ; is there more than one pokemon in the party?
- jp c,StartMenu_Pokemon ; if not, no switching
+ ld a, [wPartyCount]
+ cp 2 ; is there more than one pokemon in the party?
+ jp c, StartMenu_Pokemon ; if not, no switching
call SwitchPartyMon_InitVarOrSwapData ; init [wMenuItemToSwap]
- ld a,SWAP_MONS_PARTY_MENU
- ld [wPartyMenuTypeOrMessageID],a
+ ld a, SWAP_MONS_PARTY_MENU
+ ld [wPartyMenuTypeOrMessageID], a
call GoBackToPartyMenu
jp .checkIfPokemonChosen
.choseStats
call ClearSprites
xor a ; PLAYER_PARTY_DATA
- ld [wMonDataLocation],a
+ ld [wMonDataLocation], a
predef StatusScreen
predef StatusScreen2
call ReloadMapData
jp StartMenu_Pokemon
.choseOutOfBattleMove
push hl
- ld a,[wWhichPokemon]
- ld hl,wPartyMonNicks
+ ld a, [wWhichPokemon]
+ ld hl, wPartyMonNicks
call GetPartyMonName
pop hl
- ld a,[hl]
+ ld a, [hl]
dec a
add a
- ld b,0
- ld c,a
- ld hl,.outOfBattleMovePointers
- add hl,bc
- ld a,[hli]
- ld h,[hl]
- ld l,a
- ld a,[wObtainedBadges] ; badges obtained
+ ld b, 0
+ ld c, a
+ ld hl, .outOfBattleMovePointers
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [wObtainedBadges] ; badges obtained
jp hl
.outOfBattleMovePointers
dw .cut
@@ -130,44 +130,44 @@ StartMenu_Pokemon:
dw .teleport
dw .softboiled
.fly
- bit 2,a ; does the player have the Thunder Badge?
- jp z,.newBadgeRequired
+ bit 2, a ; does the player have the Thunder Badge?
+ jp z, .newBadgeRequired
call CheckIfInOutsideMap
- jr z,.canFly
- ld a,[wWhichPokemon]
- ld hl,wPartyMonNicks
+ jr z, .canFly
+ ld a, [wWhichPokemon]
+ ld hl, wPartyMonNicks
call GetPartyMonName
- ld hl,.cannotFlyHereText
+ ld hl, .cannotFlyHereText
call PrintText
jp .loop
.canFly
call ChooseFlyDestination
- ld a,[wd732]
- bit 3,a ; did the player decide to fly?
- jr nz,.asm_5d4c
+ ld a, [wd732]
+ bit 3, a ; did the player decide to fly?
+ jr nz, .asm_5d4c
call LoadFontTilePatterns
- ld hl,wd72e
- set 1,[hl]
+ ld hl, wd72e
+ set 1, [hl]
jp StartMenu_Pokemon
.asm_5d4c
call Func_1510
jp .goBackToMap
.cut
- bit 1,a ; does the player have the Cascade Badge?
- jp z,.newBadgeRequired
+ bit 1, a ; does the player have the Cascade Badge?
+ jp z, .newBadgeRequired
predef UsedCut
- ld a,[wActionResultOrTookBattleTurn]
+ ld a, [wActionResultOrTookBattleTurn]
and a
- jp z,.loop
+ jp z, .loop
jp CloseTextDisplay
.surf
- bit 4,a ; does the player have the Soul Badge?
- jp z,.newBadgeRequired
+ bit 4, a ; does the player have the Soul Badge?
+ jp z, .newBadgeRequired
callba IsSurfingAllowed
- ld hl,wd728
- bit 1,[hl]
- res 1,[hl]
- jp z,.loop
+ ld hl, wd728
+ bit 1, [hl]
+ res 1, [hl]
+ jp z, .loop
ld a, [wcf91]
cp PIKACHU ; is this surfing pikachu?
jr z, .surfingPikachu
@@ -178,12 +178,12 @@ StartMenu_Pokemon:
.continue
ld [wd473], a
ld a,SURFBOARD
- ld [wcf91],a
- ld [wPseudoItemID],a
+ ld [wcf91], a
+ ld [wPseudoItemID], a
call UseItem
- ld a,[wActionResultOrTookBattleTurn]
+ ld a, [wActionResultOrTookBattleTurn]
and a
- jr z,.reloadNormalSprite
+ jr z, .reloadNormalSprite
call GBPalWhiteOutWithDelay3
jp .goBackToMap
.reloadNormalSprite
@@ -191,17 +191,17 @@ StartMenu_Pokemon:
ld [wd473], a
jp .loop
.strength
- bit 3,a ; does the player have the Rainbow Badge?
- jp z,.newBadgeRequired
+ bit 3, a ; does the player have the Rainbow Badge?
+ jp z, .newBadgeRequired
predef PrintStrengthTxt
call GBPalWhiteOutWithDelay3
jp .goBackToMap
.flash
- bit 0,a ; does the player have the Boulder Badge?
- jp z,.newBadgeRequired
+ bit 0, a ; does the player have the Boulder Badge?
+ jp z, .newBadgeRequired
xor a
- ld [wMapPalOffset],a
- ld hl,.flashLightsAreaText
+ ld [wMapPalOffset], a
+ ld hl, .flashLightsAreaText
call PrintText
call GBPalWhiteOutWithDelay3
jp .goBackToMap
@@ -209,35 +209,35 @@ StartMenu_Pokemon:
TX_FAR _FlashLightsAreaText
db "@"
.dig
- ld a,ESCAPE_ROPE
- ld [wcf91],a
- ld [wPseudoItemID],a
+ ld a, ESCAPE_ROPE
+ ld [wcf91], a
+ ld [wPseudoItemID], a
call UseItem
- ld a,[wActionResultOrTookBattleTurn]
+ ld a, [wActionResultOrTookBattleTurn]
and a
- jp z,.loop
+ jp z, .loop
call GBPalWhiteOutWithDelay3
jp .goBackToMap
.teleport
call CheckIfInOutsideMap
- jr z,.canTeleport
- ld a,[wWhichPokemon]
- ld hl,wPartyMonNicks
+ jr z, .canTeleport
+ ld a, [wWhichPokemon]
+ ld hl, wPartyMonNicks
call GetPartyMonName
- ld hl,.cannotUseTeleportNowText
+ ld hl, .cannotUseTeleportNowText
call PrintText
jp .loop
.canTeleport
- ld hl,.warpToLastPokemonCenterText
+ ld hl, .warpToLastPokemonCenterText
call PrintText
- ld hl,wd732
- set 3,[hl]
- set 6,[hl]
+ ld hl, wd732
+ set 3, [hl]
+ set 6, [hl]
call Func_1510
- ld hl,wd72e
- set 1,[hl]
- res 4,[hl]
- ld c,60
+ ld hl, wd72e
+ set 1, [hl]
+ res 4, [hl]
+ ld c, 60
call DelayFrames
call GBPalWhiteOutWithDelay3
jp .goBackToMap
@@ -251,39 +251,39 @@ StartMenu_Pokemon:
TX_FAR _CannotFlyHereText
db "@"
.softboiled
- ld hl,wPartyMon1MaxHP
- ld a,[wWhichPokemon]
- ld bc,wPartyMon2 - wPartyMon1
+ ld hl, wPartyMon1MaxHP
+ ld a, [wWhichPokemon]
+ ld bc, wPartyMon2 - wPartyMon1
call AddNTimes
- ld a,[hli]
- ld [H_DIVIDEND],a
- ld a,[hl]
- ld [H_DIVIDEND + 1],a
- ld a,5
- ld [H_DIVISOR],a
- ld b,2 ; number of bytes
+ ld a, [hli]
+ ld [H_DIVIDEND], a
+ ld a, [hl]
+ ld [H_DIVIDEND + 1], a
+ ld a, 5
+ ld [H_DIVISOR], a
+ ld b, 2 ; number of bytes
call Divide
- ld bc,wPartyMon1HP - wPartyMon1MaxHP
- add hl,bc
- ld a,[hld]
- ld b,a
- ld a,[H_QUOTIENT + 3]
+ ld bc, wPartyMon1HP - wPartyMon1MaxHP
+ add hl, bc
+ ld a, [hld]
+ ld b, a
+ ld a, [H_QUOTIENT + 3]
sub b
- ld b,[hl]
- ld a,[H_QUOTIENT + 2]
+ ld b, [hl]
+ ld a, [H_QUOTIENT + 2]
sbc b
- jp nc,.notHealthyEnough
- ld a,[wPartyAndBillsPCSavedMenuItem]
+ jp nc, .notHealthyEnough
+ ld a, [wPartyAndBillsPCSavedMenuItem]
push af
- ld a,POTION
- ld [wcf91],a
- ld [wPseudoItemID],a
+ ld a, POTION
+ ld [wcf91], a
+ ld [wPseudoItemID], a
call UseItem
pop af
- ld [wPartyAndBillsPCSavedMenuItem],a
+ ld [wPartyAndBillsPCSavedMenuItem], a
jp .loop
.notHealthyEnough ; if current HP is less than 1/5 of max HP
- ld hl,.notHealthyEnoughText
+ ld hl, .notHealthyEnoughText
call PrintText
jp .loop
.notHealthyEnoughText
@@ -293,7 +293,7 @@ StartMenu_Pokemon:
call RestoreScreenTilesAndReloadTilePatterns
jp CloseTextDisplay
.newBadgeRequired
- ld hl,.newBadgeRequiredText
+ ld hl, .newBadgeRequiredText
call PrintText
jp .loop
.newBadgeRequiredText
@@ -303,13 +303,13 @@ StartMenu_Pokemon:
; writes a blank tile to all possible menu cursor positions on the party menu
ErasePartyMenuCursors:
coord hl, 0, 1
- ld bc,2 * 20 ; menu cursor positions are 2 rows apart
- ld a,6 ; 6 menu cursor positions
+ ld bc, 2 * 20 ; menu cursor positions are 2 rows apart
+ ld a, 6 ; 6 menu cursor positions
.loop
- ld [hl]," "
- add hl,bc
+ ld [hl], " "
+ add hl, bc
dec a
- jr nz,.loop
+ jr nz, .loop
ret
ItemMenuLoop:
@@ -317,27 +317,27 @@ ItemMenuLoop:
call RunDefaultPaletteCommand
StartMenu_Item:
- ld a,[wLinkState]
+ ld a, [wLinkState]
dec a ; is the player in the Colosseum or Trade Centre?
- jr nz,.notInCableClubRoom
- ld hl,CannotUseItemsHereText
+ jr nz, .notInCableClubRoom
+ ld hl, CannotUseItemsHereText
call PrintText
jr .exitMenu
.notInCableClubRoom
- ld hl,wListPointer
+ ld hl, wListPointer
ld [hl], wNumBagItems & $ff
inc hl
ld [hl], wNumBagItems / $100 ; store item bag pointer in wListPointer (for DisplayListMenuID)
xor a
- ld [wPrintItemPrices],a
- ld a,ITEMLISTMENU
- ld [wListMenuID],a
- ld a,[wBagSavedMenuItem]
- ld [wCurrentMenuItem],a
+ ld [wPrintItemPrices], a
+ ld a, ITEMLISTMENU
+ ld [wListMenuID], a
+ ld a, [wBagSavedMenuItem]
+ ld [wCurrentMenuItem], a
call DisplayListMenuID
- ld a,[wCurrentMenuItem]
- ld [wBagSavedMenuItem],a
- jr nc,.choseItem
+ ld a, [wCurrentMenuItem]
+ ld [wBagSavedMenuItem], a
+ jr nc, .choseItem
.exitMenu
call LoadScreenTilesFromBuffer2 ; restore saved screen
call LoadTextBoxTilePatterns
@@ -345,111 +345,111 @@ StartMenu_Item:
jp RedisplayStartMenu
.choseItem
; erase menu cursor (blank each tile in front of an item name)
- ld a," "
+ ld a, " "
Coorda 5, 4
Coorda 5, 6
Coorda 5, 8
Coorda 5, 10
call PlaceUnfilledArrowMenuCursor
xor a
- ld [wMenuItemToSwap],a
- ld a,[wcf91]
- cp a,BICYCLE
- jp z,.useOrTossItem
+ ld [wMenuItemToSwap], a
+ ld a, [wcf91]
+ cp BICYCLE
+ jp z, .useOrTossItem
.notBicycle1
- ld a,USE_TOSS_MENU_TEMPLATE
- ld [wTextBoxID],a
+ ld a, USE_TOSS_MENU_TEMPLATE
+ ld [wTextBoxID], a
call DisplayTextBoxID
- ld hl,wTopMenuItemY
- ld a,11
- ld [hli],a ; top menu item Y
- ld a,14
- ld [hli],a ; top menu item X
+ ld hl, wTopMenuItemY
+ ld a, 11
+ ld [hli], a ; top menu item Y
+ ld a, 14
+ ld [hli], a ; top menu item X
xor a
- ld [hli],a ; current menu item ID
+ ld [hli], a ; current menu item ID
inc hl
inc a ; a = 1
- ld [hli],a ; max menu item ID
- ld a,A_BUTTON | B_BUTTON
- ld [hli],a ; menu watched keys
+ ld [hli], a ; max menu item ID
+ ld a, A_BUTTON | B_BUTTON
+ ld [hli], a ; menu watched keys
xor a
- ld [hl],a ; old menu item id
+ ld [hl], a ; old menu item id
call HandleMenuInput
call PlaceUnfilledArrowMenuCursor
- bit 1,a ; was the B button pressed?
- jr z,.useOrTossItem
+ bit 1, a ; was the B button pressed?
+ jr z, .useOrTossItem
jp ItemMenuLoop
.useOrTossItem ; if the player made the choice to use or toss the item
- ld a,[wcf91]
- ld [wd11e],a
+ ld a, [wcf91]
+ ld [wd11e], a
call GetItemName
call CopyStringToCF4B ; copy name to wcf4b
- ld a,[wcf91]
- cp a,BICYCLE
- jr nz,.notBicycle2
- ld a,[wd732]
- bit 5,a
- jr z,.useItem_closeMenu
- ld hl,CannotGetOffHereText
+ ld a, [wcf91]
+ cp BICYCLE
+ jr nz, .notBicycle2
+ ld a, [wd732]
+ bit 5, a
+ jr z, .useItem_closeMenu
+ ld hl, CannotGetOffHereText
call PrintText
jp ItemMenuLoop
.notBicycle2
- ld a,[wCurrentMenuItem]
+ ld a, [wCurrentMenuItem]
and a
- jr nz,.tossItem
+ jr nz, .tossItem
; use item
- ld [wPseudoItemID],a ; a must be 0 due to above conditional jump
- ld a,[wcf91]
- cp a,HM_01
- jr nc,.useItem_partyMenu
- ld hl,UsableItems_CloseMenu
- ld de,1
+ ld [wPseudoItemID], a ; a must be 0 due to above conditional jump
+ ld a, [wcf91]
+ cp HM_01
+ jr nc, .useItem_partyMenu
+ ld hl, UsableItems_CloseMenu
+ ld de, 1
call IsInArray
- jr c,.useItem_closeMenu
- ld a,[wcf91]
- ld hl,UsableItems_PartyMenu
- ld de,1
+ jr c, .useItem_closeMenu
+ ld a, [wcf91]
+ ld hl, UsableItems_PartyMenu
+ ld de, 1
call IsInArray
- jr c,.useItem_partyMenu
+ jr c, .useItem_partyMenu
call UseItem
jp ItemMenuLoop
.useItem_closeMenu
xor a
- ld [wPseudoItemID],a
+ ld [wPseudoItemID], a
call UseItem
- ld a,[wActionResultOrTookBattleTurn]
+ ld a, [wActionResultOrTookBattleTurn]
and a
- jp z,ItemMenuLoop
+ jp z, ItemMenuLoop
jp CloseStartMenu
.useItem_partyMenu
- ld a,[wUpdateSpritesEnabled]
+ ld a, [wUpdateSpritesEnabled]
push af
call UseItem
- ld a,[wActionResultOrTookBattleTurn]
- cp a,$02
- jp z,.partyMenuNotDisplayed
+ ld a, [wActionResultOrTookBattleTurn]
+ cp $02
+ jp z, .partyMenuNotDisplayed
call GBPalWhiteOutWithDelay3
call RestoreScreenTilesAndReloadTilePatterns
pop af
- ld [wUpdateSpritesEnabled],a
+ ld [wUpdateSpritesEnabled], a
jp StartMenu_Item
.partyMenuNotDisplayed
pop af
- ld [wUpdateSpritesEnabled],a
+ ld [wUpdateSpritesEnabled], a
jp ItemMenuLoop
.tossItem
call IsKeyItem
- ld a,[wIsKeyItem]
+ ld a, [wIsKeyItem]
and a
- jr nz,.skipAskingQuantity
- ld a,[wcf91]
+ jr nz, .skipAskingQuantity
+ ld a, [wcf91]
call IsItemHM
- jr c,.skipAskingQuantity
+ jr c, .skipAskingQuantity
call DisplayChooseQuantityMenu
inc a
- jr z,.tossZeroItems
+ jr z, .tossZeroItems
.skipAskingQuantity
- ld hl,wNumBagItems
+ ld hl, wNumBagItems
call TossItem
.tossZeroItems
jp ItemMenuLoop
@@ -516,10 +516,10 @@ StartMenu_TrainerInfo:
call GBPalWhiteOut
call ClearScreen
call UpdateSprites
- ld a,[hTilesetType]
+ ld a, [hTilesetType]
push af
xor a
- ld [hTilesetType],a
+ ld [hTilesetType], a
call DrawTrainerInfo
predef DrawBadges ; draw badges
ld b, SET_PAL_TRAINER_CARD
@@ -534,101 +534,101 @@ StartMenu_TrainerInfo:
callba DrawStartMenu ; XXX what difference does this make?
call LoadGBPal
pop af
- ld [hTilesetType],a
+ ld [hTilesetType], a
jp RedisplayStartMenu_DoNotDrawStartMenu
; loads tile patterns and draws everything except for gym leader faces / badges
DrawTrainerInfo:
- ld de,RedPicFront
+ ld de, RedPicFront
lb bc, BANK(RedPicFront), $01
predef DisplayPicCenteredOrUpperRight
call DisableLCD
coord hl, 0, 2
- ld a," "
+ ld a, " "
call TrainerInfo_DrawVerticalLine
coord hl, 1, 2
call TrainerInfo_DrawVerticalLine
- ld hl,vChars2 + $70
- ld de,vChars2
- ld bc,$70 * 4
+ ld hl, vChars2 + $70
+ ld de, vChars2
+ ld bc, $70 * 4
call CopyData
- ld hl,TrainerInfoTextBoxTileGraphics ; trainer info text box tile patterns
- ld de,vChars2 + $770
- ld bc,$0080
+ ld hl, TrainerInfoTextBoxTileGraphics ; trainer info text box tile patterns
+ ld de, vChars2 + $770
+ ld bc, $0080
push bc
call TrainerInfo_FarCopyData
- ld hl,BlankLeaderNames
- ld de,vChars2 + $600
- ld bc,$0170
+ ld hl, BlankLeaderNames
+ ld de, vChars2 + $600
+ ld bc, $0170
call TrainerInfo_FarCopyData
pop bc
- ld hl,BadgeNumbersTileGraphics ; badge number tile patterns
- ld de,vChars1 + $580
+ ld hl, BadgeNumbersTileGraphics ; badge number tile patterns
+ ld de, vChars1 + $580
call TrainerInfo_FarCopyData
- ld hl,GymLeaderFaceAndBadgeTileGraphics ; gym leader face and badge tile patterns
- ld de,vChars2 + $200
- ld bc,$0400
- ld a,$03
+ ld hl, GymLeaderFaceAndBadgeTileGraphics ; gym leader face and badge tile patterns
+ ld de, vChars2 + $200
+ ld bc, $0400
+ ld a, $03
call FarCopyData
- ld hl,TextBoxGraphics
- ld de,$00d0
- add hl,de ; hl = colon tile pattern
- ld de,vChars1 + $560
- ld bc,$0010
- ld a,$04
+ ld hl, TextBoxGraphics
+ ld de, $00d0
+ add hl, de ; hl = colon tile pattern
+ ld de, vChars1 + $560
+ ld bc, $0010
+ ld a, $04
push bc
call FarCopyData
pop bc
- ld hl,TrainerInfoTextBoxTileGraphics + $80 ; background tile pattern
- ld de,vChars1 + $570
+ ld hl, TrainerInfoTextBoxTileGraphics + $80 ; background tile pattern
+ ld de, vChars1 + $570
call TrainerInfo_FarCopyData
call EnableLCD
- ld hl,wTrainerInfoTextBoxWidthPlus1
- ld a,18 + 1
- ld [hli],a
+ ld hl, wTrainerInfoTextBoxWidthPlus1
+ ld a, 18 + 1
+ ld [hli], a
dec a
- ld [hli],a
- ld [hl],1
+ ld [hli], a
+ ld [hl], 1
coord hl, 0, 0
call TrainerInfo_DrawTextBox
- ld hl,wTrainerInfoTextBoxWidthPlus1
- ld a,16 + 1
- ld [hli],a
+ ld hl, wTrainerInfoTextBoxWidthPlus1
+ ld a, 16 + 1
+ ld [hli], a
dec a
- ld [hli],a
- ld [hl],3
+ ld [hli], a
+ ld [hl], 3
coord hl, 1, 10
call TrainerInfo_DrawTextBox
coord hl, 0, 10
- ld a,$d7
+ ld a, $d7
call TrainerInfo_DrawVerticalLine
coord hl, 19, 10
call TrainerInfo_DrawVerticalLine
coord hl, 6, 9
- ld de,TrainerInfo_BadgesText
+ ld de, TrainerInfo_BadgesText
call PlaceString
coord hl, 2, 2
- ld de,TrainerInfo_NameMoneyTimeText
+ ld de, TrainerInfo_NameMoneyTimeText
call PlaceString
coord hl, 7, 2
- ld de,wPlayerName
+ ld de, wPlayerName
call PlaceString
coord hl, 8, 4
- ld de,wPlayerMoney
- ld c,$e3
+ ld de, wPlayerMoney
+ ld c, $e3
call PrintBCDNumber
coord hl, 9, 6
- ld de,wPlayTimeHours ; hours
+ ld de, wPlayTimeHours ; hours
lb bc, LEFT_ALIGN | 1, 3
call PrintNumber
- ld [hl],$d6 ; colon tile ID
+ ld [hl], $d6 ; colon tile ID
inc hl
- ld de,wPlayTimeMinutes ; minutes
+ ld de, wPlayTimeMinutes ; minutes
lb bc, LEADING_ZEROES | 1, 2
jp PrintNumber
TrainerInfo_FarCopyData:
- ld a,BANK(TrainerInfoTextBoxTileGraphics)
+ ld a, BANK(TrainerInfoTextBoxTileGraphics)
jp FarCopyData
TrainerInfo_NameMoneyTimeText:
@@ -648,43 +648,43 @@ TrainerInfo_BadgesText:
; [wTrainerInfoTextBoxWidth] = width - 1
; [wTrainerInfoTextBoxNextRowOffset] = distance from the end of a text box row to the start of the next
TrainerInfo_DrawTextBox:
- ld a,$79 ; upper left corner tile ID
+ ld a, $79 ; upper left corner tile ID
lb de, $7a, $7b ; top edge and upper right corner tile ID's
call TrainerInfo_DrawHorizontalEdge ; draw top edge
call TrainerInfo_NextTextBoxRow
- ld a,[wTrainerInfoTextBoxWidthPlus1]
- ld e,a
- ld d,0
- ld c,6 ; height of the text box
+ ld a, [wTrainerInfoTextBoxWidthPlus1]
+ ld e, a
+ ld d, 0
+ ld c, 6 ; height of the text box
.loop
- ld [hl],$7c ; left edge tile ID
- add hl,de
- ld [hl],$78 ; right edge tile ID
+ ld [hl], $7c ; left edge tile ID
+ add hl, de
+ ld [hl], $78 ; right edge tile ID
call TrainerInfo_NextTextBoxRow
dec c
- jr nz,.loop
- ld a,$7d ; lower left corner tile ID
- lb de,$77, $7e ; bottom edge and lower right corner tile ID's
+ jr nz, .loop
+ ld a, $7d ; lower left corner tile ID
+ lb de, $77, $7e ; bottom edge and lower right corner tile ID's
TrainerInfo_DrawHorizontalEdge:
- ld [hli],a ; place left corner tile
- ld a,[wTrainerInfoTextBoxWidth]
- ld c,a
- ld a,d
+ ld [hli], a ; place left corner tile
+ ld a, [wTrainerInfoTextBoxWidth]
+ ld c, a
+ ld a, d
.loop
- ld [hli],a ; place edge tile
+ ld [hli], a ; place edge tile
dec c
- jr nz,.loop
- ld a,e
- ld [hl],a ; place right corner tile
+ jr nz, .loop
+ ld a, e
+ ld [hl], a ; place right corner tile
ret
TrainerInfo_NextTextBoxRow:
- ld a,[wTrainerInfoTextBoxNextRowOffset] ; distance to the start of the next row
+ ld a, [wTrainerInfoTextBoxNextRowOffset] ; distance to the start of the next row
.loop
inc hl
dec a
- jr nz,.loop
+ jr nz, .loop
ret
; draws a vertical line
@@ -692,26 +692,26 @@ TrainerInfo_NextTextBoxRow:
; hl = address of top tile in the line
; a = tile ID
TrainerInfo_DrawVerticalLine:
- ld de,20
- ld c,8
+ ld de, SCREEN_WIDTH
+ ld c, 8
.loop
- ld [hl],a
- add hl,de
+ ld [hl], a
+ add hl, de
dec c
- jr nz,.loop
+ jr nz, .loop
ret
StartMenu_SaveReset:
- ld a,[wd72e]
- bit 6,a ; is the player using the link feature?
- jp nz,Init
+ ld a, [wd72e]
+ bit 6, a ; is the player using the link feature?
+ jp nz, Init
predef SaveSAV ; save the game
call LoadScreenTilesFromBuffer2 ; restore saved screen
jp HoldTextDisplayOpen
StartMenu_Option:
xor a
- ld [H_AUTOBGTRANSFERENABLED],a
+ ld [H_AUTOBGTRANSFERENABLED], a
call ClearScreen
call UpdateSprites
callab DisplayOptionMenu
diff --git a/engine/menu/status_screen.asm b/engine/menu/status_screen.asm
index 4adfb543..1e2ba889 100755
--- a/engine/menu/status_screen.asm
+++ b/engine/menu/status_screen.asm
@@ -110,7 +110,7 @@ StatusScreen:
call DrawLineBox ; Draws the box around name, HP and status
ld de, -6
add hl, de
- ld [hl], $f2 ; . after No ("." is a different one)
+ ld [hl], "⠄" ; . after No ("." is a different one)
dec hl
ld [hl], "№"
coord hl, 19, 9
@@ -228,10 +228,11 @@ Type2Text:
db "TYPE2/", $4e
IDNoText:
- db $73, "№", "/", $4e
+ db $73, "№/", $4e
OTText:
- db "OT/", $4e, "@"
+ db "OT/"
+ next "@"
StatusText:
db "STATUS/@"
diff --git a/engine/menu/swap_items.asm b/engine/menu/swap_items.asm
index b1fa78be..563fc7d5 100644
--- a/engine/menu/swap_items.asm
+++ b/engine/menu/swap_items.asm
@@ -1,149 +1,149 @@
HandleItemListSwapping:
- ld a,[wListMenuID]
- cp a,ITEMLISTMENU
- jp nz,DisplayListMenuIDLoop ; only rearrange item list menus
+ ld a, [wListMenuID]
+ cp ITEMLISTMENU
+ jp nz, DisplayListMenuIDLoop ; only rearrange item list menus
push hl
- ld hl,wListPointer
- ld a,[hli]
- ld h,[hl]
- ld l,a
+ ld hl, wListPointer
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
inc hl ; hl = beginning of list entries
- ld a,[wCurrentMenuItem]
- ld b,a
- ld a,[wListScrollOffset]
+ ld a, [wCurrentMenuItem]
+ ld b, a
+ ld a, [wListScrollOffset]
add b
add a
- ld c,a
- ld b,0
- add hl,bc ; hl = address of currently selected item entry
- ld a,[hl]
+ ld c, a
+ ld b, 0
+ add hl, bc ; hl = address of currently selected item entry
+ ld a, [hl]
pop hl
inc a
- jp z,DisplayListMenuIDLoop ; ignore attempts to swap the Cancel menu item
- ld a,[wMenuItemToSwap] ; ID of item chosen for swapping (counts from 1)
+ jp z, DisplayListMenuIDLoop ; ignore attempts to swap the Cancel menu item
+ ld a, [wMenuItemToSwap] ; ID of item chosen for swapping (counts from 1)
and a ; has the first item to swap already been chosen?
- jr nz,.swapItems
+ jr nz, .swapItems
; if not, set the currently selected item as the first item
- ld a,[wCurrentMenuItem]
+ ld a, [wCurrentMenuItem]
inc a
- ld b,a
- ld a,[wListScrollOffset] ; index of top (visible) menu item within the list
+ ld b, a
+ ld a, [wListScrollOffset] ; index of top (visible) menu item within the list
add b
- ld [wMenuItemToSwap],a ; ID of item chosen for swapping (counts from 1)
- ld c,20
+ ld [wMenuItemToSwap], a ; ID of item chosen for swapping (counts from 1)
+ ld c, 20
call DelayFrames
jp DisplayListMenuIDLoop
.swapItems
- ld a,[wCurrentMenuItem]
+ ld a, [wCurrentMenuItem]
inc a
- ld b,a
- ld a,[wListScrollOffset]
+ ld b, a
+ ld a, [wListScrollOffset]
add b
- ld b,a
- ld a,[wMenuItemToSwap] ; ID of item chosen for swapping (counts from 1)
+ ld b, a
+ ld a, [wMenuItemToSwap] ; ID of item chosen for swapping (counts from 1)
cp b ; is the currently selected item the same as the first item to swap?
- jp z,DisplayListMenuIDLoop ; ignore attempts to swap an item with itself
+ jp z, DisplayListMenuIDLoop ; ignore attempts to swap an item with itself
dec a
- ld [wMenuItemToSwap],a ; ID of item chosen for swapping (counts from 1)
- ld c,20
+ ld [wMenuItemToSwap], a ; ID of item chosen for swapping (counts from 1)
+ ld c, 20
call DelayFrames
push hl
push de
- ld hl,wListPointer
- ld a,[hli]
- ld h,[hl]
- ld l,a
+ ld hl, wListPointer
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
inc hl ; hl = beginning of list entries
- ld d,h
- ld e,l ; de = beginning of list entries
- ld a,[wCurrentMenuItem]
- ld b,a
- ld a,[wListScrollOffset]
+ ld d, h
+ ld e, l ; de = beginning of list entries
+ ld a, [wCurrentMenuItem]
+ ld b, a
+ ld a, [wListScrollOffset]
add b
add a
- ld c,a
- ld b,0
- add hl,bc ; hl = address of currently selected item entry
- ld a,[wMenuItemToSwap] ; ID of item chosen for swapping (counts from 1)
+ ld c, a
+ ld b, 0
+ add hl, bc ; hl = address of currently selected item entry
+ ld a, [wMenuItemToSwap] ; ID of item chosen for swapping (counts from 1)
add a
add e
- ld e,a
- jr nc,.noCarry
+ ld e, a
+ jr nc, .noCarry
inc d
.noCarry ; de = address of first item to swap
- ld a,[de]
- ld b,a
- ld a,[hli]
+ ld a, [de]
+ ld b, a
+ ld a, [hli]
cp b
- jr z,.swapSameItemType
+ jr z, .swapSameItemType
.swapDifferentItems
- ld [$ff95],a ; [$ff95] = second item ID
- ld a,[hld]
- ld [$ff96],a ; [$ff96] = second item quantity
- ld a,[de]
- ld [hli],a ; put first item ID in second item slot
+ ld [$ff95], a ; [$ff95] = second item ID
+ ld a, [hld]
+ ld [$ff96], a ; [$ff96] = second item quantity
+ ld a, [de]
+ ld [hli], a ; put first item ID in second item slot
inc de
- ld a,[de]
- ld [hl],a ; put first item quantity in second item slot
- ld a,[$ff96]
- ld [de],a ; put second item quantity in first item slot
+ ld a, [de]
+ ld [hl], a ; put first item quantity in second item slot
+ ld a, [$ff96]
+ ld [de], a ; put second item quantity in first item slot
dec de
- ld a,[$ff95]
- ld [de],a ; put second item ID in first item slot
+ ld a, [$ff95]
+ ld [de], a ; put second item ID in first item slot
xor a
- ld [wMenuItemToSwap],a ; 0 means no item is currently being swapped
+ ld [wMenuItemToSwap], a ; 0 means no item is currently being swapped
pop de
pop hl
jp DisplayListMenuIDLoop
.swapSameItemType
inc de
- ld a,[hl]
- ld b,a
- ld a,[de]
+ ld a, [hl]
+ ld b, a
+ ld a, [de]
add b ; a = sum of both item quantities
- cp a,100 ; is the sum too big for one item slot?
- jr c,.combineItemSlots
+ cp 100 ; is the sum too big for one item slot?
+ jr c, .combineItemSlots
; swap enough items from the first slot to max out the second slot if they can't be combined
- sub a,99
- ld [de],a
- ld a,99
- ld [hl],a
+ sub 99
+ ld [de], a
+ ld a, 99
+ ld [hl], a
jr .done
.combineItemSlots
- ld [hl],a ; put the sum in the second item slot
- ld hl,wListPointer
- ld a,[hli]
- ld h,[hl]
- ld l,a
+ ld [hl], a ; put the sum in the second item slot
+ ld hl, wListPointer
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
dec [hl] ; decrease the number of items
- ld a,[hl]
- ld [wListCount],a ; update number of items variable
- cp a,1
- jr nz,.skipSettingMaxMenuItemID
- ld [wMaxMenuItem],a ; if the number of items is only one now, update the max menu item ID
+ ld a, [hl]
+ ld [wListCount], a ; update number of items variable
+ cp 1
+ jr nz, .skipSettingMaxMenuItemID
+ ld [wMaxMenuItem], a ; if the number of items is only one now, update the max menu item ID
.skipSettingMaxMenuItemID
dec de
- ld h,d
- ld l,e
+ ld h, d
+ ld l, e
inc hl
inc hl ; hl = address of item after first item to swap
.moveItemsUpLoop ; erase the first item slot and move up all the following item slots to fill the gap
- ld a,[hli]
- ld [de],a
+ ld a, [hli]
+ ld [de], a
inc de
inc a ; reached the $ff terminator?
- jr z,.afterMovingItemsUp
- ld a,[hli]
- ld [de],a
+ jr z, .afterMovingItemsUp
+ ld a, [hli]
+ ld [de], a
inc de
jr .moveItemsUpLoop
.afterMovingItemsUp
xor a
- ld [wListScrollOffset],a
- ld [wCurrentMenuItem],a
+ ld [wListScrollOffset], a
+ ld [wCurrentMenuItem], a
.done
xor a
- ld [wMenuItemToSwap],a ; 0 means no item is currently being swapped
+ ld [wMenuItemToSwap], a ; 0 means no item is currently being swapped
pop de
pop hl
jp DisplayListMenuIDLoop
diff --git a/engine/menu/text_ids2.asm b/engine/menu/text_box.asm
index b22c9507..a109bff2 100644
--- a/engine/menu/text_ids2.asm
+++ b/engine/menu/text_box.asm
@@ -1,28 +1,28 @@
; function to draw various text boxes
DisplayTextBoxID_:
- ld a,[wTextBoxID]
- cp a,TWO_OPTION_MENU
- jp z,DisplayTwoOptionMenu
- ld c,a
- ld hl,TextBoxFunctionTable
- ld de,3
+ ld a, [wTextBoxID]
+ cp TWO_OPTION_MENU
+ jp z, DisplayTwoOptionMenu
+ ld c, a
+ ld hl, TextBoxFunctionTable
+ ld de, 3
call SearchTextBoxTable
- jr c,.functionTableMatch
- ld hl,TextBoxCoordTable
- ld de,5
+ jr c, .functionTableMatch
+ ld hl, TextBoxCoordTable
+ ld de, 5
call SearchTextBoxTable
- jr c,.coordTableMatch
- ld hl,TextBoxTextAndCoordTable
- ld de,9
+ jr c, .coordTableMatch
+ ld hl, TextBoxTextAndCoordTable
+ ld de, 9
call SearchTextBoxTable
- jr c,.textAndCoordTableMatch
+ jr c, .textAndCoordTableMatch
.done
ret
.functionTableMatch
- ld a,[hli]
- ld h,[hl]
- ld l,a ; hl = address of function
- ld de,.done
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a ; hl = address of function
+ ld de, .done
push de
jp hl ; jump to the function
.coordTableMatch
@@ -37,14 +37,14 @@ DisplayTextBoxID_:
call TextBoxBorder
pop hl
call GetTextBoxIDText
- ld a,[wd730]
+ ld a, [wd730]
push af
- ld a,[wd730]
- set 6,a ; no pauses between printing each letter
- ld [wd730],a
+ ld a, [wd730]
+ set 6, a ; no pauses between printing each letter
+ ld [wd730], a
call PlaceString
pop af
- ld [wd730],a
+ ld [wd730], a
call UpdateSprites
ret
@@ -53,12 +53,12 @@ DisplayTextBoxID_:
SearchTextBoxTable:
dec de
.loop
- ld a,[hli]
- cp a,$ff
- jr z,.notFound
+ ld a, [hli]
+ cp $ff
+ jr z, .notFound
cp c
- jr z,.found
- add hl,de
+ jr z, .found
+ add hl, de
jr .loop
.found
scf
@@ -74,31 +74,31 @@ SearchTextBoxTable:
; d = row of upper left corner
; e = column of upper left corner
GetTextBoxIDCoords:
- ld a,[hli] ; column of upper left corner
- ld e,a
- ld a,[hli] ; row of upper left corner
- ld d,a
- ld a,[hli] ; column of lower right corner
+ ld a, [hli] ; column of upper left corner
+ ld e, a
+ ld a, [hli] ; row of upper left corner
+ ld d, a
+ ld a, [hli] ; column of lower right corner
sub e
dec a
- ld c,a ; c = width
- ld a,[hli] ; row of lower right corner
+ ld c, a ; c = width
+ ld a, [hli] ; row of lower right corner
sub d
dec a
- ld b,a ; b = height
+ ld b, a ; b = height
ret
; function to load a text address and text coordinates from the TextBoxTextAndCoordTable
GetTextBoxIDText:
- ld a,[hli]
- ld e,a
- ld a,[hli]
- ld d,a ; de = address of text
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a ; de = address of text
push de ; save text address
- ld a,[hli]
- ld e,a ; column of upper left corner of text
- ld a,[hl]
- ld d,a ; row of upper left corner of text
+ ld a, [hli]
+ ld e, a ; column of upper left corner of text
+ ld a, [hl]
+ ld d, a ; row of upper left corner of text
call GetAddressOfScreenCoords
pop de ; restore text address
ret
@@ -112,17 +112,17 @@ GetTextBoxIDText:
GetAddressOfScreenCoords:
push bc
coord hl, 0, 0
- ld bc,20
+ ld bc, 20
.loop ; loop to add d rows to the base address
- ld a,d
+ ld a, d
and a
- jr z,.addedRows
- add hl,bc
+ jr z, .addedRows
+ add hl, bc
dec d
jr .loop
.addedRows
pop bc
- add hl,de
+ add hl, de
ret
; Format:
@@ -418,7 +418,7 @@ DisplayTwoOptionMenu:
xor a
ld [wTwoOptionMenuID], a
ld hl, wd730
- res 6, [hl]
+ res 6, [hl] ; turn on the printing delay
call HandleMenuInput
pop hl
bit 1, a ; A button pressed?
@@ -513,19 +513,26 @@ TwoOptionMenuStrings:
dw .NoYesMenu
.NoYesMenu
- db "NO",$4E,"YES@"
+ db "NO"
+ next "YES@"
.YesNoMenu
- db "YES",$4E,"NO@"
+ db "YES"
+ next "NO@"
.NorthWestMenu
- db "NORTH",$4E,"WEST@"
+ db "NORTH"
+ next "WEST@"
.SouthEastMenu
- db "SOUTH",$4E,"EAST@"
+ db "SOUTH"
+ next "EAST@"
.NorthEastMenu
- db "NORTH",$4E,"EAST@"
+ db "NORTH"
+ next "EAST@"
.TradeCancelMenu
- db "TRADE",$4E,"CANCEL@"
+ db "TRADE"
+ next "CANCEL@"
.HealCancelMenu
- db "HEAL",$4E,"CANCEL@"
+ db "HEAL"
+ next "CANCEL@"
DisplayFieldMoveMonMenu:
xor a
@@ -547,7 +554,7 @@ DisplayFieldMoveMonMenu:
call TextBoxBorder
call UpdateSprites
ld a, 12
- ld [hFieldMoveMonMenuTopMenuItemX], a ; fffb, not fff7
+ ld [hFieldMoveMonMenuTopMenuItemX], a
coord hl, 13, 12
ld de, PokemonMenuEntries
jp PlaceString
@@ -730,4 +737,3 @@ FieldMoveDisplayData:
db TELEPORT, $08, $0A
db SOFTBOILED, $09, $08
db $ff ; list terminator
-
diff --git a/engine/menu/text_ids1.asm b/engine/menu/text_ids1.asm
deleted file mode 100644
index e2fd76f4..00000000
--- a/engine/menu/text_ids1.asm
+++ /dev/null
@@ -1,163 +0,0 @@
-; function that performs initialization for DisplayTextID
-DisplayTextIDInit:
- xor a
- ld [wListMenuID],a
- ld a,[wAutoTextBoxDrawingControl]
- bit 0,a
- jr nz,.skipDrawingTextBoxBorder
- ld a,[hSpriteIndexOrTextID] ; text ID (or sprite ID)
- and a
- jr nz,.notStartMenu
-; if text ID is 0 (i.e. the start menu)
-; Note that the start menu text border is also drawn in the function directly
-; below this, so this seems unnecessary.
- CheckEvent EVENT_GOT_POKEDEX
-; start menu with pokedex
- coord hl, 10, 0
- lb bc, 14, 8
- jr nz,.drawTextBoxBorder
-; start menu without pokedex
- coord hl, 10, 0
- lb bc, 12, 8
- jr .drawTextBoxBorder
-; if text ID is not 0 (i.e. not the start menu) then do a standard dialogue text box
-.notStartMenu
- coord hl, 0, 12
- lb bc, 4, 18
-.drawTextBoxBorder
- call TextBoxBorder
-.skipDrawingTextBoxBorder
- ld hl,wFontLoaded
- set 0,[hl]
- ld hl,wFlags_0xcd60
- bit 4,[hl]
- res 4,[hl]
- jr nz,.skipMovingSprites
- call UpdateSprites
-.skipMovingSprites
-; loop to copy C1X9 (direction the sprite is facing) to C2X9 for each sprite
-; this is done because when you talk to an NPC, they turn to look your way
-; the original direction they were facing must be restored after the dialogue is over
- ld hl,wSpriteStateData1 + $19
- ld c,$0f
- ld de,$0010
-.spriteFacingDirectionCopyLoop
- ld a,[hl]
- inc h
- ld [hl],a
- dec h
- add hl,de
- dec c
- jr nz,.spriteFacingDirectionCopyLoop
-; loop to force all the sprites in the middle of animation to stand still
-; (so that they don't like they're frozen mid-step during the dialogue)
- ld hl,wSpriteStateData1 + 2
- ld de,$0010
- ld c,e
-.spriteStandStillLoop
- ld a,[hl]
- cp a,$ff ; is the sprite visible?
- jr z,.nextSprite
-; if it is visible
- and a,$fc
- ld [hl],a
-.nextSprite
- add hl,de
- dec c
- jr nz,.spriteStandStillLoop
- ld b,vBGMap1 / $100 ; window background address
- call CopyScreenTileBufferToVRAM ; transfer background in WRAM to VRAM
- xor a
- ld [hWY],a ; put the window on the screen
- call LoadFontTilePatterns
- ld a,$01
- ld [H_AUTOBGTRANSFERENABLED],a ; enable continuous WRAM to VRAM transfer each V-blank
- ret
-
-; function that displays the start menu
-DrawStartMenu:
- CheckEvent EVENT_GOT_POKEDEX
-; menu with pokedex
- coord hl, 10, 0
- lb bc, 14, 8
- jr nz,.drawTextBoxBorder
-; shorter menu if the player doesn't have the pokedex
- coord hl, 10, 0
- lb bc, 12, 8
-.drawTextBoxBorder
- call TextBoxBorder
- ld a,D_DOWN | D_UP | START | B_BUTTON | A_BUTTON
- ld [wMenuWatchedKeys],a
- ld a,$02
- ld [wTopMenuItemY],a ; Y position of first menu choice
- ld a,$0b
- ld [wTopMenuItemX],a ; X position of first menu choice
- ld a,[wBattleAndStartSavedMenuItem] ; remembered menu selection from last time
- ld [wCurrentMenuItem],a
- ld [wLastMenuItem],a
- xor a
- ld [wMenuWatchMovingOutOfBounds],a
- ld hl,wd730
- set 6,[hl] ; no pauses between printing each letter
- coord hl, 12, 2
- CheckEvent EVENT_GOT_POKEDEX
-; case for not having pokdex
- ld a,$06
- jr z,.storeMenuItemCount
-; case for having pokedex
- ld de,StartMenuPokedexText
- call PrintStartMenuItem
- ld a,$07
-.storeMenuItemCount
- ld [wMaxMenuItem],a ; number of menu items
- ld de,StartMenuPokemonText
- call PrintStartMenuItem
- ld de,StartMenuItemText
- call PrintStartMenuItem
- ld de,wPlayerName ; player's name
- call PrintStartMenuItem
- ld a,[wd72e]
- bit 6,a ; is the player using the link feature?
-; case for not using link feature
- ld de,StartMenuSaveText
- jr z,.printSaveOrResetText
-; case for using link feature
- ld de,StartMenuResetText
-.printSaveOrResetText
- call PrintStartMenuItem
- ld de,StartMenuOptionText
- call PrintStartMenuItem
- ld de,StartMenuExitText
- call PlaceString
- ld hl,wd730
- res 6,[hl] ; turn pauses between printing letters back on
- ret
-
-StartMenuPokedexText:
- db "POKéDEX@"
-
-StartMenuPokemonText:
- db "#MON@"
-
-StartMenuItemText:
- db "ITEM@"
-
-StartMenuSaveText:
- db "SAVE@"
-
-StartMenuResetText:
- db "RESET@"
-
-StartMenuExitText:
- db "EXIT@"
-
-StartMenuOptionText:
- db "OPTION@"
-
-PrintStartMenuItem:
- push hl
- call PlaceString
- pop hl
- ld de,SCREEN_WIDTH * 2
- add hl,de
- ret
diff --git a/engine/menu/vending_machine.asm b/engine/menu/vending_machine.asm
index d864141d..37d9b9e7 100755
--- a/engine/menu/vending_machine.asm
+++ b/engine/menu/vending_machine.asm
@@ -92,7 +92,8 @@ DrinkText:
DrinkPriceText:
db "¥200"
next "¥300"
- next "¥350",$4E,"@"
+ next "¥350"
+ next "@"
VendingMachineText4:
TX_FAR _VendingMachineText4