mirror of
				https://github.com/citra-emu/citra-nightly.git
				synced 2025-11-04 14:25:14 +00:00 
			
		
		
		
	Layout Mii parameters input/output, and return success as result of applet work
This commit is contained in:
		
							parent
							
								
									f5e839066a
								
							
						
					
					
						commit
						e311398a22
					
				| 
						 | 
				
			
			@ -55,6 +55,11 @@ ResultCode MiiSelector::StartImpl(const Service::APT::AppletStartupParameter& pa
 | 
			
		|||
    // TODO(Subv): Set the expected fields in the response buffer before resending it to the application.
 | 
			
		||||
    // TODO(Subv): Reverse the parameter format for the Mii Selector
 | 
			
		||||
 | 
			
		||||
    if(parameter.buffer_size >= sizeof(u32)) {
 | 
			
		||||
        // TODO: defaults return no error, but garbage in other unknown fields
 | 
			
		||||
        memset(parameter.data, 0, sizeof(u32));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Let the application know that we're closing
 | 
			
		||||
    Service::APT::MessageParameter message;
 | 
			
		||||
    message.buffer_size = parameter.buffer_size;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,6 +16,50 @@
 | 
			
		|||
namespace HLE {
 | 
			
		||||
namespace Applets {
 | 
			
		||||
 | 
			
		||||
struct MiiConfig {
 | 
			
		||||
    u8  unk_000;
 | 
			
		||||
    u8  unk_001;
 | 
			
		||||
    u8  unk_002;
 | 
			
		||||
    u8  unk_003;
 | 
			
		||||
    u8  unk_004;
 | 
			
		||||
    INSERT_PADDING_BYTES(3);
 | 
			
		||||
    u16 unk_008;
 | 
			
		||||
    INSERT_PADDING_BYTES(0x8C - 0xA);
 | 
			
		||||
    u8  unk_08C;
 | 
			
		||||
    INSERT_PADDING_BYTES(3);
 | 
			
		||||
    u16 unk_090;
 | 
			
		||||
    INSERT_PADDING_BYTES(2);
 | 
			
		||||
    u32 unk_094;
 | 
			
		||||
    u16 unk_098;
 | 
			
		||||
    u8  unk_09A[0x64];
 | 
			
		||||
    u8  unk_0FE;
 | 
			
		||||
    u8  unk_0FF;
 | 
			
		||||
    u32 unk_100;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static_assert(sizeof(MiiConfig) == 0x104, "MiiConfig structure has incorrect size");
 | 
			
		||||
#define ASSERT_REG_POSITION(field_name, position) static_assert(offsetof(MiiConfig, field_name) == position, "Field "#field_name" has invalid position")
 | 
			
		||||
ASSERT_REG_POSITION(unk_008, 0x08);
 | 
			
		||||
ASSERT_REG_POSITION(unk_08C, 0x8C);
 | 
			
		||||
ASSERT_REG_POSITION(unk_090, 0x90);
 | 
			
		||||
ASSERT_REG_POSITION(unk_094, 0x94);
 | 
			
		||||
ASSERT_REG_POSITION(unk_0FE, 0xFE);
 | 
			
		||||
#undef ASSERT_REG_POSITION
 | 
			
		||||
 | 
			
		||||
struct MiiResult {
 | 
			
		||||
    u32 result_code;
 | 
			
		||||
    u8 unk_04;
 | 
			
		||||
    INSERT_PADDING_BYTES(7);
 | 
			
		||||
    u8 unk_0C[0x60];
 | 
			
		||||
    u8 unk_6C[0x16];
 | 
			
		||||
    INSERT_PADDING_BYTES(2);
 | 
			
		||||
};
 | 
			
		||||
static_assert(sizeof(MiiResult) == 0x84, "MiiResult structure has incorrect size");
 | 
			
		||||
#define ASSERT_REG_POSITION(field_name, position) static_assert(offsetof(MiiResult, field_name) == position, "Field "#field_name" has invalid position")
 | 
			
		||||
ASSERT_REG_POSITION(unk_0C, 0x0C);
 | 
			
		||||
ASSERT_REG_POSITION(unk_6C, 0x6C);
 | 
			
		||||
#undef ASSERT_REG_POSITION
 | 
			
		||||
 | 
			
		||||
class MiiSelector final : public Applet {
 | 
			
		||||
public:
 | 
			
		||||
    MiiSelector(Service::APT::AppletId id);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue