123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- DrawAllPokeballs:
- call LoadPartyPokeballGfx
- call SetupOwnPartyPokeballs
- ld a, [wIsInBattle]
- dec a
- ret z ; return if wild pokémon
- jp SetupEnemyPartyPokeballs
- DrawEnemyPokeballs:
- call LoadPartyPokeballGfx
- jp SetupEnemyPartyPokeballs
- LoadPartyPokeballGfx:
- ld de, PokeballTileGraphics
- ld hl, vSprites + $310
- lb bc, BANK(PokeballTileGraphics), (PokeballTileGraphicsEnd - PokeballTileGraphics) / $10
- jp CopyVideoData
- SetupOwnPartyPokeballs:
- call PlacePlayerHUDTiles
- ld hl, wPartyMon1
- ld de, wPartyCount
- call SetupPokeballs
- ld a, $60
- ld hl, wBaseCoordX
- ld [hli], a
- ld [hl], a
- ld a, 8
- ld [wHUDPokeballGfxOffsetX], a
- ld hl, wOAMBuffer
- jp WritePokeballOAMData
- SetupEnemyPartyPokeballs:
- call PlaceEnemyHUDTiles
- ld hl, wEnemyMons
- ld de, wEnemyPartyCount
- call SetupPokeballs
- ld hl, wBaseCoordX
- ld a, $48
- ld [hli], a
- ld [hl], $20
- ld a, -8
- ld [wHUDPokeballGfxOffsetX], a
- ld hl, wOAMBuffer + PARTY_LENGTH * 4
- jp WritePokeballOAMData
- SetupPokeballs:
- ld a, [de]
- push af
- ld de, wBuffer
- ld c, PARTY_LENGTH
- ld a, $34 ; empty pokeball
- .emptyloop
- ld [de], a
- inc de
- dec c
- jr nz, .emptyloop
- pop af
- ld de, wBuffer
- .monloop
- push af
- call PickPokeball
- inc de
- pop af
- dec a
- jr nz, .monloop
- ret
- PickPokeball:
- inc hl
- ld a, [hli]
- and a
- jr nz, .alive
- ld a, [hl]
- and a
- ld b, $33 ; crossed ball (fainted)
- jr z, .done_fainted
- .alive
- inc hl
- inc hl
- ld a, [hl] ; status
- and a
- ld b, $32 ; black ball (status)
- jr nz, .done
- dec b ; regular ball
- jr .done
- .done_fainted
- inc hl
- inc hl
- .done
- ld a, b
- ld [de], a
- ld bc, wPartyMon2 - wPartyMon1Status
- add hl, bc ; next mon struct
- ret
- WritePokeballOAMData:
- ld de, wBuffer
- ld c, PARTY_LENGTH
- .loop
- ld a, [wBaseCoordY]
- ld [hli], a
- ld a, [wBaseCoordX]
- ld [hli], a
- ld a, [de]
- ld [hli], a
- xor a
- ld [hli], a
- ld a, [wBaseCoordX]
- ld b, a
- ld a, [wHUDPokeballGfxOffsetX]
- add b
- ld [wBaseCoordX], a
- inc de
- dec c
- jr nz, .loop
- ret
- PlacePlayerHUDTiles:
- ld hl, PlayerBattleHUDGraphicsTiles
- ld de, wHUDGraphicsTiles
- ld bc, $3
- call CopyData
- coord hl, 18, 10
- ld de, -1
- jr PlaceHUDTiles
- PlayerBattleHUDGraphicsTiles:
- ; The tile numbers for specific parts of the battle display for the player's pokemon
- db $73 ; unused ($73 is hardcoded into the routine that uses these bytes)
- db $77 ; lower-right corner tile of the HUD
- db $6F ; lower-left triangle tile of the HUD
- PlaceEnemyHUDTiles:
- ld hl, EnemyBattleHUDGraphicsTiles
- ld de, wHUDGraphicsTiles
- ld bc, $3
- call CopyData
- coord hl, 1, 2
- ld de, $1
- jr PlaceHUDTiles
- EnemyBattleHUDGraphicsTiles:
- ; The tile numbers for specific parts of the battle display for the enemy
- db $73 ; unused ($73 is hardcoded in the routine that uses these bytes)
- db $74 ; lower-left corner tile of the HUD
- db $78 ; lower-right triangle tile of the HUD
- PlaceHUDTiles:
- ld [hl], $73
- ld bc, SCREEN_WIDTH
- add hl, bc
- ld a, [wHUDGraphicsTiles + 1] ; leftmost tile
- ld [hl], a
- ld a, 8
- .loop
- add hl, de
- ld [hl], $76
- dec a
- jr nz, .loop
- add hl, de
- ld a, [wHUDGraphicsTiles + 2] ; rightmost tile
- ld [hl], a
- ret
- SetupPlayerAndEnemyPokeballs:
- call LoadPartyPokeballGfx
- ld hl, wPartyMons
- ld de, wPartyCount
- call SetupPokeballs
- ld hl, wBaseCoordX
- ld a, $50
- ld [hli], a
- ld [hl], $40
- ld a, 8
- ld [wHUDPokeballGfxOffsetX], a
- ld hl, wOAMBuffer
- call WritePokeballOAMData
- ld hl, wEnemyMons
- ld de, wEnemyPartyCount
- call SetupPokeballs
- ld hl, wBaseCoordX
- ld a, $50
- ld [hli], a
- ld [hl], $68
- ld hl, wOAMBuffer + $18
- jp WritePokeballOAMData
- ; four tiles: pokeball, black pokeball (status ailment), crossed out pokeball (fainted) and pokeball slot (no mon)
- PokeballTileGraphics::
- INCBIN "gfx/pokeball.2bpp"
- PokeballTileGraphicsEnd:
|