Revert "ResourceMgr refactoring for performance."
authorBum-Seung Cho <bumseung.cho@samsung.com>
Wed, 21 Aug 2013 06:32:40 +0000 (06:32 +0000)
committerGerrit Code Review <gerrit@gerrit.vlan144.tizendev.org>
Wed, 21 Aug 2013 06:32:46 +0000 (06:32 +0000)
This reverts commit 0418771f9167f5f47cfc3719250fcf7dd06a000f.

Change-Id: I5142016ceedcf35ba056d1615824d9dcae113127

src/ui/FUi_ResourceManager.cpp
src/ui/inc/FUi_ResourceConfigLoader.h
src/ui/inc/FUi_ResourceConfigMacro.h
src/ui/inc/FUi_ResourceManager.h
src/ui/inc/FUi_ResourceMap.h
src/ui/inc/FUi_ResourceMapContainer.h
src/ui/resource/FUi_ResourceMapContainer.cpp

index 4b80330..061eeaf 100755 (executable)
@@ -22,7 +22,6 @@
 #include <FBaseColIMap.h>
 #include <FBaseColArrayListT.h>
 #include <FBaseSysLog.h>
-#include <FBaseUtilStringTokenizer.h>
 #include <FIoDirectory.h>
 #include <FIoFile.h>
 #include <FGrpBitmap.h>
 #include "FUi_ResourceConfigLoader.h"
 #include "FUi_ResourceConfigParser.h"
 #include "FUi_ResourceMapContainer.h"
-#include "FUi_ResourceConfigTypes.h"
 
 using namespace Tizen::App;
 using namespace Tizen::Base;
 using namespace Tizen::Base::Collection;
-using namespace Tizen::Base::Utility;
 using namespace Tizen::Io;
 using namespace Tizen::Graphics;
 using namespace Tizen::Media;
@@ -95,58 +92,6 @@ public:
        }
 };
 
-class _ResourceConfigInitiator
-{
-public:
-       _ResourceConfigInitiator(void)
-       {
-       }
-       ~_ResourceConfigInitiator(void)
-       {
-       }
-private:
-       Tizen::Ui::_Resource::_ACCESSIBILITY __ACESSIBILITY;
-       Tizen::Ui::_Resource::_BASIC __BASIC;
-       Tizen::Ui::_Resource::_BUTTON __BUTTON;
-       Tizen::Ui::_Resource::_CHECKBUTTON __CHECKBUTTON;
-       Tizen::Ui::_Resource::_COLORPICKER __COLORPICKER;
-       Tizen::Ui::_Resource::_CONTEXTMENU __CONTEXTMENU;
-       Tizen::Ui::_Resource::_DATETIMEBAR __DATETIMEBAR;
-       Tizen::Ui::_Resource::_DATETIMEPICKER __DATETIMEPICKER;
-       Tizen::Ui::_Resource::_DIMMINGLAYER __DIMMINGLAYER;
-       Tizen::Ui::_Resource::_EDIT __EDIT;
-       Tizen::Ui::_Resource::_EDITDATE __EDITDATE;
-       Tizen::Ui::_Resource::_EDITTIME __EDITTIME;
-       Tizen::Ui::_Resource::_FASTSCROLL __FASTSCROLL;
-       Tizen::Ui::_Resource::_FOCUSUI __FOCUSUI;
-       Tizen::Ui::_Resource::_FOOTER __FOOTER;
-       Tizen::Ui::_Resource::_FORM __FORM;
-       Tizen::Ui::_Resource::_GALLERY __GALLERY;
-       Tizen::Ui::_Resource::_GROUPCONTAINER __GROUPCONTAINER;
-       Tizen::Ui::_Resource::_HEADER __HEADER;
-       Tizen::Ui::_Resource::_ICONLIST __ICONLIST;
-       Tizen::Ui::_Resource::_INPUTPAD __INPUTPAD;
-       Tizen::Ui::_Resource::_LABEL __LABEL;
-       Tizen::Ui::_Resource::_LIST __LIST;
-       Tizen::Ui::_Resource::_LISTVIEW __LISTVIEW;
-       Tizen::Ui::_Resource::_APPWIDGET __APPWIDGET;
-       Tizen::Ui::_Resource::_MESSAGEBOX __MESSAGEBOX;
-       Tizen::Ui::_Resource::_OPTIONMENU __OPTIONMENU;
-       Tizen::Ui::_Resource::_OVERLAYPANEL __OVERLAYPANEL;
-       Tizen::Ui::_Resource::_PANEL __PANEL;
-       Tizen::Ui::_Resource::_POPUP __POPUP;
-       Tizen::Ui::_Resource::_PROGRESS __PROGRESS;
-       Tizen::Ui::_Resource::_RADIOGROUP __RADIOGROUP;
-       Tizen::Ui::_Resource::_SCROLL __SCROLL;
-       Tizen::Ui::_Resource::_SEARCHBAR __SEARCHBAR;
-       Tizen::Ui::_Resource::_SLIDER __SLIDER;
-       Tizen::Ui::_Resource::_SPLITPANEL __SPLITPANEL;
-       Tizen::Ui::_Resource::_TABBAR __TABBAR;
-       Tizen::Ui::_Resource::_TAB __TAB;
-       Tizen::Ui::_Resource::_TABLEVIEW __TABLEVIEW;
-       Tizen::Ui::_Resource::_TOKENEDIT __TOKENEDIT;
-};
-
 MediaPixelFormat ConvertBitmapPixelFormatToMediaPixelFormat(BitmapPixelFormat format)
 {
        MediaPixelFormat out = MEDIA_PIXEL_FORMAT_NONE;
@@ -324,15 +269,8 @@ feedback_pattern_e Convert_ResourceFeedbackPatternTofeedback_pattern_e(Tizen::Ui
        }
        return outPattern;
 }
-
-extern "C"
-{
-       __attribute__((constructor)) void _OSP_EXPORT_ _ResourceManager_PreInitialize(void)
-       {
-               Tizen::Ui::_ResourceManager::PreInitialize();
-       }
-}
 }
+
 namespace Tizen { namespace Graphics
 {
 result
@@ -362,13 +300,12 @@ _ResourceManager* pRsrcMgr = null;
 _ResourceManager*
 _ResourceManager::GetInstance(void)
 {
-       if(unlikely(pRsrcMgr == null))
-       {
-               PreInitialize();
-       }
-       if(unlikely(!(pRsrcMgr->__postInitialize)))
+       static pthread_once_t onceBlock = PTHREAD_ONCE_INIT;
+
+       if (pRsrcMgr == null)
        {
-               pRsrcMgr->PostInitialize();
+               pthread_once(&onceBlock, CreateInstance);
+               pRsrcMgr->DoPostInitialization();
        }
        return pRsrcMgr;
 }
@@ -376,14 +313,13 @@ _ResourceManager::GetInstance(void)
 void
 _ResourceManager::CreateInstance(void)
 {
-       static _ResourceConfigInitiator initiator;
        static _ResourceManager pManager;
        pRsrcMgr = &pManager;
+       _CanvasImpl::SetThemeInfoCallback(_GetDefaultForegroundColor, _GetDefaultBackgroundColor);
 }
 
 _ResourceManager::_ResourceManager(void)
        : __pStringLoader(null)
-       , __pParser(null)
        , __pTransformer(null)
        , __appBasePortraitMode("")
        , __appBaseLandscapeMode("")
@@ -395,13 +331,11 @@ _ResourceManager::_ResourceManager(void)
        , __userTheme(L"")
        , __appliedUserTheme(false)
        , __initializeFeedback(false)
-       , __preInitialize(false)
-       , __postInitialize(false)
        , __appBaseWidth(-1)
        , __appBaseHeight(-1)
-       , __targetWidth(-1)
-       , __targetHeight(-1)
-       , __deviceDPI(-1)
+       , __targetWidth(0)
+       , __targetHeight(0)
+       , __deviceDPI(0)
        , __feedbackStatus(_RESOURCE_FEEDBACK_STATUS_INIT)
        , __feedbackAcquireCount(0)
        , __pFallbackList(null)
@@ -411,59 +345,24 @@ _ResourceManager::_ResourceManager(void)
        __pMapContainer[MAP_CONTAINER_TYPE_DEFAULT_PORTRAIT] = null;
        __pMapContainer[MAP_CONTAINER_TYPE_DEFAULT_LANDSCAPE] = null;
 
-       result r = E_SUCCESS;
-       bool bInit = false;
-       r = Tizen::System::_SystemInfoImpl::GetSysInfo(L"http://tizen.org/feature/screen.dpi", __deviceDPI);
-       SysTryReturn(NID_UI, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] system error occurred");
+       int appBaseWidth = DEFAULT_SCREEN_WIDTH;
+       int appBaseHeight = DEFAULT_SCREEN_HEIGHT;
 
-       r = Tizen::System::_SystemInfoImpl::GetSysInfo("http://tizen.org/feature/screen.width", __targetWidth);
-       SysTryReturn(NID_UI, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] system error occurred");
-       r = Tizen::System::_SystemInfoImpl::GetSysInfo("http://tizen.org/feature/screen.height", __targetHeight);
-       SysTryReturn(NID_UI, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] system error occurred");
-
-       __targetPortraitMode.Append(__targetWidth);
-       __targetPortraitMode.Append(L"x");
-       __targetPortraitMode.Append(__targetHeight);
+       result r = E_SUCCESS;
 
-       __targetLandscapeMode.Append(__targetHeight);
-       __targetLandscapeMode.Append(L"x");
-       __targetLandscapeMode.Append(__targetWidth);
+       int appLogicalResolution = _CoordinateSystem::GetInstance()->GetLogicalResolutionInt();
 
-       // theme 2.0
-       __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT] = new (std::nothrow) MapContainer();
-       SysTryReturnVoidResult(NID_UI, __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT], E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
-       if (!(InitializeTheme(*__pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT])))
+       if (_CreateCoordinateTransformer(__pTransformer,DEFAULT_SCREEN_WIDTH, _CoordinateSystem::GetInstance()->GetLogicalBaseScreenSize(),
+                       Dimension(appLogicalResolution, appLogicalResolution), _CoordinateSystem::GetInstance()->GetPhysicalBaseScreenSize()) != E_SUCCESS)
        {
+
                SysAssert(0);
        }
-       __pStringLoader = new (std::nothrow) StringLoader();
-       SysTryReturnVoidResult(NID_UI, __pStringLoader, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
-       __pParser = new _Resource::ConfigParser();
-       feedback_error_e error = (feedback_error_e)feedback_initialize();
-       if(error != FEEDBACK_ERROR_NONE)
-       {
-               SysLog(NID_UI, "It failed to initialize feedback module.");
-       }
-       __initializeFeedback = true;
-}
+       r = Tizen::System::_SystemInfoImpl::GetSysInfo(L"http://tizen.org/feature/screen.dpi", __deviceDPI);
+       SysTryReturn(NID_UI, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] system error occurred");
 
-void
-_ResourceManager::PreInitialize(void)
-{
-       static pthread_once_t onceBlock = PTHREAD_ONCE_INIT;
-       if (pRsrcMgr == null)
-       {
-               pthread_once(&onceBlock, CreateInstance);
-       }
-}
+       _ControlManager::GetInstance()->SetScreenDpi(__deviceDPI);
 
-void
-_ResourceManager::PostInitialize(void)
-{
-       int appLogicalResolution = _CoordinateSystem::GetInstance()->GetLogicalResolutionInt();
-       int appBaseWidth = 0;
-       int appBaseHeight = 0;
-       result r = E_FAILURE;
        switch(appLogicalResolution)
        {
                case 240:
@@ -483,8 +382,10 @@ _ResourceManager::PostInitialize(void)
                        appBaseHeight = 1280;
                        break;
                default:
-                       appBaseWidth = __targetWidth;
-                       appBaseHeight = __targetHeight;
+                       r = Tizen::System::_SystemInfoImpl::GetSysInfo("http://tizen.org/feature/screen.width", appBaseWidth);
+                       SysTryReturn(NID_UI, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] system error occurred");
+                       r = Tizen::System::_SystemInfoImpl::GetSysInfo("http://tizen.org/feature/screen.height", appBaseHeight);
+                       SysTryReturn(NID_UI, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] system error occurred");
                        break;
        }
        __appBaseWidth = appBaseWidth;
@@ -497,36 +398,38 @@ _ResourceManager::PostInitialize(void)
        __appBaseLandscapeMode.Append(appBaseHeight);
        __appBaseLandscapeMode.Append(L"x");
        __appBaseLandscapeMode.Append(appBaseWidth);
-       _ControlManager::GetInstance()->SetScreenDpi(__deviceDPI);
-       if (_CreateCoordinateTransformer(__pTransformer,DEFAULT_SCREEN_WIDTH, _CoordinateSystem::GetInstance()->GetLogicalBaseScreenSize(),
-                       Dimension(appLogicalResolution, appLogicalResolution), _CoordinateSystem::GetInstance()->GetPhysicalBaseScreenSize()) != E_SUCCESS)
-       {
+       int _width = 0;
+       int _height = 0;
+       r = Tizen::System::_SystemInfoImpl::GetSysInfo("http://tizen.org/feature/screen.width", _width);
+       SysTryReturn(NID_UI, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] system error occurred");
+       r = Tizen::System::_SystemInfoImpl::GetSysInfo("http://tizen.org/feature/screen.height", _height);
+       SysTryReturn(NID_UI, r == E_SUCCESS, , E_SYSTEM, "[E_SYSTEM] system error occurred");
+
+       __targetWidth = _width;
+       __targetHeight = _height;
+       __targetPortraitMode.Append(_width);
+       __targetPortraitMode.Append(L"x");
+       __targetPortraitMode.Append(_height);
+
+       __targetLandscapeMode.Append(_height);
+       __targetLandscapeMode.Append(L"x");
+       __targetLandscapeMode.Append(_width);
 
-               SysAssert(0);
-       }
        Dimension dim = _CoordinateSystemUtils::InverseTransform(Dimension(_Screen::GetWidth(), _Screen::GetHeight()));
        __logicalWidth = dim.width;
        __logicalHeight = dim.height;
        _ThemeInfo::LoadThemeInformation(__systemTheme, __userTheme);
+
+       // theme 2.0
+       __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT] = new (std::nothrow) MapContainer();
+       SysTryReturnVoidResult(NID_UI, __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT], E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
        __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT]->SetResolution(__appBasePortraitMode);
-       SelectConfigTable();
-       if (__userTheme.GetLength() > 0)
+       if (!(InitializeTheme(*__pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT])))
        {
-               String themeFile = String(_AppInfo::GetAppRootPath()+L"res/themes/" +__userTheme + L"/" +__userTheme + ".xml");
-               if(File::IsFileExist(themeFile))
-               {
-                       r = __pParser->Parse(themeFile, *(__pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT]));
-               }
+               SysAssert(0);
        }
-       _CanvasImpl::SetThemeInfoCallback(_GetDefaultForegroundColor, _GetDefaultBackgroundColor);
-       DoPostInitialization();
-       __postInitialize = true;
-}
-
-void
-_ResourceManager::SelectConfigTable(void)
-{
-       __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT]->SetPalette(__systemTheme);
+       __pStringLoader = new (std::nothrow) StringLoader();
+       SysTryReturnVoidResult(NID_UI, __pStringLoader, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
 }
 
 bool
@@ -534,29 +437,42 @@ _ResourceManager::InitializeTheme(MapContainer& mapContainer)
 {
        bool r = true;
        String themeFile(L"");
+       mapContainer.CreateMap(RESOURCE_TYPE_SHAPE);
+       mapContainer.CreateMap(RESOURCE_TYPE_FIXED_VALUE);
+       mapContainer.CreateMap(RESOURCE_TYPE_DIMENSION);
        mapContainer.CreateMap(RESOURCE_TYPE_IMAGE);
        mapContainer.CreateMap(RESOURCE_TYPE_COLOR);
        mapContainer.CreateMap(RESOURCE_TYPE_ANIMATION);
-       LoadPaletteInformation("black");
-       LoadPaletteInformation("white");
-       LoadPaletteInformation("default");
-       LoadConfig(L"", mapContainer, 0, 0, true);
+       mapContainer.SetResolution(__appBasePortraitMode);
+
+       themeFile = String(L"/usr/share/osp/themes/"+__systemTheme + ".xml");
+
+       LoadPaletteInformation(__systemTheme);
+       LoadConfig(__appBasePortraitMode, mapContainer, __appBaseWidth, __appBaseHeight);
+       if (__userTheme.GetLength() > 0)
+       {
+               themeFile = String(_AppInfo::GetAppRootPath()+L"res/themes/" +__userTheme + L"/" +__userTheme + ".xml");
+               if(File::IsFileExist(themeFile))
+               {
+                       ConfigParser* pParser = new (std::nothrow) ConfigParser();
+                       SysTryReturn(NID_UI, pParser, false, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
+                       r = pParser->Parse(themeFile, mapContainer);
+                       delete pParser;
+               }
+       }
+
        return r;
 }
 
 void
-_ResourceManager::LoadConfig(const String& resolution, MapContainer& mapContainer, int width, int height, bool preInit)
+_ResourceManager::LoadConfig(const String& resolution, MapContainer& mapContainer, int width, int height)
 {
-       _ICoordinateSystemTransformer* pTransformer = null;
-       if(!preInit)
-       {
-               _CoordinateSystem::GetTransformerN(__appBaseWidth, _CoordinateSystem::GetInstance()->GetLogicalBaseScreenSize(),Dimension(width, height), BASE_SCREEN_SIZE_NORMAL);
-       }
+       _ICoordinateSystemTransformer* pTransformer = _CoordinateSystem::GetTransformerN(__appBaseWidth, _CoordinateSystem::GetInstance()->GetLogicalBaseScreenSize(),
+       Dimension(width, height), BASE_SCREEN_SIZE_NORMAL);
 
        if (pTransformer)
        {
                _SCREEN_HEIGHT_ = pTransformer->Transform(__logicalHeight);
-               delete pTransformer;
        }
        else
        {
@@ -571,9 +487,10 @@ _ResourceManager::LoadConfig(const String& resolution, MapContainer& mapContaine
                ConfigLoader::GetInstance()->GetInitFunc(i, func);
                if (func)
                {
-                       func(mapContainer, resolution, preInit);
+                       func(mapContainer, resolution);
                }
        }
+       delete pTransformer;
 }
 
 void
@@ -590,21 +507,10 @@ MapContainer*
 _ResourceManager::GetMapContainer(MapContainerType type)
 {
        MapContainer* pContainer = null;
-       static bool preinit = false;
        switch (type)
        {
                case MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT:
                        pContainer = __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT];
-                       if(preinit)
-                       {
-                               break;
-                       }
-                       pContainer->CreateMap(RESOURCE_TYPE_SHAPE);
-                       pContainer->CreateMap(RESOURCE_TYPE_FIXED_VALUE);
-                       pContainer->CreateMap(RESOURCE_TYPE_DIMENSION);
-                       pContainer->SetResolution(__appBasePortraitMode);
-                       LoadConfig(__appBasePortraitMode, *pContainer, __appBaseWidth, __appBaseHeight, false);
-                       preinit = true;
                        break;
                case MAP_CONTAINER_TYPE_APP_BASE_LANDSCAPE:
                        if (__pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_LANDSCAPE])
@@ -619,7 +525,7 @@ _ResourceManager::GetMapContainer(MapContainerType type)
                                pContainer->CreateMap(RESOURCE_TYPE_SHAPE);
                                pContainer->CreateMap(RESOURCE_TYPE_DIMENSION);
                                pContainer->CreateMap(RESOURCE_TYPE_FIXED_VALUE);
-                               LoadConfig(__appBaseLandscapeMode, *pContainer, __appBaseWidth, __appBaseHeight, false);
+                               LoadConfig(__appBaseLandscapeMode, *pContainer, __appBaseWidth, __appBaseHeight);
                                __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_LANDSCAPE] = pContainer;
                        }
                        break;
@@ -644,7 +550,7 @@ _ResourceManager::GetMapContainer(MapContainerType type)
                                        pContainer->CreateMap(RESOURCE_TYPE_SHAPE);
                                        pContainer->CreateMap(RESOURCE_TYPE_DIMENSION);
                                        pContainer->CreateMap(RESOURCE_TYPE_FIXED_VALUE);
-                                       LoadConfig(__defaultPortraitMode, *pContainer, DEFAULT_SCREEN_WIDTH, DEFAULT_SCREEN_HEIGHT, false);
+                                       LoadConfig(__defaultPortraitMode, *pContainer, DEFAULT_SCREEN_WIDTH, DEFAULT_SCREEN_HEIGHT);
                                        __pMapContainer[MAP_CONTAINER_TYPE_DEFAULT_PORTRAIT] = pContainer;
                                }
                        }
@@ -670,7 +576,7 @@ _ResourceManager::GetMapContainer(MapContainerType type)
                                        pContainer->CreateMap(RESOURCE_TYPE_SHAPE);
                                        pContainer->CreateMap(RESOURCE_TYPE_DIMENSION);
                                        pContainer->CreateMap(RESOURCE_TYPE_FIXED_VALUE);
-                                       LoadConfig(__defaultLandscapeMode, *pContainer, DEFAULT_SCREEN_WIDTH, DEFAULT_SCREEN_HEIGHT, false);
+                                       LoadConfig(__defaultLandscapeMode, *pContainer, DEFAULT_SCREEN_WIDTH, DEFAULT_SCREEN_HEIGHT);
                                        __pMapContainer[MAP_CONTAINER_TYPE_DEFAULT_LANDSCAPE] = pContainer;
                                }
                        }
@@ -719,8 +625,7 @@ _ResourceManager::~_ResourceManager(void)
                delete __pMapContainer[MAP_CONTAINER_TYPE_DEFAULT_LANDSCAPE];
                __pMapContainer[MAP_CONTAINER_TYPE_DEFAULT_LANDSCAPE] = null;
        }
-       delete __pParser;
-       __pParser = null;
+
        feedback_deinitialize();
 }
 void
@@ -1000,7 +905,7 @@ _ResourceManager::GetShape(int shapeId, _ControlOrientation orientation, int& va
 
        if (orientation == _CONTROL_ORIENTATION_PORTRAIT)
        {
-               r = GetMapContainer(MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT)->GetShapeMap()->GetValue(shapeId, pItem);
+               r = __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT]->GetShapeMap()->GetValue(shapeId, pItem);
                if (r != E_SUCCESS)
                {
                        r = GetMapContainer(MAP_CONTAINER_TYPE_APP_BASE_LANDSCAPE)->GetShapeMap()->GetValue(shapeId, pItem);
@@ -1011,7 +916,7 @@ _ResourceManager::GetShape(int shapeId, _ControlOrientation orientation, int& va
                r = GetMapContainer(MAP_CONTAINER_TYPE_APP_BASE_LANDSCAPE)->GetShapeMap()->GetValue(shapeId, pItem);
                if (r != E_SUCCESS)
                {
-                       r = GetMapContainer(MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT)->GetShapeMap()->GetValue(shapeId, pItem);
+                       r = __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT]->GetShapeMap()->GetValue(shapeId, pItem);
                }
        }
 
@@ -1034,7 +939,7 @@ _ResourceManager::GetShape(int shapeId, _ControlOrientation orientation, float&
 
        if (orientation == _CONTROL_ORIENTATION_PORTRAIT)
        {
-               r = GetMapContainer(MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT)->GetShapeMap()->GetValue(shapeId, pItem);
+               r = __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT]->GetShapeMap()->GetValue(shapeId, pItem);
                if (r != E_SUCCESS)
                {
                        r = GetMapContainer(MAP_CONTAINER_TYPE_APP_BASE_LANDSCAPE)->GetShapeMap()->GetValue(shapeId, pItem);
@@ -1045,7 +950,7 @@ _ResourceManager::GetShape(int shapeId, _ControlOrientation orientation, float&
                r = GetMapContainer(MAP_CONTAINER_TYPE_APP_BASE_LANDSCAPE)->GetShapeMap()->GetValue(shapeId, pItem);
                if (r != E_SUCCESS)
                {
-                       r = GetMapContainer(MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT)->GetShapeMap()->GetValue(shapeId, pItem);
+                       r = __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT]->GetShapeMap()->GetValue(shapeId, pItem);
                }
        }
 
@@ -1179,6 +1084,15 @@ _ResourceManager::IsCustomBitmap(int bitmapId)
 result
 _ResourceManager::PlayFeedback(_ResourceFeedbackPattern pattern, const _Control* pControl)
 {
+       if (unlikely(__initializeFeedback == false))
+       {
+               feedback_error_e error = (feedback_error_e)feedback_initialize();
+               if(error != FEEDBACK_ERROR_NONE)
+               {
+                       SysLog(NID_UI, "It failed to initialize feedback module.");
+               }
+               __initializeFeedback = true;
+       }
        if (__feedbackStatus == _RESOURCE_FEEDBACK_STATUS_PLAYED)
        {
                SysLog(NID_UI, "feedback is already played.");
@@ -1365,978 +1279,660 @@ _ResourceManager::GetDefaultShapeWithScaling(int shapeId, _ControlOrientation or
        return r;
 }
 
-#define ADD_PALETTE(id, value, theme)\
+#define ADD_PALETTE(id, value)\
                {\
                        ResourceKey resourceKey(#id);\
                        ResourceItem* pItem = new (std::nothrow) ResourceItem(RESOURCE_TYPE_COLOR); \
                        pItem->SetRawDataColor(value);\
-                       __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT]->GetPalette(theme)->Add(resourceKey, pItem);\
+                       __pMapContainer[MAP_CONTAINER_TYPE_APP_BASE_PORTRAIT]->GetPalette()->Add(resourceKey, pItem);\
                }
 
 void
 _ResourceManager::LoadBlackPalette(void)
 {
-       String theme = L"black";
-       ADD_PALETTE(BASIC::foreground, 0xFFFFFFFF, theme);
-       ADD_PALETTE(BASIC::background, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::B011, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::B012, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::B013, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::B014, 0xFFFFFFFF, theme);
-       ADD_PALETTE(BASIC::B015, 0xFFF8F6EF, theme);
-       ADD_PALETTE(BASIC::B016, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::B017, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::B018, 0xFF6590FF, theme);
-       ADD_PALETTE(BASIC::B0211, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::B0211D, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::B0212, 0xFF1C1E28, theme);
-       ADD_PALETTE(BASIC::B0213, 0xFF404040, theme);
-       ADD_PALETTE(BASIC::B0214, 0xFF222C47, theme);
-       ADD_PALETTE(BASIC::B0215, 0xFF1D263C, theme);
-       ADD_PALETTE(BASIC::B0216, 0xFF222C47, theme);
-       ADD_PALETTE(BASIC::B0217, 0xFF11131B, theme);
-       ADD_PALETTE(BASIC::B0217D, 0x7F11131B, theme);
-       ADD_PALETTE(BASIC::B0221, 0xFFFFFFFF, theme);
-       ADD_PALETTE(BASIC::B0221L1, 0xFF838CA3, theme);
-       ADD_PALETTE(BASIC::B0221L2, 0xFF697082, theme);
-       ADD_PALETTE(BASIC::B0221L3, 0xFF6B707E, theme);
-       ADD_PALETTE(BASIC::B0221L4, 0xFF525252, theme);
-       ADD_PALETTE(BASIC::B0222, 0xFF404040, theme);
-       ADD_PALETTE(BASIC::B0223, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0224, 0xFF27282B, theme);
-       ADD_PALETTE(BASIC::B0225, 0xFF2A5181, theme);
-       ADD_PALETTE(BASIC::B0226, 0xFF4B73A3, theme);
-       ADD_PALETTE(BASIC::B0227, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::B0228, 0xFF1A5274, theme);
-       ADD_PALETTE(BASIC::B0232, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0233, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B031, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B041, 0xFF2B3AAF, theme);
-       ADD_PALETTE(BASIC::B041P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B042, 0xFF2A39AC, theme);
-       ADD_PALETTE(BASIC::B043, 0x00001BEA, theme);
-       ADD_PALETTE(BASIC::B044, 0xFF2B3AAF, theme);
-       ADD_PALETTE(BASIC::B0511, 0xFF313F66, theme);
-       ADD_PALETTE(BASIC::B0511P, 0xFF2A39AC, theme);
-       ADD_PALETTE(BASIC::B0512, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0513, 0xFFF8F6EF, theme);
-       ADD_PALETTE(BASIC::B0514, 0xFF313F66, theme);
-       ADD_PALETTE(BASIC::B0514P1, 0xFF303FB2, theme);
-       ADD_PALETTE(BASIC::B0514P2, 0xFF5163E9, theme);
-       ADD_PALETTE(BASIC::B0514L3, 0xFF6590FF, theme);
-       ADD_PALETTE(BASIC::B0515L1, 0xFF464C5E, theme);
-       ADD_PALETTE(BASIC::B0515L2, 0x7F454442, theme);
-       ADD_PALETTE(BASIC::B0516, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0517, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0517P1, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0517P2, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0518, 0xFF2E4468, theme);
-       ADD_PALETTE(BASIC::B0518P, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0519, 0xFFF25D28, theme);
-       ADD_PALETTE(BASIC::B0520, 0xFF2E4468, theme);
-       ADD_PALETTE(BASIC::B0520P, 0xFF3C649B, theme);
-       ADD_PALETTE(BASIC::B052L1, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L1P, 0xFF5D83FF, theme);
-       ADD_PALETTE(BASIC::B052L1D, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L2, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B052L2P, 0x005787B8, theme);
-       ADD_PALETTE(BASIC::B052L3, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B052L3P, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B052L4, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L4P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L4D, 0x66FAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L5, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L5D, 0x66FAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L5P, 0xFF5D83FF, theme);
-       ADD_PALETTE(BASIC::B052L6, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L6D, 0x99FAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L6P1, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L6P2, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L7, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L8, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L8P, 0xFF5D83FF, theme);
-       ADD_PALETTE(BASIC::B052L8D, 0x66FAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L9, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L9P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L9D, 0x66FAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L10, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0531, 0xFFF8F6EF, theme);
-       ADD_PALETTE(BASIC::B0532, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0533, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0534, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0535, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0536, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0537, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0541, 0xFF6B728A, theme);
-       ADD_PALETTE(BASIC::B0541P, 0xFF0D1D96, theme);
-       ADD_PALETTE(BASIC::B0541D, 0x996B728A, theme);
-       ADD_PALETTE(BASIC::B0542, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0542P, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0543, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0544, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0545, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0551, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0552, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0553, 0xFFA5A5A5, theme);
-       ADD_PALETTE(BASIC::B0554, 0xFFFFFFFF, theme);
-       ADD_PALETTE(BASIC::B0555, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0556, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0557, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0558, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B061L1, 0xFF1D263C, theme);
-       ADD_PALETTE(BASIC::B061L2, 0xFF49577B, theme);
-       ADD_PALETTE(BASIC::B061L3, 0xFF969A9C, theme);
-       ADD_PALETTE(BASIC::B061L4, 0xFF1D263C, theme);
-       ADD_PALETTE(BASIC::B061L5, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::B061L6, 0xFF333537, theme);
-       ADD_PALETTE(BASIC::B0621L1, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0621L2, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0622L1, 0x001D263C, theme);
-       ADD_PALETTE(BASIC::B0622L2, 0x3FFFFFFF, theme);
-       ADD_PALETTE(BASIC::B0623L1, 0xFF1D263C, theme);
-       ADD_PALETTE(BASIC::B0623L2, 0xFF626675, theme);
-       ADD_PALETTE(BASIC::B0624L1, 0xFF1D263C, theme);
-       ADD_PALETTE(BASIC::B0624L2, 0xFF626675, theme);
-       ADD_PALETTE(BASIC::B0624L3, 0xFF313F66, theme);
-       ADD_PALETTE(BASIC::B0624L4, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::B0624L5, 0xFF5783FF, theme);
-       ADD_PALETTE(BASIC::B0624L6, 0xFF5783FF, theme);
-       ADD_PALETTE(BASIC::B063L1, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B063L1P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B063L1D, 0x99FAFAFA, theme);
-       ADD_PALETTE(BASIC::B063L2, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B063L3, 0xFF6E6F76, theme);
-       ADD_PALETTE(BASIC::B063L4, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B063L5, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B063L5D, 0x99FAFAFA, theme);
-       ADD_PALETTE(BASIC::B063L6, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B063L6P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B063L6D, 0x99FAFAFA, theme);
-       ADD_PALETTE(BASIC::B063L7, 0xFF656565, theme);
-       ADD_PALETTE(BASIC::B063L8, 0xFF6E6F76, theme);
-       ADD_PALETTE(BASIC::B063L8P, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B063L8D, 0x996E6F76, theme);
-       ADD_PALETTE(BASIC::B063L9, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B064L1, 0xFF6890FF, theme);
-       ADD_PALETTE(BASIC::B064L2, 0xFFD7D7D7, theme);
-       ADD_PALETTE(BASIC::B064L2P, 0xFFD7D7D7, theme);
-       ADD_PALETTE(BASIC::B064L2D, 0xFFD7D7D7, theme);
-       ADD_PALETTE(BASIC::B064L3, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::B064L3P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B064L3D, 0x7F000000, theme);
-       ADD_PALETTE(BASIC::B065L1, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B065L2, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B065L3, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B065L3P, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B065L4, 0xFFEEEEEE, theme);
-       ADD_PALETTE(BASIC::B065L4D, 0x99EEEEEE, theme);
-       ADD_PALETTE(BASIC::B065L4P, 0xFF2A39AC, theme);
-       ADD_PALETTE(BASIC::B065L5, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B071, 0xFF393B41, theme);
-       ADD_PALETTE(BASIC::B0721, 0xFFA09F9A, theme);
-       ADD_PALETTE(BASIC::B0722, 0xFF5D83FF, theme);
-       ADD_PALETTE(BASIC::B0723, 0xFF212428, theme);
-       ADD_PALETTE(BASIC::B0724, 0xFF404040, theme);
-       ADD_PALETTE(BASIC::B0725, 0xFF4F66A7, theme);
-       ADD_PALETTE(BASIC::B0726, 0xFF404040, theme);
-       ADD_PALETTE(BASIC::B0731, 0xFF2B3AAF, theme);
-       ADD_PALETTE(BASIC::B0732, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B0741, 0xFFA09F9A, theme);
-       ADD_PALETTE(BASIC::B0742, 0xFF5D83FF, theme);
-       ADD_PALETTE(BASIC::B0743, 0xFF212428, theme);
-       ADD_PALETTE(BASIC::B0744, 0xFF404040, theme);
-       ADD_PALETTE(BASIC::B0745, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0751, 0xFF3B73B6, theme);
-       ADD_PALETTE(BASIC::F011L1, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F011L1P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F011L1D, 0x7FFAFAFA, theme);
-       ADD_PALETTE(BASIC::F011L2, 0xFF6890FF, theme);
-       ADD_PALETTE(BASIC::F011L2D, 0x996890FF, theme);
-       ADD_PALETTE(BASIC::F011L3, 0xFF6E6F76, theme);
-       ADD_PALETTE(BASIC::F011L3D, 0x996E6F76, theme);
-       ADD_PALETTE(BASIC::F011L4, 0xFF6E6F76, theme);
-       ADD_PALETTE(BASIC::F011L4D, 0x996E6F76, theme);
-       ADD_PALETTE(BASIC::F011L5, 0xFF5D83FF, theme);
-       ADD_PALETTE(BASIC::F011L6, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F011L7, 0xFF6E6F76, theme);
-       ADD_PALETTE(BASIC::F011L7D, 0x996E6F76, theme);
-       ADD_PALETTE(BASIC::F011L8, 0xFFD10000, theme);
-       ADD_PALETTE(BASIC::F011L9, 0xFFFFFFFF, theme);
-       ADD_PALETTE(BASIC::F011L10, 0xFFF9F9F9, theme);
-       ADD_PALETTE(BASIC::F011L11, 0xFF808080, theme);
-       ADD_PALETTE(BASIC::F011L12, 0xFF4093F7, theme);
-       ADD_PALETTE(BASIC::F011L13, 0x00000000, theme);
-       ADD_PALETTE(BASIC::F011L14, 0x00000000, theme);
-       ADD_PALETTE(BASIC::F011L15, 0xFFD10000, theme);
-       ADD_PALETTE(BASIC::F011L16, 0xFF6E6F76, theme);
-       ADD_PALETTE(BASIC::F011L17, 0xFF8B8B8B, theme);
-       ADD_PALETTE(BASIC::F011L18, 0xFF686868, theme);
-       ADD_PALETTE(BASIC::F011L19, 0xFF6E6F76, theme);
-       ADD_PALETTE(BASIC::F011L20, 0x00000000, theme);
-       ADD_PALETTE(BASIC::F011L21, 0xFF6E6F76, theme);
-       ADD_PALETTE(BASIC::F011L22, 0xFF6E6F76, theme);
-       ADD_PALETTE(BASIC::F011L23, 0xFF1382FF, theme);
-       ADD_PALETTE(BASIC::F021L1i, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F021L1iP, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F021L1iD, 0x99FAFAFA, theme);
-       ADD_PALETTE(BASIC::F022L1i, 0xFF6C6E77, theme);
-       ADD_PALETTE(BASIC::F022L2i, 0xFF2B3AAF, theme);
-       ADD_PALETTE(BASIC::F022L2iD, 0x992B3AAF, theme);
-       ADD_PALETTE(BASIC::F031L1, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F031L1P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F031L1D, 0x99FAFAFA, theme);
-       ADD_PALETTE(BASIC::F031L2, 0x00000000, theme);
-       ADD_PALETTE(BASIC::F031L2P, 0x00000000, theme);
-       ADD_PALETTE(BASIC::F031L2D, 0x00000000, theme);
-       ADD_PALETTE(BASIC::F031L3, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F031L3P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F031L3D, 0x99FAFAFA, theme);
-       ADD_PALETTE(BASIC::F032L1, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F032L1P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F032L1D, 0x99FAFAFA, theme);
-       ADD_PALETTE(BASIC::F032L2, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F032L2P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F032L2D, 0x99FAFAFA, theme);
-       ADD_PALETTE(BASIC::F032L3, 0xFFF9F9F9, theme);
-       ADD_PALETTE(BASIC::F032L3P, 0xFFF9F9F9, theme);
-       ADD_PALETTE(BASIC::F041i, 0xFF5D6176, theme);
-       ADD_PALETTE(BASIC::F041iD, 0x995D6176, theme);
-       ADD_PALETTE(BASIC::F051, 0xFF485D93, theme);
-       ADD_PALETTE(BASIC::F052, 0xFF3A72FF, theme);
-       ADD_PALETTE(BASIC::F053, 0xFF485D93, theme);
-       ADD_PALETTE(BASIC::F053P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F053D, 0x99485D93, theme);
-       ADD_PALETTE(BASIC::F054, 0xFF202432, theme);
-       ADD_PALETTE(BASIC::F055, 0xFF3A72FF, theme);
-       ADD_PALETTE(BASIC::W011, 0xFF4B4D56, theme);
-       ADD_PALETTE(BASIC::W011D, 0x994B4D56, theme);
-       ADD_PALETTE(BASIC::W012, 0xFF095FD4, theme);
-       ADD_PALETTE(BASIC::W012D, 0x99095FD4, theme);
-       ADD_PALETTE(BASIC::W012P, 0xFF232F91, theme);
-       ADD_PALETTE(BASIC::W013, 0x00000000, theme);
-       ADD_PALETTE(BASIC::W0141, 0xFFDB0000, theme);
-       ADD_PALETTE(BASIC::W0141P, 0xFFA10808, theme);
-       ADD_PALETTE(BASIC::W0141D, 0x99DB0000, theme);
-       ADD_PALETTE(BASIC::W015, 0xFF343432, theme);
-       ADD_PALETTE(BASIC::W021L1, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::W021L1P, 0xFF2B3AAF, theme);
-       ADD_PALETTE(BASIC::W021L2, 0xFF425790, theme);
-       ADD_PALETTE(BASIC::W021L2P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W021L3, 0xFF425790, theme);
-       ADD_PALETTE(BASIC::W021L3P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W021L4, 0xFFF0F0F0, theme);
-       ADD_PALETTE(BASIC::W031L1, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::W031L1D, 0x99000000, theme);
-       ADD_PALETTE(BASIC::W031L2, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::W031L2D, 0x99000000, theme);
-       ADD_PALETTE(BASIC::W032, 0xFF5D6176, theme);
-       ADD_PALETTE(BASIC::W032P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W032D, 0x99FAFAFA, theme);
-       ADD_PALETTE(BASIC::W041, 0xFFE1DDD1, theme);
-       ADD_PALETTE(BASIC::W051, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::W0611, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W0611P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W0611D, 0x99FAFAFA, theme);
-       ADD_PALETTE(BASIC::W062L1, 0xFF555861, theme);
-       ADD_PALETTE(BASIC::W062L1D, 0x99555861, theme);
-       ADD_PALETTE(BASIC::W062L2, 0xFF415BFE, theme);
-       ADD_PALETTE(BASIC::W062L2D, 0x7F415BFE, theme);
-       ADD_PALETTE(BASIC::W062L3, 0xFFD8D7D2, theme);
-       ADD_PALETTE(BASIC::W062L3D, 0x4CD8D7D2, theme);
-       ADD_PALETTE(BASIC::W062L4, 0xFF3677C3, theme);
-       ADD_PALETTE(BASIC::W062L4D, 0x4C3677C3, theme);
-       ADD_PALETTE(BASIC::W062L5, 0xFFC7D3E3, theme);
-       ADD_PALETTE(BASIC::W0631, 0xFFEEEEEE, theme);
-       ADD_PALETTE(BASIC::W0632, 0xFF4C5158, theme);
-       ADD_PALETTE(BASIC::W0641, 0xFF6B6D79, theme);
-       ADD_PALETTE(BASIC::W0641P, 0xFF2A39AC, theme);
-       ADD_PALETTE(BASIC::W0641D, 0x996B6D79, theme);
-       ADD_PALETTE(BASIC::W0651, 0xFF3A3A3A, theme);
-       ADD_PALETTE(BASIC::W0711, 0xFF525767, theme);
-       ADD_PALETTE(BASIC::W0711P, 0xFF2B3AAF, theme);
-       ADD_PALETTE(BASIC::W0711D, 0xFF3E414E, theme);
-       ADD_PALETTE(BASIC::W0712, 0xFF4267A9, theme);
-       ADD_PALETTE(BASIC::W0713, 0xFF2B3AAF, theme);
-       ADD_PALETTE(BASIC::W0714, 0xFF263E5F, theme);
-       ADD_PALETTE(BASIC::W0715, 0xFF2B3AAF, theme);
-       ADD_PALETTE(BASIC::W0721, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W0721P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W0721D, 0x99FAFAFA, theme);
-       ADD_PALETTE(BASIC::W0811, 0xFF253296, theme);
-       ADD_PALETTE(BASIC::W0812, 0x00000000, theme);
-       ADD_PALETTE(BASIC::W0813, 0xFF595959, theme);
-       ADD_PALETTE(BASIC::W082, 0x00000000, theme);
-       ADD_PALETTE(BASIC::W083, 0x00000000, theme);
-       ADD_PALETTE(BASIC::W084, 0xB2FAFAFA, theme);
-       ADD_PALETTE(BASIC::W084P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W085, 0x00000000, theme);
-       ADD_PALETTE(BASIC::W091, 0xFF2B3AAF, theme);
-       ADD_PALETTE(BASIC::W092, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W101, 0xFF4884D6, theme);
-       ADD_PALETTE(BASIC::W111, 0xFFC8CEDB, theme);
-       ADD_PALETTE(BASIC::W112L1, 0xFF8995AE, theme);
-       ADD_PALETTE(BASIC::W112L2, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W1121, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W1122, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W1123, 0x4C000000, theme);
-       ADD_PALETTE(BASIC::W1211, 0x00000000, theme);
-       ADD_PALETTE(BASIC::W1212, 0x00000000, theme);
-       ADD_PALETTE(BASIC::W1221, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::W1222, 0xFF878580, theme);
-       ADD_PALETTE(BASIC::W1223, 0xFFFFFFFF, theme);
-       ADD_PALETTE(BASIC::W131, 0xFF343739, theme);
-       ADD_PALETTE(BASIC::W132, 0xFF2B3AAF, theme);
-       ADD_PALETTE(BASIC::W141, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W151, 0x66000000, theme);
-       ADD_PALETTE(BASIC::W152, 0xFF42434B, theme);
-       ADD_PALETTE(BASIC::W153, 0xFF2B3AAF, theme);
-       ADD_PALETTE(BASIC::W154, 0xFF1C1E28, theme);
-       ADD_PALETTE(BASIC::W161, 0xFF001BEA, theme);
+       ADD_PALETTE(BASIC::foreground, 0xFFFFFFFF);
+       ADD_PALETTE(BASIC::background, 0xFF000000);
+       ADD_PALETTE(BASIC::B011, 0xFF000000);
+       ADD_PALETTE(BASIC::B012, 0xFF000000);
+       ADD_PALETTE(BASIC::B013, 0xFF000000);
+       ADD_PALETTE(BASIC::B014, 0xFFFFFFFF);
+       ADD_PALETTE(BASIC::B015, 0xFFF8F6EF);
+       ADD_PALETTE(BASIC::B016, 0xFF000000);
+       ADD_PALETTE(BASIC::B017, 0xFF000000);
+       ADD_PALETTE(BASIC::B018, 0xFF6590FF);
+       ADD_PALETTE(BASIC::B0211, 0xFF000000);
+       ADD_PALETTE(BASIC::B0211D, 0xFF000000);
+       ADD_PALETTE(BASIC::B0212, 0xFF1C1E28);
+       ADD_PALETTE(BASIC::B0213, 0xFF404040);
+       ADD_PALETTE(BASIC::B0214, 0xFF222C47);
+       ADD_PALETTE(BASIC::B0215, 0xFF1D263C);
+       ADD_PALETTE(BASIC::B0216, 0xFF222C47);
+       ADD_PALETTE(BASIC::B0217, 0xFF11131B);
+       ADD_PALETTE(BASIC::B0217D, 0x7F11131B);
+       ADD_PALETTE(BASIC::B0221, 0xFFFFFFFF);
+       ADD_PALETTE(BASIC::B0221L1, 0xFF838CA3);
+       ADD_PALETTE(BASIC::B0221L2, 0xFF697082);
+       ADD_PALETTE(BASIC::B0221L3, 0xFF6B707E);
+       ADD_PALETTE(BASIC::B0221L4, 0xFF525252);
+       ADD_PALETTE(BASIC::B0222, 0xFF404040);
+       ADD_PALETTE(BASIC::B0223, 0x00000000);
+       ADD_PALETTE(BASIC::B0224, 0xFF27282B);
+       ADD_PALETTE(BASIC::B0225, 0xFF2A5181);
+       ADD_PALETTE(BASIC::B0226, 0xFF4B73A3);
+       ADD_PALETTE(BASIC::B0227, 0xFF000000);
+       ADD_PALETTE(BASIC::B0228, 0xFF1A5274);
+       ADD_PALETTE(BASIC::B0232, 0x00000000);
+       ADD_PALETTE(BASIC::B0233, 0x00000000);
+       ADD_PALETTE(BASIC::B031, 0x00000000);
+       ADD_PALETTE(BASIC::B041, 0xFF2B3AAF);
+       ADD_PALETTE(BASIC::B041P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B042, 0xFF2A39AC);
+       ADD_PALETTE(BASIC::B043, 0x00001BEA);
+       ADD_PALETTE(BASIC::B044, 0xFF2B3AAF);
+       ADD_PALETTE(BASIC::B0511, 0xFF313F66);
+       ADD_PALETTE(BASIC::B0511P, 0xFF2A39AC);
+       ADD_PALETTE(BASIC::B0512, 0x00000000);
+       ADD_PALETTE(BASIC::B0513, 0xFFF8F6EF);
+       ADD_PALETTE(BASIC::B0514, 0xFF313F66);
+       ADD_PALETTE(BASIC::B0514P1, 0xFF303FB2);
+       ADD_PALETTE(BASIC::B0514P2, 0xFF5163E9);
+       ADD_PALETTE(BASIC::B0514L3, 0xFF6590FF);
+       ADD_PALETTE(BASIC::B0515L1, 0xFF464C5E);
+       ADD_PALETTE(BASIC::B0515L2, 0x7F454442);
+       ADD_PALETTE(BASIC::B0516, 0x00000000);
+       ADD_PALETTE(BASIC::B0517, 0x00000000);
+       ADD_PALETTE(BASIC::B0517P1, 0x00000000);
+       ADD_PALETTE(BASIC::B0517P2, 0x00000000);
+       ADD_PALETTE(BASIC::B0518, 0xFF2E4468);
+       ADD_PALETTE(BASIC::B0518P, 0x00000000);
+       ADD_PALETTE(BASIC::B0519, 0xFFF25D28);
+       ADD_PALETTE(BASIC::B0520, 0xFF2E4468);
+       ADD_PALETTE(BASIC::B0520P, 0xFF3C649B);
+       ADD_PALETTE(BASIC::B052L1, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B052L1P, 0xFF5D83FF);
+       ADD_PALETTE(BASIC::B052L1D, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B052L2, 0x00000000);
+       ADD_PALETTE(BASIC::B052L2P, 0x005787B8);
+       ADD_PALETTE(BASIC::B052L3, 0x00000000);
+       ADD_PALETTE(BASIC::B052L3P, 0x00000000);
+       ADD_PALETTE(BASIC::B052L4, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B052L4P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B052L4D, 0x66FAFAFA);
+       ADD_PALETTE(BASIC::B052L5, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B052L5D, 0x66FAFAFA);
+       ADD_PALETTE(BASIC::B052L5P, 0xFF5D83FF);
+       ADD_PALETTE(BASIC::B052L6, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B052L6D, 0x99FAFAFA);
+       ADD_PALETTE(BASIC::B052L6P1, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B052L6P2, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B052L7, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B052L8, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B052L8P, 0xFF5D83FF);
+       ADD_PALETTE(BASIC::B052L8D, 0x66FAFAFA);
+       ADD_PALETTE(BASIC::B052L9, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B052L9P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B052L9D, 0x66FAFAFA);
+       ADD_PALETTE(BASIC::B052L10, 0x00000000);
+       ADD_PALETTE(BASIC::B0531, 0xFFF8F6EF);
+       ADD_PALETTE(BASIC::B0532, 0x00000000);
+       ADD_PALETTE(BASIC::B0533, 0x00000000);
+       ADD_PALETTE(BASIC::B0534, 0x00000000);
+       ADD_PALETTE(BASIC::B0535, 0x00000000);
+       ADD_PALETTE(BASIC::B0536, 0x00000000);
+       ADD_PALETTE(BASIC::B0537, 0x00000000);
+       ADD_PALETTE(BASIC::B0541, 0xFF6B728A);
+       ADD_PALETTE(BASIC::B0541P, 0xFF0D1D96);
+       ADD_PALETTE(BASIC::B0541D, 0x996B728A);
+       ADD_PALETTE(BASIC::B0542, 0x00000000);
+       ADD_PALETTE(BASIC::B0542P, 0x00000000);
+       ADD_PALETTE(BASIC::B0543, 0x00000000);
+       ADD_PALETTE(BASIC::B0544, 0x00000000);
+       ADD_PALETTE(BASIC::B0545, 0x00000000);
+       ADD_PALETTE(BASIC::B0551, 0x00000000);
+       ADD_PALETTE(BASIC::B0552, 0x00000000);
+       ADD_PALETTE(BASIC::B0553, 0xFFA5A5A5);
+       ADD_PALETTE(BASIC::B0554, 0xFFFFFFFF);
+       ADD_PALETTE(BASIC::B0555, 0x00000000);
+       ADD_PALETTE(BASIC::B0556, 0x00000000);
+       ADD_PALETTE(BASIC::B0557, 0x00000000);
+       ADD_PALETTE(BASIC::B0558, 0x00000000);
+       ADD_PALETTE(BASIC::B061L1, 0xFF1D263C);
+       ADD_PALETTE(BASIC::B061L2, 0xFF49577B);
+       ADD_PALETTE(BASIC::B061L3, 0xFF969A9C);
+       ADD_PALETTE(BASIC::B061L4, 0xFF1D263C);
+       ADD_PALETTE(BASIC::B061L5, 0xFF000000);
+       ADD_PALETTE(BASIC::B061L6, 0xFF333537);
+       ADD_PALETTE(BASIC::B0621L1, 0x00000000);
+       ADD_PALETTE(BASIC::B0621L2, 0x00000000);
+       ADD_PALETTE(BASIC::B0622L1, 0x001D263C);
+       ADD_PALETTE(BASIC::B0622L2, 0x3FFFFFFF);
+       ADD_PALETTE(BASIC::B0623L1, 0xFF1D263C);
+       ADD_PALETTE(BASIC::B0623L2, 0xFF626675);
+       ADD_PALETTE(BASIC::B0624L1, 0xFF1D263C);
+       ADD_PALETTE(BASIC::B0624L2, 0xFF626675);
+       ADD_PALETTE(BASIC::B0624L3, 0xFF313F66);
+       ADD_PALETTE(BASIC::B0624L4, 0xFF000000);
+       ADD_PALETTE(BASIC::B0624L5, 0xFF5783FF);
+       ADD_PALETTE(BASIC::B0624L6, 0xFF5783FF);
+       ADD_PALETTE(BASIC::B063L1, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B063L1P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B063L1D, 0x99FAFAFA);
+       ADD_PALETTE(BASIC::B063L2, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B063L3, 0xFF6E6F76);
+       ADD_PALETTE(BASIC::B063L4, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B063L5, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B063L5D, 0x99FAFAFA);
+       ADD_PALETTE(BASIC::B063L6, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B063L6P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B063L6D, 0x99FAFAFA);
+       ADD_PALETTE(BASIC::B063L7, 0xFF656565);
+       ADD_PALETTE(BASIC::B063L8, 0xFF6E6F76);
+       ADD_PALETTE(BASIC::B063L8P, 0x00000000);
+       ADD_PALETTE(BASIC::B063L8D, 0x996E6F76);
+       ADD_PALETTE(BASIC::B063L9, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B064L1, 0xFF6890FF);
+       ADD_PALETTE(BASIC::B064L2, 0xFFD7D7D7);
+       ADD_PALETTE(BASIC::B064L2P, 0xFFD7D7D7);
+       ADD_PALETTE(BASIC::B064L2D, 0xFFD7D7D7);
+       ADD_PALETTE(BASIC::B064L3, 0xFF000000);
+       ADD_PALETTE(BASIC::B064L3P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B064L3D, 0x7F000000);
+       ADD_PALETTE(BASIC::B065L1, 0x00000000);
+       ADD_PALETTE(BASIC::B065L2, 0x00000000);
+       ADD_PALETTE(BASIC::B065L3, 0x00000000);
+       ADD_PALETTE(BASIC::B065L3P, 0x00000000);
+       ADD_PALETTE(BASIC::B065L4, 0xFFEEEEEE);
+       ADD_PALETTE(BASIC::B065L4D, 0x99EEEEEE);
+       ADD_PALETTE(BASIC::B065L4P, 0xFF2A39AC);
+       ADD_PALETTE(BASIC::B065L5, 0x00000000);
+       ADD_PALETTE(BASIC::B071, 0xFF393B41);
+       ADD_PALETTE(BASIC::B0721, 0xFFA09F9A);
+       ADD_PALETTE(BASIC::B0722, 0xFF5D83FF);
+       ADD_PALETTE(BASIC::B0723, 0xFF212428);
+       ADD_PALETTE(BASIC::B0724, 0xFF404040);
+       ADD_PALETTE(BASIC::B0725, 0xFF4F66A7);
+       ADD_PALETTE(BASIC::B0726, 0xFF404040);
+       ADD_PALETTE(BASIC::B0731, 0xFF2B3AAF);
+       ADD_PALETTE(BASIC::B0732, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B0741, 0xFFA09F9A);
+       ADD_PALETTE(BASIC::B0742, 0xFF5D83FF);
+       ADD_PALETTE(BASIC::B0743, 0xFF212428);
+       ADD_PALETTE(BASIC::B0744, 0xFF404040);
+       ADD_PALETTE(BASIC::B0745, 0x00000000);
+       ADD_PALETTE(BASIC::B0751, 0xFF3B73B6);
+       ADD_PALETTE(BASIC::F011L1, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::F011L1P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::F011L1D, 0x7FFAFAFA);
+       ADD_PALETTE(BASIC::F011L2, 0xFF6890FF);
+       ADD_PALETTE(BASIC::F011L2D, 0x996890FF);
+       ADD_PALETTE(BASIC::F011L3, 0xFF6E6F76);
+       ADD_PALETTE(BASIC::F011L3D, 0x996E6F76);
+       ADD_PALETTE(BASIC::F011L4, 0xFF6E6F76);
+       ADD_PALETTE(BASIC::F011L4D, 0x996E6F76);
+       ADD_PALETTE(BASIC::F011L5, 0xFF5D83FF);
+       ADD_PALETTE(BASIC::F011L6, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::F011L7, 0xFF6E6F76);
+       ADD_PALETTE(BASIC::F011L7D, 0x996E6F76);
+       ADD_PALETTE(BASIC::F011L8, 0xFFD10000);
+       ADD_PALETTE(BASIC::F011L9, 0xFFFFFFFF);
+       ADD_PALETTE(BASIC::F011L10, 0xFFF9F9F9);
+       ADD_PALETTE(BASIC::F011L11, 0xFF808080);
+       ADD_PALETTE(BASIC::F011L12, 0xFF4093F7);
+       ADD_PALETTE(BASIC::F011L13, 0x00000000);
+       ADD_PALETTE(BASIC::F011L14, 0x00000000);
+       ADD_PALETTE(BASIC::F011L15, 0xFFD10000);
+       ADD_PALETTE(BASIC::F011L16, 0xFF6E6F76);
+       ADD_PALETTE(BASIC::F011L17, 0xFF8B8B8B);
+       ADD_PALETTE(BASIC::F011L18, 0xFF686868);
+       ADD_PALETTE(BASIC::F011L19, 0xFF6E6F76);
+       ADD_PALETTE(BASIC::F011L20, 0x00000000);
+       ADD_PALETTE(BASIC::F011L21, 0xFF6E6F76);
+       ADD_PALETTE(BASIC::F011L22, 0xFF6E6F76);
+       ADD_PALETTE(BASIC::F011L23, 0xFF1382FF);
+       ADD_PALETTE(BASIC::F021L1i, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::F021L1iP, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::F021L1iD, 0x99FAFAFA);
+       ADD_PALETTE(BASIC::F022L1i, 0xFF6C6E77);
+       ADD_PALETTE(BASIC::F022L2i, 0xFF2B3AAF);
+       ADD_PALETTE(BASIC::F022L2iD, 0x992B3AAF);
+       ADD_PALETTE(BASIC::F031L1, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::F031L1P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::F031L1D, 0x99FAFAFA);
+       ADD_PALETTE(BASIC::F031L2, 0x00000000);
+       ADD_PALETTE(BASIC::F031L2P, 0x00000000);
+       ADD_PALETTE(BASIC::F031L2D, 0x00000000);
+       ADD_PALETTE(BASIC::F031L3, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::F031L3P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::F031L3D, 0x99FAFAFA);
+       ADD_PALETTE(BASIC::F032L1, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::F032L1P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::F032L1D, 0x99FAFAFA);
+       ADD_PALETTE(BASIC::F032L2, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::F032L2P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::F032L2D, 0x99FAFAFA);
+       ADD_PALETTE(BASIC::F032L3, 0xFFF9F9F9);
+       ADD_PALETTE(BASIC::F032L3P, 0xFFF9F9F9);
+       ADD_PALETTE(BASIC::F041i, 0xFF5D6176);
+       ADD_PALETTE(BASIC::F041iD, 0x995D6176);
+       ADD_PALETTE(BASIC::F051, 0xFF485D93);
+       ADD_PALETTE(BASIC::F052, 0xFF3A72FF);
+       ADD_PALETTE(BASIC::F053, 0xFF485D93);
+       ADD_PALETTE(BASIC::F053P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::F053D, 0x99485D93);
+       ADD_PALETTE(BASIC::F054, 0xFF202432);
+       ADD_PALETTE(BASIC::F055, 0xFF3A72FF);
+       ADD_PALETTE(BASIC::W011, 0xFF4B4D56);
+       ADD_PALETTE(BASIC::W011D, 0x994B4D56);
+       ADD_PALETTE(BASIC::W012, 0xFF095FD4);
+       ADD_PALETTE(BASIC::W012D, 0x99095FD4);
+       ADD_PALETTE(BASIC::W012P, 0xFF232F91);
+       ADD_PALETTE(BASIC::W013, 0x00000000);
+       ADD_PALETTE(BASIC::W0141, 0xFFDB0000);
+       ADD_PALETTE(BASIC::W0141P, 0xFFA10808);
+       ADD_PALETTE(BASIC::W0141D, 0x99DB0000);
+       ADD_PALETTE(BASIC::W015, 0xFF343432);
+       ADD_PALETTE(BASIC::W021L1, 0xFF000000);
+       ADD_PALETTE(BASIC::W021L1P, 0xFF2B3AAF);
+       ADD_PALETTE(BASIC::W021L2, 0xFF425790);
+       ADD_PALETTE(BASIC::W021L2P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::W021L3, 0xFF425790);
+       ADD_PALETTE(BASIC::W021L3P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::W021L4, 0xFFF0F0F0);
+       ADD_PALETTE(BASIC::W031L1, 0xFF000000);
+       ADD_PALETTE(BASIC::W031L1D, 0x99000000);
+       ADD_PALETTE(BASIC::W031L2, 0xFF000000);
+       ADD_PALETTE(BASIC::W031L2D, 0x99000000);
+       ADD_PALETTE(BASIC::W032, 0xFF5D6176);
+       ADD_PALETTE(BASIC::W032P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::W032D, 0x99FAFAFA);
+       ADD_PALETTE(BASIC::W041, 0xFFE1DDD1);
+       ADD_PALETTE(BASIC::W051, 0xFF000000);
+       ADD_PALETTE(BASIC::W0611, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::W0611P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::W0611D, 0x99FAFAFA);
+       ADD_PALETTE(BASIC::W062L1, 0xFF555861);
+       ADD_PALETTE(BASIC::W062L1D, 0x99555861);
+       ADD_PALETTE(BASIC::W062L2, 0xFF415BFE);
+       ADD_PALETTE(BASIC::W062L2D, 0x7F415BFE);
+       ADD_PALETTE(BASIC::W062L3, 0xFFD8D7D2);
+       ADD_PALETTE(BASIC::W062L3D, 0x4CD8D7D2);
+       ADD_PALETTE(BASIC::W062L4, 0xFF3677C3);
+       ADD_PALETTE(BASIC::W062L4D, 0x4C3677C3);
+       ADD_PALETTE(BASIC::W062L5, 0xFFC7D3E3);
+       ADD_PALETTE(BASIC::W0631, 0xFFEEEEEE);
+       ADD_PALETTE(BASIC::W0632, 0xFF4C5158);
+       ADD_PALETTE(BASIC::W0641, 0xFF6B6D79);
+       ADD_PALETTE(BASIC::W0641P, 0xFF2A39AC);
+       ADD_PALETTE(BASIC::W0641D, 0x996B6D79);
+       ADD_PALETTE(BASIC::W0651, 0xFF3A3A3A);
+       ADD_PALETTE(BASIC::W0711, 0xFF525767);
+       ADD_PALETTE(BASIC::W0711P, 0xFF2B3AAF);
+       ADD_PALETTE(BASIC::W0711D, 0xFF3E414E);
+       ADD_PALETTE(BASIC::W0712, 0xFF4267A9);
+       ADD_PALETTE(BASIC::W0713, 0xFF2B3AAF);
+       ADD_PALETTE(BASIC::W0714, 0xFF263E5F);
+       ADD_PALETTE(BASIC::W0715, 0xFF2B3AAF);
+       ADD_PALETTE(BASIC::W0721, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::W0721P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::W0721D, 0x99FAFAFA);
+       ADD_PALETTE(BASIC::W0811, 0xFF253296);
+       ADD_PALETTE(BASIC::W0812, 0x00000000);
+       ADD_PALETTE(BASIC::W0813, 0xFF595959);
+       ADD_PALETTE(BASIC::W082, 0x00000000);
+       ADD_PALETTE(BASIC::W083, 0x00000000);
+       ADD_PALETTE(BASIC::W084, 0xB2FAFAFA);
+       ADD_PALETTE(BASIC::W084P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::W085, 0x00000000);
+       ADD_PALETTE(BASIC::W091, 0xFF2B3AAF);
+       ADD_PALETTE(BASIC::W092, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::W101, 0xFF4884D6);
+       ADD_PALETTE(BASIC::W111, 0xFFC8CEDB);
+       ADD_PALETTE(BASIC::W112L1, 0xFF8995AE);
+       ADD_PALETTE(BASIC::W112L2, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::W1121, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::W1122, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::W1123, 0x4C000000);
+       ADD_PALETTE(BASIC::W1211, 0x00000000);
+       ADD_PALETTE(BASIC::W1212, 0x00000000);
+       ADD_PALETTE(BASIC::W1221, 0xFF000000);
+       ADD_PALETTE(BASIC::W1222, 0xFF878580);
+       ADD_PALETTE(BASIC::W1223, 0xFFFFFFFF);
+       ADD_PALETTE(BASIC::W131, 0xFF343739);
+       ADD_PALETTE(BASIC::W132, 0xFF2B3AAF);
+       ADD_PALETTE(BASIC::W141, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::W151, 0x66000000);
+       ADD_PALETTE(BASIC::W152, 0xFF42434B);
+       ADD_PALETTE(BASIC::W153, 0xFF2B3AAF);
+       ADD_PALETTE(BASIC::W154, 0xFF1C1E28);
+       ADD_PALETTE(BASIC::W161, 0xFF001BEA);
 }
 
 void
 _ResourceManager::LoadWhitePalette(void)
 {
-       String theme = L"white";
-       ADD_PALETTE(BASIC::foreground, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::background, 0xFFF8F6EF, theme);
-       ADD_PALETTE(BASIC::B011, 0xFFF8F6EF, theme);
-       ADD_PALETTE(BASIC::B012, 0xFFF8F6EF, theme);
-       ADD_PALETTE(BASIC::B013, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::B014, 0xFFFFFFFF, theme);
-       ADD_PALETTE(BASIC::B015, 0xFF202327, theme);
-       ADD_PALETTE(BASIC::B016, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::B017, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B018, 0xFF6590FF, theme);
-       ADD_PALETTE(BASIC::B0211, 0xFFF8F6EF, theme);
-       ADD_PALETTE(BASIC::B0211D, 0xFFF8F6EF, theme);
-       ADD_PALETTE(BASIC::B0212, 0xFFEDEBE4, theme);
-       ADD_PALETTE(BASIC::B0213, 0xFF5B5656, theme);
-       ADD_PALETTE(BASIC::B0214, 0xFFDCDAD3, theme);
-       ADD_PALETTE(BASIC::B0215, 0xFFDEDCD5, theme);
-       ADD_PALETTE(BASIC::B0216, 0xFFBDBBB5, theme);
-       ADD_PALETTE(BASIC::B0217, 0xFFEFEDE5, theme);
-       ADD_PALETTE(BASIC::B0217D, 0x7FEFEDE5, theme);
-       ADD_PALETTE(BASIC::B0221, 0xFF8A8A8A, theme);
-       ADD_PALETTE(BASIC::B0221L1, 0xFF8A8A8A, theme);
-       ADD_PALETTE(BASIC::B0221L2, 0xFF808080, theme);
-       ADD_PALETTE(BASIC::B0221L3, 0xFF8C8C8C, theme);
-       ADD_PALETTE(BASIC::B0221L4, 0xFFCCCBC7, theme);
-       ADD_PALETTE(BASIC::B0222, 0xFFFFFFFF, theme);
-       ADD_PALETTE(BASIC::B0223, 0xFFD3D1CB, theme);
-       ADD_PALETTE(BASIC::B0224, 0xFFB9B8B2, theme);
-       ADD_PALETTE(BASIC::B0225, 0xFF2A5181, theme);
-       ADD_PALETTE(BASIC::B0226, 0xFF4B73A3, theme);
-       ADD_PALETTE(BASIC::B0227, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::B0228, 0xFF1A5274, theme);
-       ADD_PALETTE(BASIC::B0232, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0233, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B031, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B041, 0xFF5787C2, theme);
-       ADD_PALETTE(BASIC::B041P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B042, 0xFF0079D4, theme);
-       ADD_PALETTE(BASIC::B043, 0xFF5787C2, theme);
-       ADD_PALETTE(BASIC::B044, 0xFF2A89C2, theme);
-       ADD_PALETTE(BASIC::B0511, 0xFFEDEBE4, theme);
-       ADD_PALETTE(BASIC::B0511P, 0xFF0E66AA, theme);
-       ADD_PALETTE(BASIC::B0512, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0513, 0xFF202327, theme);
-       ADD_PALETTE(BASIC::B0514, 0xFFEDEBE4, theme);
-       ADD_PALETTE(BASIC::B0514P1, 0xFF0E66AA, theme);
-       ADD_PALETTE(BASIC::B0514P2, 0xFF007BDA, theme);
-       ADD_PALETTE(BASIC::B0514L3, 0xFF6590FF, theme);
-       ADD_PALETTE(BASIC::B0515L1, 0xFFDEDCD5, theme);
-       ADD_PALETTE(BASIC::B0515L2, 0x7F626262, theme);
-       ADD_PALETTE(BASIC::B0516, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0517, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0517P1, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0517P2, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0518, 0x003567A3, theme);
-       ADD_PALETTE(BASIC::B0518P, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0519, 0xFFF25D28, theme);
-       ADD_PALETTE(BASIC::B0520, 0xFF3567A3, theme);
-       ADD_PALETTE(BASIC::B0520P, 0xFF2A89C2, theme);
-       ADD_PALETTE(BASIC::B052L1, 0xFF656565, theme);
-       ADD_PALETTE(BASIC::B052L1P, 0xFF007BDA, theme);
-       ADD_PALETTE(BASIC::B052L1D, 0x7F656565, theme);
-       ADD_PALETTE(BASIC::B052L2, 0xFF525252, theme);
-       ADD_PALETTE(BASIC::B052L2P, 0xFF4093F7, theme);
-       ADD_PALETTE(BASIC::B052L3, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B052L3P, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B052L4, 0xFF282828, theme);
-       ADD_PALETTE(BASIC::B052L4P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L4D, 0x7F282828, theme);
-       ADD_PALETTE(BASIC::B052L5, 0xFF282828, theme);
-       ADD_PALETTE(BASIC::B052L5D, 0x7F282828, theme);
-       ADD_PALETTE(BASIC::B052L5P, 0xFF007BDA, theme);
-       ADD_PALETTE(BASIC::B052L6, 0xFF282828, theme);
-       ADD_PALETTE(BASIC::B052L6D, 0x7F282828, theme);
-       ADD_PALETTE(BASIC::B052L6P1, 0xFF0E68AD, theme);
-       ADD_PALETTE(BASIC::B052L6P2, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L7, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L8, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L8P, 0xFF4093F7, theme);
-       ADD_PALETTE(BASIC::B052L8D, 0x7FFAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L9, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L9P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L9D, 0x7FFAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L10, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0531, 0xFF202327, theme);
-       ADD_PALETTE(BASIC::B0532, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0533, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0534, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0535, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0536, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0537, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0541, 0xFFF7F5ED, theme);
-       ADD_PALETTE(BASIC::B0541P, 0xFF007AD8, theme);
-       ADD_PALETTE(BASIC::B0541D, 0x7FF7F5ED, theme);
-       ADD_PALETTE(BASIC::B0542, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0542P, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0543, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0544, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0545, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0551, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0552, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0553, 0xFF0C0F14, theme);
-       ADD_PALETTE(BASIC::B0554, 0xFF414447, theme);
-       ADD_PALETTE(BASIC::B0555, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0556, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0557, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0558, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B061L1, 0xFFF8F6EF, theme);
-       ADD_PALETTE(BASIC::B061L2, 0xFFDBD9CE, theme);
-       ADD_PALETTE(BASIC::B061L3, 0xFFD6D3C9, theme);
-       ADD_PALETTE(BASIC::B061L4, 0xFF444444, theme);
-       ADD_PALETTE(BASIC::B061L5, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::B061L6, 0xFF17191C, theme);
-       ADD_PALETTE(BASIC::B0621L1, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0621L2, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0622L1, 0x00444444, theme);
-       ADD_PALETTE(BASIC::B0622L2, 0x3FFFFFFF, theme);
-       ADD_PALETTE(BASIC::B0623L1, 0xFF2D2D2D, theme);
-       ADD_PALETTE(BASIC::B0623L2, 0xFF5B5B5B, theme);
-       ADD_PALETTE(BASIC::B0624L1, 0xFFCDCDCD, theme);
-       ADD_PALETTE(BASIC::B0624L2, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B0624L3, 0xFF303337, theme);
-       ADD_PALETTE(BASIC::B0624L4, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::B0624L5, 0xFF007BDA, theme);
-       ADD_PALETTE(BASIC::B0624L6, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B063L1, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::B063L1P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B063L1D, 0x7F000000, theme);
-       ADD_PALETTE(BASIC::B063L2, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B063L3, 0xFF808080, theme);
-       ADD_PALETTE(BASIC::B063L4, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B063L5, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B063L5D, 0x7FFAFAFA, theme);
-       ADD_PALETTE(BASIC::B063L6, 0xFF454545, theme);
-       ADD_PALETTE(BASIC::B063L6P, 0xFF454545, theme);
-       ADD_PALETTE(BASIC::B063L6D, 0x7F454545, theme);
-       ADD_PALETTE(BASIC::B063L7, 0xFFBABABA, theme);
-       ADD_PALETTE(BASIC::B063L8, 0xFF808080, theme);
-       ADD_PALETTE(BASIC::B063L8P, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B063L8D, 0x7F808080, theme);
-       ADD_PALETTE(BASIC::B063L9, 0xFF252525, theme);
-       ADD_PALETTE(BASIC::B064L1, 0xFF3B73B6, theme);
-       ADD_PALETTE(BASIC::B064L2, 0xFF808080, theme);
-       ADD_PALETTE(BASIC::B064L2P, 0xFF808080, theme);
-       ADD_PALETTE(BASIC::B064L2D, 0xFF808080, theme);
-       ADD_PALETTE(BASIC::B064L3, 0xFF3A3A3A, theme);
-       ADD_PALETTE(BASIC::B064L3P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B064L3D, 0x7F3A3A3A, theme);
-       ADD_PALETTE(BASIC::B065L1, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B065L2, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B065L3, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B065L3P, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B065L4, 0xFFF7F5ED, theme);
-       ADD_PALETTE(BASIC::B065L4D, 0x7FF7F5ED, theme);
-       ADD_PALETTE(BASIC::B065L4P, 0xFF007AD8, theme);
-       ADD_PALETTE(BASIC::B065L5, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B071, 0xFFC6C4BE, theme);
-       ADD_PALETTE(BASIC::B0721, 0xFFA09F9A, theme);
-       ADD_PALETTE(BASIC::B0722, 0xFF3B73B6, theme);
-       ADD_PALETTE(BASIC::B0723, 0xFFF8F6EF, theme);
-       ADD_PALETTE(BASIC::B0724, 0xFFD1CFC9, theme);
-       ADD_PALETTE(BASIC::B0725, 0xFF3B73B6, theme);
-       ADD_PALETTE(BASIC::B0726, 0xFFE2DFD5, theme);
-       ADD_PALETTE(BASIC::B0731, 0xFF3B73B6, theme);
-       ADD_PALETTE(BASIC::B0732, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B0741, 0xFFA09F9A, theme);
-       ADD_PALETTE(BASIC::B0742, 0xFF3B73B6, theme);
-       ADD_PALETTE(BASIC::B0743, 0xFFE6E3D8, theme);
-       ADD_PALETTE(BASIC::B0744, 0xFFC5C2B7, theme);
-       ADD_PALETTE(BASIC::B0745, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0751, 0xFF3B73B6, theme);
-       ADD_PALETTE(BASIC::F011L1, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::F011L1P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F011L1D, 0x7F000000, theme);
-       ADD_PALETTE(BASIC::F011L2, 0xFF3B73B6, theme);
-       ADD_PALETTE(BASIC::F011L2D, 0x7F3B73B6, theme);
-       ADD_PALETTE(BASIC::F011L3, 0xFF4F4F4F, theme);
-       ADD_PALETTE(BASIC::F011L3D, 0xFF4F4F4F, theme);
-       ADD_PALETTE(BASIC::F011L4, 0xFF4F4F4F, theme);
-       ADD_PALETTE(BASIC::F011L4D, 0x7F4F4F4F, theme);
-       ADD_PALETTE(BASIC::F011L5, 0xFF3B73B6, theme);
-       ADD_PALETTE(BASIC::F011L6, 0xFF808080, theme);
-       ADD_PALETTE(BASIC::F011L7, 0xFF686866, theme);
-       ADD_PALETTE(BASIC::F011L7D, 0xCC686866, theme);
-       ADD_PALETTE(BASIC::F011L8, 0xFFC24747, theme);
-       ADD_PALETTE(BASIC::F011L9, 0xFFFFFFFF, theme);
-       ADD_PALETTE(BASIC::F011L10, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F011L11, 0xFF808080, theme);
-       ADD_PALETTE(BASIC::F011L12, 0xFF4093F7, theme);
-       ADD_PALETTE(BASIC::F011L13, 0x00000000, theme);
-       ADD_PALETTE(BASIC::F011L14, 0x00000000, theme);
-       ADD_PALETTE(BASIC::F011L15, 0xFFE94949, theme);
-       ADD_PALETTE(BASIC::F011L16, 0xFF8B8B8B, theme);
-       ADD_PALETTE(BASIC::F011L17, 0xFF8B8B8B, theme);
-       ADD_PALETTE(BASIC::F011L18, 0xFF686868, theme);
-       ADD_PALETTE(BASIC::F011L19, 0xFF8B8B8B, theme);
-       ADD_PALETTE(BASIC::F011L20, 0x00000000, theme);
-       ADD_PALETTE(BASIC::F011L21, 0xFF808080, theme);
-       ADD_PALETTE(BASIC::F011L22, 0xFF9A9A9A, theme);
-       ADD_PALETTE(BASIC::F011L23, 0xFF1382FF, theme);
-       ADD_PALETTE(BASIC::F021L1i, 0xFF808080, theme);
-       ADD_PALETTE(BASIC::F021L1iP, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F021L1iD, 0x7F808080, theme);
-       ADD_PALETTE(BASIC::F022L1i, 0xFFB8B8B8, theme);
-       ADD_PALETTE(BASIC::F022L2i, 0xFF4C85C9, theme);
-       ADD_PALETTE(BASIC::F022L2iD, 0x4C4C85C9, theme);
-       ADD_PALETTE(BASIC::F031L1, 0xFF282828, theme);
-       ADD_PALETTE(BASIC::F031L1P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F031L1D, 0x7F282828, theme);
-       ADD_PALETTE(BASIC::F031L2, 0x00000000, theme);
-       ADD_PALETTE(BASIC::F031L2P, 0x00000000, theme);
-       ADD_PALETTE(BASIC::F031L2D, 0x00000000, theme);
-       ADD_PALETTE(BASIC::F031L3, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F031L3P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F031L3D, 0x7FFAFAFA, theme);
-       ADD_PALETTE(BASIC::F032L1, 0xFF282828, theme);
-       ADD_PALETTE(BASIC::F032L1P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F032L1D, 0x7F282828, theme);
-       ADD_PALETTE(BASIC::F032L2, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F032L2P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F032L2D, 0x7FFAFAFA, theme);
-       ADD_PALETTE(BASIC::F032L3, 0xFFF9F9F9, theme);
-       ADD_PALETTE(BASIC::F032L3P, 0xFFF9F9F9, theme);
-       ADD_PALETTE(BASIC::F041i, 0xFF808080, theme);
-       ADD_PALETTE(BASIC::F041iD, 0x7F808080, theme);
-       ADD_PALETTE(BASIC::F051, 0xFF90A9C7, theme);
-       ADD_PALETTE(BASIC::F052, 0xFF007BDB, theme);
-       ADD_PALETTE(BASIC::F053, 0xFF808080, theme);
-       ADD_PALETTE(BASIC::F053P, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::F053D, 0x7F808080, theme);
-       ADD_PALETTE(BASIC::F054, 0xFFE3E1D9, theme);
-       ADD_PALETTE(BASIC::F055, 0xFF007BDA, theme);
-       ADD_PALETTE(BASIC::W011, 0xFFF7F5ED, theme);
-       ADD_PALETTE(BASIC::W011D, 0x7FF7F5ED, theme);
-       ADD_PALETTE(BASIC::W012, 0xFF0058D0, theme);
-       ADD_PALETTE(BASIC::W012D, 0x7F0058D0, theme);
-       ADD_PALETTE(BASIC::W012P, 0xFF0051BF, theme);
-       ADD_PALETTE(BASIC::W013, 0x00000000, theme);
-       ADD_PALETTE(BASIC::W0141, 0xFFC12C21, theme);
-       ADD_PALETTE(BASIC::W0141P, 0xFFC12C21, theme);
-       ADD_PALETTE(BASIC::W0141D, 0x7FC12C21, theme);
-       ADD_PALETTE(BASIC::W015, 0xFF343432, theme);
-       ADD_PALETTE(BASIC::W021L1, 0xFFF8F6EF, theme);
-       ADD_PALETTE(BASIC::W021L1P, 0xFF5787C2, theme);
-       ADD_PALETTE(BASIC::W021L2, 0xFF0E68AD, theme);
-       ADD_PALETTE(BASIC::W021L2P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W021L3, 0xFF0E68AD, theme);
-       ADD_PALETTE(BASIC::W021L3P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W021L4, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::W031L1, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W031L1D, 0x7FFAFAFA, theme);
-       ADD_PALETTE(BASIC::W031L2, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W031L2D, 0x7FFAFAFA, theme);
-       ADD_PALETTE(BASIC::W032, 0xFF878580, theme);
-       ADD_PALETTE(BASIC::W032P, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::W032D, 0x7F878580, theme);
-       ADD_PALETTE(BASIC::W041, 0xFF17191C, theme);
-       ADD_PALETTE(BASIC::W051, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::W0611, 0xFF3B73B6, theme);
-       ADD_PALETTE(BASIC::W0611P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W0611D, 0x7F3B73B6, theme);
-       ADD_PALETTE(BASIC::W062L1, 0xFFC5C5C5, theme);
-       ADD_PALETTE(BASIC::W062L1D, 0x4CC5C5C5, theme);
-       ADD_PALETTE(BASIC::W062L2, 0xFF007DDE, theme);
-       ADD_PALETTE(BASIC::W062L2D, 0x7F007DDE, theme);
-       ADD_PALETTE(BASIC::W062L3, 0xFF615F5B, theme);
-       ADD_PALETTE(BASIC::W062L3D, 0x4C615F5B, theme);
-       ADD_PALETTE(BASIC::W062L4, 0xFF70A9EE, theme);
-       ADD_PALETTE(BASIC::W062L4D, 0x4C70A9EE, theme);
-       ADD_PALETTE(BASIC::W062L5, 0xFF223148, theme);
-       ADD_PALETTE(BASIC::W0631, 0xFF656565, theme);
-       ADD_PALETTE(BASIC::W0632, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W0641, 0xFFF7F5ED, theme);
-       ADD_PALETTE(BASIC::W0641P, 0xFF0079D4, theme);
-       ADD_PALETTE(BASIC::W0641D, 0x7FF7F5ED, theme);
-       ADD_PALETTE(BASIC::W0651, 0xFFBFBFBF, theme);
-       ADD_PALETTE(BASIC::W0711, 0xFF6C90BC, theme);
-       ADD_PALETTE(BASIC::W0711P, 0xFF4093F7, theme);
-       ADD_PALETTE(BASIC::W0711D, 0xFF607DA1, theme);
-       ADD_PALETTE(BASIC::W0712, 0x00000000, theme);
-       ADD_PALETTE(BASIC::W0713, 0xFF4093F7, theme);
-       ADD_PALETTE(BASIC::W0714, 0x00000000, theme);
-       ADD_PALETTE(BASIC::W0715, 0xFF2889FF, theme);
-       ADD_PALETTE(BASIC::W0721, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W0721P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W0721D, 0x99FAFAFA, theme);
-       ADD_PALETTE(BASIC::W0811, 0xFF5787C2, theme);
-       ADD_PALETTE(BASIC::W0812, 0x00000000, theme);
-       ADD_PALETTE(BASIC::W0813, 0xFF494949, theme);
-       ADD_PALETTE(BASIC::W082, 0x00000000, theme);
-       ADD_PALETTE(BASIC::W083, 0x00000000, theme);
-       ADD_PALETTE(BASIC::W084, 0xB2FAFAFA, theme);
-       ADD_PALETTE(BASIC::W084P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W085, 0x00000000, theme);
-       ADD_PALETTE(BASIC::W091, 0xFF444444, theme);
-       ADD_PALETTE(BASIC::W092, 0xFFFFFFFF, theme);
-       ADD_PALETTE(BASIC::W101, 0xFF5893E4, theme);
-       ADD_PALETTE(BASIC::W111, 0xFFE7E5DE, theme);
-       ADD_PALETTE(BASIC::W112L1, 0xFFB4B4B4, theme);
-       ADD_PALETTE(BASIC::W112L2, 0xFFFFFFFF, theme);
-       ADD_PALETTE(BASIC::W1121, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::W1122, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::W1123, 0x4C000000, theme);
-       ADD_PALETTE(BASIC::W1211, 0x00000000, theme);
-       ADD_PALETTE(BASIC::W1212, 0x00000000, theme);
-       ADD_PALETTE(BASIC::W1221, 0x00000000, theme);
-       ADD_PALETTE(BASIC::W1222, 0x00000000, theme);
-       ADD_PALETTE(BASIC::W1223, 0x00000000, theme);
-       ADD_PALETTE(BASIC::W131, 0xFF959595, theme);
-       ADD_PALETTE(BASIC::W132, 0xFF5787C2, theme);
-       ADD_PALETTE(BASIC::W141, 0xFF808080, theme);
-       ADD_PALETTE(BASIC::W151, 0xFF95948F, theme);
-       ADD_PALETTE(BASIC::W152, 0xFF878787, theme);
-       ADD_PALETTE(BASIC::W153, 0xFF5787C2, theme);
-       ADD_PALETTE(BASIC::W154, 0xFFEFECE0, theme);
-       ADD_PALETTE(BASIC::W161, 0xFF007BDA, theme);
+       ADD_PALETTE(BASIC::foreground, 0xFF000000);
+       ADD_PALETTE(BASIC::background, 0xFFF8F6EF);
+       ADD_PALETTE(BASIC::B011, 0xFFF8F6EF);
+       ADD_PALETTE(BASIC::B012, 0xFFF8F6EF);
+       ADD_PALETTE(BASIC::B013, 0xFF000000);
+       ADD_PALETTE(BASIC::B014, 0xFFFFFFFF);
+       ADD_PALETTE(BASIC::B015, 0xFF202327);
+       ADD_PALETTE(BASIC::B016, 0xFF000000);
+       ADD_PALETTE(BASIC::B017, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B018, 0xFF6590FF);
+       ADD_PALETTE(BASIC::B0211, 0xFFF8F6EF);
+       ADD_PALETTE(BASIC::B0211D, 0xFFF8F6EF);
+       ADD_PALETTE(BASIC::B0212, 0xFFEDEBE4);
+       ADD_PALETTE(BASIC::B0213, 0xFF5B5656);
+       ADD_PALETTE(BASIC::B0214, 0xFFDCDAD3);
+       ADD_PALETTE(BASIC::B0215, 0xFFDEDCD5);
+       ADD_PALETTE(BASIC::B0216, 0xFFBDBBB5);
+       ADD_PALETTE(BASIC::B0217, 0xFFEFEDE5);
+       ADD_PALETTE(BASIC::B0217D, 0x7FEFEDE5);
+       ADD_PALETTE(BASIC::B0221, 0xFF8A8A8A);
+       ADD_PALETTE(BASIC::B0221L1, 0xFF8A8A8A);
+       ADD_PALETTE(BASIC::B0221L2, 0xFF808080);
+       ADD_PALETTE(BASIC::B0221L3, 0xFF8C8C8C);
+       ADD_PALETTE(BASIC::B0221L4, 0xFFCCCBC7);
+       ADD_PALETTE(BASIC::B0222, 0xFFFFFFFF);
+       ADD_PALETTE(BASIC::B0223, 0xFFD3D1CB);
+       ADD_PALETTE(BASIC::B0224, 0xFFB9B8B2);
+       ADD_PALETTE(BASIC::B0225, 0xFF2A5181);
+       ADD_PALETTE(BASIC::B0226, 0xFF4B73A3);
+       ADD_PALETTE(BASIC::B0227, 0xFF000000);
+       ADD_PALETTE(BASIC::B0228, 0xFF1A5274);
+       ADD_PALETTE(BASIC::B0232, 0x00000000);
+       ADD_PALETTE(BASIC::B0233, 0x00000000);
+       ADD_PALETTE(BASIC::B031, 0x00000000);
+       ADD_PALETTE(BASIC::B041, 0xFF5787C2);
+       ADD_PALETTE(BASIC::B041P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B042, 0xFF0079D4);
+       ADD_PALETTE(BASIC::B043, 0xFF5787C2);
+       ADD_PALETTE(BASIC::B044, 0xFF2A89C2);
+       ADD_PALETTE(BASIC::B0511, 0xFFEDEBE4);
+       ADD_PALETTE(BASIC::B0511P, 0xFF0E66AA);
+       ADD_PALETTE(BASIC::B0512, 0x00000000);
+       ADD_PALETTE(BASIC::B0513, 0xFF202327);
+       ADD_PALETTE(BASIC::B0514, 0xFFEDEBE4);
+       ADD_PALETTE(BASIC::B0514P1, 0xFF0E66AA);
+       ADD_PALETTE(BASIC::B0514P2, 0xFF007BDA);
+       ADD_PALETTE(BASIC::B0514L3, 0xFF6590FF);
+       ADD_PALETTE(BASIC::B0515L1, 0xFFDEDCD5);
+       ADD_PALETTE(BASIC::B0515L2, 0x7F626262);
+       ADD_PALETTE(BASIC::B0516, 0x00000000);
+       ADD_PALETTE(BASIC::B0517, 0x00000000);
+       ADD_PALETTE(BASIC::B0517P1, 0x00000000);
+       ADD_PALETTE(BASIC::B0517P2, 0x00000000);
+       ADD_PALETTE(BASIC::B0518, 0x003567A3);
+       ADD_PALETTE(BASIC::B0518P, 0x00000000);
+       ADD_PALETTE(BASIC::B0519, 0xFFF25D28);
+       ADD_PALETTE(BASIC::B0520, 0xFF3567A3);
+       ADD_PALETTE(BASIC::B0520P, 0xFF2A89C2);
+       ADD_PALETTE(BASIC::B052L1, 0xFF656565);
+       ADD_PALETTE(BASIC::B052L1P, 0xFF007BDA);
+       ADD_PALETTE(BASIC::B052L1D, 0x7F656565);
+       ADD_PALETTE(BASIC::B052L2, 0xFF525252);
+       ADD_PALETTE(BASIC::B052L2P, 0xFF4093F7);
+       ADD_PALETTE(BASIC::B052L3, 0x00000000);
+       ADD_PALETTE(BASIC::B052L3P, 0x00000000);
+       ADD_PALETTE(BASIC::B052L4, 0xFF282828);
+       ADD_PALETTE(BASIC::B052L4P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B052L4D, 0x7F282828);
+       ADD_PALETTE(BASIC::B052L5, 0xFF282828);
+       ADD_PALETTE(BASIC::B052L5D, 0x7F282828);
+       ADD_PALETTE(BASIC::B052L5P, 0xFF007BDA);
+       ADD_PALETTE(BASIC::B052L6, 0xFF282828);
+       ADD_PALETTE(BASIC::B052L6D, 0x7F282828);
+       ADD_PALETTE(BASIC::B052L6P1, 0xFF0E68AD);
+       ADD_PALETTE(BASIC::B052L6P2, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B052L7, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B052L8, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B052L8P, 0xFF4093F7);
+       ADD_PALETTE(BASIC::B052L8D, 0x7FFAFAFA);
+       ADD_PALETTE(BASIC::B052L9, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B052L9P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B052L9D, 0x7FFAFAFA);
+       ADD_PALETTE(BASIC::B052L10, 0x00000000);
+       ADD_PALETTE(BASIC::B0531, 0xFF202327);
+       ADD_PALETTE(BASIC::B0532, 0x00000000);
+       ADD_PALETTE(BASIC::B0533, 0x00000000);
+       ADD_PALETTE(BASIC::B0534, 0x00000000);
+       ADD_PALETTE(BASIC::B0535, 0x00000000);
+       ADD_PALETTE(BASIC::B0536, 0x00000000);
+       ADD_PALETTE(BASIC::B0537, 0x00000000);
+       ADD_PALETTE(BASIC::B0541, 0xFFF7F5ED);
+       ADD_PALETTE(BASIC::B0541P, 0xFF007AD8);
+       ADD_PALETTE(BASIC::B0541D, 0x7FF7F5ED);
+       ADD_PALETTE(BASIC::B0542, 0x00000000);
+       ADD_PALETTE(BASIC::B0542P, 0x00000000);
+       ADD_PALETTE(BASIC::B0543, 0x00000000);
+       ADD_PALETTE(BASIC::B0544, 0x00000000);
+       ADD_PALETTE(BASIC::B0545, 0x00000000);
+       ADD_PALETTE(BASIC::B0551, 0x00000000);
+       ADD_PALETTE(BASIC::B0552, 0x00000000);
+       ADD_PALETTE(BASIC::B0553, 0xFF0C0F14);
+       ADD_PALETTE(BASIC::B0554, 0xFF414447);
+       ADD_PALETTE(BASIC::B0555, 0x00000000);
+       ADD_PALETTE(BASIC::B0556, 0x00000000);
+       ADD_PALETTE(BASIC::B0557, 0x00000000);
+       ADD_PALETTE(BASIC::B0558, 0x00000000);
+       ADD_PALETTE(BASIC::B061L1, 0xFFF8F6EF);
+       ADD_PALETTE(BASIC::B061L2, 0xFFDBD9CE);
+       ADD_PALETTE(BASIC::B061L3, 0xFFD6D3C9);
+       ADD_PALETTE(BASIC::B061L4, 0xFF444444);
+       ADD_PALETTE(BASIC::B061L5, 0xFF000000);
+       ADD_PALETTE(BASIC::B061L6, 0xFF17191C);
+       ADD_PALETTE(BASIC::B0621L1, 0x00000000);
+       ADD_PALETTE(BASIC::B0621L2, 0x00000000);
+       ADD_PALETTE(BASIC::B0622L1, 0x00444444);
+       ADD_PALETTE(BASIC::B0622L2, 0x3FFFFFFF);
+       ADD_PALETTE(BASIC::B0623L1, 0xFF2D2D2D);
+       ADD_PALETTE(BASIC::B0623L2, 0xFF5B5B5B);
+       ADD_PALETTE(BASIC::B0624L1, 0xFFCDCDCD);
+       ADD_PALETTE(BASIC::B0624L2, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B0624L3, 0xFF303337);
+       ADD_PALETTE(BASIC::B0624L4, 0xFF000000);
+       ADD_PALETTE(BASIC::B0624L5, 0xFF007BDA);
+       ADD_PALETTE(BASIC::B0624L6, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B063L1, 0xFF000000);
+       ADD_PALETTE(BASIC::B063L1P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B063L1D, 0x7F000000);
+       ADD_PALETTE(BASIC::B063L2, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B063L3, 0xFF808080);
+       ADD_PALETTE(BASIC::B063L4, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B063L5, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B063L5D, 0x7FFAFAFA);
+       ADD_PALETTE(BASIC::B063L6, 0xFF454545);
+       ADD_PALETTE(BASIC::B063L6P, 0xFF454545);
+       ADD_PALETTE(BASIC::B063L6D, 0x7F454545);
+       ADD_PALETTE(BASIC::B063L7, 0xFFBABABA);
+       ADD_PALETTE(BASIC::B063L8, 0xFF808080);
+       ADD_PALETTE(BASIC::B063L8P, 0x00000000);
+       ADD_PALETTE(BASIC::B063L8D, 0x7F808080);
+       ADD_PALETTE(BASIC::B063L9, 0xFF252525);
+       ADD_PALETTE(BASIC::B064L1, 0xFF3B73B6);
+       ADD_PALETTE(BASIC::B064L2, 0xFF808080);
+       ADD_PALETTE(BASIC::B064L2P, 0xFF808080);
+       ADD_PALETTE(BASIC::B064L2D, 0xFF808080);
+       ADD_PALETTE(BASIC::B064L3, 0xFF3A3A3A);
+       ADD_PALETTE(BASIC::B064L3P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B064L3D, 0x7F3A3A3A);
+       ADD_PALETTE(BASIC::B065L1, 0x00000000);
+       ADD_PALETTE(BASIC::B065L2, 0x00000000);
+       ADD_PALETTE(BASIC::B065L3, 0x00000000);
+       ADD_PALETTE(BASIC::B065L3P, 0x00000000);
+       ADD_PALETTE(BASIC::B065L4, 0xFFF7F5ED);
+       ADD_PALETTE(BASIC::B065L4D, 0x7FF7F5ED);
+       ADD_PALETTE(BASIC::B065L4P, 0xFF007AD8);
+       ADD_PALETTE(BASIC::B065L5, 0x00000000);
+       ADD_PALETTE(BASIC::B071, 0xFFC6C4BE);
+       ADD_PALETTE(BASIC::B0721, 0xFFA09F9A);
+       ADD_PALETTE(BASIC::B0722, 0xFF3B73B6);
+       ADD_PALETTE(BASIC::B0723, 0xFFF8F6EF);
+       ADD_PALETTE(BASIC::B0724, 0xFFD1CFC9);
+       ADD_PALETTE(BASIC::B0725, 0xFF3B73B6);
+       ADD_PALETTE(BASIC::B0726, 0xFFE2DFD5);
+       ADD_PALETTE(BASIC::B0731, 0xFF3B73B6);
+       ADD_PALETTE(BASIC::B0732, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::B0741, 0xFFA09F9A);
+       ADD_PALETTE(BASIC::B0742, 0xFF3B73B6);
+       ADD_PALETTE(BASIC::B0743, 0xFFE6E3D8);
+       ADD_PALETTE(BASIC::B0744, 0xFFC5C2B7);
+       ADD_PALETTE(BASIC::B0745, 0x00000000);
+       ADD_PALETTE(BASIC::B0751, 0xFF3B73B6);
+       ADD_PALETTE(BASIC::F011L1, 0xFF000000);
+       ADD_PALETTE(BASIC::F011L1P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::F011L1D, 0x7F000000);
+       ADD_PALETTE(BASIC::F011L2, 0xFF3B73B6);
+       ADD_PALETTE(BASIC::F011L2D, 0x7F3B73B6);
+       ADD_PALETTE(BASIC::F011L3, 0xFF4F4F4F);
+       ADD_PALETTE(BASIC::F011L3D, 0xFF4F4F4F);
+       ADD_PALETTE(BASIC::F011L4, 0xFF4F4F4F);
+       ADD_PALETTE(BASIC::F011L4D, 0x7F4F4F4F);
+       ADD_PALETTE(BASIC::F011L5, 0xFF3B73B6);
+       ADD_PALETTE(BASIC::F011L6, 0xFF808080);
+       ADD_PALETTE(BASIC::F011L7, 0xFF686866);
+       ADD_PALETTE(BASIC::F011L7D, 0xCC686866);
+       ADD_PALETTE(BASIC::F011L8, 0xFFC24747);
+       ADD_PALETTE(BASIC::F011L9, 0xFFFFFFFF);
+       ADD_PALETTE(BASIC::F011L10, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::F011L11, 0xFF808080);
+       ADD_PALETTE(BASIC::F011L12, 0xFF4093F7);
+       ADD_PALETTE(BASIC::F011L13, 0x00000000);
+       ADD_PALETTE(BASIC::F011L14, 0x00000000);
+       ADD_PALETTE(BASIC::F011L15, 0xFFE94949);
+       ADD_PALETTE(BASIC::F011L16, 0xFF8B8B8B);
+       ADD_PALETTE(BASIC::F011L17, 0xFF8B8B8B);
+       ADD_PALETTE(BASIC::F011L18, 0xFF686868);
+       ADD_PALETTE(BASIC::F011L19, 0xFF8B8B8B);
+       ADD_PALETTE(BASIC::F011L20, 0x00000000);
+       ADD_PALETTE(BASIC::F011L21, 0xFF808080);
+       ADD_PALETTE(BASIC::F011L22, 0xFF9A9A9A);
+       ADD_PALETTE(BASIC::F011L23, 0xFF1382FF);
+       ADD_PALETTE(BASIC::F021L1i, 0xFF808080);
+       ADD_PALETTE(BASIC::F021L1iP, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::F021L1iD, 0x7F808080);
+       ADD_PALETTE(BASIC::F022L1i, 0xFFB8B8B8);
+       ADD_PALETTE(BASIC::F022L2i, 0xFF4C85C9);
+       ADD_PALETTE(BASIC::F022L2iD, 0x4C4C85C9);
+       ADD_PALETTE(BASIC::F031L1, 0xFF282828);
+       ADD_PALETTE(BASIC::F031L1P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::F031L1D, 0x7F282828);
+       ADD_PALETTE(BASIC::F031L2, 0x00000000);
+       ADD_PALETTE(BASIC::F031L2P, 0x00000000);
+       ADD_PALETTE(BASIC::F031L2D, 0x00000000);
+       ADD_PALETTE(BASIC::F031L3, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::F031L3P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::F031L3D, 0x7FFAFAFA);
+       ADD_PALETTE(BASIC::F032L1, 0xFF282828);
+       ADD_PALETTE(BASIC::F032L1P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::F032L1D, 0x7F282828);
+       ADD_PALETTE(BASIC::F032L2, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::F032L2P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::F032L2D, 0x7FFAFAFA);
+       ADD_PALETTE(BASIC::F032L3, 0xFFF9F9F9);
+       ADD_PALETTE(BASIC::F032L3P, 0xFFF9F9F9);
+       ADD_PALETTE(BASIC::F041i, 0xFF808080);
+       ADD_PALETTE(BASIC::F041iD, 0x7F808080);
+       ADD_PALETTE(BASIC::F051, 0xFF90A9C7);
+       ADD_PALETTE(BASIC::F052, 0xFF007BDB);
+       ADD_PALETTE(BASIC::F053, 0xFF808080);
+       ADD_PALETTE(BASIC::F053P, 0xFF000000);
+       ADD_PALETTE(BASIC::F053D, 0x7F808080);
+       ADD_PALETTE(BASIC::F054, 0xFFE3E1D9);
+       ADD_PALETTE(BASIC::F055, 0xFF007BDA);
+       ADD_PALETTE(BASIC::W011, 0xFFF7F5ED);
+       ADD_PALETTE(BASIC::W011D, 0x7FF7F5ED);
+       ADD_PALETTE(BASIC::W012, 0xFF0058D0);
+       ADD_PALETTE(BASIC::W012D, 0x7F0058D0);
+       ADD_PALETTE(BASIC::W012P, 0xFF0051BF);
+       ADD_PALETTE(BASIC::W013, 0x00000000);
+       ADD_PALETTE(BASIC::W0141, 0xFFC12C21);
+       ADD_PALETTE(BASIC::W0141P, 0xFFC12C21);
+       ADD_PALETTE(BASIC::W0141D, 0x7FC12C21);
+       ADD_PALETTE(BASIC::W015, 0xFF343432);
+       ADD_PALETTE(BASIC::W021L1, 0xFFF8F6EF);
+       ADD_PALETTE(BASIC::W021L1P, 0xFF5787C2);
+       ADD_PALETTE(BASIC::W021L2, 0xFF0E68AD);
+       ADD_PALETTE(BASIC::W021L2P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::W021L3, 0xFF0E68AD);
+       ADD_PALETTE(BASIC::W021L3P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::W021L4, 0xFF000000);
+       ADD_PALETTE(BASIC::W031L1, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::W031L1D, 0x7FFAFAFA);
+       ADD_PALETTE(BASIC::W031L2, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::W031L2D, 0x7FFAFAFA);
+       ADD_PALETTE(BASIC::W032, 0xFF878580);
+       ADD_PALETTE(BASIC::W032P, 0xFF000000);
+       ADD_PALETTE(BASIC::W032D, 0x7F878580);
+       ADD_PALETTE(BASIC::W041, 0xFF17191C);
+       ADD_PALETTE(BASIC::W051, 0xFF000000);
+       ADD_PALETTE(BASIC::W0611, 0xFF3B73B6);
+       ADD_PALETTE(BASIC::W0611P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::W0611D, 0x7F3B73B6);
+       ADD_PALETTE(BASIC::W062L1, 0xFFC5C5C5);
+       ADD_PALETTE(BASIC::W062L1D, 0x4CC5C5C5);
+       ADD_PALETTE(BASIC::W062L2, 0xFF007DDE);
+       ADD_PALETTE(BASIC::W062L2D, 0x7F007DDE);
+       ADD_PALETTE(BASIC::W062L3, 0xFF615F5B);
+       ADD_PALETTE(BASIC::W062L3D, 0x4C615F5B);
+       ADD_PALETTE(BASIC::W062L4, 0xFF70A9EE);
+       ADD_PALETTE(BASIC::W062L4D, 0x4C70A9EE);
+       ADD_PALETTE(BASIC::W062L5, 0xFF223148);
+       ADD_PALETTE(BASIC::W0631, 0xFF656565);
+       ADD_PALETTE(BASIC::W0632, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::W0641, 0xFFF7F5ED);
+       ADD_PALETTE(BASIC::W0641P, 0xFF0079D4);
+       ADD_PALETTE(BASIC::W0641D, 0x7FF7F5ED);
+       ADD_PALETTE(BASIC::W0651, 0xFFBFBFBF);
+       ADD_PALETTE(BASIC::W0711, 0xFF6C90BC);
+       ADD_PALETTE(BASIC::W0711P, 0xFF4093F7);
+       ADD_PALETTE(BASIC::W0711D, 0xFF607DA1);
+       ADD_PALETTE(BASIC::W0712, 0x00000000);
+       ADD_PALETTE(BASIC::W0713, 0xFF4093F7);
+       ADD_PALETTE(BASIC::W0714, 0x00000000);
+       ADD_PALETTE(BASIC::W0715, 0xFF2889FF);
+       ADD_PALETTE(BASIC::W0721, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::W0721P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::W0721D, 0x99FAFAFA);
+       ADD_PALETTE(BASIC::W0811, 0xFF5787C2);
+       ADD_PALETTE(BASIC::W0812, 0x00000000);
+       ADD_PALETTE(BASIC::W0813, 0xFF494949);
+       ADD_PALETTE(BASIC::W082, 0x00000000);
+       ADD_PALETTE(BASIC::W083, 0x00000000);
+       ADD_PALETTE(BASIC::W084, 0xB2FAFAFA);
+       ADD_PALETTE(BASIC::W084P, 0xFFFAFAFA);
+       ADD_PALETTE(BASIC::W085, 0x00000000);
+       ADD_PALETTE(BASIC::W091, 0xFF444444);
+       ADD_PALETTE(BASIC::W092, 0xFFFFFFFF);
+       ADD_PALETTE(BASIC::W101, 0xFF5893E4);
+       ADD_PALETTE(BASIC::W111, 0xFFE7E5DE);
+       ADD_PALETTE(BASIC::W112L1, 0xFFB4B4B4);
+       ADD_PALETTE(BASIC::W112L2, 0xFFFFFFFF);
+       ADD_PALETTE(BASIC::W1121, 0xFF000000);
+       ADD_PALETTE(BASIC::W1122, 0xFF000000);
+       ADD_PALETTE(BASIC::W1123, 0x4C000000);
+       ADD_PALETTE(BASIC::W1211, 0x00000000);
+       ADD_PALETTE(BASIC::W1212, 0x00000000);
+       ADD_PALETTE(BASIC::W1221, 0x00000000);
+       ADD_PALETTE(BASIC::W1222, 0x00000000);
+       ADD_PALETTE(BASIC::W1223, 0x00000000);
+       ADD_PALETTE(BASIC::W131, 0xFF959595);
+       ADD_PALETTE(BASIC::W132, 0xFF5787C2);
+       ADD_PALETTE(BASIC::W141, 0xFF808080);
+       ADD_PALETTE(BASIC::W151, 0xFF95948F);
+       ADD_PALETTE(BASIC::W152, 0xFF878787);
+       ADD_PALETTE(BASIC::W153, 0xFF5787C2);
+       ADD_PALETTE(BASIC::W154, 0xFFEFECE0);
+       ADD_PALETTE(BASIC::W161, 0xFF007BDA);
 }
 
+#undef ADD_PALETTE
+
 void
 _ResourceManager::LoadDefaultPalette(void)
 {
-       String theme = L"default";
-       ADD_PALETTE(BASIC::foreground, 0xFFFFFFFF, theme);
-       ADD_PALETTE(BASIC::background, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::B011, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::B012, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::B013, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::B014, 0xFFFFFFFF, theme);
-       ADD_PALETTE(BASIC::B015, 0xFFF8F6EF, theme);
-       ADD_PALETTE(BASIC::B016, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::B017, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::B018, 0xFF6590FF, theme);
-       ADD_PALETTE(BASIC::B0211, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::B0211D, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::B0212, 0xFF1C1E28, theme);
-       ADD_PALETTE(BASIC::B0213, 0xFF404040, theme);
-       ADD_PALETTE(BASIC::B0214, 0xFF222C47, theme);
-       ADD_PALETTE(BASIC::B0215, 0xFF1D263C, theme);
-       ADD_PALETTE(BASIC::B0216, 0xFF222C47, theme);
-       ADD_PALETTE(BASIC::B0217, 0xFF11131B, theme);
-       ADD_PALETTE(BASIC::B0217D, 0x7F11131B, theme);
-       ADD_PALETTE(BASIC::B0221, 0xFFFFFFFF, theme);
-       ADD_PALETTE(BASIC::B0221L1, 0xFF838CA3, theme);
-       ADD_PALETTE(BASIC::B0221L2, 0xFF697082, theme);
-       ADD_PALETTE(BASIC::B0221L3, 0xFF6B707E, theme);
-       ADD_PALETTE(BASIC::B0221L4, 0xFF525252, theme);
-       ADD_PALETTE(BASIC::B0222, 0xFF404040, theme);
-       ADD_PALETTE(BASIC::B0223, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0224, 0xFF27282B, theme);
-       ADD_PALETTE(BASIC::B0225, 0xFF2A5181, theme);
-       ADD_PALETTE(BASIC::B0226, 0xFF4B73A3, theme);
-       ADD_PALETTE(BASIC::B0227, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::B0228, 0xFF1A5274, theme);
-       ADD_PALETTE(BASIC::B0232, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0233, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B031, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B041, 0xFF213163, theme);
-       ADD_PALETTE(BASIC::B041P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B042, 0xFF2A39AC, theme);
-       ADD_PALETTE(BASIC::B043, 0x00001BEA, theme);
-       ADD_PALETTE(BASIC::B044, 0xFF162758, theme);
-       ADD_PALETTE(BASIC::B0511, 0xFF313F66, theme);
-       ADD_PALETTE(BASIC::B0511P, 0xFF2A39AC, theme);
-       ADD_PALETTE(BASIC::B0512, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0513, 0xFFF8F6EF, theme);
-       ADD_PALETTE(BASIC::B0514, 0xFF313F66, theme);
-       ADD_PALETTE(BASIC::B0514P1, 0xFF162758, theme);
-       ADD_PALETTE(BASIC::B0514P2, 0xFF5163E9, theme);
-       ADD_PALETTE(BASIC::B0514L3, 0xFF6590FF, theme);
-       ADD_PALETTE(BASIC::B0515L1, 0xFF464C5E, theme);
-       ADD_PALETTE(BASIC::B0515L2, 0x7F454442, theme);
-       ADD_PALETTE(BASIC::B0516, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0517, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0517P1, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0517P2, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0518, 0xFF2E4468, theme);
-       ADD_PALETTE(BASIC::B0518P, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0519, 0xFFF25D28, theme);
-       ADD_PALETTE(BASIC::B0520, 0xFF2E4468, theme);
-       ADD_PALETTE(BASIC::B0520P, 0xFF3C649B, theme);
-       ADD_PALETTE(BASIC::B052L1, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L1P, 0xFF5D83FF, theme);
-       ADD_PALETTE(BASIC::B052L1D, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L2, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B052L2P, 0x005787B8, theme);
-       ADD_PALETTE(BASIC::B052L3, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B052L3P, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B052L4, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L4P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L4D, 0x66FAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L5, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L5D, 0x66FAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L5P, 0xFF5D83FF, theme);
-       ADD_PALETTE(BASIC::B052L6, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L6D, 0x99FAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L6P1, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L6P2, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L7, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L8, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L8P, 0xFF5D83FF, theme);
-       ADD_PALETTE(BASIC::B052L8D, 0x66FAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L9, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L9P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L9D, 0x66FAFAFA, theme);
-       ADD_PALETTE(BASIC::B052L10, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0531, 0xFFF8F6EF, theme);
-       ADD_PALETTE(BASIC::B0532, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0533, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0534, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0535, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0536, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0537, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0541, 0xFF6B728A, theme);
-       ADD_PALETTE(BASIC::B0541P, 0xFF0D1D96, theme);
-       ADD_PALETTE(BASIC::B0541D, 0x996B728A, theme);
-       ADD_PALETTE(BASIC::B0542, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0542P, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0543, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0544, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0545, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0551, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0552, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0553, 0xFFA5A5A5, theme);
-       ADD_PALETTE(BASIC::B0554, 0xFFFFFFFF, theme);
-       ADD_PALETTE(BASIC::B0555, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0556, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0557, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0558, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B061L1, 0xFF1D263C, theme);
-       ADD_PALETTE(BASIC::B061L2, 0xFF49577B, theme);
-       ADD_PALETTE(BASIC::B061L3, 0xFF969A9C, theme);
-       ADD_PALETTE(BASIC::B061L4, 0xFF1D263C, theme);
-       ADD_PALETTE(BASIC::B061L5, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::B061L6, 0xFF333537, theme);
-       ADD_PALETTE(BASIC::B0621L1, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0621L2, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0622L1, 0x001D263C, theme);
-       ADD_PALETTE(BASIC::B0622L2, 0x3FFFFFFF, theme);
-       ADD_PALETTE(BASIC::B0623L1, 0xFF1D263C, theme);
-       ADD_PALETTE(BASIC::B0623L2, 0xFF626675, theme);
-       ADD_PALETTE(BASIC::B0624L1, 0xFF1D263C, theme);
-       ADD_PALETTE(BASIC::B0624L2, 0xFF626675, theme);
-       ADD_PALETTE(BASIC::B0624L3, 0xFF313F66, theme);
-       ADD_PALETTE(BASIC::B0624L4, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::B0624L5, 0xFF5783FF, theme);
-       ADD_PALETTE(BASIC::B0624L6, 0xFF5783FF, theme);
-       ADD_PALETTE(BASIC::B063L1, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B063L1P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B063L1D, 0x99FAFAFA, theme);
-       ADD_PALETTE(BASIC::B063L2, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B063L3, 0xFF6E6F76, theme);
-       ADD_PALETTE(BASIC::B063L4, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B063L5, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B063L5D, 0x99FAFAFA, theme);
-       ADD_PALETTE(BASIC::B063L6, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B063L6P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B063L6D, 0x99FAFAFA, theme);
-       ADD_PALETTE(BASIC::B063L7, 0xFF656565, theme);
-       ADD_PALETTE(BASIC::B063L8, 0xFF6E6F76, theme);
-       ADD_PALETTE(BASIC::B063L8P, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B063L8D, 0x996E6F76, theme);
-       ADD_PALETTE(BASIC::B063L9, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B064L1, 0xFF6890FF, theme);
-       ADD_PALETTE(BASIC::B064L2, 0xFFD7D7D7, theme);
-       ADD_PALETTE(BASIC::B064L2P, 0xFFD7D7D7, theme);
-       ADD_PALETTE(BASIC::B064L2D, 0xFFD7D7D7, theme);
-       ADD_PALETTE(BASIC::B064L3, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::B064L3P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B064L3D, 0x7F000000, theme);
-       ADD_PALETTE(BASIC::B065L1, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B065L2, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B065L3, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B065L3P, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B065L4, 0xFFEEEEEE, theme);
-       ADD_PALETTE(BASIC::B065L4D, 0x99EEEEEE, theme);
-       ADD_PALETTE(BASIC::B065L4P, 0xFF2A39AC, theme);
-       ADD_PALETTE(BASIC::B065L5, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B071, 0xFF393B41, theme);
-       ADD_PALETTE(BASIC::B0721, 0xFFA09F9A, theme);
-       ADD_PALETTE(BASIC::B0722, 0xFF5D83FF, theme);
-       ADD_PALETTE(BASIC::B0723, 0xFF212428, theme);
-       ADD_PALETTE(BASIC::B0724, 0xFF404040, theme);
-       ADD_PALETTE(BASIC::B0725, 0xFF4F66A7, theme);
-       ADD_PALETTE(BASIC::B0726, 0xFF404040, theme);
-       ADD_PALETTE(BASIC::B0731, 0xFF2B3AAF, theme);
-       ADD_PALETTE(BASIC::B0732, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::B0741, 0xFFA09F9A, theme);
-       ADD_PALETTE(BASIC::B0742, 0xFF5D83FF, theme);
-       ADD_PALETTE(BASIC::B0743, 0xFF212428, theme);
-       ADD_PALETTE(BASIC::B0744, 0xFF404040, theme);
-       ADD_PALETTE(BASIC::B0745, 0x00000000, theme);
-       ADD_PALETTE(BASIC::B0751, 0xFF3B73B6, theme);
-       ADD_PALETTE(BASIC::F011L1, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F011L1P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F011L1D, 0x7FFAFAFA, theme);
-       ADD_PALETTE(BASIC::F011L2, 0xFF6890FF, theme);
-       ADD_PALETTE(BASIC::F011L2D, 0x996890FF, theme);
-       ADD_PALETTE(BASIC::F011L3, 0xFF6E6F76, theme);
-       ADD_PALETTE(BASIC::F011L3D, 0x996E6F76, theme);
-       ADD_PALETTE(BASIC::F011L4, 0xFF6E6F76, theme);
-       ADD_PALETTE(BASIC::F011L4D, 0x996E6F76, theme);
-       ADD_PALETTE(BASIC::F011L5, 0xFF5D83FF, theme);
-       ADD_PALETTE(BASIC::F011L6, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F011L7, 0xFF6E6F76, theme);
-       ADD_PALETTE(BASIC::F011L7D, 0x996E6F76, theme);
-       ADD_PALETTE(BASIC::F011L8, 0xFFD10000, theme);
-       ADD_PALETTE(BASIC::F011L9, 0xFFFFFFFF, theme);
-       ADD_PALETTE(BASIC::F011L10, 0xFFF9F9F9, theme);
-       ADD_PALETTE(BASIC::F011L11, 0xFF808080, theme);
-       ADD_PALETTE(BASIC::F011L12, 0xFF4093F7, theme);
-       ADD_PALETTE(BASIC::F011L13, 0x00000000, theme);
-       ADD_PALETTE(BASIC::F011L14, 0x00000000, theme);
-       ADD_PALETTE(BASIC::F011L15, 0xFFD10000, theme);
-       ADD_PALETTE(BASIC::F011L16, 0xFF6E6F76, theme);
-       ADD_PALETTE(BASIC::F011L17, 0xFF8B8B8B, theme);
-       ADD_PALETTE(BASIC::F011L18, 0xFF686868, theme);
-       ADD_PALETTE(BASIC::F011L19, 0xFF6E6F76, theme);
-       ADD_PALETTE(BASIC::F011L20, 0x00000000, theme);
-       ADD_PALETTE(BASIC::F011L21, 0xFF6E6F76, theme);
-       ADD_PALETTE(BASIC::F011L22, 0xFF6E6F76, theme);
-       ADD_PALETTE(BASIC::F011L23, 0xFF1382FF, theme);
-       ADD_PALETTE(BASIC::F021L1i, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F021L1iP, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F021L1iD, 0x99FAFAFA, theme);
-       ADD_PALETTE(BASIC::F022L1i, 0xFF6C6E77, theme);
-       ADD_PALETTE(BASIC::F022L2i, 0xFF2B3AAF, theme);
-       ADD_PALETTE(BASIC::F022L2iD, 0x992B3AAF, theme);
-       ADD_PALETTE(BASIC::F031L1, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F031L1P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F031L1D, 0x99FAFAFA, theme);
-       ADD_PALETTE(BASIC::F031L2, 0x00000000, theme);
-       ADD_PALETTE(BASIC::F031L2P, 0x00000000, theme);
-       ADD_PALETTE(BASIC::F031L2D, 0x00000000, theme);
-       ADD_PALETTE(BASIC::F031L3, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F031L3P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F031L3D, 0x99FAFAFA, theme);
-       ADD_PALETTE(BASIC::F032L1, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F032L1P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F032L1D, 0x99FAFAFA, theme);
-       ADD_PALETTE(BASIC::F032L2, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F032L2P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F032L2D, 0x99FAFAFA, theme);
-       ADD_PALETTE(BASIC::F032L3, 0xFFF9F9F9, theme);
-       ADD_PALETTE(BASIC::F032L3P, 0xFFF9F9F9, theme);
-       ADD_PALETTE(BASIC::F041i, 0xFF5D6176, theme);
-       ADD_PALETTE(BASIC::F041iD, 0x995D6176, theme);
-       ADD_PALETTE(BASIC::F051, 0xFF485D93, theme);
-       ADD_PALETTE(BASIC::F052, 0xFF3A72FF, theme);
-       ADD_PALETTE(BASIC::F053, 0xFF485D93, theme);
-       ADD_PALETTE(BASIC::F053P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::F053D, 0x99485D93, theme);
-       ADD_PALETTE(BASIC::F054, 0xFF202432, theme);
-       ADD_PALETTE(BASIC::F055, 0xFF3A72FF, theme);
-       ADD_PALETTE(BASIC::W011, 0xFF4B4D56, theme);
-       ADD_PALETTE(BASIC::W011D, 0x994B4D56, theme);
-       ADD_PALETTE(BASIC::W012, 0xFF095FD4, theme);
-       ADD_PALETTE(BASIC::W012D, 0x99095FD4, theme);
-       ADD_PALETTE(BASIC::W012P, 0xFF232F91, theme);
-       ADD_PALETTE(BASIC::W013, 0x00000000, theme);
-       ADD_PALETTE(BASIC::W0141, 0xFFDB0000, theme);
-       ADD_PALETTE(BASIC::W0141P, 0xFFA10808, theme);
-       ADD_PALETTE(BASIC::W0141D, 0x99DB0000, theme);
-       ADD_PALETTE(BASIC::W015, 0xFF343432, theme);
-       ADD_PALETTE(BASIC::W021L1, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::W021L1P, 0xFF213163, theme);
-       ADD_PALETTE(BASIC::W021L2, 0xFF425790, theme);
-       ADD_PALETTE(BASIC::W021L2P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W021L3, 0xFF425790, theme);
-       ADD_PALETTE(BASIC::W021L3P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W021L4, 0xFFF0F0F0, theme);
-       ADD_PALETTE(BASIC::W031L1, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::W031L1D, 0x99000000, theme);
-       ADD_PALETTE(BASIC::W031L2, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::W031L2D, 0x99000000, theme);
-       ADD_PALETTE(BASIC::W032, 0xFF5D6176, theme);
-       ADD_PALETTE(BASIC::W032P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W032D, 0x99FAFAFA, theme);
-       ADD_PALETTE(BASIC::W041, 0xFFE1DDD1, theme);
-       ADD_PALETTE(BASIC::W051, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::W0611, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W0611P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W0611D, 0x99FAFAFA, theme);
-       ADD_PALETTE(BASIC::W062L1, 0xFF555861, theme);
-       ADD_PALETTE(BASIC::W062L1D, 0x99555861, theme);
-       ADD_PALETTE(BASIC::W062L2, 0xFF415BFE, theme);
-       ADD_PALETTE(BASIC::W062L2D, 0x7F415BFE, theme);
-       ADD_PALETTE(BASIC::W062L3, 0xFFD8D7D2, theme);
-       ADD_PALETTE(BASIC::W062L3D, 0x4CD8D7D2, theme);
-       ADD_PALETTE(BASIC::W062L4, 0xFF3677C3, theme);
-       ADD_PALETTE(BASIC::W062L4D, 0x4C3677C3, theme);
-       ADD_PALETTE(BASIC::W062L5, 0xFFC7D3E3, theme);
-       ADD_PALETTE(BASIC::W0631, 0xFFEEEEEE, theme);
-       ADD_PALETTE(BASIC::W0632, 0xFF4C5158, theme);
-       ADD_PALETTE(BASIC::W0641, 0xFF6B6D79, theme);
-       ADD_PALETTE(BASIC::W0641P, 0xFF2A39AC, theme);
-       ADD_PALETTE(BASIC::W0641D, 0x996B6D79, theme);
-       ADD_PALETTE(BASIC::W0651, 0xFF3A3A3A, theme);
-       ADD_PALETTE(BASIC::W0711, 0xFF525767, theme);
-       ADD_PALETTE(BASIC::W0711P, 0xFF2B3AAF, theme);
-       ADD_PALETTE(BASIC::W0711D, 0xFF3E414E, theme);
-       ADD_PALETTE(BASIC::W0712, 0xFF4267A9, theme);
-       ADD_PALETTE(BASIC::W0713, 0xFF2B3AAF, theme);
-       ADD_PALETTE(BASIC::W0714, 0xFF263E5F, theme);
-       ADD_PALETTE(BASIC::W0715, 0xFF2B3AAF, theme);
-       ADD_PALETTE(BASIC::W0721, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W0721P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W0721D, 0x99FAFAFA, theme);
-       ADD_PALETTE(BASIC::W0811, 0xFF253296, theme);
-       ADD_PALETTE(BASIC::W0812, 0x00000000, theme);
-       ADD_PALETTE(BASIC::W0813, 0xFF595959, theme);
-       ADD_PALETTE(BASIC::W082, 0x00000000, theme);
-       ADD_PALETTE(BASIC::W083, 0x00000000, theme);
-       ADD_PALETTE(BASIC::W084, 0xB2FAFAFA, theme);
-       ADD_PALETTE(BASIC::W084P, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W085, 0x00000000, theme);
-       ADD_PALETTE(BASIC::W091, 0xFF2B3AAF, theme);
-       ADD_PALETTE(BASIC::W092, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W101, 0xFF4884D6, theme);
-       ADD_PALETTE(BASIC::W111, 0xFFC8CEDB, theme);
-       ADD_PALETTE(BASIC::W112L1, 0xFF8995AE, theme);
-       ADD_PALETTE(BASIC::W112L2, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W1121, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W1122, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W1123, 0x4C000000, theme);
-       ADD_PALETTE(BASIC::W1211, 0x00000000, theme);
-       ADD_PALETTE(BASIC::W1212, 0x00000000, theme);
-       ADD_PALETTE(BASIC::W1221, 0xFF000000, theme);
-       ADD_PALETTE(BASIC::W1222, 0xFF878580, theme);
-       ADD_PALETTE(BASIC::W1223, 0xFFFFFFFF, theme);
-       ADD_PALETTE(BASIC::W131, 0xFF343739, theme);
-       ADD_PALETTE(BASIC::W132, 0xFF2B3AAF, theme);
-       ADD_PALETTE(BASIC::W141, 0xFFFAFAFA, theme);
-       ADD_PALETTE(BASIC::W151, 0x66000000, theme);
-       ADD_PALETTE(BASIC::W152, 0xFF42434B, theme);
-       ADD_PALETTE(BASIC::W153, 0xFF2B3AAF, theme);
-       ADD_PALETTE(BASIC::W154, 0xFF1C1E28, theme);
-       ADD_PALETTE(BASIC::W161, 0xFF001BEA, theme);
 }
-#undef ADD_PALETTE
-
 void
 _ResourceManager::LoadPaletteInformation(const Tizen::Base::String& systemTheme)
 {
@@ -2350,7 +1946,7 @@ _ResourceManager::LoadPaletteInformation(const Tizen::Base::String& systemTheme)
        }
        else if (systemTheme == L"default")
        {
-               LoadDefaultPalette();
+               LoadBlackPalette();
        }
        else
        {
index 336db29..9e993a3 100644 (file)
@@ -36,7 +36,7 @@ namespace Tizen { namespace Base {
 
 namespace Tizen { namespace Ui { namespace _Resource
 {
-typedef bool (*_Init_Func)(MapContainer& table, const Tizen::Base::String& mode, bool bPreInit);
+typedef bool (*_Init_Func)(MapContainer& table, const Tizen::Base::String& mode);
 
 class ConfigLoader
 {
index 1d3ad80..433bd16 100644 (file)
@@ -273,10 +273,10 @@ static const int __DIMMINGLAYER__ = 40;
                                        }\
                                }\
                        };\
-                       static void AddConfig(MapContainer & table, const Tizen::Base::String& mode, const Tizen::Base::String& version, bool bPreInit);\
-                       static bool Initialize(MapContainer & table, const Tizen::Base::String & mode, bool bPreInit)\
+                       static void AddConfig(MapContainer & table, const Tizen::Base::String& mode, const Tizen::Base::String& version);\
+                       static bool Initialize(MapContainer & table, const Tizen::Base::String & mode)\
                        {\
-                               AddConfig(table, mode, GetAPIVersion(), bPreInit);\
+                               AddConfig(table, mode, GetAPIVersion());\
                                return true;\
                        };\
                        static const int _VALUE_ = TypeDefined::__##x##__ << 24;
@@ -298,7 +298,7 @@ extern int _SCREEN_HEIGHT_;\
 }}\
 namespace Tizen { namespace Ui { namespace _Resource\
 {\
-void _##control::AddConfig(MapContainer & table, const Tizen::Base::String& mode, const Tizen::Base::String& version, bool bPreInit)\
+void _##control::AddConfig(MapContainer & table, const Tizen::Base::String& mode, const Tizen::Base::String& version)\
 {
 
 #define START_UI_CONFIG_API_VERSION(ver)\
@@ -313,16 +313,14 @@ void _##control::AddConfig(MapContainer & table, const Tizen::Base::String& mode
 #define END_UI_CONFIG_MODE(_mode)\
        }
 
-#define ADD_DIMENSION_CONFIG(key, width, height) if(!bPreInit)AddDimensionConfig(table, key##_DIMENSION, width, height);
-#define ADD_COLOR_CONFIG(key, value) if(bPreInit)AddColorConfig(table, key##_COLOR, #value);\
+#define ADD_DIMENSION_CONFIG(key, width, height) AddDimensionConfig(table, key##_DIMENSION, width, height);
+#define ADD_COLOR_CONFIG(key, value) AddColorConfig(table, key##_COLOR, #value);\
 
-#define ADD_SHAPE_CONFIG(key, value) if(!bPreInit)AddShapeConfig(table, key##_SHAPE, value);
-#define ADD_FIXED_VALUE_CONFIG(key, value) if(!bPreInit)AddFixedValueConfig(table, key##_FIXED_VALUE, value);
-#define ADD_IMAGE_CONFIG(key, value) if(bPreInit)AddImageConfig(table, key##_IMAGE, #value);
+#define ADD_SHAPE_CONFIG(key, value) AddShapeConfig(table, key##_SHAPE, value);
+#define ADD_FIXED_VALUE_CONFIG(key, value) AddFixedValueConfig(table, key##_FIXED_VALUE, value);
+#define ADD_IMAGE_CONFIG(key, value) AddImageConfig(table, key##_IMAGE, #value);
 
 #define START_ANIMATION_CONFIG(key)\
-       if(bPreInit)\
-       {\
        Map* pAnimationMap = table.GetAnimationMap();\
        if (pAnimationMap != null)\
        {\
@@ -341,7 +339,7 @@ void _##control::AddConfig(MapContainer & table, const Tizen::Base::String& mode
                ResourceItem* pItem = new (std::nothrow) ResourceItem(RESOURCE_TYPE_ANIMATION);\
                pItem->SetRawDataAnimation(pList);\
                pAnimationMap->Add(key##_ANIMATION, pItem);\
-       }}
+       }
 
 #define END_UI_CONFIG(control)\
 };\
index 0a13935..9d4fec5 100644 (file)
@@ -58,7 +58,6 @@ namespace Tizen { namespace Ui { namespace _Resource
 class StringLoader;
 class ConfigLoader;
 class MapContainer;
-class ConfigParser;
 }}}
 
 namespace Tizen { namespace Ui
@@ -167,7 +166,6 @@ enum _ResourceFeedbackPattern
 class _OSP_EXPORT_ _ResourceManager
 {
 public:
-       static void PreInitialize(void);
        static _ResourceManager* GetInstance(void);
        result GetBitmapN(int bitmapId, Tizen::Graphics::BitmapPixelFormat pixelFormat, _ControlOrientation orientation, bool replacementColor, int color, Tizen::Graphics::Bitmap*& pBitmap);
        result GetString(const char* stringId, Tizen::Base::String& string);
@@ -196,9 +194,7 @@ private:
        ~_ResourceManager(void);
        static void CreateInstance(void);
 
-       void PostInitialize(void);
        void DoPostInitialization(void);
-       void SelectConfigTable(void);
 
        _ResourceManager(const _ResourceManager& rhs);
        _ResourceManager& operator =(const _ResourceManager& rhs);
@@ -218,7 +214,7 @@ private:
        result GetDefaultShapeWithScaling(int shapeId, _ControlOrientation orientation, Tizen::Graphics::FloatDimension& value);
        result LoadThemeInformation(Tizen::Base::String& systemTheme, Tizen::Base::String& userTheme);
        bool InitializeTheme(_Resource::MapContainer& mapContainer);
-       void LoadConfig(const Tizen::Base::String& resolution, _Resource::MapContainer& mapContainer, int width, int height, bool preInit);
+       void LoadConfig(const Tizen::Base::String& resolution, _Resource::MapContainer& mapContainer, int width, int height);
        _Resource::MapContainer* GetMapContainer(MapContainerType type);
        void SetSystemColor(void);
        Tizen::Base::String FindImagePath(const Tizen::Base::String& fileName, int& findFolder, bool isCustom);
@@ -237,7 +233,6 @@ private:
        };
 
        _Resource::StringLoader* __pStringLoader;
-       _Resource::ConfigParser* __pParser;
        _Resource::MapContainer* __pMapContainer[MAP_CONTAINER_TYPE_MAX];
        Tizen::Graphics::_ICoordinateSystemTransformer* __pTransformer;
        Tizen::Base::String __appBasePortraitMode;
@@ -250,8 +245,6 @@ private:
        Tizen::Base::String __userTheme;
        bool __appliedUserTheme;
        bool __initializeFeedback;
-       bool __preInitialize;
-       bool __postInitialize;
        int __appBaseWidth;
        int __appBaseHeight;
        int __targetWidth;
index 5f1c2de..f83508e 100644 (file)
@@ -97,6 +97,50 @@ public:
                __charKey= null;
                __pRefCount = null;
        }
+       /*
+       ResourceKey& operator =(int value)
+       {
+               if(__intKey == value)
+               {
+                       return *this;
+               }
+               if (*__pRefCount == 1)
+               {
+                       delete[] __charKey;
+                       delete __pRefCount;
+               }
+               else
+               {
+                       --(*__pRefCount);
+               }
+               __charKey= null;
+               __pRefCount = null
+               __intKey = value;
+               return *this;
+       }
+
+       ResourceKey& operator =(char* value)
+       {
+               if (strcmp(__charKey, value) == 0)
+               {
+                       return *this;
+               }
+               else
+               {
+                       __intKey = 0;
+                       if (__bAllocate && __charKey)
+                       {
+                               delete [] __charKey;
+                       }
+                       int len = strlen(value);
+                       __charKey = new (std::nothrow) char [len+1];
+                       strcpy(__charKey, value);
+                       __charKey[len] = '\0';
+                       __bAllocate = true;
+               }
+               return *this;
+       }
+*/
        ResourceKey(const ResourceKey& rhs)
                :__intKey(0)
                , __hash(0)
index d2997b0..23f7473 100644 (file)
@@ -66,8 +66,6 @@ public:
        Map* GetShapeMap(void) const;
        Map* GetAnimationMap(void) const;
        Map* GetPalette(void) const;
-       Map* GetPalette(const Tizen::Base::String& name) const;
-       void SetPalette(const Tizen::Base::String& name);
        void SetVersion(const Tizen::Base::String& information);
        Tizen::Base::String GetVersion(void);
        void SetThemeName(const Tizen::Base::String& ThemeName);
@@ -88,11 +86,7 @@ private:
        Map* __pImageMap;
        Map* __pShapeMap;
        Map* __pAnimationMap;
-       Map* __pBlackPalette;
-       Map* __pWhitePalette;
-       Map* __pDefaultPalette;
        Map* __pPalette;
-
        Tizen::Base::Collection::IHashCodeProviderT<ResourceKey>* __pProvider;
        Tizen::Base::Collection::IComparerT<ResourceKey>* __pComparer;
 
index 8c20f38..81b6f6c 100644 (file)
@@ -46,9 +46,6 @@ MapContainer::MapContainer(void)
        , __pImageMap(null)
        , __pShapeMap(null)
        , __pAnimationMap(null)
-       , __pBlackPalette(null)
-       , __pWhitePalette(null)
-       , __pDefaultPalette(null)
        , __pPalette(null)
        , __pProvider(null)
        , __pComparer(null)
@@ -76,12 +73,8 @@ MapContainer::~MapContainer(void)
        __pShapeMap = null;
        delete __pAnimationMap;
        __pAnimationMap = null;
-       delete __pBlackPalette;
-       __pBlackPalette = null;
-       delete __pWhitePalette;
-       __pWhitePalette = null;
-       delete __pDefaultPalette;
-       __pDefaultPalette = null;
+       delete __pPalette;
+       __pPalette = null;
        delete __pProvider;
        __pProvider = null;
        delete __pComparer;
@@ -99,15 +92,9 @@ MapContainer::CreateMap(_ResourceType type)
                        __pColorMap = new (std::nothrow) Map(type);
                        SysTryReturnVoidResult(NID_UI, __pColorMap, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
                        __pColorMap->Construct(500, 0.75f, *__pProvider, *__pComparer);
-                       __pBlackPalette = new (std::nothrow) Map(type);
-                       SysTryReturnVoidResult(NID_UI, __pBlackPalette, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
-                       __pWhitePalette = new (std::nothrow) Map(type);
-                       SysTryReturnVoidResult(NID_UI, __pWhitePalette, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
-                       __pDefaultPalette = new (std::nothrow) Map(type);
-                       SysTryReturnVoidResult(NID_UI, __pDefaultPalette, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
-                       __pDefaultPalette->Construct(100, 0.75f, *__pProvider, *__pComparer);
-                       __pWhitePalette->Construct(100, 0.75f, *__pProvider, *__pComparer);
-                       __pBlackPalette->Construct(100, 0.75f, *__pProvider, *__pComparer);
+                       __pPalette = new (std::nothrow) Map(type);
+                       SysTryReturnVoidResult(NID_UI, __pPalette, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation is failed.");
+                       __pPalette->Construct(100, 0.75f, *__pProvider, *__pComparer);
                }
                break;
        case RESOURCE_TYPE_DIMENSION:
@@ -166,17 +153,9 @@ MapContainer::InitializeMap(_ResourceType type)
                {
                        __pColorMap->Initialize();
                }
-               if (__pBlackPalette != null)
+               if (__pPalette != null)
                {
-                       __pBlackPalette->Initialize();
-               }
-               if (__pWhitePalette != null)
-               {
-                       __pWhitePalette->Initialize();
-               }
-               if (__pDefaultPalette != null)
-               {
-                       __pDefaultPalette->Initialize();
+                       __pPalette->Initialize();
                }
                break;
        case RESOURCE_TYPE_DIMENSION:
@@ -214,46 +193,6 @@ MapContainer::InitializeMap(_ResourceType type)
        }
 }
 Map*
-MapContainer::GetPalette(const String& name) const
-{
-       if(name == L"black")
-       {
-               return __pBlackPalette;
-       }
-       else if(name == L"white")
-       {
-               return __pWhitePalette;
-       }
-       else if(name == L"default")
-       {
-               return __pDefaultPalette;
-       }
-       else
-       {
-               return null;
-       }
-}
-void
-MapContainer::SetPalette(const String& name)
-{
-       if(name == L"black")
-       {
-               __pPalette = __pBlackPalette;
-       }
-       else if(name == L"white")
-       {
-               __pPalette = __pWhitePalette;
-       }
-       else if(name == L"default")
-       {
-               __pPalette = __pDefaultPalette;
-       }
-       else
-       {
-               SysAssert(0);
-       }
-}
-Map*
 MapContainer::GetPalette(void) const
 {
        return __pPalette;