Autor Wątek: The Spectrum.  (Przeczytany 29848 razy)

KWF

  • *****
  • Wiadomości: 7102
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • "I co ja robię tu, u-u, co Ty tutaj robisz ..."
Odp: The Spectrum.
« Odpowiedź #105 dnia: 2025.01.31, 13:45:14 »
@Phonex: ROM z The Spectrum jest dostępny tu: https://www.speccy.pl/forum/index.php?topic=7660.msg109675#msg109675
KWF
-----
R Tape loading error 0:1

galaxian

  • ***
  • Wiadomości: 213
Odp: The Spectrum.
« Odpowiedź #106 dnia: 2025.01.31, 18:04:07 »
Zdaje się, że w The Spectrum jest co innego pod 13251. Mógłbyś potwierdzić, że nie 237, 176, 201?

Pokazuje 92
ZX Spectrum 48kB / ZX Spectrum+ / ZX Spectrum 128 +2 / Timex 2048 / Atari 800XL / Atari 65XE / Atari 130XE / Atari 800XE / Atari 1040 STF / Commodore 64C / Commodore 64G / Amiga 500 / Amiga 500+ / Amiga 600 / Amiga 1200 / Amiga 1200 Magic

Phonex

  • *****
  • Wiadomości: 1278
  • Miejsce pobytu:
    Warszawa
Odp: The Spectrum.
« Odpowiedź #107 dnia: 2025.01.31, 22:20:53 »
Dzięki.
Trzydzieści parę lat dobrze działało, a teraz ktoś przylazł i spieprzył >:(
No, ale to w końcu sztuczka...

@Phonex: ROM z The Spectrum jest dostępny tu: https://www.speccy.pl/forum/index.php?topic=7660.msg109675#msg109675
Dzięki, to duża pomoc :) Tak będzie łatwiej. Już znalazłem, że LDIR /RET jest, tylko 12 bajtów dalej...
No nic, coś wymyślę!

A przy okazji oglądania loadera Dobranocek okazało się, że jest w nim cała procedura z oryginalnego Kicia Standard Loadera. Tylko brakuje uruchomienia i tytułu.
Dobranocki przeniosłem z wersji TRD, i nie przyglądałem się specjalnie. A teraz, kto chce mieć 100% oryginalną, pierwotną wersję autorską, niech dopisze:
- między CLEAR a LOAD: RANDOMIZE USR 23788
- linię 5 REM DOBRANOCKI 128
Albo poczeka ;) Jak wymyślę poprawkę - wyślę poprawione Dobranocki do Archiwum.

galaxian

  • ***
  • Wiadomości: 213
Odp: The Spectrum.
« Odpowiedź #108 dnia: 2025.02.01, 14:48:47 »
Wyszedł firmware 1.0.3
Działa już Paralactika

A jak odpalasz trd ?
Chyba że jest wersja tego dema w tapie?
ZX Spectrum 48kB / ZX Spectrum+ / ZX Spectrum 128 +2 / Timex 2048 / Atari 800XL / Atari 65XE / Atari 130XE / Atari 800XE / Atari 1040 STF / Commodore 64C / Commodore 64G / Amiga 500 / Amiga 500+ / Amiga 600 / Amiga 1200 / Amiga 1200 Magic

galaxian

  • ***
  • Wiadomości: 213
Odp: The Spectrum.
« Odpowiedź #109 dnia: 2025.02.01, 19:30:47 »
I jeszcze jedno.
The Spectrum nie wykonuje poprawnie takiego programu, tzn napis się nie wyświetla.


ZX Spectrum 48kB / ZX Spectrum+ / ZX Spectrum 128 +2 / Timex 2048 / Atari 800XL / Atari 65XE / Atari 130XE / Atari 800XE / Atari 1040 STF / Commodore 64C / Commodore 64G / Amiga 500 / Amiga 500+ / Amiga 600 / Amiga 1200 / Amiga 1200 Magic

Gryzor

  • *****
  • Wiadomości: 2080
  • Miejsce pobytu:
    Warszawa
Odp: The Spectrum.
« Odpowiedź #110 dnia: 2025.02.03, 23:22:23 »
No dobra, podlaczylem TSP do Full HD i jest ok, czyli potwierdza sie, ze TSP nie potrafi poprawnie skalowac ekranu ZX na monitorach kwadratowych. Slabe - z tego co czytalem 1280x720 jest na stale zakodowane na poziomie OS, no ale jaki jest problem dodac w opcjach skalowanie ekranu emulacji ?
Poza tym zaczela mnie irytowac dioda z tylu, dobrze, ze nie pod spodem :-) I brak wyjscia audio.
No tak, to jest konsolka do grania w gry z ZX Spectrum na FHD TV.

Aha,  Dobranocki z archiwum speccy.pl dzialaja bez zmian, ale na oryginalnych ROM. Cdn... czepiania ( a moze chwalenia ) nastapi.

Phonex

  • *****
  • Wiadomości: 1278
  • Miejsce pobytu:
    Warszawa
Odp: The Spectrum.
« Odpowiedź #111 dnia: 2025.02.07, 19:07:47 »
Jest poprawka!
Szukając w tysiąc-dziewięćset-zapomnianym roku LDIR /RET w ROMie, znalazałem tylko jedno, więc teraz byłem pełen obaw czy uda się znaleźć prostą poprawkę. Na wszelki wypadek jednak przeszukałem ROM ponownie, a potem poszukałem samego LDIR. Znalazłem sekwencję LDIR / POP HL / RET, co generalnie dałoby się wykorzystać, ale nie w tym konkretnie przypadku. Na szczęście przewinąłem w górę i odkryłem przed nią PUSH DE - stos zbilansowany, a zawartość HL jest nieistotna za LDIR.
Czyli sukces! Adres to 6646.
Skompresowane gry występują w dwóch wersjach: początek 24500 - to wynik działania wersji taśmowej lub dyskowej na FDD3000, oraz początek 25000 - to wersja dyskowa na stację OPUS Discovery - wymagała więcej miejsca na BASIC, bo przed nim tworzyła bufor na odczyt danych z dysku.
Mogą się też trochę różnić algorytmem - starsze są prostsze, ale w kontekście poprawki to nieistotne.
Np. Dobranocki są skompresowane jeszcze najstarszą, prostą, OPUSową wersją (od 25000).

Przy okazji myślenia o kompresorze, przyszło mi do głowy, że nie zadbałem o UDG pisząc go i kiedy pliki ładowane nie zajmują całej pamięci - UDG są niepotrzebnie kompresowane wydłużając plik wynikowy. Więc zajrzałem, a tu niespodzianka: kompresor jednak zeruje pamięć przed załadowaniem plików. W sumie to logiczne bo przecież można kompresować kilka gier po kolei, więc poprzednią zawartość trzeba usunąć, ale oczywiście nie pamiętałem szczegółów... Już drugi raz sam siebie zaskakuję oglądając stare programy :D


POPRAWKA 1 dla gier z File Compressorem.
Poprawka polega na zmianie skoku JP 13251 na JP 6646.
Adres ten znajduje się w bajtach 22 i 23 skompresowanego pliku.
Jak zawsze warto zrobić backup przed zmianami, żeby móc wrócić w przypadku błędu.

Sposób 1: ZX Blockeditor na pececie
1. Wczytać grę do ZX Blockeditor
2. Odnaleźć skompresowany blok - czyli z adresem startowym 25000 lub 24500
3. Zaznaczyć STANDARD DATABLOCK (za nagłówkiem)
4. W menu EDIT kliknąć MODIFY DATABLOCK (lub kliknąć zaznaczony dwukrotnie)
5. Jeśli jest ASCII lub HEX - zmienić sposób wyświetlania na DEC
6. Upewnić się że od adresu 21 (wiersz "16" kolumna "+5") jest sekwencja 195, 195, 51
7. W adresie 22 zmienić 195 na 246, a w 23 zmienić 51 na 25
8. Zatwierdzić OK
9. W menu File zapisać SAVE, lub po prostu zamknąć ZX Blockeditor, wtedy sam zapyta o zapisanie.


Sposób 2: edycja loadera (na realu lub w emulatorze)
Wgrać przez MERGE (lub LOAD i przerwać dalsze ładowanie).
Dopisać tuż przed wywołaniem dekompresji, (np. dla Dobranocek w linii 25):
POKE adr+22,246: POKE adr+23,25
gdzie adr to adres dekompresji wpisany RANDOMIZE USR adr lub DRAW USR adr, itp. (dla Dobranocek wpisać 25022 i 25023).
Zgrać loader.


Sposób 3: COPY COPY (na realu lub w emulatorze)
Skopiować bloki poprzedzające blok skompresowany.
Wpisać LOAD AT 24983 i wgrać blok (razem z nagłówkiem, dlatego 17 bajtów niżej).
Upewnić się wpisując LIST 25021 że od adresu 25021 jest sekwencja 195, 195, 51
Wpisać POKE 25022,246 i POKE 25023,25
Zgrać blok SAVE [enter] i ewentualnie następne.


UWAGA 1:
Sam File Compressor też nie będzie działał na The Spectrum, bo ma w sobie ten sam skok do ROMu :(
Ale zakładam, że nikt nie będzie go chciał używać ;)

UWAGA 2:
Nie wszystkie gry zaczynające się od 24500 są skompresowane moim File Compressorem, więc nie wszystkie wymagają poprawki. Nawet jak są, to znalazłem teraz dema ze zmodyfikowanym dekompresorem (nie algorytm - tylko inaczej obsługiwane), które też nie wymagają poprawki, bo nie mają feralnego skoku. Widziałem też pliki, nie wiedzieć czemu, zaczynające się od 26000, wymagające poprawki. W jednym ten skok był dwukrotnie!

UWAGA 3:
Niektóre moje wersje dyskowe mimo poprawki dalej nie będą działać.
Z tego samego powodu. Które? Te które są przerabiane z wersji multifejsowych i ładują ostatni blok w ekran, np. Decathlon. Wspominałem, że Bill Gilbert też polubił JP 13251? Więc gry Billa też...
Ale o tym w następnym odcinku ;)

KWF

  • *****
  • Wiadomości: 7102
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • "I co ja robię tu, u-u, co Ty tutaj robisz ..."
Odp: The Spectrum.
« Odpowiedź #112 dnia: 2025.02.07, 20:20:20 »
@Phonex: super i gratuluję samozaparcia. Ale to sztuka dla sztuki i rzeźba w d..mule, skoro do deSpektrum można wsadzić oryginalny ROM i zapomnieć o tych tych niedoróbkach producenta klona.
KWF
-----
R Tape loading error 0:1

galaxian

  • ***
  • Wiadomości: 213
Odp: The Spectrum.
« Odpowiedź #113 dnia: 2025.02.07, 21:33:25 »
Jest poprawka!

Piękna instrukcja i ciekawa lektura :)

A co do używania obecnie File Compressora, to udało mi się znaleźć chyba tylko jeden emulator (z tych porządniejszych, bo jakiś badziewnych to nie sprawdzałem), który na którym File Compressor poprawnie działa - wczytuje pliki z dysku Windows, kompresuje i nagrywa na dysk PCta. Zresztą podobnie jest ze Screen Compressorem. Przeważnie nawala obsługa plików z dysku Windows (jak już nawet wczyta plik, to nie zapisze... itp), ale również samo uruchomienie albo działanie programu. Tak więc nie tylko TheSpectrum jest niedopracowane.
ZX Spectrum 48kB / ZX Spectrum+ / ZX Spectrum 128 +2 / Timex 2048 / Atari 800XL / Atari 65XE / Atari 130XE / Atari 800XE / Atari 1040 STF / Commodore 64C / Commodore 64G / Amiga 500 / Amiga 500+ / Amiga 600 / Amiga 1200 / Amiga 1200 Magic

Phonex

  • *****
  • Wiadomości: 1278
  • Miejsce pobytu:
    Warszawa
Odp: The Spectrum.
« Odpowiedź #114 dnia: 2025.02.16, 18:57:01 »
Ja używam ZX Spin. Wszystko działa - poza zacinającym się Symbol shiftem  ;)
File compressora nie próbowałem, ale Screen Compressor tak, wiele razy.

@Phonex: super i gratuluję samozaparcia. Ale to sztuka dla sztuki i rzeźba w d..mule, skoro do deSpektrum można wsadzić oryginalny ROM i zapomnieć o tych tych niedoróbkach producenta klona.
:)
Znalezienie poprawki zajęło minutę osiem. Skoro tak, to czemu się nie podzielić, mimo że opracowanie sposobów to już trochę więcej. Poza tym poprawka dotyczy całej grupy programów.

Inna historia jest z Zero Music, który też nie działa, tylko z innego powodu. Jest tak napisany, że mimo własnej procedury ładującej, przy używaniu Masterface ładuje się w turbo po przełączeniu. W tym celu zamiast używać wpisanych stałych czasowych - pobiera je z odpowiednich miejsc w ROM, czyli po przełączeniu pobiera inne. Ale w The Spectrum zamiast EX AF, AF' / LD B,#B2 jest LD B,#B2 / EX AF, AF' więc pobiera 8 zamiast 178 i wychodzi z tego kompletna kaszana.
Zidentyfikowanie tego zajęło mi może kwadrans, poprawkę w zasadzie już wymyśliłem in-no-time pisząc ten tekst, ale czas opracowania sposobu wpisania poprawki jest niemożliwy do oszacowania - loader jest zaksorowany i zagmatwany na maxa. Zero szans, chociaż chyba mam listingi loadera i xorera, pamiętam za to, że kończyłem składać Zero Music do kupy w sobotę przed giełdą, zaczynając od rana i ledwo zdążyłem...
Tygrys mówił, że zmiany w ROM mają na celu uniknięcie kłopotów z prawami autorskimi i w tym momencie zgadzam się w 100%. Bo w jakim innym celu zamieniać miejscami dwa rozkazy, których kolejność jest obojętna?
« Ostatnia zmiana: 2025.02.16, 20:13:06 wysłana przez Phonex »

Phonex

  • *****
  • Wiadomości: 1278
  • Miejsce pobytu:
    Warszawa
Odp: The Spectrum.
« Odpowiedź #115 dnia: 2025.02.22, 10:18:23 »
Poprawka 2 dla gier z blokiem w ekran

Gry zrzucane przy pomocy Multiface lub podobnych przystawek, mają ostatni blok o długości poniżej 2k, ładujący się w ekran i przerzucany do obszaru od 23296. Było to tak rozwiązane, prawdopodbnie po to, żeby umożliwić ładowanie z microdrive i innych napędów, które tworzyły bufor przed obszarem Basica. Czasami udawało się pozbyć tego, lub skrócić, ale część została.
Moje wersje "Disked by Phonex", które przekompresowałem File Compressorem, używają tej samej sztuczki z JP 13251 przy przerzucaniu ostatniego pliku, więc nawet po zastosowaniu Poprawki 1 - nie będą działać.

Także tu trzeba zastąpić adres 13251 adresem 6646. Tym razem modyfikujemy loader.
Jest kilka wersji loaderów: z ramką jedno-liniową, dwu-liniową, piszące tytuł podwójnym fontem zwykłym lub zmodyfikowanym, albo nie piszące nic (to głównie jak był obrazek). Zmieniały się w zależności od tego z jakiego okresu pochodzą i zmieniał się też adres ostatniego uruchomienia: USR adr. Feralny adres jest pod adr+18.
W ZX Blockeditor, w polu text, da się odczytać argument ostatniego rozkazu w Basicu, żeby łatwiej znaleźć sekwencję 195, 195, 51. Tak jak poprzednio zastępujemy 195 przez 246, a 51 przez 25. Obie poprawki można oczywiście wpisać w jednej sesji.

Kto chce użyć COPY COPY - trzeba wpisać LOAD AT 23738.

Jak już wspominałem gry, które przerabiali Bill Gilbert, Kicia, czy inni, mające ten ostatni blok, też mogą mieć ten feler - potrzebne będą podobne czynności. Tylko MAC był na tyle konsekwentny i wytrwały, że zawsze robił eleganckie wersje bez dodatkowego bloku, a jak raz czy dwa wyjątkowo jednak był - to był od razu ładowany na miejsce (no bo MAC nie miał stacji dysków...).

galaxian

  • ***
  • Wiadomości: 213
Odp: The Spectrum.
« Odpowiedź #116 dnia: 2025.02.22, 18:52:10 »
Ja używam ZX Spin. Wszystko działa - poza zacinającym się Symbol shiftem  ;)
File compressora nie próbowałem, ale Screen Compressor tak, wiele razy.

Naprawdę? ZX Spin zawsze sprawdzam jako pierwszy i coś w nim nawalało (albo program się wieszał, albo nie zapisywało do pliku).
Musiałem dodatkowe emulatory instalować, do używania File Compressora i Screen Compressora.
Muszę sprawdzić ponownie.
ZX Spectrum 48kB / ZX Spectrum+ / ZX Spectrum 128 +2 / Timex 2048 / Atari 800XL / Atari 65XE / Atari 130XE / Atari 800XE / Atari 1040 STF / Commodore 64C / Commodore 64G / Amiga 500 / Amiga 500+ / Amiga 600 / Amiga 1200 / Amiga 1200 Magic

Trahald

  • **
  • Wiadomości: 73
  • Miejsce pobytu:
    Piaseczno
Odp: The Spectrum.
« Odpowiedź #117 dnia: 2025.02.24, 23:37:54 »
A jak odpalasz trd ?
Chyba że jest wersja tego dema w tapie?

Dawno nie zaglądałem na forum dlatego małe opóżnienie w odpowiedzi :)
Jest wersja Paralactiki w tapie, ale totalnie nie pamiętam skąd ją wygrzebałem. Jak potrzeba mogę podesłać
ZX Spectrum+ (Stavi 128kB), FDD3000 (Stavi) 3,5' 5,25', divIDE

galaxian

  • ***
  • Wiadomości: 213
Odp: The Spectrum.
« Odpowiedź #118 dnia: 2025.02.25, 12:11:01 »
Jest wersja Paralactiki w tapie, ale totalnie nie pamiętam skąd ją wygrzebałem. Jak potrzeba mogę podesłać

Potrzeba :)
Przeszukałem co się dało i tylko trd.
Dziękować!
ZX Spectrum 48kB / ZX Spectrum+ / ZX Spectrum 128 +2 / Timex 2048 / Atari 800XL / Atari 65XE / Atari 130XE / Atari 800XE / Atari 1040 STF / Commodore 64C / Commodore 64G / Amiga 500 / Amiga 500+ / Amiga 600 / Amiga 1200 / Amiga 1200 Magic

Phonex

  • *****
  • Wiadomości: 1278
  • Miejsce pobytu:
    Warszawa
Odp: The Spectrum.
« Odpowiedź #119 dnia: 2025.02.25, 16:39:42 »
Naprawdę? ZX Spin zawsze...
A czytałeś instrukcję? Pewnie nie, bo nikt nie napisał...  ???
Przy zgrywaniu trzeba "Insert tape...", wtedy podaje się nazwę, ale bardzo ważne jest zrobić po zgraniu "Eject tape", bo nie zakończy!
Chyba że piszesz o ZX Spin 0.7, który i u mnie zawiesza się po zgraniu (akurat gifa).