#programista15k #asembler #programowanie #gamedev Cześć, wytłumaczy Ktoś ten kawałek kodu w asemblerze krok po kroku, troche jak krowie na granicy, czesc rzeczy rozumiem, ale nie wiem np. o co chodzi kiedy jest napisane (a0) w nawiasie itp
gdzie:
d0 = adres bitmapy w pamieci
d1 = szerokosc bitmapy np. 320
d2 = wysokosc bitmapy np. 256
gdzie:
d0 = adres bitmapy w pamieci
d1 = szerokosc bitmapy np. 320
d2 = wysokosc bitmapy np. 256






![Lista 20 silników do tworzenia gier w JavaScript [ENG]](https://wykop.pl/cdn/c3397993/link_15826186129ulPKKECDwXL2PSSDsrMdn,w220h142.jpg)























d(a0) to mniej więcej \*(d+a0) (przy czym obliczenia są tu w zawsze bajtach), gdzie d to jakaś stała.
Masz poczytaj: https://archive.org/details/Pocket_Guide_Assembly_Language_for_the_68000_Series/mode/2up
Kod wygląda, że wczytuje 16-bitową szerokość spod adresu w d0 i 32-bitowy adres bitmapy z d+d0, po czym włącza pixel o współrzędnych X=d1 Y=d2. Bitmapa jest jednobitowa (pewnie jeden bitplane na
MOVE.l d0,a0 – kopiuje do a0 wskaźnik na szerokość (nie można używać wskaźników bezpośrednio w d0-d7, bo 68000 tak już ma; .l oznacza operację 32-bitową)
MULU (a0),d2 – mnoży 16-bitową szerokość odczytaną przez wskaźnik razy Y, dając numer bajtu na początku wiersza
MOVE.l d(a0),a0 – odczytuje z d+a0 w a0 wskaźnik na początek bitmapy
ADD.l d2,a0