2026年7月11日土曜日

PC8801版ザ・キャッスルのステージデータの解析を試みる。その9



 解析した情報をもとに、今度は逆に自作の(今回は雑誌掲載の)マップデータを圧縮していく。1階10部屋分5120バイトのデータを39.5%、2026バイトに収まるようにする。

現在、ステージのオブジェクトまで。これから 16 × 16 のキャラクタを変換するところ。

のんびりやりますわ。


16 x 16 のキャラクタデータも変換し、製品版に書き込むための圧縮データを作成。

もう少しでしょう。

2026年7月10日金曜日

PC8801版ザ・キャッスルのステージデータの解析を試みる。その8

 


全ての解析を完了し、ザ・キャッスル、キャッスルエクセレント全面の表示もOK。

ランレングスで2個以上のものが並ぶ場合は、オブジェクト番号に 80h を足して、その次にその個数を付けるのですが、圧縮効率を高めるために、数の多い壁、空白、水については、2個から8個の場合、1バイトで表せるようにしていると。ここを正しく処理すれば、キチンと表示できます。

これで、すてーじめーかー(自作の面データを製品版の圧縮データに変換して書き込む)を作成できるように。

やることは、こんな感じでしょうか。

★必ず1階10部屋単位で変換 でないとデータを作れない
 1部屋ごとに打ったバイナリデータを1階10部屋くっつけて1つのデータに
(バッチファイルを作ると便利 copy /b stage00.dat+stage01.dat+… 階7.dat)
 これを変換して書き込む

★オブジェクトの番号を調べる⇒同じものが幾つ連続している?
 1個ならそのままの番号になる

 2個以上⇒00~05、16、53以外なら
  オブジェクト番号+80h、その次に個数を指定

 00~05、16、53なら専用処理
    9個以上⇒オブジェクト番号+80h、その次に個数を指定
  2~8個⇒オブジェクトにより番号を決定

★最後まで部屋を描いたら16ドットキャラを配置
 ⇒トータルのバイト数からデータの終了+1番地をインデックスに付加する
 ⇒これを10部屋分処理して変換したものを製品データに書き込む

のんびりやりますわ。

2026年7月8日水曜日

PC8801版ザ・キャッスルのステージデータの解析を試みる。その7

 



X1ログイン版キャッスル最優秀作品、現在こんな感じでステージ0~19まで入力。
画像をくっつけて、全体マップを作るとこう。あと10面。

8とBが見分けづらいです。これはドットインパクトプリンタのフォントが悪い。印刷がかすれていたら判別不能。チェックサムで辛うじて分かるという。

ここまで、どちらかといえばパズルよりもアクション重視の面ですな。

~~~~~~~~~~~~~~~~~~~~~~~~~~

帳票の紙(128×297ミリ)にリストを大きく打って、そこから 53 以外のものを蛍光ペンの黄色でチェック。そして、あらかじめ 18Fh まで 53( 190h 以降のアイテム欄は FF )で埋め尽くしたバイナリに上書きで入力。いちいち 53 を打たなくていいのと、まず紙の上で作業して、そこからあまり画面を見ずに打てるので、ものすごく楽に。そして、チェックサムで正しく打てているかを確認していきます。

印字が汚過ぎて OCR できませんし、もう打った方が修正とかも楽かと。

2026年7月7日火曜日

PC8801版ザ・キャッスルのステージデータの解析を試みる。その6

 

8ドット(背景)のデータ。X1ログイン版キャッスルのPCG定義プログラムを実行すると、各文字フォントにこんな感じで登録されるはず。88版のデータもこの通りの番号。

自分はこれを昔、MSX2で打ってみて再現させた。

16ドット(キャラクタ)のデータ。こっちはプログラムではどのように入っているか分からない(解析していない)が、88版で指定するキャラ番号はこう。

ただし現在解析中なので、グレーやラファエル君のいるあたりに騎士が設定されていたりと、イレギュラーなところがある。

2026年7月6日月曜日

PC8801版ザ・キャッスルのステージデータの解析を試みる。その5

 



ここまで展開できるように。
2つ以上赤ブロックが続く場合はD9~になる


801号室よりも上にデータがあったので、それら(901号室~910号室と呼ぶ)を簡単に描いてみました。すると、やっぱりコピー部屋でしたな。ちょっとまだ、うまく描画できていませんが。

部屋を(階数・号室で)指定したら、その部屋を描けるように。ちょっとずつですね。

こんなに簡単に解析できたのなら、もっと早くに88版を解析するべきだったなぁ。というか、まさか88版のステージデータを解析できようとは…って自分でも驚いています。

同じ階を10部屋単位でデータが作られているので、コピー部屋も10部屋作られています。昔のゲームのプロテクトには遊び心がありますよね。ここまでは体験版っぽく遊べますし。

2026年7月5日日曜日

PC8801版ザ・キャッスルのステージデータの解析を試みる。その4

 


88ザ・キャッスル、プログラム内に「KAI 0」から「KAI 9」なんて文字列が見えていた…ということで、各階ごとにまとまっている? と思ったら、ステージデータ開始番地のインデックスが101号室のデータの直前に1階10フロア分ありますわ。これで、好きにいらえますね。

88のフロッピーのデータには、いらないセクタ情報が一定ごとにあるので注意(マイルドライナーのグレーで消してある部分)。
データをいらったり、アドレスを計算する際にはココを飛ばさないといけない。

デジカメの方が綺麗に画像になる? なら、A4取るのに2分かかる23年前のスキャナ使わないよ。


アイテムの法則。綺麗に作り直そうかな? と思ったけど、手書きのままで。
MSXが少々へんちくりんだったから、これもそうかなー? と思ったら、そんな感じ。
1バイト目でアイテムと大まかな位置を指定、2バイト目で具体的な座標を指定。
アイテムを2バイトに収めたくて、こうなったと。
X1ログイン版だと、アイテム、X、Yで3バイト(その後にムダなFFがあって4バイトだったけど)。X、Yともに20ずつのフィールドなので、どうしても1バイトで指定は無理…ということで、アイテムの種類に大まかなブロック位置を付加するという形に。

ここまで分かれば、ステージ作成ツールを作れますね。

キャッスルエクセレントも、同じところにステージデータがあるっぽいですな。
これで解析は9割、あとはキャラ(グラ)の変更とかやる?

88だとキャラクタをGET@・PUT@で表示、そのためにまずゲットする画像を作る、でその作り方は好き好きと。
一応、そういうイメージを持っているのだが。


88版、ザ・キャッスルもキャッスルエクセレントもステージデータの開始番地は計算したらココだと思うのだけど、キャッスルの方は801号室の上にも何かある!(@@; 1D630hから何が入っている?? ひょっとしたら「COPYしたらAKANDE」とか書いてある?(笑

一応 901号室と呼ぶことに。


2026年7月4日土曜日

PC8801版ザ・キャッスルのステージデータの解析を試みる。その3

 基本的には、80hを足すと複数個の指定(その次で個数を指定)なのだが、空白と壁は多いため、それらで少ない個数の場合は専用の指定方法もあるよと。

空白;53(d3 nn)⇒df+n
白壁;偶数行は00(80 nn)⇒57+n
   奇数行は01(81 nn)⇒5F+n

まだ全然解析できていませんが、とりあえずキャラを変えることはできます。
最初の黄鍵をマルガリータ姫にすることで、玄関開けたら5秒でちゃんとクリアできますw



PC8801版ザ・キャッスルのステージデータの解析を試みる。その2

 



いろいろバイナリをいらってみた結果、88版もランレングスですわ。
ただしMSX版とは作りが違います。プログラマーが違うからでしょうか。
なので、他のステージも見ていけば、バイナリの意味は分かるかと思います。
でも、アイテムや敵は別データですな。それらはどこにあるのか、どのように入っているのかは、これから調べないといけません。

コンストラクション機能、欲しかったですよね。X1ログイン版キャッスルにコンストラクションあったから、なおさら。
でも、他の人はそう考えなかったのでしょうか、解析している人はいませんな。MSX版ならアメリカでステージを作るソフトを作った人が昔いたみたいですが。