=============================================================================== .SMC File Checker & Format Type Converter ver.0.n by M.Kajihara(KAJA). =============================================================================== ○ 機能概要 ------------------------------------------------------------------------------- 1) .SMCファイルをチェックして、内部情報を表示します。 2) .SMCファイルに存在する2種類のフォーマットである、 [NORMAL] [INTERLEAVE] フォーマットを相互変換します。 また、ヘッダのない .SMC ファイルにはヘッダを自動で付加します。 =============================================================================== ○ 作成意図 ------------------------------------------------------------------------------- 現在のSnes9X(0.24)では、HiROM/LoROM、Normal/Interleaveの 判別ミスによって、正常でも場合によって動かないROMが存在するので、 Normal/Interleaveを変換する事によって、判別出来る確率を 上げようという趣旨です。 FORMATが何かを完全にこちらから指定出来れば良いのですが、 Snes9X/Windowsでは、HiROMかLoROMかの指示、 Snes9X/Macintoshでは、Interleaveの指示が出来ないようですので、 どうしても指定可能な範囲が制限されてしまっています。 他のエミュレータでも、NORMALタイプにしか対応していないものも 存在するようですので、ここでコンバータの需要が出て来る訳です。 また、エミュレータ用などで、ROMに対して各種パッチを当てる際にも、 フォーマットが2種類あったり、ヘッダがあったり無かったりすると、 パッチを当てるべきアドレスが変化してしまうため、混乱の元となります。 そこで、パッチを当てたいROMがどのFORMATになっているのかを自分で 把握した上、パッチがどのFORMATのものに対応しているのかがが解れば、 明快に作業が出来る事になります。 ------------------------------------------------------------------------------- <コラム> Snes9Xでは、特にHiROM/Interleaveタイプの、12M、20M、24Mなどの中途半端な サイズのもの、また、LoROM/Normalの32Mタイプを判別ミスして しまう事が多いようです。 前者はNormalに、後者はInterleaveに変換する事によって 動作させる事が出来ます。 例(前者)/ ブレインロード (12M/HiROM) スラップスティック (12M/HiROM) ブレスオブファイア2 (20M/HiROM) カオスシード (20M/HiROM) バウンティソード (24M/HiROM) フェーダ (24M/HiROM) ラストバイブル3 (24M/HiROM) など 例(後者)/ ときめきメモリアル (32M/LoROM) メタルマックスリターンズ(32M/LoROM) など =============================================================================== ○ 使用方法 ------------------------------------------------------------------------------- MS-DOS汎用です。DOS上(WinではDOS窓など)で実行できます。 ------------------------------------------------------------------------------- ● SMC.COMがあるディレクトリで、またはSMC.COMにPATHが通った状態で > SMC (リターン) とすると使用方法 (Usage) が表示されます。 (例) >> SMC >SMC File Checker & Format Type Converter ver.0.n > Copyright (C)1998/10/06 by M.Kajihara(KAJA). > >Usage : SMC [/option] Filename[.SMC] [Filename[.SMC]] >Option: /E More Exactly Check > /V More Vaguely Check > /S Calculate & Check ROM's CheckSUM > /LN Force Checker [LoROM/Normal] > /LI Force Checker [LoROM/Interleave] > /HN Force Checker [HiROM/Normal] > /HI Force Checker [HiROM/Interleave] > /BS Force Checker to [BS-Type] > /BN Force Checker to [Not BS-Type] > /CN Force Converter to [Normal] (default) > /CI Force Converter to [Interleave] > /CD Convert [GAMEDOCTOR-24M-Interleave] to [Interleave] > Add Header and Convert If 2nd Filename is written. ------------------------------------------------------------------------------- ● SMC の後ろに .SMCファイルのファイル名を指定すると、 そのROMの内部情報を表示します。 (例) >> SMC SLAPSTCK.SMC >SMC File Checker & Format Type Converter ver.0.n > Copyright (C)1998/10/06 by M.Kajihara(KAJA). > >Filename: SLAPSTCK.SMC >Filesize: 1573376 >Header : Exist >CartName: SLAP STICK 1 JPN >BankType: HiROM >Format : Normal >ROMSpeed: 3 >MEMInfo : ROM+SRAM >ROMSize : 16MBits >RAMSize : 64KBits >Country : Japan(NTSC) >MakerID : 180(Enix) >Version : 1.0 オプションとして /S を指定しますと、 >CheckSUM: OK (58299) の項目が追加表示されます。(計算には多少の時間がかかります) 各項目の意味については後述します。 ------------------------------------------------------------------------------- ● さらにその後ろにもう一つ 存在しない .SMC ファイル名を指定すると、 一つ目で指定した .SMC ファイルの内部情報を表示した後に、 [ Format NORMAL / Header:あり ] に変換を行います。 (例) >> SMC CLKTOWER.SMC CT.SMC >SMC File Checker & Format Type Converter ver.0.n > Copyright (C)1998/10/06 by M.Kajihara(KAJA). > >Filename: CLKTOWER.SMC >Filesize: 3145728 >Header : Nothing >CartName: CLOCK TOWER SFX >BankType: HiROM >Format : Interleave >ROMSpeed: 3 >MEMInfo : ROM+SRAM >ROMSize : 32MBits >RAMSize : 16KBits >Country : Japan(NTSC) >MakerID : 51,222(Human Entertainment) >Version : 1.0 > >Making Header. >Converting ................................................. Done. (CT.SMC という FORMAT:NORMAL / HEADER:あり のFILEが作成されます) 1つ目の.SMCファイル名の前に、オプションとして /CI を指定すると、 INTERLEAVE への変換になります。 (例) >> SMC /CI CT.SMC CTI.SMC もともとNORMALのものをNORMALに変換、または INTERLEAVEのものをINTERLEAVEに変換しようとした場合は、 単純にコピーを行います。(但し、ヘッダが無い場合は追加します) ※ 変換後のファイル名に既に存在するファイルを指定した場合は、 無条件にエラーとなります。 ※ 「Illegal Filesize to Convert」というエラーになる場合は、 Fileの末尾にゴミなどがついているか、改造されている可能性があって 本来のサイズとは異なっていて、コンバートできません。 ------------------------------------------------------------------------------- ● 指定するファイル名は、.SMC であれば拡張子を省略する事が出来ます。 (例) >>SMC ABC DEF (SMC ABC.SMC DEF.SMC と同等) また、Windows DOSプロンプトの時には、ロングファイルネームを 指定できます。 (例) >>SMC SPMARIOW SUPER_MARIO_WORLD この際、スペースを含むファイル名を指定したい場合は、 "〜" という具合に、" 記号で括ってください。 (例) >>SMC SPMARIOW "SUPER MARIO WORLD" =============================================================================== ○ サテラビュー型ROMデータについて ------------------------------------------------------------------------------- そのROMがBSであると認識すると、表示項目を一部変更します。 (例) smc -s drasle.smc >SMC File Checker & Format Type Converter ver.0.n > Copyright (C)1998/10/06 by M.Kajihara(KAJA). > >Filename: DRASLE.SMC >Filesize: 1048576 >Header : Nothing >CartName: ドラスレ英雄伝説 >BankType: LoROM >Format : Normal >ROMSpeed: 2 >MEMInfo : FullSize >ROMSize : 8MBits >Date : 5/14 >MakerID : 51,FFFF(Unknown) >Version : 1.1 >CheckSUM: OK (52536) 情報が確認できないデータ(RAMSize/Countryなど)については表示をせず、 BS固有である日付情報を表示します。 MEMInfoの項目にID値が表示される場合は、未知の特殊タイプです。 (例) >MEMInfo : FullSize+SoundLink (Unknown ID=128) 上の例の128という物があることは確認していますが、 それがどういうタイプなのかは現在不明です。 ※ 自動認識によって、 ・ 従来のROM(特に同人系など)をBSと認識してしまう場合は、/BN オプション ・ 通常ROMタイプと認識してしまう場合は /BS オプション ・ 認識に失敗(Failed to fix〜)する場合は /V オプション をそれぞれ付けてみてください。/Vと/BSは同時指定もできます。 また、/E オプションはさらにINFOブロックの厳密なチェックを行います。 /Eを付けて認識に失敗する場合は、INFOブロック改竄の可能性が高いと みることができます。 現在解っている自動認識に不都合が出るタイプは、 ・ CartNameが16バイト以上ある (/V で認識します) ・ 日付の月または日が 0 である (/E でのみ認識失敗します) の2種類です。どちらも改竄の可能性が高いと思われるものです。 その他に不都合が出るものがありましたら、ご一報ください。 特に、カート名も日付も正常に見えるのに、/Vか、/LN /BSあるいは/HN /BSで 認識するが/Eでは失敗する、などというものがありましたら 参考になります。認識した時のOPTIONとその表示を教えてください。 =============================================================================== ○ オプションの解説 ------------------------------------------------------------------------------- オプションは SMC と 1つ目のファイル名の間に指定します。 ------------------------------------------------------------------------------- ● チェッカ関連オプション ------------------------------------------------------------------------------- /E More Exactly Check チェックをより厳密に行います。 チェックをしたら、Cartnameに訳の解らない名前が表示される場合は 付加してみて下さい。 ------------------------------------------------------------------------------- /V More Vaguely Check チェックをより曖昧に行います。 [ Failed to fix FORMAT Type ] と表示される場合にまず試してみて下さい。 ただし、BS自動認識も曖昧になりますので、これでBSと誤認してしまう場合は さらに /BN オプションを付けてください。 ------------------------------------------------------------------------------- /S Calculate & Check ROM's CheckSUM ROMのチェックサムを計算し、その正誤を表示します。 計算には多少時間がかかるため、デフォルトにはなっていません。 ------------------------------------------------------------------------------- /LN Force Checker [LoROM/Normal] /LI Force Checker [LoROM/Interleave] /HN Force Checker [HiROM/Normal] /HI Force Checker [HiROM/Interleave] /E , /V を指定してもうまく判別出来ない場合は、 この4つのオプションで最初からFORMATを指定してしまうことで、 そのFORMATだと決め打って情報を表示する事ができます。 これでもうまく判別出来ない場合は、おそらくなんらかの形で 改造されたROMです。チェックは出来ないものと諦めてください。 ------------------------------------------------------------------------------- /BS Force Checker to [BS-Type] /BN Force Checker to [Not BS-Type] BSでないものをBSと認識してしまう、あるいはその逆の場合に タイプを強制的に指定するオプションです。 ------------------------------------------------------------------------------- ● コンバータ関連オプション ------------------------------------------------------------------------------- /CN Force Converter to [Normal] (default) コンバート先のフォーマットを NORMAL にします。 デフォルトですので指定する必要はありません。 ------------------------------------------------------------------------------- /CI Force Converter to [Interleave] コンバート先のフォーマットを INTERLEAVE にします。 NORMAL で動かないROMを INTERLEAVE で試してみたい場合、 または NORMAL にコンバートしたものを元に戻したい場合に使用します。 ------------------------------------------------------------------------------- /CD Convert [GAMEDOCTOR-24M-Interleave] to [Interleave] コンバート元を「ゲームドクター製インターリーブ24Mタイプ」と 仮定して通常のインターリーブフォーマットに変換します。 ゲームドクター製インターリーブ24Mタイプは、通常のインターリーブとの 判別が出来ません。 インターリーブ/24Mの場合で、ノーマルに変換しても動作しない場合、 チェックサムをチェックし、エラーであれば、これを試してみてください。 (例) EMITVOL3.SMCをゲームドクター製インターリーブ24Mタイプと仮定して 通常のインターリーブフォーマット、TEMP.SMC にコンバートする。 >SMC /CD EMITVOL3 TEMP ※ この場合の「通常の」という意味合いは、他のサイズのものと同様の形式、 という意味です(SuperUFOがこの通常タイプを出力します)。 ただ、Snes9Xでは、24Mの場合でインターリーブオプションが設定されて いる場合、ゲームドクター製インターリーブ形式として実行するようです。 よって、ここでコンバートしたものは、そのままではSnes9Xで動作しません。 コンバートしたものをさらにNormalに変換する事ではじめて、インターリーブ オプションを設定しなくても動作する.SMCファイルにする事ができます。 ※ このコンバートは24Mタイプ専用です。 =============================================================================== ○ チェッカの項目の解説 ------------------------------------------------------------------------------- Filename: CLKTOWER.SMC チェックを行った.SMCファイル名です。 ------------------------------------------------------------------------------- Filesize: 3145728 チェックを行った.SMCファイルのサイズです。 ------------------------------------------------------------------------------- Header : Nothing ヘッダがあるか無いかを表示します。(Exist / Nothing) 無い場合は付加する事が可能です。 ------------------------------------------------------------------------------- CartName: CLOCK TOWER SFX カートリッジ名称です。 ------------------------------------------------------------------------------- BankType: HiROM バンクタイプ。LoROMとHiROMの2種類があります。 カセットによってどちらかが必ず決まっています。 また、48MROMの場合は、ここに (48M) と追加表示されます。 /LN , /LI , /HN , /HI オプションを使用した場合は 「(is not agree with ROM's data)」と追加表示される場合があります。 その場合はROM内情報と指定FORMATが矛盾しています。 ------------------------------------------------------------------------------- Format : Interleave フォーマットタイプ。NormalとInterleveの2種類です。 相互変換する事が可能です。 ごく希に、変換してもフォーマットタイプが変わらないものがあります。 ROM内に2ヶ所(以上)のインフォメーションブロックを持つデータですが、 その場合は /LN , /LI , /HN , /HI オプションを使って 逆のタイプを指示してみてください。 その結果でも問題ないようなら指示したその逆のタイプの可能性が高く、 問題があった場合は元の表示されたタイプであると判断します。 ------------------------------------------------------------------------------- ROMSpeed: 3 カセットに内蔵されているROMの速度です。 ------------------------------------------------------------------------------- MEMInfo : ROM+SRAM 何のメモリが載っているかを表示します。 また、DSPチップが入っていた場合にはここに表示されます。 BSの場合は、 MEMInfo : FullSize+SoundLink などと表示されます。各表示の意味は、以下のようになっています。 FullSize 書き換えに全エリアを使うタイプです。(4M/8M) PartSize 書き換えに一部エリアのみを使うタイプです。(2M/4M) SoundLink 音声連動タイプです。 ------------------------------------------------------------------------------- ROMSize : 32MBits ROMの容量、ですが、ここでは2のべき乗数しか表示されませんので、 上のように32MBitsと表示される場合 16MBitsより多く 32MBits以下と いう意味になっています。(実際にこのROMは24MBitです) 但し、BSの場合は、実際のサイズからMBit単位で推定して表示されます。 スーファミターボの場合は、 >ROMSize : 2+6 + 4MBits というように表示されます。基本(BASE CASSETE)が2MBitで、 間に6MBitsの空きがあり、カセットがこの場合4MBitsであることを示します。 ------------------------------------------------------------------------------- RAMSize : 16KBits RAM(殆どの場合SRAM)のサイズです。 但し、DSP1以外のFX系DSPチップが載っている場合は、ここの表示は 意味を持たない場合が多いようです。 これもROMSizeの項目で述べた事が当てはまります。 スーファミターボの場合は、 >RAMSize : 4Blocks というように表示されます。1Blockの容量は現在不明です。 ------------------------------------------------------------------------------- Country : Japan(NTSC) 国コードおよび、その国で使用されている表示形式です。 例えばアメリカで発売されたものは USA(NTSC)、 韓国で発売されたものは Korea(PAL) などとなります。 ------------------------------------------------------------------------------- MakerID : 51,222(Human Entertainment) メーカーIDとそのメーカー名です。 51の場合は拡張されたメーカーIDからのメーカー名を表示します。 ------------------------------------------------------------------------------- Version : 1.0 ROMのバージョンです。大概 1.0 となっているはずです。 ------------------------------------------------------------------------------- CheckSUM: OK (19827) /Sオプションを指定した場合にのみ表示されます。 ROM内のCHECKSUM値と、実際のCHECKSUMが合っているかどうかです。 OK または BAD と表示されます。 OKの場合はそのSUM値、 BADの場合は ROM内のSUM値、計算後のSUM値、その差がそれぞれ表示されます。 CheckSUM: BAD (ROM= 4886 / CALC= 4745(-141)) 但し、ROM内にSUMは2ヶ所に記録されていますが、 それらが既に整合性がない場合は、計算をせずに、片方の値を CheckSUM: BAD (ROM= 0??) というように ?? を付けて表示されます。(同人ソフトなどに多い) チェックサム計算法については、情報がみつからなかったので、 独自に解析した方法を使用しています。 正しい計算が可能だと思われるのは、以下のMBit容量のROMです。 ROMSize : 1MBit系 0.5/1M ROMSize : 2MBit系 1.5/2M ROMSize : 4MBit系 2.5/3/4M ROMSize : 8MBit系 5/6/8M ROMSize : 16MBit系 9/10/12/16M ROMSize : 32MBit系 17/18/20/24/32M (ROMSize: 64MBit系 33/34/36/38/40/48/64M = 未対応) 他の、例えば7/14/26/28/30M、などのROMについては存在自体が不明のため 確認できていません。ただ、「多分こうなんじゃないかなあ」という計算は 行っているので、もしそのようなROMをお持ちの方は、試してご報告ください。 インターリーブ24Mタイプについては、通常型(SuperUFO型)を想定して 計算しています。 ゲームドクター型の場合は、まず/CDオプションで通常型インターリーブに 変換してから計算を行って下さい。 48Mタイプについては、現在未対応です。 (計算法をご存知の方はお知らせ下さい) =============================================================================== ○ お約束 ------------------------------------------------------------------------------- このソフトウエアはフリーウエアです。 著作者(M.Kajihara)は著作権は保持しますが、使用する際に、 もしなんらかの損害が発生しても、それを賠償する責任はないものとします。 バグがあると報告を受けた場合には、修正に向け善処するつもりですが、 修正しなければならない義務はないものとします。 以上に同意出来ない場合は、使用する前にすべての内容を破棄して下さい。 転載は、アーカイブを変更しない限り自由に行って構いません。 ※! SMC.COM の現在のサイズは 9,388バイトです。 ※! これに適合しない場合はウイルス混入などの可能性がありますので、 ※! 直ちに使用をやめて削除して下さい。 =============================================================================== ○ 作者連絡先 ------------------------------------------------------------------------------- E-Mail: kajapon@z2.zzz.or.jp サポート掲示板: http://w3mb.kcom.ne.jp/~admin777/cgi-bin/kaja/minibbs.cgi HomePage: http://members.xoom.com/kajapon/ ICQ: 4796492 / Nickname: KAJA BBS: PMDBBS (24h,3ch,Big-MODEL) 03(3395)9600 / ID:KAJA =============================================================================== ○ 履歴 ------------------------------------------------------------------------------- ver.0.1 1997/11/22 とりあえず作る ver.0.2 1997/11/23 SRAM容量が256KBを越えている場合(512KB/1024KBタイプ)で /Vオプションを付けないと自動CHECKできなかった不具合をFIX ver.0.3 1997/11/25 チェック順番を変更、infoブロックが2つ以上あるROMに対するHIT率上昇 ver.0.4 1997/11/26 LongFileNameに対応(Windows DOSプロンプトで実行する場合のみ) /S オプションを追加。(チェックサム計算) オプション指定に - 記号も使用可に。 ver.0.5 1997/11/26 チェックサム計算法を改善。10M/20M等のROMのCHECKも可に。 ver.0.6 1997/11/30 MakerIDによるMaker表示を追加。 SMCヘッダ作成時の3バイト目の情報を追加。(SWCフォーマット準拠) LoROM/HiROMのチェック項目をちょっとだけ追加。 DISK fullエラーを検出するようにする。 SUMの値を表示するようにする。 DSP Chip搭載関係のチェックを追加。 ※ ↑まだ認識が甘いので、もし「FX Chip(Unknown ID= 数値)」の表示が 出た場合、そのカートリッジ名と数値を上記SMC作者に連絡して下さい。 ver.0.7 1997/12/05 CAPCOM Street Fighter ZERO2のFXチップ認識(チップ名情報下さい) Chicago以外のVer.7.0以上のDOS環境でFileErrorになる不具合修正(未確認) FileErrorの内容を表示するようにする CartNameが全部Spaceだった場合表示が異常になる不具合を修正 ver.0.8 1997/12/24 Merry X'mas! /Vオプションの曖昧加減をもう少し緩く修正 (海外イントロ系対策) /Sオプション指定時にコンバートがSizeErrorになる不具合修正 チェックサムエラー時に差を表示する ver.0.9 1997/12/29 /CDオプション追加 [GAMEDOCTOR-24M-Interleave] -> [Interleave] 不明だったメーカーID識別をいくつか追加 S-DD1チップ認識追加 ver.0.a 1998/02/09 BS-X/SETA/SA-1/?KSS?(パチスロ物語パル興業SP--情報求)チップ認識追加 ROMタイプチェック順番変更(Ys3用^^;) ver.0.b 1998/05/18 サテラビューBSタイプの認識、SUMCHECKを追加 ver.0.c 1998/05/20 BSタイプのMEMInfo表示強化 48M-ROM認識表示追加(SUMはまだ) ver.0.d 1998/05/20 BSタイプを48M表示する事があるbugをfix BSタイプの認識強化、/BS /BN オプションを追加 ver.0.e 1998/05/21(暫定版) BSタイプの日付表示対応、unknown表示追加 /BSオプションの扱いを少々変更 1998/05/24(公開版) unknown表示削除 ver.0.f 1998/06/02 BSタイプの4M/8M表示をPartsize/Fullsizeに変更 BSタイプのROMSizeをFilesizeから推定して表示するように変更 ver.0.g 1998/07/17 Maker表示情報を追加 ver.0.h 1998/07/29 スーファミターボのcartname,meminfo,romsize,ramsize表示を追加 ver.0.i 1998/08/05 BSの判定方法の修正(マーヴェラス対策) MakerID表示不備の修正 ver.0.j 1998/08/09 音楽ツクールのformat判別に失敗していたのを修正 ver.0.k 1998/08/24 Maker:Kodanshaを追加 ver.0.l 1998/09/04 ヘッダの3バイト目の生成ミスを修正 ver.0.m 1998/09/24 Maker表示を追加(いろいろ) ver.0.n 1998/10/06 Maker表示を追加(いろいろ) =============================================================================== -------- End of SMC.DOC -------- ===============================================================================