Autor Tema: Dudas en Ensamblador  (Leído 118757 veces)

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 11304
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Dudas en Ensamblador
« Respuesta #345 en: Febrero 23, 2016, 09:33:25 »
Una duda: ¿porqué en $1000?, y si allí uno ya tuviera otra cosa? No se puede poner en otra dirección?

Maniako

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1013
  • SYS 8*4096
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #346 en: Febrero 23, 2016, 09:53:41 »
Por poner, puedes ponerla donde quieras adaptando la rutina, pero por tema de manejo de pantallas, es uno de los mejores lugares donde ponerlos.

LDA #$50
STA $0400
RTS
Lloré cuando conseguí hacer esto con el monitor del FC1.

Carlos

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 641
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #347 en: Febrero 23, 2016, 12:10:40 »
Una duda: ¿porqué en $1000?, y si allí uno ya tuviera otra cosa? No se puede poner en otra dirección?

En $1000 porque la melodía se ha creado con un tracker que la sitúa ahí. Si la quieres situar en otro lado, el encargado de hacer la música (Baron Ashler seguro que de esto sabe más) tiene que crearla desde el tracker ya preparada para esa dirección.
« última modificación: Febrero 24, 2016, 08:22:02 por Carlos »

Zub

  • Desarrolladores
  • Commodoremaníaco
  • ******
  • Mensajes: 147
  • SYS 0
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #348 en: Febrero 23, 2016, 12:41:23 »
Hola tocayo,

Añadiría como detalle que algunas rutinas echan mano de variables de zero-page que habría que tener en cuenta. No sé hasta qué punto esto se suele documentar... Yo integré un SID de Cadaver en mi proyecto para probar, y me daba errores. Viendo la documentación suya, su rutina de SID usaba 2 variables de zero-page que mi programa utilizaba para otra cosa (con el correspondiente conflicto). Creo que con goattracker usan las mismas siempre.

Respondiendo a lo de $1000, con algunos tracker se puede "reubicar" la rutina para colocarla en cualquier zona de memoria. Si el código tiene llamadas a variables absolutas, no se puede cambiar la posición de la rutina SID alegremente.

Saludos

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 11304
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Dudas en Ensamblador
« Respuesta #349 en: Febrero 23, 2016, 12:50:17 »
Que cosa mas rara... siempre pensé que el tema de la música eran sólo datos que luego había que pasarle al SID y nada más... :O

pastbytes

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 534
  • SYS 0
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #350 en: Febrero 23, 2016, 13:11:15 »
Es mas o menos asi, solo que se hace indirectamente llamando a una rutina que interpreta notas y tiempos musicales, asi como efectos. La rutina se llama 50 o 60 veces por segundo segun el modelo de C64 (PAL o NTSC), en PAL serian 20 milisegundos entre cada posible nota, como las notas suelen durar mas, hay que contar interrupciones para saber donde activar o apagar el canal correspondiente del SID para tocar la nota. Tambien el SID determina la nota en un numero que indirectamente establece la frecuencia, mientras que el .sid se suele componer usando notas musicales, la rutina tambien tiene que adaptar la nota a frecuencia. Y ademas de eso, hay efectos que se suelen usar y que no estan implementados en el hard del SID, por decir alguno que se me viene a la memoria, algun efecto de deslizarse de una nota a la siguiente, tocando las frecuencias intermedias, eso lo haria la rutina reproductora tambien por soft.
En definitiva, la rutina lo que hace es interpretar los parametros que estan en un formato comprimido y mas compatible con valores musicales (octava, nota, instrumento, tiempos, efectos, etc.), convertirlos en los valores adecuados para "pokear" en el SID, y lo hace en la llamada a interrupcion mas conveniente para respetar los tiempos de la composicion.

R. INTERNATIONAL

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1018
  • THE NEW IRON AGE HAS COME!!
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #351 en: Febrero 23, 2016, 14:57:54 »
  Buff!!,...gracias a todos, en especial a Carlos,..dadme un poco de tiempo para digerir los datos y os cuento, esta semana estoy apurado con el curro, pero el finde lo tengo libre y me enclaustrare a cañon!
 
  Chao


R. INTERNATIONAL

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1018
  • THE NEW IRON AGE HAS COME!!
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #352 en: Febrero 24, 2016, 23:22:32 »
 En funcion a lo que hablamos de la Gestión de todos los Sprites por encima o por debajo de la Barrera de los 255, ya he cambiado en todas las subrutinas el EOR por el AND y esto funciona como la Seda, tengo que reconocer que lo veo todo purulando por toda la pantalla y me quedo Flipado viendolo, ..he dado un gran salto.

  Quizas pienso que he perdido una costumbre que me puso Madonna Makk II y era la de utilzar los TAX, TAY,TXA y TYA, los programadores me vais a matar pero os puedo asegurar que no los utilizo lo cual supone y muchas veces pienso que ocurre que juego al liminte de "sobrecargar" el Acumulador..

  En cualquier caso,...buenos resultados con Kabura, estoy a cañon para terminarlo, en breve seguimos hablando del sonido y las melodias, este finde lo veo...

  Chao.

R. INTERNATIONAL

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1018
  • THE NEW IRON AGE HAS COME!!
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #353 en: Febrero 28, 2016, 11:55:50 »
 Una pregunta tonta Carlos,..la rutina de reproduccion de Musica que has puesto recientemente (y que tengo que probar en cuanto tenga un hueco) sirve para poder meter Music in Game o es solo para reproducir un SID?,..si sirviera para lo primero y aplicada a Kabura sería la leche!.

   

danytoon

  • Visitante
Re:Dudas en Ensamblador
« Respuesta #354 en: Febrero 29, 2016, 16:05:21 »
He estado jugando un rato al juego y me parece un GRAN avance sobre el Xain...

Sólo hecho en falta tal vez un poco de mejora en el grafismo de los decorados, y un scroll doble le vendría de perlas, quedaría realmente pro... Por lo demás... todo perfecto... supongo que su baja dificultad es porque toda´via esto es un WIP... (ya que, por ejemplo ahora puedes pasar de los enemigos aéreos todo lo que quieras)

R. INTERNATIONAL

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1018
  • THE NEW IRON AGE HAS COME!!
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #355 en: Marzo 01, 2016, 00:24:57 »
  Hi Dany!

El tema del avance en relación a Xain es lo mas interesante del asunto,..creo que ha sido monumental y eso es lo importante: Control de colision de Sprites, Movimiento de Scroll y gestion de superion de 255...poco a poco en cada Proyecto seguir avanzando y aprendiendo...

  Para graficos de decorados he utilizado el paquete de chars de 2K por defecto modificado,..quitale numeros, letras y no es tanto, he tenido que estirarlo mucho ya que son siete Niveles, en el proximo proyecto solo seran tres niveles y podre aprovechar mas chars para enriquecer los niveles,..gracias por el comentario de estas cosas se aprende,..importante es que por primera vez he mostrado y movido un Scroll, de momento humilde pero que espero mejorar en el futuro.

  Me gustaria que me explicaras que es un Scroll doble, ..porque aunque no lo creas no se que es y me ha dejado muy interesado y con curiosidad por el tema, a veces soy un desastre y muchas cosas las desconozco o mejor dicho voy aprendiendo por el camino...

  El tema de dificultad ahora no esta definido, sigue en construccion, pero a corto plazo me interesara cuando esté termnado un Testeo entre los habituales en relacion a este sentido,...el nivel de dificultad!.

   Thanks!



 
« última modificación: Marzo 01, 2016, 00:28:53 por R. INTERNATIONAL »

R. INTERNATIONAL

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1018
  • THE NEW IRON AGE HAS COME!!
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #356 en: Marzo 01, 2016, 00:43:11 »
 Dany, voy a modificar la Pantalla de Credito y te voy a incluir en Asistentes, porque eres un Apoyo!,..y tambien incluiré a Jose (que siempre ha estado al igual que Bieno) porque sino no me lo perdonaría a mi mismo nunca...

   
 
 
« última modificación: Marzo 01, 2016, 00:50:40 por R. INTERNATIONAL »

danytoon

  • Visitante
Re:Dudas en Ensamblador
« Respuesta #357 en: Marzo 01, 2016, 01:08:25 »
Pues pon "Asistente: Commodoremania Crew" y yasta hombre... a mí el que aparezca mi nombre en cosas no me... nome :) Fíjate que no firmo ni los libros que publico xD

R. INTERNATIONAL

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1018
  • THE NEW IRON AGE HAS COME!!
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #358 en: Marzo 01, 2016, 01:24:20 »
 Imagino que así es, en el fondo no es mas que el detalle, lo importante es estar al Hierro, te pondre como Dany Quest,...que sino se me desmadra de Chars!,...ja,jajaaj,...aparte, tú tienes que estar, que eres una Base Angular de todo esto.

« última modificación: Marzo 01, 2016, 01:29:58 por R. INTERNATIONAL »

R. INTERNATIONAL

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1018
  • THE NEW IRON AGE HAS COME!!
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #359 en: Julio 27, 2016, 10:48:00 »
 Buenas,,...en Kabura hacia la reposicion de un sprite eliminado mediante las Logicas ORA, EOR y AND,...partia de la base de que no sabia si estaba por encima o debajo de la barrera y dependia de donde lo queria situar si por debajo o por encima...

 Las Logicas no me funcionaron mal, pero no dieron el resultado que yo queria como vereis en alguna reposicion en Kabura que crearon un bug,...en el nuevo Proyecto quiero hacerlo de otra forma...

 Lo que voy a hacer es que el sprite me diga donde esta,...si por encima o por debajo, de esta forma sencilla ya no voy a ciegas y el manejo es mucho mas sencillo que si me encomiendo a Logicas,..si esta abajo lo pongo arriba o lo mantengo abajo y si esta arriba lo pongo abajo o lo mantengo arriba,..esto se traduciria en que tomo la accion que quiero (lo situo donde quiero) tras chequear las posiciones 0 y 255 de X de dicho sprite, me dice donde esta y lo pongo donde quiero...

  Pero como me dice el sprite donde esta?, si arriba o abajo, voy a utilizar la posicion $D010 para ello y leere (chequeare el estado) solamente del bit que yo quiero (bit correspondiente al sprite que yo quiero) con lo cual se el resultado es 0 esta por debajo, si el resultado es 1 esta por encima...

  Para leer el bit correspondiente voy a utilizar ASL (desplazamiento hacia la izquierda) o LSR (desplazamiento hacia la derecha), pongamos un ejemplo para el sprite#2,....con lo cual...

     LDA $D010                    ; CARGO POSICION QUE CONTROLA ASUNTO
     ASL                                ; DESPLAZO EL ACUMULADOR UN BIT A LA IZQUIERDA
     ASL                                ; DESPLAZO OTRO BIT EL ACUMULADOR HACIA LA IZQUIERDA
                                           ; AHORA YA ESTOY SOBRE EL BIT QUE CONTROLA EL SPRITE 2
     BCS  ARRIBA                  ; HACE COMPARACION, SI ES 0 ESTA ABAJO Y MANDA A SUBRUTINA ARRIBA
                                           ; QUE SITUA POR ENCIMA DE BARRERA
                                           ; SI ESTA POR ENCIMA CONTINUA PROGRAMA CON LO QUE QUIERA.....POR
                                           ; EJEMPLO PONGO EL SPRITE 2 POR DEBAJO
     LDA $D010
     AND #%11111011         ; CARGA VALOR SPRITE O ENCENDIDO
     STA $D010                     ; APLICA A $D010, POR ENCIMA DE 255
     RTS

ARRIBA
        LDA $D010
   ORA #%00000100      ; CARGA VALOR SPRITE 1 ENCENDIDO
   STA $D010         ; APLICA A $D010 Y PONE SPRITE 2 POR ENCIMA
        RTS

   Todo esto es teoría ya que no lo he probado,..os pregunto,..sería factible, la metodologia es correcta?

         Saludos a Todos.