Título: ¿1536 bytes a VRAM en un frame? Publicado por: Jon_Cortazar en 02 de Junio de 2006, 01:52:21 pm Ehum, ¿alguien compartiría conmigo -por el amor de dios- la sabiduría de las transferencias rápidas a VRAM (esto es, sin usar la BIOS). Para una demo que ando preparando necesitaría transferir 1536 bytes a VRAM en un solo frame, ya se que es un poco bestia, pero...
Además temo el asunto de las incompatibilidades con las diferentes máquinas... ¿alguien que pueda construir una rutina sólida y reutilizable -léase snippet- con comprobación de cuales son los puertos de lectura/escritura de VRAM utilizados por el FTP y demás?. He estado buscando pero solo he visto pequeñas reseñas de OUTs sin dejar las cosas muy claras. Notese que quien suscribe es un completo neófito en hacer burradas con el VDP y que siempre ha sido muy formalito y ha usado siempre la BIOS en sus relaciones sexuales ;). Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: MsxKun en 02 de Junio de 2006, 01:58:27 pm Y asi deberia seguir siendo! >:(
:P Y a todo esto... cuanto es el limite teorico usando la BIOS? Me parece que se comento, pero es por no buscar... :-[ Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: pitpan en 02 de Junio de 2006, 04:44:04 pm Por el tema de las incompatibilidades yo no me apuraría. Pero si quieres hacerlo bien, tienes que leer las posiciones de memoria 6 y 7 del slot 0-0, es decir, de la BIOS. En cualquier MSX sin tunear, tendrás
?HEX$(PEEK(&h0006)) 98 Ok Ese es el puerto de datos. ¿Cómo usarlo? Pues bien sencillo desde ensamblador: LD A,[0006h] LD C,A Y a partir de aquí, en lugar de utilizar OUT [nn],A habría que usar OUT [C],A o las instrucciones parecidas de bloques, OUTI, OTIR, etc Mi recomendación: pasar de todo. Asume que 98 y 99 están siempre ahí. De hecho, sólo cambiaría para MSX1 con ampliación externa a MSX2, pero seguirían teniendo en 98 y 99 los puertos del TMS9918, así que ningún problema ;) Y con OUTIs llegas bien a 1,5 KB, incluso a 60 Hz, siempre que no quieras copiarlos "muy arriba" en la pantalla. Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: jjfranco en 02 de Junio de 2006, 05:50:53 pm :P Y a todo esto... cuanto es el limite teorico usando la BIOS? Me parece que se comento, pero es por no buscar... :-[ Por favor reivindico que es conteste a MsxKun, me resulta interesante la pregunta. Thank you (<- Es lo unico que se de inglés) Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: Jon_Cortazar en 02 de Junio de 2006, 09:46:56 pm Creo que ronda los 800 bytes o así, ¿no? ??? ... no se si habrá alguien que nos pueda dar el dato exacto...
Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: WYZ en 02 de Junio de 2006, 10:32:04 pm Mola la pregunta ;D
realmente para transferir 600h bytes yo no usaría OUTI porque, no sale mucho mas rentable: 1 OUTI =16 t-states 1 OTIR=16/21 t-states es decir, un OTIR cuesta lo mismo que un OUTI si no llega a B=0 que sale 5 t-states mas caro. si hacemos: Código: CALL SET_VDP_TO_WRITE_????_ADDRESS LD B,$00 LD C,[$0006] ;O LD BC,$0098 (*) si ya se, esto no existe ;) LD HL,RAM_ADDRESS OTIRx6 sale 5*6=30 T-states mas caro que si metemos una ristra de 600h OUTIs seguidos (600h bytes ?) es decir, ganamos la escritura de 2 bytes tirando por lo alto. Eso es cogersela con papel de fumar. Otra cuestion es si es posible volcarlo todo en un solo frame. Prueba a ver ;D Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: jjfranco en 03 de Junio de 2006, 06:56:18 am Creo que ronda los 800 bytes o así, ¿no? ??? ... no se si habrá alguien que nos pueda dar el dato exacto... Voy a ser mas claro, se puede hacer una transferencia de 768 Bytes (osea un screen 1 completo) y algo más(32 bytes mínimo) desde la Bios. O para estas cantidades ya es mas apropiado usar los puertos. Gracias. Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: Jon_Cortazar en 03 de Junio de 2006, 09:23:13 am Gracias por vuestras respuestas. Voy a hacer un intento y os cuento el resultado. Merece la pena hacer la prueba, ya que sin esta transferencia rápida el programa correría a 12,5 fps, y con ella podría conseguir llegar hasta los 16 fps, lo cual sería todo un avance. Un frame ya lo gasto procesando todo el render, otro frame para presentarlo en pantalla (o dos, si uso las rutinas de la BIOS para ello), y el otro para detectar el movimiento del personaje, colisiones, etc... :'(
Y, ¿alguien tiene el dato de solicita Jos'b?. Yo nunca he sabido exactamente cuantos bytes puedes pasar en un frame usando BIOS, pero creo que, si tu intención es pasar una pantalla entera del mapa de nombres y algo más para sprites vas a andar bien pero muy cerquita del límite ;), depende de qué mas cosas hagas dentro del frame aparte de la mera transferencia a VRAM, claro... Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: jltursan en 03 de Junio de 2006, 11:23:16 am ¡Veo que cada vez más gente se vuelca al lado oscuro! ;)
Respecto a la velocidad del volcado, yo no consideraría únicamente eso. También tienes que tener en cuenta el tiempo que te roba la interrupción de la BIOS cada uno de esos frames. Si quieres rascarle un buen pico, este hilo de Sapphire no tiene desperdicio: http://www.msxgamesbox.com/karoshi/index.php?topic=212.0 Y respecto al volcado a VRAM yo haría varias consideraciones : - Los consumos en ciclos son : Código: OUT (N),A ----- 12T Así pues, el OUT (N),A es la instrucción de volcado más rápida que hay, el OUTI la supera gracias a que incluye un par de operaciones sobre los registros del Z80. El OTIR es bestialmente más potente que los anteriores, hay que tener en cuenta que si ponemos 600 OUTIs seguidos tendremos un consumo extra de 2T por cada OUTI, 600x2=1200T contra los 2T extras que consumirá el OTIR (¡se te olvidaron los ciclos de espera M1 Wyz ;)!). Una pena que definitivamente no se pueda usar en los MSX de primera generación, ahora que ¿os imaginas lo potente que es en un TR?; pues de hecho es (mucho) más rápido que usar el VDP :POUT (C),A ----- 14T OUTI ---------- 18T OTIR ---------- 18T/23T Respecto a cual usar; pues dependerá de lo que se quiera volcar y de su geometría en pantalla. ¿Te acuerdas aquel comentario de Sapphire hablando de la "multitarea"?, si por ejemplo, se trata de un volcado en el que el ancho no es de 32 bytes (si hablamos de NAMTBL) y por tanto te ves obligado a sumar una cantidad al puntero a la VRAM, puedes hacerlo de manera que esta operación sea el propio retardo, vamos que procura no usar NOPs, que eso es desperdiciar el Z80 :D. - Está claro que el VDP de los MSX1 no soporta un flujo continuo de datos, necesita forzosamente alguna pausa entre OUTs . Esa es la razón de porque no funciona el OTIR en los MSX1; bueno, para ser precisos si que funciona; pero cuantos más datos le hagamos volcar el riesgo de que se nos vaya a la porra se incrementa. Lo mejor es usarlo para transferencias mínimas. - La pausa que tenemos que dejar es lo que levanta más discusiones. Históricamente se hablaba de 8T, recientemente dvik en un hilo de MRC comentaba que se necesitan 16T (en ningún caso estoy contanto los ciclos empleados por el propio OUT), la BIOS deja 40T y yo empíricamente he llegado a dejar lo mínimo, 5T y ha funcionado. - Hay muchos modelos de MSX1, no se cual se puede considerar el más lento. Personalmente, el HB-75P lo tengo considerado como equipo lento, únicamente porque fue de los primeros en llegar a España, la pregunta es ¿cuales son los primeros modelos MSX1 que aparecieron en el mercado?. Ya se que probablemente esos modelos incorporaran memorias lentas en sus primeras series y que luego se actualizará su hardware; pero es por tener alguna referencia. Con esa información se podría tratar de averiguar, a base de testeos, cual es el mínimo retardo necesario para que funcione en el 99,99% de los aparatos. En el "Caverns of Titan" yo tengo las siguientes estructuras: Código: .LOOP: out ($98),a nop djnz .LOOP Funciona en todos los equipos que he probado. Si le quitas el NOP se va al carajo. Lo podeis comprobar en el texto parpadeante de la pantalla inicial del juego. Código: outi nop E indefinidamente repites las anteriores instrucciones. Funciona bien para todo lo que lo he usado : caracteres animados sobre todo (cascadas, puerta, rayos, etc.). Código: .LOOP: outi jp nz,.LOOP Idem que el anterior. Lo uso en la rutina de impresión de carácteres. El OTIR sólo lo uso en la rutina de BiFi de cambio de paleta, que como son pocos bytes no pasa nada. ::) Bueno, ya está bien, que me duele muuuuucho la cabeza y empiezo a no tener claro lo que he escrito :) P.D.: ¿Lo de los 3,5Kb era broma, no, Robsy? :o Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: pitpan en 03 de Junio de 2006, 11:42:37 am Pues no, no era broma. De hecho, la VRAM traga como una condenada. A ver si puedo hacer una "demo" con lo que tengo y ver qué tal funciona en más equipos MSX. Por supuesto, en BlueMSX/openMSX funciona bien, y también en mi SANYO MPC-100, que es un equipo tirando a lento. Prepararé una ROM y os pediré que la probéis en MSX reales, a ver si aguanta.
Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: pitpan en 03 de Junio de 2006, 11:48:46 pm Pues las pruebas son satisfactorias. Prepararé algo un poco más llamativo, para que no creais que os estoy tomando el pelo con algún truquillo de feria, y veréis un video a 50/60 Hz y media pantalla. La aplicabilidad para juegos es aún discutible, pero creo que tengo CPU suficiente aún como para además incluir un replayer ligero funcionando sincronizado con el refresco.
Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: jltursan en 04 de Junio de 2006, 03:25:12 pm ¡Genial!, ¡queremos ese BIN/ROM para ya!. ;D
La verdad es que tengo bastantes ganas de verlo funcionando; pero sospecho de que la razón de la VRAM trague tanto es que tu SANYO te ha salido bueno, bueno... ;) Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: jltursan en 05 de Junio de 2006, 02:21:15 pm He estado haciendo cuentas y ni por esas...veamos:
El retardo base en los accesos al VDP es de 2 microsegundos, por lo que habrá que calcular cuantos ciclos de espera supondrán para un Z80 a 3,579545Mhz 1T/3579545 = 0,000000279 segundos/ciclo 0,000002/0,000000279 = 7,16845 ciclos Suponen 7,16 ciclos del Z80 de los MSX, ya tenemos pues que hay que esperar entre 7-8 ciclos de media. Luego en función del modo de pantalla habrá que esperar (o no) un poco más antes de poder acceder al dato en la VRAM (tanto da leer como escribir). Para screen 2 tenemos un retardo extra que va de 0 a 6 microsegundos, por lo que, en el peor de los casos tendremos que esperar hasta 28T-29T. La excepción la tenemos únicamente durante una ventana que dura 4300 microsegundos tras el retrazado vertical, en ese intervalo el retardo extra es cero. Durante ese intervalo basta con esperar esos 7-8 ciclos iniciales. ¿Cuantos bytes podriamos transferir teóricamente durante ese intervalo (que es el óptimo para transferir datos a toda velocidad)?. Para calcularlo primero averiguamos cuantos ciclos tenemos disponibles durante ese lapso de tiempo : (4,3ms * 3579545) / 1000ms = 15392 ciclos 15392 / 18 (ciclos OUTI) = 855 instrucciones OUTI Así pues, podriamos encadenar 855 OUTIs uno detrás de otro sin esperas, lo que da poco más de 1/6 de pantalla o 3 lineas y pico de caracteres. A todas luces insuficiente. :( Y si definitivamente si no accedemos al VDP en ese intervalo, hay que esperar un poco entre acceso y acceso. He hecho también alguna preguntilla por el MRC para ver si me aclaran algunas dudas que tengo... ??? Como es probable que con tanto número me haya liado, espero que algún matématico que ronde por aquí le eche un vistazo a las cuentas y razonamientos en general. A ver si resulta que está más o menos correcto :P Vamos que me muero de ganas de ver esos experimentos ;D Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: SapphiRe en 06 de Junio de 2006, 02:00:14 pm Como es probable que con tanto número me haya liado, espero que algún matématico que ronde por aquí le eche un vistazo a las cuentas y razonamientos en general. A ver si resulta que está más o menos correcto :P No tengo ganas... se me han quitado al leer que igual tengo que retocar las rutinas que hicimos para meter más retardos entre OUTI y OUTI... :'( Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: jltursan en 06 de Junio de 2006, 02:58:48 pm Quita, quita, ni se te ocurra, piensa que la media de retardo viene a ser de 18T y (si me lo confirman en MRC) resulta que el OUT también podría contarse; así que las espaldas estarían cubiertas. ;D
Y todo ello suponiendo que no envies mucho más de 900 bytes, si te apañas con eso, casi seguro que lo puedes hacer a toda caña sin preocuparte por nada. Yo también me he puesto a hacerme algunos programillas para ver si hay un fundamento "práctico" en todo esto o como siempre del dicho al hecho hay mucho trecho. Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: SapphiRe en 06 de Junio de 2006, 03:47:53 pm Quita, quita, ni se te ocurra, piensa que la media de retardo viene a ser de 18T y (si me lo confirman en MRC) resulta que el OUT también podría contarse; así que las espaldas estarían cubiertas. ;D Y todo ello suponiendo que no envies mucho más de 900 bytes, si te apañas con eso, casi seguro que lo puedes hacer a toda caña sin preocuparte por nada. Yo también me he puesto a hacerme algunos programillas para ver si hay un fundamento "práctico" en todo esto o como siempre del dicho al hecho hay mucho trecho. Ummm... entonces bien. ¿Más de 900 bytes? ¡Ni loco! El scroll pixel a pixel que viste sólo necesita 240, 256 o 480 bytes (según el modo de juego) y el que no has visto (pero tienes que ver, creo que merece la pena el efecto visual) sólo transfiere 440 bytes por frame. Graaaasiaaa! -- F. P.D. A ver si hacemos otra quedada entre los de Madrid y nos vamos a algún otro restaurante chulo o repetimos en el "Bar La Peña". Adoc, ¿te apuntas? Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: WYZ en 06 de Junio de 2006, 04:05:04 pm Bien, parece que se van aclarando las cosas ::) el caso es que, Jon aun no nos ha dado a conocer sus resultados.
..Saludos desde Palma de Mallorca, tierra de MSXeros ;D Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: jltursan en 06 de Junio de 2006, 04:44:02 pm Citar El scroll pixel a pixel que viste sólo necesita 240, 256 o 480 bytes ¡Que lujazo!; pues entonces puedes plantearte incluso el hacer una versión deluxe-ultra-rápida en la que no haya esperas entre OUTs o incluso usar OTIR ;D; siempre y cuando la hagas nada más empezar el Vblank, claro. Citar ..Saludos desde Palma de Mallorca, tierra de MSXeros [ENVIDIA]¡Anda!, ¿y que haces tú por allí pillastre? :D[/ENVIDIA] Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: Jon_Cortazar en 06 de Junio de 2006, 04:52:30 pm WYZ: El Jon anda a media asta con mugollón de curro -y no me refiero al curro MSXero...-. Ya lo sabes tu bien, que me queda poquito poquito para mandar a betatestear a los computeremuzoneros la bestia de na-th-an adaptada a nuestra querida norma japonesa... puff, y el MSXdev por medio, dios, quiero dias de 48 horaas!. Por cierto, un lujazo leerte por aquí WYZ, ya sabes que esta es tu casa - o tu bar, lo que prefieras ;) -
jltursan: El scroll pixel a pixel horizontal y a todo color de Malaika será casi casi fullscreen y transferirá 576 bytes ;) (ahora bien, necesitará todo un frame para generar el frame siguiente, con que el scroll correrá a 25 fps -> lo cual es muy asumible y el resultado es bastante acongojante) ;) Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: SapphiRe en 06 de Junio de 2006, 05:03:32 pm jltursan: El scroll pixel a pixel horizontal y a todo color de Malaika será casi casi fullscreen y transferirá 576 bytes ;) (ahora bien, necesitará todo un frame para generar el frame siguiente, con que el scroll correrá a 25 fps -> lo cual es muy asumible y el resultado es bastante acongojante) ;) Un scroll con esas características a 25fps está más que genial. De todas formas, ¿has probado a intercalar la transferencia de un byte a VRAM con el cálculo del byte del siguiente frame? Piénsatelo. Y recuerda que en algún momento tendremos que hacer entre ambos un how-to sobre scrolls pixel a pixel en MSX1 :D Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: Jon_Cortazar en 06 de Junio de 2006, 05:08:31 pm De todas formas, ¿has probado a intercalar la transferencia de un byte a VRAM con el cálculo del byte del siguiente frame? Piénsatelo. Nah, demasiado cañero para mi cerebro dañado por el alcohol. Además ya tengo la estructura de trabajo por cada frame muy bien definida y no voy a cambiar el diseño del programa. De todas formas es una idea ingeniosa (a la par que malévola) ;DY recuerda que en algún momento tendremos que hacer entre ambos un how-to sobre scrolls pixel a pixel en MSX1 :D Sure! ;)Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: SapphiRe en 06 de Junio de 2006, 05:13:43 pm Y recuerda que en algún momento tendremos que hacer entre ambos un how-to sobre scrolls pixel a pixel en MSX1 :D Sure! ;)Y los tenemos de todos los gustos y colores: horizontales, verticales, parallax, con transparencias... ;D ;D ;D Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: pitpan en 06 de Junio de 2006, 08:19:39 pm Pues me gustaría que probarais la siguiente ROM: entrelazado 512x88 (http://www.robsy.net/int51288.rom).
Se trata de una prueba un poco chunga en la que intercalo dos imágenes de 256x88 originadas desde una imagen original de 512x88. Al utilizar el refresco, pues se consigue que todo parpadee muchísimo, pero la imagen gana en calidad, ciertamente, frente a cualquiera de las versiones de 256x88. Lo llamativo del programa no es la idea de entrelazado, que es bastante antigua. De hecho, las imágenes de 107 colores de Daniel Vik o el modo de texto en dobles columnas de jltursan, son ejemplos de lo mismo. Lo curioso aquí es la transferencia a RAM: estoy pasándole al bueno del MSX 2816 bytes a VRAM por frame. Es el equivalente a 256x88 píxels de patrones monocromos. No hay trampa ni cartón. Por supuesto, no está al límite: se podrían llegar -calculo- a unos 2900-2950 bytes por frame. No lo he ajustado para 60 Hz, así que sólo debería funcionar en ordenadores MSX a 50 Hz. Eso sí, probadlo y si tenéis pegas, comentádmelo: modelo, casuística. A 60 Hz, calculo que nos quedaríamos en unos 2304 bytes seguro, es decir, equivalente a 256x72 pixels de patrones monocromos. Incluso en este peor horizonte, estamos hablando de más de 2 KB por frame. Y se puede hacer. Truquitos a tener en cuenta: sin BIOS, OUTIs a lo burro, pausas adicionales al finalizar v-blank. Siento que mi primera estimación de 3,5 KB/frame fuera un poco exagerada. Aun así, me he quedado a las puertas de las 3 KB/frame a 50 Hz, lo cual creo que es un buen logro. Estamos hablando de actualizar media pantalla en monocromo por frame. Y si necesitamos otro frame para los cálculos, nos quedarían juegos muy dinámicos funcionando a 25 Hz. Por cierto, la foto, aunque mala, es de dos amigas de la facultad. Saludillos para Lastor y Zut. ;) Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: pitpan en 06 de Junio de 2006, 08:24:56 pm Ah! Y no hay trampa ni cartón: no desactivo la pantalla en ningún momento y, como imaginaréis, no se trata de optimización de patrones y cambios en la tabla de nombres. Podéis mirar el estado de la VRAM desde el debugger del BlueMSX. Os podéis fiar de Robsy, palabrita. ;D
Si la cosa no funciona, es que falta incluir retardos. Pero creo que he incluido los suficientes. Mi SANYO MPC-100 se lo come sin problemas. Y ahora me vuelvo a seguir con mi juego, que ya va tomando forma. Por supuesto, mi juego utiliza la BIOS a rajatabla, sin movidillas friki-VRAMeras. ;D Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: Jon_Cortazar en 06 de Junio de 2006, 10:30:02 pm La leche, no me lo puedo creer... ¿tanto traga la VRAM?. A ver, le metes 2960 bytes a piñon con OUTIs correlativos y después empiezas a rebajar la presión y le metes el recopón de OUTIs, pero esta vez poniendole dos NOPs de descanso entre medias... ¿por que ese cambio?. ¿Es que se llega a una 'zona peligorsa'? ???, la verdad, no entiendo por que le puedes meter los OUTIs sin más -y los acepta-, y luego despues bajas el pistón..., la imagen está en la zona baja de la pantalla, ¿si estuviera más arriba te cogería el refresco?... Respuestas, respuestas ;). Por cierto, fantástico socio!. ¿Que tal un pequeño texto a modo de tutorial?. En cuanto pueda lo probaré con mi Sony HB10P.
Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: pitpan en 07 de Junio de 2006, 12:00:03 am Pues sí, socio, ésa es la idea.
He establecido la duración del v-blank en ciclos, y le he metido una ristra de OUTIs equivalente a esa duración. A partir de ahí, sigo haciendo OUTIs pero con dos NOPs de retardo entre ellos. Así consigo llegar al total. Lo he puesto en la parte baja de la pantalla porque la idea es poder escribir en VRAM fuera del v-blank, y así, mientras se está dibujando ya la parte alta de la pantalla se puede volcar info aún a VRAM no renderizada (parte baja, en mi caso). Hasta donde sé, 2 NOPs más la duración del propio OUTI son retardo suficiente para que no se pierda nada de lo que se manda a VRAM. La solución es ideal para juegos, por ejemplo, de carreras: en la mitad superior de la pantalla, marcadores, horizonte con scroll falso, etc, que se actualiza en frame PAR junto con los cálculos de pantalla gráfica; en el frame IMPAR se vuelca la mitad inferior de la pantalla, con precision de pixel. Sirve también para arcades laterales, etc. Mil opciones! Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: pitpan en 07 de Junio de 2006, 12:04:24 am Por no hablar de video a pantalla completa en screen 3 a 50/60 FPS! ;D
Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: jltursan en 07 de Junio de 2006, 09:09:24 am Pues parece que al final me voy a quedar sin probarlo en mi Sony MSX1; por lo que se ve, se me ha fastidiado por completo la disquetera externa.... :'(.
Lo he probado en un MSX2 y se ve tal que en el BlueMSX, el efecto es muy llamativo y cuanto más miras la imagen más definición gana :). El chorro inicial de OUTIs parecen más de los que debería poder soportar el VBlank en todos los MSX1; pero bueno, hay que probarlo primero. A ver si algún alma caritativa nos envía algún comentario. Un problema que va a haber al testearlo es que va a ser dificil verificar que haya basura en pantalla debido a la naturaleza de las fotos, habrá que fijarse un poco. Viendo todo esto se me ha ocurrido una nueva maldad sobre el VDP, voy a probar a ver si se me sale (porque poderse hacer seguro que se puede). >:D Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: pitpan en 07 de Junio de 2006, 11:24:59 am JL: espero ansioso para saber de qué se trata...
Respecto a la imagen, aunque sea muy pixelada, no dará problemas para verificar si se pierden datos: si se pierde un único byte, quedarían todas las líneas siguientes afectadas. Los datos no se corrompen en el caso de time-out de VRAM, simplemente no se escriben y tampoco se actualiza el puntero a VRAM. De todos modos, la idea de entrelazado horizontal o vertical monocromo me parece un poco cafre. Lo hice horizontal, y quizás hubiera sido mejor hacerlo vertical. Haré una prueba, para ver si la imagen gana alguna calidad, aunque no lo creo. Y, por supuesto, no probéis la ROM si sois o creeis que podéis ser epilépticos. Consulte con su médico o farmacéutico antes de utilizar esta ROM :D Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: Jon_Cortazar en 07 de Junio de 2006, 02:18:04 pm Esta tarde lo probaré en mi sony hb10p, que tiene un vdp un tanto especialito. Si ese lo traga, es que no hay problema ;)
Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: SapphiRe en 07 de Junio de 2006, 02:26:52 pm Esta tarde lo probaré en mi sony hb10p, que tiene un vdp un tanto especialito. Si ese lo traga, es que no hay problema ;) Oye viejo, ¿podrías de paso probar la última rom que te pasé (SFT) a ver qué tal se traga tu hb10p ese scroll ? Si es que no lo hiciste ya, claro... Gracias :D Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: Jon_Cortazar en 07 de Junio de 2006, 04:50:54 pm Vale Sapph, la probaré también. El caso es que robsy y yo hemos detectado que en particular ciertos SONY tienen el VDP más caprichoso de lo normal y que no tragan con ciertas cosas, como modos mixtos de pantalla, etc... es el caso del HB-10P, así que, como banco de pruebas gráfico me viene de perlas.
Ya os contaré como me ha ido ;). Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: MsxKun en 07 de Junio de 2006, 07:14:59 pm A ver, feos anti-BIOS, primero:
- Mi HB20P es mas bonito que el 10P de Jon. (o lo era cuando no tenia tanta humedad a cuestas) Segundo, la rom no me tira en el 8020 :( Al menos, en el execrom, desde la CF, no va, carga y se queda pasmada, o me vuelve al DOS, segun le da. Voy a probar otros cargadores y ahora digo. Uiiiiiiii como no tire... Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: jltursan en 07 de Junio de 2006, 07:21:10 pm La ROM ocupa la página 0, es posible que tenga algún problema por eso...
Yo sólo la he podido probar en un 8245 e iba como un tiro; pero claro, en un MSX2 no tiene gracia. :( Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: MsxKun en 07 de Junio de 2006, 07:24:18 pm La pagina 0? Que malvado! >:(
Bueno, el caso es que con el rima.com si que ha cargado. Y va fino. Asi que es Philips 8020 compliant. El parpadeo, tal y como tengo yo el ojo ultimamente, pos no se aprecia tanto tanto. Y ahora, a lo que vamos, las amigas de la foto, estado civil, medidas.... ? Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: pitpan en 07 de Junio de 2006, 11:08:13 pm El HB-10 y otros SONYs son lo más puñetero que hay, palabra. Por ellos abandonamos el modo mixto, que era un chollo! Pero claro, hay mucha gente por ahí con HB-10, HB-20, HB-100, HB-200, HB-75, HB-55, HB-501, etc. Y mucho me temo que todos ellos no soportan el modo mixto. Así que 3 bancos a redefinir en cada SONY.
Gracias por los comments. Por supuesto que sí, página 0, BIOS-free ROM! Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: e_sedes en 10 de Junio de 2006, 08:00:15 pm Yo tambien lo probé en mi 8020/00, a través del waver, y rula. Como cosa curiosa, en algunos lugares los pixeles "grises" se veían azules y en otros verdes. Supongo que eso será más bien cosa de la tele, claro.
Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: jltursan en 11 de Junio de 2006, 04:02:16 pm Citar espero ansioso para saber de qué se trata... Bueno; pues aquí está... Para que luego se diga que con screen 0 no se puede hacer nada ;) Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: Jon_Cortazar en 11 de Junio de 2006, 05:11:34 pm woooa, beware the VDP Pirates!!! y en Screen 0!!!!
Pero esto es cambiando la tabla de patrones???. Cómo es la nueva estructura de ese modo mixto?. Explanation needed! /me está flipando... Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: WYZ en 11 de Junio de 2006, 07:36:55 pm Eso es lo que yo quería ver ;)
Tremendo JL! :o Se me olvidaba preguntar...poprque solo lo h probado en emuladores ¿ solo se ven 6 bit de cada caracter en este modo bitmap scr0? ¿la documentacion (*) esta equivocada al decir que se puede alcanzar una resoucion de 320x192 verdad? Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: pitpan en 12 de Junio de 2006, 12:03:41 am Esto, Jon...
A mi me sigue saliendo lo de ¡Un error ha ocurrido! :-\ Parece que no estás autorizado para descargar o ver attachments en este foro. Y necesito -quiero- ver los attachments YAAAAAA! :'( Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: Jon_Cortazar en 12 de Junio de 2006, 08:43:43 am Edu, mira a ver si ahora puedes. Ahora, en principio, tienes TODOS los permisos abiertos, jejeje, así que ya podrías, por ejemplo, quitarle al Kun el smiley de Cyndi de la firma, si es tu gusto ;) :D :D
Si sigues sin poder ver los attachments ahora, revisa tu configuración personal de usuario, tal vez estés desde ahí denegando algo. Y si no, pues no se me ocurre... ??? Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: jltursan en 12 de Junio de 2006, 09:31:03 am Citar Explanation needed! ¡A mandar!. Es un screen 0 normal, al que mediante tres screensplits se la han añadido tres bancos diferentes de patrones, entrelazado y algún que otro cambio de color. De alguna manera el resultado se parece a screen 2. Lamentablemente esta demo se me olvidó advertir que no funciona a 60Hz, de hecho se autoconfigura a 50Hz (lo que empeora el entrelazado :(), por lo que en los equipos brasileños no se verá correctamente. Lo siento mucho; pero si ya sincronizar a una frecuencia cuesta, no te digo a dos :P Citar Se me olvidaba preguntar...poprque solo lo h probado en emuladores ¿ solo se ven 6 bit de cada caracter en este modo bitmap scr0? ¿la documentacion (*) esta equivocada al decir que se puede alcanzar una resoucion de 320x192 verdad? Pues para mí que sí que está rara esa documentación (por cierto, ¿cual es?), los carácteres siguen teniendo 6 bits de ancho; así que el ancho en pantalla es de 240. Además como 40 no es múltiplo de 256, es más cómodo reducir la dimensión vertical a 144. En total se queda pues en 240x144. Podría pensar que con algún truquillo se podría hacer algo más; pero teniendo en cuenta que este VDP ya ha sido destripado en muchos otros aparatos y nunca he visto resoluciones extrañas, tiendo a pensar que los 256x192 reales es lo máximo a lo que podemos aspirar. :( Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: pitpan en 12 de Junio de 2006, 10:28:53 am Pues sigo igual: en blanco. "Parece que no estás autorizado etc., etc." :(
Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: Jon_Cortazar en 12 de Junio de 2006, 11:38:28 am Pues no es nada del foro, Robsy, ahora eres prácticamente un administrador en cuanto a privilegios. Mandame to id y password por email, y así puedo hacer pruebas conectándome como si fueras tu, a ver si detecto por qué es... ¿firewall en el server del curro, tal vez?... no se, ponme la info por mail, ok? ???
Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: WYZ en 12 de Junio de 2006, 02:16:06 pm JL, pensé que estbas usando un modo hibrido bitmap/texto, pero veo que el resultado con sc0 a pelo es espectacular. Mi pregunta iba sobre esto:
Código: Bitmap text mode This is the mode TI forgot to tell us about. It works just like standard bitmap mode, except that the screen is now 40 columns and that only two colors are available. This mode is selected by setting bit 7 of register 0 as 1. Bit 4 in register 1 should be 1. VR0: 1 VR1: 0 1 The screen is now divided in three, each third is 8 lines high and thus occupies >140 bytes in the screen image table (8*40=320). The colors are taken from VR7, just like in regular text mode. There is no color table, and the contents of VR3 is irrelevant. Just like in standard bitmap mode, there can be upto 3 pattern tables, located either at >0000 or at >2000. You can use the address mask bits in VR4 to determine which third of the screen uses which table. The main difference is that the color address mask is not used to fill-in the patten address mask: >07FF is always used instead. No character grouping to worry about, then! This mode comes handy for black-and-white drawings. Que puedes encontrar en titech pages, esa que te pedi en otro post. A mi me da la impresión de que está equivocado... aunque nunca se sabe. Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: jltursan en 12 de Junio de 2006, 02:45:01 pm La verdad es que no me las he mirado mucho; pero curiosearé un poco. A mí, por lo menos esa descripción me parece bastante rara. ::)
En el texto, de todas formas no hacen referencia a que la pantalla tenga 320 pixels de ancho, sino a que los tercios de la tabla de nombres son de 320 bytes cada uno (40*8=320), cosa harto extraña ya que por mucho que estires los patrones sólo puedes tener 256 disponibles y si multiplicas por 3, tienes 768 posiciones como mucho. Para gestionar 960 habría que definir 1/4s de pantalla, cosa que podría haber hecho; pero que para el caso no valía mucho la pena :P. De todas formas igual es mejor experimentar, a ver si resulta que de esta combinación de registros sale algo interesante. ;) Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: MsxKun en 12 de Junio de 2006, 07:30:56 pm Edu, mira a ver si ahora puedes. Ahora, en principio, tienes TODOS los permisos abiertos, jejeje, así que ya podrías, por ejemplo, quitarle al Kun el smiley de Cyndi de la firma, si es tu gusto ;) :D :D >:D >:D >:D >:D >:D >:D >:D >:D >:D Ni se os ocurra >:D >:D >:D >:D >:D >:D >:D >:D >:D Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: jltursan en 12 de Junio de 2006, 07:46:43 pm Citar Ni se os ocurra Ya verás que cosas más raras pasan por el foro el 28 de diciembre... ::) Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: WYZ en 15 de Junio de 2006, 08:26:36 pm Bueno, aqui va la respuesta en Screen 1 para JL: es un doble bitmap en el que se usan 40 bytes para color.No hay sito para hacer esto asi que aparece un pequeño fallo en la parte superior izquierda de la pantalla que se debe precisamente a esa tabla de color. Seria sencillo eliminarla y tambien sincronizarlo bien, porque esta hecho a base de HALts. Pero como el resultado es lo que esperaba y mola, pues lo pongo aqui a bote pronto. No se como llamar a este modo con doble bitmap (que suponia en este mismo hilo que teoricamente funcionaría)
Nos vemos en los bares WYZ Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: jjfranco en 15 de Junio de 2006, 09:44:57 pm Oye wyz,
es una pasada ;D ;D ;D El codigo fuente no lo vas a hacer público ¿verdad? ;D ;D Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: WYZ en 15 de Junio de 2006, 10:08:32 pm Sip, solo lo he probado en Blue y Open y fuenciona bien. Sobre todo en Blue con la opcion sincronizacion con la freceuncia de refresco del monitor. El codigo? cuando JL desvele el suyo. ::)
Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: jltursan en 15 de Junio de 2006, 11:00:17 pm ¡Muy bueno Wyz! ;). A ver si mañana le echo un vistazo al código y me hago un cuadro al detalle de lo que has hecho...
Últimamente no hacemos más que retorcerle el brazo al pobre VDP ;D Citar El codigo? cuando JL desvele el suyo. ¡Hecho!, en cuanto lo pula un poco (que está mu feeeeeeo) lo posteo como snippet. Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: WYZ en 16 de Junio de 2006, 02:49:18 pm Le pogo un poco de musica que me parece muy soso sin efectos. ;D
Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: jjfranco en 16 de Junio de 2006, 05:08:41 pm :god: :god: :god: :god: :god: :god:
Las tres variantes que he probado, son geniales, tanto la de Robsy, com la de JL como esta ultima con música. :D Con unos cuantos fotogramas como estos se podria crear una animación simple pero bastante atractiva. (si se puede hacer claro está). Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: jltursan en 16 de Junio de 2006, 06:01:08 pm Citar Le pogo un poco de musica que me parece muy soso sin efectos. ¡Mecachis!, ahí ya no llego... :(. Al utilizar screensplits sucesivos, unos dependen de otros cada vez más y si no mantengo el número de ciclos lo más estable posible por cuadro, se me descojonarían. He comprobado que hay una tolerancia de hasta unos 60T arriba o abajo; pero sospecho que al meter un replayer y supongo que en función de la música, podría variar mucho el tiempo de ejecución cada cuadro. Tú que has hecho un replayer bastante ligero, Wyz, ¿como ves el tema?, ¿Trabaja un mismo número de ciclos la rutina cada vuelta?, ¿depende mucho de la canción?. Otro gallo cantaría usando samples; en ese caso supongo que siempre se esta trabajando lo mismo cada unidad de tiempo. Por cierto, ciertamente en el BlueMSX si se utiliza el Sync Mode "Sync to PC Vertical Blank" la calidad mejora una salvajada. Eso sí, se parece muy poco a lo que se ve en un MSX real... ::) Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: WYZ en 16 de Junio de 2006, 06:38:05 pm Sin ver el codigo de tu rutina no sabría decirte exactamente, si te puedo decir que en cada ciclo el replayer varia el numero de procesos.
Si lo que quieres es añadir sonidos ... pues puedes hacerte un reproductor sencillito a base de meterle al PSG los registros del 0 al 13 (o los que sean necesarios) en cada llamada por otro lado hacerte una captura de esos registros simplemente reproduciendo un PT3 o( un fragmento) aprovechando que tienes el codigo y en vez de hacer outs al chip guardar los registros en RAM . Al reprducirlos con la rutina de volcado de registros del Vortex sonaria exactamente igual (?). Es el replayer mas sencillo, mas rapido y mas estable en cuestion de T-states que se me ocurre para fragmentos cortos claro.(seguro que esto se le ha ocurrido a mas de uno ;)) Por cierto, has probado en un MSX real las tres ROMs colgadas aqui? se ve algo? cuenta cuenta!! Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: jltursan en 16 de Junio de 2006, 07:04:40 pm Citar Es el replayer mas sencillo, mas rapido y mas estable en cuestion de T-states que se me ocurre para fragmentos cortos claro.(seguro que esto se le ha ocurrido a mas de uno Wink) Pues a mí no se me había ocurrido... :P. La verdad es que para una demo es una buena solución para poder usar un tracker y screensplits (o sincronización simultaneamente). Eso me lleva a pensar, ¿que estará haciendo MkII en estos momentos? :) Citar Por cierto, has probado en un MSX real las tres ROMs colgadas aqui? se ve algo? cuenta cuenta!! Más o menos. La de Robsy hubiera querido probarla en el MSX1 que de eso se trataba; pero como parece que se me ha fastidiado ya definitivamente la disquetera externa, no pude probarlo (estoy a la caza en eBay). En el MSX2 la transferencia era perfecta y viendola es cuando se me ocurrió lo de aprovechar la mezcla del blanco y del negro a lo bestia en screen 0. La mía funciona sólo a 50Hz; pero está sincronizada tanto en los emuladores como en los equipos reales. Eso me sorprendió agradablemente ya que es prueba de lo buenos que han llegado a ser los emuladores. Se ve clavado al MSX real si en el BlueMSX se selecciona el Sync Mode que se adapta al refresco del MSX. El parpadeo es importante... :P La tuya va perfecta a 50Hz y 60Hz, el sonido va algo acelerado en un TR (lógico), por lo demás se ve igual que las otras, el parpadeo es menos notable ya que hay menos zonas grises. Como detalle curioso, en un TFT se ve MUCHO mejor ya que el pixel persiste más (tengo un TFT que es tirando a malo). En una tele de tubo se ve como en el emulador. Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: WYZ en 16 de Junio de 2006, 07:15:53 pm En mi MSX1 creo que no funciona (ni me molesto) porque no admite modos hibridos, como le pasa a lso sony segun explicacion de Robsy, asi que esa informacion vale su peso en cartuchos de konami. Gracias ;D
Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: WYZ en 18 de Junio de 2006, 05:13:29 pm Os subo una demo con lo del otro dia, un poco mas decente. Ademas le he incluido un test de VDP que se puede bypasear pulsando espacio al iniciar.
Nos vemos... Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: jltursan en 19 de Junio de 2006, 10:41:29 am ¿Un test de VDP?, en cuanto llegue a casa lo probaré a ver de que se trata... :)
Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: jltursan en 19 de Junio de 2006, 05:42:05 pm Citar Os subo una demo con lo del otro dia, un poco mas decente ¿Decente?. ¡Ahora está redonda!, si te has currado un scroll de texto y todo... :D Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: pitpan en 19 de Junio de 2006, 07:33:25 pm Y yo sigo sin autorizar! No puedo bajarme nada! Quiero ver esos desarrollos friki-tech!
Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: pitpan en 26 de Junio de 2006, 01:54:23 pm Bueno, ya he podido ver las demos, y la verdad es que tengo que quitarme la boina y recortarle el capillo: hay que ver lo que se puede hacer estrujando un poquito el VDP. Lo he conseguido gracias a mi alter ego esquizoide, Robsy_BackUp, que será quien se encargue del trabajo sucio de downloads/uploads directos al foro. ;)
WYZ y JL: gracias por compartir esas pequeñas maravillas. Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: jltursan en 26 de Junio de 2006, 03:02:26 pm Citar Lo he conseguido gracias a mi alter ego esquizoide, Robsy_BackUp, que será quien se encargue del trabajo sucio de downloads/uploads directos al foro. ¡Anda, es verdad!. Dándote de alta como otro usuario seguro que ya habrías podido bajarte los archivos desde el principio.... :P. Además se me ocurre que así se engorda la cifra de usuarios ;D, que por cierto ya supera la centena (¿serán todos programadores y artistas? ::)). La última de las versiones de Wyz me ha llegado al alma ya que uno de los modos gráficos del Dragon tenía unos colores similares e idéntica resolución :). Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: WYZ en 26 de Junio de 2006, 10:12:52 pm Bueno, y ese chorro de bytes y ese bitmap en screen 0 no se quedan atras. Lo suyo seria currarse una karoshi forum demo con todas estas cosillas en la que la peña se involucrara. Por cierto, Dioniso sabe de unas cosas con sprites que te dejan asi :o
Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: Dioniso en 27 de Junio de 2006, 11:04:35 am Por cierto, Dioniso sabe de unas cosas con sprites que te dejan asi :o Bueno ... vamos a dejar eso para el juego. TOP SECRET!!! ;) (que después nos quedamos sin sorpresas) Por cierto, enhorabuena por las demos Sync y VDPir. Creo que esta MSXDev va a ser la más impresionante en cuanto a calidad técnica. Creo que se está dando un salto muy grande estos dos últimos años. Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: ARTRAG en 03 de Febrero de 2007, 09:54:48 am My contribution
PAL (50Hz) 313 Lines per frame 121 Vblank 192 Active area 38,66% % of time in vblank 61,34% % in active area Z80 speed Hz 3.579.545 Cycles per frame 71.286 27.558 Cycles in vblank 43.728 Cycles in active area 15.716,99 Line rate Hz 50,21 Frame rate Hz 18 cycles for OUTI 28 cycles for OUTI; NOP;NOP 1.531 Bytes in vsync 1.562 Bytes in active area 3.093 Tot bytes per frame 100% cpu usage (and about 2K of unrolled code ;-) NTSC (60Hz): 262 Lines per frame 70 Vblank 192 Active area 26,72% % of time in vblank 73,28% % in active area Z80 speed Hz 3.579.545 Cycles per frame 59.671 15.943 Cycles in vblank 43.728 Cycles in active area 15.716,99 Line rate Hz 59,99 Frame rate Hz 18 cycles for OUTI 28 cycles for OUTI; NOP;NOP 886 Bytes in vsync 1.562 Bytes in active area 2.447 Tot bytes per frame 100% cpu usage (and about 1K of unrolled code ;-) Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: jltursan en 03 de Febrero de 2007, 11:53:47 am Thanks ARTRAG! :), take a look at this thread (http://www.msxgamesbox.com/karoshi/index.php?topic=628.0) (in spanish only :( ) where I'm writing a tutorial of how to cope with the limitations that the standard imposes. You'll find similar maths slighty different due the vertical frequencies used as base for calculations, exactly 50 and 60 hertz in my example, I know that there're no exact values; but I haven't been able to find a good reference about that. Where do you have found those values, 50,21Hz and 59,99Hz?
Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: ARTRAG en 03 de Febrero de 2007, 07:56:32 pm go here:
http://www.work.de/nocash/portar.htm#displaytimings BTW the math is very easy: 15716.99 Hz / 262 = 59.9885 Hz and 15716.99 Hz / 313 = 50.214 Hz PAL and NTSC have (or should have... I'm not sure) the same line frequency (in order to fit in the same bandwidth) PS Actually you can do a simple test write a small ASM code that : 1) Set 0 as background color, 2) disable the interrupts 3) changes cyclically the color background (R#7) with loop exactly equal to 4*227,75=911 cycles 4) run it on a real HW If the colors cycle every 4 lines and are stable this is the proof that 15716.99 is the line frequency. Try it in PAL and in NTSC and let me know. I do not have a real HW so I cannot help you here. PPS 3.579.545 Hz / 15.716,99 Hz = 227,75 cycles Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: ARTRAG en 06 de Febrero de 2007, 07:14:25 pm Some new calculation: I have found that due to interlacing pal and ntsc have 262.5 and 312.5 lines rescpectively
this leads to cpu clock 3.579.545 Hz Hsync 15716,99 Hz # of lines per frame Vblank Active area PAL 312,50 120,50 192,00 NTSC 262,50 70,50 192,00 Frame rate PAL 50,29 Hz NTSC 59,87 Hz cpu cyles per frame Vblank Active area PAL 71.171,89 27.443,88 43.728,01 NTSC 59.784,38 16.056,38 43.728,01 OUTI NOP;NOP;OUTI cpu cyles 18 28 Bytes Bytes Total PAL 1.524,66 1.561,71 3.086,37 NTSC 892,02 1.561,71 2.453,74 Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: jltursan en 06 de Febrero de 2007, 09:04:22 pm Yes, it's true, this shows some light over why a PAL TV has 625 lines!, there're two frames of 312,5 lines each :)
Anyway, I'm still in doubt about the vertical frequencies; everywhere I look, I'm finding 50Hz and 59.94Hz as the correct values for PAL and NTSC ???. Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: ARTRAG en 07 de Febrero de 2007, 01:11:32 pm What about my proposal to write a code of 911 cycles?
Código: di loop: ld a,0 out (0x99),a ld a,7+128 out (0x99),a nop nop ex (sp),iy ex (sp),iy ex (sp),iy ex (sp),iy ex (sp),iy ex (sp),iy ex (sp),iy ex (sp),iy ex (sp),iy ex (sp),iy ex (sp),iy ex (sp),iy ex (sp),iy ex (sp),iy ex (sp),iy ex (sp),iy ld a,8 out (0x99),a ld a,7+128 out (0x99),a nop nop ex (sp),iy ex (sp),iy ex (sp),iy ex (sp),iy ex (sp),iy ex (sp),iy ex (sp),iy ex (sp),iy ex (sp),iy ex (sp),iy ex (sp),iy ex (sp),iy ex (sp),iy ex (sp),iy ex (sp),iy ex (sp),iy jp loop this should be 911 cycles (I verified with http://msx.jannone.org/bit/ ) If the color bars drift the hsync frequency isn't 15716,99Hz Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: jltursan en 08 de Febrero de 2007, 12:41:02 pm Ok; so it's time to make some speed tests...
Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: ARTRAG en 08 de Febrero de 2007, 12:58:14 pm let me know!
PS wikipedia says that PAL has 15734 Hz as Hsync this means 227,5 cycles per line and that that the test can be done on 2 line with a loop of 455 cycles i.e. like this Código: loop: ld a,0 out (0x99),a ld a,7+128 out (0x99),a ld hl,(00) ld a,0 nop nop nop nop nop nop nop ex (sp),iy ex (sp),iy ex (sp),iy ex (sp),iy ex (sp),iy ex (sp),iy ld a,8 out (0x99),a ld a,7+128 out (0x99),a ex (sp),iy ex (sp),iy ex (sp),iy ex (sp),iy ex (sp),iy ex (sp),iy jp loop Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: ARTRAG en 08 de Febrero de 2007, 02:36:06 pm This is an interesting table....
http://www.paradiso-design.net/TVsystems_worldwide.html according to this site NTSC M has 525 lines 59.94 Hz/59.94 fields/s (Vsync) 15734 Hz Hsync and PAL (many of them) has 625 lines 50 Hz/50 fields/s (Vsync) 15625 Hz Hsync I think it is time to experimnet...(for who has a real HW) Título: Re: ¿1536 bytes a VRAM en un frame? Publicado por: _ThEcRoW en 03 de Octubre de 2009, 05:30:48 pm El fichero adjunto tiene extension .zip y .txt, pero parece estar dañado. Esta en algun otro sitio el fichero?. Acabo de leer el hilo y me gustaria probar esa demo en mi msx1.
Un saludo!!! |