136 |
|
// Check when ntrb 17 is installed (for native Resource Manager patch) (7.6, 7.6.1, 8.0, 8.1) |
137 |
|
p[7] = htons(M68K_EMUL_OP_NTRB_17_PATCH); |
138 |
|
D(bug(" patch 3 applied\n")); |
139 |
< |
} else if (PM(0,0x3f2a) && PM(1,0x0006) && PM(2,0x3f2a) && PM(3,0x0002) && PM(4,0x61ff)) { |
139 |
> |
} else if (PM(0,0x3f2a) && PM(1,0x0006) && PM(2,0x3f2a) && PM(3,0x0002) && PM(4,0x61ff) && PM(8,0x245f)) { |
140 |
|
// Check when ntrb 17 is installed (for native Resource Manager patch) (8.5, 8.6) |
141 |
|
p[8] = htons(M68K_EMUL_OP_NTRB_17_PATCH); |
142 |
|
D(bug(" patch 4 applied\n")); |
143 |
+ |
} else if (PM(0,0x3f2a) && PM(1,0x0006) && PM(2,0x3f2a) && PM(3,0x0002) && PM(4,0x61ff) && PM(7,0x301f)) { |
144 |
+ |
// Check when ntrb 17 is installed (for native Resource Manager patch) (9.0) |
145 |
+ |
p[7] = htons(M68K_EMUL_OP_NTRB_17_PATCH4); |
146 |
+ |
p[8] = htons(ntohs(p[8]) & 0xf0ff); // bra |
147 |
+ |
D(bug(" patch 8 applied\n")); |
148 |
|
} else if (PM(0,0x0c39) && PM(1,0x0001) && PM(2,0xf800) && PM(3,0x0008) && PM(4,0x6f00)) { |
149 |
|
// Don't read from 0xf8000008 (8.5 with Zanzibar ROM, 8.6) |
150 |
|
p[0] = htons(M68K_NOP); |
184 |
|
D(bug(" patch 1 applied\n")); |
185 |
|
} |
186 |
|
|
187 |
+ |
} else if (type == FOURCC('p','t','c','h') && id == 156) { |
188 |
+ |
D(bug("ptch 156 found\n")); |
189 |
+ |
size >>= 1; |
190 |
+ |
while (size--) { |
191 |
+ |
if (PM(0,0x4e56) && PM(1,0xfffa) && PM(2,0x48e7) && PM(3,0x1f18) && PM(4,0x7800) && PM(5,0x267c) && PM(6,0x6900) && PM(7,0x0000)) { |
192 |
+ |
// Don't call FE0A opcode (9.0) |
193 |
+ |
p[0] = htons(0x7000); // moveq #0,d0 |
194 |
+ |
p[1] = htons(M68K_RTS); |
195 |
+ |
D(bug(" patch 1 applied\n")); |
196 |
+ |
break; |
197 |
+ |
} |
198 |
+ |
p++; |
199 |
+ |
} |
200 |
+ |
|
201 |
|
} else if (type == FOURCC('p','t','c','h') && id == 420) { |
202 |
|
D(bug("ptch 420 found\n")); |
203 |
|
size >>= 1; |