pokecrystal-board/engine/color.asm

2351 lines
43 KiB
NASM
Raw Normal View History

2015-11-16 13:01:45 -08:00
PALPACKET_LENGTH EQU $10
INCLUDE "predef/sgb.asm"
2015-11-01 15:13:31 -08:00
SHINY_ATK_BIT EQU 5
SHINY_DEF_VAL EQU 10
SHINY_SPD_VAL EQU 10
SHINY_SPC_VAL EQU 10
CheckShininess:
; Check if a mon is shiny by DVs at bc.
; Return carry if shiny.
ld l, c
ld h, b
; Attack
ld a, [hl]
2015-11-01 15:13:31 -08:00
and 1 << SHINY_ATK_BIT
jr z, .NotShiny
; Defense
ld a, [hli]
and $f
2015-11-01 15:13:31 -08:00
cp SHINY_DEF_VAL
jr nz, .NotShiny
; Speed
ld a, [hl]
and $f0
2015-11-01 15:13:31 -08:00
cp SHINY_SPD_VAL << 4
jr nz, .NotShiny
; Special
ld a, [hl]
and $f
2015-11-01 15:13:31 -08:00
cp SHINY_SPC_VAL
jr nz, .NotShiny
.Shiny:
scf
ret
.NotShiny:
and a
ret
CheckContestMon:
; Check a mon's DVs at hl in the bug catching contest.
; Return carry if its DVs are good enough to place in the contest.
; Attack
ld a, [hl]
cp 10 << 4
jr c, .Bad
; Defense
ld a, [hli]
and $f
cp 10
jr c, .Bad
; Speed
ld a, [hl]
cp 10 << 4
jr c, .Bad
; Special
ld a, [hl]
and $f
cp 10
jr c, .Bad
.Good:
scf
ret
.Bad:
and a
ret
Function8aa4:
; XXX
push de
push bc
ld hl, PalPacket_9ce6
ld de, wSGBPals
2015-11-16 13:01:45 -08:00
ld bc, PALPACKET_LENGTH
call CopyBytes
pop bc
pop de
ld a, c
ld [wSGBPals + 3], a
ld a, b
ld [wSGBPals + 4], a
ld a, e
ld [wSGBPals + 5], a
ld a, d
ld [wSGBPals + 6], a
ld hl, wSGBPals
call PushSGBPals_
ld hl, BlkPacket_9a86
call PushSGBPals_
ret
InitPartyMenuPalettes:
ld hl, PalPacket_9c56 + 1
call CopyFourPalettes
2015-12-28 07:57:04 -08:00
call InitPartyMenuOBPals
2015-12-16 18:57:42 -08:00
call WipeAttrMap
ret
2015-12-22 19:19:33 -08:00
SGB_ApplyPartyMenuHPPals: ; 8ade SGB layout $fc
ld hl, wHPPals
ld a, [wSGBPals]
ld e, a
ld d, $0
add hl, de
ld e, l
ld d, h
ld a, [de]
and a
ld e, $5
jr z, .okay
dec a
ld e, $a
jr z, .okay
ld e, $f
.okay
push de
ld hl, wSGBPals + 10
2015-12-09 15:25:44 -08:00
ld bc, $6
ld a, [wSGBPals]
call AddNTimes
pop de
ld [hl], e
ret
Function8b07:
2016-01-04 05:43:55 -08:00
; Unreferenced
call CheckCGB
ret z
2016-05-05 12:07:37 -07:00
; CGB only
2016-01-04 05:43:55 -08:00
ld hl, .BGPal
2015-11-20 12:15:32 -08:00
ld de, UnknBGPals
2015-12-09 15:25:44 -08:00
ld bc, 1 palettes
ld a, $5
call FarCopyWRAM
2016-01-04 05:43:55 -08:00
ld hl, .OBPal
ld de, UnknOBPals
2015-12-09 15:25:44 -08:00
ld bc, 1 palettes
ld a, $5
call FarCopyWRAM
2015-12-16 18:57:42 -08:00
call ApplyPals
ld a, $1
ld [hCGBPalUpdate], a
ret
.BGPal:
RGB 31, 31, 31
RGB 18, 23, 31
RGB 15, 20, 31
RGB 00, 00, 00
2015-12-09 15:25:44 -08:00
.OBPal:
RGB 31, 31, 31
RGB 31, 31, 12
RGB 08, 16, 28
RGB 00, 00, 00
2015-12-09 15:25:44 -08:00
Function8b3f:
2016-01-04 05:43:55 -08:00
; Unreferenced
call CheckCGB
ret nz
ld a, [hSGB]
and a
ret z
ld hl, BlkPacket_9a86
jp PushSGBPals_
Function8b4d:
; XXX
call CheckCGB
2016-01-04 05:43:55 -08:00
jr nz, .cgb
ld a, [hSGB]
and a
ret z
ld hl, PalPacket_9c26
jp PushSGBPals_
2016-01-04 05:43:55 -08:00
.cgb
2015-11-20 12:15:32 -08:00
ld de, UnknOBPals
ld a, $3b
call GetPredefPal
jp LoadHLPaletteIntoDE
Function8b67:
; XXX
call CheckCGB
2016-01-04 05:43:55 -08:00
jr nz, .cgb
ld a, [hSGB]
and a
ret z
ld hl, PalPacket_9c36
jp PushSGBPals_
2016-01-04 05:43:55 -08:00
.cgb
2015-11-20 12:15:32 -08:00
ld de, UnknOBPals
ld a, $3c
call GetPredefPal
jp LoadHLPaletteIntoDE
Function8b81:
; XXX
call CheckCGB
jr nz, .cgb
ld a, [hSGB]
and a
ret z
ld a, c
push af
ld hl, PalPacket_9ce6
ld de, wSGBPals
2015-11-16 13:01:45 -08:00
ld bc, PALPACKET_LENGTH
call CopyBytes
pop af
2015-12-16 18:57:42 -08:00
call GetMonPalettePointer_
ld a, [hli]
ld [wSGBPals + 3], a
ld a, [hli]
ld [wSGBPals + 4], a
ld a, [hli]
ld [wSGBPals + 5], a
ld a, [hl]
ld [wSGBPals + 6], a
ld hl, wSGBPals
jp PushSGBPals_
.cgb
2015-11-20 12:15:32 -08:00
ld de, UnknOBPals
ld a, c
2015-12-16 18:57:42 -08:00
call GetMonPalettePointer_
call LoadPalette_White_Col1_Col2_Black
ret
LoadTrainerClassPaletteAsNthBGPal:
ld a, [TrainerClass]
2015-12-16 18:57:42 -08:00
call GetTrainerPalettePointer
ld a, e
jr got_palette_pointer_8bd7
LoadMonPaletteAsNthBGPal:
ld a, [CurPartySpecies]
2015-12-16 18:57:42 -08:00
call GetMonPalettePointer
ld a, e
bit 7, a
jr z, got_palette_pointer_8bd7
and $7f
inc hl
inc hl
inc hl
inc hl
got_palette_pointer_8bd7
push hl
2015-11-20 12:15:32 -08:00
ld hl, UnknBGPals
ld de, 1 palettes
.loop
and a
jr z, .got_addr
add hl, de
dec a
jr .loop
.got_addr
ld e, l
ld d, h
pop hl
2015-12-16 18:57:42 -08:00
call LoadPalette_White_Col1_Col2_Black
ret
Function8bec:
; XXX
ld a, [hCGB]
and a
jr nz, .cgb
ld hl, PlayerLightScreenCount
jp PushSGBPals_
.cgb
ld a, [EnemyLightScreenCount] ; col
ld c, a
ld a, [EnemyReflectCount] ; row
hlcoord 0, 0, AttrMap
ld de, SCREEN_WIDTH
.loop
and a
jr z, .done
add hl, de
dec a
jr .loop
.done
ld b, $0
add hl, bc
lb bc, 6, 4
ld a, [EnemySafeguardCount] ; value
and $3
2015-11-12 21:49:27 -08:00
call FillBoxCGB
2015-11-20 08:47:52 -08:00
call LoadEDTile
ret
ApplyMonOrTrainerPals:
call CheckCGB
ret z
ld a, e
and a
jr z, .get_trainer
ld a, [CurPartySpecies]
2015-12-16 18:57:42 -08:00
call GetMonPalettePointer_
jr .load_palettes
.get_trainer
ld a, [TrainerClass]
2015-12-16 18:57:42 -08:00
call GetTrainerPalettePointer
.load_palettes
2015-11-20 12:15:32 -08:00
ld de, UnknBGPals
2015-12-16 18:57:42 -08:00
call LoadPalette_White_Col1_Col2_Black
call WipeAttrMap
call ApplyAttrMap
call ApplyPals
ret
ApplyHPBarPals:
ld a, [wWhichHPBar]
and a
jr z, .Enemy
cp $1
jr z, .Player
cp $2
jr z, .PartyMenu
ret
.Enemy:
2015-12-09 15:25:44 -08:00
ld de, BGPals + 2 palettes + 2
jr .okay
.Player:
2015-12-09 15:25:44 -08:00
ld de, BGPals + 3 palettes + 2
.okay
ld l, c
ld h, $0
add hl, hl
2015-12-26 18:59:03 -08:00
add hl, hl
ld bc, Palettes_a8be
add hl, bc
ld bc, 4
ld a, $5
call FarCopyWRAM
ld a, $1
ld [hCGBPalUpdate], a
ret
.PartyMenu:
ld e, c
inc e
hlcoord 11, 1, AttrMap
ld bc, 2 * SCREEN_WIDTH
ld a, [CurPartyMon]
.loop
and a
jr z, .done
add hl, bc
dec a
jr .loop
.done
lb bc, 2, 8
ld a, e
2015-11-12 21:49:27 -08:00
call FillBoxCGB
ret
LoadStatsScreenPals:
call CheckCGB
ret z
2015-12-22 19:19:33 -08:00
ld hl, StatsScreenPals
ld b, 0
dec c
add hl, bc
2015-12-26 18:59:03 -08:00
add hl, bc
ld a, [rSVBK]
push af
ld a, $5
ld [rSVBK], a
ld a, [hli]
2015-11-20 12:15:32 -08:00
ld [UnknBGPals], a
ld [UnknBGPals + 8 * 2], a
ld a, [hl]
2015-11-20 12:15:32 -08:00
ld [UnknBGPals + 1], a
ld [UnknBGPals + 8 * 2 + 1], a
pop af
ld [rSVBK], a
2015-12-16 18:57:42 -08:00
call ApplyPals
ld a, $1
ret
LoadMailPalettes:
ld l, e
ld h, 0
add hl, hl
add hl, hl
add hl, hl
ld de, .MailPals
add hl, de
call CheckCGB
jr nz, .cgb
push hl
ld hl, PalPacket_9ce6
ld de, wSGBPals
2015-11-16 13:01:45 -08:00
ld bc, PALPACKET_LENGTH
call CopyBytes
pop hl
inc hl
2015-12-26 18:59:03 -08:00
inc hl
ld a, [hli]
ld [wSGBPals + 3], a
ld a, [hli]
ld [wSGBPals + 4], a
ld a, [hli]
ld [wSGBPals + 5], a
ld a, [hli]
ld [wSGBPals + 6], a
ld hl, wSGBPals
call PushSGBPals_
ld hl, BlkPacket_9a86
call PushSGBPals_
ret
.cgb
2015-11-20 12:15:32 -08:00
ld de, UnknBGPals
2015-12-09 15:25:44 -08:00
ld bc, 1 palettes
ld a, $5
call FarCopyWRAM
2015-12-16 18:57:42 -08:00
call ApplyPals
call WipeAttrMap
call ApplyAttrMap
ret
.MailPals:
RGB 20, 31, 11
RGB 31, 19, 00
RGB 31, 10, 09
RGB 00, 00, 00
RGB 15, 20, 31
RGB 30, 26, 00
RGB 31, 12, 00
RGB 00, 00, 00
RGB 24, 17, 31
RGB 30, 26, 00
RGB 08, 11, 31
RGB 00, 00, 00
RGB 31, 25, 17
RGB 31, 18, 04
RGB 28, 12, 05
RGB 00, 00, 00
RGB 19, 26, 31
RGB 31, 05, 08
RGB 31, 09, 31
RGB 00, 00, 00
RGB 31, 19, 28
RGB 31, 21, 00
RGB 12, 22, 00
RGB 00, 00, 00
RGB 19, 17, 23
RGB 30, 26, 00
RGB 31, 12, 00
RGB 00, 00, 00
RGB 07, 26, 31
RGB 26, 26, 27
RGB 31, 11, 11
RGB 00, 00, 00
RGB 21, 31, 21
RGB 30, 26, 00
RGB 31, 12, 00
RGB 00, 00, 00
RGB 07, 26, 31
RGB 31, 31, 00
RGB 00, 21, 00
RGB 00, 00, 00
2015-12-09 15:25:44 -08:00
INCLUDE "predef/cgb.asm"
Function95f0:
; XXX
ld hl, .Palette
2015-11-20 12:15:32 -08:00
ld de, UnknBGPals
ld bc, 8
ld a, $5
call FarCopyWRAM
2015-12-16 18:57:42 -08:00
call ApplyPals
call WipeAttrMap
call ApplyAttrMap
ret
.Palette:
RGB 31, 31, 31
RGB 09, 31, 31
RGB 10, 12, 31
RGB 00, 03, 19
2015-12-09 15:25:44 -08:00
CopyFourPalettes:
2015-11-20 12:15:32 -08:00
ld de, UnknBGPals
ld c, $4
2013-12-24 14:11:52 -08:00
CopyPalettes:
.loop
push bc
ld a, [hli]
push hl
call GetPredefPal
call LoadHLPaletteIntoDE
pop hl
inc hl
pop bc
dec c
jr nz, .loop
ret
GetPredefPal:
ld l, a
ld h, $0
add hl, hl
2016-05-05 12:07:37 -07:00
add hl, hl
add hl, hl
ld bc, Palettes_9df6
add hl, bc
ret
LoadHLPaletteIntoDE:
ld a, [rSVBK]
push af
ld a, $5
ld [rSVBK], a
ld c, $8
.loop
ld a, [hli]
ld [de], a
inc de
dec c
jr nz, .loop
pop af
ld [rSVBK], a
ret
LoadPalette_White_Col1_Col2_Black:
ld a, [rSVBK]
push af
ld a, $5
ld [rSVBK], a
2015-12-16 18:57:42 -08:00
ld a, $7fff % $100
ld [de], a
inc de
2015-12-16 18:57:42 -08:00
ld a, $7fff / $100
ld [de], a
inc de
2015-12-16 18:57:42 -08:00
ld c, 2 * 2
.loop
ld a, [hli]
ld [de], a
inc de
dec c
jr nz, .loop
2015-12-16 18:57:42 -08:00
xor a
ld [de], a
inc de
ld [de], a
inc de
2015-12-16 18:57:42 -08:00
pop af
ld [rSVBK], a
ret
FillBoxCGB:
.row
push bc
push hl
.col
ld [hli], a
dec c
jr nz, .col
pop hl
ld bc, SCREEN_WIDTH
add hl, bc
pop bc
dec b
jr nz, .row
ret
ResetBGPals:
push af
push bc
push de
push hl
ld a, [rSVBK]
push af
ld a, $5
ld [rSVBK], a
2015-11-20 12:15:32 -08:00
ld hl, UnknBGPals
ld c, 8
.loop
ld a, $ff
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
xor a
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
dec c
2015-11-20 12:15:32 -08:00
jr nz, .loop
pop af
ld [rSVBK], a
pop hl
pop de
pop bc
pop af
ret
WipeAttrMap:
hlcoord 0, 0, AttrMap
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
xor a
call ByteFill
ret
ApplyPals:
2015-11-20 12:15:32 -08:00
ld hl, UnknBGPals
ld de, BGPals
2015-12-09 15:25:44 -08:00
ld bc, 16 palettes
ld a, $5
call FarCopyWRAM
ret
ApplyAttrMap:
ld a, [rLCDC]
bit 7, a
2015-12-16 18:57:42 -08:00
jr z, .UpdateVBank1
ld a, [hBGMapMode]
push af
ld a, $2
ld [hBGMapMode], a
call DelayFrame
call DelayFrame
call DelayFrame
call DelayFrame
pop af
ld [hBGMapMode], a
ret
.UpdateVBank1:
hlcoord 0, 0, AttrMap
2015-11-20 08:47:52 -08:00
debgcoord 0, 0
2015-12-16 18:57:42 -08:00
ld b, SCREEN_HEIGHT
ld a, $1
ld [rVBK], a
2015-12-16 18:57:42 -08:00
.row
ld c, SCREEN_WIDTH
.col
ld a, [hli]
ld [de], a
inc de
dec c
2015-12-16 18:57:42 -08:00
jr nz, .col
ld a, BG_MAP_WIDTH - SCREEN_WIDTH
add e
2015-12-16 18:57:42 -08:00
jr nc, .okay
inc d
2015-12-16 18:57:42 -08:00
.okay
ld e, a
dec b
2015-12-16 18:57:42 -08:00
jr nz, .row
ld a, $0
ld [rVBK], a
ret
2015-12-22 19:19:33 -08:00
CGB_ApplyPartyMenuHPPals: ; 96f3 CGB layout $fc
ld hl, wHPPals
ld a, [wSGBPals]
ld e, a
ld d, $0
add hl, de
ld e, l
ld d, h
ld a, [de]
inc a
ld e, a
hlcoord 11, 2, AttrMap
2015-12-22 19:19:33 -08:00
ld bc, 2 * SCREEN_WIDTH
ld a, [wSGBPals]
2015-12-22 19:19:33 -08:00
.loop
and a
2015-12-22 19:19:33 -08:00
jr z, .done
add hl, bc
dec a
2015-12-22 19:19:33 -08:00
jr .loop
.done
lb bc, 2, 8
ld a, e
2015-11-12 21:49:27 -08:00
call FillBoxCGB
ret
InitPartyMenuOBPals:
ld hl, Palettes_b681
2015-11-20 12:15:32 -08:00
ld de, UnknOBPals
2015-12-09 15:25:44 -08:00
ld bc, 2 palettes
ld a, $5
call FarCopyWRAM
ret
GetBattlemonBackpicPalettePointer:
push de
2015-11-06 13:42:38 -08:00
callba GetPartyMonDVs
ld c, l
ld b, h
ld a, [TempBattleMonSpecies]
2015-12-16 18:57:42 -08:00
call GetPlayerOrMonPalettePointer
pop de
ret
GetEnemyFrontpicPalettePointer:
push de
2015-11-06 13:42:38 -08:00
callba GetEnemyMonDVs
ld c, l
ld b, h
ld a, [TempEnemyMonSpecies]
2015-12-16 18:57:42 -08:00
call GetFrontpicPalettePointer
pop de
ret
GetPlayerOrMonPalettePointer:
and a
2015-12-16 18:57:42 -08:00
jp nz, GetMonNormalOrShinyPalettePointer
2015-10-24 07:34:19 -07:00
ld a, [wPlayerSpriteSetupFlags]
2015-11-16 13:01:45 -08:00
bit 2, a ; transformed to male
2015-10-24 07:34:19 -07:00
jr nz, .male
ld a, [PlayerGender]
and a
2015-10-24 07:34:19 -07:00
jr z, .male
ld hl, KrisPalette
ret
2015-10-24 07:34:19 -07:00
.male
ld hl, PlayerPalette
ret
GetFrontpicPalettePointer:
and a
2015-12-16 18:57:42 -08:00
jp nz, GetMonNormalOrShinyPalettePointer
ld a, [TrainerClass]
GetTrainerPalettePointer:
ld l, a
ld h, 0
add hl, hl
add hl, hl
ld bc, TrainerPalettes
add hl, bc
ret
GetMonPalettePointer_:
2015-12-16 18:57:42 -08:00
call GetMonPalettePointer
ret
Function9779: mobile
call CheckCGB
ret z
ld hl, Palettes_979c
ld a, $90
ld [rOBPI], a
2015-12-16 18:57:42 -08:00
ld c, 6 palettes
.loop
ld a, [hli]
ld [rOBPD], a
dec c
2015-12-16 18:57:42 -08:00
jr nz, .loop
ld hl, Palettes_979c
2015-11-20 12:15:32 -08:00
ld de, UnknOBPals + 8 * 2
2015-12-09 15:25:44 -08:00
ld bc, 2 palettes
ld a, $5
call FarCopyWRAM
ret
Palettes_979c:
RGB 31, 31, 31
RGB 25, 25, 25
RGB 13, 13, 13
RGB 00, 00, 00
2015-12-09 15:25:44 -08:00
RGB 31, 31, 31
RGB 31, 31, 07
RGB 31, 16, 01
RGB 00, 00, 00
2015-12-09 15:25:44 -08:00
RGB 31, 31, 31
RGB 31, 19, 24
RGB 30, 10, 06
RGB 00, 00, 00
2015-12-09 15:25:44 -08:00
RGB 31, 31, 31
RGB 12, 25, 01
RGB 05, 14, 00
RGB 00, 00, 00
2015-12-09 15:25:44 -08:00
RGB 31, 31, 31
RGB 08, 12, 31
RGB 01, 04, 31
RGB 00, 00, 00
2015-12-09 15:25:44 -08:00
RGB 31, 31, 31
RGB 24, 18, 07
RGB 20, 15, 03
RGB 00, 00, 00
2015-12-09 15:25:44 -08:00
Function97cc:
; XXX
call CheckCGB
ret z
ld a, $90
ld [rOBPI], a
ld a, $1c
call GetPredefPal
call .PushPalette
ld a, $21
call GetPredefPal
call .PushPalette
ret
.PushPalette:
2015-12-16 18:57:42 -08:00
ld c, 1 palettes
.loop
ld a, [hli]
ld [rOBPD], a
dec c
jr nz, .loop
ret
GetMonPalettePointer:
ld l, a
ld h, $0
add hl, hl
add hl, hl
add hl, hl
ld bc, PokemonPalettes
add hl, bc
ret
GetMonNormalOrShinyPalettePointer:
push bc
2015-12-16 18:57:42 -08:00
call GetMonPalettePointer
pop bc
push hl
call CheckShininess
pop hl
ret nc
2015-07-20 19:18:18 -07:00
rept 4
inc hl
2015-07-20 19:18:18 -07:00
endr
ret
PushSGBPals_:
ld a, [wcfbe]
push af
set 7, a
ld [wcfbe], a
2016-01-04 05:43:55 -08:00
call PushSGBPals
pop af
ld [wcfbe], a
ret
PushSGBPals:
ld a, [hl]
and $7
ret z
ld b, a
.loop
push bc
xor a
ld [rJOYP], a
ld a, $30
ld [rJOYP], a
ld b, $10
.loop2
ld e, $8
ld a, [hli]
ld d, a
.loop3
bit 0, d
ld a, $10
jr nz, .okay
ld a, $20
.okay
ld [rJOYP], a
ld a, $30
ld [rJOYP], a
rr d
dec e
jr nz, .loop3
dec b
jr nz, .loop2
ld a, $20
ld [rJOYP], a
ld a, $30
ld [rJOYP], a
2015-12-22 19:19:33 -08:00
call SGBDelayCycles
pop bc
dec b
jr nz, .loop
ret
2016-05-05 12:07:37 -07:00
InitSGBBorder:
call CheckCGB
ret nz
2016-05-05 12:07:37 -07:00
; SGB/DMG only
di
ld a, [wcfbe]
push af
set 7, a
ld [wcfbe], a
xor a
ld [rJOYP], a
ld [hSGB], a
call PushSGBBorderPalsAndWait
2016-05-05 12:07:37 -07:00
jr nc, .skip
ld a, $1
ld [hSGB], a
call _InitSGBBorderPals
call SGBBorder_PushBGPals
2015-12-22 19:19:33 -08:00
call SGBDelayCycles
call SGB_ClearVRAM
call PushSGBBorder
2015-12-22 19:19:33 -08:00
call SGBDelayCycles
call SGB_ClearVRAM
ld hl, PalPacket_9d66
2016-01-04 05:43:55 -08:00
call PushSGBPals
2016-05-05 12:07:37 -07:00
.skip
pop af
ld [wcfbe], a
ei
ret
2016-05-05 12:07:37 -07:00
InitCGBPals::
call CheckCGB
ret z
2016-05-05 12:07:37 -07:00
; CGB only
ld a, $1
ld [rVBK], a
ld hl, VTiles0
2016-01-04 05:43:55 -08:00
ld bc, $200 tiles
xor a
call ByteFill
ld a, $0
ld [rVBK], a
ld a, $80
ld [rBGPI], a
2016-01-04 05:43:55 -08:00
ld c, 4 * 8
.bgpals_loop
ld a, $7fff % $100
ld [rBGPD], a
2016-01-04 05:43:55 -08:00
ld a, $7fff / $100
ld [rBGPD], a
dec c
2016-01-04 05:43:55 -08:00
jr nz, .bgpals_loop
ld a, $80
ld [rOBPI], a
2016-01-04 05:43:55 -08:00
ld c, 4 * 8
.obpals_loop
ld a, $7fff % $100
ld [rOBPD], a
2016-01-04 05:43:55 -08:00
ld a, $7fff / $100
ld [rOBPD], a
dec c
2016-01-04 05:43:55 -08:00
jr nz, .obpals_loop
ld a, [rSVBK]
push af
ld a, $5
ld [rSVBK], a
2015-11-20 12:15:32 -08:00
ld hl, UnknBGPals
2016-01-04 05:43:55 -08:00
call .LoadWhitePals
ld hl, BGPals
2016-01-04 05:43:55 -08:00
call .LoadWhitePals
pop af
ld [rSVBK], a
ret
.LoadWhitePals:
2016-01-04 05:43:55 -08:00
ld c, 4 * 16
2015-11-20 12:15:32 -08:00
.loop
2016-01-04 05:43:55 -08:00
ld a, $7fff % $100
ld [hli], a
2016-01-04 05:43:55 -08:00
ld a, $7fff / $100
ld [hli], a
dec c
2015-11-20 12:15:32 -08:00
jr nz, .loop
ret
_InitSGBBorderPals:
2016-01-04 05:43:55 -08:00
ld hl, .PalPacketPointerTable
ld c, 9
.loop
push bc
ld a, [hli]
push hl
ld h, [hl]
ld l, a
2016-01-04 05:43:55 -08:00
call PushSGBPals
pop hl
inc hl
pop bc
dec c
2016-01-04 05:43:55 -08:00
jr nz, .loop
ret
.PalPacketPointerTable:
dw PalPacket_9d56
dw PalPacket_9d76
dw PalPacket_9d86
dw PalPacket_9d96
dw PalPacket_9da6
dw PalPacket_9db6
dw PalPacket_9dc6
dw PalPacket_9dd6
dw PalPacket_9de6
Function9911:
; XXX
di
xor a
ld [rJOYP], a
ld hl, PalPacket_9d56
2016-01-04 05:43:55 -08:00
call PushSGBPals
call PushSGBBorder
2015-12-22 19:19:33 -08:00
call SGBDelayCycles
call SGB_ClearVRAM
ld hl, PalPacket_9d66
2016-01-04 05:43:55 -08:00
call PushSGBPals
ei
ret
PushSGBBorder:
2016-01-04 05:43:55 -08:00
call .LoadSGBBorderPointers
push de
call SGBBorder_YetMorePalPushing
pop hl
call SGBBorder_MorePalPushing
ret
.LoadSGBBorderPointers:
2013-12-13 17:49:01 -08:00
ld hl, SGBBorder
ld de, SGBBorderMap
ret
SGB_ClearVRAM:
ld hl, VTiles0
ld bc, $2000
xor a
call ByteFill
ret
PushSGBBorderPalsAndWait:
ld hl, PalPacket_9d26
2016-01-04 05:43:55 -08:00
call PushSGBPals
2015-12-22 19:19:33 -08:00
call SGBDelayCycles
ld a, [rJOYP]
and $3
cp $3
jr nz, .carry
ld a, $20
ld [rJOYP], a
ld a, [rJOYP]
2015-12-26 18:59:03 -08:00
ld a, [rJOYP]
2015-12-22 19:19:33 -08:00
call SGBDelayCycles
call SGBDelayCycles
ld a, $30
ld [rJOYP], a
2015-12-22 19:19:33 -08:00
call SGBDelayCycles
call SGBDelayCycles
ld a, $10
ld [rJOYP], a
2015-07-20 19:18:18 -07:00
rept 6
ld a, [rJOYP]
2015-07-20 19:18:18 -07:00
endr
2015-12-22 19:19:33 -08:00
call SGBDelayCycles
call SGBDelayCycles
ld a, $30
ld [rJOYP], a
ld a, [rJOYP]
ld a, [rJOYP]
ld a, [rJOYP]
2015-12-22 19:19:33 -08:00
call SGBDelayCycles
call SGBDelayCycles
ld a, [rJOYP]
and $3
cp $3
jr nz, .carry
call .FinalPush
and a
ret
.carry
call .FinalPush
scf
ret
.FinalPush:
ld hl, PalPacket_9d16
2016-01-04 05:43:55 -08:00
call PushSGBPals
2015-12-22 19:19:33 -08:00
jp SGBDelayCycles
SGBBorder_PushBGPals:
call DisableLCD
2016-05-05 12:07:37 -07:00
ld a, %11100100
ld [rBGP], a
ld hl, Palettes_9df6
ld de, VTiles1
ld bc, $1000
call CopyData
call DrawDefaultTiles
ld a, $e3
ld [rLCDC], a
ld hl, PalPacket_9d06
2016-01-04 05:43:55 -08:00
call PushSGBPals
xor a
ld [rBGP], a
ret
SGBBorder_MorePalPushing:
call DisableLCD
ld a, $e4
ld [rBGP], a
ld de, VTiles1
2015-11-16 13:01:45 -08:00
ld bc, 20 tiles
call CopyData
2016-01-04 05:43:55 -08:00
ld b, 18
.loop
push bc
2015-12-09 15:25:44 -08:00
ld bc, $c
call CopyData
2015-12-09 15:25:44 -08:00
ld bc, $28
call ClearBytes
2015-12-09 15:25:44 -08:00
ld bc, $c
call CopyData
pop bc
dec b
jr nz, .loop
2015-12-09 15:25:44 -08:00
ld bc, $140
call CopyData
ld bc, Start
call ClearBytes
2015-12-09 15:25:44 -08:00
ld bc, 16 palettes
call CopyData
call DrawDefaultTiles
ld a, $e3
ld [rLCDC], a
ld hl, PalPacket_9d46
2016-01-04 05:43:55 -08:00
call PushSGBPals
xor a
ld [rBGP], a
ret
SGBBorder_YetMorePalPushing:
call DisableLCD
2016-01-04 05:43:55 -08:00
ld a, %11100100
ld [rBGP], a
ld de, VTiles1
ld b, $80
.loop
push bc
2016-01-04 05:43:55 -08:00
ld bc, 1 tiles
call CopyData
2016-01-04 05:43:55 -08:00
ld bc, 1 tiles
call ClearBytes
pop bc
dec b
jr nz, .loop
call DrawDefaultTiles
ld a, $e3
ld [rLCDC], a
ld hl, PalPacket_9d36
2016-01-04 05:43:55 -08:00
call PushSGBPals
xor a
ld [rBGP], a
ret
CopyData: ; 0x9a52
; copy bc bytes of data from hl to de
2016-05-05 12:07:37 -07:00
.loop
ld a, [hli]
ld [de], a
inc de
dec bc
ld a, c
or b
2016-05-05 12:07:37 -07:00
jr nz, .loop
ret
; 0x9a5b
ClearBytes: ; 0x9a5b
; clear bc bytes of data starting from de
2016-05-05 12:07:37 -07:00
.loop
xor a
ld [de], a
inc de
dec bc
ld a, c
or b
2016-05-05 12:07:37 -07:00
jr nz, .loop
ret
; 0x9a64
DrawDefaultTiles: ; 0x9a64
; Draw 240 tiles (2/3 of the screen) from tiles in VRAM
2015-11-20 08:47:52 -08:00
hlbgcoord 0, 0 ; BG Map 0
2016-01-04 05:43:55 -08:00
ld de, BG_MAP_WIDTH - SCREEN_WIDTH
ld a, $80 ; starting tile
ld c, 12 + 1
.line
ld b, 20
.tile
ld [hli], a
inc a
dec b
jr nz, .tile
; next line
add hl, de
dec c
jr nz, .line
ret
; 0x9a7a
SGBDelayCycles:
2015-12-22 19:19:33 -08:00
ld de, 7000
.wait
nop
nop
nop
dec de
ld a, d
or e
2015-12-22 19:19:33 -08:00
jr nz, .wait
ret
BlkPacket_9a86:
db $21, $01, $03, $00, $00, $00, $13, $11, $00, $00, $00, $00, $00, $00, $00, $00
BlkPacket_9a96:
db $21, $01, $07, $05, $00, $0a, $13, $0d, $00, $00, $00, $00, $00, $00, $00, $00
BlkPacket_9aa6:
db $22, $05, $07, $0a, $00, $0c, $13, $11, $03, $05, $01, $00, $0a, $03, $03, $00
db $0a, $08, $13, $0a, $03, $0a, $00, $04, $08, $0b, $03, $0f, $0b, $00, $13, $07
BlkPacket_9ac6:
db $21, $01, $07, $05, $00, $01, $07, $07, $00, $00, $00, $00, $00, $00, $00, $00
BlkPacket_9ad6:
db $21, $01, $07, $05, $0b, $01, $13, $02, $00, $00, $00, $00, $00, $00, $00, $00
BlkPacket_9ae6:
db $21, $01, $07, $05, $01, $01, $08, $08, $00, $00, $00, $00, $00, $00, $00, $00
BlkPacket_9af6:
db $21, $01, $07, $05, $07, $05, $0d, $0b, $00, $00, $00, $00, $00, $00, $00, $00
BlkPacket_9b06:
db $22, $05, $03, $05, $00, $00, $13, $0b, $03, $0a, $00, $04, $13, $09, $02, $0f
db $00, $06, $13, $07, $03, $00, $04, $04, $0f, $09, $03, $00, $00, $0c, $13, $11
BlkPacket_9b26:
db $23, $07, $07, $10, $00, $00, $02, $0c, $02, $00, $0c, $00, $12, $01, $02, $00
db $0c, $02, $12, $03, $02, $00, $0c, $04, $12, $05, $02, $00, $0c, $06, $12, $07
db $02, $00, $0c, $08, $12, $09, $02, $00, $0c, $0a, $12, $0b, $00, $00, $00, $00
BlkPacket_9b56:
db $22, $03, $07, $20, $00, $00, $13, $04, $03, $0f, $00, $06, $13, $11, $03, $05
db $0f, $01, $12, $04, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
BlkPacket_9b76:
db $21, $01, $07, $10, $00, $00, $13, $05, $00, $00, $00, $00, $00, $00, $00, $00
BlkPacket_9b86:
db $21, $02, $07, $0a, $00, $04, $13, $0d, $03, $05, $00, $06, $13, $0b, $00, $00
2015-11-16 13:01:45 -08:00
PalPacket_9b96: db $51, $48, $00, $49, $00, $4a, $00, $4b, $00, $00, $00, $00, $00, $00, $00, $00
PalPacket_9ba6: db $51, $2b, $00, $24, $00, $20, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
PalPacket_9bb6: db $51, $41, $00, $42, $00, $43, $00, $44, $00, $00, $00, $00, $00, $00, $00, $00
PalPacket_9bc6: db $51, $4c, $00, $4c, $00, $4c, $00, $4c, $00, $00, $00, $00, $00, $00, $00, $00
PalPacket_9bd6: db $51, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
PalPacket_9be6: db $51, $36, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
PalPacket_9bf6: db $51, $37, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
PalPacket_9c06: db $51, $38, $00, $39, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
PalPacket_9c16: db $51, $3a, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
PalPacket_9c26: db $51, $3b, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
PalPacket_9c36: db $51, $3c, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
PalPacket_9c46: db $51, $39, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
PalPacket_9c56: db $51, $2e, $00, $2f, $00, $30, $00, $31, $00, $00, $00, $00, $00, $00, $00, $00
PalPacket_9c66: db $51, $1a, $00, $1a, $00, $1a, $00, $1a, $00, $00, $00, $00, $00, $00, $00, $00
PalPacket_9c76: db $51, $32, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
PalPacket_9c86: db $51, $3c, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
PalPacket_9c96: db $51, $3d, $00, $3e, $00, $3f, $00, $40, $00, $00, $00, $00, $00, $00, $00, $00
PalPacket_9ca6: db $51, $33, $00, $34, $00, $1b, $00, $1f, $00, $00, $00, $00, $00, $00, $00, $00
PalPacket_9cb6: db $51, $1b, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
PalPacket_9cc6: db $51, $1c, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
PalPacket_9cd6: db $51, $35, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
PalPacket_9ce6: db $01, $ff, $7f, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
PalPacket_9cf6: db $09, $ff, $7f, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
PalPacket_9d06: db $59, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
PalPacket_9d16: db $89, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
PalPacket_9d26: db $89, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
PalPacket_9d36: db $99, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
PalPacket_9d46: db $a1, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
PalPacket_9d56: db $b9, $01, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
PalPacket_9d66: db $b9, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
PalPacket_9d76: db $79, $5d, $08, $00, $0b, $8c, $d0, $f4, $60, $00, $00, $00, $00, $00, $00, $00
PalPacket_9d86: db $79, $52, $08, $00, $0b, $a9, $e7, $9f, $01, $c0, $7e, $e8, $e8, $e8, $e8, $e0
PalPacket_9d96: db $79, $47, $08, $00, $0b, $c4, $d0, $16, $a5, $cb, $c9, $05, $d0, $10, $a2, $28
PalPacket_9da6: db $79, $3c, $08, $00, $0b, $f0, $12, $a5, $c9, $c9, $c8, $d0, $1c, $a5, $ca, $c9
PalPacket_9db6: db $79, $31, $08, $00, $0b, $0c, $a5, $ca, $c9, $7e, $d0, $06, $a5, $cb, $c9, $7e
PalPacket_9dc6: db $79, $26, $08, $00, $0b, $39, $cd, $48, $0c, $d0, $34, $a5, $c9, $c9, $80, $d0
PalPacket_9dd6: db $79, $1b, $08, $00, $0b, $ea, $ea, $ea, $ea, $ea, $a9, $01, $cd, $4f, $0c, $d0
PalPacket_9de6: db $79, $10, $08, $00, $0b, $4c, $20, $08, $ea, $ea, $ea, $ea, $ea, $60, $ea, $ea
Palettes_9df6:
RGB 31, 31, 31
RGB 22, 25, 19
RGB 16, 21, 30
RGB 00, 00, 00
RGB 31, 31, 31
RGB 27, 28, 31
RGB 15, 20, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 24, 28, 19
RGB 15, 20, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 24, 24, 24
RGB 15, 20, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 21, 23, 31
RGB 15, 20, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 24, 21, 27
RGB 15, 20, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 31, 24, 16
RGB 15, 20, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 25, 30, 26
RGB 15, 20, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 31, 25, 31
RGB 15, 20, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 31, 20, 19
RGB 15, 20, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 31, 26, 19
RGB 15, 20, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 27, 28, 27
RGB 15, 20, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 24, 30, 23
RGB 15, 20, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 29, 24, 29
RGB 15, 20, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 26, 23, 29
RGB 15, 20, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 25, 23, 20
RGB 15, 20, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 29, 26, 18
RGB 15, 20, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 31, 21, 18
RGB 15, 20, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 26, 25, 31
RGB 15, 20, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 22, 21, 31
RGB 15, 20, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 22, 25, 21
RGB 15, 20, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 21, 21, 22
RGB 15, 20, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 31, 20, 20
RGB 15, 20, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 26, 26, 26
RGB 15, 20, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 21, 14, 09
RGB 15, 20, 20
RGB 00, 00, 00
RGB 31, 31, 31
RGB 12, 28, 22
RGB 15, 20, 20
RGB 00, 00, 00
RGB 31, 31, 31
RGB 07, 07, 07
RGB 02, 03, 03
RGB 00, 00, 00
RGB 31, 31, 31
RGB 30, 22, 17
RGB 16, 14, 19
RGB 00, 00, 00
RGB 31, 31, 31
RGB 18, 20, 27
RGB 11, 15, 23
RGB 00, 00, 00
RGB 31, 31, 31
RGB 31, 20, 10
RGB 26, 10, 06
RGB 00, 00, 00
RGB 31, 31, 31
RGB 21, 25, 29
RGB 14, 19, 25
RGB 00, 00, 00
RGB 31, 31, 31
RGB 27, 22, 24
RGB 21, 15, 23
RGB 00, 00, 00
RGB 31, 31, 31
RGB 28, 20, 15
RGB 21, 14, 09
RGB 00, 00, 00
RGB 31, 31, 31
RGB 20, 26, 16
RGB 09, 20, 11
RGB 00, 00, 00
RGB 31, 31, 31
RGB 30, 22, 24
RGB 28, 15, 21
RGB 00, 00, 00
RGB 31, 31, 31
RGB 31, 28, 14
RGB 26, 20, 00
RGB 00, 00, 00
RGB 31, 31, 31
RGB 26, 21, 22
RGB 15, 15, 18
RGB 00, 00, 00
RGB 31, 31, 31
RGB 23, 19, 13
RGB 14, 12, 17
RGB 00, 00, 00
RGB 31, 31, 31
RGB 16, 18, 21
RGB 10, 12, 18
RGB 00, 00, 00
RGB 31, 31, 31
RGB 22, 15, 16
RGB 17, 02, 05
RGB 00, 00, 00
RGB 31, 31, 31
RGB 15, 20, 20
RGB 05, 16, 16
RGB 00, 00, 00
RGB 31, 31, 31
RGB 23, 15, 19
RGB 14, 04, 12
RGB 00, 00, 00
RGB 31, 31, 31
RGB 20, 17, 18
RGB 18, 13, 11
RGB 00, 00, 00
RGB 31, 31, 31
RGB 23, 21, 16
RGB 12, 12, 10
RGB 00, 00, 00
RGB 31, 31, 31
RGB 21, 25, 29
RGB 30, 22, 24
RGB 00, 00, 00
RGB 31, 31, 31
RGB 26, 23, 16
RGB 29, 14, 09
RGB 00, 00, 00
RGB 31, 31, 31
RGB 18, 18, 18
RGB 10, 10, 10
RGB 00, 00, 00
RGB 31, 31, 31
RGB 30, 26, 15
RGB 00, 23, 00
RGB 00, 00, 00
RGB 31, 31, 31
RGB 30, 26, 15
RGB 31, 23, 00
RGB 00, 00, 00
RGB 31, 31, 31
RGB 30, 26, 15
RGB 31, 00, 00
RGB 00, 00, 00
RGB 31, 31, 31
RGB 29, 26, 19
RGB 27, 20, 14
RGB 00, 00, 00
RGB 31, 31, 31
RGB 24, 20, 10
RGB 21, 00, 04
RGB 00, 00, 00
RGB 31, 31, 31
RGB 31, 20, 10
RGB 21, 00, 04
RGB 00, 00, 00
RGB 31, 31, 31
RGB 30, 26, 16
RGB 16, 12, 09
RGB 00, 00, 00
RGB 31, 31, 31
RGB 15, 28, 26
RGB 12, 22, 26
RGB 03, 16, 14
RGB 31, 31, 31
RGB 15, 28, 26
RGB 23, 24, 24
RGB 00, 00, 00
RGB 31, 31, 24
RGB 07, 27, 19
RGB 26, 20, 10
RGB 19, 12, 08
RGB 31, 31, 31
RGB 31, 28, 14
RGB 31, 13, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 16, 18, 21
RGB 10, 12, 18
RGB 00, 00, 00
RGB 31, 31, 31
RGB 23, 21, 16
RGB 12, 12, 10
RGB 00, 00, 00
RGB 31, 31, 31
RGB 31, 14, 00
RGB 07, 11, 15
RGB 00, 00, 00
RGB 31, 31, 31
RGB 26, 21, 22
RGB 26, 10, 06
RGB 00, 00, 00
RGB 31, 31, 31
RGB 30, 27, 04
RGB 24, 20, 11
RGB 00, 00, 00
RGB 31, 31, 31
RGB 31, 13, 25
RGB 24, 20, 11
RGB 00, 00, 00
RGB 31, 31, 31
RGB 16, 19, 29
RGB 24, 20, 11
RGB 00, 00, 00
RGB 31, 31, 31
RGB 30, 22, 24
RGB 18, 18, 18
RGB 16, 10, 07
RGB 31, 31, 31
RGB 21, 25, 29
RGB 18, 18, 18
RGB 16, 10, 07
RGB 31, 31, 31
RGB 20, 26, 16
RGB 18, 18, 18
RGB 16, 10, 07
RGB 31, 31, 31
RGB 31, 28, 14
RGB 18, 18, 18
RGB 16, 10, 07
RGB 31, 31, 31
RGB 18, 18, 18
RGB 26, 10, 06
RGB 00, 00, 00
RGB 31, 31, 31
RGB 30, 22, 24
RGB 28, 15, 21
RGB 00, 00, 00
RGB 31, 31, 31
RGB 26, 20, 00
RGB 16, 19, 29
RGB 00, 00, 00
RGB 31, 31, 31
RGB 16, 02, 30
RGB 15, 20, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 16, 13, 04
RGB 15, 20, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 28, 04, 02
RGB 15, 20, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 18, 23, 31
RGB 15, 20, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 24, 20, 11
RGB 18, 13, 11
RGB 00, 00, 00
RGB 31, 31, 31
RGB 31, 31, 31
RGB 25, 30, 00
RGB 25, 30, 00
RGB 00, 00, 00
RGB 08, 11, 11
RGB 21, 21, 21
RGB 31, 31, 31
2015-12-09 15:25:44 -08:00
SGBBorderMap:
db $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $14, $14, $15, $14, $16, $14, $17, $14, $17, $54, $16, $54, $15, $54, $14, $54, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14
db $01, $14, $02, $14, $03, $14, $03, $54, $02, $54, $01, $54, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $24, $14, $25, $14, $26, $14, $07, $14, $07, $54, $26, $54, $25, $54, $24, $54, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $54, $01, $14, $02, $14, $03, $14, $03, $54, $02, $54, $01, $54
db $11, $14, $12, $14, $13, $14, $13, $54, $12, $54, $11, $54, $10, $54, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $24, $14, $34, $14, $35, $14, $35, $54, $34, $54, $33, $54, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $10, $14, $11, $14, $12, $14, $13, $14, $13, $54, $12, $54, $11, $54
db $21, $14, $22, $14, $23, $14, $23, $54, $22, $54, $21, $54, $20, $54, $07, $14, $08, $14, $09, $14, $0a, $14, $0b, $14, $0c, $14, $0d, $14, $07, $14, $07, $14, $18, $14, $09, $14, $1a, $14, $1b, $14, $0d, $14, $0c, $14, $1c, $14, $29, $14, $07, $14, $20, $14, $21, $14, $22, $14, $23, $14, $23, $54, $22, $54, $21, $54
db $31, $14, $32, $14, $07, $14, $07, $14, $32, $54, $36, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $38, $10, $27, $10, $32, $14, $07, $54, $07, $54, $32, $54, $31, $54
db $05, $14, $06, $14, $07, $14, $07, $54, $06, $54, $1f, $10, $37, $10, $06, $14, $07, $14, $07, $54, $06, $54, $05, $54
db $15, $14, $16, $14, $17, $14, $17, $54, $16, $54, $1f, $10, $37, $10, $16, $14, $17, $14, $17, $54, $16, $54, $15, $54
db $25, $14, $26, $14, $07, $14, $07, $54, $26, $54, $1f, $10, $37, $10, $26, $14, $07, $14, $07, $54, $26, $54, $25, $54
db $33, $14, $34, $14, $35, $14, $35, $54, $34, $54, $1f, $10, $37, $10, $34, $14, $35, $14, $35, $54, $34, $54, $33, $54
db $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $1f, $10, $37, $10, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14
db $02, $54, $01, $54, $07, $54, $07, $14, $07, $14, $1f, $10, $37, $10, $07, $14, $07, $14, $07, $14, $01, $14, $02, $14
db $12, $54, $11, $54, $10, $54, $07, $14, $07, $14, $1f, $10, $37, $10, $07, $14, $07, $14, $10, $14, $11, $14, $12, $14
db $22, $54, $21, $54, $20, $54, $07, $14, $07, $14, $1f, $10, $37, $10, $07, $14, $07, $14, $20, $14, $21, $14, $22, $14
db $32, $54, $31, $54, $30, $54, $07, $14, $07, $14, $1f, $10, $37, $10, $07, $14, $07, $14, $30, $14, $31, $14, $32, $14
db $06, $54, $05, $54, $04, $54, $07, $14, $07, $14, $1f, $10, $37, $10, $07, $14, $07, $14, $04, $14, $05, $14, $06, $14
db $16, $54, $15, $54, $14, $54, $07, $14, $07, $14, $1f, $10, $37, $10, $07, $14, $07, $14, $14, $14, $15, $14, $16, $14
db $26, $54, $25, $54, $24, $54, $07, $14, $07, $14, $1f, $10, $37, $10, $07, $14, $07, $14, $24, $14, $25, $14, $26, $14
db $34, $54, $33, $54, $07, $54, $07, $14, $07, $14, $1f, $10, $37, $10, $07, $14, $07, $14, $07, $14, $33, $14, $34, $14
db $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $1f, $10, $37, $10, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14
db $01, $14, $02, $14, $03, $14, $03, $54, $02, $54, $1f, $10, $37, $10, $02, $14, $03, $14, $03, $54, $02, $54, $01, $54
db $11, $14, $12, $14, $13, $14, $13, $54, $12, $54, $1f, $10, $37, $10, $12, $14, $13, $14, $13, $54, $12, $54, $11, $54
db $21, $14, $22, $14, $23, $14, $23, $54, $22, $54, $1f, $10, $37, $10, $22, $14, $23, $14, $23, $54, $22, $54, $21, $54
db $31, $14, $32, $14, $07, $14, $07, $14, $32, $54, $1f, $10, $37, $10, $32, $14, $07, $54, $07, $54, $32, $54, $31, $54
db $05, $14, $06, $14, $07, $14, $07, $54, $06, $54, $2e, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2f, $10, $2d, $10, $06, $14, $07, $14, $07, $54, $06, $54, $05, $54
db $15, $14, $16, $14, $17, $14, $17, $54, $16, $54, $15, $54, $14, $54, $07, $14, $07, $14, $39, $14, $0e, $14, $09, $14, $0f, $14, $28, $14, $07, $14, $19, $14, $0c, $14, $1c, $14, $29, $14, $2a, $14, $2b, $14, $2c, $14, $39, $14, $07, $14, $07, $14, $14, $14, $15, $14, $16, $14, $17, $14, $17, $54, $16, $54, $15, $54
db $25, $14, $26, $14, $07, $14, $07, $54, $26, $54, $25, $54, $24, $54, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $01, $14, $02, $14, $03, $14, $03, $54, $02, $54, $01, $54, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $24, $14, $25, $14, $26, $14, $07, $14, $07, $54, $26, $54, $25, $54
db $33, $14, $34, $14, $35, $14, $35, $54, $34, $54, $24, $54, $07, $54, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $10, $14, $11, $14, $12, $14, $13, $14, $13, $54, $12, $54, $11, $54, $10, $54, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $24, $14, $34, $14, $35, $14, $35, $54, $34, $54, $33, $54
db $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $20, $14, $21, $14, $22, $14, $23, $14, $23, $54, $22, $54, $21, $54, $20, $54, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14, $07, $14
SGBBorderPalettes:
2014-03-01 22:22:33 -08:00
RGB 24, 06, 06
RGB 24, 24, 26
RGB 14, 15, 20
RGB 04, 07, 10
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 18, 24, 18
RGB 31, 26, 15
RGB 26, 19, 10
RGB 12, 07, 05
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 18, 06, 31
RGB 31, 31, 29
RGB 31, 12, 00
RGB 00, 00, 00
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 12, 31, 06
RGB 22, 26, 30
RGB 16, 17, 21
RGB 00, 03, 00
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
2015-12-09 15:25:44 -08:00
SGBBorder:
INCBIN "gfx/misc/sgb_border.2bpp"
Palettes_a8be:
RGB 30, 26, 15
RGB 00, 23, 00
RGB 30, 26, 15
RGB 31, 21, 00
RGB 30, 26, 15
RGB 31, 00, 00
Palettes_a8ca:
RGB 30, 26, 15
RGB 04, 17, 31
INCLUDE "gfx/pics/palette_pointers.asm"
INCLUDE "gfx/trainers/palette_pointers.asm"
LoadMapPals:
2015-11-12 08:10:19 -08:00
callba LoadSpecialMapPalette
jr c, .got_pals
; Which palette group is based on whether we're outside or inside
ld a, [wPermission]
2014-03-01 22:22:33 -08:00
and 7
ld e, a
2014-03-01 22:22:33 -08:00
ld d, 0
ld hl, .TilesetColorsPointers
add hl, de
2015-12-26 18:59:03 -08:00
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
; Futher refine by time of day
ld a, [TimeOfDayPal]
2014-03-01 22:22:33 -08:00
and 3
add a
add a
add a
ld e, a
2014-03-01 22:22:33 -08:00
ld d, 0
add hl, de
ld e, l
ld d, h
; Switch to palettes WRAM bank
ld a, [rSVBK]
push af
ld a, $5
ld [rSVBK], a
2015-11-20 12:15:32 -08:00
ld hl, UnknBGPals
ld b, 8
.outer_loop
ld a, [de] ; lookup index for TilesetBGPalette
push de
push hl
ld l, a
2014-03-01 22:22:33 -08:00
ld h, 0
add hl, hl
add hl, hl
add hl, hl
ld de, TilesetBGPalette
add hl, de
ld e, l
ld d, h
pop hl
ld c, 1 palettes
.inner_loop
ld a, [de]
inc de
ld [hli], a
dec c
jr nz, .inner_loop
pop de
inc de
dec b
jr nz, .outer_loop
pop af
ld [rSVBK], a
.got_pals
ld a, [TimeOfDayPal]
2014-03-01 22:22:33 -08:00
and 3
ld bc, 8 palettes
ld hl, MapObjectPals
call AddNTimes
2015-11-20 12:15:32 -08:00
ld de, UnknOBPals
ld bc, 8 palettes
2015-11-20 12:15:32 -08:00
ld a, $5 ; BANK(UnknOBPals)
call FarCopyWRAM
ld a, [wPermission]
cp TOWN
jr z, .outside
cp ROUTE
ret nz
.outside
ld a, [MapGroup]
ld l, a
ld h, 0
add hl, hl
add hl, hl
add hl, hl
ld de, RoofPals
add hl, de
ld a, [TimeOfDayPal]
and 3
cp NITE
jr c, .morn_day
2015-07-20 19:18:18 -07:00
rept 4
inc hl
2015-07-20 19:18:18 -07:00
endr
.morn_day
ld de, UnknBGPals + 6 palettes + 2
ld bc, 4
ld a, $5
call FarCopyWRAM
ret
.TilesetColorsPointers:
dw .OutdoorColors ; unused
dw .OutdoorColors ; TOWN
dw .OutdoorColors ; ROUTE
dw .IndoorColors ; INDOOR
dw .DungeonColors ; CAVE
dw .Perm5Colors ; PERM_5
dw .IndoorColors ; GATE
dw .DungeonColors ; DUNGEON
; Valid indices: $00 - $29
.OutdoorColors:
db $00, $01, $02, $28, $04, $05, $06, $07 ; morn
db $08, $09, $0a, $28, $0c, $0d, $0e, $0f ; day
db $10, $11, $12, $29, $14, $15, $16, $17 ; nite
db $18, $19, $1a, $1b, $1c, $1d, $1e, $1f ; dark
.IndoorColors:
db $20, $21, $22, $23, $24, $25, $26, $07 ; morn
db $20, $21, $22, $23, $24, $25, $26, $07 ; day
db $10, $11, $12, $13, $14, $15, $16, $07 ; nite
db $18, $19, $1a, $1b, $1c, $1d, $1e, $07 ; dark
.DungeonColors:
db $00, $01, $02, $03, $04, $05, $06, $07 ; morn
db $08, $09, $0a, $0b, $0c, $0d, $0e, $0f ; day
db $10, $11, $12, $13, $14, $15, $16, $17 ; nite
db $18, $19, $1a, $1b, $1c, $1d, $1e, $1f ; dark
.Perm5Colors:
db $00, $01, $02, $03, $04, $05, $06, $07 ; morn
db $08, $09, $0a, $0b, $0c, $0d, $0e, $0f ; day
db $10, $11, $12, $13, $14, $15, $16, $17 ; nite
db $18, $19, $1a, $1b, $1c, $1d, $1e, $1f ; dark
2014-03-01 22:22:33 -08:00
Palette_b309: ; b309 mobile
2014-03-01 22:22:33 -08:00
RGB 31, 31, 31
RGB 31, 19, 24
RGB 30, 10, 06
RGB 00, 00, 00
2015-12-09 15:25:44 -08:00
Palette_b311: ; b311 not mobile
2014-03-01 22:22:33 -08:00
RGB 31, 31, 31
RGB 17, 19, 31
RGB 14, 16, 31
RGB 00, 00, 00
2015-12-09 15:25:44 -08:00
TilesetBGPalette:
INCLUDE "tilesets/bg.pal"
MapObjectPals::
INCLUDE "tilesets/ob.pal"
RoofPals:
INCLUDE "tilesets/roof.pal"
2016-06-06 15:23:00 -07:00
DiplomaPalettes:
RGB 27, 31, 27
RGB 21, 21, 21
RGB 13, 13, 13
RGB 00, 00, 00
RGB 27, 31, 27
RGB 31, 07, 06
RGB 20, 02, 03
RGB 00, 00, 00
RGB 27, 31, 27
RGB 10, 31, 09
RGB 04, 14, 01
RGB 00, 00, 00
RGB 27, 31, 27
RGB 08, 12, 31
RGB 01, 04, 31
RGB 00, 00, 00
RGB 27, 31, 27
RGB 31, 31, 07
RGB 31, 16, 01
RGB 00, 00, 00
RGB 27, 31, 27
RGB 22, 16, 08
RGB 13, 07, 01
RGB 00, 00, 00
RGB 27, 31, 27
RGB 15, 31, 31
RGB 05, 17, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 11, 11, 19
RGB 07, 07, 12
RGB 00, 00, 00
2015-12-09 15:25:44 -08:00
Palettes_b681:
RGB 27, 31, 27
RGB 31, 19, 10
RGB 31, 07, 04
RGB 00, 00, 00
RGB 27, 31, 27
RGB 31, 19, 10
RGB 10, 14, 20
RGB 00, 00, 00
RGB 27, 31, 27
RGB 31, 19, 10
RGB 31, 07, 04
RGB 00, 00, 00
RGB 27, 31, 27
RGB 31, 19, 10
RGB 31, 07, 04
RGB 00, 00, 00
RGB 27, 31, 27
RGB 31, 19, 10
RGB 31, 07, 04
RGB 00, 00, 00
RGB 27, 31, 27
RGB 31, 19, 10
RGB 31, 07, 04
RGB 00, 00, 00
RGB 27, 31, 27
RGB 31, 19, 10
RGB 31, 07, 04
RGB 00, 00, 00
RGB 27, 31, 27
RGB 31, 19, 10
RGB 31, 07, 04
RGB 00, 00, 00
RGB 31, 31, 31
RGB 21, 21, 21
RGB 13, 13, 13
RGB 07, 07, 07
RGB 31, 31, 31
RGB 31, 31, 07
RGB 31, 16, 01
RGB 07, 07, 07
RGB 31, 31, 31
RGB 31, 19, 24
RGB 30, 10, 06
RGB 07, 07, 07
RGB 31, 31, 31
RGB 12, 25, 01
RGB 05, 14, 00
RGB 07, 07, 07
RGB 31, 31, 31
RGB 08, 12, 31
RGB 01, 04, 31
RGB 07, 07, 07
RGB 31, 31, 31
RGB 24, 18, 07
RGB 20, 15, 03
RGB 07, 07, 07
Palettes_b6f1:
RGB 31, 31, 31
RGB 18, 23, 31
RGB 15, 20, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 22, 00, 31
RGB 15, 20, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 31, 00, 00
RGB 15, 20, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 25, 22, 00
RGB 15, 20, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 23, 26, 31
RGB 18, 23, 31
RGB 00, 00, 00
Palettes_b719:
RGB 31, 31, 31
RGB 07, 06, 03
RGB 07, 06, 03
RGB 07, 06, 03
RGB 31, 31, 31
RGB 31, 31, 00
RGB 26, 22, 00
RGB 00, 00, 00
2015-12-09 15:25:44 -08:00
MalePokegearPals:
2014-03-01 22:22:33 -08:00
RGB 28, 31, 20
RGB 21, 21, 21
RGB 13, 13, 13
RGB 00, 00, 00
RGB 28, 31, 20
RGB 00, 31, 00
RGB 00, 00, 31
RGB 00, 00, 00
RGB 28, 31, 20
RGB 00, 31, 00
RGB 15, 07, 00
RGB 00, 00, 00
RGB 28, 31, 20
RGB 31, 15, 00
RGB 15, 07, 00
RGB 00, 00, 00
RGB 28, 31, 20
RGB 00, 31, 00
RGB 00, 00, 31
RGB 31, 00, 00
RGB 28, 31, 20
RGB 00, 31, 00
RGB 15, 07, 00
RGB 31, 00, 00
2015-12-09 15:25:44 -08:00
FemalePokegearPals:
2014-03-01 22:22:33 -08:00
RGB 28, 31, 20
RGB 21, 21, 21
RGB 13, 13, 13
RGB 00, 00, 00
RGB 28, 31, 20
RGB 00, 31, 00
RGB 00, 00, 31
RGB 00, 00, 00
RGB 28, 31, 20
RGB 00, 31, 00
RGB 15, 07, 00
RGB 00, 00, 00
RGB 28, 31, 20
RGB 10, 18, 31
RGB 13, 06, 31
RGB 00, 00, 00
RGB 28, 31, 20
RGB 00, 31, 00
RGB 00, 00, 31
RGB 31, 00, 00
RGB 28, 31, 20
RGB 00, 31, 00
RGB 15, 07, 00
RGB 31, 00, 00
2015-12-09 15:25:44 -08:00
Palettes_b789:
2014-03-01 22:22:33 -08:00
RGB 31, 31, 31
RGB 30, 22, 24
RGB 18, 18, 18
RGB 00, 00, 00
RGB 31, 31, 31
RGB 10, 11, 31
RGB 18, 18, 18
RGB 00, 00, 00
RGB 31, 31, 31
RGB 12, 31, 11
RGB 18, 18, 18
RGB 00, 00, 00
RGB 31, 31, 31
RGB 29, 26, 05
RGB 18, 18, 18
RGB 00, 00, 00
2015-12-09 15:25:44 -08:00
2017-12-10 17:50:08 -08:00
SlotMachinePals:
RGB 31, 31, 31
RGB 24, 25, 28
RGB 24, 24, 09
RGB 00, 00, 00
RGB 31, 31, 31
RGB 30, 10, 06
RGB 24, 24, 09
RGB 00, 00, 00
RGB 31, 31, 31
RGB 15, 31, 00
RGB 24, 24, 09
RGB 00, 00, 00
RGB 31, 31, 31
RGB 31, 15, 31
RGB 24, 24, 09
RGB 00, 00, 00
RGB 31, 31, 31
RGB 15, 21, 31
RGB 24, 24, 09
RGB 00, 00, 00
RGB 31, 31, 11
RGB 31, 31, 06
RGB 24, 24, 09
RGB 00, 00, 00
RGB 31, 31, 31
RGB 16, 19, 29
RGB 25, 22, 00
RGB 00, 00, 00
RGB 31, 31, 31
RGB 21, 21, 21
RGB 13, 13, 13
RGB 00, 00, 00
RGB 31, 31, 31
RGB 30, 10, 06
RGB 31, 00, 00
RGB 00, 00, 00
RGB 31, 31, 31
RGB 12, 25, 01
RGB 05, 14, 00
RGB 00, 00, 00
RGB 31, 31, 31
RGB 12, 25, 01
RGB 30, 10, 06
RGB 00, 00, 00
RGB 31, 31, 31
RGB 31, 31, 06
RGB 20, 15, 03
RGB 00, 00, 00
RGB 31, 31, 31
RGB 31, 31, 06
RGB 15, 21, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 31, 31, 06
RGB 20, 15, 03
RGB 00, 00, 00
RGB 31, 31, 31
RGB 31, 24, 21
RGB 31, 13, 31
RGB 00, 00, 00
RGB 31, 31, 31
RGB 31, 31, 31
RGB 00, 00, 00
RGB 00, 00, 00
2015-12-09 15:25:44 -08:00