Spróbuję.
Ściągnąłem plik ajek_speedy_2700_splited.7z, aby "pożyczyć" loader binarny i uruchomić go przez deasembler.
To dobra wiadomość, że loader obsługuje już różne wejścia sygnału (port joysticka/DATA IN). Z ciekawości porównam rozwiązanie z moim Omicronem Turbo.
Skrócenie loadera na niewiele się zda, bo nadal będzie to blok 3KB, chociaż im więcej zer w bloku, tym szybciej się ładuje. Widzę też, czy Super Packer może loader trochę skompresować.
Pod względem programowania w Javie będzie to łatwe. Format pliku Unerring Masters jest zasadniczo identyczny, więc będzie to CTRL-INSERT, SHIFT-INSERT z pewnymi modyfikacjami.
...Boże. Program ładujący sam się przemieszcza i xoruje. W ramach bonusu samomodyfikujący się kod. Ale z debuggerem Altirra odniosę sukces.
...Izolowałem rdzeń kodu programu ładującego binarnego. Można go uruchomić i zajmuje adresy od 0x0700 do 0x089E. Całkiem mały.
Aby był w pełni użyteczny, będę musiał wprowadzić pewne zmiany
1. Dostarczę mu inny relokator - byłoby to pożądane, gdy loader najpierw ładuje się pod adres 0x2100, a następnie przenosi się do 0x0700, aby nie zniszczył przedwcześnie KSO. Ale bez XORingu ani innych dziwactw. Potrzebny będzie również kod inicjujący.
2. Błąd ładowania zostanie zgłoszony tylko przez zwykły różowy ekran. Nie ma gwarancji, że jakiekolwiek litery i tak będą mogły zostać wyświetlone w takim scenariuszu.
Deasemblacja wygląda czytelnie, więc dodam skomentowany kod źródłowy do mojego repozytorium GIT.
Spodziewam się, że zmodyfikowana wersja będzie miała długość około 600 bajtów i upewnię się, że reszta bloku 3 KB jest wypełniona zerami, aby skrócić czas ładowania.