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


Voir le profil
Disciple Alekmaulo-Copperien !

« Réponse #105 : 27 Juin 2008, 10:23:07 »

je crois aussi.
Journalisée

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

(Coluche)
Ludo6431 Hors ligne
Administrateur
*****
Messages: 903


Voir le profil WWW
It flies !

« Réponse #106 : 27 Juin 2008, 10:26:03 »

Si, bien sûr, erreur d'inatention -_-'
Journalisée

Mon matériel : DS Lite blanche flashée v8 | DSi noire | SCLite | SCDS ONE v2 | SCDS TWO | DSerial EDGE | MK-R6 gold | rumble pack | R4(r4ds.cn) | M3i Zero | Acekard 2i | iTouch DS | CycloPS' iEvolution
Risike Hors ligne
Mega Member
***
Messages: 1387


Voir le profil
Disciple Alekmaulo-Copperien !

« Réponse #107 : 27 Juin 2008, 11:48:48 »

Bon j'ai un truc qui va pas Sad

Je déclare mes modes comme ça :
Code
(c):
videoSetMode(MODE_5_2D | DISPLAY_BG2_ACTIVE | DISPLAY_BG3_ACTIVE);
vramSetBankA(VRAM_A_MAIN_BG_0x06000000);
BLEND_CR = BLEND_ALPHA | BLEND_SRC_BG2 | BLEND_DST_BG3;
BLEND_AB = (8 << 8) | 8; /* 50% / 50% */
BG2_CR = BG_BMP8_256x256 | BG_BMP_BASE(0);
BG3_CR = BG_BMP8_256x256 | BG_BMP_BASE(0);
BG2_XDX = ((256 / 256) << 8 ) | ((256%256));
BG2_XDY = 0;
BG2_YDY = ((224 / 192) << 8 ) | (224%192);
BG2_YDX = 0;
BG3_XDX = ((256 / 256) << 8 ) | ((256%256));
BG3_XDY = 0;
BG3_YDY = ((224 / 192) << 8 ) | (224%192);
BG3_YDX = 0;
BG2_CX  = 0x40;
BG2_CY  = 0xc0;
BG3_CX  = 0xc0;
BG3_CY  = 0x40;
// PALETTE
   BG_PALETTE[0] = 0;
   BG_PALETTE[1] = 65535;
   BG_PALETTE[2] = 33760;
   BG_PALETTE[3] = 32799;
   BG_PALETTE[255] = 0;
 
 


Dans mon VBL handler je fais ça :

Code
(c):
u8 *out;
u8 *in;
 
(...)
 
BG2_XDX = ((256 / 256) << 8 ) | ((256%256));
BG2_XDY = 0;
BG2_YDY = ((224 / 192) << 8 ) | (224%192);
BG2_YDX = 0;
BG3_XDX = ((256 / 256) << 8 ) | ((256%256));
BG3_XDY = 0;
BG3_YDY = ((224 / 192) << 8 ) | (224%192);
BG3_YDX = 0;
BG2_CX  = 0x40;
BG2_CY  = 0xc0;
BG3_CX  = 0xc0;
BG3_CY  = 0x40;
out = (u8*)0x06000000;
in = ram+START_VRAM;
int k, j, i;
for(j=0; j<224; j++)
for(i=0; i<32; i++)
for(k=0; k<8; k++){
//out[j*256+i*8+k]=(in[j*32+i]&(1<<k))>>k;
out[j*256+i*8+k] = 1;
}
 
 


Mon écran devrait être tout blanc non ? Pourtant il reste noir...
Je vois pas d'où ça peut venir.
Journalisée

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

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


Voir le profil WWW
« Réponse #108 : 27 Juin 2008, 12:12:06 »

Ben c'est simple tu écris dans la mémoire vidéo octet par octet or il faut écrire par word, halfword...
Journalisée
Pouer Hors ligne
Hero Member
*****
Messages: 531


Voir le profil
Petit 1/2 en puissance :)

« Réponse #109 : 27 Juin 2008, 12:12:33 »

Tu comprend maintenant pourquoi je le fait pas sur ds  whistle
Journalisée

Copper Hors ligne
Mega Member
***
Messages: 1312


Voir le profil WWW
« Réponse #110 : 27 Juin 2008, 12:15:58 »

Bah avec une lookupTable le problème se pose pas on écrit 2 word à la suite ca marche très bien (et je pense que ca sera plus rapide mais bon)
« Dernière édition: 27 Juin 2008, 12:19:22 par Copper » Journalisée
Ludo6431 Hors ligne
Administrateur
*****
Messages: 903


Voir le profil WWW
It flies !

« Réponse #111 : 27 Juin 2008, 12:17:38 »

(et je pense que ca sera plus rapide mais bon)
C'est sûr Wink
Journalisée

Mon matériel : DS Lite blanche flashée v8 | DSi noire | SCLite | SCDS ONE v2 | SCDS TWO | DSerial EDGE | MK-R6 gold | rumble pack | R4(r4ds.cn) | M3i Zero | Acekard 2i | iTouch DS | CycloPS' iEvolution
Alekmaul Hors ligne
Papi codeur et
Administrateur
*****
Messages: 1404


Voir le profil WWW
Out of memory error ...

« Réponse #112 : 27 Juin 2008, 12:21:42 »

+1 pour Copper, l'écriture 32 bits dans la mémoire vidéo est le plus rapide, utilisé dans moulte et plétors de mes émulateurs.
Journalisée

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


Voir le profil
Disciple Alekmaulo-Copperien !

« Réponse #113 : 27 Juin 2008, 12:49:11 »

Pfff je sais plus quoi faire moi !
En fait ce que j'ai fait plante carrément l'émulateur... à mon avis j'écris pas où il faut dans la mémoire.

EDIT : je suis à un doigt de finir la partie graphismes et de passer à autre chose mais ça fait deux jour que je me prend la tête avec ce alpha-lerp...  Cry
« Dernière édition: 27 Juin 2008, 13:15:55 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 #114 : 27 Juin 2008, 14:28:43 »

bon alors j'arrive à faire le a-lerp en 16 bits en écrivant comme ceci :

Code
(c):
u16 * video_buffer = (u16*)BG_BMP_RAM(0);
value = ram[i]; // faster than RdZ80(...);
if(value & BIT_0) *video_buffer++ = RGB15(31,31,31) | BIT(15);
else *video_buffer++ = RGB15(0,0,0) | BIT(15);
if(value & BIT_1) *video_buffer++ = RGB15(31,31,31) | BIT(15);
else *video_buffer++ = RGB15(0,0,0) | BIT(15);
if(value & BIT_2) *video_buffer++ = RGB15(31,31,31) | BIT(15);
else *video_buffer++ = RGB15(0,0,0) | BIT(15);
if(value & BIT_3) *video_buffer++ = RGB15(31,31,31) | BIT(15);
else *video_buffer++ = RGB15(0,0,0) | BIT(15);
if(value & BIT_4) *video_buffer++ = RGB15(31,31,31) | BIT(15);
else *video_buffer++ = RGB15(0,0,0) | BIT(15);
if(value & BIT_5) *video_buffer++ = RGB15(31,31,31) | BIT(15);
else *video_buffer++ = RGB15(0,0,0) | BIT(15);
if(value & BIT_6) *video_buffer++ = RGB15(31,31,31) | BIT(15);
else *video_buffer++ = RGB15(0,0,0) | BIT(15);
if(value & BIT_7) *video_buffer++ = RGB15(31,31,31) | BIT(15);
else *video_buffer++ = RGB15(0,0,0) | BIT(15);
 


Par contre en mode 8 bits je sais pas comment faire pour que ça marche.



Journalisée

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

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


Voir le profil WWW
« Réponse #115 : 27 Juin 2008, 15:03:29 »

Ca marche pas le code que j'ai posté ?

http://www.dev-fr.org/index.php/topic,3485.msg31267.html#msg31267
Journalisée
Risike Hors ligne
Mega Member
***
Messages: 1387


Voir le profil
Disciple Alekmaulo-Copperien !

« Réponse #116 : 27 Juin 2008, 15:09:41 »

J'l'avais pô vu  Embarrassed désolé

J'essaierais. La je m'occupe de mes rotations et changement d'écrans et après je regarde.
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 #117 : 27 Juin 2008, 16:29:49 »

Petite question très intéressante :
Pourquoi doit-on redéfinir les registres des BG à chaque VBL en alpha-lerp ? Et pourquoi pas avec un simple scale hardware ?
Journalisée

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

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


Voir le profil WWW
« Réponse #118 : 27 Juin 2008, 16:32:11 »

C'est juste l'exemple qui est fait comme ca car il propose les différents modes à des fins de comparaison... Ce n'est pas du tout nécessaire
Journalisée
Risike Hors ligne
Mega Member
***
Messages: 1387


Voir le profil
Disciple Alekmaulo-Copperien !

« Réponse #119 : 27 Juin 2008, 16:44:41 »

Ahhh ok merci ! Vu que Ludo le faisait aussi je pensais que c'était indispensable et je pigeais plus rien.
Journalisée

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

(Coluche)
Pages: 1 ... 6 7 [8] 9 10 11   Haut de page
Imprimer

Aller à: