diff options
author | Alexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com> | 2022-02-23 20:22:37 +0300 |
---|---|---|
committer | Alexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com> | 2022-02-23 20:22:37 +0300 |
commit | c0c9728391380b44f37be2cca64e3d22dee11640 (patch) | |
tree | a49e244a4a8aebc86b487894ffb882666342a5f1 /Scripts | |
parent | c83eea7ebd55bab4ef90e03fde65ec759c9c0180 (diff) |
Updated scripts
Diffstat (limited to 'Scripts')
-rw-r--r-- | Scripts/.dumpercache/WriteWarface.dll | bin | 0 -> 4096 bytes | |||
-rw-r--r-- | Scripts/EraseCheck.cs | 68 | ||||
-rw-r--r-- | Scripts/WriteWarface.cs | 69 |
3 files changed, 137 insertions, 0 deletions
diff --git a/Scripts/.dumpercache/WriteWarface.dll b/Scripts/.dumpercache/WriteWarface.dll Binary files differnew file mode 100644 index 0000000..37b15db --- /dev/null +++ b/Scripts/.dumpercache/WriteWarface.dll diff --git a/Scripts/EraseCheck.cs b/Scripts/EraseCheck.cs new file mode 100644 index 0000000..b895c6f --- /dev/null +++ b/Scripts/EraseCheck.cs @@ -0,0 +1,68 @@ +/*
+/ Скрипт дампера для проверки EPROM на чистоту
+*/
+
+namespace com.clusterrr.Warface
+{
+ class EraseEeprom
+ {
+ void Run(IFamicomDumperConnection dumper)
+ {
+ const int prgBankSize = 0x4000;
+ const int chrBankSize = 0x1000;
+ int problems = 0;
+
+ for (var bank = 0; bank < 128 * 1024 / prgBankSize; bank++)
+ {
+ int minProblems = -1;
+ do
+ {
+ problems = 0;
+ Console.WriteLine("Reading PRG bank #{0}...", bank);
+ dumper.WriteCpu(0x6000, (byte)bank);
+ var dataVerify = dumper.ReadCpu(0x8000, prgBankSize);
+ for (var i = 0; i < prgBankSize; i++)
+ {
+ if (0xFF != dataVerify[i])
+ {
+ //Console.Write("{0:X2} != {1:X2} @ {2:X4} ", dataVerify[i], 0xFF, i);
+ problems++;
+ }
+ }
+ if (problems > 0)
+ Console.WriteLine("{0} bytes @ PRG bank #{1} are not clean", problems, bank);
+ if (problems < minProblems)
+ Console.Beep();
+ if (minProblems < 0 || problems < minProblems)
+ minProblems = problems;
+ } while (problems > 0);
+ }
+
+ for (var bank = 0; bank < 128 * 1024 / chrBankSize; bank++)
+ {
+ int minProblems = -1;
+ do
+ {
+ problems = 0;
+ Console.WriteLine("Reading CHR bank #{0}...", bank);
+ dumper.WriteCpu(0x6001, (byte)bank);
+ var dataVerify = dumper.ReadPpu(0x0000, chrBankSize);
+ for (var i = 0; i < chrBankSize; i++)
+ {
+ if (0xFF != dataVerify[i])
+ {
+ //Console.Write("{0:X2} != {1:X2} @ {2:X4} ", dataVerify[i], 0xFF, i);
+ problems++;
+ }
+ }
+ if (problems > 0)
+ Console.WriteLine("{0} bytes @ CHR bank #{1} are not clean", problems, bank);
+ if (problems < minProblems)
+ Console.Beep();
+ if (minProblems < 0 || problems < minProblems)
+ minProblems = problems;
+ } while (problems > 0);
+ }
+ }
+ }
+}
diff --git a/Scripts/WriteWarface.cs b/Scripts/WriteWarface.cs new file mode 100644 index 0000000..bbc00f1 --- /dev/null +++ b/Scripts/WriteWarface.cs @@ -0,0 +1,69 @@ +/*
+/ Скрипт дампера для записи ROM'а на EPROM.
+*/
+
+using System.Linq;
+
+namespace com.clusterrr.Warface
+{
+ class WriteWarface
+ {
+ void Run(IFamicomDumperConnection dumper, string filename)
+ {
+ var rom = new NesFile(filename);
+ const int prgBankSize = 0x4000;
+ const int chrBankSize = 0x1000;
+ bool problem = false;
+
+ for (var bank = 0; bank < 128 * 1024 / prgBankSize; bank++)
+ {
+ do
+ {
+ problem = false;
+ Console.WriteLine("Writing PRG bank #{0}...", bank);
+ dumper.WriteCpu(0x6000, (byte)bank);
+ var data = new byte[prgBankSize];
+ Array.Copy(rom.PRG.ToArray(), bank * prgBankSize, data, 0, prgBankSize);
+ if (data.Where(b => b != 0xFF).Any())
+ dumper.WriteCpu(0x8000, data);
+ var dataVerify = dumper.ReadCpu(0x8000, prgBankSize);
+ for (var i = 0; i < prgBankSize; i++)
+ {
+ if (data[i] != dataVerify[i])
+ {
+ Console.Write("{0:X2} != {1:X2} @ {2:X4} ", dataVerify[i], data[i], i);
+ problem = true;
+ }
+ }
+ if (problem)
+ Console.WriteLine("Problems @ bank #{0}", bank);
+ } while (problem);
+ }
+
+ for (var bank = 0; bank < 128 * 1024 / chrBankSize; bank++)
+ {
+ do
+ {
+ problem = false;
+ Console.WriteLine("Writing CHR bank #{0}...", bank);
+ dumper.WriteCpu(0x6001, (byte)bank);
+ var data = new byte[chrBankSize];
+ Array.Copy(rom.CHR.ToArray(), bank * chrBankSize, data, 0, chrBankSize);
+ if (data.Where(b => b != 0xFF).Any())
+ dumper.WritePpu(0x0000, data);
+ var dataVerify = dumper.ReadPpu(0x0000, chrBankSize);
+ for (var i = 0; i < chrBankSize; i++)
+ {
+ if (data[i] != dataVerify[i])
+ {
+ Console.Write("{0:X2} != {1:X2} @ {2:X4} ", dataVerify[i], data[i], i);
+ problem = true;
+ }
+ }
+ if (problem)
+ Console.WriteLine("Problems @ bank #{0}", bank);
+ } while (problem);
+ }
+ }
+ }
+}
|