CAESAR Logo

Catalogue of Arcade Emulation Software - the Absolute Reference

Valid XHTML 1.0! Valid CSS!

X-Arcade

X-Arcade

Large CAESAR Logo

namcos21.c

0.55 [Phil Stroffolino]


TODO:

- Unify memory maps.

- Fix emulation to support other games (likely caused by dspram16_r hacks).

- Determine purpose of additional (unemulated) DSPs. I believe they are additional slave DSPs that run in parallel, but it is difficult to know for sure without having access to the DSP bios code. The single slave DSP isn't powerful enough to update the polygon layer at 60fps.

- Extract master DSP's BIOS (via trojan if possible). Certain tasks currently implemented in C (see TransferDspData) are quite likely done explicitly by the master DSP.

- Determine how "point ram" (tested by main 68k cpu on boot) is actually used.

- namcoic.c: in StarBlade, the sprite list is stored at a different location during startup tests. Is there a register that controls this?

- Starblade has some missing background graphics (i.e. the spaceport runway at beginning of stage#1, various large startship cruisers drifting in space, etc. Even with (mostly complete) DSP emulation, it is a complete mystery why this isn't working. The main CPU doesn't write descriptors for these objects in its display list, nor does it write any obvious "high level commands" to control background graphics sequencing.

- CyberSled appears to use the "POSIRQ" feature seen in various Namco System 2 games for split screen effects. This IRQ is triggered at a designated scanline. Confirm that this works as expected.

- Map lamps/vibration outputs as used by StarBlade (and possibly other titles). These likely involve the MCU.


NOTES:

- Hardware: There are at least three hardware variations, all of which are based on Namco System2: 1. Winning Run was a mass-produced prototype; it uses 3 68k CPUs; all others use 2 68k CPUs. 2. Cyber Sled uses 4xTMS320C25 and 3. Starblade uses 5xTMS320C20. 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. An intermediate device (*) expands object references to the primitive data from point ROMs interleaved with local transforms, making this data available as input to the slave DSP. The slave DSP applies the view transform to each primitive's vertices, projection, and clipping, and outputs 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.


VIDEO HARDWARE NOTES:

- Sprite hardware is identical to Namco System NB1

- There are no tilemaps

- 3d graphics are managed by DSP processors

- TODO: Use fixed point arithmetic while rendering quads. Incorporate proper per-pixel transparency, instead of overloading the zbuffer. Add depth cueing support (palette bank selection using most significant bits of zcode), if this is determined to be a feature of real hardware.


WIP:

- 0.97u1: 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. This fixes MAMEtesters bug ptblank056gre, 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, it crached in 0.78u2.

- 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.

- 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.