mirror of
https://github.com/thornAvery/jep-hack.git
synced 2025-09-17 02:30:50 +12:00
Stat exp., DV, & Hidden Power display
s/o Crystal Legacy for their DV & Hidden Power display code, which got this off the ground. Credited aptly. I modified what they had with Stat Exp, but the menu is a little jank and scrolling is buggy. Someone wanna pick that up?
This commit is contained in:
parent
8306a435c3
commit
d8acbafc75
|
@ -89,7 +89,7 @@ As the open source nature of this project implies, people are free to reuse what
|
||||||
If you use our implementations of anything at all, it is encouraged to submit Pull Requests for bug fixes if you find any issues! We very much appreciate them!
|
If you use our implementations of anything at all, it is encouraged to submit Pull Requests for bug fixes if you find any issues! We very much appreciate them!
|
||||||
|
|
||||||
## Development Credits
|
## Development Credits
|
||||||
- Plague von Karma (Director, Kanto Expansion Pak Founder, Programming, Maps)
|
- Plague von Karma (Director, Kanto Expansion Pak Founder, Programming, Maps, Stat Exp. Display code)
|
||||||
- Martha's Against Humanity (Kanto Expansion Pak ROM Hack Creator, Programmer, Spriter)
|
- Martha's Against Humanity (Kanto Expansion Pak ROM Hack Creator, Programmer, Spriter)
|
||||||
- Zeta_Null (Repository Creator, Spriter, Programming, Music)
|
- Zeta_Null (Repository Creator, Spriter, Programming, Music)
|
||||||
- LadyMisticus (Documentation, Programming, Mapping, Spriter)
|
- LadyMisticus (Documentation, Programming, Mapping, Spriter)
|
||||||
|
@ -134,6 +134,7 @@ JEP-affiliated spriters require sprites to be used with direct credit for non-co
|
||||||
- ZoomTen - Honey Pot & Honey Grandma features from Pokemon October, commits [here](https://github.com/pokeachromicdevs/pokeoctober/commit/d00cd6fafdbe5069d2cc452a154942f82f7fceb6), [here](https://github.com/pokeachromicdevs/pokeoctober/commit/1a6f3e4f0307656018f02d4981c973efa814a248), and [here](https://github.com/pokeachromicdevs/pokeoctober/commit/8114fead91828dd6d986fe120d6c5cd5e3c6cbf6). Safari Game restoration [here](https://github.com/pokeachromicdevs/pokeoctober/commit/2ff835730b2a61a757ad67f13e50480c965d2a0c}.
|
- ZoomTen - Honey Pot & Honey Grandma features from Pokemon October, commits [here](https://github.com/pokeachromicdevs/pokeoctober/commit/d00cd6fafdbe5069d2cc452a154942f82f7fceb6), [here](https://github.com/pokeachromicdevs/pokeoctober/commit/1a6f3e4f0307656018f02d4981c973efa814a248), and [here](https://github.com/pokeachromicdevs/pokeoctober/commit/8114fead91828dd6d986fe120d6c5cd5e3c6cbf6). Safari Game restoration [here](https://github.com/pokeachromicdevs/pokeoctober/commit/2ff835730b2a61a757ad67f13e50480c965d2a0c}.
|
||||||
- Ferropexola/aforward9600: Time of day-based tileset palette code
|
- Ferropexola/aforward9600: Time of day-based tileset palette code
|
||||||
- Rangi42/polishedcrystal: [Decoration shop script](https://github.com/Rangi42/polishedcrystal/blob/master/maps/GoldenrodHarbor.asm)
|
- Rangi42/polishedcrystal: [Decoration shop script](https://github.com/Rangi42/polishedcrystal/blob/master/maps/GoldenrodHarbor.asm)
|
||||||
|
- cRz-Shadows & Crystal Legacy Devs - [DVs & Hidden Power display code](https://github.com/cRz-Shadows/Pokemon_Crystal_Legacy/blob/main/engine/pokemon/stats_screen.asm)
|
||||||
|
|
||||||
Original readme proceeding...
|
Original readme proceeding...
|
||||||
# 16-bit index expansion for Crystal
|
# 16-bit index expansion for Crystal
|
||||||
|
|
|
@ -215,7 +215,7 @@ _CGB_StatsScreenHPPals:
|
||||||
call LoadPalette_White_Col1_Col2_Black ; exp palette
|
call LoadPalette_White_Col1_Col2_Black ; exp palette
|
||||||
ld hl, StatsScreenPagePals
|
ld hl, StatsScreenPagePals
|
||||||
ld de, wBGPals1 palette 3
|
ld de, wBGPals1 palette 3
|
||||||
ld bc, 3 palettes ; pink, green, and blue page palettes
|
ld bc, 4 palettes ; pink, green, and blue page palettes - now with orange!
|
||||||
ld a, BANK(wBGPals1)
|
ld a, BANK(wBGPals1)
|
||||||
call FarCopyWRAM
|
call FarCopyWRAM
|
||||||
call WipeAttrmap
|
call WipeAttrmap
|
||||||
|
@ -230,20 +230,25 @@ _CGB_StatsScreenHPPals:
|
||||||
ld a, $2 ; exp palette
|
ld a, $2 ; exp palette
|
||||||
call ByteFill
|
call ByteFill
|
||||||
|
|
||||||
hlcoord 13, 5, wAttrmap
|
hlcoord 11, 5, wAttrmap
|
||||||
lb bc, 2, 2
|
lb bc, 2, 2
|
||||||
ld a, $3 ; pink page palette
|
ld a, $3 ; pink page palette
|
||||||
call FillBoxCGB
|
call FillBoxCGB
|
||||||
|
|
||||||
hlcoord 15, 5, wAttrmap
|
hlcoord 13, 5, wAttrmap
|
||||||
lb bc, 2, 2
|
lb bc, 2, 2
|
||||||
ld a, $4 ; green page palette
|
ld a, $4 ; green page palette
|
||||||
call FillBoxCGB
|
call FillBoxCGB
|
||||||
|
|
||||||
hlcoord 17, 5, wAttrmap
|
hlcoord 15, 5, wAttrmap
|
||||||
lb bc, 2, 2
|
lb bc, 2, 2
|
||||||
ld a, $5 ; blue page palette
|
ld a, $5 ; blue page palette
|
||||||
call FillBoxCGB
|
call FillBoxCGB
|
||||||
|
|
||||||
|
hlcoord 17, 5, wAttrmap
|
||||||
|
lb bc, 2, 2
|
||||||
|
ld a, $6 ; orange page palette
|
||||||
|
call FillBoxCGB
|
||||||
|
|
||||||
call ApplyAttrmap
|
call ApplyAttrmap
|
||||||
call ApplyPals
|
call ApplyPals
|
||||||
|
|
|
@ -375,7 +375,6 @@ LoadStatsScreenPals:
|
||||||
ret z
|
ret z
|
||||||
ld hl, StatsScreenPals
|
ld hl, StatsScreenPals
|
||||||
ld b, 0
|
ld b, 0
|
||||||
dec c
|
|
||||||
add hl, bc
|
add hl, bc
|
||||||
add hl, bc
|
add hl, bc
|
||||||
ldh a, [rSVBK]
|
ldh a, [rSVBK]
|
||||||
|
|
|
@ -1,7 +1,11 @@
|
||||||
|
; BUG: The icons up top don't match your scrolling.
|
||||||
|
; I probably missed something.
|
||||||
|
; Review: https://github.com/pret/pokecrystal/wiki/Add-a-fourth-stats-page
|
||||||
const_def 1
|
const_def 1
|
||||||
const PINK_PAGE ; 1
|
const PINK_PAGE ; 1
|
||||||
const GREEN_PAGE ; 2
|
const GREEN_PAGE ; 2
|
||||||
const BLUE_PAGE ; 3
|
const BLUE_PAGE ; 3
|
||||||
|
const ORANGE_PAGE ; 4
|
||||||
DEF NUM_STAT_PAGES EQU const_value - 1
|
DEF NUM_STAT_PAGES EQU const_value - 1
|
||||||
|
|
||||||
DEF STAT_PAGE_MASK EQU %00000011
|
DEF STAT_PAGE_MASK EQU %00000011
|
||||||
|
@ -62,12 +66,7 @@ StatsScreenInit_gotaddress:
|
||||||
StatsScreenMain:
|
StatsScreenMain:
|
||||||
xor a
|
xor a
|
||||||
ld [wJumptableIndex], a
|
ld [wJumptableIndex], a
|
||||||
; ???
|
ld [wStatsScreenFlags], a ; PINK_PAGE
|
||||||
ld [wStatsScreenFlags], a
|
|
||||||
ld a, [wStatsScreenFlags]
|
|
||||||
and ~STAT_PAGE_MASK
|
|
||||||
or PINK_PAGE ; first_page
|
|
||||||
ld [wStatsScreenFlags], a
|
|
||||||
.loop
|
.loop
|
||||||
ld a, [wJumptableIndex]
|
ld a, [wJumptableIndex]
|
||||||
and ~(1 << 7)
|
and ~(1 << 7)
|
||||||
|
@ -82,12 +81,7 @@ StatsScreenMain:
|
||||||
StatsScreenMobile:
|
StatsScreenMobile:
|
||||||
xor a
|
xor a
|
||||||
ld [wJumptableIndex], a
|
ld [wJumptableIndex], a
|
||||||
; ???
|
ld [wStatsScreenFlags], a ; PINK_PAGE
|
||||||
ld [wStatsScreenFlags], a
|
|
||||||
ld a, [wStatsScreenFlags]
|
|
||||||
and ~STAT_PAGE_MASK
|
|
||||||
or PINK_PAGE ; first_page
|
|
||||||
ld [wStatsScreenFlags], a
|
|
||||||
.loop
|
.loop
|
||||||
farcall Mobile_SetOverworldDelay
|
farcall Mobile_SetOverworldDelay
|
||||||
ld a, [wJumptableIndex]
|
ld a, [wJumptableIndex]
|
||||||
|
@ -373,20 +367,22 @@ StatsScreen_JoypadAction:
|
||||||
|
|
||||||
.a_button
|
.a_button
|
||||||
ld a, c
|
ld a, c
|
||||||
cp BLUE_PAGE ; last page
|
cp ORANGE_PAGE ; last page
|
||||||
jr z, .b_button
|
jr z, .b_button
|
||||||
.d_right
|
.d_right
|
||||||
inc c
|
inc c
|
||||||
ld a, BLUE_PAGE ; last page
|
ld a, ORANGE_PAGE ; last page
|
||||||
cp c
|
cp c
|
||||||
jr nc, .set_page
|
jr nc, .set_page
|
||||||
ld c, PINK_PAGE ; first page
|
ld c, PINK_PAGE ; first page
|
||||||
jr .set_page
|
jr .set_page
|
||||||
|
|
||||||
.d_left
|
.d_left
|
||||||
|
ld a, c
|
||||||
dec c
|
dec c
|
||||||
|
and a ; cp PINK_PAGE
|
||||||
jr nz, .set_page
|
jr nz, .set_page
|
||||||
ld c, BLUE_PAGE ; last page
|
ld c, ORANGE_PAGE ; last page
|
||||||
jr .set_page
|
jr .set_page
|
||||||
|
|
||||||
.done
|
.done
|
||||||
|
@ -489,19 +485,6 @@ StatsScreen_InitUpperHalf:
|
||||||
dw sBoxMonNicknames
|
dw sBoxMonNicknames
|
||||||
dw wBufferMonNickname
|
dw wBufferMonNickname
|
||||||
|
|
||||||
StatsScreen_PlaceVerticalDivider: ; unreferenced
|
|
||||||
; The Japanese stats screen has a vertical divider.
|
|
||||||
hlcoord 7, 0
|
|
||||||
ld bc, SCREEN_WIDTH
|
|
||||||
ld d, SCREEN_HEIGHT
|
|
||||||
.loop
|
|
||||||
ld a, $31 ; vertical divider
|
|
||||||
ld [hl], a
|
|
||||||
add hl, bc
|
|
||||||
dec d
|
|
||||||
jr nz, .loop
|
|
||||||
ret
|
|
||||||
|
|
||||||
StatsScreen_PlaceHorizontalDivider:
|
StatsScreen_PlaceHorizontalDivider:
|
||||||
hlcoord 0, 7
|
hlcoord 0, 7
|
||||||
ld b, SCREEN_WIDTH
|
ld b, SCREEN_WIDTH
|
||||||
|
@ -513,7 +496,7 @@ StatsScreen_PlaceHorizontalDivider:
|
||||||
ret
|
ret
|
||||||
|
|
||||||
StatsScreen_PlacePageSwitchArrows:
|
StatsScreen_PlacePageSwitchArrows:
|
||||||
hlcoord 12, 6
|
hlcoord 10, 6
|
||||||
ld [hl], "◀"
|
ld [hl], "◀"
|
||||||
hlcoord 19, 6
|
hlcoord 19, 6
|
||||||
ld [hl], "▶"
|
ld [hl], "▶"
|
||||||
|
@ -569,7 +552,6 @@ StatsScreen_LoadGFX:
|
||||||
.PageTilemap:
|
.PageTilemap:
|
||||||
ld a, [wStatsScreenFlags]
|
ld a, [wStatsScreenFlags]
|
||||||
maskbits NUM_STAT_PAGES
|
maskbits NUM_STAT_PAGES
|
||||||
dec a
|
|
||||||
ld hl, .Jumptable
|
ld hl, .Jumptable
|
||||||
rst JumpTable
|
rst JumpTable
|
||||||
ret
|
ret
|
||||||
|
@ -580,6 +562,7 @@ StatsScreen_LoadGFX:
|
||||||
dw LoadPinkPage
|
dw LoadPinkPage
|
||||||
dw LoadGreenPage
|
dw LoadGreenPage
|
||||||
dw LoadBluePage
|
dw LoadBluePage
|
||||||
|
dw LoadOrangePage
|
||||||
assert_table_length NUM_STAT_PAGES
|
assert_table_length NUM_STAT_PAGES
|
||||||
|
|
||||||
LoadPinkPage:
|
LoadPinkPage:
|
||||||
|
@ -829,6 +812,486 @@ IDNoString:
|
||||||
OTString:
|
OTString:
|
||||||
db "OT/@"
|
db "OT/@"
|
||||||
|
|
||||||
|
; Will display DVs, Stat Exp, Hidden Power...
|
||||||
|
; Tech itself comes from pret's tutorial: https://github.com/pret/pokecrystal/wiki/Add-a-fourth-stats-page
|
||||||
|
; DVs and Hidden Power yoinked from Crystal Legacy: https://github.com/cRz-Shadows/Pokemon_Crystal_Legacy/blob/main/engine/pokemon/stats_screen.asm
|
||||||
|
LoadOrangePage:
|
||||||
|
; BUG: This code doesn't display the divider for some reason. Not sure how to get one going. Are you a bad enough dude to make this happen?
|
||||||
|
;hlcoord 10, 12
|
||||||
|
;ld de, SCREEN_WIDTH
|
||||||
|
;ld b, 1
|
||||||
|
;ld a, $31 ; vertical divider
|
||||||
|
;.vertical_divider
|
||||||
|
;ld [hl], a
|
||||||
|
;add hl, de
|
||||||
|
;dec b
|
||||||
|
;jr nz, .vertical_divider
|
||||||
|
|
||||||
|
call StatsScreen_PrintStatExp
|
||||||
|
call StatsScreen_PrintDVs
|
||||||
|
|
||||||
|
; For now, there is no condition for showing Hidden Power.
|
||||||
|
; Crystal Legacy had the display as a reward, but you can figure out the Hidden Power from the DVs showing anyway. Why bother, then?
|
||||||
|
; Condition code proceeding...
|
||||||
|
; check if we've caught all the unown, Event flag set by talking to printer guy at ruins lab
|
||||||
|
;ld de, EVENT_CAUGHT_ALL_UNOWN
|
||||||
|
;ld b, CHECK_FLAG
|
||||||
|
;call EventFlagAction
|
||||||
|
;ld a, c
|
||||||
|
;and a
|
||||||
|
;ret z ; flag was not set
|
||||||
|
|
||||||
|
call StatsScreen_PrintHiddenPower
|
||||||
|
ret
|
||||||
|
|
||||||
|
StatsScreen_PrintStatExp:
|
||||||
|
hlcoord 1, 8
|
||||||
|
ld de, .statExpStr1
|
||||||
|
call PlaceString
|
||||||
|
hlcoord 1, 9
|
||||||
|
ld de, .statExpStr2
|
||||||
|
call PlaceString
|
||||||
|
|
||||||
|
hlcoord 1, 10
|
||||||
|
ld de, .statExpStr3
|
||||||
|
call PlaceString
|
||||||
|
|
||||||
|
hlcoord 1, 11
|
||||||
|
ld de, .statExpStr4
|
||||||
|
call PlaceString
|
||||||
|
|
||||||
|
hlcoord 1, 12
|
||||||
|
ld de, .statExpStr5
|
||||||
|
call PlaceString
|
||||||
|
|
||||||
|
hlcoord 1, 13
|
||||||
|
ld de, .statExpStr6
|
||||||
|
call PlaceString
|
||||||
|
|
||||||
|
;ld a, [wTempMonHPExp]
|
||||||
|
;swap a
|
||||||
|
;and %011111
|
||||||
|
;ld [wPokedexStatus], a
|
||||||
|
ld de, wTempMonHPExp
|
||||||
|
lb bc, PRINTNUM_LEADINGZEROS | 2, 5 ; bytes, digits
|
||||||
|
hlcoord 6, 9
|
||||||
|
call PrintNum
|
||||||
|
|
||||||
|
ld de, wTempMonAtkExp
|
||||||
|
lb bc, PRINTNUM_LEADINGZEROS | 2, 5 ; bytes, digits
|
||||||
|
hlcoord 6, 10
|
||||||
|
call PrintNum
|
||||||
|
|
||||||
|
ld de, wTempMonDefExp
|
||||||
|
lb bc, PRINTNUM_LEADINGZEROS | 2, 5 ; bytes, digits
|
||||||
|
hlcoord 6, 11
|
||||||
|
call PrintNum
|
||||||
|
|
||||||
|
ld de, wTempMonSpcExp
|
||||||
|
lb bc, PRINTNUM_LEADINGZEROS | 2, 5 ; bytes, digits
|
||||||
|
hlcoord 6, 12
|
||||||
|
call PrintNum
|
||||||
|
|
||||||
|
ld de, wTempMonSpdExp
|
||||||
|
lb bc, PRINTNUM_LEADINGZEROS | 2, 5 ; bytes, digits
|
||||||
|
hlcoord 6, 13
|
||||||
|
call PrintNum
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
.statExpStr1:
|
||||||
|
db " STAT EXP. / DVs@"
|
||||||
|
|
||||||
|
.statExpStr2:
|
||||||
|
db "HP: /@"
|
||||||
|
|
||||||
|
.statExpStr3:
|
||||||
|
db "ATK: /@"
|
||||||
|
|
||||||
|
.statExpStr4:
|
||||||
|
db "DEF: /@"
|
||||||
|
|
||||||
|
.statExpStr5:
|
||||||
|
db "SPC: /@"
|
||||||
|
|
||||||
|
.statExpStr6:
|
||||||
|
db "SPE: /@"
|
||||||
|
|
||||||
|
StatsScreen_PrintDVs:
|
||||||
|
; we're using wPokedexStatus because why not, nobody using it atm lol
|
||||||
|
; ATK DV
|
||||||
|
ld a, [wTempMonDVs] ; only get the first byte of the word
|
||||||
|
and %11110000 ; most significant nybble of first byte in word-sized wTempMonDVs
|
||||||
|
swap a ; so we can print it properly
|
||||||
|
ld [wPokedexStatus], a
|
||||||
|
ld c, 0
|
||||||
|
; calc HP stat contribution
|
||||||
|
and 1 ; a still has the ATK DV
|
||||||
|
jr z, .atk_not_odd
|
||||||
|
ld a, 0
|
||||||
|
add 8
|
||||||
|
ld b, 0
|
||||||
|
ld c, a
|
||||||
|
;
|
||||||
|
.atk_not_odd
|
||||||
|
push bc
|
||||||
|
ld de, wPokedexStatus
|
||||||
|
lb bc, PRINTNUM_LEADINGZEROS | 1, 2 ; bytes, digits
|
||||||
|
hlcoord 14, 10
|
||||||
|
call PrintNum
|
||||||
|
|
||||||
|
; DEF DV
|
||||||
|
ld a, [wTempMonDVs] ; only get the first byte of the word
|
||||||
|
and %00001111 ; least significant nybble, don't need to swap the bits of the byte
|
||||||
|
ld [wPokedexStatus], a ;DEF
|
||||||
|
; calc HP stat contribution
|
||||||
|
pop bc
|
||||||
|
and 1 ; a still has the DEF DV
|
||||||
|
jr z, .def_not_odd
|
||||||
|
ld a, c
|
||||||
|
add 4
|
||||||
|
ld b, 0
|
||||||
|
ld c, a
|
||||||
|
;
|
||||||
|
.def_not_odd
|
||||||
|
push bc
|
||||||
|
ld de, wPokedexStatus
|
||||||
|
lb bc, PRINTNUM_LEADINGZEROS | 1, 2 ; bytes, digits
|
||||||
|
hlcoord 14, 11
|
||||||
|
call PrintNum
|
||||||
|
|
||||||
|
; SPE DV
|
||||||
|
ld a, [wTempMonDVs + 1] ; second byte of word
|
||||||
|
and %11110000 ; most significant nybble of 2nd byte in word-sized wTempMonDVs
|
||||||
|
swap a ; so we can print it properly
|
||||||
|
ld [wPokedexStatus], a ;SPEED
|
||||||
|
; calc HP stat contribution
|
||||||
|
pop bc
|
||||||
|
and 1 ; a still has the SPEED DV
|
||||||
|
jr z, .speed_not_odd
|
||||||
|
ld a, c
|
||||||
|
add 2
|
||||||
|
ld b, 0
|
||||||
|
ld c, a
|
||||||
|
;
|
||||||
|
.speed_not_odd
|
||||||
|
push bc
|
||||||
|
ld de, wPokedexStatus
|
||||||
|
lb bc, PRINTNUM_LEADINGZEROS | 1, 2 ; bytes, digits
|
||||||
|
hlcoord 14, 12 ; 1, 5, 9, 13
|
||||||
|
call PrintNum
|
||||||
|
|
||||||
|
; SPC DV
|
||||||
|
ld a, [wTempMonDVs + 1] ; second byte of word
|
||||||
|
and %00001111 ; least significant nybble, don't need to swap the bits of the byte
|
||||||
|
ld [wPokedexStatus], a ;SPC
|
||||||
|
; calc HP stat contribution
|
||||||
|
pop bc
|
||||||
|
and 1 ; a still has the DEF DV
|
||||||
|
jr z, .spc_not_odd
|
||||||
|
ld a, c
|
||||||
|
add 1
|
||||||
|
ld b, 0
|
||||||
|
ld c, a
|
||||||
|
;
|
||||||
|
.spc_not_odd
|
||||||
|
push bc
|
||||||
|
ld de, wPokedexStatus
|
||||||
|
lb bc, PRINTNUM_LEADINGZEROS | 1, 2 ; bytes, digits
|
||||||
|
hlcoord 14, 13
|
||||||
|
call PrintNum
|
||||||
|
; hlcoord 18, 15 ; 1, 4, 7, 10, 13
|
||||||
|
; call PrintNum
|
||||||
|
|
||||||
|
; HP
|
||||||
|
; HP DV is determined by the last bit of each of these four DVs
|
||||||
|
; odd Attack DV adds 8, Defense adds 4, Speed adds 2, and Special adds 1
|
||||||
|
;For example, a Lugia with the DVs 5 Atk, 15 Def, 13 Spe, and 13 Spc will have:
|
||||||
|
; 5 Attack = Odd, HP += 8
|
||||||
|
; 15 Defense = Odd, HP += 4
|
||||||
|
; 13 Speed = Odd, HP += 2
|
||||||
|
; 13 Special = Odd, HP += 1
|
||||||
|
;resulting in an HP stat of 15
|
||||||
|
; THANKS SMOGON
|
||||||
|
; going to "and 1" each final value and push a counter to stack to preserve it
|
||||||
|
pop bc
|
||||||
|
ld a, c
|
||||||
|
ld [wPokedexStatus], a
|
||||||
|
ld de, wPokedexStatus
|
||||||
|
lb bc, PRINTNUM_LEADINGZEROS | 1, 2 ; bytes, digits
|
||||||
|
hlcoord 14, 9 ; 1, 4, 7, 10, 13
|
||||||
|
call PrintNum
|
||||||
|
ret
|
||||||
|
|
||||||
|
StatsScreen_LoadUnownFont:
|
||||||
|
ld a, BANK(sScratch)
|
||||||
|
call OpenSRAM
|
||||||
|
ld hl, UnownFont
|
||||||
|
; sScratch + $188 was the address of sDecompressBuffer in pokegold
|
||||||
|
ld de, sScratch + $188
|
||||||
|
ld bc, 38 tiles
|
||||||
|
ld a, BANK(UnownFont)
|
||||||
|
call FarCopyBytes
|
||||||
|
; ld hl, sScratch + $188
|
||||||
|
; ld bc, (NUM_UNOWN + 1) tiles
|
||||||
|
;call Pokedex_InvertTiles
|
||||||
|
ld de, sScratch + $188
|
||||||
|
ld hl, vTiles1 tile $3a ;FIRST_UNOWN_CHAR
|
||||||
|
lb bc, BANK(Pokedex_LoadUnownFont), NUM_UNOWN
|
||||||
|
call Request2bpp
|
||||||
|
call CloseSRAM
|
||||||
|
ret
|
||||||
|
|
||||||
|
StatsScreen_HiddenPow_BP:
|
||||||
|
call StatsScreen_LoadUnownFont
|
||||||
|
; Take the top/most significant bit from each stat
|
||||||
|
; basically, if the DV is 8 or above
|
||||||
|
; arrange those bits in order, into a nybble
|
||||||
|
; Attack
|
||||||
|
ld a, [wTempMonDVs]
|
||||||
|
swap a
|
||||||
|
and %1000
|
||||||
|
; Defense
|
||||||
|
ld b, a
|
||||||
|
ld a, [wTempMonDVs]
|
||||||
|
and %1000
|
||||||
|
srl a
|
||||||
|
or b
|
||||||
|
; Speed
|
||||||
|
ld b, a
|
||||||
|
ld a, [wTempMonDVs + 1]
|
||||||
|
swap a
|
||||||
|
and %1000
|
||||||
|
srl a
|
||||||
|
srl a
|
||||||
|
or b
|
||||||
|
; Special
|
||||||
|
ld b, a
|
||||||
|
ld a, [wTempMonDVs + 1]
|
||||||
|
and %1000
|
||||||
|
srl a
|
||||||
|
srl a
|
||||||
|
srl a
|
||||||
|
or b
|
||||||
|
; Multiply by 5
|
||||||
|
ld b, a
|
||||||
|
add a
|
||||||
|
add a
|
||||||
|
add b
|
||||||
|
; Add Special & 3
|
||||||
|
ld b, a
|
||||||
|
ld a, [wTempMonDVs + 1]
|
||||||
|
and %0011
|
||||||
|
add b
|
||||||
|
; Divide by 2 and add 30 + 1
|
||||||
|
srl a
|
||||||
|
add 30
|
||||||
|
inc a
|
||||||
|
ret
|
||||||
|
|
||||||
|
StatsScreen_PrintHiddenPower:
|
||||||
|
; print Type first
|
||||||
|
ld a, [wTempMonDVs]
|
||||||
|
and %0011
|
||||||
|
ld b, a
|
||||||
|
; + (Atk & 3) << 2
|
||||||
|
ld a, [wTempMonDVs]
|
||||||
|
and %0011 << 4
|
||||||
|
swap a
|
||||||
|
add a
|
||||||
|
add a
|
||||||
|
or b
|
||||||
|
; Skip Normal
|
||||||
|
inc a
|
||||||
|
; Skip Bird
|
||||||
|
cp BIRD
|
||||||
|
jr c, .done
|
||||||
|
inc a
|
||||||
|
; Skip unused types
|
||||||
|
cp UNUSED_TYPES
|
||||||
|
jr c, .done
|
||||||
|
add UNUSED_TYPES_END - UNUSED_TYPES
|
||||||
|
.done
|
||||||
|
add a
|
||||||
|
ld e, a
|
||||||
|
ld d, 0
|
||||||
|
ld a, BANK(TypeNames)
|
||||||
|
ld hl, TypeNames
|
||||||
|
add hl, de
|
||||||
|
call GetFarWord
|
||||||
|
ld d, h
|
||||||
|
ld e, l
|
||||||
|
|
||||||
|
hlcoord 2, 16
|
||||||
|
call PlaceString_UnownFont_Type
|
||||||
|
hlcoord 1, 15
|
||||||
|
ld de, .hidden_pow_text
|
||||||
|
call PlaceString_UnownFont
|
||||||
|
|
||||||
|
call StatsScreen_HiddenPow_BP
|
||||||
|
ld de, .hp_70_text
|
||||||
|
cp 70
|
||||||
|
jr c, .not70
|
||||||
|
ld de, .hp_70_text
|
||||||
|
sub 70
|
||||||
|
jr .print1
|
||||||
|
.not70
|
||||||
|
cp 60
|
||||||
|
jr c, .not60
|
||||||
|
ld de, .hp_60_text
|
||||||
|
sub 60
|
||||||
|
jr .print1
|
||||||
|
.not60
|
||||||
|
cp 50
|
||||||
|
jr c, .not50
|
||||||
|
ld de, .hp_50_text
|
||||||
|
sub 50
|
||||||
|
jr .print1
|
||||||
|
.not50
|
||||||
|
cp 40
|
||||||
|
jr c, .not40
|
||||||
|
ld de, .hp_40_text
|
||||||
|
sub 40
|
||||||
|
jr .print1
|
||||||
|
.not40
|
||||||
|
ld de, .hp_30_text
|
||||||
|
sub 30
|
||||||
|
.print1
|
||||||
|
hlcoord 8, 16
|
||||||
|
push af
|
||||||
|
call PlaceString_UnownFont
|
||||||
|
pop af
|
||||||
|
|
||||||
|
cp 9
|
||||||
|
jr c, .not9
|
||||||
|
ld de, .hp_9_text
|
||||||
|
jr .print2
|
||||||
|
.not9
|
||||||
|
cp 8
|
||||||
|
jr c, .not8
|
||||||
|
ld de, .hp_8_text
|
||||||
|
jr .print2
|
||||||
|
.not8
|
||||||
|
cp 7
|
||||||
|
jr c, .not7
|
||||||
|
ld de, .hp_7_text
|
||||||
|
jr .print2
|
||||||
|
.not7
|
||||||
|
cp 6
|
||||||
|
jr c, .not6
|
||||||
|
ld de, .hp_6_text
|
||||||
|
jr .print2
|
||||||
|
.not6
|
||||||
|
cp 5
|
||||||
|
jr c, .not5
|
||||||
|
ld de, .hp_5_text
|
||||||
|
jr .print2
|
||||||
|
.not5
|
||||||
|
cp 4
|
||||||
|
jr c, .not4
|
||||||
|
ld de, .hp_4_text
|
||||||
|
jr .print2
|
||||||
|
.not4
|
||||||
|
cp 3
|
||||||
|
jr c, .not3
|
||||||
|
ld de, .hp_3_text
|
||||||
|
jr .print2
|
||||||
|
.not3
|
||||||
|
cp 2
|
||||||
|
jr c, .not2
|
||||||
|
ld de, .hp_2_text
|
||||||
|
jr .print2
|
||||||
|
.not2
|
||||||
|
cp 1
|
||||||
|
ret c
|
||||||
|
ld de, .hp_1_text
|
||||||
|
.print2
|
||||||
|
; hlcoord 13, 16
|
||||||
|
call PlaceString_UnownFont
|
||||||
|
ret
|
||||||
|
.hidden_pow_text:
|
||||||
|
db "HIDDEN POWER@"
|
||||||
|
.hp_70_text:
|
||||||
|
db "SEVENTY@"
|
||||||
|
.hp_60_text:
|
||||||
|
db "SIXTY@"
|
||||||
|
.hp_50_text:
|
||||||
|
db "FIFTY@"
|
||||||
|
.hp_40_text:
|
||||||
|
db "FOURTY@"
|
||||||
|
.hp_30_text:
|
||||||
|
db "THIRTY@"
|
||||||
|
.hp_1_text:
|
||||||
|
db "-ONE@"
|
||||||
|
.hp_2_text:
|
||||||
|
db "-TWO@"
|
||||||
|
.hp_3_text:
|
||||||
|
db "-THREE@"
|
||||||
|
.hp_4_text:
|
||||||
|
db "-FOUR@"
|
||||||
|
.hp_5_text:
|
||||||
|
db "-FIVE@"
|
||||||
|
.hp_6_text:
|
||||||
|
db "-SIX@"
|
||||||
|
.hp_7_text:
|
||||||
|
db "-SEVEN@"
|
||||||
|
.hp_8_text:
|
||||||
|
db "-EIGHT@"
|
||||||
|
.hp_9_text:
|
||||||
|
db "-NINE@"
|
||||||
|
|
||||||
|
PlaceString_UnownFont_Type:
|
||||||
|
push hl
|
||||||
|
push de
|
||||||
|
.loop
|
||||||
|
pop hl
|
||||||
|
ld a, BANK(TypeNames)
|
||||||
|
call GetFarByte
|
||||||
|
ld d, h
|
||||||
|
ld e, l
|
||||||
|
pop hl
|
||||||
|
cp "@"
|
||||||
|
ret z
|
||||||
|
inc de
|
||||||
|
sub "A"
|
||||||
|
add $BA ; FIRST_UNOWN_CHAR
|
||||||
|
ld [hli], a
|
||||||
|
push hl
|
||||||
|
push de
|
||||||
|
jr .loop
|
||||||
|
|
||||||
|
PlaceString_UnownFont:
|
||||||
|
push hl
|
||||||
|
push de
|
||||||
|
.loop
|
||||||
|
pop hl
|
||||||
|
ld a, [hl]
|
||||||
|
pop hl
|
||||||
|
cp "@"
|
||||||
|
ret z
|
||||||
|
cp " "
|
||||||
|
call z, .skip_space
|
||||||
|
cp "-"
|
||||||
|
call z, .skip_space
|
||||||
|
inc de
|
||||||
|
sub "A"
|
||||||
|
add $BA ; FIRST_UNOWN_CHAR
|
||||||
|
|
||||||
|
ld [hli], a
|
||||||
|
push hl
|
||||||
|
push de
|
||||||
|
jr .loop
|
||||||
|
.skip_space:
|
||||||
|
ld [hl], a
|
||||||
|
inc hl
|
||||||
|
push hl
|
||||||
|
inc de
|
||||||
|
push de
|
||||||
|
pop hl
|
||||||
|
ld a, [hl]
|
||||||
|
pop hl
|
||||||
|
ret
|
||||||
|
|
||||||
StatsScreen_PlaceFrontpic:
|
StatsScreen_PlaceFrontpic:
|
||||||
ld hl, wTempMonDVs
|
ld hl, wTempMonDVs
|
||||||
predef GetUnownLetter
|
predef GetUnownLetter
|
||||||
|
@ -961,8 +1424,7 @@ StatsScreen_GetAnimationParam:
|
||||||
|
|
||||||
.Tempmon:
|
.Tempmon:
|
||||||
ld bc, wTempMonSpecies
|
ld bc, wTempMonSpecies
|
||||||
jr .CheckEggFaintedFrzSlp ; utterly pointless
|
; fallthrough
|
||||||
|
|
||||||
.CheckEggFaintedFrzSlp:
|
.CheckEggFaintedFrzSlp:
|
||||||
ld a, [wCurPartySpecies]
|
ld a, [wCurPartySpecies]
|
||||||
cp EGG
|
cp EGG
|
||||||
|
@ -1128,6 +1590,9 @@ StatsScreen_AnimateEgg:
|
||||||
ret
|
ret
|
||||||
|
|
||||||
StatsScreen_LoadPageIndicators:
|
StatsScreen_LoadPageIndicators:
|
||||||
|
hlcoord 11, 5
|
||||||
|
ld a, $36 ; " " " "
|
||||||
|
call .load_square
|
||||||
hlcoord 13, 5
|
hlcoord 13, 5
|
||||||
ld a, $36 ; first of 4 small square tiles
|
ld a, $36 ; first of 4 small square tiles
|
||||||
call .load_square
|
call .load_square
|
||||||
|
@ -1138,13 +1603,19 @@ StatsScreen_LoadPageIndicators:
|
||||||
ld a, $36 ; " " " "
|
ld a, $36 ; " " " "
|
||||||
call .load_square
|
call .load_square
|
||||||
ld a, c
|
ld a, c
|
||||||
|
cp PINK_PAGE
|
||||||
|
hlcoord 11, 5
|
||||||
|
jr z, .load_highlighted_square
|
||||||
cp GREEN_PAGE
|
cp GREEN_PAGE
|
||||||
|
hlcoord 13, 5
|
||||||
|
jr z, .load_highlighted_square
|
||||||
|
cp BLUE_PAGE
|
||||||
|
hlcoord 15, 5
|
||||||
|
jr z, .load_highlighted_square
|
||||||
|
; must be ORANGE_PAGE
|
||||||
|
hlcoord 17, 5
|
||||||
|
.load_highlighted_square
|
||||||
ld a, $3a ; first of 4 large square tiles
|
ld a, $3a ; first of 4 large square tiles
|
||||||
hlcoord 13, 5 ; PINK_PAGE (< GREEN_PAGE)
|
|
||||||
jr c, .load_square
|
|
||||||
hlcoord 15, 5 ; GREEN_PAGE (= GREEN_PAGE)
|
|
||||||
jr z, .load_square
|
|
||||||
hlcoord 17, 5 ; BLUE_PAGE (> GREEN_PAGE)
|
|
||||||
.load_square
|
.load_square
|
||||||
push bc
|
push bc
|
||||||
ld [hli], a
|
ld [hli], a
|
||||||
|
|
|
@ -13,3 +13,9 @@
|
||||||
RGB 17, 31, 31
|
RGB 17, 31, 31
|
||||||
RGB 17, 31, 31
|
RGB 17, 31, 31
|
||||||
RGB 00, 00, 00
|
RGB 00, 00, 00
|
||||||
|
; orange
|
||||||
|
RGB 31, 31, 31
|
||||||
|
RGB 30, 24, 16
|
||||||
|
RGB 30, 22, 12
|
||||||
|
RGB 00, 00, 00
|
||||||
|
|
|
@ -4,3 +4,5 @@
|
||||||
RGB 21, 31, 14
|
RGB 21, 31, 14
|
||||||
; blue
|
; blue
|
||||||
RGB 17, 31, 31
|
RGB 17, 31, 31
|
||||||
|
; orange
|
||||||
|
RGB 30, 24, 16
|
||||||
|
|
|
@ -113,11 +113,11 @@ PlayersHouse2F_MapEvents:
|
||||||
db 0, 0 ; filler
|
db 0, 0 ; filler
|
||||||
|
|
||||||
def_warp_events
|
def_warp_events
|
||||||
IF DEF(_DEBUG)
|
;IF DEF(_DEBUG)
|
||||||
warp_event 7, 0, DEBUG_ROOM, 1
|
warp_event 7, 0, DEBUG_ROOM, 1
|
||||||
else
|
;else
|
||||||
warp_event 7, 0, PLAYERS_HOUSE_1F, 3
|
; warp_event 7, 0, PLAYERS_HOUSE_1F, 3
|
||||||
endc
|
;endc
|
||||||
|
|
||||||
def_coord_events
|
def_coord_events
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue