@Retronav i koledzy
Hej, zapomnijcie o tamtej wersji.
Oto nowa wersja. Procedury są napisane w taki sposób, by użytkownik - programista w łatwy sposób zaimportował je do swojego kodu jako funkcje w asemblerze (można je również łatwo przekształcić w razie potrzeby w makra).
Moja procedura C2P pracuje jak jest to w
Amidze CD32 - przyjmuje dane w rejestrach procesora i zwraca w rejestrach. Z tego też względu moja procedura dzieli konwersję na dwa etapy dla każdej czwórki bitplanów, ze względu na wykorzystanie rejestrów danych.
Nie powoduje to żadnych problemów, do użytkownika należy wybranie kolejności konwersji - procedura jest rozbita na 3 etapy:
- Konwersja wstępna (c2p_pass1) - podział na dwie czwórki bitplanów. Po tym etapie w każdym rejestrze jest po 8 pikseli.
- Konwersja główna (c2p_pass2) - konwersja do 16 pikseli po cztery bitplany.
- Konwersja zamykająca (c2p_pass3) - połączenie w 32 pikselowe bloki.
Każda procedura pobiera
dane chunky w rejestrach
d2-d3 plus niezbędne
maski w rejestrach od
d4 do
d6 w zależności od funkcji i zwraca wynik w rejestrach
d2-d3. Rejestry d0 i d1 to rejestry robocze i mogą ulec modyfikacji przez funkcje.
Konwersję wstępną należy wykonywać dla każdych 8 pikseli, po czym należy wybrać czy konwertujemy dalej wyższe czy niższe bitplany (resztę możemy zapamiętać w dowolny sposób). Następnie wykonujemy konwersję główną raz lub więcej dla każdych 16 pikseli (jeżeli wykonamy ją dwa razy, możemy połączyć 16-pikselowe wyniki w jeden 32-pikselowy blok za pomocą konwersji zamykającej).
Dalsze ew. manipulacje, zapis do pamięci graficznej należą do programu głównego. Jest to już bardzo proste i program główny ma duże pole do popisu.
Oto kod (może zawierać ew. usterki, jeśli tak - będę korygował):
Kod źródłowy procedur chunky-to-planar
Szybkość procedury powinna być na dobrym poziomie, zresztą dużo zależy od użytkownika tych funkcji - ile potrzebuje bitplanów i pikseli, jak przechowuje dane tymczasowe itp.
Mam nadzieję, że jest to dość przystępne opracowanie. Zapraszam do testowania i chętnie posłucham uwag. Liczę na to, że moje procedury znajdą zastosowanie w .. nowych superprodukcjach na Amigę naszej braci scenowej.