Previous 199869 Revisions Next

r35039 Saturday 14th February, 2015 at 19:32:47 UTC by Couriersud
And the last one pre holiday ... Fix -mt on OSX. (nw)
[src/mame]mame.lst
[src/mame/drivers]naomi.c
[src/mess/drivers]cnsector.c comp4.c elecdet.c splitsec.c starwbc.c stopthie.c ticalc1x.c tispeak.c wildfire.c
[src/osd/sdl]osdsdl.h

trunk/src/mame/drivers/naomi.c
r243550r243551
260260Ferrari F355 Challenge 2 (twin)                 no cart  23399   21 (64Mb)   present  315-6206  317-0287-COM  content is the same as regular 171-7919A cart
261261House of the Dead 2 (prototype)                 no cart  A1E2    21 (64Mb)   present  315-6206  present       no label on IC42
262262Inu No Osanpo / Dog Walking (Rev A)           840-0073C  22294A  16 (64Mb)   present  315-6206  317-0316-JPN  requires 837-13844 JVS IO with DIPSW 1 ON
263Maze of the Kings The (prototype)               no cart  *       21 (64Mb)   present  315-6206  FRI           * flash-PCB, not dumped but known to exist
263264Samba de Amigo (prototype)                      no cart  *       21 (64Mb)   present  315-6206  317-0270-COM  * instead of EPROM have tiny PCB with 2 flashroms on it
264265Soul Surfer (Rev A)                           840-0095C  23838C  21 (64Mb)   present  315-6206  not present
265266Star Horse (server)                           840-0055C  23626   17 (64Mb)   present  315-6206  not present   requires 837-13785 ARCNET&IO BD
266267The King of Route 66 (Rev A)                  840-0087C  23819A  20 (64Mb)   present  315-6206  not present   content is the same as regular 171-8132A cart
267The Maze of the Kings (prototype)               no cart  *       21 (64Mb)   present  315-6206  FRI           * flash-PCB, not dumped but known to exist
268268Virtua NBA (prototype)                          no cart  *       21 (64Mb)   present  315-6206  317-0271-COM  * instead of EPROM have tiny PCB with 2 flashroms on it
269269Virtua Tennis / Power Smash (prototype)         no cart  *       21 (64Mb)   present  315-6206  317-0263-COM  * flash-PCB, title screen have label "SOFT R&D Dept.#3", not dumped but known to exist
270270
r243550r243551
446446   CN1/2/3  - connectors joining to main board
447447
448448Games known to use this PCB include....
449                                                             Sticker      EPROM   MASKROMs    25LC040  A54SX32
450Game                                                         on cart      IC11#   # of SOP44  IC13S#   IC1#          Notes
451-----------------------------------------------------------------------------------------------------------------------------------------------
452Club Kart: European Session (2003, Rev A)                    840-0139C    24173A  18 (64Mb)   present  317-0382-COM
453Club Kart Prize (Rev A)                                      840-0129C    24082A  16 (64Mb)   present  317-0368-COM  requires Naomi-based hopper controller (Naomi bd + 840-0130 cart + 837-14381 "G2 EXPANSION BD")
454Club Kart Prize Ver. B                                       840-0137C    24149   16 (64Mb)   present  317-0368-COM  requires 837-14438 "SH I/O BD" hopper controller (not dumped)
455Giant Gram 2000                                              840-0039C    23377   20 (64Mb)   present  317-0296-COM
456Kick '4' Cash                                                840-0140C    24212   16 (64Mb)   present  317-0397-COM  requires 837-14438 "SH I/O BD" hopper controller (not dumped)
457Marvel Vs. Capcom 2 New Age of Heroes (Rev A)                841-0007C-02 23085A  14 (64Mb)*  present  317-5058-COM  *(+2x 32Mb)
458MushiKing The King of Beetles 2K3 2ND                        840-0150C    24217    6 (64Mb)   present  317-0394-COM  requires 610-0669 barcode reader, 838-14245-92 "MAPLE/232C CONVERT BD" (MIE-based), 838-14243 "RFID CHIP R/W BD" and RFID chip
459Quiz Ah Megamisama                                           840-0030C    23227   16 (64Mb)   present  317-0280-JPN
460Shootout Pool                                                840-0098C    23844    4 (64Mb)   present  317-0336-COM  requires regular 837-13551 and 837-13938 rotary JVS boards
461Shootout Pool Prize / Shootout Pool The Medal (Rev A)        840-0128C    24065A   4 (64Mb)   present  317-0367-COM  requires Naomi-based hopper controller
462Shootout Pool Prize Ver. B / Shootout Pool The Medal Ver. B  840-0136C    24148    4 (64Mb)   present  317-0367-COM  requires Naomi-based or 837-14438 hopper controller
463SWP Hopper Board                                             840-0130C    24083   20 (64Mb)   present  317-0339-COM  Maskroms are not really used, they are recycled from other games; there is an additional 837-14381 IO board
464Touch de UNO! 2                                              840-0022C    23071    6 (64Mb)   present  317-0276-JPN  requires 837-13844 JVS IO with DIPSW 5 On, ELO AccuTouch-compatible touch screen controller and special printer.
465Virtua Fighter 4 Evolution                                   840-0106B    23934   20 (64Mb)   present  317-0339-COM
466Virtua Tennis 2 / Power Smash 2 (Rev A)                      840-0084C    22327A  18 (64Mb)   present  317-0320-COM
449                                               Sticker      EPROM   MASKROMs    25LC040  A54SX32
450Game                                           on cart      IC11#   # of SOP44  IC13S#   IC1#          Notes
451-------------------------------------------------------------------------------------------------------------------------------
452Club Kart European Session (2003, Rev A)       840-0139C    24173A  18 (64Mb)   present  317-0382-COM
453Club Kart Prize (Rev A)                        840-0129C    24082A  16 (64Mb)   present  317-0368-COM  requires Naomi-based hopper controller (Naomi bd + 840-0130 cart + 837-14381 "G2 EXPANSION BD")
454Club Kart Prize Ver. B                         840-0137C    24149   16 (64Mb)   present  317-0368-COM  requires 837-14438 "SH I/O BD" hopper controller (not dumped)
455Giant Gram 2000                                840-0039C    23377   20 (64Mb)   present  317-0296-COM
456Kick '4' Cash                                  840-0140C    24212   16 (64Mb)   present  317-0397-COM  requires 837-14438 "SH I/O BD" hopper controller (not dumped)
457Marvel Vs. Capcom 2 New Age of Heroes (Rev A)  841-0007C-02 23085A  14 (64Mb)*  present  317-5058-COM  *(+2x 32Mb)
458MushiKing The King of Beetles 2K3 2ND          840-0150C    24217    6 (64Mb)   present  317-0394-COM  requires 610-0669 barcode reader, 838-14245-92 "MAPLE/232C CONVERT BD" (MIE-based), 838-14243 "RFID CHIP R/W BD" and RFID chip
459Quiz Ah Megamisama                             840-0030C    23227   16 (64Mb)   present  317-0280-JPN
460Shootout Pool                                  840-0098C    23844    4 (64Mb)   present  317-0336-COM  requires regular 837-13551 and 837-13938 rotary JVS boards
461Shootout Pool Prize / The Medal (Rev A)        840-0128C    24065A   4 (64Mb)   present  317-0367-COM  requires Naomi-based hopper controller
462Shootout Pool Prize / The Medal Ver. B         840-0136C    24148    4 (64Mb)   present  317-0367-COM  requires Naomi-based or 837-14438 hopper controller
463SWP Hopper Board                               840-0130C    24083   20 (64Mb)   present  317-0339-COM  Maskroms are not really used, they are recycled from other games; there is an additional 837-14381 IO board
464Touch de UNO! 2                                840-0022C    23071    6 (64Mb)   present  317-0276-JPN  requires 837-13844 JVS IO with DIPSW 5 On, ELO AccuTouch-compatible touch screen controller and special printer.
465Virtua Fighter 4 Evolution                     840-0106B    23934   20 (64Mb)   present  317-0339-COM
466Virtua Tennis 2 / Power Smash 2 (Rev A)        840-0084C    22327A  18 (64Mb)   present  317-0320-COM
467467
468468
469469
r243550r243551
514514Derby Owners Club World Edition (Rev D)         840-0088C  22336D   7 (128Mb)  315-6319A  315-6213  not present   2 MaskROM are different from Rev C
515515Giga Wing 2                                     841-0014C  22270    5 (128Mb)  315-6319A  315-6213  317-5064-COM
516516Mobile Suit Gundam: Federation Vs. Zeon         841-0017C  23638   10 (128Mb)  315-6319A  315-6213  317-5070-COM
517Moero! Justice Gakuen / Project Justice (Rev A) 841-0015C  23548A  11 (128Mb)  315-6319A  315-6213  317-5065-COM
517Moero Justice Gakuen / Project Justice (Rev A) 841-0015C  23548A  11 (128Mb)  315-6319A  315-6213  317-5065-COM
518518MushiKing - The King Of Beetle 2K5 1ST          840-0158C  24286    7 (128Mb)  315-6319A  315-6213  not present   requires 610-0669 barcode reader
519519Oinori-daimyoujin Matsuri                       840-0126B  24053    5 (128Mb)  315-6319A  315-6213  not present   requires 837-14274 "G2 EXPANSION BD" (similar to hopper 837-14381 but with ARC NET chip)
520520Samba de Amigo Ver. 2000                        840-0047C  23600   11 (128Mb)  315-6319A  315-6213  317-0295-COM
r243550r243551
575575Mamoru-kun wa Norowarete Shimatta                   841-0060C  not present  4 (512Mb)   present  317-5132-JPN  present  IC2# is labeled "VER.2"
576576Manic Panic Ghost!                                  840-0170C  not present  5 (512Mb)   present  317-0461-COM  present  requires 837-14672 sensor board (SH4 based)
577577Melty Blood Actress Again                           841-0061C  not present  6 (512Mb)   present  317-5133-JPN  present  IC2# is labeled "REV.A" - IC4# is marked "5A"
578Melty Blood Actress Again Version A (Rev A)         841-0061C  24455        6 (512Mb)   present  317-5133-JPN  present  IC2# is labeled "REV.A" - IC4# is marked "5A"
578Melty Blood Actress Again (Rev A)                   841-0061C  24455        6 (512Mb)   present  317-5133-JPN  present  IC2# is labeled "REV.A" - IC4# is marked "5A"
579579Mushiking - The King Of Beetles II ENG (Ver. 1.001) 840-0164C  not present  2 (512Mb)   present  317-0437-COM  present  requires 610-0669 barcode reader, 838-14245-92 "MAPLE/232C CONVERT BD" (MIE-based), 838-14243 "RFID CHIP R/W BD" and RFID chip
580580Mushiking - The King Of Beetles II ENG (Ver. 2.001) 840-0164C  24357        2 (512Mb)   present  317-0437-COM  present  IC4# is marked "18"
581581Poka Suka Ghost                                     840-0170C  not present  5 (512Mb)   present  317-0461-COM  present  requires 837-14672 sensor board (SH4 based)
r243550r243551
632632 Game                                Type  on cart   FLASHROM  # of SOP48  IC @ 1F      IC @ 1H   IC @ 2K   IC @ 1M       code (1)    Notes
633633------------------------------------------------------------------------------------------------------------------------------------------------------
634634/Gun Survivor 2 Biohazard
635\Code: Veronica                      F1X   25709801  1 (64Mb)  14 (128Mb)  not present  NAODEC2A  NAODEC1B  317-5075-COM  BHF1        uses Namco FCA JVS I/O (not dumped), will crash if COMM.BOARD not present
635\Code: Veronica                      F1X   25709801  1 (64Mb)  14 (128Mb)  not present  NAODEC2A  NAODEC1B  317-5075-COM  BHF1        uses Namco FCA JVS I/O, will crash if COMM.BOARD not present
636636/Gun Survivor 2 Biohazard
637637\Code: Veronica (Ver. E)             F1X   25709801  1 (64Mb)  14 (128Mb)  not present  NAODEC2A  NAODEC1B  317-5075-COM  BHF2
638638/Shin Nihon Prowrestling Toukon                                                                                                       /FL0 & FL1 have pin55 raised from PCB.
639639\Retsuden 4 Arcade Edition (Ver. A)  F2X   25349801  2 (64Mb)  15 (128Mb)  not present  NAODEC2A  NAODEC1B  317-5040-COM  TRF1        \They are connected togheter and go to pin89 on 2K.
640World Kicks PCB (WKC1 Ver. A)        F2    25509801  2 (64Mb)   9 (128Mb)  not present  NAODEC2A  NAODEC1B  317-5040-COM  WKC1        uses Namco V226 JVS I/O (not dumped)
640World Kicks PCB (WKC1 Ver. A)        F2    25509801  2 (64Mb)   9 (128Mb)  not present  NAODEC2A  NAODEC1B  317-5040-COM  WKC1        uses Namco V226 JVS I/O
641641World Kicks (WK2 Ver. A)             F2    25209801  2 (64Mb)   9 (128Mb)  not present  NAODEC2A  NAODEC1A  317-5040-COM  WK2
642642World Kicks (WK3 Ver. A)             F2    25209801  2 (64Mb)   9 (128Mb)  not present  NAODEC2A  NAODEC1A  317-5040-COM  WK3
643643
r243550r243551
685685                                    Cart  Sticker   FL0-FL3   FLASHROMs   X76F100  CY37128  315-5881      Known Game
686686 Game                               Type  on cart   FLASHROM  # of SOP48  IC @ 1F  IC @ 2J  IC @ 1M       code (1)    Notes
687687--------------------------------------------------------------------------------------------------------------------------------
688Mazan: Flash of the Blade (Ver. A)  F1X   25869812  1 (64Mb)   8 (128Mb)  present  NAODEC3  317-0266-COM  MAZ2        uses 2x Namco FCB JVS I/O (not dumped)
688Mazan: Flash of the Blade (Ver. A)  F1X   25869812  1 (64Mb)   8 (128Mb)  present  NAODEC3  317-0266-COM  MAZ2        uses 2x Namco FCB JVS I/O
689689Mazan: Flash of the Blade (Ver. A)  F1X   25869812  1 (64Mb)   8 (128Mb)  present  NAODEC3  317-0266-COM  MAZ3
690690Ninja Assault (Ver. A)              F3    25469801  3 (64Mb)   9 (128Mb)  present  NAODEC3  317-5068-COM  NJA1        uses Namco JYU JVS I/O
691691Ninja Assault (Ver. A)              F3    25469801  3 (64Mb)   9 (128Mb)  present  NAODEC3  317-5068-COM  NJA2
r243550r243551
90529052
90539053/* 840-xxxxx (Sega Naomi 2 cart games) */
90549054/* 0046 */ GAME( 2001, wldrider, naomi2,  naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Wild Riders (JPN, USA, EXP, KOR, AUS)", GAME_FLAGS )
9055/* 0061 */ GAME( 2001, vstrik3c, naomi2,  naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Virtua Striker 3 (USA, EXP, KOR, AUS)", GAME_FLAGS )
9056/* 0061 */ GAME( 2001, vstrik3cb,vstrik3c,naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Virtua Striker 3 (USA, EXP, KOR, AUS) (Rev B)", GAME_FLAGS )
9055/* 0061 */ GAME( 2001, vstrik3c, naomi2,  naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Virtua Striker 3 (USA, EXP, KOR, AUS) (Cart)", GAME_FLAGS )
9056/* 0061 */ GAME( 2001, vstrik3cb,vstrik3c,naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Virtua Striker 3 (USA, EXP, KOR, AUS) (Cart, Rev B)", GAME_FLAGS )
90579057/* 0062 */ GAME( 2001, clubkrte, naomi2,  naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Club Kart: European Session", GAME_FLAGS )
90589058/* 0062 */ GAME( 2001, clubkrtd, clubkrte,naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Club Kart: European Session (Rev D)", GAME_FLAGS )
90599059/* 0062 */ GAME( 2001, clubkrtc, clubkrte,naomi2m2, naomi, naomi_state, naomi2,   ROT0, "Sega", "Club Kart: European Session (Rev C)", GAME_FLAGS )
r243550r243551
90739073/* 0003 */ GAME( 1999, doa2,     naomi, naomim2, naomi,   naomi_state, naomi,  ROT0,  "Tecmo",           "Dead or Alive 2 (JPN, USA, EXP, KOR, AUS)", GAME_FLAGS )
90749074/* 0003 */ GAME( 2000, doa2m,    doa2,  naomim2, naomi,   naomi_state, naomi,  ROT0,  "Tecmo",           "Dead or Alive 2 Millennium (JPN, USA, EXP, KOR, AUS)", GAME_FLAGS )
90759075/* 0004 */ GAME( 1999, shangril, naomi, naomim2, naomi_mp,naomi_state,naomi_mp,ROT0,  "Marvelous Ent.",  "Dengen Tenshi Taisen Janshi Shangri-la (JPN, USA, EXP, KOR, AUS)", GAME_FLAGS )
9076/* 0005 */ GAME( 1999, spawn,    naomi, naomim2, naomi,   naomi_state, naomi,  ROT0,  "Todd Mc Farlane / Capcom","Spawn In the Demon's Hand (JPN, USA, EUR, ASI, AUS) (Rev B)", GAME_FLAGS )
9076/* 0005 */ GAME( 1999, spawn,    naomi, naomim2, naomi,   naomi_state, naomi,  ROT0,  "Capcom",          "Spawn In the Demon's Hand (JPN, USA, EUR, ASI, AUS) (Rev B)", GAME_FLAGS )
90779077/* 0006 */ GAME( 1999, puyoda,   naomi, naomim2, naomi,   naomi_state, naomi,  ROT0,  "Compile",         "Puyo Puyo Da!", GAME_FLAGS )
9078/* 0007-02 */ GAME( 2000,mvsc2,  naomi, naomim1, naomi,   naomi_state, mvsc2,  ROT0,  "Marvel / Capcom", "Marvel Vs. Capcom 2 New Age of Heroes (JPN, USA, EUR, ASI, AUS) (Rev A)", GAME_FLAGS )
9078/* 0007-02 */ GAME( 2000,mvsc2,  naomi, naomim1, naomi,   naomi_state, mvsc2,  ROT0,  "Capcom",          "Marvel Vs. Capcom 2 New Age of Heroes (JPN, USA, EUR, ASI, AUS) (Rev A)", GAME_FLAGS )
90799079/* 0008 */ GAME( 2000, pstone2,  naomi, naomim2, naomi,   naomi_state, naomi,  ROT0,  "Capcom",          "Power Stone 2 (JPN, USA, EUR, ASI, AUS)", GAME_FLAGS )
90809080/* 0011 */ GAME( 2000, capsnk,   naomi, naomim2, naomi,   naomi_state, naomi,  ROT0,  "Capcom / SNK",    "Capcom Vs. SNK Millennium Fight 2000 (JPN, USA, EXP, KOR, AUS) (Rev C)", GAME_FLAGS )
90819081/* 0011 */ GAME( 2000, capsnka,  capsnk,naomim2, naomi,   naomi_state, naomi,  ROT0,  "Capcom / SNK",    "Capcom Vs. SNK Millennium Fight 2000 (JPN, USA, EXP, KOR, AUS) (Rev A)", GAME_FLAGS )
r243550r243551
90839083/* 0012 */ GAME( 2000, cspike,   naomi, naomim2, naomi,   naomi_state, naomi,  ROT0,  "Psikyo / Capcom", "Gun Spike (JPN) / Cannon Spike (USA, EXP, KOR, AUS)", GAME_FLAGS )
90849084/* 0013 */ GAME( 2000, ggx,      naomi, naomim2, naomi,   naomi_state, naomi,  ROT0,  "Arc System Works","Guilty Gear X (JPN)", GAME_FLAGS )
90859085/* 0014 */ GAME( 2000, gwing2,   naomi, naomim2, naomi,   naomi_state, naomi,  ROT0,  "Takumi / Capcom", "Giga Wing 2 (JPN, USA, EXP, KOR, AUS)", GAME_FLAGS )
9086/* 0015 */ GAME( 2000, pjustic,  naomi, naomim2, naomi,   naomi_state, naomi,  ROT0,  "Capcom",          "Moero! Justice Gakuen (JPN) / Project Justice (USA, EXP, KOR, AUS) (Rev A)", GAME_FLAGS )
9086/* 0015 */ GAME( 2000, pjustic,  naomi, naomim2, naomi,   naomi_state, naomi,  ROT0,  "Capcom",          "Moero Justice Gakuen (JPN) / Project Justice (USA, EXP, KOR, AUS) (Rev A)", GAME_FLAGS )
90879087/* 0016 */ GAME( 2000, deathcox, naomi, naomim2, naomi,   naomi_state, naomi,  ROT0,  "Ecole Software",  "Death Crimson OX (JPN, USA, EXP, KOR, AUS)", GAME_FLAGS )
9088/* 0017 */ GAME( 2001, gundmct,  naomi, naomim2, naomi,   naomi_state, naomi,  ROT0,  "Banpresto / Capcom","Mobile Suit Gundam: Federation Vs. Zeon", GAME_FLAGS )
9088/* 0017 */ GAME( 2001, gundmct,  naomi, naomim2, naomi,   naomi_state, naomi,  ROT0,  "Banpresto",       "Mobile Suit Gundam: Federation Vs. Zeon (2001-02-08)", GAME_FLAGS )
90899089/* 0020 */ GAME( 2001, zerogu2,  naomi, naomim2, naomi,   naomi_state, naomi,  ROT0,  "Psikyo",          "Zero Gunner 2", GAME_FLAGS )
90909090/* 0057 */ GAME( 2007, sl2007,   naomi, naomim4, naomi,   naomi_state, naomi,  ROT270,"Triangle Service","Shooting Love 2007", GAME_FLAGS )
90919091/* 0058 */ GAME( 2008, ausfache, naomi, naomim4, naomi,   naomi_state, naomi,  ROT0,  "Subtle Style",    "Akatsuki Blitzkampf Ausf Achse", GAME_FLAGS )
r243550r243551
90979097/* HMG016007 */ GAME( 2001,hmgeo,naomi, naomim2, naomi,   naomi_state, naomi,  ROT0,  "Capcom",          "Heavy Metal Geomatrix (JPN, USA, EUR, ASI, AUS) (Rev B)", GAME_FLAGS )
90989098
90999099/* Cart games on Namco custom ROM board */
9100/* 25209801 */ GAME( 2000, wldkicks, naomi,   naomim2,naomi, naomi_state, naomi, ROT0, "Namco",          "World Kicks (WK2 Ver. A)", GAME_FLAGS )
9101/* 25209801 */ GAME( 2000, wldkicksa,wldkicks,naomim2,naomi, naomi_state, naomi, ROT0, "Namco",          "World Kicks (WK3 Ver. A)", GAME_FLAGS )
9102/* 25349801 */ GAME( 2000, toukon4,  naomi,   naomim2,naomi, naomi_state, naomi, ROT0, "Namco",          "Shin Nihon Pro Wrestling Toukon Retsuden 4 Arcade Edition (TRF1 Ver. A)", GAME_FLAGS )
9103/* 25469801 */ GAME( 2000, ninjaslt1,ninjaslt,naomim2,naomi, naomi_state, naomi, ROT0, "Namco",          "Ninja Assault (NJA1 Ver. A)", GAME_FLAGS )
9104/* 25469801 */ GAME( 2000, ninjaslt2,ninjaslt,naomim2,naomi, naomi_state, naomi, ROT0, "Namco",          "Ninja Assault (NJA2 Ver. A)", GAME_FLAGS )
9105/* 25469801 */ GAME( 2000, ninjaslt, naomi,   naomim2,naomi, naomi_state, naomi, ROT0, "Namco",          "Ninja Assault (NJA3 Ver. A)", GAME_FLAGS )
9106/* 25469801 */ GAME( 2000, ninjaslt4,ninjaslt,naomim2,naomi, naomi_state, naomi, ROT0, "Namco",          "Ninja Assault (NJA4 Ver. A)", GAME_FLAGS )
9100/* 25209801 */ GAME( 2000, wldkicks, naomi,   naomim2,naomi, naomi_state, naomi, ROT0, "Capcom / Namco", "World Kicks (WK2 Ver. A)", GAME_FLAGS )
9101/* 25209801 */ GAME( 2000, wldkicksa,wldkicks,naomim2,naomi, naomi_state, naomi, ROT0, "Capcom / Namco", "World Kicks (WK3 Ver. A)", GAME_FLAGS )
9102/* 25349801 */ GAME( 2000, toukon4,  naomi,   naomim2,naomi, naomi_state, naomi, ROT0, "Capcom / Namco", "Shin Nihon Pro Wrestling Toukon Retsuden 4 Arcade Edition (TRF1 Ver. A)", GAME_FLAGS )
9103/* 25469801 */ GAME( 2000, ninjaslt1,ninjaslt,naomim2,naomi, naomi_state, naomi, ROT0, "Capcom / Namco", "Ninja Assault (NJA1 Ver. A)", GAME_FLAGS )
9104/* 25469801 */ GAME( 2000, ninjaslt2,ninjaslt,naomim2,naomi, naomi_state, naomi, ROT0, "Capcom / Namco", "Ninja Assault (NJA2 Ver. A)", GAME_FLAGS )
9105/* 25469801 */ GAME( 2000, ninjaslt, naomi,   naomim2,naomi, naomi_state, naomi, ROT0, "Capcom / Namco", "Ninja Assault (NJA3 Ver. A)", GAME_FLAGS )
9106/* 25469801 */ GAME( 2000, ninjaslt4,ninjaslt,naomim2,naomi, naomi_state, naomi, ROT0, "Capcom / Namco", "Ninja Assault (NJA4 Ver. A)", GAME_FLAGS )
91079107/* Note: the game's full name is exactly "World Kicks PCB", have different s/n as well */
9108/* 25509801 */ GAME( 2000, wldkicksb,wldkicks,naomim2,naomi, naomi_state, naomi, ROT0, "Namco",          "World Kicks PCB (WKC1 Ver. A)", GAME_FLAGS )
9108/* 25509801 */ GAME( 2000, wldkicksb,wldkicks,naomim2,naomi, naomi_state, naomi, ROT0, "Capcom / Namco", "World Kicks PCB (WKC1 Ver. A)", GAME_FLAGS )
91099109/* 25709801 */ GAME( 2001, gunsur2,  naomi,   naomim2,naomi, naomi_state, naomi, ROT0, "Capcom / Namco", "Gun Survivor 2 Biohazard Code: Veronica (BHF1 Ver. E)", GAME_FLAGS )
91109110/* 25709801 */ GAME( 2001, gunsur2e, gunsur2, naomim2,naomi, naomi_state, naomi, ROT0, "Capcom / Namco", "Gun Survivor 2 Biohazard Code: Veronica (BHF2 Ver. E)", GAME_FLAGS )
9111/* 25869812 */ GAME( 2002, mazan,    naomi,   naomim2,naomi, naomi_state, naomi, ROT0, "Namco",          "Mazan: Flash of the Blade (MAZ2 Ver. A)", GAME_FLAGS )
9112/* 25869812 */ GAME( 2002, mazana,   mazan,   naomim2,naomi, naomi_state, naomi, ROT0, "Namco",          "Mazan: Flash of the Blade (MAZ3 Ver. A)", GAME_FLAGS )
9111/* 25869812 */ GAME( 2002, mazan,    naomi,   naomim2,naomi, naomi_state, naomi, ROT0, "Capcom / Namco", "Mazan: Flash of the Blade (MAZ2 Ver. A)", GAME_FLAGS )
9112/* 25869812 */ GAME( 2002, mazana,   mazan,   naomim2,naomi, naomi_state, naomi, ROT0, "Capcom / Namco", "Mazan: Flash of the Blade (MAZ3 Ver. A)", GAME_FLAGS )
91139113
91149114/* GDS-xxxx (Sega GD-ROM games) */
91159115/* 0001  */ GAME( 2000, confmiss, naomigd, naomigd,  hotd2,   naomi_state, naomigd, ROT0, "Sega", "Confidential Mission (GDS-0001)", GAME_FLAGS )
r243550r243551
91809180/* 0036F */ GAME( 2004, vf4tuned, naomi2,  naomi2gd, naomi,   naomi_state, naomi2,  ROT0, "Sega", "Virtua Fighter 4 Final Tuned (Rev F) (GDS-0036F)", GAME_FLAGS )
91819181// 0037? Puyo Puyo Fever (Export)
91829182// 0038
9183// 0039  Initial D Arcade Stage Ver. 3 Cycraft Edition
9184// 0039A Initial D Arcade Stage Ver. 3 Cycraft Edition (Rev A)
9183// 0039  Initial D: Arcade Stage Ver. 3 Cycraft Edition
9184// 0039A Initial D: Arcade Stage Ver. 3 Cycraft Edition (Rev A)
91859185/* 0039B */ GAME( 2006, inidv3cy, naomi2,  naomigd,  naomi,   naomi_state, naomi2,  ROT0, "Sega", "Initial D Arcade Stage Ver. 3 Cycraft Edition (Rev. B) (GDS-0039B)", GAME_FLAGS )
91869186// 0040
91879187// 0041  Dragon Treasure 3
trunk/src/mame/mame.lst
r243550r243551
53135313            // 1999.05 Taisen Puzzle Kurutto Stone
53145314ringout         // 1999.06 Ring Out 4x4
53155315f355dlx         // 1999.07 F355 Challenge Deluxe (BIOS)
5316f355bios        // 1999.08 F355 Challenge Twin (BIOS)
53165317f355            // 1999.07 F355 Challenge Deluxe
53175318f355twin        // 1999.07 F355 Challenge Twin
53185319shangril        // 1999.08 Dengen Tenshi Taisen Janshi Shangri-la
5319f355bios        // 1999.08 F355 Challenge Twin (BIOS)
53205320tduno           // 1999.08 Touch de UNO! / Unou Nouryoku Check Machine
53215321vs2_2k          // 1999.08 Virtua Striker 2 version 2000 (Rev C)
53225322suchie3         // 1999.09 Idol Janshi Su-Chi-Pi 3
r243550r243551
53325332puyoda          // 1999.12 Puyo Puyo Da!
53335333samba           // 1999.12 Samba de Amigo (Rev B)
53345334vtennis         // 1999.12 Virtua Tennis / Power Smash (cartridge)
5335sambap          // 1999.?? Samba de Amigo (prototype)
5336vtennisg        // 1999.?? Virtua Tennis / Power Smash (GD-ROM)
53355337alpiltdx        // 1999.?? Airline Pilots Deluxe (Rev B)
53365338            // 1999.?? Charge'N'Blast
53375339            // 1999.?? Mayjinsen (Formation Battle in May) (prototype)
53385340            // 1999.?? Pocket Shooting
5339sambap          // 1999.?? Samba de Amigo (prototype)
53405341spawn           // 1999.?? Spawn In the Demon's Hand
5341vtennisg        // 1999.?? Virtua Tennis / Power Smash (GD-ROM)
5342534218wheelr        // 2000.01 18 Wheeler Deluxe (Rev A)
5343534318wheels        // 2000.01 18 Wheeler (Standard)
5344534418wheelu        // 2000.01 18 Wheeler (Upright)
r243550r243551
53575357toukon4         // 2000.04 Shin Nihon Prowrestling Toukon Retsuden 4 Arcade Edition (TRF1 Ver. A)
53585358qmegamis        // 2000.05 Quiz Ah Megamisama
53595359derbyo2k        // 2000.06 Derby Owners Club 2000 Ver.2 (Rev A)
5360starhrse        // 2000.?? Star Horse (big screens)
5361starhrct        // 2000.12 Star Horse (server)
5362starhrcl        // 2000.11.28 Star Horse (satellite)
53605363vonot           // 2000.06 Virtual-on Oratorio Tangram M.S.B.S. Ver.5.66 2000 Edition
53615364ggx             // 2000.07 Guilty Gear X
53625365slasho          // 2000.07 Slashout
r243550r243551
53785381ninjaslt4       // 2000.11 Ninja Assault (NJA4 Ver. A)
53795382wwfroyal        // 2000.11 WWF Royal Rumble
53805383sprtjam         // 2000.11.13 Sports Jam
5381starhrcl        // 2000.11.28 Star Horse (satellite)
5382starhrct        // 2000.12 Star Horse (server)
5383starhrse        // 2000.?? Star Horse (big screens)
5384pjustic         // 2000.12 Moero! Justice Gakuen / Project Justice
5384pjustic         // 2000.12 Moero Justice Gakuen / Project Justice
53855385samba2k         // 2000.12 Samba de Amigo Ver.2000
53865386shaktam         // 2000.12.28 Shakatto Tambourine (Rev B)
53875387            // 2000.?? Boat Race Ocean Heats
r243550r243551
54135413gundmxgd        // 2001.09 Mobile Suit Gundam: Federation Vs. Zeon DX
54145414derbyoc2        // 2001.10 Derby Owners Club II (Rev B)
54155415inunoos         // 2001.10 Inu No Osanpo / Dog Walking (Rev A)
5416vtenis2c        // 2001.10 Virtua Tennis 2 / Power Smash 2 (Rev A) (cart)
5416vtenis2c        // 2001.10 Virtua Tennis 2 / Power Smash 2 (cartridge)
54175417shaktamb        // 2001.10.17 Shakatto Tambourine Cho Powerup Chu (2K1 AUT)
54185418keyboard        // 2001.11 La Keyboard
54195419ikaruga         // 2001.12 Ikaruga
r243550r243551
54215421drbyocwc        // 2001.?? Derby Owners Club World Edition (Rev. C)
54225422derbyocw        // 2001.?? Derby Owners Club World Edition (Rev. D)
54235423            // 2001.?? Star Horse 2001
5424hopper          // 2002.?? SWP Hopper Board
54245425vathlete        // 2002.03 Virtua Athletics / Virtua Athlete
54255426mok             // 2002.03.06 The Maze of the Kings
54265427luptype         // 2002.04 Lupin The Third - The Typing (Rev A)
r243550r243551
54355436            // 2002.?? Pochinya
54365437quizqgd         // 2002.?? Quiz Keitai Q mode
54375438shootopl        // 2002.?? Shootout Pool
5438hopper          // 2002.?? SWP Hopper Board
5439shootpl         // 2003.?? Shootout Pool The Medal / Shootout Pool Prize (Rev A)
54395440mtkob2          // 2003.02 MushiKing The King Of Beetle
5441            // 2003.03 Sega Network Taisen Mahjong MJ
54405442ggxxrlo         // 2003.02 Guilty Gear XX # Reload
54415443ggxxrl          // 2003.03 Guilty Gear XX # Reload (Rev A)
5442            // 2003.03 Sega Network Taisen Mahjong MJ
5444shikgam2        // 2003.04 Shikigami No Shiro II / The Castle of Shikigami II
54435445bdrdown         // 2003.04 Border Down (Rev A)
5444shikgam2        // 2003.04 Shikigami No Shiro II / The Castle of Shikigami II
54455446usagiym         // 2003.06 Usagi Yamashiro Mahjong Hen
54465447            // 2003.07 Sega Network Taisen Mahjong MJ (Rev A)
54475448oinori          // 2003.08 Oinori-daimyoujin Matsuri
54485449psyvar2         // 2003.11 Psyvariar 2 - The Will To Fabricate
54495450puyofev         // 2003.11 Puyo Puyo Fever
54505451starhrsp        // 2003.12.01 Star Horse Progress (satellite) (Rev A)
5452puyofevp        // 2003.?? Puyo Puyo Fever (prototype)
54515453            // 2003.?? Dragon Treasure
5452puyofevp        // 2003.?? Puyo Puyo Fever (prototype)
5453shootpl         // 2003.?? Shootout Pool The Medal / Shootout Pool Prize (Rev A)
54545454cfield          // 2004.06 Chaos Field
54555455tetkiwam        // 2004.06 Tetris Kiwamemichi (Arcade TV Game List - P.88, Right, 11 from bottom)
54565456trizeal         // 2004.09 Trizeal
54575457            // 2004.?? Dragon Treasure 2
5458shootplm        // 2004.?? Shootout Pool The Medal Ver. B / Shootout Pool Prize Ver. B
54585459kick4csh        // 2004.?? Kick '4' Cash
5459shootplm        // 2004.?? Shootout Pool The Medal Ver. B / Shootout Pool Prize Ver. B
54605460            // 2004.?? The Quiz Show
54615461meltyblo        // 2005.03 Melty Blood Act Cadenza
54625462ss2005          // 2005.03 Super Shanghai 2005
r243550r243551
55225522vstrik3         // 2001.04.06 Virtua Striker 3 Ver. 2002
55235523wldrider        // 2001.05 Wild Riders
55245524clubkrte        // 2001.06 Club Kart: European Session
5525clubkrtc        // 2001.?? Club Kart: European Session (Rev C)
55255526clubkrtd        // 2001.06 Club Kart: European Session (Rev D)
55265527beachspi        // 2001.07 Beach Spikers
55275528vf4cart         // 2001.08.02 Virtua Fighter 4 (cartridge)
55285529vf4             // 2001.08.02 Virtua Fighter 4 (GD-ROM)
55295530vf4b            // 2001.08.20 Virtua Fighter 4 (Rev B) (cartridge)
5530clubkrtc        // 2001.?? Club Kart: European Session (Rev C)
55315531vf4c            // 2002.01.31 Virtua Fighter 4 (Rev C) (cartridge)
55325532kingrt66        // 2002.02 The King of Route 66 (Rev A)
55335533            // 2002.02.14 Initial D Arcade Stage (Japan)
r243550r243551
55425542initdv2jo       // 2002.12 Initial D Arcade Stage Ver. 2 (Japan)
55435543initdv2e        // 2002.12 Initial D Arcade Stage Ver. 2 (export)
55445544vf4evo          // 2002.12 Virtua Fighter 4 Evolution Ver.B
5545clubk2k3        // 2003.?? Club Kart: European Session (2003, Rev A)
5546clubk2kp        // 2003.?? Club Kart: European Session (2003, prototype)
55455547initdexpo       // 2002.?? Initial D Arcade Stage (Export)
55465548            // 2002.?? Sega Driving Simulator
55475549            // 2003.03 World Club Champion Football Serie A 2001-2002 Ver.2
r243550r243551
55495551initdv2j        // 2003.05.27 Initial D Arcade Stage Ver. 2 (Japan) (Rev B)
55505552            // 2003.09 World Club Champion Football Serie A 2002-2003
55515553            // 2003.?? Club Kart Cycraft Edition
5552clubk2k3        // 2003.?? Club Kart: European Session (2003, Rev A)
5553clubk2kp        // 2003.?? Club Kart: European Session (2003, prototype)
55545554clubkprz        // 2003.?? Club Kart Prize
5555clubkpzb        // 2004.01.23 Club Kart Prize Ver. B (strings in the EPROM indicate a build date of Jan. 23, 2004 for the game's program)
55565555initdv3j        // 2004.01.30 Initial D Arcade Stage Ver. 3 (Japan) (Rev C)
55575556initdv3jb       // 2004.01 Initial D Arcade Stage Ver. 3 (Japan) (Rev B)
5557clubkpzb        // 2004.01 Club Kart Prize Ver. B (strings in the EPROM indicate a build date of Jan. 23, 2004 for the game's program)
55585558initdv3e        // 2004.05.18 Initial D Arcade Stage Ver. 3 (Export)
55595559            // 2004.06 World Club Champion Football Serie A 2002-2003 Ver.2
55605560            // 2004.07 Virtua Fighter 4 Final Tuned
r243550r243551
56265626vs2002j         // 2002.10 Virtua Striker 2002 (Japan)
56275627fzeroaxc        // 2003.06.11 F-Zero AX (Rev. C)
56285628avalons         // 2003.07 The Key Of Avalon: The Wizard Master (server) (Rev C)
5629            // 2003.10 The Key Of Avalon 1.01
56295630gekpurya        // 2003.10 Gekitou Pro Yakyuu Mizushima Shinji All Stars vs. Pro Yakyuu (Rev C)
5630            // 2003.10 The Key Of Avalon 1.01
56315631fzeroax         // 2003.12 F-Zero AX (Rev. E)
56325632            // 2003.12 The Key Of Avalon 1.10
56335633            // 2004.04 The Key Of Avalon 1.20 - Summon The New Monsters
r243550r243551
56385638            // 2004.?? F-Zero AX - Monster Ride Cycraft Edition
56395639tfupdate        // 2004.?? Triforce GDROM Boot Update
56405640            // 2005.08 Avalon no Kagi Ver.2.5 Kagi Seisen
5641mkartagp        // 2005.12 Mario Kart Arcade GP (MKA2 Ver.B)
5641mkartagp        // 2005.12 Mario Kart Arcade Grand Prix
56425642            // 2005.?? Donkey Kong Jungle Fever
56435643            // 2006.01.31 Virtua Striker 4 Ver.2006 (export)
56445644vs42006         // 2006.05 Virtua Striker 4 Ver.2006 (Japan) (Rev D)
56455645            // 2006.?? Firmware Update For Compact Flash Box (Rev A)
5646mkartag2        // 2007.03 Mario Kart Arcade GP 2 (MK21 Ver.A)
5647mkartag2a       // 2007.03 Mario Kart Arcade GP 2 (MK21 Ver.A, alt dump)
5646mkartag2        // 2007.03 Mario Kart Arcade Grand Prix 2
5647mkartag2a       // 2007.03 Mario Kart Arcade Grand Prix 2
56485648
56495649// Chihiro (X-Box based)
56505650chihiro         // 2002.?? Chihiro BIOS
56515651hotd3           // 2002.10.29 The House of the Dead III
56525652            // 2003.02 Crazy Taxi High Roller
56535653            // 2003.02 Crazy Taxi High Roller (Rev A)
5654crtaxihr        // 2003.02.24 Crazy Taxi High Roller (Rev B)
56545655            // 2003.02 Virtua Cop 3
5655crtaxihr        // 2003.02.24 Crazy Taxi High Roller (Rev B)
56565656vcop3           // 2003.02.26 Virtua Cop 3 (Rev A)
56575657            // 2003.12 Outrun 2 Prototype (Rev P)
56585658            // 2003.12 Outrun 2
r243550r243551
56705670            // 2004.09 Quest of D
56715671            // 2004.11 Sega Golf Club Network Pro Tour
56725672            // 2004.12 Ghost Squad
5673ghostsqu        // 2004.12.09 Ghost Squad (Rev A)
56735674            // 2004.12 Quest of D Ver.1.01C
56745675            // 2004.12 Quest of D Ver.1.02
56755676            // 2004.12 Quest of D Ver.1.10
r243550r243551
56795680outr2st         // 2004.12 Outrun 2 Special Tours (Rev A)
56805681mj2c            // 2004.12 Sega Network Taisen Mahjong MJ 2 (Rev C)
56815682            // 2004.12 Sega Network Taisen Mahjong MJ 2 (Rev D)
5682ghostsqu        // 2004.12.09 Ghost Squad (Rev A)
56835683            // 2005.02 Sega Network Taisen Mahjong MJ 2 (Rev E)
56845684            // 2005.02 Sega Network Taisen Mahjong MJ 2 (Rev F)
56855685mj2             // 2005.02.02 Sega Network Taisen Mahjong MJ 2 (Rev G)
trunk/src/mess/drivers/cnsector.c
r243550r243551
3838
3939   UINT16 m_o;
4040
41   UINT16 m_display_state[0x10];
42   UINT16 m_display_cache[0x10];
43   UINT8 m_display_decay[0x100];
41   UINT16 m_leds_state[0x10];
42   UINT16 m_leds_cache[0x10];
43   UINT8 m_leds_decay[0x100];
4444
4545   DECLARE_READ8_MEMBER(read_k);
4646   DECLARE_WRITE16_MEMBER(write_o);
4747   DECLARE_WRITE16_MEMBER(write_r);
4848
49   TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
50   void display_update();
49   TIMER_DEVICE_CALLBACK_MEMBER(leds_decay_tick);
50   void leds_update();
5151
5252   virtual void machine_start();
5353};
r243550r243551
5656
5757/***************************************************************************
5858
59  LED Display
59  LEDs
6060
6161***************************************************************************/
6262
6363// The device strobes the outputs very fast, it is unnoticeable to the user.
6464// To prevent flickering here, we need to simulate a decay.
6565
66// decay time, in steps of 1ms
67#define DISPLAY_DECAY_TIME 40
66// decay time, in steps of 10ms
67#define LEDS_DECAY_TIME 4
6868
69void cnsector_state::display_update()
69void cnsector_state::leds_update()
7070{
7171   UINT16 active_state[0x10];
7272
r243550r243551
7878      {
7979         int di = j << 4 | i;
8080
81         // turn on powered segments
82         if (m_display_state[i] >> j & 1)
83            m_display_decay[di] = DISPLAY_DECAY_TIME;
81         // turn on powered leds
82         if (m_leds_state[i] >> j & 1)
83            m_leds_decay[di] = LEDS_DECAY_TIME;
8484
8585         // determine active state
86         int ds = (m_display_decay[di] != 0) ? 1 : 0;
86         int ds = (m_leds_decay[di] != 0) ? 1 : 0;
8787         active_state[i] |= (ds << j);
8888      }
8989   }
9090
9191   // on difference, send to output
9292   for (int i = 0; i < 0x10; i++)
93      if (m_display_cache[i] != active_state[i])
93      if (m_leds_cache[i] != active_state[i])
9494         output_set_digit_value(i, active_state[i]);
9595
96   memcpy(m_display_cache, active_state, sizeof(m_display_cache));
96   memcpy(m_leds_cache, active_state, sizeof(m_leds_cache));
9797}
9898
99TIMER_DEVICE_CALLBACK_MEMBER(cnsector_state::display_decay_tick)
99TIMER_DEVICE_CALLBACK_MEMBER(cnsector_state::leds_decay_tick)
100100{
101   // slowly turn off unpowered segments
101   // slowly turn off unpowered leds
102102   for (int i = 0; i < 0x100; i++)
103      if (!(m_display_state[i & 0xf] >> (i>>4) & 1) && m_display_decay[i])
104         m_display_decay[i]--;
103      if (!(m_leds_state[i & 0xf] >> (i>>4) & 1) && m_leds_decay[i])
104         m_leds_decay[i]--;
105105
106   display_update();
106   leds_update();
107107}
108108
109109
r243550r243551
130130{
131131   // R0-R5: select digit (right-to-left)
132132   for (int i = 0; i < 6; i++)
133      m_display_state[i] = (data >> i & 1) ? m_o : 0;
134   display_update();
133      m_leds_state[i] = (data >> i & 1) ? m_o : 0;
134   leds_update();
135135
136136   // R6-R9: direction leds
137137   for (int i = 6; i < 10; i++)
r243550r243551
196196void cnsector_state::machine_start()
197197{
198198   // zerofill
199   memset(m_display_state, 0, sizeof(m_display_state));
200   memset(m_display_cache, 0, sizeof(m_display_cache));
201   memset(m_display_decay, 0, sizeof(m_display_decay));
199   memset(m_leds_state, 0, sizeof(m_leds_state));
200   memset(m_leds_cache, 0, sizeof(m_leds_cache));
201   memset(m_leds_decay, 0, sizeof(m_leds_decay));
202202
203203   m_o = 0;
204204
205205   // register for savestates
206   save_item(NAME(m_display_state));
207   save_item(NAME(m_display_cache));
208   save_item(NAME(m_display_decay));
206   save_item(NAME(m_leds_state));
207   save_item(NAME(m_leds_cache));
208   save_item(NAME(m_leds_decay));
209209
210210   save_item(NAME(m_o));
211211}
r243550r243551
219219   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(cnsector_state, write_o))
220220   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(cnsector_state, write_r))
221221
222   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", cnsector_state, display_decay_tick, attotime::from_msec(1))
222   MCFG_TIMER_DRIVER_ADD_PERIODIC("leds_decay", cnsector_state, leds_decay_tick, attotime::from_msec(10))
223223
224224   MCFG_DEFAULT_LAYOUT(layout_cnsector)
225225
trunk/src/mess/drivers/comp4.c
r243550r243551
4141
4242   UINT16 m_o;
4343
44   UINT16 m_display_state;
45   UINT8 m_display_decay[0x10];
44   UINT16 m_leds_state;
45   UINT8 m_leds_decay[0x10];
4646
4747   DECLARE_READ8_MEMBER(read_k);
4848   DECLARE_WRITE16_MEMBER(write_o);
4949   DECLARE_WRITE16_MEMBER(write_r);
5050
51   TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
52   void display_update();
51   TIMER_DEVICE_CALLBACK_MEMBER(leds_decay_tick);
52   void leds_update();
5353
5454   virtual void machine_start();
5555};
r243550r243551
5757
5858/***************************************************************************
5959
60  LED Display
60  LEDs
6161
6262***************************************************************************/
6363
6464// The device strobes the outputs very fast, it is unnoticeable to the user.
6565// To prevent flickering here, we need to simulate a decay.
6666
67// decay time, in steps of 1ms
68#define DISPLAY_DECAY_TIME 25
67// decay time, in steps of 10ms
68#define LEDS_DECAY_TIME 2
6969
70void comp4_state::display_update()
70void comp4_state::leds_update()
7171{
7272   for (int i = 0; i < 0x10; i++)
7373   {
74      // turn on powered segments
75      if (m_display_state >> i & 1)
76         m_display_decay[i] = DISPLAY_DECAY_TIME;
74      // turn on powered leds
75      if (m_leds_state >> i & 1)
76         m_leds_decay[i] = LEDS_DECAY_TIME;
7777
7878      // send to output
79      output_set_lamp_value(i, (m_display_decay[i] != 0) ? 1 : 0);
79      output_set_lamp_value(i, (m_leds_decay[i] != 0) ? 1 : 0);
8080   }
8181}
8282
83TIMER_DEVICE_CALLBACK_MEMBER(comp4_state::display_decay_tick)
83TIMER_DEVICE_CALLBACK_MEMBER(comp4_state::leds_decay_tick)
8484{
85   // slowly turn off unpowered segments
85   // slowly turn off unpowered leds
8686   for (int i = 0; i < 0x10; i++)
87      if (!(m_display_state >> i & 1) && m_display_decay[i])
88         m_display_decay[i]--;
87      if (!(m_leds_state >> i & 1) && m_leds_decay[i])
88         m_leds_decay[i]--;
8989
90   display_update();
90   leds_update();
9191}
9292
9393
r243550r243551
118118   // R2    R7
119119   // R1    R6
120120   // R0    R5
121   m_display_state = data;
122   display_update();
121   m_leds_state = data;
122   leds_update();
123123}
124124
125125WRITE16_MEMBER(comp4_state::write_o)
r243550r243551
169169void comp4_state::machine_start()
170170{
171171   // zerofill
172   m_display_state = 0;
173   memset(m_display_decay, 0, sizeof(m_display_decay));
172   m_leds_state = 0;
173   memset(m_leds_decay, 0, sizeof(m_leds_decay));
174174
175175   m_o = 0;
176176
177177   // register for savestates
178   save_item(NAME(m_display_state));
179   save_item(NAME(m_display_decay));
178   save_item(NAME(m_leds_state));
179   save_item(NAME(m_leds_decay));
180180
181181   save_item(NAME(m_o));
182182}
r243550r243551
190190   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(comp4_state, write_o))
191191   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(comp4_state, write_r))
192192
193   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", comp4_state, display_decay_tick, attotime::from_msec(1))
193   MCFG_TIMER_DRIVER_ADD_PERIODIC("leds_decay", comp4_state, leds_decay_tick, attotime::from_msec(10))
194194
195195   MCFG_DEFAULT_LAYOUT(layout_comp4)
196196
trunk/src/mess/drivers/elecdet.c
r243550r243551
4444   UINT16 m_o;
4545   bool m_power_on;
4646
47   UINT16 m_display_state[0x10];
48   UINT16 m_display_cache[0x10];
49   UINT8 m_display_decay[0x100];
47   UINT16 m_leds_state[0x10];
48   UINT16 m_leds_cache[0x10];
49   UINT8 m_leds_decay[0x100];
5050
5151   DECLARE_READ8_MEMBER(read_k);
5252   DECLARE_WRITE16_MEMBER(write_o);
r243550r243551
5555   DECLARE_INPUT_CHANGED_MEMBER(power_button);
5656   DECLARE_WRITE_LINE_MEMBER(auto_power_off);
5757
58   TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
59   void display_update();
58   TIMER_DEVICE_CALLBACK_MEMBER(leds_decay_tick);
59   void leds_update();
6060
6161   virtual void machine_reset();
6262   virtual void machine_start();
r243550r243551
6666
6767/***************************************************************************
6868
69  LED Display
69  LEDs
7070
7171***************************************************************************/
7272
7373// The device strobes the outputs very fast, it is unnoticeable to the user.
7474// To prevent flickering here, we need to simulate a decay.
7575
76// decay time, in steps of 1ms
77#define DISPLAY_DECAY_TIME 40
76// decay time, in steps of 10ms
77#define LEDS_DECAY_TIME 4
7878
79void elecdet_state::display_update()
79void elecdet_state::leds_update()
8080{
8181   UINT16 active_state[0x10];
8282
r243550r243551
8888      {
8989         int di = j << 4 | i;
9090
91         // turn on powered segments
92         if (m_power_on && m_display_state[i] >> j & 1)
93            m_display_decay[di] = DISPLAY_DECAY_TIME;
91         // turn on powered leds
92         if (m_power_on && m_leds_state[i] >> j & 1)
93            m_leds_decay[di] = LEDS_DECAY_TIME;
9494
9595         // determine active state
96         int ds = (m_display_decay[di] != 0) ? 1 : 0;
96         int ds = (m_leds_decay[di] != 0) ? 1 : 0;
9797         active_state[i] |= (ds << j);
9898      }
9999   }
100100
101101   // on difference, send to output
102102   for (int i = 0; i < 0x10; i++)
103      if (m_display_cache[i] != active_state[i])
103      if (m_leds_cache[i] != active_state[i])
104104         output_set_digit_value(i, active_state[i]);
105105
106   memcpy(m_display_cache, active_state, sizeof(m_display_cache));
106   memcpy(m_leds_cache, active_state, sizeof(m_leds_cache));
107107}
108108
109TIMER_DEVICE_CALLBACK_MEMBER(elecdet_state::display_decay_tick)
109TIMER_DEVICE_CALLBACK_MEMBER(elecdet_state::leds_decay_tick)
110110{
111   // slowly turn off unpowered segments
111   // slowly turn off unpowered leds
112112   for (int i = 0; i < 0x100; i++)
113      if (!(m_display_state[i & 0xf] >> (i>>4) & 1) && m_display_decay[i])
114         m_display_decay[i]--;
113      if (!(m_leds_state[i & 0xf] >> (i>>4) & 1) && m_leds_decay[i])
114         m_leds_decay[i]--;
115115
116   display_update();
116   leds_update();
117117}
118118
119119
r243550r243551
145145   // R0-R6: select digit
146146   UINT8 o = BITSWAP8(m_o,7,5,2,1,4,0,6,3) & 0x7f;
147147   for (int i = 0; i < 7; i++)
148      m_display_state[i] = (data >> i & 1) ? o : 0;
148      m_leds_state[i] = (data >> i & 1) ? o : 0;
149149
150   display_update();
150   leds_update();
151151
152152   // R7,R8: speaker on
153153   m_speaker->level_w((data & 0x180 && m_o & 0x80) ? 1 : 0);
r243550r243551
249249void elecdet_state::machine_start()
250250{
251251   // zerofill
252   memset(m_display_state, 0, sizeof(m_display_state));
253   memset(m_display_cache, 0, sizeof(m_display_cache));
254   memset(m_display_decay, 0, sizeof(m_display_decay));
252   memset(m_leds_state, 0, sizeof(m_leds_state));
253   memset(m_leds_cache, 0, sizeof(m_leds_cache));
254   memset(m_leds_decay, 0, sizeof(m_leds_decay));
255255
256256   m_o = 0;
257257   m_power_on = false;
258258
259259   // register for savestates
260   save_item(NAME(m_display_state));
261   save_item(NAME(m_display_cache));
262   save_item(NAME(m_display_decay));
260   save_item(NAME(m_leds_state));
261   save_item(NAME(m_leds_cache));
262   save_item(NAME(m_leds_decay));
263263
264264   save_item(NAME(m_o));
265265   save_item(NAME(m_power_on));
r243550r243551
275275   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(elecdet_state, write_r))
276276   MCFG_TMS1XXX_POWER_OFF_CB(WRITELINE(elecdet_state, auto_power_off))
277277
278   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", elecdet_state, display_decay_tick, attotime::from_msec(1))
278   MCFG_TIMER_DRIVER_ADD_PERIODIC("leds_decay", elecdet_state, leds_decay_tick, attotime::from_msec(10))
279279
280280   MCFG_DEFAULT_LAYOUT(layout_elecdet)
281281
trunk/src/mess/drivers/splitsec.c
r243550r243551
7272   UINT16 m_r;
7373   UINT16 m_o;
7474
75   UINT16 m_display_state[0x10];
76   UINT16 m_display_cache[0x10];
77   UINT8 m_display_decay[0x100];
75   UINT16 m_leds_state[0x10];
76   UINT16 m_leds_cache[0x10];
77   UINT8 m_leds_decay[0x100];
7878
7979   DECLARE_READ8_MEMBER(read_k);
8080   DECLARE_WRITE16_MEMBER(write_o);
8181   DECLARE_WRITE16_MEMBER(splitsec_write_r);
8282   DECLARE_WRITE16_MEMBER(bankshot_write_r);
8383
84   TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
85   void display_update();
84   TIMER_DEVICE_CALLBACK_MEMBER(leds_decay_tick);
85   void leds_update();
8686
8787   virtual void machine_start();
8888};
r243550r243551
9191
9292/***************************************************************************
9393
94  LED Display
94  LEDs
9595
9696***************************************************************************/
9797
9898// The device strobes the outputs very fast, it is unnoticeable to the user.
9999// To prevent flickering here, we need to simulate a decay.
100100
101// decay time, in steps of 1ms
102#define DISPLAY_DECAY_TIME 40
101// decay time, in steps of 10ms
102#define LEDS_DECAY_TIME 4
103103
104104/* display layout, where number xy is lamp R(x),O(y)
105105
r243550r243551
122122
123123*/
124124
125void splitsec_state::display_update()
125void splitsec_state::leds_update()
126126{
127127   UINT16 active_state[0x10];
128128
129129   for (int i = 0; i < 0x10; i++)
130130   {
131131      // update current state
132      m_display_state[i] = (m_r >> i & 1) ? m_o : 0;
132      m_leds_state[i] = (m_r >> i & 1) ? m_o : 0;
133133
134134      active_state[i] = 0;
135135
r243550r243551
137137      {
138138         int di = j << 4 | i;
139139
140         // turn on powered segments
141         if (m_display_state[i] >> j & 1)
142            m_display_decay[di] = DISPLAY_DECAY_TIME;
140         // turn on powered leds
141         if (m_leds_state[i] >> j & 1)
142            m_leds_decay[di] = LEDS_DECAY_TIME;
143143
144144         // determine active state
145         int ds = (m_display_decay[di] != 0) ? 1 : 0;
145         int ds = (m_leds_decay[di] != 0) ? 1 : 0;
146146         active_state[i] |= (ds << j);
147147      }
148148   }
149149
150150   // on difference, send to output
151151   for (int i = 0; i < 0x10; i++)
152      if (m_display_cache[i] != active_state[i])
152      if (m_leds_cache[i] != active_state[i])
153153      {
154154         for (int j = 0; j < 8; j++)
155155            output_set_lamp_value(i*10 + j, active_state[i] >> j & 1);
156156      }
157157
158   memcpy(m_display_cache, active_state, sizeof(m_display_cache));
158   memcpy(m_leds_cache, active_state, sizeof(m_leds_cache));
159159}
160160
161TIMER_DEVICE_CALLBACK_MEMBER(splitsec_state::display_decay_tick)
161TIMER_DEVICE_CALLBACK_MEMBER(splitsec_state::leds_decay_tick)
162162{
163   // slowly turn off unpowered segments
163   // slowly turn off unpowered leds
164164   for (int i = 0; i < 0x100; i++)
165      if (!(m_display_state[i & 0xf] >> (i>>4) & 1) && m_display_decay[i])
166         m_display_decay[i]--;
165      if (!(m_leds_state[i & 0xf] >> (i>>4) & 1) && m_leds_decay[i])
166         m_leds_decay[i]--;
167167
168   display_update();
168   leds_update();
169169}
170170
171171
r243550r243551
193193   // O0-O6: led rows
194194   // O7: N/C
195195   m_o = data;
196   display_update();
196   leds_update();
197197}
198198
199199WRITE16_MEMBER(splitsec_state::splitsec_write_r)
r243550r243551
206206   
207207   // R0-R7: led columns
208208   m_r = data & 0xff;
209   display_update();
209   leds_update();
210210}
211211
212212WRITE16_MEMBER(splitsec_state::bankshot_write_r)
r243550r243551
219219   
220220   // R2-R10: led columns
221221   m_r = data & ~3;
222   display_update();
222   leds_update();
223223}
224224
225225
r243550r243551
281281void splitsec_state::machine_start()
282282{
283283   // zerofill
284   memset(m_display_state, 0, sizeof(m_display_state));
285   memset(m_display_cache, 0, sizeof(m_display_cache));
286   memset(m_display_decay, 0, sizeof(m_display_decay));
284   memset(m_leds_state, 0, sizeof(m_leds_state));
285   memset(m_leds_cache, 0, sizeof(m_leds_cache));
286   memset(m_leds_decay, 0, sizeof(m_leds_decay));
287287
288288   m_input_mux = 0;
289289   m_r = 0;
290290   m_o = 0;
291291
292292   // register for savestates
293   save_item(NAME(m_display_state));
294   save_item(NAME(m_display_cache));
295   save_item(NAME(m_display_decay));
293   save_item(NAME(m_leds_state));
294   save_item(NAME(m_leds_cache));
295   save_item(NAME(m_leds_decay));
296296
297297   save_item(NAME(m_input_mux));
298298   save_item(NAME(m_r));
r243550r243551
308308   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(splitsec_state, write_o))
309309   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(splitsec_state, splitsec_write_r))
310310
311   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", splitsec_state, display_decay_tick, attotime::from_msec(1))
311   MCFG_TIMER_DRIVER_ADD_PERIODIC("leds_decay", splitsec_state, leds_decay_tick, attotime::from_msec(10))
312312
313313   MCFG_DEFAULT_LAYOUT(layout_splitsec)
314314
trunk/src/mess/drivers/starwbc.c
r243550r243551
3939   UINT16 m_r;
4040   UINT16 m_o;
4141
42   UINT16 m_display_state[0x10];
43   UINT16 m_display_cache[0x10];
44   UINT8 m_display_decay[0x100];
42   UINT16 m_leds_state[0x10];
43   UINT16 m_leds_cache[0x10];
44   UINT8 m_leds_decay[0x100];
4545
4646   DECLARE_READ8_MEMBER(read_k);
4747   DECLARE_WRITE16_MEMBER(write_o);
4848   DECLARE_WRITE16_MEMBER(write_r);
4949
50   TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
51   void display_update();
50   TIMER_DEVICE_CALLBACK_MEMBER(leds_decay_tick);
51   void leds_update();
5252   void prepare_and_update();
5353
5454   virtual void machine_start();
r243550r243551
5858
5959/***************************************************************************
6060
61  LED Display
61  LEDs
6262
6363***************************************************************************/
6464
6565// The device strobes the outputs very fast, it is unnoticeable to the user.
6666// To prevent flickering here, we need to simulate a decay.
6767
68// decay time, in steps of 1ms
69#define DISPLAY_DECAY_TIME 40
68// decay time, in steps of 10ms
69#define LEDS_DECAY_TIME 4
7070
71void starwbc_state::display_update()
71void starwbc_state::leds_update()
7272{
7373   UINT16 active_state[0x10];
7474
r243550r243551
8080      {
8181         int di = j << 4 | i;
8282
83         // turn on powered segments
84         if (m_display_state[i] >> j & 1)
85            m_display_decay[di] = DISPLAY_DECAY_TIME;
83         // turn on powered leds
84         if (m_leds_state[i] >> j & 1)
85            m_leds_decay[di] = LEDS_DECAY_TIME;
8686
8787         // determine active state
88         int ds = (m_display_decay[di] != 0) ? 1 : 0;
88         int ds = (m_leds_decay[di] != 0) ? 1 : 0;
8989         active_state[i] |= (ds << j);
9090      }
9191   }
9292
9393   // on difference, send to output
9494   for (int i = 0; i < 0x10; i++)
95      if (m_display_cache[i] != active_state[i])
95      if (m_leds_cache[i] != active_state[i])
9696      {
9797         output_set_digit_value(i, active_state[i]);
9898
r243550r243551
100100            output_set_lamp_value(i*10 + j, active_state[i] >> j & 1);
101101      }
102102
103   memcpy(m_display_cache, active_state, sizeof(m_display_cache));
103   memcpy(m_leds_cache, active_state, sizeof(m_leds_cache));
104104}
105105
106TIMER_DEVICE_CALLBACK_MEMBER(starwbc_state::display_decay_tick)
106TIMER_DEVICE_CALLBACK_MEMBER(starwbc_state::leds_decay_tick)
107107{
108   // slowly turn off unpowered segments
108   // slowly turn off unpowered leds
109109   for (int i = 0; i < 0x100; i++)
110      if (!(m_display_state[i & 0xf] >> (i>>4) & 1) && m_display_decay[i])
111         m_display_decay[i]--;
110      if (!(m_leds_state[i & 0xf] >> (i>>4) & 1) && m_leds_decay[i])
111         m_leds_decay[i]--;
112112
113   display_update();
113   leds_update();
114114}
115115
116116void starwbc_state::prepare_and_update()
r243550r243551
120120
121121   // R0,R2,R4,R6,R8
122122   for (int i = 0; i < 5; i++)
123      m_display_state[i*2] = (m_r >> (i*2) & 1) ? (o & mask[i]) : 0;
123      m_leds_state[i*2] = (m_r >> (i*2) & 1) ? (o & mask[i]) : 0;
124124
125   display_update();
125   leds_update();
126126}
127127
128128
r243550r243551
227227void starwbc_state::machine_start()
228228{
229229   // zerofill
230   memset(m_display_state, 0, sizeof(m_display_state));
231   memset(m_display_cache, 0, sizeof(m_display_cache));
232   memset(m_display_decay, 0, sizeof(m_display_decay));
230   memset(m_leds_state, 0, sizeof(m_leds_state));
231   memset(m_leds_cache, 0, sizeof(m_leds_cache));
232   memset(m_leds_decay, 0, sizeof(m_leds_decay));
233233
234234   m_r = 0;
235235   m_o = 0;
236236
237237   // register for savestates
238   save_item(NAME(m_display_state));
239   save_item(NAME(m_display_cache));
240   save_item(NAME(m_display_decay));
238   save_item(NAME(m_leds_state));
239   save_item(NAME(m_leds_cache));
240   save_item(NAME(m_leds_decay));
241241
242242   save_item(NAME(m_r));
243243   save_item(NAME(m_o));
r243550r243551
252252   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(starwbc_state, write_o))
253253   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(starwbc_state, write_r))
254254
255   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", starwbc_state, display_decay_tick, attotime::from_msec(1))
255   MCFG_TIMER_DRIVER_ADD_PERIODIC("leds_decay", starwbc_state, leds_decay_tick, attotime::from_msec(10))
256256
257257   MCFG_DEFAULT_LAYOUT(layout_starwbc)
258258
trunk/src/mess/drivers/stopthie.c
r243550r243551
4343   UINT16 m_o;
4444   bool m_power_on;
4545
46   UINT16 m_display_state[0x10];
47   UINT16 m_display_cache[0x10];
48   UINT8 m_display_decay[0x100];
46   UINT16 m_leds_state[0x10];
47   UINT16 m_leds_cache[0x10];
48   UINT8 m_leds_decay[0x100];
4949
5050   DECLARE_READ8_MEMBER(read_k);
5151   DECLARE_WRITE16_MEMBER(write_o);
r243550r243551
5454   DECLARE_INPUT_CHANGED_MEMBER(power_button);
5555   DECLARE_WRITE_LINE_MEMBER(auto_power_off);
5656
57   TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
58   void display_update();
57   TIMER_DEVICE_CALLBACK_MEMBER(leds_decay_tick);
58   void leds_update();
5959
6060   virtual void machine_reset();
6161   virtual void machine_start();
r243550r243551
6565
6666/***************************************************************************
6767
68  LED Display
68  LEDs
6969
7070***************************************************************************/
7171
7272// The device strobes the outputs very fast, it is unnoticeable to the user.
7373// To prevent flickering here, we need to simulate a decay.
7474
75// decay time, in steps of 1ms
76#define DISPLAY_DECAY_TIME 40
75// decay time, in steps of 10ms
76#define LEDS_DECAY_TIME 4
7777
78void stopthief_state::display_update()
78void stopthief_state::leds_update()
7979{
8080   UINT16 active_state[0x10];
8181
r243550r243551
8787      {
8888         int di = j << 4 | i;
8989
90         // turn on powered segments
91         if (m_power_on && m_display_state[i] >> j & 1)
92            m_display_decay[di] = DISPLAY_DECAY_TIME;
90         // turn on powered leds
91         if (m_power_on && m_leds_state[i] >> j & 1)
92            m_leds_decay[di] = LEDS_DECAY_TIME;
9393
9494         // determine active state
95         int ds = (m_display_decay[di] != 0) ? 1 : 0;
95         int ds = (m_leds_decay[di] != 0) ? 1 : 0;
9696         active_state[i] |= (ds << j);
9797      }
9898   }
9999
100100   // on difference, send to output
101101   for (int i = 0; i < 0x10; i++)
102      if (m_display_cache[i] != active_state[i])
102      if (m_leds_cache[i] != active_state[i])
103103         output_set_digit_value(i, active_state[i]);
104104
105   memcpy(m_display_cache, active_state, sizeof(m_display_cache));
105   memcpy(m_leds_cache, active_state, sizeof(m_leds_cache));
106106}
107107
108TIMER_DEVICE_CALLBACK_MEMBER(stopthief_state::display_decay_tick)
108TIMER_DEVICE_CALLBACK_MEMBER(stopthief_state::leds_decay_tick)
109109{
110   // slowly turn off unpowered segments
110   // slowly turn off unpowered leds
111111   for (int i = 0; i < 0x100; i++)
112      if (!(m_display_state[i & 0xf] >> (i>>4) & 1) && m_display_decay[i])
113         m_display_decay[i]--;
112      if (!(m_leds_state[i & 0xf] >> (i>>4) & 1) && m_leds_decay[i])
113         m_leds_decay[i]--;
114114
115   display_update();
115   leds_update();
116116}
117117
118118
r243550r243551
144144   // R0-R2: select digit
145145   UINT8 o = BITSWAP8(m_o,3,5,2,1,4,0,6,7) & 0x7f;
146146   for (int i = 0; i < 3; i++)
147      m_display_state[i] = (data >> i & 1) ? o : 0;
147      m_leds_state[i] = (data >> i & 1) ? o : 0;
148148
149   display_update();
149   leds_update();
150150
151151   // R3-R8: speaker on
152152   m_speaker->level_w((data & 0x1f8 && m_o & 8) ? 1 : 0);
r243550r243551
234234void stopthief_state::machine_start()
235235{
236236   // zerofill
237   memset(m_display_state, 0, sizeof(m_display_state));
238   memset(m_display_cache, 0, sizeof(m_display_cache));
239   memset(m_display_decay, 0, sizeof(m_display_decay));
237   memset(m_leds_state, 0, sizeof(m_leds_state));
238   memset(m_leds_cache, 0, sizeof(m_leds_cache));
239   memset(m_leds_decay, 0, sizeof(m_leds_decay));
240240
241241   m_o = 0;
242242   m_power_on = false;
243243
244244   // register for savestates
245   save_item(NAME(m_display_state));
246   save_item(NAME(m_display_cache));
247   save_item(NAME(m_display_decay));
245   save_item(NAME(m_leds_state));
246   save_item(NAME(m_leds_cache));
247   save_item(NAME(m_leds_decay));
248248
249249   save_item(NAME(m_o));
250250   save_item(NAME(m_power_on));
r243550r243551
260260   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(stopthief_state, write_r))
261261   MCFG_TMS1XXX_POWER_OFF_CB(WRITELINE(stopthief_state, auto_power_off))
262262
263   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", stopthief_state, display_decay_tick, attotime::from_msec(1))
263   MCFG_TIMER_DRIVER_ADD_PERIODIC("leds_decay", stopthief_state, leds_decay_tick, attotime::from_msec(10))
264264
265265   MCFG_DEFAULT_LAYOUT(layout_stopthie)
266266
trunk/src/mess/drivers/ticalc1x.c
r243550r243551
3737   UINT16 m_o;
3838   bool m_power_on;
3939
40   UINT16 m_display_state[0x10];
41   UINT16 m_display_cache[0x10];
42   UINT8 m_display_decay[0x100];
40   UINT16 m_leds_state[0x10];
41   UINT16 m_leds_cache[0x10];
42   UINT8 m_leds_decay[0x100];
4343
4444   DECLARE_READ8_MEMBER(tisr16_read_k);
4545   DECLARE_WRITE16_MEMBER(tisr16_write_o);
4646   DECLARE_WRITE16_MEMBER(tisr16_write_r);
47   void tisr16_display_update();
47   void tisr16_leds_update();
4848
4949   DECLARE_READ8_MEMBER(ti1270_read_k);
5050   DECLARE_WRITE16_MEMBER(ti1270_write_o);
r243550r243551
6161   DECLARE_INPUT_CHANGED_MEMBER(power_button);
6262   DECLARE_WRITE_LINE_MEMBER(auto_power_off);
6363
64   TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
65   void display_update();
64   TIMER_DEVICE_CALLBACK_MEMBER(leds_decay_tick);
65   void leds_update();
6666
6767   virtual void machine_reset();
6868   virtual void machine_start();
r243550r243551
7272
7373/***************************************************************************
7474
75  LED Display
75  LEDs
7676
7777***************************************************************************/
7878
7979// Devices with TMS09x0 strobe the outputs very fast, it is unnoticeable to the user.
8080// To prevent flickering here, we need to simulate a decay.
8181
82// decay time, in steps of 1ms
83#define DISPLAY_DECAY_TIME 50
82// decay time, in steps of 10ms
83#define LEDS_DECAY_TIME 5
8484
85void ticalc1x_state::display_update()
85void ticalc1x_state::leds_update()
8686{
8787   UINT16 active_state[0x10];
8888
r243550r243551
9494      {
9595         int di = j << 4 | i;
9696
97         // turn on powered segments
98         if (m_power_on && m_display_state[i] >> j & 1)
99            m_display_decay[di] = DISPLAY_DECAY_TIME;
97         // turn on powered leds
98         if (m_power_on && m_leds_state[i] >> j & 1)
99            m_leds_decay[di] = LEDS_DECAY_TIME;
100100
101101         // determine active state
102         int ds = (m_display_decay[di] != 0) ? 1 : 0;
102         int ds = (m_leds_decay[di] != 0) ? 1 : 0;
103103         active_state[i] |= (ds << j);
104104      }
105105   }
106106
107107   // on difference, send to output
108108   for (int i = 0; i < 0x10; i++)
109      if (m_display_cache[i] != active_state[i])
109      if (m_leds_cache[i] != active_state[i])
110110      {
111111         output_set_digit_value(i, active_state[i]);
112112
r243550r243551
114114            output_set_lamp_value(i*10 + j, active_state[i] >> j & 1);
115115      }
116116
117   memcpy(m_display_cache, active_state, sizeof(m_display_cache));
117   memcpy(m_leds_cache, active_state, sizeof(m_leds_cache));
118118}
119119
120TIMER_DEVICE_CALLBACK_MEMBER(ticalc1x_state::display_decay_tick)
120TIMER_DEVICE_CALLBACK_MEMBER(ticalc1x_state::leds_decay_tick)
121121{
122   // slowly turn off unpowered segments
122   // slowly turn off unpowered leds
123123   for (int i = 0; i < 0x100; i++)
124      if (!(m_display_state[i & 0xf] >> (i>>4) & 1) && m_display_decay[i])
125         m_display_decay[i]--;
124      if (!(m_leds_state[i & 0xf] >> (i>>4) & 1) && m_leds_decay[i])
125         m_leds_decay[i]--;
126126
127   display_update();
127   leds_update();
128128}
129129
130130
r243550r243551
137137
138138// SR-16: TMS1000 MCU labeled TMS1001NL. die labeled 1001A
139139
140void ticalc1x_state::tisr16_display_update()
140void ticalc1x_state::tisr16_leds_update()
141141{
142142   // update leds state
143143   for (int i = 0; i < 11; i++)
144144      if (m_r >> i & 1)
145         m_display_state[i] = m_o;
145         m_leds_state[i] = m_o;
146146
147147   // exponent sign (not 100% sure this is correct)
148   m_display_state[11] = (m_display_state[0] | m_display_state[1]) ? 0x40 : 0;
148   m_leds_state[11] = (m_leds_state[0] | m_leds_state[1]) ? 0x40 : 0;
149149
150150   // send to output
151151   for (int i = 0; i < 12; i++)
152      output_set_digit_value(i, m_display_state[i]);
152      output_set_digit_value(i, m_leds_state[i]);
153153}
154154
155155READ8_MEMBER(ticalc1x_state::tisr16_read_k)
r243550r243551
170170   // R0-R10: select digit (right-to-left)
171171   m_r = data;
172172
173   tisr16_display_update();
173   tisr16_leds_update();
174174}
175175
176176WRITE16_MEMBER(ticalc1x_state::tisr16_write_o)
r243550r243551
178178   // O0-O7: digit segments
179179   m_o = data;
180180
181   tisr16_display_update();
181   tisr16_leds_update();
182182}
183183
184184
r243550r243551
200200{
201201   // R0-R7: select digit (right-to-left)
202202   for (int i = 0; i < 8; i++)
203      m_display_state[i] = (data >> i & 1) ? m_o : 0;
203      m_leds_state[i] = (data >> i & 1) ? m_o : 0;
204204
205   display_update();
205   leds_update();
206206}
207207
208208WRITE16_MEMBER(ticalc1x_state::ti1270_write_o)
r243550r243551
232232   // R0-R8: select digit (right-to-left)
233233   // note: 3rd digit is custom(not 7seg), for math symbols
234234   for (int i = 0; i < 9; i++)
235      m_display_state[i] = (data >> i & 1) ? m_o : 0;
235      m_leds_state[i] = (data >> i & 1) ? m_o : 0;
236236
237237   // 6th digit only has A and G for =
238   m_display_state[3] &= 0x41;
238   m_leds_state[3] &= 0x41;
239239
240   display_update();
240   leds_update();
241241}
242242
243243WRITE16_MEMBER(ticalc1x_state::wizatron_write_o)
r243550r243551
271271   // R0-R8: select digit
272272   UINT8 o = BITSWAP8(m_o,7,5,2,1,4,0,6,3);
273273   for (int i = 0; i < 9; i++)
274      m_display_state[i] = (data >> i & 1) ? o : 0;
274      m_leds_state[i] = (data >> i & 1) ? o : 0;
275275
276276   // 1st digit only has segments B,F,G,DP
277   m_display_state[0] &= 0xe2;
277   m_leds_state[0] &= 0xe2;
278278
279   display_update();
279   leds_update();
280280}
281281
282282WRITE16_MEMBER(ticalc1x_state::ti30_write_o)
r243550r243551
654654void ticalc1x_state::machine_start()
655655{
656656   // zerofill
657   memset(m_display_state, 0, sizeof(m_display_state));
658   memset(m_display_cache, 0, sizeof(m_display_cache));
659   memset(m_display_decay, 0, sizeof(m_display_decay));
657   memset(m_leds_state, 0, sizeof(m_leds_state));
658   memset(m_leds_cache, 0, sizeof(m_leds_cache));
659   memset(m_leds_decay, 0, sizeof(m_leds_decay));
660660
661661   m_r = 0;
662662   m_o = 0;
663663   m_power_on = false;
664664
665665   // register for savestates
666   save_item(NAME(m_display_state));
667   save_item(NAME(m_display_cache));
668   save_item(NAME(m_display_decay));
666   save_item(NAME(m_leds_state));
667   save_item(NAME(m_leds_cache));
668   save_item(NAME(m_leds_decay));
669669
670670   save_item(NAME(m_r));
671671   save_item(NAME(m_o));
r243550r243551
688688static MACHINE_CONFIG_START( t9base, ticalc1x_state )
689689
690690   /* basic machine hardware */
691   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", ticalc1x_state, display_decay_tick, attotime::from_msec(1))
691   MCFG_TIMER_DRIVER_ADD_PERIODIC("leds_decay", ticalc1x_state, leds_decay_tick, attotime::from_msec(10))
692692
693693   /* no video! */
694694
trunk/src/mess/drivers/tispeak.c
r243550r243551
5454   UINT16 m_o;
5555   int m_power_on;
5656
57   UINT16 m_display_state[0x10];
58   UINT16 m_display_cache[0x10];
59   UINT8 m_display_decay[0x100];
60   void display_update();
61   TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
57   UINT16 m_leds_state[0x10];
58   UINT16 m_leds_cache[0x10];
59   UINT8 m_leds_decay[0x100];
60   void leds_update();
61   TIMER_DEVICE_CALLBACK_MEMBER(leds_decay_tick);
6262
6363   UINT32 m_cart_max_size;
6464   UINT8* m_cart_base;
r243550r243551
127127// The device strobes the filament-enable very fast, it is unnoticeable to the user.
128128// To prevent flickering here, we need to simulate a decay.
129129
130// decay time, in steps of 1ms
131#define DISPLAY_DECAY_TIME 40
130// decay time, in steps of 10ms
131#define LEDS_DECAY_TIME 4
132132
133void tispeak_state::display_update()
133void tispeak_state::leds_update()
134134{
135135   int filament_on = (m_r & 0x8000) ? 1 : 0;
136136   UINT16 active_state[0x10];
r243550r243551
138138   for (int i = 0; i < 0x10; i++)
139139   {
140140      // update current state
141      m_display_state[i] = (m_r >> i & 1) ? m_o : 0;
141      m_leds_state[i] = (m_r >> i & 1) ? m_o : 0;
142142
143143      active_state[i] = 0;
144144
r243550r243551
146146      {
147147         int di = j << 4 | i;
148148
149         // turn on powered segments
150         if (m_power_on && filament_on && m_display_state[i] >> j & 1)
151            m_display_decay[di] = DISPLAY_DECAY_TIME;
149         // turn on powered leds
150         if (m_power_on && filament_on && m_leds_state[i] >> j & 1)
151            m_leds_decay[di] = LEDS_DECAY_TIME;
152152
153153         // determine active state
154         int ds = (m_display_decay[di] != 0) ? 1 : 0;
154         int ds = (m_leds_decay[di] != 0) ? 1 : 0;
155155         active_state[i] |= (ds << j);
156156      }
157157   }
158158
159159   // on difference, send to output
160160   for (int i = 0; i < 0x10; i++)
161      if (m_display_cache[i] != active_state[i])
161      if (m_leds_cache[i] != active_state[i])
162162      {
163163         output_set_digit_value(i, active_state[i] & 0x3fff);
164164
r243550r243551
166166            output_set_lamp_value(i*0x10 + j, active_state[i] >> j & 1);
167167      }
168168
169   memcpy(m_display_cache, active_state, sizeof(m_display_cache));
169   memcpy(m_leds_cache, active_state, sizeof(m_leds_cache));
170170}
171171
172TIMER_DEVICE_CALLBACK_MEMBER(tispeak_state::display_decay_tick)
172TIMER_DEVICE_CALLBACK_MEMBER(tispeak_state::leds_decay_tick)
173173{
174   // slowly turn off unpowered segments
174   // slowly turn off unpowered leds
175175   for (int i = 0; i < 0x100; i++)
176      if (!(m_display_state[i & 0xf] >> (i>>4) & 1) && m_display_decay[i])
177         m_display_decay[i]--;
176      if (!(m_leds_state[i & 0xf] >> (i>>4) & 1) && m_leds_decay[i])
177         m_leds_decay[i]--;
178178
179   display_update();
179   leds_update();
180180}
181181
182182
r243550r243551
212212
213213   // other bits: MCU internal use
214214   m_r = data;
215   display_update();
215   leds_update();
216216}
217217
218218WRITE16_MEMBER(tispeak_state::snspell_write_o)
r243550r243551
221221   // E,D,C,G,B,A,I,M,L,K,N,J,[AP],H,F,[DP] (sidenote: TI KLMN = MAME MLNK)
222222   m_o = BITSWAP16(data,12,15,10,7,8,9,11,6,13,3,14,0,1,2,4,5);
223223
224   display_update();
224   leds_update();
225225}
226226
227227
r243550r243551
243243   // [DP],D,C,H,F,B,I,M,L,K,N,J,[AP],E,G,A (sidenote: TI KLMN = MAME MLNK)
244244   m_o = BITSWAP16(data,12,0,10,7,8,9,11,6,3,14,4,13,1,2,5,15);
245245
246   display_update();
246   leds_update();
247247}
248248
249249
r243550r243551
253253{
254254   // same as default, except R13 is used for an extra digit
255255   m_r = data;
256   display_update();
256   leds_update();
257257}
258258
259259
r243550r243551
442442void tispeak_state::machine_start()
443443{
444444   // zerofill
445   memset(m_display_state, 0, sizeof(m_display_state));
446   memset(m_display_cache, 0, sizeof(m_display_cache));
447   memset(m_display_decay, 0, sizeof(m_display_decay));
445   memset(m_leds_state, 0, sizeof(m_leds_state));
446   memset(m_leds_cache, 0, sizeof(m_leds_cache));
447   memset(m_leds_decay, 0, sizeof(m_leds_decay));
448448
449449   m_r = 0;
450450   m_o = 0;
451451   m_power_on = 0;
452452
453453   // register for savestates
454   save_item(NAME(m_display_state));
455   save_item(NAME(m_display_cache));
456   save_item(NAME(m_display_decay));
454   save_item(NAME(m_leds_state));
455   save_item(NAME(m_leds_cache));
456   save_item(NAME(m_leds_decay));
457457
458458   save_item(NAME(m_r));
459459   save_item(NAME(m_o));
r243550r243551
482482   MCFG_TMS0270_WRITE_CTL_CB(DEVWRITE8("tms5100", tms5100_device, ctl_w))
483483   MCFG_TMS0270_WRITE_PDC_CB(DEVWRITELINE("tms5100", tms5100_device, pdc_w))
484484
485   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", tispeak_state, display_decay_tick, attotime::from_msec(1))
485   MCFG_TIMER_DRIVER_ADD_PERIODIC("leds_decay", tispeak_state, leds_decay_tick, attotime::from_msec(10))
486486   MCFG_DEFAULT_LAYOUT(layout_snspell) // max 9 digits
487487
488488   /* no video! */
trunk/src/mess/drivers/wildfire.c
r243550r243551
4646   UINT8 m_d;
4747   UINT16 m_a;
4848
49   UINT16 m_display_state[0x10];
50   UINT16 m_display_cache[0x10];
51   UINT8 m_display_decay[0x100];
49   UINT16 m_leds_state[0x10];
50   UINT16 m_leds_cache[0x10];
51   UINT8 m_leds_decay[0x100];
5252
5353   DECLARE_READ8_MEMBER(read_k);
5454   DECLARE_WRITE8_MEMBER(write_d);
5555   DECLARE_WRITE16_MEMBER(write_a);
5656
57   TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
58   void display_update();
57   TIMER_DEVICE_CALLBACK_MEMBER(leds_decay_tick);
58   void leds_update();
5959   bool index_is_7segled(int index);
6060
6161   virtual void machine_start();
r243550r243551
6565
6666/***************************************************************************
6767
68  LED Display
68  LEDs
6969
7070***************************************************************************/
7171
7272// The device strobes the outputs very fast, it is unnoticeable to the user.
7373// To prevent flickering here, we need to simulate a decay.
7474
75// decay time, in steps of 1ms
76#define DISPLAY_DECAY_TIME 40
75// decay time, in steps of 10ms
76#define LEDS_DECAY_TIME 4
7777
7878inline bool wildfire_state::index_is_7segled(int index)
7979{
r243550r243551
8181   return (index < 3);
8282}
8383
84void wildfire_state::display_update()
84void wildfire_state::leds_update()
8585{
8686   UINT16 active_state[0x10];
8787
8888   for (int i = 0; i < 0x10; i++)
8989   {
9090      // update current state
91      m_display_state[i] = (~m_a >> i & 1) ? m_d : 0;
91      m_leds_state[i] = (~m_a >> i & 1) ? m_d : 0;
9292
9393      active_state[i] = 0;
9494
r243550r243551
9696      {
9797         int di = j << 4 | i;
9898
99         // turn on powered segments
100         if (m_display_state[i] >> j & 1)
101            m_display_decay[di] = DISPLAY_DECAY_TIME;
99         // turn on powered leds
100         if (m_leds_state[i] >> j & 1)
101            m_leds_decay[di] = LEDS_DECAY_TIME;
102102
103103         // determine active state
104         int ds = (m_display_decay[di] != 0) ? 1 : 0;
104         int ds = (m_leds_decay[di] != 0) ? 1 : 0;
105105         active_state[i] |= (ds << j);
106106      }
107107   }
108108
109109   // on difference, send to output
110110   for (int i = 0; i < 0x10; i++)
111      if (m_display_cache[i] != active_state[i])
111      if (m_leds_cache[i] != active_state[i])
112112      {
113113         if (index_is_7segled(i))
114114            output_set_digit_value(i, BITSWAP8(active_state[i],7,0,1,2,3,4,5,6) & 0x7f);
r243550r243551
117117            output_set_lamp_value(i*10 + j, active_state[i] >> j & 1);
118118      }
119119
120   memcpy(m_display_cache, active_state, sizeof(m_display_cache));
120   memcpy(m_leds_cache, active_state, sizeof(m_leds_cache));
121121}
122122
123TIMER_DEVICE_CALLBACK_MEMBER(wildfire_state::display_decay_tick)
123TIMER_DEVICE_CALLBACK_MEMBER(wildfire_state::leds_decay_tick)
124124{
125   // slowly turn off unpowered segments
125   // slowly turn off unpowered leds
126126   for (int i = 0; i < 0x100; i++)
127      if (!(m_display_state[i & 0xf] >> (i>>4) & 1) && m_display_decay[i])
128         m_display_decay[i]--;
127      if (!(m_leds_state[i & 0xf] >> (i>>4) & 1) && m_leds_decay[i])
128         m_leds_decay[i]--;
129129
130   display_update();
130   leds_update();
131131}
132132
133133
r243550r243551
147147WRITE8_MEMBER(wildfire_state::write_d)
148148{
149149   m_d = data;
150   display_update();
150   leds_update();
151151}
152152
153153WRITE16_MEMBER(wildfire_state::write_a)
154154{
155155   m_a = data;
156   display_update();
156   leds_update();
157157}
158158
159159
r243550r243551
183183void wildfire_state::machine_start()
184184{
185185   // zerofill
186   memset(m_display_state, 0, sizeof(m_display_state));
187   memset(m_display_cache, 0, sizeof(m_display_cache));
188   memset(m_display_decay, 0, sizeof(m_display_decay));
186   memset(m_leds_state, 0, sizeof(m_leds_state));
187   memset(m_leds_cache, 0, sizeof(m_leds_cache));
188   memset(m_leds_decay, 0, sizeof(m_leds_decay));
189189
190190   m_d = 0;
191191   m_a = 0;
192192
193193   // register for savestates
194   save_item(NAME(m_display_state));
195   save_item(NAME(m_display_cache));
196   save_item(NAME(m_display_decay));
194   save_item(NAME(m_leds_state));
195   save_item(NAME(m_leds_cache));
196   save_item(NAME(m_leds_decay));
197197
198198   save_item(NAME(m_d));
199199   save_item(NAME(m_a));
r243550r243551
209209   MCFG_AMI_S2000_WRITE_D_CB(WRITE8(wildfire_state, write_d))
210210   MCFG_AMI_S2000_WRITE_A_CB(WRITE16(wildfire_state, write_a))
211211
212   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", wildfire_state, display_decay_tick, attotime::from_msec(1))
212   MCFG_TIMER_DRIVER_ADD_PERIODIC("leds_decay", wildfire_state, leds_decay_tick, attotime::from_msec(10))
213213
214214   MCFG_DEFAULT_LAYOUT(layout_wildfire)
215215
trunk/src/osd/sdl/osdsdl.h
r243550r243551
1414//============================================================
1515
1616// Process events in worker thread
17#if defined(SDLMAME_WIN32) || ((SDLMAME_SDL2) && (!defined(SDLMAME_EMSCRIPTEN)))
17#if defined(SDLMAME_WIN32) || ((SDLMAME_SDL2) && (!defined(SDLMAME_EMSCRIPTEN)) && (!defined(SDLMAME_MACOSX)))
1818#define SDLMAME_EVENTS_IN_WORKER_THREAD (1)
1919#else
2020#define SDLMAME_EVENTS_IN_WORKER_THREAD (0)


Previous 199869 Revisions Next


© 1997-2024 The MAME Team