summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--wpspec/wpspec/DisplayKeyboardPage.xaml23
-rw-r--r--wpspec/wpspec/DisplayKeyboardPage.xaml.cs23
-rw-r--r--wpspec/wpspec/GamePage.xaml.cs10
-rw-r--r--wpspec/wpspec/MainPage.xaml4
-rw-r--r--wpspec/wpspec/MainPage.xaml.cs4
-rw-r--r--wpspec/wpspec/Resources/SpectrumKeyboard.pngbin0 -> 652083 bytes
-rw-r--r--wpspec/wpspec/Resources/Strings.Designer.cs68
-rw-r--r--wpspec/wpspec/Resources/Strings.resx24
-rw-r--r--wpspec/wpspec/SoundManager.cs57
-rw-r--r--wpspec/wpspec/Spectrum/Emulation.cs31
-rw-r--r--wpspec/wpspec/Spectrum/SpectrumKeySymbol.cs7
-rw-r--r--wpspec/wpspec/UtilsPage.xaml88
-rw-r--r--wpspec/wpspec/UtilsPage.xaml.cs54
-rw-r--r--wpspec/wpspec/wpspec.csproj16
14 files changed, 380 insertions, 29 deletions
diff --git a/wpspec/wpspec/DisplayKeyboardPage.xaml b/wpspec/wpspec/DisplayKeyboardPage.xaml
new file mode 100644
index 0000000..670d71e
--- /dev/null
+++ b/wpspec/wpspec/DisplayKeyboardPage.xaml
@@ -0,0 +1,23 @@
+<phone:PhoneApplicationPage
+ x:Class="wpspec.DisplayKeyboardPage"
+ 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"
+ 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">
+
+ <ScrollViewer>
+ <Image Source="/wpspec;component/Resources/SpectrumKeyboard.png">
+ <Image.RenderTransform>
+ <ScaleTransform ScaleX="2" ScaleY="2" />
+ </Image.RenderTransform>
+ </Image>
+ </ScrollViewer>
+</phone:PhoneApplicationPage>
diff --git a/wpspec/wpspec/DisplayKeyboardPage.xaml.cs b/wpspec/wpspec/DisplayKeyboardPage.xaml.cs
new file mode 100644
index 0000000..0b793c8
--- /dev/null
+++ b/wpspec/wpspec/DisplayKeyboardPage.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 wpspec
+{
+ public partial class DisplayKeyboardPage : PhoneApplicationPage
+ {
+ public DisplayKeyboardPage()
+ {
+ InitializeComponent();
+ }
+ }
+} \ No newline at end of file
diff --git a/wpspec/wpspec/GamePage.xaml.cs b/wpspec/wpspec/GamePage.xaml.cs
index 4c95e4f..fef97d2 100644
--- a/wpspec/wpspec/GamePage.xaml.cs
+++ b/wpspec/wpspec/GamePage.xaml.cs
@@ -116,6 +116,10 @@ namespace wpspec
keyboard.KeyEvent += HandleKeyboardEvent;
keyboard.TouchEvent += HandleTouchEvent;
+ // Initialise the sound manager
+ //
+ SoundManager.StartSoundManager();
+
base.OnNavigatedTo(e);
}
@@ -132,10 +136,16 @@ namespace wpspec
screen.Dispose();
screen = null;
+ // Remove the keyboard
+ //
keyboard.KeyEvent -= HandleKeyboardEvent;
keyboard.TouchEvent -= HandleTouchEvent;
keyboard = null;
+ // Stop the sound manager
+ //
+ SoundManager.StopSoundManager();
+
base.OnNavigatedFrom(e);
}
diff --git a/wpspec/wpspec/MainPage.xaml b/wpspec/wpspec/MainPage.xaml
index 655a1d8..6a6b8c8 100644
--- a/wpspec/wpspec/MainPage.xaml
+++ b/wpspec/wpspec/MainPage.xaml
@@ -99,10 +99,10 @@
Click="SettingsClick" />
<!-- Run the Monitor -->
<Button Height="120"
- Content="{Binding DisassemblerButtonText, Source={StaticResource Strings}}"
+ Content="{Binding UtilsButtonText, Source={StaticResource Strings}}"
Grid.Row="3" Grid.Column="1"
Background="Black"
- Click="DisassemblerClick" />
+ Click="UtilsClick" />
<!-- About -->
<Button Height="120"
Content="{Binding AboutButtonText, Source={StaticResource Strings}}"
diff --git a/wpspec/wpspec/MainPage.xaml.cs b/wpspec/wpspec/MainPage.xaml.cs
index 3ebb4be..92c7ac8 100644
--- a/wpspec/wpspec/MainPage.xaml.cs
+++ b/wpspec/wpspec/MainPage.xaml.cs
@@ -51,9 +51,9 @@ namespace wpspec
NavigationService.Navigate(new Uri("/SaveLocalTapePage.xaml", UriKind.Relative));
}
- private void DisassemblerClick(object sender, RoutedEventArgs e)
+ private void UtilsClick(object sender, RoutedEventArgs e)
{
- NavigationService.Navigate(new Uri("/DisassemblerPage.xaml", UriKind.Relative));
+ NavigationService.Navigate(new Uri("/UtilsPage.xaml", UriKind.Relative));
}
}
} \ No newline at end of file
diff --git a/wpspec/wpspec/Resources/SpectrumKeyboard.png b/wpspec/wpspec/Resources/SpectrumKeyboard.png
new file mode 100644
index 0000000..d32886b
--- /dev/null
+++ b/wpspec/wpspec/Resources/SpectrumKeyboard.png
Binary files differ
diff --git a/wpspec/wpspec/Resources/Strings.Designer.cs b/wpspec/wpspec/Resources/Strings.Designer.cs
index 74d7d90..80e2336 100644
--- a/wpspec/wpspec/Resources/Strings.Designer.cs
+++ b/wpspec/wpspec/Resources/Strings.Designer.cs
@@ -1,7 +1,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
-// Runtime Version:4.0.30319.261
+// Runtime Version:4.0.30319.269
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -119,47 +119,47 @@ namespace wpspec.Resources {
}
/// <summary>
- /// Looks up a localized string similar to Display Memory.
+ /// Looks up a localized string similar to Disassembler.
/// </summary>
- public static string DisassemblerDisplayMemoryButtonText {
+ public static string DisassemblerPageTitleText {
get {
- return ResourceManager.GetString("DisassemblerDisplayMemoryButtonText", resourceCulture);
+ return ResourceManager.GetString("DisassemblerPageTitleText", resourceCulture);
}
}
/// <summary>
- /// Looks up a localized string similar to Display Screen.
+ /// Looks up a localized string similar to Run Frame.
/// </summary>
- public static string DisassemblerDisplayScreenButtonText {
+ public static string DisassemblerRunFrameButtonText {
get {
- return ResourceManager.GetString("DisassemblerDisplayScreenButtonText", resourceCulture);
+ return ResourceManager.GetString("DisassemblerRunFrameButtonText", resourceCulture);
}
}
/// <summary>
- /// Looks up a localized string similar to Disassembler.
+ /// Looks up a localized string similar to Step.
/// </summary>
- public static string DisassemblerPageTitleText {
+ public static string DisassemblerStepButtonText {
get {
- return ResourceManager.GetString("DisassemblerPageTitleText", resourceCulture);
+ return ResourceManager.GetString("DisassemblerStepButtonText", resourceCulture);
}
}
/// <summary>
- /// Looks up a localized string similar to Run Frame.
+ /// Looks up a localized string similar to Display Spectrum Keyboard.
/// </summary>
- public static string DisassemblerRunFrameButtonText {
+ public static string DisplayKeyboardButtonText {
get {
- return ResourceManager.GetString("DisassemblerRunFrameButtonText", resourceCulture);
+ return ResourceManager.GetString("DisplayKeyboardButtonText", resourceCulture);
}
}
/// <summary>
- /// Looks up a localized string similar to Step.
+ /// Looks up a localized string similar to Display Tape Contents.
/// </summary>
- public static string DisassemblerStepButtonText {
+ public static string DisplayTapeButtonText {
get {
- return ResourceManager.GetString("DisassemblerStepButtonText", resourceCulture);
+ return ResourceManager.GetString("DisplayTapeButtonText", resourceCulture);
}
}
@@ -200,6 +200,15 @@ namespace wpspec.Resources {
}
/// <summary>
+ /// Looks up a localized string similar to Manage Saved States.
+ /// </summary>
+ public static string ManageSavedStatesButtonText {
+ get {
+ return ResourceManager.GetString("ManageSavedStatesButtonText", resourceCulture);
+ }
+ }
+
+ /// <summary>
/// Looks up a localized string similar to OK.
/// </summary>
public static string OkText {
@@ -245,6 +254,15 @@ namespace wpspec.Resources {
}
/// <summary>
+ /// Looks up a localized string similar to Poke Memory.
+ /// </summary>
+ public static string PokeMemoryButtonText {
+ get {
+ return ResourceManager.GetString("PokeMemoryButtonText", resourceCulture);
+ }
+ }
+
+ /// <summary>
/// Looks up a localized string similar to Failed to fetch tape; got error - &quot;{0}&quot;.
/// </summary>
public static string RemoteTapeFetchFailed {
@@ -405,5 +423,23 @@ namespace wpspec.Resources {
return ResourceManager.GetString("SourceHyperlinkUri", resourceCulture);
}
}
+
+ /// <summary>
+ /// Looks up a localized string similar to Utilities.
+ /// </summary>
+ public static string UtilsButtonText {
+ get {
+ return ResourceManager.GetString("UtilsButtonText", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Utilities.
+ /// </summary>
+ public static string UtilsPageTitle {
+ get {
+ return ResourceManager.GetString("UtilsPageTitle", resourceCulture);
+ }
+ }
}
}
diff --git a/wpspec/wpspec/Resources/Strings.resx b/wpspec/wpspec/Resources/Strings.resx
index d85664c..413a2f4 100644
--- a/wpspec/wpspec/Resources/Strings.resx
+++ b/wpspec/wpspec/Resources/Strings.resx
@@ -139,12 +139,6 @@ This program is distributed in the hope that it will be useful, but WITHOUT ANY
<data name="DisassemblerButtonText" xml:space="preserve">
<value>Disassembler</value>
</data>
- <data name="DisassemblerDisplayMemoryButtonText" xml:space="preserve">
- <value>Display Memory</value>
- </data>
- <data name="DisassemblerDisplayScreenButtonText" xml:space="preserve">
- <value>Display Screen</value>
- </data>
<data name="DisassemblerPageTitleText" xml:space="preserve">
<value>Disassembler</value>
</data>
@@ -235,4 +229,22 @@ This program is distributed in the hope that it will be useful, but WITHOUT ANY
<data name="SourceHyperlinkUri" xml:space="preserve">
<value>http://www.noddybox.co.uk</value>
</data>
+ <data name="DisplayKeyboardButtonText" xml:space="preserve">
+ <value>Display Spectrum Keyboard</value>
+ </data>
+ <data name="DisplayTapeButtonText" xml:space="preserve">
+ <value>Display Tape Contents</value>
+ </data>
+ <data name="UtilsButtonText" xml:space="preserve">
+ <value>Utilities</value>
+ </data>
+ <data name="UtilsPageTitle" xml:space="preserve">
+ <value>Utilities</value>
+ </data>
+ <data name="ManageSavedStatesButtonText" xml:space="preserve">
+ <value>Manage Saved States</value>
+ </data>
+ <data name="PokeMemoryButtonText" xml:space="preserve">
+ <value>Poke Memory</value>
+ </data>
</root> \ No newline at end of file
diff --git a/wpspec/wpspec/SoundManager.cs b/wpspec/wpspec/SoundManager.cs
new file mode 100644
index 0000000..e9d079e
--- /dev/null
+++ b/wpspec/wpspec/SoundManager.cs
@@ -0,0 +1,57 @@
+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 Microsoft.Xna.Framework.Audio;
+
+namespace wpspec
+{
+ /// <summary>
+ /// Manages sound for the system.
+ /// </summary>
+ public static class SoundManager
+ {
+ #region Private data
+
+ /// <summary>
+ /// Starts the sound manager when XNA is activated.
+ /// </summary>
+ static public void StartSoundManager()
+ {
+ sfx = new DynamicSoundEffectInstance(48000, AudioChannels.Mono);
+ }
+
+ /// <summary>
+ /// Stop and release the sound manager when XNA is being deactivated.
+ /// </summary>
+ static public void StopSoundManager()
+ {
+ sfx.Stop();
+ sfx.Dispose();
+ sfx = null;
+ }
+
+ // Play a sound buffer. The buffer must be in 16-bit PCM, mono.
+ //
+ static public void Play(byte[] buffer)
+ {
+ sfx.SubmitBuffer(buffer);
+ sfx.Play();
+ }
+
+
+ #endregion
+
+ #region Public methods
+
+ static private DynamicSoundEffectInstance sfx = null;
+
+ #endregion
+ }
+}
diff --git a/wpspec/wpspec/Spectrum/Emulation.cs b/wpspec/wpspec/Spectrum/Emulation.cs
index fdcc6ab..97cbc43 100644
--- a/wpspec/wpspec/Spectrum/Emulation.cs
+++ b/wpspec/wpspec/Spectrum/Emulation.cs
@@ -108,12 +108,17 @@ namespace wpspec.Spectrum
return (ushort)((r << 11) | (g << 5) | b);
}
+ // Flash and border
+ //
private bool flash;
-
private int flashCounter;
-
private int border;
+ // Sound buffer
+ //
+ private byte[] soundBuffer = new byte[960 * 2]; // 48000kzh / 50 = 960hz
+ private const float samplesPerCycle = 960f / 69888f;
+
#endregion
#region Private Members
@@ -212,6 +217,15 @@ namespace wpspec.Spectrum
flash = !flash;
}
+
+ if (Settings.Sound)
+ {
+ SoundManager.Play(soundBuffer);
+ }
+
+ clock.CycleCount = 0;
+ soundBuffer = new byte[soundBuffer.Length];
+
Z80.MaskableInterrupt(0xff);
}
@@ -418,6 +432,19 @@ namespace wpspec.Spectrum
if (addr.low == 0xfe)
{
border = value & 0x7;
+
+ if ((value & 0x10) == 0x10)
+ {
+ int index = (int)(clock.CycleCount * samplesPerCycle * 2);
+
+ if (index >= soundBuffer.Length - 1)
+ {
+ index = soundBuffer.Length - 2;
+ }
+
+ soundBuffer[index] = 0xff;
+ soundBuffer[index+1] = 0x7f;
+ }
}
}
diff --git a/wpspec/wpspec/Spectrum/SpectrumKeySymbol.cs b/wpspec/wpspec/Spectrum/SpectrumKeySymbol.cs
index 1838983..ec3ecdf 100644
--- a/wpspec/wpspec/Spectrum/SpectrumKeySymbol.cs
+++ b/wpspec/wpspec/Spectrum/SpectrumKeySymbol.cs
@@ -37,6 +37,11 @@ namespace wpspec.Spectrum
KeyQ, KeyW, KeyE, KeyR, KeyT, KeyY, KeyU, KeyI, KeyO, KeyP,
KeyA, KeyS, KeyD, KeyF, KeyG, KeyH, KeyJ, KeyK, KeyL, KeyEnter,
KeyCapsShift, KeyZ, KeyX, KeyC, KeyV, KeyB, KeyN, KeyM, KeySymbolShift, KeySpace,
- KeyReset, KeyJoystick, KeyKeypad, KeyKeyboard
+ KeyReset, KeyJoystick, KeyKeypad, KeyKeyboard,
+ KeyJoystickLeft, KeyJoystickRight,
+ KeyJoystickUp, KeyJoystickDown,
+ KeyJoystickLeftUp, KeyJoystickLeftDown,
+ KeyJoystickRightUp, KeyJoystickRightDown,
+ KeyJoystickFire1, KeyJoystickFire2
}
}
diff --git a/wpspec/wpspec/UtilsPage.xaml b/wpspec/wpspec/UtilsPage.xaml
new file mode 100644
index 0000000..32b83bd
--- /dev/null
+++ b/wpspec/wpspec/UtilsPage.xaml
@@ -0,0 +1,88 @@
+<phone:PhoneApplicationPage
+ x:Class="wpspec.UtilsPage"
+ 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:wpspec.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>
+
+ <!--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 UtilsPageTitle, 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" VerticalAlignment="Top">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="auto" />
+ <RowDefinition Height="auto" />
+ <RowDefinition Height="auto" />
+ <RowDefinition Height="auto" />
+ <RowDefinition Height="auto" />
+ </Grid.RowDefinitions>
+
+ <Button Height="120"
+ Content="{Binding DisassemblerButtonText, Source={StaticResource Strings}}"
+ Grid.Row="0"
+ Background="Black"
+ Click="DisassemblerClick">
+ </Button>
+
+ <Button Height="120"
+ Content="{Binding DisplayTapeButtonText, Source={StaticResource Strings}}"
+ Grid.Row="1"
+ Background="Black"
+ Click="DisplayTapeClick"
+ IsEnabled="{Binding HasTape, Mode=OneWay}">
+ </Button>
+
+ <Button Height="120"
+ Content="{Binding ManageSavedStatesButtonText, Source={StaticResource Strings}}"
+ Grid.Row="2"
+ Background="Black"
+ Click="ManageSavedStatesClick">
+ </Button>
+
+ <Button Height="120"
+ Content="{Binding PokeMemoryButtonText, Source={StaticResource Strings}}"
+ Grid.Row="3"
+ Background="Black"
+ Click="PokeMemoryClick">
+ </Button>
+
+ <Button Height="120"
+ Content="{Binding DisplayKeyboardButtonText, Source={StaticResource Strings}}"
+ Grid.Row="4"
+ Background="Black"
+ Click="DisplayKeyboardClick">
+ </Button>
+
+ </Grid>
+ </Grid>
+
+</phone:PhoneApplicationPage>
diff --git a/wpspec/wpspec/UtilsPage.xaml.cs b/wpspec/wpspec/UtilsPage.xaml.cs
new file mode 100644
index 0000000..6676bb8
--- /dev/null
+++ b/wpspec/wpspec/UtilsPage.xaml.cs
@@ -0,0 +1,54 @@
+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 wpspec
+{
+ public partial class UtilsPage : PhoneApplicationPage
+ {
+ public UtilsPage()
+ {
+ InitializeComponent();
+ DataContext = this;
+ }
+
+ private void DisassemblerClick(object sender, RoutedEventArgs e)
+ {
+ NavigationService.Navigate(new Uri("/DisassemblerPage.xaml", UriKind.Relative));
+ }
+
+ private void DisplayTapeClick(object sender, RoutedEventArgs e)
+ {
+ NavigationService.Navigate(new Uri("/DisplayTapePage.xaml", UriKind.Relative));
+ }
+
+ private void ManageSavedStatesClick(object sender, RoutedEventArgs e)
+ {
+ NavigationService.Navigate(new Uri("/ManageSavedStatesPage.xaml", UriKind.Relative));
+ }
+
+ private void PokeMemoryClick(object sender, RoutedEventArgs e)
+ {
+ NavigationService.Navigate(new Uri("/PokeMemoryPage.xaml", UriKind.Relative));
+ }
+
+ private void DisplayKeyboardClick(object sender, RoutedEventArgs e)
+ {
+ NavigationService.Navigate(new Uri("/DisplayKeyboardPage.xaml", UriKind.Relative));
+ }
+
+ public bool HasTape
+ {
+ get {return Shared.Spectrum.Tape != null;}
+ }
+ }
+} \ No newline at end of file
diff --git a/wpspec/wpspec/wpspec.csproj b/wpspec/wpspec/wpspec.csproj
index 8a4fd29..b1706b5 100644
--- a/wpspec/wpspec/wpspec.csproj
+++ b/wpspec/wpspec/wpspec.csproj
@@ -79,6 +79,9 @@
<Compile Include="DisassemblerPage.xaml.cs">
<DependentUpon>DisassemblerPage.xaml</DependentUpon>
</Compile>
+ <Compile Include="DisplayKeyboardPage.xaml.cs">
+ <DependentUpon>DisplayKeyboardPage.xaml</DependentUpon>
+ </Compile>
<Compile Include="MainPage.xaml.cs">
<DependentUpon>MainPage.xaml</DependentUpon>
</Compile>
@@ -105,9 +108,13 @@
<DependentUpon>SettingsPage.xaml</DependentUpon>
</Compile>
<Compile Include="Shared.cs" />
+ <Compile Include="SoundManager.cs" />
<Compile Include="Spectrum\Emulation.cs" />
<Compile Include="Spectrum\SpectrumKeySymbol.cs" />
<Compile Include="Spectrum\Tape.cs" />
+ <Compile Include="UtilsPage.xaml.cs">
+ <DependentUpon>UtilsPage.xaml</DependentUpon>
+ </Compile>
<Compile Include="ViewModels\BaseViewModel.cs" />
<Compile Include="ViewModels\DisassemblerLine.cs" />
<Compile Include="ViewModels\DisassemblerViewModel.cs" />
@@ -126,6 +133,10 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
+ <Page Include="DisplayKeyboardPage.xaml">
+ <SubType>Designer</SubType>
+ <Generator>MSBuild:Compile</Generator>
+ </Page>
<Page Include="MainPage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
@@ -150,6 +161,10 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
+ <Page Include="UtilsPage.xaml">
+ <SubType>Designer</SubType>
+ <Generator>MSBuild:Compile</Generator>
+ </Page>
</ItemGroup>
<ItemGroup>
<Content Include="..\..\different-licenses\48.rom">
@@ -168,6 +183,7 @@
<Content Include="Background.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
+ <Resource Include="Resources\SpectrumKeyboard.png" />
<Content Include="SplashScreenImage.jpg" />
</ItemGroup>
<ItemGroup>