Développement Shoot them up
Modérateurs : SirG, Redfield1, shubibiman, Laucops
- touko
- NECromancer
- Messages : 2297
- Inscription : lun. 31 mars 2008 14:32
Re: Développement Shoot them up
cool demos, tu as mis de la physique pour le saut du renard ??
- pckid
- NECrophage
- Messages : 1516
- Inscription : lun. 26 sept. 2005 11:32
- Localisation : ile de france
Re: Développement Shoot them up
Je l'ai testé le renard et il saute et retombe bien.
=============================
Pc Kid Renait , et hop !!!
=============================
Pc Kid Renait , et hop !!!
=============================
- Hero_Tonma
- Push Run Button!
- Messages : 89
- Inscription : lun. 20 juil. 2015 14:26
Re: Développement Shoot them up
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 ??
- touko
- NECromancer
- Messages : 2297
- Inscription : lun. 31 mars 2008 14:32
Re: Développement Shoot them up
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
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
- Hero_Tonma
- Push Run Button!
- Messages : 89
- Inscription : lun. 20 juil. 2015 14:26
Re: Développement Shoot them up
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
Je suis toujours ok pour un portage mais il me faudrait les droits avant vu la quantité de boulot sur ce jeu. D'ailleurs si quelqu'un peut avoir les droits sur des jeux arcades anciens (genre taito, konami, capcom, irem ...), ce pourrait être super sympa de faire des suites de jeux.
- Hero_Tonma
- Push Run Button!
- Messages : 89
- Inscription : lun. 20 juil. 2015 14:26
Re: Développement Shoot them up
Nouvelle question du gros boulet
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.
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.
Je pense avoir saisi la manière dont ça fonctionne. Le satb a 4 word par sprite et comme ma satb se trouve à $7F00 (word 0 = coordonée Y, word1 = X, word2 = pattern et le word3 attribut). un word vaut 15-0 en binary soit 2 fois 0-7. $7F00 = 0-7 et $7F01 = 8-15 pour la position Y.
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.
Mais je bloque toujours au niveau code, mon sprite #0 est à #64 en Y, mais ça me retourne #224 :
Après j'incrémente vtest et recopie dans la satb. pour passer au sprite suivant j'ajoute 8 à mon index.
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.
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.
Je pense avoir saisi la manière dont ça fonctionne. Le satb a 4 word par sprite et comme ma satb se trouve à $7F00 (word 0 = coordonée Y, word1 = X, word2 = pattern et le word3 attribut). un word vaut 15-0 en binary soit 2 fois 0-7. $7F00 = 0-7 et $7F01 = 8-15 pour la position Y.
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.
Mais 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- touko
- NECromancer
- Messages : 2297
- Inscription : lun. 31 mars 2008 14:32
Re: Développement Shoot them up
Tu 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.
Soit en séparant dés le départ tes valeurs LOW et HIGH dans 2 tableaux, et tu y accèdes comme ça
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.Par contre fais attention, dans la SAT la pos Y est ta pos du sprite à l'écran + 64, et la pos x c'est x=x+32 ..
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
REMARQUE: les fonctions get_spr_posx/y font déjà la manip, donc si tu les utilises les valeurs renvoyées sont celles de ton sprite à l'écran .
- Hero_Tonma
- Push Run Button!
- Messages : 89
- Inscription : lun. 20 juil. 2015 14:26
Re: Développement Shoot them up
J'ai pas la macro spr_get_y. Seulement dans HuC mais je l'ai transposé sans succès.
J'ai rajouté un # devant mon label SATB_BASE pour avoir l'adresse et non pas le contenu :
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
RTSPour la macro spr_get_y : j'ai modifié comme ça :
Code : 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
.endmPour l'instant je vais regarder avec les tableaux. Pour les déclarer, tu fais comment : dans les variables ou tu crées un tableau (array_Bullet: dw 0,0,0,0,0, ...) et après tu écris dedans.
Je pene avoir trouvé mais je dois encore faire des tests
Code : Tout sélectionner
array_data: .ds 256
CLY
LDA #$D0
STA array_data, Y
INY
LDA #$A0
STA array_data, Y- touko
- NECromancer
- Messages : 2297
- Inscription : lun. 31 mars 2008 14:32
Re: Développement Shoot them up
Nah 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.
Et avec X c'est 32 .
Donc si tu veux mettre un sprite à la ligne 100 de l'écran, quand tu les mets dans la SAT, il faut faire 100+64,et 164-64 pour récupérer la ligne écran .
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
EDIT: Non c'est bon .
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.
Pour spr_gety, il faut faire un spr_set avant.
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
- Hero_Tonma
- Push Run Button!
- Messages : 89
- Inscription : lun. 20 juil. 2015 14:26
Re: Développement Shoot them up
Merci pour ta patience
parce que je suis un gros boulet et que là je vais péter un plomb.
Ma première fonction ne marche pas du tout. Je comprends vraiment pas pourquoi, je referais un test avec un code simple où j'ai juste un sprite. Pourtant elle me semble bonne.
Avec mon tableau ca plante aussi surtout avec mes coordonnées en X.
Par contre, j'ai réussi avec ta .macro spr_get_y , j'arrive à boucler sur l'écran de bas en haut en Y donc. Avec test hors écran qui marche avec dépassement de 256 pixels.
Mais quand j'ajoute une macro spr_get_x, alors ça bug dans tous les sens.
Mon code pour changer les X / Y (version simplifié)
En Y ça passe, mais si je rajoute le X, mon sprite se déplace en diagonale quelque soit la valeur soustraite avec subw #1,vtest2. Comme si il me lisait la valeur Y en X.
Bon, je vais aller couper de bois pour me calmer et réflechir.
P.S. Je me fait pas de soucis, j'ai juste dû oublier une ligne quelque part. Je suis sûr que dans 2 heures ça fonctionnera ... peut-être
Ma première fonction ne marche pas du tout. Je comprends vraiment pas pourquoi, je referais un test avec un code simple où j'ai juste un sprite. Pourtant elle me semble bonne.
Avec mon tableau ca plante aussi surtout avec mes coordonnées en X.
Par contre, j'ai réussi avec ta .macro spr_get_y , j'arrive à boucler sur l'écran de bas en haut en Y donc. Avec test hors écran qui marche avec dépassement de 256 pixels.
Mais quand j'ajoute une macro spr_get_x, alors ça bug dans tous les sens.
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
RTSBon, je vais aller couper de bois pour me calmer et réflechir.
P.S. Je me fait pas de soucis, j'ai juste dû oublier une ligne quelque part. Je suis sûr que dans 2 heures ça fonctionnera ... peut-être
- MooZ
- Administrateur
- Messages : 2090
- Inscription : jeu. 16 déc. 2004 14:25
- Contact :
Re: Développement Shoot them up
Je crois voir le problême. Tu fais:
Tu prends donc l'octet #2 et ... #0. Hors c'est plutôt l'octet #3 et #2 qu'il faut.
Code : 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
...
- Hero_Tonma
- Push Run Button!
- Messages : 89
- Inscription : lun. 20 juil. 2015 14:26
Re: Développement Shoot them up
Merci, encore une erreur de gros débutant. C'est ça ou je dois arrêter de développer quand j'ai des migraines.
Je test ça mais je suis sûr que ça va marcher.
Je test ça mais je suis sûr que ça va marcher.
- touko
- NECromancer
- Messages : 2297
- Inscription : lun. 31 mars 2008 14:32
Re: Développement Shoot them up
Bien vu mooz 
Je sais pas si mkit le prend en charge(sous huc ça marche), mais tu peux faire ça :
Je sais pas si mkit le prend en charge(sous huc ça marche), mais tu peux faire ça :
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
- Hero_Tonma
- Push Run Button!
- Messages : 89
- Inscription : lun. 20 juil. 2015 14:26
Re: Développement Shoot them up
J'ai pas eut trop de temps ces derniers jours.
Mais grâce à vos conseils, j'arrive maintenant à accéder aux données des sprites.
J'ai pu ajouter la possibilité de tirer avec mon vaisseau. Plusieurs tirs qui se déplacent et test hors screen. Bien sûr, j'ai du faire une erreur dans ma gestion de mouvement des tirs, donc je préfère la réécrire entièrement. Quand j'aurais 5 minutes et une prochaine vidéo.
Edit : Après une journée à me taper la tête contre les murs. J'ai "enfin" réussi à réécrire ma fonction après une nuit de sommeil pour que tout le code du jeu marche. Je peux tirer des missiles. C'est basique mais ça marche.
Mais grâce à vos conseils, j'arrive maintenant à accéder aux données des sprites.
J'ai pu ajouter la possibilité de tirer avec mon vaisseau. Plusieurs tirs qui se déplacent et test hors screen. Bien sûr, j'ai du faire une erreur dans ma gestion de mouvement des tirs, donc je préfère la réécrire entièrement. Quand j'aurais 5 minutes et une prochaine vidéo.
Edit : Après une journée à me taper la tête contre les murs. J'ai "enfin" réussi à réécrire ma fonction après une nuit de sommeil pour que tout le code du jeu marche. Je peux tirer des missiles. C'est basique mais ça marche.
- Hero_Tonma
- Push Run Button!
- Messages : 89
- Inscription : lun. 20 juil. 2015 14:26
Re: Développement Shoot them up
Enfin des news. J'ai pas eut beaucoup de temps à consacrer mais je suis toujours bien là.
J'ai pu avancer sur mes tests et je pense pouvoir bien avancer sur un premier niveau, voir un mode caravan pour débuter.
Je dois juste réécrire une partie de mes tests de collisions.

Une petite vidéo pour voir l'avancement :
https://youtu.be/NtWgnbsHHpY
J'ai pu avancer sur mes tests et je pense pouvoir bien avancer sur un premier niveau, voir un mode caravan pour débuter.
Je dois juste réécrire une partie de mes tests de collisions.

Une petite vidéo pour voir l'avancement :
https://youtu.be/NtWgnbsHHpY
