CPCtelera, desarrollar juegos para Amstrad de forma sencilla

Programando el Amstrad en BASIC, C, etc.
LogicalTrue
Lechoncillo
Lechoncillo
Mensajes: 2
Registrado: Dom 12 Jul , 2020 1:39 pm

Re: CPCtelera, desarrollar juegos para Amstrad de forma sencilla

Mensajepor LogicalTrue » Dom 12 Jul , 2020 4:45 pm

Comparten la solucion del "cpct_"?, porque tengo el mismo problema, me reconoce solamente los commandlines del cpct, pero no "cpct_" o cpct_rvm, etc ... Estoy en cygwin64.

Avatar de Usuario
onepopcorn
Megaforero
Megaforero
Mensajes: 296
Registrado: Sab 18 Nov , 2017 7:33 pm

Re: CPCtelera, desarrollar juegos para Amstrad de forma sencilla

Mensajepor onepopcorn » Dom 12 Jul , 2020 7:22 pm

Comparten la solucion del "cpct_"?, porque tengo el mismo problema, me reconoce solamente los commandlines del cpct, pero no "cpct_" o cpct_rvm, etc ... Estoy en cygwin64.
Que alguien me corrija si no es así pero puede ser que estés usando la branch "master" de la cpctelera donde algunos de los commands aún no están disponibles (por lo menos hace un tiempo no lo estaban). Prueba de moverte a otra rama del proyecto como la "development" o "android" aunque ten en cuenta que pueden no ser tan estables como la "master".

De todos modos, tómate esto que te digo con pinzas, por desgracia, hace muchísimo que no uso la cpctelera y quien mejor te va a poder responder esto es el profe Fran Gallego.

Avatar de Usuario
a13x15
Lechoncillo
Lechoncillo
Mensajes: 15
Registrado: Mié 23 Ago , 2017 6:19 pm
Ubicación: the matrix

Re: CPCtelera, desarrollar juegos para Amstrad de forma sencilla

Mensajepor a13x15 » Mar 08 Sep , 2020 9:08 pm

Estoy con el GameEngine ECS (gracias Profesor por el tiempo y dedicación) y me he venido arriba. Por aquello de aprender, un par de rutinas del gestor de entidades las he programado en ensamblador (el compactador y foreach). Estas rutinas necesitan conocer el tamaño del struct para avanzar el puntero a la siguiente entidad. Por el momento tengo definida una constante en el código ensamblador que actualizo manualmente cuando añado campos al struct pero me parece una solución muy frágil. ¿Desde ensamblador se puede obtener el tamaño de un struct definido en C?

Utilizo cpctelera, sdcc 3.6.8 y sdasz80 v02.00.

Avatar de Usuario
ronaldo
Forum Addict
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

Mensajepor ronaldo » Mar 08 Sep , 2020 9:32 pm

Comparten la solucion del "cpct_"?, porque tengo el mismo problema, me reconoce solamente los commandlines del cpct, pero no "cpct_" o cpct_rvm, etc ... Estoy en cygwin64.
Si no te aparece cpct_rvm es que has instalado CPCtelera 1.4.2, que es la estable y que tiene ahora mismo algo más de 2 años de antigüedad (acercándose a 3).

Para instalar CPCtelera 1.5 WIP, necesitas instalar git en cygwin, usar git para bajar el repo de CPCtelera y cambiar a la rama development antes de instalar. Teniendo instalado git en cygwin, puedes seguir este vídeo en el que lo explico:


Avatar de Usuario
ronaldo
Forum Addict
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

Mensajepor ronaldo » Mar 08 Sep , 2020 9:42 pm

¿Desde ensamblador se puede obtener el tamaño de un struct definido en C?
Gracias a ti, hombre :). Técnicamente, no tienes forma de acceder desde ensamblador a la declaración de un struct en C. Podrías, si acaso, acceder a una definición de un objeto de ese tipo, y medir el tamaño con un par de etiquetas delante y detrás es fácil. Otra forma de hacerlo sería crear una constante inicializada con el sizeof del struct y acceder a ella, pero eso sería en tiempo de ejecución, cosa que no te interesa mucho. La última opción es que te crees una macro para definir structs que genere el código del struct y te genere también un equivalente en ensamblador, de modo que puedas calcular el tamaño. Entonces, creas tu struct con la macro y eso te creará 2 copias sincronizadas. Esta última forma es bastante más compleja, pero daría el resultado justo que buscas.

Otra posibilidad es que mantengas a mano el tamaño del struct, pero te crees una macro que haga fallar la compilación cuando no coincida el valor con el tamaño real del struct. O, incluso, una forma cutre pero válida para mientras desarrollas sería tener el "const u8 tamanyo = sizeof(Entity_t);" y empezar tu código al principio comprobando si son iguales tamanyo y la constante que tienes puesta a mano. Cuando sean distintas, te metes en un bucle infinito. Así, si se te queda colgado al comenzar, saltas al depurador y si estás en el bucle infinito inicial, es que no te has acordado de actualizar el tamaño del struct.

Muchas soluciones posibles, seguro que hay más, pero ahí tienes algunas ideas para trabajar :).

Avatar de Usuario
a13x15
Lechoncillo
Lechoncillo
Mensajes: 15
Registrado: Mié 23 Ago , 2017 6:19 pm
Ubicación: the matrix

Re: CPCtelera, desarrollar juegos para Amstrad de forma sencilla

Mensajepor a13x15 » Mar 08 Sep , 2020 11:06 pm

Muchas gracias. Por el momento me vale con que el compilador me avise. Tras una búsqueda en google para ver porqué #if sizeof(entity_t) != 9 no funciona he optado por utilizar _Static_assert para garantizar que los tamaños coinciden. Esto me genera un warning, no un error de compilación, y me temo que entre toda la salida del compilador se me pasará, así que he añadido el flag --Werror.

Cuando esté un poco más despierto investigaré las opciones de calcular el tamaño a partir de dos etiquetas (imagino que restando sus direcciones) y el tema de la macro para definir los structs (esta se me escapa un poco pero ya preguntaré).

Meta
Forero habitual
Forero habitual
Mensajes: 103
Registrado: Jue 04 Ene , 2018 9:36 am

Re: CPCtelera, desarrollar juegos para Amstrad de forma sencilla

Mensajepor Meta » Dom 28 Feb , 2021 8:45 pm

Hola

Estoy probando el miniloader de CNG de la cpctelera directamente en el winape
pero tengo un problema de compatibilidad con 2CDT al crear las imagenes,
el Pilot/sync no se ajustan a 1480/740 como requiere la rutina, lo más que me acerco es a 742. Además me mete bytes CRCs que no deberían estar en la imagen. Borrando los bytes con CDTMaster todo ok, excepto por que no tengo una salida carry/H=FF y es un trabajo de chinos.

Parece ser (viendo los .c) que hay una versión diferente de 2CDT para esta rutina
pero mi ordenador es antiguo y dice que na nai de cygwin, gnuwin, gcc para hacer un make y probarlo yo mismo, lo he intentado sin mucho éxito la verdad.. :oops:

Se puede hacer con la versión de Kevin de cpctech y me estoy dejando algo, o necesito la de cpctelera?

2cdt -n -F 2 -m 1 -b 1572 -p 2560 prueba.bin prueba.cdt

Avatar de Usuario
ronaldo
Forum Addict
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

Mensajepor ronaldo » Dom 28 Feb , 2021 9:10 pm

Estoy probando el miniloader de CNG de la cpctelera directamente en el winape
pero tengo un problema de compatibilidad con 2CDT al crear las imagenes,
el Pilot/sync no se ajustan a 1480/740 como requiere la rutina, lo más que me acerco es a 742. Además me mete bytes CRCs que no deberían estar en la imagen. Borrando los bytes con CDTMaster todo ok, excepto por que no tengo una salida carry/H=FF y es un trabajo de chinos.
Hola Meta,

El formato de miniloader es un formato específico desarrollado por CNG con una codificación que 2CDT no espera. De hecho, CPCtelera incluye pero no utiliza 2CDT en su versión actual en desarrollo. Desde hace casi 2 años, utilizamos cpc2cdt para generar las casetes. Esta utilidad también fue desarrollada por CNG y es más versatil que 2CDT, además de que tiene menos bugs. Por eso la utilizamos en CPCtelera para generar las casetes.

Si quieres usar miniloader, lo apropiado es que uses cpc2cdt para incluir los binarios en el CDT. En todo caso, no entiendo si es que simplemente estás usando miniloader, pero no usas CPCtelera, y es por eso que tienes este problema. En los proyectos de CPCtelera, en el directorio cfg/ hay un fichero de configuración cdt_manager.mk con el que se puede definir muy fácilmente el layout que quieres para el CDT que se produce, poniendo qué ficheros quieres incluir y en qué orden. De esta forma, cada vez que haces make, CPCtelera te genera el CDT con los binarios que necesitas, en el orden que has definido y con la codificación que quieres para cada uno. De lo contrario, hacer esto a mano es bastante doloroso si tienes que estar repitiéndolo durante el desarrollo.

Si tienes más dudas, pregunta y lo vemos :).

Meta
Forero habitual
Forero habitual
Mensajes: 103
Registrado: Jue 04 Ene , 2018 9:36 am

Re: CPCtelera, desarrollar juegos para Amstrad de forma sencilla

Mensajepor Meta » Dom 28 Feb , 2021 9:28 pm

Hola Ronaldo gracias por la respuesta,

No tengo cpctelera porque no me manejo con c++ y mi ordenador es incompatible. Lo que he hecho es "adaptar" el script de cpct_miniload.asm a winape directamente. Porcierto muy buena y asequible, creo que la usaré en proyectillos futuros, si puede ser.

Pensé que la imagenes se hacian con 2CDT, pero ya veo que iba por el camino incorrecto. Ya esta aclarado. Probaré cpc2cdt aver si lo apaño.

Que por cierto, pensaba que cpc2cdt era para ficheros ASCII nada más.

Meta
Forero habitual
Forero habitual
Mensajes: 103
Registrado: Jue 04 Ene , 2018 9:36 am

Re: CPCtelera, desarrollar juegos para Amstrad de forma sencilla

Mensajepor Meta » Dom 28 Feb , 2021 9:39 pm

Vale, acabo de ver el help de CPC2CDT y parece estar todo muy claro.

Gracias de nuevo.

Avatar de Usuario
ronaldo
Forum Addict
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

Mensajepor ronaldo » Lun 01 Mar , 2021 10:05 am

No tengo cpctelera porque no me manejo con c++ y mi ordenador es incompatible. Lo que he hecho es "adaptar" el script de cpct_miniload.asm a winape directamente. Porcierto muy buena y asequible, creo que la usaré en proyectillos futuros, si puede ser.

Que por cierto, pensaba que cpc2cdt era para ficheros ASCII nada más.
Esto que comentas me sorprende. No hace falta saber C++ para usar CPCtelera. De hecho, con CPCtelera puedes programar en ASM, C y BASIC si quieres, pero no en C++. Por otra parte, me interesa especialmente eso que dices de que tu ordenador es incompatible. Hasta donde sé, lo que te puede hacer más o menos difícil instalar CPCtelera es tu sistema operativo, pero no tu ordenador. De hecho, tengo CPCtelera instalada y funcionando perfectamente en un Asus EEEPC 701 de los primeros que salieron, y tienen ahora más de 17 años. ¿Qué problema tienes exactamente que te resulte incompatible?

En cuanto a cpc2cdt, como estás viendo ya en la ayuda que comentas, sirve para todo, no sólo para ASCII :). Espero que te sea de utilidad.

Meta
Forero habitual
Forero habitual
Mensajes: 103
Registrado: Jue 04 Ene , 2018 9:36 am

Re: CPCtelera, desarrollar juegos para Amstrad de forma sencilla

Mensajepor Meta » Lun 01 Mar , 2021 5:33 pm

Bueno, parece que no me he explicado muy bien. Con "incompatible" quería decir que tuve problemas con la instalación de los requisitos previos como cygwin32, que parece ser que necesita .NET, y si no me equivoco creo que tengo una versión antigua. Después intente instalar MinGW32 pero los mirrors parecen estar en huelga.
Y ya de perdidos al río lo intente con GNUMake haber si podía ejecutar el makefile pero no ayudó. Total, todo esto para hacer un make del susodicho ejecutable que dí por "imposible" viendo como me alejaba de mi objetivo y decidí recurrir a este foro.

Por otro lado, quería comentarte que tengo en cuenta el gran esfuerzo que habéis dedicado a este proyecto, y me preguntaba si quizá sea un poco desalentador ver como el trabajo queda trastocado. Lo que no sé es, hasta que punto esta bien visto este tipo de "hacks", o maneras de proceder. Te pido por favor que si estoy obrando mal me lo hagas saber.

De lo contrario, ¿Sería posible que liberaseis un ejecutable de CPC2CDT?.
He estado haciendo pruebas con imágenes y sigo con el mismo problema,
parece ser que tengo una versión distinta (la que viene en incluida en el juego FIRETYRE) a la de cpctelera que tienes alojada en github.

Un saludo

Avatar de Usuario
ronaldo
Forum Addict
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

Mensajepor ronaldo » Mar 02 Mar , 2021 2:01 pm

Bueno, parece que no me he explicado muy bien. Con "incompatible" quería decir que tuve problemas con la instalación de los requisitos previos como cygwin32, que parece ser que necesita .NET, y si no me equivoco creo que tengo una versión antigua. Después intente instalar MinGW32 pero los mirrors parecen estar en huelga.
Y ya de perdidos al río lo intente con GNUMake haber si podía ejecutar el makefile pero no ayudó. Total, todo esto para hacer un make del susodicho ejecutable que dí por "imposible" viendo como me alejaba de mi objetivo y decidí recurrir a este foro.
Esta es la parte que me interesa más, por echarte una mano y por comprobar también si hay errores o problemas. En principio, de lo que cuentas, el problema principal que veo es cygwin32. Cygwin32 lo usábamos con la versión 1.4. de CPCtelera y anteriores, pero ya funciona todo correctamente con Cygwin64. Así pues, si quieres instalártela con Cygwin, tan sólo debes usar la última versión de Cygwin, sin más. Con MinGW32 y GNUMake no sería imposible hacerla funcionar, pero es realmente muy complicado adaptar a Windows todas las cosas que hay ahora mismo en CPCtelera que es software de Linux. De ahí que las recomendaciones para usar CPCtelera en Windows sean Cygwin o WSL (Windows Subsystem for Linux). De hecho, ahora mismo, WSL es la mejor opción. Requiere algunos ajustes mínimos para lanzar las aplicaciones gráficas (como los emuladores), pero es un Linux completo y da toda la funcionalidad al completo (como Cygwin, pero mejor).

En el caso de .NET, que yo sepa, no tenemos requisitos de versión. .NET se requiere, únicamente, por el Arkos Tracker y conversores. Esta parte estamos pensando eliminarla en próximas versiones de CPCtelera, o ponerla como un paquete opcional. Precisamente, nuestra mayor preocupación ahora mismo son las dependencias de este estilo que son muy pesadas e incómodas. Sin embargo, si ya tenías instalado .NET, con eso sería suficiente. El problema podría ser que el instalador de CPCtelera no detectase que tengas .NET ya instalado (por ser el de Windows). En ese caso, lo más fácil es cambiar el script del instalador para que ignore la comprobación de .NET y ya está. Con eso simplemente, continuaría y todo listo.
Por otro lado, quería comentarte que tengo en cuenta el gran esfuerzo que habéis dedicado a este proyecto, y me preguntaba si quizá sea un poco desalentador ver como el trabajo queda trastocado. Lo que no sé es, hasta que punto esta bien visto este tipo de "hacks", o maneras de proceder. Te pido por favor que si estoy obrando mal me lo hagas saber.
Muchas gracias :). Si con "hacks" te refieres a coger cosas de CPCtelera y usarlas en otros proyectos, hazlo tranquilísimamente. Eso no es un hack, no es más que un uso distinto al planificado. Todo lo que hay en CPCtelera está para usarlo, con o sin CPCtelera, como mejor te venga. Todo es código abierto (salvo alguna parte como lo del Arkos Tracker), y todo está con licencias libres para que lo puedas modificar, usar, incluir y hacer lo que quieras. No sólo no está mal, sino que es para eso.

Usa las cosas como más te guste o mejor te convenga. Una cosa es que me interese por ver que problemas puede haber y ayudar a corregirlos, y otra que me parezca un problema que uses las cosas de otra forma. Ningún problema: al contrario, está para eso.
¿Sería posible que liberaseis un ejecutable de CPC2CDT?.
He estado haciendo pruebas con imágenes y sigo con el mismo problema,
parece ser que tengo una versión distinta (la que viene en incluida en el juego FIRETYRE) a la de cpctelera que tienes alojada en github.
Está liberado, como todo lo demás. En CPCtelera tienes el código fuente completo, el makefile y lo puedes coger, compilar, usar y hacer con él lo que veas. Respetando la licencia libre, que seguro que ya lo haces, no hay problema (es decir, mantener la autoría de CNG y mantener libres las modificaciones que hagas).

Si tienes problemas con imágenes, esto me recuerda a algo que puede pasar a veces con el cálculo del CRC. Si tu imagen empieza por un bloque de ceros muy grande, es posible que el cálculo del CRC de 0 y eso haga que el programa se confunda y piense que es una cabecera en vez de un bloque de datos. En la última revisión que hicimos ya corregí un problema así, pero puede quedar alguno. Prueba simplemente a meter un píxel con un valor random al principio de la imagen a ver si se corrige el problema. A 2CDT esto también le pasaba. No es un problema de la codificación, sólo de reconocer los datos como datos o como cabecera AMSDOS (Si es lo que creo, claro).

Cualquier cosa que necesites, ya sabes dónde estamos :)

Meta
Forero habitual
Forero habitual
Mensajes: 103
Registrado: Jue 04 Ene , 2018 9:36 am

Re: CPCtelera, desarrollar juegos para Amstrad de forma sencilla

Mensajepor Meta » Mar 02 Mar , 2021 7:00 pm

Olvida lo que he dicho de .NET, me parece que leí de pasada que era un
requisito para la instalación de cygwin pero no presté demasiada atención.

El mensaje que aparece al instalar cygwin (setup_x86.exe) es el siguiente:

"Cygwin is not supported on this windows versión"

De ahí que quizás te dijera que era incomptible, no sé.

Log:
2021/02/27 17:57:07 Starting cygwin install, version 2.905
2021/02/27 17:57:07 mbox Cygwin Setup: Cygwin is not supported on this Windows version
2021/02/27 17:57:10 AddAccessAllowedAceEx(, owner) failed: 1337
2021/02/27 17:57:10 AddAccessAllowedAceEx(, group) failed: 1337

Después leí de problemas que ha tenido la gente que decían de renombrar a "setup.exe", ponerlo en le directorio "C:\cygwin", o marcar la casilla de compatibilidad con windows 2000. Todo eso lo probé por curiosidad y nada.
Sinceramente, no dediqué demasiado tiempo al asunto y pasé, pero parece una cuestión de privilegios del windows.

Respecto a los "hacks", creo que es obvio no te voy a tirar el servidor (haber si aprendo un poco de C primero) :lol: y ni con esas... Jerga de informáticos, que mundo. No, en serio, me alegro de que exista esa filosofía de compartir.

Del tema de liberar un ejecutable me refiero a un .EXE, porque que yo sepa, no he encontrado ningún sitio donde descargarlo. Las fuentes sí, sé que las tenéis en github pero poco puedo hacer con ellas si no tengo un entorno de desarrollo de C.
Esto es toda la cuestión.

Y sí, efectivamente, la versión de cpc2cdt que tengo mete CRCs al igual que 2CDT.
CPC2CDT (version FIRETYRE), elimina las cabeceras AMSDOS bien hasta donde he podido comprobar.
Con 2CDT bueno, he leído un motón de cosas y creo que tengo al menos 4 o 5 versiones diferentes, y efectivamente, hay ciertos problemas con las cabeceras.
Realmente obtengo el mismo resultado o muy parecidos con las dos, excepto con el pilot/sync que conseguí ponerlo a 1480/740 con cpc2cdt.

Con paciencia y tal, modifiqué la imagen con CDTMaster y las he hecho funcionar quitando el byte de cabecera o ID, una pareja de CRC cada 256 bytes y modificando el byte de "cierre" de bloque. Que si no me equivoco viene a ser:
A=H, A XOR L, H=A = FF , donde H = present CRC y L = bit

Todo esto al menos ,me ha servido para comprender un poco como se comporta la rutina del miniload y saber un poquillo más de CDTs, podría hacer una rutina principal que eliminase los CRCs pero me parece más elegante la que tienes en cpctelera, y de ahí que necesite CPC2CDT.EXE (VERSION HACKS). :lol:

Saludos

Avatar de Usuario
ronaldo
Forum Addict
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

Mensajepor ronaldo » Mar 02 Mar , 2021 7:11 pm

Olvida lo que he dicho de .NET, me parece que leí de pasada que era un
requisito para la instalación de cygwin pero no presté demasiada atención.

El mensaje que aparece al instalar cygwin (setup_x86.exe) es el siguiente:

"Cygwin is not supported on this windows versión"
Esto es lo que te comentaba: estás usando cygwin32 (x86) en una máquina de 64 bits, donde debes usar simplemente la última versión de Cygwin que es para 64 bits. Tan sencillo como eso. Nada más.
Del tema de liberar un ejecutable me refiero a un .EXE, porque que yo sepa, no he encontrado ningún sitio donde descargarlo. Las fuentes sí, sé que las tenéis en github pero poco puedo hacer con ellas si no tengo un entorno de desarrollo de C.
Esto es toda la cuestión.
No distribuimos exes, ni .so, ni .deb ni nada, porque CPCtelera es multiplataforma y nos volveríamos majaras si tuviéramos que ocuparnos de compilar todo para todos los SOs y todas las arquitecturas y mantenerlo cada vez que se cambia algo. Por eso damos fuentes y todo el sistema de build preparado para que se compile solo.
Todo esto al menos ,me ha servido para comprender un poco como se comporta la rutina del miniload y saber un poquillo más de CDTs, podría hacer una rutina principal que eliminase los CRCs pero me parece más elegante la que tienes en cpctelera, y de ahí que necesite CPC2CDT.EXE (VERSION HACKS). :lol:
Todo esto que comentas que has hecho es como 20 veces más difícil que instalar Cygwin, o cualquier otra cosa con la que compilar cpc2cdt sólo, si es lo que quieres. Puedes hacerlo fácilmente con WSL en tu Windows, o puedes instalar MSYS2 que es también muy rapidito y fácil. En Cygwin con las recomendaciones de paquetes de CPCtelera ya tendrías para compilar cualquier cosa de las que hay en CPCTelera con sólo descargarte su carpeta y poner "make". Lo mismo si tras instalar MSYS2, en el terminal de MSYS instalas make y gcc. Y lo mismo si lo haces en WSL que viene con Windows 10. Cualquiera de ellos te vale y es muchísmo más fácil que lo que has hecho tratando de poner a mano las cabeceras y toquetear bytes. Si has podido hacer lo segundo, con lo primero puedes también, seguro. Además, para cualquier cosa, te echamos una mano sin falta :)


¿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