Autor Tema: Problemas con scroll suave a toda pantalla  (Leído 6912 veces)

i03862

  • Sinver
  • *
  • Mensajes: 12
  • SYS 0
    • Ver Perfil
Problemas con scroll suave a toda pantalla
« en: Noviembre 27, 2018, 18:00:50 »
Hola a todos los commodorianos. Es mi primera vez en el foro y me gustaria que alguien me ayudara
para resolver un problemilla que me esta voviendo loco. He hecho un programa para sacar un scroll
horizontal pero no es estable (tiembla). He metido el codigo de control del scroll dentro de la
interrupcion y tambien por fuera (en el bucle principal) y sigo teniendo el mismo problema. Mando
el codigo para ver si alguna alma samaritana me puede echar un cable. Muchisimas gracias de
antemano
Código: [Seleccionar]

;*************************************************************
;*   SCROLL FINO CONTROLADO POR JOYSTICK EN PUERTO 2
;*************************************************************

scrloc01        = 1384          ; ultima columna de la pantalla
scrloc02        = 1424
scrloc03        = 1464
scrloc04        = 1504
scrloc05        = 1544
scrloc06        = 1584     
scrloc07        = 1624
scrloc08        = 1664
scrloc09        = 1704
scrloc10        = 1744
scrloc11        = 1784
scrloc12        = 1824   
scrloc13        = 1864
scrloc14        = 1904
scrloc15        = 1944
scrloc16        = 1984
joy2            = 56320         ; Joystick puerto 2
xfine           = $fb           ; Numero de pixels a desplazar
column          = $fc           ; Puntero al siguiente dato a "pokear"
irqexit         = $ea81         ; Rutina de interrupción del Kernal
        ;
        !to "scroll.prg",cbm     ; tipo de CPU ( C-64 )
        ;
        *= $c000                ; Direccion de comienzo
        ;
init    lda     #$07            ; Inicializa variables
        sta     xfine
        lda     #$00
        sta     column
        sei                     ; Desactiva interrupciones del sistema
        lda     #$00
        sta     $d020           ; Color de borde a negro
        lda     #147
        jsr     $ffd2           ; borra la pantalla
      lda     #$7f
        sta     $dc0d           ; Desactiva teclados reloj, etc
        lda     #<irq1
        ldx     #>irq1
        sta     $314            ; Prepara la 1ª interrupcion IRQ
        stx     $315
        ldy     #$1b
        sty     $d011           ; Pone la primera linea raster
        lda     #$01           
        sta     $d01a           ; Activa eh tipo de interrupción (raster)
        cli                     ; Activa interrupciones del sistema
        ;
        ;       Main loop
        ;
hold    jsr     charplot        ; Pokea los datos en pantalla   
        jmp     hold            ; bucle sin fin
        ;
        ; Custom IRQ routines
        ;
irq1    inc     $d019           ; Reconoce interrupciones raster
        lda     #$00
        sta     $d012           ; 1º linea raster (comienzo de la zona de scroll)
        lda     #$01
        sta     $d021           ; Pone el color de la pantalla a blanco
        lda     #<irq2
        ldx     #>irq2
        sta     $314            ; Prepara la segunda interrupción raster
        stx     $315
        ;
        lda     xfine           ; Codigo de scroll fino     
        sta     $d016           
        lda     joy2            ; Lee el joystick
        and     #15
        cmp     #$07            ; A la derecha?
        beq     scroll          ; Si, hace el scroll
        jmp     irqexit         ; No, salta al sistema
        ;
scroll  lda     column          ; Chequea el final del los datos a "scrolizar"
        cmp     #$ff            ; Limite alcanzado?
        bne     goscroll        ; No, sigue haciendo el scroll
        jmp     irqexit         ; Si, final del scroll
        ;
goscroll   
        lda     xfine           ; Lee el flag de desplazamiento fino
        sec                     
        sbc     #$01            ; velocidad del scroll
        and     #$07            ; Este trozo solo hace eso : desplaza la información de
        sta     xfine ; pantalla 7 a 0 Pixels (scroll de derecha a izquierda)
        jmp     irqexit ;
        ;
irq2    inc     $d019           ; Reconoce interrupciones rastree
        lda     #$60
        sta     $d012           ; 2º linea raster
        lda     #$08           
        sta     $d016           ; Zona de pantalla fija (para títulos, puntos, récords, etc)
        lda     #$03
        sta     $d021           ; Pone el color de pantalla a azul claro
        lda     #<irq1
        ldx     #>irq1
        sta     $314            ; Vuelve a poner la 1º rutina IRQ 
        stx     $315
        jmp     irqexit ; Sale al sistema
        ;
        ; Plot & scroll chars routine
        ;
charplot
        lda     xfine ; Comprueba la posición del scroll (Pixels)
        beq     endsec          ; Ha llegado a 0? Entonces hace scroll completo de caracteres
        jmp     nomove     
endsec  ldx     #$00            ; Scroll completo de caracteres
wrapmsg lda     scrloc01+1,x
        sta     scrloc01,x
        lda     scrloc02+1,x
        sta     scrloc02,x
        lda     scrloc03+1,x
        sta     scrloc03,x
        lda     scrloc04+1,x
        sta     scrloc04,x
        lda     scrloc05+1,x
        sta     scrloc05,x
        lda     scrloc06+1,x
        sta     scrloc06,x
        lda     scrloc07+1,x
        sta     scrloc07,x
        lda     scrloc08+1,x
        sta     scrloc08,x
        lda     scrloc09+1,x
        sta     scrloc09,x
        lda     scrloc10+1,x
        sta     scrloc10,x
        lda     scrloc11+1,x
        sta     scrloc11,x
        lda     scrloc12+1,x
        sta     scrloc12,x
        lda     scrloc13+1,x
        sta     scrloc13,x
        lda     scrloc14+1,x
        sta     scrloc14,x
        lda     scrloc15+1,x
        sta     scrloc15,x
        lda     scrloc16+1,x
        sta     scrloc16,x
        inx
        cpx     #$28
        bne     wrapmsg
        ldy     column
        lda     tab01,y         ; Pone nueva información en la columna 40 (oculta)
        sta     scrloc01+39
        lda     tab01,y
        sta     scrloc02+39
        lda     tab01,y
        sta     scrloc03+39
        lda     tab01,y
        sta     scrloc04+39
        lda     tab01,y
        sta     scrloc05+39
        lda     tab01,y
        sta     scrloc06+39
        lda     tab01,y
        sta     scrloc07+39
        lda     tab01,y
        sta     scrloc08+39
        lda     tab01,y
        sta     scrloc09+39
        lda     tab01,y
        sta     scrloc10+39
        lda     tab01,y
        sta     scrloc11+39
        lda     tab01,y
        sta     scrloc12+39
        lda     tab01,y
        sta     scrloc13+39
        lda     tab01,y
        sta     scrloc14+39
        lda     tab01,y
        sta     scrloc15+39
        lda     tab01,y
        sta     scrloc16+39
        inc     column
        lda     #$07
        sta     xfine   
nomove  rts
        ;
        ; Datos gráficos para el scroll
        ;
tab01   !byte    0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30
        !byte    33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60
        !byte    61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88
        !byte    89,90,91,82,83,84,85,86,87,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112
        !byte    113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133
        !byte    134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154
        !byte    155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175
        !byte    176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196
        !byte    197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217
        !byte    218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238
        !byte    239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,32,0,0,0,0


javierglez

  • Commodore Master
  • *****
  • Mensajes: 452
  • terminator not seen
    • Ver Perfil
Re:Problemas con scroll suave a toda pantalla
« Respuesta #1 en: Noviembre 27, 2018, 18:53:01 »
Yo lo que veo es que haces el scroll de caracteres cuando el registro del scroll fino está a 0 y no sé si eso te funciona en absoluto a la que sueltas el joystick y se queda en 0, pero en todo caso tendrias que hacer el scroll de caracteres cuando pasa de 0 a 7.

Una opcion sería hacerlo en el momento añadiendo dos lineas en goscroll:

Código: [Seleccionar]
goscroll   
        lda     xfine           ; Lee el flag de desplazamiento fino
        sec                     
        sbc     #$01            ; velocidad del scroll
        and     #$07            ; Este trozo solo hace eso : desplaza la información de
        sta     xfine ; pantalla 7 a 0 Pixels (scroll de derecha a izquierda)
->        bcs     @noschar    ; si no paso de 0 a 7 no scroll de caracteres
->        jsr     endsec         ; ahora charplot empieza en endsec
       
@noschar jmp     irqexit

Otra opcion es que utilices una variable que haga de bandera y entonces puedes llamar a charplot cuando te de la gana. Como estas modificando todas las lineas de la pantalla en paralelo lo mejor seria hacer los cambios cuando el raster deja el area visible, sera la linea 250 aunque no se exactamente.
Código: [Seleccionar]
goscroll   
        lda     xfine           ; Lee el flag de desplazamiento fino
        ldx  #1
        sec                     
        sbc     #$01            ; velocidad del scroll
        and     #$07            ; Este trozo solo hace eso : desplaza la información de
        sta     xfine ; pantalla 7 a 0 Pixels (scroll de derecha a izquierda)
->        bcs     @noschar    ; si no paso de 0 a 7 no scroll de caracteres
->        dex
->@noschar         stx bandera
            jmp     irqexit

y luego en charplot
Código: [Seleccionar]
charplot
->        lda     bandera ; Comprueba la posición del scroll (Pixels)
        beq     endsec          ; Ha llegado a 0? Entonces hace scroll completo de caracteres
        jmp     nomove   
-> endsec  dec bandera 
             ldx     #$00            ; Scroll completo de caracteres
wrapmsg lda     scrloc01+1,x
...

R. INTERNATIONAL

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 667
  • THE NEW IRON AGE HAS COME!!
    • Ver Perfil
Re:Problemas con scroll suave a toda pantalla
« Respuesta #2 en: Noviembre 27, 2018, 21:08:51 »
 Yo hace poco he aprendido a mover scroll suave a toda la pantalla gracias a Laddh, no he revisado tu listado ya que todavia estoy pichón en el tema, a mi alguna vez me ha hecho lo que tu cuentas.
 Un primer consejo es anular (no eliminar) posibles rutinas que afecten al scroll, de esta forma puedes localizar donde esta el problema en el caso de que alguna rutina (que no sea del scroll) le afecte.
 Yo por ejemplo no utilizo las interrupciones para el scroll, las utilizo solo para la musica, no se si utilizas raster en el Mainloop, haciendo lo que te digo yo me di cuenta que el Raster me producía temblores en el scroll, anunlandole no me temblaba, también podría ser que alguno de los acumuladores del scroll se te sobrecarge al ser utilizado por rutinas externas.
 Cuanto mas recargas un programa de rutinas es mas probable que te lo haga y necesites utilizar los acumuladores X o Y,...prueba la rutina por si sola sin rutinas externas del tipo (comportamiento de enemigos, marcador, rutinas motores, etc), con todo eso aislado el scroll te deberia de ir correcto, si no es así puede que tengas algun error en la rutina.
 Como te digo, aisla rutinas externas hasta que veas cual le afecta y empieza por ahí, a ver si Laddh te puede ayudar, yo si no dieras con el problema te puedo pasar la rutina que utilizo yo.

   Saludos.

Dashiad

  • Commodoremaníaco
  • ****
  • Mensajes: 160
  • SYS 0
    • Ver Perfil
Re:Problemas con scroll suave a toda pantalla
« Respuesta #3 en: Noviembre 28, 2018, 00:31:11 »
Yo casi aseguraría que el problema está en que estás dibujando caracteres por delante y por detrás del raster.
Las variables scrloc01....16, las estás usando para intentar pintar en toda la pantalla a la vez, incrementando solo x.
Eso hace que estés poniendo caracteres en muchas "y" distintas, tanto si ha pasado el raster por allí, como si no.
Es decir, para x=0, dibujas en srcloc01,x .Suponte que en ese momento el raster está exactamente en esa posición.
Empiezas a dibujar en srcloc02,x , luego en 03,x.. Esas posiciones están más abajo.Sin embargo, el raster sigue pintando la fila donde está srcloc01.
Posiblemente, cuando incrementas x, y vuelves a srcloc01,x , el raster, de las 8 lineas que tiene que pintar para esa fila, le ha dado tiempo a pintar 2 o 3.
Y ahora actualizas esa fila, que está a medio dibujar por el raster, y vuelves a ir hacia abajp.
Cuando vuelves a pintar en todos los srcloc0X, y vuelves al 01, el raster ya ha pasado por ahi.Esa linea no te va a dar problemas ya (aunque no es la correcta), sino que vas a alcanzar el raster una línea más abajo (en 02)
Y eso es por lo que sale el patrón en diagonal. El raster viaja de izquierda a derecha, y tú estás pintando de arriba a abajo.
En el código que subí en este post, aún no uso scroll fino, porque buscaba velocidad pintando un mapa de tiles (ahora busco tiempo para implementar metatiles). Ese código se basa en dibujar siempre por detrás del raster, y no tiene parpadeos, sin usar doble buffer.

Pero, para no "adelantar" al raster, si en la parte de arriba de la pantalla (40 caracteres), hay 10 tiles, pinto la primera fila de los 10 tiles, luego la segunda fila de los 10...Si pintara el primer tile completo, luego el segundo, etc, estaría pintando por delante y por detrás del raster.

De todas formas, ten en cuenta que ese modelo de pintado, aunque "cómodo" (sólo hay que actualizar x), cuando pongas un mapa real, muy posiblemente no lo puedas usar.



R. INTERNATIONAL

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 667
  • THE NEW IRON AGE HAS COME!!
    • Ver Perfil
Re:Problemas con scroll suave a toda pantalla
« Respuesta #4 en: Noviembre 28, 2018, 08:06:28 »
 Saludos Dashiad, hace poco me di cuenta que tenia un mensaje privado del Foro tuyo, perdona no haberte contestado antes, es que soy un desastre con este tipo de mensajes de todos los portales, por eso disculpa.
 Como habras leido ya voy moviendo un scroll y siempre me acuerdo de tí, tengo ganas de verte para enseñartelo, recuerda la promesa que tenemos,...jajaja,ja,ja

   Un abrazo!

i03862

  • Sinver
  • *
  • Mensajes: 12
  • SYS 0
    • Ver Perfil
Re:Problemas con scroll suave a toda pantalla
« Respuesta #5 en: Noviembre 28, 2018, 10:54:26 »
Muchas gracias a todos por la rapida respuesta. Si, la rutina en si no esta nada optimizada. La primera version
de este codigo tenia la rutina de scroll fino y el dibujo de caracteres dentro de la misma interrupcion y era
logico que temblara (demasiado que procesar para el raster) pero cuando saque la rutina de dibujo fuera,
me sorprendio tener casi el mismo resultado. He leido con atencion la respuesta de Dashiad y creo que se
por donde van los tiros. De todas formas, estoy implementando una nueva rutina de "ploteo" de caracteres,
creo que menos intensiva de calcular, y que me va a permitir tener un scroll continuo en cualquier direccion,
(bueno eso espero ;)). En cuanto tenga algo factible, la publico por aqui.. Y, otra vez, gracias por vuestra
ayuda..

i03862

  • Sinver
  • *
  • Mensajes: 12
  • SYS 0
    • Ver Perfil
Re:Problemas con scroll suave a toda pantalla
« Respuesta #6 en: Noviembre 28, 2018, 10:59:44 »
Otra cosa mas, Por cierto Rulas, he visto tus videos en YouTube sobre tus logros con esta maravillosa
maquina. Ojala yo pueda ir por el mismo camino. Yo tambien vivo en Madrid. Una cosa que podriamos
hacer es apuntarnos (los que podamos o queramos) a una quedada para intercambiar ideas, experiencias
sobre el desarrollo de programas para nuestro querido C64 (o el Amiga del cual soy tambien forofo!).
Seria interesante ver y compartir los desarrollos sobre todo de juegos.

Dashiad

  • Commodoremaníaco
  • ****
  • Mensajes: 160
  • SYS 0
    • Ver Perfil
Re:Problemas con scroll suave a toda pantalla
« Respuesta #7 en: Noviembre 28, 2018, 12:37:43 »
Yo vivo en Madrid, y me apunto a cualquier quedada sobre programación del C64!! Cuando lo hacemos?

i03862

  • Sinver
  • *
  • Mensajes: 12
  • SYS 0
    • Ver Perfil
Re:Problemas con scroll suave a toda pantalla
« Respuesta #8 en: Noviembre 28, 2018, 18:13:00 »
Dashiad : Genial, yo ahora estoy de trabajo hasta arriba pero en unos dias tengo vacaciones asi que ya nos
ponemos en contacto a traves de este foro. Por cierto, he leido por ahi que se pueden mandar mensajes
en privado. Lo digo por el tema de darnos el whatsapp para contactar que publicamente, no me gusta
mucho la idea. Bueno, ya lo vamos preparando. Otra cosa, lo prometido es deuda. En mi mensaje anterior
dije de mandaros una rutina para hacer scroll (de caracteres)un poco mas optimizada que la anterior,a ver que os parece. Bueno, ahi va...

Código: [Seleccionar]

charsrcl 
       ldy     column
       ldx     #0
fill    lda     line0,y
       sta     1024,x
       lda     line0,y
       sta     1064,x
       lda     line0,y
       sta     1104,x
       lda     line0,y
       sta     1144,x
       lda     line0,y
       sta     1184,x
       lda     line0,y
       sta     1224,x
       lda     line0,y
       sta     1264,x
       lda     line0,y
       sta     1304,x
       lda     line0,y
       sta     1344,x
       lda     line0,y
       sta     1384,x
       lda     line0,y
       sta     1424,x
       lda     line0,y
       sta     1464,x
       lda     line0,y
       sta     1504,x
       lda     line0,y
       sta     1544,x
       lda     line0,y
       sta     1584,x
       lda     line0,y
       sta     1624,x
       lda     line0,y
       sta     1664,x
       lda     line0,y
       sta     1704,x
       iny   
       inx
       cpx #40   ; Limite de 40 columnas ?
       bne fill
       rts
        ;
        ; Datos
        ;
column  !byte    0    ; numero de columna a pintar en pantalla
        ;
line0  !byte    1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,22,24,25
        !byte    26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47
        !byte    48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69
        !byte    70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91
        !byte    92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109
        !byte    110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125
        !byte    126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141
        !byte    142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,156
        !byte    158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173
        !byte    174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189
        !byte    190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205
        !byte    206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221
        !byte    222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237
        !byte    238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253
        !byte    254,255,0,0,0,0,0,0,0,0,0,0


La cosa esta en que si incrementas el valor de "column" el scroll es de derecha a izquierda
y si lo dercrementas, el scroll es al reves..

Tengo que probarla insertandola en un scroll fino a ver que tal va. Tengo por ahi una
rutina de raster estable que tiene muy buena pinta. Vamos a ver como va la cosa..
Os cuento en breve....



Dashiad

  • Commodoremaníaco
  • ****
  • Mensajes: 160
  • SYS 0
    • Ver Perfil
Re:Problemas con scroll suave a toda pantalla
« Respuesta #9 en: Noviembre 28, 2018, 21:00:24 »
Por lo que veo, es una variación de las rutinas de limpiado de pantalla.
Pero mientras no controles donde está el raster, y dónde pintas, lo normal va a ser que te parpadee.

Estás fijando el mapa a una lista de bytes sobre la que vas iterando.Sin embargo, un juego que tenga scroll, muy posiblemente vaya a requerir un mapa más complejo.En cuanto se complica la forma en la que está el mapa en memoria, el desenrrollar bucles empieza a no ser tan sencillo...

Ahora mismo, tienes una indirección (usando x), sobre la memoria de pantalla, y una indirección (usando y), sobre el mapa. El mapa es "procedural", ya que se "genera" a través de código (el registro y hace overflow y comienza otra vez desde cero).
Si lo que tienes es un mapa real en memoria, incluso si está 100% descomprimido, ( o sea, tienes el mapa entero, carácter a caracter, en memoria), no vas a poder pintarlo así. Y aquí es donde empiezan a sumarse ciclos al código.
Lo normal es que tengas un mapa basado en tiles de 4x4, 5x5 u 8x8...Y, si tienes metatiles (grupos de 4x4 tiles), el mapa está guardado como secuencias de metatiles, que hay que resolver a sus tiles, que hay que resolver a los caracteres, y entonces pintar en pantalla. Y es aqui donde empiezas a perder ciclos de reloj, sobre todo si también tienes que pintar la memoria de color.

R. INTERNATIONAL

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 667
  • THE NEW IRON AGE HAS COME!!
    • Ver Perfil
Re:Problemas con scroll suave a toda pantalla
« Respuesta #10 en: Noviembre 28, 2018, 23:01:08 »
Pasadas las Navidades, abrimos un Hilo y organizamos una quedada de Coders, que siempre se aprenden cosas y pasamos un raro pipa.

R. INTERNATIONAL

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 667
  • THE NEW IRON AGE HAS COME!!
    • Ver Perfil
Re:Problemas con scroll suave a toda pantalla
« Respuesta #11 en: Noviembre 28, 2018, 23:05:59 »
Yo este finde voy a la Feria del Juguete antiguo en Delicias, el museo del ferrocarril,..el finde que viene me voy a la Feria nacional del Scalextric, Foroslot y luego ya nos metemos en navidades, por eso ahora estoy un poco liado de actividades.

   Lo dicho, pasadas las navidades organizamos una quedada, aunque solo sea tu y yo, ojala se apunte mas gente interesada en aprender y lanzarse a programar.

i03862

  • Sinver
  • *
  • Mensajes: 12
  • SYS 0
    • Ver Perfil
Re:Problemas con scroll suave a toda pantalla
« Respuesta #12 en: Noviembre 29, 2018, 13:12:40 »
RULAS, por mi de acuerdo lo de la quedada. Mejor despues de las Navidades, Dashiad me mando un mensaje diciendo que tambien estaba de acuerdo. En enero vamos concretando el tema. ¡Perfecto!

DASHIAD, ¡Uff..me estoy perdiendo! Alla, a finales de los 80, hice algunas cosillas con scrolling fino y no
utilizaba tiles ni double-buffer pero, despues de tantos años ni me acuerdo como lo hice. No llego a
comprender el significado de los tiles y de como usarlos (despues de tanto tiempo me siento un poco
"pardillo" en esto). Creo que utilizaba un mapa (parecido a los que se crean en el C64prg_Studio o sea
sequencias de caracteres organizados en filas y con un ancho de mapa de 256 columnas, es decir:

        linea 1    AGRTRTG5BCDEDEFRDFRFFGGGHHHHJJ...............JJKJJ
        linea 2    GLREYHLRTYREKDFKDFKREMGFMTYYUU...............JUJU
        linea ..........
        linea 15  GFREREGRTHTYJYTJTYJTYUJTYJTYJYTJKK..............UTYJJ

Cada letra en mayusculas es un caracter modificado y entonces leia secuencialmente dichas lineas
y las pintaba en pantalla. Como viste en el 1º listado, el control del registro de scroll lo hacia dentre
de la rutina de interrupcion y el "ploteo" de caracteres lo hacia fuera, en el bucle principal.  Por
supuesto, todo esto te lo estoy contando arañando lo mas que puedo del baul de mis recuerdos  ;)
por eso todo lo que me estas contando me suena un poco a chino.

Si alguien pudiera pasarme algun codigo, por pequeño que sea, me ayudaria mucho a comprender todo
este tema. ¡O por lo menos algun sitio en internet que pudiera sacar algo claro!. yo he estado buscando
y lo unico que he visto son los "rants" de Cadaver pero es demasiado complicado para mi

!Os lo agradeceria en el alma.. ??? ???.!

R. INTERNATIONAL

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 667
  • THE NEW IRON AGE HAS COME!!
    • Ver Perfil
Re:Problemas con scroll suave a toda pantalla
« Respuesta #13 en: Noviembre 29, 2018, 14:34:18 »
 Que casualidad que yo ayer estuve trasteando en intentar crear una rutina para creacion de tiles, pero no di con tesultado optimos, la verdad es que el tema que dices es interesante y no lo he experimentado, incluso fuera del prgestudio seria factible simplemente con la rutina que te muestra un texto en pantalla simplemente en vez de entrecomillando el texto, poniendo el valor Hexa del char fuera de comillas,...tengo que experimentarlo (a ver si tengo tiempo que estoy super liado)
 En relación a hacer una juntada de Coders, me alegra mucho que te apuntes, e incluso podría hacer que alguien mas se apunte, como Blackhole (muchos ya le conoceis y cracker reconocido), lo podriamos organizar al estilo de las reuniones que hacia con Retro Game Systems, la celebramos en mi casa, monto tres C64 reales y un PC para que trasteemos todos agusto, lo ideal seria hacerlo un Domingo por la mañana, comemos de menu aqui al lado y quien quiera continuamos un rato por la tarde.
 El tema de organizar reuniones se me da bien, recientemente organice un nuevo Torneo de Scalextric (de los mios) en el lugar donde hariamos la reunion de C64, aqui podeis ver los tinglados que organizo, en la seccion de notas estan las fichas de los diferentes Torneos.

https://www.facebook.com/Torneos-Scalextric-561265877652972/

 La reunion la podiamos hacer en mi casa en Valdebebas (a 7 minutos de Plaza Castilla), quien no tenga coche que se vaya a Plaza Castillai en metro y le recojo yo con el coche,..lo organizamos pasadas las Navidades,..ya abrire un Hilo.


darro99

  • Desarrolladores
  • Commodorista
  • ******
  • Mensajes: 57
  • PRESS PLAY ON TAPE
    • Ver Perfil
Re:Problemas con scroll suave a toda pantalla
« Respuesta #14 en: Noviembre 29, 2018, 18:00:27 »
Buenas a todos!
He estado leyendo el tema del scroll. Hace tiempo estuve liado con ello, el problema que tenía es que no iba lo suficientemente rápido y opte por un scroll a lo 'bestia' que es el que esta implementado en Sky Diving...
Pero me desvío del tema. He estado revisando 'viejos' códigos de scroll a través del VIC y he visto que lo hago es mover los caracteres con  los registros del VIC, mientras en la una pantalla 'oculta' muevo en dos veces los bloques de datos para que cuando termine el movimiento por hardware se haga el swap entre pantallas. Todo ello sincronozándolo con el raster de la pantalla.
Espero que os sirva como idea.

Por cierto Rulas, nos vimos en el ultimo RetroMadrid pero apenas pudimos hablar... Lo siento :( a ver si quedamos delante de unas cervecitas (al menos invito a la primera ronda :D) y hablamos de codificación.

Salu2 a todos!!!