問題タブ [8-bit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
colors - 8 ビットカラーを RGB 値に変換する
「反射シャドウ マップ」を使用して、ゲーム エンジンにグローバル イルミネーションを実装しています。RSM には色テクスチャがあります。メモリを節約します。24 ビット値を 8 ビット値にパックしています。Ok。私はそれを詰める方法を知っています。しかし、どうやって開梱するのですか?私は、255 色の 8 ビット パレットで 1D テクスチャを作成することを考えていました。私の8ビットカラーは、そのテクスチャのピクセルのインデックスになります。この種のテクスチャを生成する方法がわかりません。8 ビット値を RGB に変換する数学的な方法はありますか?
@edit 色の形式は次のとおりです。
RRR GGG BB
@edit2: そして、私は自分の色を次のように詰めています:
@edit3:
わかりました、これを行う方法を見つけたと思います。それが間違っているかどうか教えてください。
@edit4 それは間違っています...
c - 8ビットデバイスと通信するための32ビット整数のポータブルエンコーディング
nthol機能のない8ビットデバイスと通信する必要があります。プロトコルバッファライブラリを使用することもできません。
次のC関数は、実行されているアーキテクチャに関係なく同じ出力文字列を生成します(異なるエンディアン、異なるビット数)。
次の関数は、そのようなエンコードされた文字列を正しく読み取り、すべてのアーキテクチャで同じ結果を生成します。
8ビットプロセッサで32ビット整数が何らかの理由で正しく処理されない可能性はありますか?
java - RBG 24bit から RGB 8bit へのビットシフト
Java でビット シフトを使用して 3 つの数値を 1 バイトに格納するにはどうすればよいですか。つまり、最初の 3 ビットを R に、次の 3 ビットを G に、最後の 2 ビットを B に使用します。バイトですが、エンコードとデコードの例は素晴らしいでしょう。
ありがとうジェイク
編集:
R と G の値の範囲は 0 ~ 7、B は 0 ~ 3 です。
performance - 高速 8x8bit 乗算アセンブリ pic18
私は 2 つの 8 ビット数を乗算し、それらを 16 ビットの場所に格納して 255 より大きい結果を得ようとしています。これを達成する最速の方法は、シフトを使用することです。これは、rrcf 関数を介して実装し、bcf を使用して不要なキャリーをクリアしようとしました。
これがアイブが思いついたものです。すべてのコードにコメントを付けてみたので、私の思考プロセスを確認できます。私はPIC18とASMでのプログラミングの両方に一般的にかなり慣れていません。(うまくいけば)助けを提供するときは、そのことを覚えておいてください。MPLAB SIM を実行すると、カウンターが減少するだけです...?
これは、乗数の最後のビットが繰り返しテストされているためだと思います。これはゼロになるため、毎回追加命令をスキップします。BTFSC をビット 0 ~ 7 から段階的に移動するループの作成を手伝ってもらえますか? これが問題だと思いますが、コードがわかりません。私は本質的にmainを8回書くことができましたが、コードスペースを節約しようとしています
memory - 10 進数値を最下位および最上位バイトに分離する
私はいくつかの 65802 コードに取り組んでおり (聞かないでください:P)、16 ビット値を 2 つの 8 ビット バイトに分けてメモリに格納する必要があります。これについてどうすればいいですか?
編集:
また、類似した 2 つのバイトを取得して、それらを 1 つの 16 ビット値に結合するにはどうすればよいでしょうか?
編集:
明確にするために、インターネットで利用可能なソリューションの多くは、私が使用しているプログラミング言語 (MS-BASIC のバージョン) では不可能です。モジュロを取ることも、左シフトまたは右シフトもできません。上位バイトに 256 を掛けて下位バイトに加算することで、2 つのバイトをまとめることができることがわかりましたが、このプロセスを逆にするにはどうすればよいでしょうか。
optimization - 自己変更コードを生成する単純なプロセッサ上の高級言語用の最新のコンパイラはありますか?
キャッシュや分岐予測が登場する前の時代には、特定の種類の最適化のために自己変更コードを作成することが奨励されていない場合でも、比較的一般的でした。Amiga などの 8 ビットから初期の 32 ビットまでの時代に、アセンブラーで記述されたゲームやデモでおそらく最も一般的でした。
当時のコンパイラが自己修正アセンブラまたはマシンコードを発行したかどうかはわかりません。
私が疑問に思っているのは、それを行う現在/最新のコンパイラがあるかどうかです。明らかに、キャッシュを備えた強力なプロセッサでは役に立たないか、難しすぎます。
しかし、組み込みシステムで使用されるような非常に多くの単純なプロセッサについてはどうでしょうか? 自己変更コードは、単純な/8ビット/組み込みプロセッサ向けの最新のコンパイラによって実行可能な最適化戦略と見なされていますか?
「 Is there any self-improving compiler around? 」という同様のタイトルの質問がありますが 、同じ主題に関するものではないことに注意してください。
コンパイルするコードを改善するコンパイラではなく、それ自体を改善するコンパイラについて話していることに注意してください。
opengl - OpenGL - アニメーション/サイクル/回転パレット
古いプラズマ 8 ビット エフェクト アニメーションの OpenGL バージョンを DOS で作成しようとしましたが、行き詰まりました。ほとんどすべての OpenGL プログラムには、Win32 用のパレットを生成するためのものが含まれているので、古いプログラムにパレット アニメーションを適用するのはそれほど難しくないと思いました。
私の目的は、変化しないカラー インデックスと回転するパレットを持つテクスチャを生成することです。今週末、ウェブを掘り下げた後も、まだ修正できません。1 つのカラー インデックスでテクスチャを表示することさえできないので、その段階で何かが間違っています (機能する場合は、パレット サイクリング メカニズムを作成できます)。
PFD_TYPE_COLORINDEX を使用して強制的にパレット モードにし、glIndexi を使用してランダムなピクセルを描画できます。glDrawPixels と glReadPixels は遅く、後者はフレームバッファからピクセルを取得するときにそれほど正確ではないことを読みました(丸めエラーなどの結果として位置が不正確になるため)。
GL_COLOR_INDEX キーワードを試しました。私も試しました: glPixelTransferi(GL_MAP_COLOR, true); glPixelMapfv( GL_PIXEL_MAP_I_TO_R, ...); glTexImage2D...これまでに試したコードの一部(最新の変更):
初期部分:
更新/描画:
または、GL_COLOR_INDEX8_EXT と組み合わせて glColorTableEXT を使用する必要がありますか? テクスチャ パレットがサポートされていないことをどこかで読みましたか? Paletted Texture Extension について言及しているリンクを見つけました: http://www.cs.rit.edu/~ncs/Courses/570/UserGuide/OpenGLonWin-20.html
これは私が欲しいものです(ただし、OpenGLで):
http://www.codeforge.com/read/174459/PalAnimDemo.h__html
私は ES/Shader の実装を探しているわけではありません (私はただの初心者です ;))、DirectDraw の方が簡単かもしれませんが、OpenGL を試してみたいと思っています。
logic - 8ビット加算器の設計?2 つの 4 ビット加算器をリンクしますか?
4 ビット加算器の設計を作成しましたが、8 ビットが必要です。2 つの 4bit を作成し、AND ゲートを介して出力をリンクすることはできますか?
私の 4 ビット加算器: https://www.dropbox.com/s/ao60s6dgtrnhal3/4bit%20adder.PNG
assembly - 8 ビットおよび 16 ビット プロセッサは、2 つのレジスタを使用してより多くの RAM にアクセスするにはどうすればよいですか?
私を常に混乱させてきたのは、8 ビット コンピュータが 256 バイトを超える RAM にアクセスする方法です。2 つのレジスタを使用する必要があることはわかっていますが、これがアセンブリ コードでどのようになるかを示す例を教えてください。
お気に入り:
tiff - 16 ビット イメージを変換するオプション
16 ビット イメージを tiff 形式で開くと、黒いイメージとして開きます。16 ビットの tiff イメージは、プログラム ImageJ でのみ開きます。ただし、プレビューでは開きません。ImageJを開いて表示するよりも、解像度を低下させない簡単な方法でフォーマットを表示するためのオプションは何なのか疑問に思っています。8 ビット形式に変換する必要がありますが、形式が 16 ビットから 8 ビットに縮小されるとデータが失われませんか? また、tiff画像をjpegに変換しようと考えていたのですが、解像度が落ちてしまうのでしょうか?