[#31] Re: Kurs asemblera na amige

@tukinem, post #30

Z Amosa i inne do upolowałem za jednym razem w pakiecie na giełdzie ppa.pl, potem odkopałem jeszcze z piwnicy książki co o nich zapomniałem - tak, że mam fajny zestaw, tylko czas wygospodarować.
[#32] Re: Kurs asemblera na amige

@tukinem, post #30

Z Amosa prosto w asembler? Widzę, że kolega nie tyle skacze na głęboką wodę, co wali na główkę bezpośrednio na beton :) Szacun!
2
[#33] Re: Kurs asemblera na amige

@mastaszek, post #32

Mam nadzieję, że nie skończy się na chęciach. Jak przeskoczyłem z C64 (programowałem w ASM) na Amigę to zniechęciłem się trochę z ASM - na A500 z 1MB CHIP, brakowało twardziela itp. jak coś spaprałem to zwiecha Amigi powodowała zaczynanie roboty od początku - na nowo ładowanie monitora ASM, wiem, że byli tacy co im taki sprzęt starczał i zrobili niezłe dema na takim konfigu.
[#34] Re: Kurs asemblera na amige

@Adinfo, post #33

Teraz jest łatwiej, masz devtoolsy w vscode zintegrowany debugger z winuae. Tutaj jest gotowy startowy projekt.
1
[#35] Re: Kurs asemblera na amige

@Mir3k, post #34

Dokładnie, liczy się tylko to czy się komuś chce czy nie bo źródeł masa do nauki jest.
1
[#36] Re: Kurs asemblera na amige

@tukinem, post #30

Mam "Asembler dla początkujących" i "Asm-One" Pana Adama Doligalskiego oraz "Rodzina M680x0" Pana Wojciecha Czyża.

Osobiście nie polecam Asemblera dla początkujących, chyba że chcesz go użyć w połączeniu z AMOSem.

Jeżeli jakieś funkcje są wolne posiłkuj się językiem niższego poziomu, ale nie zastępuj całkowicie języka wyższego poziomu.

@MDW

Notatki, "copy & paste", czy też wyszukiwanie po spisie treści lub indeksie jest też dostępne dla książek!

"Dostęp" jest też - w pewnych sytuacjach szybszy.
1
[#37] Re: Kurs asemblera na amige

@Hexmage960, post #36

Skoro i tak się musi asemblera nauczyć żeby go łączyć z amosem, to po co mu amos?

Hex, jak się robi 'copy-paste' z papierową książką? :)
2
[#38] Re: Kurs asemblera na amige

@mastaszek, post #37

Skoro i tak się musi asemblera nauczyć żeby go łączyć z amosem, to po co mu amos?

AMOS jest potrzebny do logiki i większej części szkieletu gry.

Tak samo jak w przypadku np. języka C lub Amiga E.

Nie trzeba rezygnować z C, jeżeli chcemy zrobić wstawkę asemblerową.

W tym przypadku kolega chce - z tego co wiem - szybszych i więcej Bobów.

Nie musi w tym celu robić w Asemblerze logiki gry.

Można napisać bezpośrednie odwołanie do Blittera i umieścić je w naszej podprocedurze.

Jeżeli opanuje już asembler, będzie mógł swobodnie optymalizować kluczowe miejsca w programie, nie naruszając głównej jego struktury.

Ja używam języka C, a asemblera tylko w kodzie przerwania.

Odpowiednio pisząc logikę język wyższego poziomu nie wpłynie na wydajność. Ja przykładowo czekam na wydarzenia za pomocą exec-owego Wait() i program działa dobrze już na A500 z 14MHz (na tym testowane, ale pewnie też na stockowej 7MHz).

Hex, jak się robi 'copy-paste' z papierową książką? :)

No cóż, w tym przypadku trzeba przepisywać ręcznie (tak jak notatki), ale jest zaleta - człowiek zazwyczaj lepiej zapamiętuje skopiowane fragmenty książki.

Ostatnia aktualizacja: 27.07.2021 16:24:29 przez Hexmage960
1
[#39] Re: Kurs asemblera na amige

@mastaszek, post #37

Musi, nie-musi... Czytam PDF-a tej książki z Asemblera i jakoś faktycznie nie przemawia do mnie. Nie ma przykładów, bardzo skomplikowany faktycznie jest. Czytałem o Copperze, bo w książce o Amosie mało jest na temat Coppera, a chciałem go wykorzystać jakoś. Gdyby były jakieś przykłady to łatwiej byłoby zrozumieć jego działanie i wykorzystać go. Amos jest fajny i łatwo się w nim pisze, chociaż gdy chce się coś zrobić naprawdę dobrze, to płata figle gdy brak większej wiedzy na jego temat. Chciałem się wziąć za coś poważniejszego, jednak na samym początku wychodzą "schody pod górę" :/
[#40] Re: Kurs asemblera na amige

@tukinem, post #39

W Asemblerze jest zupełnie inna filozofia. Trzeba znać rejestry sprzętowe.

Ja sam opatentowałem inny, własny sposób. Jedyne rejestry jakich używam to jeśli chodzi o Coppera - przerwanie na linii obrazu 0 (czyli na początku tzw. wygaszania pionowego).

Po prostu dzięki mechanizmowi przerwania - Copper informuje procesor CPU (a zarazem mój program), że zaczęło się wygaszanie pionowe (moment, kiedy obraz nie jest wyświetlany) i robi to natychmiast.

W tym momencie mogę przełączyć bufor na nowo-narysowany a następnie niezwłocznie rysuję następną klatkę.

Używam jeszcze rejestrów Blittera (za pomocą OwnBlitter(), by współegzystować z innymi programami), ale nic więcej. Reszta rejestrów ustawiana jest przez system operacyjny Amigi, dzięki czemu zadziała dobrze i bezproblemowo zarówno na Amidze 500, czy 4000 lub CD32 o ile jest zainstalowana odpowiednia wersja.

Do dźwięku i wszystkich innych rzeczy używam odpowiednich systemowych bibliotek (library) oraz urządzeń (device).

Ostatnia aktualizacja: 27.07.2021 17:22:12 przez Hexmage960
1
[#41] Re: Kurs asemblera na amige

@tukinem, post #39

Copper ma na krzyz parę instrukcji. załapiesz :)

ja po w miarę zmasterowaniu Amosa rzuciłem się na asm właśnie z tą książką i dzięki niej poznałem coppera

Ostatnia aktualizacja: 27.07.2021 21:08:28 przez juen
[#42] Re: Kurs asemblera na amige

@Hexmage960, post #40

Dotychczas używałem wiadomości, że mogę rysować (SafeMessage w DBufInfo) w drugi bufor. I to działa dla mnie bez zarzutu oferując wraz z czekaniem za pomocą Coppera na linię 0 pełną 50-klatkową animację.

Sprawdziłem, czy na linii 0 można rysować bez czekania, skoro obraz nie jest wyświetlany, jednak wtedy na górze ekranu widać jak rysujemy.

Można tez czekać na linię 255, wtedy jest OK (trafiamy w wygaszanie pionowe ze zmianą bufora).

Zaletą braku czekania jest to, że mogę teraz rysować w bufor z dowolnego miejsca w programie bez czekania i przesyłania danych do innego miejsca w programie. Czyli jest to spore usprawnienie i uproszczenie.

Ogólnie Copper i asembler jest fajny, ale warto rozważyć ile potrzeba czasu by przygotować grę w różnych językach.

AMOS jest świetny, inne języki mają trudniejszy start jeżeli nie mamy jeszcze wypracowanego szkieletu.

Skoro kolega przygotował Sokobana (jeszcze go nie testowałem) z 50+ planszami to widzę, że kolega nie ma żadnych problemów z systematyczną nauką i pracą. I pewnie jak zagłębi się w temat, to bez problemu zrozumie zagadnienia związane z Asemblerem.

Mi osobiście praca szła różnie, ale odnotowuję u siebie postęp.

Asembler jest przede wszystkim fajny, bo asemblacja odbywa się w mgnieniu oka, jak mamy zadeklarowane własne stałe. Najbliżej do tej szybkości jest językowi Amiga E oraz oczywiście AMOSowi i zapewne też Blitz Basicowi (nigdy nie używałem).

Ale żeby otworzyć ekran trzeba przygotować minimalną Copperlistę, co zadaniem trywialnym nie jest. Trzeba znać rejestry DIWSTRT, DIWSTOP, DDFSTRT, DDFSTOP itp.

Mogą tutaj pojawić się niewielkie problemy ze zgodnością OCS/ECS/AGA.

Asembler można traktować jak BASIC, ze zmiennymi o nazwach D0, D1, D2, ... i zamiast PUNKTY += 30 piszemy ADDI.W #30,PUNKTY(A0), jednak sam serdecznie polecam również języki wyższego poziomu oraz nawet system operacyjny, do realizacji celów.

Taki framework (szkielet) w języku C można stworzyć - wbrew praktyce, którą pokazuję przy Magazynie - w kilka dni. I zawierać będzie zarówno otwieranie ekranu, obsługę okienek, joysticka, ładowanie danych z IFF, animację itp.

Myślę, że kolega Teh_KaiN, który taki framework o nazwie ACE (Amiga C Engine) przygotował potwierdzi, że jak to się przygotuje, dalej jest dużo łatwiej.

To takie moje małe przemyślenia i rady. Życzę koledze powodzenia i kolejnych sukcesów, czy to w AMOSie, czy Asemblerze!

Ostatnia aktualizacja: 28.07.2021 00:25:20 przez Hexmage960
1
[#43] Re: Kurs asemblera na amige

@Hexmage960, post #42

Szczerze powiem, że wczoraj tworzyłem w Amosie planszę z platformówki z niebem większym od ekranu i na zwykłej głupocie się wyłożyłem. Chciałem animowane niebo, żeby się przesuwało. Zamiast komendy SCREEN OFFSET użyłem SCREEN DISPLAY i to mi zabrało ze 2 godziny. Myślę, że skoro na takich podstawach się mylę, to jeszcze za wcześnie chyba. Użycie ASM do sterowania COPPEREM, to byłoby coś fajnego, lecz naprawdę ktoś by mi to musiał wytłumaczyć na spokojnie. link chciałbym stworzyć coś takiego, jak tu na filmiku, lecz jednak w książce z Amosa o Copperze nie ma zbyt wiele, a połączyć Amosa z Asm... hmm... nie wiem jak to użyć. Ktoś by musiał usiąść i mi to wytłumaczyć na spokojnie krok po kroku.
[#44] Re: Kurs asemblera na amige

@tukinem, post #43

ja pracuje jako programista od kilku dobrych lat i takie błędy zdarzają mi się regularnie, nie zbyt często na szczęście, ale jednak zdarzają. Zawsze wtedy myśle że jednak jestem upośledzony czy coś, w duchu jednak wiem że to tak po prostu jest. Nie myli się ten kto nic nie robi.

Ostatnia aktualizacja: 28.07.2021 15:30:40 przez jarokuczi
2
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