Commodore manía

Commodore 64 => Desarrollo => CC65 => Mensaje iniciado por: RETROJuegos en Diciembre 22, 2021, 17:56:53

Título: Problemas con el Compilador cc65
Publicado por: RETROJuegos en Diciembre 22, 2021, 17:56:53
Hola chicos. Les quería pedir ayuda. Estoy intentando compilar con el  cc65 un juego que arme siguiendo un tutorial con el Lenguaje C (es el juego del ahorcado). Lo compilo con Dev C++ y aparentemente funciona perfecto. Pero al hacer lo propio con cc65 para crear el prg, me tira el siguiente error en las líneas 85 y 89 del código que les adjunto. Alguna idea de como corregirlo?...

ahorcado.c(85): Error: Call to undefined function `time'
ahorcado.c(89): Error: Expression expected
ahorcado.c(89): Warning: Statement has no effect
ahorcado.c(89): Error: `;' expected
ahorcado.c(89): Error: Undefined symbol: `frase'
ahorcado.c(89): Error: Subscripted value is neither array nor pointer
cc65.exe: Precondition violated: Expr->Flags & E_HAVE_MARKS, file `exprdesc.c', line 97
No se pudo encontrar D:\RETROComputacion\Commodore\COMPILA_C\proyectos\*.o
No se pudo encontrar D:\RETROComputacion\Commodore\COMPILA_C\proyectos\*.lst
Título: Re:Problemas con el Compilador cc65
Publicado por: javierglez en Diciembre 22, 2021, 20:37:42
para usar la función time tienes que incluir la librería, #include<time.h>
pero vamos lo veo en este link, no recuerdo haberlo hecho:
https://cc65.github.io/doc/funcref.html#time (https://cc65.github.io/doc/funcref.html#time)
en todo caso lo debe hacer para inicializar el generador de números aleatorios, debes poder comentar la línea de momento.

para dimensionar la variable frase char frase[longitud], no puedes hacerlo ahí enmedio y con una longitud sin definir, tienes que hacerlo al principio del método con todas las demás variables, y con una longitud máxima literal.

eso de la línea 22 system("mode con cols=80 lines=25"); deduzco que es una llamada a la línea de comandos y eso no lo tiene el c64, ni tiene 80 columnas de texto. Y el system("cls"); de la línea 31 deduzco que es para borrar la pantalla, en cc65 es clrscr();

En el curso de BASIC del VIC20 había un ahorcado con caracteres PETSCII que supongo que quedaría mas mono que este, pero supongo que este es un buen ejercicio para hacer, gracias por compartir. Pero si esos textos están para 80 columnas va a quedar todo descuadrado

Ten en cuenta que el cc65 solo es C en la medida en que el 6502 puede dar de si por eso le quitaron los doubles y un montón de cosas

suerte
Título: Re:Problemas con el Compilador cc65
Publicado por: RETROJuegos en Diciembre 23, 2021, 01:39:51
Ok, muchas gracias. Voy a probarlo y te cuento como me fue.
Título: Re:Problemas con el Compilador cc65
Publicado por: josepzin en Diciembre 23, 2021, 11:20:09
Aquí tendría que aparecer también el sinver @Dozznar...
Título: Re:Problemas con el Compilador cc65
Publicado por: Dozznar en Diciembre 23, 2021, 12:49:33
Hola!
Como comenta el amigo Javierglez debe estar incluido time.h
#include<time.h>

Pero mira también la definición que nos pasa:

https://cc65.github.io/doc/funcref.html#time

Tiene alguna particularidad como lo de tener que llamarla como "fastcall" y lo mas importante, que el resultado igual no es el esperado salvo que tengas un reloj de tiempo real en el commodore.

Lo mejor es ver el contexto en el que se usa la función. Si puedes mandar el código... igual se puede "apañar" de otra manera. (No se para que usará el programa la función)

Salu2!!
Título: Re:Problemas con el Compilador cc65
Publicado por: Dozznar en Diciembre 23, 2021, 12:58:05
Hola otra vez :-P

Que no había visto lo de la línea 89....

Igual es solo que falta el ; y arrastra los demás errores por ello.


Lo que comenta Javierglez de la linea 22 del cls no veo donde lo comentas... ¿Puedes pegar el código por aquí y le echo un ojillo un poco a todo?


Gracias y salu2!!

Título: Re:Problemas con el Compilador cc65
Publicado por: josepzin en Diciembre 23, 2021, 13:08:48
Lo que comenta Javierglez de la linea 22 del cls no veo donde lo comentas... ¿Puedes pegar el código por aquí y le echo un ojillo un poco a todo?

Está el código C adjuntado en el primer mensaje ;)
Título: Re:Problemas con el Compilador cc65
Publicado por: RETROJuegos en Diciembre 23, 2021, 13:22:14
Hola chicos. Desde ya muchas gracias por la ayuda. Y por suerte hicimos que funcione. Ahora vamos por mas. Antes de publicarlo como un "NUEVO" juego para C64 (jaja que caradura que soy...) me gustaría hacerle algunas mejoras. Para empezar quisiera ponerle una imagen de fondo. Que me recomiendan hacer para esto. Cuál sería la herramienta mas sencilla?
PD: Les adjunto el código por si gustan ver como quedo y me quieren recomendar alguna mejora.
Título: Re:Problemas con el Compilador cc65
Publicado por: RETROJuegos en Diciembre 23, 2021, 13:29:47
Está el código C adjuntado en el primer mensaje ;)

Si, igual en el ultimo mje. adjunte el nuevo código.
Título: Re:Problemas con el Compilador cc65
Publicado por: RETROJuegos en Diciembre 23, 2021, 13:31:18
para usar la función time tienes que incluir la librería, #include<time.h>

Si, eso soluciono en gran parte los problemas.
Título: Re:Problemas con el Compilador cc65
Publicado por: javierglez en Diciembre 23, 2021, 15:59:42
Lo mejor es ver el contexto en el que se usa la función. Si puedes mandar el código... igual se puede "apañar" de otra manera. (No se para que usará el programa la función)
Usa el tiempo actual como semilla para inicializar el generador de números aleatorios, por eso le he dicho que lo comentase para debugar el resto. En CBM BASIC v2 se usaba TI$, o quizá TI, el tiempo transcurrido desde que se encendió el ordenador en jiffies, pero no recuerdo cómo. En cc65 no se como se hace.

Antes de publicarlo como un "NUEVO" juego para C64 (jaja que caradura que soy...) me gustaría hacerle algunas mejoras.
Yo un ahorcado para C64 no lo veo, porque salen muchas cosas y creo que el nivel esta mas alto. Si fuera para un ordenador mas antiguo corriendo CP/M o algo asi...

Lo veo con unos gráficos impactantes tipo PETSCII color pero también es complicado hacerlos. En fin tu mismo. Como tutorial de CC65 sí estaría bien porque la mayoría de ejemplos que salen referenciados son más complicados.
Título: Re:Problemas con el Compilador cc65
Publicado por: javierglez en Diciembre 24, 2021, 18:08:33
Encontré este post, sobre el uso de time():
https://github.com/cc65/cc65/issues/767 (https://github.com/cc65/cc65/issues/767)
básicamente, time(0) funciona, pero sólo en C64/C128. En los otros modelos que comenta, C16 y PET, no funciona.

También encontré este post, sobre el uso de clock():
https://www.lemon64.com/forum/viewtopic.php?t=72337&start=0&sid=26df713899db39d2abd50f3189c1c2b2 (https://www.lemon64.com/forum/viewtopic.php?t=72337&start=0&sid=26df713899db39d2abd50f3189c1c2b2)
Título: Re:Problemas con el Compilador cc65
Publicado por: Dozznar en Diciembre 27, 2021, 17:43:20
Hola!

Ya he visto el código y veo que has resuelto la manera de generar un número aleatorio

clock_t       t;
 t=clock();
 srand(t);

Así hago yo para inicializar la semilla. Para el tema de los gráficos si no te quieres complicar la vida debería meter algo en plan Petscii y a partir de ahi....
Si te la quieres complicar un poco.

1.- Puedes usar "Charpad" para crear un diseño de pantalla en modo caracter (con caracteres customizados)

https://subchristsoftware.itch.io/charpad-free-edition (https://subchristsoftware.itch.io/charpad-free-edition)

Y si te la quieres complicar un poco mas puedes irte a modo bitmap y hacer algo realmente espectacular. Si te animas por esa opción te puedo pasar fuentes. Aquí un enlace donde "explico" como hacer algo en modo bitmap

https://www.youtube.com/watch?v=dA0B4ZMgVSQ (https://www.youtube.com/watch?v=dA0B4ZMgVSQ)

A partir del minuto 44 está el ejemplo práctico. Oye, Un ahorcado currado en modo bitmap no me parece ninguna tontería como primer juego.

Adjunto el fuente que se hace en ese capítulo
Título: Re:Problemas con el Compilador cc65
Publicado por: RETROJuegos en Diciembre 27, 2021, 22:45:48

Oye, Un ahorcado currado en modo bitmap no me parece ninguna tontería como primer juego.


 ;D ;D ;D
Título: Re:Problemas con el Compilador cc65
Publicado por: RETROJuegos en Diciembre 27, 2021, 22:47:28
Encontré este post, sobre el uso de time():
También encontré este post, sobre el uso de clock():


Los miro.
Título: Re:Problemas con el Compilador cc65
Publicado por: RETROJuegos en Diciembre 27, 2021, 22:48:57

1.- Puedes usar "Charpad" para crear un diseño de pantalla en modo caracter (con caracteres customizados)

Y si te la quieres complicar un poco mas puedes irte a modo bitmap y hacer algo realmente espectacular. Si te animas por esa opción te puedo pasar fuentes. Aquí un enlace donde "explico" como hacer algo en modo bitmap

Adjunto el fuente que se hace en ese capítulo

Perfecto. Manos a la obra.
Título: Re:Problemas con el Compilador cc65
Publicado por: RETROJuegos en Diciembre 29, 2021, 15:54:20
Hola chicos. Me mire tu tutorial Dozznar, y le pegue a mi código, el de la imagen que me pasaste (use el mismo  para ganar tiempo). Hace el dibujo, pero no me muestra el juego. Se queda la imagen en pantalla y no sale de ahi. Les paso el código con las nuevas modificaciones.
Título: Re:Problemas con el Compilador cc65
Publicado por: Dozznar en Diciembre 30, 2021, 00:20:19





Ok!, he visto el código.

En realidad el juego no se ha parado. La lógica del juego seguirá funcionando pero ten en cuenta que al activar el modo bitmap pasa lo siguiente:

1.-Las instrucciones "printf" diseñada para consola en modo texto en el banco 0 ya no tienen efecto en la pantalla
2.-Tampoco tienes un juego de caracteres que mostrar en la pantalla

Digamos que tienes que implementar un sistema para mostrar caracteres en pantalla en este modo. La cosa se pone interesante eh?

Te adjunto código fuente y programa del Bombrun 64. El primer juego que hice que está en modo bitmap. A ver si de aquí puedes deducir la manera de mostrar tus caracteres en pantalla. Espero que te sirva y no dudes en preguntar cualquier cosa. Una pista. Tuve que crearme a mano un set de caracteres "bitmap" En el fuente los verás.
Título: Re:Problemas con el Compilador cc65
Publicado por: RETROJuegos en Diciembre 30, 2021, 20:04:36

Te adjunto código fuente y programa del Bombrun 64. El primer juego que hice que está en modo bitmap. A ver si de aquí puedes deducir la manera de mostrar tus caracteres en pantalla. Espero que te sirva y no dudes en preguntar cualquier cosa. Una pista. Tuve que crearme a mano un set de caracteres "bitmap" En el fuente los verás.

Ah, ok. Bien, te agradezco como siempre. Mirare ambos archivos y veré que puedo hacer. Creo que llevara un tiempo.
Título: Re:Problemas con el Compilador cc65
Publicado por: RETROJuegos en Diciembre 30, 2021, 20:07:14

 La cosa se pone interesante eh?



Puedo asegurarte que así es... jeje