You've already forked pokecrystal-board
mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2025-04-09 05:44:44 -07:00
Create macro to automatically place fading pals between two sources, and apply it to level selection menu daytime-based background pals (#12)
This commit is contained in:
@@ -1,5 +1,9 @@
|
||||
; Graphics macros
|
||||
|
||||
DEF palred EQUS "(1 << 0) *"
|
||||
DEF palgreen EQUS "(1 << 5) *"
|
||||
DEF palblue EQUS "(1 << 10) *"
|
||||
|
||||
MACRO assert_valid_rgb
|
||||
rept _NARG
|
||||
assert 0 <= (\1) && (\1) <= 31, "RGB channel must be 0-31"
|
||||
@@ -11,13 +15,53 @@ MACRO RGB
|
||||
rept _NARG / 3
|
||||
assert_valid_rgb \1, \2, \3
|
||||
dw palred (\1) + palgreen (\2) + palblue (\3)
|
||||
if DEF(fade_src)
|
||||
DEF {fade_src}_{d:color_index} EQU \1
|
||||
DEF color_index += 1
|
||||
DEF {fade_src}_{d:color_index} EQU \2
|
||||
DEF color_index += 1
|
||||
DEF {fade_src}_{d:color_index} EQU \3
|
||||
DEF color_index += 1
|
||||
endc
|
||||
shift 3
|
||||
endr
|
||||
ENDM
|
||||
|
||||
DEF palred EQUS "(1 << 0) *"
|
||||
DEF palgreen EQUS "(1 << 5) *"
|
||||
DEF palblue EQUS "(1 << 10) *"
|
||||
MACRO rgbpals_fade_src
|
||||
DEF fade_src EQUS \1
|
||||
DEF color_index = 0
|
||||
ENDM
|
||||
|
||||
MACRO rgbpals_fade_src_end
|
||||
DEF {fade_src}_len = color_index
|
||||
PURGE fade_src
|
||||
ENDM
|
||||
|
||||
MACRO rgbpals_fade_apply
|
||||
DEF fade_from EQUS \1
|
||||
DEF fade_to EQUS \2
|
||||
assert {fade_from}_len == {fade_to}_len, "fade_from pals and fade_to pals must be same length"
|
||||
for i, \3
|
||||
for j, 0, {fade_from}_len, 3
|
||||
DEF rgbch_red = {j} + 0
|
||||
DEF rgbch_green = {j} + 1
|
||||
DEF rgbch_blue = {j} + 2
|
||||
DEF palred_value = {fade_from}_{d:rgbch_red} + ({fade_to}_{d:rgbch_red} - {fade_from}_{d:rgbch_red}) * i / \3
|
||||
DEF palgreen_value = {fade_from}_{d:rgbch_green} + ({fade_to}_{d:rgbch_green} - {fade_from}_{d:rgbch_green}) * i / \3
|
||||
DEF palblue_value = {fade_from}_{d:rgbch_blue} + ({fade_to}_{d:rgbch_blue} - {fade_from}_{d:rgbch_blue}) * i / \3
|
||||
dw palred (palred_value) + palgreen (palgreen_value) + palblue (palblue_value)
|
||||
endr
|
||||
endr
|
||||
PURGE fade_from, fade_to, rgbch_red, rgbch_green, rgbch_blue, palred_value, palgreen_value, palblue_value
|
||||
ENDM
|
||||
|
||||
/* MACRO rgbpals_fade_end
|
||||
rept _NARG
|
||||
for i,
|
||||
endr
|
||||
shift
|
||||
endr
|
||||
ENDM */
|
||||
|
||||
DEF palettes EQUS "* PALETTE_SIZE"
|
||||
DEF palette EQUS "+ PALETTE_SIZE *"
|
||||
|
Reference in New Issue
Block a user