Trzeci "Integrator" by Kaz 2009-05-22 00:31:39

Narzędzi pomocnych w zabawie z Atari nigdy za wiele. Niedawno dostaliśmy do rąk prosty, ale pożyteczny program dla peceta Integrator Arkadiusza Lubaszki, który potrafi złączyć pliki samouruchamialne wygenerowane przez program graficzny Graph2Font z plikiem samouruchamialnym dowolnej gry czy dema. Dzięki temu każdy, bez znajomości asemblera, może sobie dołączyć grafikę jako czołówkę do programu. Ja skorzystałem z tego narzędzia, żeby w końcu dorobić sobie ekran tytułowy do gry Ninja, a przy okazji do kilku portów gier ze Spectrusia, wykonanych przez kolegę Devweba, a o czym pisałem tutaj.



Trzecia odsłona programu "Integrator" przynosi nam następujące zmiany:



Autor skromnie napisał: "Nie uważam i nigdy nie uważałem, że Integrator to jakiś wybitny program i nadal mnie dziwi, że ktoś chce go używać ;). Tym bardziej będzie mi miło, gdy choć u kilku osób zostanie on od czasu do czasu uruchomiony. (...) Oczywiście wielkie podziękowania należą się (...) każdemu z tłumaczy, którzy zechcieli wziąć udział w tym skromnym projekcie. Dziękuję!", ale dodam od siebie, że nowa wersja programu powstała właśnie pod naciskiem użytkowników - dostałem kilka maili, w których pytano mnie, czy autor może przetłumaczyć swój program na angielski, bo polski niby łatwy, ale... ;). Przy okazji tłumaczenia powstały powyższe poprawki. I tyle genezy nowego "Integratora".

Obsługa jest banalna - wskazujemy plik lub pliki z grafiką programu G2F w formacie XEX (może być ich maksymalnie 99 sztuk) oraz program główny XEX. Wybieramy, czy chcemy przechodzenie programów składowych przez naciskanie klawiszy czy po upływie 5 sekund, a potem zapisujemy gotowy projekt. Program wyrzuci nam jeden plik, powstały ze złączonych XEX-ów i gotowe... "Integrator" dokona podmiany bajtów, połączenia w jeden plik i zapisze całość pod nazwą ostatniego programu dopisując mu „_PLUS” (w nowej wersji można to dowolnie zmienić). Plik znajdziemy w katalogu z łączonym programem. Oczywiście program zapamiętuje ścieżkę dostępu do ostatniego pliku i przy kolejnym uruchomieniu nie mamy problemu z wyszukiwaniem plików.

Program można przełączyć na komunikację po polsku, czesku, angielsku, niemiecku lub hiszpańsku. Podziękowania należą się za to następującym osobom: Děkuji, Danke, Thanks, Gracias! :)

Integrator złączył nie tylko obrazki, ale i ludzi z różnych krajów - na zdjęciach Larek, Kaz, Devweb, CharliChaplin, brak Fly-a


Dodam jeszcze istotną informację od Tomasza "TeBe" Bieli, autora programu "Graph2Font", jakie wymaganie muszą spełniać obrazki przygotowane tym programem, żeby działały w "Integratorze" tak, jak się tego po nich spodziewamy - czyli dawały się przełączać klawiszem. Obrazek nie może mieć w pierwszym wierszu ekranu (8 linii od góry) żadnych zmian, tylko "gołą" grafikę. Łatwo to sprawdzić opcją "Check" (Contro+C) w menu "Options" - linie od 001 do 007 muszą mieć status "OK", nie może tam być żadnych liczb. Jeżeli bedą jakiekolwiek zmiany - program nie będzie reagował na klawisze.

Z tego miejsca ściągamy program "Integrator 3.0".
tdc 2009-05-22 02:09:21

Fajny pomysł;) Pewnie będzie to impulsem do powstania paru grafik do ulubionych gier;)

xeen 2009-05-22 08:33:44

na spectrum tzw. okładki (czyli obrazki tytułowe) to był naprawdę standard, a niektóre obrazki to był wypas.
pora na atari...

zastanawiam się w ilu grach coś takiego na atari było podczas samego wczytywania (chodzi o kasety) - ja pamiętam np. World Karate Championship.

vega 2009-05-22 11:28:43

Teraz tylko trzeba popodmieniać wersje oryginalne na jedyne słuszne z obrazkami:) Tak jak to było w zamyśle autorów ale z dziwnych względów lub przez piractwo często okaleczano wersje gier wycinając wszystko co było zbędne...

xeen 2009-05-22 11:34:12

bo pirat dba o klienta nie posiadającego turbo w magnetofonie:)

xxl 2009-05-22 12:29:00

moze tak autor doda do integratora mozliwosc dodania rowniez muzyki z rmt?

larek 2009-05-22 13:48:45

Autor nie jest biegły w asemblerze, jak niektórzy ;)

Pokrótce opiszę, co robi Integrator, aby można było zrozumieć, że nie robi zbyt wiele :)

Plik xex generowany przez G2F jest samodzielnym plikiem dosowym i z tego względu zawiera rozkaz JMP(10) oraz ładuje dane do RUNAD. Dzięki temu system wie, że ma go uruchomić po załadowaniu CAŁEGO pliku (wszystkich danych) oraz na koniec wyjść do DOSu. Oprócz tego zawiera kod:

_lp lda skctl
and #$04
bne _lp

co powoduje oczekiwanie na naciśnięcie klawisza przed wyjściem do DOSu.

Połączenie takiego pliku z innym poprzez standardową funkcję prawie każdego DOSu, nic nie daje, bo dane ładowane do RUNAD oznaczają: URUCHOM PROGRAM PO WCZYTANIU WSZYSTKICH DANYCH, czyli również tych danych, które należą do połączonej np. gry. Z reguły ta gra też załaduje sobie jakieś dane do RUNAD, a w tym przypadku istnieje zasada - kto ostatni, ten wygrywa :) i dlatego nasz obrazek się nie pojawia na ekranie.

Integrator zmienia w pliku xex RUNAD na INIAD, a JMP(10) na RTS. Po takiej zmianie system wie, że zaraz po wprowadzeniu jakiejś wartości do INIAD ma uruchomić to, co jest już załadowane, a dalsze ładowanie wstrzymać do momentu napotkania rozkazu RTS. Pozwala to na uruchomienie obrazka złączonego z jakimś innym plikiem zaraz po załadowaniu jego danych, a przed dalszym odczytywaniem.
Integrator potrafi też podmienić fragment kodu odpowiedzialny za czekanie na naciśnięcie klawisza na kod:

ldx $04
dex
_lp cpx $04
bne _lp

co powoduje odczekanie 5 sekund zamiast czekania na wciśnięcie klawisza.

I tyle. To proste rozwiązanie daje nam możliwość łączenia plików z obrazkami i cieszenia się z kolejnego ich wczytywania i uruchamiania.

Dołączenie plików z RMT do obrazka nie spowoduje odgrywania muzyki. Tu musi zadziałać player we wspólpracy z programem wyświetlającym obrazek, co jest już bardziej skomplikowane do zrobienia niż podmiana kilku bajtów.

Jeśli byłaby taka możliwość, to każdy mógłby sobie złączyć takie pliki jednym z wielu programów do łączenia plików. Można spróbować...


Oczywiście osoby, które znają dobrze asembler są sobie w stanie wygenerować obrazki z muzyką, ale czy udostępnią tak zaawansowaną technologię wszystkim pozostałym? Na to nie potrafię odpowiedzieć.

sikor 2009-05-22 17:31:28

A ja mam prośbę do imć Pana administratora, aby wszelkiegierki z dodanymi obrazkami miały dodatkowy wyróżnik (I) w opisie (od integrator), co wprowadzi jako-taki porządek i ku uciesze ludu spracowanego łatwiej będzie takie pliki odnaleźć...

zaxon 2009-05-22 18:21:15

No super, ostatnio wiecej w ZX Spectrum operuje i za kazdym razem widze te ladowane obrazki, az zal ze Atarowcy nie mieli, choc to tez wina piratow ktorzy zbedne w/g nich rzeczy wycinali.

skóter 2009-05-22 18:25:30

http://img219.imageshack.us/img219/6530/ninjae.png

Cezar 2009-05-22 19:55:17

Popieram pomysł mości Pana Sikora :)

Cezar 2009-05-22 20:31:45

Skoro już gry miałyby mieć wyróżniki, to może warto byłoby dodać też takie znaczniki do gier, które wymagają większej ilości pamięci niż 64 kB (128...), że mają muzykę stereo (S) i że współpracują z kartą VBXE (V) ? Nie wiem, tylko pytam.

Kaz 2009-05-22 20:34:17

Xeen - mnie sie przypomina Chimera. Akurat mialem slabo to nagrane na kasecie i czesto podczas odczytu wyskakiwal blad, wiec naogladalem sie tej czolowki tyle, ze az strach :D.

Xxl - pracuje nad tym, zeby taka mozliwosc byla :)

Sikor - nie wydaje mi sie to przydatne, ani konieczne. W nazwie pliku w nawiasach informuje o wymaganiach programu, a nie o kulisach jego powstania :). Jezeli ktos chce, to moze prowadzic liste takich programow - chetnie ja umieszcze i bede aktualizowal. Ale mieszanie wymagan co do programu z innymi informacjami wprowadziloby tylko zamieszanie.

Poza tym, przeciez to nie musi sluzyc tylko do wzbogacania cudzych gier czy programow. Napiszesz sobie program w Basicu, skompilujesz, a potem mozesz dolaczyc obrazek w G2F.

Skóter - swietne! :P

Kaz 2009-05-22 20:35:54

Cezar - http://tiny.pl/3h2n

Cezar 2009-05-22 20:47:40

Faktycznie, chyba się starzeję, coś z pamięcią nie tak :)

MaW 2009-05-22 21:23:03

czy nie powinno być czasem "supplied" ?

sikor 2009-05-22 22:15:39

@Kaz: Ty tu rządzisz. Konieczne nie jest, ale przydatne - a i owszem. Hipotetycznie: lubiłem grę "Kaz na wakacjach"*, miałem ją na kasecie. Niestety, nie miała początkowego obrazka.
Wchodzę na atarionline.pl - i co widzę? Moja ulubiona gra jest w katalogu! Juppi! Ale co to, jest tam 28 wersji? Ściągam na chybił-trafił 7 z nich, na przykład 1,3,4,7,9,12,18 - na pierwszy rzut oka niczym się nie różnią, poza tym, że któraś tam ma nieśmiertelność (to mi nie jest konieczne), inna jest spakowana, jeszcze inna pozwala obejrzeć koniec gry... Niestety, nadal nie wiem, że jest obrazek tytułowy (a raczej powinien być - bądź był wycięty przez pirata, bądź firma developerska dbała o to, aby kaseta była krótka). Po przetestowaniu tychże (jako zwykły użytkownik) zapewne nigdy nie sprawdzę pozostałych wersji, więc nigdy się nie dowiem, że wersje 13,17,19 miały obrazek tytułowy dodany przez kogoś w jakimś celu.
Oczywiście zakładam, że nowe gry od razu mają taki obrazek, więc nie istnieje potrzeba, aby dodawać specjalną informację o dodaniu takowego.
Ale w sumie nie jest to wymóg konieczny, tylko - jak napisałem wcześniej - umożliwiło by nowe spojrzenie na temat. Tym bardziej, że wcale nie jest powiedziane, że wersja z obrazkiem będzie wersją ostatnią w katalogu.
--------------------------------------------
------------------------------
* Aluzja zamierzona ;)

uicr0Bee 2009-05-22 23:22:47

Ja się zgadzam z sikorem, katalog prosi się o odświeżenie. Obecne opisy (v1), (v2), (v...) są mało znaczące.
Przykład:
Boulder Dash (v1)
Boulder Dash (v1).atr
Boulder Dash (v1).xex
Boulder Dash (v2).atr
Boulder Dash (v2).xex
Boulder Dash (v3).atr
Boulder Dash (v3).xex
Boulder Dash (v4).atr
Boulder Dash (v4).xex
Boulder Dash (v5).xex
Boulder Dash (v6).xex
Boulder Dash.cas
Boulder Dash (v10)
Boulder Dash (v11)
Boulder Dash (v2)
Boulder Dash (v3)
Boulder Dash (v4)
Boulder Dash (v5)
Boulder Dash (v6)
Boulder Dash (v7)
Boulder Dash (v8)
Boulder Dash (v9)

Wiem, wiem, i tak macie pełne ręce roboty, ale tak na przyszłość :)
Jak dla mnie przy każdym tytule miło by było mieć rozmiar w bajtach i MD5, a ew. dodatkowo: wydanie (i tu do wyboru np: "dump oryginału" + wydawca, "crack taki", "crack owaki", może screen tytułowy?). Może dałoby się dać to do uzupełniania ludzkości :) Wystarczyłaby wydmuszka z informacjami podstawowymi, które łatwo Wam dodać automatycznie (MD5, rozmiar), i pustymi na początku inf. dodatkowymi?
Takie luźne pomysły :)

Kaz 2009-05-23 00:04:12

Sikor, uicr0Bee - pomysly cenne, dziekuje. Jest jednak pewne ale :).

uicr0Bee - numeracja wersji nie jest malo znaczaca, jest KLUCZOWA. Inaczej po zgraniu wszystkich gier na dysk mialbys nadpisane jedne na drugich. Do czego zas mialby sie przydac zwyklemu uzytkownikowi rozmiar w bajtach i MD5, tego nie wiem?

Jezeli zas chodzi o opisywanie plikow - jak zwykle jestem za! Pod warunkiem, ze pomyslodawca zrobi na przyklad w ten sposob 100 gier - na probe :). Przyklad z Boulder Dashem jest doskonaly - prosilbym o oznakowanie czyj crack jest kogo :), ktora wersja zostala wydana w USA, a ktora w Europie, porownanie z oryginalami, etc.

Sikor - tu nie chodzi o to, kto rzadzi, tylko wszelkie powazne zmiany (a taka jest moim zdaniem znakowanie plikow) wymaga przemyslanego uzasadnienia, solidnej argumentacji. Wprowadzanie do informacji o wymaganiach programu dodatkowej informacji o tym, ze zostal zrobiony akurat Integratorem, uwazam za niepotrzebne. I tlumacze dlaczego.

Rownie dobrze mozna by znakowac programy, ktore zostaly skompilowane. Albo takie, ktore napisane zostaly w Action. Bo akurat ktos bedzie na wakacjach i przegapi, ze nowy program w Action powstal... Mozna to zrobic, ale po co od razu w postaci znakowania plikow? Jest duzo prostsze rozwiazanie, ktore zaprezentowalem - prowadzenie listy programow. Ciebie interesuja te z obrazkami - nie ma problemu, mozemy prowadzic taka liste. Kogos innego programy z obsluga myszki - nie ma problemu, nawet juz prowadzimy taka liste. Gdyby zas rozszerzac nazwe plikow o kazda kategorie, jaka kogos zainteresuje, to bedziemy rzeczywiscie mieli rozbudowane nazwy plikow - i zwiazane z tym problemy (chocby z nagraniem na CD, chocby z szerokoscia nazwy na stronie, etc).

Rozwiazaniem problemu z Integratorem, jezeli nie odpowiada Wam pomysl na prowadzenie listy takich programow - jest TOSEC. Program TOSEC-owy podaje zarowno nazwe producenta gry, jak i rok powstania, informuje o crackach i nadaje sumy kontrolne plikow. Nazwy tych plikow sa dlugie, pelne informacji i oczywiscie wielu przeklaman, bo niestety informacje o ktorych wspominal uicr0Bee w praktyce sa czesto nie do sprawdzenia/ustalenia. I w ten sposob mozna sobie przetworzyc wlasne pliki, sciagniete np. z atarionline.pl i trzymac cala kolekcje w takiej postaci - z wieloma informacjami w pliku.

Oczywiscie najpierw trzeba tam bedzie te informacje o plikach Integratorowych wprowadzic - ale to akurat szansa na wziecie udzialu w tym fajnym przedsiewzieciu.

Moim zdaniem lepszym rozwiazaniem jest baza danych. Ale tutaj jest Atarimania i Fandal. Szkoda, ze nie kolekcjonuja wszystkich plikow danej gry, tylko wybrane, ale takie sobie przyjeli zasady, wiec nie ma co sie rzucac. Jezeli wprowadzac informacje, o ktore sie upomnieliscie to wlasnie nie do nazwy pliku, ale do bazy danych. Z pomoca paru osob, z ktorymi juz wstepnie korespondowalem, ma to szanse zaistniec, ale wcale nie szybko - z powodu moich ograniczen czasowych. Znacznie szybciej mialoby szanse zaistniec, gdyby znalazl sie szef takiego projektu, ktory bedzie mogl poswiecic mase czasu na koordynacje prac.

Tdc 2009-05-23 02:29:38

A ja jednak popieram pomysł Sikora. Skoro ziegratorowanych gier może być w przyszłości wiele, to prowadzając rozróżnienie dziś, spowodujemy pewien standard. Dzięki temu pojawienie się gry w necie będzie czytelne dla wszystkich. Przykładowo opis na Atariki, w przypadku niewprowadzenia będzie musiał podawać nazwę (lub nazwy!) plików, w których jest to i to. Natomiast tak to podawana będzie jedynie informacja o takiej wersji i każdy będzie wiedział co gdzie jest.

Tdc 2009-05-23 02:32:21

...dochodzi jeszcze problem, że pewnie powstanie wiele wersji tej samej gry zgodnie z wizją artystyczną kolejnych autorów, wtedy trzeba będzie rozróżniać kolejne wersje z I.

larek 2009-05-23 08:42:28

Nie przesadzajcie z tym wysypem gier z czołówkami. Integrator jest dostępny od dłuższego czasu i jakoś nie widzę aby masowo powstawały nowe grafiki do starych gier... Jedynie Kaz dołożył obrazki do kilku istniejących już gier. Jeśli natomiast ktoś dołączy obrazek do swojej nowej gry, to raczej nie będzie miało znaczenia, czy jest to zrobione Integratorem, czy też nie. To tak, jakby zaznaczać, że program w asemblerze kompilowany był QA czy Mads'em.

sikor 2009-05-23 09:29:06

@larek: nie tylko, tylko tyle, że mój się nie bardzo nadaje - z prostej przyczyny, nie za bardzo mogę przetrawić G2F ;( Ale Kaz chyba poprawi obrazek ;)

Kaz 2009-05-23 10:42:55

A jak ktos dolozyl obrazek nie-Intagratorem to tez sie bedzie liczyc czy nie? Bo wlasnie otrzymalem taka gre... A jezeli nie bedzie wiadomo, czym dolozyl?

I w czym tkwi problem, zeby bylo mozna zrobic liste, zamiast pakowac przesadne dane do nazwy pliku? :)

xxl 2009-05-23 11:00:46

lepiej by bylo oznaczac oryginalne wydania a cala reszte .... sciagasz na wlasna odpowiedzialnosc ;-)
: wyprobowalem integrator, robi to co trzeba :-) ewentualnie pole do edycji ile sekund ma czekac. no albo edycje tych 7 bajtow zeby mozna bylo wywolac program ktory zostal wczesniej (przed obrazkiem) zaladowany - np muzyka/programik do scrolla czy cokolwiek

Kaz 2009-05-23 11:40:18

Ja bym jeszcze prosil o mozliwosc odwrocenia procesu Integratorem czyli odlaczenie obrazka z pliku.

Pecus 2009-05-23 11:47:37

Czyli potrzebujesz Dezintegratora!!! :)

sikor 2009-05-23 15:13:18

@Kaz: dla przykładu dałem I, może być po prostu P (picture) lub O (obrazek), narzędzie nieważne.

jell 2009-05-24 17:33:12

tak wracajac do tematu: http://img219.imageshack.us/img219/6530/ninjae.png - rozwalilo mnie to ;-)

Kaz 2009-05-24 18:01:48

Mnie tez sie podoba, wlasnie tego czesto mi brakuje na scenie - inteligentnego dowcipu :).