From ce2337d732666072e7715d61281627178caca06a Mon Sep 17 00:00:00 2001 From: Forest Belton <65484+forestbelton@users.noreply.github.com> Date: Mon, 6 Sep 2021 19:02:51 -0400 Subject: [PATCH] Partition tile data and add font --- inc/font.inc | 56 + inc/game.inc | 19 +- inc/ibmpc1.inc | 3117 ++++++++++++++++++++++++++++++++++++++++++++++++ src/font.s | 26 + src/game.s | 2 + src/map.s | 17 +- src/player.s | 23 +- 7 files changed, 3235 insertions(+), 25 deletions(-) create mode 100644 inc/font.inc create mode 100644 inc/ibmpc1.inc create mode 100644 src/font.s diff --git a/inc/font.inc b/inc/font.inc new file mode 100644 index 0000000..41415e6 --- /dev/null +++ b/inc/font.inc @@ -0,0 +1,56 @@ +IF !DEF(FONT_INC) +DEF FONT_INC EQU 1 + +INCLUDE "ibmpc1.inc" + +MACRO FONT_TILE_DATA + chr_IBMPC1 $20, $20 + chr_IBMPC1 $2e, $2e + chr_IBMPC1 $3f, $3f + chr_IBMPC1 $30, $39 + chr_IBMPC1 $41, $5a +ENDM + +NEWCHARMAP IBMPC1 + +CHARMAP " ", $0 +CHARMAP ".", $1 +CHARMAP "?", $2 +CHARMAP "0", $3 +CHARMAP "1", $4 +CHARMAP "2", $5 +CHARMAP "3", $6 +CHARMAP "4", $7 +CHARMAP "5", $8 +CHARMAP "6", $9 +CHARMAP "7", $a +CHARMAP "8", $b +CHARMAP "9", $c +CHARMAP "A", $d +CHARMAP "B", $e +CHARMAP "C", $f +CHARMAP "D", $10 +CHARMAP "E", $11 +CHARMAP "F", $12 +CHARMAP "G", $13 +CHARMAP "H", $14 +CHARMAP "I", $15 +CHARMAP "J", $16 +CHARMAP "K", $17 +CHARMAP "L", $18 +CHARMAP "M", $19 +CHARMAP "N", $1a +CHARMAP "O", $1b +CHARMAP "P", $1c +CHARMAP "Q", $1d +CHARMAP "R", $1e +CHARMAP "S", $1f +CHARMAP "T", $20 +CHARMAP "U", $21 +CHARMAP "V", $22 +CHARMAP "W", $23 +CHARMAP "X", $24 +CHARMAP "Y", $25 +CHARMAP "Z", $26 + +ENDC diff --git a/inc/game.inc b/inc/game.inc index 51e16b8..571fe38 100644 --- a/inc/game.inc +++ b/inc/game.inc @@ -1,3 +1,6 @@ +IF !DEF(GAME_INC) +DEF GAME_INC EQU 1 + ; Game states DEF GAME_STATEF_TITLE EQU (1 << 0) DEF GAME_STATEF_GAME EQU (1 << 1) @@ -7,7 +10,11 @@ DEF PLAYER_STATEF_WALK EQU (1 << 0) DEF PLAYER_STATEF_JUMP EQU (1 << 1) ; Tile data allocations -DEF ALLOC_SIZE_FONT EQU 37 +DEF TILE_SIZE EQU 16 +DEF TILE_WIDTH EQU 8 ; Width of tile in bytes +DEF TILE_HEIGHT EQU 8 ; Height of tile in bytes + +DEF ALLOC_SIZE_FONT EQU 39 DEF ALLOC_SIZE_PLAYER EQU 52 DEF ALLOC_SIZE_BACKGROUND EQU 32 DEF ALLOC_SIZE_ITEMS EQU 20 @@ -19,8 +26,10 @@ DEF TILE_INDEX_BACKGROUND EQU ALLOC_SIZE_FONT + ALLOC_SIZE_PLAYER DEF TILE_INDEX_ITEMS EQU ALLOC_SIZE_FONT + ALLOC_SIZE_PLAYER + ALLOC_SIZE_BACKGROUND DEF TILE_INDEX_MONSTERS EQU ALLOC_SIZE_FONT + ALLOC_SIZE_PLAYER + ALLOC_SIZE_BACKGROUND + ALLOC_SIZE_ITEMS -ASSERT TILE_INDEX_PLAYER == 37 -ASSERT TILE_INDEX_BACKGROUND == 89 -ASSERT TILE_INDEX_ITEMS == 121 -ASSERT TILE_INDEX_MONSTERS == 141 +ASSERT TILE_INDEX_PLAYER == 39 +ASSERT TILE_INDEX_BACKGROUND == 91 +ASSERT TILE_INDEX_ITEMS == 123 +ASSERT TILE_INDEX_MONSTERS == 143 ASSERT TILE_INDEX_MONSTERS + ALLOC_SIZE_MONSTERS < 256 + +ENDC diff --git a/inc/ibmpc1.inc b/inc/ibmpc1.inc new file mode 100644 index 0000000..ea24941 --- /dev/null +++ b/inc/ibmpc1.inc @@ -0,0 +1,3117 @@ +;* +;* IBMPC1 8x8 Character Set Macros V1.3 +;* +;* Library Macros: +;* +;* chr_IBMPC1 - +;* Insert IBMPC fonts into code. +;* +;* This macro allows you to insert parts or the whole +;* character set into your code. Examples: +;* +;* chr_IBMPC1 $00,$ff - Insert chars $00 - $ff. +;* chr_IBMPC1 $20,$3f - Insert chars $20 - $3f. +;* + +; If all of these are already defined, don't do it again. + + IF !DEF(IBMPC1_INC) +IBMPC1_INC SET 1 + +rev_Check_ibmpc1_inc: MACRO +;NOTE: REVISION NUMBER CHANGES MUST BE ADDED +;TO SECOND PARAMETER IN FOLLOWING LINE. + IF \1 > 1.3 ; <--- PUT REVISION NUMBER HERE + WARN "Version \1 or later of 'ibmpc1.inc' is required." + ENDC + ENDM + +chr_IBMPC1: MACRO + + IF (\1 < 0) || (\2 < 0) || (\1 > \2) || (\2 > $ff) + FAIL "Font range values are invalid" + ENDC + + PUSHO +; Define . and X to be 0 and 1 + OPT b.X + + IF (\1 <= $0 && \2 >= $0) + + DB %.XXXXXX. ;Use to be a space ????? + DB %.X....X. + DB %.X....X. + DB %.X....X. + DB %.X....X. + DB %.X....X. + DB %.X....X. + DB %.XXXXXX. + + ENDC + IF (\1 <= $1 && \2 >= $1) + + DB %.XXXXXX. + DB %X......X + DB %X.X..X.X + DB %X......X + DB %X.XXXX.X + DB %X..XX..X + DB %X......X + DB %.XXXXXX. + + ENDC + IF (\1 <= $2 && \2 >= $2) + + DB %.XXXXXX. + DB %XXXXXXXX + DB %XX.XX.XX + DB %XXXXXXXX + DB %XX....XX + DB %XXX..XXX + DB %XXXXXXXX + DB %.XXXXXX. + + ENDC + IF (\1 <= $3 && \2 >= $3) + + DB %.XX.XX.. + DB %XXXXXXX. + DB %XXXXXXX. + DB %XXXXXXX. + DB %.XXXXX.. + DB %..XXX... + DB %...X.... + DB %........ + + ENDC + IF (\1 <= $4 && \2 >= $4) + + DB %...X.... + DB %..XXX... + DB %.XXXXX.. + DB %XXXXXXX. + DB %.XXXXX.. + DB %..XXX... + DB %...X.... + DB %........ + + ENDC + IF (\1 <= $5 && \2 >= $5) + + DB %..XXX... + DB %.XXXXX.. + DB %..XXX... + DB %XXXXXXX. + DB %XXXXXXX. + DB %.XXXXX.. + DB %..XXX... + DB %.XXXXX.. + + ENDC + IF (\1 <= $6 && \2 >= $6) + + DB %...X.... + DB %...X.... + DB %..XXX... + DB %.XXXXX.. + DB %XXXXXXX. + DB %.XXXXX.. + DB %..XXX... + DB %.XXXXX.. + + ENDC + IF (\1 <= $7 && \2 >= $7) + + DB %........ + DB %........ + DB %...XX... + DB %..XXXX.. + DB %..XXXX.. + DB %...XX... + DB %........ + DB %........ + + ENDC + IF (\1 <= $8 && \2 >= $8) + + DB %XXXXXXXX + DB %XXXXXXXX + DB %XXX..XXX + DB %XX....XX + DB %XX....XX + DB %XXX..XXX + DB %XXXXXXXX + DB %XXXXXXXX + + ENDC + IF (\1 <= $9 && \2 >= $9) + + DB %........ + DB %..XXXX.. + DB %.XX..XX. + DB %.X....X. + DB %.X....X. + DB %.XX..XX. + DB %..XXXX.. + DB %........ + + ENDC + IF (\1 <= $a && \2 >= $a) + + DB %XXXXXXXX + DB %XX....XX + DB %X..XX..X + DB %X.XXXX.X + DB %X.XXXX.X + DB %X..XX..X + DB %XX....XX + DB %XXXXXXXX + + ENDC + IF (\1 <= $b && \2 >= $b) + + DB %....XXXX + DB %.....XXX + DB %....XXXX + DB %.XXXXX.X + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %.XXXX... + + ENDC + IF (\1 <= $c && \2 >= $c) + + DB %..XXXX.. + DB %.XX..XX. + DB %.XX..XX. + DB %.XX..XX. + DB %..XXXX.. + DB %...XX... + DB %.XXXXXX. + DB %...XX... + + ENDC + IF (\1 <= $d && \2 >= $d) + + DB %..XXXXXX + DB %..XX..XX + DB %..XXXXXX + DB %..XX.... + DB %..XX.... + DB %.XXX.... + DB %XXXX.... + DB %XXX..... + + ENDC + IF (\1 <= $e && \2 >= $e) + + DB %.XXXXXXX + DB %.XX...XX + DB %.XXXXXXX + DB %.XX...XX + DB %.XX...XX + DB %.XX..XXX + DB %XXX..XX. + DB %XX...... + + ENDC + IF (\1 <= $f && \2 >= $f) + + DB %X..XX..X + DB %.X.XX.X. + DB %..XXXX.. + DB %XXX..XXX + DB %XXX..XXX + DB %..XXXX.. + DB %.X.XX.X. + DB %X..XX..X + + ENDC + IF (\1 <= $10 && \2 >= $10) + + DB %X....... + DB %XXX..... + DB %XXXXX... + DB %XXXXXXX. + DB %XXXXX... + DB %XXX..... + DB %X....... + DB %........ + + ENDC + IF (\1 <= $11 && \2 >= $11) + + DB %......X. + DB %....XXX. + DB %..XXXXX. + DB %XXXXXXX. + DB %..XXXXX. + DB %....XXX. + DB %......X. + DB %........ + + ENDC + IF (\1 <= $12 && \2 >= $12) + + DB %...XX... + DB %..XXXX.. + DB %.XXXXXX. + DB %...XX... + DB %...XX... + DB %.XXXXXX. + DB %..XXXX.. + DB %...XX... + + ENDC + IF (\1 <= $13 && \2 >= $13) + + DB %.XX..XX. + DB %.XX..XX. + DB %.XX..XX. + DB %.XX..XX. + DB %.XX..XX. + DB %........ + DB %.XX..XX. + DB %........ + + ENDC + IF (\1 <= $14 && \2 >= $14) + + DB %.XXXXXXX + DB %XX.XX.XX + DB %XX.XX.XX + DB %.XXXX.XX + DB %...XX.XX + DB %...XX.XX + DB %...XX.XX + DB %........ + + ENDC + IF (\1 <= $15 && \2 >= $15) + + DB %..XXXXX. + DB %.XX...XX + DB %..XXX... + DB %.XX.XX.. + DB %.XX.XX.. + DB %..XXX... + DB %XX..XX.. + DB %.XXXX... + + ENDC + IF (\1 <= $16 && \2 >= $16) + + DB %........ + DB %........ + DB %........ + DB %........ + DB %.XXXXXX. + DB %.XXXXXX. + DB %.XXXXXX. + DB %........ + + ENDC + IF (\1 <= $17 && \2 >= $17) + + DB %...XX... + DB %..XXXX.. + DB %.XXXXXX. + DB %...XX... + DB %.XXXXXX. + DB %..XXXX.. + DB %...XX... + DB %XXXXXXXX + + ENDC + IF (\1 <= $18 && \2 >= $18) + + DB %...XX... + DB %..XXXX.. + DB %.XXXXXX. + DB %...XX... + DB %...XX... + DB %...XX... + DB %...XX... + DB %........ + + ENDC + IF (\1 <= $19 && \2 >= $19) + + DB %...XX... + DB %...XX... + DB %...XX... + DB %...XX... + DB %.XXXXXX. + DB %..XXXX.. + DB %...XX... + DB %........ + + ENDC + IF (\1 <= $1a && \2 >= $1a) + + DB %........ + DB %...XX... + DB %....XX.. + DB %XXXXXXX. + DB %....XX.. + DB %...XX... + DB %........ + DB %........ + + ENDC + IF (\1 <= $1b && \2 >= $1b) + + DB %........ + DB %..XX.... + DB %.XX..... + DB %XXXXXXX. + DB %.XX..... + DB %..XX.... + DB %........ + DB %........ + + ENDC + IF (\1 <= $1c && \2 >= $1c) + + DB %........ + DB %........ + DB %XX...... + DB %XX...... + DB %XX...... + DB %XXXXXXX. + DB %........ + DB %........ + + ENDC + IF (\1 <= $1d && \2 >= $1d) + + DB %........ + DB %..X..X.. + DB %.XX..XX. + DB %XXXXXXXX + DB %.XX..XX. + DB %..X..X.. + DB %........ + DB %........ + + ENDC + IF (\1 <= $1e && \2 >= $1e) + + DB %........ + DB %...XX... + DB %..XXXX.. + DB %.XXXXXX. + DB %XXXXXXXX + DB %XXXXXXXX + DB %........ + DB %........ + + ENDC + IF (\1 <= $1f && \2 >= $1f) + + DB %........ + DB %XXXXXXXX + DB %XXXXXXXX + DB %.XXXXXX. + DB %..XXXX.. + DB %...XX... + DB %........ + DB %........ + + ENDC + IF (\1 <= $20 && \2 >= $20) + + DB %........ + DB %........ + DB %........ + DB %........ + DB %........ + DB %........ + DB %........ + DB %........ + + ENDC + IF (\1 <= $21 && \2 >= $21) + + DB %..XX.... + DB %..XX.... + DB %..XX.... + DB %..XX.... + DB %..XX.... + DB %........ + DB %..XX.... + DB %........ + + ENDC + IF (\1 <= $22 && \2 >= $22) + + DB %.XX.XX.. + DB %.XX.XX.. + DB %.XX.XX.. + DB %........ + DB %........ + DB %........ + DB %........ + DB %........ + + ENDC + IF (\1 <= $23 && \2 >= $23) + + DB %.XX.XX.. + DB %.XX.XX.. + DB %XXXXXXX. + DB %.XX.XX.. + DB %XXXXXXX. + DB %.XX.XX.. + DB %.XX.XX.. + DB %........ + + ENDC + IF (\1 <= $24 && \2 >= $24) + + DB %..XX.... + DB %.XXXXX.. + DB %XX...... + DB %.XXXX... + DB %....XX.. + DB %XXXXX... + DB %..XX.... + DB %........ + + ENDC + IF (\1 <= $25 && \2 >= $25) + + DB %........ + DB %XX...XX. + DB %XX..XX.. + DB %...XX... + DB %..XX.... + DB %.XX..XX. + DB %XX...XX. + DB %........ + + ENDC + IF (\1 <= $26 && \2 >= $26) + + DB %..XXX... + DB %.XX.XX.. + DB %..XXX... + DB %.XXX.XX. + DB %XX.XXX.. + DB %XX..XX.. + DB %.XXX.XX. + DB %........ + + ENDC + IF (\1 <= $27 && \2 >= $27) + + DB %.XX..... + DB %.XX..... + DB %XX...... + DB %........ + DB %........ + DB %........ + DB %........ + DB %........ + + ENDC + IF (\1 <= $28 && \2 >= $28) + + DB %...XX... + DB %..XX.... + DB %.XX..... + DB %.XX..... + DB %.XX..... + DB %..XX.... + DB %...XX... + DB %........ + + ENDC + IF (\1 <= $29 && \2 >= $29) + + DB %.XX..... + DB %..XX.... + DB %...XX... + DB %...XX... + DB %...XX... + DB %..XX.... + DB %.XX..... + DB %........ + + ENDC + IF (\1 <= $2a && \2 >= $2a) + + DB %........ + DB %.XX..XX. + DB %..XXXX.. + DB %XXXXXXXX + DB %..XXXX.. + DB %.XX..XX. + DB %........ + DB %........ + + ENDC + IF (\1 <= $2b && \2 >= $2b) + + DB %........ + DB %..XX.... + DB %..XX.... + DB %XXXXXX.. + DB %..XX.... + DB %..XX.... + DB %........ + DB %........ + + ENDC + IF (\1 <= $2c && \2 >= $2c) + + DB %........ + DB %........ + DB %........ + DB %........ + DB %........ + DB %..XX.... + DB %..XX.... + DB %.XX..... + + ENDC + IF (\1 <= $2d && \2 >= $2d) + + DB %........ + DB %........ + DB %........ + DB %XXXXXX.. + DB %........ + DB %........ + DB %........ + DB %........ + + ENDC + IF (\1 <= $2e && \2 >= $2e) + + DB %........ + DB %........ + DB %........ + DB %........ + DB %........ + DB %..XX.... + DB %..XX.... + DB %........ + + ENDC + IF (\1 <= $2f && \2 >= $2f) + + DB %.....XX. + DB %....XX.. + DB %...XX... + DB %..XX.... + DB %.XX..... + DB %XX...... + DB %X....... + DB %........ + + ENDC + IF (\1 <= $30 && \2 >= $30) + + DB %.XXXXX.. + DB %XX...XX. + DB %XX..XXX. + DB %XX.XXXX. + DB %XXXX.XX. + DB %XXX..XX. + DB %.XXXXX.. + DB %........ + + ENDC + IF (\1 <= $31 && \2 >= $31) + + DB %..XX.... + DB %.XXX.... + DB %..XX.... + DB %..XX.... + DB %..XX.... + DB %..XX.... + DB %XXXXXX.. + DB %........ + + ENDC + IF (\1 <= $32 && \2 >= $32) + + DB %.XXXX... + DB %XX..XX.. + DB %....XX.. + DB %..XXX... + DB %.XX..... + DB %XX..XX.. + DB %XXXXXX.. + DB %........ + + ENDC + IF (\1 <= $33 && \2 >= $33) + + DB %.XXXX... + DB %XX..XX.. + DB %....XX.. + DB %..XXX... + DB %....XX.. + DB %XX..XX.. + DB %.XXXX... + DB %........ + + ENDC + IF (\1 <= $34 && \2 >= $34) + + DB %...XXX.. + DB %..XXXX.. + DB %.XX.XX.. + DB %XX..XX.. + DB %XXXXXXX. + DB %....XX.. + DB %...XXXX. + DB %........ + + ENDC + IF (\1 <= $35 && \2 >= $35) + + DB %XXXXXX.. + DB %XX...... + DB %XXXXX... + DB %....XX.. + DB %....XX.. + DB %XX..XX.. + DB %.XXXX... + DB %........ + + ENDC + IF (\1 <= $36 && \2 >= $36) + + DB %..XXX... + DB %.XX..... + DB %XX...... + DB %XXXXX... + DB %XX..XX.. + DB %XX..XX.. + DB %.XXXX... + DB %........ + + ENDC + IF (\1 <= $37 && \2 >= $37) + + DB %XXXXXX.. + DB %XX..XX.. + DB %....XX.. + DB %...XX... + DB %..XX.... + DB %..XX.... + DB %..XX.... + DB %........ + + ENDC + IF (\1 <= $38 && \2 >= $38) + + DB %.XXXX... + DB %XX..XX.. + DB %XX..XX.. + DB %.XXXX... + DB %XX..XX.. + DB %XX..XX.. + DB %.XXXX... + DB %........ + + ENDC + IF (\1 <= $39 && \2 >= $39) + + DB %.XXXX... + DB %XX..XX.. + DB %XX..XX.. + DB %.XXXXX.. + DB %....XX.. + DB %...XX... + DB %.XXX.... + DB %........ + + ENDC + IF (\1 <= $3a && \2 >= $3a) + + DB %........ + DB %..XX.... + DB %..XX.... + DB %........ + DB %........ + DB %..XX.... + DB %..XX.... + DB %........ + + ENDC + IF (\1 <= $3b && \2 >= $3b) + + DB %........ + DB %..XX.... + DB %..XX.... + DB %........ + DB %........ + DB %..XX.... + DB %..XX.... + DB %.XX..... + + ENDC + IF (\1 <= $3c && \2 >= $3c) + + DB %...XX... + DB %..XX.... + DB %.XX..... + DB %XX...... + DB %.XX..... + DB %..XX.... + DB %...XX... + DB %........ + + ENDC + IF (\1 <= $3d && \2 >= $3d) + + DB %........ + DB %........ + DB %XXXXXX.. + DB %........ + DB %........ + DB %XXXXXX.. + DB %........ + DB %........ + + ENDC + IF (\1 <= $3e && \2 >= $3e) + + DB %.XX..... + DB %..XX.... + DB %...XX... + DB %....XX.. + DB %...XX... + DB %..XX.... + DB %.XX..... + DB %........ + + ENDC + IF (\1 <= $3f && \2 >= $3f) + + DB %.XXXX... + DB %XX..XX.. + DB %....XX.. + DB %...XX... + DB %..XX.... + DB %........ + DB %..XX.... + DB %........ + + ENDC + IF (\1 <= $40 && \2 >= $40) + + DB %.XXXXX.. + DB %XX...XX. + DB %XX.XXXX. + DB %XX.XXXX. + DB %XX.XXXX. + DB %XX...... + DB %.XXXX... + DB %........ + + ENDC + IF (\1 <= $41 && \2 >= $41) + + DB %..XX.... + DB %.XXXX... + DB %XX..XX.. + DB %XX..XX.. + DB %XXXXXX.. + DB %XX..XX.. + DB %XX..XX.. + DB %........ + + ENDC + IF (\1 <= $42 && \2 >= $42) + + DB %XXXXXX.. + DB %.XX..XX. + DB %.XX..XX. + DB %.XXXXX.. + DB %.XX..XX. + DB %.XX..XX. + DB %XXXXXX.. + DB %........ + + ENDC + IF (\1 <= $43 && \2 >= $43) + + DB %..XXXX.. + DB %.XX..XX. + DB %XX...... + DB %XX...... + DB %XX...... + DB %.XX..XX. + DB %..XXXX.. + DB %........ + + ENDC + IF (\1 <= $44 && \2 >= $44) + + DB %XXXXX... + DB %.XX.XX.. + DB %.XX..XX. + DB %.XX..XX. + DB %.XX..XX. + DB %.XX.XX.. + DB %XXXXX... + DB %........ + + ENDC + IF (\1 <= $45 && \2 >= $45) + + DB %.XXXXXX. + DB %.XX..... + DB %.XX..... + DB %.XXXX... + DB %.XX..... + DB %.XX..... + DB %.XXXXXX. + DB %........ + + ENDC + IF (\1 <= $46 && \2 >= $46) + + DB %.XXXXXX. + DB %.XX..... + DB %.XX..... + DB %.XXXX... + DB %.XX..... + DB %.XX..... + DB %.XX..... + DB %........ + + ENDC + IF (\1 <= $47 && \2 >= $47) + + DB %..XXXX.. + DB %.XX..XX. + DB %XX...... + DB %XX...... + DB %XX..XXX. + DB %.XX..XX. + DB %..XXXXX. + DB %........ + + ENDC + IF (\1 <= $48 && \2 >= $48) + + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %XXXXXX.. + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %........ + + ENDC + IF (\1 <= $49 && \2 >= $49) + + DB %.XXXX... + DB %..XX.... + DB %..XX.... + DB %..XX.... + DB %..XX.... + DB %..XX.... + DB %.XXXX... + DB %........ + + ENDC + IF (\1 <= $4a && \2 >= $4a) + + DB %...XXXX. + DB %....XX.. + DB %....XX.. + DB %....XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %.XXXX... + DB %........ + + ENDC + IF (\1 <= $4b && \2 >= $4b) + + DB %XXX..XX. + DB %.XX..XX. + DB %.XX.XX.. + DB %.XXXX... + DB %.XX.XX.. + DB %.XX..XX. + DB %XXX..XX. + DB %........ + + ENDC + IF (\1 <= $4c && \2 >= $4c) + + DB %.XX..... + DB %.XX..... + DB %.XX..... + DB %.XX..... + DB %.XX..... + DB %.XX..... + DB %.XXXXXX. + DB %........ + + ENDC + IF (\1 <= $4d && \2 >= $4d) + + DB %XX...XX. + DB %XXX.XXX. + DB %XXXXXXX. + DB %XXXXXXX. + DB %XX.X.XX. + DB %XX...XX. + DB %XX...XX. + DB %........ + + ENDC + IF (\1 <= $4e && \2 >= $4e) + + DB %XX...XX. + DB %XXX..XX. + DB %XXXX.XX. + DB %XX.XXXX. + DB %XX..XXX. + DB %XX...XX. + DB %XX...XX. + DB %........ + + ENDC + IF (\1 <= $4f && \2 >= $4f) + + DB %..XXX... + DB %.XX.XX.. + DB %XX...XX. + DB %XX...XX. + DB %XX...XX. + DB %.XX.XX.. + DB %..XXX... + DB %........ + + ENDC + IF (\1 <= $50 && \2 >= $50) + + DB %XXXXXX.. + DB %.XX..XX. + DB %.XX..XX. + DB %.XXXXX.. + DB %.XX..... + DB %.XX..... + DB %XXXX.... + DB %........ + + ENDC + IF (\1 <= $51 && \2 >= $51) + + DB %.XXXX... + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %XX.XXX.. + DB %.XXXX... + DB %...XXX.. + DB %........ + + ENDC + IF (\1 <= $52 && \2 >= $52) + + DB %XXXXXX.. + DB %.XX..XX. + DB %.XX..XX. + DB %.XXXXX.. + DB %.XX.XX.. + DB %.XX..XX. + DB %XXX..XX. + DB %........ + + ENDC + IF (\1 <= $53 && \2 >= $53) + + DB %.XXXX... + DB %XX..XX.. + DB %XXX..... + DB %.XXXX... + DB %...XXX.. + DB %XX..XX.. + DB %.XXXX... + DB %........ + + ENDC + IF (\1 <= $54 && \2 >= $54) + + DB %XXXXXX.. + DB %..XX.... + DB %..XX.... + DB %..XX.... + DB %..XX.... + DB %..XX.... + DB %..XX.... + DB %........ + + ENDC + IF (\1 <= $55 && \2 >= $55) + + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %XXXXXX.. + DB %........ + + ENDC + IF (\1 <= $56 && \2 >= $56) + + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %.XXXX... + DB %..XX.... + DB %........ + + ENDC + IF (\1 <= $57 && \2 >= $57) + + DB %XX...XX. + DB %XX...XX. + DB %XX...XX. + DB %XX.X.XX. + DB %XXXXXXX. + DB %XXX.XXX. + DB %XX...XX. + DB %........ + + ENDC + IF (\1 <= $58 && \2 >= $58) + + DB %XX...XX. + DB %XX...XX. + DB %.XX.XX.. + DB %..XXX... + DB %..XXX... + DB %.XX.XX.. + DB %XX...XX. + DB %........ + + ENDC + IF (\1 <= $59 && \2 >= $59) + + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %.XXXX... + DB %..XX.... + DB %..XX.... + DB %.XXXX... + DB %........ + + ENDC + IF (\1 <= $5a && \2 >= $5a) + + DB %XXXXXXX. + DB %.....XX. + DB %....XX.. + DB %...XX... + DB %..XX.... + DB %.XX..... + DB %XXXXXXX. + DB %........ + + ENDC + IF (\1 <= $5b && \2 >= $5b) + + DB %.XXXX... + DB %.XX..... + DB %.XX..... + DB %.XX..... + DB %.XX..... + DB %.XX..... + DB %.XXXX... + DB %........ + + ENDC + IF (\1 <= $5c && \2 >= $5c) + + DB %XX...... + DB %.XX..... + DB %..XX.... + DB %...XX... + DB %....XX.. + DB %.....XX. + DB %......X. + DB %........ + + ENDC + IF (\1 <= $5d && \2 >= $5d) + + DB %.XXXX... + DB %...XX... + DB %...XX... + DB %...XX... + DB %...XX... + DB %...XX... + DB %.XXXX... + DB %........ + + ENDC + IF (\1 <= $5e && \2 >= $5e) + + DB %...X.... + DB %..XXX... + DB %.XX.XX.. + DB %XX...XX. + DB %........ + DB %........ + DB %........ + DB %........ + + ENDC + IF (\1 <= $5f && \2 >= $5f) + + DB %........ + DB %........ + DB %........ + DB %........ + DB %........ + DB %........ + DB %........ + DB %XXXXXXXX + + ENDC + IF (\1 <= $60 && \2 >= $60) + + DB %..XX.... + DB %..XX.... + DB %...XX... + DB %........ + DB %........ + DB %........ + DB %........ + DB %........ + + ENDC + IF (\1 <= $61 && \2 >= $61) + + DB %........ + DB %........ + DB %.XXXX... + DB %....XX.. + DB %.XXXXX.. + DB %XX..XX.. + DB %.XXX.XX. + DB %........ + + ENDC + IF (\1 <= $62 && \2 >= $62) + + DB %XXX..... + DB %.XX..... + DB %.XX..... + DB %.XXXXX.. + DB %.XX..XX. + DB %.XX..XX. + DB %XX.XXX.. + DB %........ + + ENDC + IF (\1 <= $63 && \2 >= $63) + + DB %........ + DB %........ + DB %.XXXX... + DB %XX..XX.. + DB %XX...... + DB %XX..XX.. + DB %.XXXX... + DB %........ + + ENDC + IF (\1 <= $64 && \2 >= $64) + + DB %...XXX.. + DB %....XX.. + DB %....XX.. + DB %.XXXXX.. + DB %XX..XX.. + DB %XX..XX.. + DB %.XXX.XX. + DB %........ + + ENDC + IF (\1 <= $65 && \2 >= $65) + + DB %........ + DB %........ + DB %.XXXX... + DB %XX..XX.. + DB %XXXXXX.. + DB %XX...... + DB %.XXXX... + DB %........ + + ENDC + IF (\1 <= $66 && \2 >= $66) + + DB %..XXX... + DB %.XX.XX.. + DB %.XX..... + DB %XXXX.... + DB %.XX..... + DB %.XX..... + DB %XXXX.... + DB %........ + + ENDC + IF (\1 <= $67 && \2 >= $67) + + DB %........ + DB %........ + DB %.XXX.XX. + DB %XX..XX.. + DB %XX..XX.. + DB %.XXXXX.. + DB %....XX.. + DB %XXXXX... + + ENDC + IF (\1 <= $68 && \2 >= $68) + + DB %XXX..... + DB %.XX..... + DB %.XX.XX.. + DB %.XXX.XX. + DB %.XX..XX. + DB %.XX..XX. + DB %XXX..XX. + DB %........ + + ENDC + IF (\1 <= $69 && \2 >= $69) + + DB %..XX.... + DB %........ + DB %.XXX.... + DB %..XX.... + DB %..XX.... + DB %..XX.... + DB %.XXXX... + DB %........ + + ENDC + IF (\1 <= $6a && \2 >= $6a) + + DB %....XX.. + DB %........ + DB %....XX.. + DB %....XX.. + DB %....XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %.XXXX... + + ENDC + IF (\1 <= $6b && \2 >= $6b) + + DB %XXX..... + DB %.XX..... + DB %.XX..XX. + DB %.XX.XX.. + DB %.XXXX... + DB %.XX.XX.. + DB %XXX..XX. + DB %........ + + ENDC + IF (\1 <= $6c && \2 >= $6c) + + DB %.XXX.... + DB %..XX.... + DB %..XX.... + DB %..XX.... + DB %..XX.... + DB %..XX.... + DB %.XXXX... + DB %........ + + ENDC + IF (\1 <= $6d && \2 >= $6d) + + DB %........ + DB %........ + DB %XX..XX.. + DB %XXXXXXX. + DB %XXXXXXX. + DB %XX.X.XX. + DB %XX...XX. + DB %........ + + ENDC + IF (\1 <= $6e && \2 >= $6e) + + DB %........ + DB %........ + DB %XXXXX... + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %........ + + ENDC + IF (\1 <= $6f && \2 >= $6f) + + DB %........ + DB %........ + DB %.XXXX... + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %.XXXX... + DB %........ + + ENDC + IF (\1 <= $70 && \2 >= $70) + + DB %........ + DB %........ + DB %XX.XXX.. + DB %.XX..XX. + DB %.XX..XX. + DB %.XXXXX.. + DB %.XX..... + DB %XXXX.... + + ENDC + IF (\1 <= $71 && \2 >= $71) + + DB %........ + DB %........ + DB %.XXX.XX. + DB %XX..XX.. + DB %XX..XX.. + DB %.XXXXX.. + DB %....XX.. + DB %...XXXX. + + ENDC + IF (\1 <= $72 && \2 >= $72) + + DB %........ + DB %........ + DB %XX.XXX.. + DB %.XXX.XX. + DB %.XX..XX. + DB %.XX..... + DB %XXXX.... + DB %........ + + ENDC + IF (\1 <= $73 && \2 >= $73) + + DB %........ + DB %........ + DB %.XXXXX.. + DB %XX...... + DB %.XXXX... + DB %....XX.. + DB %XXXXX... + DB %........ + + ENDC + IF (\1 <= $74 && \2 >= $74) + + DB %...X.... + DB %..XX.... + DB %.XXXXX.. + DB %..XX.... + DB %..XX.... + DB %..XX.X.. + DB %...XX... + DB %........ + + ENDC + IF (\1 <= $75 && \2 >= $75) + + DB %........ + DB %........ + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %.XXX.XX. + DB %........ + + ENDC + IF (\1 <= $76 && \2 >= $76) + + DB %........ + DB %........ + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %.XXXX... + DB %..XX.... + DB %........ + + ENDC + IF (\1 <= $77 && \2 >= $77) + + DB %........ + DB %........ + DB %XX...XX. + DB %XX.X.XX. + DB %XXXXXXX. + DB %XXXXXXX. + DB %.XX.XX.. + DB %........ + + ENDC + IF (\1 <= $78 && \2 >= $78) + + DB %........ + DB %........ + DB %XX...XX. + DB %.XX.XX.. + DB %..XXX... + DB %.XX.XX.. + DB %XX...XX. + DB %........ + + ENDC + IF (\1 <= $79 && \2 >= $79) + + DB %........ + DB %........ + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %.XXXXX.. + DB %....XX.. + DB %XXXXX... + + ENDC + IF (\1 <= $7a && \2 >= $7a) + + DB %........ + DB %........ + DB %XXXXXX.. + DB %X..XX... + DB %..XX.... + DB %.XX..X.. + DB %XXXXXX.. + DB %........ + + ENDC + IF (\1 <= $7b && \2 >= $7b) + + DB %...XXX.. + DB %..XX.... + DB %..XX.... + DB %XXX..... + DB %..XX.... + DB %..XX.... + DB %...XXX.. + DB %........ + + ENDC + IF (\1 <= $7c && \2 >= $7c) + + DB %...XX... + DB %...XX... + DB %...XX... + DB %........ + DB %...XX... + DB %...XX... + DB %...XX... + DB %........ + + ENDC + IF (\1 <= $7d && \2 >= $7d) + + DB %XXX..... + DB %..XX.... + DB %..XX.... + DB %...XXX.. + DB %..XX.... + DB %..XX.... + DB %XXX..... + DB %........ + + ENDC + IF (\1 <= $7e && \2 >= $7e) + + DB %.XXX.XX. + DB %XX.XXX.. + DB %........ + DB %........ + DB %........ + DB %........ + DB %........ + DB %........ + + ENDC + IF (\1 <= $7f && \2 >= $7f) + + DB %........ + DB %...X.... + DB %..XXX... + DB %.XX.XX.. + DB %XX...XX. + DB %XXXXXXX. + DB %........ + DB %........ + + ENDC + IF (\1 <= $80 && \2 >= $80) + + DB %..XXXX.. + DB %.XX..XX. + DB %XX...... + DB %XX...... + DB %.XX..XX. + DB %..XXXX.. + DB %....X... + DB %...XX... + + ENDC + IF (\1 <= $81 && \2 >= $81) + + DB %..X.X... + DB %........ + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %.XXX.XX. + DB %........ + + ENDC + IF (\1 <= $82 && \2 >= $82) + + DB %....X... + DB %...X.... + DB %.XXXX... + DB %XX..XX.. + DB %XXXXXX.. + DB %XX...... + DB %.XXXX... + DB %........ + + ENDC + IF (\1 <= $83 && \2 >= $83) + + DB %...X.... + DB %..X.X... + DB %.XXXX... + DB %....XX.. + DB %.XXXXX.. + DB %XX..XX.. + DB %.XXX.XX. + DB %........ + + ENDC + IF (\1 <= $84 && \2 >= $84) + + DB %..X.X... + DB %........ + DB %.XXXX... + DB %....XX.. + DB %.XXXXX.. + DB %XX..XX.. + DB %.XXX.XX. + DB %........ + + ENDC + IF (\1 <= $85 && \2 >= $85) + + DB %..X..... + DB %...X.... + DB %.XXXX... + DB %....XX.. + DB %.XXXXX.. + DB %XX..XX.. + DB %.XXX.XX. + DB %........ + + ENDC + IF (\1 <= $86 && \2 >= $86) + + DB %...XX... + DB %...XX... + DB %.XXXX... + DB %....XX.. + DB %.XXXXX.. + DB %XX..XX.. + DB %.XXX.XX. + DB %........ + + ENDC + IF (\1 <= $87 && \2 >= $87) + + DB %........ + DB %.XXXX... + DB %XX..XX.. + DB %XX...... + DB %XX..XX.. + DB %.XXXX... + DB %...X.... + DB %..XX.... + + ENDC + IF (\1 <= $88 && \2 >= $88) + + DB %...X.... + DB %..X.X... + DB %.XXXX... + DB %XX..XX.. + DB %XXXXXX.. + DB %XX...... + DB %.XXXX... + DB %........ + + ENDC + IF (\1 <= $89 && \2 >= $89) + + DB %..X.X... + DB %........ + DB %.XXXX... + DB %XX..XX.. + DB %XXXXXX.. + DB %XX...... + DB %.XXXX... + DB %........ + + ENDC + IF (\1 <= $8a && \2 >= $8a) + + DB %..X..... + DB %...X.... + DB %.XXXX... + DB %XX..XX.. + DB %XXXXXX.. + DB %XX...... + DB %.XXXX... + DB %........ + + ENDC + IF (\1 <= $8b && \2 >= $8b) + + DB %..X.X... + DB %........ + DB %.XXX.... + DB %..XX.... + DB %..XX.... + DB %..XX.... + DB %.XXXX... + DB %........ + + ENDC + IF (\1 <= $8c && \2 >= $8c) + + DB %...X.... + DB %..X.X... + DB %.XXX.... + DB %..XX.... + DB %..XX.... + DB %..XX.... + DB %.XXXX... + DB %........ + + ENDC + IF (\1 <= $8d && \2 >= $8d) + + DB %...X.... + DB %....X... + DB %.XXX.... + DB %..XX.... + DB %..XX.... + DB %..XX.... + DB %.XXXX... + DB %........ + + ENDC + IF (\1 <= $8e && \2 >= $8e) + + DB %..X.X... + DB %..XX.... + DB %.XXXX... + DB %XX..XX.. + DB %XXXXXX.. + DB %XX..XX.. + DB %XX..XX.. + DB %........ + + ENDC + IF (\1 <= $8f && \2 >= $8f) + + DB %..XX.... + DB %.X..X... + DB %..XX.... + DB %XX..XX.. + DB %XXXXXX.. + DB %XX..XX.. + DB %XX..XX.. + DB %........ + + ENDC + IF (\1 <= $90 && \2 >= $90) + + DB %....X... + DB %...X.... + DB %.XXXXXX. + DB %.XX..... + DB %.XXXX... + DB %.XX..... + DB %.XXXXXX. + DB %........ + + ENDC + IF (\1 <= $91 && \2 >= $91) + + DB %........ + DB %........ + DB %.XX.XX.. + DB %...X..X. + DB %.XXXXXX. + DB %X..X.... + DB %.XXXXXX. + DB %........ + + ENDC + IF (\1 <= $92 && \2 >= $92) + + DB %..XXXXX. + DB %.X.X.... + DB %X..X.... + DB %X..XXX.. + DB %XXXX.... + DB %X..X.... + DB %X..XXXX. + DB %........ + + ENDC + IF (\1 <= $93 && \2 >= $93) + + DB %...X.... + DB %..X.X... + DB %.XXXX... + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %.XXXX... + DB %........ + + ENDC + IF (\1 <= $94 && \2 >= $94) + + DB %..X.X... + DB %........ + DB %.XXXX... + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %.XXXX... + DB %........ + + ENDC + IF (\1 <= $95 && \2 >= $95) + + DB %..X..... + DB %...X.... + DB %.XXXX... + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %.XXXX... + DB %........ + + ENDC + IF (\1 <= $96 && \2 >= $96) + + DB %...X.... + DB %..X.X... + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %.XXX.XX. + DB %........ + + ENDC + IF (\1 <= $97 && \2 >= $97) + + DB %..X..... + DB %...X.... + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %.XXX.XX. + DB %........ + + ENDC + IF (\1 <= $98 && \2 >= $98) + + DB %..X.X... + DB %........ + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %.XXXXX.. + DB %....XX.. + DB %XXXXX... + + ENDC + IF (\1 <= $99 && \2 >= $99) + + DB %..X.X... + DB %.XXXXX.. + DB %XX...XX. + DB %XX...XX. + DB %XX...XX. + DB %XX...XX. + DB %.XXXXX.. + DB %........ + + ENDC + IF (\1 <= $9a && \2 >= $9a) + + DB %..X.X... + DB %XX...XX. + DB %XX...XX. + DB %XX...XX. + DB %XX...XX. + DB %XX...XX. + DB %.XXXXX.. + DB %........ + + ENDC + IF (\1 <= $9b && \2 >= $9b) + + DB %........ + DB %...X.... + DB %.XXXX... + DB %XX..XX.. + DB %XX...... + DB %XX..XX.. + DB %.XXXX... + DB %...X.... + + ENDC + IF (\1 <= $9c && \2 >= $9c) + + DB %..XXX... + DB %.X...X.. + DB %.X...... + DB %XXXX.... + DB %.X...... + DB %.X...... + DB %XXXXXXX. + DB %........ + + ENDC + IF (\1 <= $9d && \2 >= $9d) + + DB %XX....XX + DB %.XX..XX. + DB %..XXXX.. + DB %.XXXXXX. + DB %...XX... + DB %.XXXXXX. + DB %...XX... + DB %........ + + ENDC + IF (\1 <= $9e && \2 >= $9e) + + DB %XXXXXX.. + DB %.XX..XX. + DB %.XX..XX. + DB %.XXXXX.. + DB %.XX..... + DB %.XX..... + DB %XXXX.... + DB %........ + + ENDC + IF (\1 <= $9f && \2 >= $9f) + + DB %...XXX.. + DB %..XX.... + DB %XXXXXX.. + DB %..XX.... + DB %..XX.... + DB %..XX.... + DB %..XX.... + DB %XXX..... + + ENDC + IF (\1 <= $a0 && \2 >= $a0) + + DB %....X... + DB %...X.... + DB %.XXXX... + DB %....XX.. + DB %.XXXXX.. + DB %XX..XX.. + DB %.XXX.XX. + DB %........ + + ENDC + IF (\1 <= $a1 && \2 >= $a1) + + DB %...X.... + DB %..X..... + DB %.XXX.... + DB %..XX.... + DB %..XX.... + DB %..XX.... + DB %.XXXX... + DB %........ + + ENDC + IF (\1 <= $a2 && \2 >= $a2) + + DB %...X.... + DB %..X..... + DB %.XXXX... + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %.XXXX... + DB %........ + + ENDC + IF (\1 <= $a3 && \2 >= $a3) + + DB %...X.... + DB %..X..... + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %.XXX.XX. + DB %........ + + ENDC + IF (\1 <= $a4 && \2 >= $a4) + + DB %..XX..X. + DB %.X..XX.. + DB %XXXXX... + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %XX..XX.. + DB %........ + + ENDC + IF (\1 <= $a5 && \2 >= $a5) + + DB %..XX..X. + DB %.X..XX.. + DB %XX...XX. + DB %XXX..XX. + DB %XX.X.XX. + DB %XX..XXX. + DB %XX...XX. + DB %........ + + ENDC + IF (\1 <= $a6 && \2 >= $a6) + + DB %........ + DB %..XXX... + DB %....XX.. + DB %..XXXX.. + DB %.XX.XX.. + DB %..XX.XX. + DB %........ + DB %........ + + ENDC + IF (\1 <= $a7 && \2 >= $a7) + + DB %........ + DB %..XXX... + DB %.X...X.. + DB %.X...X.. + DB %..XXX... + DB %........ + DB %........ + DB %........ + + ENDC + IF (\1 <= $a8 && \2 >= $a8) + + DB %...XX... + DB %........ + DB %...XX... + DB %..XX.... + DB %.XX..... + DB %.XX..XX. + DB %..XXXX.. + DB %........ + + ENDC + IF (\1 <= $a9 && \2 >= $a9) + + DB %........ + DB %........ + DB %XXXXXXX. + DB %X....... + DB %X....... + DB %........ + DB %........ + DB %........ + + ENDC + IF (\1 <= $aa && \2 >= $aa) + + DB %........ + DB %........ + DB %XXXXXXX. + DB %......X. + DB %......X. + DB %........ + DB %........ + DB %........ + + ENDC + IF (\1 <= $ab && \2 >= $ab) + + DB %.X....X. + DB %.X...X.. + DB %.X..X... + DB %.X.X.XX. + DB %..X.X..X + DB %.X...XX. + DB %X...X... + DB %...XXXXX + + ENDC + IF (\1 <= $ac && \2 >= $ac) + + DB %.X....X. + DB %.X...X.. + DB %.X..X... + DB %.X.X.XX. + DB %..X.X.X. + DB %.X.XXXXX + DB %X.....X. + DB %.....XXX + + ENDC + IF (\1 <= $ad && \2 >= $ad) + + DB %..XX.... + DB %........ + DB %..XX.... + DB %..XX.... + DB %..XX.... + DB %..XX.... + DB %..XX.... + DB %........ + + ENDC + IF (\1 <= $ae && \2 >= $ae) + + DB %........ + DB %..X..X.. + DB %.X..X... + DB %X..X.... + DB %.X..X... + DB %..X..X.. + DB %........ + DB %........ + + ENDC + IF (\1 <= $af && \2 >= $af) + + DB %........ + DB %.X..X... + DB %..X..X.. + DB %...X..X. + DB %..X..X.. + DB %.X..X... + DB %........ + DB %........ + + ENDC + IF (\1 <= $b0 && \2 >= $b0) + + DB %X...X... + DB %..X...X. + DB %X...X... + DB %..X...X. + DB %X...X... + DB %........ + DB %X...X... + DB %..X...X. + + ENDC + IF (\1 <= $b1 && \2 >= $b1) + + DB %X.X.X.X. + DB %.X.X.X.X + DB %X.X.X.X. + DB %.X.X.X.X + DB %X.X.X.X. + DB %........ + DB %X.X.X.X. + DB %.X.X.X.X + + ENDC + IF (\1 <= $b2 && \2 >= $b2) + + DB %.XXX.XXX + DB %XX.XXX.X + DB %.XXX.XXX + DB %XX.XXX.X + DB %.XXX.XXX + DB %XXXXXXXX + DB %.XXX.XXX + DB %XX.XXX.X + + ENDC + IF (\1 <= $b3 && \2 >= $b3) + + DB %...X.... + DB %...X.... + DB %...X.... + DB %...X.... + DB %...X.... + DB %...X.... + DB %...X.... + DB %...X.... + + ENDC + IF (\1 <= $b4 && \2 >= $b4) + + DB %...X.... + DB %...X.... + DB %...X.... + DB %XXXX.... + DB %...X.... + DB %...X.... + DB %...X.... + DB %...X.... + + ENDC + IF (\1 <= $b5 && \2 >= $b5) + + DB %...X.... + DB %...X.... + DB %XXXX.... + DB %...X.... + DB %XXXX.... + DB %...X.... + DB %...X.... + DB %...X.... + + ENDC + IF (\1 <= $b6 && \2 >= $b6) + + DB %..X.X... + DB %..X.X... + DB %..X.X... + DB %XXX.X... + DB %..X.X... + DB %..X.X... + DB %..X.X... + DB %..X.X... + + ENDC + IF (\1 <= $b7 && \2 >= $b7) + + DB %........ + DB %........ + DB %........ + DB %XXXXX... + DB %..X.X... + DB %..X.X... + DB %..X.X... + DB %..X.X... + + ENDC + IF (\1 <= $b8 && \2 >= $b8) + + DB %........ + DB %........ + DB %XXXX.... + DB %...X.... + DB %XXXX.... + DB %...X.... + DB %...X.... + DB %...X.... + + ENDC + IF (\1 <= $b9 && \2 >= $b9) + + DB %..X.X... + DB %..X.X... + DB %XXX.X... + DB %....X... + DB %XXX.X... + DB %..X.X... + DB %..X.X... + DB %..X.X... + + ENDC + IF (\1 <= $ba && \2 >= $ba) + + DB %..X.X... + DB %..X.X... + DB %..X.X... + DB %..X.X... + DB %..X.X... + DB %..X.X... + DB %..X.X... + DB %..X.X... + + ENDC + IF (\1 <= $bb && \2 >= $bb) + + DB %........ + DB %........ + DB %XXXXX... + DB %....X... + DB %XXX.X... + DB %..X.X... + DB %..X.X... + DB %..X.X... + + ENDC + IF (\1 <= $bc && \2 >= $bc) + + DB %..X.X... ;bc + DB %..X.X... + DB %XXX.X... + DB %....X... + DB %XXXXX... + DB %........ + DB %........ + DB %........ + + ENDC + IF (\1 <= $bd && \2 >= $bd) + + DB %..X.X... + DB %..X.X... + DB %..X.X... + DB %XXXXX... + DB %........ + DB %........ + DB %........ + DB %........ + + ENDC + IF (\1 <= $be && \2 >= $be) + + DB %...X.... ;be + DB %...X.... + DB %XXXX.... + DB %...X.... + DB %XXXX.... + DB %........ + DB %........ + DB %........ + + ENDC + IF (\1 <= $bf && \2 >= $bf) + + DB %........ + DB %........ + DB %........ + DB %XXXX.... + DB %...X.... + DB %...X.... + DB %...X.... + DB %...X.... + + ENDC + IF (\1 <= $c0 && \2 >= $c0) + + DB %...X.... + DB %...X.... + DB %...X.... + DB %...XXXXX + DB %........ + DB %........ + DB %........ + DB %........ + + ENDC + IF (\1 <= $c1 && \2 >= $c1) + + DB %...X.... + DB %...X.... + DB %...X.... + DB %XXXXXXXX + DB %........ + DB %........ + DB %........ + DB %........ + + ENDC + IF (\1 <= $c2 && \2 >= $c2) + + DB %........ ;c2 + DB %........ + DB %........ + DB %XXXXXXXX + DB %...X.... + DB %...X.... + DB %...X.... + DB %...X.... + + ENDC + IF (\1 <= $c3 && \2 >= $c3) + + DB %...X.... + DB %...X.... + DB %...X.... + DB %...XXXXX + DB %...X.... + DB %...X.... + DB %...X.... + DB %...X.... + + ENDC + IF (\1 <= $c4 && \2 >= $c4) + + DB %........ ;c4 + DB %........ + DB %........ + DB %XXXXXXXX + DB %........ + DB %........ + DB %........ + DB %........ + + ENDC + IF (\1 <= $c5 && \2 >= $c5) + + DB %...X.... + DB %...X.... + DB %...X.... + DB %XXXXXXXX + DB %...X.... + DB %...X.... + DB %...X.... + DB %...X.... + + ENDC + IF (\1 <= $c6 && \2 >= $c6) + + DB %...X.... ;c6 + DB %...X.... + DB %...XXXXX + DB %...X.... + DB %...XXXXX + DB %...X.... + DB %...X.... + DB %...X.... + + ENDC + IF (\1 <= $c7 && \2 >= $c7) + + DB %..X.X... + DB %..X.X... + DB %..X.X... + DB %..X.XXXX + DB %..X.X... + DB %..X.X... + DB %..X.X... + DB %..X.X... + + ENDC + IF (\1 <= $c8 && \2 >= $c8) + + DB %..X.X... ;c8 + DB %..X.X... + DB %..X.XXXX + DB %..X..... + DB %..XXXXXX + DB %........ + DB %........ + DB %........ + + ENDC + IF (\1 <= $c9 && \2 >= $c9) + + DB %........ + DB %........ + DB %..XXXXXX + DB %..X..... + DB %..X.XXXX + DB %..X.X... + DB %..X.X... + DB %..X.X... + + ENDC + IF (\1 <= $ca && \2 >= $ca) + + DB %..X.X... ;ca + DB %..X.X... + DB %XXX.XXXX + DB %........ + DB %XXXXXXXX + DB %........ + DB %........ + DB %........ + + ENDC + IF (\1 <= $cb && \2 >= $cb) + + DB %........ + DB %........ + DB %XXXXXXXX + DB %........ + DB %XXX.XXXX + DB %..X.X... + DB %..X.X... + DB %..X.X... + + ENDC + IF (\1 <= $cc && \2 >= $cc) + + DB %..X.X... ;cc + DB %..X.X... + DB %..X.XXXX + DB %..X..... + DB %..X.XXXX + DB %..X.X... + DB %..X.X... + DB %..X.X... + + ENDC + IF (\1 <= $cd && \2 >= $cd) + + DB %........ + DB %........ + DB %XXXXXXXX + DB %........ + DB %XXXXXXXX + DB %........ + DB %........ + DB %........ + + ENDC + IF (\1 <= $ce && \2 >= $ce) + + DB %..X.X... + DB %..X.X... + DB %XXX.XXXX + DB %........ + DB %XXX.XXXX + DB %..X.X... + DB %..X.X... + DB %..X.X... + + ENDC + IF (\1 <= $cf && \2 >= $cf) + + DB %...X.... + DB %...X.... + DB %XXXXXXXX + DB %........ + DB %XXXXXXXX + DB %........ + DB %........ + DB %........ + + ENDC + IF (\1 <= $d0 && \2 >= $d0) + + DB %..X.X... + DB %..X.X... + DB %..X.X... + DB %XXXXXXXX + DB %........ + DB %........ + DB %........ + DB %........ + + ENDC + IF (\1 <= $d1 && \2 >= $d1) + + DB %........ + DB %........ + DB %XXXXXXXX + DB %........ + DB %XXXXXXXX + DB %...X.... + DB %...X.... + DB %...X.... + + ENDC + IF (\1 <= $d2 && \2 >= $d2) + + DB %........ + DB %........ + DB %........ + DB %XXXXXXXX + DB %..X.X... + DB %..X.X... + DB %..X.X... + DB %..X.X... + + ENDC + IF (\1 <= $d3 && \2 >= $d3) + + DB %..X.X... + DB %..X.X... + DB %..X.X... + DB %..XXXXXX + DB %........ + DB %........ + DB %........ + DB %........ + + ENDC + IF (\1 <= $d4 && \2 >= $d4) + + DB %...X.... + DB %...X.... + DB %...XXXXX + DB %...X.... + DB %...XXXXX + DB %........ + DB %........ + DB %........ + + ENDC + IF (\1 <= $d5 && \2 >= $d5) + + DB %........ + DB %........ + DB %...XXXXX + DB %...X.... + DB %...XXXXX + DB %...X.... + DB %...X.... + DB %...X.... + + ENDC + IF (\1 <= $d6 && \2 >= $d6) + + DB %........ + DB %........ + DB %........ + DB %..XXXXXX + DB %..X.X... + DB %..X.X... + DB %..X.X... + DB %..X.X... + + ENDC + IF (\1 <= $d7 && \2 >= $d7) + + DB %..X.X... + DB %..X.X... + DB %..X.X... + DB %XXXXXXXX + DB %..X.X... + DB %..X.X... + DB %..X.X... + DB %..X.X... + + ENDC + IF (\1 <= $d8 && \2 >= $d8) + + DB %...X.... + DB %...X.... + DB %XXXXXXXX + DB %...X.... + DB %XXXXXXXX + DB %...X.... + DB %...X.... + DB %...X.... + + ENDC + IF (\1 <= $d9 && \2 >= $d9) + + DB %...X.... + DB %...X.... + DB %...X.... + DB %XXXX.... + DB %........ + DB %........ + DB %........ + DB %........ + + ENDC + IF (\1 <= $da && \2 >= $da) + + DB %........ + DB %........ + DB %........ + DB %...XXXXX + DB %...X.... + DB %...X.... + DB %...X.... + DB %...X.... + + ENDC + IF (\1 <= $db && \2 >= $db) + + DB %XXXXXXXX + DB %XXXXXXXX + DB %XXXXXXXX + DB %XXXXXXXX + DB %XXXXXXXX + DB %XXXXXXXX + DB %XXXXXXXX + DB %XXXXXXXX + + ENDC + IF (\1 <= $dc && \2 >= $dc) + + DB %........ + DB %........ + DB %........ + DB %........ + DB %XXXXXXXX + DB %XXXXXXXX + DB %XXXXXXXX + DB %XXXXXXXX + + ENDC + IF (\1 <= $dd && \2 >= $dd) + + DB %XXXX.... + DB %XXXX.... + DB %XXXX.... + DB %XXXX.... + DB %XXXX.... + DB %XXXX.... + DB %XXXX.... + DB %XXXX.... + + ENDC + IF (\1 <= $de && \2 >= $de) + + DB %....XXXX + DB %....XXXX + DB %....XXXX + DB %....XXXX + DB %....XXXX + DB %....XXXX + DB %....XXXX + DB %....XXXX + + ENDC + IF (\1 <= $df && \2 >= $df) + + DB %XXXXXXXX + DB %XXXXXXXX + DB %XXXXXXXX + DB %XXXXXXXX + DB %........ + DB %........ + DB %........ + DB %........ + + ENDC + IF (\1 <= $e0 && \2 >= $e0) + + DB %........ + DB %........ + DB %........ + DB %.XXX..X. + DB %X...XX.. + DB %X...X... + DB %.XXX.X. + DB %........ + + ENDC + IF (\1 <= $e1 && \2 >= $e1) + + DB %..XX.... + DB %.X..X... + DB %.X..X... + DB %.XXXXX.. + DB %.X....X. + DB %.X....X. + DB %XX.XXX.. + DB %........ + + ENDC + IF (\1 <= $e2 && \2 >= $e2) + + DB %........ + DB %........ + DB %XXXXXXX. + DB %.X....X. + DB %.X...... + DB %.X...... + DB %XXX..... + DB %........ + + ENDC + IF (\1 <= $e3 && \2 >= $e3) + + DB %........ + DB %........ + DB %XXXXXXX. + DB %.X...X.. + DB %.X...X.. + DB %.X...X.. + DB %XXX.XXX. + DB %........ + + ENDC + IF (\1 <= $e4 && \2 >= $e4) + + DB %XXXXXXX. + DB %.X....X. + DB %..X..... + DB %...X.... + DB %..X..... + DB %.X....X. + DB %XXXXXXX. + DB %........ + + ENDC + IF (\1 <= $e5 && \2 >= $e5) + + DB %........ + DB %........ + DB %........ + DB %..XXXXX. + DB %.X...X.. + DB %.X...X.. + DB %..XXX... + DB %........ + + ENDC + IF (\1 <= $e6 && \2 >= $e6) + + DB %........ + DB %........ + DB %XX..XX.. + DB %.X...X.. + DB %.X...X.. + DB %.X...X.. + DB %.XXXX.X. + DB %.X...... + + ENDC + IF (\1 <= $e7 && \2 >= $e7) + + DB %........ + DB %........ + DB %.XXXXX.. + DB %...X.... + DB %...X.... + DB %...X.... + DB %...XXX.. + DB %........ + + ENDC + IF (\1 <= $e8 && \2 >= $e8) + + DB %........ + DB %...X.... + DB %.XXXXX.. + DB %X..X..X. + DB %X..X..X. + DB %.XXXXX.. + DB %...X.... + DB %........ + + ENDC + IF (\1 <= $e9 && \2 >= $e9) + + DB %........ + DB %........ + DB %.XXXXX.. + DB %X.....X. + DB %X.XXX.X. + DB %X.....X. + DB %.XXXXX.. + DB %........ + + ENDC + IF (\1 <= $ea && \2 >= $ea) + + DB %........ + DB %.XXXXX.. + DB %X.....X. + DB %X.....X. + DB %.XX.XX.. + DB %..X.X... + DB %XXX.XXX. + DB %........ + + ENDC + IF (\1 <= $eb && \2 >= $eb) + + DB %........ + DB %.XXXXX.. + DB %..X..... + DB %..XXX... + DB %.X...X.. + DB %.X...X.. + DB %..XXX... + DB %........ + + ENDC + IF (\1 <= $ec && \2 >= $ec) + + DB %........ + DB %........ + DB %.XX.XX.. + DB %X..X..X. + DB %X..X..X. + DB %.XX.XX.. + DB %........ + DB %........ + + ENDC + IF (\1 <= $ed && \2 >= $ed) + + DB %........ + DB %........ + DB %.X..XX.. + DB %X..X..X. + DB %X..X..X. + DB %.XXXXX.. + DB %...X.... + DB %........ + + ENDC + IF (\1 <= $ee && \2 >= $ee) + + DB %........ + DB %........ + DB %..XXXX.. + DB %.X...... + DB %..XX.... + DB %.X...... + DB %..XXXX.. + DB %........ + + ENDC + IF (\1 <= $ef && \2 >= $ef) + + DB %........ + DB %........ + DB %..XXXX.. + DB %.X....X. + DB %.X....X. + DB %.X....X. + DB %.X....X. + DB %........ + + ENDC + IF (\1 <= $f0 && \2 >= $f0) + + DB %........ + DB %XXXXXXX. + DB %........ + DB %XXXXXXX. + DB %........ + DB %XXXXXXX. + DB %........ + DB %........ + + ENDC + IF (\1 <= $f1 && \2 >= $f1) + + DB %...X.... + DB %...X.... + DB %XXXXXXX. + DB %...X.... + DB %...X.... + DB %XXXXXXX. + DB %........ + DB %........ + + ENDC + IF (\1 <= $f2 && \2 >= $f2) + + DB %.X...... + DB %...X.... + DB %.....X.. + DB %...X.... + DB %.X...... + DB %XXXXXXX. + DB %........ + DB %........ + + ENDC + IF (\1 <= $f3 && \2 >= $f3) + + DB %.....X.. + DB %...X.... + DB %.X...... + DB %...X.... + DB %.....X.. + DB %XXXXXXX. + DB %........ + DB %........ + + ENDC + IF (\1 <= $f4 && \2 >= $f4) + + DB %....XX.. + DB %...X.... + DB %...X.... + DB %...X.... + DB %...X.... + DB %...X.... + DB %...X.... + DB %...X.... + + ENDC + IF (\1 <= $f5 && \2 >= $f5) + + DB %...X.... + DB %...X.... + DB %...X.... + DB %...X.... + DB %...X.... + DB %...X.... + DB %...X.... + DB %.XX..... + + ENDC + IF (\1 <= $f6 && \2 >= $f6) + + DB %........ + DB %........ + DB %...X.... + DB %........ + DB %XXXXXXX. + DB %........ + DB %...X.... + DB %........ + + ENDC + IF (\1 <= $f7 && \2 >= $f7) + + DB %........ + DB %.XX...X. + DB %X..XXX.. + DB %........ + DB %.XX...X. + DB %X..XXX.. + DB %........ + DB %........ + + ENDC + IF (\1 <= $f8 && \2 >= $f8) + + DB %..XX.... + DB %.X..X... + DB %.X..X... + DB %..XX.... + DB %........ + DB %........ + DB %........ + DB %........ + + ENDC + IF (\1 <= $f9 && \2 >= $f9) + + DB %........ + DB %........ + DB %........ + DB %..XX.... + DB %..XX.... + DB %........ + DB %........ + DB %........ + + ENDC + IF (\1 <= $fa && \2 >= $fa) + + DB %........ + DB %........ + DB %........ + DB %........ + DB %....X... + DB %........ + DB %........ + DB %........ + + ENDC + IF (\1 <= $fb && \2 >= $fb) + + DB %.......X + DB %......X. + DB %XXX...X. + DB %..X..X.. + DB %...X.X.. + DB %...XX... + DB %....X... + DB %........ + + ENDC + IF (\1 <= $fc && \2 >= $fc) + + DB %........ + DB %........ + DB %.X.XX... + DB %..X..X.. + DB %..X..X.. + DB %........ + DB %........ + DB %........ + + ENDC + IF (\1 <= $fd && \2 >= $fd) + + DB %..XX.... + DB %.X..X... + DB %...X.... + DB %..X..... + DB %.XXXX... + DB %........ + DB %........ + DB %........ + + ENDC + IF (\1 <= $fe && \2 >= $fe) + + DB %........ + DB %........ + DB %XXXXXXXX + DB %XXXXXXXX + DB %XXXXXXXX + DB %XXXXXXXX + DB %........ + DB %........ + + ENDC + IF (\1 <= $ff && \2 >= $ff) + + DB %........ + DB %........ + DB %........ + DB %........ + DB %........ + DB %........ + DB %........ + DB %........ + + ENDC + + POPO + + ENDM + + ENDC ;IBMPC_INC + diff --git a/src/font.s b/src/font.s new file mode 100644 index 0000000..561f524 --- /dev/null +++ b/src/font.s @@ -0,0 +1,26 @@ +INCLUDE "font.inc" +INCLUDE "game.inc" +INCLUDE "hardware.inc" + +SECTION "Font Data", ROM0 + +fontTiles:: FONT_TILE_DATA +fontTilesEnd:: + +SECTION "Font Code", ROM0 + +Font_Init:: + ; copy font to tile VRAM. font data must be doubled to render correctly + ld hl, _VRAM + TILE_INDEX_FONT * TILE_SIZE + ld de, fontTiles + ld bc, fontTilesEnd - fontTiles +.loop: + ld a, [de] + ld [hli], a + ld [hli], a + inc de + dec bc + ld a, b + or c + jr nz, .loop + ret diff --git a/src/game.s b/src/game.s index dcad180..ee4b382 100644 --- a/src/game.s +++ b/src/game.s @@ -14,6 +14,8 @@ Game_Start:: call Player_Init + call Font_Init + ; re-enable ldc & interrupts ld hl, rLCDC set 7, [hl] diff --git a/src/map.s b/src/map.s index ac2afb1..65f09d5 100644 --- a/src/map.s +++ b/src/map.s @@ -1,3 +1,4 @@ +INCLUDE "game.inc" INCLUDE "hardware.inc" INCLUDE "util.inc" @@ -76,7 +77,7 @@ Map_Load:: ld a, [CURRENT_TILE_SIZE] ld d, a - ld hl, _VRAM + ld hl, _VRAM + TILE_INDEX_BACKGROUND * TILE_SIZE MEMCPY hl, bc, d ; Write initial map data @@ -604,7 +605,7 @@ enqueue_row_write: ret z ; *ROW++ = 0 - xor a + ld a, TILE_INDEX_BACKGROUND ld [de], a inc de @@ -627,6 +628,7 @@ enqueue_row_write: ; *ROW++ = *MAP++ ld a, [hl+] + add TILE_INDEX_BACKGROUND ld [de], a inc de @@ -642,7 +644,7 @@ enqueue_row_write: ret z ; *ROW++ = 0 - xor a + ld a, TILE_INDEX_BACKGROUND ld [de], a inc de @@ -731,7 +733,7 @@ enqueue_col_write: ret z ; *ROW++ = 0 - xor a + ld a, TILE_INDEX_BACKGROUND ld [de], a inc de @@ -773,6 +775,7 @@ enqueue_col_write: ; *ROW++ = *MAP ld a, [hl] + add TILE_INDEX_BACKGROUND ld [de], a inc de @@ -792,7 +795,7 @@ enqueue_col_write: ret z ; *ROW++ = 0 - xor a + ld a, TILE_INDEX_BACKGROUND ld [de], a inc de @@ -881,6 +884,7 @@ init_row_write: ret z ; *ROW++ = 0 + ld a, TILE_INDEX_BACKGROUND ld [de], a inc de @@ -903,6 +907,7 @@ init_row_write: ; *ROW++ = *MAP++ ld a, [hl+] + add TILE_INDEX_BACKGROUND ld [de], a inc de @@ -918,7 +923,7 @@ init_row_write: ret z ; *ROW++ = 0 - xor a + ld a, TILE_INDEX_BACKGROUND ld [de], a inc de diff --git a/src/player.s b/src/player.s index ae5d74e..002c0e2 100644 --- a/src/player.s +++ b/src/player.s @@ -21,15 +21,10 @@ spriteData: INCBIN "png/sprite/player.2bpp" DEF SPRITE_OAM_IDX EQU 0 -DEF SPRITE_IDX EQU 32 ; tile index, rename later DEF SPRITE_WIDTH EQU 2 DEF SPRITE_HEIGHT EQU 2 DEF PLAYER_SPEED EQU 2 -DEF TILE_WIDTH EQU 8 ; Width of tile in bytes -DEF TILE_HEIGHT EQU 8 ; Height of tile in bytes -DEF TILE_SIZE EQU 16 ; Total length of tile in bytes - DEF GRAVITY EQU (0 << 8) | $2e ; 0.18 DEF INIT_VY EQU (3 << 8) | $99 ; 3.60 DEF INIT_FALL_VY EQU ($ff << 8) | $1a ; -1.1015625 @@ -44,7 +39,7 @@ Player_Init:: ENDR ; Copy sprite to VRAM - ld bc, _VRAM8000 + SPRITE_IDX * TILE_SIZE + ld bc, _VRAM8000 + TILE_INDEX_PLAYER * TILE_SIZE ld hl, spriteData ld d, TILE_SIZE * (SPRITE_WIDTH * SPRITE_HEIGHT) call memcpy @@ -268,7 +263,7 @@ Player_UpdateOAM:: ld [hli], a ld [hl], b inc hl - ld [hl], SPRITE_IDX + ld [hl], TILE_INDEX_PLAYER inc hl ld [hl], c inc hl @@ -283,7 +278,7 @@ Player_UpdateOAM:: ld [hli], a ld [hl], b inc hl - ld [hl], SPRITE_IDX + 1 + ld [hl], TILE_INDEX_PLAYER + 1 inc hl ld [hl], c inc hl @@ -299,7 +294,7 @@ Player_UpdateOAM:: ld [hli], a ld [hl], b inc hl - ld [hl], SPRITE_IDX + 2 + ld [hl], TILE_INDEX_PLAYER + 2 inc hl ld [hl], c inc hl @@ -314,7 +309,7 @@ Player_UpdateOAM:: ld [hli], a ld [hl], b inc hl - ld [hl], SPRITE_IDX + 3 + ld [hl], TILE_INDEX_PLAYER + 3 inc hl ld [hl], c @@ -325,16 +320,16 @@ Player_UpdateOAM:: ; TODO: Can be sped up by using LD A, [NN] ld_OAM_tile hl, SPRITE_OAM_IDX - ld [hl], SPRITE_IDX + 1 + ld [hl], TILE_INDEX_PLAYER + 1 ld_OAM_tile hl, SPRITE_OAM_IDX + 1 - ld [hl], SPRITE_IDX + ld [hl], TILE_INDEX_PLAYER ld_OAM_tile hl, SPRITE_OAM_IDX + 2 - ld [hl], SPRITE_IDX + 3 + ld [hl], TILE_INDEX_PLAYER + 3 ld_OAM_tile hl, SPRITE_OAM_IDX + 3 - ld [hl], SPRITE_IDX + 2 + ld [hl], TILE_INDEX_PLAYER + 2 .done: ret