Что такое формат файла BPS?
.bps - это формат бинарных дельта-патчей, используемый в сообществе ретро-гейминга для распространения ROM-хаков и фанатских переводов без передачи защищенных авторским правом данных ROM. Формат был создан byuu (Near), автором эмулятора bsnes для SNES, примерно в 2012 году, а его спецификация была передана в общественное достояние.
Файл .bps начинается с четырехбайтового ASCII-заголовка BPS1 со смещением ноль (где 1 - это номер версии формата), за которым следуют целые числа переменной длины, кодирующие размер исходного файла, размер целевого файла и необязательный блок метаданных (текст UTF-8). Тело патча использует четыре типа команд: SourceRead (копирование неизмененных байтов из источника), TargetRead (запись новых байтов), SourceCopy (копирование из произвольного смещения источника) и TargetCopy (копирование из уже записанного вывода). Файл заканчивается тремя контрольными суммами CRC32 (по 4 байта каждая, little-endian): одна для исходного ROM, одна для ожидаемого выходного ROM и одна, охватывающая сам файл патча. Программа-патчер откажется применять изменения, если контрольная сумма источника не совпадает, что предотвращает повреждение данных.
BPS пришел на смену старому формату IPS, устранив ограничение на размер файла в 16 МБ и добавив встроенную проверку целостности. Он широко используется для хаков ROM SNES, GBA и NDS.
Общие инструменты включают flips (Floating IPS, Windows/Linux), MultiPatch (macOS), UniPatcher (Android) и браузерные патчеры, такие как RomPatcher.js.
Безопасность и защита
РИСК: MEDIUMСами файлы BPS являются просто данными патча и не могут исполнять код - для них требуется отдельный инструмент-патчер и ROM. Риск исходит от загрузки инструментов для патчинга из неофициальных источников (некоторые поставляются с рекламным ПО) и от законности распространения ROM в вашей юрисдикции. Рекомендуемые патчеры (Floating IPS, RomPatcher.js) являются чистыми инструментами с открытым исходным кодом.
Детали формата
в двух словах- Файл резервной копии Microsoft Works - Старые записи на некоторых сайтах с информацией о файлах утверждают, что .bps = резервная копия документа Microsoft Works; это ошибочная идентификация - нет доказательств того, что эта ассоциация реальна или широко используется.
Программы, открывающие файлы BPS
Технические подробности
глубокая спецификация| Магические байты | `42 50 53 31` (`BPS1`) со смещением 0 - `1` обозначает версию формата |
| Порядок байтов | Little-endian (целые числа переменной длины и контрольные суммы CRC32) |
| Контейнер | Пользовательский линейный бинарный формат (без стандартной оболочки) |
| Кодировка | Бинарная |
| Кодирование целых чисел | Беззнаковые целые числа переменной длины (7 бит на байт, MSB как флаг продолжения) |
| Команды патча | SourceRead, TargetRead, SourceCopy, TargetCopy |
| Схема контрольной суммы | Три контрольные суммы CRC32 (исходный ROM, целевой ROM, файл патча) - по 4 байта каждая, little-endian |
| Валидация источника | Патчер прерывает работу, если CRC32 источника не совпадает со встроенной контрольной суммой - предотвращает применение к неверному ROM |
| Типичный размер файла | От нескольких КБ до нескольких МБ (пропорционально размеру различий ROM) |
| Спецификация | Общественное достояние (опубликовано byuu/Near, около 2012 г.); единственная версия BPS1 |
| Целевые платформы | SNES, GBA, NDS и другие ретро-платформы для ROM-хакинга |
| Предшествующие форматы | IPS (без контрольных сумм, лимит 16 МБ), UPS |
| Выпущен | circa 2012 (byuu/beat tool) |
| Последняя версия | BPS1 (single version in spec) |
| Открыть стандартное | Да · без роялти |
| Спецификация | github.com |
Конвертации BPS
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах BPS.