wut  v1.7.0
Wii U Toolchain
KillerNotification.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "sl_cpp.h"
4 #include <nn/result.h>
6 #include <wut.h>
7 
8 #ifdef __cplusplus
9 
10 namespace nn::sl {
11  struct KillerNotification;
12  namespace details {
15  } // namespace details
16 
17  typedef enum KillerNotificationType {
18  PROMOTION = 0,
19  PUSH_APP = 1,
20  NON_COMMERCIAL = 2
22 
24  NORMAL = 0,
25  SILENT = 1
27 
28  typedef enum KillerNotificationGender {
29  UNKNOWN = 0,
30  MALE = 1,
31  FEMALE = 2
33 
34  typedef enum KillerNotificationAllowLocalAccount : int8_t {
35  ALLOW = 0,
36  NOT_ALLOW = 1
38 
41  ANYBODY = 1
43 
45  AND = 0,
46  OR = 1
48 
50  uint64_t titleId;
52  };
53  WUT_CHECK_SIZE(KillerNotificationInstalledTitleFilter, 0x0C);
54  WUT_CHECK_OFFSET(KillerNotificationInstalledTitleFilter, 0x00, titleId);
55  WUT_CHECK_OFFSET(KillerNotificationInstalledTitleFilter, 0x08, conjunction);
56 
58  uint64_t titleId;
59  enum KillerNotificationConjunction conjunction;
60  };
61  WUT_CHECK_SIZE(KillerNotificationPlayedTitleFilter, 0x0C);
62  WUT_CHECK_OFFSET(KillerNotificationPlayedTitleFilter, 0x00, titleId);
63  WUT_CHECK_OFFSET(KillerNotificationPlayedTitleFilter, 0x08, conjunction);
64 
65  struct WUT_PACKED KillerNotificationTitleFilter {
66  uint64_t titleId;
67  WUT_UNKNOWN_BYTES(4);
68  int32_t played;
69  WUT_UNKNOWN_BYTES(4);
70  int32_t installed;
71  };
72  WUT_CHECK_SIZE(KillerNotificationTitleFilter, 0x18);
73  WUT_CHECK_OFFSET(KillerNotificationTitleFilter, 0x0C, played);
74  WUT_CHECK_OFFSET(KillerNotificationTitleFilter, 0x14, installed);
75 
76 
77  struct WUT_PACKED KillerNotification {
78  uint32_t serialId;
79  uint32_t version;
80  WUT_UNKNOWN_BYTES(16);
81  bool deleteFlag;
82  char language[4];
83  WUT_UNKNOWN_BYTES(3);
86  struct {
87  uint64_t titleId;
88  char parameter[2048];
89  } launchApplication;
90  uint32_t priority;
91  struct {
92  struct {
93  DRCImagePalette palette; // the "main" image actually uses the button palette in the quick start menu
94  uint8_t pixels[400][854]; // index of color in (button) palette - 854x400
95  } main;
96  struct {
97  DRCImagePalette palette;
98  uint8_t pixels[160][487]; // index of color in palette - 487*160
99  } button;
100  WUT_PADDING_BYTES(0);
101  char banner[290416]; // BMP! 854×85, Bit depth: 32
102  } images;
103  struct {
104  WUT_UNKNOWN_BYTES(12);
105  struct WUT_PACKED {
106  uint64_t startUnixTime;
107  uint64_t endUnixTime;
108  } duration;
109  WUT_UNKNOWN_BYTES(4);
110  uint32_t lifetime;
111  WUT_UNKNOWN_BYTES(4);
112  struct {
113  struct {
114  uint32_t lowerBound;
115  uint32_t upperBound;
116  } age;
118  } account;
119  struct {
120  uint32_t titleCount;
121  WUT_UNKNOWN_BYTES(4);
123  } titleFilter;
124  WUT_UNKNOWN_BYTES(1);
125  struct WUT_PACKED {
126  KillerNotificationAllowLocalAccount allowLocalAccount;
127  WUT_UNKNOWN_BYTES(2);
128  uint32_t ageRestrictionLowerBound;
129  } ageRestriction;
130  KillerNotificationAccountMailActivation accountMailActivation;
131 
132  WUT_UNKNOWN_BYTES(11);
133  uint32_t accountBirthMonth;
134  WUT_UNKNOWN_BYTES(4);
135  int8_t anticipatoryDownload;
136  WUT_UNKNOWN_BYTES(15);
137  struct {
138  int32_t installedTitleCount;
139  enum KillerNotificationConjunction installedConjunction;
140  WUT_UNKNOWN_BYTES(4);
141  struct KillerNotificationInstalledTitleFilter installedTitleFilter[2];
142  };
143  WUT_UNKNOWN_BYTES(12);
144  struct {
145  uint32_t playedTitleFilterCount;
146  enum KillerNotificationConjunction playedConjunction;
147  WUT_UNKNOWN_BYTES(4);
148  uint32_t played_duration_sinceUnixTime;
149  WUT_UNKNOWN_BYTES(4);
150  KillerNotificationPlayedTitleFilter playedTitleFilter[2];
151  };
152  } displayCondition;
153  WUT_UNKNOWN_BYTES(8);
154  uint32_t formatVersion;
155  uint32_t tags;
156  WUT_UNKNOWN_BYTES(256);
157 
158  static nn::Result CheckEmptyValue(bool *outRes, const KillerNotification *u2) {
160  }
161 
164  }
165  };
166  WUT_CHECK_SIZE(KillerNotification, 0xae768);
167  WUT_CHECK_OFFSET(KillerNotification, 0x0, serialId);
168  WUT_CHECK_OFFSET(KillerNotification, 0x04, version);
169  WUT_CHECK_OFFSET(KillerNotification, 0x18, deleteFlag);
170  WUT_CHECK_OFFSET(KillerNotification, 0x20, type);
171  WUT_CHECK_OFFSET(KillerNotification, 0x24, notificationPattern);
172  WUT_CHECK_OFFSET(KillerNotification, 0x28, launchApplication.titleId);
173  WUT_CHECK_OFFSET(KillerNotification, 0x30, launchApplication.parameter);
174  WUT_CHECK_OFFSET(KillerNotification, 0x830, priority);
175  WUT_CHECK_OFFSET(KillerNotification, 0x834, images);
176  WUT_CHECK_OFFSET(KillerNotification, 0x834, images.main);
177  WUT_CHECK_OFFSET(KillerNotification, 0x834 + 0x400, images.main.pixels);
178  WUT_CHECK_OFFSET(KillerNotification, 0x54294, images.button);
179  WUT_CHECK_OFFSET(KillerNotification, 0x54294 + 0x400, images.button.pixels);
180  WUT_CHECK_OFFSET(KillerNotification, 0x676f4, images.banner);
181  WUT_CHECK_OFFSET(KillerNotification, 0xae570, displayCondition.duration.startUnixTime);
182  WUT_CHECK_OFFSET(KillerNotification, 0xae578, displayCondition.duration.endUnixTime);
183  WUT_CHECK_OFFSET(KillerNotification, 0xae584, displayCondition.lifetime);
184  WUT_CHECK_OFFSET(KillerNotification, 0xae58C, displayCondition.account.age.lowerBound);
185  WUT_CHECK_OFFSET(KillerNotification, 0xae590, displayCondition.account.age.upperBound);
186  WUT_CHECK_OFFSET(KillerNotification, 0xae594, displayCondition.account.gender);
187  WUT_CHECK_OFFSET(KillerNotification, 0xae598, displayCondition.titleFilter.titleCount);
188  WUT_CHECK_OFFSET(KillerNotification, 0xae5a0, displayCondition.titleFilter.titles);
189  WUT_CHECK_OFFSET(KillerNotification, 0xae5d1, displayCondition.ageRestriction.allowLocalAccount);
190  WUT_CHECK_OFFSET(KillerNotification, 0xae5d4, displayCondition.ageRestriction.ageRestrictionLowerBound);
191  WUT_CHECK_OFFSET(KillerNotification, 0xae5d8, displayCondition.accountMailActivation);
192  WUT_CHECK_OFFSET(KillerNotification, 0xae5e4, displayCondition.accountBirthMonth);
193  WUT_CHECK_OFFSET(KillerNotification, 0xae5ec, displayCondition.anticipatoryDownload);
194  WUT_CHECK_OFFSET(KillerNotification, 0xae5fc, displayCondition.installedTitleCount);
195  WUT_CHECK_OFFSET(KillerNotification, 0xae600, displayCondition.installedConjunction);
196  WUT_CHECK_OFFSET(KillerNotification, 0xae608, displayCondition.installedTitleFilter);
197  WUT_CHECK_OFFSET(KillerNotification, 0xae62c, displayCondition.playedTitleFilterCount);
198  WUT_CHECK_OFFSET(KillerNotification, 0xae630, displayCondition.playedConjunction);
199  WUT_CHECK_OFFSET(KillerNotification, 0xae638, displayCondition.played_duration_sinceUnixTime);
200  WUT_CHECK_OFFSET(KillerNotification, 0xae640, displayCondition.playedTitleFilter);
201  WUT_CHECK_OFFSET(KillerNotification, 0xae660, formatVersion);
202  WUT_CHECK_OFFSET(KillerNotification, 0xae664, tags);
203 
204 } // namespace nn::sl
205 
206 #endif
Result value type used by nn libraries.
Definition: result.h:68
void __CPR76__GetEmptyValue__Q3_2nn2sl18KillerNotificationSFPQ3_2nn2slJ24J(KillerNotification *u1)
nn::Result __CPR81__CheckEmptyValue__Q3_2nn2sl18KillerNotificationSFPbPCQ3_2nn2slJ26J(bool *u1, const KillerNotification *u2)
KillerNotificationNotificationPattern
KillerNotificationAllowLocalAccount
KillerNotificationAccountMailActivation
KillerNotificationConjunction
KillerNotificationType type
static void GetEmptyValue(KillerNotification *u1)
KillerNotificationNotificationPattern notificationPattern
static nn::Result CheckEmptyValue(bool *outRes, const KillerNotification *u2)