Autor Wątek: Przerobione gry (trainery, mysz, ULA+ itp.)  (Przeczytany 93242 razy)

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Przerobione gry (trainery, mysz, ULA+ itp.)
« Odpowiedź #120 dnia: 2012.08.03, 14:43:08 »
I tu jest ten mój błąd - screen wchodzi na uprzednio załadowany plik,
ja zawsze daję screen jako ostatni blok, gdyby był w innej kolejności (za nim byłby inny blok) to po oglądnięciu screenu, gdyby ktoś wcisnął spację przed kolejnym blokiem do załadowania, wyskoczyłby błąd BREAK (tak przynajmniej jest w emulatorach),
Wrzucę (tak jak zawsze robię) nieskompresowany screen bezpośrednio do pamięci ekranu jako ostatni  i podzielę się rezultatami.

P.S. Znalazł byś trochę czasu aby popracować nad moją wersją Deathchase z muzyką (cała gra ma kilka kB),
bym Ci przesłał plik i dokumentacje, co jak po kolei robiłem.
A problemem jest wyłączająca się muzyka.
AY Music, ULA plus.

matofesi

  • *****
  • Wiadomości: 2085
  • Miejsce pobytu:
    Toruń/Poland
Odp: Przerobione gry (trainery, mysz, ULA+ itp.)
« Odpowiedź #121 dnia: 2012.08.03, 15:32:02 »
A ten screen to czeka na wciśnięcie spacji? A... w twoim loaderze czeka... Ładujesz screena jak bozia nakazała - na początku, wyświetlasz, ładujesz całą resztę i PAUSE 0 dajesz przed USR do twojego startera i jest z głowy - w emulatorze się załaduje od razu i wyświetli screena, z fizycznej taśmy nikomu nie przyjdzie do głowy, żeby wciskać spację aż się załaduje do końca.

A na deatchchase'a mogę rzucić okiem - co prawda patrząc na szybko to nawet ze znalezieniem poprawnego adresu startu mam problem;) Ale może znajdę coś, co przegapiłeś.

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Przerobione gry (trainery, mysz, ULA+ itp.)
« Odpowiedź #122 dnia: 2012.08.03, 16:24:17 »
Napiszę Ci co robiłem w Deathchase, na początku wspomnę, że gra chodzi tylko na 48k, na 128k wywala się.
Oryginalna gra to loader w Basic i blok 40000,16200 przeniesiony po ładowaniu przez LDIR na adres 16384 i to wszystko
1. Dodałem kod pod 60000, który przenosi tylko ostatnie 9288 bajtów, sprawdza klawiaturę (menu trainera)
2. Następnie doładowywany jest blok 48640,9076 zawierający muzykę, obsługę przerwań, a także przenosi ekran z 40000 pod 16384 i gra sama startuje przez RET.
Tablica przerwań jest pod 48640, obsługa przerwania 49089, a muzyka pod 49152 (init 49152, play 49156)
3. Przeszukałem grę w debuggerze szukając DI, zamieniałem je na NOP,
znalazłem też w kodzie gry jedno odniesienie do ROM zawierające DI (1218), skopiowałem procedurę pod 61218 usuwając DI.
4. Usunąłem dźwięki na beeper, praca silnika motoru przegłuszała muzykę. Usunąłem te dźwięki, z wyjątkiem startu gry (bo i tak muzyka zatrzymywała się przy starcie. Efekt trafienia wroga zamieniłem na efekt na border XOR 16 na XOR 3 przed OUT 254,a
I to chyba wszystko co namieszałem.
AY Music, ULA plus.

matofesi

  • *****
  • Wiadomości: 2085
  • Miejsce pobytu:
    Toruń/Poland
Odp: Przerobione gry (trainery, mysz, ULA+ itp.)
« Odpowiedź #123 dnia: 2012.08.03, 18:53:11 »
No to już ci mówię co spaprałeś... Procedura odtwarzania dźwięku jest nie pod 49156 (c004) tylko pod 49158 (coo6) - kod muzyki zaczyna się od
ld hl,c43c
jp init ; c009
jp play ; c144

Twój skok do odtwarzania trafia w środek pierwszego jumpa, co daje kod
add hl,bc
ret nz
jp play ; c144

I wszystko gra o ile w F' (bo w momencie wejścia w to miejsce właśnie zrzuciłeś na stos rejestry i wybrane masz rejestry "primowane") ustawiony wskaźnik Z - ret nz nic nie robi i kod skacze do odtwarzania. W niektórych miejscach jednak coś się zmienia i w F' Z jest kasowane - dzieje się tak na przykład po zabiciu się i to powoduje, że skok w środek dostaje spełniony warunek dla ret'a i muzyka się zatrzymuje.

Popraw skok w swojej procedurce i powinno grać.

A swoją drogą - nadal nie udało mi się namierzyć jak gra się odpala - skacze do ROMu do normalnej procedury powrotu z obsługi USR coś tam mocno mieli i na koniec idzie tam gdzie trzeba - prawie na pewno ma poustawiane zmienne systemowe i stos kalkulatora tak, że w pewnym momencie wyrzuca kod z ROMu do gry... Ale głowy sobie nie dam uciąć ;)
« Ostatnia zmiana: 2012.08.03, 18:56:50 wysłana przez matofesi »

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Przerobione gry (trainery, mysz, ULA+ itp.)
« Odpowiedź #124 dnia: 2012.08.03, 21:06:57 »
Postaram się, potrzebuję też szybkiej odpowiedzi
Z którego portu odczytuje się wartosci AY?
AY Music, ULA plus.

matofesi

  • *****
  • Wiadomości: 2085
  • Miejsce pobytu:
    Toruń/Poland
Odp: Przerobione gry (trainery, mysz, ULA+ itp.)
« Odpowiedź #125 dnia: 2012.08.04, 00:23:46 »
$fffd

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Przerobione gry (trainery, mysz, ULA+ itp.)
« Odpowiedź #126 dnia: 2012.08.11, 08:16:29 »
No to wreszcie mamy finał z Deathchase, nie zauważyłem tylko że utwór pod koniec ma kilkanaście sekund ciszy,
ale pasował tutaj idealnie. Przywróciłem też część dźwięków na beeper (start poziomu, zestrzelenie motoru i zderzenie z drzewem).

Gra chodzi tylko na ZX 48, trudno się dziwić, w roku 1983 nikt nie myślał o 128k.

Zmienne systemowe na pewno są ustawione, bo próbowałem zmienić font przed wywołaniem gry, to wraca do standardowego.
« Ostatnia zmiana: 2012.08.11, 08:21:03 wysłana przez Abrimaal »
AY Music, ULA plus.

matofesi

  • *****
  • Wiadomości: 2085
  • Miejsce pobytu:
    Toruń/Poland
Odp: Przerobione gry (trainery, mysz, ULA+ itp.)
« Odpowiedź #127 dnia: 2012.08.11, 14:25:55 »
Oryginalny Deathchase co do zasady chodzi na Spectrum 16k. Wczytywany blok kodu ma 16 kilo - jakieś 200 bajtów i nadpisuje wszystko jak leci zaczynając od ekranu. Robi też coś magicznego czego nie rozumiem ze zmiennymi właśnie - odpala się przez którąś pokrętnie ustawioną zmienną przy wyjściu z jakiejś procedury w ROMie.

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Przerobione gry (trainery, mysz, ULA+ itp.)
« Odpowiedź #128 dnia: 2013.01.14, 21:42:28 »
Z czymś takim jeszcze nie spotkałem się. Czy ja już całkiem zgłupiałem czy system nie radzi sobie z BASICowym IF...THEN  ?>:(
Zrobiłem paletę na ULA+ dla BOMB JACK i jak zwykle chciałem dodać trainer.
Gdy wpisuję POKE podczas gry w emulatorze to działa, a z menu w BASIC gdy odpalam, nie działa.
AY Music, ULA plus.

galaxian

  • ***
  • Wiadomości: 213
Odp: Przerobione gry (trainery, mysz, ULA+ itp.)
« Odpowiedź #129 dnia: 2013.01.15, 09:54:55 »
a z menu w BASIC gdy odpalam, nie działa.

Co rozumiesz przez "z menu w BASIC" ?
Bomb Jack miał nietypowy loader i nie dało rady wpisać tam POKEów (aby była możliwość wyboru przed uruchomieniem gry przez USR).
Trzeba było POKE wpisywać w COPY COPY na stałe.
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

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Przerobione gry (trainery, mysz, ULA+ itp.)
« Odpowiedź #130 dnia: 2013.01.15, 15:42:19 »
Znalazłem "czysty" loader, jest na WOS jako .tap - LOAD "" SCREEN$ : LOAD "" CODE : RANDOMIZE USR 28000
tak wyglądał loader przed dopisaniem trainera.
Jeśli program wykonuje zmianę koloru (podświetlenie opcji) podczas wciskania klawisza, to POKE też wpisuje, bo jest ono przed podświetleniem, w tej samej linii.
Nigdy nie zdarzyło mi się, żeby program w BASIC nie wykonywał instrukcji, dlatego zamieściłem grę w załączniku.
AY Music, ULA plus.

Phonex

  • *****
  • Wiadomości: 1278
  • Miejsce pobytu:
    Warszawa
Odp: Przerobione gry (trainery, mysz, ULA+ itp.)
« Odpowiedź #131 dnia: 2013.01.15, 15:58:05 »
Obejrzałem loader i uchachałem się.
BORDER BIN: PAPER BIN.  <- Znaczy kosz na papiery  :D
A ja się męczyłem z NOT PI. Postęp!
Nie używałem nigdy funkcji BIN, to nie wiedziałem że można jej użyć bez argumentu!

A wracając do sedna: chwilowo mam coś do zrobienia. Przeanalizuję później.

Pyza^Illusion

  • *****
  • Wiadomości: 587
  • Miejsce pobytu:
    Lubań, dolnośląskie
Odp: Przerobione gry (trainery, mysz, ULA+ itp.)
« Odpowiedź #132 dnia: 2013.01.15, 17:12:09 »
Hehe... też tego nie znałem.
Były NOT PI, SGN PI, CODE "o" i inne wariactwa na skrócenie BASIC'owego loadera, ale ten BIN mnie też rozwalił :D Chylę czoła!
ZX Spectrum+ (128kB by STAVI), FDD3000, TI-OF-TTL/ZXVGS, Masterface2b, MacFace II, DivIDE plus, Just Speccy 128...

Abrimaal

  • *****
  • Wiadomości: 965
  • Miejsce pobytu:
    Lemmingrad
  • Zamulator
    • Games for ULA plus
Odp: Przerobione gry (trainery, mysz, ULA+ itp.)
« Odpowiedź #133 dnia: 2013.01.15, 18:11:31 »
Ja też stosunkowo niedawno znalazłem to BIN w jednym z loaderów.

Zdaje mi się, że POKE nie działają dlatego, że albo gra jest skompresowana albo zakodowana.
Spróbuję zrobić zrzut RAMu po uruchomieniu gry i podmienić blok z kodem.
Trzeba będzie tylko sprawdzić, czy gra po rozpakowaniu nie przenosi stosu niżej, ani nie ładuje nic poniżej RAMTOP ustawiony przez loader na 27999.
« Ostatnia zmiana: 2013.01.15, 18:20:28 wysłana przez Abrimaal »
AY Music, ULA plus.

Phonex

  • *****
  • Wiadomości: 1278
  • Miejsce pobytu:
    Warszawa
Odp: Przerobione gry (trainery, mysz, ULA+ itp.)
« Odpowiedź #134 dnia: 2013.01.15, 18:55:38 »
Ja też stosunkowo niedawno znalazłem to BIN w jednym z loaderów.
...

Wyszła lipa. Po obejrzeniu Openerem (właśnie wrzuciłem do archiwum, jakby co), okazuje się że zysku nie ma. Edytor uzupełnia liczby po naciśnięciu ENTER. W pamięci jest PAPER BIN i 14 (kod "liczba") i pełna reprezentacja liczby - czyli +6 bajtów. Tak samo jakby było wpisane PAPER 0. Coś mi teraz świta że już ktoś o tym mówił w czasach Spectrum.
Po wpisaniu np. PAPER BIN 101 mamy po 101: 14 0 0 5 0 0.

...
Zdaje mi się, że POKE nie działają dlatego, że albo gra jest skompresowana albo zakodowana.
Spróbuję zrobić zrzut RAMu po uruchomieniu gry i podmienić blok z kodem.
Trzeba będzie tylko sprawdzić, czy gra po rozpakowaniu nie przenosi stosu niżej, ani nie ładuje nic poniżej RAMTOP ustawiony przez loader na 27999.

Gra coś robi z pamięcią. Wpisana wartość jest gdzie trzeba, a po uruchomieniu gry znika. I kod w okolicy też już jest inny. Coś sobie przerzuca.
W ogóle dziwnie startuje: od 28000 jest LD SP, ... a potem 20 kilo śmieci - grafika albo coś. Sensowny kod jest od 48483.

I tak - przerzuca coś poniżej ramtop - od 24xxx wrzuca ekran na przykład.
« Ostatnia zmiana: 2013.01.15, 18:57:45 wysłana przez Phonex »