TDC little - dyskusja

Tutaj możemy porozmawiać o sprzęcie i modyfikacjach C64.
Wiadomość
Autor
Awatar użytkownika
Nitro
Posty: 1544
Rejestracja: 03 wrz 2008, 20:23
Grupa: Black Sun

#21 Post autor: Nitro »

kisiel: hmm, nie rozumiem, loadery są docyklowane na 1MHz, tak więc chyba jedyną opcją aby działały jest stały tryb 1MHz podczas ich działania, ciągle CIA nie jest używany, np. loader Krill'a depakuje dane w locie, dlatego sugeruje jakiś delay przed powrotem do 2MHz, który byłby przedłużany przez ciągły dostęp do CIA.

k.

#22 Post autor: k. »

Nitro zrobie to po swojemu, bo za długo mi wyjdzie tłumaczenie, ważne czy działa czy nie ;) Układ nie zgadnie że procek zamierza mieć dostęp do CIA2 więc jeśli koder cyklował coś do vica to i tak się wszystko popierdoli.

@Fenek jakby było cyklowanie po irq z vica to vic wykona irq zawsze w tym samym miejscu, w tym samym cyklu i procek ma dokładnie tyle samo czasu do momentu jak nie machnie coś do rejestru VIC (lub opcja SID, CIA2), czyli masz dokładnie x2 cykle w linii.

Aha na zdjęciu widać jak cyklowane są rozkazy, tylko cykl zapis/ odczyt jest spowalniany wiec jak jest LDA $d012 to fizycznie powinno to zająć 4 znaki.

fenek
Posty: 95
Rejestracja: 15 wrz 2008, 20:43
Grupa: Arise

#23 Post autor: fenek »

kisiel pisze: @Fenek jakby było cyklowanie po irq z vica to vic wykona irq zawsze w tym samym miejscu, w tym samym cyklu i procek ma dokładnie tyle samo czasu do momentu jak nie machnie coś do rejestru VIC (lub opcja SID, CIA2), czyli masz dokładnie x2 cykle w linii.
Ja nie umiem tłumaczyć, mogą być 2 przypadki.
1.Po wejściu w IRQ którego źródłem jest $d012 z VICa, zawsze jest ten tzw. cyklowy jitter (w zależności jaka instrukcja wykonywana przez CPU została przerwana) i dlatego do uzyskania mega-super-vic-efektów musi nastąpić w IRQ docyklowanie.

2. Ale czasem jest tak że jitter występuje w określonym/stałym miejscu w rasterliinii i wystarczy go tylko przesunąć o ileś znaków (cykli w prawo)
np. fonty występują na ekranie od 20 do 40 znaku i zmiana generatora fontów ma nastąpić w linii 80 (n), IRQ wywołane jest w 79 (n-1) i jitter jest np.3-7 cykli i występuje od znaku 30+.
Jeżeli teraz zmienisz $d018, numer generatora fontów (nie numer ekranu!) to może powstać krecha od 33 do 40 znaku w lini (n-1).
Po wejściu w przerwanie nie wykonuje się żadnych odczytów $d012 tylko po chamsku wrzuca nopy na przecyklowanie jittera (sam jitter nadal występuje) ale jeżeli dasz 10 cykli to ze znaku 30+ przechodzi na prawy sideborder i jeżeli teraz nastąpi zmiana $d018 to krecha będzie od 0 do 19 znaku w linii (n) ale że nie ma tam fontów to jest niewidoczna dla oka.

2 MHz mają wpływ na to, że zmiana rejestru $d018/$dd00 wykonywana jest w innym cyklu niż w 1 MHz, albo za wcześnie albo za późno, może też jitter się zmienia skoro procek chodzi w 2 MHz.

Dlatego też we wcześniejszym wpisie zaznaczyłem, że konieczne jest odczytanie $d030 -> przełączenie w tryb 1 MHz->chamskie przecyklowanie w trybie 1Mhz wraz ze zmianą $d018/$dd00-> przywrócenie $d030.

Inaczej nie umiem tego wytłumaczyć.

edit: lewo/lewy -> prawo/prawy :oops:

k.

#24 Post autor: k. »

@fenek bazując na Twojej wiedzy jak to jest zakodowane w Dawnfall mam teraz zmniejszoną krechę i działającą plazmę zabiera to 128-256 cykli po każdym przerwaniu.
Co do opóźniania przy dostępie do stacji... normal zaczyna działać przy 65K cyklach po dostępie do CIA2.. jak dla mnie kicha.

fenek
Posty: 95
Rejestracja: 15 wrz 2008, 20:43
Grupa: Arise

#25 Post autor: fenek »

Nie wiem jaka jest zasada działania TDC to mam 2 pytania ?
1. Czy ma ona wpływ na działanie zegarów/timerów CIA.
Uruchamiam program normalnie w 1MHz i ustawiam timery na żądaną wartość i włączam odliczanie np. 4096 cykli.
Czy jak jest włączone TDC to timery zliczą szybciej czy nadal zajmie to 4096 cykli ?
Może to głupie pytanie, pytam bo zastanawiałem się jak wykryć TDC.
Efekty same w sobie wyglądają brzydko jak się je przyspiesza ponieważ
zyskują one na szybkości ale nie na płynności.
Jak efekt jest wolny i jakaś delta obrotu wynosi np. 4 przy 1MHz, to gdyby była możliwość wykrycia TDC i wtedy tą deltę zmodyfikować z 4 na 2. Efekt będzie działał nie tyle szybciej co płynniej.

2. Czy możesz śledzić jakie rozkazy wykonuje TDC, jeśli możesz to może sprawdzać po wywołaniu przerwania IRQ czy jest żądanie wykonania rozkazu modyfikującego $d011 ?
Jeżeli jest modyfikacja to przez jakiś czas nie włączać (128 cykli) turbo.

Krecha może być powodowana też przełączaniem $d011, #$1b<>#$3b
fonty<>bitmapa, multikolor<>hires $d016.

k.

#26 Post autor: k. »

1. TDC podkręca zegar proca, sid,cia. Więc wszystkie timery będą działały ca. dwa razy szybciej. Jeżeli ustawisz timery to badając linię rastra po wyzerowaniu timera będziesz wiedział z jaką szybkością działa procek.
Prostym sposobem może być dowolny bit w d030, który np. będzie non-stoper wyzerowany albo ustawiony, niezależnie od zapisu do komórki.

2. Ustawiłem że każdy dostęp do vic'a albo irqvic ustawia mi licznik który bije do zera,dla wartości 128-256 chodzi nawet doom w oneder. Niestety krecha nadal jest widoczna ale już mała.

Czy można śledzić: TDC-liittle , kończą się zasoby, TDC-full to ja mogę nawet VIC-a wrzucić do środka, więc mogę śledzić każdy zapis do rejestru łącznie z jego podmianką na wartość jaką byś chciał (R/W)

k.

#27 Post autor: k. »

Ok to dla niedowiarków....
Demo Applause .. na TDC
http://www.megaupload.com/?d=GT43B24C

I to chyba tyle w temacie TDC little by było. Za dużo czasu mnie kosztuje ta zabawa w cyklowanie demek ;)

Awatar użytkownika
skull
Posty: 760
Rejestracja: 15 wrz 2008, 08:18
Grupa: samar

#28 Post autor: skull »

dla mnie - w ostatnim filmiku - kreska spowodowana jest zmianą kształtów na sprites (pewnie jest za wcześnie i pokazuje ostatnią linię następnej warstwy (tzn nie wszystkie sprites (niektóre łąpią w porę) znaczy się że każdy z kształtów zmieniany jest oddzielnie (zamiast np zmiana mapy d018)) d018 d011 nie uczestniczą.

@kisiel czyli cia też zlicza dwa razy szybciej - jest 2x63 cykle na linię (PAL) czy jakoś inaczej?
Bo pecet to zwykły banan...

k.

#29 Post autor: k. »

Jak podkręcasz całą płytę to tak to wychodzi, co do SID-a to narazie nie chce mi się kabelków lutować bo TDC testuje na kilku konfiguracjach, docelowo będzie miał miejsce na płycie c64+ , a tam to już inna bajka.

Dziwnie te dema wyglądają na TDC, widać jak koderzy kodowali efekty, np. ComaLight 12 płomienie się w pewnym momencie kończą i zostają same napisy.... wygląda to jak zwis.

Proponuje że zrobie tak, dwa tryby pracy:
1. zgodny z D030, po przełączeniu bitów karta chodzi na full 2Mhz,
2. Tryb wymuszony przyciskiem, karta chodzi w trybie dem/gier dyskowych.

Awatar użytkownika
Nitro
Posty: 1544
Rejestracja: 03 wrz 2008, 20:23
Grupa: Black Sun

#30 Post autor: Nitro »

Brawa ode mnie za kompatybilność z loaderami, proponowałbym dla pewności sprawdzenie jeszcze czegoś korzystającego z loadera krill'a, który depakuje dane w locie, np. ostatnie dema Fairlightów.

edit:
Error 23 wersja 91%(jest na csdb: error23_91percent) obsługuje $d030.

k.

#31 Post autor: k. »

No to chyba dobrze że o takich rzeczach koderzy pamiętają.
Wrzucam kolejne demko SAMAR; Digital World,
http://www.megaupload.com/?d=S2EWS7HV
Oglądając kolejną produkcję zastanawiam się czy nie wprowadzić preset zworkowy na płytce TDCL z zadanymi opóźnieniami. Np. demo Arise chodzi na 128 cyklach opóźnienia, a reszta demek jak widać zoom4 słabizna. Przy depaku używającym d020 to już nie widać różnicy w czasie.
Ewentualnie toglować przyciskiem partsy .. jak ktoś lubi :P

Podsumowując: zostało mi już mało do zrobienia w TDCL(i w zasobach CPLD pustki), na pewno powstaną sample w ilości paru sztuk.

Dzięki za pomoc w rozkminianiu błedów.
Jak ktoś wpadnie na pomysła to niech da znać.

fenek
Posty: 95
Rejestracja: 15 wrz 2008, 20:43
Grupa: Arise

#32 Post autor: fenek »

A możesz zrobić tak, żeby w trybie dem każde przerwanie IRQ wywołane przez VICa było uruchamiane w trybie 1 MHz ???
Wcześniej pytałem o timery bo są dema gdzie przerwania IRQ są generowane na timerach. Mam prośbę spróbuj obejrzeć Sweet Infection a dokładnie część ze scrollowaną grafiką w hiresie to jest z dużym piratem.
W tym efekcie były wykorzystywane przerwanie na timerach. Timer wywoływał przerwania co określoną ilość cykli do wyeliminowania długich lini tylko raz na wiersz znakowy. Jak Ci się chce to zobacz czy to pójdzie na TDC czy będzie kaszana.
Specjalnie pytam o ten efekt bo on działa w jedną ramkę, depakowanie działa poza przerwaniami. Skoro timery będą zliczać 2 razy szybciej to nie jest to takie fajne w demach.

Właśnie widzę że wyświetlarki zoom4fli w demie Stingera nie działają, możliwe że to są napisane właśnie te z docyklowaniem na zegarach.

k.

#33 Post autor: k. »

Fenek ja zrobiłem już że każde IRQ jest przełączeniem na 1Mhz, te dwa dema są nagrane z licznikiem 128cykli, mogę zwiększać to do momentu aż przestanie działać turbo całkowicie ;o) Dlatego proponuje zworkowiec, jak ktoś chce oglądać dema takie jakie były a partsy gdzie jest dużo obliczeń były przyśpieszane to może sobie np. ustawić zworkę na 1024 cykle i heja, to powinno wystarczyć na każde demo.

fenek
Posty: 95
Rejestracja: 15 wrz 2008, 20:43
Grupa: Arise

#34 Post autor: fenek »

Ok, dzięki rozumiem. Tylko mi potwierdź albo zaprzecz.
Jeżeli coś powiedzmy kiedyś będę kodował to jak do każdego IRQ dodam
na wejściu dec $d030 a na wyjściu inc $d030 to w trybie TDC 2Mhz na wszystko efekty bez doczytywania powinny działać prawidłowo ?
np. dec$d030 docyklowanie, wyświetlarka FLI, inc $d030 ?

k.

#35 Post autor: k. »

Tak, ten feature z irq działa lepiej niż pomysł Nitro, tak zostanie na 100%
Takie opóźnienie wystarcza do spokojnej pracy np. z Geos'em... zapierdala aż miło :)



PS. jak Ci się jeszcze chce pisać dema.. to ja ci mogę tego karta prezencić gratis... oczywiście to będzie ten uruchomieniowy bo ja zostaje przy mojej wersji full.

Awatar użytkownika
skull
Posty: 760
Rejestracja: 15 wrz 2008, 08:18
Grupa: samar

#36 Post autor: skull »

fenek pisze:...pytałem o timery bo są dema gdzie przerwania IRQ są generowane na timerach.
Nawet jak nie generowane przez same timery - to również jest synchronizacja docyklowania w oparciu o timery. Całkiem pokaźny artykulik machnąłem do najnowszego C&A Fan o przerwaniach na c64 - numer miał być na święta - juz nawet powstała jakaś tam wczesna wersja - ale wszystko ucichło - źle się dzieje.
Bo pecet to zwykły banan...

comankh
Posty: 1622
Rejestracja: 08 wrz 2009, 12:10
Kontakt:

#37 Post autor: comankh »

kisiel pisze: TDC to jest world first, nikt nigdy nie podręcił tak procka w komciu.
tak to nie 'tak bardzo'. poza treningiem tojego skilla - useless.

k.

#38 Post autor: k. »

Tak jak każdy inny sprzęt do komodorka, nowe demka.. a o grach to już nie wspomnę, alepoco. Główny nurt zawsze będzie winda i 8086 od 30 lat, reszta jest bezużyteczna i nikomu nie potrzebna, taki śmietnik historii. Dziękując za Twoją opinię oglądam sobie kolejne podkręcone demo "Desert Dream"......alepoco.... bo mogę, bo chcę, bo mam na prąd :)

comankh
Posty: 1622
Rejestracja: 08 wrz 2009, 12:10
Kontakt:

#39 Post autor: comankh »

2mhz to ja mialem 17 lat temu.
nie bede kwękał jak zrobisz coś ciekawego.

co do głównego nurtu - myslisz się, mario jest już bardziej popularny od myszki miki.

Awatar użytkownika
wackee
Posty: 1606
Rejestracja: 05 paź 2008, 23:05
Grupa: Arise
Kontakt:

#40 Post autor: wackee »

Komancz, bycie anty i nihili też było w modzie 17 lat temu, time to move on :)
Arise - keeping your eyes wide open since 1991.

ODPOWIEDZ