ddcrew: MAME ROM Information. History:
D.D. Crew (c) 1991 Sega.
A multi-player side-scrolling beat'em up.
- TECHNICAL -
Sega System 18 hardware
Game ID : 317-0182 / 317-0183 / 317-0184 / 317-0185 / 317-0186 / 317-0187 / 317-0188 / 317-0189 / 317-0190
Main CPU : 68000 (@ 10 Mhz)
Sound CPU : Z80 (@ 8 Mhz)
Sound Chips : (2x) YM3438 (@ 8 Mhz), RF5C68 (@ 10 Mhz)
Players : 4
Control : 8-way joystick
Buttons : 3
- TRIVIA -
Released in June 1991 in Japan.
The stage 2 boss is an homage to Bruce Lee.
The skyline of New York in the game's ending features a very subtle Spider-Man cameo at the top of the Empire State.
- UPDATES -
FD1094 317-0182
FD1094 317-0183
FD1094 317-0184
* World version (up to 2 players)
FD1094 317-0185
FD1094 317-0186
* US version (up to 4 players)
* has the 'Winners Don't Use Drugs' screen
FD1094 317-0187
* World version (up to 3 players)
FD1094 317-0188
FD1094 317-0189
FD1094 317-0190
- SOURCES -
Game's rom.
MAME Info:
0.92 [Charles MacDonald, Nicola Salmoria]
0.74u2 [Andrew Prime]
0.36b2 [Andrew Prime]
TODO:
* Wanted: 317-0183/0185/0188/0189 FD1094 CPUs
Bugs:
- Vertical line glitch during intro. This bug does not occur on v0.90. only after 90+. sjyune (ID 00997)
WIP:
- 0.138: Changed parent description set 'D. D. Crew (set 4, World, 3 Player, FD1094 317-0190)' to 'D. D. Crew (World, 3 Player, FD1094 317-0190)' clones 'D. D. Crew (set 5, Japan, 2 Player, FD1094 317-0182)' to 'D. D. Crew (Japan, 2 Player, FD1094 317-0182)', 'D. D. Crew (set 3, US, 4 Player, FD1094 317-0186)' to 'D. D. Crew (US, 4 Player, FD1094 317-0186)', 'D. D. Crew (set 2, World, 2 Player, FD1094 317-0184)' to 'D. D. Crew (World, 2 Player, FD1094 317-0184)' and 'D. D. Crew (set 1, World, 4 Player, FD1094 317-0187)' to 'D. D. Crew (World, 4 Player, FD1094 317-0187)'.
- 0.118u1: Changed description of clone 'D. D. Crew (set 1, World, 4 Player, FD1094 317-?)' to 'D. D. Crew (set 1, World, 4 Player, FD1094 317-0187)'. Fixed rom names.
- 0.99: Nicola Salmoria and Chris Hardy fixed 1-bit errors in decryption keys for D.D.Crew (set 4, FD1094 317-0190) - Game now playable.
- 0.95u2: Chack'n added clone 'D. D. Crew (set 5, Japan, 2 Player, FD1094 317-0182)'. Chris Hardy added FD1094 317-0190 key to D. D. Crew (set 4, World, 3 Player). Hangs when you select character, needs investigation. Changed description to 'D. D. Crew (set 4, World, 3 Player, FD1094 317-0190)'.
- 0.93: David Haywood fixed cpu2 rom loading.
- 0.92: Changed 'D. D. Crew (US, 4 Player, FD1094 317-0186)' to clone '(set 3, US, 4 Player, FD1094 317-0186)', '(World, 3 Player, FD1094 317-0187)' to parent 'D. D. Crew (set 4, World, 3 Player, FD1094 317-0187)', '(World, 4 Player, FD1094 317-?)' to '(set 1, World, 4 Player, FD1094 317-?)' and '(World, 2 Player, FD1094 317-0184)' to '(set 2, World, 2 Player, FD1094 317-0184)'. Renamed (ddcrew) to (ddcrewu), (ddcrewc) to (ddcrew), (ddcrewa) to (ddcrew1) and (ddcrewb) to (ddcrew2).
- 0.90u4: Andreas Thorsen and Thierry added FD1094 317-0184 key to clone D.D.Crew (World, 2 Player, FD1094 317-0184).
- 0.90u1: Big Sega update [Aaron Giles]. Note that in the process, there is now a 1-pixel column error on DDCrew's attract mode. These are known issues that I will try to address soon.
- 0.89u1: Aaron Giles fixed column scroll (attract mode scrolls properly now) and cleaned up inputs in D.D. Crew - Game now playable. Thierry Lescot added 317-unknown.key to D.D. Crew (World, 4 Player). Added dipswitches 'Credits needed', 'Switch To Start', 'Coin Chute', 'Demo Sounds', 'Player Start/Continue' and 'Difficulty'. Changed description of clone '(Europe, 4 Player, FD1094 317-?)' to '(World, 4 Player, FD1094 317-?)', '(Europe, 2 Player, FD1094 317-0184)' to '(World, 2 Player, FD1094 317-0184)' and '(Europe, 3 Player, FD1094 317-0187)' to '(World, 3 Player, FD1094 317-0187)'.
- 24th November 2004: Thierry Lescot - Dumped the cpus from D.D.Crew (Europe, 4 Player), Ryukyu and Bloxeed (system18, japan).
- 0.89: David Haywood improved inputs in DDCrew, all 4 Players can now be used, although only the service coin works.
- 0.88u7: Many improvements to Sega System 18 driver [Aaron Giles]. D.D. Crew is fully playable but requires inputs to be fixed (currently only service coin and controls for 1 player work). Fixed gfx1/2 rom loading. Changed description to 'D. D. Crew (US, 4 Player, FD1094 317-0186)' and clones '(Europe, 4 Player, 317-?)' to '(Europe, 4 Player, FD1094 317-?)', '(Europe, 2 Player, 317-0184)' to '(Europe, 2 Player, FD1094 317-0184)' and '(Europe, 3 Player, 317-0187)' to '(Europe, 3 Player, FD1094 317-0187)'.
- 0.88u3: Added new 317-0186.key.
- 0.88u2: Added FD1094 317-0186.key to 'D. D. Crew (US, 4 Player, 317-0186)'.
- 0.88u1: Fixed D. D. Crew - Game now playable [Charles MacDonald, Nicola Salmoria, David Haywood]. Incomplete sound emulation, still some serious gfx problems in places. Changed region gfx1/2 to gfx3/4.
- 28th October 2004: David Haywood - I've added some crude banking support to D.D. Crew and Clutch Hitter, improves some (but not all) gfx.
- 0.88: Charles MacDonald and Nicola Salmoria added clones D. D. Crew (Europe, 2 Player, 317-0184), (Europe, 3 Player, 317-0187) and (Europe, 4 Player, 317-?). Fixed some issues with System18 emulation. Changed description of 'DD Crew' to 'D. D. Crew (US, 4 Player, 317-0186)'.
- 30th September 2004: Charles MacDonald - Here's D.D. Crew (System 18, 317-0186) decrypted and running. This game has a custom chip on the ROM board that adds a layer of abstraction to the regular sprite and tile banking controls. It may also be used for accessing program ROM contents with data shuffled around as a form of protection. The VDP seems to be heavily used, getting that hooked up will probably make for more interesting screenshots. I think this is why the bootleg D.D. Crew board had such a poor looking title screen, because the bootleggers just left out the VDP chip rather than copy it which would be a fairly difficult task. I'd bet the bootleg version of Alien Storm has no background graphics in the first person shooting stages for the same reason, even though the VDP setup code is still present. D.D. Crew pipes nearly all of the video data through the protection chip, so the game looks terrible even though it's running correctly. It also gets the address of some tables through the chip, which come out wrong and cause problems. The protection chip is programmable and has 16 registers that are updated during V-Blank, so it's not exactly simple. I tackled this game in a completely different way compared to what was done with Tetris. Instead of putting fragments of encrypted code together, I decrypted the entire ROM in each state that the game used. The 68000 emulator was modified to keep track of the decryption state and switch decrypted ROM images as needed. If a state is ever selected that has no corresponding table, the emulator exits gracefully and tells me what to dump next. Because the game actually works, this shows that current assumptions about how the decryption state is managed are correct. The upshot of this method is that you no longer have to identify all of the executable code in a game, just the states that are used. This can be determined by running the game in an emulator in the reset state, and dumping more data each time an unknown state comes up. D.D. Crew only uses 6 or so states, so analyzing disassemblies was all that was needed. I'll try to get the graphics fixed soon. The banking/protection chip will hopefully not be a problem, I have several System 18 boards with the same part and can run tests on it.
- 18th September 2004: Charles MacDonald - Great news, I've been able to sucessfully decrypt any 16K block from D.D. Crew. It should be possible to decrypt the entire game at this point. Because D.D. Crew is so large, I'm going to work on Tetris first. The decryption state can be changed by the programmer at almost any point in the game's code, you have to trace through the code which is a tedious process. D.D. Crew changes the state a lot but only uses the same few arguments, so one solution would be to decrypt the entire ROM multiple times with different compares being used, and then patch together the correct parts. Tetris only changes the state four times in the startup code and doesn't do anything afterwards, making it a better choice to work with.
- 16th September 2004: Charles MacDonald - Today I dumped about 512MB worth of tables for D.D Crew and was able to decrypt a reasonable portion of the startup code using a much smaller subset of that data. Also, comparisons between the Tetris CPU tests and D.D. Crew CPU show all the usual similarities; the direct opcodes are the same, PC relative instructions are missing, decryption repeats every 16K, etc. No surprises which is a good thing, I'd assume all other FD1094 CPUs work in the same way. A new finding is that within a 16K block, certain addresses (no relation to each other, seems random) have the same table output. So you don't get completely unique tables for every address within a 16K block. In theory this means a smaller set of tables would be needed per block, but there doesn't seem to be any apparent way to tell which addresses will decrypt identically. The D.D. Crew decryption was done using tables from $10000-$12000. The initial PC and SP don't come out correctly, even though they should work with table data from offsets $10000-$10007. At least determining the entry point is pretty easy to do, not being able to decrypt it (so far) will not be a problem for other games.
- 18th March 2004: Charles MacDonald fixed Z80 clock (8.192 Mhz -> 8.00 MHz).
- 0.74u2: Added DD Crew (Sega 1991).
- 0.36b2: Andrew Prime added DD Crew (Testdriver).
LEVELS: 7
Other Emulators:
* FB Alpha
Recommended Games (Heroes Fighter):
Knuckle Joe
My Hero
Renegade
Trojan
Trojan (PlayChoice-10)
Avengers
Black Panther
Double Dragon
Double Dragon II
Double Dragon 3
Double Dragon (PlayChoice-10)
Double Dragon (Neo-Geo)
Ginga NinkyouDen
Kyros
Shinobi
Shinobi (Mega-Tech)
Shinobi / FZ-2006
The Revenge of Shinobi (Mega-Tech)
Shinobi III (Mega Play)
Bad Dudes vs. Dragonninja
Shadow Warriors
Vigilante
Crime Fighters
DownTown
Final Fight
Gang Wars
Last Battle (Mega-Tech)
Ninja Gaiden (PlayChoice-10)
Ninja Gaiden Episode II (PlayChoice-10)
Ninja Gaiden Episode III (PlayChoice-10)
Shadow Dancer
Shadow Dancer (Mega-Tech)
Tough Turf
The Combatribes
Crude Buster
Growl
Mug Smashers
64th. Street
Brute Force
Burning Fight
Captain Commando
D. D. Crew
Karate Blazers
Riot City
Streets of Rage (Mega-Tech)
Streets of Rage II (Mega Play)
Vendetta
B.Rap Boys
Big Fight
Guardians of the 'Hood
Legionnaire
Silent Dragon
Thunder Hoop
TH Strikes Back
Undercover Cops
Cadillacs and Dinosaurs
Denjin Makai
Knuckle Bash
Knuckle Bash 2
Ninja Baseball Batman
The Punisher
Violent Storm
Zero Team
Pretty Soldier Sailor Moon
Black Touch '96
Final Fight 2 (SNES bootleg)
Ghost Chaser Densei (SNES bootleg)
Iron (SNES bootleg)
Osman
Sonic Blast Man 2 Special Turbo
Gaia Crusaders
Vamp 1/2
Jue Zhan Tian Huang
Thunder Heroes
Demolish Fist
Romset: 7560 kb / 20 files / 2.87 zip
MAME XML Output:
   | <game name="ddcrew" sourcefile="segas18.c"> |
   |    | <description>D. D. Crew (World, 3 Players, FD1094 317-0190)</description> |
   |    | <year>1991</year> |
   |    | <manufacturer>Sega</manufacturer> |
   |    | <rom name="epr-14160.a4" size="262144" crc="b9f897b7" sha1="65cee6c8006f328eee648e144e11fa60b1433ff5" region="maincpu" offset="0"/> |
   |    | <rom name="epr-14161.a6" size="262144" crc="bb03c1f0" sha1="9e7fbd2cda448992c6cbf4b96078b57305def097" region="maincpu" offset="1"/> |
   |    | <rom name="mpr-14139.a5" size="262144" crc="06c31531" sha1="d084cb72bf83578b34e959bb60a0695faf4161f8" region="maincpu" offset="200000"/> |
   |    | <rom name="mpr-14141.a7" size="262144" crc="080a494b" sha1="64522dccbf6ed856ab80aa185454183df87d7ae9" region="maincpu" offset="200001"/> |
   |    | <rom name="317-0190.key" size="8192" crc="2d502b11" sha1="c4e94da59b0e15a5a302ebe88988d1657e7e9814" region="user1" offset="0"/> |
   |    | <rom name="epr-14127.c1" size="262144" crc="2228cd88" sha1="5774bb6a401c3da05c5f3c9d3996b20bb3713cb2" region="gfx1" offset="0"/> |
   |    | <rom name="epr-14128.c2" size="262144" crc="edba8e10" sha1="25a2833ead4ca363802ddc2eb97c40976502921a" region="gfx1" offset="40000"/> |
   |    | <rom name="epr-14129.c3" size="262144" crc="e8ecc305" sha1="a26d0c5c7826cd315f8b2c27e5a503a2a7b535c4" region="gfx1" offset="80000"/> |
   |    | <rom name="mpr-14134.c10" size="524288" crc="4fda6a4b" sha1="a9e582e494ab967e8f3ccf4d5844bb8ef889928c" region="gfx2" offset="1"/> |
   |    | <rom name="mpr-14142.a10" size="524288" crc="3cbf1f2a" sha1="80b6b006936740087786acd538e28aca85fa6894" region="gfx2" offset="0"/> |
   |    | <rom name="mpr-14135.c11" size="524288" crc="e9c74876" sha1="aff9d071e77f01c6937188bf67be38fa898343e6" region="gfx2" offset="200001"/> |
   |    | <rom name="mpr-14143.a11" size="524288" crc="59022c31" sha1="5e1409fe0f29284dc6a3ffacf69b761aae09f132" region="gfx2" offset="200000"/> |
   |    | <rom name="mpr-14136.c12" size="524288" crc="720d9858" sha1="8ebcb8b3e9555ca48b28908d47dcbbd654398b6f" region="gfx2" offset="400001"/> |
   |    | <rom name="mpr-14144.a12" size="524288" crc="7775fdd4" sha1="a03cac039b400b651a4bf2167a8f2338f488ce26" region="gfx2" offset="400000"/> |
   |    | <rom name="epr-14137.c13" size="524288" crc="846c4265" sha1="58d0c213d085fb4dee18b7aefb05087d9d522950" region="gfx2" offset="600001"/> |
   |    | <rom name="epr-14145.a13" size="524288" crc="0e76c797" sha1="9a44dc948e84e5acac36e80105c2349ee78e6cfa" region="gfx2" offset="600000"/> |
   |    | <rom name="epr-14133.c7" size="131072" crc="cff96665" sha1="b4dc7f1a03415ebebdb99a82ae89328c345e7678" region="soundcpu" offset="10000"/> |
   |    | <rom name="mpr-14132.c6" size="524288" crc="1fae0220" sha1="8414c74318ea915816c6b67801ac7c8c3fc905f9" region="soundcpu" offset="90000"/> |
   |    | <rom name="mpr-14131.c5" size="524288" crc="be5a7d0b" sha1="c2c598b0cf711273fdd568f3401375e9772c1d61" region="soundcpu" offset="110000"/> |
   |    | <rom name="epr-14130.c4" size="524288" crc="948f34a1" sha1="d4c6728d5eea06cee6ac15a34ec8cccb4cc4b982" region="soundcpu" offset="190000"/> |
   |    | <chip type="cpu" tag="maincpu" name="68000" clock="10000000"/> |
   |    | <chip type="cpu" tag="soundcpu" name="Z80" clock="8000000"/> |
   |    | <chip type="audio" tag="mono" name="Speaker"/> |
   |    | <chip type="audio" tag="ym1" name="YM3438" clock="8000000"/> |
   |    | <chip type="audio" tag="ym2" name="YM3438" clock="8000000"/> |
   |    | <chip type="audio" tag="rfsnd" name="RF5C68" clock="10000000"/> |
   |    | <display tag="screen" type="raster" rotate="0" width="320" height="224" refresh="57.230000" pixclock="5128036" htotal="342" hbend="0" hbstart="320" vtotal="262" vbend="0" vbstart="224" /> |
   |    | <sound channels="1"/> |
   |    | <input players="4" buttons="3" coins="4" service="yes"> |
   |    |    | <control type="joy" ways="8"/> |
   |    | </input> |
   |    | <dipswitch name="Coin A" tag="COINAGE" mask="15"> |
   |    |    | <dipvalue name="4 Coins/1 Credit" value="7"/> |
   |    |    | <dipvalue name="3 Coins/1 Credit" value="8"/> |
   |    |    | <dipvalue name="2 Coins/1 Credit" value="9"/> |
   |    |    | <dipvalue name="2 Coins/1 Credit, 5/3, 6/4" value="5"/> |
   |    |    | <dipvalue name="2 Coins/1 Credit, 4/3" value="4"/> |
   |    |    | <dipvalue name="1 Coin/1 Credit" value="15" default="yes"/> |
   |    |    | <dipvalue name="1 Coin/1 Credit, 5/6" value="3"/> |
   |    |    | <dipvalue name="1 Coin/1 Credit, 4/5" value="2"/> |
   |    |    | <dipvalue name="1 Coin/1 Credit, 2/3" value="1"/> |
   |    |    | <dipvalue name="2 Coins/3 Credits" value="6"/> |
   |    |    | <dipvalue name="1 Coin/2 Credits" value="14"/> |
   |    |    | <dipvalue name="1 Coin/3 Credits" value="13"/> |
   |    |    | <dipvalue name="1 Coin/4 Credits" value="12"/> |
   |    |    | <dipvalue name="1 Coin/5 Credits" value="11"/> |
   |    |    | <dipvalue name="1 Coin/6 Credits" value="10"/> |
   |    |    | <dipvalue name="Free Play (if Coin B too) or 1/1" value="0"/> |
   |    | </dipswitch> |
   |    | <dipswitch name="Coin B" tag="COINAGE" mask="240"> |
   |    |    | <dipvalue name="4 Coins/1 Credit" value="112"/> |
   |    |    | <dipvalue name="3 Coins/1 Credit" value="128"/> |
   |    |    | <dipvalue name="2 Coins/1 Credit" value="144"/> |
   |    |    | <dipvalue name="2 Coins/1 Credit, 5/3, 6/4" value="80"/> |
   |    |    | <dipvalue name="2 Coins/1 Credit, 4/3" value="64"/> |
   |    |    | <dipvalue name="1 Coin/1 Credit" value="240" default="yes"/> |
   |    |    | <dipvalue name="1 Coin/1 Credit, 5/6" value="48"/> |
   |    |    | <dipvalue name="1 Coin/1 Credit, 4/5" value="32"/> |
   |    |    | <dipvalue name="1 Coin/1 Credit, 2/3" value="16"/> |
   |    |    | <dipvalue name="2 Coins/3 Credits" value="96"/> |
   |    |    | <dipvalue name="1 Coin/2 Credits" value="224"/> |
   |    |    | <dipvalue name="1 Coin/3 Credits" value="208"/> |
   |    |    | <dipvalue name="1 Coin/4 Credits" value="192"/> |
   |    |    | <dipvalue name="1 Coin/5 Credits" value="176"/> |
   |    |    | <dipvalue name="1 Coin/6 Credits" value="160"/> |
   |    |    | <dipvalue name="Free Play (if Coin A too) or 1/1" value="0"/> |
   |    | </dipswitch> |
   |    | <dipswitch name="Credits needed" tag="DSW" mask="1"> |
   |    |    | <dipvalue name="1 to start, 1 to continue" value="1" default="yes"/> |
   |    |    | <dipvalue name="2 to start, 1 to continue" value="0"/> |
   |    | </dipswitch> |
   |    | <dipswitch name="Switch to Start" tag="DSW" mask="2"> |
   |    |    | <dipvalue name="Start" value="2" default="yes"/> |
   |    |    | <dipvalue name="Attack" value="0"/> |
   |    | </dipswitch> |
   |    | <dipswitch name="Coin Chute" tag="DSW" mask="4"> |
   |    |    | <dipvalue name="Common" value="4" default="yes"/> |
   |    |    | <dipvalue name="Individual" value="0"/> |
   |    | </dipswitch> |
   |    | <dipswitch name="Demo Sounds" tag="DSW" mask="8"> |
   |    |    | <dipvalue name="Off" value="8"/> |
   |    |    | <dipvalue name="On" value="0" default="yes"/> |
   |    | </dipswitch> |
   |    | <dipswitch name="Player Start/Continue" tag="DSW" mask="48"> |
   |    |    | <dipvalue name="3/3" value="48" default="yes"/> |
   |    |    | <dipvalue name="2/3" value="32"/> |
   |    |    | <dipvalue name="2/2" value="16"/> |
   |    |    | <dipvalue name="3/4" value="0"/> |
   |    | </dipswitch> |
   |    | <dipswitch name="Difficulty" tag="DSW" mask="192"> |
   |    |    | <dipvalue name="Easy" value="128"/> |
   |    |    | <dipvalue name="Normal" value="192" default="yes"/> |
   |    |    | <dipvalue name="Hard" value="64"/> |
   |    |    | <dipvalue name="Hardest" value="0"/> |
   |    | </dipswitch> |
   |    | <driver status="good" emulation="good" color="good" sound="good" graphic="good" savestate="unsupported" palettesize="8192"/> |
|
|