2010年10月17日の日記を表示中
2010年10月17日 (日)
■荷物
明るくなってから寝たのに,午前中に荷物が2度も届いて叩き起こされる展開.しかも2個目の荷物の梱包が驚くほど簡素で,ビックリして目が覚めました (;´Д`)
見ての通り,基板にエアキャップを巻いて紐で縛った状態.恐ろしいことにレスロック(足) がついたまま (しかも外向き) なので,少しでもどこかに引っかかったりしていたら基板の角がめりっといっていたことでしょう.
ちなみに,中身はテトリスプラス+マザーボードです.値段的には全然大したことのない基板ですが,ROM目当てではなく(テトリスプラス,これで4枚目だし・・・),1枚確実なメガシステム32のマザーボードを押えておくことが目的だったので,割れてなくて本当によかったなーと.
って,何か書いてあるし(;´Д`)
[コメントを書く]
■板
今日は先手を打ってソニックの電池切れ対策をやってみました.MAMEのソースによると,ソニックの羊羹は,RAMのとあるアドレスにデータが書かれると,別の場所をゼロクリアしたりしつつ,書かれた値を元にROM上のテーブルを引いて,RAMの別の領域に書き出すということをやってるらしいです.
MAMEを使って調べたところ,このトリガとなるRAMの領域はステージを管理する変数っぽく,主に2ヶ所で値を書いているようです.ウォッチポイントをセットして確認した感じだと,片方はコインを入れてキャラを選んだり,ステージが次に進んだりするときに書き込まれる感じ.もう片方は全然通らないけど,近くのデータ領域を見るに,何となくデバッグ目的のステージセレクト用っぽい.とりあえず前者が動けば十分そうですなー.
しかし,そうはいってもMAMEでやってる処理と同じ処理を書いて,それをうまいこと差し込む方法を探すのは結構面倒そう.・・・そうだ,どこかにデバッグ用の羊羹相当の機能を提供する関数が残ってるんじゃない?というわけで,一生懸命探してみたんですが,それっぽいところは見つかりませんでした.テーブルをROMからRAMにコピーしているところを発見したので.この近くにあるかと思ったんですけどねー.
そんな感じで前者の部分をJSR命令に置き換え,後ろの方の空き領域に以下のコードをドカッと足してみました.アセンブラはないので,今回も当然ハンドアセンブラ _|‾|○.MAMEで答え合わせができるのがせめてもの救いかw.ちなみにpush/popとか,ぱっと見ソニックではあんまり使われていないようだけど,どうなんだろう・・・.
push R1 cmp.b #E, 65C4[R25] ble LABEL1 mov.b #E, 65C4[R25] LABEL1: mov.h 65C4[R25], R1 mov.h 7500[R25](R1), R1 mov.h R1, 706E[R25] mov.w #0, 70BC[R25] pop R1 rsr
ひとまず,羊羹のエミュレーションを切ったMAME上で,このパッチで動くようになりました.あとは,実機上での確認ですが,電池の切れたソニックが手元にないので,これを実機上で試すことはできません・・・.あ,EPROMとGALとジャンパを電池のないJリーグ1994のサブボードに移植すればいけるかな?
ちなみに,ソニックのこのプロテクションは,デモプレイなどでは発動しないため,電池が切れても立ち上がって普通にデモがぐるぐる回るはずです.コインを入れてキャラを選んだ時点で初めて電池切れがわかるっぽい (リセットがかかったり,変なステージから即死の状態で始まったりすると思われる).恐ろしい・・・.
[コメントを書く]
2010年10月17日の日記を表示中
だんだんエスカレートする☆さんのフリーダムっぷりに
二の句が出ません。
これ、よく無事に届きましたねぇ。
本当、☆さんの品物は、いざ届いても安心できませんね。
まあ,確かに☆さんのチェンジエアブレードだったか出たツイ
だったかは,これが紙に代わっただけだったような気もしますがw
けれども、☆さん以外にもこんな梱包で発送される方が
存在するとは・・・・