/* * Copyright 2008-2010, François Revol, revol@free.fr. All rights reserved. * Copyright 2004-2007, Axel Dörfler, axeld@pinc-software.de. * Distributed under the terms of the MIT License. */ #include "nextrom.h" #include "video.h" #include "mmu.h" //#include "images.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #define TRACE_VIDEO #ifdef TRACE_VIDEO # define TRACE(x) dprintf x #else # define TRACE(x) ; #endif // #pragma mark - bool video_mode_hook(Menu *menu, MenuItem *item) { return true; } Menu * video_mode_menu() { Menu *menu = new(nothrow) Menu(CHOICE_MENU, "Select Video Mode"); MenuItem *item; menu->AddItem(item = new(nothrow) MenuItem("Default")); item->SetMarked(true); item->Select(true); item->SetHelpText("The Default video mode is the one currently configured " "in the system. If there is no mode configured yet, a viable mode will " "be chosen automatically."); //menu->AddItem(new(nothrow) MenuItem("Standard VGA")); menu->AddSeparatorItem(); menu->AddItem(item = new(nothrow) MenuItem("Return to main menu")); item->SetType(MENU_ITEM_NO_CHOICE); return menu; } void platform_blit4(addr_t frameBuffer, const uint8 *data, uint16 width, uint16 height, uint16 imageWidth, uint16 left, uint16 top) { if (!data) return; } extern "C" void platform_set_palette(const uint8 *palette) { } // #pragma mark - extern "C" void platform_switch_to_logo(void) { // in debug mode, we'll never show the logo if ((platform_boot_options() & BOOT_OPTION_DEBUG_OUTPUT) != 0) return; // I believe we should use mg->km_coni.fb_num but turbo color has 0 here !? char fb_num = KM_CON_FRAMEBUFFER; gKernelArgs.frame_buffer.width = mg->km_coni.dspy_w; gKernelArgs.frame_buffer.height = mg->km_coni.dspy_h; gKernelArgs.frame_buffer.bytes_per_row = mg->km_coni.bytes_per_scanline; // we fake 2bpp as 4bpp for simplicity gKernelArgs.frame_buffer.depth = std::max(4, 32 / mg->km_coni.pixels_per_word); gKernelArgs.frame_buffer.physical_buffer.size = mg->km_coni.map_addr[fb_num].size; gKernelArgs.frame_buffer.physical_buffer.start = mg->km_coni.map_addr[fb_num].phys_addr; //TODO: pass a custom color_space in the KMessage? gKernelArgs.frame_buffer.enabled = true; video_display_splash(mg->km_coni.map_addr[fb_num].virt_addr); } extern "C" void platform_switch_to_text_mode(void) { if (!gKernelArgs.frame_buffer.enabled) { return; } gKernelArgs.frame_buffer.enabled = false; } extern "C" status_t platform_init_video(void) { gKernelArgs.frame_buffer.enabled = false; return B_OK; }