Page 1 sur 2
Exemple de DMA
Publié : jeu. 31 juil. 2008 14:53
par xav
La DMA "Direct Memory Access" permet de transférer de facon hardware des données en ram sans travail du CPU.
Pour la nec, cette dma permet de travailler directement dans la ram video, ce qui permet des effet interressant sans ralentir le CPU.
Cette example contient deux application:
1 - Changer le contenu d'un tile "à la volé" pour affiché une animation cyclique
2 - changer le contenu d'un tile avec la méme image sensiblement décalé, pour simulé un scroll
http://rapidshare.com/files/133828373/dma.rar.htm
La seule inconnu est la facon dont le circuit video gére 2 dma transmise coup sur coup, la premiére n'etant pas terminer.... A tester
Publié : jeu. 31 juil. 2008 15:08
par Sebnec
First, there was a menace
Now, Psygnosis presents a
DMA Design game. Blood money.
Désolé, il y a des mots qui évoquent des souvenirs en moi (les fans de l'Amiga reconnaîtront).
EDIT: sinon, j'ai rien compris à ton post. J'ai honte.
Publié : jeu. 31 juil. 2008 15:16
par shubibiman
Pareil, n'étant pas au fait de tout ce qui touche à la prog, je ne comprends que rarement les messages de Xav. Tu as donc 2 possibilités :
a) tu te réjouis car quand Xav poste, c'est toujours pour annoncer de bonnes nouvelles
b) tu cliques sur le lien, tu télécharges, tu installes sur ta flashcard et tu testes sur une PCE et tu admires.
Généralement, ça marche bien
Edit: je pense avoir compris! En fait, tu joues sur l'affichage des tiles pour simuler un scrolling? J'ai bon?
Edit 2 : bah oui, en fait c'est clairement dit dans ton message. Je vais regarder ça ce soir en rentrant du taf.
Publié : jeu. 31 juil. 2008 15:53
par El magnifico
Question d'abruti total en la matière :
Les concepteur des jeux Nec originaux, avaient-ils des outils pour réaliser les jeux ou faisaient-ils tout au code au cas par cas ?
Et si les outils existaient, est-ce qu'ils sont utilisables par des gars surpuissant en programmation comme xav ?
Publié : jeu. 31 juil. 2008 18:27
par shubibiman
Donc si je comprends bien le principe : tu remplaces une tile par une autre tile différente, celle qui a été remplacée apparaissant à gauche (si scrolling horizontal), etc...C'est ça?
Genre par exemple :
Image 1 : -_-_1-_
Image 2 : _-_1-_-
Image 3 : -_1-_-_
Image 4 : _1-_-_-
Donc là , au lieu d'avoir un scroll, j'ai 7 tiles. Non? Edit : même pas, j'en ai 3 dont 2 s'affichant 2 fois à l'écran.
Si oui, la programmation, c'est quand même bien plus que de simples lignes de code, il faut avoir une sacrée jugeotte.
Publié : jeu. 31 juil. 2008 19:02
par Kaminari
Marche bien en émul :)
Très astucieux en effet. J'imagine que cette technique peut permettre des effets de pseudo transparence, genre l'avant-plan qui projette une fausse ombre sur l'arrière-plan (façon Spriggan ou Magical Chase) ?
Publié : jeu. 31 juil. 2008 19:05
par xav
C'est ma faute

, ce post répond a une discussion que j'ai eu avec touko a propos des bidouilles a faire en video, donc il faut avoir quelque connaissance en prog pour bien comprendre.
Les concepteur des jeux Nec originaux, avaient-ils des outils pour réaliser les jeux ou faisaient-ils tout au code au cas par cas ?
J'imagine que nec diffusait à ces editeurs un kit de prog officiel, libre a eux de l'utilisé ou de programmé des kits perso
Image 1 : -_-_1-_
Image 2 : _-_1-_-
Image 3 : -_1-_-_
Image 4 : _1-_-_-
Tu a bien compris, il n'y a qu'un tile pour la lave, et 8 étape d'animation (l'ideal est d'en avoir 16 pour une fluidité optimale), il suffit juste d'étre sur que le tile "boucle sur lui méme":
Par example pour un tile de 4 pixel (pour plus de clarté)
Etape 1: ABCD
Etape 2: BCDA
Etape 3: CDAB
Etape 4: DABC
et on reboucle sur la premiere etape indefiniment et on à notre pseudo scroll... Cette technique je l'ai decouverte sur C64, quelque jeux nes l'exploite aussi. Sur Nec Dracula X et Magical chase l'utilise a fond.
EDit:
rès astucieux en effet. J'imagine que cette technique peut permettre des effets de pseudo transparence, genre l'avant-plan qui projette une fausse ombre sur l'arrière-plan (façon Spriggan ou Magical Chase) ?
Exactement, Manta l'utilise d'ailleurs mais en transfert soft, la grande nouveauté est l'introduction de la DMA

Publié : jeu. 31 juil. 2008 19:24
par shubibiman
Cool, je commence à comprendre certaines choses. Bon courage, Xav

Publié : dim. 03 août 2008 19:14
par touko
xav a écrit :C'est ma faute

, ce post répond a une discussion que j'ai eu avec touko a propos des bidouilles a faire en video, donc il faut avoir quelque connaissance en prog pour bien comprendre.
Je vais regarder ca de plus prés

...
Mais y'a de L'asm dedans

..
El magnifico a écrit :Question d'abruti total en la matière :
Les concepteur des jeux Nec originaux, avaient-ils des outils pour réaliser les jeux ou faisaient-ils tout au code au cas par cas ?
Et si les outils existaient, est-ce qu'ils sont utilisables par des gars surpuissant en programmation comme xav ?
Les devs avaient tout ce qu'il faut doc technique, fonctions premachées,moteurs,sprites,et surement un soutien technique de nec etc ..
Ensuite, chaque dev fait ensuite des fonctions/moteurs à sa sauce, en fonction de ses connaissances du systeme, mais tout été en ASM à cette époque.
comme aujourd'hui en fait.
shubibiman a écrit :
Si oui, la programmation, c'est quand même bien plus que de simples lignes de code, il faut avoir une sacrée jugeotte.
C'est sur que les idées ca sert, mais egalement l'experience, car quelqu'un qui a develepper pour les 8 bits, peut sans soucis reutiliser ses connaissances qui s'appliqueront pour les autres systemes.
Exemple le tile swapping, marche pour nec, snes, md etc ...
Tout comme le cyclage de palette, en fait pas mal d'effet sympa sont tres simples à programmer.
Le plus dur en tant qu'amateur, et de partir de zero, sans doc (ou à moitier), et essayer de comprendre comment ca marche avec juste du code (qd il est dispo).
Le language C, permet une approche plutot simple de la prog sur nec (avec quelques petits inconvenients).
Publié : jeu. 07 août 2008 00:00
par MooZ
Si je ne raconte pas de conneries, si tu passes la resolution en X à 512, le transfert dma est accéléré.
C'etait tout :p
Publié : jeu. 07 août 2008 09:24
par xav
Si je ne raconte pas de conneries, si tu passes la resolution en X à 512, le transfert dma est accéléré.
En réfléchissant ça semble logique, d'aprés McDonald le VDC est cadencé par le VCE, sachant que le VCE augmente ca fréquence suivant qu'il travaille en 256,320 ou 512 point, on peux donc raisonnablement penser que la DMA en est accélérée.
Tiens, un truc à essayer changer la resolution en 512 pendant le Vsync, lancer la dma et juste avant la fin du vsync revenir en 320...
Publié : jeu. 07 août 2008 17:58
par Kaminari
Je ne sais pas si ça s'y rapporte, mais
Chris Covell a pondu une petite démo qui affiche les trois résolutions en split-screen.
Publié : ven. 08 août 2008 13:03
par MooZ
Ca y ressemble

La resolution horizontale est changée pendant le hsync.
Tu auras par exemple :
Code : Tout sélectionner
vsyncHandler:
jsr set_xres256
stz <_y
st0 #$06
st1 #64 ; La scanline #64 est la première visible
st2 #00
rts
hsyncHandler:
lda <_y
bne .l0
jsr set_xres256
bra .end
.l0:
cmp #Y0
bne .l1
jsr set_xres320
bra .end
.l1:
cmp #Y1
bne .l2
jsr set_xres512
bra .end
.l2:
.end:
inc <_y
rts
De toute façon le code de la demo de Chris est dispo
Sur pce il n'y a qu'une seule interruption (irq1) pour le hsync, le vsync et la fin transfert DMA (vram->satb ou vram->vram), et d'autres trucs. Il faut regarder les bits de $0000 pour savoir ce qui a claqué. Et en gros tu peux faire ça:
- Quand vsync claque: tu passes la resolution horizontale à 512 et tu lances le transfert DMA.
- Si la fin de transfert DMA claque et que le hsync n'a pas claqué c'est la fete.
- Si hsync claque: quoiqu'il arrive il faut retourner dans la resolution de base. L'affichage risque d'être affreux si le transfert n'est pas fini. Et faire du "double buffering" risque d'être tendu. Il faut connaitre les tiles affectées par le transfert DMA, et alterner les addresses. La meilleure solution reste de se débrouiller pour que le transfert se finisse avant le hsync.
Publié : ven. 08 août 2008 13:49
par dudule
eh vous quatres la c'est pour quand la prog en equipe ? cvous devriez nous pondre un truc nan ?

Publié : ven. 08 août 2008 14:07
par Luciole
En voyant tout ça j'ai eu à peu pres la même reflextion!
Vous devriez faire un bouquin "technique" NEC franchement!
