1 |
|
/* |
2 |
|
* rsrc_patches.cpp - Resource patches |
3 |
|
* |
4 |
< |
* Basilisk II (C) 1997-2001 Christian Bauer |
4 |
> |
* Basilisk II (C) 1997-2004 Christian Bauer |
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 |
60 |
|
{ |
61 |
|
uint16 *p16; |
62 |
|
uint32 base; |
63 |
< |
D(bug("vCheckLoad %c%c%c%c (%08x) ID %d, data %08x, size %d\n", (char)(type >> 24), (char)((type >> 16) & 0xff), (char )((type >> 8) & 0xff), (char )(type & 0xff), type, id, p, size)); |
63 |
> |
D(bug("vCheckLoad %c%c%c%c (%08x) ID %d, data %p, size %d\n", (char)(type >> 24), (char)((type >> 16) & 0xff), (char )((type >> 8) & 0xff), (char )(type & 0xff), type, id, p, size)); |
64 |
|
|
65 |
|
if (type == FOURCC('b','o','o','t') && id == 3) { |
66 |
|
D(bug(" boot 3 found\n")); |
76 |
|
} |
77 |
|
|
78 |
|
#if !ROM_IS_WRITE_PROTECTED |
79 |
< |
// Set fake handle at 0x0000 to some safe place (so broken Mac programs won't write into Mac ROM) (7.5, 8.0) |
79 |
> |
// Set fake handle at 0x0000 to some safe place (so broken Mac programs won't write into Mac ROM) (7.1, 7.5, 8.0) |
80 |
|
static const uint8 dat2[] = {0x20, 0x78, 0x02, 0xae, 0xd1, 0xfc, 0x00, 0x01, 0x00, 0x00, 0x21, 0xc8, 0x00, 0x00}; |
81 |
|
base = find_rsrc_data(p, size, dat2, sizeof(dat2)); |
82 |
|
if (base) { |
101 |
|
} else if (type == FOURCC('b','o','o','t') && id == 2) { |
102 |
|
D(bug(" boot 2 found\n")); |
103 |
|
|
104 |
< |
// Set fake handle at 0x0000 to some safe place (so broken Mac programs won't write into Mac ROM) (7.5, 8.0) |
104 |
> |
// Set fake handle at 0x0000 to some safe place (so broken Mac programs won't write into Mac ROM) (7.1, 7.5, 8.0) |
105 |
|
static const uint8 dat[] = {0x20, 0x78, 0x02, 0xae, 0xd1, 0xfc, 0x00, 0x01, 0x00, 0x00, 0x21, 0xc8, 0x00, 0x00}; |
106 |
|
base = find_rsrc_data(p, size, dat, sizeof(dat)); |
107 |
|
if (base) { |
108 |
|
p16 = (uint16 *)(p + base); |
109 |
|
|
110 |
< |
#if defined(AMIGA) || defined(__NetBSD__) || defined(USE_SCRATCHMEM_SUBTERFUGE) |
110 |
> |
#if defined(USE_SCRATCHMEM_SUBTERFUGE) |
111 |
|
// Set 0x0000 to scratch memory area |
112 |
|
extern uint8 *ScratchMem; |
113 |
|
const uint32 ScratchMemBase = Host2MacAddr(ScratchMem); |
154 |
|
} else if (type == FOURCC('p','t','c','h') && id == 26) { |
155 |
|
D(bug(" ptch 26 found\n")); |
156 |
|
|
157 |
< |
// Trap ABC4 is initialized with absolute ROM address (7.5, 7.6, 7.6.1, 8.0) |
157 |
> |
// Trap ABC4 is initialized with absolute ROM address (7.1, 7.5, 7.6, 7.6.1, 8.0) |
158 |
|
static const uint8 dat[] = {0x40, 0x83, 0x36, 0x10}; |
159 |
|
base = find_rsrc_data(p, size, dat, sizeof(dat)); |
160 |
|
if (base) { |