このページについて

blktool同梱のブロックは賞味期限が切れてる物が非常に多く、
Lunar Magic ver1.7x以降で使用できない物やそもそも使い物にならない物が多いです。
環境によって使えない物についてまとめたいと思います(まとめるとは言ってない)

多くのブロックに見られる問題

  • $7EBD05が非ゼロの時Bank$30をコールする
    • 謎。blktoolやbliteでは実行直前にゼロにしている。
    • 例えば即死ブロックではJSL $30F5B7をコールしている。
  • Yレジスタをちゃんと保持していない
    • ダメージや即死系ブロックに見られる。そのため不定のページのブロックとして扱われてしまう。

同梱ブロック一覧

※:説明については旧wikiから引用しました。
なんで2代目wikiは元あった情報すら抜けてるんですかね・・・。

色分け
色分け無し 未分類
青色 問題なく使用できるもの
黄緑 軽度の不具合を持つもの
黄色 クラッシュはしないが変な挙動を起こす可能性があるもの
オレンジ ステージ進行不可能の原因になりかねない不具合を持つもの
赤色 触れるとクラッシュするもの
灰色 クラッシュはしないが使えないもの

番号 名前 機能 備考
1 1-way Block Up 上→下以外の方向から通り抜け可能
2 1-way Block Down 下→上以外の方向から通り抜け可能
3 1-way Block Left 左→右以外の方向から通り抜け可能 通過判定にマリオの向きを使用しているため逆方向から抜けられる。
4 1-way Block Right 右→左以外の方向から通り抜け可能
5 Switchable Block Off ONのとき通行可、OFFのとき通行不可
6 Switchable Block On ONのとき通行不可、OFFのとき通行可
7 Smashable Brick レンガブロック。スーパー以上で下から突き上げると壊せる。ブロックの効果は132に設定。(こうしないとPスイッチでコインになっても取れない)
8 Frozen Block ファイヤーで壊せるブロック。
9 Frozen Coin ファイヤーを当てるとコインになる。
10 Frozen Muncher ファイヤーを当てるとブラックパックンになる。
11 Music Change Blocks map16の下2桁(Low byte)の音楽へ変更する 唯一WholePageにチェックが入っているブロック。blktoolで使用すると1ページ占拠される。
12 Sensitive Brick さわると壊れる。
13 Sensitive Brick (Bounces Mario) さわると壊れる。更にマリオが少しはじかれる。
14 Wrong Block 三択ブロック(○×ブロック)の×
15 Right Block 三択ブロック(○×ブロック)の○
16 Instant Kill Block いわゆる即死ブロック。
17 Invisible Midway Point 中間ゲートの役割を果たすブロック。
18 Movement Block Right Slow マリオがゆっくり右へ動く 座標を直接変更しているため安定して動かない。
19 Movement Block Right Medium 右へ動く
20 Movement Block Right Fast 早く右へ動く
21 Movement Block Right Very Slow とてもゆっくりと右へ動く
22〜25 Movement Block Left 18〜21の左バージョン
26〜29 Movement Block Down 18〜21の下バージョン
30〜33 Movement Block Up 18〜21の上バージョン
34 On/Off Switch ON / OFFスイッチブロックと同効果
35 No Yoshi Block ヨッシーに乗っていないときのみ通行可能
36 Yoshi Block ヨッシーに乗っているときのみ通行可能
37 Random Exit このブロックがONのとき、マップ移動先が移動タイル(ドアなど)のつぎの3ページからランダムに選ばれる
38 +10 time block 999秒を上限として10秒回復するブロック。
39 +50 time block 999秒を上限として50秒回復するブロック。
40 +100 time block 999秒を上限として100秒回復するブロック。
41 Locked Door Init Block ドアロックの解除を取り消すブロック。 $7E010Bをフラグとして使用しているためLevelASM等と干渉しやすい。
42〜45 Locked Door Key 1〜4 ドアロックを解除するブロック。
46〜49 Locked Door 1〜4 鍵がかかったドア。
50 Invisible Turn Block 見えないクルクルブロック
51〜55 Palette Block levelが000〜0FF、100〜1FFの間ならパレットを変更する 超環境依存なコード。しかも触れた瞬間DMAが実行されるのでblank考慮しているエミュレータでは動きません。
56 Multi-Coin Block コインブロック。作動したあとはmap16の隣のブロックに変化する
57 Sprite Smashable Brick 甲羅をぶつけて壊せるブロック
58 Mario Only Block マリオだけが通行可能
59 No Mario Block スプライトは通過できるがマリオは不可
60 1-way Block Up/Down 垂直方向にしか動けない
61 1-way Block Left/Right 水平方向にしか動けない
62 Flower Block ファイアーボールがあたるとmap16の隣のブロックに変化する
63 Ceiling Block マリオが下から触れるとmap16の隣のブロックに変化する
64 Floor Block マリオが上から触れるとmap16の隣のブロックに変化する
65 Changing Block マリオが触れると(全方向)変化する
66 On Block ONの状態にする
67 Off Block OFFの状態にする
68 1-up block 1UPする。とてもうれしい
69 SMAS coin コレクション風のコイン(取ると得点が入る)にし、とった後はmap16の隣のブロックに変化する
70 SMW coin 通常のコインで、とった後はmap16の隣のブロックに変化する
71 Water on block 水属性をonにするブロック。マリオがふれると、たちまちそのステージは水中面になる。
72 Water off block 水中面解除ブロック。たちまち地上面になる。
73 Ice on block 氷属性にするブロック。たちまち滑り始める。
74 Ice off block 氷属性を解除するブロック。
75〜78 Locked Block 42〜45の鍵がセットされるとmap16の隣のブロックに変化する $7E010Bをフラグとして使用しているためLevelASM等と干渉しやすい。
79 Hurt Block マリオがダメージを受ける(スターを除くがチビだと死ぬ)
80 Goal Block ゴールの役割をするブロック。音楽は変わらない。
81 Secret Goal Block 同じく秘密ゴール。
82 POW Hurt Block 青POW状態でなければ、ダメージを受ける
83 Big Mario Block スーパーマリオのときだけ通行可能
84 Small Mario Block チビマリオのときだけ通行可能
85 Yellow Yoshi Block 黄色のヨッシーに乗っているときだけ通行可能
86 No Yellow Yoshi Block 黄色のヨッシーに乗っているときだけ通行不可能
87〜88 Blue Yoshi Block 85〜86の青ヨッシーバージョン
89〜90 Red Yoshi Block 85〜86の赤ヨッシーバージョン
91 30 Coin Block そのステージ内で30枚コインを集めていれば通行可能
92 No 30 Coin Block そのステージ内で集めたコインが30枚未満なら通行可能
93 Yoshi Coin Block ドラゴンコインが5枚以外なら通行可能 ステージ内での回収枚数で確認しているため全回収後に問題が起こる。
94 No Yoshi Coin Block ドラゴンコインを5枚集めていれば通行可能
95 5-up block 5UPする。かなりうれしい なんか変な音が鳴る。要検証。
96 Turn Block With Always Flower かならずフラワーがでるクルクルブロック。map16の隣のブロックに変化
97 ? Block With Vine ツタがにょきにょきでる?ブロック。変化後は隣のmap16
98 ? Block With Springboard ジャンプ台が出る?ブロック。変化後は隣のmap16
99 ? Block With Keyhole 鍵穴が出る?ブロック。変化後は隣のmap16
100 Turn Block With Directional Coins 誘導コインが出るクルクルブロック。変化後は隣のmap16
101 Teleport Block ふれると瞬間移動するブロック。移動先とかの設定は土管や扉と同じ。
102 16-Second Star Block ふれると16秒無敵状態になるブロック。音楽は変わらない。
103 Star Hold Block スプライトが触れている限り無敵状態
105〜110 30-Coin Block $x 30 Coinブロックで必要なコインの枚数をxにする
111 30-Coin Block Random 30 Coinブロックで必要な枚数をランダムにする
112〜129 Animated Hurt Block 特定のアニメーションフレームのときだけダメージを受ける
130〜142 Appearing/Disappearing Block 特定のアニメーションフレームで、通過可能。それ以外はセメントブロック効果
143 On/Off Switch マント、スプライト、ファイアーボールで作動するON/OFFスイッチ
144 Spin Jump Block スピンジャンプのときだけ通過できる
145 Pre-Special World Block スペシャルワールドにしていなければ通過できる
146 Post-Special World Block スペシャルワールドにしていると通過できる
147〜148 Random BG Colour Block ランダムにBG(背景)の色を変える コイン枚数とフレームカウンタで色が決定。使えない。
149 Pass Block ブロックの反対側に瞬間移動する 触れるとクラッシュするのは正常です。
150 Midway-Only Block 中間ゲートを通過していると通り抜けられる
151 Non-Midway Block 中間ゲートを通過していなければ通り抜けられる
152 Midway Point Remove Block 中間ゲートを通っていなかったことにする
153 Low-Time Block 残り時間が100秒以下なら通過できる
154〜156 xxx+-Time Block 残り時間がxxx秒以上なら通過できる
157 Anti-Powerup Block マリオがパワーダウンする
158 Mushroom Block かならずスーパーマリオになる
159 Cape Block かならずマントマリオになる
160 Flower Block かならずファイアーマリオになる
161 Stop Block 動きが止まる
162 Right Boost Block 右へダッシュする
163 Left Boost Block 左へダッシュする
164 Jump Block ジャンプする
165 Fall Block すばやく落下する
166 Random Boost Block 162〜165の効果がランダムで発生する
167 Vertical Stop Block 水平方向の動きが止まる
168 All-Way Stop Block 全ての方向の動きが止まる(ゆっくりと動くことはできる)
169〜173 Boost Block With Sound 162〜166の効果が効果音付きで発生する
174 Directional Stop Block 同じ方向の動きが止まる。上から来たら垂直成分の動きが、側面から来たら水平成分の動きが止まる
175 Bounce Block マリオの向きと反対に動く。
176 Vertical Bounce Block 水平方向に反対に動く(ジャンプ or 叩き付ける)
177 All-Way Bounce Block 一言で言うと弾かれる
178〜180 Bounce Block With Sound 175〜177が効果音つきで発生する
181 Directional Bounce Block 進入方向と逆に弾かれる。上から来たら上(ジャンプ)へ、側面から来たら反対方向へ弾かれる(他の成分はそのまま)。
182 Directional Bounce Block With Sound 音付きで181の効果
183 Mario Block ルイージがふれるとマリオになる。
184 Luigi Block マリオがふれるとルイージになるが0機になってもゲームオーバーにならないなどのバグがある。
185 Mario-Only Block マリオのときだけ通過できる
186 Luigi-Only Block ルイージのときだけ通過できる
187 Pow Switch Block 16秒間青POWスイッチ効果
188 Pow Switch Hold Block ブロックに触れている間だけ青POW効果
189 Silver Pow Switch Block 16秒間銀POWスイッチ効果
190 Silver Pow Switch Hold Block ブロックに触れている間だけ銀POW効果
191 Blue POW Only Block 青POWがONになっているときだけ通過できる
192 Reverse Blue POW Only Block 青POWがONになっていると通過できない
193〜194 Silver POW Only Block 191〜192の銀POWバージョン
195 Switch On Hurt Block ON/OFFスイッチがONになっている状態で触れるとダメージを受ける
196 Switch On Kill Block ON/OFFスイッチがONになっている状態で触れると即死する
197〜198 Switch Off Hurt Block 195〜196がOFFの状態
199 Switchable Kill/Hurt Block ブロックがON/OFFスイッチがONで即死、OFFでダメージを受ける状態になる
200 Reverse Switchable Kill/Hurt Block OFFで即死、ONでダメージを受ける状態になる
201 Non-Spin Jump Hurt Block スピンジャンプでないとダメージを受ける
202 Non-Spin Jump Kill Block スピンジャンプでないと即死する
203 Non-Blue POW Hurt Block 青POWがONでないとダメージを受ける
204 Non-Blue POW Kill Block 青POWがONでないと即死する
205〜206 Non-Silver POW Hurt Block 203〜204の銀POWバージョン
207 Non-Invincible Hurt Block 無敵状態以外ではダメージを受ける
208 Non-Invincible Kill Block 無敵状態以外では即死する
209 Non-Yoshi Hurt Block ヨッシーに乗っていなければダメージを受ける
210 Non-Yoshi Kill Block ヨッシーに乗っていなければ即死する
211 Yoshi Hurt Block ヨッシーに乗っているとダメージを受ける
212 Yoshi Kill Block ヨッシーに乗っていると即死する
213〜216 Only Passable From (Top) Block (上、下、左、右)以外からは通過できない 左右判定にマリオの向きを使用しているため誤判定が起こる
217〜220 Hurt From (Top) Block (上、下、左、右)から触れるとダメージを受ける 左右判定にマリオの向きを使用しているため誤判定が起こる
221 Behind-The-Screens Block 触れるとBG、スプライトの後ろ側へ行く(SMB3の白ブロック状態)
222 Normalizer Block 221の効果を解除する
223 Background Block 221の状態でセメントブロック効果
224 Foreground Block BG、スプライトの前にいるとセメントブロック(普通のセメントブロックとは違って、BG、スプライトの後ろですり抜ける)
225 Background Hurt Block 221の状態でダメージを受ける
226 Foreground Hurt Block BGの前にいるとダメージを受ける(普通のダメージを受けるブロックとは違って、BG、スプライトの後ろですり抜ける)
227 No Item Block アイテムボックスが空だと通過できる
228〜231 (Mushroom)-Only Block アイテムボックスに(キノコ、フラワー、スター、羽)があれば通過できる
232 Reverse No Item Block アイテムボックスに何かあれば通過できない
233〜236 No-(Mushroom) Block アイテムボックスに(キノコ、フラワー、スター、羽)がなければ通過できる
237 No Powerup Block パワーアップしていなければ通過できる
238〜240 (Mushroom)-Only Powerup Block マリオが特定の状態(キノコ、フラワー、羽)であれば通過できる
241 Reverse No-Powerup Block パワーアップしていると通過できない
242〜244 Reverse (Mushroom) Powerup Block 238〜240の逆。特定の状態で通過できない
245〜248 >xx Horizontal Speed Block マリオの水平方向の速さが$xx以上なら通過できる
249〜252 <xx Horizontal Speed Block マリオの水平方向の速さが$xx以下なら通過できる
253〜256 >xx Vertical Speed Block マリオの垂直方向の速さが$xx以上なら通過できる
257〜260 <xx Vertical Speed Block マリオの垂直方向の速さが$xx以下なら通過できる
261 No Horizontal Movement Block 水平方向の速さが0なら通過できる
262 Reverse No Horizontal Movement Block 水平方向の速さが0でなければ通過できる
263 No Vertical Movement Block 垂直方向の速さが0なら通過できる
264 Reverse No Vertical Movement Block 垂直方向の速さが0でなければ通過できる
265 No-Red-Berry Block そのステージ内で赤い木の実を食べていなければ通過できる
266〜268 x-Red-Berry Block 赤い木の実をx個食べたときだけ通過できる
269 Reverse No-Red-Berry Block そのステージ内で赤い木の実を食べていれば通過できる
270〜272 Reverse x-Red-Berry Block 赤い木の実をx個食べたときだけ通過できない
273〜280 Pink-Berry Block 266〜272のピンクの木の実バージョン
281 No Bonus Star Block ボーナススターが0なら通過できる
282〜285 xx-Or-Less Bonus Star Block ボーナススターがxx以下なら通過できる
286 Reverse No Bonus Star Block ボーナススターが0なら通過できない
287〜290 Reverse xx-Or-Less Bonus Star Block 282〜285の逆バージョン
291〜294 xx-Or-More Bonus Star Block ボーナススターがxx個以上だと通過できる
295〜298 Reverse xx-Or-More Bonus Star Block 291〜294の逆バージョン
299 Anti-Stomp Block 敵を踏んだ状態では通過できない(着地すれば通過できる)
300〜306 x-Enemy-Stomp Block 敵をx匹連続で倒していないと通過できない(途中で着地すると無効)
307 Reverse Anti-Stomp Block 敵を踏んだ状態でないと通過できない
308〜314 Reverse x-Enemy-Stomp Block 300〜306の逆バージョン
315 1up-Stomp Block 触れた後に着地せず、敵を踏むと1UPする
316 silent on/off switch 効果音なしでON/OFFを反転させる。変化後は隣のmap16
317 silent on switch 効果音なしでONにする。変化後は隣のmap16
318 silent off switch 効果音なしでOFFにする。変化後は隣のmap16
319 Background Ceiling Block 背景に隠れている(221の状態)で下から触れると隣のmap16に変化する
320 Background Floor Block 221の状態で上から触れると隣のmap16に変化する
321 Background Change Block 221の状態で触れると隣のmap16に変化する
322 Background Flower Block 221の状態でファイアーボールをあてると隣のmap16に変化する
323〜326 Foreground (Ceiling) Block 319〜322のマリオが手前にいるとき(隠れていなければ)バージョン
327 Random Change Block 触れると、現在のブロック番号に1〜4を足したブロックに変化する
328 Right Wrap Block 触れるとマリオが右端へ移動する(縦面で使う) Lunar Magic ver1.70以降ではVRAMの管理方法が変わり、不具合が発生する…と思われる。
329 Left Wrap Block 触れるとマリオが左端へ移動する(縦面で使う)
330 Drop Down Begind Screen Block 数秒しゃがむと背景に隠れる(221の状態) $7FFFF2から2バイトをしゃがみタイマーとして使用している。
331 Background Teleport Block 背景に隠れていれば、Teleport Blockの効果
332 Foreground Teleport Block 背景に隠れていなければ、Teleport Blockの効果
333 Yoshi Fireball Block ヨッシーの炎が出る。変化後は隣のmap16
334 Invincible Water マリオが無敵状態なら、水中効果のブロックになる
335 Non Invincible Water 334の逆バージョン。無敵でなければ水中効果のブロック
336 ? block that removes your item box item アイテムボックスを空にする?ブロック ブロック起動時は常に効果番号0x129になる。
337〜350 ? block with item box (mushroom) アイテムボックスに(キノコ、フラワー、羽、スター、雲、ブロックテレサ、メッセージブロック、クリボー、ジャンプ台、赤青緑黄ノコノコ、変化アイテム)を入れる

ブロック毎の不具合等

基本的に逆汗したコード載せてるだけです。

51~55 PaletteBlock

触れた瞬間特定のアドレスに格納されているパレットデータの転送を試みます。
CGRAMの書き換えはblank中限定なので基本的に失敗します。
+ PaletteBlockのコード
Palette1:
		!Offset = $65		; binファイルによって違う謎の定数
					; palette1.bin : $65
					; palette2.bin : $66
					; palette3.bin : $67
					; palette4.bin : $68
					; palette5.bin : $69

		print "BELOW 0 ",pc
		print "ABOVE 0 ",pc
		print "SIDES 0 ",pc
		PHB
		PHX
		PHY
		LDA $7EBD05		;\
		BNE .ExBank		; |
		LDA #$0E		; | $7EBD05がゼロの時は $0EF600~
		BRA +			; | 非ゼロの時は $5EF600~を参照する
.Exbank		LDA #$5E		; |
+		PHA			; |
		PLB			;/
		LDA $1F11		;\
		XBA			; |  A:Offset+(マリオのサブマップ番号*0x0100)
		LDA #!Offset		; |
		REP #$30		;/
		STA $00			;\
		ASL A			; |
		CLC			; | X:A*3
		ADC $00			; |
		TAX			;/
		LDA $7EBD05		;\
		BEQ +			; | 無意味なコード
		CLC			; |
		ADC.w #$0030		;/
+		LDA $F600,x
		STA $04
		INX
		LDA $F600,x
		STA $05
		LDA [$04]		;\ 背景色書き換え
		STA $0701		;/
		SEP #$20		;
		INC $04			;\ Aレジスタを8bitモードにしているため
		INC $04			;/ 繰り上がりが考慮されなくなる
		LDA #$00		;\ CG-RAMアドレス:0x00
		STA $2121		;/
		LDA #$00		;\ DMAモード
		STA $4300		;/
		LDA #$22		;\ 転送先レジスタ:$2122
		STA $4201		;/
		LDX $04			;\
		STX $4302		; | 転送元アドレス:$04-$06
		LDA $06			; |
		STA $4304		;/
		LDX.w #$0200		;\ 転送量:0x0200bytes
		STX $4305		;/
		LDA #$01		;\ DMA実行
		STA $420B		;/
		SEP #$30
		PLY
		PLX
		PLB
		RTS

149 Pass Block

コード自体に大きな問題があり、絶対に動きません。
+ PassBlockのコード
PassBlock:
		print "BELOW 0 ",pc
		JSR .ChangeRegMode	; コール後戻ってこない
		LDA $94			;\
		CLC			; | 16bitモードを想定しているにも関わらず
		ADC.b #$20		; | オペランドが8bitなためクラッシュの原因になる
		STA $94			;/
		PLP
		RTS

		print "ABOVE 0 ",pc
		JSR .ChangeRegMode
		LDA $94
		SEC
		SBC.b #$20
		STA $94
		PLP
		RTS

		print "SIDES 0 ",pc
		JSR .ChangeRegMode
		LDA $76
		BEQ +
		LDA $96
		CLC
		ADC.b #$20
		STA $96
		PLP
		RTS

+		LDA $96
		SEC
		SBC.b #$20
		STA $96
		PLP
		RTS

; Aレジスタを16bitモードにするためのルーチン…
; しかしPHP命令のせいで正しいアドレスに戻れなくなりクラッシュする
.ChangeRegMode	PHP
		REP #$30
		RTS

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2015年12月11日 20:34