SegaAges2500 テトリスコレクションの抽出
- 1. PS2版 テトリスコレクションの抽出
- 1.1. 必要なもの
- 1.2. Bloxeed (System 16B, PS2 data file) 隠しタイトル
- 1.3. Bloxeed (Japan, FD1094 317-0139)
- 1.4. Bloxeed (World, C System) 隠しタイトル
- 1.5. Flash Point (set 2, Japan, FD1094 317-0127A)
- 1.6. Flashpoint (Mega Drive) 隠しタイトル
- 1.7. Tetris (Mega Drive)
- 1.8. Tetris (Japan, System E)
- 1.9. Tetris (set 2, Japan, System 16B, FD1094 317-0092) (CRC不一致・動作不良)
- 1.10. 〆
PS2版 テトリスコレクションの抽出
抽出は全て自己責任でお願いいたします。
記述ミスなどのまちがいがありましたら
お手数ですが、コメントにて指摘をお願いいたします。
アーケード版の動作には、セガのようかん(FD1094)の鍵が必要になる物があります
羊羹の鍵と復号化ROMのもろもろ関しては、前回の記事を参考にして下さい。
特に対策その3とリンク先をよく読むと
いろいろな事が分かるかと思います。
必要なもの
スクラップAさんの記事より
メタルスラッグコンプリート抽出用ツールである
MSC_extract_v2.zipをダウンロードしておきます。
解凍したのちBswap.exeとoddeven.txtとbcut.exeを任意の作業場所にコピーしましょう。
Bloxeed (System 16B, PS2 data file) 隠しタイトル
FinalBurnNeoのみセットが追加されているようです。
# blox16b.zip
bs16b.p00
bs16b.scr
bs16b.obj
bs16b.snd
鍵なども必要なくblox16b.zipとして圧縮すればOKです。
Bloxeed (Japan, FD1094 317-0139)
動作には鍵が必要になります。
#dummy_ff_64k.ps1
# 任意の名前
$filePath = "dummy_ff_64k.tmp"
# 任意の容量
$fileSize = 64kb
# FFで埋める
$fillByte = 0xFF
#書込
$fileStream = New-Object IO.FileStream($filePath, [IO.FileMode]::Create)
$byteArray = New-Object byte[] $fileSize
for ($i = 0; $i -lt $fileSize; $i++) {
$byteArray[$i] = $fillByte
}
$fileStream.Write($byteArray, 0, $byteArray.Length)
$fileStream.Close()
ダミーのFF埋め64kbファイルを用意します。
# bloxeed.zip
# bs18d.obj
BSwap.exe d B bs18d.obj oddeven.txt opr-12887.c11 opr-12891.a11
# bs18.snd
copy bs18.snd epr-12888.a4
# bs18d.p94
BSwap.exe d B bs18d.p94 oddeven.txt odd.tmp even.tmp
copy /b odd.tmp+dummy_ff_64k.tmp epr-12910.a5
copy /b even.tmp+dummy_ff_64k.tmp epr-12911.a6
# bs18.scr
# opr-12884.b1
# opr-12885.b2
# opr-12885.b3
# HSPスクリプトで抽出
# 317-0139.key
HSP3.1で動作確認済。
実行ファイル自動作成でbs18.exeを作ったら
bs18.scrのあるフォルダで実行します。
#packopt name "bs18"
notesel filedat
;//bg
noteload "bs18.scr" : filesize = strsize
sdim outbuf,filesize/4,3
repeat filesize/4
ofs1 = cnt*4 : ofs2 = cnt
tmp = 0 : repeat 4 : tmp = (tmp<<8)|peek(filedat,ofs1+cnt) : loop
dim bytebuf,3
repeat 8
tmp2 = tmp&($70000000>>(cnt*4)) : tmp2 = tmp2>>(28-cnt*4) ;特定位置の4bitを取り出す
tmp3 = $80>>cnt
if (tmp2&1)!0 : bytebuf.0 = bytebuf.0 | tmp3
if (tmp2&2)!0 : bytebuf.1 = bytebuf.1 | tmp3
if (tmp2&4)!0 : bytebuf.2 = bytebuf.2 | tmp3
loop
repeat 3 : poke outbuf.cnt,ofs2,bytebuf.cnt : loop
loop
bsave "opr-12884.b1", outbuf.0, filesize/4
bsave "opr-12885.b2", outbuf.1, filesize/4
bsave "opr-12885.b3", outbuf.2, filesize/4
end
後は鍵と一緒に圧縮すれば完了です。
Bloxeed (World, C System) 隠しタイトル
JACKさんのコメント(感謝!)を参考に
抽出ファイルをbloxeedc.zipとして圧縮すればOK
海外輸出とされたようで英語になっていますね。
Flash Point (set 2, Japan, FD1094 317-0127A)
動作には鍵が必要です。
#flashp.obj
BSwap.exe d B flashp.obj oddeven.txt opr-12597.b5 opr-12596.b1
#flashpd.p94
BSwap.exe d B flashpd.p94 oddeven.txt epr-12598b.a1 epr-12599b.a4
# flashp.snd
copy flashp.snd epr12592.a10
# flashp.scr
# HSP3.1 別スクリプトにて抽出
# opr-12953.a14
# opr-12954.a15
# opr-12955.a16
# 317-127a.key
HSP3.1で動作確認済。
実行ファイル自動作成でflashp.exeを作成し
flashp.scrがある場所で実行します。
#packopt name "flashp"
notesel filedat
;//bg
noteload "flashp.scr" : filesize = strsize
sdim outbuf,filesize/4,3
repeat filesize/4
ofs1 = cnt*4 : ofs2 = cnt
tmp = 0 : repeat 4 : tmp = (tmp<<8)|peek(filedat,ofs1+cnt) : loop
dim bytebuf,3
repeat 8
tmp2 = tmp&($70000000>>(cnt*4)) : tmp2 = tmp2>>(28-cnt*4) ;特定位置の4bitを取り出す
tmp3 = $80>>cnt
if (tmp2&1)!0 : bytebuf.0 = bytebuf.0 | tmp3
if (tmp2&2)!0 : bytebuf.1 = bytebuf.1 | tmp3
if (tmp2&4)!0 : bytebuf.2 = bytebuf.2 | tmp3
loop
repeat 3 : poke outbuf.cnt,ofs2,bytebuf.cnt : loop
loop
bsave "opr-12953.a14", outbuf.0, filesize/4
bsave "opr-12954.a15", outbuf.1, filesize/4
bsave "opr-12955.a16", outbuf.2, filesize/4
end
鍵と一緒に圧縮で完了です。
Flashpoint (Mega Drive) 隠しタイトル
sdgファイルをbinまたはmdに拡張子リネーム。
メガドライブ対応エミュレーターに読み込ませればOK
Tetris (Mega Drive)
tetris.sgdファイルをbinまたはmdに変更して
メガドライブ対応エミュレーターに読み込ませればOK
Tetris (Japan, System E)
JACKさんのコメントを参考に
tetrisse.zipとして抽出ファイルを圧縮すればOK
Tetris (set 2, Japan, System 16B, FD1094 317-0092) (CRC不一致・動作不良)
正規セットには鍵が必要になります。
確認したところmpr-12194.b1と12195.b5がCRCエラーとなりました
カンでXORかかってる気がします。情報求。
64kbFFダミーを用意します、前出のブロクシード記事を参考にして下さい。
# 初出時ROM名を盛大に間違えていたので修正。
# tetrisd.p94
# ODD/EVEN
BSwap.exe d B tetrisd.p94 oddeven.txt epr12192.rom epr12193.rom
copy /b epr12192.rom+dummy_ff_64k.tmp epr-12192.a5
copy /b epr12193.rom+dummy_ff_64k.tmp epr-12193.a7
# tet_dec.p00 & tet_prg.p00 CRCBAD
# ODD/EVEN
# FD1094復号済データが存在?
# おそらくbootleg_epr-12193.a7 と bootleg_epr-12192.a5 だが CRC不一致
copy /b tet_dec.p00+tet_prg.p00 tetrisrom.tmp
BSwap.exe d B tetrisrom.tmp oddeven.txt 01.bin 02.bin
# tetris.obj CRCBAD
# ODD/EVEN
# おそらくmpr-12194.b1 & mpr-12195.b5 だが CRC不一致
BSwap.exe d B tetris.obj oddeven.txt xx.bin yy.bin
# tetris.snd
copy tetris.snd epr-12168.a7
# tetris.scr
# epr-12165.b9
# epr-12166.b10
# epr-12167.b11
# HSP3.1で別記スクリプトを実行する事で生成可能
# 317-0092.key
以下はHSP3.1で動作確認。実行ファイル自動作成を行い、tetris.scrがある場所で実行。
#packopt name "tetris"
notesel filedat
;//bg
noteload "tetris.scr" : filesize = strsize
sdim outbuf,filesize/4,3
repeat filesize/4
ofs1 = cnt*4 : ofs2 = cnt
tmp = 0 : repeat 4 : tmp = (tmp<<8)|peek(filedat,ofs1+cnt) : loop
dim bytebuf,3
repeat 8
tmp2 = tmp&($70000000>>(cnt*4)) : tmp2 = tmp2>>(28-cnt*4) ;特定位置の4bitを取り出す
tmp3 = $80>>cnt
if (tmp2&1)!0 : bytebuf.0 = bytebuf.0 | tmp3
if (tmp2&2)!0 : bytebuf.1 = bytebuf.1 | tmp3
if (tmp2&4)!0 : bytebuf.2 = bytebuf.2 | tmp3
loop
repeat 3 : poke outbuf.cnt,ofs2,bytebuf.cnt : loop
loop
bsave "epr-12165.b9", outbuf.0, filesize/4
bsave "epr-12166.b10", outbuf.1, filesize/4
bsave "epr-12167.b11", outbuf.2, filesize/4
end
〆
コメントで解析をいただいたJACKさん
ありがとうございます、この場でお礼申し上げます。
テトリスだけガード堅いのは・・・そういうことでしょうか
幸いにもプレミア付いていないタイトルです
まぁそんな事を言ったら、以前はテトリスの基板も1000円とかでしたけど。
単純に解析多過ぎで、ボケ倒してる可能性もありますが。
一部の機種で必要となる、暗号化解除の鍵は
現在のところ抽出出来ていません。ようかん記事を読んでください。
ディスク内から抽出できる情報がありましたら
ぜひコメントいただければ幸いです。
PCSX2のメモリダンプしちゃえと言う話もありますが、手つかずです。
ディスカッション
コメント一覧
どうもです
すんばらしい解析結果に頭下がりますです
考えたら大昔の段階でも鍵必要タイトルはもしかして
たぶんアヤしい方法でやるしかなかったのかもって思いました
対策その3の話ってそれよりだいぶ後の話ですもんね
自分はソフトウェアからの吸い出しの話となるとMVSにはこだわるのですが
他のには全くこだわりはないんですよね
IREMのはアンダーカバーコップス日本版入ってるのをたまたま見つけてしまったので
やるしかねぇなというのとビーストバスターズは個人的に好きすぎるゲームなのでやりました
テトリスに至ってはゲームボーイ版が一番好きで確かソフトウェア的には3種類ほどあって
基板は5種類(どんどん廉価になっていく)あることまで確認したぐらいゲームボーイ版至上主義なのですw
で、肝心のSEGAのSYSTEM16版TETRISなんですが当時アヤシイ方法でも結局復号化済み海賊版しか
動作させられなかったような気もしてます
あと、吸い出しとは全く関係ないんですがほんの一部のセガテトリスマニアしか知らない話として
512/1の確率かなんかで回転しないテトリミノが落ちてくる(意図的?)らしいんですが
その辺もなにかいじられてるのかなとか勘ぐってしまします
意外にPS2のこれでしかセガテトリスは移植されてないのでなんとかきちんと吸い出せたら
マニアは大歓喜ですね
やりすぎるとほりい社長に怒られそうなので今更堂々と公開する人はなかなか
出てこない気がいます…
しげるさんコメントありがとうございます。
10年位前だと鍵とかは、今ほどうるさくなかったのかなぁと
今でも「修理に限れば」法律回りは許されるらしいんですけどね
対策その3は攻めた修理方法なので、日本では中々出せないでしょうねぇ
アンダーカバーコップスは日本語版あるのに
情報ないなぁ・・・って言う感じでやりましたが
しげるさんが公開されてた!ってオチが付いたんですけども。
思い入れのあるタイトルだと頑張りますよね~
GBテトリスは、音源ちがいの初期レア版があったりしますよね
最近Twitterで格安ゲットをみました、うらやましい!
ACテトリスが不完全でモヤモヤしていたのですが
なんかこれくらいで、ちょうど良かったのかなと思いつつありますw
怒られちゃうとさすがに不味いですからねえ。
>ディスク内から抽出できる情報がありましたら
>ぜひコメントいただければ幸いです。
ディスクではないけど、抽出ネタです
Steam「Teenage Mutant Ninja Turtles: The Cowabunga Collection」から抽出
https://github.com/farmerbb/RED-Project/issues/46
https://krsw.5ch.net/test/read.cgi/steam/1652279411/163
Steam「LOST JUDGMENT 裁かれざる記憶」から、セガマークIIIのゲームを抽出
https://github.com/farmerbb/RED-Project/issues/60
Steam「CHRONO CROSS: THE RADICAL DREAMERS EDITION」から、SFC「ラジカル・ドリーマーズ -盗めない宝石-」を抽出
https://krsw.5ch.net/test/read.cgi/steam/1652279411/146
jackさんコメントと情報ありがとうございました。
LOST JUDGMENTは値段がこなれたらいいかもですね!
本編にあまり興味がないのでミニゲームのみだとちょっと厳しい・・・
最近SEGAはこう言う本編外に入れるのが好きですよねえ。
亀忍者はピザ喰ってたなぁ・・・ってのと
二人プレイでサイ(武器)のキャラ奪い合いになってた思い出があります
コナミも結構投げるので様子見かなぁ。