ciezka noc:
http://pouet.net/prod.php?which=6488
program: http://atari.pl/zlo.obx
zmienilem troche parametry...
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
TURGEN 9.3.1 Najnowsza wersja oprogramowania TURGEN wprowadza kilka istotnych ulepszeń.
FujiCup 2024 - głosowanie Wystartowało głosowanie w tegorocznej edycji konkursu FujiCup.
IX. Basque Tournament of Atari 2600 31 stycznia Euskal Retro Association zorganizowało IX. Baskijski Turniej Atari 2600.
Rogul 1.0f Poprawki i nowe funkcje
a8rawconv GUI Graficzny interfejs użytkownika (GUI) dla narzędzia a8rawconv
atari.area forum » Programowanie - 8 bit » Złooo
Zaloguj się lub zarejestruj by napisać odpowiedź
ciezka noc:
http://pouet.net/prod.php?which=6488
program: http://atari.pl/zlo.obx
zmienilem troche parametry...
Tebe zrobil cos podobnego. Wyrobil sie w 256 bajtach http://madteam.atari8.info/scena/sintro.zip
:)
Przepisane z trumny?
gratuluje, działa płynnie i nie potrzebuje hektarów kodu
p.s.
zdaje się że jest to Twirl czy jakoś tak, wyginający się prostopadłościan, dobrze kojarze ?
calkiem niezle to lazi jak na kod przeportowany z trumny (2 ramki zdaje sie)
btw: ogolnie dosc ciekawy efekt... ktos wie na jakiej zasadzie ten efekt dziala?
na pierwszy rzut oka wyglada na dwa paski powyginane sinusem i nalozone na siebie(?)
eru i fox by wiedzieli, tyle że tu nie zaglądają
nawet ładne, jak na z80...
ale...
przecież...
każdy wie, że atari potrafi więcej...
...
http://eru.nutki.com/a8/twirl.xex
...
4 godziny po obiedzie... na początku tak z ciekawości, jak to się robi... a potem to już czysty fan...
EDIT: hehe, wyczułem TeBe - 30 sekund po nim napisałem!
EDIT2: a co to właściwie jest? prostopadłościan obracający się wokół osi Y, w każdej linii o inny kąt, dodatkowo przesuwany poziomo, w każdej linii o inną wartość.
No i pozamiatane.
Fajne, się mi podoba. :)
XXL przeportuj jeszcze troche, Eru podrasuje i będzie demo :)
hehe tez wczoraj nad tym siedzialem i trzeba powiedziec jedno - jest to jeden z najprostrzych efektow jakie mozna sobie wyobrazic - prosty sinus plotter juz jest bardziej skomplikowany ;)
caly kod renderujacy to cos wyglada mniej wiecej tak:
ay = ang;
for (i=0; i<SCREEN_HEIGHT; i++)
{
x = SCREEN_WIDTH/2 + sintab[(ang+i)&0xff];
x1 = x + sintab[ay] + costab[ay]; // sintab[x] = sin(x)*szerokoscobiektu, costab[x] = cos(x)*szerokoscobiektu
x2 = x + sintab[ay] - costab[ay];
x3 = x - sintab[ay] - costab[ay];
x4 = x - sintab[ay] + costab[ay];
// pierwsza sciana
for (j=x1; j<x2; j++)
plot(j,i,1);
// druga sciana
for (j=x2; j<x3; j++)
plot(j,i,2);
// trzecia sciana
for (j=x3; j<x4; j++)
plot(j,i,3);
// czwarta sciana
for (j=x4; j<x1; j++)
plot(j,i,2);
ay += PARAM1;
}
ang += PARAM2;
oczywiscie mozna to jeszcze zoptymalizowac (x,x1,x2,x3,x4 mozna wyliczyc uzywajac tylko jednej tablicy itp)
jedno pytanie do Eru - jak wyglada u Ciebie zmiana wartosci ay? u mnie ay zmienia sie o stala wartosc (PARAM1) to oznacza ,ze obiekt zawsze bedzie tak samo "skrecony", wiec aby skrecenie bylo dynamiczne to PARAM1 musi byc jakas funkcja.. jak taka funkcja wyglada u Ciebie? XXL cos pisal o 5 parametrach - u mnie sa 3 - te pozostale dwa maja byc jako parametry do zmiany wartosci ay?
tak myślisz? że prostsze niż sinus plotter? to zrób to tą metodą w ramkę.
nie mówię, że to jest skomplikowane, ale tak jak napisałeś, to nie zadziała (szybko).
Co do różnych parametrów, w tym co wysłałem jest 6 wartości:
1. skręt pierwszej linii
2. skręt co linię
3. pozycja pozioma pierwszej linii
4. pozycja pozioma co linię
5. pozycja x kratki
6. pozycja y kratki
Każda wartość jest uzyskiwana przez złożenie dwóch sinusów, w tym stylu:
txa
add #add_value_1
tax
tya
add #add_value_2
tay
lda sinus,y
add sinus,x
.. zrób coś z A
Dla parametrów 1,3,5,6 robimy to co ramkę, dla 2 i 4 co linię... Zamiast sinusa można użyć ciekawszych tablic (w twirl tego nie ma), ma się wtedy bardziej różnorodne zachowanie. I dla rzeczy co ramkę można zrobić licznik nie 8-bitowy a 16-bitowy, wtedy się nie powtarza co 256 ramek, a co 64k ramek :)
ogólnie, może wypuszczę wieczorem source kod, bo to ciekawy przykład programowania przy użyciu makr (bez MADSa nigdy bym tego nie napisał tak szybko i tak szybko działającego).
EDIT: a ogólnie, to po co produkujesz kod, który nie robi wcale tego co chcesz? najpierw sprawdziłbyś, nawet na PC :)
dzieki za szybko odpowiedz, jutro sie tym dalej pobawie, bo aktualnie mam troche inna robote na glowie...
a co do prosototy to chodzilo mi oczywiscie o sam algorytm generujacy ten efekt - implementacja go na atari aby lazil w jednej ramce to juz inna sprawa...
Tak jak to wczoraj wziąłem i naklepałem:
http://eru.nutki.com/a8/twirl.asx
zero jakichś optymalizacji, upiększeń, itp.
Na oko to ma to szansę spokojnie wejść w 1KB, rezerwuję sobie prawo do tego :P
moglibyście zapoczątkować na Atariki opisy efektów tego typu i nie tylko, tyle żeby był podany przykład chociaż w jakimś ogólnie zrozumiałym pseudo kodzie (w stylu BASIC-a), aby nawet dziecko mogło zrozumieć
w Wikipedii znaleźć można nawet opis tricków stosowanych przez iluzjonistów takich jak Copperfield, dlaczego nie opisać tricków stosowanych w programowaniu tego typu efektownych efektów
kiedyś na forum dotyczącym C64 znalazłem taką wypowiedź, dotyczącą efektu obracającej się szachownicy (siatki), cyt:
"sfreezuj sobie demko DAWNFALL/OXYRON. ja tam kiedyś zaglądałem i to wyglądało tak, że najpierw wypełniało się obszar 16x16 znaków skośnymi paskami pod odpowiednim kątem (są tam jakieś procedurki, matematyka) a potem xoruje paskami obruconymi o 90 stopni w prawo i wychodzi chessboard"
to też trick, tylko że nie udało mi się go zmaterializować, kojarzycie jak to można wykonać ?
tebe: nie wiem, nie myślałem nad tym :)
xxl: no chyba czas znaleźć dobry emulator zx na maca :)
No więc jeśli chodzi o ten efekt z literkami na ścianach, to nie ma problemu (ale nie będzie przesuwu w poziomie).
Nie napiszę, bo mi się nie chce, ale ja bym do tematu podszedł tak (przykład):
- mamy 32 fazy obrotu prostopadłościanu
- prostopadłościan ma 8 bajtów (64 pixle) w najszerszej fazie obrotu
- 32 fazy * 8 bajtów = 256 bajtów, ładna okrągła liczba
- sprawdzamy, ile jest unikalnych bajtów w foncie dla używanych literek. Ogólnie, mamy 256 możliwości (2^8), które pixle w foncie są w danej linii zapalone, ale tak naprawdę dla literek/cyferek, lewa i prawa kolumna są zawsze puste, więc możliwości jest 64, i nawet z nich pewnie nie wszystkie są użyte.
- renderujemy powiedzmy te 64 możliwości, każdą w 32 fazach obrotu na 8 bajtach, zajmuje to 16kb
- dla każdej linii na ekranie liczymy obrót oraz która z 64 kombinacji jest użyta (na bazie danych skrolla)
- zmianami adresu antica wyświetlamy to co trzeba
- duszkami zasłaniamy wszystko na lewo i prawo od właściwego skrolla, bo tam są inne klatki
ktoś chce napisać?
aha - jak robią to, że wzorki idą do góry, to jeszcze nie wymyśliłem :)
a kojarzycie to http://www.pouet.net/prod.php?which=24384
Zaloguj się lub zarejestruj by napisać odpowiedź
atari.area forum » Programowanie - 8 bit » Złooo
Wygenerowano w 0.023 sekund, wykonano 66 zapytań