Skip to content

Commit

Permalink
Update for latest libnx
Browse files Browse the repository at this point in the history
  • Loading branch information
plutoo authored and plutooo committed Feb 26, 2018
1 parent f26331a commit a9d4fb7
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 28 deletions.
6 changes: 5 additions & 1 deletion common/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -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();

Expand Down
12 changes: 6 additions & 6 deletions common/menu-entry.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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)
{
Expand All @@ -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;
Expand All @@ -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)
{
Expand Down
53 changes: 32 additions & 21 deletions common/nro.h
Original file line number Diff line number Diff line change
@@ -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;

0 comments on commit a9d4fb7

Please sign in to comment.