Autor Tema: Problemas con el Compilador cc65  (Leído 399 veces)

RETROJuegos

  • Commodorero
  • **
  • Mensajes: 25
  • Retromaníaco
    • Ver Perfil
    • RETROComputers
Problemas con el Compilador cc65
« 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
« última modificación: Diciembre 22, 2021, 18:05:35 por RETROJuegos »

javierglez

  • Commodore Master
  • *****
  • Mensajes: 315
  • terminator not seen
    • Ver Perfil
Re:Problemas con el Compilador cc65
« Respuesta #1 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
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

RETROJuegos

  • Commodorero
  • **
  • Mensajes: 25
  • Retromaníaco
    • Ver Perfil
    • RETROComputers
Re:Problemas con el Compilador cc65
« Respuesta #2 en: Diciembre 23, 2021, 01:39:51 »
Ok, muchas gracias. Voy a probarlo y te cuento como me fue.

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 11876
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Problemas con el Compilador cc65
« Respuesta #3 en: Diciembre 23, 2021, 11:20:09 »
Aquí tendría que aparecer también el sinver @Dozznar...

Dozznar

  • Commodorero
  • **
  • Mensajes: 27
    • Ver Perfil
Re:Problemas con el Compilador cc65
« Respuesta #4 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!!

Dozznar

  • Commodorero
  • **
  • Mensajes: 27
    • Ver Perfil
Re:Problemas con el Compilador cc65
« Respuesta #5 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!!


josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 11876
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Problemas con el Compilador cc65
« Respuesta #6 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 ;)

RETROJuegos

  • Commodorero
  • **
  • Mensajes: 25
  • Retromaníaco
    • Ver Perfil
    • RETROComputers
Re:Problemas con el Compilador cc65
« Respuesta #7 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.

RETROJuegos

  • Commodorero
  • **
  • Mensajes: 25
  • Retromaníaco
    • Ver Perfil
    • RETROComputers
Re:Problemas con el Compilador cc65
« Respuesta #8 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.

RETROJuegos

  • Commodorero
  • **
  • Mensajes: 25
  • Retromaníaco
    • Ver Perfil
    • RETROComputers
Re:Problemas con el Compilador cc65
« Respuesta #9 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.

javierglez

  • Commodore Master
  • *****
  • Mensajes: 315
  • terminator not seen
    • Ver Perfil
Re:Problemas con el Compilador cc65
« Respuesta #10 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.

javierglez

  • Commodore Master
  • *****
  • Mensajes: 315
  • terminator not seen
    • Ver Perfil
Re:Problemas con el Compilador cc65
« Respuesta #11 en: Diciembre 24, 2021, 18:08:33 »
Encontré este post, sobre el uso de time():
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

Dozznar

  • Commodorero
  • **
  • Mensajes: 27
    • Ver Perfil
Re:Problemas con el Compilador cc65
« Respuesta #12 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

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

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

RETROJuegos

  • Commodorero
  • **
  • Mensajes: 25
  • Retromaníaco
    • Ver Perfil
    • RETROComputers
Re:Problemas con el Compilador cc65
« Respuesta #13 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

RETROJuegos

  • Commodorero
  • **
  • Mensajes: 25
  • Retromaníaco
    • Ver Perfil
    • RETROComputers
Re:Problemas con el Compilador cc65
« Respuesta #14 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.