trunk/src/mame/drivers/model3.c
| r243096 | r243097 | |
| 1694 | 1694 | 0x2e64, 0x2a20, 0x2a2a, 0x2a2a, 0x2a2a, 0x2a2a, 0x2a2a, 0x2a2a, |
| 1695 | 1695 | }; |
| 1696 | 1696 | |
| 1697 | | static const UINT16 spikeout_prot_data[] = |
| 1698 | | { |
| 1699 | | 0x0000, |
| 1700 | | 0x4f4d, 0x4544, 0x2d4c, 0x2033, 0x7953, 0x7473, 0x6d65, 0x5020, |
| 1701 | | 0x6f72, 0x7267, 0x6d61, 0x4320, 0x706f, 0x7279, 0x6769, 0x7468, |
| 1702 | | 0x2820, 0x2943, 0x3120, 0x3939, 0x2035, 0x4553, 0x4147, 0x4520, |
| 1703 | | 0x746e, 0x7265, 0x7270, 0x7369, 0x7365, 0x4c2c, 0x4454, 0x202e, |
| 1704 | | 0x6c41, 0x206c, 0x6972, 0x6867, 0x2074, 0x6572, 0x6573, 0x7672, |
| 1705 | | 0x6465, 0x202e, 0x2020, 0x0020 |
| 1706 | | }; |
| 1707 | 1697 | |
| 1708 | | static const UINT16 eca_prot_data[] = |
| 1709 | | { |
| 1710 | | 0x0000, |
| 1711 | | 0x2d2f, 0x202d, 0x4d45, 0x5245, 0x4547, 0x434e, 0x2059, 0x4143, |
| 1712 | | 0x4c4c, 0x4120, 0x424d, 0x4c55, 0x4e41, 0x4543, 0x2d20, 0x0a2d, |
| 1713 | | 0x6f43, 0x7970, 0x6952, 0x6867, 0x2074, 0x4553, 0x4147, 0x4520, |
| 1714 | | 0x746e, 0x7265, 0x7270, 0x7369, 0x7365, 0x202c, 0x744c, 0x2e64, |
| 1715 | | 0x530a, 0x666f, 0x7774, 0x7261, 0x2065, 0x2652, 0x2044, 0x6544, |
| 1716 | | 0x7470, 0x202e, 0x3123, 0x660a, 0x726f, 0x7420, 0x7365, 0x0a74, |
| 1717 | | }; |
| 1718 | 1698 | |
| 1719 | 1699 | |
| 1720 | | |
| 1721 | | |
| 1722 | 1700 | READ64_MEMBER(model3_state::model3_security_r) |
| 1723 | 1701 | { |
| 1724 | 1702 | UINT64 retvalue = U64(0xffffffffffffffff); |
| r243096 | r243097 | |
| 1742 | 1720 | } |
| 1743 | 1721 | retvalue = data; |
| 1744 | 1722 | } |
| 1745 | | else if (core_stricmp(machine().system().name, "spikeout") == 0 || |
| 1746 | | core_stricmp(machine().system().name, "spikeofe") == 0) |
| 1747 | | { |
| 1748 | | UINT64 data = (UINT64)spikeout_prot_data[m_prot_data_ptr++] << 16; |
| 1749 | | if (m_prot_data_ptr >= 0x55) |
| 1750 | | { |
| 1751 | | m_prot_data_ptr = 0; |
| 1752 | | } |
| 1753 | | retvalue = data; |
| 1754 | | } |
| 1755 | | else if (core_stricmp(machine().system().name, "eca") == 0 || |
| 1756 | | core_stricmp(machine().system().name, "ecax") == 0) |
| 1757 | | { |
| 1758 | | UINT64 data = (UINT64)eca_prot_data[m_prot_data_ptr++] << 16; |
| 1759 | | if (m_prot_data_ptr >= 0x31) |
| 1760 | | { |
| 1761 | | m_prot_data_ptr = 0; |
| 1762 | | } |
| 1763 | | retvalue = data; |
| 1764 | | } |
| 1765 | 1723 | else |
| 1766 | 1724 | { |
| 1767 | 1725 | retvalue = 0; |
| r243096 | r243097 | |
| 5714 | 5672 | |
| 5715 | 5673 | if (key != -1) |
| 5716 | 5674 | { |
| 5717 | | // m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf01a0000, 0xf01a003f, read64_delegate(FUNC(model3_state::model3_5881prot_r), this), write64_delegate(FUNC(model3_state::model3_5881prot_w), this)); |
| 5718 | 5675 | m_cryptdevice->set_key(key); |
| 5719 | 5676 | m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf01a0000, 0xf01a003f, 0, 0x0e000000, read64_delegate(FUNC(model3_state::model3_5881prot_r), this), write64_delegate(FUNC(model3_state::model3_5881prot_w), this) ); |
| 5720 | 5677 | } |
| r243096 | r243097 | |
| 5977 | 5934 | |
| 5978 | 5935 | DRIVER_INIT_MEMBER(model3_state,daytona2) |
| 5979 | 5936 | { |
| 5980 | | UINT32 *rom = (UINT32*)memregion("user1")->base(); |
| 5937 | // UINT32 *rom = (UINT32*)memregion("user1")->base(); |
| 5981 | 5938 | DRIVER_INIT_CALL(model3_20); |
| 5982 | 5939 | |
| 5983 | 5940 | m_maincpu->space(AS_PROGRAM).install_write_handler(0xc3800000, 0xc3800007, write64_delegate(FUNC(model3_state::daytona2_rombank_w),this)); |
| 5984 | 5941 | m_maincpu->space(AS_PROGRAM).install_read_bank(0xc3000000, 0xc37fffff, "bank2" ); |
| 5985 | 5942 | |
| 5986 | 5943 | //rom[(0x68468c^4)/4] = 0x60000000; |
| 5987 | | rom[(0x6063c4^4)/4] = 0x60000000; |
| 5988 | | rom[(0x616434^4)/4] = 0x60000000; |
| 5989 | | rom[(0x69f4e4^4)/4] = 0x60000000; |
| 5944 | //rom[(0x6063c4^4)/4] = 0x60000000; |
| 5945 | //rom[(0x616434^4)/4] = 0x60000000; |
| 5946 | //rom[(0x69f4e4^4)/4] = 0x60000000; |
| 5990 | 5947 | |
| 5991 | 5948 | DRIVER_INIT_CALL(genprot); |
| 5992 | 5949 | } |
| 5993 | 5950 | |
| 5994 | 5951 | DRIVER_INIT_MEMBER(model3_state,dayto2pe) |
| 5995 | 5952 | { |
| 5996 | | UINT32 *rom = (UINT32*)memregion("user1")->base(); |
| 5953 | // UINT32 *rom = (UINT32*)memregion("user1")->base(); |
| 5997 | 5954 | DRIVER_INIT_CALL(model3_20); |
| 5998 | 5955 | |
| 5999 | 5956 | m_maincpu->space(AS_PROGRAM).install_write_handler(0xc3800000, 0xc3800007, write64_delegate(FUNC(model3_state::daytona2_rombank_w),this)); |
| 6000 | 5957 | m_maincpu->space(AS_PROGRAM).install_read_bank(0xc3000000, 0xc37fffff, "bank2" ); |
| 6001 | 5958 | |
| 6002 | | rom[(0x606784^4)/4] = 0x60000000; |
| 6003 | | rom[(0x69a3fc^4)/4] = 0x60000000; // jump to encrypted code |
| 6004 | | rom[(0x618b28^4)/4] = 0x60000000; // jump to encrypted code |
| 5959 | // rom[(0x606784^4)/4] = 0x60000000; |
| 5960 | // rom[(0x69a3fc^4)/4] = 0x60000000; // jump to encrypted code |
| 5961 | // rom[(0x618b28^4)/4] = 0x60000000; // jump to encrypted code |
| 6005 | 5962 | |
| 6006 | | rom[(0x64ca34^4)/4] = 0x60000000; // dec |
| 5963 | // rom[(0x64ca34^4)/4] = 0x60000000; // dec |
| 6007 | 5964 | |
| 6008 | 5965 | DRIVER_INIT_CALL(genprot); |
| 6009 | 5966 | } |
trunk/src/mame/drivers/naomi.c
| r243096 | r243097 | |
| 328 | 328 | House of the Dead 2 834-13636-01 21585 20 (64Mb) not present 315-6213 not present |
| 329 | 329 | Idol Janshi Suchie-Pai 3 841-0002C 21979 14 (64Mb) ? 315-6213 317-5047-JPN requires mahjong panel |
| 330 | 330 | Jambo! Safari (Rev A) 840-0013C 22826A 8 (64Mb) ? 315-6213 317-0264-COM |
| 331 | | Mars TV 840-0025C 22993 15 (64Mb) present 315-6213 317-0074-JPN |
| 331 | Mars TV 840-0025C 22993 15 (64Mb) present 315-6213 317-0274-JPN |
| 332 | 332 | OutTrigger 840-0017C 22163 19 (64Mb) ? 315-6213 317-0266-COM requires regular 837-13551 and 837-13938 rotary JVS boards, and special panel |
| 333 | 333 | Power Stone 841-0001C 21597 8 (64Mb) present 315-6213 317-5046-COM joystick + 3 buttons |
| 334 | 334 | Power Stone 2 841-0008C 23127 9 (64Mb) present 315-6213 317-5054-COM joystick + 3 buttons |
| 335 | | Puyo Puyo Da! 841-0006C 22206 20 (64Mb) ? 315-6213 ? |
| 335 | Puyo Puyo Da! 841-0006C 22206 20 (64Mb) ? 315-6213 317-5052-COM |
| 336 | 336 | Ring Out 4x4 840-0004C 21779 10 (64Mb) present 315-6213 317-0250-COM requires 2 JVS boards |
| 337 | 337 | Samba de Amigo (Rev B) 840-0020C 22966B 16 (64Mb) present 315-6213 317-0270-COM will boot but requires special controller to play it |
| 338 | 338 | Sega Marine Fishing 840-0027C 22221 10 (64Mb) ? 315-6213 not present ROM 3&4 not present. Requires 837-13844 JVS IO with all DIPSW Off and fishing controller |
| r243096 | r243097 | |
| 341 | 341 | Sega Tetris 840-0018C 22909 6 (64Mb) present 315-6213 317-0268-COM |
| 342 | 342 | Slashout 840-0041C 23341 17 (64Mb) ? 315-6213 317-0286-COM joystick + 4 buttons |
| 343 | 343 | Spawn In the Demon's Hand (Rev B) 841-0005C 22977B 10 (64Mb) ? 315-6213 317-5051-COM joystick + 4 buttons |
| 344 | | Super Major League '99 840-0012C 22059 21 (64Mb) ? 315-6213 ? |
| 344 | Super Major League '99 840-0012C 22059 21 (64Mb) ? 315-6213 317-0259-COM |
| 345 | 345 | The Typing of the Dead (Rev A) 840-0026C 23021A 20 (64Mb) present 315-6213 not present |
| 346 | 346 | Touch de UNO! / Unou Nouryoku Check Machine 840-0008C 22073 4 (64Mb) present 315-6213 317-0255-JPN requires 837-13844 JVS IO with DIPSW 5 On, ELO AccuTouch-compatible touch screen controller and special printer. |
| 347 | 347 | Toy Fighter / Waffupu 840-0011C 22035 10 (64Mb) present 315-6212 317-0257-COM joystick + 3 buttons |
| r243096 | r243097 | |
| 512 | 512 | Derby Owners Club World Edition (Rev C) 840-0088C 22336C 7 (128Mb) 315-6319A 315-6213 not present |
| 513 | 513 | 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 |
| 514 | 514 | Giga Wing 2 841-0014C 22270 5 (128Mb) 315-6319A 315-6213 317-5064-COM |
| 515 | | Mobile Suit Gundam: Federation Vs. Zeon 841-0017C 23638 10 (128Mb) 315-6319A 315-6213 ? |
| 515 | Mobile Suit Gundam: Federation Vs. Zeon 841-0017C 23638 10 (128Mb) 315-6319A 315-6213 317-5070-COM |
| 516 | 516 | Moero Justice Gakuen / Project Justice (Rev A) 841-0015C 23548A 11 (128Mb) 315-6319A 315-6213 317-5065-COM |
| 517 | 517 | MushiKing - The King Of Beetle 2K5 1ST 840-0158C 24286 7 (128Mb) 315-6319A 315-6213 not present requires 610-0669 barcode reader |
| 518 | 518 | 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) |
| r243096 | r243097 | |
| 521 | 521 | Star Horse (satellite) 840-0056C 23627 6 (128Mb)* 315-6319 315-6213 not present * +1 (64Mb), requires 837-13785 ARCNET&IO BD |
| 522 | 522 | Star Horse Progress (satellite) (Rev A) 840-0123C 24122A 7 (128Mb) 315-6319A 315-6213 not present requires 837-13785 ARCNET&IO BD |
| 523 | 523 | The King of Route 66 (Rev A) 840-0087C 23819A 10 (128Mb) 315-6319A 315-6213 not present |
| 524 | | Virtua Fighter 4 840-0080C 23785 11 (128Mb) ? ? ? |
| 524 | Virtua Fighter 4 840-0080C 23785 11 (128Mb) ? ? 317-0324-COM |
| 525 | 525 | Virtua Striker 3 840-0061C 23663 11 (128Mb) 315-6319A 315-6213 317-0310-COM |
| 526 | 526 | Virtua Striker 3 (Rev B) 840-0061C 23663B 11 (128Mb) 315-6319A 315-6213 317-0310-COM |
| 527 | 527 | Wave Runner GP 840-0064C 24059 6 (128Mb) 315-6319A 315-6213 not present |
trunk/src/mame/machine/315-5881_crypt.c
| r243096 | r243097 | |
| 130 | 130 | |
| 131 | 131 | The encryption is done by a stream cipher operating in counter mode, which use a 16-bits internal block cipher. |
| 132 | 132 | |
| 133 | | There are 2 "control bits" at the start of the decrypted stream which control the mode of operation: bit #1 set to 1 means |
| 134 | | that the stream needs to be decompressed after being decrypted. More on this later. |
| 133 | Every stream can be composed by several substreams; there are 18 header bits at the start of every substream, with |
| 134 | a 1+9+8 format; the highest bit control the mode of operation: set to 1 means that the substream needs to be decompressed |
| 135 | after being decrypted. The other two blocks (A||B) encode the length of the substream, as (A+1)*(B+1). When a |
| 136 | substream end, the header of the next one, if existing, follows inmediatly. |
| 135 | 137 | |
| 136 | 138 | The next 16-bits are part of the header (they don't belong to the plaintext), but his meaning is unclear. It has been |
| 137 | 139 | conjectured that it could stablish when to "reset" the process and start processing a new stream (based on some tests |
| r243096 | r243097 | |
| 144 | 146 | given plaintext word, and the remaining 2 to the next plaintext word. |
| 145 | 147 | |
| 146 | 148 | The underlying block cipher consists of two 4-round Feistel Networks (FN): the first one takes the counter (16 bits), |
| 147 | | the game-key (>=29 bits) and the sequence-key (16 bits) and output a middle result (16 bits) which will act as another key |
| 148 | | for the second one. The second FN will take the encrypted word (16 bits), the game-key, the sequence-key and the result |
| 149 | | from the first FN and will output the decrypted word (16 bits). |
| 149 | the game-key (>=29 bits; probably 64) and the sequence-key (16 bits) and output a middle result (16 bits) which will act |
| 150 | as another key for the second one. The second FN will take the encrypted word (16 bits), the game-key, the sequence-key |
| 151 | and the result from the first FN and will output the decrypted word (16 bits). |
| 150 | 152 | |
| 151 | 153 | Each round of the Feistel Networks use four substitution sboxes, each having 6 inputs and 2 outputs. The input is the |
| 152 | 154 | XOR of at most one bit from the previous round and at most one bit from the different keys. |
| 153 | 155 | |
| 154 | 156 | The underlying block cipher has the same structure than the one used by the CPS-2 (Capcom Play System 2) and, |
| 155 | 157 | indeed, some of the used sboxes are exactly the same and appear in the same FN/round in both systems (this is not evident, |
| 156 | | as you need to apply a bitswapping and some XORs to the input & output of the sboxes to get the same values due). However, |
| 157 | | the key scheduling used by this implementation is much weaker than the CPS-2's one. Many s-boxes inputs aren't XORed with any |
| 158 | | key bit. |
| 158 | as you need to apply a bitswapping and some XORs to the input & output of the sboxes to get the same values due). |
| 159 | 159 | |
| 160 | | Due to the small key-length, no sophisticated attacks are needed to recover the keys; a brute-force attack knowing just |
| 161 | | some (encrypted word-decrypted word) pairs suffice. However, due to the weak key scheduling, it should be noted that some |
| 162 | | related keys can produce the same output bytes for some (short) input sequences. |
| 163 | | |
| 164 | 160 | Note that this implementation considers that the counter initialization for ram decryption is 0 simply because the ram is |
| 165 | 161 | mapped to multiples of 128K. |
| 166 | 162 | |
| r243096 | r243097 | |
| 173 | 169 | as of january/2015 show small randomness and big correlations, making possible that some unseen bits could make the |
| 174 | 170 | decryption need those incomplete parts. |
| 175 | 171 | |
| 172 | SEGA apparently used his security part label (317-xxxx-yyy) as part of the key; the mapping of the current keys to the chip label |
| 173 | is given by the following function: |
| 174 | |
| 175 | void key2label(uint32_t key) |
| 176 | { |
| 177 | int bcd0 = ((BIT(key,17)<<3)|(BIT(key,7)<<2)|(BIT(key,14)<<1)|BIT(key,19))^9; |
| 178 | int bcd1 = ((BIT(key,20)<<3)|(BIT(key,1)<<2)|(BIT(key,4)<<1)|BIT(key,13))^5; |
| 179 | int bcd2 = (BIT(key,9)<<1)|BIT(key,22); |
| 180 | int bcd3 = ((BIT(key,9)<<2)|BIT(key,9))^5; |
| 181 | |
| 182 | char chiplabel[13]; |
| 183 | sprintf(chiplabel, "317-%d%d%d%d-%s", bcd3, bcd2, bcd1, bcd0, (BIT(key,5)?"JPN":"COM")); |
| 184 | |
| 185 | printf("%s", chiplabel); |
| 186 | } |
| 187 | |
| 188 | Given the use of the BCD-encoded security module labels, it's expected that at least other 6 additional bits be present in the |
| 189 | real keys but undetected in the current implementation (due to them being set to fixed values on all the known 315-5881 chip labels). |
| 190 | That would rise the bit count at least to 35. |
| 191 | |
| 192 | Other key bits not directly related to the 315-5881 label still show low entropies, making possible that |
| 193 | they be derived from other non-random sources. |
| 194 | |
| 195 | In the second Feistel Network, every key bit seem to be used at most once (the various uses of current bit #9 are fictitious, as |
| 196 | that bit really represent various bits in the real key; see comments on the use of the labels above). Given that, it seems probable |
| 197 | that the real key is 64 bits long, exactly as in the related CPS-2 scheme, and the designers tried to cover all 96 input bits with |
| 198 | the bits provening from the game key, the sequence key and the result from the first feistel network (64+16+16=96). In the first |
| 199 | Feistel Network, as only 80 bits are available, some bits would be used twice (as can be partially seen in the current implementation). |
| 200 | The fact that only 29 bits out of the expected 64 have been observed till now would be due to the generation of the key by composing |
| 201 | low-entropy sources. |
| 202 | |
| 176 | 203 | ****************************************************************************************/ |
| 177 | 204 | |
| 178 | 205 | const sega_315_5881_crypt_device::sbox sega_315_5881_crypt_device::fn1_sboxes[4][4] = { |
trunk/src/mame/machine/315-5881_helper.c
| r243096 | r243097 | |
| 39 | 39 | { "elandore", 0x05226d41 }, // 1998 317-5043-COM ST-V |
| 40 | 40 | { "ffreveng", 0x0524ac01 }, // 1998 317-5049-COM ST-V |
| 41 | 41 | |
| 42 | | { "gundmct", 0x000e8010 }, // 841-0017 2001 ??? Naomi |
| 43 | | { "puyoda", 0x000acd40 }, // 841-0006 1999 ??? Naomi |
| 44 | | { "smlg99", 0x08048a01 }, // 840-0012 1999 ??? Naomi |
| 45 | | { "vf4cart", 0x0eef2f96 }, // 840-0080 2002 ??? Naomi 2 |
| 46 | | { "vonot", 0x08010715 }, // 840-0028 2000 ??? Naomi |
| 47 | | { "marstv", 0x080b8ef5 }, // 840-0025 1999 317-0074-JPN Naomi |
| 48 | 42 | { "dybbnao", 0x080e6ae1 }, // 840-0001 1998 317-0246-JPN Naomi |
| 49 | 43 | { "crzytaxi", 0x080d2f45 }, // 840-0002 1999 317-0248-COM Naomi |
| 50 | 44 | { "zombrvn", 0x08012b41 }, // 840-0003 1999 317-0249-COM Naomi |
| r243096 | r243097 | |
| 56 | 50 | { "tduno", 0x08028ea5 }, // 840-0008 1999 317-0255-JPN Naomi |
| 57 | 51 | { "toyfight", 0x0802ca85 }, // 840-0011 1999 317-0257-COM Naomi |
| 58 | 52 | { "vs2_2k", 0x08088b08 }, // 840-0010 1999 317-0258-COM Naomi |
| 53 | { "smlg99", 0x08048a01 }, // 840-0012 1999 317-0259-COM Naomi |
| 59 | 54 | { "derbyoc", 0x080fee35 }, // 840-0016 1999 317-0262-JPN Naomi |
| 60 | 55 | { "vtennis", 0x0803eb15 }, // 840-0015 1999 317-0263-COM Naomi |
| 61 | 56 | { "jambo", 0x080fab95 }, // 840-0013 1999 317-0264-COM Naomi |
| r243096 | r243097 | |
| 72 | 67 | { "18wheelr", 0x0807cf54 }, // 840-0023 2000 317-0273-COM Naomi |
| 73 | 68 | { "18wheels", 0x0807cf54 }, // 840-0036 2000 317-0273-COM Naomi |
| 74 | 69 | { "18wheelu", 0x0807cf54 }, // 840-0037 2000 317-0273-COM Naomi |
| 70 | { "marstv", 0x080b8ef5 }, // 840-0025 1999 317-0274-JPN Naomi |
| 71 | { "vonot", 0x08010715 }, // 840-0028 2000 317-0279-COM Naomi |
| 75 | 72 | { "sstrkfgt", 0x08132303 }, // 840-0035 2000 317-0281-COM Naomi |
| 76 | 73 | { "sstrkfgta", 0x08132303 }, // 840-0035 2000 317-0281-COM Naomi |
| 77 | 74 | { "wwfroyal", 0x081627c3 }, // 840-0040 2000 317-0285-COM Naomi |
| r243096 | r243097 | |
| 91 | 88 | { "clubkrtd", 0x0ce7d742 }, // 840-0062 2001 317-0313-COM Naomi 2 |
| 92 | 89 | { "clubkrte", 0x0ce7d742 }, // 840-0062 2001 317-0313-COM Naomi 2 |
| 93 | 90 | { "inunoos", 0x094bc3e3 }, // 840-0073 2001 317-0316-JPN Naomi |
| 91 | { "vf4cart", 0x0eef2f96 }, // 840-0080 2002 317-0324-COM Naomi 2 |
| 94 | 92 | { "toukon4", 0x052e2901 }, // 25349801 2000 317-5040-COM Naomi |
| 95 | 93 | { "wldkicks", 0x052e2901 }, // 25209801 2000 317-5040-COM Naomi |
| 96 | 94 | { "wldkicksa", 0x052e2901 }, // 25209801 2000 317-5040-COM Naomi |
| r243096 | r243097 | |
| 101 | 99 | { "doa2m", 0x0008ad01 }, // 841-0003 1999 317-5048-COM Naomi |
| 102 | 100 | { "shangril", -1 }, // 841-0004 1999 317-5050-JPN Naomi seems not used by game |
| 103 | 101 | { "spawn", 0x00078d01 }, // 841-0005 1999 317-5051-COM Naomi |
| 102 | { "puyoda", 0x000acd40 }, // 841-0006 1999 317-5052-COM Naomi |
| 104 | 103 | { "pstone2", 0x000b8dc0 }, // 841-0008 2000 317-5054-COM Naomi |
| 105 | 104 | { "capsnk", 0x00000000 }, // 841-0011 2000 317-5059-COM Naomi |
| 106 | 105 | { "capsnka", 0x00000000 }, // 841-0011 2000 317-5059-COM Naomi |
| r243096 | r243097 | |
| 114 | 113 | { "ninjaslt1", 0x000ca510 }, // 25469801 2000 317-5068-COM Naomi |
| 115 | 114 | { "ninjaslt2", 0x000ca510 }, // 25469801 2000 317-5068-COM Naomi |
| 116 | 115 | { "ninjaslt4", 0x000ca510 }, // 25469801 2000 317-5068-COM Naomi |
| 116 | { "gundmct", 0x000e8010 }, // 841-0017 2001 317-5070-COM Naomi |
| 117 | 117 | { "hmgeo", 0x00038510 }, // HMG016007 2001 317-5071-COM Naomi |
| 118 | 118 | { "zerogu2", 0x0007c010 }, // 841-0020 2001 317-5073-COM Naomi |
| 119 | 119 | { "gunsur2", 0x000680d0 }, // 25709801 2001 317-5075-COM Naomi |
| r243096 | r243097 | |
| 135 | 135 | { "pltkids", -1 }, // 1998 317-5044-COM Model 2 |
| 136 | 136 | { "pltkidsa", -1 }, // 1998 317-5044-COM Model 2 |
| 137 | 137 | |
| 138 | | { "magtruck", 0x09266e45 }, // ???? ? Model 3 |
| 139 | 138 | { "von2", 0x092a0e97 }, // ???? 317-0234-COM Model 3 |
| 140 | 139 | { "von254g", 0x092a0e97 }, // ???? 317-0234-COM Model 3 |
| 141 | | { "fvipers2", -1 }, // ???? 317-0235-COM Model 3 |
| 140 | { "fvipers2", 0x09260e96 }, // ???? 317-0235-COM Model 3 |
| 142 | 141 | { "vs298", 0x09234e96 }, // ???? 317-0237-COM Model 3 |
| 143 | 142 | { "dirtdvls", 0x09290f17 }, // ???? 317-0238-COM Model 3 |
| 144 | 143 | { "dirtdvlsa", 0x09290f17 }, // ???? 317-0238-COM Model 3 |
| 145 | 144 | { "daytona2", 0x09250e16 }, // ???? 317-0239-COM Model 3 |
| 146 | | { "spikeout", -1 }, // ???? 317-0240-COM Model 3 |
| 147 | | { "spikeofe", -1 }, // ???? ?317-0240-COM? Model 3 |
| 145 | { "spikeout", 0x092f2b04 }, // ???? 317-0240-COM Model 3 |
| 148 | 146 | { "swtrilgy", 0x11272a01 }, // ???? 317-0241-COM Model 3 |
| 149 | 147 | { "swtrilgya", 0x11272a01 }, // ???? 317-0241-COM Model 3 |
| 150 | 148 | { "oceanhun", 0x092b6a01 }, // ???? 317-0242-COM Model 3 |
| 149 | { "magtruck", 0x09266e45 }, // ???? 317-0243-COM Model 3 |
| 151 | 150 | { "lamachin", 0x092a2bc5 }, // ???? 317-0244-COM Model 3 |
| 152 | 151 | { "vs299", 0x09222ac8 }, // ???? 317-0245-COM Model 3 |
| 153 | 152 | { "vs2v991", 0x09222ac8 }, // ???? 317-0245-COM Model 3 |
| 154 | 153 | { "vs299b", 0x09222ac8 }, // ???? 317-0245-COM Model 3 |
| 155 | 154 | { "vs299a", 0x09222ac8 }, // ???? 317-0245-COM Model 3 |
| 155 | { "spikeofe", 0x09236fc8 }, // ???? 317-0247-COM Model 3 |
| 156 | 156 | { "eca", 0x0923aa91 }, // ???? 317-0265-COM Model 3 |
| 157 | 157 | { "ecax", 0x0923aa91 }, // ???? 317-0265-COM Model 3 |
| 158 | 158 | { "ecap", 0x0923aa91 }, // ???? 317-0265-COM Model 3 |