driver
driver namcos21.c
source namcos21.c (namcos21.c on mamedev.org)
games Air Combat (Japan)
Air Combat (US)
Cyber Sled (Japan)
Cyber Sled (US)
Driver's Eyes
Solvalou (Japan)
Starblade
Winning Run 91
Winning Run Suzuka Grand Prix
information 0.55 [Phil Stroffolino]


TODO:

- Winning Run: Polygon glitches/flicker and posirq effects for bitmap layer not working.

- Driver's Eyes: Not yet working.


NOTES:

- Hardware: There are at least four hardware variations, all of which are based on Namco System2. The main 68k CPUs populate a chunk of shared RAM with an display list describing a scene to be rendered. The main CPUs also specify attributes for a master camera which provides additional global transformations. The display list contains references to specific 3d objects and their position/orientation in 3d space. The master DSP parses the display list and applies high level geometry, emitting matrices and object references. Object references are expanded into meshes (decoded from point ROMs) and passed to the slave DSP, interleaved with local transforms. A collection of slave DSPs transforms, projects, and clips each primitive's vertices. Each slave DSP outputs a stream of quad descriptors. Each quad has a reference color (shared across vertices), and for each vertex the tuple: (screenx,screeny,z-code). The z-code scalar accounts for depth bias. A zbuffer is used while rendering quads, and depth cueing is used to shade pixels according to their depth.


WIP:

- 0.125u9: Robiza fixed unable to locate Namco System 21 input port 'AN7'.

- 0.125u7: Fabio Priuli updated most Namco systems + a couple of old drivers sharing the input handling.

- 0.123u3: Couriersud fixed Namco System 21 crashes due to nvram allocation in MACHINE_RESET. Created MACHINE_START and move allocation there.

- 19th November 2007: Phil Stroffolino - Many Namco games support a "link up" feature, using the C139 controller. This allows the operator to connect up to 8 PCBs for multiplayer, LAN-style gaming. This is used in a many games, including: The Final Lap series, Cyber Sled, Winning Run, Driver's Eyes, Ridge Racer, Time Crisis ...just to name a few. Driver's Eyes is an interesting use case, as the controller is used to link the separate displays (left, middle, and right monitor) for a single-player game. I've 90% reverse engineered the controller, and completed some tests. But there a more fundamental architectural problem that needs to be solved before it can be supported in a mainstream emulator: how to support emulation where for any game, 1..8 PCB instances might be present? It's not easy to take a driver and modify it to support multiple instances. You'd have to declare additional instances of virtual CPUs, input ports, monitors. Many emulated components are currently written to assume a single instance. Which variants shold be supported for any game - "1 cab"? "5 cabs" Even if these weren't troublesome on their own, emulating "all pcbs" within a single process on a local machine is not practical from a performance perspective. Towards this end, I'm exploring support for running N PCB instances using separate processes for each PCB, and pipes for the inter-CPU communication/synchronization. The goal is to allow PCBs to be emulated on different physical machines if so desired.

- 0.120u1: Namco System 21 update [Phil Stroffolino]: Namconb1 sprites no longer broken. Fixed missing 3d gfx in Cyber Sled. Gradient colors in Starblade. More accurate depth cueing. Fixed crash in 2nd stage of Starblade. Fixed lockups in Air Combat and Solvalou. Fixes to sprite priority (see Solvalou mountain range). Hooked up translucency (palette shift) effect.

- 0.119u1: Major Namco System 21 update [Phil Stroffolino]. Changes include: Corrections to EPROM handling (affects Namco System2 as well). Scroll fix for sprite emulation in namcoic.c. Working Starblade, Cybersled and Solvalou with full 3D. Graphics should be 100% except for the depth cueing tables, which are internal and need to be reconstructed. Air Combat is improved, but is locking up in 118s because of incomplete watchdog emulation. Winning Run hardware is not yet working in this update.

- 22nd September 2007: Phil Stroffolino - I've sorted out most of the remaining graphics quirks with System21 emulation. Changes include: * C355 (sprite) emulation improvements - hooked up mode control for sprite list source location. * Proper mixing of sprite/bitmap layer and polygon colors; adds sprite-based mountain range to Solvalou. * Support for translucency effects using alternate polygon palette banks - fixes windshield in Winning Run, radar in Cyber Sled, an adds various special effects that had been missing. * Identified and hooked up video-enable register. Some mysteries remain: * There are two flavors of polygon rendering: 3d objects from Point ROMs, and dynamically-generated geometry. An example of the latter is the gradients used to draw the horizon in some games. This looks fine in some titles, but in other games (particularly Starblade's high score backdrop), the colors are clear wrong, and there is no obvious mapping from the color parameters to pens in the palette. * System21 hardware supports depth cueing, a technique for fogging polygons, so that polygons further away from the viewer are shaded differently. Only Air Combat explicitly initializes the fog tables, but that doesn't mean that other games don't use it. Winning Run definitely does, judging from screenshots, as does Starblade. I need to determine what the default tables should be. * Apparent DSP emulation bugs cause some of the math calculations to be slightly off - for example, flag-based calculations that determine whether a polygon is a backface aren't working, and so introduce rendering artifacts.

- 19th September 2007: Phil Stroffolino - I'm in the process of working around the last few issues affecting System21 emulation, including successful workarounds for lockups in Air Combat and Solvalou, emulation of scanline effects, and color glitches. But one thing that really would be nice is a standalone emulator that can run these games full speed with more modest CPU requirements. As it stands, I can run Starblade only in slow motion on my development laptop, which isn't much fun. Towards this end, I will be packaging and releasing a emulator that runs System21 and System22 titles with hardware accelerated graphics and statically recompiled DSP code. Any suggestions for a name and/or features would be welcome.

- 9th September 2007: Phil Stroffolino - I'm publishing a snapshot of the Namco System 21 driver for safe keeping and bug collection purposes. It's currently based on mame098s source tree, as I had many unchecked in changes when taken a hiatus from MAME. If anyone is interested to help update it to 118+, please let me know. Notes and Known Issues: 1. The BIOS is actually named c67.bin, not c68prg. 2. For the newer games (that use multiple DSPs) the pipeline for the 3d data currently needs a manual "poke" to start 3d graphics emulation. Press and hold "N" briefly anytime after the game has finished booting to "kickstart" the 3d layer. 3. Solvalou has sprite-polygon priority issues; in particular, there's a sprite-based mountain range that is supposed to be displayed in the background in-game. 4. Starblade has some bad colors when displaying high scores in attract mode. 5. Air Combat's 3d graphics "lockup" in-game due to timing issues and a software watchdog managed by the DSPs. 6. Cybersled floor polygons sometimes are missing, because of the zbuffer is incorrectly overloaded to also encode transparency. 7. Some polygon glitches/flicker with Winning Run hardware. 8. Driving Eyes hardware is not yet supported at all.

- 6th September 2007: Phil Stroffolino - Winning Run (old hardware) uses a single DSP to offload the geometry processing. The 68k CPUs talk to that DSP, that that DSP emits polygon descriptions. The single DSP doesn't have a BIOS like the newer titles. Instead, the master 68k CPU uploads code that slots right into program space 0x000..0xfff. I have not seen a Winning Run board firsthand, but I'd expect it to have a single DSP. The newer titles logically use a pair of DSPs. When I say logically, I mean that the code is written as if there are two DSPs. 1) There is a C67 master DSP with baked-in BIOS. The 68k uploads additional game-specific code, and the master DSP and 68k communicate directly via shared RAM. The master DSP handles high level geometry transforms - setting up camera matix and combining local transforms. 2) The 68k also uploads a chunk of game-specific "Slave DSP" code that again supplements a baked-in C67 BIOS. The slave DSP does vertex transformation and clipping calculations. Logically, there's only a single "Slave DSP." The master DSP doesn't talk directly to the Slave DSP, but rather uses ports to transmit object-rendering commands. So where do the remaining C67 DSPs come in, you ask? As it happens, the load for the "Slave DSP" is much higher than the load for the Master DSP. Starblade is a good example. Some of the scenes feature a tremendous number of polygons - when I first hooked up background graphics, the framerate took a dive. Interestingly, if you overclock the slave DSP by a factor of 4, Starblade runs silky smooth even with all the extra in-game background objects. I believe that the way the real hardware works is that there are four C67 Slave DSPs that are used round-robin style for object vertex processing. When the master DSP transmits object descriptors, they are routed to the next available slave, allowing the load to be distributed in parallel. This isn't exposed at the software level - it's just a best guess at how the real hardware must work. Overclocking is just a simpler means to achieve the same end. Again, this is just a guess. It's also plausible that there is a single master and slave DSP, that both run at freakishly high clock speeds, and that the other DSPs are used for something else i.e. the actual polygon filling, which isn't explicitly done by either the BIOS or uploaded TSM25025 code.

- 5th September 2007: Phil Stroffolino - The System21 DSP BIOS has been dumped - many thanks to Ruben. There are two DSPs, a master and slave. As with System22, a common BIOS is used. In System21, one of the input ports is polled at runtime to identify whether the BIOS is being used for a master DSP or a slave DSP, and triggers a jump to the appropriate code variant. Here's a quick summary of BIOS functionality: Self-tests: data and program space RAM, self-tests: communication paths between master/slave dsp, BIOS CRC check, if BIOS CRC is wrong, BIOS attempts to fix itself by copying external data as part of an "EP" operation (eprom?), CRC check of point roms, unused code that operates on point ram, lots of unused (vestigal?) data tables, manages upload of external master DSP code, manages upload of external slave DSP code and processing of some signals from display list. For better or worse, no unexpected or surprising functionality has been found. There were a few uses of the BIOS from the master68k side that hinted at advanced features, but these aren't actually used. The BIOS implements certain behaviors that were HLE'd via hacks in MAME, but emulating it properly doesn't magically fix anything. Tthings that we now know aren't_ handled explicitly by the master/slave DSPs are now confirmed to be behavior innate in external (simulated) hardware. Interesting discoveries: Some input/output ports are used only by BIOS and are now documented. The BIOS use of existing input/output ports is slightly different, and has helped correct their emulation. An "IDC" transfer operation supports block copies from master DSP RAM to slave DSP, via ports. There are two modes: one that copies data raw, and another that interleaves point ROM data. This is particularly important for Air Combat. System21 is well on its way to being fully tamed. Note that the BIOS and master/slave configuration is used with the following PCBs: Starblade, Air Combat, Cybersled and Solvalou.

- 0.97u1: Added includes
amcos21.h. Major update to Namco System 21 driver [Phil Stroffolino].

- 0.95u4: Mamesick fixed C140 sound routing in the Namco games (namcos2/21.c).

- 0.93: Added clock parameter to C140 sound (21390 Hz).

- 0.86u1: Added 2x TMS32025 (24MHz) CPU5/6.

- 0.78u5: System 21 updates [Phil Stroffolino]: Hooked up preliminary support for System21's 'depth bias' feature, used as a corrective factor when sorting polygons by representative z value. It's not perfect, but a step in the right direction, improved polygon colors in CyberSled, better parsing of CyberSled's display list; title screen and ingame graphics now appear and are mostly correct, hooked up CyberSled input ports; they can be configured with the usual mechanism: hold the 'service' key while flipping the test dipswitch, added near-plane clipping for System21's flat-shaded polygons, hooked up the view transform, used in Starblade to tilt the screen when player is targeting the edges of the playfield, hooked up a private (placeholder) implementation of zdrawgfx() for C355 sprite rendering, adding sprite-tilemap orthogonality for all games using that chip, C355 sprite rendering no longer relies on game-specific hacks for XY placement or cropping, some rudimentary work has been done for "Winning Run '91"; this game runs on prototype System21 hardware, and as such is quite different from the other titles. It uses a 3rd 68k CPU to render graphics to a bitmap layer (there is no sprite chip), but still appears to rely on DSPs for 3d graphics and updated System21 notes/comments.

- 0.78u3: Aaron Giles fixed the PROGRAM_WRITE16_MAP (Namco System 21 crach in 0.78u2).

- 0.71u2: Added vidhrdwmatrix3d.c.

- 0.70u4: Phil Stroffolino improved Namco road emulation.

- 0.63: TMS32025 CPU core [Quench].

- 21st October 2002: Aaron Giles fixed some crashes that happened in the Namco 3D games.

- 15th October 2002: Aaron Giles converted the Namco 3D graphics emulation to use the generic triangle setup routines.

- 24th August 2002: Phil Stroffolino submitted the Namco System 21 and 22 drivers. Starblade and Solvalou are playable though missing some background graphics, the rest suffer from various problems.

- 23rd August 2002: Phil Stroffolino reported some progress with the Namco System 21 driver, which supports Starblade, Air Combat, Cyber Sled and Solvalou. All games have full sound support thanks to R. Belmont. Starblade is fully playable, but the other games are preliminary and suffer from various graphics glitches and lack of input ports.

- 6th July 2002: Phil Stroffolino updated the Namco System 21 driver, but the 3D graphics remain unemulated.

- 0.60: Removed includes
amcos21.h.

- 0.55: Added namcos21.c driver, vidhrdw
amcos21.c and includes
amcos21.h.

- 11th September 2001: Phil Stroffolino reported some progress with the Namco System 2 driver, specifically the sprites are now perfect but the road is not yet working.

- 8th September 2001: Phil Stroffolino improved the Namco System21 driver, but it is still far from perfect.

- 30th August 2001: Phil Stroffolino and Aaron Giles added preliminary polygon support to the Namco System 21 driver, but the transformation matrix and projection parameters are not yet correct.

- 22nd July 2001: Phil Stroffolino sent in some work-in-progress drivers including Namco System 21, which is coming along nicely minus the 3D graphics.

PCB information
aircombj Air Combat (Japan)
[Jan/01/97]
 
 -------------------
 Air Combat by NAMCO
 -------------------
 
 Uses Namco's system 21 hardware.
 
 
 The archive inforamtion:
 
 Location         Type        ID     Checksum
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 CPU68  1J       27C4001   MPR-L.AC2   C778         
 CPU68  1J       27C4001   MPR-L.AC1   9859
 
 CPU68  3J       27C4001   MPR-U.AC2   6DD9
 CPU68  3J       27C4001   MPR-U.AC1   97F1
 
 CPU68  12B      27C4001   VOI0.AC1    08CF
 CPU68  12C      27C4001   VOI1.AC1    925D
 CPU68  12D      27C4001   VOI2.AC1    C498
 CPU68  12E      27C4001   VOI3.AC1    DE9F
 CPU68  1C       27C4001   EDATA1-L    7F77  [REV.AC1]
 CPU68  3A       27C4001   EDATA-U     20F2  [REV.AC1]
 CPU68  3C       27C4001   EDATA1-U    FA2F  [REV.AC1]
 CPU68  1A       27C4001   EDATA-L     9E8A
 CPU68  8J       27C010    SND0.AC1    71A8
  
 CPU68  6C       27C010    SPR-U.AC2   A3F1
 CPU68  6C       27C010    SPR-U.AC1   CA33
 
 CPU68  4C       27C010    SPR-L.AC2   08CE
 CPU68  4C       27C010    SPR-L.AC1   473B
 
 OBJ(B) 5S       27C4001   OBJ0.AC1    CB72
 OBJ(B) 5X       27C4001   OBJ1.AC1    85E2
 OBJ(B) 3S       27C4001   OBJ2.AC1    89DC
 OBJ(B) 3X       27C4001   OBJ3.AC1    58FF
 OBJ(B) 4S       27C4001   OBJ4.AC1    46D6
 OBJ(B) 4X       27C4001   OBJ5.AC1    7B91
 OBJ(B) 2S       27C4001   OBJ6.AC1    5736
 OBJ(B) 2X       27C4001   OBJ7.AC1    6D45
 
 DSP    2N       27C4001   AC1-POIL.L  8AAF
 DSP    2K       27C4001   AC1-POIL.L  CF90
 DSP    2E       27C4001   AC1-POIH    4D02
 
 
 NOTE:  CPU68  - CPU board
        OBJ(B) - Object board
        DSP    - DSP board
        PGN(C) - PGN board
 
       ROMs that have the same locations are the same ROMs
       but of a different revision. A 27C4001 is a standard
       4 Megabit ROM, like a 27C040. Most of the ROMs used 
       were masked ROMs like MB34000B-10, HN62344BPC84, etc.
  
 
 Jumper settings
 ---------------
 
 CPU68 PCB:
 
 Location    Position set    alt. setting
   
   JP1          master          slave
   JP5          27301           27101
   JP6          >4M             4M
   JP7          4M              >4M
   JP8          4M              >4M
   JP9          4M              >4M
   JP10         ROM             EXT  [mode]
   JP12         4M              >4M
   JP13         Ron             Roff
   JP14         GND             VCC
 
 
 DSP PCB:   [DSP and DSP support IC type settings]
   
   JP1          VCC             GND
   JP2          VCC             GND
   JP3          VCC             GND
   JP4          GND             VCC
   JP5          GND             VCC
   JP6          GND             VCC  
   JP7          GND             VCC  
   JP8          VCC             GND  
   JP9          VCC             GND  
   JP10         GND             VCC
   JP11         VCC             GND
   JP12         VCC             GND
   JP13         GND             VCC
   JP14         VCC             GND
   JP15         VCC             GND
   JP16         GND             VCC
   JP17         VCC             GND
   JP18         VCC             GND
 
 
 OBJ(C) PCB:
 
   JP1          1-4M            8M     
   JP2          4M              1-2M
   JP3          4M              1M, 2M, 8M
   JP6          HP1             HP2
   JP7          non-interlaced  interlaced  [optional RGB setting]
   JP8          68000           68020
   JP9          VP2             VP1
   JP10         master          slave
   JP11         master          slave
   JP12         master          slave
   JP13         master          slave
   JP14         master          slave
   JP15         master          slave
                1   2   3       where: 1 - VCC
   JP16         o   o  |o|             2 - 10MA   
   JP17         o   o  |o|             3 - *10MA
 
 [4M, 1-4M, 8M, etc are ROM size settings]
 
 
 PNG(C) PCB:
 
   JP1          NJ3             FFD15
   JP2          NJ2             FFD14
   JP3          NJ1             FFD13
   JP4          NJ0             FFD12
   JP5          FFD11           GND
   JP6          GND             FFD10
 
 END
 
 
 
 
 
 [Jul/28/2001]
 
 --------------------------
 Air Combat by NAMCO (1991)
 --------------------------
 
 
 Location        Device     File ID      Checksum
 -------------------------------------------------
 CPU68  1J       27C4001    MPR-L.AC1      9859   [ main program ]  [ rev AC1 ]
 CPU68  3J       27C4001    MPR-U.AC1      97F1   [ main program ]  [ rev AC1 ]
 CPU68  1J       27C4001    MPR-L.AC2      C778   [ main program ]  [ rev AC2 ]
 CPU68  3J       27C4001    MPR-U.AC2      6DD9   [ main program ]  [ rev AC2 ]
 CPU68  1C      MB834000    EDATA1-L.AC1   7F77   [    data      ]   
 CPU68  3C      MB834000    EDATA1-U.AC1   FA2F   [    data      ]
 CPU68  3A      MB834000    EDATA-U.AC1    20F2   [    data      ]
 CPU68  1A      MB834000    EDATA-L.AC1    9E8A   [    data      ]
 CPU68  12B     MB834000    VOI0.AC1       08CF   [   voice 0    ]
 CPU68  12C     MB834000    VOI1.AC1       925D   [   voice 1    ]
 CPU68  12D     MB834000    VOI2.AC1       C498   [   voice 2    ]
 CPU68  12E     MB834000    VOI3.AC1       DE9F   [   voice 3    ]
 CPU68  8J        27C010    SND0.AC1       71A8   [  voice prog  ]
 CPU68  4C        27C010    SPR-L.AC1      473B   [ sound prog L ]  [ rev AC1 ]
 CPU68  6C        27C010    SPR-U.AC1      CA33   [ sound prog U ]  [ rev AC1 ]
 CPU68  4C        27C010    SPR-L.AC2      08CE   [ sound prog L ]  [ rev AC2 ]
 CPU68  6C        27C010    SPR-U.AC2      A3F1   [ sound prog U ]  [ rev AC2 ]
 OBJ(B) 5S       HN62344    OBJ0.AC1       CB72   [ object data  ]
 OBJ(B) 5X       HN62344    OBJ1.AC1       85E2   [ object data  ]
 OBJ(B) 3S       HN62344    OBJ2.AC1       89DC   [ object data  ]
 OBJ(B) 3X       HN62344    OBJ3.AC1       58FF   [ object data  ]
 OBJ(B) 4S       HN62344    OBJ4.AC1       46D6   [ object data  ]
 OBJ(B) 4X       HN62344    OBJ5.AC1       7B91   [ object data  ]
 OBJ(B) 2S       HN62344    OBJ6.AC1       5736   [ object data  ]
 OBJ(B) 2X       HN62344    OBJ7.AC1       6D45   [ object data  ]
 DSP    2N       HN62344    AC1-POIL.L     8AAF   [   DSP data   ]
 DSP    2K       HN62344    AC1-POIL.U     CF90   [   DSP data   ]
 DSP    2E       HN62344    AC1-POIH       4D02   [   DSP data   ]
 
 DSP    17D     GAL16V8A    3PDSP5.JED     6C00
 OBJ(B) 17N     PLHS18P8    3P0BJ3.JED     4342
 OBJ(B) 17N     PLHS18P8    3POBJ4.JED     1143
  
 
 NOTE:  CPU68  - CPU board        2252961002  (2252971002)
        OBJ(B) - Object board     8623961803  (8623963803)
        DSP    - DSP board        8623961703  (8623963703)
        PGN(C) - PGN board        2252961300  (8623963600)
 
        Uses Keycustom 326
 
        Namco System 21 Hardware
 
        ROMs that have the same locations are different revisions
        of the same ROMs (AC1 or AC2).
 
 
 
 
 
 Jumper settings:
 
 
 Location    Position set    alt. setting
 ----------------------------------------  
 
 CPU68 PCB:
 
   JP2          /D-ST           /VBL
   JP3                          NC
   JP4                          NC
   JP5          27301           27101
   JP6          >4M             4M
   JP7          4M              >4M
   JP8          4M              >4M
   JP9          4M              >4M
   JP10         ROM             EXT  [mode]
   JP11                         NC
   JP12         4M              >4M
   JP13         Ron             Roff
   JP14         GND             VCC
 
 
 DSP PCB:   [DSP and DSP support IC type settings]
   
   JP1          VCC             GND
   JP2          VCC             GND
   JP3          VCC             GND
   JP4          GND             VCC
   JP5          GND             VCC
   JP6          GND             VCC  
   JP7          GND             VCC  
   JP8          VCC             GND  
   JP9          VCC             GND  
   JP10         GND             VCC
   JP11         VCC             GND
   JP12         VCC             GND
   JP13         GND             VCC
   JP14         VCC             GND
   JP15         VCC             GND
   JP16         GND             VCC
   JP17         VCC             GND
   JP18         VCC             GND
 
 
 OBJ(C) PCB:
 
   JP1          1-4M            8M     
   JP2          4M              1-2M
   JP3          4M              1M, 2M, 8M
   JP6          HP1             HP2
   JP7          non-interlaced  interlaced  [optional video setting]
   JP8          68000           68020
   JP9          VP2             VP1
   JP10         master          slave
   JP11         master          slave
   JP12         master          slave
   JP13         master          slave
   JP14         master          slave
   JP15         master          slave
                1   2   3       where: 1 - VCC
   JP16         o   o  |o|             2 - 10MA   
   JP17         o   o  |o|             3 - *10MA
 
 [4M, 1-4M, 8M, etc are ROM size settings]
 
 
 PNG(C) PCB:
 
   JP1          NJ3             FFD15
   JP2          NJ2             FFD14
   JP3          NJ1             FFD13
   JP4          NJ0             FFD12
   JP5          FFD11           GND
   JP6          GND             FFD10
 
 
 
 Brief hardware overview
 -----------------------
 
 CPU68 PCB:
 ----------
 
 Main processor  - MC68000 12MHz
 Voice processor - MC68B09EP
                 - 140 custom   (120 pin PQFP)
 Sound processor - MC68000 12MHz
                 - 121 custom   (64 pin PQFP)
                 - YM2151
 
 Various RAMs and custom PQFPs and DIPs.
 
 Empty sockets   - C68PRG, EDATA0-U, EDATA0-L
 
 
 
 DSP PCB:
 --------
 
 Main processor  - 317 custom    (178 pin PQFP, small package) 
 Sub-processor   - 195 custom    (160 pin PQFP)
 
 DSP processors  - 198 custom X4 (160 pin PQFP) (40MHz)
 DSP support     - WYBUX1G1   X4 (68 pin QCC) (TMS320C25 int 544 word RAM, 4K ROM)
                 - 327 custom X5 (24 pin DIP)
 
 Misc support (?)- WYBUX1G1   x1 (68 pin QCC) (TMS320C25 int 544 word RAM, 4K ROM)
                 - 197 custom x2 (24 pin DIP)
                 - Misc custom ICs and PLDs
                 - KeyCustom 326
 
 Empty sockets   - SD00, SD0E, SD10, SD1E, SD20, SD2E, SD30, SD3E, MD0, MDE
                   and 3 with the other DSP data ROMs
 
 
 
 OBJECT PCB:
 -----------
 
 Processors?     - 186 custom    (160 pin PQFP)
                 - 187 custom    (160 pin PQFP)
 
 Video processor?- 138 custom    (80 pin PQFP)
                 - Misc PLDs and custom ICs
  
 
 
 PNG(C) PCB:
 -----------
 ?
 
 DRAMs, SRAMs, Dual port RAMs, custom PQFPs, PAL(SYS21PC1)
 
 
 
 Air Combat PAL's
 ================
 
 PLHS18P8A/B
 Fuse map produced by universal programmer*
 QF2600*
 L00000 000000000000000000000000000000000000*
 L00036 000000000000000000000000000000000000*
 L00072 000000000000000000000000000000000000*
 L00108 000000000000000000000000000000000000*
 L00144 000000000000000000000000000000000000*
 L00180 000000000000000000000000000000000000*
 L00216 000000000000000000000000000000000000*
 L00252 000000000000000000000000000000000000*
 L00288 000000000000000000000000000000000000*
 L00324 000000000000000000000000000000000000*
 L00360 000000000000000000000000000000000000*
 L00396 000000000000000000000000000000000000*
 L00432 000000000000000000000000000000000000*
 L00468 000000000000000000000000000000000000*
 L00504 000000000000000000000000000000000000*
 L00540 000000000000000000000000000000000000*
 L00576 000000000000000000000000000000000000*
 L00612 000000000000000000000000000000000000*
 L00648 111111111111111111111111111111111111*
 L00684 111111011111111111111111111111111011*
 L00720 111111111111111111111111111011111011*
 L00756 010101110111011101110111011111111011*
 L00792 000000000000000000000000000000000000*
 L00828 000000000000000000000000000000000000*
 L00864 000000000000000000000000000000000000*
 L00900 000000000000000000000000000000000000*
 L00936 000000000000000000000000000000000000*
 L00972 111111111111111111111111111111111111*
 L01008 111111011111111111111111111111111110*
 L01044 111111111111111111111111111011111110*
 L01080 010101110111011101110111011111111110*
 L01116 000000000000000000000000000000000000*
 L01152 000000000000000000000000000000000000*
 L01188 000000000000000000000000000000000000*
 L01224 000000000000000000000000000000000000*
 L01260 000000000000000000000000000000000000*
 L01296 111111111111111111111111111111111111*
 L01332 111111011111111111111111111111101111*
 L01368 111111111111111111111111111011101111*
 L01404 010101110111011101110111011111101111*
 L01440 000000000000000000000000000000000000*
 L01476 000000000000000000000000000000000000*
 L01512 000000000000000000000000000000000000*
 L01548 000000000000000000000000000000000000*
 L01584 000000000000000000000000000000000000*
 L01620 111111111111111111111111111111111111*
 L01656 111111011111111111111111111110111111*
 L01692 111111111111111111111111111010111111*
 L01728 010101110111011101110111011110111111*
 L01764 000000000000000000000000000000000000*
 L01800 000000000000000000000000000000000000*
 L01836 000000000000000000000000000000000000*
 L01872 000000000000000000000000000000000000*
 L01908 000000000000000000000000000000000000*
 L01944 000000000000000000000000000000000000*
 L01980 000000000000000000000000000000000000*
 L02016 000000000000000000000000000000000000*
 L02052 000000000000000000000000000000000000*
 L02088 000000000000000000000000000000000000*
 L02124 000000000000000000000000000000000000*
 L02160 000000000000000000000000000000000000*
 L02196 000000000000000000000000000000000000*
 L02232 000000000000000000000000000000000000*
 L02268 000000000000000000000000000000000000*
 L02304 000000000000000000000000000000000000*
 L02340 000000000000000000000000000000000000*
 L02376 000000000000000000000000000000000000*
 L02412 000000000000000000000000000000000000*
 L02448 000000000000000000000000000000000000*
 L02484 000000000000000000000000000000000000*
 L02520 000000000000000000000000000000000000*
 L02556 000000000000000000000000000000000000*
 L02592 00111100*
 C4342*
 790E
 
 PLHS18P8A/B
 Fuse map produced by universal programmer*
 QF2600*
 L00000 000000000000000000000000000000000000*
 L00036 000000000000000000000000000000000000*
 L00072 000000000000000000000000000000000000*
 L00108 000000000000000000000000000000000000*
 L00144 000000000000000000000000000000000000*
 L00180 000000000000000000000000000000000000*
 L00216 000000000000000000000000000000000000*
 L00252 000000000000000000000000000000000000*
 L00288 000000000000000000000000000000000000*
 L00324 000000000000000000000000000000000000*
 L00360 000000000000000000000000000000000000*
 L00396 000000000000000000000000000000000000*
 L00432 000000000000000000000000000000000000*
 L00468 000000000000000000000000000000000000*
 L00504 000000000000000000000000000000000000*
 L00540 000000000000000000000000000000000000*
 L00576 000000000000000000000000000000000000*
 L00612 000000000000000000000000000000000000*
 L00648 111111111111111111111111111111111111*
 L00684 111111011111111111111111111111110111*
 L00720 000000000000000000000000000000000000*
 L00756 000000000000000000000000000000000000*
 L00792 000000000000000000000000000000000000*
 L00828 000000000000000000000000000000000000*
 L00864 000000000000000000000000000000000000*
 L00900 000000000000000000000000000000000000*
 L00936 000000000000000000000000000000000000*
 L00972 000000000000000000000000000000000000*
 L01008 000000000000000000000000000000000000*
 L01044 000000000000000000000000000000000000*
 L01080 000000000000000000000000000000000000*
 L01116 000000000000000000000000000000000000*
 L01152 000000000000000000000000000000000000*
 L01188 000000000000000000000000000000000000*
 L01224 000000000000000000000000000000000000*
 L01260 000000000000000000000000000000000000*
 L01296 000000000000000000000000000000000000*
 L01332 000000000000000000000000000000000000*
 L01368 000000000000000000000000000000000000*
 L01404 000000000000000000000000000000000000*
 L01440 000000000000000000000000000000000000*
 L01476 000000000000000000000000000000000000*
 L01512 000000000000000000000000000000000000*
 L01548 000000000000000000000000000000000000*
 L01584 000000000000000000000000000000000000*
 L01620 000000000000000000000000000000000000*
 L01656 000000000000000000000000000000000000*
 L01692 000000000000000000000000000000000000*
 L01728 000000000000000000000000000000000000*
 L01764 000000000000000000000000000000000000*
 L01800 000000000000000000000000000000000000*
 L01836 000000000000000000000000000000000000*
 L01872 000000000000000000000000000000000000*
 L01908 000000000000000000000000000000000000*
 L01944 000000000000000000000000000000000000*
 L01980 000000000000000000000000000000000000*
 L02016 000000000000000000000000000000000000*
 L02052 000000000000000000000000000000000000*
 L02088 000000000000000000000000000000000000*
 L02124 000000000000000000000000000000000000*
 L02160 000000000000000000000000000000000000*
 L02196 000000000000000000000000000000000000*
 L02232 000000000000000000000000000000000000*
 L02268 111111111111111111111111111111111111*
 L02304 101110111011011110110110010101011111*
 L02340 000000000000000000000000000000000000*
 L02376 000000000000000000000000000000000000*
 L02412 000000000000000000000000000000000000*
 L02448 000000000000000000000000000000000000*
 L02484 000000000000000000000000000000000000*
 L02520 000000000000000000000000000000000000*
 L02556 000000000000000000000000000000000000*
 L02592 00100001*
 C1143*
 777F
 
 
 GAL16V8A/B/B-7/C/Z
 fuse map produced by universal device programmer*
 QF2194*
 L00000 00000000000000000000000000000000*
 L00032 00000000000000000000000000000000*
 L00064 00000000000000000000000000000000*
 L00096 00000000000000000000000000000000*
 L00128 00000000000000000000000000000000*
 L00160 00000000000000000000000000000000*
 L00192 00000000000000000000000000000000*
 L00224 00000000000000000000000000000000*
 L00256 00000000000000000000000000000000*
 L00288 00000000000000000000000000000000*
 L00320 00000000000000000000000000000000*
 L00352 00000000000000000000000000000000*
 L00384 00000000000000000000000000000000*
 L00416 00000000000000000000000000000000*
 L00448 00000000000000000000000000000000*
 L00480 00000000000000000000000000000000*
 L00512 11111111111111111111111111111111*
 L00544 11111111111111111111111111111011*
 L00576 11111111111111111111111111101111*
 L00608 00000000000000000000000000000000*
 L00640 00000000000000000000000000000000*
 L00672 00000000000000000000000000000000*
 L00704 00000000000000000000000000000000*
 L00736 00000000000000000000000000000000*
 L00768 01111111111111011111111111111111*
 L00800 11110111111111011111111111111111*
 L00832 11111111111110011111111111111111*
 L00864 11111111111111010111111111111111*
 L00896 11111111111111011111101111111111*
 L00928 11111111111111011111111110111111*
 L00960 10111001111101111011011101111111*
 L00992 00000000000000000000000000000000*
 L01024 01111111111111111101111111111111*
 L01056 11110111111111111101111111111111*
 L01088 11111111111110111101111111111111*
 L01120 11111111111111110101111111111111*
 L01152 11111111111111111101101111111111*
 L01184 11111111111111111101111101111111*
 L01216 10111001111101111011011110111111*
 L01248 00000000000000000000000000000000*
 L01280 00000000000000000000000000000000*
 L01312 00000000000000000000000000000000*
 L01344 00000000000000000000000000000000*
 L01376 00000000000000000000000000000000*
 L01408 00000000000000000000000000000000*
 L01440 00000000000000000000000000000000*
 L01472 00000000000000000000000000000000*
 L01504 00000000000000000000000000000000*
 L01536 01111111111111111111111111011111*
 L01568 11110111111111111111111111011111*
 L01600 11111111111110111111111111011111*
 L01632 11111111111111110111111111011111*
 L01664 11111111111111111111011111011111*
 L01696 11111111111111111111111101011111*
 L01728 10111001111101111011101110111111*
 L01760 00000000000000000000000000000000*
 L01792 11111111101111111111111111111111*
 L01824 10101011111101110111101110111111*
 L01856 00000000000000000000000000000000*
 L01888 00000000000000000000000000000000*
 L01920 00000000000000000000000000000000*
 L01952 00000000000000000000000000000000*
 L01984 00000000000000000000000000000000*
 L02016 00000000000000000000000000000000*
 L02048 00011010*
 L02056 1000110000000000000000000000000000000000000000000000000000000000*
 L02120 11100101*
 L02128 1111111111111111111111111111111111111111111111111111111111111111*
 L02192 01*
 C6C00*
 2BB7
 
 -
 
 [Jan/29/2000]
 
 エアーコンバット SYS21
 
 KEY CUSTOM  326
 
 ROMのシルク印刷準拠で、ac1poih〜ac1poiluはpo1ではなくpoiです。
 スターブレード等ではシールにpo0とかpo1と印刷されてるんですが…
 
 尚、シール等に印刷されているROMネームが一部長すぎる為
 省略しているモノもあります。(EDATA 1L等)
 
 -
cybsled Cyber Sled (US)
[Aug/18/2001]
 
 Cyber Sled
 (C) Namco, 1994
 
 This game runs on Namco system 21 hardware.
 This system comprises 4 PCB's that slot into a back pane, which are housed in
 a metal box.
 
 1st PCB. (Uppermost)
 --------------------
 
 PCB No. 8623961703 DSP (8623963703)
 OSC: 40.000MHz
 RAM: HM62832 x 2, M5M5189 x 4, ISSI IS61C68 x 16 (*1)
 
 
 Keycus C362
 Namco Custom 197 (28 pin NDIP)
 Namco Custom 327 (24 pin NDIP) x 4, each one located next to a chip 67
 Namco Custom chip 67 (68 pin PLCC)
 
 Located together are....
 Namco Custom 197 (28 pin NDIP) 
 Namco Custom 327 (28 pin NDIP)
 PAL 16V8 (NAMCO CODE = 3PDSP5)
 PAL 16L8 (NAMCO CODE = 3PDSP4)
 Dip Switch 4 position. switches 1 + 2 are OFF, while 3 + 4 are ON.
 MB3771
 
 Namco Custom chip 317 IDC (180 pin PQFP)
 Namco Custom chip 195 (160 pin PQFP)
 PAL 16L8 (NAMCO CODE = 3PDSP1)
 
 PAL 16L8 (NAMCO CODE = 3PDSP2)
 
 ROMS:
 (*2) SOCKETS SD3E + SD3O, SD2E + SD2O, SD1E + SD1O, SD0E + SD0O all unpopulated
 Sockets MDE + MD0 unpopulated
 CY1POIH_1.2F	TMS27C040
 CY1POIH_2.2J	TMS27C040
 CY1POIL_U1.2K	TMS27C040
 CY1POIL_U2.2L	TMS27C040
 CY1POIL_L1.2N	TMS27C040
 CY1POIL_L1.2P	TMS27C040
 
 RAM (*1) located adjacent to (*2) unpopulated sockets  (in 4 banks of 4 chips).
 Also adjacent to these 4 pairs of sockets are 4 x Namco Custom chip 67 (68 pin PLCC)
 and adjacent to those are 4 x Namco Custom chip 342 (160 pin PQFP)
 There are 3 leds (red/green/yellow) connected to each 342 chip. (12 leds total)
 Since those ROM sockets are unpopulated, perhaps the above custom chips are unused?
 
 Note, on the PCB next to each chip 67 is silkscreened TMS320C25
 
 
 
 2nd PCB
 -------
 
 NO ROMS
 PCB Number: 2252961301 SYS21 PGN(C) (2252982301)
 OSC: 20.000MHz
 RAM: HM62256 x 10
      84256 x 4
      CY7C128 x 5
      M5M5178 x 4
 
 OTHER:
 MB8422-90LP
 L7A0565 316 (111) x 1 (100 PIN PQFP)
 150 (64 PIN PQFP)
 167 (128 PIN PQFP)
 L7A0564 x 2 (100 PIN PQFP)
 157 x 16 (24 PIN NDIP)
 PAL16L8 (NAMCO CODE = S21PGNPC1)
 
 JUMPERS:
 JP6   GND  O O-O  FFD10
 JP5   GND  O O-O  FFD11
 JP4   NJ0  O-O O  FFD12
 JP3   NJ1  O-O O  FFD13
 JP2   NJ2  O-O O  FFD14
 JP1   NJ3  O-O O  FFD15
 
 
 3rd PCB (very similar in looks to Namco System 2 CPU PCB)
 -------
 
 PCB Number: (2252971002) 2252961002 CPU68
 CPU: MC68000P12 x 2
 SND: MC68B09EP, YM2151, YM3012
 XTAL: 3.579545 MHz
 OSC: 49.152 MHz
 DIP: 8 POSITION x 1 (All switches OFF)
 RAM: MB8464 x 2, MCM2018 x 2, HM65256 x 4, HM62256 x 2
 
 Other:
 Sharp PC900
 Sharp PC910
 HN58C65P (EEPROM)
 MB3771
 PAL 16L8 (NAMCO CODE = SYS87B-2B)
 PAL 20L10 (NAMCO CODE = WR-C2)
 PAL 20L8 (NAMCO CODE = SYS21C1)
 MB87077-SK x 2 (24 pin NDIP, located in sound section)
 LB1760 (16 pin DIP, located next to SYS87B-2B)
 CY7C132 (48 PIN DIP)
 
 Namco Custom:
 140 (120 pin PQFP)
 148 x 2 (64 pin PQFP)
 C68 (64 pin PQFP)
 139 (64 pin PQFP)
 137 (28 pin NDIP)
 149 (28 pin NDIP, near C68)
 
 ROMS:
 CY2MPRU.3J	MX27C4000	\ Main Program
 CY2MPRL.1J	MX27C4000	/
 
 CY2SPRU.6C	MX27C4000	\ Sub Program
 CY2SPRL.4C	MX27C4000	/
 
 CY1SND0.8J	27C010		Sound Program
 Socket SND1 unpopulated
 
 Socket C68PRG unpopulated
 
 Socket EDATA1U and EDATA1L unpopulated
 CY1EDATA0U.3B	MX27C4000	\ E Data 0 Upper?
 CY1EDATA0L.1B	MX27C4000	/ E Data 0 Lower?
 
 CY1DATAU.3A	MX27C4000	\ Data Upper?
 CY1DATAL.1A	MX27C4000	/ Data Lower?
 
 CY_VOI0.12B	4M MASK
 CY_VOI0.12C	4M MASK
 CY_VOI0.12D	4M MASK
 CY_VOI0.12E	4M MASK
 
 
 4th PCB (bottom-most)
 ---------------------
 
 PCB Number: 8623961803 OBJ(B)   (8623963803)
 OSC: 38.76922 MHz
 
 There is a 6 wire plug joining this PCB with the CPU PCB. It appears to be video cable (RGB, Sync etc..)
 
 Jumpers:
 JP1     1,2,4M SHORTED (Other setting is 8M)
 JP2	4M SHORTED (Other setting is 1,2M)
 JP3     4M SHORTED (4 x 2 pin block, Other settings are 1M or 2M or 8M)
 JP4     1-2    \
 JP5  	2-3    / Hardwired on PCB
 JP6	HP1 SHORTED (Other setting is HP2)
 JP7	INTERLACE SHORTED (Other setting is NON-INTERLACE)
 JP8	68000 SHORTED (Other setting is 68020)
 JP9	VP2 SHORTED (Other setting is VP1)
 JP10	MASTER SHORTED (Other setting is SLAVE)
 JP11-JP15  MASTER SHORTED (Other setting is SLAVE)
 
 Namco Custom Chips:
 C355 (160 pin PQFP)
 187 (120 pin PQFP)
 138 (64 pin PQFP)
 165 (28 pin NDIP)
 
 PALs:
 PAL22P10 (Namco Code = PBOBJ1)
 PAL16P8 (Namco code = 3POBJ4)
 PAL22P10 (Namco Code = PBOBJ5)
 PAL16P8 (Namco code = 3POBJ3)
 
 RAM:
 Fujitsu 84256 x 5 (28 Pin DIP)
 Hitachi HM65256 x 32 (surface-mounted, 28 pin SOP)
 
 ROMs:		Type
 CY_OBJ0.5S	MB834000
 CY_OBJ1.5X	MB834000
 CY_OBJ2.3S	MB834000
 CY_OBJ3.3X	MB834000
 CY_OBJ4.4S	MB834000
 CY_OBJ5.4X	MB834000
 CY_OBJ6.2S	MB834000
 CY_OBJ7.2X	MB834000
 
 
 Note! I used full ROM label as filename, so some filenames are longer than 8 characters !
 
 
 
 
 [UNMAMED]
 
 Game description from Duncan:
 CyberSled is a distant descendant of Battlezone. Two players (versus each other
 or the computer) duke it out in hovertanks inside a closed arena.
 It featured selectable vehicles, lots of multiplayer options and a training mode
 for getting used to the dual-joystick controls. Graphics are similar to Solvalou
 in that they're untextured polygons. The game was ported to the PlayStation when that
 system was first released a couple of years later. 
 Of the System 21 games, Winning Run '91, Solvalou, Air Combat (US and Japan), Starblade
 and Cyber Sled are dumped.
 More information (R. Belmont):
 System 21 hardware lineup is:
 CPU Board: 2 68000 CPUs (master/slave for main game), 1 6809 for sound
 (the CPU board itself is the same as Namco System 2 already in MAME, including the
 same memory map, sound chips and interrupt controller chip. The video part of the memory
 map is of course different though).
 Math board: *5* DSPs for 3D math (might be TMS32c020s, but I can't find my S21 board
 scans now to double-check.) Each DSP has it's own RAM and ROMs IIRC.
 Video board: custom undocumented Namco polygon generator hardware
 
 - 
driveyes Driver's Eyes
[ARCADE RACING HISTORY]
 
 Driver's Eyes by Namco
 
 "Winning Run had more money lavished on it by Namco, I played a sit down motion simulator
 version, and a large three screen version which went on to become Driver's Eyes.
 Driver's Eyes - was the three screen multiple track variant to Winning Run.
 The games were different as there were improvements to the driving environment
 and the hardware was much more stable. Also with Hard Drivin' being such a International
 hit Namco wanted to make their game play more like that to try and capture the market."
 
 -
solvalou Solvalou (Japan)
[Jan/29/2000]
 
 ナムコ  1991   システム21
  ポリゴナイザー ソルバルウ (POLYGONIZER SOLVALOU[jp]
 
 KEY CUSTOM  325
 
 -
starblad Starblade
[Jan/29/2000]
 
 ナムコ 1991
 スターブレード  SYS21
 
 STARBLADE
 
 KEY CUSTOM  ナシ
 
 -
winrun91 Winning Run 91
[Jul/28/2001]
 
 WINNING RUN '91
 (c)namco
 SYSTEM 21 OLD VER.(CPU/NPN/PGN/GRA)
 
 CPU    : 68000 68000 6809
 SOUND  : YM2151 C140
 CUSTOM : C324
 
 VOICE MASKROM :
 "R91-1A VOI-1"
 "R91-1A VOI-3"
 (REV.A ?)
 
 -
 
 [ARCADE RACING HISTORY]
 
 Winning Run by Namco
 
 First person view, F1 racing game
 This is a polygon-based game, it was released shortly after Hard Drivin', but
 unlike Hard Drivin' that used software rendering for it's graphics,
 "Winning Run used a special CGI board, known as the 'Polygoniser' which would
 go on to become the model for the System 21 and so on".
 
 -
winrun Winning Run Suzuka Grand Prix
[Jul/13/99]
 
 WINNING RUN SUZUKA GP (NAMCO)
 
 wrt-snd0.bin	prog
 wrt-voi1.bin	pcm1
 wrt-voi3.bin	pcm2
 
 ROMのシール番号は実機と違うかもしれません。
 
 -
 
 
 
 
2004-2008 MAWS all copyrights belong to their respective owners