hablabais de pasar los datos a la RAM o a la VRAM... ¿como se hace esto?
Pero, ¿en BASIC o en ensamblador?
Si es en ensamblador, tienes una función en la BIOS que se encarga de hacerlo a toda velocidad, sólo tienes que llamarla con los parámetros apropiados:
ld hl,pantalla ; origen en RAM
ld de,$0000 ;destino en VRAM
ld bc,6144 ; longitud
call $005C
Si es en BASIC, pues muchisimo más lento; pero podrías hacer lo mismo con un bucle de VPOKES, no hay instrucción que te lo haga de golpe:
RAM=&HD800
FOR VRAM=0 TO 6143:VPOKE VRAM,PEEK(RAM+VRAM):NEXT
...o algo así, dependiendo de lo que te venga mejor o necesites en tu código.
Respecto al mapeo de habitaciones, supongamos que tu habitación tiene 8x8 posiciones y que tiene esta disposición:
XXXXXXXX
X......X
X......X
X..XX..X
X..XX..X
X......X
X......X
XXXXXXXX
Si las X representan muro y los puntos terreno despejado, puedes optar por mapearlo de muchas formas, si quieres ahorrar memoria y no te importa que todo vaya un poco más lento puedes usar 1's para las paredes y 0's para lo vacio:
DATA &HFF,&H81,&H81,&H99,&H99,&H81,&H81,&HFF
Si quieres que en BASIC vaya todo un poco más rápido a costa de sacrificar memoria, puedes asignar arbitrariamente un byte a cada posición, si utilizamos 1 para los muros y 0 para lo vacio una vez más:
DATA 1,1,1,1,1,1,1,1
DATA 1,0,0,0,0,0,0,1
DATA 1,0,0,0,0,0,0,1
DATA 1,0,0,1,1,0,0,1
DATA 1,0,0,1,1,0,0,1
DATA 1,0,0,0,0,0,0,1
DATA 1,0,0,0,0,0,0,1
DATA 1,1,1,1,1,1,1,1
Así los cálculos para saber que hay en la posición en la que te encuentres son más sencillos y rápidos (tampoco tanto; pero bueno).