projects
/
rocksndiamonds.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
8012cb5
)
improved command to automatically patch tapes
author
Holger Schemel
<info@artsoft.org>
Sat, 2 Jan 2021 01:17:02 +0000
(
02:17
+0100)
committer
Holger Schemel
<info@artsoft.org>
Sat, 2 Jan 2021 01:17:02 +0000
(
02:17
+0100)
src/tape.c
patch
|
blob
|
history
diff --git
a/src/tape.c
b/src/tape.c
index 70791579eac89cadd48d15bdb70d83a4d3176a3f..d6f89455405ea725b5c3de389cf4ed92960e5c23 100644
(file)
--- a/
src/tape.c
+++ b/
src/tape.c
@@
-1493,14
+1493,14
@@
static boolean PatchTape(struct TapeInfo *tape, char *mode)
return FALSE;
}
return FALSE;
}
- byte property_bits = tape->property_bits;
+ boolean unpatch_tape = FALSE;
+ boolean use_property_bit = FALSE;
byte property_bitmask = 0;
byte property_bitmask = 0;
- boolean set_property_bit = TRUE;
if (strSuffix(mode, ":0") ||
strSuffix(mode, ":off") ||
strSuffix(mode, ":clear"))
if (strSuffix(mode, ":0") ||
strSuffix(mode, ":off") ||
strSuffix(mode, ":clear"))
-
set_property_bit = FALS
E;
+
unpatch_tape = TRU
E;
if (strEqual(mode, "em_random_bug") || strPrefix(mode, "em_random_bug:"))
{
if (strEqual(mode, "em_random_bug") || strPrefix(mode, "em_random_bug:"))
{
@@
-1514,6
+1514,8
@@
static boolean PatchTape(struct TapeInfo *tape, char *mode)
}
property_bitmask = TAPE_PROPERTY_EM_RANDOM_BUG;
}
property_bitmask = TAPE_PROPERTY_EM_RANDOM_BUG;
+
+ use_property_bit = TRUE;
}
else
{
}
else
{
@@
-1522,22
+1524,29
@@
static boolean PatchTape(struct TapeInfo *tape, char *mode)
return FALSE;
}
return FALSE;
}
- if (set_property_bit)
- property_bits |= property_bitmask;
- else
- property_bits &= ~property_bitmask;
-
- if (property_bits == tape->property_bits)
+ // patching tapes using property bits may be used for several patch modes
+ if (use_property_bit)
{
{
- Print("Tape already patched for '%s'!\n", mode);
+ byte property_bits = tape->property_bits;
+ boolean set_property_bit = (unpatch_tape ? FALSE : TRUE);
- return FALSE;
+ if (set_property_bit)
+ property_bits |= property_bitmask;
+ else
+ property_bits &= ~property_bitmask;
+
+ if (property_bits == tape->property_bits)
+ {
+ Print("Tape already patched for '%s'!\n", mode);
+
+ return FALSE;
+ }
+
+ tape->property_bits = property_bits;
}
Print("Patching for '%s' ... ", mode);
}
Print("Patching for '%s' ... ", mode);
- tape->property_bits = property_bits;
-
return TRUE;
}
return TRUE;
}