TOP > 逆アセンブラ
1.ゲーム用 逆アセンブラ | 2.更新情報 | 3.基本使用 | 4.「設定」部 | 5.「逆アセンブル」部 |
6.右クリック | 7.ROMアドレス検索-A | 8.ROMアドレス検索-B | 9.メニュー | 10.Z80 ニーモニック表示について |
1.ゲーム用 逆アセンブラ |
ソフト名 | 使用方法 | 表示方法 | 対応ファイル(拡張子) |
NES 6502逆アセンブラ | - | リニアスイープ | ファミコンのROM (*.nes) |
FDS 6502逆アセンブラ | 使用方法 | リニアスイープ |
ディスクカードのROM |
SNES 65816逆アセンブラ | 使用方法 | リニアスイープ | スーファミのROM (*.smc/*.sfc) |
SNES SPC700逆アセンブラ | - | リニアスイープ | スーファミのサウンドファイル (*.spc) ファイルサイズ$10180以上[SPCヘッダがあり65920bytes以上のファイル] |
PCE 6280逆アセンブラ | - | リニアスイープ | PCエンジンのROM (*.pce) |
GB Z80C逆アセンブラ | - | リニアスイープ | ゲームボーイのROM (*.gb/*.gbc) |
SMS Z80逆アセンブラ | - | リニアスイープ | SC-3000/SG-1000/マーク3/ゲームギアのROM (*sc/*.sg/*.sms/*.gg) |
MSX Z80逆アセンブラ | - | リニアスイープ | MSXのROM (*.rom) |
TOPページよりダウンロードしてください。要「.NET Framework 4.0」ランタイム
2.更新情報 |
3.基本使用 |
○ROMイメージファイルをフォームにドラッグ&ドロップします。(メニューの「ファイル」からも開くことができます。またアイコンにドラッグ&ドロップすることも可能です。) ・FDS 6502逆アセンブラの場合 自動的にコールドスタート逆アセをします。 @ROMイメージのアドレスを指定します。 ・FDS 6502逆アセンブラの場合 ブロック名を指定します。(PRG/RAMのみ) ・その他 ROMイメージのアドレスを指定します。 xx:yyyyyy xx はバンクNo yyyyyy はROMイメージのアドレスとなります。 A逆アセンブルを開始します。 ・下部に逆アセの結果が表示されます。 |
4.「設定」部 |
NES |
|
FDS |
|
SNES |
SPC |
||
GB |
PCE |
||
SMS |
MSX |
A:バンクタイプ | バンクタイプを選択します。選択によりC・Dが変動します。 |
B:リスト選択 | チェックを入れるとそのリストが逆アセの対象となります。(1回目の読込時はチェックを外すことができません) |
C:メモリマップ | NES/MSXはバンクタイプにより変動します。GB/SMS/PCEは固定です。 |
D:ROM | 逆アセンブルするROMイメージの開始アドレスを指定します。XX:YYYY XXはバンクNoでYYYYはROMのアドレスとなります。 |
E:再コールドスタータ | 指定のロードNoを再度コールドスタートします。 |
F:逆アセンブル開始 | 逆アセンブルを開始します。FDSはPRGのみとなります。 |
G:検索 | 「ROMアドレス検索」を表示/非表示にします。[8.「ROMアドレス検索」部]参照 |
H:メモリマップ開始アドレス | メモリマップの開始アドレスを選択します。 |
I:A X Y レジスタ | A X Y レジスタの表示を AUTO(自動的に16bit,8bit表示)/2byte(16bit) /1byte(8bit) にします。 |
J:メモリマップ速度 | 「SLOW」 または「FAST」の切り替えをします。注意:切り替えをすると今までの逆アセがクリアされます。 |
K:008000 | 00:8000-00:FFFFのメモリマップを逆アセ表示します。 |
5.「逆アセンブル」部 |
■L :タブ
(メモリマップ) ●各タブに メモリマップが自動的に割り当てられています。 ■M:アドレスメモリー ■N:アドレスブックマーク ■O:アドレスジャンプ ■P:逆アセンブルリスト ■Q:下記情報を表示します。 |
6.「逆アセンブルリスト」 右クリック |
■JSR元を検索/JMP元を検索/分岐元を検索 |
|
|
■JSR元を検索(CALL元)/■JMP元を検索(JP元)/■分岐元を検索(JR元) 選択したアドレスに対するジャンプ元/分岐元を検索することができます。 ・±0は、クリックした「アドレス」 検索結果は「ROMアドレス検索結果リスト(Z)」に表示されます。 |
■リスト内検索 |
|
■リスト内検索 |
■再逆アセンブル |
■再逆アセンブル 選択したアドレスから任意のアドレスまで(100行)、再度逆アセンブルします。 データからプログラムに切り替わるときに、読み間違いがあることがあります。 またSNES65816の場合、AXYレジスタの8/16bitにより、読み間違いがあることがあります。 このようなときは、再逆アセンブルして読み直すと正しい結果が得られます。 右上画像は、C000 がデータです。 しかし ASL $78D8,X として処理されています。 開始アドレスを「 +1 [C001〜] 」に指定して 終了アドレスは、C003は正しいので、C003までの2行 を再逆アセンブルします。 そうすると正しい結果が得られます。 |
■アドレスをメモリー |
|
■[M1]アドレスをメモリー/■[M2]アドレスをメモリー ■[M1/M2]を切り替える ■アドレス ブックマーク |
■挿入/編集/削除 |
|
■挿入/編集 |
■コピー(クリップボード) |
|
■選択行コピー |
■ニーモニック詳細 |
|
■ニーモニック詳細 |
■カラーチェック |
|
■カラーチェック 青/赤/黄 |
7.「ROMアドレス検索」部 - A |
ROMアドレス検索画面が表示になります。 ROMアドレス検索画面が非表示になります。 | ・検索結果はROMイメージのアドレスとなりますのでご注意下さい。 ・NESの場合はPRG領域の検索となります。 ■R:I/O
8「ROMアドレス検索」部 - B参照 ■U:JSR/JMP
1000単位 ■V:オペコード・オペランド ■X:検索を開始します。 |
R:I/Oポート アドレス検索 | |||||
NES | PCE | GB | SG/SMS/GG | MSX | SNES/SPC |
[$2000-2002]
PPU [$2003-2004] SPR [$2005] SCROLL [$4000-4003] SND-CH1 [$4004-4007] SND-CH2 [$4008-400B] SND-CH3 [$400C-400F] SND-CH4 [$4010-4013] SND-PCM [$4014] SPR-RAM [$4015] SND-CH [$4016-4017] JOYPAD [$4017] F-IRQ |
[$0000]
VDC-REGIST [$0001] VDC-STATUS [$0002] VDC-DATA-L [$0003] VDC-DATA-M [$0400] VCE-RESET [$0402] VCE-P-OFFL [$0403] VCE-P-OFFM [$0404] VCE-P-16-L [$0405] VCE-P-16-M [$0800] PSG-CHANNE [$0801] PSG-VOLUME [$0802] PSG-FRE-L [$0803] PSG-FRE-H [$0804] PSG-ON [$0805] PSG-BALANC [$0806] PSG-WAVE [$0807] PSG-NOISE [$0808] PSG-LFO-FR [$0809] PSG-LFO-CN [$0C00] TMR-RELOAD [$0C01] TMR-CONTRO [$1000] CONTROLPAD [$1402] IRQ-MASK [$1403] IRQ-S/TIRQ |
[$FF00] P1 [$FF01] SB [$FF02] SC [$FF04] DIV [$FF05] TIMA [$FF06] TMA [$FF07] TAC [$FF0F] IF [$FF10-14] SND1 [$FF16-19] SND2 [$FF1A-1E] SND3 [$FF20-23] SND4 [$FF24] SND-VOL [$FF25] SND-CNT [$FF26] SND-ON/OFF [$FF30-3F] WaveRAM [$FF40-41] LCDC/STAT [$FF42-43] SCY/SCX [$FF44] LY [$FF45] LYC [$FF46] DMA [$FF47] BGP [$FF48-49] BGPO/OBP1 [$FF4A-4B ]WY/WX [$FF4D] KEY1 [$FF4F] VBK [$FF51-55] HDMA [$FF56] RP [$FF58-59] BCP [$FF6A-6B] OCP [$FF70] SVBK [$FFFF] IE |
[$00] JOY/COUNTLY(GG) [$3E] ? (MASTER) [$3F] COUNTLY [$7E] V-COUNTER [$7F] H-COUNTER [$7F] PSG [$BE] VDP-DATA [$BF] VDP-CONTL [$DC] JOYPAD [$DD] JOYPAD/EX/CO [$DC-DF] KEYBOAD [$F0-F2] FM-UNIT |
BIOS [$000C] RDSLT | [$0189] PCMREC I/O Port [7C-7D]MSX-MUSIC (FM) [80-87]RS232 [88-8B]VDP [90-91]ULA5RA087 [98-9B]99XX VRAM/VPD [A0-A2]PSG [A8-AB]PPI [B0-B3]SONY-RAMPACK [B4-B5]RP-5C01-RTC [B8-BB]SANYO-L-PEN [BC-BF]VHD-CONTROL [C0-C1]MSX-AUDIO [C8-CF]MSX-INTERF [D0-D7]DISK-CONTROL [D8-DB]Kanji ROM [E5-E7]MSX-ENGINE [F5]SYSTEM CONT [F6]COLOR BUS [F7]AUDIO/VIDEO [FC-FF]RAM BANK |
SNES I/O 2000-4FFF SPC I/O F0-FF |
S:バンク切り替え アドレス検索 | |||||
NES | PCE | GB | SG/SMS/GG | MSX | SNES/SPC |
マッパー別に対応しています。 対応マッパー 1,2,3,4,5,7,9,10,16,18,19 21,22,23,24,25,26 32,33,34,65,66,67,68,69 70,72,73,75,76,77,78 80,82,85,86,87,88,89 92,93,94,95,96,97 101,118,180,184,185,188 マッパー 2,3の場合、 改造ROM、自作ROMには対応していません。 |
MPR0 $0000-$1FFF R/W MPR1 $2000-$3FFF R/W MPR2 $4000-$5FFF R/W MPR3 $6000-$7FFF R/W MPR4 $8000-$9FFF R/W MPR5 $A000-$BFFF R/W MPR6 $C000-$DFFF R/W MPR7 $E000-$FFFF R/W |
$0000-$3FFF Write $4000-$7FFF Write $8000-$BFFF RAM-Write |
$0000-$3FFF R/W $4000-$7FFF R/W $8000-$BFFF R/W |
ASCII 8K ASCII 16K KONAMI 8K KONAMI SCC 8K OTHER
|
なし |
9.メニュー |
■ファイル → 保存 |
|
■保存 逆アセンブルした結果を出力します。 NES ・テキスト形式で出力 ・アセンブル入力形式をTXT形式で出力 ・BIN形式出力 ・NSF形式出力(簡易NSFヘッダ) FDS ・テキスト形式で出力 ・プロック04をbin形式で出力 SNES ・テキスト形式で出力 SPC ・テキスト形式で出力 PCE ・テキスト形式で出力 GB ・テキスト形式で出力 ・BIN形式出力 ・GBS形式出力(簡易GBSヘッダ) SMS/MSX ・テキスト形式で出力 ・BIN形式出力 ・KSS形式出力(簡易KSSヘッダ) |
■オプション → 参考資料 |
|
■参考資料 |
■オプション → 論理演算 |
| |
■論理演算 論理演算/シフト/ローテートの計算と同時にフラグの計算もします。 --- 6502/6280/65816/SPC700 --- AND ORA EOR BIT ASL LSR ROL ROR ADC SBC CMP(CPX/CPY) --- Z80/Z80C --- AND OR XOR RLCA RRCA RLC RRC RL RR SLA SRL SRA RLD RRD ADC SBC ADD SUB CP |
■オプション → メモリーマップ推測 |
| |
■メモリマップ推測/解析 |
■オプション → 読込み設定 |
| |
■読込み設定 |
■オプション → デバッグ |
■デバッグ 「NES6502」と「FDS6502」のみの対応です。 ============= 手動入力解析 ============= ■メモリ書込み @M1:アドレス入力 AM4:命令選択 BM2:データ入力 CM3:「転送」ボタンを押す ※命令によってはM2の入力はありません。 ■メモリ読込み @M1:アドレス入力 AM4:命令選択 BM3:「転送」ボタンを押す ■A/X/Yレジスタ入力 ・即値の場合 @A1に直接入力します。 ・即値以外の場合 @A2:命令選択 AA3:「INPUT」ボタンを押します ■スタックポインター ・「A/P PUSH」 と 「PULL」の場合 @S1:命令選択 AS2:「* PUSH/PULL」ボタンを押します ・「JSR/BRK/NMI/IRQ PUSH」の場合 @逆アセリストのプッシュする一行を選択しておきます。 AS1:命令選択 BS2:「* PUSH」ボタンを押します ■ステータスレジスタ 自動で表示します。 修正する場合は、Pに入力するか、各フラグの0か1を選択してください。 ============== ステップ解析 ============== @逆アセリストのスタートするアドレスを選択しておきます。 AD1:「デバッグ開始」ボタンを押します。また、D2の選択からリセットスタート($FFFC)をすることができます。 BD8:「ステップ」ボタンを押します。D7はステップする回数です。1-100の任意の数値を入力してください。 ・下部にログを表示します。 ・PRGバンク切り替えにも対応しています。 D6:スキップ このソフトはエミュレーションではないため、$2002等のステータス状態を読み取ることができません。そのため、永遠にループから抜けることができないので、スキップするか、手動でメモリを書き変えてください。 D4:割込 D5からNMI/IRQを選択して割込みを行います。 D3:デバッグ終了 ステップ入力のデバッグを終了します。 |
■オプション → 大文字/小文字 |
■大文字/小文字 |
10.ニーモニック表示について |
言語 | 標準表記 | 当表記 | |
Z80 | LD A,80 LD HL,4123 |
→ | LD A,#$80 LD HL,#$4123 |
Z80 | LD A,(C895) | → | LD A,($C895) |
Z80 符号付8BIT |
LD B,(IX+10) LD B,(IX+F0) |
→ | LD B,(IX+10) LD B,(IX-70) |
Z80C[GB] 符号付8BIT |
E8:ADD SP,10 E8:ADD SP,F0 F8:LDHL HL,SP+10 F8:LDHL HL,SP+F0 |
→ | ADD SP,+10 ADD SP,-70 LDHL HL,SP+10 LDHL HL,SP-70 |
65816 | *** $7E1234 *** $7E1234,x |
→ | *** $7E:1234 *** $7E:1234,x |
65816 | PEA $1234 | → | PEA #$1234 |
数値(即値)の場合は、先頭に#$、アドレスの場合は、先頭に$としています。
ゲーム用逆アセンブラ
Copyright (C) 2010 by BAB