Line 10: |
Line 10: |
| |- | | |- |
| | 0x000100C8 | | | 0x000100C8 |
− | | | + | | [[NEWSU:AddNotification|AddNotification]] |
| |} | | |} |
| | | |
Line 23: |
Line 23: |
| | 0x000100C6 | | | 0x000100C6 |
| | [[NEWSS:AddNotification|AddNotification]] | | | [[NEWSS:AddNotification|AddNotification]] |
| + | |- |
| + | | 0x0002.... |
| + | | Stubbed, only returns 0. |
| + | |- |
| + | | 0x0003.... |
| + | | Stubbed, only returns 0. |
| + | |- |
| + | | 0x00040000 |
| + | | ? |
| |- | | |- |
| | 0x00050000 | | | 0x00050000 |
| | [[NEWSS:GetTotalNotifications|GetTotalNotifications]] | | | [[NEWSS:GetTotalNotifications|GetTotalNotifications]] |
| + | |- |
| + | | 0x00060042 |
| + | | [[NEWSS:SetNewsDBHeader|SetNewsDBHeader]] |
| |- | | |- |
| | 0x00070082 | | | 0x00070082 |
| | [[NEWSS:SetNotificationHeader|SetNotificationHeader]] | | | [[NEWSS:SetNotificationHeader|SetNotificationHeader]] |
| + | |- |
| + | | 0x00080082 |
| + | | [[NEWSS:SetNotificationMessage|SetNotificationMessage]] |
| + | |- |
| + | | 0x00090082 |
| + | | [[NEWSS:SetNotificationImage|SetNotificationImage]] |
| + | |- |
| + | | 0x000A0042 |
| + | | [[NEWSS:GetNewsDBHeader|GetNewsDBHeader]] |
| |- | | |- |
| | 0x000B0082 | | | 0x000B0082 |
Line 38: |
Line 59: |
| | 0x000D0082 | | | 0x000D0082 |
| | [[NEWSS:GetNotificationImage|GetNotificationImage]] | | | [[NEWSS:GetNotificationImage|GetNotificationImage]] |
| + | |- |
| + | | 0x000E0040 |
| + | | [[NEWSS:SetInfoLEDPattern|SetInfoLEDPattern]] |
| + | |- |
| + | | 0x000F0000 |
| + | | SpotPass notifications related? |
| + | |- |
| + | | 0x00100040 |
| + | | (u8 flag) ? |
| + | |- |
| + | | 0x00110000 |
| + | | This writes the input u8 to a state field. |
| + | |- |
| + | | 0x00120082 |
| + | | [[NEWSS:GetNotificationHeaderOther|GetNotificationHeaderOther]] |
| + | |- |
| + | | 0x00130000 |
| + | | [[NEWSS:WriteNewsDBSavedata|WriteNewsDBSavedata]] |
| + | |- |
| + | | 0x00140000 |
| + | | This writes an unknown u32 value to cmdreply[2]. |
| |} | | |} |
| | | |
− | =News module savedata= | + | =News module NAND [[System_SaveData|savedata]]= |
| * "news.db": This is the main save-file, the filesize is fixed to 0x2BD0-bytes. | | * "news.db": This is the main save-file, the filesize is fixed to 0x2BD0-bytes. |
− | * "newsXXX.txt" This is the [[NEWSS:AddNotification|message]] data for this notification, where XXX is the decimal notification-index in the below headers-array. | + | * "newsXXX.txt" This is the [[NEWSS:AddNotification|message]] data for this notification, where XXX is the decimal notification-index in the below headers-array. The filesize should be <= <size listed [[NEWSS:GetNotificationMessage|here]]>, since that's the max size read by the notifications applet. |
− | * "newsXXX.mpo" This is the [[NEWSS:AddNotification|MPO]] data for this notification if any, where XXX is the decimal notification-index in the below headers-array. | + | * "newsXXX.mpo" This is the [[NEWSS:AddNotification|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 [[NEWSS:GetNotificationImage|here]]>, since that's the max size read by the notifications applet. |
| | | |
| ==news.db== | | ==news.db== |
Line 54: |
Line 96: |
| | 0x0 | | | 0x0 |
| | 0x10 | | | 0x10 |
− | | Header, normally first byte is value 0x1 and the rest all-zero. | + | | Header, see below. |
| |- | | |- |
| | 0x10 | | | 0x10 |
Line 60: |
Line 102: |
| | Array of [[NEWSS:AddNotification|headers]] for each notification. | | | Array of [[NEWSS:AddNotification|headers]] for each notification. |
| |} | | |} |
| + | |
| + | ===Header=== |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x1 |
| + | | Must be 0x1. |
| + | |- |
| + | | 0x1 |
| + | | 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". |
| + | |- |
| + | | 0x2 |
| + | | 0xE |
| + | | Normally zero? |
| + | |} |
| + | |
| + | =News module startup= |
| + | The actual main function called by main() does the following: |
| + | * srv_init() |
| + | * Registers services <nowiki>"news:u" and "news:s"</nowiki>. |
| + | * 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. |
| | | |
| =Errors= | | =Errors= |
Line 68: |
Line 141: |
| |- | | |- |
| | 0xC8A12805 | | | 0xC8A12805 |
− | | The notification header data for the specified notificationID is not set. | + | | The notification header data for the specified notificationID is not set(the specified notification doesn't exist). |
| + | |} |
| + | |
| + | =Title Versions= |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Title version |
| + | ! System version |
| + | ! Changes |
| + | |- |
| + | | v7168 |
| + | | [[9.7.0-25|9.7.0-X]] |
| + | | All of the changes are the following: |
| + | * See [[9.7.0-25|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. |
| |} | | |} |