[polskie znaki w standardzie LATIN II] SaveGamer 1.666 by Krzysztof az. Spis treci: [1]. Przeznaczenie programu/krtka charakterystyka. [2]. Edycja plikw savegame. [3]. Opcje programu. [4]. Modyfikowanie pliku SG1666.DTA. [5]. Uwagi kocowe. Kontakt z autorem. [1]. Przeznaczenie programu/krtka charakterystyka. SaveGamer 1.666 suy do modyfikowania plikw savegame zwanych dalej SG (czyli plikw z zapisem stanu gry). W tej wersji programu monna zmieni pliki SG dla okoo 120 rnych gier. Dodatkowo uytkownik, we wasnym zakresie, moe w atwy sposb wprowadza nowe pozycje. Program by pisany z myl o graczach, ktrzy napotykaj na powane przeszkody w przechodzeniu gier. SaveGamer moe si take przyda tym, ktrzy nie przepadaj za oszukiwaniem w grach - wprowadzanie niewielkich modyfikacji w plikach SG czsto powoduje, e gra staje si atrakcyjna. Generalnie jednak bezmylna, niczym niepohamowana ch do oszukiwania w grach psuje ca zabaw, dlatego przed uyciem SaveGamera i programw mu podobnych naley si dobrze zastanowi. Wymagania: pami RAM - 200kB, pami EMS - 10~20 kB. W pliku C:\CONFIG.SYS musi si znale wpis DEVICE=C:\WINDOWS\EMM386.EXE AUTO RAM lub podobny, miejsce na HDD - 550 kB, karta graf. - VGA (SVGA zgodna z VESA, ktra jest potrzebna do wywietlenia obrazka przy uruchomieniu SaveGamera), procesor - 386 lub lepszy, mysz - MS MOUSE lub kompatybilna Pliki wchodzce w skad programu: SG1666.EXE - gwny plik wykonywalny, SG1666.DTA - plik z informacjami niezbdnymi do poprawnego funkcjo- nowania SaveGamera, SG1666.MBF - obrazek-logo wywietlany przy uruchomieniu SG1666.FON - plik z matryc znakw (font) SG1666.CFG - plik z konfiguracj README.TXT - wanie go czytasz UWAGA: Wersja 1.666 znacznie rni si od wczeniejszych (1.05 i 1.06); prawie zupenie zosta zmieniony plik skryptw, dlatego nie mona wykorzystywa jego starej wersji. Po uruchomieniu programu naszym oczom ukazuje si menu gwne, w ktrym jest 7 pozycji: Wybierz gr Wybierz plik SG Edytuj plik SG Archiwizuj plik SG Opcje Info Wyjcie [2]. Edycja plikw savegame. Chcc zmieni plik savegame jakiej gry musimy wczeniej t gr wybra, suy do tego pozycja [Wybierz gr]. Podczas wybierania moemy korzysta z nastpujcych klawiszy: PgUp - przesunicie listy o stron w gr PgDown - przesunicie listy o stron w d Home - przeskok na pocztek listy End - przeskok na koniec listy UpArrow - jedna pozycja w gr DownArrow - jedna pozycja w d Esc - anulowanie wybierania Enter - akceptacja wyboru Po wybraniu gry program zapyta o lokalizacj i nazw pliku SG; w tym celu wywietlone zostan pliki i katalogi na biecym dysku, ktry jednak mona zmieni naciskajc klawisz Tab a pniej liter danego dysku. Po czynnociach opisanych wyej moliwa jest ju waciwie edycja wybranego pliku SG; naley wybra pozycj [Edytuj plik SG]. W tym miejscu program moe zapyta o pewne dane niezbdne do prawidowego obliczenia offsetw w pliku SG. To czy program zada interakcji od uytkownika zaley od konkretnej gry i budowy tworzonego przez t gr pliku SG: [] Na przykad w grze [HEROES OF MIGHT & MAGIC 2] SaveGamer poprosi o wprowadzenie imienia bohatera; po tym nastpi prba znalezienia tego imenia w pliku SG, by wreszcie program mg poprawnie obliczy offsety rnych charakterystyk bohatera. UWAGA: rozrniane s mae i due litery, tak wic cig 'Kastore' to nie to samo, co 'KASTORE'! [] W grze [WARCRAFT 2: TIDES OF DARKNESS] mamy do czynienia z wieloma typami jednostek i budynkw; przy edycji plikw SG tej gry SaveGamer zapyta o numer jednostki/budynku ('Ktr jednostk/budowl chcesz edytowa?') - wyswietlone zostanie okienko, w ktrym bdziemy mogli ten numer wprowadzi przy uyciu klawiszy strzaek (UpArrow DownArrow), klawisza End i Home. Gdy wreszcie dojdziemy do okienka edycji pliku SG moemy zacz wprowadza zmiany w charakterystykach bohaterw, rnych zasobach, moemy zmienia np. stan konta, liczb y, itp. Wszystkie zmiany s uwidaczniane na ekranie, dodatkowo program wywietla wiele uytecznych informacji (zaczynajc od grnej czci ekranu): [] [Nazwa gry:] - nazwa aktualnie wybranej gry, [] [Nazwa pliku SG:] - tutaj wywietlana jest nazwa wybranego pliku savegame'a lub maska tego pliku (np. '*.SAV'), [] [Lokalizacja SG:] - jest to miejsce na dysku, w ktrym znajduje si wybrany plik savegame, [] [Adres bazowy:] - informacja dla bardziej zaawansowanych uytkownikw, ktrzy we wasnym zakresie dodaj nowe pozycje do pliku SG1666.DTA, [] [Warto maks.:] - jest maksymaln wartoci jak moe przyj biece pole, [] [Liczba pl:] - liczba wszystkich pl, ktre moemy zmieni, [] [Interpretacja wart.:] - czasami istnieje potrzeba sownej interpretacji wartoci jakiego pola (np. w gierce [F-15 STRIKE EAGLE 3] pole [Ranga] moe przyj waroci od 00h do 06h oznaczajace kolejno 2nd Lieutenant, 1st Lieutenant, Captain ...itd.); wanie w tym miejscu jest ona wywietlana, [] [Autor poprawki :] - jest to imi, nazwisko lub ksywa autora poprawki, ktra znajduje si w pliku SG1666.DTA, Uytkownik moe porusza si po licie z polami korzystajc z klawiszy strzaek (Up- i DownArrow), klawiszy PgUp, PgDown, Home, End. Do zmiany wartoci biecego pola su nastpujce klawisze: LeftArrow - (czyli strzka w lewo) powoduje zmniejszenie wart. pola o 1 RightArrow - (czyli strzka w prawo) powoduje zwikszenie wart. pola o 1 Shift+LeftArrow - powoduje zmniejszenie wart. pola o 1*10 Shift+RightArrow - powoduje zwikszenie wart. pola o 1*10 Ctrl+LeftArrow - powoduje zmniejszenie wart. pola o 1*100 Ctrl+RightArrow - powoduje zwikszenie wart. pola o 1*100 Insert - zmiana wart. pola o +1000 Delete - zmiana wart. pola o -1000 Shift+Delete - zmiana +1000*10 Shift+Insert - zmiana -1000*10 Ctrl+Delete - +1000*100 Ctrl+Insert - -1000*100 +/- (take szary) - warto zostaje zmieniona o +1000000/-1000000 Shift z +/- - zmiana +1000000*10/-1000000*10 Ctrl+End - ustawienie wartoci na max Ctrl+Home - ustawienie wartoci na 0 Klawiszem Enter zatwierdzamy edycj (zmieniony plik SG zostanie zapisany na dysk), natomiast klaw. Esc powoduje porzucenie edycji (i anulowanie wszystkich wprowadzonych zmian). UWAGI: [] Pliku SG nie powinnimy edytowa bez wczeniejszego utworzenia kopii zapasowej tego pliku. [] Czasami zdarza si, e warto pola odczytana z pliku SG jest wiksza ni warto maksymalna - w takiej sytuacji nie dziaaj klawisze zmiany wartoci (oprcz CTRL+HOME i CTRL+END). [] Podczas zapisywania pliku SG moe pojawi si komunikat 'Zapisano wartoci tylko pod poprawne offsety! Bdnych adresw:' Przyczyn pojawienia si tego komunikatu jest zy zakres jednego lub wicej offsetw (offset z powodu bedu w pliku SG1666.DTA moe by wikszy ni plik SG lub moe by ujemny). [3]. Opcje programu. Po wybraniu pozycji [Opcje] z menu gwnego wywietlone zostaje okienko z nastpujcymi pozycjami: [] [To] - jest to znak, ktry bdzie pni rol ta; najlepszy wydaje si by znak '' o kodzie ASCII 177. Aby zmieni ten znak naley najpierw nacisn spacj,pniej dany znak a na kocu Enter, [] [Obrazek] - opcja zaznaczona powoduje, e przy uruchamianiu SaveGamera wywietlany bdzie obrazek (SG1666.MBF), [] [Auto archiwizacja] - gdy zaznaczona, to przed zapisaniem zmian w edytowanym pliku SG zostanie utworzona jego kopia zapasowa (w pliku AUTOSAVE.SAV, w katalogu SaveGamera), [] [Pytanie o wyjcie] - ustawiona powoduje, e przed wyjciem z programu pojawi si okienko z prob o potwierdzenie wyjcia, [] [Pytanie o zapis] - opcja decyduje o tym, czy przed zapisaniem edytowanego pliku SG uytkownik zostanie poproszony o potwierdzenie tej operacji, [] [Sortuj nazwy gier] - wcza/wycza sortowanie nazw gier (pojawia- jcej si po wybraniu poz. [Wybierz gr] z menu gwnego), [] [Sortuj nazwy plikw] - jw., ale dotyczy listy plikw i katalogw przy wyborze pliku savegame (sortowanie alfabetyczne), [] [Pasek postpu] - opcja zaznaczona powoduje, e podczas pewnych operacji (min. I/O) wywietlany jest pasek postpu, [] [Wart. w systemie hex] - decyduje o sposobie reprezentacji liczb; liczby mog by wywietlane w systemie szesnastkowym lub dziesitnym, Po okienku z opcjami moemy porusza si tylko przy uyciu klawiatury (strzaki gra/d lub lewo/prawo). Biec opcj wczamy/wyczamy klawiszem spacji, natomiast zapis opcji (do pliku SG1666.CFG) nastpuje po naciniciu klawisza Enter. UWAGI: [] Gdyby podczas uruchamiania SaveGamera komputer si zawiesi to naley skasowa plik SG1666.CFG -podczas nastpnego uruchomienia ustawione zostan opcje domylne (min. nie bdzie pokazywany obrazek, ktry jest w rozdzielczoci wymagajcej karty SVGA zgodnej z VESA) [] Czasami podczas wybierania pliku SG mog wystpi pewne bdy (tak si dzieje, gdy w katalogu jest baaardzo duo plikw) - dlatego naley wyczy opcj [Sortuj nazwy plikw]. [4]. Modyfikowanie pliku SG1666.DTA. Aby zmodyfikowa okrelony plik SG,SaveGamer musi dysponowa wieloma informacjami tzn. nazw pliku savegame, offsetami w tym pliku, znaczeniem offsetw, itd. Te informacje pobierane s z pliku SG1666.DTA - plik ten moe by edytowany przez uytkownika, jednak dopiero po wczeniejszym zrozumieniu znaczenia znajdujcych si w tam zapisw. W pliku SG1666.DTA znajduj si sekcje - kada sekcja dotyczy poprawki tylko dla jednego pliku SG. Chcc dopisa now pozycj do pliku musimy utworzy wanie sekcj, ktra ma nastpujc budow (za rednikami znajduje si komentarz): ; ;\ SG=nazwa_pliku_sg1, nazwa_pliku_sg2, ... ; prolog sekcji AUTHOR=autor_poprawki ;/ SIZE=rozmiar_zapisu1 ; (*) MAX=maksymalna_warto_zapisu1 ; (*) SEARCHINFO=pytanie_o_string ; (*) OBJECT=first,count,size,wywietlany_string ; (*) BASEADDR=offset_bazowy ; (*) MAX=maksymalna_warto_zapisu2 DEFINE=identyfikator ; (*) #00h=interpret_wartoci_00h ; (*) #04h=interpret_wartoci_04h ; (*) #06h..10=interpret_wartoci_od_06h_do_10 ; (*) ADDRESS=offset_w_pliku_sg_2_1, offset_w_pliku_sg_2_2, ... FIELDID=nazwa_pola2 SIZE=rozmiar_zapisu3 ;\ MAX=maksymalna_warto_zapisu3 ; blok dotyczcy jednego ADDRESS=offset_w_pliku_sg_3_1, ... ; pola (nazwa_pola3) FIELDID=nazwa_pola3 ;/ ADDRESS=offset_w_pliku_sg_4_1, ... FIELDID=nazwa_pola4 . . . ENTRY_END ; epilog sekcji ; ;Gwiazdka w komentarzu ('; (*)') oznacza, e ten wpis nie jest ;niezbdny w sekcji. [] Wpisy, ktre s niezbdne do utworzenia poprawnie zbudowanej sekcji: Pierwszy zapis ('') to pocztek sekcji; pomidzy ostrymi nawiasami musi si znale nazwa gry, ktrej dotyczy poprawka. Naley si upewni, czy taka nazwa nie wystpuje wczeniej a jeli wystpuje to naley j odpowiednio zmieni, np. dodajc dodatkow informacj o charakterze poprawki (np. '{dotyczy pliku SG.SAV}', itp.) UWAGA: znakw '<' i '>' nie wolno uywa w innych miejscach pliku SG1666.DAT (nawet w linijkach z komentarzem - poprzedzonych znakiem ';') Zapis 'SG=nazwa_pliku_sg1' informuje SaveGamera jaka jest maska pliku savegame. Gdy jaka gra zapisuje savegame'y w plikach o rnych nazwach (np. HEROES OF MIGHT & MAGIC zapisuje save'y w plikach *.CGM oraz *.GM?), to maski naley oddzieli przecinkiem ('SG=*.CGM,*.GM?'). UWAGA: poprawka z JEDNEJ sekcji moe dotyczy tylko i wycznie JEDNEGO pliku SG! Po wpisie 'ADDRESS=' naley umieci offsety w pliku SG dotyczce jednego pola. Offsety mona umieszcza jeden za drugim oddzielajc je jednak przecinkiem (np. ADDRESS=1Fh, 24, $30) lub dla kadego offsetu stosowa oddzielny zapis, tzn.: ADDRESS=1Fh ADDRESS=24 ADDRESS=$30 Format adresu moe by bardziej dowolny, bo np. zamiast wpisywa 'ADDRESS=10' moemy napisa 'ADDRESS=5+5'. Do tego dochodz dodatkowe moliwoci takie, jak: ADDRESS=%FILESIZE-100+12h ADDRESS=%SEARCHSTR+10h ADDRESS=%OBJ+10h '%FILESIZE', '%SEARCHSTR', '%OBJ' to specjalne zmienne, ktre opisane s gdzie dalej. 'FieldID=' zamyka blok dotyczcy jednego pola; wpis ten zawsze powinien si znale na kocu bloku. Wpis 'ENTRY_END' zamyka ca sekcj. [] Wpisy dodatkowe, rozszerzajce standardow budow sekcji: Po wpisie 'AUTHOR=' naley umieci imi/nazwisko/ksyw autora poprawki (maks. 60 znakw). 'SIZE=' ustawia rozmiar zapisu do pliku SG (od 1 do 4 bajtw); jeli poniej nie wystpi nastpny taki wpis to bdzie si on odnosi do wszystkich pozostaych pl. Domylnie rozmiar zapisu wynosi 1. 'MAX=' ustawia najwiksz moliw warto, jak moe przyj zapis do pliku SG. Najwiksz liczb, jak mona wpisa za 'MAX=' jest 7F FF FF FFh, natomiast najmniejsz 0. Domylnie MAX=FFh. 'SEARCHINFO=txt_do_wywietlenia' - po zastosowaniu tego wpisu SaveGamer, po wybraniu pozycji [Edytuj plik SG] z menu gwnego, wywietli okienko z napisem 'txt_do_wywietlenia' i zada od uytkownika wprowadzenia cigu tekstowego. Po tym nastpi prba odnalezienia tego cigu w pliku SG; offset, na ktrym ten cig zostanie znaleziony bdzie odtd pamitany w zmiennej %SEARCHSTR. Domylnie zmienna %SEARCHSTR ma warto 0. 'OBJECT=first,count,size,wywietlany_string' - jest to informacja o obiektach w grze. Obiekty to np. jednostki wojskowe, bohaterzy w grach RPG, miasta, budynki oraz wiele innych. {z DDT PACK:} Zazwyczaj struktura danych kadego obiektu jest taka sama - istnieje pewna matryca, wedug ktrej s zapisywane informacje o wszystkich obiektach. Dane kadego z nich zajmuj tyle samo bajtw, liczby na tych samych pozycjach odpowiadaj za te same waciwoci obiektu. Tak wic jeeli rozszyfrujemy, jak zapisano informacje o jednym obiekcie, bdziemy mogli od razu zmienia dane innych. 'first' to offset pierwszego obiektu, 'count' to liczba wszystkich obiektw, 'size' to rozmiar danych jednego obiektu, chocia jest to bardziej odlego w bajtach pomidzy dwoma ssiednimi obiektami, 'wywietlany_string' to cig tekstowy wywietlany w momencie, gdy SaveGamer zapyta uytkownika o numer obiektu. Gdy ten numer zostanie ju wprowadzony to w zmiennej %OBJ powinna si znale warto obliczona z nastpujcego wzoru: [first+(count-1)*size]. Domylnie zmienna %OBJ ma warto 0. 'BASEADDR=offset_bazowy' - w ten sposb ustawiamy warto tzw. offsetu bazowego. Offset bazowy jest zawsze dodawany do wszystkich offsetw wystpujcych po wpisie 'ADDRESS='. Przykad: BASEADDR=5 ADDRESS=10 FieldID=Pole1 ;offset tego pola w rzeczywistoci wynosi 10+5=15 ADDRESS=12 FieldID=Pole2 ;offset tego pola w rzeczywistoci wynosi 12+5=17 BASEADDR=2 ADDRESS=10 FieldID=Pole1 ;offset tego pola w rzeczywistoci wynosi 10+2=12 Domylnie adres (offset) bazowy wynosi 0. 'DEFINE=ident' tworzy now list sownych interpretacji wartoci, ktre czasami s bardzo przydatne w edytowaniu plikw SG; np. w grze [F-15 STRIKE EAGLE 3] na pozycji 25h pliku SG tej gry (ROOSTER.DAT) znajduje si informacja o randze pilota - wpisanie pod ten offset wart. 0 oznacza, e pilot ma rang '2nd Lieutenant', itd... ; SG=ROSTER.DAT MAX=06h DEFINE=ranga #00h=2nd Lieutenant #01h=1st Lieutenant #02h=Captain #03h=Major #04h=Lieutenant Colonel #05h=Colonel #06h=Brigade General (po misji nie bdziesz mg lata) ADDRESS=25h FieldID=Ranga ENTRY_END ; Jak atwo zauway dodawanie interpretacji sownych nie jest skomplikowane: przed wartoci naley umieci znak hasz '#', a po wartoci musi si znale znak '=' i sowna interpretacja. Mona take definiowa sowne interpretacje dla zakresu wartoci: #00h..64h=zakres od 0 do 100 (64 hex). Okrelon list interpretacji sownych tworzymy tylko raz - gdy chcemy j wykorzysta przy innych polach to umieszaczmy przy nich jedynie wpis 'DEFINE=zdefiniowana_wczeniej_lista_interpretacji': ; DEFINE=lista_interpretacji ; nadanie nazwy licie #00h=interpret00 ; zdefiniwanie wartoci, #01h=interpret01 ; ktre bd interpretowane sownie #02h=interpret02 ADDRESS=$10 FieldID=pole1 ADDRESS=$12 ; tu nie wykorzystujemy FieldID=pole2 ; listy interpretacji sownych DEFINE=lista_interpretacji ; ponowne wykorzystanie listy ADDRESS=$12 FieldID=pole2 ; UWAGI: [] Zmienna %FILESIZE zawiera rozmiar wybranego pliku SG. [] Liczby w pliku SG1666.DTA mog by podawane w systemie dziesitnym (bez adnych dodatkowych znakw) lub te w systemie szesnastkowym ale ze znakiem 'h' na kocu albo znakiem '$' na pocztku:$64=64h. [] Kady wpis powinien by w osobnej linii, ktrej maksymalna dugo wynosi 192 znaki. [] Dugoci wszystkich cigw tekstowych (pomidzy znakami '<' i '>', za wpisem 'FiledID=', 'DEFINE=', 'SEARCHINFO=' i innych) nie moe przekracza 60 znakw. [] Wszelkie komentarze naley umieszcza po redniku. [5]. Uwagi kocowe. Kontakt z autorem. Dzikuj za wsparcie i cenne uwagi/komentarze Marcinowi Wicharemu oraz Jimowi Midnite z Gamblera. Jednoczenie zachcam wszystkich zainteresowanych grzebaniem w plikach savegame do cignicia sobie tzw. DDT PACKa. Opinie, uwagi, itp. prosz przesya e-mailem na adres sourcer@polbox.com Miej zabawy yczy AUTOR.