Skip to content

Commit 5d9fdf0

Browse files
committed
Add separate table for shiny palettes
1 parent acd3d24 commit 5d9fdf0

8 files changed

+1492
-345
lines changed

color/color.asm

+59-86
Original file line numberDiff line numberDiff line change
@@ -103,15 +103,45 @@ SetPal_Battle_Common:
103103
ld b,a
104104
xor a
105105
ld [rSVBK],a
106-
jr .getEnemyMonPal
106+
jr .loadPlayerPal
107107

108108
.getBattleMonPal
109109
ld a, [wBattleMonSpecies] ; player Pokemon ID
110110
call DeterminePaletteIDBack
111+
ld d, a
112+
113+
.loadPlayerPal
114+
; Save ID
115+
ld a, [wBattleMonSpecies]
111116
ld b, a
112117

118+
ld a,$02
119+
ld [rSVBK],a
120+
121+
; Save the player mon's palette in case it transforms later
122+
ld a,d
123+
ld [W2_BattleMonPalette],a
124+
125+
; Player palette
126+
ld a,b
127+
ld e,0
128+
and a
129+
jr z, .loadTrainerPal
130+
ld a, [wShinyMonFlag]
131+
bit 0, a
132+
jr z, .notShiny
133+
callba LoadShinyPokemonPalette
134+
jr .getEnemyMonPal
135+
.notShiny
136+
callba LoadPokemonPalette
137+
jr .getEnemyMonPal
138+
.loadTrainerPal
139+
callba LoadTrainerPalette
140+
113141
.getEnemyMonPal
114-
push bc
142+
xor a
143+
ld [rSVBK],a
144+
115145
ld hl, wShinyMonFlag
116146
res 0, [hl]
117147
ld a, [wEnemyMonSpecies2]
@@ -129,44 +159,26 @@ SetPal_Battle_Common:
129159

130160
ld a, [wEnemyMonSpecies2] ; enemy Pokemon ID (without transform effect?)
131161
call DeterminePaletteID
132-
pop bc
133-
ld c, a
134-
135-
; Save both IDs
136-
ld a, [wBattleMonSpecies]
137162
ld d, a
163+
164+
; Save ID
138165
ld a, [wEnemyMonSpecies2]
139-
ld e, a
166+
ld b, a
140167

141168
ld a,$02
142169
ld [rSVBK],a
143170

144-
; Save the player mon's palette in case it transforms later
145-
ld a,b
146-
ld [W2_BattleMonPalette],a
147-
ld a, e
148-
push af
149-
ld a, d
150-
151-
; Player palette
152-
push bc
153-
ld d,b
154-
ld e,0
155-
and a
156-
jr z, .loadTrainerPal
157-
callba LoadPokemonPalette
158-
jr .loadEnemyPal
159-
.loadTrainerPal
160-
callba LoadTrainerPalette
161-
162171
; Enemy palette
163-
.loadEnemyPal
164-
pop bc
165-
pop af
166-
ld d,c
172+
ld a,b
167173
ld e,1
168174
and a
169175
jr z, .loadTrainerPal2
176+
ld a, [wShinyMonFlag]
177+
bit 0, a
178+
jr z, .notShiny2
179+
callba LoadShinyPokemonPalette
180+
jr .loadLifebarPal
181+
.notShiny2
170182
callba LoadPokemonPalette
171183
jr .loadLifebarPal
172184
.loadTrainerPal2
@@ -304,6 +316,7 @@ SetPal_TownMap:
304316
ret
305317

306318
; Status screen
319+
; [wShinyMonFlag] must be appropriately set before this is called
307320
SetPal_StatusScreen:
308321
ld a, [wcf91]
309322
cp NUM_POKEMON + 1
@@ -333,7 +346,14 @@ SetPal_StatusScreen:
333346
pop af
334347
ld d,a
335348
ld e,0
349+
ld a, [wShinyMonFlag]
350+
bit 0, a
351+
jr z, .notShiny
352+
callba LoadShinyPokemonPalette
353+
jr .afterMon
354+
.notShiny
336355
callba LoadPokemonPalette
356+
.afterMon
337357

338358

339359
; Set palette map
@@ -734,6 +754,8 @@ SetPal_PartyMenu:
734754
; 0: calculate palette based on loaded pokemon
735755
; 1: make palettes black
736756
; 2: previously used during trades, now unused.
757+
;
758+
; [wShinyMonFlag] must be appropriately set before this is called
737759
SetPal_PokemonWholeScreen:
738760
ld a, c
739761
dec a
@@ -753,7 +775,14 @@ SetPal_PokemonWholeScreen:
753775
ld [rSVBK],a
754776

755777
ld e,0
778+
ld a, [wShinyMonFlag]
779+
bit 0, a
780+
jr z, .notShiny
781+
callba LoadShinyPokemonPalette
782+
jr .afterMon
783+
.notShiny
756784
callba LoadPokemonPalette
785+
.afterMon
757786

758787
ld d, PAL_MEWMON
759788
ld e, 1
@@ -1076,34 +1105,6 @@ SetPal_VersionScreen:
10761105
ld e, 1
10771106
callba LoadPokemonPalette
10781107

1079-
ld d, PAL_MEWMON
1080-
ld e, 2
1081-
push de
1082-
.loop
1083-
callba LoadSGBPalette
1084-
pop de
1085-
ld a, e
1086-
inc a
1087-
ld e, a
1088-
push de
1089-
cp 8
1090-
jr nz, .loop
1091-
pop de
1092-
1093-
ld d, PAL_MEWMON
1094-
ld e, 0
1095-
push de
1096-
.loop_sprites
1097-
callba LoadSGBPalette_Sprite
1098-
pop de
1099-
ld a, e
1100-
inc a
1101-
ld e, a
1102-
push de
1103-
cp 8
1104-
jr nz, .loop_sprites
1105-
pop de
1106-
11071108
xor a
11081109
ld [W2_TileBasedPalettes],a
11091110
ld hl, W2_TilesetPaletteMap
@@ -1137,34 +1138,6 @@ SetPal_GenderSelect:
11371138
ld e, 1
11381139
callba LoadTrainerPalette
11391140

1140-
ld d, PAL_MEWMON
1141-
ld e, 2
1142-
push de
1143-
.loop
1144-
callba LoadSGBPalette
1145-
pop de
1146-
ld a, e
1147-
inc a
1148-
ld e, a
1149-
push de
1150-
cp 8
1151-
jr nz, .loop
1152-
pop de
1153-
1154-
ld d, PAL_MEWMON
1155-
ld e, 0
1156-
push de
1157-
.loop_sprites
1158-
callba LoadSGBPalette_Sprite
1159-
pop de
1160-
ld a, e
1161-
inc a
1162-
ld e, a
1163-
push de
1164-
cp 8
1165-
jr nz, .loop_sprites
1166-
pop de
1167-
11681141
xor a
11691142
ld [W2_TileBasedPalettes],a
11701143
ld hl, W2_TilesetPaletteMap

color/super_palettes.asm

+28-70
Original file line numberDiff line numberDiff line change
@@ -1,118 +1,76 @@
11
; Note: after calling this, you may need to set W2_ForceBGPUpdate/ForceOBPUpdate to nonzero.
22
; d = palette to load (see constants/palette_constants.), e = palette index
33
LoadSGBPalette:
4-
ld a,[rSVBK]
5-
ld b,a
6-
ld a,2
7-
ld [rSVBK],a
8-
push bc
9-
10-
ld a,e
11-
ld l,d
12-
ld h,0
13-
add hl
14-
add hl
15-
add hl
16-
ld de,SuperPalettes
17-
add hl,de
18-
19-
ld de,W2_BgPaletteData
20-
jr startPaletteTransfer
4+
ld hl, SuperPalettes
5+
jr LoadPalette
216

227
LoadPokemonPalette:
23-
ld a,[rSVBK]
24-
ld b,a
25-
ld a,2
26-
ld [rSVBK],a
27-
push bc
28-
29-
ld a,e
30-
ld l,d
31-
ld h,0
32-
add hl
33-
add hl
34-
add hl
35-
ld de,PokemonPaletteTable
36-
add hl,de
8+
ld hl, PokemonPaletteTable
9+
jr LoadPalette
3710

38-
ld de,W2_BgPaletteData
39-
jr startPaletteTransfer
11+
LoadShinyPokemonPalette:
12+
ld hl, ShinyPokemonPaletteTable
13+
jr LoadPalette
4014

4115
LoadTrainerPalette:
16+
ld hl, TrainerPaletteTable
17+
jr LoadPalette
18+
19+
LoadPalette:
4220
ld a,[rSVBK]
4321
ld b,a
4422
ld a,2
4523
ld [rSVBK],a
4624
push bc
4725

26+
push hl
4827
ld a,e
4928
ld l,d
5029
ld h,0
5130
add hl
5231
add hl
5332
add hl
54-
ld de,TrainerPaletteTable
33+
pop de
5534
add hl,de
5635

5736
ld de,W2_BgPaletteData
58-
jr startPaletteTransfer
37+
jp startPaletteTransfer
5938

6039
LoadSGBPalette_Sprite:
61-
ld a,[rSVBK]
62-
ld b,a
63-
ld a,2
64-
ld [rSVBK],a
65-
push bc
66-
67-
ld a,e
68-
ld l,d
69-
ld h,0
70-
add hl
71-
add hl
72-
add hl
73-
ld de,SuperPalettes
74-
add hl,de
75-
76-
ld de,W2_BgPaletteData + $40
77-
jr startPaletteTransfer
40+
ld hl, SuperPalettes
41+
jr LoadPalette_Sprite
7842

7943
LoadPokemonPalette_Sprite:
80-
ld a,[rSVBK]
81-
ld b,a
82-
ld a,2
83-
ld [rSVBK],a
84-
push bc
85-
86-
ld a,e
87-
ld l,d
88-
ld h,0
89-
add hl
90-
add hl
91-
add hl
92-
ld de,PokemonPaletteTable
93-
add hl,de
44+
ld hl, PokemonPaletteTable
45+
jr LoadPalette_Sprite
9446

95-
ld de,W2_BgPaletteData + $40
96-
jr startPaletteTransfer
47+
LoadShinyPokemonPalette_Sprite:
48+
ld hl, ShinyPokemonPaletteTable
49+
jr LoadPalette_Sprite
9750

9851
LoadTrainerPalette_Sprite:
52+
ld hl, TrainerPaletteTable
53+
jr LoadPalette_Sprite
54+
55+
LoadPalette_Sprite:
9956
ld a,[rSVBK]
10057
ld b,a
10158
ld a,2
10259
ld [rSVBK],a
10360
push bc
10461

62+
push hl
10563
ld a,e
10664
ld l,d
10765
ld h,0
10866
add hl
10967
add hl
11068
add hl
111-
ld de,TrainerPaletteTable
69+
pop de
11270
add hl,de
11371

11472
ld de,W2_BgPaletteData + $40
115-
;jr startPaletteTransfer
73+
jr startPaletteTransfer
11674

11775
startPaletteTransfer:
11876
add a

0 commit comments

Comments
 (0)