Language…
16 users online: Batata Douce, caioskii, Chambo, Dark Prince, ForthRightMC, Fozymandias, Gorry, Green, LadiesMan217, MellowYouth, Mischievous Marc, Rauf, Raychu2021,  Ringo, SiameseTwins, sinseiga - Guests: 263 - Bots: 241
Users: 64,795 (2,375 active)
Latest user: mathew

Mega Man 2 Matasaburo by ASSATAKKU

File Name: Mega Man 2 Matasaburo
Submitted: by ASSATAKKU
Authors: ASSATAKKU
Tool: PIXI
Type: Standard
Dynamic: No
Disassembly: No
Includes GFX: Yes
Description: Matasaburo pushes Mario with the wind.

He can be defeated by stepping on it 5 times.
Tags: mega man, mega man - the wily wars, mega man 2
Screenshots:
English:
For being a simple sprite, it certainly is very complexly build. Most of the complexity comes from the fact that it's generated with Dyzen which can output very unoptimised code. Issues include but are not limited to redefining everything (including SA-1 defines and sprite tables, both which are proved by PIXI), a very complex way of handling interaction as well as a very general GFX routine which allows the sprite to be mirrored in all four directions even though Matasaburo can only face to the left.
The interaction routine also has got some unused routines such as SPRITE_WINS and SPIN_KILL and if you get hurt because you're moving upwards, the clipping routine is called twice for some reason.

In addition, I noticed something:
Code
    LDA $13
    AND #$20
    BNE WIND_2

It looks like you want to play a sound effect for every 32th frame. However, you misunderstood the AND as an improvised MOD 2^n operator in the sense that you used 2^n directly instead of 2^n - 1. This causes the Matasaburo to play no sound effect for 16 frames and then for 16 frames every single frame a sound effect.

Speaking of sound effects: I also noticed that you missed the SA-1 compatibility for the sound effect for pushing Mario away. That one is a relatively minor issue and would have been fixed if this sprite were accepted. It still would be nice that if you resubmit, you also take care of SA-1 support, particularly because every other address is properly remapped.

There are gameplay issues as well: I noticed that Matasaburo can hurt you right after stomping it:

Possible ways to fix this is to either temporarily disable interaction or to check if $1697 is non-zero (the latter is weird but it is how SMW does it).

In addition, because a custom interaction is used, touching it from the left will scare Yoshi away while the right side will side will instead hurt the player. This can be fixed by checking if Mario rides Yoshi and if he does, stop the interaction.


Ultimately, we decided to remove this sprite because of these issues.

By the way, it would be good if you also take care for proper tagging. While there are some weak standards in our tagging, we do require the compatible ROM types (i.e. lorom and sa-1) in the tags.

日本語:
マタサブローは単純なスプライトにもかかわらず、そのコードはかなり複雑です。
それはDyzenの最適化されていないコードが最大の原因です。
SA-1の定義や当たり判定の処理、このスプライトには不要な左以外の方向を向くGFX処理などを再定義しています。
また、当たり判定のルーチンの中には未使用のルーチンがあり、上方向に移動したことでダメージを受けると、なぜかクリッピングのルーチンが二回呼び出されます。

さらに、SPRITE_WINSSPIN_KILLで気づいたことがあります。

Code
    LDA $13
    AND #$20
    BNE WIND_2

32フレームごとにSFXを鳴らしたいようですね。しかし、2^n - 1ではなく2^nを使用したことでimprovised MOD 2^n 演算子と誤解しています。
これが原因で、16フレームSFXを鳴らさなかった後、今度は16フレームごとに効果音を鳴らすようになってしまいます。

効果音といえば:
マリオを跳ね返すときのsfxがSA-1に対応していないことにも気づきました。これは比較的小さな問題なので、提出が許可されていれば修正されていたかもしれませんが、再提出時は修正していただけると嬉しいです。ほかのアドレスはすべて適切にSA-1に変換されています。

挙動にもちょっと問題があります。マタサブローを踏んだ瞬間にダメージを受けることがあるようです:

解決法として、踏んだ瞬間は一時的に当たり判定を無効にする、$1697が0でないかチェックするなどがあります。(後者は少し挙動が奇妙ですが、バニラスプライトはすべてこれを使用しています。)

また、カスタムインタラクションを使用しているため、ヨッシーに乗っていると左から当たったときにヨッシーが逃げ、右からだとヨッシーは逃げずマリオに直接ダメージが行きます。
これはマリオがヨッシーに乗っているか確認し、乗っている場合は当たり判定を無効にすることで解決できます。


とりあえず、これらのことが原因でこのスプライトは削除されます。

ちなみに、タグ付けもきちんとやってもらいたいです。そもそもの基準が甘いところもありますが、互換性のあるROMタイプの入力は必須です。

Moderated with / 以下のツールでモデレートしました。
  • Lunar Magic v3.31
  • SA-1 Pack v1.40
  • PIXI v1.32
  • BSNES v115

翻訳を手伝ってくれたFrancium氏、ありがとうございました。