Merge remote-tracking branch 'origin/master' into pandora
|
@ -141,7 +141,9 @@ bool CHDDisc::TryOpen(wchar* file)
|
|||
if (total_frames!=549300 || tracks.size()<3)
|
||||
{
|
||||
printf("WARNING: chd: Total frames is wrong: %d frames in %d tracks\n",total_frames,tracks.size());
|
||||
#ifndef NOT_REICAST
|
||||
msgboxf("This is an improper dump!",MBX_ICONEXCLAMATION);
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -25,8 +25,12 @@ u8 q_subchannel[96];
|
|||
|
||||
void PatchRegion_0(u8* sector,int size)
|
||||
{
|
||||
#ifndef NOT_REICAST
|
||||
if (settings.imgread.PatchRegion==0)
|
||||
return;
|
||||
#else
|
||||
return;
|
||||
#endif
|
||||
|
||||
u8* usersect=sector;
|
||||
|
||||
|
@ -41,8 +45,12 @@ void PatchRegion_0(u8* sector,int size)
|
|||
}
|
||||
void PatchRegion_6(u8* sector,int size)
|
||||
{
|
||||
#ifndef NOT_REICAST
|
||||
if (settings.imgread.PatchRegion==0)
|
||||
return;
|
||||
#else
|
||||
return;
|
||||
#endif
|
||||
|
||||
u8* usersect=sector;
|
||||
|
||||
|
@ -121,18 +129,29 @@ bool ConvertSector(u8* in_buff , u8* out_buff , int from , int to,int sector)
|
|||
return true;
|
||||
}
|
||||
|
||||
Disc* OpenDisc(wchar* fn)
|
||||
{
|
||||
Disc* rv;
|
||||
|
||||
for (int i=0;drivers[i] && !(rv=drivers[i](fn));i++) ;
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
bool InitDrive_(wchar* fn)
|
||||
{
|
||||
TermDrive();
|
||||
|
||||
//try all drivers
|
||||
for (int i=0;drivers[i] && !(disc=drivers[i](fn));i++) ;
|
||||
disc = OpenDisc(fn);
|
||||
|
||||
if (disc!=0)
|
||||
{
|
||||
printf("gdrom: Opened image \"%s\"\n",fn);
|
||||
NullDriveDiscType=Busy;
|
||||
#ifndef NOT_REICAST
|
||||
libCore_gdrom_disc_change();
|
||||
#endif
|
||||
// Sleep(400); //busy for a bit // what, really ?
|
||||
return true;
|
||||
}
|
||||
|
@ -144,6 +163,7 @@ bool InitDrive_(wchar* fn)
|
|||
return false;
|
||||
}
|
||||
|
||||
#ifndef NOT_REICAST
|
||||
bool InitDrive(u32 fileflags)
|
||||
{
|
||||
if (settings.imgread.LoadDefaultImage)
|
||||
|
@ -185,11 +205,11 @@ bool InitDrive(u32 fileflags)
|
|||
if (!InitDrive_(fn))
|
||||
{
|
||||
//msgboxf("Selected image failed to load",MBX_ICONERROR);
|
||||
NullDriveDiscType=NoDisk;
|
||||
gd_setdisc();
|
||||
sns_asc=0x29;
|
||||
sns_ascq=0x00;
|
||||
sns_key=0x6;
|
||||
NullDriveDiscType=NoDisk;
|
||||
gd_setdisc();
|
||||
sns_asc=0x29;
|
||||
sns_ascq=0x00;
|
||||
sns_key=0x6;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
|
@ -257,6 +277,7 @@ bool DiscSwap(u32 fileflags)
|
|||
return true;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void TermDrive()
|
||||
{
|
||||
|
|
|
@ -240,7 +240,7 @@ struct Disc
|
|||
{
|
||||
u32 fmt=tracks[i].CTRL==4?2048:2352;
|
||||
char fsto[1024];
|
||||
sprintf(fsto,"%s%s%d.img",path.c_str(),"track",i);
|
||||
sprintf(fsto,"%s%s%d.img",path.c_str(),".track",i);
|
||||
|
||||
FILE* fo=fopen(fsto,"wb");
|
||||
|
||||
|
@ -257,6 +257,8 @@ struct Disc
|
|||
|
||||
extern Disc* disc;
|
||||
|
||||
Disc* OpenDisc(wchar* fn);
|
||||
|
||||
struct RawTrackFile : TrackFile
|
||||
{
|
||||
FILE* file;
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gdtool", "gdtool.vcxproj", "{D56D49D9-3FA6-4463-8C96-925956E21FB0}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Release|Win32 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{D56D49D9-3FA6-4463-8C96-925956E21FB0}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{D56D49D9-3FA6-4463-8C96-925956E21FB0}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{D56D49D9-3FA6-4463-8C96-925956E21FB0}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{D56D49D9-3FA6-4463-8C96-925956E21FB0}.Release|Win32.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
|
@ -0,0 +1,140 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{D56D49D9-3FA6-4463-8C96-925956E21FB0}</ProjectGuid>
|
||||
<RootNamespace>gdtool</RootNamespace>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup />
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>$(ProjectDir)..\core\;$(ProjectDir)..\core\deps\;$(ProjectDir)src\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>NOT_REICAST;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<AdditionalIncludeDirectories>$(ProjectDir)..\core\;$(ProjectDir)..\core\deps\;$(ProjectDir)src\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>NOT_REICAST;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\core\deps\chdpsr\cdipsr.cpp" />
|
||||
<ClCompile Include="..\core\deps\chdr\chdr.cpp" />
|
||||
<ClCompile Include="..\core\deps\crypto\md5.cpp" />
|
||||
<ClCompile Include="..\core\deps\crypto\sha1.cpp" />
|
||||
<ClCompile Include="..\core\deps\libpng\png.c" />
|
||||
<ClCompile Include="..\core\deps\libpng\pngerror.c" />
|
||||
<ClCompile Include="..\core\deps\libpng\pngget.c" />
|
||||
<ClCompile Include="..\core\deps\libpng\pngmem.c" />
|
||||
<ClCompile Include="..\core\deps\libpng\pngpread.c" />
|
||||
<ClCompile Include="..\core\deps\libpng\pngread.c" />
|
||||
<ClCompile Include="..\core\deps\libpng\pngrio.c" />
|
||||
<ClCompile Include="..\core\deps\libpng\pngrtran.c" />
|
||||
<ClCompile Include="..\core\deps\libpng\pngrutil.c" />
|
||||
<ClCompile Include="..\core\deps\libpng\pngset.c" />
|
||||
<ClCompile Include="..\core\deps\libpng\pngtrans.c" />
|
||||
<ClCompile Include="..\core\deps\libpng\pngwio.c" />
|
||||
<ClCompile Include="..\core\deps\libpng\pngwrite.c" />
|
||||
<ClCompile Include="..\core\deps\libpng\pngwtran.c" />
|
||||
<ClCompile Include="..\core\deps\libpng\pngwutil.c" />
|
||||
<ClCompile Include="..\core\deps\zlib\adler32.c" />
|
||||
<ClCompile Include="..\core\deps\zlib\compress.c" />
|
||||
<ClCompile Include="..\core\deps\zlib\crc32.c" />
|
||||
<ClCompile Include="..\core\deps\zlib\deflate.c" />
|
||||
<ClCompile Include="..\core\deps\zlib\infback.c" />
|
||||
<ClCompile Include="..\core\deps\zlib\inffast.c" />
|
||||
<ClCompile Include="..\core\deps\zlib\inflate.c" />
|
||||
<ClCompile Include="..\core\deps\zlib\inftrees.c" />
|
||||
<ClCompile Include="..\core\deps\zlib\trees.c" />
|
||||
<ClCompile Include="..\core\deps\zlib\uncompr.c" />
|
||||
<ClCompile Include="..\core\deps\zlib\zutil.c" />
|
||||
<ClCompile Include="..\core\imgread\cdi.cpp" />
|
||||
<ClCompile Include="..\core\imgread\chd.cpp" />
|
||||
<ClCompile Include="..\core\imgread\common.cpp" />
|
||||
<ClCompile Include="..\core\imgread\gdi.cpp" />
|
||||
<ClCompile Include="..\core\imgread\ImgReader.cpp">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\imgread\ioctl.cpp" />
|
||||
<ClCompile Include="src\cdromfs.cpp" />
|
||||
<ClCompile Include="src\main.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\core\deps\chdpsr\cdipsr.h" />
|
||||
<ClInclude Include="..\core\deps\chdr\chd.h" />
|
||||
<ClInclude Include="..\core\deps\chdr\coretypes.h" />
|
||||
<ClInclude Include="..\core\deps\crypto\md5.h" />
|
||||
<ClInclude Include="..\core\deps\crypto\sha1.h" />
|
||||
<ClInclude Include="..\core\deps\libpng\config.h" />
|
||||
<ClInclude Include="..\core\deps\libpng\png.h" />
|
||||
<ClInclude Include="..\core\deps\libpng\pngconf.h" />
|
||||
<ClInclude Include="..\core\deps\libpng\pngpriv.h" />
|
||||
<ClInclude Include="..\core\deps\zlib\crc32.h" />
|
||||
<ClInclude Include="..\core\deps\zlib\deflate.h" />
|
||||
<ClInclude Include="..\core\deps\zlib\inffast.h" />
|
||||
<ClInclude Include="..\core\deps\zlib\inffixed.h" />
|
||||
<ClInclude Include="..\core\deps\zlib\inflate.h" />
|
||||
<ClInclude Include="..\core\deps\zlib\inftrees.h" />
|
||||
<ClInclude Include="..\core\deps\zlib\trees.h" />
|
||||
<ClInclude Include="..\core\deps\zlib\zconf.h" />
|
||||
<ClInclude Include="..\core\deps\zlib\zconf.in.h" />
|
||||
<ClInclude Include="..\core\deps\zlib\zlib.h" />
|
||||
<ClInclude Include="..\core\deps\zlib\zutil.h" />
|
||||
<ClInclude Include="..\core\imgread\common.h" />
|
||||
<ClInclude Include="..\core\imgread\gd_driver.h" />
|
||||
<ClInclude Include="..\core\imgread\ImgReader.h" />
|
||||
<ClInclude Include="..\core\imgread\SCSIDEFS.H" />
|
||||
<ClInclude Include="src\cdromfs.h" />
|
||||
<ClInclude Include="src\cdromfs_imp.h" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
|
@ -0,0 +1,225 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\core\imgread\cdi.cpp">
|
||||
<Filter>imgread</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\imgread\chd.cpp">
|
||||
<Filter>imgread</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\imgread\common.cpp">
|
||||
<Filter>imgread</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\imgread\gdi.cpp">
|
||||
<Filter>imgread</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\imgread\ImgReader.cpp">
|
||||
<Filter>imgread</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\imgread\ioctl.cpp">
|
||||
<Filter>imgread</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\deps\chdpsr\cdipsr.cpp">
|
||||
<Filter>deps\chdpsr</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\deps\chdr\chdr.cpp">
|
||||
<Filter>deps\chdr</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\deps\libpng\png.c">
|
||||
<Filter>deps\libpng</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\deps\libpng\pngerror.c">
|
||||
<Filter>deps\libpng</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\deps\libpng\pngget.c">
|
||||
<Filter>deps\libpng</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\deps\libpng\pngmem.c">
|
||||
<Filter>deps\libpng</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\deps\libpng\pngpread.c">
|
||||
<Filter>deps\libpng</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\deps\libpng\pngread.c">
|
||||
<Filter>deps\libpng</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\deps\libpng\pngrio.c">
|
||||
<Filter>deps\libpng</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\deps\libpng\pngrtran.c">
|
||||
<Filter>deps\libpng</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\deps\libpng\pngrutil.c">
|
||||
<Filter>deps\libpng</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\deps\libpng\pngset.c">
|
||||
<Filter>deps\libpng</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\deps\libpng\pngtrans.c">
|
||||
<Filter>deps\libpng</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\deps\libpng\pngwio.c">
|
||||
<Filter>deps\libpng</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\deps\libpng\pngwrite.c">
|
||||
<Filter>deps\libpng</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\deps\libpng\pngwtran.c">
|
||||
<Filter>deps\libpng</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\deps\libpng\pngwutil.c">
|
||||
<Filter>deps\libpng</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\deps\zlib\adler32.c">
|
||||
<Filter>deps\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\deps\zlib\compress.c">
|
||||
<Filter>deps\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\deps\zlib\crc32.c">
|
||||
<Filter>deps\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\deps\zlib\deflate.c">
|
||||
<Filter>deps\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\deps\zlib\infback.c">
|
||||
<Filter>deps\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\deps\zlib\inffast.c">
|
||||
<Filter>deps\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\deps\zlib\inflate.c">
|
||||
<Filter>deps\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\deps\zlib\inftrees.c">
|
||||
<Filter>deps\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\deps\zlib\trees.c">
|
||||
<Filter>deps\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\deps\zlib\uncompr.c">
|
||||
<Filter>deps\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\deps\zlib\zutil.c">
|
||||
<Filter>deps\zlib</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\deps\crypto\md5.cpp">
|
||||
<Filter>deps\crypto</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\core\deps\crypto\sha1.cpp">
|
||||
<Filter>deps\crypto</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\main.cpp">
|
||||
<Filter>src</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\cdromfs.cpp">
|
||||
<Filter>src</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\core\imgread\SCSIDEFS.H">
|
||||
<Filter>imgread</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\core\imgread\common.h">
|
||||
<Filter>imgread</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\core\imgread\gd_driver.h">
|
||||
<Filter>imgread</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\core\imgread\ImgReader.h">
|
||||
<Filter>imgread</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\core\deps\chdpsr\cdipsr.h">
|
||||
<Filter>deps\chdpsr</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\core\deps\chdr\chd.h">
|
||||
<Filter>deps\chdr</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\core\deps\chdr\coretypes.h">
|
||||
<Filter>deps\chdr</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\core\deps\libpng\config.h">
|
||||
<Filter>deps\libpng</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\core\deps\libpng\png.h">
|
||||
<Filter>deps\libpng</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\core\deps\libpng\pngconf.h">
|
||||
<Filter>deps\libpng</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\core\deps\libpng\pngpriv.h">
|
||||
<Filter>deps\libpng</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\core\deps\zlib\crc32.h">
|
||||
<Filter>deps\zlib</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\core\deps\zlib\deflate.h">
|
||||
<Filter>deps\zlib</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\core\deps\zlib\inffast.h">
|
||||
<Filter>deps\zlib</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\core\deps\zlib\inffixed.h">
|
||||
<Filter>deps\zlib</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\core\deps\zlib\inflate.h">
|
||||
<Filter>deps\zlib</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\core\deps\zlib\inftrees.h">
|
||||
<Filter>deps\zlib</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\core\deps\zlib\trees.h">
|
||||
<Filter>deps\zlib</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\core\deps\zlib\zconf.h">
|
||||
<Filter>deps\zlib</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\core\deps\zlib\zconf.in.h">
|
||||
<Filter>deps\zlib</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\core\deps\zlib\zlib.h">
|
||||
<Filter>deps\zlib</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\core\deps\zlib\zutil.h">
|
||||
<Filter>deps\zlib</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\core\deps\crypto\md5.h">
|
||||
<Filter>deps\crypto</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\core\deps\crypto\sha1.h">
|
||||
<Filter>deps\crypto</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\cdromfs.h">
|
||||
<Filter>src</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\cdromfs_imp.h">
|
||||
<Filter>src</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Filter Include="imgread">
|
||||
<UniqueIdentifier>{c4ea89a6-8345-4dfd-a0c0-13353b12ba06}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="src">
|
||||
<UniqueIdentifier>{03cf0701-ea11-401c-aed7-53fa207cc55f}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="deps">
|
||||
<UniqueIdentifier>{c7643803-9308-49d9-a780-30671edc007c}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="deps\chdpsr">
|
||||
<UniqueIdentifier>{bac3e17f-8d1c-4aca-99cc-5735b171ca60}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="deps\chdr">
|
||||
<UniqueIdentifier>{d369171a-5aed-4b64-b4ed-f76525f508ad}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="deps\libpng">
|
||||
<UniqueIdentifier>{51b1b4a5-1788-411d-b879-4ccd78be8a35}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="deps\zlib">
|
||||
<UniqueIdentifier>{777115e4-4c86-4a7e-92e4-ebe90918e09e}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="deps\crypto">
|
||||
<UniqueIdentifier>{a78ba9fb-70ba-4319-89e7-926abca0794c}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LocalDebuggerCommandArguments>c:\ika.chd</LocalDebuggerCommandArguments>
|
||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||
</PropertyGroup>
|
||||
</Project>
|
|
@ -0,0 +1,573 @@
|
|||
/*
|
||||
hacked from http://collaboration.cmc.ec.gc.ca/science/rpn/biblio/ddj/Website/articles/DDJ/1992/9212/9212i/9212i.htm
|
||||
Is this bsd + adv license?
|
||||
|
||||
*/
|
||||
|
||||
#include "types.h"
|
||||
#include "cdromfs_imp.h"
|
||||
|
||||
|
||||
/* cdromcat -- A simple program to interpret the CDROM filesystem, and return.
|
||||
* the contents of the file (directories are formatted and printed, files are
|
||||
* returned untranslated). */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
#include "cdromfs.h"
|
||||
|
||||
/* volume descriptor types -- type field of each descriptor */
|
||||
#define VD_PRIMARY 1
|
||||
#define VD_END 255
|
||||
|
||||
/* ISO 9660 primary descriptor */
|
||||
#define ISODCL(from, to) (to - from + 1)
|
||||
|
||||
#define ISO_STANDARD_ID "CD001"
|
||||
|
||||
struct iso_primary_descriptor {
|
||||
char type [ISODCL ( 1, 1)];
|
||||
char id [ISODCL ( 2, 6)];
|
||||
char version [ISODCL ( 7, 7)];
|
||||
char reserved1 [ISODCL ( 8, 8)];
|
||||
char system_id [ISODCL ( 9, 40)]; /* achars */
|
||||
char volume_id [ISODCL ( 41, 72)]; /* dchars */
|
||||
char reserved2 [ISODCL ( 73, 80)];
|
||||
char volume_space_size [ISODCL ( 81, 88)];
|
||||
char reserved3 [ISODCL ( 89, 120)];
|
||||
char volume_set_size [ISODCL (121, 124)];
|
||||
char volume_sequence_number [ISODCL (125, 128)];
|
||||
char logical_block_size [ISODCL (129, 132)];
|
||||
char path_table_size [ISODCL (133, 140)];
|
||||
char type_1_path_table [ISODCL (141, 144)];
|
||||
char opt_type_1_path_table [ISODCL (145, 148)];
|
||||
char type_m_path_table [ISODCL (149, 152)];
|
||||
char opt_type_m_path_table [ISODCL (153, 156)];
|
||||
char root_directory_record [ISODCL (157, 190)];
|
||||
char volume_set_id [ISODCL (191, 318)]; /* dchars */
|
||||
char publisher_id [ISODCL (319, 446)]; /* achars */
|
||||
char preparer_id [ISODCL (447, 574)]; /* achars */
|
||||
char application_id [ISODCL (575, 702)]; /* achars */
|
||||
char copyright_file_id [ISODCL (703, 739)]; /* dchars */
|
||||
char abstract_file_id [ISODCL (740, 776)]; /* dchars */
|
||||
char bibliographic_file_id [ISODCL (777, 813)]; /* dchars */
|
||||
char creation_date [ISODCL (814, 830)];
|
||||
char modification_date [ISODCL (831, 847)];
|
||||
char expiration_date [ISODCL (848, 864)];
|
||||
char effective_date [ISODCL (865, 881)];
|
||||
char file_structure_version [ISODCL (882, 882)];
|
||||
char reserved4 [ISODCL (883, 883)];
|
||||
char application_data [ISODCL (884, 1395)];
|
||||
char reserved5 [ISODCL (1396, 2048)];
|
||||
|
||||
};
|
||||
|
||||
|
||||
/* High Sierra format primary descriptor */
|
||||
#define HSFDCL(from, to) (to - from + 1)
|
||||
|
||||
#define HSF_STANDARD_ID "CDROM"
|
||||
|
||||
struct hsf_primary_descriptor {
|
||||
char volume_lbn [HSFDCL ( 1, 8)];
|
||||
char type [HSFDCL ( 9, 9)];
|
||||
char id [HSFDCL ( 10, 14)];
|
||||
char version [HSFDCL ( 15, 15)];
|
||||
char reserved1 [HSFDCL ( 16, 16)];
|
||||
char system_id [HSFDCL ( 17, 48)]; /* achars */
|
||||
char volume_id [HSFDCL ( 49, 80)]; /* dchars */
|
||||
char reserved2 [HSFDCL ( 81, 88)];
|
||||
char volume_space_size [HSFDCL ( 89, 96)];
|
||||
char reserved3 [HSFDCL ( 97, 128)];
|
||||
char volume_set_size [HSFDCL (129, 132)];
|
||||
char volume_sequence_number [HSFDCL (133, 136)];
|
||||
char logical_block_size [HSFDCL (137, 140)];
|
||||
char path_table_size [HSFDCL (141, 148)];
|
||||
char manditory_path_table_lsb [HSFDCL (149, 152)];
|
||||
char opt_path_table_lsb_1 [HSFDCL (153, 156)];
|
||||
char opt_path_table_lsb_2 [HSFDCL (157, 160)];
|
||||
char opt_path_table_lsb_3 [HSFDCL (161, 164)];
|
||||
char manditory_path_table_msb [HSFDCL (165, 168)];
|
||||
char opt_path_table_msb_1 [HSFDCL (169, 172)];
|
||||
char opt_path_table_msb_2 [HSFDCL (173, 176)];
|
||||
char opt_path_table_msb_3 [HSFDCL (177, 180)];
|
||||
char root_directory_record [HSFDCL (181, 214)];
|
||||
char volume_set_id [HSFDCL (215, 342)]; /* dchars */
|
||||
char publisher_id [HSFDCL (343, 470)]; /* achars */
|
||||
char preparer_id [HSFDCL (471, 598)]; /* achars */
|
||||
char application_id [HSFDCL (599, 726)]; /* achars */
|
||||
char copyright_file_id [HSFDCL (727, 758)]; /* dchars */
|
||||
char abstract_file_id [HSFDCL (759, 790)]; /* dchars */
|
||||
char creation_date [HSFDCL (791, 806)];
|
||||
char modification_date [HSFDCL (807, 822)];
|
||||
char expiration_date [HSFDCL (823, 838)];
|
||||
char effective_date [HSFDCL (839, 854)];
|
||||
char file_structure_version [HSFDCL (855, 855)];
|
||||
char reserved4 [HSFDCL (856, 856)];
|
||||
char application_data [HSFDCL (857, 1368)];
|
||||
char reserved5 [HSFDCL (1369, 2048)];
|
||||
};
|
||||
|
||||
/* CDROM file system directory entries */
|
||||
|
||||
/* file flags: */
|
||||
#define CD_VISABLE 0x01 /* file name is hidden or visable to user */
|
||||
#define CD_DIRECTORY 0x02 /* file is a directory and contains entries */
|
||||
#define CD_ASSOCIATED 0x04/* file is opaque to filesystem, visable
|
||||
to system implementation */
|
||||
#define CD_EAHSFRECORD 0x04 /* file has HSF extended attribute record
|
||||
fmt */
|
||||
#define CD_PROTECTION 0x04 /* used extended attributes for protection */
|
||||
#define CD_ANOTHEREXTNT 0x80 /* file has at least one more extent */
|
||||
|
||||
struct iso_directory_record {
|
||||
char length [ISODCL (1, 1)];
|
||||
char ext_attr_length [ISODCL (2, 2)];
|
||||
char extent [ISODCL (3, 10)];
|
||||
char size [ISODCL (11, 18)];
|
||||
char date [ISODCL (19, 25)];
|
||||
char flags [ISODCL (26, 26)];
|
||||
char file_unit_size [ISODCL (27, 27)];
|
||||
char interleave [ISODCL (28, 28)];
|
||||
char volume_sequence_number [ISODCL (29, 32)];
|
||||
char name_len [ISODCL (33, 33)];
|
||||
/*char name [0];*/
|
||||
char* name() { return (char*)this+sizeof(*this); }
|
||||
|
||||
};
|
||||
|
||||
struct hsf_directory_record {
|
||||
|
||||
char length [HSFDCL (1, 1)];
|
||||
char ext_attr_length [HSFDCL (2, 2)];
|
||||
char extent [HSFDCL (3, 10)];
|
||||
char size [HSFDCL (11, 18)];
|
||||
char date [HSFDCL (19, 24)];
|
||||
char flags [HSFDCL (25, 25)];
|
||||
char reserved1 [HSFDCL (26, 26)];
|
||||
char interleave_size [HSFDCL (27, 27)];
|
||||
char interleave [HSFDCL (28, 28)];
|
||||
char volume_sequence_number [HSFDCL (29, 32)];
|
||||
char name_len [HSFDCL (33, 33)];
|
||||
/*char name [0];*/
|
||||
char* name() { return (char*)this+sizeof(*this); }
|
||||
};
|
||||
|
||||
/* per filesystem information */
|
||||
struct fs {
|
||||
char *name; /* kind of cdrom filesystem */
|
||||
cdimage* fd; /* open file descriptor */
|
||||
int lbs; /* logical block size */
|
||||
int type; /* which flavor */
|
||||
};
|
||||
|
||||
union fsdir {
|
||||
struct iso_directory_record iso_dir;
|
||||
struct hsf_directory_record hsf_dir;
|
||||
};
|
||||
|
||||
/* filesystem directory entry */
|
||||
struct directent {
|
||||
union {
|
||||
struct iso_directory_record iso_dir;
|
||||
struct hsf_directory_record hsf_dir;
|
||||
} fsd;
|
||||
/* actually, name contains name, reserved field, and extensions area */
|
||||
char name[255 - sizeof(union fsdir)/*32*/];
|
||||
};
|
||||
|
||||
/* filesystem volume descriptors */
|
||||
union voldesc {
|
||||
struct iso_primary_descriptor iso_desc;
|
||||
struct hsf_primary_descriptor hsf_desc;
|
||||
};
|
||||
|
||||
char *iso_astring(char *, int len);
|
||||
char *cdrom_time(struct cdromtime *, int);
|
||||
void printdirent(struct directent *, struct fs *);
|
||||
void printdirents(struct directent *, struct fs *);
|
||||
void printdirentheader(char *p);
|
||||
int searchdirent(struct directent *, struct directent *, struct directent *,
|
||||
struct fs *);
|
||||
void extractdirent(struct directent *, struct fs *, data_callback* dcb, void* dcbctx);
|
||||
int lookup(struct directent *, struct directent *, char *, struct fs *);
|
||||
/* "fetch directory value" */
|
||||
#define FDV(b, f, t) (((t) == ISO) ? (b)->fsd.iso_dir.##f \
|
||||
: (b)->fsd.hsf_dir.##f)
|
||||
/* "fetch primary descriptor value" */
|
||||
#define FPDV(b, f, t) (((t) == ISO) ? (b)->iso_desc.##f \
|
||||
: (b)->hsf_desc.##f)
|
||||
|
||||
/* ----------- Filesystem primatives ------------------- */
|
||||
/* Check for the presence of a cdrom filesystem. If present, pass back
|
||||
* parameters for initialization, otherwise, pass back error. */
|
||||
int
|
||||
iscdromfs(struct directent *dp, struct fs *fs, int scan_from) {
|
||||
char buffer[CDROM_LSECSZ];
|
||||
union voldesc *vdp = (union voldesc *) buffer;
|
||||
/* locate at the beginning of the descriptor table */
|
||||
fs->fd->seek((scan_from + VD_LSN)*CDROM_LSECSZ);
|
||||
/* walk descriptor table */
|
||||
for(;;) {
|
||||
unsigned char type;
|
||||
/* obtain a descriptor */
|
||||
fs->fd->read(buffer, sizeof(buffer));
|
||||
/* determine ISO or HSF format of CDROM */
|
||||
if (fs->type == 0) {
|
||||
if (strncmp (vdp->iso_desc.id, ISO_STANDARD_ID,
|
||||
sizeof(vdp->iso_desc.id)) == 0)
|
||||
fs->type = ISO;
|
||||
if (strncmp (vdp->hsf_desc.id, HSF_STANDARD_ID,
|
||||
sizeof(vdp->hsf_desc.id)) == 0)
|
||||
fs->type = HSF;
|
||||
}
|
||||
/* if determined, obtain root directory entry */
|
||||
if (fs->type) {
|
||||
type = ISO_BY(FPDV(vdp, type, fs->type));
|
||||
if (type == VD_PRIMARY) {
|
||||
memcpy (
|
||||
dp,FPDV(vdp, root_directory_record, fs->type),
|
||||
sizeof (union fsdir));
|
||||
fs->lbs =
|
||||
ISO_HWD(FPDV(vdp, logical_block_size, fs->type));
|
||||
}
|
||||
}
|
||||
/* terminating volume */
|
||||
if (type == VD_END)
|
||||
break;
|
||||
}
|
||||
fs->name = cdromfmtnames[fs->type];
|
||||
return (fs->type);
|
||||
}
|
||||
/* Obtain a "logical", i.e. relative to the directory entries beginning
|
||||
* (or extent), block from the CDROM. */
|
||||
int
|
||||
getblkdirent(struct directent *dp, char *contents, long lbn, struct fs *fs) {
|
||||
long filesize = ISO_WD(FDV(dp, size, fs->type)),
|
||||
extent = ISO_WD(FDV(dp, extent, fs->type));
|
||||
if (lbntob(fs, lbn) > roundup(filesize, fs->lbs))
|
||||
return (0);
|
||||
/* perform logical to physical translation */
|
||||
(void) fs->fd->seek(lbntob(fs, extent + lbn));
|
||||
/* obtain block */
|
||||
return (fs->fd->read(contents, fs->lbs) == fs->lbs);
|
||||
}
|
||||
/* Search the contents of this directory entry, known to be a directory itself,
|
||||
* looking for a component. If found, return directory entry associated with
|
||||
* the component. */
|
||||
int
|
||||
searchdirent(struct directent *dp, struct directent *fdp,
|
||||
struct directent *compdp, struct fs *fs) {
|
||||
struct directent *ldp;
|
||||
long filesize = ISO_WD(FDV(dp, size, fs->type)),
|
||||
comp_namelen = ISO_BY(FDV(compdp, name_len, fs->type)),
|
||||
lbn = 0, cnt;
|
||||
char *buffer = (char *) malloc(fs->lbs);
|
||||
while (getblkdirent(dp, buffer, lbn, fs)) {
|
||||
cnt = filesize > fs->lbs ? fs->lbs : filesize;
|
||||
filesize -= cnt;
|
||||
ldp = (struct directent *) buffer;
|
||||
/* have we a record to match? */
|
||||
while (cnt > sizeof (union fsdir)) {
|
||||
long entlen, namelen;
|
||||
/* match against component's name and name length */
|
||||
entlen = ISO_BY(FDV(ldp, length, fs->type));
|
||||
namelen = ISO_BY(FDV(ldp, name_len, fs->type));
|
||||
if (entlen >= comp_namelen + sizeof(union fsdir) && namelen == comp_namelen
|
||||
&& strncmp(FDV(ldp,name(),fs->type),
|
||||
FDV(compdp,name(),fs->type), namelen) == 0) {
|
||||
memcpy (fdp, ldp, entlen);
|
||||
memcpy (compdp, ldp, entlen);
|
||||
free(buffer);
|
||||
return 1;
|
||||
} else {
|
||||
cnt -= entlen;
|
||||
ldp = (struct directent *)
|
||||
(((char *) ldp) + entlen);
|
||||
}
|
||||
}
|
||||
if (filesize == 0) break;
|
||||
lbn++;
|
||||
}
|
||||
free(buffer);
|
||||
return 0;
|
||||
}
|
||||
/* Lookup the pathname by interpreting the directory structure of the CDROM
|
||||
* element by element, returning a directory entry if found. Name translation
|
||||
* occurs here, out of the null terminated path name string. This routine
|
||||
* works by recursion. */
|
||||
int
|
||||
lookup(struct directent *dp, struct directent *fdp, char *pathname,
|
||||
struct fs *fs) {
|
||||
struct directent *ldp;
|
||||
struct directent thiscomp;
|
||||
char *nextcomp;
|
||||
unsigned len;
|
||||
/* break off the next component of the pathname */
|
||||
if ((nextcomp = strrchr(pathname, '/')) == NULL)
|
||||
nextcomp = strrchr(pathname, '\0');
|
||||
/* construct an entry for this component to match */
|
||||
ISO_BY(FDV(&thiscomp, name_len, fs->type)) = len = nextcomp - pathname;
|
||||
memcpy(thiscomp.name, pathname, len);
|
||||
/* attempt a match, returning component if found */
|
||||
if (searchdirent(dp, fdp, &thiscomp, fs)){
|
||||
/* if no more components, return found value */
|
||||
if (*nextcomp == '\0')
|
||||
return 1;
|
||||
/* otherwise, if this component is a directory,
|
||||
* recursively satisfy lookup */
|
||||
else if (ISO_BY(FDV(dp, flags, fs->type)) & CD_DIRECTORY)
|
||||
return (lookup(&thiscomp, fdp, nextcomp + 1, fs));
|
||||
}
|
||||
/* if no match return fail */
|
||||
else
|
||||
return(0);
|
||||
}
|
||||
/* --------------- object output routines for application ------------ */
|
||||
/* Extract the entire contents of a directory entry and write this on
|
||||
* standard output. */
|
||||
void
|
||||
extractdirent(struct directent *dp, struct fs *fs, data_callback* dcb, void* dcbctx) {
|
||||
long filesize = ISO_WD(FDV(dp, size, fs->type)),
|
||||
lbn = 0, cnt;
|
||||
char *buffer = (char *) malloc(fs->lbs);
|
||||
/* iterate over all contents of the directory entry */
|
||||
while (getblkdirent(dp, buffer, lbn, fs)) {
|
||||
/* write out the valid portion of this logical block */
|
||||
cnt = filesize > fs->lbs ? fs->lbs : filesize;
|
||||
dcb(dcbctx, buffer, cnt);
|
||||
/* next one? */
|
||||
lbn++;
|
||||
filesize -= cnt;
|
||||
if (filesize == 0) break;
|
||||
}
|
||||
free(buffer);
|
||||
}
|
||||
/* Print directory header */
|
||||
void
|
||||
printdirentheader(char *path) {
|
||||
printf("Directory(%s):\n", path);
|
||||
printf("Flags:\tsize date sysa name\n");
|
||||
}
|
||||
/* Print all entries in the directory. */
|
||||
void
|
||||
printdirents(struct directent *dp, struct fs *fs) {
|
||||
struct directent *ldp;
|
||||
long filesize = ISO_WD(FDV(dp, size, fs->type)),
|
||||
lbn = 0, cnt;
|
||||
char *buffer = (char *) malloc(fs->lbs);
|
||||
while (getblkdirent(dp, buffer, lbn, fs)) {
|
||||
long entlen, namelen;
|
||||
cnt = filesize > fs->lbs ? fs->lbs : filesize;
|
||||
filesize -= cnt;
|
||||
ldp = (struct directent *) buffer;
|
||||
entlen = ISO_BY(FDV(ldp, length, fs->type));
|
||||
namelen = ISO_BY(FDV(ldp, name_len, fs->type));
|
||||
/* have we a record to match? */
|
||||
while (cnt > sizeof (union fsdir) && entlen && namelen) {
|
||||
printdirent(ldp, fs);
|
||||
/* next entry? */
|
||||
cnt -= entlen;
|
||||
ldp = (struct directent *) (((char *) ldp) + entlen);
|
||||
entlen = ISO_BY(FDV(ldp, length, fs->type));
|
||||
namelen = ISO_BY(FDV(ldp, name_len, fs->type));
|
||||
}
|
||||
if (filesize == 0) break;
|
||||
lbn++;
|
||||
}
|
||||
free(buffer);
|
||||
}
|
||||
|
||||
/* print CDROM file modes */
|
||||
void prmodes(int f) {
|
||||
int i;
|
||||
for(i=0; i < 8; i++) {
|
||||
if(CD_FLAGBITS[i] == ' ')
|
||||
continue;
|
||||
if(f & (1<<i))
|
||||
putchar(CD_FLAGBITS[i]);
|
||||
else
|
||||
putchar('-');
|
||||
}
|
||||
putchar(' ');
|
||||
}
|
||||
/* Print a directent on output, formatted. */
|
||||
void
|
||||
printdirent(struct directent *dp, struct fs *fs) {
|
||||
unsigned extattlen;
|
||||
unsigned fbname, name_len, entlen, enttaken;
|
||||
/* mode flags */
|
||||
prmodes(ISO_BY(FDV(dp, flags, fs->type)));
|
||||
/* Note: this feature of HSF is not used because of lack of semantic def. */
|
||||
#ifdef whybother
|
||||
extattlen = ISO_BY(FDV(dp, ext_attr_length, fs->type));
|
||||
if (extattlen)
|
||||
printf(" E%3d", extattlen);
|
||||
else
|
||||
printf(" ");
|
||||
#endif
|
||||
/* size */
|
||||
printf("\t%6d", ISO_WD(FDV(dp, size, fs->type)));
|
||||
/* time */
|
||||
printf(" %s",
|
||||
cdrom_time((struct cdromtime *) FDV(dp, date, fs->type),fs->type));
|
||||
/* compensate for reserved field used to word align directory entry */
|
||||
entlen = ISO_BY(FDV(dp, length, fs->type));
|
||||
name_len = ISO_BY(FDV(dp, name_len, fs->type));
|
||||
enttaken = sizeof(union fsdir) + name_len;
|
||||
if (enttaken & 1)
|
||||
enttaken++;
|
||||
fbname = ISO_BY(FDV(dp, name(), fs->type));
|
||||
entlen -= enttaken;
|
||||
/* print size of CDROM Extensions field if present */
|
||||
if (entlen)
|
||||
printf(" %3d", entlen);
|
||||
else
|
||||
printf(" ");
|
||||
/* finally print name. compensate for unprintable names */
|
||||
if (name_len == 1 && fbname <= 1) {
|
||||
printf("\t%s\n", (fbname == 0) ? "." : "..");
|
||||
} else
|
||||
printf("\t%s\n",
|
||||
iso_astring(FDV(dp, name(), fs->type), name_len));
|
||||
};
|
||||
/* attempt to print a CDROM file's creation time */
|
||||
char *
|
||||
cdrom_time(struct cdromtime *crt, int type) {
|
||||
struct tm tm;
|
||||
static char buf[32];
|
||||
char *fmt;
|
||||
/* step 1. convert into a ANSI C time description */
|
||||
tm.tm_sec = min(crt->sec,60);
|
||||
tm.tm_min = min(crt->min,60);
|
||||
tm.tm_hour = min(crt->hour,23);
|
||||
tm.tm_mday = min(crt->day, 31);
|
||||
/* month starts with 1 */
|
||||
tm.tm_mon = crt->month - 1;
|
||||
tm.tm_year = crt->years;
|
||||
tm.tm_isdst = 0;
|
||||
/* Note: not all ISO-9660 disks have correct timezone field */
|
||||
#ifdef whybother
|
||||
/* ISO has time zone as 7th octet, HSF does not */
|
||||
if (type == ISO) {
|
||||
tm.tm_gmtoff = crt->tz*15*60;
|
||||
tm.tm_zone = timezone(crt->tz*15, 0);
|
||||
fmt = "%b %e %H:%M:%S %Z %Y";
|
||||
} else
|
||||
#endif
|
||||
fmt = "%b %d %H:%M:%S %Y";
|
||||
/* step 2. use ANSI C standard function to format time properly */
|
||||
(void)strftime(buf, sizeof(buf), fmt, &tm);
|
||||
return (buf);
|
||||
}
|
||||
static char __strbuf[200];
|
||||
/* turn a blank padded character field into the null terminated strings
|
||||
that POSIX/UNIX/WHATSIX likes so much */
|
||||
char *iso_astring(char *sp, int len) {
|
||||
memcpy(__strbuf, sp, len);
|
||||
__strbuf[len] = 0;
|
||||
for (sp = __strbuf + len - 1; sp > __strbuf ; sp--)
|
||||
if (*sp == ' ')
|
||||
*sp = 0;
|
||||
return(__strbuf);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#if 0
|
||||
|
||||
|
||||
|
||||
/* user "application" program */
|
||||
int
|
||||
mainy(int argc, char *argv[])
|
||||
{
|
||||
struct directent openfile;
|
||||
char pathname[80];
|
||||
/* open the CDROM device */
|
||||
if ((fsd.fd = open("/dev/ras2d", 0)) < 0) {
|
||||
perror("cdromcat");
|
||||
exit(1);
|
||||
}
|
||||
/* is there a filesystem we can understand here? */
|
||||
if (iscdromfs(&rootent, &fsd) == 0) {
|
||||
fprintf(stderr, "cdromcat: %s\n", fsd.name);
|
||||
exit(1);
|
||||
}
|
||||
/* print the contents of the root directory to give user a start */
|
||||
printf("Root Directory Listing:\n");
|
||||
printdirentheader("/");
|
||||
printdirents(&rootent, &fsd);
|
||||
/* print files on demand from user */
|
||||
for(;;){
|
||||
/* prompt user for name to locate */
|
||||
printf("Pathname to open? : ");
|
||||
fflush(stdout);
|
||||
/* obtain, if none, exit, else trim newline off */
|
||||
if (fgets(pathname, sizeof(pathname), stdin) == NULL)
|
||||
exit(0);
|
||||
pathname[strlen(pathname) - 1] = '\0';
|
||||
if (strlen(pathname) == 0)
|
||||
exit(0);
|
||||
/* lookup filename on CDROM */
|
||||
if (lookup(&rootent, &openfile, pathname, &fsd)){
|
||||
/* if a directory, format and list it */
|
||||
if (ISO_BY(FDV(&openfile, flags, fsd.type))
|
||||
& CD_DIRECTORY) {
|
||||
printdirentheader(pathname);
|
||||
printdirents(&openfile, &fsd);
|
||||
}
|
||||
/* if a file, print it on standard output */
|
||||
else
|
||||
extractdirent(&openfile, &fsd, 0);
|
||||
} else
|
||||
printf("Not found.\n");
|
||||
}
|
||||
/* NOTREACHED */
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
void find(directent* rootent, fs* fsd, char* pathname) {
|
||||
struct directent openfile;
|
||||
|
||||
if (lookup(rootent, &openfile, pathname, fsd)) {
|
||||
/* if a directory, format and list it */
|
||||
if (ISO_BY(FDV(&openfile, flags, fsd->type)) & CD_DIRECTORY) {
|
||||
printdirentheader(pathname);
|
||||
printdirents(&openfile, fsd);
|
||||
}
|
||||
/* if a file, print it on standard output */
|
||||
else
|
||||
extractdirent(&openfile, fsd, 0, 0);
|
||||
}
|
||||
else
|
||||
printf("Not found.\n");
|
||||
}
|
||||
|
||||
|
||||
void parse_cdfs(cdimage* cdio, int offs) {
|
||||
//im
|
||||
fs fsd;
|
||||
directent rootent;
|
||||
|
||||
memset(&fsd, 0, sizeof(fsd));
|
||||
memset(&rootent, 0, sizeof(rootent));
|
||||
|
||||
fsd.fd = cdio;
|
||||
|
||||
|
||||
/* is there a filesystem we can understand here? */
|
||||
if (iscdromfs(&rootent, &fsd, offs) ) {
|
||||
/* print the contents of the root directory to give user a start */
|
||||
printf("Root Directory Listing:\n");
|
||||
printdirentheader("/");
|
||||
printdirents(&rootent, &fsd);
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
#pragma once
|
||||
|
||||
struct cdromtime {
|
||||
unsigned char years; /* number of years since 1900 */
|
||||
unsigned char month; /* month of the year */
|
||||
unsigned char day; /* day of month */
|
||||
unsigned char hour; /* hour of day */
|
||||
unsigned char min; /* minute of the hour */
|
||||
unsigned char sec; /* second of the minute */
|
||||
unsigned char tz; /* timezones, in quarter hour increments */
|
||||
/* or, longitude in 3.75 of a degree */
|
||||
};
|
||||
|
||||
|
||||
typedef void data_callback(void* ctx, void* data, int size);
|
||||
|
||||
struct cdimage {
|
||||
virtual void seek(int to) = 0;
|
||||
|
||||
virtual int read(void* to, int count) = 0 ;
|
||||
virtual ~cdimage() { }
|
||||
};
|
||||
|
||||
|
||||
void parse_cdfs(cdimage* cdio, int offs);
|
|
@ -0,0 +1,37 @@
|
|||
#pragma once
|
||||
#include "cdromfs.h"
|
||||
|
||||
|
||||
/* cdromfs.h: various definitions for CDROM filesystems. */
|
||||
|
||||
#define VD_LSN 16 /* first logical sector of volume descriptor table */
|
||||
#define CDROM_LSECSZ 2048 /* initial logical sector size of a CDROM */
|
||||
|
||||
#define HSF 1
|
||||
#define ISO 2
|
||||
|
||||
char *cdromfmtnames[] = {
|
||||
"unknown format",
|
||||
"High Sierra",
|
||||
"ISO - 9660"
|
||||
};
|
||||
char *voltypenames[] = {
|
||||
"Boot Record",
|
||||
"Standard File Structure",
|
||||
"Coded Character Set File Structure",
|
||||
"Unspecified File Structure",
|
||||
};
|
||||
/* rude translation routines for interpreting strings, words, halfwords */
|
||||
#define ISO_AS(s) (iso_astring(s, sizeof(s)))
|
||||
#define ISO_WD(s) (*(unsigned *)(s))
|
||||
#define ISO_HWD(s) (*(unsigned short *)(s))
|
||||
#define ISO_BY(s) (*(unsigned char *)(s))
|
||||
|
||||
#define NVOLTYPENAMES (sizeof(voltypenames)/sizeof(char *))
|
||||
|
||||
#define CD_FLAGBITS "vdaEp m" /* file flag bits */
|
||||
/* Handy macro's for block calculation */
|
||||
#define lbntob(fs, n) ((fs)->lbs * (n))
|
||||
#define btolbn(fs, n) ((fs)->lbs * (n))
|
||||
#define trunc_lbn(fs, n) ((n) - ((n) % (fs)->lbs)
|
||||
#define roundup(n, d) ((((n) + (d)) / (d)) * (d))
|
|
@ -0,0 +1,156 @@
|
|||
/*
|
||||
|
||||
|
||||
*/
|
||||
|
||||
#include "types.h"
|
||||
#include "imgread/common.h"
|
||||
#include "cdromfs.h"
|
||||
|
||||
int msgboxf(const wchar* text,unsigned int type,...) {
|
||||
return MBX_OK;
|
||||
}
|
||||
|
||||
|
||||
void data_head() {
|
||||
printf("---\nrv=\n");
|
||||
}
|
||||
|
||||
void data_tail() {
|
||||
printf("===\n");
|
||||
}
|
||||
|
||||
void data_string(const char* s) {
|
||||
data_head();
|
||||
puts(s);
|
||||
data_tail();
|
||||
}
|
||||
|
||||
void data_kvp(const char* k, const char* v) {
|
||||
printf("\t\"%s\":\"%s\",\n", k, v);
|
||||
}
|
||||
|
||||
void parse_ip_meta(u8* ip_meta)
|
||||
{
|
||||
char temp[256];
|
||||
|
||||
const char* chm = (const char*)ip_meta;
|
||||
|
||||
#define HH(ofs, len, name) { strncpy(temp, chm+ofs, len); temp[len]=0; for (int i=len-1; i>=0; i--) if(temp[i]==' ') temp[i]=0; else break; data_kvp(#name, temp); }
|
||||
|
||||
data_head();
|
||||
printf("{\n");
|
||||
|
||||
data_kvp("type", "\"meta-info\"");
|
||||
|
||||
HH(0x00, 16, hardwareId);
|
||||
HH(0x10, 16, makerId);
|
||||
|
||||
HH(0x80, 128, productName);
|
||||
HH(0x4A, 6, productVersion);
|
||||
HH(0x50, 16, releaseDate);
|
||||
HH(0x40, 10, productId);
|
||||
HH(0x20, 16, discId);
|
||||
|
||||
|
||||
HH(0x30, 8, areas);
|
||||
HH(0x38, 8, peripherals);
|
||||
|
||||
HH(0x60, 16, bootfile);
|
||||
HH(0x70, 16, publisher);
|
||||
|
||||
printf("}\n");
|
||||
|
||||
data_tail();
|
||||
}
|
||||
|
||||
|
||||
struct gdio : cdimage {
|
||||
Disc* disc;
|
||||
|
||||
int pos;
|
||||
int offs;
|
||||
|
||||
void seek(int to) {
|
||||
pos = to;
|
||||
}
|
||||
|
||||
int read(void* to, int count) {
|
||||
u8 tmp[2048];
|
||||
|
||||
verify(count != 0);
|
||||
int rem = count;
|
||||
|
||||
while (rem >= 2048) {
|
||||
disc->ReadSectors( (pos/2048) + offs, 1, tmp, 2048);
|
||||
|
||||
int toread = min(2048, rem) - pos%2048;
|
||||
|
||||
memcpy(to, &tmp[pos%2048], toread),
|
||||
|
||||
(char*&)to += rem;
|
||||
pos += toread;
|
||||
rem -= toread;
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
gdio(Disc* d) {
|
||||
pos = 0;
|
||||
offs = 150; //FAD vs LBN
|
||||
disc = d;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
for (int i=1; i<argc; i++) {
|
||||
|
||||
Disc* d = OpenDisc(argv[i]);
|
||||
|
||||
if (!d) {
|
||||
printf("Invalid image\n");
|
||||
//data_string("-1");
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
int start_fad = -1;
|
||||
if (d->type == GdRom) {
|
||||
printf("This is a gdrom image\n");
|
||||
start_fad = d->tracks[2].StartFAD;
|
||||
}
|
||||
else {
|
||||
printf("This is a cdrom image\n");
|
||||
|
||||
if (d->sessions.size() < 2) {
|
||||
printf("Not a selfboot cd\n");
|
||||
//data_string("-2");
|
||||
continue;
|
||||
}
|
||||
start_fad = d->sessions[1].StartFAD;
|
||||
}
|
||||
|
||||
u8 ip_meta[2048];
|
||||
d->ReadSectors(start_fad,1,ip_meta,2048);
|
||||
//d->Dump(argv[1]);
|
||||
|
||||
parse_ip_meta(ip_meta);
|
||||
|
||||
//im
|
||||
gdio* image = new gdio(d);
|
||||
|
||||
|
||||
if (d->type == GdRom) {
|
||||
parse_cdfs(image, d->tracks[0].StartFAD-image->offs);
|
||||
}
|
||||
|
||||
parse_cdfs(image, start_fad-image->offs);
|
||||
|
||||
delete image;
|
||||
|
||||
delete d;
|
||||
}
|
||||
}
|
|
@ -1,3 +1,9 @@
|
|||
<!--
|
||||
File: strings.xml (French)
|
||||
Author: Jérôme P. (AndroidGX)
|
||||
Last Edit: 21 May 2014
|
||||
-->
|
||||
|
||||
<resources>
|
||||
|
||||
<string name="menu_settings">Réglages</string>
|
||||
|
@ -23,6 +29,7 @@
|
|||
|
||||
<string name="optimization_opts">Options d\'optimisations et de débogage</string>
|
||||
<string name="experimental_opts">Experimental (peut causer des crashs)</string>
|
||||
<string name="select_details">Activer le détail des jeux</string>
|
||||
<string name="select_native">Activer l\'interface native</string>
|
||||
<string name="select_dynarec">Dynarec</string>
|
||||
<string name="select_unstable">Optimisations instables</string>
|
||||
|
@ -41,13 +48,17 @@
|
|||
<string name="default_disk">Réglage du disque par défaut</string>
|
||||
|
||||
<string name="games_listing">Liste des jeux disponibles</string>
|
||||
|
||||
<string name="game_details">Infos du jeu - %1$s</string>
|
||||
<string name="info_unavailable">Infos du jeu non disponible</string>
|
||||
<string name="disk_loading">Chargement des infos du disque</string>
|
||||
|
||||
<string name="report_issue">Crash détécté précédemment</string>
|
||||
<string name="bios_config">Crash dans la configuration</string>
|
||||
<string name="bios_config">Crash dans la configuration!</string>
|
||||
|
||||
<string name="customize_touch_controls">Personnaliser les contrôles tactiles</string>
|
||||
<string name="launch_editor">Lancer l\'éditeur</string>
|
||||
<string name="touch_vibration">Vibrations</string>
|
||||
<string name="touch_vibration">Vibration</string>
|
||||
<string name="controller_a">Manette A</string>
|
||||
<string name="controller_b">Manette B</string>
|
||||
<string name="controller_c">Manette C</string>
|
||||
|
@ -89,6 +100,7 @@
|
|||
<string name="about">A propos</string>
|
||||
<string name="rateme">Evaluez-nous</string>
|
||||
<string name="messages">Test Suite</string>
|
||||
<string name="cloud">Cloud VMU</string>
|
||||
|
||||
<string name="textOn">ACTIF</string>
|
||||
<string name="textOff">DESACT.</string>
|
||||
|
@ -97,4 +109,10 @@
|
|||
<string name="dismiss">Abandonner</string>
|
||||
<string name="manual">Manuel</string>
|
||||
<string name="options">Options</string>
|
||||
|
||||
<string name="cloudInfos">Avec cet outil vous pouvez envoyer/télécharger vos VMUs sur/depuis Dropbox, de manière à les synchroniser avec tous vos dispositifs!</string>
|
||||
<string name="uploadWarning">ATTENTION: Vous êtes sur le point d\'envoyer vos VMUs sur Dropbox, veuillez s\'il vous plait prendre en considération que ceci va ECRASER votre dernier envoi!!</string>
|
||||
<string name="downloadWarning">ATTENTION: Vous êtes sur le point de télécharger vos VMUs depuis Dropbox, veuillez s\'il vous plait prendre en considération que ceci va ECRASER vos VMUs actuelles!! Par ailleurs une copie de sauvegarde va être créé dans le dossier VmuBackups!</string>
|
||||
<string name="uploadVMU">Envoyer VMU</string>
|
||||
<string name="downloadVMU">Télécharger VMU</string>
|
||||
</resources>
|
||||
|
|
|
@ -200,20 +200,8 @@
|
|||
9C7A3C0218C851C50070BB5F /* 210-twitterbird@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C7A3BDC18C851C50070BB5F /* 210-twitterbird@2x.png */; };
|
||||
9C7A3C0318C851C50070BB5F /* ABXYPad.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C7A3BDD18C851C50070BB5F /* ABXYPad.png */; };
|
||||
9C7A3C0418C851C50070BB5F /* ABXYPad@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C7A3BDE18C851C50070BB5F /* ABXYPad@2x.png */; };
|
||||
9C7A3C0518C851C50070BB5F /* close.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C7A3BDF18C851C50070BB5F /* close.png */; };
|
||||
9C7A3C0618C851C50070BB5F /* close@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C7A3BE018C851C50070BB5F /* close@2x.png */; };
|
||||
9C7A3C0718C851C50070BB5F /* config.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C7A3BE118C851C50070BB5F /* config.png */; };
|
||||
9C7A3C0818C851C50070BB5F /* config@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C7A3BE218C851C50070BB5F /* config@2x.png */; };
|
||||
9C7A3C0918C851C50070BB5F /* disc.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C7A3BE318C851C50070BB5F /* disc.png */; };
|
||||
9C7A3C0A18C851C50070BB5F /* disc@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C7A3BE418C851C50070BB5F /* disc@2x.png */; };
|
||||
9C7A3C0B18C851C50070BB5F /* disclosure.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C7A3BE518C851C50070BB5F /* disclosure.png */; };
|
||||
9C7A3C0C18C851C50070BB5F /* disclosure@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C7A3BE618C851C50070BB5F /* disclosure@2x.png */; };
|
||||
9C7A3C0D18C851C50070BB5F /* DPad.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C7A3BE718C851C50070BB5F /* DPad.png */; };
|
||||
9C7A3C0E18C851C50070BB5F /* DPad@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C7A3BE818C851C50070BB5F /* DPad@2x.png */; };
|
||||
9C7A3C0F18C851C50070BB5F /* HideEmulator.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C7A3BE918C851C50070BB5F /* HideEmulator.png */; };
|
||||
9C7A3C1018C851C50070BB5F /* HideEmulator@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C7A3BEA18C851C50070BB5F /* HideEmulator@2x.png */; };
|
||||
9C7A3C1118C851C50070BB5F /* input.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C7A3BEB18C851C50070BB5F /* input.png */; };
|
||||
9C7A3C1218C851C50070BB5F /* input@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C7A3BEC18C851C50070BB5F /* input@2x.png */; };
|
||||
9C7A3C1318C851C50070BB5F /* JoystickBackground.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C7A3BED18C851C50070BB5F /* JoystickBackground.png */; };
|
||||
9C7A3C1418C851C50070BB5F /* JoystickBackground@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C7A3BEE18C851C50070BB5F /* JoystickBackground@2x.png */; };
|
||||
9C7A3C1518C851C50070BB5F /* JoystickButton.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C7A3BEF18C851C50070BB5F /* JoystickButton.png */; };
|
||||
|
@ -224,14 +212,11 @@
|
|||
9C7A3C1A18C851C50070BB5F /* menuback@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C7A3BF418C851C50070BB5F /* menuback@2x.png */; };
|
||||
9C7A3C1B18C851C50070BB5F /* menuicon.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C7A3BF518C851C50070BB5F /* menuicon.png */; };
|
||||
9C7A3C1C18C851C50070BB5F /* menuicon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C7A3BF618C851C50070BB5F /* menuicon@2x.png */; };
|
||||
9C7A3C1D18C851C50070BB5F /* row.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C7A3BF718C851C50070BB5F /* row.png */; };
|
||||
9C7A3C1E18C851C50070BB5F /* row@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C7A3BF818C851C50070BB5F /* row@2x.png */; };
|
||||
9C7A3C1F18C851C50070BB5F /* rowselected.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C7A3BF918C851C50070BB5F /* rowselected.png */; };
|
||||
9C7A3C2018C851C50070BB5F /* rowselected@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C7A3BFA18C851C50070BB5F /* rowselected@2x.png */; };
|
||||
9C7A3C2118C851C50070BB5F /* RTrigger.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C7A3BFB18C851C50070BB5F /* RTrigger.png */; };
|
||||
9C7A3C2218C851C50070BB5F /* RTrigger@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C7A3BFC18C851C50070BB5F /* RTrigger@2x.png */; };
|
||||
9C7A3C2318C851C50070BB5F /* Start.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C7A3BFD18C851C50070BB5F /* Start.png */; };
|
||||
9C7A3C2418C851C50070BB5F /* Start@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 9C7A3BFE18C851C50070BB5F /* Start@2x.png */; };
|
||||
9C7D581019301E140004EA2C /* CloudVMUViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C7D580F19301E140004EA2C /* CloudVMUViewController.m */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
|
@ -571,20 +556,8 @@
|
|||
9C7A3BDC18C851C50070BB5F /* 210-twitterbird@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "210-twitterbird@2x.png"; path = "emulator/Images/210-twitterbird@2x.png"; sourceTree = "<group>"; };
|
||||
9C7A3BDD18C851C50070BB5F /* ABXYPad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ABXYPad.png; path = emulator/Images/ABXYPad.png; sourceTree = "<group>"; };
|
||||
9C7A3BDE18C851C50070BB5F /* ABXYPad@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "ABXYPad@2x.png"; path = "emulator/Images/ABXYPad@2x.png"; sourceTree = "<group>"; };
|
||||
9C7A3BDF18C851C50070BB5F /* close.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = close.png; path = emulator/Images/close.png; sourceTree = "<group>"; };
|
||||
9C7A3BE018C851C50070BB5F /* close@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "close@2x.png"; path = "emulator/Images/close@2x.png"; sourceTree = "<group>"; };
|
||||
9C7A3BE118C851C50070BB5F /* config.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = config.png; path = emulator/Images/config.png; sourceTree = "<group>"; };
|
||||
9C7A3BE218C851C50070BB5F /* config@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "config@2x.png"; path = "emulator/Images/config@2x.png"; sourceTree = "<group>"; };
|
||||
9C7A3BE318C851C50070BB5F /* disc.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = disc.png; path = emulator/Images/disc.png; sourceTree = "<group>"; };
|
||||
9C7A3BE418C851C50070BB5F /* disc@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "disc@2x.png"; path = "emulator/Images/disc@2x.png"; sourceTree = "<group>"; };
|
||||
9C7A3BE518C851C50070BB5F /* disclosure.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = disclosure.png; path = emulator/Images/disclosure.png; sourceTree = "<group>"; };
|
||||
9C7A3BE618C851C50070BB5F /* disclosure@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "disclosure@2x.png"; path = "emulator/Images/disclosure@2x.png"; sourceTree = "<group>"; };
|
||||
9C7A3BE718C851C50070BB5F /* DPad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = DPad.png; path = emulator/Images/DPad.png; sourceTree = "<group>"; };
|
||||
9C7A3BE818C851C50070BB5F /* DPad@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "DPad@2x.png"; path = "emulator/Images/DPad@2x.png"; sourceTree = "<group>"; };
|
||||
9C7A3BE918C851C50070BB5F /* HideEmulator.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = HideEmulator.png; path = emulator/Images/HideEmulator.png; sourceTree = "<group>"; };
|
||||
9C7A3BEA18C851C50070BB5F /* HideEmulator@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "HideEmulator@2x.png"; path = "emulator/Images/HideEmulator@2x.png"; sourceTree = "<group>"; };
|
||||
9C7A3BEB18C851C50070BB5F /* input.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = input.png; path = emulator/Images/input.png; sourceTree = "<group>"; };
|
||||
9C7A3BEC18C851C50070BB5F /* input@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "input@2x.png"; path = "emulator/Images/input@2x.png"; sourceTree = "<group>"; };
|
||||
9C7A3BED18C851C50070BB5F /* JoystickBackground.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = JoystickBackground.png; path = emulator/Images/JoystickBackground.png; sourceTree = "<group>"; };
|
||||
9C7A3BEE18C851C50070BB5F /* JoystickBackground@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "JoystickBackground@2x.png"; path = "emulator/Images/JoystickBackground@2x.png"; sourceTree = "<group>"; };
|
||||
9C7A3BEF18C851C50070BB5F /* JoystickButton.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = JoystickButton.png; path = emulator/Images/JoystickButton.png; sourceTree = "<group>"; };
|
||||
|
@ -595,14 +568,12 @@
|
|||
9C7A3BF418C851C50070BB5F /* menuback@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "menuback@2x.png"; path = "emulator/Images/menuback@2x.png"; sourceTree = "<group>"; };
|
||||
9C7A3BF518C851C50070BB5F /* menuicon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = menuicon.png; path = emulator/Images/menuicon.png; sourceTree = "<group>"; };
|
||||
9C7A3BF618C851C50070BB5F /* menuicon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "menuicon@2x.png"; path = "emulator/Images/menuicon@2x.png"; sourceTree = "<group>"; };
|
||||
9C7A3BF718C851C50070BB5F /* row.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = row.png; path = emulator/Images/row.png; sourceTree = "<group>"; };
|
||||
9C7A3BF818C851C50070BB5F /* row@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "row@2x.png"; path = "emulator/Images/row@2x.png"; sourceTree = "<group>"; };
|
||||
9C7A3BF918C851C50070BB5F /* rowselected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = rowselected.png; path = emulator/Images/rowselected.png; sourceTree = "<group>"; };
|
||||
9C7A3BFA18C851C50070BB5F /* rowselected@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "rowselected@2x.png"; path = "emulator/Images/rowselected@2x.png"; sourceTree = "<group>"; };
|
||||
9C7A3BFB18C851C50070BB5F /* RTrigger.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = RTrigger.png; path = emulator/Images/RTrigger.png; sourceTree = "<group>"; };
|
||||
9C7A3BFC18C851C50070BB5F /* RTrigger@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "RTrigger@2x.png"; path = "emulator/Images/RTrigger@2x.png"; sourceTree = "<group>"; };
|
||||
9C7A3BFD18C851C50070BB5F /* Start.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Start.png; path = emulator/Images/Start.png; sourceTree = "<group>"; };
|
||||
9C7A3BFE18C851C50070BB5F /* Start@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Start@2x.png"; path = "emulator/Images/Start@2x.png"; sourceTree = "<group>"; };
|
||||
9C7D580E19301E140004EA2C /* CloudVMUViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CloudVMUViewController.h; path = emulator/CloudVMUViewController.h; sourceTree = "<group>"; };
|
||||
9C7D580F19301E140004EA2C /* CloudVMUViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CloudVMUViewController.m; path = emulator/CloudVMUViewController.m; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
|
@ -692,6 +663,8 @@
|
|||
9C7A393618C805F70070BB5F /* View Controller Subclasses */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9C7D580E19301E140004EA2C /* CloudVMUViewController.h */,
|
||||
9C7D580F19301E140004EA2C /* CloudVMUViewController.m */,
|
||||
9C7A3B6C18C820B40070BB5F /* InputViewController.h */,
|
||||
9C7A3B6D18C820B40070BB5F /* InputViewController.m */,
|
||||
9C7A3B6618C8208D0070BB5F /* SettingsViewController.h */,
|
||||
|
@ -720,20 +693,8 @@
|
|||
9C7A3BDC18C851C50070BB5F /* 210-twitterbird@2x.png */,
|
||||
9C7A3BDD18C851C50070BB5F /* ABXYPad.png */,
|
||||
9C7A3BDE18C851C50070BB5F /* ABXYPad@2x.png */,
|
||||
9C7A3BDF18C851C50070BB5F /* close.png */,
|
||||
9C7A3BE018C851C50070BB5F /* close@2x.png */,
|
||||
9C7A3BE118C851C50070BB5F /* config.png */,
|
||||
9C7A3BE218C851C50070BB5F /* config@2x.png */,
|
||||
9C7A3BE318C851C50070BB5F /* disc.png */,
|
||||
9C7A3BE418C851C50070BB5F /* disc@2x.png */,
|
||||
9C7A3BE518C851C50070BB5F /* disclosure.png */,
|
||||
9C7A3BE618C851C50070BB5F /* disclosure@2x.png */,
|
||||
9C7A3BE718C851C50070BB5F /* DPad.png */,
|
||||
9C7A3BE818C851C50070BB5F /* DPad@2x.png */,
|
||||
9C7A3BE918C851C50070BB5F /* HideEmulator.png */,
|
||||
9C7A3BEA18C851C50070BB5F /* HideEmulator@2x.png */,
|
||||
9C7A3BEB18C851C50070BB5F /* input.png */,
|
||||
9C7A3BEC18C851C50070BB5F /* input@2x.png */,
|
||||
9C7A3BED18C851C50070BB5F /* JoystickBackground.png */,
|
||||
9C7A3BEE18C851C50070BB5F /* JoystickBackground@2x.png */,
|
||||
9C7A3BEF18C851C50070BB5F /* JoystickButton.png */,
|
||||
|
@ -744,10 +705,6 @@
|
|||
9C7A3BF418C851C50070BB5F /* menuback@2x.png */,
|
||||
9C7A3BF518C851C50070BB5F /* menuicon.png */,
|
||||
9C7A3BF618C851C50070BB5F /* menuicon@2x.png */,
|
||||
9C7A3BF718C851C50070BB5F /* row.png */,
|
||||
9C7A3BF818C851C50070BB5F /* row@2x.png */,
|
||||
9C7A3BF918C851C50070BB5F /* rowselected.png */,
|
||||
9C7A3BFA18C851C50070BB5F /* rowselected@2x.png */,
|
||||
9C7A3BFB18C851C50070BB5F /* RTrigger.png */,
|
||||
9C7A3BFC18C851C50070BB5F /* RTrigger@2x.png */,
|
||||
9C7A3BFD18C851C50070BB5F /* Start.png */,
|
||||
|
@ -1420,24 +1377,17 @@
|
|||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
9C7A3C0618C851C50070BB5F /* close@2x.png in Resources */,
|
||||
9C7A3C1818C851C50070BB5F /* LTrigger@2x.png in Resources */,
|
||||
9C7A3C1318C851C50070BB5F /* JoystickBackground.png in Resources */,
|
||||
9C7A393318C804A80070BB5F /* reicast.entitlements in Resources */,
|
||||
9C7A3C1018C851C50070BB5F /* HideEmulator@2x.png in Resources */,
|
||||
9C7A3C0018C851C50070BB5F /* 210-octocat@2x.png in Resources */,
|
||||
9C7A3C0518C851C50070BB5F /* close.png in Resources */,
|
||||
9C7A3C1718C851C50070BB5F /* LTrigger.png in Resources */,
|
||||
9C7A3C0218C851C50070BB5F /* 210-twitterbird@2x.png in Resources */,
|
||||
9C7A3C0918C851C50070BB5F /* disc.png in Resources */,
|
||||
9C7A3AA418C806E00070BB5F /* core.mk in Resources */,
|
||||
9C7A3C2218C851C50070BB5F /* RTrigger@2x.png in Resources */,
|
||||
9C7A3C0F18C851C50070BB5F /* HideEmulator.png in Resources */,
|
||||
9C7A3C0E18C851C50070BB5F /* DPad@2x.png in Resources */,
|
||||
87078AA318A47FE90034C7A0 /* Shader.fsh in Resources */,
|
||||
9C7A3C1E18C851C50070BB5F /* row@2x.png in Resources */,
|
||||
9C7A3C2118C851C50070BB5F /* RTrigger.png in Resources */,
|
||||
9C7A3C0B18C851C50070BB5F /* disclosure.png in Resources */,
|
||||
9C7A3C1C18C851C50070BB5F /* menuicon@2x.png in Resources */,
|
||||
9C7A3C0118C851C50070BB5F /* 210-twitterbird.png in Resources */,
|
||||
9C7A3C0D18C851C50070BB5F /* DPad.png in Resources */,
|
||||
|
@ -1445,7 +1395,6 @@
|
|||
9C7A3BFF18C851C50070BB5F /* 210-octocat.png in Resources */,
|
||||
9C7A3C1618C851C50070BB5F /* JoystickButton@2x.png in Resources */,
|
||||
87078AAA18A47FE90034C7A0 /* Images.xcassets in Resources */,
|
||||
9C7A3C0C18C851C50070BB5F /* disclosure@2x.png in Resources */,
|
||||
9C7A3C1418C851C50070BB5F /* JoystickBackground@2x.png in Resources */,
|
||||
9C7A3C1918C851C50070BB5F /* menuback.png in Resources */,
|
||||
9C7A3BC418C84EA10070BB5F /* MainStoryboard.storyboard in Resources */,
|
||||
|
@ -1454,17 +1403,9 @@
|
|||
9C7A3C1B18C851C50070BB5F /* menuicon.png in Resources */,
|
||||
9C7A3C0418C851C50070BB5F /* ABXYPad@2x.png in Resources */,
|
||||
87078AA518A47FE90034C7A0 /* Shader.vsh in Resources */,
|
||||
9C7A3C0818C851C50070BB5F /* config@2x.png in Resources */,
|
||||
9C7A3C1D18C851C50070BB5F /* row.png in Resources */,
|
||||
9C7A3C1118C851C50070BB5F /* input.png in Resources */,
|
||||
9C7A3C0318C851C50070BB5F /* ABXYPad.png in Resources */,
|
||||
9C7A3C2418C851C50070BB5F /* Start@2x.png in Resources */,
|
||||
9C7A3C0718C851C50070BB5F /* config.png in Resources */,
|
||||
9C7A3C0A18C851C50070BB5F /* disc@2x.png in Resources */,
|
||||
9C7A3C1218C851C50070BB5F /* input@2x.png in Resources */,
|
||||
9C7A3C2018C851C50070BB5F /* rowselected@2x.png in Resources */,
|
||||
9C7A3C2318C851C50070BB5F /* Start.png in Resources */,
|
||||
9C7A3C1F18C851C50070BB5F /* rowselected.png in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
@ -1556,6 +1497,7 @@
|
|||
9C7A3B0F18C806E00070BB5F /* maple_cfg.cpp in Sources */,
|
||||
9C7A3AF318C806E00070BB5F /* crc32.c in Sources */,
|
||||
9C7A3B5F18C81D090070BB5F /* BrowserTableViewController.m in Sources */,
|
||||
9C7D581019301E140004EA2C /* CloudVMUViewController.m in Sources */,
|
||||
9C7A3AE118C806E00070BB5F /* zip_set_file_comment.c in Sources */,
|
||||
9C7A3B4118C806E00070BB5F /* audiostream.cpp in Sources */,
|
||||
9C7A3AB118C806E00070BB5F /* pngread.c in Sources */,
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
//
|
||||
// CloudVMUViewController.h
|
||||
// emulator
|
||||
//
|
||||
// Created by Karen Tsai on 2014/5/23.
|
||||
// Copyright (c) 2014 Karen Tsai (angelXwind). All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface CloudVMUViewController : UITableViewController
|
||||
@property (weak, nonatomic) IBOutlet UIBarButtonItem *sidebarButton;
|
||||
|
||||
@end
|
|
@ -0,0 +1,56 @@
|
|||
//
|
||||
// CloudVMUViewController.m
|
||||
// emulator
|
||||
//
|
||||
// Created by Karen Tsai on 2014/5/23.
|
||||
// Copyright (c) 2014 Karen Tsai (angelXwind). All rights reserved.
|
||||
//
|
||||
|
||||
#import "CloudVMUViewController.h"
|
||||
#import "SWRevealViewController.h"
|
||||
|
||||
@interface CloudVMUViewController ()
|
||||
|
||||
@end
|
||||
|
||||
@implementation CloudVMUViewController
|
||||
|
||||
- (id)initWithStyle:(UITableViewStyle)style
|
||||
{
|
||||
self = [super initWithStyle:style];
|
||||
if (self) {
|
||||
// Custom initialization
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)viewDidLoad
|
||||
{
|
||||
[super viewDidLoad];
|
||||
self.title = @"Cloud VMU";
|
||||
|
||||
// Set the side bar button action. When it's tapped, it'll show up the sidebar.
|
||||
_sidebarButton.target = self.revealViewController;
|
||||
_sidebarButton.action = @selector(revealToggle:);
|
||||
|
||||
// Set the gesture
|
||||
[self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];
|
||||
|
||||
// Uncomment the following line to preserve selection between presentations.
|
||||
// self.clearsSelectionOnViewWillAppear = NO;
|
||||
|
||||
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
|
||||
// self.navigationItem.rightBarButtonItem = self.editButtonItem;
|
||||
}
|
||||
|
||||
- (void)didReceiveMemoryWarning
|
||||
{
|
||||
[super didReceiveMemoryWarning];
|
||||
// Dispose of any resources that can be recreated.
|
||||
}
|
||||
|
||||
#pragma mark - Table view data source
|
||||
|
||||
// TODO: write the rest of the view controller logic
|
||||
|
||||
@end
|
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 2.7 KiB |
|
@ -90,12 +90,13 @@
|
|||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<segmentedControl opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="bar" selectedSegmentIndex="0" id="2i9-9X-BIw">
|
||||
<rect key="frame" x="20" y="36" width="280" height="30"/>
|
||||
<rect key="frame" x="20" y="36" width="280" height="29"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<segments>
|
||||
<segment title="0"/>
|
||||
<segment title="1"/>
|
||||
<segment title="2"/>
|
||||
<segment title="3"/>
|
||||
</segments>
|
||||
</segmentedControl>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Frame Skip" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="10" id="Mdm-Bf-hXu">
|
||||
|
@ -431,7 +432,7 @@
|
|||
<objects>
|
||||
<viewController storyboardIdentifier="emulatorView" wantsFullScreenLayout="YES" id="WRM-pR-XCP" customClass="EmulatorViewController" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="JQE-db-ZiC">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="568" height="320"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="60 FPS" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="mo4-qa-NUQ">
|
||||
|
@ -446,7 +447,7 @@
|
|||
<size key="shadowOffset" width="0.0" height="0.0"/>
|
||||
</label>
|
||||
<view opaque="NO" contentMode="scaleToFill" id="S6c-5v-781" userLabel="Controls Container">
|
||||
<rect key="frame" x="1" y="328" width="320" height="240"/>
|
||||
<rect key="frame" x="1" y="80" width="568" height="240"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" id="2r2-6d-4At" customClass="DirectionalControl">
|
||||
|
@ -458,7 +459,7 @@
|
|||
</connections>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" id="wc7-x7-O1M" customClass="ButtonControl">
|
||||
<rect key="frame" x="200" y="112" width="120" height="120"/>
|
||||
<rect key="frame" x="448" y="112" width="120" height="120"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
<connections>
|
||||
|
@ -466,7 +467,7 @@
|
|||
</connections>
|
||||
</view>
|
||||
<button opaque="NO" tag="5" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" adjustsImageWhenDisabled="NO" lineBreakMode="middleTruncation" id="DAf-Ip-ZfX">
|
||||
<rect key="frame" x="136" y="206" width="48" height="26"/>
|
||||
<rect key="frame" x="268" y="194" width="48" height="26"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
||||
<state key="normal" backgroundImage="Start.png">
|
||||
|
@ -500,7 +501,7 @@
|
|||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" tag="11" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" adjustsImageWhenDisabled="NO" lineBreakMode="middleTruncation" id="YM6-fX-N4s">
|
||||
<rect key="frame" x="253" y="0.0" width="67" height="44"/>
|
||||
<rect key="frame" x="501" y="0.0" width="67" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
||||
<state key="normal" backgroundImage="RTrigger.png">
|
||||
|
@ -520,7 +521,7 @@
|
|||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
<button opaque="NO" alpha="0.5" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="VZZ-1B-BHQ">
|
||||
<rect key="frame" x="147" y="1" width="26" height="26"/>
|
||||
<rect key="frame" x="522" y="20" width="26" height="26"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<gestureRecognizers/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
||||
|
@ -539,8 +540,10 @@
|
|||
</subviews>
|
||||
<color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<gestureRecognizers/>
|
||||
<simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
|
||||
</view>
|
||||
<nil key="simulatedStatusBarMetrics"/>
|
||||
<simulatedOrientationMetrics key="simulatedOrientationMetrics" orientation="landscapeRight"/>
|
||||
<connections>
|
||||
<outlet property="buttonControl" destination="wc7-x7-O1M" id="DCv-Im-2AH"/>
|
||||
<outlet property="controllerContainerView" destination="S6c-5v-781" id="PYO-ai-9Ym"/>
|
||||
|
@ -827,15 +830,75 @@
|
|||
</objects>
|
||||
<point key="canvasLocation" x="451" y="-300"/>
|
||||
</scene>
|
||||
<!--Side Drawer View Controller-->
|
||||
<scene sceneID="4Yv-XG-ZpS">
|
||||
<!--CloudVMU View Controller - Cloud VMU-->
|
||||
<scene sceneID="stw-rr-ydw">
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="wHS-Li-Mt9" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
<tableViewController storyboardIdentifier="Static" id="G5S-J0-8NS" customClass="SideDrawerViewController" sceneMemberID="viewController">
|
||||
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="blackOpaque"/>
|
||||
<tableViewController id="QUY-zj-qPU" customClass="CloudVMUViewController" sceneMemberID="viewController">
|
||||
<tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="10" sectionFooterHeight="10" id="kEu-gD-vhT">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" red="0.93725496529999996" green="0.93725496529999996" blue="0.95686280729999995" alpha="1" colorSpace="deviceRGB"/>
|
||||
<sections>
|
||||
<tableViewSection headerTitle="Cloud VMU" footerTitle="With this tool, you can upload/download your VMUs to/from Dropbox, in order to sync them with all your devices!" id="Vtc-3O-zog">
|
||||
<cells>
|
||||
<tableViewCell contentMode="scaleToFill" selectionStyle="gray" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" textLabel="ehb-54-ItN" style="IBUITableViewCellStyleDefault" id="pV4-Yd-r5B">
|
||||
<rect key="frame" x="0.0" y="119" width="320" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="pV4-Yd-r5B" id="NvF-vc-Qfl">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="43"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Upload VMU" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="ehb-54-ItN">
|
||||
<rect key="frame" x="15" y="0.0" width="290" height="43"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
</tableViewCellContentView>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</tableViewCell>
|
||||
<tableViewCell contentMode="scaleToFill" selectionStyle="gray" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" textLabel="5e7-Ya-RZi" style="IBUITableViewCellStyleDefault" id="gIc-TL-8Xb">
|
||||
<rect key="frame" x="0.0" y="163" width="320" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="gIc-TL-8Xb" id="W0G-Za-kmJ">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="43"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Download VMU" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="5e7-Ya-RZi">
|
||||
<rect key="frame" x="15" y="0.0" width="290" height="43"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
</tableViewCellContentView>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</tableViewCell>
|
||||
</cells>
|
||||
</tableViewSection>
|
||||
</sections>
|
||||
<connections>
|
||||
<outlet property="dataSource" destination="QUY-zj-qPU" id="c7s-hU-Z1a"/>
|
||||
<outlet property="delegate" destination="QUY-zj-qPU" id="mgc-k7-dQf"/>
|
||||
</connections>
|
||||
</tableView>
|
||||
<navigationItem key="navigationItem" title="Cloud VMU" id="a5r-gh-i6Z">
|
||||
<barButtonItem key="leftBarButtonItem" image="menuicon.png" id="hGU-zT-SQS">
|
||||
<color key="tintColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</barButtonItem>
|
||||
</navigationItem>
|
||||
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="lightContent"/>
|
||||
<simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>
|
||||
<connections>
|
||||
<outlet property="sidebarButton" destination="hGU-zT-SQS" id="JGs-W4-rTV"/>
|
||||
</connections>
|
||||
</tableViewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="vTj-SM-QWv" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="-41" y="356"/>
|
||||
<point key="canvasLocation" x="-36" y="620"/>
|
||||
</scene>
|
||||
<!--Paths View Controller - Paths-->
|
||||
<scene sceneID="B9d-x4-GUQ">
|
||||
|
@ -902,6 +965,32 @@
|
|||
</tableViewCell>
|
||||
</cells>
|
||||
</tableViewSection>
|
||||
<tableViewSection headerTitle="Browser" id="cua-Bp-jdg">
|
||||
<cells>
|
||||
<tableViewCell contentMode="scaleToFill" selectionStyle="none" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="uqB-z2-zBm">
|
||||
<rect key="frame" x="0.0" y="451" width="320" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="uqB-z2-zBm" id="n9V-hp-kxg">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="43"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<switch opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" id="eYo-NN-Sn3">
|
||||
<rect key="frame" x="251" y="6" width="51" height="31"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
|
||||
</switch>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Enable Game Details" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="KdS-Rm-CVt">
|
||||
<rect key="frame" x="17" y="11" width="184" height="21"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</label>
|
||||
</subviews>
|
||||
</tableViewCellContentView>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</tableViewCell>
|
||||
</cells>
|
||||
</tableViewSection>
|
||||
</sections>
|
||||
<connections>
|
||||
<outlet property="dataSource" destination="XzS-kx-tLR" id="oxZ-lT-LSU"/>
|
||||
|
@ -1120,8 +1209,8 @@
|
|||
</view>
|
||||
<simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>
|
||||
<connections>
|
||||
<segue destination="G5S-J0-8NS" kind="custom" identifier="sw_rear" customClass="SWRevealViewControllerSegue" id="ANw-S3-tOC"/>
|
||||
<segue destination="2a6-jc-CVw" kind="custom" identifier="sw_front" customClass="SWRevealViewControllerSegue" id="dKv-qL-02E"/>
|
||||
<segue destination="ENP-dt-mAr" kind="custom" identifier="sw_rear" customClass="SWRevealViewControllerSegue" id="GUD-cD-jWj"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="V7a-XK-Rv3" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
|
@ -1131,7 +1220,6 @@
|
|||
<!--Navigation Controller-->
|
||||
<scene sceneID="6mx-8l-fBn">
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="mYK-ES-4ep" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
<navigationController definesPresentationContext="YES" id="2a6-jc-CVw" sceneMemberID="viewController">
|
||||
<simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>
|
||||
<navigationBar key="navigationBar" contentMode="scaleToFill" id="GEg-bW-l1t">
|
||||
|
@ -1146,9 +1234,157 @@
|
|||
<segue destination="12" kind="relationship" relationship="rootViewController" id="bPa-BK-u0Y"/>
|
||||
</connections>
|
||||
</navigationController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="mYK-ES-4ep" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="-41" y="-984"/>
|
||||
</scene>
|
||||
<!--Side Drawer View Controller-->
|
||||
<scene sceneID="LAD-hJ-K38">
|
||||
<objects>
|
||||
<tableViewController id="ENP-dt-mAr" customClass="SideDrawerViewController" sceneMemberID="viewController">
|
||||
<tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="rtd-Yh-HoI">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" red="0.43137258290000002" green="0.44313728810000003" blue="0.45098042490000001" alpha="1" colorSpace="deviceRGB"/>
|
||||
<prototypes>
|
||||
<tableViewCell contentMode="scaleToFill" selectionStyle="gray" hidesAccessoryWhenEditing="NO" indentationWidth="0.0" reuseIdentifier="browser" textLabel="LjN-aL-Xol" style="IBUITableViewCellStyleDefault" id="nXF-UC-xee">
|
||||
<rect key="frame" x="0.0" y="22" width="320" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="nXF-UC-xee" id="Rpb-HH-Luk">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Browser" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="LjN-aL-Xol">
|
||||
<rect key="frame" x="15" y="0.0" width="290" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="18"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
</tableViewCellContentView>
|
||||
<color key="backgroundColor" red="0.47843140360000003" green="0.49411767719999999" blue="0.50196081400000003" alpha="1" colorSpace="deviceRGB"/>
|
||||
<connections>
|
||||
<segue destination="12" kind="custom" customClass="SWRevealViewControllerSegue" trigger="accessoryAction" id="411-Zh-GVU"/>
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
<tableViewCell contentMode="scaleToFill" selectionStyle="gray" hidesAccessoryWhenEditing="NO" indentationWidth="0.0" reuseIdentifier="settings" textLabel="boW-ei-jb8" style="IBUITableViewCellStyleDefault" id="5hJ-8w-9QM">
|
||||
<rect key="frame" x="0.0" y="66" width="320" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="5hJ-8w-9QM" id="D78-09-BjH">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Settings" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="boW-ei-jb8">
|
||||
<rect key="frame" x="15" y="0.0" width="290" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="18"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
</tableViewCellContentView>
|
||||
<color key="backgroundColor" red="0.47843140360000003" green="0.49411767719999999" blue="0.50196081400000003" alpha="1" colorSpace="deviceRGB"/>
|
||||
<connections>
|
||||
<segue destination="c3c-6p-wCh" kind="custom" customClass="SWRevealViewControllerSegue" trigger="accessoryAction" id="qWs-Gh-kki"/>
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
<tableViewCell contentMode="scaleToFill" selectionStyle="gray" hidesAccessoryWhenEditing="NO" indentationWidth="0.0" reuseIdentifier="paths" textLabel="0Rp-LV-XK4" style="IBUITableViewCellStyleDefault" id="aS4-ma-vSr">
|
||||
<rect key="frame" x="0.0" y="110" width="320" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="aS4-ma-vSr" id="pSU-n5-hXs">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Paths" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="0Rp-LV-XK4">
|
||||
<rect key="frame" x="15" y="0.0" width="290" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="18"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
</tableViewCellContentView>
|
||||
<color key="backgroundColor" red="0.47843140360000003" green="0.49411767719999999" blue="0.50196081400000003" alpha="1" colorSpace="deviceRGB"/>
|
||||
<connections>
|
||||
<segue destination="XzS-kx-tLR" kind="custom" customClass="SWRevealViewControllerSegue" trigger="accessoryAction" id="cbk-By-SHg"/>
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
<tableViewCell contentMode="scaleToFill" selectionStyle="gray" hidesAccessoryWhenEditing="NO" indentationWidth="0.0" reuseIdentifier="input" textLabel="byd-dR-min" style="IBUITableViewCellStyleDefault" id="eLw-KV-Uyz">
|
||||
<rect key="frame" x="0.0" y="154" width="320" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="eLw-KV-Uyz" id="YT8-Al-yNW">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Input" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="byd-dR-min">
|
||||
<rect key="frame" x="15" y="0.0" width="290" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="18"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
</tableViewCellContentView>
|
||||
<color key="backgroundColor" red="0.47843140360000003" green="0.49411767719999999" blue="0.50196081400000003" alpha="1" colorSpace="deviceRGB"/>
|
||||
<connections>
|
||||
<segue destination="PZu-Bi-7Xn" kind="custom" customClass="SWRevealViewControllerSegue" trigger="accessoryAction" id="eTG-s0-4Yk"/>
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
<tableViewCell contentMode="scaleToFill" selectionStyle="gray" hidesAccessoryWhenEditing="NO" indentationWidth="0.0" reuseIdentifier="about" textLabel="E7F-CS-7mV" style="IBUITableViewCellStyleDefault" id="laZ-wc-fYv">
|
||||
<rect key="frame" x="0.0" y="198" width="320" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="laZ-wc-fYv" id="Bfi-5B-dCF">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="About" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="E7F-CS-7mV">
|
||||
<rect key="frame" x="15" y="0.0" width="290" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="18"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
</tableViewCellContentView>
|
||||
<color key="backgroundColor" red="0.47843140360000003" green="0.49411767719999999" blue="0.50196081400000003" alpha="1" colorSpace="deviceRGB"/>
|
||||
<connections>
|
||||
<segue destination="kY3-6f-RlH" kind="custom" customClass="SWRevealViewControllerSegue" trigger="accessoryAction" id="a0d-ur-Jo6"/>
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
<tableViewCell contentMode="scaleToFill" selectionStyle="gray" hidesAccessoryWhenEditing="NO" indentationWidth="0.0" reuseIdentifier="cloudvmu" textLabel="wF5-AI-bOq" style="IBUITableViewCellStyleDefault" id="diS-hf-duh">
|
||||
<rect key="frame" x="0.0" y="242" width="320" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="diS-hf-duh" id="oT7-OG-OsR">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Cloud VMU" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="wF5-AI-bOq">
|
||||
<rect key="frame" x="15" y="0.0" width="290" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="18"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
</tableViewCellContentView>
|
||||
<color key="backgroundColor" red="0.47843140360000003" green="0.49411767719999999" blue="0.50196081400000003" alpha="1" colorSpace="deviceRGB"/>
|
||||
<connections>
|
||||
<segue destination="QUY-zj-qPU" kind="custom" customClass="SWRevealViewControllerSegue" trigger="accessoryAction" id="9bz-PQ-d5V"/>
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
</prototypes>
|
||||
<connections>
|
||||
<outlet property="dataSource" destination="ENP-dt-mAr" id="3Gx-V9-fsT"/>
|
||||
<outlet property="delegate" destination="ENP-dt-mAr" id="0Kg-33-QWc"/>
|
||||
</connections>
|
||||
</tableView>
|
||||
<nil key="simulatedTopBarMetrics"/>
|
||||
</tableViewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="1dy-nT-WkN" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="-36" y="-203"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
<resources>
|
||||
<image name="210-octocat.png" width="22" height="22"/>
|
||||
|
@ -1165,4 +1401,7 @@
|
|||
<simulatedOrientationMetrics key="orientation"/>
|
||||
<simulatedScreenMetrics key="destination" type="retina4"/>
|
||||
</simulatedMetricsContainer>
|
||||
<inferredMetricsTieBreakers>
|
||||
<segue reference="411-Zh-GVU"/>
|
||||
</inferredMetricsTieBreakers>
|
||||
</document>
|
||||
|
|