Przejdź do treści forum
atari.area forum
Twoje polskie źródło informacji o Atari
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
Aktywne tematy Tematy bez odpowiedzi
Aktualności ze świata Atari
Outline 2025 - invitro na Atari ST Paradox i Havoc/Lineout wydali invitro na Outline 2025 dla Atari STf z 1 MB RAM.
Nowe postacie w Street Fighter 2 Vega dodaje kolejne postacie do portu SF2 na Atari 8-bit. Zobacz nowy film z rozgrywką.
ATasm v1.30 ATasm v1.30 to assembler dla procesora 6502 działający z poziomu wiersza poleceń, zgodny z oryginalnym Mac/65 od OSS.
ugBASIC v1.17.2 Wszechstronny język programowania BASIC oraz cross-kompilator pozwalający na tworzenie programów na różne platformy 8-bitowe
Zapraszamy do artykułów na atari.area! Szukasz różnorodnych materiałów na temat Atari? Koniecznie odwiedź dział artykułów.
Opcje wyszukiwania (Strona 72 z 120)
Polecałbym zakup 65XE (jak mówią przedpiśćcy), ale ze złączem ECI ( http://www.dereatari.republika.pl/images/3xe_2.jpg - najlepiej model na dole, bo górny nie ma modulatora TV; model w środku był produkowany po przejęciu Atari przez Tramiela a ten jako że miał mentalność sprzedawcy pietruszki, oberżnął chamsko złącze rozszerzeń i zrobił z tego konsolę do gier z magnetofonem i złączem SIO - aż dziw, że zostawił klawiaturę; gdyby dało się DMA wywalić z kompa i ANTICa to pewnie też by to zrobił). Jeśli jego zabraknie będzie potem trudno dołączyć HDD do Atari (możliwe, że SIDE sobie z tym radzi - nie używałem, za to używam na bieżąco IDE+ z kartą CF).
Edit: Polecałbym w początkowej konfiguracji:
- stereo
- covox
- ultimate
Do tego warto się w późniejszym czasie zaopatrzyć w dobry wzmacniacz i mikser kilkukanałowy (Pinokio Ci doradzi najlepiej bo się zna) - różne komputery (Atari XL/XE, ST, C64, ZX, Amiga, PC) dają różny poziom dźwięku i nawet jeśli we wzmacniaczu masz kilka wejść, to każdorazowe manipulowanie głośnością po przełączeniu źródła jest uciążliwe.
Oczywiście gorąco polecam też:
- soundboard (dźwięk który bije na głowę Amigę),
- slightsid (dwa żywe SIDy),
- evie (YM 2149!, SID i 2 POKEYe emulowane),
- vbxe - ogromne możliwości graficzne i obraz-żyleta.
A muzyka, jak wiadomo łagodzi obyczaje :]
Mój wynalazek, który Ci linkowałem nie ma bufora dla zawartości pod oknem, bo go nie potrzebuje (user też nie wskazuje takiego bufora). Aktualnie procedura rysowania jest wolna bo przy malowaniu każdego bajtu ekranu sprawdza z którego okna wziąć daną, ale można by to poprawić tak, żeby odrysowywało tylko potrzebne klipy. To był eksperyment wynikający z rozmów z JBW, który właśnie doszedł do wniosku, że można tak skonstruować system, że bufor jest niepotrzebny a tylko zajmuje pamięć. Nawet pokazywał mi w TA na pececie taki swój system okienkowy wyglądający na Borlandowy.
Marketing Panie. I zarządzanie.
Ależ ja wiem, że wiesz :) Wyraziłem jedynie swoją opinię na temat złych i niewygodnych interfejsów. Zdaje się, że nasze zdanie jest zbieżne :)
BMC usiłował się wzorować na "wygodnych" okienkowych systemach. Doprowadzał mnie do szału sterowaniem wskaźnikiem za pomocą joysticka (wiem - można było też myszką). Pomysł trafiania w jeden znak żeby zamknąć takie okno (zamiast po prostu wciśnięcie ESC) jest kretyński. Trauma została mi do dzisiaj. Podobnie zresztą było z kolejnym "wygodnym" Sound Trackerem z ASFu.
Od narzędzia wymaga się:
1. prostoty obsługi (kiedy jesteśmy zieloni)
2. szybkości obsługi (kiedy już przebrnęliśmy przez pierwsze kroki)
"Jedynka" to sterowanie myszką - jestem w stanie się zgodzić z Wieczorem, że to jest wygodne przy niektórych zastosowaniach, ale na dłuższą metę jeśli to jest jedyny sposób sterowania, to potrafi doprowadzić do pasji (vide Sound Tracker). Stąd też cechą dobrze zaprojektowanego interfejsu użytkownika jest sterowanie skrótami klawiaturowymi - i to załatwia "dwójkę". Wiadomo, że w niektórych rozbudowanych aplikacjach nie starczy kombinacji na klawiaturze, żeby wszystko podpiąć stąd też zazwyczaj podstawowe rzeczy są domyślnie predefiniowane, ale mamy osobny panel w ustawieniach, w którym do funkcji można samodzielnie przypisać kombinację klawiszy (choćby Eclipse IDE i Pakiet biurowy Microsoftu).
TurboVision też zresztą dawał obydwie opcje - każdą rzecz z oknami dało się zrobić odpowiednim skrótem. Nawet taki Windows 3.x dało się bez problemu obsługiwać samą klawiaturą, co było rzecz jasna szybsze niż szukanie wskaźnika myszy.
Jest też na Atari XL/XE coś takiego, jak Chaos(?) GEMS autorstwa Pelca (nie mam linka :/). To jest właśnie tekstowy interfejs ze wskaźnikiem przesuwanym co znak za pomocą kursorów klawiatury.
Edit: No i czytelny układ elementów aplikacji. Tragedia w Sound Tracker'ze (szczególnie definiowanie tracku), świetnie rozwiązane w NEO Tracker'ze czy TMC.
A/ Imho nie ma wad, ale nie powinien wymagać do działania wskaźnika (mysz, joystick) a powinno się dać posługiwać aplikacjami przez domyślne skróty klawiaturowe (wzorem dla mnie jest TurboVision).
B/
1. Obiektowy i prosty w użyciu - podajesz strukturę, wywołujesz funkcję.
2. Nie powinien samodzielnie alokować pamięci jeśli już, to programista decyduje gdzie ma leżeć struktura.
Działam, działam. Może już niedługo coś będzie.
Reloc w nagłówku .sid pokazuje gdzie masz wolne i ile.
Green Beret ma:
jerzyk@ox:~/atari/sidplay$ ./show.sh sid/greenb.sid
File: sid/greenb.sid
Signature: PSID2
Load/Init/Play: $9f90..$cff9*/$9fce/$cff0
Song: 1/21
Speed: 00000000000000000000000000000000
Title: Green Beret
Author: Martin Galway
Copyright: 1986 Imagine/Konami
Flags: 0000000000010100
Built-in player
C64 compatible
PAL clock
6581
Reloc: free $4000..$9eff ($5f pages)
Content:
0000000: 48 20 9e 9f 20 a8 9f 68 20 18 cf 4c b4 9f a5 01 H .. ..h ..L....
0000010: 8d c0 9f a9 35 85 01 60 a2 05 bd fa ff 9d c4 9f ....5..`........
Moje też były z HVSC :) ściągane wczoraj (dziwne, że się różnią).
Szukaj po Author: Galway i zobaczysz wszystkie wymienione przeze mnie (wyszukiwarkę mają tak zrobioną, że nie mam jak podlinkować Ci zasobów).
wieczor napisał/a:drac030 napisał/a:brak w Atari pamięci RAM w obszarze $d000-$d7ff.
Myślałem o tym jakiś czas temu, jak wiadomo SID to w zasadzie cały kod playera - fragment programu - a na C-64 można się pakować w obszary pamięci, w które na Atari wejść trudno, czy wręcz nie sposób. Zastanawiałem się czy jest możliwe ominięcie tego poprzez inteligentną relokację kodu podczas ładowania (inteligentną, czyli taką która jedocześnie popodmienia skoki czy odwołania bezwzględne do tego obszaru). Ciekawiło mnie mianowicie co player robi wstępnie z SIDem podczas ładowania, gdyż jak się domyślam, to nie ma prawa pójść tak na dzień dobry?
Zrobiłem taki analizator kodu, który wchodził w procedury init i play przelatywał wszystkie rozgałęzienia i wyłapywał odwołania do sprzętu (no i podmieniał je na moje). Okazało się, że taka statyczna metoda analizy jest mniej sensowna niż zwykłe search/replace. A czemu? A temu, że np. init $800 (cały .sid ładuje się do powiedzmy $4000) potrafi mieć w kodzie pętlę przepisującą dane playera i muzyki z $1000 na $B000. Za pętlą oczywiście jest skok do $B000, ale podczas analizy w tamtym miejscu nie ma oczywiście nic. Trzeba by symulować taki kod i w ten sposób określać gdzie jest program. To byłaby zresztą najlepsza metoda podmiany odwołań do rejestrów sprzętowych, bo bez ryzyka przypadkowej zmiany danych muzyki.
Póki co search/replace działa wg prostego algorytmu analizując dane pliku bajt po bajcie:
- sprawdzamy czy opkod chce 2 bajty argumentu
- sprawdzamy do jakiego rejestru się odwołuje argument
- sprawdzamy czy następny opkod wygląda na coś sensownego.
Te 3 kroki w połączeniu z testowaniem tylko opkodów do odczytu (kiedy rejestr może być tylko odczytywany) lub tylko do zapisu (kiedy rejestr może być tylko zapisywany) zawężają dość dobrze szanse na przypadkową zmianę danych. Ograniczana jest też lista rozkazów, którymi operuje się na danym rejestrze bo np ASL na rejestrze SIDa nie ma sensu więc raczej nie będzie zastosowany, ale już na rejestrach VICa może i jest nagminnie stosowany. 100% pewności nie ma i ciągle zdarzają się .sid'y które grają źle.
Jeszcze nie jestem zadowolony z playera, bo naprawdę programiści stosują przeróżne dzikie sztuczki. Zazwyczaj schemat wygląda tak:
1. init przygotowuje dane dla procedury odgrywającej.
2. Play wywoływany okresowo gra muzykę.
Ale również występuje inny:
1. Init przygotowuje dane + inicjalizuje liczniki taktujące.
2. Play gra muzykę synchronizując interwał z licznikiem.
Ale również inny:
1. Init przygotowuje dane + inicjalizuje liczniki i przerwania.
2. Playa nie ma.
Przy czym init wraca do playera i mogę sobie skonfigurować co tam chcę i odpalić.
Ostatni schemat jest najbardziej hardkorowy, ale też stosowany bo i czemu nie:
1. Init inicjalizuje dane + liczniki + przerwania (również IRQVEC oraz NMIVEC) i po czym włazi w pętlę bez końca ewentualnie czekając na jakąś flagę w sprzęcie (od licznika) i samodzielnie wywołuje procedurę odgrywającą (ponieważ w .sid nie ma o tym żadnej informacji, no to nie wiadomo która to procedura.
2. Playa nie ma.
Akurat nad ostatnim wariantem jeszcze rozmyślam, ale u siebie zorganizowałem sobie całą infrastrukturę analizującą które liczniki są wykorzystane i przydzielającą im przerwania POKEYa i jak do tej pory metoda się sprawdzała. Możliwe, że trzeba będzie zastosować jednak inne rozwiązanie. Przechwytywane są też wektory przerwań CINV i NMINV.
Problemów jest mnóstwo od adresowania pośredniego, po samomodyfikujący się kod.
Dlatego niechętnie podchodzę do takich formatów bo to nie jest żaden format muzyczny, tylko wyzwanie polegające na przechytrzeniu programisty. Powinni tego zabronić :P
Edit: Liczniki są potraktowanie umownie - równie dobrze może to być przerwanie rastra.
xxl-u, a czy pójdą kawałki Martina Gallwaya pt. Arkanoid, Arkanoid (alternative drums), Game Over i Green Beret (wszystko jest w HVSC)?
Edit: literówka
Edit 2: W załączniku.
Nie znam się, więc się wypowiem :)
Playery SID są bardzo różne:
- taktowanie ze stałą częstotliwością (PAL, NTSC lub "prawie 60 Hz"),
- taktowane z dowolną częstotliwością liczników CIA1 lub CIA2 zliczającymi takty CPU,
- synchronizowane z dowolną linią rastra (spotkałem się zazwyczaj z jednym konkretnym rastrem, ale nie jest wykluczona synchronizacja z różnymi liniami),
Sample zwykle odpalane są na osobnym liczniku CIA2 (NMI) poza playerem (IRQ rastra albo CIA1).
Playery są zazwyczaj bardzo krótkie, bo SID robi sam wiele ficzerów typu ADSR, modulacje, kształty fal, filtrowanie. Zauważyłem, że zazwyczaj jest to kilka, kilkanaście linii rastra (raczej nie przekraczają 20) - imho znacznie mniej niż w przypadku playerów POKEYowych. Jakkolwiek wszystkie dane trzeba mu wsadzić ręcznie - nie ma programu jak ANTIC. Rejestrów jest więcej bo 25 (+2 do odczytu - dokumentacja mówi że mogą być wykorzystane do modulacji programowych, ale trzeba by popytać Komodorowców czy ktoś z tego korzysta).
Trochę im zazdroszczę łatwości generowania bogatego brzmieniowo dźwięku :)
Bo i projekt jest świetny :D Finalna wersja będzie piękna.
To samo dotyczy
więc
Czyli dzielenie X/65 też będzie działać ładnie (i pewnie da się to uogólnić tylko ja nieuk jestem).
Chciałem się podzielić pewnym spostrzeżeniem.
Nie odkryłem może niczego nowego, ale okazuje się że mając potrzebę wykonania takiego działania:
można z powodzeniem zastosować takie przybliżenie:
Mnie zaoszczędziło to iteracji z dzieleniem dzięki czemu działanie Y=X/63 wykonuje się nie dwie linie CPU, a około jednej.
Edit: Na końcu przydaje się round (uzupełniłem).
Edit 2: A jakby ktoś chciał kawałek kodu, oto:
lda value
sta div64l
lda #0
sta div64h
lda value+1
asl div64l
rol
rol div64h
asl div64l
rol
rol div64h
adc value
sta div64l
div64h = *+1
lda #
adc value+1
asl div64l
rol
asl div64l
adc #0
value to 16-bit wartość wejściowa, w .A jest 8-bit wynik. Przedtem kod wyglądał tak:
lda value
sta result
lda value+1
ldx #8
?div:
cmp #63
scc
sbc #63
rol result
rol
dex
bne ?div
result = *+1
lda #
Obydwa kawałki kodu dzielą jeszcze wynik przez 2 (taką akurat miałem potrzebę).
Problem nie polega na czyszczeniu ekranu (kanał #0), tylko na otwarciu kanału #6 do operacji graficznych, którego to kanału używa LOCATE. Jeśli chcesz zachować zawartość ekranu trzeba go jednak przepisać (wydaje mi się, że GRAPHICS 0+32 mimo, że powinno działać, to jednak nie działa :/).
LOCATE działa na ekranie otwartym przez GRAPHICS (kanał #6 CIO). BASIC świeżo po uruchomieniu nie ma otwartego trybu graficznego (!). Trzeba zrobić np. GRAPHICS 0 i będzie grało :D
Posługujesz się specjalnymi komendami SIO2SD w tym celu?
A jak obsługuje się katalogi z mnóstwem plików w FAT, skoro MyDOS pozwala mieć tylo 64?
To a może podam przykład oprogramowania istniejącego bez sprzętu :) Ostatnio robiłem taki player... :] Możesz sobie go nawet ściągnąć.
P.S. No dobra - sprzęt jest, ale u Wynalazcy :)
@pin: Nie uzależniaj zakupu dobrego hardwaru od tego czy JEST na niego soft. Soft to sobie można nawet samemu napisać w (do)wolnej chwili :) A produkcja hardwaru to jest sprawa znacznie poważniejsza i nie każdy może to samodzielnie zrobić.
Edit: Korzystaj póki jest.
Wy to chyba tej Amigi nie lubicie...
Dope... Doskonały soundtrack! Dzięki, bo kiedyś tego szukałem :)
Znalezione posty [ 1,776 do 1,800 z 2,996 ]
Forum oparte o: PunBB
Currently installed 7 official extensions. Copyright © 2003–2009 PunBB.
Wygenerowano w 0.096 sekund, wykonano 21 zapytań