1 /*---------------------------------------------------------------------------*
2 Project: Dolphin DEMO library
3 File: demo.h
4
5 Copyright 1998-2006 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 $Log: demo.h,v $
14 Revision 1.9 2007/06/15 23:04:30 carlmu
15 Allow XFB to be allocated from MEM2.
16
17 Revision 1.8 2007/02/07 23:54:31 johnc
18 Removed static scope from functions and variables inside DEMOInit.
19
20 Revision 1.7 2006/08/11 09:28:45 yasumoto_yoshitaka
21 surpress unused warning
22
23 Revision 1.6 2006/03/11 06:55:23 hirose
24 Integrated MEMAllocator, added switch to use heap defined in MEM library.
25 Moved easy-packed tpl functions from <revolution/tpl.h>
26
27 Revision 1.5 2006/02/04 13:05:44 hashida
28 (none)
29
30 Revision 1.4 2006/01/07 06:47:13 hirose
31 Reconstruction from simpler form.
32
33 Revision 1.3 2005/12/20 05:26:36 hirose
34 (none)
35
36 Revision 1.2 2005/08/03 02:52:20 hirose
37 Substitution of obsolete charPipeline libs by new tpl library.
38
39 Revision 1.1.1.1 2005/05/12 02:41:06 yasuh-to
40
41 $NoKeywords: $
42 *---------------------------------------------------------------------------*/
43
44 #ifndef __DEMO_H__
45 #define __DEMO_H__
46
47 /*---------------------------------------------------------------------------*/
48 #include <revolution.h>
49 #include <stdio.h>
50
51 #include <revolution/mem.h>
52 #include <revolution/tpl.h>
53
54 #include <demo/DEMOPad.h>
55 #include <demo/DEMOPuts.h>
56 /*---------------------------------------------------------------------------*/
57
58
59 #ifdef __cplusplus
60 extern "C" {
61 #endif
62
63 /*---------------------------------------------------------------------------*
64 DEMOInit.c
65 *---------------------------------------------------------------------------*/
66 // Global variables
67 extern MEMAllocator DemoAllocator1; // For MEM1
68 extern MEMAllocator DemoAllocator2; // For MEM2
69
70 // Function prototypes
71 extern void DEMOInit_Real ( GXRenderModeObj* mode );
72 extern void DEMOBeforeRender ( void );
73 extern void DEMODoneRender ( void );
74 extern void DEMOSwapBuffers ( void );
75 extern GXRenderModeObj* DEMOGetRenderModeObj( void );
76 extern void* DEMOGetCurrentBuffer( void );
77 extern void DEMOReInit ( GXRenderModeObj *mode );
78
79 extern void DEMOSetRenderMode ( GXRenderModeObj* mode );
80 extern void DEMOConfigureMem ( void );
81 extern void DEMOInitGX ( void );
82 extern void DEMOStartVI ( void );
83
84
85 // Definition of DEMOInit()
86 //
87 // If compiler switch 'DEMO_USE_MEMLIB' is defined, set DemoUseMEMHeap
88 // flag inside the library before DEMOInit_Real() is called.
89 extern u32 DemoUseMEMHeap;
90
91 #ifdef DEMO_USE_MEMLIB
92 #define DEMOInit(mode) \
93 { \
94 DemoUseMEMHeap = 1; \
95 DEMOInit_Real(mode); \
96 }
97 #else
98 #define DEMOInit(mode) \
99 { \
100 DemoUseMEMHeap = 0; \
101 DEMOInit_Real(mode); \
102 }
103 #endif
104
105 // Switch to put External Frame Buffers in MEM2.
106 // If desired, set this to TRUE before calling DEMOInit.
107 extern BOOL DemoUseMEM2XFB;
108
109 /*---------------------------------------------------------------------------*
110 Extension of <revolution/tpl.h>
111 Easy-packed TPL file access functions (inlined)
112 *---------------------------------------------------------------------------*/
TPLGetPalette(TPLPalettePtr * pal,char * name)113 inline void TPLGetPalette ( TPLPalettePtr *pal, char *name )
114 {
115 DVDFileInfo dfi;
116
117 (void)DVDOpen(name, &dfi);
118 (*pal) = (TPLPalettePtr)MEMAllocFromAllocator(&DemoAllocator1, OSRoundUp32B(dfi.length));
119 (void)DVDRead(&dfi, (*pal), (s32)OSRoundUp32B(dfi.length), 0);
120 (void)DVDClose(&dfi);
121
122 TPLBind(*pal);
123 }
124
125 /*---------------------------------------------------------------------------*/
TPLReleasePalette(TPLPalettePtr * pal)126 inline void TPLReleasePalette ( TPLPalettePtr *pal )
127 {
128 if ( pal )
129 {
130 MEMFreeToAllocator(&DemoAllocator1, *pal);
131 *pal = 0;
132 }
133 }
134 /*---------------------------------------------------------------------------*/
135
136
137 #ifdef __cplusplus
138 }
139 #endif
140
141 #endif // __DEMO_H__
142
143 /*===========================================================================*/
144