Karoshi MSX Community

Desarrollo MSX => Desarrollo (Español/Spanish) => Mensaje iniciado por: jrcp_kun en 08 de Febrero de 2015, 05:01:06 pm



Título: problema en asmsx
Publicado por: jrcp_kun en 08 de Febrero de 2015, 05:01:06 pm
quiero hacer una pruebas y he creado 2 pantallas completas en sc5

si una la hago
p1:
.incbin   "pantalla1"

si la p2 la hago igual me da error

como tengo que hacer para cargar esa imagen?? la quiero meter en vram pagina 1  asi que seria:

ld hl,p2
ld de,8000h
ld bc,69ffh
call LDIRVM

pero al compilar me lanza error de que no puede meter en page3 los datos.

hay que poner algo diferente o como va??



Título: Re:problema en asmsx (A megarom Vas!)
Publicado por: j4mk3 en 11 de Febrero de 2015, 11:00:18 am
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.
Código:
.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.


Título: Re:problema en asmsx
Publicado por: jrcp_kun en 12 de Febrero de 2015, 11:13:00 am
lo pruebo pues solo estoy haciendo pruebas y aprendiendo

gracias