• lo comentaba porque tengo la impresion que con Amiga tenes mas margen de error... creo que quien propone la idea no esta habituado a programar juegos, por lo tanto no se trata solo de conocer la plataforma, y por ende con menos recursos de hard hay que hilar mas finito... en amiga hay lenguajes para programar interesantes y sino se puede compilar algun basic etc etc etc, y teniendo a favor que hay mas recursos de hard, dandole un margen de beneficio a la inexperiencia... digo yo... no se... (fue otra pavada de mi parte?) smile
     

  • Es un planteo valido, en una maquina de 8 bits se tiene que optimizar todos los recursos y por lo tanto hacer algo medianamente bueno en assembler por ahi no es apto para principiantes, el tema es que me parece que el assembler en si no es apto para empezar. Por eso me parece que si es en Amiga por ahi seria mejor probar algo en algun BASIC u otro lenguaje hecho para juegos, o si es en C64, en algun BASIC compilado.
    Igual supongo que lo que define el tema es que maquina tienen para usar, no todo el mundo tiene una Amiga.
     

  • A mi me parece mas interesante ponerse a programar un jueguito que una demo, el juego no necesariamente tiene que ser muy avanzado, con poco se puede hacer algo decente.

    Escribir algo que maneje los graficos en Basic no es un gran avance son respecto al assembler en la C64, porque tenes que manejar los pokes para todo, te ahorras de escribir alguna operacion matematica, pero perdes velocidad de ejecucion a lo loco y ademas un cross-ensamblador bueno de PC te permite usar labels y variables con nombres largos, comentarios, formatear el texto como se te cante. En basic tenes que usar numero de lineas, variables con dos letras de nombre, y limitaciones asi. De ultima usando C se obtiene lo mejor del Basic sin todas sus desventajas. Ademas si usas el include adecuado podes manejar las direcciones de memoria por nombre en vez de por numero, y el nombre mas o menos dice que hace la dirccion de memoria (no traen nombres TAN claros, son tipo VICCOL0, pero es mejor que poner 53281 cada 2 lineas)

    Lo que tiene la C64 es que esta pensada para implementar juegos simples con poco trabajo si usas la capacidad grafica de forma no muy avanzada, solo 8 sprites a la vez, te limitas a la cantidad de colores que soporta la pantalla, sprite, caracter, etc. Podes hacer cosas simpaticas. Si queres hacer algo mas profesional ahi tenes que meterte con interrupciones y entender bien el funcionamiento del sistema a todo nivel y escribir un programa muy ajustado que esta atento de cada ciclo del CPU y el VIC y cosas asi, pero vas a tener una calidad grafica mucho mejor.

    Saludos
    MARCOS
     

  • Justamente, por eso decia lo del BASIC, porque se traduce casi directo a assembler despues, lo decia porque hacer un juego no es solo sentarse a programar, hay que hacer graficos, sonido, y plantearse una idea. Si van a empezar de cero sin tener nada definido, por ahi es mejor darle forma en BASIC y cuando se tenga claro que se quiere hacer, traducir eso a assembler. Pero todo depende de quien lo quiera hacer, por ahi prefiere tardar un poco mas pero empezar directamente en assembler y darle forma al juego a medida que aprende. El tema es que si se hace de esa manera, lo mas seguro es que los graficos se rehagan varias veces, a medida que se va descubriendo que lo que se pensaba posible al inicio no es tan facil como parecia.
     

  • Bueno, comencé a dar algunos pasos en el juego. Me encontré con una limitación terrible. Resulta que aprendí a usar Goat Tracker e hice un pedacito de tema, que quiero usar como música en la intro del juego ( BASIC )...

    por todo lo que leí, esto es imposible....  ¡¿ cómo puede ser !?  osea, si el terrible chip de sonido SID permite crear música tan copada, cómo puede ser que el condenado BASIC no permita "importar" un .sid ?

    por favor, iluminenme sobre este tema, un juego sin música no es juego, he dicho.

    Algo parecido me pasó al investigar si se podía cargar un bitmap usando solo BASIC.

    Aclaración:  Sé que usando ASM se puede importar y reproducir el .sid, pero estoy haciendo pruebas con solo BASIC, por Retrospectiva.  No entiendo los porqués de que los trabajos deban ser solo BASIC, pero bueno, son las reglas.

     

  • Hola!
    ¿Y si tomas el programa en ASM y lo "reproduces" a fuerzas de POKES?

    Es decir...el programa en ASM no debe hacer nada mas complicado que tomar un byte de aqui, escribirlo en la direccion de memoria de alla, etc...y eso lo puedes hacer con POKES desde el BASIC, no?

    ¿Puede ser?

    Saludos!
     

  • Yo decia lo del BASIC porque justamente no tiene instrucciones para sonido y graficos, hay que hacer todo con POKEs, como primera etapa para tener claro lo que se quiere hacer sirve, y despues de los POKEs a asm es casi directa la traduccion.
    Ahora, si lo que queres es participar en Retrospectiva, lo mejor es que busques una extension de BASIC mas adecuada, con instrucciones de graficos y sonido, movimiento de sprites, etc. Igual en el peor de los casos podes hacer el juego en BASIC a puro POKE, y despues compilarlo para darle velocidad.
    Pero un archivo .SID que yo sepa no se puede integrar a ningun BASIC, porque es basicamente un programa en codigo de maquina. Por ahi con algun que otro arreglo al codigo se pueda hacer que funcione como "tarea de fondo" mientras ejecuta el BASIC, pero eso ya no califica para participar en Retrospectiva.
     

  • Se puede tener musica de fondo desde BASIC, incluso en modo directo y escuchar mientras programas wink

    La forma más sencilla con goattracker, que permite relocalizar donde se va a cargar la musica es la siguiente (siempre y cuando el SID ocupe menos de 4K)

    En las opciones al grabar con F9, dejas todo por defecto menos startaddress, que cambias a $C000, y grabas como prg.

    Ahora al principio del programa (lo primero que se ejecuta) pones lo siguiente (podes cambiar el numero de las lineas, pero las 2 primeras tienen que ser las primeras del programa):

    10 ifa=1then30
    20 a=1:load"transyltest.prg",8,1
    30 fori=0to21:readp:poke828+i,p:next
    40 data120,169,76,141,20,3,169,3,141,21,
    3,32,0,192,88,96,32,3,192,76,49,234
    100 sys828
    110 print"hola":goto110

    Cambiando el nombre del archivo del sid por el que vayas a usar, yo aca use el que viene como ejemplo -Transylvania.

    Lo que hacen esas lineas despues es cargar una rutinita en codigo maquina que inicializa el reproductor y lo 'pega' a la rutina de interrupción del sistema, por lo que se ejecuta maas o menos 50 o 60 veces por segundo (dependiendo la máquina).
    El sys lo ejecuta y queda la cancion de fondo, solo se para al hacer RUNSTOP/RESTORE. Con sys828 arranca de nuevo.

    Para canciones de más de 4K hay que cargarlas en otra parte, preferentemente al final de la ram BASIC, pero ahi hay que poner un par de pokes para modificar punteros y esas cosas. (Y tambien modificar las datas para que la rutina de codigo maquina apunte a la direccion apropiada)



    La rtina en codigo maquina es bien sencilla:

    * = $033c

        sei
        lda #<irq
        sta $314
        lda #>irq
        sta $315
        jsr $c000
        cli
        rts
    irq:    jsr $c003
        jmp $ea31
     

  • Si, el tema es que ahora dijo que lo hacia en BASIC para participar en RSP2012, ahi aunque la rutina sea simple no se puede usar porque no respetaria las reglas.
     

  • Ah, no habia leido esa parte.
     

Moderador (s): thierry, homecomputer, Selandari, pastbytes, Durandal