Писал для себя, посоветовали выложить
может кому пригодиться. Хотя честно сказать ума не приложу, кому она может понадобиться, кроме таких законченных педантов как я. А кому понадобилась, те давно уже сваяли себе подобное. Вообще-то, я профан в этом деле, так что поправьте меня, если что не так.
Как вы, наверное, знаете дампилимь картриджы N64 разными девайсами и на выходе получали разные ромы. Отличия были в порядке байтов и только:
z64 - [ABCD] Big Endian (not byteswapped);
v64 - [BADC] Doctor V64 (byteswapped);
n64 - [DCBA] Little Endian (wordswapped).
Если интересно, читайте подробнее о том, что такое, например, Doctor V64 здесь:
http://en.wikipedia.org/wiki/Doctor_V64 а что такое Z64 здесь:
http://en.wikipedia.org/wiki/Z64 Почитал я эту эмуляционную страничку Smiff'а (если не ошибаюсь, он участвовал в разработке Project 64)
http://www.smiff.clara.net/beginner/roms.htm - тут описаны те проблемы, которые могут возникнуть с ромами с расширениями, не соотвествующими реальному порядку байтов в нем. Не исключаю, что могут возникнуть проблемы и с некоторыми ромами не тех форматов, что ожидает найти эмуль. Однако на сей момент последнее, думаю, мало актуально. Любой порядочный эмуль определяет тип рома не по расширению и читает его как надо - разве что время на загрузку может уйти чуточку больше, если это не z64-формат. Вообщем, как я и сказал - утилитка для педантов
Так или иначе я решил проверить все ли мои ромы N64 в формате z64 действительно z64, а те что нет - перегнать в z64. Была такая утилитка от Deflection, которая конвертила ромы N64 в разные форматы: z64, v64 и n64, но она, видимо, секла ромы по их CRC, потому весь goodset им не взять. Моя же утилитка тупа как пробка
она сечет ром N64 и его формат по первые 4-ем байтам заголовка и дает правильное расширение рому, если он имел неверное, а также конвертит в выбранный формат. Утилитка консольная - читайте пометку об использовании для подробностей.
Вообщем, сами решайте, нужен ли вам z64 форат для всех ромов, а вот иметь верное расширение рому, согласно реальному порядку байтов в нем - это строго рекомендовано. Очень часто скачаеннй откуда-нибудь сет имеет пару десятков таких "самозванцев". Собственноручно проверять несколько тысяч лень, утилитка делает это махом.
С некотороыми овердампами бывают проблемы, поскольку иногда они имеют не четный размер, что никогда не бывает с нормальными ромами N64.Тогда Tool64/2 предупредит вас о том, что размеры файла на выходе не совпадает с тем, что на входе. Чтобы размеры совпадали, она просто оставшийся кусок прочитанных данных допишет в конец без изменений, и напишет размер этих данных - от 1 до 3 байтов. Это сделано потому что определить со 100% точностью в таком случае как переставить байты не возможно
Согласитесь, имея недостающее звено в последовательности 4-ех байтов нельзя их переставить. Если такое сообщение появилось, это не значит, что конвертация прошла не успешно - проверьте Good'ом, если не определил, тогда можно нужно слегка подправить вручную (hiew вам в помощь). Глянув в конец файла вы найдете, как правило, легко угадываемую последовательность и допишите верный байт. Можно бы сделать это и програмнно да лень, т.к. таких проблемных ромов крайне мало, например - Automobili Lamborghini (U) [o3]
Все неопознанное кладется в подкаталог ".\Unknown".
Короче, текста ту вышло больше, чем кода
PS: Сами понимаете утилитка поставляется "As Is", пользуйте на ваш страх и риск.