Co to jest format pliku BPS?
.bps to binarny format poprawek delta używany w społeczności retro gamingu do dystrybucji hacków ROM i fanowskich tłumaczeń bez rozpowszechniania chronionych prawem autorskim danych ROM. Format został stworzony przez byuu (Near), autora emulatora bsnes dla SNES, około 2012 roku, a jego specyfikacja została udostępniona w domenie publicznej.
Plik .bps zaczyna się od cztero-bajtowego nagłówka ASCII BPS1 na przesunięciu zero - 1 to numer wersji formatu - po którym następują liczby całkowite o zmiennej długości kodujące rozmiar pliku źródłowego, rozmiar pliku docelowego oraz opcjonalny blok metadanych (tekst UTF-8). Treść poprawki wykorzystuje cztery typy poleceń: SourceRead (kopiowanie niezmienionych bajtów ze źródła), TargetRead (zapisywanie nowych bajtów), SourceCopy (kopiowanie z dowolnego przesunięcia źródłowego) oraz TargetCopy (kopiowanie z już zapisanego wyjścia). Plik kończy się trzema sumami kontrolnymi CRC32 (po 4 bajty każda, little-endian): jedną dla źródłowego ROM-u, jedną dla oczekiwanego wyjściowego ROM-u i jedną obejmującą sam plik poprawki. Program patchujący odmawia zastosowania, jeśli suma kontrolna źródła się nie zgadza, co zapobiega uszkodzeniu danych wyjściowych.
BPS zastąpił starszy format IPS, usuwając limit rozmiaru pliku 16 MB i dodając wbudowaną weryfikację integralności. Jest powszechnie używany do hacków ROM na SNES, GBA i NDS.
Typowe narzędzia to flips (Floating IPS, Windows/Linux), MultiPatch (macOS), UniPatcher (Android) oraz patchery przeglądarkowe, takie jak RomPatcher.js.
Bezpieczeństwo
RYZYKO: MEDIUMPliki BPS same w sobie są tylko danymi poprawki i nie mogą wykonywać kodu - wymagają oddzielnego narzędzia patchującego i ROM-u. Ryzyko wynika z pobierania narzędzi do patchowania z nieoficjalnych źródeł (niektóre mogą zawierać adware) oraz z kwestii prawnych dotyczących dystrybucji ROM-ów w Twojej jurysdykcji. Zalecane patchery (Floating IPS, RomPatcher.js) to czyste narzędzia open-source.
Szczegóły formatu
w pigułce- Microsoft Works Backup File - Starsze wpisy na niektórych stronach z informacjami o plikach twierdzą, że .bps = kopia zapasowa dokumentu Microsoft Works; jest to błędna identyfikacja - brak dowodów, by to powiązanie było rzeczywiste lub powszechnie stosowane.
Programy otwierające pliki BPS
Szczegóły techniczne
specyfikacja| Magic bytes | `42 50 53 31` (`BPS1`) na przesunięciu 0 - `1` oznacza wersję formatu |
| Kolejność bajtów | Little-endian (liczby całkowite o zmiennej długości i sumy kontrolne CRC32) |
| Kontener | Niestandardowy liniowy format binarny (brak standardowego opakowania) |
| Kodowanie | Binarny |
| Kodowanie liczb całkowitych | Bezznakowe liczby całkowite o zmiennej długości (7 bitów na bajt, MSB jako flaga kontynuacji) |
| Polecenia poprawki | SourceRead, TargetRead, SourceCopy, TargetCopy |
| Schemat sumy kontrolnej | Trzy sumy kontrolne CRC32 (źródłowy ROM, docelowy ROM, plik poprawki) - po 4 bajty każda, little-endian |
| Walidacja źródła | Patcher przerywa pracę, jeśli CRC32 źródła nie zgadza się z osadzoną sumą kontrolną - zapobiega to nałożeniu na niewłaściwy ROM |
| Typowy rozmiar pliku | Od kilku KB do kilku MB (proporcjonalnie do rozmiaru różnic w ROM) |
| Specyfikacja | Domena publiczna (opublikowana przez byuu/Near, około 2012); pojedyncza wersja BPS1 |
| Platformy docelowe | SNES, GBA, NDS i inne cele hackowania retro ROM-ów |
| Poprzednie formaty | IPS (brak sum kontrolnych, limit 16 MB), UPS |
| Wydano | circa 2012 (byuu/beat tool) |
| Najnowsza wersja | BPS1 (single version in spec) |
| Otwarty standard | Tak · bezpłatny (royalty-free) |
| Specyfikacja | github.com |
Konwersje BPS
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki BPS.