diff --git a/trunk/ConsoleDataMigration/ConsoleBackup/ConsoleBackup.cpp b/trunk/ConsoleDataMigration/ConsoleBackup/ConsoleBackup.cpp index 75a3188..5f70ef3 100644 --- a/trunk/ConsoleDataMigration/ConsoleBackup/ConsoleBackup.cpp +++ b/trunk/ConsoleDataMigration/ConsoleBackup/ConsoleBackup.cpp @@ -36,6 +36,7 @@ #include #include "ConsoleBackup.h" +#include "DrawSystemState.h" #include "FileName.h" #include "Controller.h" #include "SimplePlayer.h" @@ -55,7 +56,6 @@ namespace { // グラフィックスに割り当てるメモリ const size_t s_GxHeapSize = 0x800000; -const u16 PROGRESS_MAX_LINES = 160; // バッテリ残量 u8 batteryRemain = 100; @@ -80,8 +80,6 @@ nn::Handle s_McuSession; namespace ConsoleBackup{ -u32 GetRenderTarget(u32 target, bool flip = false); - bool IsAdapterConnected() { return nn::ptm::CTR::GetAdapterState() == nn::ptm::CTR::ADAPTERSTATE_CONNECTED; @@ -114,25 +112,6 @@ void GetIvs(void** ivs, size_t* size) *size = s_SizeofIvs; } -u32 GetRenderTarget(u32 target, bool flip) -{ - if(flip) - { - if(target == NN_GX_DISPLAY0) - { - return NN_GX_DISPLAY1; - } - else - { - return NN_GX_DISPLAY0; - } - } - else - { - return target; - } -} - nn::Handle GetMcuHandle() { return s_McuSession; @@ -347,66 +326,43 @@ extern "C" void nnMain(void) ControlState(operationMessage, nextStep, continueBackup); - // デフォルトで上画面に描画するもの - s_RenderSystem.SetRenderTarget(GetRenderTarget(NN_GX_DISPLAY0, flip)); - if(IsBackupSucceeded()) - { - s_RenderSystem.SetClearColor(GetRenderTarget(NN_GX_DISPLAY0, flip), SUCCESS_COLOR); - } - if(IsBackupFailed()) - { - s_RenderSystem.SetClearColor(GetRenderTarget(NN_GX_DISPLAY0, flip), FAIL_COLOR); - } + nn::util::FloatColor titleColor; - s_RenderSystem.Clear(); - s_RenderSystem.SetColor(1.f, 1.f, 1.f); - u32 line = 0; - s_RenderSystem.DrawText(0, line++ * 10, "CTR Console Backup %s Rev.%s", __DATE__, BACKUP_VERSION_NUM); - s_RenderSystem.SetColor(0.3f, 0.f, 0.2f); - s_RenderSystem.FillRectangle(0 , (line-1) * 10, 400 , 10); - s_RenderSystem.SetColor(1.f, 1.f, 1.f); - s_RenderSystem.DrawText(0, line++ * 10, ""); - s_RenderSystem.DrawText(0, line++ * 10, "System Ver. %d.%d (Rev.%d)", rosi.versionHi, rosi.versionLo, rosi.revision); - s_RenderSystem.DrawText(0, line++ * 10, "System Region %s", nn::cfg::CTR::GetRegionCodeA3(region)); - s_RenderSystem.DrawText(0, line++ * 10, "Serial No. %s", s_SerialNo); - s_RenderSystem.DrawText(0, line++ * 10, "Device ID %X", deviceId); - s_RenderSystem.DrawText(0, line++ * 10, "MAC Address %s", macAddress); - s_RenderSystem.DrawText(0, line++ * 10, "Friend Code %04u-%04u-%04u", - static_cast(friendCode / 100000000ULL % 10000ULL), - static_cast(friendCode / 10000ULL % 10000ULL), - static_cast(friendCode % 10000ULL) ); + titleColor.r = 0.3f; + titleColor.g = 0.f; + titleColor.b = 0.2f; - s_RenderSystem.DrawText(0, line++ * 10, "Battery %d%%", batteryRemain); - s_RenderSystem.DrawText(0, line++ * 10, "AC Adaper %s", adapterState.c_str()); - s_RenderSystem.DrawText(0, line++ * 10, "Progress %02d%%", GetProgress()); - s_RenderSystem.SetColor(0.f, 0.2f, 0.f); - s_RenderSystem.DrawLine(19 * 8, (line-1) * 10, 19 * 8 + PROGRESS_MAX_LINES, (line-1) * 10); - s_RenderSystem.DrawLine(19 * 8, (line-1) * 10, 19 * 8, (line) * 10); - s_RenderSystem.DrawLine(19 * 8, (line) * 10, 19 * 8 + PROGRESS_MAX_LINES, (line) * 10); - s_RenderSystem.DrawLine(19 * 8 + PROGRESS_MAX_LINES, (line-1) * 10, 19 * 8 + PROGRESS_MAX_LINES, (line) * 10 + 1); - s_RenderSystem.SetColor(0.f, 0.5f, 0.f); - s_RenderSystem.FillRectangle(19 * 8 , (line-1) * 10, GetProgress() * PROGRESS_MAX_LINES / 100+ 1, 10); - - s_RenderSystem.SetColor(1.f, 1.f, 1.f); - s_RenderSystem.DrawText(0, line++ * 10, ""); - - ::std::vector::iterator it; - for(it = operationMessage.begin(); it != operationMessage.end(); it++) - { - s_RenderSystem.DrawText(0, line++ * 10 , "%s", it->c_str()); - } + // 上画面表示 + common::DrawSystemState("CTR Console Backup", + s_RenderSystem, + titleColor, + flip, + adapterState, + BACKUP_VERSION_NUM, + batteryRemain, + deviceId, + friendCode, + GetProgress(), + IsBackupFailed(), + IsBackupSucceeded(), + macAddress, + operationMessage, + region, + rosi, + s_SerialNo + ); s_RenderSystem.SwapBuffers(); // デフォルトで下画面に描画するもの - s_RenderSystem.SetRenderTarget(GetRenderTarget(NN_GX_DISPLAY1, flip)); + s_RenderSystem.SetRenderTarget(common::GetRenderTarget(NN_GX_DISPLAY1, flip)); if(IsBackupSucceeded()) { - s_RenderSystem.SetClearColor(GetRenderTarget(NN_GX_DISPLAY1, flip), SUCCESS_COLOR); + s_RenderSystem.SetClearColor(common::GetRenderTarget(NN_GX_DISPLAY1, flip), SUCCESS_COLOR); } if(IsBackupFailed()) { - s_RenderSystem.SetClearColor(GetRenderTarget(NN_GX_DISPLAY1, flip), FAIL_COLOR); + s_RenderSystem.SetClearColor(common::GetRenderTarget(NN_GX_DISPLAY1, flip), FAIL_COLOR); } s_RenderSystem.Clear(); s_RenderSystem.SetColor(1.f, 1.f, 1.f); diff --git a/trunk/ConsoleDataMigration/ConsoleBackup/ConsoleBackup.h b/trunk/ConsoleDataMigration/ConsoleBackup/ConsoleBackup.h index e39aa34..222da7c 100644 --- a/trunk/ConsoleDataMigration/ConsoleBackup/ConsoleBackup.h +++ b/trunk/ConsoleDataMigration/ConsoleBackup/ConsoleBackup.h @@ -35,14 +35,5 @@ const u32 CONSOLE_MAX_LINE = 1000; } -// 描画色の定義 -#define WHITE_COLOR 1.f, 1.f, 1.f, 1.f -#define GRAY_COLOR 0.5, 0.5, 0.5, 1.f -#define RED_COLOR 1.f, 0.f, 0.f, 1.f -#define GREEN_COLOR 0.f, 1.f, 0.f, 1.f -#define BLUE_COLOR 0.f, 0.f, 1.f, 1.f -#define SUCCESS_COLOR 0.f, 0.6f,0.f, 1.f -#define FAIL_COLOR 0.6f, 0.f,0.f, 1.f - /* NN_CONSOLEBACKUP_H_ */ #endif diff --git a/trunk/ConsoleDataMigration/ConsoleBackup/OMakefile b/trunk/ConsoleDataMigration/ConsoleBackup/OMakefile index 9695fff..aa6ce6d 100644 --- a/trunk/ConsoleDataMigration/ConsoleBackup/OMakefile +++ b/trunk/ConsoleDataMigration/ConsoleBackup/OMakefile @@ -29,6 +29,7 @@ SOURCES[] = ConsoleBackup.cpp Controller.cpp Exporter.cpp + ../common/DrawSystemState.cpp ../common/FileTransfer.cpp ../common/SdReaderWriter.cpp ../common/HeapManager.cpp diff --git a/trunk/ConsoleDataMigration/ConsoleRestore/ConsoleRestore.cpp b/trunk/ConsoleDataMigration/ConsoleRestore/ConsoleRestore.cpp index 11c12e2..c4a5e19 100644 --- a/trunk/ConsoleDataMigration/ConsoleRestore/ConsoleRestore.cpp +++ b/trunk/ConsoleDataMigration/ConsoleRestore/ConsoleRestore.cpp @@ -37,6 +37,7 @@ #include #include "ConsoleRestore.h" +#include "DrawSystemState.h" #include "Controller.h" #include "SimplePlayer.h" #include "CommonLogger.h" @@ -57,8 +58,6 @@ const size_t s_GxHeapSize = 0x800000; demo::RenderSystemDrawing s_RenderSystem; nn::Handle s_McuSession; -const u16 PROGRESS_MAX_LINES = 160; - // バッテリ残量 u8 batteryRemain = 100; @@ -81,8 +80,6 @@ bool s_CanReadIvs = false; namespace ConsoleRestore{ -u32 GetRenderTarget(u32 target, bool flip = false); - bool IsAdapterConnected() { return nn::ptm::CTR::GetAdapterState() == nn::ptm::CTR::ADAPTERSTATE_CONNECTED; @@ -115,25 +112,6 @@ void GetIvs(void** ivs, size_t* size) *size = s_SizeofIvs; } -u32 GetRenderTarget(u32 target, bool flip) -{ - if(flip) - { - if(target == NN_GX_DISPLAY0) - { - return NN_GX_DISPLAY1; - } - else - { - return NN_GX_DISPLAY0; - } - } - else - { - return target; - } -} - void FinalizeAll() { common::Logger::GetLoggerInstance()->Finalize(); @@ -367,74 +345,47 @@ extern "C" void nnMain(void) ControlState(operationMessage, nextStep, continueRestore); - // デフォルトで上画面に描画するもの - s_RenderSystem.SetRenderTarget(GetRenderTarget(NN_GX_DISPLAY0, flip)); - if(IsRestoreSucceeded()) - { - s_RenderSystem.SetClearColor(GetRenderTarget(NN_GX_DISPLAY0, flip), SUCCESS_COLOR); - } - else if(IsRestoreFailed()) - { - s_RenderSystem.SetClearColor(GetRenderTarget(NN_GX_DISPLAY0, flip), FAIL_COLOR); - } - else - { - s_RenderSystem.SetClearColor(GetRenderTarget(NN_GX_DISPLAY0, flip), NORMAL_COLOR); - } + nn::util::FloatColor titleColor; - s_RenderSystem.Clear(); - s_RenderSystem.SetColor(1.f, 1.f, 1.f); - u32 line = 0; - s_RenderSystem.DrawText(0, line++ * 10, "CTR Console Restore %s Rev.%s", __DATE__, RESTORE_VERSION_NUM); - s_RenderSystem.SetColor(0.1f, 0.25f, 0.1f); - s_RenderSystem.FillRectangle(0 , (line-1) * 10, 400 , 10); - s_RenderSystem.SetColor(1.f, 1.f, 1.f); - s_RenderSystem.DrawText(0, line++ * 10, ""); - s_RenderSystem.DrawText(0, line++ * 10, "System Ver. %d.%d (Rev.%d)", rosi.versionHi, rosi.versionLo, rosi.revision); - s_RenderSystem.DrawText(0, line++ * 10, "System Region %s", nn::cfg::CTR::GetRegionCodeA3(region)); - s_RenderSystem.DrawText(0, line++ * 10, "Serial No. %s", s_SerialNo); - s_RenderSystem.DrawText(0, line++ * 10, "Device ID %X", deviceId); - s_RenderSystem.DrawText(0, line++ * 10, "MAC Address %s", macAddress); - s_RenderSystem.DrawText(0, line++ * 10, "Friend Code %04u-%04u-%04u", - static_cast(friendCode / 100000000ULL % 10000ULL), - static_cast(friendCode / 10000ULL % 10000ULL), - static_cast(friendCode % 10000ULL) ); + titleColor.r = 0.1f; + titleColor.g = 0.25f; + titleColor.b = 0.1f; - s_RenderSystem.DrawText(0, line++ * 10, "Battery %d%%", batteryRemain); - s_RenderSystem.DrawText(0, line++ * 10, "AC Adaper %s", adapterState.c_str()); - s_RenderSystem.DrawText(0, line++ * 10, "Progress %02d%%", GetProgress()); - s_RenderSystem.SetColor(0.f, 0.2f, 0.f); - s_RenderSystem.DrawLine(19 * 8, (line-1) * 10, 19 * 8 + PROGRESS_MAX_LINES, (line-1) * 10); - s_RenderSystem.DrawLine(19 * 8, (line-1) * 10, 19 * 8, (line) * 10); - s_RenderSystem.DrawLine(19 * 8, (line) * 10, 19 * 8 + PROGRESS_MAX_LINES, (line) * 10); - s_RenderSystem.DrawLine(19 * 8 + PROGRESS_MAX_LINES, (line-1) * 10, 19 * 8 + PROGRESS_MAX_LINES, (line) * 10 + 1); - s_RenderSystem.SetColor(0.f, 0.5f, 0.f); - s_RenderSystem.FillRectangle(19 * 8 , (line-1) * 10, GetProgress() * PROGRESS_MAX_LINES / 100+ 1, 10); - - s_RenderSystem.SetColor(1.f, 1.f, 1.f); - s_RenderSystem.DrawText(0, line++ * 10, ""); - - ::std::vector::iterator it; - for(it = operationMessage.begin(); it != operationMessage.end(); it++) - { - s_RenderSystem.DrawText(0, line++ * 10 , "%s", it->c_str()); - } + // 上画面表示 + common::DrawSystemState("CTR Console Restore", + s_RenderSystem, + titleColor, + flip, + adapterState, + RESTORE_VERSION_NUM, + batteryRemain, + deviceId, + friendCode, + GetProgress(), + IsRestoreFailed(), + IsRestoreSucceeded(), + macAddress, + operationMessage, + region, + rosi, + s_SerialNo + ); s_RenderSystem.SwapBuffers(); // デフォルトで下画面に描画するもの - s_RenderSystem.SetRenderTarget(GetRenderTarget(NN_GX_DISPLAY1, flip)); + s_RenderSystem.SetRenderTarget(common::GetRenderTarget(NN_GX_DISPLAY1, flip)); if(IsRestoreSucceeded()) { - s_RenderSystem.SetClearColor(GetRenderTarget(NN_GX_DISPLAY1, flip), SUCCESS_COLOR); + s_RenderSystem.SetClearColor(common::GetRenderTarget(NN_GX_DISPLAY1, flip), SUCCESS_COLOR); } else if(IsRestoreFailed()) { - s_RenderSystem.SetClearColor(GetRenderTarget(NN_GX_DISPLAY1, flip), FAIL_COLOR); + s_RenderSystem.SetClearColor(common::GetRenderTarget(NN_GX_DISPLAY1, flip), FAIL_COLOR); } else { - s_RenderSystem.SetClearColor(GetRenderTarget(NN_GX_DISPLAY1, flip), NORMAL_COLOR); + s_RenderSystem.SetClearColor(common::GetRenderTarget(NN_GX_DISPLAY1, flip), NORMAL_COLOR); } s_RenderSystem.Clear(); s_RenderSystem.SetColor(1.f, 1.f, 1.f); diff --git a/trunk/ConsoleDataMigration/ConsoleRestore/OMakefile b/trunk/ConsoleDataMigration/ConsoleRestore/OMakefile index b46063a..d9ee94a 100644 --- a/trunk/ConsoleDataMigration/ConsoleRestore/OMakefile +++ b/trunk/ConsoleDataMigration/ConsoleRestore/OMakefile @@ -31,6 +31,7 @@ SOURCES[] = Importer.cpp Updater.cpp Ntpclient.cpp + ../common/DrawSystemState.cpp ../common/FileTransfer.cpp ../common/SdReaderWriter.cpp ../common/HeapManager.cpp diff --git a/trunk/ConsoleDataMigration/common/DrawSystemState.cpp b/trunk/ConsoleDataMigration/common/DrawSystemState.cpp new file mode 100644 index 0000000..8de410a --- /dev/null +++ b/trunk/ConsoleDataMigration/common/DrawSystemState.cpp @@ -0,0 +1,129 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: DrawSystemState.cpp + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#include "DrawSystemState.h" + +const u16 PROGRESS_MAX_LINES = 129; + +namespace common +{ + +u32 GetRenderTarget(u32 target, bool flip) +{ + if(flip) + { + if(target == NN_GX_DISPLAY0) + { + return NN_GX_DISPLAY1; + } + else + { + return NN_GX_DISPLAY0; + } + } + else + { + return target; + } +} + +void DrawSystemState +( + const char* toolName, + demo::RenderSystemDrawing& renderSystem, + nn::util::FloatColor titleColor, + bool flip, + std::string& adapterState, + const char* toolVersion, + u8 batteryRemain, + bit32 deviceId, + u64 friendCode, + u32 progress, + bool isBackupFailed, + bool isBackupSucceeded, + char8* macAddress, + ::std::vector& operationMessage, + nn::cfg::CTR::CfgRegionCode region, + const nn::os::ReadOnlySharedInfo& rosi, + u8* s_SerialNo +) +{ + // デフォルトで上画面に描画するもの + renderSystem.SetRenderTarget(GetRenderTarget(NN_GX_DISPLAY0, flip)); + if (isBackupSucceeded) + { + renderSystem.SetClearColor(GetRenderTarget(NN_GX_DISPLAY0, flip), SUCCESS_COLOR); + } + if (isBackupFailed) + { + renderSystem.SetClearColor(GetRenderTarget(NN_GX_DISPLAY0, flip), FAIL_COLOR); + } + + renderSystem.Clear(); + renderSystem.SetColor(1.f, 1.f, 1.f); + u32 line = 0; + + size_t fontSize = 8; + size_t spaceSize = fontSize + 2; + renderSystem.SetFontSize(fontSize); + + renderSystem.DrawText(0, line++ * spaceSize, "%s %s Rev.%s", toolName, __DATE__, toolVersion); + renderSystem.SetColor(titleColor.r, titleColor.g, titleColor.b); + renderSystem.FillRectangle(0, (line - 1) * spaceSize, 400, spaceSize); + renderSystem.SetColor(1.f, 1.f, 1.f); + renderSystem.DrawText(0, line++ * spaceSize, ""); + + fontSize += 2; + spaceSize = fontSize + 2; + renderSystem.SetFontSize(fontSize); + + renderSystem.DrawText(0, line++ * spaceSize, "System Ver. %d.%d (Rev.%d)", rosi.versionHi, rosi.versionLo, + rosi.revision); + renderSystem.DrawText(0, line++ * spaceSize, "System Region %s", nn::cfg::CTR::GetRegionCodeA3(region)); + renderSystem.DrawText(0, line++ * spaceSize, "Serial No. %s", s_SerialNo); + renderSystem.DrawText(0, line++ * spaceSize, "Device ID %X", deviceId); + renderSystem.DrawText(0, line++ * spaceSize, "MAC Address %s", macAddress); + renderSystem.DrawText(0, line++ * spaceSize, "Friend Code %04u-%04u-%04u", static_cast (friendCode + / 100000000ULL % 10000ULL), static_cast (friendCode / 10000ULL % 10000ULL), + static_cast (friendCode % 10000ULL)); + + renderSystem.DrawText(0, line++ * spaceSize, "Battery %d%%", batteryRemain); + renderSystem.DrawText(0, line++ * spaceSize, "AC Adaper %s", adapterState.c_str()); + renderSystem.DrawText(0, line++ * spaceSize, "Progress %02d%%", progress); + renderSystem.SetColor(0.f, 0.2f, 0.f); + renderSystem.DrawLine(19 * fontSize, (line - 1) * spaceSize, 19 * fontSize + PROGRESS_MAX_LINES, (line - 1) + * spaceSize); + renderSystem.DrawLine(19 * fontSize, (line - 1) * spaceSize, 19 * fontSize, (line) * spaceSize); + renderSystem.DrawLine(19 * fontSize, (line) * spaceSize, 19 * fontSize + PROGRESS_MAX_LINES, (line) * spaceSize); + renderSystem.DrawLine(19 * fontSize + PROGRESS_MAX_LINES, (line - 1) * spaceSize, 19 * fontSize + + PROGRESS_MAX_LINES, (line) * spaceSize + 1); + renderSystem.SetColor(0.f, 0.5f, 0.f); + renderSystem.FillRectangle(19 * fontSize, (line - 1) * spaceSize, progress * PROGRESS_MAX_LINES / 100 + 1, + spaceSize); + + renderSystem.SetColor(1.f, 1.f, 1.f); + renderSystem.DrawText(0, line++ * spaceSize, ""); + + ::std::vector::iterator it; + for (it = operationMessage.begin(); it != operationMessage.end(); it++) + { + renderSystem.DrawText(0, line++ * spaceSize, "%s", it->c_str()); + } + + fontSize -= 2; + renderSystem.SetFontSize(fontSize); +} + +} diff --git a/trunk/ConsoleDataMigration/common/DrawSystemState.h b/trunk/ConsoleDataMigration/common/DrawSystemState.h new file mode 100644 index 0000000..3fd7ce0 --- /dev/null +++ b/trunk/ConsoleDataMigration/common/DrawSystemState.h @@ -0,0 +1,69 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: DrawSystemState.h + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef DRAWSYSTEMSTATE_H_ +#define DRAWSYSTEMSTATE_H_ + +#include +#include "demo.h" +#include +#include +#include +#include +#include +#include + +#include +#include + +// 描画色の定義 +#define WHITE_COLOR 1.f, 1.f, 1.f, 1.f +#define GRAY_COLOR 0.5, 0.5, 0.5, 1.f +#define RED_COLOR 1.f, 0.f, 0.f, 1.f +#define GREEN_COLOR 0.f, 1.f, 0.f, 1.f +#define BLUE_COLOR 0.f, 0.f, 1.f, 1.f +#define SUCCESS_COLOR 0.f, 0.6f,0.f, 1.f +#define FAIL_COLOR 0.6f, 0.f,0.f, 1.f + +namespace common +{ + +u32 GetRenderTarget(u32 target, bool flip = false); + +void DrawSystemState +( + const char* toolName, + demo::RenderSystemDrawing& renderSystem, + nn::util::FloatColor titleColor, + bool flip, + std::string& adapterState, + const char* toolVersion, + u8 batteryRemain, + bit32 deviceId, + u64 friendCode, + u32 progress, + bool isBackupFailed, + bool isBackupSucceeded, + char8* macAddress, + ::std::vector& operationMessage, + nn::cfg::CTR::CfgRegionCode region, + const nn::os::ReadOnlySharedInfo& rosi, + u8* s_SerialNo +); + +} + + +#endif /* DRAWSYSTEMSTATE_H_ */