Mam prośbę o radę.
Zacząłem optymalizować procedury rysujące obiekty w TOMKU. Poczytałem trochę jakie funkcje ma blitter w ST (http://pl.wikipedia.org/wiki/Blitter) i co z tego powinno być zaimplementowane i stanąłem przed ścianą.
Wyszło mi, że obiekt można rysować:
1) w inversie albo bez
2) z odbiciem w pionie lub bez
3) z odbiciem w poziomie lub bez
4) bez maski, z osobną maską, z maską stworzoną z któregoś koloru (min. to kolor 00)
5) w jednym z trybów: nadpisywania, OR, AND, XOR
Większość tych opcji się krzyżuje, co daje w ekstremum jakieś 32 kombinacje.
Do tego muszę zrobić osobne procedury dla rysowania obiektow z obcięciem na brzegach ekranu i bez obcinania, oraz ultraszybką procedurę do rysowania obiektów o szerokości 1 słowa (np pociski).
To daje razem ponad 64 wersje jednej tylko procedury rysującej.
I nie wiem jak z tego wybrnąć.
Wadą PIC'a jest to, że pamięć programu jest we FLASH'u i nie może być przepisana i wykonywana z RAM'u.
Czyli program nie może być automodyfikowalny (jak to jest w Atari).
A większość operacji jakie opisałem, musi być wykonywana na każdym słowie danych obiektu, czyli w samym środku pętli.
Czyli: albo pójdę na łatwiznę i zrobię jedną procedurę a w środku pętli będę miał choinkę rozgałęzień i warunków, co kilkukrotnie zmniejsz wydajność, albo czeka mnie powtarzanie całej procedury dziesiątki razy, różniących się np tylko jedną instrukcją w środku pętli (np XOR zamiast AND). To zwiększy zajętość pamięci programu i co gorsza, uczyni koszmarem jakiekolwiek przyszłe poprawki.
Nie chodzi mi o to, żebyście głosowali na jedno z tych dwóch rozwiązań ;) Raczej o radę, czy nie przegapiłem czegoś? Może wyważam otwarte drzwi, a jest jakies inne prostsze rozwiązanie tego dylematu...