Po pierwsze tylko spity mogą być wyświetlane w obszarze obramowania lub powtarzający się 8-bitowy wzór (8 pikseli szerokości), który jest odczytywany z ostatniego bajtu banku wideo, zwykle 3 funty. Zauważ, że widzisz tylko te sprite'y lub 8-bitowy wzór, gdy oszukujesz układ VIC, aby "nie wyświetlał" granic. Zobacz poniżej.
Granice mają wyższy priorytet niż sprite, więc normalnie, gdy kresek jest rysowany w obszarze granicznym, krawędź obejmuje duszek. Przy odrobinie oszustwa VIC można wyłączyć granice.
Można bardzo łatwo obrócić górną i dolną granicę (wyjaśnię poniżej), a boczne krawędzie są bardzo krytyczne.
Po pierwsze trochę informacji o tym, jak układ VIC działa na c64.
Układ VIC rysuje ekran od górnego lewego rogu do prawego górnego rogu, następnie wzdłuż linii, i od lewej do prawej, aż cały ekran zostanie narysowany. Wykonuje to odświeżanie 50 razy na sekundę (dla jednostek PAL) lub 60 razy na sekundę dla (jednostek NTSC).
Istnieje 8-bitowy rejestr VIC, który zawiera pionową pozycję rastra w danym momencie. $ d012. W rzeczywistości istnieje więcej niż 255 możliwych pozycji, więc 9 bit jest zapisany w bit 7 (najwyższy bit) lub rejestruj $ d011. W każdym momencie możesz przeczytać te rejestry i dowiedzieć się pionowej pozycji rastra. Nie ma dostępnego rejestru, aby odczytać pozycję x rastra.
Kolejna fajna funkcja chipu VIC została wykorzystana do rozwiązania problemu podczas korzystania ze sprzętowego przewijania. Podstawowe przewijanie pionowe zostało osiągnięte poprzez użycie rejestru sprzętowego, aby przesunąć ekran w zakresie 0-7 pikseli w pionie. Po osiągnięciu limitu (0 lub 7 w zależności od kierunku przewijania) przesuniesz każdy blok znaków (8x8 pikseli) o jeden blok w pionie i narysujesz nowe dane do wyświetlenia u góry (lub u dołu w zależności od kierunku). Działa to bardzo dobrze, z tym że co 8 pikseli przewijania zobaczysz dane "pop" na ekranie. Aby temu zaradzić, możesz zwiększyć obszar granicy o 8 pikseli w pionie, usuwając bit 3 w rejestrze $ d011. Nazywa się to trybem 24-wierszowym. Domyślnie ekran został ustawiony na 25 wierszy ze znakami 8x8 pikseli. W trybie 24-wierszowym nadal można było narysować znaki w dolnym rzędzie, po prostu byłyby one ukryte za granicą.
Więc sztuczka wyłączyć górne i dolne granice jest:
1) Ustaw ekran w tryb 25 rzędów
2) czekać na raster, aby osiągnąć pozycję pionową pomiędzy $ F2 i $ fa (8 pikseli pomiędzy miejscem rozpoczęcia granicy zarówno w trybie 24-wierszowym, jak i 25-wierszowym).
3) Ustaw ekran w trybie 24 wierszy ... przesuwania pionowego startu granicy powyżej aktualnej pozycji rastra
4) Poczekaj, aż po pionowej pozycji rastra ($ fa)
5) Powtórz każdą klatkę Krok 3) oszukuje układ VIC, myśląc, że już zaczął rysować obramowanie, aby nigdy go nie narysować. Voila, górna i dolna granica są otwarte.
Jeśli chodzi o krawędzie boczne, można zrobić to samo z różnymi rejestrami, ale ponieważ ruch poziomy rastra jest o wiele szybszy niż ruch w pionie, czas musi być znacznie ostrzejszy. I jest jeszcze jedna kwestia, którą należy wziąć pod uwagę, zwaną jitter. < - czego nie wyjaśnię tutaj. Wyszukaj w internecie "Stable Raster C64", aby uzyskać szczegółowe wyjaśnienie tego problemu.
wow ... nawet jeśli otrzymasz odpowiedź - czy masz możliwość jej przetestowania? – Dani
Mój c64 czeka w piwnicy –
Jestem prawie pewien, że mój tata nadal ma nasze stare C64 zeskakane gdzieś w piwnicy. – gnovice