1

Właśnie sobie sciągnąłem i trochę po testowałem najnowszą wersję IK+ i jestem ZACHWYCONY !!!!
Nie miałem czasu w ostatnich latach na zabawę gdyż nie brakowało mi sporych problemów i ostatnio nawet nie zauważyłem, że w IK+ można już grać !!! sorry Paweł :(

Ale teraz kiedy już wszystko działa, zassałem, zagrałem ... to wprost MIODZIO !:)
Dokonałeś NIEMOŻLIWEGO !! :)
Może pionierem pod tym względem na Atari nie jesteś ... ale myślę że wszyscy są Tobie BARDZO wdzięczni ! :)

Muszę natychmiast powiadomić mego kolegę Jaśka, który jest tu znany (lub nieznany :-P) jako Bzyk. Zapewne też będzie zachwycony i zadziwiony jak fajnie Tobie to wszystko wyszło !:) Oczywiście najfajniejsze jest to że można się już sprawdzić w rozgrywce. Może nie jest to jeszcze to co powinno być, ale już wiadomo jaki będzie klimacik, frajda itp. a to bardzo dużo :) Ponad to nikt z małoatarowców nie miał okazji grać w nią (na XL/XE), teraz mamy okazję po raz pierwszy, oraz mamy okazję poznać i przyzwyczaić się do nowych ciosów itp.


Co do nowych animacji:
Mamy gniazdo czarnych pająków oraz żółtego na drzewie ? WIELKIE BRAWA !!
Tylko nie wiem dlaczego ten żółty jest jakiś taki skromny :-P
O ! jest też i czarny pajączek na drzewie ? tyle że zamieszkuje inną gałąź :)
Jeśli chodzi o mnie to mógłby się jeszcze pojawiać pająk na gałęzi po tej samej stronie co czarny tyle że wyżej, czyli właściwie na tej samej wysokości co te ze środka ekranu.

Jeszcze ptaszki latają - same lub parami :)

Nie chcę być jakiś zbyt pamiętliwy ale o ile pamiętam to powinny jeszcze: spadać liście, w wodzie skakać rybki a nawet pojawiać się zaginione uboty :-)

Spadające liście mogą być zrobione za pomocą tego samego duszka co żółty pająk, ale czy możliwe jest jeszcze dorysowywanie spadłych już liści na dole drzewa ?

Kończąc ten wątek dodam że jedyne zastrzeżenia jakie mam to takie że o ile wiem to pająki nie trenują wspinaczki wysokościowej lecz rozpinają sieci i łapią jedzenie...
:-D


A teraz pytanie do wszystkich: co zrobić z niewidocznym w emulatorze (i innych Atari) efektem hiresowej nici pajęczej ??


I jeszcze z innej beczki: może zadam głupie pytanie ale ugrałem 20600 punktów i nie mogłem już kontynuować gry ...
Gdyby to była gra pecetowa to powiedziałbym że komp się zawiesił... ale przecież się nie zawiesił...
Atari się nie wiesza ! :-P

Pozdrawiam wszystkich a w szczególności naszego Pawła, który pomimo przeciwności losu stara się wciąż coś udoskonalić w swoim projekcie :)

800XL  XC12  LDW 2000  Portfolio  1040 ST, STE  Falcon 030 (Deskpro)  Jaguar
... oraz inne grzyby i Amigi :-P

2

"(...) Błąd ten polega na gubieniu niektórych zgłoszeń przerwań NMI gdy pojawiaja sie jednocześnie zgłoszenia IRQ." - ktokolwiek słyszał, ktokolwiek wie?

https://www.youtube.com/watch?v=jofNR_WkoCE

3

Eee... Chyba na odwrót..?

Hitler, Stalin, totalniak, SSman, NKWDzista, kaczor dyktator, za długo byłem w ChRL, wypowiadam się afektywnie.

4

Zgłoszenie IRQ przez POKEYa trwa dopóki się go nie wyczyści w IRQEN, więc nie widzę, w jaki sposób mogłoby być gubione.

https://www.youtube.com/watch?v=jofNR_WkoCE

5

Fox: Część z "samochodzikiem" w The Top #3 :)

Tdc: Koniecznie zmień dealera! :D

I Ty zostaniesz big endianem...

6 Ostatnio edytowany przez Sc0rpi0 (2006-04-14 15:38:08)

Fox napisał/a:

Zgłoszenie IRQ przez POKEYa trwa dopóki się go nie wyczyści w IRQEN, więc nie widzę, w jaki sposób mogłoby być gubione.

No ja slyszalem jak to by sie niby mialo odbywac, ale tez slyszalem tylko o odwrotnej sytuacji
czyli podczas poczatku obslugi przerwania IRQ wcina sie NMI i podobno wektor jest gubiony
(tzn. wykonuje sie przerwanie to co przyjal ale przez wektor NMI nie jest zapamietywane ze bylo tez IRQ). Podobnie mialo niby byc z NMI jak przyjdzie IRQ w trakcie piewszych o ile pamietam dobrze 4 cykli czy cus obslugi NMI. Natomiast nie wiem jak to mialo by wygladac bo chyba
zaczyna sie od ustawienia flagi I ? To nie wiem jak by wtedy mialo byc wywlolane IRQ skoro
jest blokada na maskowalne ? ...

(EDIT) Ano glupoty gadam, przeciez na stos sa wystawiane flagi BEZ ustawionego I,
wiec jednak jest jakis odstep czasowy zanim wstawi procek dane na stos
i ustawi I=1 wiec jezeli w tym czasie dojdzie zadanie IRQ to w zasadzie...
moglo by byc NMI zgubione.

---==<<Sc0rpi0>>==---

7

Od kiedy to flaga I ma wpływ na obsługę NMI?

KMK
? HEX$(6670358)

8

Sc0rpi0: HINT: jak będziesz pisał po polsku, to więcej ludzi cię zrozumie. ;]

Hitler, Stalin, totalniak, SSman, NKWDzista, kaczor dyktator, za długo byłem w ChRL, wypowiadam się afektywnie.

9

Spotkałem się z czymś takim.
Pisaliśmy 'takie coś' co miało przerwania DLI i obsługę myszki na IRQ.
I jak DLI wywoływało się w tym samym cyklu co IRQ, DLI się 'gubiło'.
Efektem było zamieszanie na ekranie, w zależności co było na DLI robione.

Nie pytajcie, jak to obeszliśmy, nie pamiętam :)

--
Dhor/M.E.C.

10

epi: HINT2: zeby zrozumiec trzeba czytac ze zrozumieniem :P
a żeby jeszcze bardziej zamotać chodziło o:
przerywanie procedury obsługi przerwania NMI
w poczatkowej fazie przez żądanie przerwania IRQ :) :P :)

Tak więc nie nęć przynęty przynętą gdy
przynęta przynętę przynentą nęci...  :P

---==<<Sc0rpi0>>==---

11 Ostatnio edytowany przez tebe (2006-04-14 18:00:03)

tak sobie myśle jesli przerwanie IRQ bedzie zbyt dlugie czy tez zostanie wywolane akurat w poblizu wywolania przerwania DLI moze zaistniec taka sytuacja ze program przerwania IRQ zostanie wykony w obszarze linii ekranu w ktorych jest ustawione wywolanie przerwania DLI

tak wiec wywolanie przerwania DLI akurat w tych liniach zostaje pominiete i caly program DLI zmienia swoja kolejnosci wywołan, przez co zaczyna sie "kaszanić"

aby bylo OK musialoby wystapic przerwanie przerwania :) widocznie Atari nie umozliwia przerwanie przerwania IRQ przez przerwanie NMI, najpierw aktualnie wykonywany program przerwania musi sie zakonczyc

w sumie nie musimy miec IRQ aby zepsuc DLI, wystarczy wpisac w programie przerwania DLI np. "JMP *" :)  i reszta przerwan DLI zostaje "zgubiona" ale na pewno nie jest to blad Atari tylko tego ze mamy za dlugi program przerwania czy tez nieszczesliwie zsynchronizawalismy sie z linia ekranu

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

12

calość - rewelka; lecz jedno (duże) zastrzeżenie. Nie wiem, jak to sie dzieje, lecz pomimo, że IK+ wstaje na Sparta DOS X (banked), to cala grafa "siedzaca" w ext ramie objawia się w postaci kaszaneczki. Zreszta tak samo jak w TEKBLAST. Dokladnie tak samo :). Zaznaczam, ze dokonalem poprawnego wyboru bankow dla SDX tak, by nie pogryzlo sie to z grą. No chyba, że IK+ po uruchomieniu i wykryciu czegos wiecej niż Atari 130XE siedzi w innych niż "oficjalny" standart (130) bankach.

... no chyba, ze problem polega na czyms innym :rolleyes:

Kontakt: pin@usdk.pl

13 Ostatnio edytowany przez Fox (2006-04-14 23:46:52)

Sc0rpi0 napisał/a:

epi: HINT2: zeby zrozumiec trzeba czytac ze zrozumieniem :P

Sc0rpi0: HINT3: zrozum, że jak będziesz pisał po polsku, to więcej ludzi cię zrozumie.

Coś nie bardzo wierzę w te rewelacje, więc nadmieniam tylko, że:
- obsługa przerwań przez 6502 nie wykonuje się w dowolnym momencie, tylko po skończonej instrukcji lub po skończonym odebraniu przerwania
- ustawiony znacznik I nie powoduje zgubienia przerwania, a tylko odwleczenie go do czasu skasowania I lub wyłączenia źródła przerwania (POKEY)
- NMI jest niemaskowalne

tebe napisał/a:

widocznie Atari nie umozliwia przerwanie przerwania IRQ przez przerwanie NMI, najpierw aktualnie wykonywany program przerwania musi sie zakonczyc

Tebe, nie wierzę, że to napisałeś.

https://www.youtube.com/watch?v=jofNR_WkoCE

14

Fox napisał/a:

Coś nie bardzo wierzę w te rewelacje, więc nadmieniam tylko, że:
- obsługa przerwań przez 6502 nie wykonuje się w dowolnym momencie, tylko po skończonej instrukcji lub po skończonym odebraniu przerwania.

Toż doskonale o tym wiem - tak jest stwierdzone oficjalnie ze procesor kończy
bieżącą instrukcję. Tylko w takim razie wytlumacz na przykład czemu BRK się
nie wykonuje do końca jak przyjdzie NMI w tym czasie tylko skacze pod wektor NMI
i jednocześnie ustawia flagą B ? Skoro jest taki bug to może warto sprawdzić i inne ?
To nie moje rewelacje po prostu kiedyś czytałem o tym i też nie wiem czy to prawda.
Z tekstu który wtedy na sieci znalazłem wynikało ze właśnie może się zdarzyć
na początku obsługi przerwania NMI ze IRQ je "wywlaszczy" choc niby nie powinno.

Fox napisał/a:

- ustawiony znacznik I nie powoduje zgubienia przerwania, a tylko odwleczenie go do czasu skasowania I lub wyłączenia źródła przerwania (POKEY)

Nigdy nic podobnego nie twierdzilem :) mowilem o mozliwosci zgubienia NMI
przez IRQ, ktore przyszlo zaraz po starcie obslugi tego pierwszego. A NMI
że się tłumaczy Non Maskable Interrupt to też wiadomo.

Fox napisał/a:
tebe napisał/a:

widocznie Atari nie umozliwia przerwanie przerwania IRQ przez przerwanie NMI, najpierw aktualnie wykonywany program przerwania musi sie zakonczyc

Tebe, nie wierzę, że to napisałeś.

Może po prostu błąd logiczny przy sprawdzaniu - zrobił pewnie jakieś JMP * :) i procek
kazde przerwanie tak wykonywal to sie wydawalo, że następnych nie wywoluje. Albo żartowal.

W ogole dziwnie to odbieram - sam sie pytałeś "(...) Błąd ten polega na gubieniu niektórych zgłoszeń przerwań NMI gdy pojawiaja sie jednocześnie zgłoszenia IRQ." - ktokolwiek słyszał, ktokolwiek wie?", a gdy mowie co SLYSZALEM czy też CZYTALEM na sieci to sie rzucacie
jakbym to ja zaczal ten temat w ogóle wałkować. Podałem TEORIĘ, że MOŻE w czasie
obslugiwania NMI w trakcie wstawiania na stos flag i adresu powrotu procek nie ustawil
jeszcze I=1 i jezeli w tym krótkim okresie czasu przylezie żądanie IRQ to właśnie coś
takiego sie może stać. Może się wam wydawać idiotyczna, bo oficjalnie jest tak
że niby coś takiego nie ma prawa bytu, ale bugi się zdarzały i zdarzać mogą. Nastepnym
razem zamiast pytac czy ktos slyszal to google skoro chcesz poglosek a jednoczesnie
nie chcesz...  Np:

(znalesc dot. 6502)
czy tez tutaj lub tu

Jakoś nie mogę znaleźć tego artykułu który wtedy czytałem, a szkoda, bo tam było
trochę więcej napisane ogólnie na temat przerwań i związanych z tym bugów w 6502.

---==<<Sc0rpi0>>==---

15 Ostatnio edytowany przez tebe (2006-04-15 13:24:40)

Tebe nigdy nie używał przerwań IRQ tylko NMI stad jest taki ciemny, widać to na przykładzie kodu generowanego przez G2F dla zmian kolorów w liniach

kto wie ile trwa linia obrazu wg licznika POKEY'a ? tak abym zamiast przerwań DLI mógł zmieniać kolory w liniach przerwaniami IRQ

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

16

tebe: wątpię, czy Ci się to opłaci, ze względu na konieczność odświeżania POKEYa na każdym przerwaniu, co kosztuje dużo czasu w stosunku do czasu trwania jednej linii. Mnie się udała wersja minimalna (wystarczy jedno DEC ^2E), ale działa tylko w szczególnych warunkach. W sumie 14 cykli na start i powrót z przerwania, 6 cykli na DEC, 5 na przechowanie i odtworzenie akumulatora, to już 25 cykli, więc w pustej linii poza obrazem zostaje ci 80, oczywiście pod warunkiem, że przerwanie jest uruchamiane przez wektor sprzętowy ($FFFE)!

Jeśli chodzi o inicjalizację, to poniższy fragment powinien działać, jeśli oczywiście niczego nie pominąłem przy kopiowaniu, bo było dość porozrzucane:

        sei
        lda     #0
        sta     ^21
        sta     ^29
        sta     ^2e
        mva     #%01000000      ^28
        mva     #period ^20
        mwa     #IRQ     $fffe
        mva     #1      ^2e
        cli

Zegar POKEYa jest tu przestawiany na częstotliwość ZTCW tę samą, co CPU, więc jeżeli właściwy okres licznika to wartość "period"+1, powinno być 113, żeby szło co linię. Nie testowałem, więc mówię - nie bić, jeśli się mylę.

No i oczywiście brakuje tutaj stworzenia pewnych specyficznych warunków, o których była mowa powyżej, ale tu muszę się przyznać, że nie wiem dokładnie w jaki sposób należy tego dokonać. :P Skutecznie natomiast robi to SIO, próbując dostać się do urządzenia, które nie odpowiada. ;)

Proponuję jeszcze przenieść ten wątek do fabryki, programowania, gier... W każdym razie robi się tu zbyt poważnie, jak na bałagan. ;)

Hitler, Stalin, totalniak, SSman, NKWDzista, kaczor dyktator, za długo byłem w ChRL, wypowiadam się afektywnie.

17

[ot]
Pin a Ty w ogole pamietasz jak emulowales prince of persia w holu na party? i dbales o tego duzego kwiatka;D
[/ot]

18 Ostatnio edytowany przez tebe (2006-04-15 13:53:50)

dzieki Epi, przetestuje

a tutaj znalazlem prace Baloisa na temat IRQ Vs NMI ( TEST 4 ) http://www.republika.pl/balois/atari/index.htm

cytat:

Test 4 ma na celu określenie, w którym cyklu maszynowym w linii rozpoczyna się przerwanie dli. Źródła testu 4 dostępne są tu.

Przerwanie dli należy do grupy przerwań niemaskowalnych (ang. Non-Maskable Interrupt). Oznacza to, że żądanie tego przerwania nie może zostać zignorowane przez procesor. Przerwanie niemaskowalne zostaje zainicjowane, jeśli na nóżce NMI procesora pojawi się stan 0. Wejście NMI jest wrażliwe na opadające zbocze, a nie na poziom sygnału równy 0. Innymi słowy, skok sygnału z 1 na 0 wymusi przerwanie, ale trwające nadal 0 nie zainicjuje następnego przerwania. W odpowiedzi na żądanie przerwania NMI procesor wykonuje następujący ciąg działań:

Kończy wykonanie bieżącego rozkazu.
Rozpoczyna procedurę przerwania:

- Odkłada na stos adres następnego rozkazu, tzw. adres programu głównego.
- Odkłada na stos zawartość rejestru stanu P.
- Do rejestru PC ładuje z komórek $FFFA i $FFFB (młodszy i starszy bajt) adres programu przerwania, tzw. wektor przerwania NMI.
- Ustawia bit I w rejestrze stanu P na 1 co powoduje, że nie będą przyjmowane przerwania IRQ.
Przechodzi do wykonania pierwszego rozkazu programu przerwania.

W tym miejscu należy wyjaśnić co oznacza sformułowanie "przerwanie rozpoczyna się w x-tym cyklu maszynowym w linii". Otóż oznacza ono, że procedura przerwania rozpocznie się po instrukcji, której jeden z taktów przypada na x-ty cykl w linii. Zdanie "kończy wykonanie bieżącego rozkazu" odnosi się właśnie do tej instrukcji. Zakończenie instrukcji, której jeden z taktów przypada na x-ty cykl w linii może trwać od 1 do 7 cykli. Jeśli rozpoczęcie przerwania przypada na ostatni takt instrukcji, to jej zakończenie potrwa 1 cykl. Jeśli rozpoczęcie przerwania przypada na pierwszy cykl 7 taktowej instrukcji, to jej zakończenie potrwa 7 cykli. Nie bierzemy tu pod uwagę nie publikowanych rozkazów 6502, których wykonanie może zabrać więcej niż 7 taktów. Sama procedura przerwania trwa 7 cykli. Zatem może upłynąć od 8 do 14 cykli zanim procesor rozpocznie program przerwania. Jeśli przerwanie dli rozpoczyna się w 8 cyklu w linii, to program przerwania rozpocznie się w przedziale od 16 do 22 cyklu w linii.


Program przerwania musi zostać zakończony instrukcją RTI (ang. ReTurn from Interrupt). Po napotkaniu tego rozkazu procesor wykonuje następujący ciąg działań:

Przywraca ze stosu poprzednią zawartość rejestru stanu P.
Przywraca ze stosu do rejestru PC adres programu głównego.
Jeśli nie ma żądania następnego przerwania, to kontynuuje wykonanie programu głównego.
W procesorze jest jeszcze nóżka IRQ (ang. Interrupt ReQuest). Sygnał dochodzący tutaj jest traktowany podobnie jak w przypadku NMI, ale:

- Przerwanie IRQ należy do grupy przerwań maskowalnych. Ustawiony bit I rejestru stanu P nie pozwala na przyjmowanie przerwań IRQ.
- Jeśli zgłoszą się oba przerwania, to procesor obsługuje NMI a IRQ czeka.
- Adres programu przerwania IRQ, tzw. wektor IRQ, jest ładowany do rejestru PC z komórek $FFFE i $FFFF (młodszy i starszy bajt).

Wejście IRQ jest wrażliwe na poziom sygnału równy 0. Trwające nadal 0 może zainicjować następne przerwanie IRQ.

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

19

tebe napisał/a:

kończy wykonanie bieżącego rozkazu

No tak, nie wziąłem pod uwagę oczywistego faktu. Do moich wcześniejszych rozważań należy zatem dodać "w najlepszym wypadku".

Hitler, Stalin, totalniak, SSman, NKWDzista, kaczor dyktator, za długo byłem w ChRL, wypowiadam się afektywnie.

20

tebe napisał/a:

- Ustawia bit I w rejestrze stanu P na 1 co powoduje, że nie będą przyjmowane przerwania IRQ.

To jest jasne jak słońce (6502 w odpowiedzi na każde przerwanie ustawia flagę I i jest to fakt powszechnie znany), ale napisałeś poprzednio coś odwrotnego: że początek obsługi IRQ powoduje, iż nie będzie przyjmowane NMI, przez co foxowi oczy zrobiły się jak spodki :P

KMK
? HEX$(6670358)

21 Ostatnio edytowany przez tebe (2006-04-16 11:39:54)

napisałem tak, ale nie usprawiedliwiam sie, teraz znalazłem wypowiedz Baloisa i uznałem to za dobre wyjaśnienie całej afery dotyczącej gubienia przerwań, wychodzi na to że nie ma żadnej afery i wszystko jest OK

p.s.
Fox nadal może utrzymywać wytrzeszcz oczu ;)

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

22

Chłopaki !! :)
Ludzie !!!
Co Wy robicie ??!!
Chcecie chyba abym popadł w jakieś kompleksy !
Czytając Was dochodzę do wniosku że już nic nie pamiętam ;-(
... chyba będę musiał sobie na dole wywalić te "800XL" :-P

pzdr. :-)

800XL  XC12  LDW 2000  Portfolio  1040 ST, STE  Falcon 030 (Deskpro)  Jaguar
... oraz inne grzyby i Amigi :-P

23

lepiej demo napisz jakie...

I Ty zostaniesz big endianem...

24

tebe napisał/a:

kto wie ile trwa linia obrazu wg licznika POKEY'a ? tak abym zamiast przerwań DLI mógł zmieniać kolory w liniach przerwaniami IRQ

114 cykli. Czyli jak używasz 8-bit 1.77 to AUDF na 110. A prościej włączyć 15 kHz, czyli dzielnik 114 i wtedy AUDF=0 to co skanlinię. Bardzo dawno temu to sprawdzałem i synchronizacja z obrazem była idealna. Ale tak jak napisał Epi, raczej na tym nie zarobisz.

tebe napisał/a:

napisałem tak, ale nie usprawiedliwiam sie, teraz znalazłem wypowiedz Baloisa i uznałem to za dobre wyjaśnienie całej afery dotyczącej gubienia przerwań, wychodzi na to że nie ma żadnej afery i wszystko jest OK

Jeśli pogrubione przez Ciebie fragmenty wyjaśniają gubienie przerwań, to rzeczywiście mam coś z oczami.
Odwlekanie IRQ przez inne przerwanie (czy to NMI, czy IRQ), które ustawiło I to nic specjalnego. Chodzi o to, w jakiej sytuacji przerwanie może się zgubić?

MW: a bana chce?

https://www.youtube.com/watch?v=jofNR_WkoCE

25

Piekne toto jest :)

Pytani brzmi, czy mozna sobie na tej wersji grac "w nieskonczonosc", bo mi wlasnie po dojsciu do zielonego pasa i ponad 21tys. pkt... zawiesilo sie. To znaczy efekty tla chodza, ale nie da sie STARTem ponownie wystartowac gry.
Gralem se w pracy na emulatorze....

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.