C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: M.U.G.E.Nのファイルを読み込みたい


(過去ログ 133 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■78628 / inTopicNo.1)  M.U.G.E.Nのファイルを読み込みたい
  
□投稿者/ Eichiwai97 (1回)-(2016/01/30(Sat) 18:55:22)
Eichiwai97 さんの Web サイト

分類:[C#] 

開発環境はVisual Studio 2015です。使用言語はC#です。

私はC#で「M.U.G.E.N」という格闘ゲームのファイルを扱うツールを作りたいと思っていて、
.sffや、.fnt、.sndファイルなどを読み込みたいと思っています。
そこで、C#で作られたM.U.G.E.Nのクローン(xnaMUGEN)のソースコードを見てはいるのですが、
どうしても読み込み方がわかりません。C++はできるだけ使いたくないです。
どなたか助けてもらえませんでしょうか...またできたらサンプルコードを乗せてもらえるとありがたいです。
お願いします。

このような質問がこの掲示板に不適切であれば、すみません。

ここから下はM.U.G.E.Nのファイルフォーマットです。

/*--| SFF file structure
|--------------------------------------------------*\
Version 1.01
HEADER (512 bytes)
------
Bytes
00-11 "ElecbyteSpr\0" signature	[12]
12-15 1 verhi, 1 verlo, 1 verlo2, 1 verlo3	[04]
16-19 Number of groups	[04]
20-24 Number of images	[04]
24-27 File offset where first subfile is located	[04]
28-31 Size of subheader in bytes	[04]
32 Palette type (1=SPRPALTYPE_SHARED or 0=SPRPALTYPE_INDIV)	[01]
33-35 Blank; set to zero	[03]
36-511 Blank; can be used for comments	[476]
SUBFILEHEADER (32 bytes)
-------
Bytes
00-03 File offset where next subfile in the "linked list" is	[04]
located. Null if last subfile
04-07 Subfile length (not including header)	[04]
Length is 0 if it is a linked sprite
08-09 Image axis X coordinate	[02]
10-11 Image axis Y coordinate	[02]
12-13 Group number	[02]
14-15 Image number (in the group)	[02]
16-17 Index of previous copy of sprite (linked sprites only)	[02]
This is the actual
18 True if palette is same as previous image	[01]
19-31 Blank; can be used for comments	[14]
32- PCX graphic data. If palette data is available, it is the last
768 bytes.
*--------------------------------------------------------------------------*/
/*--| SND file structure
|--------------------------------------------------*\
Version 1.01
HEADER
------
Bytes
00-11 "ElecbyteSnd\0" signature	[12]
12-15 4 verhi, 4 verlo	[04]
16-19 Number of sounds	[04]
20-23 File offset where first subfile is located.	[04]
24-511 Blank; can be used for comments.	[488]
SUBFILEHEADER
-------
Bytes
00-03 File offset where next subfile in the linked list is	[04]
located. Null if last subfile.
04-07 Subfile length (not including header.)	[04]
08-11 Group number	[04]
12-15 Sample number	[04]
08- Sound data (WAV)
*--------------------------------------------------------------------------*/
/*--| FNT file structure 
|--------------------------------------------------*\
/*
Very simple file format, formed by concatenating a pcx file and a text
file together and prepending a header.
May be optimized for size by stripping the text file of comments before
adding it to the .fnt file. Be sure text data comes last in the file.
*/
Version 1.0
HEADER
------
Bytes
00-11 "ElecbyteFnt\0" signature 
[12]
12-15 2 verhi, 2 verlo 
[04]
16-20 File offset where PCX data is located. 
[04]
20-23 Length of PCX data in bytes. 
[04]
24-27 File offset where TEXT data is located. 
[04]
28-31 Length of TEXT data in bytes. 
[04]
32-63 Blank; can be used for comments. 
[40]
*--------------------------------------------------------------------------*/

引用返信 編集キー/
■78629 / inTopicNo.2)  Re[1]: M.U.G.E.Nのファイルを読み込みたい
□投稿者/ Eichiwai97 (2回)-(2016/01/30(Sat) 18:57:11)
Eichiwai97 さんの Web サイト
2016/01/30(Sat) 19:02:25 編集(投稿者)


引用返信 編集キー/
■78632 / inTopicNo.3)  Re[1]: M.U.G.E.Nのファイルを読み込みたい
□投稿者/ Azulean (587回)-(2016/01/31(Sun) 00:39:25)
2016/01/31(Sun) 00:42:03 編集(投稿者)

No78628 (Eichiwai97 さん) に返信
> そこで、C#で作られたM.U.G.E.Nのクローン(xnaMUGEN)のソースコードを見てはいるのですが、
> どうしても読み込み方がわかりません。C++はできるだけ使いたくないです。
> どなたか助けてもらえませんでしょうか...またできたらサンプルコードを乗せてもらえるとありがたいです。

それは作って欲しいという依頼なのですか?
そうであれば、そういったことを頼める業者などへ。

自分で作って試しているのであれば、どのような動作を期待し、どのような結果になったか、ピンポイントでご質問いただいた方が良いかと。書いているコードも添えてあるとよいでしょう。
現状では、ヘッダーにあるファイルの仕様を述べて、そのフォーマットに関心がない人に、無償で作らせるような話になりかねませんので…。


ところで、ヘッダーから抜粋されているコメントに書かれているフォーマットの意味は読み解けたのでしょうか。
これらの意味がわかるのであれば、FileStream で byte 単位で読み込んで、解釈していけば良いだけでしょう。
意味がわからないのであれば、この先は厳しいかと。

// C# で作られたソースを見ているなら、そのファイルを読み込んでいる部分を真似して試行錯誤すればよい気もするのですが…?
引用返信 編集キー/
■78634 / inTopicNo.4)  Re[2]: M.U.G.E.Nのファイルを読み込みたい
□投稿者/ Eichiwai97 (4回)-(2016/01/31(Sun) 14:44:34)
Eichiwai97 さんの Web サイト
No78632 (Azulean さん) に返信
> 2016/01/31(Sun) 00:42:03 編集(投稿者)
返信ありがとうございます。
すみません。私はただ、ファイルの読み取り方が知りたかっただけでした。
まだ初心者なのでよくわからない点がたくさんありますが、
教えてもらった通りに「FileStreamでbyte単位」を参考にさせていただきます。
ありがとうございました。
解決済み
引用返信 編集キー/
■78635 / inTopicNo.5)  Re[3]: M.U.G.E.Nのファイルを読み込みたい
□投稿者/ Azulean (588回)-(2016/01/31(Sun) 14:57:59)
それだけだと難なので一例を示しておきます。

using (var fileStream = new FileStream("hogehoge.fnt", FileMode.Open, FileAccess.Read))
using (var binaryReader = new BinaryReader(fileStream))
{
  byte[] signature = binaryReader.ReadBytes(12);
  if (signature.Length != 12) throw new Exception("Invalid file");
  if (Encoding.ASCII.GetString(signature) != "ElecbyteFnt") throw new Exception("Invalid file");

  ushort versionHigh = binaryReader.ReadUInt16();
  ushort versionLow = binaryReader.ReadUInt16();
  // バージョンをどのように評価すべきかは知らないので、自分で調べるべし。
  // ushortでよいのかも不明

  int pcxDataOffset = binaryReader.ReadInt32();
  int pcxDataLength = binaryReader.ReadInt32();

  // あといろいろとあるみたいですが、割愛
}

解決済み
引用返信 編集キー/
■78638 / inTopicNo.6)  Re[4]: M.U.G.E.Nのファイルを読み込みたい
□投稿者/ Eichiwai97 (5回)-(2016/01/31(Sun) 16:26:14)
Eichiwai97 さんの Web サイト
2016/01/31(Sun) 16:26:39 編集(投稿者)

No78635 (Azulean さん) に返信
あ、ありがとうございます!感謝感謝です!
解決済み
引用返信 編集キー/
■78639 / inTopicNo.7)  Re[4]: M.U.G.E.Nのファイルを読み込みたい
□投稿者/ Eichiwai97 (6回)-(2016/01/31(Sun) 16:26:48)
Eichiwai97 さんの Web サイト
No78635 (Azulean さん) に返信
あ、ありがとうございます!感謝感謝です!
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -