bsic

所属分类:调试/Bug
开发工具:kotlin
文件大小:0KB
下载次数:0
上传日期:2021-06-07 11:58:15
上 传 者sh-1993
说明:  BSIC:BSI编译器反编译器,
(BSIC: BSI compiler decompiler,)

文件列表:
.idea/ (0, 2021-06-07)
.idea/.name (4, 2021-06-07)
.idea/codeStyles/ (0, 2021-06-07)
.idea/codeStyles/Project.xml (1008, 2021-06-07)
.idea/codeStyles/codeStyleConfig.xml (149, 2021-06-07)
.idea/compiler.xml (169, 2021-06-07)
.idea/gradle.xml (620, 2021-06-07)
.idea/jarRepositories.xml (1043, 2021-06-07)
.idea/misc.xml (345, 2021-06-07)
.idea/modules/ (0, 2021-06-07)
.idea/modules/gui/ (0, 2021-06-07)
.idea/modules/gui/bsic.gui.iml (502, 2021-06-07)
.idea/modules/gui/bsic.gui.main.iml (2923, 2021-06-07)
.idea/modules/gui/bsic.gui.test.iml (2735, 2021-06-07)
.idea/runConfigurations/ (0, 2021-06-07)
.idea/runConfigurations/Debug_configuration.xml (653, 2021-06-07)
.idea/runConfigurations/Main_application.xml (643, 2021-06-07)
.idea/vcs.xml (180, 2021-06-07)
build.gradle.kts (1752, 2021-06-07)
docs/ (0, 2021-06-07)
docs/bai_edit.png (87785, 2021-06-07)
docs/bsi_edit.png (72992, 2021-06-07)
docs/main.png (53189, 2021-06-07)
docs/tiles.png (87603, 2021-06-07)
gradle.properties (27, 2021-06-07)
gradle/ (0, 2021-06-07)
gradle/wrapper/ (0, 2021-06-07)
gradle/wrapper/gradle-wrapper.jar (59203, 2021-06-07)
gradle/wrapper/gradle-wrapper.properties (200, 2021-06-07)
gradlew (5766, 2021-06-07)
gradlew.bat (2763, 2021-06-07)
gui/ (0, 2021-06-07)
gui/build.gradle.kts (1697, 2021-06-07)
gui/settings.gradle (25, 2021-06-07)
gui/src/ (0, 2021-06-07)
gui/src/BsicApp.kt (470, 2021-06-07)
... ...

## BSIC: Fire Emblem Three Houses Map Editor Utilities and GUI used to edit Fire Emblem: Three Houses battle maps. ### Requirements * [Have a dump of fe3h.](https://github.com/three-houses-research-team/Throne-of-Knowledge/wiki/Dump-&-Extract-Game#extract-romfs--exefs-of-base-game) ### GUI Requires Java 11+, use [the freshest release](https://github.com/three-houses-research-team/bsic/releases). #### Main View ![](docs/main.png) #### Tiles editor ![](docs/tiles.png) #### BAI editor ![](docs/bai_edit.png) #### BSI editor ![](docs/bsi_edit.png) ### Binary BSI -> BSIC command line interface Converts binary BSI scripts to/from a nice DSL. 1. Locate a BSI file. * Base game battles and stuff: [84](https://fedatamine.com/en-us/battles/0/a-skirmish-at-dawn), [86](https://fedatamine.com/en-us/battles/1/rivalry-of-the-houses), 88, ..., 246 * Base game monastery: [256](https://fedatamine.com/en-us/monastery/0), [258](https://fedatamine.com/en-us/monastery/1), ... 364 ``` $ parse -i /data/fe3h/base/84 ``` Output (sample): ``` bsic { event { trigger = Trigger(type=2000, param1=0, param2=0, param3=0) conditions = Difficulty(unk=0, difficulty=NORMAL, unk2=2) actions += SpawnUnit(bai=BaiSlot(raw=20), unk2=19, unk3=0, unk4=0) actions += SpawnUnit(bai=BaiSlot(raw=34), unk2=17, unk3=0, unk4=0) actions += SpawnUnit(bai=BaiSlot(raw=35), unk2=18, unk3=1, unk4=0) actions += SpawnUnit(bai=BaiSlot(raw=30), unk2=16, unk3=0, unk4=0) // you get the idea } event { trigger = Trigger(type=2000, param1=0, param2=0, param3=0) conditions = Difficulty(unk=0, difficulty=HARD, unk2=2) actions += SpawnUnit(bai=BaiSlot(raw=20), unk2=19, unk3=0, unk4=0) actions += SpawnUnit(bai=BaiSlot(raw=44), unk2=17, unk3=0, unk4=0) actions += SpawnUnit(bai=BaiSlot(raw=45), unk2=18, unk3=1, unk4=0) actions += SpawnUnit(bai=BaiSlot(raw=30), unk2=16, unk3=0, unk4=0) actions += SpawnUnit(bai=BaiSlot(raw=31), unk2=15, unk3=0, unk4=0) // you get the idea } event { // author's note: bai slot 20 is Kostas in this map trigger = Trigger(type=2000, param1=0, param2=34, param3=0) conditions = CheckDeathStatus(unk=0, bai=BaiSlot(raw=20), isDead=true) actions += PlayMovie(movieID=1, unk=1) } event { // jeralt: Yes, good. If we're in the forest, we can sustain their attacks without losing the advantage. trigger = Trigger(type=2000, param1=0, param2=13, param3=0) conditions = (HasOtherScriptRun(unk=0, scriptIndex=14, didRun=true) and (MovedAnyUnitInRectangle(unk0=0, unk1=0, left=4, top=9, right=4, bottom=9, unk2=0) or MovedAnyUnitInRectangle(unk0=0, unk1=0, left=5, top=7, right=5, bottom=11, unk2=0) or MovedAnyUnitInRectangle(unk0=0, unk1=0, left=6, top=8, right=6, bottom=12, unk2=0) or MovedAnyUnitInRectangle(unk0=0, unk1=0, left=7, top=10, right=7, bottom=12, unk2=0) or MovedAnyUnitInRectangle(unk0=0, unk1=0, left=8, top=11, right=8, bottom=11, unk2=0) or MovedAnyUnitInRectangle(unk0=0, unk1=0, left=9, top=10, right=9, bottom=10, unk2=0) or MovedAnyUnitInRectangle(unk0=0, unk1=0, left=11, top=10, right=11, bottom=10, unk2=0) or MovedAnyUnitInRectangle(unk0=0, unk1=0, left=12, top=8, right=12, bottom=8, unk2=0) or MovedAnyUnitInRectangle(unk0=0, unk1=0, left=13, top=7, right=13, bottom=7, unk2=0) or MovedAnyUnitInRectangle(unk0=0, unk1=0, left=14, top=8, right=14, bottom=8, unk2=0) or MovedAnyUnitInRectangle(unk0=0, unk1=0, left=15, top=7, right=20, bottom=9, unk2=0) or MovedAnyUnitInRectangle(unk0=0, unk1=0, left=16, top=10, right=20, bottom=11, unk2=0) or MovedAnyUnitInRectangle(unk0=0, unk1=0, left=17, top=12, right=20, bottom=12, unk2=0) or MovedAnyUnitInRectangle(unk0=0, unk1=0, left=19, top=13, right=20, bottom=13, unk2=0) or MovedAnyUnitInRectangle(unk0=0, unk1=0, left=20, top=14, right=20, bottom=14, unk2=0) or MovedAnyUnitInRectangle(unk0=0, unk1=0, left=0, top=3, right=0, bottom=12, unk2=0) or MovedAnyUnitInRectangle(unk0=0, unk1=0, left=1, top=4, right=1, bottom=11, unk2=0) or MovedAnyUnitInRectangle(unk0=0, unk1=0, left=2, top=5, right=2, bottom=5, unk2=0) or MovedAnyUnitInRectangle(unk0=0, unk1=0, left=4, top=0, right=12, bottom=0, unk2=0) or MovedAnyUnitInRectangle(unk0=0, unk1=0, left=6, top=1, right=9, bottom=1, unk2=0) or MovedAnyUnitInRectangle(unk0=0, unk1=0, left=11, top=1, right=11, bottom=1, unk2=0) or MovedAnyUnitInRectangle(unk0=0, unk1=0, left=8, top=2, right=8, bottom=2, unk2=0) or MovedAnyUnitInRectangle(unk0=0, unk1=0, left=10, top=2, right=10, bottom=3, unk2=0) or MovedAnyUnitInRectangle(unk0=0, unk1=0, left=16, top=6, right=20, bottom=6, unk2=0) or MovedAnyUnitInRectangle(unk0=0, unk1=0, left=14, top=6, right=14, bottom=6, unk2=0) or MovedAnyUnitInRectangle(unk0=0, unk1=0, left=15, top=5, right=15, bottom=5, unk2=0) or MovedAnyUnitInRectangle(unk0=0, unk1=0, left=17, top=5, right=20, bottom=5, unk2=0) or MovedAnyUnitInRectangle(unk0=0, unk1=0, left=18, top=4, right=18, bottom=4, unk2=0) or MovedAnyUnitInRectangle(unk0=0, unk1=0, left=19, top=2, right=20, bottom=4, unk2=0) or MovedAnyUnitInRectangle(unk0=0, unk1=0, left=20, top=0, right=20, bottom=1, unk2=0) or MovedAnyUnitInRectangle(unk0=0, unk1=0, left=8, top=5, right=8, bottom=5, unk2=0) or MovedAnyUnitInRectangle(unk0=0, unk1=0, left=9, top=6, right=9, bottom=6, unk2=0) or UnknownCondition(magic=310, argument=[0, 0, 5, 7]))) actions += BattleTalk(entryID=10, unk2=1, unk3=0, unk4=0, unk5=1) actions += ShowTutorial(tutorialID=21) } } ``` ### BSIC to BSI TODO. this `bsic` block is just a kotlin code file so it (almost) compiles into a struct ### Usage #### From source ``` ./gradlew run --args="parse -i /data/fe3h/base/84" ``` #### From binary distribution or whatever ``` java -jar bsic.jar parse -i /data/fe3h/base/84 ``` ### FAQ #### How open? https://www.jetbrains.com/help/idea/gradle.html#gradle_import_project_start #### Why Kotlin? fedatamine is already in kotlin

近期下载者

相关文件


收藏者