1 |
|
/* |
2 |
|
* rsrc_patches.cpp - Resource patches |
3 |
|
* |
4 |
< |
* SheepShaver (C) 1997-2005 Christian Bauer and Marc Hellwig |
4 |
> |
* SheepShaver (C) 1997-2008 Christian Bauer and Marc Hellwig |
5 |
|
* |
6 |
|
* This program is free software; you can redistribute it and/or modify |
7 |
|
* it under the terms of the GNU General Public License as published by |
355 |
|
// Don't call FE0A opcode (7.6, 7.6.1, 8.0, 8.1, 8.5, 8.6, 9.0) |
356 |
|
p[1] = htons(0x2008); // move.l a0,d0 |
357 |
|
D(bug(" patch 3 applied\n")); |
358 |
+ |
} else if (PM(0,0x6c00) && PM(1,0x016a) && PM(2,0x2278) && PM(3,0x0134)) { |
359 |
+ |
// We don't have SonyVars (8.6) |
360 |
+ |
p[-4] = htons(0x21fc); // move.l $40810000,($0000) |
361 |
+ |
p[-3] = htons(0x4081); |
362 |
+ |
p[-2] = htons(0x0000); |
363 |
+ |
p[-1] = htons(0x0000); |
364 |
+ |
p[0] = htons(0x6000); |
365 |
+ |
D(bug(" patch 4 applied\n")); |
366 |
|
} |
367 |
|
p++; |
368 |
|
} |
587 |
|
p[(base + 0x1a) >> 1] = htons(0x6064); |
588 |
|
D(bug(" patch1 applied\n")); |
589 |
|
} |
590 |
+ |
|
591 |
+ |
} else if (type == FOURCC('i','n','f','n') && (id == 129 || id == 200)) { |
592 |
+ |
D(bug("infn %d found\n", id)); |
593 |
+ |
size >>= 1; |
594 |
+ |
while (size--) { |
595 |
+ |
if (PM(0,0x203c) && PM(1,0xf800) && PM(2,0x0000) && PM(4,0x2040) && PM(5,0x1028) && PM(6,0x0090)) { |
596 |
+ |
// Don't read from 0xf8000090 during MacOS (8.5, 9.0) installation |
597 |
+ |
p[0] = htons(M68K_NOP); |
598 |
+ |
p[1] = htons(M68K_NOP); |
599 |
+ |
p[2] = htons(M68K_NOP); |
600 |
+ |
p[3] = htons(M68K_NOP); |
601 |
+ |
p[4] = htons(M68K_NOP); |
602 |
+ |
p[5] = htons(M68K_NOP); |
603 |
+ |
p[6] = htons(0x7000); // moveq #0,d0 |
604 |
+ |
D(bug(" patch 1 applied\n")); |
605 |
+ |
break; |
606 |
+ |
} |
607 |
+ |
p++; |
608 |
+ |
} |
609 |
+ |
|
610 |
|
} |
611 |
|
} |
612 |
|
|