2011年2月18日金曜日

プロテクト以外にブロックされた(笑

先日作ったネオジオポケットのフラッシュカートリッジ、無事にプロテクトを回避できて一件落着・・・と思ったのですが。

PICT5788

この方法だと、セーブ関連が全て無効になります(^-^;

ネオポケはFlashROMに直接セーブする(知らなかったw)為、デバイスを切り替えるとデバイスの書き込みプロセスが違うためにセーブできないってことだったのでした。

セーブ以外でもゲーム中に設定変更とか、何らかのFlashROMへの書き込み動作をした場合、正常にゲームに戻れるもの(カードファイター)もあればフリーズするもの(アルゼのパチスロ)もあります。

ベース(オリジナル)では当然問題なくセーブできるのですが、ゲーム中に/CEを切り替えると確定で電源が落ちるので、今回のデバイス切り替えでの対処方法は難しいかもしれません。

ま、とりあえずVii基板を使って動かせたのと、書き込みプロセス除けば全く問題なくゲームができるということで(^-^;

でまぁ、考えなくてもいいのにまた考えちゃって、完全に動作させる方法はあと2つある。

①オリジナルのFlashROMに何とか書き込んでみる。

ネオポケに使われているROMは市販のFlashROMと変わらないそうで、問題はセクタプロテクトが突破できるか?ということ。

セクタプロテクトはネオポケのみならず、中古物だと市販のFlashROMでも同じように掛けられてる場合があるんだけど、/RESETに12V入れてやると一時的に内容を書き換えられる、という機能が存在する。

これはFlavorさんが既に調査済みだけど、ま、やってみる価値はあるかな?

先回取った大花火のROMが残ってるので、それ使ってみようかね。

②PocketLinkerのカートリッジのクローンを作る。

PICT5793

私が所持しているFlashカートリッジに載ってるデバイスは全て型番などが消されてて全くわからない(笑

が、ここに載ってる写真から、FlashROMはSST39VF016-70-4C-EIと判明。

このデバイスのマニュファクチャーIDは0xBFなので、Toshiba製(0x98)とは違うから普通ではネオポケで認識されないはずだけど、右のCPLDでその辺を制御しているのでしょう。

残念ながらこのCPLDは上のリンク先でも不明だし、他にも見当たらなくて正確にはわからないんだけれども、テスターでピンアサインを調べた限りでは、ある程度的が絞れた。

んが、このメーカーのJTAGケーブル持ってないし知識も疎いので、この辺りはもう少し調べないといけない。

このCPLDのデータが抜けさえすれば、同じように作れるハズだ。

PocketLinkerの書き込み機にはカスタムチップ(GBX)が使われているので、データの書き込みはROMライタなりで書くことになるかな。

私は持ってるから使えるけど、汎用性を考え、あえて使わない方向で。

因みに、現在ではSST39VF016-70-4C-EIの入手は不可能に近い状態なのですが、幸いにも48pin仕様の姉妹品が入手可能だったので、とりあえず手配しておいた(w

とまぁ、そんなわけで・・・なんでネオポケにココまで真剣になってるんだろう?

う~ん、自分でもよくわからん(爆

直ぐには解決しないと思うけど、後はボチボチやります。

私がやる前に外国のプロジェクトのが先に公開されちゃったりするかもねw

推測だけど、多分外国方面のやり方は②だと思う。(←聞いてないから知らない

さて、違うことやるか。

14 件のコメント:

ネオポケユーザー1 さんのコメント...

どうもです。名前がネオポケファン1だったりユーザー1だったりしましたが同一人物です。

ネオポケのシステムコールではFLASHROMに書き込む命令もあるので、多分マスターアップの段階でセーブデータのエリアじゃない部分をプロテクトしてるんでしょうね。公式な開発用カートリッジ(あるのか?)だとバリバリ書けるんでしょうか(^^
PocketLinkerのカートリッジに搭載されているCPLDなんですが、自分のは見てないんですが、某所(http://2dlives.com/bunghole.jpg)で見た写真だとALTERAのEPM3032ALC44-10Tのようです。

ぽんRev さんのコメント...

ども~

ネオポケのプログラム方面は全くわからないですが・・・Flashに直接書き込める機能を使って誰か何とかしてくれないかな(笑

CPLDの件ありがとうございます(^-^)
違う記事のコメでRyanさんにも教えていただいて、おかげさまで型番がハッキリしましたw
メーカーまでは直ぐわかったんですけど(^-^;

とりあえず①もやってみたいし、環境が出来次第挑戦したいと思います!

Flavor さんのコメント...
このコメントは投稿者によって削除されました。
Flavor さんのコメント...

You got it working? I can't read, so I can only go by the pictures. Is this with a switch that changes the CE line to your chip?

Flavor さんのコメント...

I used Google Translate, today.

You have to be careful. That SST39VF016-70-4C-EI chip isn't 100% compatible with the original NGPC chips. It has 2 commands for erasing a block/sector, and they don't match what the NGPC expects. It's a bit of a problem. I'm surprised that the Bung carts didn't have more problems. I've never found info about the StarRam chips they used later, though.

Also, about the 12V thing to temporarily unprotect protected sectors, I think that doesn't work. It may work for some chips, but I believe they can all lock out the addr=0 sector of the chip. That's the important one, anyway.

If you use PocketSend software with your Bung hardware, set it all up and go into the "About" area of PocketSend. I think it will write a file called CartInfo.txt to your hard drive. It will give you a bit of info about the cartridge.

ぽんRev さんのコメント...

To Flavor

Thank you for advising me.Tries variously for myself. :)
With it,Save cannot be done in the method of switching /CE.Though it is possible to play the game.

Flavor さんのコメント...

The save-games would probably work if you had a flash chip that was compatible. They are hard to find now, though. I think that Am29LV116D is a good part number, but I don't know if you can buy it anywhere.

I figured out how to make a cart socket.
http://www.youtube.com/watch?v=vmscRTQuFYk

匿名 さんのコメント...

PocketLinkerのCPLDの内容を読み出すのはたぶん無理だと思いますが、要はFlashMemoryに対するコマンドシーケンスを監視してAutoselectコマンドが来たら偽のID(MAN/DEV)出力させれば良いんですよね。CPLD使えば出来ますね!

ぽんRev さんのコメント...

匿名さん

CPLDはJTAGで読めないんですかね?
結局他のことやって手つかずなんですが(ぉぃ)読めないなら止めとこう(^-^;
PocketLinkerのカートリッジも匿名さんが書かれた事と同じことやってるだけな気がするので・・・CPLDのプログラムは匿名さんにお任・・(爆
セーブの件ですが、私の憶測で間違ってるかもしれないけど、16/8bitデバイスで書き込みコマンドが違うからダメなのかなぁ~とも思っていたり。
8bitデバイスなら案外素直に書けるんではないかと思ってみたり~

匿名 さんのコメント...

あれ、フリーのJTAGツール駆使すれば読めますかね?
少なくともヒューズデータの内容読み取ってコピーを作った事ないもんで^^;
恐らくプロテクトヒューズも切られてると思うのでたぶん難しいと思いますよ。

> CPLDのプログラムは匿名さんにお任・・(爆

具体的なバスの詳細は知りませんが8bitバスモードのFlashMemoryにCPLD抱き合わせ(/OEだけCPLD経由)でいけるかな、ってここまで書けば誰か作っちゃいそうですね。
誰もやりそうもなければ回路考えてみます。^^;

ぽんRev さんのコメント...

匿名さん

JTAGは、私はEVERDRIVEでしか使ったことないので何とも(^-^;
でも普通に考えてプロテクト掛けられてますよね。

現在手元に16Mbitの8bit-busデバイスが届いてないので、それが届いたらセーブができるか試してみないと。
・・・配線変えなきゃいけないなぁ(^-^;

匿名 さんのコメント...

やはりFlashMemoryのブートセクターのプロテクトは使われているんですかね?
FlashMemoryの一般的なコマンド洗い出してるんですけど結構大変(検証環境整備するのも)^^;

ちょっと考えたんですけど(ネオポケ自作ソフトが作成できる前提で)RAM上で動くFlashMemory読み書きのツール(プロテクト解除も含む)作るってのはどうでしょう。
でもRAMの容量が少ないとスイッチ切り替えでコピーするのも非現実的かな、プロテクト解除だけでも意義がありますかね^^;
使われてる東芝のCPUは使ったことあるけどゲーム機の詳細をしりません、ってだれかに振る^^;

匿名 さんのコメント...

匿名です。
FlashMemoryの一般的なコマンド洗い出してますが結構大変(回路or検証環境整備含む)^^;

で思ったんですがやはり ぽんrevさんの考えている市販のゲームROMのプロテクトを解除してカートとして使う、ってこれが出来れば一番スマートですよね。
問題はカートのライター環境ですが。Dreamcastですかね、とりあえずプロテクト解除のコマンド送って通常のFlashMemoryとして使えれば一件落着でしょうか?

ぽんRev さんのコメント...

匿名さん

Bloggerのスパム対策で直ぐ反映されない場合がありますのでゴメンナサイ(^-^;

>RAM上で動くFlashMemory読み書きのツール(プロテクト解除も含む)作る
ん~・・・少なくとも私では無理決定ですねw

プロテクト解除方法は、ソフト的にやる場合、一般の解除が通用するかどうかですかね。
通るのであれば既にできてるはずなのでソフト的には難しいのかもしれません。
ハード的に/RESETも既に外国の方が試してダメっぽいですが・・・私はまだ未確認です(汗

データを焼く手段としてはドリキャスが使えなければ、ROMライタで小容量デバイスとして認識させて分割書き込みの方法も手かなぁ?
16Mbitまでとして、4分割で行けるのならTOP2005クラスでも十分使えますよね。
プロテクト解除できるのならカートリッジのまま書き込めるんですけども・・・