Homebrew Why does Team Twiizers block the HBC in Neek?

JoostinOnline

Certified Crash Test Dummy
OP
Member
Joined
Apr 2, 2011
Messages
11,005
Trophies
1
Location
The Twilight Zone
Website
www.hacksden.com
XP
4,323
Country
United States
I understand why they don't want it to be packed as a wad, because that would allow people to sell it as a scam. What I don't get is them not wanting people to use the INSTALLER in an emunand.

Ideally I would like a link to somewhere they have addressed it (I couldn't find anything), but if anybody has guesses on their reasons I'd like to hear them.
 

JoostinOnline

Certified Crash Test Dummy
OP
Member
Joined
Apr 2, 2011
Messages
11,005
Trophies
1
Location
The Twilight Zone
Website
www.hacksden.com
XP
4,323
Country
United States
Because of the same reason SNEEK was deleted from Wiibrew. For them SNEEK is a warez launcher and thus they are not supporting it.
So it's the same thing as with a patched IOS? They are just unable to see past the potential for loading (or installing in some cases) illegal backups?
 

JoostinOnline

Certified Crash Test Dummy
OP
Member
Joined
Apr 2, 2011
Messages
11,005
Trophies
1
Location
The Twilight Zone
Website
www.hacksden.com
XP
4,323
Country
United States
To protect against modifications by scammers to hide the fact that they're selling somebody else's product.
But if you run the installer you would see the scam screen, so they couldn't hide it. Preventing people from installing the HBC as a wad in a real NAND isn't the same thing as blocking the official installer in an emunand.
 

tueidj

I R Expert
Member
Joined
Jan 8, 2009
Messages
2,569
Trophies
0
Website
Visit site
XP
999
Country
"Each version"? All two of them?
What is the "new way" that you're talking about?

Edit: If you're going to use hindsight to edit your posts and manipulate the conversation, this is a waste of time.
 

JoostinOnline

Certified Crash Test Dummy
OP
Member
Joined
Apr 2, 2011
Messages
11,005
Trophies
1
Location
The Twilight Zone
Website
www.hacksden.com
XP
4,323
Country
United States
"Each version"? All two of them?
What is the "new way" that you're talking about?
See the edit I made.

We can't run v0.7+ installers (never tried v0.6 or below) in neek, and when it turned out you could dump v1.0.7 and the ticket from a real nand for an emunand (although there is still that annoying save issue), it just happened to get blocked in v1.0.8.
 

giantpune

Well-Known Member
Member
Joined
Apr 10, 2009
Messages
2,860
Trophies
0
XP
213
Country
United States
the installer wont work in sneek. its just the way it works. it wouldnt work in the first place, so they made it fail earlier on purpose.
 

obcd

Well-Known Member
Member
Joined
Apr 5, 2011
Messages
1,594
Trophies
0
XP
432
Country
Belgium
I understand that the installer contains some magic to get the homebrew channel on the nand.
I don't understand what is so special about the homebrew channel itself compared to any other channel application capable of launching homebrew?
The reason I ask is because I am thinking of using the homebrew filter on my emulated nands.
I am curious why people really want the HBC, specially now that the HBF became open source.
Postloader is a valid alternative as well, but the Homebrew Filter has more resemblance to the homebrew channel.
It also might fix the return to launcher feature when a Homebrew uses exit(0); I don't think postloader already has that feature.
 

obcd

Well-Known Member
Member
Joined
Apr 5, 2011
Messages
1,594
Trophies
0
XP
432
Country
Belgium
hbf and postloader are having wiiload support. Just not from the usbgecko.
I assume the majority of users isn't ever going to use that feature?
 

giantpune

Well-Known Member
Member
Joined
Apr 10, 2009
Messages
2,860
Trophies
0
XP
213
Country
United States
it would work very similarly to the network wiiload. replace the network reading with
Code:
int usb_recvbuffer_safe_ex(s32 chn,void *buffer,int size, int retries);

hbc is using 1 for the channel (chn), which is slot B, and 1000 for retries.
 

Excelsiior

Well-Known Member
Member
Joined
Sep 13, 2009
Messages
274
Trophies
0
Website
www.nanolx.org
XP
328
Country
Germany
Code:
diff --git a/source/Network/tcp.cpp b/source/Network/tcp.cpp
index efaecac..00eac47 100644
--- a/source/Network/tcp.cpp
+++ b/source/Network/tcp.cpp
@@ -49,15 +49,15 @@ int oport(unsigned short portnum)

// wait for a connection to occur on a socket created with oport()
int get_connection(int s, struct sockaddr_in *sa)
-{
+{
int t;				  /* socket of connection */
//  struct sockaddr_in sa;
sa->sin_len = 8;
sa->sin_family = AF_INET;
u32 buflen = 8;
t = net_accept(s,(struct sockaddr *)sa, &buflen);
-
-/*
+
+/*
debug("Incoming connection");
printf("Incoming connection from %d.%d.%d.%d\n",
(sa->sin_addr.s_addr >> 24) & 0xFF,
@@ -118,8 +118,8 @@ static void * tcp_callback(void *arg)
u8 *bfr[READ_SIZE];
bool compress = false;
struct sockaddr_in addr;
-
- redo:
+
+ redo:
s32 listen = oport(4299);
while(1)
{
@@ -137,10 +137,10 @@ static void * tcp_callback(void *arg)
if(client > 0)
{
//  client connected
-
+
GuiImage * progressImg = new GuiImage(new GuiImageData(Theme.progress));
progressImg->SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE);
-  
+
GXColor ImgColor[4];

ImgColor[0] = (GXColor){Theme.progressbar_color1_1, Theme.progressbar_color1_2, Theme.progressbar_color1_3, 200};  // oben links
@@ -148,19 +148,20 @@ static void * tcp_callback(void *arg)
ImgColor[2] = (GXColor){Theme.progressbar_color2_1, Theme.progressbar_color2_2, Theme.progressbar_color2_3, 200};  // unten rechts
ImgColor[3] = ImgColor[2];  // unten links

-  
+
GuiImage * progressbarImg = new GuiImage(0, 38, (GXColor *) &ImgColor);
progressbarImg->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE);
progressbarImg->SetPosition((screenwidth - progressImg->GetWidth()) /2 +36, 2);
-  
+
GuiText * PercentTxt = new GuiText("0%", 20, (GXColor){Theme.text_1, Theme.text_2, Theme.text_3, 255});
PercentTxt->SetAlignment(ALIGN_RIGHT, ALIGN_MIDDLE);
PercentTxt->SetPosition(-((screenwidth - progressImg->GetWidth()) /2 +36), 38);
-  
+

float Percent = 0.0f;
int temp = read_data(client, (char *)&read, 4);
-	if(temp < 0)
+	int temp2 = usb_recvbuffer_safe_ex(1, (char *)&read, 4, 1);
+	if(temp < 0 && temp2 < 0)
{
//   printf("read_data() error while reading check\n");
net_close(client);
@@ -176,53 +177,86 @@ static void * tcp_callback(void *arg)
mainWindow->Append(PercentTxt);
ResumeGui();
}
-	
+
if(read == 1212242008) // 1212242008 -> 48415858 -> HAXX -> wiiload
{
compress = true;
//   printf("HAXX\n");
-	
-	 read_data(client, (char *)&read, 4);
+
//   int WIILOAD_VERSION_MAYOR = (u8)(((u16)(read >> 16)) >> 8);
//   int WIILOAD_VERSION_MINOR = (u8)(((u16)(read >> 16)) & 0xFF);
//   int a	  = (u8)(((u16)(read & 0xFFFF)) >> 8);
//   int b	  = (u8)(((u16)(read & 0xFFFF)) & 0xFF);
-	
+
//   printf("wiiload v%x.%x\n", WIILOAD_VERSION_MAYOR, WIILOAD_VERSION_MINOR);
//   printf("args %x08\n", read);
//   printf("args a=%x  b=%x\n", a, b);
-	
-	 read_data(client, (char *)&size, 4);
-	 read_data(client, (char *)&uncfilesize, 4);
+
+	 if(temp < 0)
+	 {
+	  usb_recvbuffer_safe_ex(1, (char *)&read, 4, 1);
+	  usb_recvbuffer_safe_ex(1, (char *)&size, 4, 1);
+	  usb_recvbuffer_safe_ex(1, (char *)&uncfilesize, 4, 1);
+	 }
+	 else
+	 {
+	  read_data(client, (char *)&read, 4);
+	  read_data(client, (char *)&size, 4);
+	  read_data(client, (char *)&uncfilesize, 4);
+	 }
+
}
else
size = read;
-	
+
offset = 0;
-	while(offset < size && (read = read_data(client, (char *)bfr, (size - offset) > READ_SIZE ? READ_SIZE : (size - offset))) > 0)
+
+	if(temp < 0)
{
-	 memcpy(data + offset, bfr, READ_SIZE);
-	 offset += read;
-	
-	 Percent = 100.0f * offset/size;
-	 progressbarImg->SetSize(Percent*3.27f, 38);
-	
-	 char buffer[6];
-	 sprintf(buffer, "%i %%", (int)Percent);
-	 PercentTxt->SetText(buffer);
+
+	 while(offset < size && (read = usb_recvbuffer_safe_ex(1, (char *)bfr, (size - offset) > READ_SIZE ? READ_SIZE : (size - offset), 1)) > 0)
+	 {
+	  memcpy(data + offset, bfr, READ_SIZE);
+	  offset += read;
+
+	  Percent = 100.0f * offset/size;
+	  progressbarImg->SetSize(Percent*3.27f, 38);
+
+	  char buffer[6];
+	  sprintf(buffer, "%i %%", (int)Percent);
+	  PercentTxt->SetText(buffer);
+	 }
+
+
}
+	else
+	{
+	 while(offset < size && (read = read_data(client, (char *)bfr, (size - offset) > READ_SIZE ? READ_SIZE : (size - offset))) > 0)
+	 {
+	  memcpy(data + offset, bfr, READ_SIZE);
+	  offset += read;
+
+	  Percent = 100.0f * offset/size;
+	  progressbarImg->SetSize(Percent*3.27f, 38);
+
+	  char buffer[6];
+	  sprintf(buffer, "%i %%", (int)Percent);
+	  PercentTxt->SetText(buffer);
+	 }
+	}
+
usleep(100000);
net_close(client);
net_close(listen);
-  
+
if(compress)
{
u8 *zdata = (u8 *) malloc(uncfilesize);
if(!zdata)
return NULL;
-	
+
uLongf zdatalen = uncfilesize;
-	
+
int res = uncompress (zdata, &zdatalen, data, (uLongf)size);

if (res != Z_OK)
@@ -238,13 +272,13 @@ static void * tcp_callback(void *arg)
// free(zdata);
}
}
-  
+
CopyHomebrewMemory(data, 0, size);
if(data)
free(data);
//  if(zdata)
//   free(zdata);
-	
+
mainWindow->Remove(PercentTxt);
mainWindow->Remove(progressbarImg);
mainWindow->Remove(progressImg);

quick'n'dirty™ -- try this patch against the latest GIT version...
(thanks to my editor settings it contains whitespace cleanups...)

//Edit: use spoiler
 

You may also like...

General chit-chat
Help Users
  • No one is chatting at the moment.
    K3N1 @ K3N1: https://youtube.com/shorts/ZKBs7smCDlA?feature=share