TAS以外のことも書いていきたい。
Posted by ISMin(いずみん) - 2010.10.20,Wed
TASvideosのフォーラムで話題になっていたテクニック。
さっぱりわからなかったからこの記事を見て誰か解析してくれないかな、なんて思って作成。
説明中◯番のスプライト、ID◯番などの表現が出てきますがこれはこのLuaスプリクトを使うことで表示させることができます。
(追記)誰か解析~なんて書いてたらMr.さん、33953YoShIさんが本当に解析してくれました。感謝!
というわけで全体的に書き直しました。
(追記2)少し書き足し。TASLaboも参照してください。
(追記3)解析が進んで、この記事も情報が古くなっています。俺自身あまり追えていないのでどこかに詳細がまとめられることを期待。
1.無をほおばる方法
方法1.まずブロック増殖やアイテム2個出し等を利用してヨッシーを2匹以上出します。
次にみえてる方のヨッシーにアイテムをほおばらせ、穴に落とします。
すると新たに実体化したヨッシーが無をほおばっています。
パワーアップor被ダメ中に口を閉じたまま舌を出し、アイテムをほおばったら成功。
ほおばる前のアイテムの代わりに無をほおばっている状態になっています。
また、無に変化したスプライトは消滅フラグが立たないのかずっとステージ上に残り続けます。
ちなみに、成功すると口を閉じたまま舌を出したあとに、なぜか勝手に再度舌を出します。
再度舌を出したときにも敵を食べることができますが、このとき頬張れるスプライトを食べてしまうと、無は消滅してしまい、頬張ったスプライトだけが残ります。

2.引き起こされるバグ
このまま無をほおばり続けていれば何も起きないが、無を吐き出すことで
①アドレス0x7E15D3がヨッシーのy座標の上位バイトで上書きされる
②アドレス0x7E15DFがヨッシーのx座標の上位バイトで上書きされる
③アドレス0x7E167Bがヨッシーの向きで上書きされる
④乗ると回転するリフトで吐くと意図しないプログラムが実行される。
⑤アドレス0x7E1725が0で上書きされる
⑥その他
という現象が起きます。
①について、アドレス0x7E15D3は3番のスプライトの頬張りフラグであり、
ここに1以上の値が入ると一部のスプライトとの接触判定がなくなります。
②について、アドレス0x7E15DFは3番のスプライトのブロックすり抜けフラグであり、
ここに1以上の値が入るとブロックとの接触判定がなくなります。
③について、アドレス0x7E167Bは1番のスプライトのパラメータの一部で無を吐くことで、
・マリオが触れたときの効果がアドレス(0x7E1656+スプライトID)の通りになる(キノコ、リフト等に触れるとダメージ)
・ヨッシーが食べてもパワーアップしない
・判定を毎フレーム取得(?)
・持ち物を蹴ると甲羅のように滑っていく、触れるとダメージ
・気絶中甲羅に変わる(?)(持ち物のグラフィックが一部おかしくなる、スイッチを踏んでもなくならない)
・画面外に出ると消える
・スターの無敵、ファイア、マントアタック、ブロック突き上げがすり抜けない(倒せるかどうかは別)。また、触れるとヨッシーが逃げる
・右向きに無を吐くと、スターの無敵で倒したときにグラフィックや接触判定等が変化する。左向きに吐くと変化しない
という変化をします。
④についてはどのプログラムが実行されるかはヨッシーのID、ヨッシーx座標の下位バイト、ヨッシーの向きに依存するようです。
大抵の場合は①~③の変化しか起きないか吐いた瞬間にフリーズしてしまいますが、それ以外にマリオのパワーアップ状態が変わる現象が確認されています。
もしかしたらこれ以外にもフリーズせず、かつ有効なプログラムが実行されるパターンがあるかもしれません。
⑤について、アドレス0x7E1725は7番の拡張スプライト(ブルの野球ボールやポンキーの花粉など)のx座標の下位バイトです。
拡張スプライトのIDは上のLuaスクリプトでは見れませんが、そこまで使えるわけでもないので無視します。
⑥について影響がほとんどないようなものは省略しています。
3.応用テクニック
(1)①、②、③の効果を単純に利用
①では敵に触れてもヨッシーが逃げないようにする、敵を誘導するときに甲羅で倒されたり他の敵にあたって反転することを防ぐ、
②では甲羅や鍵を手元に引き寄せる、壁の向こう側の敵を甲羅で倒す、
③ではPスイッチの無限使用、Pスイッチや鍵を甲羅のように蹴って運ぶ、邪魔なリフトをファイアで倒す。
といった利用方法が考えられます。
(2)ヨッシー床抜け、ジャンプ台床抜け
②の効果をヨッシーに適用すると、ヨッシーから降りた瞬間にヨッシーが壁を抜けるようになります。
これを利用して、ヨッシーが床を少し抜けたときに乗り込むことで床抜けができます。
ジャンプ台でも同様にして床抜け出来ます。
(3)マリオのパワーアップ状態変化
④のマリオのパワーアップ状態の変化は、ヨッシーのIDが4番かつ(ヨッシーのx座標+ヨッシーの向き補正)を256で割った余りが214になる時に無を吐くことで起こります。
ヨッシーの向き補正はヨッシーが右向きなら+16、左向きなら-16です。
条件を満たしたときにはアドレス0x7E0019の値が+1されます。
つまり、チビの時はスーパー、スーパーの時はマント、マントの時はファイアになるというわけです。
そしてファイアの時に④のパワーアップ状態の変化を使うと赤く染まったマリオ(パワーアップ状態4、以下赤マリオ)に変身します。

赤マリオは基本的にはスーパーマリオと同じ動作をしますが、パワーアップアイテムを取ったときの挙動がおかしくなっています。
具体的にはキノコを取るとファイア、フラワーを取るとファイア、羽を取るとマント、スターを取るとマントになり、1UPキノコを取るとフリーズします。
また、甲羅やスイッチを持ってゴールすると持ち物がスターに変化します。
赤マリオの時にパワーアップ状態を変化させるとさらに違った挙動をするマリオに変身させることができます。
パワーアップ状態によって、パワーアップアイテムを取ったときの挙動、パワーアップしたときにストックに入るアイテム、アイテムをもってゴールしたときに出現するアイテムがそれぞれ変化します。
詳細は現在調査中です。
(4)スター錬金術
赤マリオなどでアイテムを持ってゴールしてスターを出現させるとアドレス0x7E13CBの値がスター1つにつき1増加します。
この値はマップ移動(城の前やボス撃破後のデモ画面も含む)をする度に2倍されていき、
値が128以上になると次のマップ開始時にスターの無敵状態になります。
ボス撃破後のデモ画面で無敵になると、効果が切れたあとにボス戦のBGMが鳴り始めます。
どうやら開発中に削除された没仕様のようです。
さっぱりわからなかったからこの記事を見て誰か解析してくれないかな、なんて思って作成。
説明中◯番のスプライト、ID◯番などの表現が出てきますがこれはこのLuaスプリクトを使うことで表示させることができます。
(追記)誰か解析~なんて書いてたらMr.さん、33953YoShIさんが本当に解析してくれました。感謝!
というわけで全体的に書き直しました。
(追記2)少し書き足し。TASLaboも参照してください。
(追記3)解析が進んで、この記事も情報が古くなっています。俺自身あまり追えていないのでどこかに詳細がまとめられることを期待。
1.無をほおばる方法
方法1.まずブロック増殖やアイテム2個出し等を利用してヨッシーを2匹以上出します。
次にみえてる方のヨッシーにアイテムをほおばらせ、穴に落とします。
すると新たに実体化したヨッシーが無をほおばっています。
方法2.ヨッシーとほおばるアイテムとパワーアップorダメージの手段(ストックが最適)を用意します。
ヨッシーに乗って、パワーアップor被ダメをする瞬間に舌を出します。パワーアップor被ダメ中に口を閉じたまま舌を出し、アイテムをほおばったら成功。
ほおばる前のアイテムの代わりに無をほおばっている状態になっています。
また、無に変化したスプライトは消滅フラグが立たないのかずっとステージ上に残り続けます。
ちなみに、成功すると口を閉じたまま舌を出したあとに、なぜか勝手に再度舌を出します。
再度舌を出したときにも敵を食べることができますが、このとき頬張れるスプライトを食べてしまうと、無は消滅してしまい、頬張ったスプライトだけが残ります。
2.引き起こされるバグ
このまま無をほおばり続けていれば何も起きないが、無を吐き出すことで
①アドレス0x7E15D3がヨッシーのy座標の上位バイトで上書きされる
②アドレス0x7E15DFがヨッシーのx座標の上位バイトで上書きされる
③アドレス0x7E167Bがヨッシーの向きで上書きされる
④乗ると回転するリフトで吐くと意図しないプログラムが実行される。
⑤アドレス0x7E1725が0で上書きされる
⑥その他
という現象が起きます。
①について、アドレス0x7E15D3は3番のスプライトの頬張りフラグであり、
ここに1以上の値が入ると一部のスプライトとの接触判定がなくなります。
②について、アドレス0x7E15DFは3番のスプライトのブロックすり抜けフラグであり、
ここに1以上の値が入るとブロックとの接触判定がなくなります。
③について、アドレス0x7E167Bは1番のスプライトのパラメータの一部で無を吐くことで、
・マリオが触れたときの効果がアドレス(0x7E1656+スプライトID)の通りになる(キノコ、リフト等に触れるとダメージ)
・ヨッシーが食べてもパワーアップしない
・判定を毎フレーム取得(?)
・持ち物を蹴ると甲羅のように滑っていく、触れるとダメージ
・気絶中甲羅に変わる(?)(持ち物のグラフィックが一部おかしくなる、スイッチを踏んでもなくならない)
・画面外に出ると消える
・スターの無敵、ファイア、マントアタック、ブロック突き上げがすり抜けない(倒せるかどうかは別)。また、触れるとヨッシーが逃げる
・右向きに無を吐くと、スターの無敵で倒したときにグラフィックや接触判定等が変化する。左向きに吐くと変化しない
という変化をします。
④についてはどのプログラムが実行されるかはヨッシーのID、ヨッシーx座標の下位バイト、ヨッシーの向きに依存するようです。
大抵の場合は①~③の変化しか起きないか吐いた瞬間にフリーズしてしまいますが、それ以外にマリオのパワーアップ状態が変わる現象が確認されています。
もしかしたらこれ以外にもフリーズせず、かつ有効なプログラムが実行されるパターンがあるかもしれません。
⑤について、アドレス0x7E1725は7番の拡張スプライト(ブルの野球ボールやポンキーの花粉など)のx座標の下位バイトです。
拡張スプライトのIDは上のLuaスクリプトでは見れませんが、そこまで使えるわけでもないので無視します。
⑥について影響がほとんどないようなものは省略しています。
3.応用テクニック
(1)①、②、③の効果を単純に利用
①では敵に触れてもヨッシーが逃げないようにする、敵を誘導するときに甲羅で倒されたり他の敵にあたって反転することを防ぐ、
②では甲羅や鍵を手元に引き寄せる、壁の向こう側の敵を甲羅で倒す、
③ではPスイッチの無限使用、Pスイッチや鍵を甲羅のように蹴って運ぶ、邪魔なリフトをファイアで倒す。
といった利用方法が考えられます。
(2)ヨッシー床抜け、ジャンプ台床抜け
②の効果をヨッシーに適用すると、ヨッシーから降りた瞬間にヨッシーが壁を抜けるようになります。
これを利用して、ヨッシーが床を少し抜けたときに乗り込むことで床抜けができます。
ジャンプ台でも同様にして床抜け出来ます。
(3)マリオのパワーアップ状態変化
④のマリオのパワーアップ状態の変化は、ヨッシーのIDが4番かつ(ヨッシーのx座標+ヨッシーの向き補正)を256で割った余りが214になる時に無を吐くことで起こります。
ヨッシーの向き補正はヨッシーが右向きなら+16、左向きなら-16です。
条件を満たしたときにはアドレス0x7E0019の値が+1されます。
つまり、チビの時はスーパー、スーパーの時はマント、マントの時はファイアになるというわけです。
そしてファイアの時に④のパワーアップ状態の変化を使うと赤く染まったマリオ(パワーアップ状態4、以下赤マリオ)に変身します。
赤マリオは基本的にはスーパーマリオと同じ動作をしますが、パワーアップアイテムを取ったときの挙動がおかしくなっています。
具体的にはキノコを取るとファイア、フラワーを取るとファイア、羽を取るとマント、スターを取るとマントになり、1UPキノコを取るとフリーズします。
また、甲羅やスイッチを持ってゴールすると持ち物がスターに変化します。
赤マリオの時にパワーアップ状態を変化させるとさらに違った挙動をするマリオに変身させることができます。
パワーアップ状態によって、パワーアップアイテムを取ったときの挙動、パワーアップしたときにストックに入るアイテム、アイテムをもってゴールしたときに出現するアイテムがそれぞれ変化します。
詳細は現在調査中です。
(4)スター錬金術
赤マリオなどでアイテムを持ってゴールしてスターを出現させるとアドレス0x7E13CBの値がスター1つにつき1増加します。
この値はマップ移動(城の前やボス撃破後のデモ画面も含む)をする度に2倍されていき、
値が128以上になると次のマップ開始時にスターの無敵状態になります。
ボス撃破後のデモ画面で無敵になると、効果が切れたあとにボス戦のBGMが鳴り始めます。
どうやら開発中に削除された没仕様のようです。
PR
Posted by ISMin(いずみん) - 2010.08.07,Sat
やっと折り返し地点ってとこですかね。
SMV(ZIP)
ここまででFabianさんのものを13817F、修正前のものを727F更新しています。
主な変更点は
ネイティブスター1通常(-42F)←修正前のから
・最後のDC付近を中心に全体的に最適化。みすたんが。
ただし、羽の大量出現を回避できず、ラグが4F分発生している。
・ボーナスステージの最適化
ネイティブスター5鍵(+3F)←修正前のから
・変更なし だがスターでワープするときのフレームルールで遅くなっている。
スペシャル1(-1076F)←Fabianさんのから 以下同じ
・この記事の2番目の方法の通り音符ブロックを左に増やしてDCバグで羽を出す。
1番目の方法でも同じタイムが出るがスコアの差で2番目の方法を採用。
スペシャル2(-1029F)
・Pスイッチを使って風船ブロックを左に増やし、羽を出す。
・羽の大量出現は回避できないため、ラグが発生してしまうが、
ストックを出すことで羽の出現を少しコントロールし、ラグを軽減している。
スペシャル3(-300F)
・ヨッシーはすでにいるため取得する時間分短縮
スペシャル4(-57F)
・最初の無敵甲羅を食べることによって短縮
・ヨッシー飛行をする分ロス
・フラワーを取らないことによる短縮。
ただし、代わりにバニラ大地秘密2で取らなければならないため、そこで短縮分は帳消しとなる。
スペシャル5(-46F)
・最初のノコノコを食べることによって短縮
・ヨッシー飛行をする分ロス
・アイテム変化でゴールを持ってきて短縮。
スペシャル6(-63F)
・助走方法を改良
・ヨッシー飛行をする分ロス
・ヨッシーのせいでラグ2F発生
・土管入りの最適化
・しかし土管から出る時に大幅ロス(ヨッシーが大きいせい)
スペシャル7(+9F)
・ヨッシー飛行をする分ロス
スペシャル8(-25F)
・ヨッシー飛行をする分ロス
・アイテム変化でゴールを持ってきて短縮。
記念写真




SMV(ZIP)
ここまででFabianさんのものを13817F、修正前のものを727F更新しています。
主な変更点は
ネイティブスター1通常(-42F)←修正前のから
・最後のDC付近を中心に全体的に最適化。みすたんが。
ただし、羽の大量出現を回避できず、ラグが4F分発生している。
・ボーナスステージの最適化
ネイティブスター5鍵(+3F)←修正前のから
・変更なし だがスターでワープするときのフレームルールで遅くなっている。
スペシャル1(-1076F)←Fabianさんのから 以下同じ
・この記事の2番目の方法の通り音符ブロックを左に増やしてDCバグで羽を出す。
1番目の方法でも同じタイムが出るがスコアの差で2番目の方法を採用。
スペシャル2(-1029F)
・Pスイッチを使って風船ブロックを左に増やし、羽を出す。
・羽の大量出現は回避できないため、ラグが発生してしまうが、
ストックを出すことで羽の出現を少しコントロールし、ラグを軽減している。
スペシャル3(-300F)
・ヨッシーはすでにいるため取得する時間分短縮
スペシャル4(-57F)
・最初の無敵甲羅を食べることによって短縮
・ヨッシー飛行をする分ロス
・フラワーを取らないことによる短縮。
ただし、代わりにバニラ大地秘密2で取らなければならないため、そこで短縮分は帳消しとなる。
スペシャル5(-46F)
・最初のノコノコを食べることによって短縮
・ヨッシー飛行をする分ロス
・アイテム変化でゴールを持ってきて短縮。
スペシャル6(-63F)
・助走方法を改良
・ヨッシー飛行をする分ロス
・ヨッシーのせいでラグ2F発生
・土管入りの最適化
・しかし土管から出る時に大幅ロス(ヨッシーが大きいせい)
スペシャル7(+9F)
・ヨッシー飛行をする分ロス
スペシャル8(-25F)
・ヨッシー飛行をする分ロス
・アイテム変化でゴールを持ってきて短縮。
記念写真
Posted by ISMin(いずみん) - 2010.07.10,Sat
http://tasvideos.org/2728S.html
六つの金貨の海外版です。
andymac氏により前記録(24:23.62)より約2分40秒更新されました。
ただし、前記録はエミュの不具合によりスタート位置ずらし(pipe glitch)を使っていないので、
単純なタイムの比較はあまり意味無いようなあるような。
以下解説
Posted by ISMin(いずみん) - 2010.05.05,Wed
お風呂の中でx速度とジャンプ力の関係についての記事を書こうと思ってたらすでに動画が上がってたので紹介
【TAP】スーパーマリオワールド(SMW) ダッシュブロックで遊んでみた
速く走れば走るほどジャンプ力が上がる、通常ジャンプよりスピンジャンプの方がジャンプ力が低い、といったことはマリオワールドをやりこんでる人ならほとんど知ってると思いますが、これらの現象はジャンプの初速が変わっているために起こります。
x方向速さとジャンプの初速の関係は次の表のようになっています。
加速度、最高速度はABを押してないときはそれぞれ+6、70
押しているときはそれぞれ+3、67 となっています。
これはジャンプの仕方によらず常に一定です。
また、他のジャンプ方法のジャンプ力は次の表のようになっています。
これらはx方向の速度などは関係なく、常に一定の値となります。
【TAP】スーパーマリオワールド(SMW) ダッシュブロックで遊んでみた
速く走れば走るほどジャンプ力が上がる、通常ジャンプよりスピンジャンプの方がジャンプ力が低い、といったことはマリオワールドをやりこんでる人ならほとんど知ってると思いますが、これらの現象はジャンプの初速が変わっているために起こります。
x方向速さとジャンプの初速の関係は次の表のようになっています。
x方向速さ | 通常ジャンプ | スピンジャンプ | 最大高さ(ピクセル) | 備考 |
0~7 | -77 | -71 | 64.1875 | 負の値は上方向の移動を示している。 |
8~15 | -79 | -73 | 67.5 | |
16~23 | -82 | -75 | 72.625 | |
24~31 | -84 | -77 | 76.125 | |
32~39 | -87 | -79 | 81.5625 | |
40~47 | -89 | -82 | 85.3125 | |
48~55 | -92 | -84 | 91.0625 | 高さ6マスのブロックをぎりぎり超えられる (5ピクセル位ならブロックが押し上げてくれる) |
56~63 | -94 | -87 | 95 | |
64~71 | 3 | 2 | 0 | 下方向の移動、つまりジャンプ不能 |
72~79 | 3 | 4 | 0 | ただしAB交互連打で慣性移動はできる |
80~87 | 3 | 2 | 0 | |
88~95 | 3 | 4 | 0 | |
96~103 | 3 | 2 | 0 | |
104~111 | 3 | 4 | 0 | |
112~119 | -125 | 1 | 166.6875 | ジャンプ台ジャンプと同じくらい飛びます |
120~127 | -61 | 3 | 40.6875 | |
128 | 67 | 2 | 0 | 速さ128は左方向に移動してる時しかでない |
加速度、最高速度はABを押してないときはそれぞれ+6、70
押しているときはそれぞれ+3、67 となっています。
これはジャンプの仕方によらず常に一定です。
また、他のジャンプ方法のジャンプ力は次の表のようになっています。
これらはx方向の速度などは関係なく、常に一定の値となります。
ジャンプ方法 | ジャンプ初速 | 最大高さ(ピクセル) |
敵ふみ反動 | -48 | 25.5 |
敵ふみ反動(AB押しっぱ) | -88 | 83.4375 |
敵ふみ反動(スピンジャンプ) | -8 | 0.9375 |
ブロック破壊反動 | -42 | 19.6875 |
ブロック破壊反動(AB押しっぱ) | -45 | 22.5 |
ヨッシージャンプ(地上) | -64 | 44.6875 |
ヨッシージャンプ(空中) | -96 | 99 |
音符ブロック | -96 | 99 |
ジャンプ台 | -80 | 69.1875 |
ジャンプ台(AB押しっぱ) | -128 | 174.6875 |
設置型ジャンプ台(根元) | -76 | 62.5625 |
設置型ジャンプ台(2番目) | -32 | 11.6875 |
設置型ジャンプ台(2番目、AB押しっぱ) | -88 | 83.4375 |
設置型ジャンプ台(3番目) | -56 | 34.4375 |
設置型ジャンプ台(3番目、AB押しっぱ) | -104 | 115.9375 |
設置型ジャンプ台(4番目以降) | -72 | 56.25 |
設置型ジャンプ台(4番目以降、AB押しっぱ) | -120 | 153.75 |
ジュゲム雲 | -64 | 44.6875 |
つた/ロープ/金網 | -80 | 69.1875 |
水から出るとき | -83 | 74.375 |
Posted by ISMin(いずみん) - 2010.04.16,Fri
マリオが乗っていない時のヨッシーは一定の周期で跳ねているように見えますが、
実際にはサブピクセルの関係から、1ピクセル高い位置まで飛ぶことがあります。
このときにはマリオの座標を上手く調整すれば、1マス高い位置でヨッシーに乗ることができます。
高さ1マスの段差がある時に、ヨッシーを下段の角に置き、ヨッシーが地面から4ピクセル上にいるときに、マリオが上段の地面から1ピクセル上を下降しているようにすれば、ヨッシーに乗ると同時に角を抜けることができます。
参考動画(you tube) ←余計な部分が多いですが。
この技は普通の角抜けと違ってx速度に依存せずに角抜けできる、天井が低くても角抜けできるという特徴があります。しかし、条件がなかなか厳しいため使いどころはあまり無さそうです。
もちろん上手く地形ができていれば角以外の床も抜けることができます。
また、成功は確認していませんが、ヨッシーを逃がしたり、空中でヨッシーから降りたりすることで、ヨッシーが単独で動けるようにして、角にきたときに上手く乗り込めば、1マスの段差以外でもできるかもしれません。

(追記) ヨッシーを逃がしてタイミングよく乗り込むことで角抜けする方法は成功を確認できました。
意外と簡単にできるのでもしかしたら使えるポイントがあるかもしれません。
実際にはサブピクセルの関係から、1ピクセル高い位置まで飛ぶことがあります。
このときにはマリオの座標を上手く調整すれば、1マス高い位置でヨッシーに乗ることができます。
高さ1マスの段差がある時に、ヨッシーを下段の角に置き、ヨッシーが地面から4ピクセル上にいるときに、マリオが上段の地面から1ピクセル上を下降しているようにすれば、ヨッシーに乗ると同時に角を抜けることができます。
参考動画(you tube) ←余計な部分が多いですが。
この技は普通の角抜けと違ってx速度に依存せずに角抜けできる、天井が低くても角抜けできるという特徴があります。しかし、条件がなかなか厳しいため使いどころはあまり無さそうです。
もちろん上手く地形ができていれば角以外の床も抜けることができます。
また、成功は確認していませんが、ヨッシーを逃がしたり、空中でヨッシーから降りたりすることで、ヨッシーが単独で動けるようにして、角にきたときに上手く乗り込めば、1マスの段差以外でもできるかもしれません。
(追記) ヨッシーを逃がしてタイミングよく乗り込むことで角抜けする方法は成功を確認できました。
意外と簡単にできるのでもしかしたら使えるポイントがあるかもしれません。
カレンダー
カテゴリー
最新記事
アーカイブ
プロフィール
HN:
ISMin(いずみん)
性別:
男性
自己紹介:
別名ISMさん。なぜHPのタイトルといっしょになったのだろうか。荒島博久さんは旅に出ました。
ブログ内検索
最新トラックバック
Template by mavericyard*
Powered by "Samurai Factory"
Powered by "Samurai Factory"