wut v1.9.1
Wii U Toolchain
Loading...
Searching...
No Matches
KillerNotification.h
Go to the documentation of this file.
1#pragma once
2
3#include <wut.h>
4#include <nn/result.h>
6#include "sl_cpp.h"
7
8#ifdef __cplusplus
9
10namespace nn::sl
11{
12struct KillerNotification;
13namespace details
14{
15extern "C" nn::Result
17extern "C" void
19} // namespace details
20
27
33
40
46
52
58
64WUT_CHECK_SIZE(KillerNotificationInstalledTitleFilter, 0x0C);
65WUT_CHECK_OFFSET(KillerNotificationInstalledTitleFilter, 0x00, titleId);
66WUT_CHECK_OFFSET(KillerNotificationInstalledTitleFilter, 0x08, conjunction);
67
73WUT_CHECK_SIZE(KillerNotificationPlayedTitleFilter, 0x0C);
74WUT_CHECK_OFFSET(KillerNotificationPlayedTitleFilter, 0x00, titleId);
75WUT_CHECK_OFFSET(KillerNotificationPlayedTitleFilter, 0x08, conjunction);
76
78{
79 uint64_t titleId;
80 WUT_UNKNOWN_BYTES(4);
81 int32_t played;
82 WUT_UNKNOWN_BYTES(4);
83 int32_t installed;
84};
85WUT_CHECK_SIZE(KillerNotificationTitleFilter, 0x18);
86WUT_CHECK_OFFSET(KillerNotificationTitleFilter, 0x0C, played);
87WUT_CHECK_OFFSET(KillerNotificationTitleFilter, 0x14, installed);
88
89
90struct WUT_PACKED KillerNotification
91{
92 uint32_t serialId;
93 uint32_t version;
94 WUT_UNKNOWN_BYTES(16);
96 char language[4];
97 WUT_UNKNOWN_BYTES(3);
100 struct
101 {
102 uint64_t titleId;
103 char parameter[2048];
104 } launchApplication;
105 uint32_t priority;
106 struct
107 {
108 struct
109 {
110 DRCImagePalette palette; // the "main" image actually uses the button palette in the quick start menu
111 uint8_t pixels[400][854]; // index of color in (button) palette - 854x400
112 } main;
113 struct
114 {
115 DRCImagePalette palette;
116 uint8_t pixels[160][487]; // index of color in palette - 487*160
117 } button;
118 WUT_PADDING_BYTES(0);
119 char banner[290416]; // BMP! 854×85, Bit depth: 32
120 } images;
121 struct
122 {
123 WUT_UNKNOWN_BYTES(12);
124 struct WUT_PACKED
125 {
126 uint64_t startUnixTime;
127 uint64_t endUnixTime;
128 } duration;
129 WUT_UNKNOWN_BYTES(4);
130 uint32_t lifetime;
131 WUT_UNKNOWN_BYTES(4);
132 struct
133 {
134 struct
135 {
136 uint32_t lowerBound;
137 uint32_t upperBound;
138 } age;
140 } account;
141 struct
142 {
143 uint32_t titleCount;
144 WUT_UNKNOWN_BYTES(4);
146 } titleFilter;
147 WUT_UNKNOWN_BYTES(1);
148 struct WUT_PACKED
149 {
150 KillerNotificationAllowLocalAccount allowLocalAccount;
151 WUT_UNKNOWN_BYTES(2);
152 uint32_t ageRestrictionLowerBound;
153 } ageRestriction;
154 KillerNotificationAccountMailActivation accountMailActivation;
155
156 WUT_UNKNOWN_BYTES(11);
157 uint32_t accountBirthMonth;
158 WUT_UNKNOWN_BYTES(4);
159 int8_t anticipatoryDownload;
160 WUT_UNKNOWN_BYTES(15);
161 struct
162 {
163 int32_t installedTitleCount;
164 enum KillerNotificationConjunction installedConjunction;
165 WUT_UNKNOWN_BYTES(4);
166 struct KillerNotificationInstalledTitleFilter installedTitleFilter[2];
167 };
168 WUT_UNKNOWN_BYTES(12);
169 struct
170 {
171 uint32_t playedTitleFilterCount;
172 enum KillerNotificationConjunction playedConjunction;
173 WUT_UNKNOWN_BYTES(4);
174 uint32_t played_duration_sinceUnixTime;
175 WUT_UNKNOWN_BYTES(4);
176 KillerNotificationPlayedTitleFilter playedTitleFilter[2];
177 };
178 } displayCondition;
179 WUT_UNKNOWN_BYTES(8);
181 uint32_t tags;
182 WUT_UNKNOWN_BYTES(256);
183
184 static nn::Result
185 CheckEmptyValue(bool *outRes, const KillerNotification *u2)
186 {
187 return details::__CPR81__CheckEmptyValue__Q3_2nn2sl18KillerNotificationSFPbPCQ3_2nn2slJ26J(outRes, u2);
188 }
189
190 static void
192 {
193 return details::__CPR76__GetEmptyValue__Q3_2nn2sl18KillerNotificationSFPQ3_2nn2slJ24J(u1);
194 }
195};
196WUT_CHECK_SIZE(KillerNotification, 0xae768);
197WUT_CHECK_OFFSET(KillerNotification, 0x0, serialId);
198WUT_CHECK_OFFSET(KillerNotification, 0x04, version);
199WUT_CHECK_OFFSET(KillerNotification, 0x18, deleteFlag);
200WUT_CHECK_OFFSET(KillerNotification, 0x20, type);
201WUT_CHECK_OFFSET(KillerNotification, 0x24, notificationPattern);
202WUT_CHECK_OFFSET(KillerNotification, 0x28, launchApplication.titleId);
203WUT_CHECK_OFFSET(KillerNotification, 0x30, launchApplication.parameter);
204WUT_CHECK_OFFSET(KillerNotification, 0x830, priority);
205WUT_CHECK_OFFSET(KillerNotification, 0x834, images);
206WUT_CHECK_OFFSET(KillerNotification, 0x834, images.main);
207WUT_CHECK_OFFSET(KillerNotification, 0x834 + 0x400, images.main.pixels);
208WUT_CHECK_OFFSET(KillerNotification, 0x54294, images.button);
209WUT_CHECK_OFFSET(KillerNotification, 0x54294 + 0x400, images.button.pixels);
210WUT_CHECK_OFFSET(KillerNotification, 0x676f4, images.banner);
211WUT_CHECK_OFFSET(KillerNotification, 0xae570, displayCondition.duration.startUnixTime);
212WUT_CHECK_OFFSET(KillerNotification, 0xae578, displayCondition.duration.endUnixTime);
213WUT_CHECK_OFFSET(KillerNotification, 0xae584, displayCondition.lifetime);
214WUT_CHECK_OFFSET(KillerNotification, 0xae58C, displayCondition.account.age.lowerBound);
215WUT_CHECK_OFFSET(KillerNotification, 0xae590, displayCondition.account.age.upperBound);
216WUT_CHECK_OFFSET(KillerNotification, 0xae594, displayCondition.account.gender);
217WUT_CHECK_OFFSET(KillerNotification, 0xae598, displayCondition.titleFilter.titleCount);
218WUT_CHECK_OFFSET(KillerNotification, 0xae5a0, displayCondition.titleFilter.titles);
219WUT_CHECK_OFFSET(KillerNotification, 0xae5d1, displayCondition.ageRestriction.allowLocalAccount);
220WUT_CHECK_OFFSET(KillerNotification, 0xae5d4, displayCondition.ageRestriction.ageRestrictionLowerBound);
221WUT_CHECK_OFFSET(KillerNotification, 0xae5d8, displayCondition.accountMailActivation);
222WUT_CHECK_OFFSET(KillerNotification, 0xae5e4, displayCondition.accountBirthMonth);
223WUT_CHECK_OFFSET(KillerNotification, 0xae5ec, displayCondition.anticipatoryDownload);
224WUT_CHECK_OFFSET(KillerNotification, 0xae5fc, displayCondition.installedTitleCount);
225WUT_CHECK_OFFSET(KillerNotification, 0xae600, displayCondition.installedConjunction);
226WUT_CHECK_OFFSET(KillerNotification, 0xae608, displayCondition.installedTitleFilter);
227WUT_CHECK_OFFSET(KillerNotification, 0xae62c, displayCondition.playedTitleFilterCount);
228WUT_CHECK_OFFSET(KillerNotification, 0xae630, displayCondition.playedConjunction);
229WUT_CHECK_OFFSET(KillerNotification, 0xae638, displayCondition.played_duration_sinceUnixTime);
230WUT_CHECK_OFFSET(KillerNotification, 0xae640, displayCondition.playedTitleFilter);
231WUT_CHECK_OFFSET(KillerNotification, 0xae660, formatVersion);
232WUT_CHECK_OFFSET(KillerNotification, 0xae664, tags);
233
234} // namespace nn::sl
235
236#endif
Result value type used by nn libraries.
Definition result.h:70
nn::Result __CPR81__CheckEmptyValue__Q3_2nn2sl18KillerNotificationSFPbPCQ3_2nn2slJ26J(bool *u1, const KillerNotification *u2)
void __CPR76__GetEmptyValue__Q3_2nn2sl18KillerNotificationSFPQ3_2nn2slJ24J(KillerNotification *u1)
enum KillerNotificationConjunction conjunction
KillerNotificationNotificationPattern
KillerNotificationAllowLocalAccount
KillerNotificationAccountMailActivation
KillerNotificationConjunction
KillerNotificationType type
static void GetEmptyValue(KillerNotification *u1)
KillerNotificationNotificationPattern notificationPattern
static nn::Result CheckEmptyValue(bool *outRes, const KillerNotification *u2)