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
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 
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 
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.