Arek "ArSoft" Lubaszka:
Zdaję sobie sprawę z tego, że zapewne temat z "Integratorem" jest
już oklepany i nudny, ale nie mogłem pozostać bierny uwagom Tebe'go
dotyczącym problemów z wczytywaniem plików XEX przez SIO2PC i
program "R5" Electrona. Wszak przecież "Integrator" to program,
który istnieje dzięki "Graph2Font" Tebe'go! W załączniku mały opis
tego, co zostało zrobione, aby wszyscy korzystający z "R5" byli
usatysfakcjonowani.
Każdy dobry krawiec wie, że nie można uszyć dobrego garnituru bez
przymiarek i poprawek. W tym, co wydaje nam się dziełem skończonym,
zawsze można doszukać się elementów, które możemy poprawić. Tak
było również z "Integratorem 3". Napisawszy program testowałem go z
różnego rodzaju plikami wejściowymi. To samo robiłem z plikami
wygenerowanymi przez ten program. Wszystkie testy wypadały
pozytywnie do czasu, gdy... Tebe zechciał wczytać demo "Beep’em All
II", w którym dołączono obrazek tytułowy właśnie za pomocą
"Integratora". Problem wystąpił podczas wczytywania pliku za pomocą
programu "R5" poprzez interfejs SIO2PC. Według "R5" plik XEX
wygenerowany przez "Integratora" nie jest plikiem XEX!?
Przypuszczalną przyczyną takiego stanu rzeczy było uszkadzanie
nagłówków plików przez "Integratora". Postanowiłem się dokładnie
przyjrzeć tym plikom XEX.
Jak już wcześniej wspomniałem, pliki XEX wczytywały się i
uruchamiały bez problemu, zarówno na emulatorze, jak i na
prawdziwym Atari. Na tym drugim wczytywanie pliku było realizowane
poprzez interfejs SIO2SD. Fakt ten wskazywał jednak na to, że
nagłówki plików są w porządku. Specjalnie do testów ściągnąłem
sobie program na PC o nazwie "Check Xex" (CHKXEX.EXE). Testy
przeprowadziłem od podstaw. Najpierw zbadałem plik XEX z obrazkiem
wygenerowanym przez "Graph2Font". Oto wynik:
Jak widać, wynik jest pozytywny. Teraz kontrola pliku z grą:
Tu również widzimy, że plik „is OK.”. No to łączymy oba pliki
"Integratorem" i testujemy:

Niestety program testujący stwierdził, że plik „is too short”. No
dobrze, ale gdzie te zepsute nagłówki? Porównajcie sobie
wyświetlane dane bloków i nagłówków ze wszystkich powyższych
testów. I co? I nic! Wszystko jest dokładnie takie same! Wszystkie
liczby przed połączeniem plików i po połączeniu plików są
identyczne. Co w takim razie spowodowało, że według programu "R5" i
"Check Xex", pliki XEX nie są plikami XEX? Czyżby historia ta nie
miała szczęśliwego zakończenia? Nie bardzo mi to odpowiadało, bo
zdawałem sobie sprawę z tego, że wiele osób może korzystać z
interfejsu SIO2PC i programu "R5" do wczytywania plików. Nie
chciałem, żeby byli oni pozbawieni tej możliwości, ale w najgorszym
przypadku tak by musiało zostać. Już miałem się poddać, gdy
postanowiłem przyjrzeć się jeszcze długości poszczególnych
plików... i tu wpadłem na trop! Plik wygenerowany przez
"Integratora" był o dwa bajty dłuższy niż to wynikało z długości
plików składowych, co jednak wcale nie przeszkadzało w jego
poprawnym wczytywaniu w „normalny” sposób ;-) ! Podejrzenie stało
się pewnością, gdy wprowadzona drobna zmiana do kodu "Integratora"
spowodowała, że test przeprowadzony przy pomocy programu "Check
Xex" wygląda tak:

Sukces? Wygląda na to, że tak, ale bez potwierdzenia tego przez
„sprawcę zamieszania”, czyli Tebe’go nie ma co świętować. Na
szczęście Tebe bardzo szybko sprawdził działanie przesłanych mu do
testów plików. Odpowiedź była w pełni satysfakcjonująca! Plik XEX
stworzony poprawionym "Integratorem" wczytuje się przez "R5"! I tak
powstał Integrator Trzeci w wersji 3.01, który produkuje pliki XEX
rozpoznawane prawidłowo przez "R5" i program "Check Xex". W tym
miejscu należą się podziękowania dla Tebe’go za wykrycie problemu i
pomoc w testach. Dzięki!
Na koniec, wszystkim ciekawym tej drobnej zmiany w "Integratorze"
powiem, że wystarczyło dodać średnik w jednym miejscu, aby plik XEX
był plikiem XEX!
Nowa wersja (3.01)
tutaj.