2024年4月30日から2024年4月1日までの日記を表示中

2024年 4月30日 (火)

基板

昨日の続きで、手持ちのビデオゲームタイトルの残りを一通り動かして、追加調査は終了となりました。やることは決まっていて、カートリッジの認識率もめちゃくちゃ高まっているので、まあそんなに大変じゃなかったんですが、調査結果自体はちょっと思っていたのと違っていて残念な感じw

[コメントを書く]

はちみつブルーベリー 2024/06/02(日) 21:42:41
こんばんは。基板修理の相談にまいりました。ロッドランドの背景が出なくなりロムデータを吸い出して確認しているのですが、ROM8「S202000DR」とROM19「LH2311J0」がエラーを吹いて読みだせません。機器はT-56を使用しています。27c020などで試してみたのですが、ピン配列が違う感じなのでしょうか。サブボードはMB8845でMAMEデータのサブボードはMB-M02Aみたいなので、ROMの数と容量も違うみたいです。お手すきの際にアドバイスなど頂けましたら幸いです。
nosuke 2024/06/06(木) 00:10:51
こんにちは。
すいません、今頃コメントに気が付きました(汗)
ロッドランド、週末あたりに時間取れたら確認してみますね。
nosuke 2024/06/11(火) 00:19:31
うちのロッドランドのサブボードもMAMEと同じMB-M02Aでした。
ただ、S202000DRやLH2311J0という部品名は共通ですね。
マスクROMなので、おそらく中身はMB8845でも同じではないかと
思います。

ROMが基板に直付けなので、軽くテスターで確認しただけでは
ありますが、まずはこんな感じです。

・ROM8 S202000DR ... サンプリングデータ。2Mbit ROM。
27C020互換のピンアサインと推測される。
・ROM19 LH2311J0 ... 背景データ。 1Mbit ROM。
基板側の回路を見ると22番ピンと24番ピンが直結しているので、
24番ピンがOE_のJEDECタイプのピンアサインと推測される。
なので、読み出すときは HN27C101AGとかAM27C010とかを
指定してやればよいはず。

ちなみに、T56で読もうとするとエラーで読み出せないとの
ことですが、どんなエラーメッセージが表示されるのでしょうか?
なんとなくこっちの方が重要な気がしています。
はちみつブルーベリー 2024/06/11(火) 18:35:22
ありがとうございます。教えて頂いた型番で読み込みを試してみます。
エラー内容も含め後ほど改めてご報告します。
はちみつブルーベリー 2024/06/11(火) 19:54:21
ROM8/19ともに教えて頂いた型番で読み込めました。ご指南ありがとうございます。
Pin detectエラーが出ていたのですが、結果としては
エラーメッセージの方が重要かもというご指摘の通りでした。

Optionsを見たところ、Pin Detectの項目があったので、
それのチェックを外したら読み込めました。
機器の使い方をよく理解しておらず、申し訳ございません。

ロムデータ自体には異常がないようでしたので、
サブボードの方を調べてみます。
マザーはプラスアルファが正常に動くので、問題ないと思われます。

また何かありましたらご相談させていただければ幸いです。
お忙しいところありがとうございました。
nosuke 2024/06/16(日) 00:55:00
おお、うまく読み込めたようでよかったです。
しかしROMに異常なしとなると、ちょっと厄介そうですね。
マザーボード側のBPROMはロッドランドのものに交換していますでしょうか。
はちみつブルーベリー 2024/06/16(日) 16:19:53
マザーのBPROMというのは、ヒューズロムのことでしょうか?
ヒューズロムでしたら、交換しております。
こちらは恐らくT-56では読み込めないようなので
異常があったとしても調べられないと思われます。

サブボードのロムもMAMEとデータが同じものは確認できましたが
MB8845用のロムはデータが照合できていません。
無事に吸い出せたのですが、軽くバイナリーエディタで目視したくらいで
こちらに異常が出ていたら確認は難しいかもです。
nosuke 2024/06/17(月) 01:17:24
はい、ヒューズROMのことでした。
きちんと交換済みでしたか。失礼しました。
比較対象がないとなるとなかなか難しいですね・・・。

2024年 4月29日 (月)

プラリペア

加湿器を片付けるついでに、お子様がバッキリ折ってしまったヒンジ部分をプラリペアで修復してみました。意外といい感じに強度が出てくれています。よかった。

修復したヒンジ部分 (左)

修復したヒンジ部分 (右)

基板

また手持ちのST-Vのビデオゲームタイトルを片っ端から引っ張り出してきて起動させて追加調査を実施したり。そろそろ期限が近づいているので焦るw

2024年 4月28日 (日)

基板

ファンキーヘッドボクサーズのテストモードを見ていたら、COMMUNICATIONなる設定があることに気が付きました。もしかしてマザーボード間を繋いで通信対戦する機能があったりするのかな・・・。

ファンキーヘッドボクサーズにある謎の通信設定

通信自体はおそらくCN18を使うんだと思うんですが、ソフトが1本しかないので試せないのが残念w。ちなみに単独でCOMMUNICATIONをオンにしておくと、通信相手を待つためか、ゲームがまったく起動しなくなりますw

あと、他のゲームのテストモードをいじっていたら、マザーボード上のテストスイッチやサービススイッチが効かなくなるやつとか、異常に反応が悪くなるやつがあることも発見。上海 万里の長城、ぷよぷよSUN、ファインドラブがそんな感じでした。もちろんJAMMAの方から信号を入れる分には普通に反応するので、通常は問題にはならないですが、うちではST-VとかNAOMIはマザーボード側で操作することが多いのでちょっと焦りましたw

上海 万里の長城のテストモード

基板

ふと気になることがあってコナミのSystem GVを開けて中の基板を確認してみたり。この忙しいときに何をやっているんだという感じですがw

System GVを開けて中身を見てみるなど

2024年 4月27日 (土)

基板

連休に入ったので家の中の片付けに着手しました。で、そのうち捨てようと思ってまとめてあった漫画とかの収納用の袋の中に謎のUSBメモリが入っているのを発見 (※以下の写真は取り出した後に撮ったものなので「謎のUSBメモリ」は映っていません)

「謎のUSBメモリ」が入っていた袋

・・・と思ったら、USBメモリじゃなくてKOFスカイステージ (Type-X) のドングルでした (汗)

KOFスカイステージのドングルだった

Type-X側に養生テープで貼り付けてあったんですが、剥がれ落ちてしまったようで、その際、当時基板の近くに置いてあったこの袋の中に入り込んでしまったようです。危ないところでした・・・。

2024年 4月26日 (金)

基板

先日水洗いしたプリクラVol.6冬のカートリッジを再度開ける機会があったので、ついでにテスターで確認してみたら、黒く変色してるところも全然断線していないことが判明しました。認識されないのは、エッジコネクタの表面が錆かなんかでスロットの端子と導通できていないからとかなのかも。

というわけで、端子の錆っぽいのを落としつつ、やや甘めにスロットに刺してやったら立ち上がるようになりました。

端子の清掃をしたら上がるようになった

ついでにカートリッジのコネクタについても少し調査。なるほど、これはそういうことか・・・

カートリッジ基板について調べてみたり

2024年 4月25日 (木)

Lightning

何かiPadが充電中の状態で机の上から落ちたらしく、その際にLightningのケーブルの端子部分が折れてしまいました。

Lightningケーブルの端子部分が折れた

このiPad、10年以上前の機種なんですが、驚くべきことに未だに使っていたりするんですよね。というわけで、朝方AmazonでAnkerのLightningケーブルをポチったところ、夕方に到着しました。早いw

Ankerのケーブルが届いた

基板

ST-Vのマザーボードのバスとか拡張コネクタまわりの配線を調べたりしていました。今まであんまり意識していませんでしたが、配線が内層に隠れているのが凄くいやですね・・・。

2024年 4月24日 (水)

基板

ST-Vの古い(?) マザーボードは4Mbit のBIOS ROMが27C4096系なんですね。で、BIOS ROMのソケットの横にあるジャンパは 2Mbit とか 1MbitのROMを装着するときに使うものみたいです。途中からそんなの必要ないと判断されたのか、ジャンパはなくなり、BIOS ROM自体も4MbitのマスクROMになったようですが。

容量の小さいBIOS ROMを搭載するためのジャンパと思われる

あと、超どうでもいい話ですが、2個載ってるSH-2について、テスターで120番ピン (MD5) の接続先を確認した結果、角に近いところにあるやつがSlaveで、そうじゃない方がMasterということがわかりました (MD5がGNDに接続されている方がMaster) 。これで何かがあるわけでもないですが、ちょっとスッキリw

2024年 4月23日 (火)

基板

ST-Vの水滸演武、今まであんまりちゃんと動かしてなかったんですが、改めて見てみると背景が遠くの山とかまで含めた一枚絵みたいでちょっとびっくり。多重スクロールしないのね。BGの拡大縮小をやるとこうなっちゃうんでしたっけ。さすがにもっとできそうな気がするけど。

水滸演武を動かしてみた

あと、水滸演武ではワイドモニタに設定できるんですね。変えてもよくわからん感じでしたが。環境側の問題かな。

モニターをWIDEにできる

2024年 4月22日 (月)

基板

ゲーメスト増刊のザ・ベストゲーム2を確認したら、初代スポーツフィッシングのことがちょっとだけ出ていました。

ザ・ベストゲーム2

まあ (当時の) 最新のLDのゲームであるということだけですがw

スポーツフィッシングがLDゲームという情報源

というか、時期的にこれが国内のLDゲームの最終作品なのかも?調べてみたら、同年にタイトーも冒険王タップルというのを出していたみたいですが (IDYAなるコクピット筐体向け)、どっちが後だったんだろう。

2024年 4月21日 (日)

基板

ST-Vの麻雀ハーネス変換アダプタを発掘。

ST-Vの麻雀ハーネス変換アダプタ

そしてプロ麻雀 極Sのマニュアルも発見。なるほど、ST-Vの麻雀ハーネスの接続はこうなっているのか。アダプタからひょろっと出ているケーブルの接続先はCN32ね (他に9ピンのコネクタはないので間違いようがないとは思うけどw)。

ST-Vの麻雀用のマトリクス

繋いでみて、プロ麻雀 極Sで無事ボタンが認識されることを確認。ついでに他のタイトルでの対応状況を確認してみましたが、バーチャル麻雀シリーズや団地で花札も同じ変換アダプタで大丈夫な模様。

麻雀用のコンパネを繋いでみた

ちなみに、ST-Vの多くのタイトルにはポーズ機能 (画面写真撮影などのため?) があって、押すとゲームの進行を止められるようになってるんですが (タイトルによっては有効化できない、非対応なものもあるっぽい) 、マイ・フェア・レディ (バーチャル麻雀2) だとデモ中にポーズを押しても上下にガタガタしてしまう問題がある模様。

そんなときに頼りになるのはやはりFramemeisterですね。静止ボタンを押すことで完全に止まります。まあ、マイ・フェア・レディのキャプチャをするつもりはないんですが・・・w。この機能、RetroTINK 5X-Proにないのが残念。

おまけ。マニュアルを探していたら、バーチャファイターキッズのポスターが出てきました。これが普通の頭身のYet Another VF2.1 だったりしたら、少しだけ世界が変わっていたんじゃないかという気も。結末は変わらなかったにしても・・・。

バーチャファイターキッズのポスターも出てきた

2024年 4月20日 (土)

何もしていない

お子様が急に熱を出してダウンしたりして何もできず。

2024年 4月19日 (金)

ビール

またしてもサントリー生を箱買い。飽きずに飲めてしまう恐ろしいビールですw

サントリー生

2024年 4月18日 (木)

基板

特に目的があるわけでもないんですが、またいくつかST-Vのソフトを動かしたり。エランドールは普通に端子を掃除してもまったく認識されず、ガワから出して差し込みを調整したりして、やっとのことで認識されました。嫌な汗をかいたw

エランドール無事認識

その後、さらに念入りに端子を掃除したら、ガワに入った状態でもちゃんと認識されるようになりました。ふぅ。

その後はガワに入った状態でも認識されるように

後は特に問題なく平和な感じ。

スティープ・スロープ・スライダーズ

シーバスフィッシング

ガーディアンフォース

2024年 4月17日 (水)

何もしていない

原稿をちょっと進めたくらい。頑張らねば。

2024年 4月16日 (火)

基板

ST-VのBIOSについて調べていたら、MAMEのソースに EPR-23603 なる2000年10月24日版のBIOS ROMがあるみたいなことが書かれていますね。この時期に新規に出てたとなると、くれよんキッズあたりのBIOSとかなのかな・・・?過去にオークションに出品されていたくれよんキッズのマザーボードの画像を見ると、確かにBIOS ROMがマスクROMじゃなくてシール付きのものになっているようですが。うーん。

2024年 4月15日 (月)

UVEPROM

前にeBayで買ったピカピカな AM27C400、見るからに怪しい感じですが、ちょっと実験で使おうと思って出してきたら、プログラマが「IDが合わない」といって弾いてきました。やはり怪しい品だったか・・・。

AM27C400?

AM27C400として読もうとするとIDエラーで弾かれる

Xgproで読み出されたIDは 0x00C2 0xB800 らしいです。Manufature Codeが0xC2ってどこだと思って手持ちのデータシートをチェックしてみたところ、Macronixのものと判明。もしやこれは・・・とMX27C4100 のデータシートを見たら見事に 0x00C2 0xB800 の記載がw

読み出せたIDと合致するのは 0x00C2 0xB800 だった?

さっそくIDをMX27C4100としてReadしてみたら成功しました。そのままプログラムもできました。なにこれ、やっぱりリマーク品ってことなの?w

MX27C4100としてやったらアクセス成功

基板

昨日水洗いしたプリクラ2 Vol.6 のカートリッジ、乾いたみたいです。でろでろしたのは落ちたけど、やはりパターンの変色が酷いですね。

水洗いしたプリクラ2のROMボード

動かしてみましたが認識されませんでした。残念。

認識されず

腐食によって断線してる箇所が結構あると思われますが、まあ今は調べてる場合じゃないのでまたいずれw (追記: 後々確認したら、普通に端子の表面の接触が悪かっただけで、特に断線はありませんでした)

2024年 4月14日 (日)

基板

プリクラ2 Vol.6冬のカートリッジを開けてみたところ、めちゃくちゃ腐食気味なことが判明。

プリクラ2 Vol.6冬のカートリッジを開けてみた

端子部分が錆びた感じ

うちに来る前、長らく過酷な環境で保存されていたんですかね。

パーツのまわりにも白っぽいものがこびりつく感じに

とりあえずいつもどおり食器用洗剤でじゃぶじゃぶ。

食器用洗剤で洗う

積極的に乾かしていきます。

風を当てて乾燥

続いて資料捜索。サービスマニュアル類をまとめた箱を漁っていたらST-Vのサービスマニュアルが出てきました。まったく記憶になかったw

ST-Vのサービスマニュアル発見

あと、MAMEのソースを見ていたら、タタコットの基板は別の基板からROM載せ替えで作っているとの興味深い情報があったので確かめてみることに。

タタコット

先日タタコットのカートリッジを開けたときの写真を確認してみます。このマスクROMに刻印された番号はバーチャファイターリミックスですねw

タタコット表側

こちらはバーチャファイターリミックスのカートリッジの中身。表側のマスクROMは完全にタタコットのものと一致していますw

バーチャファイターリミックスの表側

バーチャファイターリミックスの裏側にはマスクROMが実装されていません。

バーチャファイターリミックスの裏側

タタコットはここに必要なマスクROMを載せている模様。

タタコット裏側

ということは、タタコットのカートリッジ基板にバーチャファイターリミックスのUVEPROMを乗せれば、バーチャファイターリミックスが起動するのでは?というわけで、やってみました。

バーチャファイターリミックスのUVEPROMを移植してみた

さてどうか。写真だとまったくわかりませんが、マザーボードに刺さっているのは、タタコットのROMボードにバーチャファイターリミックスのUVEPROMを移植したものになりますw

動かしてみます

きた!バーチャファイターリミックスとして認識されました!w

バーチャファイターリミックスとして認識された

カバーをつけて改めて起動。普通にバーチャファイターリミックスが立ち上がりましたw

バーチャファイターリミックスが普通に動く

ちなみにタタコットの個体によってはベースが違うことがあるようです。うちのはバーチャファイターリミックスでしたが、MAMEののソースにあるやつはエジホン探偵事務所がベースだった模様。

2024年 4月13日 (土)

基板

ST-Vについて色々調べ直したり考察したり。

2024年 4月12日 (金)

基板

今日もST-Vのカートリッジを開けて中を見たりしています。花組対戦コラムスは、シールが二重になっていたり、マスクROMを貼り直した感じの跡があったりで、何か元々別タイトルだったのを再利用してる雰囲気ありますね。何だろう。

花組対戦コラムス

シールが二重に

マスクROMを貼り直した感じ?

しかし見るのも面白いけどやっぱり動かしていかないと。

プリクラ大作戦

コラムス97

うっ、この時代の変わり目の難しさ感w

バーチャル麻雀

2024年 4月11日 (木)

基板

ST-Vマザーを比較したくてあちこち漁ってみたところ、ジャンク箱の中から2枚発掘され ました。確かどっちも起動しなかったはず・・・と思って通電してみたら1枚目は普通に立ち上がりました。あれー、何だっけ。

ジャンクのST-Vマザー、起動した

ああ、ボリュームが取られていて音が出ないw

ボリュームがなくて音が出ない

もう一枚は見た目こそまあまあキレイなものの、まったく起動しませんでした。雰囲気的に最初期のものかな (写真撮り忘れ)

ちなみにST-Vにはこんなデモ動画みたいなのが入ってたりするんですよね。カートリッジを刺さずに起動したりすると見ることができたりします。

2024年 4月10日 (水)

基板

色々確認したくて、ひたすら手持ちのST-Vのカートリッジを開けて写真を撮ってます。色々興味深いけど数が数だけに大変w

バーチャファイターリミックス

上海 万里の長城

ファンキーヘッドボクサーズ

デカスリート

2024年 4月 9日 (火)

基板

手持ちの基板リストのST-Vタイトルを確認していたら、バーチャル麻雀とサンドアールが見当たりません・・・。もしかして持ってない?いやいや、そんなわけないよね・・・というわけで棚を見に行ったらちゃんとありました。単なるリスト漏れでした。ふぅw

サンドアールとバーチャル麻雀無事発見

ついでに後で便利なように、発売時期順にソートしてみました。左下の方は未確認。

発売時期順にソートしたつもり

気がつけば、いわゆる国内で販売されたビデオゲームのカテゴリに属するものは、特殊筐体向けを含めて一通り揃っているのかも?もちろん、マジカル頭脳パワーとかスポーツフィッシング2みたいなやつは、カートリッジ以外が足りなくて動かせないですがw

2024年 4月 8日 (月)

基板

今日はサターンをばらして基板を取り出してST-Vの基板と見比べたりしてましたw。いやー、ST-Vを見た後だと、サターンの基板の詰め込み具合が凄いw

サターンの基板をチェック

2024年 4月 7日 (日)

基板

ポーカーレディースを一旦片付けて、CPicS2の出荷準備した後、ST-Vのマザーボードを引っ張り出してきて色々と調べ物を開始。頑張らねば・・・。

ST-Vマザーボード

2024年 4月 6日 (土)

基板

ポーカーレディースの基板 (88124-A-2) 、KABUKIのクイズ系の基板 (89126-A-2) とそっくりなんですよね。ひょっとして互換性があるんじゃないかと思い、試しにクイズ三國志の基板に部品を載せてみることに。

クイズ三國志の基板 (89126-A-2)

まずはキャラクタデータまわりから。ポーカーレディースは4Mbit品のROMを使っているので、それが乗るようにクイズ三國志の基板の設定を変更します。デフォルトだと32pinソケットの30番ピン (4Mbit ROMではA17相当) がVCCに直結しているので、JP14・JP18のジャンパ (0Ω抵抗) を外します。

JP14とJP18のジャンパを外す

上記だけだと不十分で、JP16とJP20も外す必要があります (何で二重化されているのかは謎)。これでROMの30番ピンがVCCから切り離されました。

JP16とJP20のジャンパも外す

で、代わりにJP14・JP18の隣のJP15・JP19をジャンパさせることでROMの30番ピンに5Jの位置のPALの12番ピン出力 (A17のアドレス信号) が来るようになるんですが、いつでも戻せるようにしておきたいので、ここはソケット化した上でJP15とJP19をジャンパさせました (JP15・JP19をジャンパさせた状態の写真は撮り忘れ)

一応後でいじれるようにソケットっぽい感じに

で、サウンドまわりのROM用のソケットを空きパターンに増設。

ROMソケットを増設

ROMとPALを移植して動かしてみます。

部品を移植

うおお、タイトルロゴが出た!しかし後ろがおかしいww。あと、タイトル画面が出た後、すぐにリセットかかってしまうようです。何だこれは

起動はしたけど背景が変

あ、そうか。キャラクタデータのROMの31番ピン (A18) の処理を直すのを忘れていました。31番ピンには5Jの位置のPALの13番ピンが配線されています。おそらくこの出力は、5JのPALのすぐ隣にあるJP17の有無で決まると思われます (ジャンパがあると5JのPALの6番ピンがLに落ちて、ジャンパがないとHになる)。

おそらく外す必要があるJP17

というわけで、このジャンパをポーカーレディースの基板と同様に外してみました。

JP17も外した

これでタイトル画面が正常になりました。やった!w

タイトル画面ちゃんと出た

あとは、リセットですね。こちらは、もしやと思いMAMEでトレースを取ってみたところ、そのまさかで、0xE004番地に命令を置いて実行していることが判明。これ、スーパーパンと同じくSRAM上の命令を実行しているってことになりますね。というわけで、コンフィギュレーションの最後を 0xF0 0x00 にしてたのが問題だった模様。はー、だからKabuki Desuiciderのコンフィギュレーションではスーパーパン以外も 0x70 0x00 になってるやつがあるのか・・・。

トレースにSRAM上の命令を実行している痕跡が

CPicSKに書き込むコンフィギュレーション情報の末尾を0x70 0x00 に直したらリセットもかからなくなりました。スプライトが表示されるようになったことで急に華やかになりましたねw。本来こういう画面だったのかw

画面表示が正常になった

2024年 4月 5日 (金)

何もしていない

ちょっとCPicSKとかをいじったりしたくらいで特に面白い話もなく。

2024年 4月 4日 (木)

基板

スーパーパンでのSRAM上のデータに対するエンコード方式について、スタックに読み書きしているエンコード済みのデータも含めてツールで絞り込んだところ、以下の通りと判明しました。

  • エンコードは、ただのビットシャッフル
  • ビットシャッフルのアルゴリズム自体はROM上のプログラムと共通
  • シャッフル時のパラメータは命令 (オペコード) とそれ以外で共通
  • ROM上のプログラムでは、アドレスとコンフィギュレーション情報の一部 (MAMEのコード (kabuki.cpp) でいうaddr_key) で決まっていたパラメータ (select) が固定値 (0xffc3) になる
  • ROM上のプログラムではコンフィギュレーション情報の一部 (MAMEのコードでいうxor_key) が使われていたが、ここがゼロ固定になっている

デコード処理は、MAMEのコード (kabuki.cpp) のbytedecode関数を以下のように呼ぶイメージです。

        decode_buf[A] = bytedecode(src[A],swap_key1,swap_key2,0,0xffc3);

エンコード関数はMAMEにないけど、デコードと逆の順番でシャッフルするだけですね。

static int bitswap1x(int src,int key,uint16_t select)
{
        if (select & (1 << ((key >>12) & 7)))
                src = (src & 0x3f) | ((src & 0x40) << 1) | ((src & 0x80) >> 1);
        if (select & (1 << ((key >> 8) & 7)))
                src = (src & 0xcf) | ((src & 0x10) << 1) | ((src & 0x20) >> 1);
        if (select & (1 << ((key >> 4) & 7)))
                src = (src & 0xf3) | ((src & 0x04) << 1) | ((src & 0x08) >> 1);
        if (select & (1 << ((key >> 0) & 7)))
                src = (src & 0xfc) | ((src & 0x01) << 1) | ((src & 0x02) >> 1);

        return src;
}

static int bitswap2x(int src,int key,uint16_t select)
{
        if (select & (1 << ((key >> 0) & 7)))
                src = (src & 0x3f) | ((src & 0x40) << 1) | ((src & 0x80) >> 1);

        if (select & (1 << ((key >> 4) & 7)))
                src = (src & 0xcf) | ((src & 0x10) << 1) | ((src & 0x20) >> 1);

        if (select & (1 << ((key >> 8) & 7)))
                src = (src & 0xf3) | ((src & 0x04) << 1) | ((src & 0x08) >> 1);

        if (select & (1 << ((key >>12) & 7)))
                src = (src & 0xfc) | ((src & 0x01) << 1) | ((src & 0x02) >> 1);

        return src;
}


static int byteencode(int src,int swap_key1,int swap_key2,int xor_key,uint16_t select)
{
        src = bitswap1x(src,swap_key2 >> 16,select >> 8);
        src = ((src & 0xfe) >> 1) | ((src & 0x01) << 7);
        src = bitswap2x(src,swap_key2 & 0xffff,select >> 8);
        src = ((src & 0xfe) >> 1) | ((src & 0x01) << 7);
        src ^= xor_key;
        src = bitswap2x(src,swap_key1 >> 16,select & 0xff);
        src = ((src & 0xfe) >> 1) | ((src & 0x01) << 7);

        src = bitswap1x(src,swap_key1 & 0xffff,select & 0xff);

        return src;
}

...
        encode_buf[A] = byteencode(src[A],swap_key1,swap_key2,0,0xffc3);
...

結局、SRAMアクセス時のエンコードは8bit内のビットシャッフルでしかないので、0x00と0xFFを読み書きするときは必ずエンコード後も同じ値になります。だから最初のRAMチェックの処理では、エンコードが有効になっている状態でも生データと同じ値 (0x00 or 0xFF) が書かれていたんですね。

何か当初の目的を見失いかけていますが、これまでわかったコンフィギュレーション末尾のまとめ。

  • コンフィギュレーションの末尾が 0x70 0x00 のときはSRAM上のデータがエンコードされた状態になるけど、SRAM上に置いたデータを命令列とみなして実行できる
  • コンフィギュレーションの末尾が 0xF0 0x00 のときはSRAM上のデータが生データになるけど、SRAM上に置いた命令をそのまま実行することができない (間違った命令にデコードされちゃうからなのか、そもそもこの設定のときはSRAM上の命令の実行が禁止されているからなのかは不明だけど、おそらく後者だと思う)

こういう理由があって、SRAM上に置かれたコードを実行するタイトルについてはコンフィギュレーション情報の末尾を 0x70 0x00 にする必要があるということなんでしょうね。・・・ということは、もしかしてスーパーパン以外にもそういうやつがあったりするのかな。 (追記: 調べてみたら 麻雀学園2、ポーカーレディース、スーパー○禁版ではSRAM上のコードを実行することが判明しました)

2024年 4月 3日 (水)

基板

スーパーパンでSRAMを読み書きする際のエンコード・デコード方式について考え続けています。EEPROMから読み出してきたものをデータとしてSRAMに書き出して、それを命令(オペコード)およびデータとして読み込むんだから、ROM上のプログラムと違い、オペコードとそれ以外とでエンコード方式は共通だと推測されます。

とりあえず既存のルーチンのまま、一部のパラメータを変えるとかしているものと推測し、ツールを作ってブルートフォースでそれらしき値を探すも、候補があり過ぎてなかなか絞り込めませんw。もうちょっと情報が必要そうですね。

2024年 4月 2日 (火)

基板

昨日に続き、KABUKIのコンフィギュレーションの末尾を 0x70 0x00にした際に、0xFD10にロードした命令が読み出されるところをロジアナで確認したいんですが、こっちはSRAMに読み書きするデータがエンコードされた状態なので、どんな値にエンコードされているかがわからないとトリガを掛けることができません。

で、どうしたものかとちょっと考えて、M1を使うことを思いつきました。命令として読み込むときはここがLowになるはずなので、SRAMからReadしていて、なおかつM1が0のところ見れば、そこが 0xFD10からの読み出しとなるはずです。問題は信号が足りないという点ですが、今16bitアドレスの上位4bitを見ているところを上位3bitに減らして (0xE000〜0xEFFFには命令が置かれないはずなので)、最下位bitをM1に割りつければ行けるはず。

A12を見ていたプローブをM1に

というわけで、観測してみたところ、見事にヒットしました (波形写真は撮り忘れw)。本来 0xCD 0x81 0x0Eという並びの命令は、SRAM上に 0x67 0x03 0x2c という並びで置かれているようです。見た感じ、ROM上のオペコードやデータに対するエンコードとは違うようですが、どうやってるんだろう。

2024年 4月1日 (月)

基板

スーパーパンを使ったKABUKIのコンフィギュレーションの末尾2Byteの調査を継続しています。スーパーパンは、EEPROMの中にちょっとだけ命令が入っていて、起動直後にこれをSRAM上の特定領域 (0xFD10) に読み出した後、起動処理の中でそこを一旦経由するという変な動きをします。コンフィギュレーションの末尾が 0x70 0x00 で起動して、0xF0 0x00 で起動しないのは、おそらく前者と後者でここの動きが変わってしまうからだと推測されます。後者の場合、画面に「RAM OK」と出たところでハングアップしたような状態になるんですが、MAMEで確認すると、ちょうどそのタイミングでSRAM上の命令にジャンプしているので間違いないでしょう。

というわけで、ここをロジアナで観測してみることに。ひとまず 0xF0 0x00 のときは生のデータがSRAMに書き出されているはずなので、EEPROMからコピーした命令をSRAMから読み出して実行するところを引っ掛ければよいのでは、と考えてSRAMから 0xCDを読み出すところを探してみました。アドレスを全ビット見られれば簡単なんですが、ロジアナのチャネルが少ないので、データ 8bitとアドレスの上位4bitだけを見ていますw

で、無事 0xCDを読んでいるところは見つけられたんですが、その後に 0x81 を読まずに SRAMに 0xFD 0x11を書いているようです。

0xCDを読んだ後に0xFDを書いている

0xFD 0x11 は0xFD10 の次なので、次に実行する命令のアドレスということになりそうです。これはつまり、0xCDをオペコードとして読み出して実行しようとしたところで、KABUKIが独自に持ってるメモリ保護の仕組みに引っかかってトラップか何かになったか、RST命令としてデコードされたとかで、割り込み処理ルーチンに飛ぼうとしてスタックポインタにアドレスを積もうとしている状況みたいな? いずれにしても、やはりこの EEPROMからコピーしてきた0xFD10の命令を実行するところで止まっているのは間違いないようです。

2024年4月30日から2024年4月1日までの日記を表示中

中の人情報

名前:
nosuke (のすけ)
メール:
sasugaanijaのgmail.com
「の」は「@」みたいな
関連リンク:

カレンダー

2024年4月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        

<<先月分

翌月分>>

最新の10件のエントリ

最近の10件のコメント

過去ログ