コウモリ bat
- 記号
B- Lv
- 1
- 速さ
- 22
- AC
- 8
- 攻撃
- 1d4
不規則に飛び回る素早いコウモリ。噛みつきは弱いが、動きが読みにくく攻撃を外しやすい。死体を食べると混乱する。
8bit コンソールで 動く ローグライク「HACK 8BIT EDITION」の 開発ガイド。1985 年の Hack 1.0.3 を 6502 に 移植し、現代アレンジ(2020年代)の 遊びやすさを 足して いる。ここには 開発の 記録・テスト用の「開発迷宮」の 仕様・敵/罠/物の 図鑑を まとめた。上の タブで 切りかえる。
どんな ゲームで、どう 遊ぶのか。
HACK 8BIT EDITION は、1985 年のローグライク「Hack 1.0.3」を 8bit コンソールで遊べるように作りなおした移植版です。開発は 125 Inc.。ここでは、はじめて遊ぶ人に向けて、ゲームの流れと操作、楽しみ方を紹介します。
一手進むたびに自動でセーブされるので、途中でやめても続きから遊べます。
タイトル画面で「はじめる」を選ぶと、冒険の準備画面になります。
| ダンジョン | 中身 |
|---|---|
| ランダム | 毎回ちがう迷宮。ふつうはこれ |
| 迷宮 #1〜#3 | 毎回同じ形の迷宮。ほかの人と同じ条件で得点を競えます |
| 開発迷宮 | 開発用の迷宮。記録はデバッグ扱い |
| 今週(ウェブ版だけ) | 毎週月曜 9:00(日本時間)に替わる、その週だけの迷宮 |
| ボタン | すること |
|---|---|
| 十字キー | 歩く。敵のいる方へ歩くと攻撃 |
| Ⓐ | まわりを探す(隠し扉や罠を見つける)。階段の上では下りる・上る |
| Ⓑ | メニューの中で戻る |
| START | メニューを開く(どうぐ・足元・聖呪文 など) |
| SELECT | 少し前のメッセージ(記録)を見る |
持ち物の一覧では、Ⓐ を軽く押すとその道具のいつもの使い方(食べ物なら食べる、薬なら飲む)をすぐ行います。Ⓐ を長押しすると、投げる・置く・説明などの動作を選ぶ窓が出ます。
ウェブ版をキーボードで遊ぶときは、次のキーが使えます。
| キー | ボタン |
|---|---|
| W A S D(または矢印キー) | 十字キー |
| O | Ⓑ |
| P | Ⓐ |
| 9 | SELECT |
| 0 | START |
画面の上の 2 行があなたの様子です。いまの階、体力、おなか、レベル、力、守り(数字が小さいほど堅い)が並びます。下の 2 行は起きたことの知らせです。赤い字は危ないしるし。迷ったら、まず下の文を読んでみてください。
はじめて見た敵には、下の文で「〜がいた!(性質)」と一言の説明が出ます。知らないと危ない敵を覚える助けになります。
冒険が終わると得点が出ます。得点は、経験値・持ち帰ったお金・たどり着いた深さなどで決まり、地上に脱出すると宝石や魔除けの価値も加わります。
いまのところ、クリア率の統計はありません。原典の Hack でも、魔除けを持って地上へ戻れる人はほんのひと握りでした。ランキングには「魔除けを持って脱出」の印が付くので、これから記録が集まれば、どれくらい難しいのかが見えてくるはずです。
死んでもすぐに次の冒険が始められます。覚えた知識が、次の一歩を少しずつ深くしてくれます。
Coming soon。遊べる場所は、準備ができしだいこのページでお知らせします。
原典の 仕様と 現代アレンジ(2020年代)。
本書は HACK 8BIT EDITION(125 Inc.)のルールを整理したものである。ゲームの中身(敵・物・計算)は、原典 Hack 1.0.3 の C ソースをできるかぎりそのまま移している。そのうえで、遊びやすさのために手を入れたルールを「現代アレンジ(2020年代)」と呼ぶ。現在の版は常に現代アレンジで動く。
主な罠は、トラバサミ、矢の罠、ダーツの罠、落とし戸、テレポートの罠、落とし穴、眠りガスの罠である。罠は隠れていることがあり、踏むか探すかで見つかる。
| 部屋 | 出る階(原典の条件) |
|---|---|
| 店 | 2〜19 階 |
| 宝物庫(金庫) | どこにも通じていない隠し部屋。長くいると番人が来て名前を聞く |
| 動物園(宝の間) | 7 階以上で、ときどき |
| 蜂の巣 | 10 階以上で、ときどき。ローヤルゼリーがある |
| 墓場 | 12 階以上で、ときどき |
| 沼 | 19 階以上で、ときどき |
前の冒険者が死んだ階には、その墓と持ち物、幽霊が残ることがある(骨の階)。
床に Elbereth と書くと、その上にいるあいだ、近くの多くの敵はおそれて逃げる。字は戦ったり歩いたりするとこすれて消えていく。
得点は原典の計算に従う。
ランキングは得点の高い順。本体に上位 10 件が残り、ウェブ版は自動で、8bit コンソール版は結果画面の QR からネットの表に登録する。
| 項目 | 原典の 仕様 | 現代アレンジ(2020年代) |
|---|---|---|
| 動作の手間 | 防具の着脱・食べる・彫るなどに最大 16 手 | 1 手 |
| 物の名前 | 使って覚える | 最初からわかる(呪いと強化は識別が必要) |
| 祈る | あり | 外した |
| おなかの減り | 毎手 | 2/3(3 手に 1 回は減らない) |
| 隠し扉 | 1/7 | 1/3 |
| 迷路の始まり | 26〜28 階から | 16〜18 階から |
| 魔除けの階 | 30 階以上の最初の迷路 | 18 階以上の最初の迷路 |
| 浮遊眼で固まる | 2/3 の確率、最大 200 手 | 1/2 の確率、2〜21 手 |
| 初めて見た敵 | 知らせなし | 性質のある敵は「〜がいた!(性質)」と一言 |
| 呪いの印 | なし | 呪いがわかった物に(呪) |
| 持ち物の操作 | キーで動作を選ぶ | Ⓐ でいつもの動作、Ⓐ長押しで動作を選ぶ |
| 通路の見通し | 隣のマスだけ | 歩いたことのある通路・扉をたどって先も見える(曲がり角 1 つまで) |
| 覚えた地図 | 見えている所と同じ絵 | いま見えていない所は網をかけた絵 |
| 遊んでいる途中の記録 | 終わったときだけ | 階段を下りるたびに上位 5 件といまの自分 |
| 死んだら | 終わり | 終わり(変更なし) |
| 項目 | 原典 | 移植版 |
|---|---|---|
| 1 階の敵 | 無制限 | 24 体 |
| 1 階の床の物 | 無制限 | 64 個 |
| 1 階の罠 | 無制限 | 32 個 |
| 1 階の床の文字 | 無制限 | 4 つ |
| 長い虫 | 31 匹 | 1 匹(体 12 節) |
| 階段でついてくる敵 | 無制限 | 4 体と犬 |
| 骨の階 | 何階でも | 1 階だけ |
原典は階をそのまま保存するが、移植版は階を作りなおす。そのうえで次のものを引き継ぐ。
| 項目 | 原典 | 移植版 |
|---|---|---|
| 倒した敵 | いない | 数で覚えて、その分は出ない |
| 置いた物 | 全部残る | 16 個まで残る |
| 置いてきた犬 | いる | いる |
| 怒った店主 | 怒ったまま | 怒ったまま |
| 見た地図 | 残る | 元に戻る |
| 開けた扉 | 残る | 元に戻る |
65 種。数値は 原典の mons[](Lv・速さ〈12 で 主人公と 同じ〉・AC〈小さい ほど 固い〉・攻撃〈n 個の d 面さい〉)。赤い 札は ゲームで 初めて 見た 時に 出る 一言。
B不規則に飛び回る素早いコウモリ。噛みつきは弱いが、動きが読みにくく攻撃を外しやすい。死体を食べると混乱する。
G浅い階に現れる小柄な亜人。武器を持っていることもあるが、さほど強くない。序盤の経験稼ぎの相手。
H浅い階に現れる小鬼。素手で殴ってくるだけの弱い相手。落ち着いて一匹ずつ倒せば問題ない。
J群れで現れる野犬。一匹ずつは弱いが囲まれると痛い。通路に引き込んで一列にして戦うのが定石。
K浅い階に現れる小型の亜人。力は弱いが、死体には毒があるので食べないほうがよい。
L金貨を盗むとすぐ瞬間移動で逃げる小人。金を持っていなければ怖くない。死体を食べると体に瞬間移動の性質がつく。
r浅い階に多い大きなネズミ。噛みつくだけの弱い敵だが、数が多いと体力を削られる。
a殴ると酸を浴びてダメージを受ける粘体。飛び道具で倒すと安全。死体は腐らず、食べると石化が治る。
E動かない目玉。見えている状態で殴ると見返されて長い間麻痺する。飛び道具か杖で倒すこと。死体を食べるとテレパシーが身につく。
h噛みつかれると眠らされることがある小鬼。眠っている間は無防備になる。死体には毒がある。
iすばしこい小悪魔。傷がすぐに治るので、ちまちま戦うと長引く。手早く倒したい。
O武器を振るう亜人。浅い階から中盤まで広く現れる。死体を食べると気分が悪くなることがある。
yふわふわ近づいてきて爆発し、目をくらませる光。近くで倒すと盲目になるので、離れて倒すのが無難。死体を食べると混乱する。
Z動きの鈍い死者。墓場の部屋に群れていることが多い。死者退散の杖が効く。鈍いので逃げるのも容易。
A素早く動き、毒針で刺して力を奪う大アリ。見た目以上に危険な序盤の強敵。死体には毒がある。
fゆっくり漂う霧の怪物。攻撃は弱く、脅威は小さい。足も遅いので相手にせず進んでもよい。
N物を盗んで瞬間移動で消える妖精。倒せば盗まれた物を落とす。死体を食べると体に瞬間移動の性質がつく。
p天井に張り付いていて、真下に来た者へ落ちてくる。不意打ちに注意。落ちてきた後は動きが鈍い。
Q素早い小悪魔。手数が多く、中盤では侮れない。死体を食べると気分が悪くなることがある。
qぷるぷる震える粘体。動きは遅く、特別な攻撃も持たない。落ち着いて殴れば倒せる。
v動かないカビ。張り付いてきて離れられなくなる。近寄らなければ害はないので、遠くから倒すか避けて通る。
b強力な噛みつきを持つ大きな甲虫。守りも固く、中盤で出会うと苦戦しやすい。死体には毒がある。
C素早く力強い半人半馬。逃げても追いつかれやすい。中盤の手ごわい相手。
cシューという息で体を石に変え始める怪物。石化が始まったらアシッドブロブの死体を食べる。死体を食べると即座に石になる。
g殴ると体液で固められ、しばらく動けなくなる立方体。触れられても固まることがある。飛び道具か杖で戦いたい。
j爪と牙で何度も攻撃してくる猛獣。一度に受けるダメージが大きい中盤の強敵。
k群れで飛んでくる毒バチ。刺されると毒が回る。巣の部屋にはローヤルゼリーがある。死体を食べると耐毒の性質がつくことがある。
S物の下に隠れていることがある毒ヘビ。噛まれると毒が回り、力が減る。死体には毒がある。
F近づいて爆発し、凍らせてくる球。爆発されると大ダメージ。離れて倒すこと。死体を食べると冷気に強くなる。
oつかんで締めつけてくる熊。捕まると逃げにくく、締めつけで体力を削られる。
R触れた兜や金属の鎧を錆びさせる怪物。大事な鎧を着ているなら飛び道具で倒したい。死体を食べると気分が悪くなる。
s毒の尾で刺してくるサソリ。死体には毒があるが、食べると耐毒の性質がつくこともある。
t瞬間移動して近づき、噛みついてくる。逃げてもすぐ追いつかれる。死体を食べると体に瞬間移動の性質がつく。
W触れてレベルを吸い取る亡霊。死者退散の杖が効く。死体を食べるとレベルが上がるので、倒したらぜひ食べたい。
w長い胴体を引きずる大ミミズ。動きは遅いが体力が多い。倒すとワームの牙を落とすことがある。
d野生の大きな犬。素早く、噛みつきも強い。犬の死体を食べると怪物を呼び寄せる体になってしまう。
l非常に素早く、何度も攻撃してくる獣。逃げ切るのは難しい。深い階の強敵。
M物に化けて待ち伏せする怪物。店の品物に紛れていることも。張り付かれると離れにくい。死体を食べると自分も化けてしまう。
T力が強く、傷がすぐに治るトロール。逃げられると回復されるので、一気に倒し切りたい。
u素早く、一撃を入れると距離を取る一角獣。追い回すと手間取る。倒すと運が大きく下がる(−5)。宝石を投げて渡すと運が良くなって去っていく。
Y冷気に強い雪男。力が強く、爪で何度も攻撃してくる。死体を食べると冷気に強くなる。
I姿の見えない怪物。透明視の指輪があると戦いやすい。死体を食べると透明になり、すでに透明なら透明なものが見えるようになる。
U目が合うと混乱させる巨体。岩を掘り進んでくる。混乱中は思うように動けないので注意。死体を食べると気分が悪くなる。
V噛みついてレベルを吸い取る。傷もすぐに治る。死者退散の杖が効く。死体には毒がある。
X壁や岩をすり抜けて移動する怪物。どこから来るか読めないので、通路でも油断できない。
x足を刺して傷つける虫。足をけがすると動きに響く。死体を食べると気分が悪くなる。
z非常に強力な巨獣。攻撃が重く、深い階では最も恐ろしい相手の一つ。死体を食べると気分が悪くなる。
:次々とほかの怪物に姿を変える。強い怪物に化けると危険。変身防止の指輪をはめていると化けられない。
D炎を吐く最強クラスの怪物。耐火の指輪があると心強い。死体には毒があるが、食べると火に強くなる。
e二つの頭を持つ巨人。力が強く体力も多い。深い階の手ごわい相手。
'天井に潜み、獲物を丸呑みにして消化する。飲まれたら内側から攻撃して脱出する。長く飲まれていると危ない。
n武器も鎧も身につけていなければ傷を治してくれる。死体を食べると体力が満タンになるが、共食いになってしまう。
,床に化けて潜み、獲物を丸呑みにする。飲まれたら内側から攻撃して脱出する。長く飲まれていると危ない。
P巨大なワーム。噛みつき、丸呑みにしてくる。飲まれたら内側から攻撃して脱出する。死体を食べると気分が悪くなる。
&非常に強い悪魔。攻撃の合間に仲間の悪魔を呼ぶことがあり、長引くほど不利になる。
m迷路に住むとても強い怪物。正面から戦うのは危険。杖や巻物を惜しまず使いたい。
@店を営む人間。代金を払えば品物を売ってくれる。払わずに出ようとすると怒って襲ってくる。非常に強い。
d連れているペットの子犬。後をついてきて一緒に戦う。敵を倒して育つと犬になる。
d連れているペットの犬。子犬より強く、育つと大きな犬になる。隣にいれば階段も一緒に移動する。
d連れているペットの、成長しきった大きな犬。強力な相棒。隣にいれば階段も一緒に移動する。
@金庫に長居すると現れて名を問う番人。金を置いてついて行けば通路まで案内してくれる。逆らうと怒る。
(見えない)前の冒険者の墓がある階に眠る幽霊。攻撃は当てにくく、動きは遅い。墓の周りには前の冒険者の持ち物がある。
;沼に潜む大ウナギ。巻きつかれて水中に引き込まれると溺れる。水辺には近寄らないこと。
1迷路の奥でイェンダーの魔除けを守る魔法使い。瞬間移動し、呪文で怪物を呼び、魔除けを奪おうとする。
d迷路の奥で魔法使いとともに魔除けを守る猛犬。非常に強く、素早い。万全の態勢で挑みたい。
7 種。隠れて いる 罠は Ⓐ(さがす)で 見つかる。
踏むと足をはさまれ、しばらくその場から動けなくなる罠。敵が近くにいるときに掛かると危ない。
踏むと矢が飛んできてダメージを受ける罠。外れた矢は足元に落ちるので、拾って使える。
踏むと吹き矢が飛んでくる罠。毒が塗られていることがあり、刺さると力が減る。耐毒の性質があれば平気。
踏むと下の階へ落ちる罠。さらに深い階まで落ちることもある。隣にいるペットはついて来る。
踏むと同じ階のどこかへ瞬間移動する罠。瞬間移動制御の指輪があれば行き先を選べる。金庫の入口になっていることも。
落ちるとダメージを受け、這い上がるまで数手かかる穴。その間に敵に囲まれないよう注意。
踏むと眠りガスが噴き出し、しばらく眠ってしまう罠。眠っている間は無防備になる。
現代アレンジ(2020年代)の 決まりで 物の 名前は 初めから 全部 わかる(+n は 原典どおり 使うまで わからない)。絵は 床に 落ちて いる ときの 分類の 絵。
武器は装備して近接戦に使うか、投げて飛び道具にする。矢・石つぶて・クロスボウの矢は、対応する弓・スリング・クロスボウを装備した状態で投げると威力が出る。強化値は武器強化の巻物で上がり、識別の巻物で確かめられる。
| 矢arrow | 弓を装備した状態で投げると威力を発揮する矢。束でまとめて持てる。外れた矢は拾い直して使える。 |
| 石つぶてsling bullet | スリングを装備した状態で投げる弾。束でまとめて持てる。外れた弾は拾い直して使える。 |
| クロスボウの矢crossbow bolt | クロスボウを装備した状態で投げる矢。束でまとめて持てる。外れた矢は拾い直して使える。 |
| ダーツdart | 手で投げて使う小さな矢。まとめて持てるので扱いやすい飛び道具。近寄りたくない敵に。 |
| 石rock | どこにでも転がっている石。投げることもできるが、スリングを装備して撃つほうが効く。 |
| ブーメランboomerang | 投げると弧を描いて戻ってくる飛び道具。受け止め損ねると自分に当たることもある。 |
| メイスmace | 打撃用の棍棒。扱いやすい近接武器。強化値は武器強化の巻物で上げられる。 |
| 斧axe | 重い刃を持つ近接武器。威力はそこそこ。強化値は武器強化の巻物で上げられる。 |
| フレイルflail | 鎖でつながれた打撃武器。威力はそこそこ。強化値は武器強化の巻物で上げられる。 |
| 長剣long sword | 標準的な剣。威力が高く頼れる近接武器。手に入ったら主力にしたい。 |
| 両手剣two handed sword | 両手で振るう大剣。威力は随一だが、盾と一緒には使えない。守りより攻めを選ぶなら。 |
| 短剣dagger | 軽い短剣。近接でも使えるが、投げても役に立つ。まとめて持って投げる使い方も。 |
| ワームの牙worm tooth | ロングワームが落とす牙。そのままでも武器になるが、武器強化の巻物を読むとクリスナイフに変わる。 |
| クリスナイフcrysknife | ワームの牙に武器強化の巻物を読むと生まれる鋭い刃物。軽くて威力の高い近接武器。 |
| 槍spear | 突き刺す長柄の武器。威力はそこそこ。強化値は武器強化の巻物で上げられる。 |
| 弓bow | 矢を射るための弓。装備した状態で矢を投げると威力が出る。近接戦では役に立たない。 |
| スリングsling | 石つぶてや石を撃つための投石器。装備した状態で投げると威力が出る。近接戦では役に立たない。 |
| クロスボウcrossbow | クロスボウの矢を撃つ弩。装備した状態で矢を投げると威力が出る。近接戦では役に立たない。 |
防具は着て使い、防御(AC)を下げる。数字が小さいほど守りが固い。鎧・兜・盾・手袋・マントをそれぞれ一つずつ着られる。FC版では着脱に手間がかからない。金属の防具は錆の怪物に錆びさせられることがある。
| 兜helmet | 頭を守る兜。鎧と一緒に着けられる。錆の怪物に錆びさせられることがある。 |
| プレートメイルplate mail | 最も守りの固い重鎧。金属なので錆の怪物に錆びさせられることがある。見つけたら着たい一品。 |
| スプリントメイルsplint mail | 守りの固い金属の重鎧。プレートメイルに次ぐ守り。錆の怪物に錆びさせられることがある。 |
| バンデッドメイルbanded mail | 守りの固い金属の重鎧。スプリントメイルと並ぶ守り。錆の怪物に錆びさせられることがある。 |
| チェインメイルchain mail | 鎖を編んだ金属鎧。守りと扱いやすさのバランスが良い。錆の怪物に錆びさせられることがある。 |
| スケイルメイルscale mail | 鱗状の板を重ねた金属鎧。中くらいの守り。錆の怪物に錆びさせられることがある。 |
| リングメイルring mail | 輪を縫いつけた金属鎧。守りは控えめ。錆の怪物に錆びさせられることがある。 |
| 鋲打ちの革鎧studded leather armor | 鋲で補強した革鎧。守りは控えめだが、金属ではないので錆びる心配がない。 |
| 革鎧leather armor | 軽い革鎧。鎧の中では最も守りが低いが、錆びる心配がない。何も着ないよりはずっといい。 |
| エルフのマントelven cloak | 鎧の上から羽織る軽いマント。鎧と一緒に着けて守りを少し上乗せできる。 |
| 盾shield | 腕にはめる盾。鎧と一緒に着けて守りを上乗せできる。両手剣とは一緒に使えない。 |
| 手袋pair of gloves | 手にはめる防具。鎧と一緒に着けて守りを少し上乗せできる。金属ではないので錆びる心配もない。 |
薬は飲んで使う。体力の回復や能力の上昇など良い効果もあれば、麻痺や盲目、混乱など危険な効果もある。現代アレンジ(2020年代)では最初から全ての名前が分かっているので、効果を確かめて使い分けられる。危険な薬は敵の近くで飲まないこと。
| 力回復の薬restore strength | 減った力を最大値まで元に戻す薬。毒で力が落ちたときに飲みたい。 |
| 酒の薬booze | 酒。燃える液体のような味がする。飲むと混乱し、気を失うこともある。 |
| 透明の薬invisibility | 飲むと自分の姿が見えなくなる薬。怪物から狙われにくくなり、戦いや逃走が楽になる。 |
| 果汁の薬fruit juice | 果汁。飲むと少し空腹を満たせる。害はないので、食べ物が尽きたときのつなぎに。 |
| 治療の薬healing | 体力を回復し、目の見えない状態も治す薬。体力が満タンなら最大体力が上がることもある。 |
| 麻痺の薬paralysis | 飲むと足が床に凍りつき、しばらく動けなくなる薬。敵のそばで飲むと命取り。 |
| 怪物感知の薬monster detection | その階にいる怪物の位置が分かる薬。危険な敵がいないか確かめたいときに。 |
| 物体感知の薬object detection | その階にある物の位置が分かる薬。宝や道具を探すのに役立つ。物が無ければ何も見えない。 |
| 病気の薬sickness | 毒のような味の薬。飲むと力と体力が減る。耐毒の指輪をはめているなど、毒に強ければ平気。 |
| 混乱の薬confusion | 飲むと混乱し、しばらく思うように動けなくなる薬。安全な場所以外では飲まないこと。 |
| 力増強の薬gain strength | 力が上がる薬。力が強いほど攻撃が当たりやすく、ダメージも増える。 |
| 速さの薬speed | 体がすばやく動くようになる薬。敵より多く行動できる。足の傷も治る。 |
| 盲目の薬blindness | しばらく目が見えなくなる薬。浮遊眼を殴っても麻痺しなくなるという使い道もある。 |
| レベル上昇の薬gain level | 経験を積んでレベルが一つ上がる薬。最大体力も増え、強敵とも戦いやすくなる。 |
| 特効治療の薬extra healing | 治療の薬より大きく体力を回復する薬。目の見えない状態も治り、最大体力も上がりやすい。 |
| 浮遊の薬levitation | しばらく体が宙に浮く薬。浮いている間は物を拾えず、階段も下りられない。罠は踏まずに済む。 |
巻物は読んで使い、読むと消える。混乱しているときに読むと別の効果になることがある。防具や武器を強化する巻物は、着ている物・装備している物に効く。現代アレンジ(2020年代)では名前は最初から分かるが、持ち物の強化値や呪いは識別の巻物で調べる。
| 手紙の巻物mail | 届いた手紙の巻物。中は白紙のようで、読んでも何も起こらない。ほかの巻物と違い役には立たない。 |
| 鎧強化の巻物enchant armor | 着ている防具を強化して守りを上げる巻物。強化しすぎた防具に読むと蒸発することがある。 |
| 鎧破壊の巻物destroy armor | 着ている防具を一つ塵にしてしまう巻物。大事な鎧を着ているときは読まないこと。 |
| 怪物混乱の巻物confuse monster | 読むと手が光り、次に殴った怪物を混乱させる。混乱した怪物はでたらめに動く。 |
| 怪物威嚇の巻物scare monster | 読むと周りの怪物が逃げ出す。床に置けば怪物はその上に乗れない。拾い直すと塵になることがある。 |
| 白紙の巻物blank paper | 何も書かれていない巻物。読んでも「白紙のようだ」と分かるだけで、効果はない。 |
| 解呪の巻物remove curse | 持ち物の呪いを解く巻物。呪われて外せなくなった装備を外したいときに。 |
| 武器強化の巻物enchant weapon | 装備している武器を強化する巻物。ワームの牙に読むとクリスナイフになる。強化しすぎると蒸発することがある。 |
| 武器損傷の巻物damage weapon | 装備している武器の強化値を下げてしまう巻物。武器を持たずに読めば被害はない。 |
| 怪物召喚の巻物create monster | 読むと怪物を呼び出してしまう巻物。経験稼ぎに使えなくもないが、危険が大きい。 |
| 手なずけの巻物taming | 隣にいる怪物を手なずけてペットにする巻物。強い怪物に囲まれたときの切り札。 |
| 根絶の巻物genocide | 選んだ種類の怪物をすべて消し去る巻物。強敵や厄介な敵に使いたい。人間を選ぶと自分も消える。 |
| 光の巻物light | 部屋を明るくする巻物。暗い部屋で周りを見渡したいときに。混乱して読むと逆に暗くなる。 |
| 瞬間移動の巻物teleportation | 読むと同じ階のどこかへ瞬間移動する巻物。危ない場面からの脱出に。混乱して読むと別の階へ飛ぶこともある。 |
| 金感知の巻物gold detection | その階にある金貨の位置が分かる巻物。金が無ければ何も見えない。 |
| 食料感知の巻物food detection | その階にある食べ物の位置が分かる巻物。食料が心細いときに。 |
| 識別の巻物identify | 持ち物を識別して強化値や呪いを明らかにする巻物。運が良ければ複数まとめて分かる。 |
| 地図の巻物magic mapping | その階の地図が分かる巻物。階段の位置もすぐに分かり、探索の手間が省ける。 |
| 忘却の巻物amnesia | 今見えていない場所の地図を忘れてしまう巻物。読んでも得はない。 |
| 炎の巻物fire | 読むと火柱が上がり、周りと自分が炎に包まれる巻物。混乱して読むと手をやけどするだけで済む。 |
| 罰の巻物punishment | 罰として足に鉄球と鎖がつながれる巻物。動きが大きく制限されるので読まないこと。 |
杖は方向を選んで振って使う。魔法の矢・炎・冷気・眠り・死の光線は壁で跳ね返るので、自分に戻ってこない向きで振ること。使える回数には限りがあり、使い切ると何も起こらなくなる。現代アレンジ(2020年代)では名前が最初から分かる。
| 光の杖light | 振ると周りを明るく照らす杖。暗い部屋で周りを見渡したいときに役に立つ。光の巻物と同じ働き。 |
| 隠し扉発見の杖secret door detection | 振ると近くの隠し扉や隠し通路が見つかる杖。行き止まりで困ったときに。 |
| 怪物召喚の杖create monster | 振ると怪物が現れる杖。敵が増えるだけなので使い道は少ない。経験稼ぎにはなるが危険も大きい。 |
| 願いの杖wishing | 振ると願いがかない、好きな物を一つ手に入れられる杖。何を願うかよく考えて使いたい。 |
| 打撃の杖striking | 向けた相手に見えない力をぶつけてダメージを与える杖。手軽な攻撃手段。 |
| 減速の杖slow monster | 当てた怪物の動きを遅くする杖。素早い強敵に使うと戦いやすくなる。 |
| 加速の杖speed monster | 当てた怪物の動きを速くする杖。敵に使うと危ない。ペットに使えば頼もしい。 |
| 死者退散の杖undead turning | 死者を退ける杖。ゾンビやレイス、吸血鬼などのアンデッドに効く。 |
| 変化の杖polymorph | 当てた怪物を別の怪物に変える杖。弱くなるとは限らないので、賭けになる。 |
| 無効化の杖cancellation | 当てた怪物の特殊な力を消す杖。盗みやレベル吸収など、厄介な能力を持つ敵に有効。 |
| 瞬間移動の杖teleportation | 当てた怪物を同じ階のどこかへ飛ばす杖。手に負えない相手を遠ざけられる。 |
| 透明化の杖make invisible | 当てた怪物を透明にする杖。見えない敵が増えるだけなので、敵に使うのは逆効果。 |
| 穴掘りの杖digging | 向けた方向の壁や岩に穴を掘る杖。下に向ければ床に穴をあけて下の階へ降りられる。 |
| 魔法の矢の杖magic missile | 魔法の矢を放つ杖。光線は壁で跳ね返るので、自分に当たらない向きで振ること。 |
| 炎の杖fire | 炎の光線を放つ杖。威力が高い。光線は壁で跳ね返るので、自分に当たらない向きで振ること。 |
| 眠りの杖sleep | 怪物を眠らせる光線を放つ杖。眠った敵は好きに攻撃できる。跳ね返りで自分が眠らないよう注意。 |
| 冷気の杖cold | 冷気の光線を放つ杖。威力が高い。光線は壁で跳ね返るので、自分に当たらない向きで振ること。 |
| 死の杖death | 当たった怪物を即死させる光線の杖。最後の切り札。跳ね返って自分に当たると命取り。 |
指輪ははめて使い、左右の手に一つずつ着けられる。はめている間は効果が続くが、そのぶんお腹が減りやすくなる。両手がふさがっているときは、呪われていない方を外してはめ替える。呪われた指輪は外せないので解呪の巻物で呪いを解く。
| 装飾の指輪adornment | 飾りの指輪。はめても特別な効果はない。お腹が減りやすくなるだけなので外しておく。 |
| 瞬間移動の指輪teleportation | はめているとときどき勝手に瞬間移動する指輪。瞬間移動制御の指輪と組み合わせると便利。 |
| 再生の指輪regeneration | 傷の回復が速くなる指輪。戦いが続く深い階で頼りになるが、そのぶんお腹が減りやすい。 |
| 探索の指輪searching | はめている間、隠し扉や罠を自動で探してくれる指輪。探索がぐっと楽になる。 |
| 透明視の指輪see invisible | 透明な怪物が見えるようになる指輪。ストーカーなど姿の見えない敵と戦うときに。 |
| 忍び足の指輪stealth | 足音を消し、眠っている怪物を起こしにくくする指輪。強敵の横をそっと通り抜けられる。 |
| 浮遊の指輪levitation | 宙に浮く指輪。浮いている間は物を拾えず、階段も下りられない。外せば元に戻る。 |
| 耐毒の指輪poison resistance | 毒を防ぐ指輪。毒針や吹き矢、病気の薬、毒のある死体が怖くなくなる。深い階では特に頼りになる。 |
| 怪物刺激の指輪aggravate monster | 周りの怪物を引き寄せ、怒らせてしまう指輪。はめて得はないので外しておく。 |
| 空腹の指輪hunger | はめているとお腹が非常に減りやすくなる指輪。はめて得はないので外しておく。 |
| 耐火の指輪fire resistance | 炎への耐性がつく指輪。ドラゴンの炎や炎の光線、炎の巻物のダメージを防げる。 |
| 耐寒の指輪cold resistance | 冷気への耐性がつく指輪。凍てつく球の爆発や冷気の光線のダメージを防げる。 |
| 変身防止の指輪anti-shapechanger | カメレオンなど、姿を変える怪物の変身を止める指輪。強い姿に化けられる心配がなくなる。 |
| 争いの指輪conflict | 周りの怪物どうしを争わせる指輪。囲まれたときにはめると敵が同士討ちを始める。 |
| 力増強の指輪gain strength | 力が上がる指輪。強化値の分だけ効き、マイナスなら逆に下がる。 |
| 攻撃力増加の指輪increase damage | 攻撃のダメージが増える指輪。強化値の分だけ効き、マイナスなら逆に減る。 |
| 守りの指輪protection | 防御が上がる指輪。強化値の分だけ効き、マイナスなら逆に下がる。 |
| 警告の指輪warning | 近くにいる怪物の気配と危険度を知らせる指輪。不意打ちを防げる。 |
| 瞬間移動制御の指輪teleport control | 瞬間移動するときに行き先を選べるようになる指輪。瞬間移動の指輪や巻物と組み合わせて使う。 |
道具は使って効果を出す。笛・魔法の笛・カメラ・つるはし・アイスボックス・缶切りなど、それぞれ使い道が異なる。つるはしは壁を掘れる頼れる道具だが、店には持ち込めない。
| 笛whistle | 吹くとかん高い音が響き、周りの怪物が目を覚ます。使い道は少ない。魔法の笛と取り違えないこと。 |
| 魔法の笛magic whistle | 吹くと不思議な音が響き、ペットがすぐそばに呼び寄せられる。はぐれた犬を連れ戻したいときに便利。 |
| 高いカメラexpensive camera | フラッシュで怪物の目をくらませるカメラ。向けた方向の相手に使い、目がくらんだ隙に逃げたり攻めたりできる。 |
| アイスボックスice box | 中に入れた死体が腐らない冷蔵箱。食べたい死体や効果のある死体を取っておきたいときに使う。 |
| つるはしpick-axe | 壁や岩を掘り進み、床に穴をあけて下の階へ降りることもできる。店には持ち込めないので外に置いていく。 |
| 缶切りcan opener | 缶詰を開けるための道具。この版では缶詰は食べるときに開けるので、使う場面はほとんどない。 |
宝石とガラス玉。地上へ持ち帰れば宝石の価値が得点になる。投げて武器代わりにすることもできる。現代アレンジ(2020年代)では名前が最初から分かるので、本物の宝石と価値のないガラス玉を見分けられる。
| ダイヤモンドdiamond | 最も価値の高い宝石。地上へ持ち帰れば価値に応じて得点になる。現代アレンジ(2020年代)では名前が分かるのでガラス玉と迷わない。 |
| ルビーruby | 価値の高い赤い宝石。地上へ持ち帰れば価値に応じて得点になる。現代アレンジ(2020年代)では名前が分かるのでガラス玉と迷わない。 |
| サファイアsapphire | 価値の高い青い宝石。地上へ持ち帰れば価値に応じて得点になる。現代アレンジ(2020年代)では名前が分かるのでガラス玉と迷わない。 |
| エメラルドemerald | 価値の高い緑の宝石。地上へ持ち帰れば価値に応じて得点になる。現代アレンジ(2020年代)では名前が分かるのでガラス玉と迷わない。 |
| トルコ石turquoise | 緑色の宝石。地上へ持ち帰れば価値に応じて得点になる。現代アレンジ(2020年代)では名前が分かるのでガラス玉と迷わない。 |
| アクアマリンaquamarine | 青い宝石。地上へ持ち帰れば価値に応じて得点になる。現代アレンジ(2020年代)では名前が分かるのでガラス玉と迷わない。 |
| トルマリンtourmaline | 緑色の宝石。地上へ持ち帰れば価値に応じて得点になる。現代アレンジ(2020年代)では名前が分かるのでガラス玉と迷わない。 |
| トパーズtopaz | 黄色い宝石。地上へ持ち帰れば価値に応じて得点になる。現代アレンジ(2020年代)では名前が分かるのでガラス玉と迷わない。 |
| オパールopal | 黄色い宝石。地上へ持ち帰れば価値に応じて得点になる。現代アレンジ(2020年代)では名前が分かるのでガラス玉と迷わない。 |
| ガーネットgarnet | 黒っぽい宝石。地上へ持ち帰れば価値に応じて得点になる。現代アレンジ(2020年代)では名前が分かるのでガラス玉と迷わない。 |
| アメジストamethyst | 紫の宝石。地上へ持ち帰れば価値に応じて得点になる。現代アレンジ(2020年代)では名前が分かるのでガラス玉と迷わない。 |
| 瑪瑙agate | 緑色の宝石。地上へ持ち帰れば価値に応じて得点になる。現代アレンジ(2020年代)では名前が分かるのでガラス玉と迷わない。 |
| オニキスonyx | 白い宝石。地上へ持ち帰れば価値に応じて得点になる。現代アレンジ(2020年代)では名前が分かるのでガラス玉と迷わない。 |
| 碧玉jasper | 黄褐色の宝石。地上へ持ち帰れば価値に応じて得点になる。現代アレンジ(2020年代)では名前が分かるのでガラス玉と迷わない。 |
| 翡翠jade | 緑色の宝石。地上へ持ち帰れば価値に応じて得点になる。現代アレンジ(2020年代)では名前が分かるのでガラス玉と迷わない。 |
| 青いガラス玉worthless piece of blue glass | 青い価値のないガラス玉。地上へ持ち帰っても得点にならない。現代アレンジ(2020年代)では名前が分かるので宝石と見分けられる。 |
| 赤いガラス玉worthless piece of red glass | 赤い価値のないガラス玉。地上へ持ち帰っても得点にならない。現代アレンジ(2020年代)では名前が分かるので宝石と見分けられる。 |
| 黄色いガラス玉worthless piece of yellow glass | 黄色い価値のないガラス玉。地上へ持ち帰っても得点にならない。現代アレンジ(2020年代)では名前が分かるので宝石と見分けられる。 |
| 緑のガラス玉worthless piece of green glass | 緑の価値のないガラス玉。地上へ持ち帰っても得点にならない。現代アレンジ(2020年代)では名前が分かるので宝石と見分けられる。 |
食べ物は食べて空腹を満たす。腹が減りすぎると弱り、やがて倒れる。食べ物は時々腐っていることがあり、古い死体や毒のある死体も危険。一方で特殊な性質が身につく死体もある。満腹で食べすぎると喉に詰まる。
| 食料food ration | 栄養たっぷりの携帯食。一つで長く持つ。ただし満腹で食べると喉に詰まって死ぬこともあるので注意。 |
| 臓物tripe ration | 犬の餌。人が食べると吐くことがあるが、吐けば食中毒が治る。ペットに与えるのにも向く。 |
| パンケーキpancake | ふつうの食べ物。手軽に空腹を満たせる。古くなっていると腐っていることもある。 |
| おみくじクッキーfortune cookie | 割ると中から紙切れが出てきて、迷宮のうわさや助言が読める。腐ることがないので安心して食べられる。 |
| ニンジンcarrot | ふつうの食べ物。手軽に空腹を満たせる。古くなっていると腐っていることもある。 |
| 缶詰tin | 中身の分からない缶詰。食べるときに開ける。ふつうの食べ物と同じく空腹を満たせる。 |
| オレンジorange | 果物のオレンジ。栄養は少なめだが軽く、持ち歩きやすい。ちょっとした空腹しのぎに。 |
| リンゴapple | 果物のリンゴ。栄養は少なめだが軽く、持ち歩きやすい。ちょっとした空腹しのぎに。 |
| 洋ナシpear | 果物の洋ナシ。栄養は少なめだが軽く、持ち歩きやすい。ちょっとした空腹しのぎに。 |
| メロンmelon | 果物のメロン。栄養は少なめだが軽く、持ち歩きやすい。ちょっとした空腹しのぎに。 |
| バナナbanana | 果物のバナナ。栄養は少なめだが軽く、持ち歩きやすい。ちょっとした空腹しのぎに。 |
| キャンディーcandy bar | 甘いお菓子。軽くて手早く空腹を満たせる。非常食として一つ持っておくと安心。 |
| 卵egg | ふつうの食べ物。手軽に空腹を満たせる。古くなっていると腐っていることもある。 |
| ニンニクclove of garlic | ふつうの食べ物。手軽に空腹を満たせる。古くなっていると腐っていることもある。 |
| ローヤルゼリーlump of royal jelly | 殺人バチの巣にある滋養の塊。食べると力が上がって体力も回復し、足の傷も治る。見つけたらぜひ食べたい。 |
魔除けはイェンダーの魔除けだけ。迷宮の最下層の迷路で魔法使いが守っており、これを持って地上へ脱出するのが冒険の目的。安物の偽物もあるので注意。
| イェンダーの魔除けamulet of Yendor | 迷宮の最下層で魔法使いが守る伝説の魔除け。持って地上まで戻れば勝利となる。安物の偽物も存在する。 |
| 大岩enormous rock | 通路をふさぐ大きな岩。歩いて押すと動かせるが、先がふさがっていると動かない。 |
| 鉄の鎖iron chain | 鉄球と足をつなぐ鎖。罰の巻物を読むと鉄球とともに足につながれる。 |
| 重い鉄球heavy iron ball | 罰の巻物で足に鎖でつながれる重い鉄球。引きずって歩くことになり、階段の上り下りも大変になる。 |
ローグから ハック、ネットハックへ。この 移植の 位置づけ。
HACK 8BIT EDITION のもとになった Hack 1.0.3 は、40 年以上続くゲームの系譜のまん中に位置する作品である。本書では、その前後の流れを順にたどる。年や人名は広く知られている範囲にとどめ、細部が定かでないものは大まかに書く。
1980 年ごろ、カリフォルニア大学サンタクルーズ校の学生だったマイケル・トイ(Michael Toy)とグレン・ウィックマン(Glenn Wichman)が「Rogue(ローグ)」を作った。のちにケン・アーノルド(Ken Arnold)が開発に加わり、ゲームは Unix の端末で遊ばれるようになる。
ローグの特徴は次のとおりである。
ローグは BSD Unix の配布物に含まれたことで、大学や研究所の計算機を通じて広く遊ばれた。
1982 年、アメリカ・マサチューセッツ州の高校生だったジェイ・フェンラソン(Jay Fenlason)が、仲間のケニー・ウッドランド(Kenny Woodland)、マイク・トーム(Mike Thome)、ジョナサン・ペイン(Jonathan Payne)とともに「Hack(ハック)」を作った。ローグの遊びを土台に、敵や道具の種類を大きく増やした作品である。
オランダ・アムステルダムの数学・情報科学の研究所 CWI(Centrum Wiskunde & Informatica)にいたアンドリス・ブラウワー(Andries Brouwer)が、ハックに大きく手を入れ、1984 年に Hack 1.0 として公開した。ソースは当時のネットニュース(Usenet)を通じて配られ、改良版が続いた。
1985 年の版が Hack 1.0.3 であり、HACK 8BIT EDITION はこの版を移植している。
Hack 1.0.3 は、のちの NetHack に受け継がれる要素を多く備えている。
ソースには「Copyright (c) 1985, Stichting Centrum voor Wiskunde en Informatica, Amsterdam」と記されている。著作権表示を残すことを条件に、再配布と改変が認められている(BSD 型のライセンス)。この移植が成り立つのも、このライセンスのおかげである。
1987 年、マイク・スティーブンソン(Mike Stephenson)らが、Hack 1.0.3 とその改造版の成果をまとめて「NetHack(ネットハック)」を公開した。名前の「Net」は、開発者たちがネットを通じてつながり、共同で作ったことに由来する。
NetHack はその後も開発チームによって改良が重ねられ、敵、道具、職業、特別な階などが大きく増えた。現在も更新が続いており、きわめて長く開発が続くゲームの一つである。
ローグの影響を受けたのは、ハックの系統だけではない。
こうした作品群は、のちに「roguelike(ローグライク)」と呼ばれるようになった。自動で作られる迷宮、ターン制、やり直しのきかない死、という特徴を共有するゲームの呼び名である。日本でも 1990 年代に家庭用ゲーム機向けの作品で広く知られるようになり、今では多くのジャンルにその影響が見られる。
Rogue(1980 年ごろ)
├─ Hack(1982)
│ └─ Hack 1.0 〜 1.0.3(1984〜1985、CWI)
│ ├─ NetHack(1987〜 現在)
│ └─ HACK 8BIT EDITION(2026、125 Inc.) ← この移植
└─ Moria(1980 年代前半)
└─ Angband(1990 年ごろ)とその子孫HACK 8BIT EDITION は、NetHack ではなく Hack 1.0.3 をもとにしている。原典の C ソースを仕様書として読み、乱数、迷宮の作り方、戦闘、店、罠などのルールを 6502 のアセンブリで書き直した。そのため、出てくる敵や道具、計算は 1985 年の Hack とほぼ同じである。
一方で、8bit コンソールで遊ぶための変更(絵と音、ボタンとメニュー、日本語と英語、自動セーブ)と、遊びやすさのための「現代アレンジ(2020年代)」を加えている。どこを変えたかは「ゲーム仕様」のページにまとめた。
NetHack が 40 年近くかけて大きく育ったのに対し、Hack 1.0.3 はその手前の、まだ小さくまとまった姿を残している。ローグからネットハックへと続く流れの中間にあたるこの版を、いまの画面と操作で遊べる形にすること。それがこの移植のねらいである。
| 役割 | 名前 |
|---|---|
| 原作 HACK 1.0.3 | Jay Fenlason、Kenny Woodland、Mike Thome、Jonathan Payne、Andries Brouwer |
| 原作のソース | Copyright (c) 1985, Stichting Centrum voor Wiskunde en Informatica, Amsterdam |
| 移植 | 125 Inc.(SUZUKI08 + AI) |
| フォント | k8x12・美咲フォント(Num Kadoma) |
遊びながら 出た 要望・ページの「レポート」・チャットの 指示を、1 件ずつ 直して 版を 上げて きた 記録。日ごとに 開いて 読める(新しい 日が 上)。
確かめ #0 の ○△×(題の 名前・職業選びの 階段・ダンジョンの 種類を 縦に・持ち物の 長押し・方向の 案内の 崩れ・ニンフ・階段の 表・シードの ページ ほか)と 要素の 短い 動画
3.99(題の 窓:窓の 間は ロゴを 消して 上へ 3 行 伸ばし 見出しに 名前〈真ん中〉+区切り線、項目「名前を変える」〈titlefar.s・name.s nm_title_c〉/職業選びの 階段の 絵から 床の 縁〈gfx.py _stair_icon〉/ダンジョンの 種類は 縦の サブ窓で ▲▼ と Ⓐ決定 Ⓑ戻る〈seedsel.s sd_pick〉/持ち物の 案内「Ⓐ長押し」を 2 マスの 絵+詳細〈loc.py ・〉/方向の 問いの 後に 右上の 案内の 上の 段が 崩れた → 広げた 列を 空に〈fastui.s 状態 5〉、持ち物から 戻ると 答える 前の 問いが 小さい 行に 出た → ms_redo で 前の 文を 写す/盗んで 逃げる 敵は 上へ 4 マス ふわっと 上がって 点滅して 消え「〜は姿を消した。」〈dirq.s mh_rise〉/階を 移る 黒い 画面の 階段と 波紋を 薄く〈lvcard.s lv_faint〉/START メニューの「ダンジョン」〈シードの ページ〉を 外した/持ち物の 並べかえを バンク 13 → 32〈invsort.s〉。確かめの ページを 修正 #1 に:動画 7 本〈VID=1 node tools/special_shots.js v_*〉・答えの 欄)
確かめ #1:結果画面は 少し 左へ・Ⓐ決定 で タイトルへ/QR/名前を変える の サブ窓(親は 灰・Ⓑ戻る)・流れを 全部 動画で/階段の デザイン 見直し/ニンフは 上がる 間 点滅・壁の 上を 通って UI に 隠れる/コカトリス:固まる 時の 色分け/鉄球の 長い 動画/ページは 答えが ほしい もの を 上に 大きく
4.00(結果画面:座布団を 4 列 左へ〈rp.s rp_c0t〉・右下は Ⓐ決定 だけ・Ⓐ で 右に サブ窓「メニュー/タイトルへ・QR・名前を変える/Ⓑ戻る Ⓐ決定」・その 間は 座布団の 属性を パレット 3(灰)・Ⓑ で はみ出た 所を フィールドに 戻し 座布団を 素早く 描き直す〈rsmenu.s・mon2.s rs_body・rp.s rp_box/rp_atts/RP_FST〉。名前入力の 親の 灰は 行 7 から。階を 移る 画面の 階段:目地を やめ 段の 上に 明かり・段の 境に 影・裏は 斜め〈lvanim.s la_stone〉。盗んで 逃げる 敵:上がる 間 ずっと 点滅・UI に かかると 隠す〈dirq.s mh_rise〉。石に なりかけ は 主人公を 暗い 灰($2D・$10)、治ったら 職業の 色〈dirq.s st_pal・mhitu2.s stone_tick〉。動画:v_dead(結果の 流れ 44 秒)・v_nymph(壁の 下から)・v_cock・v_ball(30 秒)。確かめの ページ 修正 #2:答えが ほしい もの/決まった もの に 分けた)
確かめ #2:題の 窓を もう 16 ドット 上へ/ダンジョンの 種類に 開発迷宮(オート)・案内は 一覧の すぐ 下/長押しの 絵は 横長の 真ん中に Ⓐ/犬は もっと 寄る・拾う 回数を 減らす/結果の サブ窓は 探求結果QR・案内を 詰める/QR の くわしくは 1 行目を 真ん中+区切り線/階段の 厚みを 薄く/ロングワーム・盗む 敵・罰の 巻物を 開発迷宮に
4.01(題の 窓:上の 枠 行 5・見出し 6-7・区切り線 8・項目 11〈titlefar.s・name.s〉/種類 5 = 開発迷宮(オート)〈今は 開発迷宮と 同じ・SD_AUTO = 1:seedsel.s〉、サブ窓の 高さは 項目の 数で・案内は すぐ 下/・ を 横長の 角丸の 真ん中に Ⓐ〈loc.py〉/犬:部屋でも 3/4 で 寄る〈原典 1/4〉・拾うのは 1/4 に〈dog.s〉/結果の サブ窓:探求結果QR・案内は 項目の すぐ 下〈rp.s RP_LFT = 2 右詰め・rsmenu.s〉/QR の くわしく:2 行目を やめ 1 行目を 真ん中・下に 区切り線〈rank.s rk_det〉/階段:段の 中の 石を やめ 段の すぐ 下が 斜め〈lvanim.s〉/開発迷宮 B4 ロングワーム・B5 盗む 敵と 罰の 巻物の 部屋〈ddmap.py〉。確かめの ページ 修正 #3)
12 階の 岩の くだりは 避けたい/1 階に 残った 子犬が 微妙:ペットは 毎回 いっしょに 下りて いっしょに 戻る/帰り道の 敵の 湧きを 1/70 から 少し 上げて(戻りが 作業に なる)
3.91(開発迷宮では 犬が どこに いても 階段で ついて くる〈follow.s dg_follow。本編は 原典どおり 隣 だけ〉。本物の 魔除けを 持った 帰り道は 敵が 1/35 で 湧く〈原典 1/70:follow.s et_rnd ← mon2.s et_post。全部の ダンジョン〉。tools/rec_dd.js:大岩は 向こうが 空いて いる 時 だけ 押し、押せなかった 岩は 覚えて 通らない。魔法使いを 追う 時は 岩を 押さない 道を 先に、行ったり来たりも 止まった ことに〈前は B5 で 5 分 足踏み〉)
(続き)録り直し
直し なし〈ゲーム〉。tools/rec_dd.js:犬も 体力 80〈2 割 未満で 全快の 補助〉で 始める〈前は 体力 2 で B9 の 図鑑で 倒れた〉。B12 は 岩を 押さずに 魔法使いを 倒し、犬は 12 階から 地上まで いっしょ。補助:空腹 3・全快 7・瞬間移動 2・レベル 戻し 5。録画 16.6 分〈build/20261105 HACK 開発迷宮 自動踏破.mp4〉、X 用 2:18〈約 7.8 倍速・最後の 脱出と 結果は 2 倍速で 音あり〉
犬が 野生化した 時は ペットの 見た目で 赤に、名前は「野生化した ハチ」/犬の 色を 選ぶ 時に 赤は 選べない
3.92(置いて きて 250 手 より 長く 離れた 犬は、戻ると 枠 0 の まま なついて いない 敵に:絵は ペットの 犬で 赤〈敵の パレット 2:sprite.s〉、名前は「野生化した{犬の 名前}」〈英語 feral {name}:text.s ml_name・loc m_dog_wild〉。前は ふつうの 子犬の 敵だった〈lvsave2.s lv2_dog〉。なついた 犬 だけ:入れかわる〈main.s:野生化した 犬は 打つ〉・階段や 落とし戸で ついて くる〈follow.s dg_follow。trap.s の dog_adjacent は 外した〉・同じ 階の 瞬間移動・置いて きた 犬として 覚える・状態行の 犬の 傷。犬の 色は 白・茶・青・黄〈赤を 飛ばす:petsel.s。前の 版で 赤を 選んで いたら 白〉。試し:WILDT=1 node tools/rec_dd.js)
野生化した 犬が 餌で また なつく ところを 動画で:名前は ハチ・元の 色は 茶
3.93(茶の 犬が 階を 移る 黒い 画面の 階段では 白に 出て いた:演出の 間は VBUF の x 側 だけ 送るので、毎 フレーム パレット 1 の 色 2・3 を 柴の 色に〈lvanim.s la_dogpal〉。tools/rec_dd.js FERAL=1:迷宮 #1・お供の 窓で 名前 ハチ・色 茶 → B1 に ハチを 置いて 下り、B2 で 283 手 待って 戻ると 赤い「野生化したハチ」→ 臓物を 投げる〈START → 持ち物 → Ⓐ 長押し → 投げる → 向き〉→「野生化したハチに当たらなかった。ハチは臓物をがつがつ食べた。」で 茶の ハチに 戻って ついて くる。録画 1:11〈build/20261105 HACK 野生化したハチ.mp4、B2 で 待つ 所は 8 倍速〉)
弓矢や 光線の 方向を 聞く 窓は うざいので 特例で 下の UI で:「*投げる方向 Ⓑ戻る」
3.94(方向は サブの 窓を 出さず 下の 窓の 文で 聞く:✚投げる方向 Ⓑ戻る/✚振る方向〈杖〉/✚写す方向〈カメラ〉/✚掘る方向〈つるはし〉、英語 ✚Throw ⒷBack など〈zap.s getdir:A = 種類、loc m_dir_q0〜3〉。✚ は 十字ボタンの 新しい 字形〈tools/loc.py〉。Ⓐ 足元・SELECT 上 は 案内 なしで 今までどおり。待つ 間も 地図と 下の 窓を 描く〈dir_frame〉)
案内は Ⓐ探す の 位置に/「〜を放つ方向は?」を 文で 出して、ログでは「〜を放つ方向は?(左)」に/SELECT で 足元も
3.95(方向を 聞く 間:下の 窓の 右上〈Ⓐ探す の 所〉を 幅広に して「✚方向 SE足元 Ⓑ戻る」〈英語 ✚Aim SESelf ⒷBack:fastui.s ms_hid 8・ms_hw 14/17 列・ms_hatt・幅が 変わる 時に 名前表も ms_hcol〉。文は「矢(20)を放つ方向は?」〈投げる・振る・カメラを向ける・掘る、合う 弓などで 矢を 射る 時は 放つ〉、答えると 同じ 行に「(右)」〈やめた 時は(やめた)〉を 足して 書き直し、ログにも その 形で 1 行〈聞いた 時は 積まない〉。SELECT が 足元〈Ⓐ は 使わない・上は なし〉。新しい バンク 32 に 置いた〈dirq.s・F32:ROM の 整理の 始め〉)
(20)は 本数? 不要
3.96(方向の 問いの 物の 名前は 本数を 出さない:「矢を放つ方向は?(右)」〈dirq.s:on_q = 1〉)
SE じゃなく Ⓐ が 足元では? Ⓐ と ぶつかる?
3.97(方向を 聞く 間の 足元は Ⓐ に〈zap.s getdir:SELECT から 変更〉。案内は「✚方向 Ⓐ足元 Ⓑ戻る」〈英語 ✚Aim ⒶSelf ⒷBack、幅 13/16 列〉。Ⓐ で 物を 選んだ 押しは 聞く 前に 全部 離すまで 待つので ぶつからない)
案内は 物理ボタンの 順(左 Ⓑ・右 Ⓐ)に:方向 Ⓑ戻る Ⓐ足元
3.98(方向を 聞く 間の 案内を「✚方向 Ⓑ戻る Ⓐ足元」に 並べかえ〈英語 ✚Aim ⒷBack ⒶSelf:loc ui_hint_dir〉。ボタンの 左右の 位置と 合わせて 迷わない ように)
動画は 見るのが 大変:画面と 要素を ずらっと 並べて ○× と コメントを 返せる 公開ページを(base-08 の ハックの 下に dev.html)
確かめの ページ https://base-08.web.app/app_nes_hack/dev.html〈tools/review.py:43 項目・写真 は special_shots と rec_dd の 撮影を 256×240 に。○△× と ひとことは 見る 人の ブラウザに 残り「まとめて コピー」で チャットへ。項目の rev を 上げると「直した → もう一度」。--put で 部屋へ 写して 出す(版は 上げない)。noindex〉
動物園は 専用の 階で いいのでは? B10 で なくても いい。バラして いい感じに 見れるように
3.85(開発迷宮の 巣を 1 階 1 つに:B6 動物園・B7 蜂の巣・B8 墓場〈明るく〉。巣の 階は 上り・巣・下りの 3 部屋で 店なし〈1 階 23 体の 上限を 巣 だけに〉。図鑑は B9〜B11〈店:巻物・防具・食料品〉、魔除けの 迷路は B12。階の 数は ddmap.py の 地図の 数〈DD_NF〉で 決まる。設計書に 11 章〈改訂〉)
部屋の 案内は 入って 最初に 出す。お店 以外。括弧は いらない、ふつうに 表示
3.86(案内を 呼ぶ 所を 店の 手番〈敵が 動いた 後〉から 敵が 動く 前〈pulse.s sn_new の 初め〉へ:入った 手の 文の 先頭に 積まれる。文は【】を やめて ふつうの 文に〈例:武器庫だ。武器が全種類ならんでいる。/動物園だ!眠った敵と金貨がぎっしり。〉、英語も 同じ。開発迷宮の 店でも 出さない〈ddmap.py:店の 部屋は 0〉)
動物園の 群れは 原作どおり 起きた まま/巣の 部屋は 縦長に して ちらつきを 減らす(本編の 生成にも 使えるか は 後で)
3.87(開発迷宮 B6〜B8 の 巣を 3×8 の 縦長に:横 1 列に 出せる 絵は 8 枚=敵 4 体 まで、横 3 体 なら 主人公が 並んでも 収まる。扉の 側の 1 行は 原典どおり 空くので 21 マス。群れの 仲間は 原典どおり 起きた まま)
仕様が 固まったら 飛ばし なしで 全部 踏破する オートパイロットと その 動画(敵に 対処して 負けない 初期値、回復も 自分で。シード 固定)
直し なし〈ゲーム〉。tools/rec_dd.js:題 → 探索開始 → 開発迷宮 → B1〜B11 の 部屋を 全部 回って〈扉の 内側。店・沼・図鑑は 扉の 上から〉下り、B12 で 魔法使いを 起こして 戦い、魔除けを 持って 消えた 魔法使いを 戻り道で 追って 倒し 取り返し、B1 から 地上へ 脱出。初期値:Lv14・体力 200・力 18/100・毒/炎/冷気に 強い・再生。巣は 扉の 外の 廊下で 1 体ずつ。休む・階段の 上では Ⓐ を 押さない。補助:空腹 3・石化 0・全快 1・レベル 戻し 5・瞬間移動 1〈B12 の 囲まれた 部屋〉。録画 19.2 分〈build/20261104 HACK 開発迷宮 自動踏破.mp4、4 倍速 も〉
1 階から 地上へ 上がる 時は 階段を 上る 演出、その 後に 結果画面/階段の ランキングは 1 位と 自分 だけ に して 窓を 狭く、階段を もう 少し 上に
3.88(地上へ 出る:「はい」の 後 黒い 画面で 階段を 上る 演出〈札は「地上」〉→ 画面を 作り直して 地図は 暗い まま〈上の UI と 窓 だけ〉→「地上へ出た! Ⓐ進む」→ 結果。階段の 表:窓を 行 4〜11 に 狭く して 1 位と 自分 だけ〈自分が 1 位なら 自分と 2 位〉、階段の 絵は 2 行 上へ)
結果画面が ほしい/拾う・装備・店で 買う の サンプルも/罠は 落とし穴 だけ はまる
直し なし〈ゲーム〉。tools/rec_dd.js:B1 で 武器を 拾って 持つ → 両手剣に 持ち替え、盾を 拾って 着ける、何でも屋で 指輪を 拾って Ⓐ で 払う〈900 ゴールド〉。B4 で 見えて いる 落とし穴に わざと 入って 這い出す。脱出は 階段を 上る 演出 → Ⓐ → 結果画面 まで。魔法使いに 届かない 時は 隣へ 瞬間移動〈補助〉。補助:空腹 3・全快 1・瞬間移動 2・レベル 戻し 5。録画 14.9 分〈build/20261104 HACK 開発迷宮 自動踏破 2.mp4、4 倍速 も〉
結果の 窓の 位置(出た 直後 右寄り → 真ん中)を 直して 撮って
3.89(窓の 位置は 初めから 真ん中だった〈並べた 画像の 見間違い〉。代わりに 見つけた ちらつきを 直す:地上へ 出た 時は 画面を 作り直しても 地図を 描かない〈fastui.s el_body:dlevel 0〉。結果の 窓を 1 行ずつ 塗る 間、下の 地図が 窓の 色〈赤〉で 2 フレーム ほど 見えて いた)
結果画面の 裏にも 階段の ときの ような 波紋を
3.90(地上へ 出た 後:画面を 作り直す 時 地図の 代わりに 波紋の 帯の タイルを 敷き〈fastui.s el_rip。カメラは 左上の 端に 止め、犬なども 消す〉、波紋の 色〈パレット 0 の 1 番〉だけ 点ける。「地上へ出た!」の 待ちから 結果の 窓まで 48 フレームごとに 波紋〈ripple.s rip_esc:mon2.s you_died・result.s rs_menu〉。主人公の 影は 出さない。結果の 窓の 字に 帯の タイル $80〜$95 を 貸さない〈mwin.s mw_prep〉)
全般的に 整理して 整合を 見て
3.69(ページ:下の 帯を やめて 押せなく なった 重さの メーター〈版の 字 5 回〉を DEV ▸ 開発の 道具 ▸ 重さの メーター に。使わなく なった 灯・丸の CSS と verEl を 消し、古い 注釈〈SOUND・斜め の 並び〉を 今に。資料:ランキング 仕様書〈デバッグの 中身・DEV の 決定〉・FC設計〈REV_USED → DB_REW〉・窓の 資料と 撮影 台本の「生き返り」を 今に。10/13〜10/17 の レポート 21 件は 短い id で 載って いた〈mv8uk5kc だけ 無く、上に 足した〉)
操作系の ひっかかり・音の 割り込みなど 綺麗に すべき 所
3.70。操作:①歩いて いる 間の Ⓐ・START・SELECT を 貯めて 止まったら 押した ことに〈階段の 手前の Ⓐ が 消えた。fastui.s run_tick・PAD_BUF $7EB2〉②2 連打で 走るの 前の 押しを 12 フレームで 忘れる〈8 ビットの 引き算が 256 フレームごとに 回り 勝手に 走った〉・間を 18 → 12 ③方向を 聞く 窓は 待つ 5 フレームの 押しを 貯める〈短い タップが 消えた:zap.s〉④ウェブ:別の 窓へ 移る・裏に なる・報告・DEV の 開け閉めで 全部 離す〈releaseAll。押した まま 歩き 続けた〉⑤ウェブ:押した 数を ボタンごとに 数え 全部 離れたら 離す〈素早い 2 回目が 途中で 離れた〉⑥名前で 空の Ⓑ は ブブッ〈連打で 窓が 閉じ 元の 名前に 戻った〉。音:①②効果音に 優先度と 1 つの 待ち〈鳴り 始めて 5 フレームまでと 低い 音は 待たせ、終わったら 鳴らす。自分の 攻撃音の 後に 敵の 音。sound.s sfx_dec〈バンク 12〉・sfx_start〉③同じ 音は 6 フレーム 未満なら 鳴らし直さない〈長押しの ブブブ〉④ウェブの ×2・×4 は 音を 積まず、速さを 変えたら 古い 音を 捨てる〈濁り・戻した 後の 0.3 秒の 止まり〉。止める 前に 黙らせる 順も 直した。確かめ:special_shots sfxq〈打つ → 敵の 音が 後に 続く〉
レーザー(杖の 光線)も 弓矢 みたいに いい 感じに。頭から 2/3 実線・後ろ 1/3 破線 くらい
3.71(炎・冷気・眠り・死・稲妻の 光線が 尾を 引く:頭 + 1 つ 前は 実線、2 つ 前は 破線〈8×16 の 右 半分を 消す。縦は 上下に 切れないので 1 フレームおき〉。横も 1 ライン 5 枚 まで。投げた 物・穴掘りは 尾 なし。zap.s ray_tr_on・ray_push・ray_trail〈バンク 12〉、尾の 位置は 内蔵 RAM $07E9〜$07EF〈前の BGM の 変数の 跡〉。確かめ:special_shots rayt)
光線は 2 つで いい。黒い 縁取りの せいで 安く 見える → 外す
3.72(光線は 頭 + 1 つ 前の 2 マス〈破線の 尾を やめた〉。光線の 絵 3 つ〈縦・横・斜め〉から 色 1〈黒い 縁〉を 外した:tools/gfx.py _no_rim)
レーザーの 角を なくして
3.73(横の 光線の 絵の 四隅を 削って 丸く:tools/gfx.py _no_corner。縦は もともと 端が 丸い・斜めは 隣と つながる 形)
全部 入りの 固定の ダンジョン(店・敵・罠・アイテム)を「デバッグ迷宮」で 選べたら。題は 日本では「探索開始」。部屋ごとに テーマ、入ったら 下の UI に。3 階は 例で もっと 深くて いい(テーマパーク)。まず 設計して 絵・写真 満載で 書類に
直し なし(docs/20261103 HACK デバッグ迷宮 設計書.md:10 階の テーマパーク・入り方・見取り図・テーマの 案内・上限・作り方・試験・段取り・決めて ほしい こと。絵は tools/dd_doc_img.py → docs/img/20261103_dd、写真は special_shots dd ほか)
シードの アイコンを 下り階段に して キャラクターと 横位置を 揃えて/シードを「ダンジョン」に:ランダム・固定:迷宮 #1〜#3・固定:デバッグ(資料も ROM も)
3.74(職業選びの 一番 上の 行を「ダンジョン」に。頭は 下り階段の スプライト〈職業の 絵と 同じ 列 3〜4・字は 職業名と 同じ 列 6:dd.s cl_stair・バンク 31〉。種類は ランダム/固定:迷宮#1〜#3/固定:デバッグ/〈ウェブ版〉今週。固定 #4・#5・入力は 選べない〈電池の 5・6 は ランダムに〉。固定:デバッグは 今は 前の 固定 #4 の 迷宮で、いつも デバッグの 記録〈DB_GODU bit2〉・結果は「▼デバッグ」。結果画面・ダンジョンの 画面の 頭の 絵も 種 → 下り階段。メニュー・見出し・窓の「シード」を「ダンジョン」に。ランキングの ページ:今週の ダンジョン・固定の 迷宮 #1〜#3。資料:ランキング 仕様書・デバッグ迷宮 設計書。名前を この 一覧へ 移すのは 次)
下り階段は 専用で 床の 模様の ない 絵に/シード番号の 入力は なしで OK/初めは ランダム、今 ある セーブの ダンジョンを はじめる で 出す
3.75(ダンジョンの 行の 下り階段を 専用の 絵に〈白い 段の 上・灰の 段 4 つ:tools/gfx.py STAIR_ICON〉。職業選びの 初めの ダンジョンは ランダム、セーブが あれば その 回の ダンジョン〈SD_GM は 電池 RAM:seedsel.s sd_row0〉。入力は V3.74 で 外して ある。確かめ:迷宮#3 で 始めて 電源を 入れ直し → はじめる で 固定:迷宮#3、セーブ なしは ランダム)
ダンジョンの 名前:ランダム・迷宮 #1・迷宮 #2・迷宮 #3・開発迷宮(英語 テスト迷宮)。ROM も 資料も
3.76(種類の 名前を 迷宮 #n・開発迷宮〈英語 Maze #n・Test:窓の 幅〉に。結果画面は「▼開発迷宮」。英語の 窓は 値の 列を 日本語と 同じに〈Maze #3・番号が 枠に かかって いた〉。ランキングの ページ:迷宮 #1〜#3・開発迷宮〈Test Maze〉。資料:ランキング 仕様書、設計書を「20261103 HACK 開発迷宮 設計書.md」に 改名して 中身も)
同じ 画面に 出るので(上の UI の 階の 印と)変えたい:降りる フロアの 意匠で 床の 模様の ない 絵/SEED の 表示も この さい なくして。シンプルに
3.77(ダンジョンの 行の 絵を 迷宮の 下り階段から 床の 点を 外した もの〈枠と 段:tools/gfx.py _stair_icon〉。番号〈種〉の 表示を やめた:ダンジョンの 窓の「番号」の 行・右の 説明の 番号・結果画面と ダンジョンの 画面は 種類の 名前〈▼迷宮 #3・▼開発迷宮・▼ランダム・▼今週〉・ランキングの ページの 週と 迷宮の 説明の 種)
base-08 に 開発の 履歴と 開発迷宮の 仕様を まとめて PC・スマホで 読める ウェブページに。敵・罠・防具の 図鑑も。長大な 解説で
直し なし〈ゲーム〉。開発ガイド https://base-08.web.app/app_nes_hack/guide.html(tools/guide.py → dist/guide.html、deploy.py が 毎回 作って 写す):概要〈版・日数・件数〉・開発の 記録〈log.md を 日ごとに〉・開発迷宮〈設計書〉・敵 65〈ゲームの 絵・数値・性質・説明〉・罠 7・物 148〈分類ごとの 総説と 説明:tools/guide_text.json〉
開発ガイド:タブを わかりやすく・英語版も・125 Inc. の ロゴ。今後は ここを 定期的に 更新
直し なし〈ゲーム〉。ガイドを タブ式に〈1 度に 1 つの 節・金色が 今の タブ・スマホは 横に 送れる〉、上の 帯を 画面の 幅 いっぱいに、ロゴを 帯と 下に。英語版 guide_en.html〈図鑑の 説明・開発の 記録 518 件・開発迷宮の 設計書を 英訳:tools/guide_text_en.json・guide_log_en_*.json・docs/20261103 HACK Test Maze design EN.md〉。日英は 右上で 切りかえ
ウェブページ(開発ガイド)は 英語の 時は スクショなども 英語に/ゲーム本体の ページと ランキングへの リンクは 外して
直し なし〈ゲーム〉。英語版の 開発迷宮の 写真を 英語の ゲーム画面で 撮り直し〈HACK_EN=1 special_shots → docs/img/20261103_dd_en〉、見取り図・凡例・全体図・案内の モックも 英語〈tools/dd_doc_img.py en〉。ガイドの「遊ぶ」「ランキング」の ボタンを 外した
125 Inc は マルシー なし/ウェブ向けに 読みやすい ドットの 字は?/タイトル画像は 実機の ロゴの スクショ/区切りに キャラの 絵/ページの 上に 最近 3 日の 更新と その 項目への リンク/8bit コンソールへの 開発記録の タブ(専門的な 文体)/「8bit コンソール」は 任天堂の 登録商標 なので 8bit コンソール と 言う
3.78。開発ガイド:字を ゲームと 同じ k8x12 に〈BDF → WOFF:tools/bdf2woff.py、24px=2 倍。細かい 字は ゴシック〉・題の 画面の ロゴを 実機の 写真から・節の 区切りに 主人公・犬・敵の 絵・概要に 最近 3 日〈各日 5 件と「ほか n 件」:押すと 開発の 記録の その 項目へ 飛んで 光る〉・新しい タブ「8bit コンソール開発」〈docs/20261103 HACK 8bit コンソール開発記録.md と 英語版〉・下の 表記は「125 Inc.」。「8bit コンソール」を 使わない:ガイドの 文〈日英〉・遊ぶ ページの 紹介文(OGP)・OGP の 絵・LICENSE-HACK.txt の 1 行目を「8bit コンソール」に
フォントは Noto?/α は リリース時の 言い方 なので 表記上は なし。タイトルからも 外して
3.79(題の 画面の「8BIT EDITION」を「8BIT EDITION」に〈loc t_edition1〉。遊ぶ ページの 題・OGP、ランキングの ページ、開発ガイド〈題の ロゴの 写真も 撮り直し〉から α を 外した。ランキングの ページの「8bit コンソール」も 8bit コンソールに。ガイドの 細かい 字は BIZ UDP ゴシック〈Noto では ない〉、見出し・本文は k8x12)
ウェブページの フォントは 全部 BIZ なんとかに。可読性が 最優先
直し なし〈ゲーム〉。開発ガイドの 字を 全部 BIZ UDP ゴシックに〈見出し・タブ・本文。k8x12・DotGothic16 は 外した〉。大きさも ふつうに〈本文 16px・見出し 24/19px〉
「現代アレンジ(2020年代)」と 言わず ゲームでは「現代アレンジ」、ウェブでは「現代アレンジ(2020年代)」(ログ・ページ・今後の 書類も)/ページを 足す:遊び方・ゲーム仕様〈原典の 仕様と 現代アレンジ〉・Hack の 歴史〈ローグ・ハック・ネットハックの 関係〉/ゲームの 案内は Coming soon で リンクを におわせる/全体を 整理
3.80(ゲームの 解説:目次と 2 ページを「現代アレンジ」に、もう 無い「死ぬと 1 回 立ち上がる」の 行を 外した〈loc/kaisetsu*.txt・tools/loc.py〉。開発ガイド:タブを 遊ぶ 人の 順に〈概要・遊び方・ゲーム仕様・敵・罠・物・Hack の 歴史・開発の 記録・8bit コンソール開発・開発迷宮〉、新しい 3 ページ〈docs/20261103 HACK 遊び方・ゲーム仕様・の歴史 と 英語版〉、概要に「遊べる 場所:ウェブ版・itch.io・ランキング=Coming soon」。ガイドと 資料の「現代アレンジ(2020年代)」は 現代アレンジ(2020年代)に〈英語 Modern Arrange (2020s)〉)
解説の 魔除けの 深さを コードに 合わせて 直して/base-08 は 入口 index.html で 今回の 解説ページ、ゲームは hack.html で 開く 形に(本番は itch.io などの 公開 URL、base-08 は 解説と テスト用)
3.81(ゲームの 解説「現代アレンジ 1/2」の 魔除けを「30階以降の 迷路 → 18階以降の 迷路」に〈loc/kaisetsu*.txt〉。base-08:入口 /app_nes_hack/ は 開発ガイド〈index.html、前の guide.html も 残す〉、ゲームは /app_nes_hack/hack.html〈tools/deploy.py:版の 照合・og:url も hack.html〉。ランキングの「遊ぶ」リンクを hack.html に、© を 外した〈web/rank_src.html〉。ガイドの 英語版の「日本語」は 入口へ、ガイドに OGP〈tools/guide.py〉)
入口に 入った 時、ブラウザが 日本語なら 日本語、それ 以外は 英語で 出して
直し なし〈ゲーム〉。開発ガイドの 入口〈日本語〉は ブラウザの 言葉が 日本語 以外なら 英語版〈guide_en.html〉へ 移る。上の 言葉の 切り替えを 押すと その 言葉を 覚え、次から そちらで 開く〈tools/guide.py〉
OGP を 正方形の プレビューでも 成り立つように/字は シンプルに/コントローラーは 今の 8-bit console 型の 絵に
直し なし〈ゲーム〉。顔の 絵〈ogp.png〉を 作り直し:ページと 同じ 明るい 灰の 枠・黒い 面、左に 白で ふちどった 十字、右に SELECT START と 赤い 丸の B A。まん中に 題の ロゴと 遊んで いる 画面〈正方形に 切っても ロゴと 画面が 入る〉。字は ロゴと 125 Inc. だけ〈tools/make_ogp.py〉
OGP の スクショは 英語に/125 Inc. は 画像で/原作の コピーライトも
直し なし〈ゲーム〉。顔の 絵〈ogp.png〉:遊んで いる 画面を 英語で 撮る〈ogp_shot.js を HACK_EN=1 で〉、右下は 125 Inc. の ロゴ 画像〈base-08 の logo125.png〉、左下に 原作の 表示「Based on Hack 1.0.3 ©1985 CWI ©1982 J.Fenlason」〈tools/make_ogp.py〉
GA4 を 入れて(測定 ID G-JK85NBFDNN)
直し なし〈ゲーム〉。base-08 の 入口〈解説 日・英〉・ゲーム〈hack.html〉・ランキングに GA4 を 入れた〈tools/deploy.py が web/ga_id.txt の ID を 埋める。itch.io・手元には 入れない〉。入口から 英語版へ 移る 時は 数えない。URL に ?nostat を 付けて 一度 開いた 端末は 数えない〈作る 人 用〉。解説・ランキングの 下に「Google アナリティクス(Cookie)を 使って います」と Google の 説明への リンク
ゲームの 中の 出来事(始めた・魔除けを 取った・クリアした)を GA4 に 送って
3.82(ウェブ版:GA が 入った base-08 の ページ だけ、ROM の RAM を 1 秒ごとに 見て GA4 に 送る。game_start〈職業・ダンジョン〉、amulet_get〈階・手数〉、game_end〈終わり方 died/escaped/amulet・最深・得点・手数・職業・ダンジョン・デバッグ〉。終わりは ランキングと 同じ 記録〈RK_WEB〉で、同じ 回は 二度 送らない。開いた 時に もう ある 記録・魔除けは 送らない〈web/play_src.html・tools/build.py〉)
開発迷宮の 中身を 作って(決め:探索開始・10 階で 行き止まり・金貨 3000・図鑑の 敵は 眠らせる)/特別な 部屋では ふつうの ゲームでも テーマを 出して
3.83(開発迷宮 B1〜B9 を 決まった 階に:入口の 広場〈案内所・武器庫・防具庫・道具と 食べ物・練習場〉、薬と 巻物〈暗い 部屋・隠し扉〉、杖と 指輪〈光線の 回廊〉、罠〈見える 7 種・隠れた 6 種・落とし戸〉、仕掛け〈大岩・沼と 大ウナギ・エルベレス・隠し通路〉、巣〈動物園・蜂の巣・墓場〉、図鑑 1〜3〈敵 55 種が 眠って いる〉。店は 8 種を B1〜B8 に 1 つずつ。B10 は 魔除けの 迷路〈魔法使い・地獄の 番犬〉。地図と 中身は tools/ddmap.py → gen/dd.inc、作るのは dd.s dd_load〈バンク 31〉。部屋に 入ると 下の 窓に【部屋の 名前】と 一言〈dd_room〉、ふつうの 迷宮でも 動物園・蜂の巣・墓場・沼で 出る。開発迷宮は 金貨 3000 で 始まる。題の「はじめる」を「探索開始」に)
GA4 で 送る 項目を 増やして(どんな 敵に 会った・何階まで 行った・何を 取った など、後で 見て 面白い データ)
3.84(ウェブ版の GA4 の 出来事を 増やした:floor_reach〈新しく 一番 深い 階〉・level_up・monster_meet〈隣に 来た 敵、種類ごとに 1 回〉・monster_kill〈経験値が 増えた 時に 消えた 敵〉・item_get〈持ち物に 初めて 入った 種類〉・room_enter〈店・動物園・蜂の巣・墓場・沼・金庫〉。game_end に 死因〈敵・罠・飢え など〉・レベル・金貨・倒した 数・会った 種類・取った 種類・遊んだ 分を 足した。全部の 出来事に デバッグを 使ったか〈hk_debug〉。名前は 英語〈glossary・objs の 表を build.py が 埋める〉)
iPhone の ホーム画面 アイコンと OGP を 揃えて(秘伝の書 09_アイコンとOGP.md)
直し なし〈ゲーム〉。入口〈解説 日・英:tools/guide.py〉に apple-touch-icon と icon-512 の <link>、ランキングに icon-512 の <link> を 足した。check_icons.py で ok
進めて(アイコンの 残り:icon-192)
直し なし〈ゲーム〉。icon-192.png〈192×192〉を 作って〈tools/make_ogp.py〉、ゲーム・入口・ランキングの <head> に 宣言を 足した。check_icons.py で 注意も なし〈正方形の 切り抜きの 目安 だけ〉
OGP を 作り直す・言語の 初め(8bit コンソール ROM は 英語、ウェブ版は ブラウザ)
3.52(titlefar.s:電池の 言語が 19 で なければ 23〈英語〉。ページ:電池の 中身が 無い 初めての 時 だけ ブラウザの 言語で 19/23〈base-08・itch 共通〉。試験の 道具〈soak・test・special_shots・ogp_shot など 13 本〉は 台本どおり 日本語に 固定〈HACK_EN=1 で 英語〉。OGP:題の 写真を ロゴが 降りきった 420 フレーム目に、ロゴ・EDITION は 色〈橙・黄〉で 切り出す〈題の 背景が 灰の 網に なって 崩れて いた〉、文は「1985年の ローグライク/Hack 1.0.3 の 迷宮を 8bit コンソールで/The 1985 roguelike on the 8-bit console/ランキング・今週のシード」)
ゲームの 中で ネットの ランキング(決めたい こと 7:出す)
3.53(rank.s:題の ランキングに 入ると RK_NQ $741C に $5F → ページが $A9 で 答えたら ウェブ版〈RK_WP〉。◀▶ で 表を 回す:この本体・ネット 今週のシード・なんでも・#1〜#5 今週。ネットの 表は $80|表 を 置き、ページ〈play_src.html〉が LootLocker の 上位 10 を 記録と 同じ 16 バイトで RK_NB $7300 に 書いて $40|表〈ingame 0 かつ まだ 読み中 の 時 だけ 書く:ゲーム中は 視界の 待ちの 所〉。読み中・つながらない・まだ 無い の 字、案内は「◀▶ネット Ⓑ戻る Ⓐくわしく」「◀▶切替 Ⓑ戻る」。8bit コンソールでは 今までと 同じ。記録が 無い 時の 字が 右の 枠〈列 31〉を 消して いたのも 直した。special_shots.js rknet〈ページの 代わり〉、?rkmock=1 で ブラウザの 表を 確かめた)
LootLocker の 整備(なんでもの 掲示板)・前の 週の 結果の 確かめ
3.54(LootLocker に hack_fc_free〈ID 37702・HACK Any Seed・generic・降順・Game API 書き込み・上書き・metadata・リセット なし〉を 作った。11/02 9:00 の リセット後、hack_fc_s1_week の archive〈key 108199/37684/2026/november/json/…・last_modified〉を /archive/read で 読めた〈試しの TEST 1 件〉。ランキングの ページの「先週」は last_modified の 新しい 順に)
本番の 通し試験(ウェブ版の 札・8bit コンソールの QR)
直し なし(本体 A204005C「08」の 2 件が hack_fc_free に 入った:札 2217 点〈p web〉・QR 52 点〈p fc、q に QR の 中身〉、枠 _1 と _2。ランダムシードなので 他の 掲示板は 空。ウェブ版の 題「ランキング」▶▶ で「ネット なんでも」に 本番の 2 件が 出た。仕様書を V3.54 時点に〈7 の 済み・8 の 7 を 決定〉)
仕様書の 決めたい こと 4〜6
直し なし(4 デバッグは 1 本のまま・5 α の 不正対策は 軽いまま〈目立つ ものは 管理画面で 消す〉・6 実機は 撮った 週。仕様書の 8 は 全部 決まった)
ネットの 表は ROM から 外す(ページの「ランキング」だけ)・階段を 下りた 時に 本体の 上位 5 と いまの 自分(現代アレンジ(2020年代) 新要素)
3.55(rank.s:V3.53 の ◀▶ ネットの 表〈RK_NB・RK_NQ〉と play_src.html の 受け渡しを 外した。rk_stair:下りる・落ちる〈LV_KIND 1・3、hb 中〉と lv_card が 大きい 窓〈行 4〜19・列 2〜29〉に「地下 n 階」と 上位 5、自分が 5 位 以内なら 差しこみ、外なら 6 行目に「→ 順位 名前 点 B 最深」。点は 上の UI の トロフィーと 同じ sc_base。字形は 自前の 控え RS_LO/HI〈$6880〜、30 字、タイル $3C〜〉で ゲーム中の gc に 触らない。階段・落ちる 床は 3 行 下げる〈lvanim.s LA_DY・LA_DR・LA_FY・LA_F2〉。印の 処理を rk_mk に まとめた。special_shots.js lvrk・lvrk2 で 外・中・記録なし・落とし戸・英語を 確かめた。原典は 途中で 表を 見られない)
落ちる 時は 画面の 上から 窓の 裏を 通って 窓の 下へ 落ちるのが 見える 形に
3.56(lvanim.s la_mask:落ちる・ランキングの 窓 あり なら OAM 0・8 に 黒い 覆い〈絵 $76・$77 = 色 1 黒・BG の 後ろ〉を 窓の 中〈y 32〜159 に 収める〉に 置き、主人公・犬は OAM 16・24 へ。前の スプライトが 不透明なら 後ろは 出ない ので 網・字の すき間からも 透けない。覆いの 絵は la_draw が 書く〈札の 間は マップの 絵の 所〉。rank.s RS_MAX 30 → 29〈字の タイル $3C〜$75〉)
落ちる 時は 表を 出さない(動きが 多い)
3.57(rank.s rk_stair:LV_KIND 1〈下りる〉だけ。落ちる 時は 前の 小さい 札。V3.56 の 覆い〈lvanim.s la_mask〉は 外して RS_MAX を 30 に 戻した)
itch.io の 中身と 画面写真(ほかも 進めて)
直し なし(tools/itch_push.py で V3.57 を butler push〈build #2277625〉。画面写真 3〜6 を 足して 6 枚〈3 コウモリを 倒す 部屋・4 メニュー・5 QR・6 階段を 下りた 時の 表〈英語:special_shots.js lvrk を HACK_EN=1 → build/itch_assets/shot6.png〉〉。ページは Draft の まま)
QR 経由の ランキングページを 全体に きれいに・ウェブ版は 自動で ランキングに(「スコアをアップしました」だけ)
3.58(web/rank_src.html を 作り直し:ゲームの 青い 窓〈白い 線・紺の 網〉・上に HACK と ▶ 遊ぶ・受け取った 記録は 名前と 大きい 得点・項目の 箱・登録先の 札 → 登録 後は 札が 順位に 変わり その 表の 自分の 行へ 飛んで 光る・表は 今週のシード/なんでも/固定シード〈#1〜#5〉+期間・デバッグは 下の ボタン・1〜3 位は 金銀銅・FC/WEB/itch・今週の シードは 第 n 週・シード・残り 時間・「ランキングに載るには」・?mock=1&demo=1 で 見本。play_src.html:札と「登録」を やめ、記録が できたら すぐ 送って 上に「🏆 スコアをアップしました」4 秒〈失敗は 30 秒 おきに あと 2 回〉)
itch.io の 中身も 3.58 に
直し なし(tools/itch_push.py で butler push。ページは Draft の まま)
itch.io の 英語の 説明に 新しい こと
直し なし(FEATURES の ランキングを「your score is uploaded automatically when you die or escape」に、下に「Every time you go down the stairs, a window shows your cart's top 5 and where you stand right now」を 足した。Draft の まま 保存)
公開日の 段取り
直し なし(docs/20261102 HACK 公開日 段取り.md:前の 週まで・前日〈試しの 記録を 消す・最後の 版を base-08 と itch へ〉・当日〈itch を Public は 本人〉・公開 後 1 週間・戻す 時)
試しの 記録は ランキングに 入れた まま(わざと・名残)
直し なし(公開日 段取り の 6 を「消さない」に)
生き返りの 仕様は なくす
3.59(死んだら 1 回 だけ 全快で 上り 階段に 立ち上がる〈2026-10-17 要望・得点 半分〉を やめた:mon2.s you_died の rv_try、fastui.s rv_try・REV_USED〈$7EB2 は 空き〉、score.s の 半分、text.csv m_revive。原典どおり 死んだら 終わり)
無敵・お金・経験は ゲーム内(α 版)、巻き戻しと 場面の 呼び出しは ウェブ版 だけ。ページの ボタンが ごちゃつく → 整理/拡大と 全画面を 1 つの ボタンに・アイコンに/メニューの シードに アイコンは 要らない
3.60(コントローラーの ボタンは 音・画面・DEV の 3 つで アイコン〈音は 入り/切り、画面は 押すと 通常 → 拡大 → 全画面 → 通常、全画面の 無い 端末は 拡大 → 通常。拡大の 中の 帯も 同じ 1 つ〉。斜め 入力は DEV の 中へ。DEV:巻き戻し〈ターン・階〉/場面を 呼ぶ ▸〈階・地図・物・敵・罠・主人公の 状態〉/開発の 道具 ▸〈記録・エミュ〉/斜め・ランキング・報告・名前・ROM DL。無敵・お金 +1000・Lv +1 は ページから 外した〈ゲームの メニューの「デバッグ」に ある〉。場面を 呼ぶ・状態を 読むと DB_GODU の bit1 を 立て その 回は デバッグの 記録〈デバッグの 窓の 記録に「場面」・ランキングは デバッグの 表〉。前は ページの 無敵・場面は 記録に 残らず 通常の 表に 出せた。メインメニューの「シード」の 頭の 種の 絵を 外した)
ボタンの 中に キーを 入れて シンプルに(9 SELECT・0 START・O B・P A)、8bit コンソールの ボタン名は 太く
3.61(キーは ボタンの 中の 上に 細く、名前は 太字〈900〉。外に 出て いた キーの 字を なくし、ボタンの 行の 間を 詰めた〈縦 22・横 46〉)
SELECT・START は 角丸かぁ。色は 8-bit console 仕様で/角丸で 少し 長方形気味
3.62(コントローラーを 8-bit console の 色に:明るい 灰の 枠・黒い 面・黒い 十字〈灰の ふち〉・赤い A B〈灰の 輪〉・灰の SELECT START、下の 音・画面・DEV も 灰。ボタンは 角丸の 少し 横長〈A B 112×96、SELECT START 100×58。横画面は 140×120・126×72〉)
赤い ボタンは 丸!
3.63(A B は 丸に 戻した〈104・横画面 130〉。角丸の 少し 横長は SELECT START だけ)
十字の 周りは 白で ふちどる/画面の 周り〈VER の 行も〉は 白で 中太に(8-bit console 実機の 写真)/縦持ちが 込み合う → 大きさ 調整/VER の 右の 丸は 要らない/パッドは 横幅を 広げて
3.64(十字に 白い ふち 2px。テレビ〈画面と VER の 行〉の 周りに 明るい 灰の 太い ふち〈縦 8・横 6〉。縦:十字 86・A B 92・SELECT START 88×50、行の 間 44。VER の 右の 灯と 丸 2 つを 外した。灰の 枠を 細く〈16 → 8〉・面の 左右の あきも 詰めて 黒い 面を 広く。キーの 字の 色は ボタンの 字と 同じに)
VER ほか(テレビの 下の 帯)は 要らない。シンプルに
3.65(帯〈VER・©・字形の 表記〉を 出さない。版は ゲームの 題の 画面に 出る。帯を 5 回 押して 出す 測りの 表示は 使えなく なった)
ボタンを ちょい 縮めてでも 枠と 画面と ボタンの 間に 隙間を(横画面)
3.66(横:枠と ボタン、ボタンと テレビの 間を 幅の 2.4%〈16 以上〉、枠と テレビの 上下を 高さの 3.5%〈10 以上〉あけた。その 分 十字・ボタン・テレビが 少し 小さく なる)
下の 3 つの ボタンは コントローラーの 枠の 上段へ
3.67(縦:音・画面・DEV を 面の 上の 段に。十字と ボタンは その 下の 残りの まん中。横は テレビの 下の まま)
守りの 指輪で ステータスが 変化する 場合も 色で 表示 サポートする
3.68(持ち物で 守りの 指輪を 指すと 上の UI の ⛨ を はめた 後の 値に〈良く なる 水色・悪く なる 赤〉。はめて いる 指輪は「外す」を 指すと 外した 後。種類も +n も 知って いる 時 だけ〈知らなければ ばれない よう 出さない〉。両手 ふさがりは はめかえる 方〈呪いで ない 方〉の 分も 足す。invtop.s it_ring〈バンク 13 が いっぱいで バンク 12〉。確かめ:special_shots ringpv〈AC 7 → +2 で 5 水色、知らない +3 は 出ない〉)
投げた 薬の 効き目(特殊仕様一覧の 未実装)
3.33(throw.s バンク 30:pot_hit_mon〈当たると 1/5 で 体力 −1、1/3 で 効く:回復 系は 全快「すっかり元気に」・病気は 半分・混乱・酒は 混乱・透明・速さ。隣なら 4/5 で 嗅ぐ〉、pot_hit_you〈天井へ 投げた:頭に 当たって rnd(2)・死因「投げた薬」〉、pot_breathe〈力 +1・体力 +1・病気 −5・めまい・右手が 見えない・麻痺 rnd(5)・速さ・暗く なる〉。足元に 落とした 時も 嗅ぐ。文 8 行 追加。目つぶしは モンスターの 目の 状態が 無いので 効かない)
衝突・警告・変身防止の 指輪の 効果、カメレオンの 化け直し
3.33(ring.s バンク 30:衝突=見える 所の モンスターは 隣の モンスターを 3/4 で 打つ〈原典 fightm・mon2.s mvm_one〉。警告=見えない 起きた 敵〈距離² 100 未満〉の 最高 レベル − 主人公の レベル が 0 以上で「右手の指輪が黒く光った!」など 6 色〈原典 warnings[]、5 手 おき か 上がった 時。原典の「近づいた」敵 だけ は 前の 位置を 持たない ため 起きて いる 敵で〉。変身防止=はめた 時 化けて いる ものを カメレオンに 戻す〈rescham〉。カメレオンは 1/6 で 化け直す〈dochug の 始め・zap.s newcham を 使う〉)
店主が 階を 越えて 追って くる
調べたら follow.s に 入って いた(怒った 店主は 隣なら 次の 階へ・金も 持って くる)。特殊仕様一覧の「未実装」が 古かった
矢 以外の 投げた 物も 光線の 絵 ではなく
3.33(床の 物の 絵 14 種を スプライトに〈黒・黄・白 + 黒い 縁。gfx.py fly_icon〉、飛ぶ 物の 絵 20 枚〈1280 バイト〉を バンク 30 から 絵 14 へ。石・弾は 石の 絵。ray_dir も バンク 30 へ〈FAR6 の 空き〉)
アルファの 間 タイトルは HACK 8BIT EDITION
3.33(loc t_edition1 → 8BIT EDITION、Web の title・og:title も)
レポートが 来たら 連絡が 来る ように
tools/gas/report_notify.gs(GAS:5 分ごとに RTDB hack_bug を 見て 新しい レポートを 画面写真 つきで メール。setup を 1 回 実行)
ランキング(FC 側)の 設計:名前・結果画面の メニュー・上位10 と 最近10・QR
docs/20261101 HACK ランキング FC設計.md、試作 docs/mock/name_entry.png(案内を START おわり・Ⓑ けす・Ⓐ 決定、説明の 行を 外した)・rank_flow.png(tools/name_mock.py・rank_mock.py)
題の HACK を 上げて 下の 狭さを 解消
3.34 予定(ロゴ 行 4-5・版 行 6、属性 8-11 を 窓の パレットへ。試作 rank_flow.png の 題の 窓を 行 9〜26 に 広げた)
初めの 名前は HACK-ER
設計メモ・試作 rank_flow.png を HACK-ER に
ランキング 全体の 仕様(期間・1 人 5 件・歴代の 点・デバッグ 掲示板・シード 選び)
設計メモに 追記(LootLocker の できる こと、掲示板 13 本の 一覧、シードの 画面、localStorage は 分け合えない)
LootLocker に HACK の ランキングを 作る
ゲーム HACK(id 108199)・Guest Login ON・掲示板 13 本(ID 37679〜37691、今週 6 本は 月曜 9 時〈日本〉に リセット)。設計メモ F に 一覧
名前(ランキング用):題の メニューに「名前」と 名前入力
3.34(name.s〈バンク 30〉:名前は 電池つき RAM $7F80 に 1 つ〈ASCII 8 字・初めは HACK-ER〉。番人の 仮の 道 FC_* を 102 → 64 に 詰めて 空けた〈vault.s、満ちたら 足さない だけ〉。題の 窓は 2 行 上げて〈行 10〜〉 はじめる・続ける・名前〈右に 今の 名前〉・解説・言語、言語の サブ窓も 2 行 上げた。名前入力の 窓:QWERTY 4 段 + けす・おわり、選んだ キーは 白い 四角〈スプライト OAM 224・228、絵 14〉、けす・おわりは 手袋、Ⓑ で 1 字 けす〈空なら やめる〉・START で 決める〈空なら 元の 名前〉、窓の 間は 行進を 隠す。日本語・英語で 通しを 撮って 確かめた〈special_shots.js name・lang〉)
名前入力:START は ST と 書く・選んだ 字は 四角で なく 字の 近くに 指
3.35(案内を「STおわり Ⓑけす Ⓐ決定」〈英語 ST:END〉に。キーの 間は 8 ドット しか ないので 手袋〈14 ドット〉は 隣の 字に かかる → 8×8 の 小さい 指〈親指が 上・人差し指で 指す〉を 絵 14 に 描き、字の 8 ドット 手前に 置く〈OAM 224・パレット 2〉。けす・おわりは 手袋の まま)
名前入力:キーの 指も いつもの 手袋に 統一
3.36(小さい 指を やめ、キーも けす・おわりと 同じ 手袋〈hd_put2・字の 2 ドット 手前が 右端〉。左の キーには 重なる)
名前入力:見出しの 所で 名前を 入れる・窓の 縦を 短く(下の レンガに つかない)
3.37(見出し「なまえを入れてください」を やめ、その 行〈NW_R0 + 1〉に 名前の 欄。キー 行 12〜・けす おわり 行 20・案内 行 23・下の 枠 行 25)
メニューを 出して 閉じると 縦に 動いて 見える
3.37(P3_DIM の 間は 地図の y に 1 足して 打ち消す〈main.s NMI〉。special_shots.js wins で 開く 前と サブ窓の 時の 地図・親窓が ぴったり 重なるのを 確かめた。jit:題の 窓・持ち物は 全体の ずれ 無し)
曲が 鳴って いる 場面で 重いと 曲が 止まる・音が 乱れる。いい 割り込みに
3.38(NMI の 終わりで nmi_mus:$8000 を バンク 10 に して mus_tick → main の バンク〈r6_cur〉に 戻す。切りかえ中は IRQ 止め、曲の 間は cli で ライン 21 の IRQ を 通す、重なった NMI は 飛ばす。画面を 消す 間も PPUCTRL の NMI は 残し、ppuc の ビット 7 が 0 の 間は「静かな NMI」= 曲と 効果音 だけ〈PPU には 触らない〉。screen_on は PPUCTRL を 先に。固定バンクの 空きは screen_off・screen_on・起動の 一部を バンク 30 へ。special_shots.js bgm:題・名前・解説・職業選びで 曲の 止まりは 0 フレーム〈前は 解説で 12〉。耐久 4 本〈30000 フレーム〉も 通った)
職業選択で カーソルを 動かし 続けると 上の UI の 2 行目の 左右の 端が 黒く なる
3.39(s2_edge は 字の 後ろと 同じ s2_mesh へ:ui_top の 間は 窓用の 網 BLANKW。special_shots.js clnt:職業選びの 端は $3C、ゲーム中は $FC の まま)
デバッグの UI を きちっと(公開版 α:巻き戻し 15 手・無敵・お金・経験値、使った 記録を 残す)
3.40(ゲーム中の メニューに「デバッグ」→ サブ窓 debugwin.s〈バンク 30〉:巻き戻し〈◀▶ で 1〜15 手。ウェブ版 だけ、8bit コンソールでは 灰で「ウェブ版のみ」〉・無敵 ON/OFF・お金 +1000・レベル +1・記録「巻 金 Lv 無敵」。記録は 電池 RAM $7F95〜(DB_REW・DB_GODU・DB_GOLD・DB_LV)で セーブに 入れる〈SAVE_VER 4:前の セーブは 読めない〉、はじめから で 0。巻き戻し:ページが 毎フレーム 戻れる 手数〈同じ ゲーム・15 まで〉を DB_RWA に、ROM が DB_RWQ に 手数 → ページが 手数で 選んだ 状態を 読み、記録を 書き戻す〈走って 何手も 進んだ 時も 手数 どおり〉。窓の 間に 変えた 上の UI は 閉じた 後に 描き直す〈dw_after〉。試作 docs/mock/dbg_flow.png、special_shots.js dbgw)
職業選択の 一番 上に「🌱 シード」:ランダム・固定 #1〜#5・シード入力
3.41(seedsel.s〈STR〉:一覧の 一番 上の 行〈職業・犬は 2 行 下げた:cl_row・CL_DROW 22〉。指を 合わせると 右に【シード】種類・番号・「固定#1〜#5は ランキングに出せる」、Ⓐ で 犬の 窓と 同じ 形の サブ窓:種類は ◀▶ で 7 つ、入力 は 番号の 行で Ⓐ → ◀▶ けた・▲▼ 値。種類は 電池 RAM $7FA0 に 残る。はじめる で gseed に〈固定 1185・2026・1119・0853・7777〉、種類は SD_GM で セーブに〈SAVE_VER 5〉。一覧の 行の 字は 自分の タイル〈16 枚〉に 描く〈控えで 書くと 説明の 字に 上書き された〉。種の 字形 。special_shots.js seed・cldesc〈日英とも 説明が 全部 出る〉)
結果画面:名前・シード、タイトルへ/名前を変える
3.42(result.s〈バンク 30〉:座布団の 見出しの 下の 空き行に「名前 🌱#n」〈ランダム・入力は 種の 番号 4 けた〉。デバッグを 使った 回は 順位の 行を「デバッグ 巻3 金0 Lv0」に〈ランキングに 出せない〉。いちばん 下は「タイトルへ 名前を変える」を ◀▶ と 手袋の 指で 選ぶ。名前を変える → 電池 RAM NM_GO に 印 → 題で すぐ 名前入力〈行進を 1 回 動かして 指の 色を 整えて から〉。special_shots.js res2〈DBG=1 で デバッグ あり〉)
題の「ランキング」:上位 10・1 件の 結果と QR(base-08 の 登録へ)
3.43(rank.s:記録 16 バイト × 10 を 電池 RAM $7F20〜〈番人の 仮の 道 64 → 32、名前・デバッグ・シードの 変数は $7FC0〜 へ。最近 10 は 入らない ので やめた〉。終わりに 得点の 順に 入れる〈前の 上位 5 を 置き換え、結果画面は「ベスト10の n 位」〉。題の 窓に ランキング〈はじめる・続ける・名前・ランキング・解説・言語〉→ 全面の 窓に 一覧〈順位・名前・得点・B 最深・脱/魔/D の 印〉→ Ⓐ で 1 件〈職業・終わり方・最深・手数・巻き戻し〉と QR 64 字〈URL + 名前 + ID・記録・版・確かめ の 16 進。形は 設計メモ G〉。QR は 6502〈qr.s:バンク 7、英数字・リード・ソロモン 15・マスク 0、表は tools/qrtab.py〉、画面の QR を zxing-cpp で 読めた。結果画面の 名前を変える は その 回の 記録の 名前も 変える)
道具メニューに 名前と シード、押すと QR(シードを 人に 知らせる)
3.44(ゲーム中の メニューに「🌱シード」〈どうぐ・足元・聖呪文・シード・デバッグ・タイトル〉→ 全面に「名前 🌱#n/種の 番号」と QR〈HTTPS://BASE-08.WEB.APP/S/ + 種 4 けた:撮ると ウェブ版で 同じ 種〉、Ⓑ で メニューへ〈持ち物の 画面と 同じく フィールドを 描き直す〉。special_shots.js sq で QR を 読めた。名前の 変更は 題・結果画面で〈ゲーム中は 題の 名前入力の 窓が 使えない〉)
シードの QR を やめる・ランキングの QR を ウェブで 受け取る
3.45(ゲーム中の「🌱シード」は 名前と 種 だけ〈QR・/S/ は やめた〉。ランキングの QR の 名前の 空白も * に〈URL に 空白を 入れない。ウェブで 空白に 戻す〉。web/rank_src.html → 部屋の rank.html〈deploy.py〉、base-08 の firebase.json で /H/** を ここへ 書き換え。QR の 中身〈設計メモ G〉を 読んで 確かめの 値を 照合、職業・最深・終わり方・手数・シードを 出し、固定 #1〜#5 は 今週・総合、巻き戻し・デバッグ は デバッグ 掲示板へ「ランキングに 登録」〈LootLocker:本体 ID + 枠 1〜5、同じ 記録は 二重に 入れない、空き か 一番 低い 枠を 上書き、低ければ 載せない〉。ランダム・入力 シードは 載らない 案内。下に 掲示板の 表〈#1〜#5 × 今週・総合/デバッグ、登録した 本体は 色付き〉。?mock=1 で 手元 試験。LootLocker の Game API の 鍵が まだ 無いので 本番は「準備中」)
LootLocker の 鍵を 入れて ランキングの 登録を 本番へ
3.46(rank_src.html に API Domain 955ddr3q.api.lootlocker.com と Game API の 鍵。ゲストの セッション・掲示板の 読み・送信を 本番で 確かめた〈試しの 1 件 TEST 1520 を hack_fc_s1_week に:11/02 9 時の リセットで 消える〉。Server API の 鍵は ページに 入れない)
ウェブ版から そのまま ランキングに 登録
3.47(rank.s rk_web:冒険の 終わりに この 回の 記録 16 バイトを RK_WEB $6850〈mklev の RSLY の 空き。題へ 戻っても 残る〉に 作り、印 $A7 と 確かめ〈記録 16 + 本体 ID 4 の 和 ^ $5A〉。上位 10 への 入れは そこから 写す。ウェブの ページ〈base-08 だけ〉が 0.5 秒ごとに 読み、載る 回〈固定 #1〜#5・デバッグ〉なら 上に 札「名前 点 掲示板 [登録]✕」→ LootLocker へ〈名前は 送る 時の 名前、metadata p:"web"〉。一度 出した 記録は 二度 出さない〈hk.rkseen〉。LootLocker の 処理は web/hackrank.js に まとめ、QR の 受け取りページと 共通〈build.py・deploy.py が 埋めこむ〉。special_shots.js rkweb で ROM の 記録、?rkmock=1 で 札と 送信を 確かめた)
死んだ・地上に 戻った 時に QR を 出せる/itch.io でも 登録
3.48(結果画面の いちばん 下を「タイトルへ QR 名前を変える」に〈◀▶ で 3 つを 回る〉。QR → 全面に この 回の 1 件〈職業・終わり方・最深・手数〉と QR〈上位 10 に 入らない 回も〉、Ⓐ 名前を変える・Ⓑ タイトルへ。1 件の 表示は 見せる 1 件 RK_CUR $6862〈RSLY の 空き〉から 読む 形に して ランキングと 共通〈rk_det〉。ウェブの 登録の 札は itch.io〈window.SC_ITCH、tools/itch_push.py が 足す。--dry で build/itch_web〉でも 出し、metadata p は "itch"。special_shots.js rsqr で QR を zxing で 読めた)
週替わりの ランダムシード・先週と 歴代の 表(やり残し 1・2)
3.49(シードの 種類に 7 =「今週」〈ウェブ版 だけ〉:職業の 画面で ROM が $684A に $5E → ページが 週の 番号から 作った 種を $684B に 入れて $A8〈mklev の RSLY の 空き:頼まれた 時 だけ 書く〉。種類の 数は 答えが あれば 8。はじめる で gseed、SD_GM 7、記録の シード 7 → 掲示板 hack_fc_wk。週は 月曜 9:00〈日本〉で 変わり 第 1 週 = 11/02、種は hackrank.js weekSeed〈どの ページでも 同じ〉。週を またいだ 回は 札を 出さない〈gseed が 今週の 種と 違う〉。ランキングの ページに「今週のシード」〈今週・先週・歴代〉と 固定 #n の「先週」:LootLocker の archive〈/archive/list・/archive/read〉を 読み、歴代は 週ごとに 本体の 一番 良い 行で 順位 → 参加 本体 数 − 順位 + 1 を 足す〈GAS なし・hack_fc_wk_all は 使わない〉。archive の 中身の 形は 11/02 の リセット後に 確かめる。special_shots.js wseed、?mock=1 で 点の 計算〈A 4・C 3・B 2〉を 確かめた)
英語の QR の 画面の 確かめ・ページに ランキングの 入口(やり残し 7・10)
3.50(ページの DEV メニューに「ランキング」→ base-08.web.app/H/ を 新しい タブで。英語:結果画面〈REST IN PEACE・Title QR Rename〉・QR の 画面〈This run…・Scan ⒶRename ⒷTitle〉・題〈RANKING〉・一覧〈RANKING TOP 10〉・1 件〈Scan to submit〉・シードの 画面〈SEED〉を 撮り、QR を zxing で 読めた。special_shots.js:EN1=1 で 冒険の 終わりに 英語へ、rsqr は 立ち上がり〈現代アレンジ(2020年代)〉を 使った ことに して から 死ぬ・題の ランキングまで)
ランダム・入力シードは「なんでも」掲示板へ(決めたこと 1〜3・DEV は 残す)
3.51(hackrank.js boardsFor:デバッグ 以外は 全部 hack_fc_free にも〈固定は 今週・総合・なんでも、今週のシードは 今週・なんでも、ランダム・入力は なんでも〉。1 本 失敗しても 残りは 送る〈なんでもの 掲示板は LootLocker で まだ 作って いない:作るまで「×/準備中」〉。ランキングの ページに「なんでも」の タブ。仕様書の 8 を 決めた こと・決めたい ことの 表に)
itch.io の ページ(英語の 画面写真・今は ゲーム画面 だけ)
itch.io に「HACK 8BIT EDITION」〈https://ttsyszk1973.itch.io/hack-8bit-edition、Draft、HTML・開発中・$0 か 寄付〈目安 $2〉・枠 768×720・全画面ボタン・Role Playing・タグ 10・AI 申告 あり〈絵・音・文・コード〉・コメント あり・英語の 説明〉を 作り、tools/itch_push.py〈TARGET ttsyszk1973/hack-8bit-edition:html5〉で butler push。itch 版は 初めから 拡大〈ゲームの 絵 だけ・切りかえの 札なし・CLICK TO PLAY は 上に:play_src.html の .itch〉。英語の 画面写真は special_shots.js itch〈初めから 英語〉と rsqr〈EN1〉→ build/itch_assets〈カバー 630×500 は 題の 画面〉)
弓・鎖・連なった 敵 など 少し 特殊な 仕様と 実装状況を スクショ つきで 書類に
docs/20261031 HACK 特殊仕様一覧.pptx・pdf(15 枚:一覧・弓と 矢・長い虫・罰の 鉄球と 鎖・飲み込み・杖の 光線・店・願い・特殊攻撃の 敵 ①②・魔法使いと 魔除け・写真の 無い 仕様・まとめ)。写真は tools/special_shots.js〈場面ごと・デバッグ命令〉、資料は tools/make_special_doc.py
飛んで いく 矢は 光線の 絵 ではなく 専用の 絵に
3.32(矢・クロスボウの 矢・ダーツは 矢の 絵〈縦・横・斜め の 3 枚を 反転で 8 方向。art/sprites.json AR_*〉。飛ぶ 物の 絵 6 枚〈光線 3・矢 3〉は バンク 30 に 置き、使う 時に スプライトの 絵 14〈前の 横の 光線の 所〉へ 書く〈zap.s fly_load・F30〉。縦の 光線も 直った。8 方向とも 撮って 確かめた〈special_shots.js fly8〉)
持ち物で 防具に カーソルを 当てた 時、⛨ の 色まで 変わらない ように スプライトで
3.32(属性は 替えず、水色の 数字は スプライト〈OAM 224〜232・SP0 の 色 3 $31〉で 字の 上に 重ねる。字は 網 なしで スプライトの 絵 56・58・$7E へ〈stline.s ac_spr・ac_oam、バンク 30〉。悪く なる〈赤〉は 今までどおり 字の 色 1。閉じたら 消す〈oam_hide〉。⛨ は 白・赤の まま、数字が ぴったり 重なる ことを 撮って 確かめた〈special_shots.js invc〉)
今 必要な メンテナンスは? → ROM を 広げる・ROM の 置き方・資料の 名前
3.29(PRG 512KB:tools/build.py PRG_BANKS = 64・ヘッダー 32。固定は バンク 62-63、30〜61 は 空き。dist/roms は 最新と 一本前 だけ〈deploy.py が 消す・git には 積まない〉。docs の 資料は「YYYYMMDD HACK 内容」に 改名、作る 道具も その 名前で)
歩く 時・階段が 重い。軽く する 余地は?
3.24(far_go:同じ バンクなら 切りかえない。sc_dec:10 の 累乗を 引く〈平均 2,028 サイクル、3,012 通り 一致〉。rn2:2 の 累乗は 下の ビット・割る数 ≧ 32 は 下 8 ビット だけ〈51,200 通り 結果 一致、5 階分 41 → 30 フレーム〉。同じ 歩き方で 処理落ち 1 手 10.73 → 10.32・最大 42 → 32、階段 278 → 275 フレーム)
インゲームの 高速化
3.25(cansee:主人公が 見た 通路・扉に いる 時 だけ cs_corr〈印 cs_en を mv_upd で〉。sw_move:巻きつかれて いなければ stuck_chk を 呼ばない。F3 typat 30 か所 → jsr typat〈typat は 固定〉。wm_move は 長い虫 だけ。CODE1 の 空きの ため 落とし戸の 岩〈tr_rock〉を バンク 3 へ。1 手の 働き 398,469 → 385,480 サイクル・処理落ち 7.71 → 7.29〈敵 8:488,286 → 480,043〉)
大工事:ターンの 計算を 歩く 絵の 間に・上の UI の 書き直しを まとめる
3.26(歩いた 手 だけ 敵を 後回し:mon2.s end_turn が TURN_PH を 立て、movemon を 1 体ずつの mvm_one に。ゲームの 流れの 終わりの wait_nmi を fastui.s turn_wait〈バンク 3:モンスターの 表が ある〉に して 次の NMI までの 空き時間に 1 体ずつ、歩き 終わって 残れば run_tick で 全部〈入力は 手の 途中で 受けない〉。踏み込みの 演出の 間も 絵と 歩く 数えを 進める。明るい 部屋を 見せ 終わって 枠も 同じ なら vis_rings を 飛ばす。得点は 同じ なら 書かない〈SC_CV〉。固定の 空きの ため game_start の 値の 消しを gs_reset〈バンク 15〉、CODE1 の 空きの ため 吹き矢の 罠を バンク 3 へ。同じ 操作で ゲームの 中身が V3.24 と 同じ ことを 0・4・8 体で 確かめた〈build/rp/same.js〉。1 歩 16.7 → 12.7 フレーム〈犬が 毎手 戦う 階〉、敵 8 体に 囲まれて 42.3 → 34.3、押して から 歩き 出す までの 止まりが 無く なった)
着手から これまでの 開発の 歴史を 125 フォーマットで
docs/HACK_開発記録.pptx・pdf を V3.26 まで(32 枚:表紙・目次 12 章・版ごとの 歩み 5 枚・新しい 章 9〜11〈窓と メニュー・現代アレンジ(2020年代)と ログ・見え方/音/速さ〉・まとめ)。tools/make_report.py・report_charts.py〈版の 歩みと 日ごとの グラフを 全期間に、REPO と 頼みの 数え方、PRG の バンクを nes.cfg から〉・report_shots.js〈今の 題の 流れで 撮る〉
コントローラーを つないだ 時は コントローラーの 表示 なしで、画面を できる だけ 大きい 整数倍に:通常/拡大/全画面の ボタン
3.27(web/play_src.html:拡大=黒地に ゲームの 絵 だけを 端末の 画素で 一番 大きい 整数倍〈元の 256×240 から 写す〉、全画面=ブラウザの 全画面で 同じ。通常の 下の 段に「拡大」「全画面」、拡大中は 右上に 通常・拡大・全画面〈マウスを 動かした 時 だけ〉、F キーで 全画面、拡大は 次も 拡大で 始まる)
これは 本当に 岩か? すぐ 消えちゃうのか?
3.28(obj.s:fix_objbit は 印を 見ずに 全部 探す o_scan。報告の 状態で 3 回 押して 1 マスずつ 動き 見えた まま)
スキャンライン・ブラウン管の フィルタを ショートカットで
3.28(web/play_src.html:C キーで なし → スキャンライン → ブラウン管〈RGB の 筋・四隅・少し にじみ〉。通常・拡大・全画面 どれでも、選びは 残る)
先祖返り? 道具で AC・攻撃力が 変わる 時は 上の UI の 今の AC の 数字の 所に。色が 変えられなければ スプライトで
3.30(上の UI の ⛨ の 数字 その ものを 着た/外した 後の 値に:stline.s ac_show・ac_now・ac_mark。悪く なる = 赤い 字〈色 1・text.s st_service の $40〉、良く なる = その マスの 属性を パレット 0 に して 水色〈⛨ も 水色〉、同じ = 白。閉じれば 戻る〈invui.s inv_close_noturn〉。行 3 の 予告は やめた。武器の +n は 上の UI に 数字が ない ので 行 3 の まま)
目玉に 固められるの 何ターン? 長すぎる
3.16(fight2.s:いつも 2〜21 手。解説の 現代アレンジ(2020年代) 2/2 に「目玉で 固まる:最大200手 → 21手」)
目玉:中間で 1/2 で 2〜21 ターン
3.17(fight2.s:固まるのは 1/2。解説の 現代アレンジ(2020年代) 2/2 を「2/3・最大200手 → 1/2・最大21手」に)
この 壁 おかしくない?
3.18(gfx.py:網の 壁〈前面・天面〉は 市松〈半分〉に。報告の 状態で 上下の 壁と 扉の 切れ目が 見える ことを 確かめた)
ダンジョンに 降りた 時 右に 動いても 正面を 向いた まま。降りた 時の 向きが 決まって いない?
調べ中(起きた 時の 手順を 聞く)
Web エミュの 音:音程が 低い・途切れる・高い 音が 濁る(bookofsecrets 07 の 9 章)
3.19(APUSynth を music_nes の 形に:矩形 C/2(p+1)・三角 C/(p+1)・1 サンプル 8 刻み・$4003/$4007 で 波の 頭から。play_src.html:音が 鳴って いる 間は 8ms の setInterval で 待ち行列を 約 4 フレームに 保つ〈止められた 音・早送り・一時停止は 今まで どおり 画面の 時計〉、AQ.under。周期 253 → 矩形 440Hz・三角 220Hz、15 秒 60.13fps で 尽き 0)
ガスを 吸って しまったら 状態は OK では なく ガスと なるべきでは?
3.20(fastui.s st_stat に 3 つ 足す:multi が 残り multi_why 2〜4 の 間、MU_WHY $77D9 で「ガス」〈trap.s tr_gas〉・「金しばり」〈fight2.s 浮いた 目〉・「動けない」〈ほか〉。悲しい 顔・赤い 字。動ける ように なれば MU_WHY を 0 に)
共通部品 nes_common の 音楽ドライバを フォークで 入れる(DPCM なし。題の 曲・ジングルを 凝れる ように)
まだ 出して いない(src/driver.s = nes_common 1.00〈5fabaa8〉の フォーク:変数は 内蔵 RAM $0681〜$0746〈わかった物の 表の 跡。MUSRAM〉、ドライバ・曲・表は バンク 10〈MUS〉で F10 mus_tick。曲は tools/music.py → music/title.txt〈FamiStudio の テキスト形式〉→ tools/fms/fmsconv.py → gen/fms。効果音は 鳴らす 間 music_own $09〈矩形 1・ノイズ〉。FamiStudio の NSF と 7300 フレーム 比べて 矩形 2・三角 一致、ノイズの 食い違い 228 は 全部 足音の 効果音が 借りた フレーム〈tools/bgm_check.js〉。耐久 2 本 OK・ページで 10 秒 尽き 0)
nes_common 1.01 で 軽く なった 所だけ 手で 取りこむ
まだ 出して いない(src/driver.s:鳴って いない チャンネルは 周期を 計算しない ch_silent・0 の ピッチ/ファイン/スライドを 飛ばす。エンベロープの 頭の 写し〈作業 RAM +80 B〉は 空き 215 B に 入らない ので 見送り。平均 2,860・最大 5,350。FamiStudio の NSF と 一致の まま)
出して
3.21(音楽ドライバの フォーク〈nes_common 1.00+1.01 の 軽い 所〉・題の 曲は music/title.txt から)
新しい オープニング曲と 効果音 16 個を 組みこむ
まだ 出して いない(music/title.txt を「迷宮へ 挑む 勇者の 行進」〈hack_title2.txt〉に。tools/fms/fmsconv.py の ビブラートの 表を nes_common 1.03 から。tools/music.py は 変換 だけに。効果音は music/sfx.json → tools/sfx.py → gen/sfx.inc〈1 フレーム = 書く レジスタの 印 + 値〉、sound.s は 効果音ごとに 使う チャンネル だけ 借りる〈足音は ノイズ だけ〉。HIT〜HURT の 音程の ずれ SFX_DV は 残す。tools/sfx_check.js で 16 個 全部 一致、tools/bgm_check.js で 曲 一致〈食い違いは 足音が 借りた ノイズ だけ〉。耐久 2 本 OK・題の 処理落ち 0)
出して
3.22(新しい オープニング曲・効果音 16 個)
階段を 降りる 時は 曲を 止める。犬と 主人公が 降り始め・降り切りで 重ならない よう、主人公は 降り切ったら 消え、犬は 最初の 一歩で 動きながら 入る
3.23(music.s:LV_KIND が 立てば 止める〈題の 始めで LV_KIND を 0:電池の ごみ よけ〉。lvanim.s:犬は 2 段〈16 ドット〉後ろを 同じ 足並みで、主人公が 歩き 出して から 出す。主人公は 下り 切ったら 消える。犬が 下り 切る まで 演出を 2 段 延ばす〈la_hop の 行き止まり LA_CAP〉)
ペットが 何か した 時(死体を 拾う など)は「(名前)が〜を拾った!」に
3.28(dog.s → uiwin.s dg_mpick・dg_mdrop:見えて いれば「ポチは〜を拾った。」「〜を置いた。」〈m_dog_pick・m_dog_drop〉。バンク 13 の 空きの ため status2.s の jsr+rts を jmp に)
部屋に 入ったら 入った 位置から 部屋 全部が 明るく
3.31(reveal.s rv_setup:新しい 明るい 部屋は いつも 部屋 まるごと〈段 3〉。波の 中心は 入った 位置の まま。段の 計算と RV_D・RV_LX・RV_LY〈$066C〜$066E〉を 外した。扉に 立って 約 30 フレームで 部屋 全部)
部屋を 出る 時の 暗く なり方が 逆。主人公の 背中に 向かって 暗く
3.31(mv_upd → rw_walk:主人公からの 輪〈チェビシェフ距離〉の 順。見えなく なった マスは 遠い 輪から〈奥から 背中へ〉、見える ように なった マスは 近い 輪から。枠と 3×3 を 2 回〈見える ように・見えなく〉に 分け、mv_cell は 向きの 合う 方 だけ。場所を 作る ため score.s を バンク 12 → 30〈F30・CODE1 の far30。30〜61 は $8000〉。左右 どちらの 扉でも 奥から 暗く なる ことを 確かめた)
入った ことの ある 部屋の 暗さが 外れるのも 逆
3.31(上と 同じ:見える ように なった マスは 主人公から 近い 順。右の 扉から 入り直して 主人公の 周りから 左へ 広がる ことを 確かめた)
なんか ワープした? これは 正しい? 壊れた 壁が ないから はまり? もう 続けられない?
不具合では ない:瞬間移動の 罠で 金庫(壁に 囲まれた 2×2)に 飛んだ(原典 hack.trap.c vault_tele)。探して 待つと 番人が 来て「名乗る」→ 金を 置いて ついて 行けば 通路を 掘って 出して くれる(報告の 状態から 確かめた)
犬の 横向きを 柴犬の 絵を 参考に。持ち物で 物を 選んだ 時の 値の 変わる バーは 今の バーで 新しい 値を(色が 無理なら 増える 分を メッシュ)
2.99(own_art.py DOG_RIGHT:立ち耳・鼻先・巻き尾・白い 体に 灰の 腹〈題・職業選びの dog0・dog1 も 同じ 絵〉。fastui.s pv_set・pv_fix・pv_dirty:持ち物で 食べ物を 指すと 上の UI の 腹の バーの 3 マスに 今〜食べた 後の ドットを 白黒の 市松で 足す〈status2.s st2_service の バーの 後。持ち物の ループで st2_service〉、下の 行の 予告の バーは やめた)
メニューの 左を 8 ドット 詰める(窓の 幅は そのまま)/二層目へ 行った 時の 親の 指は 灰色/体力の 薬を 指した 時 体力の バーにも 予告/職業選びから 戻ったら「はじめる・つづける」の 大メニューへ/犬は サブメニュー:名前と 色を 3 段目で 選ぶ/犬の 正面・後ろも 柴犬に
3.00(mwin.s 項目を 列 3・指は 窓の 中。灰の 手袋〈gfx.py タイル 52〜55、fastui.s hd_dim〉。pvbar.s:腹と 体力の バーに 予告〈分かって いる 回復の 薬 114・124 は 最大の 回復量まで ディザ〉。titlefar.s TT_AO:戻ると 窓を 開いた まま。petsel.s を 3 段に:右の 窓に「【犬】/名前 ポチ/色 白」→ 名前(5 つ ずつ・◀▶ で ページ)か 色(白・茶)、親の 段には 灰の 指。色は DG_NM の ビット 4、職業選びの 犬の 絵も その 色。ゲーム中の 茶は スプライトの パレット 1 を 27・37 に〈指と 共用:メニューを 開く 間は 白に 戻る〉。own_art.py DOG_DOWN・DOG_UP を 柴犬に〈立ち耳・灰の 頬と 口元・後ろは 巻き尾〉。docs/dog_1027)
題の メニューも 指の 左を ほかと 同じ ように 8 ドット 詰める
3.01(titlefar.s:項目・言語の 選択肢を 列 11、言語の 見出しを 列 9、指を 11·8−10 に。窓の 幅は そのまま。docs/dog_1027/tt_after.png)
窓を 開いた 時の 指が 下から 動いて くる → 最初から 指す 位置に/指の 形と 犬の 正面を 直す/題の キャラの 色が 最初 おかしい/職業選びの 背景の 下が 赤い/武器の サブメニューで 上の UI の すぐ 下の 色が おかしい/犬は どうぐの サブ窓の ように 窓を 出して「犬/名前 ハチ/色 白/◀▶選択 ⒷⒶ戻る」
3.02(① fastui.s hd_go:前の フレームに 出して いなければ 滑らず すぐ ② title2.s:顔ぶれが 変わった フレームに すぐ 書く、パレットを 読み直したら 書き直す〈main.s load_pal_xy〉③ role.s:行 28〜 も パレット 0 ④ wlay.s vb_attr:パレット 2 の 紺を 灰に〈fastui.s vb_restore で 戻す〉、mmenu.s it_at1:窓の 間は アイコンの パレット 1 を 0 に ⑤ petsel.s:枠・見出し・区切り線の 窓、上下で 行・◀▶ で 名前〈16 を 回る〉と 色〈白・茶〉を その 場で 替える、Ⓐ Ⓑ で 閉じる。指は 親指つき・袖口と つながった 形〈gfx.py〉、犬の 正面は 外へ 開いた 耳・丸い 顔〈own_art.py〉。docs/dog_1027)
犬の 見出しは 日本語 お供・英語は 原典どおり Dog/◀▶ は 窓の 左に 寄せる/初めは 白(一覧の 一番上)、2 回目からは 前の 選択(職業も)/ゲーム中に 使える パレット 全部を 犬に/サブ窓を 出す 間は 親の 窓を 灰・下の 案内なし(どうぐと 同じ)
3.03(petsel.s:見出し「お供」〈英語 Dog:原典の 呼び名 little dog〉、案内は「◀▶選択」左・「ⒷⒶ戻る」右、色は 白・茶・青〈主人公〉・赤〈敵〉・黄〈光線〉の 5 つ〈DG_NM ビット 4〜6。sprite.s dg_gpal・lvanim.s〉。窓の 間は BG パレット 0 を 灰に・属性は 窓の 中 だけ 1・職業の 絵は 灰に した スプライトの パレット 3・犬の 絵は パレット 2 に その 色、下の 案内は 網で 消して 閉じたら 戻す。role.s:前に 選んだ 職業を 電池の RAM $67FD〈$A0 の 印。初めは 戦士〉。mmenu.s mm_shint:ページの ある サブ窓も「◀▶」を 左・残りを 右詰めに〈根絶の 巻物・名付け〉。docs/dog_1027)
共通化(8bit コンソール向けの 汎用 UI:メンテナンス・省エネ・今後の ローグ系にも 使い回す)/言語も サブ窓式で 同じ 決まりに
3.04(新しく uiwin.s:枠と 区切り線 uw_box・網 uw_mesh・字 uw_at・右詰め uw_atr・案内 uw_hint〈◀▶ など 左の 文 + 右詰め〉・親を 灰に uw_dim〈BG パレット 0 の 網と 字を 灰、属性は サブ窓の 中 だけ 1〉・VBUF 待ち uw_room。犬の 窓〈petsel.s〉を これに 載せかえ、言語は 題の 窓を 灰に して その 上に 出す サブ窓に〈titlefar.s tt_lwin・tt_lclose:親の「言語」に 灰の 指、閉じたら 属性を 題の 元に 戻して 題の 窓を 描き直す。題の 字の 置き場に 使って いない タイル $4C〜$D7 を 足した〉。docs/dog_1027/lang_sheet.png)
共通化の 続き(どうぐの 動作の 窓から)
3.05(mmenu.s mm_box・mm_boxs〈区切り線 つき〉を uiwin.s uw_box の 薄い 入口に:職業選び・解説・階の 札・動作の 窓が 同じ 枠の コード。動作の 窓の 見出し・動作・案内も uw_atm・uw_hint で 置く。fastui.s vb_sep を 消した。uiwin.s の 案内は uw_hint〈右詰め〉・uw_hintl〈左の 文 つき〉に 分けた。docs/dog_1027/m_sheet.png・card_sheet.png)
共通化の 続き(ゲーム画面の 窓)
3.06(vb_attr を uiwin.s uw_dim に 載せかえ:uw_dim に「外の 区画は 控えた 属性の まま」〈UW_SA〉と「1 番も 灰」〈UW_G1〉を 足した。wlay.s va_read を 消した。フィールドの 上の 窓〈mwin.s〉は スクロールと 絵の 表の 貸し借りが 要るので 別の 作りの まま、決まりは 同じ。部品と 決まりを docs/ui_kit.md に まとめた〈新作にも 使う〉)
今の 柴の 横向きが すごく いい。正面・背面の 顔の 横幅を 少し 縮めて/指は 手のひら(手の 甲)を 正面に、指は 見えない ほうが いい(ドットが 少ない):参考の 絵 6 枚
3.07(own_art.py DOG_DOWN・DOG_UP の 顔を 2 ドット 細く〈正面 12・背面 10〉。指の 候補を 手の 甲の 形に 作り直した:G 人さし指と 親指 だけ・K 角を 丸く・H 灰の 袖口・I 下に 灰の 影・J 太い 指〈tools/art_cand.py → docs/art_cand/cursor.png〉。選んで もらって から 入れる)
犬の 正面・背面:足が ぎざぎざに 見える ので 後ろ足と 前足の 間の 黒線を なくす/横の 尻尾に 合わせて 背面の 尻尾は もっと 上まで/頭を もう 1 段 細く
3.08(own_art.py DOG_DOWN・DOG_UP:左右の 足を 1 本の 太い 足に〈白い 靴下も〉、背面の 巻き尾を 首の すぐ 下〈横向きと 同じ 高さ〉、顔は 正面も 10 ドット。docs/art_cand/dog_final.png)
GPT にも 案を もらった:犬は これで いけるか・指は まん中の 案で(AI の 協業で 仕上げ)
3.09(GPT の 絵〈docs/art_cand/gpt_ref.webp〉を 16×16 に 起こした:own_art.py の 犬 3 向き〈正面 顔 12・裏白・足は 体の 色+白い 靴下、背面は V 字の 耳と 白い 渦の 巻き尾、横は 丸い 巻き尾と 白い 胸・腹〉。横向きは GPT の 絵が 18 ドット 幅 なので 胴を 2 ドット 詰めた。指〈gfx.py〉は まん中の 案:手の 甲・親指・丸い 指先、ほかの 指は 描かない。灰の 指も 同じ 形。docs/art_cand/dog_final.png・new_cursor_shots.png)
背面・正面は 渡した 絵で/ドット絵エディタが ほしい:指・物の 絵・敵・主人公を ウェブで 見て その 場で いじれて 保存で 反映、動きの 見本が ループで 4 方向
3.10(背面・正面を 渡された 絵どおりに。絵の 元を art/sprites.json 1 つに 集めた〈ROM は 移す 前と バイト 単位で 同じを 確かめた〉。tools/pixed.py+tools/pixed/index.html:主人公 6 職業・お供・指・敵 63+形 11・床の 物・罠・死体を 一覧から 開いて 描く〈ペン・塗る・スポイト・左右 対称・動かす・反転・戻す〉、色の 組を 替えて 見る、ROM に 入る コマ〈足を 上げる・揺れる〉、動きの 見本〈4 方向を 回す・歩く・指は 滑る・ちょん〉、保存で ROM と 遊ぶ ページを 作り直して 右で すぐ 遊べる。起動:py -3.14 tools/pixed.py → http://localhost:5210/)
攻撃時の エフェクトも エディタに 入って いるか
3.10 の まま(ROM は 同じ):4 つを art/sprites.json へ 移し〈ROM は バイト 単位で 同じ〉、エディタに「エフェクト(攻撃)」:倒した 印は 左右 対称で 描く・1/2 → 3/4 → 全部 と 広がり 点滅する 見本、光線は 主人公の 前から 1 マスずつ 伸びる 見本。踏み込みの 動きは 絵では ない(位置を ずらす)ので 対象外。狭い 画面では 動きと ゲームを 下に)
エディタの 中央と 右の ペインを 統合・全般的に シンプルな UI に・色を 選ぶ パレットは 大きく/右の ゲームの プレビューは いらない(いじった 物を すぐ 見られる わけでは ない)
ツール だけ(ROM は 同じ):2 列に(一覧・作業)。作業は 上に 道具 1 列〈向き・ペン 塗る スポイト・左右 対称・↶↷・その他〈動かす・反転・写す・貼る・ます目〉・色の 組は 選ぶ 欄〉、下に 編集の 絵と 横に 大きな パレット〈74 ドット・番号と 名前〉と 動きの 見本。ゲームの プレビューは 外した
メッセージが でなく なった?
3.11(uiwin.s sram_wipe を main.s reset から:電池 RAM の 作業の 区画〈$7000〜$717F・$7300〜$75BF・$7735〜$77FF・$7A00〜$7BFF・$7D00〜$7DFF〉を 0 に。ログ・状態・セーブは 残す。報告の 電池 RAM の まま 起動して 敵との 文が 出る ことを 確かめた)
現代アレンジ(2020年代)の 改造:すでに 歩いた 同じ 通路で あれば 犬も 敵も 表示
3.11(follow.s cs_corr を mon2.s cansee から:現代アレンジ(2020年代)で 主人公が 通路・扉に いれば、見た ことの ある 通路・扉 だけを たどって 届く マスも 見える。たどり方は 斜め先・横先・縦先 × 両方向〈角 1 つの 曲がりまで〉。報告の 地図で L 字の 先の レプラコーンが 見えて「〜がいた!」)
動きが 取られて いる 時にも メニューは 開けて タイトルに 戻れる。出来ない 行動は メニュー上 灰色・押しても 実行 出来ない 効果音
3.11(lvcard.s hl_wait → mmenu.s mm_hlst:麻痺・気絶・酔いの 間も START で メニュー。タイトルに戻る 以外は 灰〈mwin.s:字形を 市松に 間引く。本当の 灰は パレット 1 の 色 1 が 上の UI と 共用・行が 属性の 区切りと ずれる ので 使えない〉、指は タイトルに戻る から、灰の 行の Ⓐ は SFX_NG「ブブッ」。閉じても 手は 進まない)
見えて いる 部屋・通路は 今の まま、前に 開けたが 今は 見えない 部屋・通路は 網を かけた 見た目に(見本 A〜E から C「4 点に 3 点を 消す」)
3.12(現代アレンジ(2020年代):gfx.py MESH_CELLS で 床・通路・壁の 前面・天面・下り・上りの 網の 絵を 空きの 組 $04・$0C・$4C・$F0・$F4・$F8〈見た目 K61・63・15・56・57・58〉に。main.s ek_kind → follow.s mk_kind:視界の 枠〈vx0〜vy1〉と 主人公の 3×3 の 外は 網の 見た目〈扉・字の 床は 床、ひびの 壁は 壁。物・罠・池は そのまま〉。vis_update の 後 mv_upd:前と 今の 視界で 見え方が 変わった マスを 描き直す。dog.s scan3・mwin.s の 写る 組の 印を K56〜 も〈& $7F〉、メニューの 印は 上の UI の すぐ 下の 行から〈網の 組が 字に 貸されて 崩れた〉)
題の 具材の 配置を 見直し:いつもの メニューの 窓で「ダンジョンへ」、案内は「ST Ⓑ Ⓐ決定」
3.13(titlefar.s:点滅と 字の 控え〈TT_PB〉を やめ、題を 描いたら すぐ TT_TOP の 窓〈列 8〜23・行 12〜17:t_dun・t_dunh〉。ST・Ⓑ・Ⓐ で 今までの 題の 窓〈はじめる・つづける・解説・言語〉へ。題の 窓の Ⓑ は この 窓に 戻る。原作・©・版は 窓の 下に 残す)
題の 案内は ボタンの 間を 空けず「STⒶ決定」、Ⓑ は 表示から 抜く
3.14(loc t_dunh:ST・Ⓐ を 続けて。Ⓑ は 押せば 今まで どおり 題の 窓へ)
使って いない 元ルールの コードは 外す(戻したく なったら 元を 見て 移す)
3.15(git タグ last-with-original-rules〈V3.14〉を 付けて から、G26 の 分かれ道 17 か所を 現代アレンジ(2020年代)の 側 だけに:防具・食べる・祈る・彫るの 手間 なし、祈るは メニューに 出さない、名前を 全部 知って いる、空腹 2/3、迷路は 16〜18 階、通路の 見通し・網の 絵。手間の「…(k/n)」〈m_busy_off/on/eat/pray/engr〉と main.s の 待ちも 外した〈まひ・気絶・酔いの「まだ動けない…(k/n)」は 残す〉。固定バンク CODE は 156 バイト 空いた)
指は 人差し指で 差す 手に。◀▶(ページ・犬の 名前・言語)は 押す たびに その 向きの 三角が 1 ドット 大きく・逆が 小さく。階の 看板の 上下を 詰める。タイトルにも 案内(はじめる・つづける・解説・◀▶言語 Ⓑ戻る Ⓐ決定)
2.92(gfx.py:指の スプライト 62・63 を 手 ☞。職業選びの 背景の 指〈G_PR〉も 手。loc.py:◀ 大〈〉・▶ 大〈〉。fastui.s lr_kick・lr_tick〈FAR27〉:字形の 控え〈GC_*〉か LR_TL〈職業選びの 犬の 名前〉の ◀▶ の タイルに 字形 だけ 差しかえ、8 フレームで 戻す〈VBUF が 空く まで 待つ〉。題・職業選び・持ち物の ページ・解説・根絶・名付けで。題の 窓:言語の 行を 案内「◀▶言語 Ⓑ戻る Ⓐ決定」〈英語「◀▶LANG ⒷTOP ⒶOK」:題の 字の 置き場が 18 字・窓を 広げると ゲームの 上の UI が 化けた〉。看板:行 10〜13〈属性の 区切りで 4 行 より 詰められない〉)
サブメニューの 決まり:親の 選んだ 行に 指を 暗い 色で 残す・サブは 見出し → 区切り線 → 中身 → Ⓑ戻る Ⓐ決定。「タイトルへ」は「タイトルに戻る」(はい/いいえ)、1 階の 階段は「地上へ出る」(はい/いいえ)。全体を この 決まりで
2.92(mwin.s mw_tile:MW_SEPF〈$07F8。mm_spass が 立てる〉で 上の 枠 + 3 行に 区切り線〈枠の 上の 線の 絵〉。mm_hdr:▽ を やめ 親の 行に 暗い 指〈mw_pcur:OAM+248・パレット 1 の 茶〉。中身は 行 6〜(偶数)・案内は 奇数 行。足元〈物が 1 つ なら 見出しが 物の 名前〉・タイトルに戻る・はい/いいえ〈地上へ出る・池・店主・番人・アイスボックス・名前を付ける:問いは 見出しの 形に〉・方向・瞬間移動・根絶・名付け・持ち物の 動作の 窓〈vb_sep・vb_phand〉。根絶・名付けの ページも「◀▶n/m」)
指は 白で。カーソルを 動かしたら 動いた 先で 少し 左右に 動く 感じ。サブの 窓の ページは ◀▶ を「Ⓑ戻る」の 左に 出し、1/13 は 要らない(ページが 変わった ことは ◀▶ の 拡大で)
2.93(gfx.py:指は 黒の 縁・白の 中〈パレット 3〉。題は パレット 2 を 指 だけに〈人・犬は 0〜1:title2.s〉、解説は kd_spal の 3 番を 白、職業選びの 背景の 指も 白。main.s cn_x:指の y が 変われば 12 フレーム ゆらす〈+3 +4 +3 +1 −1 −2 −2 −1 0 +1 +1 0。frame で 進む〉:mw_cur2・mm_spr・inv_cursor・kd_cur・title_cursor。根絶・名付け:案内を「◀▶ Ⓑ戻る Ⓐ決定」〈tx_cl_hint_lr〉、n/m は 出さない)
START メニューの 指が 出ない(↓ で 左上に 茶色の 指)/無敵の 日本語で 識別・願いの 後に 地図が 岩 だらけ・下の 窓が 消える
2.94(mw_pcur・mw_pcoff を mw_cur の 前へ。main.s A0_SW〈ZP〉:m8_emit・hb_chr が 切りかえる 間 1、NMI は その 間 表を 写さず 次の NMI で)
ウインドウ一覧の 不揃い 1〜6 を 直す(判断は まかせる)・前と 後の スクショ
2.95(①mw_cur2:サブの 窓は 指を 1 字 左〈MW_SUB〉 ②根絶 GN_PER 4・名付け VC_PER 8〈2 列 × 4〉、案内は 行 15 ③方向・識別・ログを「Ⓑ戻る」「ⒷⒶ戻る」、願いの 案内「↑↓選ぶ ←→種類 Ⓐ決定」 ④inv_mode 2 浸す・3 入れる で 案内を 出し分け〈kaisetsu.s ih_mlo〉 ⑤足元の 名前・名付けの 見出しは 24 字まで〈窓は 左へ ずれる〉、願いの 題は 英語「Wish: 」 ⑥ms_hid:killer ≧ $FA〈脱出〉なら Ⓐ進む・game_start で killer を 0 に。前と 後の 比べ:docs/fix_1026/1〜6.png)
指は 袖口つきの 手袋(案 C)、手袋と 袖口に 白黒の ディザで 立体感。動きは おすすめ(滑る・着いたら 指 ちょん・待つ 間 前後・Ⓐで 突き出す)
2.96(gfx.py:16×10 の 手袋〈d = 白黒の 市松〉、左半分 タイル 62・63・右半分 50・51〈使って いない 巻物の 絵の 所〉。fastui.s hd_put・hd_put2・hd_dim・hd_press〈FAR27〉:行き先へ 残りの 半分ずつ 滑る〈4 フレーム ほど〉・着いたら 指 +1 +2 +2 +1・64 フレームに 8 フレーム 1 ドット 前・Ⓐで 3 ドット 4 フレーム〈メニュー・はい/いいえ・足元・持ち物・動作・題〉。右半分 = 前の 指の 所・左半分 = OAM 252〈248〉。親の 暗い 指も 2 枚〈OAM 240・244 と 4・8〉。手袋の 右端が 字の 2 ドット 手前:メインの 窓は 項目を 列 4 へ・幅を 2 列 広げた〈mw_mwid 日本語 11・英語 13。サブを 出す 時に メインの 案内の 行を 消すのは サブの 左まで〉、英語の「タイトルに戻る」は Quit。main.s cn_x は 廃止)
指は 袖より 指(手袋)に ディザで 立体感、袖口は 灰。ペットの 基本色を 白(指と 同じ 色)。言語・ペットの 選び方は 行の 頭の ◀▶ を やめ ほかの メニューと 同じ 形
2.97(gfx.py:手袋の 下側・握った 指に 白黒の ディザ・袖口は 色 3〈灰〉。スプライトの パレット 1 を 黒・白・灰〈犬と 指〉:fastui.s hd_put は パレット 1、親の 暗い 指は パレット 0。題〈tt_col 0 と 犬〉・解説〈kd_spal 1〉・職業選び〈cl_spal 1、犬は パレット 1〉も 白・灰。題の 窓:はじめる・つづける・解説・言語、言語を 選ぶと 同じ 窓が「言語/区切り線/日本語・ENGLISH/Ⓑ戻る Ⓐ決定」〈tt_menu を STR へ 移した:バンク 14 が いっぱい〉。職業選び:一覧の 7 つ目に 犬の 行〈名前の 頭の ◀▶ は 消した〉、指を 合わせると 右の 窓に「【犬の名前】」と 6 つ ずつの ページ、Ⓐで 指が 右へ・上下で 選ぶ・左右で ページ〈◀▶ の 手ごたえ〉・Ⓐ 決める・Ⓑ やめる、案内は「◀▶ Ⓑ戻る Ⓐ決定」〈petsel.s:STR〉)
ゲームプレイの UI・窓を 決まりで 全体 見直し(監査 高 6・中 11・低 10)
2.98(ident_one は スタックに。kaisetsu.s 目次は 毎フレーム kd_cur。wish.s は 自分で hd_put・ほかの スプライトを 消す。inv_close_noturn で OAM 0・252・248 を 消す。足元の 見出し 19 字・並べる 名前 14 字。tc_put 下は 6 行。題の 指 列 12。職業選び:手袋の スプライト〈犬の 名前を 選ぶ 間は 犬の 行に 暗い 指〉・背景の 指の 字は 空。fastui.s ml_cap:語の 切れ目で 切る〈動作・足元・名付けの 見出し〉。金庫番:台詞は 下の 文〈m_vault_q〉・見出し「番人に名乗る/Answer guard」。足元の 窓:階段と 聖呪文を 両方。前と 後:docs/audit_1026)
続く 状態異常を 上の UI に:顔(ニコ 普通/困る 異常)+ 日本語 4 字まで。全部を 1.5 秒ごとに 切りかえ。経験の バーと 8 ドット 空ける。良い 状態は ニコ顔。空腹は 衰弱・気絶 だけ。階段の 向きは 階段の アイコンの 下、見つけて いない・階段の 上は ・
2.89(fastui.s st_stat:石化・食中毒・気絶〈赤い 困り顔・赤い 字〉、衰弱・盲目・混乱・罠・怪我・鉄球〈赤い 困り顔〉、浮遊・透明・加速〈ニコ顔〉、普通。列 17 空き・18 顔・19〜22 字〈トロフィーの 手前まで〉。loc.py ニコ顔 ・困り顔 。text.csv st_0〜12〈英語 4 字〉。status2.s:字の 上の バイト $40 で 色 1〈赤〉・レーダーを 列 0 に。s2_score は 列 23 から)
2・3・4:魔除けを 持って 帰る 通し・出す 前の 耐久試験・英語の 全部 見直し
2.90(tools/endgame.js:18 階で 魔除けを 拾い 1 階まで 上って 地上へ。盗まれたら 持たせ 直す。tools/deploy.py:出す 前に 耐久 2 本〈止まる・暴走・黒い 画面で 止める〉。英語:文言 13 件・物の 名前の 頭に a / an〈inv.s o_art・loc.py ojvow。That・Your の 後と 文頭は {ON} で 付けない〉・根絶の 一覧は the を 取る・cldesc.s 網は 行 7〜23 続けて・方向を 聞く 間は 下の 案内を 出さない)
状態の 顔は 黄の 塗りに 顔(ニコ 平常 は 日本語でも OK)、異常は 困った 顔で 字は 赤
2.90(loc.py EXTRA8 に 色 2〈n:紺〉、顔は 黄〈色 1〉の 塗り・目と 口は 紺。顔の 16×16〈列 18・19〉だけ パレット 3〈fastui.s sc_attr $2BEC〉。異常 0〜8 は 字を 赤、普通は「OK」。赤い 字は 面 1 から 字の 点 だけ 抜いて 網を 残す〈status2.s。VBUF-8 は a: で 絶対番地に〉)
1 階の 最初の 部屋 だけ 暗い
不具合では ない:原典の 部屋の 明るさ(rnd(階) < 10 かつ rn2(77))。1 階でも 部屋ごとに 1/77 で 暗い
下の 窓で ボタンを 選ばせない:サブの 窓に まとめる
2.90(rooms.s iw_open:はい/いいえ と 同じ 形の 説明の 窓。方向〈どの方向?・十字 方向・SE 上・Ⓑやめる Ⓐ足元〉と 階〈何階へ瞬間移動?・十字 階を変える・Ⓑおまかせ Ⓐ決定〉。タイトルへ戻る? は はい/いいえ の 窓。瞬間移動の 場所は 地図を 隠さない 形を 相談中)
瞬間移動の 場所も サブの 窓に(案 B:カーソルの 反対側の 隅に 小さい 窓、近づいたら 逃げる)
2.91(tctrl.s tc_pick15:rooms.s iw_open 種類 2「どこへ瞬間移動?/十字 場所を選ぶ/Ⓑおまかせ Ⓐ決定」。隅は IW_SIDE〈ビット 0 左・1 下:右端 +29 まで/列 +2 から・4 マス 下〉。カーソル〈2×2 の 8 ドット〉が 窓に かかれば ^1・^2・^3 の 順に かからない 隅へ 開き直す〈tc_fit〉。窓の 間は 画面を 動かさず、まん中に 寄せた 時との ずれが 横 96・縦 48 ドットを 超えたら 閉じて 寄せて 開き直す〈tc_vis〉。開き直しは 約 0.5 秒。方向・階・場所の 間は 下の 窓の 右の 案内を 出さない)
床の ブロック感を さらに 薄く:破線を 弱く・間隔を 空ける/壁の 上面も もう 少し つながった 風に
2.70(tools/gfx.py:床の 破線・点線を 4 ドットおきに。壁の 上面〈wtop・wtop_cr〉の 継ぎ目を 1 マスに 1 本、4 ドットおきの 点に)
セーブデータが ある 場合は 続ける に カーソルを あてる
2.71(titlefar.s:窓を 開く 時 t_sel = T_SV〈セーブ あり 1 = 続ける、なし 0 = はじめる〉)
ログの あと 戻った 時の ボタンの 表示が 遅れる
2.72(fastui.s log_tall の 閉じ:書き戻しの 前に 窓を 閉じた 扱いにし、行ごとに ms_hint を 呼ぶ。案内は 約 4 フレームで 出る)
階段の アイコンの 下に 今の 階の 階段 見つかったか フラグと レーダー:まだ *、見つかったら 現在 位置からの 矢印、階段の 上では ・
2.73(status2.s s2_radar:2 行目 列 2〈階の 数字の 下〉に 下り 階段の SEENBIT で */8 方向の 矢印/・。毎フレーム 見る〈同じ なら 書かない〉。地上・階段の 無い 階は 空白。TX・TY は 使わない)
フルチェック(試験役 4 人)で 見つかった 不具合 その 1
2.74(fastui.s s2_score・stline.s 金:sc_v を 戻す。dog.s ob_oiy・ob_oit〈STR〉を 足し eat.s は dg_nut、score.s・shop.s は それを F3 で。dog.s ac_dif で 差を 毎回 計算。use.s s_light:混乱なら litroom(0)。s_tame6 を バンク 27 へ 移し " &@12" を 断る)
フルチェックで 見つかった 不具合 その 2(見た目)
2.75(mwin.s:貸す 組を 探す 時 メインの 窓の 列でも 窓より 下の 行の マスは 見る。mw_items を 分けて mmenu.s mm_sub_off から 項目も 描き直す・重なった 列の 描き直しは 右の 枠〈mw_mwid〉まで。fastui.s vb_restore:BG 0 を 持ち物の 色〈it_pal〉で 戻す)
フルチェックで 見つかった 不具合 その 3
2.76(loc/text.csv r_escam の 英語を「escaped w/ amulet」〈窓は 18 字〉。fastui.s s2_score:地上〈dlevel 0〉は 得点 0)
フルチェックの 残りを 全部 なおして(その 1)
2.77(fastui.s wr_on・wr_off〈原典 doweararm・doremarm の 文〉、scr_cf・scr_sc0〈原典 hack.read.c の 混乱〉、tele_go〈動く 前に 隣の 犬 だけ〉、rp_kby〈英語は 見出しの 下に killed by・名前は 次の 行。r_killed・r_trap・r_fire・r_level の 英語を 短く〉、q_done〈ml_fb で 空の 行を 積む〉、sh_food を バンク 9 から 移した。mon2.s:敵が 動く 前に sn_new。mmenu.s:足元に 4 つ まで 並べる。shop.s shk_pick_pr:文の 前に 値段。wlay.s vb_attr:属性 行 1 の 上の 段は 残す)
フルチェックの 残りを 全部 なおして(その 2)
2.78(fastui.s ms15:状態 6 で 先に 行 26 を 空に。debug.s d_kill:shk_m = $FF、d_dnst:階段が 無ければ 何も しない、d_goto:u_utrap = 0。mwin.s yn_loop:YN_LB なら 名乗る。fastui.s rp_spill:座布団と 同じ 属性の 上下の 行を 黒く。※デバッグの 階 作り直しが 後で もう 一度 作られる 件は 階の 見出しの 演出の 後に 作る ため で 不具合では ない)
残りも 直そう(CODE の 空きを 作って)
2.79(use.s chwepon を fastui.s〈バンク 27〉へ:CODE 約 100 バイト 空き。s_ench_arm:上げた 後に 名前。invui.s:動作の 前に NM_POST = 0。ring.s:守りの 指輪は F27 ring_ac で ac_say。fastui.s scr_rd〈目が 見えない:呪文を唱えると〉・lit_pre〈原典 litroom の 文:急に暗く・さらに暗く・少し明るく、目が 見えなければ 無し〉)
ログの リファクタ(開くのが 遅い:SELECT から 約 21〜27 フレーム)
2.80(作る 間 log_on = 2:NMI が ライン 118 の irq を 種類 2 に して、そこから 下は 描かずに 紺〈すぐ 出た ように 見える〉、main が 待って いれば irq が VBUF を 流す〈描いて いない ので 時間が ある〉。VB_XTRA で 150 バイト まで 積み、NMI は 90 以下 だけ 流す。下の 窓の 右端の 戻しは 案内の 列 だけ。CODE の 空きの ため litroom も バンク 27 へ。開くまで 27 → 16 フレーム、押して 2 フレームで 紺)
ログを 限界まで 速く
2.81(dog.s scan3:写る マスの 組の 印を バンク 3 で 1 回〈マスごとの F3 disp_kind 約 200 回を やめた〉。fastui.s lt_build:控えを ハッシュ表〈LT_HSH $68C0・64、mklev の 矩形を 借りる〉で 引き、あれば バンクを またがず VBUF も 待たない。lt_room は 入るまで 待つ。NMI は 作る 間 いつも VB_XTRA = 60。開くまで 16 → 11 フレーム〈2.79 は 27〉)
ログを 限界まで 速く(続き)
2.82(fastui.s gc8:LT_NS = $A5 なら 探さない〈lt_build が 表に 無いと 分かって いる 時 だけ。ほかの 値は 探す:$6841 は mklev の 座標が 残る〉。開くまで 11 → 10 フレーム〈2.79 は 27〉)
積み残しに 対応
2.83(kaisetsu.s inv_help:inv_mode なら i_help_id。loc/kaisetsu*.txt 基本 4/4 を 現代アレンジ(2020年代)に。mon2.s mp_cur〈見えなければ MON_IT 153「何か/it」、英語は 文頭 It:ms_cap・log_add〉。zap.s hurt_mon:倒す 時も zhit_msg。shop.s sh_say_n:jmp sh_say〈拾った 時の「お代は」は 名前の 値段と 重なる ので 出さない〉。fastui.s:LOG_L の 上の ビットに 続きの 印・ログの 一番 上の 続きは 空。main.s disp_kind:扉の 下が 扉なら 上で 決め、上も 扉なら 縦)
根絶の 巻物:見た 敵の 一覧から 選ぶ(原典は 字を 打つ)
2.84(fastui.s gn_read:見た 敵〈MH_SEEN:pulse.s sn_new が 見えた 種類を 全部 印〉で まだ 根絶して いない 種類を 1 列 5 行・ページで 選ぶ。Ⓑ は やめる〈巻物は 消える〉。選んだ 敵の 字の 仲間を GN_B〈$6F04・9、新しい ゲームで 0〉に 印・今の 階の 仲間を 消す。use.s gn_chk → mon.s makemon は 根絶 済みを 作らない。混乱 または @ を 選ぶと「人間を全て消し去った…」で 死ぬ〈死因 trap_27 根絶の 巻物、現代アレンジ(2020年代)は 立ち上がる〉。mp_cur を CODE へ。mwin.s mw_prep:メインの 窓の 下を 飛ばすのは mw_main の 時 だけ〈ほかの 窓で 扉が 崩れた〉。使って いない 文 12 個を 消した〈文の 置き場 32KB〉)
罰の 巻物の 鉄球と 鎖を 原典 どおりに
2.85(fastui.s bc_*:鎖〈96〉と 鉄球〈95〉を spe = 1 の 物として 足元に。BC_PUN〈$6F0D〉。歩く 前〈try_move〉:鎖が 届かなければ 鉄球を 引きずる〈鉄球を 鎖の 所・鎖を 今の 所、2 手〉、持って いれば 鎖 だけ、重ければ 引きずれない。鎖は 拾えない。階を 移る:new_level の 頭で 外し place_dog で 足元へ〈上り「やっとの思いで」・下り「転げ落ちた」1〜3 と 2/3 で 鉄球 1〜20・落ちる 4/5 で 頭に 1〜25、死因 trap_28 鉄球〉。投げた 鉄球に 引っぱられる。解呪の 巻物・鉄球を 無くすと 解ける。もう 罰なら「鉄球が重くなった」。CODE の 空きの ため moverock を STR へ。使って いない 文 16 個を 消した)
縦の 壁が 出入口で 切れる 所に 壁的な 柄(側面が 分かる 感じ)
2.86(main.s disp_kind:壁の 下が 扉・LDOOR でも 前面〈K_WFRONT・ひびは K_WCRF〉)
残りタスクを 順次(耐久試験・メモリ一覧・鉄球の 重さ・罠から 引っぱる・骨・根絶の ページ・CODE の 空き)
2.87(tools/soak.js 作り直し:ゲームに 入り でたらめ 操作・死んだら 入り直し・無敵なら 3000 フレームごとに 下りる・止まる/暴走/黒い 画面で 画面と 状態を 保存 → 見つけた:持ち物の 前の 行の lt_build が 空に して いない ハッシュ表を 回り続けて 止まる〈V2.81 から〉。表は ログを 作る 間 だけ に した。docs/memmap_table.md 作り直し・メモリと保存の一覧に 2026-10-24 の 番地。use.s ow_base:罰の 鉄球は 100 + 15·(spe − 1)、重ねて 読むと spe + 1。投げた 鉄球で 落とし穴・トラバサミから 引っぱり 出す〈トラバサミは 足の けが・2〉。bones.s:鉄球の spe を 0。根絶の 見出しに「n/m」。解説の ページを 空いて いた バンク 28・29 へ〈文の 置き場 約 5KB 空き。kaisetsu.s kd_sbv〉。timeouts を STR へ〈CODE 約 240 バイト 空き〉)
文を 送る 間 右下の ボタンの 案内が 消える/ログを もう 少し 速く
2.88(fastui.s:案内の 列の 名前表を 固定〈行 26 = 偶数・27 = 奇数:ms_hcol〉。ms_mrow・ms_blank・美咲の 文は 案内の 列を 書かない〈文は 24 字で 折る〉。案内は 上下の 入れかえ・送る たびの 描き直しを やめた → 送っても 消えない。ログを 開く 時は 案内の 列を 空白の タイルに〈字を 描き直さない〉、閉じたら 戻す。ログは 開くまで 約 11 フレーム が この 作りの 限界〈積む 量を 170 に しても 同じ〉)
上の UI を 1 つの 共通の 描き方に(場面ごとに 挙動が 違う のを なくす)
2.66(invui.s inv_draw:上の UI は fastui.s lv_top15〈ゲーム中と 同じ NT_B 行 18〜・ui_top = 1〉。持ち物の 間は INV_UT で screen_on の たびに ui_top = 1〈動作の 窓・戻る 時も〉。持ち物の パレットは 0 = 水色・紺・白、2 = 赤・紺・赤、1・3 は ゲームの 色。invtop.s:状態の 写しを やめ、使った 時の 予告〈⛨・武・腹の バー〉だけ 上の UI の 真下 行 3〜4 に。これで 上の UI は ゲーム中・メニュー・足元・ログ・職業選び・階の 札・持ち物 とも 同じ もの)
下の UI・題・ゲーム中の メニューの 処理を 見直して 共通に できる 所は 共通に
2.67(mwin.s yn_loop・subwin_close:はい/いいえ と サブの 窓の 閉じを 1 つに〈rooms.s・mmenu.s・vcname.s〉。mmenu.s:nt_mesh は nt_fill へ、枠の 絵の 表は 1 つ〈invui2.s の 写し 160 バイトを 消し mm_tilesm〉、メインの 窓の 案内は mw_hintrow 1 つ。invui.s nt2_put:draw_mline・title_line の 縦 2 枚 書きを 1 つに〈固定 約 30 バイト 空き〉。role.s:使って いない cl_hint を 消した。持ち物の 動作の 窓・題の 上下にも かちっ。サブの 窓で 上の UI の ★ など の 網が 灰に なって いた のを 直した〈P3_DIM:NMI で 紺、irq 種類 3 で 暗い 灰〉)
持ち物を 使った 後の「Ⓑフィールド Ⓐどうぐ」(持ち物に 戻るか)は 特別なので 外す
2.68(postuse.s を 消した〈バンク 15 が 約 1.7KB 空いた〉。invui2.s iv_back は 名付け だけ、invui.s は 動作の 後 いつも フィールドへ。PU_ON の 参照・loc.py の 文を 切る 表・m_pu_hint を 消した)
薬を 飲むと 画面が 真っ黒(主人公と 犬 だけ)に なる 件を 調べる
2.69(sound.s sfx_play は A・X・Y を 壊さない〈ほかの 呼び元も 守る〉。loc.py に `.segment "FAR15"` を 戻した。build/pot_all.js で 16 種 すべて 飲んで 画面が 出る ことを 確かめた)
十字・B/A・START・SELECT の 位置と 大きさを STREET KNUCKLE 基準に(秘伝の タレへ)・素材とライセンスを クレジットに まとめ 重複を 見る
2.33(web/play_src.html:横は SK の askFit〈機能の 段を テレビの 下の まん中・テレビ + 段を 上下 まん中・十字と 丸ボタンは 下端を テレビの 下端に〉、DEV も その 段、.phlT は 3 列。縦は 顔 410・.mid を 下の まん中・DEV も .mid、コントローラーの 上 = max(h·0.5, テレビの 下 + 24)・倍率 = min(k, …)。1280×800・844×390・390×844 で SK と 同じ 数字を 確認。bookofsecrets 06_8bit コンソール画面.md 3-0 に 基準を 書いた。解説:素材とライセンス 2 ページを クレジット 1/3〜3/3 に〈原作と 原典ソース、フォントの 名義の 重複を まとめた〉、目次の 章は 6)
言語の 切りかえで 画面が 消える:メニューの 中 だけ 書き換えに
2.34(titlefar.s:LANG_B を 替えたら F14 tt_menu で 窓 だけ 描き直す〈画面は 消さない・指の 位置は その まま〉)
職業選びと 階を 移る 演出で 上の UI を ゲーム中と 同じに 出しっぱなし(ルーチンを 使い回す)
2.35(「上の 窓 だけ」の 型:ZP ui_top。NMI は ゲームの 外でも ui_top なら 上の 窓〈NT_B 行 18・表 $1000〉と ライン 21 の irq〈BG を 消して NT_A の y = 24・bg_tbl、2 ライン 後に BG を 出す〉。2 行目の 字・網は ui_top の 間 $1000 の 同じ 番号〈status2.s。文を 出さない ので 空き〉。screen_off が ui_top を 0 に。text.s st_redraw_now〈1 行目 だけ〉。職業選び:ゲームの パレット、draw_frame・st_redraw_now・st2_reset、毎フレーム st_service・st2_tick、窓より 上は パレット 0。札:fastui.s lv_top15〈draw_frame・st_build・st_redraw_now・st2_reset・st2_tick〉、lv_dark は パレット 1・3 を 暗く しない、札の 窓の 中 だけ パレット 1〈lv_attr15〉。使わなく なった st_stair を 消した〈FAR13 あふれ〉。直し:画面の 描き直し〈ms_redraw15〉で 行 26 の 案内の 列が 空白に なり Ⓐ の 案内の 上半分が 出なかった)
地図で SELECT:下の 窓で 上下に 過去の 文を さかのぼる(16 行。SELECT・Ⓑ・Ⓐ で 戻る)・解説にも
2.36(書き直しの 輪を 256 → 128 件〈$7300〜$757F、番号は and #$7F〉、空いた $75C0〜 に ログ:本文の 輪 320 バイト・16 行の 頭と 長さ・管理〈〜$7734、$7735〜$777F は 空けて おく〉。字は 詰めて〈上 = 0 は 1 バイト、ほかは 11 + 上・下〉。text.s ml_push から F27 log_add〈英語の 行頭 the は The に〉。新しい バンク 27〈FAR27・F27〉に fastui.s の log_*:log_view は 下の 窓の 3 行〈行 26・27 美咲・行 28〜29 k8x12〉を ↑↓ で 送り、抜けると 最新に。迷路を 作る 時は ログを 空に〈maze.s の 積みが 届く〉。kd_line8 の 幅を 変数に〈kd_lineW〉、空きの 網は mf_base + IVF_F。解説「操作」に SELECT、メニューの 説明の「祈る」を「聖呪文」に。使わない「わかった物」の 画面を 消した)
「まだ動けない…(k/n)」の 数が 化ける
2.37(fastui.s mu_tick〈バンク 15〉が msg_tx を 直に 呼び、{K}/{KN} の 数字の 字の 表 g_digit〈バンク 3〉を 別の バンクで 読んで いた → F3 msg_tx)
SELECT で 下の 窓が 上に 伸びて 13 行を 一度に(スクロール なし)。Ⓑ・Ⓐ で 閉じる
2.38(fastui.s〈バンク 27〉log_tall:上の UI は 上の 窓 だけ〈lv_top15〉、窓より 上は 岩〈マップの $10〜$13〉、行 14 に 線・行 15〜27 に 新しい 13 行を 美咲で〈kd_lineW・字は $14〜〉、閉じたら 地図を 描き直す〈inv_close_noturn〉。解説の SELECT から(↑↓)を 外した。下の 窓の 中で 送る log_view は 残して ある〈使って いない〉)
ログに 前の ゲームの 文が 出る・始めた ばかりで 1万点
2.39(main.s game_start で F27 log_clr。1万点は 一番 深い 階〈u_maxdl〉が 21 以上の 時の 加点〈1000 ×(最深 − 20)〉:DEV の 階 移動で 深く 行くと 残る。仕様の まま)
最初の 地下 1 階で もう 1万点(新しい ゲーム)
2.40(score.s sc_kill〈バンク 12〉が 経験の 表 mon_xpl・mon_xph〈バンク 3〉を 別の バンクで 読み、でたらめな 数〈例 $8AF4 × 16〉を 足して いた → F3 sc_xp〈固定 バンクの 小さな 読み出し〉。2.39 の「最深の 加点」と いう 見立ては 誤り)
ログの 時も 上の 地図を 出した まま。下の 窓と 同じ 形(一番 下 k8x12・上は 美咲・色も 同じ)、案内は 窓の 一番 上の 右に「ⓈⒷⒶ閉じる」
2.41(fastui.s log_tall を 作り直し:フィールドの 上の 窓〈mwin.s〉と 同じ 仕組みで 地図の 下に 窓〈マスに そろえ パレット 3、網 $FC〉。窓の 外に 写る マスの 種類 だけ 残して ほかの 置き場を 字に 貸す。main.s NMI に 分け方 3 番〈log_on:下の 窓を ライン 207 から → 上の 美咲と 8 ドット 間隔〉。美咲 11〜10 行 + 前の 2 行 + 今の 行。閉じる 時も 画面を 消さず 網 → 絵 → 属性・マスを 戻す。輪が 一周して 上書き された 古い 行は 出さない。SELECT でも 閉じる。バンク 1 が あふれた ので trap.s utrap_move を 固定へ)
ボタンの 案内の アイコンは START = ST・SELECT = SE に
2.42(loc.py に 2 字で 1 つの 角丸 SE・ST〈k8x12・美咲。私用 U+E030〜E033〉、文の Ⓢ を SE に〈ログ・持ち物・杖の 方向〉。ST は 字形 だけ 用意〈今 START の 案内は 無い〉)
SE・ST を もっと 角丸に/ログの 窓と 下の 窓の 境の 線を なくす/窓が 伸びる 演出は なく ぱっと 出す
2.43(loc.py:SE・ST の 角を 2 段 丸く。main.s irq @win:log_on なら BG を 消さず、先に 飛んで から 表を 替える〈窓の 網 $FC と NT_B 行 25 を どちらの 表でも 網に:$1000 の $FC・$FD に 網を 送り、ログの 間 だけ 行 25 を $FC〉。fastui.s log_tall:字形を 先に 全部 送る〈画面に 写る マスの 種類は 貸さない ので 見えない〉→ 下の 段から 1 フレーム 1 段〈2 行 + 属性 8 バイト〉で 約 6 フレームで 出す。閉じる 時は 今まで どおり)
階段を 下りた 後 フロアに 移る 時に 上 UI が 一回 消える
2.44(hb.s を 新設:ゲーム中から 階を 移る 間は 画面を 消さず、NMI が 上の 21 ライン だけ 点け、ライン 21 の IRQ で 消して その 後ろで VRAM に 書く〈main.s hb_pb〜hb_pe で 囲む・vb_exec は 自分で 囲む。間に 合わない フレームは 点けない だけ〉。上の UI の 名前表〈NT_B 行 18〜23・属性 $2BE0〜〉と 字形〈$1000〜$17FF・$0AC0〜$0E7F〉は 残す:札では CHR を 読み直さず、新しい 階は hb_chr で 残り だけ 読む。札の 波紋の 帯を $C0〜 → $80〜$95、札の 間は ui_top = 2〈2 行目は ゲーム中の 表〉。固定の 空きの ため draw_frame・attr_dump〈→ バンク 15〉・text_redraw_now〈→ 15〉・clear_nt〈→ 14〉を 外へ。下り・上り・落とし戸・階 移動で 消える フレーム 0、移る 時間は 約 8 フレーム 短く。新しい ゲームの 最初の 階は 今まで どおり)
方向を 2 連打 → その 方向へ 壁に 当たるか 物・敵の 隣に 来る まで 一気に 進む
2.45(fastui.s〈バンク 27〉run_tick:18 フレーム 以内に 同じ 方向を 2 回 押したら 走る、ほかの ボタン・方向で 止める。run_move:try_move を その 向きで。止まる わけ=動けない〈壁〉・新しい 文〈階段・物の 上・罠 など〉・HP が 減った・隣に なついて いない 敵・隣か 足元に 物。main.s game_loop に 2 か所。el_body で 止める)
打たれた 文は 赤・当てた 文は 黄(ログは 灰)。外れの 文を「攻撃を かわした!/攻撃を かわされた!」に、効果音も 専用に
2.46(text.s ML_COL:kl_uhit・罠/光線が 当たった=赤、kl_hit・倒した=黄。待ちの 文の 32 バイト目に 運び、fastui.s ms15 で 今の 行〈k8x12〉だけ 字を 色 1 に・属性 赤 = パレット 1/黄 = パレット 3。前の 行〈美咲〉と ログは 灰。sound.s SFX_DODGE〈ひらり〉・SFX_EVADE〈スカッ・ぽすっ〉。外した 時に 敵の 名前が 別の 敵に なる 不具合〈kl_miss が X を 壊す〉も 直した。走る 時の try_move を バンク 3 で 呼ぶ〈2.45 の 不具合〉、utrap_move を バンク 3 へ)
装備の 後は 入力を 待たずに フィールドへ
2.47(postuse.s pu_wait:持つ・着る・外す・はめる〈V_WIELD〜V_REMOVE・V_PUTON〉は 案内を 出さずに 戻る)
脱出・墓の 結果の 窓の 間は 下の UI の ボタンの 案内を 出さない。上下の UI を 灰に
2.48(rp.s rp_begin:mw_prep で MW_ONF = 1 の 間に ms_hint を 8 回〈案内「無し」で 消える〉。NT_B 属性 行 4〜7 を パレット 3、パレット 3 = $00・$01・$10)
メニューの 窓を 細く(得点の 行を なくす)、得点は 略さず 上の 2 行目の 右に アイコン つき。脱出成功の 見出しは 黄
2.49(mwin.s:窓の 高さ = 2·項目 + 6 行、案内は 項目の 下 1 行 空け。fastui.s s2_score:上の 2 行目 列 16〜29 に 🏆〈新しい 字:loc.py G_CUP〉+ 8 けたまで 右詰め。rp.s → fastui.s rp_ychk・rp_yel:見出しの 字は 控えを 使わずに 描き、色 1 で 描き直す。パレット 1 の 色 1 を 黄に〈上下の UI は パレット 3 の 灰〉)
上の UI を 絵の とおりに 整理(バーを 字の 真下に)
2.50(2 行目:HP 4 マス 列 4〜7〈26 ドット〉・腹 9〜11・経験 14〜16。1 行目:★ 14・⚔ 17・⛨ 21〈★ の マスに 数字が 入らない 列〉。属性:★ は $2BE3 の 右下、HP・腹の 黄は $2BE9〜$2BEB を まとめて。hb_take・s2_score は 列 17 から。rp の 灰の 処理は バンク 27 へ〈バンク 13 が あふれた〉)
メニューの 指と 項目の 間を 8 ドット 空ける(職業選びの ように)
2.51(mwin.s:項目を 窓の 列 2 → 3)
どうぐの 一覧も 指と 項目の 間 8 ドット、身に つけて いる 印は 名前の 後ろに 8 ドット 空けて 赤い *
2.52(invui.s:名前を 列 3 から、fastui.s inv_mtail で 後ろに「 *」、inv_mattr で その マスの 属性を パレット 2〈赤〉に〈* の 前は 空白 なので 名前は 白の まま〉。invsort.s is_red は パレット だけ)
SELECT の ログは 伸び縮み なしに ぱっと 出て ぱっと 消える。SE は 案内の 左。得点は タイトルの 後 いつも 出し、アイコンは 黄
2.53(fastui.s log_tall:窓は 画面に 写って いない 地図の 行〈世界の 行 H〜H+10〉に 先に 描いて、irq 種類 6〈main.s:ライン 118 で 飛ぶ〉で 一度に 出す。閉じれば すぐ 元の 分け方、見えない 所で 戻す。網は $3D〈下の 窓の 行 25 と 同じ 番号:表を 替えても 網〉。美咲 9 行 + 2 + 今の 行。try_move を バンク 3 へ〈固定の 空き〉。status2.s hb_take で いつも 得点〈s2_score〉、🏆 は 色 1・その マスだけ パレット 3〈sc_attr〉。text.csv:SE を 頭に)
持ち物の 画面でも 上の UI の アイコンに 色。下の 窓は ゲームと 同じ 2 行 美咲 + 1 行 k8x12。得点の アイコンを 黄に
2.54(fastui.s it_icon:♥🍖★⚔⛨🪙 は ゲームと 同じ 色つきの 8×8〈m8 の 表:m8_cp〉を タイル $E6〜$F1 に、赤・白 = パレット 3・黄 = パレット 0〈invui.s で 黄・紺・白〉。invsort.s:字形の 控えは $E6 まで。iv_m8:行 26・27 を 美咲で。🏆 を M8_CHARS に〈色 1 → 黄〉、階を 移った 後も 属性を 書き直す〈st2_reset〉。装備の 後に 待って いた 不具合:invui.s が iv_mark に 動作で なく 0 を 渡して いた。fastui.s mm_score〈使って いない〉を 消した)
金と 得点の 右端を そろえる
2.55(fastui.s s2_score:数字は いつも 列 29 まで〈金と 同じ〉、アイコンを 黄の マスに 1 字 だけに する 時は アイコンと 数字の 間を 1 つ 空ける〈金の ● と 同じ やり方〉)
下の 窓の ボタンの 案内は 白。ログの 案内は 文と 同じ 行に(重なる 字は 消す)白で。レベル アップの 文は 黄。走る 速さは 半分に
2.56(fastui.s ms_hatt:案内の マス〈NT_B 属性 $2BF6・$2BF7 の 下の 段〉を パレット 1、無い 時は 3。ログ:行 0・1 の 右に 案内〈前の 奇数 列も 消す〉、その マスは パレット 1〈lt_hpal〉、美咲 11 行。mon2.s・use.s:レベル アップの 文は ML_COL = 2。走る:1 歩 16 フレーム、主人公の 絵は 1 フレームおきに 2 ドット〈main.s anim_all〉)
店の 名前の 文〈Welcome to …'s antique weapon shop!〉など 特別な 所の 文は 黄。店に 入った 時の「店主が いた!」は いらない(追って きた 時は 出す)
2.57(shop.s:店の あいさつ〈初め・また〉は sh_sayy〈固定:ML_COL = 2〉。rooms.s:動物園・沼・死体置き場、vault.s:金庫の 番人も 黄。pulse.s sn_new:怒って いない 店主は 見えても 言わない)
窓を 閉じる 時 指の スプライトが 後から 消える(先に 消す。指の ある 所を 見直す)
2.58(invui.s cur_hide:OAM 0・63 を 消して すぐ 帰線へ。メインメニュー〈mm_close・mw_close〉・足元/はい・いいえの 窓〈rooms.s〉・呼び名の 窓〈vcname.s〉・持ち物の 動作の 窓〈vb_out〉で 先に。mmenu.s:メインの 窓を 細く した 後に 残って いた 行 15〜17 決め打ちを 直した〈足元を 開く 時の 案内の 網・閉じる 時の 描き直し〉)
足元の 装備は 着たら/持ったら いくつ よく なるか「長剣が足元にある。(+1)」(よく なる 水色・悪く なる 赤)
2.59(fastui.s sh_here_msg・eq_delta:防具は (10 − 防御 + 分かって いる +n) を 同じ 場所に 着て いる 物と、武器は 分かって いる +n を 持って いる 物と 比べる。msg_tx を ML_HOLD で 積まずに 組み、後ろに (±n)〈区切りの 字 ML_SEG・色 ML_SEGC を 待ちの 文の 上 31・32 バイト目へ〉。今の 行で その 字 だけ 色 1、水色は その マスを パレット 3 に して main.s irq @win で 下の 窓 だけ パレット 3 の 1 を 水色〈NMI で 黄に 戻す〉。英語で 長い 時は (±n) を 次の 行に)
題の 画面の 文字の 後ろの 網が 黄色い
2.60(main.s NMI:パレット 3 の 1 を 黄に 戻す のは ゲーム中 だけ〈PAL_CY は 電池の ごみで 1 の ことが あり 題の 網を 黄に して いた〉。el_body で PAL_CY = 0)
足元の 物は「斧 +1 🪙120 (+3)」(名前・分かって いる +n・値段・装備した 時の 変化、変わらない 時は (±0))。SELECT の ログで (+n) が 黄に なる。足元の 窓の「説明」は いらない
2.61(fastui.s sh_here_msg:{O}〈+n は 後ろ〉・🪙・値段 × 数・(±n)。値段は shop.s sh_dprice〈遊びの 乱数を 使わず 種類・場所・階から:拾った 時の 値段と 同じ〉。変化は 手で 持つ 武器〈メイス〜槍〉と 防具 だけ。色の 区切りは「(」か 前の 空白〈マスの 左〉。main.s irq_k6:ログの 窓でも 水色。mmenu.s:足元の 窓から 説明を 外した)
あれ? 主人公の 向きが 変わらなく なった!!
2.62(fastui.s ms15:主人公の 絵が 送り 待ち〈ms_hpend〉の 間は 文の 字形を 送らない → 先に 絵を 送る)
🏆316 は 詰めて 金の 1 の 位と 右端を そろえる。下の 窓の 前の 行と ログは お金の 印も 灰(一番 下は 白の まま)。置いた 後も フィールドへ
2.63(fastui.s s2_score:アイコンの 列を 頭 + 21〈数字は 列 29 まで〉。M8_MONO:前の 行〈ms15 状態 1〉・ログ〈lt_build〉・lv_m8 は 美咲の 色つき 記号を 1 色で。postuse.s:V_DROP も 待たない)
どうぐの 未払いは(未払い)で なく(金額)に
2.64(inv.s obj_name:未払いは fastui.s nm_unpaid で「(🪙値段 × 数)」。on_from_inv で 1 つの 値段〈I_PL・I_PH〉を ON_PR に)
持ち物の 画面の 下の 窓に 前の プレイの 文が 残る
2.65(invui2.s iv_msg・fastui.s iv_m8:下の 3 行は ログ〈lv_get:新しい ゲームで 空〉から。ゲーム中の 下の 窓・SELECT の ログと 同じ もと)
日英 両対応(題の ←→ で 切りかえ)
2.17(文・敵/物/罠の 名前・UI の 言葉を 仮の 番地 $0100〜 に 日英 同じ 位置で 置き、日本語 バンク 19〜22・英語 23〜26〈loc.py pool・長い 方に 合わせる・8KB を またがない〉。text.s sb_ptr が $8000 未満を LANG_B〈$7EB4:19/23〉の バンクから 読む。英語:敵は the 付き・文頭 The〈ms_cap〉、罠と 飛ぶ 物は a/an、物は potion of X/X potion など、30 字で 単語の 途中を 切らない〈fastui.s ml_wrap〉。text.csv・glossary.csv に「英語」列〈原文から 384 本 自動、残り 256+96 本は 英訳〉。題:←→ で 言語を 替えて 描き直し、行 16 に「← JAPANESE/ENGLISH →」、題の 字は 控えで 共有〈TL_GC〉。英字で 字形が 増えて バンク 10 の 解説が あふれた → 字形の 続きを 空いた バンク 5 へ。職業の 画面:英語は 上の 数字の タイルを 避ける・犬の 名前 5 字分。解説は まだ 日本語 だけ)
英語の 職業説明・解説は 美咲 8×8 で 行を 詰める(日本語は 今の まま)。題の メニューに 言語の 行、犬の 名前も ←→、犬は 魔法使いの 紫
2.18(解説が 白かった:sb_ptr が $8000 未満を 全部 仮の 番地と して 読み、解説の KD_BUF〈$0780〉など 内蔵 RAM の 文も 化けた → $0000〜$07FF は その まま 読む・仮の 番地は $0800 から〈loc.py〉。英語の 解説 kaisetsu_en.txt 19 ページ、英語 だけ 美咲 8×8・8 ドット 行〈fastui.s kd_line8・gc8g、cd_up8・cd_ln8〉、日本語は k8x12・16 ドット 行の まま〈kaisetsu.s kd_row、cldesc.s LANG_B で 分ける〉。gc8g の 組の 取り方で 番号が 1 つ 進んで 字が 化けて いた のを 直す。cd_mkbm を バンク 15 へ〈FAR14 あふれ〉。日本語の 戦士の 説明が 2 字 あふれ〈犬の 名前の 矢印 分〉→「上げていこう」。TL_GC・TL_T が 波紋の RPL_BUF〈$07A0〜〉と 重なり 犬の 名前が 控えを 使って 英語の Back が 化けた → $78EA・$78EB へ。英語の 見出しを 短く〈old→new・Who's Who〉、持ち物の 案内「ⒶHold」、ライセンスに 美咲フォント)
PUSH TO の 画面の 言語の 行を 消す・窓は 1 行 下げて Based〜125 Inc. を 消す・題の 下の キャラの 色・英語の 職業画面は 原典の 行を 消し 見出しの 下から 本文・下の 窓の 前の 文に 空の 行が はさまる
2.19(言語の ←→ は 窓の 中 だけ〈titlefar.s〉。tt_menu:行 20〜25 を 波紋の 帯に 戻して 消し、窓は 行 12〜〈16×16 の 色の 区画に そろえる〉、指は 行 13〜。題の スプライトは 4 体に パレット 4 つ〈枠 i = パレット i、顔ごとの 色 tt_col:職業の 画面と 同じ 茶・青・銀・紫、犬は 紫、敵は 赤〉。text.csv の 英語に {EMPTY}〈loc.py:英語 だけ 空〉→ cl_e0〜5、英語の 本文は 行 10 から〈fastui.s cd_ln8〉。ml_push:空白 だけの 行は 積まない〈text.s〉)
犬の 名前は 頭に ◀▶(1 字の チップ)・英語で よく ある 名前も(日本語 4 字まで)・日英を 場面ごとに 並べて 崩れを 見る
2.20(loc.py:◀▶ を 1 字に した 字 、空の 字 〈書き直しで 前の 名前を 消す〉。敵の 顔・◀・▶ が 持ち物の バーの 左端の 字 〜 と 重なって いた → 〜 へ〈text.csv・kai_clean も〉。犬の 名前 16 個〈マックス/Max・バディ/Buddy・ベラ/Bella・ラッキー/Lucky・レックス/Rex・デイジー/Daisy・ロッキー/Rocky・ココ/Coco を 足す。role.s・text.s and #15〉。build/bilingual.js で 35 場面を 日英 撮って 比べた:英語の 折り返しで 次の 行の 頭に 空白〈text.s ml_add で 落とす〉、英語の 解説の Ⓑ goes back の 空白が 消えた〈kai_clean は 日本語 だけ〉、動作の 窓は 英語 18 字・左の 列 8〈VB_C0:枠・見出し・動作・指・vb_w〉、メインメニューは 英語 12 列〈mw_mwid:ⒷBack ⒶOK・Elbereth がはみ出した〉、足元の 文「On the up stairs」など。reveal.s の rv_setup・rv_blank を バンク 15 へ〈FAR14 あふれ〉。残り:持ち物を 開いて いる 間 美咲の 30 字目が 腹の バーの 字〈$FA〜〉と 重なる)
持ち物を 開いて いる 間 下の 文の 30 字目が 消える(in the dus)
2.21(持ち物の 下の 文〈invui2.s iv_msg:k8x12 で 描き直す〉が「枠に かからない」29 字 だった → 30 字〈列 1〜30、枠は 列 31〉。あわせて 持ち物の 上の 色つきの 字の 予約タイル〈防御・武器の 予告、腹の バー〉$F2〜$FD が 窓の 表の 前の 文の 美咲 $C0〜$FB の 25〜30 字目と 重なって いた → 防御 $BC〜・武器 $FC〜、腹の バーは その 2 つを 使い回す〈指す 物は 1 つ:invtop.s it_bslot〉)
言語の 行も 犬の 名前と 同じ ◀▶・ページの ある 画面の 案内にも ◀▶
2.22(1 字の ◀▶〈・G_LR〉で そろえる:題の 言語「◀▶JAPANESE/ENGLISH」、解説の 左下「◀▶ページ/Page」、持ち物の ページ「◀▶1/2」〈rooms.s iv_pagen。kaisetsu.s inv_help の 端の ◀ ▶ は やめた〉、わかった物「◀▶1/14」〈ds_pg1〉)
ボタンの 案内は 上の UI を やめて 下の 3 行の 上の 行の 右側へ(文が 長ければ 案内が 優先)。英語は 短い 単語
2.23(fastui.s ms_hint:行 26〈2 つ 前の 文・美咲〉の 組 MS_SLOT^1 の 右端 W 列〈日本語 4・英語 6〉の タイルに 1 フレーム 1 字 重ね書き。種類は st_ahint と 同じ 決め方〈ms_hid:窓・使った 後の 案内の 間は 無し〉、変わったか 行が 送られたら〈ms15 状態 5・ms_redraw15〉描き直す。MS_HW $78EC・MS_HP $78ED・MS_HK $78EE。上の st_ahint は いつも 空白。英語の さがすは ⒶLook。数えた 文の 長さ:日本語 平均 12 字・最大 29 字〈4 列の 案内と 重なる 行 ほぼ 0%〉、英語 平均 31 字〈折り返し 後 6 列と 重なる 行 約 28%〉)
英語は 案内と かぶる 行を ワードラップで 2 行に
2.24(英語は 24 字 以内で 折る:fastui.s ml_wrap は 列 24 から 前の 空白、text.s ml_push は 25〜30 字の 行を fastui.s ml_split で 2 つに。後ろの 空白は 数えない。折り返しの 続きの 行は MQ・MB_TEXT の 31 バイト目に 印〈ML_CONT $78EF〉、ms_cap は 続きの 行の the を 大文字に しない〈The dust に なった〉)
わかった物を 外す・階は「▙ 2」(2 けた目を 空ける)・上の 2 行目の 階段の 向きと 敵の 顔を 外す・メニューの 得点の 桁
2.25(メインメニュー・持ち物の 特別な 行から $FE を 外す。stline.s:1 けたの 階は 前に 空白、st_stair・st_mon を 呼ばない〈列 16〜26 は 空白〉、解説の「上の 顔が 赤く なる」を 書き直し。得点は fastui.s mm_score:日本語「n点/n万点」、英語「npt/nkpt/nMpt」〈6 字 以内〉。点は 24 ビット〈最大 16,777,215〉)
階の 1 けた目と ♥ の 間を 1 つ 空ける
2.26(stline.s:♥ を 列 4・体力 5〜7、🍖 を 列 9〈腹の バー 列 8〜10 の 真ん中。体力と くっつかない〉)
(直し)V2.21 で 持ち物の 色つきの 字の タイルを $BC〜・$FC〜 に 移したのは 間違い
2.27(invtop.s:IT_TAC $F2・IT_TWP $F6・IT_TBAR $FA に 戻す〈it_bslot は 元の 並び〉)
店主が 扉の 前から どかない・店で 払う 方法が わからない(店主に ぶつかって 払いたい)・似た つまり・題の「つづける」「◀▶日本語/ENGLISH」・階段は 段を 倍に 歩幅は その まま
2.28(shop.s:扉の 上の 主人公を 避ける 時の 一直線の 判定が 逆だった〈原典 shk_move の NOTONL:一直線で ない マスへ どく〉→ 次の 手で 横へ どく。shk_bump:払う 物が あれば ぶつかると 払う〈shk_pay〉。vault.s:金を 待つ 番人に ぶつかると 金を 置く〈gd_dropgold〉、文から「(メニュー)」を 外す。題:t_cont「つづける」、t_lang「◀▶日本語/◀▶ENGLISH」。lvanim.s:段の 上の タイル $F2〈4 ドットの 段 2 つ〉で 12 段に 見せる、跳びは 8 ドットの まま)
下の 窓の Ⓐ・Ⓑ の 案内を 8×12 に・犬の 名前の ◀▶ も 指の 列に・払う 物が あって 店主が 隣なら Ⓐ は 払う、店主に 向かって 動くのは 攻撃する? に 戻す
2.29(fastui.s ms_hint:行 26・27 の 列の 組〈$C0+2·列 と +1〉に k8x12 で 描く〈行 26 が 奇数の 組なら VBUF で 上下を 入れかえ〉。犬:TL_COL = 列 2、文は「◀▶ 名前」〈loc text.csv dp_〉。shop.s sh_apay〈払える かつ 店主が 隣〉:main.s の Ⓐ と ms_hid〈Ⓐ払う〉、拾った すぐ 後も。番人が 金を 待つ 時は Ⓐ置く。店主・番人に ぶつかった 時は 攻撃する? に 戻す)
題の 窓:指の 後ろを 8 ドット 空ける・波紋が 実機で 見えない・PUSH TO DUNGEON が 消える 時 黒い 字に 見える
2.30(mwin.s tt_menu:項目は 列 12、言語の 行は「◀▶ 日本語/◀▶ ENGLISH」。gfx.py PAL_TITLE の 1 番〈全 パレット 共通:背景の 点・波紋・階の 札〉を 灰 $00 に。titlefar.s:PUSH TO DUNGEON の タイル〈行 12・13 の 列 8〜23〉を 描いた 後に 読んで TT_PB $7580〈VB_SATT を 借りる〉に 控え、点滅は rip_erase〈地の 帯〉⇔ 控えを 書き戻す)
選ぶ 指を タイトルと 同じ 赤に そろえる・犬は 洞窟探検家の 色
2.31(ゲーム中・持ち物の 指は パレット 2〈敵の 赤〉、解説は kd_spal の パレット 3 を 赤に。題:敵は いつも パレット 3〈赤〉、人・犬は 枠の 順に 0〜2〈title2.s TT_PA $75A0・TT_PK $75A4〉→ 指は 3。職業の 画面は パレットが 足りない ので 指を 背景の k8x12 ▶ に:一覧を 偶数 行〈CL_ROW0 8・CL_DROW 20〉、列 2〜3 の 属性を パレット 3〈2 番 紺・3 番 赤〉、CL_CR $78F0。犬:gfx.py SP1・cl_opal・tt_col・kd_spal を 茶 $17・$27)
解説の 目次:見出しは「解説」、1 行目「目次」、操作の 行は 消して 空ける、ページの 数は 出さない、指の 後ろ 8 ドット、左下は「◀▶ ページ」
2.32(kaisetsu.txt・kaisetsu_en.txt の 1 ページ目、kaisetsu.s kd_draw:KD_P = 0 は kd_pnum を 飛ばす、loc.py:目次の 行の 頭を 全角 空白 2 つ、kd_hint「◀▶ ページ/◀▶ Page」)
見た マスが 空白(暗い)の まま 残る
2.06(保険:何も 押して いない 間 8 フレームに 1 本、画面の 列 32 本を 地図から 描き直す〈fastui.s heal_tick・スクロールと 同じ build_col・col_vb。窓・死んだ・書き直しの 輪 待ち・スクロール 中は しない〉。空白に した 3 マスが 戻るのを 確かめた)
題・階段・落ちる の 背景を マップと 同じに
2.07(gfx.py CROSS8 を 斜めの 点に〈題の 背景 $FE・ロゴの 地・職業の 背景〉、ripple.s rip_pat の 地も 同じ 点、輪の 薄い 柄は 斜めの 線)
上の UI を 美咲 8×8 に・題の 字の 裏の 柄を そろえる
2.08(1 行目 NT_B 行 19・2 行目 行 20、NMI は 行 18 の 2 段目から:ライン 7〜14・15〜21、マップは いつも ライン 24 から〈止まって いる 時も 動いて いる 時と 同じ。窓の 位置は 変わらない〉。IRQ:14 表の 後半 → マップ用・21 マップへ・23 BG。loc.py m8_lo/hi/dat〈美咲 PNG ref/font、記号 13 は 手描き・色 1/3〉、fastui.s m8_emit・m8_sq〈バーと 顔は 16 行を 8 行に〉。属性:★ $2BE3 左下、バーは $2BE8〜 の 上の 段。題の 字の 裏 gl_mesh も 斜めの 点。m8_sq で VBUF-1,x が ゼロページに なる 誤りを 直した)
階段の 裏を 斜めに・段を 8 ドット × 6・止まっては 進む・犬は 遅れて 端から・題も 一歩 止まる
2.09(階段:列 13+k の 行 19+k・20+k 石・21+k 右上の 三角 $F1。主人公は 20 フレームに 1 段〈8 で 進み 12 止まる〉、進み 出す 時に 足音と 波紋、犬は 同じ 動きで 2 段 遅れて 上の 端から、主人公が 下の 端に 着いて 10 待って 終わり〈LA_N 162〉。落ちる 間の 波紋も 20 フレーム。題:64 フレームに 一歩〈16 で 8 ドット〉、踏み出す 時に 足音と 波紋)
上の UI 2 行目が 1 ドット 上に めり込む
2.10(後半は NMI で 初めから マップ用〈1 行目は 前半 だけ 使う〉、IRQ は 21 マップへ・23 BG・窓・236 に 戻した。ライン 23 の BG は いつも m_map)
上の UI:バーを 細く・1 行目との 間を 広く・金を 黄色・Ⓐ Ⓑ を 読みやすく
2.11(m8_pick:網・囲み・隙間・埋まり 2・隙間・囲み。● は 画面の 奇数 列に〈数字の 桁で ずらし 空白を 入れる〉、st2_attr が st_want から ● を 探して 属性 行 4 を ★ と ● の マスだけ パレット 3 で 書き直す〈S_AST = ● の 列〉。Ⓐ Ⓑ は 白い 丸に 字を 抜いた 8×8)
報告まとめ:テレポートの 罠・上の UI の 遅さ・拾う 音・わかった物・R キー・腹の バー・指・顔・題の 歩き・敵の 色・曲・横の 報告画面
2.12(罠:「テレポートの罠だ!どこかへ飛ばされた!」・描き直し後に 音・揺れ 12。st2_service を 1 フレーム 3 回。足音は 鳴って いる 音を 切らない、金は ちゃりん だけ。g26_skip〈loc.py:原語 なしの 見た目 13〉。わかった物に「n/m」。inv_sort で $F2 以上の 控えを 捨てる。mw_close・mm_close で 先に 指を 消す。顔は mo_face 行 3〜11 で 目を 1 行に。題:一歩 32 フレーム、敵は 赤〈tt_spal の 4 組目 $16・$26、人は 青・銀・紫〉。曲は 種 2026 で 作り直し。Web:R で 報告、横長は 左に 画面・右に 入力〈字 2 倍〉。使って いない 文 3 つを 削除)
跳ねて 波紋・題の メニューを はじめる/続ける/解説(中身は 現代アレンジ(2020年代))・解説に 現代アレンジ(2020年代)の 章・曲を 作り直し
2.13(題:一歩 32 フレームで 4 ドット 跳ね〈tt_jump・TT_JY $07B0〉、着いた 時に 足音と 波紋。階段:進む 8 フレームで 4 ドット 跳ね〈la_jump・LA_I〉、着いた 時に 足音と 波紋。題の 窓 列 10〜21:はじめる・続ける・解説、はじめる は いつも G26 = 1。解説 目次に「現代アレンジ(2020年代)」、2 ページ〈手間 1 手・名前が わかる・祈る なし〉。music.py:手で 書いた D マイナー 32 小節〈A A’ B A’、ベース 根音・5 度・8 度、2・4 拍 スネア〉。使って いない t_cont26・t_new26 を 削除)
現代アレンジ(2020年代) 第 2 弾:敵の 性質・呪いの 印・Ⓐ いつもの 動作/長押し・お腹 2/3・隠し扉 1/3・魔除け 18 階・1 回 立ち上がる
2.15(pulse.s sn_hint:初めて 見た 性質の ある 敵 21 種に「{M}がいた!(性質)」〈文は バンク 3 mh_、MH_SEEN $7EB6〉。呪いを 知った 印 CK_B $7EAB〈7 バイト:断られた 時 ck_set、add_inv で ck_clr、一覧に(呪)〉。持ち物 Ⓐ:20 フレーム 未満で 離すと 動作の 一覧の 先頭を すぐ、長押しで 窓〈fastui.s inv_hold〉、案内「Ⓑ戻る Ⓐ使う Ⓐ長押しメニュー」。お腹は 3 手に 1 回 減らない。隠し扉 1/3。迷路 rn1(3,16)・魔除け 18 階 以上。死ぬと 1 回 だけ 上り 階段で 全快〈rv_try・REV_USED $7EB2、得点 半分:score.s〉。解説の 現代アレンジ(2020年代) 2 ページを 書き直し。使わなく なった ds_tick を 削除)
メニューに 得点・美咲を 全字・下の 文の 前の 行を 美咲で 2 行
2.16(メインメニューの 行 13 に「得点 n」〈sc_base・sc_dec〉。バンク 18 に 美咲 8×8 の 全 903 字〈loc.py m8_bin:JIS に 無い 字は 手描き か k8x12 の 行 2〜9、7.1KB〉、m8_emit は 色つきの 表に 無ければ R7 を 一時 18 に して 読む〈mmc_sel も 7 に:IRQ と 合わせる〉。下の 文:行 26・27 が 美咲〈タイル $C0+2c と +1 の 2 組、MS_SLOT $7EB3〉、行 28-29 が 新しい 文〈いつも T_MB〉。msg_service は 固定バンクに 小さい 入口 だけ、本体は fastui.s ms15〈1 美咲で 描く → 5 行 26・27 → 2 空に → 3 k8x12 → 4〉、画面の 描き直しは ms_redraw15〈2 つ 前は 空白〉)
美咲フォントとの 比較を 125 の 版で(表紙・以上、ページ番号 なし)
docs/HACK_フォント比較.pptx・.pdf(17 枚:特性の 表、ゲームの 900 字の 一覧〈今・美咲〉、8 画面の 左右 比較、美咲 B、画数の 多い 漢字〈言葉・線の 多い 順 40〉、まとめ)。tools/make_font_report.py
ボタンは 名前だけ・DEV に まとめる/階段の 波紋を 一歩ごとに・落ちる 間も・階段 1.5 倍 ゆっくり
2.02(ボタンの 中は SELECT・START・B・A、上は 9・0・O・P。REPO の 所に DEV:ターン・階の 巻き戻し、デバッグ〈主人公・階・出す・記録・エミュ〉、報告、名前、ROM DL を ゲームの メニューと 同じ 紺の 窓・▶ の 指で。セレクトは ◀ 値 ▶〈長押し〉、種は 押して 入れる。階段:0.25 ドット/フレーム・216 フレーム・12 フレームごとに 足音と 波紋、落ちる 間も 12 フレームごと。波紋の 枠 3 → 8〈RPL_C・RPL_N は RPL_BUF と 重ねる〉。LA_E は IT_W+10〈+11 は LV_TT〉)
動けない 手間に「リングメイルを 脱いで いる…(1/6)」
2.03(脱ぐ・着る は 始めに「…して いる…(1/n)」、毎手「(k/n)」、終わりに「外した/身に つけた」。食べる・祈る・彫る は 毎手「(k/n)」。文の 符号 {K}=BZ_N−multi・{KN}=BZ_N〈text.s ml_k〉、BZ_K $78FE・BZ_N $78FF〈題で 0〉、multi_why が 合わなければ 出さない。文が 出 終わる まで 次の 手を 待つ〈待ち 4 本が あふれて 抜けた〉。STR2 が 33 バイト あふれた ので 使って いない 文 5 つを 削除)
波紋 4 倍の 間隔・INS/DEL を 外す・題に 現代アレンジ(2020年代)
2.04(階段・落ちる:48 フレームに 1 つ〈LA_RP 4 歩ごと〉、題:4 歩に 1 つ。Insert・Delete の 近道を 外した。題の 窓:続ける ORIGINAL/2026〈セーブの 版〉・はじめる ORIGINAL・はじめる 2026・解説、案内 Ⓑ戻る Ⓐ決定 は 出さない〈字の 置き場 18 組〉、窓は 列 6〜25。G26 $7EBF〈SV_DATA の 後ろ〉:現代アレンジ(2020年代)は 鎧の 着脱・食べる・祈る・彫る の 手間 0、始めに 物の 名前を 全部 知る〈OK 全部 1〉)
持ち物の 種類の 説明を 消す・現代アレンジ(2020年代)は 祈る なし・まひの 間「まだ動けない…(k/n)」
2.05(ds_tick を 呼ばない〈持ち物・メインの どうぐ〉。G26 の 時 メインメニュー・持ち物の 祈る を 出さない。multi_why 2〜4 の 間は 初めの 動けない 手で BZ_K $83・BZ_N = multi+2、文が 空いて いる 手に「まだ動けない…(k/n)」〈待たない:長押しの 1 手/2 フレーム そのまま〉)
階段を 降りる 時 キャラクターが「地下 n 階」の 窓に かぶる(窓の 下に できる? 無理なら 階段を 下げる)
1.66(階段を 16 ドット 下げた:行 17 → 19、段 0 の 上 136 → 152)
フィールドにも タイトルの ような 波紋(手番を 使ったら 主人公 中心に 暗い 背景 だけ に 広がる、前の 輪は 上書き)
1.67(src/field_rip.s:半径 1〜6、4 フレームで 1 マス、近い ほど 濃い。書き直しの 輪が 空く まで 次の 輪を 待つ → 遅延 31・歩く 速さ 同じ)
敵に 攻撃が 通ったら 倒した 時と 同じ スプライトの アニメ、外れた 時は 小さい 絵が ぱっと + スカッの 音
1.68(klmark.s kl_hit・kl_miss:当てた=倒した 時の 印〈24 フレーム〉、外した=1/2 の 絵 8 フレーム。外れの 音を スカッ〈ノイズ + 上へ 抜ける 細い 音〉に。印は 並べる 順の 先頭へ。固定バンクを 増やさない よう 音を 鳴らす のも klmark.s へ)
自分が 受けた 被ダメ・敵の 空振りも 印と 効果音を
1.69(klmark.s kl_uhit・kl_umiss:打たれた=主人公の マスに 倒した 時と 同じ 印 + 打たれた 音、外された=小さい 印 + スカッ。印は 1 つ だけ なので 敵が 続けて 打つと 自分の 攻撃の 印は 途中で 切りかわる)
フィールドの 波紋も 題と 同じ 8×8 に(輪は 1 本・柄は 1 種類で よい)。立ち止まって いたら 広がって 消える
1.70(field_rip.s 作り直し:半径 1〜8 タイルの 輪の 表〈field_rip_tab.inc〉、名前表の タイルを VBUF に 直接〈横 続きは まとめる〉、軽い 岩の 判定。方向キーを 押して いる 間は 前の 輪を 少しずつ 消す だけ・描くのは 止まってから → 押しっぱなし 18 歩・処理落ち 元と 同じ、止まって いれば 3 フレームで 8 ドット。窓に 貸さない タイルは $08・$09 だけに)
円弧が 画面の 外へ 全部 出るまでを 1 回の 波紋に(半径 8 で 止めない)
1.71(輪を 行ごとの 幅で 求める:(2i+1)²+(2j+1)² と (2R)² の 2 乗の 表 だけ。描いた 輪が 画面に 1 枚も 入らなく なったら おしまい。描くのは 画面の 中、戻すのは 画面の 外の 行も。遠い 輪は 書く 量が 多く 1 段 10 フレーム 前後)
持ち物を 使った 後:フィールドを 見せて 下の 文の 右端に「Ⓑフィールド Ⓐどうぐ」。Ⓐ どうぐ・Ⓑ/十字 フィールド。18 字を 超える 文は 名前の 後ろで 2 行に
1.72(postuse.s:バンク 15 を 初めて 使う〈F15 は 呼ぶ 所で far_go へ〉。切る 所:助詞〈前が ひらがな で ない〉→ 句読点 → 18 字 残し。表は loc.py が 作る。上の 案内は 出して いる 間 空白。死んだ・階が 変わった・時間の かかる 動作は 出さない。波紋は 文を 出して いる 間 休む)
波紋は 均一な 速さで、動きが 大きく 見える ことが 大事(16 ドットずつ・破線で よい)。歩き 続ける 間は 消えたら 次、止まったら 今の 輪で おしまい
1.73(1 段 16 ドット・8 フレーム〈どの 半径でも ほぼ 同じ〉、16 ドットの 市松の 破線、輪の 柄を 色 2〈灰〉に。輪の 途中で 歩いたら 消えた 時に 次の 輪。歩いて いる 間も 止めず 1 フレームの 量を 少なく:押しっぱなし 4 秒 17 歩・処理落ち 87〈波紋 なし 18 歩・86〉)
波紋は 重く きれいで ない ので やめて、代わりに 暗い 背景を 軽く 変える(ダメージに 見えない ように)。案 A:足音の 響き
1.74(pulse.s:手番ごとに 暗い 岩の 十字の 絵〈タイル $10〜$13〉を 真ん中 → 灰の 腕 → 全部 灰 → 戻る の 7 段・約 14 フレーム。CHR だけ 書きかえ〈1 フレーム 32 バイト〉。歩き 続ける 間は 明るい 段へ 戻して 続ける。波紋 field_rip.s は 呼ばない〈ROM には 残す〉)
案 B(またたき)で。背景 全体だと やかましい ので 市松の 片方 だけ 変える
1.75(pulse.s:暗い 岩の 4 枚の タイルの うち「左上・右下」か「右上・左下」の 組 だけ 絵を 変える〈画面では 8×8 の 市松〉。真ん中が 明るい 灰に 光り 腕も 灰 → 戻る の 8 フレーム。手番ごとに 組を 入れかえ。新しい タイルは 足して いない)
またたきを 控えめに
1.76(pulse.s:腕は 暗い まま、真ん中の 点 だけ 灰 → 明るい 灰 → 灰 → 戻る の 7 フレーム)
またたきは 灰色 まで
1.77(pulse.s:真ん中の 点が 灰に なって 戻る だけ〈6 フレーム〉)
市松の またたきに 8 方向の 矢印、移動の ない 手番(攻撃・探す など)は ◯
1.78(pulse.s:手番の 前後の 主人公の 位置の 差で 向き〈1 マス より 大きい・動かない は ◯〉。印は 灰〈色 2〉を 十字に 重ねた 9 枚〈144 バイト〉。6 フレーム 出して 戻す)
移動が 続く 間は 点滅せず 同じ 向きを 出しっぱなし(消える 前に 次が 来たら 出した まま)
1.79(pulse.s:手番が 来る たび 残り 16 フレームに 戻す〈押しっぱなしの 歩き 約 13 フレーム ごと〉。向きが 変わった 時 だけ 描き直す。組の 入れかえは 出し始め だけ)
矢印が 悪目立ち する ので 元の 柄の 色で 重なりを 考えて「なんとなく 進む 向き」が わかる 程度に。階を 戻った 時 止まって いても 矢印が 出た まま
1.80(pulse.s:印は 十字の 点の 並べかえ〈色 1・点の 数 ほぼ 同じ〉:上下左右は 1 点 抜いた ^ v < >、斜めは 角、その場は +。遊んで いない 間は 状態を 残し 戻ってから 戻す)
敵は 赤が 方針。店主・番人も 含め 全部 ユニークを 目指す。まず 小さい 人型と 竜・とかげを 個別の 絵に
1.81(tools/mon_uniq.py に 18 種〈ノーム・ホブゴブリン・コボルト・ホムンクルス・インプ・クアジット・レプラコーン・天狗・ニンフ・看護師・店主・番人・コカトリス・カメレオン・ミミック・ゾーン・ズルティ・ドラゴン〉。バンク 16〈gen/spr16.bin〉に 置き、絵の 番号 32〜 を sprite.s が バンク 16 から 読む〈SW_HI の $20〉。一覧 docs/art/char_chips.png を tools/char_sheet.py で)
カメレオンは 舌を やめて 大きな 目と 尾で。部屋で・部屋に 入って きた・扉や 通路で 敵に 出会ったら 名前を 下の UI に。1〜5 階で よく 出る 敵から ユニーク化
1.82(pulse.s sn_new:手番ごとに 新しく 見えた 敵の 種類で「{M}がいた!」「{M}と{M2}がいた!」「{M}と{M2}以外にモンスターがいる!」〈犬・化けた ミミックは 除く。階が 変われば 覚えを 消す〉。使った 後の 案内は 先に 1 フレーム 回して この 文を 先に 積む。個別の 絵に 14 種〈ジャッカル・大ネズミ・コウモリ・アシッドブロブ・オーク・ゾンビ・凍てつく球・子犬・黄色い光・大アリ・霧の雲・ピアサー・震えるブロブ・紫カビ〉:計 32 種)
3 種類 以上は「{M}と{M2}、ほかにもモンスターがいる!」。ユニーク化を 進める
1.83(残り 31 種を 個別の 絵に:浮遊眼〈元から 専用〉以外の 全部。バンク 16〈32〜73〉・17〈74〜:SW_HI の $80〉。mon_pic は 番号を 先に バンクの 頭からに 直して × 3)
上の UI の アイコンに 色:♥ 赤・肉〈胃に 見えた ので 描き直し〉赤と 白い 骨・★ 黄
1.84(mwin.s gl_color:上の 数字の 行の 字形の うち ♥・★ は 面 1 を 消して 色 1、肉は 骨の 印 だけ 色 3。★ の マス〈$2BEB 左上〉を パレット 3〈黄〉に:status2.s。隣の 数字は 別の マスで 白の まま)
横向きの 敵の ユニーク度が 低い:太らせたり 特徴を
1.85(描き直し:ケンタウロス〈弓・太い 馬体〉・大きな犬〈大きな 頭・舌・首輪〉・ユニコーン〈白い 角・たてがみ・尾〉・錆の怪物〈節の 甲羅・触角・尾〉・犬〈白い 胸・巻いた 尾〉・子犬〈大きな 頭〉)
階段・剣・盾に 灰の ディザ? 無ければ 剣の 柄 だけ 黄・盾の 中に 黄の 四角
1.86(同じ 組の 赤で:剣は 鍔から 下、盾は 中の 四角。mwin.s gl_color を 字ごとの 表〈gl_msk:1 = 色 1〉に まとめた)
ハートも 白の てかりを(2 色に するなら 収まりが 悪い)
1.87(gl_msk:♥ の 左上〈字の 行 3・4 の 列 1〉を 白)
階段に 黄の 差し色(B の 形で 黄)
1.88(試し:階段の マス〈$2BE8 左上〉を パレット 3、段の 上と 右の 角 だけ 黄・残りは 黒〈gl_bk〉)
階段は やっぱり 白に 段の 角を 赤(剣・盾と 同じ 赤の 差し色)
1.89(階段の マスは パレット 1 に 戻し、段の 上と 右の 角を 赤)
戦士(横)の 剣が 曲がって 見える。階段は 地面の 部分と 左の 縦線を 赤い 破線に
1.90(own_art.py HERO_DOWN・UP・LEFT:刃を まっすぐ 1 本、鍔〈横 3〉・握り・柄頭。gl_msk:階段の 左の 縦線と 底を 1 ドット おきに 赤)
暗い 所の 柄(十字)が 強い ので やわらかく(案 A:斜めの 点 2 つ)。向きの 印も 合わせて
1.91(gfx.py stone:.a.. / .... / ...a / ....〈通路の 黒い 所も 同じ〉。pulse.s:ふだんの 絵を 同じに、印は 8×8 に 矢じり 1 つ〈> ^ と 角、その場は ◇〉)
メニュー まわりの 高速化(全部)
1.92(enter_level_noloop の 本体を バンク 15 へ〈fastui.s:固定に 123 バイト 空き〉。窓の 後は マップの 表 4KB だけ 読み直し・スプライトは そのまま。作り直しの 間は パレット 0 の マスの 属性 計算と 見つけた 罠が 無い 時の 罠 探しを 飛ばす〈作り直し 22 → 18〉。全画面の 窓から メインへ 戻る 時は 表示を 消した まま VBUF を 多く 流して 描き 終えてから 出す〈60 → 38〉。窓の 字は 字形 だけを 送る 間 VBUF を 80 上乗せ〈速い 道 1 字 300 サイクル:NMI から 最後の 書きこみ まで 最大 1983/2273〉、名前表は 続いた 字を 1 つの 頭で〈メインを 開く 31 → 25〉。gl_color を バンク 15 へ)
メニュー まわりの 高速化(続き)
1.93(gc_tile を 後ろから 11 サイクル/件の 探索に〈126k → 62k〉。F3 vb_put・vb_hdr・vb_flush_if は X・Y を 残す 直の 版〈vb_putx など〉、F3 vb_fits・isglyph・wait_nmi は 直に。gl_color は 上の 数字の 行の 字形 だけ。窓の 下を 戻す・窓の 準備でも 見つけた 罠が 無ければ 罠 探しを 飛ばす〈EL_TR = $80〉。メインを 開く 31 → 24、どうぐ 26 → 21、動作 → 戻る 26 → 21、どうぐ・わかった物 → 戻る 55 → 38、足元 15 → 12、窓を 閉じる 14 → 12)
動作の 窓 → どうぐに 戻る を 速く(持ち物を 全部 描き直さない)
1.94(vb_draw の 始めに 名前表の 行 4〜23 と 属性を CQ の 場所へ 控え、Ⓑ で 書き戻して 案内・説明 だけ 描き直す〈fastui.s vb_save・vb_restore、invui.s inv_foot〉:21 → 13。印は $78E3〜〈OD・KD の 後ろの 空き〉へ 移し 題で 0。描き 終える まで ingame = 0・表示 0)
くずれた(部屋の 床の 一部が 岩の タイルで 描かれた)
1.95(V1.94 で 番地を 移し 題で 0 に した 分で 直って いる。地図の データは 正しかった)
浮遊眼に 睨まれて ずっと 固まって いる
1.95(動けない 間の 長押しは 毎フレーム 1 手・動き 2 フレーム:150 手 37.6 → 15.8 秒)
一瞬 浮遊眼が 映った
1.95(sprite.s SL_NEW:新しい 種類の 枠は 絵を 送る まで 描かない)
メイスに カーソルを 乗せたら 化けた
1.95(前から 探す 形〈1 件 13 サイクル〉に 戻した)
墓の 窓の 中が 格子に 化けた
1.95(墓〈MW_NOSK〉の 時は 組 1〜5 を 貸さない)
動く たびに 背景が 書き換わるのは やめよう
1.95(足音の 印を やめた。敵を 見つけた 時の 名前は 残す)
Ⓐの 役割を Ⓑと 交換、メニューは START だけ
1.95(Ⓐ = 探す・下る・上る、Ⓑ = なし、START = メニュー。上の 案内・ウェブの ボタンの 説明・解説の 操作の ページも)
始まる 時・階が 変わった 時の ダメージの ような 演出
1.94 で 直った(始まり・階の 移動 とも 赤 5 → 0 フレーム。音は 足音 だけ)
幽霊が 店主に 見えた(姿:スプライト)
1.96(V1.95 の 描かない 待ちに 加え、新しい 種類の 枠は 混んで いても 入れば 送る:絵が 出る まで 3〜16 フレーム)
最適化を 進める
1.97(使わない スプライトは 前の 回に 使った 所まで〈16 フレームに 1 回 全部〉。見えるかは 手が 進んだ 時と 4 フレームに 1 回〈BO_SB〉:bo_build 717k → 502k サイクル。rv_see を vis_rings と 同じ バンク 13 へ 移し 見た マスは see_cell を 呼ばない。瞬間移動の 制御 tctrl.s を バンク 15 へ〈バンク 11 に 540 バイト 空き〉)
最適化を 進める
1.98(題の 処理 483 バイトを バンク 15 へ〈titlefar.s:固定に 471 バイト 空き〉。状態行の 1 行目は 手が 進んだ 時と 8 フレームに 1 回:CPU 64.8% → 57.7%。o_at・eg_scary は 床の 印〈OBJBIT〉が 無ければ 探さない〈o_here〉:1 手の 処理落ち 8.0 → 5.8 フレーム)
最適化を 進める
1.99(手・階が 変わった 時 だけ 呼ぶ。UI_MODE は 固定側で 毎回 0)
最適化を 進める
2.00(生きて いる 一番 上の 敵の 枠 BO_TOP まで:bo_build 502k → 287k サイクル〈最初 717k〉。罠は 使って いる 一番 上の 枠 T_TOP まで〈階に 入る 時・maketrap で 直す、題で 32〉。rn2 の 割り算を 13 回に〈全 組み合わせで 結果 同じ〉。物 探しは 距離で ふるって から mi_wants)
最適化を 進める
2.01(バンク 1 の mf_quick:物の 印・罠・彫り字〈4 件〉の どれも 無い マスは 呼ばない:1 手の 処理落ち 5.71 → 5.53。敵の 物 探しの ループは 手ごとに 数える 床の 物の 一番 上の 枠まで)
たどり着けない 場所に アイテムが ある パターンて 原典でも あるの?
―(不具合では ない)
はい/いいえ は 下 UI で 聞かず、フィールドに 重ねた 飾り枠の 窓で。いいえ は 何も 出さず、はい は 下 UI に 結果(店主を攻撃した! など)
1.44(rooms.s yn_win:メニューの 窓の 仕組み〈開く 時に 見える マスから 空いた タイルを 貸す〉で 列 +8〜+23・行 +2〜+11 に 問い・はい・いいえ〈初め いいえ〉・Ⓑ戻る Ⓐ決定。店主・番人・池・地上へ・アイスボックス 3・番人の 名乗り。問いの 文から ボタンの 案内を 外した。窓の 幅は mw_rows の RUNB に 合わせて 16)
地上へ の 問いは「地上へ出ますか?」で/サブメニューの 枠は ギリギリ 外枠に 合わせて 黒枠を なくす(角丸は 維持)
1.45(枠の 線を タイルの 一番 外側〈行 0・列 0〉に、内側は 全部 網。角は 丸い まま。全部の 窓に 共通)
サブウインドは 隣接 せず わざと 重ねる(どれが 今 アクティブか わかる)
1.46(足元・タイトルへ の 窓を 列 +8〜+21 に:メインの 右端 2 列に 重ねる。灰に するのは メインの 列 +0〜+7、閉じたら 重なって いない 所だけ 戻して メインの +8・+9 を 描き直す。死んだ 時の 処理を OVL へ 移して 14 を 空けた)
16×16 を 避けて 重ねる(縦は 字を 8 ドット ずらす・横は 16 ドット 単位)/ボタン だけで 戻る 時は ⒷⒶ戻る/サブは「選んだ 物・改行・中身・案内」/下の 窓の 網は 暗い 灰(B)
1.47(足元・タイトルへ の 窓は 行 +2〜+17 で 16×16 に そろえ、字は 偶数 行〈メインより 8 ドット 下〉:見出し → 空き → 中身 → 案内。何も ない 足元は Ⓐ でも 戻る、案内・わかった物は ⒷⒶ戻る。閉じたら メインの 列 +8・+9 を mw_tile で 描き直す。サブを 出す 間 パレット 3 の 網を 暗い 灰 $2D〈下の 文の 前の 行も〉、持ち物の 動作の 窓の 一覧も 暗い 灰で 枠の 中 だけ)
死亡 → 墓の 遷移で 上 UI と 下 UI を 変えない(以前の 仕様の 名残?)
1.48(墓の 字は メニューと 同じく 見えない マスの タイルを 借りる〈mw_prep。メインの 窓は 無いので 全部の マスを 見る MW_NOSK〉、上下は 2 行の 形の まま)
窓に ボタンの 案内が ある 時は 窓が 優先:上 UI の 案内を 消す/UI との ボタン表示の 関係を 確かめる
1.49(墓・はい/いいえ の 窓・方向を 聞く 間は 上の 案内を 空白に〈窓が 出て いる 間 MW_ONF は st_ahint を 書かない、墓の 待ちで st2_service〉。方向の 案内に Ⓢ上 を 足す。タイトルの 窓は Ⓑ が 効かない ので Ⓐ決定 のみ)
ネズミの 死体で お腹は 満たされない? 水色が 出ない
1.49(FC 版:栄養が 少しでも あれば 予告の 水色を 最低 1 ドット)
窓の 共通ルール:横幅は 一番 長い 行 + 左右 16 ドット、案内は 右詰め/サブは「▽ メインで 選んだ 物・中身・案内」、選ぶと ▶ が ▽ に なり 親は 灰/動作の 窓の 灰が 途中で 切れる(16×16 の 限界?)
1.50(動作の 窓と 足元・タイトルへ の サブ:幅を 字数から 決め〈wlay.s vb_w・mwin.s mm_sbox〉、端を 16×16 に そろえ、見出し「▽ 名前」・中身・案内 を 16 ドット ごと。窓の 外は 16×16 ごとに 灰〈vb_attr〉、親の 選んだ 行に 灰の ▽。持ち物の 案内を「Ⓑ戻る Ⓐ決定 Ⓢジャンル」に。階段の 演出 lvanim.s を バンク 7 へ)
(作業中に 発見)持ち物の 画面の ページ数 iv_pagen を 呼ぶ バンクが 違う
1.50(F4 で 呼ぶ)
メニューの 枠を ギリに(灰の 背景と 上 UI を いっしょに しない)・角は 1 ドット 欠ける だけ・サブの 角も 共通/8 ドット 下から 始めて 6 品で OK・UI の すぐ 上まで 一覧に
1.51(枠は 行 6〜24:上の 線 y = 48・下の 線 y = 199〈下の UI の すぐ 上〉。1 ページ 6 品〈行 8〜18〉・わかった物 7 行、動作の 窓の 灰は 枠の 下の 線 まで〈下の UI の 段は 読んで 残す〉。枠の 角は 全部〈持ち物・窓・墓・題〉1 ドット 欠く。ページ数〈1/2〉が 出る ように なった。次の ページの ▶ の 計算の ×8 を ×6 に)
窓の 共通ルールを 残りの 画面へ(はい/いいえ・タイトル・墓・職業選択)
1.52(はい/いいえ:問いは 左 16 ドット、幅は 字数から〈窓の 行の 作業 RUNB を 16 → 24 枚:$77E0〉。タイトル:列 10〜21・Ⓑ戻る Ⓐ決定〈Ⓑ で PUSH TO DUNGEON に 戻る。字の 置き場を 4 組 足す〉、窓より 広い PUSH TO DUNGEON は 十字で 消す。墓:幅 24 → 20〈一番 長い 行 15 字 + 16 ドット × 2〉・案内は 右の 枠の 16 ドット 内側。職業選択は 説明の 窓の 幅が 足りず 保留)
職業選択は 窓を つなげる
1.53(1 枚の 窓〈列 0〜31・行 6〜27〉:一覧は 列 2〜・説明は 列 14〜29 の まま・案内は 右下〈行 25〉、指は x 16)
タイトルで 中心から 密度の 違う 柄の 8×8 の 円が 3 つ 広がる ソナーの 演出。下の 行進は 一歩ずつ ずんずん ゆっくり、一歩ごとに 足音と 波紋(つづき・はじめから の 窓まで 続ける)
1.53(ripple.s:背景の 十字の マスを 中心からの 距離 8 ドット ごとの 22 枚の 帯の タイル〈$D8〜$DF・$F0〜$FD〉に 分け、帯の タイルの 絵 だけを 書き換える〈1 フレーム 6 枚 まで〉。輪は 濃い・中・薄い の 3 重、3 フレームで 8 ドット。行進は 32 フレームに 1 歩〈8 ドット〉、着いたら SFX_STEP と 波紋)
タイトルの 波紋の 演出を 階段・落下の 時にも
1.54(階の 札の 黒い 地を 帯の タイル $C0〜$D5 に〈階段の 石 $F0・$F1 を よける〉。階段は 2 歩に 1 つ、落下は 主人公・犬が 床に 着いた 時に 波紋。作業 RAM は 職業の 画面の 控え CL_C1〈$0780〜〉を 借りる)
階段・落下も タイトルの ように 黒を 網(十字)で 埋め、波紋の 密度を 薄く
1.55(札の 地も 十字〈行 28・29 も〉、輪は 薄い 組〈十字 + 点 1 行・点 2 行・十字の 間を 埋める〉。タイトルは そのまま)
タイトルに 続ける・はじめる・解説・クレジット の メニュー(解説・クレジットの 文と 出し方は 後で)
1.56(PUSH TO DUNGEON の 後は いつも 窓:セーブ あり 4 項目/なし 3 項目〈続ける を 出さない〉。窓は 行 10〜、4 項目では Based on Hack の 行も 波紋の 帯に。解説・クレジットは 今は 音 だけ。字の 置き場を 組 $01〜$07 に 広げた。title_cursor を バンク 7 へ〈CODE が いっぱい〉。試しの スクリプトは 1 回 多く 押す)
階の 再訪:倒した 数 だけ 覚えて 最初の 敵を 減らす/置いた 物(アイスボックスは 必ず)を 覚える/置いて きた 犬・店主の 怒り
1.57(lvsave2.s〈バンク 10・字形の 後ろ。$7C00〜$7CBF の 遠近の 表を 使う〉:最初の 敵を 倒した 数を 1 階 5 ビット × 28 階 = 18 B、作り直したら 後から 作った 枠から その 数 消す〈店主は 消さない〉。置く で 置いた 物に OF_DROP、離れる 時 全体 16 個に 覚え 戻ったら 置き直す〈あふれたら 順に 上書き・アイスボックスは 上書き しない〉。犬:置いて きた 階・位置・HP を 覚え、戻れば 戻す〈250 手 超えは ふつうの 敵〉。店主:怒らせた まま/倒した 階を 覚える)
タイトルの 解説:歴史・原典・基本(スプライト)・移植版の特徴(元 → 移植版)・素材とライセンス・クレジット(移植 125 Inc. SUZUKI08 + AI)。左右で ページ・ⒷⒶ戻る・書き途中も キーが 効く・見た ページを 覚える・SELECT で 目次
1.58(loc/kaisetsu.txt 17 ページ → tools/loc.py が 符号に して KAI〈バンク 10〉。kaisetsu.s:画面 全体を 1 枚の 窓〈上 UI なし:字に タイルを 回す〉、1 行 書く ごとに ボタンを 見る、目次は 上下で 章・Ⓐで 飛ぶ、基本 3/4 に 主人公・犬・敵の スプライト、最後に 見た ページは SRAM $78D8。解説の 字は 1 バイト 番号の 数えに 入れない〈STR2 が あふれた〉。新しい 字形 50)
解説の ページの 書く 速さを 上げたい(方法は?)
1.59(1 行の 上・下の 段を 28 マスの 書きこみ 1 つずつに〈kd_line〉、この 画面は VBUF 上乗せ 35、下の 案内の 字形は 残す。1 ページ 約 110 → 48 フレーム)
右上の化けてる(持ち物で 短剣を 指した 時の「武?」)
相談中
死んだ時の 画面 センタリング されて ない?
1.60(カメラの 位置ごとに 幅 20〈列 5〜7〉か 24〈列 4〉を 選び、真ん中から 8 ドット 以内)
クレジットの メニューは なし(解説に 含む)/解説の 目次は ◀▶ Ⓑ戻る Ⓐ決定、ほかの ページは ◀▶ Ⓑ目次 Ⓐ進む、最後の ページと 目次は ループ
1.60(タイトルの メニューは 続ける・はじめる・解説。目次:上下で 章・Ⓐで 飛ぶ・Ⓑで タイトル。ページ:Ⓑで 目次〈今の 章に 指〉・Ⓐで 次。左右は ループ。案内は 目次 と ページで 書き替え〈字形は 両方 先に 送る〉)
サブメニューが 横幅 オーバー しがちに なりそう(英語版を 見こして)なので 今の うちに 対応
1.61(サブの 窓〈足元・タイトルへ・はい/いいえ〉は 右端を 越える 分 だけ 左へ ずらす〈16 ドット 単位・最大 8 列:幅 24 まで 画面に 入る〉。MW_DX・MW_SUB、閉じる 時に メインの 重なった 列も ずらした 分 描き直す)
右上の 化け(知らない 武器の「武?」)→ ? だけで よい
1.62(知らない 時は「武」を 消して ? だけ。持ち物の 下の 行 inv_help を バンク 13 → 10 へ〈場所を 空けた〉)
巻物の「「ZELGO MER」と書かれた巻物」の アルファベットが 気持ち 悪い → 日本語の 見た目に(英語版は 原典の ラベル)
1.63(巻物の 見た目 25 個:ズタボロの巻物・綺麗な巻物・透明な巻物・古びた巻物 … 効き目を 連想させない 語、8 字 まで)
名付け:良さそう などは なし、その 分類の 本当の 名前から 選ぶ。使った(飲む・読む・振る)のに わからない 時は フィールドの サブ窓で「名前を付けますか? はい/いいえ」→ 一覧。表示は「見た目(呼び名?)」。手番は 使わない(原典も ddocall は 時間 なし)
1.64(vcname.s〈バンク 8・far8〉:一覧は 2 列 × 5 行・10 超えは ページ、呼び名が あれば 頭に(消す)。OK の ビット 1〜5 = 分類の 頭からの 番号。持ち物の「呼ぶ」も 同じ 窓〈持ち物を 閉じて フィールドで〉、宝石も 呼べる。杖は 原典に 無い 問いを 足した。方向で やめた 時は 聞かない)
(作業中に 発見)杖を 振っても 方向を 聞かず「何も起こらなかった」
1.64(番号を 先に 覚える)
シーンジャンプ:モンスターハウス(動物園・蜂の巣・死体置き場)
1.64(ウェブの デバッグ「階」:出る まで 作り直し〈4 倍速〉、地図を 見せて 部屋の 扉の 上へ)
メニューの 字が ずれる
1.65(窓を 出す たび〈mw_prep〉に 0。名付けの「やめた」印 VC_SKIP も 波紋の 作業場所と 重なって いた ので $07DA へ)
バー類も 角丸の 囲み線の 中に 黒の 隙間を 入れて その 中に バー
1.08(text.s emit_bar:行 3 上の 囲み〈左右の 端は 1 ドット 引いて 角を 丸く〉・4 隙間・5〜10 埋まり・11 隙間・12 下の 囲み、横は 囲み・隙間 1 ドットずつ。埋まりは 両端 5・中 8 ドット〈HP 50・腹と 経験 18〉。持ち物・職業選びの 8 ドット 字の バーも 同じ 形〈左端・右端の 字 G_BARL・G_BARR〉。職業選びは 字が 足りず 案内が 欠けた ので 字形の 上限を に)
メニューの 中の ボタンの 案内に Web の ボタン表示も 合わせる。メニューを 出したら 上UI の ボタン説明は いらない
1.09(UI_MODE 3 = メインメニュー・足元:Web は Ⓐえらぶ・Ⓑもどる・STARTとじる。持ち物の SELECT は 今の 並び〈ジャンル/新しい順/古い順〉。メニューを 出して いる 間は 2 行目の 案内〈列 23〜29〉を 空白に〈閉じれば 戻る〉)
メニューの 第 1 階層は B/A とも 説明を 入れても さらに 横幅を 狭められる?
1.10(案内を「Ⓑ戻る Ⓐ決定」〈7 字。職業選びと 同じ〉に して 窓を 14 → 10 列〈5 マス〉。足元の 窓は その 右〈+10〜+23〉。Web の ボタンも 決定・戻る)
メニューを 出す 時に 画面が 一瞬 消える
1.11(画面は 点けた まま 帰線ごとに VBUF:先に 枠、次に 字形〈見えない 置き場〉、最後に 字。閉じる 時は 窓の 下の 属性と マスを フィールドに 戻し、貸した 絵の 置き場を バンク 0 から 戻す〈main.s mw_chr〉。足元の 窓も 同じ〈Ⓑ で 足元の 窓だけ 消す〉。窓の 下に 隠れる マスは 種類を 調べない〈開くまで 20 → 6 フレーム〉。BGM〈music.s〉は バンク 14 が いっぱいの ため バンク 7〈敵の 絵の 後ろ〉へ)
階段を 降りる アニメ:最上段から 始めて 速度は もっと 上げて
1.12(lvanim.s:下りは 一番 上の 段〈x 104〉から 一番 下〈152〉へ、上りは その 逆。速さ 8 フレームに 1 ドット → 0.375 ドット/フレーム〈t/2 − t/8、48 で 止まる〉)
タイトル・職業選択に メニューの デザインと ルールを 適用、クリア/死亡画面も
1.13(タイトル:つづきから・はじめからを 窓〈列 9〜22・行 12〜19〉に、右下 Ⓐ決定、原作・©・版は 行 20〜24 へ〈TITLE_ROWS〉。PUSH TO DUNGEON は そのまま。職業選び:窓〈列 7〜24・行 5〜24〉、一覧を 2 行 上げ、右下 Ⓑ戻る Ⓐ決定〈上の 2 行目からは 外し、階段・敵の 顔も 出さない〉。墓・脱出〈rp.s〉:座布団に 枠〈16 行〉、字は 白、PUSH START → 右下 Ⓐ次へ、窓に 重なる 主人公も 隠す。メニューの 試験で 見つけた 不具合:特別な 項目〈タイトルへ・聖呪文・祈る〉が mw_off で A を 壊されて 効かなかった〈1.11 から〉、わかった物が カメラ位置・スプライトの 残りで 崩れた、足元の 見出しが 枠に かかった〈名前 だけ 11 字〉)
主人公系・敵が 化ける
1.14(BGM は 区画 SPR7M〈敵の 絵の 後ろ〉へ)
タイトルは 最初 PUSH TO START だけ、その後 つづき・はじめる
1.14(セーブが あっても 最初は PUSH TO DUNGEON。押すと 窓〈列 8〜23〉で つづきから・はじめから・Ⓐ決定を 画面を 消さずに〈mwin.s tt_menu。字の 置き場は 題で 使わない 6〜B・0〜3〉、Ⓑ で PUSH に 戻る)
メニューの 表示までが 遅い・線が 出ない ことが あった
1.14(列 0 なら 2 から、ずれて いて 行 5 なら 7 から。24 階で 枠の 上・左・下を 自動で 確かめた。開くまで 約 10 フレーム)。あわせて 聖呪文の 欠けは ※(要望)、VBUF は 画面が 点いて いれば 帰線で 流す
タイトルへ の 後は 別の 確認 本当に戻りますか? はい いいえ で いいえ に カーソル。セーブ うんぬんの 下UI の メッセージは 不要
1.15(メニューの 右に 確認の 窓〈mmenu.s mm_tq〉。はい:黙って セーブ して 題へ、いいえ/Ⓑ:窓を 消して メニューへ)
マップの 端で 4 ドットで 止まる 処理を そもそも 回避 できない? 8 ドット 単位に 収まる ように し 窓の 位置は 固定
1.15(follow_cam:camx 8〜1016・camy 8〜168〈端の 8 ドットは 外周の 岩〉。止まって いる 時 camx/8・camy/8 は いつも 奇数 → 窓は いつも 列 1・行 6)
職業選び:おまかせ と 下の 文は いらない・窓を 1 行 下げる・並びは 戦士 洞窟探検家 魔法使い 観光客 騎士 原始人・窓を 字の 幅に 狭めて 左へ、右に 職業の 説明(原典の 英語名と 特徴)
1.16(左の 窓 列 1〜14・行 6〜25、右の 窓 列 15〜30。説明は 原典 hack.u_init.c の 体力・力・持ち物から 5 行、字は 〜 を 使い回す〈文は バンク 3 の STR:STR2 が いっぱい〉。上 2 行の 字は 先に 控えない〈IT_NOPRE〉)
BGM は タイトルと 職業選択 まで、暗すぎる ので 少し テンポ アップ
1.16(ゲームに 入ったら 止める〈ingame〉。80 → 約 95 BPM)
死んだ 画面:ボタンは Ⓐタイトルへ、安らかに眠れ の 後に 1 行 空ける、壁が 赤く なる
1.16(下に 出す 時の 区切りを 行 9 で 計る。案内 Ⓐタイトルへ、行を 1 つ 空けた)
職業の 説明は【名前】・原文:英語名・空き・続く 文章
1.17(左の 窓 列 1〜12、右 13〜30〈1 行 16 字〉。文は 16 字で 折り返し〈行の 頭に 句読点を 置かない〉。字は 控え〈同じ 字は 1 つ〉で 使って いない 6〜3・〜 に、描き 終えたら 説明の 控えは 捨てる)
タイトルの 文字が ずれた(8BIT CONSOLE EDITION・©)
1.17(TL_COL・IT_NOPRE・T_SV を 内蔵 RAM /usr/bin/bash763〜 へ、題の 初めに 0)
歩く 音と 攻撃音を つける&刷新
1.17(足音:歩く たびに 小さく 短い ノイズ。打つ:シュッ+ドッ〈ノイズの 振りと 低い 音・重い ノイズ〉、外す:ヒュッ)
原文は 原典に、テキストは 窓 いっぱい ぐらいまで 伸ばせる? こんな プレイに なります みたいな 文も
1.18(原典:英語名。本文 5 行〈約 70〜80 字〉に 遊び方を 足した。名前も 控えで 書いて 説明と 字を 共用、数字・RAND を 先に 控え、残りの 置き場を 全部 説明に〈/usr/bin/bash2〜/usr/bin/bashF・6〜3・〜:66 種〉)
説明文の 表示が 遅い・犬の 名前が 選択すると ずれる
1.19(消すのは 入る だけ まとめて、6 つ 全部に 出る 字 13 個は 初めに 控える、字形を 送る 間は VBUF を 135 バイトまで〈VB_XTRA:150 は 帰線を はみ出した〉→ 約 30 → 25 フレーム、480 フレーム ずれ なし。犬の 名前は 左の 窓の 列に)
説明文:カーソルが 移動したら 職業名・原典 までを 表示、入力が 止まって 字の 転送が 終わったら 一括で 説明文(カーソルが もたつく)
1.20(src/cldesc.s〈バンク 14:バンク 11 が いっぱい〉:移動で 指を すぐ 動かし、見出し・原典 だけ 書き、本文は 属性を 黒〈パレット 2 の 3 番〉に して 隠す。入力が 8 フレーム 止まったら 本文の 字形を 毎フレーム 6 字まで 裏で 送り〈その 間も 入力を 読む〉、終われば 本文を 書いて 属性を 戻し 一度に 見せる。指が 動くまで 5〜7 → 1〜2 フレーム)
Ⓑ(さがす)で隠し扉が見つかることも。は いらない
1.21(始めの ヒントを 外した)
スタート時に アイテムの パレットが おかしい ことが あった(巻物が 赤い 背景)
未(再現 待ち)
職業を がんがん 選んで いる 途中に ボタンを 押したら 物の 背景が オレンジ(タイトルの パレット)
1.22(lv_on の 頭で LV_TT = 0)
コントローラーの 黒い 横線を なくす
1.22(横向きの 金の 帯の 線 .gbl を 出さない)
職業選択から タイトルに 戻ったら 窓の 文字化け
1.23(窓を 書く 前に 控えを 空に)
最初の 戦士の 説明も 転送後に 文字が 出る ように(仕様と わかる ように)
1.23(入った 時も 見出し・原典 だけ、本文は cd_step で 送り 終えて から 一度に)
メニューを 出した 時に 文字だけで 黒塗りや 枠線が ない
1.24(mw_box で 0・mw_unbox で 1 を 毎回 入れる。あわせて 窓を 描く 前に マスと 属性の 書き直し 待ちを 流し切る。階に 着いた 直後 16 回・24 階で 枠を 自動で 確かめた)
やはり メニューを 出す 時に 枠が おいついて いない ことが あった
1.25(ゲーム中は 控え 110 個まで。WM_X を mklev の 矩形の 使わない 後ろ $6833 へ。歩き・どうぐ往復・足元の 窓 60 回で 枠を 自動で 確かめた)
タイトルの 行進に モンスターも 入れて 豪華に(4 体で OK)
1.26(モンスターの 形 3 → 9 種〈小人・オーク・四つ足・飛ぶ・かたまり・虫・へび・竜・目玉〉、色を 散らす、顔の 乱数を LFSR に して 同じ 顔が 続かない ように)
実機で メニューの 黒い 部分に 点々(上の 2 行目の 右・画面の 右端の 空白も)
1.27(頭 1 つを 4 バイト 分 足して 数え、上限 100 → 90。題・職業選び・ゲーム・メニューで 帰線の 最大 1768 サイクル、描画中の 書きこみ 0)
メニュー仕様表の 抜け・バグを 論理破綻 しない ように 整理と 実装
1.28(足元→説明 が「本当に戻りますか?」に 落ちた/身に 着けた 防具・指輪を 置けて 効果が 残った → 置く・投げる を 出さない、呪われた 手の 武器は 断る/浸す の 後 iv_stay 範囲外/聖呪文が 動けない 方向への 押し続けで 毎フレーム こすれた → 動く・攻撃・罠で もがく 手 だけ/聖呪文の 上で 逃げ場の ない 敵が 殴った/巻きつき・飲みこみ 中に 階段で 逃げられた/巻きつかれて ほかの 方向で 手が 進まず 文が 毎フレーム/ミミックに 貼りつかない/番人の 問いを 共通の はい/いいえに/断った とき(呪い・両手剣・方向で やめた)は 手を 進めない/持ち物を 閉じた 直後の 方向選びで 上の 2 行目が 赤い 模様に 化けた〈V1.20 から〉。炎の 巻物の 処理を バンク 6 へ 移して CODE を 空けた)
背景を 黒 一色から:上下の UI と 窓は 紺と 黒の 市松メッシュ、フィールドの 暗い 所(未探索・岩)は 紺の 中央なし 十字(試作 3 の 2)。タイトル・職業選択も
1.29〜1.30(色 2 を 暗い 紺 $01 に:窓用 パレット 1・3 の 2 番、バーの 枠は 灰 → 白。字形を 送る 時に 網〈mwin.s gl_mesh〉、上の 窓の 2 行目は 網 + 下端の 白い 線、下の 窓の 上端 行 25 に 白い 線。窓の 枠は 上下左右・四隅・網の 10 枚に(mmenu.s mm_ftiles)。岩の マスは 十字の 絵で パレット 1。持ち物・わかった物・墓・職業・題の 窓も 網。持ち物の 赤い 字は 属性で パレット 3。Web の $01 を 001E74 に。2 行目の 左 8 ドットも 出す)
床の タイルの 切れ目が 強すぎる:黒の 線で 分けない/地面の 網掛け(未探索の 十字)は 暗めの 灰/階段の メッセージ(階の 札)も 枠の 窓に
1.31〜1.32(床:黒い 目地を やめ、下と 右の 面は 黒の 破線〈物の マスも 同じ 色:右を 灰・薄い 灰に したら 物の マスで クリームに なった ので 黒に そろえた〉。十字は 色 1 = 暗い 灰 $2D・属性は 0 に 戻す。階の 札は 行 10〜15 の 窓〈白の 二重線・紺の 網〉、字は 行 12)
道具メニューで 曲が 鳴る
1.33(一度 ゲームに 入ったら〈MU_ON = 2〉リセット まで 鳴らさない)
職業選択:説明の 後ろで 見えない 部分が 黒で 残る、網で 埋めて
1.33(隠す 色を 紺に、前の 本文を 1 フレーム 1 行ずつ 網で 埋め戻す〈cd_step〉。あわせて IRQ は ゲームの 外では 止めて 戻る)
通路の 背景に 見えない 部分の 柄(石の 模様の 外まわり だけ)/上 UI の 下の 白線 不要・行の 隙間を 網で/下 UI の 上の 白線 不要/メニューの 囲みは 1 本線
1.34〜1.35(通路:行・列で 一番 外の 石より 外 だけ 十字。上の 窓の 2 行目は 絵の 表の 後半 $80〜 だけを 使い〈網 $FC・$FD〉、IRQ は 後半 だけ 切りかえて BG を 消さない〈1 行目と 2 行目の 黒い 隙間が 消えた〉。枠は 白の 1 本線・角は 丸い)
装備中の 色が 一定で ない
1.35(列 0 は さわらない)
サブメニューは 案内を サブ 側に、元の メニューは 灰に、足元なら「足元/何もない」と 選んだ 物が わかる ように
1.35(足元・タイトルへ の 窓:見出し・中身・右下に 案内〈Ⓑ戻る Ⓐ決定 か Ⓑ戻る〉。メインは 属性で パレット 3〈灰〉、案内の 行は 網に〈名前表の 列 32 を またぐ ので 1 枚ずつ:前は 枠の 右下を 壊して いた〉。持ち物の 動作の 窓は 下に 案内、後ろの 一覧は パレット 0〈紺の 網・灰の 字〉)
落とし穴で 落ちる 時は パネルの 裏に スプライトが 回る ように
1.35(落ちる 間は 主人公・犬を BG の 後ろ に:階の 札の 窓の 裏を 通る)
横の 扉と 床を 同じ デザインに/横の ひび割れ(隠し扉)は 見つける まで 上面の 絵
1.35(縦の 壁の 扉 doorv = 床の 絵。壁の 上面/前面 は 下が 隠し扉 でも 壁と して 見る)
職業選択:説明を 出す 途中でも 上下を 効く ように(重く 感じる)
1.36(見出し・本文とも 段に 分けて 毎フレーム:行を 網に → 字形を 送る → 1 行ずつ 書く。連打 6 回が 全部 効く)
ペット名の 3 文字目が 消されない 時が ある
1.36(名前の 欄 4 列 × 2 行を 網で 消して から)
タイトル・職業選択の 背景にも マップの 十字/地下 1 階の 始まりも 階段を 下りる 演出・階 移動は 足音/敵を 倒した 印に 広がる 中割り/死んだ 時は フィールドを 赤系に
1.36(背景は 十字の タイル $FE、題の パレットの 1 番を 暗い 灰に、題の 字と ロゴの まわりも 十字。新しい ゲームは LV_KIND = 1。階段の 演出 中 8 フレームごとに 足音。倒した 印:初め 4 フレーム 1/2、次 4 フレーム 3/4 の 絵。死んだ:パレット 0・2 を 赤 3 段)
持ち物の 動作の 窓:上辺が 一覧の 枠に かぶる → 1 行 下げ、足元と 同じ「名前/動作/Ⓑ戻る Ⓐ決定」に。「外す」に 合わせたら 上 UI に 変化を 色つきで
1.37(窓の 上端 = 選んだ 物の 行、列 12〜26、見出しは 名前 +n。「外す」:防具は ⛨→外した 後〈今 + その 防具の 分〉、武器は 武 +n→−(赤)。死んだ 時の 処理を バンク 14 へ 移して 13 を 空けた)
上 UI の 変化の 矢印は いらない、色 だけで
1.38(⛨ n・武 +n/− の 値 だけを 色つきで。今の +n は 比べる だけで 出さない)
上の 表示の 部分で 色 だけ 表示で いい
1.39(防具:1 行目の ⛨ の 数を 着た/外した 後の 値に 置きかえて 色。防具 以外は 元の 数。武器の +n は 上 UI に 欄が 無い ので 右端の 武 +n/− の まま)
持ち物:一覧で 指して いる 物の 説明を いつも 出す(書き 途中でも キーが 効く)。動作の「説明」は 外す
1.40(1 ページ 7 品、行 20〜21 に 種類の 説明〈md_*〉。毎フレーム:網で 消す → 字形 6 字まで → 書く。動作の 窓を 開いて も 白の まま 出す。字形の 置き場が 足りない 字は 網〈gc_miss〉)
階段の まわりを 普通の 床の 上に ある ように/扉の 中の 黒を 床が うっすら 見える ように
1.40(下り:枠の 外 2 ドットを 床の 絵、上り:外周を 床の 絵。横の 壁の 扉の 戸口 列 5〜12 を 黒と 床の 市松)
説明文を OK パターン(28 字・字の 種類 16 以内)に
1.41(武器・防具・薬を 言いかえ〈15〜16 種類〉。上 2 行の バーの 字 21 種類を 先に 控えるのを やめ、使う 時 だけ に して 説明に 控えを 回した〈品物の 多い ページでも 全部 出る〉。仕様表 V140 の「説明文」シート)
食料の 増加の 色:バーの 枠まで 水色に なる
1.42(バーの 字は 中身の 行〈字の 5〜9 行〉の 中身の 点 だけ 色 1、枠は 白の まま。スプライトは 使わない)
腹の 白バーの 後 食べると 伸びる 表示が おかしい(白が 短く なり その 上に 水色)
1.43(境目の 字は 今の 分の ドットより 右 だけ 水色:型を 今の ドット 数 だけ ずらす)
探すで 壁を 壊した 時 効果音
1.43(隠し扉・通路を 見つけたら SFX_KILL)
ページ数 1/2 を ボタン表示の 行の 左側に
1.43(2 ページ 以上で 案内の 行の 列 2 に n/m)
説明は サブが 出て いる 時は 非活性色、サブの 下に なる 部分は 見えない
1.43(説明の 行も 灰、窓が 行 20 に かかる なら 列 1〜11 だけ 消して 10 字まで)
渡辺を 攻撃する では なく どの 名前でも 店主
1.43(m_shk_ask「店主を攻撃する?」)
お店では 直接 拾わず「◯◯が足元にある」で メニュー 足元から 拾う
1.43(店の 中〈u_inshop〉は 歩いて 拾わない:「{O}が足元にある。」。手なずけの 巻物の 処理を バンク 6 へ 移して CODE を 空けた)
メニュー 崩れてるね
1.14
階移動の 階段の 下を ブロックで 埋める。床の 移動は なく 階段の 上を 主人公と 犬が 移動(犬が ついて きて いなければ 犬は 出ない)
0.96(lvanim.s:段の 下〈列 13〜18・行 19〜22〉を 石の タイルで 埋めた。下りは 中心 x 124→142、上りは 128→110 を 8 フレームに 1 ドット、犬は 18 ドット 後ろ〈dogkeep の 時 だけ〉。バンク 11 が あふれた ので lvanim.s を バンク 14 へ)
階段の 下が 全部 ブロックだと 重い ので 緑の 部分(段の すぐ 下)だけ
0.97(lvanim.s:ブロック i の 列 13+2i・14+2i の 行 19+2i・20+2i だけ 石)
左右で 犬の 名前を 選ぶ 時 上 UI の 下の ゴミが 出る
0.97(名前の 字は 3 字分 とって おく)
スマホで 縦から 回転して 横に した 時に ボタンの タッチ位置が ずれる・取れない?
0.97(回転で 60・250・600・1200ms に 置き直し、押した ままの ボタンを 離す)
(デモで 見つけた)体力 7 未満の 魔法使いが 回復せず 逃げ続ける
0.97(回復を dochug の 先頭へ)
効果音の バリエーションと 飽きの こない めちゃくちゃ lo-fi で 長い 節の BGM
0.98(tools/music.py:80BPM・はねた 8 分・7th/9th の 進行 4 部分を A A' B A'' C B' A''' D の 64 小節〈約 3 分 12 秒〉、メロディは 型を 変えながら 繰り返し〈種 1985〉。src/music.s〈バンク 14〉:矩形 2 = メロディ〈12.5%・減衰・揺れ〉、三角 = ベース、ノイズ = ハイハット・スネア〈効果音に 譲る〉、wait_nmi から 毎フレーム。効果音に 飲む・杖・瞬間移動・金・メニューの かちっ を 足し、打つ・外す・倒す・打たれる は 毎回 音程を 少し ずらす)
通路が 暗すぎて ブラウン管で 見えない。灰色の ディザを 中心に
0.99(通路の 石を 灰 $00 と 濃い灰の 市松 ディザ、上の 縁は 灰。隠し通路の 跡は 元の まま)
部屋の 明るさが 広がる 表現で、暗い 部分は 黒 でなく 今の ブロックが 薄く 見える タイルに
1.00(見た目 13 = 薄い 床〈縁と 粒を まばらな 濃い灰〉。開きかけ の 間、今の 部屋の まだ 見て いない 床を 薄い 床で 描く〈見た ことには しない〉。判定は reveal.s rv_blank〈隠し通路の 跡の 判定も 固定バンクから 移して 空きを 作った〉)
上 2 行を トルネコ風 案B で 実装(30 階 までの メーターは 無し・メーターは 同じ 長さ・階段と 敵の 顔は 右寄せ)
1.01(1 行目:▼階・♥今の HP・肉・★Lv・⚔力・⛨AC・●金 右詰め〈src/stline.s、バンク 14〉。2 行目:HP・腹・経験の バー 各 4 マス 28 ドット〈両端 1 ドット 空けて 3 本を 分ける〉、階段の 向き・敵の 顔・ボタンの 案内を 右寄せ。バーの 色は 2 行目の 属性で。持ち物・職業選びの 上 2 行も 同じ 並び〈食べ物の 腹の 予告は 4 マス〉。FC 版の 割り切り:HP の 最大は 数で 出さず バーの 割合で 見せる〈30 マスに 収める ため〉)
レイアウト シート(8×8 = 1 マス)で 並びを 指定:体力の メーター だけ 大きく、HP の 数は 最大値の 幅で 右寄せ
1.02(1 行目:▼ 1・♥ 4・HP 5-7 右よせ・肉 9・★ 13・⚔ 17・⛨ 21・● 金 右詰め。2 行目:HP の メーター 7 マス〈画面 1-7、52 ドット〉・腹 9-11 と 経験 13-15 は 3 マス〈20 ドット〉・階段 17-18・敵の 顔 20・ボタン 24-30。バーは マス数を 選べる s2_bar に。金は いつも 右端〈力 18/** と AC が 長い 時は AC を 上書き〉。シート docs/HACK_画面レイアウト_8x8.xlsx も 更新)
メニュー整理:Ⓑ が 探す、Ⓐ は メニュー 固定、階段の 上だけ 探すが 下る/上るに。下UI での A/B の 選択は なしに Ⓑ から 実行
1.03(フィールド:Ⓐ・START = メニュー、Ⓑ = 探す〈押し続けで 続けて〉・階段の 上は 押し始めで 下る/上る。案内は 2 行目 右端に Ⓑ の 1 つ だけ〈探す・下る・上る・待つ、死んだ ら Ⓐ進む〉。書く・払う・金を置く は メニューの 行〈書く は 下の 方、払う・金を置く は その 場面だけ 2 行目〉。書くの「書きますか?(Ⓑいいえ Ⓐはい)」は 出さない。Web の ボタン表示・始めの ヒント・番人の 台詞も 直した)
書くは メニューの タイトルへ戻るの 上に「床に指で聖呪文を書く」。字は「聖呪文エルベレス」で こすれると 後ろから □ に 欠け、踏むと 床に「聖呪文エ□□□□」と書かれている。床の 絵は 今の 柄に E を 足した 専用(かすれても 変えない)
1.04(メニュー:先頭 床に指で聖呪文を書く・ タイトルへ戻る〈払う・金を置く は その 次〉。書くは いつも 指で ほこり〈何で 書くかは 聞かない〉。読む:Elbereth の 字だけ なら 残る 字の 数で eg_s1-8〈0 でも 1〉、ほかの 字〈金庫の 合図〉は 今まで どおり。床の 見た目 14 = 字の ある 床〈main.s ek_kind → engr.s eg_k〉、書いた・消えた とき 書き直す)
メニューの 試作(docs/mock)で 進める:Ⓐ で メインメニュー、どうぐ で 一覧、物を 選ぶと その 物の 動作の メニュー。フィールドは ずらさない
1.05(src/mmenu.s〈バンク 14〉:メイン = どうぐ・あしもと・床に指で聖呪文を書く・〈払う・金を置く〉・祈る・わかった物・タイトルへ戻る〈左の 窓 列 0〜13〉。どうぐ = 物 だけの 一覧〈Ⓑ で メインへ・START で 閉じる〉、動作の 窓は 選んだ 物の 右に 縦〈やめる は 外し Ⓑ、説明 を 足した:種類ごとの 1 行〉。あしもと = 足元の 物と 拾う・説明、無ければ 何も ない/階段/聖呪文。FC 版の 割り切り:窓の 後ろの フィールドは 見せない〈窓の 字形と マップの 絵が 同じ 絵の 表を 取り合う〉)
窓の 後ろの フィールドを 見せたい(8bit コンソールの 限界を こえろ)・窓の 枠は 白の 二重線
1.06(src/mwin.s:メニューを 開く とき 窓の 外に 写る マスの 種類だけ 絵の 表に 残し、ほかの 置き場〈/usr/bin/bash2〜/usr/bin/bashF・使わない 種類・〜〉を 窓の 枠と 字に 貸す〈gc_tile が 空きへ 飛ぶ〉。窓は 今の スクロールの まま 名前表へ、縁は マスに そろえて 属性 パレット 1、窓の 下の スプライトは 隠す。閉じたら マップを 描き直して 戻す。メインメニューと あしもとが フィールドの 上、どうぐ〈一覧〉は 字が 多い ので 今までどおり。枠は 白の 二重線〈色 3:パレットを 変えない〉で 持ち物の 画面も 同じ。説明の 処理は バンク 12 へ〈14 が いっぱい〉)
あしもと → 足元、聖呪文を記す、タイトルに戻る → タイトルへ。二重線の 角は 丸く
1.07(文言 3 つ。枠の 角 4 枚を 丸い 二重線に〈持ち物の 画面も〉)
階段の 演出は 上・下の フロアの 床は 不要、段 だけ。職業選びに 見た目も 並べる(まず 正面)
0.83(階段の 踊り場・下の 床を 消した。職業の 画面に 6 職業の 正面の 絵〔バンク 8 から スプライトの 絵 4〜9 へ〕、パレットは 戦士 青・騎士 銀・魔法使い 紫・ほか 茶 を 共有、指は 絵の 左)
階の 移動の 演出で キャラの パレットが 考慮されて いない。階段は 1 ブロック 4 段で、下りて いる 最中に フェードイン・フェードアウト、ゆっくり
0.84(黒い 画面も 職業の 色〔lv_dark で 題の パレットにも 差しかえ〕。段の タイル $F1〈4 ドット 2 段〉で 1 ブロック 4 段・全 12 段、人物は 1 ドットずつ 150 フレーム、初めの 16 で 明るく・終わりの 16 で 暗く〔落ちるも 同じ〕)
続き(移植の 残り):2 階の 保存(割り切り)
0.84(src/lvsave.s:作った 時から ある 物に 印〔O_FL $20〕、階を 離れる 時に 無く なった 枠を 64 ビットで 覚え〔1〜32 階〕、戻って 作り直したら 消す=拾った 物が また 出ない。文の 待ちを 8 → 4 行に して 場所を 空けた。FC 版:モンスター・見た 地図・扉・置いて いった 物は 戻らない)
続き(移植の 残り):3 骨(割り切り)
0.85(src/bones.s:死んだ 階〔2 階〜、!rn2(1+階/2) なら 残さない〕に 主人公の 位置・持ち物 6 つ まで〔80% 呪い、本物の 魔除けは 偽物〕・金〔持ち金 + 階 × rnd(30)〕を 覚える。新しい ゲームで その 階に 来たら 1/3 で 眠った 幽霊と 物・金が 出る〔地形が 違えば 空いた 所〕。置き場所は 階の 保存を 28 階 までに して 空けた 32 バイト〔$7260〜、印 $B5〕。FC 版:出た 物は その 階に いる 間 だけ)
待つ以外に出来ることが何も無くなった
0.86(長押しは 24 フレーム 後から 4 フレームに 1 手=早送り)
敵を倒した時に倒した表示 💢 みたいなの黄色でいいかな
0.86(src/klmark.s:主人公が 倒した・見える 所で 倒された とき その マスに 黄色い 💢 を 24 フレーム。絵は 使って いない 薬の タイル 48・49〈左右 対称で 右は 反転〉、スプライト パレット 3 の 2 番を 赤 → 黄〈杖の 光線の 縁も 黄に〉。FC 版)
縦画面のウェブキーボードが出るにしてもゲーム画面が縮小しすぎて
0.86(打つ 間は 縁と あごを 省き、入力欄を 2 行に して 画面を 大きく)
上UI2行目は出しっぱなしにしたのでその下にマップが表示し切れていると思ってはいけない
0.86(主人公を 見える マップの まん中に:WARP_HERO + 8)
死んだ時のボタンの表示
0.86(死んだ 後は Ⓑ を 消して Ⓐ進む)
死んだ時のボタンはインゲームのウェブ中も進むかなAもスタートも
0.86(死んだ 後は Ⓐ・START とも「すすむ」、Ⓑ・SELECT は ―)
ウェブにdとbのショートカットはいらない
0.86(文字キーの 近道 G〈デバッグ〉・B・H〈報告〉を 外した。Insert・Delete・F8 は 残す)
Aボタンが右 Bボタンが左という物理配置をゲーム中も徹底させる / 矢印系の機能表示はいらない
0.86(問いかけは ぜんぶ Ⓑ を 左・Ⓐ を 右〈はい/いいえ・番人・杖の 方向〉、職業画面は「Ⓐけってい」だけ)
DB に 自動送信で 1 ターンの 処理時間を 集めたい。そもそもの 高速化を 検討
0.86(ROM:NMI で main が 間に 合わなかった フレームを lag_n に 数える。ウェブ:手ごとの 処理落ちを 箱〈0/1/2/≤5/≤10/≤30/それ以上〉・平均・最大〈階と 手〉・階づくりで 集め、hack_tel の turn に 30 秒・2 分・5 分ごと・閉じる 時 送る。tools/prof.js で CPU の 内訳を 計測 → 状態行の 金の 10 進を 毎フレーム やめた〈1 階:止まって いる 間 25→0、探す 1 手 8.5→3.2 フレーム〉)
続き(移植の 残り):4 瞬間移動の 制御
0.88(src/tctrl.s:瞬間移動の 制御の 指輪を はめて いると、場所は 十字で 主人公〈点滅〉を 動かして Ⓐ〈岩・モンスター・大岩・罠の 所は「残念…」で おまかせ〉、Ⓑ は おまかせ。階は 十字で 左上の ▼ を 0〜40 に 変えて Ⓐ:30 以上は 地獄〈火に 強く なければ 黒焦げ・死因 地獄めぐり〉、0 は 空〈浮いて いれば 地上へ 脱出、ほかは 転落〉。FC 版:数を 打つ かわりに 十字)
(試して 見つけた)持ち物の 動作の 行に 案内の 字が 混ざる・「読む」の む が 欠ける
0.88(行 22-23 を 消す。動作の 行は 案内の 字形の 分を 空けて 描き、先読みは やめた)
題:VER を 1 行 上、(c)1985 から 上を もう 1 行 上げる。行進は ちらつかない 限り 増やし ティッカーの ように、新しい 主人公は ランダム
0.89(版 24 → 20・原作 18 → 16・© 20 → 18。行進は title2.s を バンク 11 へ:4 体を 72 ドット おき、左から 出る たびに 6 割 主人公〈職業 ランダム〉・ほか 犬・モンスター。絵の 枠 2〜5 でも バンク 8 を 読める 印〈SW_HI $40〉。色は 職業画面と 同じ 4 組。題の 間は rn2 が 回らない ので 自前の 乱数)
上 2 行 UI の 可読性:ボタンは 右詰め B・A の 順、SELECT・B・A の 順。探すを Ⓐ・書くを Ⓑ に。メーター類を 2/3(16 ドット)に。ハートの 隣に バー、その 隣に 14/14。メニューでは 最下段に 右詰めで ボタン案内。ゲーム中の セーブ ボタンは 無く し、メニューの 一番 上は「タイトルへ戻る」
0.89(1 行目:▼nn ♥▬ nnn/nnn 🍖▬ 階段 顔 … Ⓑ〈その 場の 動作〉Ⓐ探す。バーは 3 → 2 タイル〈14 ドット〉、黄の 属性は バーの 16 ドット だけ〈♥・肉は 白の まま〉。フィールドの Ⓐ・Ⓑ を 入れかえ〈ウェブの 説明・文も〉。SELECT の セーブを 外し、持ち物の 先頭に「タイトルへ戻る」〈閉じて はい/いいえ。自動セーブ なので つづきから〉。持ち物の 案内は Ⓢ・Ⓑ・Ⓐ の 順で 右詰め)
ROM DL は DEBUG の 下、REPO の 下に NAME(同じ 大きさ)。NAME が SKZ08 なら DB に セーブ・ロードの 開発者用 クラウドセーブ
0.89(横・縦とも DEBUG・REPO/ROM DL・NAME の 2 × 2。NAME は 報告と 同じ 名前〈hk.name〉。SKZ08 なら デバッグの 記録 タブの 保存・読込 1〜3 が RTDB hack_dev/s1〜3〈保存☁〉)
続き(移植の 残り):5 足跡
0.89(src/track.s:手ごとに 主人公の 位置を 50 まで、犬と 人型〈@・小文字〉は 違う 部屋・通路で 隣の 足跡を たどる。置き場所は 使って いなかった 内蔵 RAM $0600〜)
NetHack 的な 部屋の 明るく なり方:入った 時点で 敵と アイテムは 出し、歩く ごとに 3 段階で 床を 開く。入った 位置から 波状に、小さい 部屋は 1 回で 全部
0.89(src/reveal.s:明るい 部屋に 入ったら 壁・扉・物・敵は すぐ、床は 入った 位置からの 距離 ceil(D·段/3) まで、1 歩ごとに 段 +1。D ≦ 2 は 全部。階に 着いた 最初の 部屋は 全部)
(試して 見つけた)持ち物を 閉じて「タイトルへ戻る?」を 聞く 間、上の 2 行目が 化ける
0.89(yn_wait で st2_tick。Ⓐ で 答えた 後の 押しっぱなしで 探さない ように ロック)
10 階・敵 12 体で 止まって いても 処理落ち(半分の フレーム)、1 手 約 50 フレーム 落ちる → 毎フレームの 処理を 軽く
0.89(build_oam を バンク 11 へ〈src/oam.s〉、見えるかは バンク 1 を 直に 呼ぶ・前の 回の 並びの 順に 足して 整列を ほぼ 0 に〈同じ y は 主人公・枠・尾の 順を 保つ〉、敵の 絵の 位置は 止まって いれば すぐ 返す、2 行目は 力・AC・Lv・経験・金が 変わった 時だけ 組む、HP・腹の バーは 元が 同じ なら 控えを 写す、1 行目は 前半・後半を 交互に 組む。10 階・敵 12:止まって 200 フレームの 処理落ち 100→0、歩く 1 手 平均 45→約 10 フレーム・最大 143→30。画面は 前の 版と 同じ〈敵の 顔の 点滅だけ 最大 1 フレーム 遅れる〉)
犬を 横から 見た とき 胴が 細い。横から 見ても 胴が 太く 見える まるい 犬に
0.89(横向きの 犬〈tools/own_art.py DOG_RIGHT・左は 反転〉の 胴を 2 段 → 5 段に 太く、背中と おなかを まるく。足・しっぽ・顔の 位置は そのまま)
(まとめ)0.89 は 本体と 高速化の セッションで 別々に 出て いた
0.90(両方を マージ:高速化の 1 行目 前半・後半 交互・バーの 控えに、右詰めの 案内・2 字の バーを 載せた)
続き(移植の 残り):6 名付け・7 魔法使いの 変装。データベースの ルールは 書き換えて よい
0.91(src/vcall.s:名前を 知らない ! ? = / に 持ち物の 動作「呼ぶ」。当たり・はずれ・良さそう・悪そう から 選び、種類ごとに「見た目(呼び名)」。覚えるのは 識別の 表 OK の ビット 1〜3。FC 版:モンスター・1 つの 物への 名前は 字を 打てない ので 無し。魔法使いの 変装〈clonewiz〉は 原典でも rnd(5) == 0 で 起きない ので 移す もの なし。バンク 11 が あふれた ので 足跡・部屋の 床・呼び名を 新しい バンク 14〈far14〉へ。sandbox の DB ルールに hack_dev〈s1〜3〉を 足して 配った → 開発者 クラウドセーブが 動く)
「♥▬ 14/14」で あってる。ボタン案内は 2 行目の 右端で UI 整理
0.92(1 行目で 作った 案内を 2 行目の 23〜29 へ 写す〈hb_take〉。2 行目は ⚔ 0・⛨ 6・★ 11・バー 14-15・金 17-22〈1 万 以上は , なし〉。メニューでは 案内を 出さず、防具の 予告「⛨→n」を 2 行目の 右端へ〈★ と 金が 消えて いた のも 直った〉)
移植の 残りが あれば 続けて
0.93(src/disc.s:持ち物の 一番 下に「わかった物」〈名前を 知った 見た目つきの 物と 呼び名つき を 8 つ ずつ〉と「祈る」〈原典どおり 3 手 動けない。FC 版:文は 始めに〉。薬の 動作「浸す」:物を 選んで「なるほど…」、矢・クロスボウの 矢・ダーツを 病気の 薬に 浸すと 薬が 無く なり +1〈7 まで〉)
犬の 名前を 候補から 選ぶ。職業の 下に 犬の 絵と 名前、左右で 選ぶ。職業選択時も 上下の UI、階は G、職業ごとの 初めの 値を 上 UI で。B 戻る(タイトルへ)A 決定。この 時点では セーブを 消さない
0.94(role.s:上 2 行は 持ち物と 同じ 作り〈invtop.s it_copy を 切り出し〉で 選んで いる 職業の 体力・力・防御、階は G、右端に「Ⓑ戻る Ⓐ決定」。下 2 行に 案内。犬〈絵 10〉と 名前〈ポチ・シロ・クロ・ハチ・コロ・タロウ・マル・チビ、SRAM $67FC〉。文の 中の 連れて いる 犬は 名前〈text.s ml_name〉。セーブは 選び 終えて から 消す)
職業を 切り替える たびに 画面が 一瞬 暗く なる → 書き換わる ところ だけ 書く 方法は? 観光客の 金は RAND と 表示
0.95(role.s cl_diff:上 2 行の 符号を 控え〈内蔵 RAM $0780〜〉、職業を 変えたら 違う マス だけ 画面を 点けた まま 書く〈書きこみの 輪が 52 を 超えたら NMI 待ち〉。RAND の 字は 先に 控えへ)
OGP 作り直し
0.61(tools/ogp_shot.js で 犬・敵・物の いる 部屋を 撮り、横画面と 同じ 金の 面・赤い 枠、右に ROM の ロゴと 8BIT CONSOLE EDITION)
横:DEBUG・斜めの 段を 下げて ボタンの 高さ 1.2 倍(iPhone で 押しづらい・反応しない)、十字と ボタンは 少し 下、ボタンの 字は 太く。拡張コントローラーは 対応?
0.61(上の 段を 高さの 5% 下げ、高さ 66 → 80、十字・ボタンは 残りの 下 寄り、字は 太字)。拡張コントローラー:実機は $4016 の D0・D1 を 両方 見るので 拡張端子の パッドも 使える。Web は USB・Bluetooth の ゲームパッド(標準配列)
階を 移ったら フェード中に「地下 n 階」、フェードイン。歩く 時 敵も 自分も 犬も 1 ドット ホップ(動きが 無いのが 弱い)
0.62(src/lvcard.s:今の 画面を 4 段で 暗く → 黒に「地下 n 階」40 フレーム〔この 間に 階を 作る〕→ 暗い 色から 4 段で 明るく。歩く 間の まん中 4 フレームは y − 1、モンスター・犬は マスまで 残り 4〜12 ドットの 間 y − 1。FC 版の 演出)
Web の ボタンの 説明を 場面に 合わせて(題では 決定 など)
0.63(ROM の UI_MODE〔0 ゲーム・1 持ち物・2 はい/いいえ〕と ingame・on_stair・multi を 見て 切りかえ:題 = けってい/えらぶ、ゲーム = さがす・Ⓐ は 右上と 同じ〔書く・下る・上る・払う・置く〕・動けない 間は 待つ、持ち物 = もどる/えらぶ/ならべかえ/とじる、問い = はい/いいえ)
縦も 横と 同じ 赤い 枠で 囲み、機能ボタンも 面に 入れる。DEBUG は INS・REPO は DEL(ボタンの 上に キー)、SND ON/OFF・DIA ON/OFF は 左、DEBUG・REPO は 右(横は 少し 下げる)。ボタンの 字は スケーラブルで 1 行、ゲーム内の 表示と 統一
0.64(縦:金の 面・赤い 枠、コントローラーの 赤を なくし 面の 下 左に SND・DIA、右に DEBUG〔INS〕・REPO〔DEL〕。横:左上 SND・DIA と 巻き戻し、右上 DEBUG・REPO〔上に INS・DEL、その 分 下がる〕。キー Insert = デバッグ・Delete = 報告〔G・B・H・F8 も そのまま〕。ボタンの 字は 1 行・入らなければ 縮める、B は「探す」、A は 右上の 案内と 同じ)
でざいん(チャット:縦で ボタンの 効きが おかしい、十字の 所で ボタンが 押される。縦は 十字/AB 以外を その 上に。上が ぜんぶ 赤枠に なる)
0.68(十字・機能ボタンの 上は 除き、十字より 右だけ 近い ボタン。縦は SND・DIA・DEBUG・REPO を 十字/AB の 上へ。赤い 枠は 左右と 下だけ、テレビは 上の 安全な 余白の 下)
続き(移植の 残り):ユニコーンに 宝石・犬に 食べ物・店で 掘る
0.69(src/gift.s:外れた 後 ユニコーンが 宝石を 受け取る〔名前を 知る 本物 +5・知らない +1・ガラスと 知って いれば 興味 なし〕、犬(d)に 食べ物で なつく、店で 掘り始めると 店主が 注意、穴が あくと 隣の 店主が 身に つけて いない 物を 取る。掘る 間 怒って いない 店主は「敵が 隣」に 数えない。続けて 行動 中は 5 手で 文を 送らない)
メニュー:+n は 名前の 後ろに 空白を あけて、上に 止まった 時の 2 行、武器・防具は 着た 場合の 数字(よく なる 水色・悪く なる 赤・同じ 青)、食べ物は バーで 増える 分を 水色
0.70(src/invtop.s:持ち物の 上 2 行〔♥・🍖 8 マス/⛨→着た 時・武 今の +n →持った 時・🪙〕、指す 物が 変わったら 3 フレームに 分けて 書き直す。+n を 知らない 物は 0 / ?。名前は「両手剣 +1」〔一覧の 間だけ〕。1 ページ 9 個・行 6 から〔属性の 区切りに そろえる〕。願いの 画面は 11 個の まま)
縦の 背景を ぜんぶ コントローラー色は やめ、黒い 背景・エミュ画面・ボタンを ぜんぶ 入れた コントローラー
0.70(縦:黒い 背景、赤い 枠と 金の 面の コントローラーに 巻き戻し・SND・DIA・DEBUG・REPO・十字・ボタンを 入れ、テレビの すぐ 下へ)
続き(移植の 残り):アイスボックス
0.71(gift.s ice_box:中身が あれば 取り出すか 聞いて ぜんぶ 出す、何か 入れるか 聞いて 食べ物を 1 個 入れる。中では 古く ならない〔死体の 古さの 差を 覚える〕。FC 版:食べ物 だけ 4 つ まで、中身は SRAM で 階を 移っても 残る)
続き(移植の 残り):武器・杖で 彫る
0.72(Elbereth を 書く 時に 何で 書くか 選ぶ:Ⓑ 指 = ほこり、炎の 杖〔回数 − 1〕= 焼く〔消えない〕、短剣・両手剣・クリスナイフ・長剣・斧 = 持ちかえて 彫る〔+n が 減り (spe+3)·2+1 字 まで。+0 両手剣は「Elberet」で 効かない:原典どおり。−3 以下は 鈍くて 彫れない〕)
武器の 持ち替えは ターンが 進まなくて いい。メニューの 上 2 行は フィールドと 同じ もので
0.73(持つ は 時間 なし〔verb_ret0〕。持ち物の 上 2 行は フィールドの 状態行〔st_want・S2_LO/HI〕を 同じ 列に 写す〔バーは 8 ドットの 字形 9 つ〕。予告は その 上に:腹の バーは 食べた 後の 長さ〔増えたら 水色〕、⛨ の 右に → 着た とき、武器は 階段の 向きの 所に「武 今 → 持った とき」)
持ち替えの ターンは そのまま(戻す)。1 階で 書くで 探すが できず 詰まる
0.74(持つ は 1 手に 戻した。探す:エミュでは「書く → いいえ」の 後も Ⓑ で 探せた〔5 回 → 5 手〕。詰まる 場所の 報告 待ち)
メニュー中の 下 2 行は インゲームの 文の まま。一番 上の 行に 敵の 顔:同じ 部屋に 敵が いたら 赤、主人公が 傷を 受けたら 点滅。Ⓑ探す も 入れたいので 上の 段を 整理
0.74(持ち物:下に 前の 文・新しい 文〔行 25・27〕、案内は 行 23、1 ページ 8 個。字形の 控えを $16 から〔文 2 行で 足りなく なり 案内が 欠けた〕。状態 1 行目を 詰めた:▼階・♥体力・バー・🍖 15・バー 16-18・▼向き 20-21・敵の 顔 22〔作る タイル。赤 = 同じ 部屋〈廊下は 近く〉に 見える 敵、傷で 48 フレーム 点滅〕・Ⓑ探す 23・Ⓐ 27。2 行目:★ 13・経験の バー 16-18〔腹の 下〕・🪙 20)
縦も 横と 同じく 巻き戻しは 金の 面の 方に、ボタンの デザインも 横と 同じに、コントローラーは 横いっぱいで 十字は 左・ボタンは 右、かぶらない 範囲で 大きく
0.74(縦:金の 面に 1 段目 SND・DIA / DEBUG・REPO〔上に INS・DEL〕、2 段目 巻き戻し「◀ 0S ▶」「◀ 1F ▶」〔横と 同じ 丸い 長ボタン〕、十字 98×3・A/B 104・START/SELECT 88)
題:つづきから・はじめからを 2 行 上げ、Based on と ©1985 を 1 行 上げる
0.75(つづきから・はじめから〔PUSH TO DUNGEON〕を 行 16・18 → 12・14、Based on・© を 20・22 → 18・20、指も 12 行に。属性の 表〔gfx.py TITLE_ROWS〕も 合わせた)
落とし穴は 先に 文が 出て、階の 表示が あって から 次の 階へ。階段は 真横から 見た 階段(1 ブロック 2 段 × 3 = 6 段)を 主人公・犬の 順に 下りる、上りは 逆、落とし穴は 上から 落ちる
0.76(lv_card:暗く する 前に 文の 待ちが 空く まで〔150 フレーム まで〕+24 フレーム。src/lvanim.s〔バンク 11〕:黒い 画面に 石の タイル $F0 で 階段〈ブロック 3 つ・踊り場・下の 床〉、主人公 → 22 ドット 後ろに 犬〈ついて くる 時〉が 2 ドットずつ 下りる / 上る。落ちる:床に 向かって 加速、犬は 40 ドット 遅れて)
文字化け? 上の 2 行 UI と ボタンの 表示を 整理。←→ は なし、ページが ある 時は ◀▶ を 左右に。ちかちか して きついので 上下とも 2 行 いつも 表示。メニューの 枠は 上下の UI 以外の 所、上下の UI は インゲームと 同じ 位置に 出つづける
0.76(フィールド:上下 いつも 2 行〔text.s ms_idle〕。持ち物:状態 行 1・3、文 行 26・28〔フィールドと 同じ 高さ〕、枠は 行 5〜24〔線は 水色〕、一覧 6〜21・案内 22。予告の 色は 字の 点の 色〔パレット 1:水色・赤・白。予約 タイル $F2〜$FF に 面 0 / 面 1 だけ の 字〕で 属性を 使わない。控えの 上限 $F2〔GC_LIM〕。案内は ↔ なし、前・次の ページが あれば 左右に ◀ ▶)
続き(移植の 残り):化ける 敵
0.77(化けて いる ミミックは マスが 見えれば 箱の 絵〔シルエット 9・パレット 3:物の 色、動かない〕、正体を 現すと ふつうの 絵。状態行の 敵の 顔は 化けて いる 間 赤く ならない。FC 版:原典の ']'〈strange object〉を 箱の 絵で)
続き(移植の 残り):長い虫
0.78(src/worm.s〔バンク 11〕:尾は 頭の 通った あと〔動くと 伸び、wgrowtime で 体力 +3、ほかは 先が 消える。動けない 手は 先が 消えて −3〕、尾も 体〔m_at が 返す〕、尾を 打つと rnd(20)〈長剣・両手剣・斧 +5〉≧12 で 先なら 1 つ・途中なら 1/3 で 切れた 先が 新しい 長い虫〈ほかは 落ちる〉・頭の 体力 半分、噛まれる とき 尾 ごとに 1 の 一撃。FC 版:尾を 持てるのは 1 匹・12 まで、噛む 尾は 3 つ まで、尾は スプライト〔シルエット 10〕。スプライト処理を バンク 11 へ、犬の 噛む 処理を バンク 13 へ 移した〔固定バンクが いっぱい〕。作業変数の 置き場所を 整理〔持ち物・黒い 画面 だけの 物は マス書きこみの 輪の 後ろ半分〕)
iPhone で 枠外が 赤い(上の 帯)
0.79(theme-color #0e0d12 と html・body の 背景色を 黒に 明示)
横の 赤い 帯を 角丸に、ROM DL を ボタンに して 縦・横の レイアウトに 入れる
0.80(横:外は 黒、内側に 角丸の 赤い 枠と 金の 面〔::before〕。ROM DL は 長丸ボタン:横は 右上 DEBUG・REPO の 下の 段、縦は 巻き戻しの 右。押しても 近い ボタンに ならない)
続き(移植の 残りを 順番に 全部):1 職業選び。職業ごとに 外見を。題の 8BIT CONSOLE を 1 行 上げる
0.81(src/role.s〔バンク 11〕:はじめから の 後に 職業を 選ぶ 画面〔観光客・洞窟探検家・戦士・騎士・原始人・魔法使い・おまかせ〕、原典どおりの 体力・力・持ち物〔種類 0 = その 字の 何か、願いの 杖は 死の 杖〕、観光客の 金 rnd(1000)・持てる まで 力、洞窟探検家は 生まれつき 速い・忍び足、缶切り 1/25・1/10。魔法の 笛は 魔法使い か Lv10、自分で 瞬間移動は Lv6 かつ 魔法使い で なければ Lv10。主人公の 絵を 職業 ごとに 6 種〔下・上・左 から 12 コマ〕と 色。題の EDITION を 行 8 へ。テストは 職業画面で START を もう 1 回)
店主の 名前は 日本名が いい
0.35(名字 80〔田中・山田・森本…〕から 店の 種類 × 11 + 階 で 選ぶ〔原典は 種類ごとの 地名の 表の dlevel 番目〕。「いらっしゃい!森本の中古防具店へようこそ!」。店の 名前を 短く〔骨董品店・古本屋・酒屋 など〕)
続けて(願いの 杖の 選ぶ 画面)
0.36(字を 打てない ので 画面で 選ぶ:←→ 種類〔おまかせ・武器・防具・薬・巻物・杖・指輪・食べ物・宝石・道具・魔除け〕、↑↓ 品物〔鑑定 前でも 本当の 名前〕、強さ -3〜+3〔マイナスは 呪い〕、数〔食べ物・巻物・薬・宝石は 3 まで、矢〜石は 19 まで〕。杖は 作った ときの 回数、魔除けは にせもの、願いの 杖は 9/10 で -1 か 0〔原典どおり〕。おまかせ は 原典の 空の 入力〔でたらめ〕。g_plus を バンク 9 から 読んで いた 不具合も)
報告の 中で 名前ボタンを 押したら 名前を 入れられるように(localStorage で 覚える)
0.37(報告の 下に「名前」ボタン → 入力欄、hk.name に 覚えて 次から「名前:〇〇」。送る ときに name(30 字 まで)。sandbox の hack_bug の 決まりに name を 足した。tools/bugs.py の info.txt に name)
金庫と 番人
0.38(どこにも つながらない 2×2 の 金庫〔金は rnd(dlevel·100)+50 ずつ〕、1/3 で テレポートの 罠〔1 回 きり〕の 壁龕から 入れる。Python と 一致〔makerooms の secret・16 ビットの rn2w〕。中に 50 手 いると 番人。FC 版:名前は「Ⓐ名乗る/Ⓑクロイソス」。金を 置くのは Ⓐ〔「Ⓐ置く」。原典 d$〕。番人は 通路まで 仮の 道を 掘り、後ろを 埋めて 消える。番人にも ぶつかると 聞く。まだ:彫り字 ad aerarium)
次へ(特別な 部屋)
0.39(動物園 7 階〜・蜂の巣 10 階〜・墓場 12 階〜・沼 19 階〜。原典どおり 店の 条件の else で 順に。Python と 一致。入ると「デビッドの宝物動物園へようこそ!」など、モンスターが 起きる〔動物園は 1/3〕。幽霊・大ウナギを モンスターに 追加。池:入ると 溺れる〔テレポートの 指輪 と Lv 6 で 逃げられる、巻物は 白紙に〕、FC 版は「池に入る?」と 聞く。池の 中の モンスターは 溺れ、大ウナギは 池 だけを 動き、陸では 弱る。大ウナギは 巻きついて 水へ 引き込む。大岩で 池を 埋める。字形が 682 を 超えたので 続きを バンク 10 に)
大ウナギ(;)が 生まれた とき 見えない・mklev 中の 眠り が 原典と 違う
0.39
gen/version.inc の 文字列が V0.02 の まま
0.40(消した)
次へ(モンスターの 特別な 攻撃。GPT の 評価で 次に 挙がった もの)
0.41(毒針 A〔力 -1〕、コカトリス c〔1/5 で シュー → 石化 5 手:体が重く → 手足が → 石像〕、ドラゴン D〔1/6 で 火の 光線〕、凍る 球 F〔はじける〕、ゼリー g・ホムンクルス h〔動けない・眠る〕、蜂 k・へび S・さそり s〔毒〕、レプラコーン L〔金を 盗んで 飛ぶ〕、ニンフ N〔物を 盗む。FC 版:盗まれた 物は 無くなる〕、n〔何も 着て いなければ 癒やす〕、ふくろうぐま o〔つかんで しめつける〕、錆の 怪物 R〔兜・金属の 鎧が 錆びる〕、t〔飛ぶ〕、v〔まとわりつく〕、吸血鬼 V・レイス W〔レベルを 吸う〕、x〔足を 刺す〕、黄色い 光 y〔目が くらむ〕、悪魔 &〔1/13 で 悪魔を 呼ぶ〕。鎧の 魔法の 守り〔a_can〕も。まだ:飲み込む・魔法使い・長い ワーム・足の けが)
ゲーム中の コマンドを 1 つずつ 戻れる スライダー。実行 単位で メモリの スナップショット、localStorage で どれぐらい? 32 ぐらい?
0.42(手〔moves〕か 階が 変わる たびに エミュレーターの 状態〔約 28KB〕を とる。メモリに 128 手、localStorage hk.rew に 最後の 32 手〔約 0.9MB。8 手ごと と 閉じる とき〕。スライダー と ◀▶。戻って 遊ぶと 先は 消える〔取り消しと 同じ〕。localStorage は ふつう 5MB ほど なので 100 手 前後 まで 入る)
次へ(アイテム 効果:死体)
0.43(倒すと 4/5 で 死体〔2/3〕か 何か〔1/3〕、ミノタウロスは 穴掘りの 杖。死体を 食べる:腐って いた〔食中毒:10〜19 手で 死ぬ、犬の えさで 吐けば 治る〕・毒〔ADKSVabhks〕・気分が 悪い〔ELNOPQRUuxz〕、L N t で 瞬間移動、W で レベル、n・@ 共食い〔挑発〕、d 挑発、I 透明、B y 混乱、D 炎・F Y 冷気・k s 毒の 耐性、c は 石に なる、a は 石化が 治る、M は 宝箱の まね。腐った 食べ物の 効き目、犬の えさ、ローヤルゼリー、とかげ〔混乱を 2 に〕、おみくじクッキー〔FC 版の うわさ 12〕。doeat を 固定の 場所から バンク 11 へ)
次へ(モンスターの 持ち物・飲み込む・店主が 階段を 越えて 追う)
0.45(モンスターの 持ち物:床の 物の 表に O_X = $80 + 枠 で 持つ。L は 盗んだ 金、N は 盗んだ 物を 持ち、倒すと 落とす。L・O・D は 金、O・D・u は 宝石を 近く〔DIST < 25〕なら 拾いに 行く。L は 主人公より 金持ちなら 逃げる。飲み込む:罠男 ,・潜伏者 '・紫の 長虫 P〔1/4〕。中では 動くと 飲み込んだ 物を 打つ〔手ごとに 弱る〕、消化 5/7/12 手で 死ぬ、外の コカトリスで 両方 石に。ついて くる:隣の なつく 物・"1TVWZi&, "・追う 店主〔4 体 まで〕。FC 版:中では 主人公の 絵を 消す、ほかの モンスターは 待つ、杖・投げは まだ 外へ、店主は 次の 階では 怒った ふつうの モンスター。新しい バンク 12)
装備は 着て いても 上書きで 交換。食べる・飲む では メニューを 抜けない(B で 閉じる)。食料の 最初は 食べる では?
0.46(鎧:同じ 所の 鎧を 脱いで 着かえる〔呪われて いれば 脱げない。手間は 足す〕。指輪:両手 ふさがり なら 呪われて いない 方を 外して はめる。食べる・飲む・持つ・着る・外す・はめる・置く の 後は 持ち物に 戻り、最後の 文を 下に 出す。死んだ・傷を 受けた・階が 変わった・時間の かかる 動作〔食料 5 手・鎧の 着脱 など〕なら マップへ。投げる・振る〔向き〕・読む〔地図・瞬間移動〕は マップへ)
メニューに 枠線
0.47(持ち物の 画面の まわりに 灰の 枠。線の タイルは 開いて いる 間だけ マップの 石の タイルに 書く〔閉じれば load_chr で 戻る〕。指・下の 行は 枠に かからない ように 1 字 右へ)
進めて(終盤:迷路・魔法使い・魔除け・脱出)
0.47(26〜28 階 より 深い 階は 迷路〔下り 階段 無し。下から 来たら 上り 階段へ〕、30 階 以上の 最初の 迷路に 池と 壁に 囲まれた イェンダーの 魔除け・眠った 魔法使い・地獄の 番犬、ほかの 迷路は 大岩の 下に 願いの 杖。魔法使い:魔除けを 持つと 1/40 で 起きる、瞬間移動、呪文〔催眠・モンスターを 呼ぶ・眠りを 覚ます・速く・透明・雷の 光線〕、1/20 で 魔除けを 盗んで 消え 次の 階に 現れる。1 階の 上りで 地上へ:「脱出成功」画面〔魔除けを 持って か・最深の 階〕。Python の 写しも 迷路を 1 バイトまで 一致。FC 版:1 階の 上りは 聞く、呼ぶ モンスターは 隣、goldseen は 迷路で 0。デバッグに「魔除けの階」)
Elbereth って なに? と 進めて(Elbereth・道具を 使う)
0.48(Ⓐ で ほかに する ことが 無い とき「床に Elbereth と 書きますか?」→ ほこりに 書く。隣の 敵は 逃げ、その マスへ 入らない〔@ と 魔法使いは 平気〕。歩く・敵が 乗ると こすれて ? に なる。踏むと「…」と 読める。恐怖の 巻物も 同じ 効き目、2 度目に 拾うと 塵。金庫への 壁龕に「ad ae?ar um」。道具「使う」:カメラ〔起こす・目が くらんで 逃げる〕、笛〔起こす〕、魔法の 笛〔Lv 10 から なついた ものを 隣に〕、つるはし〔横:岩を 削る・壁に 穴、下:落とし穴 → 穴で 下の 階へ、迷路の 床は 硬い、店の 壁は 硬い〕、缶切り。FC 版:字は Elbereth だけ・いつも 指で、アイスボックスは まだ、掘って いる 間に 敵が 隣に 来たら やめる)
今回の プレイで 階が 始まる ごとに 状態を 取って 呼び出せる ように(到達階も 分かる)。巻き戻しの 隣。ターン −1・−4・…、左右の ボタンで
0.49(巻き戻しを 2 段に:「階」◀ ▶ で この プレイの 各階の 始めへ〔地下N階・ターン・k/n・最深〕、localStorage hk.fl に 40 まで、新しい ゲームで 消える。「手」◀10 ◀1 1▶ 10▶。スライダーは やめた)
残りを 並べて 進める
0.49(運が 実際に 効く ように。x に 刺されると 足を けが〔持てる 量が 減る、時間・速さの 薬・ローヤルゼリーで 治る〕。浮いた 目を 食べると テレパシー〔見えない とき 敵が 分かる〕。FC 版:月の 満ち欠けは 無い〔時計が 無い〕)
スコアは 大事
0.50(倒す:経験 × 4、犬の えさ 4、使って 名前が わかる 10。終わりに 金〔死ねば 1 割 引く〕+ 50 × 最深 + 深い 階の おまけ、脱出なら 隣の なついた ものの 体力・本物の 宝石・魔除け〔5000、本物なら 全体を 2 倍〕。墓・脱出の 画面に「得点 n」と「ベスト5の n 位!」か「最高 n」。上位 5 つを SRAM $7E50 に。FC 版:記録は 5 つ。状態行への 表示は 2 段 表示の 相談の 後)
数値の 整理:移動中「階・HP n/n バー・空腹 バー(数値 なし)」、停止時「Lv バー(次まで)・力・防御・お金 n,nnn」。力は 剣、ハラは 肉、空腹の 字は 不要、HP と 空腹の バーは 白→黄→赤、経験は そのまま、バーを そろえる(経験は 腹の 下)、HP は 最大の けたを 先に 取る
0.51(状態行を 2 段に:止まって いる 間だけ 上の 窓を 16 ライン 伸ばして 2 行目〔⚔力・⛨防御・★Lv と 次の Lv までの バー(腹の バーの 真下)・金 n,nnn〕。1 行目は ▼階・♥ 今の HP 3 けた 右よせ/最大 3 けた・HP の バー・🍖 腹の バー・Ⓐ。バーの 色は 属性で:HP 50% 未満 黄・20% 未満 赤、腹は 空腹 黄・衰弱 赤。2 行目の 字は マップ用の 絵の 表の 空き〔$AC〜$E7〕に 描き、上の 窓の 中で BG を 消した 2 ラインの 間に 絵の 表を 切りかえる。IRQ を 止まって いる 時 7・動いて いる 時 5 に、奇数 番目で BG を 出す。下の 窓の 文は 2 行 下〔NT_B 26-29〕へ。墓の 属性表を バンク 9 へ、状態行の 2 行目は 新しい バンク 13)
(コメント なし:墓の 画面)
0.52
ゲームオーバーの テキスト:PUSH START の 下に 得点 など、縦の 並びを 見直して
0.52(並びを 死因 12・階 14・得点 16・順位 18・PUSH START 22 に。得点の 元が 4 × 経験 + 2200 を 超えて いれば 4 × 経験に 直す〔階に 着く 時・終わる 時〕。※ その 端末の ベスト5 には 42064 が 残る)
重ならない ように コントローラーの 大きさを 調整、横画面は 大きく、巻き戻しは「1F 2F 3F T0 T-1 T-2」で 1 行・ラベル なし、デバッグは「デバ」に。攻撃を 自分か 犬が 食らったら 全体を 赤く・軽く 揺らす、攻撃したら 軽く 揺らす。「あなたは死んだ」は 赤字、死んだら 仰向けに 倒れる
0.52(巻き戻しを 1 行〔◀ 3F ▶ ◀10 ◀ T-2 ▶ 10▶、くわしくは 長押しの title〕、縦は テレビと 重ならない 所まで コントローラーを 下げて 入らなければ 縮める、横は 窓いっぱいに 合わせ テレビの 列を 広く〔760〕。体力が 減った(主人公・犬):PPUMASK の 赤の 強調 6 フレーム + 2 ドットの 横揺れ 8 フレーム、打って 当たった:揺れ 4。エミュレーターに 色の 強調を 足した。死ぬと 最下行を パレット 3〔3 番=赤〕で「あなたは死んだ…」を 赤字、主人公は 仰向けの コマ〔正面を 90 度 回した〕)
背景は ゲーム画面の 上に 黒い 座布団を 出して 文字を 表示で。題の 上下の 壁は ゲーム中と 同じ 色に。題では 主人公・犬・モンスターが 下の 行を 左から 右へ 行進
壁の 色・行進は 0.53(題の BG0 を ゲーム中と 同じ 灰〔$10〕に、ロゴ・EDITION を 2 行 上げ PUSH START との 間を 空け、行 26-27 を 主人公・犬・ゴブリン・ジャッカル・コウモリが 右へ 歩く〔title2.s。絵は ゲーム中の 入れかえ〕)。黒い 座布団は 0.54(墓・脱出を 別の 画面に せず、ゲーム画面の 上に 24 列 × 12 行の 黒い 板を 出して 字を 1 字ずつ 書く:名前表の 4 の 倍数に そろえて 属性〔パレット 2〕が はみ出ない、主人公の 反対側に。rp.s)
題:PUSH TO DUNGEON、125 INC. の 前の ©2026 を とる、8BIT CONSOLE EDITION を 1 行に、上の 壁を なくす
0.54(そのとおりに。墓・脱出の 板の いちばん 下は PUSH START の まま)
スマホ横は 専用の 画面:ふだんは 斜め なし、ゲーム画面は 縦で 整数倍、十字は 左・ボタンは 右。デバッグは ゲーム画面に 重ねて キーも ゲームから 奪う(ほかも 同じ)。スマホの 文字入力で キーボードに 画面が 隠れる:入力は 2 行に、その 上に ゲーム画面を 暗く せず(横も)
0.55(スマホ横〔タッチ・横・高さ 600 以下〕:十字・テレビ・ボタンを 付けかえ、テレビは 端末の 点で 240 × n。斜めの 初期値を OFF〔hk.diag='1' で ON〕。デバッグは .glass に 重ね、開いて いる 間 キーは G・Esc だけ。報告は キーボードの すぐ 上〔visualViewport〕に 2 行の 入力欄、テレビは その 上の 残りに。狭い 時は 見出しを 省く)
iOS で コントローラーが 正しく 出ない(十字が 消えて null が 出る)、カメラの 枠に かかると 押せない(セーフゾーンを 避ける)、横持ちの 十字・ボタンを 一回り 小さく
0.56(部品は 今の 場所に 関係なく 探す、回した 合図でも 合わせ直す、横は env(safe-area-inset-*) の 内側に 置く、十字・ボタンを × .78)
DB は 差分を 取れると いい、全件 保存は 不要、最大 256 件の FIFO
tools/bugs.py:キーの 一覧(shallow)で 新しい ものだけ 落とす(元から 差分)、256 件を 超えたら 手元に ある 古い ものから DB だけ 消す〔firebase CLI、--project sandbox-a113b〕。docs/reports には 全部 残る
横持ち:ボタン類が 小さいので 縦に 伸ばして、十字と A/B は セーフゾーンで 狭く なった ので できる かぎり 大きく
0.57(巻き戻しを 2 段〔階・手〕・G/H を 縦に 並べ 高さ 54px で 列の 幅いっぱいに、十字と ボタンは その 下の 残り いっぱい〔× .78 を やめた〕)
犬いってみますか!(原典の 犬の 動き)
0.58(src/dog.s:空腹〔hungrytime:食べると 5×栄養、+500 で ふらふら・最大体力 1/3、+750 で 飢え死に〕、足元・行き先の 食べ物を 食べる、物を くわえて 主人公の 近くで 落とす〔apport:落とした 後 すぐ 食べ物を もらうと 覚える〕、行き先 選び〔食べ物 → 運ぶ 物 → 主人公 / 部屋の 扉〕、罠と 呪われた 物を 避ける、笛で 寄る、臓物を 持つと 近くに いる。FC 版:主人公の 足跡〔gettrack〕は 無し、運んで いる 物は 階を 移ると 残る)
スマホで ボタンが きかない。巻き戻し・方向・デバッグの ボタンも 縦に 伸ばし 角丸 弱め、A/B・START・SELECT は できる だけ 大きく 縦 115%・楕円で なく 角丸、デバ・報告は 字を 小さめに DEBUG・REPO
0.58(.phlR でも 受ける。横持ちの 巻き戻しは 高さ 72px・角丸 9px、G/H は 角丸 9px、A/B は 104×120・START/SELECT は 88×101 の 角丸 四角、G DEBUG・H REPO〔字は .68em〕)
スマホを 快適に:横の 形は ぜんぶ モックの 形に(金色の 面・赤い 枠、左上 DEBUG・DB と 巻き戻し〔0S・1F〕、左 十字、右上 斜め・SOUND、右 丸い ボタン)。画面の 整数倍は やめる。DEBUG は G、DB(元 報告)は B
0.59(横は スマホも PC も 同じ 形〔phl〕:テレビは 縦 8 割・横 半分まで の 拡大、左右の 列に 合わせて 部品を 拡大。手は「0S・-2S」、◀ ▶ は 長押しで 続けて〔横では ◀10 10▶ を 出さない〕。ボタンの 字は DEBUG・DB、キーは G・B〔H・F8 も そのまま〕)
メニューでている間操作すると時間経過する?
0.60(メニュー・セーブの 問い・はい/いいえ の 後は Ⓑ を 離す まで「さがす」に しない〔B_LOCK〕)
調べると書くの関係性 書くが最優先?
説明のみ
立ち止まった時に 状態の 2 行目・前の 文が 出なくなった?
様子見
セーブして終わる? はい いいえ は 選んだ 方を 緑で ログに 残す
0.60(はい/いいえ の 問い 5 つ〔セーブ・店主・番人・池・地上・Elbereth〕を F13 yn_wait に まとめ、答えを「→ はい / → いいえ」で 文に 残す。緑は 文の 行が 1 色の ため まだ)
持ち物:装備は 行頭の * で、(手に持っている)(着ている)は 文字数を とるので やめる。SELECT で ジャンル・新・古 の 並べかえ
0.60(行頭 * / 全角空白で そろえる。赤は まだ。並べかえは 次)。+n の 説明:武器は 命中と ダメージに +n、防具は 防御(AC)を n 下げる=固く。大きい ほど うれしい。名前の 最大は「+n 」込みで 約 14 字
2 行目 でた! Web の A/B に ゲーム中と 同じ 日本語、B [O] A [P] は ボタンの 上。iPhone の 右の セーフゾーンが 広い
0.60(ボタンの 中:さがす/もどる・かいだん/えらぶ・セーブ・もちもの、上に「B [O]」など。横持ちは 切り欠きの ない 側の 安全な 余白を 角の 分〔10px〕だけに〔screen.orientation.angle〕)
金を アイコン化、階段アイコンと 見つけたら 方向の 矢印
次(状態の 2 行目)
眼に にらまれて いた 間 余計に ターンが 進む?
0.60(下と 同じ)
動けない時 入力なしに ターンが 進む → 状況を 出して ボタンを 入れないと 進まない ように
0.60(麻痺・気絶・酔いの 間は 右上「Ⓐ待つ」、Ⓐ/Ⓑ/十字で 1 手、押しつづけると 24 フレームごと〔main.s hl_wait〕)
同じ 文が ずっと 残る → 5 ターン後には 前の 文 扱いに。報告と スクショは プロジェクトで 振り返れる ように、直した 時間も
0.60(5 手 たったら 空の 行を 足して 前の 行へ〔dog.s msg_age〕)。報告は docs/reports/<id>/ と この 表(直した 版)に 残して いる
初めての 部屋で 扉から 波状に 明るく なる 演出
次
身につけ系は メニュー内で、文の 窓は メニュー中も、着たら「AC 7 (-1)」の ように
0.60(着た・脱いだ 後に「防御⛨n(±n)」〔着かえは まとめて 1 行〕。メニュー内の 窓は 次)
浮遊眼と コウモリの 見た目が 同じ → 一つ目に
0.60(シルエット 8:目玉 1 つ。浮遊眼だけ)
(続き)SELECT で ジャンル・新しい・古い の 並べかえ、選んだ 並びを 覚える、↔・SELECT も アイコンに
0.63(src/invsort.s:持ち物に 入手の 順を 付け〔add_inv〕、SELECT で ジャンル → 新しい順 → 古い順、並びは SRAM に 覚える。下の 行に Ⓢ並び・↔ページ〔字形 Ⓢ ↔ を 足した〕)
(続き)金を アイコン化、金の 上に 下り 階段の アイコン、見つけて いなければ *、見つけたら 主人公から 見た 向きの 矢印
0.66(状態の 2 行目の 金を 硬貨の アイコンに。1 行目 列 23-24 に 下り 階段〔▼〕と * / 8 方向の 矢印・上に いる 時は ・。迷路など 下り 階段の 無い 階は 出さない〔status2.s st_stair〕)
(続き)初めての 部屋で 扉から 波状に 明るく
0.66(見える マスを 主人公から 近い 輪の 順に 書く〔lvcard.s vis_rings〕、マスの 書きこみは 1 フレーム 3 マスまで。見える 物は いっぺんに 決まる。カメラが 動いた 列は 一度に 出る ので 波は 短め)
(続き)装備の 行頭の * を 赤で
0.67(持ち物の 画面だけ BG2 の 3 番を 赤に し、身に つけた 行の 列 2-3 の 属性を パレット 2〔invsort.s is_red〕。* の 後ろに 空白、見出しは 名前の 列へ)
うごかなくなった?
0.07(行列を 256 件・SRAM に、あふれたら 自分で 減らす)
部屋に入ったときカクってなる!
0.07(同上。大部屋は 数フレームで 順に 現れる)
とじこめられた!
―(操作の 案内を 足す 予定)
横画面ではレポートボタンはコントローラーの右上あたりに。R で起動。入力欄はゲーム画面はそのままでコントローラーの領域に(縦も同じ)
0.10(ボタンを コントローラーの 右上へ、R・F8 で 開く、入力欄は コントローラーの 箱に 重ねる)
ラスターを 外す/隠し扉の 壁に 亀裂(原作に 足す ヒント)/攻撃元→攻撃先の スプライト アニメ/A-Z a-z を 外す?/床の へこみ絵を 戻す/画面下部 UI の 改修(HP・AC を アイコン?)
0.12(ラスターを 切る=tools/warp.py の ON・隠し扉の 壁に ひび〔原典に 無い FC 版の ヒント〕・攻撃の 踏み込み〔主人公・モンスター・犬〕・a-z を 外す〔拾った とき は「〇〇を拾った。」〕・内側の 面の 絵を 戻す・状態行を アイコンに〔▼地下 ♥HP ⛨AC ★Lv、チャットの 要望で Lv と 地下も〕)
開けた 扉は 開いた 絵に。横方向は 扉が なくなる だけで いい
0.12(横の 壁の 扉は 開いた 戸口、縦の 壁の 扉は 切れ目だけ)
横画面の レポート 入力欄が 狭く ボタンが 潰れる → 右側 全体を 使って 大きく。字形を k8x12L に
0.11(横は テレビの 右 全体、縦は テレビの 下 全体。字形 k8x12L)
画面に ボタンの 機能を 出す?(A・B は 場面で 違う)
0.13(状態行の 右端に その 場で 効く ボタンだけ:「Bさがす」、階段の 上は「A降りる/A上る」も。状態が 長い ときは 出さない)
ボタンを 丸い 字に/A・B の 左右は 本体どおり?(8bit コンソールは 左が B)
0.14(Ⓐ Ⓑ の 字形。案内は 左 Ⓑ・右 Ⓐ の 順。キーボードも 左の O が B・右の P が A に 入れかえ)
階の アイコンは 斜め線 でなく ⊿ の 逆で 斜めが 階段状に(上の 列の 統一感)
0.15(階段状の 塗りつぶし。盾も 塗りつぶしに 揃えた)
まだ未開の部屋にはいった時ガビル
0.17(Y を 入れる 位置に して 先頭でも 0 に)
扉の上の敵とあたる.. 扉の向こう?だとみえない/部屋が暗い判定でも戦っている敵は表示する
0.17(同上。隣の 敵は 暗くても もともと 見える 決まり)
B と A は常に表示、A は --- で OK、位置がずれないでほしい/手前の項目群は難しいか?
0.17(状態行を 列 固定:0 ▼・3 ♥・12 ⛨・15 ★・18 空腹・21 Ⓑさがす・26 Ⓐ---/降りる/上る)
絵の 方針:背景は 白黒灰の ディザ中心・床の 物は クリーム・敵は いったん 赤黒・主人公と 犬は 白。要る チップの 全リスト
0.18(パレット 変更・マスごとの 属性で 物だけ クリーム・床と 壁に ディザ。リストは docs/art/chip_list.md・chips.csv)
上に 数字系・下に メッセージ に したい。主人公は 青、犬は 水色
0.19(ライン 0-23 数字〔上 8 ラインは ブラウン管 用に 空け〕・24-195 マップ・196-235 文 2 行、枠なし。主人公 青・犬 水色。★の 列を 16 に)
罠を 続けて
0.20(罠 7 種と ミミックの 生成〔Python と 一致〕、踏む・かかる・さがして 見つける・モンスターも かかる。表の 一部を 文字列の バンクへ 移して 場所を 作った)
次の ステップ:文字列の バンクを 分ける → 杖
0.21(文字列 その 2 を バンク 5 に。番地 $A000〜 を 読む 時だけ R6 = 5。文の 置き場が 248 バイト → 2.7KB+5.6KB)
杖
0.22(17 種を 振れる:方向なし・すぐ 効く・光線〔壁で 跳ね返る〕・穴掘り。モンスターの 速い/遅い・凍る・無効。願いの 選び方は まだ。$8000 の コード バンク 6 と 遠い 呼び出し far3)
指輪と 投げる・射る
0.23(指輪:はめる・外す〔左右は 自動〕、守り・力・攻撃・浮遊・再生・瞬間移動・探す・透明が 見える・忍び足・挑発・空腹・毒/炎/冷気への 耐性。まだ:衝突・警告・瞬間移動の 制御・化け物よけ。投げる:1 つずつ、弓で 矢を 射る 補い、ブーメラン、天井・足元)
階段の 絵:下りは スケッチ 10(二重 枠の 穴に 右へ 高く なる 3 段)、上りは スケッチ B(箱型の 3 段・左下に 影)。これで 最後
0.24(tools/stairs_draw.py の down_final・up_final を 今の 床と 合わせて 入れた)
GPT 製の 絵に 一気に 差し替え(記録用の スクショも)
0.25(マップ 16 枚・罠 7 種・床の物 案2・主人公 案2 の 12 コマ・犬 12 コマ・敵 33 種 3 コマ。絵の 元は ROM の バンク 7・8、見せる コマ だけ CHR-RAM に 書く〔sprite.s〕。まだ 絵の 無い 22 種は 同じ 形の 仲間の 絵。前後の スクショは docs/devlog/media)
セーブ:実機・エミュレーターは システムで、ブラウザ版は localStorage で。題で つづきから/はじめから を 選ぶ
0.26(SELECT で セーブして 終わる〔原典 dosave〕、つづきから で 読み 戻して セーブは 消す〔原典 dorecover〕、はじめから は 古い セーブを 消す。電池つき RAM の $7E60〜 に 主人公の 状態 約 70 バイト+印+確かめ。ページは 8KB を localStorage hk.sram に)
大岩を 押せない とき「大岩は動かない。」が 押して いる 間 何度も 出る
0.27(押した 瞬間 だけ 文を 出す)
隠し通路にも 壁の ひびの ような うすい ヒントが ほしい
0.27(隠し通路は 隣に いる とき うすい 跡の 絵〔通路の 絵を まばらに〕。見た ことが あれば ずっと 出る)
動くと 画面の 上が 化ける
0.27(絵は 32 バイト × 2 の 速い 道で 1 フレーム 2 枚 まで〔VBUF が 空の とき〕、VB_MAX を 140 → 100。帰線の 最大 2133/約 2270 サイクル)
動いて いなくても 化ける
0.27(同上)
左へ 歩くと 主人公が 右を 向く
0.27(絵を 手描きに 戻し、増えた コマ〔主人公・犬 4 向き × 3、敵 3 コマ、罠 7 種、死体〕を 描き 足した)
上へ スクロール した 後、上の 段の 下に 1 本 余計な 線(橙の 点線)
0.27(ライン 21 の IRQ で BG を 消して から 切りかえ、ライン 23 の IRQ で BG を 出す。22-23 は 黒)
GPT の 絵が いけて いない:元の 絵に 戻し、増えた 分を Claude 側で 補う
0.27(tools/own_art.py:主人公 12 コマ・犬 12 コマ・敵 8 形 × 3 コマ・罠 7 種・死体。GPT の データは art_out・gpt_art.py に 残す)
自動セーブは される? → せめて 階段では 自動セーブ
0.28(手が 進む たび・階が 変わる たびに 自動セーブ〔地図・持ち物は 電池 RAM で いつも 最新 なので 主人公の 状態も 揃える〕。つづきから でも 消さない、死んだら 消す。SELECT の「セーブして終わる」は そのまま)
レポートの ボタンを 少し 上へ・「報告」に・ショートカットを H に
0.29(ボタンを 12px 上へ、「H 報告」、H・F8 で 開く〔R は やめた〕)
死んだ 後 止まる?/ダンジョンの 絵も Claude 製に 戻して・階段は 協議した 線で/エミュレーターで 動くと 絵が ガビガビ
① 0.30(数えを 自分の 変数 rip_t に)② 0.27(手描きに 戻した。階段は スケッチ 10・B の まま)③ 0.27
今 いる 部屋の 全体が 明るく ならないのは 仕様?
―(答え)
階段の すぐ 上に 怪物が いると 犬が ワープする? 位置を 決めてから 表示して ほしい
0.30(着いたら 階段の モンスターを 隣へ どかしてから 犬を 置き、それから 画面を 作る)
死んだ 後に タイトルに 戻れない?
0.30(墓 → Ⓐ で 題 → Ⓐ で 始まる を 試験で 確かめた)
タイトル画面・死亡画面に 主人公と 敵の スプライトが 残って いる
0.30(墓と 題で OAM を 消す、題で ingame = 0、墓からは リセットで 題へ)
報告の ボタンが 小さすぎる/題は Ⓐ でも 決定、死んだ 後も Ⓐ が 効くように
0.30(ボタンを 17px 太字・105×42 に。題・墓とも Ⓐ と START で 進む)
左へ 移動して いる 時に 右を 向いた まま
0.31(mdx の 符号で 左右を 決める。左 2・右 3 を 試験で 確かめた)
Web に デバッグモード:G で 開く(H 報告と 並べる)。コントローラーを 消して マウス・タッチで 操作。無敵 ON/OFF・お店の ある 階 など 特徴の ある 階を 作る
0.32(src/debug.s:ページが dbg_* を 書き 入力待ちで 実行。無敵〔ROM の 中で HP 満タン・死なない〕・全快・金 +1000・Lv +1・全部識別・階を 指定して 作る/作り直す〔種に 混ぜる〕・地図を全部・下り階段へ・敵を全部消す・物を出す〔種類〕・敵を出す〔名前〕・速度 ×1/×2/×4・止める・1 コマ 進む・情報。お店の階 は 店の 移植で 使える)
デバッグの 追加(提案した もの)を 入れる。UI は いい 感じに
0.33(タブ:主人公〔状態 混乱・目つぶし・浮く・速い・空腹・透明〕/階〔秘密を見る・種を 指定して 最初から〕/出す〔物・敵・罠を 足元に〕/記録〔状態を 保存・読込 1-3、ファイルへ、ファイルから=報告の state.json で 再現〕/エミュ)
いつ 死ぬか わからない:14(14) は 14/14 に。24 ドットの 枠つき バー、満タン 白、割合で 減り 20% 未満で 赤。体力は いくつまで?
0.33(♥ の 後に バー〔枠 灰・中 22 ドット〕、その 後に 14/14。体力は 8 ビット=最大 255〔原典は 上限なし、ふつう Lv14 で 80〜150 ほど〕。状態行の 並びを 詰め、Ⓑさがす → Ⓑ探す、Ⓐ降りる → Ⓐ下る)
下の 文:ふだんは 下の 1 行 だけ、止まると 前の 行も 灰で
0.33(文の 行を 属性の 半分に そろえ〔NT_B 行 24・26。状態は 行 20〕、前の 行は パレット 3:止まって 30 フレームで 灰、動くと 黒)
字が 増えると 文が 途中で 切れる(「ようこそ、」で 切れた)
0.33(tools/loc.py:下 8 ビットが 0 の 番号は 空けて おく)
デバッグの 追加(提案した もの)を 入れる。UI は いい 感じに
0.33(タブ:主人公〔状態 混乱・目つぶし・浮く・速い・空腹・透明〕/階〔秘密を見る・種を 指定して 最初から〕/出す〔物・敵・罠を 足元に〕/記録〔状態を 保存・読込 1-3、ファイルへ、ファイルから=報告の state.json で 再現〕/エミュ)
いつ 死ぬか わからない:14(14) は 14/14 に。24 ドットの 枠つき バー、満タン 白、割合で 減り 20% 未満で 赤。体力は いくつまで?
0.33(♥ の 後に バー〔枠 灰・中 22 ドット〕、その 後に 14/14。状態行の 並びを 詰め、Ⓑさがす → Ⓑ探す、Ⓐ降りる → Ⓐ下る)
最大体力は 255 で あってる?
0.33(hpmax_inc:255 で 止める。デバッグも)
下の 文:ふだんは 下の 1 行 だけ、止まると 前の 行も 灰で
0.33(文の 行を 属性の 半分に そろえ〔NT_B 行 24・26。状態は 行 20〕、前の 行は パレット 3:止まって 30 フレームで 灰、動くと 黒)
字が 増えると 文が 途中で 切れる(「ようこそ、」で 切れた)
0.33(tools/loc.py:下 8 ビットが 0 の 番号は 空けて おく)
店の 移植
0.34(2〜19 階で rn2(dlevel) < 3 の とき、明るく 階段が 無く 扉 1 つの 部屋が 店〔Python と 一致〕。8 種:指輪・杖・武器・食料品・古本・酒・中古防具・骨董品。店主〔扉の 内側に 立つ〕・品物・ミミック。入ると あいさつ、拾うと 請求〔値段は 原典 getprice、FC 版は 拾った とき 値段を 出す〕、Ⓐ払う、置くと 返す・売る〔半額、怒って いれば 1/3〕、使った 物は 代金、払わずに 出ると 盗んだ 扱いで 店主が 追う、死ぬと 借りを 持って いく。怒って いない 店主に ぶつかると 聞く〔FC 版〕。まだ:階を 越えて 追う・つるはしで 掘る・犬が 品物を 運ぶ)
方向の ない 杖(光・隠し扉発見・願い 以外)の 回数が 1 多い
0.34(NODIR の ビットを 見て +7)
上の 段の 下に オレンジの 点線(チャットの 画面)
0.38(camy - 1 に 戻す。camy = 0 は 239)
今 画面の 上に 赤い 点線が でて いるよ!
0.38(camy - 1)
(コメント なし)
―
移動中は ログの 灰色に あたる 行も マップを 表示して ください!
0.40(動いて いる 間は 下の 窓の IRQ を ライン 195 → 218 に、窓は 行 25 の 7 段目から〔ライン 220 に 新しい 行〕。マップと スプライトは 24 ライン 下まで。止まると 30 フレームで 2 行に 戻る。毎 フレーム NMI が 表〔mode_tab〕から 選ぶ)
ウェブ版で 斜め 入力 オフの スイッチ つける
0.40(SOUND の 左に「斜め ON/OFF」。localStorage hk.diag。OFF:画面の 十字キーは 4 方向、キーボード・ゲームパッドは 縦と 横が 同時なら 後から 押した 方 だけ)
文字化け(持ち物の 下の 動作の 行が「投げる ▶ る」)
0.46(INVL・WL を $7B80 へ。動作の 字を 先に 控えに 入れる。控えを $FE まで 使う)
Hack 1.0.3 を 8bit コンソール(6502・MMC3)に 移した 作り方の 記録。
HACK 8BIT EDITION / 125 Inc. 原典:Hack 1.0.3(1985、CWI・Jay Fenlason ほか、BSD 3 条項)
HACK 8BIT EDITION は、ローグライクの古典 Hack 1.0.3 を 8bit コンソールの実機で動く ROM に移植したものである。原典の C ソースを仕様書として扱い、乱数・迷宮生成・戦闘・店・罠などのルールを 6502 アセンブリ(ca65)で書き直した。端末の文字画面は 16×16 ドットのタイルとスプライトに置き換え、文章は日本語と英語で表示する。
開発は 2026 年 10 月 8 日の V0.01 に始まり、11 月 3 日の V3.77 まで 27 日間続いた。版は公開のたびに 0.01 ずつ上げており、377 段になる。不具合報告と要望は docs/reports/log.md に時刻・版・原因・修正版の形で記録しており、その件数は 520 件(ゲーム内のレポート機能から約 100 件、チャットでの依頼 423 件)である。最初の記録は 10 月 8 日 03:08、V0.06 での「うごかなくなった?」だった。
| 項目 | 値 |
|---|---|
| 期間 | 2026-10-08 〜 2026-11-03(27 日) |
| 版 | V0.01 → V3.77(377 段) |
| 記録 | log.md 520 件 |
| ソース | 6502 アセンブリ 80 本・約 59,600 行、Python ツール約 10,600 行 |
| ROM | マッパー 4(MMC3)・PRG 512KB・CHR-RAM 8KB・電池つき PRG-RAM 8KB |
マッパーは MMC3 を選んだ。PRG バンクを 8KB 単位で切り替えられること、スキャンライン IRQ で画面を分割できること、電池つき PRG-RAM を載せられることが決め手である。PRG は当初 256KB だったが、10 月 30 日に空きが尽き、tools/build.py の PRG_BANKS = 64 で 512KB に広げた。
$8000 は R6 で切り替える窓、$A000 は R7 でバンク 1(DATA1・CODE1)を常に見せ、$C000-$FFFF は最後の 2 バンクを固定のコード(CODE・VECTORS)に当てる。リンカ設定 src/nes.cfg は build.py が生成する。
| バンク | 中身 |
|---|---|
| 0 | タイルの絵の元(GFX) |
| 1 | 常駐の表とコード(DATA1・CODE1) |
| 2・5・10 | k8x12 の字形(682 字目以降は別バンク)、5 は文字列その 2 |
| 3 | 文字列と、ゲーム中だけ読む表(STR) |
| 4 | 迷宮生成(OVL) |
| 6・9・11〜15 | 遠いコード(杖、墓・店、食べる・OAM、モンスターの持ち物、状態行、足跡、画面の作り直し) |
| 7・8・16・17 | スプライトの絵(敵、主人公・犬、敵ごとの個別の絵) |
| 10 | 解説・BGM ドライバと曲 |
| 18 | 美咲 8×8 の全字 |
| 19〜22 / 23〜26 | 文章(日本語 / 英語) |
| 27 | ログの窓 |
| 28・29 | 解説の文(日本語・英語) |
| 30・31 | 得点・名前・ランキング / 開発迷宮 |
| 32〜61 | 空き |
| 62・63 | 固定($C000-$FFFF) |
どこからでも呼べる固定領域と CODE1 は、開発中ほぼ常に残り数十〜100 バイト前後だった。新しい移植は切り替えバンク(FAR6〜FAR31)に書き、F3〜F13 などの far 呼び出しマクロで呼ぶ。A・X・Y をそのまま渡し、A・X とフラグを返す規約である。どこかのバンクがあふれると処理を引っ越す。FAR13 の贈り物・氷の箱を FAR11 へ、FAR6 のスプライト処理を FAR11 へ、CODE1 の犬の噛みつきを FAR13 へ、といった移動を繰り返した。10 月 11 日時点で ROM の半分が空いていたが、日英 8 バンクの文章、美咲の全字、敵ごとの絵で 10 月 29 日にはほぼ埋まった。
CHR は ROM ではなく 8KB の CHR-RAM とした。字形もスプライトも PRG 側に置き、画面に出る分だけをその都度 CHR-RAM のタイルに書き込む。これにより数百字の漢字や敵ごとの絵を、パターンテーブルの容量に縛られずに扱える。書き込みはすべて VBUF($0100)に積み、NMI の vb_exec が帰線期間に流す。
内蔵 RAM 2KB はゼロページ、作業変数、VBUF、BGM ドライバの変数(MUSRAM)に使う。ゲームの状態本体は電池つき SRAM($6000-$7FFF)に置く。地図 1,760 バイト(80×22)、モンスター 24 体、床の物 64 個、持ち物 52 枠で約半分を占める。残りは文の待ち行列、階の記録、骨、字形の控え、名前とランキングである。電池 RAM の $7EC0-$7FFF は V3.43 のランキング追加で満杯になった。空きを作るため、文の待ちを 8 行から 4 行に、階の保存を 32 階から 28 階に縮め、持ち物画面や階の演出の間はマス書き直しの行列を作業領域として借りている。
原典 hack.mklev.c は src/mklev.s に移した。部屋・階段・通路・扉・壁龕の生成を、原典と同じ順序と同じ乱数呼び出しで再現する。乱数を消費する箇所は、まだ中身を実装していない処理でも原典どおりに消費させる。符号つきの値(部屋の hx の -1、通路の向きなど)は 2 の補数で持つ。地図は LEVL[x*22+y] の 1 バイトで、下位 4 ビットが種類(def.rm.h)、$40 が明るさである。
答え合わせには Python 版 tools/mklev.py を用意した。同じ種から 6502 版と Python 版で階を作り、node tools/test.js で ROM を動かしたあと tools/check_mklev.py で SRAM の LEVL を比較する。合格条件は 1 バイトも違わないことである。罠・ミミックの生成、迷路(hack.mkmaze.c)も同じ方法で照合した。アセンブリの不具合と移植の解釈違いを切り分けられるため、生成ロジックの修正は常にこの比較を通してから公開した。
モンスターと物の表は手で写さず、tools/mons.py が hack.monst.c から、tools/objs.py が物の定義から生成する。原典と挙動を変えた箇所は、ソースに「FC 版:…」と理由を残す決まりにした。
原典の 1 文字を 16×16 ドットの 1 マスにした。80×22 の地図のうち 16×11 マスを表示し、主人公を追って縦横に滑らかにスクロールする。ネームテーブルは横ミラーで、NT_A の行 0〜29 と NT_B の行 0〜13 を合わせた 44 行に地図の縦 22 マスがすべて収まる。横は 32 列の輪として使い、左端 8 ドットを隠して書き換えの境目を見せない。属性(パレット)も 16×16 単位なので、マスごとにパレットを選ぶ形がそのまま成り立つ。
明るい大部屋に入るとマス書き直しの行列(64 件)があふれ、ゲームが止まった。これが最初の不具合報告であり、V0.07 で行列を 256 件に広げて SRAM に移した。
V0.02 では、奥を縮め手前を伸ばすラスターの遠近表示を入れた。tools/warp.py が画面の各ラインに地図の何ライン目を出すかの表を作り、build_irq がカメラ位置から $2006・$2005 の書き込み値を毎フレーム組み、IRQ で途中のラインに書き込む。上端で 1.55 倍、主人公の少し上で等倍になる設定だった。見た目は面白いが試しにくいという報告を受け、V0.12 で warp.ON = False として平面に戻した。仕組みは残してある。
スプライトは 8×16 で、絵の元は ROM(バンク 7 が敵、バンク 8 が主人公・犬、16・17 が敵ごとの個別の絵)にある。src/sprite.s は表示する 1 コマ分(64 バイト)だけを CHR-RAM の決まった番号に書く。枠 0 が主人公、枠 1 が犬、枠 2〜9 がその画面にいる敵の種類 8 つまでである。
並べる処理(src/oam.s、バンク 11)は、手前(下)にいるものを先に置く。OAM は番号の小さいものが上に描かれるためである。y の大きい順に挿入整列するが、前の回の並びを初期順にするため、ほぼ整列済みの列を扱うことになり速い。移動の途中で 1 ドット跳ねる、攻撃の踏み込みでずらす、といった演出もここで行う。
画面は上の状態行、地図、下の文の窓の 3 つに分かれる。上の 2 行は美咲 8×8 の字で、NMI がライン 7〜21 を表示し、ライン 21 の IRQ で地図に切り替える。地図はライン 24 から始まる。下の窓は NT_B の行 22〜29 で、ライン 173(IRQ_LINE)の IRQ で切り替える。行 22 を空けて切り替えの線を隠している。ログの窓では下の窓をライン 207 から上へ伸ばす。
START のメインメニュー、持ち物、はい/いいえ、店主との会話などは、画面を消さずに地図の上に重ねる窓とした。窓の字は使っていない地図のタイルを借りて描き、閉じたら元の絵に戻す。窓は 16×16 の区切りに揃え、字は 8 ドットずらす。窓の幅は最長の行に両脇 16 ドットを足した値とする。サブ窓は「親は灰色・親の案内は出さない・◀▶は窓の左・見出しと区切り線」という共通規則に従う。これらはメニュー仕様フロー(Excel)と 8×8 の画面レイアウト表で管理した。
本文の字は k8x12 フォント(8×12 ドット)を使う。tools/loc.py が loc/text.csv と loc/glossary.csv から文字列を作り、使う字だけを字形として抜き出す。1 字は 12 バイトで、バンク 2 に 682 字が入り、続きは別バンクに置く。1 字を 16 ドットの行に置き、上下 2 枚のタイルに分けて描く。
下の窓の文は 2 つのタイル組を交互に使う。新しい文は見えない側に描き終えてから表示するため、描きかけの字が見えない。字形の控え(グリフキャッシュ)は最大 110 字で、画面にある字は再描画しない。ログの窓では 64 項目のハッシュ表で控えを引き、バンクをまたがずに探す。これによりログの窓は 10〜11 フレームで開く。
上の状態行と、下の窓の直前の行は美咲 8×8 フォントで描く。V2.16 でバンク 18 に美咲の全 903 字(7.1KB)を収めた。JIS にない字は手描きか、k8x12 の一部の行から作った。
V2.17 で日英両対応にした。文章、敵・物・罠の名前、UI の語を仮の番地 $0100〜 に日英同じ位置で配置し、日本語をバンク 19〜22、英語を 23〜26 に置く。text.s の sb_ptr は $8000 未満の番地を LANG_B($7EB4、値は 19 か 23)が示すバンクから読む。仮の番地は長い方の言語に合わせ、8KB をまたがないように配置する。内蔵 RAM 上の文($0000-$07FF)はこの読み替えから除く。V3.52 以降、8bit コンソール用 ROM の初期言語は英語、ウェブ版はブラウザの言語に従う。
効果音は 16 種で、MUSIC LAB(base-08 の音作りページ)で決めたデータを music/sfx.json に置き、tools/sfx.py が gen/sfx.inc に変換する。1 フレームは「書くレジスタの印+値」で表し、NMI が 1 コマずつ APU に書く。鳴らす間は、その音が使うチャンネルだけを BGM から借りる(足音はノイズのみ)。16 種とも書き込みが元データと一致することを tools/sfx_check.js で確かめる。
V3.70 で鳴らし方を優先度制に改めた。以前は後の音が必ず前の音を消し、自分の攻撃音が敵の反撃で消えていた。現在は sfx_pri の表で優先度を持ち、鳴り始めたばかりの音や優先度の高い音は切らず、待ちを 1 つだけ持つ。
| 音 | 打つ | 外す | 倒す | 打たれ | 階段 | Lv | 拾う | 飲む | 杖 | 瞬間 | 金 | メニュー | 足音 | かわす | かわされ | ブブッ |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 優先度 | 5 | 3 | 7 | 9 | 6 | 8 | 4 | 5 | 5 | 7 | 4 | 2 | 0 | 3 | 3 | 2 |
BGM は社内共通部品 nes_common の音楽ドライバをフォークして使う。DPCM は使わず、変数は内蔵 RAM の空き(198 バイト)に置き、ドライバと曲はバンク 10 に入れる。曲は FamiStudio のテキスト書き出し(music/title.txt)から変換し、FamiStudio の NSF とフレーム単位で出力が一致することを tools/bgm_check.js で確かめる。共通版 1.01 の軽量化部分だけを手で取り込み、1 フレームの処理を 3,653 から 2,860 サイクルに減らした。V3.19 では、ウェブ版の音源が矩形波で 3 オクターブ、三角波で 5 オクターブ低かった問題を直し、実機の高さに合わせた。11 月 1 日からは、メインループが重いと曲が止まる問題を避けるため、BGM を NMI で進めている。
地図・敵・床の物・罠・持ち物・識別の情報は、はじめから電池つき SRAM 上にある。src/save.s(原典 dosave・dorecover)は、内蔵 RAM にある主人公の状態などを SV_DATA に写し、印と足し算のチェックサムを付ける。これを手が進むたびに行うため、電源を切っても最後の手から再開できる。死んだとき、または「はじめる」を選んだときにセーブを消す。写す変数の並びを変えたら SAVE_VER を上げる(現在 5)。ウェブ版はページが 8KB の SRAM を localStorage(hk.sram)に保存し、実機の電池 RAM の代わりとする。
ランキングは LootLocker を使う。登録の入口は、カートリッジの QR、base-08 のウェブ版、itch.io のウェブ版の 3 つで、どれも web/hackrank.js の同じ規則で送る。1 台の本体につき 1 つの掲示板に 5 件まで、同じ記録は「登録ずみ」、枠が埋まっていれば最低の枠より高いときだけ上書きする。掲示板は迷宮ごとの今週・総合、今週のシード、なんでも、デバッグに分かれ、今週の掲示板は毎週月曜 9:00(日本時間)に空になる。デバッグ機能を一度でも使った回はデバッグの掲示板にだけ載る。
カートリッジはネットにつながらないため、結果画面に QR を出す。中身は名前 8 字と 16 進 30 桁(本体 ID 4 バイト、記録 8 バイト、版 1 バイト、チェックサム 2 バイト)で、スマホで撮ると base-08.web.app/H/<記録> の登録ページが開く。QR とウェブ版で同じ回を送っても、本体 ID と記録が同じなので 1 件にまとまる。本体の上位 10 件は 16 バイト × 10 で電池 RAM に持ち、題の「ランキング」で見られる。
ウェブ版は自作の JavaScript エミュレーター web/nes.js(約 430 行)で ROM を動かす。6502 の公式命令、PPU の描画、CHR-RAM、パッド、DMC、マッパー 0 と 4 だけを実装した最小構成である。RAM・SRAM・VRAM・CHR-RAM・CPU・PPU・マッパーをまるごと保存・復元でき、これがレポートと巻き戻しの基盤になる。build.py はエミュレーターと ROM を 1 枚の HTML に埋め込む。
ページはパソコン、スマホの縦・横を 1 枚で扱う。タッチ操作の十字キーは中央からの角度で方向を決め、透明な縁まで押せる。iOS の連打で出る拡大鏡は touchstart を取り消して止めた。巻き戻しは手ごとの状態をメモリに 128 手、localStorage に最後の 32 手持つ。
ページのレポート機能は、コメント・画面・エミュレーターの状態を Firebase に送る。tools/bugs.py で取り込むと docs/reports/<id>/ に画像と state.json ができ、node tools/bugrun.js <id> でその状態から再生できる。報告者の環境で起きたことを手元で再現してから原因を特定し、log.md に記録する流れである。ウェブ版の DEV メニューには、階へ飛ぶ・物や敵を出す・無敵などのデバッグ機能がある。
tools/deploy.py は版を 0.01 上げ、ビルドし、公開前に tools/soak.js を 2 本(無敵で深く潜るものと通常のもの、各 12,000 フレーム)並べて走らせる。ランダムな入力で、停止・暴走・黒画面のままを検出したら公開を止め、画像と状態を残す。V2.81〜2.86 の停止はこの試験で見つかった。公開後は配信中のページの版を読んで照合する。
tools/special_shots.js は、デバッグ用の RAM 番地(dbg_cmd など)に命令を書いて場面を作り、資料用の画面写真を台本どおりに撮る。速度の改善では、ラベル単位のプロファイラ tools/prof.js と、同じ操作でゲームの中身が前の版と一致するかを見る道具を先に作った。V3.24〜3.26 の改修で、犬が戦う階の 1 歩は 16.7 から 12.7 フレームに縮んだ。
店・巣・罠・敵・物を確かめるのに何階も潜る手間を省くため、「開発迷宮」(英語名 Test Maze)を設計している。どの要素も決まった場所に必ずある 10 階のテーマパーク型の迷宮で、部屋ごとのテーマが下の窓に出る。場所が固定なので、写真台本や通し試験で毎回同じ場面を撮り、前の版と比べられる。V3.74〜3.77 で職業選びの「ダンジョン」から選べるようにし、記録は常にデバッグの掲示板へ送る。迷宮の中身はこれから作る。
原典の手触りを残しつつ、待ち時間と面倒を減らしたルールを「現代アレンジ(2020年代)」と呼び、V2.02 以降の基本とした。主な変更は次のとおりである。
判断の基準は、知らなければ理不尽に死ぬ要素、手数だけかかって判断のない操作を減らすことである。迷宮生成や戦闘の式は原典のまま残す。V3.15 で元ルール側の分岐 17 か所を削り、固定バンクに 156 バイトの空きを作った。元のコードは git のタグ last-with-original-rules に残してある。
固定バンクと電池 RAM は満杯に近いが、PRG には 30 バンク(240KB)の空きがある。今後の追加も、切り替えバンクへの引っ越しと、結果が前の版と同じことを道具で確かめる方法で進める。
テスト用の 固定の 迷宮。どの 要素も 決まった 場所に 必ず ある「テーマパーク」(設計中)。
2026-11-03 版:V3.77 時点の 設計(入り方〈2 章〉は 作った。迷宮の 中身は まだ)。絵は tools/dd_doc_img.py、写真は 今の ゲーム(tools/special_shots.js)。
いまは 店・巣・罠・敵・物を 試すのに、出会うまで 何階も 潜る。運 まかせで 時間が かかる。
どの 要素も 決まった 場所に 必ず ある「テーマパーク」の 迷宮を 1 つ 作る。
special_shots.js・通し試験):場所が 決まって いるので、毎回 同じ 場面を 撮れる。前の 版の 写真と くらべる 試験も 作れる。職業選びの 一番 上の 行(前の「シード」)を「ダンジョン」に 改め、種類は 次の 5 つ(ウェブ版は 今週 も)。初めは ランダム、セーブが あれば その 回の ダンジョン(V3.75)。
| 種類 | 中身 | ランキング |
|---|---|---|
| ランダム | その 時の 種 | なんでも |
| 迷宮 #1〜#3 | 毎回 同じ 迷宮 | 迷宮 #n・なんでも |
| 開発迷宮(英語 Test Maze) | この 設計書の 迷宮(今は まだ 中身が 無く、前の 固定 #4 の 迷宮) | デバッグ |
| 一覧 | 窓(開発迷宮) | 右の 説明 | 英語 |
|---|---|---|---|
「はじめる」を「探索開始」に 改める 案(決めて ほしい こと 1)。開発迷宮は ダンジョンの 種類で 選ぶ ので、題に 行は 足さない。
hack_fc_debug)へ(V3.74 で 作った)。DB_GODU の bit2(bit0 無敵・bit1 ウェブの 場面)。結果画面の 名前の 横は「▼開発迷宮」。見取り図は 部屋の 並びの 下書き(80×22 マスの 地図の 上の 位置)。作る ときは この 位置で 地図を 描く。
| 動物園 | 墓場 | お店(今の 写真) |
|---|---|---|
| 迷路 | 魔法使い |
|---|---|
部屋に 入ると 下の 窓に テーマを 出す(開発迷宮 だけ)。
loc/text.csv に dd_r_*(日本語・英語)。| もの | 上限 | 決まり |
|---|---|---|
| 部屋 | 15 | MAXNROFROOMS |
| 床の 物 | 64 | MAXOBJ(店の 品も 入る) |
| 敵 | 24 | MAXMON(店主・番人・犬も 入る) |
| 罠 | 32 | MAXTRAP |
| 店 | 1 | 店主は 1 階に 1 人(shk_m) |
| 床の 字 | 4 | NENG |
| 種類 | 数 | 置き場 |
|---|---|---|
武器 ) | 18 | B1 武器庫 |
防具 [ | 12 | B1 防具庫 |
道具 ( | 6 | B1 |
食べ物 %(死体を 除く) | 17 | B1 |
薬 ! | 20 | B2 |
巻物 ? | 25 | B2 |
杖 / | 21 | B3 |
指輪 = | 21 | B3 |
宝石 * | 19 | B4 |
魔除け " | 1 | B10 |
| 罠 | 7 種 × 2(見える・隠れた) | B4 |
| 敵 | 65 種 | B1 練習場・B6 巣・B7〜B9 図鑑・役目の 場所 |
| 特別な 部屋 | 店 8・動物園・蜂の巣・墓場・沼・金庫・壁龕・迷路 | B1〜B10 |
1 階の 床の 物は 多くて 60 前後(B1:武器・防具・道具・食べ物で 53、B2:薬 20 + 巻物 25)。店の 品も 床の 物に 数える ので、B1・B2 の 店は 小さく(品 10 まで)して 64 に 収める。
tools/dd/b01.txt〜b10.txt に 80×22 の 地図を 文字で 描く(原典の 画面と 同じ 記号)。
----------- ------------ |.........| |..........| - | 壁 . 床 # 通路 + 扉 |....<....+##########+...))))...| S 隠し扉 = 隠し通路 < > 階段 |.........| |..........| ^ 罠(下の 表で 種類) 0-9 物・敵(下の 表) ----------- ------------ @room 1 dd_r_info ; 部屋の テーマ(左上の 部屋から 順) @room 2 dd_r_weapon @obj ) all ; 武器を 全部(部屋の 中に 並べる) @mon 1 jackal awake ; 記号 1 の 所に ジャッカル(起きて いる) @trap ^ 3 seen ; 罠 @shop 5 general ; 部屋 5 を 雑貨屋に(店主と 品は 今の 店の 作り方)
tools/ddmap.py が 読んで src/gen/dd.bin(地図は 詰めて 1 階 数百 バイト)を 作り、空いて いる バンク 31 に 置く(バンク 31〜61 は 空き)。
mklev.s の 初め:開発迷宮で 10 階 まで なら 乱数で 作らず dd_load(バンク 31)。dd_load:地図・部屋・扉・階段を 書く → 物・敵・罠を 置く → 店・動物園・金庫などは 今の 作り方を その 部屋に 呼ぶ(mk_shop の 中身・mk_zoo・mk_vault を 部屋を 決めて 呼べる 形に 分ける)。lvsave2.s)で 残る。special_shots.js に g.dd(階, 部屋):開発迷宮で 始め、その 部屋の 入口へ 飛ぶ。どの 場面も 1 行で 撮れる。deploy.py の 2 本)に「開発迷宮を 10 階まで 降りる」を 足す。| 段 | すること | 確かめ |
|---|---|---|
| 1 | ダンジョンの 種類「開発迷宮」・記録の 印(DB_GODU bit2)・結果の 表示 | 済(V3.74〜3.77) |
| 2 | 地図 → データ(tools/ddmap.py → gen/dd.inc)と dd_load(部屋・扉・通路・階段) | 済(V3.83) |
| 3 | 物・敵・罠・床の 字を 置く | 済(V3.83) |
| 4 | 店・巣・沼・迷路を 部屋に 呼ぶ | 済(V3.83。金庫・壁龕は まだ) |
| 5 | 部屋の テーマの 案内(文 日本語・英語) | 済(V3.83。ふつうの 迷宮の 動物園・蜂の巣・墓場・沼にも) |
| 6 | 10 階の 地図 | 済(V3.83:上 4・下 4 部屋と まん中の 廊下の 形。B10 は 魔除けの 迷路) |
| 7 | 試験の 台本(special_shots.js ddw・ddroom。写真くらべ・通し試験は まだ) | 一部 |
| こと | 案 | |
|---|---|---|
| 1 | 「探索開始」は 題の メニューの「はじめる」を 改める で よいか | 決め:そう する(英語は NEW GAME の まま) |
| 2 | 階の 数 | 決め:10 階 |
| 3 | B10 の 先 | 決め:行き止まり(B10 は 下り階段 なし) |
| 4 | 始めの 金貨 | 決め:3000 |
| 5 | 図鑑の 敵は 眠らせる か | 決め:眠らせる |
| 6 | 開発迷宮の ランキング | デバッグの 表(V3.74 の まま) |
| 7 | 部屋の テーマの 案内を ふつうの 迷宮の 特別な 部屋(店・動物園 など)にも 出すか | 決め:出す(動物園・蜂の巣・墓場・沼。店は 店主の あいさつが ある ので 出さない) |
要望:「動物園は 専用の 階で いいのでは? B10 で なくても いい。バラして いい感じに 見れるように」。 1 階に 置ける 敵は 23 体 まで なので、B6 に 3 つ 並べると どれも すかすかに なって いた。
| 階 | 中身 | 店 |
|---|---|---|
| B1〜B5 | これまでと 同じ | 雑貨・薬・指輪・杖・武器 |
| B6 | 動物園(8×3:眠った 敵と 金貨。群れの 敵は 部屋の 外側の 列にも 出る) | ― |
| B7 | 蜂の巣(殺人バチ 16 匹・ロイヤルゼリー) | ― |
| B8 | 墓場(幽霊・レイス など 16 体。見やすい ように 明るく した) | ― |
| B9〜B11 | 図鑑 1〜3(これまでの B7〜B9) | 巻物・防具・食料品 |
| B12 | 魔除けの 迷路(これまでの B10)。行き止まり | ― |