Open Xkeeper0 opened 5 years ago
OK, the workaround didn't work as well as I had hoped; it only works with one argument.
MACRO ppu var1 var2
.byte >var1, <var1, var2
ENDM
SampleLabel:
ppu($2000, $60), $ff
b.asm(52):ppu(1): Incomplete expression.
(ppu($2000, $60)), $ff
b.asm(52): Illegal instruction.
ppu $2000, $60, $ff
works (but the $ff is dropped, requiring a new line with ".byte $ff")
So... that didn't work out how I hoped.
+1. I've wanted this feature to bitcrunch parameters together or do "STRING"-"A"+BASE_TILE
type calculations.
Here's where the error comes from, and here's were macros get expanded.
What would happen if you did:
} else if((*p).type==MACRO) {
needanotherpass = true;
}
I'm not quite sure how all this fits together, but the idea is:
Or maybe they could be preprocessor?
In cases of stupid addressing like the PPU, addresses are usually written as
.db $20, $00
, as opposed to the usual way, due to having to write the high byte toPPUADDR
first.I wanted to do something like this:
However, this gives me a warning that macros aren't allowed to be used as expressions.
I got around it right now by removing the
.byte
:...but that will only work if it's the first entry on a 'line', and feels pretty hokey.
This is probably a lot tougher than it sounds, but I at least have a workaround for it right now, so it isn't a huuuuuge issue.