█ slanina

Please select a section:
Reverse engineering of the Seta ST-0016 chip (translation from .pl to .en pending)



    SETA    ST-0016

INTRODUCTION
GENERAL INFOS
GAMES
CPU CORE
MEMORY MAP
GRAPHICS
AUDIO
CONTROL REGISTERS
M.A.C.S.



INTRODUCTION

All informations here are based only on guessing, reverse engineering and analysis of the game roms. There's no public documentation of the ST-0016 Integrated Circuit available.
So, the documentation is probably in many places wrong and is missing some key elements. The research of the audio part was done by RB andHaze. The rest is my own work with help from other MAME developers.

GENERAL INFOS

ST-0016 is a SOC - Z-80 8 bit CPU core + i/o, graphics and sound hardware in one. It was designed/created by japanese company Seta (Super Entertainment and Toatal Amusement) probably around 1993 (the earliest made chip we found is dated for 48th week of 1993 (9348YAA).
ST-0016 is 208 pin PQFPn( Plastic Quad Flat-Pack) device, probably a Toshiba Gate Array (market as TC6187AF or TC6210AF).

GAMES

ST-0016 is used in few arcad games. Here's an incomplete list:

- Renju Kizoku (c) 1994 Visco


Go-moku. ST-0016 is the main and only device here.

- Mayjinsen (c) 1994 Seta


Shogi. ST-0016 is the main device here. There's also second RISC CPU - NEC V810 - used for computing opponent's AI.

- Mayjinsen 2 (c) 1994 Seta


Shogi, sequel to the Mayjinsen.

- Super Eagle Shot (c) 1994 Seta


Golf game. ST-0016 is the sub cpu - used only for sound and (partial) gfx. Main CPU is MIPS R3000 compatible one, made by IDT.

- Super Real Mahjong Part V (c) 199? Seta


Mahjong. Main cpu is IDT MIPS R3000, ST-0016 is used for sound & gfx

- Neratte Chu (c) 1996 Seta


Puzzle/logic game. Similar hardware to Renju Kizoku - ST-0016 is the main and only device here.

- M.A.C.S. - W chwili obecnej znane sa nastepuajce gry dzialajace pod tym systemem:

- Kisekae Mahjong (c) 1995 I'Max


Mahjong - prawdopodobnie grywalne. Wiecej o grze tutaj.

- Kisekae Hanafuda (c) 1995 I'Max


Hanafuda - prawdopodobnie grywalne.

- Seimei-Kantei-Meimei-Ki Cult Name (c) 1996 I'Max


Prawdopodobnie fortune teller/biorytm/htw.
Niegrywalne - problemy ze sterowaniem. Uzywa drukarki. Wykorzystuje oba sloty cartow na plycie.

- Yu-Ka (c) 1999 Yubis / T.System


Hanafuda. Prawdopodobnie grywalne.

- Yu-Jan(c) 1999 Yubis / T.System


Mahjong. Prawdopodobnie grywalny.

CPU CORE

ST-0016 has a Z80 comptible cpu core. Sercem ukladu ST-0016 jest rdzen procesora kompatybilny z popularnym osmiobitowym Zilogiem Z80. Nie udalo sie jak dotad znalezc zadnych roznic czy ulepszen. Szczegolowa dokumentacja dostepna jest na stronie producenta. Procesor dziala w pierwszym trybie przerwan (obsluga pod adresem $38). Kilka tytulow wykorzystuje rowniez przerwanie niemaskowalne z obsluga pod $66. Zrodla obu przerwan nie sa znane. INT zsynchronizowane jest prawdopodbnie z wygaszaniem pionowym (VBLANK = 60 Hz), natomiast NMI jest wyzwalane albo sygnalem zewnetrznym, albo jest efektem dzialania potencjalnych timerow (doswiadczalnie dobrano czestotliwosc NMI jako 15 Hz). O ile blokada INT odbywa sie za pomoca standardowych instrukcji Z80 (di/ei), o tyle sposob sterowania NMI (co najmniej jedna gra wymaga blokady tego przerwania) jest nieznany.

MAPA PAMIECI

Uklad ST-0016 bazuje na procesorze Z80 potrafiacym zaadresowac maksymalnie 64 KB pamieci.
Jednakze uzytkownik ma dostep do znacznie wiekszej jej ilosci. W podstawowej wersji mamy
nastepujace bloki RAM:
- 2 MB pamieci okreslanej jako Character RAM, wykorzystywanej do przechowywania grafiki (characters) oraz probek dzwieku (sampli),
- 2 KB Palette RAM - przechowuje informacje o kolorach,
- 64 KB Sprite RAM zawiera listy sprajtow,
- 128 B Common RAM + 2 KB RAM + 4 KB WORK RAM,

Wyzej wymienione wartosci sa prawdopodobnie tylko maxymalnymi obslugiwanymi przez sprzet. Czesc pamieci (prawdopodobnie CHARACTER RAM, WORK RAM i SPRITE RAM) znajduje sie poza ukladem ST-0016 w osobnych "kosciach". Oprocz RAM, na plycie znajduje sie rowniez pokazna ilosc pamieci ROM. Ile - to juz zalezy od konkretnej gry. Przykladowo Nerrate Chu korzysta z 1.5 MB ROM a Srmp5 - z 20 MB. By umozliwic dostep do wszystkich obszarow pamieci, zastosowano jej podzial na bloki (banki) o stalym rozmiarze oraz "okna" w obszarze adresowym cpu, przez ktore "widoczne" sa poszczegolne obszary ROM lub RAM. Zilustrowane to jest na ponizszym rysunku:



Wyboru banku(bloku) pamieci widocznego w odpowiednim oknie dokonujemy przez zapis jego numeru do odpowiedniego rejestru ST-0016 (dokladniej zostalo to opisane w sekcji traktujacej o rejestrach). Jedynie pierwsze 32KB sa na stale przypisane do zerowego banku ROM.


REJESTRY STERUJACE

W ukladzie seta rejestry sprzetowe zostaly zamapowane w przestrzeni I/O procesora Z80.
Mozna podzielic je na kilka grup (adresy zostaly pogrubione) :

- Rejestry video/timera ($00 - $01)
 Zawieraja prawdopodobnie numer aktualnie wyswietlanej linii obrazu i/lub parametry timerow.
 Kilka gier czeka na pojawienie sie konkretnych wartosci w powyzszych rejestrach.

- Rejestry tilemap ($08 - $40)
 Siedem (lub osiem, mozliwe ze rejestry 00 - 07 sa rowniez wykorzystywane) zestawow po 8
 rejestrow, dotyczacych 7 (lub 8) tilemap. Znaczenie poszczeg?lnych rejestr?w jest niestety
 niejasne, ale wystarczajace do prawidlowej emulacji:
   0 - ??? (zwykle $00/$20/$ba)
   1 - adres tilemapy w Character Ram /$1000 (przykladowo 3 -> tilemapa pod adresem $3000)
       (0 = brak tilemapy)
   2 - ??? (zwykle $ff/$1f/$af)
   3 - priorytet tilemapy w stosunku do sprajtow (0 - pod, $ff - nad)
   4 - ??? (zwykle &7f/&ff)
   5 - ??? (mozliwy zwiazek z priorytetem(rejestrem nr 3 - zwykle $20 lub $29 (gdy rejestr 3 = $ff))
   6 - ??? (zwykle 0)
   7 - ??? (zwykle $20/$10/$12)

- Rejestry przesuniecia (scroll) ($40 - $60)
 Kazda lista sprajtow moze byc dodatkowa sprzezona z para rejestrow przesuwajacych
 wszystkie jej elementy na ekranie o zadana ilosc pixeli. Dostepnych jest 16 niezaleznych
 par (dla wsp. X i Y) rejestrow. Przesuniecie jest liczba 16 bitowa ze znakiem i zajmuje dwa
 kolejne rejestry. Przykladowo piewsza para zamapowana jest pod adresami
 $40,$41 dla X i$42,$43 dla Y.

- Rejestry DMA ($a0 - $a8 oraz $f0)
 ST-0016 posiada zaintegrowany kontroler DMA umozliwiajacy szybkie przesylanie danych
 do Character RAM bez wykorzystania procesora.


 Po zaladowaniu odpowiednich rejestrow parametrami transferu, ustawienie bitu 5 w $a8
 inicjuje przesyl danych. Gdy kopiowanie zostanie zakonczone, bity 0 i 1 w rejestrze
 $f0 zostaja wyzerowane.

- Rejestry sterujace pamiecia ($e0 - $e6)
 $e1 - bank ROM : 00-$ff
 $e2 - bank Sprite RAM : starszy nibble - BANK 1, mlodszy nibble - BANK 2
 $e3 - $e4 - bank Character RAM : 0-$ffff
 $e5 - bank Palette RAM : 0-$ffff
 Przeznaczenie rejestrow $e0 i $e6 nie jest znane. $e0 jest czesto uzywany - przykladowo
 Renju zapisuje tam wartosc $40 a Neratte - $0.

- Watchdog ($e7)
 Niestety, nie wiadomo jak czesto watchdog musi byc resetowany by zapewnic poprawna
 prace ukladu.

- I/O ($c0 - $df)
 Linie i/o sa wyprowadzone na zewnatrz ukladu ST-0016 i sluza do komunikacjiz pozostalymi
 ukladami. Ich przeznaczenie zalezy od konkretnej implementacji. I tak, w Renju/Nerrate porty
 $c0-$c3 wykorzystane zostaly do odczytu ustswien gry (DSW) i sterowania. W grach
 korzystajacych z procesora V810 porty $c0-$c3 sa zarezerwowane do komunikacji z tym ukladem,
 natomiast $d0-$d3 pelnia podobna funkcje jak $c0-$c3 w Renju.
 System M.A.C.S. wykorzystuje zakres $c0-$c7 do odczytu klawiatury i komunikacji z dodatkowymi
 peryferiami typu drukarka czy hopper.


GRAFIKA

Podstawowym elementem z ktorego budowana jest grafika w ST-0016 jest tzw. tile (character), czyli kwadratowy element graficzny o wymiarach 8x8 szestastokolorowych pixeli. Kazdy tile zajmuje dokladnie 32 bajty pamieci (8*8*4 bity (do okreslenia 16 kolorow)) - stad rozmiar okna CHARACTER RAM rowny 32 bajtom. Do dyspozycji mamy 1024 kolory (R:5,G:5,B:5) pogrupowane w 64 palety o 16 kolorach kazda. (indeks zerowy palety wskazuje na pixel przezroczysty). Kazdy tile (zarowno czesc sprite czy cell z character map) moze uzywac dowolnej (jednej z 64) palety kolorow. Dodatkowo istnieje mozliwosc uzycia w jednym tile 256 kolorow. Ustawiajac odpowiedni bit umozliwamy sumowanie kolorow aktualnego tile i koloru tla (otrzymujac wartosc 4+4 = 8 bit).



Grafika tworzona przez uklad Seta bazuje na osmiu tilemapach i sporej liczbie sprajtow.

Parametry map ustawiane sa poprzez rejestry $00-$40 ukladu (kazda wykorzystuje 8). Ich znaczenie zostalo dokladniej opisane w sekcji o rejestrach. Tilemapy zapisane sa w SPRITE RAM - kolumna (o wysokosci 32 cells - prawdopodobnie istnieje mozliowsc ustawienia rozmiaru) po kolumnie. Kazdy element mapy (tzw cell) zajmuje cztery bajty. Dwa pierwsze zawieraja numer tile, nastepny numer palety, a czwarty - ostatni okresla dodatkowe parametry ( flipx/flipy odpowiednio w bitach 6 i 7).

Glowny nacisk polozono jednak na sprajty. Poczatkowe adresy SPRITE RAM zajmuje lista sprajtow. Okresla ona polozenie i adresy grup sprajtow (list sprajtow).



Oprocz glownej listy sprajtow (zakonczonej elementem z ustawionym znacznikiem konca) mamy podlisty, opisujace szczegolowo kazdego sprajta - relatywne polozenie, jego rozmiar w pionie i poziomie (jest potega liczby 2), numery uzywanych tiles, palete kolorow oraz kilka dodatkowych parametrow (odbicia , laczenie z poprzednia grafika itp).



Rzeczywista wspolrzedna tile na ekranie jest suma przesuniecia tile w sprajcie, wspolrzednych lokalnych sprajta, wspolrzednych globalnych (ustawionych w liscie glownej) i przesuniecia wynikajacego z uzycia konkretnych rejestrow scroll.

DZWIEK

ST-0016 umozliwia odtwarzanie probek dzwiekowych (umieszczonch w CHARACTER RAM) w 8 odrebnych kanalach. Pod adresami $C900 - $C9FF znajduja sie rejestry dzwiekowe - 32 bajty przeznaczono na kazdy z 8 kanalow. Ich znaczenie wyjasnia ponizszy rysunek:


Na wyjsciu ukladu otrzymujemy dwukanalowy(stereo) strumien danych, przetwarzany nastpenie na postac analogowa przez zewnetrzny konwerter D/A (zwykle jest to NEC uPD6376 ).



M.A.C.S.

Multi Amenity Cassette System.

Jak nazwa wskazuje - jest to system bazujacy na cartach z grami. Sklada sie z plyty - matki
zawierajacej bios i uklad ST-0016 (z usunietymi oznaczeniami) oraz cartow z grami, podpinanych
do dwu zlacz plyty. Bardzo nietypowo tworcy sprzetu podeszli do ROM-ow z danymi.
Zarowno na plycie (BIOS) jak i cartach (ROMy) dane zostaly podzielone na dwie czesci:
jedna zawierajaca parzyste bajty i druga - nieparzyste. Jest to czesto spotykane rozwiazanie
w szesnastobitowych systemach bazujacych glownie na procesorach motoroli z rodziny 68k.
W przypadku M.A.C.S. nie ma to wiekszego sensu i przypuszczalnie (podobnie jak i usuniecie
oznaczen z ST-0016) sluzylo "zmyleniu przeciwnika" (konkurencji/piratow).
 

Jak wspomniano na wstepie, M.A.C.S. jest systemem bazujacym na ST-0016. Prawdopodobnie
zostal stworzony przez Seta (kilka rozwiazan jest charakterystycznych dla hardware tej firmy,
m.in uklad GAL w poblizu zlacza cartow) jednak jest firmowany przez "I'Max" (wczesniejszy
(1995-1996) MACS) lub "Yubis/T.System" (pozniejszy (1999) MACS 2). W budowie plyty (nie w ukladzie Seta) wprowadzono jednak - w porownaniu do rozwiazan uzytych w Renju czy Nerrate - kilka znaczacych zmian rozszerzajacych mozliwosci sprzetu.
Niestety, w chwili obecnej wiecej jest niewiadomych niz pewnikow, co uniemozliwia poprawna
emulacje M.A.C.S. Kolejna przeszkoda jest egoztyka gier (mahjong, hanafuda) blokujaca dokladne przetestowanie ukladu.
Najistotniejsze modyfikacje to:

- wejscia/wyjscia przygotowane pod gry typu mahjong/hanafuda,
- wspolpraca z hopperami, ticket dispenserami i innymi urzadzeniami tego typu,
- BIOS + dwa zlacza cartow (kazdy cart zawiera wlasna pamiec ROM i NVRAM),
- znacznie wiecej pamieci RAM (podwojony (conajmniej) WORK RAM),

W dowolnej chwili mozliwy jest dostep do kazdego z obszarow pamieci (co najmniej jedna gra
korzysta z dwu cartow).
Podsystem graficzny (czyli de facto ST-0016) rozni sie takze minimalnie od wersji podstawowej.
Znaczna czesc elementow graficznych (tilemapy, sprajty) jest odwrocona w pionie (wkorzystano
tutaj prawdopodobnie nieemulowane (jak do tej pory) cechy ukladu seta (tzw screen flip) -
podobnie zachowuje sie gra Mayjinsen.
Mam nadzieje ze uda sie odslonic nieco tajemnic M.A.C.S. po autopsji plyty i carta, ktora mam
nadziej przeprowadzic gdy tylko oba elementy trafia w moje rece.

W chwili obecnej znamy 5 gier dzialajacych pod tym systemem - wiecej informacji mozna znalezc
w odpowiednim dziale wyzej.