CPCtelera, desarrollar juegos para Amstrad de forma sencilla
Re: CPCtelera, desarrollar juegos para Amstrad de forma sencilla
¿Como se llama a un procedimiento externo en esamblador(en otro archivo me refiero) desde c en cpctelera?. Estoy partiendo de las plantillas de ejemplo del hola en asm y el hola que te genera el nuevo proyecto.
He portado el codigo en esamblador de cpcwiki para desbloquear el asic. Me funciona si lo compilo aparte(lo veo en el winape que se desbloquea). Pero no se como llamarlo desde el programa principal en C, inicialmente voy a lo facil y no pretendo pasarle nada ni que me devuelva nada(solo practico para ir entendiendo). Me ejecuta el hello de la plantiia c, pero pasa olimpicamente del codigo de esamblador y no se me desbloquea.
incluyo el _main2.h En el programa principal llamo a " _main2;"
En _main2.h pongo un "extern void _main2();"
Se me compila sin errores, pero no parece que ejecute la parte de esamblador.
Bueno, ya he necontrado la causa, por lo visto el compilador siempre busca un _nombre, asi que yo llamaba a _main2 y el buscaba __main2.
He portado el codigo en esamblador de cpcwiki para desbloquear el asic. Me funciona si lo compilo aparte(lo veo en el winape que se desbloquea). Pero no se como llamarlo desde el programa principal en C, inicialmente voy a lo facil y no pretendo pasarle nada ni que me devuelva nada(solo practico para ir entendiendo). Me ejecuta el hello de la plantiia c, pero pasa olimpicamente del codigo de esamblador y no se me desbloquea.
incluyo el _main2.h En el programa principal llamo a " _main2;"
En _main2.h pongo un "extern void _main2();"
Se me compila sin errores, pero no parece que ejecute la parte de esamblador.
Bueno, ya he necontrado la causa, por lo visto el compilador siempre busca un _nombre, asi que yo llamaba a _main2 y el buscaba __main2.
- robcfg
- Master of The Forum
- Mensajes: 1306
- Registrado: Jue 03 Abr , 2008 5:32 pm
- Ubicación: Estocolmo
- Contactar:
Re: CPCtelera, desarrollar juegos para Amstrad de forma sencilla
Saca una captura de pantalla del escritorio con el error y posteala aquipor si vemos algo que nos de pistas.
Re: CPCtelera, desarrollar juegos para Amstrad de forma sencilla
Acabo de hacer WHICH MAKE y esto aparece:
$ which make
which: no make in (/usr/local/bin:/usr/bin:/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windows/System32/Wbem:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0)
supongo que no está instalado.
$ which make
which: no make in (/usr/local/bin:/usr/bin:/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windows/System32/Wbem:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0)
supongo que no está instalado.
- ronaldo
- Forum Addict
- Mensajes: 358
- Registrado: Sab 14 Sep , 2013 9:31 pm
- Ubicación: Alicante
- Contactar:
Re: CPCtelera, desarrollar juegos para Amstrad de forma sencilla
@dragon131: No había entendido bien tu pregunta al principio. Te refieres a llamar desde C a una función escrita en ensamblador. El ejemplo de cómo crear un programa en ensamblador con CPCtelera no es el apropiado para esto. En este caso, es mejor que cojas el código fuente de las funciones de CPCtelera, (cpctelera/src/) que todas están en ensamblador. Ahí podrás ver cómo se crea el punto de entrada (el binding que has hecho declarando la función como extern) y también como se pueden obtener los parámetros y devolver valores.
El tema del subrayado es una convención común a todos los compiladores. Todos los símbolos globales se definen con un subrayado delante para que no colisiones con los objetos locales. Esto viene de los primeros compiladores de C y similares, cuando no estaban aún conceptos como namespaces o el mangling de las funciones.
@javymetal: Eso significa que no tienes instalado make, tal como dice la instalación de CPCtelera. Make normalmente se instala en /usr/bin. Esa carpeta está correctamente en tu PATH de ejecución, por lo que make no está instalado. Ten cuidado con las carpetas de Windows en el PATH, que podrían llevarte a ejecutar el gcc de Windows u otros (a mucha gente le pasa con el cliente de git). Esto te puede dar problemas más adelante.
La solución está clara. Tienes que instalar make. Probablemente te pase también con otros requisitos de CPCtelera. Ejecuta la instalación de Cygwin y utiliza el buscador superior para localizar los paquetes que necesitas. Asegúrate de instalar los que se llaman exactamente igual que están los requerimientos de instalación de CPCtelera. Si tienes dudas, captura alguna pantalla y nos la pones por aquí. También tienes un vídeo mio que, aunque es antiguo, te valdría para ver cómo instalar los requisitos: Programando en C para Amstrad CPC.
El tema del subrayado es una convención común a todos los compiladores. Todos los símbolos globales se definen con un subrayado delante para que no colisiones con los objetos locales. Esto viene de los primeros compiladores de C y similares, cuando no estaban aún conceptos como namespaces o el mangling de las funciones.
@javymetal: Eso significa que no tienes instalado make, tal como dice la instalación de CPCtelera. Make normalmente se instala en /usr/bin. Esa carpeta está correctamente en tu PATH de ejecución, por lo que make no está instalado. Ten cuidado con las carpetas de Windows en el PATH, que podrían llevarte a ejecutar el gcc de Windows u otros (a mucha gente le pasa con el cliente de git). Esto te puede dar problemas más adelante.
La solución está clara. Tienes que instalar make. Probablemente te pase también con otros requisitos de CPCtelera. Ejecuta la instalación de Cygwin y utiliza el buscador superior para localizar los paquetes que necesitas. Asegúrate de instalar los que se llaman exactamente igual que están los requerimientos de instalación de CPCtelera. Si tienes dudas, captura alguna pantalla y nos la pones por aquí. También tienes un vídeo mio que, aunque es antiguo, te valdría para ver cómo instalar los requisitos: Programando en C para Amstrad CPC.
Re: CPCtelera, desarrollar juegos para Amstrad de forma sencilla
Ya lo tengo!!!
Aunque creo que he instalado cosas de más ya que la carpeta Cygwin ocupa 6 Gb!!!
Aunque creo que he instalado cosas de más ya que la carpeta Cygwin ocupa 6 Gb!!!
Re: CPCtelera, desarrollar juegos para Amstrad de forma sencilla
Ahora viendo tu vídeo se ve todo mucho mas claro!! Gracias!!@javymetal: Eso significa que no tienes instalado make, tal como dice la instalación de CPCtelera. Make normalmente se instala en /usr/bin. Esa carpeta está correctamente en tu PATH de ejecución, por lo que make no está instalado. Ten cuidado con las carpetas de Windows en el PATH, que podrían llevarte a ejecutar el gcc de Windows u otros (a mucha gente le pasa con el cliente de git). Esto te puede dar problemas más adelante.
La solución está clara. Tienes que instalar make. Probablemente te pase también con otros requisitos de CPCtelera. Ejecuta la instalación de Cygwin y utiliza el buscador superior para localizar los paquetes que necesitas. Asegúrate de instalar los que se llaman exactamente igual que están los requerimientos de instalación de CPCtelera. Si tienes dudas, captura alguna pantalla y nos la pones por aquí. También tienes un vídeo mio que, aunque es antiguo, te valdría para ver cómo instalar los requisitos: Programando en C para Amstrad CPC.
Problema con Cpctelera
Hola!,
Estoy empezando a probar la cpctelera, pero al querer convertir una imagen con cpct_img2tileset:
"cpct_img2tileset -m 0 -tw 12 -th 16 -pf { 0 2 6 8 12 15 } -im 8 prueba.png"
me lanza el siguiente mensaje de error:
"#########################
## UNRECOVERABLE ERROR ##
#########################
##> file '8' does not exist, and it is required for CPCTelera framework to work propperly.
Si dejo la opción "-im" sin valor o con valor 0, convierte la imagen sin problema. El error lo lanza cuando el valor es distinto a 0.
¿ A que puede deberse ?
Estoy empezando a probar la cpctelera, pero al querer convertir una imagen con cpct_img2tileset:
"cpct_img2tileset -m 0 -tw 12 -th 16 -pf { 0 2 6 8 12 15 } -im 8 prueba.png"
me lanza el siguiente mensaje de error:
"#########################
## UNRECOVERABLE ERROR ##
#########################
##> file '8' does not exist, and it is required for CPCTelera framework to work propperly.
Si dejo la opción "-im" sin valor o con valor 0, convierte la imagen sin problema. El error lo lanza cuando el valor es distinto a 0.
¿ A que puede deberse ?
- ronaldo
- Forum Addict
- Mensajes: 358
- Registrado: Sab 14 Sep , 2013 9:31 pm
- Ubicación: Alicante
- Contactar:
Re: Problema con Cpctelera
Hola @eolashi,
¿Qué versión de CPCtelera estás usando? En la última versión, el modificador "-im" no lleva ningún parámetro adicional. Se asume directamente que el color transparente es el 0. Por ese motivo, lo siguiente que introduces lo toma como el nombre de archivo.
De hecho, aunque img2cpc puede utilizar colores distintos al 0 como color transparente, eso requiere lógica adicional en las funciones de dibujado de sprites, cosa que las haría más lentas. Las funciones de dibujado con máscara de CPCtelera asumen que el color transparente es el 0, para evitar esta lógica adicional y ser más rápidas.
Por otra parte, en los proyectos nuevos de CPCtelera, en la carpeta cfg/ tienes un archivo llamado image_conversion.mk en el que puedes introducir órdenes de autoconversión de imágenes. Con estas órdenes, tus imágenes son convertidas automáticamente a código .c y .h cada vez que ejecutas make. Así, si cambias tus gráficos no tienes que hacer nada adicional, pues al poner make los tendrás siempre actualizados en el proyecto. Estas órdenes usan cpct_img2tileset por debajo, pero lo hacen automáticamente.
Si necesitas ayuda con estas nuevas funciones, me lo dices y te ayudo en lo que haga falta .
Un saludo.
¿Qué versión de CPCtelera estás usando? En la última versión, el modificador "-im" no lleva ningún parámetro adicional. Se asume directamente que el color transparente es el 0. Por ese motivo, lo siguiente que introduces lo toma como el nombre de archivo.
De hecho, aunque img2cpc puede utilizar colores distintos al 0 como color transparente, eso requiere lógica adicional en las funciones de dibujado de sprites, cosa que las haría más lentas. Las funciones de dibujado con máscara de CPCtelera asumen que el color transparente es el 0, para evitar esta lógica adicional y ser más rápidas.
Por otra parte, en los proyectos nuevos de CPCtelera, en la carpeta cfg/ tienes un archivo llamado image_conversion.mk en el que puedes introducir órdenes de autoconversión de imágenes. Con estas órdenes, tus imágenes son convertidas automáticamente a código .c y .h cada vez que ejecutas make. Así, si cambias tus gráficos no tienes que hacer nada adicional, pues al poner make los tendrás siempre actualizados en el proyecto. Estas órdenes usan cpct_img2tileset por debajo, pero lo hacen automáticamente.
Si necesitas ayuda con estas nuevas funciones, me lo dices y te ayudo en lo que haga falta .
Un saludo.
Re: Problema con Cpctelera
Gracias por la aclaración! Modificaré el color de la máscara como recomiendas y me pondré manos a la obra
- Mister_Knee
- Lechoncillo
- Mensajes: 10
- Registrado: Mié 09 Dic , 2015 2:07 am
- Contactar:
Problema con la generación de mascaras en cpctelera
Hola muy buenas,
A ver, estoy intentando usar mascaras en modo 1, pero me ocurre el siguiente problema, al querer usar el comando cpct_img2tileset, al indicar que quiero una mascara con el -im, coge por defecto el color asignado a la posición 0 de la paleta. La cuestión es que eso me supone perder un color de los 4 disponibles, ya que tengo que usar uno como color fondo para generar la mascara.
La cuestión es, ¿Como genero la mascara, sin perder ninguno de los 4 colores de la paleta?
A ver, estoy intentando usar mascaras en modo 1, pero me ocurre el siguiente problema, al querer usar el comando cpct_img2tileset, al indicar que quiero una mascara con el -im, coge por defecto el color asignado a la posición 0 de la paleta. La cuestión es que eso me supone perder un color de los 4 disponibles, ya que tengo que usar uno como color fondo para generar la mascara.
La cuestión es, ¿Como genero la mascara, sin perder ninguno de los 4 colores de la paleta?
- ronaldo
- Forum Addict
- Mensajes: 358
- Registrado: Sab 14 Sep , 2013 9:31 pm
- Ubicación: Alicante
- Contactar:
Re: Problema con la generación de mascaras en cpctelera
Perdona que no te haya contestado antes: no había visto tu pregunta. El problema que comentas no está en cpct_img2tileset, sino en la herramienta de conversión que el script utiliza: img2cpc. img2cpc utiliza un color de la paleta para generar la máscara, por lo que no hay forma de que la genere sin comerse uno. Lo puedes ver en sus opciones:
Esto es un tema que comentamos hace algún tiempo, pero todavía no se le ha dado solución. De hecho, el issue está abierto en github desde el 10 de abril. Si quieres, pásate por ahí y sugiérele a Augusto alguna opción adicional: yo propuse usar la transparencia de la imagen para no comerse colores de paleta, pero igual se puede hacer también sugiriendo un valor RGB para poder usar un color que no es del CPC.
De todas formas, te recomiendo que las máscaras entrelazadas las uses sólo si va a ser para pocos sprites y pequeños, porque duplican el uso de memoria de los sprites. Para transparencias generales, es mejor usar tabla, aunque pierdas un color en los sprites.
Código: Seleccionar todo
-t, --transparentColor ARG Specifies transparent color (as index in palette).
De todas formas, te recomiendo que las máscaras entrelazadas las uses sólo si va a ser para pocos sprites y pequeños, porque duplican el uso de memoria de los sprites. Para transparencias generales, es mejor usar tabla, aunque pierdas un color en los sprites.
- Mister_Knee
- Lechoncillo
- Mensajes: 10
- Registrado: Mié 09 Dic , 2015 2:07 am
- Contactar:
Re: Problema con la generación de mascaras en cpctelera
Pufff, vaya, bueno, viendo que el problema es de la herramienta, creo que al final me decantare más por el modo 0, que quedarse solo con tres colores es muy poco...
De todas formas, ¿A que te refieres con lo de la tabla?, ¿Se pueden hacer transparencias de otra forma?, deduzco que es asignar uno de los colores de la paleta para que no pinte en ese color, pero no sabía que existía esa función...
edit: vale, no pasa nada, he encontrado esto de un tal profesor retroman que explica muy bien lo de las tablas:
https://youtu.be/zov-yI7I00s?t=41m8s
De todas formas, ¿A que te refieres con lo de la tabla?, ¿Se pueden hacer transparencias de otra forma?, deduzco que es asignar uno de los colores de la paleta para que no pinte en ese color, pero no sabía que existía esa función...
edit: vale, no pasa nada, he encontrado esto de un tal profesor retroman que explica muy bien lo de las tablas:
https://youtu.be/zov-yI7I00s?t=41m8s
Problemas instalación CPCtelera
Tengo problemas para instalar CPCtelera. He descargado e instalado todo lo que indica la guía de instalación (Cygwin y los packages que indica) sin problemas, pero a la hora de instalarse la CPCtelera v1.4, me da estos errores en el paso 2 (el paso 1 lo hace sin problemas con todo OK):
executing default-1 commands
make[5]: se entra en el directorio '/home/Francisco/cpctelera-1.4/cpctelera/tools/sdcc-3.5.5/obj/support/sdbinutils/binutils'
gcc -g -O2 -static-libstdc++ -o sysinfo.exe sysinfo.o syslex_wrap.o
syslex_wrap.o: En la función `yylex':
/home/Francisco/cpctelera-1.4/cpctelera/tools/sdcc-3.5.5/obj/support/sdbinutils/binutils/syslex.c referencia a `yywrap' sin definir
/home/Francisco/cpctelera-1.4/cpctelera/tools/sdcc-3.5.5/obj/support/sdbinutils/binutils/syslex.c(.text+0xcfe): reubicación truncada para ajustar: R_X86_64_PC32 contra el símbolo `yywrap' sin definir
collect2: error: ld devolvió el estado de salida 1
make[5]: *** [Makefile sysinfo.exe] Error 1
make[5]: se sale del directorio '/home/Francisco/cpctelera-1.4/cpctelera/tools/sdcc-3.5.5/obj/support/sdbinutils/binutils'
make[4]: *** [Makefile all-binutils] Error 2
make[4]: se sale del directorio '/home/Francisco/cpctelera-1.4/cpctelera/tools/sdcc-3.5.5/obj/support/sdbinutils'
make[3]: *** [Makefile:836: all] Error 2
make[3]: se sale del directorio '/home/Francisco/cpctelera-1.4/cpctelera/tools/sdcc-3.5.5/obj/support/sdbinutils'
make[2]: *** [Makefile:166: sdcc-sdbinutils] Error 2
make[2]: se sale del directorio '/home/Francisco/cpctelera-1.4/cpctelera/tools/sdcc-3.5.5/obj'
make[1]: *** [Makefile:63: sdcc] Error 2
make[1]: se sale del directorio '/home/Francisco/cpctelera-1.4/cpctelera/tools/sdcc-3.5.5'
make: *** [Makefile:74: sdcc-3.5.5] Error 2
make: se sale del directorio '/home/Francisco/cpctelera-1.4/cpctelera/tools'
A ver si alguien puede decirme como solucionarlo, he probado a desinstalarlo todo, volverlo a descargar e instalar pero sigue dando el mismo error, aunque curiosamente no siempre salta en el mismo % de la instalación, unas veces al 7% otras al 15% e incluso llegó al 44%, pero nunca consigue terminar.
executing default-1 commands
make[5]: se entra en el directorio '/home/Francisco/cpctelera-1.4/cpctelera/tools/sdcc-3.5.5/obj/support/sdbinutils/binutils'
gcc -g -O2 -static-libstdc++ -o sysinfo.exe sysinfo.o syslex_wrap.o
syslex_wrap.o: En la función `yylex':
/home/Francisco/cpctelera-1.4/cpctelera/tools/sdcc-3.5.5/obj/support/sdbinutils/binutils/syslex.c referencia a `yywrap' sin definir
/home/Francisco/cpctelera-1.4/cpctelera/tools/sdcc-3.5.5/obj/support/sdbinutils/binutils/syslex.c(.text+0xcfe): reubicación truncada para ajustar: R_X86_64_PC32 contra el símbolo `yywrap' sin definir
collect2: error: ld devolvió el estado de salida 1
make[5]: *** [Makefile sysinfo.exe] Error 1
make[5]: se sale del directorio '/home/Francisco/cpctelera-1.4/cpctelera/tools/sdcc-3.5.5/obj/support/sdbinutils/binutils'
make[4]: *** [Makefile all-binutils] Error 2
make[4]: se sale del directorio '/home/Francisco/cpctelera-1.4/cpctelera/tools/sdcc-3.5.5/obj/support/sdbinutils'
make[3]: *** [Makefile:836: all] Error 2
make[3]: se sale del directorio '/home/Francisco/cpctelera-1.4/cpctelera/tools/sdcc-3.5.5/obj/support/sdbinutils'
make[2]: *** [Makefile:166: sdcc-sdbinutils] Error 2
make[2]: se sale del directorio '/home/Francisco/cpctelera-1.4/cpctelera/tools/sdcc-3.5.5/obj'
make[1]: *** [Makefile:63: sdcc] Error 2
make[1]: se sale del directorio '/home/Francisco/cpctelera-1.4/cpctelera/tools/sdcc-3.5.5'
make: *** [Makefile:74: sdcc-3.5.5] Error 2
make: se sale del directorio '/home/Francisco/cpctelera-1.4/cpctelera/tools'
A ver si alguien puede decirme como solucionarlo, he probado a desinstalarlo todo, volverlo a descargar e instalar pero sigue dando el mismo error, aunque curiosamente no siempre salta en el mismo % de la instalación, unas veces al 7% otras al 15% e incluso llegó al 44%, pero nunca consigue terminar.
- ronaldo
- Forum Addict
- Mensajes: 358
- Registrado: Sab 14 Sep , 2013 9:31 pm
- Ubicación: Alicante
- Contactar:
Re: CPCtelera, desarrollar juegos para Amstrad de forma sencilla
Hola @Atlante,
El problema no es de CPCtelera, sino de las últimas versiones de Cygwin. Hay algo que han tocado que no sabemos aún qué es, que está provocando problemas como este.
Hay un fix para circunvenir el problema que puse en CPCWiki. Son unos pasos sencillos pero no es evidente llegar a ellos. Siguelos y podrás instalar CPCtelera. Después no debes tener más problemas.
Espero que en la próxima versión podamos dejar resuelto el problema para que no moleste.
Un saludo
El problema no es de CPCtelera, sino de las últimas versiones de Cygwin. Hay algo que han tocado que no sabemos aún qué es, que está provocando problemas como este.
Hay un fix para circunvenir el problema que puse en CPCWiki. Son unos pasos sencillos pero no es evidente llegar a ellos. Siguelos y podrás instalar CPCtelera. Después no debes tener más problemas.
Espero que en la próxima versión podamos dejar resuelto el problema para que no moleste.
Un saludo
Re: Problemas instalación CPCtelera
Busca en este foro, hay una versión "portable" que no necesita instalación y va perfecta.Tengo problemas para instalar CPCtelera. He descargado e instalado todo lo que indica la guía de instalación (Cygwin y los packages que indica) sin problemas, pero a la hora de instalarse la CPCtelera v1.4, me da estos errores en el paso 2 (el paso 1 lo hace sin problemas con todo OK):
executing default-1 commands
make[5]: se entra en el directorio '/home/Francisco/cpctelera-1.4/cpctelera/tools/sdcc-3.5.5/obj/support/sdbinutils/binutils'
gcc -g -O2 -static-libstdc++ -o sysinfo.exe sysinfo.o syslex_wrap.o
syslex_wrap.o: En la función `yylex':
/home/Francisco/cpctelera-1.4/cpctelera/tools/sdcc-3.5.5/obj/support/sdbinutils/binutils/syslex.c referencia a `yywrap' sin definir
/home/Francisco/cpctelera-1.4/cpctelera/tools/sdcc-3.5.5/obj/support/sdbinutils/binutils/syslex.c(.text+0xcfe): reubicación truncada para ajustar: R_X86_64_PC32 contra el símbolo `yywrap' sin definir
collect2: error: ld devolvió el estado de salida 1
make[5]: *** [Makefile sysinfo.exe] Error 1
make[5]: se sale del directorio '/home/Francisco/cpctelera-1.4/cpctelera/tools/sdcc-3.5.5/obj/support/sdbinutils/binutils'
make[4]: *** [Makefile all-binutils] Error 2
make[4]: se sale del directorio '/home/Francisco/cpctelera-1.4/cpctelera/tools/sdcc-3.5.5/obj/support/sdbinutils'
make[3]: *** [Makefile:836: all] Error 2
make[3]: se sale del directorio '/home/Francisco/cpctelera-1.4/cpctelera/tools/sdcc-3.5.5/obj/support/sdbinutils'
make[2]: *** [Makefile:166: sdcc-sdbinutils] Error 2
make[2]: se sale del directorio '/home/Francisco/cpctelera-1.4/cpctelera/tools/sdcc-3.5.5/obj'
make[1]: *** [Makefile:63: sdcc] Error 2
make[1]: se sale del directorio '/home/Francisco/cpctelera-1.4/cpctelera/tools/sdcc-3.5.5'
make: *** [Makefile:74: sdcc-3.5.5] Error 2
make: se sale del directorio '/home/Francisco/cpctelera-1.4/cpctelera/tools'
A ver si alguien puede decirme como solucionarlo, he probado a desinstalarlo todo, volverlo a descargar e instalar pero sigue dando el mismo error, aunque curiosamente no siempre salta en el mismo % de la instalación, unas veces al 7% otras al 15% e incluso llegó al 44%, pero nunca consigue terminar.
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro
La Comunidad Española |