Line 15: |
Line 15: |
| |- | | |- |
| | 3 || [5.0.0+] [[#OpenOffscreenRecorder]] | | | 3 || [5.0.0+] [[#OpenOffscreenRecorder]] |
| + | |- |
| + | | 10 || [18.0.0+] |
| |- | | |- |
| | 101 || [5.0.0+] [[#CreateMovieMaker]] | | | 101 || [5.0.0+] [[#CreateMovieMaker]] |
| + | |- |
| + | | 110 || [19.0.0+] |
| |- | | |- |
| | 9903 || [5.0.0+] [[#SetOffscreenRecordingMarker]] | | | 9903 || [5.0.0+] [[#SetOffscreenRecordingMarker]] |
Line 22: |
Line 26: |
| | | |
| == OpenContinuousRecorder == | | == OpenContinuousRecorder == |
− | Takes a total of 0x28-bytes of input and a handle, returns an [[#IContinuousRecorder]]. | + | Takes a total of 0x28-bytes of input and a TransferMemory handle, returns an [[#IContinuousRecorder]]. |
| | | |
| [5.0.0+] Now takes an additional 0x20-bytes of input. | | [5.0.0+] Now takes an additional 0x20-bytes of input. |
| + | |
| + | [15.0.0+] Now only takes 0x20-bytes of input. |
| + | |
| + | [18.0.0+] Now takes a total of 0x28 bytes of input. |
| | | |
| == OpenGameMovieTrimmer == | | == OpenGameMovieTrimmer == |
− | Takes an input u64 and a handle, returns an [[#IGameMovieTrimmer]]. | + | Takes an input u64 and a TransferMemory handle, returns an [[#IGameMovieTrimmer]]. |
| | | |
| == OpenOffscreenRecorder == | | == OpenOffscreenRecorder == |
− | Takes a total of 0x8-bytes of input and a handle, returns an [[#IOffscreenRecorder]]. | + | Takes a total of 0x8-bytes of input and a TransferMemory handle, returns an [[#IOffscreenRecorder]]. |
| | | |
| == CreateMovieMaker == | | == CreateMovieMaker == |
| Takes a total of 0x10-bytes of input, returns an [[#IMovieMaker]]. | | Takes a total of 0x10-bytes of input, returns an [[#IMovieMaker]]. |
| + | |
| + | == Cmd110 == |
| + | Takes a total of 0x20-bytes of input and a handle. Returns an [[#IMovieWriter]]. |
| + | |
| + | This is stubbed on NX: this just closes the input handle if needed, then returns Result 0xFFED4. |
| | | |
| == SetOffscreenRecordingMarker == | | == SetOffscreenRecordingMarker == |
− | Takes 8-bytes of input, no output. | + | Takes an u64 '''marker''' (value from 0 to 14), no output. |
| | | |
| Affects the behavior of [[#CompleteOffscreenRecordingFinish]], [[#CompleteOffscreenRecordingFinishEx0]] and [[#CompleteOffscreenRecordingFinishEx1]], forcing them to stop at different stages. | | Affects the behavior of [[#CompleteOffscreenRecordingFinish]], [[#CompleteOffscreenRecordingFinishEx0]] and [[#CompleteOffscreenRecordingFinishEx1]], forcing them to stop at different stages. |
Line 47: |
Line 60: |
| ! Cmd || Name | | ! Cmd || Name |
| |- | | |- |
− | | 1 || | + | | 1 || StartRecording |
| + | |- |
| + | | 2 || StopRecording |
| |- | | |- |
− | | 2 || | + | | 4 || [17.0.0+] UpdateRecordingStartTick |
| |- | | |- |
− | | 10 || | + | | 10 || GetNotFlushingEvent |
| |- | | |- |
− | | 11 || | + | | 11 || StartFlush |
| |- | | |- |
− | | 12 || | + | | 12 || CancelFlush |
| |- | | |- |
− | | 13 || | + | | 13 || ResetFlushTime |
| |- | | |- |
− | | 14 || [5.0.0+] | + | | 14 || [5.0.0+] StartFlushWithEvent |
| |} | | |} |
| | | |
− | [5.0.0+] Cmd11 now takes a total of 0x40-bytes of input. | + | [5.0.0+] StartFlush now takes in a ContinuousRecordingFlushParameter (0x40 bytes). |
| | | |
− | [8.0.0+] Cmd11/cmd14 no longer take any rawdata input, these now take a type-0x15 input buffer. | + | [8.0.0+] ContinuousRecordingFlushParameter is now an sf::LargeData type, so StartFlush/StartFlushWithEvent now take in parameter via type-0x15 input buffer. |
| | | |
| == IGameMovieTrimmer == | | == IGameMovieTrimmer == |
Line 80: |
Line 95: |
| |- | | |- |
| | 20 || [[#SetThumbnailRgba]] | | | 20 || [[#SetThumbnailRgba]] |
| + | |- |
| + | | 21 || [19.0.0+] |
| |} | | |} |
| | | |
Line 101: |
Line 118: |
| | | |
| '''width''' must be 1280, '''height''' must be 720, and the buffer size must be at least 0x384000. After this validation, this just copies the input buffer to state with size 0x384000 and returns 0. | | '''width''' must be 1280, '''height''' must be 720, and the buffer size must be at least 0x384000. After this validation, this just copies the input buffer to state with size 0x384000 and returns 0. |
| + | |
| + | === Cmd21 === |
| + | Takes a total of 8-bytes of input and a type-0x45 input buffer. No output. |
| + | |
| + | On NX this just Aborts with Result 0xFFED4. |
| | | |
| = grc:d = | | = grc:d = |
Line 116: |
Line 138: |
| |- | | |- |
| | 2 || [[#Transfer]] | | | 2 || [[#Transfer]] |
| + | |- |
| + | | 3 || [14.0.0+] |
| |} | | |} |
| | | |
Line 137: |
Line 161: |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
− | ! Cmd || Name || Notes | + | ! Cmd || Name |
| |- | | |- |
− | | 201 || || Takes a total of 0x8-bytes of input, returns a total of 0x8-bytes of output. | + | | 201 || [[#CreateOffscreenLayer]] |
| |- | | |- |
− | | 202 || || Takes a total of 0x8-bytes of input, no output. | + | | 202 || [[#DestroyOffscreenLayer]] |
| |} | | |} |
| + | |
| + | == CreateOffscreenLayer == |
| + | Takes an aruid, returns an 8-byte handle to the layer. |
| + | |
| + | == DestroyOffscreenLayer == |
| + | Takes in an 8-byte layer handle previously returned by CreateOffscreenLayer. |
| | | |
| = IMovieMaker = | | = IMovieMaker = |
Line 254: |
Line 284: |
| == GetOffscreenLayerAudioEncodeReadyEvent == | | == GetOffscreenLayerAudioEncodeReadyEvent == |
| Takes an input u64 '''LayerHandle''', returns an output event handle with autoclear disabled. | | Takes an input u64 '''LayerHandle''', returns an output event handle with autoclear disabled. |
| + | |
| + | = IMovieWriter = |
| + | This is "nn::grcsrv::IMovieWriter". |
| + | |
| + | This was added with [19.0.0+]. |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Cmd || Name |
| + | |- |
| + | | 0 || |
| + | |- |
| + | | 10 || |
| + | |- |
| + | | 20 || |
| + | |- |
| + | | 100 || |
| + | |- |
| + | | 110 || |
| + | |- |
| + | | 120 || |
| + | |- |
| + | | 130 || |
| + | |} |
| | | |
| = OffscreenRecordingParameter = | | = OffscreenRecordingParameter = |