アットウィキロゴ
各フロア32*32=1024マス(各1バイト)で2階分ずつ非圧縮で保存されている。
町は32*48=1536マスに3つの町が纏められている。

マップデータ

上位2ビットで壁/扉/階段/通路を判定する

通路

上位2ビット 下位6bit
00 イベント番号

階段

上位2ビット 下位6bit
01 上り:0
下り:1

上位2ビット 下位6bit
10 普通の壁:0
隠し通路:1
隠し通路は洞窟1F,4Fにある。

上位2ビット 下位6bit
11 鍵なし:0
ろうやのかぎ:1
めのうのかぎ:2
クリスタルキー:3
:7
通過不可:8

移動

以下の2つのサブルーチンを使用する。

移動先の座標をX,Yに得る

バンク1~9に重複して存在している。(例えばバンク9なら$80D6)
自分の位置と向きから、一歩先の位置を計算してX,Yレジスタに設定する。

マップデータのアドレスを取得する

$FD73のサブルーチンで行う。X,Yレジスタで位置を指定する。
($62)にアドレスが入るので、そこからマップデータを取得する。

描画

ダンジョンの描画には周囲のマスの状態を取得する必要がある。
周囲のマスを取得するために、以下のデータを使用する。
向き アドレス
FB6C
FB7C
FB8C
西 FB9C

各データは現在位置を起点として、相対的な位置指定で次のマスを指定する。

北向きの場合

; #$00:北向き
L_FB6C:
	DB  	$01					; 1歩右
	DB  	$82					; 2歩左
	DB  	$9F					; 1歩右+前に1歩
	DB  	$01					; 1歩右
	DB  	$82					; 2歩左
	DB  	$9F					; 1歩右+前に1歩
	DB  	$01					; 1歩右
	DB  	$82					; 2歩左
	DB  	$9F					; 1歩右+前に1歩
	DB  	$01					; 1歩右
	DB  	$82
	DB  	$01
	DB  	$01
	DB  	$83
	DB  	$81
	DB  	$9E

これは以下の順番でマスを調べることを示す。

最上位ビットは現在位置($62,$63)から見てプラス方向かマイナス方向かを示す。
マップが1行32バイトであることを念頭に置くこと。

東向き

; #$10:東向き
; $FB7C:
	DB  	$20					; 1歩右
	DB  	$C0					; 2歩左
	DB  	$21					; 1歩右+前に1歩
	DB  	$20					; 1歩右
	DB  	$C0					; 2歩左
	DB  	$21					; 1歩右+前に1歩
	DB  	$20					; 1歩右
	DB  	$C0					; 2歩左
	DB  	$21					; 1歩右+前に1歩
	DB  	$20					; 1歩右
	DB  	$C0
	DB  	$20
	DB  	$20
	DB  	$E0
	DB  	$A0
	DB  	$41

これは以下の順番でマスを調べることを示す。
最終更新:2025年07月17日 13:52