Mensajes recientes

Páginas: [1] 2 3 ... 10
1
Ensamblador / Re:Rutinas de ensamblador con Laddh
« Último mensaje por Laddh en Hoy a las 13:25:18 »
Siguiente entrega, añadimos un par de rutinas al programa anterior, la de carga de una pantalla en modo alta resolución multicolor, y una rutina mínima para ejecutar música por interrupciones.
Estas pantallas hires, quedan mas guapas y espectaculares pero a costa de una gran ocupación de memoria, 10k en este caso de un grafico en formato Koala, que añadimos al programa con el incbin (include binario) en la posición de memoria $2000 (8192), tenéis la rutina cargahr para ver como lo hace.
Demasiado, yo solo le veo utilidad como gráfico de presentación del programa y luego ocupar esas mismas posiciones de memoria al cargar el resto del programa.
Lo de las interrupciones, yo no he encontrado un solo sitio donde te lo expliquen concienzudamente, pero a grandes rasgos es aprovechar la misma rutina de interrupción del sistema que 50 veces por segundo chequea el teclado, pantalla, todo el sistema, añadiendo tú rutina al vector $0314-$0315, como podéis ver en el listado, esa rutina ejecuta un sid que tengamos en la posición $1000 de memoria, añadida con su correspondiente incbin.
Así ya veis, que simplemente añadiendo rutinas que tengáis por separado, acabara  convirtiéndose en un programa más presentable.

Código: [Seleccionar]
; 10 SYS (2064) línea para que autoarranque el programa

*=$0801

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

*=$0810 ;inicio del programa

v = $d000       ;variable que apunta al chip VIC, el que gestiona todo lo gráfico


        jsr cargahr     ;carga pantalla gráfica multicolor
        jsr musica      ;llama a rutina música por interrupciones
        jsr sprites     ;llamamos a la rutina para presentar el sprite en pantalla
loop    jsr raster_wait ;sin esto no veríamos nada, el código máquina es raaaaaapido               
        jsr PlayerControl ;la rutina para controlar el joystick
        jmp loop        ;vuelve al bucle principal


cargahr LDA #$01        ; Carga A con #$00, que es el código del color negro.
        STA $D020       ; Guarda el valor #$00 en la dirección $D020, que corresponde al borde de la pantalla.
        STA $D021       ; Guarda el valor #$00 en la dirección $D021, que corresponde al fondo de la pantalla.
        TAX             ; Transfiere el contenido de A a X. De esta manera carga X con #$00, que es el valor inicial de un bucle, ahorrando espacio de memoria.
COPIA   LDA $3F40,X     ; Carga A con el valor de la dirección $3F40 y siguientes.
        STA $0400,X     ; Guarda el valor de A en la posición $0400 y siguientes del mapa de memoria de la pantalla.
        LDA $4040,X     ; Carga A con el valor de la dirección $4040 y siguientes.
        STA $0500,X     ; Guarda el valor de A en la posición $0500 y siguientes.
        LDA $4140,X     ; Carga A con el valor de la dirección $4140 y siguientes.
        STA $0600,X     ; Guarda el valor de A en la posición $0600 y siguientes.
        LDA $4240,X     ; Carga A con el valor de la dirección $4240 y siguientes.
        STA $0700,X     ; Guarda el valor de A en la posición $0700 y siguientes.
        LDA $4328,X     ; Carga A con el valor de la dirección $4328 y siguientes.
        STA $D800,X     ; Guarda el valor de A en la posición $D800 y siguientes del mapa de colores de pantalla.
        LDA $4428,X     ; Carga A con el valor de la dirección $4428 y siguientes.
        STA $D900,X     ; Guarda el valor de A en la posición $D800 y siguientes.
        LDA $4528,X     ; Carga A con el valor de la dirección $4528 y siguientes.
        STA $DA00,X     ; Guarda el valor de A en la posición $D800 y siguientes.
        LDA $4628,X     ; Carga A con el valor de la dirección $4628 y siguientes.
        STA $DB00,X     ; Guarda el valor de A en la posición $D800 y siguientes.
        DEX             ; Decrementa el valor de X.
        BNE COPIA       ; Salta a COPIA hasta que el valor de X=#$00.
        LDA #$3B        ; Carga A con #$3B
        LDX #$18        ; Carga X con #$18
        LDY #$18        ; Carga Y con #$18, que determina que el código del bitmap realizado con el KOALA necesariamente debe ensamblarse a partir de la dirección de memoria $2000.
        STA $D011       ; Guarda el valor de A en la dirección $D011, que selecciona el modo bitmap.
        STX $D016       ; Guarda el valor de X en la dirección $D016, que selecciona el modo multicolor.
        STY $D018     
        rts

MUSICA    sei
          lda #<irq
          ldx #>irq
          sta $314
          stx $315
          lda #$00
          JSR $1000     ;INITIALIZE MUSIC
          cli
          RTS

irq       lda #$01
          STA $D019     ; ACK ANY RASTER IRQS
          JSR $1003     ;PLAY THE MUSIC
          jmp $ea31


PlayerControl
        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 #22
        beq derar
        cmp #21
        beq derab
        CMP #25
        BEQ IZQab
        CMP #26
        BEQ IZQar
        cmp #15
        beq fuego
        rts

arr     dec v+1 ;coordenada vertical del sprite 0
        rts
abj     inc v+1
        rts
izq     dec v   ;coordenada horizontal del sprite 0
        rts
der     inc v
        rts
derar   inc v
        dec v+1
        rts
derab   inc v
        inc v+1
        rts
izqab   dec v
        inc v+1
        rts
izqar   dec v
        dec v+1
        rts
fuego   inc $d020       ;cambia color del borde pantalla
        rts

raster_wait             ;espera línea raster 255, el raster pasa 50 veces por segundo
l       LDA #$ff        ;en pantalla
        CMP $D012
        BNE l
        BIT $d011
        BMI l
        rts

sprites lda #1
        sta v+21        ;activamos sprite 0
        sta v+28        ;activamos modo multicolor del sprite 0
        lda #37         ;puntero para indicar donde estan los datos del sprite, 37*64=2368
        sta 2040
        lda #1          ;color blanco a sprite 0
        sta v+39
        lda #14         ;color multicolor 1, para todos los sprites
        sta v+37
        lda #2          ;color multicolor 2, para todos los sprites
        sta v+38
        lda #100        ;coordenadas x,y del sprite 0
        sta v
        sta v+1
        rts

*=$1000
incbin"commodore_64.sid",126

*=$2000
incbin"hiresmcm.koa",2

*=2368  ; la forma del sprite
 byte 9,86,0
 byte 37,86,0
 byte 149,86,0
 byte 85,86,0
 byte 85,170,170
 byte 86,37,86
 byte 86,37,86
 byte 86,37,86
 byte 86,37,90
 byte 86,42,168
 byte 86,42,168
 byte 86,47,250
 byte 86,47,254
 byte 86,47,254
 byte 86,47,254
 byte 86,42,170
 byte 85,170,0
 byte 85,86,0
 byte 149,86,0
 byte 37,86,0
 byte 9,86,0
2
Commodore VIC-20 / Re:Competición Tutankham
« Último mensaje por alex en Hoy a las 11:04:58 »
Buena puntuación de Bieno.Actualizando datos.
Mañana finaliza la competición.

******CLASIFICACION TUTANKHAM*******

1 Josepzin.................48.720   puntos
2 Javierglez...............43.680   puntos
3 Alex......................38.260    puntos
4 Bieno....................32.120    puntos
3
General / Re:Videos Commodore
« Último mensaje por Bieno en Abril 25, 2024, 14:21:44 »
https://youtu.be/Meie-jFXXBw?si=yiIGNXwZukWM_JD1

Y este es el video que comenta donde habla de las 4 versiones del Zaxxon que hay, 2 del Zaxxon y 2 del Super Zaxxon
4
General / Re:Videos Commodore
« Último mensaje por josepzin en Abril 25, 2024, 13:18:22 »
Space Harriers me impresionó mucho cuando lo vi en las recreativas y luego en C64 me pareció un buen juego, no sé cual versión tuve. ¡Y la música!
5
General / Re:Videos Commodore
« Último mensaje por Aliens en Abril 25, 2024, 08:53:35 »
BastichB 64k haciendo comparativas entre las versiones de los juegos de los que sacaron varias versiones, normalmente americana e inglesa

Interesante. Algunos juegos no se parecen mucho entre sí. En el caso del Ikari Warriors ahora no recordaba esa segunda versión, que luce peor, tendré que probarla

6
General / Re:Videos Commodore
« Último mensaje por josepzin en Abril 25, 2024, 03:32:33 »
Si hasta parece que tiene un soporte especial para trabajar sobre los cartuchos!
7
General / Re:Cosas interesantes
« Último mensaje por josepzin en Abril 25, 2024, 01:39:01 »
"Another visitor. Stay a while... stay forever! Destroy him, my robots"



Visto en Mastodon: https://mastodon.world/@vingtroiseize/112314922101181824
8
General / Re:Videos Commodore
« Último mensaje por Bieno en Abril 24, 2024, 20:50:59 »
https://youtu.be/oDjvHezx7fY?si=VfvddVU-zsa3Sv3w

BastichB 64k haciendo comparativas entre las versiones de los juegos de los que sacaron varias versiones, normalmente americana e inglesa

https://youtu.be/YV9WN-dTNgk?si=s_DteFR70SGD5ftu

Esto otro un poco mas técnico, del 8-Bit Show And Tell, hablando de como volcar un cartucho de c64(compatible con el MAX).
9
Nuevos juegos / Re:Castillo Belmar
« Último mensaje por Bieno en Abril 23, 2024, 14:46:28 »
Este es el mismo de siempre pero ahora en formato CRT, compatible con el c64 y el MAX y biligüe. Con el BN ahora cualquiera puede montarse un cartucho físico funcional para ambas máquinas.
10
Nuevos juegos / Re:Castillo Belmar
« Último mensaje por josepzin en Abril 23, 2024, 13:49:48 »
¿Llevas la cuenta de cuantas versiones tiene este juego ya?
Páginas: [1] 2 3 ... 10