hiraコメントする文字表示が出来たところで、基本中の基本、ファイル選択を実装してみた。使用頻度が高いものなので、汎用性を高く実装する必要がある。使いどころの一つに「テンプレート」がある。利用範囲が広がり、最近は、テンプレート無しではプログラムが作れなくなっている。・便利すぎて、Cでプログラムする気がおきなくなる。良いところは「型」に忠実である点がある。「より厳密な方法で実装」していない場合、細かいエラーが出て、先に進めない。この辺りは経験的な部分が大きいものの、反復する事で、考えなくても自然に厳密な書き方が行えるようになると思う。以降の構文を使っていない部分、そんなスケッチが氾濫している。(動けば良いという考え方は良くないと思う)※及第点を付けられるような、見本になるソースコードが少ないと思う。使い始め、エラーが出た時に、そのエラーの意味や解消法、どうしてエラーになるのかなど、意味不明が続くが、エラーが出なくなるまで、より簡単でシンプルな構造にして、エラーの原因を見極めると、より複雑な構造に対処できるようになる。ネットにあるサンプルプログラムは、ある程度参考になるが、コピーペーストだけでは限界がある、自分で考えて、実装する必要があると思う。利用したいところでもあるが、メモリーの少ないマイコンでは、それも使える場合と使えない場合があり、やはり、その場合は自分で何とかするしかない。独学で勉強するには限界があると思える、勉強会などに参加して、誰かに習うのが、やはり習得するには必要かと思える。※この辺り、ある程度Cなどでプログラムが組める人には大きなハードルなのかと思う。今回のファイラーは、SDカードの操作クラス(SDC)、グラフィックス描画クラス(RDR)の型が必要なので、テンプレートとなっている。}...};これらクラスは、参照のコピーを内部に置いておくので、コンストラクターで参照を渡す必要がある。render_);上記のように、型の定義が複雑なので、途中に反故があると、コンパイルは全く機能しない、その場合に出るエラーは「意味不明」な場合が多く、対処にはコツが必要となる場合が多い。「graphics::render」クラスは、ピクセルの型「uint16_t」、横幅、高さ、アスキーフォント、漢字フォントをテンプレートパラメーターとしている。コンストラクターでは、フレームバッファのアドレス、漢字フォントクラスの参照を渡す必要がある。「graphics::kfont」クラスは、フォントサイズと、フォントキャッシュの数をテンプレートパラメーターとしている。※ディレクトリーは青で表示される、又、左端に「/」を表示している、通常は右終端に表示すべきであるが、ディレクトリー名が長い場合に、画面の外に表示されてしまう為。上下スクロールはできるが、左右スクロール機能は無いので、画面に表示しきれない場合がある。操作はファミコンパッドで操作するようになっている、今後画面タッチでも操作出来るようにする予定。ctrl);}ファイラーの制御は、制御ビットで行うので、上記のようにファミコンパッドの操作をファイラーの制御ビットに変換している。-----漢字フォントのビットマップデータは、250K程あるので、現在は、SDカード上に置いて、キャッシュ機構を設けてあるのだが、RX65Nの場合、2Mバイトのプログラムフラッシュがあるので、そこに置いても良いと思い、rx-elf-objcopyを使い、「kfont16.bin」をオブジェクトに変換してアクセスしてみた。原因に思い当たる部分がなく、とりあえず、SDカード上に置くようにしてある。KIT-RX65N」の液晶は480×272サイズもある。これだけ大きいと、フォントもある程度の大きさが必要だ。以前は、128×64の白黒液晶用として、6×12、12×12のフォントを使っていたが、480×272の液晶には小さすぎなので、8×16、16×16のフォントを用意した。※8x12アスキーフォントは自分でデザインしたもの、12×12は東雲12。用意したのは、「東雲(しののめ)16」フォントで、フリーなビットマップフォントとして知名度が高い。BDF形式で配布されている為、組み込み系で使うには、何らかの加工が必要となる。ツールをインストールしなければならない為、ハードルが高いかもしれない。※「bmc」は基本、コマンドラインだが、「-pre」オプションを付けるとプレビュー表示できる。変換は以下のように行う。kfont.bin変換したバイナリーコードへのアクセスは以下のコードを使って行える。code;}※返った値は正規化されているので、16×16フォントなら32倍すれば、アドレスを得る事が出来る。※-1(0xffff)が返った場合は範囲外のコードアスキーフォントは、容量も大きく無いので、コード上に展開しているものの、漢字フォントは16ピクセルだと255Kもあるので、SDカード上に置き、キャッシュしながら描画するようにしている。EEPROM(32Mバイト)に置いておくのが良いだろう。コード体系を使うのは色々な意味で痛い。フォントをリニアに並べて、アクセスしやすい特性がある。コードを正規化して、簡単に目的のアドレスを計算出来る。広範囲に散っているので、難しい。並びにしてまとめたバイナリーファイルを用意してあり、アスキーフォントは、ソースコードに直接展開してある。漢字フォントは、テンプレートライブラリになっていて、「typedef」する必要がある。使う事になると思うが、ソフトの描画は簡単(速度を気にしなければ)なので、一応必要そうな物をまとめてある。kfont_);</uint16_t*></uint16_t,>RXマイコン・グラフィックス関係アスキーフォントは、ビットマップの実態が必要なので、必要なフォントのソースをリンクする必要がある。アスキーフォントも「東雲16」だが、プロポーショナル表示用に幅テーブルを用意してあり、それなりに表示出来る。-2」だけになっているが、無いよりは「マシ」だと思える。カラーで、スプライトや、BGなど、CPU(6502、1.7MHz)以外にも、かなり多くのハードウェアーをエミュレーションする必要があるので、正直、普通に動作するとは思っていなかったが、駄目元で、一応動作テストをしてみた。-----以前に、ESP32をやろうと思い、ソースコードのアーカイブを観ていたら、nesemuのコードがあり、興味を持った。環境で動作試験を行った。関係のコードで、ポーティングに不都合な部分を色々修正した。ソースはCなので、丸ごと持ってきて、追加してコンパイルが通るまでは直ぐ出来た、また、カラーテーブル付インデックスカラーを、RX65Nのフレームバッファにレンダリングする部分も一瞬で出来たが、動作するにはそこそこの時間が必要だった。その過程で、POSIXのファイル操作関数にバグがある事が判り、修正したら、直ぐに走る事が判った。※ファイルのシーク関数のステート判定に誤りがあった。前から判っていた事ではあるが、STLを使うと、非常に多くのメモリーを消費する。実装して、余分なメモリーをダイエットした。RX65Nは二つのメモリーブロックがある。一つは256K(0x00000000から始まる)、もう一つは384K(0x800000から始まる)、以前は、RX64Mなどと同等に最初のブロックをメインメモリにしていた。半の384Kを使うようにリンクローダのスクリプトを修正した。※この過程で、「start.s」のRAMクリアルーチンにバグがある事が判り修正した。次に、サウンドのバインドを行った。