851

(37 odpowiedzi, napisanych Fabryka - 8bit)

UFFF,czyli jednak robię to dobrze dzięki ludziska, jutro sprawdzę na Atarynce jak to wygląda i poszukam ew. błędu

852

(37 odpowiedzi, napisanych Fabryka - 8bit)

czyli teoretycznie jeżeli wysłany jest sygnał przerwania to CLI  POWINNO "spowodować skok" do procedury przerwania, tak? nic już nie rozumiem :/

853

(37 odpowiedzi, napisanych Fabryka - 8bit)

czyli jednym słowem procesor nie wygeneruje przerwania w krótkiej chwili pomiędzi cli/ sei jeżeli w tym momencie nie dostanie sygnału przerwania z pokeya, który to sygnał się nie utrzymuje "na linii" a chwilowo jest wysyłany
kurde, z tego co widze to raczej ta procka nie zadziała

854

(37 odpowiedzi, napisanych Fabryka - 8bit)

to może jeszcze mała prośba, z racji tego, że jestem na wczasach nie mam możliwości sprawdzenia, czy prawdziwy sprzęt zachowuje się tak jak Altirra, może ktoś potwierdzić lub zaprzeczyć?

855

(37 odpowiedzi, napisanych Fabryka - 8bit)

mono, czy w takim razie jeśli wygenerowany zostaje sygnał przerwania po odliczeniu $d200 to procesor "czeka" aż zostanie umożliwione przerwanie irq czy w przypadku gdy nie jest ono możliwe po prostu ignoruje go? czy sygnał w procesorze jest sutawiony dopóki przerwanie się nie odbędzie?

856

(37 odpowiedzi, napisanych Fabryka - 8bit)

dzięki za odpowiedzi, oczywiście jak zwykle zapomniałem dodać, że w proc. przerwania najpierw kasuje a potem ustawiam na #1 $d20e, samo przerwanie wywołuje zaś nie cli sei a sei cli , zaraz to poprawie
@Seban:
cli/sei używam w pętli rysującej 1 z 8 podstawowych linii, w przerwaniach dodaje dodatkowe przesunięcia tak, że z 8 linii powstaje mi 58 na każdą ćwiartkę okręgu.

Panowie, jakieś jeszcze inne sugestie, co tu może źle działać?

857

(37 odpowiedzi, napisanych Fabryka - 8bit)

witam,
od jakiegoś czasu piszę prockę do szybkich wektorów dla rozdzielczości 128/120 i mam mały problem z Altirrą (albo z kodem),
na Atari800win wszystko śmiga, Altirra zachowuje się tak jakby w ogóle nie dochodziło do przerwań

robię tak:
1.ustawiam 6 bit w $d208 dla przerwania 1 pokeya.
2.Ustawiam AUDCTL i AUDF.
3.przed skokiem do procedury rysującej ustawiam adres procki przerwania w $fffe-f
4.wpisuję wartość dowolną w $d209

w proc. IRQ wpisuje ponownie wartość dowolną do $d209, przerwania w procedurze rysującej wywołuje przez

 
...
cli
sei ;(poprawiono)
...

plik .obx w załączniku

858

(24 odpowiedzi, napisanych Programowanie - 8 bit)

nie wiem, czy z tego korzystasz, ale na tej stronce jest opisane jak obliczyć macierz obrotu bez mnożenia

859

(408 odpowiedzi, napisanych Zloty)

"czekamy na filmy, czekamy na filmy, czekamy na filmy dla nas"

860

(2 odpowiedzi, napisanych Bałagan)

a'propos podcastów to tutaj podcasty komputerowe z radia Szczecin.
edit: n.p. historia polskiej informatyki

jakbyś się zdecydował na detal (tak w razie czego) to chętny byłbym na ZX+ z okablowaniem

862

(25 odpowiedzi, napisanych Programowanie - 8 bit)

juppi!!!
udało się znaleźć rozwiązanie. Tak jak przypuszczałem na początku okazało się, że aby obrócić kamerę wokół własnych osi trzeba przemnożyć ruchome osie przez wartości cos i sin , rozwiązanie znalazłem na tej ciekawej stronce z tutorkami opengl

A tutaj kod w C++:

void CCamera::RotateX (GLfloat Angle)
{
    RotatedX += Angle;
    
    //Rotate viewdir around the right vector:
    ViewDir = Normalize3dVector(ViewDir*cos(Angle*PIdiv180)
                                + UpVector*sin(Angle*PIdiv180));

    //now compute the new UpVector (by cross product)
    UpVector = CrossProduct(&ViewDir, &RightVector)*-1;

    
}

void CCamera::RotateY (GLfloat Angle)
{
    RotatedY += Angle;
    
    //Rotate viewdir around the up vector:
    ViewDir = Normalize3dVector(ViewDir*cos(Angle*PIdiv180)
                                - RightVector*sin(Angle*PIdiv180));

    //now compute the new RightVector (by cross product)
    RightVector = CrossProduct(&ViewDir, &UpVector);
}

void CCamera::RotateZ (GLfloat Angle)
{
    RotatedZ += Angle;
    
    //Rotate viewdir around the right vector:
    RightVector = Normalize3dVector(RightVector*cos(Angle*PIdiv180)
                                + UpVector*sin(Angle*PIdiv180));

    //now compute the new UpVector (by cross product)
    UpVector = CrossProduct(&ViewDir, &RightVector)*-1;

Dzięki za zainteresowanie tematem,
pozdrawiam

863

(40 odpowiedzi, napisanych Sprawy atari.area)

szto Grey skazał. Nie ma co wystawiać na pośmiewisko, wystarczy pouczyć imo.

864

(25 odpowiedzi, napisanych Programowanie - 8 bit)

@Fox:załączam całość źródeł, nie jest tego wiele. Punktów niewidocznych nie stawiam.
@Laoo: dzięki za rady, chyba najrozsądniej będzie tak zrobić.

865

(25 odpowiedzi, napisanych Programowanie - 8 bit)

laoo/ng napisał/a:

Może spróbuj skrótowo opisać algorytm jakiego faktycznie używasz: Opisz jak przeliczasz każdy z wejściowych puntków (x,y,z), aby otrzymać końcową pozycję na ekranie (przez co mnożysz, jakim wzorem, punkt po punkcie) bo rozłożenie punktów jest tak nierównomierne, że mi to wygląda na błąd w zastosowanej formule.

Załączam kod w Javie z komentarzami, który wysłałem do jednego z koderów z którym również koresponduje w tej sprawie (mam nadzieje, że się nie obrazi) :

// początkowe wartości wektorów kamery- up, front, right, wektory
jednostkowe
//(camz,camx,camy to obiekty klasy wektor z polem float x[4]);
                 camz.x[0]=0;camz.x[1]=0;camz.x[2]=1.0f;camz.x[3]=1;
                 camx.x[0]=1.0f;camx.x[1]=0;camx.x[2]=0;camx.x[3]=1;
                 camy.x[0]=0;camy.x[1]=1.0f;camy.x[2]=0;camy.x[3]=1;


 // obroty na poszczegolnych osiach 3 wektorow kamery ,wartosci obrotow
 wziete z wejscia
// oś y obraca wokoł osi Z kamery, jakoś tak mi się poprzestawiało, w
kazdym badz razie
//najpierw obracam osie x i y a na koncu z- wynikiem jest bledne obracanie
wokol osi Z
// gdy obrot jest najpierw wokol osi Z blad dotyczy pozostalych dwóch osi

             obrocx(camz,osx*3.14f/180);
             obrocx(camx,osx*3.14f/180);               
            obrocx(camy,osx*3.14f/180);
 
             obrocz(camz,osz*3.14f/180);
             obrocz(camx,osz*3.14f/180);               
               obrocz(camy,osz*3.14f/180); 

            obrocy(camz,osy*3.14f/180);
            obrocy(camx,osy*3.14f/180);               
              obrocy(camy,osy*3.14f/180);   

// przygotowanie macierzy (wstawienie 1.0 w kilka pól)
                mtxbase(mbase);
//normalizowanie wektorów (na wszelki wypadek)

                wersor(camz);
                wersor(camx);
                wersor(camy);

// ustalanie pozycji kamery

                 campoz.x[0]=pozx;campoz.x[1]=pozy;campoz.x[2]=pozz;campoz.x[3]=1;



//przygotowanie macierzy projekcji-wszystkie punkty świata mnożone są
przez tą macierz
//campoz służy do translacji, pozostałe wektory, jako normalne służą
do ustalenia obrotu
// poszczególne pola macierzy :plik JPG w załączniku


                 makeview(mbase,camx,camy,camz,campoz);

[edit] W załączonej macierzy brakuje translacji (pola 3,7,11)
[edit 2] punkty są rzucone na chybił trafił, to raczej nie wiąże się z samym problemem

866

(25 odpowiedzi, napisanych Programowanie - 8 bit)

kamera jest w 0,0,0 bo najpierw obracam wektory kamery a potem podstawiam je do macierzy kamery (obrotu i translacji) przez którą mnożę wszystkie wierzchołki. Albo coś pokićkałem, albo coś jest nie tak z tymi obrotami i trza użyć czegoś bardziej skomplikowanego, w razie czego dołączam  filmik pokazujący co jest nie tak (WMPlayer),
pozdrawiam z pola bitwy,
gorgh

867

(25 odpowiedzi, napisanych Programowanie - 8 bit)

to pomoże?

868

(25 odpowiedzi, napisanych Programowanie - 8 bit)

odświeżam temat: po dłuższym czasie wróciłem do tematu, kamera działa, obraca się , problem tylko z kolejnością obrotów, jak najpierw obracam wokół osi Z kamery to osie X i Y dziwnie się zachowują (obracają się względem osi X i Y świata) gdy robie odwrotnie to obrót Z zamiast kręcić się wokół punktu w środku widoku kamery obraca się względem osi Z świata.
Czy któryś z szanownych kolegów programistów wie czym może być to spowodowane?
pozdrawiam,
Gorgh

869

(24 odpowiedzi, napisanych Bałagan)

"milcząca gwiazda" dobry film, kiedyś znalazłem go na torrentach bodajże
pamiętacie może taki czechosłowacki serial sf, być może dla młodzieży, puszczany pod koniec 80/na początku lat 90?. Jedyne co pamiętam to to, że jacyś przybysze z kosmosu albo przyszłości mieli laserowe pistolety i wiązką lasera przepoławiali sobie różne rzeczy (w tym chyba przyczepę kampingową)

870

(28 odpowiedzi, napisanych Scena - 8bit)

każdy widzi to co chce :)

871

(28 odpowiedzi, napisanych Scena - 8bit)

http://imageshack.us/m/827/4341/paniq.png

trochę erotyki

872

(30 odpowiedzi, napisanych Bałagan)

wszystkiego najlepszego Mono!

873

(4 odpowiedzi, napisanych Bałagan)

Dzięki, Eagle.znalazłem na yt tutorial jak to zrobić, ale z tego co widzę ciężko będzie znaleźć ślusarza z takimi narzędziami, który zrobi to za rozsądną cenę, chyba pozostaje zamówienie w SE-MA-FOR w cenie 25 zł za przegub.

874

(4 odpowiedzi, napisanych Bałagan)

element jest raczej rzadko używany, oprócz zastosowania w "trzeciej ręce" nie znalazłem innych przykładów, za to stosuje się go w budowaniu szkieletów lalek do animacji poklatkowej i w sklepie online z tym asortymentem to znalazłem. Nazywa się to po prostu "double ball joint" ale w googlach nie znalazłem żadnego producenta tego.
Ze ślusarzem to dobry pomysł, dzięki.

875

(4 odpowiedzi, napisanych Bałagan)

http://www.animationtoolkit.co.uk/product_images/e/456/DSC00154_copy__93917_std.jpg

Czy ktoś się z czymś takim kiedyś zetknął (w kulkach wierci się otwory i łączy się je z prętami)? wiem, że podobne elementy można znaleźć w narzędziu "trzecia ręka" dla elektroników. Generalnie chciałbym nabyć czegoś takiego sztuk kilkanaście , ale na razie jedyną opcją jest sprowadzanie tego z UK za 10 funtów/sztuka.