[#1] ADF Startup-Sequence
Czy jest możliwość w startup-sequence stworzenia pętli warunkowej sprawdzającej ilość dostępnej pamięci Chip RAM i w razie czego uruchomienia konkretnego pliku uruchamialnego? Chodzi mi o coś w ten deseń:
IF AvailMem(2)<256000
   GRA_SMALL.exe
ELSE
   GRA_FULL.exe
ENDIF


Oczywiście taki kod wywala mi błąd braku komendy "IF".
A może trzeba w ASM One napisać sobie krótki kod uruchamiający konkretny plik .exe? Może w AmigaE?

Docelowy kickstart to 1.2/1.3.
[#2] Re: ADF Startup-Sequence

@tukinem, post #1

Wystarczy że dodasz odpowiednie pliki do katalogu C, tak aby nie było błedu.
Pamiętaj aby te programy zadziałały pod kick1.2/1.3.
Najlepiej użyć te z dedykowanego Workbencha
[#3] Re: ADF Startup-Sequence

@tukinem, post #1

Polecenie IF istnieje w AmigaDOS i da się zrobić taki kod warunkowy:

IF `AVAIL CHIP` GE 256000 VAL
    Gra_Full.exe
ELSE
    Gra_Small.exe
ENDIF

Odwrócony apostrof przy AVAIL CHIP może jednak wymagać OS 2.0+. Jeśli tak, możesz jednak skorzystać ze zmiennej środowiskowej.
1
[#4] Re: ADF Startup-Sequence

@Hexmage960, post #3

spróbowałem i jednak wyświetla mi tak:


oto kod startup-sequence:
[#5] Re: ADF Startup-Sequence

@tukinem, post #4

Prawdopodobnie (jak napisał Norbert) polecenie IF w AmigaDOS 1.3 jest plikiem w katalogu C z poleceniami. Musisz skopiować ten plik do swojego katalogu C.

W systemie OS 2.0 IF jak i wiele innych poleceń są "rezydentne", tzn. wbudowane (listę takich poleceń zobaczysz wykonując polecenie RESIDENT w 2.0).
1
[#6] Re: ADF Startup-Sequence

@tukinem, post #4

1) wciaz brak programu IF w katalogu C:
2) w wiekszosci przypadkow sprawdzenie powinno byc przez: "AVAIL TOTAL CHIP", ale to juz kwestia decyzyjna autora i tego jak duze pliki chce tam pchac
[#7] Re: ADF Startup-Sequence

@juen, post #6

Skopiowałem pliki IF i AVAIL z Workbencha 1.3.3 do ADFa do katalogu C:

Teraz mam taki komunikat:


Głównie chodzi o grę TonyGO. Gra będzie działać na Amidze 1000 256KB Chip, ale nie mogę w kodzie gry dodać kodu zawierającego cokolwiek od obsługi dźwięku, gdyż wtedy kompilator doda całą bibliotekę ProTrackera do kodu i przekroczę limit 256 KB. Dlatego chcę stworzyć dwa pliki uruchamialne. Jeden dla konfigu z 256 KB, a drugi zawierający odgrywanie muzyki i dźwięków. Ten drugi będzie większy o te 20 KB, dlatego pytam tu, jak to możliwie dobrze rozdzielić. Może w startup-sequence łatwiej byłoby wypisać w AmigaDOS tekst typu:

Choose version:
1 - with sounds and music
2 - without
[#8] Re: ADF Startup-Sequence

@tukinem, post #7

Wygląda na to, że odwrócone apostrofy, które wklejają wynik działania programu nie działają pod OS 1.3 (wymagają systemu OS 2.0). Możesz spróbować skorzystać ze zmiennej środowiskowej.

Tutaj utworzenie katalogu i przypis dla zmiennych środowiskowych (jeżeli tego nie masz). W systemie 2.0 katalog ENV jest tworzony standardowo w startup-sequence.

MAKEDIR RAM:ENV
ASSIGN ENV: RAM:ENV

Tutaj główny skrypt:

AVAIL CHIP >ENV:CHIPMEM
IF $CHIPMEM GE 256000 VAL
    Gra_Full.exe
ELSE
    Gra_Small.exe
ENDIF

Powinno zadziałać. Oczywiście musisz mieć niezbędne polecenia w C, włączając w to ELSE i ENDIF. Jestem dość przyzwyczajony do systemu 3.0.

Ostatnia aktualizacja: 01.08.2024 11:28:56 przez Hexmage960
1
[#9] Re: ADF Startup-Sequence

@Hexmage960, post #8

Przekopiowałem do katalogu C wszystko, co niezbędne, czyli IF, ELSE, ENDIF, MAKEDIR i ASSIGN.

Oto efekt:


Pod kickiem 37.299 działa dobrze. Pliki kopiowałem z dyskietki z Workbenchem 1.3.3.

Ostatnia aktualizacja: 01.08.2024 11:36:38 przez tukinem
[#10] Re: ADF Startup-Sequence

@tukinem, post #9

w 1.3 "ram:" od tak nie jest dostepny... od tego byl ram-handler jak dobrze pamietam, to sie robi za duzo plikow

ja jako programista zrobilbym sobie sam plik, ktory sprawdzi ilosc pamieci i jak jest odpowiednia to na wyjsciu:
moveq #0,d0
jak nie to
moveq #1,d0

po tym komenda IF zadziala, bo 0 w d0 oznacza brak bledu

ale chyba to lepiej tez olac i od razu zrobic "tonygoloader.exe", ktory odpali odpowiedni exec w zaleznosci od ramu :)
[#11] Re: ADF Startup-Sequence

@tukinem, post #9

Jestem pewien, że urządzenie RAM: jest w AmigaDOS 1.3. Zapewne wymaga dodatkowych plików w tym systemie. Zapewne chodzi o plik RAM-HANDLER w katalogu L. Dawno nie używałem OS 1.3.

Ostatnia aktualizacja: 01.08.2024 11:41:48 przez Hexmage960
[#12] Re: ADF Startup-Sequence

@juen, post #10

Ilość plików nie straszy, bo w ADFie mam jeszcze ponad 700KB wolnego miejsca.

Faktycznie łatwiej by mi było napisać osobny loader w .exe, tylko jaki język wybrać? BB odpada. C, E czy ASM? Szczerze najchętniej wybrałbym ten ostatni.

@Hexmage960: Skopiowałem RAM:Handler i teraz jedynie wyświetla mi prawdopodobnie dostępną pamięć chip i tyle. Może Ci podesłać plik ADF abyś sam ocenił?

Ostatnia aktualizacja: 01.08.2024 11:51:55 przez tukinem
[#13] Re: ADF Startup-Sequence

@tukinem, post #12

@Hexmage960: Skopiowałem RAM:Handler i teraz jedynie wyświetla mi prawdopodobnie dostępną pamięć chip i tyle. Może Ci podesłać plik ADF abyś sam ocenił?

Wklej proszę skrypt. Przekierowanie powinno działać w OS 1.3. Używałem go długo w Amidze CDTV.
[#14] Re: ADF Startup-Sequence

@Hexmage960, post #13

MAKEDIR RAM:ENV
ASSIGN ENV: RAM:ENV

AVAIL CHIP >ENV:CHIPMEM

IF $CHIPMEM GE 256000 VAL
	TonyGO
ENDIF


No i też czy to będzie działać z kickstartem 1.2?

Ostatnia aktualizacja: 01.08.2024 12:03:28 przez tukinem
1
[#15] Re: ADF Startup-Sequence

@tukinem, post #14

Dzięki. A czy mógłbyś jeszcze wkleić co Ci wyświetla jako wynik? Ilość dostępnej pamięci?
[#16] Re: ADF Startup-Sequence

@Hexmage960, post #15

Dokładnie tak.
[#17] Re: ADF Startup-Sequence

@tukinem, post #16

Uzyj tego programu do skryptu.
https://aminet.net/package/util/batch/Check4Mem
[#18] Re: ADF Startup-Sequence

@tukinem, post #16

OK. Wskazywałoby to na problem z przekierowaniem.

Poczytałem trochę i na razie wysnułem takie wnioski:

1. Być może (nie wiem dlaczego) przekierowanie musi przyjmować taką postać:

AVAIL > ENV:CHIPMEM CHIP

Może warto sprawdzić.

2. Spróbuj poleceniem ECHO zrobić diagnostykę, np. ECHO $CHIPMEM.

3. Z tego co czytałem, CLI i Amiga Shell się od siebie różnią. Podobno zmienne środowiskowe nie działają w CLI. Spróbuj przetestować skrypt w konsoli Shell.

Ostatnia aktualizacja: 01.08.2024 12:33:44 przez Hexmage960
[#19] Re: ADF Startup-Sequence

@Hexmage960, post #18

Zmieniłem na VAIL > ENV:CHIPMEM CHIP

dorzuciłem ECHO do C:

dopisałem ECHO $CHIPMEM i teraz po uruchomieniu nic nie wypisuje.

@Norbert: Nie bardzo wiem jak użyć tego programiku. Wrzuciłem go do C: na ADFie, wpisałem do s-s kod typu:
IF C/Check4mem 256 -c
   TONYGO
ENDIF

ale nie działa. Pewnie trzeba przysiąść do tego na spokojnie...
[#20] Re: ADF Startup-Sequence

@tukinem, post #19

Zmieniłem na VAIL > ENV:CHIPMEM CHIP

dorzuciłem ECHO do C:

dopisałem ECHO $CHIPMEM i teraz po uruchomieniu nic nie wypisuje.

Być może dobrze, że nic nie wypisuje, bo nastąpiło przekierowanie. Gdzie wpisałeś ECHO $CHIPMEM? Wpisz proszę ECHO pomiędzy klauzule IF i ENDIF:

Spróbuj też proszę odpalić AmigaShell i tam przetestować skrypt.

ECHO "Avail"
AVAIL > ENV:CHIPMEM CHIP
ECHO "Mem " NOLINE
ECHO $CHIPMEM

IF $CHIPMEM GE 256000 VAL
    ECHO "256k+ mem"
ELSE
    ECHO "Less than 256k"
ENDIF

Co do programu podanego przez Norberta, to najpewniej używa się go w następujący sposób:

C/Check4mem 256 -c

IF WARN
   TONYGO
ENDIF


Ostatnia aktualizacja: 01.08.2024 12:41:43 przez Hexmage960
[#21] Re: ADF Startup-Sequence

@Hexmage960, post #20

O ten kod działa prawidłowo i wyświetla zarówno jeden warunek, jak i drugi

Dopisałem sobie uruchamianie gry i teraz wyświetla wolnej pamięci chip o jakieś 13 KB mniej, więc chyba pliki w katalogu C i L zjadły część chip ramu.

Ostatnia aktualizacja: 01.08.2024 12:49:43 przez tukinem
[#22] Re: ADF Startup-Sequence

@tukinem, post #21

Ta zmienna środowiskowa w RAM:ENV mogła zjeść troszkę pamięci. Ale możesz ją usunąć, po użyciu.

DELETE ENV:CHIPMEM
[#23] Re: ADF Startup-Sequence

@tukinem, post #12

Jak juz sie uparles na te 256KB na A1000, to pamietaj o tym, ze takie rzeczy jak tworzenie RAM, czy kopiowanie/tworzenie w RAM plikow zzeraja pamiec.
Wiec moze sie okazac, ze jak przekombinujesz ze sposobem detekcji to Ci po prostu wolnej pamieci zabraknie z tych dostepnych 256KB.
No i powinienes jeszcze sprawdzic czy uzyte przez Ciebie procedury z kicku 1.3 zadzialaja na kicku 1.1, bo tak wcale nie musi byc.
[#24] Re: ADF Startup-Sequence

@Don_Adan, post #23

Zarówno biblioteka odtwarzająca moduły zjada kilkanaście KB, jak i ten rozbudowany startup sequence. Może jeszcze warto spróbować Check4mem.

Dopóki nie skończę gry, to nie będę wiedzieć na czym stoję. Zostało mo w sumie menu główne, jakiś ekrqn game over i to tyle. Tu akurat urośnie plik uruchamialny więc dlatego sam kod gry chcę dopiąć do końca.

A może zaoszczędzę jeśli zamiast w startup sequence używać ELSE, który jest programem, wpisać 2x IF. Sam program ELSE choć zająłby 1KB to zawsze coś by się zwolniło.

Ostatnia aktualizacja: 01.08.2024 21:34:54 przez tukinem
[#25] Re: ADF Startup-Sequence

@tukinem, post #24

Tak sobie troche przemyslalem.
Jak chcesz zapisywac jakies pliki to nie do zadnego ENV: tylko od razu na dyskietke np TonyGO: Tony.cfg
I druga sprawa to nie pamietam czy tego sie nie da zalatwic w prostszy sposob.
Typu taki S-S:

FailAt 103
GRA_FULL.exe
GRA_SMALL.exe
[#26] Re: ADF Startup-Sequence

@Don_Adan, post #25

Użyłem Check4Mem. Program nie zjada ani jednego bajta podczas uruchamiania gry.
1
[#27] Re: ADF Startup-Sequence

@tukinem, post #26

Zwykle zawsze mozna na pare sposobow cos zrobic.
Mozesz tym programikiem, tylko dochodza If, ElseIf o ile dobrze pamietam.

A ta metoda jest duzo prostsza, bo po prostu jak sie nie odpali pelna wersja gry tzn, ze nie ma dosc wolnej pamieci.
System wtedy wyrzuca bodaj failed returncode 103
A zeby tego nie pokazywal i nie przerywal wykonywania s-s to uzywa sie FailAt.
Tylko juz nie pamietam czy FailAt nie ma jakis ograniczen jesli chodzi o podawana wartosc.

Edycja.
No i jak ktos ma np. 240KB chip i 1000KB fastu wolnego w danym momencie to odpali mu sie full wersja gry, a nie small wersja gry.


Ostatnia aktualizacja: 02.08.2024 08:17:49 przez Don_Adan
[#28] Re: ADF Startup-Sequence

@Don_Adan, post #27

to jeszcze pasuje by pelna wersja wyszla z bledem 104, zeby sie ta druga nie odpalila zaraz po niej
[#29] Re: ADF Startup-Sequence

@juen, post #28

Nigdy nie sprawdzalem tego, czy to dziala, bo nigdy nie potrzebowalem uzywac.
Ale raczej malo kto w wersji gry uruchamianej z dyskietki wychodzi z gry do DOS-u, no bo po co?
Robi sie raczej reset z klawiatury, i wrzuca nastepna gre do stacji.
No i nie wiem czy w ogole gra TonyGO, ma wyjscie do DOS-u.
Ale jezeli ma to mozna dodac na wyjsciu D0=104.
Zeby bylo super prawilnie.

Edycja.
Albo tak zostawic, wtedy uzytkownik Amigi bedzie mogl pograc w obie wersje gry.


Ostatnia aktualizacja: 02.08.2024 11:13:28 przez Don_Adan
[#30] Re: ADF Startup-Sequence

@Don_Adan, post #29

Gra ma wyjście do DOSu.

Ogólnie bardzo odchudziłem sporo funkcji. Nawet zmieniłem Vertical Blank na ręcznie napisaną procedurę asemblerem. Niewiele tu dało, bo akurat 16 bajtów, ale staram się zwęzić ile się da.

Mam już ekran z Monochrome Productions, menu główne, animację przy game over która działa na zasadzie dalszego scrolla, z tym że są wtedy wyłączone kolizje, a zamiast Tonego wyświetla się bob napisu "GAME OVER". Gra zostawia 25KB wolnego miejsca, więc spokojnie będę mógł dołożyć bibliotekę muzyczną oraz narobić funkcji warunkowych od muzyki i dźwięków, które będą ładować i odtwarzać muzykę/dźwięki na reszcie Amig.

Ale warto wiedzieć na przyszłość takie rozwiązania.
1
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem