Bueno, bueno, bueno... Me imagino que WYZ estará ya aporreando el teclado
para daros una respuesta, pero, por si acaso, allá va:
suponte que hemos puesto en HL la dirección de origen de datos y en DE la
dirección de destino en VRAM, y en BC la longitud total a copiar
COPIA_SEMI_RAPIDA:
; Configura la dirección de VDP
di
ld a,l
out (99h),a
ld a,h
or 40h
out (99h),a
; Prepara para copiar salvajemente
ld c,98h
; Espera un poquito, por si acaso
nop
nop
; Copia a lo bruto
otir
; Se acabo
ei
ret
Por supuesto, esta es una aproximación que te dará algo más de velocidad que
la BIOS, pero no es óptimo. Además, todos los movimientos de/a VRAM tienes
que hacerlos en el v-blank, que es cuando tienes un ancho de banda máximo.
Para los más aventureros, decir que la instrucción OTIR es francamente
lenta, y que se gana velocidad haciendo copias de bloques con OUTI. Para más
datos, creo que podéis encontrar info en http://map.tni.nl
Comprobad que no he hecho nada mal, que lo he escrito de memoria y a toda
velocidad.
Un saludo,
Edu R
P.S: Espero que lo que estéis programando sea para MSXdev'04, eh? ;-)
P.P.S: Y ni se os ocurra tratar de pasar más de 1000 bytes en cada
interrupción, que vais a ir muy justos. Considero que 800 bytes se pueden
mover bien (esto es, 768 de la tabla de patrones y lo que queda para
atributos de sprites). WYZ puede hacer caso omiso de esta recomendación,
porque sabe lo que se hace.
From: "napalmsx" <napalm(_en_)demoscener(_punto_)org>
Reply-To: hispamsx(_en_)yahoogroups(_punto_)com
To: hispamsx(_en_)yahoogroups(_punto_)com
Subject: [hispamsx] Acceso rapido a VDP y otros temas religiosos
Date: Wed, 03 Mar 2004 23:14:53 -0000
Hola buenas, estaba yo aporreando super rutinas graficas en asm (para
MSX 1, de momento ), cuando, o sorpresa ( falso, lo sabia ), me
encuentro con un lentisimo acceso a VDP mediante BIOS ( que M$ tenia
que ser ), en un principio intente el acceso manual mediante outs,
pero no funciono muy bien, y pense "ya lo mirare luego", pues bien,
ese "luego" ha llegado (mamá miedo), ya tengo hechas las rutinas que
queria, y ahora me falta un acceso a vram rapido cual rayo cosmico.
Comentaros que he mirado e incluso medio leido, los textos sagrados y
otras santas escrituras como el "MSX2 Technical Handbook","Red book",
manual oficial del vdp, y el "informatica para torpes", y el problema
no es que no lo expliquen, es que no lo entiendo T_T
Pues eso, que volvere a leerme, mas detenidamente esos documentos, a
ver si me sale, y os queria pedir, o experimentados usuarios
obsoletos, consejo, recomendaciones, experiéncias, indicaciones a
otros textos oscuros, y si os aburris mucho, ejemplos.
Muchas grácias.
PD. a mi compañero de compilaciones le ocurre lo mismo pero con el
PSG, tema timers y tal, no tengo datos exactos que los problemas que
tiene pero creo que va por el mismo camino de cabras que yo. Por que
si algun guru del PSG quiere iluminarnos, le estaremos agradecidos.
PD2. supongo que ha quedado claro que la meta es ignorar totalmente
la bios ;)
Muchas grácias
Nos leemos
Arnau Castellví.
*HispaMSX. La mailing-list de MSX en castellano*
Para cualquier duda: hispamsx-owner(_en_)yahoogroups(_punto_)com
Web de lista: http://www.hispamsx.org
Enlaces a Yahoo! Grupos
Para visitar tu grupo en la web, accede a:
http://es.groups.yahoo.com/group/hispamsx/
Para cancelar tu suscripción en este grupo, envía
un mensaje en blanco a:
hispamsx-unsubscribe(_en_)yahoogroups(_punto_)com
El uso que hagas de Yahoo! Grupos está sujeto a
las Condiciones del servicio de Yahoo!:
http://es.docs.yahoo.com/info/utos.html
_________________________________________________________________
Dale rienda suelta a tu tiempo libre. Encuentra mil ideas para exprimir tu
ocio con MSN Entretenimiento. http://entretenimiento.msn.es/