xboxscene.org forums

Pages: 1 ... 3 4 [5] 6 7 ... 14

Author Topic: Hacking The Ms Xboxdash (news & How To's)  (Read 2287 times)

dfunked

  • Archived User
  • Hero Member
  • *
  • Posts: 635
Hacking The Ms Xboxdash (news & How To's)
« Reply #60 on: July 12, 2003, 03:35:00 AM »

GREAT NEWS EVERYONE!

sorry for that, but i've gotten multiple settings style menu's working, all thanks to winXIP.

i'm about to film a 15 second clip of it (that's all my dig. camera allows me to do) and i'll then post the tutorial when i've got the time. but it's done, finally.

if we get dll plugin support happening, that'd be great.

at the moment it's running from teh C partition, but i'm about to now run it from the E partition and see how i go. great work everyone! smile.gif

raf.
Logged

dfunked

  • Archived User
  • Hero Member
  • *
  • Posts: 635
Hacking The Ms Xboxdash (news & How To's)
« Reply #61 on: July 12, 2003, 05:12:00 AM »

ok for those that want proof, here it is. and don't come here thinking i did this all on my own. i used Voltaic's winXIP so credit goes to him for the util smile.gif thanks volt.

http://www.xgen-mods...sh_complete.avi

and

http://www.xgen-mods...h_complete2.avi

i'll get some clearer pics up in a moment biggrin.gif

ok here's the pics for everyone. (sorry about the sizes, roughly 60KB each pic)

user posted image
user posted image
user posted image
user posted image
Logged

spyd4r

  • Archived User
  • Full Member
  • *
  • Posts: 179
Hacking The Ms Xboxdash (news & How To's)
« Reply #62 on: July 12, 2003, 06:21:00 AM »

awesome..!!
Logged

dfunked

  • Archived User
  • Hero Member
  • *
  • Posts: 635
Hacking The Ms Xboxdash (news & How To's)
« Reply #63 on: July 12, 2003, 06:32:00 AM »

i'll get you a tutorial in abotu an hour or so.

please note i couldn't get this to run from the E partition. anyone who follows my tutorial and then gets it to run from the E or F partition, that'd be really good :)
Logged

emuflame

  • Archived User
  • Newbie
  • *
  • Posts: 2
Hacking The Ms Xboxdash (news & How To's)
« Reply #64 on: July 12, 2003, 06:35:00 AM »

Very nice indeed, hope to check that out when your tut is done
Logged

dfunked

  • Archived User
  • Hero Member
  • *
  • Posts: 635
Hacking The Ms Xboxdash (news & How To's)
« Reply #65 on: July 12, 2003, 07:53:00 AM »

OK damn this is a very thorough tutorial. Hope you get it working. Also, wherever you see something like this, 'DeviceHarddisk0Partition1', the forum messes up slashes. It should look like 'Device\\Harddisk\\Partition1'.

HOW TO HAVE MULTIPLE SETTINGS STYLED MENUS (by dfunked)

Note: This requires you to change files on the C partition (I haven't managed to get it working from the E or F partitions). So MAKE A BACKUP OF YOUR FILES! You've been warned.

1. Get winXIP. If you don't know where, close this file.
2. Remember not to use pixit at all.
3. Get new xips and xboxdash.xbe and we're gonna start afresh. Yes every xip, new, fresh.
4. OK this is where it might get a little tricky to follow. I have my menu set up as such: Applications, Games, Emulators, Settings. (You can see that in the pics). If you want to change this, well, that's up to you, but only if you really know what you're doing.
5. Open mainmenu5.xip in winXIP. Edit default.xap using notepad or whatever editor you want.
6. Use the search function, and search for 'heading'. You'll find the first result will have "MEMORY" next to it. Change this to whatever title you want the first button on the main menu to say. Mine would say "APPLICATIONS".
7. Press F3 to find the next 'heading' and change that to what you want the second main menu button to say. Note that when you run the dash, the second menu item is the one that's highlight on loadup. That may or may not matter to you, but since I access the games menu the most, I made this my games menu.
8. Press F3 once more, change "XONLINE" to "EMULATORS". Leave the last heading "SETTINGS" as it is.
9. Save changes, close notepad or your editor, and save the XIP (CTRL+S). Now I had problems with xaps containing garbage sometimes, so to be safe, I closed winXIP after each time I edited a xip and saved it. I suppose you don't have to, but if you get a similar problem, do what I did. OK now open default.xip. Then right click default.xap -> edit.
10. This is where things get REALLY messy. Well, not really. Use the find function and search for 'SettingsInline' (in that case). You'll find yourself at the settings inline section and it looks something like so:

CODE
DEF theSettingsInline Inline
{
   visible false
   url "Settings3.xap"

   function onLoad()
   {
     theSettingsInline.children[0].theSettingsMenu.GoTo();
   }

}

Now, what you want to do here is this. Copy the whole of that (from DEF to the }) and go down a line after the last }. Paste the contents 3 times. Should look like this:

CODE
DEF theSettingsInline Inline
{
   visible false
   url "Settings3.xap"

   function onLoad()
   {
     theSettingsInline.children[0].theSettingsMenu.GoTo();
   }

}

DEF theSettingsInline Inline
{
   visible false
   url "Settings3.xap"

   function onLoad()
   {
     theSettingsInline.children[0].theSettingsMenu.GoTo();
   }

}

DEF theSettingsInline Inline
{
   visible false
   url "Settings3.xap"

   function onLoad()
   {
     theSettingsInline.children[0].theSettingsMenu.GoTo();
   }

}

DEF theSettingsInline Inline
{
   visible false
   url "Settings3.xap"

   function onLoad()
   {
     theSettingsInline.children[0].theSettingsMenu.GoTo();
   }

}

OK. If it looks like that, well done smile.gif Now leave the first DEF alone and move on to the second one. Change every time is says 'settings' to 'applications'. It should look like this:

CODE
DEF theApplicationsInline Inline
{
   visible false
   url "Applications.xap"

   function onLoad()
   {
      theApplicationsInline.children[0].theApplicationsMenu.GoTo();
   }
}

Now that you got that working, change the third duplicate and replace 'settings' with 'games' and the fourth to have 'settings' replaced by 'emulators'. Once done, it should look like this:

CODE
DEF theSettingsInline Inline
{
   visible false
   url "Settings3.xap"

   function onLoad()
   {
      theSettingsInline.children[0].theSettingsMenu.GoTo();
   }
}

DEF theApplicationsInline Inline
{
   visible false
   url "Applications.xap"

   function onLoad()
   {
      theApplicationsInline.children[0].theApplicationsMenu.GoTo();
   }
}

DEF theGamesInline Inline
{
   visible false
   url "Games.xap"

   function onLoad()
   {  
      theGamesInline.children[0].theGamesMenu.GoTo();
   }
}

DEF theEmulatorsInline Inline
{
   visible false
   url "Emulators.xap"

   function onLoad()
   {
      theEmulatorsInline.children[0].theEmulatorsMenu.GoTo();
   }
}

OK. Next step.

11. Now we need to duplicate the GoToSettings() function. Following the same sort of thing we did before, where you see 'function GoToSettings()' make it look like this:

CODE
   function GoToSettings()
   {
 bBackToDVDPlayer = false;
 if (theSettingsInline.visible)
         theSettingsInline.children[0].theSettingsMenu.GoTo();
     else
         theSettingsInline.visible = true;
   }
   
   function GoToApplications()
   {
    bBackToDVDPlayer = false;
    if (theApplicationsInline.visible)
        theApplicationsInline.children[0].theApplicationsMenu.GoTo();
    else
        theApplicationsInline.visible = true;
   }

   function GoToGames()
   {
    bBackToDVDPlayer = false;
    if (theGamesInline.visible)
        theGamesInline.children[0].theGamesMenu.GoTo();
    else
        theGamesInline.visible = true;
   }

   function GoToEmulators()
   {
    bBackToDVDPlayer = false;
    if (theEmulatorsInline.visible)
        theEmulatorsInline.children[0].theEmulatorsMenu.GoTo();
    else
        theEmulatorsInline.visible = true;
   }


12. Do a search for 'OnADown' and make it look like this:

CODE
   function OnADown()
       {
           theMainMenu.children[0].children[0].select_pod_HL.children[0].appearance.material.param = 1;

           PlaySoundA();
   
           if (nCurMainMenuItem == 0)  // Applications Button
           {
               theApplicationsMenuIn.Play();
               GoToApplications();
           }
           else if (nCurMainMenuItem == 1) // Games Button
           {
               theGamesMenuIn.Play();
               GoToGames();                
           }
           else if (nCurMainMenuItem == 2) // Emulators Button
           {
               theEmulatorsMenuIn.Play();
               GoToEmulators();                
           }
           else if (nCurMainMenuItem == 3) // Settings Button
           {
               theSettingsMenuIn.Play();
               GoToSettings();
           }

       }

   function OnXDown()
       {
           theMainMenu.children[0].children[0].select_pod_HL.children[0].appearance.material.param = 1;

           PlaySoundA();
    TellUser("GREETINGS                      Many thanks to everyone that made this all possible (you know who you are), especially Voltaic for his wonderful tools and dedication.", "");
   
       }

   function OnWhiteDown()
       {
      launch("xboxdash.xbe", "DeviceHarddisk0Partition2");
       }   

   function OnBlackDown()
       {
      launch("evoxdash.xbe", "DeviceHarddisk0Partition2");
       }

   function OnPower()
       {
      launch("shutdown.xbe", "DeviceHarddisk0Partition2");
       }


Obviously change the location of such xbes to where you store them.

13. We need to go to the top of default.xap now and do something to get those sounds working. Find '// Transition Sounds' and highlight from the // to just before '// Music Area sounds'. Paste this in it's place. This will get sounds working for all the menus.

CODE
// Transition sounds
DEF theGamesMenuIn AudioClip { url "Audio/TransitionAudio/Games Main Menu In_LR.wav" volume 0.92 }
DEF theGamesMenuOut AudioClip { url "Audio/TransitionAudio/Games Main Menu Out_LR.wav" volume 0.92 }
DEF theGamesSubMenuIn AudioClip {url "Audio/TransitionAudio/Games Sub Menu In_LR.wav" volume 0.92 }
DEF theGamesSubMenuOut AudioClip {url "Audio/TransitionAudio/Games Sub Menu Out_LR.wav" volume 0.92 }

DEF theMusicMenuIn AudioClip { url "Audio/TransitionAudio/Music Main Menu In_LR.wav" volume 0.92 }
DEF theMusicMenuOut AudioClip { url "Audio/TransitionAudio/Music Main Menu Out_LR.wav" volume 0.92 }
DEF theMusicSubMenuIn AudioClip { url "Audio/TransitionAudio/Music Select Track In_LR.wav" volume 0.92 }
DEF theMusicSubMenuOut AudioClip { url "Audio/TransitionAudio/Music Select Track Out_LR.wav" volume 0.92 }

DEF theSettingsMenuIn AudioClip { url "Audio/TransitionAudio/Settings Main Menu In_LR.wav" volume 0.92 }
DEF theSettingsMenuOut AudioClip { url "Audio/TransitionAudio/Settings Main Menu Out_LR.wav" volume 0.92 }
DEF theSettingsSubMenuIn AudioClip { url "Audio/TransitionAudio/Settings Sub Menu In_LR.wav" volume 0.92 }
DEF theSettingsSubMenuOut AudioClip { url "Audio/TransitionAudio/Settings Sub Menu Out_LR.wav" volume 0.92 }

DEF theEmulatorsMenuIn AudioClip { url "Audio/TransitionAudio/Settings Main Menu In_LR.wav" volume 0.92 }
DEF theEmulatorsMenuOut AudioClip { url "Audio/TransitionAudio/Settings Main Menu Out_LR.wav" volume 0.92 }
DEF theEmulatorsSubMenuIn AudioClip { url "Audio/TransitionAudio/Settings Sub Menu In_LR.wav" volume 0.92 }
DEF theEmulatorsSubMenuOut AudioClip { url "Audio/TransitionAudio/Settings Sub Menu Out_LR.wav" volume 0.92 }

DEF theApplicationsMenuIn AudioClip { url "Audio/TransitionAudio/Settings Main Menu In_LR.wav" volume 0.92 }
DEF theApplicationsMenuOut AudioClip { url "Audio/TransitionAudio/Settings Main Menu Out_LR.wav" volume 0.92 }
DEF theApplicationsSubMenuIn AudioClip { url "Audio/TransitionAudio/Settings Sub Menu In_LR.wav" volume 0.92 }
DEF theApplicationsSubMenuOut AudioClip { url "Audio/TransitionAudio/Settings Sub Menu Out_LR.wav" volume 0.92 }

14. We're done with default.xap of default.xip so save the xap, close notepad or the editor, and save the xip.

15. Now it's time to edit settings3.xap, so go ahead, right click and hit edit. With my settings menu, you'll notice from the pics and movies I have Memory Manager and Music Manager. This lets you access your save games as well as your soundtracks (which were previously accessed from the main menu).

16. Towards the top of this xap, make it look like so:

CODE

function initialize()
{
   nCurSettingsMenuItem = 0;
   nCurClockMenuItem = 0;
   monthnames = new Array("january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december");
   GetCurrentTime();
}



////////////////////////////////////////////////////////////////////////////

DEF theMemoryInline Inline
{
   visible false
   url "Memory3.xap"

   function onLoad()
   {
       theMemoryInline.children[0].theMemoryMenu.GoTo();
   }
}

function GoToMemory()
{
   if (theMemoryInline.visible)
       theMemoryInline.children[0].theMemoryMenu.GoTo();
   else
       theMemoryInline.visible = true;
}

Adding the memory inline will let us access the memory from this submenu.

17. Search for 'function StartSettingsMenu()' and locate '// Build the Settings Menu array'. Now this is where we specify what the names of the menu items are going to be. This is what you'll eventually want the function StartSettingsMenu() to look like:
CODE

function StartSettingsMenu()
{
   var c = theSettingsMenu.children[0].children[0];

   if((strCurMenu == "SETTINGS") & (strPrevMenu == "SETTINGS"))
   {
 nCurSettingsMenuItem = 0;
 nNumSettingsMenuItems = 6;
 nCurSettingsMenuButton = 0;
 nSettingsScroll = 0;
   }

   var sSettingsMenu = new Array(7);
   var index = 0;

   // Build the Settings Menu array
   
   sSettingsMenu[index] = theTranslator.Translate("Memory Manager");
   index = index + 1;   

   sSettingsMenu[index] = theTranslator.Translate("Music Manager");
   index = index + 1;

   sSettingsMenu[index] = theTranslator.Translate("CLOCK");
   index = index + 1;   

   sSettingsMenu[index] = theTranslator.Translate("LANGUAGE");
   index = index + 1;

   // Audio Setting
   if(theConfig.GetAVPackType() != "RFU")
   {
 sSettingsMenu[index] = theTranslator.Translate("AUDIO");
 index = index + 1;   
   }

   // Video Settings
   sSettingsMenu[index] = theTranslator.Translate("VIDEO");
   index = index + 1;

   // Parental Control
   if((theConfig.GetGameRegion() == "NA") + (theConfig.GetGameRegion() == "JAPAN"))
   {
 sSettingsMenu[index] = theTranslator.Translate("PARENTAL CONTROL");
 index = index + 1;
   }
   
   sSettingsMenu[index] = theTranslator.Translate("AUTO OFF");
   index = index + 1;

   sSettingsMenu[index] = theTranslator.Translate("SYSTEM INFO");
   index = index + 1;

   sSettingsMenu[index] = theTranslator.Translate("Reboot");
   index = index + 1;

   sSettingsMenu[index] = theTranslator.Translate("Shutdown");
   index = index + 1;

   nSettingsItemCount = index;
   sSettingsElements = sSettingsMenu;

   // show/hide buttons as appropriate
   if(nSettingsItemCount == 4)
   {
 c.S_Home_menubutton_07.visible = false;
 c.S_Home_text_05.visible = false;

 c.S_Home_menubutton_06.visible = false;
 c.S_Home_text_06.visible = false;
   }
   else if(nSettingsItemCount == 5)
   {
 c.S_Home_menubutton_07.visible = true;
 c.S_Home_text_05.visible = true;

 c.S_Home_menubutton_06.visible = false;
 c.S_Home_text_06.visible = false;
   }
   else
   {
 c.S_Home_menubutton_07.visible = true;
 c.S_Home_text_05.visible = true;

 c.S_Home_menubutton_06.visible = true;
 c.S_Home_text_06.visible = true;
   }

   UpdateSettingsMenu();
}

18. Scroll down just a little further until you find 'function MenuIcon()'. Make it look like this:

CODE
function MenuIcon()
{
   var c = theSettingsMenu.children[0].children[0];

   if (sSettingsElements[nCurSettingsMenuItem] == theTranslator.Translate("CLOCK"))
   {
   UpdateClockHands();
       ShowIcon(c.ClockIcon);
   }
   else if (sSettingsElements[nCurSettingsMenuItem] == theTranslator.Translate("LANGUAGE"))
   {
       ShowIcon(c.GlobeIcon);
   }
   else if (sSettingsElements[nCurSettingsMenuItem] == theTranslator.Translate("AUDIO"))
   {
       SetAudioModeIcon(nCurAudioMode);
   }
   else if (sSettingsElements[nCurSettingsMenuItem] == theTranslator.Translate("VIDEO"))
   {
       SetVideoModeIcon(nCurVideoMode);
   }
   else if (sSettingsElements[nCurSettingsMenuItem] == theTranslator.Translate("PARENTAL CONTROL"))
   {
       ShowIcon(c.LockIcon);
   }
   else if (sSettingsElements[nCurSettingsMenuItem] == theTranslator.Translate("AUTO OFF"))
   {
       ShowIcon(c.AutoOffIcon);
   }
   else if (sSettingsElements[nCurSettingsMenuItem] == theTranslator.Translate("SYSTEM INFO"))
   {
   ShowIcon(c.ConsoleIcon);
   }
   else if (sSettingsElements[nCurSettingsMenuItem] == theTranslator.Translate("Memory Manager"))
   {
   ShowIcon(c.ConsoleIcon);
   }
   else if (sSettingsElements[nCurSettingsMenuItem] == theTranslator.Translate("Music Manager"))
   {
   ShowIcon(c.StereoIcon);
   }
   else if (sSettingsElements[nCurSettingsMenuItem] == theTranslator.Translate("Reboot"))
   {
   ShowIcon(c.AutoOffIcon);
   }
   else if (sSettingsElements[nCurSettingsMenuItem] == theTranslator.Translate("Shutdown"))
   {
   ShowIcon(c.AutoOffIcon);
   }
}

You can see that I made the Memory Manager have the XBOX icon, Music have the two speaker (stereo) icon and reboot and shutdown have the power icon.

19. Just a little further down, locate 'function UpdateRootMeta()'. Towards the bottom of this function, make it look like this:

CODE
   else if(sSettingsElements[nCurSettingsMenuItem] == theTranslator.Translate("PARENTAL CONTROL"))
   {
 if (nMoviePCLevel + nGamePCLevel == 13)
    metaString = theTranslator.Translate("OFF");
 else
    metaString = theTranslator.Translate("ON");
   }
   else if(sSettingsElements[nCurSettingsMenuItem] == theTranslator.Translate("AUTO OFF"))
   {
 if (theConfig.GetAutoOff())
    metaString = theTranslator.Translate("ENABLED");
 else
    metaString = theTranslator.Translate("DISABLED");
   }
   else if(sSettingsElements[nCurSettingsMenuItem] == theTranslator.Translate("SYSTEM INFO"))
   {
 metaString = "'S XBOX";
   }
   else if(sSettingsElements[nCurSettingsMenuItem] == theTranslator.Translate("Memory Manager"))
   {
 metaString = "MEMORY MANAGER";
   }
   else if(sSettingsElements[nCurSettingsMenuItem] == theTranslator.Translate("Music Manager"))
   {
 metaString = "MUSIC MANAGER";
   }

You can put your name in the System Info metastring. This will make it say "JOHN'S XBOX" in the little box underneath the icon smile.gif

20. Search for 'DEF theSettingsJoystick Joystick' and make 'function OnADown' look like so:

CODE
 function OnADown()
 {
    PlaySoundA();
    theSettingsMenu.children[0].children[0].MU_select_pod_HL.children[0].appearance.material.param = 1;

    strPrevMenu = "SETTINGS";

             if (sSettingsElements[nCurSettingsMenuItem] == theTranslator.Translate("CLOCK"))
    {
   strCurMenu = "CLOCK";
   theChooseClockMenu.GoTo();
    }
             else if (sSettingsElements[nCurSettingsMenuItem] == theTranslator.Translate("LANGUAGE"))
    {
   strCurMenu = "LANGUAGE";
   theSetLanguageMenu.GoTo();
    }
             else if (sSettingsElements[nCurSettingsMenuItem] == theTranslator.Translate("AUDIO"))
             {
                 if ((theConfig.GetAVPackType() == "HDTV") + (theConfig.GetAVPackType() == "SVIDEO") + (theConfig.GetAVPackType() == "VGA") + (theConfig.GetAVPackType() == "SCART"))
   {
      strCurMenu = "AUDIO";
      theChooseClockMenu.GoTo();
   }
                 else
   {
      strCurMenu = "AUDIO MODE";
      theSetModeMenu.GoTo();
   }
             }
             else if (sSettingsElements[nCurSettingsMenuItem] == theTranslator.Translate("VIDEO"))
             {
                 if ((theConfig.GetAVPackType() == "HDTV") + (theConfig.GetAVRegion() == "PAL_I"))
   {
      strCurMenu = "VIDEO";
      theChooseClockMenu.GoTo();
   }
                 else
   {
      strCurMenu = "VIDEO MODE";
                        theSetModeMenu.GoTo();
   }
             }
             else if (sSettingsElements[nCurSettingsMenuItem] == theTranslator.Translate("PARENTAL CONTROL"))
             {
                 if (theConfig.CheckParentPassword(""))
   {
      strCurMenu = "PARENTAL CONTROL";
      theChooseClockMenu.GoTo();
   }
                 else
   {
      strCurMenu = "ENTER PASSWORD";
      theSetPanelMenu.GoTo();
   }
             }
             else if (sSettingsElements[nCurSettingsMenuItem] == theTranslator.Translate("AUTO OFF"))
    {
   strCurMenu = "AUTO OFF";
   theSetPanelMenu.GoTo();
    }
             else if (sSettingsElements[nCurSettingsMenuItem] == theTranslator.Translate("SYSTEM INFO"))
    {
   strCurMenu = "SYSTEM INFO";
   theSetPanelMenu.GoTo();
    }
    else if (sSettingsElements[nCurSettingsMenuItem] == theTranslator.Translate("Memory Manager"))
    {
   GoToMemory();
    }

    else if (sSettingsElements[nCurSettingsMenuItem] == theTranslator.Translate("Music Manager"))
    {
   theMainMenu.GoBackTo();
   GoToMusic();
    }
    else if (sSettingsElements[nCurSettingsMenuItem] == theTranslator.Translate("Reboot"))
    {
        launch("reboot.xbe", "DeviceHarddisk0Partition2");
    }

    else if (sSettingsElements[nCurSettingsMenuItem] == theTranslator.Translate("Shutdown"))
    {
        launch("shutdown.xbe", "DeviceHarddisk0Partition2");
    }

    theSettingsSubMenuIn.Play();
 }

Once again, put the correct paths to reboot.xbe and shutdown.xbe

21. OK we're done with settings3.xap. Save, close notepad or text editor, save xip. Use the extract feature, to extract settings3.xap to a directory (anywhere will do). Go to where you extracted the xap, and copy the file. Now paste the file somewhere else, and rename it to 'applications.xap'. Paste the file again, and rename this one to 'games.xap'. Paste once more, and rename to 'emulators.xap'. You should now have 3 new files (applications.xap, games.xap, emulators.xap) which have the exact same content as settings3.xap

22. Run winXIP again, and open default.xip. Now press INSERT, and select (one by one) the 3 new xaps we just made. Once you've inserted all 3, save the xip. Close winXIP and open it again. Open up default.xip once more. (I had to do this to avoid getting garbage in my xap files. You might need to.)

23. You'll notice the 3 new xaps are in the xip. That's good, now here's what to do. Open applications.xap. Remove the 'DEF theMemoryInline Inline' that we inserted earlier. We're going to use the replace function here a bit. Use the replace function (make sure to match case) and do the following;

1. Replace every instance of 'theSettings' to 'theApplications'
2. Replace every instance of 'SettingsMenu' to 'ApplicationsMenu'
3. Replace every instance of 'SettingsInline' to 'ApplicationsInline'
4. Replace every instance of '"SETTINGS"' to '"APPLICATIONS"' (quotation marks included)

24. Search for 'function MenuIcon()'. We're going to comment out most of this function, and make the icon the AutoOff icon (you can change this to whichever icon you like, but I preferred the power icon for the applications menu). Make it look like this:

CODE
function MenuIcon()
{
   var c = theApplicationsMenu.children[0].children[0];

   ShowIcon(c.AutoOffIcon);
   
   /*
   if (sSettingsElements[nCurApplicationsMenuItem] == theTranslator.Translate("CLOCK"))
   {
 UpdateClockHands();
       ShowIcon(c.ClockIcon);
   }
   else if (sSettingsElements[nCurApplicationsMenuItem] == theTranslator.Translate("LANGUAGE"))
   {
       ShowIcon(c.GlobeIcon);
   }
   else if (sSettingsElements[nCurApplicationsMenuItem] == theTranslator.Translate("AUDIO"))
   {
       SetAudioModeIcon(nCurAudioMode);
   }
   else if (sSettingsElements[nCurApplicationsMenuItem] == theTranslator.Translate("VIDEO"))
   {
       SetVideoModeIcon(nCurVideoMode);
   }
   else if (sSettingsElements[nCurApplicationsMenuItem] == theTranslator.Translate("PARENTAL CONTROL"))
   {
       ShowIcon(c.LockIcon);
   }
   else if (sSettingsElements[nCurApplicationsMenuItem] == theTranslator.Translate("Reboot"))
   {
       ShowIcon(c.AutoOffIcon);
   }
   else if (sSettingsElements[nCurApplicationsMenuItem] == theTranslator.Translate("SYSTEM INFO"))
   {
   ShowIcon(c.ConsoleIcon);
   }
   */
}


25. Replace 'function UpdateRootMeta()' with this:

CODE
function UpdateRootMeta()
{
   var c = theApplicationsMenu.children[0].children[0];
   var metaString = "";
 
   metaString = theTranslator.Translate(sSettingsElements[nCurApplicationsMenuItem]);
   
   c.metaPanel.children[0].geometry.text = metaString;
}

This will make the text under the icon simply say the same thing as the item highlighted on the menu.

26. Just under that, you'll find 'DEF theApplicationsMenu Level'. Where it says 'url "Settings3/default.xap"', change this to 'url "Settings3/applications.xap"'. The reason for this is later, we will be placing new xaps in the settings3.xip. This avoids having to add any new xips to the xbe.

27. Above where we were just working, you'll find 'function StartApplicationsMenu()'. I made mine look like this. You should be able to recognise where I've added my own applications already on my XBOX. The unneeded items are commented out by the /* and *. Edit the amount of items you wish to have, as well as the names of the applications you wish to have on your applications menu.

CODE
function StartApplicationsMenu()
{
   var c = theApplicationsMenu.children[0].children[0];

   if((strCurMenu == "APPLICATIONS") & (strPrevMenu == "APPLICATIONS"))
   {
 nCurApplicationsMenuItem = 0;
 nNumApplicationsMenuItems = 6;
 nCurApplicationsMenuButton = 0;
 nSettingsScroll = 0;
   }

   var sApplicationsMenu = new Array(7);
   var index = 0;

   // Build the Applications Menu array
   sApplicationsMenu[0] = theTranslator.Translate("Boxplorer");
   sApplicationsMenu[1] = theTranslator.Translate("DVD-Region X");
   index = 2;

   sApplicationsMenu[index] = theTranslator.Translate("DVD2XBOX");
   index = index + 1;

   sApplicationsMenu[index] = theTranslator.Translate("Enigmah Video Mode");
   index = index + 1;

   sApplicationsMenu[index] = theTranslator.Translate("XBOX Copy");
   index = index + 1;

   sApplicationsMenu[index] = theTranslator.Translate("XBOX Media Player");
   index = index + 1;

   sApplicationsMenu[index] = theTranslator.Translate("XBOX Toolbox");
   index = index + 1;


   
   /*
   // Audio Setting
   if(theConfig.GetAVPackType() != "RFU")
   {
 sApplicationsMenu[index] = theTranslator.Translate("AUDIO");
 index = index + 1;   
   }

   // Video Settings
   sApplicationsMenu[index] = theTranslator.Translate("VIDEO");
   index = index + 1;

   // Parental Control
   if((theConfig.GetGameRegion() == "NA") + (theConfig.GetGameRegion() == "JAPAN"))
   {
 sApplicationsMenu[index] = theTranslator.Translate("PARENTAL CONTROL");
 index = index + 1;
   }
   
   sApplicationsMenu[index] = theTranslator.Translate("AUTO OFF");
   index = index + 1;
   sApplicationsMenu[index] = theTranslator.Translate("SYSTEM INFO");
   index = index + 1;
   
   */


   nSettingsItemCount = index;
   sSettingsElements = sApplicationsMenu;

   // show/hide buttons as appropriate
   if(nSettingsItemCount == 4)
   {
 c.S_Home_menubutton_07.visible = false;
 c.S_Home_text_05.visible = false;

 c.S_Home_menubutton_06.visible = false;
 c.S_Home_text_06.visible = false;
   }
   else if(nSettingsItemCount == 5)
   {
 c.S_Home_menubutton_07.visible = true;
 c.S_Home_text_05.visible = true;

 c.S_Home_menubutton_06.visible = false;
 c.S_Home_text_06.visible = false;
   }
   else
   {
 c.S_Home_menubutton_07.visible = true;
 c.S_Home_text_05.visible = true;

 c.S_Home_menubutton_06.visible = true;
 c.S_Home_text_06.visible = true;
   }

   UpdateApplicationsMenu();
}



28. Search for 'control DEF theApplicationsJoystick Joystick' and replace the 'function OnADown' with this. Remember, these are my applications, and if you made any changes in the previous step, you have to rewrite the theTranslator.Translate("Name of the application")) section EXACTLY as you entered them before. The majority of this function is commented out once again.

CODE
function OnADown()
 {
    PlaySoundA();
    theApplicationsMenu.children[0].children[0].MU_select_pod_HL.children[0].appearance.material.param = 1;

    strPrevMenu = "APPLICATIONS";

    if(sSettingsElements[nCurApplicationsMenuItem] == theTranslator.Translate("Boxplorer"))
    {
   launch("default.xbe", "DeviceHarddisk0Partition1APPSBOXPLORER");
    }
    else if(sSettingsElements[nCurApplicationsMenuItem] == theTranslator.Translate("DVD-Region X"))
    {
   launch("default.xbe", "DeviceHarddisk0Partition1APPSDVDREGIONX");
    }
        else if(sSettingsElements[nCurApplicationsMenuItem] == theTranslator.Translate("DVD2XBOX"))
    {
   launch("default.xbe", "DeviceHarddisk0Partition1APPSDVD2XBOX");
    }
    else if(sSettingsElements[nCurApplicationsMenuItem] == theTranslator.Translate("Enigmah Video Mode"))
    {
   launch("default.xbe", "DeviceHarddisk0Partition1APPSVIDEOSELECT");
    }
    else if(sSettingsElements[nCurApplicationsMenuItem] == theTranslator.Translate("XBOX Copy"))
    {
   launch("default.xbe", "DeviceHarddisk0Partition1APPSXBCOPY");
    }
    else if(sSettingsElements[nCurApplicationsMenuItem] == theTranslator.Translate("XBOX Media Player"))
    {
   launch("default.xbe", "DeviceHarddisk0Partition1APPSXBMP");
    }
    else if(sSettingsElements[nCurApplicationsMenuItem] == theTranslator.Translate("XBOX Toolbox"))
    {
   launch("default.xbe", "DeviceHarddisk0Partition1APPSXTOOLBOX");
    }         


           /*
           if (sSettingsElements[nCurApplicationsMenuItem] == theTranslator.Translate("CLOCK"))
    {
   strCurMenu = "CLOCK";
   theChooseClockMenu.GoTo();
    }
           else if (sSettingsElements[nCurApplicationsMenuItem] == theTranslator.Translate("LANGUAGE"))
    {
   strCurMenu = "LANGUAGE";
   theSetLanguageMenu.GoTo();
    }
           else if (sSettingsElements[nCurApplicationsMenuItem] == theTranslator.Translate("AUDIO"))
           {
               if ((theConfig.GetAVPackType() == "HDTV") + (theConfig.GetAVPackType() == "SVIDEO") + (theConfig.GetAVPackType() == "VGA") + (theConfig.GetAVPackType() == "SCART"))
   {
      strCurMenu = "AUDIO";
      theChooseClockMenu.GoTo();
   }
               else
   {
      strCurMenu = "AUDIO MODE";
      theSetModeMenu.GoTo();
   }
           }
           else if (sSettingsElements[nCurApplicationsMenuItem] == theTranslator.Translate("VIDEO"))
           {
               if ((theConfig.GetAVPackType() == "HDTV") + (theConfig.GetAVRegion() == "PAL_I"))
   {
      strCurMenu = "VIDEO";
      theChooseClockMenu.GoTo();
   }
               else
   {
      strCurMenu = "VIDEO MODE";
                   theSetModeMenu.GoTo();
   }
           }
           else if (sSettingsElements[nCurApplicationsMenuItem] == theTranslator.Translate("PARENTAL CONTROL"))
           {
               if (theConfig.CheckParentPassword(""))
   {
      strCurMenu = "PARENTAL CONTROL";
      theChooseClockMenu.GoTo();
   }
               else
   {
      strCurMenu = "ENTER PASSWORD";
      theSetPanelMenu.GoTo();
   }
           }
           else if (sSettingsElements[nCurApplicationsMenuItem] == theTranslator.Translate("AUTO OFF"))
    {
   strCurMenu = "AUTO OFF";
   theSetPanelMenu.GoTo();
    }
           else if (sSettingsElements[nCurApplicationsMenuItem] == theTranslator.Translate("SYSTEM INFO"))
    {
   strCurMenu = "SYSTEM INFO";
   theSetPanelMenu.GoTo();
    }

    theApplicationsSubMenuIn.Play();
 */
 }

29. Save the xap, close the editor. Repeat steps 23 - 28 for games.xap and emulators.xap. For example, in games.xap, replace 'SettingsInline' with 'GamesInline' etc etc. Pay particular attention to step 26. For example, the games.xap, you'd have it saying ''url "Settings3/games.xap"''.

30. Once all xaps are edited and saved (including the location of YOUR applications / games / emulators), save the xip.

31. Open settings3.xip (not settings3.xap). Extract default.xap to a temporary directory. Doing something similar to what we did before, copy the file you extracted, and paste to a different location. Rename to applications.xap. Paste again, rename to games.xap. Paste again, rename to emulators.xap.

32. Go back to winXIP (note that you might want to close winXIP after extracting default.xap in step 31). Open settings3.xip, and press INSERT, inserting the 3 new xaps we just made. Save the xip. Close winXIP and open it again (just for safety).

33. Now right click applications.xap, and hit edit. Use the search tool and look for 'heading'. Replace "SETTINGS" with "APPLICATIONS". Save the xap and close editor. Open games.xap, search for 'heading' replace "SETTINGS" with "GAMES". Do the same thing for emulators. What this step does is get the textures, all from the same xip, and editing these headings changes the heading (dur) on the top of each menu. Once all done, save the xip.

34. OK you're almost done. Hit CTRL+R to resign the dashboard. Open up xboxdash.xbe (make sure this is a virgin copy of the xbe, untouched and unmodified). Use the BROWSE function, to locate where all your xips are. Hit resign.

35. Upload new xips (that would be settings3.xip, default.xip and mainmenu5.xip). Upload the new xboxdash.xbe

36. Test everything out. Should have a fully functional dashboard now smile.gif

Thanks for Voltaic for winXIP and everyone else (you know who you are). Any errors in this tutorial, email me ([email protected]). Hope that helps you all out.

dfunked.
Logged

dfunked

  • Archived User
  • Hero Member
  • *
  • Posts: 635
Hacking The Ms Xboxdash (news & How To's)
« Reply #66 on: July 12, 2003, 08:17:00 AM »

Logged

A1patriot

  • Archived User
  • Newbie
  • *
  • Posts: 32
Hacking The Ms Xboxdash (news & How To's)
« Reply #67 on: July 12, 2003, 08:31:00 AM »

fantastic.. hehe

Getting my teeth stuck into it now!

quick question:

I just want the games menu, i'll put the couple of apps i use (videomode switch, dvd2xbox) with the settings menu wink.gif

how do i get rid of the 'MEMORY' and 'XBOX LIVE' tabs on the main screen.

thx again dfunked smile.gif
Logged

Heet

  • Archived User
  • Hero Member
  • *
  • Posts: 2809
Hacking The Ms Xboxdash (news & How To's)
« Reply #68 on: July 12, 2003, 09:13:00 AM »

Does it seem likely to link the game pix into any of this?  Delete this when you want, but i just wondered how feasable that would be.  Im only askin cuz i know its what everyone is thinking.  Props to all who made this happen.  
Logged

dfunked

  • Archived User
  • Hero Member
  • *
  • Posts: 635
Hacking The Ms Xboxdash (news & How To's)
« Reply #69 on: July 12, 2003, 09:20:00 AM »

A1, that's making things messy. just think of 2 other menu items you can put on there, and instead of them being menus, just make them launch an xbe. say you use XBMP a lot, just turn it into that. if you follow the tutorial closely, you should know where to change things to do that.

heet, might take a while, but i'm sure it's possible. However i dunno if i want to have it there, might look unnatural. i'm gonna lay low now, i've got final year high school to worry about, and i go back to school tuesday :)

i mean :(

This post has been edited by dfunked: Jul 12 2003, 04:22 PM
Logged

rahula

  • Archived User
  • Sr. Member
  • *
  • Posts: 401
Hacking The Ms Xboxdash (news & How To's)
« Reply #70 on: July 12, 2003, 08:50:00 AM »

Great works.....awsome tutourial   biggrin.gif
One more question, I have Live account and if I change this, will M$ find out when I connect to online game and ban me for software modification?? Anyone tried already?  ohmy.gif
Logged

dfunked

  • Archived User
  • Hero Member
  • *
  • Posts: 635
Hacking The Ms Xboxdash (news & How To's)
« Reply #71 on: July 12, 2003, 09:32:00 AM »

I STRESS SOMETHING. If you have XBOX LIVE, don't use this tutorial until I can get it running from the E of F partitions. That way, you create two copies of all yoru files, and leave the original dashboard untouched and able to be used for XBOX LIVE.

One more thing, YES YOU NEED A MODCHIP TO DO THIS.

If someone can get this working on the other partitions, PM me and i'll update hte tutorial ASAP.

rahula, wait until we get that working, then you can. I know that XBOX LIVE sends you updates regularly (or so i've heard). that would cause most likely pretty messy results. stick to evox / mediax / whatever for now if you use XBOX LIVE is what i'm getting at.
Logged

derson

  • Archived User
  • Jr. Member
  • *
  • Posts: 50
Hacking The Ms Xboxdash (news & How To's)
« Reply #72 on: July 12, 2003, 10:20:00 AM »

Amazing documentary!  Great work dfunked!  I wanted to pass on that in line 5:
"5. Open mainmenu5.xip in winXIP. Edit default.xip using notepad or whatever editor you want."
I believe you meant edit 'default.xap'  (not .xip)...

Same thing with line 9:
"9. [...] OK now open default.xip. Then right click default.xip -> edit."
Need to open default.xip, but edit default.xap.

Although I've read the entire post, I have not had time yet to perform all the tasks... but anybody trying this should get the idea pretty quickly :-)  Generally open XIPs with WinXIP but edit the XAPs containing the code.  Although you can export the XAP and then edit it, that isn't as simple as editing the file through WinXIP ... but first you must define the editor program in WinXIP (at least for version 0.5 - that may change in the next version) ... Go to the Edit Menu -> Preferences -> select External Editor and then define which editor you prefer to use.

Again, EXCELLENT Post!

This post has been edited by derson: Jul 12 2003, 05:21 PM
Logged

spyd4r

  • Archived User
  • Full Member
  • *
  • Posts: 179
Hacking The Ms Xboxdash (news & How To's)
« Reply #73 on: July 12, 2003, 10:22:00 AM »

can you list all the files that get edited so i know which to make backups of?
Logged

pgkool

  • Archived User
  • Newbie
  • *
  • Posts: 29
Hacking The Ms Xboxdash (news & How To's)
« Reply #74 on: July 12, 2003, 12:00:00 PM »

im really sry if this has been asked, but this thread is long and its kinda hard to search for but is it possible to add more "tabs" to the main menu, like where u have "games" "appaclactiaons" "emulators" and "settings", instead of renaming them , is there a way to ADD or REMOVE tabs??
Logged
Pages: 1 ... 3 4 [5] 6 7 ... 14