Dudas funcionamiento librería CPCRSLIB

Programando el Amstrad en BASIC, C, etc.
corpiano
Me voy lanzando
Me voy lanzando
Mensajes: 88
Registrado: Dom 26 Oct , 2014 10:38 am

Re: Dudas funcionamiento librería CPCRSLIB

Mensajepor corpiano » Sab 15 Nov , 2014 12:08 pm

Muy buenas!

No se si es que leyendo desde el movil no te entendi la 2º pregunta, juraria que lei 8 pixeles de desplazamiento, no dos... :-k y lo asocie a lo de las dichosas matrices que hay que cambiar a mano.

Sobre esa primera pregunta, si no has modificado las matrices, y has hecho la zona de tiles mas pequeña, no pasa nada, desperdicias parte de la matriz, pero si la haces mas grande en parametrica, al ir a valores que la matriz definida se queda corta, pisaras otras partes de la memoria, de ahi te podran venir los reseteos... :(

Sobre pintar fuera de la zona de tiles, pensando que se trate de un marcador, marco, etc, si es muy elaborado lo mejor es currarselo o bien en el Art Studio (O tu programa de CPC favorito) y guardarlo en .SCR sin compresion (Al loro con la paleta de colores, que sea igual que la del juego). Despues quitarle la cabecera AMSDOS al extraerlo del .DSK y tener un binario de 16kb clavados del pantallazo del marco. O bien generar ese .SCR con cualquier programa de dibujo en PC/MAC/LINUX y pasarlo por el ConvImgCPC (Al loro de nuevo con la paleta!)

Una vez tengas el .BIN, usa el Exomizer para comprimirlo, lo que te dara un fichero .EXO. Tratandolo como binario, usa un BIN2H o BIN2ASM para pasarlo a un bloque de datos para tu codigo fuente y con la funcion Cpc_Unexo(Puntero_pantallazo_exo,&C000) y zas, lo descomprime directo a video. Aunque sea una decima de segundo igual se puede apreciar el pintado entrelazado a 8 lineas clasico del CPC, nada que la vieja treta de poner tintas a cero, y luego reponer tu paleta no arregle :)

Y lo de los 2 pixeles en horizontal parece que lo mas liviano para la CPU va a ser tener duplicados de los sprites con un pixel desplazado, que puedes aprobechar para hacer animaciones con mas fotogramas por segundo, manteniendo en la posicion X con el primer sprite de la animacion, el siguiente con el sprite 2 que desplaza un pixel y ya implica un cambio postural, X+1 y el sprite 3, otra vez el X+1 y el sprite 4 :? En lugar de X, sprite 1, X+1 Sprite 2

Lo de que vayas "desactivando" otros sprites (matar malos) yo iba recorriendo la lista de malos con un FOR, y despues actuaba con un IF malo[n].vivo hacer_cosas_del_malo ELSE bucle_bastardo_para_simular_que_hace_lo_suyo. Y si, calculado a ojimetro.....

En mi "Marron en la Euskal" no matas, pero unas pantallas tienen 4 malos, otras 3.... Tienes el codigo fuente?? (Espero que mi cutrehosting me deje enlazar). Ale, otro mas para curiosear :D
Kaos muchas gracias!!!

Tus ideas me han sido de gran ayuda.

corpiano
Me voy lanzando
Me voy lanzando
Mensajes: 88
Registrado: Dom 26 Oct , 2014 10:38 am

Re: Dudas funcionamiento librería CPCRSLIB

Mensajepor corpiano » Jue 15 Ene , 2015 4:39 pm

Después de muchos días, veo el tema bastante parado.

Por si a alguien le interesa, voy a intentar centrar un poco más la búsqueda del problema.

Nos olvidamos del compilador z88dk y del compilador SDCC. NO depende del compilador.

Utilizando únicamente el compilador z88dk y las dos versiones existentes de la librería CPCRSLIB para el mismo ya se puede reproducir el error. He comprobado que utilizando la librería correspondiente al fichero cpcrslib111510.rar el programa funciona bien, sin embargo, utilizando la versión correspondiente al fichero cpcrslib_SCROLL_11282010.rar se reproduce el comportamiento incorrecto (¿¿¿se introdujo alguna optimización-modificación en las funciones que añadió algún error???).

En resumen:

cpcrslib111510.rar <-- Funciona OK

cpcrslib_SCROLL_11282010.rar <-- En esta versión ya aparecen los errores comentados en la rotación dinámica de sprites con transparencias (o en la rotación de sprites utilizando sprites estáticos con transparencias)

Avatar de Usuario
Artaburu
Trasteador
Trasteador
Mensajes: 8419
Registrado: Vie 07 Oct , 2005 6:18 pm
Ubicación: En tu pantalla

Re: Dudas funcionamiento librería CPCRSLIB

Mensajepor Artaburu » Mar 20 Ene , 2015 9:22 am

Buenas Corpiano

para tu tranquilidad te diré que tengo localizado el presunto fallo... efectivamente, hay una diferencia entre esas dos versiones porque se cambió la gestión del campo de tiles para dar soporte al scroll.

El fallo aparece porque creo que no se está indicando que los tiles en los que el sprite se encuentra cuando se hace la rotación se tienen que actualizar ya que las coordenadas no varían. Esto lo dejé así para hacer algo más ágil la ejecución de un programa ya que si no, si un sprite no se mueve, en la versión antigua se estaba siempre refrescando y redibujando y en la nueva no. No había considerado esa posibilidad de los sprites rotados que se mantendrían en la misma posición ya que es algo bastante raro que se utilice.

Estoy dándole una vuelta a ver cómo hacerlo sin perjudicar los casos más habituales. A malas tienes la opción de utilizar la función cpc_SetTouchTileXY después de rotar el sprite para indicar que los tiles donde está el sprite apoyado se tienen que refrescar. Tendrás que llamar a esa función tantas veces como tiles esté tocando el sprite. Esto es algo que se hace automáticamente cuando cambias de coordenada un sprite pero en el caso en el que estamos no ocurre.

Pero bueno, que la función que hay que arreglar es cpc_PutSpTileMap que es la que se encarga de comparar las coordenadas y marcar los tiles a restaurar. Le echo un vistazo un rato de estos y veo cómo estaba para dar las dos opciones de uso al programador. Igual hago una función extra para el caso de que las coordenadas sean iguales y se quiera restaurar el tile.
Salu2,
Arta

Avatar de Usuario
Artaburu
Trasteador
Trasteador
Mensajes: 8419
Registrado: Vie 07 Oct , 2005 6:18 pm
Ubicación: En tu pantalla

Re: Dudas funcionamiento librería CPCRSLIB

Mensajepor Artaburu » Mar 20 Ene , 2015 12:01 pm

Cordapio

Para SDCC localiza el siguiete código en los fuentes de la librería en el archivo Tilemap.asm y borra o comenta la úlima línea que es la que hace que si no hay cambio de coordenada se salga sin hacer nada.
Luego compila la libreríay a probar :mrgreen:

Código: Seleccionar todo

MIRAR SUMA DE COORDENADAS PARA HACER SOLO UNA BUSQUEDA DE TILES
.globl _cpc_PutSpTileMap

_cpc_PutSpTileMap::


.if PEEPHOLE-0
ex de,hl
.else
ld hl,#2 ;3
add hl,sp ;3

ld e,(hl) ;2
inc hl ;1
ld d,(hl) ;2
.endif



;según las coordenadas x,y que tenga el sprite, se dibuja en el buffer

; ld hl,#2 ;3
; add hl,sp ;3
; ld e,(hl) ;2
; inc hl ;1
; ld d,(hl) ;2

.db #0xdd
ld l,e ;2
.db #0xdd
ld h,d ;2
; --> 15 NOPS


ld e,10 (ix)
ld d,11 (ix) ;recoje coordenadas anteriores


ld l,8 (ix) ; si no han cambiado las coordenadas no hacemos nada
ld h,9 (ix)
ld 10 (ix),l
ld 11 (ix),h

SBC HL,DE
RET Z
Salu2,
Arta

Avatar de Usuario
ronaldo
Forum Addict
Forum Addict
Mensajes: 358
Registrado: Sab 14 Sep , 2013 9:31 pm
Ubicación: Alicante
Contactar:

Re: Dudas funcionamiento librería CPCRSLIB

Mensajepor ronaldo » Mar 20 Ene , 2015 1:51 pm

@Artaburu: si te ves animado, podemos ponernos a hacer un game engine completo un día de estos \:D/

Avatar de Usuario
Artaburu
Trasteador
Trasteador
Mensajes: 8419
Registrado: Vie 07 Oct , 2005 6:18 pm
Ubicación: En tu pantalla

Re: Dudas funcionamiento librería CPCRSLIB

Mensajepor Artaburu » Mar 20 Ene , 2015 2:00 pm

@Artaburu: si te ves animado, podemos ponernos a hacer un game engine completo un día de estos \:D/
Yo me animo rápido :D Explícame en que consistiría y te digo. Depende del tiempo que me lleve.
Salu2,
Arta

Avatar de Usuario
Artaburu
Trasteador
Trasteador
Mensajes: 8419
Registrado: Vie 07 Oct , 2005 6:18 pm
Ubicación: En tu pantalla

Re: Dudas funcionamiento librería CPCRSLIB

Mensajepor Artaburu » Mar 20 Ene , 2015 6:52 pm

Corpiano, te dejo aqui el cpcrslib compilado para SDCC con ese cambio que te puse arriba. Ya me dirás si te soluciona.
Adjuntos
cpcrslib.rar
(9.68 KiB) Descargado 50 veces
Salu2,
Arta

corpiano
Me voy lanzando
Me voy lanzando
Mensajes: 88
Registrado: Dom 26 Oct , 2014 10:38 am

Re: Dudas funcionamiento librería CPCRSLIB

Mensajepor corpiano » Jue 22 Ene , 2015 11:32 pm

Ole, ole y ole!!!

He recompilado la librería comentando la línea que has indicado y ya funciona perfectamente!!!

Muchísimas gracias!!!

Avatar de Usuario
Artaburu
Trasteador
Trasteador
Mensajes: 8419
Registrado: Vie 07 Oct , 2005 6:18 pm
Ubicación: En tu pantalla

Re: Dudas funcionamiento librería CPCRSLIB

Mensajepor Artaburu » Vie 23 Ene , 2015 8:52 am

Ole, ole y ole!!!

He recompilado la librería comentando la línea que has indicado y ya funciona perfectamente!!!

Muchísimas gracias!!!
Ha costado, siento haber tardado tanto en caer en lo que decías.
Ya que desempolvé la librería para buscar esa modificación, aproveché y cambié casi toda la rutina. Ayer actualicé la librería para sdcc y z88dk. Échale un vistazo que el rendimiento ahora es mejor y cuando las cosas están apretadas se agradece un poco más de agilidad en ejecución.
Salu2,
Arta

KaosOverride
Keeper of The Forum
Keeper of The Forum
Mensajes: 712
Registrado: Vie 27 Feb , 2009 12:21 pm

cpcrslib scroll

Mensajepor KaosOverride » Mié 18 Feb , 2015 11:05 am

Siempre me crecen los enanos, en el Marron en la Euskal me toco acelerar la musica ingame y en mis toqueteos del scroll ya me hace cosas raras...

El ejemplo de scroll lo recompilo y bien... Tal cual...

Empiezo los retoques, lo modularizo de manera que en lugar de main() sea Do_Game() y asi poder hacer otro main que llama a un menu, redefinir teclas etc y despues llama al do_game de marras...

Pues va y pinta bien la pantalla, empiezo a avanzar a la derecha, y segun ha desaparecido medio arbol por la izquierda vuelvo atras y zas, no coinciden los tiles, esta como una columna de tile desplazada a la izquierda. OJO, un tile del tilemap, que los bloques que maneja el juego son 2x2 tiles.

Pos vaya, a ver si la he liado al retocar codigo... Vuelvo a coger el code.c del ejemplo y sus includes, y le cambio solo el main() por Do_Game(), nada mas...

Sigue fallando... Misma cpcrslib y casca...

Al final lo echo andar empezando pointerH como -1 en lugar de por 0... Flipante...

Pero recompilo el ejenplo tal cual y OK...

Y el Do_Game inicializa a mano todas las variables, sin excepcion... Aunque ya he procurado que el menu y las funciones del wizplayer no choquen las variables con el ejemplo scroll injertado...

Y el mapa ejemplo, le pongo en zig zag tiles de suelo por el cielo y tambien hace el fallo a la derecha, sin poner el pointerH a -1. Con ñapa va bien..

Me bajo el update a ver si va ;)

Edit: ??? Creia que habia abierto un hilo aparte. Alguien ha editado el mensaje y lo ha colocado aqui? Si es por agrupar las dudas en un hilo unico entonces OK, pero lo habia abierto aparte por no contaminar con mis dudas las respuestas de las dudas de los demas. :)
--------
Carpeta publica [url=https://mega.nz/#F!W5IyhbLa!51JpgZqvyx6j__v12Pr9QA]MEGA Amstrad[/url]
Carpeta proyecto [url=https://github.com/KaosOverride]GitHub[/url]

Avatar de Usuario
Artaburu
Trasteador
Trasteador
Mensajes: 8419
Registrado: Vie 07 Oct , 2005 6:18 pm
Ubicación: En tu pantalla

Re: Dudas funcionamiento librería CPCRSLIB

Mensajepor Artaburu » Jue 19 Feb , 2015 11:14 am

Buenas Mikel
Lo del misterio de los tiles lo tengo pendiente de resolver, lo detecté el otro día en una prueba también pero pensé que era por que me estaba saliendo del mapa y cogía y mostraba basura. No busqué solución pero pasaría por no permitir scrolear por debajo (o por encima) de los límites del mapeado. Ahora no recuerdo si en el ejemplo se está controlando eso, no lo miré por pereza, di por supuesto que no lo controlaba.

Y lo de repartir el código en funciones diferentes.... me pillas, ni idea, si no has tocado nada no debería haber desplazamientos raros de la pantalla al moverte a derecha e izquierda. Igual por haber puesto el PointerH a -1.
Prueba a trabajar con él en 0 y controlar que no se pueda hacer scroll por debaj de PointerH=0 y PointerV=0.
Salu2,
Arta

KaosOverride
Keeper of The Forum
Keeper of The Forum
Mensajes: 712
Registrado: Vie 27 Feb , 2009 12:21 pm

Re: Dudas funcionamiento librería CPCRSLIB

Mensajepor KaosOverride » Vie 20 Feb , 2015 11:12 pm

Precisamente va bien cuando lo pongo a -1!! XD


Ejemplo a pelo, =0 va bien.

Mi propio main() que llama al ejemplo, =0 y va mal sin tocar nada o_O

A ver si preparo ejemplos en video, el codigo de ambos casos y lo subo mañana a la tarde al Mega
--------
Carpeta publica [url=https://mega.nz/#F!W5IyhbLa!51JpgZqvyx6j__v12Pr9QA]MEGA Amstrad[/url]
Carpeta proyecto [url=https://github.com/KaosOverride]GitHub[/url]

KaosOverride
Keeper of The Forum
Keeper of The Forum
Mensajes: 712
Registrado: Vie 27 Feb , 2009 12:21 pm

Re: Dudas funcionamiento librería CPCRSLIB

Mensajepor KaosOverride » Sab 21 Feb , 2015 10:43 pm

Hoy no va a poder ser, a ver mañana domingo si puedo preparar los ejemplos...
--------
Carpeta publica [url=https://mega.nz/#F!W5IyhbLa!51JpgZqvyx6j__v12Pr9QA]MEGA Amstrad[/url]
Carpeta proyecto [url=https://github.com/KaosOverride]GitHub[/url]

Avatar de Usuario
MiguelSky
Lord of Short Time
Lord of Short Time
Mensajes: 6965
Registrado: Sab 08 Oct , 2005 2:02 am
Contactar:

Re: Dudas funcionamiento librería CPCRSLIB

Mensajepor MiguelSky » Dom 22 Feb , 2015 12:06 pm

¿Por qué? ¿Tenías que salir a correr? <XX

KaosOverride
Keeper of The Forum
Keeper of The Forum
Mensajes: 712
Registrado: Vie 27 Feb , 2009 12:21 pm

Re: Dudas funcionamiento librería CPCRSLIB

Mensajepor KaosOverride » Dom 22 Feb , 2015 2:30 pm

Jajjajajajajaj k kpllo :mrgreen: :mrgreen:

Na, es que no estaba en casa, estoy solo parte del finde, el resto en casa de los suegros que esta mas cerca del hospital para las curas, y encima se me acababan los megas del movil, como para subir algo a mega...


Aqui esta, solo en DSKS, no esta en video

Arta, he puesto margenes ocultos a cero en ambos casos, el original tuyo esta dentro del testscroll, en la carpeta 011 test scroll balablabla

si haces algo de scroll, hasta que se coma algo mas de medio arbol a la izquierda, vuelves atras y veras, aparte de por los tiles aereos que he dejado en el cielo para ver por la derecha...

https://mega.co.nz/#!GQMRDTwY!Iz0Ul1W2c ... M1jBSzGUNw
--------
Carpeta publica [url=https://mega.nz/#F!W5IyhbLa!51JpgZqvyx6j__v12Pr9QA]MEGA Amstrad[/url]
Carpeta proyecto [url=https://github.com/KaosOverride]GitHub[/url]


¿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