Buenas!
Creo que ya tengo todo bastante claro. Muy interesante el "meisei fast vram". Tiene alguna cosilla curiosa, como que al arrancar me detecta accesos demasiado rápidos a VRAM de la propia C-BIOS. Y también me detecta accesos demasiado rápidos usando exclusivamente BIOS. Curioso.
Aún así, gracias al "meisei fast VRAM" y cambiando los colores del borde ya he conseguido mandar a VRAM todo lo que necesito en el vblank. Gracias Sapphire y Edu!
Anyway, tengo una nueva duda. Veréis, el núcleo de mi juego era tal que asín:
; Actualizar lógica del juego
ei
.WAIT: ld a, (ICNT)
or a
jr z, .WAIT
xor a
ld (ICNT), a
; Transferencias a VRAM
Y en la interrupción HTIMI básicamente hago
ld hl, ICNT
inc (hl)
call PLAY_MUSIC
El problema con que me encontré es que cuando se produce la interrupción, tras ejecutar mi código, ejecuta otras cosas de la BIOS, y, claro, me roba unos ciclos preciosos del vblank.
Mi solución fue meter las transferencias a VRAM dentro de mi rutina de servicio a la interrupción, así me aseguro que lo primero que se hace en el vblank es actualizar VRAM. Pero, claro, así se me puede colar una interrupción mientras estoy actualizando la lógica del juego y de vez en cuando me salta un frame mal actualizado.
De momento, uso un flag que impide actualizar VRAM si no he terminado con la lógica, pero no me acaba de convencer. ¿Hay alguna forma mejor de hacer que nada más entrar en el vblank se ejecute lo que yo quiera sin tener que esperar a que la BIOS termine sus cosas?
PS: Edu, sí, la verdad es que ya hay netbooks más que decentes. El mío es un Toshiba NB305 con una CPU N455 a 1.66GHz. Eso sí, tiro de Windows 7, y es una lástima, porque va más lento de lo que debería. Aún así, me da un poco de miedo meterle Linux. Según me han comentado puede dar problemas con la salida VGA, y también suelo usarlo para dar charlas con proyector.
PS2: La curiosidad me pudo, y decidí probar el sjasm, así que ahora mismo estoy con este en lugar de asMSX
PS3: No, no estoy preparando nada para la dev. Me puse con este proyecto en navidades, y apenas tengo nada aún.