Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SNES : CALCULER/FIXER LE CHECKSUM + LIRE/EDITER LE HEADER D'UNE ROM SUPER FAMICOM (SUPER NINTENDO / SUPER NES)


Information sur la source

Catégorie :Divers Source .NET ( DotNet ) Classé sous : snes, nintendo, famicom, emulateur, rom Niveau : Initié Date de création : 20/09/2004 Date de mise à jour : 22/07/2007 22:38:12 Vu / téléchargé: 9 498 / 236

Note :
Aucune note

Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
Hey hey.
Ce petit outil permet de calculer et fixer les bad checksum de vos roms sfc (eviter donc les "checksum: failed" de zsnes),
mais aussi lire, et modifier les informations qui se trouvent dans le header de la rom comme le nom du jeu (affiché par les emulateurs lorsque vous lancez un jeu),
la taille de la rom, l'editeur, le type de sauvegarde, le type de rom lui meme, etc etc).
Il permet enfin d'ajouter ou de supprimer le 512Header au debut des fichiers rom snes et de lister dans un fichier texte les infos de toutes les roms d'un dossier.
Je voulais mettre ce programme depuis longtemps puis comme d'hab j'ai arreté le projet (il etait devenu
un frontend pour zsnes et snes9x).
Mais etant donné que je trouve cette partie de code plus qu'interessante, je la met a disposition.
L'algo de calcul du checksum est un portage d'un code en C trouvé sur le net il y a longtemps (quand je ne comprenais pas
encore ce que c'etait... ^^)... mais je ne trouve plus la source :( Desolé pour l'auteur.
Ensuite la liste des editeurs vient de l'excellente doc "SNES KART" qui m'a beaucoup aidé pour pas mal de corrections.
Voila voila, j'espere que certains y verront une utilité (le programme vise, il est vrai, une minorité de gens... les FANS de la sfc  qui
en plus, ont le framework .net v1.1 ... lol =D )
voyez le zip pour un exemple d'utilisation de la classe de calcul.
En esperant voir quelques commentaires.

EDIT :
Vous pouvez trouver le fichier executable compilé sur http://batto.online.fr/Roms/HbSnesToolsv0.9.zip
 

Source

  • Imports System.IO
  • Public Class checksumcalc
  • Public formz1 As Form1
  • Public resultstrz As String
  • Const LO_ROM = 0
  • Const HIGH_ROM = 1
  • Const NUMB_VALUES = 39
  • Const LOROM_BANKSIZE = 32768
  • Const TRUEz = 1
  • Const FALSEz = 0
  • Const ARG_NUMB = 3
  • Const ROM_NAME_LOROM_ADDR = 33216
  • Const ROM_NAME_HIROM_ADDR = 65984
  • Const REVERSE_CHKSM_ADDR_LOROM = 33244
  • Const CHKSM_ADDR_LOROM = 33246
  • Const REVERSE_CHKSM_ADDR_HIROM = 66012
  • Const CHKSM_ADDR_HIROM = 66014
  • Const CPL_VALUE = &HFFFF&
  • Const SIZE_HEADER = 512
  • Const SMALL_SIZE = 1049088
  • Const MAJOR_SIZE = 2097664
  • Const MAX_SIZE = 4194816
  • Public rom As String
  • Public TailleFichier, TypeRom, Correction, Is512Header As Long
  • Public RomChecksum As Integer
  • Public ChecksumCpl As Integer
  • Public RealChecksum As Integer
  • Public tmpromchecksum As String
  • Public tmpchecksumcpl As String
  • Public romname As String
  • Public romtype As String
  • Public romsram As Integer
  • Public romvideo As Integer
  • Public romlicense As Integer
  • Public romversion As Integer
  • Public rommakeup As Integer
  • Public romsizeinrom As Integer
  • Dim titre As String = "Batto checksum algorithm"
  • Public Function DefineTypeRom() As Integer
  • 'defini le type de rom
  • Dim tmpb As Boolean = False
  • Dim n As Integer
  • For n = 0 To 38
  • If StandardSizes(n).size = TailleFichier Then
  • tmpb = True
  • Exit For
  • End If
  • Next
  • tmpromchecksum = Convert.ToString(CLng(F_array(REVERSE_CHKSM_ADDR_HIROM - Correction + 1)), 16).PadLeft(2, "0") & Convert.ToString(CLng(F_array(REVERSE_CHKSM_ADDR_HIROM - Correction)), 16).PadLeft(2, "0")
  • If tmpromchecksum = "0000" Then
  • ChecksumCpl = 0
  • Else
  • ChecksumCpl = Convert.ToInt64(tmpromchecksum, 16)
  • End If
  • tmpchecksumcpl += Convert.ToString(CLng(F_array(REVERSE_CHKSM_ADDR_HIROM - Correction + 3)), 16).PadLeft(2, "0") & Convert.ToString(CLng(F_array(REVERSE_CHKSM_ADDR_HIROM - Correction + 2)), 16).PadLeft(2, "0")
  • RomChecksum = Convert.ToInt64(tmpchecksumcpl, 16)
  • If (RomChecksum + ChecksumCpl) = CPL_VALUE Then Return HIGH_ROM Else Return LO_ROM
  • If tmpb = True Then
  • Return LO_ROM
  • Else
  • End If
  • End Function
  • Sub GetRomInfos()
  • 'on lit les infos contenues dans la rom et on place les offsets dans le tableau offsetz
  • Dim seekint As Integer
  • Dim n As Integer
  • Select Case TypeRom
  • Case LO_ROM
  • seekint = ROM_NAME_LOROM_ADDR - Correction
  • offsetz(0) = seekint
  • For n = 0 To 20
  • romname += Chr(F_array(seekint + n))
  • Next
  • offsetz(1) = seekint + 22
  • romtype = F_array(seekint + 22)
  • offsetz(2) = seekint + 24
  • romsram = F_array(seekint + 24)
  • offsetz(3) = seekint + 25
  • romvideo = F_array(seekint + 25)
  • offsetz(4) = seekint + 26
  • romlicense = F_array(seekint + 26)
  • offsetz(5) = seekint + 27
  • romversion = F_array(seekint + 27)
  • rommakeup = F_array(seekint + 21)
  • offsetz(6) = seekint + 21
  • romsizeinrom = F_array(seekint + 23)
  • offsetz(7) = seekint + 23
  • seekint = REVERSE_CHKSM_ADDR_LOROM - Correction
  • tmpchecksumcpl = Convert.ToString(CLng(F_array(seekint + 1)), 16).PadLeft(2, "0") & Convert.ToString(CLng(F_array(seekint)), 16).PadLeft(2, "0")
  • ChecksumCpl = Convert.ToInt64(tmpchecksumcpl, 16)
  • tmpromchecksum = Convert.ToString(CLng(F_array(seekint + 3)), 16).PadLeft(2, "0") & Convert.ToString(CLng(F_array(seekint + 2)), 16).PadLeft(2, "0")
  • RomChecksum = Convert.ToInt64(tmpromchecksum, 16)
  • Case HIGH_ROM
  • seekint = ROM_NAME_HIROM_ADDR - Correction
  • offsetz(0) = seekint
  • For n = 0 To 20
  • romname += Chr(F_array(seekint + n))
  • Next
  • rommakeup = F_array(seekint + 21)
  • romtype = F_array(seekint + 22)
  • romsizeinrom = F_array(seekint + 23)
  • romsram = F_array(seekint + 24)
  • romvideo = F_array(seekint + 25)
  • romlicense = F_array(seekint + 26)
  • romversion = F_array(seekint + 27)
  • offsetz(1) = seekint + 22
  • offsetz(2) = seekint + 24
  • offsetz(3) = seekint + 25
  • offsetz(4) = seekint + 26
  • offsetz(5) = seekint + 27
  • offsetz(6) = seekint + 21
  • offsetz(7) = seekint + 23
  • seekint = REVERSE_CHKSM_ADDR_HIROM - Correction
  • tmpchecksumcpl = ""
  • tmpromchecksum = ""
  • tmpchecksumcpl = Convert.ToString(CLng(F_array(seekint + 1)), 16).PadLeft(2, "0") & Convert.ToString(CLng(F_array(seekint)), 16).PadLeft(2, "0")
  • ChecksumCpl = Convert.ToInt64(tmpchecksumcpl, 16) 's
  • tmpromchecksum = Convert.ToString(CLng(F_array(seekint + 3)), 16).PadLeft(2, "0") & Convert.ToString(CLng(F_array(seekint + 2)), 16).PadLeft(2, "0")
  • RomChecksum = Convert.ToInt64(tmpromchecksum, 16)
  • End Select
  • End Sub
  • Public Function analyse_rom() As Boolean
  • 'verifie que la rom est une roms snes par sa taille, avec ou sans headers
  • Dim lenfile As Integer = FileLen(rom)
  • hbread = New BinaryReader(File.OpenRead(rom))
  • '-1 back
  • ReDim F_array(lenfile) ' - 1)
  • hbread.Read(F_array, 0, lenfile)
  • hbread.BaseStream.Flush()
  • hbread.Close()
  • Dim seekint As Integer
  • Dim n As Integer
  • Dim i As Integer
  • TailleFichier = F_array.GetUpperBound(0) '+1
  • For i = 0 To NUMB_VALUES - 1
  • If StandardSizes(i).size = TailleFichier Then
  • InfosRom = StandardSizes(i)
  • Correction = 0
  • Is512Header = True
  • Exit For
  • ElseIf StandardSizes(i).size - SIZE_HEADER = TailleFichier Then
  • InfosRom = StandardSizes(i)
  • Correction = SIZE_HEADER
  • Is512Header = False
  • Exit For
  • End If
  • Next
  • If i = NUMB_VALUES Then Return False
  • TypeRom = DefineTypeRom()
  • GetRomInfos()
  • Return True
  • End Function
  • Sub CalculChecksum(ByVal TypeAlgo As Integer)
  • 'calcul le checksum selon le type d'algo defini en argument
  • Dim bytez As Long
  • Dim rompart1 As Integer = 0
  • Dim seekint As Integer
  • Dim n As Integer
  • Dim tmprealchecksum As String
  • RealChecksum = 0
  • Select Case TypeAlgo
  • Case 1
  • seekint = SIZE_HEADER - Correction
  • For n = seekint To F_array.GetUpperBound(0)
  • bytez = F_array(n)
  • RealChecksum += Int(bytez)
  • Next
  • Case 2
  • seekint = SIZE_HEADER - Correction
  • For n = seekint To F_array.GetUpperBound(0)
  • bytez = F_array(n)
  • RealChecksum += bytez
  • Next
  • seekint = SMALL_SIZE - Correction
  • For n = seekint To F_array.GetUpperBound(0)
  • rompart1 += F_array(n)
  • Next
  • RealChecksum -= rompart1
  • RealChecksum += rompart1 * 4
  • Case 3
  • seekint = SIZE_HEADER - Correction
  • For n = seekint To F_array.GetUpperBound(0)
  • bytez = F_array(n)
  • RealChecksum += bytez
  • Next
  • seekint = SMALL_SIZE - Correction
  • For n = seekint To F_array.GetUpperBound(0)
  • rompart1 += F_array(n)
  • Next
  • RealChecksum -= rompart1
  • RealChecksum += rompart1 * 2
  • Case 4
  • seekint = SIZE_HEADER - Correction
  • For n = seekint To F_array.GetUpperBound(0)
  • bytez = F_array(n)
  • RealChecksum += bytez
  • Next
  • seekint = MAJOR_SIZE - Correction
  • For n = seekint To F_array.GetUpperBound(0)
  • rompart1 += F_array(n)
  • Next
  • RealChecksum -= rompart1
  • RealChecksum += rompart1 * 4
  • Case 5
  • seekint = SIZE_HEADER - Correction
  • For n = seekint To F_array.GetUpperBound(0)
  • bytez = F_array(n)
  • RealChecksum += bytez
  • Next
  • seekint = MAJOR_SIZE - Correction
  • For n = seekint To F_array.GetUpperBound(0)
  • rompart1 += F_array(n)
  • Next
  • RealChecksum -= rompart1
  • RealChecksum += rompart1 * 2
  • Case 6
  • seekint = SIZE_HEADER - Correction
  • For n = seekint To F_array.GetUpperBound(0)
  • bytez = F_array(n)
  • RealChecksum += bytez
  • Next
  • seekint = MAX_SIZE - Correction
  • For n = seekint To F_array.GetUpperBound(0)
  • rompart1 += F_array(n)
  • Next
  • RealChecksum -= rompart1
  • RealChecksum += rompart1 * 2
  • End Select
  • End Sub
  • End Class
Imports System.IO
Public Class checksumcalc

    Public formz1 As Form1
    Public resultstrz As String
    Const LO_ROM = 0
    Const HIGH_ROM = 1
    Const NUMB_VALUES = 39
    Const LOROM_BANKSIZE = 32768
    Const TRUEz = 1
    Const FALSEz = 0
    Const ARG_NUMB = 3
    Const ROM_NAME_LOROM_ADDR = 33216
    Const ROM_NAME_HIROM_ADDR = 65984
    Const REVERSE_CHKSM_ADDR_LOROM = 33244
    Const CHKSM_ADDR_LOROM = 33246
    Const REVERSE_CHKSM_ADDR_HIROM = 66012
    Const CHKSM_ADDR_HIROM = 66014
    Const CPL_VALUE = &HFFFF&
    Const SIZE_HEADER = 512
    Const SMALL_SIZE = 1049088
    Const MAJOR_SIZE = 2097664
    Const MAX_SIZE = 4194816
    Public rom As String
    Public TailleFichier, TypeRom, Correction, Is512Header As Long
    Public RomChecksum As Integer
    Public ChecksumCpl As Integer
    Public RealChecksum As Integer
    Public tmpromchecksum As String
    Public tmpchecksumcpl As String
    Public romname As String
    Public romtype As String
    Public romsram As Integer
    Public romvideo As Integer
    Public romlicense As Integer
    Public romversion As Integer
    Public rommakeup As Integer
    Public romsizeinrom As Integer
    Dim titre As String = "Batto checksum algorithm"


    Public Function DefineTypeRom() As Integer
        'defini le type de rom
        Dim tmpb As Boolean = False
        Dim n As Integer
        For n = 0 To 38
            If StandardSizes(n).size = TailleFichier Then
                tmpb = True
                Exit For
            End If
        Next
        tmpromchecksum = Convert.ToString(CLng(F_array(REVERSE_CHKSM_ADDR_HIROM - Correction + 1)), 16).PadLeft(2, "0") & Convert.ToString(CLng(F_array(REVERSE_CHKSM_ADDR_HIROM - Correction)), 16).PadLeft(2, "0")
        If tmpromchecksum = "0000" Then
            ChecksumCpl = 0
        Else
            ChecksumCpl = Convert.ToInt64(tmpromchecksum, 16)
        End If
        tmpchecksumcpl += Convert.ToString(CLng(F_array(REVERSE_CHKSM_ADDR_HIROM - Correction + 3)), 16).PadLeft(2, "0") & Convert.ToString(CLng(F_array(REVERSE_CHKSM_ADDR_HIROM - Correction + 2)), 16).PadLeft(2, "0")
        RomChecksum = Convert.ToInt64(tmpchecksumcpl, 16)
        If (RomChecksum + ChecksumCpl) = CPL_VALUE Then Return HIGH_ROM Else Return LO_ROM
        If tmpb = True Then
            Return LO_ROM
        Else
        End If
    End Function

    Sub GetRomInfos()
        'on lit les infos contenues dans la rom et on place les offsets dans le tableau offsetz
        Dim seekint As Integer
        Dim n As Integer
        Select Case TypeRom
            Case LO_ROM
                seekint = ROM_NAME_LOROM_ADDR - Correction
                offsetz(0) = seekint
                For n = 0 To 20
                    romname += Chr(F_array(seekint + n))
                Next
                offsetz(1) = seekint + 22
                romtype = F_array(seekint + 22)
                offsetz(2) = seekint + 24
                romsram = F_array(seekint + 24)
                offsetz(3) = seekint + 25
                romvideo = F_array(seekint + 25)
                offsetz(4) = seekint + 26
                romlicense = F_array(seekint + 26)
                offsetz(5) = seekint + 27
                romversion = F_array(seekint + 27)
                rommakeup = F_array(seekint + 21)
                offsetz(6) = seekint + 21
                romsizeinrom = F_array(seekint + 23)
                offsetz(7) = seekint + 23
                seekint = REVERSE_CHKSM_ADDR_LOROM - Correction
                tmpchecksumcpl = Convert.ToString(CLng(F_array(seekint + 1)), 16).PadLeft(2, "0") & Convert.ToString(CLng(F_array(seekint)), 16).PadLeft(2, "0")
                ChecksumCpl = Convert.ToInt64(tmpchecksumcpl, 16)
                tmpromchecksum = Convert.ToString(CLng(F_array(seekint + 3)), 16).PadLeft(2, "0") & Convert.ToString(CLng(F_array(seekint + 2)), 16).PadLeft(2, "0")
                RomChecksum = Convert.ToInt64(tmpromchecksum, 16)
            Case HIGH_ROM
                seekint = ROM_NAME_HIROM_ADDR - Correction
                offsetz(0) = seekint
                For n = 0 To 20
                    romname += Chr(F_array(seekint + n))
                Next
                rommakeup = F_array(seekint + 21)
                romtype = F_array(seekint + 22)
                romsizeinrom = F_array(seekint + 23)
                romsram = F_array(seekint + 24)
                romvideo = F_array(seekint + 25)
                romlicense = F_array(seekint + 26)
                romversion = F_array(seekint + 27)
                offsetz(1) = seekint + 22
                offsetz(2) = seekint + 24
                offsetz(3) = seekint + 25
                offsetz(4) = seekint + 26
                offsetz(5) = seekint + 27
                offsetz(6) = seekint + 21
                offsetz(7) = seekint + 23
                seekint = REVERSE_CHKSM_ADDR_HIROM - Correction
                tmpchecksumcpl = ""
                tmpromchecksum = ""
                tmpchecksumcpl = Convert.ToString(CLng(F_array(seekint + 1)), 16).PadLeft(2, "0") & Convert.ToString(CLng(F_array(seekint)), 16).PadLeft(2, "0")
                ChecksumCpl = Convert.ToInt64(tmpchecksumcpl, 16) 's
                tmpromchecksum = Convert.ToString(CLng(F_array(seekint + 3)), 16).PadLeft(2, "0") & Convert.ToString(CLng(F_array(seekint + 2)), 16).PadLeft(2, "0")
                RomChecksum = Convert.ToInt64(tmpromchecksum, 16)
        End Select
    End Sub

    Public Function analyse_rom() As Boolean
        'verifie que la rom est une roms snes par sa taille, avec ou sans headers
        Dim lenfile As Integer = FileLen(rom)
        hbread = New BinaryReader(File.OpenRead(rom))
        '-1 back

        ReDim F_array(lenfile) ' - 1)
        hbread.Read(F_array, 0, lenfile)
        hbread.BaseStream.Flush()
        hbread.Close()
        Dim seekint As Integer
        Dim n As Integer
        Dim i As Integer
        TailleFichier = F_array.GetUpperBound(0) '+1
        For i = 0 To NUMB_VALUES - 1
            If StandardSizes(i).size = TailleFichier Then
                InfosRom = StandardSizes(i)
                Correction = 0
                Is512Header = True
                Exit For
            ElseIf StandardSizes(i).size - SIZE_HEADER = TailleFichier Then
                InfosRom = StandardSizes(i)
                Correction = SIZE_HEADER
                Is512Header = False
                Exit For
            End If
        Next
        If i = NUMB_VALUES Then Return False
        TypeRom = DefineTypeRom()
        GetRomInfos()
        Return True
    End Function

    Sub CalculChecksum(ByVal TypeAlgo As Integer)
        'calcul le checksum selon le type d'algo defini en argument
        Dim bytez As Long
        Dim rompart1 As Integer = 0
        Dim seekint As Integer
        Dim n As Integer
        Dim tmprealchecksum As String
        RealChecksum = 0
        Select Case TypeAlgo
            Case 1
                seekint = SIZE_HEADER - Correction
                For n = seekint To F_array.GetUpperBound(0)
                    bytez = F_array(n)
                    RealChecksum += Int(bytez)
                Next
            Case 2
                seekint = SIZE_HEADER - Correction
                For n = seekint To F_array.GetUpperBound(0)
                    bytez = F_array(n)
                    RealChecksum += bytez
                Next
                seekint = SMALL_SIZE - Correction
                For n = seekint To F_array.GetUpperBound(0)
                    rompart1 += F_array(n)
                Next
                RealChecksum -= rompart1
                RealChecksum += rompart1 * 4
            Case 3
                seekint = SIZE_HEADER - Correction
                For n = seekint To F_array.GetUpperBound(0)
                    bytez = F_array(n)
                    RealChecksum += bytez
                Next
                seekint = SMALL_SIZE - Correction
                For n = seekint To F_array.GetUpperBound(0)
                    rompart1 += F_array(n)
                Next
                RealChecksum -= rompart1
                RealChecksum += rompart1 * 2
            Case 4
                seekint = SIZE_HEADER - Correction
                For n = seekint To F_array.GetUpperBound(0)
                    bytez = F_array(n)
                    RealChecksum += bytez
                Next
                seekint = MAJOR_SIZE - Correction
                For n = seekint To F_array.GetUpperBound(0)
                    rompart1 += F_array(n)
                Next
                RealChecksum -= rompart1
                RealChecksum += rompart1 * 4
            Case 5
                seekint = SIZE_HEADER - Correction
                For n = seekint To F_array.GetUpperBound(0)
                    bytez = F_array(n)
                    RealChecksum += bytez
                Next
                seekint = MAJOR_SIZE - Correction
                For n = seekint To F_array.GetUpperBound(0)
                    rompart1 += F_array(n)
                Next
                RealChecksum -= rompart1
                RealChecksum += rompart1 * 2
            Case 6
                seekint = SIZE_HEADER - Correction
                For n = seekint To F_array.GetUpperBound(0)
                    bytez = F_array(n)
                    RealChecksum += bytez
                Next
                seekint = MAX_SIZE - Correction
                For n = seekint To F_array.GetUpperBound(0)
                    rompart1 += F_array(n)
                Next
                RealChecksum -= rompart1
                RealChecksum += rompart1 * 2
        End Select
    End Sub
End Class

Conclusion

Il y a plein d'ammeliorations à faire, (à commencer par un design, un vrai ^^) mais pour l'instant
je n'ai pas trop le temps de le faire evoluer.
Je mettrais la version frontend si ça peut interesser quelqu'un, mais je dois revoir quelques problemes de configs avec zsnes.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

20 septembre 2004 00:48:44 :
j'ai oublier le zip!!!
20 septembre 2004 10:41:20 :
fu**ing zip !!!
20 septembre 2004 17:17:39 :
ajout d'un lien vers l'exe :D
22 juillet 2007 22:38:12 :
ajout de mots clés... 4 ans et aucuns commentaires lol

Commentaires et avis

signaler à un administrateur
Commentaire de hvb le 22/07/2007 22:40:28

faudrait "objetiser" ça..! Si j'ai le temps cet été...

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Graver un CD-rom [ par Bidulle ] Quelqu'un aurait-il une idee????Je dois réaliser un programme qui gravera un repertoire donnée sans trop de manipulationJ'ai bien une idée mais j'aime recherche du lecteur de CD rom [ par delphine ] Bonjour,Je voudrais savoir sur quel lecteur se trouve le cd-rom, ceci pour pouvoir examiner le contenu d'un cdmerci d'avance ! Ouvrir/Fermer le lecteur de CD-Rom [ par Olivier ] Bonjour,En VB, j'arrive à ouvrir/fermer un lecteur de CD-Rom mais je ne sais pas comment faire lorsque l'on a deux lecteurs et/ou graveur pour ouvrir/ Accès sur un lecteur Cd-Rom [ par ocal ] Comment peut-on accéder à un fichier situé sur un cd-rom sans spécifier de lettre (sachant que tous les lecteurs cd-rom ne sont pas en d:)? Recherche sources d'un emulateur minitel pour windows [ par abba ] Salut,Je recherche les codes sources d'un emulateur minitel pour windows. Merci de me repondre.@+ emulateur playstation [ par basic ] est ce que quelqu'un pourait commencer la création d'un émulateur playstation pour pouvoir jouer au jeu play sur mon pc?je ne sais vraiment pas commen Emulateur !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! [ par Sephiroth ] Salutqq saurait il ou je peux trouver la source d'un emulateur d'une console quelquonque en VB ?Merci,A+ Ejecter et Fermer le lecteur cd rom [ par C ] Salut, je suis désolé mais je ne peut t'apporter de réponse car je ne sais même pas comment faire pour l'ouvrir et le fermer. C'est pour ça que j'aim


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,484 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS