【65816:SNES】アセンブリ【6502:NES】
195 :
名前は開発中のものです。:2009/12/28(月) 01:40:35 ID:bQcXet2J
6502 に乗算・除算命令が無いのが不便です。
加算・減算命令とループを使って作ればいいのかな・・・
>>195 定数倍の時は、2のN乗の加算の形に分解して、シフトと加算で計算するのが普通かな。
197 :
名前は開発中のものです。:2009/12/28(月) 11:01:05 ID:bQcXet2J
ありがとうございます!
(知能低の俺には理解できん・・・)
>>197 2倍
元の数を左シフトする。
3倍
2倍した物に元の数を足す。
4倍
元の数を2回左シフトする。
5倍
4倍した物に元の数を足す。
・
・
・
オーバーフローするw
199 :
名前は開発中のものです。:2010/01/11(月) 11:01:01 ID:vr3CJdIR
>>198 今頃になって、やっと分かりました。
時間あいてしまってすいません
スーファミだと乗除算機能追加されてるんだよね。
2クロックと4クロックだっけ?
201 :
名前は開発中のものです。:2010/02/07(日) 01:45:21 ID:dPg09lrX
202 :
名前は開発中のものです。:2010/02/07(日) 16:35:41 ID:p3Qr7jDT
え?
203 :
名前は開発中のものです。:2010/02/07(日) 18:34:34 ID:dPg09lrX
>>202 SNES研究室より
実際積算や除算はサポートされてない
と記載されているので、たぶんサポートされてないと思います。
>>203 検索してみ?
スーファミには乗除算器ちゃんとあるぞ。
あとそこの研究所って所資料足りてない。
205 :
名前は開発中のものです。:2010/02/07(日) 23:20:12 ID:dPg09lrX
>>204 検索したら出てきました。
余計な口突っ込んですいません。
206 :
名前は開発中のものです。:2010/02/09(火) 17:33:34 ID:hmI1E4PD
>>206 adc → Add with Carry
キャリーフラグの内容も一緒に加算する。
これによって複バイト分の加算をするときの繰り上がりを簡易にできる。
>>207 なるほど
理解しました
ありがとうございます
また分からないところがあるんだが
ここでちょくちょく質問していっていいですかね?
ギコ猫の第14章の
http://gikofami.fc2web.com/nes/nes014.html 一番下のソースのgetPadBitの
ora <KeyBuffer ; キーバッファにora
これなんだがOR演算ってのはだいたい分かったけど
ここで使う理由がイマイチわかりません
実際ここの命令消してもちゃんと動いてるみたいだし。
ちゃんと動かんと思うのだが。
そのoraを省くと、直前で$4016を読み出してand #1した内容しか、KeyBufferに書き込まれなくなるだろ。
ループ回って、最後にstaでKeyBufferに書き込まれるのは右ボタンの状態だから、右にしか動かなくなると思うが。
>>210 その通りでした、ごめんなさい
OR演算をちゃんと理解してなかったかも
OR演算によって1byteの情報を1bitだけにして
1回目はbit0に書き込んで
2回目はbit1に書き込んでるってことですかね?
ヒント1:2進数
ヒント2:二進数で1000を0100にすると十進数では・・・?
>>213 8が4になる
半分になる
なるほど
分かりました、ありがとうございます
マッパとbank orgが解りません
現在$c000がミラーになっている状態です。bank1が$a000と$e000
nesasmです。
どう書けばいいのでしょう?
マッパ絡むならファミコンスレで聞いたほうがいいと思うんだ
ありがとうございます。
視野が狭くなっていました。(m_m)
218 :
名前は開発中のものです。:2010/10/12(火) 22:08:22 ID:qsZioCiZ
RP2A03の未定義命令を解説しているサイトってありますか?
221 :
名前は開発中のものです。:2012/03/05(月) 03:28:21.22 ID:bNrxt/wR
PSPでNesterJ最新を使っていますが
save機能が機能しません。
statesaveするとちゃんとリストに日時と共にsaveされるんですが
そのファイルをstateloadしてゲーム画面に戻っても
loadが反映されてくれないのです。
そういう状況になって解決した方、いらっしゃいますか?
ちなみに、関係あるかわかりませんが
一度statesaveした場所にはdeleteしてsaveしなおさない限り上書き出来ません。
(save→yesしてもsave日時が変わらないのでsave出来て無い?)
ゲームは問題無く動きますが
NesterJのsave機能を利用するための
データかなんかの入れ忘れとか考えられますか?
マルチな上に明らかにスレ違い。
逆汗って機械語を読める形に変換してるだけだよね?
書換えて機械語に戻すってことは出来ないの?
説明聞いた感じだと逆汗して解読しながら機械語書換えてるみたいなんだけど・・・
>>223 逆アセンブラ=逆汗知ってて
アセンブラ知らないの?
実際は逆アセンブラがテキストを出力したとして、変数や関数の役目は書いてないわけで、、、それを解析して解読するのが解析神。
試しにWindowsの.exeを逆アセンブルしてごらん。超意味不明だから。
プログラムの規模がある程度大きいと、
逆汗したものを、再アセンブルするのは困難を伴う場合が多い。
>>224 逆汗の事ばっかり考えてて頭が固まってたようだ・・・
可逆変換なんだから戻せないわけが無かったね、ありがとう
ものによっては可逆ってわけでもない
データをコードとして扱ってしまい意味が変わる場合もあるし
普通にコード自体も意味が変わってしまう場合もある
逆汗する場合はバイナリが16進で併記されるツールがいいよ。
8ビット世代だとアセンブラで書いてるソフトが多く、感心するほどキレイなやつもあるんだけどね。
データ部はだいたいバイナリに法則性があるから、慣れれば見分けがつく。
hos
229 :
名前は開発中のものです。:2012/09/20(木) 17:54:15.47 ID:4k8cLmU9
ふむ
普通に逆汗してもメモリジャンプの位置とかステージデータとかキャラデータとか
すべて目を通して手直ししないといけないからSMWを高級言語にするのは不可能
一番の問題はデータが散在しててアンセブラがそこも逆汗するからバグる
素人にデータとプログラム部分を見分けられるとはとても思えない
6502なんて命令少ないし、意味のあるプログラムか否かなんて結構機械的に判断できそうな感じだけどな。
エミュによってはcodeとdataのlogをとれるやつあるけどな
233 :
名前は開発中のものです。:2012/09/21(金) 16:39:47.95 ID:OAdH7gAE BE:1991223348-BRZ(10002)
6502よりゲームボーイ(Z80C)のがわりかしわかりやすかった
235 :
名前は開発中のものです。:2013/03/21(木) 02:42:37.61 ID:yPAEg+sf
人がいなそうだけど聞いてみる。
22 16 2A C0 JSL $002A16 -> $002A16 //Jump Subroutine Long
アセンブラ読めないけど、初めて改造に手を出そうと思ってるんですが
なんで $C02A16 じゃなくて $002A16 なんでしょうか? dist65816です。
あと、65c816のニーモニックの解説でオススメサイトあったら教えてください。
素人だけどC0の部分がジャンプ命令なんじゃないかな
>>235 SNESだとしたら、
HiROMだと、00の部分がバンクなので、
C0がミラーバンクになるはず。
LoROMだと、ちょっと違うけど。
>>235 わりとガチな事言うけど読めるんならSNESのソースをお勧めする。
解説サイトで分からない事が出てきた場合にとても分かりやすい。
>>236 22 がジャンプ命令って先入観があったけど C0がなにかの引数(フラグ)的な役割の可能性ありますね。
なるほど。ありがとう。
>>237 >SNESだとしたら
スーファミのって意味ですよね? スーファミのDQ6です。
HiROMっぽいですね。
さらっと見てみましたがミラーバンクがよくわからなかった
(0x80~ が 0x00 のミラーバンクと読める →とすると 0xc0 は 0x00 とはならないのでは?) ので
もう一度ググってみます。ありがとう。
>>238 >SNESのソース
(スーファミのソースって何??)と悩みましたが
SNESというエミュのソースプログラムが公開されてるのでそれを参考に ってことですね。
探してみます。ありがとう。
バンクのミラーは、
80~だけでなく、C0~もある。
持っている資料ではそうなっている。
>>238 それって"ない"という回答であるという認識でいいのかなぁ?
まあ自分もいいサイト知らない。
Westan Design(仕様開発元)かSHARP(製造元)がいいのかもね(調べてないけど)
242 :
名前は開発中のものです。:2014/02/15(土) 01:43:33.73 ID:gYTXJhyH
cc65 6502用C言語コンパイラ
μPD612x
μPD613x
には加算命令がないのです、乗算命令とかアホなこと言うなボケ。
さらにレジスタだってAレジスタ1つだけだ。
メモリアドレスだって16個だけだ。バカ言うな。
スタックなんて4階層だけだ。