ZX Spectrum > EMULATORY

Integracja między emulatorami i systemem

(1/4) > >>

Abrimaal:
Myślę, że to już najwyższy czas.

Zacznijmy od emulatora ZX Spectrum.

Etap 1. Komunikacja między systemem ZX (Basic, TR-DOS i inne), a emulatorem. Do jednego z nieużywanych portów IN/OUT podłączone jest przesyłanie danych pomiędzy emulowanym systemem, a samym emulatorem.

To pozwala nam:
+ załadować inny plik taśmy czy dysku, przesyłając z ZX do emulatora nazwę pliku i komendę ładowania. Czyli w tej kolejności: OUT port,string : LOAD "string". System ZX czeka na plik. Plik do otwarcia znajduje się w tym samym folderze Windows lub innego systemu.
+ załadować plik binarny, tekstowy czy jakikolwiek w ten sam sposób, poprzez wysłanie jego nazwy i odpowiedniej komendy ładowania. Uruchomienie w systemie ZX ładowania np. LOAD "nazwa" CODE adres.
+ załadować (jeśli się zmieści) plik konfiguracyjny emulatora, zmodyfikować go w systemie ZX i zapisać z poziomu emulatora (nadpisać lub zapisać jako nowy plik).

Żeby nie było improwizacji, port musi być ten sam we wszystkich emu i nie używany do innych celów.
Proponuję 77, łatwy do zapamiętania przez człowieka, a w hex jest to 4D, zawiera literę i nie pomyli się z liczbą w dec.

Etap 2. Integracja z głównym systemem. Z poziomu systemu ZX odczytujemy ścieżkę, w której zainstalowany jest emulator i gdzie znajduje się uruchomiony plik.
To pozwala przeglądać dyski, foldery i pliki w systemie ZX, zmieniać lokalizację plików do ładowania i zapisu.

Etap 3. Integracja z innymi emulatorami.
W jedną stronę.
Załóżmy, ze muzyk skomponował album, w którym jeden utwór zrobiony jest na C64 czy Atari i złożył z tego obraz dysku.
ZX gra dwa utwory, po czym informuje na ekranie, że trzeci utwór zrobiony jest na C64 i musi przejść do trybu emulacji C64.
Jeśli emulator obsługuje oba systemy, problem z głowy.
Jeśli nie, to:
Najpierw emulator ZX musi znać ścieżkę instalacji drugiego emulatora. Jeśli emulator ją zna, to system ZX też odczyta przez port. ZX wyświetla tekst "czekam na klawisz".

Emulator może odczytać ścieżkę z głównego systemu, ale to nie rozwiązuje sprawy.
Emulator, zarówno ZX jak i drugiego komputera wcale nie musi być zainstalowany w głównym systemie.
Może znajdować się w dowolnym folderze, a poza tym tych samych emulatorów, tego samego komputera możemy mieć kilkanaście, skonfigurowanych dla różnych potrzeb.
Pliki programów (np. obrazy dysków) dla drugiego komputera również mogą być w dowolnym miejscu, całkiem innym niż emulator tego komputera.

Tutaj chyba pozostaje umieszczenie pliku z linkami w folderze emulatora ZX.
W ten sposób po naciśnięciu klawisza:
+ w systemie ZX, do emulatora przesyłana jest nazwa pliku do załadowania w drugim emulatorze (bez ścieżki).
+ ekran emulatora jest minimalizowany, lub estetyczniej, zaciemniany, aby w momencie przełączania nie był widoczny np. pulpit Windows.
+ emulator do wysłanej z systemu ZX nazwy pliku dodaje ścieżki i wywołuje (przykładowo):
Dysk:\folder\emulatorC64.exe Dysk:\folder\program.d64 -fullscreen
Parametr -fullscreen także możemy przesłać w programie z systemu ZX do emulatora ZX

Emulator ZX otrzymuje informację o zamknięciu emulatora C64 i kontynuuje program.

Do wielu zastosowań absolutne ścieżki nie wchodzą w grę. Choćby kiedy mamy taki zestaw:
Włączona gra na PC, z jej menu wybieramy sub-grę, która ma uruchomić się w emulatorze ZX na pełnym ekranie. Gra dla PC potrafi poruszać się w systemie plików w górę i w dół, czyli relatywne ścieżki.
W podfolderze Subgames tej gry mamy emulator ZX i gry, które chcemy uruchomić.
Z menu gry wywoływana jest instrukcja, która uruchomi emulator z grą umieszczony w polfolderze gry dla PC.
Subgames\EmuZX\emuzx.exe subgame1.tap

Najłatwiej zrobić to pisząc plik .bat z tą ścieżką umieszczony w głównym folderze gry dla PC, a z jej menu uruchamiamy tylko "subgame1.bat"
Wynika z tego, że emulatory także muszą obsługiwać relatywne ścieżki, a przynajmniej rozumieć, że ładowanie bez podania ścieżki do gry równa się folder emulatora.

Tutaj mamy wyjaśnienie, dlaczego zacząłem od ZX.
Dodam, że lokalizacja gry dla PC jest też dowolna, więc nie możemy używać ścieżki instalacji jako bazy.
Pierwsze z brzegu emulatory: C64 - Vice, Atari XE - Altirra, Atari 2600 - z26.
Wywołany z pliku .bat każdy z nich otwiera się na pełnym ekranie i ładuje grę. Wychodzi się przez Alt+F4 lub Esc.

Emulatory ZX Spectrum:
Spin - nie potrafi otworzyć pliku znajdującego się we własnym folderze. Niby ma instrukcję SPINDIR, ale ona nie działa. Ponadto jest konflikt trybów wyświetlania
ZesarUX - otwiera emu i grę, ale można mieć tylko jedną instalację na całym komputerze, dlatego że plik konfiguracyjny zapisany w C:\Users !!! Poza tym, bardzo skomplikowana obsługa. Chyba tylko sam autor rozumie jego obsługę.
ACSD - otwiera emu i grę, ale nie na pełnym ekranie
EmuZWin - podobne problemy
Fuse - nie testowany
Unreal - który??? jak go skonfigurować jedną instrukcją typu "ZX128 mode".

Dla osłody dodam, że WinApe, emulator CPC też nie potrafi otworzyć pliku znajdującego się w swoim folderze, jeśli nie ma podanej absolutnej ścieżki.
Innych emu CPC nie testowałem, ZesarUX ma tryb emulacji CPC i potrafiłby to zrobić, gdyby zapisywał config lokalnie, a tymczasem po przestawieniu z ZX na CPC, wszystkie instalacje ZesarUX będą uruchamiać się w trybie CPC.

Tymczasem... ja piszę o komunikacji między emulatorami i systemem, a wystarczy jeden emulator ZX i próba jego skonfigurowania.
Kolejna przegrana walka przy próbie uruchomienia gry w najnowszej odsłonie ZesarUX bez używania absolutnych ścieżek i bez wyświetlania menu i innych tekstów podczas startu.

Myślę, że do tego celu najlepszy będzie dobry, powtarzam dobry, emulator sprzed 10-15 lat, który z pliku .bat uruchomi się w trybie 128k bez głupiego menu, uruchomi na pełnym ekranie grę znajdującą się w tym samym folderze i pozwoli wyjść przez Alt+F4
Czy taki istnieje?

Obrazek przedstawia marzenia. Niestety wszystkie gry dla ZX muszę usunąć i zastąpić innymi.
Video do starszej wersji ukazuje, jak z poziomu gry na PC można pograć sobię w klasyczną grę na C64 czy Atari
https://www.youtube.com/watch?v=4ir3rkxAye8

Gelip:
Nic z tego nie zrozumiałem? O co w tym wszystkim chodzi? Napisz po ludzku co chcesz zrobić. Ten post wygląda jakby był wyrwany z jakiegoś innego tematu gdzie coś zostało wcześniej napisane.

ZbyniuR:
No właśnie ja też nie zczaiłem o co chodzi.
Do słuchania muzyczek wszelakich używam WinAmpa. Emulator do tego nie jest potrzebny. I można ustawić by się włączał po kliknięciu w takie pliczki.

A dodawanie przypisów by po kliknięciu w jakiś plik do emulatora odpalał się emulator, nie bardzo ma sens moim zdaniem. Np dsk są używane w emulatorach różnych maszyn. To który z nich ma się uruchamiać?  Zresztą dsk zwykle trzymam spakowane zipem. I co miałbym ustawiać żeby po kliknięciu w zipy odpalał mi się emulator?

A poza tym lubię takie zachowanie minimum realizmu, najpierw włączam emulator a potem wybieram co chcę włączyć, a nie że jak wezmę dysk do ręki to komputer sam się włączy. wg mnie takie czary nie są retro.

chicadii:
Tłumaczę dla innych: z tego co zrozumiałem - obrazek wyjaśnia wszystko, znajduje się niestety na samym końcu wypowiedzi. Wydaje mi się, że koledze się marzy, aby odpalić jakiś nowego typu emulator, który wyświetli w pewien sposób carousel zawierający listę gier, które mają cyfrową postać plików, np. *.tap lub *.tzx w systemie poza emulatorem. Po wybraniu interesującego nas tytułu emulator odpala grę w fullscreenie. Tak myślę. Dziękuję.

Abrimaal:
Nowoczesny program powinien być konfigurowalny na wiele sposobów. Dlatego są fora i linki "contact developer", sam autor czasem nie zdaje sobie sprawy, że program może być używany w innym celu niż jego przeznaczenie. Może być częścią większej układanki, a to nie zawsze jest możliwe.
Dlatego ważna jest komunikacja między różnymi programami. Najbardziej znanym przykładem jest "Send To" - prześlij plik np. z przeglądarki obrazów do edytora.

Ja chcę dodać do gry wyścigowej dla Windows kilkanaście klasycznych gier wyścigowych.
Po to, aby nie wychodząc z gry zagrać w inną grę sprzed wielu lat. Jak to kiedyś wyglądało i jakie było trudne (!)
Ideałem by było, aby emulowana gra otwierała się nałożona na ekran gry na PC.
W przypadku akurat tej gry, nie przewidziano uruchomienia zewnętrznego programu z poziomu jej menu,
ale przewidziano otwarcie linku w przeglądarce poleceniem:

--- Kod: ---caption="http://somewhere.net"
--- Koniec kodu ---
Jeśli już to potrafi, to równie dobrze tym samym poleceniem otworzy plik .bat, który znajduje się w jej głównym folderze

--- Kod: ---caption="outrun.bat"
--- Koniec kodu ---
Okno gry wtedy minimalizuje się do ikony i niemal natychmiast startuje emulator z otwartą grą z pliku .bat

--- Kod: ---@echo off
cls
color e
Retro\WinVICE\x64 -fullscreen -autostart Retro\WinVICE\outrun.prg

cls
echo To return to ATCC click the taskbar icon
timeout 9
exit /b
--- Koniec kodu ---

O ile bez problemu z poziomu gry (menu gry) na PC udaje się odpalić emulatory C64, Atari XE i Atari 2600, to w przypadku ZX Spectrum i Amstrad CPC zaczynają się problemy.
Przede wszystkim:

1. nie są obsługiwane relatywne ścieżki, nawet gdy gra znajduje się w tym samym folderze, co emulator
2. plik konfiguracyjny zapisywany jest gdzieś w C:\Users - jeden dla wszystkich instalacji emulatora.
3. nie zawsze udaje się start z uruchomioną grą na pełnym ekranie, bez dodatkowego menu, splash screen czy innego powitania.

Jeśli jeden obsługuje jedno, to nie drugie i nie trzecie (kolejność można przestawiać)

Tak już to wygląda w realu. Oczywiście emulator musi być wcześniej skonfigurowany (ekran, sterowanie, dźwięk).

najnowsze video, nowo dodane gry

starsze video, gry dodane na początku

Nawigacja

[0] Indeks wiadomości

[#] Następna strona

Idź do wersji pełnej