2.5+ tests

master
1987kostya 4 years ago
parent a9c46f247c
commit 411770e590

@ -105,6 +105,7 @@ namespace DotNetCTFDumper.GUI
}; };
KeyPreview = true; KeyPreview = true;
tabControl1.Selecting += tabControl1_Selecting; tabControl1.Selecting += tabControl1_Selecting;
tabControl1.TabPages.Remove(mfaTab);
} }
@ -116,7 +117,7 @@ namespace DotNetCTFDumper.GUI
if (e.TabPage != mainTab) if (e.TabPage != mainTab)
e.Cancel = true; e.Cancel = true;
} }
_soundPlayer.Stop(); //_soundPlayer.Stop();
} }

@ -86,6 +86,7 @@ namespace DotNetCTFDumper.MMFParser.EXE
ChunkData = exeReader.ReadBytes(Size); ChunkData = exeReader.ReadBytes(Size);
break; break;
} }
Save();
} }

@ -4,18 +4,20 @@ using System.Drawing;
using System.Drawing.Imaging; using System.Drawing.Imaging;
using System.IO; using System.IO;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Windows.Forms;
using DotNetCTFDumper.GUI; using DotNetCTFDumper.GUI;
using DotNetCTFDumper.Utils; using DotNetCTFDumper.Utils;
using Joveler.Compression.ZLib;
using static DotNetCTFDumper.MMFParser.EXE.ChunkList; using static DotNetCTFDumper.MMFParser.EXE.ChunkList;
namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Banks namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Banks
{ {
public class ImageBank : ChunkLoader public class ImageBank : ChunkLoader
{ {
public bool SaveImages = false; public bool SaveImages = true;
public Dictionary<int, ImageItem> Images = new Dictionary<int, ImageItem>(); public Dictionary<int, ImageItem> Images = new Dictionary<int, ImageItem>();
public uint NumberOfItems; public uint NumberOfItems;
public bool PreloadOnly=true; public bool PreloadOnly=false;
public ImageBank(ByteReader reader) : base(reader) public ImageBank(ByteReader reader) : base(reader)
{ {
@ -153,7 +155,9 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Banks
{ {
Handle = Reader.ReadInt32() - 1; Handle = Reader.ReadInt32() - 1;
Position = (int) Reader.Tell(); Position = (int) Reader.Tell();
Logger.Log("ImageFound: "+Handle);
if (load) Load(); if (load) Load();
else Preload(); else Preload();
} }
@ -178,6 +182,7 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Banks
_bitmap = null; _bitmap = null;
Reader.Seek(Position); Reader.Seek(Position);
ByteReader imageReader; ByteReader imageReader;
Console.WriteLine("Preloading Image");
if (Settings.twofiveplus) if (Settings.twofiveplus)
{ {
@ -185,7 +190,13 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Banks
} }
// imageReader = Debug ? Reader : Decompressor.DecompressAsReader(Reader, out var a); // imageReader = Debug ? Reader : Decompressor.DecompressAsReader(Reader, out var a);
imageReader = Debug ? Reader : Decompressor.DecompressAsReader(Reader, out var a); imageReader = Debug ? Reader : Decompressor.DecompressAsReader(Reader, out var a);
//Directory.CreateDirectory("DUMP\\DEBUG");
//File.WriteAllBytes($"DUMP\\DEBUG\\Img-{Handle}.imgb",imageReader.ReadBytes((int) imageReader.Size()));
long start = imageReader.Tell(); long start = imageReader.Tell();
_checksum = imageReader.ReadInt32(); _checksum = imageReader.ReadInt32();
@ -201,15 +212,17 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Banks
_bitmap = null; _bitmap = null;
Reader.Seek(Position); Reader.Seek(Position);
ByteReader imageReader; ByteReader imageReader;
if (!Settings.twofiveplus)
// imageReader = Debug ? Reader : Decompressor.DecompressAsReader(Reader, out var a);
imageReader = Debug ? Reader : Decompressor.DecompressAsReader(Reader, out var a); imageReader = Debug ? Reader : Decompressor.DecompressAsReader(Reader, out var a);
else imageReader = Reader;
long start = imageReader.Tell(); long start = imageReader.Tell();
//return;
if(Settings.twofiveplus) imageReader.Skip(4);
_checksum = imageReader.ReadInt32(); _checksum = imageReader.ReadInt32();
_references = imageReader.ReadInt32(); _references = imageReader.ReadInt32();
Size = (int) imageReader.ReadUInt32(); Size = (int) imageReader.ReadUInt32();
if (Debug) if (Debug)
{ {
imageReader = new ByteReader(imageReader.ReadBytes(Size + 20)); imageReader = new ByteReader(imageReader.ReadBytes(Size + 20));
@ -218,6 +231,7 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Banks
_width = imageReader.ReadInt16(); _width = imageReader.ReadInt16();
_height = imageReader.ReadInt16(); _height = imageReader.ReadInt16();
_graphicMode = imageReader.ReadByte(); //Graphic mode is always 4 for SL _graphicMode = imageReader.ReadByte(); //Graphic mode is always 4 for SL
Flags.flag = imageReader.ReadByte(); Flags.flag = imageReader.ReadByte();
imageReader.Skip(2); imageReader.Skip(2);
@ -226,10 +240,12 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Banks
ActionX = imageReader.ReadInt16(); ActionX = imageReader.ReadInt16();
ActionY = imageReader.ReadInt16(); ActionY = imageReader.ReadInt16();
_transparent = imageReader.ReadBytes(4); _transparent = imageReader.ReadBytes(4);
//Logger.Log($"Loading image {Handle.ToString(),4} Size: {_width,4}x{_height,4}"); Logger.Log($"Loading image {Handle.ToString(),4} Size: {_width,4}x{_height,4}");
byte[] imageData; byte[] imageData;
Flags["LZX"] = false;
if (Flags["LZX"]) if (Flags["LZX"])
{ {
uint decompressedSize = imageReader.ReadUInt32(); uint decompressedSize = imageReader.ReadUInt32();
imageData = Decompressor.decompress_block(imageReader, (int) (imageReader.Size() - imageReader.Tell()), imageData = Decompressor.decompress_block(imageReader, (int) (imageReader.Size() - imageReader.Tell()),
(int) decompressedSize); (int) decompressedSize);
@ -242,11 +258,14 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Banks
int bytesRead = 0; int bytesRead = 0;
rawImg = imageData; rawImg = imageData;
if (Flags["RLE"] || Flags["RLEW"] || Flags["RLET"]) if (Flags["RLE"] || Flags["RLEW"] || Flags["RLET"])
{ {
} }
else else
{ {
switch (_graphicMode) switch (_graphicMode)
{ {
case 4: case 4:
@ -264,6 +283,11 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Banks
(_colorArray, bytesRead) = ImageHelper.ReadSixteen(imageData, _width, _height); (_colorArray, bytesRead) = ImageHelper.ReadSixteen(imageData, _width, _height);
break; break;
} }
default:
{
break;
}
} }
} }
@ -282,17 +306,21 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Banks
} }
} }
return; return;
} }
public void Save(string filename) public void Save(string filename)
{ {
try try
{ {
Logger.Log("Trying to save image");
Bitmap.Save(filename); Bitmap.Save(filename);
} }
catch catch
{ {
Logger.Log("RIP");
using (var bmp = new Bitmap(_width, _height, PixelFormat.Format32bppArgb)) using (var bmp = new Bitmap(_width, _height, PixelFormat.Format32bppArgb))
{ {
BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0,
@ -306,6 +334,7 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Banks
bmp.UnlockBits(bmpData); bmp.UnlockBits(bmpData);
bmp.Save(filename); bmp.Save(filename);
Logger.Log("Trying again");
} }
} }
@ -338,20 +367,7 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Banks
} }
} }
// private byte[] GenerateImage()
// {
// Int32 pad = ImageHelper.GetPadding(_width, 3);
// byte[] points = new byte[(_width * _height + pad * _height)*3];
// for (UInt32 y = 0; y < _height; y++)
// {
// for (UInt32 x = 0; x < _height; x++)
// {
//
// }
// }
//
// return points;
// }
public void Write(ByteWriter writer) public void Write(ByteWriter writer)

@ -30,23 +30,11 @@ namespace DotNetCTFDumper
var verbose = false; var verbose = false;
var dumpImages = true; var dumpImages = true;
var dumpSounds = true; var dumpSounds = true;
AppDomain.CurrentDomain.FirstChanceException += (sender, eventArgs) => /*AppDomain.CurrentDomain.FirstChanceException += (sender, eventArgs) =>
{ {
Logger.Log("ERROR: "); Logger.Log("ERROR: ");
Logger.Log(eventArgs.Exception.ToString()); Logger.Log(eventArgs.Exception.ToString());
/*ErrorLogBox error = null; };*/
try
{
error = new ErrorLogBox(eventArgs.Exception);
}
finally
{
Application.Run(error);
}*/
};
Settings.UseGUI = true; Settings.UseGUI = true;
@ -54,6 +42,10 @@ namespace DotNetCTFDumper
{ {
MyForm = new MainForm(Color.FromName(args[0])); MyForm = new MainForm(Color.FromName(args[0]));
} }
if (args.Length > 1)
{
ReadFile(args[1],true,true,true);
}
else if(args.Length==0) else if(args.Length==0)
{ {
MyForm = new MainForm(Color.FromArgb(223, 114, 38)); MyForm = new MainForm(Color.FromArgb(223, 114, 38));

@ -10,7 +10,7 @@ namespace DotNetCTFDumper
public static bool SaveChunks; public static bool SaveChunks;
public static bool Verbose; public static bool Verbose;
public static bool Old; public static bool Old;
public static bool twofiveplus; public static bool twofiveplus=true;
public static string GamePath; public static string GamePath;
public static string GameName => Path.GetFileNameWithoutExtension(GamePath); public static string GameName => Path.GetFileNameWithoutExtension(GamePath);
@ -22,7 +22,6 @@ namespace DotNetCTFDumper
public static string ChunkPath=>$"{DumpPath}\\Chunks"; public static string ChunkPath=>$"{DumpPath}\\Chunks";
public static string ExtensionPath=>$"{DumpPath}\\Extensions"; public static string ExtensionPath=>$"{DumpPath}\\Extensions";
public static string AppName; public static string AppName;
public static string Copyright; public static string Copyright;
public static string ProjectPath; public static string ProjectPath;

@ -10,6 +10,7 @@ namespace DotNetCTFDumper.Utils
static StreamWriter _writer; static StreamWriter _writer;
public static void Log(string text, bool logToScreen = true,ConsoleColor color = ConsoleColor.White, bool logToConsole=true) public static void Log(string text, bool logToScreen = true,ConsoleColor color = ConsoleColor.White, bool logToConsole=true)
{ {
if (_writer == null) if (_writer == null)
{ {
File.Delete("NewLog.log"); File.Delete("NewLog.log");

Loading…
Cancel
Save