Build Capital Quest for CoCo 3 with maps and emulator tests

This commit is contained in:
Brian Holman committed 2026-11-09 18:44:56 -07:00
commit 9f7d6f4786
44 files changed
+6238

No files matched your search

+43
View File
@@ -0,0 +1,43 @@
# Public VCC Plus MCP workflow
The project was connected using C Development → Assistant → Use Project
Makefile + Allow Disposable Playtests → Save Private Connection. Grants stayed
outside the checkout. `tools/vcc_mcp.py` is a normal STDIO JSON-RPC client for
`/Applications/VCC Plus.app/Contents/Helpers/vcc-mcp --grant FILE`; it does not
use a private bridge or debugger memory/register writes.
Live tools were discovered with `tools/list`, followed by `get_capabilities`.
Builds used advertised `disk` actions and `Test`/`Release` configurations.
`start_playtest` booted exact artifact disks on isolated 512 KB MC6809 workers.
Every simulated press used `playtest_input` physical-key plans with separate
release fields. `capture_playtest` supplied the actual 640×480 framebuffer.
PNG pixels were decoded at the game's 320×192 coordinates. Text was matched
against the font bytes in the corresponding linked build, so checks observed
what the guest drew, rather than trusting host quiz variables. Selected-state
pixels were also checked against each state's drawing mask.
VCC Plus protects the approved recipe and source revision. After changing
recipe/support inputs, export a fresh connection. Put captures and test logs
outside the watched project until a run finishes: adding files can advance
the project revision and end its test run. Every intended input needs a fresh
request ID; only identical retries reuse one.
## Limitations and reusable improvements
The public playtest key enum omits **period** and other punctuation. `St Paul`
and mixed-case answers were played in the guest; `St. Paul` was verified by
the shared C logic tests. A reusable improvement is to expose the remaining
physical CoCo punctuation keys (or a documented ASCII-to-key-chord input tool)
with the same field bounds and idempotency receipts.
The approved custom-Make build receipt did not advertise verified C/function
stop lists. A general pause followed by `get_debug_snapshot` returned
`verified_pause_required`. No memory was guessed or modified to work around
that refusal. Gameplay checks used framebuffer captures and ordinary inputs.
A reusable improvement is to expose the native workbench's verified C mapping
and shared globals in custom-Make artifact receipts, or document a public
manifest schema for ordinary, non-banked binaries.
These limits do not prevent building or playing the complete quiz. They limit
the automated punctuation and source-debug inspection coverage described in
TESTING.md. The user's original machine, disks and tape were preserved.
+80
View File
@@ -0,0 +1,80 @@
# Test results — 2026-11-09
Built and played with installed **VCC Plus 3.5.0, build 41**, bundled **CMOC 0.1.100**,
and the exported **public STDIO MCP interface**. All gameplay ran in disposable
**512 KB MC6809** workers. Inputs used ordinary physical guest key chords, with
release fields between presses. No guest memory or registers were modified by
a debugger. Personal emulator media and the original running machine were preserved.
## Final source validation
| Check | Result |
| --- | --- |
| Release, Debug, Test disk builds | All succeeded; no diagnostics |
| Complete multiple-choice quiz | 50 unique states, numbering 1–50, 42/50 (84%) |
| Complete typed quiz | 50 unique states, 47/50 (94%), 2 spelling corrections |
| Complete ordinary Release quiz | 50 unique states, 50/50 (100%), perfect review |
| Four distinct choices and varied correct slots | All 50 captured questions checked |
| Full state name and current-state fill | All 50 national framebuffer masks checked |
| Alaska / Hawaii / Northeast | Actual captures inspected; Hawaii island grouping corrected |
| Typed casing | Uppercase, lowercase and mixed case actually entered |
| Spaces and aliases | Multiword names, surrounding/repeated spaces, mixed-case St Paul |
| Spelling retry | Charleston and Denver transpositions: no early point/reveal; Backspace edits then correct |
| Reveal | Near Tallahassee spelling → V reveals and records a miss |
| Known wrong capital | Austin for Connecticut → incorrect, not spelling retry |
| Long input | 45 attempted X characters: bounded at 39; Enter and subsequent questions work |
| Missed review | Eight MC misses over 3 pages, three typed misses over 1 page; state, entered answer and capital checked |
| Held key | First answer held 600 fields through feedback; no accidental advance |
| Replay | P returns to mode menu; Release starts a different first-five-state order |
| Credits | Source URL, license URL and adaptation notice read from actual framebuffer |
| Exit | Title and results Quit return to BASIC with final thank-you text |
Host checks additionally passed **2,000 shuffles**, **100,000 choice sets**, all
50 exact capitals in varied casing, all **2,450** wrong-capital pairs, all
Saint Paul aliases (including **St. Paul**), edit-distance/transposition cases,
long-string bounds, one-point-per-state guarding, correction accounting and reset.
Geometry checks cover 50 unique stable IDs, disjoint bounded spans and all
national masks, plus Northeast and Hawaii detail coverage. The Hawaii detail
contains only Hawaiian state pixels. The geography converter uses explicit
inset rules for detached Hawaiian/Alaskan islands and Michigan’s Upper Peninsula.
## Reproduce and inspect
Run `make test` for host checks. For two full deterministic guest quizzes:
```sh
PYTHONDONTWRITEBYTECODE=1 python3 tests/playtest.py /private/path/grant.json \
--evidence /tmp/capital-quiz-evidence
```
The grant must enable Use Project Makefile and Allow Disposable Playtests.
The Test configuration uses seed 2709; Release uses timing/start-input entropy.
Captured PNG pixels are decoded against the font in the matching linked artifact.
Text, scores, options and selected-state fill are checked from real frames.
Full PNG captures and public receipts are in ignored `build/evidence/test/` and
`build/evidence/release/`. Compact receipts are retained in `docs/evidence/`.
The typed report’s answer field records the initial test input when a spelling
correction was subsequently made; the captured feedback and score verify the correction.
## Release artifact
- Build: `9922B526-537B-4820-BF6C-100EB8846077`
- Artifact: `B6BCF288-91C9-43D8-A460-595792BFD457`
- Release gameplay run: `4EC7FB7D-CBF8-4235-AE82-4363E57376CE`
- Binary: `e69f25c3cf8375f8fe20829d6c11a0a8cb57ceafbf10b5ccefe18c3a1773527a` (SHA-256)
- Disk: `98c5e46b17f29b10e28b818a72512cd2e8331294da223600de99589ac4e3aa68` (SHA-256)
- Executable: `build/CAPITAL.bin`; disk: `build/CAPITAL.dsk` (35 tracks, 161,280 bytes).
- Release code/static storage ends at `$7530`, below the `$7800` limit, leaving
720 bytes before the separate 2 KiB stack allowance to `$8000`.
- Map runs and offset tables total **4,080 bytes**; the public GIME helper
reserves 64 KiB of separate physical RAM for two display pages.
- Captures report **zero guest disk writes**. Test disk originals were preserved.
## Limits
No physical CoCo hardware test was performed. VCC’s public key enumeration
omits punctuation, so the dotted **St. Paul** alias was verified in the actual
shared C logic rather than typed through MCP. The custom-Make build receipt
did not advertise verified C/function stop lists, and a general pause followed
by snapshot inspection returned `verified_pause_required`; no source-debug
watch or memory inspection is claimed. These limits and reusable MCP
enhancement proposals are described in [MCP-NOTES.md](MCP-NOTES.md).
+24
View File
@@ -0,0 +1,24 @@
{
"outputs": [
{
"path": "build/CAPITAL.bin",
"bytes": 19046,
"sha256": "fcd4a9226276e04e6a82cefc3f98fb15ba5a5c250b67932dd50005cef3ec7df1"
},
{
"path": "build/CAPITAL.dsk",
"bytes": 161280,
"sha256": "309aee9234063387bb57fba54f0b11ed9304c07d03e3dab0e55564d27bb17924"
}
],
"status": "succeeded",
"build_id": "2B5749C4-68F8-46B2-B9A3-23BB09A963CF",
"revision": 0,
"artifact_id": "54851E31-863B-47CB-B152-807BB1327913",
"action": "disk",
"configuration": "Test",
"recipe_id": "a5a78327c6844ae71842b05ea69b7bafd2c113136370619877a4b2a4f2b94570",
"log": "\"cmoc\" -DTEST_SEED=2709 -Iinclude --coco --intermediate --deps --stack-space=2048 -O2 --intdir=obj/src/ -c -o obj/src/states.o src/states.c\n\"cmoc\" -DTEST_SEED=2709 -Iinclude --coco --intermediate --deps --stack-space=2048 -O2 --intdir=obj/src/ -c -o obj/src/ui.o src/ui.c\n\"cmoc\" -DTEST_SEED=2709 -Iinclude --coco --intermediate --deps --stack-space=2048 -O2 --intdir=obj/src/ -c -o obj/src/quiz.o src/quiz.c\n\"cmoc\" -DTEST_SEED=2709 -Iinclude --coco --intermediate --deps --stack-space=2048 -O2 --intdir=obj/ -c -o obj/main.o main.c\n\"cmoc\" --dos -O0 --limit=2800 -o obj/boot.bin tools/boot.c\n\"cmoc\" -DTEST_SEED=2709 -Iinclude --coco --intermediate --deps --stack-space=2048 -O2 --intdir=obj/src/ -c -o obj/src/map_data.o src/map_data.c\n\"cmoc\" --coco --intermediate --org=2000 --limit=7800 -o build/CAPITAL.bin obj/main.o obj/src/quiz.o obj/src/ui.o obj/src/states.o obj/src/map_data.o -lgime -linput -lbcontrol -lhirestxt\nperl -e 'print chr(255) x (35*18*256)' > build/CAPITAL.dsk\n\"install-coco-boot-loader\" build/CAPITAL.dsk obj/boot.bin\n\"writecocofile\" build/CAPITAL.dsk build/CAPITAL.bin\n",
"project_id": "56AE77C5-04F7-463D-8596-A549B22EBAE8",
"diagnostics": []
}
+24
View File
@@ -0,0 +1,24 @@
{
"outputs": [
{
"path": "build/CAPITAL.bin",
"sha256": "49f604ae56458b3d32cc6557f4c54ffd146de3b50c29bd1e5c65ce9e2c6f229e",
"bytes": 19089
},
{
"sha256": "603b4726e8aa17f8ecaf4628b8d30dcfda5c037dd75203126727e81faa12f5a0",
"path": "build/CAPITAL.dsk",
"bytes": 161280
}
],
"status": "succeeded",
"action": "disk",
"revision": 0,
"artifact_id": "144A785F-4DE1-4D6C-8354-C7DD49AA77D5",
"build_id": "09FB9FC6-E0D2-4174-A575-0FCCF050AF54",
"configuration": "Debug",
"recipe_id": "a5a78327c6844ae71842b05ea69b7bafd2c113136370619877a4b2a4f2b94570",
"log": "\"cmoc\" -Iinclude --coco --intermediate --deps --stack-space=2048 -O2 -fno-omit-frame-pointer --intdir=obj/src/ -c -o obj/src/states.o src/states.c\n\"cmoc\" -Iinclude --coco --intermediate --deps --stack-space=2048 -O2 -fno-omit-frame-pointer --intdir=obj/src/ -c -o obj/src/ui.o src/ui.c\n\"cmoc\" -Iinclude --coco --intermediate --deps --stack-space=2048 -O2 -fno-omit-frame-pointer --intdir=obj/src/ -c -o obj/src/quiz.o src/quiz.c\n\"cmoc\" -Iinclude --coco --intermediate --deps --stack-space=2048 -O2 -fno-omit-frame-pointer --intdir=obj/ -c -o obj/main.o main.c\n\"cmoc\" --dos -O0 --limit=2800 -o obj/boot.bin tools/boot.c\n\"cmoc\" -Iinclude --coco --intermediate --deps --stack-space=2048 -O2 -fno-omit-frame-pointer --intdir=obj/src/ -c -o obj/src/map_data.o src/map_data.c\n\"cmoc\" --coco --intermediate --org=2000 --limit=7800 -o build/CAPITAL.bin obj/main.o obj/src/quiz.o obj/src/ui.o obj/src/states.o obj/src/map_data.o -lgime -linput -lbcontrol -lhirestxt\nperl -e 'print chr(255) x (35*18*256)' > build/CAPITAL.dsk\n\"install-coco-boot-loader\" build/CAPITAL.dsk obj/boot.bin\n\"writecocofile\" build/CAPITAL.dsk build/CAPITAL.bin\n",
"project_id": "56AE77C5-04F7-463D-8596-A549B22EBAE8",
"diagnostics": []
}
+901
View File
@@ -0,0 +1,901 @@
{
"score": 42,
"positions": [
15,
15,
13,
7
],
"questions": [
{
"question": 1,
"code": "MN",
"state": "Minnesota",
"options": [
"Saint Paul",
"Des Moines",
"Concord",
"Olympia"
],
"answer": "Des Moines",
"correct": false,
"score": 0,
"gold_pixels": 265,
"expected_state_pixels": 265,
"field": 2168
},
{
"question": 2,
"code": "WV",
"state": "West Virginia",
"options": [
"Boise",
"Indianapolis",
"Charleston",
"Topeka"
],
"answer": "Charleston",
"correct": true,
"score": 1,
"gold_pixels": 67,
"expected_state_pixels": 67,
"field": 3726
},
{
"question": 3,
"code": "CT",
"state": "Connecticut",
"options": [
"Boston",
"Olympia",
"Hartford",
"Pierre"
],
"answer": "Hartford",
"correct": true,
"score": 2,
"gold_pixels": 18,
"expected_state_pixels": 18,
"field": 4692
},
{
"question": 4,
"code": "KY",
"state": "Kentucky",
"options": [
"Frankfort",
"Bismarck",
"Indianapolis",
"Providence"
],
"answer": "Frankfort",
"correct": true,
"score": 3,
"gold_pixels": 109,
"expected_state_pixels": 109,
"field": 5658
},
{
"question": 5,
"code": "FL",
"state": "Florida",
"options": [
"Tallahassee",
"Charleston",
"Cheyenne",
"Salt Lake City"
],
"answer": "Tallahassee",
"correct": true,
"score": 4,
"gold_pixels": 204,
"expected_state_pixels": 204,
"field": 6624
},
{
"question": 6,
"code": "LA",
"state": "Louisiana",
"options": [
"Juneau",
"Pierre",
"Baton Rouge",
"Oklahoma City"
],
"answer": "Baton Rouge",
"correct": true,
"score": 5,
"gold_pixels": 150,
"expected_state_pixels": 150,
"field": 7590
},
{
"question": 7,
"code": "WY",
"state": "Wyoming",
"options": [
"Denver",
"Providence",
"Sacramento",
"Cheyenne"
],
"answer": "Cheyenne",
"correct": true,
"score": 6,
"gold_pixels": 308,
"expected_state_pixels": 308,
"field": 8556
},
{
"question": 8,
"code": "OK",
"state": "Oklahoma",
"options": [
"Des Moines",
"Oklahoma City",
"Richmond",
"Carson City"
],
"answer": "Richmond",
"correct": false,
"score": 6,
"gold_pixels": 204,
"expected_state_pixels": 204,
"field": 9522
},
{
"question": 9,
"code": "MT",
"state": "Montana",
"options": [
"Montpelier",
"Helena",
"Little Rock",
"Indianapolis"
],
"answer": "Helena",
"correct": true,
"score": 7,
"gold_pixels": 473,
"expected_state_pixels": 473,
"field": 10488
},
{
"question": 10,
"code": "TX",
"state": "Texas",
"options": [
"Austin",
"Carson City",
"Montgomery",
"Salem"
],
"answer": "Austin",
"correct": true,
"score": 8,
"gold_pixels": 913,
"expected_state_pixels": 913,
"field": 11454
},
{
"question": 11,
"code": "GA",
"state": "Georgia",
"options": [
"Madison",
"Lincoln",
"Pierre",
"Atlanta"
],
"answer": "Atlanta",
"correct": true,
"score": 9,
"gold_pixels": 180,
"expected_state_pixels": 180,
"field": 12420
},
{
"question": 12,
"code": "SC",
"state": "South Carolina",
"options": [
"Springfield",
"Columbia",
"Pierre",
"Atlanta"
],
"answer": "Columbia",
"correct": true,
"score": 10,
"gold_pixels": 94,
"expected_state_pixels": 94,
"field": 13386
},
{
"question": 13,
"code": "NH",
"state": "New Hampshire",
"options": [
"Concord",
"Austin",
"Richmond",
"Jefferson City"
],
"answer": "Concord",
"correct": true,
"score": 11,
"gold_pixels": 19,
"expected_state_pixels": 19,
"field": 14352
},
{
"question": 14,
"code": "UT",
"state": "Utah",
"options": [
"Annapolis",
"Salt Lake City",
"Topeka",
"Des Moines"
],
"answer": "Salt Lake City",
"correct": true,
"score": 12,
"gold_pixels": 263,
"expected_state_pixels": 263,
"field": 15318
},
{
"question": 15,
"code": "VA",
"state": "Virginia",
"options": [
"Bismarck",
"Lansing",
"Richmond",
"Madison"
],
"answer": "Madison",
"correct": false,
"score": 12,
"gold_pixels": 113,
"expected_state_pixels": 113,
"field": 16284
},
{
"question": 16,
"code": "NY",
"state": "New York",
"options": [
"Salt Lake City",
"Cheyenne",
"Albany",
"Oklahoma City"
],
"answer": "Albany",
"correct": true,
"score": 13,
"gold_pixels": 134,
"expected_state_pixels": 134,
"field": 17250
},
{
"question": 17,
"code": "IL",
"state": "Illinois",
"options": [
"Bismarck",
"Richmond",
"Springfield",
"Tallahassee"
],
"answer": "Springfield",
"correct": true,
"score": 14,
"gold_pixels": 173,
"expected_state_pixels": 173,
"field": 18216
},
{
"question": 18,
"code": "NV",
"state": "Nevada",
"options": [
"Carson City",
"Albany",
"Topeka",
"Cheyenne"
],
"answer": "Carson City",
"correct": true,
"score": 15,
"gold_pixels": 350,
"expected_state_pixels": 350,
"field": 19182
},
{
"question": 19,
"code": "RI",
"state": "Rhode Island",
"options": [
"Honolulu",
"Columbia",
"Topeka",
"Providence"
],
"answer": "Providence",
"correct": true,
"score": 16,
"gold_pixels": 3,
"expected_state_pixels": 3,
"field": 20148
},
{
"question": 20,
"code": "IN",
"state": "Indiana",
"options": [
"Indianapolis",
"Denver",
"Jefferson City",
"Columbus"
],
"answer": "Indianapolis",
"correct": true,
"score": 17,
"gold_pixels": 105,
"expected_state_pixels": 105,
"field": 21114
},
{
"question": 21,
"code": "MA",
"state": "Massachusetts",
"options": [
"Indianapolis",
"Albany",
"Boston",
"Montgomery"
],
"answer": "Boston",
"correct": true,
"score": 18,
"gold_pixels": 21,
"expected_state_pixels": 21,
"field": 22080
},
{
"question": 22,
"code": "HI",
"state": "Hawaii",
"options": [
"Saint Paul",
"Honolulu",
"Bismarck",
"Salt Lake City"
],
"answer": "Bismarck",
"correct": false,
"score": 18,
"gold_pixels": 20,
"expected_state_pixels": 20,
"field": 23046
},
{
"question": 23,
"code": "ME",
"state": "Maine",
"options": [
"Little Rock",
"Hartford",
"Augusta",
"Helena"
],
"answer": "Augusta",
"correct": true,
"score": 19,
"gold_pixels": 111,
"expected_state_pixels": 111,
"field": 24012
},
{
"question": 24,
"code": "VT",
"state": "Vermont",
"options": [
"Montpelier",
"Carson City",
"Pierre",
"Richmond"
],
"answer": "Montpelier",
"correct": true,
"score": 20,
"gold_pixels": 22,
"expected_state_pixels": 22,
"field": 24978
},
{
"question": 25,
"code": "CO",
"state": "Colorado",
"options": [
"Richmond",
"Augusta",
"Pierre",
"Denver"
],
"answer": "Denver",
"correct": true,
"score": 21,
"gold_pixels": 327,
"expected_state_pixels": 327,
"field": 25944
},
{
"question": 26,
"code": "AL",
"state": "Alabama",
"options": [
"Bismarck",
"Montgomery",
"Salem",
"Austin"
],
"answer": "Montgomery",
"correct": true,
"score": 22,
"gold_pixels": 155,
"expected_state_pixels": 155,
"field": 26910
},
{
"question": 27,
"code": "WI",
"state": "Wisconsin",
"options": [
"Montgomery",
"Madison",
"Lincoln",
"Saint Paul"
],
"answer": "Madison",
"correct": true,
"score": 23,
"gold_pixels": 183,
"expected_state_pixels": 183,
"field": 27876
},
{
"question": 28,
"code": "AK",
"state": "Alaska",
"options": [
"Juneau",
"Oklahoma City",
"Jackson",
"Saint Paul"
],
"answer": "Juneau",
"correct": true,
"score": 24,
"gold_pixels": 266,
"expected_state_pixels": 266,
"field": 28842
},
{
"question": 29,
"code": "OH",
"state": "Ohio",
"options": [
"Sacramento",
"Jefferson City",
"Columbus",
"Santa Fe"
],
"answer": "Santa Fe",
"correct": false,
"score": 24,
"gold_pixels": 124,
"expected_state_pixels": 124,
"field": 29808
},
{
"question": 30,
"code": "MD",
"state": "Maryland",
"options": [
"Raleigh",
"Atlanta",
"Helena",
"Annapolis"
],
"answer": "Annapolis",
"correct": true,
"score": 25,
"gold_pixels": 22,
"expected_state_pixels": 22,
"field": 30774
},
{
"question": 31,
"code": "MO",
"state": "Missouri",
"options": [
"Columbus",
"Jefferson City",
"Raleigh",
"Frankfort"
],
"answer": "Jefferson City",
"correct": true,
"score": 26,
"gold_pixels": 205,
"expected_state_pixels": 205,
"field": 31740
},
{
"question": 32,
"code": "PA",
"state": "Pennsylvania",
"options": [
"Harrisburg",
"Columbia",
"Tallahassee",
"Cheyenne"
],
"answer": "Harrisburg",
"correct": true,
"score": 27,
"gold_pixels": 138,
"expected_state_pixels": 138,
"field": 32706
},
{
"question": 33,
"code": "MS",
"state": "Mississippi",
"options": [
"Annapolis",
"Jackson",
"Atlanta",
"Denver"
],
"answer": "Jackson",
"correct": true,
"score": 28,
"gold_pixels": 143,
"expected_state_pixels": 143,
"field": 33672
},
{
"question": 34,
"code": "TN",
"state": "Tennessee",
"options": [
"Nashville",
"Raleigh",
"Oklahoma City",
"Hartford"
],
"answer": "Nashville",
"correct": true,
"score": 29,
"gold_pixels": 121,
"expected_state_pixels": 121,
"field": 34638
},
{
"question": 35,
"code": "KS",
"state": "Kansas",
"options": [
"Montgomery",
"Providence",
"Topeka",
"Baton Rouge"
],
"answer": "Topeka",
"correct": true,
"score": 30,
"gold_pixels": 256,
"expected_state_pixels": 256,
"field": 35604
},
{
"question": 36,
"code": "NE",
"state": "Nebraska",
"options": [
"Montpelier",
"Cheyenne",
"Lincoln",
"Harrisburg"
],
"answer": "Harrisburg",
"correct": false,
"score": 30,
"gold_pixels": 236,
"expected_state_pixels": 236,
"field": 36570
},
{
"question": 37,
"code": "WA",
"state": "Washington",
"options": [
"Olympia",
"Helena",
"Charleston",
"Hartford"
],
"answer": "Olympia",
"correct": true,
"score": 31,
"gold_pixels": 210,
"expected_state_pixels": 210,
"field": 37536
},
{
"question": 38,
"code": "NC",
"state": "North Carolina",
"options": [
"Olympia",
"Montpelier",
"Helena",
"Raleigh"
],
"answer": "Raleigh",
"correct": true,
"score": 32,
"gold_pixels": 156,
"expected_state_pixels": 156,
"field": 38502
},
{
"question": 39,
"code": "SD",
"state": "South Dakota",
"options": [
"Pierre",
"Columbia",
"Concord",
"Annapolis"
],
"answer": "Pierre",
"correct": true,
"score": 33,
"gold_pixels": 243,
"expected_state_pixels": 243,
"field": 39468
},
{
"question": 40,
"code": "OR",
"state": "Oregon",
"options": [
"Salt Lake City",
"Salem",
"Juneau",
"Phoenix"
],
"answer": "Salem",
"correct": true,
"score": 34,
"gold_pixels": 303,
"expected_state_pixels": 303,
"field": 40434
},
{
"question": 41,
"code": "DE",
"state": "Delaware",
"options": [
"Augusta",
"Annapolis",
"Dover",
"Honolulu"
],
"answer": "Dover",
"correct": true,
"score": 35,
"gold_pixels": 7,
"expected_state_pixels": 7,
"field": 41400
},
{
"question": 42,
"code": "NM",
"state": "New Mexico",
"options": [
"Albany",
"Indianapolis",
"Santa Fe",
"Olympia"
],
"answer": "Santa Fe",
"correct": true,
"score": 36,
"gold_pixels": 395,
"expected_state_pixels": 395,
"field": 42366
},
{
"question": 43,
"code": "NJ",
"state": "New Jersey",
"options": [
"Phoenix",
"Trenton",
"Little Rock",
"Jackson"
],
"answer": "Little Rock",
"correct": false,
"score": 36,
"gold_pixels": 23,
"expected_state_pixels": 23,
"field": 43332
},
{
"question": 44,
"code": "ID",
"state": "Idaho",
"options": [
"Madison",
"Boise",
"Baton Rouge",
"Columbia"
],
"answer": "Boise",
"correct": true,
"score": 37,
"gold_pixels": 251,
"expected_state_pixels": 251,
"field": 44298
},
{
"question": 45,
"code": "IA",
"state": "Iowa",
"options": [
"Annapolis",
"Harrisburg",
"Hartford",
"Des Moines"
],
"answer": "Des Moines",
"correct": true,
"score": 38,
"gold_pixels": 172,
"expected_state_pixels": 172,
"field": 45264
},
{
"question": 46,
"code": "ND",
"state": "North Dakota",
"options": [
"Montgomery",
"Bismarck",
"Richmond",
"Charleston"
],
"answer": "Bismarck",
"correct": true,
"score": 39,
"gold_pixels": 219,
"expected_state_pixels": 219,
"field": 46230
},
{
"question": 47,
"code": "MI",
"state": "Michigan",
"options": [
"Lansing",
"Atlanta",
"Nashville",
"Pierre"
],
"answer": "Lansing",
"correct": true,
"score": 40,
"gold_pixels": 177,
"expected_state_pixels": 177,
"field": 47196
},
{
"question": 48,
"code": "AR",
"state": "Arkansas",
"options": [
"Little Rock",
"Santa Fe",
"Atlanta",
"Dover"
],
"answer": "Little Rock",
"correct": true,
"score": 41,
"gold_pixels": 160,
"expected_state_pixels": 160,
"field": 48162
},
{
"question": 49,
"code": "AZ",
"state": "Arizona",
"options": [
"Salt Lake City",
"Phoenix",
"Harrisburg",
"Tallahassee"
],
"answer": "Phoenix",
"correct": true,
"score": 42,
"gold_pixels": 374,
"expected_state_pixels": 374,
"field": 49128
},
{
"question": 50,
"code": "CA",
"state": "California",
"options": [
"Albany",
"Sacramento",
"Harrisburg",
"Boise"
],
"answer": "Harrisburg",
"correct": false,
"score": 42,
"gold_pixels": 516,
"expected_state_pixels": 516,
"field": 50094
}
],
"run_id": "6386E425-D645-4C5F-9380-9CACBB3FB5B0",
"artifact": "54851E31-863B-47CB-B152-807BB1327913",
"exit": {
"fields": 53808,
"disk_sha256": "309aee9234063387bb57fba54f0b11ed9304c07d03e3dab0e55564d27bb17924",
"machine_frame": 53808,
"frame_number": 53808,
"image_content": true,
"cpu": "6809",
"cycles": 1597785753,
"generation": 2,
"revision": 0,
"remaining_field_budget": 162192,
"field_clock": 53808,
"isolated": true,
"state": "running",
"ram_kb": 512,
"screen_text": "DISK EXTENDED COLOR BASIC 2.1\nCOPR. 1982, 1986 BY TANDY\nUNDER LICENSE FROM MICROSOFT\nAND MICROWARE SYSTEMS CORP.\n\nOK\nDOS\nLOADM\"CAPITAL.BIN\":EXEC\nTHANKS FOR PLAYING CAPITAL QUEST\n!\nOK\n",
"project_id": "56AE77C5-04F7-463D-8596-A549B22EBAE8",
"boot": 1,
"remaining_boots": 15,
"artifact_disk_sha256": "309aee9234063387bb57fba54f0b11ed9304c07d03e3dab0e55564d27bb17924",
"height": 480,
"width": 640,
"run_id": "6386E425-D645-4C5F-9380-9CACBB3FB5B0",
"artifact_id": "54851E31-863B-47CB-B152-807BB1327913",
"pc": 42963,
"disk_reads": 24320,
"disk_dirty": false,
"disk_provenance": {
"origin_artifact_disk_sha256": "309aee9234063387bb57fba54f0b11ed9304c07d03e3dab0e55564d27bb17924",
"artifact_disk_sha256": "309aee9234063387bb57fba54f0b11ed9304c07d03e3dab0e55564d27bb17924",
"origin_artifact_id": "54851E31-863B-47CB-B152-807BB1327913",
"artifact_id": "54851E31-863B-47CB-B152-807BB1327913",
"origin": "verified_artifact"
},
"disk_origin": "verified_artifact",
"disk_writes": 0,
"disk_original_sha256": "309aee9234063387bb57fba54f0b11ed9304c07d03e3dab0e55564d27bb17924"
}
}
+24
View File
@@ -0,0 +1,24 @@
{
"action": "disk",
"status": "succeeded",
"build_id": "9922B526-537B-4820-BF6C-100EB8846077",
"recipe_id": "a5a78327c6844ae71842b05ea69b7bafd2c113136370619877a4b2a4f2b94570",
"artifact_id": "B6BCF288-91C9-43D8-A460-595792BFD457",
"outputs": [
{
"sha256": "e69f25c3cf8375f8fe20829d6c11a0a8cb57ceafbf10b5ccefe18c3a1773527a",
"path": "build/CAPITAL.bin",
"bytes": 19041
},
{
"bytes": 161280,
"path": "build/CAPITAL.dsk",
"sha256": "98c5e46b17f29b10e28b818a72512cd2e8331294da223600de99589ac4e3aa68"
}
],
"configuration": "Release",
"revision": 0,
"log": "\"cmoc\" -Iinclude --coco --intermediate --deps --stack-space=2048 -O2 --intdir=obj/src/ -c -o obj/src/states.o src/states.c\n\"cmoc\" -Iinclude --coco --intermediate --deps --stack-space=2048 -O2 --intdir=obj/src/ -c -o obj/src/ui.o src/ui.c\n\"cmoc\" -Iinclude --coco --intermediate --deps --stack-space=2048 -O2 --intdir=obj/src/ -c -o obj/src/quiz.o src/quiz.c\n\"cmoc\" -Iinclude --coco --intermediate --deps --stack-space=2048 -O2 --intdir=obj/ -c -o obj/main.o main.c\n\"cmoc\" --dos -O0 --limit=2800 -o obj/boot.bin tools/boot.c\n\"cmoc\" -Iinclude --coco --intermediate --deps --stack-space=2048 -O2 --intdir=obj/src/ -c -o obj/src/map_data.o src/map_data.c\n\"cmoc\" --coco --intermediate --org=2000 --limit=7800 -o build/CAPITAL.bin obj/main.o obj/src/quiz.o obj/src/ui.o obj/src/states.o obj/src/map_data.o -lgime -linput -lbcontrol -lhirestxt\nperl -e 'print chr(255) x (35*18*256)' > build/CAPITAL.dsk\n\"install-coco-boot-loader\" build/CAPITAL.dsk obj/boot.bin\n\"writecocofile\" build/CAPITAL.dsk build/CAPITAL.bin\n",
"project_id": "56AE77C5-04F7-463D-8596-A549B22EBAE8",
"diagnostics": []
}
+211
View File
@@ -0,0 +1,211 @@
{
"configuration": "Release",
"artifact_id": "B6BCF288-91C9-43D8-A460-595792BFD457",
"run_id": "4EC7FB7D-CBF8-4235-AE82-4363E57376CE",
"order": [
"IN",
"MT",
"AR",
"ID",
"NH",
"MA",
"NV",
"NM",
"MO",
"SD",
"VT",
"DE",
"MS",
"MN",
"RI",
"AL",
"MD",
"NE",
"CT",
"WI",
"NY",
"KY",
"WY",
"VA",
"OK",
"WA",
"AK",
"ND",
"TX",
"OH",
"CA",
"FL",
"OR",
"KS",
"GA",
"TN",
"IL",
"WV",
"LA",
"AZ",
"ME",
"MI",
"NC",
"NJ",
"SC",
"UT",
"CO",
"PA",
"IA",
"HI"
],
"positions": [
15,
14,
12,
9
],
"score": 50,
"percentage": 100,
"replay_first_five": [
"MO",
"SD",
"NM",
"IA",
"IN"
],
"credits_run": "74632153-2D82-4DBB-86A2-B0DD23E85769",
"exit": {
"disk_original_sha256": "98c5e46b17f29b10e28b818a72512cd2e8331294da223600de99589ac4e3aa68",
"disk_sha256": "98c5e46b17f29b10e28b818a72512cd2e8331294da223600de99589ac4e3aa68",
"machine_frame": 3084,
"frame_number": 3084,
"image_content": true,
"cpu": "6809",
"cycles": 75479687,
"generation": 2,
"revision": 0,
"remaining_field_budget": 212916,
"field_clock": 3084,
"isolated": true,
"state": "running",
"ram_kb": 512,
"screen_text": "DISK EXTENDED COLOR BASIC 2.1\nCOPR. 1982, 1986 BY TANDY\nUNDER LICENSE FROM MICROSOFT\nAND MICROWARE SYSTEMS CORP.\n\nOK\nDOS\nLOADM\"CAPITAL.BIN\":EXEC\nTHANKS FOR PLAYING CAPITAL QUEST\n!\nOK\n",
"project_id": "56AE77C5-04F7-463D-8596-A549B22EBAE8",
"boot": 1,
"artifact_id": "B6BCF288-91C9-43D8-A460-595792BFD457",
"artifact_disk_sha256": "98c5e46b17f29b10e28b818a72512cd2e8331294da223600de99589ac4e3aa68",
"height": 480,
"width": 640,
"run_id": "74632153-2D82-4DBB-86A2-B0DD23E85769",
"remaining_boots": 15,
"pc": 42963,
"disk_dirty": false,
"disk_provenance": {
"origin_artifact_disk_sha256": "98c5e46b17f29b10e28b818a72512cd2e8331294da223600de99589ac4e3aa68",
"artifact_disk_sha256": "98c5e46b17f29b10e28b818a72512cd2e8331294da223600de99589ac4e3aa68",
"origin_artifact_id": "B6BCF288-91C9-43D8-A460-595792BFD457",
"artifact_id": "B6BCF288-91C9-43D8-A460-595792BFD457",
"origin": "verified_artifact"
},
"disk_reads": 24320,
"fields": 3084,
"disk_origin": "verified_artifact",
"disk_writes": 0
},
"retained": {
"disk_original_sha256": "98c5e46b17f29b10e28b818a72512cd2e8331294da223600de99589ac4e3aa68",
"disk_sha256": "98c5e46b17f29b10e28b818a72512cd2e8331294da223600de99589ac4e3aa68",
"machine_frame": 56464,
"status": "stopped",
"disk_retained": true,
"disk_origin": "verified_artifact",
"retained_disk": {
"run_id": "4EC7FB7D-CBF8-4235-AE82-4363E57376CE",
"origin_artifact_disk_sha256": "98c5e46b17f29b10e28b818a72512cd2e8331294da223600de99589ac4e3aa68",
"artifact_disk_sha256": "98c5e46b17f29b10e28b818a72512cd2e8331294da223600de99589ac4e3aa68",
"origin": "verified_artifact",
"byte_count": 161280,
"artifact_id": "B6BCF288-91C9-43D8-A460-595792BFD457",
"created_at": "2026-11-10T01:35:53Z",
"disk_sha256": "98c5e46b17f29b10e28b818a72512cd2e8331294da223600de99589ac4e3aa68",
"origin_artifact_id": "B6BCF288-91C9-43D8-A460-595792BFD457",
"retained_disk_id": "4EC7FB7D-CBF8-4235-AE82-4363E57376CE"
},
"cpu": "6809",
"retained_disk_id": "4EC7FB7D-CBF8-4235-AE82-4363E57376CE",
"revision": 0,
"generation": 2,
"cycles": 1680371171,
"request_id": "84bf065a-0bf6-40f1-84ef-463c501e9934",
"remaining_field_budget": 159536,
"field_clock": 56464,
"isolated": true,
"state": "paused",
"ram_kb": 512,
"project_id": "56AE77C5-04F7-463D-8596-A549B22EBAE8",
"boot": 1,
"remaining_boots": 15,
"artifact_disk_sha256": "98c5e46b17f29b10e28b818a72512cd2e8331294da223600de99589ac4e3aa68",
"artifact_id": "B6BCF288-91C9-43D8-A460-595792BFD457",
"run_id": "4EC7FB7D-CBF8-4235-AE82-4363E57376CE",
"pc": 11460,
"disk_dirty": false,
"disk_reads": 24320,
"disk_provenance": {
"origin_artifact_disk_sha256": "98c5e46b17f29b10e28b818a72512cd2e8331294da223600de99589ac4e3aa68",
"artifact_disk_sha256": "98c5e46b17f29b10e28b818a72512cd2e8331294da223600de99589ac4e3aa68",
"origin_artifact_id": "B6BCF288-91C9-43D8-A460-595792BFD457",
"artifact_id": "B6BCF288-91C9-43D8-A460-595792BFD457",
"origin": "verified_artifact"
},
"retained_disk_sha256": "98c5e46b17f29b10e28b818a72512cd2e8331294da223600de99589ac4e3aa68",
"fields": 56464,
"disk_writes": 0
},
"retained_credits": {
"disk_origin": "verified_artifact",
"disk_sha256": "98c5e46b17f29b10e28b818a72512cd2e8331294da223600de99589ac4e3aa68",
"disk_retained": true,
"machine_frame": 3084,
"status": "stopped",
"disk_writes": 0,
"cpu": "6809",
"retained_disk": {
"origin": "verified_artifact",
"run_id": "74632153-2D82-4DBB-86A2-B0DD23E85769",
"artifact_disk_sha256": "98c5e46b17f29b10e28b818a72512cd2e8331294da223600de99589ac4e3aa68",
"disk_sha256": "98c5e46b17f29b10e28b818a72512cd2e8331294da223600de99589ac4e3aa68",
"created_at": "2026-11-10T01:35:55Z",
"byte_count": 161280,
"origin_artifact_id": "B6BCF288-91C9-43D8-A460-595792BFD457",
"origin_artifact_disk_sha256": "98c5e46b17f29b10e28b818a72512cd2e8331294da223600de99589ac4e3aa68",
"artifact_id": "B6BCF288-91C9-43D8-A460-595792BFD457",
"retained_disk_id": "74632153-2D82-4DBB-86A2-B0DD23E85769"
},
"retained_disk_id": "74632153-2D82-4DBB-86A2-B0DD23E85769",
"cycles": 75479687,
"generation": 2,
"revision": 0,
"remaining_field_budget": 212916,
"request_id": "204f9fe3-eec4-4e72-84bc-3a41c173da01",
"field_clock": 3084,
"isolated": true,
"state": "paused",
"ram_kb": 512,
"project_id": "56AE77C5-04F7-463D-8596-A549B22EBAE8",
"boot": 1,
"artifact_id": "B6BCF288-91C9-43D8-A460-595792BFD457",
"artifact_disk_sha256": "98c5e46b17f29b10e28b818a72512cd2e8331294da223600de99589ac4e3aa68",
"remaining_boots": 15,
"run_id": "74632153-2D82-4DBB-86A2-B0DD23E85769",
"pc": 42963,
"disk_dirty": false,
"disk_provenance": {
"origin_artifact_disk_sha256": "98c5e46b17f29b10e28b818a72512cd2e8331294da223600de99589ac4e3aa68",
"artifact_disk_sha256": "98c5e46b17f29b10e28b818a72512cd2e8331294da223600de99589ac4e3aa68",
"origin_artifact_id": "B6BCF288-91C9-43D8-A460-595792BFD457",
"artifact_id": "B6BCF288-91C9-43D8-A460-595792BFD457",
"origin": "verified_artifact"
},
"disk_reads": 24320,
"fields": 3084,
"disk_original_sha256": "98c5e46b17f29b10e28b818a72512cd2e8331294da223600de99589ac4e3aa68",
"retained_disk_sha256": "98c5e46b17f29b10e28b818a72512cd2e8331294da223600de99589ac4e3aa68"
}
}
+395
View File
@@ -0,0 +1,395 @@
{
"score": 47,
"corrections": 2,
"questions": [
{
"question": 1,
"code": "MN",
"answer": "sT pAuL",
"correct": true,
"correction": false
},
{
"question": 2,
"code": "WV",
"answer": "Chalreston",
"correct": true,
"correction": true
},
{
"question": 3,
"code": "CT",
"answer": "Austin",
"correct": false,
"correction": false
},
{
"question": 4,
"code": "KY",
"answer": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"correct": false,
"correction": false
},
{
"question": 5,
"code": "FL",
"answer": "Tallhassee",
"correct": false,
"correction": false
},
{
"question": 6,
"code": "LA",
"answer": " bAtOn rOuGe ",
"correct": true,
"correction": false
},
{
"question": 7,
"code": "WY",
"answer": "cheyenne",
"correct": true,
"correction": false
},
{
"question": 8,
"code": "OK",
"answer": "OKLAHOMA CITY",
"correct": true,
"correction": false
},
{
"question": 9,
"code": "MT",
"answer": "HeLeNa",
"correct": true,
"correction": false
},
{
"question": 10,
"code": "TX",
"answer": "austin",
"correct": true,
"correction": false
},
{
"question": 11,
"code": "GA",
"answer": "ATLANTA",
"correct": true,
"correction": false
},
{
"question": 12,
"code": "SC",
"answer": "CoLuMbIa",
"correct": true,
"correction": false
},
{
"question": 13,
"code": "NH",
"answer": "concord",
"correct": true,
"correction": false
},
{
"question": 14,
"code": "UT",
"answer": "SALT LAKE CITY",
"correct": true,
"correction": false
},
{
"question": 15,
"code": "VA",
"answer": "RiChMoNd",
"correct": true,
"correction": false
},
{
"question": 16,
"code": "NY",
"answer": "albany",
"correct": true,
"correction": false
},
{
"question": 17,
"code": "IL",
"answer": "SPRINGFIELD",
"correct": true,
"correction": false
},
{
"question": 18,
"code": "NV",
"answer": "CaRsOn cItY",
"correct": true,
"correction": false
},
{
"question": 19,
"code": "RI",
"answer": "providence",
"correct": true,
"correction": false
},
{
"question": 20,
"code": "IN",
"answer": "INDIANAPOLIS",
"correct": true,
"correction": false
},
{
"question": 21,
"code": "MA",
"answer": "BoStOn",
"correct": true,
"correction": false
},
{
"question": 22,
"code": "HI",
"answer": "honolulu",
"correct": true,
"correction": false
},
{
"question": 23,
"code": "ME",
"answer": "AUGUSTA",
"correct": true,
"correction": false
},
{
"question": 24,
"code": "VT",
"answer": "MoNtPeLiEr",
"correct": true,
"correction": false
},
{
"question": 25,
"code": "CO",
"answer": "Dnever",
"correct": true,
"correction": true
},
{
"question": 26,
"code": "AL",
"answer": "MONTGOMERY",
"correct": true,
"correction": false
},
{
"question": 27,
"code": "WI",
"answer": "MaDiSoN",
"correct": true,
"correction": false
},
{
"question": 28,
"code": "AK",
"answer": "juneau",
"correct": true,
"correction": false
},
{
"question": 29,
"code": "OH",
"answer": "COLUMBUS",
"correct": true,
"correction": false
},
{
"question": 30,
"code": "MD",
"answer": "AnNaPoLiS",
"correct": true,
"correction": false
},
{
"question": 31,
"code": "MO",
"answer": "jefferson city",
"correct": true,
"correction": false
},
{
"question": 32,
"code": "PA",
"answer": "HARRISBURG",
"correct": true,
"correction": false
},
{
"question": 33,
"code": "MS",
"answer": "JaCkSoN",
"correct": true,
"correction": false
},
{
"question": 34,
"code": "TN",
"answer": "nashville",
"correct": true,
"correction": false
},
{
"question": 35,
"code": "KS",
"answer": "TOPEKA",
"correct": true,
"correction": false
},
{
"question": 36,
"code": "NE",
"answer": "LiNcOlN",
"correct": true,
"correction": false
},
{
"question": 37,
"code": "WA",
"answer": "olympia",
"correct": true,
"correction": false
},
{
"question": 38,
"code": "NC",
"answer": "RALEIGH",
"correct": true,
"correction": false
},
{
"question": 39,
"code": "SD",
"answer": "PiErRe",
"correct": true,
"correction": false
},
{
"question": 40,
"code": "OR",
"answer": "salem",
"correct": true,
"correction": false
},
{
"question": 41,
"code": "DE",
"answer": "DOVER",
"correct": true,
"correction": false
},
{
"question": 42,
"code": "NM",
"answer": "SaNtA Fe",
"correct": true,
"correction": false
},
{
"question": 43,
"code": "NJ",
"answer": "trenton",
"correct": true,
"correction": false
},
{
"question": 44,
"code": "ID",
"answer": "BOISE",
"correct": true,
"correction": false
},
{
"question": 45,
"code": "IA",
"answer": "DeS MoInEs",
"correct": true,
"correction": false
},
{
"question": 46,
"code": "ND",
"answer": "bismarck",
"correct": true,
"correction": false
},
{
"question": 47,
"code": "MI",
"answer": "LANSING",
"correct": true,
"correction": false
},
{
"question": 48,
"code": "AR",
"answer": "LiTtLe rOcK",
"correct": true,
"correction": false
},
{
"question": 49,
"code": "AZ",
"answer": "phoenix",
"correct": true,
"correction": false
},
{
"question": 50,
"code": "CA",
"answer": "SACRAMENTO",
"correct": true,
"correction": false
}
],
"run_id": "DEA80B37-7A53-4F77-82B2-86A9569376C3",
"exit": {
"disk_reads": 24320,
"disk_sha256": "309aee9234063387bb57fba54f0b11ed9304c07d03e3dab0e55564d27bb17924",
"machine_frame": 123344,
"frame_number": 123344,
"image_content": true,
"cpu": "6809",
"cycles": 3681115004,
"generation": 2,
"revision": 0,
"remaining_field_budget": 92656,
"field_clock": 123344,
"isolated": true,
"state": "running",
"ram_kb": 512,
"screen_text": "DISK EXTENDED COLOR BASIC 2.1\nCOPR. 1982, 1986 BY TANDY\nUNDER LICENSE FROM MICROSOFT\nAND MICROWARE SYSTEMS CORP.\n\nOK\nDOS\nLOADM\"CAPITAL.BIN\":EXEC\nTHANKS FOR PLAYING CAPITAL QUEST\n!\nOK\n",
"project_id": "56AE77C5-04F7-463D-8596-A549B22EBAE8",
"boot": 1,
"artifact_id": "54851E31-863B-47CB-B152-807BB1327913",
"remaining_boots": 15,
"height": 480,
"width": 640,
"run_id": "DEA80B37-7A53-4F77-82B2-86A9569376C3",
"artifact_disk_sha256": "309aee9234063387bb57fba54f0b11ed9304c07d03e3dab0e55564d27bb17924",
"pc": 42963,
"disk_dirty": false,
"fields": 123344,
"disk_provenance": {
"artifact_disk_sha256": "309aee9234063387bb57fba54f0b11ed9304c07d03e3dab0e55564d27bb17924",
"origin_artifact_disk_sha256": "309aee9234063387bb57fba54f0b11ed9304c07d03e3dab0e55564d27bb17924",
"origin_artifact_id": "54851E31-863B-47CB-B152-807BB1327913",
"artifact_id": "54851E31-863B-47CB-B152-807BB1327913",
"origin": "verified_artifact"
},
"disk_origin": "verified_artifact",
"disk_original_sha256": "309aee9234063387bb57fba54f0b11ed9304c07d03e3dab0e55564d27bb17924",
"disk_writes": 0
}
}