forum speccy.pl
ZX Spectrum => GRY => Wątek zaczęty przez: Abrimaal w 2012.11.05, 09:53:10
-
Po długiej przerwie zrobiłem trainer/selektor ULA+ do kolejnej gry. Tym razem to jest Lightforce.
Okazało się, że po dodaniu intro wraz z muzyką pod koniec pamięci pozostaje jeszcze ponad 1kB.
Gra nie wchodzi na muzykę z intro, stąd mój pomysł, czy mógłby ktoś dopisać procedurę grania muzyki w czasie gry?
Ja już pousuwam wszystkie DI i jeśli się uda, to również odwołania do ROM-u.
Kilka szczegółów (bloki):
Loader w Basic,
Muzyka + palety i inne bajery: 57528, 7709
Kod intro: 62536, 1044
Właściwa gra: 24800, 32427
Standardowy screen: 16384, 6912
Gdyby ktoś potrafił (i chciał) dołączyć taką procedurę byłoby super.
Ja się jeszcze w przerwaniach gubię.
-
Ja kiedys programik na to zrobilem: http://www.worldofspectrum.org/infoseekid.cgi?id=0022992
-
Program jest bardzo dobry. Dzięki, choć z grą nie da się nic zrobić.
Nie dopatrzyłem, że tworzy ona własną tabelę przerwań w tym miejscu gdzie jest muzyka w intro, a poniżej 49152 nic nie zmieszczę, aby przełączać banki.
-
Na szybko rzuciłem okiem w to co podesłałeś.
Intro trzeba poprawić bo działa tylko jedną ramkę. Pewnie coś nie tak z czytaniem klawisza, który wychodzi z pętli intra i odpala grę.
Co do muzyki. Gra włącza IM2 a kod obsługi przerwania znajduje się pod adresem 53928. Wystarczy w tamtym miejscu zrobić CALL do swojej procedurki, która będzie robić to co robił zastąpiony przez tegoż CALLa kod, a następnie będzie grać muzykę.
-
Tygrys, na czym sprawdzałeś? Może masz wciśnięty fire w joysticku albo za długo wciskasz spację (spróbuj inny klawisz)?
U mnie w 5 emulatorach intro startuje prawidłowo.
Zrobiłem to tak, że grę uruchomić można wciśnięciem spacji, 0 lub kempston fire, jeśli to będzie przeszkadzać,
to zmienię na jeden klawisz, np. 0
Jeśli chodzi o przerwania to pomęczę się z tym przy okazji.
-
Bardzo możliwe że miałem coś nie tak z ZX Spinem, teraz już jest OK, więc przepraszam za fałszywy alarm ;)
Zacząłem grzebać w tym co podesłałeś. Niedługo podeślę moje propozycje poprawek.
-
To jednak nie był fałszywy alarm. Popełniłeś znany błąd -- zacząłeś używać kempstona bez wcześniejszego sprawdzania czy jest dostępny.
Zmiany jakie proponuję to:
- wykrywanie kempstona, zanim nastąpi próba jego użycia
- toggle dla opcji 3 i 4, wiąże to się również z podświetlaniem linijki z opcją
- drobne optymalizacje oraz reorganizacja kodu
Muzyki podczas gry jeszcze się nie dotykałem.
-
Dzięki za poprawki. Zrobienie toggle zawsze było dla mnie diabelską sztuczką.
Ponadto zatrzymałem się z assemblerem gdzieś koło roku 1990 i taka instrukcja jak
_immunity equ $+1
jest dla mnie całkowicie niezrozumiała.
Cieszę się, że pomogłeś.
-
_immunity equ $+1
to jest zdefiniowanie etykiety, której wartością jest aktualny adres pamięci $ zwiększony o 1.
To zabieg bardziej estetyczny, połączony z wygodą, co może pokazać przykład. Nie muszę pamiętać, o ile mam zwiększyć adres aby poprawnie zmodyfikować kod:
Przykład bez użycia sztuczki:
_immunity:
ld a,0
inc a
ld (_immunity+1),a
oraz z jej użyciem:
_immunity: equ $+1
ld a,0
inc a
ld (_immunity),a
-
Znalazłem przeróbkę na mysz tej gry i chciałem ją dołączyć, ale nic za cholerę mi nie wychodzi (pierwszy załącznik - oryginał).
Najpierw musiałem wyłączyć muzykę (czy tylko ją zatrzymałem i to może być powód?), bo gra doładowuje blok-sterownik 227b na muzykę, zaraz za kodem gry.
Dalej w Basicowym loaderze (nie usuwałem tego, ale przepisałem na asm i stamtąd to startuje, na samym końcu pliku code3) jest kilkanaście POKE, które wpisywane są w różne miejsca gry.
Jeśli ich nie dodaję, to gra startuje, ale chodzi na joystick Kempston, gdy dodam, to się wiesza.
Gdzie popełniam błąd? Nie mam pojęcia, może szybko spojrzysz na to. Jeśli nie da się tego uruchomić, dam sobie spokój.
Jednocześnie odpada też sprawa muzyki w grze, jeśli ma być mysz, jak wspomniałem sterownik jest ładowany na muzykę.
Ostatnie pytanko odnośnie assemblera. Znalazłem w Twoim kodzie coś takiego jak rept 8. Domyślam się, że znaczy to, że ma powtórzyć 8 razy. Tylko co? Ostatnią operację, czy jakiś zdefiniowany wcześniej fragment?
-
Tutaj znajdziesz odpowiedź na temat rept: http://pasmo.speccy.org/pasmodoc.html
-
Abrimaal, zajrzę do tego niedługo, póki co jestem zawalony inną robotą.