pokecrystal/engine/printer/print_party.asm

365 lines
6.1 KiB
NASM

PRINTPARTY_HP EQUS "\"◀\"" ; $71
PrintPage1: ; 1dc1b0
hlcoord 0, 0
decoord 0, 0, wPrinterTileMapBuffer
ld bc, 17 * SCREEN_WIDTH
call CopyBytes
hlcoord 17, 1, wPrinterTileMapBuffer
ld a, $62
ld [hli], a
inc a
ld [hl], a
hlcoord 17, 2, wPrinterTileMapBuffer
ld a, $64
ld [hli], a
inc a
ld [hl], a
hlcoord 1, 9, wPrinterTileMapBuffer
ld a, " "
ld [hli], a
ld [hl], a
hlcoord 1, 10, wPrinterTileMapBuffer
ld a, $61
ld [hli], a
ld [hl], a
hlcoord 2, 11, wPrinterTileMapBuffer
lb bc, 5, 18
call ClearBox
ld a, [wd265]
dec a
call CheckCaughtMon
push af
ld a, [wd265]
ld b, a
ld c, 1 ; get page 1
farcall GetDexEntryPagePointer
pop af
ld a, b
hlcoord 1, 11, wPrinterTileMapBuffer
call nz, FarString
hlcoord 19, 0, wPrinterTileMapBuffer
ld [hl], $35
ld de, SCREEN_WIDTH
add hl, de
ld b, $f
.column_loop
ld [hl], $37
add hl, de
dec b
jr nz, .column_loop
ld [hl], $3a
ret
; 1dc213
PrintPage2: ; 1dc213
hlcoord 0, 0, wPrinterTileMapBuffer
ld bc, 8 * SCREEN_WIDTH
ld a, " "
call ByteFill
hlcoord 0, 0, wPrinterTileMapBuffer
ld a, $36
ld b, 6
call .FillColumn
hlcoord 19, 0, wPrinterTileMapBuffer
ld a, $37
ld b, 6
call .FillColumn
hlcoord 0, 6, wPrinterTileMapBuffer
ld [hl], $38
inc hl
ld a, $39
ld bc, SCREEN_HEIGHT
call ByteFill
ld [hl], $3a
hlcoord 0, 7, wPrinterTileMapBuffer
ld bc, SCREEN_WIDTH
ld a, $32
call ByteFill
ld a, [wd265]
dec a
call CheckCaughtMon
push af
ld a, [wd265]
ld b, a
ld c, 2 ; get page 2
farcall GetDexEntryPagePointer
pop af
hlcoord 1, 1, wPrinterTileMapBuffer
ld a, b
call nz, FarString
ret
; 1dc26a
.FillColumn: ; 1dc26a
push de
ld de, SCREEN_WIDTH
.column_loop
ld [hl], a
add hl, de
dec b
jr nz, .column_loop
pop de
ret
; 1dc275
GBPrinterStrings:
GBPrinterString_Null: db "@"
GBPrinterString_CheckingLink: next " CHECKING LINK...@"
GBPrinterString_Transmitting: next " TRANSMITTING...@"
GBPrinterString_Printing: next " PRINTING...@"
GBPrinterString_PrinterError1:
db " Printer Error 1"
next ""
next "Check the Game Boy"
next "Printer Manual."
db "@"
GBPrinterString_PrinterError2:
db " Printer Error 2"
next ""
next "Check the Game Boy"
next "Printer Manual."
db "@"
GBPrinterString_PrinterError3:
db " Printer Error 3"
next ""
next "Check the Game Boy"
next "Printer Manual."
db "@"
GBPrinterString_PrinterError4:
db " Printer Error 4"
next ""
next "Check the Game Boy"
next "Printer Manual."
db "@"
; 1dc381
PrintPartyMonPage1: ; 1dc381
call ClearBGPalettes
call ClearTileMap
call ClearSprites
xor a
ld [hBGMapMode], a
call LoadFontsBattleExtra
ld de, GBPrinterHPIcon
ld hl, vTiles2 tile PRINTPARTY_HP
lb bc, BANK(GBPrinterHPIcon), 1
call Request1bpp
ld de, GBPrinterLvIcon
ld hl, vTiles2 tile "<LV>"
lb bc, BANK(GBPrinterLvIcon), 1
call Request1bpp
ld de, StatsScreenPageTilesGFX + 14 tiles ; shiny icon
ld hl, vTiles2 tile "⁂"
lb bc, BANK(StatsScreenPageTilesGFX), 1
call Get2bpp
xor a
ld [wMonType], a
farcall CopyMonToTempMon
hlcoord 0, 7
ld b, 9
ld c, 18
call TextBox
hlcoord 8, 2
ld a, [wTempMonLevel]
call PrintLevel_Force3Digits
hlcoord 12, 2
ld [hl], PRINTPARTY_HP
inc hl
ld de, wTempMonMaxHP
lb bc, 2, 3
call PrintNum
ld a, [wCurPartySpecies]
ld [wd265], a
ld [wCurSpecies], a
ld hl, wPartyMonNicknames
call Function1dc50e
hlcoord 8, 4
call PlaceString
hlcoord 9, 6
ld [hl], "/"
call GetPokemonName
hlcoord 10, 6
call PlaceString
hlcoord 8, 0
ld [hl], "№"
inc hl
ld [hl], "."
inc hl
ld de, wd265
lb bc, PRINTNUM_LEADINGZEROS | 1, 3
call PrintNum
hlcoord 1, 9
ld de, String1dc550
call PlaceString
ld hl, wPartyMonOT
call Function1dc50e
hlcoord 4, 9
call PlaceString
hlcoord 1, 11
ld de, String1dc559
call PlaceString
hlcoord 4, 11
ld de, wTempMonID
lb bc, PRINTNUM_LEADINGZEROS | 2, 5
call PrintNum
hlcoord 1, 14
ld de, String1dc554
call PlaceString
hlcoord 7, 14
ld a, [wTempMonMoves + 0]
call Function1dc51a
call Function1dc52c
ld hl, wTempMonDVs
predef GetUnownLetter
ld hl, wBoxAlignment
xor a
ld [hl], a
ld a, [wCurPartySpecies]
cp UNOWN
jr z, .asm_1dc469
inc [hl]
.asm_1dc469
hlcoord 0, 0
call _PrepMonFrontpic
call WaitBGMap
ld b, SCGB_STATS_SCREEN_HP_PALS
call GetSGBLayout
call SetPalettes
ret
; 1dc47b
PrintPartyMonPage2: ; 1dc47b
call ClearBGPalettes
call ClearTileMap
call ClearSprites
xor a
ld [hBGMapMode], a
call LoadFontsBattleExtra
xor a
ld [wMonType], a
farcall CopyMonToTempMon
hlcoord 0, 0
ld b, 15
ld c, 18
call TextBox
ld bc, SCREEN_WIDTH
decoord 0, 0
hlcoord 0, 1
call CopyBytes
hlcoord 7, 0
ld a, [wTempMonMoves + 1]
call Function1dc51a
hlcoord 7, 2
ld a, [wTempMonMoves + 2]
call Function1dc51a
hlcoord 7, 4
ld a, [wTempMonMoves + 3]
call Function1dc51a
hlcoord 7, 7
ld de, String1dc55d
call PlaceString
hlcoord 16, 7
ld de, wTempMonAttack
call .PrintTempMonStats
hlcoord 16, 9
ld de, wTempMonDefense
call .PrintTempMonStats
hlcoord 16, 11
ld de, wTempMonSpclAtk
call .PrintTempMonStats
hlcoord 16, 13
ld de, wTempMonSpclDef
call .PrintTempMonStats
hlcoord 16, 15
ld de, wTempMonSpeed
call .PrintTempMonStats
call WaitBGMap
ld b, SCGB_STATS_SCREEN_HP_PALS
call GetSGBLayout
call SetPalettes
ret
; 1dc507
.PrintTempMonStats: ; 1dc507
lb bc, 2, 3
call PrintNum
ret
; 1dc50e
Function1dc50e: ; 1dc50e
ld bc, NAME_LENGTH
ld a, [wCurPartyMon]
call AddNTimes
ld e, l
ld d, h
ret
; 1dc51a
Function1dc51a: ; 1dc51a
and a
jr z, .no_move
ld [wd265], a
call GetMoveName
jr .got_string
.no_move
ld de, String1dc584
.got_string
call PlaceString
ret
; 1dc52c
Function1dc52c: ; 1dc52c
farcall GetGender
ld a, " "
jr c, .got_gender
ld a, "♂"
jr nz, .got_gender
ld a, "♀"
.got_gender
hlcoord 17, 2
ld [hl], a
ld bc, wTempMonDVs
farcall CheckShininess
ret nc
hlcoord 18, 2
ld [hl], "⁂"
ret
; 1dc550
String1dc550: ; 1dc550
db "OT/@"
String1dc554: ; 1dc554
db "MOVE@"
String1dc559: ; 1dc559
db "<ID>№.@"
String1dc55d: ; 1dc55d
db "ATTACK"
next "DEFENSE"
next "SPCL.ATK"
next "SPCL.DEF"
next "SPEED"
db "@"
String1dc584: ; 1dc584
db "------------@"
; 1dc591
GBPrinterHPIcon: ; 1dc591
INCBIN "gfx/printer/hp.1bpp"
GBPrinterLvIcon: ; 1dc599
INCBIN "gfx/printer/lv.1bpp"