Animacion Sprites Player 2

La entrada de hoy es corta, ya que a pesar que vamos a agregar un segundo jugador, lo unico que vamos a hacer es duplicar las variables, duplicar un par de archivos, agregar unas llamadas en el main.asm y… voila!!! tenemos el segundo jugador funcionando!!! magia… no, en realidad, son las ventajas de separar el codigo en archivos. A continuacion, un video de lo que me quedo:

Para lograr ello, lo primero que tenemos que hacer es duplicar las etiquetas que utilizamos para el jugador 1. por ejemplo:

agregados en vars.asm

; direcciones jetpac 2 -------------------------------------------------------
sprcolor2  = $d029
sprpoint2  = $07fa
sprx2      = $d004
spry2      = $d005
fire2     = $2a                   ; zero page direccion sin usar
gravityCounter2 = $04

; direcciones disparo
sprcolorFire2  = $d02a
sprpointFire2  = $07fb
sprxFire2      = $d006
spryFire2  = $d007
; dirFire2 esta en la direccion de memoria que me sobra del jet pac right

Tambien tenemos que inicializar estas variables, para ello agregamos en el archivo macros.asm (en la macro initVars) lo siguiente:

          ldx            #150      ; posicionamos jetpac 2
          stx            sprx2
          ldx            #139       
          stx            spry2

          ldx            #196      ; posicionamos disparo 2
          stx            sprxFire2
          ldx            #139       
          stx            spryFire2

          lda            #$05      
          sta            spractive ;activamos el sprite 0 y 2

          lda            #$03
          sta            sprcolor2  ; jetpac 2 color cyan

          lda            #$0a
          sta            sprcolorFire2  ; fire color red

          lda            #$0a      
          sta            sprxpandX ; expandimos X el disparo 1 y 2.

          lda            #ptrJPLeft
          sta            sprpoint2  ; jet pac 1 mirando a la izquierda

          lda            #ptrJPFire      
          sta            sprpointFire2  ; punteros de disparo

          lda            #$0       ; fire flag 
          sta            fire2     

          lda            #gravity
          sta            gravityCounter2

y tenemos que duplicar animatePlayer2.asm y animatePlayer2Fire.asm, vamos a Project properties y en el build order los ubicamos a continuacion de los del Player 1.
Ademas tenemos que modificar todas las referencias a las variables del player 1, a las nuevas variables.

Un agregado mas

Por ultimo, un detalle que me viene rompiendo las bolas desde que comence a programar… siempre que cargamos un prg en la c64 tenemos que ejecutarlo con SYS 4096… para ahorrarnos ese paso agregamos una llamada sys, que la generamos con una herramienta de CBM PRG Studio.
Agregamos un nuevo archivo asm, que lo nombraremos como syscall.asm. Luego vamos a Tools -> Generate SYS() Call, se nos abrira un popup, en Enter start addres ponemos $0801, hacemos click en ok, y nos generará algo como esto:

; 10 SYS4096

*=$0801

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

Nota: El popup nos da 2 opciones para seleccionar, basicamente si queremos que la linea aparezca de una forma u otra… pero no se como sabe el programa que la direccion es esa (4096)… supongo que la saca del main.asm… pero creo que en ningun lado estoy poniendo que ese es el archivo principal, o lo que sea… en fin…

A partir de ahora no voy a poner tanto codigo ya que ademas de codigo nuevo voy corrigiendo el codigo que escribi previamente, o hago alguna modificacion de ultimo momento, asi que prefiero explicar lo que hice, tratando de entenderlo uds y yo, y pueden ir bajando desde Github lo que tengo realizado hasta el momento:
https://github.com/moonorongo/jp_wars.git

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s