1 /*---------------------------------------------------------------------------*
2   Project:  TwlSDK - GX -
3   File:     gx_load.h
4 
5   Copyright 2003-2008 Nintendo.  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   $Date:: 2008-09-18#$
14   $Rev: 8573 $
15   $Author: okubata_ryoma $
16  *---------------------------------------------------------------------------*/
17 
18 #ifndef NITRO_GX_LOAD_H_
19 #define NITRO_GX_LOAD_H_
20 
21 #include <nitro/gx/gxcommon.h>
22 #include <nitro/gx/gx_vramcnt.h>
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 //----------------------------------------------------------------------------
29 // Type definition
30 //----------------------------------------------------------------------------
31 
32 //----------------------------------------------------------------------------
33 // Declaration of function
34 //----------------------------------------------------------------------------
35 
36 //
37 // Main 2D engine
38 //
39 void    GX_LoadBGPltt(const void *pSrc, u32 offset, u32 szByte);
40 void    GX_LoadOBJPltt(const void *pSrc, u32 offset, u32 szByte);
41 void    GX_LoadOAM(const void *pSrc, u32 offset, u32 szByte);
42 void    GX_LoadOBJ(const void *pSrc, u32 offset, u32 szByte);
43 
44 void    GX_LoadBG0Scr(const void *pSrc, u32 offset, u32 szByte);
45 void    GX_LoadBG1Scr(const void *pSrc, u32 offset, u32 szByte);
46 void    GX_LoadBG2Scr(const void *pSrc, u32 offset, u32 szByte);
47 void    GX_LoadBG3Scr(const void *pSrc, u32 offset, u32 szByte);
48 
49 void    GX_LoadBG0Char(const void *pSrc, u32 offset, u32 szByte);
50 void    GX_LoadBG1Char(const void *pSrc, u32 offset, u32 szByte);
51 void    GX_LoadBG2Char(const void *pSrc, u32 offset, u32 szByte);
52 void    GX_LoadBG3Char(const void *pSrc, u32 offset, u32 szByte);
53 
54 void    GX_BeginLoadBGExtPltt(void);
55 void    GX_LoadBGExtPltt(const void *pSrc, u32 destSlotAddr, u32 szByte);
56 void    GX_EndLoadBGExtPltt(void);
57 
58 void    GX_BeginLoadOBJExtPltt(void);
59 void    GX_LoadOBJExtPltt(const void *pSrc, u32 destSlotAddr, u32 szByte);
60 void    GX_EndLoadOBJExtPltt(void);
61 
62 //
63 // Sub 2D engine
64 //
65 void    GXS_LoadBGPltt(const void *pSrc, u32 offset, u32 szByte);
66 void    GXS_LoadOBJPltt(const void *pSrc, u32 offset, u32 szByte);
67 void    GXS_LoadOAM(const void *pSrc, u32 offset, u32 szByte);
68 void    GXS_LoadOBJ(const void *pSrc, u32 offset, u32 szByte);
69 
70 void    GXS_LoadBG0Scr(const void *pSrc, u32 offset, u32 szByte);
71 void    GXS_LoadBG1Scr(const void *pSrc, u32 offset, u32 szByte);
72 void    GXS_LoadBG2Scr(const void *pSrc, u32 offset, u32 szByte);
73 void    GXS_LoadBG3Scr(const void *pSrc, u32 offset, u32 szByte);
74 
75 void    GXS_LoadBG0Char(const void *pSrc, u32 offset, u32 szByte);
76 void    GXS_LoadBG1Char(const void *pSrc, u32 offset, u32 szByte);
77 void    GXS_LoadBG2Char(const void *pSrc, u32 offset, u32 szByte);
78 void    GXS_LoadBG3Char(const void *pSrc, u32 offset, u32 szByte);
79 
80 void    GXS_BeginLoadBGExtPltt(void);
81 void    GXS_LoadBGExtPltt(const void *pSrc, u32 destSlotAddr, u32 szByte);
82 void    GXS_EndLoadBGExtPltt(void);
83 
84 void    GXS_BeginLoadOBJExtPltt(void);
85 void    GXS_LoadOBJExtPltt(const void *pSrc, u32 destSlotAddr, u32 szByte);
86 void    GXS_EndLoadOBJExtPltt(void);
87 
88 //
89 // 3D engine
90 //
91 void    GX_BeginLoadTex(void);
92 void    GX_LoadTex(const void *pSrc, u32 destSlotAddr, u32 szByte);
93 void    GX_EndLoadTex(void);
94 void    GX_LoadTexEx(GXVRamTex tex, const void *pSrc, u32 destSlotAddr, u32 szByte);
95 
96 void    GX_BeginLoadTexPltt(void);
97 void    GX_LoadTexPltt(const void *pSrc, u32 destSlotAddr, u32 szByte);
98 void    GX_EndLoadTexPltt(void);
99 void    GX_LoadTexPlttEx(GXVRamTexPltt texPltt, const void *pSrc, u32 destSlotAddr, u32 szByte);
100 
101 void    GX_BeginLoadClearImage(void);
102 void    GX_LoadClearImageColor(const void *pSrc, u32 szByte);
103 void    GX_LoadClearImageDepth(const void *pSrc, u32 szByte);
104 void    GX_EndLoadClearImage(void);
105 
106 //----------------------------------------------------------------------------
107 // Implementation of inline function
108 //----------------------------------------------------------------------------
109 
110 /*---------------------------------------------------------------------------*
111   Name:         GX_LoadBG2Bmp
112 
113   Description:  Transfers bitmap data to BG #2 bitmap area for the MAIN 2D engine.
114                 pSrc, offset, and szByte must be 2-bytes aligned.
115 
116   Arguments:    pSrc             a pointer to the source of the BG screen data
117                 offset           an offset to the start address of BG #2 bitmap area
118                 szByte           the size of the source
119 
120   Returns:      none
121  *---------------------------------------------------------------------------*/
GX_LoadBG2Bmp(const void * pSrc,u32 offset,u32 szByte)122 static inline void GX_LoadBG2Bmp(const void *pSrc, u32 offset, u32 szByte)
123 {
124     GX_LoadBG2Scr(pSrc, offset, szByte);
125 }
126 
127 /*---------------------------------------------------------------------------*
128   Name:         GX_LoadBG3Bmp
129 
130   Description:  Transfers bitmap data to BG #3 bitmap area for the MAIN 2D engine.
131                 pSrc, offset, and szByte must be 2-bytes aligned.
132 
133   Arguments:    pSrc             a pointer to the source of the BG screen data
134                 offset           an offset to the start address of BG #3 bitmap area
135                 szByte           the size of the source
136 
137   Returns:      none
138  *---------------------------------------------------------------------------*/
GX_LoadBG3Bmp(const void * pSrc,u32 offset,u32 szByte)139 static inline void GX_LoadBG3Bmp(const void *pSrc, u32 offset, u32 szByte)
140 {
141     GX_LoadBG3Scr(pSrc, offset, szByte);
142 }
143 
144 /*---------------------------------------------------------------------------*
145   Name:         GXS_LoadBG2Bmp
146 
147   Description:  Transfers bitmap data to BG #2 bitmap area for the SUB 2D engine.
148                 pSrc, offset, and szByte must be 2-bytes aligned.
149 
150   Arguments:    pSrc             a pointer to the source of the BG screen data
151                 offset           an offset to the start address of BG #2 bitmap area
152                 szByte           the size of the source
153 
154   Returns:      none
155  *---------------------------------------------------------------------------*/
GXS_LoadBG2Bmp(const void * pSrc,u32 offset,u32 szByte)156 static inline void GXS_LoadBG2Bmp(const void *pSrc, u32 offset, u32 szByte)
157 {
158     GXS_LoadBG2Scr(pSrc, offset, szByte);
159 }
160 
161 /*---------------------------------------------------------------------------*
162   Name:         GXS_LoadBG3Bmp
163 
164   Description:  Transfers bitmap data to BG #3 bitmap area for the SUB 2D engine.
165                 pSrc, offset, and szByte must be 2-bytes aligned.
166 
167   Arguments:    pSrc             a pointer to the source of the BG screen data
168                 offset           an offset to the start address of BG #3 bitmap area
169                 szByte           the size of the source
170 
171   Returns:      none
172  *---------------------------------------------------------------------------*/
GXS_LoadBG3Bmp(const void * pSrc,u32 offset,u32 szByte)173 static inline void GXS_LoadBG3Bmp(const void *pSrc, u32 offset, u32 szByte)
174 {
175     GXS_LoadBG3Scr(pSrc, offset, szByte);
176 }
177 
178 
179 #ifdef __cplusplus
180 }/* extern "C" */
181 #endif
182 
183 #endif
184