172011
 

【简介】SFB封包是轩五三部曲、仙剑OL、天之痕OL等音乐资源封包的封包格式,若要进行MOD开发,对音乐进行编辑、添加是必不可少的,因此本工具便提供了这项功能

【功能】
·支持SFB文件解包
·支持SFB内部文件替换
·支持SFB内部文件追加(用于MOD制作)
·支持SFB内部文件删除(用于MOD卸载)

【下载】点击下载

【截图】

【源代码】读取部分(Delphi v7.0编写)

 {
—————————————————–
SFB Editor(轩辕剑游戏音乐封包文件编辑器)

Code By Mayafei
Delphi v7.0

程序下载请到: http://mayafei263.ys168.com/ (轩辕剑MOD相关SFB_Editor.rar)

说明:
Form1.Result是程式中的ListView
Form1.Memo是程式中的Memo
全局变量Anainfo是传递给本函数是否Memo显示信息的参数,类型是boolean
全局变量FileTypeA是传递给本函数是否分析文件类型,类型是boolean

—————————————————–
}

var
SFB_Stream, FTyp_Stream: TFileStream;
offset, i: integer;
fx_temp: integer;

begin
Form1.Result.Clear;
if AnaInfo=true then Form1.Memo.Lines.Add(#13#10+’开始分析SFB文件:’+Form1.SFBFile.Text);
if FileExists(Form1.SFBFile.Text) then
    begin
      SFB_Stream:=TFileStream.Create(Form1.SFBFile.Text, fmShareDenyNone);
      if FileTypeA=true then FTyp_Stream:=TFileStream.Create(Form1.SFBFile.Text, fmShareDenyNone);
      SFB_Stream.Position:=0;
      SFB_Stream.Read(File_Def[1],4);
                if AnaInfo=true then Form1.Memo.Lines.Add(‘获取SFB内部文件大小定义(1):’+inttostr(File_Def[1]));
      SFB_Stream.Seek(File_Def[1], soFromBeginning);
      SFB_Stream.Read(File_Def[2],4);
                if AnaInfo=true then Form1.Memo.Lines.Add(‘获取SFB内部文件当前数量:’+inttostr(File_Def[2]));
      SFB_Stream.Read(File_Def[3],4);
                if AnaInfo=true then Form1.Memo.Lines.Add(‘获取SFB内部文件大小定义(2):’+inttostr(File_Def[3]));
      SFB_Stream.Seek(File_Def[3], soFromBeginning);
     //SFB整个文件定义读取完毕,获取内部每个文件定义开始
                if AnaInfo=true then Form1.Memo.Lines.Add(‘正在获取每个文件信息…’);
        for i:=1 to File_Def[2] do
             begin
             SFB_Stream.Read(offset,4);
             with Form1.Result.items.add do
              begin
                  caption:=inttostr((i-1));
                  offset:=offset+4;//ListView中显示真实的文件起始偏移量
                  subitems.add(inttostr(offset));
                  if FileTypeA=true then
                  begin
                     FTyp_Stream.Seek(offset, soFromBeginning);
                     FTyp_Stream.Read(fx_temp,1);
                    //subitems.add(inttostr(fx_temp));
                     if fx_temp=82 then subitems.add(‘WAV’)
                     else if fx_temp=73 then subitems.add(‘MP3′)
                     else if fx_temp>253 then subitems.add(‘MP3′)
                     else subitems.add(‘未知’);
                  end
                  else
                     subitems.add(‘N/A’);
              end;
             end;
      if AnaInfo=true then Form1.Memo.Lines.Add(‘SFB文件分析完成!’);
      FreeAndNil(FTyp_Stream);
      FreeAndNil(SFB_Stream);
      Form1.TakeupA.Enabled:=True;
      Form1.DeleteF.Enabled:=True;
    end
    else
Form1.Memo.Lines.Add(‘错误:文件不存在!!!’);
end;
 

 发表评论

(required)

(required)

你可以使用下列HTML标签和属性:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>