von HiassofT » Fr 1. Nov 2013, 15:24
Andreas hat mir einige AtariMax ATRs gemailt, die hab' ich mir nun mal angesehen:
Der ATR-Header/Flasher Teil war da bei allen (auch den 1MBit Images) 2448 Bytes groß. Um die Grösse des Headers/Flashers am Anfang des Files (ca 2-2.5k) und die Grösse des ROM-Teils am Ende des Files zu ermitteln geht man am besten nach folgendem Rezept vor:
Filegrösse in Bytes ermitteln, durch 8192 dividieren und abrunden, damit hat man die Zahl der 8k ROM-Bänke.
zB beim 1MBit asc2010.atr: 133520 bytes / 8192 = 16.2988, abgerundet 16.
Der Header/Flasher, der weg muss, ist dann die Differenz aus Filelänge minus Bänke*8192, also 133520 - (16 * 8192) = 2448.
(jaja, ihr könnt natürlich auch 133520 modulo 8192 rechnen, das ergibt ebenfalls die Header/Flasher Grösse :)
Den Teil schnippelt ihr mit dd nun weg, wie gehabt:
- Code: Alles auswählen
dd if=input.atr of=output.rom bs=1 skip=2448
Wenn bei einem 1MBit ATR 16 Bänke rauskommen, oder bei einem 8MBit ATR 128 Bänke, seid ihr fertig. Soweit also nicht viel neues.
Hab' dann mal ein kurzes 8MBit ATR gebootet und in meine AtariMax cart programmiert. Dabei sieht man, daß zuerst die unteren Bänke programmiert werden, und der letzte 8k Block im ATR in die letzte Bank kommt. Der Bereich dazwischen bleibt leer.
'dd' ist ein wirklich nettes Tool, mit ein paar einfachen Kniffen kann man das "kurze" ROM wieder auf 1MB (bzw 128k) "aufblasen". Hier am Beispiel des Conan ATRs für die 8MBit Cart:
Das ATR ist 207248 Bytes groß, das sind 2448 Bytes Header/Flasher und 25 8k Bänke. Die ersten 24 8k Blöcke gehören ins ROM in die Bänke 0-23, der letzte 8k Block in die Bank 127.
Zuerst extrahieren wir den ROM-Teil wie gehabt, aber speichern erst mal in ein "temp.rom" File:
- Code: Alles auswählen
dd if=conan__maxflash_image_.atr of=temp.rom bs=1 skip=2448
Nun brauchen wir ein leeres 1MB File, das wir dann befüllen. Ich hab' da eins angehängt (im ZIP ist auch ein leeres 128k File drin), das kopiert ihr zB auf "conan.rom".
Jetzt schreiben wir die ersten 24 8k Blöcke aus dem temp.rom an den Anfang von conan.rom:
- Code: Alles auswählen
dd if=temp.rom of=conan.rom conv=notrunc bs=8k count=24
Durch das "conv=notrunc" wird das Output-File nicht abgeschnitten, es werden einfach die ersten 24 8k Blöcke überschrieben. Ich weiss jetzt nicht auswendig ob die Windows dd Versionen (da gibts ein paar verschiedene) das auch unterstützen, im Zweifelsfall die Doku checken oder eine andere Version nehmen.
Nun noch den 25. Block des temp.rom ganz ans Ende des conan.rom kopieren:
- Code: Alles auswählen
dd if=temp.rom of=conan.rom conv=notrunc bs=8k skip=24 seek=127
Voila, und fertig! Das conan.rom kann man nun schnell mal im emu testen, sicherheitshalber immer alle (SIO) Patches etc abschalten.
Bei anderen Images: einfach die "24" bei count bzw skip durch die errechnete ROM-Block-Anzahl (minus 1) ersetzen.
Ein 1MBit AtariMax Modul hab' ich leider nicht, es sieht aber so aus als würde das mit der ersten Bank starten (das meint auch der emu).
Hab's kur mal mit dem Dynamania.atr getestet das mir Andreas gemailt hat. Einfach den Header wegschnippeln (2448 Bytes) und wie oben in eine temp.rom speichern. Dann das leere 128k File nach Dynamania.rom kopieren und die ROM-Daten dort einfügen:
- Code: Alles auswählen
dd if=temp.rom of=Dynamania.rom conv=notrunc bs=8k
so long,
Hias