W.O.P.R. // FIELD GUIDE // 2026-10-22

Every area of W.O.P.R.'s screen has a code and a name. "V8" or "the hint line" means one exact thing, whether it's said in a bug report, on the hub or in the source.

  • Reading a sheet: every area has an amber box. In the margin are its code, its name and, in lower case, its name in the source (mark("vm.hint", ...)).
  • Ten sheets: A frame, W world display, V VM view, P mission planner, I import, E edit, C configuration, S media storage, T transfers, O overlays. Each one is below, with what every area is.
  • Drawn by W.O.P.R. itself: WOPR.exe --ui-map <dir> renders every view offscreen at 2560 x 1368 and 150 %, the window maximised on a 1440p screen, and labels each named area in the launcher's own lettering. Codes never move: a new area takes the next free number on its sheet.

EVERY CODE HAS ITS OWN ADDRESS: WOPR.V2CORE.COM/UI-MAP/#V8

SHEET A  //  ON THE HUB

Sheet A: The title bar and the sidebar
The title bar and the sidebar
Sheet A: The sidebar collapsed to icons
The sidebar collapsed to icons
CODENAMEIN THE SOURCEWHAT IT IS
A1HOMEtitle.homeThe mark and the name. A click goes back to the world display
A2BREADCRUMBtitle.crumbWhich view this is: STANDBY, MISSION PLANNER, TRACKING: TIGER...
A3DEFCON STRIPtitle.defcon5 with nothing running, one step down per running system; 2 and 1 blink
A4ZULU CLOCKtitle.clockUTC
A5WINDOW BUTTONStitle.windowMinimise, maximise, close
A6SIDEBAR TOGGLEside.toggleCollapses the sidebar to icons (second picture) and back; also Ctrl+Alt+B
A7ACTIVE SYSTEMSside.headerThe running systems, and how many
A8SYSTEM ROWside.rowOne running system: icon, name, profile, state and uptime. A click tracks it
A9LOAD SPARKLINEside.sparkIts CPU load over the last 25 samples, and now, in cores
A10TRANSFERS ENTRYside.transfersShown while install media downloads: a progress ring, the count, the percentage
A11NEW SYSTEMside.newBack to the world display, where installs and imports start
A12CONFIGURATIONside.configPaths and QEMU targets (sheet C)
A13DETAIL VIEWdetailEverything right of the sidebar: one of the other sheets

SHEET W  //  ON THE HUB

Sheet W: The World Systems Display, the home screen
The World Systems Display, the home screen
CODENAMEIN THE SOURCEWHAT IT IS
W1DISPLAY TITLEwelcome.titleWith the line naming what it runs on: QEMU 11.1.2, WHPX, qegl, D3D11
W2WORLD MAPwelcome.mapNatural Earth 1:110m. The orange sites are where the known systems come from
W3SITE AND TRACKwelcome.trackA running system: its site, its name tag and the track to NORAD
W4TRACKING LINEwelcome.statusHow many systems are running, and the map's projection
W5GREETINGwelcome.greetingTyped out letter by letter when the view opens
W6INSTALL NEW SYSTEMwelcome.installOpens the mission planner (sheet P)
W7IMPORT EXISTING DISKwelcome.importAsks for a disk image, then opens import (sheet I)
W8KNOWN SYSTEMSwelcome.knownEvery system W.O.P.R. knows, and how many; the list scrolls
W9KNOWN SYSTEM ROWwelcome.krowIcon, name, profile, disk file, last run. A click opens edit (sheet E)
W10EDITwelcome.keditThe same as clicking the row
W11LAUNCH / TRACKwelcome.klaunchLAUNCH starts it. It reads TRACK once the system runs, and MEDIA 27% while its installer downloads
W12PANEL FOOTERwelcome.footerWhich QEMU folder is in use, and whether its screens embed or only mirror

SHEET V  //  ON THE HUB

This is where the overlap was. Whenever the guest's picture filled the height, V8 ran into V9 and V10. Fixed on 2026-10-22: the screen leaves room for the hint line.

Sheet V: Tracking a system: Tiger docked
Tracking a system: Tiger docked
CODENAMEIN THE SOURCEWHAT IT IS
V1SYSTEM ICONvm.iconThe profile's icon, inside the tracking ring
V2NAME AND PROFILEvm.nameThe name, then OS // architecture // machine
V3STATUS CHIPSvm.chipsThe state, EMBEDDED or MIRROR, and when they apply EXTERNAL, SCRATCH, a QEMU folder other than the usual one, MOUSE GRABBED
V4ACTION BARvm.actionsPAUSE, RESET, SHUT DOWN, FORCE OFF, FULL, CAPTURE, POP OUT (or DOCK, WINDOW), EJECT, CONFIG. Reset, shut down and force off need a second click
V5SIGNAL LINEvm.signalHow the picture gets here: zero-copy D3D11 embedded, or a read-only mirror
V6SCALE READOUTvm.scaleGuest resolution and scale; a whole number means pixel-exact
V7SCREENvm.screenThe guest. Click it to type into the guest; Ctrl+Alt+F fills the monitor
V8HINT LINEvm.hintWhat clicks and keys do here; an amber warning for a mirror
V9HOST CPU TRACEvm.cpuQEMU's CPU use over time, in cores; the top is the VM's processor count
V10HOST STATSvm.statsLOAD (cores now), MEMORY, UPTIME, GUEST IP, PID / QMP port, DISK. GUEST IP is the address on the LAN when the VM has a NIC there, else the one behind user-mode NAT; W.O.P.R. looks it up only while the VM is on screen

SHEET P  //  ON THE HUB

Step 1 picks a profile and step 2 sets it up. The third picture is step 2 for Linux, where W.O.P.R. offers the official releases itself. Pictures 2 and 3 label only what the earlier ones didn't.

Sheet P: Step 1: the profile grid
Step 1: the profile grid
Sheet P: Step 2: parameters
Step 2: parameters
Sheet P: Step 2 for Linux: the release list
Step 2 for Linux: the release list
CODENAMEIN THE SOURCEWHAT IT IS
P1PLANNER HEADERplan.headerWhich step this is
P2ABORTplan.abortBack to the world display
P3PROFILE GRIDplan.gridEvery profile this PC can offer; it scrolls
P4PROFILE CARDplan.cardA click picks it and goes to step 2
P5UNAVAILABLE CARDplan.card_offDimmed: this QEMU has no such target. A click says what to build
P6DESIGNATIONplan.nameThe new system's name
P7INSTALL MEDIAplan.mediaAn ISO to boot from (for Tiger: attach the Tiger DVD)
P8RELEASE LISTplan.releasesOfficial releases, live from each project's servers, fetched over HTTPS and BitTorrent and checked against SHA-256
P9PICKED RELEASEplan.releaseThe one this system will install
P10DOWNLOAD BUTTONplan.downloadOr RESUME 27%, a progress bar, VERIFIED
P11OWN ISOplan.own_isoAny other installer
P12DISK SIZEplan.diskqcow2, so the file grows as the guest uses it
P13MEMORYplan.memSteps up to what the profile allows
P14PROCESSORSplan.cpuUp to the profile's maximum
P15DISK FILEplan.diskfileWhere the disk will be created
P16BACKplan.backTo step 1
P17LAUNCHplan.launchOr DOWNLOAD & LAUNCH, or LAUNCH WHEN READY while the media is on its way
P18DOSSIERplan.dossierThe profile: QEMU target, accelerator, screen, runner, site, notes. Red when the target is missing
P19SCROLL HINTform.scrollThe form goes on below

SHEET I  //  ON THE HUB

The picture shows a Basilisk II disk. It's a bare HFS volume, so it boots from a copy wrapped with our own 68K SCSI driver.

Sheet I: Importing a Basilisk II disk
Importing a Basilisk II disk
CODENAMEIN THE SOURCEWHAT IT IS
I1IMPORT HEADERimport.headerThe title
I2CANCELimport.cancelBack to the world display
I3DISK CARDimport.diskThe file, its folder, and what qemu-img reports: format, virtual size, size on disk
I4CHANGEimport.changePick another file
I5DETECTION NOTEimport.noteWhat W.O.P.R. recognised in the disk, and what it will do about it
I6TARGET PROFILESimport.profilesIts best guess is picked; NOT BUILT ones are dimmed
I7DESIGNATIONimport.nameThe name, taken from the file name
I8MEMORYimport.memStarts at the profile's default
I9PROCESSORSimport.cpuStarts at the profile's default
I10SCRATCH MODEimport.scratchRuns without writing to the disk. Forced on while another system has it open
I11LAUNCHimport.launchAdds it to the known systems and starts it
I12DOSSIERimport.dossierThe same as P18

SHEET E  //  ON THE HUB

It opens from a known system's row or its EDIT button on the world display, and from CONFIG in the VM view. Nothing changes until SAVE.

Sheet E: Editing a known system
Editing a known system
CODENAMEIN THE SOURCEWHAT IT IS
E1EDIT HEADERedit.headerThe machine.ini this writes; an amber line while the system runs
E2CANCELedit.cancelLeaves without saving
E3DESIGNATIONedit.nameThe name
E4MEMORYedit.memUp to the profile's maximum
E5PROCESSORSedit.cpuUp to the profile's maximum
E6TARGET PROFILESedit.profilesThe profile it runs as
E7DISKedit.diskThe disk image: red when it's missing, with its size on disk above
E8CHANGE DISKedit.changeNot while the system runs
E9INSTALL MEDIAedit.mediaAn ISO with BROWSE and CLEAR, and whether to boot from it. For Tiger: attach the Tiger DVD
E10EXTRA ARGUMENTSedit.extraRaw QEMU arguments, case kept. For Tiger they go to run-tiger -Extra
E11FORGETedit.forgetTakes it off the list; the disk stays
E12DELETE WITH DISKedit.deleteDeletes the disk too, after asking. Shown only when the disk sits in the system's own folder
E13SAVEedit.saveWrites machine.ini
E14DOSSIERedit.dossierThe same as P18
E15SCROLL HINTform.scrollThe same as P19

SHEET C  //  ON THE HUB

Sheet C: System configuration
System configuration
CODENAMEIN THE SOURCEWHAT IT IS
C1CONFIG HEADERsettings.headerWhere the settings live (wopr.ini)
C2DONEsettings.doneBack to the world display
C3PATH ROWSsettings.pathsQEMU binaries, MSYS2 runtime, machines, Tiger root, Tiger launch script, install media, Mac 68K ROM
C4PATH FIELDsettings.pathRed when the path doesn't exist
C5PATH HINTsettings.hintWhat belongs there
C6BROWSEsettings.browseSaves straight away (a ROM must pass its checksum first)
C7TARGETS TABLEsettings.targetsEach qemu-system target: present or not built, with or without the D3D11 display, embedding or not

SHEET S  //  ON THE HUB

This view appears the first time a download needs somewhere to go. The drive names in the picture are samples.

Sheet S: Choosing where install media goes (sample drives)
Choosing where install media goes (sample drives)
CODENAMEIN THE SOURCEWHAT IT IS
S1STORAGE HEADERstorage.headerThe question, and how big an ISO is
S2CANCELstorage.cancelBack to where you were
S3DRIVE CARDstorage.driveA click keeps install media in WOPR Media on that drive
S4CAPACITY BARSstorage.barLit is used, dark is free; amber when the drive is over 90% full
S5MOST ROOM TAGstorage.bestThe fixed drive with the most free space
S6OTHER FOLDERstorage.otherAny folder instead
S7FOLDER NOTEstorage.noteWhat gets created, and where to change it later (C3)

SHEET T  //  ON THE HUB

Install media on the way in, over HTTPS range requests and BitTorrent at once. The picture uses sample data.

Sheet T: A download in progress (sample data)
A download in progress (sample data)
CODENAMEIN THE SOURCEWHAT IT IS
T1TRANSFERS HEADERxfer.headerWith the storage folder
T2JOB LISTxfer.listEvery download, with its state, rate and percentage
T3SELECTED JOBxfer.rowThe one shown on the right
T4JOB TITLExfer.titleDistribution, release, and the engine's status line: tracker, DHT, peers
T5PROGRESS AND ETAxfer.progressPercentage, state and time left
T6PIECE FIELDxfer.piecesEvery piece as a bar: cyan from mirrors, pink from peers, amber in flight, white already on disk. The SHA-256 check sweeps it at the end
T7THROUGHPUT SCOPExfer.scopeThe last two minutes: total, mirrors, peers, and the peak
T8INBOUND MAPxfer.mapThe track from the release's home to NORAD
T9CONNECTIONS RADARxfer.radarUs at the centre, mirrors on the inner ring, slower peers further out. A green ring marks a peer we're sending to
T10SOURCE TOTALSxfer.totalsBytes from mirrors against bytes from peers, what we sent back, the rates, done of total
T11JOB BUTTONSxfer.actionsPAUSE or RESUME, and CANCEL, which needs a second click. When it's done: SHOW IN FOLDER, REMOVE FROM LIST

SHEET O  //  ON THE HUB

Three things that draw over the views.

There's a fourth overlay: the tooltip with a system's name when the sidebar is collapsed. It's a small window of its own, so it doesn't show in the offscreen pictures.

Sheet O: The dialog
The dialog
Sheet O: The banner
The banner
Sheet O: The launch flash
The launch flash
CODENAMEIN THE SOURCEWHAT IT IS
O1DIALOGoverlay.modalAsks first: before anything that can't be undone, or here, before W.O.P.R. quits with systems running (they move to windows of their own)
O2BANNERoverlay.bannerA notice at the top of the view: red for failures, amber for warnings, cyan for news. It fades after 10 seconds, and a click dismisses it
O3LAUNCH FLASHoverlay.launchPlays for a second and a half when a system starts, before its screen comes up