merge lane L3: trade/spy workload (watchpoint modes unioned: modcount|tshn|snlv|cont)

This commit is contained in:
alex 2026-09-08 19:48:07 -04:00
parent c36b560cf0
commit 16b1e65fa3

View file

@ -20,18 +20,14 @@ int g_players = 2;
char g_outPath[MAX_PATH] = {}; char g_outPath[MAX_PATH] = {};
// Which four addresses the single arming point computes. `modcount` is lane W2's set and is the // Which four addresses the single arming point computes. `modcount` is lane W2's set and is the
<<<<<<< HEAD // default so its run stays reproducible byte for byte; `tshn` is lane W3's; `snlv` is lane L1's;
// default so its run stays reproducible byte for byte; `tshn` is lane W3's. // `cont` is lane L3's.
enum class Mode { ModCount, Tshn, Snlv };
=======
// default so its run stays reproducible byte for byte; `tshn` is lane W3's; `cont` is lane L3's.
// //
// `cont` differs from the other two in one further respect: it re-arms and re-logs on EVERY End // `cont` differs from the others in one further respect: it re-arms and re-logs on EVERY End Turn
// Turn rather than only the first. The other two modes measure one turn of one save, where arming // rather than only the first. The other modes measure one turn of one save, where arming once is
// once is right. L3's workload is a game played forward across many turns and the question is // right. L3's workload is a game played forward across many turns and the question is "did the
// "did the container grow on turn N", which needs a line per turn. // container grow on turn N", which needs a line per turn.
enum class Mode { ModCount, Tshn, Cont }; enum class Mode { ModCount, Tshn, Snlv, Cont };
>>>>>>> wip/l3
Mode g_mode = Mode::ModCount; Mode g_mode = Mode::ModCount;
// ---- what is being watched ------------------------------------------------------------------ // ---- what is being watched ------------------------------------------------------------------
@ -505,13 +501,9 @@ extern "C" void WatchOnApplyAll(void* self) {
g_watchAddr[2] = 0; g_watchAddr[2] = 0;
g_watchAddr[3] = 0; g_watchAddr[3] = 0;
<<<<<<< HEAD
if (g_mode == Mode::Tshn || g_mode == Mode::Snlv) {
=======
if (g_mode == Mode::Cont) { if (g_mode == Mode::Cont) {
ArmContSlots(S); ArmContSlots(S);
} else if (g_mode == Mode::Tshn) { } else if (g_mode == Mode::Tshn || g_mode == Mode::Snlv) {
>>>>>>> wip/l3
ArmTshnSlots(S); ArmTshnSlots(S);
} else { } else {
@ -604,13 +596,9 @@ bool watch_apply_config(const char* key, const char* value, std::string* err) {
if (std::strcmp(key, "watch.mode") == 0) { if (std::strcmp(key, "watch.mode") == 0) {
if (std::strcmp(value, "modcount") == 0) g_mode = Mode::ModCount; if (std::strcmp(value, "modcount") == 0) g_mode = Mode::ModCount;
else if (std::strcmp(value, "tshn") == 0) g_mode = Mode::Tshn; else if (std::strcmp(value, "tshn") == 0) g_mode = Mode::Tshn;
<<<<<<< HEAD
else if (std::strcmp(value, "snlv") == 0) g_mode = Mode::Snlv; else if (std::strcmp(value, "snlv") == 0) g_mode = Mode::Snlv;
else if (err) *err = "expected modcount|tshn|snlv";
=======
else if (std::strcmp(value, "cont") == 0) g_mode = Mode::Cont; else if (std::strcmp(value, "cont") == 0) g_mode = Mode::Cont;
else if (err) *err = "expected modcount|tshn|cont"; else if (err) *err = "expected modcount|tshn|snlv|cont";
>>>>>>> wip/l3
return true; return true;
} }
if (std::strcmp(key, "watch.out") == 0) { if (std::strcmp(key, "watch.out") == 0) {