Previous 199869 Revisions Next

r33457 Wednesday 19th November, 2014 at 22:53:00 UTC by Ramiro Polla
steppers: move to emu/machine
[hash]vsmile_cart.xml vsmile_cd.xml
[src/emu/cpu/rsp]rspcp2.c rspcp2.h rspcp2d.c
[src/emu/machine]i6300esb.c i6300esb.h machine.mak steppers.c* steppers.h*
[src/mame]mame.lst mame.mak
[src/mame/drivers]alinvade.c sauro.c
[src/mame/machine]steppers.c steppers.h

trunk/hash/vsmile_cart.xml
r241968r241969
1616
1717V.Smile Smart Keyboard       80-091440(US)
1818V.Smile Smart Keyboard       80-091443(UK)
19V.Smile Tastatur fuer Lernkonsole 80-091444(GE)
19V.Smile Tastatur für Lernkonsole 80-091444(GE)
2020
21V.Smile PC Pal Island        80-03600(US)
21V.Smile PC Pal               80-03600(US)
2222
23V.Smile PC Pal Island        80-036800(US) (cart)
24V.Smile PC Pal Island        80-036822(SP) (cart)
23V.Smile V.Smile PC           80-036800(US) (cart)
24V.Smile V.Smile PC           80-036822(SP) (cart)
2525
2626V.Smile Art Studio           80-67000(US)
2727V.Smile Art Studio           80-67003(UK)
2828V.Smile Zeichenatelier (Magic Malboard)       80-67004(GE)
2929V.Smile Studio De Dessin     80-67005(FR)
30V.Smile Estudio de Arte ORG  80-67022(SP)
31V.Smile Estudio de Arte PINK 80-67057(SP)
3230
3331V.Smile Jamming Gym Class    80-91320(US)
3432V.Smile Muziek en Leer Mat   80-91322(NL)
3533V.Smile Dance'n'Learn        80-91323(UK)
3634V.Smile Lern - und Tanzmatte 80-91324(GE)
3735V.Smile Defi Gym             80-91325(FR)
38V.Smile Tapis Multisport     80-91325(FR)  <- on box.. look for cart
3936V.Smile Gimnasio Interactivo 80-91327(SP)
4037
4138Language:
42********0 = US  (White labels on back)
43********1 = Italy  Apparently distributed by company 'Giochi Preziosi'
44********2 = Netherlands (Red or White labels on back)
45********3 = UK (Red labels on back)
46********4 = Germany (Blue labels on back)
47********5 = France  (Yellow labels on back, also for NTSC French-Canadian)
48********6 = Portugal  Apparently distributed by company 'Concentra' (White labels on back)
49********7 = Spain (Green labels on back)
39********0 = US
40********1 = Italy
41********2 = Netherlands
42********3 = UK
43********4 = Germany
44********5 = France
45********6 = Portugal
46********7 = Spain
5047
48
514980-084000(US)   | Action Mania
52         (IT)   | ?????   
535080-084002(NL)   | Sports Games
545180-084003(UK)   | Action Mania
555280-084004(GE)   | Sportskanone
r241968r241969
625980-084023(UK)   | Dora the Explorer : Dora's Fix It Adventure
636080-084024(GE)   | Dora: Doras Reparatur-Abenteuer
646180-084025(FR)   | Dora L'Exploratrice : Les Adventures De Dora Apprentie Mecano
6580-084026(PT)   | Dora : em busca das pecas perdidas
6680-084027(SP)   | Dora : La Aventura arregla-todo de Dora
6280-084026(PT)   | Dora - em busca das peças perdidas
6763-
686480-084040(US)   | Scooby-Doo! - Funland Frenzy
696580-084043(UK)   | Scooby-Doo! - Funland Frenzy
r241968r241969
898580-084124(GE)   | Kung Fu Panda - Der Weg des Panda
908680-084125(FR)   | Kung Fu Panda - La mission de Po
9187-
9280-084140(US)   | Spider-Man & Friends - Secret Missions (AKA Professor V's Secret Missions with diff label)
8880-084140(US)   | Spidey & Friends - Secret Missions
938980-084143(UK)   | Spider-Man & Friends - Secret Missions
949080-084144(GE)   | Spider-Man & Freunde - Geheime Missionen
9580-084145(FR)   | Spider-Man and ses amis - Missions Secretes
9680-084147(SP)   | Spider-Man y Amigos: Misiones Secretas  (no # on label)
9791-
989280-084160(US)   | Disney's Little Einsteins: The Glass Slipper Ball
999380-084163(UK)   | Disney's Little Einsteins: The Glass Slipper Ball
r241968r241969
10296-
1039780-084180(US)   | Mickey Mouse Clubhouse
1049880-084182(NL)   | Mickey Mouse Clubhouse
10580-084183(UK)   | Mickey Mouse Clubhouse
1069980-084184(GE)   | Micky Maus Wunderhaus
10780-084185(FR)   | La Maison de Mickey
10810080-084186(PT)   | A Casa do Mickey Mouse (84196 on cart)
10980-084187(SP)   | La Casa de Mickey Mouse
110101-
11110280-084200(US)   | Nascar Academy - Race Car Superstar
112103-
r241968r241969
11410580-084222(NL)   | Wintersport Games
11510680-084223(UK)   | Snow Park Challenge
11610780-084224(GE)   | Wintersport
11780-084225(FR)   | ?????? picture too fuzzy for positve confirm
118108-
11910980-084240(US)   | Ni Hao Kai Lan
12011080-084245(FR)   | Ni Hao Kai Lan
121111-
12280-084260(US)   | My Pet Puppy (unreleased in USA?? UK version plays AOK on NTSC console)
12380-084262(NL)   | Mijn Puppy!
11280-084260(US)   | My Pet Puppy (unreleased??)
11380-084262(NL)   | Mijn Puppy
12411480-084263(UK)   | My Pet Puppy
12511580-084264(GE)   | Mein erster Hund
12680-084265(FR)   | Mon Youtou Tout Fou!
12780-084267(SP)   | Dakota y su Mascota
128116-
12911780-084280(US)   | Wild Waves
13011880-084282(NL)   | Water-sport Games
13180-084283(UJ)   | Wild Waves
13280-084284(GE)   | Dolphis Wasser-abenteuer
13311980-084285(FR)   | Martin le Dauphin
134120-
13512180-084300(US)   | Soccer Challenge
13612280-084303(UK)   | Football Challenge
13780-084304(GE)   | Fussball Meisterschaft
12380-084304(GE)   | Fußball Meisterschaft
13812480-084305(FR)   | Football Challenge
13980-084306(PT)   | Football Challenge (cart#??)
12580-084305(FR)   | Football Challenge (
14012680-084307(SP)   | Campeonato de Futbol
141127-
14212880-084320(US)   | Disney Fairies: TinkerBell
14312980-084322(NL)   | TinkerBell
14413080-084323(UK)   | TinkerBell
14513180-084324(GE)   | TinkerBell
14680-084325(FR)   | La fee Clochette
14780-084326(PT)   | Sininho (84336 on cart)
13280-084325(FR)   | La fée Clochette
14813380-084327(SP)   | Campanilla
149134-
15013580-084340(US)   | Up!
r241968r241969
15213780-084344(GE)   | Oben
15313880-084345(FR)   | La-Haut
15413980-084347(SP)   | Up!
15580-084347-022(SP)   | Up!  (-022 is odd for SP)
156140-
15714180-084360(US)   | Handy Manny
15814280-084362(NL)   | Handy Manny
r241968r241969
16314780-084367(SP)   | Manny Manitas
164148-
16514980-084380(US)   | Winnie the Pooh - The Honey Hunt
166         (IT)   | Winnie the Pooh - e la caccia al miele  ???
16715080-084383(UK)   | Winnie the Pooh - The Honey Hunt
151         (IT)   | Winnie the Pooh - e la caccia al miele
16815280-084384(GE)   | Winnie Puuh - Die Honigjagd
16915380-084385(FR)   | Winnie Rourson - La Chasse au miel de Winnie
17080-084386(PT)   | Winnie - Em Busca do Mel (84396 on cart)
15480-084386(PT)   | Winnie - Em Busca do Mel (84396? on cart)
17115580-084387(SP)   | Winnie the Pooh - En busca de la miel
172156-
17380-084400(US)   | Cars: Rev it up in Radiator Springs
17480-084402(NL)   | Cars: Spektakel in Radiator Springs
17580-084403(UK)   | Cars: Rev it up in Radiator Springs
17680-084404(GE)   | Cars: Vollgas in Radiator Springs
15780-084400(US)   | Cars - Rev it up in Radiator Springs
15880-084402(NL)   | Cars - Spektakel in Radiator Springs
15980-084403(UK)   | Cars - Rev it up in Radiator Springs
16080-084404(GE)   | Cars - Vollgas in Radiator Springs
17716180-084405(FR)   | Cars: Quatre Roues
17816280-084406(PT)   | Cars: Aventura Em Radiator Springs (84416 on cart)
17980-084407(SP)   | Cars: Acelera el Motor en Radiador Springs
16380-084407(SP)   | Cars - Acelera el Motor en Radiador Springs
180164-
18116580-084420(US)   | Toy Story 3
182         (IT)   | Toy Story 3 (EAN 8033836704196) GP470419?
166         (IT)   | Toy Story 3 EAN 8033836704196
18316780-084422(NL)   | Toy Story 3
18416880-084423(UK)   | Toy Story 3
18516980-084424(GE)   | Toy Story 3
18680-084425(FR)   | Toy Story 3
18717080-084427(SP)   | Toy Story 3
188171-
18917280-084440(US)   | Monsters vs. Aliens
r241968r241969
19117480-084443(UK)   | Monsters vs. Aliens
19217580-084444(GE)   | Monsters vs. Aliens
19317680-084445(FR)   | Monsters vs. Aliens
19480-084447(SP)   | Monstruos contra Alienigenas
195177-
19680-084460(US)   | Noddy - Detective for a Day (unreleased in USA??) see 80-092540
19780-084463(UK)   | Noddy - Detective for a Day
17880-084460(US)   | Noddy (unreleased??)
19817980-084465(FR)   | Oui-Oui - Detective d'un jour
19918080-084467(SP)   | Noddy - Detective por un Dia
200181-
20118280-084480(US)   | The Princess and the Frog
20280-084481(US)   | The Princess and the Frog  ('pocket' version)
20318380-084482(NL)   | Prinses en de Kikker (label in english)
20418480-084483(UK)   | The Princess and the Frog
20580-084484(GE)   | Kuess den Frosch
18580-084484(GE)   | Küss den Frosch
20618680-084485(FR)   | La Princesse Et La Grenouille
20780-084487(SP)   | Tiana y el sapo - El gran Sueno de Tiana
208187-
20918880-084500(US)   | Shrek Forever After
21018980-084502(NL)   | Sjrek voor eeuwig en altijd
21119080-084503(UK)   | Shrek Forever After
21280-084504(GE)   | Fuer immer Shrek
19180-084504(GE)   | Für immer Shrek
21319280-084505(FR)   | Shrek 4 - Il Etait une Fin
21480-084507(SP)   | Shrek Felices para siempre
215193-
21619480-084520(US)   | <Unknown>
217195-
21819680-084540(US)   | Super Why to the Rescue! The Beach Day Mystery
21980-084541(US)   | Super Why to the Rescue! The Beach Day Mystery   <- really odd serial# but other 'pocket' games have this also as there is no Italian version
19780-084541(US)   | Super Why to the Rescue! The Beach Day Mystery   <- really odd serial#
220198-
22119980-084560(US)   | <Unknown>
222200-
22320180-084580(US)   | Cars 2
22480-084583(UK)   | Cars 2
22520280-084584(GE)   | Cars 2
22680-084585(FR)   | Cars 2
22780-084587(SP)   | Cars 2
20380-084583(UK)   | Cars 2
228204-
22980-084600(US)   | <Unknown> (Should be Orange colored Cinderella - Cinderella's Magic Wishes)
20580-084600(US)   | <Unknown> would be Cinderella - Cinderella's Magic Wishes
23020680-084603(UK)   | Cinderella - Cinderella's Magic Wishes
23180-084604(GE)   | Cinderella - Lernen im Maerchenland
23280-084605(FR)   | Cendrillon - ?????
20780-084604(GE)   | Cinderella - Lernen im Märchenland
233208-
23480-084620(US)   | <Unknown> (Should be Orange colored Finding Nemo)
20980-084620(US)   | <Unknown>
23521080-084624(GE)   | Findet Nemo - Nemos Unterwasserabenteuer
23680-084625(FR)   | Le Monde de Nemo - Nemo a la decourverte de l'ocean
23721180-084627(SP)   | Buscando a Nemo - Los Descubrimientos de Nemo
238212-
23980-084640(US)   | <Unknown> (Should be Orange colored Spongebob)
21380-084640(US)   | <Unknown>
24021480-084644(GE)   | Spongebob Schwammkopf - Der Tag des Schwamms
24121580-084647(SP)   | Bob Epsonja - Un dia en la vida de una esponja
242216
243Vtech ran out of UPC codes at 92999, these are wraparound and newer than 92xxx series.
244They also say 'v.link compatible' on the back though not all are v.motion compatible
245217
24680-090000(US)   | Up  <- need pic
24780-090000-001(US)   | Up
218V.smile Smartbooks
21980-089000(US)   | Spider-Man &amp; Friends Where is Hulk?
220-
22180-089020(US)   | Toy Story 2
222-
22380-089040(US)   | Dora's Fix It Adventure
22480-089045(FR)   | Dora's ??????
225
226-
22780-089060(US)   | Scooby-Doo! - A Night of Fright is no Delight
228-
22980-090000(US)   | Up
24823080-090004(GE)   | Oben
24980-090004-004(GE)   | Oben
25080-090005(FR)   | La Haut
251231-
232
233Vtech ran out of UPC codes at 92999, these are wraparound
234
25223580-090020(US)   | Handy Manny
25380-090023(UK)   | Handy Manny
25423680-090024(GE)   | Meister Manny's Werkzeugkiste
25523780-090025(FR)   | Manny Et Ses Outils
256238-
25780-090040(US)   | Wow! Wow! Wubbzy! - Attack of the 50-Foot Fleegle
23980-090040(US)   | Wow Wow Wubbzy
258240-
25980-090060(US)   | <Unknown>
260-
26180-090080(US)   | <Unknown>
262-
26380-090100(US)   | <Unknown>
264-
26580-090120(US)   | <Unknown>
266-
26780-090140(US)   | <Unknown>  (Should be My Pet Puppy)
26880-090142(NL)   | Mijn Puppy!
26924180-090144(GE)   | Mein erster Hund
27024280-090145(FR)   | Mon Toutou Tout Fou!
27124380-090147(SP)   | Dakota y su mascota (EAN 3417766901475)
272244-
27380-090160(US)   | <unknown> Should be Monsters vs. Aliens #80-084440, exists in vtech v.link database
24580-090160(US)   | <unknown> Should be Monsters vs. Aliens #80-084440
27424680-090163(UK)   | Monsters vs. Aliens
27524780-090164(GE)   | Monsters vs. Aliens
27624880-090165(FR)   | Monsters Contre Aliens
r241968r241969
281253-
28225480-090200(US)   | <Unknown>
283255-
28480-090220(US)   | <Unknown> should be Wild Waves (purple)
25680-090220(US)   | <Unknown>
28525780-090224(GE)   | Dolphis Wasser-abenteuer
286258-
28780-090240(US)   | <Unknown>
288-
28925980-090260(US)   | Disney Fairies: Tinker Bell
290260-
291
292Oldest Smartidges start here
293
29426180-092000(US)   | Alphabet Park Adventure (Red Haired Girl Version)
29526280-092000-101(US)   | Alphabet Park Adventure (Blond Haired Girl Version)
296         (IT)   | Avventura nel parco dell'alfabeto
29726380-092002(NL)   | Alfabet Pretpark
29880-092003(UK)   | Alphabet Park Adventure (Red Haired Girl Version)
26480-092003(UK)   | Alphabet Park Adventure (Blond Haired Girl Version)
29926580-092004(GE)   | Abenteuer im ABC Park
30026680-092005(FR)   | ABC Land Aventure
30180-092006(PT)   | ABC Adventure (EAN is 3417768920162 cart#92016)
30280-092007(SP)   | Aventuras en el Parque Alfabeto (purple)
30380-092007(SP)   | Aventuras en el Parque Alfabeto (translucent) (No # on label)
26780-092007(SP)   | Aventuras en el Parque Alfabeto
304268-
30526980-092020(US)   | The Adventures of Little Red Riding Hood
30680-092023(UK)   | The Adventures of Little Red Riding Hood (no # on label, but box says 'colours')
30780-092024(GE)   | Entdecke die Welt von Rotkaeppchen
27080-092024(GE)   | Entdecke die Welt von Rotkäppchen
30827180-092025(FR)   | Les aventures du Le Petit Chaperon Rouge
309272-
31080-092040(US)   | Learnin' Wheels  (blue car with guy driving)
31180-092043(UK)   | Learnin' Wheels 
31280-092044(GE)   | Freds Zahlen Rally  (note to self, guy in blue car wrong serial#)  80-092924(GE) on label
31380-092045(FR)   | Apprenti' Pilote
314-
31527380-092060(US)   | Winnie The Pooh: The Honey Hunt
316         (IT)   | Winnie the Pooh - e la caccia al miele
31780-092062(NL)   | Winnie de Poeh - De winderwereld van Poeh
27480-092062(NL)   | Winnie de Poeh (Tigger & Pooh?) - De winderwereld van Poeh
31827580-092063(UK)   | Winnie The Pooh: The Honey Hunt
31927680-092064(GE)   | Pooh - Die Honigjagd
32027780-092064(GE)   | Pooh - Die Honigjagd (ALT-no# on label)
32180-092064(GE)   | My Friends Tigger and Pooh - Die Honigjagd (yes, Tigger on this one)
27880-092064(GE)   | My Friends Tigger and Pooh - Die Honigjagd
32227980-092065(FR)   | Winnie Rourson - La Chasse au miel de Winnie
32328080-092065-105(FR)   | Winnie Rourson - La Chasse au miel de Winnie (ALT)
32428180-092066(PT)   | Winnie the Pooh - Em Busca Do Mel (92076 on cart)
32580-092067(SP)   | Winnie the Pooh (My Friends Tigger and Pooh) - En Busca de la Miel (no # on label)
32680-092067-122(SP)   | Winnie the Pooh (My Friends Tigger and Pooh) - En Busca de la Miel
28280-092067(SP)   | My Friends Tigger and Pooh - En Busca de la Miel
327283-
32828480-092080(US)   | Mickey Mouse - Mickey's Magical Adventures
28580-092080(NL)   | Mickey Mouse - De wonderwereld van Mickey
329286         (IT)   | Topolino - Le Magiche Avventure di Topolino
33080-092082(NL)   | Mickey Mouse - De wonderwereld van Mickey
33180-092083(UK)   | Mickey Mouse - Mickey's Magical Adventures
33228780-092084(GE)   | Micky - Mickys magisches Abenteuer
33328880-092085(FR)   | Mickey - Mickey a la recherche de Pluto
33480-092086(PT)   | Mickey - A Aventura Magica de Mickey (EAN is 3417768920964 cart 92096)
33528980-092087(SP)   | Mickey - La Aventura Magica de Mickey
336290-
33729180-092100(US)   | The Lion King: Simba's Big Adventure
338         (IT)   | Il Re Leone - La Grande Avventura di Simba
292         (IT)   | Il re leone - ???????
33929380-092102(NL)   | Leeuwenkoning - De wonderwereld van Simba
34029480-092103(UK)   | The Lion King: Simba's Big Adventure
34180-092104(GE)   | Der Koenig der Loewen - Simbas grosses Abenteuer
29580-092104(GE)   | Der König der Löwen - Simbas großes Abenteuer
34229680-092105(FR)   | Roi Lion - Simba Decouvre la Jungle
34380-092106(PT)   | O Rei Leao - A grande aventura de Simba (92116 on cart)
34429780-092107(SP)   | Rey Leon - La Gran Aventura de Simba
345298-
34629980-092120(US)   | The Little Mermaid - Ariel's Majestic Journey
34730080-092121(IT)   | Sirenetta - Ariel e le
34830180-092122(NL)   | De Kleine Zeemeermin - De Wunderwereld von Ariel
34980-092123(UK)   | The Little Mermaid - Ariel's Majestic Journey
35030280-092124(GE)   | Arielle die Meerjungfrau - Arielles aufregendes Abenteuer
35130380-092125(FR)   | La Petite Sirene - Ariel devient une princesse
35230480-092126(PT)   |
35380-092127(SP)   | La Sirenita - El Vieje Fantastico de Ariel
30580-092127(SP)   | La Sirenita - El Vieje Fantástico de Ariel
354306-
35530780-092140(US)   | Spider-Man & Friends - Secret Missions
35630880-092140-101(US)   | Spider-Man & Friends - Secret Missions (ALT)
35780-092142(NL)   | Spider-Man en Vrienden! - Geheime Missies (white Webs)
35880-092142-123(NL)   | Spider-Man en Vrienden! - Geheime Missies (Yellow webs)
35980-092143(UK)   | Spider-Man & Friends - Secret Missions (no # on front label)
36080-092143-103(UK)   | Spider-Man & Friends - Secret Missions (ALT)
30980-092142(NL)   | Spider-Man Vrienden - Geheime Missies
36131080-092144(GE)   | Spider-Man & Freunde - Geheime Missionen
36280-092145(FR)   | Spider-Man and ses amis - Missions Secretes (white webs)
36380-092145-105(FR)   | Spider-Man and ses amis - Missions Secretes (yellow webs)
36480-092146(PT)   | Spider-man & Amigos - Missoes Secretas
36580-092147(SP)   | Spider-Man y Amigos - Misiones Secretas (white webs)
36680-092147-122(SP)   | Spider-Man y Amigos - Misiones Secretas (yellow webs)
31180-092146(FR)   | Spider-Man and ses amis - Missions Secretes
31280-092146(SP)   | Spider-Man y Amigos - Misiones Secretas
367313-
36831480-092160(US)   | Scooby-Doo! - Funland Frenzy
36931580-092160-101(US)   | Scooby-Doo! - Funland Frenzy (ALT)
370316         (IT)   | Scooby-Doo! - Avventura e Funland
37131780-092162(NL)   | Scooby-Doo griezelen in het pretpark
37231880-092163(UK)   | Scooby-Doo! - Funland Frenzy
37380-092163-103(UK)   | Scooby-Doo! - Funland Frenzy
37431980-092163-293(UK)   | Scooby-Doo! - Funland Frenzy (Yellow, only Scooby on label might be motion version)
37580-092165(FR)   | Scooby-Doo! - Panique a Funland
37680-092165(FR)   | Scooby-Doo! - Panique a Funland (translucent purple, packin)
37780-092167(SP)   | Scooby-Doo - Misterio En El Parque (translucent Purple)
32080-092167(SP)   | Scooby-Doo - Mysterio En El Parque
378321-
37932280-092180(US)   | Care Bears - A Lesson in Caring
38080-092183(UK)   | Care Bears - A Lesson in Caring
38180-092184(GE)   | Gluecksbarchis  <- existance not proven
38280-092185(FR)   | Les Bisounours - Le Monde Merveilleux des Bisounours
38332380-092187(SP)   | Osos Amorosos - Una Leccion de Amor
384324-
38532580-092200(US)   | Aladdin - Aladdin's Wonders of the World
386         (IT)   | Aladdin - Il magico mondo di Aladdin
38732680-092202(NL)   | Aladdin - De Wunderwereld van Aladdin
38880-092203(UK)   | Aladdin - Aladdin's Wonders of the World
38932780-092204(GE)   | Aladdin - Aladdins Welt der Wunder
39032880-092205(FR)   | Aladdin - Les fabuleuses aventures d'Aladdin
39132980-092207(SP)   | Aladdin - El Maravilloso Mundo de Aladdin
392330-
39333180-092220(US)   | Toy Story 2 - Operation Rescue Woody!
394         (IT)   | Toy Story 2 - Operazione: Salvataggio di Woody! gpz06503
332         (IT)   | Toy Story 2 - Operazione: Salvataggio di Woody!
39533380-092223(UK)   | Toy Story 2 - Operation Rescue Woody!
39633480-092224(GE)   | Toy Story 2 - Woodys Spannende Rettung
39780-092225(FR)   | Toy Story 2 - Buzz a la Rescousse
33580-092225(FR)   | Toy Story 2 - Buzz à la Rescousse
39833680-092226(PT)   | Toy Story 2 - O Resgate de Woody (92236 on cart)
39933780-092227(SP)   | Toy Story 2 - El Rescate De Woody
400338-
40133980-092240(US)   | Cinderella - Cinderella's Magic Wishes
402         (IT)   | Cenerentola - I desideri magici di Cenerentola
340         (IT)   | Cenerentala - I desideri magici di Cenerentala
40334180-092242(NL)   | Assepoester - De wonderwereld van Assepoester
40434280-092242-123(NL)   | Assepoester - De wonderwereld van Assepoester | 2007
40534380-092243(UK)   | Cinderella - Cinderella's Magic Wishes
40634480-092243-103(UK)   | Cinderella - Cinderella's Magic Wishes | 2007
40780-092244(GE)   | Cinderella - Lernen im Maerchenland | 2005
40880-092244-104(GE)   | Cinderella - Lernen im Maerchenland | 2007
40980-092244-204(GE)   | Cinderella - Lernen im Maerchenland | 2007
41080-092245(FR)   | Cendrillon - Le reve enchante de Cendrillon
41180-092245-105(FR)   | Cendrillon - Le reve enchante de Cendrillon
41280-092245-205(FR)   | Cendrillon - Le reve enchante de Cendrillon
41380-092246(PT)   | Cinderela - Os Sonhos Magicos da Cinderela (Cart#92256)
41480-092247(SP)   | La Cenicienta - Los suenos magicos de Cenicienta  (non motion#, but v.motion in spanish catalog)
41580-092247-222(SP)   | La Cenicienta - Los suenos magicos de Cenicienta  (non motion#, but v.motion in spanish catalog)
34580-092244(GE)   | Cinderella - Lernen im Märchenland | 2005
34680-092244-104(GE)   | Cinderella - Lernen im Märchenland | 2007
34780-092244-204(GE)   | Cinderella - Lernen im Märchenland | 2007
34880-092245-105(FR)   | Cendrillon - Le rêve enchanté de Cendrillon
34980-092246(PT)   |
35080-092247(SP)   | La Cenicienta - Los sueños magicos de Cenicienta
416351-
41735280-092260(US)   | Elmo's World - Elmo's Big Discoveries
41880-092264(GE)   | Elmo's grosses Abenteuer
35380-092264(GE)   | Elmo's großes Abenteuer
41935480-092265(FR)   | Le Monde d'ELMO - Les Grandes Decouvertes D'Elmo
420355-
42135680-092280(US)   | Dora The Explorer - Dora's Fit-it Adventure
42280-092280-101(US)   | Dora The Explorer - Dora's Fit-it Adventure (ALT)
42380-092282(NL)   | Dora - Doras Reparatie Avontuur!
42435780-092283(UK)   | Dora The Explorer - Dora's Fit-it Adventure
42580-092283-103(UK)   | Dora The Explorer - Dora's Fit-it Adventure (ALT)
35880-092280-101(US)   | Dora The Explorer - Dora's Fit-it Adventure (ALT)
42635980-092284(GE)   | Dora - Doras Reparatur-Abenteuer
36080-092286(PT)   | Dora - em busca das peças perdidas (cart#unknown)
42736180-092285(FR)   | Dora L'Exploratrice - Les aventures de Dora Apprentie Mecano
42880-092285-1?5(FR)   | Dora L'Exploratrice - Les aventures de Dora Apprentie Mecano NTSC French-Canadian
42980-092286(PT)   | Dora - em busca das pecas perdidas (cart# 92296)
43080-092287(SP)   | Dora - La Aventura arregla-todo de Dora (seen as purple without#)
43180-092287-122(SP)   | Dora - La Aventura arregla-todo de Dora
432362-
43336380-092300(US)   | Bob the Builder: Bob's Busy Day
43436480-092303(UK)   | Bob the Builder: Bob's Busy Day
r241968r241969
43836880-092305(FR)   | Bob Bricoleur: Les P'tits Chantiers de Bob
43936980-092305-105(FR)   |  Bob Bricoleur: Les P'tits Chantiers de Bob (ALT)
44037080-092306(PT)   | Bob o Construtor - Um dia Atarefado (92316 on cart)
44180-092307(SP)   | Bob y sus Amigos - Un dia de trabajo
442371-
44337280-092320(US)   | The Wiggles - It's Wiggle Time!
44437380-092323(UK)   | The Wiggles - It's Wiggle Time!
445374-
44637580-092340(US)   | Thomas The Tank: Engines Working Together
44780-092340-101(US)   | Thomas The Tank: Engines Working Together (ALT) (HiT logo on label)
44880-092342(NL)   | Thomas de Stoomlocomotief' - Locomotieven Werken Somen  <- need pic even the manual has -123 on cover
44980-092342-123(NL)   | Thomas de Stoomlocomotief' - Locomotieven Werken Somen
37680-092340-101(US)   | Thomas The Tank: Engines Working Together (ALT)
37780-092342(NL)   | Thomas de Stoomlocomotief'
45037880-092343(UK)   | Thomas and Friends: Engines Working Together
45137980-092343-103(UK)   | Thomas and Friends: Engines Working Together (ALT)
45238080-092343-203(UK)   | Thomas and Friends: Engines Working Together (ALT)
45338180-092344(GE)   | Thomas and Seine Freunde - Freunde Halten Zusammen
45480-092344-104(GE)   | Thomas and Seine Freunde - Freunde Halten Zusammen
45580-092345(FR)   | Thomas er ses Amis - Les locomotives s'entraident
45638280-092347(SP)   | Thomas and Friends: Juego de Aprendizaje
457383-
45838480-092360(US)   | Zayzoo My Alien Classmate
45980-092360-101(US)   | Zayzoo - An Earth Adventure
46038580-092362(NL)   | Zayzoo - Mijn Buitenaardse Vriendje
46180-092363(UK)   | Zayzoo My Alien Classmate   <-- yes, duped#
46280-092363(UK)   | Zayzoo - An Earth Adventure <- saw it, can't find pic again
38680-092363(UK)   | Zayzoo My Alien Classmate <- ???
38780-092365(FR)   | Zezou : Notre ami venu d'ailleurs
38880-092367(SP)   | Zayzoo - Mi Amiga del Espacio
389-
39080-092360-101(US)   | Zayzoo - An Earth Adventure
39180-092363(UK)   | Zayzoo - An Earth Adventure
46339280-092363-103(UK)   | Zayzoo - An Earth Adventure
46439380-092364(GE)   | Zayzoo Lernall
46580-092365(FR)   | Zezou : Notre ami venu d'ailleurs (Alien Classmate)
46680-092367(SP)   | Zayzoo - Mi Amiga del Espacio (Alien Classmate)
467394-
46839580-092380(US)   | Barney - The Land of Make Believe
46980-092383(UK)   | Barney - The Land of Make Believe
47039680-092384(GE)   | Barney - Erlebnis-Reise
471397-
47239880-092400(US)   | Blue's Clues Collection Day
473399-
47480-092420(US)   | Finding Nemo - Nemo's Ocean Discoveries
40080-092420(US)   | Finding Nemo
47540180-092422(NL)   | Finding Nemo - De wonderwereld van Nemo
47680-092423(UK)   | Finding Nemo - Nemo's Ocean Discoveries
47780-092424(GE)   | Findet Nemo - Nemos Unterwasserabenteuer
40280-092424(GE)   | Findet Nemo
47840380-092425(FR)   | Le Monde de Nemo - Nemo a la decourverte de l'ocean
47980-092426(PT)   | Nemo - A descoberta do Oceano  (Cart#92436)
48080-092427(SP)   | Buscando a Nemo - Los Descubrimientos de Nemo
481404-
48240580-092440(US)   | Spongebob Squarepants: A Day In The Life of A Sponge
48340680-092442(NL)   | Spongebob Squarepants: Een Dag uit het Leven van een Spons
r241968r241969
49341680-092467(SP)   | Barrio Sesamo : El Mundo Fantastico de Epy y Bias
494417-
49541880-092480(US)   | Batman: Gotham City Rescue
496         (IT)   | Batman: Il Salvataggio di Gotham City 80-092492??   gpz06629
41980-09248?(IT)   | Batman: Il Salvataggio di Gotham City
49742080-092482(NL)   | Batman: De Redding van Gotham City
49842180-092483(UK)   | Batman: Gotham City Rescue
49942280-092484(GE)   | Batman - Rettung von Gotham City
r241968r241969
50242580-092500(US)   | Whiz Kid Wheels  (note to self.. no rider in this blue car)
50342680-092502(NL)   | Truckie's Rekenrace
50442780-092503(UK)   | Whiz Kid Wheels
42880-092503(UK)   | Learning Wheels
50542980-092504(GE)   | Flitzers Schlaue Staedtetour (diff color)
50643080-092504(GE)   | Flitzers Schlaue Staedtetour (normal purple)
50780-092505(FR)   | Mission Pilote
50880-092506(PT)   | Conducao Diverrido (Cart# 92516)
43180-092505(FR)   | Apprenti' Pilote  <- one of these is wrong
43280-092505(FR)   | Mission Pilote  <- one of these is wrong
43380-092506(PT)   | Conducio Daverido (SPELLING) (Cart# unknown)
50943480-092507(SP)   | Conduccion Divertida
510435-
51143680-092520(US)   | Spider-Man & Friends Doc Ock's Challenge
512         (IT)   | Spider-Man la sfida del dottor Ock  (V.smile pocket bundle only?)
437         (IT)   | Spider-Man la sfida del dottor Ock
51343880-092523(UK)   | Spider-Man & Friends Doc Ock's Challenge
51443980-092524(GE)   | Spider-Man & Freunde Wettkampf im Space Labor
51544080-092525(FR)   | Spider-Man & ses amis Le defi du docteur Ock
r241968r241969
51844380-092540(US)   | Noddy - Detective for a Day
51944480-092543(UK)   | Noddy - Detective for a Day
52044580-092543-103(UK)   | Noddy - Detective for a Day (ALT)
52180-092544(GE)   | Noddy - Detektiv fuer einen Tag <- need pic to confirm, manual cover says -104
52280-092544-104(GE)   | Noddy - Detektiv fuer einen Tag (ALT)
44680-092544(GE)   | Noddy
52344780-092545(FR)   | Oui-Oui - Detective d'un Jour
52444880-092545-105(FR)   | Oui-Oui - Detective d'un Jour (ALT)
52580-092546(PT)   | Noddy - Detective por um dia (92556 on cart)
44980-092546(PT)   | Noddy - detective por um dia (92556 on cart)
526450-
52780-092560(US)   | 101 Dalmations (one pic on german site with USA code)
52880-092564(GE)   | 101 Dalmatiner (EAN on german site with USA pic.. wtf)
45180-092560(US)   | <Unknown> should be 101 Dalmations (is in Vtech Master list)
45280-092564(GE)   | 101 Dalmatiner
529453-
53045480-092580(US)   | Backyardigans - Viking Voyage
53145580-092580-201(US)   | Backyardigans - Viking Voyage (ALT)
53280-092583(UK)   | Backyardigans - Viking Voyage
53345680-092585(FR)   | Les Melodilous - Les explorateurs vikings
534457-
53545880-092600(US)   | Shrek - Dragon's Tale
r241968r241969
53946280-092607(SP)   | Shrek - El Cuento de la Dragona
540463-
54146480-092620(US)   | Lil' Bratz - Friends, Fashion and Fun
54280-092623(UK)   | Lil' Bratz - Friends, Fashion and Fun
54380-092627(SP)   | Lil' Bratz - Amigos Moda y Diversion
544465-
54546680-092640(US)   | Superman - The Greatest Hero
54646780-092642(NL)   | Superman - De Grootste Held
r241968r241969
55047180-092647(SP)   | Superman - El Hombre de Acero
551472-
55247380-092660(US)   | Cars: Rev It Up In Radiator Springs
553         (IT)   | Cars: Motori Ruggenti   gpz06755
474         (IT)   | Cars: Motori Ruggenti
55447580-092662(NL)   | Cars: Spektakel in Radiator Springs
55547680-092663(UK)   | Cars: Rev It Up In Radiator Springs
55647780-092664(GE)   | Cars: Vollgas in Radiator Springs
55747880-092665(FR)   | Cars: Quatre Roues
55880-092666(PT)   | Carros: Aventura em Radiator Springs (92676 on cart)
47980-092666(PT)   | Cars: Aventura em Radiator Springs (92676 on cart)
55948080-092667(SP)   | Cars: Acelera El Motor En Radiador Springs
560481-
56180-092680->80-092800(US)  | <Unknown>
562-
56348280-092820(US)   | Soccer Challenge
56480-092821(IT)   | Football Club  (cart is 92831) (EAN 8001444067538)
56548380-092822(NL)   | Voetbal
56648480-092823(UK)   | Football Challenge
56780-092824(GE)   | Fussball Schule
56880-092825(FR)   | Football Challenge
56980-092826(PT)   | Football Challenge (cart# 92836)
57080-092827(SP)   | Campeonato de Futbol
48580-092824(GE)   | Fußball Schule
486****
48780-092831(IT)   | Football Club
488confirmed.. damn italians :)
489***
571490-
57249180-092840(US)   | Wall-E
573         (IT)   | Wall-E  (GPZ07996)
57449280-092842(NL)   | Wall-E
57549380-092843(UK)   | Wall-E
57649480-092844(GE)   | Wall-E
57780-092845(FR)   | Wall-E
495         (IT)   | Wall-E
57849680-092847(SP)   | Wall-E         
579497-
58049880-092860(US)   | Shrek the Third: Arthur's School Day Adventure
r241968r241969
58650480-092867(SP)   | Shrek Tercero - En Busca De Arturo
587505-
58850680-092880(US)   | Ratatouille - Remy's New Recipes
589         (IT)   | Ratatouille - Le nuove Ricette di Remy
59080-092882(NL)   | Ratatouille - Remy's Nieuwe Recepten
50780-092882(NL)   | Ratatouille - Remy's Nieuw Recept
59150880-092883(UK)   | Ratatouille - Remy's New Recipes
59250980-092884(GE)   | Ratatouille - Remys neue Rezepte
59351080-092884-104(GE)   | Ratatouille - Remys neue Rezepte (ALT)
59480-092885(FR)   | Ratatouille - Les nouvelles recettes de Remy
51180-092885(FR)   | Ratatouille - Les nouvelles recettes de Rémy
59551280-092887(SP)   | Ratatouille - Las recetas del Remy
596513-
59780-092900(US)   | Go Diego Go! - Save the Animal Familes!
59880-092902(NL)   | Go Diego Go! - Red de dierenfamilies!
59980-092903(UK)   | Go Diego Go! - Save the Animal Familes!
51480-092900(US)   | Go Diego Go - Save the Animal Familes!
51580-092902(NL)   | Go Diego Go - Red de dierenfamilies
51680-092903(UK)   | Go Diego Go - Save the Animal Familes!
60051780-092905(FR)   | Go Diego! - A la rescousse des animaux!
601518-
60251980-092920(US)   | Cranium - Partyland Park
60380-092922(UK)   | Cranium - Partyland Park
520
521****
52280-092924(GE)   | Freds Zahlen Rally  (note to self, guy in blue car wrong serial#)
523something wrong here
524****
60452580-092924(GE)   | Cranium - Freizeit Park
60552680-092925(FR)   | Cranium - Le Parc D'attractions
606527-
60780-092940(US)   | <Unknown> should be Mickey Mouse Clubhouse 80-084180 exists in v.link database
52880-092940(US)   | <Unknown> should be Mickey Mouse Clubhouse 80-084180
608529         (IT)   | La Casa di Topolino
60953080-092942(NL)   | Mickey Mouse Clubhause
61080-092943(UK)   | Mickey Mouse Clubhouse
61153180-092944(GE)   | Micky Maus Wunderhaus
61253280-092945(FR)   | La Maison de Mickey
61380-092947(SP)   | La Casa de Mickey Mouse
614533-
61553480-092960(US)   | Kung Fu Panda - Path of the Panda
61653580-092962(NL)   | Kung Fu Panda - Het pad van de panda
61780-092963(UK)   | Kung Fu Panda - Path of the Panda
61853680-092964(GE)   | Kung Fu Panda - Der Weg des Panda
61953780-092965(FR)   | Kung Fu Panda - La ?????
62080-092967(SP)   | Kung Fu Panda - Aventura en el Valle de la Paz
621538-
62253980-092980(US)   | Disney's Little Einsteins: The Glass Slipper Ball
62380-092983(UK)   | Disney's Little Einsteins: The Glass Slipper Ball <- purple cart on front of UK box, but v.motion listed)
54080-092983(UK)   | Disney's Little Einsteins: The Glass Slipper Ball
62454180-092984(GE)   | Kleine Einsteins
62580-092985(FR)   | Disney - Les petits Einsteins: Le bal du soulier de verre
62680-092987(SP)   | Little Einsteins de Disney: El baile del zapatito de cristal
627-
628542
543
629544V.Smile Baby
630545
63154680-099000(US)   | Learn and Discover Home (white background on title) (the packin)
r241968r241969
64355880-099040(US)   | Baby Einstein - World of Discoveries (no # on front label)
64455980-099043(UK)   | Baby Einstein - World of Discoveries
64556080-099045(FR)   | Baby Einstein - Un Monde de decouvertes
561
646562-
64756380-099060(US)   | A Day On The Farm
64856480-099063(UK)   | A Day On The Farm
r241968r241969
65657280-099103(UK)   | Noah's Ark Animal Adventure
65757380-099105(FR)   | L'arche de Noe - L'aventure des animaux
658574-
65980-099120(US)   | Barney - Let's Go to a Party
57580-099120(US)   | Barney
660576-
66157780-099140(US)   | Teletubbies
66257880-099142(NL)   | Teletubbies
66357980-099143(UK)   | Teletubbies
66480-099145(FR)   | Teletubbies
665580-
66658180-099160(US)   | Discovery with Baby Mickey and Friends
66758280-099163(UK)   | Discovery with Baby Mickey and Friends
r241968r241969
676591-
67759280-099240(US)   | Backyardigans: Big Backyard Adventures
678593
679V.Smile Smartbooks
680594
68180-089000(US)   | Spider-Man &amp; Friends Where is Hulk?
682-
68380-089020(US)   | Toy Story 2
684-
68580-089040(US)   | Dora the Explorer - Dora's Got a Puppy
68680-089045(FR)   | Dora's ??????
687-
68880-089060(US)   | Scooby-Doo! - A Night of Fright is no Delight
689-
690
691/*V.Baby (NOT V.Smile Baby)
595/*V.Baby (USB)
69259680-107100-001(US) | Meet Me at the Zoo (Orange, V.Baby packin)
69359780-220000(US)   | The World of Eric Carle - The Very Hungry Caterpillar
69459880-220600(US)   | Backyardigans
r241968r241969
919823   </software>
920824
921825</softwarelist>
922
trunk/hash/vsmile_cd.xml
r241968r241969
1717********7 = Spain
1818
191980-093000(US)   | The Crystal Ball Adventures
2080-093004(GE)   | Das zauberhafte Maerchenabenteuer
2180-093005(FR)   | L'aventure enchante
2080-093004(GE)   | Das zauberhafte Märchenabenteuer
2180-093005(FR)   | L'aventure enchantée
222280-093007(SP)   | El Castillo de las Princesas
2323-
242480-093020(US)   | The Incredibles - Mission Incredible
r241968r241969
3333-
343480-093060(US)   | The Amazing Spider-Man - Countdown to Doom
353580-093064(GE)   | Spiderman - Angriff der Superschurken
3680-093065(FR)   | Spider-Man - Course-poursuite A Manhattan
3680-093065(FR)   | Spider-Man - Course-poursuite à Manhattan
373780-093067(SP)   | El Asombroso Spider-Man - Persecucion en la Cuidad
3838-
393980-093080(US)   | Scooby-Doo! - Ancient Adventure
r241968r241969
434380-093087(SP)   | Scooby-Doo - Viaje al Pasdao
4444-
454580-093100(US)   | Cars - In The Fast Lane
4680-093104(GE)   | Cars - Auf der Aeberholspur
4680-093104(GE)   | Cars - Auf der Überholspur
474780-093105(FR)   | Cars - A Fond la Caisse!
484880-093107(SP)   | Cars - El Carril Rapido
4949-
505080-093120(US)   | Wacky Race on Jumpin' Bean Island
5180-093124(GE)   | Das verrkte Rennen auf der Haf-Bohnen-Insel
5180-093124(GE)   | Das verrückte Rennen auf der Hüpf-Bohnen-Insel
525280-093127(SP)   | Carrera Loca - En La Isla de las Vainas Fritas  (real# unknown)
5353-
545480-093140(US)   | Shrek The Third - The Search for Arthur
trunk/src/emu/cpu/rsp/rspcp2.c
r241968r241969
135135   memset(m_accum, 0, sizeof(m_accum));
136136}
137137
138rsp_cop2::~rsp_cop2()
139{
140}
141
142138void rsp_cop2::init()
143139{
144140   CLEAR_CARRY_FLAGS();
trunk/src/emu/cpu/rsp/rspcp2.h
r241968r241969
5555   virtual void state_string_export(const int index, astring &string);
5656
5757public:
58   virtual ~rsp_cop2();
59
6058   virtual void lbv() { }
6159   virtual void lsv() { }
6260   virtual void llv() { }
trunk/src/emu/cpu/rsp/rspcp2d.c
r241968r241969
258258//
259259// Load 1 byte to vector byte index
260260
261void rsp_cop2_drc::lbv()
261inline void rsp_cop2_drc::lbv()
262262{
263263   UINT32 op = m_op;
264264
r241968r241969
291291//
292292// Loads 2 bytes starting from vector byte index
293293
294void rsp_cop2_drc::lsv()
294inline void rsp_cop2_drc::lsv()
295295{
296296   UINT32 op = m_op;
297297   int dest = (op >> 16) & 0x1f;
r241968r241969
327327//
328328// Loads 4 bytes starting from vector byte index
329329
330void rsp_cop2_drc::llv()
330inline void rsp_cop2_drc::llv()
331331{
332332   UINT32 op = m_op;
333333   UINT32 ea = 0;
r241968r241969
366366//
367367// Loads 8 bytes starting from vector byte index
368368
369void rsp_cop2_drc::ldv()
369inline void rsp_cop2_drc::ldv()
370370{
371371   UINT32 op = m_op;
372372   UINT32 ea = 0;
r241968r241969
405405//
406406// Loads up to 16 bytes starting from vector byte index
407407
408void rsp_cop2_drc::lqv()
408inline void rsp_cop2_drc::lqv()
409409{
410410   UINT32 op = m_op;
411411   int dest = (op >> 16) & 0x1f;
r241968r241969
443443//
444444// Stores up to 16 bytes starting from right side until 16-byte boundary
445445
446void rsp_cop2_drc::lrv()
446inline void rsp_cop2_drc::lrv()
447447{
448448   UINT32 op = m_op;
449449   int dest = (op >> 16) & 0x1f;
r241968r241969
482482//
483483// Loads a byte as the upper 8 bits of each element
484484
485void rsp_cop2_drc::lpv()
485inline void rsp_cop2_drc::lpv()
486486{
487487   UINT32 op = m_op;
488488   int dest = (op >> 16) & 0x1f;
r241968r241969
517517//
518518// Loads a byte as the bits 14-7 of each element
519519
520void rsp_cop2_drc::luv()
520inline void rsp_cop2_drc::luv()
521521{
522522   UINT32 op = m_op;
523523   int dest = (op >> 16) & 0x1f;
r241968r241969
552552//
553553// Loads a byte as the bits 14-7 of each element, with 2-byte stride
554554
555void rsp_cop2_drc::lhv()
555inline void rsp_cop2_drc::lhv()
556556{
557557   UINT32 op = m_op;
558558   int dest = (op >> 16) & 0x1f;
r241968r241969
586586//
587587// Loads a byte as the bits 14-7 of upper or lower quad, with 4-byte stride
588588
589void rsp_cop2_drc::lfv()
589inline void rsp_cop2_drc::lfv()
590590{
591591   UINT32 op = m_op;
592592   int dest = (op >> 16) & 0x1f;
r241968r241969
627627// Loads the full 128-bit vector starting from vector byte index and wrapping to index 0
628628// after byte index 15
629629
630void rsp_cop2_drc::lwv()
630inline void rsp_cop2_drc::lwv()
631631{
632632   UINT32 op = m_op;
633633   int dest = (op >> 16) & 0x1f;
r241968r241969
664664//
665665// Loads one element to maximum of 8 vectors, while incrementing element index
666666
667void rsp_cop2_drc::ltv()
667inline void rsp_cop2_drc::ltv()
668668{
669669   UINT32 op = m_op;
670670   int dest = (op >> 16) & 0x1f;
r241968r241969
791791//
792792// Stores 1 byte from vector byte index
793793
794void rsp_cop2_drc::sbv()
794inline void rsp_cop2_drc::sbv()
795795{
796796   UINT32 op = m_op;
797797   int dest = (op >> 16) & 0x1f;
r241968r241969
822822//
823823// Stores 2 bytes starting from vector byte index
824824
825void rsp_cop2_drc::ssv()
825inline void rsp_cop2_drc::ssv()
826826{
827827   UINT32 op = m_op;
828828   int dest = (op >> 16) & 0x1f;
r241968r241969
859859//
860860// Stores 4 bytes starting from vector byte index
861861
862void rsp_cop2_drc::slv()
862inline void rsp_cop2_drc::slv()
863863{
864864   UINT32 op = m_op;
865865   int dest = (op >> 16) & 0x1f;
r241968r241969
896896//
897897// Stores 8 bytes starting from vector byte index
898898
899void rsp_cop2_drc::sdv()
899inline void rsp_cop2_drc::sdv()
900900{
901901   UINT32 op = m_op;
902902   int dest = (op >> 16) & 0x1f;
r241968r241969
932932//
933933// Stores up to 16 bytes starting from vector byte index until 16-byte boundary
934934
935void rsp_cop2_drc::sqv()
935inline void rsp_cop2_drc::sqv()
936936{
937937   UINT32 op = m_op;
938938   int dest = (op >> 16) & 0x1f;
r241968r241969
968968//
969969// Stores up to 16 bytes starting from right side until 16-byte boundary
970970
971void rsp_cop2_drc::srv()
971inline void rsp_cop2_drc::srv()
972972{
973973   UINT32 op = m_op;
974974   int dest = (op >> 16) & 0x1f;
r241968r241969
10081008//
10091009// Stores upper 8 bits of each element
10101010
1011void rsp_cop2_drc::spv()
1011inline void rsp_cop2_drc::spv()
10121012{
10131013   UINT32 op = m_op;
10141014   int dest = (op >> 16) & 0x1f;
r241968r241969
10511051//
10521052// Stores bits 14-7 of each element
10531053
1054void rsp_cop2_drc::suv()
1054inline void rsp_cop2_drc::suv()
10551055{
10561056   UINT32 op = m_op;
10571057   int dest = (op >> 16) & 0x1f;
r241968r241969
10941094//
10951095// Stores bits 14-7 of each element, with 2-byte stride
10961096
1097void rsp_cop2_drc::shv()
1097inline void rsp_cop2_drc::shv()
10981098{
10991099   UINT32 op = m_op;
11001100   int dest = (op >> 16) & 0x1f;
r241968r241969
11321132//
11331133// Stores bits 14-7 of upper or lower quad, with 4-byte stride
11341134
1135void rsp_cop2_drc::sfv()
1135inline void rsp_cop2_drc::sfv()
11361136{
11371137   UINT32 op = m_op;
11381138   int dest = (op >> 16) & 0x1f;
r241968r241969
11731173// Stores the full 128-bit vector starting from vector byte index and wrapping to index 0
11741174// after byte index 15
11751175
1176void rsp_cop2_drc::swv()
1176inline void rsp_cop2_drc::swv()
11771177{
11781178   UINT32 op = m_op;
11791179   int dest = (op >> 16) & 0x1f;
r241968r241969
12121212//
12131213// Stores one element from maximum of 8 vectors, while incrementing element index
12141214
1215void rsp_cop2_drc::stv()
1215inline void rsp_cop2_drc::stv()
12161216{
12171217   UINT32 op = m_op;
12181218   int dest = (op >> 16) & 0x1f;
r241968r241969
13441344//
13451345// Multiplies signed integer by signed integer * 2
13461346
1347void rsp_cop2_drc::vmulf()
1347inline void rsp_cop2_drc::vmulf()
13481348{
13491349   int op = m_op;
13501350
r241968r241969
13911391// ------------------------------------------------------
13921392//
13931393
1394void rsp_cop2_drc::vmulu()
1394inline void rsp_cop2_drc::vmulu()
13951395{
13961396   int op = m_op;
13971397
r241968r241969
14431443// The result is added into accumulator
14441444// The middle slice of accumulator is stored into destination element
14451445
1446void rsp_cop2_drc::vmudl()
1446inline void rsp_cop2_drc::vmudl()
14471447{
14481448   int op = m_op;
14491449
r241968r241969
14831483// The result is stored into accumulator
14841484// The middle slice of accumulator is stored into destination element
14851485
1486void rsp_cop2_drc::vmudm()
1486inline void rsp_cop2_drc::vmudm()
14871487{
14881488   int op = m_op;
14891489
r241968r241969
15231523// The result is stored into accumulator
15241524// The low slice of accumulator is stored into destination element
15251525
1526void rsp_cop2_drc::vmudn()
1526inline void rsp_cop2_drc::vmudn()
15271527{
15281528   int op = m_op;
15291529
r241968r241969
15631563// The result is stored into highest 32 bits of accumulator, the low slice is zero
15641564// The highest 32 bits of accumulator is saturated into destination element
15651565
1566void rsp_cop2_drc::vmudh()
1566inline void rsp_cop2_drc::vmudh()
15671567{
15681568   int op = m_op;
15691569
r241968r241969
16021602// ------------------------------------------------------
16031603//
16041604
1605void rsp_cop2_drc::vmacf()
1605inline void rsp_cop2_drc::vmacf()
16061606{
16071607   int op = m_op;
16081608
r241968r241969
16461646// ------------------------------------------------------
16471647//
16481648
1649void rsp_cop2_drc::vmacu()
1649inline void rsp_cop2_drc::vmacu()
16501650{
16511651   int op = m_op;
16521652
r241968r241969
17091709// Adds the higher 16 bits of the 32-bit result to accumulator
17101710// The low slice of accumulator is stored into destination element
17111711
1712void rsp_cop2_drc::vmadl()
1712inline void rsp_cop2_drc::vmadl()
17131713{
17141714   int op = m_op;
17151715
r241968r241969
17431743// VMADM
17441744//
17451745
1746void rsp_cop2_drc::vmadm()
1746inline void rsp_cop2_drc::vmadm()
17471747{
17481748   int op = m_op;
17491749
r241968r241969
17811781// VMADN
17821782//
17831783
1784void rsp_cop2_drc::vmadn()
1784inline void rsp_cop2_drc::vmadn()
17851785{
17861786   int op = m_op;
17871787
r241968r241969
18261826// The result is added into highest 32 bits of accumulator, the low slice is zero
18271827// The highest 32 bits of accumulator is saturated into destination element
18281828
1829void rsp_cop2_drc::vmadh()
1829inline void rsp_cop2_drc::vmadh()
18301830{
18311831   int op = m_op;
18321832
r241968r241969
18641864//
18651865// Adds two vector registers and carry flag, the result is saturated to 32767
18661866
1867void rsp_cop2_drc::vadd()
1867inline void rsp_cop2_drc::vadd()
18681868{
18691869   int op = m_op;
18701870
r241968r241969
19041904// Subtracts two vector registers and carry flag, the result is saturated to -32768
19051905// TODO: check VS2REG == VDREG
19061906
1907void rsp_cop2_drc::vsub()
1907inline void rsp_cop2_drc::vsub()
19081908{
19091909   int op = m_op;
19101910
r241968r241969
19441944//
19451945// Changes the sign of source register 2 if source register 1 is negative and stores the result to destination register
19461946
1947void rsp_cop2_drc::vabs()
1947inline void rsp_cop2_drc::vabs()
19481948{
19491949   int op = m_op;
19501950
r241968r241969
19951995// Adds two vector registers, the carry out is stored into carry register
19961996// TODO: check VS2REG = VDREG
19971997
1998void rsp_cop2_drc::vaddc()
1998inline void rsp_cop2_drc::vaddc()
19991999{
20002000   int op = m_op;
20012001
r241968r241969
20382038// Subtracts two vector registers, the carry out is stored into carry register
20392039// TODO: check VS2REG = VDREG
20402040
2041void rsp_cop2_drc::vsubc()
2041inline void rsp_cop2_drc::vsubc()
20422042{
20432043   int op = m_op;
20442044
r241968r241969
20842084//
20852085// Adds two vector registers bytewise with rounding
20862086
2087void rsp_cop2_drc::vaddb()
2087inline void rsp_cop2_drc::vaddb()
20882088{
20892089   const int op = m_op;
20902090   const int round = (EL == 0) ? 0 : (1 << (EL - 1));
r241968r241969
21382138//
21392139// Stores high, middle or low slice of accumulator to destination vector
21402140
2141void rsp_cop2_drc::vsaw()
2141inline void rsp_cop2_drc::vsaw()
21422142{
21432143   int op = m_op;
21442144
r241968r241969
21882188// Sets compare flags if elements in VS1 are less than VS2
21892189// Moves the element in VS2 to destination vector
21902190
2191void rsp_cop2_drc::vlt()
2191inline void rsp_cop2_drc::vlt()
21922192{
21932193   int op = m_op;
21942194
r241968r241969
22462246// Sets compare flags if elements in VS1 are equal with VS2
22472247// Moves the element in VS2 to destination vector
22482248
2249void rsp_cop2_drc::veq()
2249inline void rsp_cop2_drc::veq()
22502250{
22512251   int op = m_op;
22522252
r241968r241969
22932293// Sets compare flags if elements in VS1 are not equal with VS2
22942294// Moves the element in VS2 to destination vector
22952295
2296void rsp_cop2_drc::vne()
2296inline void rsp_cop2_drc::vne()
22972297{
22982298   int op = m_op;
22992299
r241968r241969
23402340// Sets compare flags if elements in VS1 are greater or equal with VS2
23412341// Moves the element in VS2 to destination vector
23422342
2343void rsp_cop2_drc::vge()
2343inline void rsp_cop2_drc::vge()
23442344{
23452345   int op = m_op;
23462346
r241968r241969
23852385//
23862386// Vector clip low
23872387
2388void rsp_cop2_drc::vcl()
2388inline void rsp_cop2_drc::vcl()
23892389{
23902390   int op = m_op;
23912391
r241968r241969
24882488//
24892489// Vector clip high
24902490
2491void rsp_cop2_drc::vch()
2491inline void rsp_cop2_drc::vch()
24922492{
24932493   int op = m_op;
24942494
r241968r241969
25752575//
25762576// Vector clip reverse
25772577
2578void rsp_cop2_drc::vcr()
2578inline void rsp_cop2_drc::vcr()
25792579{
25802580   int op = m_op;
25812581
r241968r241969
26442644//
26452645// Merges two vectors according to compare flags
26462646
2647void rsp_cop2_drc::vmrg()
2647inline void rsp_cop2_drc::vmrg()
26482648{
26492649   int op = m_op;
26502650
r241968r241969
26822682//
26832683// Bitwise AND of two vector registers
26842684
2685void rsp_cop2_drc::vand()
2685inline void rsp_cop2_drc::vand()
26862686{
26872687   int op = m_op;
26882688
r241968r241969
27122712//
27132713// Bitwise NOT AND of two vector registers
27142714
2715void rsp_cop2_drc::vnand()
2715inline void rsp_cop2_drc::vnand()
27162716{
27172717   int op = m_op;
27182718
r241968r241969
27422742//
27432743// Bitwise OR of two vector registers
27442744
2745void rsp_cop2_drc::vor()
2745inline void rsp_cop2_drc::vor()
27462746{
27472747   int op = m_op;
27482748
r241968r241969
27722772//
27732773// Bitwise NOT OR of two vector registers
27742774
2775void rsp_cop2_drc::vnor()
2775inline void rsp_cop2_drc::vnor()
27762776{
27772777   int op = m_op;
27782778
r241968r241969
28022802//
28032803// Bitwise XOR of two vector registers
28042804
2805void rsp_cop2_drc::vxor()
2805inline void rsp_cop2_drc::vxor()
28062806{
28072807   int op = m_op;
28082808
r241968r241969
28322832//
28332833// Bitwise NOT XOR of two vector registers
28342834
2835void rsp_cop2_drc::vnxor()
2835inline void rsp_cop2_drc::vnxor()
28362836{
28372837   int op = m_op;
28382838
r241968r241969
28622862//
28632863// Calculates reciprocal
28642864
2865void rsp_cop2_drc::vrcp()
2865inline void rsp_cop2_drc::vrcp()
28662866{
28672867   int op = m_op;
28682868
r241968r241969
29272927//
29282928// Calculates reciprocal low part
29292929
2930void rsp_cop2_drc::vrcpl()
2930inline void rsp_cop2_drc::vrcpl()
29312931{
29322932   int op = m_op;
29332933
r241968r241969
30123012//
30133013// Calculates reciprocal high part
30143014
3015void rsp_cop2_drc::vrcph()
3015inline void rsp_cop2_drc::vrcph()
30163016{
30173017   int op = m_op;
30183018
r241968r241969
30423042//
30433043// Moves element from vector to destination vector
30443044
3045void rsp_cop2_drc::vmov()
3045inline void rsp_cop2_drc::vmov()
30463046{
30473047   int op = m_op;
30483048
r241968r241969
30683068//
30693069// Calculates reciprocal square-root
30703070
3071void rsp_cop2_drc::vrsq()
3071inline void rsp_cop2_drc::vrsq()
30723072{
30733073   int op = m_op;
30743074
r241968r241969
31993199//
32003200// Calculates reciprocal square-root low part
32013201
3202void rsp_cop2_drc::vrsql()
3202inline void rsp_cop2_drc::vrsql()
32033203{
32043204   int op = m_op;
32053205
r241968r241969
32853285//
32863286// Calculates reciprocal square-root high part
32873287
3288void rsp_cop2_drc::vrsqh()
3288inline void rsp_cop2_drc::vrsqh()
32893289{
32903290   int op = m_op;
32913291
r241968r241969
35533553    Vector Flag Reading/Writing
35543554***************************************************************************/
35553555
3556void rsp_cop2_drc::mfc2()
3556inline void rsp_cop2_drc::mfc2()
35573557{
35583558   UINT32 op = m_op;
35593559   int el = (op >> 7) & 0xf;
r241968r241969
35683568   ((rsp_cop2 *)param)->mfc2();
35693569}
35703570
3571void rsp_cop2_drc::cfc2()
3571inline void rsp_cop2_drc::cfc2()
35723572{
35733573   UINT32 op = m_op;
35743574   if (RTREG)
r241968r241969
36333633}
36343634
36353635
3636void rsp_cop2_drc::mtc2()
3636inline void rsp_cop2_drc::mtc2()
36373637{
36383638   UINT32 op = m_op;
36393639   int el = (op >> 7) & 0xf;
r241968r241969
36473647}
36483648
36493649
3650void rsp_cop2_drc::ctc2()
3650inline void rsp_cop2_drc::ctc2()
36513651{
36523652   UINT32 op = m_op;
36533653   switch(RDREG)
trunk/src/emu/machine/i6300esb.c
r241968r241969
3939   AM_RANGE(0x88, 0x8b) AM_READWRITE8 (d31_err_cfg_r,          d31_err_cfg_w,          0x000000ff)
4040   AM_RANGE(0x88, 0x8b) AM_READWRITE8 (d31_err_sts_r,          d31_err_sts_w,          0x00ff0000)
4141   AM_RANGE(0x90, 0x93) AM_READWRITE16(pci_dma_cfg_r,          pci_dma_cfg_w,          0x0000ffff)
42   AM_RANGE(0xa0, 0xa3) AM_READWRITE16(gen_pmcon_1_r,          gen_pmcon_1_w,          0x0000ffff)
43   AM_RANGE(0xa0, 0xa3) AM_READWRITE16(gen_pmcon_2_r,          gen_pmcon_2_w,          0xffff0000)
44   AM_RANGE(0xa4, 0xa7) AM_READWRITE8 (gen_pmcon_3_r,          gen_pmcon_3_w,          0x000000ff)
45   AM_RANGE(0xac, 0xaf) AM_READWRITE  (rst_cnt2_r,             rst_cnt2_w)
46   AM_RANGE(0xb0, 0xb3) AM_READWRITE8 (apm_cnt_r,              apm_cnt_w,              0x00ff0000)
47   AM_RANGE(0xb0, 0xb3) AM_READWRITE8 (apm_sts_r,              apm_sts_w,              0xff000000)
48   AM_RANGE(0xb8, 0xbb) AM_READWRITE  (gpi_rout_r,             gpi_rout_w)
49   AM_RANGE(0xc0, 0xc3) AM_READWRITE8 (mon_fwd_en_r,           mon_fwd_en_w,           0x000000ff)
50   AM_RANGE(0xc4, 0xcb) AM_READWRITE16(mon_trp_rng_r,          mon_trp_rng_w,          0xffffffff)
51   AM_RANGE(0xcc, 0xcf) AM_READWRITE16(mon_trp_msk_r,          mon_trp_msk_w,          0x0000ffff)
5242   AM_RANGE(0xd0, 0xd3) AM_READWRITE  (gen_cntl_r,             gen_cntl_w)
5343   AM_RANGE(0xd4, 0xd7) AM_READWRITE8 (gen_sta_r,              gen_sta_w,              0x000000ff)
5444   AM_RANGE(0xd4, 0xd7) AM_READWRITE8 (back_cntl_r,            back_cntl_w,            0x0000ff00)
r241968r241969
10696   etr1 = 0x00000000;
10797   siu_config_port = 0;
10898   siu_config_state = 0;
109   gen_pmcon_1 = 0;
110   gen_pmcon_2 = 0;
111   gen_pmcon_3 = 0;
112   rst_cnt2 = 0;
113   apm_cnt = 0;
114   apm_sts = 0;
115   gpi_rout = 0;
116   mon_fwd_en = 0;
117   memset(mon_trp_rng, 0, sizeof(mon_trp_rng));
118   mon_trp_msk = 0;
11999}
120100
121101void i6300esb_lpc_device::reset_all_mappings()
r241968r241969
276256   logerror("%s: pci_dma_cfg = %04x\n", tag(), pci_dma_cfg);
277257}
278258
279READ16_MEMBER (i6300esb_lpc_device::gen_pmcon_1_r)
280{
281   return gen_pmcon_1;
282}
283
284WRITE16_MEMBER(i6300esb_lpc_device::gen_pmcon_1_w)
285{
286   COMBINE_DATA(&gen_pmcon_1);
287   logerror("%s: gen_pmcon_1 = %04x\n", tag(), gen_pmcon_1);
288}
289
290READ16_MEMBER (i6300esb_lpc_device::gen_pmcon_2_r)
291{
292   return gen_pmcon_2;
293}
294
295WRITE16_MEMBER(i6300esb_lpc_device::gen_pmcon_2_w)
296{
297   COMBINE_DATA(&gen_pmcon_2);
298   logerror("%s: gen_pmcon_2 = %04x\n", tag(), gen_pmcon_2);
299}
300
301READ8_MEMBER  (i6300esb_lpc_device::gen_pmcon_3_r)
302{
303   return gen_pmcon_3;
304}
305
306WRITE8_MEMBER (i6300esb_lpc_device::gen_pmcon_3_w)
307{
308   gen_pmcon_3 = data;
309   logerror("%s: gen_pmcon_3 = %02x\n", tag(), gen_pmcon_3);
310}
311
312READ32_MEMBER (i6300esb_lpc_device::rst_cnt2_r)
313{
314   return rst_cnt2;
315}
316
317WRITE32_MEMBER(i6300esb_lpc_device::rst_cnt2_w)
318{
319   COMBINE_DATA(&rst_cnt2);
320   logerror("%s: rst_cnt2 = %08x\n", tag(), rst_cnt2);
321}
322
323READ8_MEMBER  (i6300esb_lpc_device::apm_cnt_r)
324{
325   return apm_cnt;
326}
327
328WRITE8_MEMBER (i6300esb_lpc_device::apm_cnt_w)
329{
330   apm_cnt = data;
331   logerror("%s: apm_cnt = %02x\n", tag(), apm_cnt);
332}
333
334READ8_MEMBER  (i6300esb_lpc_device::apm_sts_r)
335{
336   return apm_sts;
337}
338
339WRITE8_MEMBER (i6300esb_lpc_device::apm_sts_w)
340{
341   apm_sts = data;
342   logerror("%s: apm_sts = %02x\n", tag(), apm_sts);
343}
344
345READ32_MEMBER (i6300esb_lpc_device::gpi_rout_r)
346{
347   return gpi_rout;
348}
349
350WRITE32_MEMBER(i6300esb_lpc_device::gpi_rout_w)
351{
352   COMBINE_DATA(&gpi_rout);
353   logerror("%s: gpi_rout = %08x\n", tag(), gpi_rout);
354}
355
356READ8_MEMBER  (i6300esb_lpc_device::mon_fwd_en_r)
357{
358   return mon_fwd_en;
359}
360
361WRITE8_MEMBER (i6300esb_lpc_device::mon_fwd_en_w)
362{
363   mon_fwd_en = data;
364   logerror("%s: mon_fwd_en = %02x\n", tag(), mon_fwd_en);
365}
366
367READ16_MEMBER (i6300esb_lpc_device::mon_trp_rng_r)
368{
369   return mon_trp_rng[offset];
370}
371
372WRITE16_MEMBER(i6300esb_lpc_device::mon_trp_rng_w)
373{
374   COMBINE_DATA(&mon_trp_rng[offset]);
375   logerror("%s: mon_trp_rng[%d] = %04x\n", tag(), 4+offset, mon_trp_rng[offset]);
376}
377
378READ16_MEMBER (i6300esb_lpc_device::mon_trp_msk_r)
379{
380   return mon_trp_msk;
381}
382
383WRITE16_MEMBER(i6300esb_lpc_device::mon_trp_msk_w)
384{
385   COMBINE_DATA(&mon_trp_msk);
386   logerror("%s: mon_trp_msk = %04x\n", tag(), mon_trp_msk);
387}
388
389259READ32_MEMBER (i6300esb_lpc_device::gen_cntl_r)
390260{
391261   return gen_cntl;
trunk/src/emu/machine/i6300esb.h
r241968r241969
2929private:
3030   DECLARE_ADDRESS_MAP(internal_io_map, 32);
3131
32   UINT32 pmbase, gpio_base, fwh_sel1, gen_cntl, etr1, rst_cnt2, gpi_rout;
33   UINT16 bios_cntl, pci_dma_cfg, gen1_dec, lpc_en, gen2_dec, fwh_sel2, func_dis, gen_pmcon_1, gen_pmcon_2;
34   UINT16 mon_trp_rng[4], mon_trp_msk;
32   UINT32 pmbase, gpio_base, fwh_sel1, gen_cntl, etr1;
33   UINT16 bios_cntl, pci_dma_cfg, gen1_dec, lpc_en, gen2_dec, fwh_sel2, func_dis;
3534   UINT8 pirq_rout[8];
3635   UINT8 acpi_cntl, tco_cntl, gpio_cntl, serirq_cntl, d31_err_cfg, d31_err_sts, gen_sta, back_cntl, rtc_conf;
3736   UINT8 lpc_if_com_range, lpc_if_fdd_lpt_range, lpc_if_sound_range, fwh_dec_en1, fwh_dec_en2, siu_config_port;
38   UINT8 gen_pmcon_3, apm_cnt, apm_sts, mon_fwd_en;
3937   int siu_config_state;
4038
4139   DECLARE_WRITE8_MEMBER (nop_w);
r241968r241969
6563   DECLARE_WRITE8_MEMBER (d31_err_sts_w);
6664   DECLARE_READ16_MEMBER (pci_dma_cfg_r);          // 90
6765   DECLARE_WRITE16_MEMBER(pci_dma_cfg_w);
68   DECLARE_READ16_MEMBER (gen_pmcon_1_r);          // a0
69   DECLARE_WRITE16_MEMBER(gen_pmcon_1_w);
70   DECLARE_READ16_MEMBER (gen_pmcon_2_r);          // a2
71   DECLARE_WRITE16_MEMBER(gen_pmcon_2_w);
72   DECLARE_READ8_MEMBER  (gen_pmcon_3_r);          // a4
73   DECLARE_WRITE8_MEMBER (gen_pmcon_3_w);
74   DECLARE_READ32_MEMBER (rst_cnt2_r);             // ac
75   DECLARE_WRITE32_MEMBER(rst_cnt2_w);
76   DECLARE_READ8_MEMBER  (apm_cnt_r);              // b2
77   DECLARE_WRITE8_MEMBER (apm_cnt_w);
78   DECLARE_READ8_MEMBER  (apm_sts_r);              // b3
79   DECLARE_WRITE8_MEMBER (apm_sts_w);
80   DECLARE_READ32_MEMBER (gpi_rout_r);             // b8
81   DECLARE_WRITE32_MEMBER(gpi_rout_w);
82   DECLARE_READ8_MEMBER  (mon_fwd_en_r);           // c0
83   DECLARE_WRITE8_MEMBER (mon_fwd_en_w);
84   DECLARE_READ16_MEMBER (mon_trp_rng_r);          // c4-ca
85   DECLARE_WRITE16_MEMBER(mon_trp_rng_w);
86   DECLARE_READ16_MEMBER (mon_trp_msk_r);          // cc
87   DECLARE_WRITE16_MEMBER(mon_trp_msk_w);
8866   DECLARE_READ32_MEMBER (gen_cntl_r);             // d0
8967   DECLARE_WRITE32_MEMBER(gen_cntl_w);
9068   DECLARE_READ8_MEMBER  (gen_sta_r);              // d4
trunk/src/emu/machine/machine.mak
r241968r241969
18921892
18931893#-------------------------------------------------
18941894#
1895#@src/emu/machine/steppers.h,MACHINES += STEPPERS
1896#-------------------------------------------------
1897
1898ifneq ($(filter STEPPERS,$(MACHINES)),)
1899MACHINEOBJS += $(MACHINEOBJ)/steppers.o
1900endif
1901
1902#-------------------------------------------------
1903#
18951904#@src/emu/machine/corvushd.h,MACHINES += CORVUSHD
18961905#-------------------------------------------------
18971906ifneq ($(filter CORVUSHD,$(MACHINES)),)
trunk/src/emu/machine/steppers.c
r0r241969
1///////////////////////////////////////////////////////////////////////////
2//                                                                       //
3// steppers.c steppermotor emulation                                     //
4//                                                                       //
5// Emulates : Stepper motors driven with full step or half step          //
6//            also emulates the index optic                              //
7//                                                                       //
8// 26-05-2012: J. Wallace - Implemented proper phase alignment, we no    //
9//                          longer need reverse interfaces here, the     //
10//                          layout will suffice. Added belt reel handler.//
11// 09-04-2012: J. Wallace - Studied some old reel motors and added a     //
12//                          number of new stepper types. I am yet to     //
13//                          add them to drivers, but barring some init   //
14//                          stuff, they should work.                     //
15// 15-01-2012: J. Wallace - Total internal rewrite to remove the table   //
16//                          hoodoo that stops anyone but me actually     //
17//                          updating this. In theory, we should be able  //
18//                          to adapt the phase code to any reel type by  //
19//                          studying a game's startup                    //
20//                          Documentation is much better now.            //
21// 04-04-2011: J. Wallace - Added reverse spin (this is necessary for    //
22//                          accuracy), and improved wraparound logic     //
23//    03-2011:              New 2D array to remove reel bounce and       //
24//                          make more realistic                          //
25// 26-01-2007: J. Wallace - Rewritten to make it more flexible           //
26//                          and to allow indices to be set in drivers    //
27// 29-12-2006: J. Wallace - Added state save support                     //
28// 05-03-2004: Re-Animator                                               //
29//                                                                       //
30// TODO:  add further types of stepper motors if needed (Konami/IGT?)    //
31//        Someone who understands the device system may want to convert  //
32//        this                                                           //
33//        200 Step reels can alter their relative opto tab position,     //
34//        may be worth adding the phase setting to the interface         //
35//        There are reports that some games use a pulse that is too short//
36//        to give a 'judder' effect for holds, etc. We'll need to time   //
37//        the pulses to keep tack of this without going out of sync.     //
38//        Check 20RM and Starpoint 200 step                              //
39///////////////////////////////////////////////////////////////////////////
40
41#include "emu.h"
42#include "steppers.h"
43
44/* local prototypes */
45
46static void update_optic(int which);
47
48/* local vars */
49
50struct stepper
51{
52   const stepper_interface *intf;
53   UINT8    pattern,   /* coil pattern */
54         old_pattern,    /* old coil pattern */
55         initphase,
56            phase,  /* motor phase */
57         old_phase,  /* old phase */
58            type;   /* reel type */
59   INT16   step_pos,   /* step position 0 - max_steps */
60         max_steps;  /* maximum step position */
61   INT32   abs_step_pos; /* absolute step position */
62
63   INT16 index_start,  /* start position of index (in half steps) */
64         index_end,  /* end position of index (in half steps) */
65         index_patt; /* pattern needed on coils (0=don't care) */
66
67   UINT8 optic;
68};
69
70static stepper step[MAX_STEPPERS];
71
72/* useful interfaces (Starpoint is a very common setup)*/
73const stepper_interface starpoint_interface_48step =
74{
75   STARPOINT_48STEP_REEL,
76   1,
77   3,
78   0x09,
79   4
80};
81
82const stepper_interface starpointrm20_interface_48step =
83{
84   STARPOINT_48STEP_REEL,
85   16,
86   24,
87   0x09,
88   7
89};
90const stepper_interface starpoint_interface_200step_reel =
91{
92   STARPOINT_200STEP_REEL,
93   12,
94   24,
95   0x09,
96   7
97};
98// guess
99const stepper_interface ecoin_interface_200step_reel =
100{
101   ECOIN_200STEP_REEL,
102   12,
103   24,
104   0x09,
105   7
106};
107
108
109
110///////////////////////////////////////////////////////////////////////////
111void stepper_config(running_machine &machine, int which, const stepper_interface *intf)
112{
113   assert_always(machine.phase() == MACHINE_PHASE_INIT, "Can only call stepper_config at init time!");
114   assert_always((which >= 0) && (which < MAX_STEPPERS), "stepper_config called on an invalid stepper motor!");
115   assert_always(intf, "stepper_config called with an invalid interface!");
116
117   step[which].intf = intf;
118
119   step[which].type = intf->type;
120   step[which].index_start = intf->index_start;/* location of first index value in half steps */
121   step[which].index_end   = intf->index_end;  /* location of last index value in half steps */
122   step[which].index_patt  = intf->index_patt; /* hex value of coil pattern (0 if not needed)*/
123   step[which].initphase   = intf->initphase; /* Phase at 0 steps, for alignment) */
124
125
126   step[which].pattern     = 0;
127   step[which].old_pattern = 0;
128   step[which].step_pos    = 0;
129   step[which].abs_step_pos= 0;
130   step[which].phase = step[which].initphase;
131   step[which].old_phase = step[which].initphase;
132
133
134   switch ( step[which].type )
135   {   default:
136      case STARPOINT_48STEP_REEL:  /* STARPOINT RMxxx */
137      case BARCREST_48STEP_REEL :  /* Barcrest Reel unit */
138      case MPU3_48STEP_REEL :
139      case GAMESMAN_48STEP_REEL :  /* Gamesman GMxxxx */
140      case PROJECT_48STEP_REEL :
141      step[which].max_steps = (48*2);
142      break;
143      case GAMESMAN_100STEP_REEL :
144      step[which].max_steps = (100*2);
145      break;
146      case STARPOINT_144STEP_DICE :/* STARPOINT 1DCU DICE mechanism */
147      //Dice reels are 48 step motors, but complete three full cycles between opto updates
148      step[which].max_steps = ((48*3)*2);
149      break;
150      case STARPOINT_200STEP_REEL :
151      case GAMESMAN_200STEP_REEL :
152      case ECOIN_200STEP_REEL :
153      step[which].max_steps = (200*2);
154      break;
155   }
156
157   state_save_register_item(machine, "stepper", NULL, which, step[which].index_start);
158   state_save_register_item(machine, "stepper", NULL, which, step[which].index_end);
159   state_save_register_item(machine, "stepper", NULL, which, step[which].index_patt);
160   state_save_register_item(machine, "stepper", NULL, which, step[which].initphase);
161   state_save_register_item(machine, "stepper", NULL, which, step[which].phase);
162   state_save_register_item(machine, "stepper", NULL, which, step[which].old_phase);
163   state_save_register_item(machine, "stepper", NULL, which, step[which].pattern);
164   state_save_register_item(machine, "stepper", NULL, which, step[which].old_pattern);
165   state_save_register_item(machine, "stepper", NULL, which, step[which].step_pos);
166   state_save_register_item(machine, "stepper", NULL, which, step[which].abs_step_pos);
167   state_save_register_item(machine, "stepper", NULL, which, step[which].max_steps);
168   state_save_register_item(machine, "stepper", NULL, which, step[which].type);
169}
170
171///////////////////////////////////////////////////////////////////////////
172int stepper_get_position(int which)
173{
174   return step[which].step_pos;
175}
176
177///////////////////////////////////////////////////////////////////////////
178int stepper_get_absolute_position(int which)
179{
180   return step[which].abs_step_pos;
181}
182
183///////////////////////////////////////////////////////////////////////////
184
185int stepper_get_max(int which)
186{
187   return step[which].max_steps;
188}
189
190///////////////////////////////////////////////////////////////////////////
191
192static void update_optic(int which)
193{
194   int pos   = step[which].step_pos,
195      start = step[which].index_start,
196      end = step[which].index_end;
197
198   if (start > end) // cope with index patterns that wrap around
199   {
200      if ( (( pos > start ) || ( pos < end )) &&
201      ( ( step[which].pattern == step[which].index_patt || step[which].index_patt==0) ||
202      ( step[which].pattern == 0 &&
203      (step[which].old_pattern == step[which].index_patt || step[which].index_patt==0)
204      ) ) )
205      {
206         step[which].optic = 1;
207      }
208      else step[which].optic = 0;
209      }
210   else
211   {
212      if ( (( pos > start ) && ( pos < end )) &&
213      ( ( step[which].pattern == step[which].index_patt || step[which].index_patt==0) ||
214      ( step[which].pattern == 0 &&
215      (step[which].old_pattern == step[which].index_patt || step[which].index_patt==0)
216      ) ) )
217      {
218      step[which].optic = 1;
219      }
220      else step[which].optic = 0;
221   }
222}
223///////////////////////////////////////////////////////////////////////////
224
225void stepper_reset_position(int which)
226{
227   step[which].step_pos    = 0x00;
228   step[which].abs_step_pos= 0x00;
229   step[which].pattern     = 0x00;
230   step[which].old_pattern = 0x00;
231   step[which].phase = step[which].initphase;
232   step[which].old_phase = step[which].initphase;
233   update_optic(which);
234}
235
236///////////////////////////////////////////////////////////////////////////
237
238int stepper_optic_state(int which)
239{
240   int result = 0;
241
242   if ( which < MAX_STEPPERS )
243   {
244      result = step[which].optic;
245   }
246
247   return result;
248}
249
250///////////////////////////////////////////////////////////////////////////
251
252int stepper_update(int which, UINT8 pattern)
253{
254   int changed = 0;
255
256   /* This code probably makes more sense if you visualise what is being emulated, namely
257   a spinning drum with two electromagnets inside. Essentially, the CPU
258   activates a pair of windings on these magnets leads as necessary to attract and repel the drum to pull it round and
259   display as appropriate. To attempt to visualise the rotation effect, take a look at the compass rose below, representing a side on view of the reel,
260   the numbers indicate the phase information as used
261
262       7
263       N
264   1 W   E 5
265       S
266       3
267
268   For sake of accuracy, we're representing all possible phases of the motor, effectively moving the motor one half step at a time, so a 48 step motor becomes
269   96 half steps. This is necessary because of some programs running the wiring in series with a distinct delay between the pair being completed. This causes
270   a small movement that may trigger the optic tab.
271   */
272
273   int pos,steps=0;
274   step[which].pattern = pattern;
275   switch ( step[which].type )
276   {
277      default:
278      logerror("No reel type specified for %x!\n",which);
279      break;
280      case STARPOINT_48STEP_REEL : /* STARPOINT RMxxx */
281      case GAMESMAN_200STEP_REEL : /* Gamesman GMxxxx */
282      case STARPOINT_144STEP_DICE :/* STARPOINT 1DCU DICE mechanism */
283      case STARPOINT_200STEP_REEL :/* STARPOINT 1DCU DICE mechanism */
284      //Standard drive table is 2,6,4,5,1,9,8,a
285      //NOTE: This runs through the stator patterns in such a way as to drive the reel forward (downwards from the player's view, clockwise on our rose)
286      //The Heber 'Pluto' controller runs this in reverse
287      switch (pattern)
288      {             //Black  Blue  Red  Yellow
289         case 0x02://  0     0     1     0
290         step[which].phase = 7;
291         break;
292         case 0x06://  0     1     1     0
293         step[which].phase = 6;
294         break;
295         case 0x04://  0     1     0     0
296         step[which].phase = 5;
297         break;
298         case 0x05://  0     1     0     1
299         step[which].phase = 4;
300         break;
301         case 0x01://  0     0     0     1
302         step[which].phase = 3;
303         break;
304         case 0x09://  1     0     0     1
305         step[which].phase = 2;
306         break;
307         case 0x08://  1     0     0     0
308         step[which].phase = 1;
309         break;
310         case 0x0A://  1     0     1     0
311         step[which].phase = 0;
312         break;
313         //          Black  Blue  Red  Yellow
314         case 0x03://  0     0     1     1
315         {
316            if ((step[which].old_phase ==6)||(step[which].old_phase == 0)) // if the previous pattern had the drum in the northern quadrant, it will point north now
317            {
318               step[which].phase = 7;
319            }
320            else //otherwise it will line up due south
321            {
322               step[which].phase = 3;
323            }
324         }
325         break;
326         case 0x0C://  1     1     0     0
327         {
328            if ((step[which].old_phase ==6)||(step[which].old_phase == 4)) // if the previous pattern had the drum in the eastern quadrant, it will point east now
329            {
330               step[which].phase = 5;
331            }
332            else //otherwise it will line up due west
333            {
334               step[which].phase = 1;
335            }
336         }
337         break;
338      }
339      break;
340
341      case BARCREST_48STEP_REEL :
342      case GAMESMAN_48STEP_REEL :
343      case GAMESMAN_100STEP_REEL :
344      //Standard drive table is 1,3,2,6,4,C,8,9
345      //Gamesman 48 step uses this pattern shifted one place forward, though this shouldn't matter
346      switch (pattern)
347      {
348         //             Yellow   Brown  Orange Black
349         case 0x01://  0        0      0      1
350         step[which].phase = 7;
351         break;
352         case 0x03://  0        0      1      1
353         step[which].phase = 6;
354         break;
355         case 0x02://  0        0      1      0
356         step[which].phase = 5;
357         break;
358         case 0x06://  0        1      1      0
359         step[which].phase = 4;
360         break;
361         case 0x04://  0        1      0      0
362         step[which].phase = 3;
363         break;
364         case 0x0C://  1        1      0      0
365         step[which].phase = 2;
366         break;
367         case 0x08://  1        0      0      0
368         step[which].phase = 1;
369         break;//YOLB
370         case 0x09://  1        0      0      1
371         step[which].phase = 0;
372         break;
373
374         // The below values should not be used by anything sane, as they effectively ignore one stator side entirely
375         //          Yellow   Brown  Orange Black
376         case 0x05://   0       1       0     1
377         {
378            if ((step[which].old_phase ==6)||(step[which].old_phase == 0)) // if the previous pattern had the drum in the northern quadrant, it will point north now
379            {
380               step[which].phase = 7;
381            }
382            else //otherwise it will line up due south
383            {
384               step[which].phase = 3;
385            }
386         }
387         break;
388
389         case 0x0A://   1       0       1     0
390         {
391            if ((step[which].old_phase ==6)||(step[which].old_phase == 4)) // if the previous pattern had the drum in the eastern quadrant, it will point east now
392            {
393               step[which].phase = 5;
394            }
395            else //otherwise it will line up due west
396            {
397               step[which].phase = 1;
398            }
399         }
400         break;
401      }
402      break;
403
404      case MPU3_48STEP_REEL :
405      /* The MPU3 interface is actually the same as the MPU4 setup, but with two active lines instead of four
406         Inverters are used so if a pin is low, the higher bit of the pair is activated, and if high the lower bit is activated.
407         TODO:Check this, 2 and 1 could be switched over.
408       */
409      switch (pattern)
410      {
411      //             Yellow(2)   Brown(1)  Orange(!2) Black(!1)
412         case 0x00 :// 0          0          1         1
413         step[which].phase = 6;
414         break;
415         case 0x01 :// 0          1          1         0
416         step[which].phase = 4;
417         break;
418         case 0x03 :// 1          1          0         0
419         step[which].phase = 2;
420         break;
421         case 0x02 :// 1          0          0         1
422         step[which].phase = 0;
423         break;
424      }
425      break;
426
427      case ECOIN_200STEP_REEL :
428      //While the 48 and 100 step models appear to be reverse driven Starpoint reels, the 200 step model seems bespoke, certainly in terms of wiring.
429      //On a Proconn machine this same pattern is seen but running in reverse
430      //Standard drive table is 8,c,4,6,2,3,1,9
431      switch (pattern)
432      {
433         case 0x08://  0     0     1     0
434         step[which].phase = 7;
435         break;
436         case 0x0c://  0     1     1     0
437         step[which].phase = 6;
438         break;
439         case 0x04://  0     1     0     0
440         step[which].phase = 5;
441         break;
442         case 0x06://  0     1     0     1
443         step[which].phase = 4;
444         break;
445         case 0x02://  0     0     0     1
446         step[which].phase = 3;
447         break;
448         case 0x03://  1     0     0     1
449         step[which].phase = 2;
450         break;
451         case 0x01://  1     0     0     0
452         step[which].phase = 1;
453         break;
454         case 0x09://  1     0     1     0
455         step[which].phase = 0;
456         break;
457         case 0x0a://  0     0     1     1
458         {
459            if ((step[which].old_phase ==6)||(step[which].old_phase == 0)) // if the previous pattern had the drum in the northern quadrant, it will point north now
460            {
461               step[which].phase = 7;
462            }
463            else //otherwise it will line up due south
464            {
465               step[which].phase = 3;
466            }
467         }
468         break;
469         case 0x07://  1     1     0     0
470         {
471            if ((step[which].old_phase ==6)||(step[which].old_phase == 4)) // if the previous pattern had the drum in the eastern quadrant, it will point east now
472            {
473               step[which].phase = 5;
474            }
475            else //otherwise it will line up due west
476            {
477               step[which].phase = 1;
478            }
479         }
480         break;
481      }
482      break;
483
484      case PROJECT_48STEP_REEL :
485      //Standard drive table is 8,c,4,5,1,3,2,a
486      //This appears to be basically a rewired Gamesman (the reel PCB looks like it does some shuffling)
487      //TODO: Not sure if this should be represented as a type here, or by defining it as a Gamesman in the driver and bitswapping.
488      switch (pattern)
489      {
490         case 0x08://  0     0     1     0
491         step[which].phase = 7;
492         break;
493         case 0x0c://  0     1     1     0
494         step[which].phase = 6;
495         break;
496         case 0x04://  0     1     0     0
497         step[which].phase = 5;
498         break;
499         case 0x05://  0     1     0     1
500         step[which].phase = 4;
501         break;
502         case 0x01://  0     0     0     1
503         step[which].phase = 3;
504         break;
505         case 0x03://  1     0     0     1
506         step[which].phase = 2;
507         break;
508         case 0x02://  1     0     0     0
509         step[which].phase = 1;
510         break;
511         case 0x0a://  1     0     1     0
512         step[which].phase = 0;
513         break;
514         case 0x09://  0     0     1     1
515         {
516            if ((step[which].old_phase ==6)||(step[which].old_phase == 0)) // if the previous pattern had the drum in the northern quadrant, it will point north now
517            {
518               step[which].phase = 7;
519            }
520            else //otherwise it will line up due south
521            {
522               step[which].phase = 3;
523            }
524         }
525         break;
526         case 0x06://  1     1     0     0
527         {
528            if ((step[which].old_phase ==6)||(step[which].old_phase == 4)) // if the previous pattern had the drum in the eastern quadrant, it will point east now
529            {
530               step[which].phase = 5;
531            }
532            else //otherwise it will line up due west
533            {
534               step[which].phase = 1;
535            }
536         }
537         break;
538      }
539      break;
540
541
542
543   }
544
545   steps = step[which].old_phase - step[which].phase;
546
547   if (steps < -4)
548   {
549      steps = steps +8;
550   }
551   if (steps > 4)
552   {
553      steps = steps -8;
554   }
555
556   step[which].old_phase = step[which].phase;
557   step[which].old_pattern = step[which].pattern;
558
559   int max = step[which].max_steps;
560   pos = 0;
561
562   if (max!=0)
563   {
564      step[which].abs_step_pos += steps;
565      pos = (step[which].step_pos + steps + max) % max;
566   }
567   else
568   {
569      logerror("step[%x].max_steps == 0\n",which);
570   }
571
572   if (pos != step[which].step_pos)
573   {
574      changed++;
575   }
576
577   step[which].step_pos = pos;
578   update_optic(which);
579
580   return changed;
581}
trunk/src/emu/machine/steppers.h
r0r241969
1///////////////////////////////////////////////////////////////////////////
2//                                                                       //
3// steppers.c steppermotor emulation                                     //
4//                                                                       //
5// Emulates : stepper motors driven with full step or half step          //
6//            also emulates the index optic                              //
7//                                                                       //
8//                                                                       //
9// TODO:  add further types of stepper motors if needed (Konami/IGT?)    //
10//        Someone who understands the device system may want to convert  //
11//        this                                                           //
12///////////////////////////////////////////////////////////////////////////
13
14
15#ifndef INC_STEPPERS
16#define INC_STEPPERS
17
18#define MAX_STEPPERS            8           /* maximum number of steppers */
19
20#define STARPOINT_48STEP_REEL   0           /* STARPOINT RMXXX reel unit */
21#define STARPOINT_144STEP_DICE  1           /* STARPOINT 1DCU DICE mechanism */
22#define STARPOINT_200STEP_REEL  2
23
24#define BARCREST_48STEP_REEL    3           /* Barcrest bespoke reel unit */
25#define MPU3_48STEP_REEL        4
26
27#define ECOIN_200STEP_REEL      5           /* Probably not bespoke, but can't find a part number */
28
29#define GAMESMAN_48STEP_REEL    6
30#define GAMESMAN_100STEP_REEL   7
31#define GAMESMAN_200STEP_REEL   8
32
33#define PROJECT_48STEP_REEL     9
34
35/*------------- Stepper motor interface structure -----------------*/
36
37struct stepper_interface
38{
39   UINT8 type; /* Reel unit type */
40   INT16 index_start;/* start position of index (in half steps) */
41   INT16 index_end;  /* end position of index (in half steps) */
42   INT16 index_patt; /* pattern needed on coils (0=don't care) */
43   UINT8 initphase; /* Phase at 0, for opto linkage */
44};
45
46extern const stepper_interface starpoint_interface_48step;
47extern const stepper_interface starpointrm20_interface_48step;
48
49extern const stepper_interface starpoint_interface_200step_reel;
50extern const stepper_interface ecoin_interface_200step_reel;
51
52void stepper_config(running_machine &machine, int which, const stepper_interface *intf);
53
54void stepper_reset_position(int id);        /* reset a motor to position 0 */
55
56int  stepper_optic_state(   int id);        /* read a motor's optics */
57
58int  stepper_update(int id, UINT8 pattern); /* update a motor */
59
60int  stepper_get_position(int id);          /* get current position in half steps */
61
62int  stepper_get_absolute_position(int id); /* get current absolute position in half steps */
63
64int  stepper_get_max(int id);               /* get maximum position in half steps */
65#endif
trunk/src/mame/drivers/alinvade.c
r241968r241969
66
77 TODO:
88 - 16 bytes are protected in the c*** range. I'm guessing they used a PROM to protect a
9   simple sub-routine because:
10   * It attempts to jsr from RAM to that area with a 0x10 byte offset (i.e. ROM copies a code snippet to RAM; when it executes
11     it code executes jsr 0xc400 then self-modifies it to 0xc410, rinse and repeat ... up to 0xc7f0 and rolls back);
12   * After that the program has an amusing left-over located at 0xe000-0xe00f (yup, NOPs + a RTS), with the
13     exact same number of times as above;
14   It's unknown at current stage what it really protects tho, game seems working for all I can see ... -AS
15
16 - Sound is entirely guesswork.
9 simple sub-routine because just after that the program has a left-over located at 0xe000-0xe00f (yup, NOPs + a RTS)
10 It's unknown at current stage what it really protects tho ...
1711 
12 Sound is entirely guesswork.
13 
1814 */
1915
2016#include "emu.h"
trunk/src/mame/drivers/sauro.c
r241968r241969
491491   ROM_LOAD( "sp0256-al2.bin",   0x1000, 0x0800, CRC(b504ac15) SHA1(e60fcb5fa16ff3f3b69d36c7a6e955744d3feafc) )
492492ROM_END
493493
494ROM_START( saurorr ) // all roms have original Tecfri stickers
495   ROM_REGION( 0x10000, "maincpu", 0 )
496   ROM_LOAD( "27256-2.bin",     0x00000, 0x8000, CRC(b0d80eab) SHA1(60cbe16d6c87d4681155814a5034b7e9d10bbd81) )
497   ROM_LOAD( "27256-1.bin",     0x08000, 0x8000, CRC(cbb5f06e) SHA1(f93c01006d308e0b6950d720b6fe4409728c79e2) )
498
499   ROM_REGION( 0x10000, "audiocpu", 0 )
500   ROM_LOAD( "sauro-3.bin",     0x00000, 0x8000, CRC(0d501e1b) SHA1(20a56ff30d4fa5d2f483a449703b49153839f6bc) )
501
502   ROM_REGION( 0x10000, "gfx1", 0 )
503   ROM_LOAD( "sauro-6.bin",     0x00000, 0x8000, CRC(4b77cb0f) SHA1(7b9cb2dca561d81390106c1a5c0533dcecaf6f1a) )
504   ROM_LOAD( "sauro-7.bin",     0x08000, 0x8000, CRC(187da060) SHA1(1df156e58379bb39acade02aabab6ff1cb7cc288) )
505
506   ROM_REGION( 0x10000, "gfx2", 0 )
507   ROM_LOAD( "sauro-4.bin",     0x00000, 0x8000, CRC(9b617cda) SHA1(ce26b84ad5ecd6185ae218520e9972645bbf09ad) )
508   ROM_LOAD( "27256-5.bin",     0x08000, 0x8000, CRC(9aabdbe5) SHA1(ef008e368024f9377a8d2bc5863b01c63bc8f55b) ) // contains the changed license logo
509
510   ROM_REGION( 0x20000, "gfx3", 0 )
511   ROM_LOAD( "sauro-8.bin",     0x00000, 0x8000, CRC(e08b5d5e) SHA1(eaaeaa08b19c034ab2a2140f887edffca5f441b9) )
512   ROM_LOAD( "sauro-9.bin",     0x08000, 0x8000, CRC(7c707195) SHA1(0529f6808b0cec3e12ca51bee189841d21577786) )
513   ROM_LOAD( "sauro-10.bin",    0x10000, 0x8000, CRC(c93380d1) SHA1(fc9655cc94c2d2058f83eb341be7e7856a08194f) )
514   ROM_LOAD( "sauro-11.bin",    0x18000, 0x8000, CRC(f47982a8) SHA1(cbaeac272c015d9439f151cfb3449082f11a57a1) )
515
516   ROM_REGION( 0x0c00, "proms", 0 )
517   ROM_LOAD( "82s137-3.bin",    0x0000, 0x0400, CRC(d52c4cd0) SHA1(27d6126b46616c06b55d8018c97f6c3d7805ae9e) )  /* Red component */
518   ROM_LOAD( "82s137-2.bin",    0x0400, 0x0400, CRC(c3e96d5d) SHA1(3f6f21526a4357e4a9a9d56a6f4ef5911af2d120) )  /* Green component */
519   ROM_LOAD( "82s137-1.bin",    0x0800, 0x0400, CRC(bdfcf00c) SHA1(9faf4d7f8959b64faa535c9945eec59c774a3760) )  /* Blue component */
520
521   ROM_REGION( 0x10000, "speech", 0 )
522   /* SP0256 mask rom */
523   ROM_LOAD( "sp0256-al2.bin",   0x1000, 0x0800, CRC(b504ac15) SHA1(e60fcb5fa16ff3f3b69d36c7a6e955744d3feafc) )
524ROM_END
525
526
527494ROM_START( trckydoc )
528495   ROM_REGION( 0x10000, "maincpu", 0 )
529496   ROM_LOAD( "trckydoc.d9",  0x0000,  0x8000, CRC(c6242fc3) SHA1(c8a6f6abe8b51061a113ed75fead0479df68ec40) )
r241968r241969
583550   RAM[0xe000] = 1;
584551}
585552
586GAME( 1987, sauro,    0,        sauro,    tecfri, sauro_state,    tecfri, ROT0, "Tecfri",                                "Sauro", 0 )
587GAME( 1987, saurop,   sauro,    sauro,    tecfri, sauro_state,    tecfri, ROT0, "Tecfri (Philko license)",               "Sauro (Philko license)", 0 )
588GAME( 1987, saurorr,  sauro,    sauro,    tecfri, sauro_state,    tecfri, ROT0, "Tecfri (Recreativos Real S.A. license)","Sauro (Recreativos Real S.A. license)", 0 )
589
553GAME( 1987, sauro,    0,        sauro,    tecfri, sauro_state,    tecfri, ROT0, "Tecfri", "Sauro", 0 )
554GAME( 1987, saurop,   sauro,    sauro,    tecfri, sauro_state,    tecfri, ROT0, "Tecfri (Philko license)", "Sauro (Philko license)", 0 )
590555GAME( 1987, trckydoc, 0,        trckydoc, tecfri, sauro_state,    tecfri, ROT0, "Tecfri", "Tricky Doc (set 1)", 0 )
591556GAME( 1987, trckydoca,trckydoc, trckydoc, trckydoca, sauro_state, tecfri, ROT0, "Tecfri", "Tricky Doc (set 2)", 0 )
trunk/src/mame/machine/steppers.c
r241968r241969
1///////////////////////////////////////////////////////////////////////////
2//                                                                       //
3// steppers.c steppermotor emulation                                     //
4//                                                                       //
5// Emulates : Stepper motors driven with full step or half step          //
6//            also emulates the index optic                              //
7//                                                                       //
8// 26-05-2012: J. Wallace - Implemented proper phase alignment, we no    //
9//                          longer need reverse interfaces here, the     //
10//                          layout will suffice. Added belt reel handler.//
11// 09-04-2012: J. Wallace - Studied some old reel motors and added a     //
12//                          number of new stepper types. I am yet to     //
13//                          add them to drivers, but barring some init   //
14//                          stuff, they should work.                     //
15// 15-01-2012: J. Wallace - Total internal rewrite to remove the table   //
16//                          hoodoo that stops anyone but me actually     //
17//                          updating this. In theory, we should be able  //
18//                          to adapt the phase code to any reel type by  //
19//                          studying a game's startup                    //
20//                          Documentation is much better now.            //
21// 04-04-2011: J. Wallace - Added reverse spin (this is necessary for    //
22//                          accuracy), and improved wraparound logic     //
23//    03-2011:              New 2D array to remove reel bounce and       //
24//                          make more realistic                          //
25// 26-01-2007: J. Wallace - Rewritten to make it more flexible           //
26//                          and to allow indices to be set in drivers    //
27// 29-12-2006: J. Wallace - Added state save support                     //
28// 05-03-2004: Re-Animator                                               //
29//                                                                       //
30// TODO:  add further types of stepper motors if needed (Konami/IGT?)    //
31//        Someone who understands the device system may want to convert  //
32//        this                                                           //
33//        200 Step reels can alter their relative opto tab position,     //
34//        may be worth adding the phase setting to the interface         //
35//        There are reports that some games use a pulse that is too short//
36//        to give a 'judder' effect for holds, etc. We'll need to time   //
37//        the pulses to keep tack of this without going out of sync.     //
38//        Check 20RM and Starpoint 200 step                              //
39///////////////////////////////////////////////////////////////////////////
40
41#include "emu.h"
42#include "steppers.h"
43
44/* local prototypes */
45
46static void update_optic(int which);
47
48/* local vars */
49
50struct stepper
51{
52   const stepper_interface *intf;
53   UINT8    pattern,   /* coil pattern */
54         old_pattern,    /* old coil pattern */
55         initphase,
56            phase,  /* motor phase */
57         old_phase,  /* old phase */
58            type;   /* reel type */
59   INT16   step_pos,   /* step position 0 - max_steps */
60         max_steps;  /* maximum step position */
61   INT32   abs_step_pos; /* absolute step position */
62
63   INT16 index_start,  /* start position of index (in half steps) */
64         index_end,  /* end position of index (in half steps) */
65         index_patt; /* pattern needed on coils (0=don't care) */
66
67   UINT8 optic;
68};
69
70static stepper step[MAX_STEPPERS];
71
72/* useful interfaces (Starpoint is a very common setup)*/
73const stepper_interface starpoint_interface_48step =
74{
75   STARPOINT_48STEP_REEL,
76   1,
77   3,
78   0x09,
79   4
80};
81
82const stepper_interface starpointrm20_interface_48step =
83{
84   STARPOINT_48STEP_REEL,
85   16,
86   24,
87   0x09,
88   7
89};
90const stepper_interface starpoint_interface_200step_reel =
91{
92   STARPOINT_200STEP_REEL,
93   12,
94   24,
95   0x09,
96   7
97};
98// guess
99const stepper_interface ecoin_interface_200step_reel =
100{
101   ECOIN_200STEP_REEL,
102   12,
103   24,
104   0x09,
105   7
106};
107
108
109
110///////////////////////////////////////////////////////////////////////////
111void stepper_config(running_machine &machine, int which, const stepper_interface *intf)
112{
113   assert_always(machine.phase() == MACHINE_PHASE_INIT, "Can only call stepper_config at init time!");
114   assert_always((which >= 0) && (which < MAX_STEPPERS), "stepper_config called on an invalid stepper motor!");
115   assert_always(intf, "stepper_config called with an invalid interface!");
116
117   step[which].intf = intf;
118
119   step[which].type = intf->type;
120   step[which].index_start = intf->index_start;/* location of first index value in half steps */
121   step[which].index_end   = intf->index_end;  /* location of last index value in half steps */
122   step[which].index_patt  = intf->index_patt; /* hex value of coil pattern (0 if not needed)*/
123   step[which].initphase   = intf->initphase; /* Phase at 0 steps, for alignment) */
124
125
126   step[which].pattern     = 0;
127   step[which].old_pattern = 0;
128   step[which].step_pos    = 0;
129   step[which].abs_step_pos= 0;
130   step[which].phase = step[which].initphase;
131   step[which].old_phase = step[which].initphase;
132
133
134   switch ( step[which].type )
135   {   default:
136      case STARPOINT_48STEP_REEL:  /* STARPOINT RMxxx */
137      case BARCREST_48STEP_REEL :  /* Barcrest Reel unit */
138      case MPU3_48STEP_REEL :
139      case GAMESMAN_48STEP_REEL :  /* Gamesman GMxxxx */
140      case PROJECT_48STEP_REEL :
141      step[which].max_steps = (48*2);
142      break;
143      case GAMESMAN_100STEP_REEL :
144      step[which].max_steps = (100*2);
145      break;
146      case STARPOINT_144STEP_DICE :/* STARPOINT 1DCU DICE mechanism */
147      //Dice reels are 48 step motors, but complete three full cycles between opto updates
148      step[which].max_steps = ((48*3)*2);
149      break;
150      case STARPOINT_200STEP_REEL :
151      case GAMESMAN_200STEP_REEL :
152      case ECOIN_200STEP_REEL :
153      step[which].max_steps = (200*2);
154      break;
155   }
156
157   state_save_register_item(machine, "stepper", NULL, which, step[which].index_start);
158   state_save_register_item(machine, "stepper", NULL, which, step[which].index_end);
159   state_save_register_item(machine, "stepper", NULL, which, step[which].index_patt);
160   state_save_register_item(machine, "stepper", NULL, which, step[which].initphase);
161   state_save_register_item(machine, "stepper", NULL, which, step[which].phase);
162   state_save_register_item(machine, "stepper", NULL, which, step[which].old_phase);
163   state_save_register_item(machine, "stepper", NULL, which, step[which].pattern);
164   state_save_register_item(machine, "stepper", NULL, which, step[which].old_pattern);
165   state_save_register_item(machine, "stepper", NULL, which, step[which].step_pos);
166   state_save_register_item(machine, "stepper", NULL, which, step[which].abs_step_pos);
167   state_save_register_item(machine, "stepper", NULL, which, step[which].max_steps);
168   state_save_register_item(machine, "stepper", NULL, which, step[which].type);
169}
170
171///////////////////////////////////////////////////////////////////////////
172int stepper_get_position(int which)
173{
174   return step[which].step_pos;
175}
176
177///////////////////////////////////////////////////////////////////////////
178int stepper_get_absolute_position(int which)
179{
180   return step[which].abs_step_pos;
181}
182
183///////////////////////////////////////////////////////////////////////////
184
185int stepper_get_max(int which)
186{
187   return step[which].max_steps;
188}
189
190///////////////////////////////////////////////////////////////////////////
191
192static void update_optic(int which)
193{
194   int pos   = step[which].step_pos,
195      start = step[which].index_start,
196      end = step[which].index_end;
197
198   if (start > end) // cope with index patterns that wrap around
199   {
200      if ( (( pos > start ) || ( pos < end )) &&
201      ( ( step[which].pattern == step[which].index_patt || step[which].index_patt==0) ||
202      ( step[which].pattern == 0 &&
203      (step[which].old_pattern == step[which].index_patt || step[which].index_patt==0)
204      ) ) )
205      {
206         step[which].optic = 1;
207      }
208      else step[which].optic = 0;
209      }
210   else
211   {
212      if ( (( pos > start ) && ( pos < end )) &&
213      ( ( step[which].pattern == step[which].index_patt || step[which].index_patt==0) ||
214      ( step[which].pattern == 0 &&
215      (step[which].old_pattern == step[which].index_patt || step[which].index_patt==0)
216      ) ) )
217      {
218      step[which].optic = 1;
219      }
220      else step[which].optic = 0;
221   }
222}
223///////////////////////////////////////////////////////////////////////////
224
225void stepper_reset_position(int which)
226{
227   step[which].step_pos    = 0x00;
228   step[which].abs_step_pos= 0x00;
229   step[which].pattern     = 0x00;
230   step[which].old_pattern = 0x00;
231   step[which].phase = step[which].initphase;
232   step[which].old_phase = step[which].initphase;
233   update_optic(which);
234}
235
236///////////////////////////////////////////////////////////////////////////
237
238int stepper_optic_state(int which)
239{
240   int result = 0;
241
242   if ( which < MAX_STEPPERS )
243   {
244      result = step[which].optic;
245   }
246
247   return result;
248}
249
250///////////////////////////////////////////////////////////////////////////
251
252int stepper_update(int which, UINT8 pattern)
253{
254   int changed = 0;
255
256   /* This code probably makes more sense if you visualise what is being emulated, namely
257   a spinning drum with two electromagnets inside. Essentially, the CPU
258   activates a pair of windings on these magnets leads as necessary to attract and repel the drum to pull it round and
259   display as appropriate. To attempt to visualise the rotation effect, take a look at the compass rose below, representing a side on view of the reel,
260   the numbers indicate the phase information as used
261
262       7
263       N
264   1 W   E 5
265       S
266       3
267
268   For sake of accuracy, we're representing all possible phases of the motor, effectively moving the motor one half step at a time, so a 48 step motor becomes
269   96 half steps. This is necessary because of some programs running the wiring in series with a distinct delay between the pair being completed. This causes
270   a small movement that may trigger the optic tab.
271   */
272
273   int pos,steps=0;
274   step[which].pattern = pattern;
275   switch ( step[which].type )
276   {
277      default:
278      logerror("No reel type specified for %x!\n",which);
279      break;
280      case STARPOINT_48STEP_REEL : /* STARPOINT RMxxx */
281      case GAMESMAN_200STEP_REEL : /* Gamesman GMxxxx */
282      case STARPOINT_144STEP_DICE :/* STARPOINT 1DCU DICE mechanism */
283      case STARPOINT_200STEP_REEL :/* STARPOINT 1DCU DICE mechanism */
284      //Standard drive table is 2,6,4,5,1,9,8,a
285      //NOTE: This runs through the stator patterns in such a way as to drive the reel forward (downwards from the player's view, clockwise on our rose)
286      //The Heber 'Pluto' controller runs this in reverse
287      switch (pattern)
288      {             //Black  Blue  Red  Yellow
289         case 0x02://  0     0     1     0
290         step[which].phase = 7;
291         break;
292         case 0x06://  0     1     1     0
293         step[which].phase = 6;
294         break;
295         case 0x04://  0     1     0     0
296         step[which].phase = 5;
297         break;
298         case 0x05://  0     1     0     1
299         step[which].phase = 4;
300         break;
301         case 0x01://  0     0     0     1
302         step[which].phase = 3;
303         break;
304         case 0x09://  1     0     0     1
305         step[which].phase = 2;
306         break;
307         case 0x08://  1     0     0     0
308         step[which].phase = 1;
309         break;
310         case 0x0A://  1     0     1     0
311         step[which].phase = 0;
312         break;
313         //          Black  Blue  Red  Yellow
314         case 0x03://  0     0     1     1
315         {
316            if ((step[which].old_phase ==6)||(step[which].old_phase == 0)) // if the previous pattern had the drum in the northern quadrant, it will point north now
317            {
318               step[which].phase = 7;
319            }
320            else //otherwise it will line up due south
321            {
322               step[which].phase = 3;
323            }
324         }
325         break;
326         case 0x0C://  1     1     0     0
327         {
328            if ((step[which].old_phase ==6)||(step[which].old_phase == 4)) // if the previous pattern had the drum in the eastern quadrant, it will point east now
329            {
330               step[which].phase = 5;
331            }
332            else //otherwise it will line up due west
333            {
334               step[which].phase = 1;
335            }
336         }
337         break;
338      }
339      break;
340
341      case BARCREST_48STEP_REEL :
342      case GAMESMAN_48STEP_REEL :
343      case GAMESMAN_100STEP_REEL :
344      //Standard drive table is 1,3,2,6,4,C,8,9
345      //Gamesman 48 step uses this pattern shifted one place forward, though this shouldn't matter
346      switch (pattern)
347      {
348         //             Yellow   Brown  Orange Black
349         case 0x01://  0        0      0      1
350         step[which].phase = 7;
351         break;
352         case 0x03://  0        0      1      1
353         step[which].phase = 6;
354         break;
355         case 0x02://  0        0      1      0
356         step[which].phase = 5;
357         break;
358         case 0x06://  0        1      1      0
359         step[which].phase = 4;
360         break;
361         case 0x04://  0        1      0      0
362         step[which].phase = 3;
363         break;
364         case 0x0C://  1        1      0      0
365         step[which].phase = 2;
366         break;
367         case 0x08://  1        0      0      0
368         step[which].phase = 1;
369         break;//YOLB
370         case 0x09://  1        0      0      1
371         step[which].phase = 0;
372         break;
373
374         // The below values should not be used by anything sane, as they effectively ignore one stator side entirely
375         //          Yellow   Brown  Orange Black
376         case 0x05://   0       1       0     1
377         {
378            if ((step[which].old_phase ==6)||(step[which].old_phase == 0)) // if the previous pattern had the drum in the northern quadrant, it will point north now
379            {
380               step[which].phase = 7;
381            }
382            else //otherwise it will line up due south
383            {
384               step[which].phase = 3;
385            }
386         }
387         break;
388
389         case 0x0A://   1       0       1     0
390         {
391            if ((step[which].old_phase ==6)||(step[which].old_phase == 4)) // if the previous pattern had the drum in the eastern quadrant, it will point east now
392            {
393               step[which].phase = 5;
394            }
395            else //otherwise it will line up due west
396            {
397               step[which].phase = 1;
398            }
399         }
400         break;
401      }
402      break;
403
404      case MPU3_48STEP_REEL :
405      /* The MPU3 interface is actually the same as the MPU4 setup, but with two active lines instead of four
406         Inverters are used so if a pin is low, the higher bit of the pair is activated, and if high the lower bit is activated.
407         TODO:Check this, 2 and 1 could be switched over.
408       */
409      switch (pattern)
410      {
411      //             Yellow(2)   Brown(1)  Orange(!2) Black(!1)
412         case 0x00 :// 0          0          1         1
413         step[which].phase = 6;
414         break;
415         case 0x01 :// 0          1          1         0
416         step[which].phase = 4;
417         break;
418         case 0x03 :// 1          1          0         0
419         step[which].phase = 2;
420         break;
421         case 0x02 :// 1          0          0         1
422         step[which].phase = 0;
423         break;
424      }
425      break;
426
427      case ECOIN_200STEP_REEL :
428      //While the 48 and 100 step models appear to be reverse driven Starpoint reels, the 200 step model seems bespoke, certainly in terms of wiring.
429      //On a Proconn machine this same pattern is seen but running in reverse
430      //Standard drive table is 8,c,4,6,2,3,1,9
431      switch (pattern)
432      {
433         case 0x08://  0     0     1     0
434         step[which].phase = 7;
435         break;
436         case 0x0c://  0     1     1     0
437         step[which].phase = 6;
438         break;
439         case 0x04://  0     1     0     0
440         step[which].phase = 5;
441         break;
442         case 0x06://  0     1     0     1
443         step[which].phase = 4;
444         break;
445         case 0x02://  0     0     0     1
446         step[which].phase = 3;
447         break;
448         case 0x03://  1     0     0     1
449         step[which].phase = 2;
450         break;
451         case 0x01://  1     0     0     0
452         step[which].phase = 1;
453         break;
454         case 0x09://  1     0     1     0
455         step[which].phase = 0;
456         break;
457         case 0x0a://  0     0     1     1
458         {
459            if ((step[which].old_phase ==6)||(step[which].old_phase == 0)) // if the previous pattern had the drum in the northern quadrant, it will point north now
460            {
461               step[which].phase = 7;
462            }
463            else //otherwise it will line up due south
464            {
465               step[which].phase = 3;
466            }
467         }
468         break;
469         case 0x07://  1     1     0     0
470         {
471            if ((step[which].old_phase ==6)||(step[which].old_phase == 4)) // if the previous pattern had the drum in the eastern quadrant, it will point east now
472            {
473               step[which].phase = 5;
474            }
475            else //otherwise it will line up due west
476            {
477               step[which].phase = 1;
478            }
479         }
480         break;
481      }
482      break;
483
484      case PROJECT_48STEP_REEL :
485      //Standard drive table is 8,c,4,5,1,3,2,a
486      //This appears to be basically a rewired Gamesman (the reel PCB looks like it does some shuffling)
487      //TODO: Not sure if this should be represented as a type here, or by defining it as a Gamesman in the driver and bitswapping.
488      switch (pattern)
489      {
490         case 0x08://  0     0     1     0
491         step[which].phase = 7;
492         break;
493         case 0x0c://  0     1     1     0
494         step[which].phase = 6;
495         break;
496         case 0x04://  0     1     0     0
497         step[which].phase = 5;
498         break;
499         case 0x05://  0     1     0     1
500         step[which].phase = 4;
501         break;
502         case 0x01://  0     0     0     1
503         step[which].phase = 3;
504         break;
505         case 0x03://  1     0     0     1
506         step[which].phase = 2;
507         break;
508         case 0x02://  1     0     0     0
509         step[which].phase = 1;
510         break;
511         case 0x0a://  1     0     1     0
512         step[which].phase = 0;
513         break;
514         case 0x09://  0     0     1     1
515         {
516            if ((step[which].old_phase ==6)||(step[which].old_phase == 0)) // if the previous pattern had the drum in the northern quadrant, it will point north now
517            {
518               step[which].phase = 7;
519            }
520            else //otherwise it will line up due south
521            {
522               step[which].phase = 3;
523            }
524         }
525         break;
526         case 0x06://  1     1     0     0
527         {
528            if ((step[which].old_phase ==6)||(step[which].old_phase == 4)) // if the previous pattern had the drum in the eastern quadrant, it will point east now
529            {
530               step[which].phase = 5;
531            }
532            else //otherwise it will line up due west
533            {
534               step[which].phase = 1;
535            }
536         }
537         break;
538      }
539      break;
540
541
542
543   }
544
545   steps = step[which].old_phase - step[which].phase;
546
547   if (steps < -4)
548   {
549      steps = steps +8;
550   }
551   if (steps > 4)
552   {
553      steps = steps -8;
554   }
555
556   step[which].old_phase = step[which].phase;
557   step[which].old_pattern = step[which].pattern;
558
559   int max = step[which].max_steps;
560   pos = 0;
561
562   if (max!=0)
563   {
564      step[which].abs_step_pos += steps;
565      pos = (step[which].step_pos + steps + max) % max;
566   }
567   else
568   {
569      logerror("step[%x].max_steps == 0\n",which);
570   }
571
572   if (pos != step[which].step_pos)
573   {
574      changed++;
575   }
576
577   step[which].step_pos = pos;
578   update_optic(which);
579
580   return changed;
581}
trunk/src/mame/machine/steppers.h
r241968r241969
1///////////////////////////////////////////////////////////////////////////
2//                                                                       //
3// steppers.c steppermotor emulation                                     //
4//                                                                       //
5// Emulates : stepper motors driven with full step or half step          //
6//            also emulates the index optic                              //
7//                                                                       //
8//                                                                       //
9// TODO:  add further types of stepper motors if needed (Konami/IGT?)    //
10//        Someone who understands the device system may want to convert  //
11//        this                                                           //
12///////////////////////////////////////////////////////////////////////////
13
14
15#ifndef INC_STEPPERS
16#define INC_STEPPERS
17
18#define MAX_STEPPERS            8           /* maximum number of steppers */
19
20#define STARPOINT_48STEP_REEL   0           /* STARPOINT RMXXX reel unit */
21#define STARPOINT_144STEP_DICE  1           /* STARPOINT 1DCU DICE mechanism */
22#define STARPOINT_200STEP_REEL  2
23
24#define BARCREST_48STEP_REEL    3           /* Barcrest bespoke reel unit */
25#define MPU3_48STEP_REEL        4
26
27#define ECOIN_200STEP_REEL      5           /* Probably not bespoke, but can't find a part number */
28
29#define GAMESMAN_48STEP_REEL    6
30#define GAMESMAN_100STEP_REEL   7
31#define GAMESMAN_200STEP_REEL   8
32
33#define PROJECT_48STEP_REEL     9
34
35/*------------- Stepper motor interface structure -----------------*/
36
37struct stepper_interface
38{
39   UINT8 type; /* Reel unit type */
40   INT16 index_start;/* start position of index (in half steps) */
41   INT16 index_end;  /* end position of index (in half steps) */
42   INT16 index_patt; /* pattern needed on coils (0=don't care) */
43   UINT8 initphase; /* Phase at 0, for opto linkage */
44};
45
46extern const stepper_interface starpoint_interface_48step;
47extern const stepper_interface starpointrm20_interface_48step;
48
49extern const stepper_interface starpoint_interface_200step_reel;
50extern const stepper_interface ecoin_interface_200step_reel;
51
52void stepper_config(running_machine &machine, int which, const stepper_interface *intf);
53
54void stepper_reset_position(int id);        /* reset a motor to position 0 */
55
56int  stepper_optic_state(   int id);        /* read a motor's optics */
57
58int  stepper_update(int id, UINT8 pattern); /* update a motor */
59
60int  stepper_get_position(int id);          /* get current position in half steps */
61
62int  stepper_get_absolute_position(int id); /* get current absolute position in half steps */
63
64int  stepper_get_max(int id);               /* get maximum position in half steps */
65#endif
trunk/src/mame/mame.lst
r241968r241969
93109310musicbal        // (c) 1987
93119311sauro           // (c) 1987
93129312saurop          // (c) 1987
9313saurorr         // (c) 1987
93149313trckydoc        // (c) 1987
93159314trckydoca       // (c) 1987
93169315
trunk/src/mame/mame.mak
r241968r241969
564564#MACHINES += SMC92X4
565565#MACHINES += TI99_HD
566566#MACHINES += STRATA
567MACHINES += STEPPERS
567568#MACHINES += CORVUSHD
568569#MACHINES += WOZFDC
569570#MACHINES += DIABLO_HD
r241968r241969
954955   $(DRIVERS)/mpu5hw.o $(DRIVERS)/mpu5.o \
955956   $(VIDEO)/awpvid.o \
956957   $(MACHINE)/meters.o \
957   $(MACHINE)/steppers.o \
958958
959959$(MAMEOBJ)/bfm.a: \
960960   $(DRIVERS)/bfcobra.o \
r241968r241969
12891289   $(DRIVERS)/jpmsys7.o \
12901290   $(VIDEO)/awpvid.o \
12911291   $(MACHINE)/meters.o \
1292   $(MACHINE)/steppers.o \
12931292
12941293$(MAMEOBJ)/kaneko.a: \
12951294   $(DRIVERS)/airbustr.o $(VIDEO)/airbustr.o \


Previous 199869 Revisions Next


© 1997-2024 The MAME Team