Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - Laddh

Páginas: [1] 2
1
Ensamblador / Scroll de varias pantallas a izquierda y derecha
« en: Abril 25, 2023, 18:30:42 »
Buenas gente, vuelvo a escribir en el foro después de un par de años, mas que nada porque no he tocado programación en todo ese tiempo, pero como el gusanillo programar en el C64 siempre vuelve, estoy probando esta rutina de scroll de 3 pantallas a derecha y izquierda y ostias! ahora entiendo porque el 90% de juegos solo tienen scroll hacia un lado.
La rutina en cuestión funciona bien si arrancas y solo vas a la izquierda, también funciona bien si arrancas y vas solo a la derecha, pero si te mueves hacia los dos lados la pantalla que se presenta se entrecorta y solo se recupera si mantienes el scroll a un lado.
Entiendo el fallo por como esta diseñado el scroll, arrancas con una pantalla P0 que cargo desde $c000, si muevo a la izquierda voy cargando a la derecha la segunda pantalla P1 que cargo desde $c400, lo mismo para la tercera P2 desde $c800 y vuelva a empezar en un bucle eterno.
A la derecha igual pero cargando desde la izquierda P2, P1 P0.
Voy pensando como controlar esto, supongo que ira de saber en que pantalla estoy, columna exacta, algo así, pero quiero preguntar si alguien ya se ha peleado con esto y sabe como controlar unas pantallas que se mueven columna a columna con scroll fino.
Ahí lo dejo, a ver si volvemos a animar el foro de desarrollo que estaba muy bien hace un tiempo y yo aprendí mucho de ahí.
Os dejo source y prg para quien quiera curiosear y ver mejor lo que os cuento.

Código: [Seleccionar]
; 10 SYS2064

*=$0801

        BYTE    $0B, $08, $0A, $00, $9E, $32, $30, $36, $34, $00, $00, $00

v=$d000

screen_control_register1 = $d011
screen_control_register2 = $d016

*=2064
        jsr PANCHAR
        jsr PANTALLA
        jsr carga_pres_d
        jsr sprites
loop    jsr joy
        jsr raster_wait             
        jmp loop

PANCHAR LDA 56578
        ORA #3  ;PREPARAMOS PARA SELECCIONAR EL ...
        STA 56578

        LDA 56576
        AND #252
        ORA #2  ; ... BANCO DE VIDEO 1 (16384)
        STA 56576

; COMO MEMORIA PANTALLA SE QUEDA EN SU POSICIÓN POR DEFECTO, NO LA CAMBIAMOS

;        LDA $D018 
;        AND #15
;        ORA #16  ;POSICIÓN PANTALLA DENTRO DEL BANCO
;        STA $D018 

; SI QUISIERAMOS EL CURSOR
;        LDA #68 ;CURSOR PANTALLA EN BANCO 1
;        STA 648

        LDA $D018 
        AND #240 ;ESTABLECEMOS EL MODO CARACTER
        ORA #12  ;BUSCA CARACTERES A PARTIR DE 12288 + DIR BANCO 1
        STA $D018 

        LDA $D016
        ORA #16  ;MODO CARACTER MULTICOLOR
        STA $D016
        RTS

carga_pres_d            ;Carga la primera pantalla P0
        ldx #0
COPIAp1 LDA $c000,X     
        STA $4400,X     
        LDA $c100,X     
        STA $4500,X   
        LDA $c200,X     
        STA $4600,X     
        LDA $c300,X     
        STA $4700,X     
        DEX             
        BNE COPIAp1 
        rts

raster_wait             ;espera línea raster
l1r     LDA #$ff
        CMP $D012
        BNE l1r
        BIT $d011
        BMI l1r
        rts

PANTALLA
        LDA #6
        STA $D021       ;COLOR FONDO
        LDA #2
        STA $D022       ;MULTICOLOR 1
        LDA #4
        STA $D023       ;MULTICOLOR 2
        lda #8
        sta $286
        LDA screen_control_register2
        AND #$F7    ;pone pantalla en 38 columnas
        STA screen_control_register2
        RTS

sprites lda  #3         ; Activa sprites
        sta  v+21
        lda  #2
        sta  v+28
        lda  #32
        sta  2040+16384
        lda  #34
        sta  2041+16384

        lda #3
        sta v+29
        sta v+23

        lda  #0
        sta  v+39
        lda  #1
        sta  v+40
        lda #3
        sta v+37
        lda #7
        sta v+38
   
        lda #160       
        sta v
        sta v+2
        lda #100
        sta v+1
        sta v+3
        rts

joy     LDA $DC00   ;LEEMOS JOY
        AND #31     ;LA CUATRO DIRECCIONES ARRIBA ABAJO IZQ DER   
        CMP #30     ;MAS DIAGONALES Y FUEGO
        BEQ ARR
        CMP #29
        BEQ ABJ
        CMP #27
        BEQ IZQ
        CMP #23
        BEQ DER
        cmp #31
        beq nofire
        cmp #15
        beq fire
        cmp #22
        beq der
        cmp #21
        beq der
        CMP #25
        BEQ IZQ
        CMP #26
        BEQ IZQ
        JMP joy

arr     jsr arriba
        rts
abj     jsr abajo
        rts
izq     jsr izquierda
        rts
der     jsr derecha
        rts
nofire  rts
fire    rts

arriba  dec v+1
        dec v+3
        rts
abajo   inc v+1
        inc v+3
        rts
izquierda
        lda  #33
        sta  2040+16384
        lda  #35
        sta  2041+16384
        jsr right
        jsr right
        RTS
DERECHA lda  #32
        sta  2040+16384
        lda  #34
        sta  2041+16384
        JSR left
        jsr left
        RTS

left   
    LDX screen_offset
    DEX
    STX screen_offset
    CPX #$FF
    BEQ continue
    JMP end
continue
    LDX #$07
    STX screen_offset
        jsr move_rows_left
        jsr advance_scroll
end
    LDA screen_control_register2
    AND #$F8
    ORA screen_offset
    STA screen_control_register2
        rts

move_rows_left
    LDX #$00
l2
    LDA $4401,X
    STA $4400,X
    LDA $4429,X
    STA $4428,X
    LDA $4451,X
    STA $4450,X
    LDA $4479,X
    STA $4478,X
    LDA $44A1,X
    STA $44A0,X
    LDA $44C9,X
    STA $44C8,X
    LDA $44F1,X
    STA $44F0,X
    LDA $4519,X
    STA $4518,X
    LDA $4541,X
    STA $4540,X
    LDA $4569,X
    STA $4568,X
    LDA $4591,X
    STA $4590,X
    LDA $45B9,X
    STA $45B8,X
    LDA $45E1,X
    STA $45E0,X
    LDA $4609,X
    STA $4608,X
    LDA $4631,X
    STA $4630,X
    LDA $4659,X
    STA $4658,X
    LDA $4681,X
    STA $4680,X
    LDA $46A9,X
    STA $46A8,X
    LDA $46D1,X
    STA $46D0,X
    LDA $46F9,X
    STA $46F8,X
    INX
    CPX #$27
    BNE l2
        rts

advance_scroll
        lda contador
        cmp #39
        bpl advance_scroll2
        tax
        lda $c400,x
        sta $4427
        lda $c428,x
        sta $444f
        lda $c450,x
        sta $4477
        lda $c478,x
        sta $449f
        lda $c4a0,x
        sta $44c7
        lda $c4c8,x
        sta $44ef
        lda $c4f0,x
        sta $4517
        lda $c518,x
        sta $453f
        lda $c540,x
        sta $4567
        lda $c568,x
        sta $458f
        lda $c590,x
        sta $45b7
        lda $c5b8,x
        sta $45df
        lda $c5e0,x
        sta $4607
        lda $c608,x
        sta $462f
        lda $c630,x
        sta $4657
        lda $c658,x
        sta $467f
        lda $c680,x
        sta $46a7
        lda $c6a8,x
        sta $46cf
        lda $c6d0,x
        sta $46f7
        lda $c6f8,x
        sta $471f
        inc contador
        rts
screen_offset byte $00
contador byte 0

advance_scroll2
        lda contador2
        cmp #39
        bpl advance_scroll3
        tax
        lda $c800,x
        sta $4427
        lda $c828,x
        sta $444f
        lda $c850,x
        sta $4477
        lda $c878,x
        sta $449f
        lda $c8a0,x
        sta $44c7
        lda $c8c8,x
        sta $44ef
        lda $c8f0,x
        sta $4517
        lda $c918,x
        sta $453f
        lda $c940,x
        sta $4567
        lda $c968,x
        sta $458f
        lda $c990,x
        sta $45b7
        lda $c9b8,x
        sta $45df
        lda $c9e0,x
        sta $4607
        lda $ca08,x
        sta $462f
        lda $ca30,x
        sta $4657
        lda $ca58,x
        sta $467f
        lda $ca80,x
        sta $46a7
        lda $caa8,x
        sta $46cf
        lda $cad0,x
        sta $46f7
        lda $caf8,x
        sta $471f
        inc contador2
        rts
contador2 byte 0

advance_scroll3
        lda contador3
        cmp #39
        bpl torna
        tax
        lda $c000,x
        sta $4427
        lda $c028,x
        sta $444f
        lda $c050,x
        sta $4477
        lda $c078,x
        sta $449f
        lda $c0a0,x
        sta $44c7
        lda $c0c8,x
        sta $44ef
        lda $c0f0,x
        sta $4517
        lda $c118,x
        sta $453f
        lda $c140,x
        sta $4567
        lda $c168,x
        sta $458f
        lda $c190,x
        sta $45b7
        lda $c1b8,x
        sta $45df
        lda $c1e0,x
        sta $4607
        lda $c208,x
        sta $462f
        lda $c230,x
        sta $4657
        lda $c258,x
        sta $467f
        lda $c280,x
        sta $46a7
        lda $c2a8,x
        sta $46cf
        lda $c2d0,x
        sta $46f7
        lda $c2f8,x
        sta $471f
        inc contador3 
        rts
contador3 byte 0

torna   lda #0
        sta contador
        sta contador2
        sta contador3
        jsr advance_scroll
        rts

right
    LDX screen_offset_r
    inx
    STX screen_offset_r
    CPX #8
    Beq continuer
    JMP endr
continuer
    LDX #$00
    STX screen_offset_r
        jsr move_rows_right
        jsr advance_scrollr
endr
    LDA screen_control_register2
    AND #$F8
    ORA screen_offset_r
    STA screen_control_register2
        rts

move_rows_right
        ldx #38
lp1     lda $4400+80,x
        sta $4401+80,x
        lda $4400+120,x
        sta $4401+120,x
        lda $4400+160,x
        sta $4401+160,x
        lda $4400+200,x
        sta $4401+200,x
        lda $4400+240,x
        sta $4401+240,x
        lda $4400+280,x
        sta $4401+280,x
        lda $4400+320,x
        sta $4401+320,x
        lda $4400+360,x
        sta $4401+360,x
        lda $4400+400,x
        sta $4401+400,x
        lda $4400+440,x
        sta $4401+440,x
        lda $4400+480,x
        sta $4401+480,x
        lda $4400+520,x
        sta $4401+520,x
        lda $4400+560,x
        sta $4401+560,x
        lda $4400+600,x
        sta $4401+600,x
        lda $4400+640,x
        sta $4401+640,x
        lda $4400+680,x
        sta $4401+680,x
        lda $4400+720,x
        sta $4401+720,x
        lda $4400+760,x
        sta $4401+760,x
        dex
        cpx #$ff
        beq fin
        jmp lp1
fin     rts

advance_scrollr
        lda contadorr
        cmp #0
        bmi advance_scrollr2
        tax
        lda $c877,x
        sta $4450
        lda $c89f,x
        sta $4478
        lda $c8c7,x
        sta $44a0
        lda $c8ef,x
        sta $44c8
        lda $c917,x
        sta $44f0
        lda $c93f,x
        sta $4518
        lda $c967,x
        sta $4540
        lda $c98f,x
        sta $4568
        lda $c9b7,x
        sta $4590
        lda $c9df,x
        sta $45b8
        lda $ca07,x
        sta $45e0
        lda $ca2f,x
        sta $4608
        lda $ca57,x
        sta $4630
        lda $ca7f,x
        sta $4658
        lda $caa7,x 
        sta $4680
        lda $cacf,x
        sta $46a8
        lda $caf7,x
        sta $46d0
        lda $cb1f,x
        sta $46f8
        dec contadorr
        rts
screen_offset_r byte $00
contadorr byte 39

advance_scrollr2
        lda contadorr2
        cmp #0
        bmi advance_scrollr3
        tax
        lda $c477,x
        sta $4450
        lda $c49f,x
        sta $4478
        lda $c4c7,x
        sta $44a0
        lda $c4ef,x
        sta $44c8
        lda $c517,x
        sta $44f0
        lda $c53f,x
        sta $4518
        lda $c567,x
        sta $4540
        lda $c58f,x
        sta $4568
        lda $c5b7,x
        sta $4590
        lda $c5df,x
        sta $45b8
        lda $c607,x
        sta $45e0
        lda $c62f,x
        sta $4608
        lda $c657,x
        sta $4630
        lda $c67f,x
        sta $4658
        lda $c6a7,x 
        sta $4680
        lda $c6cf,x
        sta $46a8
        lda $c6f7,x
        sta $46d0
        lda $c71f,x
        sta $46f8
        dec contadorr2
        rts
contadorr2 byte 39

advance_scrollr3
        lda contadorr3
        cmp #0
        bmi tornar
        tax
        lda $c077,x
        sta $4450
        lda $c09f,x
        sta $4478
        lda $c0c7,x
        sta $44a0
        lda $c0ef,x
        sta $44c8
        lda $c117,x
        sta $44f0
        lda $c13f,x
        sta $4518
        lda $c167,x
        sta $4540
        lda $c18f,x
        sta $4568
        lda $c1b7,x
        sta $4590
        lda $c1df,x
        sta $45b8
        lda $c207,x
        sta $45e0
        lda $c22f,x
        sta $4608
        lda $c257,x
        sta $4630
        lda $c27f,x
        sta $4658
        lda $c2a7,x 
        sta $4680
        lda $c2cf,x
        sta $46a8
        lda $c2f7,x
        sta $46d0
        lda $c31f,x
        sta $46f8
        dec contadorr3
        rts
contadorr3 byte 39

tornar  lda #39
        sta contadorr
        sta contadorr2
        sta contadorr3
        jsr advance_scrollr
        rts

*=$4800
incbin    "sprites.bin"
* = $7000  ;28672 ;CARACTERES EN BANCO 1 (12288 + 16384)     ;
incbin"chars.bin"

*=$c000 ;Pantallas
incbin"p0.bin"
*=$c400
incbin"p1.bin"
*=$c800
incbin"p2.bin"

2
Mercadillo / Vendo A500 con ACA500plus y Indivision ECS V2
« en: Marzo 01, 2019, 16:18:47 »
Buenas, vendo el resto de material que me quedaba de Amiga, por si hay alguien interesado:

1 Amiga 500 con ACA500plus (8 mb fast 1 mb chip, disco duro ,etc..) y una Indivisión ECS V2 para conectarlo a cualquier monitor tv actual por 250€, regalo otro Amiga 500, todo funcionando.

1 caja repleta de chips Amiga por 25€, con:
3 Motorola 68000
1 rom 3.1 para Amigas ECS OCS
1 rom 2.04 para Amigas ECS OCS
2 Paula 8364R7
2 CIA 8520A-1
2 Denise 8362R8
2 Gary 5719
1 Fat Agnus 8372A
8 chips memoria

Saludos.

3
Mercadillo / Vendo 2 Commodore 64C y Amiga 500+aca500
« en: Diciembre 03, 2018, 12:18:34 »
Buenas foreros, resulta que la habitación donde tenía "mis juguetes", se convierte en habitación propia, "de dormir", así que a mis cacharros les toca otra hibernación en el armario de por lo menos unos diez años calculo y igual es demasiado, prefiero que sigan en marcha en algún sitio.
Total que vendo el siguiente material(todo funcionando):

1 Commodore 64C con cartucho Ultimate II+ por 200€
1 Commodore 64C con SD2iec por 150 €
1 Amiga 500 con ACA500 (disco duro, 2 mb fast), scandoubler flikerfixer para conectarlo a cualquier VGA, y tarjeta HxC para la carga fácil de imagenes de diskette por 200€
1 monitor tv Nelion (ideal para conectarle un Amiga por las 2 entradas de video, euroconector y vga) + altavoces por 50€, este mejor en mano porque enviarlo costaría un huevo.
Los tengo en el wallapop por si os es más cómodo.
Un saludo.

4
Desarrollo / Colisiones sprite<>sprite por software
« en: Abril 30, 2018, 14:02:23 »
Buenas gente, había leído sobre este asunto en los foros y hasta ahora no le había dado importancia porque no me he encontrado con este problema, pero en lo que estoy trabando ahora las colisiones por hard no funcionaban de manera precisa, la rutina que funcionaba hasta ahora, aquí se comía la mitad de las colisiones de una manera inaceptable. Dando un vistazo por Codebase64 empiezo a encontrar muchos apuntes a las colisiones por soft para solventarlo, comentando para mi sorpresa que cuando hay que controlar muchas cosas a la vez en pantalla, el registro de colisiones ya no es el adecuado para controlarlo.
Aquí aparece la idea de colisiones por soft, se trata de determinar las cuatro esquinas que conforman el sprite y comprobar si las coordenadas del interior de este rectángulo coincide con las coordenadas de otro sprite determinado del mismo modo.
Como me ha costado unos cuantos días pelearme con esto, aquí os paso mi primera aproximación a la solución del problema, creo que cualquiera que desarrolle se encontrará con esto en algún momento.

Saludos!

Código: [Seleccionar]
; 10 SYS (2064)

v=$d000 ;inicio registros sprite

*=$0801

        BYTE    $0E, $08, $0A, $00, $9E, $20, $28,  $32, $30, $36, $34, $29, $00, $00, $00

*=$0810

        jsr sprite
l       jsr raster_wait
        jsr JOY
        jmp l

sprite  lda #3  ;pon 2 sprites en pantalla
        sta v+21
        lda #0
        sta v+39
        lda #3
        sta v+40
        lda #192
        sta 2040
        lda #193
        sta 2041
        lda #100
        sta v
        lda #190
        sta v+2
        lda #147
        sta v+1
        sta v+3
        rts

raster_wait             ;espera línea raster
l1      LDA #$EA
        CMP $D012
        BNE l1
        BIT $d011
        BMI l1
        rts

JOY     LDA $DC00   ;LEEMOS JOY
        AND #31     ;LA CUATRO DIRECCIONES ARRIBA ABAJO IZQ DER   
        CMP #30     
        BEQ ARR
        CMP #29
        BEQ ABJ
        CMP #27
        BEQ IZQ
        CMP #23
        BEQ DER
        rts

arr     dec $d001
        jsr coordenadas
        jsr comprueba_col           
        rts
abj     inc $d001   
        jsr coordenadas
        jsr comprueba_col           
        rts
izq     dec $d000
        jsr coordenadas
        jsr comprueba_col           
        rts
der     inc $d000
        jsr coordenadas
        jsr comprueba_col           
        rts

coordenadas             ;actualiza coordenadas de los 2 sprites
        lda v           ;y crea 4 variables con las 4 esquinas
        sta s1x1        ;de los sprites
        clc             ;s1x1 sprite 1 x1
        adc #23         ;s1x2 sprite 1 x2
        sta s1x2        ;etc....
        lda v+1
        sta s1y1
        clc
        adc #20
        sta s1y2

        lda v+2
        sta s2x1
        clc
        adc #23
        sta s2x2
        lda v+3
        sta s2y1
        clc
        adc #20
        sta s2y2
        rts             
s1x1    byte 0         
s1x2    byte 0
s1y1    byte 0
s1y2    byte 0
s2x1    byte 0
s2x2    byte 0
s2y1    byte 0
s2y2    byte 0

comprueba_col           ;comprueba colisión en base a las coordenadas
        lda s1x2        ;si se cumplen incrementa color borde
        cmp s2x1
        bcs comprueba_col1
        rts
comprueba_col1
        lda s1x1
        cmp s2x2
        bcc comprueba_col2
        rts
comprueba_col2
        lda s1y2
        cmp s2y1
        bcs comprueba_col3
        rts
comprueba_col3
        lda s1y1
        cmp s2y2
        bcc hit
        rts
hit     inc $d020
        rts

*=12288
incbin"prueba.bin"

5
Commodore Amiga / Aprendiendo como van los gráficos en el Amiga
« en: Noviembre 24, 2016, 16:50:14 »
Después de una temporada programando en ensamblador el C64, ahora quiero quitarme la espina de hacerlo también con el Amiga. El cambio del 6510 al 68000 todos son ventajas, nada en contra, a picar código y coger soltura. El cambio a comprender como va un Amiga internamente ya es más peliagudo, aquí hay que leer y analizar muchos listados para ir comprendiendo algo, es muy diferente al C64.
Por lo pronto es esencial entender lo que es una copperlist y todo lo que se puede llegar a hacer ahí, y una mínima rutina que controle que el Amiga no se quede colgado.
De momento ya se generar y combinar una barra copper, una imagen y un sprite deambulando por ahí, y comprender porque, poca cosa pero por algo se empieza.
Se que el aprendizaje sera largo pero creo que va a valer la pena. Os dejo un ADF para que veaís el progreso actual.

6
Nuevos juegos / RobotLand
« en: Septiembre 29, 2016, 12:30:27 »
Buenas foreros, después de una temporada de reposo, vuelvo a la carga con un nuevo proyecto, RobotLand.
Aquí, además de continuar con mi aprendizaje del ensamblador del 6510 quiero conseguir un producto acabado, sin flecos, por lo pronto, como muestro en esta pequeña presentación los enemigos van de punta a punta de la pantalla, superado el problema de Excalibur que los enemigos no pasaban de la coordenada x 255 y pasan por delante y detrás de los caracteres.
Iré publicando en este hilo los avances en el desarrollo y espero vuestro feedback y sugerencias.
Empecé ayer, así que de momento disfrutar de la música de Kraftwerk por SLD

Saludos.

7
Commodore Amiga / Amibian
« en: Agosto 24, 2016, 12:49:34 »
Buenas, acabo de probar esta imagen en una Raspi3 y estoy gratamente sorprendido. Le he instalado workbench 3.1 y configurado para que arranque directamente y la sensación es totalmente de estar delante de un amiga clásico, y ademas de los potentes, todo fluido. He instalado varias aplicaciones, juegos WHDload y todo Ok. Casi se podría decir que por fin un Amiga nuevo y por 40€! Y sin ocupar espacio!
De hecho, la sensación es tan buena que ya que me he quitado la espina de conseguir programar en ensamblador del C64, creo que voy a probar de intentar  quitarme también la espina de programar el Amiga en ensamblador del 68000.

http://gunkrist79.wixsite.com/amibian por si queréis darle un vistazo, hay algunos vídeos por youtube también.

8
Nuevos juegos / Kill the Alien
« en: Julio 06, 2016, 09:49:16 »
Muy buenas, como llevaba un tiempo atascado con Excalibur ( resolver bugs es más aburrido que crear de cero ), y en espera de mejor inspiración, he decidido dejar las espadas a un lado y pasarme al laser.
Estas 2 semanas he estado creando este "dispara a todo lo que se mueve" al que he llamado Kill the Alien.
Oleadas de aliens se abalanzan sobre nuestra nave espacial Commodore y les hemos de dar matarile adecuadamente.
Animo, carga tus lasers y limpia la galaxia!

9
General / Excalibur
« en: Abril 29, 2016, 13:03:06 »
Próximamente, en sus pantallas ....

EXCALIBUR!!!

El proyecto para trabajar este 2016.

10
Desarrollo / El p*** salto
« en: Marzo 02, 2016, 11:17:09 »
Parecerá una tontería, pero me ha costado semanas dar con una rutina en la que controlar que el sprite saltara y volviera a su posición Y original, y no se fuera volando por la pantalla acumulando saltos. Al final me ha salido esto, código de el salto a la derecha:

 
Código: [Seleccionar]
V       = $D000
SALTODER LDA SWITCH ;PARA QUE NO VUELVA A SALTAR MIENTRAS ESTA
        CMP #1      ;EN UN SALTO Y SALGA VOLANDO
        BEQ FUERA
        LDA #195    ;QUE MIRE A LA DER
        STA 2040
        LDA V+1
        STA ACTUALV1 ;GUARDO POS V+1
        LDX #25      ;BUCLE PARA EL SALTO
        LDA #1
        STA SWITCH
G1      lda #12 ; RASTER PARA MOVIMIENTO FLUIDO
        cmp $d012
        bne G1
        DEC V+1 ;SALTA
        INC V
        JSR TESTX ;TESTEA SI + DE 255
        DEX
        CPX #0
        BNE G1 ;ACABA BUCLE SALTO X=0
GG1     LDA V+1 ;VUEVE A V+1 INICIAL, QUE NO VUELE
        CMP ACTUALV1
        BNE GG1
        LDA #0 ;AHORA YA PUEDE VOLVER A SALTAR
        STA SWITCH
FUERA   RTS

Mi solución a sido meter ese conector SWITCH, para que no volviera a meterse en el salto mientras ya estaba en uno. Hala, ya tengo el salto para el próximo proyecto.

Arrancar con SYS2080 para verlo.

11
Nuevos juegos / Argos
« en: Noviembre 19, 2015, 13:17:19 »
Argos, aventuras y desventuras de mi segundo proyecto en ensamblador.

Despues de Race, sorprendido a mi mismo de conseguir un producto acabado por primera vez, me lance a algo un poco más complejo, nació así Argos, donde seguir practicando y descubriendo cosas nuevas en ensamblador.

Como positivo decir que ahora he aprendido a cargar datos desde el mismo programa y así reutilizar los mismos espacios de memoria, animación del player, combinar sprites con pantallas Hires, movimientos de los enemigos por interrupciones, contadores de vida del player y enemigos, reubicaciones, y lograr un "loop", logica del juego.

Por contra que cuando te lanzas a temas más complicados descubres más tus limitaciones, nulo diseño inicial y programas líneas a lo loco, cuando quieres organizarlo un poco ya es tarde, tendrías que rediseñarlo todo y ya tiras "palante" con lo que hay, pero bueno, todo es aprendizaje y sirve de experiencia para el siguiente proyecto.

En Argos, cada pantalla es hires, con lo que conlleva tener que cargar 40 bloques de disco en cada pantalla. Conclusión, para la siguiente investigar que el fondo sean chars multicolor editados y así con 1k sera suficiente.
Tambien me he encontrado con un bug importante, el mismo código que a la primera pasada funcionaba perfecto, no lo hacía así al reiniciar el juego, en que desaparecían sprites, se intercambiavan ¿?, y no le he encontrado más solución que repetir nivel en vez de volver a empezar desde el principio.
En el nivel de las arpias tambien me sucede que a veces aparece el marcador en lugar de la forma de la arpia cuando acabas el nivel, algo que no debería suceder pues el código no lo dice en ningún momento que haga eso, y por más que lo he hiperrevisado algo se me escapa aquí.

Pero bueno, en líneas generales, estoy contento con el resultado, en especial con el echo de proponerte algo y llevarlo a cabo. 

Con esto os quiero animar a que no le tengais miedo al ensamblador, en realidad ni siquiera hace falta saber mucho, con lo mínimo, LDA STA y un par de modos de direccionamiento esta echo casi todo lo que veis, lo que hay que saber es de Commodore y de eso ya tenemos unos lustros de experiencia, con la guia de referencia va que arde.

Bueno, acabo el tostón y aquí os dejo Argos, juzgarlo como lo que es, un ejercio de programación para aprender, y de paso enriquecer los premios Commodoremania2015 con otro candidato (Hey! Josepzin, trabajo).

Saludos foreros!

12
Nuevos juegos / Race, el juego de Laddh
« en: Septiembre 14, 2015, 16:32:16 »
Un nuevo candidato a los premios, mi opera prima en ensamblador:

Race!

Última versión


13
Commodore Amiga / Juego revivído
« en: Marzo 02, 2015, 10:08:43 »
Un nuevo Laberinto (Hi Rulas), pero esta vez para Amiga. Dormía en la memoria de mi A500 este juego inacabado desde los años 90, y he decidido actualizarlo, darle un lavado de cara y dejarlo en un punto jugable. En el hago un homenaje a tres de mis grandes pasiones en la época Amiga, programar con Amos, la revista Fanzine (he adaptado su interfaz para los controles del juego) y la música de Estrayk. (de siempre mi músico scener favorito)

Descargar: http://aminet.net/game/misc/Laberinto_Ladd.lha

Por si quereis darle un vistazo, requiere disco duro.
Probado en A500 rom3.1 1 mb chip 2 mb fast con ACA500

14
Problemas Hardware y Software / F.A. pita
« en: Octubre 27, 2014, 08:44:14 »
Tras unos años huerfano, por fin me he vuelto a hacer con un C64, el C64c exactamente, todo parece Ok, menos la fuente que a los pocos minutos en cuanto se calienta, comienza a pitar, Piiiiiiiiiiiiiiiiiiiiii, la cafetera!
Sabeís si esto es reparable? la fuente es la típica del modelo panera.

15
Off-topic / 23 (Nada es lo que parece), una película de hackers alemanes
« en: Septiembre 20, 2014, 00:05:51 »
Amigos, acabo de ver esta peli que indico en el asunto y he flipado en colores, por primera vez en una peli oigo  que nombran más de 3 veces la palabra COMMODORE!, se ve una party de hackers y TODO son Commodores, va de unos hackers alemanes en los 80 y consiguen hackear de todo con un Commodre64SX! y pone que es basado en echos reales.
Estoy en pleno extasis... :o 8) :)

Páginas: [1] 2