Matrix

Programmation d'applications complexes
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

1600x1400. !!!! il est fou !! :)

moi je suis en 1024x768 85 Hz

en 1600x1200 le max que je peut faire avec ma FX5700 ultra
sur mon moniteur 19 pouces avec un pitch 0.22 je vois plus rien !!! :(

verifiez si votre carte graphique gere le Vsync en hard !!
car les animations joue sur la desynchro naturel des moniteurs
j'ai fait ça avec la version 3.80 y pas de fonction "Vsync" dessus
Dernière modification par Backup le sam. 29/mai/2004 19:49, modifié 1 fois.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

bon Merci ça m'a permis d'arranger encore mieux ce programme
la je l'ai teste dans toutes les resolutions !!

chez moi ça marche de 800x600 jusqu'au 1600

dites moi maintenant si chez vous ça roule ??

Code : Tout sélectionner

; Matrix Cree Par Dobro
Dim ysprite(1000)
Dim de(1000)
Dim nom$(30)
Dim index(30)

Dim y(30)
sprite=1
#Police=1
;*********** pour le screensaver
Param.s = Left(ProgramParameter(), 2)
If Param = "/p"
    End
EndIf
GetCursorPos_(SourisOrigine.POINT)
ShowCursor_(0)
; ***********************************
Resultat = InitSprite()
FontID = LoadFont(#Police, "arial", 18, #PB_Font_Bold )
EcranX = GetSystemMetrics_(#SM_CXSCREEN)
EcranY = GetSystemMetrics_(#SM_CYSCREEN)
;NbSprite = EcranX / 40 * 3
NbSprite =12
OpenWindow(1, 0, 0, EcranX, EcranY, #PB_Window_BorderLess | #PB_Window_Invisible, "Matrix")
SetWindowPos_(WindowID(), -1, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE) ; fenêtre toujours au premier plan
OpenWindowedScreen(WindowID(), 0, 0, EcranX, EcranY, 1, 0, 0)
nom$(1)="h,o,g,o,f,g,h,6,+,8,3,5,f,s,g,4,6,8,4,3,f,s,*,g,°"
nom$(2)="D,O,L,N,R,H,D,F,G,J,K,L,H,G,F,.,/,M,P,%,M,L,*,K,°"
nom$(3)="E,B,I,C,E,E,R,T,I,U,T,K,G,S,M,K,M,O,S,G,J,S,*,O,°"
nom$(4)="D,R,V,O,D,d,f,g,d,d,f,g,d,x,v,c,b,,,u,r,y,z,*,r,°"
nom$(5)=":,O,:,N,D,q,d,y,e,p,o,x,c,b,:,;,z,e,z,e,t,w,*,x,°"
nom$(6)="P,:,E,U,I,:,:,F,G,H,O,G,K,B,¨,B,J,K,S,G,?,S,*,D,°"
nom$(7)="O,R,L,:,X,:,e,t,i,u,t, ,p,t,z,u,r,z,t,_,ç,e,*,r,°"
nom$(8)="L,O,:,D,D,H,I,9,U,R,:,0,8,9,T,Z,R,T,P,R, ,P,*,Z,°"
nom$(9)="U,U,C,E,D,m,s,k,l,d,f,m,p,ç,o,r,j,t,m,z,g,j,*,s,°"
nom$(10)="X,Q,H,N,R,o,o,h,s,r,f,i,h,s,r,f,g,i,h, ,d,f,*,h,°"
nom$(11)="g,U,l,O,I,F,D,O,I,H,F,B,L,K, ,%,P,I,J,3,5, ,*,0,°"
nom$(12)="A,I,u,N,S,D,F,O,0,8,R,G,%,I,R,E,H,P,9,H,P,9,*,O,°"
nom$(13)="R,E,k,I,:,R,G,D,H,O,I,F,D,B,O,%,I, ,V,B,P,Z,*,Q,°"
nom$(14)="T,R,k,:,F,I,O,I,:,X,N,F,B, ,F,B,D,O,P,I,D,F,*,B,°"
nom$(15)="E, ,k,J,L, ,H,R,F,T,J,D,G,N, ,X,F,J,E,<,<,S,*,F,°"
nom$(16)="M,C,k,E,Y,K,Y,R,J,S,R,F,?,N,F,G,W,F,P,G,K, ,*,W,°"
nom$(17)="I,H,k,N,P,A,£,¨,M,£,¨,M,F,G,J,X,W,F,G,J,X,F,*,G,°"
nom$(18)="S,R,k,O,E,R,T,D, ,H,I,J, ,I,E,J,H,Q,P,E,T,H,*,J,°"
nom$(19)=" ,I,k,V, ,K,E,R,P,9,I,E,Q,R,P,Q, ,E,U,R,P, ,*,H,°"
nom$(20)="C,S,k,A,H,O,E,R, ,Q,R,Y,U, ,Q,Ë,0,9,U,Q, ,E,*,0,°"
nom$(21)="O, ,k, ,E,X,E,R,Y, ,Q,E,R,Y, ,Q,E,R,Y,Q,E,R,*,P,°"
nom$(22)="M,Z,k,L,I, ,E,R,Y,Q,E,R,Y,P,S,E,U,S,%,P,E,Y,*,9,°"
nom$(23)="T,A,k,E,S,T,S,R,E,T,S,T,R,U,Y,S,R,T,P,U,I,S,*,R,°"
nom$(24)="O,P,k, ,S,Y,S,R,U,S,R,T,U,S,R,T,U,S,R,T,U,9,*,S,°"
nom$(25)="I,M,k,S,P,U,5,S,R,¨,0,8,U, ,Q,R,Y,E,0,5,4,5,*,Y,°"
nom$(26)="S,A,k,O,I,I,R,S,U,S,R,Y,U,2,5,4,3,2,6,5,3,S,*,Y,°"
nom$(27)=" ,N,k,L,T,R,E,R,Y,Q,E,R,z,I,Q,E,4,Y,Q,E,T,+,*,R,°"
nom$(28)="8,u,k,D,E,S,E,R,Q,Y,P,9,8,Z,E,a,T,8,3,Q, ,8,*,U,°"
nom$(29)="8,o,k,A,R,G,E,5,Q,E,5,z,Y,8,U,E,R,Z,¨,0,U,3,*,4,°"
nom$(30)="8,f,k,T,s,D,E,5,Y,3,5,Q,8,Q,Z,R,¨,8,E,5,Q,0,*,9,°"
; le caractere ° signifie la fin de la phrase il est indispensable
; le caractere * est mis en avant derniere position
; c'est lui qui indique que le caractere suivant sera plus clair 
; on crée un sprite
For spr=1 To 30
    ;CallDebugger
    Resultat = CreateSprite(spr, 24,27*Len(nom$(spr)),0)
    While StringField(nom$(spr), index(spr), ",")<>"°":;on guette le caractere ° qui dira que la phrase est fini d'explorer en attendant on boucle
        index(spr)=index(spr)+1 :;on avance d'un caractere
        car$ = StringField(nom$(spr), index(spr), ","):;ici je recupere les caracteres entre les virgules
        y(spr)=y(spr)+27:; pour que le text s'ecrive une ligne au dessous dans le sprite
        StartDrawing(SpriteOutput(spr)):;on commence a dessiner dans le sprite SPR
        BackColor(0, 0,0):;couleur de fond noir
        c = c +Int(255/Len(nom$(spr)))+4 :; on eclaircie la couleur d'ecriture!!
        If c>255:c=0:EndIf:; si on depasse 255 (verta fond) on ramene a 20 (vert sombre)
        If car$ = "°":; ha on tombe sur le caractere de fin de phrase
            c = 0 :; on fixe la couleur a 20 (vert sombre)
            Goto fi :;on ne dessine pas le dernier caractere de controle
        EndIf 
        ;c=255
        FrontColor(0, c, 0): ;on prend la couleur defini plus haut pour dessiner
        If car$ = "*" : ; ha le caractere qui nous indique un changement de couleur
            index(spr)=index(spr)+1:;on passe le caractere * (on veut pas l'afficher c'est un caractere de control)
            car$ = StringField(nom$(spr), index(spr), ","):;on recupere le caractere suivant l'etoile
            FrontColor(110, 255,110): ;on choisi une couleur verte presque blanche 
        EndIf 
        Locate(0, y(spr)):;ceci pose le crayon au bonne endroit (une ligne en dessous) comme indique plus haut
        DrawingFont(FontID):;attention on va ecrire du text sur la zone reserve du sprite
        DrawText(car$):; voila on le fait
        fi:
        long = TextLength(nom$(1))
        StopDrawing():; signale que l'on arrete de dessiner sur le sprite SPR
    Wend
Next spr
;ceci prepare les colonne qui vont etre solicite pour l'affichage, un "precalcul" en fait
xrez=Int(EcranX/27)
 Dim col(xrez)

For t=1 To EcranX Step 27
    
    col(h)=t
    h+1
    du:
   
Next t

;***********************************
indexc=0

For ind=1 To xrez :;correspond au nombre de colonne (en 1024)
    ysprite(ind)=-(long*2)-Random(long*4):; tire au hazard une ligne pourle depart d"un sprite
    If col<>EcranX :; tant que la valeur lu est differente de la rez ecran en x
        indexc=indexc+1 :
         de(ind)=col(ind)
         ;If carcol$=""
        ;    de(ind)=27
        ;EndIf
    Else
        indexc=0
    EndIf
Next ind
indexc=0
Repeat
    RandomSeed(Random(255))
    For ind=1 To xrez
        ; si le sprite sort en bas
        If ysprite(ind)>EcranY
            ysprite(ind)=-(2+long*2)-Random(long*2)
        EndIf
        ; toute l'astuce de l'animation est la !!
        spr=spr+1
        If spr>30:; on affiche les sprite en decalant une lettre !!
            spr=1
        EndIf
        ysprite(ind)=ysprite(ind)+Random(10)+10:; vitesse de descente des sprites
        ;DisplayTransparentSprite (spr, de(ind), ysprite(ind))
        DisplaySprite(spr, de(ind), ysprite(ind)) 
        ;Delay(4)
    Next ind
    FlipBuffers()
    ClearScreen(0,0,0)
    GetCursorPos_(Souris.POINT)
Until WindowEvent() = #PB_Event_CloseWindow Or Souris\x <> SourisOrigine\x Or Souris\y <> SourisOrigine\y
ShowCursor_(1)
Dernière modification par Backup le dim. 30/mai/2004 0:26, modifié 1 fois.
Lukky
Messages : 340
Inscription : dim. 25/janv./2004 12:22
Localisation : Morbihan

Message par Lukky »

Bon alors déjà, l'excès de Chouchen nuit car je suis en 1600x1200 et j'ai au moins un 19, voir un 21 je sais plus avec un pitch raz des paquerettes.

Sinon, maintenant ça marche impec, bravo.

Bon si sous la torture on m'obligeais a donner mon avis je dirais que la descente des caractères manque de foultitude, un peu trop vagueux et pas assez fournissé.

J'essaie d'être le plus précis possible mais c'est pas facilement aisé !

JL
Quand on me gonfle trop j'éclate, sinon ça va !
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Message par cederavic »

ah la ça marche :)
Aranoth
Messages : 293
Inscription : sam. 24/janv./2004 12:00
Localisation : Toulouse (31)
Contact :

Message par Aranoth »

géant :D
Débutant en programmation, notament en C++ ?
Vous souhaitez apprendre ?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Lukky a écrit :Bon si sous la torture on m'obligeais a donner mon avis je dirais que la descente des caractères manque de foultitude, un peu trop vagueux et pas assez fournissé.

J'essaie d'être le plus précis possible mais c'est pas facilement aisé !

JL
:D


@lukky Merci pour tes critiques constructive :D
je vais voir pour augmenter les sprites mais tu sais je regarde la bande video de l'intro du film ,il n'y a pas tant de colonnes que ça !! :)

mais a ton avis pourquoi ai-je mis le source sur le forum ???
vas y lache toi !! reprend le concept et ameliore le ce listing
est pour la comunauté Purebasic !! , donc par extention a toi :D
merci encore pour votre attention car sans vous j'aurai pas cherché plus loin ,pour l'arranger .. :D

@cederavic (sans K) :D (je l'ecrivai souvent avec un k a la fin ton pseudo
et le soldat ma tiré les oreilles y a pas longtemp pour ça !! :D
Merci aussi a toi pour l'alerte donné . :)

@aranoth : content que ça te plaise ! Merci :D


heu je viens de me rendre compte que ça marche pas du tout sur win98
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Message par cederavic »

[quote="Dobro@cederavic (sans K) :D (je l'ecrivai souvent avec un k a la fin ton pseudo
et le soldat ma tiré les oreilles y a pas longtemp pour ça !! :D
[/quote]

bouerf, encor tu aurai ecris CédricK, là j'aurrai réagis mais bon, cederavic c'est juste un pseudo alors... pi tant que je sai que tu t'adresse a moi, je vais pas chercher la ptite bete :lol: sinon, ce que je propose c'est que l'on vois les pseudo s'afficher de temps en temps a l'ecran en surbrilliant, pas claire, je vai essayer de faire ça, tu comprendra surement mieu :)
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Message par cederavic »

bon j'ai carrement tout recoder, voilas ce que ça donne :

Code : Tout sélectionner

InitSprite()
InitMouse()
InitKeyboard()

Structure col
  y.l
  v.l
  len.l
  o.b
EndStructure

Structure colp
  chr.s
  ok.b
EndStructure

Declare init()

OpenScreen(800, 600, 32, "Pure Matrix")

Dim col.col(50)
Dim colp.colp(50)
Dim pseudo.s(127)

For t = 0 To 50
  col(t)\y = Random(800) - 800
  col(t)\v = Random(2) + 4
  col(t)\len = Random(100) + 300
Next

init()

lp.s = UCase(pseudo(0))
plen = Len(lp)

sp = 25 - plen / 2

For x = 0 To 50
  colp(x)\chr = ""
  colp(x)\ok = 1
Next

For xp = sp To sp + plen - 1
  k + 1
  chr.s = Mid(lp, k, 1)
  colp(xp)\chr = chr
  colp(xp)\ok = 0
Next



Repeat

  ExamineKeyboard()
  ExamineMouse()

  ClearScreen(16, 16, 16)

  
  StartDrawing(ScreenOutput())
    For x = 0 To 50
      
      col(x)\y + col(x)\v 
      
      cy = col(x)\y
      len = col(x)\len 

      If cy > 600
        col(x)\y = Random(600) - 1200
        col(x)\v = Random(2) + 4
        col(x)\len = Random(100) + 300
      EndIf
      
      For y = cy To cy + len Step 16
        
        DrawingMode(1)
        Locate(x * 16, y)
        If y > cy + len - 16
          r = 60
          g = 255
          b = 120
          fc = 1
        Else
          r = 0
          g = ((y - cy) * 100 / len) * 2 + 32
          b = 0
        EndIf
        FrontColor(r, g, b)
        chr.s = UCase(Chr(Random(255)))
        
        DrawText(chr)
        
        If y >= 18 * 16 And y <= 19 * 16 And chr = colp(x)\chr
          colp(x)\ok = 1
        EndIf
          
        
      Next
    
    Next
    
    ookp = okp
    okp = 1
    
    For x = 0 To 50
      Locate(x * 16, 18 * 16)
      FrontColor(120, 255, 150)
      DrawingMode(1)
      If colp(x)\ok = 1
        DrawText(colp(x)\chr)
      Else
        okp = 0
      EndIf
    Next
    
    If okp = 1
      If ookp = 0
        st = GetTickCount_()
      EndIf
      st2 = GetTickCount_() - st
      If st2 > 2000
      
      cp + 1
      If cp > 127 : cp = 0 : EndIf
      lp.s = UCase(pseudo(cp))
      plen = Len(lp)

      sp = 25 - plen / 2

      For x = 0 To 50
        colp(x)\chr = ""
        colp(x)\ok = 1
      Next
      
      k = 0
      
      For xp = sp To sp + plen - 1
        k + 1
        chr.s = Mid(lp, k, 1)
        colp(xp)\chr = chr
        colp(xp)\ok = 0
      Next
      
      EndIf
    EndIf
    
  StopDrawing()
  
  FlipBuffers()
  
  If MouseDeltaX() Or MouseDeltaY() Or MouseWheel() Or KeyboardPushed(#PB_Key_All) Or IsScreenActive() = 0
    Quit = #TRUE
  EndIf
  
Until Quit

End

Procedure init()
  pseudo(0) = "Fred" 
  pseudo(1) = "Polux" 
  pseudo(2) = "Artemis" 
  pseudo(3) = "comtois" 
  pseudo(4) = "yukin" 
  pseudo(5) = "Patrick88" 
  pseudo(6) = "Oliv" 
  pseudo(7) = "Vyc" 
  pseudo(8) = "Keph" 
  pseudo(9) = "hackotedelaplaque" 
  pseudo(10) = "Cinderella" 
  pseudo(11) = "filperj" 
  pseudo(12) = "MacRain" 
  pseudo(13) = "Bernard" 
  pseudo(14) = "Denis" 
  pseudo(15) = "Snooze" 
  pseudo(16) = "Marcus" 
  pseudo(17) = "Dr. Dri" 
  pseudo(18) = "T€r$@k€n" 
  pseudo(19) = "melysoph" 
  pseudo(20) = "Pierre" 
  pseudo(21) = "Aranoth" 
  pseudo(22) = "Ombres" 
  pseudo(23) = "Chris" 
  pseudo(24) = "gaut" 
  pseudo(25) = "leoneo" 
  pseudo(26) = "Lukky" 
  pseudo(27) = "virtualys" 
  pseudo(28) = "Paneric" 
  pseudo(29) = "hteamspy" 
  pseudo(30) = "Jacqueline ZITO" 
  pseudo(31) = "DEF" 
  pseudo(32) = "brossden" 
  pseudo(33) = "---fred---" 
  pseudo(34) = "Crystal Noir" 
  pseudo(35) = "cookie" 
  pseudo(36) = "Heis Spiter" 
  pseudo(37) = "Le Soldat Inconnu" 
  pseudo(38) = "Flype" 
  pseudo(39) = "pg" 
  pseudo(40) = "Marc" 
  pseudo(41) = "julien" 
  pseudo(42) = "Berikco" 
  pseudo(43) = "TnPz" 
  pseudo(44) = "Dionyzos" 
  pseudo(45) = "killer7" 
  pseudo(46) = "Nadrak" 
  pseudo(47) = "philipus25110" 
  pseudo(48) = "freddix" 
  pseudo(49) = "remram44" 
  pseudo(50) = "cederavic" 
  pseudo(51) = "Orlanth" 
  pseudo(52) = "Guimauve" 
  pseudo(53) = "TEALC" 
  pseudo(54) = "nico" 
  pseudo(55) = "ZapMan" 
  pseudo(56) = "we7theboss" 
  pseudo(57) = "Jacques Stopinski" 
  pseudo(58) = "rollmops" 
  pseudo(59) = "clauded07" 
  pseudo(60) = "mgou" 
  pseudo(61) = "[JB]" 
  pseudo(62) = "ToX-007" 
  pseudo(63) = "Syszz" 
  pseudo(64) = "CORBASE" 
  pseudo(65) = "gansta93" 
  pseudo(66) = "Fiwip" 
  pseudo(67) = "KarLKoX" 
  pseudo(68) = "Yoop" 
  pseudo(69) = "patmaba" 
  pseudo(70) = "El_Choni" 
  pseudo(71) = "Jenova" 
  pseudo(72) = "Nells" 
  pseudo(73) = "france" 
  pseudo(74) = "newzig" 
  pseudo(75) = "Baka" 
  pseudo(76) = "flo" 
  pseudo(77) = "KiWin" 
  pseudo(78) = "Yves Rouquier" 
  pseudo(79) = "lionel_om" 
  pseudo(80) = "trikar" 
  pseudo(81) = "erix14" 
  pseudo(82) = "vanago" 
  pseudo(83) = "lazy" 
  pseudo(84) = "LavaLava" 
  pseudo(85) = "Silver" 
  pseudo(86) = "Necra" 
  pseudo(87) = "Jacobus" 
  pseudo(88) = "Sammael" 
  pseudo(89) = "aby56" 
  pseudo(90) = "Jean-Paul" 
  pseudo(91) = "thedoorp" 
  pseudo(92) = "sobriquet" 
  pseudo(93) = "le_pro_du_pure" 
  pseudo(94) = "gilles robert" 
  pseudo(95) = "CARTER" 
  pseudo(96) = "Patrick" 
  pseudo(97) = "chronomancien" 
  pseudo(98) = "jbernard13" 
  pseudo(99) = "blue" 
  pseudo(100) = "Mickey" 
  pseudo(101) = "Good07" 
  pseudo(102) = "RemyX" 
  pseudo(103) = "titimoby" 
  pseudo(104) = "Heero" 
  pseudo(105) = "Creepy" 
  pseudo(106) = "Dobro" 
  pseudo(107) = "jblaise.cs" 
  pseudo(108) = "DominiqueB" 
  pseudo(109) = "bugrane" 
  pseudo(110) = "pierre the noob of of bas" 
  pseudo(111) = "blackrock" 
  pseudo(112) = "rYn0" 
  pseudo(113) = "LE_Bassiste_Atitré" 
  pseudo(114) = "NoT" 
  pseudo(115) = "Yam" 
  pseudo(116) = "fweil" 
  pseudo(117) = "YourHead[^_-]" 
  pseudo(118) = "Galen" 
  pseudo(119) = "LOULOU25" 
  pseudo(120) = "micke" 
  pseudo(121) = "charly" 
  pseudo(122) = "garzul" 
  pseudo(123) = "Bloutiouf" 
  pseudo(124) = "DarkDragon" 
  pseudo(125) = "nemo" 
  pseudo(126) = "gillespeyrin" 
  pseudo(127) = "yann64"
EndProcedure
je n'affiche qu'un pseudo, sa serai bien si il y en a plusieur qui s'affiche, je vous laisse faire :P
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Merci !

faudra vraiment que je me mette au structure moi ça fait quand meme un code plus court !! :D
bravo a toi belle leçon d'optimisation de code :D
pour les pseudo ,je vais repiquer ton idée mais l'adapter a mon code
je garde le tiens comme exemple a suivre , mais la tout de suite ,j'y comprend rien !! :D trop fort .. je vais essayer de me mettre au structure :)
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Message par cederavic »

ça sert enormement les structure!!! ;)
bon si j'ai un pti moment, je te le commente, en atendant, ceux qui le veulent tout fait en ecran de veille, il est dispo sur mon site :)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

.................
Dernière modification par Backup le mer. 28/sept./2011 9:36, modifié 1 fois.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

.............
Dernière modification par Backup le mer. 28/sept./2011 9:38, modifié 1 fois.
YourHead[^_-]
Messages : 10
Inscription : lun. 17/mai/2004 11:28

Message par YourHead[^_-] »

:wink: Tout simplement génial mais bon ma préférence va quand meme au code du soldat qui est je toruve très nice graphiquemenet , emem si celle de ced et de toi dobro sont superbe !
ShinixAngel[*-*] The nighT power For EvERZ
Why the life isn't more easy ? Because the life is a long way !
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Message par cederavic »

celle de regis, perso je la rtouve bof, on voi plus rien avec le blur...
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

rabbat joie :lol:
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Répondre