why can't charmaps be 16-bit
starleaf-luna opened this issue · 5 comments
you'd expect
charmap "你", $0000
charmap "好", $0001
charmap "!", $0002
db "你好!"
to assemble into 00 00 00 01 00 02
in the rom, but it actually assembles as 00 01 02
. if you try to force 16-bit values:
charmap "你", $0100
charmap "好", $0101
charmap "!", $0102
db "你好!"
it just errors out. why?
It's probably worth mentioning that you're expecting the assembler to treat the number of digits you write as meaningful, which it never does. That's the source of your initial confusion here. $02
, $0002
, $00000002
, and even just 2
are all the same exact value — they will not be processed any differently. charmap "!", $0002
is exactly the same as charmap "!", $02
or charmap "!", 2
.
It's probably worth mentioning that you're expecting the assembler to treat the number of digits you write as meaningful, which it never does. That's the source of your initial confusion here.
$02
,$0002
,$00000002
, and even just2
are all the same exact value — they will not be processed any differently.charmap "!", $0002
is exactly the same ascharmap "!", $02
orcharmap "!", 2
.
well, you could always have a charmap16
or something that expects there to be a 16-bit value, and normal charmap
could keep being 8-bit
for instance,
charmap16 "A", $01 ; will be treated as $0001
charmap "a", $0002 ; will be treated as $02
Hi, try using a customised version of rgbds that adds support for 16-bit charmap
https://github.com/SnDream/rgbds
Currently at version 0.6.1
example: https://github.com/SnDream/pokecrystal_cn/blob/release_cn/charmap_cn.asm
There is a MACRO version of #97 without compiling custom rgbds, but it's not well suited to existing large projects.