kategorie: Asembler, Blitz
[#1] Jaki jest sposób na płynne scrollowanie bitplanów z kafli?
Jak w temacie. Język programowania w sumie nie ma znaczenia. Chodzi mi bardziej o sam sposób jak działa smooth scrolling w platformówkach. Może pytanie dla laika, ale nie pytam o tworzenie bitmapy 2000x1000 pix i scrollowanie jej, a o posiadanie naprawdę większej tablicy kafli w pamięci i dorysowywanie ich do bitmapy podczas scrolla.

Pytam o scroll we wszystkich kierunkach. Powiedzmy, że narazie mamy pojedyncze buforowanie, czyli jedna bitmapa w pamięci. Utworzyłem sobie bitmapę jak na rysunku:
. Niebieska część to rozmiar bitmapy, a czerwona część to tyle, co widzimy na ekranie. Idąc ludzikiem w prawo bitmapa przesuwa się w lewo (a ludzik stoi na ekranie w miejscu). Gdy bitmapa przesunie się o 16 pikseli, to wraca na swoją pozycję 'zero', czyli (16,16), kopiowana jest część bitmapy o rozmiarze (320+16)*(256+2*16) z pozycji 16,0 do pozycji 0,0, a w prawym górnym rogu zaczyna się dogrywanie kolejnych kafli, czyli Block nr_kafla#,336,0.

Wszystko działa prawidłowo, ale jest zbyt wolne. Nie ma szans, że taka metoda jest zastosowana w grach typu Zool, Superfrog itp. Z drugiej strony na pewno te gry nie mają w chip ramie załadowanej pełnej bitmapy levelu ze względu na jego rozmiar.

Czy ktoś wie, jak to tam działa? Nie daje mi to spokoju już od dawna.
[#2] Re: Jaki jest sposób na płynne scrollowanie bitplanów z kafli?

@tukinem, post #1

Pora zapoznać się ze ScrollingTrick i stopić sobie mózg. ;)

Scroll po Y jest łatwiejszy ale wymaga coppera i samodzielnego zarządzania wyświetlanym obrazem. Hardware amigowy skonstruowany jest tak, że custom chipy mają komórki bpl0pt..bpl7pt gdzie znajdują się adresy aktualnie wyświetlanego kawałka bitplanów. W tym podejściu jak dobijasz do krawędzi bitmapy, to i tak scrollujesz dalej. W momencie jak na ekranie miałbyś wyświetlić śmieci spoza bitmapy, każesz copperowi przestawić bplXpt na początek bitplanu.



Na niewyświetlanym kawałku bitmapy masz dwa marginesy - jeden rząd kafli który zaraz może być wyświetlony przez scroll i powinien już być gotowy, i następny rząd który dopiero przygotowujesz - najlepiej blitując tam jeden kafel na klatkę, czy coś. W przypadku możliwości scrolla w dwóch kierunkach, trzeba zadbać o to żeby margines gotowych kafli był gotowy w obie strony - "brudny" margines może być wspólny.

Wytłumaczenie scrollowania po X już jest trudniejsze, nazywa się "corkscrew scrolling" i jak nie w archiwum ScrollingTrick to znajdziesz informacje po tym haśle w necie.

Powodzenia! Zacznij powoli, od jednego kierunku, w kolejnej grze dorzuć sobie kolejny. ;)

Ostatnia aktualizacja: 10.07.2023 08:24:41 przez teh_KaiN
1
[#3] Re: Jaki jest sposób na płynne scrollowanie bitplanów z kafli?

@teh_KaiN, post #2

Scroll w poziomie możesz też zrealizować sprzętowo - jest rejestr BPLCON1 który pozwala przesuwać obraz w poziomie o 16 pixeli. W tym czasie musisz przygotować kolejne tło przesunięte o jeden kafelek. Żeby brzegi nie "skakały" trzeba zawęzić pokazywany obraz o ten "roboczy pasek" (rejestry DIW**** i DDF****). Obejrzyj sobie Amiga Hardware Reference Manual

To oczywiście odpowiedź na post #1

Ostatnia aktualizacja: 10.07.2023 08:38:07 przez jarek72
[#4] Re: Jaki jest sposób na płynne scrollowanie bitplanów z kafli?

@jarek72, post #3

Tylko w tym wątku rozmawiamy o dalszych scrollach niż 16px. Pokrótce Corkscrew scroll działa bez "przygotowywania kolejnego tła" tylko scrollujesz dalej poza krawędź bitmapy. Aby móc to zrobić legalnie to musisz zaalokować dodatkową wysokość - jedną linię na każdy ekran w bok, więc nie jest to nieskończony scroll jak w przypadku Y. Oznacza to też rysowanie na inaczej obliczanych współrzędnych i w przypadku trybu interleaved na innych bitplanach niż by się normalnie człowiek spodziewał.

Chyba że coś innego masz na myśli?

Ostatnia aktualizacja: 10.07.2023 09:04:17 przez teh_KaiN
[#5] Re: Jaki jest sposób na płynne scrollowanie bitplanów z kafli?

@teh_KaiN, post #2

Czyli wszystko działa na zasadzie sprzętowej... Ech ogarnięcie coppera to jest tragedia. Już nauczyłem się kopiowania blitterem pełnej bitmapy w kilku bitplanach, a copper to dalej masakra :P

No a co do poziomego scrolla, to w Blitzu mam przykład na EAB, ale to jest przykład scrolla działającego w jedną stronę na bitmapie 352x240 w 4 bitplanach na pojedynczym buforowaniu. Przykłady są trudne do rozeznania się. Łatwiej byłoby wytłumaczyć teoretycznie, a ja bym to sobie nadłubał jakoś w kodzie.

Przykładowo oto moja procedura do kopiowania bitmap:

Laik nie zrozumie, ale łatwiej jest krok po kroku wytłumaczyć, kolejno pod jaki adres pamięci jakie liczby powstawiać i jak je wyliczyć sobie. Nie oczekuję gotowca, tylko w miarę możliwości gdyby ktoś wytłumaczył krok po kroku jaką dużą bitmapę stworzyć, jak przesuwać copperem bitmapę, jak działa corkscrew scroll itp.

Ma ktoś tyle cierpliwości? :)
[#6] Re: Jaki jest sposób na płynne scrollowanie bitplanów z kafli?

@tukinem, post #5

Ta strona wyglada ciekawie, jest raczej wszystko dokladnie opisane. Tylko musisz znalezc co chcesz, na dole jest zmiana kursu.


link

I lepiej jest uzywac innego blitwait, bo ten nie dziala dobrze na niektorych konfigach Amigowych.
No i zawsze mozesz tez na EAB sie spytac. No i chyba lepiej jest blitowac w trybie interleaved, bo jest szybszy niz 5 bitplanow. Ale ja na grafice sie nie znam.
[#7] Re: Jaki jest sposób na płynne scrollowanie bitplanów z kafli?

@teh_KaiN, post #2

Wytłumaczenie scrollowania po X już jest trudniejsze, nazywa się "corkscrew scrolling" i jak nie w archiwum ScrollingTrick to znajdziesz informacje po tym haśle w necie.

W przesuwie X/Y chodzi tak naprawdę o organizację pamięci graficznej.

Wystarczy podwójna bitmapa z marginesem do przesuwu w osiach X/Y.

W osi X traktujemy, że mamy bitmapę z marginesem grubości 16 pikseli. Rysujemy w tę niewidoczną kolumnę.

- Podczas przesuwu w lewo musimy narysować to co wchodzi z lewej.
- Podczas przesuwu w prawo rysujemy w tę kolumnę to co wchodzi z prawej.

Podam jeszcze opis przesuwu w osi Y bez potrzeby wykorzystywania dynamicznej Copper-listy:

W osi Y w obu połówkach bitmapy musi znajdować się to samo. Podczas przesuwu rysujemy to co wchodzi z przodu i to samo rysujemy też z tyłu.

Jeżeli doszliśmy do krańca, przeskakujemy na drugi kraniec.

Ażeby przesuwać w obu osiach równocześnie, rysowanie niewidocznej kolumny przy przesuwie w osi X musi przebiegać po obu połówkach bitmapy. Jeżeli doszliśmy do krańca przy przesuwie w osi X, po prostu przeskakujemy i możemy przesuwać po tej osi dalej.

Zatem taki przesuw uzyskamy za pomocą ScrollVPort().

Laik nie zrozumie, ale łatwiej jest krok po kroku wytłumaczyć, kolejno pod jaki adres pamięci jakie liczby powstawiać i jak je wyliczyć sobie. Nie oczekuję gotowca, tylko w miarę możliwości gdyby ktoś wytłumaczył krok po kroku jaką dużą bitmapę stworzyć, jak przesuwać copperem bitmapę, jak działa corkscrew scroll itp.

Tutaj masz w zasadzie gotowy kod podanego przeze mnie sposobu. Musisz jeszcze zaimplementować funkcje rysujące wchodzące kafle:

DrawInvisibleColumn() powinien rysować niewidoczną kolumnę (o rozmiarze 16x512 pikseli) na podanej pozycji X.

DrawInvisibleRow() powinien rysować niewidoczny wiersz (o rozmiarze 320x16 pikseli) na podanej pozycji Y.

Dla ekranu 320x256 potrzeba bitmapy o rozmiarze (320+16)x(512+16).

void scrollVPort(struct ViewPort *vp, WORD dx, WORD dy)
{
	struct RasInfo *ri = vp->RasInfo;
		
	DrawInvisibleColumn(ri->RxOffset + vp->DWidth);
	DrawInvisibleRow((ri->RyOffset - 16) % 512);
        DrawInvisibleRow((ri->RyOffset + vp->DHeight) % 512);
	
	ri->RxOffset += dx;
	ri->RyOffset += dy;
	
	if (ri->RxOffset < 0)
	{
		ri->RyOffset--;
		ri->RxOffset += vp->DWidth;
	}
	else if (ri->RxOffset >= vp->DWidth)
	{
		ri->RyOffset++;
		ri->RxOffset -= vp->DWidth;
	}
	
	if (ri->RyOffset < 0)
	{
		ri->RyOffset += vp->DHeight;
	}
	else if (ri->RyOffset >= vp->DHeight)
	{
		ri->RyOffset -= vp->DHeight;
	}

	ScrollVPort(vp);
}
1
[#8] Re: Jaki jest sposób na płynne scrollowanie bitplanów z kafli?

@Hexmage960, post #7

Wszystkie te przykłady z podwójnymi rozmiarami bitmap chyba służą tylko do scrolla w jedną stronę, tzn przykładowo w Giana Sisters. Mnie chodzi o scroll w wszystkich kierunkach a'la SuperFrog. Myślę, myślę i nie potrafię tego za bardzo zrozumieć.

Widziałem kiedyś dobry przykład scrolla w jednym kierunku (przykładowo w prawo). Bitmapa 320 * 2x256. Na niewidocznych częściach bitmapy wstawiały się kolejne kafle mapy z tablicy, a gdy scroll dojechał do końca, to bitmapa wracała na pozycję 0,0, gdzie już odrysowane były kolejne kafle. Co klatkę dogrywało się kilka kolejnych kafli. Wszystko fajnie, ale jeśli chciałoby się zaimplementować powrót graczem (do tyłu) to wtedy taki trik jest bezużyteczny.
[#9] Re: Jaki jest sposób na płynne scrollowanie bitplanów z kafli?

@teh_KaiN, post #4

To prosty scroll. Można go ciągnąć w nieskończoność bo jak ci się skończy 16 pikseli scrolla to podmieniasz tło na nowe (wygenerowane w czasie tych 16 ramek) przesunięte o 16 pikseli (2 bajty). Jeśli kafelki mają taki rozmiar to jeszcze łatwiej.
[#10] Re: Jaki jest sposób na płynne scrollowanie bitplanów z kafli?

@tukinem, post #8

Wszystkie te przykłady z podwójnymi rozmiarami bitmap chyba służą tylko do scrolla w jedną stronę, tzn przykładowo w Giana Sisters. Mnie chodzi o scroll w wszystkich kierunkach a'la SuperFrog.

Podany sposób działa w 8 kierunkach, bo stosuje cykliczną bitmapę.

W tym sposobie obieramy punkt S = (X, Y) określający lewy górny róg bitmapy. Początkowo S = (0, 0). Zakres (X, Y) to (0, 0) do (319, 255).

Jeżeli przesuniemy obraz o (DX, DY) to punkt się przesuwa. Jeżeli dojdziemy do X = 320, to wówczas przechodzimy do następnego wiersza w bitmapie, ale relokujemy Y o 1, tzn. mamy (0, 1). Relokacja w poziomie wykorzystuje następne wiersze pamięci graficznej.

Jak dojdziemy do ostatniego wiersza to wówczas relokacja przechodzi na (0, 0). Grafika tam będzie prawidłowa, bo ją duplikujemy gdy rysujemy całą nową kolumnę lub wiersz. Podobnie jak idziemy w górę. Wówczas relokujemy na (0, 255).

Mam nadzieję, że udało mi się to jasno opisać.

Kolega Teh_KaiN podał sposób z Copperem, gdzie bitmapa w pionie nie musi być podwójna.

Ostatnia aktualizacja: 10.07.2023 12:05:10 przez Hexmage960
[#11] Re: Jaki jest sposób na płynne scrollowanie bitplanów z kafli?

@jarek72, post #9

No, tylko generowanie całej drugiej bitmapy w 16 klatkach często nie jest możliwe z tego względu, że oprócz tego w klatce musisz zrobić masę innych rzeczy - animować przeciwników, przeliczyć logikę gry itd. Najlepsze rozwiązania są takie, które wymagają tylko odrysowania jednego rzędu/kolumny w tym czasie, wprowadzając minimalny narzut do gry.

Wszystkie te przykłady z podwójnymi rozmiarami bitmap chyba służą tylko do scrolla w jedną stronę, tzn przykładowo w Giana Sisters. Mnie chodzi o scroll w wszystkich kierunkach a'la SuperFrog. Myślę, myślę i nie potrafię tego za bardzo zrozumieć.


Odpal sobie to archiwum ScrollingTrick - jest tam dokumentacja w HTMLu, nawet są obrazki z tego co pamiętam. Posiedzisz tydzień, dwa, może trzy i zrozumiesz. Mi zajęło to miesiąc, raz to w kodzie ACE'a napisałem i już do tego nie wracam, chyba że jakiś babol trzeba fixnąć albo optymalizację można zrobić. ;)
[#12] Re: Jaki jest sposób na płynne scrollowanie bitplanów z kafli?

@teh_KaiN, post #11

Skoro Tobie zajęło 30 dni, to mnie zajmie 30 lat szeroki uśmiech

Przesuwanie copperem chyba nie ma nic wspólnego z blitzowym DisplayBitmap #CopList,#BitMap,X,Y.
[#13] Re: Jaki jest sposób na płynne scrollowanie bitplanów z kafli?

@tukinem, post #1

wlasnie caly problem w amigowym swiatku, to napisanie szybkiego, plynnego skrola a takie jedynie mozna osiagnac piszac w asemblerze. Wiec tak czy siak bedziesz musial ogarnac tego skrola w asm i nie bedzie latwo.
[#14] Re: Jaki jest sposób na płynne scrollowanie bitplanów z kafli?

@selur, post #13

W C też się da - Aminer tego najlepszym przykładem, i właśnie używa scrolling tricka. ;)

@Tukinem - to było 30 dni ~10 lat temu (ale czas płynie!) - byłem raczkującym leszczem wtedy. ;)
[#15] Re: Jaki jest sposób na płynne scrollowanie bitplanów z kafli?

@teh_KaiN, post #14

no dobra... ale w Aminerze uzyles skrola pionowego, ktory jest o niebo szybszy/latwiejszy niz poziomy.
Jak zrobisz strzelanke/platformowke czy cus ze szybkim skrolem poziomym, to wtedy pogadamy
W kazdym jesyku jest skrol sprzetowy ale na profesjonalne gry sie niestety nie nadaje.
[#16] Re: Jaki jest sposób na płynne scrollowanie bitplanów z kafli?

@selur, post #13

No nie do końca, bo grafiki masz zapisane w chip ramie, często tablicę z mapą masz w slow ramie, a asembler najczęściej usprawnia używając rejestrów procesora.

Tu chodzi o rozplanowanie do scrolla. Rozumiem ten sposób scrolla jak tu na rysunku. Czerwona część bitmapy jest widoczna. Idziemy w prawo, lewa strona zapełnia się kolejnymi kaflami. Dojedziemy do granicy, wracamy wyświetlaniem na początek, a po prawej stronie wstawiamy kolejne kafle i tak w kółko. Co jeśli chcemy się wtedy przesunąć w lewo? Jak tych marginesów użyć?
[#17] Re: Jaki jest sposób na płynne scrollowanie bitplanów z kafli?

@teh_KaiN, post #11

No, tylko generowanie całej drugiej bitmapy w 16 klatkach często nie jest możliwe z tego względu, że oprócz tego w klatce musisz zrobić masę innych rzeczy - animować przeciwników, przeliczyć logikę gry itd. Najlepsze rozwiązania są takie, które wymagają tylko odrysowania jednego rzędu/kolumny w tym czasie, wprowadzając minimalny narzut do gry.

Jeśli podzielisz sobie liczbę wszystkich kafli przez 16 ramek to wyjdzie ci tylko trochę więcej niż jedna kolumna. Poza tym łatwo można to rozłożyć na 32 ramki. Scroll sprzętowy 16 pikseli, dodanie 2 bajtów do pointera bitplane'u, znowu scroll 16 pikseli i dopiero podmiana. Tylko wtedy trzeba mieć screen szerszy o 32 piksele (2 kolumny kafelków). Co nie wyklucza innych, efektywniejszych rozwiązań szeroki uśmiech
[#18] Re: Jaki jest sposób na płynne scrollowanie bitplanów z kafli?

@tukinem, post #16

to co narysowales to skrol 640+N a wiekszosc gier ma pewnie 320+N, ze wzgledu na ograniczenia Chip Ramu.
[#19] Re: Jaki jest sposób na płynne scrollowanie bitplanów z kafli?

@selur, post #18

jedna taka bitmapa zajmie w chip ramie 51kB więc ograniczenia raczej żadne
[#20] Re: Jaki jest sposób na płynne scrollowanie bitplanów z kafli?

@tukinem, post #16

Corkscrew działa mniej-więcej tak - załóżmy że idziesz w prawo.



Ustawiasz scroll X bitmapy dalej niż jej wymiary zakładają - to powoduje że reszta obrazu tak naprawdę wyświetlana jest z niższej części bitmapy. Każde przejście o jedną szerokość bitmapy w prawo powoduje że zjeżdżasz o jedną linię - obrazek jest wyolbrzymiony. Szerokość bitmapy powinna być ciut większa niż ekranu, żeby mieć margines na rysowanie, a można dwa jak chcesz ruch lewo-prawo, ale tak naprawdę wystarcza jeden - wykrywając ruch w lewo po zaczętym ruchu w prawo anulujesz rysowanie po marginesie i zaczynasz od nowa lewymi kaflami.

Przez to że wyświetlany obraz "zjeżdża" w dół to nie jest to nieskończony scroll, bo w końcu wyjdziesz za bitmapę. W przypadku trybu interleaved i nierysowania po wychodzącej z boku części będziesz też miał spektakularną kaszanę, bo dane bitplanów będą wyświetlane nie na tych co trzeba. Ten efekt działa dlatego, że tak naprawdę bitmapa to nie jest jakiś twór 2d w pamięci, tylko jednym ciurem bajty, gdzie dane trzymane są linia za linią. Nikt Ci nie zabroni przesuwać się po nich jak Ci się tylko żywnie podoba, o ile dalej jesteś w jej pamięci.

No, to teraz jak Ci stopiłem mózg to zrób sobie przerwę, przeczytaj to z 5 razy, a potem zajrzyj do ScrollingTricka bo tam jest to znacznie lepiej wytłumaczone. ;)

@Selur: Jakaś tam gra akcji w kolejce do zrobienia jest, może za 5 lat będzie. ;)
1
[#21] Re: Jaki jest sposób na płynne scrollowanie bitplanów z kafli?

@tukinem, post #16

a tu taki ciekawy efekt wizualny, jak wyglada skrol z marginesami na MSXie. Jak latwo zauwazyc marginesy przeskakuja co jakis czas, czyli to jest ten moment kiedy margines jest rysowany co 16/8 pikseli (rysowanie z gory w dol) a pozniej calosc ekranu jest skrolowana do lewej krawedzi.

[#22] Re: Jaki jest sposób na płynne scrollowanie bitplanów z kafli?

@teh_KaiN, post #20

ciekawe czy chociaz wnuki sie doczekaja tych gier...
[#23] Re: Jaki jest sposób na płynne scrollowanie bitplanów z kafli?

@teh_KaiN, post #20

Rozumiem 2 marginesy po bokach. Wszystko byłoby super, gdyby nie to, że właśnie jadąc w prawo poza granicę bitmapy, wyświetlana jest jej lewa strona, lecz z tym przesunięciem:


Analogicznie idąc w lewo obraz bitmapy opada za każdym razem o 1 piksel, a na górze wychodzą śmieci:


Jeśli da się to w jakiś sposób wyeliminować, to już będę mieć sposób na poziomy scroll.

@Selur:
Gra wyjdzie, a Ty będziesz opowiadał wnukom, jak to dziadek w 2023 roku kibicował koderom w walce z hardware Amigi :P

Ostatnia aktualizacja: 10.07.2023 15:19:08 przez tukinem

Ostatnia aktualizacja: 10.07.2023 15:19:26 przez tukinem
1
[#24] Re: Jaki jest sposób na płynne scrollowanie bitplanów z kafli?

@tukinem, post #23

Tak, jesteś na dobrej drodze. Te "śmieci" to właśnie prawdopodobnie pomieszane dane z bitplanów bo jesteś najpewniej w bitmapie interleaved - musisz je zamazać danymi z uwzględnieniem tego przesuwu. Spróbuj w blitzu rysować te kafelki na bieżąco, podając funkcjom rysującym X poza granicami bitmap. Jak Cię nie powstrzyma, to powinno zadziałać.

Ostatnia aktualizacja: 10.07.2023 15:21:57 przez teh_KaiN
[#25] Re: Jaki jest sposób na płynne scrollowanie bitplanów z kafli?

@tukinem, post #19

zajmie w chip ramie 51kB więc ograniczenia raczej żadne


ta 3-4 takie bitmapy i po dodaniu niezbednych rzeczy w Chipie takich jak podwojne buforowanie, 500 tilesow 16*16, animacje sprajtow z maskami, dzwiek muzyka i jestes OUT of MEMORY.
Amigowego Chip Ramu brakuje zawsze i wszedzie.
[#26] Re: Jaki jest sposób na płynne scrollowanie bitplanów z kafli?

@teh_KaiN, post #24

nie mogę wstawiać klocków poza obszarem bitmapy
[#27] Re: Jaki jest sposób na płynne scrollowanie bitplanów z kafli?

@tukinem, post #26

I w tym miejscu musisz porzucić funkcje rysujące blitza i zrobić swoje. ;)

Chyba że... jednak się da.

Ostatnia aktualizacja: 10.07.2023 15:28:47 przez teh_KaiN
[#28] Re: Jaki jest sposób na płynne scrollowanie bitplanów z kafli?

@teh_KaiN, post #27

yoffset odpowiada tutaj za przesunięcie blitowania kafli. Bitmapa jest większa w pionie aby ten yoffset nie wstawiał kafli poza bitmapę. No ale w pewnym sensie też kiedyś można dojechać do końca tego ograniczenia i trzeba by jeszcze większą bitmapę zrobić żeby ten yoffset miał miejsce na wstawianie dalszych kafli :) ale trik jest dobry. Kwestia tego, że wszystkie obiekty na bitmapie też będą wstawiane razem z tym przesunięciem, bo cała bitmapa jest przestawiona. Ale spoko, czyli to już rozumiem. Wystarczy tutaj bitmapa 352x256+xb, gdzie xb to będzie założona z góry wielokrotność tych bitmap w poziomie.

Teraz jak pion ogarnąć copperem? :)
[#29] Re: Jaki jest sposób na płynne scrollowanie bitplanów z kafli?

@tukinem, post #28

Tu już nie ma siły - trzeba się nauczyć tłuc Amigę po rejestrach, żeby wiedzieć jak działa hardware ekranu i jak zmusić coppera do ustawienia rejestrów za Ciebie we wskazanym momencie. Albo znaleźć gotowca w necie, może na eab coś jest ;)
[#30] Re: Jaki jest sposób na płynne scrollowanie bitplanów z kafli?

@teh_KaiN, post #29

A teraz pytanie jeszcze od ScrollX. Skoro blitujemy kolejne kafle z tym yoffsetem, to jak ominąć boba, którym będziemy sterować? Bo on będzie zawsze na środku ekranu i przyjdzie moment kiedy staniemy na granicy bitmap. Wtedy jego lewa połowa będzie niżej a prawa wyżej... chyba że rozwiązaniem będzie sprajt.

Boba i tak nie wstawi się na krawędź bitmapy, bo nie jego druga część wyjdzie poza bitmapę.

Ostatnia aktualizacja: 10.07.2023 16:07:25 przez tukinem
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