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