Otra de Scrolls

Programando el Amstrad en Ensamblador.
Reglas del Foro
Debido a que hay varios temas pidiendo ayuda para programar en ensamblador máquinas distintas al Amstrad CPC, con micro distinto al Z80 y que incluso dependen del sistema operativo, nos vemos en la necesidad de poner por escrito que estos posts son bienvenidos pero que no es el lugar adecuado ya que por estos lares nos dedicamos más al ensamblador del Z80, un microprocesador de 8 bits que tuvo su gran auge en ordenadores y consolas de los años 80.

De todas formas, esto no quita que alguien que sepa del asunto pueda postear alguna respuesta pero es más fácil encontrar foros dedicados a programar en ensamblador en Windows o MS-DOS que ayudarán más que nosotros:
http://www.lawebdelprogramador.com/news ... nsamblador
Avatar de Usuario
syx
Master of The Forum
Master of The Forum
Mensajes: 1353
Registrado: Mié 02 Sep , 2009 9:55 am

Re: Otra de Scrolls

Mensajepor syx » Mié 24 Sep , 2014 2:24 am

Pues es una solución muy buena, no se me había ocurrido, supongo que si la haces sobre un CPC "pelado" ajustas el área de juego para que empiece algo por debajo de la 2ª interrupción y termine algo por debajo de la 6ª ¿no?
Exacto.

Otra cosa curiosa es que la sexta en realidad no es la sexta, sino la señal del refresco vertical y tiene efectos curiosos, había algo más de explicación en la página de arnoldemu.
Por curiosidad y por si alguna vez me pasa ¿que instrucciones/flags siguen mal actualmente? En el changelist de la última versión (alpha 18) pone esto:
-Fixed Z80 overflow flag for INC (HL), DEC (HL) and IX/IY equivalents.
¿hay más casos aún sin corregir? Yo por ahora cuando tengo dudas consulto los flags en internet y por ahora no he encontrado discrepancias, aunque tampoco es que haya hecho mucho...
En realidad fallan todos los bits no documentados de F (que para mí son bastante útiles), el problema es que la emulación del z80 está en ensamblador de x86 y usa los flags del x86 en lugar de calcular los del z80, que son muy parecidos, pero no son exactos al 100% en estos efectos colaterales, esa es la razón de que el emulador no pase ninguno de los tests del ZXEXALL.

En realidad es bastante raro toparse con estos problemas, en el spectrum es más común y tiene efectos de lo más divertidos como que el lobo del Sabrewulf huye de tí, en lugar de ir a port tí. A mí el caso más divertido fue con una de las primeras versiones del Pac-Man en que se me sustituía uno de los ojos por una O y quedaban unos fantasmas de lo más steampunk xDDD, la de horas que perdí depurando eso xDDD
Eso no lo pongo en duda, la electrónica de las teles modernas y TFT's es digital y sí es posible que sean más estrictas con el estándar (contando scanlines por ejemplo). Pero aún así... si no es mucha molestia ¿podrías probar los ejemplos a 310 y 311 scanlines cuando puedas y confirmarme 100% no funcionan? Es que es una lástima porque la última versión a 311 va de lujo y hasta hace más sencilla la ruptura (sólo es necesario ajustar R5, R4 permanece invariante en ambas zonas).
No me hagas caso, por como comentas que lo has hecho se va a ver bien si ó si, es que yo soy más estricto que mi tv, jajaja.

Así que publica esta versión nueva y como te comenta el ruso en el CPCWiki, ponle un nombre y que se vayan enterando los giris que aquí están los mejores del CPC ;)

En cuanto a probarlo en mi tv, el problema es que está en España y todavía no me la he traído (lo próximo que quiero traer es el PCW, jejeje), y aquí en el país del PAL-M (una mezcla raruna de NTSC y PAL), cualquier test que hiciera ahora mismo no iba a servirnos de nada.

opqa
Forero habitual
Forero habitual
Mensajes: 131
Registrado: Jue 14 Mar , 2013 12:45 pm

Re: Otra de Scrolls

Mensajepor opqa » Mié 24 Sep , 2014 1:30 pm

Exacto.
Otra cosa curiosa es que la sexta en realidad no es la sexta, sino la señal del refresco vertical y tiene efectos curiosos, había algo más de explicación en la página de arnoldemu.
Vaya, entonces usamos distinta nomenclatura, para mí esa es la primera, con "entre la 2ª y la 6ª" me refería a que el área de juego estará más o menos entre la primera y la última interrupciones "visibles", y el marcador por debajo de la última "visible" y hasta que uno quiera.

Con respecto a la interrupción "no visible", pues sí es algo "especial"...
En realidad no coincide con la señal VSYNC, si no has hecho nada "raro" en el frame anterior lo normal es que entre dos scanlines por debajo del comienzo de VSYNC. Si se cumple cierta condición algo "especialita" el hadware puede decidir saltársela a la torera, pero no es algo que vaya a suceder si mantenemos las interrupciones activadas todo el tiempo.

La otra particularidad que puede tener... Bueno, pues que si usas menos de 312 scanlines (como es mi caso), entra "antes" que las anteriores, pero si usas los 312 del estándar es como una interrupción más (con 52 scanlines de espaciado entre su predecesora y su sucesora).
En realidad fallan todos los bits no documentados de F (que para mí son bastante útiles), el problema es que la emulación del z80 está en ensamblador de x86 y usa los flags del x86 en lugar de calcular los del z80, que son muy parecidos, pero no son exactos al 100% en estos efectos colaterales, esa es la razón de que el emulador no pase ninguno de los tests del ZXEXALL.
Pues bueno es saberlo, en alguna ocasión he estado tentado de usar el flag H (half-carry), aunque al final he optado por no hacerlo porque no me compensaba respecto a otras alternativas. Pero en algún caso particular en el que tengas codificados dos números distintos en un mismo byte (de cuatro bits cada uno), ese flag puede venir muy bien... A otros de momento no les he visto uso práctico.

opqa
Forero habitual
Forero habitual
Mensajes: 131
Registrado: Jue 14 Mar , 2013 12:45 pm

Re: Otra de Scrolls

Mensajepor opqa » Mié 24 Sep , 2014 1:57 pm

PD: Por cierto Syx, el CPCView ese por el que te han preguntado en CPCWiki ¿puede generar pantallas para el CPC a resoluciones no estándar como la que uso en el programa? (128x256 pixeles en modo 0).
Porque si es así me vendría muy a mano para poder meterle patrones más complejos al juego de vida, lo he intentado con el ConvImgCPC pero no lo hace bien.

Avatar de Usuario
syx
Master of The Forum
Master of The Forum
Mensajes: 1353
Registrado: Mié 02 Sep , 2009 9:55 am

Re: Otra de Scrolls

Mensajepor syx » Mié 24 Sep , 2014 3:19 pm

Por supuesto, el refresco puedes considerarlo como prefieras ó la primera ó la última, en mi caso es solo porque cuando aprendí lo que era el refresco, lo veía como algo que sucedía abajo de la pantalla (en el cacho de plástico xDDD).
PD: Por cierto Syx, el CPCView ese por el que te han preguntado en CPCWiki ¿puede generar pantallas para el CPC a resoluciones no estándar como la que uso en el programa? (128x256 pixeles en modo 0).
Porque si es así me vendría muy a mano para poder meterle patrones más complejos al juego de vida, lo he intentado con el ConvImgCPC pero no lo hace bien.
Si, está pensado para que puedas escoger el tamaño de pantalla que te de la gana, pero ahora mismo anda parado mientras termino de corregir errores por la actualización a las nuevas versiones de las bibliotecas que usa y que como el netbook que tengo tiene una pantalla superenana, pues ó lo engancho a la tv del salón ó me tocará pillarme un monitor decente, jajaja.

Lo que si tengo a mano es un script en python (Python 3.x y la librería Pillow para cargar los ficheros de gráficos,), para la línea de comandos, que te permite convertir de imágenes a binario (png2cpc.py *.png y te genera un .bin por cada imagen), y que aunque genera la información una línea tras otra (por eso de que lo uso para patrones y sprites), no me cuesta nada añadirle una opción para que organice la información exactamente como el formato de vídeo del CPC ó hacer otro script que coja el volcado binario y genere los datos en el formato que precises.

Porqué tanto lio, pues porque me gusta la filosofía unix de que un programa haga una sola cosa, pero bien; por lo que voy encadenando utilidades, primero convierto las imágenes, después las codifico como me interese, las paso por el compresor, ...

opqa
Forero habitual
Forero habitual
Mensajes: 131
Registrado: Jue 14 Mar , 2013 12:45 pm

Re: Otra de Scrolls

Mensajepor opqa » Mié 24 Sep , 2014 6:11 pm

y que aunque genera la información una línea tras otra (por eso de que lo uso para patrones y sprites), no me cuesta nada añadirle una opción para que organice la información exactamente como el formato de vídeo del CPC ó hacer otro script que coja el volcado binario y genere los datos en el formato que precises.
Mmmm, gracias pero déjalo, se que andas muy liado últimamente y he pensado que el ConvImgCPC también me genera archivos lineales (creo que eso sí lo hará bien, y aún a malas "recorto" lo que sobre, que con los lineales es sencillo), pensaba que no me servían ese tipo de archivos, pero pénsandolo un poco, como en el momento de la carga del patrón tengo el segundo banco de memoria "libre" pues cargo la imagen lineal allí y luego la copio línea a línea reordenando, que es algo sencillo de hacer. Además esto no deja de ser una solución temporal, en una hipotética versión final tendría que adoptar algún formato comprimido y de tamaño variable (no es plan que cada patrón ocupe 16Kb's)...

Volviendo al tema de hilo, adjunto la última modificación que he hecho en el dsk a la versión de 311 scanlines, ahora con la ruptura desactivada aparece la pantalla centrada, creo que es como mejor queda y así se va a quedar.

Pacomix, si sigues interesado en un efecto similar para tu juego sigo ofreciéndote mi ayuda, pero necesito que me contestes a algo de lo que te he pregunté la principio o poco puedo hacer.
Adjuntos
verticalrupture.dsk
(190.16 KiB) Descargado 74 veces

Avatar de Usuario
syx
Master of The Forum
Master of The Forum
Mensajes: 1353
Registrado: Mié 02 Sep , 2009 9:55 am

Re: Otra de Scrolls

Mensajepor syx » Jue 25 Sep , 2014 2:05 am

Mmmm, gracias pero déjalo, se que andas muy liado últimamente y he pensado que el ConvImgCPC también me genera archivos lineales...
Pues no sabes cuanto te lo agradezco, que la semana que viene ya empiezo con los exámenes y el de "Comentario de Texto" en portugués (una especie de créditos de libre configuración, pero totalmente obligatoria) me está llevando por la calle de la amargura, jejeje.

pacomix
Forum Addict
Forum Addict
Mensajes: 459
Registrado: Dom 11 Nov , 2012 8:05 pm

Re: Otra de Scrolls

Mensajepor pacomix » Jue 02 Oct , 2014 4:32 pm

Pacomix, si sigues interesado en un efecto similar para tu juego sigo ofreciéndote mi ayuda, pero necesito que me contestes a algo de lo que te he pregunté la principio o poco puedo hacer.
De momento realmente no tengo tiempo para programar nada. Estoy demasiado liado con la mudanza. Pero por lo que he estado leyendo lo voy teniendo clarito. Justo no hace mucho en cpcwiki comentaban en un post el scroll del Uridium y alguien estuvo también poniendo rutinas de scroll ahí. Lo de las rupturas creo que me ha quedado claro. A ver si vuelvo a la carga pronto!!!

¡Saludos!


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro


La Comunidad Española
ESP Soft, juegos para tu CPC Foro de Amstrad CPC Todos los juegos para CPC en un CD Web dedicada al Amstrad CPC (utilidades) Información útil para el CPC (talleres) Selección de juegos de Amstrad CPC Mundo CPC Pree Play then any Key CPC Basic