summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryenatch <yenatch@gmail.com>2013-08-01 18:30:30 -0400
committeryenatch <yenatch@gmail.com>2013-08-03 16:25:37 -0400
commite2a0c68f4cb97e05d2b3ee8bd6b1e74fb0217d26 (patch)
treeddee75fee9289a1eda1adf9fec2dce28345394ca
parent257302dff95d7de4e32eb75109ebe2228b823805 (diff)
comment more battle ui
-rw-r--r--constants.asm16
-rw-r--r--main.asm531
2 files changed, 425 insertions, 122 deletions
diff --git a/constants.asm b/constants.asm
index c1a0ec0dc..4e8f4c53e 100644
--- a/constants.asm
+++ b/constants.asm
@@ -222,6 +222,8 @@ PREDEF_FILLPP EQU $05
PREDEF_ADDPARTYMON EQU $06
PREDEF_FILLSTATS EQU $0C
PREDEF_FILLMOVES EQU $1B
+PREDEF_DRAW_PLAYER_HP EQU $26
+PREDEF_DRAW_ENEMY_HP EQU $27
PREDEF_GETUNOWNLETTER EQU $2D
PREDEF_DECOMPRESS EQU $40
@@ -247,6 +249,20 @@ D_UP EQU %01000000
D_DOWN EQU %10000000
+; screen
+HP_BAR_LENGTH EQU 6
+HP_BAR_LENGTH_PX EQU 48
+EXP_BAR_LENGTH EQU 8
+EXP_BAR_LENGTH_PX EQU 64
+
+SCREEN_WIDTH EQU 20
+SCREEN_HEIGHT EQU 18
+SCREEN_WIDTH_PX EQU 160
+SCREEN_HEIGHT_PX EQU 144
+
+TILE_WIDTH EQU 8
+
+
; movement
STEP_SLOW EQU 0
STEP_WALK EQU 1
diff --git a/main.asm b/main.asm
index 6d6a6adb5..233f24b65 100644
--- a/main.asm
+++ b/main.asm
@@ -3653,7 +3653,7 @@ Text_09: ; 14d2
swap a
set 6, a
ld b, a
- call Function3198
+ call PrintNum
ld b, h
ld c, l
pop hl
@@ -9919,16 +9919,14 @@ CopyDataUntil: ; 318c
ret
; 0x3198
-Function3198: ; 3198
+PrintNum: ; 3198
ld a, [hROMBank]
push af
- ld a, $3
+ ld a, BANK(_PrintNum)
rst Bankswitch
-
- call $44c7
+ call _PrintNum
pop af
rst Bankswitch
-
ret
; 31a4
@@ -11216,50 +11214,62 @@ Function3741: ; 3741
ret
; 3750
-Function3750: ; 3750
+
+DrawHPBar: ; 3750
+; Draw an HP bar d tiles long at hl
+; Fill it up to e pixels
+
push hl
push de
push bc
+
+; Place 'HP:'
ld a, $60
ld [hli], a
ld a, $61
ld [hli], a
+
+; Draw a template
push hl
- ld a, $62
-.asm_375c
+ ld a, $62 ; empty bar
+.template
ld [hli], a
dec d
- jr nz, .asm_375c
- ld a, $6b
+ jr nz, .template
+ ld a, $6b ; bar end
add b
ld [hl], a
pop hl
+
+; Safety check # pixels
ld a, e
and a
- jr nz, .asm_376f
+ jr nz, .fill
ld a, c
and a
- jr z, .asm_3782
- ld e, $1
+ jr z, .done
+ ld e, 1
-.asm_376f
+.fill
+; Keep drawing tiles until pixel length is reached
ld a, e
- sub $8
- jr c, .asm_377e
+ sub TILE_WIDTH
+ jr c, .lastbar
+
ld e, a
- ld a, $6a
+ ld a, $6a ; full bar
ld [hli], a
ld a, e
and a
- jr z, .asm_3782
- jr .asm_376f
+ jr z, .done
+ jr .fill
-.asm_377e
- ld a, $62
- add e
+.lastbar
+ ld a, $62 ; empty bar
+ add e ; + e
ld [hl], a
-.asm_3782
+.done
pop bc
pop de
pop hl
@@ -11267,7 +11277,6 @@ Function3750: ; 3750
; 3786
-
Function3786: ; 3786
ld a, $1
ld [$c2c6], a
@@ -11397,28 +11406,39 @@ Function381e: ; 381e
ret
; 382d
-Function382d: ; 382d
+
+PrintLevel: ; 382d
+; Print TempMonLevel at hl
+
ld a, [TempMonLevel]
- ld [hl], $6e
+ ld [hl], $6e ; ":L"
inc hl
- ld c, $2
- cp $64
- jr c, .asm_3842
+
+; How many digits?
+ ld c, 2
+ cp 100
+ jr c, .print
+
+; 3-digit numbers overwrite the :L.
dec hl
inc c
- jr .asm_3842
+ jr .print
+; --------
+; Unused: print :L and all 3 digits
ld [hl], $6e
inc hl
- ld c, $3
+ ld c, 3
+; --------
-.asm_3842
+.print
ld [$d265], a
ld de, $d265
- ld b, $41
- jp Function3198
+ ld b, %01000001 ; flags
+ jp PrintNum
; 384d
+
Function384d: ; 384d
ld hl, $d25e
ld c, a
@@ -11808,7 +11828,7 @@ GetBattleVarPair: ; 39e7
; get var id
ld a, [hl]
ld c, a
- ld b, $0
+ ld b, 0
; seek
ld hl, .vars
@@ -17537,7 +17557,7 @@ Function5f58: ; 5f58
pop hl
ld de, $d265
ld bc, $0102
- jp Function3198
+ jp PrintNum
; 5f6b
Function5f6b: ; 5f6b
@@ -17551,18 +17571,18 @@ Function5f6b: ; 5f6b
pop hl
ld de, $d265
ld bc, $0103
- jp Function3198
+ jp PrintNum
; 5f84
Function5f84: ; 5f84
ld de, GameTimeHours
ld bc, $0203
- call Function3198
+ call PrintNum
ld [hl], $6d
inc hl
ld de, GameTimeMinutes
ld bc, $8102
- jp Function3198
+ jp PrintNum
; 5f99
@@ -19854,12 +19874,13 @@ GetPredefFn: ; 854b
PredefPointers: ; 856b
; $4b Predef pointers
; address, bank
+
dwb $6508, $01
dwb $747a, $01
dwb $4658, $03
- dwb $57c1, $13
+ dwb $57c1, $13 ; Flag, BANK(Flag)
dwb $4699, $03
- dwb Functionda6d, BANK(Functionda6d)
+ dwb FillPP, BANK(FillPP)
dwb Functiond88c, BANK(Functiond88c)
dwb $5a96, $03
dwb $5b3f, $03
@@ -19872,16 +19893,16 @@ PredefPointers: ; 856b
dwb $566a, $04
dwb $4eef, $0a
dwb $4b3e, $0b ; PrintMoveDescription, BANK(PrintMoveDescription)
- dwb Function3df48, BANK(Function3df48)
+ dwb Function3df48, BANK(Function3df48) ; UpdatePlayerHUD
dwb FillBox, BANK(FillBox)
dwb Function3d873, BANK(Function3d873)
- dwb Function3e036, BANK(Function3e036)
+ dwb Function3e036, BANK(Function3e036) ; UpdateEnemyHUD
dwb Function3f4c1, BANK(Function3f4c1)
dwb FillInExpBar, BANK(FillInExpBar)
dwb Function3f43d, BANK(Function3f43d)
dwb Function3f47c, BANK(Function3f47c)
dwb Function42487, BANK(Function42487)
- dwb $64e1, $10
+ dwb FillMoves, BANK(FillMoves)
dwb $61e6, $10
dwb $4f63, $0a
dwb $4f24, $0a
@@ -19892,18 +19913,18 @@ PredefPointers: ; 856b
dwb $4c50, $14
dwb GetGender, BANK(GetGender)
dwb StatsScreenInit, BANK(StatsScreenInit)
- dwb $4b0a, $14
- dwb $4b0e, $14
+ dwb DrawPlayerHP, BANK(DrawPlayerHP)
+ dwb DrawEnemyHP, BANK(DrawEnemyHP)
dwb $4b7b, $14
- dwb LoadTypeName, BANK(LoadTypeName)
+ dwb GetTypeName, BANK(GetTypeName)
dwb PrintMoveType, BANK(PrintMoveType)
dwb PrintType, BANK(PrintType)
dwb $490d, $14
- dwb $5040, $14
+ dwb $5040, $14 ; GetUnownLetter
dwb $7cdd, $32
dwb $40d5, $33
dwb $5853, $02
- dwb $464c, $02
+ dwb $464c, $02 ; LoadSGBLayout, BANK(LoadSGBLayout)
dwb $5d11, $24
dwb $4a88, $02
dwb $420f, $23
@@ -20727,7 +20748,7 @@ SpecialTrainerHouse: ; 0xc4b9
ld [ScriptVar], a
jp CloseSRAM
-Functionc4c7: ; c4c7
+_PrintNum: ; c4c7
push bc
bit 5, b
jr z, .asm_c4d9
@@ -22506,7 +22527,7 @@ Functiond88c: ; d88c
push de
inc hl
inc hl
- call Functionda6d
+ call FillPP
pop de
pop hl
inc de
@@ -22629,7 +22650,7 @@ Functiond88c: ; d88c
ret
; da6d
-Functionda6d: ; da6d
+FillPP: ; da6d
push bc
ld b, $4
.asm_da70
@@ -26594,7 +26615,7 @@ Function13172: ; 13172
ld hl, $484a
rst FarCall
pop hl
- call Function382d
+ call PrintLevel
ld hl, PlayerHPPal
call SetHPPal
ld b, $e
@@ -26681,7 +26702,7 @@ Function13256: ; 13256
ld [$d265], a
ld de, $d265
ld bc, $0103
- call Function3198
+ call PrintNum
jr .asm_132ad
.asm_132a7
@@ -30265,7 +30286,7 @@ Function15be5: ; 15be5
ld hl, StringBuffer1
ld de, StringBuffer2
ld bc, $8206
- call Function3198
+ call PrintNum
pop hl
ld de, StringBuffer1
ld c, $3
@@ -32592,7 +32613,7 @@ Function24ac3: ; 0x24ac3
inc hl
ld de, $cf75
ld bc, $0102
- call Function3198
+ call PrintNum
.done
ret
@@ -32618,7 +32639,7 @@ Function24ae8: ; 24ae8
add hl, de
ld de, Money
ld bc, $2306
- call Function3198
+ call PrintNum
ret
; 24b15
@@ -32638,7 +32659,7 @@ Function24b25: ; 24b25
ld de, $d855
ld bc, $0204
ld hl, $c4c1
- call Function3198
+ call PrintNum
ret
; 24b4e
@@ -32653,14 +32674,14 @@ Function24b4e: ; 24b4e
ld hl, $c4c0
ld de, Money
ld bc, $2306
- call Function3198
+ call PrintNum
ld hl, $c4e2
ld de, CoinString
call PlaceString
ld hl, $c4eb
ld de, $d855
ld bc, $0204
- call Function3198
+ call PrintNum
ret
; 24b83
@@ -32684,7 +32705,7 @@ Function24b8f: ; 24b8f
ld hl, $c4b5
ld de, $dc7a
ld bc, $0203
- call Function3198
+ call PrintNum
ld hl, $c4b8
ld de, String24bcf
call PlaceString
@@ -32694,7 +32715,7 @@ Function24b8f: ; 24b8f
ld hl, $c4e1
ld de, $dc79
ld bc, $0102
- call Function3198
+ call PrintNum
pop af
ld [Options], a
ret
@@ -32726,7 +32747,7 @@ Function24be7: ; 24be7
ld hl, $c50c
ld de, $dc79
ld bc, $4102
- call Function3198
+ call PrintNum
ld hl, $c4b5
ld de, String24c4b
call PlaceString
@@ -33264,7 +33285,7 @@ Function24f7c: ; 24f7c
ld hl, $c5b5
ld de, $dc79
ld bc, $8102
- call Function3198
+ call PrintNum
ret
; 24f89
@@ -33296,7 +33317,7 @@ Function24fb2: ; 24fb2
ld hl, $c5ed
ld de, $dc79
ld bc, $8102
- call Function3198
+ call PrintNum
ret
; 24fbf
@@ -33444,7 +33465,7 @@ Function25072: ; 25072
inc hl
ld de, $d10c
ld bc, $8102
- call Function3198
+ call PrintNum
ld a, [$cf86]
ld e, a
ld a, [$cf87]
@@ -33516,7 +33537,7 @@ Function250d1: ; 250d1
inc hl
ld de, $ffc3
ld bc, $2306
- call Function3198
+ call PrintNum
call WaitBGMap
ret
; 250ed
@@ -33603,7 +33624,7 @@ ClearOakRatingBuffer: ; 0x2665a
call ByteFill
pop hl
ld bc, $4103
- call Function3198
+ call PrintNum
ret
; 0x2666b
@@ -36493,7 +36514,7 @@ Function3c000: ; 3c000
call Function3dbde
call Function3dc18
call Function3db5f
- call Function3edd1
+ call EmptyBattleTextBox
call Function309d
call SetPlayerTurn
call Function3dc23
@@ -38590,7 +38611,7 @@ Function3ce01: ; 3ce01
ld a, [IsInBattle]
dec a
call z, Function3d0ea
- call Function3edd1
+ call EmptyBattleTextBox
call Function309d
ld a, [$d0ee]
and $c0
@@ -38844,7 +38865,7 @@ Function3cfa4: ; 3cfa4
call Function3ebd8
ld c, $28
call DelayFrames
- call Function3edd1
+ call EmptyBattleTextBox
ld c, $3
ld a, $47
ld hl, $4000
@@ -39189,7 +39210,7 @@ Function3d1aa: ; 3d1aa
; 3d1f8
Function3d1f8: ; 3d1f8
- call Function3edd1
+ call EmptyBattleTextBox
call Function309d
ld a, [IsInBattle]
and a
@@ -39215,7 +39236,7 @@ Function3d1f8: ; 3d1f8
; 3d227
Function3d227: ; 3d227
- call Function3edd1
+ call EmptyBattleTextBox
call Function1d6e
call Function3d2f7
call Function3d362
@@ -39268,7 +39289,7 @@ Function3d227: ; 3d227
call Function3dbde
call Function3dc18
call Function3db5f
- call Function3edd1
+ call EmptyBattleTextBox
call Function309d
call SetPlayerTurn
call Function3dc23
@@ -39290,7 +39311,7 @@ Function3d2b3: ; 3d2b3
call Function3dbde
call Function3dc18
call Function3db5f
- call Function3edd1
+ call EmptyBattleTextBox
call Function309d
call SetPlayerTurn
jp Function3dc23
@@ -39454,7 +39475,7 @@ LostBattle: ; 3d38e
ld c, 40
call DelayFrames
- call Function3edd1
+ call EmptyBattleTextBox
ld c, 2
ld a, $47
ld hl, $4000
@@ -39728,7 +39749,7 @@ Function3d557: ; 3d557
ld hl, $c4b2
ld a, $8
call Function3d490
- call Function3edd1
+ call EmptyBattleTextBox
jp Function1d6e
; 3d57a
@@ -40544,7 +40565,7 @@ Function3db32: ; 3db32
call Function3dbde
call Function3dc18
call Function3db5f
- call Function3edd1
+ call EmptyBattleTextBox
call Function309d
ld hl, EnemyMonHPHi
ld a, [hli]
@@ -40892,7 +40913,7 @@ Function3ddc8: ; 3ddc8
push hl
push de
push bc
- call Function3edd1
+ call EmptyBattleTextBox
ld a, $69
ld [FXAnimIDLo], a
call Function3c8e4
@@ -41165,7 +41186,7 @@ DrawPlayerHUD: ; 3df58
ld b, OTPARTYMON
xor a
ld [MonType], a
- ld a, $26 ; PREDEF_DRAW_HP
+ ld a, PREDEF_DRAW_PLAYER_HP
call Predef
; Exp bar
@@ -41275,7 +41296,7 @@ PrintPlayerHUD: ; 3dfbf
.asm_3e02d
ld a, [BattleMonLevel]
ld [TempMonLevel], a
- jp Function382d
+ jp PrintLevel
; 3e036
Function3e036: ; 3e036
@@ -41352,7 +41373,7 @@ Function3e043: ; 3e043
.asm_3e0b5
ld a, [EnemyMonLevel]
ld [TempMonLevel], a
- call Function382d
+ call PrintLevel
.asm_3e0be
ld hl, EnemyMonHPHi
@@ -41415,7 +41436,7 @@ Function3e043: ; 3e043
ld [$d10a], a
ld hl, $c4ca
ld b, $0
- call Function3750
+ call DrawHPBar
ret
; 3e127
@@ -41447,9 +41468,9 @@ Function3e139: ; 3e139
jr z, .asm_3e156
cp $3
jr z, .asm_3e156
- call Function3edd1
+ call EmptyBattleTextBox
call UpdateBattleHuds
- call Function3edd1
+ call EmptyBattleTextBox
call Function309d
.asm_3e156
@@ -41849,7 +41870,7 @@ Function3e40b: ; 3e40b
call Function3dbde
call Function3dc18
call Function3db5f
- call Function3edd1
+ call EmptyBattleTextBox
call Function309d
call SetPlayerTurn
call Function3dc23
@@ -41872,7 +41893,7 @@ Function3e459: ; 3e459
ld [$d265], a
call Function3ecab
call Function3db5f
- call Function3edd1
+ call EmptyBattleTextBox
call Function309d
call SetPlayerTurn
jp Function3dc23
@@ -42303,7 +42324,7 @@ Function3e75f: ; 3e75f
push hl
ld de, StringBuffer1
ld bc, $0102
- call Function3198
+ call PrintNum
pop hl
inc hl
inc hl
@@ -42311,7 +42332,7 @@ Function3e75f: ; 3e75f
inc hl
ld de, $d265
ld bc, $0102
- call Function3198
+ call PrintNum
ret
; 3e786
@@ -42370,7 +42391,7 @@ Function3e7c1: ; 3e7c1
ld a, [InLinkBattle]
and a
jr z, .asm_3e817
- call Function3edd1
+ call EmptyBattleTextBox
call Function309d
ld a, [$d0ec]
and a
@@ -42744,7 +42765,7 @@ LoadEnemyMon: ; 3e8eb
; Get letter based on DVs
ld hl, EnemyMonDVs
- ld a, PREDEF_GETUNOWNLETTER
+ ld a, PREDEF_GET_UNOWN_LETTER
call Predef
; Can't use any letters that haven't been unlocked
; If combined with forced shiny battletype, causes an infinite loop
@@ -43567,7 +43588,7 @@ Function3edad: ; 3edad
; 3edd1
-Function3edd1: ; 3edd1
+EmptyBattleTextBox: ; 3edd1
ld hl, .empty
jp BattleTextBox
.empty
@@ -43979,7 +44000,7 @@ Function3ee3b: ; 3ee3b
ld hl, Function3df48
ld a, $f
rst FarCall
- call Function3edd1
+ call EmptyBattleTextBox
call Function309d
ld a, $1
ld [hBGMapMode], a
@@ -44797,7 +44818,7 @@ Function3f4dd: ; 3f4dd
set 6, [hl]
xor a
ld [hBGMapMode], a
- call Function3edd1
+ call EmptyBattleTextBox
ld hl, $c535
ld bc, $050b
call ClearBox
@@ -45273,20 +45294,20 @@ Function3f85f: ; 3f85f
push hl
ld de, $d00d
ld bc, $0204
- call Function3198
+ call PrintNum
pop hl
ld de, $0005
add hl, de
push hl
ld de, $d00f
ld bc, $0204
- call Function3198
+ call PrintNum
pop hl
ld de, $0005
add hl, de
ld de, $d011
ld bc, $0204
- call Function3198
+ call PrintNum
jr .asm_3f8cf
.asm_3f8c9
@@ -45326,21 +45347,21 @@ Function3f85f: ; 3f85f
jr c, .asm_3f92a
ld bc, $0204
- call Function3198
+ call PrintNum
ld hl, $c4fb
ld de, $b262
call .asm_3f92b
ld bc, $0204
- call Function3198
+ call PrintNum
ld hl, $c500
ld de, $b264
call .asm_3f92b
ld bc, $0204
- call Function3198
+ call PrintNum
.asm_3f92a
ret
@@ -46802,7 +46823,128 @@ Function42487: ; 42487
ret
; 424e1
-INCBIN "baserom.gbc", $424e1, $42577 - $424e1
+
+FillMoves: ; 424e1
+; Fill in moves at de for CurPartySpecies at CurPartyLevle
+
+ push hl
+ push de
+ push bc
+ ld hl, EvosAttacksPointers
+ ld b, 0
+ ld a, [CurPartySpecies]
+ dec a
+ add a
+ rl b
+ ld c, a
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+.GoToAttacks
+ ld a, [hli]
+ and a
+ jr nz, .GoToAttacks
+ jr .GetLevel
+
+.NextMove
+ pop de
+.GetMove
+ inc hl
+.GetLevel
+ ld a, [hli]
+ and a
+ jp z, .done
+ ld b, a
+ ld a, [CurPartyLevel]
+ cp b
+ jp c, .done
+ ld a, [Buffer1]
+ and a
+ jr z, .CheckMove
+ ld a, [DefaultFlypoint]
+ cp b
+ jr nc, .GetMove
+
+.CheckMove
+ push de
+ ld c, NUM_MOVES
+.CheckRepeat
+ ld a, [de]
+ inc de
+ cp [hl]
+ jr z, .NextMove
+ dec c
+ jr nz, .CheckRepeat
+ pop de
+ push de
+ ld c, NUM_MOVES
+.CheckSlot
+ ld a, [de]
+ and a
+ jr z, .LearnMove
+ inc de
+ dec c
+ jr nz, .CheckSlot
+ pop de
+ push de
+ push hl
+ ld h, d
+ ld l, e
+ call ShiftMoves
+ ld a, [Buffer1]
+ and a
+ jr z, .ShiftedMove
+ push de
+ ld bc, PartyMon1PP - PartyMon1Move4
+ add hl, bc
+ ld d, h
+ ld e, l
+ call ShiftMoves
+ pop de
+
+.ShiftedMove
+ pop hl
+
+.LearnMove
+ ld a, [hl]
+ ld [de], a
+ ld a, [Buffer1]
+ and a
+ jr z, .NextMove
+ push hl
+ ld a, [hl]
+ ld hl, PartyMon1PP - PartyMon1Moves
+ add hl, de
+ push hl
+ dec a
+ ld hl, Moves + MOVE_PP
+ ld bc, Move2 - Move1
+ call AddNTimes
+ ld a, BANK(Moves)
+ call GetFarByte
+ pop hl
+ ld [hl], a
+ pop hl
+ jr .NextMove
+
+.done
+ pop bc
+ pop de
+ pop hl
+ ret
+; 4256e
+
+ShiftMoves: ; 4256e
+ ld c, $3
+.asm_42570
+ inc de
+ ld a, [de]
+ ld [hli], a
+ dec c
+ jr nz, .asm_42570
+ ret
+; 42577
Function42577: ; 42577
@@ -48247,7 +48389,7 @@ Function49e3d: ; 49e3d
inc hl
ld de, hMinutes
ld bc, $8102
- call Function3198
+ call PrintNum
ret
; 49e70
@@ -51070,7 +51212,7 @@ Function500cf: ; 500cf
pop hl
ld d, $6
ld b, $0
- call Function3750
+ call DrawHPBar
ld hl, $cd9b
ld a, [$cda9]
ld c, a
@@ -51145,14 +51287,14 @@ Function50138: ; 50138
pop hl
push de
ld bc, $0203
- call Function3198
+ call PrintNum
pop de
ld a, $f3
ld [hli], a
inc de
inc de
ld bc, $0203
- call Function3198
+ call PrintNum
.asm_5016b
pop hl
@@ -51194,7 +51336,7 @@ Function50176: ; 50176
.asm_501a1
ld bc, $4103
- call Function3198
+ call PrintNum
.asm_501a7
pop hl
@@ -51962,7 +52104,7 @@ PrintType: ; 50953
; 50964
-LoadTypeName: ; 50964
+GetTypeName: ; 50964
; Copy the name of type $d265 to StringBuffer1.
ld a, [$d265]
ld hl, TypeNames
@@ -52050,7 +52192,96 @@ Dark:
; 50a28
-INCBIN "baserom.gbc", $50a28, $50bdd - $50a28
+INCBIN "baserom.gbc", $50a28, $50b0a - $50a28
+
+
+DrawPlayerHP: ; 50b0a
+ ld a, $1
+ jr DrawHP
+
+DrawEnemyHP: ; 50b0e
+ ld a, $2
+
+DrawHP: ; 50b10
+ ld [$d10a], a
+ push hl
+ push bc
+ ld a, [MonType]
+ cp BOXMON
+ jr z, .asm_50b30
+
+ ld a, [TempMonCurHP]
+ ld b, a
+ ld a, [TempMonCurHP + 1]
+ ld c, a
+
+; Any HP?
+ or b
+ jr nz, .asm_50b30
+
+ xor a
+ ld c, a
+ ld e, a
+ ld a, 6
+ ld d, a
+ jp .asm_50b4a
+
+.asm_50b30
+ ld a, [TempMonMaxHP]
+ ld d, a
+ ld a, [TempMonMaxHP + 1]
+ ld e, a
+ ld a, [MonType]
+ cp BOXMON
+ jr nz, .asm_50b41
+
+ ld b, d
+ ld c, e
+
+.asm_50b41
+ ld a, $4
+ call Predef
+ ld a, 6
+ ld d, a
+ ld c, a
+
+.asm_50b4a
+ ld a, c
+ pop bc
+ ld c, a
+ pop hl
+ push de
+ push hl
+ push hl
+ call DrawHPBar
+ pop hl
+
+; Print HP
+ ld bc, $0015 ; move (1,1)
+ add hl, bc
+ ld de, TempMonCurHP
+ ld a, [MonType]
+ cp BOXMON
+ jr nz, .asm_50b66
+ ld de, TempMonMaxHP
+.asm_50b66
+ ld bc, $0203
+ call PrintNum
+
+ ld a, "/"
+ ld [hli], a
+
+; Print max HP
+ ld de, TempMonMaxHP
+ ld bc, $0203
+ call PrintNum
+ pop hl
+ pop de
+ ret
+; 50b7b
+
+
+INCBIN "baserom.gbc", $50b7b, $50bdd - $50b7b
GetGender: ; 50bdd
@@ -52392,7 +52623,63 @@ Function50eed: ; 50eed
jp Multiply
; 50efa
-INCBIN "baserom.gbc", $50efa, $511c5 - $50efa
+
+INCBIN "baserom.gbc", $50efa, $51040 - $50efa
+
+
+GetUnownLetter: ; 51040
+; Return Unown letter in UnownLetter based on DVs at hl
+
+; Take the middle 2 bits of each DV and place them in order:
+; AtkDefDV | SpdSpcDV
+; .ww..xx. .yy..zz.
+
+ ; atk
+ ld a, [hl]
+ and %01100000
+ sla a
+ ld b, a
+ ; def
+ ld a, [hli]
+ and %00000110
+ swap a
+ srl a
+ or b
+ ld b, a
+
+ ; spd
+ ld a, [hl]
+ and %01100000
+ swap a
+ sla a
+ or b
+ ld b, a
+ ; spc
+ ld a, [hl]
+ and %00000110
+ srl a
+ or b
+
+; Divide by 10 to get 0-25
+ ld [hDividend + 3], a
+ xor a
+ ld [hDividend], a
+ ld [hDividend + 1], a
+ ld [hDividend + 2], a
+ ld a, 10
+ ld [hDivisor], a
+ ld b, $4
+ call Divide
+
+; Increment to get 1-26
+ ld a, [hQuotient + 2]
+ inc a
+ ld [UnownLetter], a
+ ret
+; 51077
+
+
+INCBIN "baserom.gbc", $51077, $511c5 - $51077
Function511c5: ; 511c5
@@ -52400,7 +52687,7 @@ Function511c5: ; 511c5
push bc
sub $12
ld c, a
- ld b, $0
+ ld b, 0
ld hl, $51d4
add hl, bc
ld a, [hl]
@@ -54587,7 +54874,7 @@ Function86748: ; 86748
ld hl, $c5a7
ld de, $d265
ld bc, $8103
- call Function3198
+ call PrintNum
call GetBasePokemonName
ld hl, $c5ab
call PlaceString
@@ -54609,7 +54896,7 @@ Function86748: ; 86748
ld de, StringBuffer2
call PlaceString
ld hl, $c5e1
- call Function382d
+ call PrintLevel
.asm_867f8
ld hl, $c5e7
@@ -54621,7 +54908,7 @@ Function86748: ; 86748
ld hl, $c5ea
ld de, TempMonID
ld bc, $8205
- call Function3198
+ call PrintNum
ret
; 86810
@@ -54698,19 +54985,19 @@ Function86810: ; 86810
ld hl, $c51c
ld de, PlayerID
ld bc, $8205
- call Function3198
+ call PrintNum
ld hl, $c541
ld de, $68ed
call PlaceString
ld hl, $c557
ld de, GameTimeHours
ld bc, $0203
- call Function3198
+ call PrintNum
ld [hl], $63
inc hl
ld de, GameTimeMinutes
ld bc, $8102
- call Function3198
+ call PrintNum
call WaitBGMap
callba Function26601
ret
@@ -61995,7 +62282,7 @@ Functioncc000: ; cc000
ld l, c
ld a, [$dfbb]
ld [TempMonLevel], a
- call Function382d
+ call PrintLevel
ld de, EnemyMonNick
ld hl, $c541
call PlaceString
@@ -62003,14 +62290,14 @@ Functioncc000: ; cc000
ld l, c
ld a, [EnemyMonLevel]
ld [TempMonLevel], a
- call Function382d
+ call PrintLevel
ld hl, $c4fb
ld de, $dfc0
ld bc, $0203
- call Function3198
+ call PrintNum
ld hl, $c573
ld de, EnemyMonMaxHPHi
- call Function3198
+ call PrintNum
ld hl, $40c2
call PrintText
pop af
@@ -66063,7 +66350,7 @@ Function100902: ; 100902
ld hl, $c584
ld bc, $0102
ld de, StringBuffer2
- call Function3198
+ call PrintNum
ld de, SFX_TWO_PC_BEEPS
call StartSFX
callba Function104061