ファミリーベーシック活用テクニックat I4004
ファミリーベーシック活用テクニック - 暇つぶし2ch850:783
11/01/16 17:26:18
>>849
ありがとうございます。↓こんな感じですかね。
URLリンク(crystal.freespace.jp)

クロック計算は面倒といえば面倒なのですが、
昔のゲームは全てこれで作られていたわけで、
先人の偉大さには敬服するばかりですね。

851:ナイコンさん
11/01/16 17:40:04
>>850
フレーム単位になりますが長いウェイトは$2002の
bit7を見ると楽ですよ。

ldx #4 ; 大体4フレーム待つ(16.66...ms x4)
.loop
lda $2002
bpl .loop
dex
bne .loop

こんな感じで。

852:ナイコンさん
11/01/17 00:47:14
久々にこのスレに来たら超ハイレベル化しててワロタw
昔、マシン語ゲームがベーマガに載った俺が完全ザコ化してるとかwww

853:ナイコンさん
11/01/17 13:26:25
よう、ザコ(´・3・`)

854:ナイコンさん
11/02/03 19:22:44
ファミコンの驚くべき発想力
URLリンク(www.amazon.co.jp)
ここにいるかたなら楽しめると思います

855:ナイコンさん
11/02/03 22:05:00
いたるところで宣伝してんじゃねーよカス

856:ナイコンさん
11/02/05 13:57:02
>>854
忘れてた。思い出させてくれてありがとう。

857:ナイコンさん
11/02/06 17:02:59
ここに居る人には楽しめない本ですわな
ゲ製板の連中の感想
スレリンク(gamedev板:502-512番)

858:ナイコンさん
11/02/06 17:03:22
そんなもん思い出して誰が得するんだよ

スレリンク(gamedev板:502-番)

> ファミコンの門外漢が調べて書いた感は否めないが
> ファミコンプログラムに興味がある人がギコファミに行く前に
> 読んでおくべき入門書だと思う

> いくら丁寧でもタイトル詐欺はアカンやろ

> 1ページ満たない程度の「0爆弾」概念の説明があるだけ

> あたかも4方向スクロールにネームテーブル4画面モードが必要かのような記載してるくらいなので
> マトモにFCでプログラミングしたことない人だよ

> 0爆弾の説明も透明なスプライトを配置するって書いてるけど、
> それだとスプライトヒット検出のビット立たないしなあ




859:ナイコンさん
11/02/07 00:17:22
使用キャラクタ数を増加させる限界テクニック
・反転すべし
・パレット変更すべし

バカにしてるだろこれw

860:ナイコンさん
11/02/08 01:36:34
>>858は俺のドッペルゲンガーなのか?引用してるレス番まで俺と同じでワロタ

861:ナイコンさん
11/02/13 20:50:11
>>859
今の時代でも当たり前に使われてるよな・・・

862:ナイコンさん
11/02/24 22:22:59.00
ニンテンドーDSi上でプログラム言語「BASIC(ベーシック)」が使える「プチコン」
URLリンク(gigazine.net)
2011年3月9日から 800DSiポイント

863:ナイコンさん
11/02/25 01:14:49.67
1048576 byte free

864:ナイコンさん
11/02/25 01:51:39.23
入力が大変そうだ
PV-7やカマボコキーボードよりも大変かな・・・

865:ナイコンさん
11/02/25 04:36:39.15
タッチペンでポチポチやってくのか
ファミベ時代に人差し指で入力した頃を思い出せてくれるなんて胸熱だな

866:ナイコンさん
11/02/25 12:22:08.99
そんなところまで再現して懐かしのBASIC環境を提供とは・・・できる!

867:sage
11/03/20 00:52:17.71
はじめまして。
懐かしくなって私もファミリーベーシックのカセットを買ってきて、
とりあえずEnri様の解析ページと回路をぽーっと眺めています。
sramを4キロバイト有効ににしたければもともとのsramを剥がして
27256か何かにのせかえてアドレスをもう一本ひっぱってくれば
4キロバイトにはなるような気がします。
プラスアルファとして、$8000以降のrom領域に裏ramを追加できれば
ものすごく便利な気がします。
以前ファミコンを無改造でカセットのみゲームカートリッジの改造を行い、
マイコン遊びができるようにするというようなお題のページで
$8000以降のrom領域に書き込むための考察があったような気がしますが
検索ワードが悪いのか見つかりません。
どなたか上記のようなウェブページに思い当たるところがありましたら
教えていただけないでしょうか。



868:ナイコンさん
11/03/20 01:32:08.37
後半何が言いたいのかわからない
検索の仕方というより日本語自体が使えてない

869:ナイコンさん
11/03/20 03:46:12.98
>>868
日本語が分からないならとっとと半島に帰れよ、チョンが

870:ナイコンさん
11/03/20 07:41:58.60
はい、本性出ました。

871:ナイコンさん
11/03/20 13:58:46.38
867です。
どうもすいません。読み返してみたらご指摘の通り後半意味が通らない文章になっていました。
後半で書きたかったことは以下の通りです。

昔、マイコン遊びという観点で市販ファミコンカセットのプログラムromをramに置き換えて、
ファミコンのcpuから書き込みできるようにできないかということを考えているサイトがあったように記憶しています。
最近ファミコンの内部構造に興味が出てきたので探しているのですが、検索ワードが適切でないのかみつかりません。
そのようなサイトに心当たりがありましたらおしえていただけないでしょうか?

上記のサイトをなぜ今頃探しているかというと、ファミコンカセットのrom領域をramに置き換えを行う場合、
通常の外部バス有りマイコンの基本と同様にcsやrw(rd/wr)の処理だけ考えていればよいかという点について参考にしたいからです。

前半のram増設についてですが、$6000~$7FFFの場合にCSが選択されるので、sramにA11とA12をひっぱってくれば普通に使えそうな
気がしてきました。管理しない領域をファミリーベーシックがクリアしないのであればマシン語モニタのようなものを入れておけば
便利に使えそう。



872:ナイコンさん
11/03/20 19:37:26.88
うーん、森の電脳総合病院かねぇ・・・今は無いみたいだけど。

873:ナイコンさん
11/03/20 22:17:06.77
今はなくともWebArchiveなら・・・!

874:sage
11/03/21 01:50:47.24

867です。

森の電脳総合病院様ですか。ありがとうございます。そういえばそんな感じの名前だったような。
internet archivewではみえなさそうですね。残念です。他に何か似たような情報が載っているサイトが
ありましたらおしえていただけるとありがたいです。

とりあえず、2.0Aカートリッジでsramの増量(2キロバイト->8キロバイト)をやってみました。
同じ幅の8キロバイトsramの手持ちがなかったので32キロバイトsram(TC55257)と交換しました。
A13とA14をGNDに固定しているので容量の3/4を棄ててます。
ファミリーベーシックが管理していない$6000~$6FFF、$7800~$7FFFはリセットしても
クリアされないようです。バックアップスイッチをonしてから電源を切れば、次回起動時も
内容が残ってることを確認したので、ここにマシン語のツールを入れておくというのはできそうです。
けど、8キロバイトあるとそれなりにプログラムが書けそうな感じがしてきますね!(感じだけ(わらい))

別件ですが、起動時のたるいコンピュータの画面を「T」を押しながら起動してスキップしているのですが、
ベーシックのプログラムをクリアされてしまいます。起動時のたるい画面をスキップしつつ、
ベーシックのプログラムを残す方法がありましたらおしえていただけないでしょうか。

次は何をしようかな。i/oポートの増設してパソコンと通信できるようにするか、
それともベーシックのrom領域に裏ramを増設できないか検討するか。
マイコン遊びの順序からすると、ポートの増設かなあ。



875:ナイコンさん
11/03/21 21:08:23.07
>「T」を押しながら起動
メニュー画面でオフにする。
説明書ないの?

876:ナイコンさん
11/03/21 22:04:48.60
ないアルヨ

877:ナイコンさん
11/03/21 22:12:17.63
>>876
どっちだよw

878:ナイコンさん
11/04/06 11:11:19.75
ニンテンドーDSiウェアでBASICプログラミングが楽しめる「プチコン」レビュー
URLリンク(pc.watch.impress.co.jp)

879:ナイコンさん
11/04/06 11:12:16.90
ここかw

880:ナイコンさん
11/04/06 11:16:42.41
            )
             (
         ,,        )      )
         ゙ミ;;;;;,_           (
          ミ;;;;;;;;、;:..,,.,,,,,
          i;i;i;i; '',',;^′..ヽ
          ゙ゞy、、;:..、)  }
           .¨.、,_,,、_,,r_,ノ′
         /;:;":;.:;";i; '',',;;;_~;;;′.ヽ
        ゙{y、、;:...:,:.:.、;:..:,:.:. ._  、} < ここかw
        ".¨ー=v ''‐ .:v、,,、_,r_,ノ′
       /;i;i; '',',;;;_~⌒¨;;;;;;;;ヾ.ミ゙´゙^′..ヽ 
       ゙{y、、;:...:,:.:.、;、;:.:,:.:. ._  .、)  、}
       ".¨ー=v ''‐ .:v、冫_._ .、,_,,、_,,r_,ノ′
      /i;i; '',',;;;_~υ⌒¨;;;;;;;;ヾ.ミ゙´゙^′.ソ.ヽ
      ゙{y、、;:..ゞ.:,:.:.、;:.ミ.:,:.:. ._υ゚o,,'.、)  、}
      ヾ,,..;::;;;::,;,::;):;:;:; .:v、冫_._ .、,_,,、_,,r_,ノ′


881:779
11/04/14 22:17:30.82
>>867
私と似たようなことに興味がおありのようですね。779からの流れを見ていただければ
判ると思いますが、V2.1AはROMの1バイト書き換えでフリーエリア4kBとなりました。
自分は32kBのSRAMに換装してV3と共用で4kBx8バンクをDIPスイッチで切り替えられる
ようにしました。ROM書き換えでバックアップスイッチを自動化するのが最終目標ですが、
ハードウエアの完成の時点で計画が止まってたり…。
そのうち改造記事でも作ってブログにアップするつもりでしたが、伸び伸びに
なってます…。

BASICプログラムを残す場合は、プログラム入力後一旦systemコマンドで
メニュー画面に移って、そこでバックアップスイッチをonにして電源断。
Tキー起動後にメニューが現れたらそこでバックアップスイッチをoffに
してBASICを選択すればOKです。マニュアルを読んでも判りにくいですね。

882:ナイコンさん
11/04/14 23:04:14.38
はい次

883:ナイコンさん
11/04/17 15:56:09.17
悔しいw

884:ナイコンさん
11/04/17 18:03:01.08
ほら、早くw

885:ナイコンさん
11/04/23 09:19:06.56
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

886:ナイコンさん
11/04/23 18:33:19.21
キー押したままやで

887:ナイコンさん
11/04/25 19:21:30.55
            )
             (
         ,,        )      )
         ゙ミ;;;;;,_           (
          ミ;;;;;;;;、;:..,,.,,,,,
          i;i;i;i; '',',;^′..ヽ
          ゙ゞy、、;:..、)  }
           .¨.、,_,,、_,,r_,ノ′
         /;:;":;.:;";i; '',',;;;_~;;;′.ヽ
        ゙{y、、;:...:,:.:.、;:..:,:.:. ._  、} < ここかw
        ".¨ー=v ''‐ .:v、,,、_,r_,ノ′
       /;i;i; '',',;;;_~⌒¨;;;;;;;;ヾ.ミ゙´゙^′..ヽ 
       ゙{y、、;:...:,:.:.、;、;:.:,:.:. ._  .、)  、}
       ".¨ー=v ''‐ .:v、冫_._ .、,_,,、_,,r_,ノ′
      /i;i; '',',;;;_~υ⌒¨;;;;;;;;ヾ.ミ゙´゙^′.ソ.ヽ
      ゙{y、、;:..ゞ.:,:.:.、;:.ミ.:,:.:. ._υ゚o,,'.、)  、}
      ヾ,,..;::;;;::,;,::;):;:;:; .:v、冫_._ .、,_,,、_,,r_,ノ′



888:プチコンまとめWiki ◆oMOeOYErjQ
11/04/28 23:03:58.61
やあ(笑)

889:ナイコンさん
11/04/29 06:11:59.14
私達はお互いに潰し合う仲間です。
同じ馬鹿として、宜しかったら泥仕合に参加して下さいまし。

890:ナイコンさん
11/04/29 07:16:12.30
ほら、早くw

891:ナイコンさん
11/04/29 10:04:51.14

      人
     (__)
    (__)  
    (`・ω・´)   ∬ うんこでござる
   .ノ^ y ´~ フ━● 
   ヽ,,ノ==l ̄     
    /  l |     
"""~""""""~"""~"""~"

892:ナイコンさん
11/05/06 00:25:28.78

867です。

>>881の779さん
プログラムを残す方法を教えていただいてありがとうございます。
今は電池つなげない状態なので、落ち着いたら確認します。

基板をつくりはじめましたが、ポカミスでCPLDに正しく
書き込みができず、足踏みしていましたが形ができてきたので
話のネタに報告します。(つづく)


893:ナイコンさん
11/05/06 00:27:47.63


カートリッジからA14~A0、D7~D0、/ROMSEL、O2、R//Wを
引き出してCPLD(XC9572XLを使用しました)につなぎました。
また、最低限の動作確認のため、LEDを1つ接続しました。
データの方向はD7~D0は入出力、LEDは出力、その他は入力です。

以下がCPLDに書き込んだソースの宣言部以外のすべてです。(つづく)



894:ナイコンさん
11/05/06 00:30:06.90

architecture Behavioral of top is
 signal wLED : std_logic;
begin
 LED <= wLED;
 wLED <= DATA(0) when (O2 = '1') and (nW = '0') and ((not nROMSEL)&ADRS = x"4040");
 DATA <= "ZZZZZZZZ" when (O2 = '1') and (nW = '1');
end Behavioral;(つづく)


895:ナイコンさん
11/05/06 00:32:28.71



BASICが起動してPOKE &H4040,0もしくは1でLEDのON/OFFが制御できました。

今後はデータ入力を実験、メモリマッパの実装、romの切り離し制御、
キャラクタromのram化とすすんでいけたらと考えています。(おしまい)




896:ナイコンさん
11/05/08 12:31:58.39
867です。
日記状態ですいません。

自作ファミリーベーシック改造基板に機能追加して、32キロバイトのsramを
$5000から4キロバイト*8バンクで認識されるようにしました。切り替え制御は
$4043にバンク用のi/oを置いてます。CPLDの空きピンが残り3ピンなので、
今回増設したsramを$8000からのbasic romと切り替えできるようになったら
本体側の改造はひとまずおしまいにしようかと考えています。


897:ナイコンさん
11/05/08 15:55:19.51
>>896
今でもファミベを弄っている数少ない同志と見込んで
是非ともそのカセットの作り方など詳しくブログなどで公開して欲しいです!

898:ナイコンさん
11/05/10 00:18:45.09
867です。
毎度日記状態ですいません。

>>897
ブログで写真とかは出してるんですが、回路図のようなものをあげたほうがよいのかなあ。
最小の配線しかないけど、電子工作やったことがない人は配線のデバッグが苦しいかも。

カートリッジのnROMSELからキャラクタrom 2個の22番ピンに行くパターンをカットし
CPLDで制御するようにして裏ramを実現できました。
basicでromを裏ramにコピーし、ついでに$8570を$7Fに変更してリセットしたところ、
2.0Aですが4030 BYTES FREEになりました。
メイン側の改造で最低やりたかったことはここまでです。CPLDはあと2ピン空きがあるけど、
何が実装できるか???


899:779
11/05/12 21:42:55.87
燃料になるか分かりませんが、バックアップスイッチをソフトウエア化
するために必要な回路図を公開しておきます。ROM書き換えが前提ですが…。

URLリンク(niga2.sytes.net)

マニュアル切り替えでもバックアップ切り替えをタクトスイッチで操作
しますので振動で暴走しにくくなってます。

900:ナイコンさん
11/05/13 01:21:42.38
すがすがしいくらい綺麗な回路図をありがとう

901:ナイコンさん
11/06/15 20:49:40.12
867です。
スタンドアロンだとしんどすぎるので、キーボードのカセット入力に
使われている4069から線を引き出してmax232経由でrs232cからインテルhex形式の
データを読み込めるローダを作りました。
タイミングをはかるのにメモリマッパのCPLDのあまりでカウンタを作って
楽をしているのですが、そこだけ作り直せばmax232をつないだだけの
ファミリーベーシックでも動きそうです。そのようなものに需要はありますか?
実機派の人には便利なような気がしますが。


902:ナイコンさん
11/06/16 02:32:47.62
オクたのむ

入札するから

903:ナイコンさん
11/06/18 03:12:10.32
回路図とローダー公開希望!
是非PLD使わないバージョンで

904:ナイコンさん
11/06/21 07:09:48.82
PLAY命令の詳細仕様って無いかな?M,Y,Vの意味がよくわからん

905:ナイコンさん
11/06/21 12:57:37.12
URLリンク(www.nicovideo.jp)
よくできてる。

906:ナイコンさん
11/06/21 21:40:45.11
>>905
ブワッ…

907:ナイコンさん
11/06/22 00:42:44.15
久しぶりにファミベ動画も見てきたよ

908:ナイコンさん
11/07/10 07:31:25.19
867です。
ファミリーベーシックにrs232c経由でインテルhexを流し込むためのローダ、
とりあえずソースとダンプリストをアップしました。
興味のある方どうぞ。


909:ナイコンさん
11/07/10 08:28:58.65
おつです
どこですか

910:ナイコンさん
11/07/10 14:39:48.14
867です。
ファミリーベーシックにrs232c経由でインテルhexを流し込むためのローダのアップ先ですが、
わたしが書いている電子工作のブログに置いてます。週末に置いたので、検索すればすぐみつかると思います。
自分のブログ置いたので、ストレートにアップ先を書くのはちょっと下品かと思って書いていませんでした。
わかりにくくてすいません。


911:ナイコンさん
11/07/13 07:02:38.63
URLリンク(www.google.co.jp)

912:ナイコンさん
11/07/25 21:44:28.52
V3
データレコーダに変わるファミリーベーシックの記憶装置です。

913:ワニチャン
11/07/26 17:53:49.57
はじめて書き込みします。

子供の頃にファミリーベーシックのメッセージボードで隠しメッセージが
出たことがあります。
何せ相当前のことなので記憶だけで書くのですが
通常のメッセージボードとは色違う画面になり
開発者からのメッセージらしきモノがでました。
「アリガトウ...」的なメッセージの後で、
「レンラククダサイ」というような内容だったのですが、
当時はどこに連絡すれば良いか分からず、
結局なにもしなかったのを覚えています。
このメッセージをもう一度見たいのですが、どう出すか分かりますでしょうか?


914:ワニチャン
11/07/26 17:56:44.62
あともうひとつ、当時近くジャスコの4階でファミリーベーシックの
金色のキーボードがあったのですが、あれは何だったか分かりますでしょうか?
うる覚えですが、なんか普通のベーシックとは少し違っていた覚えがあります。
開発機かなんかかな?と思っていましたが、何だったか分かれば知りたいです。


915:ナイコンさん
11/07/26 20:11:09.93
>>開発機かなんかかな?
「開発機」か「なんか」のどちらか2択です。
実は、「なんか」なのです。
ジャスコの4階のファミリーベーシックの金色のキーボードの正体は、
「なんか」なのです。

916:ナイコンさん
11/07/26 23:08:02.79
メーカーが限定で塗ったんなら超レアだけど
ジャスコが勝手に塗ったんなら只の客寄せ
もしオクに出たならそこんところよく確かめないとね

917:ワニチャン
11/07/27 13:20:06.45
色々調べたら、PlayboxBasicってヤツだったんじゃないかと思います。
でもキーボードの画像が見つけられず、真相は分かりませんが。

918:ナイコンさん
11/07/29 16:24:14.68
久々にファミリーベーシックを触ろうと中古屋を巡ったけど
どこにもなかったわ

919:ナイコンさん
11/07/29 16:29:56.29
ないアルヨ

920:ナイコンさん
11/07/29 21:34:17.96
あるナイヨ

921:ナイコンさん
11/07/29 23:27:46.74
ありますん

922:ナイコンさん
11/08/11 19:39:21.49
家族揃ってレーシック受けました
ファミリーレーs

923:ナイコンさん
11/08/12 12:32:20.17
大阪日本橋の状況をはなしのねたにおしらせします。
今は中古ゲーム屋数軒のうち、ある店に1個だけ箱入り中古が売ってる感じ。
入荷して一ヶ月くらいたつのかな。
私は二月ごろ欲しくなった時に在庫がなくて、入荷するまで一ヶ月以上
入荷している店はないか探して買いましが、ほぼ同時期のある日、2軒に
1個ずつ入荷したので両方買ったけど、その後は1ヶ月かそこら見かけなかったので、
これも売れてしまったらまた一ヶ月やそこらは見なくなるんじゃないかと思います。
まあ、待てば店頭にでてくるだけましか。



924:ナイコンさん
11/08/12 16:12:57.78
ファミベのキーボードって押し具合が超イイ感じなんだよな

925:ナイコンさん
11/08/12 17:54:47.02
ヤフオクにあるジャン

926:ナイコンさん
11/08/13 02:44:31.54
あのファミベキーボードのパチパチカタカタ鳴るのとタッチ感イイヨね!

927:ナイコンさん
11/08/17 11:28:53.50
キーが小さいのと、STOPキーの位置に不満はあるけどね

928:ナイコンさん
11/08/26 13:09:04.14
最近実機をみてないからキーのサイズが思い出せない

929:ナイコンさん
11/08/26 14:04:50.44
お子様サイズではあるね
いっちょ押し入れから引きずり出して計ってみるかな

930:ナイコンさん
11/08/27 12:47:38.90
コードが短いね。

931:ナイコンさん
11/08/27 14:09:39.12
厚みがあるよね


932:ナイコンさん
11/10/20 04:18:36.65
厚みの割には軽いよね
初代無印PC-9801のキーボードの重い事重い事…

933:ナイコンさん
11/11/25 16:16:54.66
やすぶしーん

934:ナイコンさん
11/11/27 02:55:12.77
中身は随分スッカラカンで基盤なんてほとんど無いから
もっと薄くコンパクトに出来るだろうな

935:ナイコンさん
11/11/27 05:25:13.69
魑魅魍魎を組み込んでスタンドアローン…
そんなふうに考えていた時期が俺にもありました

936:ナイコンさん
11/11/27 11:35:25.97
俺にはありませんでした。

937:ナイコンさん
11/11/28 02:17:19.09
魑魅魍魎じゃ15pのキーボード刺さんないだろ

938:ナイコンさん
11/11/28 12:33:19.19
ファミコン互換機をみかけるたびに15ピン拡張ポートがないかと
確認するのですが、昔はあったらしいけど、今の日本橋ではみつからないですね。
romにパッチあてて、コントローラ2あたりにキーボードをつなげるようにすれば
いいんだろうけど、なかなかむつかしそうですね。






939:ナイコンさん
11/11/28 12:37:43.80
ファミリーベーシックを逆アセンブルした方、いらっしゃいませんか?

逆アセンブル時に使用するcode/dataを区別するヒントファイルを
いただけないでしょうか。

また、実行結果からcodeとdataの範囲情報を出力できるエミュレータとか
ありましたらおしえていただけないでしょうか。

よろしくおねがいします。



940:ナイコンさん
11/11/28 17:18:24.23
>>939
昔、一応VBAマクロでV3.0を逆アセンブルしたことはある。
面倒だったので全然解析してないけど。

この辺のページとか参考にしてたかな。
URLリンク(hp.vector.co.jp)

でも今は、なんか便利そうなのが…
URLリンク(mrchecker.web.fc2.com)

codeとdata云々はちょっと意味がわからんかったけど、
上のツール使ったら分かったりしない?


941:ナイコンさん
11/11/28 18:15:12.24
コードとデータなんて機械的に分けられるもんじゃねえだろ
ジャンプテーブルなんか使ってたらひとたまりもない

942:ナイコンさん
11/11/28 20:53:44.11
そういう時はIDAの出番だよ
ほぼ間違いなくコードとデータに分けてくれる
プラグインを使えばコメントさえ付けてくれる

オレはファミコンの解析はこれ一つでやっている

943:ナイコンさん
11/11/29 10:54:03.08
終了時にプログラムカウンタの通過したバンク・アドレスを出力すりゃいいんだから
改造としては簡単な部類だと思うが
ビルド環境の導入から始めても2時間も掛からんだろ

俺はやらんがね

944:ナイコンさん
11/11/29 20:50:07.15
みなさん、レスありがとうございます。

>>940
codeとdataの分離なしに逆アセンブルすると、
dataの部分もcodeとして逆アセンブルしたり、
opコード(1バイト目)でなく、オペランド(2バイト目以降)を
逆アセンブルしてしまって、わけがわからなくなるのです
地道に読んでいけばよいのですが、一万行くらいになりそうなので
先人の知恵にすがりたかったのです。

>>942
IDAのフリー版をインストールしてみましたが、86系しかモジュールが入って
いませんでした。これは非常に強力そうだけど、けっこうお高いのですね。
ちょっと買えそうにないです(泣)
コード解析機能のある逆アセンブラとして、td6502というのを見つけたので、
これでとりあえでためしてみます。

>>943
たしかにエミュの改造は小改造ですみそうなのですが、私のちからでは
ビルド環境をそろえるのと、エミュの動作を調べるのでけっこうな
時間を食いそうに思い躊躇しています。
コード解析つきの逆アセンブラで地道にすすめて、きりがなさそうだと
感じたらエミュにも挑戦するかもしれません。
ファミリーベーシックが動いて、ビルドが簡単で、ソースが読みやすい
そんな都合の良さそうなものがなにかありますでしょうか?
(Cぐらいしか読めません。ビルドはlinuxだと比較的簡単なんでしょうか?)

後だしになってもうしわけありません。
やりたいことはメッセージボードやミュージックボードの、自作プログラムを
書き込んで問題なさそうな領域の調査やBASICのパッチあてです。
何か追加情報ありましたらレスいただけるとありがたいです。


945:940
11/11/29 22:28:15.09
>>944
ツール系は他の詳しそうな人に任せる。
944の望むモノは理解できたので、以下、経験談。

ファミリーベーシックは、V2もV3も、プログラムROMは32Kバイトで
&H8000~&HFFFFにプログラムROMがマップされる、というところはおk?

その最終部分、&HFFFA~&HFFFFまでの6バイトに、
NMIとリセットとIRQの割り込みベクタがリトルエンディアンで書き込まれている。
よって、ここに記載されているアドレスを起点にして順にたどれば、
データを間違ってディスアセンブルする、という現象はひとまず回避できる。

次に、他の人も描いている通り、6502は非常にややこしい間接アドレッシングがあって、
ジャンプ先アドレスがリトルエンディアンで2バイトずつ、ずらずら並んでいるところがある。
ここも、それらを検知したうえで、それぞれ基点として逆アセンブルしなければならない。
(V3.0の場合は5箇所ぐらいみつかった)

あと、非常にトリッキーなアセンブルをしている箇所が、少なくともV3.0には数箇所あった。
それは、オペコードではなく「オペランドのアドレスに向かってジャンプ(またはブランチ)する」というもの。
これによって、通常の逆アセンブルをやっていては絶対に通らない部分がある。
(つづく)

946:940
11/11/29 22:29:02.02
(つづき)
たとえば、

AE A5 33

という並びの3バイトのマシン語を解釈すると「LDX $33A5」となる。
だが、&H33A5はファミコンでは未使用のアドレスなので、
結果的に「LDX #$00」と同じ動きになる。

一方、この3バイトのマシン語の2バイト目「A5」に向かってジャンプする命令が別の箇所に存在する。
この場合、CPUは「A5 33」の2バイトを解釈して「LDA $33」となり、
&H0033の値をAレジスタにロードするという、
6502独自のゼロページ命令として解釈される。

これによって、「LDX #$00」と「LDA $33」が3バイトで表現され、都合1バイトメモリが節約できるわけ。

この辺に注意して逆アセンブラを自作し、何度も何度ももジャンプベクタを
見つけてはそれを起点に加えて逆アセンブルを繰り返していけば、
逆アセンブルは出来ると思うよ。8ビットでオペコードも少ないし、情熱があれば何とかなる。

ただ、V2.0の場合、メッセージボードやミュージックボードもマシン語で書かれているから、
「使っても良さそうな領域」と「使えなさそうな領域」の区別は結構難しい気がする。

むしろ、V3.0を使い、GAME1~GAME4の、
ベーシックの中間コードを丸つぶししてパッチを当てるほうが楽だと思うんですがね。

947:ナイコンさん
11/12/01 23:38:27.46
普通にNES用の逆アセンブラツールじゃいかんの?

948:ナイコンさん
11/12/02 17:24:34.76
944です。
レスありがとうございます。

>>945
なるほどー。V3の内蔵プログラム領域というのは見つけるのが簡単そうですね。
V3が安く店頭に出てきたらぜひやってみようと思います。(今は2.0をさわってます)
ジャンプテーブルの件、逆アセンブラによってはcode/dataの他にジャンプテーブルも
記述できるようですので、特定でき次第逆アセンブラのヒントファイルに書いていく予定です。
オペランドにジャンプするというのはいやらしいですね。8ビットパソコンのプロテクトなんかでは
そんなのもあったような気がするけど、rom化するプログラムでそんなことをすることがあったのですね!

>>947
へたれなのでできるかぎり自動化したいのです。

現状、G-NESにトレースログを出力(他のエミュにもあるとは思うけど)する機能があることが
わかったので、トレースログからcode部を抽出していっているところです。
あれこれトレースして6キロバイト分くらいコード部がでてきました。まだまだ先が長いです。




949:ナイコンさん
12/02/07 02:59:56.77
ZACNER IIとかって内蔵ゲームの領域潰してプログラムされてたの?
そうすると4KB超って事になるんだろうか?

950:ナイコンさん
12/03/11 11:12:53.09
今ファミコン互換機が新聞広告に載ってるぞ

951:ナイコンさん
12/03/13 20:51:46.03
あんまりファミベに関係ないな

952:ナイコンさん
12/03/14 12:28:02.44
スレ違いではありますが、どんな機種が広告ででてたのですか?
15ピンポートとかありました?



最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch