aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/ds/arm9/source
diff options
context:
space:
mode:
authorBertrand Augereau2007-06-18 07:06:24 +0000
committerBertrand Augereau2007-06-18 07:06:24 +0000
commit1e048c1de6c68a9900ed5fa6de7852652317e74e (patch)
tree87c539b2e6f76872f5b5c4fc62c9bbb8f04bb089 /backends/platform/ds/arm9/source
parentf0581bab4a4b1b4102a7fbdd4a3d54d4397e00e9 (diff)
downloadscummvm-rg350-1e048c1de6c68a9900ed5fa6de7852652317e74e.tar.gz
scummvm-rg350-1e048c1de6c68a9900ed5fa6de7852652317e74e.tar.bz2
scummvm-rg350-1e048c1de6c68a9900ed5fa6de7852652317e74e.zip
NDS : Suppressed unneccessary complications regarding the backbuffer when CPU-scaled, basically it has the same stride than the regular one (512b) so most code doesn't have to change
svn-id: r27517
Diffstat (limited to 'backends/platform/ds/arm9/source')
-rw-r--r--backends/platform/ds/arm9/source/dsmain.cpp55
-rw-r--r--backends/platform/ds/arm9/source/osystem_ds.cpp13
2 files changed, 17 insertions, 51 deletions
diff --git a/backends/platform/ds/arm9/source/dsmain.cpp b/backends/platform/ds/arm9/source/dsmain.cpp
index 45f0a16deb..860aa41828 100644
--- a/backends/platform/ds/arm9/source/dsmain.cpp
+++ b/backends/platform/ds/arm9/source/dsmain.cpp
@@ -333,49 +333,25 @@ void initSprites() {
void saveGameBackBuffer() {
#ifdef DISABLE_SCUMM
if (savedBuffer == NULL) savedBuffer = new u8[gameWidth * gameHeight];
- if(isCpuScalerEnabled())
- {
- memcpy(savedBuffer, get8BitBackBuffer(), gameWidth * gameHeight);
- }
- else
- {
- for (int r = 0; r < gameHeight; r++) {
- memcpy(savedBuffer + (r * gameWidth), ((u8 *) (get8BitBackBuffer())) + (r * 512), gameWidth);
- }
- }
+ for (int r = 0; r < gameHeight; r++) {
+ memcpy(savedBuffer + (r * gameWidth), ((u8 *) (get8BitBackBuffer())) + (r * 512), gameWidth);
#endif
}
void restoreGameBackBuffer() {
#ifdef DISABLE_SCUMM
if (savedBuffer) {
- if(isCpuScalerEnabled())
- {
- memcpy(get8BitBackBuffer(), savedBuffer, gameWidth * gameHeight);
- // TODO Synchronize with framebuffer if necessary
- }
- else
- {
- for (int r = 0; r < gameHeight; r++) {
- memcpy(((u8 *) (BG_GFX_SUB)) + (r * 512), savedBuffer + (r * gameWidth), gameWidth);
- memcpy(((u8 *) (get8BitBackBuffer())) + (r * 512), savedBuffer + (r * gameWidth), gameWidth);
- }
- }
+ for (int r = 0; r < gameHeight; r++) {
+ memcpy(((u8 *) (BG_GFX_SUB)) + (r * 512), savedBuffer + (r * gameWidth), gameWidth);
+ memcpy(((u8 *) (get8BitBackBuffer())) + (r * 512), savedBuffer + (r * gameWidth), gameWidth);
+ }
delete savedBuffer;
savedBuffer = NULL;
}
#else
- if(isCpuScalerEnabled())
- {
- memset(get8BitBackBuffer(), 0, 320 * 200);
- // TODO Synchronize with framebuffer if necessary
- }
- else
- {
- memset(get8BitBackBuffer(), 0, 512 * 256);
- memset(BG_GFX_SUB, 0, 512 * 256);
- }
+ memset(get8BitBackBuffer(), 0, 512 * 256);
+ memset(BG_GFX_SUB, 0, 512 * 256);
if (Scumm::g_scumm) {
Scumm::g_scumm->markRectAsDirty(Scumm::kMainVirtScreen, 0, gameWidth - 1, 0, gameHeight - 1, 1);
Scumm::g_scumm->markRectAsDirty(Scumm::kTextVirtScreen, 0, gameWidth - 1, 0, gameHeight - 1, 1);
@@ -1019,18 +995,9 @@ void setKeyboardEnable(bool en) {
// the same.
u16* buffer = get8BitBackBuffer();
- if(isCpuScalerEnabled())
- {
- for (int y = 0; y < gameHeight; ++y)
- for (int x = 0; x < gameWidth / 2; ++x)
- BG_GFX_SUB[y*256 + x] = buffer[y*gameWidth/2 + x];
- }
- else
- {
- for (int r = 0; r < (512 * 256) >> 1; r++) {
- BG_GFX_SUB[r] = buffer[r];
- }
- }
+ for (int r = 0; r < (512 * 256) >> 1; r++)
+ BG_GFX_SUB[r] = buffer[r];
+
SUB_DISPLAY_CR &= ~DISPLAY_BG1_ACTIVE; // Turn off keyboard layer
SUB_DISPLAY_CR |= DISPLAY_BG3_ACTIVE; // Turn on game layer
} else {
diff --git a/backends/platform/ds/arm9/source/osystem_ds.cpp b/backends/platform/ds/arm9/source/osystem_ds.cpp
index 43fd629a2f..a804369b26 100644
--- a/backends/platform/ds/arm9/source/osystem_ds.cpp
+++ b/backends/platform/ds/arm9/source/osystem_ds.cpp
@@ -173,8 +173,8 @@ void OSystem_DS::copyRectToScreen(const byte *buf, int pitch, int x, int y, int
u16* src = (u16 *) buf;
if (DS::getKeyboardEnable()) {
-
- for (int dy = y; dy < y + h; dy++) {
+ for (int dy = y; dy < y + h; dy++)
+ {
u16* dest = bg + (dy << 8) + (x >> 1);
DC_FlushRange(src, w << 1);
@@ -185,7 +185,8 @@ void OSystem_DS::copyRectToScreen(const byte *buf, int pitch, int x, int y, int
}
} else {
- for (int dy = y; dy < y + h; dy++) {
+ for (int dy = y; dy < y + h; dy++)
+ {
u16* dest1 = bg + (dy << 8) + (x >> 1);
u16* dest2 = bgSub + (dy << 8) + (x >> 1);
@@ -478,16 +479,14 @@ bool OSystem_DS::grabRawScreen(Graphics::Surface* surf) {
// Ensure we copy using 16 bit quantities due to limitation of VRAM addressing
- size_t imageStrideInBytes = DS::isCpuScalerEnabled() ? DS::getGameWidth() : 512;
- size_t imageStrideInWords = imageStrideInBytes / 2;
u16* image = (u16 *) DS::get8BitBackBuffer();
for (int y = 0; y < DS::getGameHeight(); y++)
{
- DC_FlushRange(image + (y * imageStrideInWords), DS::getGameWidth());
+ DC_FlushRange(image + (y << 8), DS::getGameWidth());
for (int x = 0; x < DS::getGameWidth() >> 1; x++)
{
- *(((u16 *) (surf->pixels)) + y * (DS::getGameWidth() >> 1) + x) = image[y * imageStrideInWords + x];
+ *(((u16 *) (surf->pixels)) + y * (DS::getGameWidth() >> 1) + x) = image[y << 8 + x];
}
}