mirror of
https://github.com/gbdev/rgbds.git
synced 2025-11-20 18:22:07 +00:00
@@ -1204,6 +1204,7 @@ static uint32_t readBinaryNumber(void)
|
|||||||
int c = peek();
|
int c = peek();
|
||||||
int bit;
|
int bit;
|
||||||
|
|
||||||
|
// Check for '_' after digits in case one of the digits is '_'
|
||||||
if (c == binDigits[0])
|
if (c == binDigits[0])
|
||||||
bit = 0;
|
bit = 0;
|
||||||
else if (c == binDigits[1])
|
else if (c == binDigits[1])
|
||||||
@@ -1229,7 +1230,7 @@ static uint32_t readHexNumber(void)
|
|||||||
for (;; shiftChar()) {
|
for (;; shiftChar()) {
|
||||||
int c = peek();
|
int c = peek();
|
||||||
|
|
||||||
if (c >= 'a' && c <= 'f') /* Convert letters to right after digits */
|
if (c >= 'a' && c <= 'f')
|
||||||
c = c - 'a' + 10;
|
c = c - 'a' + 10;
|
||||||
else if (c >= 'A' && c <= 'F')
|
else if (c >= 'A' && c <= 'F')
|
||||||
c = c - 'A' + 10;
|
c = c - 'A' + 10;
|
||||||
@@ -1257,7 +1258,7 @@ char gfxDigits[4];
|
|||||||
|
|
||||||
static uint32_t readGfxConstant(void)
|
static uint32_t readGfxConstant(void)
|
||||||
{
|
{
|
||||||
uint32_t bp0 = 0, bp1 = 0;
|
uint32_t bitPlaneLower = 0, bitPlaneUpper = 0;
|
||||||
uint8_t width = 0;
|
uint8_t width = 0;
|
||||||
|
|
||||||
dbgPrint("Reading gfx constant with digits [%c,%c,%c,%c]\n",
|
dbgPrint("Reading gfx constant with digits [%c,%c,%c,%c]\n",
|
||||||
@@ -1266,6 +1267,7 @@ static uint32_t readGfxConstant(void)
|
|||||||
int c = peek();
|
int c = peek();
|
||||||
uint32_t pixel;
|
uint32_t pixel;
|
||||||
|
|
||||||
|
// Check for '_' after digits in case one of the digits is '_'
|
||||||
if (c == gfxDigits[0])
|
if (c == gfxDigits[0])
|
||||||
pixel = 0;
|
pixel = 0;
|
||||||
else if (c == gfxDigits[1])
|
else if (c == gfxDigits[1])
|
||||||
@@ -1274,12 +1276,14 @@ static uint32_t readGfxConstant(void)
|
|||||||
pixel = 2;
|
pixel = 2;
|
||||||
else if (c == gfxDigits[3])
|
else if (c == gfxDigits[3])
|
||||||
pixel = 3;
|
pixel = 3;
|
||||||
|
else if (c == '_' && width > 0)
|
||||||
|
continue;
|
||||||
else
|
else
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (width < 8) {
|
if (width < 8) {
|
||||||
bp0 = bp0 << 1 | (pixel & 1);
|
bitPlaneLower = bitPlaneLower << 1 | (pixel & 1);
|
||||||
bp1 = bp1 << 1 | (pixel >> 1);
|
bitPlaneUpper = bitPlaneUpper << 1 | (pixel >> 1);
|
||||||
}
|
}
|
||||||
if (width < 9)
|
if (width < 9)
|
||||||
width++;
|
width++;
|
||||||
@@ -1291,7 +1295,7 @@ static uint32_t readGfxConstant(void)
|
|||||||
warning(WARNING_LARGE_CONSTANT,
|
warning(WARNING_LARGE_CONSTANT,
|
||||||
"Graphics constant is too long, only first 8 pixels considered\n");
|
"Graphics constant is too long, only first 8 pixels considered\n");
|
||||||
|
|
||||||
return bp1 << 8 | bp0;
|
return bitPlaneUpper << 8 | bitPlaneLower;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Functions to read identifiers & keywords */
|
/* Functions to read identifiers & keywords */
|
||||||
|
|||||||
@@ -219,6 +219,10 @@ There are a number of numeric formats.
|
|||||||
.El
|
.El
|
||||||
.Pp
|
.Pp
|
||||||
Underscores are also accepted in numbers, except at the beginning of one.
|
Underscores are also accepted in numbers, except at the beginning of one.
|
||||||
|
This can be useful for grouping digits, like
|
||||||
|
.Ql 123_456
|
||||||
|
or
|
||||||
|
.Ql %1100_1001 .
|
||||||
.Pp
|
.Pp
|
||||||
The "character constant" form yields the value the character maps to in the current charmap.
|
The "character constant" form yields the value the character maps to in the current charmap.
|
||||||
For example, by default
|
For example, by default
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ _1234::
|
|||||||
db &200 ; octal
|
db &200 ; octal
|
||||||
db %11110000, %10 ; binary
|
db %11110000, %10 ; binary
|
||||||
dl 6.283185 ; fixed point
|
dl 6.283185 ; fixed point
|
||||||
|
dw `01233210, `00332211 ; gfx
|
||||||
|
|
||||||
; with underscores
|
; with underscores
|
||||||
dw _1234 ; label
|
dw _1234 ; label
|
||||||
@@ -19,3 +20,9 @@ _1234::
|
|||||||
db &2_0_0_ ; octal
|
db &2_0_0_ ; octal
|
||||||
db %1111_0000, %1_0 ; binary
|
db %1111_0000, %1_0 ; binary
|
||||||
dl 6_._283_185 ; fixed point
|
dl 6_._283_185 ; fixed point
|
||||||
|
dw `0123_3210, `00_33_22_11_ ; gfx
|
||||||
|
|
||||||
|
; underscores as digits
|
||||||
|
opt g_ABC, b_X
|
||||||
|
db %_X_X__XX
|
||||||
|
dw `_A_B_C__
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user