Willkommen bei AEP Emulation Page - Emulation News

Hauptmenü
· Home / News
· News Kategorien
· News Archiv

· Mein Account
· Suche
· Forum (neu)
· Forum
· Weblinks
· Spiele Reviews
· Übersetzungen
· Impressum
· Datenschutz

Downloads
 


Forum
Mitglieder Online
Keine Mitglieder online.

You are an anonymous user. You can register for free by clicking here
Benutzername
Kennwort
 Angemeldet bleiben

Infos
· Museum
· Infocenter
· Das AEP Team
· Member Liste
· Top 25 Liste
· Glossar
· FAQ

Review of the moment

Sprache
Sprache auswählen:

DeutschEnglisch

News-Export
Holt Euch unsere News auf Eure Seite:
· RSS Newsfeed How-to
· RSS News-syndication Deutsch
· News-Banner (JPG)

Friends
· Emu-France
· progetto-SNAPS
· EmuBit.pl
· PDRoms


Neues Thema eröffnen   Neue Antwort erstellen  
Vorheriges Thema anzeigen Druckerfreundliche Version Einloggen, um private Nachrichten zu lesen Nächstes Thema anzeigen
Autor Nachricht
yominatorOffline
9 Titel: SNES Rom Format  BeitragVerfasst am: 25.08.2009, 21:48 Uhr
Retrokenner


Anmeldungsdatum: 22. Nov 2007
Beiträge: 347

Wohnort: Osterland
Status: Offline
Hallo,
ich möchte in mein Dateierkennungsprogramm yomi eine Erkennungs- und Rename-Routine für SNES-Roms einfügen. Und da haben wir das Problem: Es ist das bisher einzige Rom-Format, was sich erfolgreich gegen eine Erkennung wehrt.

Schade, da zum Teil höchst detaillierte Rom-Versions-Infos im Rom schon von haus aus gespeichert sind (z.B. Lemmings2: " ... LemmingsII V1.01, assembled 12:36am on Tuesday the 12/7/1994 ...").

Einen einheitlichen Standard schein es nicht zu geben. In den Docs wir mal angegeben, dass ein "SNES" String an &H200 zu finden wäre. Das ist aber bei den allerwenigsten der Fall (geschweige denn der SNES-String überhaupt zu finden). Weiter steht die Info, um welches Spiel es sich handelt, ständig an anderen Stellen, mal an &H7FB0, an &HFF7B0=, an &H1013F0 usw.

Das einzige was zum großen Teil gleich zu sein scheint ist die Position &H9 mit den Hex-Werten AA BB 04.

Hat jemand eine detaillierte Haeder-Übersicht für das SNES? Auch innerhalb der Formatendungen .fig .sfc und .smc scheint es mehrere gravierende Unterschiede zu geben ... oder die Dateiendungen sind falsch.

Danke im voraus.

_________________
Braucht jemand mein Yomi-Tool? Wenn nicht geb ichs auf. 
 
 
 Benutzer-Profile anzeigen Website dieses Benutzers besuchen  
Antworten mit Zitat Nach oben
pYRoOffline
Titel: SNES Rom Format  BeitragVerfasst am: 26.08.2009, 09:04 Uhr
Retromeister


Anmeldungsdatum: 01. Jan 2006
Beiträge: 1.038

Wohnort: Deutschland
Status: Offline
Dein Problem dürfte sein, daß du zwar den Header siehst, ihn aber nicht unbedingt lesen kannst, weil net alles in ASCII vor dir steht
,
machs doch wie die anderen ROM Renamer auch, und orientiere dich nicht am Header, sondern an einer Checksum des ROMS (CRC, MD5, SHA, oder was auch immer dir lieber ist) in Verbindung mit ner eigenen Datenbank.

Infos zum SNES Header gibts auch massig, schon der 1. Google Treffer bringt schon brauchbares

Davon ab, hast du schonmal NSRT probiert? der erkennt in fast allen meinen SNES ROMs die Header.
 


Zuletzt bearbeitet von pYRo am 27.08.2009, 15:17 Uhr, insgesamt ein Mal bearbeitet 
 
 Benutzer-Profile anzeigen Website dieses Benutzers besuchen  
Antworten mit Zitat Nach oben
yominatorOffline
Titel: SNES Rom Format  BeitragVerfasst am: 26.08.2009, 10:38 Uhr
Retrokenner


Anmeldungsdatum: 22. Nov 2007
Beiträge: 347

Wohnort: Osterland
Status: Offline
Danke für den Auszug. Eine Datenbank möchte ich aber nicht ankoppeln. Yomi soll klein, schnell und nur eine einzelne Datei sein. Die Version 0.52 (unveröffentlicht) ist gerade mal 184KB groß und unterstützt aktuell 22 Dateitypen und 12 Romtypen und kann davon 8 Renamen.

Dass die Daten codiert sind ist schon klar. Erfolgreich auslesen kann ich die bereits bei allen anderen Nintendo-Rom-Formaten. Einzig eben SNES-ROMS weigern sich. Die von Dir oben beschriebene Stelle funktioniert eben nicht z.B. bei Bubsy, X-Men und anderen. Dort ist dieser Speicherbereich entweder mit dem Hexwert 00 oder FF komplett gefüllt.

Nochmal zur Problematik: Die bisherigen Tools gehen davon aus, dass es sich um einen SNES-Rom handelt und behandeln es entsprechend. Mein yomi verhält sich aber anders. Es durchsucht die betreffende Datei nach einem Erkennungsstring, der yomi sagt, dass es sich eindeutig um ein SNES-Rom handelt, und eben nicht um 32X, NDS, PDF-Datei o.ä. Erst dann kann ich die Haeder versuchen auszulesen. Meine erste Fragestellung war vielleicht falsch gewählt. Sorry.

Der abgebildete Rom ist ein schönes Beispiel. Den japanischen Schriftzug entnimmt das Tool offensichtlich aus dem Rom. yomi würde als Rename-Vorschlag "toresha- hanta- G (J)" aus dem Rom selbst transcripieren, so wie es eben auf japanisch da steht. Dafür habe ich bereits eine Routine geschrieben, die beim NDS funktioniert.

_________________
Braucht jemand mein Yomi-Tool? Wenn nicht geb ichs auf. 
 
 
 Benutzer-Profile anzeigen Website dieses Benutzers besuchen  
Antworten mit Zitat Nach oben
pYRoOffline
Titel: SNES Rom Format  BeitragVerfasst am: 26.08.2009, 11:03 Uhr
Retromeister


Anmeldungsdatum: 01. Jan 2006
Beiträge: 1.038

Wohnort: Deutschland
Status: Offline
Die Fragestellung war, denk ich mal ok, nur bist du schon sehr viel tiefer in der Materie als sie vermuten ließ^^

Das größte Problem ist wohl, daß viele ROMs keine oder unsaubere Header haben:
Für die meisten gilt aber:

LowROM Header 81B0h
HighRom Header 101B0h

Du solltest dich mal mit dem Autoren von NSRT in Verbindung setzen, das Tool findet nämlich auch noch viele Infos in ROMs die ich selbst zuvor modifiziert habe, also muß es ja einige zuverlässige Anhaltspunkte im ROM geben.

Noch eine Idee zu deinem Tool: Warum machst du nicht eine Vorauswahl nach Dateiendung, mit anschließender Identifikation des Dateiinhalts und erst wenn der 2. Punkt fehlschlägt einen Tiefenscan auf alle möglichen Formate? - Wär imo schneller in der Ausführung und auch zuverlässiger im Ergebnis.
 
 
 
 Benutzer-Profile anzeigen Website dieses Benutzers besuchen  
Antworten mit Zitat Nach oben
yominatorOffline
Titel: SNES Rom Format  BeitragVerfasst am: 26.08.2009, 13:27 Uhr
Retrokenner


Anmeldungsdatum: 22. Nov 2007
Beiträge: 347

Wohnort: Osterland
Status: Offline
Die Autoren von NSRT kontakte ich demnächst, um dem Problem der eindeutigen Identifikation von SNES-Roms auf die Spur zu kommen.

Deine Idee die Dateiendungen zuerst zu prüfen und mit der Info in der Datei zuvergleichen ist nicht schlecht. Drauf kommen muss man. Ich werde Dich in meine Credit-Liste in Yomi aufnehmen.

Als ich das Projekt Yomi gestartet habe (der Vorgänger von Yomi sollte allerdings eine MegaDrive Emulator werden) ging mir es darum Dateien zu identifizieren, die gar keine oder eine absichtlich falsche Dateiendung haben, wie z.B. die Dateien im Firefox cache oder Dateien auf Spiele-CDs um eine Bearbeitung zu erleichtern.

_________________
Braucht jemand mein Yomi-Tool? Wenn nicht geb ichs auf. 
 
 
 Benutzer-Profile anzeigen Website dieses Benutzers besuchen  
Antworten mit Zitat Nach oben
laformaOffline
Titel:   BeitragVerfasst am: 27.08.2009, 12:27 Uhr
Retrokenner


Anmeldungsdatum: 01. Jun 2007
Beiträge: 394


Status: Offline
mmh, eingentlich sollte der header immer an den gleichen stellen zu finden sein und dementsprechend auch interpretierbar. gibt halt nen unterschied zwischen lorom und hirom formaten und ich kann mich dunkel erinnern, dass ne menge roms im netz rumschwirren, die ohne header gedumpt werden, zumindest kann ich mich erinnern, dass man mit bestimmten snes tools einfach den header entfernen oder anbringen konnte und das rom funktionierte im emu immernoch tadellos...
 
 
 
 Benutzer-Profile anzeigen  
Antworten mit Zitat Nach oben
pYRoOffline
Titel:   BeitragVerfasst am: 27.08.2009, 15:14 Uhr
Retromeister


Anmeldungsdatum: 01. Jan 2006
Beiträge: 1.038

Wohnort: Deutschland
Status: Offline
ZSNES benötgit keinen Header im ROM, um es abzuspielen. Davon ab ist es eh erstmal wichtiger eine eindeutige Signatur zu finden, mit der er sicherstellen kann, ob es sich um ein SNES-ROM handelt. Der Header eignet sich wies ausschaut nicht dazu, da er 1. keine Werte enthält die in jedem ROM gleich sind und 2. ständig an anderen Offsets rumschwirrt.

 
 
 
 Benutzer-Profile anzeigen Website dieses Benutzers besuchen  
Antworten mit Zitat Nach oben
yominatorOffline
Titel:   BeitragVerfasst am: 30.08.2009, 22:53 Uhr
Retrokenner


Anmeldungsdatum: 22. Nov 2007
Beiträge: 347

Wohnort: Osterland
Status: Offline
Ich habe jetzt eine Erkennungsroutine eingefügt, die viele SNES-Roms erkennt. An eine Renaming-Funktion ist leider derzeit aber noch nicht zu denken.

Ich prüfe zur Zeit, ob es eine feste Position gibt, die die Adresse der gewünschten Daten enthält. Nintendo verfährt bei den NDS-Roms so. Irgendeine Logik muss ja auch beim SNES dahinter stecken.

_________________
Braucht jemand mein Yomi-Tool? Wenn nicht geb ichs auf. 
 
 
 Benutzer-Profile anzeigen Website dieses Benutzers besuchen  
Antworten mit Zitat Nach oben
mateyoOffline
Titel:   BeitragVerfasst am: 31.08.2009, 00:01 Uhr
Retromeister


Anmeldungsdatum: 16. Jul 2008
Beiträge: 1.736

Wohnort: Frankfurt am Main
Status: Offline
header sind in letzter zeit relativ unbeliebt geworden yomi, da sie nicht zu den reinen rom daten gehören.
du wirst bei anderen systemen prophezeie ich dir auf ähnliche probleme treffen, wie z.b. beim n64.
sinnvoller wäre wirklich die verwendung eines dat files, wie z.b. das von no-intro.
du kannst in dein programm ja eine erkennung einbauen ob das rom ein header hat, oder nicht, und wenn nein greift er auf das datfile zu.
mein vorschlag wäre aber, wenn ja, das dein programm den header entfernt.
 
 
 
 Benutzer-Profile anzeigen  
Antworten mit Zitat Nach oben
yominatorOffline
Titel:   BeitragVerfasst am: 31.08.2009, 15:59 Uhr
Retrokenner


Anmeldungsdatum: 22. Nov 2007
Beiträge: 347

Wohnort: Osterland
Status: Offline
Hmm, eine dat möchte ich nicht anfügen, da yomi das was vorhanden ist auslesen soll. Eine dat ist zweifelsohne einfacher zu realisieren, aber auch entsprechend größer. Warum 10 MB wenn es 200KB auch tun?

Da yomi die Infos aus dem Rom liest braucht es auch keine dat-updates und auch neue und unbekannte Dateien können damit erkannt werden. Probiert es z.B. bei NDS und/oder bei PD-Roms aus.

Was gegen das Haeder-entfernen spricht: yomi soll die Datei selbst nicht verändern. Das macht auch keinen Sinn, da meines erachtens beim Rom-Dumping Zelle für Zelle eines Chips ausgelesen wird und der Haeder da mit drin ist und eben doch zu den reinen Rom-Daten gehört. Ich kann deshalb dem Gedankengang des "aus der Mode kommens des Haeders" nicht folgen.

Das Problem beim N64 ist einzig und allein der Modus mit dem gedumpt wurde: Normalmodus-Reihenfolge: ABCD oder die Datei ist swapped z.B. BADC-Reihenfolge.

_________________
Braucht jemand mein Yomi-Tool? Wenn nicht geb ichs auf. 
 
 
 Benutzer-Profile anzeigen Website dieses Benutzers besuchen  
Antworten mit Zitat Nach oben
JezzeOffline
Titel:   BeitragVerfasst am: 31.08.2009, 18:04 Uhr
Banned Team Member


Anmeldungsdatum: 30. Okt 2004
Beiträge: 5.751


Status: Offline
Die ersten 512byte der meisten SNES ROM-Images im Web gehören nicht zum Inhalt des Original ROM-Chip. Dieser Header wurde von den Dumper hinzugefügt.

Bsp.
1Mbit ROM-Image 1048576byte ohne Header
1Mbit ROM-Image 1049088byte mit Header

Vielleicht kommt auch daher deine Verwirrung, dass du an der Adresse 0x00000200 nur selten einen SNES String findest, denn genau an diese Stelle endet der Header (0x00000000 bis 0x000001FF) wenn er vorhanden ist.

_________________
Test your limits and break through! 
 
 
 Benutzer-Profile anzeigen Website dieses Benutzers besuchen ICQ-Nummer 
Antworten mit Zitat Nach oben
yominatorOffline
Titel:   BeitragVerfasst am: 31.08.2009, 18:26 Uhr
Retrokenner


Anmeldungsdatum: 22. Nov 2007
Beiträge: 347

Wohnort: Osterland
Status: Offline
Das will recherchiert sein. Also gibt es 2 Haeder. Den Dumper-Haeder und den echten von Nintendo an irgendeiner Stelle im Rom. Das erklärt einiges.

Hmm. Dann heißt es also Imagegröße ermitteln und Abweichung ermitteln. Abweichung in die Adressberechnung einbinden und schon steht alles ja wieder an der richtigen Stelle...

Mal probieren

_________________
Braucht jemand mein Yomi-Tool? Wenn nicht geb ichs auf. 
 
 
 Benutzer-Profile anzeigen Website dieses Benutzers besuchen  
Antworten mit Zitat Nach oben
Matthias_HOffline
Titel:   BeitragVerfasst am: 20.03.2010, 20:59 Uhr
Retrohling


Anmeldungsdatum: 20. Mar 2010
Beiträge: 1

Wohnort: Saarbrücken
Status: Offline
Ist dieses Thema überhaupt noch aktuell? Egal Smile

Wie du schon richtig erkannt hast, willst du erst einmal den Dumper-Header loswerden. Wenn deine Dateigröße also beispielsweise 0x400200 ist, kannst du mit großer Wahrscheinlichkeit sagen, dass es bei Offset 0x200 mit dem Original-ROM losgeht. Ab da gibt es eigentlich nur noch zwei Möglichkeiten, nämlich LoRom (Namen bei 0x7FC0 + ROM-Offset) oder HiRom (0xFFC0 + ROM-Offset). Am einfachsten ist es wahrscheinlich, an allen in Frage kommenden Adressen nachzusehen, ob da alphanumerische oder Half-Width-Kana (Shift-JIS) Zeichen zu finden sind. Ich habe das in der Retrode wie folgt gelöst (AVR-C):

Code:
bool isAlphanumeric(char* string, int length) {

   int kk;

   for (kk=0; kk<length;++kk) {
      if ((string[kk] >= 0x80 && string[kk] < 0xA0) || string[kk]<0x20 || string[kk]>0xE0)
         return false;
   }

   return true;
}

Wenn du jetzt wissen willst, ob der Name des Spiels an Stelle 0x7FC0 ist, würde das also in etwa so gehen:

Code:
char *ROMfile; // sagen wir mal, das wäre der Zeiger auf die ROM-Datei

if (isAlphanumeric(ROMfile + 0x7FC0, 21)) {
  printf("Game title probably located at 0x7FC0").
}


Nach dem, was meine User mir so berichten, geht das bei den allerallermeisten Spielen problemlos. (Ich verwende dieselbe Routine auch zum Erkennen von Virtual Boy und Sega Mega Drive Titeln). Windows kann nur leider keine Dateinamen mit SJIS-Zeichen Smile

Viele Grüße,
Matthias

_________________
 


Zuletzt bearbeitet von Matthias_H am 22.03.2010, 07:59 Uhr, insgesamt ein Mal bearbeitet 
 
 Benutzer-Profile anzeigen Website dieses Benutzers besuchen  
Antworten mit Zitat Nach oben
yominatorOffline
Titel:   BeitragVerfasst am: 21.03.2010, 21:29 Uhr
Retrokenner


Anmeldungsdatum: 22. Nov 2007
Beiträge: 347

Wohnort: Osterland
Status: Offline
Aktuell ist das Thema immer Wink Aus Zeitmangel ist mein Projekt leider ins stocken gekommen. Außerdem will ich für die nächste Version alles neu schreiben um alle verkorksten Codezeilen loszuwerden. Danke für die Infos.

_________________
Braucht jemand mein Yomi-Tool? Wenn nicht geb ichs auf. 
 
 
 Benutzer-Profile anzeigen Website dieses Benutzers besuchen  
Antworten mit Zitat Nach oben
KillBill_158Offline
Titel:   BeitragVerfasst am: 26.04.2012, 12:04 Uhr
Retrohling


Anmeldungsdatum: 16. Sep 2010
Beiträge: 10

Wohnort: Plauen
Status: Offline
Jup, ich brauche es NSRT geht nämlich nur bei SNES Roms nun hätte ich gerne eine änliche Áufschlüsselung des Roms CRC und eckdaten. Die ich mir dann rauskopieren kann. Das einzigste was ich bisher gefunden habe was aber nicht 100% das richtige ist, ist das hier http://gamehacking.org/vb/threads/6120-GHTool-A-Collaborative-Rom-Hacking-Tool aber währe schön wenn du das hier zuende machst Wink ich brauche es um eine Referenz Rom Info zu erstellen um es dann zu patchen. ich komm aus dem snes-projects.de Forum da kann man sowas gebrauchen ^^

MfG KillBill_158

_________________

Wer sich entschieden hat, etwas zu tun, und an nichts anderes denkt, überwindet alle Hindernisse. 
 
 
 Benutzer-Profile anzeigen  
Antworten mit Zitat Nach oben
Beiträge vom vorherigen Thema anzeigen:     
Gehe zu:  
Alle Zeiten sind GMT + 1 Stunde
Neues Thema eröffnen   Neue Antwort erstellen  
Vorheriges Thema anzeigen Druckerfreundliche Version Einloggen, um private Nachrichten zu lesen Nächstes Thema anzeigen
PNphpBB2 © 
AEP Emulation Page 1998 - 2024