Merge branch 'master' of https://github.com/mamedev/mame.git
This commit is contained in:
commit
a51ee3e00f
@ -260,11 +260,11 @@ Ferrari F355 Challenge (twin, prototype) no cart 22848P* 21 (64Mb) pre
|
||||
Ferrari F355 Challenge 2 (twin) no cart 23399 21 (64Mb) present 315-6206 317-0287-COM content is the same as regular 171-7919A cart
|
||||
House of the Dead 2 (prototype) no cart A1E2 21 (64Mb) present 315-6206 present no label on IC42
|
||||
Inu 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
|
||||
Maze of the Kings The (prototype) no cart * 21 (64Mb) present 315-6206 FRI * flash-PCB, not dumped but known to exist
|
||||
Samba de Amigo (prototype) no cart * 21 (64Mb) present 315-6206 317-0270-COM * instead of EPROM have tiny PCB with 2 flashroms on it
|
||||
Soul Surfer (Rev A) 840-0095C 23838C 21 (64Mb) present 315-6206 not present
|
||||
Star Horse (server) 840-0055C 23626 17 (64Mb) present 315-6206 not present requires 837-13785 ARCNET&IO BD
|
||||
The 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
|
||||
The Maze of the Kings (prototype) no cart * 21 (64Mb) present 315-6206 FRI * flash-PCB, not dumped but known to exist
|
||||
Virtua NBA (prototype) no cart * 21 (64Mb) present 315-6206 317-0271-COM * instead of EPROM have tiny PCB with 2 flashroms on it
|
||||
Virtua 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
|
||||
|
||||
@ -446,24 +446,24 @@ IC17S-IC38S - MaskROM (SOP44), either 32Mb or 64Mb. Not all positions are popula
|
||||
CN1/2/3 - connectors joining to main board
|
||||
|
||||
Games known to use this PCB include....
|
||||
Sticker EPROM MASKROMs 25LC040 A54SX32
|
||||
Game on cart IC11# # of SOP44 IC13S# IC1# Notes
|
||||
-------------------------------------------------------------------------------------------------------------------------------
|
||||
Club Kart European Session (2003, Rev A) 840-0139C 24173A 18 (64Mb) present 317-0382-COM
|
||||
Club 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")
|
||||
Club Kart Prize Ver. B 840-0137C 24149 16 (64Mb) present 317-0368-COM requires 837-14438 "SH I/O BD" hopper controller (not dumped)
|
||||
Giant Gram 2000 840-0039C 23377 20 (64Mb) present 317-0296-COM
|
||||
Kick '4' Cash 840-0140C 24212 16 (64Mb) present 317-0397-COM requires 837-14438 "SH I/O BD" hopper controller (not dumped)
|
||||
Marvel Vs. Capcom 2 New Age of Heroes (Rev A) 841-0007C-02 23085A 14 (64Mb)* present 317-5058-COM *(+2x 32Mb)
|
||||
MushiKing 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
|
||||
Quiz Ah Megamisama 840-0030C 23227 16 (64Mb) present 317-0280-JPN
|
||||
Shootout Pool 840-0098C 23844 4 (64Mb) present 317-0336-COM requires regular 837-13551 and 837-13938 rotary JVS boards
|
||||
Shootout Pool Prize / The Medal (Rev A) 840-0128C 24065A 4 (64Mb) present 317-0367-COM requires Naomi-based hopper controller
|
||||
Shootout Pool Prize / The Medal Ver. B 840-0136C 24148 4 (64Mb) present 317-0367-COM requires Naomi-based or 837-14438 hopper controller
|
||||
SWP 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
|
||||
Touch 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.
|
||||
Virtua Fighter 4 Evolution 840-0106B 23934 20 (64Mb) present 317-0339-COM
|
||||
Virtua Tennis 2 / Power Smash 2 (Rev A) 840-0084C 22327A 18 (64Mb) present 317-0320-COM
|
||||
Sticker EPROM MASKROMs 25LC040 A54SX32
|
||||
Game on cart IC11# # of SOP44 IC13S# IC1# Notes
|
||||
-----------------------------------------------------------------------------------------------------------------------------------------------
|
||||
Club Kart: European Session (2003, Rev A) 840-0139C 24173A 18 (64Mb) present 317-0382-COM
|
||||
Club 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")
|
||||
Club Kart Prize Ver. B 840-0137C 24149 16 (64Mb) present 317-0368-COM requires 837-14438 "SH I/O BD" hopper controller (not dumped)
|
||||
Giant Gram 2000 840-0039C 23377 20 (64Mb) present 317-0296-COM
|
||||
Kick '4' Cash 840-0140C 24212 16 (64Mb) present 317-0397-COM requires 837-14438 "SH I/O BD" hopper controller (not dumped)
|
||||
Marvel Vs. Capcom 2 New Age of Heroes (Rev A) 841-0007C-02 23085A 14 (64Mb)* present 317-5058-COM *(+2x 32Mb)
|
||||
MushiKing 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
|
||||
Quiz Ah Megamisama 840-0030C 23227 16 (64Mb) present 317-0280-JPN
|
||||
Shootout Pool 840-0098C 23844 4 (64Mb) present 317-0336-COM requires regular 837-13551 and 837-13938 rotary JVS boards
|
||||
Shootout Pool Prize / Shootout Pool The Medal (Rev A) 840-0128C 24065A 4 (64Mb) present 317-0367-COM requires Naomi-based hopper controller
|
||||
Shootout 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
|
||||
SWP 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
|
||||
Touch 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.
|
||||
Virtua Fighter 4 Evolution 840-0106B 23934 20 (64Mb) present 317-0339-COM
|
||||
Virtua Tennis 2 / Power Smash 2 (Rev A) 840-0084C 22327A 18 (64Mb) present 317-0320-COM
|
||||
|
||||
|
||||
|
||||
@ -514,7 +514,7 @@ Derby Owners Club World Edition (Rev C) 840-0088C 22336C 7 (128Mb) 3
|
||||
Derby Owners Club World Edition (Rev D) 840-0088C 22336D 7 (128Mb) 315-6319A 315-6213 not present 2 MaskROM are different from Rev C
|
||||
Giga Wing 2 841-0014C 22270 5 (128Mb) 315-6319A 315-6213 317-5064-COM
|
||||
Mobile Suit Gundam: Federation Vs. Zeon 841-0017C 23638 10 (128Mb) 315-6319A 315-6213 317-5070-COM
|
||||
Moero Justice Gakuen / Project Justice (Rev A) 841-0015C 23548A 11 (128Mb) 315-6319A 315-6213 317-5065-COM
|
||||
Moero! Justice Gakuen / Project Justice (Rev A) 841-0015C 23548A 11 (128Mb) 315-6319A 315-6213 317-5065-COM
|
||||
MushiKing - The King Of Beetle 2K5 1ST 840-0158C 24286 7 (128Mb) 315-6319A 315-6213 not present requires 610-0669 barcode reader
|
||||
Oinori-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)
|
||||
Samba de Amigo Ver. 2000 840-0047C 23600 11 (128Mb) 315-6319A 315-6213 317-0295-COM
|
||||
@ -575,7 +575,7 @@ Illmatic Envelope 841-0059C not present 4 (5
|
||||
Mamoru-kun wa Norowarete Shimatta 841-0060C not present 4 (512Mb) present 317-5132-JPN present IC2# is labeled "VER.2"
|
||||
Manic Panic Ghost! 840-0170C not present 5 (512Mb) present 317-0461-COM present requires 837-14672 sensor board (SH4 based)
|
||||
Melty Blood Actress Again 841-0061C not present 6 (512Mb) present 317-5133-JPN present IC2# is labeled "REV.A" - IC4# is marked "5A"
|
||||
Melty Blood Actress Again (Rev A) 841-0061C 24455 6 (512Mb) present 317-5133-JPN present IC2# is labeled "REV.A" - IC4# is marked "5A"
|
||||
Melty 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"
|
||||
Mushiking - 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
|
||||
Mushiking - The King Of Beetles II ENG (Ver. 2.001) 840-0164C 24357 2 (512Mb) present 317-0437-COM present IC4# is marked "18"
|
||||
Poka Suka Ghost 840-0170C not present 5 (512Mb) present 317-0461-COM present requires 837-14672 sensor board (SH4 based)
|
||||
@ -632,12 +632,12 @@ Notes:
|
||||
Game Type on cart FLASHROM # of SOP48 IC @ 1F IC @ 1H IC @ 2K IC @ 1M code (1) Notes
|
||||
------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
/Gun Survivor 2 Biohazard
|
||||
\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
|
||||
\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
|
||||
/Gun Survivor 2 Biohazard
|
||||
\Code: Veronica (Ver. E) F1X 25709801 1 (64Mb) 14 (128Mb) not present NAODEC2A NAODEC1B 317-5075-COM BHF2
|
||||
/Shin Nihon Prowrestling Toukon /FL0 & FL1 have pin55 raised from PCB.
|
||||
\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.
|
||||
World 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
|
||||
World 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)
|
||||
World Kicks (WK2 Ver. A) F2 25209801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1A 317-5040-COM WK2
|
||||
World Kicks (WK3 Ver. A) F2 25209801 2 (64Mb) 9 (128Mb) not present NAODEC2A NAODEC1A 317-5040-COM WK3
|
||||
|
||||
@ -685,7 +685,7 @@ Notes:
|
||||
Cart Sticker FL0-FL3 FLASHROMs X76F100 CY37128 315-5881 Known Game
|
||||
Game Type on cart FLASHROM # of SOP48 IC @ 1F IC @ 2J IC @ 1M code (1) Notes
|
||||
--------------------------------------------------------------------------------------------------------------------------------
|
||||
Mazan: 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
|
||||
Mazan: 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)
|
||||
Mazan: Flash of the Blade (Ver. A) F1X 25869812 1 (64Mb) 8 (128Mb) present NAODEC3 317-0266-COM MAZ3
|
||||
Ninja Assault (Ver. A) F3 25469801 3 (64Mb) 9 (128Mb) present NAODEC3 317-5068-COM NJA1 uses Namco JYU JVS I/O
|
||||
Ninja Assault (Ver. A) F3 25469801 3 (64Mb) 9 (128Mb) present NAODEC3 317-5068-COM NJA2
|
||||
@ -9052,8 +9052,8 @@ GAME( 2003, puyofevp, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "
|
||||
|
||||
/* 840-xxxxx (Sega Naomi 2 cart games) */
|
||||
/* 0046 */ GAME( 2001, wldrider, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Wild Riders (JPN, USA, EXP, KOR, AUS)", GAME_FLAGS )
|
||||
/* 0061 */ GAME( 2001, vstrik3c, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Striker 3 (USA, EXP, KOR, AUS) (Cart)", GAME_FLAGS )
|
||||
/* 0061 */ GAME( 2001, vstrik3cb,vstrik3c,naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Striker 3 (USA, EXP, KOR, AUS) (Cart, Rev B)", GAME_FLAGS )
|
||||
/* 0061 */ GAME( 2001, vstrik3c, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Striker 3 (USA, EXP, KOR, AUS)", GAME_FLAGS )
|
||||
/* 0061 */ GAME( 2001, vstrik3cb,vstrik3c,naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Striker 3 (USA, EXP, KOR, AUS) (Rev B)", GAME_FLAGS )
|
||||
/* 0062 */ GAME( 2001, clubkrte, naomi2, naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart: European Session", GAME_FLAGS )
|
||||
/* 0062 */ GAME( 2001, clubkrtd, clubkrte,naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart: European Session (Rev D)", GAME_FLAGS )
|
||||
/* 0062 */ GAME( 2001, clubkrtc, clubkrte,naomi2m2, naomi, naomi_state, naomi2, ROT0, "Sega", "Club Kart: European Session (Rev C)", GAME_FLAGS )
|
||||
@ -9073,9 +9073,9 @@ GAME( 2003, puyofevp, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "
|
||||
/* 0003 */ GAME( 1999, doa2, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Tecmo", "Dead or Alive 2 (JPN, USA, EXP, KOR, AUS)", GAME_FLAGS )
|
||||
/* 0003 */ GAME( 2000, doa2m, doa2, naomim2, naomi, naomi_state, naomi, ROT0, "Tecmo", "Dead or Alive 2 Millennium (JPN, USA, EXP, KOR, AUS)", GAME_FLAGS )
|
||||
/* 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 )
|
||||
/* 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 )
|
||||
/* 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 )
|
||||
/* 0006 */ GAME( 1999, puyoda, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Compile", "Puyo Puyo Da!", GAME_FLAGS )
|
||||
/* 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 )
|
||||
/* 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 )
|
||||
/* 0008 */ GAME( 2000, pstone2, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Capcom", "Power Stone 2 (JPN, USA, EUR, ASI, AUS)", GAME_FLAGS )
|
||||
/* 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 )
|
||||
/* 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 )
|
||||
@ -9083,9 +9083,9 @@ GAME( 2003, puyofevp, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "
|
||||
/* 0012 */ GAME( 2000, cspike, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Psikyo / Capcom", "Gun Spike (JPN) / Cannon Spike (USA, EXP, KOR, AUS)", GAME_FLAGS )
|
||||
/* 0013 */ GAME( 2000, ggx, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Arc System Works","Guilty Gear X (JPN)", GAME_FLAGS )
|
||||
/* 0014 */ GAME( 2000, gwing2, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Takumi / Capcom", "Giga Wing 2 (JPN, USA, EXP, KOR, AUS)", GAME_FLAGS )
|
||||
/* 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 )
|
||||
/* 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 )
|
||||
/* 0016 */ GAME( 2000, deathcox, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Ecole Software", "Death Crimson OX (JPN, USA, EXP, KOR, AUS)", GAME_FLAGS )
|
||||
/* 0017 */ GAME( 2001, gundmct, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Banpresto", "Mobile Suit Gundam: Federation Vs. Zeon (2001-02-08)", GAME_FLAGS )
|
||||
/* 0017 */ GAME( 2001, gundmct, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Banpresto / Capcom","Mobile Suit Gundam: Federation Vs. Zeon", GAME_FLAGS )
|
||||
/* 0020 */ GAME( 2001, zerogu2, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Psikyo", "Zero Gunner 2", GAME_FLAGS )
|
||||
/* 0057 */ GAME( 2007, sl2007, naomi, naomim4, naomi, naomi_state, naomi, ROT270,"Triangle Service","Shooting Love 2007", GAME_FLAGS )
|
||||
/* 0058 */ GAME( 2008, ausfache, naomi, naomim4, naomi, naomi_state, naomi, ROT0, "Subtle Style", "Akatsuki Blitzkampf Ausf Achse", GAME_FLAGS )
|
||||
@ -9097,19 +9097,19 @@ GAME( 2003, puyofevp, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "
|
||||
/* HMG016007 */ GAME( 2001,hmgeo,naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Capcom", "Heavy Metal Geomatrix (JPN, USA, EUR, ASI, AUS) (Rev B)", GAME_FLAGS )
|
||||
|
||||
/* Cart games on Namco custom ROM board */
|
||||
/* 25209801 */ GAME( 2000, wldkicks, naomi, naomim2,naomi, naomi_state, naomi, ROT0, "Capcom / Namco", "World Kicks (WK2 Ver. A)", GAME_FLAGS )
|
||||
/* 25209801 */ GAME( 2000, wldkicksa,wldkicks,naomim2,naomi, naomi_state, naomi, ROT0, "Capcom / Namco", "World Kicks (WK3 Ver. A)", GAME_FLAGS )
|
||||
/* 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 )
|
||||
/* 25469801 */ GAME( 2000, ninjaslt1,ninjaslt,naomim2,naomi, naomi_state, naomi, ROT0, "Capcom / Namco", "Ninja Assault (NJA1 Ver. A)", GAME_FLAGS )
|
||||
/* 25469801 */ GAME( 2000, ninjaslt2,ninjaslt,naomim2,naomi, naomi_state, naomi, ROT0, "Capcom / Namco", "Ninja Assault (NJA2 Ver. A)", GAME_FLAGS )
|
||||
/* 25469801 */ GAME( 2000, ninjaslt, naomi, naomim2,naomi, naomi_state, naomi, ROT0, "Capcom / Namco", "Ninja Assault (NJA3 Ver. A)", GAME_FLAGS )
|
||||
/* 25469801 */ GAME( 2000, ninjaslt4,ninjaslt,naomim2,naomi, naomi_state, naomi, ROT0, "Capcom / Namco", "Ninja Assault (NJA4 Ver. A)", GAME_FLAGS )
|
||||
/* 25209801 */ GAME( 2000, wldkicks, naomi, naomim2,naomi, naomi_state, naomi, ROT0, "Namco", "World Kicks (WK2 Ver. A)", GAME_FLAGS )
|
||||
/* 25209801 */ GAME( 2000, wldkicksa,wldkicks,naomim2,naomi, naomi_state, naomi, ROT0, "Namco", "World Kicks (WK3 Ver. A)", GAME_FLAGS )
|
||||
/* 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 )
|
||||
/* 25469801 */ GAME( 2000, ninjaslt1,ninjaslt,naomim2,naomi, naomi_state, naomi, ROT0, "Namco", "Ninja Assault (NJA1 Ver. A)", GAME_FLAGS )
|
||||
/* 25469801 */ GAME( 2000, ninjaslt2,ninjaslt,naomim2,naomi, naomi_state, naomi, ROT0, "Namco", "Ninja Assault (NJA2 Ver. A)", GAME_FLAGS )
|
||||
/* 25469801 */ GAME( 2000, ninjaslt, naomi, naomim2,naomi, naomi_state, naomi, ROT0, "Namco", "Ninja Assault (NJA3 Ver. A)", GAME_FLAGS )
|
||||
/* 25469801 */ GAME( 2000, ninjaslt4,ninjaslt,naomim2,naomi, naomi_state, naomi, ROT0, "Namco", "Ninja Assault (NJA4 Ver. A)", GAME_FLAGS )
|
||||
/* Note: the game's full name is exactly "World Kicks PCB", have different s/n as well */
|
||||
/* 25509801 */ GAME( 2000, wldkicksb,wldkicks,naomim2,naomi, naomi_state, naomi, ROT0, "Capcom / Namco", "World Kicks PCB (WKC1 Ver. A)", GAME_FLAGS )
|
||||
/* 25509801 */ GAME( 2000, wldkicksb,wldkicks,naomim2,naomi, naomi_state, naomi, ROT0, "Namco", "World Kicks PCB (WKC1 Ver. A)", GAME_FLAGS )
|
||||
/* 25709801 */ GAME( 2001, gunsur2, naomi, naomim2,naomi, naomi_state, naomi, ROT0, "Capcom / Namco", "Gun Survivor 2 Biohazard Code: Veronica (BHF1 Ver. E)", GAME_FLAGS )
|
||||
/* 25709801 */ GAME( 2001, gunsur2e, gunsur2, naomim2,naomi, naomi_state, naomi, ROT0, "Capcom / Namco", "Gun Survivor 2 Biohazard Code: Veronica (BHF2 Ver. E)", GAME_FLAGS )
|
||||
/* 25869812 */ GAME( 2002, mazan, naomi, naomim2,naomi, naomi_state, naomi, ROT0, "Capcom / Namco", "Mazan: Flash of the Blade (MAZ2 Ver. A)", GAME_FLAGS )
|
||||
/* 25869812 */ GAME( 2002, mazana, mazan, naomim2,naomi, naomi_state, naomi, ROT0, "Capcom / Namco", "Mazan: Flash of the Blade (MAZ3 Ver. A)", GAME_FLAGS )
|
||||
/* 25869812 */ GAME( 2002, mazan, naomi, naomim2,naomi, naomi_state, naomi, ROT0, "Namco", "Mazan: Flash of the Blade (MAZ2 Ver. A)", GAME_FLAGS )
|
||||
/* 25869812 */ GAME( 2002, mazana, mazan, naomim2,naomi, naomi_state, naomi, ROT0, "Namco", "Mazan: Flash of the Blade (MAZ3 Ver. A)", GAME_FLAGS )
|
||||
|
||||
/* GDS-xxxx (Sega GD-ROM games) */
|
||||
/* 0001 */ GAME( 2000, confmiss, naomigd, naomigd, hotd2, naomi_state, naomigd, ROT0, "Sega", "Confidential Mission (GDS-0001)", GAME_FLAGS )
|
||||
@ -9180,8 +9180,8 @@ GAME( 2003, puyofevp, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "
|
||||
/* 0036F */ GAME( 2004, vf4tuned, naomi2, naomi2gd, naomi, naomi_state, naomi2, ROT0, "Sega", "Virtua Fighter 4 Final Tuned (Rev F) (GDS-0036F)", GAME_FLAGS )
|
||||
// 0037? Puyo Puyo Fever (Export)
|
||||
// 0038
|
||||
// 0039 Initial D: Arcade Stage Ver. 3 Cycraft Edition
|
||||
// 0039A Initial D: Arcade Stage Ver. 3 Cycraft Edition (Rev A)
|
||||
// 0039 Initial D Arcade Stage Ver. 3 Cycraft Edition
|
||||
// 0039A Initial D Arcade Stage Ver. 3 Cycraft Edition (Rev A)
|
||||
/* 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 )
|
||||
// 0040
|
||||
// 0041 Dragon Treasure 3
|
||||
|
@ -5313,10 +5313,10 @@ ggram2 // 1999.04 Giant Gram: All Japan Pro Wrestling 2
|
||||
// 1999.05 Taisen Puzzle Kurutto Stone
|
||||
ringout // 1999.06 Ring Out 4x4
|
||||
f355dlx // 1999.07 F355 Challenge Deluxe (BIOS)
|
||||
f355bios // 1999.08 F355 Challenge Twin (BIOS)
|
||||
f355 // 1999.07 F355 Challenge Deluxe
|
||||
f355twin // 1999.07 F355 Challenge Twin
|
||||
shangril // 1999.08 Dengen Tenshi Taisen Janshi Shangri-la
|
||||
f355bios // 1999.08 F355 Challenge Twin (BIOS)
|
||||
tduno // 1999.08 Touch de UNO! / Unou Nouryoku Check Machine
|
||||
vs2_2k // 1999.08 Virtua Striker 2 version 2000 (Rev C)
|
||||
suchie3 // 1999.09 Idol Janshi Su-Chi-Pi 3
|
||||
@ -5332,13 +5332,13 @@ marstv // 1999.12 Mars TV
|
||||
puyoda // 1999.12 Puyo Puyo Da!
|
||||
samba // 1999.12 Samba de Amigo (Rev B)
|
||||
vtennis // 1999.12 Virtua Tennis / Power Smash (cartridge)
|
||||
sambap // 1999.?? Samba de Amigo (prototype)
|
||||
vtennisg // 1999.?? Virtua Tennis / Power Smash (GD-ROM)
|
||||
alpiltdx // 1999.?? Airline Pilots Deluxe (Rev B)
|
||||
// 1999.?? Charge'N'Blast
|
||||
// 1999.?? Mayjinsen (Formation Battle in May) (prototype)
|
||||
// 1999.?? Pocket Shooting
|
||||
sambap // 1999.?? Samba de Amigo (prototype)
|
||||
spawn // 1999.?? Spawn In the Demon's Hand
|
||||
vtennisg // 1999.?? Virtua Tennis / Power Smash (GD-ROM)
|
||||
18wheelr // 2000.01 18 Wheeler Deluxe (Rev A)
|
||||
18wheels // 2000.01 18 Wheeler (Standard)
|
||||
18wheelu // 2000.01 18 Wheeler (Upright)
|
||||
@ -5357,9 +5357,6 @@ pstone2 // 2000.04 Power Stone 2
|
||||
toukon4 // 2000.04 Shin Nihon Prowrestling Toukon Retsuden 4 Arcade Edition (TRF1 Ver. A)
|
||||
qmegamis // 2000.05 Quiz Ah Megamisama
|
||||
derbyo2k // 2000.06 Derby Owners Club 2000 Ver.2 (Rev A)
|
||||
starhrse // 2000.?? Star Horse (big screens)
|
||||
starhrct // 2000.12 Star Horse (server)
|
||||
starhrcl // 2000.11.28 Star Horse (satellite)
|
||||
vonot // 2000.06 Virtual-on Oratorio Tangram M.S.B.S. Ver.5.66 2000 Edition
|
||||
ggx // 2000.07 Guilty Gear X
|
||||
slasho // 2000.07 Slashout
|
||||
@ -5381,7 +5378,10 @@ ninjaslt // 2000.11 Ninja Assault (NJA3 Ver. A)
|
||||
ninjaslt4 // 2000.11 Ninja Assault (NJA4 Ver. A)
|
||||
wwfroyal // 2000.11 WWF Royal Rumble
|
||||
sprtjam // 2000.11.13 Sports Jam
|
||||
pjustic // 2000.12 Moero Justice Gakuen / Project Justice
|
||||
starhrcl // 2000.11.28 Star Horse (satellite)
|
||||
starhrct // 2000.12 Star Horse (server)
|
||||
starhrse // 2000.?? Star Horse (big screens)
|
||||
pjustic // 2000.12 Moero! Justice Gakuen / Project Justice
|
||||
samba2k // 2000.12 Samba de Amigo Ver.2000
|
||||
shaktam // 2000.12.28 Shakatto Tambourine (Rev B)
|
||||
// 2000.?? Boat Race Ocean Heats
|
||||
@ -5413,7 +5413,7 @@ alienfnta // 2001.09 Alien Front (Rev A)
|
||||
gundmxgd // 2001.09 Mobile Suit Gundam: Federation Vs. Zeon DX
|
||||
derbyoc2 // 2001.10 Derby Owners Club II (Rev B)
|
||||
inunoos // 2001.10 Inu No Osanpo / Dog Walking (Rev A)
|
||||
vtenis2c // 2001.10 Virtua Tennis 2 / Power Smash 2 (cartridge)
|
||||
vtenis2c // 2001.10 Virtua Tennis 2 / Power Smash 2 (Rev A) (cart)
|
||||
shaktamb // 2001.10.17 Shakatto Tambourine Cho Powerup Chu (2K1 AUT)
|
||||
keyboard // 2001.11 La Keyboard
|
||||
ikaruga // 2001.12 Ikaruga
|
||||
@ -5421,7 +5421,6 @@ lupinsho // 2001.12 Lupin the Third: the Shooting
|
||||
drbyocwc // 2001.?? Derby Owners Club World Edition (Rev. C)
|
||||
derbyocw // 2001.?? Derby Owners Club World Edition (Rev. D)
|
||||
// 2001.?? Star Horse 2001
|
||||
hopper // 2002.?? SWP Hopper Board
|
||||
vathlete // 2002.03 Virtua Athletics / Virtua Athlete
|
||||
mok // 2002.03.06 The Maze of the Kings
|
||||
luptype // 2002.04 Lupin The Third - The Typing (Rev A)
|
||||
@ -5436,27 +5435,28 @@ moeru // 2002.12 Moeru Casinyo
|
||||
// 2002.?? Pochinya
|
||||
quizqgd // 2002.?? Quiz Keitai Q mode
|
||||
shootopl // 2002.?? Shootout Pool
|
||||
shootpl // 2003.?? Shootout Pool The Medal / Shootout Pool Prize (Rev A)
|
||||
hopper // 2002.?? SWP Hopper Board
|
||||
mtkob2 // 2003.02 MushiKing The King Of Beetle
|
||||
// 2003.03 Sega Network Taisen Mahjong MJ
|
||||
ggxxrlo // 2003.02 Guilty Gear XX # Reload
|
||||
ggxxrl // 2003.03 Guilty Gear XX # Reload (Rev A)
|
||||
shikgam2 // 2003.04 Shikigami No Shiro II / The Castle of Shikigami II
|
||||
// 2003.03 Sega Network Taisen Mahjong MJ
|
||||
bdrdown // 2003.04 Border Down (Rev A)
|
||||
shikgam2 // 2003.04 Shikigami No Shiro II / The Castle of Shikigami II
|
||||
usagiym // 2003.06 Usagi Yamashiro Mahjong Hen
|
||||
// 2003.07 Sega Network Taisen Mahjong MJ (Rev A)
|
||||
oinori // 2003.08 Oinori-daimyoujin Matsuri
|
||||
psyvar2 // 2003.11 Psyvariar 2 - The Will To Fabricate
|
||||
puyofev // 2003.11 Puyo Puyo Fever
|
||||
starhrsp // 2003.12.01 Star Horse Progress (satellite) (Rev A)
|
||||
puyofevp // 2003.?? Puyo Puyo Fever (prototype)
|
||||
// 2003.?? Dragon Treasure
|
||||
puyofevp // 2003.?? Puyo Puyo Fever (prototype)
|
||||
shootpl // 2003.?? Shootout Pool The Medal / Shootout Pool Prize (Rev A)
|
||||
cfield // 2004.06 Chaos Field
|
||||
tetkiwam // 2004.06 Tetris Kiwamemichi (Arcade TV Game List - P.88, Right, 11 from bottom)
|
||||
trizeal // 2004.09 Trizeal
|
||||
// 2004.?? Dragon Treasure 2
|
||||
shootplm // 2004.?? Shootout Pool The Medal Ver. B / Shootout Pool Prize Ver. B
|
||||
kick4csh // 2004.?? Kick '4' Cash
|
||||
shootplm // 2004.?? Shootout Pool The Medal Ver. B / Shootout Pool Prize Ver. B
|
||||
// 2004.?? The Quiz Show
|
||||
meltyblo // 2005.03 Melty Blood Act Cadenza
|
||||
ss2005 // 2005.03 Super Shanghai 2005
|
||||
@ -5522,12 +5522,12 @@ vstrik3cb // 2001.04 Virtua Striker 3 (Rev B) (cartridge)
|
||||
vstrik3 // 2001.04.06 Virtua Striker 3 Ver. 2002
|
||||
wldrider // 2001.05 Wild Riders
|
||||
clubkrte // 2001.06 Club Kart: European Session
|
||||
clubkrtc // 2001.?? Club Kart: European Session (Rev C)
|
||||
clubkrtd // 2001.06 Club Kart: European Session (Rev D)
|
||||
beachspi // 2001.07 Beach Spikers
|
||||
vf4cart // 2001.08.02 Virtua Fighter 4 (cartridge)
|
||||
vf4 // 2001.08.02 Virtua Fighter 4 (GD-ROM)
|
||||
vf4b // 2001.08.20 Virtua Fighter 4 (Rev B) (cartridge)
|
||||
clubkrtc // 2001.?? Club Kart: European Session (Rev C)
|
||||
vf4c // 2002.01.31 Virtua Fighter 4 (Rev C) (cartridge)
|
||||
kingrt66 // 2002.02 The King of Route 66 (Rev A)
|
||||
// 2002.02.14 Initial D Arcade Stage (Japan)
|
||||
@ -5542,8 +5542,6 @@ vf4evoa // 2002.08 Virtua Fighter 4 Evolution
|
||||
initdv2jo // 2002.12 Initial D Arcade Stage Ver. 2 (Japan)
|
||||
initdv2e // 2002.12 Initial D Arcade Stage Ver. 2 (export)
|
||||
vf4evo // 2002.12 Virtua Fighter 4 Evolution Ver.B
|
||||
clubk2k3 // 2003.?? Club Kart: European Session (2003, Rev A)
|
||||
clubk2kp // 2003.?? Club Kart: European Session (2003, prototype)
|
||||
initdexpo // 2002.?? Initial D Arcade Stage (Export)
|
||||
// 2002.?? Sega Driving Simulator
|
||||
// 2003.03 World Club Champion Football Serie A 2001-2002 Ver.2
|
||||
@ -5551,10 +5549,12 @@ initdexpo // 2002.?? Initial D Arcade Stage (Export)
|
||||
initdv2j // 2003.05.27 Initial D Arcade Stage Ver. 2 (Japan) (Rev B)
|
||||
// 2003.09 World Club Champion Football Serie A 2002-2003
|
||||
// 2003.?? Club Kart Cycraft Edition
|
||||
clubk2k3 // 2003.?? Club Kart: European Session (2003, Rev A)
|
||||
clubk2kp // 2003.?? Club Kart: European Session (2003, prototype)
|
||||
clubkprz // 2003.?? Club Kart Prize
|
||||
clubkpzb // 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)
|
||||
initdv3j // 2004.01.30 Initial D Arcade Stage Ver. 3 (Japan) (Rev C)
|
||||
initdv3jb // 2004.01 Initial D Arcade Stage Ver. 3 (Japan) (Rev B)
|
||||
clubkpzb // 2004.01 Club Kart Prize Ver. B (strings in the EPROM indicate a build date of Jan. 23, 2004 for the game's program)
|
||||
initdv3e // 2004.05.18 Initial D Arcade Stage Ver. 3 (Export)
|
||||
// 2004.06 World Club Champion Football Serie A 2002-2003 Ver.2
|
||||
// 2004.07 Virtua Fighter 4 Final Tuned
|
||||
@ -5626,8 +5626,8 @@ vs2002ex // 2002.07.30 Virtua Striker 2002 (Export)
|
||||
vs2002j // 2002.10 Virtua Striker 2002 (Japan)
|
||||
fzeroaxc // 2003.06.11 F-Zero AX (Rev. C)
|
||||
avalons // 2003.07 The Key Of Avalon: The Wizard Master (server) (Rev C)
|
||||
// 2003.10 The Key Of Avalon 1.01
|
||||
gekpurya // 2003.10 Gekitou Pro Yakyuu Mizushima Shinji All Stars vs. Pro Yakyuu (Rev C)
|
||||
// 2003.10 The Key Of Avalon 1.01
|
||||
fzeroax // 2003.12 F-Zero AX (Rev. E)
|
||||
// 2003.12 The Key Of Avalon 1.10
|
||||
// 2004.04 The Key Of Avalon 1.20 - Summon The New Monsters
|
||||
@ -5638,21 +5638,21 @@ vs4 // 2004.12.02 Virtua Striker 4 (export)
|
||||
// 2004.?? F-Zero AX - Monster Ride Cycraft Edition
|
||||
tfupdate // 2004.?? Triforce GDROM Boot Update
|
||||
// 2005.08 Avalon no Kagi Ver.2.5 Kagi Seisen
|
||||
mkartagp // 2005.12 Mario Kart Arcade Grand Prix
|
||||
mkartagp // 2005.12 Mario Kart Arcade GP (MKA2 Ver.B)
|
||||
// 2005.?? Donkey Kong Jungle Fever
|
||||
// 2006.01.31 Virtua Striker 4 Ver.2006 (export)
|
||||
vs42006 // 2006.05 Virtua Striker 4 Ver.2006 (Japan) (Rev D)
|
||||
// 2006.?? Firmware Update For Compact Flash Box (Rev A)
|
||||
mkartag2 // 2007.03 Mario Kart Arcade Grand Prix 2
|
||||
mkartag2a // 2007.03 Mario Kart Arcade Grand Prix 2
|
||||
mkartag2 // 2007.03 Mario Kart Arcade GP 2 (MK21 Ver.A)
|
||||
mkartag2a // 2007.03 Mario Kart Arcade GP 2 (MK21 Ver.A, alt dump)
|
||||
|
||||
// Chihiro (X-Box based)
|
||||
chihiro // 2002.?? Chihiro BIOS
|
||||
hotd3 // 2002.10.29 The House of the Dead III
|
||||
// 2003.02 Crazy Taxi High Roller
|
||||
// 2003.02 Crazy Taxi High Roller (Rev A)
|
||||
crtaxihr // 2003.02.24 Crazy Taxi High Roller (Rev B)
|
||||
// 2003.02 Virtua Cop 3
|
||||
crtaxihr // 2003.02.24 Crazy Taxi High Roller (Rev B)
|
||||
vcop3 // 2003.02.26 Virtua Cop 3 (Rev A)
|
||||
// 2003.12 Outrun 2 Prototype (Rev P)
|
||||
// 2003.12 Outrun 2
|
||||
@ -5670,7 +5670,6 @@ wangmid // 2004.07 Wangan Midnight Maximum Tune (export) (Rev B)
|
||||
// 2004.09 Quest of D
|
||||
// 2004.11 Sega Golf Club Network Pro Tour
|
||||
// 2004.12 Ghost Squad
|
||||
ghostsqu // 2004.12.09 Ghost Squad (Rev A)
|
||||
// 2004.12 Quest of D Ver.1.01C
|
||||
// 2004.12 Quest of D Ver.1.02
|
||||
// 2004.12 Quest of D Ver.1.10
|
||||
@ -5680,6 +5679,7 @@ ghostsqu // 2004.12.09 Ghost Squad (Rev A)
|
||||
outr2st // 2004.12 Outrun 2 Special Tours (Rev A)
|
||||
mj2c // 2004.12 Sega Network Taisen Mahjong MJ 2 (Rev C)
|
||||
// 2004.12 Sega Network Taisen Mahjong MJ 2 (Rev D)
|
||||
ghostsqu // 2004.12.09 Ghost Squad (Rev A)
|
||||
// 2005.02 Sega Network Taisen Mahjong MJ 2 (Rev E)
|
||||
// 2005.02 Sega Network Taisen Mahjong MJ 2 (Rev F)
|
||||
mj2 // 2005.02.02 Sega Network Taisen Mahjong MJ 2 (Rev G)
|
||||
|
@ -38,16 +38,16 @@ public:
|
||||
|
||||
UINT16 m_o;
|
||||
|
||||
UINT16 m_leds_state[0x10];
|
||||
UINT16 m_leds_cache[0x10];
|
||||
UINT8 m_leds_decay[0x100];
|
||||
UINT16 m_display_state[0x10];
|
||||
UINT16 m_display_cache[0x10];
|
||||
UINT8 m_display_decay[0x100];
|
||||
|
||||
DECLARE_READ8_MEMBER(read_k);
|
||||
DECLARE_WRITE16_MEMBER(write_o);
|
||||
DECLARE_WRITE16_MEMBER(write_r);
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(leds_decay_tick);
|
||||
void leds_update();
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
|
||||
void display_update();
|
||||
|
||||
virtual void machine_start();
|
||||
};
|
||||
@ -56,17 +56,17 @@ public:
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
LEDs
|
||||
LED Display
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
// The device strobes the outputs very fast, it is unnoticeable to the user.
|
||||
// To prevent flickering here, we need to simulate a decay.
|
||||
|
||||
// decay time, in steps of 10ms
|
||||
#define LEDS_DECAY_TIME 4
|
||||
// decay time, in steps of 1ms
|
||||
#define DISPLAY_DECAY_TIME 40
|
||||
|
||||
void cnsector_state::leds_update()
|
||||
void cnsector_state::display_update()
|
||||
{
|
||||
UINT16 active_state[0x10];
|
||||
|
||||
@ -78,32 +78,32 @@ void cnsector_state::leds_update()
|
||||
{
|
||||
int di = j << 4 | i;
|
||||
|
||||
// turn on powered leds
|
||||
if (m_leds_state[i] >> j & 1)
|
||||
m_leds_decay[di] = LEDS_DECAY_TIME;
|
||||
// turn on powered segments
|
||||
if (m_display_state[i] >> j & 1)
|
||||
m_display_decay[di] = DISPLAY_DECAY_TIME;
|
||||
|
||||
// determine active state
|
||||
int ds = (m_leds_decay[di] != 0) ? 1 : 0;
|
||||
int ds = (m_display_decay[di] != 0) ? 1 : 0;
|
||||
active_state[i] |= (ds << j);
|
||||
}
|
||||
}
|
||||
|
||||
// on difference, send to output
|
||||
for (int i = 0; i < 0x10; i++)
|
||||
if (m_leds_cache[i] != active_state[i])
|
||||
if (m_display_cache[i] != active_state[i])
|
||||
output_set_digit_value(i, active_state[i]);
|
||||
|
||||
memcpy(m_leds_cache, active_state, sizeof(m_leds_cache));
|
||||
memcpy(m_display_cache, active_state, sizeof(m_display_cache));
|
||||
}
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(cnsector_state::leds_decay_tick)
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(cnsector_state::display_decay_tick)
|
||||
{
|
||||
// slowly turn off unpowered leds
|
||||
// slowly turn off unpowered segments
|
||||
for (int i = 0; i < 0x100; i++)
|
||||
if (!(m_leds_state[i & 0xf] >> (i>>4) & 1) && m_leds_decay[i])
|
||||
m_leds_decay[i]--;
|
||||
if (!(m_display_state[i & 0xf] >> (i>>4) & 1) && m_display_decay[i])
|
||||
m_display_decay[i]--;
|
||||
|
||||
leds_update();
|
||||
display_update();
|
||||
}
|
||||
|
||||
|
||||
@ -130,8 +130,8 @@ WRITE16_MEMBER(cnsector_state::write_r)
|
||||
{
|
||||
// R0-R5: select digit (right-to-left)
|
||||
for (int i = 0; i < 6; i++)
|
||||
m_leds_state[i] = (data >> i & 1) ? m_o : 0;
|
||||
leds_update();
|
||||
m_display_state[i] = (data >> i & 1) ? m_o : 0;
|
||||
display_update();
|
||||
|
||||
// R6-R9: direction leds
|
||||
for (int i = 6; i < 10; i++)
|
||||
@ -196,16 +196,16 @@ INPUT_PORTS_END
|
||||
void cnsector_state::machine_start()
|
||||
{
|
||||
// zerofill
|
||||
memset(m_leds_state, 0, sizeof(m_leds_state));
|
||||
memset(m_leds_cache, 0, sizeof(m_leds_cache));
|
||||
memset(m_leds_decay, 0, sizeof(m_leds_decay));
|
||||
memset(m_display_state, 0, sizeof(m_display_state));
|
||||
memset(m_display_cache, 0, sizeof(m_display_cache));
|
||||
memset(m_display_decay, 0, sizeof(m_display_decay));
|
||||
|
||||
m_o = 0;
|
||||
|
||||
// register for savestates
|
||||
save_item(NAME(m_leds_state));
|
||||
save_item(NAME(m_leds_cache));
|
||||
save_item(NAME(m_leds_decay));
|
||||
save_item(NAME(m_display_state));
|
||||
save_item(NAME(m_display_cache));
|
||||
save_item(NAME(m_display_decay));
|
||||
|
||||
save_item(NAME(m_o));
|
||||
}
|
||||
@ -219,7 +219,7 @@ static MACHINE_CONFIG_START( cnsector, cnsector_state )
|
||||
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(cnsector_state, write_o))
|
||||
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(cnsector_state, write_r))
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("leds_decay", cnsector_state, leds_decay_tick, attotime::from_msec(10))
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", cnsector_state, display_decay_tick, attotime::from_msec(1))
|
||||
|
||||
MCFG_DEFAULT_LAYOUT(layout_cnsector)
|
||||
|
||||
|
@ -41,15 +41,15 @@ public:
|
||||
|
||||
UINT16 m_o;
|
||||
|
||||
UINT16 m_leds_state;
|
||||
UINT8 m_leds_decay[0x10];
|
||||
UINT16 m_display_state;
|
||||
UINT8 m_display_decay[0x10];
|
||||
|
||||
DECLARE_READ8_MEMBER(read_k);
|
||||
DECLARE_WRITE16_MEMBER(write_o);
|
||||
DECLARE_WRITE16_MEMBER(write_r);
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(leds_decay_tick);
|
||||
void leds_update();
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
|
||||
void display_update();
|
||||
|
||||
virtual void machine_start();
|
||||
};
|
||||
@ -57,37 +57,37 @@ public:
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
LEDs
|
||||
LED Display
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
// The device strobes the outputs very fast, it is unnoticeable to the user.
|
||||
// To prevent flickering here, we need to simulate a decay.
|
||||
|
||||
// decay time, in steps of 10ms
|
||||
#define LEDS_DECAY_TIME 2
|
||||
// decay time, in steps of 1ms
|
||||
#define DISPLAY_DECAY_TIME 25
|
||||
|
||||
void comp4_state::leds_update()
|
||||
void comp4_state::display_update()
|
||||
{
|
||||
for (int i = 0; i < 0x10; i++)
|
||||
{
|
||||
// turn on powered leds
|
||||
if (m_leds_state >> i & 1)
|
||||
m_leds_decay[i] = LEDS_DECAY_TIME;
|
||||
// turn on powered segments
|
||||
if (m_display_state >> i & 1)
|
||||
m_display_decay[i] = DISPLAY_DECAY_TIME;
|
||||
|
||||
// send to output
|
||||
output_set_lamp_value(i, (m_leds_decay[i] != 0) ? 1 : 0);
|
||||
output_set_lamp_value(i, (m_display_decay[i] != 0) ? 1 : 0);
|
||||
}
|
||||
}
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(comp4_state::leds_decay_tick)
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(comp4_state::display_decay_tick)
|
||||
{
|
||||
// slowly turn off unpowered leds
|
||||
// slowly turn off unpowered segments
|
||||
for (int i = 0; i < 0x10; i++)
|
||||
if (!(m_leds_state >> i & 1) && m_leds_decay[i])
|
||||
m_leds_decay[i]--;
|
||||
if (!(m_display_state >> i & 1) && m_display_decay[i])
|
||||
m_display_decay[i]--;
|
||||
|
||||
leds_update();
|
||||
display_update();
|
||||
}
|
||||
|
||||
|
||||
@ -118,8 +118,8 @@ WRITE16_MEMBER(comp4_state::write_r)
|
||||
// R2 R7
|
||||
// R1 R6
|
||||
// R0 R5
|
||||
m_leds_state = data;
|
||||
leds_update();
|
||||
m_display_state = data;
|
||||
display_update();
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(comp4_state::write_o)
|
||||
@ -169,14 +169,14 @@ INPUT_PORTS_END
|
||||
void comp4_state::machine_start()
|
||||
{
|
||||
// zerofill
|
||||
m_leds_state = 0;
|
||||
memset(m_leds_decay, 0, sizeof(m_leds_decay));
|
||||
m_display_state = 0;
|
||||
memset(m_display_decay, 0, sizeof(m_display_decay));
|
||||
|
||||
m_o = 0;
|
||||
|
||||
// register for savestates
|
||||
save_item(NAME(m_leds_state));
|
||||
save_item(NAME(m_leds_decay));
|
||||
save_item(NAME(m_display_state));
|
||||
save_item(NAME(m_display_decay));
|
||||
|
||||
save_item(NAME(m_o));
|
||||
}
|
||||
@ -190,7 +190,7 @@ static MACHINE_CONFIG_START( comp4, comp4_state )
|
||||
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(comp4_state, write_o))
|
||||
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(comp4_state, write_r))
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("leds_decay", comp4_state, leds_decay_tick, attotime::from_msec(10))
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", comp4_state, display_decay_tick, attotime::from_msec(1))
|
||||
|
||||
MCFG_DEFAULT_LAYOUT(layout_comp4)
|
||||
|
||||
|
@ -44,9 +44,9 @@ public:
|
||||
UINT16 m_o;
|
||||
bool m_power_on;
|
||||
|
||||
UINT16 m_leds_state[0x10];
|
||||
UINT16 m_leds_cache[0x10];
|
||||
UINT8 m_leds_decay[0x100];
|
||||
UINT16 m_display_state[0x10];
|
||||
UINT16 m_display_cache[0x10];
|
||||
UINT8 m_display_decay[0x100];
|
||||
|
||||
DECLARE_READ8_MEMBER(read_k);
|
||||
DECLARE_WRITE16_MEMBER(write_o);
|
||||
@ -55,8 +55,8 @@ public:
|
||||
DECLARE_INPUT_CHANGED_MEMBER(power_button);
|
||||
DECLARE_WRITE_LINE_MEMBER(auto_power_off);
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(leds_decay_tick);
|
||||
void leds_update();
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
|
||||
void display_update();
|
||||
|
||||
virtual void machine_reset();
|
||||
virtual void machine_start();
|
||||
@ -66,17 +66,17 @@ public:
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
LEDs
|
||||
LED Display
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
// The device strobes the outputs very fast, it is unnoticeable to the user.
|
||||
// To prevent flickering here, we need to simulate a decay.
|
||||
|
||||
// decay time, in steps of 10ms
|
||||
#define LEDS_DECAY_TIME 4
|
||||
// decay time, in steps of 1ms
|
||||
#define DISPLAY_DECAY_TIME 40
|
||||
|
||||
void elecdet_state::leds_update()
|
||||
void elecdet_state::display_update()
|
||||
{
|
||||
UINT16 active_state[0x10];
|
||||
|
||||
@ -88,32 +88,32 @@ void elecdet_state::leds_update()
|
||||
{
|
||||
int di = j << 4 | i;
|
||||
|
||||
// turn on powered leds
|
||||
if (m_power_on && m_leds_state[i] >> j & 1)
|
||||
m_leds_decay[di] = LEDS_DECAY_TIME;
|
||||
// turn on powered segments
|
||||
if (m_power_on && m_display_state[i] >> j & 1)
|
||||
m_display_decay[di] = DISPLAY_DECAY_TIME;
|
||||
|
||||
// determine active state
|
||||
int ds = (m_leds_decay[di] != 0) ? 1 : 0;
|
||||
int ds = (m_display_decay[di] != 0) ? 1 : 0;
|
||||
active_state[i] |= (ds << j);
|
||||
}
|
||||
}
|
||||
|
||||
// on difference, send to output
|
||||
for (int i = 0; i < 0x10; i++)
|
||||
if (m_leds_cache[i] != active_state[i])
|
||||
if (m_display_cache[i] != active_state[i])
|
||||
output_set_digit_value(i, active_state[i]);
|
||||
|
||||
memcpy(m_leds_cache, active_state, sizeof(m_leds_cache));
|
||||
memcpy(m_display_cache, active_state, sizeof(m_display_cache));
|
||||
}
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(elecdet_state::leds_decay_tick)
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(elecdet_state::display_decay_tick)
|
||||
{
|
||||
// slowly turn off unpowered leds
|
||||
// slowly turn off unpowered segments
|
||||
for (int i = 0; i < 0x100; i++)
|
||||
if (!(m_leds_state[i & 0xf] >> (i>>4) & 1) && m_leds_decay[i])
|
||||
m_leds_decay[i]--;
|
||||
if (!(m_display_state[i & 0xf] >> (i>>4) & 1) && m_display_decay[i])
|
||||
m_display_decay[i]--;
|
||||
|
||||
leds_update();
|
||||
display_update();
|
||||
}
|
||||
|
||||
|
||||
@ -145,9 +145,9 @@ WRITE16_MEMBER(elecdet_state::write_r)
|
||||
// R0-R6: select digit
|
||||
UINT8 o = BITSWAP8(m_o,7,5,2,1,4,0,6,3) & 0x7f;
|
||||
for (int i = 0; i < 7; i++)
|
||||
m_leds_state[i] = (data >> i & 1) ? o : 0;
|
||||
m_display_state[i] = (data >> i & 1) ? o : 0;
|
||||
|
||||
leds_update();
|
||||
display_update();
|
||||
|
||||
// R7,R8: speaker on
|
||||
m_speaker->level_w((data & 0x180 && m_o & 0x80) ? 1 : 0);
|
||||
@ -249,17 +249,17 @@ void elecdet_state::machine_reset()
|
||||
void elecdet_state::machine_start()
|
||||
{
|
||||
// zerofill
|
||||
memset(m_leds_state, 0, sizeof(m_leds_state));
|
||||
memset(m_leds_cache, 0, sizeof(m_leds_cache));
|
||||
memset(m_leds_decay, 0, sizeof(m_leds_decay));
|
||||
memset(m_display_state, 0, sizeof(m_display_state));
|
||||
memset(m_display_cache, 0, sizeof(m_display_cache));
|
||||
memset(m_display_decay, 0, sizeof(m_display_decay));
|
||||
|
||||
m_o = 0;
|
||||
m_power_on = false;
|
||||
|
||||
// register for savestates
|
||||
save_item(NAME(m_leds_state));
|
||||
save_item(NAME(m_leds_cache));
|
||||
save_item(NAME(m_leds_decay));
|
||||
save_item(NAME(m_display_state));
|
||||
save_item(NAME(m_display_cache));
|
||||
save_item(NAME(m_display_decay));
|
||||
|
||||
save_item(NAME(m_o));
|
||||
save_item(NAME(m_power_on));
|
||||
@ -275,7 +275,7 @@ static MACHINE_CONFIG_START( elecdet, elecdet_state )
|
||||
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(elecdet_state, write_r))
|
||||
MCFG_TMS1XXX_POWER_OFF_CB(WRITELINE(elecdet_state, auto_power_off))
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("leds_decay", elecdet_state, leds_decay_tick, attotime::from_msec(10))
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", elecdet_state, display_decay_tick, attotime::from_msec(1))
|
||||
|
||||
MCFG_DEFAULT_LAYOUT(layout_elecdet)
|
||||
|
||||
|
@ -72,17 +72,17 @@ public:
|
||||
UINT16 m_r;
|
||||
UINT16 m_o;
|
||||
|
||||
UINT16 m_leds_state[0x10];
|
||||
UINT16 m_leds_cache[0x10];
|
||||
UINT8 m_leds_decay[0x100];
|
||||
UINT16 m_display_state[0x10];
|
||||
UINT16 m_display_cache[0x10];
|
||||
UINT8 m_display_decay[0x100];
|
||||
|
||||
DECLARE_READ8_MEMBER(read_k);
|
||||
DECLARE_WRITE16_MEMBER(write_o);
|
||||
DECLARE_WRITE16_MEMBER(splitsec_write_r);
|
||||
DECLARE_WRITE16_MEMBER(bankshot_write_r);
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(leds_decay_tick);
|
||||
void leds_update();
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
|
||||
void display_update();
|
||||
|
||||
virtual void machine_start();
|
||||
};
|
||||
@ -91,15 +91,15 @@ public:
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
LEDs
|
||||
LED Display
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
// The device strobes the outputs very fast, it is unnoticeable to the user.
|
||||
// To prevent flickering here, we need to simulate a decay.
|
||||
|
||||
// decay time, in steps of 10ms
|
||||
#define LEDS_DECAY_TIME 4
|
||||
// decay time, in steps of 1ms
|
||||
#define DISPLAY_DECAY_TIME 40
|
||||
|
||||
/* display layout, where number xy is lamp R(x),O(y)
|
||||
|
||||
@ -122,14 +122,14 @@ public:
|
||||
|
||||
*/
|
||||
|
||||
void splitsec_state::leds_update()
|
||||
void splitsec_state::display_update()
|
||||
{
|
||||
UINT16 active_state[0x10];
|
||||
|
||||
for (int i = 0; i < 0x10; i++)
|
||||
{
|
||||
// update current state
|
||||
m_leds_state[i] = (m_r >> i & 1) ? m_o : 0;
|
||||
m_display_state[i] = (m_r >> i & 1) ? m_o : 0;
|
||||
|
||||
active_state[i] = 0;
|
||||
|
||||
@ -137,35 +137,35 @@ void splitsec_state::leds_update()
|
||||
{
|
||||
int di = j << 4 | i;
|
||||
|
||||
// turn on powered leds
|
||||
if (m_leds_state[i] >> j & 1)
|
||||
m_leds_decay[di] = LEDS_DECAY_TIME;
|
||||
// turn on powered segments
|
||||
if (m_display_state[i] >> j & 1)
|
||||
m_display_decay[di] = DISPLAY_DECAY_TIME;
|
||||
|
||||
// determine active state
|
||||
int ds = (m_leds_decay[di] != 0) ? 1 : 0;
|
||||
int ds = (m_display_decay[di] != 0) ? 1 : 0;
|
||||
active_state[i] |= (ds << j);
|
||||
}
|
||||
}
|
||||
|
||||
// on difference, send to output
|
||||
for (int i = 0; i < 0x10; i++)
|
||||
if (m_leds_cache[i] != active_state[i])
|
||||
if (m_display_cache[i] != active_state[i])
|
||||
{
|
||||
for (int j = 0; j < 8; j++)
|
||||
output_set_lamp_value(i*10 + j, active_state[i] >> j & 1);
|
||||
}
|
||||
|
||||
memcpy(m_leds_cache, active_state, sizeof(m_leds_cache));
|
||||
memcpy(m_display_cache, active_state, sizeof(m_display_cache));
|
||||
}
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(splitsec_state::leds_decay_tick)
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(splitsec_state::display_decay_tick)
|
||||
{
|
||||
// slowly turn off unpowered leds
|
||||
// slowly turn off unpowered segments
|
||||
for (int i = 0; i < 0x100; i++)
|
||||
if (!(m_leds_state[i & 0xf] >> (i>>4) & 1) && m_leds_decay[i])
|
||||
m_leds_decay[i]--;
|
||||
if (!(m_display_state[i & 0xf] >> (i>>4) & 1) && m_display_decay[i])
|
||||
m_display_decay[i]--;
|
||||
|
||||
leds_update();
|
||||
display_update();
|
||||
}
|
||||
|
||||
|
||||
@ -193,7 +193,7 @@ WRITE16_MEMBER(splitsec_state::write_o)
|
||||
// O0-O6: led rows
|
||||
// O7: N/C
|
||||
m_o = data;
|
||||
leds_update();
|
||||
display_update();
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(splitsec_state::splitsec_write_r)
|
||||
@ -206,7 +206,7 @@ WRITE16_MEMBER(splitsec_state::splitsec_write_r)
|
||||
|
||||
// R0-R7: led columns
|
||||
m_r = data & 0xff;
|
||||
leds_update();
|
||||
display_update();
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(splitsec_state::bankshot_write_r)
|
||||
@ -219,7 +219,7 @@ WRITE16_MEMBER(splitsec_state::bankshot_write_r)
|
||||
|
||||
// R2-R10: led columns
|
||||
m_r = data & ~3;
|
||||
leds_update();
|
||||
display_update();
|
||||
}
|
||||
|
||||
|
||||
@ -281,18 +281,18 @@ INPUT_PORTS_END
|
||||
void splitsec_state::machine_start()
|
||||
{
|
||||
// zerofill
|
||||
memset(m_leds_state, 0, sizeof(m_leds_state));
|
||||
memset(m_leds_cache, 0, sizeof(m_leds_cache));
|
||||
memset(m_leds_decay, 0, sizeof(m_leds_decay));
|
||||
memset(m_display_state, 0, sizeof(m_display_state));
|
||||
memset(m_display_cache, 0, sizeof(m_display_cache));
|
||||
memset(m_display_decay, 0, sizeof(m_display_decay));
|
||||
|
||||
m_input_mux = 0;
|
||||
m_r = 0;
|
||||
m_o = 0;
|
||||
|
||||
// register for savestates
|
||||
save_item(NAME(m_leds_state));
|
||||
save_item(NAME(m_leds_cache));
|
||||
save_item(NAME(m_leds_decay));
|
||||
save_item(NAME(m_display_state));
|
||||
save_item(NAME(m_display_cache));
|
||||
save_item(NAME(m_display_decay));
|
||||
|
||||
save_item(NAME(m_input_mux));
|
||||
save_item(NAME(m_r));
|
||||
@ -308,7 +308,7 @@ static MACHINE_CONFIG_START( splitsec, splitsec_state )
|
||||
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(splitsec_state, write_o))
|
||||
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(splitsec_state, splitsec_write_r))
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("leds_decay", splitsec_state, leds_decay_tick, attotime::from_msec(10))
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", splitsec_state, display_decay_tick, attotime::from_msec(1))
|
||||
|
||||
MCFG_DEFAULT_LAYOUT(layout_splitsec)
|
||||
|
||||
|
@ -39,16 +39,16 @@ public:
|
||||
UINT16 m_r;
|
||||
UINT16 m_o;
|
||||
|
||||
UINT16 m_leds_state[0x10];
|
||||
UINT16 m_leds_cache[0x10];
|
||||
UINT8 m_leds_decay[0x100];
|
||||
UINT16 m_display_state[0x10];
|
||||
UINT16 m_display_cache[0x10];
|
||||
UINT8 m_display_decay[0x100];
|
||||
|
||||
DECLARE_READ8_MEMBER(read_k);
|
||||
DECLARE_WRITE16_MEMBER(write_o);
|
||||
DECLARE_WRITE16_MEMBER(write_r);
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(leds_decay_tick);
|
||||
void leds_update();
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
|
||||
void display_update();
|
||||
void prepare_and_update();
|
||||
|
||||
virtual void machine_start();
|
||||
@ -58,17 +58,17 @@ public:
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
LEDs
|
||||
LED Display
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
// The device strobes the outputs very fast, it is unnoticeable to the user.
|
||||
// To prevent flickering here, we need to simulate a decay.
|
||||
|
||||
// decay time, in steps of 10ms
|
||||
#define LEDS_DECAY_TIME 4
|
||||
// decay time, in steps of 1ms
|
||||
#define DISPLAY_DECAY_TIME 40
|
||||
|
||||
void starwbc_state::leds_update()
|
||||
void starwbc_state::display_update()
|
||||
{
|
||||
UINT16 active_state[0x10];
|
||||
|
||||
@ -80,19 +80,19 @@ void starwbc_state::leds_update()
|
||||
{
|
||||
int di = j << 4 | i;
|
||||
|
||||
// turn on powered leds
|
||||
if (m_leds_state[i] >> j & 1)
|
||||
m_leds_decay[di] = LEDS_DECAY_TIME;
|
||||
// turn on powered segments
|
||||
if (m_display_state[i] >> j & 1)
|
||||
m_display_decay[di] = DISPLAY_DECAY_TIME;
|
||||
|
||||
// determine active state
|
||||
int ds = (m_leds_decay[di] != 0) ? 1 : 0;
|
||||
int ds = (m_display_decay[di] != 0) ? 1 : 0;
|
||||
active_state[i] |= (ds << j);
|
||||
}
|
||||
}
|
||||
|
||||
// on difference, send to output
|
||||
for (int i = 0; i < 0x10; i++)
|
||||
if (m_leds_cache[i] != active_state[i])
|
||||
if (m_display_cache[i] != active_state[i])
|
||||
{
|
||||
output_set_digit_value(i, active_state[i]);
|
||||
|
||||
@ -100,17 +100,17 @@ void starwbc_state::leds_update()
|
||||
output_set_lamp_value(i*10 + j, active_state[i] >> j & 1);
|
||||
}
|
||||
|
||||
memcpy(m_leds_cache, active_state, sizeof(m_leds_cache));
|
||||
memcpy(m_display_cache, active_state, sizeof(m_display_cache));
|
||||
}
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(starwbc_state::leds_decay_tick)
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(starwbc_state::display_decay_tick)
|
||||
{
|
||||
// slowly turn off unpowered leds
|
||||
// slowly turn off unpowered segments
|
||||
for (int i = 0; i < 0x100; i++)
|
||||
if (!(m_leds_state[i & 0xf] >> (i>>4) & 1) && m_leds_decay[i])
|
||||
m_leds_decay[i]--;
|
||||
if (!(m_display_state[i & 0xf] >> (i>>4) & 1) && m_display_decay[i])
|
||||
m_display_decay[i]--;
|
||||
|
||||
leds_update();
|
||||
display_update();
|
||||
}
|
||||
|
||||
void starwbc_state::prepare_and_update()
|
||||
@ -120,9 +120,9 @@ void starwbc_state::prepare_and_update()
|
||||
|
||||
// R0,R2,R4,R6,R8
|
||||
for (int i = 0; i < 5; i++)
|
||||
m_leds_state[i*2] = (m_r >> (i*2) & 1) ? (o & mask[i]) : 0;
|
||||
m_display_state[i*2] = (m_r >> (i*2) & 1) ? (o & mask[i]) : 0;
|
||||
|
||||
leds_update();
|
||||
display_update();
|
||||
}
|
||||
|
||||
|
||||
@ -227,17 +227,17 @@ INPUT_PORTS_END
|
||||
void starwbc_state::machine_start()
|
||||
{
|
||||
// zerofill
|
||||
memset(m_leds_state, 0, sizeof(m_leds_state));
|
||||
memset(m_leds_cache, 0, sizeof(m_leds_cache));
|
||||
memset(m_leds_decay, 0, sizeof(m_leds_decay));
|
||||
memset(m_display_state, 0, sizeof(m_display_state));
|
||||
memset(m_display_cache, 0, sizeof(m_display_cache));
|
||||
memset(m_display_decay, 0, sizeof(m_display_decay));
|
||||
|
||||
m_r = 0;
|
||||
m_o = 0;
|
||||
|
||||
// register for savestates
|
||||
save_item(NAME(m_leds_state));
|
||||
save_item(NAME(m_leds_cache));
|
||||
save_item(NAME(m_leds_decay));
|
||||
save_item(NAME(m_display_state));
|
||||
save_item(NAME(m_display_cache));
|
||||
save_item(NAME(m_display_decay));
|
||||
|
||||
save_item(NAME(m_r));
|
||||
save_item(NAME(m_o));
|
||||
@ -252,7 +252,7 @@ static MACHINE_CONFIG_START( starwbc, starwbc_state )
|
||||
MCFG_TMS1XXX_WRITE_O_CB(WRITE16(starwbc_state, write_o))
|
||||
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(starwbc_state, write_r))
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("leds_decay", starwbc_state, leds_decay_tick, attotime::from_msec(10))
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", starwbc_state, display_decay_tick, attotime::from_msec(1))
|
||||
|
||||
MCFG_DEFAULT_LAYOUT(layout_starwbc)
|
||||
|
||||
|
@ -43,9 +43,9 @@ public:
|
||||
UINT16 m_o;
|
||||
bool m_power_on;
|
||||
|
||||
UINT16 m_leds_state[0x10];
|
||||
UINT16 m_leds_cache[0x10];
|
||||
UINT8 m_leds_decay[0x100];
|
||||
UINT16 m_display_state[0x10];
|
||||
UINT16 m_display_cache[0x10];
|
||||
UINT8 m_display_decay[0x100];
|
||||
|
||||
DECLARE_READ8_MEMBER(read_k);
|
||||
DECLARE_WRITE16_MEMBER(write_o);
|
||||
@ -54,8 +54,8 @@ public:
|
||||
DECLARE_INPUT_CHANGED_MEMBER(power_button);
|
||||
DECLARE_WRITE_LINE_MEMBER(auto_power_off);
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(leds_decay_tick);
|
||||
void leds_update();
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
|
||||
void display_update();
|
||||
|
||||
virtual void machine_reset();
|
||||
virtual void machine_start();
|
||||
@ -65,17 +65,17 @@ public:
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
LEDs
|
||||
LED Display
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
// The device strobes the outputs very fast, it is unnoticeable to the user.
|
||||
// To prevent flickering here, we need to simulate a decay.
|
||||
|
||||
// decay time, in steps of 10ms
|
||||
#define LEDS_DECAY_TIME 4
|
||||
// decay time, in steps of 1ms
|
||||
#define DISPLAY_DECAY_TIME 40
|
||||
|
||||
void stopthief_state::leds_update()
|
||||
void stopthief_state::display_update()
|
||||
{
|
||||
UINT16 active_state[0x10];
|
||||
|
||||
@ -87,32 +87,32 @@ void stopthief_state::leds_update()
|
||||
{
|
||||
int di = j << 4 | i;
|
||||
|
||||
// turn on powered leds
|
||||
if (m_power_on && m_leds_state[i] >> j & 1)
|
||||
m_leds_decay[di] = LEDS_DECAY_TIME;
|
||||
// turn on powered segments
|
||||
if (m_power_on && m_display_state[i] >> j & 1)
|
||||
m_display_decay[di] = DISPLAY_DECAY_TIME;
|
||||
|
||||
// determine active state
|
||||
int ds = (m_leds_decay[di] != 0) ? 1 : 0;
|
||||
int ds = (m_display_decay[di] != 0) ? 1 : 0;
|
||||
active_state[i] |= (ds << j);
|
||||
}
|
||||
}
|
||||
|
||||
// on difference, send to output
|
||||
for (int i = 0; i < 0x10; i++)
|
||||
if (m_leds_cache[i] != active_state[i])
|
||||
if (m_display_cache[i] != active_state[i])
|
||||
output_set_digit_value(i, active_state[i]);
|
||||
|
||||
memcpy(m_leds_cache, active_state, sizeof(m_leds_cache));
|
||||
memcpy(m_display_cache, active_state, sizeof(m_display_cache));
|
||||
}
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(stopthief_state::leds_decay_tick)
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(stopthief_state::display_decay_tick)
|
||||
{
|
||||
// slowly turn off unpowered leds
|
||||
// slowly turn off unpowered segments
|
||||
for (int i = 0; i < 0x100; i++)
|
||||
if (!(m_leds_state[i & 0xf] >> (i>>4) & 1) && m_leds_decay[i])
|
||||
m_leds_decay[i]--;
|
||||
if (!(m_display_state[i & 0xf] >> (i>>4) & 1) && m_display_decay[i])
|
||||
m_display_decay[i]--;
|
||||
|
||||
leds_update();
|
||||
display_update();
|
||||
}
|
||||
|
||||
|
||||
@ -144,9 +144,9 @@ WRITE16_MEMBER(stopthief_state::write_r)
|
||||
// R0-R2: select digit
|
||||
UINT8 o = BITSWAP8(m_o,3,5,2,1,4,0,6,7) & 0x7f;
|
||||
for (int i = 0; i < 3; i++)
|
||||
m_leds_state[i] = (data >> i & 1) ? o : 0;
|
||||
m_display_state[i] = (data >> i & 1) ? o : 0;
|
||||
|
||||
leds_update();
|
||||
display_update();
|
||||
|
||||
// R3-R8: speaker on
|
||||
m_speaker->level_w((data & 0x1f8 && m_o & 8) ? 1 : 0);
|
||||
@ -234,17 +234,17 @@ void stopthief_state::machine_reset()
|
||||
void stopthief_state::machine_start()
|
||||
{
|
||||
// zerofill
|
||||
memset(m_leds_state, 0, sizeof(m_leds_state));
|
||||
memset(m_leds_cache, 0, sizeof(m_leds_cache));
|
||||
memset(m_leds_decay, 0, sizeof(m_leds_decay));
|
||||
memset(m_display_state, 0, sizeof(m_display_state));
|
||||
memset(m_display_cache, 0, sizeof(m_display_cache));
|
||||
memset(m_display_decay, 0, sizeof(m_display_decay));
|
||||
|
||||
m_o = 0;
|
||||
m_power_on = false;
|
||||
|
||||
// register for savestates
|
||||
save_item(NAME(m_leds_state));
|
||||
save_item(NAME(m_leds_cache));
|
||||
save_item(NAME(m_leds_decay));
|
||||
save_item(NAME(m_display_state));
|
||||
save_item(NAME(m_display_cache));
|
||||
save_item(NAME(m_display_decay));
|
||||
|
||||
save_item(NAME(m_o));
|
||||
save_item(NAME(m_power_on));
|
||||
@ -260,7 +260,7 @@ static MACHINE_CONFIG_START( stopthief, stopthief_state )
|
||||
MCFG_TMS1XXX_WRITE_R_CB(WRITE16(stopthief_state, write_r))
|
||||
MCFG_TMS1XXX_POWER_OFF_CB(WRITELINE(stopthief_state, auto_power_off))
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("leds_decay", stopthief_state, leds_decay_tick, attotime::from_msec(10))
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", stopthief_state, display_decay_tick, attotime::from_msec(1))
|
||||
|
||||
MCFG_DEFAULT_LAYOUT(layout_stopthie)
|
||||
|
||||
|
@ -37,14 +37,14 @@ public:
|
||||
UINT16 m_o;
|
||||
bool m_power_on;
|
||||
|
||||
UINT16 m_leds_state[0x10];
|
||||
UINT16 m_leds_cache[0x10];
|
||||
UINT8 m_leds_decay[0x100];
|
||||
UINT16 m_display_state[0x10];
|
||||
UINT16 m_display_cache[0x10];
|
||||
UINT8 m_display_decay[0x100];
|
||||
|
||||
DECLARE_READ8_MEMBER(tisr16_read_k);
|
||||
DECLARE_WRITE16_MEMBER(tisr16_write_o);
|
||||
DECLARE_WRITE16_MEMBER(tisr16_write_r);
|
||||
void tisr16_leds_update();
|
||||
void tisr16_display_update();
|
||||
|
||||
DECLARE_READ8_MEMBER(ti1270_read_k);
|
||||
DECLARE_WRITE16_MEMBER(ti1270_write_o);
|
||||
@ -61,8 +61,8 @@ public:
|
||||
DECLARE_INPUT_CHANGED_MEMBER(power_button);
|
||||
DECLARE_WRITE_LINE_MEMBER(auto_power_off);
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(leds_decay_tick);
|
||||
void leds_update();
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
|
||||
void display_update();
|
||||
|
||||
virtual void machine_reset();
|
||||
virtual void machine_start();
|
||||
@ -72,17 +72,17 @@ public:
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
LEDs
|
||||
LED Display
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
// Devices with TMS09x0 strobe the outputs very fast, it is unnoticeable to the user.
|
||||
// To prevent flickering here, we need to simulate a decay.
|
||||
|
||||
// decay time, in steps of 10ms
|
||||
#define LEDS_DECAY_TIME 5
|
||||
// decay time, in steps of 1ms
|
||||
#define DISPLAY_DECAY_TIME 50
|
||||
|
||||
void ticalc1x_state::leds_update()
|
||||
void ticalc1x_state::display_update()
|
||||
{
|
||||
UINT16 active_state[0x10];
|
||||
|
||||
@ -94,19 +94,19 @@ void ticalc1x_state::leds_update()
|
||||
{
|
||||
int di = j << 4 | i;
|
||||
|
||||
// turn on powered leds
|
||||
if (m_power_on && m_leds_state[i] >> j & 1)
|
||||
m_leds_decay[di] = LEDS_DECAY_TIME;
|
||||
// turn on powered segments
|
||||
if (m_power_on && m_display_state[i] >> j & 1)
|
||||
m_display_decay[di] = DISPLAY_DECAY_TIME;
|
||||
|
||||
// determine active state
|
||||
int ds = (m_leds_decay[di] != 0) ? 1 : 0;
|
||||
int ds = (m_display_decay[di] != 0) ? 1 : 0;
|
||||
active_state[i] |= (ds << j);
|
||||
}
|
||||
}
|
||||
|
||||
// on difference, send to output
|
||||
for (int i = 0; i < 0x10; i++)
|
||||
if (m_leds_cache[i] != active_state[i])
|
||||
if (m_display_cache[i] != active_state[i])
|
||||
{
|
||||
output_set_digit_value(i, active_state[i]);
|
||||
|
||||
@ -114,17 +114,17 @@ void ticalc1x_state::leds_update()
|
||||
output_set_lamp_value(i*10 + j, active_state[i] >> j & 1);
|
||||
}
|
||||
|
||||
memcpy(m_leds_cache, active_state, sizeof(m_leds_cache));
|
||||
memcpy(m_display_cache, active_state, sizeof(m_display_cache));
|
||||
}
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(ticalc1x_state::leds_decay_tick)
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(ticalc1x_state::display_decay_tick)
|
||||
{
|
||||
// slowly turn off unpowered leds
|
||||
// slowly turn off unpowered segments
|
||||
for (int i = 0; i < 0x100; i++)
|
||||
if (!(m_leds_state[i & 0xf] >> (i>>4) & 1) && m_leds_decay[i])
|
||||
m_leds_decay[i]--;
|
||||
if (!(m_display_state[i & 0xf] >> (i>>4) & 1) && m_display_decay[i])
|
||||
m_display_decay[i]--;
|
||||
|
||||
leds_update();
|
||||
display_update();
|
||||
}
|
||||
|
||||
|
||||
@ -137,19 +137,19 @@ TIMER_DEVICE_CALLBACK_MEMBER(ticalc1x_state::leds_decay_tick)
|
||||
|
||||
// SR-16: TMS1000 MCU labeled TMS1001NL. die labeled 1001A
|
||||
|
||||
void ticalc1x_state::tisr16_leds_update()
|
||||
void ticalc1x_state::tisr16_display_update()
|
||||
{
|
||||
// update leds state
|
||||
for (int i = 0; i < 11; i++)
|
||||
if (m_r >> i & 1)
|
||||
m_leds_state[i] = m_o;
|
||||
m_display_state[i] = m_o;
|
||||
|
||||
// exponent sign (not 100% sure this is correct)
|
||||
m_leds_state[11] = (m_leds_state[0] | m_leds_state[1]) ? 0x40 : 0;
|
||||
m_display_state[11] = (m_display_state[0] | m_display_state[1]) ? 0x40 : 0;
|
||||
|
||||
// send to output
|
||||
for (int i = 0; i < 12; i++)
|
||||
output_set_digit_value(i, m_leds_state[i]);
|
||||
output_set_digit_value(i, m_display_state[i]);
|
||||
}
|
||||
|
||||
READ8_MEMBER(ticalc1x_state::tisr16_read_k)
|
||||
@ -170,7 +170,7 @@ WRITE16_MEMBER(ticalc1x_state::tisr16_write_r)
|
||||
// R0-R10: select digit (right-to-left)
|
||||
m_r = data;
|
||||
|
||||
tisr16_leds_update();
|
||||
tisr16_display_update();
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(ticalc1x_state::tisr16_write_o)
|
||||
@ -178,7 +178,7 @@ WRITE16_MEMBER(ticalc1x_state::tisr16_write_o)
|
||||
// O0-O7: digit segments
|
||||
m_o = data;
|
||||
|
||||
tisr16_leds_update();
|
||||
tisr16_display_update();
|
||||
}
|
||||
|
||||
|
||||
@ -200,9 +200,9 @@ WRITE16_MEMBER(ticalc1x_state::ti1270_write_r)
|
||||
{
|
||||
// R0-R7: select digit (right-to-left)
|
||||
for (int i = 0; i < 8; i++)
|
||||
m_leds_state[i] = (data >> i & 1) ? m_o : 0;
|
||||
m_display_state[i] = (data >> i & 1) ? m_o : 0;
|
||||
|
||||
leds_update();
|
||||
display_update();
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(ticalc1x_state::ti1270_write_o)
|
||||
@ -232,12 +232,12 @@ WRITE16_MEMBER(ticalc1x_state::wizatron_write_r)
|
||||
// R0-R8: select digit (right-to-left)
|
||||
// note: 3rd digit is custom(not 7seg), for math symbols
|
||||
for (int i = 0; i < 9; i++)
|
||||
m_leds_state[i] = (data >> i & 1) ? m_o : 0;
|
||||
m_display_state[i] = (data >> i & 1) ? m_o : 0;
|
||||
|
||||
// 6th digit only has A and G for =
|
||||
m_leds_state[3] &= 0x41;
|
||||
m_display_state[3] &= 0x41;
|
||||
|
||||
leds_update();
|
||||
display_update();
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(ticalc1x_state::wizatron_write_o)
|
||||
@ -271,12 +271,12 @@ WRITE16_MEMBER(ticalc1x_state::ti30_write_r)
|
||||
// R0-R8: select digit
|
||||
UINT8 o = BITSWAP8(m_o,7,5,2,1,4,0,6,3);
|
||||
for (int i = 0; i < 9; i++)
|
||||
m_leds_state[i] = (data >> i & 1) ? o : 0;
|
||||
m_display_state[i] = (data >> i & 1) ? o : 0;
|
||||
|
||||
// 1st digit only has segments B,F,G,DP
|
||||
m_leds_state[0] &= 0xe2;
|
||||
m_display_state[0] &= 0xe2;
|
||||
|
||||
leds_update();
|
||||
display_update();
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(ticalc1x_state::ti30_write_o)
|
||||
@ -654,18 +654,18 @@ void ticalc1x_state::machine_reset()
|
||||
void ticalc1x_state::machine_start()
|
||||
{
|
||||
// zerofill
|
||||
memset(m_leds_state, 0, sizeof(m_leds_state));
|
||||
memset(m_leds_cache, 0, sizeof(m_leds_cache));
|
||||
memset(m_leds_decay, 0, sizeof(m_leds_decay));
|
||||
memset(m_display_state, 0, sizeof(m_display_state));
|
||||
memset(m_display_cache, 0, sizeof(m_display_cache));
|
||||
memset(m_display_decay, 0, sizeof(m_display_decay));
|
||||
|
||||
m_r = 0;
|
||||
m_o = 0;
|
||||
m_power_on = false;
|
||||
|
||||
// register for savestates
|
||||
save_item(NAME(m_leds_state));
|
||||
save_item(NAME(m_leds_cache));
|
||||
save_item(NAME(m_leds_decay));
|
||||
save_item(NAME(m_display_state));
|
||||
save_item(NAME(m_display_cache));
|
||||
save_item(NAME(m_display_decay));
|
||||
|
||||
save_item(NAME(m_r));
|
||||
save_item(NAME(m_o));
|
||||
@ -688,7 +688,7 @@ MACHINE_CONFIG_END
|
||||
static MACHINE_CONFIG_START( t9base, ticalc1x_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("leds_decay", ticalc1x_state, leds_decay_tick, attotime::from_msec(10))
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", ticalc1x_state, display_decay_tick, attotime::from_msec(1))
|
||||
|
||||
/* no video! */
|
||||
|
||||
|
@ -54,11 +54,11 @@ public:
|
||||
UINT16 m_o;
|
||||
int m_power_on;
|
||||
|
||||
UINT16 m_leds_state[0x10];
|
||||
UINT16 m_leds_cache[0x10];
|
||||
UINT8 m_leds_decay[0x100];
|
||||
void leds_update();
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(leds_decay_tick);
|
||||
UINT16 m_display_state[0x10];
|
||||
UINT16 m_display_cache[0x10];
|
||||
UINT8 m_display_decay[0x100];
|
||||
void display_update();
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
|
||||
|
||||
UINT32 m_cart_max_size;
|
||||
UINT8* m_cart_base;
|
||||
@ -127,10 +127,10 @@ DRIVER_INIT_MEMBER(tispeak_state, lantutor)
|
||||
// The device strobes the filament-enable very fast, it is unnoticeable to the user.
|
||||
// To prevent flickering here, we need to simulate a decay.
|
||||
|
||||
// decay time, in steps of 10ms
|
||||
#define LEDS_DECAY_TIME 4
|
||||
// decay time, in steps of 1ms
|
||||
#define DISPLAY_DECAY_TIME 40
|
||||
|
||||
void tispeak_state::leds_update()
|
||||
void tispeak_state::display_update()
|
||||
{
|
||||
int filament_on = (m_r & 0x8000) ? 1 : 0;
|
||||
UINT16 active_state[0x10];
|
||||
@ -138,7 +138,7 @@ void tispeak_state::leds_update()
|
||||
for (int i = 0; i < 0x10; i++)
|
||||
{
|
||||
// update current state
|
||||
m_leds_state[i] = (m_r >> i & 1) ? m_o : 0;
|
||||
m_display_state[i] = (m_r >> i & 1) ? m_o : 0;
|
||||
|
||||
active_state[i] = 0;
|
||||
|
||||
@ -146,19 +146,19 @@ void tispeak_state::leds_update()
|
||||
{
|
||||
int di = j << 4 | i;
|
||||
|
||||
// turn on powered leds
|
||||
if (m_power_on && filament_on && m_leds_state[i] >> j & 1)
|
||||
m_leds_decay[di] = LEDS_DECAY_TIME;
|
||||
// turn on powered segments
|
||||
if (m_power_on && filament_on && m_display_state[i] >> j & 1)
|
||||
m_display_decay[di] = DISPLAY_DECAY_TIME;
|
||||
|
||||
// determine active state
|
||||
int ds = (m_leds_decay[di] != 0) ? 1 : 0;
|
||||
int ds = (m_display_decay[di] != 0) ? 1 : 0;
|
||||
active_state[i] |= (ds << j);
|
||||
}
|
||||
}
|
||||
|
||||
// on difference, send to output
|
||||
for (int i = 0; i < 0x10; i++)
|
||||
if (m_leds_cache[i] != active_state[i])
|
||||
if (m_display_cache[i] != active_state[i])
|
||||
{
|
||||
output_set_digit_value(i, active_state[i] & 0x3fff);
|
||||
|
||||
@ -166,17 +166,17 @@ void tispeak_state::leds_update()
|
||||
output_set_lamp_value(i*0x10 + j, active_state[i] >> j & 1);
|
||||
}
|
||||
|
||||
memcpy(m_leds_cache, active_state, sizeof(m_leds_cache));
|
||||
memcpy(m_display_cache, active_state, sizeof(m_display_cache));
|
||||
}
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(tispeak_state::leds_decay_tick)
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(tispeak_state::display_decay_tick)
|
||||
{
|
||||
// slowly turn off unpowered leds
|
||||
// slowly turn off unpowered segments
|
||||
for (int i = 0; i < 0x100; i++)
|
||||
if (!(m_leds_state[i & 0xf] >> (i>>4) & 1) && m_leds_decay[i])
|
||||
m_leds_decay[i]--;
|
||||
if (!(m_display_state[i & 0xf] >> (i>>4) & 1) && m_display_decay[i])
|
||||
m_display_decay[i]--;
|
||||
|
||||
leds_update();
|
||||
display_update();
|
||||
}
|
||||
|
||||
|
||||
@ -212,7 +212,7 @@ WRITE16_MEMBER(tispeak_state::snspell_write_r)
|
||||
|
||||
// other bits: MCU internal use
|
||||
m_r = data;
|
||||
leds_update();
|
||||
display_update();
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(tispeak_state::snspell_write_o)
|
||||
@ -221,7 +221,7 @@ WRITE16_MEMBER(tispeak_state::snspell_write_o)
|
||||
// E,D,C,G,B,A,I,M,L,K,N,J,[AP],H,F,[DP] (sidenote: TI KLMN = MAME MLNK)
|
||||
m_o = BITSWAP16(data,12,15,10,7,8,9,11,6,13,3,14,0,1,2,4,5);
|
||||
|
||||
leds_update();
|
||||
display_update();
|
||||
}
|
||||
|
||||
|
||||
@ -243,7 +243,7 @@ WRITE16_MEMBER(tispeak_state::snmath_write_o)
|
||||
// [DP],D,C,H,F,B,I,M,L,K,N,J,[AP],E,G,A (sidenote: TI KLMN = MAME MLNK)
|
||||
m_o = BITSWAP16(data,12,0,10,7,8,9,11,6,3,14,4,13,1,2,5,15);
|
||||
|
||||
leds_update();
|
||||
display_update();
|
||||
}
|
||||
|
||||
|
||||
@ -253,7 +253,7 @@ WRITE16_MEMBER(tispeak_state::lantutor_write_r)
|
||||
{
|
||||
// same as default, except R13 is used for an extra digit
|
||||
m_r = data;
|
||||
leds_update();
|
||||
display_update();
|
||||
}
|
||||
|
||||
|
||||
@ -442,18 +442,18 @@ void tispeak_state::machine_reset()
|
||||
void tispeak_state::machine_start()
|
||||
{
|
||||
// zerofill
|
||||
memset(m_leds_state, 0, sizeof(m_leds_state));
|
||||
memset(m_leds_cache, 0, sizeof(m_leds_cache));
|
||||
memset(m_leds_decay, 0, sizeof(m_leds_decay));
|
||||
memset(m_display_state, 0, sizeof(m_display_state));
|
||||
memset(m_display_cache, 0, sizeof(m_display_cache));
|
||||
memset(m_display_decay, 0, sizeof(m_display_decay));
|
||||
|
||||
m_r = 0;
|
||||
m_o = 0;
|
||||
m_power_on = 0;
|
||||
|
||||
// register for savestates
|
||||
save_item(NAME(m_leds_state));
|
||||
save_item(NAME(m_leds_cache));
|
||||
save_item(NAME(m_leds_decay));
|
||||
save_item(NAME(m_display_state));
|
||||
save_item(NAME(m_display_cache));
|
||||
save_item(NAME(m_display_decay));
|
||||
|
||||
save_item(NAME(m_r));
|
||||
save_item(NAME(m_o));
|
||||
@ -482,7 +482,7 @@ static MACHINE_CONFIG_START( snmath, tispeak_state )
|
||||
MCFG_TMS0270_WRITE_CTL_CB(DEVWRITE8("tms5100", tms5100_device, ctl_w))
|
||||
MCFG_TMS0270_WRITE_PDC_CB(DEVWRITELINE("tms5100", tms5100_device, pdc_w))
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("leds_decay", tispeak_state, leds_decay_tick, attotime::from_msec(10))
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", tispeak_state, display_decay_tick, attotime::from_msec(1))
|
||||
MCFG_DEFAULT_LAYOUT(layout_snspell) // max 9 digits
|
||||
|
||||
/* no video! */
|
||||
|
@ -46,16 +46,16 @@ public:
|
||||
UINT8 m_d;
|
||||
UINT16 m_a;
|
||||
|
||||
UINT16 m_leds_state[0x10];
|
||||
UINT16 m_leds_cache[0x10];
|
||||
UINT8 m_leds_decay[0x100];
|
||||
UINT16 m_display_state[0x10];
|
||||
UINT16 m_display_cache[0x10];
|
||||
UINT8 m_display_decay[0x100];
|
||||
|
||||
DECLARE_READ8_MEMBER(read_k);
|
||||
DECLARE_WRITE8_MEMBER(write_d);
|
||||
DECLARE_WRITE16_MEMBER(write_a);
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(leds_decay_tick);
|
||||
void leds_update();
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
|
||||
void display_update();
|
||||
bool index_is_7segled(int index);
|
||||
|
||||
virtual void machine_start();
|
||||
@ -65,15 +65,15 @@ public:
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
LEDs
|
||||
LED Display
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
// The device strobes the outputs very fast, it is unnoticeable to the user.
|
||||
// To prevent flickering here, we need to simulate a decay.
|
||||
|
||||
// decay time, in steps of 10ms
|
||||
#define LEDS_DECAY_TIME 4
|
||||
// decay time, in steps of 1ms
|
||||
#define DISPLAY_DECAY_TIME 40
|
||||
|
||||
inline bool wildfire_state::index_is_7segled(int index)
|
||||
{
|
||||
@ -81,14 +81,14 @@ inline bool wildfire_state::index_is_7segled(int index)
|
||||
return (index < 3);
|
||||
}
|
||||
|
||||
void wildfire_state::leds_update()
|
||||
void wildfire_state::display_update()
|
||||
{
|
||||
UINT16 active_state[0x10];
|
||||
|
||||
for (int i = 0; i < 0x10; i++)
|
||||
{
|
||||
// update current state
|
||||
m_leds_state[i] = (~m_a >> i & 1) ? m_d : 0;
|
||||
m_display_state[i] = (~m_a >> i & 1) ? m_d : 0;
|
||||
|
||||
active_state[i] = 0;
|
||||
|
||||
@ -96,19 +96,19 @@ void wildfire_state::leds_update()
|
||||
{
|
||||
int di = j << 4 | i;
|
||||
|
||||
// turn on powered leds
|
||||
if (m_leds_state[i] >> j & 1)
|
||||
m_leds_decay[di] = LEDS_DECAY_TIME;
|
||||
// turn on powered segments
|
||||
if (m_display_state[i] >> j & 1)
|
||||
m_display_decay[di] = DISPLAY_DECAY_TIME;
|
||||
|
||||
// determine active state
|
||||
int ds = (m_leds_decay[di] != 0) ? 1 : 0;
|
||||
int ds = (m_display_decay[di] != 0) ? 1 : 0;
|
||||
active_state[i] |= (ds << j);
|
||||
}
|
||||
}
|
||||
|
||||
// on difference, send to output
|
||||
for (int i = 0; i < 0x10; i++)
|
||||
if (m_leds_cache[i] != active_state[i])
|
||||
if (m_display_cache[i] != active_state[i])
|
||||
{
|
||||
if (index_is_7segled(i))
|
||||
output_set_digit_value(i, BITSWAP8(active_state[i],7,0,1,2,3,4,5,6) & 0x7f);
|
||||
@ -117,17 +117,17 @@ void wildfire_state::leds_update()
|
||||
output_set_lamp_value(i*10 + j, active_state[i] >> j & 1);
|
||||
}
|
||||
|
||||
memcpy(m_leds_cache, active_state, sizeof(m_leds_cache));
|
||||
memcpy(m_display_cache, active_state, sizeof(m_display_cache));
|
||||
}
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(wildfire_state::leds_decay_tick)
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(wildfire_state::display_decay_tick)
|
||||
{
|
||||
// slowly turn off unpowered leds
|
||||
// slowly turn off unpowered segments
|
||||
for (int i = 0; i < 0x100; i++)
|
||||
if (!(m_leds_state[i & 0xf] >> (i>>4) & 1) && m_leds_decay[i])
|
||||
m_leds_decay[i]--;
|
||||
if (!(m_display_state[i & 0xf] >> (i>>4) & 1) && m_display_decay[i])
|
||||
m_display_decay[i]--;
|
||||
|
||||
leds_update();
|
||||
display_update();
|
||||
}
|
||||
|
||||
|
||||
@ -147,13 +147,13 @@ READ8_MEMBER(wildfire_state::read_k)
|
||||
WRITE8_MEMBER(wildfire_state::write_d)
|
||||
{
|
||||
m_d = data;
|
||||
leds_update();
|
||||
display_update();
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(wildfire_state::write_a)
|
||||
{
|
||||
m_a = data;
|
||||
leds_update();
|
||||
display_update();
|
||||
}
|
||||
|
||||
|
||||
@ -183,17 +183,17 @@ INPUT_PORTS_END
|
||||
void wildfire_state::machine_start()
|
||||
{
|
||||
// zerofill
|
||||
memset(m_leds_state, 0, sizeof(m_leds_state));
|
||||
memset(m_leds_cache, 0, sizeof(m_leds_cache));
|
||||
memset(m_leds_decay, 0, sizeof(m_leds_decay));
|
||||
memset(m_display_state, 0, sizeof(m_display_state));
|
||||
memset(m_display_cache, 0, sizeof(m_display_cache));
|
||||
memset(m_display_decay, 0, sizeof(m_display_decay));
|
||||
|
||||
m_d = 0;
|
||||
m_a = 0;
|
||||
|
||||
// register for savestates
|
||||
save_item(NAME(m_leds_state));
|
||||
save_item(NAME(m_leds_cache));
|
||||
save_item(NAME(m_leds_decay));
|
||||
save_item(NAME(m_display_state));
|
||||
save_item(NAME(m_display_cache));
|
||||
save_item(NAME(m_display_decay));
|
||||
|
||||
save_item(NAME(m_d));
|
||||
save_item(NAME(m_a));
|
||||
@ -209,7 +209,7 @@ static MACHINE_CONFIG_START( wildfire, wildfire_state )
|
||||
MCFG_AMI_S2000_WRITE_D_CB(WRITE8(wildfire_state, write_d))
|
||||
MCFG_AMI_S2000_WRITE_A_CB(WRITE16(wildfire_state, write_a))
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("leds_decay", wildfire_state, leds_decay_tick, attotime::from_msec(10))
|
||||
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", wildfire_state, display_decay_tick, attotime::from_msec(1))
|
||||
|
||||
MCFG_DEFAULT_LAYOUT(layout_wildfire)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user