@tebe - ale nie o to chodzi. Ja wiem jak zrobić te wszystkie operacje w asemblerze PIC'a. Bardziej lub mniej optymalnie. Chodzi mi tylko o to co opisałem: że albo postawię na wydajność a wtedy będę miał 64 prawie identyczne procedury, trudne w serwisowaniu, albo zunifikuję wszystko kosztem wydajności.
A propos tego co napisałeś o odbiciach, to spróbuj takie pomysły zastosować w asm Atari :) Ja w PIC'u też piszę w asemblerze więc sam rozumiesz...
Co do mojego podstawowego problemu to właśnie testuję sposób, który może być złotym środkiem: bufor linii, to którego najpierw przepisuję linię obiektu robiąc w locie odpowiednie operacje (inwersja, odbicie poziome, przesunięcie bitowe), a następnie tę linię nakładam na ekran w odpowiednim trybie (XOR, OR, AND). Specyfika asemblera PIC'a jest taka, że może się to okazać optymalnym i dość uniwersalnym rozwiązaniem. Uniwersalny bufor linii się przyda, gdybym chciał w przyszłości dopisać kolejne operacje, jak np skalowanie poziome obiektu.
Zobaczymy jak to wyjdzie wydajnościowo.
Mam tylko wrażenie, że wynajduję od nowa blitter ;) a przecież ktoś już kiedyś musiał stanąć przed identycznymi problemami.
Wczoraj robiłem testy nowych procedur rysujących (maksymalnie szybkich, bez obcinania obiektów na brzegach, bez odbić, inwersji itp.) dla 4-kolorowego duszka.
W czasie kiedy antic nie rysuje obrazu udało mi się narysować 120 duszków o wymiarach 8 bajtów x 16 linii, w trybie z maską niezależną od kolorów (dokładnie jest to operacja: (maska AND obiekt) OR (INV(maska) AND tło) ). Przy czym połowę czasu zajęło Atari na samo wysyłanie rozkazów rysowania do PIC'a.
Śmiesznie to wyglądało na ekranie :)