From 9a08a7ea4a2b4e36b753367717ddf96f9aaa15ed Mon Sep 17 00:00:00 2001 From: Nebuleon Fumika Date: Fri, 29 Mar 2013 05:24:31 -0400 Subject: Make rendering a GUI background (256x192) more efficient. --- source/nds/draw.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) (limited to 'source') diff --git a/source/nds/draw.c b/source/nds/draw.c index 8693141..e33d0c6 100644 --- a/source/nds/draw.c +++ b/source/nds/draw.c @@ -1101,16 +1101,24 @@ void show_icon(void* screen, struct gui_iconlist* icon, u32 x, u32 y) dst = (unsigned short*)screen + y*NDS_SCREEN_WIDTH + x; if(NULL == src) return; //The icon may initialized failure - for(i= 0; i < icon->y; i++) - { - for(k= 0; k < icon->x; k++) + if (icon->x == NDS_SCREEN_WIDTH && icon->y == NDS_SCREEN_HEIGHT && x == 0 && y == 0) + { + // Don't support transparency for a background. + memcpy(dst, src, NDS_SCREEN_WIDTH * NDS_SCREEN_HEIGHT * sizeof(u16)); + } + else + { + for(i= 0; i < icon->y; i++) { - if(0x03E0 != *src) dst[k]= *src; - src++; - } + for(k= 0; k < icon->x; k++) + { + if(0x03E0 != *src) dst[k]= *src; + src++; + } - dst += NDS_SCREEN_WIDTH; - } + dst += NDS_SCREEN_WIDTH; + } + } } /*************************************************************/ -- cgit v1.2.3