Welcome to AEP Emulation Page - Emulation News

Main Menu
· Home / News
· News Categories
· News Archiv
· My Account
· Search
· Forums
· Weblinks
· Game Reviews
· Translations
· Impressum

Downloads
 


Forum
MEMBERS ONLINE
Currently no members online.

You are an anonymous user. You can register for free by clicking here
Username
Password
 Remember me

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

Review of the moment

Sprache
Select interface language:

EnglishGerman

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


Post new topic   Reply to topic  
View previous topic Printable version Log in to check your private messages View next topic
Author Message
yominatorOffline
9 Post subject: SNES Rom Format  PostPosted: Aug 25, 2009 - 09:48 PM
Retrokenner


Joined: Nov 22, 2007
Posts: 347

Location: 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. 
 
 
 View user's profile Visit poster's website  
Reply with quote Back to top
pYRoOffline
Post subject: SNES Rom Format  PostPosted: Aug 26, 2009 - 09:04 AM
Retromeister


Joined: Jan 01, 2006
Posts: 1.042

Location: 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.
 


Last edited by pYRo on Aug 27, 2009 - 03:17 PM; edited 1 time in total 
 
 View user's profile Visit poster's website  
Reply with quote Back to top
yominatorOffline
Post subject: SNES Rom Format  PostPosted: Aug 26, 2009 - 10:38 AM
Retrokenner


Joined: Nov 22, 2007
Posts: 347

Location: 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. 
 
 
 View user's profile Visit poster's website  
Reply with quote Back to top
pYRoOffline
Post subject: SNES Rom Format  PostPosted: Aug 26, 2009 - 11:03 AM
Retromeister


Joined: Jan 01, 2006
Posts: 1.042

Location: 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.
 
 
 
 View user's profile Visit poster's website  
Reply with quote Back to top
yominatorOffline
Post subject: SNES Rom Format  PostPosted: Aug 26, 2009 - 01:27 PM
Retrokenner


Joined: Nov 22, 2007
Posts: 347

Location: 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. 
 
 
 View user's profile Visit poster's website  
Reply with quote Back to top
laformaOffline
Post subject:   PostPosted: Aug 27, 2009 - 12:27 PM
Retrokenner


Joined: Jun 01, 2007
Posts: 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...
 
 
 
 View user's profile  
Reply with quote Back to top
pYRoOffline
Post subject:   PostPosted: Aug 27, 2009 - 03:14 PM
Retromeister


Joined: Jan 01, 2006
Posts: 1.042

Location: 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.

 
 
 
 View user's profile Visit poster's website  
Reply with quote Back to top
yominatorOffline
Post subject:   PostPosted: Aug 30, 2009 - 10:53 PM
Retrokenner


Joined: Nov 22, 2007
Posts: 347

Location: 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. 
 
 
 View user's profile Visit poster's website  
Reply with quote Back to top
mateyoOffline
Post subject:   PostPosted: Aug 31, 2009 - 12:01 AM
Retromeister


Joined: Jul 16, 2008
Posts: 1.736

Location: 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.
 
 
 
 View user's profile  
Reply with quote Back to top
yominatorOffline
Post subject:   PostPosted: Aug 31, 2009 - 03:59 PM
Retrokenner


Joined: Nov 22, 2007
Posts: 347

Location: 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. 
 
 
 View user's profile Visit poster's website  
Reply with quote Back to top
JezzeOffline
Post subject:   PostPosted: Aug 31, 2009 - 06:04 PM
Banned Team Member


Joined: Oct 30, 2004
Posts: 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! 
 
 
 View user's profile Visit poster's website ICQ Number 
Reply with quote Back to top
yominatorOffline
Post subject:   PostPosted: Aug 31, 2009 - 06:26 PM
Retrokenner


Joined: Nov 22, 2007
Posts: 347

Location: 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. 
 
 
 View user's profile Visit poster's website  
Reply with quote Back to top
Matthias_HOffline
Post subject:   PostPosted: Mar 20, 2010 - 08:59 PM
Retrohling


Joined: Mar 20, 2010
Posts: 1

Location: 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

_________________
 


Last edited by Matthias_H on Mar 22, 2010 - 07:59 AM; edited 1 time in total 
 
 View user's profile Visit poster's website  
Reply with quote Back to top
yominatorOffline
Post subject:   PostPosted: Mar 21, 2010 - 09:29 PM
Retrokenner


Joined: Nov 22, 2007
Posts: 347

Location: 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. 
 
 
 View user's profile Visit poster's website  
Reply with quote Back to top
KillBill_158Offline
Post subject:   PostPosted: Apr 26, 2012 - 12:04 PM
Retrohling


Joined: Sep 16, 2010
Posts: 10

Location: 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. 
 
 
 View user's profile  
Reply with quote Back to top
Display posts from previous:     
Jump to:  
All times are GMT + 1 Hour
Post new topic   Reply to topic  
View previous topic Printable version Log in to check your private messages View next topic
Powered by PNphpBB2 © The PNphpBB Group
Credits
AEP Emulation Page 1998 - 2024