Heroine Anthem [master]
Add tool to extract/replace EXE strings
[1mdiff --git a/resources/ha1/exe.key b/resources/ha1/exe.key[m
[1mnew file mode 100644[m
[1mindex 0000000..219bf0e[m
[1m--- /dev/null[m
[1m+++ b/resources/ha1/exe.key[m
[36m@@ -0,0 +1,90 @@[m
[32m+[m[32m1973560[m
[32m+[m[32m1973576[m
[32m+[m[32m1973588[m
[32m+[m[32m1973596[m
[32m+[m[32m1974092[m
[32m+[m[32m1974104[m
[32m+[m[32m1974116[m
[32m+[m[32m1974128[m
[32m+[m[32m1974140[m
[32m+[m[32m1974152[m
[32m+[m[32m1974168[m
[32m+[m[32m1974184[m
[32m+[m[32m1974204[m
[32m+[m[32m1974224[m
[32m+[m[32m1974244[m
[32m+[m[32m1974260[m
[32m+[m[32m1974284[m
[32m+[m[32m1974296[m
[32m+[m[32m1974312[m
[32m+[m[32m1974316[m
[32m+[m[32m1974336[m
[32m+[m[32m1974348[m
[32m+[m[32m1974364[m
[32m+[m[32m1974384[m
[32m+[m[32m1974400[m
[32m+[m[32m1974412[m
[32m+[m[32m1974432[m
[32m+[m[32m1974464[m
[32m+[m[32m1975404[m
[32m+[m[32m1975416[m
[32m+[m[32m1975424[m
[32m+[m[32m1975440[m
[32m+[m[32m1975448[m
[32m+[m[32m1975460[m
[32m+[m[32m1977280[m
[32m+[m[32m1977288[m
[32m+[m[32m1978144[m
[32m+[m[32m1978172[m
[32m+[m[32m1978208[m
[32m+[m[32m1978236[m
[32m+[m[32m2387072[m
[32m+[m[32m2387108[m
[32m+[m[32m2387144[m
[32m+[m[32m2387180[m
[32m+[m[32m2387216[m
[32m+[m[32m2387252[m
[32m+[m[32m2387288[m
[32m+[m[32m2387324[m
[32m+[m[32m2387360[m
[32m+[m[32m2387396[m
[32m+[m[32m2387432[m
[32m+[m[32m2387468[m
[32m+[m[32m2387576[m
[32m+[m[32m2387612[m
[32m+[m[32m2387648[m
[32m+[m[32m2387684[m
[32m+[m[32m2387720[m
[32m+[m[32m2387756[m
[32m+[m[32m2387792[m
[32m+[m[32m2387828[m
[32m+[m[32m2387864[m
[32m+[m[32m2387900[m
[32m+[m[32m2387936[m
[32m+[m[32m2387972[m
[32m+[m[32m2388008[m
[32m+[m[32m2388044[m
[32m+[m[32m2388080[m
[32m+[m[32m2388116[m
[32m+[m[32m2388152[m
[32m+[m[32m2388188[m
[32m+[m[32m2388224[m
[32m+[m[32m2388260[m
[32m+[m[32m2388296[m
[32m+[m[32m2387504[m
[32m+[m[32m2387540[m
[32m+[m[32m2388332[m
[32m+[m[32m2388368[m
[32m+[m[32m2388404[m
[32m+[m[32m2388440[m
[32m+[m[32m2388476[m
[32m+[m[32m2388512[m
[32m+[m[32m2388548[m
[32m+[m[32m2388584[m
[32m+[m[32m2388620[m
[32m+[m[32m2388656[m
[32m+[m[32m2388692[m
[32m+[m[32m2388728[m
[32m+[m[32m2388764[m
[32m+[m[32m2388800[m
[32m+[m[32m2388836[m
[1mdiff --git a/toolchain/exedump.php b/toolchain/exedump.php[m
[1mnew file mode 100755[m
[1mindex 0000000..812587d[m
[1m--- /dev/null[m
[1m+++ b/toolchain/exedump.php[m
[36m@@ -0,0 +1,56 @@[m
[32m+[m[32m#!/usr/bin/php[m
[32m+[m[32m\n\n");[m
[32m+[m[32m}[m
[32m+[m[32mfclose($fo);[m
[32m+[m[32mfclose($fd);[m
[32m+[m
[32m+[m[32mecho ("All done!...\n\n");[m
[32m+[m
[32m+[m[32mfunction DisplayOptions() {[m
[32m+[m [32mecho ("Extracts Unicode EXE strings from Heroine Anthem I&II.\n usage: exedump [game_path] [out_file]\n\n");[m
[32m+[m[32m}[m
[32m+[m
[32m+[m[32m?>[m
[1mdiff --git a/toolchain/exeinsert.php b/toolchain/exeinsert.php[m
[1mnew file mode 100755[m
[1mindex 0000000..72b0c96[m
[1m--- /dev/null[m
[1m+++ b/toolchain/exeinsert.php[m
[36m@@ -0,0 +1,65 @@[m
[32m+[m[32m#!/usr/bin/php[m
[32m+[m[32m", str_replace("\r", "", file_get_contents($string)));[m
[32m+[m[32marray_pop($strings);[m
[32m+[m
[32m+[m[32mforeach($strings as $patch) {[m
[32m+[m [32mpreg_match($regex, $patch, $pair);[m
[32m+[m [32m$pair = $pair[1];[m
[32m+[m [32mlist($off, $len) = explode(":", $pair);[m
[32m+[m[41m [m
[32m+[m [32m// Convert remaining Chinese from UTF back to BIG5[m
[32m+[m [32m$patch = utf_to_zh($patch);[m
[32m+[m[41m [m
[32m+[m [32m// Strip comments[m
[32m+[m [32mwhile(preg_match($regex2, $patch))[m
[32m+[m [32m$patch = preg_replace($regex2, "", $patch);[m
[32m+[m [32m$patch = trim(preg_replace($regex, "", $patch), "\0\n\t\x0b");[m
[32m+[m [32m$patch = str_replace("\n", "\r\n", $patch);[m
[32m+[m[41m [m
[32m+[m [32m//print("Offset: $off\nMax Length: $len\nString: $patch\nString Length:".strlen($patch)."\n");[m
[32m+[m[41m [m
[32m+[m [32mif(strlen($patch) > $len) {[m
[32m+[m [32mecho("ERROR: EXE string at 0x".dechex($off)." exceeds bounds\n");[m
[32m+[m [32mdie;[m
[32m+[m [32m}[m
[32m+[m[41m [m
[32m+[m [32mfseek($fo, $off, SEEK_SET);[m
[32m+[m [32m$patch = str_pad($patch, $len, "\0");[m
[32m+[m [32mfputs($fo, $patch);[m
[32m+[m[32m}[m
[32m+[m[32mfclose($fo);[m
[32m+[m
[32m+[m[32mecho ("All done!...\n\n");[m
[32m+[m
[32m+[m[32mfunction DisplayOptions() {[m
[32m+[m [32mecho ("Extracts Unicode EXE strings from Heroine Anthem I&II.\n usage: exeinsert [game_path] [out_file]\n\n");[m
[32m+[m[32m}[m
[32m+[m
[32m+[m[32m?>[m
[1mdiff --git a/working/en/ha1/exe.txt b/working/en/ha1/exe.txt[m
[1mnew file mode 100644[m
[1mindex 0000000..9ba3e78[m
[1m--- /dev/null[m
[1m+++ b/working/en/ha1/exe.txt[m
[36m@@ -0,0 +1,360 @@[m
[32m+[m[32m[1973560:15][m
[32m+[m[32m# %s學到新招式:%s[m
[32m+[m[32m%s learned %s<>[m
[32m+[m
[32m+[m[32m[1973576:11][m
[32m+[m[32m# %s升級了[m
[32m+[m[32m%s's LV+<>[m
[32m+[m
[32m+[m[32m[1973588:7][m
[32m+[m[32m# EXP+%d[m
[32m+[m[32mEXP +%d<>[m
[32m+[m
[32m+[m[32m[1973596:11][m
[32m+[m[32m# 獲得金錢%dG[m
[32m+[m[32mObtain %dG<>[m
[32m+[m
[32m+[m[32m[1974092:11][m
[32m+[m[32m# 魔法醫療[m
[32m+[m[32mHealing<>[m
[32m+[m
[32m+[m[32m[1974104:11][m
[32m+[m[32m# 魔法攻擊[m
[32m+[m[32mSorcery<>[m
[32m+[m
[32m+[m[32m[1974116:11][m
[32m+[m[32m# 特殊攻擊[m
[32m+[m[32mTechniques<>[m
[32m+[m
[32m+[m[32m[1974128:11][m
[32m+[m[32m# 普通攻擊[m
[32m+[m[32mBasic<>[m
[32m+[m
[32m+[m[32m[1974140:11][m
[32m+[m[32m# %s x%2d[m
[32m+[m[32m%s x%2d<>[m
[32m+[m
[32m+[m[32m[1974152:15][m
[32m+[m[32m# 使用魔法醫療[m
[32m+[m[32mUse MP to heal<>[m
[32m+[m
[32m+[m[32m[1974168:15][m
[32m+[m[32m# 使用魔法攻擊[m
[32m+[m[32mUse MP attack<>[m
[32m+[m
[32m+[m[32m[1974184:19][m
[32m+[m[32m# 使用消耗SP的攻擊[m
[32m+[m[32mUse SP attack<>[m
[32m+[m
[32m+[m[32m[1974204:19][m
[32m+[m[32m# 只使用最基本的攻擊[m
[32m+[m[32mNormal combat<>[m
[32m+[m
[32m+[m[32m[1974224:19][m
[32m+[m[32m# 請選擇自動戰鬥模式[m
[32m+[m[32mChoose an auto mode<>[m
[32m+[m
[32m+[m[32m[1974244:15][m
[32m+[m[32m# 請選擇移動目標[m
[32m+[m[32mSelect a target<>[m
[32m+[m
[32m+[m[32m[1974260:23][m
[32m+[m[32m# 請選擇使用道具的地點[m
[32m+[m[32mUse item where?<>[m
[32m+[m
[32m+[m[32m[1974284:11][m
[32m+[m[32m# 請選擇道具[m
[32m+[m[32mInventory<>[m
[32m+[m
[32m+[m[32m[1974296:15][m
[32m+[m[32m# 請選擇施法目標[m
[32m+[m[32mSelect a target<>[m
[32m+[m
[32m+[m[32m[1974312:3][m
[32m+[m[32m# %s[m
[32m+[m[32m%s<>[m
[32m+[m
[32m+[m[32m[1974316:19][m
[32m+[m[32m# 時間 %d MP %d/%d[m
[32m+[m[32mACT %d MP %d/%d<>[m
[32m+[m
[32m+[m[32m[1974336:11][m
[32m+[m[32m# 請選擇法術[m
[32m+[m[32mSorcery<>[m
[32m+[m
[32m+[m[32m[1974348:15][m
[32m+[m[32m# 請選擇攻擊位置[m
[32m+[m[32mSelect a target<>[m
[32m+[m
[32m+[m[32m[1974364:19][m
[32m+[m[32m# %s 時間 %d SP %d/%d[m
[32m+[m[32m%s ACT %d SP %d/%d<>[m
[32m+[m
[32m+[m[32m[1974384:15][m
[32m+[m[32m# 請選擇攻擊招式[m
[32m+[m[32mTechniques<>[m
[32m+[m
[32m+[m[32m[1974400:11][m
[32m+[m[32m# 請選擇指令[m
[32m+[m[32mAction<>[m
[32m+[m
[32m+[m[32m[1974412:19][m
[32m+[m[32m# 請選擇%s作戰位置[m
[32m+[m[32mSelect %s position<>[m
[32m+[m
[32m+[m[32m[1974432:31][m
[32m+[m[32m# 請選擇%s作戰位置,按右鍵自動配置[m
[32m+[m[32mSelect %s's position (-> Auto)<>[m
[32m+[m
[32m+[m[32m[1974464:19][m
[32m+[m[32m# 請選擇角色時間格[m
[32m+[m[32mSelect Action time<>[m
[32m+[m
[32m+[m[32m[1975404:11][m
[32m+[m[32m# %s %s %d[m
[32m+[m[32m%s %s %d<>[m
[32m+[m
[32m+[m[32m[1975416:7][m
[32m+[m[32m# 金錢[m
[32m+[m[32mGold<>[m
[32m+[m
[32m+[m[32m[1975424:15][m
[32m+[m[32m# %s %s %d x %d[m
[32m+[m[32m%s %s %d x %d<>[m
[32m+[m
[32m+[m[32m[1975440:7][m
[32m+[m[32m# 魔石[m
[32m+[m[32mRune<>[m
[32m+[m
[32m+[m[32m[1975448:11][m
[32m+[m[32m# %s %s x %d[m
[32m+[m[32m%s %s x %d<>[m
[32m+[m
[32m+[m[32m[1975460:7][m
[32m+[m[32m# 取得[m
[32m+[m[32mObtain<>[m
[32m+[m
[32m+[m[32m[1977280:7][m
[32m+[m[32m# %s:%s[m
[32m+[m[32m%s: %s<>[m
[32m+[m
[32m+[m[32m[1977288:11][m
[32m+[m[32m# 場景名稱[m
[32m+[m[32mScene<>[m
[32m+[m
[32m+[m[32m[1978144:27][m
[32m+[m[32m# 請輸入所要購買物品的數量[m
[32m+[m[32mEnter quantity to buy<>[m
[32m+[m
[32m+[m[32m[1978172:30][m
[32m+[m[32m# 請輸入所要購買%s的數量[m
[32m+[m[32mEnter quantity of %s<>[m
[32m+[m
[32m+[m[32m[1978208:27][m
[32m+[m[32m# 請輸入所要販賣物品的數量[m
[32m+[m[32mEnter quantity to sell<>[m
[32m+[m
[32m+[m[32m[1978236:23][m
[32m+[m[32m# 請輸入所要販賣%s的數量[m
[32m+[m[32mEnter quantity of %s<>[m
[32m+[m
[32m+[m[32m[2387072:35][m
[32m+[m[32m# A[m
[32m+[m[32mA:<>[m
[32m+[m
[32m+[m[32m[2387108:35][m
[32m+[m[32m# :訊息、信號、智慧。[m
[32m+[m[32mMessage/Signal/Wisdom<>[m
[32m+[m
[32m+[m[32m[2387144:35][m
[32m+[m[32m# B[m
[32m+[m[32mB:<>[m
[32m+[m
[32m+[m[32m[2387180:35][m
[32m+[m[32m# :土石、誕生、成長、重生。[m
[32m+[m[32mEarth/Growth/Birth<>[m
[32m+[m
[32m+[m[32m[2387216:35][m
[32m+[m[32m# D[m
[32m+[m[32mD:<>[m
[32m+[m
[32m+[m[32m[2387252:35][m
[32m+[m[32m# :突破、黎明、超越。[m
[32m+[m[32mDiscover/Dawn/Surpass<>[m
[32m+[m
[32m+[m[32m[2387288:35][m
[32m+[m[32m# E[m
[32m+[m[32mE:<>[m
[32m+[m
[32m+[m[32m[2387324:35][m
[32m+[m[32m# :移動、進步、轉變。[m
[32m+[m[32mMove/Progress/Change<>[m
[32m+[m
[32m+[m[32m[2387360:35][m
[32m+[m[32m# F[m
[32m+[m[32mF:<>[m
[32m+[m
[32m+[m[32m[2387396:35][m
[32m+[m[32m# :財富、獲得、所有物。[m
[32m+[m[32mWealth/Obtain/Belongings<>[m
[32m+[m
[32m+[m[32m[2387432:35][m
[32m+[m[32m# G[m
[32m+[m[32mG:<>[m
[32m+[m
[32m+[m[32m[2387468:35][m
[32m+[m[32m# :夥伴、贈與、自由。[m
[32m+[m[32mPartner/Donate/Freedom<>[m
[32m+[m
[32m+[m[32m[2387504:35][m
[32m+[m[32m# H[m
[32m+[m[32mH:<>[m
[32m+[m
[32m+[m[32m[2387540:35][m
[32m+[m[32m# :氣體、狂嵐、地震、豪雨。[m
[32m+[m[32mGas/Madness/Quake/Storm<>[m
[32m+[m
[32m+[m[32m[2387576:35][m
[32m+[m[32m# I[m
[32m+[m[32mI:<>[m
[32m+[m
[32m+[m[32m[2387612:35][m
[32m+[m[32m# :冰凍、靜止、延遲、犧牲。[m
[32m+[m[32mFreeze/Stop/Slow/Sacrifice<>[m
[32m+[m
[32m+[m[32m[2387648:35][m
[32m+[m[32m# J[m
[32m+[m[32mJ:<>[m
[32m+[m
[32m+[m[32m[2387684:35][m
[32m+[m[32m# :收穫、結果、時間。[m
[32m+[m[32mHarvest/Result/Time<>[m
[32m+[m
[32m+[m[32m[2387720:35][m
[32m+[m[32m# K[m
[32m+[m[32mK:<>[m
[32m+[m
[32m+[m[32m[2387756:35][m
[32m+[m[32m# :火焰、起始、開放、希望。[m
[32m+[m[32mFlame/Begin/Open/Hope<>[m
[32m+[m
[32m+[m[32m[2387792:35][m
[32m+[m[32m# L[m
[32m+[m[32mL:<>[m
[32m+[m
[32m+[m[32m[2387828:35][m
[32m+[m[32m# :液體、流動、引導、不穩。[m
[32m+[m[32mLiquid/Flow/Guide/Wobble<>[m
[32m+[m
[32m+[m[32m[2387864:35][m
[32m+[m[32m# M[m
[32m+[m[32mM:<>[m
[32m+[m
[32m+[m[32m[2387900:35][m
[32m+[m[32m# :自我、人道、謙虛。[m
[32m+[m[32mEgo/Humanity/Modesty<>[m
[32m+[m
[32m+[m[32m[2387936:35][m
[32m+[m[32m# N[m
[32m+[m[32mN:<>[m
[32m+[m
[32m+[m[32m[2387972:35][m
[32m+[m[32m# :黑暗、束縛、痛苦、停滯。[m
[32m+[m[32mDark/Bind/Pain/Stagnate<>[m
[32m+[m
[32m+[m[32m[2388008:35][m
[32m+[m[32m# O[m
[32m+[m[32mO:<>[m
[32m+[m
[32m+[m[32m[2388044:35][m
[32m+[m[32m# :分離、退後、利益。[m
[32m+[m[32mSeparate/Retreat/Benefit<>[m
[32m+[m
[32m+[m[32m[2388080:35][m
[32m+[m[32m# P[m
[32m+[m[32mP:<>[m
[32m+[m
[32m+[m[32m[2388116:35][m
[32m+[m[32m# :傳授、火鳳凰、奧祕。[m
[32m+[m[32mImpart/Phoenix/Mystery<>[m
[32m+[m
[32m+[m[32m[2388152:35][m
[32m+[m[32m# R[m
[32m+[m[32mR:<>[m
[32m+[m
[32m+[m[32m[2388188:35][m
[32m+[m[32m# :旅行、聯繫、融合、溝通。[m
[32m+[m[32mTravel/Connect/Fuse/Trade<>[m
[32m+[m
[32m+[m[32m[2388224:35][m
[32m+[m[32m# S[m
[32m+[m[32mS:<>[m
[32m+[m
[32m+[m[32m[2388260:35][m
[32m+[m[32m# :光明、生命力、太陽、能量。[m
[32m+[m[32mLight/Life/Sun/Energy<>[m
[32m+[m
[32m+[m[32m[2388296:35][m
[32m+[m[32m# T[m
[32m+[m[32mT:<>[m
[32m+[m
[32m+[m[32m[2388332:35][m
[32m+[m[32m# :戰士、持續、勇氣。[m
[32m+[m[32mBattle/Persevere/Courage<>[m
[32m+[m
[32m+[m[32m[2388368:35][m
[32m+[m[32m# U[m
[32m+[m[32mU:<>[m
[32m+[m
[32m+[m[32m[2388404:35][m
[32m+[m[32m# :力量、輪迴、結束。[m
[32m+[m[32mPower/Revive/Finality<>[m
[32m+[m
[32m+[m[32m[2388440:35][m
[32m+[m[32m# W[m
[32m+[m[32mW:<>[m
[32m+[m
[32m+[m[32m[2388476:35][m
[32m+[m[32m# :喜悅、洞察、復舊。[m
[32m+[m[32mJoy/Insight/Nostalgia<>[m
[32m+[m
[32m+[m[32m[2388512:35][m
[32m+[m[32m# Y[m
[32m+[m[32mY:<>[m
[32m+[m
[32m+[m[32m[2388548:35][m
[32m+[m[32m# :防衛、迴避、死亡。[m
[32m+[m[32mGuard/Avoid/Die<>[m
[32m+[m
[32m+[m[32m[2388584:35][m
[32m+[m[32m# Z[m
[32m+[m[32mZ:<>[m
[32m+[m
[32m+[m[32m[2388620:35][m
[32m+[m[32m# :保護、耐力、隱蔽。[m
[32m+[m[32mProtect/Stamina/Conceal<>[m
[32m+[m
[32m+[m[32m[2388656:35][m
[32m+[m[32m# Ng[m
[32m+[m[32mNg:<>[m
[32m+[m
[32m+[m[32m[2388692:35][m
[32m+[m[32m# :富饒、神祇、創造、召喚。[m
[32m+[m[32mBounty/God/Create/Summon<>[m
[32m+[m
[32m+[m[32m[2388728:35][m
[32m+[m[32m# Th[m
[32m+[m[32mTh:<>[m
[32m+[m
[32m+[m[32m[2388764:35][m
[32m+[m[32m# :閃電、門戶、巨大、雷神。[m
[32m+[m[32mShock/Portal/Huge/Thor<>[m
[32m+[m
[32m+[m[32m[2388800:35][m
[32m+[m[32m# Ul[m
[32m+[m[32mUl:<>[m
[32m+[m
[32m+[m[32m[2388836:35][m
[32m+[m[32m# :究極、潛能、未知。[m
[32m+[m[32mUltimate/Potential/Mystery<>[m
[32m+[m
[1mdiff --git a/working/en/ha1/video/mpg05.ass b/working/en/ha1/video/mpg05.ass[m
[1mindex 6de7831..eb572be 100644[m
[1m--- a/working/en/ha1/video/mpg05.ass[m
[1m+++ b/working/en/ha1/video/mpg05.ass[m
[36m@@ -40,7 +40,7 @@[m [mDialogue: 0,0:00:49.70,0:00:52.10,Default,,0000,0000,0000,,{\fad(200,200)}A new[m
Dialogue: 0,0:00:52.80,0:00:56.00,Default,,0000,0000,0000,,{\fad(200,200)}And it quickly engulfed Eastern Scandinavia and its vassals.[m
Dialogue: 0,0:00:57.70,0:01:00.10,Default,,0000,0000,0000,,{\fad(200,200)}Hulen was called upon by the royal family…[m
Dialogue: 0,0:01:02.20,0:01:04.70,Default,,0000,0000,0000,,{\fad(200,200)}And soon departed for the crusade.[m
[31m-Dialogue: 0,0:01:07.40,0:01:11.20,Default,,0000,0000,0000,,{\fad(200,200)}And so, Edda and Liv lost their best listener.[m
[32m+[m[32mDialogue: 0,0:01:07.40,0:01:11.20,Default,,0000,0000,0000,,{\fad(200,200)}And so, Edda and Liv lost their best friend.[m
Dialogue: 0,0:01:12.00,0:01:15.10,Default,,0000,0000,0000,,{\fad(200,200)}Was it freedom?[m
Dialogue: 0,0:01:15.60,0:01:18.50,Default,,0000,0000,0000,,{\fad(200,200)}Or perhaps just a time to say goodbye.[m
Dialogue: 0,0:01:19.30,0:01:22.50,Default,,0000,0000,0000,,{\fad(200,200)}When Edda turned seventeen…[m