Pages: [1] 2 3 ... 11   Bas de page
Imprimer
Auteur Fil de discussion: Emulateur Space Invader  (Lu 25163 fois)
0 Membres et 1 Invité sur ce fil de discussion.
Risike Hors ligne
Mega Member
***
Messages: 1387


Voir le profil
Disciple Alekmaulo-Copperien !

« 19 Juin 2008, 18:21:32 »

Bon je vais essayer d'expliquer le truc, Mr Maul arrête moi si je me trompe.

En fait après avoir développé un émulateur Chip8 et un émulateur 6502 (juste le processeur) j'ai demandé au grand alekmaul, maitre dans le domaine quel émulateur développer qui soit plus compliqué et plus intéressant que le Chip8 mais faisable pour un débutant. Il 'a donc parlé de l'émulateur Space Invader (la grosse borne d'arcade).

Je lance donc ce topic pour que tout le monde puisse prendre part à la conversation et profiter des questions posées...etc

Tout ce qu'il faut savoir sur cet émulateur se trouve ici :
http://www.ascotti.org/programming/side

Le processeur peut être remplacé par un Z80 d'après alekmaul.

Perso j'ai donc commencé cet émulateur en utilisant une "librairie" déjà existante pour émuler le Z80.
http://fms.komkon.org/EMUL8/Z80-081707.zip


Bon moi j'en suis vraiment au début. J'ai chargé la rom en ram, j'ai commencé à créer les fonctions d'accès mémoire et de graphisme.

J'avais ouvert ce topic où il y a déjà pas mal de questions et de réponses :
http://www.dev-fr.org/index.php/topic,3479.0.html


Bon ben qui aime me suive.


J'espère qu'après ça on pourra passer à quelque chose d'encore plus intéressant !

Journalisée

Le travail y'en a pas beaucoup, faut le laisser à ceux qu'aiment ça !

(Coluche)
Pouer Hors ligne
Hero Member
*****
Messages: 531


Voir le profil
Petit 1/2 en puissance :)

« Réponse #1 : 19 Juin 2008, 18:49:42 »

Le processeur peut être remplacé par un Z80 d'après alekmaul.

En effet, Le Z80 a été conçu pour être compatible avec l'Intel 8080, et donc la majorité du code pour 8080 pouvait fonctionner sans modifications notables sur le Z80.

Après lecture de la doc, c'est vrai que ça n'a pas "l'air" si compliqué a émuler, par contre c'est l'usage de l'emulateur z80 qui est a voir Smiley
« Dernière édition: 19 Juin 2008, 19:00:14 par Pouer » Journalisée

Risike Hors ligne
Mega Member
***
Messages: 1387


Voir le profil
Disciple Alekmaulo-Copperien !

« Réponse #2 : 19 Juin 2008, 19:02:20 »

Ben c'est quasiment pas documenté mais j'ai déjà bien embêté alekmaul dans l'autre topic et y'a donc pas mal d'aide.
Journalisée

Le travail y'en a pas beaucoup, faut le laisser à ceux qu'aiment ça !

(Coluche)
Copper Hors ligne
Mega Member
***
Messages: 1296


Voir le profil
« Réponse #3 : 19 Juin 2008, 19:09:56 »

Dans le fichier hardware.htm y a quand même pas mal d'infos je trouve...

Par contre pour l'affichage c'est quoi ta stratégie sachant qu'il faut 256 lignes et 224 colonnes ?
Journalisée
Alekmaul Hors ligne
Papi codeur et
Administrateur
*****
Messages: 1403


Voir le profil WWW
Out of memory error ...

« Réponse #4 : 19 Juin 2008, 19:12:00 »

Le mieux, mode bitmap 8 bits en scaling sur 1 seul écran. Ca fait des plombes que l'on me tanne pour que j'utilise ce mode sur MarcaDS Wink
Journalisée

Mon site PortableDev : l'émulation sur GBA et sur DS
Copper Hors ligne
Mega Member
***
Messages: 1296


Voir le profil
« Réponse #5 : 19 Juin 2008, 19:17:30 »

Ouais je me demande si on pourrais pas utiliser le double écran et rediriger les scores et autres infos sur le deuxième écran... Faudrait voir le nombre de lignes utilisée par la zone du jeu...
Journalisée
Risike Hors ligne
Mega Member
***
Messages: 1387


Voir le profil
Disciple Alekmaulo-Copperien !

« Réponse #6 : 19 Juin 2008, 19:33:04 »

Je pense que je me poserais la question quand j'aurais réussi à faire tourner la ROM et afficher quelque chose à l'écran...
Journalisée

Le travail y'en a pas beaucoup, faut le laisser à ceux qu'aiment ça !

(Coluche)
Pouer Hors ligne
Hero Member
*****
Messages: 531


Voir le profil
Petit 1/2 en puissance :)

« Réponse #7 : 19 Juin 2008, 19:52:02 »

Techniquement c'est faisable Cheesy
Journalisée

Alekmaul Hors ligne
Papi codeur et
Administrateur
*****
Messages: 1403


Voir le profil WWW
Out of memory error ...

« Réponse #8 : 19 Juin 2008, 19:53:26 »

Couillon de Pouer, bien entendu que c'est faisable, MarcaDS le fait  whistle ...
Le but n'est pas de savoir si c'est faisable mais de titiller la veine "emulation" de Risike, et la, je pense que c'est le cas  Wink
Journalisée

Mon site PortableDev : l'émulation sur GBA et sur DS
Pouer Hors ligne
Hero Member
*****
Messages: 531


Voir le profil
Petit 1/2 en puissance :)

« Réponse #9 : 19 Juin 2008, 19:59:34 »

Heu tu parle bien de mettre les score sur un autre écran et de garder la zone de jeu sur l'autre Huh?
Journalisée

Alekmaul Hors ligne
Papi codeur et
Administrateur
*****
Messages: 1403


Voir le profil WWW
Out of memory error ...

« Réponse #10 : 19 Juin 2008, 20:26:58 »

Sans pb, que c'est faisable, de mettre sur 2 écrans les affichages. Le plus dur n'est pas de rediriger ce genre de chose mais d'émuler le jeu.
Sinon, si tu parlais de faire sur 2 écrans différents le score et le jeu, je retire ce que j'ai dis pour MarcaDS, moi, je n'émule que strictement le jeu, mon but n'était pas de jouer sur le graphisme de Space Invaders mais bien d'avoir l'identique de la version originale.
Journalisée

Mon site PortableDev : l'émulation sur GBA et sur DS
Copper Hors ligne
Mega Member
***
Messages: 1296


Voir le profil
« Réponse #11 : 19 Juin 2008, 23:08:50 »

Je me demande s'il n'est pas possible de simuler un écran monochrome avec des tiles de tel manière à ce qu'une simple copie de buffer (via dma) soit suffisante...

Bon ben c'est possible en fait...

Par contre ce lien est intéressant pour voir les différentes possibilité d'utilisation des écran de la ds pour le space invaders :

http://www.double.co.nz/nintendo_ds/space_invaders/index.html
« Dernière édition: 20 Juin 2008, 07:02:54 par Copper » Journalisée
Risike Hors ligne
Mega Member
***
Messages: 1387


Voir le profil
Disciple Alekmaulo-Copperien !

« Réponse #12 : 20 Juin 2008, 07:26:08 »

J'ai vu ce site. Mais perso je verrais ça quand mon CPU tournera sans problème...

Et actuellement j'ai un gros problème :
Voici le code de mon LooZ80 :
Code
(c):
word LoopZ80(register Z80 *R){
uint16 * framebuffer = VRAM_A;
int i, value;
for(i=0x2400; i<0x3FFF;i++){
value = RdZ80(i);
if (value & 0x80) *framebuffer++ = RGB15(31, 31, 31);
else *framebuffer++ = RGB15(0, 0, 0);
if (value & 0x40) *framebuffer++ = RGB15(31, 31, 31);
else *framebuffer++ = RGB15(0, 0, 0);
if (value & 0x10) *framebuffer++ = RGB15(31, 31, 31);
else *framebuffer++ = RGB15(0, 0, 0);
if (value & 0x08) *framebuffer++ = RGB15(31, 31, 31);
else *framebuffer++ = RGB15(0, 0, 0);
if (value & 0x04) *framebuffer++ = RGB15(31, 31, 31);
else *framebuffer++ = RGB15(0, 0, 0);
if (value & 0x02) *framebuffer++ = RGB15(31, 31, 31);
else *framebuffer++ = RGB15(0, 0, 0);
if (value & 0x01) *framebuffer++ = RGB15(31, 31, 31);
else *framebuffer++ = RGB15(0, 0, 0);
if (value & 0x00) *framebuffer++ = RGB15(31, 31, 31);
else *framebuffer++ = RGB15(0, 0, 0);
}
 
iprintf("%d\n", R->PC.W);
swiWaitForVBlank();
 
return INT_NONE;
}
 

Je sais c'est pas bon du tout je rafraichit à chaque lecture d'opcode et l'écran sera à 90° mais je cherche juste à afficher quelque chose pour voir que le processeur tourne sans problème.
J'affiche mon PC et étrangement il reste bloqué en adresse 1...
Mon RdZ80 et mon WrZ80 fonctionnent très bien. Il ils lisent et écrivent dans un tableau de bytes de la taille de la RAM de la machine.
« Dernière édition: 20 Juin 2008, 07:41:57 par Risike » Journalisée

Le travail y'en a pas beaucoup, faut le laisser à ceux qu'aiment ça !

(Coluche)
Risike Hors ligne
Mega Member
***
Messages: 1387


Voir le profil
Disciple Alekmaulo-Copperien !

« Réponse #13 : 20 Juin 2008, 09:09:44 »

Apparemment c'est le swiWaitForVBlank qui fait tout merder...
Journalisée

Le travail y'en a pas beaucoup, faut le laisser à ceux qu'aiment ça !

(Coluche)
Risike Hors ligne
Mega Member
***
Messages: 1387


Voir le profil
Disciple Alekmaulo-Copperien !

« Réponse #14 : 20 Juin 2008, 09:23:36 »

Bon alors maintenant il se mance mais il commence par 3 NOP et ensuite un JUMP en dehors de la RAM...
Est-ce ma ROM (que j'ai évidemment dumpé de ma borne d'arcade perso lol) qui merde ?
Journalisée

Le travail y'en a pas beaucoup, faut le laisser à ceux qu'aiment ça !

(Coluche)
Pages: [1] 2 3 ... 11   Haut de page
Imprimer

Aller à: