This system module handles the system notifications.
The maximum number of notifications that can be stored/handled is 100, hence the intended range for notificationIDs is 0-99.
News service "news:u"
This service only has one command.
News service "news:s"
- "news.db": This is the main save-file, the filesize is fixed to 0x2BD0-bytes.
- "newsXXX.txt" This is the message data for this notification, where XXX is the decimal notification-index in the below headers-array. The filesize should be <= <size listed here>, since that's the max size read by the notifications applet.
- "newsXXX.mpo" This is the MPO data for this notification if any, where XXX is the decimal notification-index in the below headers-array. The filesize should be <= <size listed here>, since that's the max size read by the notifications applet.
||Header, see below.
||0x2BC0 (100 * 0x70)
||Array of headers for each notification.
||Must be 0x1.
||Flags: bit0 is set by news-module when handling the AddNotification commands. This indicates that there's "unread" notifications, the notifications applet clears this once all notifications have been "read".
News module startup
The actual main function called by main() does the following:
- Registers services "news:u" and "news:s".
- Initializes the service session handle for "ptm:sysm".
- Loads 4 handles from somewhere, which gets used with svcReplyAndReceive later.
- Does notificationID state init, uses SRV:GetNotificationSemaphore, then subscribes to srv notifications 0x104 and 0x106.
- <Some func calls>
- Here PTMSYSM:SetInfoLEDPattern is used.
- Some state init is done, then the usual svcReplyAndReceive loop begins.
||The notification header data for the specified notificationID is not set(the specified notification doesn't exist).
||All of the changes are the following:
- See here regarding the updated CTRSDK function code.
- This function is eventually called by newss_cmdf, newss_cmd10, and <certain function>. When calling a certain function fails in here, this code now calls <another certain function> before returning.
- Mutex enter/leave function calls were added to a certain function.
- More state init was added to the start of an initialization function called during news module startup(crt0?).
- 0x14 new bytes were added to .rodata.