hej!
mam mirrora tej stronki... zrobionego zaraz po tym jak jej właściciel ogłosił iż może ona zniknąć z sieci.
Dajcie tylko znać gdzie wrzucić. Jak wróce do domu to moge zacząć uploadować :)
Seban
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
Nowa wersja ARIFE Tool od PVBest73 Uaktualniono uniwersalne narzędzie do analizy obrazów ROM i dysków Atari
Echa Sommarhack 2025 Podczas szwedzkiego party Sommarhack zaprezentowano kilkadziesiąt produkcji,
MadPascal 1.7.3 już dostępny Nowa wersja kompilatora MadPascal przynosi poprawki i optymalizacje
Echa Lost Party 2025 Wyniki, zapis wideo oraz stuff.
Lost Party 2025 startuje już jutro W Licheniu Starym rusza zlot fanów 8-bitowych komputerów
atari.area forum » Posty przez seban
hej!
mam mirrora tej stronki... zrobionego zaraz po tym jak jej właściciel ogłosił iż może ona zniknąć z sieci.
Dajcie tylko znać gdzie wrzucić. Jak wróce do domu to moge zacząć uploadować :)
Seban
hej Konop!
Już poprawiłem :D to z pośpiechu :D
chcialem być lepszy od Magnusa ;) ( to żart oczywiście :) )
Seban
whoops! ;) sorki! :) się pospieszyłem :D
ale tak naprawdę... to chciałem sobie zażartować ;) dalsza droga chyba już nie ma sensu ;D
chociaż idac za słowami kogoś mądrego kto powiedział "...każdy program można zawsze skrócić o jeden bajt..."
możemy dojść do depacker'a o długości 1 bajtu :D
ba... idąc dalej za teoriami jakiegoś szalogego gościa z giełdy na "grzybowskiej" możemy zrobić kompresję do 1 bajtu :D
użwyając funkcji XOR :D pierwszy bajt xor'ujemy z drugim... wynik z trzecim bajtem... itd. ;-)
Seban
hej!
chyba popadamy w jakąś paranoję :D
ale jeszcze krócej o 3 bajty będzie tak:
src = $9D
dest = $24;
loop jsr $A293
beq stop
lsr @
tay
q0 jsr $A293
q1 sta (dest,x)
jsr $E6D1
dey
_bpl bmi loop
bcs q0
bcc q1
stop rts
pytanie, kto napisze algorytm ktory stwierdziłby czy wyszedł nam chaos czy fotka :D
pewnie dałoby się przewidywać przyszłość... ponieważ wśród chaosu mogłoby się pojawić zdjęcie z Orneta 2K6 ;D
ale tak realnie podchodząc do sprawy... ilość możliwych kombinacji 640x680*RGB jest po prostu kolosalna... nie dało by się przechować takiej ilości informacji :D trzeba by było zaprzęc jakąś sieć neronową aby oceniała czy jest to fotka jakiegoś realistycznego obrazu czy tylko szum :D no i za parę milonów lat już mielybyśmy wyniki ;D
jak tak dalej pójdzie to zaraz zaczniemy rozważania o wymiarach równoległych i innych strasznych sprawach :D
Ehhh... jednak może zmień dealera :)
Seban ;)
heja!
może się źle wyraziłem... dokładnie chodziło mi o to iż tak czy tak musi być jakiś LDX # :D nawet w wersji maroka ;)
Seban
ha!
Marok byłeś pierwszy... ale miałem podobny pomysł pomysł :D
bez modyfikacji spakowanych danych wyszło mi tak:
org $80
loop clc
jsr get
bpl store
eor #$ff
beq stop
sec
store tay
q0 jsr get
q1 sta $dead
inc q1+1
bne *+4
inc q1+2
dey
bmi loop
bcc q0
bcs q1 ; (!) jump always ;)
get inx
bne *+4
inc adr+2
adr lda $beef
stop rts
czyli o ile dobrze licze wychodzi 43 bajty poza "zero page", a 40 na "zero page" :D
ale w porównaniu z 33 bajtami Maroka, mogę się schować :D
a i jeszcze jedno na początku wersji zaproponowanej przez Probe z inx,inc powinniśmy mieć wszyscy LDX #0 :) wiec dochodzą nam dwa bajty :(
Seban/SLIGHT
hej!
To może i ja swoje 3 grosze dorzucę :) Pierwsze założenie optymalizacyjne, odwracamy znak w przypadku ilości spakowanych danych, czyli w przypadku ustawionego 7 bitu, wartość $ff będzie oznaczała 1 powtórzenie, $fe - dwa powtórzenia $80 - 127 powtórzeń. Przez taki myk możemy wprowadzić co następuje:
jsr get
bpl store
xor #$ff
beq stop
...
tay
nie potrzebujemy już and #$7f ;) mamy już 48 bajtów
pierwszym moim pomysłem było zastosowanie nieco innych trybów adresowania i umieszczenie tego na stronie zerowej:
org $80
src dta a(src_address)
dst dta a(dst_address)
loop ldx #($100-(_bpl-q0+2))&$ff
jsr get
ora #$00
bpl store
xor #$ff
beq stop
ldx #($100-(_bpl-q1+2))&$ff
store tay
stx _bpl+1
q0 jsr get
q1 ldx #dst
sta ($00,x)
jsr inc
dey
_bpl bpl *
bvc loop
get ldx #src
lda ($00,x)
inc inc ($00,x)
bne *+2
inc ($01,x)
stop rts
wychodzi 49 bajtów, co okazało się porażką ponieważ kod wygenerowany wcześniej przez magnusa ma 45 bajtów gdy umieścimy go na "zero page". no cóż pozostaje wiec pozostawienie wersji magnusa wraz z modyfikacją "xor" i mamy 43 bajty na zero page lub 48 bajtów w "normalnej" pamięci.
org $80
loop ldx #($100-(_bpl-q0+2))&$ff
jsr get
bpl store
xor #$ff
beq stop
ldx #($100-(_bpl-q1+2))&$ff
store tay
stx _bpl+1
q0 jsr get
q1 sta $dead
inc q1+1
bne *+2
inc q1+2
dey
_bpl bpl *
bvc loop
get inc adr+1
bne *+2
inc adr+2
adr lda $cafe
stop rts
pozdrowionka
Seban/SLIGHT
Ejku!
Wielki Szacun!!! Po prostu rewelka!!!
Dzięki WIELKIE !!!!
Seban
hej!
niestety, dokładnie tak.
*.pozdr!
Seban/SLIGHT
witam!
W mojej Atarce (130XE) ten pin jest na stałe podpięty do +5V. Więc po włączeniu zasialania po prostu pojawia się tam +5V. RESET nic nie zmienia bo w przy takim podłączeniu nic zmieniać nie może :)
pozdrawiam
Seban/SLIGHT
Ok!
Już wszystko jasne ;)
Trochę posiedziałem z oscyloskopem i wszystko wyszło.
No cóź cała tajemnica sygnału ~REF polega na tym iż on tylko steruje MMU, tak aby przygotowano RAM do odświeżenia przez ANTIC. W momencie odświeżania ANTIC sam wystawia adresy na magistrale, a DRAM w momencie odświeżenia nie wystawia nic na magistrale danych. Do tego ANTIC jeszcze wystawia HALT troszkę wcześniej procesorowi aby ten też "odpioł" się od szyny.
I tu cały bajer :) generując fałszywy ~REF, generujemy dla MMU i FREDDIEGo cykl odswieżania pamięci, magistrala danych pozostaje nieużywana (DRAM w cyklu odświeżania pozostawia magistrale danych w stanie wysokiej impedancji) procesor pozpstaje podpięty po nie ma HALT'a :) teraz freezer podpina swoją pamięć (EPROM,ROM) w obszar $fffa,$fffb. Stan cały utrzymuje się do momentu wystąpienia najbliższego NMI :D
Wtedy procek skacze pod adres który obecnie się znajduje $fffa,$fffb. A w podanym obszarze znajduje się już nasza pamięć EPROM podpięta przez logikę freezera :)
Jedny problem jaki występuje w takiej sytuacji to aby nie wygenerować fałszywego REF'a w momecie gdy antic odświeża sobie RAM. Ale to można wyczaić po magistali adresowej. z tego co widzę to na schematcie aby uaktuwnić freezera linia A3 musi być w stanie "1".
Można domyślać się iż ANTIC podczas odświeżania generuje na szynie adresowej tylko adresy typu: $0000,$0100,$0200,$0300....$ff00 (adresowane są tylko wiersze, ROW).
Szacun dla Pana Bernarda :) Musiał mieć zacięcie i dużo wolnego czasu aby to wymyślić i opracować w tamtych czasach :)
Ktoś zainteresowany przeniesiemiem freezera na jakąś nowszą programowalną logikę? bo układ PLS105 to swego rodzaju zabytek :)
Jak już wiemy, ma być Turbo Freezer 2005 od ABBUCA, pytanie tylko czy będzie dostępny czy będzie trzeba za niego płacić chorą kasę. Tak myślę sobie że można się pokusić o stworzenie własnego... tylko pytanie czy ktoś jest zainteresowany? (oprócz mnie :) bo mój Freezer by Stecu/The Distals [jak to wymyślił Miker :D ] już prawie nie działa :(
pozdrawiam
Seban/SLIGHT
Hi!
Tak sobie patrze na schemat tego freezera (notebene podesłanego przez Xana) podłączanego do szyny PBI w serii XL. Ale nie mogę zrozumieć jak ten Freezer przejmuje kontrole nad ATARI. W przypadku Happy Freezera było wykorzystane przerwanie NMI. Partrze na te sygnały która są do niego podpięte i nie mogę zrozumieć jak ten freezer robi następujące rzeczy:
#1) w jaki sposób podmapowuje swojego eproma w obszar pamięci ATARI.
#2) w jaki sposób udaje mu się wymusić tak aby procek skoczył pod wskazany obszar po wciśnięciu przycisku
tak naprawdę to jedynym sygnałem którym może manipulować jest sygnał ~REF. Reszta sygnałów to wejścia do tego freezera.
Tak się właśnie głowie co daje temu freezerowi wystawienie dodatkowego "fałszywego" /REF'a? CPU się odpina od szyny, ale co dalej?
Ma ktoś jakieś pomysły jak to może działać?
Ma kawałek własnego RAMu, wiec tam sobie może zapiswyać informacje zapisywane do POKEYA, GTIA i ANTICA. Tu wszystko załatwia ten programowalny układ PLS105. Teraz ten zabytkowy układzik można zastąpić programowalną logiką ale najpierw trzeba by zrozumieć zasadę działania.
Może ktoś ma e-mail do autora tego projektu Pana Bernhard'a Engl'a?
Wydaje mi się to zbyt proste aby mogło działać. A jednak może to jest na tyle genialne w swojej prostocie że działa w jakiś sposób. Albo ja po prostu nie rozumiem idei działania tego wynalazku do końca ;)
Happy Freezer wymagał sporej ingerecj w sygnały między RAM'em a FREDDIE'im. Tu tego nie ma. taki Freezer może zostać po prostu podpięty pod PBI, czy nawet w XE do złącz CART i EXT i działa. Ale jak?
Jakieś pomysły?
chętenie posłucham waszych opini.
pozdrawiam
Seban/SLIGHT
Hej!
Masz gotowca... :D
Ale UWAGA!!! zero optymalizacji ;)
ehh... stare dobre czasy ;) kiedyś się pisało w BASIC'u ;)
pozdrawiam
Seban/SLIGHT
Witam!
tutaj znajdziesz odpowiedź:
http://atariarea.krap.pl/forum/viewtopic.php?t=2091
*.pozdr!
Seban/SLIGHT
Można też zastosować 18F452 - do "zadań dodatkowych" jest lepszy.
Dokładnie o takim samym myślałem ;)
A co do gammy to nie bardzo mają ochotę na sprzedawanie pojedyńczych sztuk. Mam ich pod domem, po drugiej stronie ulicy i znam się z nimi niejko poprzez poprzednią pracę. Gdzie utrzymywałem z nimi silne kontakty ze względu na dość znaczne zakupu PIC'ow ;) Na początku nie robią trudności jeżeli pojedyńcze sztuki kupuje firma i mają nadzieję na dalszą współpracę. Natomiast jak PICki kupują prywatne osoby to tak niechętnie do tego raczej podchodzą, aczkowliek sprzedadą pewnie.
A co do róźnicy w brzmieniach 6581 (stary) a 8580 (nowy) to ja słyszę wyraźną różnicę w brzmieniu fitrów. 6581 wydaje się nieco miększy i bardziej dynamiczny. 8580 ma dla mnie bardziej metaliczne i ostrzejsze brzmienie. Co ciekawe niektóre msx'y pisane na 6581 bardzo źle brzmią na 8580 i vice versa. Ale w 80% nie ma to znaczenia. Dopiero mistrowie SID'owego układu potrafili wykorzystać możliwości filtrów i sztuczki poszczególnych układów.
Co do sampli, to do końca nie wiem jak jest. Niektóre produkcje źle grają sample na nowych sidach (bardzo cicho). Z drugiej jednak strony nowsze produkcje źle odtwarzają sample na starym SID'ie. Wiec coś w tym jest. Do końca nie wiem na czym polegał trick z otwarzaniem sampli na sidzie, bo sprzętowo chyba nie ma takiej możliwości. Trzeba by było kod playera jakiegoś przeanalizować ;) Ale wszystko w swoim czasie ;)
Kiedyś w C&A był schemat układu poprawiającego jakość sampli w nowym sidzie ;) Z tego co pamiętam przeróbka polegała na zatrzasku podpiętym pod konkretny adres sida i przetoworniku C/A złożonym z drabinki R-2R. Wiec zapis do kokretnego rej. SID'a powodował po prostu wpis do tego prostego 4-bitowego C/A. Wyjście C/A było jakoś dopiete do Audio Out. I to była cała przeróbka.
Wiem że SoTe popełnił dwie konwersje digi-sampli z ATARI na C64 (chyba Crazy Cars i Ethnicolor produkcji HTT). Wiem że miał nowe C64 i znał/znalazł metodę na odtwarzanie sampli na SID8580.
pozdros
Seban/SLIGHT
wersja na mikrokontrolerze PIC bylaby calkiem na miejscu .Szczegolnie jesli opracowales na latwo dostępnym i tanim 16f84 a nie 16f877 jak w midiSIDbox'ie
eeee... 16f84 nie ma PSP (pararell slave port). Trzeba wybrać coś z PSP, co jest normalnie dostępne. Ja mogę mieć dostęp do wsztstkich ale nie o to chodzi. Chodzi o to jakie PIC'e z PSP można dostać w rozsądnej cenie w detalu.
A i pomysł zastosowania PIC'ka nie jest mój tylko Electrona. Chyba nawet Electron zaproponował jakiś schemat i do tego zaproponował wykorzystanie mocy szybkiego PIC'ka do wykonania dodatkowych zadań. Np. mnożenia, itp.
Jestem za rozwiązaniem z wlasnym rezonatorem kwarcowym 1MHz. Seban jesli nie masz czasu to i tak warto bys udostępnil schamaty w tej postaci w jakiej sa Po tych 9 latach :D Niech inni nad tym tez pracują równolegle Wkoncu moc tkwi w równoleglym przetwarzaniu:D
Pewnie masz racje... jak bym to udostępnił to pewnie już ktoś kto ma więcej czasu już by to dawno dokończył. Może i tak zrobie. Może ktoś z was mający więcej czasu się tym zajmie. w takim razie musze doprowadzić do porządku dokumentacje i postaram się opbulikować to co jest zrobione do tej pory.
pozdr
Seban/SLIGHT
a jak wyglada sprawa obciazenie CPU Atari podczas odtwarzanie SID'ow ? tak jak np. z MPT ? bo jak tak to luzik :)
i tu właśnie jest ciekawostka ;) Myślałem że C64 jest sporo wolniejsze od atari :) wiec myślałem iż Player z C64 będzie się wykonywał nieco szybciej na ATARI niż na C64. Jakież było moje zdziwienie jak zobaczyłem iż player z C64 wykonuje się prawie tyle samo na ATARI co na C64 (no może minimalnie szybciej). Badanie przeprowadzałem przy standardowym ekranie z C64, playera odpalałem w momecie zaczęcie rysowania przez VIC'a pierwszej lini tekstowej. Podobnie na atari (standarowy ekran ATARI w trybie ANTIC $02).
Próbowałem poszukiwać wyjaśnienia całej sytuacji. Pytałem znających się trochę bardziej ode mnie na C64 jak to jest że ekran praktycznie nie spowalnia C64. I co się okazało... otóż podobno VIC z C64 to bardzo sprytny układ ;) Nie haltuje on CPU tak jak ANTIC. Pobieranie danych z pamięci i odświeżanie tejże wykonuje w przeciwfazie do CPU. CPU z C64 pobiera dane z pamięci na narastającym zboczu sygnału zegarowego a VIC na opadającym. Także nie ma możliwości aby CPU i VIC zarządały danych w tym samym momencie z RAMu. Tak wiec pobieranie danych z pamięci przez VIC'a nie spowalnia CPU.
Tak do końca nie wiem czy to prawda bo nie miał mi kto potwierdzić tych informacji. Jednak zakładam iż jeżeli player z C64 odpalony na ATARI wykonuje się podobną ilość czasu to oznacza to tylko jedno... VIC nie wstrzymuje 6510, albo nie spowalnia go w takim stopniu jak ANTIC spowalnia 6502.
Ale wracając do czasu wykonaia się player'a. Z założenia Playery z C64 powinny się wykonywać o wiele krócej. SID ma własny generator obwiedni wiec Player zupełnie się tym nie powinien zajmować. A jednak playery z C64 mają porównywalne czasy wykoania z playerami z ATARI. Są i player y które zajmują dwie linie ekranowe, jednak są i takie rozrośnięte kobyły co potrafią zabrać z 70 lini rastrowych ;).
Zaczołem się przyglądać playerom z C64 i dwie rzeczy rzuciły się od razu w oczy. Po pierwsze 12-bitowa precyzja SID'a wymusza trochę innego rodzaju kod. Po drugie część świetnych muzyków z C64 sama pisze/pisała playery i jeżeli ktoś jest dobrym muzykiem nie oznaczało iż był także rewelacyjnym koderem. Cześć playerów po prostu jest napisana tak aby spełniała swoje "zadanie brzmieniowe". One nia muszą być szybkie, ważne żeby fajnie brzmiały. Cześć muzyków nie przywiązywała po prostu wagi co do jakości kodu playera. Inni nie potrafili sobie napisać szybkiego playera.
Analizowałem kilka playerów i tak jak mówiłem są takie które wykonują się 2 linie i są prawdziwe kobyły ;) Jednak średni jest to około 32-48 lini rastrowych (przy wyłączonym ekranie na ATARI). Zresztą możecie zobaczyć to w SidPlay'u świetego. Tam jest pokazany czas wykoania Player'a z C64 ;).
Moim zdaniem średnio wchodzi nieco krócej niż MPT. Ale jest innna wada niektórych playerów. Średni czas wykoania jest bardzo krótki, ale w momecie gdy taki player musi pobrać dane dla kolejnych patternów zaczyna długo się wykonywać.
Zresztą specyfika muzyki SID'owej jest zupełnie inna niż POKEY'owej. SID'owcy mają zupełnie inne efekty. Często playery potrafią robić płynne przejścia z jednej nuty do drugiej. To wymusza też nieco inny styl pisania playera.
eehhhh... co ja zresztą bredzę... już chyba wystrarczająco dużo natrułem ;)
pozdrawiam
Seban/SLIGHT
seban: rw masz buforowany czy ma opoznione zbocze dodatnie?
jelonek: wbij sobie do lba ze gumi nie jest ci nic winien, a juz napewno niczego nie musi ci udowadniac - najpierw dorosnij do czyjegos poziomu, pozniej bedziesz z nim polemizowal
Hej!
O jakim R/~W mówimy? o tym z ATARI czy o tym dla SID'a?
Bo jezeli mówimy od R/~W dla SID'a to poszedłem na łatwiznę ;)
W Slight SID'ie nie ma możliwości czytania z SID'a. Jest tylko zapis.
Zresztą w sidzie są tylko 3 rejestry do odczutu. Dwa z nich to wartości z przetworników A/C wykorzytywanych do pomiaru rezystacji w "paddles". A trrzeci z nich to wartość z generatora obwiedni/szumu.
R/~W jest u mnie podpięte na stałe do GND. (zresztą jak się okazało tak samo jest w pierwszej wesji HardSid'a :D ). Zresztą wersje z odczytem robiłbym już na bardziej specjalizowanych układach. Nie mam pomysłu jak miałby wyglądac odczyt z SID'a przy różnych zegarach i na magistralach i jednej instrukcji LDA $d5xx. Musiałoby to wyglądać inaczej. Np. w dwóch krokach. pierwszym LDA $d5xx sygnalizujemy chęć odczytu a drugim lda $d5xx dostajemy poprawną wartość odczytaną z SID'a. Ja mam dwa niezależnie niesynchronizowane ze sobą generatory (jeden to atarowski FI2, a drugi to 1MHz zegar dla SID'a).
Zasadą którą sie kierowałem to uproszczenie projektu do bulu. Tak jak wspominalem podpisnając jakiś MCU, bardziej zaawansowane CPLD lub FPGA robi się to bez problemu. Tylko teraz skąd normalny użytkownik ma wźciąć sobie takie CPLD, czy inne mikrokontrolery i jeszcze programatory dla nich.
Co prawda mam dostęp do narzęci Microchip'owych i mógłbym zrobić to na PIC'u z PSP. Tylko jak inni by sobie poradzili z programowaniem tego i zdobywaniem piców? Jacyś chętni na wersje SID'ową na PIC'u?
gretz
Seban/SLIGHT
Fajnie. Czy SLIGHT moze udostepnic schemat SLIGHT SID ?
Chciałem to zrobić, jak wszytsko dogram na 100%. W chwili obecnej nie mam zbyt dużo wolnego czasu... przez co zaraz zginę śmiercią tragiczną posterzelony z jakiejś dubeltuwy przez STRYKER'a ;) Bo on już się strasznie niecierpliwi ;)
Mam jeszcze jeden problem do rozwiązania, jest jedna sytuacja w której zapis do SID'a mi się "wali". Chodzi o moment gdy ATARI zapisze mi tuż przed opadającym zboczem zegera 1MHz. Wtedy wartość która powinna być wpisana do SID'a idzie sobie w kosmos :( czego efetem jest najczęściej słyszalne "pyknięcie". Nie miałem zbyt wiele czasu na poprawki. Nie chciałbym udostępniać schematu bubla... bo inaczej tego nazwać nie mogę. Najgorsze jest to że zrobiłem sobie do tego płytki. Bo myślałem iż efekt pyknięcia jest spowodowany przekłamaniami na magistrali danych. Winą wtedy obarczyłem niechlujnie zmontowany prototyp na płytce uniwersalnej (długie przewody od magistali, itp.)
Także jak tylko zrobię poprawki i wykonam nowe PCB i sprawdzę że wszystko działa na 100% to bez problemu to udostępniam.
pozdrawiam
Seban/SLIGHT
zalozylem ze sluchaczowi nie bedzie przeszkadzal dzwiek SID'a obnizony o pol tonu :).
A jednak :) to słychać :)
A tak btw, zawsze się zastanawiałem jak to jest w ATARI ST, tam procek ma 8MHz, a AY jest taktowany chyba 2MHz, jak wyglądają zapisy do układu AY z punktu widzenia procesora ;) Przecież moge zrobić parę zapisów do jego rejestrów i on nawet ich nie zobaczy ;) Czy może procek jest wstrzymywany na czas zapisu do AY???
czyli taki jednobajtowy FIFO :)
Dokładnie tak, tyle że jeszcze trzeba zapanować na ChipSelectem ;) i odpowiedniej chwili go wygnerować dla SID'a. A ponieważ nie wolno dopuścić wieloktornego zapisu tej samej wartości do SID'a... i już mówię dlaczego, np. wpis do danego rejestru startuje gen. obwiedni, a ponowny wpis powoduje jego restart. W momencie dwukrotnego zapisu tej samej wartości may kiszkę. Prote playery działają jednak te bardziej zakręcone już się syfią :(
pozdrawiam
Seban/SLIGHT
a czy nie by mozna sida taktowac 1/2 czestotliwosci procka?
Tu nie do konca o to chodzi. Oczywiscie to wydaje sie najbajdziej rozsadnym rozwiazaniem, ale jest tu pewnien szczegół ;) Przy taktowaniu SID'a inna czestotliwoscia zmienia sie rowniez czestotliwosc jego generatorów. Wszystkie SID'y dostepne w sieci nalezalo by przerobic poprwiajac tablice czestotliwosci w playerach lub dodac 12-bitowe tablice konwersji czestotliwosci :) Ale nie o to nam przecież chodzi ;)
Pierwsza wersja slight-sida którą miałem podpiętą do ATARI była własnie tak zrealizowana. Ale przerabianie tysięcy gotowych SID'ow byłoby bezsensowne.
Wiec sprawę trzeba zrobić tak aby SID był taktowany swoją częstotliwością 1MHz aby zachować tą samą czestotliwość pracy SID'a. Niestety magistrala SID'a również wtedy pracuje na częstotliwości 1MHz i zapisy przez ATARI dokonywane z czestotliwością 1.773447 będą zupełnie nie trafione :)
Można zrealizowac to na dwa sposoby.
#1) łatwiejszy w realizacji ale trudniejszy dla wykonania przez normalnych użytkowników/pasjonatów ATARI. Mówię o wykorzystaniu jakiegoś mikrokontrolera z jednej strony podpiętego pod szynę ATARI, natomiast z drugiej strony będzie miał podpiętego SID'a. Całość będzie taktowana np. wielokrotnością 1MHz. SID będzie pracował sobie np. 1MHz, a mikrokontroler np. 10MHz. Będzie przechwytywał zapisy z ATARI, buforował chwile ;) a potem zapisywał do SID'a. Można wykorztać funkcję PSP z MCU Microchip, nadaje się idealnie do tego. (zresztą tak jak zaproponował Electron). Do zaimplementowania w parę dni.
#2) sposób trudniejszy w realizacji projektowej, ale łatwiejszy do zmontowania dla szarego użytkownika. Nie wykorzystujemy żadnej logiki programowalnej (CPLD, procków, itd.). Opieramy się tylko na standardownych ukłdach (TTL, CMOS). I własnie tak jest zrealizowany SLIGHT SID. Bazuje on na tym iż ATARI i tak nie zapisze częściej niż dwa razy w ciągu 1MHz ;) Mam dwa 1 bajtowe zatrzaski. jeden buforuje adres, drugi dane z szyny atari. W momencie gdy przychodzi opadająca zbocze 1MHz zegara taktującego SID'a owe dane zostają do niego wpisane.
pozdrawiam
Seban/SLIGHT
Cześć!
To zupełnie nie związane z tematem ale Wy jako specjaliści od MAC65 może mi odpowiecie na moje zakręcone pytanie :) Kiedyś sam używałem MAC65 i uważałem że inne narzędzia się do niczego nie nadają... i do tego miałem manie zapisywanie wszystkiego dziesiętnie :) ale pewnego dnia przyszedł SoTe i mnie spacyfikował, od tego czasu stałem się niewolnikem QA :) i musiałem uznać wyższość systemu hexadecymalnego nad dziesiętnym ;)
Ale wracając do tematu... z tego co pamiętam plik .OBJ wygenerowany przez MAC65, miał bardzo smieszne nagłowki, cały plik był podzielony na jakieś śmieszne bloki po $fa bajtów chyba, czyli np. jak kod znajdował się w obszaże $8000-$9000, wyglądało to chyba tak:
$ff,$ff
$00,$80,$f9,$80, <dane>
$fb,$80,$ff,$80, <dane>
$00,$81,$fa,$81, <dane>
<itd.>
mogłem coś pokręcić ale chyba jakoś tak to wyglądało (może inne były długości). Zawsze się zastanawiałem po jaką cholerę MAC65 taki motyw robi ;) Doszło nawet do tego że napisał kiedyś program linkujący położone obok siebie bloki w pliku w jeden większy ;)
Może Wy właśnie (Pecuś lub Pirx) wiecie dlaczego MAC65 właśnie coś takiego robił? Wiem że to głupie, ale pytam po prostu z czystej ciekawości. Kiedyś sobie to tłumaczyłem tym iż MAC65 ma po prostu bufor 256 bajtów, i w takich kawałkach własnie zapisuje dane. Ale czy jest to prawidłowa odpowiedź... nie wiem ;)
A jeszcze jedno słowo apropos FAT'u... kiedyś była taka ksiązka "DOS 5.0 od środka, z tego co pamiętam, tam dość dokładnie była opisana struktura FAT12 i FAT16. Może ją gdzieś jeszcze mam. Jeżeli byłoby to przydatne to mógłbym jej poszukac i przeskanowac parę kartek z rozdziału o strukturze FAT.
pozdrawiam
Seban/SLIGHT
oj, oj... chyba jednak to drugie (pamięć, hehe)... Pamietam, jak w snail-mailu pisales kiedys do mnie, ze np. na prosbe Żbika piszesz blokade do ARDEN (i/lub tego TECHNOIDA)
ojoj... chyba cos z moja pamiecia nie tak jednak... coś mi sie kołacze po głowie, ale prawie nic nie pamiętam... nawet nie wiem czy zostalo to wykorzystane w w/w grach. ehhh.... starość nie radość :(
A detekcja uzycia freezera opierala sie chyba (jak mi Gumi tlumaczyl) na podpatrywaniu co sie dzieje na stosie kompa.... :rolleyes:
A co detekcji uzycia freezera... to było kilka metod. Jena z nich bylo oczywiscie wykorzystanie faktu iz freezer wlasnie potrzebowal troche miejsca na stosie, gdzie umieszczal kawalek swojego kodu.
Kolejnym z pomyslow bylo rzeczywiscie zablokowanie przerwan NMI. Wymagalo to od kodera pewnego nakladu sil, aby bez przerwan DLI czy VBL zrealizowac to co chcial, ale dawalo sie zrobic :)
Kolejna z metod bylo wykorzystanie faktu iz po zalozeniu do kompa freezera, przy zapisie do ktoregokolwiek z rejestrow sprzetowych (ANTIC,POKEY,GTIA,PIA) ta sama wartosc zostala wpisywana rownolegle do pamieci RAM znajdujacej sie w tym samym obszarze (np. zapis do GTIA $d000-$d01f, powodowal wpisanie tej samej wartosci do RAMu pod adresem $d000-$d01f. Normalnie ta pamiec nie byla dostepna, jednak po wcisnieciu przycisku freezera, ten niedostepny nigdzie RAM byl przemapowywany w obszar strony zerowej ;) tak wiec to co ostatnio bylo wpisane w $d000-$d01f, znajdowalo sie teraz w adresach $00-$1f, potem potem wartosci wpisane do POKEY'a byly widoczne $20-$3f. To samo dotyczylo ANTICA, itd.
Teraz wystarczyło wykorzystać fakt iż w normalnym atari (bez freezera), zapis np. $d000 to to samo co zapis $d020. Natomiast w przypadku kompa z freezerem... juz nie ;) dla freezera tylko zapis do $d000 bedzie ostatnim aktualnym zapisem do GTIA ;) I teraz jak widzicie możliwości są nieskończone ;). jednym z pierwszych naszych pomyslow bylo wykorzystanie kolizji grafiki PMG ;) np. dwa sprite'y ustawiamy na pozycjach $00 i np $f0 (poza ekranem) ale w taki sposob iz:
lda #$00
sta $d000
sta $d001
lda #$f0
sta $d020
i juz wiadomo co bedzie po uzyciu freezera ;) obiekt z pozycji $f0
powroci na pozycje $00, bo dla freezera był to ostatni poprawny zapis do GTIA ;)
Sposoboów jest o wiele wiecej. Kombinowac można dowolnie ;)
Swego czasu SoTe i ja wymyślaliśmy sobie z nudów sposoby na freezera ;) Pod koniec dzialalnosci mielismy ich chyba z kilkanascie ;) Zrobilismy sobie z tego takie male hobby ;)
Najlepszym numerem jaki zrobilismy bylo umieszczenie RiverRaida w chyba SampleEditorze :) po uzyciu Freezera odpala sie RiverRaid ;)
pozdrawiam
Seban/SLIGHT
Hej Dracon!
Może po kolei... z tego co ja wiem pomoc wbudowana we frezzera byla juz w wersji ktora zostala zmodyfikowana przez Roberta Kujde albo kogos z jego otoczenia. Ta wlasnie ta wersje poprawial i modyfikowal SoTe robiac Code3 Freezera. W code 3 freezereze rowniez byla pomoc, po wcisnieciu klawisza chyba "H" w debugerze.
Co do zabezpieczania Technoida... chyba się coś Ci pomyliło, bo ja nie zabezpieczałem chyba (a może już nie pamiętam ;) żadnych gierek komercyjnie. Kiedyś co prawda na prośbę niejakiego 'ciapka' daliśmy chyba nasze procki, które miały być w jakieś grze chyba z Mirage, ale nie wiem czy kiedykolwiek ktoś to wykorzystał. Jedyne produkty zabezpiecznoe przed freezerem to były nasze niektóre demka i programy. Np. Digital Studio, Sample Editor były zabezpieczone przed freezowaniem. Ale nie miało to na celu zabezpieczenia przed zrobieniem wersji file tylko miało to na celu utrudnienie posiadaczom freezera możliwości zaglądania w nasz kod ;)
I tak Ci co wiedzieli jak mogli zrobić wszystko bez freezera ;)
Seban/SLIGHT
atari.area forum » Posty przez seban
Wygenerowano w 0.086 sekund, wykonano 19 zapytań