1

Dzieki @rj1307

256KB ROM
2x16KB RAM
SN76489AN + Covox
FlipX dla sprajtow
Dostep do 256KB dla Marii niezaleznie w trzech bankach ($Axxx,$Cxxx,$Exxx) Holey DMA
Konop mode "sprzetowo" :)

Dzieki dla Mikera za muze
Na razie Miker uzywa Furnace zeby polaczyc dwa systemy w jeden.
Prawdopodobnie stad to "pykanie" na poczatku. Inne kawalki SN graja dobrze.

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

2 Ostatnio edytowany przez Cyprian (2022-05-15 16:58:47)

fajna sprawa,
pytanie o układ dźwiękowy, czemu akurat ten a nie np. montowany w innych kartach 7800 - YM2151 albo równie popularny AY/YM?

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

3

Cena, dostepnosc i szybkosc. (max 8 danych na ramke, srednio chyba 3)
YM2151 jest naprawde super, kawalki ktore przerobilem na A7800 pod Dragonfly byly fantastyczne.
Niestety czasowo nie wyrabiaja. Ciezko sie czasem zmiescic w ramce z przepisaniem danych dla instrumentow.
Musisz czekac 35 cykli CPU przed zapisanie nastepnej wartosci, a czasem jest to 500 bajtow danych.
Przy zachlannosci DMA Marii nie ma szans sie wyrobic w ramce.

4 Ostatnio edytowany przez Cyprian (2022-05-15 23:42:11)

to mnie zaskoczyłeś, jakoś nie jeszcze nie przyglądałem się programowaniu YM2151, wiem że ma spore możliwości no ale te 35 cykli brzmi źle.

Może istnieje coś pośredniego pomiędzy prostotą SN76489AN a jakością YM2151.

A jak z ceną za te układy? jest podobna?

Swoja drogą to czy te 500 bajtów danych na ramkę jest dla jakichś wypasionych piosenek (8 kanałów, mnóstwo zmian)?

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

5

Martwiące jest te robienie niekompatybilnych rozszerzeń. Gra napisana na Dragonfly niekonieczenie musi pójść na tym i vice-versa. Ale jakby nie był kosmicznie drogi to można mieć i to i to :) A SN76489 jest fajny. Mogłyby być nawet dwa, dla stereo (np. w Neo Geo Pocket są dwa).

No i mi to się marzy taki cartridge, który sprawiłby, żeby CPU nie musiał mozolnie przetwarzać tych displaylist. Jakiś np dedykowany procesor od tego jak w Jaguarze. Chodzi mi o to, że MARIA nie działa tak bardzo wyjątkowo. Normalną sprawą w konsolach z lat 80-tych było to, że była jedna linia i sprajty się w nią wrenderowywały. Unikatem jest tylko to, że Atari postawiło na bardzo niskopoziomowy dostęp na zasadzie listy wyświetlania, którą trzeba manipulować na CPU, podczas gdy inni gracze na rynku (NES, SMS, PCE itd) poszli bardziej w stronę ukrycia tego przed programistą i dają tylko listę powiedzmy 64 sprajtów i krzem sam pracowicie ją przegląda emulując sobie takie display listy w locie. Maria jest bardzo silna, tylko jest chronicznie niewystarczająco "umocowiona", żeby miała co rysować.

6

SN76489 jest ok, ale AY/YM jednak są lepsze gdyż mają obwiednię :)

Object Processor Jaguara ma dużo wspólnego z Display List Marii, przypuszczam nawet że OP był wzorowany na niej.
Efekt w Jagu jest taki, że jeśli mamy dużo sprajtów to trzeba stosować technikę z 7800 i dzielić sprajty na wiersze (branchami). Inaczej jest ryzyko że OP całą linię skaningową będzie czytać swoją Display Listę i nie dopuści CPU/GPU do pamięci.

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

7

trochę zwariowany pomysł,
a co jakby zamiast gotowego czipu dźwiękowego użyć ATTiny85 z 'Tiny Synth' https://github.com/JarrettBillingsley/tinysynth

Tanie, programowalne, no i spore możliwości dźwiękowe

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

8 Ostatnio edytowany przez Eagle (2022-05-18 21:55:46)

Cyprian napisał/a:

to mnie zaskoczyłeś, jakoś nie jeszcze nie przyglądałem się programowaniu YM2151, wiem że ma spore możliwości no ale te 35 cykli brzmi źle.

Dla SN zajmuje to 32 cykle ale nie musisz zapisywac az tyle danych.
Edit: 16 cykli 6502

Cyprian napisał/a:

Może istnieje coś pośredniego pomiędzy prostotą SN76489AN a jakością YM2151.

Rozwazalem jeszcze SAA1099 ale malo dostepny i drogi.
SN kupilem za 0.50$ przy 50szt.

Cyprian napisał/a:

Swoja drogą to czy te 500 bajtów danych na ramkę jest dla jakichś wypasionych piosenek (8 kanałów, mnóstwo zmian)?

@RevEng poszedl ze swoim XMYM playerem w kierunku 8 kanalow 8 instrumentow (1 instrument na jeden kanal).
Player zaladowuje je na poczatku a potem tylko odgrywa muzyke, jest szybki ale muzyk sobie nie poszaleje.
https://github.com/7800-devtools/dmf2asm/releases
Ja uzywamlem formatu VGM ale niektore maja ponad 120KB
Zastosowalem wiec kompresje Huffmunchem i zmienilem format VGM na swoj wlasny, player dekompresuje w tle dane do bufora a potem sa odtwarzane na DLI
Ponizej przyklad ile zajmuje czasu na przerwaniu jeden z utworow. Kompresja Huffmunchem 107KB => 12KB
https://raz0red.github.io/js7800/?cart= … ?id=896463

laoo/ng napisał/a:

Martwiące jest te robienie niekompatybilnych rozszerzeń. Gra napisana na Dragonfly niekonieczenie musi pójść na tym i vice-versa.

Dragonfly uruchamia carty ktore byly wydane oficjalnie.
Nie uruchomi Super'a czy tez nowego Carta od RevEng'a ktore uzywaja lini Halt
http://7800.8bitdev.org/index.php/Bankset_Bankswitching

laoo/ng napisał/a:

Ale jakby nie był kosmicznie drogi to można mieć i to i to :)

To nie bedzie SD cart. Ale bedzie sobie mozna go zrobic samemu.

laoo/ng napisał/a:

A SN76489 jest fajny. Mogłyby być nawet dwa, dla stereo (np. w Neo Geo Pocket są dwa).

A7800 ma tylko jedna linie audio na carcie, wiec stereo odpada.

SN76489AN rozni sie od tego ktory jest w SegaMaster System czy Mega Drive
Obecne trackery (Deflemask czy Furnace) nie obsluguja tej wersji chipa.
Miker musial sie nagimnastykowac zeby 3 i 4 kanal (polaczony w jeden) nie falszowal.
Kanaly sie laczy gdy chcemy uzyskac lepszy bass
Dlatego tez dolozylismy Covoxa (bo czemu nie), jest tez sporo miejsca w rom wiec jak ktos go nie zapelni to moze dopchac sampli.

Szczesliwie sie sklada ze Maria czyta dane co strone pamieci wiec ficzery jak obracanie sprajtow czy tryb Konopa byly dosyc proste do zrobienie poprzez manipulacje bitami adresow i danych.
Najistotniejsze dla mnie bylo zrobienie 4KB bankow dla Marii pod adresami $Axxx $Cxxx i $Exxx
Gdy chcesz przesuwac sprajty w pionie to musisz uzyc Holey DMA, ktore dziala tylko dla tych adresow w trybie 16 lini zone.
Przelaczenie banku 16KB ($8000-$BFFF) po to zeby przelaczyc tylko $Axxx bylo dla mnie bez sensu.
Mocno sie zdziwilem gdy przeczytalem na AAge ze ludzie powielaja ten sam kod programu w adresach $8xxx $9xxx $Bxxx dla KAZDEGO banku ;(
Stare carty nie przelaczaja banku $C000-$FFFF wiec nie zmienisz grafiki ktora znajduje sie w $Cxxx i $Exxx

9

Eagle napisał/a:

A7800 ma tylko jedna linie audio na carcie, wiec stereo odpada.

Niekoniecznie - można zrobić wyjście audio na carcie ;) Wiem, gra niewarta świeczki, ale?

Sikor umarł...

10 Ostatnio edytowany przez Cyprian (2022-05-19 12:46:41)

Eagle napisał/a:
Cyprian napisał/a:

Może istnieje coś pośredniego pomiędzy prostotą SN76489AN a jakością YM2151.

Rozwazalem jeszcze SAA1099 ale malo dostepny i drogi.
SN kupilem za 0.50$ przy 50szt.

no tak, cena robi wrażenie,
z tym że myślę że nawet 10PLN za układ dźwiękowy jest akceptowalną ceną, pod warunkiem że ma dobre parametry typu ilość kanałów dźwiękowych, różne fale, obwiednia no i szybki czas dostępu

Eagle napisał/a:
Cyprian napisał/a:

Swoja drogą to czy te 500 bajtów danych na ramkę jest dla jakichś wypasionych piosenek (8 kanałów, mnóstwo zmian)?

@RevEng poszedl ze swoim XMYM playerem w kierunku 8 kanalow 8 instrumentow (1 instrument na jeden kanal).
Player zaladowuje je na poczatku a potem tylko odgrywa muzyke, jest szybki ale muzyk sobie nie poszaleje.
https://github.com/7800-devtools/dmf2asm/releases
Ja uzywamlem formatu VGM ale niektore maja ponad 120KB
Zastosowalem wiec kompresje Huffmunchem i zmienilem format VGM na swoj wlasny, player dekompresuje w tle dane do bufora a potem sa odtwarzane na DLI
Ponizej przyklad ile zajmuje czasu na przerwaniu jeden z utworow. Kompresja Huffmunchem 107KB => 12KB
https://raz0red.github.io/js7800/?cart= … ?id=896463

źle to nie wygląda, dodatkowo gra tam sporo kanałów.
Widzę że nie wszystkie ramki są równomiernie obciążone (wykres sporo skacze), myślę że jest tu pole do optymalizacji (np. granie nieparzystych kanałów opóźnionych o jedną ramkę w stosunku do parzystych)

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

11

Cyprian napisał/a:

źle to nie wygląda, dodatkowo gra tam sporo kanałów.

Widzisz tylko to co gra na DLI ale w tle CPU dekompresuje na biezaco.
Tutaj ten sam utwor depackowany w "locie" na DLI

https://raz0red.github.io/js7800/?cart= … ?id=895889

BTW wlaczenie ekranu np. w trybie znakowym 160B zabraloby 90% cykli CPU :)

12

ok, teraz widać że sporo zabiera

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

13

@Cyprian kojarzysz ten utwor z YM2149F? Znalazlem na Pigwie w katalogu demos.
Nazywa sie Stephani.

https://www.youtube.com/watch?v=7EhWIecU03o

14 Ostatnio edytowany przez Cyprian (2022-05-23 17:35:10)

Fajnie to brzmi. Szczerze mówiąc nie kojarzę, chociaż początek brzmi znajomo.

Swoją drogą jak wygląda organizacja pamięci w tym karcie?

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

15 Ostatnio edytowany przez Eagle (2022-05-26 21:05:36)

Ciezko powiedziec bo ROM sie wlasnie podwoil i doszedl jeszcze jeden dostep do bankow pod $Dxxx
Zastanawiam sie nad dolozeniem FlipY dla sprajtow dla banku $Cxxx
Dotarlo tez do mnie ze moglbym dolozyc HoleyDMA dla nizszych adresow :) musze to jeszcze przemyslec

Cybernoid II

https://www.youtube.com/watch?v=0Nn_8Rvj2pk

Lotus

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

16 Ostatnio edytowany przez Cyprian (2022-05-26 23:06:11)

fajne kowery - klasyki.

dokładaj Holey i odwrócone sprajty no i najważniejsze - teraz trzeba dodać wsparcie Twojego Carta do emulatora 7800 ProSystem / BupSystem i js7800

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

17

Dokumentacja udostepniona przez Rafala (PCB,CPLD i testowe romy z muza i nie tylko)
https://megawrzuta.pl/download/d5e33b8e … 60355.html

Cart dotarl do mnie dzisiaj wiec czas na testy :D


*****ROM*************************************************************

Obszar adresowy kartridża 32kB został podzielony na 8 banków po 4kB każdy (banki 0-7). Cztery z nich są stałe, cztery zmienne. Zajmują one początkowy obszar pamięci EPROM.
Pozostała część pamięci EPROM 512kB także jest podzielona na banki po 4kB (banki 8-127).

Banki: 2-$Axxx, 4-$Cxxx, 6-$Exxx (będę je nazywał bankami A,C i E) mogą być niezależnie zmieniane w zakresie banku 0-63, czyli 256kB. Aby zmienić bank, należy zapisać jego numer do adresu początkowego banku.
Przykład: zapis $1F pod adres $A000 spowoduje, że bank A zostanie zastąpiony bankiem 31. Od tej chwili każde odwołanie się do adresu $Axxx spowoduje odczyt danych z banku 31.
Banki A,C i E mogą być ustawione tak, by odczyt danych był zamieniony kolejnością. Sterują tym ostatnie dwa bity danych, służących do zmiany banku (D6-D7).


00 - normalny odczyt  - D=76543210
01 - tryb 160A  -  D=10325476
10 - tryb 160B  -  D=54761032
11 - tryb 320B & 320D  -  D=01234567

Wybranie trybu 01,10 i 11 powoduje także to, że bank jest czytany od tyłu (zanegowane są linie adresowe A0-A7).


Bank 5-$Dxxx (bank D) może być niezależnie zmieniany w zakresie banku 0-127, czyli 512kB. Nie ma możliwości zmiany kolejności odczytu danych. 
Użycie pamięci EPROM 256kB zamiast 512kB spododuje, że bank D będzie mógł być zmieniany w zakresie banku 0-63.

------------------------------------------------------------

The 32kB cartridge address area was divided into 8 banks of 4kB each (banks 0-7). Four of them are constant, four are variable. They occupy the initial area of the EPROM memory.
The rest of the 512kB EPROM memory is also divided into 4kB banks (banks 8-127).

Banks: 2- $Axxx, 4- $Cxxx, 6- $Exxx (I will call them banks A, C and E) can be independently changed within the 0-63 bank, that is 256kB. To change the bank, write its number down to the starting address of the bank.
Example: writing $1F to the address $A000 will cause bank A to be replaced with bank 31. From now on, any reference to the address $Axxx will read the data from bank 31.
Banks A, C and E can be set to reverse the reading of data. This is controlled by the last two bits of the bank change data (D6-D7).


00 - normal reading - D = 76543210
01 - 160A mode - D = 10325476
10 - 160B mode - D = 54761032
11 - 320B & 320D mode - D = 01234567

Selecting the 01, 10 and 11 modes also causes that the bank is read from the back (the A0-A7 address lines are negated).


Bank 5- $Dxxx (bank D) can be independently changed in the range of bank 0-127, that is 512kB. It is not possible to change the data reading order.
Using 256kB EPROM instead of 512kB will cause bank D to be changed in the range of banks 0-63.


*****RAM************************************************************

Kartridż oferuje 2 banki RAM po 16kB każdy, z możliwością odłaczenia linii A8 i A9 (tzw. EXRAM/A8 i EXRAM/A9).
RAM jest dostępny pod adresem $4000-$7FFF.
Sterowanie RAM jest możliwe przez zapis pod adres $FFFF.

D0- bankswitch RAM
D1- EXRAM/A8
D2- EXRAM/A9


D0=0 - pierwszy bank 16k
D0=1 - drugi bank 16k
D1,D2=0 - RAM działa normalnie
D1=1 - zablokowana linia A8 (stan 0)
D2=1 - zablokowana linia A9 (stan 0)
D1,D2=1 - zablokowane linie A8 i A9 (stany 0)

Raz ustawiony tryb RAM będzie aktywny do momentu ponownego ustawienia w $FFFF

-------------------------------------------------------------

The cartridge offers 2 banks of RAM, 16kB each, with the possibility of disconnecting the A8 and A9 lines (so-called EXRAM/A8 and EXRAM/A9).
RAM is available at $4000-$7FFF.
RAM control is possible by writing to the address $FFFF.

D0- bankswitch RAM
D1- EXRAM / A8
D2- EXRAM / A9


D0 = 0 - the first 16k bank
D0 = 1 - the second 16k bank
D1, D2 = 0 - RAM is working normally
D1 = 1 - line A8 bypassed (state 0)
D2 = 1 - line A9 bypassed (state 0)
D1, D2 = 1 - lines A8 and A9 are bypassed (states 0)

Once set, the RAM mode will be active until set to $FFFF again


*****COVOX*************************************************************

Kartridż oferuje 1 kanał Covox sterowany adresem $0430.
--------------------------------------------------------------
The cartridge offers 1 Covox channel controlled by the address $0430.


*****SN76489AN********************************************************

Kartridż może generować dźwięk z układu SN76489AN sterowany adresem $043F.
Ze względu na specyfikę układu SN, który generuje przypadkowy dźwięk zaraz po załaczeniu zasilania, wyjście audio z tego układu jest odłączone poprzez klucz elektroniczny. Jego załączenie następuje automatycznie po pierwszym odwołaniu się do adresu $043F. Wyciszenie układu musi być kontrolowane przez programistę.
-----------------------------------------------------------------
The cartridge can generate sound from the SN76489AN chip driven by the address $043F.
Due to the specificity of the SV chip, which generates an incidental sound right after switching the power on, the audio output from this chip is disconnected by an electronic key. It is turned on automatically after the address $043F is referenced for the first time. Muting the chip must be controlled by the developer.

BTW Poprawilem maly blad w oznaczeniu banku 6 zamiast D powinno byc E