33f8284bc0
* hos/gui: Add a check of NCA program index in titleid This add a check to `ApplicationLoader` for the last 2 digits of the game TitleId who seems to be the NCA program index. We currently return the last index, instead of the lower one. Same check is added to ApplicationLibrary in the UI. I've cleaned up both file too. * hle: implement partial relaunch logic TODO: make the emulator auto relauch. * Handle auto relaunch * hle: Unify update usage system * hle: Implement support of multi programs in update system * Add some documentation * Address rip's comment Co-authored-by: Ac_K <Acoustik666@gmail.com>
56 lines
1.5 KiB
C#
56 lines
1.5 KiB
C#
using Ryujinx.HLE.HOS.Services.Am.AppletOE.ApplicationProxyService.ApplicationProxy.Types;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Ryujinx.HLE.HOS
|
|
{
|
|
public class UserChannelPersistence
|
|
{
|
|
private Stack<byte[]> _userChannelStorages;
|
|
public int PreviousIndex { get; private set; }
|
|
public int Index { get; private set; }
|
|
public ProgramSpecifyKind Kind { get; private set; }
|
|
|
|
public UserChannelPersistence()
|
|
{
|
|
_userChannelStorages = new Stack<byte[]>();
|
|
Kind = ProgramSpecifyKind.ExecuteProgram;
|
|
PreviousIndex = -1;
|
|
Index = 0;
|
|
}
|
|
|
|
public void Clear()
|
|
{
|
|
_userChannelStorages.Clear();
|
|
}
|
|
|
|
public void Push(byte[] data)
|
|
{
|
|
_userChannelStorages.Push(data);
|
|
}
|
|
|
|
public byte[] Pop()
|
|
{
|
|
return _userChannelStorages.Pop();
|
|
}
|
|
|
|
public bool IsEmpty => _userChannelStorages.Count == 0;
|
|
|
|
public void ExecuteProgram(ProgramSpecifyKind kind, ulong value)
|
|
{
|
|
Kind = kind;
|
|
PreviousIndex = Index;
|
|
|
|
switch (kind)
|
|
{
|
|
case ProgramSpecifyKind.ExecuteProgram:
|
|
Index = (int)value;
|
|
break;
|
|
case ProgramSpecifyKind.RestartProgram:
|
|
break;
|
|
default:
|
|
throw new NotImplementedException($"{kind} not implemented");
|
|
}
|
|
}
|
|
}
|
|
}
|