メモリモジュールを取り込み、エディタ部を作成しました。
RUN 以外は実装済みです。
ここへ来てやっと2進LEDがちゃんと機能することを確認できました。
テストコードのみのチェックだけでしたので。
徐々にではありますが実機に近づいていってるのを感じてます。
エディタ部は akkera102 さんの GMC-4移植6 エントリーが凄く良くまとまってたので(汗)、
自分の書きなぐったまとまってない資料を見ずに、
エントリーの記述をそのままコードにしてしまいました(核爆)。
構造体の一部も参考にさせて頂きましたm(__)m
エディタ部のコードを抜粋するとこんな感じになってます。
大半の動作をモジュール関数・モジュール間の連絡で駆動するようにしてるので
見た目が NDS コードっぽくないです。
//モニタ用構造体 typedef struct{ u16 act; u8 key_buf[2]; u8 cur_addr; bool is_key_num; }MonitorStatus; 〜 //--------------------------------------------------------------------------------- void monitor_Editor(void) { //--------------------------------------------------------------------------------- u8 key; //isInputKey if(Key_IsKeyDown()){ key = Key_GetKeyValue(); //isNumberKey if( (key >= KEYPAD_0) && (key <= KEYPAD_F) ){ st_monitor.key_buf[0] = st_monitor.key_buf[1]; st_monitor.key_buf[1] = key; Outport_ShowNumLED(st_monitor.key_buf[1]); st_monitor.is_key_num = true; //isFunctionKey }else if(key == KEYPAD_A_SET){ st_monitor.cur_addr = ((st_monitor.key_buf[0] << 4) | st_monitor.key_buf[1]) & 0x7F; Outport_ShowBinLED(st_monitor.cur_addr); Outport_ShowNumLED(St_memory.ram[ st_monitor.cur_addr ]); st_monitor.is_key_num = false; }else if(key == KEYPAD_INCR){ if(st_monitor.is_key_num){ St_memory.ram[ st_monitor.cur_addr ] = st_monitor.key_buf[1]; } if(st_monitor.cur_addr < 0x7F){ st_monitor.cur_addr++; }else{ st_monitor.cur_addr = 0x00; } Outport_ShowBinLED(st_monitor.cur_addr); Outport_ShowNumLED(St_memory.ram[ st_monitor.cur_addr ]); st_monitor.is_key_num = false; }else if(key == KEYPAD_RUN){ st_monitor.is_key_num = false; }else if(key == KEYPAD_RESET){ st_monitor.cur_addr = 0x00; Outport_ShowBinLED(st_monitor.cur_addr); Outport_ShowNumLED(St_memory.ram[ st_monitor.cur_addr ]); st_monitor.is_key_num = false; } }; }
単体モジュールを1つにまとめだした辺りから
単体モジュールのみでのビルドを維持するのが困難だったり面倒だったりで、
またモジュールをメインモジュールに取り込んでる最中にも
モジュールによっては修正が発生したり、または追加実装が発生したりで、
完全なソースをダイアリーで晒すのが困難な状況でして。
少し前から進捗しか記述してなかったのはその為であり特に他意はありませんです。
本音を言えば、さっさと作業を進めて1日も早く動くようにしたい
という気持ちが強いからなのですが。(^^;