mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2024-11-16 11:27:33 -08:00
1017 lines
19 KiB
NASM
1017 lines
19 KiB
NASM
; Replaces the functionality of sgb.asm to work with CGB hardware.
|
|
|
|
LoadCGBLayout:
|
|
ld a, b
|
|
cp CGB_DEFAULT
|
|
jr nz, .not_default
|
|
ld a, [wDefaultCGBLayout]
|
|
.not_default
|
|
cp CGB_PARTY_MENU_HP_BARS
|
|
jp z, CGB_ApplyPartyMenuHPPals
|
|
call ResetBGPals
|
|
ld l, a
|
|
ld h, 0
|
|
add hl, hl
|
|
ld de, CGBLayoutJumptable
|
|
add hl, de
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
ld de, .done
|
|
push de
|
|
jp hl
|
|
.done:
|
|
ret
|
|
|
|
CGBLayoutJumptable:
|
|
; entries correspond to CGB_* constants (see constants/cgb_pal_constants.asm)
|
|
table_width 2, CGBLayoutJumptable
|
|
dw _CGB_BattleGrayscale
|
|
dw _CGB_BattleColors
|
|
dw _CGB_PokegearPals
|
|
dw _CGB_StatsScreenHPPals
|
|
dw _CGB_Pokedex
|
|
dw _CGB_SlotMachine
|
|
dw _CGB_BetaTitleScreen
|
|
dw _CGB_GSIntro
|
|
dw _CGB_Diploma
|
|
dw _CGB_MapPals
|
|
dw _CGB_PartyMenu
|
|
dw _CGB_Evolution
|
|
dw _CGB_GSTitleScreen
|
|
dw _CGB_LevelSelectionMenu
|
|
dw _CGB_MoveList
|
|
dw _CGB_BetaPikachuMinigame
|
|
dw _CGB_PokedexSearchOption
|
|
dw _CGB_BetaPoker
|
|
dw _CGB_Pokepic
|
|
dw _CGB_MagnetTrain
|
|
dw _CGB_PackPals
|
|
dw _CGB_TrainerCard
|
|
dw _CGB_PokedexUnownMode
|
|
dw _CGB_BillsPC
|
|
dw _CGB_UnownPuzzle
|
|
dw _CGB_GamefreakLogo
|
|
dw _CGB_PlayerOrMonFrontpicPals
|
|
dw _CGB_TradeTube
|
|
dw _CGB_TrainerOrMonFrontpicPals
|
|
dw _CGB_LevelSelectionMenuToDChange
|
|
assert_table_length NUM_CGB_LAYOUTS
|
|
|
|
_CGB_BattleGrayscale:
|
|
ld hl, FourPals_BattleGrayscale
|
|
ld de, wBGPals1
|
|
ld c, 4
|
|
call CopyPalettes
|
|
ld hl, FourPals_BattleGrayscale
|
|
ld de, wBGPals1 palette PAL_BATTLE_BG_EXP
|
|
ld c, 4
|
|
call CopyPalettes
|
|
ld hl, FourPals_BattleGrayscale
|
|
ld de, wOBPals1
|
|
ld c, 2
|
|
call CopyPalettes
|
|
jr _CGB_FinishBattleScreenLayout
|
|
|
|
_CGB_BattleColors:
|
|
ld de, wBGPals1
|
|
call GetBattlemonBackpicPalettePointer
|
|
push hl
|
|
call LoadPalette_White_Col1_Col2_Black ; PAL_BATTLE_BG_PLAYER
|
|
call GetEnemyFrontpicPalettePointer
|
|
push hl
|
|
call LoadPalette_White_Col1_Col2_Black ; PAL_BATTLE_BG_ENEMY
|
|
ld a, [wEnemyHPPal]
|
|
ld l, a
|
|
ld h, 0
|
|
add hl, hl
|
|
add hl, hl
|
|
ld bc, HPBarPals
|
|
add hl, bc
|
|
call LoadPalette_White_Col1_Col2_Black ; PAL_BATTLE_BG_ENEMY_HP
|
|
ld a, [wPlayerHPPal]
|
|
ld l, a
|
|
ld h, 0
|
|
add hl, hl
|
|
add hl, hl
|
|
ld bc, HPBarPals
|
|
add hl, bc
|
|
call LoadPalette_White_Col1_Col2_Black ; PAL_BATTLE_BG_PLAYER_HP
|
|
ld hl, ExpBarPalette
|
|
call LoadPalette_White_Col1_Col2_Black ; PAL_BATTLE_BG_EXP
|
|
ld de, wOBPals1
|
|
pop hl
|
|
call LoadPalette_White_Col1_Col2_Black ; PAL_BATTLE_OB_ENEMY
|
|
pop hl
|
|
call LoadPalette_White_Col1_Col2_Black ; PAL_BATTLE_OB_PLAYER
|
|
ld a, CGB_BATTLE_COLORS
|
|
ld [wDefaultCGBLayout], a
|
|
call ApplyPals
|
|
_CGB_FinishBattleScreenLayout:
|
|
call InitPartyMenuBGPal7
|
|
hlcoord 0, 0, wAttrmap
|
|
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
|
|
ld a, PAL_BATTLE_BG_ENEMY_HP
|
|
call ByteFill
|
|
hlcoord 0, 4, wAttrmap
|
|
lb bc, 8, 10
|
|
ld a, PAL_BATTLE_BG_PLAYER
|
|
call FillBoxCGB
|
|
hlcoord 10, 0, wAttrmap
|
|
lb bc, 7, 10
|
|
ld a, PAL_BATTLE_BG_ENEMY
|
|
call FillBoxCGB
|
|
hlcoord 0, 0, wAttrmap
|
|
lb bc, 4, 10
|
|
ld a, PAL_BATTLE_BG_ENEMY_HP
|
|
call FillBoxCGB
|
|
hlcoord 10, 7, wAttrmap
|
|
lb bc, 5, 10
|
|
ld a, PAL_BATTLE_BG_PLAYER_HP
|
|
call FillBoxCGB
|
|
hlcoord 10, 11, wAttrmap
|
|
lb bc, 1, 9
|
|
ld a, PAL_BATTLE_BG_EXP
|
|
call FillBoxCGB
|
|
hlcoord 0, 12, wAttrmap
|
|
ld bc, 6 * SCREEN_WIDTH
|
|
ld a, PAL_BATTLE_BG_TEXT
|
|
call ByteFill
|
|
ld hl, BattleObjectPals
|
|
ld de, wOBPals1 palette PAL_BATTLE_OB_GRAY
|
|
ld bc, 6 palettes
|
|
ld a, BANK(wOBPals1)
|
|
call FarCopyWRAM
|
|
call ApplyAttrmap
|
|
ret
|
|
|
|
InitPartyMenuBGPal7:
|
|
ld hl, PartyMenuBGPalette
|
|
ld de, wBGPals1 palette 7
|
|
ld bc, 1 palettes
|
|
ld a, BANK(wBGPals1)
|
|
call FarCopyWRAM
|
|
ret
|
|
|
|
InitPartyMenuBGPal0:
|
|
ld hl, PartyMenuBGPalette
|
|
ld de, wBGPals1 palette 0
|
|
ld bc, 1 palettes
|
|
ld a, BANK(wBGPals1)
|
|
call FarCopyWRAM
|
|
ret
|
|
|
|
_CGB_PokegearPals:
|
|
ld a, [wPlayerCharacter]
|
|
bit PLAYERGENDER_FEMALE_F, a
|
|
jr z, .male
|
|
ld hl, FemalePokegearPals
|
|
jr .got_pals
|
|
|
|
.male
|
|
ld hl, MalePokegearPals
|
|
.got_pals
|
|
ld de, wBGPals1
|
|
ld bc, 6 palettes
|
|
ld a, BANK(wBGPals1)
|
|
call FarCopyWRAM
|
|
call ApplyPals
|
|
ld a, TRUE
|
|
ldh [hCGBPalUpdate], a
|
|
ret
|
|
|
|
_CGB_StatsScreenHPPals:
|
|
ld de, wBGPals1
|
|
ld a, [wCurHPPal]
|
|
ld l, a
|
|
ld h, 0
|
|
add hl, hl
|
|
add hl, hl
|
|
ld bc, HPBarPals
|
|
add hl, bc
|
|
call LoadPalette_White_Col1_Col2_Black ; hp palette
|
|
ld a, [wCurPartySpecies]
|
|
ld bc, wTempMonDVs
|
|
call GetPlayerOrMonPalettePointer
|
|
call LoadPalette_White_Col1_Col2_Black ; mon palette
|
|
ld hl, ExpBarPalette
|
|
call LoadPalette_White_Col1_Col2_Black ; exp palette
|
|
ld hl, StatsScreenPagePals
|
|
ld de, wBGPals1 palette 3
|
|
ld bc, 3 palettes ; pink, green, and blue page palettes
|
|
ld a, BANK(wBGPals1)
|
|
call FarCopyWRAM
|
|
call WipeAttrmap
|
|
|
|
hlcoord 0, 0, wAttrmap
|
|
lb bc, 8, SCREEN_WIDTH
|
|
ld a, $1 ; mon palette
|
|
call FillBoxCGB
|
|
|
|
hlcoord 10, 16, wAttrmap
|
|
ld bc, 10
|
|
ld a, $2 ; exp palette
|
|
call ByteFill
|
|
|
|
hlcoord 13, 5, wAttrmap
|
|
lb bc, 2, 2
|
|
ld a, $3 ; pink page palette
|
|
call FillBoxCGB
|
|
|
|
hlcoord 15, 5, wAttrmap
|
|
lb bc, 2, 2
|
|
ld a, $4 ; green page palette
|
|
call FillBoxCGB
|
|
|
|
hlcoord 17, 5, wAttrmap
|
|
lb bc, 2, 2
|
|
ld a, $5 ; blue page palette
|
|
call FillBoxCGB
|
|
|
|
call ApplyAttrmap
|
|
call ApplyPals
|
|
ld a, TRUE
|
|
ldh [hCGBPalUpdate], a
|
|
ret
|
|
|
|
StatsScreenPagePals:
|
|
INCLUDE "gfx/stats/pages.pal"
|
|
|
|
StatsScreenPals:
|
|
INCLUDE "gfx/stats/stats.pal"
|
|
|
|
_CGB_Pokedex:
|
|
ld de, wBGPals1
|
|
ld a, PREDEFPAL_POKEDEX
|
|
call GetPredefPal
|
|
call LoadHLPaletteIntoDE ; dex interface palette
|
|
ld a, [wCurPartySpecies]
|
|
cp $ff
|
|
jr nz, .is_pokemon
|
|
ld hl, PokedexQuestionMarkPalette
|
|
call LoadHLPaletteIntoDE ; green question mark palette
|
|
jr .got_palette
|
|
|
|
.is_pokemon
|
|
call GetMonPalettePointer
|
|
call LoadPalette_White_Col1_Col2_Black ; mon palette
|
|
.got_palette
|
|
call WipeAttrmap
|
|
hlcoord 1, 1, wAttrmap
|
|
lb bc, 7, 7
|
|
ld a, $1 ; green question mark palette
|
|
call FillBoxCGB
|
|
call InitPartyMenuOBPals
|
|
ld hl, PokedexCursorPalette
|
|
ld de, wOBPals1 palette 7 ; green cursor palette
|
|
ld bc, 1 palettes
|
|
ld a, BANK(wOBPals1)
|
|
call FarCopyWRAM
|
|
call ApplyAttrmap
|
|
call ApplyPals
|
|
ld a, TRUE
|
|
ldh [hCGBPalUpdate], a
|
|
ret
|
|
|
|
PokedexQuestionMarkPalette:
|
|
INCLUDE "gfx/pokedex/question_mark.pal"
|
|
|
|
PokedexCursorPalette:
|
|
INCLUDE "gfx/pokedex/cursor.pal"
|
|
|
|
_CGB_BillsPC:
|
|
ld de, wBGPals1
|
|
ld a, PREDEFPAL_POKEDEX
|
|
call GetPredefPal
|
|
call LoadHLPaletteIntoDE
|
|
ld a, [wCurPartySpecies]
|
|
cp $ff
|
|
jr nz, .GetMonPalette
|
|
ld hl, BillsPCOrangePalette
|
|
call LoadHLPaletteIntoDE
|
|
jr .GotPalette
|
|
|
|
.GetMonPalette:
|
|
ld bc, wTempMonDVs
|
|
call GetPlayerOrMonPalettePointer
|
|
call LoadPalette_White_Col1_Col2_Black
|
|
.GotPalette:
|
|
call WipeAttrmap
|
|
hlcoord 1, 4, wAttrmap
|
|
lb bc, 7, 7
|
|
ld a, $1 ; mon palette
|
|
call FillBoxCGB
|
|
call InitPartyMenuOBPals
|
|
call ApplyAttrmap
|
|
call ApplyPals
|
|
ld a, TRUE
|
|
ldh [hCGBPalUpdate], a
|
|
ret
|
|
|
|
BillsPCOrangePalette:
|
|
INCLUDE "gfx/pc/orange.pal"
|
|
|
|
_CGB_PokedexUnownMode:
|
|
ld de, wBGPals1
|
|
ld a, PREDEFPAL_POKEDEX
|
|
call GetPredefPal
|
|
call LoadHLPaletteIntoDE
|
|
ld a, [wCurPartySpecies]
|
|
call GetMonPalettePointer
|
|
call LoadPalette_White_Col1_Col2_Black
|
|
call WipeAttrmap
|
|
hlcoord 7, 5, wAttrmap
|
|
lb bc, 7, 7
|
|
ld a, $1 ; mon palette
|
|
call FillBoxCGB
|
|
call InitPartyMenuOBPals
|
|
call ApplyAttrmap
|
|
call ApplyPals
|
|
ld a, TRUE
|
|
ldh [hCGBPalUpdate], a
|
|
ret
|
|
|
|
_CGB_SlotMachine:
|
|
ld hl, SlotMachinePals
|
|
ld de, wBGPals1
|
|
ld bc, 16 palettes
|
|
ld a, BANK(wBGPals1)
|
|
call FarCopyWRAM
|
|
call WipeAttrmap
|
|
hlcoord 0, 2, wAttrmap
|
|
lb bc, 10, 3
|
|
ld a, $2 ; "3" palette
|
|
call FillBoxCGB
|
|
hlcoord 17, 2, wAttrmap
|
|
lb bc, 10, 3
|
|
ld a, $2 ; "3" palette
|
|
call FillBoxCGB
|
|
hlcoord 0, 4, wAttrmap
|
|
lb bc, 6, 3
|
|
ld a, $3 ; "2" palette
|
|
call FillBoxCGB
|
|
hlcoord 17, 4, wAttrmap
|
|
lb bc, 6, 3
|
|
ld a, $3 ; "2" palette
|
|
call FillBoxCGB
|
|
hlcoord 0, 6, wAttrmap
|
|
lb bc, 2, 3
|
|
ld a, $4 ; "1" palette
|
|
call FillBoxCGB
|
|
hlcoord 17, 6, wAttrmap
|
|
lb bc, 2, 3
|
|
ld a, $4 ; "1" palette
|
|
call FillBoxCGB
|
|
hlcoord 4, 2, wAttrmap
|
|
lb bc, 2, 12
|
|
ld a, $1 ; Vileplume palette
|
|
call FillBoxCGB
|
|
hlcoord 3, 2, wAttrmap
|
|
lb bc, 10, 1
|
|
ld a, $1 ; lights palette
|
|
call FillBoxCGB
|
|
hlcoord 16, 2, wAttrmap
|
|
lb bc, 10, 1
|
|
ld a, $1 ; lights palette
|
|
call FillBoxCGB
|
|
hlcoord 0, 12, wAttrmap
|
|
ld bc, 6 * SCREEN_WIDTH
|
|
ld a, $7 ; text palette
|
|
call ByteFill
|
|
call ApplyAttrmap
|
|
call ApplyPals
|
|
ld a, TRUE
|
|
ldh [hCGBPalUpdate], a
|
|
ret
|
|
|
|
_CGB_BetaTitleScreen:
|
|
ld hl, FourPals_BetaTitleScreen
|
|
call CopyFourPalettes
|
|
call WipeAttrmap
|
|
ld de, wOBPals1
|
|
ld a, PREDEFPAL_PACK
|
|
call GetPredefPal
|
|
call LoadHLPaletteIntoDE
|
|
hlcoord 0, 6, wAttrmap
|
|
lb bc, 12, SCREEN_WIDTH
|
|
ld a, $1
|
|
call FillBoxCGB
|
|
call ApplyAttrmap
|
|
call ApplyPals
|
|
ld a, TRUE
|
|
ldh [hCGBPalUpdate], a
|
|
ret
|
|
|
|
_CGB_GSIntro:
|
|
ld b, 0
|
|
ld hl, .Jumptable
|
|
add hl, bc
|
|
add hl, bc
|
|
ld a, [hli]
|
|
ld h, [hl]
|
|
ld l, a
|
|
jp hl
|
|
|
|
.Jumptable:
|
|
dw .ShellderLaprasScene
|
|
dw .JigglypuffPikachuScene
|
|
dw .StartersCharizardScene
|
|
|
|
.ShellderLaprasScene:
|
|
ld hl, .ShellderLaprasBGPalette
|
|
ld de, wBGPals1
|
|
call LoadHLPaletteIntoDE
|
|
ld hl, .ShellderLaprasOBPals
|
|
ld de, wOBPals1
|
|
ld bc, 2 palettes
|
|
ld a, BANK(wOBPals1)
|
|
call FarCopyWRAM
|
|
call WipeAttrmap
|
|
ret
|
|
|
|
.ShellderLaprasBGPalette:
|
|
INCLUDE "gfx/intro/gs_shellder_lapras_bg.pal"
|
|
|
|
.ShellderLaprasOBPals:
|
|
INCLUDE "gfx/intro/gs_shellder_lapras_ob.pal"
|
|
|
|
.JigglypuffPikachuScene:
|
|
ld de, wBGPals1
|
|
ld a, PREDEFPAL_GS_INTRO_JIGGLYPUFF_PIKACHU_BG
|
|
call GetPredefPal
|
|
call LoadHLPaletteIntoDE
|
|
|
|
ld de, wOBPals1
|
|
ld a, PREDEFPAL_GS_INTRO_JIGGLYPUFF_PIKACHU_OB
|
|
call GetPredefPal
|
|
call LoadHLPaletteIntoDE
|
|
call WipeAttrmap
|
|
ret
|
|
|
|
.StartersCharizardScene:
|
|
ld hl, FourPals_Pack
|
|
call CopyFourPalettes
|
|
ld de, wOBPals1
|
|
ld a, PREDEFPAL_GS_INTRO_STARTERS_TRANSITION
|
|
call GetPredefPal
|
|
call LoadHLPaletteIntoDE
|
|
call WipeAttrmap
|
|
ret
|
|
|
|
_CGB_BetaPoker:
|
|
ld hl, BetaPokerPals
|
|
ld de, wBGPals1
|
|
ld bc, 5 palettes
|
|
ld a, BANK(wBGPals1)
|
|
call FarCopyWRAM
|
|
call ApplyPals
|
|
call WipeAttrmap
|
|
call ApplyAttrmap
|
|
ret
|
|
|
|
_CGB_Diploma:
|
|
ld hl, DiplomaPalettes
|
|
ld de, wBGPals1
|
|
ld bc, 16 palettes
|
|
ld a, BANK(wBGPals1)
|
|
call FarCopyWRAM
|
|
|
|
ld hl, FourPals_Diploma
|
|
call CopyFourPalettes
|
|
call WipeAttrmap
|
|
call ApplyAttrmap
|
|
ret
|
|
|
|
_CGB_MapPals:
|
|
call LoadMapPals
|
|
ld a, CGB_MAPPALS
|
|
ld [wDefaultCGBLayout], a
|
|
ret
|
|
|
|
_CGB_PartyMenu:
|
|
ld hl, FourPals_PartyMenu
|
|
call CopyFourPalettes
|
|
call InitPartyMenuBGPal0
|
|
call InitPartyMenuBGPal7
|
|
call InitPartyMenuOBPals
|
|
call ApplyAttrmap
|
|
ret
|
|
|
|
_CGB_Evolution:
|
|
ld de, wBGPals1
|
|
ld a, c
|
|
and a
|
|
jr z, .pokemon
|
|
ld a, PREDEFPAL_BLACKOUT
|
|
call GetPredefPal
|
|
call LoadHLPaletteIntoDE
|
|
jr .got_palette
|
|
|
|
.pokemon
|
|
ld hl, wPartyMon1DVs
|
|
ld bc, PARTYMON_STRUCT_LENGTH
|
|
ld a, [wCurPartyMon]
|
|
call AddNTimes
|
|
ld c, l
|
|
ld b, h
|
|
ld a, [wPlayerHPPal]
|
|
call GetPlayerOrMonPalettePointer
|
|
call LoadPalette_White_Col1_Col2_Black
|
|
ld hl, BattleObjectPals
|
|
ld de, wOBPals1 palette PAL_BATTLE_OB_GRAY
|
|
ld bc, 6 palettes
|
|
ld a, BANK(wOBPals1)
|
|
call FarCopyWRAM
|
|
|
|
.got_palette
|
|
call WipeAttrmap
|
|
call ApplyAttrmap
|
|
call ApplyPals
|
|
ld a, TRUE
|
|
ldh [hCGBPalUpdate], a
|
|
ret
|
|
|
|
_CGB_GSTitleScreen:
|
|
ld hl, UnusedGSTitleBGPals
|
|
ld de, wBGPals1
|
|
ld bc, 5 palettes
|
|
ld a, BANK(wBGPals1)
|
|
call FarCopyWRAM
|
|
ld hl, UnusedGSTitleOBPals
|
|
ld de, wOBPals1
|
|
ld bc, 2 palettes
|
|
ld a, BANK(wOBPals1)
|
|
call FarCopyWRAM
|
|
ld a, CGB_DIPLOMA
|
|
ld [wDefaultCGBLayout], a
|
|
call ApplyPals
|
|
ld a, TRUE
|
|
ldh [hCGBPalUpdate], a
|
|
ret
|
|
|
|
_CGB_LevelSelectionMenu:
|
|
; load daytime-based player sprite pal (male or female)
|
|
ld a, [wTimeOfDay]
|
|
maskbits NUM_DAYTIMES
|
|
ld bc, 8 palettes
|
|
ld hl, MapObjectPals
|
|
call AddNTimes
|
|
ld a, [wPlayerCharacter]
|
|
ld e, PLAYERDATA_OW_PAL
|
|
push hl
|
|
call GetPlayerField
|
|
pop hl
|
|
ld bc, 1 palettes
|
|
call AddNTimes
|
|
ld de, wOBPals1
|
|
ld bc, 1 palettes
|
|
ld a, BANK(wOBPals1)
|
|
call FarCopyWRAM
|
|
; load daytime-based ToD symbol pals (pal1)
|
|
ld a, [wTimeOfDay]
|
|
maskbits NUM_DAYTIMES
|
|
ld bc, 1 palettes
|
|
ld hl, LevelSelectionMenuTimeOfDaySymbolsPals
|
|
call AddNTimes
|
|
ld bc, 1 palettes
|
|
ld a, BANK(wOBPals1)
|
|
call FarCopyWRAM
|
|
; load stage trophy pals (pal2 to pal5)
|
|
ld hl, LevelSelectionMenuStageTrophiesPals
|
|
ld bc, 4 palettes
|
|
ld a, BANK(wOBPals1)
|
|
call FarCopyWRAM
|
|
|
|
; load daytime background pals
|
|
ld hl, LevelSelectionMenuPals
|
|
ld a, [wTimeOfDay]
|
|
maskbits NUM_DAYTIMES
|
|
ld bc, 6 palettes
|
|
call AddNTimes
|
|
ld de, wBGPals1
|
|
ld bc, 6 palettes
|
|
ld a, BANK(wBGPals1)
|
|
call FarCopyWRAM
|
|
|
|
; apply and commit pals
|
|
call ApplyPals
|
|
ld a, TRUE
|
|
ldh [hCGBPalUpdate], a
|
|
ret
|
|
|
|
_CGB_LevelSelectionMenuToDChange:
|
|
; load daytime-based ToD symbol pals (pal1)
|
|
ld a, [wTimeOfDay]
|
|
maskbits NUM_DAYTIMES
|
|
ld bc, 1 palettes
|
|
ld hl, LevelSelectionMenuTimeOfDaySymbolsPals
|
|
call AddNTimes
|
|
ld de, wOBPals1 + 1 palettes
|
|
ld bc, 1 palettes
|
|
ld a, BANK(wOBPals1)
|
|
call FarCopyWRAM
|
|
|
|
; load fading background pals
|
|
ld hl, .PalsOffsets
|
|
ld a, [wLevelSelectionMenuStartingToD]
|
|
maskbits NUM_DAYTIMES
|
|
ld d, a
|
|
ld a, [wLevelSelectionMenuToDFadeStep]
|
|
ld e, a
|
|
.loop
|
|
ld a, [hli]
|
|
cp d
|
|
jr nz, .next1
|
|
inc a ; cp $ff
|
|
jr z, .done
|
|
ld a, [hli]
|
|
cp e
|
|
jr z, .match
|
|
jr .next2
|
|
.next1
|
|
inc hl
|
|
.next2
|
|
inc hl
|
|
jr .loop
|
|
|
|
.match
|
|
ld a, [hl]
|
|
ld hl, LevelSelectionMenuPals
|
|
ld bc, 6 palettes
|
|
call AddNTimes
|
|
ld de, wBGPals1
|
|
ld bc, 6 palettes
|
|
ld a, BANK(wBGPals1)
|
|
call FarCopyWRAM
|
|
|
|
.done
|
|
; apply and commit pals
|
|
call ApplyPals
|
|
ld a, TRUE
|
|
ldh [hCGBPalUpdate], a
|
|
ret
|
|
|
|
.PalsOffsets:
|
|
; wLevelSelectionMenuStartingToD, wLevelSelectionMenuToDFadeStep, offset from LevelSelectionMenu*Pals
|
|
db MORN_F, 0, 0
|
|
db DAY_F, 0, 1
|
|
db NITE_F, 0, 2
|
|
db EVE_F, 0, 3
|
|
db MORN_F, 1, 4
|
|
db MORN_F, 2, 5
|
|
db MORN_F, 3, 1
|
|
db DAY_F, 1, 6
|
|
db DAY_F, 2, 7
|
|
db DAY_F, 3, 3
|
|
db EVE_F, 1, 8
|
|
db EVE_F, 2, 9
|
|
db EVE_F, 3, 2
|
|
db NITE_F, 1, 10
|
|
db NITE_F, 2, 11
|
|
db NITE_F, 3, 0
|
|
db $ff
|
|
|
|
_CGB_UnownPuzzle:
|
|
ld hl, FourPals_UnownPuzzle
|
|
call CopyFourPalettes
|
|
ld de, wOBPals1
|
|
ld a, PREDEFPAL_UNOWN_PUZZLE
|
|
call GetPredefPal
|
|
call LoadHLPaletteIntoDE
|
|
ldh a, [rSVBK]
|
|
push af
|
|
ld a, BANK(wOBPals1)
|
|
ldh [rSVBK], a
|
|
ld hl, wOBPals1
|
|
ld a, LOW(palred 31 + palgreen 0 + palblue 0)
|
|
ld [hli], a
|
|
ld a, HIGH(palred 31 + palgreen 0 + palblue 0)
|
|
ld [hl], a
|
|
pop af
|
|
ldh [rSVBK], a
|
|
call WipeAttrmap
|
|
call ApplyAttrmap
|
|
ret
|
|
|
|
_CGB_TrainerCard:
|
|
ld de, wBGPals1
|
|
xor a ; CHRIS
|
|
call GetTrainerPalettePointer
|
|
call LoadPalette_White_Col1_Col2_Black
|
|
ld a, FALKNER ; KRIS
|
|
call GetTrainerPalettePointer
|
|
call LoadPalette_White_Col1_Col2_Black
|
|
ld a, BUGSY
|
|
call GetTrainerPalettePointer
|
|
call LoadPalette_White_Col1_Col2_Black
|
|
ld a, WHITNEY
|
|
call GetTrainerPalettePointer
|
|
call LoadPalette_White_Col1_Col2_Black
|
|
ld a, MORTY
|
|
call GetTrainerPalettePointer
|
|
call LoadPalette_White_Col1_Col2_Black
|
|
ld a, CHUCK
|
|
call GetTrainerPalettePointer
|
|
call LoadPalette_White_Col1_Col2_Black
|
|
ld a, JASMINE
|
|
call GetTrainerPalettePointer
|
|
call LoadPalette_White_Col1_Col2_Black
|
|
ld a, PRYCE
|
|
call GetTrainerPalettePointer
|
|
call LoadPalette_White_Col1_Col2_Black
|
|
ld a, PREDEFPAL_CGB_BADGE
|
|
call GetPredefPal
|
|
call LoadHLPaletteIntoDE
|
|
|
|
; fill screen with opposite-gender palette for the card border
|
|
hlcoord 0, 0, wAttrmap
|
|
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
|
|
ld a, [wPlayerCharacter]
|
|
and a
|
|
ld a, $1 ; kris
|
|
jr z, .got_gender
|
|
ld a, $0 ; chris
|
|
.got_gender
|
|
call ByteFill
|
|
; fill trainer sprite area with same-gender palette
|
|
hlcoord 14, 1, wAttrmap
|
|
lb bc, 7, 5
|
|
ld a, [wPlayerCharacter]
|
|
and a
|
|
ld a, $0 ; chris
|
|
jr z, .got_gender2
|
|
ld a, $1 ; kris
|
|
.got_gender2
|
|
call FillBoxCGB
|
|
; top-right corner still uses the border's palette
|
|
hlcoord 18, 1, wAttrmap
|
|
ld [hl], $1
|
|
hlcoord 2, 11, wAttrmap
|
|
lb bc, 2, 4
|
|
ld a, $1 ; falkner
|
|
call FillBoxCGB
|
|
hlcoord 6, 11, wAttrmap
|
|
lb bc, 2, 4
|
|
ld a, $2 ; bugsy
|
|
call FillBoxCGB
|
|
hlcoord 10, 11, wAttrmap
|
|
lb bc, 2, 4
|
|
ld a, $3 ; whitney
|
|
call FillBoxCGB
|
|
hlcoord 14, 11, wAttrmap
|
|
lb bc, 2, 4
|
|
ld a, $4 ; morty
|
|
call FillBoxCGB
|
|
hlcoord 2, 14, wAttrmap
|
|
lb bc, 2, 4
|
|
ld a, $5 ; chuck
|
|
call FillBoxCGB
|
|
hlcoord 6, 14, wAttrmap
|
|
lb bc, 2, 4
|
|
ld a, $6 ; jasmine
|
|
call FillBoxCGB
|
|
hlcoord 10, 14, wAttrmap
|
|
lb bc, 2, 4
|
|
ld a, $7 ; pryce
|
|
call FillBoxCGB
|
|
; clair uses kris's palette
|
|
ld a, [wPlayerCharacter]
|
|
and a
|
|
push af
|
|
jr z, .got_gender3
|
|
hlcoord 14, 14, wAttrmap
|
|
lb bc, 2, 4
|
|
ld a, $1
|
|
call FillBoxCGB
|
|
.got_gender3
|
|
pop af
|
|
ld c, $0
|
|
jr nz, .got_gender4
|
|
inc c
|
|
.got_gender4
|
|
ld a, c
|
|
hlcoord 18, 1, wAttrmap
|
|
ld [hl], a
|
|
call ApplyAttrmap
|
|
call ApplyPals
|
|
ld a, TRUE
|
|
ldh [hCGBPalUpdate], a
|
|
ret
|
|
|
|
_CGB_MoveList:
|
|
ld de, wBGPals1
|
|
ld a, PREDEFPAL_GOLDENROD
|
|
call GetPredefPal
|
|
call LoadHLPaletteIntoDE
|
|
ld a, [wPlayerHPPal]
|
|
ld l, a
|
|
ld h, 0
|
|
add hl, hl
|
|
add hl, hl
|
|
ld bc, HPBarPals
|
|
add hl, bc
|
|
call LoadPalette_White_Col1_Col2_Black
|
|
call WipeAttrmap
|
|
hlcoord 11, 1, wAttrmap
|
|
lb bc, 2, 9
|
|
ld a, $1
|
|
call FillBoxCGB
|
|
call ApplyAttrmap
|
|
call ApplyPals
|
|
ld a, TRUE
|
|
ldh [hCGBPalUpdate], a
|
|
ret
|
|
|
|
_CGB_BetaPikachuMinigame:
|
|
ld hl, FourPals_BetaPikachuMinigame
|
|
call CopyFourPalettes
|
|
call WipeAttrmap
|
|
call ApplyAttrmap
|
|
call ApplyPals
|
|
ld a, TRUE
|
|
ldh [hCGBPalUpdate], a
|
|
ret
|
|
|
|
_CGB_PokedexSearchOption:
|
|
ld de, wBGPals1
|
|
ld a, PREDEFPAL_POKEDEX
|
|
call GetPredefPal
|
|
call LoadHLPaletteIntoDE
|
|
call WipeAttrmap
|
|
call ApplyAttrmap
|
|
call ApplyPals
|
|
ld a, TRUE
|
|
ldh [hCGBPalUpdate], a
|
|
ret
|
|
|
|
_CGB_PackPals:
|
|
; pack pals
|
|
ld a, [wBattleType]
|
|
cp BATTLETYPE_TUTORIAL
|
|
jr z, .tutorial_male
|
|
|
|
ld a, [wPlayerCharacter]
|
|
bit PLAYERGENDER_FEMALE_F, a
|
|
jr z, .tutorial_male
|
|
|
|
ld hl, .KrisPackPals
|
|
jr .got_gender
|
|
|
|
.tutorial_male
|
|
ld hl, .ChrisPackPals
|
|
|
|
.got_gender
|
|
ld de, wBGPals1
|
|
ld bc, 8 palettes ; 6 palettes?
|
|
ld a, BANK(wBGPals1)
|
|
call FarCopyWRAM
|
|
call WipeAttrmap
|
|
hlcoord 0, 0, wAttrmap
|
|
lb bc, 1, 10
|
|
ld a, $1
|
|
call FillBoxCGB
|
|
hlcoord 10, 0, wAttrmap
|
|
lb bc, 1, 10
|
|
ld a, $2
|
|
call FillBoxCGB
|
|
hlcoord 7, 2, wAttrmap
|
|
lb bc, 9, 1
|
|
ld a, $3
|
|
call FillBoxCGB
|
|
hlcoord 0, 7, wAttrmap
|
|
lb bc, 3, 5
|
|
ld a, $4
|
|
call FillBoxCGB
|
|
hlcoord 0, 3, wAttrmap
|
|
lb bc, 3, 5
|
|
ld a, $5
|
|
call FillBoxCGB
|
|
call ApplyAttrmap
|
|
call ApplyPals
|
|
ld a, TRUE
|
|
ldh [hCGBPalUpdate], a
|
|
ret
|
|
|
|
.ChrisPackPals:
|
|
INCLUDE "gfx/pack/pack.pal"
|
|
|
|
.KrisPackPals:
|
|
INCLUDE "gfx/pack/pack_f.pal"
|
|
|
|
_CGB_Pokepic:
|
|
call _CGB_MapPals
|
|
ld de, SCREEN_WIDTH
|
|
hlcoord 0, 0, wAttrmap
|
|
ld a, [wMenuBorderTopCoord]
|
|
.loop
|
|
and a
|
|
jr z, .found_top
|
|
dec a
|
|
add hl, de
|
|
jr .loop
|
|
|
|
.found_top
|
|
ld a, [wMenuBorderLeftCoord]
|
|
ld e, a
|
|
ld d, 0
|
|
add hl, de
|
|
ld a, [wMenuBorderTopCoord]
|
|
ld b, a
|
|
ld a, [wMenuBorderBottomCoord]
|
|
inc a
|
|
sub b
|
|
ld b, a
|
|
ld a, [wMenuBorderLeftCoord]
|
|
ld c, a
|
|
ld a, [wMenuBorderRightCoord]
|
|
sub c
|
|
inc a
|
|
ld c, a
|
|
ld a, PAL_BG_GRAY
|
|
call FillBoxCGB
|
|
call ApplyAttrmap
|
|
ret
|
|
|
|
_CGB_MagnetTrain: ; unused
|
|
ld hl, FourPals_MagnetTrain
|
|
call CopyFourPalettes
|
|
call WipeAttrmap
|
|
hlcoord 0, 4, wAttrmap
|
|
lb bc, 10, SCREEN_WIDTH
|
|
ld a, PAL_BG_GREEN
|
|
call FillBoxCGB
|
|
hlcoord 0, 6, wAttrmap
|
|
lb bc, 6, SCREEN_WIDTH
|
|
ld a, PAL_BG_RED
|
|
call FillBoxCGB
|
|
call ApplyAttrmap
|
|
call ApplyPals
|
|
ld a, TRUE
|
|
ldh [hCGBPalUpdate], a
|
|
ret
|
|
|
|
_CGB_GamefreakLogo:
|
|
ld de, wBGPals1
|
|
ld a, PREDEFPAL_GAMEFREAK_LOGO_BG
|
|
call GetPredefPal
|
|
call LoadHLPaletteIntoDE
|
|
ld hl, .GamefreakDittoPalette
|
|
ld de, wOBPals1
|
|
call LoadHLPaletteIntoDE
|
|
ld hl, .GamefreakDittoPalette
|
|
ld de, wOBPals1 palette 1
|
|
call LoadHLPaletteIntoDE
|
|
call WipeAttrmap
|
|
call ApplyAttrmap
|
|
call ApplyPals
|
|
ret
|
|
|
|
.GamefreakDittoPalette:
|
|
INCLUDE "gfx/splash/ditto.pal"
|
|
|
|
_CGB_PlayerOrMonFrontpicPals:
|
|
ld de, wBGPals1
|
|
ld a, [wCurPartySpecies]
|
|
ld bc, wTempMonDVs
|
|
call GetPlayerOrMonPalettePointer
|
|
call LoadPalette_White_Col1_Col2_Black
|
|
call WipeAttrmap
|
|
call ApplyAttrmap
|
|
call ApplyPals
|
|
ret
|
|
|
|
_CGB_Unused1D:
|
|
ld de, wBGPals1
|
|
ld a, [wCurPartySpecies]
|
|
call GetMonPalettePointer
|
|
call LoadPalette_White_Col1_Col2_Black
|
|
call WipeAttrmap
|
|
call ApplyAttrmap
|
|
ret
|
|
|
|
_CGB_TradeTube:
|
|
ld hl, FourPals_TradeTube
|
|
call CopyFourPalettes
|
|
ld hl, PartyMenuOBPals
|
|
ld de, wOBPals1
|
|
ld bc, 1 palettes
|
|
ld a, BANK(wOBPals1)
|
|
call FarCopyWRAM
|
|
ld de, wOBPals1 palette 7
|
|
ld a, PREDEFPAL_TRADE_TUBE
|
|
call GetPredefPal
|
|
call LoadHLPaletteIntoDE
|
|
call WipeAttrmap
|
|
ret
|
|
|
|
_CGB_TrainerOrMonFrontpicPals:
|
|
ld de, wBGPals1
|
|
ld a, [wCurPartySpecies]
|
|
ld bc, wTempMonDVs
|
|
call GetFrontpicPalettePointer
|
|
call LoadPalette_White_Col1_Col2_Black
|
|
call WipeAttrmap
|
|
call ApplyAttrmap
|
|
call ApplyPals
|
|
ret
|