wut v1.8.0
Wii U Toolchain
Loading...
Searching...
No Matches
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
10namespace nn::sl {
11 struct KillerNotification;
12 namespace details {
15 } // namespace details
16
22
27
33
38
43
48
53 WUT_CHECK_SIZE(KillerNotificationInstalledTitleFilter, 0x0C);
54 WUT_CHECK_OFFSET(KillerNotificationInstalledTitleFilter, 0x00, titleId);
55 WUT_CHECK_OFFSET(KillerNotificationInstalledTitleFilter, 0x08, conjunction);
56
61 WUT_CHECK_SIZE(KillerNotificationPlayedTitleFilter, 0x0C);
62 WUT_CHECK_OFFSET(KillerNotificationPlayedTitleFilter, 0x00, titleId);
63 WUT_CHECK_OFFSET(KillerNotificationPlayedTitleFilter, 0x08, conjunction);
64
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);
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);
155 uint32_t tags;
156 WUT_UNKNOWN_BYTES(256);
157
158 static nn::Result CheckEmptyValue(bool *outRes, const KillerNotification *u2) {
159 return details::__CPR81__CheckEmptyValue__Q3_2nn2sl18KillerNotificationSFPbPCQ3_2nn2slJ26J(outRes, u2);
160 }
161
163 return details::__CPR76__GetEmptyValue__Q3_2nn2sl18KillerNotificationSFPQ3_2nn2slJ24J(u1);
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
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)