マイコンソフト 悩み事相談室 4 (855レス)
上下前次1-新
1(3): 2020/09/11(金)09:38 ID:cJDnlvMz(1) AAS
AA省
836(1): 04/26(土)00:56 ID:yESOsTQU(1) AAS
ドットのx、yの座標からメモリアドレスへの変換は商と余りを求めるのと基本同じだから、そこを書いた本は無いかごく初期のマイコン雑誌になるんじゃないかな
それにグラフィックの描画としては本当に入り口に過ぎないので、さっさと身に着けるかあるものを流用する程度の対象だろうな
ありものレベルではArduino系で定番のAdafruit_GFX_LibraryにはLINEやBOXの関数があって、それを読んでみるのが手だね
そこから先の基礎から応用までとなると、DDAデジタル微分解析とかアフィン変換とかを調べてみるようか
837(1): 04/26(土)09:19 ID:OFYiUw+8(1) AAS
>>835
仮想画面と言うか、GRAMという画面専用メモリがあるし
普通のRAMと共用になってるのもある
変換関係なくそこのRAMを弄ればそのまま画面に反映される
DirectXとかだと直接いじらないようにして、常に裏画面ようのRAM用意して
そこを書き換えさせて、定期的に(60fps)裏と表を入れ替えてる
そうしてちらつきがは発生しないようにしてる
グラフィックプログラミング関係の本見たり、ゲームプログラミング関係の本でだいたいわかるだろう
838: 04/26(土)10:34 ID:BW7UbBAB(1/2) AAS
>>836
ありがとうございます
「メモリーへの変換は単なる割り算」は、よく分かりました。
DDAの本を探してみます。
839(3): 04/26(土)10:42 ID:BW7UbBAB(2/2) AAS
>>837
ありがとうございます
なるほど、チラつき防止に2画面使用は頭いいですね。
そうするとABの2画面のうち、Aに書いたら
次のサイクルでBにも同じものを書かないといけませんから
常時2画面にアクセスするということですね。
書き込んだRAMをが出力画面に転送もしないといけないので
大忙しな感じがします。
どうもありがとう。
840(1): 04/26(土)11:22 ID:D8A5iJV0(1) AAS
「チラつき」がとということは
最低でも24fps以上かな
一般的に
普通のマイコンのCPUの速度ではむりがある
SPI・I2CなどのI/Oじゃの転送速度で面
HDMIやMIPI/eDPなどの液晶・OLEDインターフェースなど
さすがに本とかないでしょ・・・
Pi ZeroなどのHDMI+LinuxマイコンやWindowsでやったしたほうが幸せ
841: 04/26(土)11:52 ID:jpRD0UpA(1) AAS
本とかあるのか・・・
というかフルドットで座標で扱うようにデバイスも作るので
そんな複雑なメモリ構造にしないと思うぞ?
ユーザーアプリ
↓
GDI
↓
グラフィックのデバドラ
みたいなレイヤー構造にするけどな。
842: 04/26(土)12:25 ID:/4qlUwxb(1) AAS
>>835
pxpy直線のならブレゼンハムかな
843: 04/26(土)14:36 ID:gfUVQbTB(1) AAS
>>839
常時2画面アクセスは要らないw
裏でせっせと描いていって、定期的に表に全部転送
そしてそのまま続けて裏にせっせと描くだけだから
描画プログラムとしては延々と裏にしか描いていないことになる
844: 04/26(土)14:45 ID:Ey/Yh4sW(1/2) AAS
>>840
この60fpsでの書き換え技は8bitCPU時代から普通に使われてきた技だよ
そもそもブラウン管が60fpsで動いてんだからそうなってる
845: 04/26(土)14:47 ID:Ey/Yh4sW(2/2) AAS
外部リンク[html]:dixq.net
こういう感じ
参考にしてみて
846: 04/26(土)15:15 ID:tLCkpQ5j(1) AAS
>>839
>常時2画面にアクセス
常時片側に描く
847: 04/26(土)19:17 ID:HKSZtoEA(1) AAS
PCや今どきのゲーム機だとバッファを2画面分用意するのが定石だけど
マイコンの場合はメモリが貴重なこともあってバッファが数ライン分しかないというケースも少なくないかな
特に液晶パネル側にVRAMが搭載されている場合はマイコン側のバッファはレンダリング用に画面の一部分のみでも成立するし
もちろんそれなりの液晶をつなげてリッチなGUIを実装する場合は2画面分のバッファを用意することもあるけど
>>839
>書き込んだRAMをが出力画面に転送もしないといけないので
>大忙しな感じがします。
その手の転送は十中八九DMAコントローラによって行われるので、CPUはDMAコントローラへ転送に必要な指示を出すだけかと
LCDコントローラが搭載されているマイコンになるとLCDコントローラがそれらの処理を代行してくれることもあります
848: 05/03(土)14:28 ID:2MPQRyKv(1/2) AAS
ラベル ニモニック コメント
--------+-------+---------------+-----------------------
ORG 8000H ; 8000H より 始めよ
START: LD A,12 ; Aレジスタ←12
ADD A,34 ; Aレジに34を足す
LD (8010H),A ; (8010H)←Aレジスタ
RET ; 終わり(モニタへ戻る)
8010Hにカッコが付いているのはなぜでしょうか。
Aレジスタの値を8010Hにいれるだけならカッコ無しでもいいのでは?
間接指定ですかね
849: 05/03(土)16:28 ID:jDXUMwmC(1) AAS
そうだね
850: 05/03(土)18:48 ID:0uTNNTRS(1) AAS
LD HL,A ←bit幅が可笑しい
LD (HL),A ←たぶん間違いにくい
851: 05/03(土)19:32 ID:2MPQRyKv(2/2) AAS
確かにHL=16bit幅ですね。
(HL)だと下8bitにcast??
852: 05/03(土)22:59 ID:MirFkrx0(1) AAS
>>835あたりの話
・故Cマガジン等のバックナンバーをひっくり返す
・LVGL等の類似の機能を有する実装を解析する
くらいしか思いつかないけどパラダイムの差は自分で埋めるしかないだろうな
あと組み込みで仮想座標を使う実装はあまり聞かない気がする
853: 05/04(日)11:08 ID:V9EjCmnp(1/2) AAS
>仮想80*80に割り当てられた物理メモリ80byteのbitに点
>変換に名前
ただの割り算と余りだよ
854: 05/04(日)11:08 ID:V9EjCmnp(2/2) AAS
あと何で80*80が80byteだと思ったの
855: 05/04(日)23:30 ID:4UWHrtc1(1) AAS
Windows95初期くらいまではCPUでグラフィックレンダリングまで行うゲームも少なくなかった
当時の実装技術はマイコンにマルチメディア機能を実装するのに有用だと思うけど
それらの情報は散逸してしまっていて知れる機会は多くない
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 1.350s*