Read the rest of what a .udc file says, and score what N1MM scores
Two pieces of work on the scoring engine. The .udc reader now takes N1MM's published scoring vocabulary: the full PointsPerContact condition set, the PointsMultBy family, PowerMult, BonusPoints, the multiplier sources and the settings that say which stations bring a multiplier in. MultMult is a weight rather than a switch, as in N1MM's ComputeScore. The entry categories and the sent exchange reach the rules in a new ContestEntry, so a contest can score by the power category it is entered in or by what this station sends. Then every contest in a real N1MM log was scored again from these rules and compared with the points and multiplier flags N1MM wrote. That found five bugs: ARRL DX and IARU read the exchange from the wrong column, a stored " " was read as a value rather than as empty, CQ WW RTTY's own Canadian area names were not counted, a maritime mobile scored nothing, and a contact in a mode the contest does not run scored as if it were in the contest. docs/n1mm-interop.md has the check and what still differs. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RoGtneMQaz4M9w7Kk49AVD
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# What is not finished, and what has not been tested
|
||||
|
||||
Two separate lists. A feature can be finished and untested, or half-built and
|
||||
exercised every day. Written 2026-08-27.
|
||||
exercised every day. Written 2026-08-27, updated 2026-08-31.
|
||||
|
||||
## Never run against the real thing
|
||||
|
||||
@@ -107,10 +107,24 @@ needs QTC traffic, IOTA needs island references as multipliers, and CQ WW RTTY
|
||||
needed a third multiplier and its own points table because it shares a name
|
||||
with the CW and SSB running of the contest.
|
||||
|
||||
What `.udc` cannot say here yet: an exchange that differs by the other
|
||||
station's country (the OK/OM district against a serial number from everyone
|
||||
else), points that depend on a zone or a distance, and multiplier sources
|
||||
beyond country, prefix, zone, section, exchange, grid and continent.
|
||||
`.udc` settings that are still passed over. `CallHist` as a multiplier source,
|
||||
which takes the value from the call history file. `BonusPoints2`, which reads
|
||||
the bonus callsigns from a file. `MultiplierBands`, `MultWindowType` and
|
||||
`QsoErrorString`, which are about the windows rather than the score.
|
||||
`CabrilloString`, `CabrilloFormat` and `GenericPrintString`, so a contest whose
|
||||
Cabrillo line is not callsign, report and one exchange value comes out in the
|
||||
default shape. The session, off-time and band-change settings
|
||||
(`MultipleSessions`, `MinimumOffTime`, the `…BandChange…` family,
|
||||
`DupeQSOMinutesAgo`) are read by nothing, so a contest with periods is logged
|
||||
as one long session.
|
||||
|
||||
N1MM's `.udc` format has no way to say that the exchange itself differs by the
|
||||
other station's country, as the OK/OM DX contest asks a district from OK and OM
|
||||
stations and a serial number from everyone else. That one needs code, as it
|
||||
does in N1MM, and `Contest.SkipsField` is where it goes. A contest scored by
|
||||
what this station sends — YOTA counts the sent exchange — needs code too, and
|
||||
reads `QsoContext.Entry`, which carries the entry categories and the sent
|
||||
exchange.
|
||||
|
||||
## Known rough edges
|
||||
|
||||
|
||||
Reference in New Issue
Block a user