mirror of
https://github.com/pret/pokegold-spaceworld.git
synced 2026-04-26 00:05:12 -05:00
Match pokegold's battle transition code more closely
This commit is contained in:
parent
2831f2e3fe
commit
43286f4373
|
|
@ -23,7 +23,7 @@
|
|||
const PAL_GREENMON ; 15
|
||||
const PAL_PINKMON ; 16
|
||||
const PAL_YELLOWMON ; 17
|
||||
const PAL_GREYMON ; 18
|
||||
const PAL_GRAYMON ; 18
|
||||
const PAL_SHINY_MEWMON ; 19
|
||||
const PAL_SHINY_BLUEMON ; 1a
|
||||
const PAL_SHINY_REDMON ; 1b
|
||||
|
|
@ -33,7 +33,7 @@
|
|||
const PAL_SHINY_GREENMON ; 1f
|
||||
const PAL_SHINY_PINKMON ; 20
|
||||
const PAL_SHINY_YELLOWMON ; 21
|
||||
const PAL_SHINY_GREYMON ; 22
|
||||
const PAL_SHINY_GRAYMON ; 22
|
||||
const PAL_GREEN_BAR ; 23
|
||||
const PAL_YELLOW_BAR ; 24
|
||||
const PAL_RED_BAR ; 25
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ SGB_RAM EQU -1
|
|||
const PREDEFPAL_RB_GREENMON
|
||||
const PREDEFPAL_RB_PINKMON
|
||||
const PREDEFPAL_RB_YELLOWMON
|
||||
const PREDEFPAL_CGB_BADGE ; RB_GREYMON
|
||||
const PREDEFPAL_CGB_BADGE ; RB_GRAYMON
|
||||
const PREDEFPAL_BETA_SHINY_MEWMON
|
||||
const PREDEFPAL_BETA_SHINY_BLUEMON
|
||||
const PREDEFPAL_BETA_SHINY_REDMON
|
||||
|
|
@ -84,7 +84,7 @@ SGB_RAM EQU -1
|
|||
const PREDEFPAL_BETA_SHINY_GREENMON
|
||||
const PREDEFPAL_BETA_SHINY_PINKMON
|
||||
const PREDEFPAL_BETA_SHINY_YELLOWMON
|
||||
const PREDEFPAL_PARTY_ICON ; BETA_SHINY_GREYMON
|
||||
const PREDEFPAL_PARTY_ICON ; BETA_SHINY_GRAYMON
|
||||
const PREDEFPAL_HP_GREEN
|
||||
const PREDEFPAL_HP_YELLOW
|
||||
const PREDEFPAL_HP_RED
|
||||
|
|
|
|||
|
|
@ -18,8 +18,8 @@ PokemonPalettes:
|
|||
db PAL_BROWNMON ; PIDGEY
|
||||
db PAL_BROWNMON ; PIDGEOTTO
|
||||
db PAL_BROWNMON ; PIDGEOT
|
||||
db PAL_GREYMON ; RATTATA
|
||||
db PAL_GREYMON ; RATICATE
|
||||
db PAL_GRAYMON ; RATTATA
|
||||
db PAL_GRAYMON ; RATICATE
|
||||
db PAL_BROWNMON ; SPEAROW
|
||||
db PAL_BROWNMON ; FEAROW
|
||||
db PAL_PURPLEMON ; EKANS
|
||||
|
|
@ -65,23 +65,23 @@ PokemonPalettes:
|
|||
db PAL_YELLOWMON ; ABRA
|
||||
db PAL_YELLOWMON ; KADABRA
|
||||
db PAL_YELLOWMON ; ALAKAZAM
|
||||
db PAL_GREYMON ; MACHOP
|
||||
db PAL_GREYMON ; MACHOKE
|
||||
db PAL_GREYMON ; MACHAMP
|
||||
db PAL_GRAYMON ; MACHOP
|
||||
db PAL_GRAYMON ; MACHOKE
|
||||
db PAL_GRAYMON ; MACHAMP
|
||||
db PAL_GREENMON ; BELLSPROUT
|
||||
db PAL_GREENMON ; WEEPINBELL
|
||||
db PAL_GREENMON ; VICTREEBEL
|
||||
db PAL_CYANMON ; TENTACOOL
|
||||
db PAL_CYANMON ; TENTACRUEL
|
||||
db PAL_GREYMON ; GEODUDE
|
||||
db PAL_GREYMON ; GRAVELER
|
||||
db PAL_GREYMON ; GOLEM
|
||||
db PAL_GRAYMON ; GEODUDE
|
||||
db PAL_GRAYMON ; GRAVELER
|
||||
db PAL_GRAYMON ; GOLEM
|
||||
db PAL_REDMON ; PONYTA
|
||||
db PAL_REDMON ; RAPIDASH
|
||||
db PAL_PINKMON ; SLOWPOKE
|
||||
db PAL_PINKMON ; SLOWBRO
|
||||
db PAL_GREYMON ; MAGNEMITE
|
||||
db PAL_GREYMON ; MAGNETON
|
||||
db PAL_GRAYMON ; MAGNEMITE
|
||||
db PAL_GRAYMON ; MAGNETON
|
||||
db PAL_BROWNMON ; FARFETCHD
|
||||
db PAL_BROWNMON ; DODUO
|
||||
db PAL_BROWNMON ; DODRIO
|
||||
|
|
@ -89,12 +89,12 @@ PokemonPalettes:
|
|||
db PAL_BLUEMON ; DEWGONG
|
||||
db PAL_PURPLEMON ; GRIMER
|
||||
db PAL_PURPLEMON ; MUK
|
||||
db PAL_GREYMON ; SHELLDER
|
||||
db PAL_GREYMON ; CLOYSTER
|
||||
db PAL_GRAYMON ; SHELLDER
|
||||
db PAL_GRAYMON ; CLOYSTER
|
||||
db PAL_PURPLEMON ; GASTLY
|
||||
db PAL_PURPLEMON ; HAUNTER
|
||||
db PAL_PURPLEMON ; GENGAR
|
||||
db PAL_GREYMON ; ONIX
|
||||
db PAL_GRAYMON ; ONIX
|
||||
db PAL_YELLOWMON ; DROWZEE
|
||||
db PAL_YELLOWMON ; HYPNO
|
||||
db PAL_REDMON ; KRABBY
|
||||
|
|
@ -103,15 +103,15 @@ PokemonPalettes:
|
|||
db PAL_YELLOWMON ; ELECTRODE
|
||||
db PAL_PINKMON ; EXEGGCUTE
|
||||
db PAL_GREENMON ; EXEGGUTOR
|
||||
db PAL_GREYMON ; CUBONE
|
||||
db PAL_GREYMON ; MAROWAK
|
||||
db PAL_GRAYMON ; CUBONE
|
||||
db PAL_GRAYMON ; MAROWAK
|
||||
db PAL_BROWNMON ; HITMONLEE
|
||||
db PAL_BROWNMON ; HITMONCHAN
|
||||
db PAL_PINKMON ; LICKITUNG
|
||||
db PAL_PURPLEMON ; KOFFING
|
||||
db PAL_PURPLEMON ; WEEZING
|
||||
db PAL_GREYMON ; RHYHORN
|
||||
db PAL_GREYMON ; RHYDON
|
||||
db PAL_GRAYMON ; RHYHORN
|
||||
db PAL_GRAYMON ; RHYDON
|
||||
db PAL_PINKMON ; CHANSEY
|
||||
db PAL_BLUEMON ; TANGELA
|
||||
db PAL_BROWNMON ; KANGASKHAN
|
||||
|
|
@ -120,33 +120,33 @@ PokemonPalettes:
|
|||
db PAL_REDMON ; GOLDEEN
|
||||
db PAL_REDMON ; SEAKING
|
||||
db PAL_REDMON ; STARYU
|
||||
db PAL_GREYMON ; STARMIE
|
||||
db PAL_GRAYMON ; STARMIE
|
||||
db PAL_PINKMON ; MRMIME
|
||||
db PAL_GREENMON ; SCYTHER
|
||||
db PAL_MEWMON ; JYNX
|
||||
db PAL_YELLOWMON ; ELECTABUZZ
|
||||
db PAL_REDMON ; MAGMAR
|
||||
db PAL_BROWNMON ; PINSIR
|
||||
db PAL_GREYMON ; TAUROS
|
||||
db PAL_GRAYMON ; TAUROS
|
||||
db PAL_REDMON ; MAGIKARP
|
||||
db PAL_BLUEMON ; GYARADOS
|
||||
db PAL_CYANMON ; LAPRAS
|
||||
db PAL_GREYMON ; DITTO
|
||||
db PAL_GREYMON ; EEVEE
|
||||
db PAL_GRAYMON ; DITTO
|
||||
db PAL_GRAYMON ; EEVEE
|
||||
db PAL_CYANMON ; VAPOREON
|
||||
db PAL_YELLOWMON ; JOLTEON
|
||||
db PAL_REDMON ; FLAREON
|
||||
db PAL_GREYMON ; PORYGON
|
||||
db PAL_GRAYMON ; PORYGON
|
||||
db PAL_BLUEMON ; OMANYTE
|
||||
db PAL_BLUEMON ; OMASTAR
|
||||
db PAL_BROWNMON ; KABUTO
|
||||
db PAL_BROWNMON ; KABUTOPS
|
||||
db PAL_GREYMON ; AERODACTYL
|
||||
db PAL_GRAYMON ; AERODACTYL
|
||||
db PAL_PINKMON ; SNORLAX
|
||||
db PAL_BLUEMON ; ARTICUNO
|
||||
db PAL_YELLOWMON ; ZAPDOS
|
||||
db PAL_REDMON ; MOLTRES
|
||||
db PAL_GREYMON ; DRATINI
|
||||
db PAL_GRAYMON ; DRATINI
|
||||
db PAL_BLUEMON ; DRAGONAIR
|
||||
db PAL_BROWNMON ; DRAGONITE
|
||||
db PAL_MEWMON ; MEWTWO
|
||||
|
|
@ -186,8 +186,8 @@ PokemonPalettes:
|
|||
db PAL_REDMON ; PARA
|
||||
db PAL_PURPLEMON ; KOKUMO
|
||||
db PAL_PURPLEMON ; TWOHEAD
|
||||
db PAL_GREYMON ; YOROIDORI
|
||||
db PAL_GREYMON ; ANIMON
|
||||
db PAL_GRAYMON ; YOROIDORI
|
||||
db PAL_GRAYMON ; ANIMON
|
||||
db PAL_BROWNMON ; HINAZU
|
||||
db PAL_YELLOWMON ; SUNNY
|
||||
db PAL_CYANMON ; PAON
|
||||
|
|
@ -205,9 +205,9 @@ PokemonPalettes:
|
|||
db PAL_REDMON ; MITSUBOSHI
|
||||
db PAL_REDMON ; PUCHICORN
|
||||
db PAL_YELLOWMON ; EIFIE
|
||||
db PAL_GREYMON ; BLACKY
|
||||
db PAL_GREYMON ; TURBAN
|
||||
db PAL_GREYMON ; BETBABY
|
||||
db PAL_GRAYMON ; BLACKY
|
||||
db PAL_GRAYMON ; TURBAN
|
||||
db PAL_GRAYMON ; BETBABY
|
||||
db PAL_BLUEMON ; TEPPOUO
|
||||
db PAL_REDMON ; OKUTANK
|
||||
db PAL_BROWNMON ; GONGU
|
||||
|
|
@ -238,9 +238,9 @@ PokemonPalettes:
|
|||
db PAL_REDMON ; HELGAA
|
||||
db PAL_BROWNMON ; WOLFMAN
|
||||
db PAL_BROWNMON ; WARWOLF
|
||||
db PAL_GREYMON ; PORYGON2
|
||||
db PAL_GRAYMON ; PORYGON2
|
||||
db PAL_PINKMON ; NAMEIL
|
||||
db PAL_GREYMON ; HAGANEIL
|
||||
db PAL_GRAYMON ; HAGANEIL
|
||||
db PAL_BLUEMON ; KINGDRA
|
||||
db PAL_YELLOWMON ; RAI
|
||||
db PAL_REDMON ; EN
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ SuperPalettes::
|
|||
RGB 28,28,28, 20,26,16, 09,20,11, 04,04,04 ; GREENMON
|
||||
RGB 28,28,28, 30,22,24, 28,15,21, 04,04,04 ; PINKMON
|
||||
RGB 28,28,28, 31,28,14, 26,20,00, 04,04,04 ; YELLOWMON
|
||||
RGB 28,28,28, 26,21,22, 15,15,18, 04,04,04 ; GREYMON
|
||||
RGB 28,28,28, 26,21,22, 15,15,18, 04,04,04 ; GRAYMON
|
||||
RGB 28,28,28, 23,19,13, 14,12,17, 04,04,04 ; SHINY_MEWMON
|
||||
RGB 28,28,28, 16,18,21, 10,12,18, 04,04,04 ; SHINY_BLUEMON
|
||||
RGB 28,28,28, 22,15,16, 17,02,05, 04,04,04 ; SHINY_REDMON
|
||||
|
|
@ -33,7 +33,7 @@ SuperPalettes::
|
|||
RGB 28,28,28, 23,21,16, 12,12,10, 04,04,04 ; SHINY_GREENMON
|
||||
RGB 28,28,28, 21,25,29, 30,22,24, 04,04,04 ; SHINY_PINKMON
|
||||
RGB 28,28,28, 26,23,16, 29,14,09, 04,04,04 ; SHINY_YELLOWMON
|
||||
RGB 28,28,28, 18,18,18, 10,10,10, 04,04,04 ; SHINY_GREYMON
|
||||
RGB 28,28,28, 18,18,18, 10,10,10, 04,04,04 ; SHINY_GRAYMON
|
||||
RGB 28,28,28, 30,26,15, 09,20,11, 04,04,04 ; GREEN_BAR
|
||||
RGB 28,28,28, 30,26,15, 26,20,00, 04,04,04 ; YELLOW_BAR
|
||||
RGB 28,28,28, 30,26,15, 26,10,06, 04,04,04 ; RED_BAR
|
||||
|
|
|
|||
|
|
@ -1,35 +1,35 @@
|
|||
INCLUDE "constants.asm"
|
||||
|
||||
; BattleTransitionJumptable.Jumptable indexes
|
||||
BATTLETRANSITION_WAVY EQU $01
|
||||
BATTLETRANSITION_WIPE EQU $08
|
||||
BATTLETRANSITION_SCANLINE EQU $0F
|
||||
BATTLETRANSITION_SPIN EQU $16
|
||||
BATTLETRANSITION_SCATTER EQU $1D
|
||||
BATTLETRANSITION_WAVY EQU $01
|
||||
BATTLETRANSITION_WIPE_UNUSED EQU $08
|
||||
BATTLETRANSITION_SCANLINE EQU $0f
|
||||
BATTLETRANSITION_SPIN EQU $16
|
||||
BATTLETRANSITION_SCATTER EQU $1d
|
||||
BATTLETRANSITION_FINISH EQU $24
|
||||
BATTLETRANSITION_END EQU $80
|
||||
|
||||
BATTLETRANSITION_FINISH EQU $24
|
||||
BATTLETRANSITION_END EQU $80
|
||||
BATTLETRANSITION_BLACK EQU $ff
|
||||
|
||||
BATTLETRANSITION_BLACK EQU $ff
|
||||
|
||||
SECTION "engine/battle/battle_transitions.asm", ROMX
|
||||
|
||||
DoBattleTransition: ; 23:44be
|
||||
DoBattleTransition:
|
||||
ld a, %11100011
|
||||
ldh [rLCDC], a
|
||||
call .InitGFX
|
||||
|
||||
.loop ; 44c5
|
||||
.loop
|
||||
ld a, [wJumptableIndex]
|
||||
bit 7, a ; BATTLETRANSITION_END?
|
||||
bit 7, a ; BATTLETRANSITION_END?
|
||||
jr nz, .done
|
||||
call BattleTransitionJumptable
|
||||
call DelayFrame
|
||||
jr .loop
|
||||
|
||||
.done
|
||||
ld a, $FF
|
||||
ldh [rBGP], a ; cut to black
|
||||
ld a, %11111111
|
||||
ldh [rBGP], a ; cut to black
|
||||
xor a
|
||||
ldh [hLCDCPointer], a
|
||||
ldh [hLYOverrideStart], a
|
||||
|
|
@ -78,32 +78,32 @@ ConvertTrainerBattlePokeballTilesTo2bpp:
|
|||
ld de, .BlackTile
|
||||
ldh a, [hOverworldFlashlightEffect]
|
||||
and a
|
||||
jr z, .skip
|
||||
ld de, .GreyTile
|
||||
.skip
|
||||
jr z, .got_tile
|
||||
ld de, .GrayTile
|
||||
.got_tile
|
||||
ld hl, vChars0 tile BATTLETRANSITION_BLACK
|
||||
ld b, BANK(@)
|
||||
ld c, $01
|
||||
ld c, 1
|
||||
call Request2bpp
|
||||
ret
|
||||
|
||||
.BlackTile:
|
||||
rept 16
|
||||
db $ff
|
||||
endr
|
||||
rept 8
|
||||
dw `33333333
|
||||
endr
|
||||
|
||||
.GreyTile:
|
||||
rept 8
|
||||
db $00, $ff
|
||||
endr
|
||||
.GrayTile:
|
||||
rept 8
|
||||
dw `22222222
|
||||
endr
|
||||
|
||||
BattleTransitionJumptable:
|
||||
jumptable .Jumptable, wJumptableIndex
|
||||
|
||||
.Jumptable ; 456c
|
||||
.Jumptable:
|
||||
dw StartTrainerBattle_DetermineWhichAnimation ; 00
|
||||
|
||||
; Wavy outro
|
||||
; BATTLETRANSITION_WAVY
|
||||
dw StartTrainerBattle_LoadPokeBallGraphics ; 01
|
||||
dw StartTrainerBattle_SetUpBGMap ; 02
|
||||
dw StartTrainerBattle_Flash ; 03
|
||||
|
|
@ -112,7 +112,7 @@ BattleTransitionJumptable:
|
|||
dw StartTrainerBattle_SetUpForWavyOutro ; 06
|
||||
dw StartTrainerBattle_SineWave ; 07
|
||||
|
||||
; Wipe outro - unused
|
||||
; BATTLETRANSITION_WIPE_UNUSED
|
||||
dw StartTrainerBattle_LoadPokeBallGraphics ; 08
|
||||
dw StartTrainerBattle_SetUpBGMap ; 09
|
||||
dw StartTrainerBattle_Flash ; 0a
|
||||
|
|
@ -121,7 +121,7 @@ BattleTransitionJumptable:
|
|||
dw StartTrainerBattle_SetUpForWipeOutro ; 0d
|
||||
dw StartTrainerBattle_WipeOutro ; 0e
|
||||
|
||||
; Scanline outro
|
||||
; BATTLETRANSITION_SCANLINE
|
||||
dw StartTrainerBattle_LoadPokeBallGraphics ; 0f
|
||||
dw StartTrainerBattle_SetUpBGMap ; 10
|
||||
dw StartTrainerBattle_Flash ; 11
|
||||
|
|
@ -130,7 +130,7 @@ BattleTransitionJumptable:
|
|||
dw StartTrainerBattle_SetUpForScanlineOutro ; 14
|
||||
dw StartTrainerBattle_Scanlines ; 15
|
||||
|
||||
; Spin clockwise
|
||||
; BATTLETRANSITION_SPIN
|
||||
dw StartTrainerBattle_LoadPokeBallGraphics ; 16
|
||||
dw StartTrainerBattle_SetUpBGMap ; 17
|
||||
dw StartTrainerBattle_Flash ; 18
|
||||
|
|
@ -139,7 +139,7 @@ BattleTransitionJumptable:
|
|||
dw StartTrainerBattle_SetUpForSpinOutro ; 1b
|
||||
dw StartTrainerBattle_SpinToBlack ; 1c
|
||||
|
||||
; Random scatter
|
||||
; BATTLETRANSITION_SCATTER
|
||||
dw StartTrainerBattle_LoadPokeBallGraphics ; 1d
|
||||
dw StartTrainerBattle_SetUpBGMap ; 1e
|
||||
dw StartTrainerBattle_Flash ; 1f
|
||||
|
|
@ -148,11 +148,13 @@ BattleTransitionJumptable:
|
|||
dw StartTrainerBattle_SetUpForRandomScatterOutro ; 22
|
||||
dw StartTrainerBattle_SpeckleToBlack ; 23
|
||||
|
||||
; BATTLETRANSITION_FINISH
|
||||
dw StartTrainerBattle_Finish ; 24
|
||||
|
||||
StartTrainerBattle_DetermineWhichAnimation:
|
||||
; Picks an arbitrary animation depending on [hVBlankCounter] % 4.
|
||||
ldh a, [hVBlankCounter]
|
||||
and a, %00000011
|
||||
and a, %11
|
||||
ld e, a
|
||||
ld d, 0
|
||||
ld hl, .StartingPoints
|
||||
|
|
@ -161,7 +163,7 @@ StartTrainerBattle_DetermineWhichAnimation:
|
|||
ld [wJumptableIndex], a
|
||||
ret
|
||||
|
||||
.StartingPoints ;45c6
|
||||
.StartingPoints:
|
||||
db BATTLETRANSITION_WAVY
|
||||
db BATTLETRANSITION_SCATTER
|
||||
db BATTLETRANSITION_SCANLINE
|
||||
|
|
@ -181,7 +183,7 @@ StartTrainerBattle_NextScene:
|
|||
StartTrainerBattle_SetUpBGMap:
|
||||
call StartTrainerBattle_NextScene
|
||||
xor a
|
||||
ld [wcb5f], a
|
||||
ld [wBattleTransitionCounter], a
|
||||
ldh [hBGMapMode], a
|
||||
ret
|
||||
|
||||
|
|
@ -192,12 +194,12 @@ StartTrainerBattle_Flash:
|
|||
ret
|
||||
|
||||
.DoFlashAnimation:
|
||||
ld hl, wcb5f
|
||||
ld hl, wBattleTransitionCounter
|
||||
ld a, [hl]
|
||||
inc [hl]
|
||||
srl a
|
||||
ld e, a
|
||||
ld d, $00
|
||||
ld d, 0
|
||||
ld hl, .pals
|
||||
add hl, de
|
||||
ld a, [hl]
|
||||
|
|
@ -206,13 +208,27 @@ StartTrainerBattle_Flash:
|
|||
ldh [rBGP], a
|
||||
and a
|
||||
ret
|
||||
|
||||
.done
|
||||
xor a
|
||||
ld [wcb5f], a
|
||||
ld [wBattleTransitionCounter], a
|
||||
scf
|
||||
ret
|
||||
.pals
|
||||
db $f9, $fe, $ff, $fe, $f9, $e4, $90, $40, $00, $40, $90, $e4, $01
|
||||
|
||||
.pals:
|
||||
dc 3, 3, 2, 1
|
||||
dc 3, 3, 3, 2
|
||||
dc 3, 3, 3, 3
|
||||
dc 3, 3, 3, 2
|
||||
dc 3, 3, 2, 1
|
||||
dc 3, 2, 1, 0
|
||||
dc 2, 1, 0, 0
|
||||
dc 1, 0, 0, 0
|
||||
dc 0, 0, 0, 0
|
||||
dc 1, 0, 0, 0
|
||||
dc 2, 1, 0, 0
|
||||
dc 3, 2, 1, 0
|
||||
dc 0, 0, 0, 1
|
||||
|
||||
StartTrainerBattle_SetUpForWavyOutro:
|
||||
call StartTrainerBattle_NextScene
|
||||
|
|
@ -223,31 +239,34 @@ StartTrainerBattle_SetUpForWavyOutro:
|
|||
ld a, SCREEN_HEIGHT_PX
|
||||
ldh [hLYOverrideEnd], a
|
||||
xor a
|
||||
ld [wcb5f], a
|
||||
ld [wcb60], a
|
||||
ld [wBattleTransitionCounter], a
|
||||
ld [wBattleTransitionSineWaveOffset], a
|
||||
ret
|
||||
|
||||
StartTrainerBattle_SineWave:
|
||||
ld a, [wcb5f]
|
||||
ld a, [wBattleTransitionCounter]
|
||||
cp $60
|
||||
jr nc, .end
|
||||
call .DoSineWave
|
||||
ret
|
||||
|
||||
.end
|
||||
ld a, BATTLETRANSITION_FINISH
|
||||
ld [wJumptableIndex], a
|
||||
ret
|
||||
|
||||
.DoSineWave:
|
||||
ld hl, wcb60
|
||||
ld hl, wBattleTransitionSineWaveOffset
|
||||
ld a, [hl]
|
||||
inc [hl]
|
||||
ld hl, wcb5f
|
||||
ld hl, wBattleTransitionCounter
|
||||
ld d, [hl]
|
||||
add [hl]
|
||||
ld [hl], a
|
||||
ld a, SCREEN_HEIGHT_PX
|
||||
ld a, wLYOverridesEnd - wLYOverrides
|
||||
ld bc, wLYOverrides
|
||||
ld e, 0
|
||||
|
||||
.loop
|
||||
push af
|
||||
push de
|
||||
|
|
@ -257,7 +276,7 @@ StartTrainerBattle_SineWave:
|
|||
inc bc
|
||||
pop de
|
||||
ld a, e
|
||||
add $02
|
||||
add 2
|
||||
ld e, a
|
||||
pop af
|
||||
dec a
|
||||
|
|
@ -273,33 +292,34 @@ StartTrainerBattle_SetUpForWipeOutro:
|
|||
ld a, SCREEN_HEIGHT_PX
|
||||
ldh [hLYOverrideEnd], a
|
||||
xor a
|
||||
ld [wcb5f], a
|
||||
ld [wBattleTransitionCounter], a
|
||||
ld a, SCREEN_HEIGHT_PX + 1
|
||||
ldh [hSCY], a
|
||||
ret
|
||||
|
||||
StartTrainerBattle_WipeOutro:
|
||||
ld hl, wcb5f
|
||||
ld hl, wBattleTransitionCounter
|
||||
ld a, [hl]
|
||||
cp $48
|
||||
jr nc, .end
|
||||
inc [hl]
|
||||
srl a
|
||||
ld e, a
|
||||
ld d, $00
|
||||
ld d, 0
|
||||
ld hl, wLYOverrides
|
||||
add hl, de
|
||||
call Func4692
|
||||
call .DoWipeOutro
|
||||
ret
|
||||
|
||||
.end
|
||||
ld a, BATTLETRANSITION_FINISH
|
||||
ld [wJumptableIndex], a
|
||||
ret
|
||||
|
||||
Func4692:
|
||||
ld c, $04
|
||||
ld de, $0024
|
||||
ld b, $91
|
||||
.DoWipeOutro:
|
||||
ld c, 4
|
||||
ld de, SCREEN_HEIGHT_PX / 4
|
||||
ld b, SCREEN_HEIGHT_PX + 1
|
||||
.loop
|
||||
ld a, b
|
||||
sub l
|
||||
|
|
@ -307,8 +327,8 @@ Func4692:
|
|||
add hl, de
|
||||
dec c
|
||||
jr nz, .loop
|
||||
ld hl, $c691
|
||||
ld [hl], $91
|
||||
ld hl, wLYOverridesEnd + 1
|
||||
ld [hl], SCREEN_HEIGHT_PX + 1
|
||||
ret
|
||||
|
||||
StartTrainerBattle_SetUpForScanlineOutro:
|
||||
|
|
@ -316,23 +336,24 @@ StartTrainerBattle_SetUpForScanlineOutro:
|
|||
ld a, LOW(rSCX)
|
||||
ldh [hLCDCPointer], a
|
||||
xor a
|
||||
ld [wcb5f], a
|
||||
ld [wBattleTransitionCounter], a
|
||||
call WipeLYOverrides
|
||||
ret
|
||||
|
||||
StartTrainerBattle_Scanlines:
|
||||
ld hl, wcb5f
|
||||
ld hl, wBattleTransitionCounter
|
||||
ld a, [hl]
|
||||
cp $50
|
||||
jr nc, .finished
|
||||
jr nc, .end
|
||||
inc [hl]
|
||||
ld e, a
|
||||
xor -1 ; switch scroll direction
|
||||
xor $ff ; switch scroll direction
|
||||
inc a
|
||||
ld d, a
|
||||
call .SplitEvenOdd
|
||||
ret
|
||||
.finished
|
||||
|
||||
.end
|
||||
ld a, BATTLETRANSITION_FINISH
|
||||
ld [wJumptableIndex], a
|
||||
ret
|
||||
|
|
@ -352,33 +373,34 @@ StartTrainerBattle_Scanlines:
|
|||
StartTrainerBattle_SetUpForSpinOutro:
|
||||
call StartTrainerBattle_NextScene
|
||||
xor a
|
||||
ld [wcb5f], a
|
||||
ld [wBattleTransitionCounter], a
|
||||
ret
|
||||
|
||||
StartTrainerBattle_SpinToBlack:
|
||||
xor a
|
||||
ldh [hBGMapMode], a
|
||||
ld a, [wcb5f]
|
||||
ld a, [wBattleTransitionCounter]
|
||||
ld e, a
|
||||
ld d, 0
|
||||
ld hl, .data4723
|
||||
ld hl, .spin_quadrants
|
||||
rept 5
|
||||
add hl, de
|
||||
endr
|
||||
ld a, [hli]
|
||||
cp -1
|
||||
jr z, .end
|
||||
ld [wcb60], a
|
||||
ld [wBattleTransitionSpinQuadrant], a
|
||||
call .load
|
||||
ld a, 1
|
||||
ldh [hBGMapMode], a
|
||||
call DelayFrame
|
||||
call DelayFrame
|
||||
ld hl, wcb5f
|
||||
ld hl, wBattleTransitionCounter
|
||||
inc [hl]
|
||||
ret
|
||||
|
||||
.end
|
||||
ld a, $01
|
||||
ld a, 1
|
||||
ldh [hBGMapMode], a
|
||||
call DelayFrame
|
||||
call DelayFrame
|
||||
|
|
@ -389,30 +411,46 @@ endr
|
|||
ld [wJumptableIndex], a
|
||||
ret
|
||||
|
||||
.data4723
|
||||
db $00, $cb, $47, $19, $c3
|
||||
db $00, $d1, $47, $dc, $c2
|
||||
db $00, $db, $47, $a1, $c2
|
||||
db $00, $ed, $47, $a5, $c2
|
||||
db $00, $fb, $47, $a9, $c2
|
||||
db $01, $fb, $47, $aa, $c2
|
||||
db $01, $ed, $47, $ae, $c2
|
||||
db $01, $db, $47, $b2, $c2
|
||||
db $01, $d1, $47, $ef, $c2
|
||||
db $01, $cb, $47, $2a, $c3
|
||||
db $03, $cb, $47, $8e, $c3
|
||||
db $03, $d1, $47, $cb, $c3
|
||||
db $03, $db, $47, $06, $c4
|
||||
db $03, $ed, $47, $02, $c4
|
||||
db $03, $fb, $47, $fe, $c3
|
||||
db $02, $fb, $47, $fd, $c3
|
||||
db $02, $ed, $47, $f9, $c3
|
||||
db $02, $db, $47, $f5, $c3
|
||||
db $02, $d1, $47, $b8, $c3
|
||||
db $02, $cb, $47, $7d, $c3
|
||||
; quadrants
|
||||
const_def
|
||||
const UPPER_LEFT
|
||||
const UPPER_RIGHT
|
||||
const LOWER_LEFT
|
||||
const LOWER_RIGHT
|
||||
|
||||
; quadrant bits
|
||||
RIGHT_QUADRANT_F EQU 0 ; bit set in UPPER_RIGHT and LOWER_RIGHT
|
||||
LOWER_QUADRANT_F EQU 1 ; bit set in LOWER_LEFT and LOWER_RIGHT
|
||||
|
||||
.spin_quadrants:
|
||||
spin_quadrant: MACRO
|
||||
db \1
|
||||
dw \2
|
||||
dwcoord \3, \4
|
||||
ENDM
|
||||
spin_quadrant UPPER_LEFT, .wedge1, 1, 6
|
||||
spin_quadrant UPPER_LEFT, .wedge2, 0, 3
|
||||
spin_quadrant UPPER_LEFT, .wedge3, 1, 0
|
||||
spin_quadrant UPPER_LEFT, .wedge4, 5, 0
|
||||
spin_quadrant UPPER_LEFT, .wedge5, 9, 0
|
||||
spin_quadrant UPPER_RIGHT, .wedge5, 10, 0
|
||||
spin_quadrant UPPER_RIGHT, .wedge4, 14, 0
|
||||
spin_quadrant UPPER_RIGHT, .wedge3, 18, 0
|
||||
spin_quadrant UPPER_RIGHT, .wedge2, 19, 3
|
||||
spin_quadrant UPPER_RIGHT, .wedge1, 18, 6
|
||||
spin_quadrant LOWER_RIGHT, .wedge1, 18, 11
|
||||
spin_quadrant LOWER_RIGHT, .wedge2, 19, 14
|
||||
spin_quadrant LOWER_RIGHT, .wedge3, 18, 17
|
||||
spin_quadrant LOWER_RIGHT, .wedge4, 14, 17
|
||||
spin_quadrant LOWER_RIGHT, .wedge5, 10, 17
|
||||
spin_quadrant LOWER_LEFT, .wedge5, 9, 17
|
||||
spin_quadrant LOWER_LEFT, .wedge4, 5, 17
|
||||
spin_quadrant LOWER_LEFT, .wedge3, 1, 17
|
||||
spin_quadrant LOWER_LEFT, .wedge2, 0, 14
|
||||
spin_quadrant LOWER_LEFT, .wedge1, 1, 11
|
||||
db -1
|
||||
|
||||
.load
|
||||
.load:
|
||||
ld a, [hli]
|
||||
ld e, a
|
||||
ld a, [hli]
|
||||
|
|
@ -426,9 +464,9 @@ endr
|
|||
ld c, a
|
||||
inc de
|
||||
.loop1
|
||||
ld [hl], $ff
|
||||
ld a, [wcb60]
|
||||
bit 0, a
|
||||
ld [hl], BATTLETRANSITION_BLACK
|
||||
ld a, [wBattleTransitionSpinQuadrant]
|
||||
bit RIGHT_QUADRANT_F, a
|
||||
jr z, .leftside
|
||||
inc hl
|
||||
jr .okay1
|
||||
|
|
@ -438,8 +476,8 @@ endr
|
|||
dec c
|
||||
jr nz, .loop1
|
||||
pop hl
|
||||
ld a, [wcb60]
|
||||
bit 1, a
|
||||
ld a, [wBattleTransitionSpinQuadrant]
|
||||
bit LOWER_QUADRANT_F, a
|
||||
ld bc, SCREEN_WIDTH
|
||||
jr z, .upper
|
||||
ld bc, -SCREEN_WIDTH
|
||||
|
|
@ -453,8 +491,8 @@ endr
|
|||
jr z, .loop
|
||||
ld c, a
|
||||
.loop2
|
||||
ld a, [wcb60]
|
||||
bit 0, a
|
||||
ld a, [wBattleTransitionSpinQuadrant]
|
||||
bit RIGHT_QUADRANT_F, a
|
||||
jr z, .leftside2
|
||||
dec hl
|
||||
jr .okay2
|
||||
|
|
@ -465,22 +503,22 @@ endr
|
|||
jr nz, .loop2
|
||||
jr .loop
|
||||
|
||||
.wedge1 db 2, 3, 5, 4, 9, -1
|
||||
.wedge2 db 1, 1, 2, 2, 4, 2, 4, 2, 3, -1
|
||||
.wedge3 db 2, 1, 3, 1, 4, 1, 4, 1, 4, 1, 3, 1, 2, 1, 1, 1, 1, -1
|
||||
.wedge4 db 4, 1, 4, 0, 3, 1, 3, 0, 2, 1, 2, 0, 1, -1
|
||||
.wedge5 db 4, 0, 3, 0, 3, 0, 2, 0, 2, 0, 1, 0, 1, 0, 1, -1
|
||||
.wedge1: db 2, 3, 5, 4, 9, -1
|
||||
.wedge2: db 1, 1, 2, 2, 4, 2, 4, 2, 3, -1
|
||||
.wedge3: db 2, 1, 3, 1, 4, 1, 4, 1, 4, 1, 3, 1, 2, 1, 1, 1, 1, -1
|
||||
.wedge4: db 4, 1, 4, 0, 3, 1, 3, 0, 2, 1, 2, 0, 1, -1
|
||||
.wedge5: db 4, 0, 3, 0, 3, 0, 2, 0, 2, 0, 1, 0, 1, 0, 1, -1
|
||||
|
||||
StartTrainerBattle_SetUpForRandomScatterOutro:
|
||||
call StartTrainerBattle_NextScene
|
||||
ld a, $10
|
||||
ld [wcb5f], a
|
||||
ld [wBattleTransitionCounter], a
|
||||
ld a, 1
|
||||
ldh [hBGMapMode], a
|
||||
ret
|
||||
|
||||
StartTrainerBattle_SpeckleToBlack:
|
||||
ld hl, wcb5f
|
||||
ld hl, wBattleTransitionCounter
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr z, .done
|
||||
|
|
@ -509,7 +547,7 @@ StartTrainerBattle_SpeckleToBlack:
|
|||
.BlackOutRandomTile:
|
||||
.y_loop
|
||||
call Random
|
||||
cp $12
|
||||
cp SCREEN_HEIGHT
|
||||
jr nc, .y_loop
|
||||
ld b, a
|
||||
|
||||
|
|
@ -518,6 +556,7 @@ StartTrainerBattle_SpeckleToBlack:
|
|||
cp SCREEN_WIDTH
|
||||
jr nc, .x_loop
|
||||
ld c, a
|
||||
|
||||
hlcoord 0, -1
|
||||
ld de, SCREEN_WIDTH
|
||||
inc b
|
||||
|
|
@ -527,15 +566,19 @@ StartTrainerBattle_SpeckleToBlack:
|
|||
dec b
|
||||
jr nz, .row_loop
|
||||
add hl, bc
|
||||
|
||||
; If the tile has already been blacked out,
|
||||
; sample a new tile
|
||||
ld a, [hl]
|
||||
cp -1
|
||||
cp BATTLETRANSITION_BLACK
|
||||
jr z, .y_loop
|
||||
ld [hl], $ff
|
||||
ld [hl], BATTLETRANSITION_BLACK
|
||||
ret
|
||||
|
||||
StartTrainerBattle_LoadPokeBallGraphics:
|
||||
xor a
|
||||
ldh [hBGMapMode], a
|
||||
|
||||
hlcoord 2, 1
|
||||
ld de, .PokeBallTransition
|
||||
ld b, SCREEN_WIDTH - 4
|
||||
|
|
@ -547,14 +590,16 @@ StartTrainerBattle_LoadPokeBallGraphics:
|
|||
ld a, [de]
|
||||
inc de
|
||||
.col_loop
|
||||
; Loading is done bit by bit
|
||||
and a
|
||||
jr z, .done
|
||||
sla a
|
||||
jr nc, .no_load
|
||||
ld [hl], $ff
|
||||
ld [hl], BATTLETRANSITION_BLACK
|
||||
.no_load
|
||||
inc hl
|
||||
jr .col_loop
|
||||
|
||||
.done
|
||||
pop hl
|
||||
push bc
|
||||
|
|
@ -563,6 +608,7 @@ StartTrainerBattle_LoadPokeBallGraphics:
|
|||
pop bc
|
||||
dec c
|
||||
jr nz, .row_loop
|
||||
|
||||
pop hl
|
||||
push bc
|
||||
ld bc, SCREEN_WIDTH
|
||||
|
|
@ -570,12 +616,14 @@ StartTrainerBattle_LoadPokeBallGraphics:
|
|||
pop bc
|
||||
dec b
|
||||
jr nz, .tile_loop
|
||||
ld a, $01
|
||||
|
||||
ld a, 1
|
||||
ldh [hBGMapMode], a
|
||||
call DelayFrame
|
||||
call DelayFrame
|
||||
call StartTrainerBattle_NextScene
|
||||
ret
|
||||
|
||||
.PokeBallTransition:
|
||||
; 16x16 overlay of a Poke Ball
|
||||
pusho
|
||||
|
|
@ -602,44 +650,11 @@ WipeLYOverrides:
|
|||
ld hl, wLYOverrides
|
||||
xor a
|
||||
ld c, SCREEN_HEIGHT_PX
|
||||
.wipe
|
||||
.loop
|
||||
ld [hli], a
|
||||
dec c
|
||||
jr nz, .wipe
|
||||
jr nz, .loop
|
||||
ret
|
||||
|
||||
StartTrainerBattle_DrawSineWave:
|
||||
calc_sine_wave .sine_table
|
||||
.sine_table
|
||||
dw $0000
|
||||
dw $0019
|
||||
dw $0032
|
||||
dw $004A
|
||||
dw $0062
|
||||
dw $0079
|
||||
dw $008E
|
||||
dw $00A2
|
||||
dw $00B5
|
||||
dw $00C6
|
||||
dw $00D5
|
||||
dw $00E2
|
||||
dw $00ED
|
||||
dw $00F5
|
||||
dw $00FB
|
||||
dw $00FF
|
||||
dw $0100
|
||||
dw $00FF
|
||||
dw $00FB
|
||||
dw $00F5
|
||||
dw $00ED
|
||||
dw $00E2
|
||||
dw $00D5
|
||||
dw $00C6
|
||||
dw $00B5
|
||||
dw $00A2
|
||||
dw $008E
|
||||
dw $0079
|
||||
dw $0062
|
||||
dw $004A
|
||||
dw $0032
|
||||
dw $0019
|
||||
calc_sine_wave
|
||||
|
|
|
|||
|
|
@ -123,7 +123,7 @@ sine_table: MACRO
|
|||
; \1 samples of sin(x) from x=0 to x<32768 (pi radians)
|
||||
x = 0
|
||||
rept \1
|
||||
dw HIGH(sin(x) + LOW(sin(x))) ; round up
|
||||
dw (sin(x) + LOW(sin(x))) >> 8 ; round up
|
||||
x = x + DIV(32768, \1) ; a circle has 65536 "degrees"
|
||||
endr
|
||||
ENDM
|
||||
|
|
|
|||
19
ram/wram.asm
19
ram/wram.asm
|
|
@ -154,10 +154,11 @@ wOverworldMapBlocksEnd::
|
|||
|
||||
NEXTU
|
||||
|
||||
wLYOverrides::
|
||||
ds SCREEN_HEIGHT_PX
|
||||
ds $10
|
||||
wLYOverrides2::
|
||||
wLYOverrides:: ds SCREEN_HEIGHT_PX
|
||||
wLYOverridesEnd:: db
|
||||
ds 15
|
||||
wLYOverrides2:: ds SCREEN_HEIGHT_PX
|
||||
wLYOverrides2End::
|
||||
|
||||
NEXTU
|
||||
; Battle-related
|
||||
|
|
@ -329,13 +330,13 @@ wNamedObjectTypeBuffer:: db
|
|||
SECTION "CB5E", WRAM0[$CB5E]
|
||||
wJumptableIndex:: db
|
||||
|
||||
UNION
|
||||
wcb5f:: db
|
||||
NEXTU
|
||||
wFlyDestination:: db
|
||||
ENDU
|
||||
wFlyDestination::
|
||||
wBattleTransitionCounter:: db
|
||||
|
||||
wBattleTransitionSineWaveOffset::
|
||||
wBattleTransitionSpinQuadrant::
|
||||
wcb60:: ds 1
|
||||
|
||||
wcb61:: ds 1
|
||||
|
||||
wVBCopySize:: ds 1
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user