初期のファミコンゲームなどを解析してると面白い。
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2009/10/05(月) 12:57:48たとえば9999だと
09090909と4バイトも使ってたりしてる。
ファミコンでその冗長的な方法は許されないと思うが
社内で誰もそのおかしさを指摘できる人がいない、そんな幸せな1980年代。
0002デフォルトの名無しさん
2009/10/05(月) 13:10:42言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
0003デフォルトの名無しさん
2009/10/05(月) 16:41:32ご理解とご放置を賜り、誠にありがとうございます。
さて、このたびは「アイちゃん」に関する大きな発見を致しましたので
報告をさせていただきます。
すでに>>1の書き込みを見て気づかれている方もおられるでしょうが、
「アイちゃん」が夢を見ていることが証明される形となりました。
以前から、夢を見ているという推測はなされていたのですが、
今回の件はそれを証明する大きな発見となりました。
これからもより一層のご理解とご放置をお願いいたします。
京都大学霊長類研究所一同
0004デフォルトの名無しさん
2009/10/05(月) 20:38:33リアルで会話する相手がいないの?
0005デフォルトの名無しさん
2009/10/05(月) 22:25:00もしくは、お金や経験値等のパラメータって結局は画面表示しなくちゃならないわけで
「だったら10進で管理しておいて、表示するときに「0」のキャラコードにバイト単位で加算して表示すべきキャラコードを求めたほうが処理が速いじゃないか。
それでもなくても点数その他は常時表示しなければならない情報=必ず毎フレーム通る部分なんだから、そんなところでただでさえ非力なCPUの処理時間を増やしてられないだろ」
と考えた、とかじゃないのかなあ
もっともその点数なりなんなりを何で表示するんだという問題もありそうだけど
スプライト枚数は圧倒的に少ないからたぶんBGで表示、となると一度BG-RAM?にキャラコードを書き込んでおけば毎フレーム処理しなきゃいけないわけでもないよな…
いや、やっぱり処理速度の問題じゃないだろうか。ファミコンのCPUのレジスタ構成がどうなってるかは知らないけど、たぶん16→10進変換を書いたら意外に処理時間を食ってしまう貧相な仕様だったんだろうファミコンで作ってないから知らないけど
0006デフォルトの名無しさん
2009/10/05(月) 22:31:270007デフォルトの名無しさん
2009/10/05(月) 22:33:01アクションゲームで「ジャンプ」する仕様があるじゃない。マリオとか色々あるけど
アレをどんな実装で実現してるのか、どういう方法が多いのかが昔から気になってるんだ…
個人的に固定小数点+加減速でジャンプさせるのが好みなんだけど(容量が少なくて済む気がする)
ファミコン時代からずっとやってた会社の先輩は「絶対にテーブルで座標値を持つべきだ」と発言してた
実際はどっちの方法が多いんだろう? それぞれどんなメリット・デメリットがあると思う?
0008デフォルトの名無しさん
2009/10/05(月) 22:52:35しらない。
0009デフォルトの名無しさん
2009/10/06(火) 00:00:20表示を考えると16進数で持つよりも、4バイト使う方が効率的だよ
0010デフォルトの名無しさん
2009/10/06(火) 01:38:10ファミコンのCPUは、BCD回路は省略されてたような。
0011デフォルトの名無しさん
2009/10/06(火) 03:13:20加減算処理は面倒にならない?
0012デフォルトの名無しさん
2009/10/06(火) 03:39:16>>1が何を解析したのかは知らんがおそらく別のアドレスに
内部でお金として扱っている16ビット値があるはず
0013デフォルトの名無しさん
2009/10/06(火) 11:14:580014デフォルトの名無しさん
2009/10/06(火) 13:19:35ファミコンってワークとして使えるRAMが少ないんじゃないの?どのくらいだかしんないけど
なのにわざわざ「本当の値」と「表示用の値」を別々にワークに持つだろうか…?
「本当の値」と「表示用の値」の両方に使える持ち方・値の管理方法があるなら
俺ならそっちを選びそうな気がするけど
でも今度はプログラム側の容量が増えちゃうような気もする
0015デフォルトの名無しさん
2009/10/06(火) 14:53:40じゃ16進→10進をどこで計算するんだよw
0016デフォルトの名無しさん
2009/10/06(火) 21:56:030017デフォルトの名無しさん
2009/10/11(日) 03:17:130018デフォルトの名無しさん
2009/10/11(日) 04:38:54ないか?Linux的には。
0019デフォルトの名無しさん
2009/10/11(日) 11:34:15あーなるほどー
お金とか体力とか全部最初から10進で格納されてたら
16進→10進変換は不要=プログラム側の容量は全然増えないのか
(パラメータを16進でユーザに知らせることが要求される場面って、まず無いし…)
キャラの座標値とかは10進で表示する場面がないから
最初から終わりまで16進で扱えばいいし…
RAM・ROM容量が少ないファミコンだからこそ
10進で各種数値を持つことは効果があるのですね?
0020デフォルトの名無しさん
2009/10/11(日) 11:38:50別の何かに使えそうな気がしてきました
たとえば 1bit を 1byte で格納しちゃうとか
どういう場面でチョー便利になるのか
プログラミング初心者だから判りませんけど
0021デフォルトの名無しさん
2009/10/11(日) 12:49:540022デフォルトの名無しさん
2009/10/11(日) 13:22:53bitをbyteで持つことで、bit単位での圧縮?符号化?する処理のパフォーマンスを向上させる
という手法は既にあるのですね…
(しかしスゲー容量のメモリを使いそう…
でも部分部分に分けて・ブロックに分けて処理をすれば速度と容量のバランスが取れのかな)
>>21
ヒントが一切含まれない煽りは、煽ってる本人も同様もしくはそれより酷い無知であることを周囲に晒すので
少し違う煽り方を工夫したほうがいいように思いますよ
私には、貴方が、「そんなアホなやり方あるわけねえだろ」と思ってた、と見えてます
「○○とかではもうやってんだよ馬鹿」と書いてくれれば「わあ、この人物知りだ。スゲエ」と感心したでしょうに
貴方は馬鹿ですね
0023デフォルトの名無しさん
2009/10/11(日) 13:37:270024デフォルトの名無しさん
2009/10/11(日) 13:42:30そこだけ見れば容量が少なくなるからと言って、特に考えず16進で値を持つと、かえって容量が増えてしまう・処理速度がかかってしまう場面もあるとは…
目先のことに囚われず、トータルで見て優劣を考える、そういう視点がプログラミングには時として必要なのだと言うことを、ファミコンのプログラムを通じて教えてくれた>>1に感謝します
「なんでこうしてるんだろ変じゃないか」
「はたしてこんな方法もあるのだろうか」
と疑問を呈してくれる存在は、良い存在ですね
自身の知識量を何も明らかにすることなく、他者の無知ぶりをただ詰るだけの発言を繰り返す、そんな人間よりも、よほど人の役に立つ存在でしょう
例え自分の知識・考えが間違っていても、どんどん疑問を呈するべきなのでしょうね
受け手が賢ければ、その疑問からスレを発展させ、様々な知識を皆で共有できる状態を実現してくれるのですから
受け手が賢ければ…
0025デフォルトの名無しさん
2009/10/11(日) 13:46:35馬鹿でさむくてぜんぜん賢くねえけどな
0026デフォルトの名無しさん
2009/10/11(日) 16:04:06いや、俺には馬鹿でさむくてぜんぜん賢くねえとは思えない。
むしろなるほどなと思うぞ。
0027デフォルトの名無しさん
2009/10/11(日) 16:08:28変換は不要だけど、10進同士の四則演算は別途コーディングする必要があるぞ。
CPUがBCD演算サポートしてなければ。
0028デフォルトの名無しさん
2009/10/11(日) 16:23:450029デフォルトの名無しさん
2009/10/11(日) 22:14:4310で割るより速度はだいぶ違うだろうね
除算をサポートしてるCPUならコード量はあんまし変わらないと思うけど
0030デフォルトの名無しさん
2009/10/15(木) 10:28:430031デフォルトの名無しさん
2009/10/17(土) 11:05:54ドラえもんの亜種かと思った
0032デフォルトの名無しさん
2010/06/09(水) 11:19:34復活の呪文とかをいじって、所持金額を変える奴がいるからじゃないの?その対策じゃね?
0033デフォルトの名無しさん
2010/06/09(水) 11:48:19ダメージ算出とかだと乗除が出てきそうだけど
ゲーム中での お金管理程度なら 加減算だけあれば目的に達するんじゃね?
実装の手間と有限なリソースとの鬩ぎ合いなんだろうな
0034デフォルトの名無しさん
2010/06/09(水) 12:11:33BCDで保存しておく場合、数値の増減の回数に等しい。
16進数で保存しておく場合、表示するフレーム数に等しい。
秒間30フレームなら、1秒表示すれば30回は呼び出される。
0035デフォルトの名無しさん
2010/10/25(月) 18:29:51文字フォントに変換するのが楽
■ このスレッドは過去ログ倉庫に格納されています