Changed some assembly settings

This commit is contained in:
2026-05-02 00:22:05 +01:00
parent b1e7210e95
commit 679d950e46
7 changed files with 71 additions and 33 deletions

View File

@@ -6,6 +6,17 @@
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<UseWindowsForms>true</UseWindowsForms> <UseWindowsForms>true</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<StartupObject>Desktop.Program</StartupObject>
<ApplicationIcon>MPSpeccy.ico</ApplicationIcon>
<Title>Parsons ZX Spectrum Emulator</Title>
<Version>0.9.1</Version>
<Authors>Marc Parsons</Authors>
<Copyright>Copyright: © 2026 Marc Parsons</Copyright>
<Description>A Sinclair ZX Spectrum Emulator (48K and +3) written in C#.</Description>
<PackageReleaseNotes>Fully working as standard. TZX support is not fully implemented.</PackageReleaseNotes>
<PackageId>ParsonsZXSpectrum</PackageId>
<Product>Parsons Speccy</Product>
<AssemblyName>ParsonsZXSpectrum</AssemblyName>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
@@ -32,69 +43,73 @@
<None Remove="ROMS\TZX\Split Personalities2.tzx" /> <None Remove="ROMS\TZX\Split Personalities2.tzx" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Content Include="MPSpeccy.ico" />
</ItemGroup>
<ItemGroup> <ItemGroup>
<EmbeddedResource Include="48.rom"> <EmbeddedResource Include="48.rom">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="plus3-0.rom"> <EmbeddedResource Include="plus3-0.rom">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="plus3-1.rom"> <EmbeddedResource Include="plus3-1.rom">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="plus3-2.rom"> <EmbeddedResource Include="plus3-2.rom">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="plus3-3.rom"> <EmbeddedResource Include="plus3-3.rom">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="ROMS\Snapshot\ChuckieEgg.sna"> <EmbeddedResource Include="ROMS\Snapshot\ChuckieEgg.sna">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="ROMS\Snapshot\Dizzy - Trasure Island.sna"> <EmbeddedResource Include="ROMS\Snapshot\Dizzy - Trasure Island.sna">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="ROMS\Snapshot\GHILL48K.sna"> <EmbeddedResource Include="ROMS\Snapshot\GHILL48K.sna">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="ROMS\Snapshot\manic.sna"> <EmbeddedResource Include="ROMS\Snapshot\manic.sna">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="ROMS\Snapshot\tristam.sna"> <EmbeddedResource Include="ROMS\Snapshot\tristam.sna">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="ROMS\TAP\Chuckie Egg.tap"> <EmbeddedResource Include="ROMS\TAP\Chuckie Egg.tap">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="ROMS\TAP\Grange Hill.TAP"> <EmbeddedResource Include="ROMS\TAP\Grange Hill.TAP">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="ROMS\TAP\Grange Hill128.TAP"> <EmbeddedResource Include="ROMS\TAP\Grange Hill128.TAP">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="ROMS\TAP\Manic Miner.TAP"> <EmbeddedResource Include="ROMS\TAP\Manic Miner.TAP">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="ROMS\TAP\Treasure Island - Dizzy.tap"> <EmbeddedResource Include="ROMS\TAP\Treasure Island - Dizzy.tap">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="ROMS\TAP\zexall.tap"> <EmbeddedResource Include="ROMS\TAP\zexall.tap">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="ROMS\TZX\Batman - Release 1.tzx"> <EmbeddedResource Include="ROMS\TZX\Batman - Release 1.tzx">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="ROMS\TZX\Renegade 2 - Target Renegade - Side 1.tzx"> <EmbeddedResource Include="ROMS\TZX\Renegade 2 - Target Renegade - Side 1.tzx">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="ROMS\TZX\Renegade 2 - Target Renegade - Side 2.tzx"> <EmbeddedResource Include="ROMS\TZX\Renegade 2 - Target Renegade - Side 2.tzx">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="ROMS\TZX\Split Personalities1.tzx"> <EmbeddedResource Include="ROMS\TZX\Split Personalities1.tzx">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="ROMS\TZX\Split Personalities2.tzx"> <EmbeddedResource Include="ROMS\TZX\Split Personalities2.tzx">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Never</CopyToOutputDirectory>
</EmbeddedResource> </EmbeddedResource>
</ItemGroup> </ItemGroup>

BIN
Desktop/MPSpeccy.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- https://go.microsoft.com/fwlink/?LinkID=208121. -->
<Project>
<PropertyGroup>
<Configuration>Release</Configuration>
<Platform>Any CPU</Platform>
<PublishDir>C:\Parsons\Local Code Projects\Published</PublishDir>
<PublishProtocol>FileSystem</PublishProtocol>
<_TargetId>Folder</_TargetId>
<TargetFramework>net8.0-windows</TargetFramework>
<SelfContained>true</SelfContained>
<RuntimeIdentifier>win-x86</RuntimeIdentifier>
<PublishSingleFile>true</PublishSingleFile>
<PublishReadyToRun>true</PublishReadyToRun>
</PropertyGroup>
</Project>

View File

@@ -1,26 +1,33 @@
using System; using System;
using System.IO; using System.IO;
using System.Reflection;
namespace Desktop public static class RomLoader
{ {
public static class RomLoader public static byte[] Load(string filename)
{ {
public static byte[] Load(string filePath) // Construct the embedded resource path.
// Assuming your project's default namespace is "Desktop" and the folder is "ROMS"
string resourceName = $"Desktop.{filename}";
var assembly = Assembly.GetExecutingAssembly();
using (Stream stream = assembly.GetManifestResourceStream(resourceName))
{ {
if (!File.Exists(filePath)) if (stream == null)
{ {
throw new FileNotFoundException($"Could not find the ROM file at: {filePath}"); // BULLETPROOFING: If the string is slightly wrong, this will print out
// exactly what the compiler actually named your embedded files!
string[] availableResources = assembly.GetManifestResourceNames();
string list = string.Join("\n", availableResources);
throw new FileNotFoundException($"Could not find embedded ROM: {resourceName}\n\nAvailable embedded files are:\n{list}");
} }
byte[] romData = File.ReadAllBytes(filePath); using (MemoryStream memoryStream = new MemoryStream())
// The standard ZX Spectrum 48k ROM is exactly 16384 bytes (16KB)
if (romData.Length != 16384)
{ {
throw new InvalidDataException($"Invalid ROM size. Expected 16384 bytes, got {romData.Length} bytes."); stream.CopyTo(memoryStream);
return memoryStream.ToArray();
} }
return romData;
} }
} }
} }

BIN
Logo_Parsons.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
MPSpeccy.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
logo_Original.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB