Forum AmigaOne Zone

Forum użytkowników Amigi i nie tylko
Teraz jest środa, 18 paź 2017, 23:55

Strefa czasowa: UTC + 1 [ DST ]




Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: wtorek, 29 sie 2017, 05:52 
Offline
Aktywny forumowicz
Aktywny forumowicz

Dołączył(a): piątek, 20 sty 2012, 06:09
Posty: 321
Udało mi się pomyślnie zakodować program, który daje możliwość ładowania zupełnie własnej Copperlisty na ekran Intuition, która aktywuje się gdy nasz ekran staje się widoczny.

Nie obyło się bez problemów, które okazały się być powodowane niewłaściwymi instrukcjami generowanymi przez kompilator C. Użycie Asemblera w tych newralgicznych miejscach rozwiązało te problemy.

Ekran najlepiej otworzyć w trybie Exclusive, tak że nie współdzieli obrazu z pozostałymi ekranami.

Kod podzielony jest na dwie części: Część w C, która:
  • Otwiera ekran
  • Instaluje krótką Copperlistę użytkownika, której celem jest wywołanie przerwania Coppera
  • Alokuje sygnał
  • Instaluje obsługę przerwania Coppera, w której ładowana jest nasza zupełnie własna Copperlista (właściwie wykonuje to główny Task, który jest sygnalizowany przez to przerwanie)

Część w asemblerze, która:
  • Inicjuje copperlistę (ustawia bitplany)
  • Obsługuje przerwanie Coppera
  • Ładuje Copperlistę

Rezultatem działania programu jest ekran Intuition, który - kiedy staje się widoczny (przełączamy Amiga+N/Amiga+M) - natychmiast wyświetla zupełnie własną, customową Copperlistę. Nasza Copperlista przestaje być wyświetlana, gdy użytkownik z powrotem przełączy ekrany.

Nie ma w tym przypadku ograniczeń Copperlisty użytkownika.

W przykładzie program czeka aż 5-krotnie zostanie wyświetlony nasz ekran. Copperlista jest w przykładzie skromna: wyświetla raster z pionowymi paskami.

Do zrobienia zostało tylko wykrywanie sytuacji, kiedy nasz ekran przestaje być aktywny. Da się to zrobić również za pomocą przerwania Coppera. Oczywiście teraz przełączanie ekranów działa bez zarzutu. Ale w praktycznym zastosowaniu warto wykrywać taką sytuację, choćby by "uśpić" nasz program.

Oto linki do kodu źródłowego:
Plik Test.c
Plik Interrupt.s


Udostępnij dla FacebookUdostępnij dla TwitterUdostępnij dla Google+
Góra
 Zobacz profil  
Cytuj  
PostNapisane: środa, 30 sie 2017, 07:46 
Offline
Aktywny forumowicz
Aktywny forumowicz

Dołączył(a): piątek, 20 sty 2012, 06:09
Posty: 321
Wrzuciłem kod i program wykonywalny na Aminet:

http://aminet.net/package/dev/asm/OSCopperlist

Do zbudowania programu używam DICE i PhxAss.

Program w tej chwili prezentuje się skromnie. Ale otwiera całkiem fajne możliwości gier i dem na ekranie Intuition i być może też bardziej zaawansowanych graficznie programów. :ok:


Góra
 Zobacz profil  
Cytuj  
PostNapisane: środa, 30 sie 2017, 16:56 
Offline
Doborowy forumowicz
Doborowy forumowicz

Dołączył(a): wtorek, 17 sty 2012, 18:21
Posty: 771
Ja uważam że nie ma sensu mieszać.
Chipset zostawiłbym do tego do czego się nadaje czyli do gier na Amigę 500 z 1MB, FDD/Gotek w rozdzielczości 320x256 i max 64 kolory, w stylu gier na amigę 500 czyli 2D lub 3D bez tekstur.
Wszystko inne pod system.
Po prostu albo idziemy drogą a500 i robimy gry tak jak w latach 1990-1992, albo dajemy sobie spokój i robimy pod system.
Takie podejście da mniej czasu na zrobienie softu, mniej błędów, a także więcej radości z tworzenia softu.


Góra
 Zobacz profil  
Cytuj  
PostNapisane: środa, 30 sie 2017, 17:46 
Offline
Aktywny forumowicz
Aktywny forumowicz

Dołączył(a): piątek, 20 sty 2012, 06:09
Posty: 321
swinkamor12 napisał(a):
Ja uważam że nie ma sensu mieszać.
Chipset zostawiłbym do tego do czego się nadaje czyli do gier na Amigę 500 z 1MB, FDD/Gotek w rozdzielczości 320x256 i max 64 kolory, w stylu gier na amigę 500 czyli 2D lub 3D bez tekstur.
Wszystko inne pod system.
Po prostu albo idziemy drogą a500 i robimy gry tak jak w latach 1990-1992, albo dajemy sobie spokój i robimy pod system.
Takie podejście da mniej czasu na zrobienie softu, mniej błędów, a także więcej radości z tworzenia softu.

Mimo wszystko uważam, że mój program jest bardzo ciekawy i otwiera szerokie możliwości.

Daje możliwość tworzenia dowolnie swojej Copperlisty na ekranach Intuition umożliwiając również sterowanie Blitterem za pomocą Coppera (niemożliwe w Copperlistach systemowych i użytkownika) oraz wywoływanie CPU tam gdzie potrzeba.

Wyobraź sobie dema Amigowe na ekranach Intuition, które można przełączać. Oczywiście to przykład, który ma zadziałać na wyobraźnię.

W praktyce planuję napisać przykładową prostą grę/program które wykorzystuje nowe możliwości.

Najwygodniejsza konfiguracja, na której mój program zadziała to Amiga 1200 i trochę pamięci FAST.

Amiga 1200 też ma Chipset, tylko że AGA. Dzięki zastosowaniu Coppera można tworzyć bardziej zaawansowane i szybsze graficznie programy.

Jeśli zaś chodzi o System Amigi to zgadzam się, że warto na niego pisać. W moim programie pokazuję, jak połączyć atuty Systemu i atuty Chipsetu.

Mój program prezentuje nowatorskie podejście. Nie trzeba wyłączać systemu, by nasza gra/program działał szybko na Amidze. Warunkiem jest posiadanie bardziej rozbudowanej Amigi.

W przypadku Amigi 500 1MB rzeczywiście czasem wyłączenie systemu jest konieczne. Ale ja nie przepadam już za grami, które działają tylko z dyskietek, bez możliwości instalacji na dysku twardym (no i preferuję gry korzystające z systemu).

Z kolei zupełne przejście na system i RTG nie jest możliwe, bo mam Amigę 1200 z AGA i to wymaga odpowiedniego podejścia.

Co do radości to zapewniam Cię, że czerpię radość z programowania takich rzeczy na Amidze. :D

Moje główne motto brzmi: Jedynym statycznym miejscem w pamięci Amigi jest adres $00000004. Znajduje się tam adres biblioteki exec. ;)


Góra
 Zobacz profil  
Cytuj  
PostNapisane: piątek, 1 wrz 2017, 07:09 
Offline
Doborowy forumowicz
Doborowy forumowicz

Dołączył(a): wtorek, 17 sty 2012, 18:21
Posty: 771
Powyżej 640x256 w 256 kolorach i tak wszystko musi działać tylko na cpu.
Naprawdę strata czasu.
Zamiast z sztuczkami z układami lepiej zająć się optymalizacją softu.
A chipset zostawić tylko do gier na a500 w stylu a500.


Góra
 Zobacz profil  
Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 

Strefa czasowa: UTC + 1 [ DST ]


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Powered by phpBB® Forum Software © phpBB Group
Przyjazne użytkownikom polskie wsparcie phpBB3 - phpBB3.PL
phpBB SEO