| Line |
Branch |
Exec |
Source |
| 1 |
|
|
#include "addr2line.h" |
| 2 |
|
|
#include "asar.h" |
| 3 |
|
|
#include "libstr.h" |
| 4 |
|
|
#include "libsmw.h" |
| 5 |
|
|
#include "assocarr.h" |
| 6 |
|
|
#include "autoarray.h" |
| 7 |
|
|
#include "warnings.h" |
| 8 |
|
|
#include "assembleblock.h" |
| 9 |
|
|
#include "asar_math.h" |
| 10 |
|
|
#include "macro.h" |
| 11 |
|
|
#include "platform/file-helpers.h" |
| 12 |
|
|
#include <cinttypes> |
| 13 |
|
|
|
| 14 |
|
|
#include "interface-shared.h" |
| 15 |
|
|
#include "arch-shared.h" |
| 16 |
|
|
|
| 17 |
|
|
int arch=arch_65816; |
| 18 |
|
|
|
| 19 |
|
|
int snespos; |
| 20 |
|
|
int realsnespos; |
| 21 |
|
|
int startpos; |
| 22 |
|
|
int realstartpos; |
| 23 |
|
|
|
| 24 |
|
|
bool emulatexkas; |
| 25 |
|
|
bool mapper_set = false; |
| 26 |
|
|
bool warn_endwhile = true; |
| 27 |
|
|
static bool specifiedasarver = false; |
| 28 |
|
|
|
| 29 |
|
|
static int old_snespos; |
| 30 |
|
|
static int old_startpos; |
| 31 |
|
|
static int old_optimizeforbank; |
| 32 |
|
|
static int struct_base; |
| 33 |
|
|
static string struct_name; |
| 34 |
|
|
static string struct_parent; |
| 35 |
|
|
static bool in_struct = false; |
| 36 |
|
|
static bool in_sub_struct = false; |
| 37 |
|
|
static bool static_struct = false; |
| 38 |
|
|
static bool in_spcblock = false; |
| 39 |
|
|
|
| 40 |
|
|
assocarr<snes_struct> structs; |
| 41 |
|
|
|
| 42 |
|
|
static bool movinglabelspossible = false; |
| 43 |
|
|
|
| 44 |
|
|
static bool disable_bank_cross_errors = false; |
| 45 |
|
|
static bool check_half_banks_crossed = false; |
| 46 |
|
|
|
| 47 |
|
|
int bytes; |
| 48 |
|
|
|
| 49 |
|
|
static enum { |
| 50 |
|
|
ratsmeta_ban, |
| 51 |
|
|
ratsmeta_allow, |
| 52 |
|
|
ratsmeta_used, |
| 53 |
|
|
} ratsmetastate=ratsmeta_ban; |
| 54 |
|
|
|
| 55 |
|
|
enum spcblock_type{ |
| 56 |
|
|
spcblock_nspc, |
| 57 |
|
|
spcblock_custom |
| 58 |
|
|
}; |
| 59 |
|
|
|
| 60 |
|
|
struct spcblock_data{ |
| 61 |
|
|
unsigned int destination; |
| 62 |
|
|
spcblock_type type; |
| 63 |
|
|
string macro_name; |
| 64 |
|
|
|
| 65 |
|
|
unsigned int execute_address; // Can be removed in Asar 2.0 |
| 66 |
|
|
unsigned int size_address; |
| 67 |
|
|
mapper_t old_mapper; |
| 68 |
|
|
}spcblock; |
| 69 |
|
|
|
| 70 |
|
498 |
int snestopc_pick(int addr) |
| 71 |
|
|
{ |
| 72 |
|
498 |
return snestopc(addr); |
| 73 |
|
|
} |
| 74 |
|
|
|
| 75 |
|
239102 |
inline void verifysnespos() |
| 76 |
|
|
{ |
| 77 |
3/4
✓ Branch 2 → 3 taken 239078 times.
✓ Branch 2 → 4 taken 24 times.
✗ Branch 3 → 4 not taken.
✓ Branch 3 → 6 taken 239078 times.
|
239102 |
if (snespos<0 || realsnespos<0) |
| 78 |
|
|
{ |
| 79 |
|
24 |
asar_throw_warning(0, warning_id_missing_org); |
| 80 |
|
24 |
snespos=0x008000; |
| 81 |
|
24 |
realsnespos=0x008000; |
| 82 |
|
24 |
startpos=0x008000; |
| 83 |
|
24 |
realstartpos=0x008000; |
| 84 |
|
|
} |
| 85 |
|
239102 |
} |
| 86 |
|
|
|
| 87 |
|
552 |
static int fixsnespos(int inaddr, int step) |
| 88 |
|
|
{ |
| 89 |
|
|
// randomdude999: turns out it wasn't very reliable at all. |
| 90 |
|
|
/* // RPG Hacker: No idea how reliable this is. |
| 91 |
|
|
// Might not work with some of the more exotic mappers. |
| 92 |
|
|
return pctosnes(snestopc(inaddr) + step); */ |
| 93 |
2/2
✓ Branch 2 → 3 taken 96 times.
✓ Branch 2 → 6 taken 456 times.
|
552 |
if (mapper == lorom) { |
| 94 |
2/2
✓ Branch 3 → 4 taken 12 times.
✓ Branch 3 → 5 taken 84 times.
|
96 |
if ((inaddr&0xFFFF)+step > 0xFFFF) { |
| 95 |
|
|
// bank crossed |
| 96 |
|
12 |
return inaddr+step+0x8000; |
| 97 |
|
|
} |
| 98 |
|
84 |
return inaddr+step; |
| 99 |
1/2
✗ Branch 6 → 7 not taken.
✓ Branch 6 → 11 taken 456 times.
|
456 |
} else if (mapper == hirom) { |
| 100 |
|
✗ |
if ((inaddr&0x400000) == 0) { |
| 101 |
|
|
// system pages, need to account for low pages and stuff |
| 102 |
|
✗ |
if ((inaddr&0xFFFF)+step > 0xFFFF) { |
| 103 |
|
✗ |
return inaddr+step+0x8000; |
| 104 |
|
|
} |
| 105 |
|
|
} |
| 106 |
|
✗ |
return inaddr+step; |
| 107 |
1/2
✗ Branch 11 → 12 not taken.
✓ Branch 11 → 14 taken 456 times.
|
456 |
} else if (mapper == exlorom) { |
| 108 |
|
|
// exlorom has no mirroring so this should work fine |
| 109 |
|
✗ |
return pctosnes(snestopc(inaddr)+step); |
| 110 |
1/2
✗ Branch 14 → 15 not taken.
✓ Branch 14 → 19 taken 456 times.
|
456 |
} else if (mapper == exhirom) { |
| 111 |
|
|
// apparently exhirom is pretty similar to hirom after all |
| 112 |
|
✗ |
if ((inaddr&0x400000) == 0) { |
| 113 |
|
|
// system pages, need to account for low pages and stuff |
| 114 |
|
✗ |
if ((inaddr&0xFFFF)+step > 0xFFFF) { |
| 115 |
|
✗ |
return inaddr+step+0x8000; |
| 116 |
|
|
} |
| 117 |
|
|
} |
| 118 |
|
✗ |
return inaddr+step; |
| 119 |
1/2
✗ Branch 19 → 20 not taken.
✓ Branch 19 → 25 taken 456 times.
|
456 |
} else if (mapper == sa1rom) { |
| 120 |
|
✗ |
if((inaddr&0x400000) == 0) { |
| 121 |
|
|
// lorom area |
| 122 |
|
✗ |
if ((inaddr&0xFFFF)+step > 0xFFFF) { |
| 123 |
|
✗ |
return inaddr+step+0x8000; |
| 124 |
|
|
} |
| 125 |
|
✗ |
return inaddr+step; |
| 126 |
|
|
} else { |
| 127 |
|
|
// hirom area |
| 128 |
|
✗ |
return inaddr+step; |
| 129 |
|
|
} |
| 130 |
1/2
✗ Branch 25 → 26 not taken.
✓ Branch 25 → 30 taken 456 times.
|
456 |
} else if (mapper == sfxrom) { |
| 131 |
|
✗ |
if ((inaddr&0x400000) == 0) { |
| 132 |
|
|
// lorom area |
| 133 |
|
✗ |
if ((inaddr&0xFFFF)+step > 0xFFFF) { |
| 134 |
|
✗ |
return inaddr+step+0x8000; |
| 135 |
|
|
} |
| 136 |
|
|
} else { |
| 137 |
|
|
// hirom area |
| 138 |
|
✗ |
return inaddr+step; |
| 139 |
|
|
} |
| 140 |
1/2
✗ Branch 30 → 31 not taken.
✓ Branch 30 → 33 taken 456 times.
|
456 |
} else if (mapper == bigsa1rom) { |
| 141 |
|
|
// no mirrors here, so this should work |
| 142 |
|
✗ |
return pctosnes(snestopc(inaddr)+step); |
| 143 |
1/2
✓ Branch 33 → 34 taken 456 times.
✗ Branch 33 → 35 not taken.
|
456 |
} else if (mapper == norom) { |
| 144 |
|
456 |
return inaddr+step; |
| 145 |
|
|
} |
| 146 |
|
✗ |
return -1; |
| 147 |
|
|
} |
| 148 |
|
|
|
| 149 |
|
238400 |
inline void step(int num) |
| 150 |
|
|
{ |
| 151 |
2/2
✓ Branch 2 → 3 taken 276 times.
✓ Branch 2 → 6 taken 238124 times.
|
238400 |
if (disable_bank_cross_errors) |
| 152 |
|
|
{ |
| 153 |
|
|
// need to keep freespace id the same... |
| 154 |
|
276 |
snespos = (snespos&0xff000000) | fixsnespos(snespos&0xffffff, num); |
| 155 |
|
276 |
realsnespos = (realsnespos&0xff000000) | fixsnespos(realsnespos&0xffffff, num); |
| 156 |
|
|
|
| 157 |
|
|
// RPG Hacker: Not adjusting startpos here will eventually throw |
| 158 |
|
|
// an error in checkbankcross() if we set warn bankcross on again. |
| 159 |
|
|
// As far as I can tell, those are pretty much just used for |
| 160 |
|
|
// checking bank crossing, anyways, so it's hopefully save to just |
| 161 |
|
|
// adjust them here. |
| 162 |
|
276 |
startpos = snespos; |
| 163 |
|
276 |
realstartpos = realsnespos; |
| 164 |
|
|
} |
| 165 |
|
|
else |
| 166 |
|
|
{ |
| 167 |
|
238124 |
snespos += num; |
| 168 |
|
238124 |
realsnespos += num; |
| 169 |
|
|
} |
| 170 |
|
238400 |
bytes+=num; |
| 171 |
|
238400 |
} |
| 172 |
|
|
|
| 173 |
|
238196 |
inline void write1_65816(unsigned int num) |
| 174 |
|
|
{ |
| 175 |
|
238196 |
verifysnespos(); |
| 176 |
3/3
✓ Branch 3 → 4 taken 79388 times.
✓ Branch 3 → 16 taken 79404 times.
✓ Branch 3 → 17 taken 79404 times.
|
238196 |
if (pass==2) |
| 177 |
|
|
{ |
| 178 |
|
79388 |
int pcpos=snestopc(realsnespos&0xFFFFFF); |
| 179 |
2/3
✗ Branch 5 → 6 not taken.
✓ Branch 5 → 11 taken 39694 times.
✓ Branch 5 → 12 taken 39694 times.
|
79388 |
if (pcpos<0) |
| 180 |
|
|
{ |
| 181 |
|
✗ |
movinglabelspossible=true; |
| 182 |
|
✗ |
asar_throw_error(2, error_type_block, error_id_snes_address_doesnt_map_to_rom, hex6((unsigned int)realsnespos).data()); |
| 183 |
|
|
} |
| 184 |
|
79388 |
writeromdata_byte(pcpos, (unsigned char)num); |
| 185 |
4/4
✓ Branch 12 → 13 taken 4139 times.
✓ Branch 12 → 16 taken 35555 times.
✓ Branch 13 → 14 taken 4139 times.
✓ Branch 13 → 17 taken 35555 times.
|
79388 |
if (pcpos>=romlen) { |
| 186 |
4/4
✓ Branch 13 → 14 taken 37 times.
✓ Branch 13 → 15 taken 4102 times.
✓ Branch 14 → 15 taken 37 times.
✓ Branch 14 → 16 taken 4102 times.
|
8278 |
if(pcpos - romlen > 0) writeromdata_bytes(romlen, default_freespacebyte, pcpos - romlen, false); |
| 187 |
|
8278 |
romlen=pcpos+1; |
| 188 |
|
|
} |
| 189 |
|
|
} |
| 190 |
|
238196 |
step(1); |
| 191 |
|
238196 |
ratsmetastate=ratsmeta_ban; |
| 192 |
|
238196 |
} |
| 193 |
|
|
|
| 194 |
|
|
int recent_opcode_num = 0; |
| 195 |
|
|
|
| 196 |
|
238196 |
void write1_pick(unsigned int num) |
| 197 |
|
|
{ |
| 198 |
|
238196 |
write1_65816(num); |
| 199 |
|
238196 |
} |
| 200 |
|
|
|
| 201 |
|
228104 |
static bool asblock_pick(char** word, int numwords) |
| 202 |
|
|
{ |
| 203 |
|
228104 |
recent_opcode_num = 1; |
| 204 |
|
|
|
| 205 |
4/4
✓ Branch 2 → 3 taken 225770 times.
✓ Branch 2 → 4 taken 2334 times.
✓ Branch 3 → 4 taken 30 times.
✓ Branch 3 → 6 taken 225740 times.
|
228104 |
if (arch==arch_spc700 || in_spcblock) return asblock_spc700(word, numwords); |
| 206 |
3/3
✓ Branch 6 → 7 taken 222074 times.
✓ Branch 6 → 26 taken 1833 times.
✓ Branch 6 → 30 taken 1833 times.
|
225740 |
if (arch==arch_65816) { |
| 207 |
|
222074 |
int op_len = 0; |
| 208 |
2/4
✓ Branch 7 → 8 taken 111037 times.
✗ Branch 7 → 37 not taken.
✓ Branch 9 → 10 taken 111037 times.
✗ Branch 9 → 42 not taken.
|
222074 |
string oldword0 = word[0]; |
| 209 |
8/8
✓ Branch 8 → 9 taken 111036 times.
✓ Branch 8 → 35 taken 1 time.
✓ Branch 9 → 10 taken 1892 times.
✓ Branch 9 → 23 taken 109144 times.
✓ Branch 10 → 11 taken 111036 times.
✓ Branch 10 → 40 taken 1 time.
✓ Branch 11 → 12 taken 1892 times.
✓ Branch 11 → 26 taken 109144 times.
|
222074 |
if(asblock_65816(word, numwords, false, op_len)) { |
| 210 |
6/8
✓ Branch 10 → 11 taken 108 times.
✓ Branch 10 → 13 taken 1784 times.
✓ Branch 11 → 12 taken 108 times.
✗ Branch 11 → 13 not taken.
✓ Branch 12 → 13 taken 108 times.
✓ Branch 12 → 15 taken 1784 times.
✓ Branch 13 → 14 taken 108 times.
✗ Branch 13 → 15 not taken.
|
3784 |
if(set_optimize_address && set_optimize_dp) return true; |
| 211 |
|
3568 |
int old_dp = optimize_dp; |
| 212 |
|
3568 |
int old_addr = optimize_address; |
| 213 |
2/4
✓ Branch 13 → 14 taken 1784 times.
✗ Branch 13 → 15 not taken.
✓ Branch 15 → 16 taken 1784 times.
✗ Branch 15 → 17 not taken.
|
3568 |
if(!set_optimize_dp) optimize_dp = optimize_dp_flag::ALWAYS; |
| 214 |
2/4
✓ Branch 15 → 16 taken 1784 times.
✗ Branch 15 → 17 not taken.
✓ Branch 17 → 18 taken 1784 times.
✗ Branch 17 → 19 not taken.
|
3568 |
if(!set_optimize_address) optimize_address = optimize_address_flag::MIRRORS; |
| 215 |
|
3568 |
int new_len = -1; |
| 216 |
|
|
// asblock fucks up word[0], fix it again |
| 217 |
|
3568 |
word[0] = oldword0.temp_raw(); |
| 218 |
|
|
// (does doing it like this lead to Funny Mem Leaks?) |
| 219 |
2/4
✓ Branch 18 → 19 taken 1784 times.
✗ Branch 18 → 34 not taken.
✓ Branch 21 → 22 taken 1784 times.
✗ Branch 21 → 38 not taken.
|
3568 |
asblock_65816(word, numwords, true, new_len); |
| 220 |
6/8
✓ Branch 19 → 20 taken 9 times.
✓ Branch 19 → 21 taken 1775 times.
✓ Branch 20 → 21 taken 9 times.
✗ Branch 20 → 34 not taken.
✓ Branch 22 → 23 taken 9 times.
✓ Branch 22 → 24 taken 1775 times.
✓ Branch 23 → 24 taken 9 times.
✗ Branch 23 → 38 not taken.
|
3568 |
if(new_len != op_len) asar_throw_warning(2, warning_id_optimization_settings, op_len, new_len); |
| 221 |
|
3568 |
optimize_address = old_addr; |
| 222 |
|
3568 |
optimize_dp = old_dp; |
| 223 |
|
3568 |
return true; |
| 224 |
|
218288 |
} else return false; |
| 225 |
|
222074 |
} |
| 226 |
4/4
✓ Branch 26 → 27 taken 6 times.
✓ Branch 26 → 29 taken 1827 times.
✓ Branch 30 → 31 taken 6 times.
✓ Branch 30 → 33 taken 1827 times.
|
3666 |
if (arch==arch_spc700_inline) return asblock_spc700(word, numwords); |
| 227 |
2/4
✓ Branch 29 → 30 taken 1827 times.
✗ Branch 29 → 32 not taken.
✓ Branch 33 → 34 taken 1827 times.
✗ Branch 33 → 36 not taken.
|
3654 |
if (arch==arch_superfx) return asblock_superfx(word, numwords); |
| 228 |
|
✗ |
return true; |
| 229 |
|
|
} |
| 230 |
|
|
|
| 231 |
|
|
#define write1 write1_pick |
| 232 |
|
|
#define snestopc snestopc_pick |
| 233 |
|
|
|
| 234 |
|
1368 |
const char * safedequote(char * str) |
| 235 |
|
|
{ |
| 236 |
|
1368 |
const char * tmp=dequote(str); |
| 237 |
1/2
✗ Branch 3 → 4 not taken.
✓ Branch 3 → 5 taken 1368 times.
|
1368 |
if (!tmp) asar_throw_error(0, error_type_block, error_id_garbage_near_quoted_string); |
| 238 |
|
1368 |
return tmp; |
| 239 |
|
|
} |
| 240 |
|
|
|
| 241 |
|
|
extern char romtitle[30]; |
| 242 |
|
|
extern bool stdlib; |
| 243 |
|
|
|
| 244 |
|
1792 |
void write2(unsigned int num) |
| 245 |
|
|
{ |
| 246 |
|
1792 |
write1(num); |
| 247 |
|
1792 |
write1(num/256); |
| 248 |
|
1792 |
} |
| 249 |
|
|
|
| 250 |
|
1166 |
void write3(unsigned int num) |
| 251 |
|
|
{ |
| 252 |
|
1166 |
write1(num); |
| 253 |
|
1166 |
write1(num/256); |
| 254 |
|
1166 |
write1(num/65536); |
| 255 |
|
1166 |
} |
| 256 |
|
|
|
| 257 |
|
90 |
void write4(unsigned int num) |
| 258 |
|
|
{ |
| 259 |
|
90 |
write1(num); |
| 260 |
|
90 |
write1(num/256); |
| 261 |
|
90 |
write1(num/65536); |
| 262 |
|
90 |
write1(num/16777216); |
| 263 |
|
90 |
} |
| 264 |
|
|
|
| 265 |
|
|
//these are NOT used by the math parser - see math.cpp for that |
| 266 |
|
✗ |
int read1(int insnespos) |
| 267 |
|
|
{ |
| 268 |
|
✗ |
int addr=snestopc(insnespos); |
| 269 |
|
✗ |
if (addr<0 || addr+1>romlen_r) return -1; |
| 270 |
|
|
return |
| 271 |
|
✗ |
romdata_r[addr ] ; |
| 272 |
|
|
} |
| 273 |
|
|
|
| 274 |
|
48 |
int read2(int insnespos) |
| 275 |
|
|
{ |
| 276 |
|
48 |
int addr=snestopc(insnespos); |
| 277 |
3/4
✓ Branch 3 → 4 taken 46 times.
✓ Branch 3 → 5 taken 2 times.
✗ Branch 4 → 5 not taken.
✓ Branch 4 → 6 taken 46 times.
|
48 |
if (addr<0 || addr+2>romlen_r) return -1; |
| 278 |
|
|
return |
| 279 |
|
46 |
romdata_r[addr ] | |
| 280 |
|
46 |
(romdata_r[addr+1]<< 8); |
| 281 |
|
|
} |
| 282 |
|
|
|
| 283 |
|
114 |
int read3(int insnespos) |
| 284 |
|
|
{ |
| 285 |
|
114 |
int addr=snestopc(insnespos); |
| 286 |
2/4
✓ Branch 3 → 4 taken 114 times.
✗ Branch 3 → 5 not taken.
✗ Branch 4 → 5 not taken.
✓ Branch 4 → 6 taken 114 times.
|
114 |
if (addr<0 || addr+3>romlen_r) return -1; |
| 287 |
|
|
return |
| 288 |
|
114 |
romdata_r[addr ] | |
| 289 |
|
114 |
(romdata_r[addr+1]<< 8)| |
| 290 |
|
114 |
(romdata_r[addr+2]<<16); |
| 291 |
|
|
} |
| 292 |
|
|
|
| 293 |
|
2160 |
int getlenfromchar(char c) |
| 294 |
|
|
{ |
| 295 |
|
2160 |
c=(char)to_lower(c); |
| 296 |
2/2
✓ Branch 3 → 4 taken 984 times.
✓ Branch 3 → 5 taken 1176 times.
|
2160 |
if (c=='b') return 1; |
| 297 |
2/2
✓ Branch 5 → 6 taken 984 times.
✓ Branch 5 → 7 taken 192 times.
|
1176 |
if (c=='w') return 2; |
| 298 |
1/2
✓ Branch 7 → 8 taken 192 times.
✗ Branch 7 → 9 not taken.
|
192 |
if (c=='l') return 3; |
| 299 |
|
✗ |
if (c=='d') |
| 300 |
|
|
{ |
| 301 |
|
✗ |
asar_throw_warning(1, warning_id_feature_deprecated, ".d opcode suffix", "this doesn't even make sense"); |
| 302 |
|
✗ |
return 4; |
| 303 |
|
|
} |
| 304 |
|
✗ |
asar_throw_error(0, error_type_block, error_id_invalid_opcode_length); |
| 305 |
|
✗ |
return -1; |
| 306 |
|
|
} |
| 307 |
|
|
|
| 308 |
|
|
assocarr<snes_label> labels; |
| 309 |
|
|
static autoarray<int> poslabels; |
| 310 |
|
|
static autoarray<int> neglabels; |
| 311 |
|
|
|
| 312 |
|
|
autoarray<int>* macroposlabels; |
| 313 |
|
|
autoarray<int>* macroneglabels; |
| 314 |
|
|
|
| 315 |
|
|
autoarray<string> sublabels; |
| 316 |
|
|
autoarray<string>* macrosublabels; |
| 317 |
|
|
|
| 318 |
|
|
// randomdude999: ns is still the string to prefix to all labels, it's calculated whenever namespace_list is changed |
| 319 |
|
|
string ns; |
| 320 |
|
|
string ns_backup; |
| 321 |
|
|
autoarray<string> namespace_list; |
| 322 |
|
|
|
| 323 |
|
|
//bool fastrom=false; |
| 324 |
|
|
|
| 325 |
|
|
autoarray<string> includeonce; |
| 326 |
|
|
|
| 327 |
|
926 |
bool confirmname(const char * name) |
| 328 |
|
|
{ |
| 329 |
1/2
✗ Branch 2 → 3 not taken.
✓ Branch 2 → 4 taken 926 times.
|
926 |
if (!name[0]) return false; |
| 330 |
2/2
✓ Branch 5 → 6 taken 132 times.
✓ Branch 5 → 7 taken 794 times.
|
926 |
if (is_digit(name[0])) return false; |
| 331 |
2/2
✓ Branch 16 → 8 taken 5676 times.
✓ Branch 16 → 17 taken 788 times.
|
6464 |
for (int i=0;name[i];i++) |
| 332 |
|
|
{ |
| 333 |
6/6
✓ Branch 9 → 10 taken 288 times.
✓ Branch 9 → 12 taken 5388 times.
✓ Branch 10 → 11 taken 6 times.
✓ Branch 10 → 12 taken 282 times.
✓ Branch 13 → 14 taken 6 times.
✓ Branch 13 → 15 taken 5670 times.
|
5676 |
if (!is_alnum(name[i]) && name[i]!='_') return false; |
| 334 |
|
|
} |
| 335 |
|
788 |
return true; |
| 336 |
|
|
} |
| 337 |
|
|
|
| 338 |
|
2284306 |
string posneglabelname(const char ** input, bool define) |
| 339 |
|
|
{ |
| 340 |
|
2284306 |
const char* label = *input; |
| 341 |
|
|
|
| 342 |
|
2284306 |
string output; |
| 343 |
|
|
|
| 344 |
|
2284306 |
int depth = 0; |
| 345 |
|
2284306 |
bool ismacro = false; |
| 346 |
|
|
|
| 347 |
2/2
✓ Branch 3 → 4 taken 50 times.
✓ Branch 3 → 5 taken 2284256 times.
|
2284306 |
if (label[0] == '?') |
| 348 |
|
|
{ |
| 349 |
|
50 |
ismacro = true; |
| 350 |
|
50 |
label++; |
| 351 |
|
|
} |
| 352 |
5/5
✓ Branch 5 → 6 taken 2284232 times.
✓ Branch 5 → 7 taken 74 times.
✓ Branch 6 → 7 taken 276 times.
✓ Branch 6 → 118 taken 1141978 times.
✓ Branch 6 → 180 taken 1141978 times.
|
2284306 |
if (label[0] == '-' || label[0] == '+') |
| 353 |
|
|
{ |
| 354 |
|
350 |
char first = label[0]; |
| 355 |
4/4
✓ Branch 9 → 10 taken 428 times.
✓ Branch 9 → 11 taken 272 times.
✓ Branch 10 → 8 taken 350 times.
✓ Branch 10 → 11 taken 78 times.
|
700 |
for (depth = 0; label[0] && label[0] == first; depth++) label++; |
| 356 |
|
|
|
| 357 |
3/3
✓ Branch 11 → 12 taken 330 times.
✓ Branch 11 → 52 taken 10 times.
✓ Branch 11 → 75 taken 10 times.
|
350 |
if (!ismacro) |
| 358 |
|
|
{ |
| 359 |
3/3
✓ Branch 12 → 13 taken 266 times.
✓ Branch 12 → 32 taken 32 times.
✓ Branch 12 → 44 taken 32 times.
|
330 |
if (first == '+') |
| 360 |
|
|
{ |
| 361 |
|
266 |
*input = label; |
| 362 |
14/30
✓ Branch 13 → 14 taken 133 times.
✗ Branch 13 → 136 not taken.
✓ Branch 14 → 15 taken 133 times.
✗ Branch 14 → 136 not taken.
✓ Branch 15 → 16 taken 133 times.
✗ Branch 15 → 202 not taken.
✓ Branch 16 → 17 taken 266 times.
✗ Branch 16 → 131 not taken.
✗ Branch 16 → 202 not taken.
✓ Branch 18 → 19 taken 133 times.
✗ Branch 18 → 128 not taken.
✓ Branch 19 → 20 taken 133 times.
✗ Branch 19 → 126 not taken.
✓ Branch 20 → 21 taken 133 times.
✗ Branch 20 → 124 not taken.
✓ Branch 21 → 22 taken 266 times.
✗ Branch 21 → 122 not taken.
✗ Branch 21 → 194 not taken.
✓ Branch 22 → 23 taken 133 times.
✗ Branch 22 → 120 not taken.
✓ Branch 24 → 25 taken 133 times.
✗ Branch 24 → 190 not taken.
✓ Branch 25 → 26 taken 133 times.
✗ Branch 25 → 188 not taken.
✓ Branch 26 → 27 taken 133 times.
✗ Branch 26 → 186 not taken.
✓ Branch 27 → 28 taken 133 times.
✗ Branch 27 → 184 not taken.
✓ Branch 28 → 29 taken 133 times.
✗ Branch 28 → 182 not taken.
|
266 |
output = STR":pos_" + dec(depth) + "_" + dec(poslabels[depth]); |
| 363 |
6/8
✓ Branch 29 → 30 taken 51 times.
✓ Branch 29 → 118 taken 82 times.
✓ Branch 30 → 31 taken 51 times.
✗ Branch 30 → 216 not taken.
✓ Branch 41 → 42 taken 51 times.
✓ Branch 41 → 180 taken 82 times.
✓ Branch 42 → 43 taken 51 times.
✗ Branch 42 → 310 not taken.
|
266 |
if (define) poslabels[depth]++; |
| 364 |
|
|
} |
| 365 |
|
|
else |
| 366 |
|
|
{ |
| 367 |
|
64 |
*input = label; |
| 368 |
6/8
✓ Branch 32 → 33 taken 3 times.
✓ Branch 32 → 35 taken 29 times.
✓ Branch 33 → 34 taken 3 times.
✗ Branch 33 → 216 not taken.
✓ Branch 44 → 45 taken 3 times.
✓ Branch 44 → 47 taken 29 times.
✓ Branch 45 → 46 taken 3 times.
✗ Branch 45 → 310 not taken.
|
64 |
if (define) neglabels[depth]++; |
| 369 |
16/32
✓ Branch 35 → 36 taken 32 times.
✗ Branch 35 → 154 not taken.
✓ Branch 36 → 37 taken 32 times.
✗ Branch 36 → 154 not taken.
✓ Branch 38 → 39 taken 32 times.
✗ Branch 38 → 149 not taken.
✓ Branch 40 → 41 taken 32 times.
✗ Branch 40 → 146 not taken.
✓ Branch 41 → 42 taken 32 times.
✗ Branch 41 → 144 not taken.
✓ Branch 42 → 43 taken 32 times.
✗ Branch 42 → 142 not taken.
✓ Branch 43 → 44 taken 32 times.
✗ Branch 43 → 140 not taken.
✓ Branch 44 → 45 taken 32 times.
✗ Branch 44 → 138 not taken.
✓ Branch 49 → 50 taken 32 times.
✗ Branch 49 → 226 not taken.
✓ Branch 50 → 51 taken 32 times.
✗ Branch 50 → 226 not taken.
✓ Branch 55 → 56 taken 32 times.
✗ Branch 55 → 218 not taken.
✓ Branch 58 → 59 taken 32 times.
✗ Branch 58 → 214 not taken.
✓ Branch 59 → 60 taken 32 times.
✗ Branch 59 → 212 not taken.
✓ Branch 60 → 61 taken 32 times.
✗ Branch 60 → 210 not taken.
✓ Branch 61 → 62 taken 32 times.
✗ Branch 61 → 208 not taken.
✓ Branch 62 → 63 taken 32 times.
✗ Branch 62 → 206 not taken.
|
64 |
output = STR":neg_" + dec(depth) + "_" + dec(neglabels[depth]); |
| 370 |
|
|
} |
| 371 |
|
|
} |
| 372 |
|
|
else |
| 373 |
|
|
{ |
| 374 |
6/12
✓ Branch 52 → 53 taken 10 times.
✗ Branch 52 → 55 not taken.
✓ Branch 53 → 54 taken 10 times.
✗ Branch 53 → 55 not taken.
✗ Branch 54 → 55 not taken.
✓ Branch 54 → 58 taken 10 times.
✓ Branch 75 → 76 taken 10 times.
✗ Branch 75 → 78 not taken.
✓ Branch 76 → 77 taken 10 times.
✗ Branch 76 → 78 not taken.
✗ Branch 77 → 78 not taken.
✓ Branch 77 → 81 taken 10 times.
|
20 |
if (macrorecursion == 0 || macroposlabels == nullptr || macroneglabels == nullptr) |
| 375 |
|
|
{ |
| 376 |
|
✗ |
if (!macrorecursion) asar_throw_error(0, error_type_block, error_id_macro_label_outside_of_macro); |
| 377 |
|
|
} |
| 378 |
|
|
else |
| 379 |
|
|
{ |
| 380 |
4/4
✓ Branch 58 → 59 taken 5 times.
✓ Branch 58 → 88 taken 5 times.
✓ Branch 81 → 82 taken 5 times.
✓ Branch 81 → 131 taken 5 times.
|
20 |
if (first == '+') |
| 381 |
|
|
{ |
| 382 |
|
10 |
*input = label; |
| 383 |
24/48
✓ Branch 59 → 60 taken 5 times.
✗ Branch 59 → 184 not taken.
✓ Branch 60 → 61 taken 5 times.
✗ Branch 60 → 184 not taken.
✓ Branch 62 → 63 taken 5 times.
✗ Branch 62 → 179 not taken.
✓ Branch 64 → 65 taken 5 times.
✗ Branch 64 → 175 not taken.
✓ Branch 66 → 67 taken 5 times.
✗ Branch 66 → 171 not taken.
✓ Branch 68 → 69 taken 5 times.
✗ Branch 68 → 168 not taken.
✓ Branch 69 → 70 taken 5 times.
✗ Branch 69 → 166 not taken.
✓ Branch 70 → 71 taken 5 times.
✗ Branch 70 → 164 not taken.
✓ Branch 71 → 72 taken 5 times.
✗ Branch 71 → 162 not taken.
✓ Branch 72 → 73 taken 5 times.
✗ Branch 72 → 160 not taken.
✓ Branch 73 → 74 taken 5 times.
✗ Branch 73 → 158 not taken.
✓ Branch 74 → 75 taken 5 times.
✗ Branch 74 → 156 not taken.
✓ Branch 84 → 85 taken 5 times.
✗ Branch 84 → 266 not taken.
✓ Branch 85 → 86 taken 5 times.
✗ Branch 85 → 266 not taken.
✓ Branch 90 → 91 taken 5 times.
✗ Branch 90 → 258 not taken.
✓ Branch 94 → 95 taken 5 times.
✗ Branch 94 → 252 not taken.
✓ Branch 98 → 99 taken 5 times.
✗ Branch 98 → 246 not taken.
✓ Branch 101 → 102 taken 5 times.
✗ Branch 101 → 242 not taken.
✓ Branch 102 → 103 taken 5 times.
✗ Branch 102 → 240 not taken.
✓ Branch 103 → 104 taken 5 times.
✗ Branch 103 → 238 not taken.
✓ Branch 104 → 105 taken 5 times.
✗ Branch 104 → 236 not taken.
✓ Branch 105 → 106 taken 5 times.
✗ Branch 105 → 234 not taken.
✓ Branch 106 → 107 taken 5 times.
✗ Branch 106 → 232 not taken.
✓ Branch 107 → 108 taken 5 times.
✗ Branch 107 → 230 not taken.
|
10 |
output = STR":macro_" + dec(calledmacros) + STR"_pos_" + dec(depth) + "_" + dec((*macroposlabels)[depth]); |
| 384 |
6/8
✓ Branch 85 → 86 taken 3 times.
✓ Branch 85 → 118 taken 2 times.
✓ Branch 86 → 87 taken 3 times.
✗ Branch 86 → 216 not taken.
✓ Branch 128 → 129 taken 3 times.
✓ Branch 128 → 180 taken 2 times.
✓ Branch 129 → 130 taken 3 times.
✗ Branch 129 → 310 not taken.
|
10 |
if (define) (*macroposlabels)[depth]++; |
| 385 |
|
|
} |
| 386 |
|
|
else |
| 387 |
|
|
{ |
| 388 |
|
10 |
*input = label; |
| 389 |
6/8
✓ Branch 88 → 89 taken 3 times.
✓ Branch 88 → 91 taken 2 times.
✓ Branch 89 → 90 taken 3 times.
✗ Branch 89 → 216 not taken.
✓ Branch 131 → 132 taken 3 times.
✓ Branch 131 → 134 taken 2 times.
✓ Branch 132 → 133 taken 3 times.
✗ Branch 132 → 310 not taken.
|
10 |
if (define) (*macroneglabels)[depth]++; |
| 390 |
24/48
✓ Branch 91 → 92 taken 5 times.
✗ Branch 91 → 214 not taken.
✓ Branch 92 → 93 taken 5 times.
✗ Branch 92 → 214 not taken.
✓ Branch 94 → 95 taken 5 times.
✗ Branch 94 → 209 not taken.
✓ Branch 96 → 97 taken 5 times.
✗ Branch 96 → 205 not taken.
✓ Branch 98 → 99 taken 5 times.
✗ Branch 98 → 201 not taken.
✓ Branch 100 → 101 taken 5 times.
✗ Branch 100 → 198 not taken.
✓ Branch 101 → 102 taken 5 times.
✗ Branch 101 → 196 not taken.
✓ Branch 102 → 103 taken 5 times.
✗ Branch 102 → 194 not taken.
✓ Branch 103 → 104 taken 5 times.
✗ Branch 103 → 192 not taken.
✓ Branch 104 → 105 taken 5 times.
✗ Branch 104 → 190 not taken.
✓ Branch 105 → 106 taken 5 times.
✗ Branch 105 → 188 not taken.
✓ Branch 106 → 107 taken 5 times.
✗ Branch 106 → 186 not taken.
✓ Branch 136 → 137 taken 5 times.
✗ Branch 136 → 306 not taken.
✓ Branch 137 → 138 taken 5 times.
✗ Branch 137 → 306 not taken.
✓ Branch 142 → 143 taken 5 times.
✗ Branch 142 → 298 not taken.
✓ Branch 146 → 147 taken 5 times.
✗ Branch 146 → 292 not taken.
✓ Branch 150 → 151 taken 5 times.
✗ Branch 150 → 286 not taken.
✓ Branch 153 → 154 taken 5 times.
✗ Branch 153 → 282 not taken.
✓ Branch 154 → 155 taken 5 times.
✗ Branch 154 → 280 not taken.
✓ Branch 155 → 156 taken 5 times.
✗ Branch 155 → 278 not taken.
✓ Branch 156 → 157 taken 5 times.
✗ Branch 156 → 276 not taken.
✓ Branch 157 → 158 taken 5 times.
✗ Branch 157 → 274 not taken.
✓ Branch 158 → 159 taken 5 times.
✗ Branch 158 → 272 not taken.
✓ Branch 159 → 160 taken 5 times.
✗ Branch 159 → 270 not taken.
|
10 |
output = STR":macro_" + dec(calledmacros) + STR"_neg_" + dec(depth) + "_" + dec((*macroneglabels)[depth]); |
| 391 |
|
|
} |
| 392 |
|
|
} |
| 393 |
|
|
} |
| 394 |
|
|
} |
| 395 |
|
|
|
| 396 |
|
2284306 |
return output; |
| 397 |
|
✗ |
} |
| 398 |
|
|
|
| 399 |
|
2924 |
static string labelname(const char ** rawname, bool define=false) |
| 400 |
|
|
{ |
| 401 |
|
|
#define deref_rawname (*rawname) |
| 402 |
|
2924 |
bool ismacro = (deref_rawname[0] == '?'); |
| 403 |
|
|
|
| 404 |
2/2
✓ Branch 2 → 3 taken 24 times.
✓ Branch 2 → 4 taken 2900 times.
|
2924 |
if (ismacro) |
| 405 |
|
|
{ |
| 406 |
|
24 |
deref_rawname++; |
| 407 |
|
|
} |
| 408 |
|
|
|
| 409 |
|
2924 |
bool issublabel = false; |
| 410 |
|
|
|
| 411 |
|
2924 |
string name; |
| 412 |
|
2924 |
int i=-1; |
| 413 |
|
|
|
| 414 |
|
2924 |
autoarray<string>* sublabellist = &sublabels; |
| 415 |
2/2
✓ Branch 5 → 6 taken 24 times.
✓ Branch 5 → 7 taken 2900 times.
|
2924 |
if (ismacro) |
| 416 |
|
|
{ |
| 417 |
|
24 |
sublabellist = macrosublabels; |
| 418 |
|
|
} |
| 419 |
|
|
|
| 420 |
1/5
✗ Branch 8 → 9 not taken.
✓ Branch 8 → 10 taken 2924 times.
✗ Branch 9 → 10 not taken.
✗ Branch 9 → 125 not taken.
✗ Branch 9 → 147 not taken.
|
2924 |
if (is_digit(*deref_rawname)) asar_throw_error(1, error_type_block, error_id_invalid_label_name); |
| 421 |
2/2
✓ Branch 10 → 11 taken 136 times.
✓ Branch 10 → 12 taken 2788 times.
|
2924 |
if (*deref_rawname ==':') |
| 422 |
|
|
{ |
| 423 |
|
136 |
deref_rawname++; |
| 424 |
2/4
✓ Branch 11 → 39 taken 68 times.
✓ Branch 11 → 43 taken 68 times.
✗ Branch 11 → 125 not taken.
✗ Branch 11 → 147 not taken.
|
136 |
name=":"; |
| 425 |
|
|
} |
| 426 |
6/6
✓ Branch 12 → 13 taken 2608 times.
✓ Branch 12 → 39 taken 90 times.
✓ Branch 12 → 43 taken 90 times.
✓ Branch 13 → 14 taken 2584 times.
✓ Branch 13 → 39 taken 12 times.
✓ Branch 13 → 43 taken 12 times.
|
2788 |
else if (!in_struct && !in_sub_struct) |
| 427 |
|
|
{ |
| 428 |
2/2
✓ Branch 16 → 15 taken 68 times.
✓ Branch 16 → 17 taken 2584 times.
|
2652 |
for (i=0;(*deref_rawname =='.');i++) deref_rawname++; |
| 429 |
1/5
✗ Branch 18 → 19 not taken.
✓ Branch 18 → 20 taken 2584 times.
✗ Branch 19 → 20 not taken.
✗ Branch 19 → 125 not taken.
✗ Branch 19 → 147 not taken.
|
2584 |
if (!is_ualnum(*deref_rawname)) asar_throw_error(1, error_type_block, error_id_invalid_label_name); |
| 430 |
3/7
✓ Branch 20 → 21 taken 22 times.
✓ Branch 20 → 23 taken 2562 times.
✗ Branch 21 → 22 not taken.
✓ Branch 21 → 23 taken 22 times.
✗ Branch 22 → 23 not taken.
✗ Branch 22 → 125 not taken.
✗ Branch 22 → 147 not taken.
|
2584 |
if (emulatexkas && i>1) asar_throw_warning(1, warning_id_convert_to_asar); |
| 431 |
3/3
✓ Branch 23 → 24 taken 62 times.
✓ Branch 23 → 39 taken 1261 times.
✓ Branch 23 → 43 taken 1261 times.
|
2584 |
if (i) |
| 432 |
|
|
{ |
| 433 |
5/15
✓ Branch 24 → 25 taken 62 times.
✗ Branch 24 → 28 not taken.
✓ Branch 25 → 26 taken 62 times.
✗ Branch 25 → 125 not taken.
✗ Branch 25 → 147 not taken.
✓ Branch 26 → 27 taken 62 times.
✗ Branch 26 → 125 not taken.
✗ Branch 26 → 147 not taken.
✗ Branch 27 → 28 not taken.
✓ Branch 27 → 29 taken 62 times.
✗ Branch 30 → 31 not taken.
✓ Branch 30 → 32 taken 62 times.
✗ Branch 31 → 32 not taken.
✗ Branch 31 → 125 not taken.
✗ Branch 31 → 147 not taken.
|
62 |
if (!sublabellist || !(*sublabellist)[i - 1]) asar_throw_error(1, error_type_block, error_id_label_missing_parent); |
| 434 |
6/14
✓ Branch 32 → 33 taken 31 times.
✗ Branch 32 → 105 not taken.
✓ Branch 33 → 34 taken 31 times.
✗ Branch 33 → 105 not taken.
✓ Branch 34 → 35 taken 62 times.
✗ Branch 34 → 103 not taken.
✗ Branch 34 → 119 not taken.
✓ Branch 35 → 36 taken 62 times.
✗ Branch 35 → 101 not taken.
✗ Branch 35 → 119 not taken.
✓ Branch 36 → 37 taken 31 times.
✗ Branch 36 → 117 not taken.
✓ Branch 37 → 38 taken 31 times.
✗ Branch 37 → 115 not taken.
|
62 |
name+=STR(*sublabellist)[i-1]+"_"; |
| 435 |
|
62 |
issublabel = true; |
| 436 |
|
|
} |
| 437 |
|
|
} |
| 438 |
|
|
|
| 439 |
8/8
✓ Branch 39 → 40 taken 12 times.
✓ Branch 39 → 58 taken 1450 times.
✓ Branch 40 → 41 taken 7 times.
✓ Branch 40 → 58 taken 5 times.
✓ Branch 43 → 44 taken 12 times.
✓ Branch 43 → 71 taken 1450 times.
✓ Branch 44 → 45 taken 7 times.
✓ Branch 44 → 71 taken 5 times.
|
2924 |
if (ismacro && !issublabel) |
| 440 |
|
|
{ |
| 441 |
|
|
// RPG Hacker: Don't add the prefix for sublabels, because they already inherit it from |
| 442 |
|
|
// their parents' names. |
| 443 |
4/12
✓ Branch 41 → 42 taken 7 times.
✗ Branch 41 → 43 not taken.
✗ Branch 42 → 43 not taken.
✓ Branch 42 → 44 taken 7 times.
✗ Branch 43 → 44 not taken.
✗ Branch 43 → 125 not taken.
✓ Branch 45 → 46 taken 7 times.
✗ Branch 45 → 47 not taken.
✗ Branch 46 → 47 not taken.
✓ Branch 46 → 48 taken 7 times.
✗ Branch 47 → 48 not taken.
✗ Branch 47 → 147 not taken.
|
14 |
if (!macrorecursion || macrosublabels == nullptr) asar_throw_error(1, error_type_block, error_id_macro_label_outside_of_macro); |
| 444 |
12/24
✓ Branch 45 → 46 taken 7 times.
✗ Branch 45 → 118 not taken.
✓ Branch 47 → 48 taken 7 times.
✗ Branch 47 → 115 not taken.
✓ Branch 48 → 49 taken 7 times.
✗ Branch 48 → 113 not taken.
✓ Branch 49 → 50 taken 7 times.
✗ Branch 49 → 111 not taken.
✓ Branch 50 → 51 taken 7 times.
✗ Branch 50 → 109 not taken.
✓ Branch 51 → 52 taken 7 times.
✗ Branch 51 → 107 not taken.
✓ Branch 53 → 54 taken 7 times.
✗ Branch 53 → 135 not taken.
✓ Branch 56 → 57 taken 7 times.
✗ Branch 56 → 131 not taken.
✓ Branch 57 → 58 taken 7 times.
✗ Branch 57 → 129 not taken.
✓ Branch 58 → 59 taken 7 times.
✗ Branch 58 → 127 not taken.
✓ Branch 59 → 60 taken 7 times.
✗ Branch 59 → 125 not taken.
✓ Branch 60 → 61 taken 7 times.
✗ Branch 60 → 123 not taken.
|
14 |
name = STR":macro_" + dec(calledmacros) + "_" + name; |
| 445 |
|
|
} |
| 446 |
|
|
|
| 447 |
4/4
✓ Branch 58 → 59 taken 12 times.
✓ Branch 58 → 63 taken 1450 times.
✓ Branch 71 → 72 taken 12 times.
✓ Branch 71 → 77 taken 1450 times.
|
2924 |
if(in_sub_struct) |
| 448 |
|
|
{ |
| 449 |
4/8
✓ Branch 59 → 60 taken 12 times.
✗ Branch 59 → 124 not taken.
✓ Branch 60 → 61 taken 12 times.
✗ Branch 60 → 122 not taken.
✓ Branch 73 → 74 taken 12 times.
✗ Branch 73 → 145 not taken.
✓ Branch 74 → 75 taken 12 times.
✗ Branch 74 → 143 not taken.
|
24 |
name += struct_parent + "."; |
| 450 |
|
|
} |
| 451 |
|
|
|
| 452 |
8/8
✓ Branch 63 → 64 taken 1372 times.
✓ Branch 63 → 65 taken 90 times.
✓ Branch 64 → 65 taken 12 times.
✓ Branch 64 → 70 taken 1360 times.
✓ Branch 77 → 78 taken 1372 times.
✓ Branch 77 → 79 taken 90 times.
✓ Branch 78 → 79 taken 12 times.
✓ Branch 78 → 84 taken 1360 times.
|
2924 |
if (in_struct || in_sub_struct) |
| 453 |
|
|
{ |
| 454 |
2/4
✓ Branch 65 → 66 taken 102 times.
✗ Branch 65 → 125 not taken.
✓ Branch 79 → 80 taken 102 times.
✗ Branch 79 → 147 not taken.
|
204 |
name += struct_name; |
| 455 |
2/4
✓ Branch 66 → 67 taken 102 times.
✗ Branch 66 → 125 not taken.
✓ Branch 80 → 81 taken 102 times.
✗ Branch 80 → 147 not taken.
|
204 |
name += '.'; |
| 456 |
2/8
✗ Branch 67 → 68 not taken.
✓ Branch 67 → 69 taken 102 times.
✗ Branch 68 → 69 not taken.
✗ Branch 68 → 125 not taken.
✗ Branch 81 → 82 not taken.
✓ Branch 81 → 83 taken 102 times.
✗ Branch 82 → 83 not taken.
✗ Branch 82 → 147 not taken.
|
204 |
if(*deref_rawname != '.') asar_throw_error(1, error_type_block, error_id_invalid_label_name); //probably should be a better error. TODO!!! |
| 457 |
|
204 |
deref_rawname++; |
| 458 |
|
|
} |
| 459 |
|
|
|
| 460 |
2/8
✗ Branch 71 → 72 not taken.
✓ Branch 71 → 73 taken 1462 times.
✗ Branch 72 → 73 not taken.
✗ Branch 72 → 125 not taken.
✗ Branch 85 → 86 not taken.
✓ Branch 85 → 87 taken 1462 times.
✗ Branch 86 → 87 not taken.
✗ Branch 86 → 147 not taken.
|
2924 |
if (!is_ualnum(*deref_rawname)) asar_throw_error(1, error_type_block, error_id_invalid_label_name); |
| 461 |
|
|
|
| 462 |
16/16
✓ Branch 88 → 89 taken 1663 times.
✓ Branch 88 → 91 taken 11421 times.
✓ Branch 89 → 90 taken 1501 times.
✓ Branch 89 → 91 taken 162 times.
✓ Branch 90 → 91 taken 39 times.
✓ Branch 90 → 92 taken 1462 times.
✓ Branch 93 → 74 taken 11622 times.
✓ Branch 93 → 94 taken 1462 times.
✓ Branch 102 → 103 taken 1663 times.
✓ Branch 102 → 105 taken 11421 times.
✓ Branch 103 → 104 taken 1501 times.
✓ Branch 103 → 105 taken 162 times.
✓ Branch 104 → 105 taken 39 times.
✓ Branch 104 → 106 taken 1462 times.
✓ Branch 107 → 88 taken 11622 times.
✓ Branch 107 → 108 taken 1462 times.
|
26168 |
while (is_ualnum(*deref_rawname) || *deref_rawname == '.' || *deref_rawname == '[') |
| 463 |
|
|
{ |
| 464 |
12/12
✓ Branch 74 → 75 taken 11019 times.
✓ Branch 74 → 84 taken 603 times.
✓ Branch 75 → 76 taken 10983 times.
✓ Branch 75 → 84 taken 36 times.
✓ Branch 76 → 77 taken 39 times.
✓ Branch 76 → 84 taken 10944 times.
✓ Branch 88 → 89 taken 11019 times.
✓ Branch 88 → 98 taken 603 times.
✓ Branch 89 → 90 taken 10983 times.
✓ Branch 89 → 98 taken 36 times.
✓ Branch 90 → 91 taken 39 times.
✓ Branch 90 → 98 taken 10944 times.
|
23244 |
if(!in_struct && !in_sub_struct && *deref_rawname == '[') |
| 465 |
|
|
{ |
| 466 |
|
78 |
bool invalid = true; |
| 467 |
2/4
✓ Branch 80 → 78 taken 117 times.
✗ Branch 80 → 81 not taken.
✓ Branch 94 → 92 taken 117 times.
✗ Branch 94 → 95 not taken.
|
234 |
while (isprint(*deref_rawname)) |
| 468 |
|
|
{ |
| 469 |
4/4
✓ Branch 78 → 79 taken 39 times.
✓ Branch 78 → 80 taken 78 times.
✓ Branch 92 → 93 taken 39 times.
✓ Branch 92 → 94 taken 78 times.
|
234 |
if (*(deref_rawname++) == ']') |
| 470 |
|
|
{ |
| 471 |
|
78 |
invalid = false; |
| 472 |
|
78 |
break; |
| 473 |
|
|
} |
| 474 |
|
|
} |
| 475 |
2/4
✗ Branch 81 → 82 not taken.
✓ Branch 81 → 83 taken 39 times.
✗ Branch 95 → 96 not taken.
✓ Branch 95 → 97 taken 39 times.
|
78 |
if (invalid) |
| 476 |
|
|
{ |
| 477 |
|
✗ |
asar_throw_error(1, error_type_block, error_id_invalid_label_missing_closer); |
| 478 |
|
|
} |
| 479 |
|
78 |
} |
| 480 |
2/4
✗ Branch 84 → 85 not taken.
✓ Branch 84 → 86 taken 11583 times.
✗ Branch 98 → 99 not taken.
✓ Branch 98 → 100 taken 11583 times.
|
23166 |
else if (*deref_rawname == '{') |
| 481 |
|
|
{ |
| 482 |
|
✗ |
asar_throw_error(1, error_type_block, error_id_array_invalid_inside_structs); |
| 483 |
|
|
} |
| 484 |
|
|
|
| 485 |
2/4
✓ Branch 86 → 87 taken 11622 times.
✗ Branch 86 → 125 not taken.
✓ Branch 100 → 101 taken 11622 times.
✗ Branch 100 → 147 not taken.
|
23244 |
name+=*(deref_rawname++); |
| 486 |
|
|
} |
| 487 |
8/8
✓ Branch 94 → 95 taken 384 times.
✓ Branch 94 → 99 taken 1078 times.
✓ Branch 95 → 96 taken 282 times.
✓ Branch 95 → 99 taken 102 times.
✓ Branch 108 → 109 taken 384 times.
✓ Branch 108 → 113 taken 1078 times.
✓ Branch 109 → 110 taken 282 times.
✓ Branch 109 → 113 taken 102 times.
|
2924 |
if (define && i>=0) |
| 488 |
|
|
{ |
| 489 |
2/4
✓ Branch 96 → 97 taken 282 times.
✗ Branch 96 → 125 not taken.
✓ Branch 110 → 111 taken 282 times.
✗ Branch 110 → 147 not taken.
|
564 |
(*sublabellist).reset(i); |
| 490 |
4/8
✓ Branch 97 → 98 taken 282 times.
✗ Branch 97 → 125 not taken.
✓ Branch 98 → 99 taken 282 times.
✗ Branch 98 → 125 not taken.
✓ Branch 111 → 112 taken 282 times.
✗ Branch 111 → 147 not taken.
✓ Branch 112 → 113 taken 282 times.
✗ Branch 112 → 147 not taken.
|
564 |
(*sublabellist)[i]=name; |
| 491 |
|
|
} |
| 492 |
|
2924 |
return name; |
| 493 |
|
|
#undef deref_rawname |
| 494 |
|
✗ |
} |
| 495 |
|
|
|
| 496 |
|
2132 |
inline bool labelvalcore(const char ** rawname, snes_label * rval, bool define, bool shouldthrow) |
| 497 |
|
|
{ |
| 498 |
2/4
✓ Branch 2 → 3 taken 1066 times.
✗ Branch 2 → 62 not taken.
✓ Branch 3 → 4 taken 1066 times.
✗ Branch 3 → 80 not taken.
|
2132 |
string name=labelname(rawname, define); |
| 499 |
|
2132 |
snes_label rval_; |
| 500 |
33/59
✓ Branch 4 → 5 taken 1066 times.
✗ Branch 4 → 46 not taken.
✓ Branch 5 → 6 taken 60 times.
✓ Branch 5 → 13 taken 1006 times.
✓ Branch 6 → 7 taken 1066 times.
✗ Branch 6 → 58 not taken.
✓ Branch 7 → 8 taken 120 times.
✓ Branch 7 → 17 taken 1006 times.
✗ Branch 7 → 46 not taken.
✓ Branch 8 → 9 taken 60 times.
✗ Branch 8 → 46 not taken.
✓ Branch 10 → 11 taken 60 times.
✗ Branch 10 → 46 not taken.
✓ Branch 11 → 12 taken 94 times.
✓ Branch 11 → 13 taken 26 times.
✗ Branch 11 → 58 not taken.
✓ Branch 12 → 13 taken 60 times.
✗ Branch 12 → 58 not taken.
✓ Branch 14 → 15 taken 120 times.
✓ Branch 14 → 16 taken 1006 times.
✗ Branch 14 → 58 not taken.
✓ Branch 15 → 16 taken 34 times.
✓ Branch 15 → 17 taken 26 times.
✓ Branch 16 → 17 taken 60 times.
✓ Branch 16 → 18 taken 1006 times.
✓ Branch 18 → 19 taken 94 times.
✓ Branch 18 → 20 taken 1006 times.
✓ Branch 18 → 27 taken 1032 times.
✓ Branch 20 → 21 taken 94 times.
✓ Branch 20 → 22 taken 1006 times.
✗ Branch 20 → 58 not taken.
✓ Branch 21 → 22 taken 34 times.
✗ Branch 21 → 56 not taken.
✓ Branch 22 → 23 taken 60 times.
✓ Branch 22 → 24 taken 1006 times.
✓ Branch 23 → 24 taken 34 times.
✗ Branch 23 → 54 not taken.
✓ Branch 24 → 25 taken 60 times.
✓ Branch 24 → 26 taken 1006 times.
✓ Branch 26 → 27 taken 34 times.
✓ Branch 26 → 38 taken 1032 times.
✓ Branch 30 → 31 taken 34 times.
✗ Branch 30 → 74 not taken.
✓ Branch 31 → 32 taken 34 times.
✗ Branch 31 → 72 not taken.
✓ Branch 33 → 34 taken 34 times.
✗ Branch 33 → 70 not taken.
✗ Branch 46 → 47 not taken.
✗ Branch 46 → 48 not taken.
✗ Branch 50 → 51 not taken.
✗ Branch 50 → 52 not taken.
✗ Branch 58 → 59 not taken.
✗ Branch 58 → 60 not taken.
✗ Branch 61 → 62 not taken.
✗ Branch 61 → 63 not taken.
✗ Branch 64 → 65 not taken.
✗ Branch 64 → 66 not taken.
✗ Branch 67 → 68 not taken.
✗ Branch 67 → 69 not taken.
|
2132 |
if (ns && labels.exists(STR ns+name)) {rval_ = labels.find(STR ns+name);} |
| 501 |
8/12
✓ Branch 28 → 29 taken 1032 times.
✗ Branch 28 → 60 not taken.
✓ Branch 29 → 30 taken 932 times.
✓ Branch 29 → 33 taken 100 times.
✓ Branch 31 → 32 taken 932 times.
✗ Branch 31 → 60 not taken.
✓ Branch 39 → 40 taken 1032 times.
✗ Branch 39 → 78 not taken.
✓ Branch 40 → 41 taken 932 times.
✓ Branch 40 → 44 taken 100 times.
✓ Branch 42 → 43 taken 932 times.
✗ Branch 42 → 78 not taken.
|
2064 |
else if (labels.exists(name)) {rval_ = labels.find(name);} |
| 502 |
|
|
else |
| 503 |
|
|
{ |
| 504 |
6/8
✓ Branch 33 → 34 taken 27 times.
✓ Branch 33 → 37 taken 73 times.
✗ Branch 34 → 35 not taken.
✓ Branch 34 → 37 taken 27 times.
✓ Branch 44 → 45 taken 27 times.
✓ Branch 44 → 48 taken 73 times.
✗ Branch 45 → 46 not taken.
✓ Branch 45 → 48 taken 27 times.
|
200 |
if (shouldthrow && pass) |
| 505 |
|
|
{ |
| 506 |
|
✗ |
asar_throw_error(2, error_type_block, error_id_label_not_found, name.data()); |
| 507 |
|
|
} |
| 508 |
2/4
✓ Branch 37 → 38 taken 100 times.
✗ Branch 37 → 39 not taken.
✓ Branch 48 → 49 taken 100 times.
✗ Branch 48 → 50 not taken.
|
200 |
if (rval) { rval->pos = (unsigned int)-1; rval->is_static = false; } |
| 509 |
|
200 |
return false; |
| 510 |
|
|
} |
| 511 |
2/4
✓ Branch 40 → 41 taken 966 times.
✗ Branch 40 → 42 not taken.
✓ Branch 51 → 52 taken 966 times.
✗ Branch 51 → 53 not taken.
|
1932 |
if (rval) |
| 512 |
|
|
{ |
| 513 |
|
1932 |
*rval=rval_; |
| 514 |
|
|
//if (fastrom && (rval_&0x700000)!=0x700000) *rval|=0x800000; |
| 515 |
|
|
} |
| 516 |
|
1932 |
return true; |
| 517 |
|
2132 |
} |
| 518 |
|
|
|
| 519 |
|
1104 |
snes_label labelval(const char ** rawname, bool define) |
| 520 |
|
|
{ |
| 521 |
|
1104 |
snes_label rval; |
| 522 |
2/4
✓ Branch 3 → 4 taken 552 times.
✗ Branch 3 → 6 not taken.
✓ Branch 4 → 5 taken 552 times.
✗ Branch 4 → 7 not taken.
|
1104 |
labelvalcore(rawname, &rval, define, true); |
| 523 |
|
1104 |
return rval; |
| 524 |
|
|
} |
| 525 |
|
|
|
| 526 |
|
✗ |
snes_label labelval(char ** rawname, bool define) |
| 527 |
|
|
{ |
| 528 |
|
✗ |
snes_label rval; |
| 529 |
|
✗ |
labelvalcore(const_cast<const char**>(rawname), &rval, define, true); |
| 530 |
|
✗ |
return rval; |
| 531 |
|
|
} |
| 532 |
|
|
|
| 533 |
|
56 |
snes_label labelval(string name, bool define) |
| 534 |
|
|
{ |
| 535 |
|
56 |
const char * rawname=name; |
| 536 |
|
56 |
snes_label rval; |
| 537 |
2/4
✓ Branch 4 → 5 taken 28 times.
✗ Branch 4 → 7 not taken.
✓ Branch 6 → 7 taken 28 times.
✗ Branch 6 → 10 not taken.
|
56 |
labelvalcore(&rawname, &rval, define, true); |
| 538 |
|
84 |
return rval; |
| 539 |
|
|
} |
| 540 |
|
|
|
| 541 |
|
872 |
bool labelval(const char ** rawname, snes_label * rval, bool define) |
| 542 |
|
|
{ |
| 543 |
|
872 |
return labelvalcore(rawname, rval, define, false); |
| 544 |
|
|
} |
| 545 |
|
|
|
| 546 |
|
✗ |
bool labelval(char ** rawname, snes_label * rval, bool define) |
| 547 |
|
|
{ |
| 548 |
|
✗ |
return labelvalcore(const_cast<const char**>(rawname), rval, define, false); |
| 549 |
|
|
} |
| 550 |
|
|
|
| 551 |
|
100 |
bool labelval(string name, snes_label * rval, bool define) |
| 552 |
|
|
{ |
| 553 |
|
100 |
const char * str=name; |
| 554 |
2/4
✓ Branch 3 → 4 taken 50 times.
✗ Branch 3 → 7 not taken.
✓ Branch 4 → 5 taken 50 times.
✗ Branch 4 → 8 not taken.
|
200 |
return labelvalcore(&str, rval, define, false); |
| 555 |
|
|
} |
| 556 |
|
|
|
| 557 |
|
1100 |
static void setlabel(string name, int loc=-1, bool is_static=false) |
| 558 |
|
|
{ |
| 559 |
2/2
✓ Branch 2 → 3 taken 906 times.
✓ Branch 2 → 5 taken 194 times.
|
1100 |
if (loc==-1) |
| 560 |
|
|
{ |
| 561 |
1/3
✓ Branch 3 → 4 taken 906 times.
✗ Branch 3 → 45 not taken.
✗ Branch 3 → 46 not taken.
|
906 |
verifysnespos(); |
| 562 |
|
906 |
loc=snespos; |
| 563 |
|
|
} |
| 564 |
|
|
|
| 565 |
|
1100 |
snes_label label_data; |
| 566 |
|
1100 |
label_data.pos = (unsigned int)loc; |
| 567 |
|
1100 |
label_data.is_static = is_static; |
| 568 |
|
|
|
| 569 |
|
|
unsigned int labelpos; |
| 570 |
4/4
✓ Branch 6 → 7 taken 184 times.
✓ Branch 6 → 15 taken 366 times.
✓ Branch 7 → 8 taken 184 times.
✓ Branch 7 → 16 taken 366 times.
|
1100 |
if (pass==0) |
| 571 |
|
|
{ |
| 572 |
5/7
✓ Branch 8 → 9 taken 184 times.
✗ Branch 8 → 45 not taken.
✓ Branch 9 → 10 taken 185 times.
✓ Branch 9 → 12 taken 183 times.
✗ Branch 9 → 46 not taken.
✓ Branch 10 → 11 taken 1 time.
✓ Branch 10 → 13 taken 183 times.
|
368 |
if (labels.exists(name)) |
| 573 |
|
|
{ |
| 574 |
|
2 |
movinglabelspossible=true; |
| 575 |
2/4
✗ Branch 11 → 12 not taken.
✓ Branch 11 → 45 taken 1 time.
✗ Branch 12 → 13 not taken.
✓ Branch 12 → 46 taken 1 time.
|
2 |
asar_throw_error(0, error_type_block, error_id_label_redefined, name.data()); |
| 576 |
|
|
} |
| 577 |
2/4
✓ Branch 13 → 14 taken 183 times.
✗ Branch 13 → 45 not taken.
✓ Branch 14 → 15 taken 183 times.
✗ Branch 14 → 46 not taken.
|
366 |
labels.create(name) = label_data; |
| 578 |
|
|
} |
| 579 |
4/4
✓ Branch 15 → 16 taken 183 times.
✓ Branch 15 → 19 taken 183 times.
✓ Branch 16 → 17 taken 183 times.
✓ Branch 16 → 20 taken 183 times.
|
732 |
else if (pass==1) |
| 580 |
|
|
{ |
| 581 |
2/4
✓ Branch 17 → 18 taken 183 times.
✗ Branch 17 → 45 not taken.
✓ Branch 18 → 19 taken 183 times.
✗ Branch 18 → 46 not taken.
|
366 |
labels.create(name) = label_data; |
| 582 |
|
|
} |
| 583 |
2/4
✓ Branch 19 → 20 taken 183 times.
✗ Branch 19 → 42 not taken.
✓ Branch 20 → 21 taken 183 times.
✗ Branch 20 → 43 not taken.
|
366 |
else if (pass==2) |
| 584 |
|
|
{ |
| 585 |
|
|
//all label locations are known at this point, add a sanity check |
| 586 |
4/10
✓ Branch 21 → 22 taken 183 times.
✗ Branch 21 → 45 not taken.
✓ Branch 22 → 23 taken 183 times.
✓ Branch 22 → 24 taken 183 times.
✗ Branch 22 → 46 not taken.
✗ Branch 23 → 24 not taken.
✓ Branch 23 → 25 taken 183 times.
✗ Branch 23 → 45 not taken.
✗ Branch 24 → 25 not taken.
✗ Branch 24 → 46 not taken.
|
366 |
if (!labels.exists(name)) asar_throw_error(2, error_type_block, error_id_label_on_third_pass); |
| 587 |
2/4
✓ Branch 25 → 26 taken 183 times.
✗ Branch 25 → 45 not taken.
✓ Branch 26 → 27 taken 183 times.
✗ Branch 26 → 46 not taken.
|
366 |
labelpos = labels.find(name).pos; |
| 588 |
2/7
✗ Branch 26 → 27 not taken.
✓ Branch 26 → 42 taken 183 times.
✗ Branch 27 → 28 not taken.
✗ Branch 27 → 42 not taken.
✓ Branch 27 → 43 taken 183 times.
✗ Branch 28 → 29 not taken.
✗ Branch 28 → 43 not taken.
|
366 |
if ((int)labelpos != loc && !movinglabelspossible) |
| 589 |
|
|
{ |
| 590 |
|
✗ |
if((unsigned int)loc < labelpos && (unsigned int)loc>>16 != labelpos>>16) asar_throw_error(2, error_type_block, error_id_label_ambiguous, name.raw()); |
| 591 |
|
✗ |
else if((unsigned int)loc < labelpos && labelpos == (dp_base + 0xFFu)) asar_throw_error(2, error_type_block, error_id_label_ambiguous, name.raw()); |
| 592 |
|
✗ |
else if(errored) return; |
| 593 |
|
✗ |
else asar_throw_error(2, error_type_block, error_id_label_moving); |
| 594 |
|
|
} |
| 595 |
|
|
} |
| 596 |
|
|
} |
| 597 |
|
|
|
| 598 |
|
|
|
| 599 |
|
|
chartabledata table; |
| 600 |
|
|
static autoarray<chartabledata> tablestack; |
| 601 |
|
|
|
| 602 |
|
|
static int freespacepos[256]; |
| 603 |
|
|
static int freespacelen[256]; |
| 604 |
|
|
static int freespaceidnext; |
| 605 |
|
|
static int freespaceid; |
| 606 |
|
|
static int freespacestart; |
| 607 |
|
|
int freespaceextra; |
| 608 |
|
|
bool freespace_is_freecode; |
| 609 |
|
|
|
| 610 |
|
|
static bool freespaceleak[256]; |
| 611 |
|
|
static string freespacefile[256]; |
| 612 |
|
|
|
| 613 |
|
|
static int freespaceorgpos[256]; |
| 614 |
|
|
static int freespaceorglen[256]; |
| 615 |
|
|
static bool freespacestatic[256]; |
| 616 |
|
|
static unsigned char freespacebyte[256]; |
| 617 |
|
|
|
| 618 |
|
592 |
static void cleartable() |
| 619 |
|
|
{ |
| 620 |
2/2
✓ Branch 4 → 3 taken 151552 times.
✓ Branch 4 → 5 taken 592 times.
|
152144 |
for (unsigned int i=0;i<256;i++) table.table[i]=i; |
| 621 |
|
592 |
} |
| 622 |
|
|
|
| 623 |
|
|
struct pushable { |
| 624 |
|
|
int arch; |
| 625 |
|
|
int snespos; |
| 626 |
|
|
int snesstart; |
| 627 |
|
|
int snesposreal; |
| 628 |
|
|
int snesstartreal; |
| 629 |
|
|
int freeid; |
| 630 |
|
|
int freeex; |
| 631 |
|
|
int freest; |
| 632 |
|
|
int arch1; |
| 633 |
|
|
int arch2; |
| 634 |
|
|
int arch3; |
| 635 |
|
|
int arch4; |
| 636 |
|
|
}; |
| 637 |
|
|
static autoarray<pushable> pushpc; |
| 638 |
|
|
static int pushpcnum; |
| 639 |
|
|
|
| 640 |
|
|
static autoarray<int> basestack; |
| 641 |
|
|
static int basestacknum; |
| 642 |
|
|
|
| 643 |
|
|
struct ns_pushable { |
| 644 |
|
|
string ns; |
| 645 |
|
|
autoarray<string> namespace_list; |
| 646 |
|
|
bool nested_namespaces; |
| 647 |
|
|
}; |
| 648 |
|
|
|
| 649 |
|
|
static autoarray<ns_pushable> pushns; |
| 650 |
|
|
static int pushnsnum; |
| 651 |
|
|
|
| 652 |
|
|
|
| 653 |
|
|
static unsigned char fillbyte[12]; |
| 654 |
|
|
static unsigned char padbyte[12]; |
| 655 |
|
|
|
| 656 |
|
|
static bool nested_namespaces = false; |
| 657 |
|
|
|
| 658 |
|
936 |
static int getfreespaceid() |
| 659 |
|
|
{ |
| 660 |
|
|
static const int max_num_freespaces = 125; |
| 661 |
1/2
✗ Branch 2 → 3 not taken.
✓ Branch 2 → 4 taken 936 times.
|
936 |
if (freespaceidnext > max_num_freespaces) asar_throw_error(pass, error_type_fatal, error_id_freespace_limit_reached, max_num_freespaces); |
| 662 |
|
936 |
return freespaceidnext++; |
| 663 |
|
|
} |
| 664 |
|
|
|
| 665 |
|
874788 |
void checkbankcross() |
| 666 |
|
|
{ |
| 667 |
5/8
✓ Branch 2 → 3 taken 7092 times.
✓ Branch 2 → 7 taken 867696 times.
✓ Branch 3 → 4 taken 7092 times.
✗ Branch 3 → 7 not taken.
✓ Branch 4 → 5 taken 7092 times.
✗ Branch 4 → 7 not taken.
✓ Branch 5 → 6 taken 7092 times.
✗ Branch 5 → 7 not taken.
|
874788 |
if (snespos<0 && realsnespos<0 && startpos<0 && realstartpos<0) return; |
| 668 |
2/2
✓ Branch 7 → 8 taken 378 times.
✓ Branch 7 → 9 taken 867318 times.
|
867696 |
if (disable_bank_cross_errors) return; |
| 669 |
2/2
✓ Branch 9 → 10 taken 4 times.
✓ Branch 9 → 11 taken 867314 times.
|
867318 |
unsigned int mask = 0x7FFF0000 | (check_half_banks_crossed ? 0x8000 : 0); |
| 670 |
4/4
✓ Branch 12 → 13 taken 50 times.
✓ Branch 12 → 15 taken 867268 times.
✓ Branch 13 → 14 taken 2 times.
✓ Branch 13 → 15 taken 48 times.
|
867318 |
if (((snespos^ startpos) & mask) && (((snespos - 1) ^ startpos) & mask)) |
| 671 |
|
|
{ |
| 672 |
|
2 |
asar_throw_error(pass, error_type_fatal, error_id_bank_border_crossed, snespos); |
| 673 |
|
|
} |
| 674 |
3/4
✓ Branch 15 → 16 taken 48 times.
✓ Branch 15 → 18 taken 867268 times.
✗ Branch 16 → 17 not taken.
✓ Branch 16 → 18 taken 48 times.
|
867316 |
else if (((realsnespos^realstartpos) & mask) && (((realsnespos - 1) ^ realstartpos) & mask)) |
| 675 |
|
|
{ |
| 676 |
|
✗ |
asar_throw_error(pass, error_type_fatal, error_id_bank_border_crossed, realsnespos); |
| 677 |
|
|
} |
| 678 |
|
|
} |
| 679 |
|
|
|
| 680 |
|
2270 |
static void freespaceend() |
| 681 |
|
|
{ |
| 682 |
4/4
✓ Branch 2 → 3 taken 1502 times.
✓ Branch 2 → 5 taken 768 times.
✓ Branch 3 → 4 taken 930 times.
✓ Branch 3 → 5 taken 572 times.
|
2270 |
if ((snespos&0x7F000000) && ((unsigned int)snespos&0x80000000)==0) |
| 683 |
|
|
{ |
| 684 |
|
930 |
freespacelen[freespaceid]=snespos-freespacestart+freespaceextra; |
| 685 |
|
930 |
snespos=(int)0xFFFFFFFF; |
| 686 |
|
|
} |
| 687 |
|
2270 |
freespaceextra=0; |
| 688 |
|
2270 |
} |
| 689 |
|
|
|
| 690 |
|
|
int numopcodes; |
| 691 |
|
|
|
| 692 |
|
|
bool warnxkas; |
| 693 |
|
|
|
| 694 |
|
5920 |
static void adddefine(const string & key, string & value) |
| 695 |
|
|
{ |
| 696 |
1/2
✓ Branch 4 → 5 taken 5920 times.
✗ Branch 4 → 8 not taken.
|
5920 |
if (!defines.exists(key)) defines.create(key) = value; |
| 697 |
|
5920 |
} |
| 698 |
|
|
|
| 699 |
|
592 |
void initstuff() |
| 700 |
|
|
{ |
| 701 |
2/2
✓ Branch 2 → 3 taken 200 times.
✓ Branch 2 → 6 taken 392 times.
|
592 |
if (pass==0) |
| 702 |
|
|
{ |
| 703 |
2/2
✓ Branch 5 → 4 taken 51200 times.
✓ Branch 5 → 6 taken 200 times.
|
51400 |
for (int i=0;i<256;i++) |
| 704 |
|
|
{ |
| 705 |
|
51200 |
freespacepos[i]=-1; |
| 706 |
|
51200 |
freespaceleak[i]=true; |
| 707 |
|
51200 |
freespaceorgpos[i]=-2; |
| 708 |
|
51200 |
freespaceorglen[i]=-1; |
| 709 |
|
51200 |
freespacebyte[i] = 0x00; |
| 710 |
|
|
} |
| 711 |
|
|
} |
| 712 |
|
592 |
arch=arch_65816; |
| 713 |
|
592 |
mapper=lorom; |
| 714 |
|
592 |
mapper_set = false; |
| 715 |
|
592 |
reallycalledmacros=0; |
| 716 |
|
592 |
calledmacros=0; |
| 717 |
|
592 |
macrorecursion=0; |
| 718 |
|
592 |
repeatnext=1; |
| 719 |
|
592 |
defines.reset(); |
| 720 |
|
592 |
builtindefines.each(adddefine); |
| 721 |
|
592 |
clidefines.each(adddefine); |
| 722 |
|
592 |
ns=""; |
| 723 |
|
592 |
namespace_list.reset(); |
| 724 |
|
592 |
sublabels.reset(); |
| 725 |
|
592 |
poslabels.reset(); |
| 726 |
|
592 |
neglabels.reset(); |
| 727 |
|
592 |
macroposlabels = nullptr; |
| 728 |
|
592 |
macroneglabels = nullptr; |
| 729 |
|
592 |
macrosublabels = nullptr; |
| 730 |
|
592 |
cleartable(); |
| 731 |
|
592 |
pushpc.reset(); |
| 732 |
|
592 |
pushpcnum=0; |
| 733 |
|
592 |
pushns.reset(); |
| 734 |
|
592 |
pushnsnum = 0; |
| 735 |
|
592 |
bytes=0; |
| 736 |
|
592 |
memset(fillbyte, 0, sizeof(fillbyte)); |
| 737 |
|
592 |
memset(padbyte, 0, sizeof(padbyte)); |
| 738 |
|
592 |
snespos=(int)0xFFFFFFFF; |
| 739 |
|
592 |
realsnespos= (int)0xFFFFFFFF; |
| 740 |
|
592 |
startpos= (int)0xFFFFFFFF; |
| 741 |
|
592 |
realstartpos= (int)0xFFFFFFFF; |
| 742 |
|
|
//fastrom=false; |
| 743 |
|
592 |
freespaceidnext=1; |
| 744 |
|
592 |
freespaceid=1; |
| 745 |
|
592 |
freespaceextra=0; |
| 746 |
|
592 |
default_freespacebyte=0x00; |
| 747 |
|
592 |
numopcodes=0; |
| 748 |
|
592 |
specifiedasarver = false; |
| 749 |
|
592 |
incsrcdepth = 0; |
| 750 |
|
|
|
| 751 |
|
592 |
optimizeforbank = -1; |
| 752 |
|
592 |
optimize_dp = optimize_dp_flag::NONE; |
| 753 |
|
592 |
set_optimize_dp = false; |
| 754 |
|
592 |
dp_base = 0; |
| 755 |
|
592 |
optimize_address = optimize_address_flag::DEFAULT; |
| 756 |
|
592 |
set_optimize_address = false; |
| 757 |
|
|
|
| 758 |
|
592 |
in_struct = false; |
| 759 |
|
592 |
in_sub_struct = false; |
| 760 |
|
592 |
in_spcblock = false; |
| 761 |
|
|
|
| 762 |
|
592 |
math_pri=false; |
| 763 |
|
592 |
math_round=true; |
| 764 |
|
|
|
| 765 |
1/2
✓ Branch 17 → 18 taken 592 times.
✗ Branch 17 → 19 not taken.
|
592 |
if (arch==arch_65816) asinit_65816(); |
| 766 |
1/2
✗ Branch 19 → 20 not taken.
✓ Branch 19 → 21 taken 592 times.
|
592 |
if (arch==arch_spc700) asinit_spc700(); |
| 767 |
1/2
✗ Branch 21 → 22 not taken.
✓ Branch 21 → 23 taken 592 times.
|
592 |
if (arch==arch_spc700_inline) asinit_spc700(); |
| 768 |
1/2
✗ Branch 23 → 24 not taken.
✓ Branch 23 → 25 taken 592 times.
|
592 |
if (arch==arch_superfx) asinit_superfx(); |
| 769 |
|
|
|
| 770 |
|
592 |
warnxkas=false; |
| 771 |
|
592 |
emulatexkas=false; |
| 772 |
|
592 |
disable_bank_cross_errors = false; |
| 773 |
|
592 |
check_half_banks_crossed = false; |
| 774 |
|
592 |
nested_namespaces = false; |
| 775 |
|
|
|
| 776 |
|
592 |
thisfilename = ""; |
| 777 |
|
|
|
| 778 |
|
592 |
includeonce.reset(); |
| 779 |
|
|
|
| 780 |
|
|
extern AddressToLineMapping addressToLineMapping; |
| 781 |
|
592 |
addressToLineMapping.reset(); |
| 782 |
|
|
|
| 783 |
|
592 |
push_warnings(false); |
| 784 |
|
|
|
| 785 |
|
592 |
initmathcore(); |
| 786 |
|
592 |
} |
| 787 |
|
|
|
| 788 |
|
|
|
| 789 |
|
|
//void nerf(const string& left, string& right){puts(S left+" = "+right);} |
| 790 |
|
|
|
| 791 |
|
588 |
void finishpass() |
| 792 |
|
|
{ |
| 793 |
|
588 |
verify_warnings(); |
| 794 |
|
588 |
pull_warnings(false); |
| 795 |
|
|
|
| 796 |
|
|
//defines.traverse(nerf); |
| 797 |
1/2
✗ Branch 4 → 5 not taken.
✓ Branch 4 → 6 taken 588 times.
|
588 |
if(in_spcblock) asar_throw_error(0, error_type_block, error_id_missing_endspcblock); |
| 798 |
2/4
✓ Branch 6 → 7 taken 588 times.
✗ Branch 6 → 8 not taken.
✗ Branch 7 → 8 not taken.
✓ Branch 7 → 9 taken 588 times.
|
588 |
if (in_struct || in_sub_struct) asar_throw_error(pass, error_type_null, error_id_struct_without_endstruct); |
| 799 |
1/4
✗ Branch 9 → 10 not taken.
✓ Branch 9 → 12 taken 588 times.
✗ Branch 10 → 11 not taken.
✗ Branch 10 → 12 not taken.
|
588 |
else if (pushpcnum && pass == 0) asar_throw_error(pass, error_type_null, error_id_pushpc_without_pullpc); |
| 800 |
1/4
✗ Branch 12 → 13 not taken.
✓ Branch 12 → 15 taken 588 times.
✗ Branch 13 → 14 not taken.
✗ Branch 13 → 15 not taken.
|
588 |
else if (pushnsnum && pass == 0) asar_throw_error(pass, error_type_null, error_id_pushns_without_pullns); |
| 801 |
|
588 |
freespaceend(); |
| 802 |
2/2
✓ Branch 16 → 17 taken 546 times.
✓ Branch 16 → 18 taken 42 times.
|
588 |
if (arch==arch_65816) asend_65816(); |
| 803 |
2/2
✓ Branch 18 → 19 taken 24 times.
✓ Branch 18 → 20 taken 564 times.
|
588 |
if (arch==arch_spc700) asend_spc700(); |
| 804 |
2/2
✓ Branch 20 → 21 taken 6 times.
✓ Branch 20 → 22 taken 582 times.
|
588 |
if (arch==arch_spc700_inline) asend_spc700(); |
| 805 |
2/2
✓ Branch 22 → 23 taken 12 times.
✓ Branch 22 → 24 taken 576 times.
|
588 |
if (arch==arch_superfx) asend_superfx(); |
| 806 |
|
|
|
| 807 |
|
588 |
deinitmathcore(); |
| 808 |
|
588 |
} |
| 809 |
|
|
|
| 810 |
|
873678 |
static bool addlabel(const char * label, int pos=-1, bool global_label = false) |
| 811 |
|
|
{ |
| 812 |
3/4
✓ Branch 2 → 3 taken 652028 times.
✓ Branch 2 → 4 taken 221650 times.
✗ Branch 3 → 4 not taken.
✓ Branch 3 → 5 taken 652028 times.
|
873678 |
if (!label[0] || label[0]==':') return false;//colons are reserved for special labels |
| 813 |
|
|
|
| 814 |
|
652028 |
const char* posneglabel = label; |
| 815 |
2/4
✓ Branch 5 → 6 taken 326014 times.
✗ Branch 5 → 90 not taken.
✓ Branch 7 → 8 taken 326014 times.
✗ Branch 7 → 106 not taken.
|
652028 |
string posnegname = posneglabelname(&posneglabel, true); |
| 816 |
|
|
|
| 817 |
6/8
✓ Branch 6 → 7 taken 326014 times.
✗ Branch 6 → 88 not taken.
✓ Branch 7 → 8 taken 60 times.
✓ Branch 7 → 17 taken 325954 times.
✓ Branch 8 → 9 taken 326014 times.
✗ Branch 8 → 104 not taken.
✓ Branch 9 → 10 taken 60 times.
✓ Branch 9 → 21 taken 325954 times.
|
652028 |
if (posnegname.length() > 0) |
| 818 |
|
|
{ |
| 819 |
2/4
✗ Branch 8 → 9 not taken.
✓ Branch 8 → 10 taken 60 times.
✗ Branch 10 → 11 not taken.
✓ Branch 10 → 12 taken 60 times.
|
120 |
if (global_label) return false; |
| 820 |
6/11
✓ Branch 10 → 11 taken 12 times.
✓ Branch 10 → 13 taken 48 times.
✗ Branch 11 → 12 not taken.
✓ Branch 11 → 13 taken 12 times.
✓ Branch 12 → 13 taken 12 times.
✓ Branch 12 → 15 taken 48 times.
✗ Branch 12 → 88 not taken.
✗ Branch 13 → 14 not taken.
✓ Branch 13 → 15 taken 12 times.
✗ Branch 14 → 15 not taken.
✗ Branch 14 → 104 not taken.
|
120 |
if (*posneglabel != '\0' && *posneglabel != ':') asar_throw_error(0, error_type_block, error_id_broken_label_definition); |
| 821 |
4/8
✓ Branch 13 → 14 taken 60 times.
✗ Branch 13 → 75 not taken.
✓ Branch 14 → 15 taken 60 times.
✗ Branch 14 → 73 not taken.
✓ Branch 16 → 17 taken 60 times.
✗ Branch 16 → 86 not taken.
✓ Branch 17 → 18 taken 60 times.
✗ Branch 17 → 84 not taken.
|
120 |
setlabel(posnegname, pos); |
| 822 |
|
120 |
return true; |
| 823 |
|
|
} |
| 824 |
14/16
✓ Branch 17 → 18 taken 325579 times.
✓ Branch 17 → 21 taken 375 times.
✓ Branch 18 → 19 taken 325552 times.
✓ Branch 18 → 21 taken 27 times.
✓ Branch 19 → 20 taken 325549 times.
✓ Branch 19 → 21 taken 3 times.
✗ Branch 20 → 21 not taken.
✓ Branch 20 → 69 taken 325549 times.
✓ Branch 21 → 22 taken 325579 times.
✓ Branch 21 → 25 taken 375 times.
✓ Branch 22 → 23 taken 325552 times.
✓ Branch 22 → 25 taken 27 times.
✓ Branch 23 → 24 taken 325549 times.
✓ Branch 23 → 25 taken 3 times.
✗ Branch 24 → 25 not taken.
✓ Branch 24 → 79 taken 325549 times.
|
651908 |
if (label[strlen(label)-1]==':' || label[0]=='.' || label[0]=='?' || label[0] == '#') |
| 825 |
|
|
{ |
| 826 |
4/4
✓ Branch 21 → 22 taken 6 times.
✓ Branch 21 → 23 taken 399 times.
✓ Branch 25 → 26 taken 6 times.
✓ Branch 25 → 27 taken 399 times.
|
810 |
if (!label[1]) return false; |
| 827 |
12/16
✓ Branch 23 → 24 taken 21 times.
✓ Branch 23 → 28 taken 378 times.
✓ Branch 24 → 25 taken 21 times.
✗ Branch 24 → 27 not taken.
✓ Branch 25 → 26 taken 21 times.
✗ Branch 25 → 27 not taken.
✓ Branch 26 → 27 taken 3 times.
✓ Branch 26 → 28 taken 18 times.
✓ Branch 27 → 28 taken 21 times.
✓ Branch 27 → 32 taken 378 times.
✓ Branch 28 → 29 taken 21 times.
✗ Branch 28 → 31 not taken.
✓ Branch 29 → 30 taken 21 times.
✗ Branch 29 → 31 not taken.
✓ Branch 30 → 31 taken 3 times.
✓ Branch 30 → 32 taken 18 times.
|
798 |
if(global_label && (in_struct || in_sub_struct || label[0]=='?')) return false; |
| 828 |
|
|
|
| 829 |
|
792 |
bool define = true; |
| 830 |
|
|
|
| 831 |
4/4
✓ Branch 28 → 29 taken 12 times.
✓ Branch 28 → 30 taken 384 times.
✓ Branch 32 → 33 taken 12 times.
✓ Branch 32 → 34 taken 384 times.
|
792 |
if (label[0] == '#') |
| 832 |
|
|
{ |
| 833 |
|
24 |
define = false; |
| 834 |
|
24 |
label++; |
| 835 |
|
|
} |
| 836 |
|
|
|
| 837 |
|
|
// RPG Hacker: Also checking label[1] now, since it might be a macro sublabel. |
| 838 |
|
|
// Also, apparently this here doesn't account for main labels. I guess because |
| 839 |
|
|
// we don't even get here in the first place if they don't include a colon? |
| 840 |
12/16
✓ Branch 30 → 31 taken 270 times.
✓ Branch 30 → 35 taken 126 times.
✓ Branch 31 → 32 taken 267 times.
✓ Branch 31 → 35 taken 3 times.
✓ Branch 32 → 33 taken 267 times.
✗ Branch 32 → 34 not taken.
✗ Branch 33 → 34 not taken.
✓ Branch 33 → 35 taken 267 times.
✓ Branch 34 → 35 taken 270 times.
✓ Branch 34 → 39 taken 126 times.
✓ Branch 35 → 36 taken 267 times.
✓ Branch 35 → 39 taken 3 times.
✓ Branch 36 → 37 taken 267 times.
✗ Branch 36 → 38 not taken.
✗ Branch 37 → 38 not taken.
✓ Branch 37 → 39 taken 267 times.
|
792 |
bool requirecolon = (label[0] != '.' && label[1] != '.') && (in_struct || in_sub_struct); |
| 841 |
2/4
✓ Branch 36 → 37 taken 396 times.
✗ Branch 36 → 87 not taken.
✓ Branch 41 → 42 taken 396 times.
✗ Branch 41 → 102 not taken.
|
792 |
string name=labelname(&label, define); |
| 842 |
4/4
✓ Branch 37 → 38 taken 375 times.
✓ Branch 37 → 39 taken 21 times.
✓ Branch 42 → 43 taken 375 times.
✓ Branch 42 → 44 taken 21 times.
|
792 |
if (label[0]==':') label++; |
| 843 |
2/8
✗ Branch 39 → 40 not taken.
✓ Branch 39 → 41 taken 21 times.
✗ Branch 40 → 43 not taken.
✗ Branch 40 → 85 not taken.
✗ Branch 44 → 45 not taken.
✓ Branch 44 → 46 taken 21 times.
✗ Branch 45 → 48 not taken.
✗ Branch 45 → 100 not taken.
|
42 |
else if (requirecolon) asar_throw_error(0, error_type_block, error_id_broken_label_definition); |
| 844 |
4/4
✓ Branch 41 → 42 taken 3 times.
✓ Branch 41 → 43 taken 18 times.
✓ Branch 46 → 47 taken 3 times.
✓ Branch 46 → 48 taken 18 times.
|
42 |
else if (global_label) return false; |
| 845 |
2/8
✗ Branch 43 → 44 not taken.
✓ Branch 43 → 45 taken 393 times.
✗ Branch 44 → 45 not taken.
✗ Branch 44 → 85 not taken.
✗ Branch 48 → 49 not taken.
✓ Branch 48 → 50 taken 393 times.
✗ Branch 49 → 50 not taken.
✗ Branch 49 → 100 not taken.
|
786 |
if (label[0]) asar_throw_error(0, error_type_block, error_id_broken_label_definition); |
| 846 |
18/26
✓ Branch 45 → 46 taken 393 times.
✗ Branch 45 → 85 not taken.
✓ Branch 46 → 47 taken 54 times.
✓ Branch 46 → 49 taken 339 times.
✓ Branch 47 → 48 taken 48 times.
✓ Branch 47 → 49 taken 6 times.
✓ Branch 50 → 51 taken 441 times.
✓ Branch 50 → 58 taken 345 times.
✗ Branch 50 → 100 not taken.
✓ Branch 51 → 52 taken 54 times.
✓ Branch 51 → 54 taken 339 times.
✓ Branch 52 → 53 taken 96 times.
✓ Branch 52 → 54 taken 6 times.
✗ Branch 52 → 80 not taken.
✓ Branch 53 → 54 taken 48 times.
✗ Branch 53 → 78 not taken.
✓ Branch 54 → 55 taken 48 times.
✗ Branch 54 → 76 not taken.
✓ Branch 55 → 56 taken 48 times.
✓ Branch 55 → 66 taken 345 times.
✓ Branch 59 → 60 taken 48 times.
✗ Branch 59 → 92 not taken.
✓ Branch 60 → 61 taken 48 times.
✗ Branch 60 → 90 not taken.
✓ Branch 61 → 62 taken 48 times.
✗ Branch 61 → 88 not taken.
|
786 |
if (ns && !global_label) name=STR ns+name; |
| 847 |
18/20
✓ Branch 58 → 59 taken 303 times.
✓ Branch 58 → 60 taken 90 times.
✓ Branch 59 → 60 taken 12 times.
✓ Branch 59 → 62 taken 291 times.
✓ Branch 60 → 61 taken 75 times.
✓ Branch 60 → 62 taken 27 times.
✓ Branch 63 → 64 taken 393 times.
✗ Branch 63 → 84 not taken.
✓ Branch 64 → 65 taken 392 times.
✓ Branch 64 → 82 taken 1 time.
✓ Branch 66 → 67 taken 303 times.
✓ Branch 66 → 68 taken 90 times.
✓ Branch 67 → 68 taken 12 times.
✓ Branch 67 → 70 taken 291 times.
✓ Branch 68 → 69 taken 75 times.
✓ Branch 68 → 70 taken 27 times.
✓ Branch 72 → 73 taken 393 times.
✗ Branch 72 → 98 not taken.
✓ Branch 73 → 74 taken 392 times.
✓ Branch 73 → 96 taken 1 time.
|
788 |
setlabel(name, pos, ((in_struct || in_sub_struct) && static_struct)); |
| 848 |
|
784 |
return true; |
| 849 |
|
792 |
} |
| 850 |
|
651098 |
return false; |
| 851 |
|
652028 |
} |
| 852 |
|
|
|
| 853 |
|
224134 |
static void add_addr_to_line(int pos) |
| 854 |
|
|
{ |
| 855 |
2/2
✓ Branch 2 → 3 taken 74936 times.
✓ Branch 2 → 5 taken 149198 times.
|
224134 |
if (pass == 2) |
| 856 |
|
74936 |
addressToLineMapping.includeMapping(thisfilename.data(), thisline + 1, pos); |
| 857 |
|
224134 |
} |
| 858 |
|
|
|
| 859 |
|
|
static autoarray<bool> elsestatus; |
| 860 |
|
|
int numtrue=0;//if 1 -> increase both |
| 861 |
|
|
int numif = 0; //if 0 or inside if 0 -> increase only numif |
| 862 |
|
|
|
| 863 |
|
|
autoarray<whiletracker> whilestatus; |
| 864 |
|
|
int single_line_for_tracker; |
| 865 |
|
|
|
| 866 |
|
|
static int freespaceuse=0; |
| 867 |
|
|
|
| 868 |
|
|
|
| 869 |
|
84 |
static void push_pc() |
| 870 |
|
|
{ |
| 871 |
|
84 |
pushpc[pushpcnum].arch=arch; |
| 872 |
|
84 |
pushpc[pushpcnum].snespos=snespos; |
| 873 |
|
84 |
pushpc[pushpcnum].snesstart=startpos; |
| 874 |
|
84 |
pushpc[pushpcnum].snesposreal=realsnespos; |
| 875 |
|
84 |
pushpc[pushpcnum].snesstartreal=realstartpos; |
| 876 |
|
84 |
pushpc[pushpcnum].freeid=freespaceid; |
| 877 |
|
84 |
pushpc[pushpcnum].freeex=freespaceextra; |
| 878 |
|
84 |
pushpc[pushpcnum].freest=freespacestart; |
| 879 |
|
84 |
pushpcnum++; |
| 880 |
|
84 |
} |
| 881 |
|
|
|
| 882 |
|
84 |
static void pop_pc() |
| 883 |
|
|
{ |
| 884 |
|
84 |
pushpcnum--; |
| 885 |
|
84 |
snespos=pushpc[pushpcnum].snespos; |
| 886 |
|
84 |
startpos=pushpc[pushpcnum].snesstart; |
| 887 |
|
84 |
realsnespos=pushpc[pushpcnum].snesposreal; |
| 888 |
|
84 |
realstartpos=pushpc[pushpcnum].snesstartreal; |
| 889 |
|
84 |
freespaceid=pushpc[pushpcnum].freeid; |
| 890 |
|
84 |
freespaceextra=pushpc[pushpcnum].freeex; |
| 891 |
|
84 |
freespacestart=pushpc[pushpcnum].freest; |
| 892 |
|
84 |
} |
| 893 |
|
|
|
| 894 |
|
|
|
| 895 |
|
132 |
string handle_print(char* input) |
| 896 |
|
|
{ |
| 897 |
|
|
// evaluating this math can be unsafe in pass 0 |
| 898 |
3/5
✓ Branch 2 → 3 taken 88 times.
✓ Branch 2 → 5 taken 44 times.
✓ Branch 3 → 4 taken 88 times.
✗ Branch 3 → 157 not taken.
✗ Branch 3 → 169 not taken.
|
132 |
if(pass != 2) return ""; |
| 899 |
2/8
✓ Branch 5 → 6 taken 44 times.
✗ Branch 5 → 157 not taken.
✗ Branch 5 → 169 not taken.
✗ Branch 6 → 7 not taken.
✓ Branch 6 → 8 taken 44 times.
✗ Branch 7 → 8 not taken.
✗ Branch 7 → 157 not taken.
✗ Branch 7 → 169 not taken.
|
44 |
if (!confirmqpar(input)) asar_throw_error(2, error_type_block, error_id_mismatched_parentheses); |
| 900 |
|
44 |
string out; |
| 901 |
2/4
✓ Branch 9 → 10 taken 22 times.
✗ Branch 9 → 155 not taken.
✓ Branch 11 → 12 taken 22 times.
✗ Branch 11 → 167 not taken.
|
44 |
autoptr<char**> pars = qpsplit(input, ","); |
| 902 |
4/4
✓ Branch 126 → 12 taken 54 times.
✓ Branch 126 → 127 taken 22 times.
✓ Branch 127 → 14 taken 54 times.
✓ Branch 127 → 128 taken 22 times.
|
152 |
for (int i = 0; pars[i]; i++) |
| 903 |
|
|
{ |
| 904 |
|
|
if (0); |
| 905 |
7/11
✓ Branch 13 → 14 taken 35 times.
✓ Branch 13 → 17 taken 19 times.
✓ Branch 15 → 16 taken 70 times.
✓ Branch 15 → 19 taken 19 times.
✗ Branch 15 → 153 not taken.
✓ Branch 16 → 124 taken 35 times.
✗ Branch 16 → 153 not taken.
✓ Branch 17 → 18 taken 35 times.
✗ Branch 17 → 165 not taken.
✓ Branch 18 → 125 taken 35 times.
✗ Branch 18 → 165 not taken.
|
108 |
else if (pars[i][0] == '"') out += safedequote(pars[i]); |
| 906 |
3/13
✓ Branch 18 → 19 taken 19 times.
✗ Branch 18 → 153 not taken.
✗ Branch 19 → 20 not taken.
✓ Branch 19 → 24 taken 19 times.
✗ Branch 20 → 21 not taken.
✓ Branch 20 → 26 taken 19 times.
✗ Branch 20 → 135 not taken.
✗ Branch 21 → 22 not taken.
✗ Branch 21 → 133 not taken.
✗ Branch 22 → 23 not taken.
✗ Branch 22 → 137 not taken.
✗ Branch 23 → 24 not taken.
✗ Branch 23 → 135 not taken.
|
38 |
else if (!stricmp(pars[i], "bytes")) out += dec(bytes); |
| 907 |
3/13
✓ Branch 25 → 26 taken 19 times.
✗ Branch 25 → 153 not taken.
✗ Branch 26 → 27 not taken.
✓ Branch 26 → 31 taken 19 times.
✗ Branch 27 → 28 not taken.
✓ Branch 27 → 33 taken 19 times.
✗ Branch 27 → 138 not taken.
✗ Branch 28 → 29 not taken.
✗ Branch 28 → 136 not taken.
✗ Branch 29 → 30 not taken.
✗ Branch 29 → 141 not taken.
✗ Branch 30 → 31 not taken.
✗ Branch 30 → 139 not taken.
|
38 |
else if (!stricmp(pars[i], "freespaceuse")) out += dec(freespaceuse); |
| 908 |
3/13
✓ Branch 32 → 33 taken 19 times.
✗ Branch 32 → 153 not taken.
✗ Branch 33 → 34 not taken.
✓ Branch 33 → 38 taken 19 times.
✗ Branch 34 → 35 not taken.
✓ Branch 34 → 40 taken 19 times.
✗ Branch 34 → 141 not taken.
✗ Branch 35 → 36 not taken.
✗ Branch 35 → 139 not taken.
✗ Branch 36 → 37 not taken.
✗ Branch 36 → 145 not taken.
✗ Branch 37 → 38 not taken.
✗ Branch 37 → 143 not taken.
|
38 |
else if (!stricmp(pars[i], "pc")) out += hex6((unsigned int)(snespos & 0xFFFFFF)); |
| 909 |
1/2
✓ Branch 39 → 40 taken 19 times.
✗ Branch 39 → 153 not taken.
|
38 |
else if (!strncasecmp(pars[i], "bin(", strlen("bin(")) || |
| 910 |
4/5
✓ Branch 42 → 43 taken 15 times.
✗ Branch 42 → 153 not taken.
✓ Branch 43 → 44 taken 22 times.
✓ Branch 43 → 48 taken 4 times.
✓ Branch 43 → 50 taken 4 times.
|
30 |
!strncasecmp(pars[i], "dec(", strlen("dec(")) || |
| 911 |
10/13
✓ Branch 40 → 41 taken 15 times.
✓ Branch 40 → 50 taken 4 times.
✓ Branch 41 → 42 taken 15 times.
✓ Branch 41 → 48 taken 4 times.
✓ Branch 45 → 46 taken 18 times.
✓ Branch 45 → 48 taken 4 times.
✗ Branch 45 → 153 not taken.
✓ Branch 46 → 47 taken 7 times.
✓ Branch 46 → 50 taken 4 times.
✓ Branch 50 → 51 taken 19 times.
✗ Branch 50 → 124 not taken.
✓ Branch 52 → 53 taken 19 times.
✗ Branch 52 → 123 not taken.
|
82 |
!strncasecmp(pars[i], "hex(", strlen("hex(")) || |
| 912 |
3/6
✓ Branch 47 → 48 taken 7 times.
✗ Branch 47 → 49 not taken.
✓ Branch 48 → 49 taken 7 times.
✗ Branch 48 → 153 not taken.
✓ Branch 49 → 50 taken 7 times.
✗ Branch 49 → 51 not taken.
|
14 |
!strncasecmp(pars[i], "double(", strlen("double("))) |
| 913 |
|
|
{ |
| 914 |
|
38 |
char * arg1pos = strchr(pars[i], '(') + 1; |
| 915 |
|
38 |
char * endpos = strchr(arg1pos, '\0'); |
| 916 |
6/8
✗ Branch 54 → 53 not taken.
✓ Branch 54 → 55 taken 38 times.
✓ Branch 55 → 53 taken 19 times.
✓ Branch 55 → 56 taken 19 times.
✗ Branch 56 → 55 not taken.
✓ Branch 56 → 57 taken 38 times.
✓ Branch 57 → 55 taken 19 times.
✓ Branch 57 → 58 taken 19 times.
|
76 |
while (*endpos == ' ' || *endpos == '\0') endpos--; |
| 917 |
2/8
✗ Branch 56 → 57 not taken.
✓ Branch 56 → 58 taken 19 times.
✗ Branch 57 → 58 not taken.
✗ Branch 57 → 161 not taken.
✗ Branch 58 → 59 not taken.
✓ Branch 58 → 60 taken 19 times.
✗ Branch 59 → 60 not taken.
✗ Branch 59 → 152 not taken.
|
38 |
if (*endpos != ')') asar_throw_error(2, error_type_block, error_id_invalid_print_function_syntax); |
| 918 |
2/4
✓ Branch 59 → 60 taken 19 times.
✗ Branch 59 → 161 not taken.
✓ Branch 60 → 61 taken 19 times.
✗ Branch 60 → 152 not taken.
|
38 |
string paramstr = string(arg1pos, (int)(endpos - arg1pos)); |
| 919 |
|
|
|
| 920 |
|
19 |
int numargs; |
| 921 |
2/4
✓ Branch 62 → 63 taken 19 times.
✗ Branch 62 → 150 not taken.
✓ Branch 63 → 64 taken 19 times.
✗ Branch 63 → 159 not taken.
|
38 |
autoptr<char**> params = qpsplit(paramstr.temp_raw(), ",", &numargs); |
| 922 |
2/7
✗ Branch 64 → 65 not taken.
✓ Branch 64 → 66 taken 19 times.
✗ Branch 65 → 66 not taken.
✓ Branch 65 → 67 taken 19 times.
✗ Branch 65 → 148 not taken.
✗ Branch 66 → 67 not taken.
✗ Branch 66 → 157 not taken.
|
38 |
if (numargs > 2) asar_throw_error(2, error_type_block, error_id_wrong_num_parameters); |
| 923 |
|
38 |
int precision = 0; |
| 924 |
|
38 |
bool hasprec = numargs == 2; |
| 925 |
4/4
✓ Branch 66 → 67 taken 13 times.
✓ Branch 66 → 73 taken 6 times.
✓ Branch 67 → 68 taken 13 times.
✓ Branch 67 → 74 taken 6 times.
|
38 |
if (hasprec) |
| 926 |
|
|
{ |
| 927 |
2/4
✓ Branch 68 → 69 taken 13 times.
✗ Branch 68 → 148 not taken.
✓ Branch 69 → 70 taken 13 times.
✗ Branch 69 → 157 not taken.
|
26 |
precision = getnum64(params[1]); |
| 928 |
2/4
✗ Branch 69 → 70 not taken.
✓ Branch 69 → 71 taken 13 times.
✗ Branch 70 → 71 not taken.
✓ Branch 70 → 72 taken 13 times.
|
26 |
if (precision < 0) precision = 0; |
| 929 |
2/4
✗ Branch 71 → 72 not taken.
✓ Branch 71 → 73 taken 13 times.
✗ Branch 72 → 73 not taken.
✓ Branch 72 → 74 taken 13 times.
|
26 |
if (precision > 64) precision = 64; |
| 930 |
|
|
} |
| 931 |
|
38 |
*(arg1pos - 1) = '\0'; // allows more convenient comparsion functions |
| 932 |
4/5
✓ Branch 74 → 75 taken 19 times.
✗ Branch 74 → 148 not taken.
✓ Branch 75 → 76 taken 8 times.
✓ Branch 75 → 93 taken 15 times.
✓ Branch 75 → 94 taken 15 times.
|
38 |
if (!stricmp(pars[i], "bin")) |
| 933 |
|
|
{ |
| 934 |
|
|
// sadly printf doesn't have binary, so let's roll our own |
| 935 |
1/3
✓ Branch 77 → 78 taken 8 times.
✗ Branch 77 → 142 not taken.
✗ Branch 77 → 147 not taken.
|
8 |
int64_t value = getnum64(params[0]); |
| 936 |
|
4 |
char buffer[65]; |
| 937 |
2/4
✗ Branch 78 → 79 not taken.
✓ Branch 78 → 82 taken 4 times.
✗ Branch 79 → 80 not taken.
✓ Branch 79 → 83 taken 4 times.
|
8 |
if (value < 0) { |
| 938 |
|
✗ |
out += '-'; |
| 939 |
|
✗ |
value = -value; |
| 940 |
|
|
// decrement precision because we've output one char already |
| 941 |
|
✗ |
precision -= 1; |
| 942 |
|
✗ |
if (precision<0) precision = 0; |
| 943 |
|
|
} |
| 944 |
4/4
✓ Branch 84 → 83 taken 256 times.
✓ Branch 84 → 85 taken 4 times.
✓ Branch 85 → 84 taken 256 times.
✓ Branch 85 → 86 taken 4 times.
|
520 |
for (int j = 0; j < 64; j++) { |
| 945 |
|
512 |
buffer[63 - j] = '0' + ((value & (1ull << j)) >> j); |
| 946 |
|
|
} |
| 947 |
|
8 |
buffer[64] = 0; |
| 948 |
|
8 |
int startidx = 0; |
| 949 |
6/7
✓ Branch 87 → 88 taken 224 times.
✓ Branch 87 → 89 taken 4 times.
✓ Branch 88 → 86 taken 224 times.
✓ Branch 88 → 89 taken 224 times.
✓ Branch 88 → 90 taken 4 times.
✓ Branch 89 → 87 taken 224 times.
✗ Branch 89 → 90 not taken.
|
456 |
while (startidx < 64 - precision && buffer[startidx] == '0') startidx++; |
| 950 |
2/4
✗ Branch 89 → 90 not taken.
✓ Branch 89 → 91 taken 4 times.
✗ Branch 90 → 91 not taken.
✓ Branch 90 → 92 taken 4 times.
|
8 |
if (startidx == 64) startidx--; // always want to print at least one digit |
| 951 |
2/4
✓ Branch 91 → 92 taken 4 times.
✗ Branch 91 → 142 not taken.
✓ Branch 92 → 93 taken 4 times.
✗ Branch 92 → 147 not taken.
|
8 |
out += buffer + startidx; |
| 952 |
|
|
} |
| 953 |
3/4
✓ Branch 94 → 95 taken 15 times.
✗ Branch 94 → 148 not taken.
✓ Branch 95 → 96 taken 8 times.
✓ Branch 95 → 101 taken 22 times.
|
30 |
else if (!stricmp(pars[i], "dec")) |
| 954 |
|
|
{ |
| 955 |
1/3
✓ Branch 97 → 98 taken 8 times.
✗ Branch 97 → 143 not taken.
✗ Branch 97 → 149 not taken.
|
8 |
int64_t value = getnum64(params[0]); |
| 956 |
|
4 |
char buffer[65]; |
| 957 |
1/2
✓ Branch 98 → 99 taken 4 times.
✗ Branch 98 → 143 not taken.
|
8 |
snprintf(buffer, 65, "%0*" PRId64, precision, value); |
| 958 |
1/3
✓ Branch 99 → 100 taken 8 times.
✗ Branch 99 → 143 not taken.
✗ Branch 99 → 149 not taken.
|
8 |
out += buffer; |
| 959 |
|
|
} |
| 960 |
4/5
✓ Branch 102 → 103 taken 15 times.
✓ Branch 102 → 108 taken 7 times.
✗ Branch 102 → 148 not taken.
✓ Branch 103 → 104 taken 4 times.
✓ Branch 103 → 109 taken 7 times.
|
22 |
else if (!stricmp(pars[i], "hex")) |
| 961 |
|
|
{ |
| 962 |
2/4
✓ Branch 104 → 105 taken 4 times.
✗ Branch 104 → 151 not taken.
✓ Branch 105 → 106 taken 4 times.
✗ Branch 105 → 144 not taken.
|
8 |
int64_t value = getnum64(params[0]); |
| 963 |
|
4 |
char buffer[65]; |
| 964 |
1/2
✓ Branch 106 → 107 taken 4 times.
✗ Branch 106 → 144 not taken.
|
8 |
snprintf(buffer, 65, "%0*" PRIX64, precision, value); |
| 965 |
2/4
✓ Branch 106 → 107 taken 4 times.
✗ Branch 106 → 151 not taken.
✓ Branch 107 → 108 taken 4 times.
✗ Branch 107 → 144 not taken.
|
8 |
out += buffer; |
| 966 |
|
|
} |
| 967 |
3/6
✓ Branch 109 → 110 taken 7 times.
✗ Branch 109 → 119 not taken.
✓ Branch 110 → 111 taken 7 times.
✗ Branch 110 → 148 not taken.
✓ Branch 111 → 112 taken 7 times.
✗ Branch 111 → 120 not taken.
|
14 |
else if (!stricmp(pars[i], "double")) |
| 968 |
|
|
{ |
| 969 |
4/4
✓ Branch 110 → 111 taken 6 times.
✓ Branch 110 → 112 taken 1 time.
✓ Branch 112 → 113 taken 6 times.
✓ Branch 112 → 114 taken 1 time.
|
14 |
if (!hasprec) precision = 5; |
| 970 |
4/10
✓ Branch 114 → 115 taken 7 times.
✗ Branch 114 → 155 not taken.
✓ Branch 115 → 116 taken 14 times.
✗ Branch 115 → 147 not taken.
✗ Branch 115 → 155 not taken.
✓ Branch 116 → 117 taken 14 times.
✗ Branch 116 → 147 not taken.
✗ Branch 116 → 153 not taken.
✓ Branch 117 → 118 taken 7 times.
✗ Branch 117 → 145 not taken.
|
14 |
out += ftostrvar(getnumdouble(params[0]), precision); |
| 971 |
|
|
} |
| 972 |
|
38 |
} |
| 973 |
|
✗ |
else asar_throw_error(2, error_type_block, error_id_unknown_variable); |
| 974 |
|
|
} |
| 975 |
2/4
✓ Branch 127 → 128 taken 22 times.
✗ Branch 127 → 153 not taken.
✓ Branch 128 → 129 taken 22 times.
✗ Branch 128 → 165 not taken.
|
44 |
return out; |
| 976 |
|
44 |
} |
| 977 |
|
|
|
| 978 |
|
|
|
| 979 |
|
875430 |
void assembleblock(const char * block, bool isspecialline) |
| 980 |
|
|
{ |
| 981 |
2/4
✓ Branch 2 → 3 taken 437715 times.
✗ Branch 2 → 2658 not taken.
✓ Branch 3 → 4 taken 437715 times.
✗ Branch 3 → 2855 not taken.
|
875430 |
string tmp=block; |
| 982 |
|
437715 |
int numwords; |
| 983 |
2/4
✓ Branch 4 → 5 taken 437715 times.
✗ Branch 4 → 2656 not taken.
✓ Branch 6 → 7 taken 437715 times.
✗ Branch 6 → 2853 not taken.
|
875430 |
char ** word = qsplit(tmp.temp_raw(), " ", &numwords); |
| 984 |
|
875430 |
string resolved; |
| 985 |
|
|
// when writing out the data for the addrToLine mapping, |
| 986 |
|
|
// we want to write out the snespos we had before writing opcodes |
| 987 |
|
875430 |
int addrToLinePos = realsnespos & 0xFFFFFF; |
| 988 |
|
|
|
| 989 |
|
|
#define is(test) (!stricmpwithlower(word[0], test)) |
| 990 |
|
|
#define is0(test) (numwords==1 && !stricmpwithlower(word[0], test)) |
| 991 |
|
|
#define is1(test) (numwords==2 && !stricmpwithlower(word[0], test)) |
| 992 |
|
|
#define is2(test) (numwords==3 && !stricmpwithlower(word[0], test)) |
| 993 |
|
|
#define is3(test) (numwords==4 && !stricmpwithlower(word[0], test)) |
| 994 |
|
|
#define par word[1] |
| 995 |
|
|
|
| 996 |
4/22
✗ Branch 6 → 7 not taken.
✓ Branch 6 → 16 taken 437715 times.
✗ Branch 8 → 9 not taken.
✗ Branch 8 → 16 not taken.
✗ Branch 9 → 10 not taken.
✓ Branch 9 → 19 taken 437715 times.
✗ Branch 10 → 11 not taken.
✗ Branch 10 → 16 not taken.
✗ Branch 11 → 12 not taken.
✗ Branch 11 → 19 not taken.
✗ Branch 12 → 13 not taken.
✗ Branch 12 → 16 not taken.
✗ Branch 13 → 14 not taken.
✗ Branch 13 → 19 not taken.
✗ Branch 14 → 15 not taken.
✗ Branch 14 → 16 not taken.
✗ Branch 15 → 16 not taken.
✗ Branch 15 → 19 not taken.
✗ Branch 17 → 18 not taken.
✓ Branch 17 → 19 taken 437715 times.
✗ Branch 20 → 21 not taken.
✓ Branch 20 → 22 taken 437715 times.
|
875430 |
if(!moreonlinecond && !(is("elseif") || is("else") || is("endif") || is("endwhile"))){ |
| 997 |
|
✗ |
return; |
| 998 |
|
|
} |
| 999 |
|
|
|
| 1000 |
|
|
// RPG Hacker: Hack to fix the bug where defines in elseifs would never get resolved |
| 1001 |
|
|
// This really seems like the only possible place for the fix |
| 1002 |
11/11
✓ Branch 20 → 21 taken 69 times.
✓ Branch 20 → 23 taken 437646 times.
✓ Branch 21 → 22 taken 36 times.
✓ Branch 21 → 23 taken 33 times.
✓ Branch 23 → 24 taken 69 times.
✓ Branch 23 → 26 taken 437646 times.
✓ Branch 24 → 25 taken 72 times.
✓ Branch 24 → 26 taken 33 times.
✓ Branch 24 → 38 taken 437679 times.
✓ Branch 27 → 28 taken 36 times.
✓ Branch 27 → 43 taken 437679 times.
|
875430 |
if (is("elseif") && numtrue+1==numif) |
| 1003 |
|
|
{ |
| 1004 |
|
72 |
string tmp; |
| 1005 |
2/12
✗ Branch 26 → 27 not taken.
✓ Branch 26 → 31 taken 36 times.
✗ Branch 27 → 28 not taken.
✗ Branch 27 → 2382 not taken.
✗ Branch 28 → 29 not taken.
✗ Branch 28 → 2380 not taken.
✗ Branch 30 → 31 not taken.
✓ Branch 30 → 36 taken 36 times.
✗ Branch 32 → 33 not taken.
✗ Branch 32 → 2477 not taken.
✗ Branch 33 → 34 not taken.
✗ Branch 33 → 2475 not taken.
|
72 |
if (inmacro) tmp = replace_macro_args(block); |
| 1006 |
2/4
✓ Branch 31 → 32 taken 36 times.
✗ Branch 31 → 2383 not taken.
✓ Branch 36 → 37 taken 36 times.
✗ Branch 36 → 2479 not taken.
|
72 |
else tmp = block; |
| 1007 |
2/4
✓ Branch 33 → 34 taken 36 times.
✗ Branch 33 → 2383 not taken.
✓ Branch 38 → 39 taken 36 times.
✗ Branch 38 → 2479 not taken.
|
72 |
resolvedefines(resolved, tmp); |
| 1008 |
|
72 |
free(word); |
| 1009 |
2/4
✓ Branch 35 → 36 taken 36 times.
✗ Branch 35 → 2383 not taken.
✓ Branch 40 → 41 taken 36 times.
✗ Branch 40 → 2479 not taken.
|
72 |
word = qsplit(resolved.temp_raw(), " ", &numwords); |
| 1010 |
|
72 |
} |
| 1011 |
|
|
|
| 1012 |
|
875430 |
autoptr<char**> wordcopy=word; |
| 1013 |
14/14
✓ Branch 39 → 40 taken 436866 times.
✓ Branch 39 → 44 taken 849 times.
✓ Branch 40 → 41 taken 112715 times.
✓ Branch 40 → 44 taken 324151 times.
✓ Branch 42 → 43 taken 21 times.
✓ Branch 42 → 44 taken 112694 times.
✓ Branch 45 → 46 taken 436887 times.
✓ Branch 45 → 50 taken 438543 times.
✓ Branch 46 → 47 taken 112715 times.
✓ Branch 46 → 50 taken 324151 times.
✓ Branch 48 → 49 taken 21 times.
✓ Branch 48 → 50 taken 112694 times.
✓ Branch 51 → 52 taken 21 times.
✓ Branch 51 → 56 taken 437694 times.
|
875430 |
if (numif==numtrue && is1("global")) { |
| 1014 |
6/8
✓ Branch 46 → 47 taken 21 times.
✗ Branch 46 → 2652 not taken.
✓ Branch 47 → 48 taken 6 times.
✓ Branch 47 → 49 taken 15 times.
✓ Branch 52 → 53 taken 21 times.
✗ Branch 52 → 2849 not taken.
✓ Branch 53 → 54 taken 6 times.
✓ Branch 53 → 55 taken 15 times.
|
42 |
if (!addlabel(word[1], -1, true)) { |
| 1015 |
2/4
✗ Branch 48 → 49 not taken.
✓ Branch 48 → 2652 taken 6 times.
✗ Branch 54 → 55 not taken.
✓ Branch 54 → 2849 taken 6 times.
|
12 |
asar_throw_error(1, error_type_block, error_id_invalid_global_label, word[1]); |
| 1016 |
|
|
} |
| 1017 |
|
30 |
return; |
| 1018 |
|
|
} |
| 1019 |
27/27
✓ Branch 52 → 53 taken 437282 times.
✓ Branch 52 → 59 taken 849 times.
✓ Branch 53 → 54 taken 436950 times.
✓ Branch 53 → 59 taken 332 times.
✓ Branch 54 → 55 taken 219009 times.
✓ Branch 54 → 56 taken 217941 times.
✓ Branch 55 → 56 taken 218877 times.
✓ Branch 55 → 59 taken 132 times.
✓ Branch 56 → 57 taken 436817 times.
✓ Branch 56 → 2652 taken 1 time.
✓ Branch 57 → 58 taken 437 times.
✓ Branch 57 → 59 taken 436380 times.
✓ Branch 58 → 59 taken 437282 times.
✓ Branch 58 → 65 taken 849 times.
✓ Branch 59 → 60 taken 436950 times.
✓ Branch 59 → 65 taken 332 times.
✓ Branch 60 → 51 taken 437 times.
✓ Branch 60 → 61 taken 656702 times.
✓ Branch 60 → 62 taken 217941 times.
✓ Branch 61 → 62 taken 218877 times.
✓ Branch 61 → 65 taken 132 times.
✓ Branch 62 → 63 taken 436817 times.
✓ Branch 62 → 2849 taken 1 time.
✓ Branch 63 → 64 taken 437 times.
✓ Branch 63 → 65 taken 436380 times.
✓ Branch 66 → 57 taken 437 times.
✓ Branch 66 → 67 taken 437693 times.
|
876262 |
while (numif==numtrue && word[0] && (!word[1] || strcmp(word[1], "=")) && addlabel(word[0])) |
| 1020 |
|
|
{ |
| 1021 |
|
874 |
word++; |
| 1022 |
|
874 |
numwords--; |
| 1023 |
|
|
} |
| 1024 |
8/8
✓ Branch 61 → 62 taken 437361 times.
✓ Branch 61 → 63 taken 332 times.
✓ Branch 62 → 63 taken 110882 times.
✓ Branch 62 → 64 taken 326479 times.
✓ Branch 67 → 68 taken 437361 times.
✓ Branch 67 → 69 taken 332 times.
✓ Branch 68 → 69 taken 110882 times.
✓ Branch 68 → 70 taken 326479 times.
|
875386 |
if (!word[0] || !word[0][0]) return; |
| 1025 |
8/8
✓ Branch 64 → 65 taken 325687 times.
✓ Branch 64 → 74 taken 792 times.
✓ Branch 65 → 66 taken 108 times.
✓ Branch 65 → 74 taken 325579 times.
✓ Branch 70 → 71 taken 325687 times.
✓ Branch 70 → 80 taken 792 times.
✓ Branch 71 → 72 taken 108 times.
✓ Branch 71 → 80 taken 325579 times.
|
652958 |
if (numif==numtrue && word[0][0]=='%') |
| 1026 |
|
|
{ |
| 1027 |
4/4
✓ Branch 66 → 67 taken 105 times.
✓ Branch 66 → 69 taken 3 times.
✓ Branch 72 → 73 taken 105 times.
✓ Branch 72 → 75 taken 3 times.
|
216 |
if (!macrorecursion) |
| 1028 |
|
|
{ |
| 1029 |
2/4
✓ Branch 67 → 68 taken 105 times.
✗ Branch 67 → 2652 not taken.
✓ Branch 73 → 74 taken 105 times.
✗ Branch 73 → 2849 not taken.
|
210 |
callerfilename=thisfilename; |
| 1030 |
|
210 |
callerline=thisline; |
| 1031 |
|
|
} |
| 1032 |
|
216 |
int fakeendif_prev = fakeendif; |
| 1033 |
|
216 |
int moreonlinecond_prev = moreonlinecond; |
| 1034 |
|
216 |
int calledmacros_prev = calledmacros; |
| 1035 |
|
216 |
int single_line_for_tracker_prev = single_line_for_tracker; |
| 1036 |
4/4
✓ Branch 69 → 70 taken 102 times.
✓ Branch 69 → 2652 taken 6 times.
✓ Branch 75 → 76 taken 102 times.
✓ Branch 75 → 2849 taken 6 times.
|
216 |
callmacro(strchr(block, '%')+1); |
| 1037 |
|
204 |
fakeendif = fakeendif_prev; |
| 1038 |
|
204 |
moreonlinecond = moreonlinecond_prev; |
| 1039 |
|
204 |
calledmacros = calledmacros_prev; |
| 1040 |
|
204 |
single_line_for_tracker = single_line_for_tracker_prev; |
| 1041 |
4/4
✓ Branch 70 → 71 taken 99 times.
✓ Branch 70 → 73 taken 3 times.
✓ Branch 76 → 77 taken 99 times.
✓ Branch 76 → 79 taken 3 times.
|
204 |
if (!macrorecursion) |
| 1042 |
|
|
{ |
| 1043 |
2/4
✓ Branch 71 → 72 taken 99 times.
✗ Branch 71 → 2652 not taken.
✓ Branch 77 → 78 taken 99 times.
✗ Branch 77 → 2849 not taken.
|
198 |
callerfilename=""; |
| 1044 |
|
198 |
callerline=-1; |
| 1045 |
|
|
} |
| 1046 |
|
204 |
return; |
| 1047 |
|
|
} |
| 1048 |
22/22
✓ Branch 75 → 76 taken 326203 times.
✓ Branch 75 → 84 taken 168 times.
✓ Branch 77 → 78 taken 326134 times.
✓ Branch 77 → 84 taken 69 times.
✓ Branch 79 → 80 taken 326113 times.
✓ Branch 79 → 84 taken 21 times.
✓ Branch 81 → 82 taken 546824 times.
✓ Branch 81 → 84 taken 105492 times.
✓ Branch 81 → 90 taken 168 times.
✓ Branch 83 → 84 taken 326308 times.
✓ Branch 83 → 85 taken 220447 times.
✓ Branch 83 → 90 taken 69 times.
✓ Branch 85 → 86 taken 326113 times.
✓ Branch 85 → 90 taken 21 times.
✓ Branch 86 → 87 taken 105924 times.
✓ Branch 86 → 363 taken 220447 times.
✓ Branch 87 → 88 taken 220621 times.
✓ Branch 87 → 90 taken 105492 times.
✓ Branch 89 → 90 taken 174 times.
✓ Branch 89 → 91 taken 220447 times.
✓ Branch 92 → 93 taken 105924 times.
✓ Branch 92 → 388 taken 220447 times.
|
652742 |
if (is("if") || is("elseif") || is("assert") || is("while") || is("for")) |
| 1049 |
|
|
{ |
| 1050 |
12/12
✓ Branch 88 → 89 taken 168 times.
✓ Branch 88 → 91 taken 105756 times.
✓ Branch 89 → 90 taken 3 times.
✓ Branch 89 → 91 taken 165 times.
✓ Branch 92 → 93 taken 3 times.
✓ Branch 92 → 94 taken 105921 times.
✓ Branch 94 → 95 taken 168 times.
✓ Branch 94 → 97 taken 105756 times.
✓ Branch 95 → 96 taken 3 times.
✓ Branch 95 → 97 taken 165 times.
✓ Branch 98 → 99 taken 3 times.
✓ Branch 98 → 100 taken 105921 times.
|
211848 |
if(is("if") && moreonline) fakeendif++; |
| 1051 |
2/8
✗ Branch 94 → 95 not taken.
✓ Branch 94 → 96 taken 105924 times.
✗ Branch 95 → 96 not taken.
✗ Branch 95 → 2415 not taken.
✗ Branch 100 → 101 not taken.
✓ Branch 100 → 102 taken 105924 times.
✗ Branch 101 → 102 not taken.
✗ Branch 101 → 2521 not taken.
|
211848 |
if (emulatexkas) asar_throw_warning(0, warning_id_convert_to_asar); |
| 1052 |
|
211848 |
string errmsg; |
| 1053 |
|
211848 |
whiletracker wstatus; |
| 1054 |
|
211848 |
wstatus.startline = thisline; |
| 1055 |
|
211848 |
wstatus.iswhile = false; |
| 1056 |
|
211848 |
wstatus.cond = false; |
| 1057 |
|
211848 |
wstatus.is_for = false; |
| 1058 |
|
211848 |
wstatus.for_start = wstatus.for_end = wstatus.for_cur = 0; |
| 1059 |
|
211848 |
wstatus.for_has_var_backup = false; |
| 1060 |
4/4
✓ Branch 99 → 100 taken 105492 times.
✓ Branch 99 → 101 taken 432 times.
✓ Branch 107 → 108 taken 105492 times.
✓ Branch 107 → 109 taken 432 times.
|
211848 |
if (is("while")) wstatus.iswhile = true; |
| 1061 |
4/4
✓ Branch 102 → 103 taken 174 times.
✓ Branch 102 → 104 taken 105750 times.
✓ Branch 110 → 111 taken 174 times.
✓ Branch 110 → 112 taken 105750 times.
|
211848 |
if (is("for")) wstatus.is_for = true; |
| 1062 |
|
|
// if we are a for loop and: |
| 1063 |
|
|
// 1) whilestatus has an entry at this level already |
| 1064 |
|
|
// 2) said entry represents an incomplete for loop |
| 1065 |
|
|
// then this loop must be meant "for us". |
| 1066 |
|
|
// check number 2 is necessary because otherwise, 2 for loops back-to-back (not nested) would try to use the same whilestatus entry |
| 1067 |
|
211848 |
bool is_for_cont = false; |
| 1068 |
25/31
✓ Branch 105 → 106 taken 174 times.
✓ Branch 105 → 113 taken 105750 times.
✓ Branch 106 → 107 taken 173 times.
✓ Branch 106 → 113 taken 1 time.
✓ Branch 107 → 108 taken 173 times.
✗ Branch 107 → 2411 not taken.
✓ Branch 108 → 109 taken 166 times.
✓ Branch 108 → 113 taken 7 times.
✓ Branch 109 → 110 taken 166 times.
✗ Branch 109 → 2411 not taken.
✓ Branch 110 → 111 taken 166 times.
✗ Branch 110 → 2411 not taken.
✓ Branch 111 → 112 taken 123 times.
✓ Branch 111 → 113 taken 43 times.
✓ Branch 113 → 114 taken 174 times.
✓ Branch 113 → 121 taken 105750 times.
✓ Branch 114 → 115 taken 296 times.
✓ Branch 114 → 116 taken 105801 times.
✓ Branch 114 → 121 taken 1 time.
✓ Branch 115 → 116 taken 173 times.
✗ Branch 115 → 2517 not taken.
✓ Branch 116 → 117 taken 166 times.
✓ Branch 116 → 121 taken 7 times.
✓ Branch 117 → 118 taken 166 times.
✗ Branch 117 → 2517 not taken.
✓ Branch 118 → 119 taken 166 times.
✗ Branch 118 → 2517 not taken.
✓ Branch 119 → 120 taken 123 times.
✓ Branch 119 → 121 taken 43 times.
✓ Branch 122 → 123 taken 123 times.
✓ Branch 122 → 124 taken 105801 times.
|
211848 |
if (is("for") && whilestatus.count > numif && whilestatus[numif].is_for && whilestatus[numif].for_cur < whilestatus[numif].for_end) |
| 1069 |
|
|
{ |
| 1070 |
|
|
// continuation of a for loop |
| 1071 |
|
246 |
is_for_cont = true; |
| 1072 |
|
|
} |
| 1073 |
10/16
✓ Branch 116 → 117 taken 123 times.
✓ Branch 116 → 119 taken 105801 times.
✓ Branch 117 → 118 taken 123 times.
✗ Branch 117 → 2411 not taken.
✓ Branch 119 → 120 taken 105801 times.
✗ Branch 119 → 2411 not taken.
✓ Branch 120 → 121 taken 105801 times.
✗ Branch 120 → 2411 not taken.
✓ Branch 124 → 125 taken 123 times.
✓ Branch 124 → 127 taken 105801 times.
✓ Branch 125 → 126 taken 123 times.
✗ Branch 125 → 2517 not taken.
✓ Branch 127 → 128 taken 105801 times.
✗ Branch 127 → 2517 not taken.
✓ Branch 128 → 129 taken 105801 times.
✗ Branch 128 → 2517 not taken.
|
211848 |
whiletracker& addedwstatus = is_for_cont ? whilestatus[numif] : (whilestatus[numif] = wstatus); |
| 1074 |
4/4
✓ Branch 123 → 124 taken 21 times.
✓ Branch 123 → 154 taken 105903 times.
✓ Branch 131 → 132 taken 21 times.
✓ Branch 131 → 166 taken 105903 times.
|
211848 |
if (is("assert")) |
| 1075 |
|
|
{ |
| 1076 |
2/4
✓ Branch 124 → 125 taken 21 times.
✗ Branch 124 → 2394 not taken.
✓ Branch 133 → 134 taken 21 times.
✗ Branch 133 → 2493 not taken.
|
42 |
autoptr<char**> tokens = qpsplit(word[numwords - 1], ","); |
| 1077 |
2/8
✗ Branch 127 → 128 not taken.
✓ Branch 127 → 129 taken 21 times.
✗ Branch 128 → 129 not taken.
✗ Branch 128 → 2392 not taken.
✗ Branch 136 → 137 not taken.
✓ Branch 136 → 138 taken 21 times.
✗ Branch 137 → 138 not taken.
✗ Branch 137 → 2491 not taken.
|
42 |
if (tokens == nullptr) asar_throw_error(0, error_type_block, error_id_broken_conditional, word[0]); |
| 1078 |
10/12
✓ Branch 130 → 131 taken 21 times.
✗ Branch 130 → 134 not taken.
✓ Branch 132 → 133 taken 6 times.
✓ Branch 132 → 134 taken 15 times.
✓ Branch 135 → 136 taken 6 times.
✓ Branch 135 → 152 taken 15 times.
✓ Branch 139 → 140 taken 21 times.
✗ Branch 139 → 143 not taken.
✓ Branch 141 → 142 taken 6 times.
✓ Branch 141 → 143 taken 15 times.
✓ Branch 144 → 145 taken 6 times.
✓ Branch 144 → 164 taken 15 times.
|
42 |
if (tokens[0] != NULL && tokens[1] != NULL) |
| 1079 |
|
|
{ |
| 1080 |
|
12 |
string rawerrmsg; |
| 1081 |
|
12 |
size_t pos = 1; |
| 1082 |
4/4
✓ Branch 145 → 138 taken 21 times.
✓ Branch 145 → 146 taken 6 times.
✓ Branch 155 → 148 taken 21 times.
✓ Branch 155 → 156 taken 6 times.
|
54 |
while (tokens[pos]) |
| 1083 |
|
|
{ |
| 1084 |
2/4
✓ Branch 139 → 140 taken 21 times.
✗ Branch 139 → 2389 not taken.
✓ Branch 149 → 150 taken 21 times.
✗ Branch 149 → 2487 not taken.
|
42 |
rawerrmsg += tokens[pos]; |
| 1085 |
4/4
✓ Branch 141 → 142 taken 15 times.
✓ Branch 141 → 143 taken 6 times.
✓ Branch 151 → 152 taken 15 times.
✓ Branch 151 → 153 taken 6 times.
|
42 |
if (tokens[pos + 1] != NULL) |
| 1086 |
|
|
{ |
| 1087 |
2/4
✓ Branch 142 → 143 taken 15 times.
✗ Branch 142 → 2389 not taken.
✓ Branch 152 → 153 taken 15 times.
✗ Branch 152 → 2487 not taken.
|
30 |
rawerrmsg += ","; |
| 1088 |
|
|
} |
| 1089 |
|
42 |
pos++; |
| 1090 |
|
|
} |
| 1091 |
|
|
|
| 1092 |
4/8
✓ Branch 147 → 148 taken 6 times.
✗ Branch 147 → 2388 not taken.
✓ Branch 148 → 149 taken 6 times.
✗ Branch 148 → 2386 not taken.
✓ Branch 158 → 159 taken 6 times.
✗ Branch 158 → 2485 not taken.
✓ Branch 159 → 160 taken 6 times.
✗ Branch 159 → 2483 not taken.
|
12 |
errmsg = handle_print(rawerrmsg.raw()); |
| 1093 |
|
12 |
} |
| 1094 |
|
42 |
} |
| 1095 |
14/16
✓ Branch 154 → 155 taken 54 times.
✓ Branch 154 → 159 taken 105870 times.
✓ Branch 156 → 157 taken 36 times.
✓ Branch 156 → 158 taken 18 times.
✗ Branch 157 → 158 not taken.
✓ Branch 157 → 159 taken 36 times.
✓ Branch 160 → 161 taken 18 times.
✓ Branch 160 → 172 taken 105906 times.
✓ Branch 166 → 167 taken 54 times.
✓ Branch 166 → 171 taken 105870 times.
✓ Branch 168 → 169 taken 36 times.
✓ Branch 168 → 170 taken 18 times.
✗ Branch 169 → 170 not taken.
✓ Branch 169 → 171 taken 36 times.
✓ Branch 172 → 173 taken 18 times.
✓ Branch 172 → 184 taken 105906 times.
|
211848 |
if (numtrue!=numif && !(is("elseif") && numtrue+1==numif)) |
| 1096 |
|
|
{ |
| 1097 |
10/16
✓ Branch 162 → 163 taken 18 times.
✗ Branch 162 → 167 not taken.
✓ Branch 164 → 165 taken 9 times.
✓ Branch 164 → 167 taken 9 times.
✓ Branch 166 → 167 taken 9 times.
✗ Branch 166 → 168 not taken.
✓ Branch 169 → 170 taken 18 times.
✗ Branch 169 → 171 not taken.
✓ Branch 174 → 175 taken 18 times.
✗ Branch 174 → 179 not taken.
✓ Branch 176 → 177 taken 9 times.
✓ Branch 176 → 179 taken 9 times.
✓ Branch 178 → 179 taken 9 times.
✗ Branch 178 → 180 not taken.
✓ Branch 181 → 182 taken 18 times.
✗ Branch 181 → 183 not taken.
|
36 |
if ((is("if") || is("while") || is("for"))) numif++; |
| 1098 |
|
36 |
return; |
| 1099 |
|
|
} |
| 1100 |
16/16
✓ Branch 173 → 174 taken 105738 times.
✓ Branch 173 → 178 taken 168 times.
✓ Branch 175 → 176 taken 255 times.
✓ Branch 175 → 178 taken 105483 times.
✓ Branch 177 → 178 taken 165 times.
✓ Branch 177 → 179 taken 90 times.
✓ Branch 180 → 181 taken 105816 times.
✓ Branch 180 → 182 taken 90 times.
✓ Branch 185 → 186 taken 105738 times.
✓ Branch 185 → 190 taken 168 times.
✓ Branch 187 → 188 taken 255 times.
✓ Branch 187 → 190 taken 105483 times.
✓ Branch 189 → 190 taken 165 times.
✓ Branch 189 → 191 taken 90 times.
✓ Branch 192 → 193 taken 105816 times.
✓ Branch 192 → 194 taken 90 times.
|
211812 |
if ((is("if") || is("while") || is("for"))) numif++; |
| 1101 |
|
|
bool cond; |
| 1102 |
|
|
|
| 1103 |
|
211812 |
bool isassert = is("assert"); |
| 1104 |
|
|
|
| 1105 |
|
211812 |
char ** nextword=word+1; |
| 1106 |
|
211812 |
char * condstr= nullptr; |
| 1107 |
4/4
✓ Branch 184 → 185 taken 105741 times.
✓ Branch 184 → 257 taken 165 times.
✓ Branch 196 → 197 taken 105741 times.
✓ Branch 196 → 269 taken 165 times.
|
211812 |
if(!is("for")) { |
| 1108 |
|
|
while (true) |
| 1109 |
|
|
{ |
| 1110 |
2/8
✗ Branch 185 → 186 not taken.
✓ Branch 185 → 187 taken 105744 times.
✗ Branch 186 → 187 not taken.
✗ Branch 186 → 2411 not taken.
✗ Branch 197 → 198 not taken.
✓ Branch 197 → 199 taken 105744 times.
✗ Branch 198 → 199 not taken.
✗ Branch 198 → 2517 not taken.
|
211488 |
if (!nextword[0]) asar_throw_error(0, error_type_block, error_id_broken_conditional, word[0]); |
| 1111 |
|
211488 |
bool thiscond = false; |
| 1112 |
8/12
✓ Branch 187 → 188 taken 105567 times.
✓ Branch 187 → 190 taken 177 times.
✓ Branch 188 → 189 taken 105567 times.
✗ Branch 188 → 190 not taken.
✗ Branch 189 → 190 not taken.
✓ Branch 189 → 211 taken 105567 times.
✓ Branch 199 → 200 taken 105567 times.
✓ Branch 199 → 202 taken 177 times.
✓ Branch 200 → 201 taken 105567 times.
✗ Branch 200 → 202 not taken.
✗ Branch 201 → 202 not taken.
✓ Branch 201 → 223 taken 105567 times.
|
211488 |
if (!nextword[1] || !strcmp(nextword[1], "&&") || !strcmp(nextword[1], "||")) |
| 1113 |
|
|
{ |
| 1114 |
2/4
✗ Branch 190 → 191 not taken.
✓ Branch 190 → 198 taken 177 times.
✗ Branch 202 → 203 not taken.
✓ Branch 202 → 210 taken 177 times.
|
354 |
if (nextword[0][0] == '!') |
| 1115 |
|
|
{ |
| 1116 |
|
✗ |
asar_throw_warning(0, warning_id_feature_deprecated, "old style conditional negation (if !condition) ", "the not function"); |
| 1117 |
|
✗ |
double val = getnumdouble(nextword[0]+1); |
| 1118 |
|
✗ |
if (foundlabel && !foundlabel_static && !isassert) asar_throw_error(0, error_type_block, error_id_label_in_conditional, word[0]); |
| 1119 |
|
✗ |
thiscond = !(val > 0); |
| 1120 |
|
|
} |
| 1121 |
|
|
else |
| 1122 |
|
|
{ |
| 1123 |
2/4
✓ Branch 198 → 199 taken 177 times.
✗ Branch 198 → 2411 not taken.
✓ Branch 210 → 211 taken 177 times.
✗ Branch 210 → 2517 not taken.
|
354 |
double val = getnumdouble(nextword[0]); |
| 1124 |
2/16
✗ Branch 199 → 200 not taken.
✓ Branch 199 → 203 taken 177 times.
✗ Branch 200 → 201 not taken.
✗ Branch 200 → 203 not taken.
✗ Branch 201 → 202 not taken.
✗ Branch 201 → 203 not taken.
✗ Branch 202 → 203 not taken.
✗ Branch 202 → 2411 not taken.
✗ Branch 211 → 212 not taken.
✓ Branch 211 → 215 taken 177 times.
✗ Branch 212 → 213 not taken.
✗ Branch 212 → 215 not taken.
✗ Branch 213 → 214 not taken.
✗ Branch 213 → 215 not taken.
✗ Branch 214 → 215 not taken.
✗ Branch 214 → 2517 not taken.
|
354 |
if (foundlabel && !foundlabel_static && !isassert) asar_throw_error(0, error_type_block, error_id_label_in_conditional, word[0]); |
| 1125 |
|
354 |
thiscond = (val > 0); |
| 1126 |
|
|
} |
| 1127 |
|
|
|
| 1128 |
2/8
✗ Branch 204 → 205 not taken.
✓ Branch 204 → 209 taken 177 times.
✗ Branch 205 → 206 not taken.
✗ Branch 205 → 209 not taken.
✗ Branch 216 → 217 not taken.
✓ Branch 216 → 221 taken 177 times.
✗ Branch 217 → 218 not taken.
✗ Branch 217 → 221 not taken.
|
354 |
if (condstr && nextword[1]) |
| 1129 |
|
|
{ |
| 1130 |
|
✗ |
if (strcmp(condstr, nextword[1])) asar_throw_error(1, error_type_block, error_id_invalid_condition); |
| 1131 |
|
|
} |
| 1132 |
|
354 |
else condstr=nextword[1]; |
| 1133 |
|
354 |
nextword+=2; |
| 1134 |
|
354 |
} |
| 1135 |
|
|
else |
| 1136 |
|
|
{ |
| 1137 |
2/8
✗ Branch 211 → 212 not taken.
✓ Branch 211 → 213 taken 105567 times.
✗ Branch 212 → 213 not taken.
✗ Branch 212 → 2411 not taken.
✗ Branch 223 → 224 not taken.
✓ Branch 223 → 225 taken 105567 times.
✗ Branch 224 → 225 not taken.
✗ Branch 224 → 2517 not taken.
|
211134 |
if (!nextword[2]) asar_throw_error(0, error_type_block, error_id_broken_conditional, word[0]); |
| 1138 |
2/4
✓ Branch 213 → 214 taken 105567 times.
✗ Branch 213 → 2411 not taken.
✓ Branch 225 → 226 taken 105567 times.
✗ Branch 225 → 2517 not taken.
|
211134 |
double par1=getnumdouble(nextword[0]); |
| 1139 |
12/16
✓ Branch 214 → 215 taken 30 times.
✓ Branch 214 → 218 taken 105537 times.
✓ Branch 215 → 216 taken 15 times.
✓ Branch 215 → 218 taken 15 times.
✓ Branch 216 → 217 taken 15 times.
✗ Branch 216 → 218 not taken.
✗ Branch 217 → 218 not taken.
✓ Branch 217 → 2411 taken 15 times.
✓ Branch 226 → 227 taken 30 times.
✓ Branch 226 → 230 taken 105537 times.
✓ Branch 227 → 228 taken 15 times.
✓ Branch 227 → 230 taken 15 times.
✓ Branch 228 → 229 taken 15 times.
✗ Branch 228 → 230 not taken.
✗ Branch 229 → 230 not taken.
✓ Branch 229 → 2517 taken 15 times.
|
211134 |
if (foundlabel && !foundlabel_static && !isassert) asar_throw_error(0, error_type_block, error_id_label_in_conditional, word[0]); |
| 1140 |
2/4
✓ Branch 218 → 219 taken 105552 times.
✗ Branch 218 → 2411 not taken.
✓ Branch 230 → 231 taken 105552 times.
✗ Branch 230 → 2517 not taken.
|
211104 |
double par2=getnumdouble(nextword[2]); |
| 1141 |
2/16
✗ Branch 219 → 220 not taken.
✓ Branch 219 → 223 taken 105552 times.
✗ Branch 220 → 221 not taken.
✗ Branch 220 → 223 not taken.
✗ Branch 221 → 222 not taken.
✗ Branch 221 → 223 not taken.
✗ Branch 222 → 223 not taken.
✗ Branch 222 → 2411 not taken.
✗ Branch 231 → 232 not taken.
✓ Branch 231 → 235 taken 105552 times.
✗ Branch 232 → 233 not taken.
✗ Branch 232 → 235 not taken.
✗ Branch 233 → 234 not taken.
✗ Branch 233 → 235 not taken.
✗ Branch 234 → 235 not taken.
✗ Branch 234 → 2517 not taken.
|
211104 |
if (foundlabel && !foundlabel_static && !isassert) asar_throw_error(0, error_type_block, error_id_label_in_conditional, word[0]); |
| 1142 |
|
|
if(0); |
| 1143 |
4/4
✓ Branch 223 → 224 taken 60 times.
✓ Branch 223 → 225 taken 105492 times.
✓ Branch 235 → 236 taken 60 times.
✓ Branch 235 → 237 taken 105492 times.
|
211104 |
else if (!strcmp(nextword[1], ">")) thiscond=(par1>par2); |
| 1144 |
4/4
✓ Branch 225 → 226 taken 105435 times.
✓ Branch 225 → 227 taken 57 times.
✓ Branch 237 → 238 taken 105435 times.
✓ Branch 237 → 239 taken 57 times.
|
210984 |
else if (!strcmp(nextword[1], "<")) thiscond=(par1<par2); |
| 1145 |
4/4
✓ Branch 227 → 228 taken 3 times.
✓ Branch 227 → 229 taken 54 times.
✓ Branch 239 → 240 taken 3 times.
✓ Branch 239 → 241 taken 54 times.
|
114 |
else if (!strcmp(nextword[1], ">=")) thiscond=(par1>=par2); |
| 1146 |
2/4
✗ Branch 229 → 230 not taken.
✓ Branch 229 → 231 taken 54 times.
✗ Branch 241 → 242 not taken.
✓ Branch 241 → 243 taken 54 times.
|
108 |
else if (!strcmp(nextword[1], "<=")) thiscond=(par1<=par2); |
| 1147 |
2/4
✗ Branch 231 → 232 not taken.
✓ Branch 231 → 234 taken 54 times.
✗ Branch 243 → 244 not taken.
✓ Branch 243 → 246 taken 54 times.
|
108 |
else if (!strcmp(nextword[1], "=")) |
| 1148 |
|
|
{ |
| 1149 |
|
✗ |
asar_throw_warning(0, warning_id_feature_deprecated, "if a = b", "use \"if a == b\" instead"); |
| 1150 |
|
✗ |
thiscond=(par1==par2); |
| 1151 |
|
|
} |
| 1152 |
4/4
✓ Branch 234 → 235 taken 48 times.
✓ Branch 234 → 236 taken 6 times.
✓ Branch 246 → 247 taken 48 times.
✓ Branch 246 → 248 taken 6 times.
|
108 |
else if (!strcmp(nextword[1], "==")) thiscond=(par1==par2); |
| 1153 |
2/4
✓ Branch 236 → 237 taken 6 times.
✗ Branch 236 → 238 not taken.
✓ Branch 248 → 249 taken 6 times.
✗ Branch 248 → 250 not taken.
|
12 |
else if (!strcmp(nextword[1], "!=")) thiscond=(par1!=par2); |
| 1154 |
|
|
//else if (!strcmp(nextword[1], "<>")) thiscond=(par1!=par2); |
| 1155 |
|
✗ |
else asar_throw_error(0, error_type_block, error_id_broken_conditional, word[0]); |
| 1156 |
|
|
|
| 1157 |
6/8
✓ Branch 239 → 240 taken 3 times.
✓ Branch 239 → 244 taken 105549 times.
✗ Branch 240 → 241 not taken.
✓ Branch 240 → 244 taken 3 times.
✓ Branch 251 → 252 taken 3 times.
✓ Branch 251 → 256 taken 105549 times.
✗ Branch 252 → 253 not taken.
✓ Branch 252 → 256 taken 3 times.
|
211104 |
if (condstr && nextword[3]) |
| 1158 |
|
|
{ |
| 1159 |
|
✗ |
if (strcmp(condstr, nextword[3])) asar_throw_error(1, error_type_block, error_id_invalid_condition); |
| 1160 |
|
|
} |
| 1161 |
|
211104 |
else condstr=nextword[3]; |
| 1162 |
|
211104 |
nextword+=4; |
| 1163 |
|
|
} |
| 1164 |
4/4
✓ Branch 246 → 247 taken 9 times.
✓ Branch 246 → 254 taken 105720 times.
✓ Branch 258 → 259 taken 9 times.
✓ Branch 258 → 266 taken 105720 times.
|
211458 |
if (condstr) |
| 1165 |
|
|
{ |
| 1166 |
6/8
✓ Branch 247 → 248 taken 9 times.
✗ Branch 247 → 250 not taken.
✓ Branch 248 → 249 taken 3 times.
✓ Branch 248 → 254 taken 6 times.
✓ Branch 259 → 260 taken 9 times.
✗ Branch 259 → 262 not taken.
✓ Branch 260 → 261 taken 3 times.
✓ Branch 260 → 266 taken 6 times.
|
18 |
if (!strcmp(condstr, "&&")) { if(thiscond) continue; } |
| 1167 |
|
✗ |
else if (!strcmp(condstr, "||")) { if(!thiscond) continue; } |
| 1168 |
|
✗ |
else asar_throw_error(0, error_type_block, error_id_broken_conditional, word[0]); |
| 1169 |
|
|
} |
| 1170 |
|
211452 |
cond=thiscond; |
| 1171 |
|
211452 |
break; |
| 1172 |
|
6 |
} |
| 1173 |
|
|
} |
| 1174 |
|
|
|
| 1175 |
4/4
✓ Branch 258 → 259 taken 165 times.
✓ Branch 258 → 305 taken 105726 times.
✓ Branch 270 → 271 taken 165 times.
✓ Branch 270 → 323 taken 105726 times.
|
211782 |
if (is("for")) |
| 1176 |
|
|
{ |
| 1177 |
|
|
// for loops as anything except the first block cause weirdness |
| 1178 |
|
|
// (while loops do too, but let's not talk about it) |
| 1179 |
2/4
✗ Branch 259 → 260 not taken.
✓ Branch 259 → 261 taken 165 times.
✗ Branch 271 → 272 not taken.
✓ Branch 271 → 273 taken 165 times.
|
330 |
if(single_line_for_tracker != 1) { |
| 1180 |
|
✗ |
numif--; |
| 1181 |
|
✗ |
asar_throw_error(0, error_type_line, error_id_bad_single_line_for); |
| 1182 |
|
|
} |
| 1183 |
|
|
// TODO: these errors could probably be a bit more descriptive |
| 1184 |
4/4
✓ Branch 261 → 262 taken 42 times.
✓ Branch 261 → 291 taken 123 times.
✓ Branch 273 → 274 taken 42 times.
✓ Branch 273 → 308 taken 123 times.
|
330 |
if(!is_for_cont) |
| 1185 |
|
|
{ |
| 1186 |
|
|
// "for i = 0..16" |
| 1187 |
2/8
✗ Branch 262 → 263 not taken.
✓ Branch 262 → 264 taken 42 times.
✗ Branch 263 → 264 not taken.
✗ Branch 263 → 2401 not taken.
✗ Branch 274 → 275 not taken.
✓ Branch 274 → 276 taken 42 times.
✗ Branch 275 → 276 not taken.
✗ Branch 275 → 2501 not taken.
|
84 |
if(numwords != 4) asar_throw_error(0, error_type_block, error_id_broken_for_loop); |
| 1188 |
2/8
✗ Branch 264 → 265 not taken.
✓ Branch 264 → 266 taken 42 times.
✗ Branch 265 → 266 not taken.
✗ Branch 265 → 2401 not taken.
✗ Branch 276 → 277 not taken.
✓ Branch 276 → 278 taken 42 times.
✗ Branch 277 → 278 not taken.
✗ Branch 277 → 2501 not taken.
|
84 |
if(strcmp(word[2], "=") != 0) asar_throw_error(0, error_type_block, error_id_broken_for_loop); |
| 1189 |
|
|
|
| 1190 |
2/4
✓ Branch 266 → 267 taken 42 times.
✗ Branch 266 → 2401 not taken.
✓ Branch 278 → 279 taken 42 times.
✗ Branch 278 → 2501 not taken.
|
84 |
char* range_sep = strqpstr(word[3], ".."); |
| 1191 |
2/4
✗ Branch 267 → 268 not taken.
✓ Branch 267 → 269 taken 42 times.
✗ Branch 279 → 280 not taken.
✓ Branch 279 → 281 taken 42 times.
|
84 |
if(!range_sep) |
| 1192 |
|
✗ |
asar_throw_error(0, error_type_block, error_id_broken_for_loop, "invalid loop range"); |
| 1193 |
|
|
|
| 1194 |
2/4
✓ Branch 269 → 270 taken 42 times.
✗ Branch 269 → 2401 not taken.
✓ Branch 282 → 283 taken 42 times.
✗ Branch 282 → 2501 not taken.
|
84 |
string for_start(word[3], range_sep - word[3]); |
| 1195 |
2/4
✓ Branch 270 → 271 taken 42 times.
✗ Branch 270 → 2399 not taken.
✓ Branch 284 → 285 taken 42 times.
✗ Branch 284 → 2499 not taken.
|
84 |
string for_end(range_sep+2); |
| 1196 |
2/4
✓ Branch 272 → 273 taken 42 times.
✗ Branch 272 → 2397 not taken.
✓ Branch 286 → 287 taken 42 times.
✗ Branch 286 → 2497 not taken.
|
84 |
addedwstatus.for_start = getnum(for_start); |
| 1197 |
2/12
✗ Branch 273 → 274 not taken.
✓ Branch 273 → 276 taken 42 times.
✗ Branch 274 → 275 not taken.
✗ Branch 274 → 276 not taken.
✗ Branch 275 → 276 not taken.
✗ Branch 275 → 2397 not taken.
✗ Branch 287 → 288 not taken.
✓ Branch 287 → 290 taken 42 times.
✗ Branch 288 → 289 not taken.
✗ Branch 288 → 290 not taken.
✗ Branch 289 → 290 not taken.
✗ Branch 289 → 2497 not taken.
|
84 |
if(foundlabel && !foundlabel_static) asar_throw_error(0, error_type_block, error_id_label_in_conditional, "for"); |
| 1198 |
2/4
✓ Branch 277 → 278 taken 42 times.
✗ Branch 277 → 2397 not taken.
✓ Branch 291 → 292 taken 42 times.
✗ Branch 291 → 2497 not taken.
|
84 |
addedwstatus.for_end = getnum(for_end); |
| 1199 |
2/12
✗ Branch 278 → 279 not taken.
✓ Branch 278 → 281 taken 42 times.
✗ Branch 279 → 280 not taken.
✗ Branch 279 → 281 not taken.
✗ Branch 280 → 281 not taken.
✗ Branch 280 → 2397 not taken.
✗ Branch 292 → 293 not taken.
✓ Branch 292 → 295 taken 42 times.
✗ Branch 293 → 294 not taken.
✗ Branch 293 → 295 not taken.
✗ Branch 294 → 295 not taken.
✗ Branch 294 → 2497 not taken.
|
84 |
if(foundlabel && !foundlabel_static) asar_throw_error(0, error_type_block, error_id_label_in_conditional, "for"); |
| 1200 |
2/4
✓ Branch 281 → 282 taken 42 times.
✗ Branch 281 → 2397 not taken.
✓ Branch 296 → 297 taken 42 times.
✗ Branch 296 → 2497 not taken.
|
84 |
string varname = word[1]; |
| 1201 |
4/12
✓ Branch 283 → 284 taken 42 times.
✗ Branch 283 → 2395 not taken.
✗ Branch 284 → 285 not taken.
✓ Branch 284 → 286 taken 42 times.
✗ Branch 285 → 286 not taken.
✗ Branch 285 → 2395 not taken.
✓ Branch 298 → 299 taken 42 times.
✗ Branch 298 → 2495 not taken.
✗ Branch 299 → 300 not taken.
✓ Branch 299 → 301 taken 42 times.
✗ Branch 300 → 301 not taken.
✗ Branch 300 → 2495 not taken.
|
84 |
if(!validatedefinename(varname)) asar_throw_error(0, error_type_block, error_id_broken_for_loop); |
| 1202 |
2/4
✓ Branch 286 → 287 taken 42 times.
✗ Branch 286 → 2395 not taken.
✓ Branch 301 → 302 taken 42 times.
✗ Branch 301 → 2495 not taken.
|
84 |
addedwstatus.for_variable = varname; |
| 1203 |
|
84 |
addedwstatus.for_cur = addedwstatus.for_start; |
| 1204 |
|
84 |
} |
| 1205 |
|
|
else |
| 1206 |
|
|
{ |
| 1207 |
|
246 |
addedwstatus.for_cur++; |
| 1208 |
|
|
} |
| 1209 |
|
|
// this cond is actually also used to tell assemblefile whether to jump back to the beginning of the loop, so keep it updated |
| 1210 |
|
330 |
addedwstatus.cond = addedwstatus.for_cur < addedwstatus.for_end; |
| 1211 |
|
330 |
single_line_for_tracker = 2; |
| 1212 |
4/4
✓ Branch 292 → 293 taken 123 times.
✓ Branch 292 → 353 taken 42 times.
✓ Branch 309 → 310 taken 123 times.
✓ Branch 309 → 374 taken 42 times.
|
330 |
if(addedwstatus.cond) |
| 1213 |
|
|
{ |
| 1214 |
|
246 |
numtrue++; |
| 1215 |
6/8
✓ Branch 294 → 295 taken 123 times.
✗ Branch 294 → 2411 not taken.
✓ Branch 295 → 296 taken 96 times.
✓ Branch 295 → 299 taken 27 times.
✓ Branch 311 → 312 taken 123 times.
✗ Branch 311 → 2517 not taken.
✓ Branch 312 → 313 taken 96 times.
✓ Branch 312 → 316 taken 27 times.
|
246 |
if(defines.exists(addedwstatus.for_variable)) { |
| 1216 |
|
192 |
addedwstatus.for_has_var_backup = true; |
| 1217 |
4/8
✓ Branch 297 → 298 taken 96 times.
✗ Branch 297 → 2411 not taken.
✓ Branch 298 → 299 taken 96 times.
✗ Branch 298 → 2411 not taken.
✓ Branch 314 → 315 taken 96 times.
✗ Branch 314 → 2517 not taken.
✓ Branch 315 → 316 taken 96 times.
✗ Branch 315 → 2517 not taken.
|
192 |
addedwstatus.for_var_backup = defines.find(addedwstatus.for_variable); |
| 1218 |
|
|
} |
| 1219 |
6/12
✓ Branch 299 → 300 taken 123 times.
✗ Branch 299 → 2404 not taken.
✓ Branch 301 → 302 taken 123 times.
✗ Branch 301 → 2402 not taken.
✓ Branch 302 → 303 taken 123 times.
✗ Branch 302 → 2402 not taken.
✓ Branch 317 → 318 taken 123 times.
✗ Branch 317 → 2507 not taken.
✓ Branch 319 → 320 taken 123 times.
✗ Branch 319 → 2505 not taken.
✓ Branch 320 → 321 taken 123 times.
✗ Branch 320 → 2505 not taken.
|
246 |
defines.create(addedwstatus.for_variable) = ftostr(addedwstatus.for_cur); |
| 1220 |
|
|
} |
| 1221 |
|
|
} |
| 1222 |
12/12
✓ Branch 306 → 307 taken 105573 times.
✓ Branch 306 → 309 taken 153 times.
✓ Branch 308 → 309 taken 105483 times.
✓ Branch 308 → 310 taken 90 times.
✓ Branch 311 → 312 taken 105636 times.
✓ Branch 311 → 321 taken 90 times.
✓ Branch 324 → 325 taken 105573 times.
✓ Branch 324 → 327 taken 153 times.
✓ Branch 326 → 327 taken 105483 times.
✓ Branch 326 → 328 taken 90 times.
✓ Branch 329 → 330 taken 105636 times.
✓ Branch 329 → 339 taken 90 times.
|
211452 |
else if (is("if") || is("while")) |
| 1223 |
|
|
{ |
| 1224 |
|
|
if(0); |
| 1225 |
4/4
✓ Branch 312 → 313 taken 105525 times.
✓ Branch 312 → 315 taken 111 times.
✓ Branch 330 → 331 taken 105525 times.
✓ Branch 330 → 333 taken 111 times.
|
211272 |
else if (cond) |
| 1226 |
|
|
{ |
| 1227 |
|
211050 |
numtrue++; |
| 1228 |
2/4
✓ Branch 313 → 314 taken 105525 times.
✗ Branch 313 → 2411 not taken.
✓ Branch 331 → 332 taken 105525 times.
✗ Branch 331 → 2517 not taken.
|
211050 |
elsestatus[numif]=true; |
| 1229 |
|
|
} |
| 1230 |
2/4
✓ Branch 315 → 316 taken 111 times.
✗ Branch 315 → 320 not taken.
✓ Branch 333 → 334 taken 111 times.
✗ Branch 333 → 338 not taken.
|
222 |
else if (!cond) |
| 1231 |
|
|
{ |
| 1232 |
2/4
✗ Branch 316 → 317 not taken.
✓ Branch 316 → 318 taken 111 times.
✗ Branch 334 → 335 not taken.
✓ Branch 334 → 336 taken 111 times.
|
222 |
if(moreonline) moreonlinecond=false; |
| 1233 |
2/4
✓ Branch 318 → 319 taken 111 times.
✗ Branch 318 → 2411 not taken.
✓ Branch 336 → 337 taken 111 times.
✗ Branch 336 → 2517 not taken.
|
222 |
elsestatus[numif]=false; |
| 1234 |
|
|
} |
| 1235 |
|
211272 |
addedwstatus.cond = cond; |
| 1236 |
|
|
} |
| 1237 |
4/4
✓ Branch 322 → 323 taken 69 times.
✓ Branch 322 → 340 taken 21 times.
✓ Branch 340 → 341 taken 69 times.
✓ Branch 340 → 358 taken 21 times.
|
180 |
else if (is("elseif")) |
| 1238 |
|
|
{ |
| 1239 |
2/8
✗ Branch 323 → 324 not taken.
✓ Branch 323 → 325 taken 69 times.
✗ Branch 324 → 325 not taken.
✗ Branch 324 → 2411 not taken.
✗ Branch 341 → 342 not taken.
✓ Branch 341 → 343 taken 69 times.
✗ Branch 342 → 343 not taken.
✗ Branch 342 → 2517 not taken.
|
138 |
if (!numif) asar_throw_error(1, error_type_block, error_id_misplaced_elseif); |
| 1240 |
4/12
✓ Branch 325 → 326 taken 69 times.
✗ Branch 325 → 2411 not taken.
✗ Branch 326 → 327 not taken.
✓ Branch 326 → 328 taken 69 times.
✗ Branch 327 → 328 not taken.
✗ Branch 327 → 2411 not taken.
✓ Branch 343 → 344 taken 69 times.
✗ Branch 343 → 2517 not taken.
✗ Branch 344 → 345 not taken.
✓ Branch 344 → 346 taken 69 times.
✗ Branch 345 → 346 not taken.
✗ Branch 345 → 2517 not taken.
|
138 |
if (whilestatus[numif - 1].iswhile) asar_throw_error(1, error_type_block, error_id_elseif_in_while); |
| 1241 |
4/4
✓ Branch 328 → 329 taken 33 times.
✓ Branch 328 → 330 taken 36 times.
✓ Branch 346 → 347 taken 33 times.
✓ Branch 346 → 348 taken 36 times.
|
138 |
if (numif==numtrue) numtrue--; |
| 1242 |
14/16
✓ Branch 330 → 331 taken 33 times.
✓ Branch 330 → 334 taken 36 times.
✓ Branch 331 → 332 taken 33 times.
✗ Branch 331 → 2411 not taken.
✓ Branch 332 → 333 taken 18 times.
✓ Branch 332 → 334 taken 15 times.
✓ Branch 335 → 336 taken 18 times.
✓ Branch 335 → 353 taken 51 times.
✓ Branch 348 → 349 taken 33 times.
✓ Branch 348 → 352 taken 36 times.
✓ Branch 349 → 350 taken 33 times.
✗ Branch 349 → 2517 not taken.
✓ Branch 350 → 351 taken 18 times.
✓ Branch 350 → 352 taken 15 times.
✓ Branch 353 → 354 taken 18 times.
✓ Branch 353 → 374 taken 51 times.
|
138 |
if (cond && !elsestatus[numif]) |
| 1243 |
|
|
{ |
| 1244 |
2/4
✗ Branch 336 → 337 not taken.
✓ Branch 336 → 338 taken 18 times.
✗ Branch 354 → 355 not taken.
✓ Branch 354 → 356 taken 18 times.
|
36 |
if(moreonline) moreonlinecond = true; |
| 1245 |
|
36 |
numtrue++; |
| 1246 |
2/4
✓ Branch 338 → 339 taken 18 times.
✗ Branch 338 → 2411 not taken.
✓ Branch 356 → 357 taken 18 times.
✗ Branch 356 → 2517 not taken.
|
36 |
elsestatus[numif]=true; |
| 1247 |
|
|
} |
| 1248 |
|
|
} |
| 1249 |
|
|
// otherwise, must be assert command |
| 1250 |
8/8
✓ Branch 340 → 341 taken 7 times.
✓ Branch 340 → 353 taken 14 times.
✓ Branch 341 → 342 taken 5 times.
✓ Branch 341 → 353 taken 2 times.
✓ Branch 358 → 359 taken 7 times.
✓ Branch 358 → 374 taken 14 times.
✓ Branch 359 → 360 taken 5 times.
✓ Branch 359 → 374 taken 2 times.
|
42 |
else if (pass == 2 && !cond) |
| 1251 |
|
|
{ |
| 1252 |
12/20
✓ Branch 342 → 343 taken 5 times.
✗ Branch 342 → 2411 not taken.
✓ Branch 343 → 344 taken 2 times.
✓ Branch 343 → 352 taken 3 times.
✓ Branch 345 → 346 taken 2 times.
✗ Branch 345 → 2409 not taken.
✓ Branch 346 → 347 taken 2 times.
✗ Branch 346 → 2407 not taken.
✗ Branch 348 → 349 not taken.
✓ Branch 348 → 2405 taken 2 times.
✓ Branch 360 → 361 taken 5 times.
✗ Branch 360 → 2517 not taken.
✓ Branch 361 → 362 taken 2 times.
✓ Branch 361 → 373 taken 3 times.
✓ Branch 365 → 366 taken 2 times.
✗ Branch 365 → 2513 not taken.
✓ Branch 366 → 367 taken 2 times.
✗ Branch 366 → 2511 not taken.
✗ Branch 368 → 369 not taken.
✓ Branch 368 → 2509 taken 2 times.
|
20 |
if (errmsg) asar_throw_error(2, error_type_block, error_id_assertion_failed, (string(": ") + errmsg).data()); |
| 1253 |
2/4
✗ Branch 352 → 353 not taken.
✓ Branch 352 → 2411 taken 3 times.
✗ Branch 373 → 374 not taken.
✓ Branch 373 → 2517 taken 3 times.
|
6 |
else asar_throw_error(2, error_type_block, error_id_assertion_failed, "."); |
| 1254 |
|
|
} |
| 1255 |
8/8
✓ Branch 355 → 356 taken 105886 times.
✓ Branch 355 → 357 taken 18 times.
✓ Branch 359 → 360 taken 105886 times.
✓ Branch 359 → 362 taken 18 times.
✓ Branch 376 → 377 taken 105886 times.
✓ Branch 376 → 378 taken 18 times.
✓ Branch 380 → 381 taken 105886 times.
✓ Branch 380 → 382 taken 18 times.
|
211924 |
} |
| 1256 |
16/16
✓ Branch 364 → 365 taken 219856 times.
✓ Branch 364 → 369 taken 591 times.
✓ Branch 366 → 367 taken 114787 times.
✓ Branch 366 → 369 taken 105069 times.
✓ Branch 368 → 369 taken 174 times.
✓ Branch 368 → 370 taken 114613 times.
✓ Branch 371 → 372 taken 105834 times.
✓ Branch 371 → 415 taken 114613 times.
✓ Branch 389 → 390 taken 219856 times.
✓ Branch 389 → 394 taken 591 times.
✓ Branch 391 → 392 taken 114787 times.
✓ Branch 391 → 394 taken 105069 times.
✓ Branch 393 → 394 taken 174 times.
✓ Branch 393 → 395 taken 114613 times.
✓ Branch 396 → 397 taken 105834 times.
✓ Branch 396 → 440 taken 114613 times.
|
440894 |
else if (is("endif") || is("endwhile") || is("endfor")) |
| 1257 |
|
|
{ |
| 1258 |
4/4
✓ Branch 372 → 373 taken 3 times.
✓ Branch 372 → 374 taken 105831 times.
✓ Branch 397 → 398 taken 3 times.
✓ Branch 397 → 399 taken 105831 times.
|
211668 |
if(fakeendif) fakeendif--; |
| 1259 |
2/8
✗ Branch 374 → 375 not taken.
✓ Branch 374 → 376 taken 105834 times.
✗ Branch 375 → 376 not taken.
✗ Branch 375 → 2652 not taken.
✗ Branch 399 → 400 not taken.
✓ Branch 399 → 401 taken 105834 times.
✗ Branch 400 → 401 not taken.
✗ Branch 400 → 2849 not taken.
|
211668 |
if (numwords != 1) asar_throw_error(1, error_type_block, error_id_unknown_command); |
| 1260 |
2/8
✗ Branch 376 → 377 not taken.
✓ Branch 376 → 378 taken 105834 times.
✗ Branch 377 → 378 not taken.
✗ Branch 377 → 2652 not taken.
✗ Branch 401 → 402 not taken.
✓ Branch 401 → 403 taken 105834 times.
✗ Branch 402 → 403 not taken.
✗ Branch 402 → 2849 not taken.
|
211668 |
if (!numif) asar_throw_error(1, error_type_block, error_id_misplaced_endif); |
| 1261 |
4/4
✓ Branch 378 → 379 taken 105600 times.
✓ Branch 378 → 380 taken 234 times.
✓ Branch 403 → 404 taken 105600 times.
✓ Branch 403 → 405 taken 234 times.
|
211668 |
if (numif==numtrue) numtrue--; |
| 1262 |
|
211668 |
numif--; |
| 1263 |
6/8
✓ Branch 380 → 381 taken 105834 times.
✗ Branch 380 → 2652 not taken.
✓ Branch 381 → 382 taken 174 times.
✓ Branch 381 → 401 taken 105660 times.
✓ Branch 405 → 406 taken 105834 times.
✗ Branch 405 → 2849 not taken.
✓ Branch 406 → 407 taken 174 times.
✓ Branch 406 → 426 taken 105660 times.
|
211668 |
if(whilestatus[numif].is_for) { |
| 1264 |
4/4
✓ Branch 382 → 383 taken 30 times.
✓ Branch 382 → 384 taken 144 times.
✓ Branch 407 → 408 taken 30 times.
✓ Branch 407 → 409 taken 144 times.
|
348 |
if(single_line_for_tracker == 2) single_line_for_tracker = 3; |
| 1265 |
2/4
✗ Branch 384 → 385 not taken.
✓ Branch 384 → 389 taken 174 times.
✗ Branch 409 → 410 not taken.
✓ Branch 409 → 414 taken 174 times.
|
348 |
if(moreonline) { |
| 1266 |
|
|
// sabotage the whilestatus to prevent the loop running again |
| 1267 |
|
|
// and spamming more of the same error |
| 1268 |
|
✗ |
whilestatus[numif].for_cur = whilestatus[numif].for_end; |
| 1269 |
|
✗ |
whilestatus[numif].cond = false; |
| 1270 |
|
✗ |
asar_throw_error(0, error_type_block, error_id_bad_single_line_for); |
| 1271 |
|
|
} |
| 1272 |
6/8
✓ Branch 389 → 390 taken 174 times.
✗ Branch 389 → 2652 not taken.
✓ Branch 390 → 391 taken 123 times.
✓ Branch 390 → 401 taken 51 times.
✓ Branch 414 → 415 taken 174 times.
✗ Branch 414 → 2849 not taken.
✓ Branch 415 → 416 taken 123 times.
✓ Branch 415 → 426 taken 51 times.
|
348 |
if(whilestatus[numif].cond) { |
| 1273 |
6/8
✓ Branch 391 → 392 taken 123 times.
✗ Branch 391 → 2652 not taken.
✓ Branch 392 → 393 taken 96 times.
✓ Branch 392 → 398 taken 27 times.
✓ Branch 416 → 417 taken 123 times.
✗ Branch 416 → 2849 not taken.
✓ Branch 417 → 418 taken 96 times.
✓ Branch 417 → 423 taken 27 times.
|
246 |
if(whilestatus[numif].for_has_var_backup) |
| 1274 |
8/16
✓ Branch 393 → 394 taken 96 times.
✗ Branch 393 → 2652 not taken.
✓ Branch 394 → 395 taken 96 times.
✗ Branch 394 → 2652 not taken.
✓ Branch 396 → 397 taken 96 times.
✗ Branch 396 → 2652 not taken.
✓ Branch 397 → 401 taken 96 times.
✗ Branch 397 → 2652 not taken.
✓ Branch 418 → 419 taken 96 times.
✗ Branch 418 → 2849 not taken.
✓ Branch 419 → 420 taken 96 times.
✗ Branch 419 → 2849 not taken.
✓ Branch 421 → 422 taken 96 times.
✗ Branch 421 → 2849 not taken.
✓ Branch 422 → 426 taken 96 times.
✗ Branch 422 → 2849 not taken.
|
192 |
defines.create(whilestatus[numif].for_variable) = whilestatus[numif].for_var_backup; |
| 1275 |
4/8
✓ Branch 398 → 399 taken 27 times.
✗ Branch 398 → 2652 not taken.
✓ Branch 400 → 401 taken 27 times.
✗ Branch 400 → 2652 not taken.
✓ Branch 423 → 424 taken 27 times.
✗ Branch 423 → 2849 not taken.
✓ Branch 425 → 426 taken 27 times.
✗ Branch 425 → 2849 not taken.
|
54 |
else defines.remove(whilestatus[numif].for_variable); |
| 1276 |
|
|
} |
| 1277 |
|
|
} |
| 1278 |
4/4
✓ Branch 401 → 402 taken 105409 times.
✓ Branch 401 → 2365 taken 425 times.
✓ Branch 426 → 427 taken 105409 times.
✓ Branch 426 → 2456 taken 425 times.
|
211668 |
if(warn_endwhile) { |
| 1279 |
6/8
✓ Branch 402 → 403 taken 105409 times.
✗ Branch 402 → 2652 not taken.
✓ Branch 403 → 404 taken 105070 times.
✓ Branch 403 → 407 taken 339 times.
✓ Branch 427 → 428 taken 105409 times.
✗ Branch 427 → 2849 not taken.
✓ Branch 428 → 429 taken 105070 times.
✓ Branch 428 → 432 taken 339 times.
|
210818 |
if(whilestatus[numif].iswhile) { |
| 1280 |
4/4
✓ Branch 405 → 406 taken 1 time.
✓ Branch 405 → 2365 taken 105069 times.
✓ Branch 430 → 431 taken 1 time.
✓ Branch 430 → 2456 taken 105069 times.
|
210140 |
if(!is("endwhile")) { |
| 1281 |
|
2 |
warn_endwhile = false; |
| 1282 |
2/4
✓ Branch 406 → 2365 taken 1 time.
✗ Branch 406 → 2652 not taken.
✓ Branch 431 → 2456 taken 1 time.
✗ Branch 431 → 2849 not taken.
|
2 |
asar_throw_warning(0, warning_id_feature_deprecated, "mismatched terminators", "use endwhile to terminate a while statement"); |
| 1283 |
|
|
} |
| 1284 |
|
|
} |
| 1285 |
6/8
✓ Branch 407 → 408 taken 339 times.
✗ Branch 407 → 2652 not taken.
✓ Branch 408 → 409 taken 174 times.
✓ Branch 408 → 412 taken 165 times.
✓ Branch 432 → 433 taken 339 times.
✗ Branch 432 → 2849 not taken.
✓ Branch 433 → 434 taken 174 times.
✓ Branch 433 → 437 taken 165 times.
|
678 |
else if(whilestatus[numif].is_for) { |
| 1286 |
2/4
✗ Branch 410 → 411 not taken.
✓ Branch 410 → 2365 taken 174 times.
✗ Branch 435 → 436 not taken.
✓ Branch 435 → 2456 taken 174 times.
|
348 |
if(!is("endfor")) { |
| 1287 |
|
✗ |
warn_endwhile = false; |
| 1288 |
|
✗ |
asar_throw_warning(0, warning_id_feature_deprecated, "mismatched terminators", "use endfor to terminate a for statement"); |
| 1289 |
|
|
} |
| 1290 |
|
|
} |
| 1291 |
2/4
✗ Branch 413 → 414 not taken.
✓ Branch 413 → 2365 taken 165 times.
✗ Branch 438 → 439 not taken.
✓ Branch 438 → 2456 taken 165 times.
|
330 |
else if(!is("endif")) { |
| 1292 |
|
✗ |
warn_endwhile = false; |
| 1293 |
|
✗ |
asar_throw_warning(0, warning_id_feature_deprecated, "mismatched terminators", "use endif to terminate an if statement"); |
| 1294 |
|
|
} |
| 1295 |
|
|
} |
| 1296 |
|
|
} |
| 1297 |
4/4
✓ Branch 416 → 417 taken 114 times.
✓ Branch 416 → 441 taken 114499 times.
✓ Branch 441 → 442 taken 114 times.
✓ Branch 441 → 466 taken 114499 times.
|
229226 |
else if (is("else")) |
| 1298 |
|
|
{ |
| 1299 |
2/4
✗ Branch 417 → 418 not taken.
✓ Branch 417 → 419 taken 114 times.
✗ Branch 442 → 443 not taken.
✓ Branch 442 → 444 taken 114 times.
|
228 |
if(!moreonlinecond) moreonlinecond = true; |
| 1300 |
2/8
✗ Branch 419 → 420 not taken.
✓ Branch 419 → 421 taken 114 times.
✗ Branch 420 → 421 not taken.
✗ Branch 420 → 2652 not taken.
✗ Branch 444 → 445 not taken.
✓ Branch 444 → 446 taken 114 times.
✗ Branch 445 → 446 not taken.
✗ Branch 445 → 2849 not taken.
|
228 |
if (numwords != 1) asar_throw_error(1, error_type_block, error_id_unknown_command); |
| 1301 |
2/8
✗ Branch 421 → 422 not taken.
✓ Branch 421 → 423 taken 114 times.
✗ Branch 422 → 423 not taken.
✗ Branch 422 → 2652 not taken.
✗ Branch 446 → 447 not taken.
✓ Branch 446 → 448 taken 114 times.
✗ Branch 447 → 448 not taken.
✗ Branch 447 → 2849 not taken.
|
228 |
if (!numif) asar_throw_error(1, error_type_block, error_id_misplaced_else); |
| 1302 |
10/24
✓ Branch 423 → 424 taken 114 times.
✗ Branch 423 → 2652 not taken.
✓ Branch 424 → 425 taken 114 times.
✗ Branch 424 → 427 not taken.
✓ Branch 425 → 426 taken 114 times.
✗ Branch 425 → 2652 not taken.
✗ Branch 426 → 427 not taken.
✓ Branch 426 → 428 taken 114 times.
✗ Branch 429 → 430 not taken.
✓ Branch 429 → 431 taken 114 times.
✗ Branch 430 → 2365 not taken.
✗ Branch 430 → 2652 not taken.
✓ Branch 448 → 449 taken 114 times.
✗ Branch 448 → 2849 not taken.
✓ Branch 449 → 450 taken 114 times.
✗ Branch 449 → 452 not taken.
✓ Branch 450 → 451 taken 114 times.
✗ Branch 450 → 2849 not taken.
✗ Branch 451 → 452 not taken.
✓ Branch 451 → 453 taken 114 times.
✗ Branch 454 → 455 not taken.
✓ Branch 454 → 456 taken 114 times.
✗ Branch 455 → 2456 not taken.
✗ Branch 455 → 2849 not taken.
|
228 |
if (whilestatus[numif - 1].iswhile || whilestatus[numif - 1].is_for) asar_throw_error(1, error_type_block, error_id_else_in_while_loop); |
| 1303 |
4/4
✓ Branch 431 → 432 taken 57 times.
✓ Branch 431 → 433 taken 57 times.
✓ Branch 456 → 457 taken 57 times.
✓ Branch 456 → 458 taken 57 times.
|
228 |
else if (numif==numtrue) numtrue--; |
| 1304 |
12/16
✓ Branch 433 → 434 taken 57 times.
✗ Branch 433 → 437 not taken.
✓ Branch 434 → 435 taken 57 times.
✗ Branch 434 → 2652 not taken.
✓ Branch 435 → 436 taken 24 times.
✓ Branch 435 → 437 taken 33 times.
✓ Branch 438 → 439 taken 24 times.
✓ Branch 438 → 2365 taken 33 times.
✓ Branch 458 → 459 taken 57 times.
✗ Branch 458 → 462 not taken.
✓ Branch 459 → 460 taken 57 times.
✗ Branch 459 → 2849 not taken.
✓ Branch 460 → 461 taken 24 times.
✓ Branch 460 → 462 taken 33 times.
✓ Branch 463 → 464 taken 24 times.
✓ Branch 463 → 2456 taken 33 times.
|
114 |
else if (numif==numtrue+1 && !elsestatus[numif]) |
| 1305 |
|
|
{ |
| 1306 |
|
48 |
numtrue++; |
| 1307 |
2/4
✓ Branch 439 → 440 taken 24 times.
✗ Branch 439 → 2652 not taken.
✓ Branch 464 → 465 taken 24 times.
✗ Branch 464 → 2849 not taken.
|
48 |
elsestatus[numif]=true; |
| 1308 |
|
|
} |
| 1309 |
|
|
} |
| 1310 |
4/4
✓ Branch 441 → 442 taken 447 times.
✓ Branch 441 → 443 taken 114052 times.
✓ Branch 466 → 467 taken 447 times.
✓ Branch 466 → 468 taken 114052 times.
|
228998 |
else if (numif!=numtrue) return; |
| 1311 |
8/8
✓ Branch 443 → 444 taken 114051 times.
✓ Branch 443 → 2652 taken 1 time.
✓ Branch 444 → 445 taken 4868 times.
✓ Branch 444 → 447 taken 109183 times.
✓ Branch 468 → 469 taken 114051 times.
✓ Branch 468 → 2849 taken 1 time.
✓ Branch 469 → 470 taken 4868 times.
✓ Branch 469 → 472 taken 109183 times.
|
228104 |
else if (asblock_pick(word, numwords)) |
| 1312 |
|
|
{ |
| 1313 |
2/4
✓ Branch 445 → 446 taken 4868 times.
✗ Branch 445 → 2652 not taken.
✓ Branch 470 → 471 taken 4868 times.
✗ Branch 470 → 2849 not taken.
|
9736 |
add_addr_to_line(addrToLinePos); |
| 1314 |
|
9736 |
numopcodes += recent_opcode_num; |
| 1315 |
|
|
} |
| 1316 |
12/12
✓ Branch 447 → 448 taken 108521 times.
✓ Branch 447 → 451 taken 662 times.
✓ Branch 449 → 450 taken 3 times.
✓ Branch 449 → 451 taken 108518 times.
✓ Branch 452 → 453 taken 3 times.
✓ Branch 452 → 467 taken 109180 times.
✓ Branch 472 → 473 taken 108521 times.
✓ Branch 472 → 476 taken 662 times.
✓ Branch 474 → 475 taken 3 times.
✓ Branch 474 → 476 taken 108518 times.
✓ Branch 477 → 478 taken 3 times.
✓ Branch 477 → 495 taken 109180 times.
|
218366 |
else if (is1("undef")) |
| 1317 |
|
|
{ |
| 1318 |
|
6 |
string def; |
| 1319 |
|
|
// RPG Hacker: Not sure if we should allow this? |
| 1320 |
|
|
// Currently, the manual states that we should not include the |
| 1321 |
|
|
// exclamation mark, and I believe that this is for the better |
| 1322 |
|
|
// because I can see this leading to ambiguities or causing |
| 1323 |
|
|
// problems. If we add this back in, we should definitely |
| 1324 |
|
|
// also added it to the defined() function for consistency, though. |
| 1325 |
|
|
// Well, actually I just check and we can't support this in |
| 1326 |
|
|
// defined() (the defined is already replaced at that point), so |
| 1327 |
|
|
// I think we should not support it here, either. |
| 1328 |
|
|
/*if (*par == '!') def = S safedequote(par) + 1; |
| 1329 |
6/12
✓ Branch 454 → 455 taken 3 times.
✗ Branch 454 → 2418 not taken.
✓ Branch 455 → 456 taken 3 times.
✗ Branch 455 → 2418 not taken.
✓ Branch 456 → 457 taken 3 times.
✗ Branch 456 → 2416 not taken.
✓ Branch 481 → 482 taken 3 times.
✗ Branch 481 → 2526 not taken.
✓ Branch 482 → 483 taken 3 times.
✗ Branch 482 → 2526 not taken.
✓ Branch 483 → 484 taken 3 times.
✗ Branch 483 → 2524 not taken.
|
6 |
else*/ def = STR safedequote(par); |
| 1330 |
|
|
|
| 1331 |
4/8
✓ Branch 459 → 460 taken 3 times.
✗ Branch 459 → 2419 not taken.
✓ Branch 460 → 461 taken 3 times.
✗ Branch 460 → 463 not taken.
✓ Branch 487 → 488 taken 3 times.
✗ Branch 487 → 2528 not taken.
✓ Branch 488 → 489 taken 3 times.
✗ Branch 488 → 491 not taken.
|
6 |
if (defines.exists(def)) |
| 1332 |
|
|
{ |
| 1333 |
2/4
✓ Branch 462 → 465 taken 3 times.
✗ Branch 462 → 2419 not taken.
✓ Branch 490 → 493 taken 3 times.
✗ Branch 490 → 2528 not taken.
|
6 |
defines.remove(def); |
| 1334 |
|
|
} |
| 1335 |
|
|
else |
| 1336 |
|
|
{ |
| 1337 |
|
✗ |
asar_throw_error(0, error_type_block, error_id_define_not_found, def.data()); |
| 1338 |
|
|
} |
| 1339 |
|
6 |
} |
| 1340 |
12/12
✓ Branch 467 → 468 taken 283 times.
✓ Branch 467 → 471 taken 108897 times.
✓ Branch 469 → 470 taken 3 times.
✓ Branch 469 → 471 taken 280 times.
✓ Branch 472 → 473 taken 3 times.
✓ Branch 472 → 474 taken 109177 times.
✓ Branch 495 → 496 taken 283 times.
✓ Branch 495 → 499 taken 108897 times.
✓ Branch 497 → 498 taken 3 times.
✓ Branch 497 → 499 taken 280 times.
✓ Branch 500 → 501 taken 3 times.
✓ Branch 500 → 502 taken 109177 times.
|
218360 |
else if (is0("error")) |
| 1341 |
|
|
{ |
| 1342 |
2/4
✗ Branch 473 → 2365 not taken.
✓ Branch 473 → 2652 taken 3 times.
✗ Branch 501 → 2456 not taken.
✓ Branch 501 → 2849 taken 3 times.
|
6 |
asar_throw_error(0, error_type_block, error_id_error_command, "."); |
| 1343 |
|
|
} |
| 1344 |
12/12
✓ Branch 474 → 475 taken 280 times.
✓ Branch 474 → 478 taken 108897 times.
✓ Branch 476 → 477 taken 3 times.
✓ Branch 476 → 478 taken 277 times.
✓ Branch 479 → 480 taken 3 times.
✓ Branch 479 → 481 taken 109174 times.
✓ Branch 502 → 503 taken 280 times.
✓ Branch 502 → 506 taken 108897 times.
✓ Branch 504 → 505 taken 3 times.
✓ Branch 504 → 506 taken 277 times.
✓ Branch 507 → 508 taken 3 times.
✓ Branch 507 → 509 taken 109174 times.
|
218354 |
else if (is0("warn")) |
| 1345 |
|
|
{ |
| 1346 |
2/4
✓ Branch 480 → 2365 taken 3 times.
✗ Branch 480 → 2652 not taken.
✓ Branch 508 → 2456 taken 3 times.
✗ Branch 508 → 2849 not taken.
|
6 |
asar_throw_warning(2, warning_id_warn_command, "."); |
| 1347 |
|
|
} |
| 1348 |
12/12
✓ Branch 481 → 482 taken 108518 times.
✓ Branch 481 → 485 taken 656 times.
✓ Branch 483 → 484 taken 6 times.
✓ Branch 483 → 485 taken 108512 times.
✓ Branch 486 → 487 taken 6 times.
✓ Branch 486 → 497 taken 109168 times.
✓ Branch 509 → 510 taken 108518 times.
✓ Branch 509 → 513 taken 656 times.
✓ Branch 511 → 512 taken 6 times.
✓ Branch 511 → 513 taken 108512 times.
✓ Branch 514 → 515 taken 6 times.
✓ Branch 514 → 530 taken 109168 times.
|
218348 |
else if (is1("error")) |
| 1349 |
|
|
{ |
| 1350 |
2/4
✓ Branch 487 → 488 taken 6 times.
✗ Branch 487 → 2430 not taken.
✓ Branch 516 → 517 taken 6 times.
✗ Branch 516 → 2542 not taken.
|
12 |
string out = handle_print(par); |
| 1351 |
|
|
// RPG Hacker: This used to be on pass 0, which had its merits (you don't want to miss a potentially critical |
| 1352 |
|
|
// user-generated error, just because a bazillion other errors are thrown in passes before it). However, I |
| 1353 |
|
|
// don't see how to support print functions with this without moving it to pass 2. Suggestions are welcome. |
| 1354 |
6/12
✓ Branch 489 → 490 taken 6 times.
✗ Branch 489 → 2426 not taken.
✓ Branch 490 → 491 taken 6 times.
✗ Branch 490 → 2424 not taken.
✗ Branch 492 → 493 not taken.
✓ Branch 492 → 2422 taken 6 times.
✓ Branch 520 → 521 taken 6 times.
✗ Branch 520 → 2536 not taken.
✓ Branch 521 → 522 taken 6 times.
✗ Branch 521 → 2534 not taken.
✗ Branch 523 → 524 not taken.
✓ Branch 523 → 2532 taken 6 times.
|
42 |
asar_throw_error(2, error_type_block, error_id_error_command, (string(": ") + out).data()); |
| 1355 |
|
12 |
} |
| 1356 |
12/12
✓ Branch 497 → 498 taken 108512 times.
✓ Branch 497 → 501 taken 656 times.
✓ Branch 499 → 500 taken 6 times.
✓ Branch 499 → 501 taken 108506 times.
✓ Branch 502 → 503 taken 6 times.
✓ Branch 502 → 513 taken 109162 times.
✓ Branch 530 → 531 taken 108512 times.
✓ Branch 530 → 534 taken 656 times.
✓ Branch 532 → 533 taken 6 times.
✓ Branch 532 → 534 taken 108506 times.
✓ Branch 535 → 536 taken 6 times.
✓ Branch 535 → 551 taken 109162 times.
|
218336 |
else if (is1("warn")) |
| 1357 |
|
|
{ |
| 1358 |
2/4
✓ Branch 503 → 504 taken 6 times.
✗ Branch 503 → 2439 not taken.
✓ Branch 537 → 538 taken 6 times.
✗ Branch 537 → 2554 not taken.
|
12 |
string out = handle_print(par); |
| 1359 |
6/12
✓ Branch 505 → 506 taken 6 times.
✗ Branch 505 → 2435 not taken.
✓ Branch 506 → 507 taken 6 times.
✗ Branch 506 → 2433 not taken.
✓ Branch 508 → 509 taken 6 times.
✗ Branch 508 → 2431 not taken.
✓ Branch 541 → 542 taken 6 times.
✗ Branch 541 → 2548 not taken.
✓ Branch 542 → 543 taken 6 times.
✗ Branch 542 → 2546 not taken.
✓ Branch 544 → 545 taken 6 times.
✗ Branch 544 → 2544 not taken.
|
12 |
asar_throw_warning(2, warning_id_warn_command, (string(": ") + out).data()); |
| 1360 |
|
12 |
} |
| 1361 |
12/12
✓ Branch 513 → 514 taken 108506 times.
✓ Branch 513 → 517 taken 656 times.
✓ Branch 515 → 516 taken 18 times.
✓ Branch 515 → 517 taken 108488 times.
✓ Branch 518 → 519 taken 18 times.
✓ Branch 518 → 525 taken 109144 times.
✓ Branch 551 → 552 taken 108506 times.
✓ Branch 551 → 555 taken 656 times.
✓ Branch 553 → 554 taken 18 times.
✓ Branch 553 → 555 taken 108488 times.
✓ Branch 556 → 557 taken 18 times.
✓ Branch 556 → 561 taken 109144 times.
|
218324 |
else if (is1("warnings")) |
| 1362 |
|
|
{ |
| 1363 |
5/6
✓ Branch 519 → 520 taken 18 times.
✗ Branch 519 → 2652 not taken.
✓ Branch 520 → 521 taken 9 times.
✓ Branch 520 → 522 taken 9 times.
✓ Branch 557 → 558 taken 9 times.
✓ Branch 557 → 559 taken 9 times.
|
36 |
if (stricmp(word[1], "push") == 0) |
| 1364 |
|
|
{ |
| 1365 |
2/4
✓ Branch 521 → 2365 taken 9 times.
✗ Branch 521 → 2652 not taken.
✓ Branch 558 → 2456 taken 9 times.
✗ Branch 558 → 2849 not taken.
|
18 |
push_warnings(); |
| 1366 |
|
|
} |
| 1367 |
3/6
✓ Branch 522 → 523 taken 9 times.
✗ Branch 522 → 2652 not taken.
✓ Branch 523 → 524 taken 9 times.
✗ Branch 523 → 2365 not taken.
✓ Branch 559 → 560 taken 9 times.
✗ Branch 559 → 2456 not taken.
|
18 |
else if (stricmp(word[1], "pull") == 0) |
| 1368 |
|
|
{ |
| 1369 |
4/4
✓ Branch 524 → 2365 taken 6 times.
✓ Branch 524 → 2652 taken 3 times.
✓ Branch 560 → 2456 taken 6 times.
✓ Branch 560 → 2849 taken 3 times.
|
18 |
pull_warnings(); |
| 1370 |
|
|
} |
| 1371 |
|
|
} |
| 1372 |
12/12
✓ Branch 525 → 526 taken 346 times.
✓ Branch 525 → 529 taken 108798 times.
✓ Branch 527 → 528 taken 36 times.
✓ Branch 527 → 529 taken 310 times.
✓ Branch 530 → 531 taken 36 times.
✓ Branch 530 → 543 taken 109108 times.
✓ Branch 561 → 562 taken 346 times.
✓ Branch 561 → 565 taken 108798 times.
✓ Branch 563 → 564 taken 36 times.
✓ Branch 563 → 565 taken 310 times.
✓ Branch 566 → 567 taken 36 times.
✓ Branch 566 → 577 taken 109108 times.
|
218288 |
else if (is2("warnings")) |
| 1373 |
|
|
{ |
| 1374 |
5/6
✓ Branch 531 → 532 taken 36 times.
✗ Branch 531 → 2652 not taken.
✓ Branch 532 → 533 taken 6 times.
✓ Branch 532 → 537 taken 30 times.
✓ Branch 567 → 568 taken 6 times.
✓ Branch 567 → 572 taken 30 times.
|
72 |
if (stricmp(word[1], "enable") == 0) |
| 1375 |
|
|
{ |
| 1376 |
2/4
✓ Branch 533 → 534 taken 6 times.
✗ Branch 533 → 2652 not taken.
✓ Branch 568 → 569 taken 6 times.
✗ Branch 568 → 2849 not taken.
|
12 |
asar_warning_id warnid = parse_warning_id_from_string(word[2]); |
| 1377 |
|
|
|
| 1378 |
2/4
✓ Branch 534 → 535 taken 6 times.
✗ Branch 534 → 536 not taken.
✓ Branch 569 → 570 taken 6 times.
✗ Branch 569 → 571 not taken.
|
12 |
if (warnid != warning_id_end) |
| 1379 |
|
|
{ |
| 1380 |
2/4
✓ Branch 535 → 2365 taken 6 times.
✗ Branch 535 → 2652 not taken.
✓ Branch 570 → 2456 taken 6 times.
✗ Branch 570 → 2849 not taken.
|
12 |
set_warning_enabled(warnid, true); |
| 1381 |
|
|
} |
| 1382 |
|
|
else |
| 1383 |
|
|
{ |
| 1384 |
|
✗ |
asar_throw_error(0, error_type_null, error_id_invalid_warning_id, "warnings enable", (int)(warning_id_start + 1), (int)(warning_id_end - 1)); |
| 1385 |
|
|
} |
| 1386 |
|
|
} |
| 1387 |
3/6
✓ Branch 537 → 538 taken 30 times.
✗ Branch 537 → 2652 not taken.
✓ Branch 538 → 539 taken 30 times.
✗ Branch 538 → 2365 not taken.
✓ Branch 572 → 573 taken 30 times.
✗ Branch 572 → 2456 not taken.
|
60 |
else if (stricmp(word[1], "disable") == 0) |
| 1388 |
|
|
{ |
| 1389 |
2/4
✓ Branch 539 → 540 taken 30 times.
✗ Branch 539 → 2652 not taken.
✓ Branch 573 → 574 taken 30 times.
✗ Branch 573 → 2849 not taken.
|
60 |
asar_warning_id warnid = parse_warning_id_from_string(word[2]); |
| 1390 |
|
|
|
| 1391 |
2/4
✓ Branch 540 → 541 taken 30 times.
✗ Branch 540 → 542 not taken.
✓ Branch 574 → 575 taken 30 times.
✗ Branch 574 → 576 not taken.
|
60 |
if (warnid != warning_id_end) |
| 1392 |
|
|
{ |
| 1393 |
2/4
✓ Branch 541 → 2365 taken 30 times.
✗ Branch 541 → 2652 not taken.
✓ Branch 575 → 2456 taken 30 times.
✗ Branch 575 → 2849 not taken.
|
60 |
set_warning_enabled(warnid, false); |
| 1394 |
|
|
} |
| 1395 |
|
|
else |
| 1396 |
|
|
{ |
| 1397 |
|
✗ |
asar_throw_error(0, error_type_null, error_id_invalid_warning_id, "warnings disable", (int)(warning_id_start + 1), (int)(warning_id_end - 1)); |
| 1398 |
|
|
} |
| 1399 |
|
|
} |
| 1400 |
|
|
} |
| 1401 |
12/12
✓ Branch 543 → 544 taken 310 times.
✓ Branch 543 → 547 taken 108798 times.
✓ Branch 545 → 546 taken 34 times.
✓ Branch 545 → 547 taken 276 times.
✓ Branch 548 → 549 taken 34 times.
✓ Branch 548 → 615 taken 109074 times.
✓ Branch 577 → 578 taken 310 times.
✓ Branch 577 → 581 taken 108798 times.
✓ Branch 579 → 580 taken 34 times.
✓ Branch 579 → 581 taken 276 times.
✓ Branch 582 → 583 taken 34 times.
✓ Branch 582 → 647 taken 109074 times.
|
218216 |
else if (is2("check")) |
| 1402 |
|
|
{ |
| 1403 |
5/6
✓ Branch 549 → 550 taken 34 times.
✗ Branch 549 → 2652 not taken.
✓ Branch 550 → 551 taken 3 times.
✓ Branch 550 → 598 taken 31 times.
✓ Branch 583 → 584 taken 3 times.
✓ Branch 583 → 635 taken 31 times.
|
68 |
if (stricmp(word[1], "title") == 0) |
| 1404 |
|
|
{ |
| 1405 |
|
|
// RPG Hacker: Removed trimming for now - I think requiring an exact match is probably |
| 1406 |
|
|
// better here (not sure, though, it's worth discussing) |
| 1407 |
4/8
✓ Branch 551 → 552 taken 3 times.
✗ Branch 551 → 2447 not taken.
✓ Branch 552 → 553 taken 3 times.
✗ Branch 552 → 2447 not taken.
✓ Branch 585 → 586 taken 3 times.
✗ Branch 585 → 2565 not taken.
✓ Branch 586 → 587 taken 3 times.
✗ Branch 586 → 2565 not taken.
|
6 |
string expected_title = safedequote(word[2]); |
| 1408 |
|
|
// randomdude999: this also removes leading spaces because itrim gets stuck in an endless |
| 1409 |
|
|
// loop when multi is true and one argument is empty |
| 1410 |
|
|
//expected_title = itrim(expected_title.data(), " ", " ", true); // remove trailing spaces |
| 1411 |
|
|
// in hirom the rom needs to be an entire bank for it to have a title, other modes only need 0x8000 bytes |
| 1412 |
6/12
✓ Branch 553 → 554 taken 3 times.
✗ Branch 553 → 555 not taken.
✗ Branch 554 → 555 not taken.
✓ Branch 554 → 556 taken 3 times.
✗ Branch 557 → 558 not taken.
✓ Branch 557 → 563 taken 3 times.
✓ Branch 587 → 588 taken 3 times.
✗ Branch 587 → 589 not taken.
✗ Branch 588 → 589 not taken.
✓ Branch 588 → 590 taken 3 times.
✗ Branch 591 → 592 not taken.
✓ Branch 591 → 597 taken 3 times.
|
6 |
if (romlen < ((mapper == hirom || mapper == exhirom) ? 0x10000 : 0x8000)) // too short |
| 1413 |
|
|
{ |
| 1414 |
|
✗ |
if (!ignoretitleerrors) // title errors shouldn't be ignored |
| 1415 |
|
✗ |
asar_throw_error(0, error_type_block, error_id_rom_too_short, expected_title.data()); |
| 1416 |
|
|
else // title errors should be ignored, throw a warning anyways |
| 1417 |
|
✗ |
asar_throw_warning(0, warning_id_rom_too_short, expected_title.data()); |
| 1418 |
|
|
} |
| 1419 |
|
|
else { |
| 1420 |
|
6 |
string actual_title; |
| 1421 |
|
6 |
string actual_display_title; |
| 1422 |
4/4
✓ Branch 582 → 566 taken 63 times.
✓ Branch 582 → 583 taken 3 times.
✓ Branch 618 → 602 taken 63 times.
✓ Branch 618 → 619 taken 3 times.
|
132 |
for (int i = 0;i < 21;i++) |
| 1423 |
|
|
{ |
| 1424 |
|
126 |
unsigned char c = romdata[snestopc(0x00FFC0 + i)]; |
| 1425 |
2/4
✓ Branch 567 → 568 taken 63 times.
✗ Branch 567 → 2440 not taken.
✓ Branch 603 → 604 taken 63 times.
✗ Branch 603 → 2556 not taken.
|
126 |
actual_title += (char)c; |
| 1426 |
|
|
// the replacements are from interface-cli.cpp |
| 1427 |
2/4
✗ Branch 568 → 569 not taken.
✓ Branch 568 → 570 taken 63 times.
✗ Branch 604 → 605 not taken.
✓ Branch 604 → 606 taken 63 times.
|
126 |
if (c == 7) c = 14; |
| 1428 |
2/4
✗ Branch 570 → 571 not taken.
✓ Branch 570 → 572 taken 63 times.
✗ Branch 606 → 607 not taken.
✓ Branch 606 → 608 taken 63 times.
|
126 |
if (c == 8) c = 27; |
| 1429 |
2/4
✗ Branch 572 → 573 not taken.
✓ Branch 572 → 574 taken 63 times.
✗ Branch 608 → 609 not taken.
✓ Branch 608 → 610 taken 63 times.
|
126 |
if (c == 9) c = 26; |
| 1430 |
2/4
✗ Branch 574 → 575 not taken.
✓ Branch 574 → 576 taken 63 times.
✗ Branch 610 → 611 not taken.
✓ Branch 610 → 612 taken 63 times.
|
126 |
if (c == '\r') c = 17; |
| 1431 |
2/4
✗ Branch 576 → 577 not taken.
✓ Branch 576 → 578 taken 63 times.
✗ Branch 612 → 613 not taken.
✓ Branch 612 → 614 taken 63 times.
|
126 |
if (c == '\n') c = 25; |
| 1432 |
2/4
✗ Branch 578 → 579 not taken.
✓ Branch 578 → 580 taken 63 times.
✗ Branch 614 → 615 not taken.
✓ Branch 614 → 616 taken 63 times.
|
126 |
if (c == '\0') c = 155; |
| 1433 |
2/4
✓ Branch 580 → 581 taken 63 times.
✗ Branch 580 → 2440 not taken.
✓ Branch 616 → 617 taken 63 times.
✗ Branch 616 → 2556 not taken.
|
126 |
actual_display_title += (char)c; |
| 1434 |
|
|
} |
| 1435 |
|
|
//actual_display_title = itrim(actual_display_title.data(), " ", " ", true); // remove trailing spaces |
| 1436 |
|
|
//actual_title = itrim(actual_title.data(), " ", " ", true); // remove trailing spaces |
| 1437 |
2/4
✗ Branch 585 → 586 not taken.
✓ Branch 585 → 593 taken 3 times.
✗ Branch 621 → 622 not taken.
✓ Branch 621 → 629 taken 3 times.
|
6 |
if (strncmp(expected_title, actual_title, 21) != 0) |
| 1438 |
|
|
{ |
| 1439 |
|
✗ |
if (!ignoretitleerrors) // title errors shouldn't be ignored |
| 1440 |
|
✗ |
asar_throw_error(0, error_type_block, error_id_rom_title_incorrect, expected_title.data(), actual_display_title.data()); |
| 1441 |
|
|
else // title errors should be ignored, throw a warning anyways |
| 1442 |
|
✗ |
asar_throw_warning(0, warning_id_rom_title_incorrect, expected_title.data(), actual_display_title.data()); |
| 1443 |
|
|
} |
| 1444 |
|
6 |
} |
| 1445 |
|
6 |
} |
| 1446 |
3/6
✓ Branch 598 → 599 taken 31 times.
✗ Branch 598 → 2652 not taken.
✓ Branch 599 → 600 taken 31 times.
✗ Branch 599 → 614 not taken.
✓ Branch 635 → 636 taken 31 times.
✗ Branch 635 → 646 not taken.
|
62 |
else if (stricmp(word[1], "bankcross") == 0) |
| 1447 |
|
|
{ |
| 1448 |
|
|
if (0); |
| 1449 |
5/6
✓ Branch 600 → 601 taken 31 times.
✗ Branch 600 → 2652 not taken.
✓ Branch 601 → 602 taken 15 times.
✓ Branch 601 → 604 taken 16 times.
✓ Branch 636 → 637 taken 15 times.
✓ Branch 636 → 639 taken 16 times.
|
62 |
else if (!stricmp(word[2], "on")) |
| 1450 |
|
|
{ |
| 1451 |
2/4
✓ Branch 602 → 603 taken 15 times.
✗ Branch 602 → 2652 not taken.
✓ Branch 637 → 638 taken 15 times.
✗ Branch 637 → 2849 not taken.
|
30 |
asar_throw_warning(0, warning_id_feature_deprecated, "check bankcross on", "check bankcross full or check bankcross half"); |
| 1452 |
|
30 |
disable_bank_cross_errors = false; |
| 1453 |
|
30 |
check_half_banks_crossed = false; |
| 1454 |
|
|
} |
| 1455 |
5/6
✓ Branch 604 → 605 taken 16 times.
✗ Branch 604 → 2652 not taken.
✓ Branch 605 → 606 taken 15 times.
✓ Branch 605 → 607 taken 1 time.
✓ Branch 639 → 640 taken 15 times.
✓ Branch 639 → 641 taken 1 time.
|
32 |
else if (!stricmp(word[2], "off")) |
| 1456 |
|
|
{ |
| 1457 |
|
30 |
disable_bank_cross_errors = true; |
| 1458 |
|
|
} |
| 1459 |
3/6
✓ Branch 607 → 608 taken 1 time.
✗ Branch 607 → 2652 not taken.
✓ Branch 608 → 609 taken 1 time.
✗ Branch 608 → 610 not taken.
✓ Branch 641 → 642 taken 1 time.
✗ Branch 641 → 643 not taken.
|
2 |
else if (!stricmp(word[2], "half")) |
| 1460 |
|
|
{ |
| 1461 |
|
2 |
disable_bank_cross_errors = false; |
| 1462 |
|
2 |
check_half_banks_crossed = true; |
| 1463 |
|
|
} |
| 1464 |
|
✗ |
else if (!stricmp(word[2], "full")) |
| 1465 |
|
|
{ |
| 1466 |
|
✗ |
disable_bank_cross_errors = false; |
| 1467 |
|
✗ |
check_half_banks_crossed = false; |
| 1468 |
|
|
} |
| 1469 |
|
✗ |
else asar_throw_error(0, error_type_block, error_id_invalid_check); |
| 1470 |
|
|
|
| 1471 |
|
|
} |
| 1472 |
|
|
else |
| 1473 |
|
|
{ |
| 1474 |
|
✗ |
asar_throw_error(0, error_type_block, error_id_invalid_check); |
| 1475 |
|
|
} |
| 1476 |
|
|
} |
| 1477 |
18/20
✓ Branch 615 → 616 taken 277 times.
✓ Branch 615 → 618 taken 108797 times.
✓ Branch 617 → 618 taken 277 times.
✗ Branch 617 → 621 not taken.
✓ Branch 618 → 619 taken 108488 times.
✓ Branch 618 → 622 taken 586 times.
✓ Branch 620 → 621 taken 15 times.
✓ Branch 620 → 622 taken 108473 times.
✓ Branch 623 → 624 taken 15 times.
✓ Branch 623 → 684 taken 109059 times.
✓ Branch 647 → 648 taken 277 times.
✓ Branch 647 → 650 taken 108797 times.
✓ Branch 649 → 650 taken 277 times.
✗ Branch 649 → 653 not taken.
✓ Branch 650 → 651 taken 108488 times.
✓ Branch 650 → 654 taken 586 times.
✓ Branch 652 → 653 taken 15 times.
✓ Branch 652 → 654 taken 108473 times.
✓ Branch 655 → 656 taken 15 times.
✓ Branch 655 → 716 taken 109059 times.
|
218148 |
else if (is0("asar") || is1("asar")) |
| 1478 |
|
|
{ |
| 1479 |
2/8
✗ Branch 624 → 625 not taken.
✓ Branch 624 → 626 taken 15 times.
✗ Branch 625 → 626 not taken.
✗ Branch 625 → 2450 not taken.
✗ Branch 656 → 657 not taken.
✓ Branch 656 → 658 taken 15 times.
✗ Branch 657 → 658 not taken.
✗ Branch 657 → 2569 not taken.
|
30 |
if (!asarverallowed) asar_throw_error(0, error_type_block, error_id_start_of_file); |
| 1480 |
2/4
✗ Branch 626 → 627 not taken.
✓ Branch 626 → 628 taken 15 times.
✗ Branch 658 → 659 not taken.
✓ Branch 658 → 660 taken 15 times.
|
30 |
if (!par) return; |
| 1481 |
2/8
✗ Branch 628 → 629 not taken.
✓ Branch 628 → 630 taken 15 times.
✗ Branch 629 → 630 not taken.
✗ Branch 629 → 2450 not taken.
✗ Branch 660 → 661 not taken.
✓ Branch 660 → 662 taken 15 times.
✗ Branch 661 → 662 not taken.
✗ Branch 661 → 2569 not taken.
|
30 |
if (emulatexkas) asar_throw_error(0, error_type_block, error_id_xkas_asar_conflict); |
| 1482 |
|
30 |
int dots=0; |
| 1483 |
|
30 |
int dig=0; |
| 1484 |
4/4
✓ Branch 640 → 631 taken 60 times.
✓ Branch 640 → 641 taken 15 times.
✓ Branch 672 → 663 taken 60 times.
✓ Branch 672 → 673 taken 15 times.
|
150 |
for (int i=0;par[i];i++) |
| 1485 |
|
|
{ |
| 1486 |
4/4
✓ Branch 631 → 632 taken 15 times.
✓ Branch 631 → 635 taken 45 times.
✓ Branch 663 → 664 taken 15 times.
✓ Branch 663 → 667 taken 45 times.
|
120 |
if (par[i]=='.') |
| 1487 |
|
|
{ |
| 1488 |
2/8
✗ Branch 632 → 633 not taken.
✓ Branch 632 → 634 taken 15 times.
✗ Branch 633 → 634 not taken.
✗ Branch 633 → 2450 not taken.
✗ Branch 664 → 665 not taken.
✓ Branch 664 → 666 taken 15 times.
✗ Branch 665 → 666 not taken.
✗ Branch 665 → 2569 not taken.
|
30 |
if (!dig) asar_throw_error(0, error_type_block, error_id_invalid_version_number); |
| 1489 |
|
30 |
dig=0; |
| 1490 |
|
30 |
dots++; |
| 1491 |
|
|
} |
| 1492 |
2/4
✓ Branch 636 → 637 taken 45 times.
✗ Branch 636 → 638 not taken.
✓ Branch 668 → 669 taken 45 times.
✗ Branch 668 → 670 not taken.
|
90 |
else if (is_digit(par[i])) dig++; |
| 1493 |
|
✗ |
else asar_throw_error(0, error_type_block, error_id_invalid_version_number); |
| 1494 |
|
|
} |
| 1495 |
6/16
✓ Branch 641 → 642 taken 15 times.
✗ Branch 641 → 644 not taken.
✓ Branch 642 → 643 taken 15 times.
✗ Branch 642 → 644 not taken.
✗ Branch 643 → 644 not taken.
✓ Branch 643 → 645 taken 15 times.
✗ Branch 644 → 645 not taken.
✗ Branch 644 → 2450 not taken.
✓ Branch 673 → 674 taken 15 times.
✗ Branch 673 → 676 not taken.
✓ Branch 674 → 675 taken 15 times.
✗ Branch 674 → 676 not taken.
✗ Branch 675 → 676 not taken.
✓ Branch 675 → 677 taken 15 times.
✗ Branch 676 → 677 not taken.
✗ Branch 676 → 2569 not taken.
|
30 |
if (!dig || !dots || dots>2) asar_throw_error(0, error_type_block, error_id_invalid_version_number); |
| 1496 |
2/4
✓ Branch 645 → 646 taken 15 times.
✗ Branch 645 → 2450 not taken.
✓ Branch 678 → 679 taken 15 times.
✗ Branch 678 → 2569 not taken.
|
30 |
autoptr<char**> vers=split(par, "."); |
| 1497 |
|
30 |
int vermaj=atoi(vers[0]); |
| 1498 |
2/8
✗ Branch 649 → 650 not taken.
✓ Branch 649 → 651 taken 15 times.
✗ Branch 650 → 651 not taken.
✗ Branch 650 → 2448 not taken.
✗ Branch 681 → 682 not taken.
✓ Branch 681 → 683 taken 15 times.
✗ Branch 682 → 683 not taken.
✗ Branch 682 → 2567 not taken.
|
30 |
if (vermaj > asarver_maj) asar_throw_error(pass, error_type_fatal, error_id_asar_too_old); |
| 1499 |
2/4
✗ Branch 651 → 652 not taken.
✓ Branch 651 → 653 taken 15 times.
✗ Branch 683 → 684 not taken.
✓ Branch 683 → 685 taken 15 times.
|
30 |
if (vermaj<asarver_maj) return; |
| 1500 |
2/4
✓ Branch 653 → 654 taken 15 times.
✗ Branch 653 → 666 not taken.
✓ Branch 685 → 686 taken 15 times.
✗ Branch 685 → 697 not taken.
|
30 |
if (dots==1) |
| 1501 |
|
|
{ |
| 1502 |
2/8
✗ Branch 655 → 656 not taken.
✓ Branch 655 → 657 taken 15 times.
✗ Branch 656 → 657 not taken.
✗ Branch 656 → 2448 not taken.
✗ Branch 687 → 688 not taken.
✓ Branch 687 → 689 taken 15 times.
✗ Branch 688 → 689 not taken.
✗ Branch 688 → 2567 not taken.
|
30 |
if (strlen(vers[1])!=2) asar_throw_error(0, error_type_block, error_id_invalid_version_number); |
| 1503 |
|
|
//if (asarver_min<10 && asarver_bug<10 && strlen(vers[1])>2) error(0, "This version of Asar is too old for this patch."); |
| 1504 |
|
30 |
int verminbug=atoi(vers[1]); |
| 1505 |
|
30 |
int tmpver=asarver_bug; |
| 1506 |
2/4
✗ Branch 659 → 660 not taken.
✓ Branch 659 → 661 taken 15 times.
✗ Branch 690 → 691 not taken.
✓ Branch 690 → 692 taken 15 times.
|
30 |
if (tmpver>9) tmpver=9; |
| 1507 |
2/8
✗ Branch 661 → 662 not taken.
✓ Branch 661 → 663 taken 15 times.
✗ Branch 662 → 663 not taken.
✗ Branch 662 → 2448 not taken.
✗ Branch 692 → 693 not taken.
✓ Branch 692 → 694 taken 15 times.
✗ Branch 693 → 694 not taken.
✗ Branch 693 → 2567 not taken.
|
30 |
if (asarver_min*10+tmpver<verminbug) asar_throw_error(pass, error_type_fatal, error_id_asar_too_old); |
| 1508 |
6/8
✓ Branch 663 → 664 taken 15 times.
✗ Branch 663 → 678 not taken.
✓ Branch 664 → 665 taken 3 times.
✓ Branch 664 → 678 taken 12 times.
✓ Branch 694 → 695 taken 15 times.
✗ Branch 694 → 707 not taken.
✓ Branch 695 → 696 taken 3 times.
✓ Branch 695 → 707 taken 12 times.
|
30 |
if(vermaj == 1 && verminbug >= 90) { default_math_pri = true; default_math_round_off = true; } |
| 1509 |
|
|
} |
| 1510 |
|
|
else |
| 1511 |
|
|
{ |
| 1512 |
|
✗ |
int vermin=atoi(vers[1]); |
| 1513 |
|
✗ |
if (vermin>asarver_min) asar_throw_error(pass, error_type_fatal, error_id_asar_too_old); |
| 1514 |
|
✗ |
int verbug=atoi(vers[2]); |
| 1515 |
|
✗ |
if (vermin==asarver_min && verbug>asarver_bug) asar_throw_error(pass, error_type_fatal, error_id_asar_too_old); |
| 1516 |
|
✗ |
if(vermaj == 1 && vermin >= 9) { default_math_pri = true; default_math_round_off = true; } |
| 1517 |
|
|
} |
| 1518 |
|
30 |
specifiedasarver = true; |
| 1519 |
2/4
✓ Branch 680 → 681 taken 15 times.
✗ Branch 680 → 683 not taken.
✓ Branch 709 → 710 taken 15 times.
✗ Branch 709 → 711 not taken.
|
30 |
} |
| 1520 |
12/12
✓ Branch 684 → 685 taken 277 times.
✓ Branch 684 → 688 taken 108782 times.
✓ Branch 686 → 687 taken 6 times.
✓ Branch 686 → 688 taken 271 times.
✓ Branch 689 → 690 taken 6 times.
✓ Branch 689 → 702 taken 109053 times.
✓ Branch 716 → 717 taken 277 times.
✓ Branch 716 → 720 taken 108782 times.
✓ Branch 718 → 719 taken 6 times.
✓ Branch 718 → 720 taken 271 times.
✓ Branch 721 → 722 taken 6 times.
✓ Branch 721 → 734 taken 109053 times.
|
218118 |
else if (is0("xkas")) |
| 1521 |
|
|
{ |
| 1522 |
2/4
✓ Branch 690 → 691 taken 6 times.
✗ Branch 690 → 2652 not taken.
✓ Branch 722 → 723 taken 6 times.
✗ Branch 722 → 2849 not taken.
|
12 |
asar_throw_warning(0, warning_id_feature_deprecated, "xkas compatibility mode", "UPGRADE YOUR PATCH ITS 2021!!!"); |
| 1523 |
2/8
✗ Branch 691 → 692 not taken.
✓ Branch 691 → 693 taken 6 times.
✗ Branch 692 → 693 not taken.
✗ Branch 692 → 2652 not taken.
✗ Branch 723 → 724 not taken.
✓ Branch 723 → 725 taken 6 times.
✗ Branch 724 → 725 not taken.
✗ Branch 724 → 2849 not taken.
|
12 |
if (!asarverallowed) asar_throw_error(0, error_type_block, error_id_start_of_file); |
| 1524 |
8/12
✓ Branch 693 → 694 taken 3 times.
✓ Branch 693 → 696 taken 3 times.
✓ Branch 694 → 695 taken 3 times.
✗ Branch 694 → 696 not taken.
✗ Branch 695 → 696 not taken.
✓ Branch 695 → 2652 taken 3 times.
✓ Branch 725 → 726 taken 3 times.
✓ Branch 725 → 728 taken 3 times.
✓ Branch 726 → 727 taken 3 times.
✗ Branch 726 → 728 not taken.
✗ Branch 727 → 728 not taken.
✓ Branch 727 → 2849 taken 3 times.
|
12 |
if (incsrcdepth != 1 && !emulatexkas) asar_throw_error(0, error_type_block, error_id_command_in_non_root_file); |
| 1525 |
2/8
✗ Branch 696 → 697 not taken.
✓ Branch 696 → 698 taken 3 times.
✗ Branch 697 → 698 not taken.
✗ Branch 697 → 2652 not taken.
✗ Branch 728 → 729 not taken.
✓ Branch 728 → 730 taken 3 times.
✗ Branch 729 → 730 not taken.
✗ Branch 729 → 2849 not taken.
|
6 |
if (specifiedasarver) asar_throw_error(0, error_type_block, error_id_xkas_asar_conflict); |
| 1526 |
|
6 |
emulatexkas=true; |
| 1527 |
|
6 |
optimizeforbank=0x100; |
| 1528 |
2/4
✓ Branch 698 → 699 taken 3 times.
✗ Branch 698 → 700 not taken.
✓ Branch 730 → 731 taken 3 times.
✗ Branch 730 → 732 not taken.
|
6 |
if(!force_checksum_fix) |
| 1529 |
|
6 |
checksum_fix_enabled = false; |
| 1530 |
4/8
✓ Branch 700 → 701 taken 3 times.
✗ Branch 700 → 2652 not taken.
✓ Branch 701 → 2365 taken 3 times.
✗ Branch 701 → 2652 not taken.
✓ Branch 732 → 733 taken 3 times.
✗ Branch 732 → 2849 not taken.
✓ Branch 733 → 2456 taken 3 times.
✗ Branch 733 → 2849 not taken.
|
6 |
sublabels[0]=":xkasdefault:"; |
| 1531 |
|
|
} |
| 1532 |
14/20
✓ Branch 702 → 703 taken 271 times.
✓ Branch 702 → 705 taken 108782 times.
✓ Branch 704 → 705 taken 271 times.
✗ Branch 704 → 708 not taken.
✓ Branch 705 → 706 taken 108473 times.
✓ Branch 705 → 709 taken 580 times.
✗ Branch 707 → 708 not taken.
✓ Branch 707 → 709 taken 108473 times.
✗ Branch 710 → 711 not taken.
✓ Branch 710 → 731 taken 109053 times.
✓ Branch 734 → 735 taken 271 times.
✓ Branch 734 → 737 taken 108782 times.
✓ Branch 736 → 737 taken 271 times.
✗ Branch 736 → 740 not taken.
✓ Branch 737 → 738 taken 108473 times.
✓ Branch 737 → 741 taken 580 times.
✗ Branch 739 → 740 not taken.
✓ Branch 739 → 741 taken 108473 times.
✗ Branch 742 → 743 not taken.
✓ Branch 742 → 772 taken 109053 times.
|
218106 |
else if (is0("include") || is1("includefrom")) |
| 1533 |
|
|
{ |
| 1534 |
|
✗ |
if (!asarverallowed) asar_throw_error(0, error_type_block, error_id_start_of_file); |
| 1535 |
|
✗ |
if (istoplevel) |
| 1536 |
|
|
{ |
| 1537 |
|
✗ |
if (par) asar_throw_error(pass, error_type_fatal, error_id_cant_be_main_file, (string(" The main file is '") + STR par + STR "'.").data()); |
| 1538 |
|
✗ |
else asar_throw_error(pass, error_type_fatal, error_id_cant_be_main_file, ""); |
| 1539 |
|
|
} |
| 1540 |
|
|
} |
| 1541 |
12/12
✓ Branch 731 → 732 taken 271 times.
✓ Branch 731 → 735 taken 108782 times.
✓ Branch 733 → 734 taken 15 times.
✓ Branch 733 → 735 taken 256 times.
✓ Branch 736 → 737 taken 15 times.
✓ Branch 736 → 741 taken 109038 times.
✓ Branch 772 → 773 taken 271 times.
✓ Branch 772 → 776 taken 108782 times.
✓ Branch 774 → 775 taken 15 times.
✓ Branch 774 → 776 taken 256 times.
✓ Branch 777 → 778 taken 15 times.
✓ Branch 777 → 782 taken 109038 times.
|
218106 |
else if (is0("includeonce")) |
| 1542 |
|
|
{ |
| 1543 |
4/8
✓ Branch 738 → 739 taken 15 times.
✗ Branch 738 → 2652 not taken.
✓ Branch 739 → 740 taken 15 times.
✗ Branch 739 → 2365 not taken.
✓ Branch 779 → 780 taken 15 times.
✗ Branch 779 → 2849 not taken.
✓ Branch 780 → 781 taken 15 times.
✗ Branch 780 → 2456 not taken.
|
30 |
if (!file_included_once(thisfilename)) |
| 1544 |
|
|
{ |
| 1545 |
2/4
✓ Branch 740 → 2365 taken 15 times.
✗ Branch 740 → 2652 not taken.
✓ Branch 781 → 2456 taken 15 times.
✗ Branch 781 → 2849 not taken.
|
30 |
includeonce.append(thisfilename); |
| 1546 |
|
|
} |
| 1547 |
|
|
} |
| 1548 |
36/36
✓ Branch 741 → 742 taken 108473 times.
✓ Branch 741 → 744 taken 565 times.
✓ Branch 743 → 744 taken 1874 times.
✓ Branch 743 → 753 taken 106599 times.
✓ Branch 744 → 745 taken 1874 times.
✓ Branch 744 → 747 taken 565 times.
✓ Branch 746 → 747 taken 1849 times.
✓ Branch 746 → 753 taken 25 times.
✓ Branch 747 → 748 taken 1849 times.
✓ Branch 747 → 750 taken 565 times.
✓ Branch 749 → 750 taken 1555 times.
✓ Branch 749 → 753 taken 294 times.
✓ Branch 750 → 751 taken 1555 times.
✓ Branch 750 → 754 taken 565 times.
✓ Branch 752 → 753 taken 36 times.
✓ Branch 752 → 754 taken 1519 times.
✓ Branch 755 → 756 taken 106954 times.
✓ Branch 755 → 834 taken 2084 times.
✓ Branch 782 → 783 taken 108473 times.
✓ Branch 782 → 785 taken 565 times.
✓ Branch 784 → 785 taken 1874 times.
✓ Branch 784 → 794 taken 106599 times.
✓ Branch 785 → 786 taken 1874 times.
✓ Branch 785 → 788 taken 565 times.
✓ Branch 787 → 788 taken 1849 times.
✓ Branch 787 → 794 taken 25 times.
✓ Branch 788 → 789 taken 1849 times.
✓ Branch 788 → 791 taken 565 times.
✓ Branch 790 → 791 taken 1555 times.
✓ Branch 790 → 794 taken 294 times.
✓ Branch 791 → 792 taken 1555 times.
✓ Branch 791 → 795 taken 565 times.
✓ Branch 793 → 794 taken 36 times.
✓ Branch 793 → 795 taken 1519 times.
✓ Branch 796 → 797 taken 106954 times.
✓ Branch 796 → 876 taken 2084 times.
|
218076 |
else if (is1("db") || is1("dw") || is1("dl") || is1("dd")) |
| 1549 |
|
|
{ |
| 1550 |
|
213908 |
int len = 0; |
| 1551 |
4/12
✓ Branch 756 → 757 taken 106954 times.
✗ Branch 756 → 2468 not taken.
✗ Branch 757 → 758 not taken.
✓ Branch 757 → 759 taken 106954 times.
✗ Branch 758 → 759 not taken.
✗ Branch 758 → 2468 not taken.
✓ Branch 797 → 798 taken 106954 times.
✗ Branch 797 → 2593 not taken.
✗ Branch 798 → 799 not taken.
✓ Branch 798 → 800 taken 106954 times.
✗ Branch 799 → 800 not taken.
✗ Branch 799 → 2593 not taken.
|
213908 |
if (!confirmqpar(par)) asar_throw_error(0, error_type_block, error_id_mismatched_parentheses); |
| 1552 |
10/12
✓ Branch 759 → 760 taken 106954 times.
✗ Branch 759 → 763 not taken.
✓ Branch 761 → 762 taken 106599 times.
✓ Branch 761 → 763 taken 355 times.
✓ Branch 764 → 765 taken 106599 times.
✓ Branch 764 → 766 taken 355 times.
✓ Branch 800 → 801 taken 106954 times.
✗ Branch 800 → 804 not taken.
✓ Branch 802 → 803 taken 106599 times.
✓ Branch 802 → 804 taken 355 times.
✓ Branch 805 → 806 taken 106599 times.
✓ Branch 805 → 807 taken 355 times.
|
213908 |
if (is1("db")) len=1; |
| 1553 |
10/12
✓ Branch 766 → 767 taken 106954 times.
✗ Branch 766 → 770 not taken.
✓ Branch 768 → 769 taken 25 times.
✓ Branch 768 → 770 taken 106929 times.
✓ Branch 771 → 772 taken 25 times.
✓ Branch 771 → 773 taken 106929 times.
✓ Branch 807 → 808 taken 106954 times.
✗ Branch 807 → 811 not taken.
✓ Branch 809 → 810 taken 25 times.
✓ Branch 809 → 811 taken 106929 times.
✓ Branch 812 → 813 taken 25 times.
✓ Branch 812 → 814 taken 106929 times.
|
213908 |
if (is1("dw")) len=2; |
| 1554 |
10/12
✓ Branch 773 → 774 taken 106954 times.
✗ Branch 773 → 777 not taken.
✓ Branch 775 → 776 taken 294 times.
✓ Branch 775 → 777 taken 106660 times.
✓ Branch 778 → 779 taken 294 times.
✓ Branch 778 → 780 taken 106660 times.
✓ Branch 814 → 815 taken 106954 times.
✗ Branch 814 → 818 not taken.
✓ Branch 816 → 817 taken 294 times.
✓ Branch 816 → 818 taken 106660 times.
✓ Branch 819 → 820 taken 294 times.
✓ Branch 819 → 821 taken 106660 times.
|
213908 |
if (is1("dl")) len=3; |
| 1555 |
10/12
✓ Branch 780 → 781 taken 106954 times.
✗ Branch 780 → 784 not taken.
✓ Branch 782 → 783 taken 36 times.
✓ Branch 782 → 784 taken 106918 times.
✓ Branch 785 → 786 taken 36 times.
✓ Branch 785 → 787 taken 106918 times.
✓ Branch 821 → 822 taken 106954 times.
✗ Branch 821 → 825 not taken.
✓ Branch 823 → 824 taken 36 times.
✓ Branch 823 → 825 taken 106918 times.
✓ Branch 826 → 827 taken 36 times.
✓ Branch 826 → 828 taken 106918 times.
|
213908 |
if (is1("dd")) len=4; |
| 1556 |
2/4
✓ Branch 787 → 788 taken 106954 times.
✗ Branch 787 → 2468 not taken.
✓ Branch 829 → 830 taken 106954 times.
✗ Branch 829 → 2593 not taken.
|
213908 |
autoptr<char**> pars=qpsplit(par, ","); |
| 1557 |
4/4
✓ Branch 830 → 790 taken 107311 times.
✓ Branch 830 → 831 taken 106949 times.
✓ Branch 872 → 832 taken 107311 times.
✓ Branch 872 → 873 taken 106949 times.
|
428520 |
for (int i=0;pars[i];i++) |
| 1558 |
|
|
{ |
| 1559 |
4/4
✓ Branch 791 → 792 taken 84 times.
✓ Branch 791 → 812 taken 107227 times.
✓ Branch 833 → 834 taken 84 times.
✓ Branch 833 → 854 taken 107227 times.
|
214622 |
if (pars[i][0]=='"') |
| 1560 |
|
|
{ |
| 1561 |
8/12
✓ Branch 793 → 794 taken 3 times.
✓ Branch 793 → 796 taken 81 times.
✗ Branch 794 → 795 not taken.
✓ Branch 794 → 796 taken 3 times.
✗ Branch 797 → 798 not taken.
✓ Branch 797 → 799 taken 84 times.
✓ Branch 835 → 836 taken 3 times.
✓ Branch 835 → 838 taken 81 times.
✗ Branch 836 → 837 not taken.
✓ Branch 836 → 838 taken 3 times.
✗ Branch 839 → 840 not taken.
✓ Branch 839 → 841 taken 84 times.
|
168 |
if (!strcmp(pars[i],"\"STAR\"") && !emulatexkas) |
| 1562 |
|
✗ |
asar_throw_warning(0, warning_id_xkas_patch); |
| 1563 |
6/8
✓ Branch 800 → 801 taken 84 times.
✗ Branch 800 → 2466 not taken.
✓ Branch 811 → 802 taken 309 times.
✓ Branch 811 → 828 taken 84 times.
✓ Branch 842 → 843 taken 84 times.
✗ Branch 842 → 2591 not taken.
✓ Branch 853 → 844 taken 309 times.
✓ Branch 853 → 870 taken 84 times.
|
786 |
for (char * str=const_cast<char*>(safedequote(pars[i]));*str;str++) |
| 1564 |
|
|
{ |
| 1565 |
6/8
✓ Branch 802 → 803 taken 273 times.
✓ Branch 802 → 804 taken 36 times.
✓ Branch 803 → 804 taken 273 times.
✗ Branch 803 → 2466 not taken.
✓ Branch 844 → 845 taken 273 times.
✓ Branch 844 → 846 taken 36 times.
✓ Branch 845 → 846 taken 273 times.
✗ Branch 845 → 2591 not taken.
|
618 |
if (len==1) write1(table.table[(size_t)(unsigned char) *str]); |
| 1566 |
6/8
✓ Branch 804 → 805 taken 12 times.
✓ Branch 804 → 806 taken 297 times.
✓ Branch 805 → 806 taken 12 times.
✗ Branch 805 → 2466 not taken.
✓ Branch 846 → 847 taken 12 times.
✓ Branch 846 → 848 taken 297 times.
✓ Branch 847 → 848 taken 12 times.
✗ Branch 847 → 2591 not taken.
|
618 |
if (len==2) write2(table.table[(size_t)(unsigned char) *str]); |
| 1567 |
6/8
✓ Branch 806 → 807 taken 12 times.
✓ Branch 806 → 808 taken 297 times.
✓ Branch 807 → 808 taken 12 times.
✗ Branch 807 → 2466 not taken.
✓ Branch 848 → 849 taken 12 times.
✓ Branch 848 → 850 taken 297 times.
✓ Branch 849 → 850 taken 12 times.
✗ Branch 849 → 2591 not taken.
|
618 |
if (len==3) write3(table.table[(size_t)(unsigned char) *str]); |
| 1568 |
6/8
✓ Branch 808 → 809 taken 12 times.
✓ Branch 808 → 810 taken 297 times.
✓ Branch 809 → 810 taken 12 times.
✗ Branch 809 → 2466 not taken.
✓ Branch 850 → 851 taken 12 times.
✓ Branch 850 → 852 taken 297 times.
✓ Branch 851 → 852 taken 12 times.
✗ Branch 851 → 2591 not taken.
|
618 |
if (len==4) write4(table.table[(size_t)(unsigned char) *str]); |
| 1569 |
|
|
} |
| 1570 |
|
|
} |
| 1571 |
|
|
else |
| 1572 |
|
|
{ |
| 1573 |
|
214454 |
const char * math=pars[i]; |
| 1574 |
2/4
✗ Branch 813 → 814 not taken.
✓ Branch 813 → 816 taken 107227 times.
✗ Branch 855 → 856 not taken.
✓ Branch 855 → 858 taken 107227 times.
|
214454 |
if (math[0]=='#') { |
| 1575 |
|
✗ |
asar_throw_warning(0, warning_id_feature_deprecated, "# before numbers in db/dw/...", "remove the #"); |
| 1576 |
|
✗ |
math++; |
| 1577 |
|
|
} |
| 1578 |
8/8
✓ Branch 816 → 817 taken 35742 times.
✓ Branch 816 → 819 taken 71485 times.
✓ Branch 817 → 818 taken 35737 times.
✓ Branch 817 → 2466 taken 5 times.
✓ Branch 858 → 859 taken 35742 times.
✓ Branch 858 → 861 taken 71485 times.
✓ Branch 859 → 860 taken 35737 times.
✓ Branch 859 → 2591 taken 5 times.
|
214454 |
unsigned int num=(pass==2)?getnum(math):0; |
| 1579 |
6/8
✓ Branch 820 → 821 taken 106876 times.
✓ Branch 820 → 822 taken 346 times.
✓ Branch 821 → 822 taken 106876 times.
✗ Branch 821 → 2466 not taken.
✓ Branch 862 → 863 taken 106876 times.
✓ Branch 862 → 864 taken 346 times.
✓ Branch 863 → 864 taken 106876 times.
✗ Branch 863 → 2591 not taken.
|
214444 |
if (len == 1) write1(num); |
| 1580 |
6/8
✓ Branch 822 → 823 taken 22 times.
✓ Branch 822 → 824 taken 107200 times.
✓ Branch 823 → 824 taken 22 times.
✗ Branch 823 → 2466 not taken.
✓ Branch 864 → 865 taken 22 times.
✓ Branch 864 → 866 taken 107200 times.
✓ Branch 865 → 866 taken 22 times.
✗ Branch 865 → 2591 not taken.
|
214444 |
if (len == 2) write2(num); |
| 1581 |
6/8
✓ Branch 824 → 825 taken 291 times.
✓ Branch 824 → 826 taken 106931 times.
✓ Branch 825 → 826 taken 291 times.
✗ Branch 825 → 2466 not taken.
✓ Branch 866 → 867 taken 291 times.
✓ Branch 866 → 868 taken 106931 times.
✓ Branch 867 → 868 taken 291 times.
✗ Branch 867 → 2591 not taken.
|
214444 |
if (len == 3) write3(num); |
| 1582 |
6/8
✓ Branch 826 → 827 taken 33 times.
✓ Branch 826 → 828 taken 107189 times.
✓ Branch 827 → 828 taken 33 times.
✗ Branch 827 → 2466 not taken.
✓ Branch 868 → 869 taken 33 times.
✓ Branch 868 → 870 taken 107189 times.
✓ Branch 869 → 870 taken 33 times.
✗ Branch 869 → 2591 not taken.
|
214444 |
if (len == 4) write4(num); |
| 1583 |
|
|
} |
| 1584 |
|
|
} |
| 1585 |
2/4
✓ Branch 831 → 832 taken 106949 times.
✗ Branch 831 → 2466 not taken.
✓ Branch 873 → 874 taken 106949 times.
✗ Branch 873 → 2591 not taken.
|
213898 |
add_addr_to_line(addrToLinePos); |
| 1586 |
|
213908 |
} |
| 1587 |
11/12
✓ Branch 834 → 835 taken 276 times.
✓ Branch 834 → 838 taken 1808 times.
✓ Branch 835 → 836 taken 276 times.
✗ Branch 835 → 2652 not taken.
✓ Branch 836 → 837 taken 132 times.
✓ Branch 836 → 838 taken 144 times.
✓ Branch 839 → 840 taken 132 times.
✓ Branch 839 → 881 taken 1952 times.
✓ Branch 876 → 877 taken 276 times.
✓ Branch 876 → 933 taken 1808 times.
✓ Branch 877 → 878 taken 132 times.
✓ Branch 877 → 933 taken 144 times.
|
4168 |
else if (numwords==3 && !stricmp(word[1], "=")) |
| 1588 |
|
|
{ |
| 1589 |
10/16
✓ Branch 840 → 841 taken 75 times.
✓ Branch 840 → 849 taken 57 times.
✓ Branch 841 → 842 taken 75 times.
✗ Branch 841 → 849 not taken.
✓ Branch 842 → 843 taken 75 times.
✗ Branch 842 → 849 not taken.
✓ Branch 843 → 844 taken 75 times.
✗ Branch 843 → 849 not taken.
✓ Branch 878 → 879 taken 75 times.
✓ Branch 878 → 887 taken 57 times.
✓ Branch 879 → 880 taken 75 times.
✗ Branch 879 → 887 not taken.
✓ Branch 880 → 881 taken 75 times.
✗ Branch 880 → 887 not taken.
✓ Branch 881 → 882 taken 75 times.
✗ Branch 881 → 887 not taken.
|
264 |
if (word[0][0]=='\'' && word[0][1] && word[0][2]=='\'' && word[0][3]=='\0') |
| 1590 |
|
|
{ |
| 1591 |
2/4
✓ Branch 844 → 845 taken 75 times.
✗ Branch 844 → 2486 not taken.
✓ Branch 882 → 883 taken 75 times.
✗ Branch 882 → 2617 not taken.
|
150 |
table.table[(unsigned char)word[0][1]]=getnum(word[2]); |
| 1592 |
6/12
✓ Branch 845 → 846 taken 3 times.
✓ Branch 845 → 848 taken 72 times.
✗ Branch 846 → 847 not taken.
✓ Branch 846 → 848 taken 3 times.
✗ Branch 847 → 848 not taken.
✗ Branch 847 → 2486 not taken.
✓ Branch 883 → 884 taken 3 times.
✓ Branch 883 → 886 taken 72 times.
✗ Branch 884 → 885 not taken.
✓ Branch 884 → 886 taken 3 times.
✗ Branch 885 → 886 not taken.
✗ Branch 885 → 2617 not taken.
|
150 |
if (foundlabel && !foundlabel_static) asar_throw_error(0, error_type_block, error_id_no_labels_here); |
| 1593 |
|
150 |
return; |
| 1594 |
|
|
} |
| 1595 |
|
|
// randomdude999: int cast b/c i'm too lazy to also mess with making setlabel() |
| 1596 |
|
|
// unsigned, besides it wouldn't matter anyways. |
| 1597 |
2/4
✓ Branch 849 → 850 taken 57 times.
✗ Branch 849 → 2486 not taken.
✓ Branch 887 → 888 taken 57 times.
✗ Branch 887 → 2617 not taken.
|
114 |
int num=(int)getnum(word[2]); |
| 1598 |
10/12
✓ Branch 850 → 851 taken 6 times.
✓ Branch 850 → 853 taken 51 times.
✓ Branch 851 → 852 taken 3 times.
✓ Branch 851 → 853 taken 3 times.
✗ Branch 852 → 853 not taken.
✓ Branch 852 → 2486 taken 3 times.
✓ Branch 888 → 889 taken 6 times.
✓ Branch 888 → 891 taken 51 times.
✓ Branch 889 → 890 taken 3 times.
✓ Branch 889 → 891 taken 3 times.
✗ Branch 890 → 891 not taken.
✓ Branch 890 → 2617 taken 3 times.
|
114 |
if (foundlabel && !foundlabel_static) asar_throw_error(0, error_type_block, error_id_label_cross_assignment); |
| 1599 |
|
|
|
| 1600 |
|
108 |
const char* newlabelname = word[0]; |
| 1601 |
|
108 |
bool ismacro = false; |
| 1602 |
|
|
|
| 1603 |
4/4
✓ Branch 853 → 854 taken 3 times.
✓ Branch 853 → 855 taken 51 times.
✓ Branch 891 → 892 taken 3 times.
✓ Branch 891 → 893 taken 51 times.
|
108 |
if (newlabelname[0] == '?') |
| 1604 |
|
|
{ |
| 1605 |
|
6 |
ismacro = true; |
| 1606 |
|
6 |
newlabelname++; |
| 1607 |
|
|
} |
| 1608 |
|
|
|
| 1609 |
6/8
✓ Branch 855 → 856 taken 3 times.
✓ Branch 855 → 858 taken 51 times.
✗ Branch 856 → 857 not taken.
✓ Branch 856 → 858 taken 3 times.
✓ Branch 893 → 894 taken 3 times.
✓ Branch 893 → 896 taken 51 times.
✗ Branch 894 → 895 not taken.
✓ Branch 894 → 896 taken 3 times.
|
108 |
if (ismacro && macrorecursion == 0) |
| 1610 |
|
|
{ |
| 1611 |
|
✗ |
asar_throw_error(0, error_type_block, error_id_macro_label_outside_of_macro); |
| 1612 |
|
|
} |
| 1613 |
|
|
|
| 1614 |
2/8
✗ Branch 859 → 860 not taken.
✓ Branch 859 → 861 taken 54 times.
✗ Branch 860 → 861 not taken.
✗ Branch 860 → 2486 not taken.
✗ Branch 897 → 898 not taken.
✓ Branch 897 → 899 taken 54 times.
✗ Branch 898 → 899 not taken.
✗ Branch 898 → 2617 not taken.
|
108 |
if (!confirmname(newlabelname)) asar_throw_error(0, error_type_block, error_id_invalid_label_name); |
| 1615 |
|
|
|
| 1616 |
|
108 |
string completename; |
| 1617 |
|
|
|
| 1618 |
4/4
✓ Branch 862 → 863 taken 3 times.
✓ Branch 862 → 874 taken 51 times.
✓ Branch 901 → 902 taken 3 times.
✓ Branch 901 → 920 taken 51 times.
|
108 |
if (ismacro) |
| 1619 |
|
|
{ |
| 1620 |
10/20
✓ Branch 863 → 864 taken 3 times.
✗ Branch 863 → 2478 not taken.
✓ Branch 865 → 866 taken 3 times.
✗ Branch 865 → 2475 not taken.
✓ Branch 866 → 867 taken 3 times.
✗ Branch 866 → 2473 not taken.
✓ Branch 867 → 868 taken 3 times.
✗ Branch 867 → 2471 not taken.
✓ Branch 868 → 869 taken 3 times.
✗ Branch 868 → 2469 not taken.
✓ Branch 905 → 906 taken 3 times.
✗ Branch 905 → 2605 not taken.
✓ Branch 908 → 909 taken 3 times.
✗ Branch 908 → 2601 not taken.
✓ Branch 909 → 910 taken 3 times.
✗ Branch 909 → 2599 not taken.
✓ Branch 910 → 911 taken 3 times.
✗ Branch 910 → 2597 not taken.
✓ Branch 911 → 912 taken 3 times.
✗ Branch 911 → 2595 not taken.
|
6 |
completename += STR":macro_" + dec(calledmacros) + "_"; |
| 1621 |
|
|
} |
| 1622 |
|
|
|
| 1623 |
2/4
✓ Branch 874 → 875 taken 54 times.
✗ Branch 874 → 2484 not taken.
✓ Branch 920 → 921 taken 54 times.
✗ Branch 920 → 2615 not taken.
|
108 |
completename += newlabelname; |
| 1624 |
|
|
|
| 1625 |
4/8
✓ Branch 876 → 877 taken 54 times.
✗ Branch 876 → 2483 not taken.
✓ Branch 877 → 878 taken 54 times.
✗ Branch 877 → 2481 not taken.
✓ Branch 923 → 924 taken 54 times.
✗ Branch 923 → 2613 not taken.
✓ Branch 924 → 925 taken 54 times.
✗ Branch 924 → 2611 not taken.
|
108 |
setlabel(ns + completename, num, true); |
| 1626 |
|
162 |
} |
| 1627 |
6/8
✓ Branch 881 → 882 taken 1952 times.
✗ Branch 881 → 2652 not taken.
✓ Branch 882 → 883 taken 1873 times.
✓ Branch 882 → 2365 taken 79 times.
✓ Branch 933 → 934 taken 1952 times.
✗ Branch 933 → 2849 not taken.
✓ Branch 934 → 935 taken 1873 times.
✓ Branch 934 → 2456 taken 79 times.
|
3904 |
else if (assemblemapper(word, numwords)) {} |
| 1628 |
12/12
✓ Branch 883 → 884 taken 1510 times.
✓ Branch 883 → 887 taken 363 times.
✓ Branch 885 → 886 taken 373 times.
✓ Branch 885 → 887 taken 1137 times.
✓ Branch 888 → 889 taken 373 times.
✓ Branch 888 → 907 taken 1500 times.
✓ Branch 935 → 936 taken 1510 times.
✓ Branch 935 → 939 taken 363 times.
✓ Branch 937 → 938 taken 373 times.
✓ Branch 937 → 939 taken 1137 times.
✓ Branch 940 → 941 taken 373 times.
✓ Branch 940 → 960 taken 1500 times.
|
3746 |
else if (is1("org")) |
| 1629 |
|
|
{ |
| 1630 |
2/8
✗ Branch 889 → 890 not taken.
✓ Branch 889 → 891 taken 373 times.
✗ Branch 890 → 891 not taken.
✗ Branch 890 → 2652 not taken.
✗ Branch 941 → 942 not taken.
✓ Branch 941 → 943 taken 373 times.
✗ Branch 942 → 943 not taken.
✗ Branch 942 → 2849 not taken.
|
746 |
if(in_spcblock) asar_throw_error(0, error_type_block, error_id_feature_unavaliable_in_spcblock); |
| 1631 |
|
746 |
freespaceend(); |
| 1632 |
2/4
✓ Branch 892 → 893 taken 373 times.
✗ Branch 892 → 2652 not taken.
✓ Branch 944 → 945 taken 373 times.
✗ Branch 944 → 2849 not taken.
|
746 |
unsigned int num=getnum(par); |
| 1633 |
2/8
✗ Branch 893 → 894 not taken.
✓ Branch 893 → 895 taken 373 times.
✗ Branch 894 → 895 not taken.
✗ Branch 894 → 2652 not taken.
✗ Branch 945 → 946 not taken.
✓ Branch 945 → 947 taken 373 times.
✗ Branch 946 → 947 not taken.
✗ Branch 946 → 2849 not taken.
|
746 |
if (forwardlabel) asar_throw_error(0, error_type_block, error_id_org_label_forward); |
| 1634 |
2/12
✗ Branch 895 → 896 not taken.
✓ Branch 895 → 901 taken 373 times.
✗ Branch 896 → 897 not taken.
✗ Branch 896 → 2489 not taken.
✗ Branch 898 → 899 not taken.
✗ Branch 898 → 2487 not taken.
✗ Branch 947 → 948 not taken.
✓ Branch 947 → 954 taken 373 times.
✗ Branch 949 → 950 not taken.
✗ Branch 949 → 2621 not taken.
✗ Branch 951 → 952 not taken.
✗ Branch 951 → 2619 not taken.
|
746 |
if (num&~0xFFFFFF) asar_throw_error(1, error_type_block, error_id_snes_address_out_of_bounds, hex6(num).data()); |
| 1635 |
10/20
✓ Branch 901 → 902 taken 133 times.
✓ Branch 901 → 903 taken 240 times.
✓ Branch 902 → 903 taken 3 times.
✓ Branch 902 → 906 taken 130 times.
✗ Branch 903 → 904 not taken.
✓ Branch 903 → 906 taken 243 times.
✗ Branch 904 → 905 not taken.
✗ Branch 904 → 906 not taken.
✗ Branch 905 → 906 not taken.
✗ Branch 905 → 2652 not taken.
✓ Branch 954 → 955 taken 133 times.
✓ Branch 954 → 956 taken 240 times.
✓ Branch 955 → 956 taken 3 times.
✓ Branch 955 → 959 taken 130 times.
✗ Branch 956 → 957 not taken.
✓ Branch 956 → 959 taken 243 times.
✗ Branch 957 → 958 not taken.
✗ Branch 957 → 959 not taken.
✗ Branch 958 → 959 not taken.
✗ Branch 958 → 2849 not taken.
|
746 |
if ((mapper==lorom || mapper==exlorom) && (num&0x408000)==0x400000 && (num&0x700000)!=0x700000) asar_throw_warning(0, warning_id_set_middle_byte); |
| 1636 |
|
|
//if (fastrom) num|=0x800000; |
| 1637 |
|
746 |
snespos=(int)num; |
| 1638 |
|
746 |
realsnespos=(int)num; |
| 1639 |
|
746 |
startpos=(int)num; |
| 1640 |
|
746 |
realstartpos=(int)num; |
| 1641 |
|
|
} |
| 1642 |
|
|
#define ret_error(errid) { asar_throw_error(0, error_type_block, errid); return; } |
| 1643 |
|
|
#define ret_error_params(errid, ...) { asar_throw_error(0, error_type_block, errid, __VA_ARGS__); return; } |
| 1644 |
4/4
✓ Branch 908 → 909 taken 42 times.
✓ Branch 908 → 991 taken 1458 times.
✓ Branch 961 → 962 taken 42 times.
✓ Branch 961 → 1057 taken 1458 times.
|
3000 |
else if (is("struct")) |
| 1645 |
|
|
{ |
| 1646 |
|
|
//verifysnespos(); |
| 1647 |
4/12
✓ Branch 909 → 910 taken 42 times.
✗ Branch 909 → 911 not taken.
✗ Branch 910 → 911 not taken.
✓ Branch 910 → 913 taken 42 times.
✗ Branch 911 → 912 not taken.
✗ Branch 911 → 2652 not taken.
✓ Branch 962 → 963 taken 42 times.
✗ Branch 962 → 964 not taken.
✗ Branch 963 → 964 not taken.
✓ Branch 963 → 966 taken 42 times.
✗ Branch 964 → 965 not taken.
✗ Branch 964 → 2849 not taken.
|
84 |
if (in_struct || in_sub_struct) ret_error(error_id_nested_struct); |
| 1648 |
2/8
✗ Branch 913 → 914 not taken.
✓ Branch 913 → 916 taken 42 times.
✗ Branch 914 → 915 not taken.
✗ Branch 914 → 2652 not taken.
✗ Branch 966 → 967 not taken.
✓ Branch 966 → 969 taken 42 times.
✗ Branch 967 → 968 not taken.
✗ Branch 967 → 2849 not taken.
|
84 |
if (numwords < 2) ret_error(error_id_missing_struct_params); |
| 1649 |
2/8
✗ Branch 916 → 917 not taken.
✓ Branch 916 → 919 taken 42 times.
✗ Branch 917 → 918 not taken.
✗ Branch 917 → 2652 not taken.
✗ Branch 969 → 970 not taken.
✓ Branch 969 → 972 taken 42 times.
✗ Branch 970 → 971 not taken.
✗ Branch 970 → 2849 not taken.
|
84 |
if (numwords > 4) ret_error(error_id_too_many_struct_params); |
| 1650 |
2/8
✗ Branch 920 → 921 not taken.
✓ Branch 920 → 923 taken 42 times.
✗ Branch 921 → 922 not taken.
✗ Branch 921 → 2652 not taken.
✗ Branch 973 → 974 not taken.
✓ Branch 973 → 976 taken 42 times.
✗ Branch 974 → 975 not taken.
✗ Branch 974 → 2849 not taken.
|
84 |
if (!confirmname(word[1])) ret_error(error_id_invalid_struct_name); |
| 1651 |
|
|
|
| 1652 |
10/20
✓ Branch 923 → 924 taken 42 times.
✗ Branch 923 → 2652 not taken.
✓ Branch 924 → 925 taken 18 times.
✓ Branch 924 → 927 taken 24 times.
✗ Branch 925 → 926 not taken.
✓ Branch 925 → 927 taken 18 times.
✗ Branch 928 → 929 not taken.
✓ Branch 928 → 931 taken 42 times.
✗ Branch 929 → 930 not taken.
✗ Branch 929 → 2652 not taken.
✓ Branch 976 → 977 taken 42 times.
✗ Branch 976 → 2849 not taken.
✓ Branch 977 → 978 taken 18 times.
✓ Branch 977 → 980 taken 24 times.
✗ Branch 978 → 979 not taken.
✓ Branch 978 → 980 taken 18 times.
✗ Branch 981 → 982 not taken.
✓ Branch 981 → 984 taken 42 times.
✗ Branch 982 → 983 not taken.
✗ Branch 982 → 2849 not taken.
|
84 |
if (structs.exists(word[1]) && pass == 0) ret_error_params(error_id_struct_redefined, word[1]); |
| 1653 |
|
|
|
| 1654 |
|
84 |
static_struct = false; |
| 1655 |
|
84 |
old_snespos = snespos; |
| 1656 |
|
84 |
old_startpos = startpos; |
| 1657 |
|
84 |
old_optimizeforbank = optimizeforbank; |
| 1658 |
|
84 |
unsigned int base = 0; |
| 1659 |
4/4
✓ Branch 931 → 932 taken 15 times.
✓ Branch 931 → 936 taken 27 times.
✓ Branch 984 → 985 taken 15 times.
✓ Branch 984 → 989 taken 27 times.
|
84 |
if (numwords == 3) |
| 1660 |
|
|
{ |
| 1661 |
|
30 |
static_struct = true; |
| 1662 |
2/4
✓ Branch 932 → 933 taken 15 times.
✗ Branch 932 → 2652 not taken.
✓ Branch 985 → 986 taken 15 times.
✗ Branch 985 → 2849 not taken.
|
30 |
base = getnum(word[2]); |
| 1663 |
|
|
|
| 1664 |
2/8
✗ Branch 933 → 934 not taken.
✓ Branch 933 → 936 taken 15 times.
✗ Branch 934 → 935 not taken.
✗ Branch 934 → 936 not taken.
✗ Branch 986 → 987 not taken.
✓ Branch 986 → 989 taken 15 times.
✗ Branch 987 → 988 not taken.
✗ Branch 987 → 989 not taken.
|
30 |
if (foundlabel && !foundlabel_static) static_struct = false; |
| 1665 |
|
|
} |
| 1666 |
|
|
|
| 1667 |
|
84 |
bool old_in_struct = in_struct; |
| 1668 |
|
84 |
bool old_in_sub_struct = in_sub_struct; |
| 1669 |
8/8
✓ Branch 936 → 937 taken 30 times.
✓ Branch 936 → 938 taken 12 times.
✓ Branch 937 → 938 taken 15 times.
✓ Branch 937 → 939 taken 15 times.
✓ Branch 989 → 990 taken 30 times.
✓ Branch 989 → 991 taken 12 times.
✓ Branch 990 → 991 taken 15 times.
✓ Branch 990 → 992 taken 15 times.
|
84 |
in_struct = numwords == 2 || numwords == 3; |
| 1670 |
|
84 |
in_sub_struct = numwords == 4; |
| 1671 |
|
|
|
| 1672 |
|
|
#define ret_error_cleanup(errid) { in_struct = old_in_struct; in_sub_struct = old_in_sub_struct; asar_throw_error(0, error_type_block, errid); return; } |
| 1673 |
|
|
#define ret_error_params_cleanup(errid, ...) { in_struct = old_in_struct; in_sub_struct = old_in_sub_struct; asar_throw_error(0, error_type_block, errid, __VA_ARGS__); return; } |
| 1674 |
|
|
|
| 1675 |
4/4
✓ Branch 940 → 941 taken 15 times.
✓ Branch 940 → 948 taken 27 times.
✓ Branch 993 → 994 taken 15 times.
✓ Branch 993 → 1003 taken 27 times.
|
84 |
if (numwords == 3) |
| 1676 |
|
|
{ |
| 1677 |
2/12
✗ Branch 941 → 942 not taken.
✓ Branch 941 → 947 taken 15 times.
✗ Branch 942 → 943 not taken.
✗ Branch 942 → 2492 not taken.
✗ Branch 944 → 945 not taken.
✗ Branch 944 → 2490 not taken.
✗ Branch 994 → 995 not taken.
✓ Branch 994 → 1002 taken 15 times.
✗ Branch 996 → 997 not taken.
✗ Branch 996 → 2625 not taken.
✗ Branch 998 → 999 not taken.
✗ Branch 998 → 2623 not taken.
|
30 |
if (base&~0xFFFFFF) ret_error_params_cleanup(error_id_snes_address_out_of_bounds, hex6((unsigned int)base).data()); |
| 1678 |
|
30 |
snespos = (int)base; |
| 1679 |
|
30 |
startpos = (int)base; |
| 1680 |
|
|
} |
| 1681 |
4/4
✓ Branch 948 → 949 taken 15 times.
✓ Branch 948 → 975 taken 12 times.
✓ Branch 1003 → 1004 taken 15 times.
✓ Branch 1003 → 1035 taken 12 times.
|
54 |
else if (numwords == 4) |
| 1682 |
|
|
{ |
| 1683 |
3/10
✓ Branch 949 → 950 taken 15 times.
✗ Branch 949 → 2497 not taken.
✗ Branch 950 → 951 not taken.
✓ Branch 950 → 953 taken 15 times.
✗ Branch 951 → 952 not taken.
✗ Branch 951 → 2497 not taken.
✗ Branch 1004 → 1005 not taken.
✓ Branch 1004 → 1007 taken 15 times.
✗ Branch 1005 → 1006 not taken.
✗ Branch 1005 → 2631 not taken.
|
30 |
if (strcasecmp(word[2], "extends")) ret_error_cleanup(error_id_missing_extends); |
| 1684 |
2/8
✗ Branch 954 → 955 not taken.
✓ Branch 954 → 957 taken 15 times.
✗ Branch 955 → 956 not taken.
✗ Branch 955 → 2497 not taken.
✗ Branch 1008 → 1009 not taken.
✓ Branch 1008 → 1011 taken 15 times.
✗ Branch 1009 → 1010 not taken.
✗ Branch 1009 → 2631 not taken.
|
30 |
if (!confirmname(word[3])) ret_error_cleanup(error_id_struct_invalid_parent_name); |
| 1685 |
2/4
✓ Branch 957 → 958 taken 15 times.
✗ Branch 957 → 2497 not taken.
✓ Branch 1012 → 1013 taken 15 times.
✗ Branch 1012 → 2631 not taken.
|
30 |
string tmp_struct_parent = word[3]; |
| 1686 |
|
|
|
| 1687 |
4/12
✓ Branch 959 → 960 taken 15 times.
✗ Branch 959 → 2495 not taken.
✗ Branch 960 → 961 not taken.
✓ Branch 960 → 964 taken 15 times.
✗ Branch 962 → 963 not taken.
✗ Branch 962 → 2495 not taken.
✓ Branch 1014 → 1015 taken 15 times.
✗ Branch 1014 → 2629 not taken.
✗ Branch 1015 → 1016 not taken.
✓ Branch 1015 → 1019 taken 15 times.
✗ Branch 1017 → 1018 not taken.
✗ Branch 1017 → 2629 not taken.
|
30 |
if (!structs.exists(tmp_struct_parent)) ret_error_params_cleanup(error_id_struct_not_found, tmp_struct_parent.data()); |
| 1688 |
4/8
✓ Branch 965 → 966 taken 15 times.
✗ Branch 965 → 2495 not taken.
✓ Branch 966 → 967 taken 15 times.
✗ Branch 966 → 2495 not taken.
✓ Branch 1021 → 1022 taken 15 times.
✗ Branch 1021 → 2629 not taken.
✓ Branch 1022 → 1023 taken 15 times.
✗ Branch 1022 → 2629 not taken.
|
30 |
snes_struct structure = structs.find(tmp_struct_parent); |
| 1689 |
|
|
|
| 1690 |
|
30 |
static_struct = structure.is_static; |
| 1691 |
2/4
✓ Branch 967 → 968 taken 15 times.
✗ Branch 967 → 2493 not taken.
✓ Branch 1023 → 1024 taken 15 times.
✗ Branch 1023 → 2627 not taken.
|
30 |
struct_parent = tmp_struct_parent; |
| 1692 |
|
30 |
snespos = structure.base_end; |
| 1693 |
|
30 |
startpos = structure.base_end; |
| 1694 |
2/4
✓ Branch 971 → 972 taken 15 times.
✗ Branch 971 → 974 not taken.
✓ Branch 1027 → 1028 taken 15 times.
✗ Branch 1027 → 1029 not taken.
|
30 |
} |
| 1695 |
|
|
|
| 1696 |
2/4
✓ Branch 975 → 976 taken 42 times.
✗ Branch 975 → 2652 not taken.
✓ Branch 1035 → 1036 taken 42 times.
✗ Branch 1035 → 2849 not taken.
|
84 |
push_pc(); |
| 1697 |
|
|
|
| 1698 |
|
84 |
optimizeforbank = -1; |
| 1699 |
|
|
|
| 1700 |
2/4
✓ Branch 976 → 977 taken 42 times.
✗ Branch 976 → 2652 not taken.
✓ Branch 1036 → 1037 taken 42 times.
✗ Branch 1036 → 2849 not taken.
|
84 |
struct_name = word[1]; |
| 1701 |
|
84 |
struct_base = snespos; |
| 1702 |
|
84 |
realsnespos = 0; |
| 1703 |
|
84 |
realstartpos = 0; |
| 1704 |
|
|
|
| 1705 |
4/4
✓ Branch 977 → 978 taken 15 times.
✓ Branch 977 → 987 taken 27 times.
✓ Branch 1037 → 1038 taken 15 times.
✓ Branch 1037 → 1052 taken 27 times.
|
84 |
if(in_sub_struct) { |
| 1706 |
4/8
✓ Branch 979 → 980 taken 15 times.
✗ Branch 979 → 2500 not taken.
✓ Branch 980 → 981 taken 15 times.
✗ Branch 980 → 2498 not taken.
✓ Branch 1041 → 1042 taken 15 times.
✗ Branch 1041 → 2636 not taken.
✓ Branch 1042 → 1043 taken 15 times.
✗ Branch 1042 → 2634 not taken.
|
30 |
string labelname = struct_parent + "." + struct_name; |
| 1707 |
4/8
✓ Branch 982 → 983 taken 15 times.
✗ Branch 982 → 2503 not taken.
✓ Branch 983 → 984 taken 15 times.
✗ Branch 983 → 2501 not taken.
✓ Branch 1046 → 1047 taken 15 times.
✗ Branch 1046 → 2640 not taken.
✓ Branch 1047 → 1048 taken 15 times.
✗ Branch 1047 → 2638 not taken.
|
30 |
setlabel(labelname, snespos, static_struct); |
| 1708 |
|
30 |
} else { |
| 1709 |
4/8
✓ Branch 987 → 988 taken 27 times.
✗ Branch 987 → 2509 not taken.
✓ Branch 988 → 989 taken 27 times.
✗ Branch 988 → 2507 not taken.
✓ Branch 1053 → 1054 taken 27 times.
✗ Branch 1053 → 2648 not taken.
✓ Branch 1054 → 1055 taken 27 times.
✗ Branch 1054 → 2646 not taken.
|
54 |
setlabel(struct_name, snespos, static_struct); |
| 1710 |
|
|
} |
| 1711 |
|
|
|
| 1712 |
|
|
#undef ret_error_cleanup |
| 1713 |
|
|
#undef ret_error_params_cleanup |
| 1714 |
|
|
} |
| 1715 |
4/4
✓ Branch 992 → 993 taken 42 times.
✓ Branch 992 → 1045 taken 1416 times.
✓ Branch 1058 → 1059 taken 42 times.
✓ Branch 1058 → 1115 taken 1416 times.
|
2916 |
else if (is("endstruct")) |
| 1716 |
|
|
{ |
| 1717 |
6/12
✓ Branch 993 → 994 taken 3 times.
✓ Branch 993 → 997 taken 39 times.
✗ Branch 994 → 995 not taken.
✓ Branch 994 → 997 taken 3 times.
✗ Branch 995 → 996 not taken.
✗ Branch 995 → 2521 not taken.
✓ Branch 1059 → 1060 taken 3 times.
✓ Branch 1059 → 1063 taken 39 times.
✗ Branch 1060 → 1061 not taken.
✓ Branch 1060 → 1063 taken 3 times.
✗ Branch 1061 → 1062 not taken.
✗ Branch 1061 → 2664 not taken.
|
84 |
if (numwords != 1 && numwords != 3) ret_error(error_id_invalid_endstruct_count); |
| 1718 |
8/16
✓ Branch 997 → 998 taken 3 times.
✓ Branch 997 → 1001 taken 39 times.
✓ Branch 998 → 999 taken 3 times.
✗ Branch 998 → 2521 not taken.
✗ Branch 999 → 1000 not taken.
✓ Branch 999 → 1001 taken 3 times.
✗ Branch 1002 → 1003 not taken.
✓ Branch 1002 → 1005 taken 42 times.
✗ Branch 1003 → 1004 not taken.
✗ Branch 1003 → 2521 not taken.
✓ Branch 1063 → 1064 taken 3 times.
✓ Branch 1063 → 1067 taken 39 times.
✗ Branch 1064 → 1065 not taken.
✓ Branch 1064 → 1067 taken 3 times.
✗ Branch 1065 → 1066 not taken.
✗ Branch 1065 → 2664 not taken.
|
84 |
if (numwords == 3 && strcasecmp(word[1], "align")) ret_error(error_id_expected_align); |
| 1719 |
6/12
✓ Branch 1005 → 1006 taken 15 times.
✓ Branch 1005 → 1009 taken 27 times.
✗ Branch 1006 → 1007 not taken.
✓ Branch 1006 → 1009 taken 15 times.
✗ Branch 1007 → 1008 not taken.
✗ Branch 1007 → 2521 not taken.
✓ Branch 1067 → 1068 taken 15 times.
✓ Branch 1067 → 1071 taken 27 times.
✗ Branch 1068 → 1069 not taken.
✓ Branch 1068 → 1071 taken 15 times.
✗ Branch 1069 → 1070 not taken.
✗ Branch 1069 → 2664 not taken.
|
84 |
if (!in_struct && !in_sub_struct) ret_error(error_id_endstruct_without_struct); |
| 1720 |
|
|
|
| 1721 |
6/8
✓ Branch 1009 → 1010 taken 3 times.
✓ Branch 1009 → 1012 taken 39 times.
✓ Branch 1010 → 1011 taken 3 times.
✗ Branch 1010 → 2521 not taken.
✓ Branch 1071 → 1072 taken 3 times.
✓ Branch 1071 → 1074 taken 39 times.
✓ Branch 1072 → 1073 taken 3 times.
✗ Branch 1072 → 2664 not taken.
|
84 |
int alignment = numwords == 3 ? (int)getnum(word[2]) : 1; |
| 1722 |
2/8
✗ Branch 1013 → 1014 not taken.
✓ Branch 1013 → 1016 taken 42 times.
✗ Branch 1014 → 1015 not taken.
✗ Branch 1014 → 2521 not taken.
✗ Branch 1075 → 1076 not taken.
✓ Branch 1075 → 1078 taken 42 times.
✗ Branch 1076 → 1077 not taken.
✗ Branch 1076 → 2664 not taken.
|
84 |
if (alignment < 1) ret_error(error_id_alignment_too_small); |
| 1723 |
|
|
|
| 1724 |
|
84 |
snes_struct structure; |
| 1725 |
|
84 |
structure.base_end = snespos; |
| 1726 |
|
84 |
structure.struct_size = alignment * ((snespos - struct_base + alignment - 1) / alignment); |
| 1727 |
|
84 |
structure.object_size = structure.struct_size; |
| 1728 |
|
84 |
structure.is_static = static_struct; |
| 1729 |
|
|
|
| 1730 |
4/4
✓ Branch 1017 → 1018 taken 27 times.
✓ Branch 1017 → 1021 taken 15 times.
✓ Branch 1080 → 1081 taken 27 times.
✓ Branch 1080 → 1084 taken 15 times.
|
84 |
if (in_struct) |
| 1731 |
|
|
{ |
| 1732 |
4/8
✓ Branch 1019 → 1020 taken 27 times.
✗ Branch 1019 → 2519 not taken.
✓ Branch 1020 → 1041 taken 27 times.
✗ Branch 1020 → 2519 not taken.
✓ Branch 1082 → 1083 taken 27 times.
✗ Branch 1082 → 2662 not taken.
✓ Branch 1083 → 1109 taken 27 times.
✗ Branch 1083 → 2662 not taken.
|
54 |
structs.create(struct_name) = structure; |
| 1733 |
|
|
} |
| 1734 |
2/4
✓ Branch 1021 → 1022 taken 15 times.
✗ Branch 1021 → 1041 not taken.
✓ Branch 1084 → 1085 taken 15 times.
✗ Branch 1084 → 1109 not taken.
|
30 |
else if (in_sub_struct) |
| 1735 |
|
|
{ |
| 1736 |
|
30 |
snes_struct parent; |
| 1737 |
4/8
✓ Branch 1024 → 1025 taken 15 times.
✗ Branch 1024 → 2516 not taken.
✓ Branch 1025 → 1026 taken 15 times.
✗ Branch 1025 → 2516 not taken.
✓ Branch 1088 → 1089 taken 15 times.
✗ Branch 1088 → 2658 not taken.
✓ Branch 1089 → 1090 taken 15 times.
✗ Branch 1089 → 2658 not taken.
|
30 |
parent = structs.find(struct_parent); |
| 1738 |
|
|
|
| 1739 |
4/4
✓ Branch 1026 → 1027 taken 12 times.
✓ Branch 1026 → 1028 taken 3 times.
✓ Branch 1090 → 1091 taken 12 times.
✓ Branch 1090 → 1092 taken 3 times.
|
30 |
if (parent.object_size < parent.struct_size + structure.struct_size) { |
| 1740 |
|
24 |
parent.object_size = parent.struct_size + structure.struct_size; |
| 1741 |
|
|
} |
| 1742 |
|
|
|
| 1743 |
8/16
✓ Branch 1029 → 1030 taken 15 times.
✗ Branch 1029 → 2514 not taken.
✓ Branch 1030 → 1031 taken 15 times.
✗ Branch 1030 → 2512 not taken.
✓ Branch 1032 → 1033 taken 15 times.
✗ Branch 1032 → 2510 not taken.
✓ Branch 1033 → 1034 taken 15 times.
✗ Branch 1033 → 2510 not taken.
✓ Branch 1095 → 1096 taken 15 times.
✗ Branch 1095 → 2654 not taken.
✓ Branch 1096 → 1097 taken 15 times.
✗ Branch 1096 → 2652 not taken.
✓ Branch 1098 → 1099 taken 15 times.
✗ Branch 1098 → 2650 not taken.
✓ Branch 1099 → 1100 taken 15 times.
✗ Branch 1099 → 2650 not taken.
|
30 |
structs.create(struct_parent + "." + struct_name) = structure; |
| 1744 |
4/8
✓ Branch 1037 → 1038 taken 15 times.
✗ Branch 1037 → 2516 not taken.
✓ Branch 1038 → 1039 taken 15 times.
✗ Branch 1038 → 2516 not taken.
✓ Branch 1105 → 1106 taken 15 times.
✗ Branch 1105 → 2658 not taken.
✓ Branch 1106 → 1107 taken 15 times.
✗ Branch 1106 → 2658 not taken.
|
30 |
structs.create(struct_parent) = parent; |
| 1745 |
|
30 |
} |
| 1746 |
|
|
|
| 1747 |
2/4
✓ Branch 1041 → 1042 taken 42 times.
✗ Branch 1041 → 2519 not taken.
✓ Branch 1109 → 1110 taken 42 times.
✗ Branch 1109 → 2662 not taken.
|
84 |
pop_pc(); |
| 1748 |
|
84 |
in_struct = false; |
| 1749 |
|
84 |
in_sub_struct = false; |
| 1750 |
|
84 |
snespos = old_snespos; |
| 1751 |
|
84 |
startpos = old_startpos; |
| 1752 |
|
84 |
optimizeforbank = old_optimizeforbank; |
| 1753 |
|
84 |
static_struct = false; |
| 1754 |
|
84 |
} |
| 1755 |
|
|
#undef ret_error |
| 1756 |
4/4
✓ Branch 1046 → 1047 taken 6 times.
✓ Branch 1046 → 1101 taken 1410 times.
✓ Branch 1116 → 1117 taken 6 times.
✓ Branch 1116 → 1173 taken 1410 times.
|
2832 |
else if(is("spcblock")) |
| 1757 |
|
|
{ |
| 1758 |
|
|
//banned features when active: org, freespace(and variants), arch, mapper,namespace,pushns |
| 1759 |
4/12
✓ Branch 1047 → 1048 taken 6 times.
✗ Branch 1047 → 1049 not taken.
✗ Branch 1048 → 1049 not taken.
✓ Branch 1048 → 1050 taken 6 times.
✗ Branch 1049 → 1050 not taken.
✗ Branch 1049 → 2652 not taken.
✓ Branch 1117 → 1118 taken 6 times.
✗ Branch 1117 → 1119 not taken.
✗ Branch 1118 → 1119 not taken.
✓ Branch 1118 → 1120 taken 6 times.
✗ Branch 1119 → 1120 not taken.
✗ Branch 1119 → 2849 not taken.
|
12 |
if(in_struct || in_sub_struct) asar_throw_error(0, error_type_block, error_id_spcblock_inside_struct); |
| 1760 |
2/8
✗ Branch 1050 → 1051 not taken.
✓ Branch 1050 → 1052 taken 6 times.
✗ Branch 1051 → 1052 not taken.
✗ Branch 1051 → 2652 not taken.
✗ Branch 1120 → 1121 not taken.
✓ Branch 1120 → 1122 taken 6 times.
✗ Branch 1121 → 1122 not taken.
✗ Branch 1121 → 2849 not taken.
|
12 |
if(numwords < 2) asar_throw_error(0, error_type_block, error_id_spcblock_too_few_args); |
| 1761 |
2/8
✗ Branch 1052 → 1053 not taken.
✓ Branch 1052 → 1054 taken 6 times.
✗ Branch 1053 → 1054 not taken.
✗ Branch 1053 → 2652 not taken.
✗ Branch 1122 → 1123 not taken.
✓ Branch 1122 → 1124 taken 6 times.
✗ Branch 1123 → 1124 not taken.
✗ Branch 1123 → 2849 not taken.
|
12 |
if(numwords > 4) asar_throw_error(0, error_type_block, error_id_spcblock_too_many_args); |
| 1762 |
|
|
|
| 1763 |
2/4
✓ Branch 1054 → 1055 taken 6 times.
✗ Branch 1054 → 2652 not taken.
✓ Branch 1124 → 1125 taken 6 times.
✗ Branch 1124 → 2849 not taken.
|
12 |
spcblock.destination = getnum(par); |
| 1764 |
|
12 |
spcblock.type = spcblock_nspc; |
| 1765 |
2/4
✓ Branch 1055 → 1056 taken 6 times.
✗ Branch 1055 → 2652 not taken.
✓ Branch 1125 → 1126 taken 6 times.
✗ Branch 1125 → 2849 not taken.
|
12 |
spcblock.macro_name = ""; |
| 1766 |
|
|
|
| 1767 |
2/12
✗ Branch 1056 → 1057 not taken.
✓ Branch 1056 → 1062 taken 6 times.
✗ Branch 1057 → 1058 not taken.
✗ Branch 1057 → 2524 not taken.
✗ Branch 1059 → 1060 not taken.
✗ Branch 1059 → 2522 not taken.
✗ Branch 1126 → 1127 not taken.
✓ Branch 1126 → 1133 taken 6 times.
✗ Branch 1128 → 1129 not taken.
✗ Branch 1128 → 2668 not taken.
✗ Branch 1130 → 1131 not taken.
✗ Branch 1130 → 2666 not taken.
|
12 |
if (spcblock.destination&~0xFFFF) asar_throw_error(0, error_type_block, error_id_snes_address_out_of_bounds, hex6(spcblock.destination).data()); |
| 1768 |
|
|
|
| 1769 |
2/4
✗ Branch 1062 → 1063 not taken.
✓ Branch 1062 → 1070 taken 6 times.
✗ Branch 1133 → 1134 not taken.
✓ Branch 1133 → 1139 taken 6 times.
|
12 |
if(numwords == 3) |
| 1770 |
|
|
{ |
| 1771 |
|
✗ |
if(!stricmp(word[2], "nspc")) spcblock.type = spcblock_nspc; |
| 1772 |
|
✗ |
else if(!stricmp(word[2], "custom")) asar_throw_error(0, error_type_block, error_id_custom_spcblock_missing_macro); |
| 1773 |
|
✗ |
else asar_throw_error(0, error_type_block, error_id_unknown_spcblock_type); |
| 1774 |
|
|
} |
| 1775 |
2/4
✗ Branch 1070 → 1071 not taken.
✓ Branch 1070 → 1084 taken 6 times.
✗ Branch 1139 → 1140 not taken.
✓ Branch 1139 → 1152 taken 6 times.
|
12 |
else if(numwords == 4) |
| 1776 |
|
|
{ |
| 1777 |
|
✗ |
if(!stricmp(word[2], "custom")) spcblock.type = spcblock_custom; |
| 1778 |
|
✗ |
else asar_throw_error(0, error_type_block, error_id_extra_spcblock_arg_for_type); |
| 1779 |
|
|
|
| 1780 |
|
✗ |
if(macros.exists(word[3])) |
| 1781 |
|
|
{ |
| 1782 |
|
✗ |
macrodata *macro = macros.find(word[3]); |
| 1783 |
|
✗ |
if(!macro->variadic) asar_throw_error(0, error_type_block, error_id_spcblock_macro_must_be_varadic); |
| 1784 |
|
✗ |
if(macro->numargs != 3) asar_throw_error(0, error_type_block, error_id_spcblock_macro_invalid_static_args); |
| 1785 |
|
✗ |
spcblock.macro_name = word[3]; |
| 1786 |
|
|
} |
| 1787 |
|
✗ |
else asar_throw_error(0, error_type_block, error_id_spcblock_macro_doesnt_exist); |
| 1788 |
|
|
} |
| 1789 |
|
|
|
| 1790 |
2/6
✓ Branch 1084 → 1085 taken 6 times.
✗ Branch 1084 → 1089 not taken.
✗ Branch 1084 → 1092 not taken.
✓ Branch 1152 → 1153 taken 6 times.
✗ Branch 1152 → 1157 not taken.
✗ Branch 1152 → 1160 not taken.
|
12 |
switch(spcblock.type) |
| 1791 |
|
|
{ |
| 1792 |
|
12 |
case spcblock_nspc: |
| 1793 |
|
12 |
spcblock.size_address=realsnespos; |
| 1794 |
2/4
✓ Branch 1085 → 1086 taken 6 times.
✗ Branch 1085 → 2652 not taken.
✓ Branch 1153 → 1154 taken 6 times.
✗ Branch 1153 → 2849 not taken.
|
12 |
write2(0x0000); |
| 1795 |
2/4
✓ Branch 1086 → 1087 taken 6 times.
✗ Branch 1086 → 2652 not taken.
✓ Branch 1154 → 1155 taken 6 times.
✗ Branch 1154 → 2849 not taken.
|
12 |
write2(spcblock.destination); |
| 1796 |
|
12 |
snespos=(int)spcblock.destination; |
| 1797 |
|
12 |
startpos=(int)spcblock.destination; |
| 1798 |
|
12 |
spcblock.execute_address = -1u; |
| 1799 |
2/4
✓ Branch 1087 → 1088 taken 6 times.
✗ Branch 1087 → 2652 not taken.
✓ Branch 1155 → 1156 taken 6 times.
✗ Branch 1155 → 2849 not taken.
|
12 |
add_addr_to_line(addrToLinePos); |
| 1800 |
|
12 |
break; |
| 1801 |
|
✗ |
case spcblock_custom: |
| 1802 |
|
|
//this is a todo that probably won't be ready for 1.9 |
| 1803 |
|
|
//mostly so we can leverage some cleanups we make in 2.0 for practicality |
| 1804 |
|
✗ |
asar_throw_error(0, error_type_block, error_id_spcblock_custom_types_incomplete); |
| 1805 |
|
✗ |
push_pc(); |
| 1806 |
|
✗ |
spcblock.old_mapper = mapper; |
| 1807 |
|
✗ |
mapper = norom; |
| 1808 |
|
✗ |
break; |
| 1809 |
|
✗ |
default: |
| 1810 |
|
✗ |
asar_throw_error(0, error_type_fatal, error_id_internal_error, "invalid spcblock type"); |
| 1811 |
|
|
} |
| 1812 |
|
|
|
| 1813 |
2/4
✓ Branch 1093 → 1094 taken 6 times.
✗ Branch 1093 → 2652 not taken.
✓ Branch 1161 → 1162 taken 6 times.
✗ Branch 1161 → 2849 not taken.
|
12 |
ns_backup = ns; |
| 1814 |
6/12
✓ Branch 1095 → 1096 taken 6 times.
✗ Branch 1095 → 2529 not taken.
✓ Branch 1096 → 1097 taken 6 times.
✗ Branch 1096 → 2527 not taken.
✓ Branch 1097 → 1098 taken 6 times.
✗ Branch 1097 → 2525 not taken.
✓ Branch 1165 → 1166 taken 6 times.
✗ Branch 1165 → 2674 not taken.
✓ Branch 1166 → 1167 taken 6 times.
✗ Branch 1166 → 2672 not taken.
✓ Branch 1167 → 1168 taken 6 times.
✗ Branch 1167 → 2670 not taken.
|
12 |
ns = STR":SPCBLOCK:_" + ns_backup; |
| 1815 |
|
12 |
in_spcblock = true; |
| 1816 |
|
|
} |
| 1817 |
4/4
✓ Branch 1102 → 1103 taken 6 times.
✓ Branch 1102 → 1133 taken 1404 times.
✓ Branch 1174 → 1175 taken 6 times.
✓ Branch 1174 → 1206 taken 1404 times.
|
2820 |
else if(is("endspcblock")) |
| 1818 |
|
|
{ |
| 1819 |
2/8
✗ Branch 1103 → 1104 not taken.
✓ Branch 1103 → 1105 taken 6 times.
✗ Branch 1104 → 1105 not taken.
✗ Branch 1104 → 2652 not taken.
✗ Branch 1175 → 1176 not taken.
✓ Branch 1175 → 1177 taken 6 times.
✗ Branch 1176 → 1177 not taken.
✗ Branch 1176 → 2849 not taken.
|
12 |
if(!in_spcblock) asar_throw_error(0, error_type_block, error_id_endspcblock_without_spcblock); |
| 1820 |
|
|
|
| 1821 |
2/6
✓ Branch 1105 → 1106 taken 6 times.
✗ Branch 1105 → 1128 not taken.
✗ Branch 1105 → 1130 not taken.
✓ Branch 1177 → 1178 taken 6 times.
✗ Branch 1177 → 1201 not taken.
✗ Branch 1177 → 1203 not taken.
|
12 |
switch(spcblock.type) |
| 1822 |
|
|
{ |
| 1823 |
|
12 |
case spcblock_nspc: |
| 1824 |
4/4
✓ Branch 1106 → 1107 taken 2 times.
✓ Branch 1106 → 1116 taken 4 times.
✓ Branch 1178 → 1179 taken 2 times.
✓ Branch 1178 → 1189 taken 4 times.
|
12 |
if (pass==2) |
| 1825 |
|
|
{ |
| 1826 |
|
4 |
int pcpos=snestopc(spcblock.size_address&0xFFFFFF); |
| 1827 |
2/12
✗ Branch 1108 → 1109 not taken.
✓ Branch 1108 → 1114 taken 2 times.
✗ Branch 1109 → 1110 not taken.
✗ Branch 1109 → 2533 not taken.
✗ Branch 1111 → 1112 not taken.
✗ Branch 1111 → 2531 not taken.
✗ Branch 1180 → 1181 not taken.
✓ Branch 1180 → 1187 taken 2 times.
✗ Branch 1182 → 1183 not taken.
✗ Branch 1182 → 2680 not taken.
✗ Branch 1184 → 1185 not taken.
✗ Branch 1184 → 2678 not taken.
|
4 |
if (pcpos<0) asar_throw_error(2, error_type_block, error_id_snes_address_doesnt_map_to_rom, hex6((unsigned int)realsnespos).data()); |
| 1828 |
|
4 |
int num=snespos-startpos; |
| 1829 |
2/4
✓ Branch 1114 → 1115 taken 2 times.
✗ Branch 1114 → 2652 not taken.
✓ Branch 1187 → 1188 taken 2 times.
✗ Branch 1187 → 2849 not taken.
|
4 |
writeromdata_byte(pcpos, (unsigned char)num); |
| 1830 |
2/4
✓ Branch 1115 → 1116 taken 2 times.
✗ Branch 1115 → 2652 not taken.
✓ Branch 1188 → 1189 taken 2 times.
✗ Branch 1188 → 2849 not taken.
|
4 |
writeromdata_byte(pcpos+1, (unsigned char)(num >> 8)); |
| 1831 |
|
|
} |
| 1832 |
4/4
✓ Branch 1116 → 1117 taken 3 times.
✓ Branch 1116 → 1122 taken 3 times.
✓ Branch 1189 → 1190 taken 3 times.
✓ Branch 1189 → 1195 taken 3 times.
|
12 |
if (numwords == 3) |
| 1833 |
|
|
{ |
| 1834 |
2/8
✗ Branch 1117 → 1118 not taken.
✓ Branch 1117 → 1119 taken 3 times.
✗ Branch 1118 → 1127 not taken.
✗ Branch 1118 → 2652 not taken.
✗ Branch 1190 → 1191 not taken.
✓ Branch 1190 → 1192 taken 3 times.
✗ Branch 1191 → 1200 not taken.
✗ Branch 1191 → 2849 not taken.
|
6 |
if (strcmp(par, "execute")) asar_throw_error(0, error_type_null, error_id_invalid_endspcblock_arg, par); |
| 1835 |
|
|
else |
| 1836 |
|
|
{ |
| 1837 |
2/4
✓ Branch 1119 → 1120 taken 3 times.
✗ Branch 1119 → 2652 not taken.
✓ Branch 1192 → 1193 taken 3 times.
✗ Branch 1192 → 2849 not taken.
|
6 |
write2(0x0000); |
| 1838 |
4/8
✓ Branch 1120 → 1121 taken 3 times.
✗ Branch 1120 → 2652 not taken.
✓ Branch 1121 → 1127 taken 3 times.
✗ Branch 1121 → 2652 not taken.
✓ Branch 1193 → 1194 taken 3 times.
✗ Branch 1193 → 2849 not taken.
✓ Branch 1194 → 1200 taken 3 times.
✗ Branch 1194 → 2849 not taken.
|
6 |
write2((unsigned int)getnum64(word[2])); |
| 1839 |
|
|
} |
| 1840 |
|
|
} |
| 1841 |
2/4
✗ Branch 1122 → 1123 not taken.
✓ Branch 1122 → 1124 taken 3 times.
✗ Branch 1195 → 1196 not taken.
✓ Branch 1195 → 1197 taken 3 times.
|
6 |
else if (numwords != 1) |
| 1842 |
|
|
{ |
| 1843 |
|
✗ |
asar_throw_error(0, error_type_null, error_id_unknown_endspcblock_format); |
| 1844 |
|
|
} |
| 1845 |
2/4
✗ Branch 1124 → 1125 not taken.
✓ Branch 1124 → 1127 taken 3 times.
✗ Branch 1197 → 1198 not taken.
✓ Branch 1197 → 1200 taken 3 times.
|
6 |
else if(spcblock.execute_address != -1u) |
| 1846 |
|
|
{ |
| 1847 |
|
|
// Legacy case, will be removed with Asar 2.0. |
| 1848 |
|
✗ |
write2(0x0000); |
| 1849 |
|
✗ |
write2((unsigned int)spcblock.execute_address); |
| 1850 |
|
|
} |
| 1851 |
|
12 |
break; |
| 1852 |
|
✗ |
case spcblock_custom: |
| 1853 |
|
✗ |
mapper = spcblock.old_mapper; |
| 1854 |
|
✗ |
pop_pc(); |
| 1855 |
|
✗ |
break; |
| 1856 |
|
✗ |
default: |
| 1857 |
|
✗ |
asar_throw_error(0, error_type_fatal, error_id_internal_error, "invalid spcblock type"); |
| 1858 |
|
|
} |
| 1859 |
2/4
✓ Branch 1131 → 1132 taken 6 times.
✗ Branch 1131 → 2652 not taken.
✓ Branch 1204 → 1205 taken 6 times.
✗ Branch 1204 → 2849 not taken.
|
12 |
ns = ns_backup; |
| 1860 |
|
12 |
in_spcblock = false; |
| 1861 |
|
|
} |
| 1862 |
|
|
// Remember to also remove execute_address entirely from spcblock once removing this deprecated command. |
| 1863 |
8/12
✓ Branch 1133 → 1134 taken 1119 times.
✓ Branch 1133 → 1137 taken 285 times.
✗ Branch 1135 → 1136 not taken.
✓ Branch 1135 → 1137 taken 1119 times.
✗ Branch 1138 → 1139 not taken.
✓ Branch 1138 → 1144 taken 1404 times.
✓ Branch 1206 → 1207 taken 1119 times.
✓ Branch 1206 → 1210 taken 285 times.
✗ Branch 1208 → 1209 not taken.
✓ Branch 1208 → 1210 taken 1119 times.
✗ Branch 1211 → 1212 not taken.
✓ Branch 1211 → 1217 taken 1404 times.
|
2808 |
else if (is1("startpos")) |
| 1864 |
|
|
{ |
| 1865 |
|
✗ |
asar_throw_warning(0, warning_id_feature_deprecated, "startpos", "Use the optional argument to \"endspcblock\""); |
| 1866 |
|
✗ |
if(!in_spcblock) asar_throw_error(0, error_type_block, error_id_startpos_without_spcblock); |
| 1867 |
|
✗ |
spcblock.execute_address=getnum64(par); |
| 1868 |
|
|
} |
| 1869 |
12/12
✓ Branch 1144 → 1145 taken 1119 times.
✓ Branch 1144 → 1148 taken 285 times.
✓ Branch 1146 → 1147 taken 42 times.
✓ Branch 1146 → 1148 taken 1077 times.
✓ Branch 1149 → 1150 taken 42 times.
✓ Branch 1149 → 1163 taken 1362 times.
✓ Branch 1217 → 1218 taken 1119 times.
✓ Branch 1217 → 1221 taken 285 times.
✓ Branch 1219 → 1220 taken 42 times.
✓ Branch 1219 → 1221 taken 1077 times.
✓ Branch 1222 → 1223 taken 42 times.
✓ Branch 1222 → 1236 taken 1362 times.
|
2808 |
else if (is1("base")) |
| 1870 |
|
|
{ |
| 1871 |
5/6
✓ Branch 1150 → 1151 taken 42 times.
✗ Branch 1150 → 2652 not taken.
✓ Branch 1151 → 1152 taken 15 times.
✓ Branch 1151 → 1153 taken 27 times.
✓ Branch 1223 → 1224 taken 15 times.
✓ Branch 1223 → 1225 taken 27 times.
|
84 |
if (!stricmp(par, "off")) |
| 1872 |
|
|
{ |
| 1873 |
|
30 |
snespos=realsnespos; |
| 1874 |
|
30 |
startpos=realstartpos; |
| 1875 |
|
30 |
return; |
| 1876 |
|
|
} |
| 1877 |
2/4
✓ Branch 1153 → 1154 taken 27 times.
✗ Branch 1153 → 2652 not taken.
✓ Branch 1225 → 1226 taken 27 times.
✗ Branch 1225 → 2849 not taken.
|
54 |
unsigned int num=getnum(par); |
| 1878 |
2/8
✗ Branch 1154 → 1155 not taken.
✓ Branch 1154 → 1156 taken 27 times.
✗ Branch 1155 → 1156 not taken.
✗ Branch 1155 → 2652 not taken.
✗ Branch 1226 → 1227 not taken.
✓ Branch 1226 → 1228 taken 27 times.
✗ Branch 1227 → 1228 not taken.
✗ Branch 1227 → 2849 not taken.
|
54 |
if (forwardlabel) asar_throw_error(0, error_type_block, error_id_base_label_invalid); |
| 1879 |
2/12
✗ Branch 1156 → 1157 not taken.
✓ Branch 1156 → 1162 taken 27 times.
✗ Branch 1157 → 1158 not taken.
✗ Branch 1157 → 2536 not taken.
✗ Branch 1159 → 1160 not taken.
✗ Branch 1159 → 2534 not taken.
✗ Branch 1228 → 1229 not taken.
✓ Branch 1228 → 1235 taken 27 times.
✗ Branch 1230 → 1231 not taken.
✗ Branch 1230 → 2684 not taken.
✗ Branch 1232 → 1233 not taken.
✗ Branch 1232 → 2682 not taken.
|
54 |
if (num&~0xFFFFFF) asar_throw_error(1, error_type_block, error_id_snes_address_out_of_bounds, hex6((unsigned int)num).data()); |
| 1880 |
|
54 |
snespos=(int)num; |
| 1881 |
|
54 |
startpos=(int)num; |
| 1882 |
|
54 |
optimizeforbank=-1; |
| 1883 |
|
|
} |
| 1884 |
12/12
✓ Branch 1163 → 1164 taken 1077 times.
✓ Branch 1163 → 1167 taken 285 times.
✓ Branch 1165 → 1166 taken 6 times.
✓ Branch 1165 → 1167 taken 1071 times.
✓ Branch 1168 → 1169 taken 6 times.
✓ Branch 1168 → 1179 taken 1356 times.
✓ Branch 1236 → 1237 taken 1077 times.
✓ Branch 1236 → 1240 taken 285 times.
✓ Branch 1238 → 1239 taken 6 times.
✓ Branch 1238 → 1240 taken 1071 times.
✓ Branch 1241 → 1242 taken 6 times.
✓ Branch 1241 → 1253 taken 1356 times.
|
2724 |
else if (is1("dpbase")) |
| 1885 |
|
|
{ |
| 1886 |
2/4
✓ Branch 1169 → 1170 taken 6 times.
✗ Branch 1169 → 2652 not taken.
✓ Branch 1242 → 1243 taken 6 times.
✗ Branch 1242 → 2849 not taken.
|
12 |
unsigned int num=(int)getnum(par); |
| 1887 |
2/8
✗ Branch 1170 → 1171 not taken.
✓ Branch 1170 → 1172 taken 6 times.
✗ Branch 1171 → 1172 not taken.
✗ Branch 1171 → 2652 not taken.
✗ Branch 1243 → 1244 not taken.
✓ Branch 1243 → 1245 taken 6 times.
✗ Branch 1244 → 1245 not taken.
✗ Branch 1244 → 2849 not taken.
|
12 |
if (forwardlabel) asar_throw_error(0, error_type_block, error_id_base_label_invalid); |
| 1888 |
2/12
✗ Branch 1172 → 1173 not taken.
✓ Branch 1172 → 1178 taken 6 times.
✗ Branch 1173 → 1174 not taken.
✗ Branch 1173 → 2539 not taken.
✗ Branch 1175 → 1176 not taken.
✗ Branch 1175 → 2537 not taken.
✗ Branch 1245 → 1246 not taken.
✓ Branch 1245 → 1252 taken 6 times.
✗ Branch 1247 → 1248 not taken.
✗ Branch 1247 → 2688 not taken.
✗ Branch 1249 → 1250 not taken.
✗ Branch 1249 → 2686 not taken.
|
12 |
if (num&~0xFF00) asar_throw_error(1, error_type_block, error_id_bad_dp_base, hex6((unsigned int)num).data()); |
| 1889 |
|
12 |
dp_base = (int)num; |
| 1890 |
|
|
} |
| 1891 |
12/12
✓ Branch 1179 → 1180 taken 123 times.
✓ Branch 1179 → 1183 taken 1233 times.
✓ Branch 1181 → 1182 taken 48 times.
✓ Branch 1181 → 1183 taken 75 times.
✓ Branch 1184 → 1185 taken 48 times.
✓ Branch 1184 → 1210 taken 1308 times.
✓ Branch 1253 → 1254 taken 123 times.
✓ Branch 1253 → 1257 taken 1233 times.
✓ Branch 1255 → 1256 taken 48 times.
✓ Branch 1255 → 1257 taken 75 times.
✓ Branch 1258 → 1259 taken 48 times.
✓ Branch 1258 → 1276 taken 1308 times.
|
2712 |
else if (is2("optimize")) |
| 1892 |
|
|
{ |
| 1893 |
5/6
✓ Branch 1185 → 1186 taken 48 times.
✗ Branch 1185 → 2652 not taken.
✓ Branch 1186 → 1187 taken 18 times.
✓ Branch 1186 → 1197 taken 30 times.
✓ Branch 1259 → 1260 taken 18 times.
✓ Branch 1259 → 1267 taken 30 times.
|
96 |
if (!stricmp(par, "dp")) |
| 1894 |
|
|
{ |
| 1895 |
5/6
✓ Branch 1187 → 1188 taken 18 times.
✗ Branch 1187 → 2652 not taken.
✓ Branch 1188 → 1189 taken 12 times.
✓ Branch 1188 → 1190 taken 6 times.
✓ Branch 1260 → 1261 taken 12 times.
✓ Branch 1260 → 1262 taken 6 times.
|
36 |
if (!stricmp(word[2], "none")) |
| 1896 |
|
|
{ |
| 1897 |
|
24 |
optimize_dp = optimize_dp_flag::NONE; |
| 1898 |
|
24 |
set_optimize_dp = true; |
| 1899 |
|
24 |
return; |
| 1900 |
|
|
} |
| 1901 |
5/6
✓ Branch 1190 → 1191 taken 6 times.
✗ Branch 1190 → 2652 not taken.
✓ Branch 1191 → 1192 taken 3 times.
✓ Branch 1191 → 1193 taken 3 times.
✓ Branch 1262 → 1263 taken 3 times.
✓ Branch 1262 → 1264 taken 3 times.
|
12 |
if (!stricmp(word[2], "ram")) |
| 1902 |
|
|
{ |
| 1903 |
|
6 |
optimize_dp = optimize_dp_flag::RAM; |
| 1904 |
|
6 |
set_optimize_dp = true; |
| 1905 |
|
6 |
return; |
| 1906 |
|
|
} |
| 1907 |
3/6
✓ Branch 1193 → 1194 taken 3 times.
✗ Branch 1193 → 2652 not taken.
✓ Branch 1194 → 1195 taken 3 times.
✗ Branch 1194 → 1196 not taken.
✓ Branch 1264 → 1265 taken 3 times.
✗ Branch 1264 → 1266 not taken.
|
6 |
if (!stricmp(word[2], "always")) |
| 1908 |
|
|
{ |
| 1909 |
|
6 |
optimize_dp = optimize_dp_flag::ALWAYS; |
| 1910 |
|
6 |
set_optimize_dp = true; |
| 1911 |
|
6 |
return; |
| 1912 |
|
|
} |
| 1913 |
|
✗ |
asar_throw_error(1, error_type_block, error_id_bad_dp_optimize, word[2]); |
| 1914 |
|
|
} |
| 1915 |
3/6
✓ Branch 1197 → 1198 taken 30 times.
✗ Branch 1197 → 2652 not taken.
✓ Branch 1198 → 1199 taken 30 times.
✗ Branch 1198 → 1209 not taken.
✓ Branch 1267 → 1268 taken 30 times.
✗ Branch 1267 → 1275 not taken.
|
60 |
if (!stricmp(par, "address")) |
| 1916 |
|
|
{ |
| 1917 |
5/6
✓ Branch 1199 → 1200 taken 30 times.
✗ Branch 1199 → 2652 not taken.
✓ Branch 1200 → 1201 taken 12 times.
✓ Branch 1200 → 1202 taken 18 times.
✓ Branch 1268 → 1269 taken 12 times.
✓ Branch 1268 → 1270 taken 18 times.
|
60 |
if (!stricmp(word[2], "default")) |
| 1918 |
|
|
{ |
| 1919 |
|
24 |
optimize_address = optimize_address_flag::DEFAULT; |
| 1920 |
|
24 |
set_optimize_address = true; |
| 1921 |
|
24 |
return; |
| 1922 |
|
|
} |
| 1923 |
5/6
✓ Branch 1202 → 1203 taken 18 times.
✗ Branch 1202 → 2652 not taken.
✓ Branch 1203 → 1204 taken 9 times.
✓ Branch 1203 → 1205 taken 9 times.
✓ Branch 1270 → 1271 taken 9 times.
✓ Branch 1270 → 1272 taken 9 times.
|
36 |
if (!stricmp(word[2], "ram")) |
| 1924 |
|
|
{ |
| 1925 |
|
18 |
optimize_address = optimize_address_flag::RAM; |
| 1926 |
|
18 |
set_optimize_address = true; |
| 1927 |
|
18 |
return; |
| 1928 |
|
|
} |
| 1929 |
3/6
✓ Branch 1205 → 1206 taken 9 times.
✗ Branch 1205 → 2652 not taken.
✓ Branch 1206 → 1207 taken 9 times.
✗ Branch 1206 → 1208 not taken.
✓ Branch 1272 → 1273 taken 9 times.
✗ Branch 1272 → 1274 not taken.
|
18 |
if (!stricmp(word[2], "mirrors")) |
| 1930 |
|
|
{ |
| 1931 |
|
18 |
optimize_address = optimize_address_flag::MIRRORS; |
| 1932 |
|
18 |
set_optimize_address = true; |
| 1933 |
|
18 |
return; |
| 1934 |
|
|
} |
| 1935 |
|
✗ |
asar_throw_error(1, error_type_block, error_id_bad_address_optimize, word[2]); |
| 1936 |
|
|
} |
| 1937 |
|
✗ |
asar_throw_error(1, error_type_block, error_id_bad_optimize, par); |
| 1938 |
|
|
} |
| 1939 |
8/12
✓ Branch 1210 → 1211 taken 1071 times.
✓ Branch 1210 → 1214 taken 237 times.
✗ Branch 1212 → 1213 not taken.
✓ Branch 1212 → 1214 taken 1071 times.
✗ Branch 1215 → 1216 not taken.
✓ Branch 1215 → 1230 taken 1308 times.
✓ Branch 1276 → 1277 taken 1071 times.
✓ Branch 1276 → 1280 taken 237 times.
✗ Branch 1278 → 1279 not taken.
✓ Branch 1278 → 1280 taken 1071 times.
✗ Branch 1281 → 1282 not taken.
✓ Branch 1281 → 1295 taken 1308 times.
|
2616 |
else if (is1("bank")) |
| 1940 |
|
|
{ |
| 1941 |
|
✗ |
if (!stricmp(par, "auto")) |
| 1942 |
|
|
{ |
| 1943 |
|
✗ |
optimizeforbank=-1; |
| 1944 |
|
✗ |
return; |
| 1945 |
|
|
} |
| 1946 |
|
✗ |
if (!stricmp(par, "noassume")) |
| 1947 |
|
|
{ |
| 1948 |
|
✗ |
optimizeforbank=0x100; |
| 1949 |
|
✗ |
return; |
| 1950 |
|
|
} |
| 1951 |
|
✗ |
unsigned int num=getnum(par); |
| 1952 |
|
|
//if (forwardlabel) error(0, "bank Label is not valid"); |
| 1953 |
|
|
//if (foundlabel) num>>=16; |
| 1954 |
|
✗ |
if (num&~0x0000FF) asar_throw_error(1, error_type_block, error_id_snes_address_out_of_bounds, hex6((unsigned int)num).data()); |
| 1955 |
|
✗ |
optimizeforbank=(int)num; |
| 1956 |
|
|
} |
| 1957 |
14/16
✓ Branch 1231 → 1232 taken 1308 times.
✗ Branch 1231 → 1236 not taken.
✓ Branch 1233 → 1234 taken 885 times.
✓ Branch 1233 → 1236 taken 423 times.
✓ Branch 1235 → 1236 taken 42 times.
✓ Branch 1235 → 1237 taken 843 times.
✓ Branch 1238 → 1239 taken 465 times.
✓ Branch 1238 → 1374 taken 843 times.
✓ Branch 1296 → 1297 taken 1308 times.
✗ Branch 1296 → 1301 not taken.
✓ Branch 1298 → 1299 taken 885 times.
✓ Branch 1298 → 1301 taken 423 times.
✓ Branch 1300 → 1301 taken 42 times.
✓ Branch 1300 → 1302 taken 843 times.
✓ Branch 1303 → 1304 taken 465 times.
✓ Branch 1303 → 1446 taken 843 times.
|
2616 |
else if (is("freespace") || is("freecode") || is("freedata")) |
| 1958 |
|
|
{ |
| 1959 |
2/8
✗ Branch 1239 → 1240 not taken.
✓ Branch 1239 → 1241 taken 465 times.
✗ Branch 1240 → 1241 not taken.
✗ Branch 1240 → 2565 not taken.
✗ Branch 1304 → 1305 not taken.
✓ Branch 1304 → 1306 taken 465 times.
✗ Branch 1305 → 1306 not taken.
✗ Branch 1305 → 2722 not taken.
|
930 |
if(in_spcblock) asar_throw_error(0, error_type_block, error_id_feature_unavaliable_in_spcblock); |
| 1960 |
2/8
✗ Branch 1241 → 1242 not taken.
✓ Branch 1241 → 1243 taken 465 times.
✗ Branch 1242 → 1243 not taken.
✗ Branch 1242 → 2565 not taken.
✗ Branch 1306 → 1307 not taken.
✓ Branch 1306 → 1308 taken 465 times.
✗ Branch 1307 → 1308 not taken.
✗ Branch 1307 → 2722 not taken.
|
930 |
if (emulatexkas) asar_throw_warning(0, warning_id_convert_to_asar); |
| 1961 |
|
930 |
string parstr; |
| 1962 |
6/8
✓ Branch 1244 → 1245 taken 69 times.
✓ Branch 1244 → 1246 taken 396 times.
✓ Branch 1245 → 1249 taken 69 times.
✗ Branch 1245 → 2563 not taken.
✓ Branch 1310 → 1311 taken 69 times.
✓ Branch 1310 → 1312 taken 396 times.
✓ Branch 1311 → 1315 taken 69 times.
✗ Branch 1311 → 2720 not taken.
|
930 |
if (numwords==1) parstr="\n";//crappy hack: impossible character to cut out extra commas |
| 1963 |
4/8
✓ Branch 1246 → 1247 taken 396 times.
✗ Branch 1246 → 1248 not taken.
✓ Branch 1247 → 1249 taken 396 times.
✗ Branch 1247 → 2563 not taken.
✓ Branch 1312 → 1313 taken 396 times.
✗ Branch 1312 → 1314 not taken.
✓ Branch 1313 → 1315 taken 396 times.
✗ Branch 1313 → 2720 not taken.
|
792 |
else if (numwords==2) parstr=word[1]; |
| 1964 |
|
✗ |
else asar_throw_error(0, error_type_block, error_id_invalid_freespace_request); |
| 1965 |
10/16
✓ Branch 1250 → 1251 taken 423 times.
✓ Branch 1250 → 1258 taken 42 times.
✓ Branch 1252 → 1253 taken 423 times.
✗ Branch 1252 → 2547 not taken.
✓ Branch 1253 → 1254 taken 423 times.
✗ Branch 1253 → 2545 not taken.
✓ Branch 1254 → 1255 taken 423 times.
✗ Branch 1254 → 2543 not taken.
✓ Branch 1316 → 1317 taken 423 times.
✓ Branch 1316 → 1327 taken 42 times.
✓ Branch 1320 → 1321 taken 423 times.
✗ Branch 1320 → 2698 not taken.
✓ Branch 1321 → 1322 taken 423 times.
✗ Branch 1321 → 2696 not taken.
✓ Branch 1322 → 1323 taken 423 times.
✗ Branch 1322 → 2694 not taken.
|
930 |
if (is("freecode")) parstr=STR"ram,"+parstr; |
| 1966 |
10/16
✓ Branch 1259 → 1260 taken 42 times.
✓ Branch 1259 → 1267 taken 423 times.
✓ Branch 1261 → 1262 taken 42 times.
✗ Branch 1261 → 2553 not taken.
✓ Branch 1262 → 1263 taken 42 times.
✗ Branch 1262 → 2551 not taken.
✓ Branch 1263 → 1264 taken 42 times.
✗ Branch 1263 → 2549 not taken.
✓ Branch 1328 → 1329 taken 42 times.
✓ Branch 1328 → 1339 taken 423 times.
✓ Branch 1332 → 1333 taken 42 times.
✗ Branch 1332 → 2706 not taken.
✓ Branch 1333 → 1334 taken 42 times.
✗ Branch 1333 → 2704 not taken.
✓ Branch 1334 → 1335 taken 42 times.
✗ Branch 1334 → 2702 not taken.
|
930 |
if (is("freedata")) parstr=STR"noram,"+parstr; |
| 1967 |
2/4
✓ Branch 1268 → 1269 taken 465 times.
✗ Branch 1268 → 2563 not taken.
✓ Branch 1341 → 1342 taken 465 times.
✗ Branch 1341 → 2720 not taken.
|
930 |
autoptr<char**> pars=split(parstr.temp_raw(), ","); |
| 1968 |
|
930 |
unsigned char fsbyte = default_freespacebyte; |
| 1969 |
|
930 |
int useram=-1; |
| 1970 |
|
930 |
bool fixedpos=false; |
| 1971 |
|
930 |
bool align=false; |
| 1972 |
|
930 |
bool leakwarn=true; |
| 1973 |
4/4
✓ Branch 1319 → 1271 taken 930 times.
✓ Branch 1319 → 1320 taken 465 times.
✓ Branch 1385 → 1344 taken 930 times.
✓ Branch 1385 → 1386 taken 465 times.
|
2790 |
for (int i=0;pars[i];i++) |
| 1974 |
|
|
{ |
| 1975 |
4/4
✓ Branch 1272 → 1273 taken 861 times.
✓ Branch 1272 → 1317 taken 69 times.
✓ Branch 1345 → 1346 taken 861 times.
✓ Branch 1345 → 1383 taken 69 times.
|
1860 |
if (pars[i][0]=='\n') {} |
| 1976 |
5/6
✓ Branch 1274 → 1275 taken 861 times.
✗ Branch 1274 → 2561 not taken.
✓ Branch 1275 → 1276 taken 423 times.
✓ Branch 1275 → 1279 taken 438 times.
✓ Branch 1347 → 1348 taken 423 times.
✓ Branch 1347 → 1351 taken 438 times.
|
1722 |
else if (!stricmp(pars[i], "ram")) |
| 1977 |
|
|
{ |
| 1978 |
2/8
✗ Branch 1276 → 1277 not taken.
✓ Branch 1276 → 1278 taken 423 times.
✗ Branch 1277 → 1278 not taken.
✗ Branch 1277 → 2561 not taken.
✗ Branch 1348 → 1349 not taken.
✓ Branch 1348 → 1350 taken 423 times.
✗ Branch 1349 → 1350 not taken.
✗ Branch 1349 → 2718 not taken.
|
846 |
if (useram!=-1) asar_throw_error(0, error_type_block, error_id_invalid_freespace_request); |
| 1979 |
|
846 |
useram=1; |
| 1980 |
|
|
} |
| 1981 |
5/6
✓ Branch 1280 → 1281 taken 438 times.
✗ Branch 1280 → 2561 not taken.
✓ Branch 1281 → 1282 taken 42 times.
✓ Branch 1281 → 1285 taken 396 times.
✓ Branch 1352 → 1353 taken 42 times.
✓ Branch 1352 → 1356 taken 396 times.
|
876 |
else if (!stricmp(pars[i], "noram")) |
| 1982 |
|
|
{ |
| 1983 |
2/8
✗ Branch 1282 → 1283 not taken.
✓ Branch 1282 → 1284 taken 42 times.
✗ Branch 1283 → 1284 not taken.
✗ Branch 1283 → 2561 not taken.
✗ Branch 1353 → 1354 not taken.
✓ Branch 1353 → 1355 taken 42 times.
✗ Branch 1354 → 1355 not taken.
✗ Branch 1354 → 2718 not taken.
|
84 |
if (useram!=-1) asar_throw_error(0, error_type_block, error_id_invalid_freespace_request); |
| 1984 |
|
84 |
useram=0; |
| 1985 |
|
|
} |
| 1986 |
8/16
✓ Branch 1286 → 1287 taken 396 times.
✗ Branch 1286 → 2561 not taken.
✓ Branch 1287 → 1288 taken 396 times.
✗ Branch 1287 → 1291 not taken.
✓ Branch 1289 → 1290 taken 396 times.
✗ Branch 1289 → 2561 not taken.
✗ Branch 1290 → 1291 not taken.
✓ Branch 1290 → 1292 taken 396 times.
✗ Branch 1293 → 1294 not taken.
✓ Branch 1293 → 1301 taken 396 times.
✓ Branch 1357 → 1358 taken 396 times.
✗ Branch 1357 → 1360 not taken.
✗ Branch 1359 → 1360 not taken.
✓ Branch 1359 → 1361 taken 396 times.
✗ Branch 1362 → 1363 not taken.
✓ Branch 1362 → 1369 taken 396 times.
|
792 |
else if (!stricmp(pars[i], "static") || !stricmp(pars[i], "fixed")) |
| 1987 |
|
|
{ |
| 1988 |
|
✗ |
if (!stricmp(pars[i], "fixed")) asar_throw_warning(0, warning_id_feature_deprecated, "freespace/code/data fixed", "freespace/code/data static"); |
| 1989 |
|
✗ |
if (fixedpos) asar_throw_error(0, error_type_block, error_id_invalid_freespace_request); |
| 1990 |
|
✗ |
fixedpos=true; |
| 1991 |
|
|
} |
| 1992 |
5/6
✓ Branch 1302 → 1303 taken 396 times.
✗ Branch 1302 → 2561 not taken.
✓ Branch 1303 → 1304 taken 3 times.
✓ Branch 1303 → 1307 taken 393 times.
✓ Branch 1370 → 1371 taken 3 times.
✓ Branch 1370 → 1374 taken 393 times.
|
792 |
else if (!stricmp(pars[i], "align")) |
| 1993 |
|
|
{ |
| 1994 |
2/8
✗ Branch 1304 → 1305 not taken.
✓ Branch 1304 → 1306 taken 3 times.
✗ Branch 1305 → 1306 not taken.
✗ Branch 1305 → 2561 not taken.
✗ Branch 1371 → 1372 not taken.
✓ Branch 1371 → 1373 taken 3 times.
✗ Branch 1372 → 1373 not taken.
✗ Branch 1372 → 2718 not taken.
|
6 |
if (align) asar_throw_error(0, error_type_block, error_id_invalid_freespace_request); |
| 1995 |
|
6 |
align=true; |
| 1996 |
|
|
} |
| 1997 |
3/6
✓ Branch 1308 → 1309 taken 393 times.
✗ Branch 1308 → 2561 not taken.
✓ Branch 1309 → 1310 taken 393 times.
✗ Branch 1309 → 1313 not taken.
✓ Branch 1375 → 1376 taken 393 times.
✗ Branch 1375 → 1379 not taken.
|
786 |
else if (!stricmp(pars[i], "cleaned")) |
| 1998 |
|
|
{ |
| 1999 |
2/8
✗ Branch 1310 → 1311 not taken.
✓ Branch 1310 → 1312 taken 393 times.
✗ Branch 1311 → 1312 not taken.
✗ Branch 1311 → 2561 not taken.
✗ Branch 1376 → 1377 not taken.
✓ Branch 1376 → 1378 taken 393 times.
✗ Branch 1377 → 1378 not taken.
✗ Branch 1377 → 2718 not taken.
|
786 |
if (!leakwarn) asar_throw_error(0, error_type_block, error_id_invalid_freespace_request); |
| 2000 |
|
786 |
leakwarn=false; |
| 2001 |
|
|
} |
| 2002 |
|
|
else |
| 2003 |
|
|
{ |
| 2004 |
|
✗ |
asar_throw_warning(0, warning_id_feature_deprecated, "specifying the freespacebyte in the freespace command", "use the separate freespacebyte command"); |
| 2005 |
|
✗ |
fsbyte = (unsigned char)getnum(pars[i]); |
| 2006 |
|
|
} |
| 2007 |
|
|
} |
| 2008 |
2/8
✗ Branch 1320 → 1321 not taken.
✓ Branch 1320 → 1322 taken 465 times.
✗ Branch 1321 → 1322 not taken.
✗ Branch 1321 → 2561 not taken.
✗ Branch 1386 → 1387 not taken.
✓ Branch 1386 → 1388 taken 465 times.
✗ Branch 1387 → 1388 not taken.
✗ Branch 1387 → 2718 not taken.
|
930 |
if (useram==-1) asar_throw_error(0, error_type_block, error_id_invalid_freespace_request); |
| 2009 |
2/8
✗ Branch 1322 → 1323 not taken.
✓ Branch 1322 → 1324 taken 465 times.
✗ Branch 1323 → 1324 not taken.
✗ Branch 1323 → 2561 not taken.
✗ Branch 1388 → 1389 not taken.
✓ Branch 1388 → 1390 taken 465 times.
✗ Branch 1389 → 1390 not taken.
✗ Branch 1389 → 2718 not taken.
|
930 |
if (mapper == norom) asar_throw_error(0, error_type_block, error_id_no_freespace_norom); |
| 2010 |
|
930 |
freespaceend(); |
| 2011 |
2/4
✓ Branch 1325 → 1326 taken 465 times.
✗ Branch 1325 → 2561 not taken.
✓ Branch 1391 → 1392 taken 465 times.
✗ Branch 1391 → 2718 not taken.
|
930 |
freespaceid=getfreespaceid(); |
| 2012 |
|
930 |
freespacebyte[freespaceid] = fsbyte; |
| 2013 |
|
930 |
freespace_is_freecode = (useram != 0); |
| 2014 |
4/4
✓ Branch 1326 → 1327 taken 155 times.
✓ Branch 1326 → 1328 taken 310 times.
✓ Branch 1392 → 1393 taken 155 times.
✓ Branch 1392 → 1394 taken 310 times.
|
930 |
if (pass==0) snespos=(freespaceid<<24)|0x8000; |
| 2015 |
4/4
✓ Branch 1328 → 1329 taken 155 times.
✓ Branch 1328 → 1338 taken 310 times.
✓ Branch 1394 → 1395 taken 155 times.
✓ Branch 1394 → 1404 taken 310 times.
|
930 |
if (pass==1) |
| 2016 |
|
|
{ |
| 2017 |
2/8
✗ Branch 1329 → 1330 not taken.
✓ Branch 1329 → 1332 taken 155 times.
✗ Branch 1330 → 1331 not taken.
✗ Branch 1330 → 1332 not taken.
✗ Branch 1395 → 1396 not taken.
✓ Branch 1395 → 1398 taken 155 times.
✗ Branch 1396 → 1397 not taken.
✗ Branch 1396 → 1398 not taken.
|
310 |
if (fixedpos && freespaceorgpos[freespaceid]<0) |
| 2018 |
|
|
{ |
| 2019 |
|
✗ |
freespacepos[freespaceid]=0x008000; |
| 2020 |
|
✗ |
freespaceleak[freespaceid]=false;//mute some other errors |
| 2021 |
|
✗ |
asar_throw_error(1, error_type_block, error_id_static_freespace_autoclean); |
| 2022 |
|
|
} |
| 2023 |
2/8
✗ Branch 1332 → 1333 not taken.
✓ Branch 1332 → 1335 taken 155 times.
✗ Branch 1333 → 1334 not taken.
✗ Branch 1333 → 1335 not taken.
✗ Branch 1398 → 1399 not taken.
✓ Branch 1398 → 1401 taken 155 times.
✗ Branch 1399 → 1400 not taken.
✗ Branch 1399 → 1401 not taken.
|
310 |
if (fixedpos && freespaceorgpos[freespaceid]) freespacepos[freespaceid]=snespos=(freespaceid<<24)|freespaceorgpos[freespaceid]; |
| 2024 |
2/4
✓ Branch 1335 → 1336 taken 155 times.
✗ Branch 1335 → 2561 not taken.
✓ Branch 1401 → 1402 taken 155 times.
✗ Branch 1401 → 2718 not taken.
|
310 |
else freespacepos[freespaceid]=snespos=(freespaceid<<24)|getsnesfreespace(freespacelen[freespaceid], (useram != 0), true, true, align, freespacebyte[freespaceid]); |
| 2025 |
|
|
} |
| 2026 |
4/4
✓ Branch 1338 → 1339 taken 155 times.
✓ Branch 1338 → 1351 taken 310 times.
✓ Branch 1404 → 1405 taken 155 times.
✓ Branch 1404 → 1417 taken 310 times.
|
930 |
if (pass==2) |
| 2027 |
|
|
{ |
| 2028 |
2/8
✗ Branch 1339 → 1340 not taken.
✓ Branch 1339 → 1342 taken 155 times.
✗ Branch 1340 → 1341 not taken.
✗ Branch 1340 → 1342 not taken.
✗ Branch 1405 → 1406 not taken.
✓ Branch 1405 → 1408 taken 155 times.
✗ Branch 1406 → 1407 not taken.
✗ Branch 1406 → 1408 not taken.
|
310 |
if (fixedpos && freespaceorgpos[freespaceid]==-1) return;//to kill some errors |
| 2029 |
|
310 |
snespos=(freespaceid<<24)|freespacepos[freespaceid]; |
| 2030 |
2/4
✓ Branch 1342 → 1343 taken 155 times.
✗ Branch 1342 → 2561 not taken.
✓ Branch 1408 → 1409 taken 155 times.
✗ Branch 1408 → 2718 not taken.
|
310 |
resizerats(snespos&0xFFFFFF, freespacelen[freespaceid]); |
| 2031 |
6/12
✓ Branch 1343 → 1344 taken 129 times.
✓ Branch 1343 → 1346 taken 26 times.
✗ Branch 1344 → 1345 not taken.
✓ Branch 1344 → 1346 taken 129 times.
✗ Branch 1345 → 1346 not taken.
✗ Branch 1345 → 2561 not taken.
✓ Branch 1409 → 1410 taken 129 times.
✓ Branch 1409 → 1412 taken 26 times.
✗ Branch 1410 → 1411 not taken.
✓ Branch 1410 → 1412 taken 129 times.
✗ Branch 1411 → 1412 not taken.
✗ Branch 1411 → 2718 not taken.
|
310 |
if (freespaceleak[freespaceid] && leakwarn) asar_throw_warning(2, warning_id_freespace_leaked); |
| 2032 |
2/12
✗ Branch 1346 → 1347 not taken.
✓ Branch 1346 → 1350 taken 155 times.
✗ Branch 1347 → 1348 not taken.
✗ Branch 1347 → 1350 not taken.
✗ Branch 1348 → 1349 not taken.
✗ Branch 1348 → 1350 not taken.
✗ Branch 1412 → 1413 not taken.
✓ Branch 1412 → 1416 taken 155 times.
✗ Branch 1413 → 1414 not taken.
✗ Branch 1413 → 1416 not taken.
✗ Branch 1414 → 1415 not taken.
✗ Branch 1414 → 1416 not taken.
|
310 |
if (fixedpos && freespaceorgpos[freespaceid]>0 && freespacelen[freespaceid]>freespaceorglen[freespaceid]) |
| 2033 |
|
✗ |
asar_throw_error(2, error_type_block, error_id_static_freespace_growing); |
| 2034 |
|
310 |
freespaceuse+=8+freespacelen[freespaceid]; |
| 2035 |
|
|
|
| 2036 |
|
|
// add a mapping for the start of the rats tag |
| 2037 |
2/4
✓ Branch 1350 → 1351 taken 155 times.
✗ Branch 1350 → 2561 not taken.
✓ Branch 1416 → 1417 taken 155 times.
✗ Branch 1416 → 2718 not taken.
|
310 |
add_addr_to_line(snespos-8); |
| 2038 |
|
|
} |
| 2039 |
|
930 |
freespacestatic[freespaceid]=fixedpos; |
| 2040 |
2/16
✗ Branch 1351 → 1352 not taken.
✓ Branch 1351 → 1358 taken 465 times.
✗ Branch 1352 → 1353 not taken.
✗ Branch 1352 → 1358 not taken.
✗ Branch 1353 → 1354 not taken.
✗ Branch 1353 → 2557 not taken.
✗ Branch 1355 → 1356 not taken.
✗ Branch 1355 → 2555 not taken.
✗ Branch 1417 → 1418 not taken.
✓ Branch 1417 → 1425 taken 465 times.
✗ Branch 1418 → 1419 not taken.
✗ Branch 1418 → 1425 not taken.
✗ Branch 1420 → 1421 not taken.
✗ Branch 1420 → 2712 not taken.
✗ Branch 1422 → 1423 not taken.
✗ Branch 1422 → 2710 not taken.
|
930 |
if (snespos < 0 && mapper == sa1rom) asar_throw_error(pass, error_type_fatal, error_id_no_freespace_in_mapped_banks, dec(freespacelen[freespaceid]).data()); |
| 2041 |
2/12
✗ Branch 1358 → 1359 not taken.
✓ Branch 1358 → 1364 taken 465 times.
✗ Branch 1359 → 1360 not taken.
✗ Branch 1359 → 2560 not taken.
✗ Branch 1361 → 1362 not taken.
✗ Branch 1361 → 2558 not taken.
✗ Branch 1425 → 1426 not taken.
✓ Branch 1425 → 1432 taken 465 times.
✗ Branch 1427 → 1428 not taken.
✗ Branch 1427 → 2716 not taken.
✗ Branch 1429 → 1430 not taken.
✗ Branch 1429 → 2714 not taken.
|
930 |
if (snespos < 0) asar_throw_error(pass, error_type_fatal, error_id_no_freespace, dec(freespacelen[freespaceid]).data()); |
| 2042 |
|
930 |
bytes+=8; |
| 2043 |
|
930 |
freespacestart=snespos; |
| 2044 |
|
930 |
startpos=snespos; |
| 2045 |
|
930 |
realstartpos=snespos; |
| 2046 |
|
930 |
realsnespos=snespos; |
| 2047 |
|
930 |
optimizeforbank=-1; |
| 2048 |
|
930 |
ratsmetastate=ratsmeta_allow; |
| 2049 |
4/8
✓ Branch 1366 → 1367 taken 465 times.
✗ Branch 1366 → 1368 not taken.
✓ Branch 1370 → 1371 taken 465 times.
✗ Branch 1370 → 1373 not taken.
✓ Branch 1434 → 1435 taken 465 times.
✗ Branch 1434 → 1436 not taken.
✓ Branch 1438 → 1439 taken 465 times.
✗ Branch 1438 → 1440 not taken.
|
930 |
} |
| 2050 |
12/12
✓ Branch 1374 → 1375 taken 675 times.
✓ Branch 1374 → 1378 taken 168 times.
✓ Branch 1376 → 1377 taken 27 times.
✓ Branch 1376 → 1378 taken 648 times.
✓ Branch 1379 → 1380 taken 27 times.
✓ Branch 1379 → 1419 taken 816 times.
✓ Branch 1446 → 1447 taken 675 times.
✓ Branch 1446 → 1450 taken 168 times.
✓ Branch 1448 → 1449 taken 27 times.
✓ Branch 1448 → 1450 taken 648 times.
✓ Branch 1451 → 1452 taken 27 times.
✓ Branch 1451 → 1498 taken 816 times.
|
1686 |
else if (is1("prot")) |
| 2051 |
|
|
{ |
| 2052 |
2/8
✗ Branch 1380 → 1381 not taken.
✓ Branch 1380 → 1382 taken 27 times.
✗ Branch 1381 → 1382 not taken.
✗ Branch 1381 → 2571 not taken.
✗ Branch 1452 → 1453 not taken.
✓ Branch 1452 → 1454 taken 27 times.
✗ Branch 1453 → 1454 not taken.
✗ Branch 1453 → 2732 not taken.
|
54 |
if(in_spcblock) asar_throw_error(0, error_type_block, error_id_feature_unavaliable_in_spcblock); |
| 2053 |
4/12
✓ Branch 1382 → 1383 taken 27 times.
✗ Branch 1382 → 2571 not taken.
✗ Branch 1383 → 1384 not taken.
✓ Branch 1383 → 1385 taken 27 times.
✗ Branch 1384 → 1385 not taken.
✗ Branch 1384 → 2571 not taken.
✓ Branch 1454 → 1455 taken 27 times.
✗ Branch 1454 → 2732 not taken.
✗ Branch 1455 → 1456 not taken.
✓ Branch 1455 → 1457 taken 27 times.
✗ Branch 1456 → 1457 not taken.
✗ Branch 1456 → 2732 not taken.
|
54 |
if (!confirmqpar(par)) asar_throw_error(0, error_type_block, error_id_mismatched_parentheses); |
| 2054 |
2/8
✗ Branch 1385 → 1386 not taken.
✓ Branch 1385 → 1387 taken 27 times.
✗ Branch 1386 → 1387 not taken.
✗ Branch 1386 → 2571 not taken.
✗ Branch 1457 → 1458 not taken.
✓ Branch 1457 → 1459 taken 27 times.
✗ Branch 1458 → 1459 not taken.
✗ Branch 1458 → 2732 not taken.
|
54 |
if (!ratsmetastate) asar_throw_error(2, error_type_block, error_id_prot_not_at_freespace_start); |
| 2055 |
4/4
✓ Branch 1387 → 1388 taken 6 times.
✓ Branch 1387 → 1389 taken 21 times.
✓ Branch 1459 → 1460 taken 6 times.
✓ Branch 1459 → 1461 taken 21 times.
|
54 |
if (ratsmetastate==ratsmeta_used) step(-5); |
| 2056 |
|
27 |
int num; |
| 2057 |
2/4
✓ Branch 1389 → 1390 taken 27 times.
✗ Branch 1389 → 2571 not taken.
✓ Branch 1463 → 1464 taken 27 times.
✗ Branch 1463 → 2732 not taken.
|
54 |
autoptr<char**> pars=qpsplit(par, ",", &num); |
| 2058 |
2/4
✓ Branch 1391 → 1392 taken 27 times.
✗ Branch 1391 → 2569 not taken.
✓ Branch 1465 → 1466 taken 27 times.
✗ Branch 1465 → 2730 not taken.
|
54 |
write1('P'); |
| 2059 |
2/4
✓ Branch 1392 → 1393 taken 27 times.
✗ Branch 1392 → 2569 not taken.
✓ Branch 1466 → 1467 taken 27 times.
✗ Branch 1466 → 2730 not taken.
|
54 |
write1('R'); |
| 2060 |
2/4
✓ Branch 1393 → 1394 taken 27 times.
✗ Branch 1393 → 2569 not taken.
✓ Branch 1467 → 1468 taken 27 times.
✗ Branch 1467 → 2730 not taken.
|
54 |
write1('O'); |
| 2061 |
2/4
✓ Branch 1394 → 1395 taken 27 times.
✗ Branch 1394 → 2569 not taken.
✓ Branch 1468 → 1469 taken 27 times.
✗ Branch 1468 → 2730 not taken.
|
54 |
write1('T'); |
| 2062 |
2/8
✗ Branch 1395 → 1396 not taken.
✓ Branch 1395 → 1397 taken 27 times.
✗ Branch 1396 → 1397 not taken.
✗ Branch 1396 → 2569 not taken.
✗ Branch 1469 → 1470 not taken.
✓ Branch 1469 → 1471 taken 27 times.
✗ Branch 1470 → 1471 not taken.
✗ Branch 1470 → 2730 not taken.
|
54 |
if (num * 3 > 255) asar_throw_error(0, error_type_block, error_id_prot_too_many_entries); |
| 2063 |
2/4
✓ Branch 1397 → 1398 taken 27 times.
✗ Branch 1397 → 2569 not taken.
✓ Branch 1471 → 1472 taken 27 times.
✗ Branch 1471 → 2730 not taken.
|
54 |
write1((unsigned int)(num*3)); |
| 2064 |
4/4
✓ Branch 1410 → 1399 taken 33 times.
✓ Branch 1410 → 1411 taken 27 times.
✓ Branch 1488 → 1473 taken 33 times.
✓ Branch 1488 → 1489 taken 27 times.
|
120 |
for (int i=0;i<num;i++) |
| 2065 |
|
|
{ |
| 2066 |
|
|
//int num=getnum(pars[i]); |
| 2067 |
|
66 |
const char * labeltest=pars[i]; |
| 2068 |
2/4
✓ Branch 1400 → 1401 taken 33 times.
✗ Branch 1400 → 2568 not taken.
✓ Branch 1476 → 1477 taken 33 times.
✗ Branch 1476 → 2727 not taken.
|
66 |
string testlabel = labeltest; |
| 2069 |
2/4
✓ Branch 1401 → 1402 taken 33 times.
✗ Branch 1401 → 2566 not taken.
✓ Branch 1477 → 1478 taken 33 times.
✗ Branch 1477 → 2725 not taken.
|
66 |
int labelnum=(int)labelval(&labeltest).pos; |
| 2070 |
2/8
✗ Branch 1402 → 1403 not taken.
✓ Branch 1402 → 1405 taken 33 times.
✗ Branch 1404 → 1405 not taken.
✗ Branch 1404 → 2566 not taken.
✗ Branch 1478 → 1479 not taken.
✓ Branch 1478 → 1481 taken 33 times.
✗ Branch 1480 → 1481 not taken.
✗ Branch 1480 → 2725 not taken.
|
66 |
if (*labeltest) asar_throw_error(0, error_type_block, error_id_label_not_found, testlabel.data()); |
| 2071 |
2/4
✓ Branch 1405 → 1406 taken 33 times.
✗ Branch 1405 → 2566 not taken.
✓ Branch 1481 → 1482 taken 33 times.
✗ Branch 1481 → 2725 not taken.
|
66 |
write3((unsigned int)labelnum); |
| 2072 |
4/4
✓ Branch 1406 → 1407 taken 11 times.
✓ Branch 1406 → 1408 taken 22 times.
✓ Branch 1482 → 1483 taken 11 times.
✓ Branch 1482 → 1484 taken 22 times.
|
66 |
if (pass==1) freespaceleak[labelnum >>24]=false; |
| 2073 |
|
66 |
} |
| 2074 |
2/4
✓ Branch 1411 → 1412 taken 27 times.
✗ Branch 1411 → 2569 not taken.
✓ Branch 1489 → 1490 taken 27 times.
✗ Branch 1489 → 2730 not taken.
|
54 |
write1('S'); |
| 2075 |
2/4
✓ Branch 1412 → 1413 taken 27 times.
✗ Branch 1412 → 2569 not taken.
✓ Branch 1490 → 1491 taken 27 times.
✗ Branch 1490 → 2730 not taken.
|
54 |
write1('T'); |
| 2076 |
2/4
✓ Branch 1413 → 1414 taken 27 times.
✗ Branch 1413 → 2569 not taken.
✓ Branch 1491 → 1492 taken 27 times.
✗ Branch 1491 → 2730 not taken.
|
54 |
write1('O'); |
| 2077 |
2/4
✓ Branch 1414 → 1415 taken 27 times.
✗ Branch 1414 → 2569 not taken.
✓ Branch 1492 → 1493 taken 27 times.
✗ Branch 1492 → 2730 not taken.
|
54 |
write1('P'); |
| 2078 |
2/4
✓ Branch 1415 → 1416 taken 27 times.
✗ Branch 1415 → 2569 not taken.
✓ Branch 1493 → 1494 taken 27 times.
✗ Branch 1493 → 2730 not taken.
|
54 |
write1(0); |
| 2079 |
|
54 |
ratsmetastate=ratsmeta_used; |
| 2080 |
|
|
|
| 2081 |
2/4
✓ Branch 1416 → 1417 taken 27 times.
✗ Branch 1416 → 2569 not taken.
✓ Branch 1494 → 1495 taken 27 times.
✗ Branch 1494 → 2730 not taken.
|
54 |
add_addr_to_line(addrToLinePos); |
| 2082 |
|
54 |
} |
| 2083 |
30/36
✓ Branch 1419 → 1420 taken 648 times.
✓ Branch 1419 → 1422 taken 168 times.
✓ Branch 1421 → 1422 taken 648 times.
✗ Branch 1421 → 1431 not taken.
✓ Branch 1422 → 1423 taken 75 times.
✓ Branch 1422 → 1425 taken 741 times.
✓ Branch 1424 → 1425 taken 18 times.
✓ Branch 1424 → 1431 taken 57 times.
✓ Branch 1425 → 1426 taken 648 times.
✓ Branch 1425 → 1428 taken 111 times.
✓ Branch 1427 → 1428 taken 648 times.
✗ Branch 1427 → 1431 not taken.
✓ Branch 1428 → 1429 taken 18 times.
✓ Branch 1428 → 1432 taken 741 times.
✗ Branch 1430 → 1431 not taken.
✓ Branch 1430 → 1432 taken 18 times.
✓ Branch 1433 → 1434 taken 57 times.
✓ Branch 1433 → 1528 taken 759 times.
✓ Branch 1498 → 1499 taken 648 times.
✓ Branch 1498 → 1501 taken 168 times.
✓ Branch 1500 → 1501 taken 648 times.
✗ Branch 1500 → 1510 not taken.
✓ Branch 1501 → 1502 taken 75 times.
✓ Branch 1501 → 1504 taken 741 times.
✓ Branch 1503 → 1504 taken 18 times.
✓ Branch 1503 → 1510 taken 57 times.
✓ Branch 1504 → 1505 taken 648 times.
✓ Branch 1504 → 1507 taken 111 times.
✓ Branch 1506 → 1507 taken 648 times.
✗ Branch 1506 → 1510 not taken.
✓ Branch 1507 → 1508 taken 18 times.
✓ Branch 1507 → 1511 taken 741 times.
✗ Branch 1509 → 1510 not taken.
✓ Branch 1509 → 1511 taken 18 times.
✓ Branch 1512 → 1513 taken 57 times.
✓ Branch 1512 → 1601 taken 759 times.
|
1632 |
else if (is1("autoclean") || is2("autoclean") || is1("autoclear") || is2("autoclear")) |
| 2084 |
|
|
{ |
| 2085 |
2/8
✗ Branch 1434 → 1435 not taken.
✓ Branch 1434 → 1436 taken 57 times.
✗ Branch 1435 → 1436 not taken.
✗ Branch 1435 → 2652 not taken.
✗ Branch 1513 → 1514 not taken.
✓ Branch 1513 → 1515 taken 57 times.
✗ Branch 1514 → 1515 not taken.
✗ Branch 1514 → 2849 not taken.
|
114 |
if(in_spcblock) asar_throw_error(0, error_type_block, error_id_feature_unavaliable_in_spcblock); |
| 2086 |
8/24
✗ Branch 1436 → 1437 not taken.
✓ Branch 1436 → 1439 taken 57 times.
✗ Branch 1438 → 1439 not taken.
✗ Branch 1438 → 1442 not taken.
✓ Branch 1439 → 1440 taken 57 times.
✗ Branch 1439 → 1443 not taken.
✗ Branch 1441 → 1442 not taken.
✓ Branch 1441 → 1443 taken 57 times.
✗ Branch 1444 → 1445 not taken.
✓ Branch 1444 → 1446 taken 57 times.
✗ Branch 1445 → 1446 not taken.
✗ Branch 1445 → 2652 not taken.
✗ Branch 1515 → 1516 not taken.
✓ Branch 1515 → 1518 taken 57 times.
✗ Branch 1517 → 1518 not taken.
✗ Branch 1517 → 1521 not taken.
✓ Branch 1518 → 1519 taken 57 times.
✗ Branch 1518 → 1522 not taken.
✗ Branch 1520 → 1521 not taken.
✓ Branch 1520 → 1522 taken 57 times.
✗ Branch 1523 → 1524 not taken.
✓ Branch 1523 → 1525 taken 57 times.
✗ Branch 1524 → 1525 not taken.
✗ Branch 1524 → 2849 not taken.
|
114 |
if (is1("autoclear") || is2("autoclear")) asar_throw_warning(0, warning_id_autoclear_deprecated); |
| 2087 |
2/4
✓ Branch 1446 → 1447 taken 57 times.
✗ Branch 1446 → 1525 not taken.
✓ Branch 1525 → 1526 taken 57 times.
✗ Branch 1525 → 1598 not taken.
|
114 |
if (numwords==3) |
| 2088 |
|
|
{ |
| 2089 |
2/8
✗ Branch 1447 → 1448 not taken.
✓ Branch 1447 → 1449 taken 57 times.
✗ Branch 1448 → 1449 not taken.
✗ Branch 1448 → 2574 not taken.
✗ Branch 1526 → 1527 not taken.
✓ Branch 1526 → 1528 taken 57 times.
✗ Branch 1527 → 1528 not taken.
✗ Branch 1527 → 2737 not taken.
|
114 |
if ((unsigned int)snespos & 0xFF000000) asar_throw_error(0, error_type_block, error_id_autoclean_in_freespace); |
| 2090 |
|
114 |
const char * labeltest = word[2]; |
| 2091 |
2/4
✓ Branch 1449 → 1450 taken 57 times.
✗ Branch 1449 → 2574 not taken.
✓ Branch 1530 → 1531 taken 57 times.
✗ Branch 1530 → 2737 not taken.
|
114 |
string testlabel = labeltest; |
| 2092 |
2/4
✓ Branch 1450 → 1451 taken 57 times.
✗ Branch 1450 → 2572 not taken.
✓ Branch 1531 → 1532 taken 57 times.
✗ Branch 1531 → 2735 not taken.
|
114 |
int num=(int)labelval(&labeltest).pos; |
| 2093 |
2/8
✗ Branch 1451 → 1452 not taken.
✓ Branch 1451 → 1454 taken 57 times.
✗ Branch 1453 → 1454 not taken.
✗ Branch 1453 → 2572 not taken.
✗ Branch 1532 → 1533 not taken.
✓ Branch 1532 → 1535 taken 57 times.
✗ Branch 1534 → 1535 not taken.
✗ Branch 1534 → 2735 not taken.
|
114 |
if (*labeltest) asar_throw_error(0, error_type_block, error_id_label_not_found, testlabel.data()); |
| 2094 |
|
114 |
unsigned char targetid=(unsigned char)(num>>24); |
| 2095 |
4/4
✓ Branch 1454 → 1455 taken 19 times.
✓ Branch 1454 → 1456 taken 38 times.
✓ Branch 1535 → 1536 taken 19 times.
✓ Branch 1535 → 1537 taken 38 times.
|
114 |
if (pass==1) freespaceleak[targetid]=false; |
| 2096 |
|
65 |
auto is_freespace_reused = [](int ratsloc) -> bool |
| 2097 |
|
|
{ |
| 2098 |
2/2
✓ Branch 7 → 3 taken 18 times.
✓ Branch 7 → 8 taken 14 times.
|
32 |
for (int i = 0; i < freespaceidnext; i++) |
| 2099 |
|
|
{ |
| 2100 |
3/4
✓ Branch 3 → 4 taken 2 times.
✓ Branch 3 → 6 taken 16 times.
✓ Branch 4 → 5 taken 2 times.
✗ Branch 4 → 6 not taken.
|
18 |
if (freespacepos[i] != -1 && (freespacepos[i] & 0xFFFFFF) == ratsloc) { |
| 2101 |
|
2 |
return true; |
| 2102 |
|
|
} |
| 2103 |
|
|
} |
| 2104 |
|
14 |
return false; |
| 2105 |
|
|
}; |
| 2106 |
|
114 |
num&=0xFFFFFF; |
| 2107 |
3/12
✗ Branch 1456 → 1457 not taken.
✓ Branch 1456 → 1460 taken 57 times.
✗ Branch 1457 → 1458 not taken.
✗ Branch 1457 → 2572 not taken.
✗ Branch 1458 → 1459 not taken.
✗ Branch 1458 → 1460 not taken.
✗ Branch 1461 → 1462 not taken.
✓ Branch 1461 → 1463 taken 57 times.
✗ Branch 1538 → 1539 not taken.
✓ Branch 1538 → 1541 taken 57 times.
✗ Branch 1539 → 1540 not taken.
✗ Branch 1539 → 1541 not taken.
|
114 |
if (strlen(par)>3 && !stricmp(par+3, ".l")) par[3]=0; |
| 2108 |
9/14
✓ Branch 1463 → 1464 taken 57 times.
✗ Branch 1463 → 2572 not taken.
✓ Branch 1464 → 1465 taken 12 times.
✓ Branch 1464 → 1467 taken 45 times.
✓ Branch 1465 → 1466 taken 12 times.
✗ Branch 1465 → 2572 not taken.
✓ Branch 1466 → 1467 taken 12 times.
✗ Branch 1466 → 1468 not taken.
✓ Branch 1469 → 1470 taken 57 times.
✗ Branch 1469 → 1498 not taken.
✓ Branch 1541 → 1542 taken 12 times.
✓ Branch 1541 → 1543 taken 45 times.
✓ Branch 1542 → 1543 taken 12 times.
✗ Branch 1542 → 1570 not taken.
|
114 |
if (!stricmp(par, "JSL") || !stricmp(par, "JML")) |
| 2109 |
|
|
{ |
| 2110 |
|
114 |
int orgpos=read3(snespos+1); |
| 2111 |
|
114 |
int ratsloc=freespaceorgpos[targetid]; |
| 2112 |
5/6
✓ Branch 1471 → 1472 taken 57 times.
✗ Branch 1471 → 2572 not taken.
✓ Branch 1472 → 1473 taken 45 times.
✓ Branch 1472 → 1474 taken 12 times.
✓ Branch 1544 → 1545 taken 45 times.
✓ Branch 1544 → 1546 taken 12 times.
|
114 |
int firstbyte = ((!stricmp(par, "JSL")) ? 0x22 : 0x5C); |
| 2113 |
|
114 |
int pcpos=snestopc(snespos); |
| 2114 |
8/12
✓ Branch 1476 → 1477 taken 57 times.
✗ Branch 1476 → 1487 not taken.
✓ Branch 1477 → 1478 taken 57 times.
✗ Branch 1477 → 1487 not taken.
✓ Branch 1478 → 1479 taken 24 times.
✓ Branch 1478 → 1487 taken 33 times.
✓ Branch 1548 → 1549 taken 57 times.
✗ Branch 1548 → 1559 not taken.
✓ Branch 1549 → 1550 taken 57 times.
✗ Branch 1549 → 1559 not taken.
✓ Branch 1550 → 1551 taken 24 times.
✓ Branch 1550 → 1559 taken 33 times.
|
114 |
if (/*pass==1 && */pcpos>=0 && pcpos<romlen_r && romdata_r[pcpos]==firstbyte) |
| 2115 |
|
|
{ |
| 2116 |
2/4
✓ Branch 1479 → 1480 taken 24 times.
✗ Branch 1479 → 2572 not taken.
✓ Branch 1551 → 1552 taken 24 times.
✗ Branch 1551 → 2735 not taken.
|
48 |
ratsloc=ratsstart(orgpos)+8; |
| 2117 |
|
48 |
freespaceorglen[targetid]=read2(ratsloc-4)+1; |
| 2118 |
6/8
✓ Branch 1481 → 1482 taken 24 times.
✗ Branch 1481 → 1486 not taken.
✓ Branch 1482 → 1483 taken 8 times.
✓ Branch 1482 → 1486 taken 16 times.
✓ Branch 1553 → 1554 taken 24 times.
✗ Branch 1553 → 1558 not taken.
✓ Branch 1554 → 1555 taken 8 times.
✓ Branch 1554 → 1558 taken 16 times.
|
48 |
if (!freespacestatic[targetid] && pass == 1) |
| 2119 |
|
|
{ |
| 2120 |
6/8
✓ Branch 1484 → 1485 taken 7 times.
✓ Branch 1484 → 1486 taken 1 time.
✓ Branch 1485 → 1486 taken 7 times.
✗ Branch 1485 → 2572 not taken.
✓ Branch 1556 → 1557 taken 7 times.
✓ Branch 1556 → 1558 taken 1 time.
✓ Branch 1557 → 1558 taken 7 times.
✗ Branch 1557 → 2735 not taken.
|
16 |
if (!is_freespace_reused(ratsloc)) removerats(orgpos, freespacebyte[targetid]); |
| 2121 |
|
|
} |
| 2122 |
|
|
} |
| 2123 |
4/4
✓ Branch 1487 → 1488 taken 18 times.
✓ Branch 1487 → 1489 taken 15 times.
✓ Branch 1559 → 1560 taken 18 times.
✓ Branch 1559 → 1561 taken 15 times.
|
66 |
else if (ratsloc<0) ratsloc=0; |
| 2124 |
2/4
✓ Branch 1489 → 1490 taken 57 times.
✗ Branch 1489 → 2572 not taken.
✓ Branch 1561 → 1562 taken 57 times.
✗ Branch 1561 → 2735 not taken.
|
114 |
write1((unsigned int)firstbyte); |
| 2125 |
2/4
✓ Branch 1490 → 1491 taken 57 times.
✗ Branch 1490 → 2572 not taken.
✓ Branch 1562 → 1563 taken 57 times.
✗ Branch 1562 → 2735 not taken.
|
114 |
write3((unsigned int)num); |
| 2126 |
4/4
✓ Branch 1491 → 1492 taken 19 times.
✓ Branch 1491 → 1497 taken 38 times.
✓ Branch 1563 → 1564 taken 19 times.
✓ Branch 1563 → 1569 taken 38 times.
|
114 |
if (pass==2) |
| 2127 |
|
|
{ |
| 2128 |
2/4
✓ Branch 1492 → 1493 taken 19 times.
✗ Branch 1492 → 2572 not taken.
✓ Branch 1564 → 1565 taken 19 times.
✗ Branch 1564 → 2735 not taken.
|
38 |
int start=ratsstart(num); |
| 2129 |
4/8
✓ Branch 1493 → 1494 taken 19 times.
✗ Branch 1493 → 1495 not taken.
✗ Branch 1494 → 1495 not taken.
✓ Branch 1494 → 1496 taken 19 times.
✓ Branch 1565 → 1566 taken 19 times.
✗ Branch 1565 → 1567 not taken.
✗ Branch 1566 → 1567 not taken.
✓ Branch 1566 → 1568 taken 19 times.
|
38 |
if (start>=num || start<0) |
| 2130 |
|
|
{ |
| 2131 |
|
✗ |
asar_throw_error(2, error_type_block, error_id_autoclean_label_at_freespace_end); |
| 2132 |
|
|
} |
| 2133 |
|
|
|
| 2134 |
2/4
✓ Branch 1496 → 1497 taken 19 times.
✗ Branch 1496 → 2572 not taken.
✓ Branch 1568 → 1569 taken 19 times.
✗ Branch 1568 → 2735 not taken.
|
38 |
add_addr_to_line(addrToLinePos); |
| 2135 |
|
|
} |
| 2136 |
|
|
//freespaceorglen[targetid]=read2(ratsloc-4)+1; |
| 2137 |
|
114 |
freespaceorgpos[targetid]=ratsloc; |
| 2138 |
|
57 |
} |
| 2139 |
|
✗ |
else if (!stricmp(par, "dl")) |
| 2140 |
|
|
{ |
| 2141 |
|
✗ |
int orgpos=read3(snespos); |
| 2142 |
|
✗ |
int ratsloc=freespaceorgpos[targetid]; |
| 2143 |
|
✗ |
int start=ratsstart(num); |
| 2144 |
|
✗ |
if (pass==1 && num>=0) |
| 2145 |
|
|
{ |
| 2146 |
|
✗ |
ratsloc=ratsstart(orgpos)+8; |
| 2147 |
|
✗ |
if (!freespacestatic[targetid] && !is_freespace_reused(ratsloc)) removerats(orgpos, freespacebyte[targetid]); |
| 2148 |
|
|
} |
| 2149 |
|
✗ |
else if (!ratsloc) ratsloc=0; |
| 2150 |
|
✗ |
if ((start==num || start<0) && pass==2) |
| 2151 |
|
✗ |
asar_throw_error(2, error_type_block, error_id_autoclean_label_at_freespace_end); |
| 2152 |
|
✗ |
write3((unsigned int)num); |
| 2153 |
|
✗ |
freespaceorgpos[targetid]=ratsloc; |
| 2154 |
|
✗ |
freespaceorglen[targetid]=read2(ratsloc-4)+1; |
| 2155 |
|
|
|
| 2156 |
|
✗ |
add_addr_to_line(addrToLinePos); |
| 2157 |
|
|
} |
| 2158 |
|
✗ |
else asar_throw_error(0, error_type_block, error_id_broken_autoclean); |
| 2159 |
|
114 |
} |
| 2160 |
|
✗ |
else if (pass==0) removerats((int)getnum(word[1]), default_freespacebyte); |
| 2161 |
|
|
} |
| 2162 |
8/12
✓ Branch 1528 → 1529 taken 648 times.
✓ Branch 1528 → 1532 taken 111 times.
✗ Branch 1530 → 1531 not taken.
✓ Branch 1530 → 1532 taken 648 times.
✗ Branch 1533 → 1534 not taken.
✓ Branch 1533 → 1538 taken 759 times.
✓ Branch 1601 → 1602 taken 648 times.
✓ Branch 1601 → 1605 taken 111 times.
✗ Branch 1603 → 1604 not taken.
✓ Branch 1603 → 1605 taken 648 times.
✗ Branch 1606 → 1607 not taken.
✓ Branch 1606 → 1611 taken 759 times.
|
1518 |
else if (is1("freespacebyte")) |
| 2163 |
|
|
{ |
| 2164 |
|
✗ |
default_freespacebyte = getnum(word[1]); |
| 2165 |
|
✗ |
if (foundlabel && !foundlabel_static) asar_throw_error(0, error_type_block, error_id_no_labels_here); |
| 2166 |
|
|
} |
| 2167 |
12/12
✓ Branch 1538 → 1539 taken 75 times.
✓ Branch 1538 → 1542 taken 684 times.
✓ Branch 1540 → 1541 taken 3 times.
✓ Branch 1540 → 1542 taken 72 times.
✓ Branch 1543 → 1544 taken 3 times.
✓ Branch 1543 → 1555 taken 756 times.
✓ Branch 1611 → 1612 taken 75 times.
✓ Branch 1611 → 1615 taken 684 times.
✓ Branch 1613 → 1614 taken 3 times.
✓ Branch 1613 → 1615 taken 72 times.
✓ Branch 1616 → 1617 taken 3 times.
✓ Branch 1616 → 1628 taken 756 times.
|
1518 |
else if (is0("pushpc")) |
| 2168 |
|
|
{ |
| 2169 |
2/8
✗ Branch 1544 → 1545 not taken.
✓ Branch 1544 → 1546 taken 3 times.
✗ Branch 1545 → 1546 not taken.
✗ Branch 1545 → 2652 not taken.
✗ Branch 1617 → 1618 not taken.
✓ Branch 1617 → 1619 taken 3 times.
✗ Branch 1618 → 1619 not taken.
✗ Branch 1618 → 2849 not taken.
|
6 |
if (emulatexkas) asar_throw_warning(0, warning_id_convert_to_asar); |
| 2170 |
2/4
✓ Branch 1546 → 1547 taken 3 times.
✗ Branch 1546 → 2652 not taken.
✓ Branch 1619 → 1620 taken 3 times.
✗ Branch 1619 → 2849 not taken.
|
6 |
pushpc[pushpcnum].arch=arch; |
| 2171 |
2/4
✓ Branch 1547 → 1548 taken 3 times.
✗ Branch 1547 → 2652 not taken.
✓ Branch 1620 → 1621 taken 3 times.
✗ Branch 1620 → 2849 not taken.
|
6 |
pushpc[pushpcnum].snespos=snespos; |
| 2172 |
2/4
✓ Branch 1548 → 1549 taken 3 times.
✗ Branch 1548 → 2652 not taken.
✓ Branch 1621 → 1622 taken 3 times.
✗ Branch 1621 → 2849 not taken.
|
6 |
pushpc[pushpcnum].snesstart=startpos; |
| 2173 |
2/4
✓ Branch 1549 → 1550 taken 3 times.
✗ Branch 1549 → 2652 not taken.
✓ Branch 1622 → 1623 taken 3 times.
✗ Branch 1622 → 2849 not taken.
|
6 |
pushpc[pushpcnum].snesposreal=realsnespos; |
| 2174 |
2/4
✓ Branch 1550 → 1551 taken 3 times.
✗ Branch 1550 → 2652 not taken.
✓ Branch 1623 → 1624 taken 3 times.
✗ Branch 1623 → 2849 not taken.
|
6 |
pushpc[pushpcnum].snesstartreal=realstartpos; |
| 2175 |
2/4
✓ Branch 1551 → 1552 taken 3 times.
✗ Branch 1551 → 2652 not taken.
✓ Branch 1624 → 1625 taken 3 times.
✗ Branch 1624 → 2849 not taken.
|
6 |
pushpc[pushpcnum].freeid=freespaceid; |
| 2176 |
2/4
✓ Branch 1552 → 1553 taken 3 times.
✗ Branch 1552 → 2652 not taken.
✓ Branch 1625 → 1626 taken 3 times.
✗ Branch 1625 → 2849 not taken.
|
6 |
pushpc[pushpcnum].freeex=freespaceextra; |
| 2177 |
2/4
✓ Branch 1553 → 1554 taken 3 times.
✗ Branch 1553 → 2652 not taken.
✓ Branch 1626 → 1627 taken 3 times.
✗ Branch 1626 → 2849 not taken.
|
6 |
pushpc[pushpcnum].freest=freespacestart; |
| 2178 |
|
6 |
pushpcnum++; |
| 2179 |
|
6 |
snespos=(int)0xFFFFFFFF; |
| 2180 |
|
6 |
startpos= (int)0xFFFFFFFF; |
| 2181 |
|
6 |
realsnespos= (int)0xFFFFFFFF; |
| 2182 |
|
6 |
realstartpos= (int)0xFFFFFFFF; |
| 2183 |
|
|
} |
| 2184 |
12/12
✓ Branch 1555 → 1556 taken 72 times.
✓ Branch 1555 → 1559 taken 684 times.
✓ Branch 1557 → 1558 taken 3 times.
✓ Branch 1557 → 1559 taken 69 times.
✓ Branch 1560 → 1561 taken 3 times.
✓ Branch 1560 → 1575 taken 753 times.
✓ Branch 1628 → 1629 taken 72 times.
✓ Branch 1628 → 1632 taken 684 times.
✓ Branch 1630 → 1631 taken 3 times.
✓ Branch 1630 → 1632 taken 69 times.
✓ Branch 1633 → 1634 taken 3 times.
✓ Branch 1633 → 1648 taken 753 times.
|
1512 |
else if (is0("pullpc")) |
| 2185 |
|
|
{ |
| 2186 |
2/8
✗ Branch 1561 → 1562 not taken.
✓ Branch 1561 → 1563 taken 3 times.
✗ Branch 1562 → 1563 not taken.
✗ Branch 1562 → 2652 not taken.
✗ Branch 1634 → 1635 not taken.
✓ Branch 1634 → 1636 taken 3 times.
✗ Branch 1635 → 1636 not taken.
✗ Branch 1635 → 2849 not taken.
|
6 |
if (!pushpcnum) asar_throw_error(0, error_type_block, error_id_pullpc_without_pushpc); |
| 2187 |
|
6 |
pushpcnum--; |
| 2188 |
|
6 |
freespaceend(); |
| 2189 |
4/12
✓ Branch 1564 → 1565 taken 3 times.
✗ Branch 1564 → 2652 not taken.
✗ Branch 1565 → 1566 not taken.
✓ Branch 1565 → 1567 taken 3 times.
✗ Branch 1566 → 1567 not taken.
✗ Branch 1566 → 2652 not taken.
✓ Branch 1637 → 1638 taken 3 times.
✗ Branch 1637 → 2849 not taken.
✗ Branch 1638 → 1639 not taken.
✓ Branch 1638 → 1640 taken 3 times.
✗ Branch 1639 → 1640 not taken.
✗ Branch 1639 → 2849 not taken.
|
6 |
if (arch != pushpc[pushpcnum].arch) asar_throw_error(0, error_type_block, error_id_pullpc_different_arch); |
| 2190 |
2/4
✓ Branch 1567 → 1568 taken 3 times.
✗ Branch 1567 → 2652 not taken.
✓ Branch 1640 → 1641 taken 3 times.
✗ Branch 1640 → 2849 not taken.
|
6 |
snespos=pushpc[pushpcnum].snespos; |
| 2191 |
2/4
✓ Branch 1568 → 1569 taken 3 times.
✗ Branch 1568 → 2652 not taken.
✓ Branch 1641 → 1642 taken 3 times.
✗ Branch 1641 → 2849 not taken.
|
6 |
startpos=pushpc[pushpcnum].snesstart; |
| 2192 |
2/4
✓ Branch 1569 → 1570 taken 3 times.
✗ Branch 1569 → 2652 not taken.
✓ Branch 1642 → 1643 taken 3 times.
✗ Branch 1642 → 2849 not taken.
|
6 |
realsnespos=pushpc[pushpcnum].snesposreal; |
| 2193 |
2/4
✓ Branch 1570 → 1571 taken 3 times.
✗ Branch 1570 → 2652 not taken.
✓ Branch 1643 → 1644 taken 3 times.
✗ Branch 1643 → 2849 not taken.
|
6 |
realstartpos=pushpc[pushpcnum].snesstartreal; |
| 2194 |
2/4
✓ Branch 1571 → 1572 taken 3 times.
✗ Branch 1571 → 2652 not taken.
✓ Branch 1644 → 1645 taken 3 times.
✗ Branch 1644 → 2849 not taken.
|
6 |
freespaceid=pushpc[pushpcnum].freeid; |
| 2195 |
2/4
✓ Branch 1572 → 1573 taken 3 times.
✗ Branch 1572 → 2652 not taken.
✓ Branch 1645 → 1646 taken 3 times.
✗ Branch 1645 → 2849 not taken.
|
6 |
freespaceextra=pushpc[pushpcnum].freeex; |
| 2196 |
2/4
✓ Branch 1573 → 1574 taken 3 times.
✗ Branch 1573 → 2652 not taken.
✓ Branch 1646 → 1647 taken 3 times.
✗ Branch 1646 → 2849 not taken.
|
6 |
freespacestart=pushpc[pushpcnum].freest; |
| 2197 |
|
|
} |
| 2198 |
12/12
✓ Branch 1575 → 1576 taken 69 times.
✓ Branch 1575 → 1579 taken 684 times.
✓ Branch 1577 → 1578 taken 3 times.
✓ Branch 1577 → 1579 taken 66 times.
✓ Branch 1580 → 1581 taken 3 times.
✓ Branch 1580 → 1585 taken 750 times.
✓ Branch 1648 → 1649 taken 69 times.
✓ Branch 1648 → 1652 taken 684 times.
✓ Branch 1650 → 1651 taken 3 times.
✓ Branch 1650 → 1652 taken 66 times.
✓ Branch 1653 → 1654 taken 3 times.
✓ Branch 1653 → 1658 taken 750 times.
|
1506 |
else if (is0("pushbase")) |
| 2199 |
|
|
{ |
| 2200 |
2/8
✗ Branch 1581 → 1582 not taken.
✓ Branch 1581 → 1583 taken 3 times.
✗ Branch 1582 → 1583 not taken.
✗ Branch 1582 → 2652 not taken.
✗ Branch 1654 → 1655 not taken.
✓ Branch 1654 → 1656 taken 3 times.
✗ Branch 1655 → 1656 not taken.
✗ Branch 1655 → 2849 not taken.
|
6 |
if (emulatexkas) asar_throw_warning(0, warning_id_convert_to_asar); |
| 2201 |
2/4
✓ Branch 1583 → 1584 taken 3 times.
✗ Branch 1583 → 2652 not taken.
✓ Branch 1656 → 1657 taken 3 times.
✗ Branch 1656 → 2849 not taken.
|
6 |
basestack[basestacknum] = snespos; |
| 2202 |
|
6 |
basestacknum++; |
| 2203 |
|
|
} |
| 2204 |
12/12
✓ Branch 1585 → 1586 taken 66 times.
✓ Branch 1585 → 1589 taken 684 times.
✓ Branch 1587 → 1588 taken 3 times.
✓ Branch 1587 → 1589 taken 63 times.
✓ Branch 1590 → 1591 taken 3 times.
✓ Branch 1590 → 1597 taken 747 times.
✓ Branch 1658 → 1659 taken 66 times.
✓ Branch 1658 → 1662 taken 684 times.
✓ Branch 1660 → 1661 taken 3 times.
✓ Branch 1660 → 1662 taken 63 times.
✓ Branch 1663 → 1664 taken 3 times.
✓ Branch 1663 → 1670 taken 747 times.
|
1500 |
else if (is0("pullbase")) |
| 2205 |
|
|
{ |
| 2206 |
2/8
✗ Branch 1591 → 1592 not taken.
✓ Branch 1591 → 1593 taken 3 times.
✗ Branch 1592 → 1593 not taken.
✗ Branch 1592 → 2652 not taken.
✗ Branch 1664 → 1665 not taken.
✓ Branch 1664 → 1666 taken 3 times.
✗ Branch 1665 → 1666 not taken.
✗ Branch 1665 → 2849 not taken.
|
6 |
if (!basestacknum) asar_throw_error(0, error_type_block, error_id_pullbase_without_pushbase); |
| 2207 |
|
6 |
basestacknum--; |
| 2208 |
2/4
✓ Branch 1593 → 1594 taken 3 times.
✗ Branch 1593 → 2652 not taken.
✓ Branch 1666 → 1667 taken 3 times.
✗ Branch 1666 → 2849 not taken.
|
6 |
snespos = basestack[basestacknum]; |
| 2209 |
2/4
✓ Branch 1594 → 1595 taken 3 times.
✗ Branch 1594 → 2652 not taken.
✓ Branch 1667 → 1668 taken 3 times.
✗ Branch 1667 → 2849 not taken.
|
6 |
startpos = basestack[basestacknum]; |
| 2210 |
|
|
|
| 2211 |
2/4
✓ Branch 1595 → 1596 taken 3 times.
✗ Branch 1595 → 2365 not taken.
✓ Branch 1668 → 1669 taken 3 times.
✗ Branch 1668 → 2456 not taken.
|
6 |
if (snespos != realstartpos) |
| 2212 |
|
|
{ |
| 2213 |
|
6 |
optimizeforbank = -1; |
| 2214 |
|
|
} |
| 2215 |
|
|
} |
| 2216 |
12/12
✓ Branch 1597 → 1598 taken 63 times.
✓ Branch 1597 → 1601 taken 684 times.
✓ Branch 1599 → 1600 taken 6 times.
✓ Branch 1599 → 1601 taken 57 times.
✓ Branch 1602 → 1603 taken 6 times.
✓ Branch 1602 → 1617 taken 741 times.
✓ Branch 1670 → 1671 taken 63 times.
✓ Branch 1670 → 1674 taken 684 times.
✓ Branch 1672 → 1673 taken 6 times.
✓ Branch 1672 → 1674 taken 57 times.
✓ Branch 1675 → 1676 taken 6 times.
✓ Branch 1675 → 1690 taken 741 times.
|
1494 |
else if (is0("pushns")) |
| 2217 |
|
|
{ |
| 2218 |
2/8
✗ Branch 1603 → 1604 not taken.
✓ Branch 1603 → 1605 taken 6 times.
✗ Branch 1604 → 1605 not taken.
✗ Branch 1604 → 2652 not taken.
✗ Branch 1676 → 1677 not taken.
✓ Branch 1676 → 1678 taken 6 times.
✗ Branch 1677 → 1678 not taken.
✗ Branch 1677 → 2849 not taken.
|
12 |
if(in_spcblock) asar_throw_error(0, error_type_block, error_id_feature_unavaliable_in_spcblock); |
| 2219 |
4/8
✓ Branch 1605 → 1606 taken 6 times.
✗ Branch 1605 → 2652 not taken.
✓ Branch 1606 → 1607 taken 6 times.
✗ Branch 1606 → 2652 not taken.
✓ Branch 1678 → 1679 taken 6 times.
✗ Branch 1678 → 2849 not taken.
✓ Branch 1679 → 1680 taken 6 times.
✗ Branch 1679 → 2849 not taken.
|
12 |
pushns[pushnsnum].ns = ns; |
| 2220 |
4/4
✓ Branch 1612 → 1608 taken 6 times.
✓ Branch 1612 → 1613 taken 6 times.
✓ Branch 1685 → 1681 taken 6 times.
✓ Branch 1685 → 1686 taken 6 times.
|
24 |
for(int i = 0; i < namespace_list.count; i++) |
| 2221 |
|
|
{ |
| 2222 |
6/12
✓ Branch 1608 → 1609 taken 6 times.
✗ Branch 1608 → 2652 not taken.
✓ Branch 1609 → 1610 taken 6 times.
✗ Branch 1609 → 2652 not taken.
✓ Branch 1610 → 1611 taken 6 times.
✗ Branch 1610 → 2652 not taken.
✓ Branch 1681 → 1682 taken 6 times.
✗ Branch 1681 → 2849 not taken.
✓ Branch 1682 → 1683 taken 6 times.
✗ Branch 1682 → 2849 not taken.
✓ Branch 1683 → 1684 taken 6 times.
✗ Branch 1683 → 2849 not taken.
|
12 |
pushns[pushnsnum].namespace_list.append(namespace_list[i]); |
| 2223 |
|
|
} |
| 2224 |
2/4
✓ Branch 1613 → 1614 taken 6 times.
✗ Branch 1613 → 2652 not taken.
✓ Branch 1686 → 1687 taken 6 times.
✗ Branch 1686 → 2849 not taken.
|
12 |
pushns[pushnsnum].nested_namespaces = nested_namespaces; |
| 2225 |
|
12 |
pushnsnum++; |
| 2226 |
|
|
|
| 2227 |
2/4
✓ Branch 1614 → 1615 taken 6 times.
✗ Branch 1614 → 2652 not taken.
✓ Branch 1687 → 1688 taken 6 times.
✗ Branch 1687 → 2849 not taken.
|
12 |
namespace_list.reset(); |
| 2228 |
2/4
✓ Branch 1615 → 1616 taken 6 times.
✗ Branch 1615 → 2652 not taken.
✓ Branch 1688 → 1689 taken 6 times.
✗ Branch 1688 → 2849 not taken.
|
12 |
ns = ""; |
| 2229 |
|
12 |
nested_namespaces = false; |
| 2230 |
|
|
} |
| 2231 |
12/12
✓ Branch 1617 → 1618 taken 57 times.
✓ Branch 1617 → 1621 taken 684 times.
✓ Branch 1619 → 1620 taken 6 times.
✓ Branch 1619 → 1621 taken 51 times.
✓ Branch 1622 → 1623 taken 6 times.
✓ Branch 1622 → 1638 taken 735 times.
✓ Branch 1690 → 1691 taken 57 times.
✓ Branch 1690 → 1694 taken 684 times.
✓ Branch 1692 → 1693 taken 6 times.
✓ Branch 1692 → 1694 taken 51 times.
✓ Branch 1695 → 1696 taken 6 times.
✓ Branch 1695 → 1711 taken 735 times.
|
1482 |
else if (is0("pullns")) |
| 2232 |
|
|
{ |
| 2233 |
2/8
✗ Branch 1623 → 1624 not taken.
✓ Branch 1623 → 1625 taken 6 times.
✗ Branch 1624 → 1625 not taken.
✗ Branch 1624 → 2652 not taken.
✗ Branch 1696 → 1697 not taken.
✓ Branch 1696 → 1698 taken 6 times.
✗ Branch 1697 → 1698 not taken.
✗ Branch 1697 → 2849 not taken.
|
12 |
if(in_spcblock) asar_throw_error(0, error_type_block, error_id_feature_unavaliable_in_spcblock); |
| 2234 |
2/8
✗ Branch 1625 → 1626 not taken.
✓ Branch 1625 → 1627 taken 6 times.
✗ Branch 1626 → 1627 not taken.
✗ Branch 1626 → 2652 not taken.
✗ Branch 1698 → 1699 not taken.
✓ Branch 1698 → 1700 taken 6 times.
✗ Branch 1699 → 1700 not taken.
✗ Branch 1699 → 2849 not taken.
|
12 |
if (!pushnsnum) asar_throw_error(0, error_type_block, error_id_pullns_without_pushns); |
| 2235 |
|
12 |
pushnsnum--; |
| 2236 |
4/8
✓ Branch 1627 → 1628 taken 6 times.
✗ Branch 1627 → 2652 not taken.
✓ Branch 1628 → 1629 taken 6 times.
✗ Branch 1628 → 2652 not taken.
✓ Branch 1700 → 1701 taken 6 times.
✗ Branch 1700 → 2849 not taken.
✓ Branch 1701 → 1702 taken 6 times.
✗ Branch 1701 → 2849 not taken.
|
12 |
ns = pushns[pushnsnum].ns; |
| 2237 |
2/4
✓ Branch 1629 → 1630 taken 6 times.
✗ Branch 1629 → 2652 not taken.
✓ Branch 1702 → 1703 taken 6 times.
✗ Branch 1702 → 2849 not taken.
|
12 |
nested_namespaces = pushns[pushnsnum].nested_namespaces; |
| 2238 |
2/4
✓ Branch 1630 → 1631 taken 6 times.
✗ Branch 1630 → 2652 not taken.
✓ Branch 1703 → 1704 taken 6 times.
✗ Branch 1703 → 2849 not taken.
|
12 |
namespace_list.reset(); |
| 2239 |
6/8
✓ Branch 1636 → 1637 taken 18 times.
✗ Branch 1636 → 2652 not taken.
✓ Branch 1637 → 1632 taken 12 times.
✓ Branch 1637 → 2365 taken 6 times.
✓ Branch 1709 → 1710 taken 18 times.
✗ Branch 1709 → 2849 not taken.
✓ Branch 1710 → 1705 taken 12 times.
✓ Branch 1710 → 2456 taken 6 times.
|
36 |
for(int i = 0; i < pushns[pushnsnum].namespace_list.count; i++) |
| 2240 |
|
|
{ |
| 2241 |
6/12
✓ Branch 1632 → 1633 taken 12 times.
✗ Branch 1632 → 2652 not taken.
✓ Branch 1633 → 1634 taken 12 times.
✗ Branch 1633 → 2652 not taken.
✓ Branch 1634 → 1635 taken 12 times.
✗ Branch 1634 → 2652 not taken.
✓ Branch 1705 → 1706 taken 12 times.
✗ Branch 1705 → 2849 not taken.
✓ Branch 1706 → 1707 taken 12 times.
✗ Branch 1706 → 2849 not taken.
✓ Branch 1707 → 1708 taken 12 times.
✗ Branch 1707 → 2849 not taken.
|
24 |
namespace_list.append(pushns[pushnsnum].namespace_list[i]); |
| 2242 |
|
|
} |
| 2243 |
|
|
} |
| 2244 |
18/20
✓ Branch 1638 → 1639 taken 648 times.
✓ Branch 1638 → 1641 taken 87 times.
✓ Branch 1640 → 1641 taken 585 times.
✓ Branch 1640 → 1644 taken 63 times.
✓ Branch 1641 → 1642 taken 18 times.
✓ Branch 1641 → 1645 taken 654 times.
✓ Branch 1643 → 1644 taken 18 times.
✗ Branch 1643 → 1645 not taken.
✓ Branch 1646 → 1647 taken 81 times.
✓ Branch 1646 → 1691 taken 654 times.
✓ Branch 1711 → 1712 taken 648 times.
✓ Branch 1711 → 1714 taken 87 times.
✓ Branch 1713 → 1714 taken 585 times.
✓ Branch 1713 → 1717 taken 63 times.
✓ Branch 1714 → 1715 taken 18 times.
✓ Branch 1714 → 1718 taken 654 times.
✓ Branch 1716 → 1717 taken 18 times.
✗ Branch 1716 → 1718 not taken.
✓ Branch 1719 → 1720 taken 81 times.
✓ Branch 1719 → 1763 taken 654 times.
|
1470 |
else if (is1("namespace") || is2("namespace")) |
| 2245 |
|
|
{ |
| 2246 |
2/8
✗ Branch 1647 → 1648 not taken.
✓ Branch 1647 → 1649 taken 81 times.
✗ Branch 1648 → 1649 not taken.
✗ Branch 1648 → 2652 not taken.
✗ Branch 1720 → 1721 not taken.
✓ Branch 1720 → 1722 taken 81 times.
✗ Branch 1721 → 1722 not taken.
✗ Branch 1721 → 2849 not taken.
|
162 |
if(in_spcblock) asar_throw_error(0, error_type_block, error_id_feature_unavaliable_in_spcblock); |
| 2247 |
|
162 |
bool leave = false; |
| 2248 |
2/4
✓ Branch 1649 → 1650 taken 81 times.
✗ Branch 1649 → 1677 not taken.
✓ Branch 1722 → 1723 taken 81 times.
✗ Branch 1722 → 1747 not taken.
|
162 |
if (par) |
| 2249 |
|
|
{ |
| 2250 |
5/6
✓ Branch 1650 → 1651 taken 81 times.
✗ Branch 1650 → 2652 not taken.
✓ Branch 1651 → 1652 taken 24 times.
✓ Branch 1651 → 1655 taken 57 times.
✓ Branch 1723 → 1724 taken 24 times.
✓ Branch 1723 → 1727 taken 57 times.
|
162 |
if (!stricmp(par, "off")) |
| 2251 |
|
|
{ |
| 2252 |
2/8
✗ Branch 1652 → 1653 not taken.
✓ Branch 1652 → 1654 taken 24 times.
✗ Branch 1653 → 1654 not taken.
✗ Branch 1653 → 2652 not taken.
✗ Branch 1724 → 1725 not taken.
✓ Branch 1724 → 1726 taken 24 times.
✗ Branch 1725 → 1726 not taken.
✗ Branch 1725 → 2849 not taken.
|
48 |
if (word[2]) asar_throw_error(0, error_type_block, error_id_invalid_namespace_use); |
| 2253 |
|
48 |
leave = true; |
| 2254 |
|
|
} |
| 2255 |
5/6
✓ Branch 1655 → 1656 taken 57 times.
✗ Branch 1655 → 2652 not taken.
✓ Branch 1656 → 1657 taken 18 times.
✓ Branch 1656 → 1665 taken 39 times.
✓ Branch 1727 → 1728 taken 18 times.
✓ Branch 1727 → 1734 taken 39 times.
|
114 |
else if (!stricmp(par, "nested")) |
| 2256 |
|
|
{ |
| 2257 |
2/8
✗ Branch 1657 → 1658 not taken.
✓ Branch 1657 → 1659 taken 18 times.
✗ Branch 1658 → 1678 not taken.
✗ Branch 1658 → 2652 not taken.
✗ Branch 1728 → 1729 not taken.
✓ Branch 1728 → 1730 taken 18 times.
✗ Branch 1729 → 1748 not taken.
✗ Branch 1729 → 2849 not taken.
|
36 |
if (!word[2]) asar_throw_error(0, error_type_block, error_id_invalid_namespace_use); |
| 2258 |
5/6
✓ Branch 1659 → 1660 taken 18 times.
✗ Branch 1659 → 2652 not taken.
✓ Branch 1660 → 1661 taken 9 times.
✓ Branch 1660 → 1662 taken 9 times.
✓ Branch 1730 → 1731 taken 9 times.
✓ Branch 1730 → 1732 taken 9 times.
|
36 |
else if (!stricmp(word[2], "on")) nested_namespaces = true; |
| 2259 |
3/6
✓ Branch 1662 → 1663 taken 9 times.
✗ Branch 1662 → 2652 not taken.
✓ Branch 1663 → 1664 taken 9 times.
✗ Branch 1663 → 1678 not taken.
✓ Branch 1732 → 1733 taken 9 times.
✗ Branch 1732 → 1748 not taken.
|
18 |
else if (!stricmp(word[2], "off")) nested_namespaces = false; |
| 2260 |
|
|
} |
| 2261 |
|
|
else |
| 2262 |
|
|
{ |
| 2263 |
2/8
✗ Branch 1665 → 1666 not taken.
✓ Branch 1665 → 1667 taken 39 times.
✗ Branch 1666 → 1667 not taken.
✗ Branch 1666 → 2652 not taken.
✗ Branch 1734 → 1735 not taken.
✓ Branch 1734 → 1736 taken 39 times.
✗ Branch 1735 → 1736 not taken.
✗ Branch 1735 → 2849 not taken.
|
78 |
if (word[2]) asar_throw_error(0, error_type_block, error_id_invalid_namespace_use); |
| 2264 |
2/4
✓ Branch 1667 → 1668 taken 39 times.
✗ Branch 1667 → 2652 not taken.
✓ Branch 1736 → 1737 taken 39 times.
✗ Branch 1736 → 2849 not taken.
|
78 |
const char * tmpstr= safedequote(par); |
| 2265 |
2/8
✗ Branch 1669 → 1670 not taken.
✓ Branch 1669 → 1671 taken 39 times.
✗ Branch 1670 → 1671 not taken.
✗ Branch 1670 → 2652 not taken.
✗ Branch 1738 → 1739 not taken.
✓ Branch 1738 → 1740 taken 39 times.
✗ Branch 1739 → 1740 not taken.
✗ Branch 1739 → 2849 not taken.
|
78 |
if (!confirmname(tmpstr)) asar_throw_error(0, error_type_block, error_id_invalid_namespace_name); |
| 2266 |
4/4
✓ Branch 1671 → 1672 taken 15 times.
✓ Branch 1671 → 1673 taken 24 times.
✓ Branch 1740 → 1741 taken 15 times.
✓ Branch 1740 → 1742 taken 24 times.
|
78 |
if (!nested_namespaces) |
| 2267 |
|
|
{ |
| 2268 |
2/4
✓ Branch 1672 → 1673 taken 15 times.
✗ Branch 1672 → 2652 not taken.
✓ Branch 1741 → 1742 taken 15 times.
✗ Branch 1741 → 2849 not taken.
|
30 |
namespace_list.reset(); |
| 2269 |
|
|
} |
| 2270 |
4/8
✓ Branch 1673 → 1674 taken 39 times.
✗ Branch 1673 → 2577 not taken.
✓ Branch 1674 → 1675 taken 39 times.
✗ Branch 1674 → 2575 not taken.
✓ Branch 1743 → 1744 taken 39 times.
✗ Branch 1743 → 2743 not taken.
✓ Branch 1744 → 1745 taken 39 times.
✗ Branch 1744 → 2741 not taken.
|
78 |
namespace_list.append(STR tmpstr); |
| 2271 |
|
|
} |
| 2272 |
|
|
} |
| 2273 |
|
|
else |
| 2274 |
|
|
{ |
| 2275 |
|
✗ |
leave = true; |
| 2276 |
|
|
} |
| 2277 |
|
|
|
| 2278 |
4/4
✓ Branch 1678 → 1679 taken 24 times.
✓ Branch 1678 → 1682 taken 57 times.
✓ Branch 1748 → 1749 taken 24 times.
✓ Branch 1748 → 1752 taken 57 times.
|
162 |
if (leave) |
| 2279 |
|
|
{ |
| 2280 |
4/4
✓ Branch 1679 → 1680 taken 18 times.
✓ Branch 1679 → 1681 taken 6 times.
✓ Branch 1749 → 1750 taken 18 times.
✓ Branch 1749 → 1751 taken 6 times.
|
48 |
if (nested_namespaces) |
| 2281 |
|
|
{ |
| 2282 |
2/4
✓ Branch 1680 → 1682 taken 18 times.
✗ Branch 1680 → 2652 not taken.
✓ Branch 1750 → 1752 taken 18 times.
✗ Branch 1750 → 2849 not taken.
|
36 |
namespace_list.remove(namespace_list.count - 1); |
| 2283 |
|
|
} |
| 2284 |
|
|
else |
| 2285 |
|
|
{ |
| 2286 |
2/4
✓ Branch 1681 → 1682 taken 6 times.
✗ Branch 1681 → 2652 not taken.
✓ Branch 1751 → 1752 taken 6 times.
✗ Branch 1751 → 2849 not taken.
|
12 |
namespace_list.reset(); |
| 2287 |
|
|
} |
| 2288 |
|
|
} |
| 2289 |
|
|
|
| 2290 |
|
|
// recompute ns |
| 2291 |
2/4
✓ Branch 1682 → 1683 taken 81 times.
✗ Branch 1682 → 2652 not taken.
✓ Branch 1752 → 1753 taken 81 times.
✗ Branch 1752 → 2849 not taken.
|
162 |
ns = ""; |
| 2292 |
4/4
✓ Branch 1690 → 1684 taken 96 times.
✓ Branch 1690 → 2365 taken 81 times.
✓ Branch 1762 → 1754 taken 96 times.
✓ Branch 1762 → 2456 taken 81 times.
|
354 |
for (int i = 0; i < namespace_list.count; i++) |
| 2293 |
|
|
{ |
| 2294 |
4/8
✓ Branch 1684 → 1685 taken 96 times.
✗ Branch 1684 → 2652 not taken.
✓ Branch 1685 → 1686 taken 96 times.
✗ Branch 1685 → 2652 not taken.
✓ Branch 1754 → 1755 taken 96 times.
✗ Branch 1754 → 2849 not taken.
✓ Branch 1755 → 1756 taken 96 times.
✗ Branch 1755 → 2849 not taken.
|
192 |
ns += namespace_list[i]; |
| 2295 |
4/8
✓ Branch 1686 → 1687 taken 96 times.
✗ Branch 1686 → 2580 not taken.
✓ Branch 1687 → 1688 taken 96 times.
✗ Branch 1687 → 2578 not taken.
✓ Branch 1757 → 1758 taken 96 times.
✗ Branch 1757 → 2747 not taken.
✓ Branch 1758 → 1759 taken 96 times.
✗ Branch 1758 → 2745 not taken.
|
192 |
ns += STR"_"; |
| 2296 |
|
|
} |
| 2297 |
|
|
} |
| 2298 |
8/12
✓ Branch 1691 → 1692 taken 585 times.
✓ Branch 1691 → 1695 taken 69 times.
✗ Branch 1693 → 1694 not taken.
✓ Branch 1693 → 1695 taken 585 times.
✗ Branch 1696 → 1697 not taken.
✓ Branch 1696 → 1725 taken 654 times.
✓ Branch 1763 → 1764 taken 585 times.
✓ Branch 1763 → 1767 taken 69 times.
✗ Branch 1765 → 1766 not taken.
✓ Branch 1765 → 1767 taken 585 times.
✗ Branch 1768 → 1769 not taken.
✓ Branch 1768 → 1803 taken 654 times.
|
1308 |
else if (is1("warnpc")) |
| 2299 |
|
|
{ |
| 2300 |
|
✗ |
asar_throw_warning(0, warning_id_feature_deprecated, "warnpc", "use \"assert pc() <= $xxxxxx\" instead"); |
| 2301 |
|
✗ |
unsigned int maxpos=getnum(par); |
| 2302 |
|
✗ |
if ((unsigned int)snespos & 0xFF000000) asar_throw_error(0, error_type_block, error_id_warnpc_in_freespace); |
| 2303 |
|
✗ |
if ((unsigned int)maxpos & 0xFF000000) asar_throw_error(0, error_type_block, error_id_warnpc_broken_param); |
| 2304 |
|
✗ |
if ((unsigned int)snespos > maxpos) asar_throw_error(0, error_type_block, error_id_warnpc_failed, hex6((unsigned int)snespos).data(), hex6((unsigned int)maxpos).data()); |
| 2305 |
|
✗ |
if (warnxkas && (unsigned int)snespos == maxpos) asar_throw_warning(0, warning_id_xkas_warnpc_relaxed); |
| 2306 |
|
✗ |
if (emulatexkas && (unsigned int)snespos==maxpos) asar_throw_error(0, error_type_block, error_id_warnpc_failed_equal, hex6((unsigned int)snespos).data(), hex6((unsigned int)maxpos).data()); |
| 2307 |
|
|
} |
| 2308 |
12/12
✓ Branch 1725 → 1726 taken 585 times.
✓ Branch 1725 → 1729 taken 69 times.
✓ Branch 1727 → 1728 taken 15 times.
✓ Branch 1727 → 1729 taken 570 times.
✓ Branch 1730 → 1731 taken 15 times.
✓ Branch 1730 → 1746 taken 639 times.
✓ Branch 1803 → 1804 taken 585 times.
✓ Branch 1803 → 1807 taken 69 times.
✓ Branch 1805 → 1806 taken 15 times.
✓ Branch 1805 → 1807 taken 570 times.
✓ Branch 1808 → 1809 taken 15 times.
✓ Branch 1808 → 1824 taken 639 times.
|
1308 |
else if (is1("rep")) |
| 2309 |
|
|
{ |
| 2310 |
4/4
✓ Branch 1731 → 1732 taken 12 times.
✓ Branch 1731 → 2652 taken 3 times.
✓ Branch 1809 → 1810 taken 12 times.
✓ Branch 1809 → 2849 taken 3 times.
|
30 |
int rep = (int)getnum64(par); |
| 2311 |
2/8
✗ Branch 1732 → 1733 not taken.
✓ Branch 1732 → 1734 taken 12 times.
✗ Branch 1733 → 1734 not taken.
✗ Branch 1733 → 2652 not taken.
✗ Branch 1810 → 1811 not taken.
✓ Branch 1810 → 1812 taken 12 times.
✗ Branch 1811 → 1812 not taken.
✗ Branch 1811 → 2849 not taken.
|
24 |
if (foundlabel) asar_throw_error(0, error_type_block, error_id_rep_label); |
| 2312 |
4/4
✓ Branch 1734 → 1735 taken 9 times.
✓ Branch 1734 → 1744 taken 3 times.
✓ Branch 1812 → 1813 taken 9 times.
✓ Branch 1812 → 1822 taken 3 times.
|
24 |
if (rep<=1) |
| 2313 |
|
|
{ |
| 2314 |
4/4
✓ Branch 1735 → 1736 taken 3 times.
✓ Branch 1735 → 1737 taken 6 times.
✓ Branch 1813 → 1814 taken 3 times.
✓ Branch 1813 → 1815 taken 6 times.
|
18 |
if(rep < 0){ |
| 2315 |
2/4
✓ Branch 1736 → 1737 taken 3 times.
✗ Branch 1736 → 2652 not taken.
✓ Branch 1814 → 1815 taken 3 times.
✗ Branch 1814 → 2849 not taken.
|
6 |
asar_throw_warning(0, warning_id_feature_deprecated, "rep condition < 0", "You probably want conditionals"); |
| 2316 |
|
|
} |
| 2317 |
2/4
✓ Branch 1737 → 1738 taken 9 times.
✗ Branch 1737 → 1744 not taken.
✓ Branch 1815 → 1816 taken 9 times.
✗ Branch 1815 → 1822 not taken.
|
18 |
if (emulatexkas) |
| 2318 |
|
|
{ |
| 2319 |
2/4
✓ Branch 1738 → 1739 taken 9 times.
✗ Branch 1738 → 2652 not taken.
✓ Branch 1816 → 1817 taken 9 times.
✗ Branch 1816 → 2849 not taken.
|
18 |
asar_throw_warning(0, warning_id_feature_deprecated, "rep <= 1 xkas behaviour", "You probably want conditionals"); |
| 2320 |
4/4
✓ Branch 1739 → 1740 taken 3 times.
✓ Branch 1739 → 1741 taken 6 times.
✓ Branch 1817 → 1818 taken 3 times.
✓ Branch 1817 → 1819 taken 6 times.
|
18 |
if (rep==0) rep=1; |
| 2321 |
4/4
✓ Branch 1741 → 1742 taken 3 times.
✓ Branch 1741 → 1743 taken 6 times.
✓ Branch 1819 → 1820 taken 3 times.
✓ Branch 1819 → 1821 taken 6 times.
|
18 |
if (rep<0) rep=0; |
| 2322 |
|
18 |
repeatnext=rep; |
| 2323 |
|
18 |
return; |
| 2324 |
|
|
} |
| 2325 |
|
|
} |
| 2326 |
2/4
✓ Branch 1744 → 1745 taken 3 times.
✗ Branch 1744 → 2652 not taken.
✓ Branch 1822 → 1823 taken 3 times.
✗ Branch 1822 → 2849 not taken.
|
6 |
asar_throw_warning(0, warning_id_feature_deprecated, "rep X : {command}", "Use while loops, unrolled loops, pseudo opcodes or for loops"); |
| 2327 |
|
6 |
repeatnext=rep; |
| 2328 |
|
|
} |
| 2329 |
|
|
#ifdef SANDBOX |
| 2330 |
|
|
else if (is("incsrc") || is("incbin") || is("table")) |
| 2331 |
|
|
{ |
| 2332 |
|
|
asar_throw_error(0, error_type_block, error_id_command_disabled); |
| 2333 |
|
|
} |
| 2334 |
|
|
#endif |
| 2335 |
12/12
✓ Branch 1746 → 1747 taken 570 times.
✓ Branch 1746 → 1750 taken 69 times.
✓ Branch 1748 → 1749 taken 309 times.
✓ Branch 1748 → 1750 taken 261 times.
✓ Branch 1751 → 1752 taken 309 times.
✓ Branch 1751 → 1783 taken 330 times.
✓ Branch 1824 → 1825 taken 570 times.
✓ Branch 1824 → 1828 taken 69 times.
✓ Branch 1826 → 1827 taken 309 times.
✓ Branch 1826 → 1828 taken 261 times.
✓ Branch 1829 → 1830 taken 309 times.
✓ Branch 1829 → 1862 taken 330 times.
|
1278 |
else if (is1("incsrc")) |
| 2336 |
|
|
{ |
| 2337 |
|
618 |
string name; |
| 2338 |
4/16
✗ Branch 1753 → 1754 not taken.
✓ Branch 1753 → 1759 taken 309 times.
✗ Branch 1755 → 1756 not taken.
✗ Branch 1755 → 1758 not taken.
✗ Branch 1757 → 1758 not taken.
✗ Branch 1757 → 1759 not taken.
✗ Branch 1760 → 1761 not taken.
✓ Branch 1760 → 1762 taken 309 times.
✗ Branch 1832 → 1833 not taken.
✓ Branch 1832 → 1838 taken 309 times.
✗ Branch 1834 → 1835 not taken.
✗ Branch 1834 → 1837 not taken.
✗ Branch 1836 → 1837 not taken.
✗ Branch 1836 → 1838 not taken.
✗ Branch 1839 → 1840 not taken.
✓ Branch 1839 → 1841 taken 309 times.
|
618 |
if (warnxkas && (strchr(thisfilename, '/') || strchr(thisfilename, '\\'))) |
| 2339 |
|
✗ |
asar_throw_warning(0, warning_id_xkas_incsrc_relative); |
| 2340 |
2/4
✗ Branch 1762 → 1763 not taken.
✓ Branch 1762 → 1771 taken 309 times.
✗ Branch 1841 → 1842 not taken.
✓ Branch 1841 → 1849 taken 309 times.
|
618 |
if (strchr(par, '\\')) |
| 2341 |
|
|
{ |
| 2342 |
|
✗ |
if (emulatexkas) |
| 2343 |
|
|
{ |
| 2344 |
|
✗ |
asar_throw_warning(0, warning_id_feature_deprecated, "xkas style paths", "convert paths to crossplatform style"); |
| 2345 |
|
✗ |
for (int i=0;par[i];i++) |
| 2346 |
|
|
{ |
| 2347 |
|
✗ |
if (par[i]=='\\') par[i]='/';//let's just hope nobody finds I could just enable this for everything. |
| 2348 |
|
|
} |
| 2349 |
|
|
} |
| 2350 |
|
|
#ifdef _WIN32 |
| 2351 |
|
✗ |
else asar_throw_warning(0, warning_id_feature_deprecated, "windows specific paths", "convert paths to crossplatform style"); |
| 2352 |
|
|
#endif |
| 2353 |
|
|
} |
| 2354 |
2/12
✗ Branch 1771 → 1772 not taken.
✓ Branch 1771 → 1774 taken 309 times.
✗ Branch 1772 → 1773 not taken.
✗ Branch 1772 → 2596 not taken.
✗ Branch 1773 → 1779 not taken.
✗ Branch 1773 → 2596 not taken.
✗ Branch 1849 → 1850 not taken.
✓ Branch 1849 → 1852 taken 309 times.
✗ Branch 1850 → 1851 not taken.
✗ Branch 1850 → 2769 not taken.
✗ Branch 1851 → 1858 not taken.
✗ Branch 1851 → 2769 not taken.
|
618 |
if (emulatexkas) name= safedequote(par); |
| 2355 |
6/12
✓ Branch 1774 → 1775 taken 309 times.
✗ Branch 1774 → 2595 not taken.
✓ Branch 1775 → 1776 taken 309 times.
✗ Branch 1775 → 2595 not taken.
✓ Branch 1776 → 1777 taken 309 times.
✗ Branch 1776 → 2593 not taken.
✓ Branch 1853 → 1854 taken 309 times.
✗ Branch 1853 → 2767 not taken.
✓ Branch 1854 → 1855 taken 309 times.
✗ Branch 1854 → 2767 not taken.
✓ Branch 1855 → 1856 taken 309 times.
✗ Branch 1855 → 2765 not taken.
|
618 |
else name=STR safedequote(par); |
| 2356 |
4/4
✓ Branch 1780 → 1781 taken 60 times.
✓ Branch 1780 → 2596 taken 249 times.
✓ Branch 1859 → 1860 taken 60 times.
✓ Branch 1859 → 2769 taken 249 times.
|
618 |
assemblefile(name, false); |
| 2357 |
|
618 |
} |
| 2358 |
20/20
✓ Branch 1783 → 1784 taken 261 times.
✓ Branch 1783 → 1786 taken 69 times.
✓ Branch 1785 → 1786 taken 234 times.
✓ Branch 1785 → 1789 taken 27 times.
✓ Branch 1786 → 1787 taken 18 times.
✓ Branch 1786 → 1790 taken 285 times.
✓ Branch 1788 → 1789 taken 3 times.
✓ Branch 1788 → 1790 taken 15 times.
✓ Branch 1791 → 1792 taken 30 times.
✓ Branch 1791 → 1950 taken 300 times.
✓ Branch 1862 → 1863 taken 261 times.
✓ Branch 1862 → 1865 taken 69 times.
✓ Branch 1864 → 1865 taken 234 times.
✓ Branch 1864 → 1868 taken 27 times.
✓ Branch 1865 → 1866 taken 18 times.
✓ Branch 1865 → 1869 taken 285 times.
✓ Branch 1867 → 1868 taken 3 times.
✓ Branch 1867 → 1869 taken 15 times.
✓ Branch 1870 → 1871 taken 30 times.
✓ Branch 1870 → 2049 taken 300 times.
|
660 |
else if (is1("incbin") || is3("incbin")) |
| 2359 |
|
|
{ |
| 2360 |
6/12
✓ Branch 1792 → 1793 taken 3 times.
✓ Branch 1792 → 1795 taken 27 times.
✗ Branch 1793 → 1794 not taken.
✓ Branch 1793 → 1795 taken 3 times.
✗ Branch 1794 → 1795 not taken.
✗ Branch 1794 → 2630 not taken.
✓ Branch 1871 → 1872 taken 3 times.
✓ Branch 1871 → 1874 taken 27 times.
✗ Branch 1872 → 1873 not taken.
✓ Branch 1872 → 1874 taken 3 times.
✗ Branch 1873 → 1874 not taken.
✗ Branch 1873 → 2814 not taken.
|
60 |
if (numwords == 4 && strcmp(word[2], "->")) asar_throw_error(0, error_type_block, error_id_broken_incbin); |
| 2361 |
|
30 |
int len; |
| 2362 |
|
60 |
int start=0; |
| 2363 |
|
60 |
int end=0; |
| 2364 |
4/4
✓ Branch 1796 → 1797 taken 15 times.
✓ Branch 1796 → 1846 taken 15 times.
✓ Branch 1876 → 1877 taken 15 times.
✓ Branch 1876 → 1934 taken 15 times.
|
60 |
if (strqchr(par, ':')) |
| 2365 |
|
|
{ |
| 2366 |
|
30 |
char * lengths=strqchr(par, ':'); |
| 2367 |
|
30 |
*lengths=0; |
| 2368 |
|
30 |
lengths++; |
| 2369 |
6/8
✓ Branch 1798 → 1799 taken 15 times.
✗ Branch 1798 → 2610 not taken.
✓ Branch 1799 → 1800 taken 12 times.
✓ Branch 1799 → 1814 taken 3 times.
✓ Branch 1879 → 1880 taken 15 times.
✗ Branch 1879 → 2788 not taken.
✓ Branch 1880 → 1881 taken 12 times.
✓ Branch 1880 → 1898 taken 3 times.
|
30 |
if(strqpstr(lengths, "..")) |
| 2370 |
|
|
{ |
| 2371 |
|
|
// new style ranges |
| 2372 |
2/4
✓ Branch 1800 → 1801 taken 12 times.
✗ Branch 1800 → 2603 not taken.
✓ Branch 1881 → 1882 taken 12 times.
✗ Branch 1881 → 2777 not taken.
|
24 |
char* split = strqpstr(lengths, ".."); |
| 2373 |
2/4
✓ Branch 1801 → 1802 taken 12 times.
✗ Branch 1801 → 2603 not taken.
✓ Branch 1883 → 1884 taken 12 times.
✗ Branch 1883 → 2777 not taken.
|
24 |
string start_str(lengths, split-lengths); |
| 2374 |
2/4
✓ Branch 1803 → 1804 taken 12 times.
✗ Branch 1803 → 2601 not taken.
✓ Branch 1885 → 1886 taken 12 times.
✗ Branch 1885 → 2775 not taken.
|
24 |
start = getnum(start_str); |
| 2375 |
2/8
✗ Branch 1804 → 1805 not taken.
✓ Branch 1804 → 1806 taken 12 times.
✗ Branch 1805 → 1806 not taken.
✗ Branch 1805 → 2601 not taken.
✗ Branch 1886 → 1887 not taken.
✓ Branch 1886 → 1888 taken 12 times.
✗ Branch 1887 → 1888 not taken.
✗ Branch 1887 → 2775 not taken.
|
24 |
if (forwardlabel) asar_throw_error(0, error_type_block, error_id_no_labels_here); |
| 2376 |
2/4
✓ Branch 1806 → 1807 taken 12 times.
✗ Branch 1806 → 2601 not taken.
✓ Branch 1889 → 1890 taken 12 times.
✗ Branch 1889 → 2775 not taken.
|
24 |
string end_str(split+2); |
| 2377 |
2/4
✓ Branch 1808 → 1809 taken 12 times.
✗ Branch 1808 → 2599 not taken.
✓ Branch 1891 → 1892 taken 12 times.
✗ Branch 1891 → 2773 not taken.
|
24 |
end = getnum(end_str); |
| 2378 |
2/8
✗ Branch 1809 → 1810 not taken.
✓ Branch 1809 → 1811 taken 12 times.
✗ Branch 1810 → 1811 not taken.
✗ Branch 1810 → 2599 not taken.
✗ Branch 1892 → 1893 not taken.
✓ Branch 1892 → 1894 taken 12 times.
✗ Branch 1893 → 1894 not taken.
✗ Branch 1893 → 2773 not taken.
|
24 |
if (forwardlabel) asar_throw_error(0, error_type_block, error_id_no_labels_here); |
| 2379 |
|
24 |
} |
| 2380 |
|
|
else |
| 2381 |
|
|
{ |
| 2382 |
2/4
✓ Branch 1814 → 1815 taken 3 times.
✗ Branch 1814 → 2610 not taken.
✓ Branch 1898 → 1899 taken 3 times.
✗ Branch 1898 → 2788 not taken.
|
6 |
asar_throw_warning(0, warning_id_feature_deprecated, "old style incbin ranges", "use the :start..end syntax instead"); |
| 2383 |
2/8
✗ Branch 1815 → 1816 not taken.
✓ Branch 1815 → 1817 taken 3 times.
✗ Branch 1816 → 1817 not taken.
✗ Branch 1816 → 2610 not taken.
✗ Branch 1899 → 1900 not taken.
✓ Branch 1899 → 1901 taken 3 times.
✗ Branch 1900 → 1901 not taken.
✗ Branch 1900 → 2788 not taken.
|
6 |
if (strchr(lengths, '"')) asar_throw_error(0, error_type_block, error_id_broken_incbin); |
| 2384 |
2/4
✓ Branch 1817 → 1818 taken 3 times.
✗ Branch 1817 → 1829 not taken.
✓ Branch 1901 → 1902 taken 3 times.
✗ Branch 1901 → 1915 not taken.
|
6 |
if(*lengths=='(') { |
| 2385 |
2/4
✓ Branch 1818 → 1819 taken 3 times.
✗ Branch 1818 → 2610 not taken.
✓ Branch 1902 → 1903 taken 3 times.
✗ Branch 1902 → 2788 not taken.
|
6 |
char* tmp = strqpchr(lengths, '-'); |
| 2386 |
4/12
✓ Branch 1819 → 1820 taken 3 times.
✗ Branch 1819 → 1821 not taken.
✗ Branch 1820 → 1821 not taken.
✓ Branch 1820 → 1822 taken 3 times.
✗ Branch 1821 → 1822 not taken.
✗ Branch 1821 → 2610 not taken.
✓ Branch 1903 → 1904 taken 3 times.
✗ Branch 1903 → 1905 not taken.
✗ Branch 1904 → 1905 not taken.
✓ Branch 1904 → 1906 taken 3 times.
✗ Branch 1905 → 1906 not taken.
✗ Branch 1905 → 2788 not taken.
|
6 |
if(!tmp || (*(tmp-1)!=')')) asar_throw_error(0, error_type_block, error_id_broken_incbin); |
| 2387 |
4/8
✓ Branch 1822 → 1823 taken 3 times.
✗ Branch 1822 → 2606 not taken.
✗ Branch 1824 → 1825 not taken.
✓ Branch 1824 → 2604 taken 3 times.
✓ Branch 1907 → 1908 taken 3 times.
✗ Branch 1907 → 2782 not taken.
✗ Branch 1909 → 1910 not taken.
✓ Branch 1909 → 2780 taken 3 times.
|
12 |
start = (int)getnum64(string(lengths+1, tmp-1-lengths-1)); |
| 2388 |
|
✗ |
if (forwardlabel) asar_throw_error(0, error_type_block, error_id_no_labels_here); |
| 2389 |
|
✗ |
lengths = tmp; |
| 2390 |
|
|
} else { |
| 2391 |
|
✗ |
start=(int)strtoul(lengths, &lengths, 16); |
| 2392 |
|
|
} |
| 2393 |
|
✗ |
if (*lengths!='-') asar_throw_error(0, error_type_block, error_id_broken_incbin); |
| 2394 |
|
✗ |
lengths++; |
| 2395 |
|
✗ |
if(*lengths=='(') { |
| 2396 |
|
✗ |
char* tmp = strchr(lengths, '\0'); |
| 2397 |
|
✗ |
if(*(tmp-1)!=')') asar_throw_error(0, error_type_block, error_id_broken_incbin); |
| 2398 |
|
✗ |
end = (int)getnum64(string(lengths+1, tmp-1-lengths-1)); |
| 2399 |
|
✗ |
if (forwardlabel) asar_throw_error(0, error_type_block, error_id_no_labels_here); |
| 2400 |
|
|
// no need to check end-of-string here |
| 2401 |
|
|
} else { |
| 2402 |
|
✗ |
end=(int)strtoul(lengths, &lengths, 16); |
| 2403 |
|
✗ |
if (*lengths) asar_throw_error(0, error_type_block, error_id_broken_incbin); |
| 2404 |
|
|
} |
| 2405 |
|
|
} |
| 2406 |
|
|
} |
| 2407 |
|
54 |
string name; |
| 2408 |
4/16
✗ Branch 1847 → 1848 not taken.
✓ Branch 1847 → 1853 taken 27 times.
✗ Branch 1849 → 1850 not taken.
✗ Branch 1849 → 1852 not taken.
✗ Branch 1851 → 1852 not taken.
✗ Branch 1851 → 1853 not taken.
✗ Branch 1854 → 1855 not taken.
✓ Branch 1854 → 1856 taken 27 times.
✗ Branch 1936 → 1937 not taken.
✓ Branch 1936 → 1942 taken 27 times.
✗ Branch 1938 → 1939 not taken.
✗ Branch 1938 → 1941 not taken.
✗ Branch 1940 → 1941 not taken.
✗ Branch 1940 → 1942 not taken.
✗ Branch 1943 → 1944 not taken.
✓ Branch 1943 → 1945 taken 27 times.
|
54 |
if (warnxkas && (strchr(thisfilename, '/') || strchr(thisfilename, '\\'))) |
| 2409 |
|
✗ |
asar_throw_warning(0, warning_id_xkas_incsrc_relative); |
| 2410 |
4/4
✓ Branch 1856 → 1857 taken 3 times.
✓ Branch 1856 → 1865 taken 24 times.
✓ Branch 1945 → 1946 taken 3 times.
✓ Branch 1945 → 1953 taken 24 times.
|
54 |
if (strchr(par, '\\')) |
| 2411 |
|
|
{ |
| 2412 |
2/4
✓ Branch 1857 → 1858 taken 3 times.
✗ Branch 1857 → 1864 not taken.
✓ Branch 1946 → 1947 taken 3 times.
✗ Branch 1946 → 1953 not taken.
|
6 |
if (emulatexkas) |
| 2413 |
|
|
{ |
| 2414 |
2/4
✓ Branch 1858 → 1859 taken 3 times.
✗ Branch 1858 → 2628 not taken.
✓ Branch 1947 → 1948 taken 3 times.
✗ Branch 1947 → 2812 not taken.
|
6 |
asar_throw_warning(0, warning_id_feature_deprecated, "xkas style paths", "convert paths to crossplatform style"); |
| 2415 |
4/4
✓ Branch 1863 → 1860 taken 57 times.
✓ Branch 1863 → 1865 taken 3 times.
✓ Branch 1952 → 1949 taken 57 times.
✓ Branch 1952 → 1953 taken 3 times.
|
120 |
for (int i=0;par[i];i++) |
| 2416 |
|
|
{ |
| 2417 |
4/4
✓ Branch 1860 → 1861 taken 6 times.
✓ Branch 1860 → 1862 taken 51 times.
✓ Branch 1949 → 1950 taken 6 times.
✓ Branch 1949 → 1951 taken 51 times.
|
114 |
if (par[i]=='\\') par[i]='/';//let's just hope nobody finds I could just enable this for everything. |
| 2418 |
|
|
} |
| 2419 |
|
|
} |
| 2420 |
|
|
#ifdef _WIN32 |
| 2421 |
|
✗ |
else asar_throw_warning(0, warning_id_feature_deprecated, "windows specific paths", "convert paths to crossplatform style"); |
| 2422 |
|
|
#endif |
| 2423 |
|
|
} |
| 2424 |
8/12
✓ Branch 1865 → 1866 taken 3 times.
✓ Branch 1865 → 1868 taken 24 times.
✓ Branch 1866 → 1867 taken 3 times.
✗ Branch 1866 → 2628 not taken.
✓ Branch 1867 → 1873 taken 3 times.
✗ Branch 1867 → 2628 not taken.
✓ Branch 1953 → 1954 taken 3 times.
✓ Branch 1953 → 1956 taken 24 times.
✓ Branch 1954 → 1955 taken 3 times.
✗ Branch 1954 → 2812 not taken.
✓ Branch 1955 → 1962 taken 3 times.
✗ Branch 1955 → 2812 not taken.
|
54 |
if (emulatexkas) name= safedequote(par); |
| 2425 |
6/12
✓ Branch 1868 → 1869 taken 24 times.
✗ Branch 1868 → 2613 not taken.
✓ Branch 1869 → 1870 taken 24 times.
✗ Branch 1869 → 2613 not taken.
✓ Branch 1870 → 1871 taken 24 times.
✗ Branch 1870 → 2611 not taken.
✓ Branch 1957 → 1958 taken 24 times.
✗ Branch 1957 → 2792 not taken.
✓ Branch 1958 → 1959 taken 24 times.
✗ Branch 1958 → 2792 not taken.
✓ Branch 1959 → 1960 taken 24 times.
✗ Branch 1959 → 2790 not taken.
|
48 |
else name=STR safedequote(par); |
| 2426 |
|
27 |
char * data;//I couldn't find a way to get this into an autoptr |
| 2427 |
12/20
✓ Branch 1875 → 1876 taken 27 times.
✗ Branch 1875 → 2628 not taken.
✓ Branch 1876 → 1877 taken 3 times.
✓ Branch 1876 → 1881 taken 24 times.
✓ Branch 1878 → 1879 taken 3 times.
✗ Branch 1878 → 2628 not taken.
✓ Branch 1879 → 1880 taken 3 times.
✗ Branch 1879 → 2628 not taken.
✗ Branch 1880 → 1881 not taken.
✓ Branch 1880 → 2628 taken 3 times.
✓ Branch 1965 → 1966 taken 27 times.
✗ Branch 1965 → 2812 not taken.
✓ Branch 1966 → 1967 taken 3 times.
✓ Branch 1966 → 1971 taken 24 times.
✓ Branch 1968 → 1969 taken 3 times.
✗ Branch 1968 → 2812 not taken.
✓ Branch 1969 → 1970 taken 3 times.
✗ Branch 1969 → 2812 not taken.
✗ Branch 1970 → 1971 not taken.
✓ Branch 1970 → 2812 taken 3 times.
|
54 |
if (!readfile(name, thisfilename, &data, &len)) asar_throw_error(0, error_type_block, vfile_error_to_error_id(asar_get_last_io_error()), name.data()); |
| 2428 |
|
48 |
autoptr<char*> datacopy=data; |
| 2429 |
4/4
✓ Branch 1882 → 1883 taken 12 times.
✓ Branch 1882 → 1884 taken 12 times.
✓ Branch 1973 → 1974 taken 12 times.
✓ Branch 1973 → 1975 taken 12 times.
|
48 |
if (!end) end=len; |
| 2430 |
2/12
✗ Branch 1884 → 1885 not taken.
✓ Branch 1884 → 1891 taken 24 times.
✗ Branch 1886 → 1887 not taken.
✗ Branch 1886 → 2616 not taken.
✗ Branch 1888 → 1889 not taken.
✗ Branch 1888 → 2614 not taken.
✗ Branch 1975 → 1976 not taken.
✓ Branch 1975 → 1983 taken 24 times.
✗ Branch 1978 → 1979 not taken.
✗ Branch 1978 → 2796 not taken.
✗ Branch 1980 → 1981 not taken.
✗ Branch 1980 → 2794 not taken.
|
48 |
if(start < 0) asar_throw_error(0, error_type_block, error_id_file_offset_out_of_bounds, dec(start).data(), name.data()); |
| 2431 |
6/20
✓ Branch 1891 → 1892 taken 24 times.
✗ Branch 1891 → 1894 not taken.
✓ Branch 1892 → 1893 taken 24 times.
✗ Branch 1892 → 1894 not taken.
✗ Branch 1893 → 1894 not taken.
✓ Branch 1893 → 1900 taken 24 times.
✗ Branch 1895 → 1896 not taken.
✗ Branch 1895 → 2619 not taken.
✗ Branch 1897 → 1898 not taken.
✗ Branch 1897 → 2617 not taken.
✓ Branch 1983 → 1984 taken 24 times.
✗ Branch 1983 → 1986 not taken.
✓ Branch 1984 → 1985 taken 24 times.
✗ Branch 1984 → 1986 not taken.
✗ Branch 1985 → 1986 not taken.
✓ Branch 1985 → 1993 taken 24 times.
✗ Branch 1988 → 1989 not taken.
✗ Branch 1988 → 2800 not taken.
✗ Branch 1990 → 1991 not taken.
✗ Branch 1990 → 2798 not taken.
|
48 |
if (end < start || end > len || end < 0) asar_throw_error(0, error_type_block, error_id_file_offset_out_of_bounds, dec(end).data(), name.data()); |
| 2432 |
4/4
✓ Branch 1900 → 1901 taken 3 times.
✓ Branch 1900 → 1942 taken 21 times.
✓ Branch 1993 → 1994 taken 3 times.
✓ Branch 1993 → 2038 taken 21 times.
|
48 |
if (numwords==4) |
| 2433 |
|
|
{ |
| 2434 |
2/4
✓ Branch 1901 → 1902 taken 3 times.
✗ Branch 1901 → 2626 not taken.
✓ Branch 1994 → 1995 taken 3 times.
✗ Branch 1994 → 2810 not taken.
|
6 |
asar_throw_warning(0, warning_id_feature_deprecated, "incbin with target location", "put an org before the incbin"); |
| 2435 |
2/4
✗ Branch 1903 → 1904 not taken.
✓ Branch 1903 → 1916 taken 3 times.
✗ Branch 1996 → 1997 not taken.
✓ Branch 1996 → 2009 taken 3 times.
|
6 |
if (!confirmname(word[3])) |
| 2436 |
|
|
{ |
| 2437 |
|
✗ |
int pos=(int)getnum(word[3]); |
| 2438 |
|
✗ |
if (foundlabel && !foundlabel_static) asar_throw_error(0, error_type_block, error_id_no_labels_here); |
| 2439 |
|
✗ |
int offset=snestopc(pos); |
| 2440 |
|
✗ |
if (offset + end - start > 0xFFFFFF) asar_throw_error(0, error_type_block, error_id_16mb_rom_limit); |
| 2441 |
|
✗ |
if (offset+end-start>romlen) romlen=offset+end-start; |
| 2442 |
|
✗ |
if (pass==2) |
| 2443 |
|
|
{ |
| 2444 |
|
✗ |
writeromdata(offset, data+start, end-start); |
| 2445 |
|
✗ |
add_addr_to_line(pos); |
| 2446 |
|
|
} |
| 2447 |
|
|
} |
| 2448 |
|
|
else |
| 2449 |
|
|
{ |
| 2450 |
|
|
int pos; |
| 2451 |
4/4
✓ Branch 1916 → 1917 taken 1 time.
✓ Branch 1916 → 1932 taken 2 times.
✓ Branch 2009 → 2010 taken 1 time.
✓ Branch 2009 → 2028 taken 2 times.
|
6 |
if (pass==0) |
| 2452 |
|
|
{ |
| 2453 |
2/8
✗ Branch 1917 → 1918 not taken.
✓ Branch 1917 → 1919 taken 1 time.
✗ Branch 1918 → 1919 not taken.
✗ Branch 1918 → 2626 not taken.
✗ Branch 2010 → 2011 not taken.
✓ Branch 2010 → 2012 taken 1 time.
✗ Branch 2011 → 2012 not taken.
✗ Branch 2011 → 2810 not taken.
|
2 |
if (end - start > 65536) asar_throw_error(0, error_type_block, error_id_incbin_64kb_limit); |
| 2454 |
2/4
✓ Branch 1919 → 1920 taken 1 time.
✗ Branch 1919 → 2626 not taken.
✓ Branch 2012 → 2013 taken 1 time.
✗ Branch 2012 → 2810 not taken.
|
2 |
pos=getpcfreespace(end-start, false, true, false); |
| 2455 |
2/12
✗ Branch 1920 → 1921 not taken.
✓ Branch 1920 → 1926 taken 1 time.
✗ Branch 1921 → 1922 not taken.
✗ Branch 1921 → 2622 not taken.
✗ Branch 1923 → 1924 not taken.
✗ Branch 1923 → 2620 not taken.
✗ Branch 2013 → 2014 not taken.
✓ Branch 2013 → 2020 taken 1 time.
✗ Branch 2015 → 2016 not taken.
✗ Branch 2015 → 2804 not taken.
✗ Branch 2017 → 2018 not taken.
✗ Branch 2017 → 2802 not taken.
|
2 |
if (pos < 0) asar_throw_error(0, error_type_block, error_id_no_freespace, dec(end - start).data()); |
| 2456 |
2/4
✓ Branch 1926 → 1927 taken 1 time.
✗ Branch 1926 → 2626 not taken.
✓ Branch 2020 → 2021 taken 1 time.
✗ Branch 2020 → 2810 not taken.
|
2 |
int foundfreespaceid=getfreespaceid(); |
| 2457 |
|
2 |
freespacepos[foundfreespaceid]=pctosnes(pos)|(/*fastrom?0x800000:*/0x000000)|(foundfreespaceid <<24); |
| 2458 |
4/8
✓ Branch 1928 → 1929 taken 1 time.
✗ Branch 1928 → 2625 not taken.
✓ Branch 1929 → 1930 taken 1 time.
✗ Branch 1929 → 2623 not taken.
✓ Branch 2023 → 2024 taken 1 time.
✗ Branch 2023 → 2808 not taken.
✓ Branch 2024 → 2025 taken 1 time.
✗ Branch 2024 → 2806 not taken.
|
2 |
setlabel(word[3], freespacepos[foundfreespaceid]); |
| 2459 |
2/4
✓ Branch 1931 → 1932 taken 1 time.
✗ Branch 1931 → 2626 not taken.
✓ Branch 2027 → 2028 taken 1 time.
✗ Branch 2027 → 2810 not taken.
|
2 |
writeromdata_bytes(pos, 0xFF, end-start); |
| 2460 |
|
|
} |
| 2461 |
4/4
✓ Branch 1932 → 1933 taken 1 time.
✓ Branch 1932 → 1934 taken 2 times.
✓ Branch 2028 → 2029 taken 1 time.
✓ Branch 2028 → 2030 taken 2 times.
|
6 |
if (pass==1) |
| 2462 |
|
|
{ |
| 2463 |
2/4
✓ Branch 1933 → 1934 taken 1 time.
✗ Branch 1933 → 2626 not taken.
✓ Branch 2029 → 2030 taken 1 time.
✗ Branch 2029 → 2810 not taken.
|
2 |
getfreespaceid();//nothing to do here, but we want to tick the counter |
| 2464 |
|
|
} |
| 2465 |
4/4
✓ Branch 1934 → 1935 taken 1 time.
✓ Branch 1934 → 1947 taken 2 times.
✓ Branch 2030 → 2031 taken 1 time.
✓ Branch 2030 → 2043 taken 2 times.
|
6 |
if (pass==2) |
| 2466 |
|
|
{ |
| 2467 |
2/4
✓ Branch 1935 → 1936 taken 1 time.
✗ Branch 1935 → 2626 not taken.
✓ Branch 2031 → 2032 taken 1 time.
✗ Branch 2031 → 2810 not taken.
|
2 |
int foundfreespaceid =getfreespaceid(); |
| 2468 |
2/8
✗ Branch 1936 → 1937 not taken.
✓ Branch 1936 → 1938 taken 1 time.
✗ Branch 1937 → 1938 not taken.
✗ Branch 1937 → 2626 not taken.
✗ Branch 2032 → 2033 not taken.
✓ Branch 2032 → 2034 taken 1 time.
✗ Branch 2033 → 2034 not taken.
✗ Branch 2033 → 2810 not taken.
|
2 |
if (freespaceleak[foundfreespaceid]) asar_throw_warning(2, warning_id_freespace_leaked); |
| 2469 |
2/4
✓ Branch 1939 → 1940 taken 1 time.
✗ Branch 1939 → 2626 not taken.
✓ Branch 2035 → 2036 taken 1 time.
✗ Branch 2035 → 2810 not taken.
|
2 |
writeromdata(snestopc(freespacepos[foundfreespaceid]&0xFFFFFF), data+start, end-start); |
| 2470 |
2/4
✓ Branch 1940 → 1941 taken 1 time.
✗ Branch 1940 → 2626 not taken.
✓ Branch 2036 → 2037 taken 1 time.
✗ Branch 2036 → 2810 not taken.
|
2 |
add_addr_to_line((freespacepos[foundfreespaceid]&0xFFFFFF) - 8); |
| 2471 |
|
2 |
freespaceuse+=8+end-start; |
| 2472 |
|
|
} |
| 2473 |
|
|
} |
| 2474 |
|
|
} |
| 2475 |
|
|
else |
| 2476 |
|
|
{ |
| 2477 |
6/8
✓ Branch 1943 → 1944 taken 33 times.
✗ Branch 1943 → 2626 not taken.
✓ Branch 1945 → 1943 taken 33 times.
✓ Branch 1945 → 1946 taken 21 times.
✓ Branch 2039 → 2040 taken 33 times.
✗ Branch 2039 → 2810 not taken.
✓ Branch 2041 → 2039 taken 33 times.
✓ Branch 2041 → 2042 taken 21 times.
|
108 |
for (int i=start;i<end;i++) write1((unsigned int)data[i]); |
| 2478 |
2/4
✓ Branch 1946 → 1947 taken 21 times.
✗ Branch 1946 → 2626 not taken.
✓ Branch 2042 → 2043 taken 21 times.
✗ Branch 2042 → 2810 not taken.
|
42 |
add_addr_to_line(addrToLinePos); |
| 2479 |
|
|
} |
| 2480 |
|
54 |
} |
| 2481 |
12/12
✓ Branch 1951 → 1952 taken 204 times.
✓ Branch 1951 → 1954 taken 96 times.
✓ Branch 1953 → 1954 taken 15 times.
✓ Branch 1953 → 1955 taken 189 times.
✓ Branch 1956 → 1957 taken 111 times.
✓ Branch 1956 → 2003 taken 189 times.
✓ Branch 2050 → 2051 taken 204 times.
✓ Branch 2050 → 2053 taken 96 times.
✓ Branch 2052 → 2053 taken 15 times.
✓ Branch 2052 → 2054 taken 189 times.
✓ Branch 2055 → 2056 taken 111 times.
✓ Branch 2055 → 2094 taken 189 times.
|
600 |
else if (is("skip") || is("fill")) |
| 2482 |
|
|
{ |
| 2483 |
2/16
✗ Branch 1957 → 1958 not taken.
✓ Branch 1957 → 1961 taken 111 times.
✗ Branch 1958 → 1959 not taken.
✗ Branch 1958 → 1961 not taken.
✗ Branch 1959 → 1960 not taken.
✗ Branch 1959 → 1961 not taken.
✗ Branch 1960 → 1961 not taken.
✗ Branch 1960 → 2652 not taken.
✗ Branch 2056 → 2057 not taken.
✓ Branch 2056 → 2060 taken 111 times.
✗ Branch 2057 → 2058 not taken.
✗ Branch 2057 → 2060 not taken.
✗ Branch 2058 → 2059 not taken.
✗ Branch 2058 → 2060 not taken.
✗ Branch 2059 → 2060 not taken.
✗ Branch 2059 → 2849 not taken.
|
222 |
if(numwords != 2 && numwords != 3 && numwords != 5) asar_throw_error(0, error_type_block, error_id_unknown_command); |
| 2484 |
3/16
✗ Branch 1961 → 1962 not taken.
✓ Branch 1961 → 1965 taken 111 times.
✗ Branch 1962 → 1963 not taken.
✗ Branch 1962 → 2652 not taken.
✗ Branch 1963 → 1964 not taken.
✗ Branch 1963 → 1965 not taken.
✗ Branch 1966 → 1967 not taken.
✓ Branch 1966 → 1968 taken 111 times.
✗ Branch 1967 → 1968 not taken.
✗ Branch 1967 → 2652 not taken.
✗ Branch 2060 → 2061 not taken.
✓ Branch 2060 → 2063 taken 111 times.
✗ Branch 2061 → 2062 not taken.
✗ Branch 2061 → 2063 not taken.
✗ Branch 2062 → 2063 not taken.
✗ Branch 2062 → 2849 not taken.
|
222 |
if(numwords > 2 && stricmp(word[1], "align")) asar_throw_error(0, error_type_block, error_id_unknown_command); |
| 2485 |
3/16
✗ Branch 1968 → 1969 not taken.
✓ Branch 1968 → 1972 taken 111 times.
✗ Branch 1969 → 1970 not taken.
✗ Branch 1969 → 2652 not taken.
✗ Branch 1970 → 1971 not taken.
✗ Branch 1970 → 1972 not taken.
✗ Branch 1973 → 1974 not taken.
✓ Branch 1973 → 1975 taken 111 times.
✗ Branch 1974 → 1975 not taken.
✗ Branch 1974 → 2652 not taken.
✗ Branch 2063 → 2064 not taken.
✓ Branch 2063 → 2066 taken 111 times.
✗ Branch 2064 → 2065 not taken.
✗ Branch 2064 → 2066 not taken.
✗ Branch 2065 → 2066 not taken.
✗ Branch 2065 → 2849 not taken.
|
222 |
if(numwords == 5 && stricmp(word[3], "offset")) asar_throw_error(0, error_type_block, error_id_unknown_command); |
| 2486 |
|
|
int amount; |
| 2487 |
2/4
✗ Branch 1975 → 1976 not taken.
✓ Branch 1975 → 1992 taken 111 times.
✗ Branch 2066 → 2067 not taken.
✓ Branch 2066 → 2083 taken 111 times.
|
222 |
if(numwords > 2) |
| 2488 |
|
|
{ |
| 2489 |
|
✗ |
int alignment = getnum64(word[2]); |
| 2490 |
|
✗ |
if(foundlabel && !foundlabel_static) asar_throw_error(0, error_type_block, error_id_no_labels_here); |
| 2491 |
|
✗ |
int offset = 0; |
| 2492 |
|
✗ |
if(numwords==5) |
| 2493 |
|
|
{ |
| 2494 |
|
✗ |
offset = getnum64(word[4]); |
| 2495 |
|
✗ |
if(foundlabel && !foundlabel_static) asar_throw_error(0, error_type_block, error_id_no_labels_here); |
| 2496 |
|
|
} |
| 2497 |
|
✗ |
if(alignment > 0x800000) asar_throw_error(0, error_type_block, error_id_alignment_too_big); |
| 2498 |
|
✗ |
if(alignment < 1) asar_throw_error(0, error_type_block, error_id_alignment_too_small); |
| 2499 |
|
✗ |
if(alignment & (alignment-1)) asar_throw_error(0, error_type_block, error_id_invalid_alignment); |
| 2500 |
|
|
// i just guessed this formula but it seems to work |
| 2501 |
|
✗ |
amount = (alignment - ((snespos - offset) & (alignment-1))) & (alignment-1); |
| 2502 |
|
|
} |
| 2503 |
|
|
else |
| 2504 |
|
|
{ |
| 2505 |
2/4
✓ Branch 1992 → 1993 taken 111 times.
✗ Branch 1992 → 2652 not taken.
✓ Branch 2083 → 2084 taken 111 times.
✗ Branch 2083 → 2849 not taken.
|
222 |
amount = (int)getnum64(par); |
| 2506 |
2/8
✗ Branch 1993 → 1994 not taken.
✓ Branch 1993 → 1995 taken 111 times.
✗ Branch 1994 → 1995 not taken.
✗ Branch 1994 → 2652 not taken.
✗ Branch 2084 → 2085 not taken.
✓ Branch 2084 → 2086 taken 111 times.
✗ Branch 2085 → 2086 not taken.
✗ Branch 2085 → 2849 not taken.
|
222 |
if (forwardlabel) asar_throw_error(0, error_type_block, error_id_no_labels_here); |
| 2507 |
|
|
} |
| 2508 |
4/4
✓ Branch 1996 → 1997 taken 96 times.
✓ Branch 1996 → 1998 taken 15 times.
✓ Branch 2087 → 2088 taken 96 times.
✓ Branch 2087 → 2089 taken 15 times.
|
222 |
if(is("skip")) step(amount); |
| 2509 |
|
|
else |
| 2510 |
|
|
{ |
| 2511 |
6/8
✓ Branch 1999 → 2000 taken 129 times.
✗ Branch 1999 → 2652 not taken.
✓ Branch 2001 → 1999 taken 129 times.
✓ Branch 2001 → 2002 taken 15 times.
✓ Branch 2090 → 2091 taken 129 times.
✗ Branch 2090 → 2849 not taken.
✓ Branch 2092 → 2090 taken 129 times.
✓ Branch 2092 → 2093 taken 15 times.
|
288 |
for(int i=0; i < amount; i++) write1(fillbyte[i%12]); |
| 2512 |
2/4
✓ Branch 2002 → 2365 taken 15 times.
✗ Branch 2002 → 2652 not taken.
✓ Branch 2093 → 2456 taken 15 times.
✗ Branch 2093 → 2849 not taken.
|
30 |
add_addr_to_line(addrToLinePos); |
| 2513 |
|
|
} |
| 2514 |
|
|
|
| 2515 |
|
|
} |
| 2516 |
8/12
✓ Branch 2003 → 2004 taken 51 times.
✓ Branch 2003 → 2007 taken 138 times.
✗ Branch 2005 → 2006 not taken.
✓ Branch 2005 → 2007 taken 51 times.
✗ Branch 2008 → 2009 not taken.
✓ Branch 2008 → 2010 taken 189 times.
✓ Branch 2094 → 2095 taken 51 times.
✓ Branch 2094 → 2098 taken 138 times.
✗ Branch 2096 → 2097 not taken.
✓ Branch 2096 → 2098 taken 51 times.
✗ Branch 2099 → 2100 not taken.
✓ Branch 2099 → 2101 taken 189 times.
|
378 |
else if (is0("cleartable")) |
| 2517 |
|
|
{ |
| 2518 |
|
✗ |
cleartable(); |
| 2519 |
|
|
} |
| 2520 |
12/12
✓ Branch 2010 → 2011 taken 51 times.
✓ Branch 2010 → 2014 taken 138 times.
✓ Branch 2012 → 2013 taken 3 times.
✓ Branch 2012 → 2014 taken 48 times.
✓ Branch 2015 → 2016 taken 3 times.
✓ Branch 2015 → 2017 taken 186 times.
✓ Branch 2101 → 2102 taken 51 times.
✓ Branch 2101 → 2105 taken 138 times.
✓ Branch 2103 → 2104 taken 3 times.
✓ Branch 2103 → 2105 taken 48 times.
✓ Branch 2106 → 2107 taken 3 times.
✓ Branch 2106 → 2108 taken 186 times.
|
378 |
else if (is0("pushtable")) |
| 2521 |
|
|
{ |
| 2522 |
2/4
✓ Branch 2016 → 2365 taken 3 times.
✗ Branch 2016 → 2652 not taken.
✓ Branch 2107 → 2456 taken 3 times.
✗ Branch 2107 → 2849 not taken.
|
6 |
tablestack.append(table); |
| 2523 |
|
|
} |
| 2524 |
12/12
✓ Branch 2017 → 2018 taken 48 times.
✓ Branch 2017 → 2021 taken 138 times.
✓ Branch 2019 → 2020 taken 3 times.
✓ Branch 2019 → 2021 taken 45 times.
✓ Branch 2022 → 2023 taken 3 times.
✓ Branch 2022 → 2027 taken 183 times.
✓ Branch 2108 → 2109 taken 48 times.
✓ Branch 2108 → 2112 taken 138 times.
✓ Branch 2110 → 2111 taken 3 times.
✓ Branch 2110 → 2112 taken 45 times.
✓ Branch 2113 → 2114 taken 3 times.
✓ Branch 2113 → 2118 taken 183 times.
|
372 |
else if (is0("pulltable")) |
| 2525 |
|
|
{ |
| 2526 |
2/8
✗ Branch 2023 → 2024 not taken.
✓ Branch 2023 → 2025 taken 3 times.
✗ Branch 2024 → 2025 not taken.
✗ Branch 2024 → 2652 not taken.
✗ Branch 2114 → 2115 not taken.
✓ Branch 2114 → 2116 taken 3 times.
✗ Branch 2115 → 2116 not taken.
✗ Branch 2115 → 2849 not taken.
|
6 |
if (tablestack.count <= 0) asar_throw_error(0, error_type_block, error_id_pulltable_without_table); |
| 2527 |
2/4
✓ Branch 2025 → 2026 taken 3 times.
✗ Branch 2025 → 2652 not taken.
✓ Branch 2116 → 2117 taken 3 times.
✗ Branch 2116 → 2849 not taken.
|
6 |
table=tablestack[tablestack.count-1]; |
| 2528 |
|
6 |
tablestack.remove(tablestack.count-1); |
| 2529 |
|
|
} |
| 2530 |
8/12
✓ Branch 2027 → 2028 taken 123 times.
✓ Branch 2027 → 2031 taken 60 times.
✗ Branch 2029 → 2030 not taken.
✓ Branch 2029 → 2031 taken 123 times.
✗ Branch 2032 → 2033 not taken.
✓ Branch 2032 → 2118 taken 183 times.
✓ Branch 2118 → 2119 taken 123 times.
✓ Branch 2118 → 2122 taken 60 times.
✗ Branch 2120 → 2121 not taken.
✓ Branch 2120 → 2122 taken 123 times.
✗ Branch 2123 → 2124 not taken.
✓ Branch 2123 → 2218 taken 183 times.
|
366 |
else if (is1("table")) |
| 2531 |
|
|
{ |
| 2532 |
|
✗ |
asar_throw_warning(0, warning_id_feature_deprecated, "table command", "Use direct character assignments. For example: 'a' = $61"); |
| 2533 |
|
✗ |
bool fliporder=false; |
| 2534 |
|
|
if(0); |
| 2535 |
|
✗ |
else if (striend(par, ",ltr")) { itrim(par, "", ",ltr"); } |
| 2536 |
|
✗ |
else if (striend(par, ",rtl")) { itrim(par, "", ",rtl"); fliporder=true; } |
| 2537 |
|
✗ |
string name=STR safedequote(par); |
| 2538 |
|
✗ |
autoptr<char*> tablecontents=readfile(name, thisfilename); |
| 2539 |
|
✗ |
if (!tablecontents) asar_throw_error(0, error_type_block, vfile_error_to_error_id(asar_get_last_io_error()), name.data()); |
| 2540 |
|
✗ |
autoptr<char**> tablelines=split(tablecontents, "\n"); |
| 2541 |
|
✗ |
for (int i=0;i<256;i++) table.table[i]=(unsigned int)(((numopcodes+read2(0x00FFDE)+i)*0x26594131)|0x40028020); |
| 2542 |
|
|
//garbage value so people will notice they're doing it wrong (for bonus points: figure out what 0x26594131 is) |
| 2543 |
|
✗ |
for (int i=0;tablelines[i];i++) |
| 2544 |
|
|
{ |
| 2545 |
|
✗ |
string tableline=tablelines[i]; |
| 2546 |
|
✗ |
if (!*tableline) continue; |
| 2547 |
|
✗ |
if (strlen(tableline) < 4 || strlen(tableline) & 1 || strlen(tableline) > 10) asar_throw_error(0, error_type_block, error_id_invalid_table_file, i+1); |
| 2548 |
|
✗ |
if (!fliporder) |
| 2549 |
|
|
{ |
| 2550 |
|
✗ |
if (tableline[3]=='x' || tableline[3]=='X') asar_throw_error(0, error_type_block, error_id_invalid_table_file, i+1); |
| 2551 |
|
✗ |
char * end; |
| 2552 |
|
✗ |
table.table[(unsigned char)tableline[0]]=(unsigned int)strtol(tableline.data()+2, &end, 16); |
| 2553 |
|
✗ |
if (*end) asar_throw_error(0, error_type_block, error_id_invalid_table_file, i+1); |
| 2554 |
|
|
} |
| 2555 |
|
|
else |
| 2556 |
|
|
{ |
| 2557 |
|
✗ |
if (tableline[1]=='x' || tableline[1]=='X') asar_throw_error(0, error_type_block, error_id_invalid_table_file, i+1); |
| 2558 |
|
✗ |
char * eq; |
| 2559 |
|
✗ |
unsigned int val=(unsigned int)strtol(tableline, &eq, 16); |
| 2560 |
|
✗ |
if (eq[0]!='=' || eq[2]) asar_throw_error(0, error_type_block, error_id_invalid_table_file, i+1); |
| 2561 |
|
✗ |
table.table[(unsigned char)eq[1]]=val; |
| 2562 |
|
|
} |
| 2563 |
|
✗ |
} |
| 2564 |
|
✗ |
} |
| 2565 |
10/12
✓ Branch 2118 → 2119 taken 15 times.
✓ Branch 2118 → 2122 taken 168 times.
✓ Branch 2120 → 2121 taken 15 times.
✗ Branch 2120 → 2122 not taken.
✓ Branch 2123 → 2124 taken 15 times.
✓ Branch 2123 → 2150 taken 168 times.
✓ Branch 2218 → 2219 taken 15 times.
✓ Branch 2218 → 2222 taken 168 times.
✓ Branch 2220 → 2221 taken 15 times.
✗ Branch 2220 → 2222 not taken.
✓ Branch 2223 → 2224 taken 15 times.
✓ Branch 2223 → 2250 taken 168 times.
|
366 |
else if (is3("function")) |
| 2566 |
|
|
{ |
| 2567 |
|
|
//if (!pass) |
| 2568 |
|
|
//{ |
| 2569 |
3/10
✓ Branch 2124 → 2125 taken 15 times.
✗ Branch 2124 → 2645 not taken.
✗ Branch 2125 → 2126 not taken.
✓ Branch 2125 → 2127 taken 15 times.
✗ Branch 2126 → 2127 not taken.
✗ Branch 2126 → 2645 not taken.
✗ Branch 2224 → 2225 not taken.
✓ Branch 2224 → 2226 taken 15 times.
✗ Branch 2225 → 2226 not taken.
✗ Branch 2225 → 2839 not taken.
|
30 |
if (stricmp(word[2], "=")) asar_throw_error(0, error_type_block, error_id_broken_function_declaration); |
| 2570 |
4/12
✓ Branch 2127 → 2128 taken 15 times.
✗ Branch 2127 → 2645 not taken.
✗ Branch 2128 → 2129 not taken.
✓ Branch 2128 → 2130 taken 15 times.
✗ Branch 2129 → 2130 not taken.
✗ Branch 2129 → 2645 not taken.
✓ Branch 2226 → 2227 taken 15 times.
✗ Branch 2226 → 2839 not taken.
✗ Branch 2227 → 2228 not taken.
✓ Branch 2227 → 2229 taken 15 times.
✗ Branch 2228 → 2229 not taken.
✗ Branch 2228 → 2839 not taken.
|
30 |
if (!confirmqpar(word[1])) asar_throw_error(0, error_type_block, error_id_broken_function_declaration); |
| 2571 |
2/4
✓ Branch 2130 → 2131 taken 15 times.
✗ Branch 2130 → 2645 not taken.
✓ Branch 2230 → 2231 taken 15 times.
✗ Branch 2230 → 2839 not taken.
|
30 |
string line=word[1]; |
| 2572 |
8/16
✓ Branch 2131 → 2132 taken 15 times.
✗ Branch 2131 → 2643 not taken.
✓ Branch 2132 → 2133 taken 15 times.
✗ Branch 2132 → 2643 not taken.
✓ Branch 2133 → 2134 taken 15 times.
✗ Branch 2133 → 2643 not taken.
✓ Branch 2134 → 2135 taken 15 times.
✗ Branch 2134 → 2643 not taken.
✓ Branch 2231 → 2232 taken 15 times.
✗ Branch 2231 → 2837 not taken.
✓ Branch 2232 → 2233 taken 15 times.
✗ Branch 2232 → 2837 not taken.
✓ Branch 2233 → 2234 taken 15 times.
✗ Branch 2233 → 2837 not taken.
✓ Branch 2234 → 2235 taken 15 times.
✗ Branch 2234 → 2837 not taken.
|
30 |
clean(line); |
| 2573 |
|
30 |
char * startpar=strqchr(line.data(), '('); |
| 2574 |
2/8
✗ Branch 2137 → 2138 not taken.
✓ Branch 2137 → 2139 taken 15 times.
✗ Branch 2138 → 2139 not taken.
✗ Branch 2138 → 2643 not taken.
✗ Branch 2237 → 2238 not taken.
✓ Branch 2237 → 2239 taken 15 times.
✗ Branch 2238 → 2239 not taken.
✗ Branch 2238 → 2837 not taken.
|
30 |
if (!startpar) asar_throw_error(0, error_type_block, error_id_broken_function_declaration); |
| 2575 |
|
30 |
*startpar=0; |
| 2576 |
|
30 |
startpar++; |
| 2577 |
2/8
✗ Branch 2141 → 2142 not taken.
✓ Branch 2141 → 2143 taken 15 times.
✗ Branch 2142 → 2143 not taken.
✗ Branch 2142 → 2643 not taken.
✗ Branch 2241 → 2242 not taken.
✓ Branch 2241 → 2243 taken 15 times.
✗ Branch 2242 → 2243 not taken.
✗ Branch 2242 → 2837 not taken.
|
30 |
if (!confirmname(line)) asar_throw_error(0, error_type_block, error_id_invalid_function_name); |
| 2578 |
|
30 |
char * endpar=strqchr(startpar, ')'); |
| 2579 |
|
|
//confirmqpar requires that all parentheses are matched, and a starting one exists, therefore it is harmless to not check for nulls |
| 2580 |
2/8
✗ Branch 2144 → 2145 not taken.
✓ Branch 2144 → 2146 taken 15 times.
✗ Branch 2145 → 2146 not taken.
✗ Branch 2145 → 2643 not taken.
✗ Branch 2244 → 2245 not taken.
✓ Branch 2244 → 2246 taken 15 times.
✗ Branch 2245 → 2246 not taken.
✗ Branch 2245 → 2837 not taken.
|
30 |
if (endpar[1]) asar_throw_error(0, error_type_block, error_id_broken_function_declaration); |
| 2581 |
|
30 |
*endpar=0; |
| 2582 |
2/4
✓ Branch 2147 → 2148 taken 15 times.
✗ Branch 2147 → 2643 not taken.
✓ Branch 2247 → 2248 taken 15 times.
✗ Branch 2247 → 2837 not taken.
|
30 |
createuserfunc(line, startpar, word[3]); |
| 2583 |
|
|
//} |
| 2584 |
|
30 |
} |
| 2585 |
12/12
✓ Branch 2150 → 2151 taken 123 times.
✓ Branch 2150 → 2154 taken 45 times.
✓ Branch 2152 → 2153 taken 48 times.
✓ Branch 2152 → 2154 taken 75 times.
✓ Branch 2155 → 2156 taken 48 times.
✓ Branch 2155 → 2167 taken 120 times.
✓ Branch 2250 → 2251 taken 123 times.
✓ Branch 2250 → 2254 taken 45 times.
✓ Branch 2252 → 2253 taken 48 times.
✓ Branch 2252 → 2254 taken 75 times.
✓ Branch 2255 → 2256 taken 48 times.
✓ Branch 2255 → 2271 taken 120 times.
|
336 |
else if (is1("print")) |
| 2586 |
|
|
{ |
| 2587 |
2/4
✓ Branch 2156 → 2157 taken 48 times.
✗ Branch 2156 → 2648 not taken.
✓ Branch 2257 → 2258 taken 48 times.
✗ Branch 2257 → 2843 not taken.
|
96 |
string out = handle_print(par); |
| 2588 |
4/4
✓ Branch 2157 → 2158 taken 32 times.
✓ Branch 2157 → 2159 taken 16 times.
✓ Branch 2258 → 2259 taken 32 times.
✓ Branch 2258 → 2260 taken 16 times.
|
96 |
if (pass!=2) return; |
| 2589 |
2/4
✓ Branch 2160 → 2161 taken 16 times.
✗ Branch 2160 → 2646 not taken.
✓ Branch 2261 → 2262 taken 16 times.
✗ Branch 2261 → 2841 not taken.
|
32 |
print(out); |
| 2590 |
4/4
✓ Branch 2163 → 2164 taken 16 times.
✓ Branch 2163 → 2166 taken 32 times.
✓ Branch 2264 → 2265 taken 16 times.
✓ Branch 2264 → 2266 taken 32 times.
|
96 |
} |
| 2591 |
8/12
✓ Branch 2167 → 2168 taken 75 times.
✓ Branch 2167 → 2171 taken 45 times.
✗ Branch 2169 → 2170 not taken.
✓ Branch 2169 → 2171 taken 75 times.
✗ Branch 2172 → 2173 not taken.
✓ Branch 2172 → 2180 taken 120 times.
✓ Branch 2271 → 2272 taken 75 times.
✓ Branch 2271 → 2275 taken 45 times.
✗ Branch 2273 → 2274 not taken.
✓ Branch 2273 → 2275 taken 75 times.
✗ Branch 2276 → 2277 not taken.
✓ Branch 2276 → 2282 taken 120 times.
|
240 |
else if (is1("reset")) |
| 2592 |
|
|
{ |
| 2593 |
|
|
if(0); |
| 2594 |
|
✗ |
else if (!stricmp(par, "bytes")) bytes=0; |
| 2595 |
|
✗ |
else if (!stricmp(par, "freespaceuse")) freespaceuse=0; |
| 2596 |
|
✗ |
else asar_throw_error(2, error_type_block, error_id_unknown_variable); |
| 2597 |
|
|
} |
| 2598 |
30/36
✓ Branch 2180 → 2181 taken 75 times.
✓ Branch 2180 → 2183 taken 45 times.
✓ Branch 2182 → 2183 taken 69 times.
✓ Branch 2182 → 2192 taken 6 times.
✓ Branch 2183 → 2184 taken 69 times.
✓ Branch 2183 → 2186 taken 45 times.
✓ Branch 2185 → 2186 taken 69 times.
✗ Branch 2185 → 2192 not taken.
✓ Branch 2186 → 2187 taken 69 times.
✓ Branch 2186 → 2189 taken 45 times.
✓ Branch 2188 → 2189 taken 69 times.
✗ Branch 2188 → 2192 not taken.
✓ Branch 2189 → 2190 taken 69 times.
✓ Branch 2189 → 2193 taken 45 times.
✗ Branch 2191 → 2192 not taken.
✓ Branch 2191 → 2193 taken 69 times.
✓ Branch 2194 → 2195 taken 6 times.
✓ Branch 2194 → 2217 taken 114 times.
✓ Branch 2282 → 2283 taken 75 times.
✓ Branch 2282 → 2285 taken 45 times.
✓ Branch 2284 → 2285 taken 69 times.
✓ Branch 2284 → 2294 taken 6 times.
✓ Branch 2285 → 2286 taken 69 times.
✓ Branch 2285 → 2288 taken 45 times.
✓ Branch 2287 → 2288 taken 69 times.
✗ Branch 2287 → 2294 not taken.
✓ Branch 2288 → 2289 taken 69 times.
✓ Branch 2288 → 2291 taken 45 times.
✓ Branch 2290 → 2291 taken 69 times.
✗ Branch 2290 → 2294 not taken.
✓ Branch 2291 → 2292 taken 69 times.
✓ Branch 2291 → 2295 taken 45 times.
✗ Branch 2293 → 2294 not taken.
✓ Branch 2293 → 2295 taken 69 times.
✓ Branch 2296 → 2297 taken 6 times.
✓ Branch 2296 → 2319 taken 114 times.
|
240 |
else if (is1("padbyte") || is1("padword") || is1("padlong") || is1("paddword")) |
| 2599 |
|
|
{ |
| 2600 |
|
12 |
int len = 0; |
| 2601 |
2/4
✓ Branch 2196 → 2197 taken 6 times.
✗ Branch 2196 → 2198 not taken.
✓ Branch 2298 → 2299 taken 6 times.
✗ Branch 2298 → 2300 not taken.
|
12 |
if (is("padbyte")) len=1; |
| 2602 |
2/4
✗ Branch 2199 → 2200 not taken.
✓ Branch 2199 → 2201 taken 6 times.
✗ Branch 2301 → 2302 not taken.
✓ Branch 2301 → 2303 taken 6 times.
|
12 |
if (is("padword")) len=2; |
| 2603 |
2/4
✗ Branch 2202 → 2203 not taken.
✓ Branch 2202 → 2204 taken 6 times.
✗ Branch 2304 → 2305 not taken.
✓ Branch 2304 → 2306 taken 6 times.
|
12 |
if (is("padlong")) len=3; |
| 2604 |
2/4
✗ Branch 2205 → 2206 not taken.
✓ Branch 2205 → 2207 taken 6 times.
✗ Branch 2307 → 2308 not taken.
✓ Branch 2307 → 2309 taken 6 times.
|
12 |
if (is("paddword")) len=4; |
| 2605 |
2/4
✓ Branch 2207 → 2208 taken 6 times.
✗ Branch 2207 → 2652 not taken.
✓ Branch 2309 → 2310 taken 6 times.
✗ Branch 2309 → 2849 not taken.
|
12 |
unsigned int val=getnum(par); |
| 2606 |
6/12
✓ Branch 2208 → 2209 taken 3 times.
✓ Branch 2208 → 2211 taken 3 times.
✗ Branch 2209 → 2210 not taken.
✓ Branch 2209 → 2211 taken 3 times.
✗ Branch 2210 → 2211 not taken.
✗ Branch 2210 → 2652 not taken.
✓ Branch 2310 → 2311 taken 3 times.
✓ Branch 2310 → 2313 taken 3 times.
✗ Branch 2311 → 2312 not taken.
✓ Branch 2311 → 2313 taken 3 times.
✗ Branch 2312 → 2313 not taken.
✗ Branch 2312 → 2849 not taken.
|
12 |
if(foundlabel && !foundlabel_static) asar_throw_warning(1, warning_id_feature_deprecated, "labels in padbyte", "just... don't."); |
| 2607 |
4/4
✓ Branch 2216 → 2212 taken 72 times.
✓ Branch 2216 → 2365 taken 6 times.
✓ Branch 2318 → 2314 taken 72 times.
✓ Branch 2318 → 2456 taken 6 times.
|
156 |
for (int i=0;i<12;i+=len) |
| 2608 |
|
|
{ |
| 2609 |
|
144 |
unsigned int tmpval=val; |
| 2610 |
4/4
✓ Branch 2214 → 2213 taken 72 times.
✓ Branch 2214 → 2215 taken 72 times.
✓ Branch 2316 → 2315 taken 72 times.
✓ Branch 2316 → 2317 taken 72 times.
|
288 |
for (int j=0;j<len;j++) |
| 2611 |
|
|
{ |
| 2612 |
|
144 |
padbyte[i+j]=(unsigned char)tmpval; |
| 2613 |
|
144 |
tmpval>>=8; |
| 2614 |
|
|
} |
| 2615 |
|
|
} |
| 2616 |
|
|
} |
| 2617 |
12/12
✓ Branch 2217 → 2218 taken 69 times.
✓ Branch 2217 → 2221 taken 45 times.
✓ Branch 2219 → 2220 taken 6 times.
✓ Branch 2219 → 2221 taken 63 times.
✓ Branch 2222 → 2223 taken 6 times.
✓ Branch 2222 → 2242 taken 108 times.
✓ Branch 2319 → 2320 taken 69 times.
✓ Branch 2319 → 2323 taken 45 times.
✓ Branch 2321 → 2322 taken 6 times.
✓ Branch 2321 → 2323 taken 63 times.
✓ Branch 2324 → 2325 taken 6 times.
✓ Branch 2324 → 2345 taken 108 times.
|
228 |
else if (is1("pad")) |
| 2618 |
|
|
{ |
| 2619 |
2/8
✗ Branch 2223 → 2224 not taken.
✓ Branch 2223 → 2225 taken 6 times.
✗ Branch 2224 → 2225 not taken.
✗ Branch 2224 → 2652 not taken.
✗ Branch 2325 → 2326 not taken.
✓ Branch 2325 → 2327 taken 6 times.
✗ Branch 2326 → 2327 not taken.
✗ Branch 2326 → 2849 not taken.
|
12 |
if ((unsigned int)realsnespos & 0xFF000000) asar_throw_error(0, error_type_block, error_id_pad_in_freespace); |
| 2620 |
2/4
✓ Branch 2225 → 2226 taken 6 times.
✗ Branch 2225 → 2652 not taken.
✓ Branch 2327 → 2328 taken 6 times.
✗ Branch 2327 → 2849 not taken.
|
12 |
int num=(int)getnum(par); |
| 2621 |
2/8
✗ Branch 2226 → 2227 not taken.
✓ Branch 2226 → 2228 taken 6 times.
✗ Branch 2227 → 2228 not taken.
✗ Branch 2227 → 2652 not taken.
✗ Branch 2328 → 2329 not taken.
✓ Branch 2328 → 2330 taken 6 times.
✗ Branch 2329 → 2330 not taken.
✗ Branch 2329 → 2849 not taken.
|
12 |
if(forwardlabel) asar_throw_error(0, error_type_block, error_id_no_labels_here); |
| 2622 |
2/12
✗ Branch 2228 → 2229 not taken.
✓ Branch 2228 → 2234 taken 6 times.
✗ Branch 2229 → 2230 not taken.
✗ Branch 2229 → 2651 not taken.
✗ Branch 2231 → 2232 not taken.
✗ Branch 2231 → 2649 not taken.
✗ Branch 2330 → 2331 not taken.
✓ Branch 2330 → 2337 taken 6 times.
✗ Branch 2332 → 2333 not taken.
✗ Branch 2332 → 2847 not taken.
✗ Branch 2334 → 2335 not taken.
✗ Branch 2334 → 2845 not taken.
|
12 |
if ((unsigned int)num & 0xFF000000) asar_throw_error(0, error_type_block, error_id_snes_address_doesnt_map_to_rom, hex6((unsigned int)num).data()); |
| 2623 |
2/4
✓ Branch 2234 → 2235 taken 6 times.
✗ Branch 2234 → 2365 not taken.
✓ Branch 2337 → 2338 taken 6 times.
✗ Branch 2337 → 2456 not taken.
|
12 |
if (num>realsnespos) |
| 2624 |
|
|
{ |
| 2625 |
|
12 |
int end=snestopc(num); |
| 2626 |
|
12 |
int start=snestopc(realsnespos); |
| 2627 |
|
12 |
int len=end-start; |
| 2628 |
6/8
✓ Branch 2238 → 2239 taken 30 times.
✗ Branch 2238 → 2652 not taken.
✓ Branch 2240 → 2238 taken 30 times.
✓ Branch 2240 → 2241 taken 6 times.
✓ Branch 2341 → 2342 taken 30 times.
✗ Branch 2341 → 2849 not taken.
✓ Branch 2343 → 2341 taken 30 times.
✓ Branch 2343 → 2344 taken 6 times.
|
72 |
for (int i=0;i<len;i++) write1(padbyte[i%12]); |
| 2629 |
2/4
✓ Branch 2241 → 2365 taken 6 times.
✗ Branch 2241 → 2652 not taken.
✓ Branch 2344 → 2456 taken 6 times.
✗ Branch 2344 → 2849 not taken.
|
12 |
add_addr_to_line(addrToLinePos); |
| 2630 |
|
|
} |
| 2631 |
|
|
} |
| 2632 |
36/36
✓ Branch 2242 → 2243 taken 63 times.
✓ Branch 2242 → 2245 taken 45 times.
✓ Branch 2244 → 2245 taken 57 times.
✓ Branch 2244 → 2254 taken 6 times.
✓ Branch 2245 → 2246 taken 57 times.
✓ Branch 2245 → 2248 taken 45 times.
✓ Branch 2247 → 2248 taken 54 times.
✓ Branch 2247 → 2254 taken 3 times.
✓ Branch 2248 → 2249 taken 54 times.
✓ Branch 2248 → 2251 taken 45 times.
✓ Branch 2250 → 2251 taken 51 times.
✓ Branch 2250 → 2254 taken 3 times.
✓ Branch 2251 → 2252 taken 51 times.
✓ Branch 2251 → 2255 taken 45 times.
✓ Branch 2253 → 2254 taken 3 times.
✓ Branch 2253 → 2255 taken 48 times.
✓ Branch 2256 → 2257 taken 15 times.
✓ Branch 2256 → 2279 taken 93 times.
✓ Branch 2345 → 2346 taken 63 times.
✓ Branch 2345 → 2348 taken 45 times.
✓ Branch 2347 → 2348 taken 57 times.
✓ Branch 2347 → 2357 taken 6 times.
✓ Branch 2348 → 2349 taken 57 times.
✓ Branch 2348 → 2351 taken 45 times.
✓ Branch 2350 → 2351 taken 54 times.
✓ Branch 2350 → 2357 taken 3 times.
✓ Branch 2351 → 2352 taken 54 times.
✓ Branch 2351 → 2354 taken 45 times.
✓ Branch 2353 → 2354 taken 51 times.
✓ Branch 2353 → 2357 taken 3 times.
✓ Branch 2354 → 2355 taken 51 times.
✓ Branch 2354 → 2358 taken 45 times.
✓ Branch 2356 → 2357 taken 3 times.
✓ Branch 2356 → 2358 taken 48 times.
✓ Branch 2359 → 2360 taken 15 times.
✓ Branch 2359 → 2382 taken 93 times.
|
216 |
else if (is1("fillbyte") || is1("fillword") || is1("filllong") || is1("filldword")) |
| 2633 |
|
|
{ |
| 2634 |
|
30 |
int len = 0; |
| 2635 |
4/4
✓ Branch 2258 → 2259 taken 6 times.
✓ Branch 2258 → 2260 taken 9 times.
✓ Branch 2361 → 2362 taken 6 times.
✓ Branch 2361 → 2363 taken 9 times.
|
30 |
if (is("fillbyte")) len=1; |
| 2636 |
4/4
✓ Branch 2261 → 2262 taken 3 times.
✓ Branch 2261 → 2263 taken 12 times.
✓ Branch 2364 → 2365 taken 3 times.
✓ Branch 2364 → 2366 taken 12 times.
|
30 |
if (is("fillword")) len=2; |
| 2637 |
4/4
✓ Branch 2264 → 2265 taken 3 times.
✓ Branch 2264 → 2266 taken 12 times.
✓ Branch 2367 → 2368 taken 3 times.
✓ Branch 2367 → 2369 taken 12 times.
|
30 |
if (is("filllong")) len=3; |
| 2638 |
4/4
✓ Branch 2267 → 2268 taken 3 times.
✓ Branch 2267 → 2269 taken 12 times.
✓ Branch 2370 → 2371 taken 3 times.
✓ Branch 2370 → 2372 taken 12 times.
|
30 |
if (is("filldword")) len=4; |
| 2639 |
2/4
✓ Branch 2269 → 2270 taken 15 times.
✗ Branch 2269 → 2652 not taken.
✓ Branch 2372 → 2373 taken 15 times.
✗ Branch 2372 → 2849 not taken.
|
30 |
unsigned int val= getnum(par); |
| 2640 |
6/12
✓ Branch 2270 → 2271 taken 3 times.
✓ Branch 2270 → 2273 taken 12 times.
✗ Branch 2271 → 2272 not taken.
✓ Branch 2271 → 2273 taken 3 times.
✗ Branch 2272 → 2273 not taken.
✗ Branch 2272 → 2652 not taken.
✓ Branch 2373 → 2374 taken 3 times.
✓ Branch 2373 → 2376 taken 12 times.
✗ Branch 2374 → 2375 not taken.
✓ Branch 2374 → 2376 taken 3 times.
✗ Branch 2375 → 2376 not taken.
✗ Branch 2375 → 2849 not taken.
|
30 |
if(foundlabel && !foundlabel_static) asar_throw_warning(1, warning_id_feature_deprecated, "labels in fillbyte", "just... don't"); |
| 2641 |
4/4
✓ Branch 2278 → 2274 taken 111 times.
✓ Branch 2278 → 2365 taken 15 times.
✓ Branch 2381 → 2377 taken 111 times.
✓ Branch 2381 → 2456 taken 15 times.
|
252 |
for (int i=0;i<12;i+=len) |
| 2642 |
|
|
{ |
| 2643 |
|
222 |
unsigned int tmpval=val; |
| 2644 |
4/4
✓ Branch 2276 → 2275 taken 180 times.
✓ Branch 2276 → 2277 taken 111 times.
✓ Branch 2379 → 2378 taken 180 times.
✓ Branch 2379 → 2380 taken 111 times.
|
582 |
for (int j=0;j<len;j++) |
| 2645 |
|
|
{ |
| 2646 |
|
360 |
fillbyte[i+j]=(unsigned char)tmpval; |
| 2647 |
|
360 |
tmpval>>=8; |
| 2648 |
|
|
} |
| 2649 |
|
|
} |
| 2650 |
|
|
} |
| 2651 |
10/12
✓ Branch 2279 → 2280 taken 48 times.
✓ Branch 2279 → 2283 taken 45 times.
✓ Branch 2281 → 2282 taken 48 times.
✗ Branch 2281 → 2283 not taken.
✓ Branch 2284 → 2285 taken 48 times.
✓ Branch 2284 → 2308 taken 45 times.
✓ Branch 2382 → 2383 taken 48 times.
✓ Branch 2382 → 2386 taken 45 times.
✓ Branch 2384 → 2385 taken 48 times.
✗ Branch 2384 → 2386 not taken.
✓ Branch 2387 → 2388 taken 48 times.
✓ Branch 2387 → 2406 taken 45 times.
|
186 |
else if (is1("arch")) |
| 2652 |
|
|
{ |
| 2653 |
2/8
✗ Branch 2285 → 2286 not taken.
✓ Branch 2285 → 2287 taken 48 times.
✗ Branch 2286 → 2287 not taken.
✗ Branch 2286 → 2652 not taken.
✗ Branch 2388 → 2389 not taken.
✓ Branch 2388 → 2390 taken 48 times.
✗ Branch 2389 → 2390 not taken.
✗ Branch 2389 → 2849 not taken.
|
96 |
if(in_spcblock) asar_throw_error(0, error_type_block, error_id_feature_unavaliable_in_spcblock); |
| 2654 |
2/8
✗ Branch 2287 → 2288 not taken.
✓ Branch 2287 → 2289 taken 48 times.
✗ Branch 2288 → 2289 not taken.
✗ Branch 2288 → 2652 not taken.
✗ Branch 2390 → 2391 not taken.
✓ Branch 2390 → 2392 taken 48 times.
✗ Branch 2391 → 2392 not taken.
✗ Branch 2391 → 2849 not taken.
|
96 |
if (emulatexkas) asar_throw_warning(0, warning_id_convert_to_asar); |
| 2655 |
5/6
✓ Branch 2289 → 2290 taken 48 times.
✗ Branch 2289 → 2652 not taken.
✓ Branch 2290 → 2291 taken 12 times.
✓ Branch 2290 → 2292 taken 36 times.
✓ Branch 2392 → 2393 taken 12 times.
✓ Branch 2392 → 2394 taken 36 times.
|
96 |
if (!stricmp(par, "65816")) { arch=arch_65816; return; } |
| 2656 |
5/6
✓ Branch 2292 → 2293 taken 36 times.
✗ Branch 2292 → 2652 not taken.
✓ Branch 2293 → 2294 taken 15 times.
✓ Branch 2293 → 2295 taken 21 times.
✓ Branch 2394 → 2395 taken 15 times.
✓ Branch 2394 → 2396 taken 21 times.
|
72 |
if (!stricmp(par, "spc700")) { arch=arch_spc700; return; } |
| 2657 |
7/10
✓ Branch 2295 → 2296 taken 21 times.
✗ Branch 2295 → 2652 not taken.
✓ Branch 2296 → 2297 taken 3 times.
✓ Branch 2296 → 2299 taken 18 times.
✓ Branch 2297 → 2298 taken 3 times.
✗ Branch 2297 → 2652 not taken.
✓ Branch 2396 → 2397 taken 3 times.
✓ Branch 2396 → 2399 taken 18 times.
✓ Branch 2397 → 2398 taken 3 times.
✗ Branch 2397 → 2849 not taken.
|
42 |
if (!stricmp(par, "spc700-inline")) { asar_throw_warning(1, warning_id_feature_deprecated, "spc700-inline", " Use spcblock and endspcblock"); arch=arch_spc700_inline; return; } |
| 2658 |
5/6
✓ Branch 2299 → 2300 taken 18 times.
✗ Branch 2299 → 2652 not taken.
✓ Branch 2300 → 2301 taken 6 times.
✓ Branch 2300 → 2305 taken 12 times.
✓ Branch 2399 → 2400 taken 6 times.
✓ Branch 2399 → 2404 taken 12 times.
|
36 |
if (!stricmp(par, "spc700-raw")) { |
| 2659 |
2/4
✓ Branch 2301 → 2302 taken 6 times.
✗ Branch 2301 → 2652 not taken.
✓ Branch 2400 → 2401 taken 6 times.
✗ Branch 2400 → 2849 not taken.
|
12 |
asar_throw_warning(1, warning_id_feature_deprecated, "spc700-raw", " Use arch spc700 with norom"); |
| 2660 |
|
12 |
arch=arch_spc700; |
| 2661 |
|
12 |
mapper=norom; |
| 2662 |
|
12 |
mapper_set = false; |
| 2663 |
2/4
✓ Branch 2302 → 2303 taken 6 times.
✗ Branch 2302 → 2304 not taken.
✓ Branch 2401 → 2402 taken 6 times.
✗ Branch 2401 → 2403 not taken.
|
12 |
if(!force_checksum_fix) |
| 2664 |
|
12 |
checksum_fix_enabled = false; |
| 2665 |
|
12 |
return; |
| 2666 |
|
|
} |
| 2667 |
3/6
✓ Branch 2305 → 2306 taken 12 times.
✗ Branch 2305 → 2652 not taken.
✓ Branch 2306 → 2307 taken 12 times.
✗ Branch 2306 → 2365 not taken.
✓ Branch 2404 → 2405 taken 12 times.
✗ Branch 2404 → 2456 not taken.
|
24 |
if (!stricmp(par, "superfx")) { arch=arch_superfx; return; } |
| 2668 |
|
|
} |
| 2669 |
4/12
✗ Branch 2308 → 2309 not taken.
✓ Branch 2308 → 2312 taken 45 times.
✗ Branch 2310 → 2311 not taken.
✗ Branch 2310 → 2312 not taken.
✗ Branch 2313 → 2314 not taken.
✓ Branch 2313 → 2328 taken 45 times.
✗ Branch 2406 → 2407 not taken.
✓ Branch 2406 → 2410 taken 45 times.
✗ Branch 2408 → 2409 not taken.
✗ Branch 2408 → 2410 not taken.
✗ Branch 2411 → 2412 not taken.
✓ Branch 2411 → 2422 taken 45 times.
|
90 |
else if (is2("math")) |
| 2670 |
|
|
{ |
| 2671 |
|
✗ |
bool val = false; |
| 2672 |
|
|
if(0); |
| 2673 |
|
✗ |
else if (!stricmp(word[2], "on")) val=true; |
| 2674 |
|
✗ |
else if (!stricmp(word[2], "off")) val=false; |
| 2675 |
|
✗ |
else asar_throw_error(0, error_type_block, error_id_invalid_math); |
| 2676 |
|
|
if(0); |
| 2677 |
|
✗ |
else if (!stricmp(word[1], "pri")){ math_pri=val; asar_throw_warning(2, warning_id_feature_deprecated, "math pri", "Rewrite your math statements using parentheses where needed and put \"asar 1.90\" in your patch to enable the future behavior of always enforcing math prioritization rules"); } |
| 2678 |
|
✗ |
else if (!stricmp(word[1], "round")){ math_round=val; asar_throw_warning(2, warning_id_feature_deprecated, "math round", "Put \"asar 1.90\" in your patch to enable the future behavior of never rounding intermediate results. Call the round(), floor() or ceil() functions in places where intermediate rounding is required"); } |
| 2679 |
|
✗ |
else asar_throw_error(0, error_type_block, error_id_invalid_math); |
| 2680 |
|
|
} |
| 2681 |
4/12
✗ Branch 2328 → 2329 not taken.
✓ Branch 2328 → 2332 taken 45 times.
✗ Branch 2330 → 2331 not taken.
✗ Branch 2330 → 2332 not taken.
✗ Branch 2333 → 2334 not taken.
✓ Branch 2333 → 2346 taken 45 times.
✗ Branch 2422 → 2423 not taken.
✓ Branch 2422 → 2426 taken 45 times.
✗ Branch 2424 → 2425 not taken.
✗ Branch 2424 → 2426 not taken.
✗ Branch 2427 → 2428 not taken.
✓ Branch 2427 → 2437 taken 45 times.
|
90 |
else if (is2("warn")) |
| 2682 |
|
|
{ |
| 2683 |
|
✗ |
bool val = false; |
| 2684 |
|
|
if(0); |
| 2685 |
|
✗ |
else if (!stricmp(word[2], "on")) val=true; |
| 2686 |
|
✗ |
else if (!stricmp(word[2], "off")) val=false; |
| 2687 |
|
✗ |
else asar_throw_error(0, error_type_block, error_id_invalid_warn); |
| 2688 |
|
|
if(0); |
| 2689 |
|
✗ |
else if (!stricmp(word[1], "xkas")) { |
| 2690 |
|
✗ |
asar_throw_warning(0, warning_id_feature_deprecated, "xkas compatibility warning", "If you worry about xkas I worry about you. Just stop."); |
| 2691 |
|
✗ |
warnxkas=val; |
| 2692 |
|
|
} |
| 2693 |
|
✗ |
else asar_throw_error(0, error_type_block, error_id_invalid_warn); |
| 2694 |
|
|
} |
| 2695 |
10/12
✓ Branch 2346 → 2347 taken 45 times.
✗ Branch 2346 → 2350 not taken.
✓ Branch 2348 → 2349 taken 3 times.
✓ Branch 2348 → 2350 taken 42 times.
✓ Branch 2351 → 2352 taken 3 times.
✓ Branch 2351 → 2353 taken 42 times.
✓ Branch 2437 → 2438 taken 45 times.
✗ Branch 2437 → 2441 not taken.
✓ Branch 2439 → 2440 taken 3 times.
✓ Branch 2439 → 2441 taken 42 times.
✓ Branch 2442 → 2443 taken 3 times.
✓ Branch 2442 → 2444 taken 42 times.
|
90 |
else if (is0("fastrom")) |
| 2696 |
|
|
{ |
| 2697 |
2/4
✓ Branch 2352 → 2365 taken 3 times.
✗ Branch 2352 → 2652 not taken.
✓ Branch 2443 → 2456 taken 3 times.
✗ Branch 2443 → 2849 not taken.
|
6 |
asar_throw_warning(0, warning_id_feature_deprecated, "fastrom", "This feature has been disabled for years and is a lie. Sorry."); |
| 2698 |
|
|
//removed due to causing more trouble than it's worth. |
| 2699 |
|
|
//if (emulatexkas) warn0("Convert the patch to native Asar format instead of making an Asar-only xkas patch."); |
| 2700 |
|
|
//if (mapper==lorom || mapper==hirom) fastrom=true; |
| 2701 |
|
|
//else error(0, "Can't use fastrom in this mapper."); |
| 2702 |
|
|
} |
| 2703 |
16/20
✓ Branch 2353 → 2354 taken 42 times.
✗ Branch 2353 → 2356 not taken.
✓ Branch 2355 → 2356 taken 24 times.
✓ Branch 2355 → 2359 taken 18 times.
✓ Branch 2356 → 2357 taken 24 times.
✗ Branch 2356 → 2360 not taken.
✓ Branch 2358 → 2359 taken 18 times.
✓ Branch 2358 → 2360 taken 6 times.
✓ Branch 2361 → 2362 taken 6 times.
✓ Branch 2361 → 2365 taken 36 times.
✓ Branch 2444 → 2445 taken 42 times.
✗ Branch 2444 → 2447 not taken.
✓ Branch 2446 → 2447 taken 24 times.
✓ Branch 2446 → 2450 taken 18 times.
✓ Branch 2447 → 2448 taken 24 times.
✗ Branch 2447 → 2451 not taken.
✓ Branch 2449 → 2450 taken 18 times.
✓ Branch 2449 → 2451 taken 6 times.
✓ Branch 2452 → 2453 taken 6 times.
✓ Branch 2452 → 2456 taken 36 times.
|
84 |
else if (is0("{") || is0("}")) {} |
| 2704 |
|
|
else |
| 2705 |
|
|
{ |
| 2706 |
2/4
✗ Branch 2362 → 2363 not taken.
✓ Branch 2362 → 2364 taken 6 times.
✗ Branch 2453 → 2454 not taken.
✓ Branch 2453 → 2455 taken 6 times.
|
12 |
if (isspecialline) |
| 2707 |
|
|
{ |
| 2708 |
|
✗ |
asar_throw_warning(0, warning_id_unrecognized_special_command); |
| 2709 |
|
|
} |
| 2710 |
|
|
else |
| 2711 |
|
|
{ |
| 2712 |
2/4
✗ Branch 2364 → 2365 not taken.
✓ Branch 2364 → 2652 taken 6 times.
✗ Branch 2455 → 2456 not taken.
✓ Branch 2455 → 2849 taken 6 times.
|
12 |
asar_throw_error(1, error_type_block, error_id_unknown_command); |
| 2713 |
|
|
} |
| 2714 |
|
|
} |
| 2715 |
|
|
|
| 2716 |
12/12
✓ Branch 2367 → 2368 taken 325371 times.
✓ Branch 2367 → 2369 taken 112023 times.
✓ Branch 2371 → 2372 taken 325371 times.
✓ Branch 2371 → 2373 taken 112023 times.
✓ Branch 2375 → 2376 taken 325371 times.
✓ Branch 2375 → 2378 taken 112023 times.
✓ Branch 2458 → 2459 taken 325371 times.
✓ Branch 2458 → 2460 taken 112023 times.
✓ Branch 2462 → 2463 taken 325371 times.
✓ Branch 2462 → 2464 taken 112023 times.
✓ Branch 2466 → 2467 taken 325371 times.
✓ Branch 2466 → 2468 taken 112023 times.
|
1324806 |
} |
| 2717 |
|
|
|
| 2718 |
|
7558 |
bool assemblemapper(char** word, int numwords) |
| 2719 |
|
|
{ |
| 2720 |
|
7558 |
auto previous_mapper = mapper; |
| 2721 |
|
|
if(0); |
| 2722 |
6/6
✓ Branch 2 → 3 taken 722 times.
✓ Branch 2 → 6 taken 6836 times.
✓ Branch 4 → 5 taken 72 times.
✓ Branch 4 → 6 taken 650 times.
✓ Branch 7 → 8 taken 72 times.
✓ Branch 7 → 9 taken 7486 times.
|
7558 |
else if (is0("lorom")) |
| 2723 |
|
|
{ |
| 2724 |
|
|
//this also makes xkas set snespos to $008000 for some reason |
| 2725 |
|
72 |
mapper=lorom; |
| 2726 |
|
|
} |
| 2727 |
6/6
✓ Branch 9 → 10 taken 650 times.
✓ Branch 9 → 13 taken 6836 times.
✓ Branch 11 → 12 taken 14 times.
✓ Branch 11 → 13 taken 636 times.
✓ Branch 14 → 15 taken 14 times.
✓ Branch 14 → 16 taken 7472 times.
|
7486 |
else if (is0("hirom")) |
| 2728 |
|
|
{ |
| 2729 |
|
|
//xkas makes this point to $C00000 |
| 2730 |
|
14 |
mapper=hirom; |
| 2731 |
|
|
} |
| 2732 |
6/6
✓ Branch 16 → 17 taken 636 times.
✓ Branch 16 → 20 taken 6836 times.
✓ Branch 18 → 19 taken 6 times.
✓ Branch 18 → 20 taken 630 times.
✓ Branch 21 → 22 taken 6 times.
✓ Branch 21 → 23 taken 7466 times.
|
7472 |
else if (is0("exlorom")) |
| 2733 |
|
|
{ |
| 2734 |
|
6 |
mapper = exlorom; |
| 2735 |
|
|
} |
| 2736 |
6/6
✓ Branch 23 → 24 taken 630 times.
✓ Branch 23 → 27 taken 6836 times.
✓ Branch 25 → 26 taken 6 times.
✓ Branch 25 → 27 taken 624 times.
✓ Branch 28 → 29 taken 6 times.
✓ Branch 28 → 30 taken 7460 times.
|
7466 |
else if (is0("exhirom")) |
| 2737 |
|
|
{ |
| 2738 |
|
6 |
mapper=exhirom; |
| 2739 |
|
|
} |
| 2740 |
6/6
✓ Branch 30 → 31 taken 624 times.
✓ Branch 30 → 34 taken 6836 times.
✓ Branch 32 → 33 taken 12 times.
✓ Branch 32 → 34 taken 612 times.
✓ Branch 35 → 36 taken 12 times.
✓ Branch 35 → 37 taken 7448 times.
|
7460 |
else if (is0("sfxrom")) |
| 2741 |
|
|
{ |
| 2742 |
|
12 |
mapper=sfxrom; |
| 2743 |
|
|
//fastrom=false; |
| 2744 |
|
|
} |
| 2745 |
6/6
✓ Branch 37 → 38 taken 612 times.
✓ Branch 37 → 41 taken 6836 times.
✓ Branch 39 → 40 taken 18 times.
✓ Branch 39 → 41 taken 594 times.
✓ Branch 42 → 43 taken 18 times.
✓ Branch 42 → 45 taken 7430 times.
|
7448 |
else if (is0("norom")) |
| 2746 |
|
|
{ |
| 2747 |
|
|
//$000000 would be the best snespos for this, but I don't care |
| 2748 |
|
18 |
mapper=norom; |
| 2749 |
|
|
//fastrom=false; |
| 2750 |
1/3
✓ Branch 43 → 44 taken 18 times.
✗ Branch 43 → 89 not taken.
✗ Branch 43 → 92 not taken.
|
18 |
if(!force_checksum_fix) |
| 2751 |
|
18 |
checksum_fix_enabled = false;//we don't know where the header is, so don't set the checksum |
| 2752 |
|
|
} |
| 2753 |
6/6
✓ Branch 45 → 46 taken 594 times.
✓ Branch 45 → 49 taken 6836 times.
✓ Branch 47 → 48 taken 6 times.
✓ Branch 47 → 49 taken 588 times.
✓ Branch 50 → 51 taken 6 times.
✓ Branch 50 → 52 taken 7424 times.
|
7430 |
else if (is0("fullsa1rom")) |
| 2754 |
|
|
{ |
| 2755 |
|
6 |
mapper=bigsa1rom; |
| 2756 |
|
|
//fastrom=false; |
| 2757 |
|
|
} |
| 2758 |
3/3
✓ Branch 53 → 54 taken 24 times.
✓ Branch 53 → 81 taken 3700 times.
✓ Branch 53 → 84 taken 3700 times.
|
7424 |
else if (is("sa1rom")) |
| 2759 |
|
|
{ |
| 2760 |
|
|
//fastrom=false; |
| 2761 |
3/3
✓ Branch 54 → 55 taken 18 times.
✓ Branch 54 → 79 taken 3 times.
✓ Branch 54 → 82 taken 3 times.
|
24 |
if (par) |
| 2762 |
|
|
{ |
| 2763 |
1/5
✗ Branch 55 → 56 not taken.
✓ Branch 55 → 57 taken 18 times.
✗ Branch 56 → 57 not taken.
✗ Branch 56 → 99 not taken.
✗ Branch 56 → 102 not taken.
|
18 |
if (word[2]) asar_throw_error(0, error_type_block, error_id_invalid_mapper); |
| 2764 |
1/2
✓ Branch 59 → 60 taken 18 times.
✗ Branch 59 → 69 not taken.
|
36 |
if (!is_digit(par[0]) || par[1]!=',' || |
| 2765 |
2/4
✓ Branch 61 → 62 taken 18 times.
✗ Branch 61 → 69 not taken.
✓ Branch 62 → 63 taken 18 times.
✗ Branch 62 → 69 not taken.
|
18 |
!is_digit(par[2]) || par[3]!=',' || |
| 2766 |
2/4
✓ Branch 64 → 65 taken 18 times.
✗ Branch 64 → 69 not taken.
✓ Branch 65 → 66 taken 18 times.
✗ Branch 65 → 69 not taken.
|
18 |
!is_digit(par[4]) || par[5]!=',' || |
| 2767 |
4/11
✓ Branch 58 → 59 taken 18 times.
✗ Branch 58 → 69 not taken.
✓ Branch 67 → 68 taken 18 times.
✗ Branch 67 → 69 not taken.
✗ Branch 68 → 69 not taken.
✓ Branch 68 → 70 taken 18 times.
✗ Branch 71 → 72 not taken.
✓ Branch 71 → 73 taken 18 times.
✗ Branch 72 → 73 not taken.
✗ Branch 72 → 99 not taken.
✗ Branch 72 → 102 not taken.
|
36 |
!is_digit(par[6]) || par[7]) asar_throw_error(0, error_type_block, error_id_invalid_mapper); |
| 2768 |
|
9 |
int len; |
| 2769 |
2/4
✓ Branch 73 → 74 taken 9 times.
✗ Branch 73 → 99 not taken.
✓ Branch 75 → 76 taken 9 times.
✗ Branch 75 → 102 not taken.
|
18 |
autoptr<char**> pars=qpsplit(par, ",", &len); |
| 2770 |
2/8
✗ Branch 75 → 76 not taken.
✓ Branch 75 → 77 taken 9 times.
✗ Branch 76 → 77 not taken.
✗ Branch 76 → 97 not taken.
✗ Branch 77 → 78 not taken.
✓ Branch 77 → 79 taken 9 times.
✗ Branch 78 → 79 not taken.
✗ Branch 78 → 100 not taken.
|
18 |
if (len!=4) asar_throw_error(0, error_type_block, error_id_invalid_mapper); |
| 2771 |
|
18 |
sa1banks[0]=(par[0]-'0')<<20; |
| 2772 |
|
18 |
sa1banks[1]=(par[2]-'0')<<20; |
| 2773 |
|
18 |
sa1banks[4]=(par[4]-'0')<<20; |
| 2774 |
|
18 |
sa1banks[5]=(par[6]-'0')<<20; |
| 2775 |
|
18 |
} |
| 2776 |
|
|
else |
| 2777 |
|
|
{ |
| 2778 |
|
6 |
sa1banks[0]=0<<20; |
| 2779 |
|
6 |
sa1banks[1]=1<<20; |
| 2780 |
|
6 |
sa1banks[4]=2<<20; |
| 2781 |
|
6 |
sa1banks[5]=3<<20; |
| 2782 |
|
|
} |
| 2783 |
|
24 |
mapper=sa1rom; |
| 2784 |
|
|
} |
| 2785 |
7/10
✓ Branch 81 → 82 taken 291 times.
✓ Branch 81 → 85 taken 3409 times.
✗ Branch 83 → 84 not taken.
✓ Branch 83 → 85 taken 291 times.
✓ Branch 84 → 85 taken 291 times.
✓ Branch 84 → 88 taken 3409 times.
✗ Branch 86 → 87 not taken.
✓ Branch 86 → 88 taken 3991 times.
✗ Branch 89 → 90 not taken.
✓ Branch 89 → 91 taken 3700 times.
|
7400 |
else if (is0("header")) |
| 2786 |
|
|
{ |
| 2787 |
|
|
//headers are detected elsewhere; ignoring for familiarity |
| 2788 |
|
✗ |
asar_throw_warning(0, warning_id_feature_deprecated, "header", "Remove command, unnecessary."); |
| 2789 |
|
|
} |
| 2790 |
|
7400 |
else return false; |
| 2791 |
|
|
|
| 2792 |
2/4
✗ Branch 89 → 90 not taken.
✓ Branch 89 → 91 taken 79 times.
✗ Branch 92 → 93 not taken.
✓ Branch 92 → 94 taken 79 times.
|
158 |
if(in_spcblock) asar_throw_error(0, error_type_block, error_id_feature_unavaliable_in_spcblock); |
| 2793 |
4/4
✓ Branch 91 → 92 taken 46 times.
✓ Branch 91 → 93 taken 33 times.
✓ Branch 94 → 95 taken 46 times.
✓ Branch 94 → 96 taken 33 times.
|
158 |
if(!mapper_set){ |
| 2794 |
|
92 |
mapper_set = true; |
| 2795 |
4/4
✓ Branch 93 → 94 taken 27 times.
✓ Branch 93 → 95 taken 6 times.
✓ Branch 96 → 97 taken 27 times.
✓ Branch 96 → 98 taken 6 times.
|
66 |
}else if(previous_mapper != mapper){ |
| 2796 |
|
54 |
asar_throw_warning(1, warning_id_mapper_already_set); |
| 2797 |
|
|
} |
| 2798 |
|
158 |
return true; |
| 2799 |
|
|
} |
| 2800 |
|
|
|