mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-04 01:46:42 +00:00
DS: Get the virtual keyboard working with the mirrored subscreen
This commit is contained in:
parent
224d626e65
commit
8c01baaaff
@ -185,7 +185,9 @@ void OSystem_DS::initGraphics() {
|
||||
_overlay.create(256, 192, true, 2, false, 0, false);
|
||||
|
||||
_keyboard = new DS::Keyboard(_eventManager->getEventDispatcher());
|
||||
#ifndef DISABLE_TEXT_CONSOLE
|
||||
_keyboard->init(0, 34, 1, false);
|
||||
#endif
|
||||
}
|
||||
|
||||
void OSystem_DS::setMainScreen(int32 x, int32 y, int32 sx, int32 sy) {
|
||||
@ -211,9 +213,23 @@ void OSystem_DS::setFeatureState(Feature f, bool enable) {
|
||||
} else if (f == kFeatureVirtualKeyboard) {
|
||||
if (enable) {
|
||||
setSwapLCDs(true);
|
||||
#ifdef DISABLE_TEXT_CONSOLE
|
||||
if (_subScreenActive) {
|
||||
_subScreenActive = false;
|
||||
_subScreen.hide();
|
||||
_subScreen.reset();
|
||||
_keyboard->init(0, 34, 1, false);
|
||||
}
|
||||
#endif
|
||||
_keyboard->show();
|
||||
} else {
|
||||
_keyboard->hide();
|
||||
#ifdef DISABLE_TEXT_CONSOLE
|
||||
_subScreen.reset();
|
||||
_subScreen.show();
|
||||
_subScreenActive = true;
|
||||
_paletteDirty = true;
|
||||
#endif
|
||||
setSwapLCDs(false);
|
||||
}
|
||||
}
|
||||
@ -323,7 +339,8 @@ void OSystem_DS::initSize(uint width, uint height, const Graphics::PixelFormat *
|
||||
if (_framebuffer.getRequiredVRAM(width, height, isRGB, false) > 0x20000) {
|
||||
_subScreen.init(&_framebuffer);
|
||||
} else {
|
||||
_subScreen.reset();
|
||||
if (_subScreenActive)
|
||||
_subScreen.reset();
|
||||
_subScreen.init(&_framebuffer, 3, true, 0, false);
|
||||
}
|
||||
#endif
|
||||
@ -399,14 +416,16 @@ void OSystem_DS::updateScreen() {
|
||||
if (_paletteDirty) {
|
||||
dmaCopyHalfWords(3, _palette, BG_PALETTE, 256 * 2);
|
||||
#ifdef DISABLE_TEXT_CONSOLE
|
||||
dmaCopyHalfWords(3, _palette, BG_PALETTE_SUB, 256 * 2);
|
||||
if (_subScreenActive)
|
||||
dmaCopyHalfWords(3, _palette, BG_PALETTE_SUB, 256 * 2);
|
||||
#endif
|
||||
_paletteDirty = false;
|
||||
}
|
||||
|
||||
_framebuffer.update();
|
||||
#ifdef DISABLE_TEXT_CONSOLE
|
||||
_subScreen.update();
|
||||
if (_subScreenActive)
|
||||
_subScreen.update();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
@ -50,7 +50,7 @@ OSystem_DS::OSystem_DS()
|
||||
_paletteDirty(false), _cursorDirty(false),
|
||||
_pfCLUT8(Graphics::PixelFormat::createFormatCLUT8()),
|
||||
_pfABGR1555(Graphics::PixelFormat(2, 5, 5, 5, 1, 0, 5, 10, 15)),
|
||||
_callbackTimer(10), _currentTimeMillis(0)
|
||||
_callbackTimer(10), _currentTimeMillis(0), _subScreenActive(true)
|
||||
{
|
||||
_instance = this;
|
||||
|
||||
|
@ -44,6 +44,7 @@ protected:
|
||||
#ifdef DISABLE_TEXT_CONSOLE
|
||||
DS::Background _subScreen;
|
||||
#endif
|
||||
bool _subScreenActive;
|
||||
Graphics::Surface _cursor;
|
||||
int _graphicsMode, _stretchMode;
|
||||
bool _paletteDirty, _cursorDirty;
|
||||
|
Loading…
x
Reference in New Issue
Block a user