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.


Mensajes - Laddh

Páginas: [1] 2 3 ... 17
1
Desarrollo / Re:TRSE, Turbo Rascal Sintax Error
« en: Marzo 15, 2024, 19:27:04 »
Hola Josepzin y compañía, yo es que estos compiladores ( C, Pascal..) para commodore64 no los veo, en un pc con gigas de memoria libre pues no importa que el ejecutable que te resulte al compilar sea mas o menos grande, pero en nuestra panera si quieres hacer un proyecto ya grande cada byte es vital, enseguida te quedas sin espacio y os pongo un ejemplo para veáis claro lo que quiero explicar. Buscando ejemplos para multiplexar sprites llegué a un listado en C con el cc65 para mostrar 64 sprites en pantalla, el listado era cortito y con un bucle creaba 8 sprites por linea raster, bien, pero cuando me bajo el ejecutable creado y me lo miro, ocupaba casi toda la memoria, había creado 64 veces la misma rutina incrementando en uno, cuando con un simple bucle en ensamblador en unos pocos bytes lo tienes hecho.
No los veo optimizados para trabajar en un entorno tan restringido como es el de nuestros micros.
Ya puestos y si de verdad tienes empeño, metete al ensamblador que solo son unos poco nemónicos a memorizar y como dice mirazulado lo que hay que saber es de la máquina, en vez de aprenderte un montón de comandos y librerías que aún te llevara mas tiempo, y haces un código mucho mas eficiente.
A mí, el que me parece difícil ahora es el Basic  ;D

2
General / Re:C64 Cracks
« en: Enero 25, 2024, 16:53:25 »
Estan bien estos juegos de estrategia y pensar un poco, no todo es pegar tiritos. Buen trabajo con el crack, Bieno.

3
Ensamblador / Re:Scroll de varias pantallas a izquierda y derecha
« en: Noviembre 19, 2023, 20:27:24 »
Conseguido!!!  ;D  como bien indicaba Dashiad se trata de tener un mapa con un espacio contiguo en memoria, en el caso de este ejemplo de 100 caracteres de ancho por 50 de alto, lo que ahorra y mucho los cálculos comparado con el que yo hacía con tres pantallas por separado. A grandes rasgos se trata de sobre el mapa, disponer una "ventana" de 40x25, que es la pantalla real, que mueves con un offset de sus coordenadas x,y de arriba a la izquierda. Ahora ya puedes girar el joystick izquierda derecha arriba abajo que la pantalla mantiene perfectamente su estructura y no se desmorona.
Con esto ya puedo tirar adelante el proyecto que tengo en la cabeza, ha costado unos meses pero como mola programar el C64!

4
Ensamblador / Re:Scroll de varias pantallas a izquierda y derecha
« en: Abril 26, 2023, 08:47:16 »
Citar
Lo que no entiendo muy bien es lo que dices de "tengo 3 pantallas", cada una con su propio comienzo.
Cuando he implementado scroll, yo he montado un "mapa". Un mapa con scroll puede tener perfectamente 3 pantallas y media de ancho, y tiene 1 único comienzo en memoria.
Bueno, esto si me da una idea de por donde tirar, tal como lo tengo implementado controlo con un contador hasta 40 caracteres por pantalla y ahí paso a la pantalla siguiente, seria controlar hasta 120 con el contador entonces y poner las pantallas contiguas en memoria, a probar...
Citar
Si, además, el mapa está compuesto de tiles...
Nunca le he visto sentido a utilizar tiles en el C64 ya que al hacer el scroll por hardware mueves la pantalla entera de caracteres y no le veo utilidad, o lo más seguro que no acabo de comprender la idea
Citar
Lo que me resulta más complicado son las distintas formas de activar el scroll. O sea, cuándo y cómo "mueves la camara". En el video de Robocop, hay una especie de "caja" donde se mueve el personaje, de la cual no sale (excepto en los extremos del mapa). El personaje "empuja" la cámara cuando llega al borde de esa caja, y así activa el scroll, que se hace a velocidad constante.
Pues sí, entiendo que será con un control exhaustivo de coordenadas x,y del sprite traducidas a coordenadas de caracteres
Citar
Ya hace mucho que lo hice, asi que no recuerdo los detalles, pero cuando haces scroll, entras en el modo en el que el c64 deja visibles sólo 38 columnas, en vez de 40, por lo que las columnas "incompletas" de los lados, no las ves
Sí, supongo que es modus operandis de scroll por hardware en el C64, pasar a modo 38 columnas, activar el scroll por hardware, scroll por software para mover una columna en toda la pantalla, volver a empezar, así lo he visto siempre en todos los ejemplos, si miráis el listado así esta 

5
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"

6
Preservación / Re:Buscando las ediciones de DROSOFT en Castellano
« en: Noviembre 07, 2020, 17:53:52 »
"Por cierto, por si alguien quiere saberlo, DRO..."

Los viejos del lugar lo sabemos, jeje

7
Nuevos juegos / Re:El Castillo del Dragón
« en: Septiembre 23, 2020, 16:17:47 »
"¿Y qué ensamblador/editor estas usando?"
Con el CBMPrgStudio

"¿poqrué no habeis puesto el mapa del juego original?"
como explica el artículo, es una recreación, homenaje del programa de la revista, pero luego tiene su vida propia.

"Por lo que veo, a la gente le gusta el juego pero la "queja" es que es muy corto."
Y eso que he hecho virguerías, las primeras 10 salas se cargan en el espacio utilizado por el bitmap de presentación y la pantalla de creditos, la siguientes 10 se cargan en el mismo espacio, y solo con código he llenado toda la memoria del C64..., supongo que lo siguiente a aprender es trabajar con pantallas comprimidas. 

8
Nuevos juegos / Re:El Castillo del Dragón
« en: Septiembre 23, 2020, 14:17:33 »
"HOLLE, que has usado para hacer el juego??"

Nada, solo 8207 líneas en ensamblador...

9
Nuevos juegos / Re:El Castillo del Dragón
« en: Septiembre 23, 2020, 13:57:53 »
"Cosas a mejorar:"
Pocas..., solo quedaron escasos bytes libres de ram  ;D

" Hay una pantalla que parece tener dos caminos y que se desbloquea uno con el mapa, pero el otro camino queda como un misterio sin resolver?"
No hay misterio, solo es la pantalla donde se utiliza el item del mapa

Me han reportado algún error con vice's viejos. En la versión crakeada hablan de un "buffer underrun" en la versión inglesa.

10
General / Re:Guía de hardware nuevo para C64
« en: Febrero 17, 2020, 08:53:03 »
Es el toque femenino en mi opinión; bonito, aparatoso y poco práctico. (igual me gano una denuncia por violencia de género tal y como están las cosas)

En Barcelona ya estarias detenidu por la colau!  ;D

11
En un vistazo rápido por internet los 6502AD son 4585 S, no 4285.

12
Mercadillo / Re:Vendo A500 con ACA500plus y Indivision ECS V2
« en: Junio 18, 2019, 11:40:51 »
Actualizo precio caja de chips a 25€.

Un saludo.

13
General / Re:Videos Commodore
« en: Abril 09, 2019, 09:41:18 »


Por cierto, he descubierto un nuevo karma visionando la demo a oscuras y contemplando el reflejo de la pantalla en la panera...

https://www.youtube.com/watch?v=YY-aNjC_oFo


Sí, Censor son de los grandes, de los que te dejan cataléptico delante de la pantalla, descubriendo mundos...

14
Mercadillo / Re:Vendo A500 con ACA500plus y Indivision ECS V2
« en: Marzo 26, 2019, 11:04:19 »
Vendido el amiga, queda la caja de chips, rebajada a 50€.

Saludos!

15
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.

Páginas: [1] 2 3 ... 17