Skip to content

Commit

Permalink
Split up final parts
Browse files Browse the repository at this point in the history
  • Loading branch information
ev1l0rd committed Apr 12, 2018
1 parent 17b0843 commit 69ca51c
Show file tree
Hide file tree
Showing 6 changed files with 61 additions and 65 deletions.
46 changes: 0 additions & 46 deletions source/editprofile.c

This file was deleted.

10 changes: 0 additions & 10 deletions source/editprofile.h

This file was deleted.

15 changes: 11 additions & 4 deletions source/main.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#include <stdio.h>
#include <3ds.h>
#include "editprofile.h"
#include "title.h"
#include "const.h"
#include "struct.h"
Expand Down Expand Up @@ -213,14 +212,22 @@ int main()

case THE_WIZARD_IS_BUSY: // Here the editing happens
not_busy = false;
Result res = edit_profile(profile_num, fusion_mode, lowid, install_type);
Result res = unlock_amiibo_content(&file_handle, fusion_mode);
if(R_FAILED(res))
{
fail_print(&res);
}
}
else
{
printf("Amiibo's have been unlocked for the selected save file. Press START to exit.");
res = save_and_close(&file_handle, &save_archive, lowid, install_type);
if(R_FAILED(res))
{
fail_print(&res);
}
else
{
printf("Amiibo's have been unlocked for the selected save file. Press START to exit.");
}
}
not_busy = true;
state = SUCCESS;
Expand Down
1 change: 0 additions & 1 deletion source/main.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#include <stdio.h>
#include <3ds.h>
#include "editprofile.h"
#include "title.h"
#include "const.h"
#include "struct.h"
Expand Down
49 changes: 46 additions & 3 deletions source/save.c
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ Result read_save(int profile_num, SaveStatus* sstate, Handle* file_handle)
get_filesize(file_handle, &file_size);
char* buffer = NULL;
buffer = malloc(file_size);
buffer_save(buffer, file_handle, file_size);
buffer_store(buffer, file_handle, file_size);

// Difficulty
switch(buffer[0x28])
Expand Down Expand Up @@ -169,7 +169,7 @@ Result read_save(int profile_num, SaveStatus* sstate, Handle* file_handle)
}

// NOTE: THIS FUNCTION DOES _NOT_ FREE UP (UNLESS IT FAILS) OR ALLOCATE A BUFFER. DO THAT YOURSELF.
Result buffer_save(char* buffer, Handle* file_handle, u64 file_size)
Result buffer_store(char* buffer, Handle* file_handle, u64 file_size)
{
Result res;
u32 bytes;
Expand All @@ -194,6 +194,18 @@ Result get_filesize(Handle* file_handle, u64* file_size)
return 0;
}

// Buffer is NOT freed here!
Result write_buffer(Handle* file_handle, char* buffer, u64 file_size)
{
u32 bytes;
Result res;
res = FSFILE_Write(*file_handle, &bytes, 0x0, buffer, file_size, FS_WRITE_FLUSH | FS_WRITE_UPDATE_TIME);
if(R_FAILED(res))
{
return res;
}
}

Result save_and_close(Handle* file_handle, FS_Archive* save_archive, u32 lowid, InstallType install_type)
{
Result res;
Expand All @@ -216,8 +228,39 @@ Result save_and_close(Handle* file_handle, FS_Archive* save_archive, u32 lowid,
FSUSER_CloseArchive(*save_archive);
return res;
}
}
}

// Close archive
FSUSER_CloseArchive(*save_archive);
}

Result unlock_amiibo_content(Handle* file_handle, bool fusion_mode)
{
u64 filesize;
get_filesize(file_handle, &filesize);
char* buffer = NULL;
buffer = malloc(filesize);
buffer_store(buffer, file_handle, filesize);
if (fusion_mode)
// Fusion mode unlock
buffer[0x28] = 0x02;

// Bonus energy tank unlock
buffer[0x31] = 0x01;
buffer[0x37] = 0x01;

// Bonus aeion tank unlock
buffer[0x3D] = 0x01;
buffer[0x43] = 0x01;

// Bonus missile tank unlock
buffer[0x49] = 0x01;
buffer[0x4F] = 0x01;

// Amiibo scanning in-game unlock
buffer[0x55] = 0x01;

write_buffer(file_handle, buffer, filesize);
free(buffer);
return 0;
}
5 changes: 4 additions & 1 deletion source/save.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,10 @@ Result open_archive(u32 lowid, InstallType install_type, FS_Archive* save_archiv
SavesList save_check(FS_Archive* save_archive, int* profile_num);
Result open_file(int profile_num, FS_Archive* save_archive, Handle* file_handle);
Result read_save(int profile_num, SaveStatus* sstate, Handle* file_handle);
Result buffer_save(char* buffer, Handle* file_handle, u64 file_size);
Result buffer_store(char* buffer, Handle* file_handle, u64 file_size);
Result get_filesize(Handle* file_handle, u64* file_size);
Result save_and_close(Handle* file_handle, FS_Archive* save_archive, u32 lowid, InstallType install_type);
Result unlock_amiibo_content(Handle* file_handle, bool fusion_mode);
Result write_buffer(Handle* file_handle, char* buffer, u64 file_size);

#endif

0 comments on commit 69ca51c

Please sign in to comment.