Update for latest libnx

This commit is contained in:
plutoo 2018-02-26 02:22:14 +01:00 committed by plutoo
parent f26331a828
commit a9d4fb7830
3 changed files with 43 additions and 28 deletions

View File

@ -36,11 +36,15 @@ typedef union {
#include "text.h"
#include "ui.h"
#include "launch.h"
#include "nro.h"
#include "nanojpeg.h"
#include "math.h"
#include "theme.h"
// when building for pc we need to include nro.h separately
#ifndef SWITCH
#include "nro.h"
#endif
void menuStartup();
void menuLoop();

View File

@ -35,7 +35,7 @@ bool fileExists(const char* path) {
static bool menuEntryLoadEmbeddedIcon(menuEntry_s* me) {
NroHeader header;
AssetHeader asset_header;
NroAssetHeader asset_header;
FILE* f = fopen(me->path, "rb");
if (!f) return false;
@ -50,8 +50,8 @@ static bool menuEntryLoadEmbeddedIcon(menuEntry_s* me) {
fseek(f, header.size, SEEK_SET);
if (fread(&asset_header, sizeof(asset_header), 1, f) != 1
|| asset_header.magic != ASSETHEADER_MAGICNUM
|| asset_header.version > ASSETHEADER_VERSION
|| asset_header.magic != NROASSETHEADER_MAGIC
|| asset_header.version > NROASSETHEADER_VERSION
|| asset_header.icon.offset == 0
|| asset_header.icon.size == 0)
{
@ -75,7 +75,7 @@ static bool menuEntryLoadEmbeddedIcon(menuEntry_s* me) {
static bool menuEntryLoadEmbeddedNacp(menuEntry_s* me) {
NroHeader header;
AssetHeader asset_header;
NroAssetHeader asset_header;
FILE* f = fopen(me->path, "rb");
if (!f) return false;
@ -90,8 +90,8 @@ static bool menuEntryLoadEmbeddedNacp(menuEntry_s* me) {
fseek(f, header.size, SEEK_SET);
if (fread(&asset_header, sizeof(asset_header), 1, f) != 1
|| asset_header.magic != ASSETHEADER_MAGICNUM
|| asset_header.version > ASSETHEADER_VERSION
|| asset_header.magic != NROASSETHEADER_MAGIC
|| asset_header.version > NROASSETHEADER_VERSION
|| asset_header.nacp.offset == 0
|| asset_header.nacp.size == 0)
{

View File

@ -1,43 +1,54 @@
/**
* @file nro.h
* @brief NRO headers.
* @copyright libnx Authors
*/
#pragma once
#define NROHEADER_MAGICNUM 0x304f524e
#define NROHEADER_MAGIC 0x304f524e
#define ASSETHEADER_MAGICNUM 0x54455341
#define ASSETHEADER_VERSION 0
#define NROASSETHEADER_MAGIC 0x54455341
#define NROASSETHEADER_VERSION 0
/// Entry for each segment in the codebin.
typedef struct {
u32 FileOff;
u32 Size;
} NsoSegment;
u32 file_off;
u32 size;
} NroSegment;
/// Offset 0x0 in the NRO.
typedef struct {
u32 unused;
u32 modOffset;
u8 Padding[8];
u32 mod_offset;
u8 padding[8];
} NroStart;
/// This follows NroStart, the actual nro-header.
typedef struct {
u32 Magic;
u32 Unk1;
u32 magic;
u32 unk1;
u32 size;
u32 Unk2;
NsoSegment Segments[3];
u32 bssSize;
u32 Unk3;
u8 BuildId[0x20];
u8 Padding[0x20];
u32 unk2;
NroSegment segments[3];
u32 bss_size;
u32 unk3;
u8 build_id[0x20];
u8 padding[0x20];
} NroHeader;
/// Custom asset section.
typedef struct {
u64 offset;
u64 size;
} AssetSection;
} NroAssetSection;
/// Custom asset header.
typedef struct {
u32 magic;
u32 version;
AssetSection icon;
AssetSection nacp;
AssetSection romfs;
} AssetHeader;
NroAssetSection icon;
NroAssetSection nacp;
NroAssetSection romfs;
} NroAssetHeader;