26

(76 odpowiedzi, napisanych Programowanie - 8 bit)

jeśli szukasz efektywnego sposobu renderowania 3d na postawie tablicy Y i offsetów textur to mam dość szybki i skuteczny sposób, ostatnio mając wenę przepisałem prawie od nowa ceły engine z dema maze i po 2 miesiącach kodowania mam całkiem sensowne renderowanie poprawiając praktycznie wszystko

27

(140 odpowiedzi, napisanych Programowanie - 8 bit)

W odpowiedzi do Laoo
często zapisuję ułamki właśnie jako n/256 i zamiast dzielić mnożę przez n/256 ;) to ma zaletę że starszy bajt po mnożeniu stanowi wartość całkowitą a młodszy ułamek , w moim ECU zbudowanym na 65c816 mnożę x*y/100 - jako że jedna z wartości jest w % więc dla zwiększenia precyzji używam (u/256*x+y*x)/100 , potem resztę z mnożenia n/100 zamieniam na n/256.
Po przemnożeniu x*u/256 - starszy bajt jest wartością całkowitą , młodszy częścią ułamkową. Na podobnej zasadzie odtwarzam sample:

lda ulamekCnt
adc ulamek
sta ulamekCnt

lda pozycja_fali
adc step
sta pozycja_fali

28

(30 odpowiedzi, napisanych Sprzęt - 8bit)

Tak mi się przynajmniej wydaje bawiąc się prockami, raz używałem lini RDY do wstrzymywania procka na 1 cykl przy wolnym ADC ale to było przy 12Mhz

29

(30 odpowiedzi, napisanych Sprzęt - 8bit)

o ile pamiętam to RDY "mrozi" stan magistrali na czas wstrzymywania procka, przykładowo wykorzystuje się to do odczytu np pamięci o większym czasie dostępu gdzie wydłuża się czas o 1 cykl ale przy "zamrożonej" magistrali, wersja sally o ile pamiętam da się zatrzymać tylko w cyklu odczytu,jak dobrze pamiętam  HALT wstrzymuje procesor oraz odłącza go od magistrali dzięki czemu inny układ może działać jako DMA , przy RDY tego nie da się zrobić.
Prawdopodobnie przedmówcy mają rację że pewnie chodzi o odświeżanie pamięci , musiałbym popatrzyć na schemat atari

30

(13 odpowiedzi, napisanych Programowanie - 8 bit)

Reditus też był pakowany powerpackerem , tutaj jest moja procedurka dekompresji sprzed dobrych paru lat

W załączniku jest procedurka oraz ostatnia część dema Endless Dream na próbę spakowana pp do testów dekompresji.

Kompiluje sie to w mads

O ile dobrze pamiętam dane są zapisywane od końca do początku więc rozpakowywanie odbywa się od końca do początku rozpakowanych danych , tu chyba było uproszczenie że adres rozpakowanych danych musiał być od początku danej strony pamięci

31

(5 odpowiedzi, napisanych Bałagan)

podobna sytuacja jak z Tamagotchi była z pierwszym furby, który ma też 6502 ale okrojony z rejestru y albo x o ile dobrze pamiętam , w każdym razie faktycznie reverse engineering ryje banie ;) A tak nawiasem mówiąc to micronas stosował swoje chipy z 65c816 wewnątrz w zegarach grupy VAG ok 2001-2007 rok ;) Przykładowo poliftowy passat ma w zegarach firmy vdo kontroller microanasa, wiele modeli audi również

32

(5 odpowiedzi, napisanych Bałagan)

Nie wiem czy wiecie ale procesory 65c816 były jako jądro wykorzystywane do lat 2010 w samochodach ? Firma Micronas kupiła licencję na jądro od WDC i produkowała mikrokontrollery do sterowania przede wszystkim zegarami , oraz np Citroen ma coś podobnego w swoich modułach typu BSI (inteligentne skrzynki z bezpiecznikami) . Pochwalę się że udało mi się taki kontroller zbootować z zewnętrznego romu i uruchomić swój soft, taktowanie takich układów mogło być max 12Mhz ;) Wbudowany ram, timery, ADC 10 bitowy , uarty , can i inne bajery
Może ktoś ma inne informacje gdzie obecnie jeszcze można znaleźć procesory pamiętające Atari ?

33

(10 odpowiedzi, napisanych Software, Gry - 8bit)

jak dobrze pamiętam to Słoń niejaki Jumbo , napisał ten loader dla grubcia , tam z tego co pamiętam była przełączana prędkość transmisji w tych specyficznych blokach i loader sprawdzał czy się one znajdują , muszę poszukać bo gdzieś miałem kod źródłowy owego loadera bezpośrednio od Słonia ;)

Sprzedam niestety niesprawną płytę od ATARI 130 Xe , płyta uratowana od recyklingu , nie wstaje.
Cena jaka mnie interesuje to 40 zł

Zdjęcia mogę wysłać ale dopiero jak będę w domu po pracy

Kontakt 795 108 485 (wcześniej wysłać mi sms że w sprawie płyty) , swiety93@wp.pl
Lokalizacja: Tarnów

35

(30 odpowiedzi, napisanych Programowanie - 8 bit)

na innej częstotliwości taktowania procka nie będzie to grało prawidłowo przez sposób generowania pwm dla dolnych 4 bitów.

        ldx #optpulsex
        stx audf1
        lda #optpulsey
        sta audf3
        sta $d209
        stx audf3

najbardziej czasowo krytyczna jest pauza między resetem timerów pokeya (sta $d209) a przywróceniem obu generatorów na tą samą częstotliwość ale w tym czasie włączony filtr generuje odpowiednie pw między falami o różnej częstotliwości.

To powoduje że na szybszym procesorze wpis następuje szybciej i pw jest generowane błędnie a do prawidłowego odtwarzania PDM musi wynosić 1/16 co jest później modulowane amplitudowo.

Problem da się rozwiązać na 2 sposoby - pierwszy oscyloskop i strojenie optpulsex i optpulsey dla rapisusa, drugi podobnie ale odpowiednią liczbą cykli pomiedzy sta $d209 a stx audf3 np kilkoma nop -ami

36

(30 odpowiedzi, napisanych Programowanie - 8 bit)

Na razie nie robiłem żadnych testów co do turbo, coprawda pod emulatorem przy włączeniu szybszego procesora udało się odtwarzać na 16khz, przy 50 khz trzeba będzie dodać 16 bitową obsługę dzielnika częstotliwości przy aktualizacji sampla co nie bedzie myslę problemem.
Natomiast w obecnej wersji poprawiłem portamento bo był błąd w kodzie , rozpętliłem odtwarzacz żeby udało się dodać oscyloskop oraz skróciłem tablice częstotliwości , generalnie to będzie się docelowo generowało automatycznie.
Wrzucam kilka utworków gdzie słychac portamento.

37

(30 odpowiedzi, napisanych Programowanie - 8 bit)

jedynie zostaje mi jeden kanał C1+C3 na 1.79 z filtrem bo na kanalce C2 mam zegar taktujący przerwanie IRQ dla playera - w tym przypadku zegar bazowy 15khz /2

Będe orał temat

38

(30 odpowiedzi, napisanych Programowanie - 8 bit)

dajcie jakiegoś linka do dokumetacji np rapidusa - bo rozumiem że dla tej kary chcielibyście specjalną wersję :)
Sam nie mam tego w swoim atari a że chwilę już wypadłem z obiegu więc nie do końca wiem jak działa to wszystko , z tego co widzę altira emuluje rapidusa więc jak będę wiedział jak mogę spróbować zrobić wersję dla 20mhz

39

(30 odpowiedzi, napisanych Programowanie - 8 bit)

Może nie za dobry ale chciałbym go gdzieś wykorzystać , ale po tym co zaprezetowałem tutaj cięzko będzie zrobić jakieś WOW :P W załączniku wrzucam kolejne kawałki z TOKI , dorobiłem mały equalizerek żeby się nie nudziło słuchanie

40

(30 odpowiedzi, napisanych Programowanie - 8 bit)

ogólnie to najlepszym rozwiązaniem odnośnie edytora byłoby połączenie komend z future composera z pumatrackerem i zrobienie edytora na którym dałoby się tworzyć tego typu utworki :)

XXL drugi playerek to future composer ale docelowo chciałbym wykorzystać go w jakimś interku ;)

41

(30 odpowiedzi, napisanych Programowanie - 8 bit)

w zasadzie tak , pierwszy powstał playerek do futurecomposera 1.4 ;), pumatracker bazuje nieznacznie na nim. Ogólnie używa fal z fc1.3 oraz podobnego zapisu songu typu 32 wierszowe patterny, songpozycja - pattern plus 2 transpozycje - instrumentu i nuty , rożnice są w zapisie patternów oraz całkiem innej filozofii opisu instrumentów ale koncepcja jest podobna - 2 tablice - jedna do obsługi głośności oraz numeru próbek , druga do modulacji częstotliwości ( zmiana nuty bądź samej częstotliwości).

Za to dużo miałem rozkminiania samego sposobu działania playera z amigi , zwłaszcza że sam kod playera jest jakąś deasmblacją oryginanego kodu bez żadnego opisu zmiennych ... Tak że część było podglądnięte z amigowego playera , część była napisana od początku na bazie szczątkowej instrukcji samego pumatrackera ...

Zostając wezwany do tablicy przez Tebe podzielę się swoją twórczością, której poświęciłem sporo godzin na zakodowanie tego.
Z racji że mam wenę na retro więc powstało takie coś - playerek grający na 4 kanałach softsyntch wraz z nieco trikowym odtwarzaniem sampli - od strony technicznej 4 kanały grające na 8 khz z oversamplingiem na 16khz ( w zasadzie co 2 miksowane kanały jest wpis do DACa ) , od strony technicznej jest to player formatu PumaTracker - mam nadzieję że każdy słuchając będzie wiedział skąd te utwory pochodzą , ja zawsze chciałem usłyszeć kawałek nr 7 na Atari i mam nadzieję że nie tylko mi to sprawi radość :)
Trochę nieskromnie powiem że jest to chyba najładniej grająca procedurka tego typu na małe Atari.
Podpowiem to jest prezentacja pierwszego z 2 playerków ;)

W załączniku pliki obx (atarowe comy)

43

(140 odpowiedzi, napisanych Programowanie - 8 bit)

do tego może byc długa droga ale jeśli będzie trochę samozaparcia to kto wie ;) Na razie mam napisane 2 playerki typu softsynth grające w trybie PDM ( 8 bitowy sampel) na 4 kanałach syntch plus sample .

Wracając do demo efektów jeszcze:

Uzupełnienie odnośnie kefrens barów , bo o ile algorytm był przedsawiony poprawny o tyle realizuje się to nieco inaczej.

Bufor ekranu ustawiamy najlepiej na stronie zerowej i display listą rozciągamy go na maxa na tym samym adresie co linię.
Zanim ekran zacznie byc rysowany kasujemy bufor na stronie zerowej , następnie czekamy na rozpoczęcie rysowania obrazu i co 1 bądź 2 linie dorysowujemy kolejnego bara w buforze ekranu - wiec w kolejnej rysowanej linii mamy bara z góry w dól , w następnej lini już 2 , w kolejnej 3 itp i tak do dołu ekranu - wyrabiamy się spokojnie w ramce

mam rockwell r6507p jak coś , reszta na priv :)

45

(140 odpowiedzi, napisanych Programowanie - 8 bit)

tak przy okazji że się pojawiłem bo znowu mnie wena nabrała na małe atari , jest fajny sposób na szybkie czytanie tablicy np:

lda table,x
inx

zakładając że tablica nie leży na stronie zerowej , najprostszą rzeczą jaką można wykminić to:

umieszczamy tablicę na pozycji 0 na stosie czyli  - table equ $100

po czym ustawiamy wskaźnik stosu na 0

ldx #0
txs

wtedy każdy rozkaz PLA oczytuje nam wartość tablicy , jednocześnie zwiększając wskaźnik stosu o 1 :) przy czym nie rusza nam to rejestrów x i y a wskaźnik stosu określa element tablicy

Podobnie buforowanie X na wskaźniku stosu rozkazem TXS i TSX mogłoby w pewnych sytuacjach przyśpieszyć kod ale kosztem szybkiego czytania tablic na stosie :)

Oczywiście ograniczeniami są przerwania i tego typu kod może być użyty do efektów np wyrabiających się między kolejnymi przerwaniami i aktualizującymi wskaźnik stosu oraz jego zawartość bądź buforując kawałek stosu gdzieś indziej.
Teoretycznie przy małej liczbie skoków i przerwań na sam stos wystarczy zostawić kilka bajtów a odtwarzać jedynie znacznik stosu

muszę popatrzyć w swoich zapasach ale powinienem mieć 6507 :) jeśli dalej potrzebujesz oczywiście

47

(6 odpowiedzi, napisanych Kupię / Sprzedam / Zamienię Atari)

Fiat "hybryda z kilku silników" w polonezie - https://www.youtube.com/watch?v=A1qeei1JbGU ;) takie coś zbudowałem

48

(6 odpowiedzi, napisanych Kupię / Sprzedam / Zamienię Atari)

EFI , chcę mieć dokładny zapłon do 8500 obrotow dzieki szybkim układom i przy okazji wrócić do korzeni ;) obecnie mi to juz działa na protezie na 8 mhz

Procesor jak w temacie wersja przynajmniej 8mhz, najlepiej 14mhz w obudowie dip40 ,mogę się wymienić na wersję 4mhz i dopłatę ew na jakieś inne układy - ay, sidy z c64 itp

Kontakt pw, swiety93@wp.pl, tel 795 108 485

spoko , to jak się dogadujemy ? na pewno muszę sprawdzić ile wyjdzie przesyłka ale pewnie ok 12-17 zł