Autor Wątek: Integracja między emulatorami i systemem  (Przeczytany 2087 razy)

Abrimaal

  • *****
  • Wiadomości: 952
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Integracja między emulatorami i systemem
« dnia: 2019.11.21, 21:32:05 »
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

« Ostatnia zmiana: 2019.11.21, 21:41:43 wysłana przez Abrimaal »
AY Music, ULA plus.

Gelip

  • *****
  • Wiadomości: 575
Odp: Integracja między emulatorami i systemem
« Odpowiedź #1 dnia: 2019.11.26, 14:56:03 »
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.
"Byte" Personal Computer
Брестское ПО средств вычислительной техники

ZbyniuR

  • *****
  • Wiadomości: 2781
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Integracja między emulatorami i systemem
« Odpowiedź #2 dnia: 2019.11.26, 17:43:51 »
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.
In STARS, TREK is better than WARS.. ;)

chicadii

  • *
  • Wiadomości: 13
Odp: Integracja między emulatorami i systemem
« Odpowiedź #3 dnia: 2019.12.06, 16:00:14 »
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

  • *****
  • Wiadomości: 952
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Integracja między emulatorami i systemem
« Odpowiedź #4 dnia: 2019.12.07, 02:54:53 »
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:
caption="http://somewhere.net"Jeśli już to potrafi, to równie dobrze tym samym poleceniem otworzy plik .bat, który znajduje się w jej głównym folderze
caption="outrun.bat"Okno gry wtedy minimalizuje się do ikony i niemal natychmiast startuje emulator z otwartą grą z pliku .bat
@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

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
« Ostatnia zmiana: 2019.12.07, 03:07:48 wysłana przez Abrimaal »
AY Music, ULA plus.

Gelip

  • *****
  • Wiadomości: 575
Odp: Integracja między emulatorami i systemem
« Odpowiedź #5 dnia: 2019.12.19, 19:15:46 »
Napisz najpierw w jednym lub dwóch zdaniach co chcesz osiągnąć, zrobić bo piszesz o jakichś zaawansowanych ustawieniach ale te ustawienia nic nie mówią bo nie wiadomo o co Ci chodzi - jaki system operacyjny, jaki emulator (emulatory) dokładnie, napisz w punktach co Ty kombinujesz?

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

W ogóle tego nie rozumiem, o co Ci chodzi  ??? ??? :o

Idąc Twoim tokiem myślenia -> mamy sobie grę wyścigową na Windows np. NFS3. Gram sobie w grę i co teraz bez wychodzenia z niej mam uruchomić inną grę ??? Przecież to niemożliwe a nawet jeśli to i tak bez sensu, po co to?

Może i do głównego Menu gry dało by się dodać jakiś skrót uruchamiający inną grę ale po co? W ogóle tego nie rozumiem  ::) Jaki problem zamknąć grę i uruchomić inną ???
« Ostatnia zmiana: 2019.12.19, 19:31:17 wysłana przez Gelip »
"Byte" Personal Computer
Брестское ПО средств вычислительной техники

ZbyniuR

  • *****
  • Wiadomości: 2781
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Integracja między emulatorami i systemem
« Odpowiedź #6 dnia: 2019.12.20, 13:13:30 »
Wymagające tytuły zwykle mają wyłączony multitasking. Najprościej byłoby dokupić drugi komputer. :)
Choć starsze tytuły można by odpalić w dosboxie w którym albo multitasking nadal działa albo może mieć pauzę.
In STARS, TREK is better than WARS.. ;)

ZX Freeq

  • *****
  • Wiadomości: 1677
  • Miejsce pobytu:
    Warszawa
Odp: Integracja między emulatorami i systemem
« Odpowiedź #7 dnia: 2019.12.20, 20:17:33 »
Chodzi o nakładkę/aplikację pod Win (lub inny system operacyjny) do odpalania różnych gier, z różnych platform?
M.A.S.S.?
ZX80|ZX81+16kB+PandAY|ZX 48k/+/128k+/+2/+2A/+3/Vega|QL+QIDE|JS128|Timex 2048+2040 Printer|UK2086|FDD3000+3.5''|AY|ZX HD|Divide2k11/2k14|DivMMC/PicoDivSD|BetaDisk 128|Opus|Masakrator FM|If 1/2/Microdrv|Multiface 1|+2A\B SDI-1|SJS 1/2|ZX Printer|TZXDuino|+3 HxC USB|ZXUno|Omni
Z88|A500/600|PC200|Ent128

Abrimaal

  • *****
  • Wiadomości: 952
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Integracja między emulatorami i systemem
« Odpowiedź #8 dnia: 2019.12.21, 03:43:15 »
Gra jest przykładem, o niej więcej nie będę pisał. Udało mi się skonfigurować emulator ZesarUX, aby startował i uruchamiał wybraną grę w wybranej konfiguracji. Zamiast jednego config na dysku systemowym, w pliku .bat czy .cmd piszemy --noconfigfile i podajemy wszystkie parametry.
Co jest niemożliwe? Przesłanie sekwencji komend, ciągu liczb z jednego programu do drugiego? Znana jest i wprowadzana do programów instrukcja np. "send to external editor". To tylko kwestia czasu, nie obejrzymy się, a będzie możliwe przesłać plik, komendę dokonującą modyfikacji i odebrać nowy plik. Kiedyś powiadano, że to niemożliwe, że ja będę mówił w Warszawie, a ktoś w Krakowie będzie mnie słyszał.
Programy powinny komunikować się między sobą, bo niemożliwe jest napisanie programu, który zrobi wszystko. To akurat jest niemożliwe. Chyba że będą powstawać plug-iny, jeden program, który rozbudowujemy i możemy nie wychodząc z niego zrobić wszystko, co potrzebujemy :)
Programy są coraz bardziej wyspecjalizowane i na przykładzie np. fotografii wiemy, że w jednym programie prostujemy geometrię, w innym zajmujemy się obróbką kolorów i detali, w jeszcze innym usuwamy niepotrzebne przedmioty z pola widzenia.
Dokupienie drugiego komputera to krok w całkiem przeciwną stronę. Ile trzeba się namęczyć aby synchronizować pliki lub aby oba korzystały z tych samych dysków i programów. Kto dziś ma czas konfigurować ten sam program dwukrotnie?
A jak często takie połączenie się zrywa. Wystarczy aktualizacja programu lub systemu i okazuje się, że nie mam dostępu z Androida do plików na PC, bo podczas aktualizacji zresetowane zostały ustawienia.


« Ostatnia zmiana: 2019.12.21, 03:51:53 wysłana przez Abrimaal »
AY Music, ULA plus.

ZbyniuR

  • *****
  • Wiadomości: 2781
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Integracja między emulatorami i systemem
« Odpowiedź #9 dnia: 2019.12.21, 13:11:53 »
No to wyłączyć aktualizacje, albo mniej drastycznie robić kopię pliku z ustawieniami.
In STARS, TREK is better than WARS.. ;)