sangokushi-2 · git:20261013.ea257a4 · 2026-10-13 · sha256 483abe0ca047caee

sangokushi-2 git:20261013.ea257a4A

Immutable. This exact content never changes and is served at /api/v1/blob/483abe0ca047caee.

---
name: sangokushi-2
description: "Sangokushi II (Koei 1990, Japanese, 3-disk set) on the shared MSX: media set and checkpoint compatibility, starting a new game, the province command menu, going to war, placing units (digits move, 0 places), battle commands and retreat, in-game save flow, media-change pitfalls, an all-AI run to the game's end, and one-call macros for the two verified key sequences. Apply a fact only when the visible prompt matches it."
---

# Sangokushi II

A turn-based strategy game played from three floppy images. Everything below
is an observation from a real campaign state, not a rule of the game: apply it
only when the visible prompt matches, and re-verify from the actual screen.

## Media

A = `sangokushi-2.dsk`, B = `sangokushi-2-b.dsk`, user data disk =
`sangokushi-2-data.dsk`. Catalog names only; no host paths. Start a fresh game or load your own in-game
save. A named checkpoint is local to its workspace and requires a compatible
emulator core. One older format-1 Cao Pi checkpoint restored a picture but reset
to C-BIOS after stepping on the newer core. A restored screenshot alone does
not prove a resumable game: verify continued input, and preserve an incompatible
checkpoint for its matching core rather than overwriting it.

## Province command prompt `(0-19)?`

Return with an empty entry reveals the command list; Space and F1 did not. A
numeric entry followed by Return selects that command instead.

| Number | Visible command | Meaning |
| --- | --- | --- |
| 0 | 待機 | Wait / finish province commands |
| 1 | 移動 | Move |
| 2 | 輸送 | Transport |
| 3 | 戦争 | War |
| 4 | 軍事 | Military |
| 5 | 人事 | Personnel |
| 6 | 外交 | Diplomacy |
| 7 | 計略 | Plots |
| 8 | 情報 | Information |
| 9 | 開発 | Development |
| 10 | 治水 | Flood control |
| 11 | 褒美 | Rewards |
| 12 | 施し | Relief |
| 13 | 商人 | Merchant |
| 14 | 徴収 | Levy |
| 15 | 地図 | Map |
| 16 | 委任 | Delegate |
| 17 | 放浪 | Wander |
| 18 | 特別 | Special |
| 19 | 機能 | Functions |

Observed transitions: `1`, Return asks for a destination numbered 1-41; `9`,
Return asks which officer should develop the province. Neither alone proves
movement or improved land. `0`, Return, `y`, Return advanced the observed
campaign from province 10 to 18.

Development is a sequence of decisions: `9`, Return; read the officer list
and select an officer; capture the resulting amount prompt before entering a
cost. One observed province 13 action (officer 5, cost 50) changed gold from
500 to 450 and a displayed province statistic from 20 to 27, returning to the
command prompt with the month unchanged. That demonstrates a completed action
in that state, not a fixed exchange rate or a universally best officer.
Compare the actual before/after resources, then preserve the result before
planning another action.

Functions submenu cancellation: in one observed province 11 state, the
functions submenu `(1-6)?` remained visible after `0`, Return and after Esc.
A subsequent Return by itself returned to the same province's main `(0-19)?`
prompt with resources and month unchanged. Verify that prompt before sending
province commands; do not assume Esc universally cancels.

## Starting a new game

Observed 2026-09-29 from a fresh boot of disk A.

1. `何をしますか(1-3)?`: `1`, Return. `何番のシナリオですか(1-6)?`: the number,
   Return.
2. `第1ドライブにBディスクを入れ リターンキーを押して下さい`: change the disk
   to B (`masc_msx_change_disk`), then Return.
3. `何人でプレイしますか`, `プレイヤー 1 は誰を選びますか`, the level, other
   wars, the mode: number, Return each. `すべてよろしいですか(Y/N)?`: `y`.
4. An event screen can come first; Return goes on to the first
   `<君主>様、第N国に御命令を(0-19)?`.

## Check numeric input before submitting

Held keys can repeat in numeric fields. During the May 221 province-21
retreat, `2` held for 5 frames entered `22`; a 1-frame tap was not accepted.
Separate 3-frame taps entered `2`, then `0`, and Return submitted the visible
`20`. These timings describe that prompt only. Observe the displayed number
before Return, and adjust the hold when a digit repeats or is missed; do not
infer the submitted destination from the intended key list.

## Going to war

Observed 220年1月 as 曹丕, from 20 against 31 (劉備).

1. `3`, Return: `どこへ攻め込みますか(1-41)?`; the province number, Return.
2. `誰を出撃させますか(1-N)?`: one officer per answer, the number and Return;
   a sent officer gets a `*`. Several can go. An empty Return ends the list.
3. `軍資金をいくらもっていきますか`, then `兵糧をいくらもっていきますか`: the
   amount, Return. `攻め込みますか(Y/N)?`: `y`.
4. When the governor left, `第N国の太守を決めて下さい(1-N)?` picks the new one.

## Placing units

`<武将>を配置して下さい(0:配置)` asks for one unit at a time. The battle map is
made of hexes and its cursor moves on the digit keys; arrow keys, `4` and `6`
did nothing. `0` places the unit on the cursor's hex.

The next unit can start on the occupied hex. Move to a permitted tile before
pressing `0`; an occupied, off-map or disallowed tile keeps the same prompt.
In one province-18 → 27 battle, `0` placed Zhang Liao, then separate presses
`1`, `8`, `0` placed Xiahou Dun. This is specific to that terrain and starting
cursor, not a universal placement macro. Inspect the PNG after every decision
and confirm the next officer or battle prompt before continuing.

## Battle commands

- A challenge such as `我が名は関索 いざ勝負せよ` asks
  `申し込みを受けますか(Y/N)?`. Return there went on to the battle menu.
- `1.移動 2.攻撃 3.待機 4.情報 5.工作 6.退却` and
  `<君主>様、<武将>にご命令を(1-6)?`: the digit alone opens the command, with
  no Return. A Return after it backs out of the menu the digit opened.
- `1` gives `1.通常移動 2.誘導移動`; `1` again asks `どの方向ですか?` with
  `機動力 N`. `2` moved the unit one hex down and spent the rest of its
  mobility, and the next unit's menu came up.
- Guided movement `1` → `2` asks `どこに仕掛けますか?`. In an
  April province-21 branch, south `2` then opened the own movement direction
  prompt with mobility 4; north `8` moved Xu Huang and advanced the day.
  Subsequent information queries found Zhu Ran two hexes south, rather than
  one: the move succeeded, but enemy pursuit was not observed. No `0`
  placement input was needed between the two direction prompts.
- `2` opens `1.通常 2.一斉 3.火計 4.突撃`. In the observed province-27
  battle, `1` then asked `どの方向ですか?`. Choosing direction `9` returned
  a partly drawn command menu; a later Return exposed the next officer's command
  prompt. The displayed troop totals did not change, so this does
  not establish an enemy hit or a universally valid attack direction.
- `4` asks `誰の様子を見ますか? (0:見る RET:やめる)`. Move the information
  cursor with the hex-direction digits, then press `0` to inspect the officer
  on that hex. This is an information cursor, not a troop movement command.
  In the March 220 province-21 battle, `0` first showed Yue Jin's panel:
  soldiers 10, training 53 and martial ability 86. Separate `2`, `2`, `0`
  inputs then showed Xu Huang: soldiers 50, training 61 and martial ability 92.
  That sequence depends on the current positions; it is not a universal way to
  select Xu Huang. Confirm the displayed name before using the numbers.
  `RET:やめる` indicates Return to leave. Inspect the resulting command prompt
  before sending another command. Current training values do not establish a
  training gain, and soldier values use the game's display units.
  After a later cursor sequence and `0`, Xu Huang's panel remained displayed.
  Retained information alone does not identify the selected hex or establish
  that an enemy occupies it.
- `6` asks `全軍退却しますか(Y/N)?`; after `y` each unit asks
  `<退却>:20 <武将>はどこに退却しますか?`. Type the province number shown and
  Return; an empty Return is not an answer. After the last unit the map comes
  back with the next province's command prompt.

## In-game save

`1`, `9`, Return, then `5`, Return (command 19 機能, option 5) opens the save
flow. Swap to the data disk only when the game requests D; follow the slot
and name prompts; swap back to B when requested. Emulator checkpoints and the
game's own save/load are distinct behaviors to verify separately.

To retain the game's changed disk as reusable media, wait for the completed
write / return-to-B prompt and call `masc_msx_export_disk` **while D is still
mounted**, with a new `filename`, for example `campaign-data-01.dsk`. Check the
returned filename, byte count and SHA-256. Existing names are refused. Only
then swap back to B as requested. Exporting after the swap would copy B instead.

To verify the save independently of an emulator checkpoint, fresh-boot A,
choose title option `2`, Return, insert the exported data disk when D is
requested, choose the saved slot with Return, and insert B when requested.
Read the restored ruler, date, province and resources, then verify a command
still opens. This round-trip was observed for Cao Pi, January 220, province 10,
gold 950 and land 72 on native worker source `1632107405d574726b90f0ac918ceeaf98ddbbcb`.

## Media-change pitfall

A controlled replay found that switching from B to A during an active
campaign cleared the open file state while the game still needed
`PACKDATA.DAT`, which was present on B. Replaying the same accepted inputs
from the same earlier checkpoint while retaining B reached a readable
diplomacy prompt. That is a failure of one media-change sequence, not a rule
to keep B inserted at all times: follow the currently visible D or B request
when the game asks.

## Reading the screen

Bitmap modes (GRAPHIC6 openings and scenes) leave name-table residue:
`screen_text` there is not OCR of the visible scene. Read the PNG image returned by the attached `masc_msx_screen` tool. The
Add-on’s `msx-observe` Skill explains how to preserve the captured frame
and report uncertain text.

## Advancing the campaign month

Ending one province's commands does not by itself advance the month. At the
visible province `(0-19)?` prompt, send `0`, Return, then confirm `y` at
`今月の命令を終えますか(Y/N)?`. Read the next screen before repeating: it may
be another owned province, a report, or a different interactive prompt.

In an observed scenario 6 campaign, January 220 command menus visited
provinces 10, 18, 6, 14, 20, 2, 16, 17, 3, 19, 7, 9, 13, 12, 5, 11, 8 and 4.
After the last command end, the date changed to February 220. Subsequent AI
reports progressed with `masc_msx_step` alone, and Cao Pi's province 10 command
menu returned with gold 950 and land 72. This order describes that saved
campaign; choose each action from the current screen rather than replaying
the province list on another campaign.

During reports, advance without injecting an unrequested key and inspect the
PNG. A date change plus the next human command menu verifies month progression;
a province number change within January does not. This replay used native
worker source `1632107405d574726b90f0ac918ceeaf98ddbbcb` and proves one campaign
month, not victory or a normal winning ending.

## Watching an all-AI game

`0` at `何人でプレイしますか` starts with no human ruler and goes straight to the
AI turns. Pressed with Return every 300 frames, one scenario 6 run went from
220年 to 301年, when the last ruler died without an heir
(`曹爽の一族は滅亡しました`) and the KOEI copyright screen came up. That is
the game ending with no winner, not a victory; no full winning campaign is
established.

## Repeated sequences

- Ending the current province's commands (`0`, Return, `y` at the province
  `(0-19)?` prompt) is one call: the `sangokushi-2-end-command` composition
  Skill presses the verified sequence, waits for the settled screen and
  returns the observation. This is the verified province 10 to 18 transition.
- The save-flow entry is `1`, `9`, Return, `5`, Return at the province
  prompt: one `masc_msx_press` call with `sequence=true`. The disk prompts
  that follow are interactive: read the screen and swap media per the visible
  request; nothing pre-swaps disks.

## Detailed references

This Skill is split so each file fits one inline `keeper_skill` read
(16384 bytes). Read a reference with `keeper_skill` and its `file`
argument only when the situation matches; every file is an observation log
in the same sense as the sections above.

- `references/campaign.md` — Economy and campaign management: alliances, recruitment and training, food and resupply, selling rice, transport, weapons, the armament and loyalty check, ruler death and succession
- `references/battle-operations.md` — Battle operations: locating an enemy through fire, waiting for mobility and verifying occupation, defending and retreating, defection work, a battle continuing into the next month