PC6001V for IS01 その8

安定稼働しているので公開しました。気付いているだけで以下のような制限事項があります。その6から読んで頂ければビルド出来るはず!

  • GUI(WIN32)部分の実装は移植していません。
  • ROMと一緒に、設定ファイル、フォントファイルもあらかじめ用意する必要があります。
  • スキャンラインの表示が出来ません。
  • ステータスバーの表示が出来ません。
  • 常に全画面表示です。
  • 仮想キーボードはありません。
  • レジュームには対応していません。

osdSDL.cpp(2/2)

////////////////////////////////////////////////////////////////
// イベントをキューにプッシュする
//
// 引数:    ev            イベントタイプ
//            ...            イベントタイプに応じた引数
// 返値:    bool        true:成功 false:失敗
////////////////////////////////////////////////////////////////
bool OSD_PushEvent( EventType ev, ... )
{
    __android_log_print(ANDROID_LOG_INFO, "SDL", "[OSD][OSD_PushEvent]");
    SDL_Event event;
    
    va_list args;
    va_start( args, ev );
    
    #if SDL_VERSION_ATLEAST(2,0,0)
    event.type = SDL_FIRSTEVENT;
    #else
///    event.type = SDL_NOEVENT;
    event.type = SDL_FIRSTEVENT;
    #endif
    
    switch( ev ){
    case EV_QUIT:
        event.type        = SDL_QUIT;
        break;
        
    case EV_RESTART:
        event.type        = UEV_RESTART;
        break;
        
    case EV_DOKOLOAD:
        event.type        = UEV_DOKOLOAD;
        break;
        
    case EV_REPLAY:
        event.type        = UEV_REPLAY;
        break;
        
    case EV_FPSUPDATE:
        event.type        = UEV_FPSUPDATE;
        event.user.code    = va_arg( args, int );
        break;
        
    case EV_DEBUGMODEBP:
        event.type        = UEV_DEBUGMODEBP;
        event.user.code    = va_arg( args, int );
        break;
        
    default:
        return false;
    }
    
    va_end( args );
    
    return SDL_PushEvent( &event ) ? false : true;
}



////////////////////////////////////////////////////////////////
// 色の名前取得
//
// 引数:    num            色コード
// 返値:    char *        色の名前文字列へのポインタ
////////////////////////////////////////////////////////////////
const char *OSD_ColorName( int num )
{
    __android_log_print(ANDROID_LOG_INFO, "SDL", "[OSD][OSD_ColorName]");
    static const char *JColorName[] = {
        "MODE1,2 黒(ボーダー)",
        "MODE1 Set1 緑",        "MODE1 Set1 深緑",        "MODE1 Set2 橙",        "MODE1 Set2 深橙",
        "MODE2 緑",                "MODE2 黄",                "MODE2 青",                "MODE2 赤",
        "MODE2 白",                "MODE2 シアン",            "MODE2 マゼンタ",        "MODE2 橙",
        "MODE3 Set1 緑",        "MODE3 Set1 黄",        "MODE3 Set1 青",        "MODE3 Set1 赤",
        "MODE3 Set2 白",        "MODE3 Set2 シアン",    "MODE3 Set2 マゼンタ",    "MODE3 Set2 橙",
        "MODE4 Set1 深緑",        "MODE4 Set1 緑",        "MODE4 Set2 黒",        "MODE4 Set2 白",
        "MODE4 Set1 にじみ 赤",        "MODE4 Set1 にじみ 青",        "MODE4 Set1 にじみ 桃",        "MODE4 Set1 にじみ 緑",
        "MODE4 Set1 にじみ 明赤",    "MODE4 Set1 にじみ 暗赤",    "MODE4 Set1 にじみ 明青",    "MODE4 Set1 にじみ 暗青",
        "MODE4 Set1 にじみ 明桃",    "MODE4 Set1 にじみ 暗桃",    "MODE4 Set1 にじみ 明緑",    "MODE4 Set1 にじみ 暗緑",
        "MODE4 Set2 にじみ 赤",        "MODE4 Set2 にじみ 青",        "MODE4 Set2 にじみ 桃",        "MODE4 Set2 にじみ 緑",
        "MODE4 Set2 にじみ 明赤",    "MODE4 Set2 にじみ 暗赤",    "MODE4 Set2 にじみ 明青",    "MODE4 Set2 にじみ 暗青",
        "MODE4 Set2 にじみ 明桃",    "MODE4 Set2 にじみ 暗桃",    "MODE4 Set2 にじみ 明緑",    "MODE4 Set2 にじみ 暗緑",
        "mk2~ 透明(黒)",        "mk2~ 橙",                "mk2~ 青緑",            "mk2~ 黄緑",
        "mk2~ 青紫",            "mk2~ 赤紫",            "mk2~ 空色",            "mk2~ 灰色",
        "mk2~ 黒",                "mk2~ 赤",                "mk2~ 緑",                "mk2~ 黄",
        "mk2~ 青",                "mk2~ マゼンタ",        "mk2~ シアン",            "mk2~ 白"
    };
    
    if( num < 0 || num >= COUNTOF( JColorName ) ) return NULL;
    else                                          return JColorName[num];

}


////////////////////////////////////////////////////////////////
// キーの名前取得
//
// 引数:    sym            仮想キーコード
// 返値:    char *        キー名前文字列へのポインタ
////////////////////////////////////////////////////////////////
const char *OSD_KeyName( PCKEYsym sym )
{
    __android_log_print(ANDROID_LOG_INFO, "SDL", "[OSD][OSD_KeyName]");
    static const PCKeyName kname[] = {
        { KVC_1,            "1" },
        { KVC_2,            "2" },
        { KVC_3,            "3" },
        { KVC_4,            "4" },
        { KVC_5,            "5" },
        { KVC_6,            "6" },
        { KVC_7,            "7" },
        { KVC_8,            "8" },
        { KVC_9,            "9" },
        { KVC_0,            "0" },
        
        { KVC_A,            "A" },
        { KVC_B,            "B" },
        { KVC_C,            "C" },
        { KVC_D,            "D" },
        { KVC_E,            "E" },
        { KVC_F,            "F" },
        { KVC_G,            "G" },
        { KVC_H,            "H" },
        { KVC_I,            "I" },
        { KVC_J,            "J" },
        { KVC_K,            "K" },
        { KVC_L,            "L" },
        { KVC_M,            "M" },
        { KVC_N,            "N" },
        { KVC_O,            "O" },
        { KVC_P,            "P" },
        { KVC_Q,            "Q" },
        { KVC_R,            "R" },
        { KVC_S,            "S" },
        { KVC_T,            "T" },
        { KVC_U,            "U" },
        { KVC_V,            "V" },
        { KVC_W,            "W" },
        { KVC_X,            "X" },
        { KVC_Y,            "Y" },
        { KVC_Z,            "Z" },
        
        { KVC_F1,            "F1" },
        { KVC_F2,            "F2" },
        { KVC_F3,            "F3" },
        { KVC_F4,            "F4" },
        { KVC_F5,            "F5" },
        { KVC_F6,            "F6" },
        { KVC_F7,            "F7" },
        { KVC_F8,            "F8" },
        { KVC_F9,            "F9" },
        { KVC_F10,            "F10" },
        { KVC_F11,            "F11" },
        { KVC_F12,            "F12" },
        
        { KVC_MINUS,        "-" },
        { KVC_CARET,        "^" },
        { KVC_BACKSPACE,    "BackSpace" },
        { KVC_AT,            "@" },
        { KVC_LBRACKET,        "[" },
        { KVC_SEMICOLON,    ";" },
        { KVC_COLON,        ":" },
        { KVC_COMMA,        "," },
        { KVC_PERIOD,        "." },
        { KVC_SLASH,        "/" },
        { KVC_SPACE,        "Space" },
        
        { KVC_ESC,            "ESC" },
        { KVC_HANZEN,        "半角/全角" },
        { KVC_TAB,            "Tab" },
        { KVC_CAPSLOCK,        "CapsLock" },
        { KVC_ENTER,        "Enter" },
        { KVC_LCTRL,        "L-Ctrl" },
        { KVC_RCTRL,        "R-Ctrl" },
        { KVC_LSHIFT,        "L-Shift" },
        { KVC_RSHIFT,        "R-Shift" },
        { KVC_LALT,            "L-Alt" },
        { KVC_RALT,            "R-Alt" },
        { KVC_PRINT,        "PrintScreen" },
        { KVC_SCROLLLOCK,    "ScrollLock" },
        { KVC_PAUSE,        "Pause" },
        { KVC_INSERT,        "Insert" },
        { KVC_DELETE,        "Delete" },
        { KVC_END,            "End" },
        { KVC_HOME,            "Home" },
        { KVC_PAGEUP,        "PageUp" },
        { KVC_PAGEDOWN,        "PageDown" },
        
        { KVC_UP,            "↑" },
        { KVC_DOWN,            "↓" },
        { KVC_LEFT,            "←" },
        { KVC_RIGHT,        "→" },
        
        { KVC_P0,            "0(テンキー)" },
        { KVC_P1,            "1(テンキー)" },
        { KVC_P2,            "2(テンキー)" },
        { KVC_P3,            "3(テンキー)" },
        { KVC_P4,            "4(テンキー)" },
        { KVC_P5,            "5(テンキー)" },
        { KVC_P6,            "6(テンキー)" },
        { KVC_P7,            "7(テンキー)" },
        { KVC_P8,            "8(テンキー)" },
        { KVC_P9,            "9(テンキー)" },
        { KVC_NUMLOCK,        "NumLock" },
        { KVC_P_PLUS,        "+(テンキー)" },
        { KVC_P_MINUS,        "-(テンキー)" },
        { KVC_P_MULTIPLY,    "*(テンキー)" },
        { KVC_P_DIVIDE,        "/(テンキー)" },
        { KVC_P_PERIOD,        ".(テンキー)" },
        { KVC_P_ENTER,        "Enter(テンキー)" },
        
        // 日本語キーボードのみ
        { KVC_YEN,            "\\" },
        { KVC_RBRACKET,        "]" },
        { KVC_UNDERSCORE,    "_" },
        { KVC_MUHENKAN,        "無変換" },
        { KVC_HENKAN,        "変換" },
        { KVC_HIRAGANA,        "ひらがな" },
        
        // 英語キーボードのみ
        { KVE_BACKSLASH,    "BackSlash" },
        
        // 追加キー
        { KVX_RMETA,        "L-Windows" },
        { KVX_LMETA,        "R-Windows" },
        { KVX_MENU,            "Menu" }
    };
    
    const char *str = NULL;
    for( int i=0; i<(int)(sizeof(kname)/sizeof(PCKeyName)); i++ ){
        if( kname[i].PCKey == sym ){
            str = kname[i].Name;
            break;
        }
    }
    return str;
}


////////////////////////////////////////////////////////////////
// フォントファイル作成
//
// 引数:    hfile        半角フォントファイルパス
//            zfile        全角フォントファイルパス
//            size        文字サイズ(半角文字幅ピクセル数)
// 返値:    bool        true:作成成功 false:作成失敗
////////////////////////////////////////////////////////////////
bool OSD_CreateFont( char *hfile, char *zfile, int size )
{
    __android_log_print(ANDROID_LOG_INFO, "SDL", "[OSD][OSD_CreateFont]");
    return false;
}


///////////////////////////////////////////////////////////
// ポップアップメニュー表示
///////////////////////////////////////////////////////////
void EL6::ShowPopupMenu( int x, int y )
{
    __android_log_print(ANDROID_LOG_INFO, "SDL", "EL6::ShowPopupMenu");
	return;
}