1 /*---------------------------------------------------------------------------*
2   Project:  TwlSDK - NA - include
3   File:     sub_banner.h
4 
5   Copyright 2007-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-17#$
14   $Rev: 8556 $
15   $Author: okubata_ryoma $
16  *---------------------------------------------------------------------------*/
17 #ifndef TWL_NA_ARM9_SUB_BANNER_H_
18 #define TWL_NA_ARM9_SUB_BANNER_H_
19 
20 #include    <twl/misc.h>
21 #include    <twl/types.h>
22 #include    <nitro/os/common/emulator.h>
23 #include    <nitro/gx/gxcommon.h>
24 #include    <nitro/gx/struct_2d.h>
25 
26 #ifdef  __cplusplus
27 extern "C" {
28 #endif
29 
30 /*===========================================================================*/
31 
32 
33 #define NA_SUBBANNER_VERSION        3
34 #define NA_SUBBANNER_PLATFORM       1
35 #define NA_SUBBANNER_PALETTE_NUM    16
36 #define NA_SUBBANNER_CHARACTER_NUM  16
37 #define NA_SUBBANNER_PATTERN_NUM    8
38 #define NA_SUBBANNER_CONTROL_NUM    64
39 
40 
41 typedef struct NASubBannerHeader
42 {
43     u8      version;
44     u8      platform;
45     u16     crc16_v1;
46     u16     crc16_v2;
47     u16     crc16_v3;
48     u16     crc16_anime;
49     u8      reserved_[ 22 ];
50 }
51 NASubBannerHeader;
52 
53 typedef struct NASubBannerControl
54 {
55     u8 frameCount : 8;
56 
57     union
58     {
59         struct
60         {
61             u8 cellNo   : 3;
62             u8 plttNo   : 3;
63             u8 flipH    : 1;
64             u8 flipV    : 1;
65         }
66         frameInfo;
67 
68         u8 animeType;
69     };
70 }
71 NASubBannerControl;
72 
73 typedef struct NASubBannerAnime
74 {
75     GXCharFmt16         image   [ NA_SUBBANNER_PATTERN_NUM ][ NA_SUBBANNER_CHARACTER_NUM ];
76     GXRgb               pltt    [ NA_SUBBANNER_PATTERN_NUM ][ NA_SUBBANNER_PALETTE_NUM ];
77     NASubBannerControl  control [ NA_SUBBANNER_CONTROL_NUM ];
78 }
79 NASubBannerAnime;
80 
81 typedef struct NASubBanner
82 {
83     NASubBannerHeader   header;
84     NASubBannerAnime    anime;
85 }
86 NASubBanner;
87 
88 
89 
90 BOOL NAi_SaveSubBanner( const NASubBanner *banner );
91 BOOL NAi_LoadSubBanner(NASubBanner *banner);
92 BOOL NAi_DeleteSubBanner( NASubBanner *workBuffer );
93 void NAi_MakeSubBannerHeader(NASubBanner *banner);
94 
NA_SaveSubBanner(const NASubBanner * banner)95 static inline BOOL NA_SaveSubBanner(const NASubBanner *banner )
96     { return OS_IsRunOnTwl() ? NAi_SaveSubBanner(banner): FALSE; }
NA_LoadSubBanner(NASubBanner * banner)97 static inline BOOL NA_LoadSubBanner(NASubBanner *banner)
98     { return OS_IsRunOnTwl() ? NAi_LoadSubBanner(banner): FALSE; }
NA_DeleteSubBanner(NASubBanner * workBuffer)99 static inline BOOL NA_DeleteSubBanner(NASubBanner *workBuffer)
100     { return OS_IsRunOnTwl() ? NAi_DeleteSubBanner(workBuffer): FALSE; }
NA_MakeSubBannerHeader(NASubBanner * banner)101 static inline void NA_MakeSubBannerHeader(NASubBanner *banner)
102     { if (OS_IsRunOnTwl()) NAi_MakeSubBannerHeader(banner); }
103 
104 
105 
106 /*===========================================================================*/
107 
108 #ifdef  __cplusplus
109 }          /* extern "C" */
110 #endif
111 
112 #endif /* TWL_NA_ARM9_SUB_BANNER_H_ */
113 
114 /*---------------------------------------------------------------------------*
115   End of file
116  *---------------------------------------------------------------------------*/
117