>what exactly are tiles/kacheln?
tiles are 8 pixel by 8 pixel (well, by default - the VERA can do tilemaps 8x8,8x16x16x8,or16x16) images at the appropriate bitdepth... The text mode for both BASIC and the prog8 library you were using uses 8x8 1bpp (1 bit per pixel) graphics.
So at $TILE_BASE_ADDRESS, these are stored 1 after the other .. in binary it would look something like this -
00000000 ; +0, tile 0 -> blank
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000 ; +8, tile 1 -> A
00011000
00100100
01000010
01111110
01000010
01000010
00000000
......
every 8 bytes -> 1 tile .
>are tiles/kacheln chars?
that is how the text modes use the tiles, but one could use them for any 8x8 bit of graphics... as an example, I would highly recommend checking out the youtube videos on PETSCII robots, which utilized the tile set to do all the drawing on the PET and a few other versions.
Other examples of this type of graphics scheme would be on the NES - the CHAR ROM contained 2 sets of 256 tiles the video chip could use for graphics...
in the 1bpp tile modes, only 256 tiles can be addressed, in the 2bpp,4bpp,8bpp ( 4 color, 16 color, 256 color ) tile modes, the 2bytes in the MAP data are defined differently -
MAP_BASE points to a tile map containing tile map entries, which are 2 bytes each:
Offset Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
0 Tile index (7:0)
1 Palette offset V-flip H-flip Tile index (9:8)
allowing up to 1024 different tiles and ability to flip them vertically or horizontally.
>Where are the tiles made and stored please?
KERNAL puts the tile set here - $1:F000-$1:F7FF Charset
https://github.com/X16Community/x16-doc ... ace-layout
I tend to create tiles using a text editor, using binary or hex constants..
IE - in my assembly code might use this for 1bpp
.byte %00000000
.byte %00011000
.byte %00100100
.byte %01000010
.byte %01111110
.byte %01000010
.byte %01000010
.byte %00000000
But that would be the same as this string of HEX values -
.byte $00,$18,$24,$42,$7E,$42,$42,$00
>How are the tiles written on the screen?
By using a tiled layer mode, TILEBASE points to where tile #0 would start in VRAM, and then in the MAP you use the tile indexes.
IE - the charset the kernal uses has 'A' as tile #1, so to write an A onto the screen somewhere requires writing a 1.. 'F' is tile #6, etc.. and you would write those to the address corresponding with the row and column in the map.
if you wanted to place a 'tile' somewhere randomly on the screen... say at (137,53), then you would need to use a SPRITE or use a BITMAP mode layer and copy the pixels there yourself. ( Copying pixels in this way is often called 'blitting', in case you are trying to find more info on that technique)... BITMAP layers can be 1,2,4,or 8 bpp , SPRITES are limited to being 4 or 8bpp - you either have 16 color sprite or 256 color sprite ...
For a game, especially something trying to look like say an NES or SNES style game, layer0 might be configured to use a 2bpp or 4bpp tile mode.. with the map data and tiledata put somewhere in VRAM where there's room..
That would be for the background / level itself..
Then sprites between layer0 and layer1 for enemies, power ups, etc..
And maybe leave layer1 as text mode, so that you can write HUD or other text as an overlay.
You always ask where these things are stored... but the VERA is highly configurable, so unless you are using a particular defined mode, like say the way BASIC / KERNAL sets things up, or a particular programming library, the locations in VRAM are up to you, as well as which layers are enabled/disabled and the other assorted features, like switching the display from 640x480 to 320x240 or 160x120 or 256x192 or various points in-between with the scale registers ..