Pod systemem mam 2MB chip ram. To nie to, bo zaraz po wymianie ADF lekko zamieli i koniec. A wiem że najpierw wczytuje pliki do fast ramu po to, żeby je rozpakować. No i właśnie też dlatego gra ma takie wymagania co do fast ramu. Może wytłumaczę, jak to tutaj działa.
1. Alokuję pamięć w fast ramie o rozmiarze 8 bajtów
2. Wczytuję pierwsze 2 długie słowa pliku
3. Odczytuję drugie długie słowo, bo tam jest zapisany rozmiar pliku po rozpakowaniu
4. Kasuję zaalokowaną pamięć i alokuję nową o rozmiarze odczytanej wcześniej wartości
5. Wczytuję spakowany plik do pamięci i go rozpakowuję
Moim zdaniem nie wygląda to źle, bo gra ma dużo danych, a i samo menu główne jest spore. Kilka grafik, które trzymam w fast ramie, przewijany napis to bitmapa ok. 320x1000 pix w 3 bitplanach, bo tam wyświetlam to w DualPlayfieldzie. Sporo rzeczy trzymam ciągle w fast ramie, aby nie trzeba było za każdym razem doczytywać z dyskietki i dzięki temu unikam "wachlowania" ADFami. Jedynie gdy będzie ładowany level powyżej drugiego, bądź z takiego levelu będziemy wracać do menu głównego. 0,5MB fast ram to nie jest wcale tak wiele, jeśli każdy plik na początku wczytuję do fast ramu i go wypakowuję, a tablice w pamięci też trochę zajmują. No i trochę ich jest.
Może się zdarzyć, że gra będzie wymagać 1,5MB fastu, ale to się okaże gdy będzie gotowa piramida, bo tam tablica mapy to jest narazie 240x200 kafli 8x8, ale wiem że to mało i będzie większa.
@Selur
Ścieżka dostępu raczej dobra, skoro bootując z ADFa działa dobrze. Może ja tu wrzucę ten kod odczytu, bo on jest prosty (amosowaty :D):
dir$="LVL3/"
music$=dir$+"music.pack"
While exists(music$) = false
VWait
Wend
Pod pętlą While...Wend program czeka na drugiego ADFa, jeśli nie znajduje pliku. Tak jak pisałem, uruchamiając spod systemu po włożeniu ADFa z plikiem chwilkę zamieli ADF i się wyłącza. Bootując taki kod, wszystko działa jak należy :)
Ostatnia aktualizacja: 15.08.2023 08:03:26 przez tukinem