Natively dismount virtual disc drives

This commit is contained in:
Rocky5
2024-08-05 23:16:03 +01:00
parent d7aafee031
commit 50c8494589
34 changed files with 246 additions and 116 deletions
@@ -0,0 +1,65 @@
#define IOCTL_VIRTUAL_CDROM_DETACH 0x1EE7CD02
#define IOCTL_VIRTUAL_DETACH 0xCE52B02
#define OBJ_CASE_INSENSITIVE 0x00000040L
#define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020
#define FILE_NON_DIRECTORY_FILE 0x00000040
#define NT_SUCCESS(StatCode) ((NTSTATUS)(StatCode) >= 0)
extern "C" {
typedef ULONG NTSTATUS;
typedef ULONG ACCESS_MASK;
typedef struct _OBJECT_ATTRIBUTES
{
HANDLE RootDirectory;
PANSI_STRING ObjectName;
ULONG Attributes;
} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
typedef struct _IO_STATUS_BLOCK
{
NTSTATUS Status;
ULONG Information;
} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
typedef VOID (*PIO_APC_ROUTINE)(
PVOID ApcContext,
PIO_STATUS_BLOCK pIoStatusBlock,
ULONG Reserved
);
extern NTSTATUS __stdcall NtOpenFile(
OUT PHANDLE pHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES pObjectAttributes,
OUT PIO_STATUS_BLOCK pIOStatusBlock,
IN ULONG ShareAccess,
IN ULONG OpenOptions
);
extern NTSTATUS __stdcall NtClose(HANDLE Handle);
extern VOID __stdcall HalReturnToFirmware(unsigned int);
extern VOID __stdcall RtlInitAnsiString(void *destp, void *srcp);
extern NTSTATUS __stdcall IoDismountVolumeByName(PANSI_STRING DeviceName);
extern NTSTATUS __stdcall IoDismountVolumeByName(
PANSI_STRING DeviceName
);
/* Xbox Kernel Functions */
extern NTSTATUS __stdcall NtDeviceIoControlFile(
HANDLE Handle,
HANDLE Event,
PIO_APC_ROUTINE ApcRoutine,
PVOID ApcContext,
PIO_STATUS_BLOCK IoStatusBlock,
ULONG IoControlCode,
PVOID InputBuffer,
ULONG InputBufferLength,
PVOID OutputBuffer,
ULONG OutputBufferLength
);
};
@@ -16,9 +16,11 @@
#include <fstream>
#include <iostream>
#include "shortcutxbe.h"
#include "dismountxbe.h"
#define ES_IGR "E:\\CACHE\\LocalCache20.bin"
#define dashloader_Files_path "E:\\UDATA\\21585554\\000000000000\\nkpatcher settings\\dashloader\\"
#include "external.h"
#define ES_IGR "E:\\CACHE\\LocalCache20.bin"
#define Dashloader_Files_Path "E:\\UDATA\\21585554\\000000000000\\nkpatcher settings\\dashloader\\"
static FILE* logfile = NULL;
int file_exist(char *name)
{
@@ -79,39 +81,50 @@ int LaunchShortcut(char* filename)
/* initial starting point of program */
int main(int argc,char* argv[])
{
XMount("C:", "\\Device\\Harddisk0\\Partition2"); XMount("E:", "\\Device\\Harddisk0\\Partition1");
CreateDirectory(dashloader_Files_path, NULL);
XMount("C:", "\\Device\\Harddisk0\\Partition2");
XMount("E:", "\\Device\\Harddisk0\\Partition1");
CreateDirectory(Dashloader_Files_Path, NULL);
CreateDirectory("E:\\CACHE", NULL);
char shortcut[MAX_PATH];
int i;
XInitDevices( 0, NULL );
if( FAILED( XBInput_CreateGamepads( &m_Gamepad ) ) )
{
debuglog("ERROR - Cant create gamepad");
}
logfile = fopen(dashloader_Files_path"Dashloader.log", "w+t");
debuglog("Dashloader Build 1.4.2\n");
logfile = fopen(Dashloader_Files_Path"Dashloader.log", "w+t");
debuglog("Dashloader Build 1.4.3\n");
// Dismount virtual drive
XMount("VD:", "\\Device\\Cdrom1");
if (file_exist("E:\\CACHE\\LocalCache30.bin"))
if (file_exist("VD:\\default.xbe") && !file_exist(Dashloader_Files_Path"Disabled Virtual-ISO Dismount.bin"))
{
debuglog("Cleanup from Virtual Disc removal");
remove("E:\\CACHE\\LocalCache30.bin");
}
if (file_exist("VD:\\default.xbe") && !file_exist(dashloader_Files_path"Disabled Virtual-ISO Dismount.bin"))
{
debuglog("Unmounting Virtual Drive");
std::ofstream DismountXBEFile("E:\\CACHE\\LocalCache30.bin", std::ios::binary);
for(i = 0; i < sizeof(dismount_xbe); i++)
{
DismountXBEFile << dismount_xbe[i];
debuglog("Unmounting: Virtual Drive\n");
// NKPatcher Virtual Drive
HANDLE h;
NTSTATUS status;
ANSI_STRING dev_name;
RtlInitAnsiString(&dev_name, "\\Device\\CdRom1");
OBJECT_ATTRIBUTES obj_attr;
obj_attr.RootDirectory = NULL;
obj_attr.ObjectName = &dev_name;
obj_attr.Attributes = OBJ_CASE_INSENSITIVE;
IO_STATUS_BLOCK io_status;
status = NtOpenFile(&h, GENERIC_READ | SYNCHRONIZE, &obj_attr, &io_status, FILE_SHARE_READ, FILE_SYNCHRONOUS_IO_NONALERT);
if (NT_SUCCESS(status)) {
debuglog("\t> Found virtual drive");
status = NtDeviceIoControlFile(h, NULL, NULL, NULL, &io_status, IOCTL_VIRTUAL_CDROM_DETACH, NULL, 0, NULL, 0);
if (NT_SUCCESS(status))
debuglog("\t\t> Dismounted virtual drive\n");
else
debuglog("\t\t> Failed to dismount virtual drive\n");
}
DismountXBEFile.close();
XLaunchXBE("E:\\CACHE\\LocalCache30.bin");
NtClose(h);
}
// Sleep fixes screen resetting on some xbox.
Sleep(300);
if (file_exist(ES_IGR))
LaunchShortcut(ES_IGR);
LaunchShortcut(ES_IGR);
int timer = 0;
while(timer++ <= 1000)
{
@@ -148,7 +161,7 @@ int main(int argc,char* argv[])
{
debuglog("Checking: Rescue dashboards\n");
debuglog("\t> Loading: Custom Rescue dashboard");
LaunchShortcut(dashloader_Files_path"Custom_Recovery.cfg");
LaunchShortcut(Dashloader_Files_Path"Custom_Recovery.cfg");
debuglog("\t\t> Custom Rescue dashboard not found\n\n\t> Loading: Rescue dashboard TDATA");
XLaunchXBE("E:\\TDATA\\Rescuedash\\Default.xbe");
@@ -168,42 +181,42 @@ int main(int argc,char* argv[])
if( m_DefaultGamepad.bPressedAnalogButtons[XINPUT_GAMEPAD_A] )
{
debuglog("Loading: A Button dashboard");
LaunchShortcut(dashloader_Files_path"A_Button_Dash.cfg");
LaunchShortcut(Dashloader_Files_Path"A_Button_Dash.cfg");
}
if( m_DefaultGamepad.bPressedAnalogButtons[XINPUT_GAMEPAD_B] )
{
debuglog("Loading: B Button dashboard");
LaunchShortcut(dashloader_Files_path"B_Button_Dash.cfg");
LaunchShortcut(Dashloader_Files_Path"B_Button_Dash.cfg");
}
if( m_DefaultGamepad.bPressedAnalogButtons[XINPUT_GAMEPAD_X] )
{
debuglog("Loading: X Button dashboard");
LaunchShortcut(dashloader_Files_path"X_Button_Dash.cfg");
LaunchShortcut(Dashloader_Files_Path"X_Button_Dash.cfg");
}
if( m_DefaultGamepad.bPressedAnalogButtons[XINPUT_GAMEPAD_Y] )
{
debuglog("Loading: Y Button dashboard");
LaunchShortcut(dashloader_Files_path"Y_Button_Dash.cfg");
LaunchShortcut(Dashloader_Files_Path"Y_Button_Dash.cfg");
}
if( m_DefaultGamepad.wPressedButtons & XINPUT_GAMEPAD_START )
{
debuglog("Loading: Start Button dashboard");
LaunchShortcut(dashloader_Files_path"Start_Button_Dash.cfg");
LaunchShortcut(Dashloader_Files_Path"Start_Button_Dash.cfg");
}
if( m_DefaultGamepad.wPressedButtons & XINPUT_GAMEPAD_BACK )
{
debuglog("Loading: Back Button dashboard");
LaunchShortcut(dashloader_Files_path"Back_Button_Dash.cfg");
LaunchShortcut(Dashloader_Files_Path"Back_Button_Dash.cfg");
}
if( m_DefaultGamepad.bPressedAnalogButtons[XINPUT_GAMEPAD_BLACK] )
{
debuglog("Loading: Black Button dashboard");
LaunchShortcut(dashloader_Files_path"Black_Button_Dash.cfg");
LaunchShortcut(Dashloader_Files_Path"Black_Button_Dash.cfg");
}
if( m_DefaultGamepad.bPressedAnalogButtons[XINPUT_GAMEPAD_WHITE] )
{
debuglog("Loading: White Button dashboard");
LaunchShortcut(dashloader_Files_path"White_Button_Dash.cfg");
LaunchShortcut(Dashloader_Files_Path"White_Button_Dash.cfg");
}
Sleep(1);
@@ -227,7 +240,7 @@ int main(int argc,char* argv[])
debuglog("Checking: Custom Dashboard\n");
debuglog("\t> Loading: Custom dashboard");
LaunchShortcut(dashloader_Files_path"Custom_Dash.cfg");
LaunchShortcut(Dashloader_Files_Path"Custom_Dash.cfg");
debuglog("\t\t> Custom dashboard not found\n");
debuglog("Checking: Dashboard Locations\n");
@@ -16,10 +16,25 @@
#include <fstream>
#include <iostream>
#include "shortcutxbe.h"
#include "dismountxbe.h"
#include "kernelpatcher.h"
#define ES_IGR "E:\\CACHE\\LocalCache20.bin"
#define dashloader_Files_path "C:\\Dashloader\\"
#include "external.h"
#define ES_IGR "E:\\CACHE\\LocalCache20.bin"
#define Dashloader_Files_Path "C:\\Dashloader\\"
#define Ind_Checker_File "E:\\CACHE\\LocalCache30.bin"
#define Patcher_File "E:\\CACHE\\LocalCache40.bin"
#define Patched_M8 ((char*)0x8002691E)
#define Patched_Ind ((char*)0x8002B4B7)
#define UNPatched_M8_1 ((char*)0x8002691B)
#define UNPatched_M8_2 ((char*)0x8002691E)
#define UNPatched_M8_3 ((char*)0x8002690E)
#define UNPatched_Ind_1 ((char*)0x8002B4B5)
#define UNPatched_Ind_2 ((char*)0x8002B4B7)
#define UNPatched_Ind_3 ((char*)0x8002B4C7)
static FILE* logfile = NULL;
int file_exist(char *name)
{
@@ -81,72 +96,96 @@ int LaunchShortcut(char* filename)
/* initial starting point of program */
int main(int argc,char* argv[])
{
XMount("C:", "\\Device\\Harddisk0\\Partition2"); XMount("E:", "\\Device\\Harddisk0\\Partition1");
CreateDirectory(dashloader_Files_path, NULL);
XMount("C:", "\\Device\\Harddisk0\\Partition2");
XMount("E:", "\\Device\\Harddisk0\\Partition1");
CreateDirectory("E:\\CACHE", NULL);
CreateDirectory(Dashloader_Files_Path, NULL);
XInitDevices( 0, NULL );
if( FAILED( XBInput_CreateGamepads( &m_Gamepad ) ) )
{
debuglog("ERROR - Cant create gamepad");
}
logfile = fopen(dashloader_Files_path"Dashloader.log", "w+t");
debuglog("Dashloader Build 1.4.2\n");
logfile = fopen(Dashloader_Files_Path"Dashloader.log", "w+t");
debuglog("Dashloader Build 1.4.3\n");
// Ind-Bios 5003/M8+ with virtual disc loader patch
if (!file_exist(dashloader_Files_path"Disable Virtual ISO Support.bin"))
if (!file_exist(Dashloader_Files_Path"Disable Virtual ISO Support.bin"))
{
int i;
char *patched_M8 = (char *)0x8002691E; // M8+
if (*patched_M8=='')
debuglog("M8+ Detected and XISO support added\n");
char *patched_Ind = (char *)0x8002B4B7; // ind-biod 5003
if (*patched_Ind=='')
// I check for these so I dont try and patch unsupported bios
if (*UNPatched_M8_1 == 'ì' && *UNPatched_M8_2 == ' ' && *UNPatched_M8_3 == 'ÿ' ||
*UNPatched_Ind_1 == 'ƒ' && *UNPatched_Ind_2 == ' ' && *UNPatched_Ind_3 == '')
{
if (!file_exist(Patcher_File))
{
std::ofstream PatcherXBEFile(Patcher_File, std::ios::binary);
PatcherXBEFile.write(reinterpret_cast<const char*>(kernel_patcher), sizeof(kernel_patcher));
}
XLaunchXBE(Patcher_File);
}
remove(Patcher_File);
int patched = 0;
int legacy = 0;
if (*Patched_M8 == '')
{
// M8+ doesnt work with quick IGR when a virtual disc is mounted
debuglog("M8+ Detected and XISO support added\n");
patched = 1;
}
if (*Patched_Ind == '')
{
debuglog("Ind-Bios 5003 Detected and XISO support added\n");
XMount("D:", "\\Device\\Cdrom0"); XMount("VD:", "\\Device\\Cdrom1");
CreateDirectory("E:\\CACHE", NULL);
if (file_exist("VD:\\default.xbe"))
patched = 1;
legacy = 1;
if (!file_exist(Ind_Checker_File))
{
if (!file_exist("E:\\CACHE\\LocalCache30.bin"))
{
debuglog("Creating De-mounter");
std::ofstream DismountXBEFile("E:\\CACHE\\LocalCache30.bin", std::ios::binary);
for(i = 0; i < sizeof(dismount_xbe); i++)
{
DismountXBEFile << dismount_xbe[i];
}
DismountXBEFile.close();
XLaunchXBE("D:\\default.xbe");
}
if (!file_exist(dashloader_Files_path"Disabled Virtual-ISO Dismount.bin"))
{
debuglog("Unmounting Virtual Drive");
XLaunchXBE("E:\\CACHE\\LocalCache30.bin");
}
// Creating blank file so I know not to keep reloading the game over and over. This wouldn't be required if I didn't need to manually load the disc for indbios
std::ofstream blankFile(Ind_Checker_File, std::ios::binary);
blankFile.close();
// This is so we can exit the game when we IGR. If we don't it does what M8+ does.
// If using cerbios new attacher xbe you will need to IGR twice.
XLaunchXBE("D:\\default.xbe");
}
remove("E:\\CACHE\\LocalCache30.bin");
remove(Ind_Checker_File);
}
// Check for characters at these offsets so I know to patch it.
char *unpatched_M8_1 = (char *)0x8002691B; char *unpatched_M8_2 = (char *)0x8002691E; char *unpatched_M8_3 = (char *)0x8002690E;
char *unpatched_Ind_1 = (char *)0x8002B4B5; char *unpatched_Ind_2 = (char *)0x8002B4B7; char *unpatched_Ind_3 = (char *)0x8002B4C7;
if (*unpatched_M8_1=='ì' && *unpatched_M8_2==' ' && *unpatched_M8_3=='ÿ' || *unpatched_Ind_1=='ƒ' && *unpatched_Ind_2==' ' && *unpatched_Ind_3=='')
// Dismount virtual disc drive if present and if not disabled
// loggin is disbaled for this as it will populate even if there is no disc and if I add a check for a disc it would populate every time you load a disc and IGR. (Cerbios only)
if (!file_exist(Dashloader_Files_Path"Disabled Virtual-ISO Dismount.bin"))
{
if (!file_exist("E:\\CACHE\\LocalCache40.bin"))
// debuglog("Unmounting: Virtual Drive\n");
HANDLE h;
NTSTATUS status;
ANSI_STRING dev_name;
if (legacy)
{
std::ofstream PatcherXBEFile("E:\\CACHE\\LocalCache40.bin", std::ios::binary);
for(i = 0; i < sizeof(kernel_patcher); i++)
{
PatcherXBEFile << kernel_patcher[i];
}
PatcherXBEFile.close();
RtlInitAnsiString(&dev_name, "\\Device\\CdRom1");
// debuglog("\t> Found NKPatcher virtual drive");
}
XLaunchXBE("E:\\CACHE\\LocalCache40.bin");
else
{
RtlInitAnsiString(&dev_name, "\\Device\\Virtual0\\Image0");
// debuglog("\t> Found Cerbios virtual drive");
}
unsigned long IOCTL_VIRTUAL_CDROM = legacy ? IOCTL_VIRTUAL_CDROM_DETACH : IOCTL_VIRTUAL_DETACH;
OBJECT_ATTRIBUTES obj_attr;
obj_attr.RootDirectory = NULL;
obj_attr.ObjectName = &dev_name;
obj_attr.Attributes = OBJ_CASE_INSENSITIVE;
IO_STATUS_BLOCK io_status;
status = NtOpenFile(&h, GENERIC_READ | SYNCHRONIZE, &obj_attr, &io_status, FILE_SHARE_READ, FILE_SYNCHRONOUS_IO_NONALERT);
if (NT_SUCCESS(status)) {
status = NtDeviceIoControlFile(h, NULL, NULL, NULL, &io_status, IOCTL_VIRTUAL_CDROM, NULL, 0, NULL, 0);
// if (NT_SUCCESS(status))
// debuglog("\t\t> Dismounted virtual drive\n");
// else
// debuglog("\t\t> Failed to dismount virtual drive\n");
}
NtClose(h);
}
}
// Sleep fixes screen resetting on some xbox.
Sleep(300);
if (file_exist(ES_IGR))
LaunchShortcut(ES_IGR);
int timer = 0;
while(timer++ <= 1000)
{
@@ -183,7 +222,7 @@ int main(int argc,char* argv[])
{
debuglog("Checking: Rescue dashboards\n");
debuglog("\t> Loading: Custom Rescue dashboard");
LaunchShortcut(dashloader_Files_path"Custom_Recovery.cfg");
LaunchShortcut(Dashloader_Files_Path"Custom_Recovery.cfg");
debuglog("\t\t> Custom Rescue dashboard not found\n\n\t> Loading: Rescue dashboard TDATA");
XLaunchXBE("E:\\TDATA\\Rescuedash\\Default.xbe");
@@ -200,50 +239,56 @@ int main(int argc,char* argv[])
if( m_DefaultGamepad.bPressedAnalogButtons[XINPUT_GAMEPAD_A] )
{
debuglog("Loading: A Button dashboard");
LaunchShortcut(dashloader_Files_path"A_Button_Dash.cfg");
LaunchShortcut(Dashloader_Files_Path"A_Button_Dash.cfg");
}
if( m_DefaultGamepad.bPressedAnalogButtons[XINPUT_GAMEPAD_B] )
{
debuglog("Loading: B Button dashboard");
LaunchShortcut(dashloader_Files_path"B_Button_Dash.cfg");
LaunchShortcut(Dashloader_Files_Path"B_Button_Dash.cfg");
}
if( m_DefaultGamepad.bPressedAnalogButtons[XINPUT_GAMEPAD_X] )
{
debuglog("Loading: X Button dashboard");
LaunchShortcut(dashloader_Files_path"X_Button_Dash.cfg");
LaunchShortcut(Dashloader_Files_Path"X_Button_Dash.cfg");
}
if( m_DefaultGamepad.bPressedAnalogButtons[XINPUT_GAMEPAD_Y] )
{
debuglog("Loading: Y Button dashboard");
LaunchShortcut(dashloader_Files_path"Y_Button_Dash.cfg");
LaunchShortcut(Dashloader_Files_Path"Y_Button_Dash.cfg");
}
if( m_DefaultGamepad.wPressedButtons & XINPUT_GAMEPAD_START )
{
debuglog("Loading: Start Button dashboard");
LaunchShortcut(dashloader_Files_path"Start_Button_Dash.cfg");
LaunchShortcut(Dashloader_Files_Path"Start_Button_Dash.cfg");
}
if( m_DefaultGamepad.wPressedButtons & XINPUT_GAMEPAD_BACK )
{
debuglog("Loading: Back Button dashboard");
LaunchShortcut(dashloader_Files_path"Back_Button_Dash.cfg");
LaunchShortcut(Dashloader_Files_Path"Back_Button_Dash.cfg");
}
if( m_DefaultGamepad.bPressedAnalogButtons[XINPUT_GAMEPAD_BLACK] )
{
debuglog("Loading: Black Button dashboard");
LaunchShortcut(dashloader_Files_path"Black_Button_Dash.cfg");
LaunchShortcut(Dashloader_Files_Path"Black_Button_Dash.cfg");
}
if( m_DefaultGamepad.bPressedAnalogButtons[XINPUT_GAMEPAD_WHITE] )
{
debuglog("Loading: White Button dashboard");
LaunchShortcut(dashloader_Files_path"White_Button_Dash.cfg");
LaunchShortcut(Dashloader_Files_Path"White_Button_Dash.cfg");
}
Sleep(1);
}
// Try preset dashboard paths
debuglog("Checking: Prep dashboard\n");
debuglog("\t> Loading: Prep dashboard - E:\\Prep\\Default.xbe");
XLaunchXBE("E:\\Prep\\Default.xbe");
debuglog("\t\t> Prep dashboard not found\n");
debuglog("Checking: Custom Dashboard\n");
debuglog("\t> Loading: Custom dashboard");
LaunchShortcut(dashloader_Files_path"Custom_Dash.cfg");
LaunchShortcut(Dashloader_Files_Path"Custom_Dash.cfg");
debuglog("\t\t> Custom dashboard not found\n");
debuglog("Checking: Dashboard Locations\n");
@@ -14,6 +14,7 @@ DRIVEMAPPING g_driveMapping[] =
{
{ 'C', "Harddisk0\\Partition2", 2},
{ 'D', "Cdrom0", -1},
{ 'VD', "Cdrom1", -1},
{ 'E', "Harddisk0\\Partition1", 1},
{ 'F', "Harddisk0\\Partition6", 6},
{ 'X', "Harddisk0\\Partition3", 3},
Binary file not shown.
+7 -1
View File
@@ -1,9 +1,15 @@
=========================================
Change Log
Xbox Softmodding Tool v1.2.1
Xbox Softmodding Tool v1.2.2
Created by Rocky5
=========================================
=========================================
Update: August 5 2024
=========================================
Dashloader update:
Natively dismount virtual disc drives
=========================================
Update: March 5 2024
=========================================
Binary file not shown.
@@ -2,7 +2,7 @@
<Information>
<Author>Rocky5</Author>
<Copyright>Xbox</Copyright>
<Version>1.2.1</Version>
<Version>1.2.2</Version>
</Information>
<Fonts>
<Font Name="font1">..\skin files\fonts\font1.xpr</Font>
@@ -2,7 +2,7 @@
<Information>
<Author>Rocky5</Author>
<Copyright>Xbox</Copyright>
<Version>1.2.1</Version>
<Version>1.2.2</Version>
</Information>
<Fonts>
<Font Name="font1">..\skin files\fonts\font1.xpr</Font>
@@ -2,7 +2,7 @@
<Information>
<Author>Rocky5</Author>
<Copyright>Xbox</Copyright>
<Version>1.2.1</Version>
<Version>1.2.2</Version>
</Information>
<Fonts>
<Font Name="font1">..\skin files\fonts\font1.xpr</Font>
+1 -1
View File
@@ -2,7 +2,7 @@
<Information>
<Author>Rocky5</Author>
<Copyright>Xbox</Copyright>
<Version>1.2.1</Version>
<Version>1.2.2</Version>
</Information>
<Fonts>
<Font Name="font1">font1.xpr</Font>
Binary file not shown.
+1 -1
View File
@@ -2,7 +2,7 @@
<Information>
<Author>Rocky5</Author>
<Copyright>Xbox</Copyright>
<Version>1.2.1</Version>
<Version>1.2.2</Version>
</Information>
<Fonts>
<Font Name="font1">font1.xpr</Font>
@@ -2,7 +2,7 @@
<Information>
<Author>Rocky5</Author>
<Copyright>Xbox</Copyright>
<Version>1.2.1</Version>
<Version>1.2.2</Version>
</Information>
<Fonts>
<Font Name="font1">..\skin files\fonts\font1.xpr</Font>
+1 -1
View File
@@ -2,7 +2,7 @@
<Information>
<Author>Rocky5</Author>
<Copyright>Xbox</Copyright>
<Version>1.2.1</Version>
<Version>1.2.2</Version>
</Information>
<Fonts>
<Font Name="font1">..\skin files\fonts\font1.xpr</Font>
+1 -1
View File
@@ -2,7 +2,7 @@
<Information>
<Author>Rocky5</Author>
<Copyright>Xbox</Copyright>
<Version>1.2.1</Version>
<Version>1.2.2</Version>
</Information>
<Fonts>
<Font Name="font1">..\skin files\fonts\font1.xpr</Font>
@@ -2,7 +2,7 @@
<Information>
<Author>Rocky5</Author>
<Copyright>Xbox</Copyright>
<Version>1.2.1</Version>
<Version>1.2.2</Version>
</Information>
<Fonts>
<Font Name="font1">..\skin files\fonts\font1.xpr</Font>
@@ -2,7 +2,7 @@
<Information>
<Author>Rocky5</Author>
<Copyright>Xbox</Copyright>
<Version>1.2.1</Version>
<Version>1.2.2</Version>
</Information>
<Fonts>
<Font Name="font1">..\skin files\fonts\font1.xpr</Font>

Some files were not shown because too many files have changed in this diff Show More