News Services: Difference between revisions

Sorunome (talk | contribs)
m Add missing category
 
(17 intermediate revisions by 2 users not shown)
Line 10: Line 10:
|-
|-
| 0x000100C8
| 0x000100C8
|  
| [[NEWSU:AddNotification|AddNotification]]
|}
|}


Line 25: Line 25:
|-
|-
| 0x0002....
| 0x0002....
| ?
| Stubbed, only returns 0.
|-
|-
| 0x0003....
| 0x0003....
| ?
| Stubbed, only returns 0.
|-
|-
| 0x0004....
| 0x00040000
| ?
| [[NEWSS:ResetNotifications|ResetNotifications]]
|-
|-
| 0x00050000
| 0x00050000
| [[NEWSS:GetTotalNotifications|GetTotalNotifications]]
| [[NEWSS:GetTotalNotifications|GetTotalNotifications]]
|-
|-
| 0x0006....
| 0x00060042
| ?
| [[NEWSS:SetNewsDBHeader|SetNewsDBHeader]]
|-
|-
| 0x00070082
| 0x00070082
| [[NEWSS:SetNotificationHeader|SetNotificationHeader]]
| [[NEWSS:SetNotificationHeader|SetNotificationHeader]]
|-
|-
| 0x0008....
| 0x00080082
| ?
| [[NEWSS:SetNotificationMessage|SetNotificationMessage]]
|-
|-
| 0x0009....
| 0x00090082
| ?
| [[NEWSS:SetNotificationImage|SetNotificationImage]]
|-
|-
| 0x000A0082
| 0x000A0042
| [[NEWSS:GetNewsDBHeader|GetNewsDBHeader]]
| [[NEWSS:GetNewsDBHeader|GetNewsDBHeader]]
|-
|-
Line 60: Line 60:
| [[NEWSS:GetNotificationImage|GetNotificationImage]]
| [[NEWSS:GetNotificationImage|GetNotificationImage]]
|-
|-
| 0x000E....
| 0x000E0040
| ?
| [[NEWSS:SetInfoLEDPattern|SetInfoLEDPattern]]
|-
|-
| 0x000F....
| 0x000F0000
| ?
| [[NEWSS:SyncArrivedNotifications|SyncArrivedNotifications]]
|-
|-
| 0x0010....
| 0x00100040
| ?
| [[NEWSS:SyncOneArrivedNotification|SyncOneArrivedNotification]]
|-
|-
| 0x0011....
| 0x00110040
| ?
| [[NEWSS:SetAutomaticSyncFlag|SetAutomaticSyncFlag]]
|-
|-
| 0x0012....
| 0x00120082
| ?
| [[NEWSS:SetNotificationHeaderOther|SetNotificationHeaderOther]]
|-
|-
| 0x0013....
| 0x00130000
| ?
| [[NEWSS:WriteNewsDBSavedata|WriteNewsDBSavedata]]
|-
|-
| 0x0014....
| 0x00140000
| ?
| [[NEWSS:GetTotalArrivedNotifications|GetTotalArrivedNotifications]]
|}
|}


=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 96: Line 96:
| 0x0
| 0x0
| 0x10
| 0x10
| Header, normally first byte is value 0x1 and the rest all-zero.
| Header, see below.
|-
|-
| 0x10
| 0x10
Line 102: 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 "is valid".
|-
| 0x1
| 0x1
| Flags
|-
| 0x2
| 0xE
| Normally zero?
|}
===Flags===
{| class="wikitable" border="1"
|-
!  Bit
!  Description
|-
| 0
| Set by news module when handling BOSS notifications and the AddNotification commands. This indicates that there's "unread" notifications, the notifications applet clears this once all notifications have been "read".
|-
| 1
| Set by news module when handling CECD notifications.
|}
=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 110: Line 155:
|-
|-
| 0xC8A12805
| 0xC8A12805
| The notification header data for the specified notificationID is not set.
| The news.db or 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.
|}
|}
[[Category:Services]]