Empiezas a manejar una cantidad de datos bastante grande. Yo diría así de memoria que ya te pasas de los 16Ks por página de Memoria para cargar más de 1 pantalla de SC5.
Vas a tener que empezar a trabajar con subpaginas y megaROM
Mírate el PDF manual que acompaña al asMSX. Es bastante claro.
El juego está en el uso de 2 directivas que ya el asMSX te da.
SELECT n AT Dirección
y
SUBPAGE n AT Dirección
La primera te cambia una página la dirección que digas.
y la segunda prepara el asMSX para decirle que esos datos van a partir de esa dirección.
Ojito con todo esto ! que si cambias de página mientras tienes código en ejecución en ella... cuelgue fijo!.
Te pongo un pequeño ejemplo que carga "basura" en subpáginas en diferentes páginas de memoria. Es un programa simple que va leyendo de la subpágina 3 a la subpágina 8, un byte y lo mete en el registro C para verlo por el debugger del blueMSX y ver que efectivamente funciona. Verás que tiene un .break nada más empezar para que se pare ahí la ejecución.
.bios
.megarom KonamiSCC
.start JUEGO
.db "Mi juego se llama algo"
DATO equ 0A000h
JUEGO:
.search
.break
ld B,3
@@LOOP:
ld A,B
SELECT A AT 0A000h
ld A,[DATO]
ld C,A
ld A,B
inc A
and 111b
cp 3
jp nc,@@CONT
ld A,3
@@CONT:
ld B,A
jp @@LOOP
SUBPAGE 1 AT 06000h
db 0
SUBPAGE 2 AT 08000h
db 0
SUBPAGE 3 AT 0A000h
db 0,0,0,0
SUBPAGE 4 AT 0A000h
db 1,1,1,1
SUBPAGE 5 AT 0A000h
db 2,2,2,2
SUBPAGE 6 AT 0A000h
db 3,3,3,3
SUBPAGE 7 AT 0A000h
db 4,4,4,4
SUBPAGE 8 AT 0A000h
db 5,5,5,5
SUBPAGE 63 AT 0A000h
db 60,60,60,60
Fíjate en el SUBPAGE 63. Este es el MÁXIMO que te permite crear el asMSX. En el manual ponía que podía poner SUBPAGE 64. Pues no, creo que es una errata.
Si compilas este código debería crearte una ROM de 512Ks.