forum speccy.pl

ZX Spectrum => GRY => Wątek zaczęty przez: KrisZX w 2017.03.16, 20:24:40

Tytuł: Gry w formacie SNA
Wiadomość wysłana przez: KrisZX w 2017.03.16, 20:24:40
Gdzie można znaleźć gry w formacie sna ? Lub jak to zrobić pod emulatorem ? Potrzebuje skompletować jakąś słuszną 10 do zaprogramowania carta, ale w zasadzie wszystko co znajdę jest  w formacie tap, tzx. ?
Tytuł: Odp: Gry w formacie SNA
Wiadomość wysłana przez: ikci w 2017.03.16, 21:36:25
Zrzut pamięci w postaci pliku .sna zapiszesz pod chyba każdym emulatorem.
Ale mam propozycję, żeby zrobić to bardziej elegancko - czyli wtedy kiedy gra już się wczytała z taśmy
ale obrazek(loading screen) jeszcze nie znikł  - to są ułamki sekund po wczytaniu ostatniego bajtu i uruchomieniem
się gry.

Pociągnij sobie najnowszą wersję SpecEmu  (v3.1 build 12/05/16)
stąd: http://www.gametronik.com/site/rubriques/sinclair_spectrum/Emulateurs/specemu-3.1.b120516.zip

W ustawieniach emulatora nie musisz wyłączać EDGE DETECTION  czyli przyspieszenia wczytywania z taśmy.
Emulator bardzo szybko wczytuje pliki tap i tzx ale jest czas aby w trakcie wczytywania, kiedy już się załaduje
obrazek, kliknąć ESC  (pokaże się okno debuggera) zaś wczytywanie się spauzuje i w oknie debuggera klikamy
na DEBUG  a następnie RUN UNTIL ->  później z rozwiniętego menu wybieramy TAPE EVENT->
i TAPE STOPS
Czyli ustawiamy debugger tak, że w momencie kiedy taśma się zatrzymuje, pojawia się okno debuggera i emulator się pauzuje.
Wtedy w oknie debuggera klikamy na FILE  --> SAVE SNAPSHOT i zapisujemy w formacie SNA.

Opcja DEBUG ->RUN UNTIL -> TAPE EVENT-> TAPE STOPS  działa w przypadku 70% gier doskonale, ale czasem się zdarza,
że gra się wczyta i uruchomi (obrazek tytułowy zniknie i pojawia się ekran np opcji wyboru sterowania) i dopiero
wtedy emulator się pauzuje i pojawia okno debuggera. To jest oczywiście za późno.
W takim wypadku podczas wczytywania gry klikam  ESC a później ustawiam opcję np.
DEBUG -> RUN UNTIL -> OP CODE-> DI lub inną instrukcję.  Z którąś opcją to zadziała jak trzeba.

Polecam takie strzelanie snapshotów, to znaczy w takim momencie, żeby obrazek po wczytaniu gry był jeszcze na ekranie.
Tytuł: Odp: Gry w formacie SNA
Wiadomość wysłana przez: KrisZX w 2017.03.22, 08:55:59
Po kilku próbach udało mi się to zrobić tak jak opisałeś, otrzymuje plik .sna 49kb. Niby w porządku ale ten plik ponownie wczytany do emulatora robi reset i po zawodach. sprawdzone na dwóch emulatorach. Co dalej ?
Tytuł: Odp: Gry w formacie SNA
Wiadomość wysłana przez: KrisZX w 2017.03.22, 08:59:01
Jak zapiszę plik sna po tym jak pojawiło się menu gry to wtedy gra działa poprawnie.
Tytuł: Odp: Gry w formacie SNA
Wiadomość wysłana przez: ikci w 2017.03.22, 11:30:41
Nie każdą grę uda się tak "trzasnąć" jak opisałem .
W około 85% to działa jak należy, ale jest 15% kiedy to nie zadziała.
Wtedy szukam innych wersji itd.. kombinuję i raczej znajduję to co szukałem.

Podaj mi nazwy i ewentualnie linki do gier (możesz je też wrzucić tutaj spakowane w załączniku) które
Ci nie chcą działać i działają dopiero po pokazaniu się menu gry.
Oczywiście gier typu multiload czyli na przykład dogrywających kolejne poziomy, nie da się
tak po prostu snap'nąć  - ale to już wiesz na pewno.
Tytuł: Odp: Gry w formacie SNA
Wiadomość wysłana przez: Abrimaal w 2017.04.17, 00:23:56
Wiele razy myślałem jak ustawić emulator, żeby gry zatrzymywały się i czekały na klawisz, kiedy screen jest widoczny.
Nawet jeśli loader jest w Basic, to nie ma żadnej reguły typu "ostatnie USR startuje grę", a przerabiać tysiące loaderów i wpisywać PAUSE 0 raczej nikomu się nie uśmiecha.
W jaki sposób emulator mógłby wykrywać wyświetlenie screenu?
Mógłby reagować na blok 6912 B i robić krótszą lub dłuższą pauzę.
Wykrywać większą zmianę w pamięci ekranu (statystyka?). Wtedy pauzował by też przy zmianie ekranów w grze.
Rozpoznawać kod popularnych dekompresorów pod adres ekranu.
...
Zapisywanie snapshotu między wyświetleniem obrazka a uruchomieniem gry ma sens jeśli sama gra (loader) robi pauzę. Z kolei za wcześnie zapisany snapshot sprawi, że emulator nie załaduje wszystkich bloków.