/*---------------------------------------------------------------------------* Project: NintendoWare File: demolib.h Copyright (C)2009-2010 Nintendo Co., Ltd./HAL Laboratory, Inc. 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. $Revision:$ *---------------------------------------------------------------------------*/ #ifndef NW_SND_DEMO_DEMOLIB_H_ #define NW_SND_DEMO_DEMOLIB_H_ #include #include #include #include #include #ifdef NW_PLATFORM_CTRWIN #define NW_SND_DEMO_PATH_PREFIX "romfiles/" #else #define NW_SND_DEMO_PATH_PREFIX "rom:/" #endif namespace nw { namespace snd { namespace demolib { class AppBase { public: void Initialize(); void Finalize(); void Run(); protected: virtual void OnInitialize() {} virtual void OnFinalize() {} virtual void OnDrawUpLCD( nw::font::TextWriter& ) {} virtual void OnDrawDownLCD( nw::font::TextWriter& ) {} virtual void OnUpdatePad( nw::demo::Pad& ) {} virtual void OnUpdate() {} virtual void LoadDspComponent(); protected: AppBase(); void* MemAlloc( size_t size, u8 alignment = 4 ); void MemFree( void* memory ); void SetDraw( bool enable ) { m_IsDraw = enable; } bool IsDraw() const { return m_IsDraw; } private: void InitializeSDK(); void FinalizeSDK(); bool InitializeFont(); void FinalizeFont(); void InitializeShaders(); void FinalizeShaders(); void InitializeDrawStringBuffer(); void FinalizeDrawStringBuffer(); void InitializeGX(); void InitializeDraw( int width, int height ); void SetupTextCamera( nw::font::RectDrawer* pDrawer, int width, int height ); void DrawStringPreProcess( nw::font::TextWriter& writer, const nw::gfx::FrameBufferObject& frameBufferObject, int width, int height ); void DrawStringPostProcess( nw::font::TextWriter& writer, int width, int height ); void Draw(); void Update(); void UpdatePad(); nw::font::DispStringBuffer* AllocDispStringBuffer( int charMax ); nw::font::ResFont m_Font; nw::font::RectDrawer m_Drawer; void* m_pMemoryForRomFileSystem; void* m_pMemoryForDrawBuffer; nw::font::DispStringBuffer* m_pDrawStringBufferUpperLcd; nw::font::DispStringBuffer* m_pDrawStringBufferLowerLcd; bool m_IsDraw; }; } // namespace nw::snd::demolib } // namespace nw::snd } // namespace nw #endif /* NW_SND_DEMO_DEMOLIB_H_ */