VVVVVV
-
- Posty: 46
- Rejestracja: 10 paź 2015, 20:55
VVVVVV
Witam ponownie.
Niedawno skończyłem pisać komodorowską wersję fleszowej gierki VVVVVV.
Jak dobrze pójdzie – niedługo ją zamieszczę.
Istnieje od dawna dużo lepiej zrobiona wersja demo napisana przez PaulKo, ale moja mimo, że jest trochę uproszczona - jest kompletna, nawet z krótkim zakończeniem ( i muzyką rąbniętą z hvsid)
Jest tylko jeden szkopuł:
Na Vice i ccs65 działa pięknie, ale na prawdziwym C64 potrafi się wykrzaczyć w trakcie wczytywania plików.
Nie wiem czy to z winy sd2iec (na M32) czy nie.
Pliki wczytywane są przez Kernalowe procedury I/O, ale z przerwaniami od Vica zamiast Cia (jedno na ramkę) – co 20ms zamiast ok17, ma to znaczenie?
I druga sprawa – czy przed wczytaniem pliku musze sprawdzać np. czy napęd jest gotowy do odczytu czy mogę tak ciurkiem lecieć z kolejnymi plikami? – na początku ładowane są kolejno pliki z różnymi bzdetami?
Niedawno skończyłem pisać komodorowską wersję fleszowej gierki VVVVVV.
Jak dobrze pójdzie – niedługo ją zamieszczę.
Istnieje od dawna dużo lepiej zrobiona wersja demo napisana przez PaulKo, ale moja mimo, że jest trochę uproszczona - jest kompletna, nawet z krótkim zakończeniem ( i muzyką rąbniętą z hvsid)
Jest tylko jeden szkopuł:
Na Vice i ccs65 działa pięknie, ale na prawdziwym C64 potrafi się wykrzaczyć w trakcie wczytywania plików.
Nie wiem czy to z winy sd2iec (na M32) czy nie.
Pliki wczytywane są przez Kernalowe procedury I/O, ale z przerwaniami od Vica zamiast Cia (jedno na ramkę) – co 20ms zamiast ok17, ma to znaczenie?
I druga sprawa – czy przed wczytaniem pliku musze sprawdzać np. czy napęd jest gotowy do odczytu czy mogę tak ciurkiem lecieć z kolejnymi plikami? – na początku ładowane są kolejno pliki z różnymi bzdetami?
- Załączniki
-
- vvvvvv1.JPG (41.89 KiB) Przejrzano 21736 razy
Ja bym spróbował na tym:
http://www.hoxs64.net/
u mnie podczas pisania demo też chodziło dobrze na Vice, na prawdziwym sprzęcie zwisy, hoxs64 tak samo, loader był do poprawek.
Jeśli na hoxsie chodzi dobrze, to pewnie sd2iec gubi się przez te niestandardowe przerwania.
Ogólnie gorąco polecam przesiąść się na jakiś wszechstronny loader np:
http://csdb.dk/release/?id=118713
Zapewni przyzwoitą prędkość na zwykłych stacjach a w przypadku SD2IEC/dysków twardych etc przełączy procedury ładujące na te z kernela.
Finalnie gratki za produktywność
http://www.hoxs64.net/
u mnie podczas pisania demo też chodziło dobrze na Vice, na prawdziwym sprzęcie zwisy, hoxs64 tak samo, loader był do poprawek.
Jeśli na hoxsie chodzi dobrze, to pewnie sd2iec gubi się przez te niestandardowe przerwania.
Ogólnie gorąco polecam przesiąść się na jakiś wszechstronny loader np:
http://csdb.dk/release/?id=118713
Zapewni przyzwoitą prędkość na zwykłych stacjach a w przypadku SD2IEC/dysków twardych etc przełączy procedury ładujące na te z kernela.
Finalnie gratki za produktywność
-
- Posty: 46
- Rejestracja: 10 paź 2015, 20:55
Co do wyłączania duszków, doszedłem już do tego doświadczalnie, akurat Vice też "zawiesza" się gdy 0xD015 > 0.
Ale częściowo rozgryzłem w czym problem: - po przerobieniu obrazu dyskietki na m2i - praktycznie wszystko działa bez zgrzytów.
Natomiast z .D64 problem był m.in. z plikiem muzycznym .sid - wczytywał się we właściwe miejsce (4500 nopów rozpychające obszar od prawie $1000 do ponad $2000 - sidy maja 4KB - taka metoda gdy pisze się w C i nie ma kontroli nad kształtem kodu)
ale ładowało się więcej danych niż wynikało z długości pliku - w większości były to zera albo inne niezidentyfikowane dane, tak że po powrocie z $ffd5 kernala procesor wchodził w krzaki.
Może ponadpisywały się jakieś wskaźniki kernala itp? Nie bardzo mam jak to sprawdzić. Najlepiej było by na prawdziwej 1541...
Procedury "nie-kernalowe" - muszę zrozumieć jak to działa, bo nawet nie wiem jak to uruchomić...
Ale częściowo rozgryzłem w czym problem: - po przerobieniu obrazu dyskietki na m2i - praktycznie wszystko działa bez zgrzytów.
Natomiast z .D64 problem był m.in. z plikiem muzycznym .sid - wczytywał się we właściwe miejsce (4500 nopów rozpychające obszar od prawie $1000 do ponad $2000 - sidy maja 4KB - taka metoda gdy pisze się w C i nie ma kontroli nad kształtem kodu)
ale ładowało się więcej danych niż wynikało z długości pliku - w większości były to zera albo inne niezidentyfikowane dane, tak że po powrocie z $ffd5 kernala procesor wchodził w krzaki.
Może ponadpisywały się jakieś wskaźniki kernala itp? Nie bardzo mam jak to sprawdzić. Najlepiej było by na prawdziwej 1541...
Procedury "nie-kernalowe" - muszę zrozumieć jak to działa, bo nawet nie wiem jak to uruchomić...
http://codebase64.org/doku.php?id=base:dos_examples
Może porównaj swój kod z kodem z tej strony, który musi działać poprawnie - autorem jest legenda sceny: Graham/Oxyron.
Szczególnie ciekawa jest ta linijka:
Generalnie w jakieś dziwne formaty typu M2I bym nie szedł, D64 jest standardem.
Może porównaj swój kod z kodem z tej strony, który musi działać poprawnie - autorem jest legenda sceny: Graham/Oxyron.
Szczególnie ciekawa jest ta linijka:
Be aware that some of these KERNAL routines call SEI and CLI, so if you have interrupts running in your program, be sure to disable your interrupts properly (i.e. do not only do SEI) before calling these routines in case you don't want the interrupts to be re-enabled by the KERNAL code.
Ogólnie z tego co mi wiadomo Vice jest już bardzo, bardzo dokładny, ale największe zaufanie mam do Hoxsa, myślę, że testując w nim nie ma się co obawiać, że na prawdziwym C64 będzie inaczej.Najlepiej było by na prawdziwej 1541...
Generalnie w jakieś dziwne formaty typu M2I bym nie szedł, D64 jest standardem.
Polecam zdecydowanie, chyba najtrudniejszym elementem jest konfiguracja oraz kompilacja(mogę z tym pomóc jeśli nie masz Linuxa/OSX pod ręką), potem dostajesz dwie binarki: install która instaluje loader w stacji 1541 oraz runtime - malutki kawałek kodu który obsługuje komunikacje własnym protokołem ze stacją oraz dodatkową funkcjonalność jak np ładowanie skompresowanych plików i dekompresja w locie.Procedury "nie-kernalowe" - muszę zrozumieć jak to działa, bo nawet nie wiem jak to uruchomić...
-
- Posty: 46
- Rejestracja: 10 paź 2015, 20:55
Wnioski z wyłączenia duszków, ustawienia przerwań na $ea31 i zastosowania procedur z codebase64:
Na Hoxs64, Vice i Ccs64 działa bez problemu.
Na żywym C64 z pradawnym sd2iec po przerobieniu d64 do m2i działa równie dobrze;
sd2 z d64 wykłada się, zazwyczaj przenosi do katalogu wyżej i nie może już znaleźć plików - czyli wina sd2 - muszę wywalić to dziadostwo i zastąpić czymś działającym.
Hoxs ponadto jako jedyny pokazał by nie zakładać, że ram po włączeniu komputera jest rzeczywiście wyzerowany...
Fast-loadery zastosuję w następnym wydaniu, będę pewnie długo eksperymentował- szkoda tyle czekać, a o pomoc poproszę jak nie dam sobie rady
Zamieszczam d64 i m2i gdyby były jakieś problemy.
Gdy gra nie będzie mogła z jakiegoś powodu zmodyfikować pliku "save" efektownie się wykrzaczy - należy wtedy uruchomić drugi plik "vvvvvvnosave".
Na Hoxs64, Vice i Ccs64 działa bez problemu.
Na żywym C64 z pradawnym sd2iec po przerobieniu d64 do m2i działa równie dobrze;
sd2 z d64 wykłada się, zazwyczaj przenosi do katalogu wyżej i nie może już znaleźć plików - czyli wina sd2 - muszę wywalić to dziadostwo i zastąpić czymś działającym.
Hoxs ponadto jako jedyny pokazał by nie zakładać, że ram po włączeniu komputera jest rzeczywiście wyzerowany...
Fast-loadery zastosuję w następnym wydaniu, będę pewnie długo eksperymentował- szkoda tyle czekać, a o pomoc poproszę jak nie dam sobie rady
Zamieszczam d64 i m2i gdyby były jakieś problemy.
Gdy gra nie będzie mogła z jakiegoś powodu zmodyfikować pliku "save" efektownie się wykrzaczy - należy wtedy uruchomić drugi plik "vvvvvvnosave".
- Załączniki
-
- vvvvvv.rar
- (70 KiB) Pobrany 1076 razy
-
- vvvm2i.rar
- (73.37 KiB) Pobrany 709 razy