Page 10 sur 12

Re: Développement Shoot them up

Publié : mar. 19 janv. 2016 18:09
par touko
LOL, bienvenu chez ceux qui se sont fait au moins enfler 1 fois avec ça :P
ca m'arrive encore aujourd'hui, mais bon après tu percutes de suite . :wink:

Re: Développement Shoot them up

Publié : mer. 20 janv. 2016 11:07
par Hero_Tonma
:lol:
J'en suis encore à me demander pourquoi ça boucle pas des fois ... avant de me rendre compte que j'ai mis un jmp au lieu d'un jsr !!!

J'ai encore besoin de vous les loulous. J'ai avancé sur mon scroll et il marche bien, même très bien, je suis content de moi. Même si pour l'instant je scroll de haut en bas.

Mon soucis vient du banking. Mon tableau est gros, j'ai 584 lignes de

Code : Tout sélectionner

scrtab2	
   .db     $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
   .db     $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
   ...
Le problème c'est qu'il dépasse d'une bank à l'autre : bank 2 -> bank 3

Code : Tout sélectionner

PC Engine Assembler (v3.22, 2/06/2011, Tomaitheous Release)

pass 1
   (Warning. Opcode crossing page boundary $8000, bank $03)
pass 2
segment usage:

				    USED/FREE
      ZP    $2000-$2040  [  65]       65/ 191
     BSS    $2200-$2933  [1844]     1844/6348

BANK  0                             4106/4086
    CODE    $E010-$F00F  [4096]
    CODE    $FFF6-$FFFF  [  10]
BANK  1                             1382/6810
    CODE    $C000-$C565  [1382]
BANK  2                             8192/   0
    CODE    $6000-$7FFF  [8192]
BANK  3                             8178/  14
    CODE    $800E-$9FFF  [8178]
BANK  4                             5022/3170
    CODE    $8000-$939D  [5022]
				    ---- ----
				      27K  13K

			TOTAL SIZE =       40K
Comment passer d'une partie de tableau de la Bank 2 à celui de la Bank 3 ? J'imagine qu'on doit souvent passer des datas supérieur à 8ko.

J'utilise "stw #scrtab2,<_si ; address of the character table" pour loader l'adresse. Elle doit avoir une adresse proche de 4000 dans la Bank 2

Edit*: Je viens de me rendre compte que la Bank 3 commence à $800E au lieu de $8000
Je commence mes datas avec :

Code : Tout sélectionner

.bank MAIN_BANK+1
	.ORG  $6000
Si je rajoute avant le tableau ".bank MAIN_BANK+2 .ORG $8000" pour commencer à $8000, mon tableau à l'air d'être mélangé dans n'importe quel sens et j'ai un saut à la Bank 4 = $A010 ?

Edit2* : J'ai fait d'autres tests en voyant la valeur .ORG $8000, si je dépasse $FFFF, il boucle sur $0000. Pas top, on doit pouvoir écrire dans des banks au dessus de $FFFF sinon on a aura pas de place pour un max de data et sprites.

Re: Développement Shoot them up

Publié : mer. 20 janv. 2016 12:45
par touko
Normal tu sors de l'adressage physique du CPU $0000 à $FFFF .
Les banks (si je dis pas n'importe quoi) sur hucard vont de $00 à $7F, chaque bank stocke 8ko de données .

Chaque MPR te permet d'accéder a un espace de $2000 avec :
MPR0 maps $0000-1FFF
MPR1 maps $2000-3FFF
MPR2 maps $4000-5FFF
MPR3 maps $6000-7FFF
MPR4 maps $8000-9FFF
MPR5 maps $A000-BFFF
MPR6 maps $C000-DFFF
MPR7 maps $E000-FFFF

Donc il faut mapper la/les BANK(S) où sont stocké tes données sur un des MPR,et y accéder via la plage d'adresses du MPR correspondant .

Donc si tu fais:

Code : Tout sélectionner

 .bank $60
   .org $6000
 #incbin mon_pointeur_vers_donnees , "donnees.bin" ......
cela veux dire qu'il faudra faire:

Code : Tout sélectionner

lda #bank(mon_pointeur_vers_donnees)
tam #3   // sur le MPR3 qui va de l'adresse $6000 à $7FFF
Bien sur si ton fichier fait plus de 8ko, il serra mis automatiquement sur les banks suivantes si besoin .
EX: si ton fichier fait 10ko il prendra la bank $60(8ko) entière et une partie de la bank $61(2ko) .

Donc si tu banques sur un autre MPR que le 3(par exemple le 4) , il faudra recalculer l'adresse du pointeur si tu te bases dessus .
EX: lda mon_pointeur_vers_donnees , x // va charger une donnée comme ça lda $6000 , x (car définie par le .org $6000)
Maintenant si tu es sur que ta donnée commence au début de la bank, et que tu la mappes sur le MPR4 tu peux faire :
lda $8000 , x

Re: Développement Shoot them up

Publié : mer. 20 janv. 2016 15:36
par Hero_Tonma
Génial, merci beaucoup.

Si je comprends bien, je bank sur la carte externe des banks de 8k et après j'ai accès à 8 MPR (soit 64ko, je suis bon en Math :mrgreen: )
Donc je peux, par exemple placer en bank 60, $8000 les datas level1 et en bank 61, $8000 les datas du level2.
Après je n'ai plus qu'à écrire lien vers la bonne bank.

J'ai fait un test en ajoutant des datas sur les banks suivant celle de mon tableau à la même adresse et en faisant un lda #bank(nomTableau) tam #4, je récupère bien mon tableau.

Code : Tout sélectionner

pass 1
   (Warning. Opcode crossing page boundary $A000, bank $61)
pass 2
segment usage:

				    USED/FREE
      ZP    $2000-$2040  [  65]       65/ 191
     BSS    $2200-$2933  [1844]     1844/6348

BANK  0                             4106/4086
    CODE    $E010-$F00F  [4096]
    CODE    $FFF6-$FFFF  [  10]
BANK  1                             1390/6802
    CODE    $C000-$C56D  [1390]
BANK  2                             4126/4066
    DATA    $6000-$701D  [4126]
BANK  3                                0/8192
BANK  4                                0/8192
BANK  5                             7936/ 256
    DATA    $A000-$BEFF  [7936]
BANK  6                                0/8192
...
BANK 5F                                0/8192
BANK 60                             8192/   0
    DATA    $8000-$9FFF  [8192]
BANK 61                             1136/7056
    DATA    $A010-$A47F  [1136]
BANK 62                                0/8192
...
BANK 7E                                0/8192
BANK 7F                             4126/4066
    DATA    $8000-$901D  [4126]
				    ---- ----
				      31K 993K

			TOTAL SIZE =     1024K
J'aurais certainement encore des questions la dessus, quand je vais aujouter pleins de datas et de sprites, je vais certainement bugger.

J'arrive donc à avoir mon tableau comme il faut pour le scrolling, mais seulement sur les 2ko de ma bank en $8000, la partie qui bascule sur le MPR5 déconne. Mais je vais trouver !!! Merci mille fois.

Re: Développement Shoot them up

Publié : jeu. 21 janv. 2016 16:29
par touko
Donc je peux, par exemple placer en bank 60, $8000 les datas level1 et en bank 61, $8000 les datas du level2.
Oui, et tu peux même les mapper sur les autres MPRS, faudra juste faire attention à l'dresse pour accéder aux données .
J'arrive donc à avoir mon tableau comme il faut pour le scrolling, mais seulement sur les 2ko de ma bank en $8000, la partie qui bascule sur le MPR5 déconne. Mais je vais trouver !!! Merci mille fois.
Pense à remapper la bank $61 sur le MPR 4 une fois la bank $60 complètement lue ..
J'ai indiqué 8ko mais c'est plus,en réalité c'est 8192 octets .

Pour plus de facilité tu peux mapper la bank $60 sur le MPR4 et la $61 sur le MPR5, ça te permet d'accéder à ton tableau d'une traite .
Tu as inséré ton fichier comment dans la bank ??
dans le .lst de ton projet tu dois avoir une ligne comme ça:

Code : Tout sélectionner

212  03:6178            _Level2_layer1_base_gfx:
  213  03:6178                    .incbin "bckgnds/Level2/bckgnds/gfx/Level2_layer1_base.gfx"
Le premier nom est l'adresse de début de ton fichier dans la bank, 03:6178 t'indique la bank et l'adresse de départ de ton fichier .

Re: Développement Shoot them up

Publié : ven. 22 janv. 2016 10:06
par Hero_Tonma
Merci, ça va m'être super utile le fichier lst. J'étais toujours en train de calculer de tête les adresses, je vais gagner un temps fou.

Pour mon tableau, j'ai essayé de le mettre à la suite mais ça bug ... par contre en changeant de MPR ça tourne, le problème est que je dois utiliser deux noms de label pour l'adresse.

J'ai testé en faisant :
lda #bank(scrtab2)
tam #4
lda $A000
tam #5

Code : Tout sélectionner

.BANK $10
	.ORG $8000
   
scrtab2	
   .db     $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
   .db     $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
   .db     $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
   .db     $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
...
...
   .BANK $11
	.ORG $A000
    
   .db     $80, $80, $80, $80, $85, $86, $85, $86, $80, $80, $80, $80, $80, $80, $65, $66
   .db     $67, $68, $80, $80, $80, $80, $80, $80, $65, $66, $67, $68, $59, $5A, $17, $17
Mais j'ai du mal boucler dans mon code, une coquille qui traîne. En tout cas mon code avec le même banking marche.

J'ai commencé la partie sonore avec le code de test dans la doc officiel avec le PSG. J'arrive à écrire les registres et sortir un malheureux son (un waveform en continu pour être précis).

Je suis partie sur le mml pour joueur des notes et ça fonctionne. Je dois encore mettre un compteur pour pouvoir boucler. Chaque note devant être jouée à chaque frame * la longueur par défaut. Il me reste à décoder certaines valeurs et faire des tests. Peut-être créer un convertisseur de note si je trouve des partitions au format texte.
Les formats PCE que j'ai sont : "W3T200L4V15O2AO3C#DD#ED#DC#O2AO3C#DD#ED#DC#DF#GG#AG#GF#O2AO3C#

ABCDEFG = notes
T = tempo
L = longueur de la tenue de la note par défaut
V = volume du Channel
O = Octave (aigu / grave)
On peut varier la longueur d'une note en mettant A5 par exemple.
Les # je sais pas ce que c'est ... peut-être un demi-ton mais haut ou bas ?
Le W je sais pas non plus. J'opte pour la waveform définie comme (SIN, SQUARE, ...)

Re: Développement Shoot them up

Publié : ven. 22 janv. 2016 11:18
par Luciole
Une date pour une tite vidéo démo? :wink:

Re: Développement Shoot them up

Publié : ven. 22 janv. 2016 11:46
par touko
Merci, ça va m'être super utile le fichier lst. J'étais toujours en train de calculer de tête les adresses, je vais gagner un temps fou.
Oui, et ça sert aussi bcp à comprendre que des fois tes fichiers ne sont pas à l'adresse/bank où tu penses qu'ils sont :mrgreen:
Pour mon tableau, j'ai essayé de le mettre à la suite mais ça bug ... par contre en changeant de MPR ça tourne, le problème est que je dois utiliser deux noms de label pour l'adresse.
Rien ne t'empêche d'insérer ton fichier en un seul coup, et de créer un pointeur (ou plus) à la mano .

Code : Tout sélectionner

mon_pointeur2     .equ  pointeur_fichier_départ + $3000     // par exemple
pointeur_fichier_départ est évidemment le nom du pointeur de début de ton fichier inséré avec le #incbin .

Code : Tout sélectionner

Mais j'ai du mal boucler dans mon code, une coquille qui traîne. En tout cas mon code avec le même banking marche.
Tu as testé tout ton fichier dans la BANK ou juste le début ??
Je suis partie sur le mml pour joueur des notes et ça fonctionne. Je dois encore mettre un compteur pour pouvoir boucler. Chaque note devant être jouée à chaque frame * la longueur par défaut. Il me reste à décoder certaines valeurs et faire des tests. Peut-être créer un convertisseur de note si je trouve des partitions au format texte.
Les formats PCE que j'ai sont : "W3T200L4V15O2AO3C#DD#ED#DC#O2AO3C#DD#ED#DC#DF#GG#AG#GF#O2AO3C#

ABCDEFG = notes
T = tempo
L = longueur de la tenue de la note par défaut
V = volume du Channel
O = Octave (aigu / grave)
On peut varier la longueur d'une note en mettant A5 par exemple.
Les # je sais pas ce que c'est ... peut-être un demi-ton mais haut ou bas ?
Le W je sais pas non plus. J'opte pour la waveform définie comme (SIN, SQUARE, ...)
Le mml n'est pas très compliqué en soit, mais se taper une musique à la mano tout seul, faut vraiment savoir ce que tu fais .
Sinon y'a un truc qui permet de prendre un fichier midi est le passer en mml,mais faut peaufiner après, perso j'en suis pas capable . :wink:

Re: Développement Shoot them up

Publié : ven. 22 janv. 2016 15:19
par Hero_Tonma
Luciole a écrit :Une date pour une tite vidéo démo? :wink:
Bientôt

Image
Plus sérieusement, j'ai que le début du début. Et pis le graphisme est du rip sauvage. En plus mon scroll vertical va de haut en bas plutôt que l'inverse. Je vais regarder pour l'inverser, c'est pas dur mais faut revoir ma lecture du fichier concernant mes datas pour la map. Y aura 2 vidéos, une pour un jeu de plateforme et une pour un shoot vertical.



Je vais tester le convertisseur midi mml pour voir ce que ça donne. En fait, je sais même pas faire du midi ...

Pour mon tableau dans 2 banks. Je commence au début ($8000) et j'augmente mon index jusqu'un truc genre $A800. Mais dès que je dépasse la première bank ($9FFF), j'ai des données aléatoires. Par contre quand je test le début de chaque directement, indépendamment l'un de l'autre, ça marche. :shock: . Donc en théorie ça marche, Il faudra que je reprenne un code source avec seulement cette partie là pour voir mon erreur.

Re: Développement Shoot them up

Publié : ven. 22 janv. 2016 20:35
par touko
Je vais tester le convertisseur midi mml pour voir ce que ça donne. En fait, je sais même pas faire du midi ...
C'est pas grave vu la tonne de musiques midi qui existe :wink:
Pour mon tableau dans 2 banks. Je commence au début ($8000) et j'augmente mon index jusqu'un truc genre $A800. Mais dès que je dépasse la première bank ($9FFF), j'ai des données aléatoires. Par contre quand je test le début de chaque directement, indépendamment l'un de l'autre, ça marche. :shock: . Donc en théorie ça marche, Il faudra que je reprenne un code source avec seulement cette partie là pour voir mon erreur.
Hero_Tonma
Membre

Messages: 71
Inscription: Lun 20 Juil 2015 15:26
je pense que c'est ton code qui doit mal gérer le passage entre les 2 banks .

Re: Développement Shoot them up

Publié : sam. 23 janv. 2016 14:43
par Hero_Tonma
touko a écrit :je pense que c'est ton code qui doit mal gérer le passage entre les 2 banks .
J'en suis même carrément d'accord avec toi :mrgreen:

Pour le plus grand plaisir des yeux, 2 vidéos de mes premiers essais en asm. Ca tourne à 60 fps mais les petits ralentissements sur la vidéo viennent de la compression.

https://youtu.be/Ky7fHuG37pc
https://youtu.be/5xWYfWPLvTw

Re: Développement Shoot them up

Publié : sam. 23 janv. 2016 14:48
par pckid
Génial mon poto, tu as fait un bon boulot ! c'est cool çà !

Re: Développement Shoot them up

Publié : sam. 23 janv. 2016 15:16
par shubibiman
Pour le shmup, tu as repris des graphismes d'un jeu existant ou tu les as créés toi-même ?

Beau boulot en tout cas !

Re: Développement Shoot them up

Publié : sam. 23 janv. 2016 15:41
par Hero_Tonma
Merci.
Je m'occupe que du code.

Pour le shoot vertical, c'est Banshee CD32 et le vaisseau de ansimuz
Pour le plateforme, c'est PsychoFox

Re: Développement Shoot them up

Publié : sam. 23 janv. 2016 15:49
par Redfield1
C'est prometteur !