| Line |
Branch |
Exec |
Source |
| 1 |
|
|
#pragma once |
| 2 |
|
|
#include <vector> |
| 3 |
|
|
|
| 4 |
|
|
#include "errors.h" |
| 5 |
|
|
#include "autoarray.h" |
| 6 |
|
|
#include <cstdint> |
| 7 |
|
|
|
| 8 |
|
|
extern const unsigned char * romdata; |
| 9 |
|
|
extern int romlen; |
| 10 |
|
|
extern unsigned char freespacebyte; |
| 11 |
|
|
bool openrom(const char * filename, bool confirm=true); |
| 12 |
|
|
uint32_t closerom(bool save = true); |
| 13 |
|
|
|
| 14 |
|
|
enum mapper_t { |
| 15 |
|
|
invalid_mapper, |
| 16 |
|
|
lorom, |
| 17 |
|
|
hirom, |
| 18 |
|
|
sa1rom, |
| 19 |
|
|
bigsa1rom, |
| 20 |
|
|
sfxrom, |
| 21 |
|
|
exlorom, |
| 22 |
|
|
exhirom, |
| 23 |
|
|
norom |
| 24 |
|
|
} extern mapper; |
| 25 |
|
|
|
| 26 |
|
|
extern int sa1banks[8];//only 0, 1, 4, 5 are used |
| 27 |
|
|
|
| 28 |
|
|
void addromwrite(int pcoffset, int numbytes); |
| 29 |
|
|
void writeromdata(int pcoffset, const void * indata, int numbytes); |
| 30 |
|
|
// optionally don't add the romwrite, because sometimes we did that in an earlier pass already |
| 31 |
|
|
// (or sometimes the bytes are just rom size padding) |
| 32 |
|
|
void writeromdata_byte(int pcoffset, unsigned char indata, bool add_write = true); |
| 33 |
|
|
void writeromdata_bytes(int pcoffset, unsigned char indata, int numbytes, bool add_write = true); |
| 34 |
|
|
|
| 35 |
|
|
struct writtenblockdata { |
| 36 |
|
|
int pcoffset; |
| 37 |
|
|
int snesoffset; |
| 38 |
|
|
int numbytes; |
| 39 |
|
|
}; |
| 40 |
|
|
|
| 41 |
|
|
extern autoarray<writtenblockdata> writtenblocks; |
| 42 |
|
|
extern std::vector<writtenblockdata> found_rats_tags; |
| 43 |
|
|
extern bool found_rats_tags_initialized; |
| 44 |
|
|
|
| 45 |
|
294630 |
inline int snestopc(int addr) |
| 46 |
|
|
{ |
| 47 |
3/4
✓ Branch 2 → 3 taken 294116 times.
✓ Branch 2 → 4 taken 514 times.
✗ Branch 3 → 4 not taken.
✓ Branch 3 → 5 taken 294116 times.
|
294630 |
if (addr<0 || addr>0xFFFFFF) return -1;//not 24bit |
| 48 |
5/5
✓ Branch 5 → 6 taken 146183 times.
✓ Branch 5 → 7 taken 147261 times.
✓ Branch 5 → 11 taken 672 times.
✓ Branch 7 → 8 taken 146497 times.
✓ Branch 7 → 13 taken 764 times.
|
294116 |
if (mapper==lorom) |
| 49 |
|
|
{ |
| 50 |
|
|
// randomdude999: The low pages ($0000-$7FFF) of banks 70-7D are used |
| 51 |
|
|
// for SRAM, the high pages are available for ROM data though |
| 52 |
2/4
✓ Branch 6 → 7 taken 146183 times.
✗ Branch 6 → 9 not taken.
✓ Branch 8 → 9 taken 146497 times.
✗ Branch 8 → 11 not taken.
|
292680 |
if ((addr&0xFE0000)==0x7E0000 ||//wram |
| 53 |
4/4
✓ Branch 7 → 8 taken 146179 times.
✓ Branch 7 → 9 taken 4 times.
✓ Branch 9 → 10 taken 146493 times.
✓ Branch 9 → 11 taken 4 times.
|
292680 |
(addr&0x408000)==0x000000 ||//hardware regs, ram mirrors, other strange junk |
| 54 |
2/4
✗ Branch 8 → 9 not taken.
✓ Branch 8 → 10 taken 146179 times.
✗ Branch 10 → 11 not taken.
✓ Branch 10 → 12 taken 146493 times.
|
292672 |
(addr&0x708000)==0x700000)//sram (low parts of banks 70-7D) |
| 55 |
|
8 |
return -1; |
| 56 |
|
292672 |
addr=((addr&0x7F0000)>>1|(addr&0x7FFF)); |
| 57 |
|
292672 |
return addr; |
| 58 |
|
|
} |
| 59 |
5/6
✓ Branch 11 → 12 taken 131 times.
✓ Branch 11 → 16 taken 541 times.
✗ Branch 13 → 14 not taken.
✓ Branch 13 → 15 taken 764 times.
✓ Branch 15 → 16 taken 147 times.
✓ Branch 15 → 20 taken 617 times.
|
1436 |
if (mapper==hirom) |
| 60 |
|
|
{ |
| 61 |
2/4
✓ Branch 12 → 13 taken 131 times.
✗ Branch 12 → 14 not taken.
✓ Branch 16 → 17 taken 147 times.
✗ Branch 16 → 18 not taken.
|
278 |
if ((addr&0xFE0000)==0x7E0000 ||//wram |
| 62 |
2/4
✗ Branch 13 → 14 not taken.
✓ Branch 13 → 15 taken 131 times.
✗ Branch 17 → 18 not taken.
✓ Branch 17 → 19 taken 147 times.
|
278 |
(addr&0x408000)==0x000000)//hardware regs, ram mirrors, other strange junk |
| 63 |
|
✗ |
return -1; |
| 64 |
|
278 |
return addr&0x3FFFFF; |
| 65 |
|
|
} |
| 66 |
5/6
✓ Branch 16 → 17 taken 79 times.
✓ Branch 16 → 24 taken 462 times.
✗ Branch 20 → 21 not taken.
✓ Branch 20 → 22 taken 617 times.
✓ Branch 22 → 23 taken 89 times.
✓ Branch 22 → 30 taken 528 times.
|
1158 |
if (mapper==exlorom) |
| 67 |
|
|
{ |
| 68 |
2/4
✓ Branch 17 → 18 taken 79 times.
✗ Branch 17 → 19 not taken.
✓ Branch 23 → 24 taken 89 times.
✗ Branch 23 → 25 not taken.
|
168 |
if ((addr&0xF00000)==0x700000 ||//wram, sram |
| 69 |
2/4
✗ Branch 18 → 19 not taken.
✓ Branch 18 → 20 taken 79 times.
✗ Branch 24 → 25 not taken.
✓ Branch 24 → 26 taken 89 times.
|
168 |
(addr&0x408000)==0x000000)//area that shouldn't be used in lorom |
| 70 |
|
✗ |
return -1; |
| 71 |
4/4
✓ Branch 20 → 21 taken 76 times.
✓ Branch 20 → 22 taken 3 times.
✓ Branch 26 → 27 taken 76 times.
✓ Branch 26 → 28 taken 13 times.
|
168 |
if (addr&0x800000) |
| 72 |
|
|
{ |
| 73 |
|
152 |
addr=((addr&0x7F0000)>>1|(addr&0x7FFF)); |
| 74 |
|
|
} |
| 75 |
|
|
else |
| 76 |
|
|
{ |
| 77 |
|
16 |
addr=((addr&0x7F0000)>>1|(addr&0x7FFF))+0x400000; |
| 78 |
|
|
} |
| 79 |
|
168 |
return addr; |
| 80 |
|
|
} |
| 81 |
5/6
✓ Branch 24 → 25 taken 93 times.
✓ Branch 24 → 31 taken 369 times.
✗ Branch 30 → 31 not taken.
✓ Branch 30 → 32 taken 528 times.
✓ Branch 32 → 33 taken 103 times.
✓ Branch 32 → 39 taken 425 times.
|
990 |
if (mapper==exhirom) |
| 82 |
|
|
{ |
| 83 |
2/4
✓ Branch 25 → 26 taken 93 times.
✗ Branch 25 → 27 not taken.
✓ Branch 33 → 34 taken 103 times.
✗ Branch 33 → 35 not taken.
|
196 |
if ((addr&0xFE0000)==0x7E0000 ||//wram |
| 84 |
2/4
✗ Branch 26 → 27 not taken.
✓ Branch 26 → 28 taken 93 times.
✗ Branch 34 → 35 not taken.
✓ Branch 34 → 36 taken 103 times.
|
196 |
(addr&0x408000)==0x000000)//hardware regs, ram mirrors, other strange junk |
| 85 |
|
✗ |
return -1; |
| 86 |
4/4
✓ Branch 28 → 29 taken 4 times.
✓ Branch 28 → 30 taken 89 times.
✓ Branch 36 → 37 taken 14 times.
✓ Branch 36 → 38 taken 89 times.
|
196 |
if ((addr&0x800000)==0x000000) return (addr&0x3FFFFF)|0x400000; |
| 87 |
|
178 |
return addr&0x3FFFFF; |
| 88 |
|
|
} |
| 89 |
5/6
✓ Branch 31 → 32 taken 20 times.
✓ Branch 31 → 39 taken 349 times.
✗ Branch 39 → 40 not taken.
✓ Branch 39 → 41 taken 425 times.
✓ Branch 41 → 42 taken 30 times.
✓ Branch 41 → 49 taken 395 times.
|
794 |
if (mapper==sfxrom) |
| 90 |
|
|
{ |
| 91 |
|
|
// Asar emulates GSU1, because apparently emulators don't support the extra ROM data from GSU2 |
| 92 |
2/4
✓ Branch 32 → 33 taken 20 times.
✗ Branch 32 → 35 not taken.
✓ Branch 42 → 43 taken 30 times.
✗ Branch 42 → 45 not taken.
|
50 |
if ((addr&0x600000)==0x600000 ||//wram, sram, open bus |
| 93 |
2/4
✓ Branch 33 → 34 taken 20 times.
✗ Branch 33 → 35 not taken.
✓ Branch 43 → 44 taken 30 times.
✗ Branch 43 → 45 not taken.
|
50 |
(addr&0x408000)==0x000000 ||//hardware regs, ram mirrors, rom mirrors, other strange junk |
| 94 |
2/4
✗ Branch 34 → 35 not taken.
✓ Branch 34 → 36 taken 20 times.
✗ Branch 44 → 45 not taken.
✓ Branch 44 → 46 taken 30 times.
|
50 |
(addr&0x800000)==0x800000)//fastrom isn't valid either in superfx |
| 95 |
|
✗ |
return -1; |
| 96 |
2/4
✗ Branch 36 → 37 not taken.
✓ Branch 36 → 38 taken 20 times.
✗ Branch 46 → 47 not taken.
✓ Branch 46 → 48 taken 30 times.
|
50 |
if (addr&0x400000) return addr&0x3FFFFF; |
| 97 |
|
50 |
else return (addr&0x7F0000)>>1|(addr&0x7FFF); |
| 98 |
|
|
} |
| 99 |
5/6
✓ Branch 39 → 40 taken 61 times.
✓ Branch 39 → 45 taken 288 times.
✗ Branch 49 → 50 not taken.
✓ Branch 49 → 51 taken 395 times.
✓ Branch 51 → 52 taken 71 times.
✓ Branch 51 → 63 taken 324 times.
|
744 |
if (mapper==sa1rom) |
| 100 |
|
|
{ |
| 101 |
2/4
✓ Branch 40 → 41 taken 61 times.
✗ Branch 40 → 42 not taken.
✓ Branch 52 → 53 taken 71 times.
✗ Branch 52 → 57 not taken.
|
132 |
if ((addr&0x408000)==0x008000) |
| 102 |
|
|
{ |
| 103 |
|
132 |
return sa1banks[(addr&0xE00000)>>21]|((addr&0x1F0000)>>1)|(addr&0x007FFF); |
| 104 |
|
|
} |
| 105 |
|
✗ |
if ((addr&0xC00000)==0xC00000) |
| 106 |
|
|
{ |
| 107 |
|
✗ |
return sa1banks[((addr&0x100000)>>20)|((addr&0x200000)>>19)]|(addr&0x0FFFFF); |
| 108 |
|
|
} |
| 109 |
|
✗ |
return -1; |
| 110 |
|
|
} |
| 111 |
5/6
✓ Branch 45 → 46 taken 112 times.
✓ Branch 45 → 54 taken 176 times.
✗ Branch 63 → 64 not taken.
✓ Branch 63 → 65 taken 324 times.
✓ Branch 65 → 66 taken 122 times.
✓ Branch 65 → 74 taken 202 times.
|
612 |
if (mapper==bigsa1rom) |
| 112 |
|
|
{ |
| 113 |
4/4
✓ Branch 46 → 47 taken 56 times.
✓ Branch 46 → 48 taken 56 times.
✓ Branch 66 → 67 taken 56 times.
✓ Branch 66 → 68 taken 66 times.
|
234 |
if ((addr&0xC00000)==0xC00000)//hirom |
| 114 |
|
|
{ |
| 115 |
|
112 |
return (addr&0x3FFFFF)|0x400000; |
| 116 |
|
|
} |
| 117 |
6/8
✓ Branch 48 → 49 taken 28 times.
✓ Branch 48 → 50 taken 28 times.
✓ Branch 49 → 50 taken 28 times.
✗ Branch 49 → 53 not taken.
✓ Branch 68 → 69 taken 28 times.
✓ Branch 68 → 70 taken 38 times.
✓ Branch 69 → 70 taken 28 times.
✗ Branch 69 → 73 not taken.
|
122 |
if ((addr&0xC00000)==0x000000 || (addr&0xC00000)==0x800000)//lorom |
| 118 |
|
|
{ |
| 119 |
2/4
✗ Branch 50 → 51 not taken.
✓ Branch 50 → 52 taken 56 times.
✗ Branch 70 → 71 not taken.
✓ Branch 70 → 72 taken 66 times.
|
122 |
if ((addr&0x008000)==0x000000) return -1; |
| 120 |
|
122 |
return (addr&0x800000)>>2 | (addr&0x3F0000)>>1 | (addr&0x7FFF); |
| 121 |
|
|
} |
| 122 |
|
✗ |
return -1; |
| 123 |
|
|
} |
| 124 |
3/6
✓ Branch 54 → 55 taken 176 times.
✗ Branch 54 → 56 not taken.
✗ Branch 74 → 75 not taken.
✓ Branch 74 → 76 taken 202 times.
✓ Branch 76 → 77 taken 202 times.
✗ Branch 76 → 78 not taken.
|
378 |
if (mapper==norom) |
| 125 |
|
|
{ |
| 126 |
|
378 |
return addr; |
| 127 |
|
|
} |
| 128 |
|
✗ |
return -1; |
| 129 |
|
|
} |
| 130 |
|
|
|
| 131 |
|
152143 |
inline int pctosnes(int addr) |
| 132 |
|
|
{ |
| 133 |
1/2
✗ Branch 2 → 3 not taken.
✓ Branch 2 → 4 taken 152143 times.
|
152143 |
if (addr<0) return -1; |
| 134 |
5/5
✓ Branch 4 → 5 taken 75594 times.
✓ Branch 4 → 6 taken 76170 times.
✓ Branch 4 → 8 taken 379 times.
✓ Branch 6 → 7 taken 75745 times.
✓ Branch 6 → 12 taken 425 times.
|
152143 |
if (mapper==lorom) |
| 135 |
|
|
{ |
| 136 |
2/4
✗ Branch 5 → 6 not taken.
✓ Branch 5 → 7 taken 75594 times.
✗ Branch 7 → 8 not taken.
✓ Branch 7 → 9 taken 75745 times.
|
151339 |
if (addr>=0x400000) return -1; |
| 137 |
1/2
✗ Branch 9 → 10 not taken.
✓ Branch 9 → 11 taken 75745 times.
|
151339 |
addr=((addr<<1)&0x7F0000)|(addr&0x7FFF)|0x8000; |
| 138 |
|
151339 |
return addr|0x800000; |
| 139 |
|
|
} |
| 140 |
5/6
✓ Branch 8 → 9 taken 107 times.
✓ Branch 8 → 12 taken 272 times.
✗ Branch 12 → 13 not taken.
✓ Branch 12 → 14 taken 425 times.
✓ Branch 14 → 15 taken 115 times.
✓ Branch 14 → 18 taken 310 times.
|
804 |
if (mapper==hirom) |
| 141 |
|
|
{ |
| 142 |
2/4
✗ Branch 9 → 10 not taken.
✓ Branch 9 → 11 taken 107 times.
✗ Branch 15 → 16 not taken.
✓ Branch 15 → 17 taken 115 times.
|
222 |
if (addr>=0x400000) return -1; |
| 143 |
|
222 |
return addr|0xC00000; |
| 144 |
|
|
} |
| 145 |
5/6
✓ Branch 12 → 13 taken 42 times.
✓ Branch 12 → 18 taken 230 times.
✗ Branch 18 → 19 not taken.
✓ Branch 18 → 20 taken 310 times.
✓ Branch 20 → 21 taken 47 times.
✓ Branch 20 → 30 taken 263 times.
|
582 |
if (mapper == exlorom) |
| 146 |
|
|
{ |
| 147 |
2/4
✗ Branch 13 → 14 not taken.
✓ Branch 13 → 15 taken 42 times.
✗ Branch 21 → 22 not taken.
✓ Branch 21 → 23 taken 47 times.
|
89 |
if (addr>=0x800000) return -1; |
| 148 |
4/4
✓ Branch 15 → 16 taken 3 times.
✓ Branch 15 → 17 taken 39 times.
✓ Branch 23 → 24 taken 8 times.
✓ Branch 23 → 27 taken 39 times.
|
89 |
if (addr&0x400000) |
| 149 |
|
|
{ |
| 150 |
|
11 |
addr-=0x400000; |
| 151 |
1/2
✗ Branch 24 → 25 not taken.
✓ Branch 24 → 26 taken 8 times.
|
11 |
addr=((addr<<1)&0x7F0000)|(addr&0x7FFF)|0x8000; |
| 152 |
|
11 |
return addr; |
| 153 |
|
|
} |
| 154 |
|
|
else |
| 155 |
|
|
{ |
| 156 |
1/2
✗ Branch 27 → 28 not taken.
✓ Branch 27 → 29 taken 39 times.
|
78 |
addr=((addr<<1)&0x7F0000)|(addr&0x7FFF)|0x8000; |
| 157 |
|
78 |
return addr|0x800000; |
| 158 |
|
|
} |
| 159 |
|
|
} |
| 160 |
5/6
✓ Branch 18 → 19 taken 48 times.
✓ Branch 18 → 24 taken 182 times.
✗ Branch 30 → 31 not taken.
✓ Branch 30 → 32 taken 263 times.
✓ Branch 32 → 33 taken 53 times.
✓ Branch 32 → 38 taken 210 times.
|
493 |
if (mapper == exhirom) |
| 161 |
|
|
{ |
| 162 |
2/4
✗ Branch 19 → 20 not taken.
✓ Branch 19 → 21 taken 48 times.
✗ Branch 33 → 34 not taken.
✓ Branch 33 → 35 taken 53 times.
|
101 |
if (addr>=0x800000) return -1; |
| 163 |
4/4
✓ Branch 21 → 22 taken 3 times.
✓ Branch 21 → 23 taken 45 times.
✓ Branch 35 → 36 taken 8 times.
✓ Branch 35 → 37 taken 45 times.
|
101 |
if (addr&0x400000) return addr; |
| 164 |
|
90 |
return addr|0xC00000; |
| 165 |
|
|
} |
| 166 |
5/6
✓ Branch 24 → 25 taken 32 times.
✓ Branch 24 → 31 taken 150 times.
✗ Branch 38 → 39 not taken.
✓ Branch 38 → 40 taken 210 times.
✓ Branch 40 → 41 taken 37 times.
✓ Branch 40 → 54 taken 173 times.
|
392 |
if (mapper==sa1rom) |
| 167 |
|
|
{ |
| 168 |
2/4
✓ Branch 29 → 26 taken 72 times.
✗ Branch 29 → 30 not taken.
✓ Branch 52 → 42 taken 77 times.
✗ Branch 52 → 53 not taken.
|
149 |
for (int i=0;i<8;i++) |
| 169 |
|
|
{ |
| 170 |
6/8
✓ Branch 26 → 27 taken 32 times.
✓ Branch 26 → 28 taken 40 times.
✓ Branch 45 → 46 taken 37 times.
✓ Branch 45 → 51 taken 40 times.
✗ Branch 46 → 47 not taken.
✓ Branch 46 → 48 taken 37 times.
✗ Branch 48 → 49 not taken.
✓ Branch 48 → 50 taken 37 times.
|
149 |
if (sa1banks[i]==(addr&0x700000)){ return 0x008000|(i<<21)|((addr&0x0F8000)<<1)|(addr&0x7FFF);} |
| 171 |
|
|
} |
| 172 |
|
✗ |
return -1; |
| 173 |
|
|
} |
| 174 |
5/6
✓ Branch 31 → 32 taken 48 times.
✓ Branch 31 → 41 taken 102 times.
✗ Branch 54 → 55 not taken.
✓ Branch 54 → 56 taken 173 times.
✓ Branch 56 → 57 taken 53 times.
✓ Branch 56 → 70 taken 120 times.
|
323 |
if (mapper==bigsa1rom) |
| 175 |
|
|
{ |
| 176 |
2/4
✗ Branch 32 → 33 not taken.
✓ Branch 32 → 34 taken 48 times.
✗ Branch 57 → 58 not taken.
✓ Branch 57 → 59 taken 53 times.
|
101 |
if (addr>=0x800000) return -1; |
| 177 |
4/4
✓ Branch 34 → 35 taken 24 times.
✓ Branch 34 → 36 taken 24 times.
✓ Branch 59 → 60 taken 24 times.
✓ Branch 59 → 61 taken 29 times.
|
101 |
if ((addr&0x400000)==0x400000) |
| 178 |
|
|
{ |
| 179 |
|
48 |
return addr|0xC00000; |
| 180 |
|
|
} |
| 181 |
4/4
✓ Branch 36 → 37 taken 12 times.
✓ Branch 36 → 38 taken 12 times.
✓ Branch 61 → 62 taken 17 times.
✓ Branch 61 → 65 taken 12 times.
|
53 |
if ((addr&0x600000)==0x000000) |
| 182 |
|
|
{ |
| 183 |
1/2
✗ Branch 62 → 63 not taken.
✓ Branch 62 → 64 taken 17 times.
|
29 |
return ((addr<<1)&0x3F0000)|0x8000|(addr&0x7FFF); |
| 184 |
|
|
} |
| 185 |
2/4
✓ Branch 38 → 39 taken 12 times.
✗ Branch 38 → 40 not taken.
✓ Branch 65 → 66 taken 12 times.
✗ Branch 65 → 69 not taken.
|
24 |
if ((addr&0x600000)==0x200000) |
| 186 |
|
|
{ |
| 187 |
1/2
✗ Branch 66 → 67 not taken.
✓ Branch 66 → 68 taken 12 times.
|
24 |
return 0x800000|((addr<<1)&0x3F0000)|0x8000|(addr&0x7FFF); |
| 188 |
|
|
} |
| 189 |
|
✗ |
return -1; |
| 190 |
|
|
} |
| 191 |
5/6
✓ Branch 41 → 42 taken 17 times.
✓ Branch 41 → 45 taken 85 times.
✗ Branch 70 → 71 not taken.
✓ Branch 70 → 72 taken 120 times.
✓ Branch 72 → 73 taken 22 times.
✓ Branch 72 → 78 taken 98 times.
|
222 |
if (mapper==sfxrom) |
| 192 |
|
|
{ |
| 193 |
4/4
✓ Branch 42 → 43 taken 1 time.
✓ Branch 42 → 44 taken 16 times.
✓ Branch 73 → 74 taken 1 time.
✓ Branch 73 → 75 taken 21 times.
|
39 |
if (addr>=0x200000) return -1; |
| 194 |
1/2
✗ Branch 75 → 76 not taken.
✓ Branch 75 → 77 taken 21 times.
|
37 |
return ((addr<<1)&0x7F0000)|(addr&0x7FFF)|0x8000; |
| 195 |
|
|
} |
| 196 |
3/6
✓ Branch 45 → 46 taken 85 times.
✗ Branch 45 → 47 not taken.
✗ Branch 78 → 79 not taken.
✓ Branch 78 → 80 taken 98 times.
✓ Branch 80 → 81 taken 98 times.
✗ Branch 80 → 82 not taken.
|
183 |
if (mapper==norom) |
| 197 |
|
|
{ |
| 198 |
|
183 |
return addr; |
| 199 |
|
|
} |
| 200 |
|
✗ |
return -1; |
| 201 |
|
|
} |
| 202 |
|
|
|
| 203 |
|
|
int getpcfreespace(int size, int target_bank, bool autoexpand=true, bool respectbankborders=true, bool align=false, bool write_rats=true, int search_start=-1); |
| 204 |
|
|
int getsnesfreespace(int size, int target_bank, bool autoexpand=true, bool respectbankborders=true, bool align=false, bool write_rats=true, int search_start=-1); |
| 205 |
|
|
|
| 206 |
|
|
void removerats(int snesaddr, unsigned char clean_byte); |
| 207 |
|
|
void handle_cleared_rats_tags(); |
| 208 |
|
|
int ratsstart(int pcaddr); |
| 209 |
|
|
|
| 210 |
|
|
void fixchecksum(); |
| 211 |
|
|
|
| 212 |
|
|
void WalkMetadata(int loc, void(*func)(int loc, char * name, int len, const unsigned char * contents));//This one calls func() for each metadata block in the RATS tag whose contents (metadata) start at loc in the ROM. Do not replace name with an invalid metadata name, and note that name is not null terminated. |
| 213 |
|
|
|