kategoria: Asembler
[#1] [ASM, c2p] Funkcja chunky to planar Kalmsa, pytania..
Cześć,
Mam takie pytania:

- funkcje c2p autorstwa Kalmsa są uniwersalne i działają z róznymi wielkościami ekranu przekazywanymi przez parametr -
pytanie czy jeżeli wiem, że będę używał np. ekranu 320x256x8 to jest sens wpisania na sztywno
w kod asemblera tych wartości? Czy to cos przyśpieszy?
Np. ta funkcja: https://github.com/Kalmalyzer/kalms-c2p/blob/main/normal/c2p1x1_8_c5_040.s

- a drugie pytanie, co oznaczają dopiski "_c5", "_c3b1" "_c4b1" (cpu i cpu+blitter??)
np. tutaj: c2p1x1_8_c5_040.s, c2p1x1_8_c3b1_030.h, c2p2x1_6_c4b1_gen.h
https://github.com/Kalmalyzer/kalms-c2p/tree/main/normal

Ostatnia aktualizacja: 19.04.2024 20:58:27 przez mateusz_s
[#2] Re: [ASM, c2p] Funkcja chunky to planar Kalmsa, pytania..

@mateusz_s, post #1

mały tip

proponowałbym zapytać autora (tak chyba bedzie najlepiej)

autor podaje maila więc jest zapewne otwarty na pytania i dyskusje: mikael@kalms.org
[#3] Re: [ASM, c2p] Funkcja chunky to planar Kalmsa, pytania..

@mateusz_s, post #1

funkcje c2p autorstwa Kalmsa są uniwersalne i działają z róznymi wielkościami ekranu przekazywanymi przez parametr -
pytanie czy jeżeli wiem, że będę używał np. ekranu 320x256x8 to jest sens wpisania na sztywno
w kod asemblera tych wartości? Czy to cos przyśpieszy?


Magia dzieje się w pętli, sposób definicji obszaru do konwersji ma minimalny wpływ na czas konwersji

co oznaczają dopiski "_c5", "_c3b1" "_c4b1" (cpu i cpu+blitter??)
np. tutaj: c2p1x1_8_c5_040.s, c2p1x1_8_c3b1_030.h, c2p2x1_6_c4b1_gen.h


Kalms swoje procedury c2p opiera na transpozycji chunky (układ poziomy) do planar w układzie pionowym
Symbole c,b to ilość transpozycji wykonywanych przez cpu, bliter.

http://www.lysator.liu.se/~mikaelk/doc/c2ptut/

tutaj tutorial Kalmsa i trochę teorii
2
[#4] Re: [ASM, c2p] Funkcja chunky to planar Kalmsa, pytania..

@Tedy, post #3

Dzięki za odpowiedzi - pozdro! OK
[#5] Re: [ASM, c2p] Funkcja chunky to planar Kalmsa, pytania..

@mateusz_s, post #4

hej,
jakie wynikowe miejsce powinno się podać?
Wystarczy po prostu bitmapa ekranowa?
c2p1x1_8_c5_040(output_buffer, screen->RastPort.BitMap->Planes[0]);


W źródle Ami Blood -https://github.com/BSzili/jfbuild/blob/1e5b708c5096071e1ffc379aff40d183bf559cd5/src/amilayer.c
widzałem że Bszili korzysta z dwóch ScreenBuffers i do nich ładuje wynik konwersji
(jeden to bitmapa ekranowa i druga dodatkowa bitmapa)
1
[wyróżniony] [#6] Re: [ASM, c2p] Funkcja chunky to planar Kalmsa, pytania..

@mateusz_s, post #5

Jeżeli nie masz w parametrach wskaźników do poszczególnych wynikowych bitplanów to zakładaj że bitmapy muszą być w ciągłym bloku pamięci. W tym konkretnym przypadku obsługiwany jest też tryb interleaved. Wystarczy odpowiednio podać te dwa parametry:

; d4.l (rowlen) [bytes] -- offset between one row and the next in a bpl
; d5.l bplsize [bytes] -- offset between one row in one bpl and the next bpl

Bitmape musisz zaalokować samemu i potem podawać ją przy otwieraniu ekranu ekranu/alokowaniu screenbuffer. BSzilli używa innej procedury, takiej która obsługuje dowolne bitmapy (każdy plan może być w osobnym bloku pamięci).
2
[#7] Re: [ASM, c2p] Funkcja chunky to planar Kalmsa, pytania..

@kiero, post #6

Dziękuję @kiero
teraz przetestowałem rozwiązanie BSzwili z Ami Blood czyli z użyciem dwóch ScreenBuffers,
gdzie jeden to Bitmapa ktora utworzyla się podczas tworzenia screena, a druga to zwykla zaalokowana dodatkowo Bitmapa. I działa to bardzo dobrze, płynnie.

Dzieki za informacje o Interleaved, sprawdzę jutro z ciekawości czy sa jakieś różnice..

Sprawdziłem jeszcze wariant gdy mam po prostu jedną Bitmapą ze screena, i do niej bezpośrednio jest kopiowany wynik konwersji c2p (+WaitTOF), w tym wypadku przy poruszających się obiektach widać lekkie drgania, nie jest tak płynnie. Czyli warto.

ps.
Napisałeś, ze musze bitmapę zaalokowac sam i podawać ją przy tworzeniu screena,
czy to jest jakaś znacząca róznica w porównaniu gdy to OpenScreen tworzy od razu bitmape?
Zostawiałem to raczej systemowi.
1
[#8] Re: [ASM, c2p] Funkcja chunky to planar Kalmsa, pytania..

@mateusz_s, post #7

Jeżeli system alokuje ci bitmapę to nie masz pewności że bitplany będą ułożone jeden za drugim w pamięci. Systemowa struktura Bitmap, jak i chipset, nie mają takiego wymogu, każdy bitplan może być w dowolnym miejscu pamięci. Teraz zerknij na sygnaturę funkcji która inicjuje/wykonuje c2p. Nie ma tam możliwości podania 8 wskaźników na bitplany. Jest jedynie adres początkowy + jeden offset. Wersja której używa BSzili różni się tym, że bierze wskaźnik na strukturę Bitmap. Z tego co pamiętam to po prostu modyfikuje program żeby podstawić odpowiednie offsety (kod samomodyfikujący).
[#9] Re: [ASM, c2p] Funkcja chunky to planar Kalmsa, pytania..

@kiero, post #8

Kalms ma funkcje konwertującą 32bit ARGB do HAM8,
czy spotkaliście się z funkcją która konwertuje ARGB do HAM6?
[#10] Re: [ASM, c2p] Funkcja chunky to planar Kalmsa, pytania..

@mateusz_s, post #9

Udalo mi się coś znaleźć:
https://amycoders.org/sources/fasttruec2p.html

Jestem ciekawy wizualneho efektu końcowego w porównaniu do ham8, w którym to było identycznie jak w TrueColor. Będę próbował to uruchomić..
1
[#11] Re: [ASM, c2p] Funkcja chunky to planar Kalmsa, pytania..

@mateusz_s, post #10

Nie wiem czy sprawdzałeś to intro64k zakodowane właśnie przez członków grupy Contraz i działające w tym trybie 15bit (ham7). Nie jestem pewny ,może są na forum ludzie bardziej obcykani w technikaliach i napiszą czy tą procedurę którą podałeś (albo bardzo podobną) nie wykorzystywali Zig oraz Mavey w swoich demach (Datablade i Suicidal choć w tym drugim przypadku może zostały użyte procedury c2p pod PowerPC od Neo z VA).
Nie wiem Mateusz jak to było z C2P od Scout'a ale przy tych routinkach chyba jeszcze będziesz musiał OS wyłączyć aby używać copyspeed.




Ostatnia aktualizacja: 31.12.2024 08:12:01 przez jimiche

Ostatnia aktualizacja: 31.12.2024 08:12:29 przez jimiche
1
[#12] Re: [ASM, c2p] Funkcja chunky to planar Kalmsa, pytania..

@jimiche, post #11

Dzieki,
przeniosłem wątek o funkcjach Contraza do nowego tematu, żeby nie mieszać tutaj,
mam jakies problemy z działaniem..
https://www.ppa.pl/forum/programowanie/47480/-asm-c2p-funkcje-chunky-to-planar-dla-ham6-ham7-od-contraz#m832866
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