Autor Wątek: Zapis plików z poziomu emulatorów.  (Przeczytany 6082 razy)

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Zapis plików z poziomu emulatorów.
« dnia: 2012.01.21, 00:29:36 »
Nie wiem czy to chwilowe zamglenie, czy całkiem zgłupiałem.

Jak zapisać z emulatora w formacie .tap lub .tzx program w Basic startujący od podanej linii lub kod od podanego adresu o podanej długości?
Gdy wpisuję z Basic SAVE "name" LINE 10 to uruchamia standardowy zapis na taśmę,
a w menu znajduję tylko Save Snapshot (czyli z80, sna, szx)
oraz Save Binary, który zapisuje same dane (bez nagłówków i bez bitów kontrolnych, czyli bezużyteczny przy klejeniu programu w Tapir).
« Ostatnia zmiana: 2012.02.10, 21:20:55 wysłana przez Abrimaal »
AY Music, ULA plus.

RafalM

  • *****
  • Wiadomości: 1133
  • Miejsce pobytu:
    Sulejówek
Odp: Zapis plików z poziomu emulatorów.
« Odpowiedź #1 dnia: 2012.01.21, 16:13:07 »
Nie znam emulatora gdzie można by zapisywać dane na taśmę (czyli do pliku .tap lub .tzx) z poziomu Windowsowego menu.

W Spectaculatorze robię to tak:

1. Tworzę nowy plik .tap (File/New) lub otwieram istniejący
2. Otwieram w emulatorze Cassette Recorder i wciskam przycisk nagrywania
3. Wpisuję w Basicu wspomniane SAVE "name" LINE 10

I już, czekać nie trzeba, nagra się na taśmę natychmiast. Natomiast gdyby nie było wybranego nagrywania to komenda SAVE się owszem wykona, ale sygnał pójdzie w kosmos :)

Szybko zeknąłem i w Spin jest jakieś Tools/TapeOptions/StartRecording a SpecEmu sam mi zaproponował utworzenie taśmy gdy wpisałem SAVE. Ogólnie jednak komendy SAVE spod Basica się chyba nie uniknie.


Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Zapis plików z poziomu emulatorów.
« Odpowiedź #2 dnia: 2012.01.28, 02:01:37 »
To mi wystarczyło: konkretnie 3 rzeczy:
1. Emulator Fuse (pozwala zapisać pliki w formacie .tap),
2. Tapir do łączenia i podmieniania plików,
3. Niezastąpiona, rzadko używana na realnym sprzęcie instrukcja MERGE.

Jaki był cel?
Przy ładowaniu gier w emulatorach, screen pojawia się zwykle na ułamek sekundy i od razu startuje gra. Zrobiłem więc oczekiwanie na wciśnięcie klawisza, żeby można było obejrzeć screen. :)

Mało mi było, wiedziałem, że w Cybernoid 2 jest muzyka na AY i na beeper, pomyślałem "dajmy ludziom wybór, czasem chce się posłuchać jak brzmi inne wykonanie". W wielu innych grach, dźwięki dla 128 i 48 są w jednym pliku gry, tutaj jest osobna gra dla 128 i 48, dlatego po wybraniu 48 cały plik z grą ładowany jest od nowa. Sprawdzałem na kilku emulatorach, załadowanie zapewne znacznie rzadziej włączanej versji 48k zajmuje około sekundy, co nie jest problemem (chyba, że ktoś ma jakiś stary emu bez instant ładowania).

Kolejna modyfikacja. Jeśli już istnieje definicja palety dla ULA+, dlaczego by jej nie dołączyć. Paleta kolorów jest z reguły tworzona dla samej gry, na screenie zwykle sie paprze. Dlatego wyboru kolorystyki dokonuje się tutaj po obejrzeniu screenu w standardowych kolorach. Tu właśnie przydało się MERGE, aby połączyć zdefiniowaną w linii 0 paletę aby wywołać ją z poziomu menu loadera przed startem gry (w systemie ZX nie ma "Zaznacz, Kopiuj i Wklej":P)  .

Menu nie jest superprodukcją, np. po zmianie palety na ULA+, gdy pojawia się wybór żródła dźwięku, kolorów już nie można zmienić (chyba że wyłączy się support w emu),
dlatego pozostawiam loader jako "otwarty", bez zabezpieczeń czy oszustw w wartościach liczb.  8)

W innych grach można pobawić się w zmianę fontu w menu (Cybernoid 2 używa standardowego z ROMu), czy włączenie muzyki podczas obsługi menu (tutaj też byłoby trochę roboty, bo gra jest ładowana i uruchomiana przez wywołanie kodu dopiero po wybraniu opcji z menu), wolałem zostawić ten plik w całości i w oryginale - nigdy nie wiadomo skąd dokąd w trakcie działania się odwołuje. Można w końcu napisać całe menu w machine code z migającymi paskami i obsługą strzałką, lecz ja postawiłem na prostotę i łatwość modyfikacji loadera (gdyby np. ktoś przerobił grę na mysz czy Turbo Sound, możnaby dodać kolejny plik).

Ok, tyle marudzenia. Teraz mam pytanie. ??? W dodatkach do emu Fuse (Fuse-utils) znajduje się aplikacja snap2tzx.exe startująca z linii poleceń (cmd.exe w Windows lub jakiś dobry file manager). Czy ktoś jej używał i czy działa prawidłowo? Powinna zapisać snapshot jako taśmę tzx. Wyodrębnienie plików z pamięci to nie problem, ale co z zachowaniem wartości rejestrów procesora, zwłaszcza PC i SP?
Wypróbuję to przy okazji.  :-X
AY Music, ULA plus.