Re: Développement Shoot them up
Publié : sam. 23 janv. 2016 21:05
cool demos, tu as mis de la physique pour le saut du renard ??
Of course mon Capitaine. J'ai utilisé un tableau de valeur pour avoir une courbe de saut plus réaliste.touko a écrit :cool demos, tu as mis de la physique pour le saut du renard ??
Merci.touko a écrit :Et c'est déjà pas mal,tu progresses très vite .![]()
Arrêtes tout, et passe au portage d'un strider SGX digne de ce nom, y'en a ici qui attendent,la bouche pleine de bave
Code : Tout sélectionner
SATB_BASE .equ $7F00
vtest .ds 2
stw SATB_BASE, <_si
LDY #0
LDA [_si],Y
STA vtest
INY
LDA [_si],Y
STA vtest+1Tu as plusieurs méthode pour récupérer une valeur 16 bits dans un tableau .Je continue à avancer, j'ai ajouté sans problème 40 bullets à l'écran mais en statique. Maintenant je voudrais les faire bouger et là ça coince. J'ai toujours du mal avec 8bit /16bit. Pour lire les word sur 2 adresses.
Code : Tout sélectionner
lda mon_tab_low , Y
lda mon_tab_high , Y
Code : Tout sélectionner
lda mon_tab_16bits , Y // partie LOW
lda mon_tab_16bits + 1 , Y // partie HIGH
Oui tu peux utiliser la SAT tu as d'ailleurs des fonctions/macros pour récupérer les données,get_spr_posx, get_spr_posy, get_pattern, etc ..J'ai deux choix, soit un tableau qui garde les positions de chaque bullet, soit le changement dynamique dans la satb. Je récupère les positions du sprite #0, ajoute +1 et les réécrit dans le satb.
Code : Tout sélectionner
Je pense utiliser la satb comme il reste des bits inutilisés pour les sprites comme position Y n'utilisent pas bit 15-10, je pourrais les utiliser comme variables : bit15 = 1 hors screen par exemple.Même si 224 c'est bizarre, voir infos juste en hautMais je bloque toujours au niveau code, mon sprite #0 est à #64 en Y, mais ça me retourne #224 :
Code : Tout sélectionner
SATB_BASE .equ $7F00
vtest .ds 2
stw SATB_BASE, <_si
LDY #0
LDA [_si],Y
STA vtest
INY
LDA [_si],Y
STA vtest+1
Code : Tout sélectionner
stw #SATB_BASE, <_si
LDY #0
LDA [_si],Y
STA vtest
INY
LDA [_si],Y
STA vtest + 1
subw #64, vtest
spr_set #10,satb
spr_y vtest
RTSCode : Tout sélectionner
; spr_get_y(int value)
; ----
.macro spr_get_y
stw #SATB_BASE, <_si
lda [_si]
sub #64
tax
ldy #1
lda [_si],Y
sbc #0
rts
.endmCode : Tout sélectionner
array_data: .ds 256
CLY
LDA #$D0
STA array_data, Y
INY
LDA #$A0
STA array_data, YNah soustraire 64 c'est pour récupérer Y de ta SAT, pour initialiser Y dans la SAT il faut ajouter 64 .je vois mon sprite en haut de l'écran quand j'ajoute #64 au lien de soustraire #64, et dans mon debug avant de soustraire, j'ai FF dans vtest. Je comprends pas pourquoi, c'est ces petit détail qui me bloque en asm. En tout logique, ça devrait marcher.
Code : Tout sélectionner
stw #SATB_BASE, <_si
LDY #0
LDA [_si],Y
STA vtest
INY
LDA [_si],Y
STA vtest + 1
addw #64, vtest
spr_set #10,satb
spr_y vtest
Dur de dire pk cette valeur tout dépend comment à été initialisé la SAT avant .je vois mon sprite en haut de l'écran quand j'ajoute #64 au lien de soustraire #64, et dans mon debug avant de soustraire, j'ai FF dans vtest.
Code : Tout sélectionner
; spr_get_y(int value)
; ----
.macro spr_get_y
ldy #1
lda [_si],Y
tax
lda [_si]
sec
sbc #64
bcs .pas_inc_high
dex
.pas_inc_high: // reg A=partie LOW ,reg X partie HIGH
.endm
Code : Tout sélectionner
.bank $XX // On déclare les constantes dans un BANK
.org $$$$$
mon_tab: .dw 1000,512,320 // ça déclare un tableau de nombres constants sur 16 bits
mon_tab: .db 10,5,240 // ça déclare un tableau de nombres constants sur 8 bits
.bss // On déclare un tableau/variable de X octets en RAM
mon_tab: .ds 100 // ça réserve un tableau de 100 octets ou 50 int en RAM, y'a pas de notion de 8/16 bits, tout est 8 bit
Code : Tout sélectionner
; spr_get_x(int value)
; ----
.macro spr_get_x
ldy #2
lda [_si],Y
tax
lda [_si]
sec
sbc #32
bcs .pas_incx
dex
.pas_incx:
.endmCode : Tout sélectionner
move_bullet:
spr_set #50,satb
spr_get_x
STA vtest2
STX vtest2 + 1
subw #1, vtest2
addw #32, vtest2
spr_get_y
STA vtest
STX vtest + 1
subw #3, vtest
addw #64, vtest
spr_x vtest2
spr_y vtest
RTSCode : Tout sélectionner
ldy #2
lda [_si], Y
lda [_si]
Code : Tout sélectionner
ldy #3
lda [_si], Y
tax
dey
lda [_si], Y
sbc #32
...
Code : Tout sélectionner
ldy #xx
lda [ _si ] , Y
Peut s'écrire
lda [ _si ].xx // Cela va générer le code du haut dans le .s
