_almost_ any address.. .there's limited number of bits..
https://github.com/X16Community/x16-doc ... ference.md
$9F2D L0_CONFIG Map Height Map Width T256C Bitmap Mode Color Depth
$9F2E L0_MAPBASE Map Base Address (16:9)
$9F2F L0_TILEBASE Tile Base Address (16:11) Tile Height Tile Width
$9F30 L0_HSCROLL_L H-Scroll (7:0)
$9F31 L0_HSCROLL_H - H-Scroll (11:8)
$9F32 L0_VSCROLL_L V-Scroll (7:0)
$9F33 L0_VSCROLL_H - V-Scroll (11:8)
$9F34 L1_CONFIG Map Height Map Width T256C Bitmap Mode Color Depth
$9F35 L1_MAPBASE Map Base Address (16:9)
$9F36 L1_TILEBASE Tile Base Address (16:11) Tile Height Tile Width
$9F37 L1_HSCROLL_L H-Scroll (7:0)
$9F38 L1_HSCROLL_H - H-Scroll (11:8)
$9F39 L1_VSCROLL_L V-Scroll (7:0)
$9F3A L1_VSCROLL_H - V-Scroll (11:8)
if Lx_CONFIG & 2 is 0, the layer is a tile layer, using tiles with the configured color depth based on Lx_TILEBASE and with tile map data of the configured height/width based on Lx_MAPBASE
If Lx_CONFIG & 2 is 1, its a bitmap layer, map settings are ignored, tile width sets if it is 320 or 640 pixels wide.. height is not set... and scroll registers don't do anything..
because MAPBASE is set using 8bits, the start address must be divisible by 512.
TILEBASE uses only 6 bits, so must be divisible by 2048 ...
so you could configure the VRAM as you please... one possibility might be 320x200 256 color bitmap screen with double buffering.. (doing it this way you swap buffer just writing 1 byte to Lx_TILEBASE
320x200 = 64,000 bytes .. 62.5 K
So potentially no sprites or text mode layers or charsets .. or squeeze these somewhere between the buffers..
$0:0000 => buffer A
$0:FA00 - available for other stuff
$1:0000 => buffer B
$1:FA00 - palette data (fixed)
$1:FC00 - sprite attribute table (fixed )
or maybe you fancy 160x120 .. can't set the bitmap layer any thinner... ends up kinda funny..
$0:0000 => buffer A, but its 160B used then 160B unused per line... could use that 160B for sprites, tiles, etc..
$0:9600 -> 37.5K in... available for other stuff
$1:0000 => buffer b, but its 160B used then 160B unused per line... could use that 160B for sprites, tiles, etc..
$1:9600 -> ~24.5K available for other stuff
$1:FA00 - palette data (fixed)
$1:FC00 - sprite attribute table (fixed )
then considering all the juice bits the FX update provided - like the affine helper to do "mode7" stuff, would have to take up space somewhere for its tiles / map...
or considering you could use the 16-color or 256-color tiled modes to create non-linear frame buffers of arbitray tilextile size...??
you gotta figure out how you want to utilize the space..