Skip to content

Commit

Permalink
New settings for SNES
Browse files Browse the repository at this point in the history
  • Loading branch information
ClusterM committed Oct 6, 2017
1 parent 90bbb75 commit 3a7111a
Show file tree
Hide file tree
Showing 87 changed files with 5,769 additions and 1,781 deletions.
9 changes: 7 additions & 2 deletions Apps/NesMiniApplication.cs
Expand Up @@ -362,8 +362,13 @@ private void SetImage(Image image, bool EightBitCompression = false)
Graphics gr;

// Just keep aspect ratio
const int maxX = 204;
const int maxY = 204;
int maxX = 204;
int maxY = 204;
if (ConfigIni.ConsoleType == MainForm.ConsoleType.SNES || ConfigIni.ConsoleType == MainForm.ConsoleType.SuperFamicom)
{
maxX = 228;
maxY = 228;
}
if ((double)image.Width / (double)image.Height > (double)maxX / (double)maxY)
outImage = new Bitmap(maxX, (int)((double)maxY * (double)image.Height / (double)image.Width));
else
Expand Down
57 changes: 54 additions & 3 deletions Apps/SnesGame.cs
Expand Up @@ -170,6 +170,57 @@ private static void MakeSfrom(ref byte[] rawRomData)
rawRomData = result;
}

public SfromHeader1 ReadSfromHeader1()
{
foreach (var f in Directory.GetFiles(GamePath, "*.sfrom"))
{
var sfrom = File.ReadAllBytes(f);
var sfromHeader1 = SfromHeader1.Read(sfrom, 0);
return sfromHeader1;
}
throw new Exception(".sfrom file not found");
}

public SfromHeader2 ReadSfromHeader2()
{
foreach (var f in Directory.GetFiles(GamePath, "*.sfrom"))
{
var sfrom = File.ReadAllBytes(f);
var sfromHeader1 = SfromHeader1.Read(sfrom, 0);
var sfromHeader2 = SfromHeader2.Read(sfrom, (int)sfromHeader1.Header2);
return sfromHeader2;
}
throw new Exception(".sfrom file not found");
}

public void WriteSfromHeader1(SfromHeader1 sfromHeader1)
{
foreach (var f in Directory.GetFiles(GamePath, "*.sfrom"))
{
var sfrom = File.ReadAllBytes(f);
var data = sfromHeader1.GetBytes();
Array.Copy(data, 0, sfrom, 0, data.Length);
File.WriteAllBytes(f, sfrom);
return;
}
throw new Exception(".sfrom file not found");
}

public void WriteSfromHeader2(SfromHeader2 sfromHeader2)
{
foreach (var f in Directory.GetFiles(GamePath, "*.sfrom"))
{
var sfrom = File.ReadAllBytes(f);
var sfromHeader1 = SfromHeader1.Read(sfrom, 0);
var data = sfromHeader2.GetBytes();
Array.Copy(data, 0, sfrom, (int)sfromHeader1.Header2, data.Length);
File.WriteAllBytes(f, sfrom);
return;
}
throw new Exception(".sfrom file not found");
}


[StructLayout(LayoutKind.Sequential)]
private struct SnesRomHeader
{
Expand Down Expand Up @@ -217,7 +268,7 @@ public static SnesRomHeader Read(byte[] buffer, int pos)


[StructLayout(LayoutKind.Sequential)]
private struct SfromHeader1
public struct SfromHeader1
{
[MarshalAs(UnmanagedType.U4)]
public uint Uknown1_0x00000100;
Expand Down Expand Up @@ -283,7 +334,7 @@ public static SfromHeader1 Read(byte[] buffer, int pos)
}

[StructLayout(LayoutKind.Sequential, Pack = 1)]
private struct SfromHeader2
public struct SfromHeader2
{
[MarshalAs(UnmanagedType.U1)] // 0x00
public byte FPS;
Expand Down Expand Up @@ -352,7 +403,7 @@ public static SfromHeader2 Read(byte[] buffer, int pos)
}
}

private enum SnesRomType { LoRom = 0x14, HiRom = 0x15 };
public enum SnesRomType { LoRom = 0x14, HiRom = 0x15 };
}
}

0 comments on commit 3a7111a

Please sign in to comment.