【65816:SNES】アセンブリ【6502:NES】
■ このスレッドは過去ログ倉庫に格納されています
やってるやついねーの?
暇潰しでもいいからいじって遊ぼうぜ。 >>3
解析してみたら面白いよ、あの時代にして、すでにオブジェクト指向のはしりのような物が入っている、
よくよく見るとデザイパーンモドキのような構造も見受けられる。
オブジェクト指向らしいものが実際に流行り始めたのはそれから十年以上も後というのは、考えさせられます。 タスクは最低でも65816以降だな、6502ではスタックの交換が難しい
仮にできてもオーバーヘッドが大きすぎる >>4
ソースコードあるのかよ?w
コンパイルしたらオブジェクト指向のかけらもなくなるぞ。 >>9
同世代の中では飛びぬけて嫌なハードだったよ
>>10
時代を感じる発言だ、当時はアセンブラだよコンパイラじゃない
読むには逆アセンブラでもよいし(当時はベーシックでよく作ってたな・・・)
小さい命令セットは馴れれば16進でも読めたりするのだ。 【最終対決結果】(暫定)
処理速度:◎PCEvs○MDvs×SFC RPG勝負:◎SFCvs○PCEvs×MD
同時発色数:◎PCEvs○SFCvs×MD STG勝負:◎PCEvs△SFCvs×MD
解像度:◎SFCvs○PCEvs×MD ACT勝負:◎SFCvs○PCEvs○MD
拡大縮小回転:◎SFCvs△MDvs×PCE SPORTS勝負:◎SFCvs○PCEvs×MD
グラデーション:◎SFCvs○PCEvs×MD PARTY勝負:◎PCEvs○SFCvs×MD
多重スクロール:◎SFCvs○MDvs×PCE ADV勝負:◎PCEvs○SFCvs×MD
内蔵音源の厚み:◎SFCvs○MDvs△PCE SLG勝負:○PCEvs○SFCvs△MD
CD大容量+生音:◎PCEvs◎MDvs×SFC ARPG勝負:◎SFCvs○PCEvs△MD
声質:◎PCEvs○SFCvs×MD PZL勝負:◎SFCvs○PCEvs△MD
売り上げ:◎SFCvs×PCEvs×MD レース勝負:◎SFCvs△PCEvs×MD
野心的作品:◎PCEvs○SFCvs△MD 洋ゲー勝負:○SFCvs△PCEvs△MD
移植勝負:◎PCEvs○SFCvs△MD ギャルゲー勝負:◎PCEvs△SFCvs×MD
対戦格闘勝負:◎PCEvs△SFCvs×MD NESの逆汗は知らんが、SNESの逆汗って使い物になるのか? >>18
自前で作りなはれ、この時代の逆アセンブラはアセンブラが理解できていれば
おもちゃ言語でも小一時間もあれば作れるんじゃ
わしなんか、学校の授業がつまらなくて授業中(一コマ)にBasicで作った事もある。
>>19が公開してくれるそうです!!!
期待age!! そう言えば、SNESはプログラムが大部分アセンブラで書かれていて、
という事は汚いテクニックもたくさん使われていそうだし、綺麗な逆
アセンブリリストは出てきそうにないですね。 >>20
なんでワシやねん
まぁ本気で知りたいなら自分で作ってみれ、そもそも逆アセンブラを作れる程度の知識量がないなら、
逆アセンブルした結果を読むのは無理やで。 マリオを逆アセ→逆アセされたソースをアセンブル→×
>>24
あんな、逆アセされたソースをアセンブルして使えるようにできるように
逆アセンブラを作るのはそれほど難しくないんだよ、ただ目的を考えると意味が無いからやらないだけ、
ちょっとアセンブラを勉強すれば判る事だよ。
>>23
SNESで高級言語で書かれた例を挙げてみろ。 >>26
だからアセンブラ勉強しろ、発想が斜め上をいってるから突っ込みにくいんだよ(藁 ここは知ったかが多数生息するインターネッツですねw 自分も以前使っていた有名どころはこの本だけれど当然のように絶版だ
http://www.amazon.co.jp/exec/obidos/ASIN/4875931190/qid=1110270486/ref=sr_8_xs_ap_i1_xgl/249-2729291-3931537
古書回りするなり、適当に洋書でも探して買ってくるか、自力でサイト探すしかないね。
古いチップなんで資料探しは難しいのは諦めるしかない。
自力でガンバレ ttp://vsync.org/
こことか詳しいみたいだけど、いきなりサイト読んでも意味不明
アセンブルは基本的な流れは同じみたいだけど難しすぎ 文字表示だけでも長い命令書かないといけないんだな。 >逆アセンブラを作るのはそれほど難しくないんだよ、ただ目的を考えると意味が無いからやらないだけ、
>ちょっとアセンブラを勉強すれば判る事だよ。 nasmの基礎について分かりやすいサイトなら知ってる
ttp://www.sys.cs.tuat.ac.jp/~shina/cm/ アセンブラって同じ動作をするのに文法はだいたい同じだけど、
コードが違うとか非効率なんだよ。統一しろ糞言語! >>46
そんなのが問題なのかよ(w
俺なら文法拡張あってもいいからマクロが強力なのがいいけどな、
あとICEが重要。 よく分からないんだが、スターフォックスのようにFXチップを使った3Dは表現できるのか? アセンブリ?
.NETでGACに登録されるあれのことかしら。
しょぼい質問ですまんけど、>>44の演習(1)の【演習3】-【演習5】の答え教えてくれ。
てか答えは書いたんだが間違いとか出る。
これであってるか?
演習3
mov eax,[100]
mov ebx,[200]
sub eax,ebx
mov ecx,[300]
add eax,ecx
mov [300],eax
演習4
mov eax,[100]
mov ebx,[200]
add eax,ebx
mov ebx,[300]
add eax,ebx
演習5
([200] - [100]) + ([400] - [300]) を計算するアセンブラのプログラムを書きなさい.
mov eax,[200]
mov ebx,[100]
sub eax,ebx
mov ebx,[400]
mov ecx,[300]
sub ebx,ecx
add eax,ebx ↑馬鹿アセンブリじゃねえだろ。アセンブラだろ。ボケ。
今どきそんな低級言語のアセンブラなんか使って開発しねえよ。
まぁROM容量が16kbyte以下の単品組み込みシステム位じゃねえか。
使ったとしてもC言語の一部で高速要求される箇所。
大体アセンブラってCPUで命令が変わる事も知ってるの? 言語名称は正しくはアセンブリ言語
それをアセンブルしてHEXにするのが、アセンブラ。
>>68 学歴があってもウダツの上がらないダメ人間発見 いや…俺まだリア工なんだけど…
そんなに食い付くほどショックだった? 海外でもファミコンで売ればよかったのに。
外人に略語は通じないのか? >>75
ALL YOUR BASE ARE BELONG TO USの二の舞になるぞ。 何が面白いのかな?
USがケツの事でALL YOUR BASEなんだろうか?
だれか英語詳しい人教えてぷりーず >>77
"ALL YOUR BASE ARE BELONG TO US"でぐぐればすぐにわかる。 外人も陰湿だなwwwwwww
面白いけどwwwwwwwww ズレてはいるけれど、エンターテイメントを提供するというゲームの大事な部分は果たしいてるから成功っちゃ成功なんだな。 >>76
分かりやすく意図した日本式の名前のファミコンと、
"ALL YOUR BASE ARE BELONG TO US"のような文法ミスは比較にならんぞ。
もうすっかり忘れました、とても懐かしいですねの人なら結構いるかもよん アセンブラの命令がわからんのか?
ソースが汚くて流れがわからんのか?
nesでよければ質問に答えるぞ 質問も何も無いのに網羅的に解説なんてしてられるかバカ 今時ファミコンやスーファミのゲームを作ってるやつなんていないよ。 ttp://10.139.148.210.dy.bbexcite.jp/
おkうぇwwwwwwwwwwwwうはっwwwwwwwwwwww
wおkwっおkおkwwwうはっwwwwww
wwwwwwうぇおkwwwwwwwwwwww
wwwwwwwwwwwwwwおkwwwwwwwwwwww k2pts.home.comcast.net/gbaguy/nesasm.htm
nesdev.parodius.com
www.zophar.net
www.geocities.co.jp/SiliconValley-Bay/9975/6502
vsync.org/ns/index.html
gikofami.fc2web.com
www.geocities.jp/kz_s6502
fuguri23.hp.infoseek.co.jp/FamAsm
peacemay.net/nes
www.apple2world.jp/apple2/COL/MapItems/6502/6502.html
自分で探せない人間にプログラムは無理だと思うけどね 性能や容量もスーファミが上なんだけどなぁ。作っている人がほとんどいないのが不思議だ。 Snes9xコンパイルできた人いる?
zlib.hを落としてきてパス通しても
ねぇとかエラーが返ってくるんだけど・・・。
只今、NESエミュレータを作成しています。サウンドをのぞけば、8割がた
完成しています。ただ、PADの動作がうまくエミュレートできていないのか、
CPUにバグがあるのかわかりません。だれかNESのPADについて教えてください! >>120
自分は今日から開発を始めてみたところです。
とりあえず、6502CPUの機械語命令を解読しないとならない訳ですよね。
その解説したサイトを探してるんですが(それでこのスレを発見した)見付からない。
ファミコンプログラミングの解説は幾つか見付かったのですが… ないと思ったけど、調べ方が悪かった。
6502 opcodesで検索したら沢山ありました。 私は、どうもCPUにバグがありそうで、アドレッシングが間違ってそうです。
インデックス・インダイレクト・アドレス指定(Indexed Indirect Addressing)
インダイレクト・インデックス・アドレス指定(Indirect Indexed Addressing)
の二つを誤解しているのか、得た情報が間違っているのか不明です。
正しいアドレッシングを知っているかたがいたら教えてもらえないでしょうか?
ちなみにVC++で作成しています。 >>109のfuguri23ってなに?atariのパロディー?
ついだけど、リンクだってわかるようにhttp://ってつけろや。 >125
それはもしかしてギャグで言ってるのか?
素でブルったんですけど いや本当にfuguriってふぐりから来てるのかなと思って 自分で探せよカスが
このスレでageてる奴らはゲ製板にも劣るな >>133
http://www.6502.org/
ここからたどれ。エミュレータなんかも普通にある。 >>134
単に使い勝手を試してみたかっただけですよ
>>135
探したけどみつからないんですが・・・
というか、そこ6502のサイトのような >>136
65816を初め、各種の古いCPU用のクロスアセンブラがあるよ。
日本人の認識は、6502=ファミコン、65816=スーファミ、程度しか
ないからなあ・・・・海外ではスーファミエミュレータも出てるね。 >>137が海外でスーファミエミュレータって言うから開発環境でも出来たのかと思った
エミュレータなら何年も前から国産であるだろw >>137
DisPelを探しているのであって、アセンブラを探しているわけじゃないんですけど。
本家サイトはもうないし、Zophar'sDomainにもないし。 こーやって素晴らしきドットゲームの世界は埋もれてゆくのでふね
懐古厨と呼ばれてもかまいまへんでも私はかなしひ 次世代家庭用ゲーム機でドット絵は完全に消えそうだな。 ttp://www.geocities.jp/kz_s6502/ >>146
なんせPS3クオリティーらしいからな。 誰か最高のゲーム作れ
俺を感動させたら200万振り込んでやるから abadonのデモファイルとか面白いんだけど、
3Dってどうやって表示してるんだ? おおお、こんなスレが。NESエミュレータ作ってる人いるんですね。
漏れもGBかNESかどっちか作ろうかと思ってるんですけど、どっちが簡単なんでしょう?
まあいいや、作りたいほうを作ってみよう。
>>159
ググって見たけど、シューティングゲーム? abadonじゃなくてABANDON
ttp://www.ipc-tokai.or.jp/~ytanaka/sfc/snesdemo.shtml
ここからダウンロードできる。 「ファミコンのプログラム」スレがdat落ちしてしまった・・・。 失礼します。SNESのCPUはI/Oの$2410〜$2413(APU port)に頻繁にアクセスして
データをみてるんですけど、どうなってるですかね?
CPUは作成したんですけど、そこで無限ループへ...... おお。懐かしい。
clc
xce
sep #$30
とかだっけ。
>>174
SPC700たたくところかなあ。
16bitがアドレス、16bitがデータだったような気がするけど記憶の彼方… VirtuaNESの作者が作ったサンプル(花びらが散るヤツ)
みたいなのを作ってるんだけど、どうしても処理落ちしてしまうよ・・・
なかなか難しい
皆さんは命令サイクルもちゃんと意識して作ってるんでしょうか? 今SNESエミュ作ってるんだが、PPUがハイレベルすぎる…。
てか、正確な情報さえ分かれば問題ないのだけども。
良かったらおまいらオススメのドキュメントorサイトを教えてくれないか? * gooブログ
ただいまメンテナンスをおこなっております。
ご迷惑をおかけいたしますが、復旧までしばらくお待ちください。
評判分析サービスはこちら
hai zannen show >>185
http://hikipuro.is-a-geek.org/snes/wiki/
翻訳中ですがよろしかったら見てみてください。
僕もSNESエミュ作ろうとしてたんですが
難しすぎてやめましたw >193
この有意義なお仕事に敬服します。
ゆっくり進んでください。 6502 に乗算・除算命令が無いのが不便です。
加算・減算命令とループを使って作ればいいのかな・・・ >>195
定数倍の時は、2のN乗の加算の形に分解して、シフトと加算で計算するのが普通かな。
ありがとうございます!
(知能低の俺には理解できん・・・) >>197
2倍
元の数を左シフトする。
3倍
2倍した物に元の数を足す。
4倍
元の数を2回左シフトする。
5倍
4倍した物に元の数を足す。
・
・
・
オーバーフローするw >>198
今頃になって、やっと分かりました。
時間あいてしまってすいません スーファミだと乗除算機能追加されてるんだよね。
2クロックと4クロックだっけ? >>202
SNES研究室より
実際積算や除算はサポートされてない
と記載されているので、たぶんサポートされてないと思います。 >>203
検索してみ?
スーファミには乗除算器ちゃんとあるぞ。
あとそこの研究所って所資料足りてない。
>>204
検索したら出てきました。
余計な口突っ込んですいません。 今6502をギコ猫で勉強してるんだけど
第11章のネームテーブル
http://gikofami.fc2web.com/nes/nes011.html
これの
adc #1
なんだが、
G−NESのデバッガ見てたら
1回目は2を足してて、2回目からはちゃんと1を足してるみたい
どうして1回目は2を足すんですか?
>>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に書き込んでるってことですかね? 前回のKeyBufferの右シフトは分かったのですが
ギコ猫第15章の
http://gikofami.fc2web.com/nes/nes015.html
lsr a ; Aレジスタ右シフト(半分にする)
これによってスクロールの速さが半分になるのは分かったのですが
どういう理屈でこうなってるのですか?
初心者すぎる質問で申し訳ないですが、お願いします ヒント1:2進数
ヒント2:二進数で1000を0100にすると十進数では・・・? >>213
8が4になる
半分になる
なるほど
分かりました、ありがとうございます マッパとbank orgが解りません
現在$c000がミラーになっている状態です。bank1が$a000と$e000
nesasmです。
どう書けばいいのでしょう?
マッパ絡むならファミコンスレで聞いたほうがいいと思うんだ ありがとうございます。
視野が狭くなっていました。(m_m) RP2A03の未定義命令を解説しているサイトってありますか? PSPでNesterJ最新を使っていますが
save機能が機能しません。
statesaveするとちゃんとリストに日時と共にsaveされるんですが
そのファイルをstateloadしてゲーム画面に戻っても
loadが反映されてくれないのです。
そういう状況になって解決した方、いらっしゃいますか?
ちなみに、関係あるかわかりませんが
一度statesaveした場所にはdeleteしてsaveしなおさない限り上書き出来ません。
(save→yesしてもsave日時が変わらないのでsave出来て無い?)
ゲームは問題無く動きますが
NesterJのsave機能を利用するための
データかなんかの入れ忘れとか考えられますか?
逆汗って機械語を読める形に変換してるだけだよね?
書換えて機械語に戻すってことは出来ないの?
説明聞いた感じだと逆汗して解読しながら機械語書換えてるみたいなんだけど・・・ >>223
逆アセンブラ=逆汗知ってて
アセンブラ知らないの?
実際は逆アセンブラがテキストを出力したとして、変数や関数の役目は書いてないわけで、、、それを解析して解読するのが解析神。
試しにWindowsの.exeを逆アセンブルしてごらん。超意味不明だから。
プログラムの規模がある程度大きいと、
逆汗したものを、再アセンブルするのは困難を伴う場合が多い。 >>224
逆汗の事ばっかり考えてて頭が固まってたようだ・・・
可逆変換なんだから戻せないわけが無かったね、ありがとう ものによっては可逆ってわけでもない
データをコードとして扱ってしまい意味が変わる場合もあるし
普通にコード自体も意味が変わってしまう場合もある 逆汗する場合はバイナリが16進で併記されるツールがいいよ。
8ビット世代だとアセンブラで書いてるソフトが多く、感心するほどキレイなやつもあるんだけどね。
データ部はだいたいバイナリに法則性があるから、慣れれば見分けがつく。 普通に逆汗してもメモリジャンプの位置とかステージデータとかキャラデータとか
すべて目を通して手直ししないといけないからSMWを高級言語にするのは不可能
一番の問題はデータが散在しててアンセブラがそこも逆汗するからバグる
素人にデータとプログラム部分を見分けられるとはとても思えない 6502なんて命令少ないし、意味のあるプログラムか否かなんて結構機械的に判断できそうな感じだけどな。 エミュによってはcodeとdataのlogをとれるやつあるけどな
OS/A65 - a Multitasking/Multithreading Operating System for 6502 computers
(C) 1996-2006 André Fachat
ttp://www.6502.org/users/andre/icapos/osa65.html 6502よりゲームボーイ(Z80C)のがわりかしわかりやすかった 人がいなそうだけど聞いてみる。
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(製造元)がいいのかもね(調べてないけど) μPD612x
μPD613x
には加算命令がないのです、乗算命令とかアホなこと言うなボケ。
さらにレジスタだってAレジスタ1つだけだ。
メモリアドレスだって16個だけだ。バカ言うな。
スタックなんて4階層だけだ。 ca65(nes)の情報でそこそこ詳しいとこってどっかあります?
詳しいとこてか要はコードがあればいいんだけど
英語全くわからんけど英語圏でもいいです
おらのスペック
8080のCP/M2.2環境(エミュ環境)でEDをディスアセンブルでの独学解析(完全にゼロからで一年ぐらいかかってます)、ラインエディタをやっとこ自作程度(公式?公開のPL/MはCぽくてわかるようで意味不明
だったのでアセンブラに直して何とか)その後一気に16bitや32bitアセンブラに進んでみたら アレ?これ普通に高級言語じゃね?と敵前逃亡
ファミコンなら8bitだし行けるかなと思ったらいきなり意味わからん
とりあえず簡単に調べると一ファイルで作る?見たいなレベル高げなのがヒットする
え?ソースて?そもそも復数ファイル必要なの?レベルだす あっ普通にディスアセンブラついてたんか
適当なのやってみると.byteてのがいっぱいある
EQUかDB的なもんなんかな?
即値をなんかしてんだろう
他は普通の命令ぽいしなんとかわかるかな
16進と三文字程度の命令見るとなんか落ち着く
でもなんか情報あればいただきたい ん〜中々無いか・・・
まぁCやpythonレベルですら、日本語環境は著名サイトや書籍でも「公式マニュアル翻訳しただけor毛が生えた転載レベル」情報ばっかだもんな・・・
とりあえず画像処理音声処理とか千年早そうなので8080をもちょっとちゃんとやってみよう うん ■ このスレッドは過去ログ倉庫に格納されています