mirror of
				https://github.com/thornAvery/jep-hack.git
				synced 2025-11-04 21:01:01 +13:00 
			
		
		
		
	
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			NASM
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			NASM
		
	
	
	
	
	
; Graphics macros
 | 
						|
 | 
						|
MACRO assert_valid_rgb
 | 
						|
	rept _NARG
 | 
						|
		assert 0 <= (\1) && (\1) <= 31, "RGB channel must be 0-31"
 | 
						|
		shift
 | 
						|
	endr
 | 
						|
ENDM
 | 
						|
 | 
						|
MACRO RGB
 | 
						|
	rept _NARG / 3
 | 
						|
		assert_valid_rgb \1, \2, \3
 | 
						|
		dw palred (\1) + palgreen (\2) + palblue (\3)
 | 
						|
		shift 3
 | 
						|
	endr
 | 
						|
ENDM
 | 
						|
 | 
						|
DEF palred   EQUS "(1 << 0) *"
 | 
						|
DEF palgreen EQUS "(1 << 5) *"
 | 
						|
DEF palblue  EQUS "(1 << 10) *"
 | 
						|
 | 
						|
DEF palettes EQUS "* PALETTE_SIZE"
 | 
						|
DEF palette  EQUS "+ PALETTE_SIZE *"
 | 
						|
DEF color    EQUS "+ PAL_COLOR_SIZE *"
 | 
						|
 | 
						|
DEF tiles EQUS "* LEN_2BPP_TILE"
 | 
						|
DEF tile  EQUS "+ LEN_2BPP_TILE *"
 | 
						|
 | 
						|
; extracts the middle two colors from a 2bpp binary palette
 | 
						|
; example usage:
 | 
						|
; INCBIN "foo.gbcpal", middle_colors
 | 
						|
DEF middle_colors EQUS "PAL_COLOR_SIZE, PAL_COLOR_SIZE * 2"
 | 
						|
 | 
						|
MACRO dbpixel
 | 
						|
	if _NARG >= 4
 | 
						|
	; x tile, y tile, x pixel, y pixel
 | 
						|
		db \1 * TILE_WIDTH + \3, \2 * TILE_WIDTH + \4
 | 
						|
	else
 | 
						|
	; x tile, y tile
 | 
						|
		db \1 * TILE_WIDTH, \2 * TILE_WIDTH
 | 
						|
	endc
 | 
						|
ENDM
 | 
						|
 | 
						|
MACRO ldpixel
 | 
						|
	if _NARG >= 5
 | 
						|
	; register, x tile, y tile, x pixel, y pixel
 | 
						|
		lb \1, \2 * TILE_WIDTH + \4, \3 * TILE_WIDTH + \5
 | 
						|
	else
 | 
						|
	; register, x tile, y tile
 | 
						|
		lb \1, \2 * TILE_WIDTH, \3 * TILE_WIDTH
 | 
						|
	endc
 | 
						|
ENDM
 | 
						|
 | 
						|
DEF depixel EQUS "ldpixel de,"
 | 
						|
DEF bcpixel EQUS "ldpixel bc,"
 | 
						|
 | 
						|
MACRO dbsprite
 | 
						|
; x tile, y tile, x pixel, y pixel, vtile offset, attributes
 | 
						|
	db (\2 * TILE_WIDTH) % $100 + \4, (\1 * TILE_WIDTH) % $100 + \3, \5, \6
 | 
						|
ENDM
 |