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:: 2011-04-12#$
14   $Rev: 11403 $
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 reserved : 2;
64         }
65         frameInfo;
66 
67         u8 animeType;
68     };
69 }
70 NASubBannerControl;
71 
72 typedef struct NASubBannerAnime
73 {
74     GXCharFmt16         image   [ NA_SUBBANNER_PATTERN_NUM ][ NA_SUBBANNER_CHARACTER_NUM ];
75     GXRgb               pltt    [ NA_SUBBANNER_PATTERN_NUM ][ NA_SUBBANNER_PALETTE_NUM ];
76     NASubBannerControl  control [ NA_SUBBANNER_CONTROL_NUM ];
77 }
78 NASubBannerAnime;
79 
80 typedef struct NASubBanner
81 {
82     NASubBannerHeader   header;
83     NASubBannerAnime    anime;
84 }
85 NASubBanner;
86 
87 
88 
89 BOOL NAi_SaveSubBanner( const NASubBanner *banner );
90 BOOL NAi_LoadSubBanner(NASubBanner *banner);
91 BOOL NAi_DeleteSubBanner( NASubBanner *workBuffer );
92 void NAi_MakeSubBannerHeader(NASubBanner *banner);
93 
NA_SaveSubBanner(const NASubBanner * banner)94 static inline BOOL NA_SaveSubBanner(const NASubBanner *banner )
95     { return OS_IsRunOnTwl() ? NAi_SaveSubBanner(banner): FALSE; }
NA_LoadSubBanner(NASubBanner * banner)96 static inline BOOL NA_LoadSubBanner(NASubBanner *banner)
97     { return OS_IsRunOnTwl() ? NAi_LoadSubBanner(banner): FALSE; }
NA_DeleteSubBanner(NASubBanner * workBuffer)98 static inline BOOL NA_DeleteSubBanner(NASubBanner *workBuffer)
99     { return OS_IsRunOnTwl() ? NAi_DeleteSubBanner(workBuffer): FALSE; }
NA_MakeSubBannerHeader(NASubBanner * banner)100 static inline void NA_MakeSubBannerHeader(NASubBanner *banner)
101     { if (OS_IsRunOnTwl()) NAi_MakeSubBannerHeader(banner); }
102 
103 
104 
105 /*===========================================================================*/
106 
107 #ifdef  __cplusplus
108 }          /* extern "C" */
109 #endif
110 
111 #endif /* TWL_NA_ARM9_SUB_BANNER_H_ */
112 
113 /*---------------------------------------------------------------------------*
114   End of file
115  *---------------------------------------------------------------------------*/
116