Autor Wątek: Kolejna poprawka Zynaps dla ULA+  (Przeczytany 21118 razy)

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Kolejna poprawka Zynaps dla ULA+
« dnia: 2013.02.09, 01:35:15 »
Piszę w nowym temacie, ponieważ wątek "Przerobione Gry" jest przepełniony, nie wiadomo gdzie kończy się jeden temat, a zaczyna drugi.

Co zmieniłem:
1. Obrazek - zamiast standardowego jest screen M. Stawickiego.
2. Automatyczne wykrywanie ULA+ w loaderze przez OUT/IN. Jeśli nie wykryje, ładowany jest obrazek w zwykłych kolorach, jeśli wykryje ULA+, to ładuje trochę przerobiony 22-kolorowy screen. Ktoś kiedyś wspominał, że moje przeróbki nie ładują wszystkich bloków na realnym sprzęcie. Ładują tylko to, co jest potrzebne. W tej grze np. są 2 screeny, jeden ma nazwę pliku "scr", drugi "scr+" i w zależności od sprzętu ładuje standardowy lub 22-kolorowy. Musi tak być, dlatego że screen dla ULA+ używa FLASH i nieciekawie prezentowałby się na zwykłym ULA.
3. Jeśli nie wykryje ULA+, w menu nie zadaje pytania STANDARD/ENHANCED COLOURS.

Teraz zaczyna się pod górkę, czego powodem jest nienadążanie developerów emulatorów oraz programów użytkowych za nowymi rozwiązaniami.
W tym pakiecie są 2 pełne gry, jedna z oryginalnym dźwiękiem na beeper (48K Version, choć działa również w 128K) oraz crack z .trd z dźwiękiem i muzyką na AY. Problem w tym, że crack z .trd miałem tylko w postaci snapshotu .z80
Przerobiłem snapshot za pomocą Z802TZX 1.2 (tutaj jest trochę o tym) na .tzx, lecz ta aplikacja zapisała go w Turbo (!), co przysporzyło dodatkowych kłopotów.

Wniosek jest taki: nie ma jeszcze (chyba) emulatora, który obsłużyłby wszystkie opcje tej gry.
1. Spin 0.7 działa najlepiej, jedynie nie obsługuje sterowania myszką, co pojawia się w menu przy wyborze gry na 48K.
2. Spin 0.666 obsługuje mysz, lecz nie obsługuje ULA+
3. WJ Speccy 0.891 nie załaduje versji na 128k, bo nie obsługuje turbo, myszy też nie, ULA+ działa prawidłowo.

Na innych emu nie sprawdzałem, bo nie znam żadnego, który mógłby obsługiwać przede wszystkim ULA+.
A może ma ktoś ten crack z muzyką na AY jako .tap lub .tzx bez Turbo?
Czy jakiś inny program do konversji snapshotu do taśmy (Snap2Tap odpada, ten z kolei nie obsługuje 128k).

Dołączam grę (piszcie, gdybyście odkryli jakiś super emulator), bo realny chip ULA+ na razie są tylko prototypy (link).
oraz obrazki: oryginał by M. Stawicki, 22-kolorowy na ULA+ i 16-kolorowy z Amiga 500, wg którego dobierałem kolorystykę.

AY Music, ULA plus.

matofesi

  • *****
  • Wiadomości: 2049
  • Miejsce pobytu:
    Toruń/Poland
Odp: Kolejna poprawka Zynaps dla ULA+
« Odpowiedź #1 dnia: 2013.02.09, 13:48:15 »
Dołączam grę (piszcie, gdybyście odkryli jakiś super emulator), bo realny chip ULA+ na razie są tylko prototypy

To ja tak off-topicznie napiszę - ULA+ jest implementowana przez rdzeń Spectrum do V6. Działa. Obejrzałem twoje przeróbki. I teraz... nie obraź się... moim zdaniem całość wygląda wysoce słabo. I nie dlatego, że coś zrobiłeś nie tak tylko dla tego, że moim zdaniem nie da się tego zrobić dobrze tak jak sobie wymyśliłeś. ULA+ (po obejrzeniu na żywo) moim zdaniem nadaje się do wykorzystania wyłącznie wtedy jeśli piszesz program od podstaw specjalnie dla ULA+ - można wtedy ustawiać palety zgodnie z potrzebami i zmieniać je jak należy (np. w menu inne, w każdym levelu inne itd.). Dobranie jednej - sensownej, ale też różniącej się od oryginalnej - palety dla całej gry w sytuacji gdy gra była oryginalnie napisana dla jednej stałej palety jest moim zdaniem niemożliwe a przynajmniej baaaardzo trudne.

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Kolejna poprawka Zynaps dla ULA+
« Odpowiedź #2 dnia: 2013.02.09, 15:32:44 »
Dobranie jednej - sensownej, ale też różniącej się od oryginalnej - palety dla całej gry w sytuacji gdy gra była oryginalnie napisana dla jednej stałej palety jest moim zdaniem niemożliwe a przynajmniej baaaardzo trudne.
Wiem, jest to trudne, dlatego nigdy nie piszę, że jest to ostateczna versja.
O ile np. w R-Type czy Action Force 2 kolory w levelach się powtarzają i już za pierwszym razem wyszło ciekawie,
to np. w Zynaps można spodziewać się jeszcze poprawek. I tak screen używa innej palety niż gra, co już jest plusem.
Bardzo ciekawie wyglądałoby przełączanie palety dla każdego poziomu innej, lecz tutaj trzeba by grzebać w kodzie gry, na czym ja bardzo słabo się znam.
AY Music, ULA plus.

Phonex

  • *****
  • Wiadomości: 1261
  • Miejsce pobytu:
    Warszawa
Odp: Kolejna poprawka Zynaps dla ULA+
« Odpowiedź #3 dnia: 2013.02.10, 17:38:21 »
Screen Stawickiego w wersji ULA+ wygląda smutno. Taki zaniebieszczony...
Nieruszany jest lepszy moim zdaniem.

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Kolejna poprawka Zynaps dla ULA+
« Odpowiedź #4 dnia: 2013.02.10, 20:01:35 »
Z niebieskim są największe problemy, bo tylko 3 poziomy jasności, gdybym zrekompensował to dodając czerwonego, to statek byłby zbyt jasny. Zobaczę przy następnym podejściu czy da się go trochę "zjechać" w kierunku czerwieni. Tło osobiście dla mnie jest idealne.

Zrobiłem jeszcze jeden snapshot całej gry z dźwiękiem na AY (bez intro). Czy wiesz może (lub ktokolwiek), jak zrobić z tego tap/tzx bez turbo?
AY Music, ULA plus.

Phonex

  • *****
  • Wiadomości: 1261
  • Miejsce pobytu:
    Warszawa
Odp: Kolejna poprawka Zynaps dla ULA+
« Odpowiedź #5 dnia: 2013.02.10, 22:32:43 »
Tło OK, ale na tym obrazku wszystko jest niebieskie! Jak przez niebieską szybę. Nie ma czerwonego tylko fioletowy, czyli czerwony z niebieskim. Nie ma czarnego tylko ciemnoniebieski, nie ma żółtego tylko beżowy, czyli też z dodatkiem niebieskiego.
Oryginał jest ładniejszy!

Zmienić parametry plików z turbo na normal to żaden problem, wystarczy np. ZX-Blockeditor, ale trzeba by przerobić loader.

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Kolejna poprawka Zynaps dla ULA+
« Odpowiedź #6 dnia: 2013.02.11, 00:13:02 »
Na screenie z Amigi statek jest w kilku kolorach od ciemnej czerwieni przez różowy do fioletu.
Na Spectrum jest jednokolorowy + cień, który zrobiłem w najciemniejszym odcieniu fioletowego R=1 G=0 B=1, ale mogę powrócić do czarnego, to nie problem.
Uważam, że ten zestaw kolorów harmonizuje ze sobą. "Zwykły" żółty byłby za jaskrawy. Dzięki za konstruktywną krytykę, gdy znajdę trochę więcej czasu, pobawię się z tym.
W edytorze Paintbrush kolory są bardziej żywe, w Spin odcienie niebieskiego są jaśniejsze, stąd tak jak piszesz efekt "niebieskiej szyby".

Porównaj screen do Army Moves, który też przerobiłem na ULA+, kolory w Paintbrush i Spin różnią się, zwłaszcza w zakresie niebieskiego: http://speccy.pl/forum/index.php/topic,807.msg9877.html#msg9877
AY Music, ULA plus.

Phonex

  • *****
  • Wiadomości: 1261
  • Miejsce pobytu:
    Warszawa
Odp: Kolejna poprawka Zynaps dla ULA+
« Odpowiedź #7 dnia: 2013.02.11, 11:25:32 »
Nie wiem jakie kolory są w palecie, ale jak jest możliwość, to moim zdaniem lepiej żeby się od siebie różniły: cień czarny, i prawdziwy żółty, a jak jeszcze się da to też kilka odcieni czerwonego :)
Za jaskrawy nie będzie, bo przecież oryginał taki był!

A prędkość można zmienić nawet w samym ZX Spin. Prawy klawisz/properties na danym bloku i wszystkie długości impulsów można zmienić, na takie jak w standardowym bloku. Ale trzeba pozmieniać też stałe czasowe w loaderze (na standardowe).

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Kolejna poprawka Zynaps dla ULA+
« Odpowiedź #8 dnia: 2013.02.16, 04:29:44 »
Istny dom wariatów. >:(  :'( >:( :'(
Czy nie da się przerobić tego snapshotu załączonego wcześniej "000.z80" do normalnych bloków możliwych do załadowania z Basic lub krótkiego kodu umieszczonego np. w pamięci ekranu?
Jest to snapshot dla 128k, lecz nie wiem czy używa przełączania banków. Zmieniając w Blockeditor model na 48k i zapisując taki snapshot jako z80, wywaliło go od razu.

Próbowałem zapisać tzx ze Spin używając Spin Loader, to nie stworzył nic sensownego, przy próbie załadowania zresetował się.

Zapisałem ze Spin w systemie Speedlock2, to loader w Basic zawiera same POKE i PEEK ze zmiennych systemowych, a za tym jest zapisana sekwencja około 160 pulsów i tonów. Tego się raczej nie da zhakować, chyba że ktoś ma wolne kilka miesięcy na zabawę z jednym loaderem.

Program Z802TZX z kolei umieszcza w loaderze tablicę zmiennych DIM o kilkudziesięciu (!) wymiarach i ładuje grę w turbo. Nie wiem po co mu ta tablica, ale podejrzewam, że tam jest ukryty po prostu kod maszynowy turbo loadera. Też nie wiem jak to ruszyć.
Ten loader i speedlock2 uruchamiają grę.

Natomiast ZX Blockeditor, gdy zapisałem z80 jako tzx, stworzył 1 blok, prawdopodobnie jest to zrzut RAM od 16384 do 65535 (bo ma długość 49152B), więc nie ma się co spodziewać, że to ruszy.

Mam taki pomysł, tylko nie wiem czy warto z tym próbować. W Blockeditor można odczytać ze snapshotu wartości wszystkich rejestrów i rodzaju przerwań. Gdyby otworzyć ten snapshot w emulatorze, nacisnąć jak najszybciej Pause (zanim zacznie cokolwiek rysować na ekranie i nie włączy muzyki), zapisać zrzut pamięci od 23296 do końca (bez pamięci ekranu) jako plik binarny i jednocześnie zapisać nowy snapshot, z którego odczyta się aktualne wartości rejestrów. 
Następnie utworzyć pod 16384 taki kod:
DI
LD SP, 20000 ;tymczasowy stos w wolnym miejscu
LD IX, 23296
... (i pozostałe parametry do załadowania głównego bloku)
CALL 1366 ;standardowe ładowanie bloku
LD A,n
LD BC,nn
... (itd. załadować wszystkie wartości rejestrów wraz z primowanymi, SP, I, R odczytanych ze snapshotu)
IM 2
EI lub DI (zależnie od odczytanej wartości)
JP nn (wartość odczytana z rej. PC snapshotu)

Czy to ma szansę zadziałać? Może być problem z rejestrem F.
« Ostatnia zmiana: 2013.02.16, 04:32:18 wysłana przez Abrimaal »
AY Music, ULA plus.

Phonex

  • *****
  • Wiadomości: 1261
  • Miejsce pobytu:
    Warszawa
Odp: Kolejna poprawka Zynaps dla ULA+
« Odpowiedź #9 dnia: 2013.02.16, 12:20:35 »
Czytając to co wyżej odnoszę wrażenie, że masz ambicję zrobić to w najbardziej skomplikowany sposób  ;)

Nie bardzo rozumiem, dlaczego nie może zostać w turbo, ale skoro się upierasz...
Czy mój sposób nie jest prostszy?
1. Załaduj ZX Spin (ja używam 0.666).
2. Na wszystkich blokach Turbo Data z tego tzx kliknij prawym klawiszem myszy, wybierz properties i wszystkie długości impulsów zmień na standardowe (takie jak np. w loaderze).
3. Wczytaj loader, znajdź początek procedury LOAD - sekwencja INC D/EX AF, AF'/DEC D.
4. Zmień prędkość zmieniając wszystkie stałe czasowe na takie jakie są w normalnej procedurze w ROM od L0556. http://www.wearmouth.demon.co.uk/zx82.htm

Procedura ładująca to coś podstawowego, oglądane wielokrotnie, więc na pewno sobie poradzisz!
Wystarczy porównać.
Różni się od standardowej tym że bloki ładowane są od tyłu (jest DEC IX zamiast INC IX) i kolorem pasków.

RafalM

  • *****
  • Wiadomości: 1133
  • Miejsce pobytu:
    Sulejówek
Odp: Kolejna poprawka Zynaps dla ULA+
« Odpowiedź #10 dnia: 2013.02.16, 13:47:36 »
W kwestii ULA+

Obserwowałem swego czasu na WOS dyskusje na temat tego ustrojstwa i pamiętam że na początku wszyscy strasznie się "podjarali" jaka to super rzecz, że nie trzeba nic hackować, grzebać w kodzie tylko na początku ustawi się paletę i mamy za darmo normalnie Amigę z odcieniami, gradientami, brązami, szarościami i wszystkim czego na oryginalnym Spectrum nie było.

Niestety nie jest tak łatwo i miło. Bez grzebania w kodzie i zmiany wartości przechowywanych tam atrybutów zwykła gra w 15 kolorach przerobiona na ULA+ dalej będzie miała 15 kolorów tylko  innych.

A z praktyki wychodzi że często niewiele da się zmienić. Nie wiem czy już gdzieś nie pisałem takiego przykładu - wyobraźmy sobie ścianę z czerwonych cegieł. Checmy mieć szare cegły, zmieniamy ten kolor na szary i dwie lokacje dalej odkrywamy że mamy tam.. szary ogień :)

No i kończy się tym że czerwony przerobiliśmy na jasno czerwony a żółty na złoty, bo inaczej wszystko się rozjeżdżało. Czyli tak naprawdę nie zmieniliśmy prawie nic.

Nie muszę dodawać że po 2-3 miesiącach ludziom z WOSu ULA+ się znudziła i obecnie nikt tam chyba już kolorowych wersji nie robi.

Tak jak napisał Mat, żeby gra pod ULA+ wyglądała ładnie i wykorzystywała jej możliwości trzeba by ją napisać od początku z myślą o ULA+.






matofesi

  • *****
  • Wiadomości: 2049
  • Miejsce pobytu:
    Toruń/Poland
Odp: Kolejna poprawka Zynaps dla ULA+
« Odpowiedź #11 dnia: 2013.02.16, 18:41:08 »
To je jeszcze dwa zdania - Abrimaal nie obraź się przypadkiem ;)

ULA+ i kolorowanie starych gier to zabawa, która może wciągać jak się tak na prawdę nie jest programistą. Niedużym nakładem środków (zmiana loadera i zabawa "artystyczna" w dobranie innej palety) można uzyskać wyraźnie widoczny efekt wizualny. Programiście się znudzi bardzo szybko zwłaszcza, że pisałby programy w zasadzie wyłącznie do emulatorów, bo na prawdę uważam, że zamiennika wsadzanego w miejsce oryginalnego ULA się po prostu nie doczekamy - hype przygasł i nikomu się nie będzie chciało tego dłubać a nawet jeśli to będzie za drogi, żeby się miało upowszechnić.

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Kolejna poprawka Zynaps dla ULA+
« Odpowiedź #12 dnia: 2013.02.16, 21:14:28 »

3. Wczytaj loader, znajdź początek procedury LOAD - sekwencja INC D/EX AF, AF'/DEC D.
4. Zmień prędkość zmieniając wszystkie stałe czasowe na takie jakie są w normalnej procedurze w ROM od L0556.

Procedura ładująca to coś podstawowego, oglądane wielokrotnie, więc na pewno sobie poradzisz!
Wystarczy porównać.
Różni się od standardowej tym że bloki ładowane są od tyłu (jest DEC IX zamiast INC IX) i kolorem pasków.
Właśnie... znajdź. Loader z z802tzx jest tak zabezpieczony, że cały kod zawarty jest w definicji zmiennych Basic (obejrzyj to w Tapir, bo nawet ZX Editor wyrzuca błędy). Przerobić bloki na standardowe to nie problem, ale znaleźć adresy pod które są ładowane i finalny adres uruchomienia.
Mam jeszcze jeden loader - crack na taśmę z dysku trd, przeglądnę go później, może tam jest łatwiej.


@Matofesi - nie jestem koderem, znam większość instrukcji assemblera, ale potrafię napisać tylko bardzo proste rzeczy, dlatego mój wkład niech będzie trochę inny. Po zamieszczeniu filmów z grami w ULA+ na youtube reakcje są naprawdę pozytywne. Istnieje już co najmniej jeden działający chip ULA+, który jest zaprezentowany na youtube http://www.youtube.com/watch?v=6eS1h2IvrWA
AY Music, ULA plus.

Phonex

  • *****
  • Wiadomości: 1261
  • Miejsce pobytu:
    Warszawa
Odp: Kolejna poprawka Zynaps dla ULA+
« Odpowiedź #13 dnia: 2013.02.16, 22:37:15 »
Kto by się przejmował, gdzie jest loader?
Ustaw w opcjach Acceleration na Normal speed i jak się załaduje i uruchomi BASIC, to wejdź do debuggera i poszukaj INC D/EX AF, AF'/DEC D w obszarze BASICa. Co za różnica gdzie jest?  ;D
Chyba że autor był cwaniak i po uruchomieniu zamazał BASIC. Wtedy trzeba wstać i spytać "Czy jest tu jakiś cwaniak?"  ;) Żartuję...

Wtedy przydaje się genialny program, który wrzuciłem do Archiwum - OPENER I http://www.speccy.pl/archive/prod.php?id=225.
Ładuje program i NIE uruchamia go. Teraz można zobaczyć gdzie zaczynają się te zmienne. Od tego miejsca można przeglądać debuggerem z ZX Spin.

Bloki są ładowane od tyłu od adresu 65535 do różnych banków. Ale najprościej jest chyba przerobić loader (debuggerem) i zgrać.

matofesi

  • *****
  • Wiadomości: 2049
  • Miejsce pobytu:
    Toruń/Poland
Odp: Kolejna poprawka Zynaps dla ULA+
« Odpowiedź #14 dnia: 2013.02.17, 13:24:32 »
Istnieje już co najmniej jeden działający chip ULA+, który jest zaprezentowany na youtube http://www.youtube.com/watch?v=6eS1h2IvrWA

No i ślicznie. To samo potrafi też zrobić V6. I nie zmienia to faktu, że ewentualne programy pisane dla ULA+ będą odpalane w 99% na emulatorach - właścicieli V6 jest może stu. Sprzęt jak na linkowanym filmiku zmontuje sobie może stu następnych (choć to moim zdaniem bardzo zawyżona liczba) - jeśli rozwiązanie wymaga wypatroszenia komputera i robienia jakichś strasznych kombinacji a końcowa maszynka nie daje się zamknąć w oryginalnej obudowie to całość pozostanie niszowa. Ja rozumiem, że to się może podobać - o gustach się nie dyskutuje. Mnie się po prostu nie podoba mimo, że mam sprzęt, który to robi mam zamiar trzymać się od tego trybu z daleka :)