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

R. INTERNATIONAL

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1018
  • THE NEW IRON AGE HAS COME!!
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #105 en: Septiembre 18, 2014, 22:53:06 »
 Si por ejemplo yo compilo ese listado eliminando las lineas que asignan el color en este caso en $D800 el caracter se me ve bien, lo unico que el color char aparece en azul...

  Aqui lo veis arrancando lo que os adjunto en el vice...

  Saludos

CPULoyal

  • Commodorista
  • ***
  • Mensajes: 56
  • SYS $FFED
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #106 en: Septiembre 19, 2014, 00:56:46 »
  todo el tema de la memoria de color me lo controlo, lo que no se porque no me muestra el color,..creo que tus listados me van a venir muy bien,...voy a cenar y los pruebo,..me queda una duda,..no entiendo bien la ultima linea...

TBLCOLOR  BYTE 00, 01, 02, 03, 04, 05, 06, 07, 08
                  BYTE ... (HASTA COMPLETAR LOS 1000 BYTES DE COLOR)

y dudo ya que yo tengo la posicion de memoria en $d800 si tengo que tambiar TBLCOLOR por $$d800,..por ejemplo en las lineas..

                  LDA <TBLCOLOR           
                  STA $FB
                  LDA >TBLCOLOR
                  STA $FC               ;LA DIRECCION DE LA MEMORIA DE COLOR INICIA EN $D800

  Poner...

                  LDA <$D800         
                  STA $FB
                  LDA >$D800
                  STA $FC               ;LA DIRECCION DE LA MEMORIA DE COLOR INICIA EN $D800

  me doy cuenta que aqui hay mucha chica en estas lineas....
                  LDA <TBLCOLOR           
                  STA $FB
                  LDA >TBLCOLOR
                  STA $FC               ;LA DIRECCION DE LA MEMORIA DE COLOR INICIA EN $D800
                  LDA #$00
                  STA $FD
                  LDA #$D8
                  STA $FE

  He imagino que el tema de copiar las paginas sera totalmente necesario.....???......

   Hablamos....

TBLCOLOR es la etiqueta para indicar la dirección del inicio de la tabla de color, en el ensamblador. La rutina que te puse copia desde la dirección que dinámicamente le asigna el ensamblador, hacia la dirección fija de la memoria de color, es decir; $D800.

Asi, el segmento de código, inicia en los apuntadores en $FB/$FC para origen y en $FD/$FE para destino.

Código: [Seleccionar]
                  LDA <TBLCOLOR           
                  STA $FB
                  LDA >TBLCOLOR
                  STA $FC               ;LA DIRECCION DE LA MEMORIA DE COLOR INICIA EN $D800
                  LDA #$00
                  STA $FD
                  LDA #$D8
                  STA $FE

La copia usa el modo indexado indirecto y la página cero como auxiliar para mover los bloques de datos.
« última modificación: Septiembre 19, 2014, 01:06:44 por CPULoyal »

CPULoyal

  • Commodorista
  • ***
  • Mensajes: 56
  • SYS $FFED
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #107 en: Septiembre 19, 2014, 00:58:09 »
CPULoyal he estado probando con el listado y al compilarlo me dice que no defino CHRRTN,...he estado probando de todo pero al final no me funciona,...estoy un poco desesperado...

elimina el BEQ CHRRTN, se me coló en el ejemplo y no lo necesitas.

CPULoyal

  • Commodorista
  • ***
  • Mensajes: 56
  • SYS $FFED
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #108 en: Septiembre 19, 2014, 01:03:18 »
Si por ejemplo yo compilo ese listado eliminando las lineas que asignan el color en este caso en $D800 el caracter se me ve bien, lo unico que el color char aparece en azul...

  Aqui lo veis arrancando lo que os adjunto en el vice...

  Saludos

En tu programa no hay ninguna asignación de la memoria de colores. Prueba a colocar antes del loop JMP $4827 el siguiente código:

Código: [Seleccionar]
         LDA #$01    ; Color blanco
         STA $D800  ; Primera posición de la memoria de color, asignada a la posición en pantalla $0400
         JMP $4827

Eso debe darte el efecto que buscas.

R. INTERNATIONAL

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1018
  • THE NEW IRON AGE HAS COME!!
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #109 en: Septiembre 19, 2014, 10:47:55 »
 Gracias, lo pruebo y te cuento...Jodo, ayer hasta casi las 4 de la mañana dandole cera a Caligula!!

R. INTERNATIONAL

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1018
  • THE NEW IRON AGE HAS COME!!
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #110 en: Septiembre 19, 2014, 13:09:38 »
LLevo toda la mañana probando de todo, poniendo quitando lineas, valores, etc......al final para nada!!!!,..no entiendo que lleve  24 horas dedicado a sacar un puto color char en pantalla y no sea capaz,....estoy ahora mismo con la cabeza como un bombo y me sale humo de las orejas,..por no hablar del mosqueo que tengo....

  vuelvo a adjuntar el listado a ver si alguien le puede agregar las lineas necesarias para que se muestre el char color en pantalla,.....ya se que me habeis dicho Mil veces que no asigno los colores en las posiciones de memoria a partir de $d800 y ya he dicho Mil veces que si lo hago se me va a tomar por culo el multicolor y el efecto ladrillado,....

Código: [Seleccionar]
; FIJA MODO TEXTO
LDA #$12
STA $D018
LDA #$1B
STA $D011
LDA #$08
STA $D016
; COLORES MULTICOLOR CHARS
        LDA #$07     ; AMARILLO     
        STA $D022    ; BACKGROUND COLOR 1
        LDA #$08    ; NARANJA   
        STA $D023    ; BACKGROUND COLOR 2
; DA COLOR VERDE A POSICIONES DONDE SE MUESTRA LETRA A
LDA #$05    ; COLOR VERDE     
        STA $D800   ; POSICION DE VIDEO COLOR
STA $D803   ; POSICION DE VIDEO COLOR
; MUESTRA DOS LETRAS A EN LAS POSICIONES ARRIBA IZQUIERDA
LDA #$01    ; LETRA A     
        STA $0400   ; POSICION DE PANTALLA
STA $0403   ; POSICION DE PANTALLA

CPULoyal

  • Commodorista
  • ***
  • Mensajes: 56
  • SYS $FFED
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #111 en: Septiembre 19, 2014, 17:09:20 »
Calma, lo que estás haciendo está bien. De hecho, puedes notar que los dos caracteres que pones en tu ejemplo toman el color verde (5) cuando los colocas en pantalla. Lo que está ocurriendo es que al asignar el color, se muestran en modo hires.
Para depurar tu código necesito que me indiques la dirección donde reside tu conjunto redefinido. Me parece que es $2800, pero quiero estar seguro.
También, si es posible, pon el archivo de cuneiform donde redefiniste los caracteres para revisarlo.

Saludos

R. INTERNATIONAL

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1018
  • THE NEW IRON AGE HAS COME!!
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #112 en: Septiembre 19, 2014, 20:05:04 »
Calma, lo que estás haciendo está bien. De hecho, puedes notar que los dos caracteres que pones en tu ejemplo toman el color verde (5) cuando los colocas en pantalla. Lo que está ocurriendo es que al asignar el color, se muestran en modo hires.

  Exacto!!!,....eso es lo que me esta desquiciando, como ya sabras es super desesperante no comer, no dormir durante un dia,..para nada!!

  Mandame un mail aqui y te mando todo de un batacazo,...que aqui me da problemas en el momento que adjunto mas de un archivo,....ya intente mandarlo.

      retrogamesystems   arrobo      gmail.com

R. INTERNATIONAL

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1018
  • THE NEW IRON AGE HAS COME!!
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #113 en: Septiembre 19, 2014, 20:07:58 »
Ya voy a aprovechar para mandarte la ultima actualizacion de Caligula....vas a flipar con el salto que ha dado!!,...si consigo depurar el esqueleto hecho, puede resultar en un buen Proyecto.

Carlos

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 631
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #114 en: Septiembre 19, 2014, 21:47:09 »
Calma, lo que estás haciendo está bien. De hecho, puedes notar que los dos caracteres que pones en tu ejemplo toman el color verde (5) cuando los colocas en pantalla. Lo que está ocurriendo es que al asignar el color, se muestran en modo hires.

  Exacto!!!,....eso es lo que me esta desquiciando, como ya sabras es super desesperante no comer, no dormir durante un dia,..para nada!!

  Mandame un mail aqui y te mando todo de un batacazo,...que aqui me da problemas en el momento que adjunto mas de un archivo,....ya intente mandarlo.

      retrogamesystems   arrobo      gmail.com

Rulas:

; DA COLOR VERDE A POSICIONES DONDE SE MUESTRA LETRA A
LDA #$0D    ; COLOR VERDE      <=== AQUI ESTA LA CLAVE
STA $D800   ; POSICION DE VIDEO COLOR
STA $D803   ; POSICION DE VIDEO COLOR


CPULoyal

  • Commodorista
  • ***
  • Mensajes: 56
  • SYS $FFED
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #115 en: Septiembre 19, 2014, 23:40:58 »
Ampliando el comentario de Carlos. En modo multicolor tienes 8 colores para cada carácter, porque el bit 4 se usa como bandera entre modo hires/multicolor. Si el bit está a 0, entonces el carácter se interpreta como hires. si el bit está a 1, entonces es multicolor.
De tal modo que, en tu ejmplo, para asignar el color verde tienes que sumarle 8 al color para que aparezca en multicolor, por lo que tal y como Carlos te indicó se asigna 13 ($0D) a la memoria de color correspondiente.
Adicionalmente, te falta cambiar a multicolor. Tu pusiste:

Código: [Seleccionar]
$4871     LDA #$08
$4873     STA $D016

Para cambiar a multicolor, el valor correcto es:

Código: [Seleccionar]
$4871     LDA #$18
$4873     STA $D016

Con este y el cambio propuesto por Carlos, verás tu A en multicolor.

Saludos
« última modificación: Septiembre 20, 2014, 03:11:06 por CPULoyal »

R. INTERNATIONAL

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1018
  • THE NEW IRON AGE HAS COME!!
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #116 en: Septiembre 20, 2014, 01:11:29 »
Bueno,...todos tranquilos....

  Con las tres simples lineas que ha puesto carlos.......FUNCIONA!!,...la explicacion tuya CPULoyal de sumarle 8 al valor del color ya ha sido el remate,..ahora entiendo lo de hacerme mis tablas de color...
« última modificación: Septiembre 20, 2014, 01:15:10 por R. INTERNATIONAL »

R. INTERNATIONAL

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1018
  • THE NEW IRON AGE HAS COME!!
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #117 en: Septiembre 22, 2014, 20:11:43 »
  Bueno Troncos en breve nos ponemos con la Colision de Sprites,...de momento la hago a "capon", es decir, tienen que coincidir la X e Y exacta de mi Sprite con la X e Y del Sprite que quiero comparar....como os podeis imaginar es funcional pero no aceptable en un juego...

  En dos semanas de Vacaciones le he dado un meneo a Caligula que no me lo creo ni yo,..ya he incluido a CPULoyal en el hilo privado con las ultimas actualizaciones del Proyecto,..Carlos mandame un correo porque me gustaria incluirte en el Hilo/s

  Como digo lo proximo que quiero aprender es a gestionar la colision de sprites,..hay una posicion de memoria que gestiona algo de esto pero que desconozco como funciona,..se trata de la:

   $D01E      ; SPRITE TO SPRITE COLLISION REGISTER

  Se abre el debate,....no se si os habeis fijado que el archivo Constantes que yo cargo en todo programa contiene un listado de Etiquetas muy fidedizno al que os encontrareis en cualquier libro minimamente serio de programacion en ensamblador,..eso es asi para que el lenguaje de etiquetas sea lo mas standar para todos posibles..

    Saludos y AL HIERRO!!

R. INTERNATIONAL

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1018
  • THE NEW IRON AGE HAS COME!!
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #118 en: Septiembre 25, 2014, 22:58:06 »
  Comentaros un asunto, que me vais a echar la bronca,...son de estas cosas que Carlos se sorprendera (ja,ja,jaj) en el sentido de como avanzo tanto por un lado y luego estoy tan primitivo por otro,..os cuento:

  Yo cuando monto un texto, lo monto digamos "a capon", quiero decir,..que cargo el en acumulador el valor de la letra segun el archivo de chars por defecto o cargado y luego lo aplico a la posicion de pantalla,..por ejemplo, por ejemplo (y para los no entendidos),..quiero mostrar la letra A en la posicion de pantalla arriba mas a la izquierda:

  LDA #$01         ; CARGO LETRA A
  STA $0400        ; APLICO A POSICION DE PANTALLA EN MEMORIA

  He estado consultado libros y listados en Bombjack/Commodore y veo que cargan algunos textos simplemente con .BYTE o .TEXT (atencion porque en el 64Tass se necesita el "." primero) y escriben el texto seguido y lo muestra

  Esto me llama mucho la atencion,.porque imaginaros el derroche de Bytes que yo hago,..el ahorro seria tan inimaginable que no me entra en la cabeza,...tambien pensad del despilfarro de Bytes que yo puedo hacer en textos largos o cortos muy numerosos (labyrinth)...

  Tengo que mirar este tema pero cualquier luz en relacion a mostrar un texto o textos con un gasto minimo (no lo que hago yo) de bytes lo agradezco mucho,...tras dos semanas de vacaciones le he metido un salto a Caligula (por cierto CPULoyal, Carlos, Baron, Zanni y Bieno no me habeis dicho nada todavia de la ultima actualizacion que os mande por privado) pero como imaginareis cuando creas rutinas nuevas y cosas nuevas derrochas bytes a tutiplen y ahora estoy de relectura del listado y estudio y te das cuenta de muchas cosas, entre otras, luego creas nuevas subrutinas y lo simplificas todo de la leche,..que decir tiene que el ahorro de bytes es super importante!!

  Lo dicho, cualquier luz en relacion a lo de mostrar un texto con no mucho gasto de bytes,...me hace Capitan.

  Bueno os dejo....
« última modificación: Septiembre 25, 2014, 23:00:31 por R. INTERNATIONAL »

R. INTERNATIONAL

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1018
  • THE NEW IRON AGE HAS COME!!
    • Ver Perfil
Re:Dudas en Ensamblador
« Respuesta #119 en: Septiembre 25, 2014, 23:04:29 »
 La verdad es que CPULoyal y Carlos os estais ganando vuestra presencia como "Asistentes de Programación"...
 
   Gracias!!