Hallo Zusammen,
leider kann ich die Zeiger immer noch nicht finden. manakoAT hat sich leider noch nicht gemeldet und auch mit der Suche im SnesEdit konnte ich nichts finden. Daraufhin habe ich selber ein kleines Java-Tool geschrieben, welches mit eine Differenzsuche nach Vorgabe durchführt, auch hier bin ich nicht fündig geworden.
Hier mal der Code (komischerweise landet der Code immer in einer Zeile, auch wenn ich ihn korrekt formatiere...):
public void searchPtrBlock() throws Exception { int[] valuesToFind = { 61, 68, 44, 54, 33};
byte[] bytes = Files.readAllBytes(Paths.get("./data/rom/in.rom")); for(Integer index = 0; index < bytes.length - valuesToFind.length; index ++) { //Search the differences from the current position corresponding to the difference array boolean found = true; for(int idx = 1; idx < valuesToFind.length; idx++) { int nextVal = (int) bytes[index + idx]; int lastVal = (int) bytes[index + idx - 1]; if(found && ((lastVal + valuesToFind[idx]) == nextVal)) { //The array rules still apply - continue } else { found = false; } } if(found) { //found possible position - print it System.out.println("Found index: " + index); } }
Nochmal des Verständnis wegen: ich zähle die Länge von Textanfang zum nächsten Textanfang (inkl. Text-Ende-Byte), zähle dann genau so den nächsten Text. Und suche dann diese Liste von Abständen im Rom. Z.B.
Liste mit Textlängen: {61, 68, 44}
Wäre im Rom sowohl: 61, 68, 44 als auch 62, 69, 45 bzw. 71, 78, 54 jeweils ein Hit! Bitte korrigiert mich, wenn ich hier falsch liege. Entweder ich zähle die Textlängen falsch, oder ich kann auf diesem Wege nichts finden...
Vielen Dank und viele Grüße!
Seb