zh:guide:febuildergba:febuildergba的配置数据结构_zh

配置文件的规则

/config/config.xml

这个工具的设置被存储。


/config/translate/

这是该工具使用的翻译资源。

它是 KEY:\\r\\nVALUE 格式,基于像GNU GetText这样的想法。

:原始字符串
翻译字符串


i.imgur.com_ipfrtme.jpg

/config/data/

该工具使用的游戏中有设置数据。
如果将数据提取为外部资源,则包含似乎更具可扩展性的数据。


搜索规则

文件按以下顺序搜索。
XX包含所选语言。 en=英文, zh=中文.
file_VERSION.XX.txt
file_VERSION.txt
file_ALL.XX.txt
file_ALL.txt

同样在文件中,有些东西会打开 {J} {U}.
例如,由于FE8J FE8U中的指针值不同,因此用于此切换。

所有文件格式都是制表符分隔的TSV格式。
字符代码在UTF-8中统一。

搜索“foo”
游戏FE8
XXEN
类型FE8U
if ( Exists("config/data/foo_FE8.en.txt") )
{
   return found;
}
if ( Exists("config/data/foo_FE8.txt") )
{
   return found;
}
if ( Exists("config/data/foo_ALL.en.txt") )
{
   return found;
}
if ( Exists("config/data/foo_ALL.txt") )
{
   return found;
}
return NOT_FOUND;


假设找到了 foo_ALL.txt 。

假定foo_ALL.txt的内容如下所示。

TEST1=A
TEST2=B	{U}
TEST3=C	{J}

由于在搜索指令中指定了类型== FE8U,因此获取以下内容。

TEST1=A
TEST2=B

如果搜索命令是类型== FE8J,则获取以下内容。

TEST1=A
TEST3=C

列表中

ai1Define the list of unit Placer AI1.
ai2Define the list of unit Placer AI2.
aiscriptDefine the aiscript command
asmmapFunction map. Displays hints during function map disassembly.
base_rom_infoDefine the capacity and CRC of unmodified ROM.
battleanime_85commandDefine C85 command list of battle animation.
battleanime_auto_recolorIt is used to decide enemy color scheme with battle animation.
battleanime_modeDefine the type of battle animation.
eventDefine the event instruction.
eventcondDefine the type of event condition.
func_langDefine the languages available in FEBuilderGBA.
item_anime_effectDefine a list of weapon animation effects.
item_staff_use_effectDefine the effect of using items.
item_weapon_effectDefine the additional effect of the weapon.
item_usability_array_Determine whether items can be used.
item_effect_array_Define the effect of using items.
item_promotion1_array_Define processing when using Promotion Item.
item_promotion2_array_Define whether it is a Promotion Item (FE 7 only).
item_staff1_array_Define the method of target selection of items (maybe).
item_staff2_array_Define the type of Staff.
item_statbooster1_array_Define a message when using stat booster.
item_statbooster2_array_Define Stat Booster and whether it is a Promotion Item.
magic_commandDefine the command of magic extension.
magic_csa_spell_tableDefine the condition to search for CSATABLE which defines magic animation of magic extension.
magic_extendsDefine how to judge whether magic expansion is appropriate or not.
mappointerDefine the map pointer name.
mapstyleDefine map style list.
other_textDefines an address list in which character string direct value of C language is embedded.
skill_extendsDefine how to judge whether skill extension is appropriate or not.
skill_extends_*For each skill extends, define the skill ID.
song_instrumentMake the instrument information MD5 and assign the instrument name to the instrument address.
song_instrumentsetDefine how to judge whether NIMAP is right or wrong.
soundDefine the name of the sound effect.
sound_foot_stepsDefine footsteps. FE8 only.
tbl_condDefine whether to use tbl or not.
translate_textidFor translation, correspondence table of string IDs in ROMs of US and Japan.
updater.bat.txtIt is not a configuration file. It is a batch file of automatic update.



/config/patch/

详细设置patch→补丁。
您可以从菜单工具 → patch中访问它。

i.imgur.com_59gvcy9.jpg

补丁格式

补丁文件是key = value的格式。
// #; 是一条注释。
附加0x时,数字数据变为十六进制。
如果你不添加任何东西,它是一个十进制数字。
- 0x08000000有或没有GBA指针,这两种情况都没有问题。

普通物品

NAME=补丁名称


定义补丁的名称。
如果未定义,它将成为补丁的文件名。

TYPE=IMAGE TYPE=ADDR TYPE=STRUCT TYPE=BIN TYPE=EA TYPE=SWITCH


定义补丁的类型。
有6种类型。
详情将在稍后解释。


INFO=写更多信息\\r\\n 请尽可能描述。


写更多信息,请换行\\r\\n


IF:0xEE594=0x4B 0xFA 0x2F 0x59 0x7E 0x19


定义补丁是否可用。
在这个例子中,我们正在检查 ROM 0xEE594 是 0x4B 0xFA 0x2F 0x59 0x7E 0x19。
如果 0xEE594 是 0x4B 0xFA 0x2F 0x59 0x7E 0x19, 则可以使用此补丁。

IF_NOT:0xEE594=0x4B 0xFA 0x2F 0x59 0x7E 0x19

定义补丁是否可用。
相反,在ROM中,0xEE594将可用,除非它是 0x4B 0xFA 0x2F 0x59 0x7E 0x19.

PATCHED_IF:0x080bb182=0x45 0x46 0xE0 0xB4
PATCHED_IF_NOT:0x080bb182=0x45 0x46 0xE0 0xB4

它定义了补丁是否已被修改。
如果我们修补两次,它将主要用于坏BIN补丁。


多种语言

要编写英文名称,请添加 .en
要编写中文名称,请添加 .zh

NAME=Japanese name
NAME.en=英文
NAME.zh=中文

从ver20171211开始,现在可以为所有参数指定诸如AAAA.en之类的语言。



补丁类型ADDR补丁

NAME=きずぐすりの回復量
NAME.en=Recovery amount of Vulnerary
NAME.zh=回复杖的回复量

TYPE=ADDR

ADDRESS=0x2fe16

AUTHOR=出典:aeraさんの資料より\r\n

http://ngmansion.xyz/wiki/hackfe/index.php?%E3%83%91%E3%83%83%E3%83%81#jf501d8a

AUTHOR.zh=来源:从aera的数据\r\n

http://ngmansion.xyz/wiki/hackfe/index.php?%E3%83%91%E3%83%83%E3%83%81#jf501d8a

AUTHOR.en=Source: From aera's data\r\n

http://ngmansion.xyz/wiki/hackfe/index.php?%E3%83%91%E3%83%83%E3%83%81#jf501d8a
~
FE8J的伤药恢复量存储在0x2fe16中。
这是一个修改它的补丁。

i.imgur.com_yloe1u7.jpg

多字节

虽然ADDR基本上只有1个字节的变化,
但可以使用组合框格式使用长字节。

NAME=フリーマップから入らないとフリーズする制約を消す
NAME.en=Eliminate the constraint of freezing unless it enters from the world map.
NAME.zh=消除冻结的限制,除非从免费地图进入

//作为地址补丁实施。
TYPE=ADDR

ADDRESS=0xc1e7c
COMBO=默认|0x47 0x2D|fix|0xB8 0xE0


i.imgur.com_vruzdeu.jpg

数据尺寸

最新支持DATA SIZE规格。
当DATASIZE=4,它操作为4个字节(由于它是GBA,所以数据以小端编写)。

为了兼容性,如果没有指定,它变成1个字节 DATASIZE=1。
如果指定了COMBO,则会忽略DATASIZE规范,并且COMBO规范优先。

例: 通过模式选择上FE7更改肖像的琳

NAME=MODE SELECT 顔画像 リン編
NAME.en=MODE SELECT Portrait of the Lyn Editing
NAME.en=头像琳

TYPE=ADDR

ADDRESS=0x4393D8
ADDRESS_TYPE=头像
DATASIZE=4         //出于某种原因,MODE SELECT的肖像ID由4个字节的DWORD存储

同时指定地址

可以使用空格分隔符将多个地址写入
每个值都设置相同的值。
当你需要同时更改不同的地方时使用它。


NAME=幸運上限
NAME.en=Upper limit of lucky
NAME.zh=幸运上限

//アドレスパッチとして実装します
TYPE=ADDR

ADDRESS=0x80CA0 0x29f0e 0x29f12 0x180d8 0x180dc 0x95694 0x95694 0x9585C

例如,由于幸运限制是在各地分散设置的硬编码,
如上所述,它会立即改变数值。

HEX

使用 HEX=false 如果您想要将用户界面上显示的数字显示为十进制数字。

NAME=最大レベル
NAME.en=Max Level
NAME.zh=最高级别

//作为地址补丁实施。
TYPE=ADDR

ADDRESS=0x25132
HEX=false //它以十进制数显示它

i.imgur.com_crqavfm.jpg

地址类型

请使用地址类型,如果有要与值关联的东西。

ADDRESS_TYPE = UNIT //将其视为人物ID(字符ID)
ADDRESS_TYPE = ITEM //将其视为道具ID。
ADDRESS_TYPE = CLASS //将其视为职业ID
ADDRESS_TYPE = SONG //将其视为音乐ID(歌曲ID)

For example.

NAME=進撃準備
NAME.en=MUSIC_Preparation
NAME.zh=音乐_进击准备
//作为地址补丁实施。
TYPE=ADDR

ADDRESS=0x080495cc 0x080af17e 0x08031654 0x08090048 0x080960b4 0x0809b880 0x0809c7f6
ADDRESS_TYPE=SONG //准备BGM被改变,它被视为音乐ID。

i.imgur.com_gen0pz4.jpg

补丁类型IMAGE补丁。


TYPE=IMAGE


定义补丁来改变形象。
这个补丁需要用指针写入,而不是图像地址。
这是因为图像长度可变,所以图像地址可能会改变。


以下是修改FE8J FIN的补丁。

NAME=系统_FIN

TYPE=图片

WIDTH=256
HEIGHT=160
//使用的调色板数量。
PALETTE=1

//压缩的图像。
ZIMAGE_POINTER=0xBBF48
//TSA与未压缩的标题。
HEADERTSA_POINTER=0xBBF54
//未压缩的调色板。
PALETTE_POINTER=0xBBF44


i.imgur.com_oetdony.jpg

未压缩的图像。
IMAGE_POINTER

压缩的图像。
ZIMAGE_POINTER

使用压缩的TSA。
ZTSA_POINTER

使用带压缩标题的TSA。
ZHEADERTSA_POINTER

将TSA与未压缩的标题一起使用。
HEADERTSA_POINTER

使用未压缩的调色板。
PALETTE_POINTER

它用于显示和导入图像。
在下面的例子中,它是一种条件,它拥有一种具有256×160尺寸图像的16色调色板。

WIDTH=256
HEIGHT=160
//使用的调色板数量。
PALETTE=1


手工编写图像补丁很难,因此您可以自动生成图像补丁。

在菜单 →工具 →图形工具中,找到图像,找到TSA等,然后单击右下角的补丁制作工具按钮。
自动制作补丁。
没有必要每次手工计算指针。

i.imgur.com_whg6ziq.jpg

i.imgur.com_ltklo5l.jpg

i.imgur.com_qj0vh2c.jpg


补丁类型STRUCT补丁

TYPE=STRUCT

结构补丁

当你想改变结构等数据时使用它。
但是,使用工具主体这样复杂的事情是不可能完成的。
如果你想做出困难的事情,如果它可以被概括,你应该在工具主体一侧。


//实现它作为一个结构补丁。
TYPE=STRUCT

//指向数据的指针。
POINTER=$GREP4END 0x00 0xB5 0xC0 0x46 0x06 0x48 0xC0 0x46 0x06 0x49 0x89 0x7B 0x89 0x00 0x40 0x58 0x01 0x21 0x00 0xF0 0x02 0xF8 0x17 0x20 0x00 0xBD 0xC0 0x46 0x02 0x4B 0x9F 0x46

//单位等级0x00 0x00 [动画设置指针] = 8个字节
//数据大小(十进制数)。
DATASIZE=8

//数据的数量(十进制数)。
DATACOUNT=12

//定义数据。
B0:UNIT=人物
B1:CLASS=职业
B2=00
B3=00
P4:BATTLEANIMENAME=动画设定


i.imgur.com_noqoruh.jpg

FE 8补丁来设置Yugdra补丁的单个动画。
在怪盗补丁中没有额外的结构,因此我将以Yugdra为例进行说明。

B0:UNIT=人物
B1:CLASS=职业
B2=00
B3=00
P4:BATTLEANIMENAME=动画设定

↓↓↓↓↓

struct 
{
	byte	unit;			// +0
	byte	class;			// +1
	byte	zero1;			// +2
	byte	zero2;			// +3
	void*	battleanime;	// +4
};



b	sbyte( char )	-128 ~ 127
B	byte			0 ~ 255
W	word			0 ~ 65535
D	dword			0 ~ 4294836225
P	dword			0 ~ 4294836225


关于D和P之间的区别
在P的情况下,它总是被记录为指针。
当用户输入0x123时,D中记录0x123,但如果是P,则记录为0x08000123。


补丁类型BIN补丁

type=BIN
二进制数据和源代码

NAME=SOUND_NIMAP(本地乐器图)

TYPE=BIN

PATCHED_IFNOT:$GREP4 0x00 0x3C 0x00 0x00 0x68 0x27 0x50 0x08 0xFF 0xFA 0x00 0xCC 0x00 0x3C 0x00 0x00 0x18 0x7D 0x29 0x08 0xFF 0xFA 0x00 0xCC 0x00 0x3C 0x00 0x00 0x3C 0x8E 0x28 0x08 0xFF 0xF9 0x00 0xA5 0x01 0x3C 0x00 0x00 0x02 0x00 0x00 0x00 0x00 0x00 0x0F 0x00=0x00 0x3C 0x00 0x00
BIN:$FREEAREA=JAPFE8_NI_Map.bin
INFO=MIDI乐器图



i.imgur.com_ob9klti.jpg

在这个例子中,将JAPFE8_NI_Map.bin粘贴到适当的$ FREEAREA中。
由于两次粘贴时存在问题,因此$ GREP4正在调查它是否适用。


宏
$FREEAREA自由区域(分配ROM中的可用空间)
$GREP4		搜索字节字符串,但以4字节为单位(高速)。
$GREP1		搜索字节字符串,但是1个字节单位(低速)。
$GREP4_NOT	它是有条件的,它不能通过搜索字节字符串找到。
$GREP1_NOT	它是有条件的,它不能通过搜索字节字符串找到。




NAME=10分割CG表示

//作为BIN补丁实施。
TYPE=BIN

//补丁适应条件。
PATCHED_IF:0x080bb182=0x45 0x46 0xE0 0xB4

BIN:$FREEAREA=show_10split_image.bin

//跳转到插入10格图像显示程序的地方。
JUMP:0x080bb182:$r4=show_10split_image.asm

INFO=10分割CGを表示できるようにします
INFO.zh=它可以显示10个分割的CG
INFO.en=It makes it possible to display 10 divided CG.

i.imgur.com_41kvbuk.jpg

在空闲区域粘贴show_10split_image.bin。
为粘贴的数据生成跳转代码。
r4寄存器用于跳转代码。

要跳转的代码,将生成以下代码。

当地址可以被4个字节整除时。
(addr%4 == 0)
ldr r4,[JUMP ADDR]		//+0
mov pc,r4;				//+2
JUMP ADDR				//+4  -->共8个字节。

但是,如果它可以被2个字节整除,则插入NOP。

NOP					//+0
ldr r4,[JUMP ADDR]		//+2
mov pc,r4;				//+4
JUMP ADDR				//+6  -->共有10个字节。

加入偏移

JUMP:0x080bb182:$r4:+2=show_10split_image.bin


这样,您可以跳转到show_10split_image.bin安装位置+ 2的位置。


直接值 $NONE

JUMP:0x080bb182:$NONE=show_10split_image.bin


写入show_10split_image.bin的安装地址,而不是生成跳转代码。
由于它是一个地址,它消耗4个字节
要写入的地址是小尾数格式。

作为一种实用的使用方式,我认为我使用它从设置跳转到代码


 //在菜单效果中,输入GNP程序的地址。
 //因为它提供了直接值,所以没有寄存器关系,所以$ NONE。
 //如果是直接值,则需要将其设置为地址+1,因此+1。
JUMP:0x5C53A8:$NONE:+1=main指南本体.bin


B跳代

JUMP:0x988c6:$B=0x9893a


在地址0x988c6处生成b 0x9893a的ASM操作码。
b因为是跳跃,所以我不能飞得太远。
b它消耗2个字节,因为它是跳转。



BL跳转生成

JUMP:0x340cc:$BL=0x988c8


在地址0x340cc处生成bl 0x988c8的ASM操作码。
因为这是跳跃,所以不能飞得太远。
它消耗4个字节,因为它是一个bl跳转。



文本表扩展指令

EXTENDS:0xe30=TEXT      //将文本表扩展为0xe30。
TEXT:0x0e01=0x0e01.txt  //将0x0e01.txt的内容写入文本ID 0xe01 
TEXT:0x0e02=0x0e02.txt
TEXT:0x0e00=0x0e00.txt


支持文本表扩展和写入。
但是,截至目前,我们无法扩展其他表格。


补丁类型EA补丁

TYPE=EA
EA=ea.event


i.imgur.com_wavr6ro.jpg

使用添加数据 Event Assembler.
将EA中指定的Event Assembler脚本的内容添加到当前ROM中。

补丁的种类

NAME=没有武器显示
TYPE=SWITCH

COMBO.en=no weapons|ONN|with weapons|OFF

ONN:0x0802F5C0=0x00 0x20 0x00 0x20
ONN:0x080D1DE2=0x00 0x20 0x00 0x20

OFF:0x0802F5C0=0xE7 0xF7 0x86 0xF9
OFF:0x080D1DE2=0x44 0xF7 0x75 0xFD

“SWITCH补丁”是addr补丁的进一步发展

当需要使用不同的值写入不同的地址时使用它。
与BIN或EA补丁不同的是,我们处理大约几个字节的较小数据

在这个例子中,显示ON和OFF选项,
如果是ON,则将ONN定义的内容写入地址
如果为OFF,则将由OFF定义的内容写入地址

MOD

您可能希望将结构的未使用区域用作补丁的参数
在FEBuilderGBA中,它可以通过在patch目录中创建MOD _ *。txt来使用


IF:0x89268=0x00 0x4B 0x9F 0x46
FORM=UnitForm   //它适用于UnitForm(FE 8)
J_38=技能1
J_39=技能2
J_49=个人技能
J_38:NAME=J_38_SKILLASSIGNMENT_SCROLL1_B39
J_39:NAME=J_39_SKILLASSIGNMENT_SCROLL2_B38
J_49:NAME=J_49_SKILLASSIGNMENT_MASTERY


但是,由于要设置为MOD的参数是FEBuilderGBA的C#中使用的标签名称,因此有必要了解源代码。
而且,在欧美的改造中,我认为它不是经常使用的地方,而是经常创造出自己的结构。
如果你这么认为,MOD可能是日本重塑中经常使用的一个特征。

FEBuilderGBA启动的参数

FEBuilderGBA.exe [ROM] [--选项=值]

除非您指定了任何选项,否则FEBuilderGBA将显示欢迎屏幕。
你可以通过指定其中一个选项来改变它。


[ROM]

打开指定的ROM文件名称。
如果未指定文件名或者无法读取文件,则会显示“欢迎”屏幕。

--rom=文件名

这是一样的 [ROM]。

--最后一个ROM

打开上次打开的ROM。
最后一个ROM将是您退出FEBuilderGBA时打开的ROM。
(在过程结束时,记录当前打开的文件名)

--强制版本=版本

强制将ROM作为特定版本打开。
通常情况下,版本与ROM的标题区分开来,但是当您想用特定版本强制打开它时会使用它。
当ROM标头由于某种原因被损坏或者当你想要加载另一个GBA游戏进行调试时使用它
通常你不需要使用它。

版本列表
FE8JP
FE7JP
FE6
FE8U
FE7U

--强制细节

强制从详细菜单屏幕开始。
有一些特殊的原因,当你想跳过简单的屏幕菜单时使用它。
通常你不需要使用它。

zh/guide/febuildergba/febuildergba的配置数据结构_zh.txt · 最終更新: 2018/09/23 19:09 by 211.14.62.193