Forum AmigaOne Zone
https://forum.amigaone.pl/

Własna Copperlista na ekranie Intuition
https://forum.amigaone.pl/programowanie-f13/wlasna-copperlista-na-ekranie-intuition-t1064.html
Strona 1 z 1

Autor:  Hextreme [ wtorek, 29 sie 2017, 04:52 ]
Tytuł:  Własna Copperlista na ekranie Intuition

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

Autor:  Hextreme [ środa, 30 sie 2017, 06:46 ]
Tytuł:  Re: Własna Copperlista na ekranie Intuition

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:

Autor:  swinkamor12 [ środa, 30 sie 2017, 15:56 ]
Tytuł:  Re: Własna Copperlista na ekranie Intuition

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.

Autor:  Hextreme [ środa, 30 sie 2017, 16:46 ]
Tytuł:  Re: Własna Copperlista na ekranie Intuition

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. ;)

Autor:  swinkamor12 [ piątek, 1 wrz 2017, 06:09 ]
Tytuł:  Re: Własna Copperlista na ekranie Intuition

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.

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/