Demo en Assembler

Publicado abril 25, 2009 por ascrnet
Categorías: Soft

demo1
Esta vez presento un demo hecho por mi en Assembler de ATARI  “MAC/65”,  La cual muestra como poner en pantalla un dibujo con música y scroll de texto. Como siempre comparto la fuente y el ejecutable por si alguien se anima va verlo.

Saludos.

Anuncios

The Domain of the Undead

Publicado abril 6, 2009 por ascrnet
Categorías: Soft

domainun

Esta vez presento una versión de un juego crakeado por pelusa soft, es el famoso The Domain of the Undead alias cementerio, el cual fue mas conocido por su alias que por su nombre real. Las modificación que realizo pelusa soft fue aumentar las vidas de 5 a 10 y cambiar la frecuencia de PAL a NTSC.

Espero que disfruten este juego……     a se me olvidaba dar las gracias al colega Fekero por facilitar el diskette 5 ¼ con este game.

Saludos

Graficos Player/Missile, Parte 3

Publicado febrero 9, 2009 por ascrnet
Categorías: Articulo

Esta vez explicaremos el efecto “overlapped”, el cual se trata de hacer 3 colores usando dos player. la idea es poner dos players juntos y se formara un tercer color con el OR de los colores de player0 y player1.

Para ello vamos a dibujar a pedro del mítico montezuma.
montez

Los colores son :

    1. p0  = 28 (1c) “Amarillo”
    2. p1 = 50 (32) “Rojo”
    3. p0   OR  p1  = 62 (3f) “Rosado”
      GRACTL = 53277
      PMBASE = $7800
      VPOSP0 = PMBASE+1024 ; Posicion de memoria P0
      VPOSP1 = PMBASE+1280 ; posicion de Memoria P1
      GPRIOR = 623
      
           *= $0600
      
      COMIENZO
           LDA #62
           STA SDMCTL
           LDA #$C0
           STA $D40E
           LDA #32
           STA GPRIOR
           LDA #120
           STA HPOSP0 ; Posicion P0
           STA HPOSP1 ; Posicion P1
           LDA #$1c
           STA PCOLR0 ; Color Blanco P0
           LDA #$34
           STA PCOLR1 ; Color Blanco P1
           LDA #2
           STA SIZEP0 ; Tamaño P0
           STA SIZEP1 ; Tamaño P1
           LDA # >PMBASE
           STA 54279
           LDX #$00
           LDY #$04 ; para limpia los 4 PLAYER
           JSR LIMPIAPM
           LDX #$00
           JSR LEEDATOS
           LDA #3
           STA GRACTL ; Muestra PM
      
      LOOP JMP LOOP ; Loop infinito...
      
      ;Rutina que limpia zona PM
      LIMPIAPM
          LDA #$00
      T2  STA PMBASE,X
          INX
          BNE LIMPIAPM
          INC T2+2
          DEY
          BNE LIMPIAPM
          RTS
      
      ; Rutina que lee los Datos de la calavera
      LEEDATOS
          LDA PEDRO1,X
          STA VPOSP0+80,X
          LDA PEDRO2,X
          STA VPOSP1+80,X
          INX
          CPX #20
          BNE LEEDATOS
          RTS 
      
      ; Datos de Pedro
      PEDRO1
          .BYTE 56,56,0,127,128,52,60,56,0,8
          .BYTE 130,235,227,104,0,0,204,204
          .BYTE 238,110
      PEDRO2
         .BYTE 0,0,56,0,127,244,124,56,254,246
         .BYTE 254,247,255,244,252,204,204,204
         .BYTE 238,110
      
          *=$02E0
          .WORD COMIENZO

      Explicación

        1. Se definen dos players (VPOSP0 y VPOSP1)
        2. Se pokea la posición de memoria 623 a 32, eso es para activar el efecto overlapped cuando se junten player0 y player1
        3. Se aplican los píxeles a los dos players (LeeDatos)
        4. y por ultimo los datos de los píxeles para player0 y player1 (pedro1 y pedro2)

          pm03

          Graficos Player/Missile, Parte 2

          Publicado enero 22, 2009 por ascrnet
          Categorías: Soft

          Bueno esta vez vamos ha mover nuestra calavera en forma horizontal, para ello usaremos una variable llamada POSX la cual se incrementa y decrementa según el valor de la condición de la misma. Veremos como queda aplicada al ejemplo anterior.

          
          HPOSP0 = 53248 ; Posicion Horizontal Player 0 (P0)
          PCOLR0 = 704   ; Color Player 0
          SIZEP0 = 53256 ; Tamaño del Player 0
          SDMCTL = 559   ; Sombra de DMACTL
          GRACTL = 53277 ; Registro de control CTIA
          PMBASE = 54279 ; Puntero Player/Missile RAM
          NMIEN  = 54286 ; NMI enable
          PMB  = $7800      ; Posicion de memoria base P
          VPOSP0 = PMB+1024 ; Posicion de memoria P0
          GPRIOR = 623      ; Priority control register
          
               *= $0600
          
          COMIENZO
               LDA #62
               STA SDMCTL ; Asigna P0 en normal
               LDA #$C0
               STA NMIEN
               LDA #1
               STA GPRIOR
               LDA #120
               STA HPOSP0 ; Posicion P0
               LDA #14
               STA PCOLR0 ; Color Blanco P0
               LDA #2
               STA SIZEP0 ; Tamaño P0
               LDA # >PMB
               STA PMBASE ; Puntero PM a RAM
               STA T2+2
               LDX #$00
               LDY #$04 ; para limpia los 4 PLAYER
               JSR LIMPIAPM ; Limpia PM
               LDX #$00
               JSR LEEDATOS ; Lee Datos P0
               LDA #3
               STA GRACTL ; Muestra PM
          
          LOOP
               JSR MOVEDER
               JSR MOVEIZQ
               JMP LOOP ; Loop infinito...
          
          ; Mueve P0 hacia derecha (POSX=POSX+1)
          MOVEDER
               LDA POSX
               STA HPOSP0
               JSR ESPERA
               INC POSX
               LDA POSX
               CMP #200
               BNE MOVEDER
               RTS
          
          ; Mueve P0 hacia izquiera (POSX=POSX-1)
          MOVEIZQ
               LDA POSX
               STA HPOSP0
               JSR ESPERA
               DEC POSX
               LDA POSX
               CMP #50
               BNE MOVEIZQ
               RTS
          
          ; Rutina de espera
          ESPERA
                   LDA $14
          W0
                   CMP $14
                   BEQ W0
                   RTS
          
          ;Rutina que limpia zona PM
          LIMPIAPM
              LDA #$00
          T2  STA PMB,X
              INX
              BNE LIMPIAPM
              INC T2+2
              DEY
              BNE LIMPIAPM
              RTS
          
          ; Rutina que lee los Datos de la calavera
          LEEDATOS
              LDA CALAVERA,X
              STA VPOSP0+80,X
              INX
              CPX #14
              BNE LEEDATOS
              RTS 
          
          ; Datos de la calavera
          CALAVERA
              .BYTE 56,124,254,254,214,146,254
              .BYTE 254,124,124,84,40,124,56
          
          POSX .BYTE 50
          
              *=$02E0
              .WORD COMIENZO

          Explicación breve de las rutinas agregadas:

          MOVEDER : posiciona el Player 0 según el valor de POSX, se va a la rutina de ESPERA. Después incrementa POSX en 1. y por ultimo pregunta si POSX es igual a 200, si no sigue en esta misma rutina de lo contrario vuelve donde fue llamada.

          MOVEIZQ : posiciona el Player 0 según el valor de POSX, se va a la rutina de ESPERA. Después disminuye POSX en 1. y por ultimo pregunta si POSX es igual a 50, si no sigue en la misma rutina de lo contrario vuelve donde fue llamada.

          ESPERA : lo que hace es una pausa para que se note el movimiento de la calavera en la pantalla.

          pm02

          Graficos Player/Missile

          Publicado enero 20, 2009 por ascrnet
          Categorías: Soft

          El nombre de gráficos de jugador-proyectil (en inglés: Player-Missile Graphics)  se usó en los microcomputadores Atari 400/800 XL/XE, y en las primeras máquinas de juego operadas con monedas de la misma marca, para referirse a los gráficos de sprite generados por hardware. El término reflejaba el uso de dos tipos de objetos gráficos, los jugadores otros objetos proyectiles. Tenían una resolución horizontal limitada (8 o 2 píxeles, aunque se podían escalar y potencialmente podían usar 192 líneas de resolución vertical).

          Bueno después de la breve intro, Veamos como se usan en ensamblador para ATARI XL/XE. En este primer ejercicio solo vamos a poner el pantalla un PLAYER con la forma de una calavera del mítico juego montezuma.

          HPOSP0 = 53248 ; Posicion Horizontal Player 0 (P0)
          PCOLR0 = 704   ; Color Player 0
          SIZEP0 = 53256 ; Tamaño del Player 0
          SDMCTL = 559
          GRACTL = 53277
          PMBASE = $7800
          VPOSP0 = PMBASE+1024 ; Posicion de memoria P0
          GPRIOR = 623
          
             *= $0600
          COMIENZO
             LDA #62
             STA SDMCTL
             LDA #$C0
             STA $D40E
             LDA #1
             STA GPRIOR
             LDA #120
             STA HPOSP0 ; Posicion P0
             LDA #14
             STA PCOLR0 ; Color Blanco P0
             LDA #2
             STA SIZEP0 ; Tamaño P0
             LDA # >PMBASE
             STA 54279
          ;    STA T2+2
             LDX #$00
             LDY #$04 ; para limpia los 4 PLAYER
             JSR LIMPIAPM
             LDX #$00
             JSR LEEDATOS
             LDA #3
             STA GRACTL ; Muestra PM
          
          LOOP JMP LOOP ; Loop infinito...
          
          ;Rutina que limpia zona PM
          LIMPIAPM
             LDA #$00
             T2  STA PMBASE,X
             INX
             BNE LIMPIAPM
             INC T2+2
             DEY
             BNE LIMPIAPM
             RTS
          
          ; Rutina que lee los Datos de la calavera
          LEEDATOS
             LDA CALAVERA,X
             STA VPOSP0+80,X
             INX
             CPX #14
             BNE LEEDATOS
             RTS
          
          ; Datos de la calavera
          CALAVERA
             .BYTE 56,124,254,254,214,146,254
             .BYTE 254,124,124,84,40,124,56
          
             *=$02E0
             .WORD COMIENZO

          Bueno una explicación rápida del código

          1. Se inicializan variables con las posiciones de memorias ha usar. (líneas de 1 a 9)
          2. Después que posición de memoria va usar de la ram nuestro ejemplo (Línea 10)
          3. Programa principal (Línea 11 a la 32)
          4. Ciclo infinito, eso es para dejar una pausa para siempre (línea 35)
          5. Subrutina Limpia posiciones de memoria para los PM (líneas 38 a 46)
          6. Subrutina Leer datos de la forma para el Player 0. (líneas 49 a 55)
          7. Datos de la Calavera (Líneas 58 a 60)
          8. Posición de memoria que indica que nuestro ejemplo es un archivo ejecutable (Líneas 62 a 63)

          pm01

          Próximo ejercicio mover horizontalmente el Player ….

          Libro Tricky Tutorials

          Publicado enero 15, 2009 por ascrnet
          Categorías: Publicación

          tricky

          Hola Atarianos

          Esta vez les presento este excelente libro de atari llamado “Tricky Tutorials”, el cual contiene detalles de los siguientes temas:

          1. Display List
          2. Horizontal /Vertical Scrolling
          3. Page Flipping
          4. Basics of Animation
          5. Player Missile Graphinc
          6. Sound & Music

          Cada tema es explicado extensamente y ejemplos paso a paso en atari basic. Espero que lo disfruten.

          800XL – Sam’s ComputerFacts

          Publicado septiembre 30, 2008 por ascrnet
          Categorías: Publicación

          Bueno esta vez les presento un documento pdf, el cual contiene todos los esquemáticos, pinout, partes y lógica de nuestro querido atari 800xl.

          Especial para aquellas personas que quieran hacer algún mod a un atari

          Saludos