Hacking Hack SXOS

Imancol

Otak Productions
Member
Joined
Jun 29, 2017
Messages
1,376
Trophies
0
XP
2,774
Country
Colombia
LAST EDIT!
Fix the problem by resetting the console without clearing the save data, from the ADVANCED MENU.

i5C5Fw3.jpg


Don't ask me why it was solved, I don't know exactly. Ah to be trash files or that generated conflict internally in the console.

Games that already work in .xci:
Go vacation
Star War Republic Commando

The Witcher 3 continues to bother, I will try without the Update, or installing the Update having only the Base as .xci

UPDATE: I found out the possible issue of The Witcher 3: DEfinitive Edition not being able to load in XCI with SXOS. Apparently the version of Definitive Edition contains an Update that would be 3.2, and when containing it with the most recent Update (3.7) a "virtual" cartridge error bounces when trying to mount it. You would have to install Update 3.7 on the console or extract or replace 3.2 with 3.7 contained in the Base game.
 
Last edited by Imancol,

Reacher17

Well-Known Member
OP
Member
Joined
Sep 18, 2019
Messages
128
Trophies
0
XP
755
Country
France
9yap.bmp
j3dk.bmp
bu5q.bmp
uz06.bmp
b93s.bmp
lohz.bmp
1tau.bmp
uz74.bmp
r4og.bmp
9e5d.bmp
wxmj.bmp


Code:
#include <string.h>
#include <stdlib.h>
#include <stdio.h>


const char gfxin[11][20] = {{"menu_bg.bmp"},
							{"bootcfw.bmp"},
							{"bootofw.bmp"},
							{"options.bmp"},
							{"core.bmp"},
							{"autorcm.bmp"},
							{"nand.bmp"},
							{"emunand.bmp"},
							{"repair.bmp"},
							{"launch.bmp"},
							{"poweroff.bmp"}};
						
const char gfxout[11][20] =    {{"menu_bg_out.bin"},
								{"bootcfw_out.bin"},
								{"bootofw_out.bin"},
								{"options_out.bin"},
								{"core_out.bin"},
								{"autorcm_out.bin"},
								{"nand_out.bin"},
								{"emunand_out.bin"},
								{"repair_out.bin"},
								{"launch_out.bin"},
								{"poweroff_out.bin"}};
	
const char gfxout2[11][20] =   {{"menu_bg_out.bmp"},
								{"bootcfw_out.bmp"},
								{"bootofw_out.bmp"},
								{"options_out.bmp"},
								{"core_out.bmp"},
								{"autorcm_out.bmp"},
								{"nand_out.bmp"},
								{"emunand_out.bmp"},
								{"repair_out.bmp"},
								{"launch_out.bmp"},
								{"poweroff_out.bmp"}};
int size_gfx[11] = {0x3c008a,0x4008a,0x4008a,0x4008a,0x408a,0x408a,0x408a,0x408a,0x408a,0x408a,0x408a};
int size_gfx_reso[11] = {0xC00,0x400,0x400,0x400,0x100,0x100,0x100,0x100,0x100,0x100,0x100};
int size_gfx_reso_bg = 0x1400;


int main()
{

	int count;
	
	for(count=0; count<11; count++)
	{
		int i;
		int j;
		int x;
		int y;
		int z;
		
		char *tmp_in;
		char *tmp_out;
		
		FILE * file_in;
		FILE * file_out;
		
		file_in = fopen(gfxin[count],"rb");
		file_out = fopen(gfxout[count],"wb");
		
		tmp_in = (char*)malloc(size_gfx[count] * sizeof(char));
		tmp_out = (char*)malloc(size_gfx[count] * sizeof(char));
		
		fread(tmp_in, size_gfx[count], 1, file_in);
		
		
		for(j = 0; j < 0x8A; j++)tmp_out[j] = tmp_in[j];
		y = 0x8a;
		
		if(count == 0)z = size_gfx_reso_bg;
		else z = size_gfx_reso[count];
		for(i = size_gfx[count]; i > 0x8A; i-=z)
		{
			for(x=0; x<z; x+=0x4){
				tmp_out[((i-z)+x)+0] = tmp_in[(y+x)+2];
				tmp_out[((i-z)+x)+1] = tmp_in[(y+x)+1];
				tmp_out[((i-z)+x)+2] = tmp_in[(y+x)+0];
				tmp_out[((i-z)+x)+3] = tmp_in[(y+x)+3];
			}
			y+=z;
		}
		
		fwrite(tmp_out, size_gfx[count], 1, file_out);
		
		
		
		fclose(file_out);
		fclose(file_in);
		free(tmp_in);
		free(tmp_out);
		rename(gfxout[count],gfxout2[count]);
	}
	printf("success !!!\n");
	system("pause");
}
 
Last edited by Reacher17,

Joe88

[λ]
Global Moderator
Joined
Jan 6, 2008
Messages
12,736
Trophies
2
Age
36
XP
7,440
Country
United States
UPDATE: I found out the possible issue of The Witcher 3: DEfinitive Edition not being able to load in XCI with SXOS. Apparently the version of Definitive Edition contains an Update that would be 3.2, and when containing it with the most recent Update (3.7) a "virtual" cartridge error bounces when trying to mount it. You would have to install Update 3.7 on the console or extract or replace 3.2 with 3.7 contained in the Base game.
The super xci is working fine with sxos (v3.7 definitive edition + all dlc)
 
  • Like
Reactions: Kioku
Joined
Sep 9, 2019
Messages
904
Trophies
1
Location
Switch scene
Website
github.com
XP
2,663
Country
Korea, North
I think that, not just an updated SXOS, but even the source code should "leak". Most of the money TX can make with switch is already done, at least for unpatched Erista switches, while the newest selling point is the modchips themselves, which are already gone or to be gone soon. So I think they would have an elegant "ending" ( for this battle at least ) on the switch scene by releasing the sources and they wouldn't need to work on it anymore.
They will be able to make money by selling SXOS to Mariko users once clone chips are a thing. There is some strong evidence that some will be coming soon shipped with SpacecraftNX.
 

Inaki

Well-Known Member
Member
Joined
Jan 23, 2014
Messages
278
Trophies
0
Age
42
XP
603
Country
They will be able to make money by selling SXOS to Mariko users once clone chips are a thing. There is some strong evidence that some will be coming soon shipped with SpacecraftNX.
That's honestly very good news on the hardware front, can you elaborate on that ? Thank you.

About making money with SX OS, well, if that means renewed support and, let's call it that way, the comeback of SXOS, I am glad for that too, that would mean long live SXOS, good news indeed.
 

DbGt

Well-Known Member
Member
Joined
Jul 28, 2004
Messages
490
Trophies
1
Website
Visit site
XP
2,881
Country
Mexico
As above - You can make a small Emu nand, with only a 64 MB user partition for use with SXOS using NxNandManager - which only uses about 2 gig sd card space if space is an issue for you. I've got one of those and another small Emu nand for Atmos as well, both take up less than 5 gig out of my 256 Gig micro sd card. I use Atmos for most stuff, then for XCI I switch to SXOS using a payload switcher. This is not a big deal to set up and gives you ALL the features of both CFW.

Thats super small, how do you manage saves? I have the same setup but with 2 6gb emunands which gives me about 3.4gb user partition in each of them
 

mrdude

Developer
Developer
Joined
Dec 11, 2015
Messages
3,071
Trophies
1
Age
56
XP
8,237
Thats super small, how do you manage saves? I have the same setup but with 2 6gb emunands which gives me about 3.4gb user partition in each of them
I usually just use a full size hidden emunand partition for everything such as games/homebrew etc. And a small file CLEAN file based emunand for testing stuff and getting firmware or XCI game updates. (It's easily restored to sd card and compressed it's only 875 megs on my laptop and less than 3 gig on the Micro SD card).
 
Last edited by mrdude,
Joined
Sep 9, 2019
Messages
904
Trophies
1
Location
Switch scene
Website
github.com
XP
2,663
Country
Korea, North
That's honestly very good news on the hardware front, can you elaborate on that ? Thank you.

About making money with SX OS, well, if that means renewed support and, let's call it that way, the comeback of SXOS, I am glad for that too, that would mean long live SXOS, good news indeed.
I don't know too much about it but I saw people talking about it in the TX Discord. There were images of chips and some videos of them being programmed with SpacecraftNX / booting Atmosphere. The chips are almost identical except for a small difference on the part that connects to the Nand. I've only seen them booting on full sized units so I don't know if they're also making SX Lite clones but I imagine they are if they've went this far with cloning the SX Core.
 

mrdude

Developer
Developer
Joined
Dec 11, 2015
Messages
3,071
Trophies
1
Age
56
XP
8,237
9yap.bmp
j3dk.bmp
bu5q.bmp
uz06.bmp
b93s.bmp
lohz.bmp
1tau.bmp
uz74.bmp
r4og.bmp
9e5d.bmp
wxmj.bmp


Code:
#include <string.h>
#include <stdlib.h>
#include <stdio.h>


const char gfxin[11][20] = {{"menu_bg.bmp"},
                            {"bootcfw.bmp"},
                            {"bootofw.bmp"},
                            {"options.bmp"},
                            {"core.bmp"},
                            {"autorcm.bmp"},
                            {"nand.bmp"},
                            {"emunand.bmp"},
                            {"repair.bmp"},
                            {"launch.bmp"},
                            {"poweroff.bmp"}};
                    
const char gfxout[11][20] =    {{"menu_bg_out.bin"},
                                {"bootcfw_out.bin"},
                                {"bootofw_out.bin"},
                                {"options_out.bin"},
                                {"core_out.bin"},
                                {"autorcm_out.bin"},
                                {"nand_out.bin"},
                                {"emunand_out.bin"},
                                {"repair_out.bin"},
                                {"launch_out.bin"},
                                {"poweroff_out.bin"}};
 
const char gfxout2[11][20] =   {{"menu_bg_out.bmp"},
                                {"bootcfw_out.bmp"},
                                {"bootofw_out.bmp"},
                                {"options_out.bmp"},
                                {"core_out.bmp"},
                                {"autorcm_out.bmp"},
                                {"nand_out.bmp"},
                                {"emunand_out.bmp"},
                                {"repair_out.bmp"},
                                {"launch_out.bmp"},
                                {"poweroff_out.bmp"}};
int size_gfx[11] = {0x3c008a,0x4008a,0x4008a,0x4008a,0x408a,0x408a,0x408a,0x408a,0x408a,0x408a,0x408a};
int size_gfx_reso[11] = {0xC00,0x400,0x400,0x400,0x100,0x100,0x100,0x100,0x100,0x100,0x100};
int size_gfx_reso_bg = 0x1400;


int main()
{

    int count;
 
    for(count=0; count<11; count++)
    {
        int i;
        int j;
        int x;
        int y;
        int z;
    
        char *tmp_in;
        char *tmp_out;
    
        FILE * file_in;
        FILE * file_out;
    
        file_in = fopen(gfxin[count],"rb");
        file_out = fopen(gfxout[count],"wb");
    
        tmp_in = (char*)malloc(size_gfx[count] * sizeof(char));
        tmp_out = (char*)malloc(size_gfx[count] * sizeof(char));
    
        fread(tmp_in, size_gfx[count], 1, file_in);
    
    
        for(j = 0; j < 0x8A; j++)tmp_out[j] = tmp_in[j];
        y = 0x8a;
    
        if(count == 0)z = size_gfx_reso_bg;
        else z = size_gfx_reso[count];
        for(i = size_gfx[count]; i > 0x8A; i-=z)
        {
            for(x=0; x<z; x+=0x4){
                tmp_out[((i-z)+x)+0] = tmp_in[(y+x)+2];
                tmp_out[((i-z)+x)+1] = tmp_in[(y+x)+1];
                tmp_out[((i-z)+x)+2] = tmp_in[(y+x)+0];
                tmp_out[((i-z)+x)+3] = tmp_in[(y+x)+3];
            }
            y+=z;
        }
    
        fwrite(tmp_out, size_gfx[count], 1, file_out);
    
    
    
        fclose(file_out);
        fclose(file_in);
        free(tmp_in);
        free(tmp_out);
        rename(gfxout[count],gfxout2[count]);
    }
    printf("success !!!\n");
    system("pause");
}

Here's that program compiled for windows for those that don't know how to do that. The program basically converts bmp files into the correct format (BGR and rotates & flips them). You will still need a script to inject these images into SXOS - I take it this will be posted at some point?
 

Attachments

  • SXOS-GFX.zip
    144.8 KB · Views: 170
Last edited by mrdude,

Reacher17

Well-Known Member
OP
Member
Joined
Sep 18, 2019
Messages
128
Trophies
0
XP
755
Country
France
script

menu_bg.bmp 1280x768

bootcfw.bmp bootofw.bmp options.bmp 256x256

core.bmp autorcm.bmp nand.bmp emunand.bmp repair.bmp launch.bmp poweroff.bmp 64x64

32bits ARGB

Code:
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>

const char gfxin[11][20] = {{"menu_bg.bmp"},
                            {"bootcfw.bmp"},
                            {"bootofw.bmp"},
                            {"options.bmp"},
                            {"core.bmp"},
                            {"autorcm.bmp"},
                            {"nand.bmp"},
                            {"emunand.bmp"},
                            {"repair.bmp"},
                            {"launch.bmp"},
                            {"poweroff.bmp"}};
                       
const char gfxout[11][20] =    {{"out/menu_bg.bin"},
                                {"out/bootcfw.bin"},
                                {"out/bootofw.bin"},
                                {"out/options.bin"},
                                {"out/core.bin"},
                                {"out/autorcm.bin"},
                                {"out/nand.bin"},
                                {"out/emunand.bin"},
                                {"out/repair.bin"},
                                {"out/launch.bin"},
                                {"out/poweroff.bin"}};
   
int size_gfx[11] = {0x3c0000,0x40000,0x40000,0x40000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000};
int size_gfx_reso[11] = {0xC00,0x400,0x400,0x400,0x100,0x100,0x100,0x100,0x100,0x100,0x100};
int size_gfx_reso_bg = 0x1400;


int main()
{

    int count;
    mkdir("out",1);
    for(count=0; count<11; count++)
    {
        int i;
        int j;
        int x;
        int y;
        int z;
        int size_header;
        size_header = 0x8A;
        y = size_header;
       
        char *tmp_in;
        char *tmp_out;
       
        FILE * file_in;
        FILE * file_out;
       
        if((file_in = fopen(gfxin[count],"rb")) == NULL){printf("no file: %s \n", gfxin[count]); continue;}
        tmp_in = (char*)malloc(size_gfx[count]+size_header * sizeof(char));
        fread(tmp_in, size_gfx[count], 1, file_in);
        file_out = fopen(gfxout[count],"wb");
        tmp_out = (char*)malloc(size_gfx[count] * sizeof(char));
       
       
        if(count == 0)z = size_gfx_reso_bg;
        else z = size_gfx_reso[count];
       
        for(i = size_gfx[count]; i > size_header; i-=z)
        {
            for(x=0; x<z; x+=0x4){
                tmp_out[((i-z)+x)+0] = tmp_in[(y+x)+2];
                tmp_out[((i-z)+x)+1] = tmp_in[(y+x)+1];
                tmp_out[((i-z)+x)+2] = tmp_in[(y+x)+0];
                tmp_out[((i-z)+x)+3] = tmp_in[(y+x)+3];
            }
            y+=z;
        }
       
        fwrite(tmp_out, size_gfx[count], 1, file_out);
       
       
       
        fclose(file_out);
        fclose(file_in);
        free(tmp_in);
        free(tmp_out);
        //rename(gfxout[count],gfxout2[count]);
        printf("file convert succes : %s \n", gfxin[count]);
    }
    printf("success !!!\n");
   
}
 

Attachments

  • menu_sxos.7z
    2 KB · Views: 154
  • Mod bmp.7z
    15.7 KB · Views: 154
Last edited by Reacher17,

Reacher17

Well-Known Member
OP
Member
Joined
Sep 18, 2019
Messages
128
Trophies
0
XP
755
Country
France
Code:
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>

const char gfxin[11][20] = {{"menu_bg.bmp"},
{"bootcfw.bmp"},
{"bootofw.bmp"},
{"options.bmp"},
{"core.bmp"},
{"autorcm.bmp"},
{"nand.bmp"},
{"emunand.bmp"},
{"repair.bmp"},
{"launch.bmp"},
{"poweroff.bmp"}};

const char gfxout[11][20] =    {{"out/menu_bg.bin"},
{"out/bootcfw.bin"},
{"out/bootofw.bin"},
{"out/options.bin"},
{"out/core.bin"},
{"out/autorcm.bin"},
{"out/nand.bin"},
{"out/emunand.bin"},
{"out/repair.bin"},
{"out/launch.bin"},
{"out/poweroff.bin"}};

int size_gfx[11] = {0x3c0000,0x40000,0x40000,0x40000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000};
int size_gfx_reso[11] = {0xC00,0x400,0x400,0x400,0x100,0x100,0x100,0x100,0x100,0x100,0x100};
int size_gfx_reso_bg = 0x1400;

int main()
{

int count;
mkdir("out",1);
for(count=0; count<11; count++)
{
int i;
int j;
int x;
int y;
int z;
int size_header;

char *tmp_in;
char *tmp_out;

FILE * file_in;
FILE * file_out;

if((file_in = fopen(gfxin[count],"rb")) == NULL){printf("no file: %s \n", gfxin[count]); continue;}

int size;
fseek(file_in, 0, SEEK_END);
size = ftell(file_in);
fseek(file_in,0,SEEK_SET);

tmp_in = (char*)malloc(size * sizeof(char));

fread(tmp_in, size_gfx[count], 1, file_in);

size_header = tmp_in[0xa] & 0xff;

file_out = fopen(gfxout[count],"wb");
tmp_out = (char*)malloc(size_gfx[count] * sizeof(char));


if(count == 0)z = size_gfx_reso_bg;
else z = size_gfx_reso[count];
y = size_header;
for(i = size_gfx[count]; i > size_header; i-=z)
{
for(x=0; x<z; x+=0x4){
tmp_out[((i-z)+x)+0] = tmp_in[(y+x)+2];
tmp_out[((i-z)+x)+1] = tmp_in[(y+x)+1];
tmp_out[((i-z)+x)+2] = tmp_in[(y+x)+0];
tmp_out[((i-z)+x)+3] = tmp_in[(y+x)+3];
}
y+=z;
}

fwrite(tmp_out, size_gfx[count], 1, file_out);



fclose(file_out);
fclose(file_in);
free(tmp_in);
free(tmp_out);

printf("file convert succes : %s \n", gfxin[count]);
}
printf("success !!!\n");

}
 
Last edited by Reacher17,
  • Like
Reactions: chronoss

nWo

The Game Master
Member
Joined
Oct 20, 2016
Messages
1,004
Trophies
0
Website
www.facebook.com
XP
2,921
Country
Mexico
Sorry if my question is stupid. But, in the case that SX never updates again the CFW, could it be possible that someone could modify the cracked SX to work on OFW 12.x ?? I of course don´t know anything about how that works. Just a wild thought that crossed my mind, seeing that SX has been cracked. It would be very cool tho.

By the by, those splash screen and custom logos look pretty cool, great work.
 
  • Like
Reactions: chronoss

Imancol

Otak Productions
Member
Joined
Jun 29, 2017
Messages
1,376
Trophies
0
XP
2,774
Country
Colombia
The super xci is working fine with sxos (v3.7 definitive edition + all dlc)
How do you create the Super XCI?
Are you using the version with the ID 00100BFE00E9CA00?

EDIT: At the end of moving so many games to .XCI, it ended up corrupting the base game of The Witcher. I also have problems with Smash Bros, it goes black and when you return to Home you see the exclamation icon of damaged data.

I think it would be better to go back to .NSZ and hope that one day SXOS supports NTFS or go to FAT32 which implies splitting the .XCI every 4GB.
 
Last edited by Imancol,

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • BakerMan
    I rather enjoy a life of taking it easy. I haven't reached that life yet though.
  • K3Nv2
  • Xdqwerty
    what are you looking at?
    ZeroT21 @ ZeroT21: the 2nd pic dun show much, just topdown view of the layout