【65816:SNES】アセンブリ【6502:NES】

このエントリーをはてなブックマークに追加
195名前は開発中のものです。:2009/12/28(月) 01:40:35 ID:bQcXet2J
6502 に乗算・除算命令が無いのが不便です。
加算・減算命令とループを使って作ればいいのかな・・・
196名前は開発中のものです。:2009/12/28(月) 06:38:48 ID:HV7z6G82
>>195
定数倍の時は、2のN乗の加算の形に分解して、シフトと加算で計算するのが普通かな。
197名前は開発中のものです。:2009/12/28(月) 11:01:05 ID:bQcXet2J
ありがとうございます!
(知能低の俺には理解できん・・・)
198名前は開発中のものです。:2009/12/28(月) 11:31:04 ID:QQXUn7l2
>>197

2倍
元の数を左シフトする。

3倍
2倍した物に元の数を足す。

4倍
元の数を2回左シフトする。

5倍
4倍した物に元の数を足す。





オーバーフローするw
199名前は開発中のものです。:2010/01/11(月) 11:01:01 ID:vr3CJdIR
>>198
今頃になって、やっと分かりました。
時間あいてしまってすいません
200名前は開発中のものです。:2010/01/27(水) 00:23:11 ID:OuwBME7P
スーファミだと乗除算機能追加されてるんだよね。
2クロックと4クロックだっけ?
201名前は開発中のものです。:2010/02/07(日) 01:45:21 ID:dPg09lrX
>>200
サポートされてるんですか?
202名前は開発中のものです。:2010/02/07(日) 16:35:41 ID:p3Qr7jDT
え?
203名前は開発中のものです。:2010/02/07(日) 18:34:34 ID:dPg09lrX
>>202
SNES研究室より

 実際積算や除算はサポートされてない

と記載されているので、たぶんサポートされてないと思います。
204名前は開発中のものです。:2010/02/07(日) 21:49:05 ID:p3Qr7jDT
>>203
検索してみ?
スーファミには乗除算器ちゃんとあるぞ。
あとそこの研究所って所資料足りてない。
205名前は開発中のものです。:2010/02/07(日) 23:20:12 ID:dPg09lrX
>>204
検索したら出てきました。
余計な口突っ込んですいません。
206名前は開発中のものです。:2010/02/09(火) 17:33:34 ID:hmI1E4PD
今6502をギコ猫で勉強してるんだけど
第11章のネームテーブル
http://gikofami.fc2web.com/nes/nes011.html
これの

adc #1

なんだが、
G−NESのデバッガ見てたら
1回目は2を足してて、2回目からはちゃんと1を足してるみたい
どうして1回目は2を足すんですか?




207名前は開発中のものです。:2010/02/09(火) 20:14:37 ID:3RJrolvd
>>206

adc → Add with Carry
キャリーフラグの内容も一緒に加算する。
これによって複バイト分の加算をするときの繰り上がりを簡易にできる。
208名前は開発中のものです。:2010/02/09(火) 21:38:36 ID:hmI1E4PD
>>207
なるほど
理解しました
ありがとうございます
209名前は開発中のものです。:2010/02/10(水) 06:00:21 ID:EXaN1Km+
また分からないところがあるんだが
ここでちょくちょく質問していっていいですかね?
ギコ猫の第14章の
http://gikofami.fc2web.com/nes/nes014.html
一番下のソースのgetPadBitの

ora <KeyBuffer ; キーバッファにora

これなんだがOR演算ってのはだいたい分かったけど
ここで使う理由がイマイチわかりません
実際ここの命令消してもちゃんと動いてるみたいだし。
210名前は開発中のものです。:2010/02/10(水) 14:39:07 ID:5TL6Al/8
ちゃんと動かんと思うのだが。
そのoraを省くと、直前で$4016を読み出してand #1した内容しか、KeyBufferに書き込まれなくなるだろ。
ループ回って、最後にstaでKeyBufferに書き込まれるのは右ボタンの状態だから、右にしか動かなくなると思うが。
211名前は開発中のものです。:2010/02/10(水) 15:32:09 ID:EXaN1Km+
>>210
その通りでした、ごめんなさい
OR演算をちゃんと理解してなかったかも

OR演算によって1byteの情報を1bitだけにして
1回目はbit0に書き込んで
2回目はbit1に書き込んでるってことですかね?
212名前は開発中のものです。:2010/02/11(木) 04:45:25 ID:yuPo8Fe0
前回のKeyBufferの右シフトは分かったのですが

ギコ猫第15章の
http://gikofami.fc2web.com/nes/nes015.html

lsr a ; Aレジスタ右シフト(半分にする)

これによってスクロールの速さが半分になるのは分かったのですが
どういう理屈でこうなってるのですか?

初心者すぎる質問で申し訳ないですが、お願いします
213名前は開発中のものです。:2010/02/11(木) 06:21:37 ID:+wEnMjxV
ヒント1:2進数
ヒント2:二進数で1000を0100にすると十進数では・・・?
214名前は開発中のものです。:2010/02/11(木) 07:24:50 ID:yuPo8Fe0
>>213
8が4になる
半分になる
なるほど
分かりました、ありがとうございます
215名前は開発中のものです。:2010/03/03(水) 21:10:13 ID:zZTtY1h1
マッパとbank orgが解りません

現在$c000がミラーになっている状態です。bank1が$a000と$e000
nesasmです。
どう書けばいいのでしょう?
216名前は開発中のものです。:2010/03/03(水) 22:57:47 ID:v0jzLIac
マッパ絡むならファミコンスレで聞いたほうがいいと思うんだ
217名前は開発中のものです。:2010/03/03(水) 23:43:05 ID:zZTtY1h1
ありがとうございます。
視野が狭くなっていました。(m_m)
218名前は開発中のものです。:2010/10/12(火) 22:08:22 ID:qsZioCiZ
http://codepad.org/qsGp7Diu
http://codepad.org/74XbFXAi
http://codepad.org/QiIb2vyD

昔PCエンジン用に作ったF-ZERO風ゲームのソース
219名前は開発中のものです。:2011/08/03(水) 08:24:23.23 ID:ZQrFVvJL
RP2A03の未定義命令を解説しているサイトってありますか?
220名前は開発中のものです。:2011/09/13(火) 17:27:38.93 ID:6DL8Eput
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機能を利用するための
データかなんかの入れ忘れとか考えられますか?
222名前は開発中のものです。:2012/03/05(月) 12:35:55.88 ID:ssuNvARh
マルチな上に明らかにスレ違い。
223名前は開発中のものです。:2012/03/10(土) 08:42:48.44 ID:YAppe1P3
逆汗って機械語を読める形に変換してるだけだよね?
書換えて機械語に戻すってことは出来ないの?

説明聞いた感じだと逆汗して解読しながら機械語書換えてるみたいなんだけど・・・
224名前は開発中のものです。:2012/03/13(火) 00:37:17.60 ID:MTJotzS2
>>223
逆アセンブラ=逆汗知ってて
アセンブラ知らないの?

実際は逆アセンブラがテキストを出力したとして、変数や関数の役目は書いてないわけで、、、それを解析して解読するのが解析神。
試しにWindowsの.exeを逆アセンブルしてごらん。超意味不明だから。

プログラムの規模がある程度大きいと、
逆汗したものを、再アセンブルするのは困難を伴う場合が多い。
225名前は開発中のものです。:2012/03/13(火) 00:50:41.31 ID:0neKniZs
>>224
逆汗の事ばっかり考えてて頭が固まってたようだ・・・
可逆変換なんだから戻せないわけが無かったね、ありがとう
226名前は開発中のものです。:2012/04/10(火) 13:23:56.58 ID:NddKazTP
ものによっては可逆ってわけでもない
データをコードとして扱ってしまい意味が変わる場合もあるし
普通にコード自体も意味が変わってしまう場合もある
227名前は開発中のものです。:2012/04/10(火) 17:06:22.62 ID:oLiChzL/
逆汗する場合はバイナリが16進で併記されるツールがいいよ。
8ビット世代だとアセンブラで書いてるソフトが多く、感心するほどキレイなやつもあるんだけどね。
データ部はだいたいバイナリに法則性があるから、慣れれば見分けがつく。
228名前は開発中のものです。:2012/09/20(木) 17:51:26.96 ID:cGMaKOFB
hos
229名前は開発中のものです。:2012/09/20(木) 17:54:15.47 ID:4k8cLmU9
ふむ
230名前は開発中のものです。:2012/09/20(木) 19:09:31.58 ID:f/XsJWvW
普通に逆汗してもメモリジャンプの位置とかステージデータとかキャラデータとか
すべて目を通して手直ししないといけないからSMWを高級言語にするのは不可能

一番の問題はデータが散在しててアンセブラがそこも逆汗するからバグる
素人にデータとプログラム部分を見分けられるとはとても思えない
231名前は開発中のものです。:2012/09/20(木) 20:30:06.88 ID:/2q+0d4/
6502なんて命令少ないし、意味のあるプログラムか否かなんて結構機械的に判断できそうな感じだけどな。
232名前は開発中のものです。:2012/09/20(木) 22:06:39.96 ID:U5jp9Vm/
エミュによってはcodeとdataのlogをとれるやつあるけどな
233名前は開発中のものです。:2012/09/21(金) 16:39:47.95 ID:OAdH7gAE BE:1991223348-BRZ(10002)

OS/A65 - a Multitasking/Multithreading Operating System for 6502 computers
(C) 1996-2006 André Fachat

ttp://www.6502.org/users/andre/icapos/osa65.html
234名前は開発中のものです。:2013/01/31(木) 00:28:22.70 ID:6eMaXvnA
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のニーモニックの解説でオススメサイトあったら教えてください。
236名前は開発中のものです。:2013/03/21(木) 11:11:30.63 ID:A78LSmbb
素人だけどC0の部分がジャンプ命令なんじゃないかな
237名前は開発中のものです。:2013/03/21(木) 13:02:01.12 ID:eR9L18ep
>>235
SNESだとしたら、
HiROMだと、00の部分がバンクなので、
C0がミラーバンクになるはず。
LoROMだと、ちょっと違うけど。
238名前は開発中のものです。:2013/03/21(木) 18:17:24.85 ID:fEWioKjJ
>>235
わりとガチな事言うけど読めるんならSNESのソースをお勧めする。
解説サイトで分からない事が出てきた場合にとても分かりやすい。
239名前は開発中のものです。:2013/03/21(木) 22:46:31.36 ID:yPAEg+sf
>>236
22 がジャンプ命令って先入観があったけど C0がなにかの引数(フラグ)的な役割の可能性ありますね。
なるほど。ありがとう。

>>237
>SNESだとしたら
スーファミのって意味ですよね? スーファミのDQ6です。
HiROMっぽいですね。
さらっと見てみましたがミラーバンクがよくわからなかった
(0x80〜 が 0x00 のミラーバンクと読める →とすると 0xc0 は 0x00 とはならないのでは?) ので
もう一度ググってみます。ありがとう。

>>238
>SNESのソース
(スーファミのソースって何??)と悩みましたが
SNESというエミュのソースプログラムが公開されてるのでそれを参考に ってことですね。
探してみます。ありがとう。
240名前は開発中のものです。:2013/03/21(木) 23:00:57.73 ID:eR9L18ep
バンクのミラーは、
80〜だけでなく、C0〜もある。
持っている資料ではそうなっている。
241名前は開発中のものです。:2013/03/22(金) 04:25:50.22 ID:wiXBJRbA
>>238
それって"ない"という回答であるという認識でいいのかなぁ?
まあ自分もいいサイト知らない。
Westan Design(仕様開発元)かSHARP(製造元)がいいのかもね(調べてないけど)
242名前は開発中のものです。:2014/02/15(土) 01:43:33.73 ID:gYTXJhyH
cc65 6502用C言語コンパイラ
243名前は開発中のものです。:2014/03/28(金) 11:07:17.51 ID:+zloHXLO
μPD612x
μPD613x
には加算命令がないのです、乗算命令とかアホなこと言うなボケ。
さらにレジスタだってAレジスタ1つだけだ。
メモリアドレスだって16個だけだ。バカ言うな。
スタックなんて4階層だけだ。
244名前は開発中のものです。
>>218
うちのでべろに突っ込んでみる