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

R. INTERNATIONAL

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 667
  • THE NEW IRON AGE HAS COME!!
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #375 en: Enero 01, 2017, 13:42:36 »
  Hago una parentesis para romper una lanza muy en favor de tí, Pastbytes, te vuelvo a agradecer los dos ladrillos que me has puesto en los que me explicas que son y que hacen las interrupciones y por haber empleado tu seguro que valioso tiempo en ello...
  Es como si yo quiero ir a Honolulu y no se donde esta honolulu,..lo primero sera enseñarme donde esta para saber hacia donde ir, todo lo que no sea eso son dar palos de ciego, el ensamblador entrraña su dificultad en el aprendizaje por lo sencillo que es,.pero es muy importante saber que vas a hacer y porque
  Te encomio mil veces y lo que tu haces no lo hacen todos los Programadores,..yo valoro un programador no por los conocimientos que tiene, sino por la capacidad y sobre todo el interes que tiene de transmitirlos a gente Amateur que se interesa por la programacion
  Yo no soy mas que un simple Carnicero y la Informatica en temas de programacion es algo dificil y desconocido para mi y todo lo que he aprendido y he hecho a sido mas por el corazon y la fuerza y empuje que le pongo que por otra cosa...
  Por desagracia en estos ultimos 5 años he padecido a muchos programadores que si,..saben muchisimo de ensamblador pero que ni quieren ni saben transmitir sus conocimientos y que adolecen de un cierto altruismo y en muchos casos van de sobraos....
 Pero por suerte hay gente como tu,..y te repito,...gracias por transmitirme tus conocimientos y sobre todo por saber explicarlos tan bien hacia gente que no sabe.

    Chao

pastbytes

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 556
  • SYS 0
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #376 en: Enero 01, 2017, 22:34:37 »
Ando en mil cosas, en particular en estos dias estudiando el estandar MIDI para simplificar que mi chip sintetizador de voz cante a partir de un archivo MIDI, por lo que poco tiempo tengo para otras cosas, pero hago algunas aclaraciones a tu codigo, no lo vi detalladamente, pero hay cosas que faltan.
En primer lugar, el binario de la musica tiene que cargarse exactamente en la direccion que se especifica, no puedes correrlo porque es codigo asm y no va a funcionar en otro lugar. Cuando cargas un SID en un reproductor, este te da la informacion de la direccion de carga, y me parece que tambien se puede saber las direcciones de las rutinas para comenzar o detener la reproduccion, de esto no estoy seguro porque no suelo escuchar o trabajar con SIDs. Pero el asunto es que los SIDs son codigo asm +  datos, deben cargarse donde el autor (o el player, porque muchas veces se usa un reproductor estandar) lo especifica, y se debe llamar a las rutinas definidas para cada funcion.
Otro tema es que no basta con usar las instrucciones SEI o CLI para manejar las interrupciones, como habia explicado, hay un vector de interrupcion, en la IRQ cuando salta a la ROM, ejecuta un codigo que hace que salte a la rutina apuntada por el vector en $314 y $315, en esas dos direcciones se encuentra contenida una direccion de 16 bits que dice donde se encuentra la rutina que procesara la interrupcion.
Como habia mencionado, la rutina que procesa la interrupcion en el C64 esta en $EA31, si te fijas, el vector esta en $314, esto es 788, ahi esta el byte bajo del vector, y en 789 el byte alto. Prueba en el C64 a hacer PRINT PEEK(788) y PRINT PEEK(789), los valores que encontraras son 49 y 234. Esto en hexadecimal es $31 y $EA, que es justamente la direccion de la rutina en la ROM, $EA31. Si tu quieres desviar la IRQ a una rutina digamos en la direccion 49152 ($C000), lo que tienes que hacer es colocar $00 en $314 y $C0 en $315, aunque previamente tienes que deshabilitar las interrupciones, para evitar que justo se ejecute una en medio de los dos "pokes", y luego volverlas a habilitar una vez que coloques esos dos bytes.
Tu rutina de interrupcion en $C000 debe guardar los contenidos de A, X e Y, si es que vas a alterar, y antes de retornar debe restaurarlos, lo que se suele hacer es en lugar de retornar, saltar a $EA31 para que se ejecute la lectura de teclado de la ROM, de lo contrario no habra nada que lo lea, salvo que quieras implementar tus propias rutinas de lectura.
Deberias mirar esa web que paso riq, porque ahi explica la parte tecnica de como implementar una rutina de interrupcion, yo solo explique los conceptos basicos para que se entendiera mejor cuando leyeras algo mas al respecto.

R. INTERNATIONAL

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 667
  • THE NEW IRON AGE HAS COME!!
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #377 en: Febrero 10, 2017, 22:32:26 »
 Buenas a todos,..ya está el pesao otra vez....

   Todos los juegos que he hecho siempre han sido en formato .prg pero tengo que reconocer que me atrae mucho hacer uno en formato .d64,..osea en disco,..para mi es desconocido pero a la vez necesario para lo proximo que quiero acometer,..me surgen algunas preguntas en relacion a este formato:

 - Imagino que me permitira hacer un juego multicarga?
 - Podría mostrar varias bitmaps, no?
 - Seria posible tambien en cada carga refrescar (cargar uno nuevo) el banco de chars, para tener asi mas variedad?

    Como siempre mil gracias por vuestra ayuda!

R. INTERNATIONAL

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 667
  • THE NEW IRON AGE HAS COME!!
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #378 en: Febrero 10, 2017, 22:46:08 »
  Es muy probable que me meta en algo gordo y voy a necesitar toda la ayuda posible,...ya cuento con Laddh,...Maniako, también cuento contigo.

pastbytes

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 556
  • SYS 0
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #379 en: Febrero 11, 2017, 05:22:55 »
Los prg tienen en la cabecera la direccion de carga de los datos binarios que siguen, asi que pueden contener programas o datos y la carga con LOAD ,8,1 se hace en esa direccion automaticamente. Uno podria tener una pantalla, un juego de caracteres, sprites o lo que sea e ir cangandolos por separado en cualquier momento. Si quieres alterar la direccion de carga de un prg solo tienes que usar un editor de disco o un editor hexadecimal en el PC y modificar los dos primeros bytes, sin alterar lo demas.
Un D64 no es mas que una imagen con prg adentro, tambien se pueden poner otros tipos de archivos como seq, rel, pero con prg ya puedes hacer todo lo que necesitas en un juego.
Para cargar desde asm hay que llamar algunas rutinas preparatorias de la ROM y despues una para cargar el prg, no es complicado de hacer, asi de memoria habia rutinas para especificar el nombre del archivo, otra para abrir el archivo y otra para cargar, ya hace años que no lo hago asi que no me acuerdo los detalles pero es bastante simple.

R. INTERNATIONAL

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 667
  • THE NEW IRON AGE HAS COME!!
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #380 en: Febrero 26, 2017, 11:19:36 »
   Una pequeña duda,...supongamos que tengo un grafico montado en una pantalla con Chars,..todos ellos en modo multicolor,..imagino que con un Raster podría cambiar la configuración a modo Hires en  la linea que yo quisiera,..pero y aqui viene la pregunta....

  ¿Podría poner en modo Hires, chars concretos sin tener que hacerlo en toda la linea?

   Chao

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 13630
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Dudas en Ensamblador
« Respuesta #381 en: Febrero 26, 2017, 14:45:43 »
  ¿Podría poner en modo Hires, chars concretos sin tener que hacerlo en toda la linea?

Sin meterse en historias de interrupciones, hay una opción que mola bastante, se trata del modo que permite usar caracteres hires y MC al mismo tiempo, pero por usarlos de esa manera se limitan la cantidad de colores o algo asi.

Pregunté sobre este modo en el foro de CEZ, mira: http://computeremuzone.com/forum/viewtopic.php?t=4371
Una pena que falten las imagenes, las explicaciones de Wood siempre muy bien.
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

pastbytes

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 556
  • SYS 0
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #382 en: Febrero 26, 2017, 15:11:42 »
Si, tengo entendido que el modo multicolor ya permite eso, ahi dice que depende de que colores uses pero yo nunca probe eso.
Con interrupciones se podria disparar pero tendrias que hacerlo en cada linea, y no se puede tener la precision para activar un caracter particular, por la poca velocidad del 6510 y porque hay lineas en las que el VIC ademas lo interrumpe para acceder a la memoria de video. Normalmente con las interrupciones de barrido se hacen efectos verticales, por lineas enteras.

R. INTERNATIONAL

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 667
  • THE NEW IRON AGE HAS COME!!
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #383 en: Febrero 26, 2017, 22:42:07 »
   Si no me equivoco por lo que me decis, la cosa está un poco complicada,..sí se puede hacer un barrido a la linea completa pero no por chars concretos,..dentro de lo malo, yo lo que quiero hacer es en una linea (pero a lo horizontal) sobre unos 16 chars que van seguidos cambiarlos de multicolor a Hires,..lo que no sabía que el barrido lo hace a la vertical lo cual lo pondría mas dificil,...me tengo que informar mas de este asunto,.

   A ver si hago un paron entre juego y juego (porque es que no termino uno y empiezo otro (no tengo remedio)) y me dedico a aprender cosas nuevas, que me quiero poner a cañon con ellas que basicamente son los rasters y las interrupciones,..Mil gracias a los dos por vuestra información, en especial a tí Jose por ese enlace que me has dejano en spanish,..lo voy a visitar fijo e incluso es muy probable que me registre para tambien lanzar dudas que toda ayuda siempre es poca.

  Por cierto Jose (y permiteme el O.T.),..de entre tantos y tantos programas de Astronomia que escucho de todo el mundo por Ivoox, destaco uno buenisimo que se llama "Desde el sur" que realiza Ricardo Sanchez (Argentino) y que es Monumental!!

   Saludos Ferreos a todos y hasta la proxima duda....


josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 13630
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Dudas en Ensamblador
« Respuesta #384 en: Febrero 26, 2017, 22:57:31 »
por ese enlace que me has dejano en spanish,..lo voy a visitar fijo e incluso es muy probable que me registre para tambien lanzar dudas que toda ayuda siempre es poca.
No vale la pena, que el foro de CEZ murió hace mucho tiempo ya, una pena.
Seguro que por aquí puedes preguntar el tema!

  Por cierto Jose (y permiteme el O.T.),..de entre tantos y tantos programas de Astronomia que escucho de todo el mundo por Ivoox, destaco uno buenisimo que se llama "Desde el sur" que realiza Ricardo Sanchez (Argentino) y que es Monumental!!
Me lo apunto, que el tema me interesa.
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

R. INTERNATIONAL

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 667
  • THE NEW IRON AGE HAS COME!!
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #385 en: Febrero 26, 2017, 23:11:49 »
 Jolin que pena lo del foro,..con lo que fue Computer Emuzone en su momento,....y otra mala noticia, en su ultimo Programa Ricardo Sanchez se despide despues de 11 años y casi 470 programas, pero nos ha dejado un legado tremendo que estudiar a los amantes del tema, te dejo la liga y que los disfrutes.

   http://www.ivoox.com/podcast-podcast-desde-sur-explorando-cosmos_sq_f15085_1.html

    Chao

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 13630
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Dudas en Ensamblador
« Respuesta #386 en: Junio 12, 2017, 18:16:52 »
Por si no estais al tanto, @mscifu sigue con su blog de desarrollo de un juego en ensablador, explicando capítulo a capítulo cómo resolver las distintas cosas que componen un juego:

Recargas de combustible – parte 3 (final)
https://mscifu.wordpress.com/2017/06/12/recargas-de-combustible-parte-3-final/
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com