begin process at 2012 02 13 17:39:53
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Modules

 > LIRE LE HEADER D'UNE ROM DE GAMEBOY

LIRE LE HEADER D'UNE ROM DE GAMEBOY


 Information sur la source

Note :
9 / 10 - par 3 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Modules Niveau :Initié Date de création :14/04/2002 Date de mise à jour :14/04/2002 20:32:05 Vu :2 819

Auteur : VBSephiroth

Ecrire un message privé
Site perso
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

 Description

Salut !

Bon voila si il y en a qui comme moi s'interesse a la programmation d'emulateur, ce module peut etre utile, meme si ce n'est qu'un debut. Je ne connais personnellement pas grand chose en matiere de prog' d'emulateur, mais j'ai trouve qq documents sur le fonctionnement des ROMS de GameBoy qui m'a permis d'ecrire ce (petit) module...

Voici les fonctions du module :
gbGetRomName : Cette fonction vous donne le nom de la ROM, autrement dit le nom du jeu.
gbGetScrollingCode : C'est le code du scrolling de la ROM du logo Nintendo - a comparer ensuite avec le code universel.
gbGetExeCode : Permet d'avoir le code d'execution
getSizeROM : Taille de la ROM
getSizeRAM : " " " RAM
getTypeCartridge : defini le type de cartouche, par exemple si la cartouche du jeu de gameboy contient une batterie, etc...

Bon voila c'est tout ! Je sais c'est assez complique et seuls ce qui ont qq bases sur l'emulation comprendront. Mais l'utilisation du module est tres simple :)

Par Exemple vous mettez :
variable1=gbGetRomName("C:\Asterix.gb")

Et voila, le nom du jeu de gameboy est inscrit dans variable1.

Source

  • Function gbGetRomName(RomFile As String) As String
  • ' Déclarations
  • Dim romnameCurrentByte(16) As Byte
  • Dim RomName As String
  • Dim b, i As Integer
  • Dim a As String
  • ' Ouverture de la ROM
  • Open RomFile For Binary Access Read As #1
  • For i = 309 To 309 + 16
  • Get #1, i, romnameCurrentByte(i - 309)
  • Next
  • For b = 0 To 16
  • If romnameCurrentByte(b) <> &H0 Then
  • a = Chr(romnameCurrentByte(b))
  • RomName = RomName & a
  • End If
  • Next
  • Close #1
  • gbGetRomName = RomName
  • End Function
  • Function gbGetScrollingCode(RomFile As String) As String
  • Dim scrollingCurrentByte(48) As Byte
  • Dim d As String
  • Open RomFile For Binary Access Read As #1
  • For c = 261 To 261 + 47
  • Get #1, c, scrollingCurrentByte(c - 261)
  • d = Hex(scrollingCurrentByte(c - 261))
  • gbGetScrollingCode = gbGetScrollingCode & " " & d
  • Next
  • Close #1
  • End Function
  • Function gbGetExeCode(RomFile As String) As String
  • Dim execodeCurrentByte(4) As Byte
  • Dim e As String
  • Dim f(4) As String
  • Open RomFile For Binary Access Read As #1
  • For e = 257 To 257 + 3
  • Get #1, e, execodeCurrentByte(d - 4)
  • f(e - 257) = Hex(execodeCurrentByte(d - 4))
  • Next
  • Close #1
  • gbGetExeCode
  • End Function
  • Function getSizeROM(RomFile As String) As String
  • Dim sizeROM As Byte
  • Open RomFile For Binary Access Read As #1
  • Get #1, 329, sizeROM
  • Close #1
  • Select Case sizeROM
  • Case 0: getSizeROM = "32 Ko"
  • Case 1: getSizeROM = "64 Ko"
  • Case 2: getSizeROM = "128 ko"
  • Case 3: getSizeROM = "256 ko"
  • Case 4: getSizeROM = "512 ko"
  • Case 5: getSizeROM = "1 Mo"
  • Case 6: getSizeROM = "2 Mo"
  • Case 52: getSizeROM = "1.1 Mo"
  • Case 53: getSizeROM = "1.2 Mo"
  • Case 54: getSizeROM = "1.5 Mo "
  • Case Default: getSizeROM = "Erreur"
  • End Select
  • End Function
  • Function getSizeRAM(RomFile As String) As String
  • Dim sizeRAM As Byte
  • Open RomFile For Binary Access Read As #1
  • Get #1, 330, sizeRAM
  • Close #1
  • Select Case sizeRAM
  • Case 0: getSizeRAM = "Aucune"
  • Case 1: getSizeRAM = "2 Ko"
  • Case 2: getSizeRAM = "8 ko"
  • Case 3: getSizeRAM = "32 ko"
  • Case Default: getSizeRAM = "Erreur"
  • End Select
  • End Function
  • Function getTypeCartridge(RomFile As String) As String
  • Dim cartridge As Byte
  • Open RomFile For Binary Access Read As #1
  • Get #1, 328, cartridge
  • Close #1
  • Select Case cartridge
  • Case 0: getTypeCartridge = "ROM seulement"
  • Case 1: getTypeCartridge = "ROM + MBC1"
  • Case 2: getTypeCartridge = "ROM + MBC1 + RAM"
  • Case 3: getTypeCartridge = "ROM + MBC1 + RAM + BATTERIE"
  • Case 5: getTypeCartridge = "ROM + MBC2"
  • Case 6: getTypeCartridge = "ROM + MBC2 + BATTERIE"
  • Case 8: getTypeCartridge = "ROM + RAM"
  • Case 9: getTypeCartridge = "ROM + RAM + BATTERIE"
  • Case 255: getTypeCartridge = "ROM+HuC1+RAM+BATTERIE"
  • Case Default: getTypeCartridge = "Erreur"
  • End Select
  • End Function
Function gbGetRomName(RomFile As String) As String
    ' Déclarations
    Dim romnameCurrentByte(16) As Byte
    Dim RomName As String
    Dim b, i As Integer
    Dim a As String
    
    ' Ouverture de la ROM
    Open RomFile For Binary Access Read As #1
        For i = 309 To 309 + 16
            Get #1, i, romnameCurrentByte(i - 309)
        Next
        For b = 0 To 16
            If romnameCurrentByte(b) <> &H0 Then
            a = Chr(romnameCurrentByte(b))
            RomName = RomName & a
            End If
        Next
    Close #1
    
    gbGetRomName = RomName
End Function

Function gbGetScrollingCode(RomFile As String) As String
    Dim scrollingCurrentByte(48) As Byte
    Dim d As String
    Open RomFile For Binary Access Read As #1
            For c = 261 To 261 + 47
                Get #1, c, scrollingCurrentByte(c - 261)
               d = Hex(scrollingCurrentByte(c - 261))
                gbGetScrollingCode = gbGetScrollingCode & " " & d
            Next
    Close #1
End Function

Function gbGetExeCode(RomFile As String) As String
     Dim execodeCurrentByte(4) As Byte
     Dim e As String
     Dim f(4) As String
     Open RomFile For Binary Access Read As #1
     For e = 257 To 257 + 3
        Get #1, e, execodeCurrentByte(d - 4)
        f(e - 257) = Hex(execodeCurrentByte(d - 4))
    Next
    Close #1
    gbGetExeCode
End Function

Function getSizeROM(RomFile As String) As String
     Dim sizeROM As Byte
     Open RomFile For Binary Access Read As #1
        Get #1, 329, sizeROM
    Close #1
    Select Case sizeROM
        Case 0: getSizeROM = "32 Ko"
        Case 1: getSizeROM = "64 Ko"
        Case 2: getSizeROM = "128 ko"
        Case 3: getSizeROM = "256 ko"
        Case 4: getSizeROM = "512 ko"
        Case 5: getSizeROM = "1 Mo"
        Case 6: getSizeROM = "2 Mo"
        Case 52: getSizeROM = "1.1 Mo"
        Case 53: getSizeROM = "1.2 Mo"
        Case 54: getSizeROM = "1.5 Mo "
        Case Default: getSizeROM = "Erreur"
    End Select
End Function

Function getSizeRAM(RomFile As String) As String
    Dim sizeRAM As Byte
    Open RomFile For Binary Access Read As #1
        Get #1, 330, sizeRAM
    Close #1
    Select Case sizeRAM
        Case 0: getSizeRAM = "Aucune"
        Case 1: getSizeRAM = "2 Ko"
        Case 2: getSizeRAM = "8 ko"
        Case 3: getSizeRAM = "32 ko"
        Case Default: getSizeRAM = "Erreur"
    End Select
End Function

Function getTypeCartridge(RomFile As String) As String
    Dim cartridge As Byte
    Open RomFile For Binary Access Read As #1
        Get #1, 328, cartridge
    Close #1
    Select Case cartridge
        Case 0: getTypeCartridge = "ROM seulement"
        Case 1: getTypeCartridge = "ROM + MBC1"
        Case 2: getTypeCartridge = "ROM + MBC1 + RAM"
        Case 3: getTypeCartridge = "ROM + MBC1 + RAM + BATTERIE"
        Case 5: getTypeCartridge = "ROM + MBC2"
        Case 6: getTypeCartridge = "ROM + MBC2 + BATTERIE"
        Case 8: getTypeCartridge = "ROM +  RAM"
        Case 9: getTypeCartridge = "ROM + RAM + BATTERIE"
        Case 255: getTypeCartridge = "ROM+HuC1+RAM+BATTERIE"
        Case Default: getTypeCartridge = "Erreur"
    End Select
End Function
 

 Conclusion

Si vous avez des questions, ou si vous n'avez pas compris qqchose, n'hesitez pas a me demander " rpgsephiroth666@aol.com
Je me ferai un plaisir de repondre :)

@+


 Sources du même auteur

Source avec Zip EFFET DE TRANSITION #1
Source avec Zip Source avec une capture EXTRAIRE LES GRAPHISMES D'UNE ROM DE GAMEBOY

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) CRYPTAGE ET DECRYPTAGE par jerichez
Source avec Zip Source avec une capture Source .NET (Dotnet) EXEMPLE MODBUS POUR MODULES ADAM, BECKHOFF, WAGO par mnmsjaune
Source avec Zip Source .NET (Dotnet) CRÉER SON PROPRE DESIGNER COMME CELUI DE VISUAL STUDIO par ShareVB
Source avec Zip Source .NET (Dotnet) CONVERSION UTM VERS LAT/LONG par BarresLTD
Source avec Zip CPROPGROUP : COLLECTION FAITE MAISON par Flocreate

Commentaires et avis

Commentaire de Tilois le 15/04/2002 09:38:46

Je vois pas trop a quoi ca sert, bien que le code soit tres bien.
Cependant je pense que cela pourrait devenir interressant si tu utilisais cette routine pour classer par ex des roms sur ton DD... Mais sinon ....
Bon je met 8 .... Pour l'effort

Commentaire de yoman64 le 15/04/2002 17:59:20

La taille des rom depasse souvent 1.5 mo,ex pour gbc c po rare ke les cartouche arrive a 32 mo
Mais c tres bien kan meme simple mais bien

Commentaire de VBSephiroth le 15/04/2002 18:04:10

Oui, mais comme tu dis, c'est les roms de gbc, et le module est seulement pour les roms de gameboy, pas gameboy color ... J'en suis pas encore la :)
Merci pour les encouragements :)

Commentaire de thekingoftheweb le 16/04/2002 17:54:38

Pas mal ....
s'est supper mais pas sur toutes les roms ....
Ils les enregistrent pas tjs bien !

@+
King

Commentaire de GiZmO le 05/05/2002 16:48:53

c pas mal, continue dans cette voie...

@+

GiZmO

Commentaire de RbbR le 24/10/2002 04:01:58

Pas mal

Commentaire de clad87 le 27/02/2003 17:41:44

ta source ma été utile

Commentaire de calbo le 17/10/2003 15:54:33

pas mal comme source  je regarde attentivemen pour voir se ki a moyen d'en faire par apres allez si j'y arrive je te previen bye

Commentaire de PaTaTe le 26/07/2004 16:44:02

Dans un projet avec Option Explicit y a pas mal de bug.

Pourrait-tu revoir le code ?

Merci

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,763 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales