summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--WPZX81.sln38
-rw-r--r--WPZX81/WPZX81/AboutPage.xaml72
-rw-r--r--WPZX81/WPZX81/AboutPage.xaml.cs23
-rw-r--r--WPZX81/WPZX81/MainPage.xaml103
-rw-r--r--WPZX81/WPZX81/MainPage.xaml.cs28
-rw-r--r--WPZX81/WPZX81/Resources/Strings.Designer.cs301
-rw-r--r--WPZX81/WPZX81/Resources/Strings.resx202
-rw-r--r--WPZX81/WPZX81/Settings.cs80
-rw-r--r--WPZX81/WPZX81/SettingsPage.xaml54
-rw-r--r--WPZX81/WPZX81/SettingsPage.xaml.cs23
-rw-r--r--WPZX81/WPZX81/Shared.cs25
-rw-r--r--WPZX81/WPZX81/WPZX81.csproj40
-rw-r--r--WPZX81/WPZX81/ZX81/Emulation.cs72
13 files changed, 1039 insertions, 22 deletions
diff --git a/WPZX81.sln b/WPZX81.sln
index d912681..1a860f0 100644
--- a/WPZX81.sln
+++ b/WPZX81.sln
@@ -5,7 +5,13 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WPZX81", "WPZX81\WPZX81\WPZ
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WPZX81Lib", "WPZX81\WPZX81Lib\WPZX81Lib.csproj", "{98079AC7-07B5-4BC6-8E51-1E085B133E73}"
EndProject
-Project("{96E2B04D-8817-42C6-938A-82C39BA4D311}") = "WPZX81LibContent", "WPZX81\WPZX81LibContent\WPZX81LibContent.contentproj", "{51F064CF-F12E-431A-9F81-8DF0F7B88248}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WPZX81LibContent", "WPZX81\WPZX81LibContent\WPZX81LibContent.contentproj", "{51F064CF-F12E-431A-9F81-8DF0F7B88248}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Noddybox.Emulation", "..\Noddybox.Emulation\WindowsPhone\Noddybox.Emulation\Noddybox.Emulation.csproj", "{A2478066-4DFD-4042-BF98-963922DC97F8}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Noddybox.Emulation.EightBit", "..\Noddybox.Emulation\WindowsPhone\Noddybox.Emulation.EightBit\Noddybox.Emulation.EightBit.csproj", "{ADC7A871-4DED-4A92-A447-2D784AB60FAF}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Noddybox.Emulation.EightBit.Z80", "..\Noddybox.Emulation\WindowsPhone\Noddybox.Emulation.EightBit.Z80\Noddybox.Emulation.EightBit.Z80.csproj", "{7F257886-40D3-4E2A-BA9C-C5FEE93C08E9}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -47,6 +53,36 @@ Global
{51F064CF-F12E-431A-9F81-8DF0F7B88248}.Release|Any CPU.ActiveCfg = Debug|Any CPU
{51F064CF-F12E-431A-9F81-8DF0F7B88248}.Release|Mixed Platforms.ActiveCfg = Debug|Any CPU
{51F064CF-F12E-431A-9F81-8DF0F7B88248}.Release|Windows Phone.ActiveCfg = Debug|Any CPU
+ {A2478066-4DFD-4042-BF98-963922DC97F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A2478066-4DFD-4042-BF98-963922DC97F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A2478066-4DFD-4042-BF98-963922DC97F8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {A2478066-4DFD-4042-BF98-963922DC97F8}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {A2478066-4DFD-4042-BF98-963922DC97F8}.Debug|Windows Phone.ActiveCfg = Debug|Any CPU
+ {A2478066-4DFD-4042-BF98-963922DC97F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A2478066-4DFD-4042-BF98-963922DC97F8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A2478066-4DFD-4042-BF98-963922DC97F8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {A2478066-4DFD-4042-BF98-963922DC97F8}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {A2478066-4DFD-4042-BF98-963922DC97F8}.Release|Windows Phone.ActiveCfg = Release|Any CPU
+ {ADC7A871-4DED-4A92-A447-2D784AB60FAF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {ADC7A871-4DED-4A92-A447-2D784AB60FAF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {ADC7A871-4DED-4A92-A447-2D784AB60FAF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {ADC7A871-4DED-4A92-A447-2D784AB60FAF}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {ADC7A871-4DED-4A92-A447-2D784AB60FAF}.Debug|Windows Phone.ActiveCfg = Debug|Any CPU
+ {ADC7A871-4DED-4A92-A447-2D784AB60FAF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {ADC7A871-4DED-4A92-A447-2D784AB60FAF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {ADC7A871-4DED-4A92-A447-2D784AB60FAF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {ADC7A871-4DED-4A92-A447-2D784AB60FAF}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {ADC7A871-4DED-4A92-A447-2D784AB60FAF}.Release|Windows Phone.ActiveCfg = Release|Any CPU
+ {7F257886-40D3-4E2A-BA9C-C5FEE93C08E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7F257886-40D3-4E2A-BA9C-C5FEE93C08E9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7F257886-40D3-4E2A-BA9C-C5FEE93C08E9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {7F257886-40D3-4E2A-BA9C-C5FEE93C08E9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {7F257886-40D3-4E2A-BA9C-C5FEE93C08E9}.Debug|Windows Phone.ActiveCfg = Debug|Any CPU
+ {7F257886-40D3-4E2A-BA9C-C5FEE93C08E9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7F257886-40D3-4E2A-BA9C-C5FEE93C08E9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7F257886-40D3-4E2A-BA9C-C5FEE93C08E9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {7F257886-40D3-4E2A-BA9C-C5FEE93C08E9}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {7F257886-40D3-4E2A-BA9C-C5FEE93C08E9}.Release|Windows Phone.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/WPZX81/WPZX81/AboutPage.xaml b/WPZX81/WPZX81/AboutPage.xaml
new file mode 100644
index 0000000..0e9e476
--- /dev/null
+++ b/WPZX81/WPZX81/AboutPage.xaml
@@ -0,0 +1,72 @@
+<phone:PhoneApplicationPage
+ x:Class="WPZX81.AboutPage"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
+ xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:res="clr-namespace:WPZX81.Resources"
+ FontFamily="{StaticResource PhoneFontFamilyNormal}"
+ FontSize="{StaticResource PhoneFontSizeNormal}"
+ Foreground="{StaticResource PhoneForegroundBrush}"
+ SupportedOrientations="Portrait" Orientation="Portrait"
+ mc:Ignorable="d" d:DesignHeight="800" d:DesignWidth="480"
+ shell:SystemTray.IsVisible="False">
+
+ <phone:PhoneApplicationPage.Resources>
+ <res:Strings x:Key="Strings" />
+ </phone:PhoneApplicationPage.Resources>
+
+ <!--LayoutRoot is the root grid where all page content is placed-->
+ <Grid x:Name="LayoutRoot" Background="Transparent">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="*"/>
+ </Grid.RowDefinitions>
+
+ <!--ContentPanel - place additional content here-->
+ <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="auto" />
+ <RowDefinition Height="auto" />
+ <RowDefinition Height="auto" />
+ <RowDefinition Height="auto" />
+ <RowDefinition Height="auto" />
+ <RowDefinition Height="*" />
+ </Grid.RowDefinitions>
+ <Rectangle Grid.RowSpan="6" Opacity="0.3">
+ <Rectangle.Fill>
+ <LinearGradientBrush StartPoint="0.5,0"
+ EndPoint="0.5,1.0">
+ <GradientStop Color="Blue" Offset="0" />
+ <GradientStop Color="Black" Offset="0.75" />
+ <GradientStop Color="BlueViolet" Offset="1" />
+ </LinearGradientBrush>
+ </Rectangle.Fill>
+ </Rectangle>
+ <TextBlock TextWrapping="Wrap" TextAlignment="Left" Grid.Row="0"
+ Style="{StaticResource PhoneTextNormalStyle}" Foreground="White" Margin="2,2,2,2"
+ Text="{Binding CopyrightText, Source={StaticResource Strings}}" />
+ <HyperlinkButton Content="{Binding LicenseHyperlinkText, Source={StaticResource Strings}}"
+ TargetName="_blank" Grid.Row="1"
+ Margin="2,5,2,2"
+ NavigateUri="{Binding LicenseHyperlinkUri, Source={StaticResource Strings}}" />
+ <HyperlinkButton Content="{Binding SourceHyperlinkText, Source={StaticResource Strings}}"
+ Margin="2,5,2,2"
+ TargetName="_blank" Grid.Row="2"
+ NavigateUri="{Binding SourceHyperlinkUri, Source={StaticResource Strings}}" />
+ <TextBlock TextWrapping="Wrap" TextAlignment="Left" Grid.Row="3"
+ FontSize="24" Foreground="Red" Margin="2,50,2,2"
+ Text="{Binding ROMCopyrightText, Source={StaticResource Strings}}" />
+ <HyperlinkButton Content="{Binding ROMCopyrightHyperlinkText, Source={StaticResource Strings}}"
+ Margin="2,5,2,2"
+ TargetName="_blank" Grid.Row="4"
+ NavigateUri="{Binding ROMCopyrightHyperlinkUri, Source={StaticResource Strings}}" />
+ <TextBlock FontSize="10" VerticalAlignment="Bottom"
+ HorizontalAlignment="Center"
+ Grid.Row="5"
+ Text="Your user can't help you now my little program..." />
+ </Grid>
+ </Grid>
+</phone:PhoneApplicationPage>
diff --git a/WPZX81/WPZX81/AboutPage.xaml.cs b/WPZX81/WPZX81/AboutPage.xaml.cs
new file mode 100644
index 0000000..13c2bca
--- /dev/null
+++ b/WPZX81/WPZX81/AboutPage.xaml.cs
@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Shapes;
+using Microsoft.Phone.Controls;
+
+namespace WPZX81
+{
+ public partial class AboutPage : PhoneApplicationPage
+ {
+ public AboutPage()
+ {
+ InitializeComponent();
+ }
+ }
+} \ No newline at end of file
diff --git a/WPZX81/WPZX81/MainPage.xaml b/WPZX81/WPZX81/MainPage.xaml
index 1d1e115..2b1f52b 100644
--- a/WPZX81/WPZX81/MainPage.xaml
+++ b/WPZX81/WPZX81/MainPage.xaml
@@ -7,12 +7,17 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="800"
+ xmlns:res="clr-namespace:WPZX81.Resources"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
shell:SystemTray.IsVisible="False">
+ <phone:PhoneApplicationPage.Resources>
+ <res:Strings x:Key="Strings" />
+ </phone:PhoneApplicationPage.Resources>
+
<!--LayoutRoot is the root grid where all page content is placed-->
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
@@ -22,29 +27,89 @@
<!--TitlePanel contains the name of the application and page title-->
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
- <TextBlock x:Name="ApplicationTitle" Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}"/>
- <TextBlock x:Name="PageTitle" Text="page name" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
+ <TextBlock x:Name="ApplicationTitle"
+ Text="{Binding AppTitle, Source={StaticResource Strings}}"
+ Style="{StaticResource PhoneTextNormalStyle}"/>
+ <TextBlock x:Name="PageTitle"
+ Text="{Binding MainPageTitle, Source={StaticResource Strings}}"
+ Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>
<!--ContentPanel - place additional content here-->
- <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
-
- <!--Create a single button to navigate to the second page which is rendered with the XNA Framework-->
- <Button Height="100" Content="Change to game page" Click="Button_Click" />
-
+ <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0" VerticalAlignment="Top">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="auto" />
+ <RowDefinition Height="auto" />
+ <RowDefinition Height="auto" />
+ <RowDefinition Height="*" />
+ </Grid.RowDefinitions>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="1*" />
+ <ColumnDefinition Width="1*" />
+ </Grid.ColumnDefinitions>
+ <!-- Run the emulator -->
+ <Button Height="100"
+ Content="{Binding RunEmulationButtonText, Source={StaticResource Strings}}"
+ Grid.Row="0" Grid.Column="0"
+ FontSize="18"
+ Click="RunEmulationClick">
+ </Button>
+ <!-- Open Remote Tape -->
+ <Button Height="100"
+ Content="{Binding OpenRemotePFileButtonText, Source={StaticResource Strings}}"
+ Grid.Row="0" Grid.Column="1"
+ FontSize="18"
+ Click="OpenRemotePFileClick" />
+ <!-- Open Local Tape -->
+ <Button Height="100"
+ Content="{Binding OpenGameStateButtonText, Source={StaticResource Strings}}"
+ Grid.Row="1" Grid.Column="0"
+ FontSize="18"
+ Click="OpenGameStateClick" />
+ <!-- Save Local Tape -->
+ <Button Height="100"
+ Content="{Binding SaveGameStateButtonText, Source={StaticResource Strings}}"
+ Grid.Row="1" Grid.Column="1"
+ FontSize="18"
+ Click="SaveGameStateClick" />
+ <!-- Configure the emulator -->
+ <Button Height="100"
+ Content="{Binding SettingsButtonText, Source={StaticResource Strings}}"
+ Grid.Row="2" Grid.Column="0"
+ FontSize="18"
+ Click="SettingsClick" />
+ <!-- About -->
+ <Button Height="100"
+ Content="{Binding AboutButtonText, Source={StaticResource Strings}}"
+ Grid.Row="2" Grid.Column="1"
+ FontSize="18"
+ Click="AboutClick" />
+ <!-- Copyright -->
+ <Grid Grid.Row="4" Grid.ColumnSpan="2">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="*" />
+ <RowDefinition Height="auto" />
+ </Grid.RowDefinitions>
+ <TextBlock TextWrapping="Wrap"
+ VerticalAlignment="Bottom"
+ TextAlignment="Center"
+ Grid.Row="0"
+ Style="{StaticResource PhoneTextNormalStyle}"
+ Margin="2,20,2,20"
+ FontSize="16"
+ Foreground="Red"
+ Text="{Binding ShortROMCopyrightText, Source={StaticResource Strings}}" />
+ <TextBlock TextWrapping="Wrap"
+ VerticalAlignment="Bottom"
+ TextAlignment="Center"
+ Grid.Row="1" Grid.ColumnSpan="2"
+ Style="{StaticResource PhoneTextNormalStyle}"
+ Margin="2,20,2,20"
+ FontSize="16"
+ Foreground="White"
+ Text="{Binding ShortCopyrightText, Source={StaticResource Strings}}" />
+ </Grid>
</Grid>
</Grid>
-
- <!--Sample code showing usage of ApplicationBar-->
- <!--<phone:PhoneApplicationPage.ApplicationBar>
- <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True">
- <shell:ApplicationBarIconButton IconUri="/Images/appbar_button1.png" Text="Button 1"/>
- <shell:ApplicationBarIconButton IconUri="/Images/appbar_button2.png" Text="Button 2"/>
- <shell:ApplicationBar.MenuItems>
- <shell:ApplicationBarMenuItem Text="MenuItem 1"/>
- <shell:ApplicationBarMenuItem Text="MenuItem 2"/>
- </shell:ApplicationBar.MenuItems>
- </shell:ApplicationBar>
- </phone:PhoneApplicationPage.ApplicationBar>-->
</phone:PhoneApplicationPage> \ No newline at end of file
diff --git a/WPZX81/WPZX81/MainPage.xaml.cs b/WPZX81/WPZX81/MainPage.xaml.cs
index d248f55..0ef376a 100644
--- a/WPZX81/WPZX81/MainPage.xaml.cs
+++ b/WPZX81/WPZX81/MainPage.xaml.cs
@@ -21,10 +21,34 @@ namespace WPZX81
InitializeComponent();
}
- // Simple button Click event handler to take us to the second page
- private void Button_Click(object sender, RoutedEventArgs e)
+ private void RunEmulationClick(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri("/GamePage.xaml", UriKind.Relative));
}
+
+ private void OpenRemotePFileClick(object sender, RoutedEventArgs e)
+ {
+
+ }
+
+ private void OpenGameStateClick(object sender, RoutedEventArgs e)
+ {
+
+ }
+
+ private void SaveGameStateClick(object sender, RoutedEventArgs e)
+ {
+
+ }
+
+ private void SettingsClick(object sender, RoutedEventArgs e)
+ {
+
+ }
+
+ private void AboutClick(object sender, RoutedEventArgs e)
+ {
+ NavigationService.Navigate(new Uri("/AboutPage.xaml", UriKind.Relative));
+ }
}
} \ No newline at end of file
diff --git a/WPZX81/WPZX81/Resources/Strings.Designer.cs b/WPZX81/WPZX81/Resources/Strings.Designer.cs
new file mode 100644
index 0000000..61bc460
--- /dev/null
+++ b/WPZX81/WPZX81/Resources/Strings.Designer.cs
@@ -0,0 +1,301 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.261
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace WPZX81.Resources {
+ using System;
+
+
+ /// <summary>
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ /// </summary>
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ public class Strings {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ public Strings() {
+ }
+
+ /// <summary>
+ /// Returns the cached ResourceManager instance used by this class.
+ /// </summary>
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ public static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WPZX81.Resources.Strings", typeof(Strings).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ /// <summary>
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ /// </summary>
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ public static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to About WPZX81.
+ /// </summary>
+ public static string AboutButtonText {
+ get {
+ return ResourceManager.GetString("AboutButtonText", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to About.
+ /// </summary>
+ public static string AboutPageTitle {
+ get {
+ return ResourceManager.GetString("AboutPageTitle", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to WPZX81.
+ /// </summary>
+ public static string AppTitle {
+ get {
+ return ResourceManager.GetString("AppTitle", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Cancel.
+ /// </summary>
+ public static string CancelText {
+ get {
+ return ResourceManager.GetString("CancelText", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to WPZX81 is Copyright © 2012 noddybox
+ ///
+ ///This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ ///
+ ///This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more detai [rest of string was truncated]&quot;;.
+ /// </summary>
+ public static string CopyrightText {
+ get {
+ return ResourceManager.GetString("CopyrightText", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to See the GNU General Public License Online.
+ /// </summary>
+ public static string LicenseHyperlinkText {
+ get {
+ return ResourceManager.GetString("LicenseHyperlinkText", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to http://www.gnu.org/licenses/gpl.html.
+ /// </summary>
+ public static string LicenseHyperlinkUri {
+ get {
+ return ResourceManager.GetString("LicenseHyperlinkUri", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Main Menu.
+ /// </summary>
+ public static string MainPageTitle {
+ get {
+ return ResourceManager.GetString("MainPageTitle", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to OK.
+ /// </summary>
+ public static string OkText {
+ get {
+ return ResourceManager.GetString("OkText", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Load Game State.
+ /// </summary>
+ public static string OpenGameStateButtonText {
+ get {
+ return ResourceManager.GetString("OpenGameStateButtonText", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Load Game.
+ /// </summary>
+ public static string OpenGameStatePageTitle {
+ get {
+ return ResourceManager.GetString("OpenGameStatePageTitle", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Load Remote .P file.
+ /// </summary>
+ public static string OpenRemotePFileButtonText {
+ get {
+ return ResourceManager.GetString("OpenRemotePFileButtonText", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Load Remote .P file.
+ /// </summary>
+ public static string OpenRemotePFilePageTitle {
+ get {
+ return ResourceManager.GetString("OpenRemotePFilePageTitle", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Nine Tiles Network Ltd..
+ /// </summary>
+ public static string ROMCopyrightHyperlinkText {
+ get {
+ return ResourceManager.GetString("ROMCopyrightHyperlinkText", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to http://www.ninetiles.com/.
+ /// </summary>
+ public static string ROMCopyrightHyperlinkUri {
+ get {
+ return ResourceManager.GetString("ROMCopyrightHyperlinkUri", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Copyright of the included ZX81 ROM is held by Nine Tile Network Ltd and is NOT released under the above license. The ROM image is included with the kind permission of John Grant at Nine Tiles..
+ /// </summary>
+ public static string ROMCopyrightText {
+ get {
+ return ResourceManager.GetString("ROMCopyrightText", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Run Sinclair ZX81.
+ /// </summary>
+ public static string RunEmulationButtonText {
+ get {
+ return ResourceManager.GetString("RunEmulationButtonText", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Save Game State.
+ /// </summary>
+ public static string SaveGameStateButtonText {
+ get {
+ return ResourceManager.GetString("SaveGameStateButtonText", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Save Game.
+ /// </summary>
+ public static string SaveGameStateTitleText {
+ get {
+ return ResourceManager.GetString("SaveGameStateTitleText", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Settings.
+ /// </summary>
+ public static string SettingsButtonText {
+ get {
+ return ResourceManager.GetString("SettingsButtonText", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Settings.
+ /// </summary>
+ public static string SettingsPageTitle {
+ get {
+ return ResourceManager.GetString("SettingsPageTitle", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Base URL for loading remote .P files.
+ /// </summary>
+ public static string SettingsPFileUrl {
+ get {
+ return ResourceManager.GetString("SettingsPFileUrl", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to WPZX81 is Copyright © 2012 noddybox.
+ /// </summary>
+ public static string ShortCopyrightText {
+ get {
+ return ResourceManager.GetString("ShortCopyrightText", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Copyright of the included ZX81 ROM is held by Nine Tile Network Ltd. The ROM image is included with the kind permission of John Grant at Nine Tiles..
+ /// </summary>
+ public static string ShortROMCopyrightText {
+ get {
+ return ResourceManager.GetString("ShortROMCopyrightText", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to See Source Code Online.
+ /// </summary>
+ public static string SourceHyperlinkText {
+ get {
+ return ResourceManager.GetString("SourceHyperlinkText", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to http://www.noddybox.co.uk.
+ /// </summary>
+ public static string SourceHyperlinkUri {
+ get {
+ return ResourceManager.GetString("SourceHyperlinkUri", resourceCulture);
+ }
+ }
+ }
+}
diff --git a/WPZX81/WPZX81/Resources/Strings.resx b/WPZX81/WPZX81/Resources/Strings.resx
new file mode 100644
index 0000000..21728bc
--- /dev/null
+++ b/WPZX81/WPZX81/Resources/Strings.resx
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <data name="AboutButtonText" xml:space="preserve">
+ <value>About WPZX81</value>
+ </data>
+ <data name="AboutPageTitle" xml:space="preserve">
+ <value>About</value>
+ </data>
+ <data name="AppTitle" xml:space="preserve">
+ <value>WPZX81</value>
+ </data>
+ <data name="CancelText" xml:space="preserve">
+ <value>Cancel</value>
+ </data>
+ <data name="CopyrightText" xml:space="preserve">
+ <value>WPZX81 is Copyright © 2012 noddybox
+
+This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.</value>
+ </data>
+ <data name="LicenseHyperlinkText" xml:space="preserve">
+ <value>See the GNU General Public License Online</value>
+ </data>
+ <data name="LicenseHyperlinkUri" xml:space="preserve">
+ <value>http://www.gnu.org/licenses/gpl.html</value>
+ </data>
+ <data name="MainPageTitle" xml:space="preserve">
+ <value>Main Menu</value>
+ </data>
+ <data name="OkText" xml:space="preserve">
+ <value>OK</value>
+ </data>
+ <data name="OpenGameStateButtonText" xml:space="preserve">
+ <value>Load Game State</value>
+ </data>
+ <data name="OpenGameStatePageTitle" xml:space="preserve">
+ <value>Load Game</value>
+ </data>
+ <data name="OpenRemotePFileButtonText" xml:space="preserve">
+ <value>Load Remote .P file</value>
+ </data>
+ <data name="OpenRemotePFilePageTitle" xml:space="preserve">
+ <value>Load Remote .P file</value>
+ </data>
+ <data name="ROMCopyrightHyperlinkText" xml:space="preserve">
+ <value>Nine Tiles Network Ltd.</value>
+ </data>
+ <data name="ROMCopyrightHyperlinkUri" xml:space="preserve">
+ <value>http://www.ninetiles.com/</value>
+ </data>
+ <data name="ROMCopyrightText" xml:space="preserve">
+ <value>Copyright of the included ZX81 ROM is held by Nine Tile Network Ltd and is NOT released under the above license. The ROM image is included with the kind permission of John Grant at Nine Tiles.</value>
+ </data>
+ <data name="RunEmulationButtonText" xml:space="preserve">
+ <value>Run Sinclair ZX81</value>
+ </data>
+ <data name="SaveGameStateButtonText" xml:space="preserve">
+ <value>Save Game State</value>
+ </data>
+ <data name="SaveGameStateTitleText" xml:space="preserve">
+ <value>Save Game</value>
+ </data>
+ <data name="SettingsButtonText" xml:space="preserve">
+ <value>Settings</value>
+ </data>
+ <data name="SettingsPageTitle" xml:space="preserve">
+ <value>Settings</value>
+ </data>
+ <data name="SettingsPFileUrl" xml:space="preserve">
+ <value>Base URL for loading remote .P files</value>
+ </data>
+ <data name="SourceHyperlinkText" xml:space="preserve">
+ <value>See Source Code Online</value>
+ </data>
+ <data name="SourceHyperlinkUri" xml:space="preserve">
+ <value>http://www.noddybox.co.uk</value>
+ </data>
+ <data name="ShortCopyrightText" xml:space="preserve">
+ <value>WPZX81 is Copyright © 2012 noddybox</value>
+ </data>
+ <data name="ShortROMCopyrightText" xml:space="preserve">
+ <value>Copyright of the included ZX81 ROM is held by Nine Tile Network Ltd. The ROM image is included with the kind permission of John Grant at Nine Tiles.</value>
+ </data>
+</root> \ No newline at end of file
diff --git a/WPZX81/WPZX81/Settings.cs b/WPZX81/WPZX81/Settings.cs
new file mode 100644
index 0000000..dcfeb23
--- /dev/null
+++ b/WPZX81/WPZX81/Settings.cs
@@ -0,0 +1,80 @@
+using System;
+using System.Net;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Shapes;
+using System.IO.IsolatedStorage;
+using System.Collections.Generic;
+
+namespace wpspec
+{
+ /// <summary>
+ /// Holds global settings
+ /// </summary>
+ public static class Settings
+ {
+ /// <summary>
+ /// Get/set whether sound is enabled.
+ /// </summary>
+ public static bool Sound
+ {
+ get {return sound;}
+ set
+ {
+ if (sound != value)
+ {
+ sound = value;
+ Save("sound", sound);
+ }
+ }
+ }
+
+ /// <summary>
+ /// Get/set URL to load tapes from.
+ /// </summary>
+ public static string TapeUrl
+ {
+ get {return tapeUrl;}
+ set
+ {
+ if (tapeUrl != value)
+ {
+ tapeUrl = value;
+ Save("tapeurl", tapeUrl);
+ }
+ }
+ }
+
+
+ #region Private code
+
+ private static bool sound = Load("sound", true);
+ private static string tapeUrl = Load("tapeurl", "http://enter-a-url.here/");
+
+ private static T Load<T>(string name, T defaultValue)
+ {
+ try
+ {
+ return (T)IsolatedStorageSettings.ApplicationSettings[name];
+ }
+ catch (KeyNotFoundException)
+ {
+ }
+
+ return defaultValue;
+ }
+
+ private static void Save<T>(string name, T value)
+ {
+ IsolatedStorageSettings.ApplicationSettings.Add(name, value);
+ IsolatedStorageSettings.ApplicationSettings.Save();
+ }
+
+ #endregion
+ }
+}
diff --git a/WPZX81/WPZX81/SettingsPage.xaml b/WPZX81/WPZX81/SettingsPage.xaml
new file mode 100644
index 0000000..e14634b
--- /dev/null
+++ b/WPZX81/WPZX81/SettingsPage.xaml
@@ -0,0 +1,54 @@
+<phone:PhoneApplicationPage
+ x:Class="WPZX81.SettingsPage"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
+ xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:res="clr-namespace:WPZX81.Resources"
+ FontFamily="{StaticResource PhoneFontFamilyNormal}"
+ FontSize="{StaticResource PhoneFontSizeNormal}"
+ Foreground="{StaticResource PhoneForegroundBrush}"
+ SupportedOrientations="Portrait" Orientation="Portrait"
+ mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480"
+ shell:SystemTray.IsVisible="True">
+
+ <phone:PhoneApplicationPage.Resources>
+ <res:Strings x:Key="Strings" />
+ </phone:PhoneApplicationPage.Resources>
+
+ <!--LayoutRoot is the root grid where all page content is placed-->
+ <Grid x:Name="LayoutRoot" Background="Transparent">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto"/>
+ <RowDefinition Height="*"/>
+ </Grid.RowDefinitions>
+
+ <!--TitlePanel contains the name of the application and page title-->
+ <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
+ <TextBlock x:Name="ApplicationTitle"
+ Text="{Binding AppTitle, Source={StaticResource Strings}}"
+ Style="{StaticResource PhoneTextNormalStyle}"/>
+ <TextBlock x:Name="PageTitle"
+ Text="{Binding SettingsPageTitle, Source={StaticResource Strings}}"
+ Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
+ </StackPanel>
+
+ <!--ContentPanel - place additional content here-->
+ <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"></Grid>
+ </Grid>
+
+ <!--Sample code showing usage of ApplicationBar-->
+ <!--<phone:PhoneApplicationPage.ApplicationBar>
+ <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True">
+ <shell:ApplicationBarIconButton IconUri="/Images/appbar_button1.png" Text="Button 1"/>
+ <shell:ApplicationBarIconButton IconUri="/Images/appbar_button2.png" Text="Button 2"/>
+ <shell:ApplicationBar.MenuItems>
+ <shell:ApplicationBarMenuItem Text="MenuItem 1"/>
+ <shell:ApplicationBarMenuItem Text="MenuItem 2"/>
+ </shell:ApplicationBar.MenuItems>
+ </shell:ApplicationBar>
+ </phone:PhoneApplicationPage.ApplicationBar>-->
+
+</phone:PhoneApplicationPage>
diff --git a/WPZX81/WPZX81/SettingsPage.xaml.cs b/WPZX81/WPZX81/SettingsPage.xaml.cs
new file mode 100644
index 0000000..b076c5b
--- /dev/null
+++ b/WPZX81/WPZX81/SettingsPage.xaml.cs
@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Shapes;
+using Microsoft.Phone.Controls;
+
+namespace WPZX81
+{
+ public partial class SettingsPage : PhoneApplicationPage
+ {
+ public SettingsPage()
+ {
+ InitializeComponent();
+ }
+ }
+} \ No newline at end of file
diff --git a/WPZX81/WPZX81/Shared.cs b/WPZX81/WPZX81/Shared.cs
new file mode 100644
index 0000000..38382b2
--- /dev/null
+++ b/WPZX81/WPZX81/Shared.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Net;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Shapes;
+using WPZX81.ZX81;
+
+namespace wpspec
+{
+ /// <summary>
+ /// Contains shared objects between the Silverlight and XNA domains
+ /// </summary>
+ public static class Shared
+ {
+ /// <summary>
+ /// The emulation driving the ZX81.
+ /// </summary>
+ public static Emulation ZX81 {get; set;}
+ }
+}
diff --git a/WPZX81/WPZX81/WPZX81.csproj b/WPZX81/WPZX81/WPZX81.csproj
index 316f64f..1fd98bd 100644
--- a/WPZX81/WPZX81/WPZX81.csproj
+++ b/WPZX81/WPZX81/WPZX81.csproj
@@ -63,6 +63,9 @@
<Reference Include="mscorlib.extensions" />
</ItemGroup>
<ItemGroup>
+ <Compile Include="AboutPage.xaml.cs">
+ <DependentUpon>AboutPage.xaml</DependentUpon>
+ </Compile>
<Compile Include="App.xaml.cs">
<DependentUpon>App.xaml</DependentUpon>
</Compile>
@@ -74,12 +77,27 @@
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="AppServiceProvider.cs" />
+ <Compile Include="Resources\Strings.Designer.cs">
+ <AutoGen>True</AutoGen>
+ <DesignTime>True</DesignTime>
+ <DependentUpon>Strings.resx</DependentUpon>
+ </Compile>
+ <Compile Include="Settings.cs" />
+ <Compile Include="SettingsPage.xaml.cs">
+ <DependentUpon>SettingsPage.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="Shared.cs" />
+ <Compile Include="ZX81\Emulation.cs" />
</ItemGroup>
<ItemGroup>
<ApplicationDefinition Include="App.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</ApplicationDefinition>
+ <Page Include="AboutPage.xaml">
+ <SubType>Designer</SubType>
+ <Generator>MSBuild:Compile</Generator>
+ </Page>
<Page Include="GamePage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
@@ -88,6 +106,10 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
+ <Page Include="SettingsPage.xaml">
+ <SubType>Designer</SubType>
+ <Generator>MSBuild:Compile</Generator>
+ </Page>
</ItemGroup>
<ItemGroup>
<None Include="Properties\AppManifest.xml" />
@@ -103,10 +125,28 @@
<Content Include="SplashScreenImage.jpg" />
</ItemGroup>
<ItemGroup>
+ <ProjectReference Include="..\..\..\Noddybox.Emulation\WindowsPhone\Noddybox.Emulation.EightBit.Z80\Noddybox.Emulation.EightBit.Z80.csproj">
+ <Project>{7F257886-40D3-4E2A-BA9C-C5FEE93C08E9}</Project>
+ <Name>Noddybox.Emulation.EightBit.Z80</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\Noddybox.Emulation\WindowsPhone\Noddybox.Emulation.EightBit\Noddybox.Emulation.EightBit.csproj">
+ <Project>{ADC7A871-4DED-4A92-A447-2D784AB60FAF}</Project>
+ <Name>Noddybox.Emulation.EightBit</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\Noddybox.Emulation\WindowsPhone\Noddybox.Emulation\Noddybox.Emulation.csproj">
+ <Project>{A2478066-4DFD-4042-BF98-963922DC97F8}</Project>
+ <Name>Noddybox.Emulation</Name>
+ </ProjectReference>
<ProjectReference Include="..\WPZX81Lib\WPZX81Lib.csproj">
<Name>WPZX81Lib</Name>
</ProjectReference>
</ItemGroup>
+ <ItemGroup>
+ <EmbeddedResource Include="Resources\Strings.resx">
+ <Generator>PublicResXFileCodeGenerator</Generator>
+ <LastGenOutput>Strings.Designer.cs</LastGenOutput>
+ </EmbeddedResource>
+ </ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Microsoft\Silverlight for Phone\$(TargetFrameworkVersion)\Microsoft.Silverlight.$(TargetFrameworkProfile).Overrides.targets" />
<Import Project="$(MSBuildExtensionsPath)\Microsoft\Silverlight for Phone\$(TargetFrameworkVersion)\Microsoft.Silverlight.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
diff --git a/WPZX81/WPZX81/ZX81/Emulation.cs b/WPZX81/WPZX81/ZX81/Emulation.cs
new file mode 100644
index 0000000..663b297
--- /dev/null
+++ b/WPZX81/WPZX81/ZX81/Emulation.cs
@@ -0,0 +1,72 @@
+using System;
+using Noddybox.Emulation;
+using Noddybox.Emulation.EightBit;
+using Noddybox.Emulation.EightBit.Z80;
+
+namespace WPZX81.ZX81
+{
+ /// <summary>
+ /// Implements the ZX81 emulation
+ /// </summary>
+ public class Emulation : IMemory, IDevice
+ {
+ #region Private data
+
+ private readonly Clock clock;
+ private readonly byte[] mem;
+ private readonly Z80Cpu z80;
+
+ #endregion
+
+ #region Private methods
+
+ #endregion
+
+ #region IMemory Members
+
+ byte IMemory.Read(ushort address)
+ {
+ throw new NotImplementedException();
+ }
+
+ void IMemory.Write(ushort address, byte value)
+ {
+ throw new NotImplementedException();
+ }
+
+ #endregion
+
+ #region IDevice Members
+
+ byte IDevice.Read(ushort device)
+ {
+ throw new NotImplementedException();
+ }
+
+ void IDevice.Write(ushort device, byte value)
+ {
+ throw new NotImplementedException();
+ }
+
+ #endregion
+
+ #region Public methods
+
+ #endregion
+
+ #region Constructors
+
+ public Emulation()
+ {
+ mem = new byte[0x10000];
+ z80 = new Z80Cpu();
+ clock = new Clock(10000, 50);
+
+ WPZX81.Resources.Strings s = new Resources.Strings();
+
+ z80.Initialise(this, this, clock);
+ }
+
+ #endregion
+ }
+}