summaryrefslogtreecommitdiff
path: root/engine/menu/party_menu.asm
diff options
context:
space:
mode:
authorU-Fish-PC\Daniel <corrnondacqb@yahoo.com>2014-05-22 18:13:20 -0400
committerU-Fish-PC\Daniel <corrnondacqb@yahoo.com>2014-05-22 18:13:20 -0400
commit15427f532085846ab6b51719be687951a094cb6c (patch)
treeedea9b189e91641a12dd521756894df84aeeace7 /engine/menu/party_menu.asm
parentea3ba4cde3706b7c77efb705555ec0c86321cbe2 (diff)
Pull a lot of engine out of main.asm
Diffstat (limited to 'engine/menu/party_menu.asm')
-rwxr-xr-xengine/menu/party_menu.asm328
1 files changed, 328 insertions, 0 deletions
diff --git a/engine/menu/party_menu.asm b/engine/menu/party_menu.asm
new file mode 100755
index 00000000..dbb6a40e
--- /dev/null
+++ b/engine/menu/party_menu.asm
@@ -0,0 +1,328 @@
+; [$D07D] = menu type / message ID
+; if less than $F0, it is a menu type
+; menu types:
+; 00: normal pokemon menu (e.g. Start menu)
+; 01: use healing item on pokemon menu
+; 02: in-battle switch pokemon menu
+; 03: learn TM/HM menu
+; 04: swap pokemon positions menu
+; 05: use evolution stone on pokemon menu
+; otherwise, it is a message ID
+; f0: poison healed
+; f1: burn healed
+; f2: freeze healed
+; f3: sleep healed
+; f4: paralysis healed
+; f5: HP healed
+; f6: health returned
+; f7: revitalized
+; f8: leveled up
+DrawPartyMenu_: ; 12cd2 (4:6cd2)
+ xor a
+ ld [H_AUTOBGTRANSFERENABLED],a
+ call ClearScreen
+ call UpdateSprites ; move sprites
+ callba Func_71791 ; load pokemon icon graphics
+
+RedrawPartyMenu_: ; 12ce3 (4:6ce3)
+ ld a,[$D07D]
+ cp a,$04
+ jp z,.printMessage
+ call ErasePartyMenuCursors
+ callba SendBlkPacket_PartyMenu ; loads some data to $cf2e
+ FuncCoord 3,0
+ ld hl,Coord
+ ld de,W_PARTYMON1
+ xor a
+ ld c,a
+ ld [$FF8C],a ; loop counter
+ ld [$CF2D],a
+.loop
+ ld a,[de]
+ cp a,$FF ; reached the terminator?
+ jp z,.afterDrawingMonEntries
+ push bc
+ push de
+ push hl
+ ld a,c
+ push hl
+ ld hl,W_PARTYMON1NAME
+ call GetPartyMonName
+ pop hl
+ call PlaceString ; print the pokemon's name
+ callba Func_71868 ; place the appropriate pokemon icon
+ ld a,[$FF8C] ; loop counter
+ ld [wWhichPokemon],a
+ inc a
+ ld [$FF8C],a
+ call LoadMonData
+ pop hl
+ push hl
+ ld a,[$CC35]
+ and a ; is the player swapping pokemon positions?
+ jr z,.skipUnfilledRightArrow
+; if the player is swapping pokemon positions
+ dec a
+ ld b,a
+ ld a,[wWhichPokemon]
+ cp b ; is the player swapping the current pokemon in the list?
+ 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
+ inc hl
+ inc hl
+.skipUnfilledRightArrow
+ ld a,[$D07D] ; menu type
+ cp a,$03
+ jr z,.teachMoveMenu
+ cp a,$05
+ jr z,.evolutionStoneMenu
+ push hl
+ ld bc,14 ; 14 columns to the right
+ add hl,bc
+ ld de,$CF9C
+ call PrintStatusCondition
+ pop hl
+ push hl
+ ld bc,20 + 1 ; down 1 row and right 1 column
+ ld a,[$FFF6]
+ set 0,a
+ ld [$FFF6],a
+ add hl,bc
+ ld a,$60
+ call Predef ; draw HP bar and prints current / max HP
+ ld a,[$FFF6]
+ res 0,a
+ ld [$FFF6],a
+ call SetPartyMenuHealthBarColor ; color the HP bar (on SGB)
+ pop hl
+ jr .printLevel
+.teachMoveMenu
+ push hl
+ ld a,$43
+ call Predef ; check if the pokemon can learn the move
+ pop hl
+ ld de,.ableToLearnMoveText
+ ld a,c
+ and a
+ jr nz,.placeMoveLearnabilityString
+ ld de,.notAbleToLearnMoveText
+.placeMoveLearnabilityString
+ ld bc,20 + 9 ; down 1 row and right 9 columns
+ push hl
+ add hl,bc
+ call PlaceString
+ pop hl
+.printLevel
+ 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
+ pop bc
+ inc c
+ jp .loop
+.ableToLearnMoveText
+ db "ABLE@"
+.notAbleToLearnMoveText
+ db "NOT ABLE@"
+.evolutionStoneMenu
+ push hl
+ ld hl,EvosMovesPointerTable
+ ld b,0
+ ld a,[$CF98] ; pokemon ID
+ dec a
+ add a
+ rl b
+ ld c,a
+ add hl,bc
+ ld de,$CD6D
+ ld a,BANK(EvosMovesPointerTable)
+ ld bc,2
+ call FarCopyData
+ ld hl,$CD6D
+ ld a,[hli]
+ ld h,[hl]
+ ld l,a
+ ld de,$CD6D
+ ld a,BANK(EvosMovesPointerTable)
+ ld bc,13
+ call FarCopyData
+ ld hl,$CD6D
+ ld de,.notAbleToEvolveText
+; loop through the pokemon's evolution entries
+.checkEvolutionsLoop
+ ld a,[hli]
+ and a ; reached terminator?
+ jr z,.placeEvolutionStoneString ; if so, place the "NOT ABLE" string
+ inc hl
+ inc hl
+ cp a,EV_ITEM
+ jr nz,.checkEvolutionsLoop
+; if it's a stone evolution entry
+ dec hl
+ dec hl
+ ld b,[hl]
+ ld a,[$D156] ; evolution stone item ID
+ inc hl
+ inc hl
+ inc hl
+ cp b ; does the player's stone match this evolution entry's stone?
+ jr nz,.checkEvolutionsLoop
+; if it does match
+ ld de,.ableToEvolveText
+.placeEvolutionStoneString
+ ld bc,20 + 9 ; down 1 row and right 9 columns
+ pop hl
+ push hl
+ add hl,bc
+ call PlaceString
+ pop hl
+ jr .printLevel
+.ableToEvolveText
+ db "ABLE@"
+.notAbleToEvolveText
+ db "NOT ABLE@"
+.afterDrawingMonEntries
+ ld b,$0A
+ call GoPAL_SET
+.printMessage
+ ld hl,$D730
+ ld a,[hl]
+ push af
+ push hl
+ set 6,[hl] ; turn off letter printing delay
+ ld a,[$D07D] ; message ID
+ cp a,$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
+ call PrintText
+.done
+ pop hl
+ pop af
+ ld [hl],a
+ ld a,1
+ ld [H_AUTOBGTRANSFERENABLED],a
+ call Delay3
+ jp GBPalNormal
+.printItemUseMessage
+ and a,$0F
+ ld hl,PartyMenuItemUseMessagePointers
+ add a
+ ld c,a
+ ld b,0
+ add hl,bc
+ ld a,[hli]
+ ld h,[hl]
+ ld l,a
+ push hl
+ ld a,[$CF06]
+ ld hl,W_PARTYMON1NAME
+ call GetPartyMonName
+ pop hl
+ call PrintText
+ jr .done
+
+PartyMenuItemUseMessagePointers: ; 12e61 (4:6e61)
+ dw AntidoteText
+ dw BurnHealText
+ dw IceHealText
+ dw AwakeningText
+ dw ParlyzHealText
+ dw PotionText
+ dw FullHealText
+ dw ReviveText
+ dw RareCandyText
+
+PartyMenuMessagePointers: ; 12e73 (4:6e73)
+ dw PartyMenuNormalText
+ dw PartyMenuItemUseText
+ dw PartyMenuBattleText
+ dw PartyMenuUseTMText
+ dw PartyMenuSwapMonText
+ dw PartyMenuItemUseText
+
+PartyMenuNormalText: ; 12e7f (4:6e7f)
+ TX_FAR _PartyMenuNormalText
+ db "@"
+
+PartyMenuItemUseText: ; 12e84 (4:6e84)
+ TX_FAR _PartyMenuItemUseText
+ db "@"
+
+PartyMenuBattleText: ; 12e89 (4:6e89)
+ TX_FAR _PartyMenuBattleText
+ db "@"
+
+PartyMenuUseTMText: ; 12e8e (4:6e8e)
+ TX_FAR _PartyMenuUseTMText
+ db "@"
+
+PartyMenuSwapMonText: ; 12e93 (4:6e93)
+ TX_FAR _PartyMenuSwapMonText
+ db "@"
+
+PotionText: ; 12e98 (4:6e98)
+ TX_FAR _PotionText
+ db "@"
+
+AntidoteText: ; 12e9d (4:6e9d)
+ TX_FAR _AntidoteText
+ db "@"
+
+ParlyzHealText: ; 12ea2 (4:6ea2)
+ TX_FAR _ParlyzHealText
+ db "@"
+
+BurnHealText: ; 12ea7 (4:6ea7)
+ TX_FAR _BurnHealText
+ db "@"
+
+IceHealText: ; 12eac (4:6eac)
+ TX_FAR _IceHealText
+ db "@"
+
+AwakeningText: ; 12eb1 (4:6eb1)
+ TX_FAR _AwakeningText
+ db "@"
+
+FullHealText: ; 12eb6 (4:6eb6)
+ TX_FAR _FullHealText
+ db "@"
+
+ReviveText: ; 12ebb (4:6ebb)
+ TX_FAR _ReviveText
+ db "@"
+
+RareCandyText: ; 12ec0 (4:6ec0)
+ TX_FAR _RareCandyText
+ db $0B
+ db $06
+ db "@"
+
+SetPartyMenuHealthBarColor: ; 12ec7 (4:6ec7)
+ ld hl, $cf1f
+ ld a, [$cf2d]
+ ld c, a
+ ld b, $0
+ add hl, bc
+ call GetHealthBarColor
+ ld b, $fc
+ call GoPAL_SET
+ ld hl, $cf2d
+ inc [hl]
+ ret