diff --git a/xbox1/frontend/RetroLaunch/IoSupport.cpp b/xbox1/frontend/RetroLaunch/IoSupport.cpp
index 37ebc411f3..cb0d3065f6 100644
--- a/xbox1/frontend/RetroLaunch/IoSupport.cpp
+++ b/xbox1/frontend/RetroLaunch/IoSupport.cpp
@@ -1,6 +1,19 @@
-// IoSupport.cpp: implementation of the CIoSupport class.
-//
-//////////////////////////////////////////////////////////////////////
+/* RetroArch - A frontend for libretro.
+* Copyright (C) 2010-2012 - Hans-Kristian Arntzen
+* Copyright (C) 2011-2012 - Daniel De Matteis
+*
+* RetroArch is free software: you can redistribute it and/or modify it under the terms
+* of the GNU General Public License as published by the Free Software Found-
+* ation, either version 3 of the License, or (at your option) any later version.
+*
+* RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+* PURPOSE. See the GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License along with RetroArch.
+* If not, see .
+*/
+
#include "iosupport.h"
#include "undocumented.h"
@@ -9,26 +22,7 @@
#define CTLCODE(DeviceType, Function, Method, Access) ( ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) )
#define FSCTL_DISMOUNT_VOLUME CTLCODE( FILE_DEVICE_FILE_SYSTEM, 0x08, METHOD_BUFFERED, FILE_ANY_ACCESS )
-//////////////////////////////////////////////////////////////////////
-// Construction/Destruction
-//////////////////////////////////////////////////////////////////////
-
-CIoSupport g_IOSupport;
-
-CIoSupport::CIoSupport()
-{
- m_dwLastTrayState = 0;
-}
-
-CIoSupport::~CIoSupport()
-{
-
-}
-
-// szDrive e.g. "D:"
-// szDevice e.g. "Cdrom0" or "Harddisk0\Partition6"
-
-HRESULT CIoSupport::Mount(char *szDrive, char *szDevice)
+HRESULT xbox_io_mount(char *szDrive, char *szDevice)
{
char szSourceDevice[48];
char szDestinationDrive[16];
@@ -55,11 +49,7 @@ HRESULT CIoSupport::Mount(char *szDrive, char *szDevice)
return S_OK;
}
-
-
-// szDrive e.g. "D:"
-
-HRESULT CIoSupport::Unmount(char *szDrive)
+HRESULT xbox_io_unmount(char *szDrive)
{
char szDestinationDrive[16];
snprintf(szDestinationDrive, sizeof(szDestinationDrive), "\\??\\%s", szDrive);
@@ -76,12 +66,12 @@ HRESULT CIoSupport::Unmount(char *szDrive)
return S_OK;
}
-HRESULT CIoSupport::Remount(char *szDrive, char *szDevice)
+HRESULT xbox_io_remount(char *szDrive, char *szDevice)
{
char szSourceDevice[48];
snprintf(szSourceDevice, sizeof(szSourceDevice), "\\Device\\%s", szDevice);
- Unmount(szDrive);
+ xbox_io_unmount(szDrive);
ANSI_STRING filename;
OBJECT_ATTRIBUTES attributes;
@@ -108,12 +98,12 @@ HRESULT CIoSupport::Remount(char *szDrive, char *szDevice)
}
CloseHandle(hDevice);
- Mount(szDrive, szDevice);
+ xbox_io_mount(szDrive, szDevice);
return S_OK;
}
-HRESULT CIoSupport::Remap(char *szMapping)
+HRESULT xbox_io_remap(char *szMapping)
{
char szMap[32];
strlcpy(szMap, szMapping, sizeof(szMap));
@@ -124,62 +114,15 @@ HRESULT CIoSupport::Remap(char *szMapping)
*pComma = 0;
// map device to drive letter
- Unmount(szMap);
- Mount(szMap, &pComma[1]);
+ xbox_io_unmount(szMap);
+ xbox_io_mount(szMap, &pComma[1]);
return S_OK;
}
return E_FAIL;
}
-
-HRESULT CIoSupport::EjectTray()
-{
- HalWriteSMBusValue(0x20, 0x0C, FALSE, 0); // eject tray
- return S_OK;
-}
-
-HRESULT CIoSupport::CloseTray()
-{
- HalWriteSMBusValue(0x20, 0x0C, FALSE, 1); // close tray
- return S_OK;
-}
-
-DWORD CIoSupport::GetTrayState()
-{
- HalReadSMCTrayState(&m_dwTrayState, &m_dwTrayCount);
-
- if(m_dwTrayState == TRAY_CLOSED_MEDIA_PRESENT)
- {
- if (m_dwLastTrayState != TRAY_CLOSED_MEDIA_PRESENT)
- {
- m_dwLastTrayState = m_dwTrayState;
- return DRIVE_CLOSED_MEDIA_PRESENT;
- }
- else
- {
- return DRIVE_READY;
- }
- }
- else if(m_dwTrayState == TRAY_CLOSED_NO_MEDIA)
- {
- m_dwLastTrayState = m_dwTrayState;
- return DRIVE_CLOSED_NO_MEDIA;
- }
- else if(m_dwTrayState == TRAY_OPEN)
- {
- m_dwLastTrayState = m_dwTrayState;
- return DRIVE_OPEN;
- }
- else
- {
- m_dwLastTrayState = m_dwTrayState;
- }
-
- return DRIVE_NOT_READY;
-}
-
-HRESULT CIoSupport::Shutdown()
+HRESULT xbox_io_shutdown(void)
{
HalInitiateShutdown();
return S_OK;
diff --git a/xbox1/frontend/RetroLaunch/IoSupport.h b/xbox1/frontend/RetroLaunch/IoSupport.h
index eb3caf5ec9..7db59f7ce5 100644
--- a/xbox1/frontend/RetroLaunch/IoSupport.h
+++ b/xbox1/frontend/RetroLaunch/IoSupport.h
@@ -1,48 +1,30 @@
-// IoSupport.h: interface for the CIoSupport class.
-//
-//////////////////////////////////////////////////////////////////////
+/* RetroArch - A frontend for libretro.
+* Copyright (C) 2010-2012 - Hans-Kristian Arntzen
+* Copyright (C) 2011-2012 - Daniel De Matteis
+*
+* RetroArch is free software: you can redistribute it and/or modify it under the terms
+* of the GNU General Public License as published by the Free Software Found-
+* ation, either version 3 of the License, or (at your option) any later version.
+*
+* RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+* PURPOSE. See the GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License along with RetroArch.
+* If not, see .
+*/
-#if !defined(AFX_IOSUPPORT_H__F084A488_BD6E_49D5_8CD3_0BE62149DB40__INCLUDED_)
-#define AFX_IOSUPPORT_H__F084A488_BD6E_49D5_8CD3_0BE62149DB40__INCLUDED_
+#ifndef _XBOX_IO_SUPPORT_H
+#define _XBOX_IO_SUPPORT_H
-#if _MSC_VER > 1000
-#pragma once
-#endif // _MSC_VER > 1000
#ifdef _XBOX
#include
-#define TRAY_OPEN 16
-#define TRAY_CLOSED_NO_MEDIA 64
-#define TRAY_CLOSED_MEDIA_PRESENT 96
-
-#define DRIVE_OPEN 0 // Open...
-#define DRIVE_NOT_READY 1 // Opening.. Closing...
-#define DRIVE_READY 2
-#define DRIVE_CLOSED_NO_MEDIA 3 // CLOSED...but no media in drive
-#define DRIVE_CLOSED_MEDIA_PRESENT 4 // Will be send once when the drive just have closed
-
-class CIoSupport
-{
-public:
- CIoSupport();
- virtual ~CIoSupport();
-
- HRESULT Mount(char *szDrive, char *szDevice);
- HRESULT Unmount(char *szDrive);
-
- HRESULT Remount(char *szDrive, char *szDevice);
- HRESULT Remap(char *szMapping);
-
- DWORD GetTrayState();
- HRESULT EjectTray();
- HRESULT CloseTray();
- HRESULT Shutdown();
-private:
- DWORD m_dwTrayState;
- DWORD m_dwTrayCount;
- DWORD m_dwLastTrayState;
-};
-
-extern CIoSupport g_IOSupport;
+HRESULT xbox_io_mount(char *szdrive, char *szdevice);
+HRESULT xbox_io_unmount(char *szdrive, char *szdevice);
+HRESULT xbox_io_remount(char *szdrive, char *szdevice);
+HRESULT xbox_io_remap(char *szmapping);
+HRESULT xbox_io_shutdown(void);
+#endif
+
#endif
-#endif // !defined(AFX_IOSUPPORT_H__F084A488_BD6E_49D5_8CD3_0BE62149DB40__INCLUDED_)
diff --git a/xbox1/frontend/menu.cpp b/xbox1/frontend/menu.cpp
index a2d8239526..7ef8c75b1f 100644
--- a/xbox1/frontend/menu.cpp
+++ b/xbox1/frontend/menu.cpp
@@ -226,11 +226,11 @@ int menu_init(void)
XSetFileCacheSize(8 * 1024 * 1024);
// Mount drives
- g_IOSupport.Mount("A:", "cdrom0");
- g_IOSupport.Mount("E:", "Harddisk0\\Partition1");
- g_IOSupport.Mount("Z:", "Harddisk0\\Partition2");
- g_IOSupport.Mount("F:", "Harddisk0\\Partition6");
- g_IOSupport.Mount("G:", "Harddisk0\\Partition7");
+ xbox_io_mount("A:", "cdrom0");
+ xbox_io_mount("E:", "Harddisk0\\Partition1");
+ xbox_io_mount("Z:", "Harddisk0\\Partition2");
+ xbox_io_mount("F:", "Harddisk0\\Partition6");
+ xbox_io_mount("G:", "Harddisk0\\Partition7");
strlcpy(browser.extensions, rarch_console_get_rom_ext(), sizeof(browser.extensions));
filebrowser_set_root(&browser, g_console.default_rom_startup_dir);