1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     gx_Vram.h
4 
5   Copyright (C)2009 Nintendo Co., Ltd.  All rights reserved.
6 
7   These coded instructions, statements, and computer programs contain
8   proprietary information of Nintendo of America Inc. and/or Nintendo
9   Company Ltd., and are protected by Federal copyright law.  They may
10   not be disclosed to third parties or copied or duplicated in any form,
11   in whole or in part, without the prior written consent of Nintendo.
12 
13   $Rev: 12449 $
14  *---------------------------------------------------------------------------*/
15 
16 #ifndef NN_GX_CTR_GX_VRAM_H_
17 #define NN_GX_CTR_GX_VRAM_H_
18 
19 #include <nn/types.h>
20 #include <nn/assert.h>
21 
22 /*--------------------------------------------------------------------------
23     C API
24  *-------------------------------------------------------------------------*/
25 /*!
26   @addtogroup  nn_gx    gx
27   @{
28 */
29 
30 #ifdef  __cplusplus
31 extern "C" {
32 #endif // __cplusplus
33 
34 #ifndef NN_GX_MEM_VRAMA
35 #define NN_GX_MEM_VRAMA     0x00020000
36 #endif // NN_GX_MEM_VRAMA
37 
38 #ifndef NN_GX_MEM_VRAMB
39 #define NN_GX_MEM_VRAMB     0x00030000
40 #endif // NN_GX_MEM_VRAMB
41 
42     /*!--------------------------------------------------------------------------*
43       @brief        指定したVRAM領域の先頭アドレスを取得します。
44 
45       @param[in]    area    取得するVRAM領域 (NN_GX_MEM_VRAMA もしくは NN_GX_MEM_VRAMB)
46       @return       取得したVRAM領域の先頭アドレス。
47      *---------------------------------------------------------------------------*/
48     uptr nngxGetVramStartAddr( s32 area );
49 
50     /*!--------------------------------------------------------------------------*
51       @brief        指定したVRAM領域の終端アドレスを取得します。
52 
53       @param[in]    area    取得するVRAM領域 (NN_GX_MEM_VRAMA もしくは NN_GX_MEM_VRAMB)
54       @return       取得したVRAM領域の終端アドレス。
55      *---------------------------------------------------------------------------*/
56     uptr nngxGetVramEndAddr( s32 area );
57 
58     /*!--------------------------------------------------------------------------*
59       @brief        指定したVRAM領域のサイズを取得します。
60 
61       @param[in]    area    取得するVRAM領域 (NN_GX_MEM_VRAMA もしくは NN_GX_MEM_VRAMB)
62       @return       取得したVRAM領域のサイズ。
63      *---------------------------------------------------------------------------*/
64     size_t nngxGetVramSize( s32 area );
65 
66 #ifdef  __cplusplus
67 } // extern "C"
68 #endif // __cplusplus
69 
70 /*!
71   @}
72 */
73 
74 /*--------------------------------------------------------------------------
75     C++ API
76  *-------------------------------------------------------------------------*/
77 #ifdef  __cplusplus
78 namespace nn {
79 namespace gx {
80 namespace CTR {
81 
82     /*!--------------------------------------------------------------------------*
83       @enum         VramArea
84       @brief        VRAM領域の指定に用います。
85      *---------------------------------------------------------------------------*/
86     enum VramArea
87     {
88         /*! @brief  VRAM領域A */
89         MEM_VRAMA = NN_GX_MEM_VRAMA,
90         /*! @brief  VRAM領域B */
91         MEM_VRAMB = NN_GX_MEM_VRAMB
92     };
93 
94     /*!--------------------------------------------------------------------------*
95       @brief        指定したVRAM領域の先頭アドレスを取得します。
96 
97                     VRAM領域の先頭アドレスは必ずこのAPIを用いて取得してください。
98                     なお、取得されるアドレスは将来的に変更になる可能性があります。
99 
100       @param[in]    area    取得するVRAM領域 (MEM_VRAMA もしくは MEM_VRAMB)
101       @return       取得したVRAM領域の先頭アドレス。
102      *---------------------------------------------------------------------------*/
GetVramStartAddr(VramArea area)103     inline uptr GetVramStartAddr( VramArea area )
104     {
105         return nngxGetVramStartAddr(area);
106     }
107 
108     /*!--------------------------------------------------------------------------*
109       @brief        指定したVRAM領域の終端アドレスを取得します。
110 
111                     VRAM領域の終端アドレスは必ずこのAPIを用いて取得してください。
112                     なお、取得されるアドレスは将来的に変更になる可能性があります。
113 
114       @param[in]    area    取得するVRAM領域 (MEM_VRAMA もしくは MEM_VRAMB)
115       @return       取得したVRAM領域の終端アドレス。
116      *---------------------------------------------------------------------------*/
GetVramEndAddr(VramArea area)117     inline uptr GetVramEndAddr( VramArea area )
118     {
119         return nngxGetVramEndAddr(area);
120     }
121 
122     /*!--------------------------------------------------------------------------*
123       @brief        指定したVRAM領域のサイズを取得します。
124 
125                     VRAM領域のサイズは必ずこのAPIを用いて取得してください。
126                     なお、取得されるサイズは将来的に変更になる可能性があります。
127 
128       @param[in]    area    取得するVRAM領域 (MEM_VRAMA もしくは MEM_VRAMB)
129       @return       取得したVRAM領域のサイズ。
130      *---------------------------------------------------------------------------*/
GetVramSize(VramArea area)131     inline size_t GetVramSize( VramArea area )
132     {
133         return nngxGetVramSize(area);
134     }
135 
136 }}} // namespace nn::gx::CTR
137 #endif // __cplusplus
138 
139 
140 #endif /* NN_GX_CTR_GX_VRAM_H_ */
141