Ir para conteúdo
Faça parte da equipe! (2024) ×
Conheça nossa Beta Zone! Novas áreas a caminho! ×
  • Quem está por aqui   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.

[Pedido] editar arquivos JMA


petronao
 Compartilhar

Posts Recomendados

:aplauso: Bom dia galera estou correndo atrás de um editor de sprit deste game

 

Wonderland Online da

É necessário se cadastrar para acessar o conteúdo.

ele tem gráficos infantis, 2d já pesquisei em vários lugares de como editar os arquivos mas o máximo que consegui foi um vizualiados de todos os arquivos de imagens do game. então já que exite um vizualiado conserteza alguém conseguiu modificar essas imagens bmp que está dentro do arquivo JMA

 

estou postando a ferramenta de vizualização do arquivo JMA

 

e um arquivo do jogo que está no formato jma.

 

se alguém conseguir editar estas imagens, poste aqui fico grato pela ajuda

talvez seja fácil para alguém aqui obrigado mesmo!

 

É necessário se cadastrar para acessar o conteúdo.

 

os arquivos estão postados no 4shared :yes:

Link para o comentário
Compartilhar em outros sites

É bom quando se vai em certa área, e ao entrarmos encontramos ótimos conteúdos e todos que satisfaçam nossa necessidade, mas, ao mesmo tempo, é péssimo quando temos de passar um tempo procurando algo por ter tópicos inúteis que fogem totalmente da finalidade da área. Para organização das áreas, sempre mantemos estas 'limpas' desses tópicos inúteis, para facilitar o encontro de conteúdos para os usuários

Movido para Dúvidas!

 

 

O arquivo encontra-se sem scan.

Por favor, faça o mesmo no site:

É necessário se cadastrar para acessar o conteúdo.

Você tem 24horas para isso!

Link para o comentário
Compartilhar em outros sites

opa desculpa ae galera =/

 

passei os 2 link no vírustotal agora.

 

encontrei um meio código fonte de um vizualizador só falta implementar e adicionar a funcão para editar as bmp.

 

se alguém conseguir implementar ele com a função editar, importar..

 

 

using System;

using System.IO;

using System.Text;

using System.Drawing;

using System.Drawing.Imaging;

 

namespace WLOImageViewer

{

public class WloXmgImageInfo

{

private string fileName;

private uint offset;

private uint size;

 

public string FileName

{

get { return fileName; }

set { fileName = value; }

}

 

public uint Offset

{

get { return offset; }

set { offset = value; }

}

 

public uint Size

{

get { return size; }

set { size = value; }

}

}

 

public class WloXmgImageHeader

{

private string path;

private WloXmgImageInfo[] infoArray;

 

public string Path

{

get { return path; }

set { path = value; }

}

 

public WloXmgImageInfo[] InfoArray

{

get { return infoArray; }

set { infoArray = value; }

}

}

 

public class WloJmaBitmapInfo

{

private string fileName;

private ushort width;

private ushort height;

private ushort x;

private ushort y;

private uint size;

private uint offset;

private int innerWidth;

private int innerHeight;

private int unknown;

private WloJmaBitmapHeader parent;

 

public string FileName

{

get { return fileName; }

set { fileName = value; }

}

 

public ushort Width

{

get { return width; }

set { width = value; }

}

 

public ushort Height

{

get { return height; }

set { height = value; }

}

 

public ushort X

{

get { return x; }

set { x = value; }

}

 

public ushort Y

{

get { return y; }

set { y = value; }

}

 

public uint Size

{

get { return size; }

set { size = value; }

}

 

public uint Offset

{

get { return offset; }

set { offset = value; }

}

 

public int InnerWidth

{

get { return innerWidth; }

set { innerWidth = value; }

}

 

public int InnerHeight

{

get { return innerHeight; }

set { innerHeight = value; }

}

 

public int Unknown

{

get { return unknown; }

set { unknown = value; }

}

 

public WloJmaBitmapHeader Parent

{

get { return parent; }

set { parent = value; }

}

}

 

public class WloJmaBitmapHeader

{

private string id;

private uint size;

private uint offset;

private WloJmaBitmapInfo[] infoArray;

private Color[] palette;

 

public string Id

{

get { return id; }

set { id = value; }

}

 

public uint Size

{

get { return size; }

set { size = value; }

}

 

public uint Offset

{

get { return offset; }

set { offset = value; }

}

 

public WloJmaBitmapInfo[] InfoArray

{

get { return infoArray; }

set { infoArray = value; }

}

 

public Color[] Palette

{

get { return palette; }

set { palette = value; }

}

}

 

public class WloJmaImageInfo

{

private string fileName;

private uint size;

private uint offset;

private WloJmaBitmapHeader bitmapHeader;

 

public string FileName

{

get { return fileName; }

set { fileName = value; }

}

 

public uint Size

{

get { return size; }

set { size = value; }

}

 

public uint Offset

{

get { return offset; }

set { offset = value; }

}

 

public WloJmaBitmapHeader BitmapHeader

{

get { return bitmapHeader; }

set { bitmapHeader = value; }

}

}

 

public class WloJmaImageHeader

{

private string path;

private string id;

private uint size;

private uint offset;

private WloJmaImageInfo[] infoArray;

 

public string Path

{

get { return path; }

set { path = value; }

}

 

public string Id

{

get { return id; }

set { id = value; }

}

 

public uint Size

{

get { return size; }

set { size = value; }

}

 

public uint Offset

{

get { return offset; }

set { offset = value; }

}

 

public WloJmaImageInfo[] InfoArray

{

get { return infoArray; }

set { infoArray = value; }

}

}

 

public class WloImageLoader

{

public static WloXmgImageHeader LoadXmgHeaderFromFile(string path)

{

WloXmgImageHeader header = new WloXmgImageHeader();

 

using (BinaryReader reader = new BinaryReader(new FileStream(path, FileMode.Open, FileAccess.Read)))

{

header.Path = path;

header.InfoArray = new WloXmgImageInfo[reader.ReadUInt16()];

 

for (int i = 0; i < header.InfoArray.Length; i++)

{

header.InfoArray = new WloXmgImageInfo();

 

byte[] fileNameBytes = reader.ReadBytes(24);

header.InfoArray.FileName = Encoding.ASCII.GetString(fileNameBytes, 1, fileNameBytes[0]);

header.InfoArray.Offset = reader.ReadUInt32();

header.InfoArray.Size = reader.ReadUInt32();

}

 

reader.Close();

}

 

return header;

}

 

public static WloJmaImageHeader LoadJmaHeaderFromFile(string path)

{

using (BinaryReader reader = new BinaryReader(new FileStream(path, FileMode.Open, FileAccess.Read)))

{

WloJmaImageHeader header = new WloJmaImageHeader();

header.Path = path;

header.Id = Encoding.ASCII.GetString(reader.ReadBytes(2));

header.Size = reader.ReadUInt32();

header.Offset = reader.ReadUInt32();

 

header.InfoArray = new WloJmaImageInfo[reader.ReadUInt32()];

 

for (int i = 0; i < header.InfoArray.Length; i++)

{

header.InfoArray = new WloJmaImageInfo();

 

byte[] fileNameBytes = reader.ReadBytes(20);

header.InfoArray.FileName = Encoding.ASCII.GetString(fileNameBytes, 1, fileNameBytes[0]);

header.InfoArray.Size = reader.ReadUInt32();

header.InfoArray.Offset = reader.ReadUInt32();

}

 

for (int i = 0; i < header.InfoArray.Length; i++)

{

reader.BaseStream.Seek(header.InfoArray.Offset, SeekOrigin.Begin);

 

WloJmaBitmapHeader bitmapHeader = new WloJmaBitmapHeader();

bitmapHeader.Id = Encoding.ASCII.GetString(reader.ReadBytes(2));

bitmapHeader.Size = reader.ReadUInt32();

bitmapHeader.Offset = reader.ReadUInt32();

 

bitmapHeader.InfoArray = new WloJmaBitmapInfo[reader.ReadUInt32()];

 

for (int j = 0; j < bitmapHeader.InfoArray.Length; j++)

{

bitmapHeader.InfoArray[j] = new WloJmaBitmapInfo();

 

byte[] fileNameBytes = reader.ReadBytes(12);

bitmapHeader.InfoArray[j].FileName = Encoding.ASCII.GetString(fileNameBytes, 1, fileNameBytes[0]);

bitmapHeader.InfoArray[j].Width = reader.ReadUInt16();

bitmapHeader.InfoArray[j].Height = reader.ReadUInt16();

bitmapHeader.InfoArray[j].X = reader.ReadUInt16();

bitmapHeader.InfoArray[j].Y = reader.ReadUInt16();

bitmapHeader.InfoArray[j].Size = reader.ReadUInt32();

bitmapHeader.InfoArray[j].Offset = reader.ReadUInt32() + header.InfoArray.Offset;

bitmapHeader.InfoArray[j].InnerWidth = reader.ReadInt32();

bitmapHeader.InfoArray[j].InnerHeight = reader.ReadInt32();

bitmapHeader.InfoArray[j].Unknown = reader.ReadInt32();

bitmapHeader.InfoArray[j].Parent = bitmapHeader;

}

 

bitmapHeader.Palette = new Color[256];

for (int j = 0; j < bitmapHeader.Palette.Length; j++)

{

byte b = reader.ReadByte();

byte g = reader.ReadByte();

byte r = reader.ReadByte();

byte reserve = reader.ReadByte();

 

bitmapHeader.Palette[j] = Color.FromArgb(r, g, b);

}

 

header.InfoArray.BitmapHeader = bitmapHeader;

}

 

reader.Close();

 

return header;

}

}

 

public static Bitmap LoadXmgBitmap(string path, WloXmgImageInfo info)

{

Bitmap bitmap = null;

 

using (BinaryReader reader = new BinaryReader(new FileStream(path, FileMode.Open, FileAccess.Read)))

{

reader.BaseStream.Seek(info.Offset, SeekOrigin.Begin);

 

using (MemoryStream ms = new MemoryStream(reader.ReadBytes((int)info.Size)))

{

bitmap = new Bitmap(ms);

 

ms.Close();

}

 

reader.Close();

}

 

return bitmap;

}

 

public static Bitmap LoadJmaBitmap(string path, WloJmaBitmapInfo info)

{

using (BinaryReader reader = new BinaryReader(new FileStream(path, FileMode.Open, FileAccess.Read)))

{

reader.BaseStream.Seek(info.Offset , SeekOrigin.Begin);

 

Bitmap bmp = new Bitmap(info.Width, info.Height, PixelFormat.Format8bppIndexed);

 

ColorPalette pal = bmp.Palette;

for (int i = 0; i < 256; i++)

{

pal.Entries = info.Parent.Palette;

}

bmp.Palette = pal;

 

BitmapData bmData =

bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.WriteOnly, PixelFormat.Format8bppIndexed);

 

unsafe

{

byte* scan0 = (byte*)bmData.Scan0;

 

for (int y = 0; y < info.InnerHeight; y++)

{

byte* p = (scan0 + info.X + ((y + info.Y) * bmData.Stride));

 

for (int x = 0; x < info.InnerWidth; x++)

{

*p++ = reader.ReadByte();

}

 

int tmpWidth = (info.InnerWidth + 3) & ~3;

 

for (int i = 0; i < tmpWidth - info.InnerWidth; i++)

{

reader.ReadByte();

}

}

}

 

bmp.UnlockBits(bmData);

 

reader.Close();

 

return bmp;

}

}

}

}

Link para o comentário
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.