Some corrections

This commit is contained in:
XorTroll 2020-04-16 18:46:13 +02:00
parent 9e0f259f6c
commit 17d297dcda
5 changed files with 48 additions and 34 deletions

View File

@ -113,7 +113,7 @@ typedef struct {
u8 unk_x57; u8 unk_x57;
} MiiCharInfo; } MiiCharInfo;
/// Initialize mii (mii:e). /// Initialize mii.
Result miiInitialize(MiiServiceType service_type); Result miiInitialize(MiiServiceType service_type);
/// Exit mii. /// Exit mii.
@ -133,25 +133,25 @@ Result miiOpenDatabase(MiiDatabase *out, MiiSpecialKeyCode key_code);
* @brief Returns whether the mii database is updated. * @brief Returns whether the mii database is updated.
* @param[in] db Database. * @param[in] db Database.
* @param[in] flag Source flag. * @param[in] flag Source flag.
* @param[out] out Out boolean. * @param[out] out_updated Whether the mii database is updated.
*/ */
Result miiDatabaseIsUpdated(MiiDatabase *db, u8 *out, MiiSourceFlag flag); Result miiDatabaseIsUpdated(MiiDatabase *db, bool *out_updated, MiiSourceFlag flag);
/** /**
* @brief Returns whether the mii database is full. * @brief Returns whether the mii database is full.
* @param[in] db Database. * @param[in] db Database.
* @param[in] flag Source flag. * @param[in] flag Source flag.
* @param[out] out Out boolean. * @param[out] out_full Whether the mii database is updated.
*/ */
Result miiDatabaseIsFull(MiiDatabase *db, u8 *out); Result miiDatabaseIsFull(MiiDatabase *db, bool *out_full);
/** /**
* @brief Returns number of miis in the database with the specified source flag. * @brief Returns number of miis in the database with the specified source flag.
* @param[in] db Database. * @param[in] db Database.
* @param[in] flag Source flag. * @param[in] flag Source flag.
* @param[out] out Out count. * @param[out] out_count Out mii count.
*/ */
Result miiDatabaseGetCount(MiiDatabase *db, u32 *out, MiiSourceFlag flag); Result miiDatabaseGetCount(MiiDatabase *db, s32 *out_count, MiiSourceFlag flag);
/** /**
* @brief Reads mii charinfo data from the specified source flag. * @brief Reads mii charinfo data from the specified source flag.
@ -161,7 +161,7 @@ Result miiDatabaseGetCount(MiiDatabase *db, u32 *out, MiiSourceFlag flag);
* @param[in] out_infos_count Amount of mii chainfos to read. * @param[in] out_infos_count Amount of mii chainfos to read.
* @param[out] out_count Number of mii charinfos which were read. * @param[out] out_count Number of mii charinfos which were read.
*/ */
Result miiDatabaseGetCharInfo(MiiDatabase *db, MiiSourceFlag flag, MiiCharInfo *out_infos, size_t out_infos_count, u32 *out_count); Result miiDatabaseGet1(MiiDatabase *db, MiiSourceFlag flag, MiiCharInfo *out_infos, s32 count, s32 *total_out);
/** /**
* @brief Generates a random mii charinfo (doesn't register it in the console database). * @brief Generates a random mii charinfo (doesn't register it in the console database).

View File

@ -5,7 +5,7 @@
* @copyright libnx Authors * @copyright libnx Authors
*/ */
#pragma once #pragma once
#include "mii.h" #include "../services/mii.h"
/// Image ID. /// Image ID.
typedef struct { typedef struct {
@ -32,38 +32,38 @@ Service* miiimgGetServiceSession(void);
/** /**
* @brief Reloads the image database. * @brief Reloads the image database.
*/ */
Result miiimgReload(); Result miiimgReload(void);
/** /**
* @brief Gets the number of mii images in the database. * @brief Gets the number of mii images in the database.
* @param[out] out_count Mii image count. * @param[out] out_count Mii image count.
*/ */
Result miiimgGetCount(u32 *out_count); Result miiimgGetCount(s32 *out_count);
/** /**
* @brief Gets whether the image database is empty. * @brief Gets whether the image database is empty.
* @param[out] out_empty Whether the database is empty. * @param[out] out_empty Whether the database is empty.
*/ */
Result miiimgIsEmpty(u8 *out_empty); Result miiimgIsEmpty(bool *out_empty);
/** /**
* @brief Gets whether the image database is full. * @brief Gets whether the image database is full.
* @param[out] out_empty Whether the database is full. * @param[out] out_empty Whether the database is full.
*/ */
Result miiimgIsFull(u8 *out_full); Result miiimgIsFull(bool *out_full);
/** /**
* @brief Gets the image attribute for the specified image index. * @brief Gets the image attribute for the specified image index.
* @param[in] index Image index. * @param[in] index Image index.
* @param[out] out_attr Out image attribute. * @param[out] out_attr Out image attribute.
*/ */
Result miiimgGetAttribute(u32 index, MiiimgImageAttribute *out_attr); Result miiimgGetAttribute(s32 index, MiiimgImageAttribute *out_attr);
/** /**
* @brief Loads the image data (raw RGBA8) for the specified image ID. * @brief Loads the image data (raw RGBA8) for the specified image ID.
* @note Server doesn't seem to check the image buffer size, but 0x40000 is the optimal size.
* @param[in] id Input image ID. * @param[in] id Input image ID.
* @param[out] out_image Out iamge buffer. * @param[out] out_image Out iamge buffer.
* @param[in] out_image_size Out image buffer size. * @param[in] out_image_size Out image buffer size.
* @note Server doesn't seem to check the image buffer size, but 0x40000 is the optimal size.
*/ */
Result miiimgLoadImage(MiiimgImageId id, void *out_image, size_t out_image_size); Result miiimgLoadImage(MiiimgImageId id, void* out_image, size_t out_image_size);

View File

@ -6,7 +6,9 @@
*/ */
#pragma once #pragma once
#include "mii.h" #include "../types.h"
#include "../sf/service.h"
#include "../services/mii.h"
/// NfpServiceType /// NfpServiceType
typedef enum { typedef enum {

View File

@ -39,24 +39,30 @@ Result miiOpenDatabase(MiiDatabase *out, MiiSpecialKeyCode key_code) {
); );
} }
Result miiDatabaseIsUpdated(MiiDatabase *db, u8 *out, MiiSourceFlag flag) { Result miiDatabaseIsUpdated(MiiDatabase *db, bool *out_updated, MiiSourceFlag flag) {
u32 in = (u32)flag; u32 in = (u32)flag;
return serviceDispatchInOut(&db->s, 0, in, *out); u8 tmp = 0;
Result rc = serviceDispatchInOut(&db->s, 0, in, tmp);
if (R_SUCCEEDED(rc) && out_updated) *out_updated = tmp & 1;
return rc;
} }
Result miiDatabaseIsFull(MiiDatabase *db, u8 *out) { Result miiDatabaseIsFull(MiiDatabase *db, bool *out_full) {
return serviceDispatchOut(&db->s, 1, *out); u8 tmp = 0;
Result rc = serviceDispatchOut(&db->s, 1, tmp);
if (R_SUCCEEDED(rc) && out_full) *out_full = tmp & 1;
return rc;
} }
Result miiDatabaseGetCount(MiiDatabase *db, u32 *out, MiiSourceFlag flag) { Result miiDatabaseGetCount(MiiDatabase *db, s32 *out_count, MiiSourceFlag flag) {
u32 in = (u32)flag; u32 in = (u32)flag;
return serviceDispatchInOut(&db->s, 2, in, *out); return serviceDispatchInOut(&db->s, 2, in, *out_count);
} }
Result miiDatabaseGetCharInfo(MiiDatabase *db, MiiSourceFlag flag, MiiCharInfo *out_infos, size_t out_infos_count, u32 *out_count) { Result miiDatabaseGet1(MiiDatabase *db, MiiSourceFlag flag, MiiCharInfo *out_infos, s32 count, s32 *total_out) {
u32 in = (u32)flag; u32 in = (u32)flag;
return serviceDispatchInOut(&db->s, 4, in, *out_count, return serviceDispatchInOut(&db->s, 4, in, *total_out,
.buffer_attrs = { SfBufferAttr_HipcMapAlias | SfBufferAttr_Out }, .buffer_attrs = { SfBufferAttr_HipcMapAlias | SfBufferAttr_Out },
.buffers = { { out_infos, out_infos_count * sizeof(MiiCharInfo) } }, .buffers = { { out_infos, count * sizeof(MiiCharInfo) } },
); );
} }

View File

@ -30,27 +30,33 @@ Service* miiimgGetServiceSession(void) {
return &g_miiimgSrv; return &g_miiimgSrv;
} }
Result miiimgReload() { Result miiimgReload(void) {
return serviceDispatch(&g_miiimgSrv, 10); return serviceDispatch(&g_miiimgSrv, 10);
} }
Result miiimgGetCount(u32 *out_count) { Result miiimgGetCount(s32 *out_count) {
return serviceDispatchOut(&g_miiimgSrv, 11, *out_count); return serviceDispatchOut(&g_miiimgSrv, 11, *out_count);
} }
Result miiimgIsEmpty(u8 *out_empty) { Result miiimgIsEmpty(bool *out_empty) {
return serviceDispatchOut(&g_miiimgSrv, 12, *out_empty); u8 tmp = 0;
Result rc = serviceDispatchOut(&g_miiimgSrv, 12, tmp);
if (R_SUCCEEDED(rc) && out_empty) *out_empty = tmp & 1;
return rc;
} }
Result miiimgIsFull(u8 *out_full) { Result miiimgIsFull(bool *out_full) {
return serviceDispatchOut(&g_miiimgSrv, 13, *out_full); u8 tmp = 0;
Result rc = serviceDispatchOut(&g_miiimgSrv, 13, tmp);
if (R_SUCCEEDED(rc) && out_full) *out_full = tmp & 1;
return rc;
} }
Result miiimgGetAttribute(u32 index, MiiimgImageAttribute *out_attr) { Result miiimgGetAttribute(s32 index, MiiimgImageAttribute *out_attr) {
return serviceDispatchInOut(&g_miiimgSrv, 14, index, *out_attr); return serviceDispatchInOut(&g_miiimgSrv, 14, index, *out_attr);
} }
Result miiimgLoadImage(MiiimgImageId id, void *out_image, size_t out_image_size) { Result miiimgLoadImage(MiiimgImageId id, void* out_image, size_t out_image_size) {
return serviceDispatchIn(&g_miiimgSrv, 15, id, return serviceDispatchIn(&g_miiimgSrv, 15, id,
.buffer_attrs = { SfBufferAttr_HipcMapAlias | SfBufferAttr_Out }, .buffer_attrs = { SfBufferAttr_HipcMapAlias | SfBufferAttr_Out },
.buffers = { { out_image, out_image_size } }, .buffers = { { out_image, out_image_size } },