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 / Exemple :
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 :)
@+
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.