Re: How to use ES_DiVerify(ES_Identify)?
September 18, 2010 08:18PM
Quote
sorg
Quote
SifJar
So was Arikado wrong? (see the post I linked above)
His post was about how to disable automatic IOS loading on application startup. Old (seams very very old) libogc loads IOS36 at startup which disables AHBPROT.

No it wasn't.

Quote
Arikado
Isn't AHBPROT part of IOS 58? ( I mean, if it wasn't, DOP-Mii: WiiBrew Edition wouldn't work - We IOS_ReloadIOS() all the time...).
Re: How to use ES_DiVerify(ES_Identify)?
September 19, 2010 06:11AM
Probably Arikado didn't know much about AHBPROT at that time.
Re: How to use ES_DiVerify(ES_Identify)?
September 24, 2010 10:20AM
The AHBPROT is setted by some datas in the TMD. So if you do an IOS_Reload on a title with a normal tmd, the AHBPROT will be reset....

Dop-Mii Wiibrew Edition doesn't patch the ioses. So it doesn't need any special things to install the Wads/Ioses. It will works like the wii usually do.
Re: How to use ES_DiVerify(ES_Identify)?
September 24, 2010 04:33PM
Quote

So if you do an IOS_Reload on a title with a normal tmd
not correct. If you reload IOS then TMD from that IOS will be used for flags setting. Even if title has AHBPROT flag, it won't help to sustain AHBPROT when you reload IOS.

Generally speaking, Wii subsystem is not designed to reload IOS while title is running. Libogc just tricks system when you want to reload IOS. Clearing flags is just side-effect of this abnormal system usage.

Normally, requested IOS is automatically loaded when Title starts, so in this case Title's TMD used for flag setting.
Re: How to use ES_DiVerify(ES_Identify)?
September 24, 2010 06:40PM
Quote
arasium
The AHBPROT is setted by some datas in the TMD. So if you do an IOS_Reload on a title with a normal tmd, the AHBPROT will be reset....

Dop-Mii Wiibrew Edition doesn't patch the ioses. So it doesn't need any special things to install the Wads/Ioses. It will works like the wii usually do.

It doesn't patch, but it can downgrade or delete, which DOES need "special things" as you put it i.e. HW_AHBPROT flags, used to patch an IOS on-the-fly to use for installing and deleting stuff (IOS is not permanently patched, but is temporarily patched in RAM to have fake signing, ES_DiVerify and NAND Permissions)
Re: How to use ES_DiVerify(ES_Identify)?
September 27, 2010 01:33PM
@SifJar: Yes you're right. You need AHBPROT to downgrade IOSes. But, if you reload the ios, you will lost the AHBPROT and (i think) you won't be able to downgrade anything. Doesn't it?

@sorg: When i said title, it was about the ios tmd :) IOS is a title, channel is also a tittle etc... It's like DVDX, the IOS254 was a title with the AHBPROT flag setted.... You just need to IOS_Reload on it... Perhaps i'm wrong, in this case, correct me :)
Re: How to use ES_DiVerify(ES_Identify)?
September 27, 2010 08:12PM
Quote
arasium
@SifJar: Yes you're right. You need AHBPROT to downgrade IOSes. But, if you reload the ios, you will lost the AHBPROT and (i think) you won't be able to downgrade anything. Doesn't it?

That's the whole point, dop-Mii WiiBrew Edition DOES reload IOS a number of times, and still has AHBPROT and can downgrade IOS.
Re: How to use ES_DiVerify(ES_Identify)?
September 28, 2010 12:29PM
I've read you code and there is something like that:

if (!isAHBPROT)
{
  printf("%sIOS: %u%s\n", (selection == 0 ? AnsiSelection : ""), *menuIOS, AnsiNormal);
  printf("%sInstall IOS36 (v%d) w/FakeSign%s\n", (selection == 1 ? AnsiSelection : ""), IOS36Version, AnsiNormal);
}
else
{
  printf("%sUse IOS%d + AHBPROT%s\n", (selection == 0 ? AnsiSelection : ""), IOS_GetVersion(), AnsiNormal);
}
printf("%sScan the Wii's internals (SysCheck)%s\n", (selection == 2 ? AnsiSelection : ""), AnsiNormal);
printf("%sExit%s", (selection == 3 ? AnsiSelection : ""), AnsiNormal);	

Console::SetRowPosition(Console::Rows-7);
Console::PrintSolidLine();
printf("[%s][%s] Change Selection\n", UpArrow, DownArrow);
		
if (selection == 0 && !isAHBPROT) printf("[%s][%s] Change IOS\n", LeftArrow, RightArrow);
else printf("\n");

printf("[Home] Exit");
Console::PrintSolidLine();
printf("Current IOS: IOS%u", IOS_GetVersion());
VIDEO_WaitVSync();

u32 button;
while (Controller::ScanPads(&button))
{
  if (button == WPAD_BUTTON_HOME) System::Exit();
  if (System::State != SystemState::Running) return;

  if (button == WPAD_BUTTON_UP) selection--;
  if (button == WPAD_BUTTON_DOWN) selection++;

  if (isAHBPROT)
  { // Let's skip out that
    if (button == WPAD_BUTTON_UP && selection == 1) selection--;
    if (button == WPAD_BUTTON_DOWN && selection == 1) selection++;
  }

  if (selection < 0) selection = maxMenu;
  if (selection > maxMenu) selection = 0;

  if (selection == 0 && !isAHBPROT)
  {
    if (button == WPAD_BUTTON_LEFT && menuIOS != iosList.begin()) --menuIOS;
    if (button == WPAD_BUTTON_RIGHT && menuIOS != iosList.end()-1) ++menuIOS;
  }	
...
}

So it means that If you don't use the AHBPROT you will have these menus:

- selection 0: "IOS: xx"
- selection 1: "Install IOS36 (vyy) w/FakeSign"
- selection 3: "Scan the Wii's internals (SysCheck)"
- selection 4: "Exit"

And you will be able to select any menu and to modify the selected ios (the xx in the menu above) with left/right arrow

If you have the AHBPROT, you will have this:

- selection 0: "IOS: xx"
- selection 3: "Scan the Wii's internals (SysCheck)"
- selection 4: "Exit"

And you wont be able to select the menu "selection 1" and you wont be able to modify the ios with left/right arrow (the ios will be the current one)


So you won't reload the IOS if you have the AHBPROT.... You can read the rest of the source, it confirms what i say.




Edited 2 time(s). Last edit at 09/28/2010 12:39PM by arasium.
Re: How to use ES_DiVerify(ES_Identify)?
September 28, 2010 08:38PM
I was just going by what Arikado said, but yes a quick scan of the source implies you're right. And also noticed something else interesting, but I won't mention it right now ;)
Sorry, only registered users may post in this forum.

Click here to login