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ć.
Nowa obudowa dla 800XL - zostało 36 dni Niewiele ponad miesiąc do końca kampanii.
Zmarł twórca języka BASIC Zmarł Thomas E. Kurtz twórca języka BASIC
Zmiana serwera atari.area Serwis przeszedł właśnie ważną aktualizację infrastruktury
4th Atari ASCII Compo - wyniki Dostępne są już wyniki tegorocznego ATASCII Compo.
thing neo 1.60 Olivier Landemarre wydał nową wersję desktopu Thing.
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.025 sekund, wykonano 63 zapytań