summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/machine/cps2crypt.h
blob: d9033be2ed62c4b09dff719ed5e6c5715d4adf16 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
// license:BSD-3-Clause
// copyright-holders:David Haywood

// CPS2 keys

#define CRYPT_PARAMS( _key1, _key2, _lower, _upper ) \
	ROM_PARAMETER( "cryptkey1",   _key1 ) \
	ROM_PARAMETER( "cryptkey2",   _key2 ) \
	ROM_PARAMETER( "cryptlower", _lower ) \
	ROM_PARAMETER( "cryptupper", _upper )
// the watchdog opcode sequence should also be a parameter if we want to emulate that too?



// On a dead board, the only encrypted range is actually FF0000-FFFFFF.
// It doesn't start from 0, and it's the upper half of a 128kB bank.

//                                                   key1        key2        lowwer    upper          watchdog
#define CPS2_DEAD_KEY                  CRYPT_PARAMS( "ffffffff","ffffffff", "ff0000", "ffffff" )    // ffff ffff ffff

#define SSF2_WORLD_KEY                 CRYPT_PARAMS( "23456789","abcdef01", "000000", "400000" )    // 0838 0007 2000  btst    #7,$2000
#define SSF2_USA_KEY                   CRYPT_PARAMS( "12345678","9abcdef0", "000000", "400000" )    // 0838 0007 2000  btst    #7,$2000
#define SSF2_ASIA_KEY                  CRYPT_PARAMS( "3456789a","bcdef012", "000000", "400000" )    // 0838 0007 2000  btst    #7,$2000
#define SSF2_JAPAN_KEY                 CRYPT_PARAMS( "01234567","89abcdef", "000000", "400000" )    // 0838 0007 2000  btst    #7,$2000
#define SSF2_HISPANIC_KEY              CRYPT_PARAMS( "56789abc","def01234", "000000", "400000" )    // 0838 0007 2000  btst    #7,$2000

#define SSF2TB_WORLD_KEY               CRYPT_PARAMS( "89abcdef","01234567", "000000", "400000" )    // 0838 0007 2000  btst    #7,$2000
#define SSF2TB_JAPAN_KEY               CRYPT_PARAMS( "6789abcd","ef012345", "000000", "400000" )    // 0838 0007 2000  btst    #7,$2000
#define SSF2TB_HISPANIC_KEY            CRYPT_PARAMS( "bcdef012","3456789a", "000000", "400000" )    // 0838 0007 2000  btst    #7,$2000

#define DDTOD_WORLD_KEY                CRYPT_PARAMS( "4767fe08","14ca35d9", "000000", "180000" )    // 0C78 1019 4000  cmpi.w  #$1019,$4000
#define DDTOD_USA_KEY                  CRYPT_PARAMS( "eca19c3d","24736bf0", "000000", "180000" )    // 0C78 1019 4000  cmpi.w  #$1019,$4000
#define DDTOD_JAPAN_KEY                CRYPT_PARAMS( "4510e79c","f36b8a2d", "000000", "180000" )    // 0C78 1019 4000  cmpi.w  #$1019,$4000
#define DDTOD_ASIA_KEY                 CRYPT_PARAMS( "decac105","19710411", "000000", "180000" )    // 0C78 1019 4000  cmpi.w  #$1019,$4000
#define DDTOD_HISPANIC_KEY             CRYPT_PARAMS( "19691019","e825dde0", "000000", "180000" )    // 0C78 1019 4000  cmpi.w  #$1019,$4000

#define ECOFGHTR_WORLD_KEY             CRYPT_PARAMS( "931031dc","ba987654", "000000", "200000" )    // 0838 0003 7345  btst    #3,$7345
#define ECOFGHTR_USA_KEY               CRYPT_PARAMS( "931031ed","cba98765", "000000", "200000" )    // 0838 0003 7345  btst    #3,$7345
#define ECOFGHTR_JAPAN_KEY             CRYPT_PARAMS( "931031fe","dcba9876", "000000", "200000" )    // 0838 0003 7345  btst    #3,$7345
#define ECOFGHTR_ASIA_KEY              CRYPT_PARAMS( "931031ba","98765432", "000000", "200000" )    // 0838 0003 7345  btst    #3,$7345
#define ECOFGHTR_HISPANIC_KEY          CRYPT_PARAMS( "931031cb","a9876543", "000000", "200000" )    // 0838 0003 7345  btst    #3,$7345

#define SSF2T_WORLD_KEY                CRYPT_PARAMS( "944e8302","56d3143c", "000000", "400000" )    // 0838 0007 2000  btst    #7,$2000
#define SSF2T_ASIA_KEY                 CRYPT_PARAMS( "94c4d002","664a1471", "000000", "400000" )    // 0838 0007 2000  btst    #7,$2000
#define SSF2T_USA_KEY                  CRYPT_PARAMS( "94fa8902","4c77143f", "000000", "400000" )    // 0838 0007 2000  btst    #7,$2000
#define SSF2T_JAPAN_KEY                CRYPT_PARAMS( "942a5702","05ac140e", "000000", "400000" )    // 0838 0007 2000  btst    #7,$2000
#define SSF2T_JAPAN_RENTAL_KEY         CRYPT_PARAMS( "943c2b02","7acd1422", "000000", "400000" )    // 0838 0007 2000  btst    #7,$2000 // curious, not the usual Japan key on the rent version

#define XMCOTA_WORLD_KEY               CRYPT_PARAMS( "3bc6eda4","97f80251", "000000", "100000" )    // 0C80 1972 0301  cmpi.l  #$19720301,D0
#define XMCOTA_USA_KEY                 CRYPT_PARAMS( "32a57ecd","98016f4b", "000000", "100000" )    // 0C80 1972 0301  cmpi.l  #$19720301,D0
#define XMCOTA_HISPANIC_KEY            CRYPT_PARAMS( "f5e8dc34","a096b217", "000000", "100000" )    // 0C80 1972 0301  cmpi.l  #$19720301,D0
#define XMCOTA_JAPAN_KEY               CRYPT_PARAMS( "46027315","af8bcd9e", "000000", "100000" )    // 0C80 1972 0301  cmpi.l  #$19720301,D0
#define XMCOTA_ASIA_KEY                CRYPT_PARAMS( "0795a4e2","db3f861c", "000000", "100000" )    // 0C80 1972 0301  cmpi.l  #$19720301,D0

#define ARMWAR_WORLD_KEY               CRYPT_PARAMS( "9e9d4c0b","8a39081f", "000000", "100000" )    // 3039 0080 4020  move.w  $00804020,D0
#define ARMWAR_USA_KEY                 CRYPT_PARAMS( "d4c0b8a3","9081f9e9", "000000", "100000" )    // 3039 0080 4020  move.w  $00804020,D0
#define ARMWAR_JAPAN_KEY               CRYPT_PARAMS( "9d4c0b8a","39081f9e", "000000", "100000" )    // 3039 0080 4020  move.w  $00804020,D0
#define ARMWAR_ASIA_KEY                CRYPT_PARAMS( "1f9e9d4c","0b8a3908", "000000", "100000" )    // 3039 0080 4020  move.w  $00804020,D0

#define AVSP_WORLD_KEY                 CRYPT_PARAMS( "15208f79","4ade6cb3", "000000", "100000" )    // 0C80 1234 5678  cmpi.l  #$12345678,D0
#define AVSP_USA_KEY                   CRYPT_PARAMS( "b4f61089","ccf75a23", "000000", "100000" )    // 0C80 1234 5678  cmpi.l  #$12345678,D0
#define AVSP_JAPAN_KEY                 CRYPT_PARAMS( "e9dcb8fa","51372064", "000000", "100000" )    // 0C80 1234 5678  cmpi.l  #$12345678,D0
#define AVSP_ASIA_KEY                  CRYPT_PARAMS( "c168f3bd","2e4a5970", "000000", "100000" )    // 0C80 1234 5678  cmpi.l  #$12345678,D0
#define AVSP_HISPANIC_KEY              CRYPT_PARAMS( "712b690a","43cd8e5f", "000000", "100000" )    // 0C80 1234 5678  cmpi.l  #$12345678,D0

#define DSTLK_WORLD_KEY                CRYPT_PARAMS( "13d8a7a8","0008b090", "000000", "100000" )    // 0838 0000 6160  btst    #0,$6160
#define DSTLK_USA_KEY                  CRYPT_PARAMS( "1e80ebf0","10227119", "000000", "100000" )    // 0838 0000 6160  btst    #0,$6160
#define DSTLK_ASIA_KEY                 CRYPT_PARAMS( "205d8398","06221971", "000000", "100000" )    // 0838 0000 6160  btst    #0,$6160
#define DSTLK_HISPANIC_KEY             CRYPT_PARAMS( "22463efe","011169aa", "000000", "100000" )    // 0838 0000 6160  btst    #0,$6160
#define DSTLK_JAPAN_KEY                CRYPT_PARAMS( "efcb0804","026819ae", "000000", "100000" )    // 0838 0000 6160  btst    #0,$6160

#define RINGDEST_WORLD_KEY             CRYPT_PARAMS( "19940727","17444903", "000000", "180000" )    // 3039 0080 4020  move.w  $00804020,D0
#define RINGDEST_JAPAN_KEY             CRYPT_PARAMS( "19940209","17031403", "000000", "180000" )    // 3039 0080 4020  move.w  $00804020,D0
#define RINGDEST_ASIA_KEY              CRYPT_PARAMS( "19940727","17452103", "000000", "180000" )    // 3039 0080 4020  move.w  $00804020,D0

#define CYBOTS_WORLD_KEY               CRYPT_PARAMS( "45425943","05090901", "000000", "100000" )    // 0C38 00FF 0C38  cmpi.b  #$FF,$0C38
#define CYBOTS_USA_KEY                 CRYPT_PARAMS( "43050909","01554259", "000000", "100000" )    // 0C38 00FF 0C38  cmpi.b  #$FF,$0C38
#define CYBOTS_JAPAN_KEY               CRYPT_PARAMS( "05090901","4a425943", "000000", "100000" )    // 0C38 00FF 0C38  cmpi.b  #$FF,$0C38

#define MSH_WORLD_KEY                  CRYPT_PARAMS( "1a11ee26","e7955d17", "000000", "100000" )    // 0C81 1966 0419  cmpi.l  #$19660419,D1
#define MSH_USA_KEY                    CRYPT_PARAMS( "8705a24e","4a17319b", "000000", "100000" )    // 0C81 1966 0419  cmpi.l  #$19660419,D1
#define MSH_JAPAN_KEY                  CRYPT_PARAMS( "05e88219","31ad2142", "000000", "100000" )    // 0C81 1966 0419  cmpi.l  #$19660419,D1
#define MSH_ASIA_KEY                   CRYPT_PARAMS( "457aeb01","3897c53d", "000000", "100000" )    // 0C81 1966 0419  cmpi.l  #$19660419,D1
#define MSH_HISPANIC_KEY               CRYPT_PARAMS( "fc4c5a50","b59cc190", "000000", "100000" )    // 0C81 1966 0419  cmpi.l  #$19660419,D1
#define MSH_BRAZIL_KEY                 CRYPT_PARAMS( "7a152416","ad27f8e6", "000000", "100000" )    // 0C81 1966 0419  cmpi.l  #$19660419,D1

#define NWARR_WORLD_KEY                CRYPT_PARAMS( "1019d145","03f05a05", "000000", "180000" )    // 0838 0000 6160  btst    #0,$6160
#define NWARR_USA_KEY                  CRYPT_PARAMS( "104a7d0c","3f1b7a1e", "000000", "180000" )    // 0838 0000 6160  btst    #0,$6160
#define NWARR_HISPANIC_KEY             CRYPT_PARAMS( "c4961b01","2a946020", "000000", "180000" )    // 0838 0000 6160  btst    #0,$6160
#define NWARR_BRAZIL_KEY               CRYPT_PARAMS( "17c67109","b7362a20", "000000", "180000" )    // 0838 0000 6160  btst    #0,$6160
#define NWARR_ASIA_KEY                 CRYPT_PARAMS( "4e940d0c","39b861a4", "000000", "180000" )    // 0838 0000 6160  btst    #0,$6160
#define NWARR_JAPAN_KEY                CRYPT_PARAMS( "1135b2c3","a4e9d7f2", "000000", "180000" )    // 0838 0000 6160  btst    #0,$6160

#define SFA_WORLD_KEY                  CRYPT_PARAMS( "0f895d6e","c4273a1b", "000000", "080000" )    // 0C80 0564 2194  cmpi.l  #$05642194,D0
#define SFA_USA_KEY                    CRYPT_PARAMS( "25bead36","97cf4018", "000000", "080000" )    // 0C80 0564 2194  cmpi.l  #$05642194,D0
#define SFA_ASIA_KEY                   CRYPT_PARAMS( "e43dc508","621b9a7f", "000000", "080000" )    // 0C80 0564 2194  cmpi.l  #$05642194,D0
#define SFA_JAPAN_KEY                  CRYPT_PARAMS( "8db3167a","c29e0f45", "000000", "080000" )    // 0C80 0564 2194  cmpi.l  #$05642194,D0
#define SFA_HISPANIC_KEY               CRYPT_PARAMS( "876b0e39","5ca24fd1", "000000", "080000" )    // 0C80 0564 2194  cmpi.l  #$05642194,D0
#define SFA_BRAZIL_KEY                 CRYPT_PARAMS( "ef415bd3","7a92c680", "000000", "080000" )    // 0C80 0564 2194  cmpi.l  #$05642194,D0

#define MMANCP2_USA_KEY                CRYPT_PARAMS( "054893fa","94642525", "000000", "100000" )    // 0C80 0564 2194  cmpi.l  #$05642194,D0
#define MMANCP2_JAPAN_KEY              CRYPT_PARAMS( "07215501","37fa32d0", "000000", "100000" )    // 0C80 0564 2194  cmpi.l  #$05642194,D0

#define _19XX_USA_KEY                  CRYPT_PARAMS( "0e07181f","5fd0f080", "000000", "200000" )    // 0C81 0095 1101  cmpi.l  #$00951101,D1
#define _19XX_ASIA_KEY                 CRYPT_PARAMS( "cce74cf5","b7da3711", "000000", "200000" )    // 0C81 0095 1101  cmpi.l  #$00951101,D1
#define _19XX_JAPAN_KEY                CRYPT_PARAMS( "00115df8","000ff87e", "000000", "200000" )    // 0C81 0095 1101  cmpi.l  #$00951101,D1
#define _19XX_HISPANIC_KEY             CRYPT_PARAMS( "5d49bafa","f7216c9f", "000000", "200000" )    // 0C81 0095 1101  cmpi.l  #$00951101,D1
#define _19XX_BRAZIL_KEY               CRYPT_PARAMS( "e5f9476a","2dfb623f", "000000", "200000" )    // 0C81 0095 1101  cmpi.l  #$00951101,D1

#define DDSOM_WORLD_KEY                CRYPT_PARAMS( "87889abc","d81f5f63", "000000", "100000" )    // 0C81 1966 0419  cmpi.l  #$19660419,D1
#define DDSOM_USA_KEY                  CRYPT_PARAMS( "489f0526","1bcd3e7a", "000000", "100000" )    // 0C81 1966 0419  cmpi.l  #$19660419,D1
#define DDSOM_JAPAN_KEY                CRYPT_PARAMS( "ae92fa94","315a9045", "000000", "100000" )    // 0C81 1966 0419  cmpi.l  #$19660419,D1
#define DDSOM_ASIA_KEY                 CRYPT_PARAMS( "8719abcd","ef028345", "000000", "100000" )    // 0C81 1966 0419  cmpi.l  #$19660419,D1
#define DDSOM_HISPANIC_KEY             CRYPT_PARAMS( "42134245","120de607", "000000", "100000" )    // 0C81 1966 0419  cmpi.l  #$19660419,D1
#define DDSOM_BRAZIL_KEY               CRYPT_PARAMS( "7149a782","f3a5bfce", "000000", "100000" )    // 0C81 1966 0419  cmpi.l  #$19660419,D1

#define MEGAMAN2_USA_KEY               CRYPT_PARAMS( "50501cac","ed346550", "000000", "100000" )    // 0C80 0164 7101  cmpi.l  #$01647101,D0
#define MEGAMAN2_ASIA_KEY              CRYPT_PARAMS( "3f148a2b","d6790a15", "000000", "100000" )    // 0C80 0164 7101  cmpi.l  #$01647101,D0
#define MEGAMAN2_JAPAN_KEY             CRYPT_PARAMS( "319eca73","10551270", "000000", "100000" )    // 0C80 0164 7101  cmpi.l  #$01647101,D0
#define MEGAMAN2_HISPANIC_KEY          CRYPT_PARAMS( "765573ca","250210d0", "000000", "100000" )    // 0C80 0164 7101  cmpi.l  #$01647101,D0

#define QNDREAM_JAPAN_KEY              CRYPT_PARAMS( "5804ea73","f66b0798", "000000", "080000" )    // 0C81 1973 0827  cmpi.l  #$19730827,D1

#define SFA2_WORLD_KEY                 CRYPT_PARAMS( "fc4acf9c","3bfbe1f9", "000000", "100000" )    // 0C80 3039 9783  cmpi.l  #$30399783,D0
#define SFA2_USA_KEY                   CRYPT_PARAMS( "1bbf3d96","8af4614a", "000000", "100000" )    // 0C80 3039 9783  cmpi.l  #$30399783,D0
#define SFA2_JAPAN_KEY                 CRYPT_PARAMS( "83f47e99","da772111", "000000", "100000" )    // 0C80 3039 9783  cmpi.l  #$30399783,D0
#define SFA2_ASIA_KEY                  CRYPT_PARAMS( "afc2e8f4","43789487", "000000", "100000" )    // 0C80 3039 9783  cmpi.l  #$30399783,D0
#define SFA2_BRAZIL_KEY                CRYPT_PARAMS( "ac134599","61f8bb2e", "000000", "100000" )    // 0C80 3039 9783  cmpi.l  #$30399783,D0
#define SFA2_HISPANIC_KEY              CRYPT_PARAMS( "f98a2d42","597b089f", "000000", "100000" )    // 0C80 3039 9783  cmpi.l  #$30399783,D0
#define SFA2_OCEANIA_KEY               CRYPT_PARAMS( "e32bf89c","a57b46dc", "000000", "100000" )    // 0C80 3039 9783  cmpi.l  #$30399783,D0

#define SFZ2AL_ASIA_KEY                CRYPT_PARAMS( "f172c0d0","040621a6", "000000", "100000" )    // 0C80 8E73 9110  cmpi.l  #$8E739110,D0
#define SFZ2AL_JAPAN_KEY               CRYPT_PARAMS( "99450c88","a00a2c4d", "000000", "100000" )    // 0C80 8E73 9110  cmpi.l  #$8E739110,D0
#define SFZ2AL_HISPANIC_KEY            CRYPT_PARAMS( "95f15b7c","200c08c6", "000000", "100000" )    // 0C80 8E73 9110  cmpi.l  #$8E739110,D0
#define SFZ2AL_BRAZIL_KEY              CRYPT_PARAMS( "73cd4a28","ff83af1c", "000000", "100000" )    // 0C80 8E73 9110  cmpi.l  #$8E739110,D0

#define SPF2T_WORLD_KEY                CRYPT_PARAMS( "dde26f09","55821ee7", "000000", "040000" )    // 0C80 3039 9819  cmpi.l  #$30399819,D0
#define SPF2T_USA_KEY                  CRYPT_PARAMS( "706a8750","7d0fc185", "000000", "040000" )    // 0C80 3039 9819  cmpi.l  #$30399819,D0
#define SPF2T_JAPAN_KEY                CRYPT_PARAMS( "b12c835a","e90976ff", "000000", "040000" )    // 0C80 3039 9819  cmpi.l  #$30399819,D0
#define SPF2T_ASIA_KEY                 CRYPT_PARAMS( "9c48e1ab","d60f34fb", "000000", "040000" )    // 0C80 3039 9819  cmpi.l  #$30399819,D0
#define SPF2T_HISPANIC_KEY             CRYPT_PARAMS( "51ed8cab","228f85b6", "000000", "040000" )    // 0C80 3039 9819  cmpi.l  #$30399819,D0

#define XMVSSF_WORLD_KEY               CRYPT_PARAMS( "bdcf8519","3fb2acea", "000000", "100000" )    // 0C81 1972 0327  cmpi.l  #$19720327,D1
#define XMVSSF_USA_KEY                 CRYPT_PARAMS( "4fcb03d2","f8653bc1", "000000", "100000" )    // 0C81 1972 0327  cmpi.l  #$19720327,D1
#define XMVSSF_JAPAN_KEY               CRYPT_PARAMS( "38df93bc","210373ac", "000000", "100000" )    // 0C81 1972 0327  cmpi.l  #$19720327,D1
#define XMVSSF_ASIA_KEY                CRYPT_PARAMS( "7438fc3e","19abed90", "000000", "100000" )    // 0C81 1972 0327  cmpi.l  #$19720327,D1
#define XMVSSF_HISPANIC_KEY            CRYPT_PARAMS( "835fb2d0","42fa9137", "000000", "100000" )    // 0C81 1972 0327  cmpi.l  #$19720327,D1
#define XMVSSF_BRAZIL_KEY              CRYPT_PARAMS( "8ead9e4a","b02184f0", "000000", "100000" )    // 0C81 1972 0327  cmpi.l  #$19720327,D1

#define BATCIR_WORLD_KEY               CRYPT_PARAMS( "d195e597","3cbce2b5", "000000", "200000" )    // 0C81 0097 0131  cmpi.l  #$00970131,D1
#define BATCIR_ASIA_KEY                CRYPT_PARAMS( "1e5d80cb","98882ec7", "000000", "200000" )    // 0C81 0097 0131  cmpi.l  #$00970131,D1
#define BATCIR_JAPAN_KEY               CRYPT_PARAMS( "00ff4dd8","000008e8", "000000", "200000" )    // 0C81 0097 0131  cmpi.l  #$00970131,D1

#define CSCLUB_WORLD_KEY               CRYPT_PARAMS( "662e9fa0","4210e7c1", "000000", "200000" )    // 0C81 0097 0310  cmpi.l  #$00970310,D1
#define CSCLUB_ASIA_KEY                CRYPT_PARAMS( "1366de2a","9ab42937", "000000", "200000" )    // 0C81 0097 0310  cmpi.l  #$00970310,D1
#define CSCLUB_JAPAN_KEY               CRYPT_PARAMS( "4a2d0be5","56c013c0", "000000", "200000" )    // 0C81 0097 0310  cmpi.l  #$00970310,D1
#define CSCLUB_HISPANIC_KEY            CRYPT_PARAMS( "f014a8a7","2e7794d0", "000000", "200000" )    // 0C81 0097 0310  cmpi.l  #$00970310,D1

#define MSHVSSF_WORLD_KEY              CRYPT_PARAMS( "1384ae60","9cd725bf", "000000", "100000" )    // 0C81 1972 1027  cmpi.l  #$19721027,D1
#define MSHVSSF_USA_KEY                CRYPT_PARAMS( "a36d4971","cef51b28", "000000", "100000" )    // 0C81 1972 1027  cmpi.l  #$19721027,D1
#define MSHVSSF_JAPAN_KEY              CRYPT_PARAMS( "5dc391f8","a627e0b4", "000000", "100000" )    // 0C81 1972 1027  cmpi.l  #$19721027,D1
#define MSHVSSF_HISPANIC_KEY           CRYPT_PARAMS( "7e916fc4","03ab852d", "000000", "100000" )    // 0C81 1972 1027  cmpi.l  #$19721027,D1
#define MSHVSSF_ASIA_KEY               CRYPT_PARAMS( "52e3fa61","0c497bd8", "000000", "100000" )    // 0C81 1972 1027  cmpi.l  #$19721027,D1
#define MSHVSSF_BRAZIL_KEY             CRYPT_PARAMS( "da68c749","5bf3e201", "000000", "100000" )    // 0C81 1972 1027  cmpi.l  #$19721027,D1

#define SGEMF_USA_KEY                  CRYPT_PARAMS( "84234976","5e0fbb7e", "000000", "080000" )    // 0C80 1F74 0D12  cmpi.l  #$1F740D12,D0
#define SGEMF_JAPAN_KEY                CRYPT_PARAMS( "97d2ebc0","308f94d7", "000000", "080000" )    // 0C80 1F74 0D12  cmpi.l  #$1F740D12,D0
#define SGEMF_ASIA_KEY                 CRYPT_PARAMS( "090b412a","c47ee993", "000000", "080000" )    // 0C80 1F74 0D12  cmpi.l  #$1F740D12,D0
#define SGEMF_HISPANIC_KEY             CRYPT_PARAMS( "8163a71b","7c8fd224", "000000", "080000" )    // 0C80 1F74 0D12  cmpi.l  #$1F740D12,D0

#define VHUNT2_JAPAN_KEY               CRYPT_PARAMS( "36c1eba3","26b10f18", "000000", "100000" )    // 0C80 0692 0760  cmpi.l  #$06920760,D0

#define VSAV_WORLD_KEY                 CRYPT_PARAMS( "e0cd5881","71babb70", "000000", "100000" )    // 0C80 726A 4BAF  cmpi.l  #$726A4BAF,D0
#define VSAV_USA_KEY                   CRYPT_PARAMS( "a62ea0ee","573e03e6", "000000", "100000" )    // 0C80 726A 4BAF  cmpi.l  #$726A4BAF,D0
#define VSAV_JAPAN_KEY                 CRYPT_PARAMS( "fa8f4e33","a4b881b9", "000000", "100000" )    // 0C80 726A 4BAF  cmpi.l  #$726A4BAF,D0
#define VSAV_ASIA_KEY                  CRYPT_PARAMS( "47ee9930","90b412ac", "000000", "100000" )    // 0C80 726A 4BAF  cmpi.l  #$726A4BAF,D0
#define VSAV_HISPANIC_KEY              CRYPT_PARAMS( "b2d37c8d","d3b7aadd", "000000", "100000" )    // 0C80 726A 4BAF  cmpi.l  #$726A4BAF,D0

#define VSAV2_JAPAN_KEY                CRYPT_PARAMS( "d681e4f4","60371edf", "000000", "100000" )    // 0C80 0692 0760  cmpi.l  #$06920760,D0

#define MVSC_WORLD_KEY                 CRYPT_PARAMS( "48025ade","1c697b27", "000000", "100000" )    // 0C81 1972 0121  cmpi.l  #$19720121,D1
#define MVSC_USA_KEY                   CRYPT_PARAMS( "692dc41b","7ef1c805", "000000", "100000" )    // 0C81 1972 0121  cmpi.l  #$19720121,D1
#define MVSC_JAPAN_KEY                 CRYPT_PARAMS( "afc16138","97123eb0", "000000", "100000" )    // 0C81 1972 0121  cmpi.l  #$19720121,D1
#define MVSC_ASIA_KEY                  CRYPT_PARAMS( "f248aec6","7905cd17", "000000", "100000" )    // 0C81 1972 0121  cmpi.l  #$19720121,D1
#define MVSC_HISPANIC_KEY              CRYPT_PARAMS( "9d5c7a23","e56b18ef", "000000", "100000" )    // 0C81 1972 0121  cmpi.l  #$19720121,D1
#define MVSC_BRAZIL_KEY                CRYPT_PARAMS( "0874d6eb","51c2b798", "000000", "100000" )    // 0C81 1972 0121  cmpi.l  #$19720121,D1

#define SFA3_WORLD_KEY                 CRYPT_PARAMS( "6abfc8e0","2780ddc1", "000000", "100000" )    // 0C80 1C62 F5A8  cmpi.l  #$1C62F5A8,D0
#define SFA3_USA_KEY                   CRYPT_PARAMS( "e7bbf0e5","67943248", "000000", "100000" )    // 0C80 1C62 F5A8  cmpi.l  #$1C62F5A8,D0
#define SFA3_HISPANIC_KEY              CRYPT_PARAMS( "8422df8c","7b17a361", "000000", "100000" )    // 0C80 1C62 F5A8  cmpi.l  #$1C62F5A8,D0
#define SFA3_BRAZIL_KEY                CRYPT_PARAMS( "d421c0b2","8116d296", "000000", "100000" )    // 0C80 1C62 F5A8  cmpi.l  #$1C62F5A8,D0
#define SFA3_JAPAN_KEY                 CRYPT_PARAMS( "7d49f803","0cbe2d79", "000000", "100000" )    // 0C80 1C62 F5A8  cmpi.l  #$1C62F5A8,D0
#define SFA3_ASIA_KEY                  CRYPT_PARAMS( "990b9301","a4e42c7e", "000000", "100000" )    // 0C80 1C62 F5A8  cmpi.l  #$1C62F5A8,D0

#define JYANGOKU_JAPAN_KEY             CRYPT_PARAMS( "6ca42ae6","92f63f59", "000000", "400000" )    // 0C80 3652 1573  cmpi.l  #$36521573,D0 // range unknown

#define HSF2_USA_KEY                   CRYPT_PARAMS( "5a369ddd","fea3189c", "000000", "100000" )    // 0838 0007 2000  btst    #7,$2000
#define HSF2_ASIA_KEY                  CRYPT_PARAMS( "b8ed3630","aae30a3d", "000000", "100000" )    // 0838 0007 2000  btst    #7,$2000
#define HSF2_JAPAN_KEY                 CRYPT_PARAMS( "65d82fe0","dbb83e47", "000000", "100000" )    // 0838 0007 2000  btst    #7,$2000

#define GIGAWING_USA_KEY               CRYPT_PARAMS( "e52de290","1b60d780", "000000", "100000" )    // 0C81 1972 1027  cmpi.l  #$19721027,D1
#define GIGAWING_JAPAN_KEY             CRYPT_PARAMS( "1126196a","bef50895", "000000", "100000" )    // 0C81 1972 1027  cmpi.l  #$19721027,D1
#define GIGAWING_ASIA_KEY              CRYPT_PARAMS( "3506a85a","66b1b768", "000000", "100000" )    // 0C81 1972 1027  cmpi.l  #$19721027,D1
#define GIGAWING_HISPANIC_KEY          CRYPT_PARAMS( "cea74211","400da385", "000000", "100000" )    // 0C81 1972 1027  cmpi.l  #$19721027,D1
#define GIGAWING_BRAZIL_KEY            CRYPT_PARAMS( "0fe745b0","96ef7f9d", "000000", "100000" )    // 0C81 1972 1027  cmpi.l  #$19721027,D1

#define MMATRIX_USA_KEY                CRYPT_PARAMS( "ac9ebd79","410467df", "000000", "180000" )    // B6C0 B447 BACF  cmpa.w  D0,A3   cmp.w   D7,D2   cmpa.w  A7,A5
#define MMATRIX_JAPAN_KEY              CRYPT_PARAMS( "4df81e95","72ed9823", "000000", "180000" )    // B6C0 B447 BACF  cmpa.w  D0,A3   cmp.w   D7,D2   cmpa.w  A7,A5

#define MPANG_ALLREGIONS_KEY           CRYPT_PARAMS( "95f741c6","e547a21b", "000000", "100000" )    // 0C84 347D 89A3  cmpi.l  #$347D89A3,D4

#define PZLOOP2_ALLREGIONS_KEY         CRYPT_PARAMS( "a054f812","c40d36b4", "000000", "400000" )    // 0C82 9A73 15F1  cmpi.l  #$9A7315F1,D2

#define CHOKO_JAPAN_KEY                CRYPT_PARAMS( "d3fb12c6","7f8e17b5", "000000", "400000" )    // 0C86 4D17 5B3C  cmpi.l  #$4D175B3C,D6

#define DIMAHOO_WORLD_KEY              CRYPT_PARAMS( "0ddb8e40","2817fd2b", "000000", "080000" )    // BE4C B244 B6C5  cmp.w   A4,D7   cmp.w   D4,D1   cmpa.w  D5,A3
#define DIMAHOO_USA_KEY                CRYPT_PARAMS( "6575af59","b0fea691", "000000", "080000" )    // BE4C B244 B6C5  cmp.w   A4,D7   cmp.w   D4,D1   cmpa.w  D5,A3
#define DIMAHOO_JAPAN_KEY              CRYPT_PARAMS( "97f7be58","6121eb62", "000000", "080000" )    // BE4C B244 B6C5  cmp.w   A4,D7   cmp.w   D4,D1   cmpa.w  D5,A3

#define _1944_USA_KEY                  CRYPT_PARAMS( "1d3e724c","8b59fc7a", "000000", "080000" )    // 0C86 7B5D 94F1  cmpi.l  #$7B5D94F1,D6
#define _1944_JAPAN_KEY                CRYPT_PARAMS( "23d79c3a","e18b2746", "000000", "080000" )    // 0C86 7B5D 94F1  cmpi.l  #$7B5D94F1,D6

#define PROGEAR_USA_KEY                CRYPT_PARAMS( "639ad8c6","ef130df3", "000000", "400000" )    // 0C81 63A1 B8D3  cmpi.l  #$63A1B8D3,D1
#define PROGEAR_JAPAN_KEY              CRYPT_PARAMS( "9f7edc56","39fb47be", "000000", "400000" )    // 0C81 63A1 B8D3  cmpi.l  #$63A1B8D3,D1
#define PROGEAR_ASIA_KEY               CRYPT_PARAMS( "658ab128","fddc9b5e", "000000", "400000" )    // 0C81 63A1 B8D3  cmpi.l  #$63A1B8D3,D1