
https://drive.google.com/file/d/19qvFeU ... drive_link
https://drive.google.com/file/d/1d8OCqR ... drive_link
Muzyka do gry wciąż się komponuje, to co jest podpięte, to placeholder, abym się nie rozpędził z konsumpcją pamięci

Hej nie, nie. To co jest, zostaje na znakach. Tam dochodzą jeszcze trzy rodzaje obiektów, które poruszają się po ekranie i do których użyję sprajtów. Póki co obiektów na raz jest tak mało, że nie muszę nawet multipleksera robić.
Tam są trzy sprajty: góra i dół plus jeden na tło (rozciągnięty w pionie). Jak widać na filmie, brakuje kilku pixeli po prawej stronie postaci, gdyż grafika powstała głównie z myślą o Atari i Amidze, i nie wszystkie klatki mieściły się w 24 pixelach na szerokość. Temat ten planuję zaadresować softwareowo rysując te piksele na specjalnie zostawionych dwóch znakach z charsetu. Mam sporo czasu CPU wolnego, więc myślę że dam radę. Nie chciałem do tego wykorzystywać dodatkowego sprajta, gdyż jeden i tak by nie wystarczył a do tego nie mam już pamięci w banku VIC (wszystkie klatki animacji zajmują obecnie 120 slotów). Dlatego mam wciąż 5 sprajtów wolnych, które na pewno wykorzystam na "nietoperze" itp.
Hej,
hehe masakra ale ja też tak robię i nie wymyśliłem nic lepszego na razie. jak ktoś zna inny spoób niech się podzieli. z drugiej strony to nie jest jakoś bardzo rasterożerne, a że działa to czemu nie ...
ciekawe.... u mnie przyspieszał (do pewnej wartości prędkości) i to powodowało masę problemów z kolizjami z podłągą przy spadaniu. następnym razem przetestuję Twoje podejście.
No właśnie ja coś spieprzyłem i u mnie to ciągnie dużo rastra, szczególnie że odpalam to dwa razy. Jak będę miał trochę czasu to siądę do tego. Na szczęscie w demo levelu nie muszę sprajtów multiplexować
Dokładnie z tego powodu nie zrobiłem tam Newtona - żeby nie komplikować jeszcze bardziej kodu fizyki a w szczególności precyzyjnego osadzania hipka na podłodze.
Zapamiętam ten pomysł, teoretycznie do zrobienia, nawet jakbym miał napisać speed code z tablicą 256 bajtów z odwróconymi wartościami, to wciąż odzyskam ponad 3kB. Czas oceniam na 40-50 linii rastra, gdzieś może to wcisnę na overscanie (ale NTSC!). Generalnie wolę to, niż robić multiload w wersji demo.
Można podejść do tego na dwa sposoby, albo trzymać tylko klatki animacji z jedną stroną i odwracać je w tym samym obszarze pamięci. Wtedy w banku zwalnia się połowa pamięci zajętej przez animację minus jedna klatka.
Chyba zapomniałem dodać, że właściwie to brakuje mi pamięci wszędzie, nie tylko w banku VIC. Właściwie to w banku VIC jest ok, nawet planuję trzymać tam coś jeszcze. Wszystko trzyma się jeszcze jako tako kupy dlatego, że wszystkie sprajty wędrują do pamięci VIC.Gordian pisze: ↑29 cze 2023, 09:51
Można podejść do tego na dwa sposoby, albo trzymać tylko klatki animacji z jedną stroną i odwracać je w tym samym obszarze pamięci. Wtedy w banku zwalnia się połowa pamięci zajętej przez animację minus jedna klatka.
Można też trzymać klatki (jednej strony) w zupełnie innym obszarze pamięci i kopiować zawsze tylko jedną klatkę. Przy czym tu kopiować trzeba by było zawsze, niezależnie, którą stronę postaci potrzebujemy. Ale zysk pamięci w banku jest dużo większy. Być może mógłbyś tu zmieścić charsety, które generujesz poprzez CPU.
Sprawdziłem odwracanie jednego duszka w pętli (nie speedcode). W przypadku pierwszej metody to 21 linii rastra (pętla 39 bajtów), w przypadku drugiej 17 linii rastra (pętla 34 bajty).
Dzięki!
Nie wiem czy to coś zmienia, ale jeśli używasz banku 0, to postać możesz trzymać na stronie zerowej, a zwolnioną przestrzeń wykorzystać na "coś jeszcze".