pokecrystal-board/engine/battle/trainer_huds.asm

259 lines
4.2 KiB
NASM
Raw Normal View History

2018-06-24 07:09:41 -07:00
BattleStart_TrainerHuds:
2015-12-13 11:15:16 -08:00
ld a, $e4
ldh [rOBP0], a
2015-12-13 11:15:16 -08:00
call LoadBallIconGFX
call ShowPlayerMonsRemaining
ld a, [wBattleMode]
dec a
ret z
jp ShowOTTrainerMonsRemaining
2018-06-24 07:09:41 -07:00
EnemySwitch_TrainerHud:
2015-12-13 11:15:16 -08:00
ld a, $e4
ldh [rOBP0], a
2015-12-13 11:15:16 -08:00
call LoadBallIconGFX
jp ShowOTTrainerMonsRemaining
2018-06-24 07:09:41 -07:00
ShowPlayerMonsRemaining:
2015-12-13 11:15:16 -08:00
call DrawPlayerPartyIconHUDBorder
2018-01-23 14:39:09 -08:00
ld hl, wPartyMon1HP
ld de, wPartyCount
2015-12-13 11:15:16 -08:00
call StageBallTilesData
; ldpixel wPlaceBallsX, 12, 12
2023-07-26 17:50:16 -07:00
ld a, 12 * TILE_WIDTH
2015-12-13 11:15:16 -08:00
ld hl, wPlaceBallsX
ld [hli], a
ld [hl], a
2023-07-26 17:50:16 -07:00
ld a, TILE_WIDTH
2015-12-13 11:15:16 -08:00
ld [wPlaceBallsDirection], a
ld hl, wShadowOAMSprite00
2015-12-13 11:15:16 -08:00
jp LoadTrainerHudOAM
2018-06-24 07:09:41 -07:00
ShowOTTrainerMonsRemaining:
2015-12-13 11:15:16 -08:00
call DrawEnemyHUDBorder
2018-01-23 14:39:09 -08:00
ld hl, wOTPartyMon1HP
ld de, wOTPartyCount
2015-12-13 11:15:16 -08:00
call StageBallTilesData
; ldpixel wPlaceBallsX, 9, 4
ld hl, wPlaceBallsX
2023-07-26 17:50:16 -07:00
ld a, 9 * TILE_WIDTH
2015-12-13 11:15:16 -08:00
ld [hli], a
2023-07-26 17:50:16 -07:00
ld [hl], 4 * TILE_WIDTH
ld a, -TILE_WIDTH
2015-12-13 11:15:16 -08:00
ld [wPlaceBallsDirection], a
ld hl, wShadowOAMSprite00 + PARTY_LENGTH * SPRITEOAMSTRUCT_LENGTH
2015-12-13 11:15:16 -08:00
jp LoadTrainerHudOAM
2018-06-24 07:09:41 -07:00
StageBallTilesData:
2015-12-13 11:15:16 -08:00
ld a, [de]
push af
2020-11-03 16:53:07 -08:00
ld de, wBattleHUDTiles
2015-12-13 11:15:16 -08:00
ld c, PARTY_LENGTH
ld a, $34 ; empty slot
.loop1
ld [de], a
inc de
dec c
jr nz, .loop1
pop af
2020-11-03 16:53:07 -08:00
ld de, wBattleHUDTiles
2015-12-13 11:15:16 -08:00
.loop2
push af
call .GetHUDTile
inc de
pop af
dec a
jr nz, .loop2
ret
2018-06-24 07:09:41 -07:00
.GetHUDTile:
2015-12-13 11:15:16 -08:00
ld a, [hli]
and a
jr nz, .got_hp
ld a, [hl]
and a
ld b, $33 ; fainted
jr z, .fainted
.got_hp
dec hl
dec hl
dec hl
2015-12-13 11:15:16 -08:00
ld a, [hl]
and a
ld b, $32 ; statused
jr nz, .load
dec b ; normal
jr .load
.fainted
dec hl
dec hl
dec hl
2015-12-13 11:15:16 -08:00
.load
ld a, b
ld [de], a
ld bc, PARTYMON_STRUCT_LENGTH + MON_HP - MON_STATUS
add hl, bc
ret
2018-06-24 07:09:41 -07:00
DrawPlayerHUDBorder:
2015-12-13 11:15:16 -08:00
ld hl, .tiles
ld de, wTrainerHUDTiles
2018-07-28 22:09:12 -07:00
ld bc, .tiles_end - .tiles
2015-12-13 11:15:16 -08:00
call CopyBytes
hlcoord 18, 10
ld de, -1 ; start on right
jr PlaceHUDBorderTiles
.tiles
db $73 ; right side
db $77 ; bottom right
db $6f ; bottom left
db $76 ; bottom side
2018-07-28 22:09:12 -07:00
.tiles_end
2015-12-13 11:15:16 -08:00
2018-06-24 07:09:41 -07:00
DrawPlayerPartyIconHUDBorder:
2015-12-13 11:15:16 -08:00
ld hl, .tiles
ld de, wTrainerHUDTiles
2018-07-28 22:09:12 -07:00
ld bc, .tiles_end - .tiles
2015-12-13 11:15:16 -08:00
call CopyBytes
hlcoord 18, 10
ld de, -1 ; start on right
jr PlaceHUDBorderTiles
.tiles
db $73 ; right side
db $5c ; bottom right
db $6f ; bottom left
db $76 ; bottom side
2018-07-28 22:09:12 -07:00
.tiles_end
2015-12-13 11:15:16 -08:00
2018-06-24 07:09:41 -07:00
DrawEnemyHUDBorder:
2015-12-13 11:15:16 -08:00
ld hl, .tiles
ld de, wTrainerHUDTiles
2018-07-28 22:09:12 -07:00
ld bc, .tiles_end - .tiles
2015-12-13 11:15:16 -08:00
call CopyBytes
hlcoord 1, 2
ld de, 1 ; start on left
call PlaceHUDBorderTiles
ld a, [wBattleMode]
dec a
ret nz
2018-01-23 14:39:09 -08:00
ld a, [wTempEnemyMonSpecies]
2015-12-13 11:15:16 -08:00
dec a
call CheckCaughtMon
ret z
hlcoord 1, 1
ld [hl], $5d
ret
.tiles
db $6d ; left side
db $74 ; bottom left
db $78 ; bottom right
db $76 ; bottom side
2018-07-28 22:09:12 -07:00
.tiles_end
2015-12-13 11:15:16 -08:00
2018-06-24 07:09:41 -07:00
PlaceHUDBorderTiles:
ld a, [wTrainerHUDTiles + 0]
2015-12-13 11:15:16 -08:00
ld [hl], a
ld bc, SCREEN_WIDTH
add hl, bc
ld a, [wTrainerHUDTiles + 1]
2015-12-13 11:15:16 -08:00
ld [hl], a
2018-07-28 22:09:12 -07:00
ld b, 8
2015-12-13 11:15:16 -08:00
.loop
add hl, de
ld a, [wTrainerHUDTiles + 3]
2015-12-13 11:15:16 -08:00
ld [hl], a
dec b
jr nz, .loop
add hl, de
ld a, [wTrainerHUDTiles + 2]
2015-12-13 11:15:16 -08:00
ld [hl], a
ret
2018-06-24 07:09:41 -07:00
LinkBattle_TrainerHuds:
2015-12-13 11:15:16 -08:00
call LoadBallIconGFX
2018-01-23 14:39:09 -08:00
ld hl, wPartyMon1HP
ld de, wPartyCount
2015-12-13 11:15:16 -08:00
call StageBallTilesData
ld hl, wPlaceBallsX
2023-07-26 17:50:16 -07:00
ld a, 10 * TILE_WIDTH
2015-12-13 11:15:16 -08:00
ld [hli], a
2023-07-26 17:50:16 -07:00
ld [hl], 8 * TILE_WIDTH
ld a, TILE_WIDTH
2015-12-13 11:15:16 -08:00
ld [wPlaceBallsDirection], a
ld hl, wShadowOAMSprite00
2015-12-13 11:15:16 -08:00
call LoadTrainerHudOAM
2018-01-23 14:39:09 -08:00
ld hl, wOTPartyMon1HP
ld de, wOTPartyCount
2015-12-13 11:15:16 -08:00
call StageBallTilesData
ld hl, wPlaceBallsX
2023-07-26 17:50:16 -07:00
ld a, 10 * TILE_WIDTH
2015-12-13 11:15:16 -08:00
ld [hli], a
2023-07-26 17:50:16 -07:00
ld [hl], 13 * TILE_WIDTH
ld hl, wShadowOAMSprite00 + PARTY_LENGTH * SPRITEOAMSTRUCT_LENGTH
2015-12-13 11:15:16 -08:00
jp LoadTrainerHudOAM
2018-06-24 07:09:41 -07:00
LoadTrainerHudOAM:
2020-11-03 16:53:07 -08:00
ld de, wBattleHUDTiles
2015-12-13 11:15:16 -08:00
ld c, PARTY_LENGTH
.loop
ld a, [wPlaceBallsY]
2018-01-10 10:47:57 -08:00
ld [hli], a ; y
2015-12-13 11:15:16 -08:00
ld a, [wPlaceBallsX]
2018-01-10 10:47:57 -08:00
ld [hli], a ; x
2015-12-13 11:15:16 -08:00
ld a, [de]
2018-01-10 10:47:57 -08:00
ld [hli], a ; tile id
ld a, PAL_BATTLE_OB_YELLOW
ld [hli], a ; attributes
2015-12-13 11:15:16 -08:00
ld a, [wPlaceBallsX]
ld b, a
ld a, [wPlaceBallsDirection]
add b
ld [wPlaceBallsX], a
inc de
dec c
jr nz, .loop
ret
2018-06-24 07:09:41 -07:00
LoadBallIconGFX:
2015-12-13 11:15:16 -08:00
ld de, .gfx
2017-12-28 04:32:33 -08:00
ld hl, vTiles0 tile $31
2015-12-13 11:15:16 -08:00
lb bc, BANK(LoadBallIconGFX), 4
call Get2bppViaHDMA
2015-12-13 11:15:16 -08:00
ret
2018-06-24 07:09:41 -07:00
.gfx
2015-12-13 11:15:16 -08:00
INCBIN "gfx/battle/balls.2bpp"
2018-06-24 07:09:41 -07:00
_ShowLinkBattleParticipants:
2015-12-13 11:15:16 -08:00
call ClearBGPalettes
call LoadFrame
2015-12-13 11:15:16 -08:00
hlcoord 2, 3
ld b, 9
ld c, 14
call Textbox1bpp
2015-12-13 11:15:16 -08:00
hlcoord 4, 5
2018-01-23 14:39:09 -08:00
ld de, wPlayerName
2015-12-13 11:15:16 -08:00
call PlaceString
hlcoord 4, 10
2018-01-23 14:39:09 -08:00
ld de, wOTPlayerName
2015-12-13 11:15:16 -08:00
call PlaceString
hlcoord 9, 8
ld a, "V"
2015-12-13 11:15:16 -08:00
ld [hli], a
ld [hl], "S"
2017-12-24 09:47:30 -08:00
farcall LinkBattle_TrainerHuds ; no need to farcall
ld b, CGB_DIPLOMA
call GetCGBLayout
2024-02-10 15:16:00 -08:00
call SetDefaultBGPAndOBP
2015-12-13 11:15:16 -08:00
ld a, $e4
ldh [rOBP0], a
2015-12-13 11:15:16 -08:00
ret