Está en la página 1de 242

ChangeLog (UTF-8, ff=dos)

Visual Novel Reader


Since 6/18/2011

4/3/2016 SUN
Fixed a severe msvc dll bug.
I linked the dlls against debug libraries by mistake ...

3/27/2016 SUN
[TAHScript](English, @riz)
* Update TAH script for LEC.
The scripts are from @errzotl sensei, and you can say thanks to him/her at
TAHscript@outlook.com.

[Game Engine]
* Update Escude engine to support .
Thanks for @mireado sama's investigation!

2/19/2016 FRI
* Fix google translation support, which was broke because of API change.
Translation alignment for Google is broken because of the change.
Thanks for @mireado sama's report!

1/24/2016 SUN
[Game Engine]
* Handle text tags in QLiE engine as requested by @mireado.

1/22/2016 FRI
[TAHScript](English, @riz)
* Update TAH script for LEC and Atlas.
The scripts are from @errzotl sensei, and you can say thanks to him/her at
TAHscript@outlook.com.

1/9/2016 SAT
[Game Engine]
* Update WillPlus engine to support .
Scenario/Name/History/Choice can be translated.
User-shared subtitles tested working.

http://i.imgur.com/nt8gQmr.png
http://i.imgur.com/NV2AE3V.png

1/1/2016 FRI
[Game Engine]
* Add translation support for .
Embed translation also works.

en: http://i.imgur.com/MMl0SHn.png
zh: http://i.imgur.com/AThGjDW.png
ko: http://i.imgur.com/kFpfx2W.png

Note that the BGI games have ruby text like <r>...</r> that will downgrade
translation quality.
If you are using Embed Translation, then nothing needed to be done as it will
take care of ruby by default.
Otherwise, if you are using ITH engine, just make sure the ruby elimination
rules in Shared Dictionary are associated with your version of the game.

* Add translation support for IZUMO4.


Embed translation is broken for this game.

IZUMO4

I suspect Studio ego is using a different (older) game engine than Debonosu.
So, I will not spend time fixing embed translation for this game until the next
Debonosu game releases.

12/27/2015 SUN
VNR's servers are migrated from Japan to US.
Older versions of VNRs might be broken because of the migration after a month.

VNR US
VNR

12/7/2015 Mon
[i18n](Korean, @mireado)
* Update VNR's UI translation in Korean made by @mireado sensei.

11/27/2015 FRI
[Game Engine]
* Do not extract English letters for mono games.

11/22/2015 SUN
[Network]
* Changed to access VNR's servers by domain names instead of by IP.

Going to migrate VNR's servers from Japan to US some time next month or next
year, where the servers are cheaper while having much more updated technologies.
VNR's machine translation servers have already been deployed in the bay area,
which worked pretty well.
Changing to access domain names would make the server-side migration
transparent to the end users.

VNR used to access certain websites by IPs to bypass CCP's Internet censorship
for foreign hosts and DNS.
For example, whenever there is a big event in China, foreign domains tend to
become unstable or temporarily blocked.
But this made changing VNR server's IP address a pain in ass that all older
versions of VNR would be broken.

[TTS]
* Fixed the broken Voiceroid+ TTS caused by the online API changes.
Also add support of male voice actor (http://www.ah-
soft.com/voiceroid/kou/).

Voiceroid+ TTS

@ sama

[Game Engine]
* Add support for NECRO.
Embed translation also works but only supports English translation.
But font is too large and English is so much verbose that the translation could
go out of screen.

http://i.imgur.com/FFqgnyF.png

NECRO

11/16/2015 MON
[Machine Translation]
* Changed to only support translation of Chinese/English/Korean from Japanese.
Due to limited server-side resources, support for other languages are currently
disabled.

11/15/2015 SUN
[Bugfix]
* Fixed a multi-threading bug that could crash Shared Dictionary.

[Removed Features]
* Remove regular expression tester.
* Remove voice recognition.
* Remove BBCode tester.
* Remove YouTube downloader.
* Remove game finder.

[Machine Translation]
* Add Thai language support.

11/8/2015 SUN
[TAHScript](English, @riz)
* Update TAH script for LEC and Atlas.
The scripts are from @errzotl sensei, and you can say thanks to him/her at
TAHscript@outlook.com.

[Machine Translation]
* Resume the machine translation that is trained from user-shared subtitles.
It currently only supports en/zh/ko/vi/fr/es/ru, which has relative more
subtitles in the database.
You can also tested it here: http://tranzz.com/translate
Due to copyright concerns, the translation is trained only from game subtitles
instead of commercial dictionaries.
The current translation quality is worse than before as the result.

My eventual goal is to allow everyone to create his own translators where all
settings/translation rules/corpus can be fully adjusted and managed.
I hope combing our community's efforts, we can create our best domain-specific
machine translators.

Regarding the future of VNR, I might not have lots of time to work on it like
before.
Instead of adding more features, I might focus on making existing features more
stable and removing features that are seldom used.
And here are the directions that I am planning to go in case you are interested:
1. Remove features that are not directly related to reading VNs (youtube,
chatting, game information, etc.)
2. Split non-VN translation support like OCR/TextReader out into separate
applications.
3. Move subtitles/shared dictionary management to the cloud. Loading translation
rules only for the games that are being played. This will help limit memory usage
of the shared dictionary that becomes larger and larger.
4. Improve translation quality while minimizing local resource usage.

9/25/2015 FRI
[JBeijing](Chinese, @najizhimo)
* @najizhimo J

9/20/2015 SUN
[Ehnd](Korean, @mireado)
* Update Ehnd dictionary from @mireado sensei.
It can also be downloaded independently if you don't want to use VNR:
http://sakuradite.com/topic/898

9/18/2015 FRI
[JBeijing](Chinese, @najizhimo)
* @najizhimo J

9/12/2015 SAT
[JBeijing](Chinese, @najizhimo)
* @najizhimo J

9/8/2015 TUE
[JBeijing](Chinese, @najizhimo)
* @najizhimo J

9/5/2015 SAT
[Shared Dictionary]
* Fixed a bug that might crash the machine translator while applying rules.

8/30/2015 SUN
[Embed Translation]
* Add support for CatSystem2 engine.
Tested with , , and
.
Scenario/name/choice/history/message texts can be translated.

en: http://i.imgur.com/t5ip0az.png
ko: http://i.imgur.com/LsHOAaj.png
vi: http://i.imgur.com/DjbVhrj.png
zh: http://i.imgur.com/gSrUdat.png

CatSystem2

8/29/2015 SAT
[Embed Translation]
* Extend Pensil engine to support translating choices and translating games with
2RM adventure engine .
2RM

* Add support for minori games.


Tested with 12 and .
It can also translate invisible voiced scenario texts that are not painted on
the screen, and hence recommended for text extraction.

en: http://i.imgur.com/OHRjvpy.png
ko: http://i.imgur.com/hro9WJw.png
vi: http://i.imgur.com/n4TB6p0.png
zh: http://i.imgur.com/jZKc2Tt.png

minori

8/28/2015 FRI
[Shared Dictionary]
* Add a Priority property for all rules that will affect the order to apply these
rules.
If you seldom use Shared Dictionary and don't know what Priority is, it is OK
to just leave it empty.

When determine the order to apply translation rules, the number of characters
in pattern is one of the major
factors that will affect the order.
Usually, the longer rules will be applied before shorter rules by default.
Now, the new Priority property will override the default pattern size, and the
larger the Priority value,
the earlier the rule might be applied.

For example, given the following three rules:


#1. =
#2. ? = , regex = true
#3. =

By default, the three rules will be applied in order of #2, #1, #3, because #2
has the longest pattern.
As the result, might be broken because of ?.

Now, if I set the priority of #2 to 1.5, then the translation order will
become: #1, #2, #3.
This is because the default priority of #1 is "".length = 2, and that of #3
is "".length = 1, and
user-specified 1.5 for rule #2 is smaller than 3 and larger than 1.

If you want to change the priority of a rule, personally I recommend to make it


around the estimated number of
characters in the Pattern.
For example, because "?" can match either "" (2 chars) or "" (1 char),
I just chose "1.5" as its priority.
But you don't have to obey this convention. You can set priority to any number
if necessary.
Rules with very large priority tend to be applied at first, and those with
small negative priority tends to be applied at last.
For example, I can set priority of #2 to -1, and then the translation order
will become #1, #3, #2.

If you want to delete a priority, you can just set it to zero.

Note that priority is not the only factor that affects transformation order,
which is determined in a complicated way.
Even if you assign a very large/small priority to a rule, it is still not
guaranteed to be applied before/after all other rules.




VNR

8/23/2015 SUN
[Game Engine]
* Add support for games from .
Tested and !2.

[TAHScript](English, @riz)
* Update TAH script for LEC and Atlas.
The scripts are from @errzotl sensei, and you can say thanks to him/her at
TAHscript@outlook.com.

8/22/2015 SAT
[Embed Translation]
* Add support for ge-sen18/a-unicorn games.
Tested 4, 6, and . All texts can be translated.
However, there are certain in-game texts that are not rendered using standard
GDI fonts,
where all non-Japanese and non-Chinese characters (English, Korean, ...) might
not be properly displayed.

en: http://i.imgur.com/bGKujRG.png
http://i.imgur.com/M6xriQh.png
http://i.imgur.com/wemChRV.png
http://i.imgur.com/uHdc6bT.png
ko: http://i.imgur.com/7CzC3qo.png
http://i.imgur.com/sELiU5M.png
http://i.imgur.com/Mhh3drZ.png
http://i.imgur.com/EW58YcV.png
vi: http://i.imgur.com/2zxE706.png
http://i.imgur.com/149p2bm.png
http://i.imgur.com/hTLiQmf.png
http://i.imgur.com/hbzlQgJ.png
zh: http://i.imgur.com/Jb6I7Dn.png
http://i.imgur.com/o9HQLbX.png
http://i.imgur.com/bfEt47H.png
http://i.imgur.com/mlwmxa1.png

gesen18

8/21/2015 FRI
[Text-to-speech]
* Update the support of Google TTS, which was broken since the changes of Google
APIs.
Google

8/19/2015 WED
[Embed Translation]
* Add support for Waffle games.
Tested , , and 2 if.
Screenshots are as follows:

en: http://i.imgur.com/hQr9yDK.png
ko: http://i.imgur.com/wjejBXj.png
zh: http://i.imgur.com/kuAzN0T.png

Waffle
8/16/2015 SUN
[Embed Translation]
* Translate in-game texts for .

en: http://i.imgur.com/iqHjV7M.png
ko: http://i.imgur.com/0e2oHyL.png
zh: http://i.imgur.com/BtQoAhb.png

* Add support for old GXP engine.


Test working for and II .
GXP

* Add tentative support for Rance03.


It only works for English.
All texts were surposed to support translation. However, the logic to determine
whether it is safe to translate
without crashing the games and how to distinguish scenario/name/other texts is
currently inaccurate.
en: http://i.imgur.com/l1pwGWj.png
http://i.imgur.com/52KJbKC.png
http://i.imgur.com/FBEX15c.png

8/15/2015 SAT
[Embed Translation]
* Add support for GXP2 engine.
Test working for and .
Scenario/name/history/choices/popup messages can be translated.
It might not support old GXP games.

en: http://i.imgur.com/MQPy95V.png
ko: http://i.imgur.com/dS6xvav.png
zh: http://i.imgur.com/LK0vtCr.png

GXP2

8/12/2015 WED
[Embed Translation]
* You can disable embedding translation for a specific game by pressing "Edit" on
the bottom of the SpringBoard.
SpringBoard

[Game Engine]
* Add generic GDI+ hook to GdipAddPathString.
Test working for all Rejet games. Game engine is not needed for Rejet games any
more.

8/11/2015 TUE
[Game Engine]
* Update System43 engine to support 03.
btw., embed translation support is broken for the new System43 engine.
03

8/10/2015 MON
[Shared Dictionary]
* Make sure the processing of Shared Dictionary is thread-safe to avoid possible
crash caused by thread contention.

8/9/2015 SUN
[Embed Translation]
* Add support for the latest Malie3 engine.
Tested working for , , , Vermilion,
and BRAVA!!
It might not work for old Malie games though.
All texts can be translated. Some screenshots are as follows:

en: http://i.imgur.com/tATc6SL.png
http://i.imgur.com/6TWdtSx.png -- with ruby for Shinigami (God of Death) in
the Shared Dictionary
ko: http://i.imgur.com/iVCwhQR.png
http://i.imgur.com/HVaYOhQ.png
zh: http://i.imgur.com/Pt6efBE.png
http://i.imgur.com/v1LjadG.png
http://i.imgur.com/gvBeeYC.png

Malie

8/7/2015 FRI
[Embed Translation]
* Add support for LC-ScriptEngine.
Tested working for , , and .
Some screenshots are as follows:

ko: http://i.imgur.com/wfscBjo.png
http://i.imgur.com/uuFdV99.png
zh: http://i.imgur.com/jTGaNbh.png
en: http://i.imgur.com/OKwkjGY.png

LC-ScriptEngine

8/6/2015 THU
[TAHScript](English, @riz)
* Update TAH script for LEC.
The scripts are from @errzotl sensei, and you can say thanks to him/her at
TAHscript@outlook.com.

[Game Information]
* Display the number of users that have played the game (unique IP visitors) in
the game information page.

8/4/2015 TUE
[Embed Translation]
* Add support for Taskforce2 engine.
Test working for and .
Screenshots are as follows.

en: http://i.imgur.com/PfQnckO.png
ko: http://i.imgur.com/LHghKA8.png
zh: http://i.imgur.com/3DucwGh.png

Taskforce2

* Add support for LunaSoft games.


It only works for English. All texts can be translated.
en: http://i.imgur.com/N8gR9mC.png
http://i.imgur.com/dFV7laB.png
http://i.imgur.com/TBTPsaV.png

8/3/2015 Mon
[i18n](Korean, @mireado)
* Update VNR's UI translation in Korean made by @mireado sensei.

8/2/2015 SUN
[i18n]
* Add translation languages of Filipino (Tagalog), Slovenian, Hebrew, Bulgarian,
Belarusian, Estonian, Latvian and Lithuanian.

8/1/2015 SAT
[Internet]
* Fixed the broken proxy to ESG.

[Embed Translation]
* Add support for Pensil engine.
Some screenshots are as follows.
Tested working for , , and .
Scenario/Name/Choice/History can be translated.

ko: http://i.imgur.com/7mvXy77.png
http://i.imgur.com/tzmoi1u.png
zh: http://i.imgur.com/RFKSyEn.png
http://i.imgur.com/R8eYb5Z.png

Pensil

* Update support for ShinaRio v2.5 to properly recognize Name thread.


Some screenshots for are as follows.

en: http://i.imgur.com/jy3cSQW.png
ko: http://i.imgur.com/6tEYRYu.png
zh: http://i.imgur.com/ozwf2wG.png

* Add a button to Preferences/Embed to restore default settings.


/

7/31/2015 FRI
[Embed Translation](CM3D)
* Fix the issue that embedding Other text might cause CM3D 2 to be black out.
Thanks for @mireado sama's report!
CM3D 2

* New lines are properly handled for CM3D 2.


Word wrapping also works for embedded scenario text near line boundaries.

[Game Engine]
* Update Abel engine to support .

7/30/2015 THU
[Embed Translation]
* Add support for NEXTON games.
Name/scenario/choice/history can be translated.
It does not have the issue of floating signatures and hence recommended also
for text extraction.
NEXTON

7/29/2015 WED
[Game Information]
* Fixed the broken youtube download module that was caused by the deprecation of
youtube v2 api.

[Embed Translation](CM3D)
* Fix the issue that embedding Other text might crash CM3D 2.
Thanks for @mireado sama's report!
CM3D 2

[Game Engine](CM3D)
* Update the split logic to make it easier to select text threads from CM3D 2.
Thanks for @xemnaseternal sama's report!

7/28/2015 TUE
[Embed Translation]
* Add support for FAVORITE games.
Tested working for and .
It can properly handle ruby in text, and hence recommended over getting text
from ITH, which will be messed up by ruby.

http://i.imgur.com/XXfG7cD.png

FAVORITE
FAVORITE ITH Ruby

7/27/2015 MON
[Embed Translation]
* Add support for Mono games.
Currently, only tested working for Custom Maid 2, where most texts can be
translated.
Note that game text speed must be set to maximum.

While translation in all languages can be embedded, there is a big known issue
that long translation might be truncated.
As the result, only language that is much more concise than Japanese (such as
Chinese) can be properly displayed.
Languages that are much more verbose than Japanese (such as English) will
usually be truncated.
You might have to turn off embedded translation for Scenario text if being
truncated.

ko: http://i.imgur.com/ri5Hnjo.png -- As you can see that the scenario


translation is truncated
http://i.imgur.com/C3434Gq.png
http://i.imgur.com/ZdgYs5Z.png -- Maximize Text Speed here in the Message
panel

zh: http://i.imgur.com/sk7Obtg.png
http://i.imgur.com/Fdu6vuA.png
http://i.imgur.com/iujRDs5.png -- Message

http://i.imgur.com/ChJwS5K.png
http://i.imgur.com/G6u7XuZ.png
Mono
Custom Maid 2

* Add support for .


It suffers from the same problem as Custom Maid that long translation might be
truncated.
And the game text speed must be set to maximum.

ko: http://i.imgur.com/2jXY6UE.png
http://i.imgur.com/C8GYqR4.png
http://i.imgur.com/VNY145m.png

zh: http://i.imgur.com/I9IrCSF.png
http://i.imgur.com/EHnhROb.png
http://i.imgur.com/kQ1MrEp.png

7/25/2015 SAT
[Embed Translation]
* Add support for Lucifen engine.
Test working for and . Screenshots are as
follows.

ko: http://imgur.com/dJpfaIq,02M3ypB,tVyQokf,aXyP3IX
zh: http://i.imgur.com/kqSp943.png

Lucifen

* Fix the issue that game window might blackout when Window text translation is
enabled.
Thanks for @ and @mireado's report!

* Add support for old SystemAoi games. Tested working for .


SystemAoi

[Game Engine]
* Add support for old SystemAoi games. Tested working for .
SystemAoi

* Disable Mono Unity hook for CM3D, which might slown down the game.
Thanks for @xemnaseternal sama's report!

7/24/2015 FRI
[Game Engine]
* Add support for Escu:de games, which does not require changing game font to "MS
Gothic".
Escu:de

[Embed Translation]
* Add support for Esc:ude games. Screenshots are as follows.
Test working for Re;Lord, , and .
If the translation's language is not English, please change the game's default
font to "MS Gothic" in Configure.exe.

ko: http://imgur.com/eoujHm7,sz5TemN
zh: http://imgur.com/ncrMb0R,VvwBYVA
Esc:ude
configure.exe MS Gothic

7/21/2015 TUE
[Embed Translation]
* Embedded translation won't get truncated for "LORD of VERMILION ARENA:LoVA" at
http://lova.jp. A screenshot is as follows.

en: http://i.imgur.com/ItwyDrI.png
zh: http://i.imgur.com/834xGe6.png

"LORD of VERMILION ARENA:LoVA" (http://lova.jp)

* Properly handle ruby for AMUSE CRAFT games.


Thanks for @mireado sama's report!

7/20/2015 MON
[Embed Translation]
* Add support to translate "LORD of VERMILION ARENA:LoVA" at http://lova.jp.
Screenshots are below.
Almost all texts can be translated. But there are some known issues:
+ Due to technical difficulties, there is no way to create a ITH engine for
this game.
If you don't want to embed translation, you can just set
Scenario/Name/Other/Window to Disable in Preferences/Embed.
+ Game font cannot be changed.
- If the translation language is English, it should work fine.
- If the translation language is Chinese
In Preferences/Embed, please turn on the option to use Traditional Chinese
and Japanese kanji as preferred Chinese variants instead of Simplified Chinese.
- For any languages other than English/Chinese
I don't know how to make it working. You might have to looking for ways to
change the game font to that support the character set of your language.

en: http://i.imgur.com/vMpdbV6.png
http://i.imgur.com/2yDfgew.png
http://i.imgur.com/fs3YZHm.png
http://i.imgur.com/Yyy9yIi.png

zh: http://i.imgur.com/i7MPagT.png
http://i.imgur.com/J76tYBv.png
http://i.imgur.com/Enya1CZ.png
http://i.imgur.com/yQ0qQPF.png

LORD of VERMILION ARENA:LoVA (http://lova.jp).



+ ITH
+
/

[Text Settings]
* There is always a Null thread in Text Settings.
If you want to disable text extraction, just set scenario thread to Null.
Null

7/18/2015 SAT
[Dictionary](Korean)
* Add support to lookup hanja dictionary for Japanese kanji.
The dictionary can be downloaded for free in Preferences/Downloads, and enabled
in Preferences/Dictionaries.

* Add an option to display hanja pronunciation for kanji in


Preferences/Dictionaries.
When enabled, for example, click a phrase containing "" and VNR will popup
the following:
{,incense}[{,grain}, {,sun}]

[Embed Translation]
* Add support for AMUSE CRAFT games.
It currently only works for English. Scenario/Name/Choice/Backlog can be
translated.
Tested working for and ManguSta .

[Game Engine]
* Update AMUSE CRAFT engine so that text threads won't be floating and split.
If you are playing AMUSE CRAFT games, please re-adjust Text Settings.

7/17/2015 FRI
[Embed Translation]
* Add support for old ShinaRio games (ver 2.40 ~ 2.47).
Tested working for Vestige and .

7/16/2015 THU
[Embed Translation]
* Update BGI engine to support handling ruby.

7/12/2015 SUN
[Yomigana](Vietnamese)
* For Vietnamese translation of Japanese names, VNR can display the Phin m Hn-
Vit pronunciation above Yomigana as ruby.
This behavior is disabled by default, and can be enabled in Preferences/Shared
Dictionary.
For example, when enabled, given " = ", VNR will display "Lin Hoa"
above "Renfa".

[UI]
* The growl notification on the Desktop top-right corner can be disabled in
Preferences/UI.
/

[Game Engine]
* The code bases for Windows XP and non-Windows XP are merged.
vnrhookxp.dll is removed, and will no longer be recognized as virus.
In the old version of VNR, the translated games were much more likely to crash
on WinXP comparing to non-WinXP.
And PPSSPP game engines did not work on Windows XP.
Now, there should be no much difference between WinXP and non-XP. Game engines
on Windows XP should be as stable as non-XP.
And translation support for PPSSPP games also works on Windows XP now.

* Fixed the issue that the game might crash on Wine when VNR is closed.

* Properly handle UNC path when the game is launched from a remote network drive.

[Embed Translation]
* Fix a bug that name translation might not work when enabled.
Thanks for @mireado sama's report!
bug

* Automatically-generated ruby for yomigana also works for certain game engines
that supports Ruby.

http://i.imgur.com/L9u4JUe.png

Ruby
"Taiyo" "="

btw., if you can read Hiragana, it is always recommended to use Yomigana


instead of Name rules to define translation for Japanese names
in the Shared Dictionary.
Yomigana is shared across languages and can really help reduce duplicates.
And it usually has more information than direct language-specific name
translation, and hence might enable more features in the future.

btw.,


Ruby

7/11/2015 SAT
[Embed Translation]
* Add support for ShinaRio (ver >= 2.48) games.
Tested working for 3rdEye games.

ko: http://i.imgur.com/4CQtrye.png
zh: http://i.imgur.com/tVe2gaO.png

ShinaRio

[Yomigana]
* For Korean translation of Japanese names, VNR can display the pronunciation of
Hanja above Yomigana as ruby.
This behavior is enabled by default, and can be disabled in Preferences/Shared
Dictionary.
For example:
- Given = , VNR will display above as is and
individual is usually .
- Given = that is also a Korean phrase, VNR will display above
as is in Korean,
although can also be when used individually.
This only applies to the Yomigana definition of Japanese names that consist of
Hanja.
If the automatically-generated ruby is inappropriate, you can manually define a
ruby to override the default one.

* VNR

= VNR "" Yuuma

/

(Horie Yui)

* Fix a bug that displaying ruby in the translation might sometimes break layout.
Ruby

7/8/2015 WED
[i18n](Korean, @mireado)
* Update VNR's UI translation in Korean made by @mireado sensei.

7/7/2015 TUE
[Embed Translation]
* Add support for old QLiE games.

http://sakuradite.com/upload/image/899.jpg

QLiE1

7/5/2015 SUN
[Embed Translation]
* Add support for QLiE2 games.
Tested working for recent Navel games.

http://i.imgur.com/4FXZxek.png

QLiE2

7/4/2015 SAT
[Embed Translation]
* Add support for WillPlus games.
Tested working with Re:BIRTHDAY SONG and .
Scenario/Name/Choice texts can be translated.
It also supports embedding ruby definition in the Shared Dictionary.
VNR will also fix the game encoding issue so that text can display properly
without additional locale switcher on Windows with Japanese locale.

ko: http://i.imgur.com/i0nzBZt.png
zh: http://i.imgur.com/3ycnXxN.png

WillPlus

[Game Engine]
* Update WillPlus engine to support extraction of character names.

7/3/2015 FRI
[Shared Dictionary]
* Warm up Shared Dictionary after a game is launched.

[Embed Translation]
* The transcoding option for Windows translation is slightly changed.
If your translation's language is English, transcoding is not needed.
If your translation's language is Korean, Chinese, or any language that has
non-ASCII characters
and the Windows text is not properly displayed, you can try enabling the
transcoding option.

VNR by default won't modify UTF-16 text.


When transcoding is enabled, VNR will instead first encode UTF-16 text using
the system encoding,
and then decode it using Shift-JIS (i.e. "transcode" wide characters from
system encoding to Japanese).
It might help fix the encoding issue of windows text.

The transcoding option for scenario/name/other text is removed as it could


crash certain games.
Please use locale switcher such as Locale Emulator instead of replying on
embedding translation to fix non-Windows text encoding.

* Add an option in Preferences to change the default machine translator for


scenario text.

7/2/2015 THU
[Embed Translation]
* Make sure that game font for SiglusEngine games can always be changed.
SiglusEngine

7/1/2015 WED
[Embed Translation]
* Add support for CMVS engine.
Tested working with , , and .

http://i.imgur.com/koWX7V9.png

CMVS

6/30/2015 TUE
[Embed Translation]
* Fixed a bug that might crash Angel Beats.
Angel Beats bug

* Add support for Cotopha engine.


Tested working with and

http://i.imgur.com/kpktJ5U.png
http://i.imgur.com/lUoh6Fa.png

Cotopha

[Game Engine]
* Update Cotopha engine to support recent games.

6/29/2015 MON
[Embed Translation]
* VNR will embed ruby defined in the Shared Dictionary into the game if possible.
This only works for game engines that support ruby, currently only Leaf and
Debonosu games.
VNR Ruby

* Update Debonosu engine to support translating all texts in .


[Shared Dictionary]
* Add a property to each rule to specify whether the rule should be applied only
to translate window/name/scenario/other thread texts.
For example, if there are repetitions only in the name text thread.
Then we can create a game rule to eliminate repeats with context set to Name so
that it only applies to the name thread.

Another example: "" appearing in the Window menu is more common to mean
"Load" than "Road".
Now we can now create a "" = "load" definition and only applies it to
translate Window texts.

English machine translation tends to prepend "A" or "The" before the


translation of individual items.
But for Window texts, for example, it is more common to translate "" to
"Game" instead of "A game" or "The game".
Now we can create an output rule to delete leading "A" and "The" for window
text translation.

6/28/2015 SUN
[Shared Dictionary]
* Add a new ruby syntax for displaying translation above the translation.
For example, given the following definition in the Shared Dictionary:
- Type: Translation
- Pattern:
- Translation: Yuki
- Ruby: Snow
Then, VNR will translate to Yuki, while displaying Snow above yuki.
This might be helpful when you want to translate a word both by pronunciation
and by meaning,
when you can define Translation = pronunciation and Ruby = its literal meaning.

Alternatively, the above definition is equivalent to the following rule:


- Type: Translation
- Pattern:
- Translation: [ruby=Snow]Yuki[/ruby]

This syntax might be helpful if you want to define multiple ruby in the same
rule. Here's another example:
- Type: Translation
- Pattern:
- Translation: [ruby=Snow]Yuki[/ruby] no [ruby=Flower]Hana[/ruby]

If you are familiar with HTML, you can expect [ruby=Snow]Yuki[/ruby] to be


transformed to <ruby><rt>Snow</rt><rb>Yuki</rb></ruby>,
(although it is not what is actually happening under the water. And it won't
work if you use <ruby> tag directly in translation.)

Ruby definition is only allowed when the definition type is Translation, Name,
Yomigana, Prefix, Suffix, or Output.

If you feel Ruby annoying, you can always disable displaying ruby definitions
in Preferences/ShareDictionary.

This feature is requested by @mireado sama and thanks for this suggestion!

Ruby Ruby


- :
- :
- :
- Ruby: Iris
VNR "Iris""" HTML <ruby>


- :
- :
- : [ruby=Iris][/ruby]

Ruby
Ruby/

6/26/2015 FRI
[Embed Translation]
* VNR will do word wrap to the inlined translation if the game engine supports
new lines
(currently Leaf and Circus) so that a word will not break at new lines for
languages having spaces.
For other engines, word wrap might only work if you manually enable and specify
the Maximum Text Width
in Preferences/Embed.

6/25/2015 THU
[TAHScript](English, @riz)
* Update TAH script for LEC.
The scripts are from @errzotl sensei, and you can say thanks to him/her at
TAHscript@outlook.com.

[Embed Translation]
* Fixed the issue that embedded Korean text might be retranslated for
SiglusEngine games.
Thanks for @mireado sama's report!

6/24/2015 WED
[Embed Translation]
* Restore the support to embed English translations for CIRCUS games.
Tested working with DC3PP and , where scenario/name/choice/backlog can
be translated.
It currently only supports English.
Here's a sample screenshot:
http://i.imgur.com/DS0hj4q.png

* Add support to embed English translations for Leaf games.


It currently only supports English.
Here's a sample screenshot:
http://i.imgur.com/gDXlgN3.png

* Text Settings will display if the game supported embed translation is for
English-only.
Currently, embed support for Circus, Leaf, and System43 games is for English
only.


LeafCircus System43

6/22/2015 MON
[Embed Translation]
* Update ARCGameEngine to support translating old Eushully game
.
Here are some screenshots:

http://i.imgur.com/eSUJaZT.png
http://i.imgur.com/4WwfSjW.png

Thanks for @Reality sama's report!

6/21/2015 SUN
[Embed Translation]
* Add support to translate games with Retouch engine.
Tested working with and .

http://i.imgur.com/KH5zpr8.png

Retouch

[Game Engine]
* Update Retouch engine to properly handle ruby texts that are missing in the
scenario thread.
If you are playing Retouch games, you will have to manually re-adjust Text
Settings.
Retouch Ruby thread
Retouch

6/20/2015 SAT
[Game Engine]
* Add an alternative engine for games from to extract character
name,
which might be important for the automatic TTS feature.

[Embed Translation]
* For games from , fix the inconsistent game locale code so that the
game can run
on non-Japanese Windows with Japanese locale.

I have an English version of Windows 7 that is switched to Japanese locale and


UI.
But to run Debonosu games, I still have to use Locale Emulator, etc. to launch
the game even on Japanese locale.
Now when embed translation is enabled on Japanese locale, Debonosu games will
run properly without locale emulation.

Windows Locale Emulator

* Update engine to translate most GDI+/Direct3D texts.


Here are some screenshots from :

- ko: http://imgur.com/KLlV5vL,NCLE4OE,PkXwiB9,uspuxpb
- zh: http://imgur.com/wm5GAtx,1nKZbEE,WhJuuKM

* Improve caching of Other thread translations to reduce possible slowdown caused


by embedding Other thread translations,
esp. for RPG games that might have a large number of Other thread texts.

6/19/2015 FRI
[Embed Translation]
* Add support to translate games from .
Test working for and .

http://i.imgur.com/oxLHPC2.png
http://i.imgur.com/mXugkp2.png

[Game Engine]
* Hook to GdipDrawString and GdipMeasureString functions for GDI+ games.
These functions are discovered in Debonosu games. But I think they might also
help other GDI+ games.

6/17/2015 WED
[Game Engine]
* Text extraction will be paused when either Control or Shift is pressed.
Control Shift

* Add game engine for Silky's new games after leaving Elf.
Comparing to GetGlyphOutlineA in old VNR, the new engine will not extract
garbage configuration texts
and does not have disordered name and scenario.

[Embed Translation]
* Add game engine for Silky's new games after leaving Elf.
Scenario/Name/Choice texts can be translated.
Test working with and .

http://i.imgur.com/CEnzaG8.jpg

Silky's Elf

6/16/2015 TUE
[Game Engine]
* Update SiglusEngine to extract text in without any garbage characters.
Be careful that there will be several SigusEngine3/4 text threads and only ONE
is correct.
Thanks for @mireado sama's report!

Although the game uses SiglusEngine, embed translation currently does not
support .
Going to fix that soon.

6/13/2015 SAT
[Embed Translation]
* Update WolfRPG engine to translate most texts.

http://i.imgur.com/4Ol75K9.png

WolfRPG

WolfRPG

Tahoma Tahoma
SimSun
- (font family = Tahoma, = ): http://i.imgur.com/JP8RN65.png
- (font family = SimSun, = ): http://i.imgur.com/C0GkkXF.png

[Shared Dictionary]
* The location of the offline data of the Shared Dictionary is moved to
Caches/Sync.

[Network]
* Improve the communication mechanism to reduce the failure when fetching large
amount of online data such as Share Dictionary and game database.

In the old version of VNR, VNR's server will query the database and render the
large response at runtime,
which would drain lots of resources, and might cause VNR's server to be less
responsive when busy.

Now, VNR's server will cache the data in Shared Dictionary and Game Database
every day (on 4:00am Japan Standard Time).
Then, VNR will first fetch the old cached static data, and then query
incremental changes in the database made within 1 day.
This will save lots of server resources because serving static data files cost
very low memory/CPU and does not require database access.
And even when the SQL database is busy, users are guaranteed to get the data
updated one day ago.

I am going to shutdown the online services for runtime queries of very large
amount of data of Shared Dictionary
and Game Database at the end of this month, after most users have updated VNR
at least to this version.
After that, I would expect VNR's server to have less busy time.
But the older versions of VNR will be broken and no longer able to update Game
Database and Shared Dictionary after this month.

Currently, large numbers of user-shared comments/subtitles are still rendered


at runtime, and downloading them could still fail when VNR's server is busy.
I am going to implement the similar caching mechanism to comments/subtitles
later to solve this problem.

VNR
VNR
VNR VNR

VNR

6/12/2015 FRI
[Game Engine]
* Add hooks to CharNextA/CharNextW for unknown game engines.

[Embed Translation]
* Fixed a bug that might hang WolfRPG games when Korean translation was embedded.

6/11/2015 THU
[Embed Translation]
* Add support for games developed with Wolf RPG.
Here are some screenshots from DRAGON SLAVE:

http://i.imgur.com/wKb7Ova.png
http://i.imgur.com/XcXtSYT.png
http://i.imgur.com/2yg4qLu.png
http://i.imgur.com/VjYOEPj.png

WolfRPG

6/9/2015 TUE
[Embed Translation]
* Add support for games developed with RPG VX ACE RTP v3.
Here are some screenshots:
()
http://i.imgur.com/g1rPMgA.png
http://i.imgur.com/VDxFrso.png
http://i.imgur.com/tcLTNw6.png
http://i.imgur.com/wlIa9sn.png

(Mogeko Castle)
http://i.imgur.com/r1fuHPJ.png
http://i.imgur.com/e3QiTwQ.png
http://i.imgur.com/TEblPCi.png

RPG VX ACE RTP v3

6/7/2015 SUN
[Embed Translation]
* For games, make sure the embed text is always outlined so that
it is easier to read.

http://i.imgur.com/7rnPIET.png

outline

6/6/2015 SAT
[Embed Translation]
* Restore the support for Elf/Mink games.
Test working with 4, , and SEX , where
name/dialog/choice texts can be translated.
Here are some screenshots:

- en: http://i.imgur.com/crBqxtk.png
- ko: http://i.imgur.com/Q9W8yAa.png
- zh: http://i.imgur.com/3OxjgWd.png

Elf Mink

* Add support to translate name/scenario/choice for games from .


Test working with BUNNYBLACK, , and .
Here are some screenshots:
http://i.imgur.com/AVh0EnP.png
http://i.imgur.com/F75dGuk.png
http://i.imgur.com/0iNKRXe.png

* VNR will display if a game engine supports embedding translation in Text


Settings.
For all existing embed engines: System43 supports only English, while any other
engines support English/Chinese/Korean on
Windows Vista or above.
Support for Windows XP and languages other than English/Chinese/Korean are NOT
well-tested, which might or might not work
properly depending on whether the game font for the embedded character set can
be properly customized.


System43

6/5/2015 FRI
[Yomigana]
* The default romanization standard for Japanese name is slightly changed to be
consistent with Wikipedia.
Additionally, I added an option to Preferences/Translation to toggle whether
display macron for Japanese
names, which is enabled by default.

Personally, I feel macron is ugly, but it might contain more information.


If you don't like having macron displayed, you can always disable it in
Preferences/Translation.

Here are some example romaji for Japanese names when macron is enabled (first)
or disabled (second):
- () = Sat, Satou
- () = Sat, Sato
- () = Satin, Satoin
- () = Ss, Soso
- () = Ss, Soso
- () = Ryjin, Ryujin
- = Kkun, Kakun

For the yomigana definitions in the Shared Dictionary, only hiragana will have
macron added, and katakana won't.
For example: will be translated to Sat, while will still be
translated to Satou.
The reasons behind this behavior are:
1. Hiragana is usually used for Japanese names, while katakana for English
names. And macron does not exist in English.
2. You can use katakana definition to always disable macron.

[Embed Translation]
* Restore the support for all BGI games.
Tested working with , , , and
.
Scenario, name, and choice texts can be translated.
Here are some screenshots from :
- Korean
http://i.imgur.com/Hys4wRh.png
http://i.imgur.com/Q0gApLu.png
http://i.imgur.com/N365rDE.png
- Chinese
http://i.imgur.com/78ASEUC.png
http://i.imgur.com/nXuERbQ.png

BGI
BGI

[Game Engine]
* Hook to more GDI functions below:
- GetCharABCWidthsFloat
- GetCharWidth32
- GetCharWidthFloat
- GetCharacterPlacement
- GetGlyphIndices
- GetTabbedTextExtent

6/4/2015 THU
[Game Engine]
* Add general hooks to GetTextExtentExPointA/W functions in GDI32.

[Embed Translation]
* Update Enshully engine to support embedding all languages.
Here are some screenshots:
- Korean
http://i.imgur.com/wI2bv19.png
http://i.imgur.com/H8YnZHi.png
http://i.imgur.com/S7B5xqx.png
- Chinese
http://i.imgur.com/JriS8jT.png
http://i.imgur.com/DJ4ye5p.png
http://i.imgur.com/dFCPHb5.png
http://i.imgur.com/BRxxAzj.png

Eshully
related

- /

- VNR Eshully

-
debug

-

J J

- VNR
ruby

- dock

* Update Eushully engine that its global font can be changed.


Here are some screenshots for embedding Vietnamese with customized font (family
= Tahoma, weight = Ultralight):

http://i.imgur.com/zwSFlC4.png
http://i.imgur.com/LicFTRe.png

btw, regarding the embedded font settings, it might be different for different
OSes/languages/games.
Here are some observations I found mostly from and AngleBeats,
which might be served as a reference for other games.

+ Changing font might have not effect, and might require restarting the game,
depending on the game.
For example:
- Changing font for AngelBeats requires restarting the game.
- Changing font for does not require restarting the game
- Changing font for System43 currently has no effect

+ If the translation is English, you might always want to DISABLE font


customization.
There is no need to change font family or charset to embed English
translation in most cases.
But if the font is too fat, you could try reducing its scale and weight (such
as changing weight to Ultralight).

+ If the translation is in Chinese or Korean


- If the OS is Japanese and >= Windows Vista
Usually, the font don't have to be changed.
But we might need to adjust space settings manually.

- If the OS is Windows XP or not Japanese


Usually, the font family or charset has to be changed to the one that
support both Japanese and the target language.

+ If the translation is not in English, Chinese, and Korean


Usually, the font has to be changed to the one that support both Japanese and
the target language.

Again to Vietnamese users, as far as I known, JBeijing/FastAIT+HanViet is


currently the only way to have offline Japanese-Vietnamese translation.
If you want to embed Vietnamese translation, I strongly recommend you to unban
Chinese in Preferences/i18n, and manually get JBeijing installed.
Otherwise, if you rely on online translators like Excite instead of the offline
ones, it could significantly slowdown the game.

Eushully

6/3/2015 WED
[JBeijing](Chinese, @djz020815)
* djz J

[Embed Translation]
* VNR will automatically disable any msgbox-like popups for Eushully games.

* Update Eushully engine to support translating some in-game texts.


Here are some screenshots:

http://i.imgur.com/4JV3bEc.png
http://i.imgur.com/Fk52rvI.png
http://i.imgur.com/QVrFpOa.png

http://i.imgur.com/ceWWhvF.png
http://i.imgur.com/3HK0eKJ.png
http://i.imgur.com/Dtr3u2w.png

http://i.imgur.com/OmW4ef0.png
http://i.imgur.com/M37LyX9.png

6/2/2015 TUE
[Embed Translation]
* Restore the support for embedding translation for Eushully games.
A screenshot of is as follows:
http://i.imgur.com/7sWgSfr.png

Known issues:
1. It currently only supports embedding English translation
2. Translation could go out of screen if being too long (since English is
usually much more verbose than CJK languages)
3. For Eushully games, when there are Ruby in the text, it will be broken into
pieces, which will significantly downgrade
machine translation quality because the sentence structure of Japanese and
English is so different.
I am going to check if it is possible to totally disable Eushully ruby in
the future.

Because of 2. and 3., I would suggest to turn on both embed and external
subtitles at the same time.
When the embed translation is too long or broken into pieces, you can check the
external subtitle instead.

btw, I recently changed the underlying hook implementation, and all previous
embedded game engines were broken as the result.
Currently, only SiglusEngine, System43, and Eushully(ARCGameEngine) support
embedding translation.
And only UTF16 engines support embedding all languages. SHIFT-JIS engines
currently only support English.
I will restore the support for other previous embed engines later, such as BGI,
Circus, Elf, and Majiro.

6/1/2015 MON
[Embed Translation]
* Fix the issue that customized font with non-ascii family name might not work.
Thanks for @mireado sama's report!

* Fixed a bug in SiglusEngine that sometimes choice text is not translated.


Thanks for @mireado sama's report!

* Add options to adjust font size and weight.


But depending on the game engine, the font settings might or might not work.
Currently, it works for SiglusEngine, but has no effect to System43.

5/31/2015 SUN
[TAHScript](English, @riz)
* Update TAH script for LEC/ATLAS.
The scripts are from @errzotl sensei, and you can say thanks to him/her at
TAHscript@outlook.com.

[Yomigana]
* Fixed a issue that text might go out-of-screen when ruby is displayed below
instead of above kanji.
Thanks for @Onurtag sama's report!

[Embed Translation]
* Modify the System43 engine to support other AliceSoft games to embed English
translation.
Tested working with 9 and .
However, since English is usually more verbose than Japanese, the text might
sometimes go out of screen.
Here are some screenshots:

http://i.imgur.com/vUxx9o0.png
http://i.imgur.com/KhkOBCf.png
http://i.imgur.com/E6R1GW2.png
http://i.imgur.com/HCWdxuc.png

* Add an option to limit the maximum scenario text width by inserting new lines
so that it won't go out of screen.
This option only works if "\n" can be interpreted as new lines in a game.
It currently does not work for System43 where \n has no effect.

* Update SiglusEngine to support translating choices and names for AngelBeats as


well.
Here's a screenshot:

http://i.imgur.com/ZOFpgsN.png

AngelBeats

5/30/2015 SAT
[Embed Translation]
* Add embed translation support for Evenicle.
Currently, it only supports English, and might not work for other System43
games.
Scenario/name threads, windows texts, and some in-game texts can be translated.
Here are some screenshots:

AVG part: http://i.imgur.com/aIM4dWN.png


RPG part: http://i.imgur.com/1HIIwSR.png

Note that the Text Settings for embedding translation is changed to be read-
only and left only for debugging purposes.
Since everything can be automated to embed translation, there is no need for
manually adjusting Text Settings.

5/25/2015 MON
[Game Engine]
* System43+ engine is slightly modified to get rid of illegal characters from the
text.
But you will have to re-adjust Text Settings if you are using System43+.
System43+

5/24/2015 SUN
[Embed Translation]
* Game is no longer required to be launched with AppLocale.
There are no longer any requirements for launching the game to embed
translation.
But if the game is launched in Japanese locale, you might need to select a
different font that support
the character set of the embedded translation in Preferences/Embed.
Tested working on Windows XP and Wine now.

AppLocale
/
Windows XP Wine

* Embedding translation is now working for all languages.


Here's a screenshot for AngelBeats with JBeijing+HanViet offline Vietnamese
translation embedded:

http://i.imgur.com/ZjDpVkJ.png
To display non-English language properly, it is critical to select a proper
font.
You might have to tune the font and space settings a little bit in
Preferences/Embed.
Changing font family might require restarting the game, which is currently
painful to tune though.

The best font should ideally support both the character sets of Japanese and
the target language (such as Vietnamese),
which, however, might not exist in Windows's default fonts.
For example, to display Japanese-Vietnamese properly, I used SimSun (),
which is indeed a Chinese font.

If you don't want to manually specify the font, you can also enforce the
character set of the font, and let Windows to
automatically pick one for you.
Here's a screenshot for embedded Thai translation from Bing without explicit
font selection:

http://i.imgur.com/itNhEeB.png

There are weird spaces in the middle though, as I don't have a proper Thai font
installed in my Japanese Windows.

5/23/2015 SAT
[Game Engine]
* Add Bootup engine for games containing Bootup.dat in the game folder.
Tested working with , , , and from
PIL/Daisy^2.
PIL Daisy^2

[Embed Translation]
* Create multiple communication channels so that concurrent translation requests
won't hang the game.
There should be no more hanging problem with user-shared subtitles or offline
machine translation.

* You can press SHIFT or CTRL to temporarily pause embedding translation.


Shift Ctrl

* Add an option to change game's default font.


If game's default font cannot properly display the characters of the embedded
language, you can change it to another font.

Note: If you want to select VNR's fonts in Library/Fonts as game's font (such
as Nanum Barun Gothic),
you have to manually install that font file in Library/Fonts to your
$windir/Fonts directory first.

5/22/2015 FRI
[Embed Translation]
* Add an option to insert spaces between text to fix the text overlapping issue.
Depending on different OSes/Locales/Languages/Fonts of the host system,
sometimes certain
characters might overlap with each other.
When all characters overlap like the following one, it can be fixed by turning
on the
Insert Spaces After Every Character option.
http://i.imgur.com/mUXTk6w.png

When only a few characters overlap like the following one ( and
overlapped), it can be
fixed by turning on the Insert Spaces Only Between Overlapped Characters
option.
http://i.imgur.com/m5MZDfk.png

* Fixed the jittering issue.

I removed the "alpha" tag for embed translation, as I feel it has no critical
issues now (at least for SiglusEngine).
Feel free to give it a try if you are speaking English/Chinese/Korean and NOT
using Windows XP.
More details could be found here:
http://sakuradite.com/wiki/en/VNR/Embedded_Translation

There are two issues left though that I am going to work on later:
- Support changing game's fonts
Currently, embedded non-Japanese characters might or might not be rendered
well on Windows XP, because it's system
default fonts do not support a wide range of character sets.
Changing game default font might help fix this issue.

- Support translating choices and other texts, which might be important esp to
RPG games.

Here are some related hints that might be helpful:


- Even if embedded translation is enabled, VNR will still display external
subtitles.
If you want to disable external subtitles, just toggle off Text, Name, and
Translation in the left option dock.
And automatic TTS will not get affected by whether displaying subtitles or
not.

- Machine translation quality is usually not good for non CJK languages
Both translation and original text can be displayed together by toggling
Preferences/Embed
in case the machine translation does not make sense.

- To turn on Embed Translation, I strongly recommend to have at least one


offline machine translator installed.
Otherwise, the latency of online translation might cause game to get jittered
and slowdown.


Windows XP


http://sakuradite.com/wiki/zh/VNR/



SiglusEngine Eushully

Windows XP
Windows XP Windows XP Windows XP

Windows Vista


1. /
2. a. Windows Spring Board
AppLocale
b. Windows Spring Board

a b

tip
- VNR

- /

-

/

- //

5/21/2015 THU
[Yomigana]
* The option to display ruby below instead of above kanji is restored in
Preferences.
A screenshot is as follows:

http://i.imgur.com/L4Wkbp2.png

[Fonts](Korean)
* UI font changed to "Nanum Barun Gothic" when UI language in Preferences is
Korean.

[Embed Translation]
* Add option in to display both original Japanese text and translation in
separate lines.
When enabled, the translation will be appended after Japanese, instead of
replacing Japanese.
Here's an example: http://i.imgur.com/u6uFyHu.png

5/20/2015 WED
[Name Detection]
* To be aware of more quotes while guessing speaker's name of a sentence.
In the old version, VNR was only aware of and .
Now, the following pairs of quotes are added:
-
-
-
-
- ()
-
- <>
-
- (full-width)
- (full-width)

Some features that get affected because of this:


- Name guess accuracy for automatic Text-to-speech is improved
- User-shared subtitle/danmaku matching accuracy is better
- Sentence split for machine translation is slightly changed to be aware of
quotes

For example, given the following Japanese sentence:



It will be split into:
, , ,

However, the following two Japanese sentences will NOT get split by VNR.


Because VNR will think here are not sentence deliminators.
- For the first sentence, it does not end with "".
- For the second sentence, the text before "" is too long to be a Japanese
name.

* The assigned name for TTS is slightly changed when VNR failed to guess
speaker's name.
For example, given three sentences below.
The assigned name for the first sentence will be "Aside", and that for the last
two sentences
will be "Unknown". Though being unknown, you can now select voices for unknown
characters.

-- aside
-- unknown
-- unknown

TTS

[Shared Dictionary UI]


* If you have either KanjiDic or Radical dictionary enabled in Preferences, VNR
will display the
decomposed radicals and translations of all kanji in the pattern (such as
Japanese names).
It might be helpful for learning CJK hanzi.

[Embed Translation]
* Update SigusEngine to support embedding translation for AngelBeats.
Some screenshots are as follows:
http://sakuradite.com/images/screenshots/angelbeats_ko.jpg (Korean
translation made by created by @mireado)
http://sakuradite.com/images/screenshots/angelbeats_zh.jpg (Chinese
translation made by @)

The encoding issue for CJK is fixed for SiglusEngine. It might still not work
for other languages/engines though.

Some known issues:

+ When embedded translation is enabled, the game might periodically get


jittered/hanged, which is very annoying.
This jittering problem is very very very annoying.
I am going to try to fix this problem soon.

+ Encoding issue for non-English languages


- Chinese and Korean
The game must be launched in Chinese/Korean locales instead of Japanese.
This can be done by either using AppLocale to launch AngelBeats in
Chinese/Korean locale on Japanese Windows,
or switching Windows locale directly to Chinese/Korean.

- Traditional Chinese
When the game is launched in Traditional Chinese locale, the option of
Traditional Chinese variants in
Preferences/Translation/Chinese must be enabled.

- Other languages
I didn't test support for other languages myself. It might or might not
work.

+ While choices can be translated, there is currently no way to add manual


translation for choices.
Only machine translations will be used.

AngelBeats

5/18/2015 MON
[Shared Dictionary]
* Output rules can have grammatic roles in it.
For example, given two definitions:

1. => Yuuma, type = translation, role = m


2. University of [[m]] => [[m]] University, type = output

It will transform "University of Yuuma" to "Yuuma University".

However, the "Role" column of an Output definition itself is currently unused.

(Korean)
* The roles of noun(n)/name(m) for Korean translation will be automatically
changed to reflect
the final hangul character of the last syllable.

For example, given a name definition = with role = m, VNR will


replace m by m$o,
where $o indicates "" ends with a vowel ().
Similarly, given a suffix definition = with role = m, VNR will replace m
by m$x$n,
where $x means "" ends with a consonant, and $n means that consonant is .

Additionally, "$" is similar to "_" that implies the inheritance relation.


For example, m$x$n inherits all rules for [[m]] and [[m$x]].

Here are some output definitions that might illustrate the usage of this
syntax:
- [[m$x]] => [[]]
It will replace after all names ([[m]]) ending with a consonant by .
- [[m$o]] => [[]]
It will replace after all names ([[m]]) ending with a vowel by .
- [[m$x$l]] => [[]]
It will replace after all names ([[m]]) ending with by .
- [[m$x,n$x]] => [[]]
It will replace after both name (m) and noun (n) ending with a consonant
by .

A list of $ suffices that will be automatically added to n/m are as follows:


- $o: the last hangul character ends with a vowel
- $x: the last hangul character ends with a consonant
- $x$g:
- $x$gg:
- $x$gs:
- $x$n:
- $x$nj:
- $x$nh:
- $x$d:
- $x$l:
- $x$lg:
- $x$lm:
- $x$lb:
- $x$ls:
- $x$lt:
- $x$lp:
- $x$lh:
- $x$m:
- $x$b:
- $x$bs:
- $x$s:
- $x$ss:
- $x$ng:
- $x$j:
- $x$c:
- $x$k:
- $x$t:
- $x$p:
- $x$h:

Special thanks for @mireado sama's extensive help and ideas on this topic!

5/17/2015 SUN
[Shared Dictionary]
* Add some kind of implicit inheritance to the grammar roles.
Given two rules, say, "abc" and "abc_de", then "abc_de" will automatic inherit
all patterns of "abc".
Basically, the role whose name like "baserole_somevariant" with a "_" in the
middle will always inherit "baserole".
Similarly, "a_b_c_1_2" will inherit "a", "a_b", "a_b_c", and "a_b_c_1" as well.
This behavior is designed in order to solve Korean post-positioned particle
problem, but might help other languages as well.
For example, "adj_to" and "adj_na" will automatically inherit "adj".

And here's what I mean by "inheritance", given two rules for example:
#1 pattern = "", translation = "Rabbit", role = m_animal
#2 pattern = "[[m]]", translation = "[[m]]-san", role = m
Because m_animal can inherit m, "" will be translated to "Rabbit-san".
i.e. #1's role m_animal will match #2's "[[m]]".

Additionally, such inheritance relation is Partially Ordered.


For example:
#1 pattern = "", translation = "Rabbit", role = m
#2 pattern = "[[m_animal]]", translation = "[[m_animal]]-san", role = m
Then, "" will only be translated to "Rabbit " instead of "Rabbit-san".
Because m will NOT inherit m_animal.

(Korean)
* Insert a space between name and suffix for Korean.
For example: "" will be translated to " " instead of "".

5/16/2015 SAT
[TAHScript](English, @riz)
* Update TAH script for LEC/ATLAS.
The scripts are from @errzotl sensei, and you can say thanks to him/her at
TAHscript@outlook.com.

[Text Settings]
* Fixed a bug that selected Other Threads were not saved.
Thanks for @mireado sama's report!
bug

[Game Engine]
* When Text Settings window is visible, VNR will always inject built-in engines,
no matter H-code is set or not.
When there is H-code available, VNR will not inject game engines unless H-code
is deleted or Text Settings is opened.
I am worried a wrong H-code might prevent VNR from injecting, and hence changed
to this way.
VNR
VNR

[Fonts](Korean)
* VNR by default uses DFGirl (a multilingual lolita font) to render Korean texts.
@mireado requested changing it to Nanum Barun Gothic, which is a free web font
family made by Naver.com.
Unlike Hanazono font (), Nanum font is not required by VNR to work
normally at all.
But Korean texts might look better after switching to this font.

VNR can automatically download NanumBarunGothic in Preferences/Downloads/Fonts.


And the Font for Korean can be changed at Preferences/Fonts.
Alternatively, you can get NanumBarunGothic manually in the following location:
https://github.com/hiun/NanumBarunGothic
And here's the set of all Nanum fonts:
http://hangeul.naver.com/2014/nanum
5/14/2015 THU
[Yomigana](Korean)
* "" is handled slight differently while converting to hangul as requested by
@mireado.
For example: will now be translated to instead of in old
VNR.
When "" cannot be patched to the previous hangul character, it will be
replaced by "".
For example: => and =>

[Game Launch]
* When VNR is not launched as Administrator, it will always force launching games
as non-administrator,
even if the game itself requires Administrator privileges.
This applies to launching games with or without launchers like AppLocale, but
except LocaleSwitch.
It might or might not work for all games that require admin privileges though.
VNR
VNR

[Game Engine]
* Update RealLive engine to support new games from .

* Fix the issue that BALDRSKY ZERO games might be spammed by mono_string
functions.

* If there are user-defined H-code for a game, VNR will not hook to any places
other than the one defined by that H-code.
VNR's entire built-in hooks/engines will not be injected when H-code is
available.
This will avoid potential issues caused by Lstr functions and outdated built-in
game engines.
VNR hook

btw., I noticed that text extraction is totally broken for certain games (such as
) on Windows 10.
I haven't figured out the reason yet. But if you find other games not working
only on win10, just let me know!
btw., win10 VNR
win10

5/12/2015 TUE
[Game Engine]
* Add an alternative hook for .
Unlike the old System43 hook, the new one has no garbage threads and can
extract
character names, which might be helpful for VNR's automatic TTS function.

5/9/2015 SAT
[Shared Dictionary](Chinese)
*

- "(?!)" ""
- "{{bos}}" ""
- "()?" ""
- "()?" ""
[Dictionary]
* Add options to lookup KanjiDic in French, Spanish, and Portuguese.

5/8/2015 FRI
[Game Engine]
* Add text detection support for with AliceRunPatch.dll.
1.0.1

btw, I am gradually moving game engines written in C to Python.


This allows me to directly use regular expressions to search memory, which is
so expressive and convenient.
The instruction pattern for AliceRunPatch is just expressed in a simple regex
instead of a while-loop in C.
I am thinking maybe I can create another independent app for developers just
for memory debugging with regex.
Additionally, the current memory search implementation in ITH does not work
well for emulators like PPSSPP
with huge memory space, which is very slow, not scalable, and will crash in
WinXP.
Switching to Python to search outside of the game process will fix this issue.
This will also allows me to scriptify game engines maybe in javascript and
allows users to edit in the future,
since altering engines does not require compilation like in C.

5/7/2015 THU
[Dictionary]
* Add an option to display decomposed radicals of kanji.
For example, "" can be split into "(grain)" and "(sun/day)".

To display the radical properly, additional Hanazono font () is needed


to be
installed in Preferences/Downloads.

btw, I wrote a topic on how Chinese hanzi are being designed and combined,
which might
be helpful to understand how kanji are made from these decomposed radicals.

http://sakuradite.com/topic/826

* Add an option to display individual kanji translation using KanjiDic.


KanjiDic can be downloaded for free in Preferences/Downloads.
When enabled, combining with radical dictionary, a kanji might be rendered like
this:

{war}: [{simple}, {spear}]

5/3/2015 SUN
[i18n](Korean, @mireado)
* Update VNR's UI translation in Korean made by @mireado sensei.

[MeCab]
* Add option to highlight Japanese phrases based on their grammatic roles.
It is enabled by default, and can be turned off in
Preferences/Translation/Dictionaries.
A screenshot is as follows:

http://sakuradite.com/images/screenshots/ex_role.png

Here's the current set of grammar roles (if you click the role, VNR will popup
explanation):
- m: , name, probably human's
- mp: , place name
- n: , noun
- pn: , pronoun
- v: , verb
- a: , stem of adjective/adverb
- adn: , adnominal
- adj: , adjective
- adv: , adverb
- p: , particle
- aux: , auxiliary verb
- suf: , suffix
- pref: , prefix
- int: , interjection
- conj: , conjunction
- w: , word in latin or other special characters
- punct: , punctuation
- x: other common phrases

And here's the current color theme:


- noun-based phrase: green
- verb-based phrase: purple
- adjective-based phrase: yellow
- name and pronoun: red
- conjunction: blue
Currently, I haven't added an interface to change these colors.


//

http://sakuradite.com/images/screenshots/ex_role.png

5/2/2015 SAT
[Shared Dictionary](Russian, Ukrainian)
* English name definitions will be converted to Russian/Ukrainian alphabet.
For example, given a name definition => Helman in English, VNR
will translate to in Russian and in Ukrainian instead.

* Russian name definitions will be converted to Ukrainian alphabet.

[Yomigana](Korean)
* Properly handle "" while converting Japanese kana to Korean hangul.
For example, will now be converted to instead of .

5/1/2015 FRI
[Yomigana](Greek)
* Support generating translation from yomigana in Greek alphabet.

4/30/2015 THU
[Dictionary]
* Add an option in Preferences to use OVDP to provide English translation.
OVDP (Open Vietnamese Dictionary Project) developed a set of open-source
dictionaries for Vietnamese.
Though originally for Vietnamese, OVDP also provides a short English
explanation before each entry.
It could be used together with EDICT to provide more English translations.

* Add option in Preferences to display Dutch/French/Russian translations above


Japanese phrases.
JMDict is needed to be installed.

Since the vocabulary of JMDict is relatively small, you can combine JMDict with
EDICT/OVDP.
When both non-English and English translations are enabled, VNR will lookup
non-English dictionaries (JMDict) first.
If there is no match, it will then fallback to English (such as EDICT).

Note to Russian users:


If you would like to enable displaying Russian translation, I would strongly
recommend to change the Japanese font
in Preferences/Fonts from "MS Gothic" to "Tahoma", or any other fonts that
include both Japanese and Cyrillic characters.
Otherwise, Russian characters will look ugly in VNR and might sometimes go out
of screen.

VNR by default uses MS Gothic to render Japanese, which always shows Cyrillic
characters in full-width.
This will break VNR's assumption that non-CJK characters are all in half-width,
and might break how VNR calculates text width.
Changing the font to "Tahoma" will fix this issue.

[Machine Translation](Russian, Ukrainian, Greek)


* Add an option in Preferences/Translation to convert English in the translation
to the alphabet of the user language,
including Greek letters, Russian Cyrillic letters, and Ukrainian Cyrillic
letters.

Since many machine translators use English as the intermediate language, there
are usually untranslated English words leaving
in the result translation. And in the Shared Dictionary, there are also a lot
of translations that are for English only.
This option when enabled will force converting these untranslated words to the
letters in the target language's alphabet.

[Yomigana](Ukrainian)
* Support generating translation from yomigana in Ukrainian.

[Game Engine]
* Add hooks to TabbedTextOutA/TabbedTextOutW in GDI.
It is intended to support extracting texts for games from , but it
might support some other games as well.


@lambl sama

4/29/2015 WED
[Language]
* Add translation support for Norwegian, Swedish, Finnish, Danish, Hungarian,
Czech, Slovak,
Greek, Romanian, Ukrainian, and Turkish.
Additionally, Ukrainian is sharing vocabulary with Russian in the Shared
Dictionary.

[TAHScript](English, @riz)
* Update TAH script for ATLAS.
The scripts are from @errzotl sensei, and you can say thanks to him/her at
TAHscript@outlook.com.

[JBeijing](Chinese, @djz020815)
* djz J

4/27/2015 MON
[Dictionary](German)
* Add option to display German translation directly above Japanese phrases.
It requires Wadoku EPWING dictionary to be installed in Preferences/Downloads.
When enabled, a Japanese sentence will be like this:

ich Ichij Akiram


4/26/2015 SUN
[Dictionary](Vietnamese)
* Add option to display Vietnamese translation directly above Japanese phrases.
It requires OVDP Japanese-Vietnamese dictionary to be installed.
When enabled, the Japanese will be look like this:

forget well memory inside shell nghi vn quiet shed hair


The translation displayed is usually English, and sometimes Vietnamese (such as


nghi vn).
Also, the translation is not guaranteed to be correct, such as: => shell.

* OVDP dictionary support is changed to use StarDict format to save disk space.
OVDP dictionary now requires only 40MB.
If you have old OVDP dictionary installed, VNR will delete it on the startup.
It can be redownloaded for free in Preferences/Downloads.

If VNR's download script is slow (it currently picks a DL mirror in US), you
can also manually
get the dictionary from the following location:

http://sourceforge.net/projects/ovdp/

And then extract the downloaded NhatViet.zip to:

Caches/Dictionaries/OVDP/NhatViet

btw, VNR now supports dictionaries in StarDict format.


If you need more StarDict dictionaries support, feel free to let me know.
Thanks!

[Game Engine]
* Update GXP engine to support .
And don't forget to maximize the game text speed.

The issue that old GXP games had floating split is also fixed.
If you are playing GXP games (such as Astronauts's), you might have to re-
adjust Text Settings.

GXP
GXP Astronauts

4/25/2015 SAT
[Dictionary]
* If you have blocked English, VNR will no longer show EDICT-related options in
Preferences.

* Add option to display Chinese/Korean translation directly above Japanese


phrases.
It requires at least one Japanese Lingoes dictionary to be installed for these
languages.
When enabled, the Japanese will be rendered like this:

Here, "=" means "" is an alias of "" in spoken Japanese.

VNR currently simplify picks the first meaning it has got in the dictionary,
which could be wrong.
For example, "" here should not be "", which means ""(verb) instead
of ""(adj).

In the future, I plan to use UniDic's role (verb, noun, adj, etc.) to filter
dictionary entries,
which might help disambiguate phrases having different meanings.

Lingoes
VNR

4/20/2015 MON
[TAHScript](English, @riz)
* Update TAH script for ATLAS/LEC.
The scripts are from @errzotl sensei, and you can say thanks to him/her at
TAHscript@outlook.com.

4/14/2015 TUE
[MeCab]
* Fixed a bug that UniDic could not be automatically downloaded.
UniDic

* Restore the feature to display EDICT translation directly above Japanese


phrases.
It requires EDICT to be aligned with UniDic.
VNR will re-align EDICT after first launch if you have EDICT installed by old
version of VNR.

For example, given a Japanese sentence:


It will be rendered by VNR like this:

great effort the world respond


And the yomigana translator will translate the entire sentence like this when
"English" is selected:

great effort ni the world ga respond no yo

If you click , the MeCab feature will be like this:

,,doryoku,n,vs,EDICT,great effort

The columns immediately before EDICT (n and vs) are the roles of the phrase,
which means it is both
a noun and a (s) verb.

VNR currently simply pick the first short meaning of an entry in EDICT as its
translation, which,
however, might not be always correct.
And the definition collision between EDICT and UniDic is not well-handled.

EDICT

great effort the world respond


4/13/2015 MON
[TAHScript](English, @riz)
* Update TAH script for ATLAS/LEC.
The scripts are from @errzotl sensei, and you can say thanks to him/her at
TAHscript@outlook.com.

4/12/2015 SUN
[Ehnd](Korean)
* Fixed the issue that external native Ehnd plugin did not work.
However, due to technical difficulties, toggling the Ehnd option now requires
restarting VNR.
The logic that which version of the dll will be loaded is as follows:
- Enable the Ehnd option in Preferences
Use VNR's built-in dll, no matter whether you have installed Ehnd in ezTrans
directory.
- Disable the Ehnd option in Preferences
Use the native Ehnd plugin you put in the ezTrans directory.

[Yomigana]
* Add option in Preferences/Translation to display ONLY the yomigana (such as
romaji) as subtitles.
/

* Conversion support from Japanese kanji to Vietnamese Phin m is restored.

4/11/2015 SAT
[Dictionary]
* Speedup dictionary lookup.
I rewrote the implementation for looking up EDICT and Lingoes dictionaries,
which is now extremely fast
that the lookup time is less than 0.1 sec, even for some very large
dictionaries, such as OVDP for Vietnamese.

[MeCab]
* Japanese segmentation implementation using MeCab is now switched to that used
by VNR's SMT vtrans.
This will allow me to integrate Shared Dictionary with statistical machine
translation in the future.
There are a couple of changes caused by the switch of the implementation.

+ Removed features
- IPAdic support is removed. UniDic is now the ONLY MeCab dictionary
supported by VNR.
UniDic must be installed in Preferences/Downloads to enable Japanese word
segmentation.
- CaboCha highlight support is removed.
I will change to highlight phrases according to their roles (name, noun,
verb, etc.) instead later.

+ Broken features that I haven't got time to implement


- Displaying Vietnamese Phin m above Japanese kanji is broken, and
temporarily disabled.
- Displaying EDICT translation directly above Japanese phrases is broken, and
temporarily disabled.
- Displaying Furigana for web page is broken, and temporarily disabled.

+ New features
- Dictionary alignment for EDICT
For example, given a Japanese sentence:

Without EDICT alignment, VNR by default will segment it into:
+ + + +

With EDICT alignment, because there is a translation entry for =


Sorry in EDICT,
VNR will now segment the sentence into:
+ + +

Now if you click , VNR will popup the "Sorry" translation in


EDICT.
This methodology is borrowed from vtrans' code to learn word segmentation
rules from dictionary entries.

Whether enabling EDICT alignment really depends on your need.


Without EDICT alignment, VNR will segment out, and when you click
, VNR will display its
UniDic feature like this:
,,,,,
This means is a "general noun" (), and its pronunciation is
borrowed from Chinese ()
(and hence it sounds similar to Chinese).
However, after EDICT alignment is enabled, you cannot easily observe such
information anymore.
VNR will instead display the English translation for the entire .
Basically, if you cannot read Chinese such as , and you are an English
speaker,
it might be better to enable EDICT alignment.
Otherwise, enabling alignment or not depends on whether you are more
comfortable with Chinese or English.

In the future, I will use yomigana/name entries in Shared Dictionary to align


MeCab as well.
And I will add support to align MeCab for other languages, such as:
Naver for Korean, OVDP for Vietnamese, and Wadoku for German

VNR MeCab

1. IPAdic CaboCha UniDic


2. EDICT MeCab

EDICT

btw, VNR VNR


deploy
VNR or not

[Machine Translator]
* Add online translation support for Babylon, SYSTRAN, and @nifty.
+ Babylon: Multilingual, support all languages in VNR.
btw, I also tested SDL, which had the same translation as Babylon, and hence
not added to VNR.

+ SYSTRAN: Support English-focused translation.


One critical problem is that the IP might get banned when submitting a couple
of translation very quickly.
I haven't got a solution for this issue yet.

+ @nifty: Support translation between Japanese/Chinese/Korean/English.


It is using the same translation engine as the famous Fujitsu ATLAS.
Additionally, @nifty is set to shared the same TAH script and Shared
Dictionary rules as ATLAS.

If you would like to add alternative translation support, feel free to edit the
following page:
http://sakuradite.com/wiki/en/Machine_Translators

Here are some tests if you are interested:

- Japanese:

LEC (original): Oh, I sleep, and half underpants are after a long absence
skirt
LEC (VNR+TAH): OhSkirt . Half underpants are after a long
absence

ATLAS (original): Good bye [maane] skirt is [dashi] . The half pants are
after a long time.
ATLAS (VNR+TAH): Well Good bye the skirt is [dashi]. The half pants are
after a long time.

Infoseek (original): skirt . Half underwear is after a


long absence
Infoseek (VNR+TAH): Oh Skirt . Half underwear is after a long
absence

SYSTRAN: Don't you think? well, the skirt the reed mule it puts out. The
half underpants how long separation
Babylon: Well. My skirt and a farewell. Half-pants long time!
@nifty: Good bye [maane] skirt is [dashi] . The half pants are after a long
time. // the same as ATLAS

4/9/2015 THU
[Bing](Arabic)
* For Japanese-Arabic translation, fix the issue that Shared Dictionary rules get
messed up by Bing.

4/7/2015 TUE
[Yomigana](Arabic)
* Yomigana definitions in the Shared Dictionary will generate name translation
for Arabic as well.
If you find errors in the yomigana, please edit the following page, and I will
update VNR to add your patch later.

http://sakuradite.com/wiki/en/Furigana

Now, yomigana will generate name translations for all languages in VNR.

* Arabic alphabet can be selected to display yomigana for Japanese.

* Baidu translator is no longer blocked in Preferences, even if you have blocked


Chinese language in Preferences/i18n.
Because Baidu can be used to translate non-Chinese languages as well, such as
Arabic and Russian.

4/6/2015 MON
[Machine Translator](Chinese, Korean)
* Translation using JBeijing and ezTrans are done in parallel to be faster.
VNR tends to split input text into sentences and translate each sentence
independently.
When that happens, VNR now will translate all sentences in parallel.
This is not enabled for other translators such as Atlas and LEC, which are
tested not thread-safe.

JBeijing
&eos; JBeijing

JBeijing
JBeijing spinner

JBeijing Baidu overlap


JBeijing Baidu

[Ehnd](Korean)
* Fixed an encoding bug that caused Ehnd scripts not properly applied.

4/5/2015 SUN
[i18n](Korean, @mireado)
* Update VNR's UI translation in Korean made by @mireado sensei.
[Shared Dictionary](Chinese, Korean)
* JBeijing and ezTrans are aware of the roles of m (name), n (noun), and x
(unknown phrases).
As you might have noticed, for example, after defining a noun syntax:
n ||| ||| Russia
VNR will send ZNAZ to the underlying machine translator (JBeijing/ezTrans),
which, however,
does not know that ZNAZ is a noun.

So, I simply added ZNAZ to the user-defined dictionaries of JBeijing and Ehnd
script, after which,
I expect, the translator should now be able to recognize ZNAZ as a noun, i.e.
as a noun.

Some details about the mapping from the roles to the translator's user dict are
as follows:
- Ehnd, see: Dictionaries/ehnd/UserDict_@jichi_role.txt
role pattern noun properties
x ZX[A-N]Z 0
m ZM[A-N]Z 1 VHn
n ZN[A-N]Z 1 VHn

- JBeijing, see: Dictionaries/jb/@jichi/JcUserdic


role pattern input => output
x ZX[A-G]Z =>
m ZM[A-G]Z =>
n ZN[A-G]Z =>

Currently, only m/n/x are recognized.


Any other roles that are neither m(name) nor n(noun) are categorized as x
(unknown phrase).
If you have suggestions for other role mapping such as adj and verb, you can
create a topic on it
at http://sakuradite.com/topic

Regarding English translation, I expect similar things could be done by adding


definitions to
ATLAS/LEC's user-defined dictionaries.
However, VNR currently does not support reading ATLAS/LEC dictionaries.
I might investigate on ATLAS/LEC support when I have time later.

JBeijng role
m JBeijing
n JBeijing
role x JBeijing

4/4/2015 SAT
[ezTrans](Korean)
* Add built-in support for Ehnd plugin, which is enabled by default.
No settings are needed to be changed, unless you want to manually edit Ehnd
scripts.

- Ehnd scripts are enabled by default.


But you can disable it in Preferences/Translator below the ezTrans toggle.

And in the Test Machine Translation window, Ehnd can be toggled by the
Translation Script button.

- However, if you have already manually put Ehnd scripts in the ezTrans
directory, VNR will NOT load them.
To enable manual Ehnd scripts, you must DISABLE the Ehnd option in VNR's
Preferences.

VNR's Ehnd scripts are in the Dictionaries/ehnd folder, version 20150402,


which I got from mireado.
Please DO NOT directly edit those files, which will be reverted back after
VNR's update.
If you want to manually set up Ehnd, please follow the guide below, and then
DISABLE VNR's Ehnd option.

Tutorial: http://blog.naver.com/waltherp38/220286266694
Binary: http://blog.naver.com/waltherp38/220267098421
Dictionary: http://sokcuri.neko.kr/220301117949

I modified the source code of Ehnd to better integrate with VNR, and the source
code is as follows:
https://github.com/jichifly/ehnd-vnr
For example, it does not require msvc2013 to be installed, hooking to eztrans
is changed to be non-intrusive,
logging is disabled for better performance, and building system changed to
CMake (I am a Visual Studio hater).
It might also allow me to compile Share Dictionary rules to Ehnd dictionary in
the future.
But currently, there is NO difference for how the Ehnd scripts are applied.
So, it is OK to set up manual Ehnd if you like, which will act the same way as
VNR's Ehnd mod.

Special thanks to @mireado sensei's extensive help on this topic!

4/3/2015 FRI
[Shared Dictionary](Chinese)
* Yomigana rules will also be used to generate names for Chinese translation.

=>
VNR


VNR
1

override

[Game Engine]
* Fix the issue in Malie engine to make sure texts are extracted sentence-by-
sentence in .

4/2/2015 THU
[JBeijing](Chinese, @djz020815)
* djz J

[TAHScript](English, @riz)
* Update TAH script for ATLAS/LEC.
The scripts are from @errzotl sensei, and you can say thanks to him/her at
TAHscript@outlook.com.
[UI]
* Remove the option to change global UI font in Preferences.

3/14/2015 SAT
[Game Engine]
* Update Malie engine to correctly capture text annotated with furigana.
light

3/13/2015 FRI
[Game Engine]
* Add alternative ShinaRio engine for Guilty games as reported by @jessecf sama.
Guilty
@jessecf sama

[Performance]
* Reduce memory usage to process subtitles and danmaku.

* Reduce memory usage by half to show and edit Shared Dictionary entries.

[Machine Translator](Chinese)
*
API

3/12/2015 THU
[Shared Dictionary]
* Set of roles can be represented by, for example, [[m,n,v]], which will match
any m,n,v roles.
And when there are multiple sets, the role name can be omitted in the
translation.
For example, all the following rules are equivalent:

[[m,n]][[v]] => [[v]] [[m,n]]


[[m,n#1]][[v#2]] => [[v#2]] [[m,n#1]]
[[m,n#1]][[v#2]] => [[#2]] [[#1]]
[[m,n#1]][[v]] => [[v]] [[#1]]

And if there is only one role, the role names in the translation can be omit.
For example, all the following rules are equivalent:

[[m,n]] => [[m,n]]'s


[[m,n#1]] => [[m,n#1]]'s
[[m,n#1]] => [[#1]]'s
[[m,n#1]] => [[]]'s
[[m,n]] => [[]]'s

[Game Engine]
* Update Malie engine so that it won't crash .

3/11/2015 WED
[JBeijing](Chinese, @djz020815)
* djz J

[TAHScript](English, @riz)
* Update TAH script for ATLAS/LEC.
The scripts are from @errzotl sensei, and you can say thanks to him/her at
TAHscript@outlook.com.

[Machine Translator]
* (Russian) Fix translation support for translate.ru , which stopped working.

* (Chinese) Restore translation support for Youdao.com, since the new translation
encoding system
for Shared Dictionary can penetrate Youdao now.

J

[Shared Dictionary]
* Guest users are no longer allowed to create Prefix/Suffix/Macro/Proxy typed
translation rules any more.
I feel these typed rules are either dangerous or kind of complicated to
understand by new users that
most rules in these types submitted by guest are wrong.

* Macros can be applied to not only the pattern, but also the translation.

* Macros can also be applied to non-regex terms.


The regex option for for macros is no longer locked. But it has NO effect at
the moment.
If a macro is for representing regex, you can just check that option, to make
it more readable.


readable

* I made some fundamental changes for how to apply


Name/Prefix/Suffix/Yomigana/Translation rules.
If you are actively using Shared Dictionary, I think it might be helpful to
check the following topic:

http://sakuradite.com/topic/724

In short, I changed to apply Shared Dictionary in a new grammar similar to


VTrans for Chinese.
The grammar is basically the same as SynCFG for SMT, except there is no
statistical probability and word segmentation.
Here are some major advantages:
- The new grammar is implemented 10x faster to apply, and use half memory.
- It can be used to describe interaction of translation rules.
- There is no more issue of garbage digits.
- Name translation etc. can be applied in non-intrusive manner with the help of
the new mechanism of "translation delegation".
- The name translation is now very cheap to implement.
Assume there are N names, S suffices, and P prefices, and the time/space
complexity to process Name is reduced
from O(N*(S+P)) => O(N+S+P).
I would suggest to remove series-specific flags for all names that do not
have ambiguity.


VTrans SMT
topic

http://sakuradite.com/topic/724

3/4/2015 WED
[Performance]
* Reduce memory usage when writing large xml/yaml data
(games/subtitles/dictionary) to disk.

3/1/2015 SUN
[Proxy]
* Update proxy to ErogameScape and Google, which stopped functioning.
Google

[Machine Translation](Korean)
* Add translation support for TransCAT JKKJ suggested by @mireado sama.
I cannot tell if it is better or worse comparing to EzTrans, but I feel you
could give it a try.

Here are some notes and minor issues about it:


- TransCAT's developer ClickQ has disappeared, and I cannot find any place to
purchase this soft.
If you would like to try it, you might have to ask your friends or @mireado
sama where to get it.

- TransCAT project was dropped in 2002, which was newer than ezTrans XP (2001)
though.

- TransCAT's path must not have non-ASCII characters.

- VNR must have write permission to TransCAT's directory.


For example, on Windows 7, if you have installed TransCAT to $PROGRAMFILES as
Administrator.
Then, VNR by default might not be able load TransCAT. And it will keep
popping up warning messages
like "Cannot write to the location".

There are at least three ways to fix such issue:


+ Solution 1 (recommended): Move TransCAT out of $PROGRAMFILES to a location
where non-administrator has write permission.
+ Solution 2 (not recommended): Always launch VNR as administrator.
+ Solution 3: Use cacls to grant write access to the TransCAT folder in
$PROGRAMFILES.

- TransCAT might conflict with JBeijing (a Japanese-Chinese translator).


When TransCAT starts after JBeijing, it might crash VNR.
In order to make both work, TransCAT must be loaded BEFORE JBeijing is
loaded.
VNR internally will try to initialize TransCAT always before JBeijing if
possible, but there are
loop-holes when the user is toggling Preferences.
Anyway, if you have both JBeijing and TransCAT installed, and if you toggled
both JBeijing and TransCAT
in Preferences, you might have to restart VNR to make both work.

If you don't use JBeijing for Japanese-Chinese translation, you can forget
the above text.

Here are some comparisons regarding the translation quality with ezTrans and
Naver.
Japanese texts are from .

Japanese:
TransCAT: ? ,
EzTrans: ? ,
Naver: ? ,

Japanese:
TransCAT: ? ?
EzTrans: ? ?
Naver: ??

Japanese:
TransCAT:
EzTrans:
Naver:

I feel the overall EzTrans translation is similar to either EzTrans or Naver.

However, when there are unrecognized phrases, TransCAT will leave it in the
translation,
while Naver tends to convert untranslated Kanji to Hangul of the
corresponding Hanja in Korean,
and EzTrans tends to delete the unrecognized sounds or acts like Naver to
convert Kanji to Hanja's Hangul readings.
As a result, it will be easier to use Output rules in Shared Dictionary to
fix TransCAT's translation.

2/28/2015 SAT
[JBeijing](Chinese, @djz020815)
* djz J

[TAHScript](English, @riz)
* Update TAH script for ATLAS/LEC.
The scripts are from @errzotl sensei, and you can say thanks to him/her at
TAHscript@outlook.com.

[Game Engine]
* Update Pensil engine to support with Primula's 2XT engine.

2/18/2015 WED
[Script]
* Add a ld2db script in the Scripts folder that can be used to convert Lingoes
dictionary file to SQLite database.
For example:
ld2db "Vicon Japanese-English Dictionary.ld2" utf16 utf8
will output a SQLite3 db file for Vicon dictionary where Japanese is encoded
in UTF-16 and English is encoded in UTF-8.

[Machine Translation]
* I made a statistical machine translator from user-contributed subtitles for
VNR.
It currently only supports Japanese => Chinese translation, which can be
enabled in Preferences.
I named it as VTrans, standing for VNR's translator, or WeTrans (our
translator), since it is
really based on and counted on our subtitles and translation rules for VNs.

Its current average translation quality is usually worse comparing to other


online translators
such as Baidu, though.
But I think this might open a new area for VNR in the near future to have our
own fully-customized
machine translator to improve the translation in whatever ways we like.

Here are some advantages that it has and I can am expecting:

- Translation quality will be gradually improved from user-submitted subtitles.


The current translation is trained from 220k sentences.
96k are user-shared subtitles, and other 120k are sample sentences from JC
dictionaries in VNR.

Currently, if a user's total subtitle count is > X, all of his/her subtitles


will then be used to
train the machine translator.
X is a large integer. I would like to keep this number X secret to prevent
people from adding a
large number of garbage texts in order to be included to the machine
translation.

Basically, if you see a translation is wrong in VTrans, just submit a better


subtitle for it, and
then VTrans will be better soon later when I update it's translation rules
from user subtitles.

- Open and easy to customized


The translator is implemented in Python and Java. And I have the access to
all the source code
of the libraries and dictionaries being used.
This will allow us to modify the translation in whatever degree we like.
For example, I am now able to apply a suffix rule [[N]] to all names
recognized by the translator.
I can know how the input sentence is segmented, and which word is
untranslated.
And I can directly modify the grammar of the machine translation in a non-
intrusive way.

I will add interfaces to expose all internal settings of the translator in


the future.

- Domain-specific to VN
It is from users' subtitles, the vocabulary will be more close to and
oral Japanese.
And there is no censorship of certain hentai words.

- Possibility for training true-bilingual translation


Currently, say, Japanese => Russian is done by Japanese => English =>
Russian, which might downgrade
overall translation quality.
If you are speaking an European language, I can instead train the translation
directly between Japanese
and your language.
However, the translation quality might be affected by how many user-shared
subtitles are in your language.

- Feasibility for offline translation


Currently, the trained grammar data is about 400MB.
I can add an offline translator with these data in VNR, which will require
users to install Java, though.

However, I think there will be a few critical disadvantages about this


approach:

- Smaller vocabulary
Though being close to VNs, the amount of data used to train the translator is
far less than the others.
If you use VTrans to translate, say, Wikipedia articles, the quality will be
too bad to understand.
I plan to instead rely on users to submit instant rules to fix the mal-
translated sentences.

- Slow access speed


VTrans is currently set up on the same server that holds VNR's service.
I would expect it to stop functioning when lots of users are using VNR ....

- Less machine resources to tune the translation quality


The statistical machine translation quality is highly affected by tuning.
Currently, I don't have powerful machines or cloud clusters to tune all the
user-shared subtitles.
For the current 220k sentences, I only tuned 500 sentences for the best BLEU
score, which took
about 2 hours to accomplish on my macbook air.
I might not have machine time to tune large data, which will surely downgrade
translation quality.

Note: Currently, please do not add translator-specific rules for VTrans to the
Shared Dictionary.
I will change how to integrate Shared Dictionary rules with VTrans in the near
future.

Regarding how subtitles are trained, there are certain requirements for the
subtitles to meet, or the
subtitle might confuse VTrans and even downgrade translation quality.
I will talk about that after I have finalized Japanese-Chinese support and
added Japanese-English support.

Anyway, I am going to explore the approaches to integrate user-specified domain


knowledge to improve
translation quality. If you have suggestions, feel free to let me know!



Baidu JBeijing+Baidu
VNR

VNR

Guest



A B


wiki


1.

2.

ABC
xyz
VNR

VNR
- (paragraph)
- (sentence)
- (clause)
1 2 VNR
3 VNR

=>

VNR


VNR

=>
=>
=>
=>
=>

VNR

=>

VNR

=>
=>
=>
=>
=>

2/17/2015 TUE
[Internet]
* Certain Internet requests, such as query game database when adding new games,
query online machine translation, etc, will timeout after 7 seconds so that
VNR will not hang waiting for the request to finish.
7
VNR

[UI]
* Add an option in Preferences/UI to change VNR's default font.
/ VNR

2/14/2015 SAT
[Game Engine]
* Modify ApRicoT engine so that the scenario thread won't split and variate on
each launch.
Be careful that there are usually two threads for ApRicoT, and only one of them
is correct.
The other one sometimes is right, but sometimes has repetition.
Thanks for @Reality sama 's report!

[Shared Dictionary]
* You can use HTML escaped entities in the pattern and translation.
For example, VNR by default will trim spaces for the pattern and translation.
You can use &nbsp; to force prepending/appending space.

You can also use it to express unprintable characters without enabling regex.
For example, ASCII 13 (Carriage Return, or CR) can be expressed as "&#13;".

HTML (&nbsp;)
&#d \u
ASCII 13 (Carriage Return, or CR) "&#13;"

* Add a "&eos;" (end-of-sentence) special symbol, which can be used to force VNR
to break input text
into sentences and translate them independently.
For example, given:

If define the following rule:

Type: input
Pattern:
Translation: &eos;

Then VNR will translate "" and "" independently.

Note: Under the water, VNR will replace "&eos;" by "eos", so that {{bos}}/
{{eos}}/{{boc}}/{{eoc}}
macros won't be broken (because :bos:/:eos: also contains "").

&eos; VNR

:
:
: &eos;

VNR

Note: Using escaped symbols such as &nbsp; or &eos; will break translation for
all old versions of VNR.
Let's wait for one or two days until people update VNR before adding rules
containing these special symbols.

VNR
VNR

2/13/2015 FRI
[Shared Dictionary]
* Add a Phrase Boundary option to the translation rule.
When enabled, VNR will try to only apply the translation when it is at the
boundary of a phrase.
For example, given a yomigana definition:

=>

Then, it will be applied to , but won't be applied to , etc.


i.e. will only be applied if the left of and right of are at the word
boundary (like \b).

My plan is to utilize MeCab to find word boundaries in the future.


However, this is not what is happening at the current version.
The detailed logic about how pattern is affected is as follows:

- If @sourceLanguage is NOT Japanese # i.e. for non-Japanese games


- If @type is macro
Phrase boundary option is not allowed.
- Else if @type is suffix
@pattern = @pattern + "\b"
- Else if @type is name or yomigana
@pattern = "\b" + @pattern
- Else # For all other types including translation, pattern will be wrapped
with \b
@pattern = "\b" + @pattern + "\b"

- Else if @sourceLanguage is Japanese # i.e. for Japanese games


- If @type is macro
Phrase boundary option is not allowed.
- Else if @type is suffix
@pattern = @pattern + eow(@pattern)
- Else if @type is name or yomigana
@pattern = bow(@pattern) + @pattern
- Else
@pattern = bow(@pattern) + @pattern + eow(@pattern)

Here, bow (beginning of word) will return the negative category of the first
character of @pattern.
And eow (end of word) will return the negative category of last character of
@pattern.

For Japanese games, for example, when the phrase boundary is enabled,

=>
is almost equivalent to:

{{?<!kanji}}{{?!kanji}} =>

Except that the new approach will also be applied to, say, , but old {{?<!
kanji}}{{?!kanji}}
won't be applied to .

Similarly, will be almost equivalent to {{?<!kata}}{{?!kata}}.


And will be almost equivalent to {{?<!kata}}{{?!kanji}}.

For English games, for example, when the phrase boundary is enabled, "tight" is
equivalent to "\btight\b"
for translation type.

Currently, since MeCab is not used, the word boundary is not accurate.
For example, given => , when phrase boundary is enabled, it won't mess up
.
But it will still mess up .

Additionally, checking phrase boundary is as expensive as enabling regex.


Unless really needed, please don't extensively turn this option on.

For example, given a yomigana definition: =>


Since is seldom used in a kanji phrase, there is no need to turn on the
phrase boundary option for it.

"tight""\btight\b"
tight
tight tightly


- """{{?<!kanji}}{{?!kanji}}"
""""""
- """{{?<!kata}}{{?!kata}}"
- """{{?<!kata}}{{?!kanji}}"

expensive

* The name suffix now support changing the translation order.


For example, given the following definitions:

Type: Name
Pattern:
Translation: Chloe

Type: Suffix
Pattern:
Translation: Princess [[N]]

Type: Suffix
Pattern:
Translation: General [[N]]
Then, "" will be translated to "Princess Chloe".
And, "" will be translated to "General Chloe".
The idea is motivated by Ehnd scripts for EzTrans, which VNR currently does not
support, though.
Here, "[[N]]" is used as a placeholder for the name/yomigana translation.

btw, the "[]" symbol is selected, as in the future, I might add other variables
such as [[n]] to represent
a noun, and [[Nnv]] to represent a set of any Name/noun/verb where the grammar
is similar to regex [] class.

Such approach currently has some limitations.


For example, you can define the following suffix:

Type: Suffix
Pattern:
Translation: kill [[N]]

Then, "" will be translated to "kill Chloe".


However, "" will NOT be translated to "kill Chloe-chan".
Because [[N]] only contains bared name (), without other suffices (-).

In the future, I am plan to allow adding more generic rule such as "[[n]]",
where [[n]] represents any noun
with the help of MeCab.
But currently, my suggestion is that let's not add rules like as suffix
at the moment, and use suffix as
just name suffix such as , rather than complicated phrases such as
.

:
:
: Princess [[N]]

"""Princess Chloe"

approach

:
:
: [[N]]

""" Chloe"
""" Chloe "
[[N]]]

* Add prefix type, which is similar to suffix. Here's an example:

Type: Prefix
Pattern:
Translation: Mr.


:
: Mr.
: [[N]]

* Translation rules specific for JBeijing is now shared with Excite.


Because Excite has the same engine as JBeijing, whose translation are 99% the
same,
this might help reuse large numbers of JBeijing rules to enhance Chinese
translation on Excite.

JBejing Excite

[Proxy]
* Update proxy to ErogameScape.
Google

2/12/2015 THU
[Game Engine]
* Add SystemAoi5 text engine for .

[Danmaku]
* You can vote plus/minus a danmaku/comment if you agree/disagree for non-guest
account.
+/-/ guest

2/11/2015 WED
[Game Engine]
* Update old WillPlus engine which might crash Re:BIRTHDAY SONG on Windows
XP.
Re:BIRTHDAY SONG Windows XP
@ sama

[Machine Translation]
* The Ellipse character () will be used to split clauses to force preserving the
order of the clauses.

* VNR will also capitalize non-English characters (Vietnamese, Russian, etc.) in


the beginning of a sentence
if the language's character set does have capital letters.

[Shared Dictionary]
* When VNR is processing the Shared Dictionary after the game is changed, VNR
will ignore the game text.
This will help stop displaying garbage game texts on the startup.
VNR VNR

2/10/2015 TUE
[Machine Translation]
* Add options in Preferences/Translation for concatenate different translations

For example: If I select Bing as secondary translator of Baidu, and select


Chinese as
the intermediate language.
Then, when translate Japanese => English, VNR will first translate Japanese =>
Chinese
using Baidu, an then Chinese => English using Bing, like this:
(first mt) (second mt)
Japanese => Baidu.com => Chinese => Bing.com => English
(intermediate lang)

Here are some special scenario that might be benefit or affected from this
feature.

- Extend LEC output languages.


LEC is by far the best Japanese-English translator, and @riz sensei is
actively maintaining
translation scripts for LEC to further elevate its translation quality.
But VNR currently only supports English/Russian as output language.

If you want to translate Japanese to, for example, Spanish, using LEC, then
you can now
select Bing as the secondary translator of LEC, and select English as
Intermediate language.

Note: LEC won't show up if you have blocked English in Preferences/i18n.

- Translation alignment
Translation alignment can only be enabled for the second translator.
If enabled, the intermediate translation can be observed from the ruby.
Here's an screenshot of the translation through:

Japanese => (LEC) => English => (Google.com) => Spanish

http://i.imgur.com/4kLn0lv.png

- Shared Dictionary
Shared Dictionary will be applied to the first and second translators
independently.
For example, given:

Japanese => (LEC) => English => (Google.com) => Spanish

VNR will first apply Japanese => English rules to LEC, and then English =>
Spanish
rules to Google.

An exception is Chinese. When the intermediate language is Chinese and the


source language
is Japanese, then VNR will also apply name/yomigana rules in Japanese to
Chinese translation
to the second translator.
This will turn the translation of these names to Romaji instead of Pinyin.

- Debugging machine translation


There is current lack of support to debug the entire cascaded translation
process.
The underline mark will always be disabled for the first translator.
And in the Test Machine Translation window, only the second translator can be
debugged.

- Offline Japanese => Vietnamese translation.


You can combine a Chinese offline translator with HanViet in VNR to produce
offline
Vietnamese => Japanese translation.
Here are some screenshots for JBeijing, Fastait, and Baidu plus HanViet.

http://i.imgur.com/KJibAwM.png

Lots of text are underlined, which means the translation from Chinese =>
Vietnamese
is ambiguous according to VietPhrase.
The underline option can be disabled in Preferences/Shared Dictionary.

Additionally, VNR also supports offline English-Chinese translation through


Dr.eye.
Combining Dr.eye with HanViet might produce offline English-Vietnamese
translation.

Note: If you have blocked Chinese in Preferences/i18n, no Chinese translators


would show up.

+ State-of-art of Chinese translators


If you would like to try using Chinese as the intermediate language, here are
a summary
of Chinese translators supported by VNR:
1. Baidu.com: The best online Japanese-Chinese translator.
2. JBeijing: The best offline Japanese-Chinese translator, but it is not
free.
3. FastAIT: The best free offline Japanese-Chinese translator, but it is
slow.
4. Dr.eye: The Japanese-Chinese translation quality is not good.
But it supports offline English-Chinese translation.

+ About Chinese variants


In VNR, zh means Chinese (because 's reading is Zhong).
zh+t means Chinese Traditional or Chinese Taiwan, and zh+s means Chinese
Simplified.
Basically, zhs is mostly used by Mainland China, while zht in Taiwan, Hong
Kong, and all over the world.

VNR will automatically convert different Chinese variants (traditional,


simplified, Japanese kanji) internal.
So, when select Chinese as the intermediate language, it does not matter a
lot whether to use Traditional
Chinese or Simplified Chinese.

Comparison of some sample translations:

Japanese:

Google(vi): Shuang 210 hoc nu chp cc Yuuma-kun. Naa ti


thy...
Infoseek(vi): ShuangTi chp 210 Yuuma-kun c sn. Ti hiu?
Bing(vi): ShuangTi chp 210 Yuuma-kun c sn. Ti thy by
gi...

LEC(en): It's refreshingIf it captures Yuuma-kun, is it 210 yen? I


see.
+ Bing(vi): N c lm miNu n bt Yuuma-kun, l n 210 yn? Ti
hiu.
+ Google(vi): l lm miNu n bt yuuma-kun, n l 210? Ti hiu
ri.
Baidu(zh): 210
+ HanViet(vi): SngYuuma-kun tin cng chim ng ni, 210nht nguyn
m? th ra l th a
+ Google(vi): SngYuuma-kun Raiders sau 210 n? V vy,
ah......
+ Bing(vi): Mt mYuuma-kun Raiders, 210 yn? Oh, Ah......

JBeijing(zh): 210
+ HanViet(vi): SngNu nh tin cng chim ng Yuuma-kun 210nht
nguyn? Th ra l th a
+ Google(vi): Sng Nu Raiders Yuuma-kun 210 trong yn? V vy,
ah......
+ Bing(vi): Mt mNu cc cp Yuuma-kun 210 yn? Oh, Ah......

FastAIT(zh): 210
+ HanViet(vi): Sngnh h Yuuma-kun ni, 210 nguyn m. th ra l th
a..
+ Google(vi): SngYuuma-kun nm bt n, 210 nhn dn t bn. V vy,
ah. ....
+ Bing(vi): Mt mYuuma-kun b tn cng, ti 210 Yuan. Oh, Ah.

btw, JBeijng is not free.


But you might be able to get some help here:

http://tieba.baidu.com/f?ie=utf-8&kw=%E5%96%B5%E7%BF%BB

2/9/2015 MON
[Translation Scripts]
* VNR will enable TAH script made by @riz sensei by default to all Japanese =>
non-CJK-language translation.
This behavior can be disabled in Preferences/Translation.

If you are playing non-Japanese game, or if your language is Chinese/Korean,


then you can ignore that option.
VNR will NEVER apply TAH script if the source language is not Japanese, or if
the target language is Chinese
or Korean, even if the translation script option is enabled.

The translation script tends to normalize Japanese by removing emotional sounds


which usually cannot be
recognized by English translators anyway.
For example, it will turn:

To:

Where the trailing is deleted.

This is never enabled for Chinese/Korean, because can affect the emotion
of the C/K translation and
usually downgrades translation quality if deleted.

2/8/2015 SUN
[i18n]
* VNR UI's language can be different from user language, which can be adjusted in
Preferences.

[Translation Scripts](@errzotl)
* Update TAH script for LEC from @errzotl sensei.

[Shared Dictionary]
* The priority of rules is slightly changed that when the pattern have the same
length,
the language that is more special will be applied first.
For example, given:

1. Yomi (ja=>*): =>


2. Name (ja=>en): => Chloe
3. Name (ja=>ru): =>

Then 3 will be applied before 2, and 2 will be applied before 1.


If the user want to translate Japanese to Russian, then rule#3 will be used,
because 'ru' is more "special" than 'en' and '*'.


A B B

* For name/yomigana rules, VNR will deal with 's (en), (ja), (zh), (ko)
suffices
for CJK and English translations.

For example, given a name definition: Chloe (en) => (zh)


VNR will also translate: Chloe-chan's => for English-Chinese
translation.

And given a name definition: (zh) => Chloe (en)


VNR will also translate: => Chloe-chan's for Chinese-English
translation.

And given a name definition: (zh) => (ko)


VNR will also translate: => for Chinese-Korean translation.

etc.

VNR s

2/7/2015 SAT
[Text Settings]
* Add more text encodings for games.
The underlying encoders being used for different languages are as follows.
- Japanese (Shift-JIS): CP932
- Traditional Chinese: BIG5
- Simplified Chinese: GBK
- Korean: CP949

- Thai: TIS-620
- Vietnamese: Windows-1258
- Arabic: Windows-1256

- Latin (All Western European languages): Windows-1252


- Central and Eastern Europe (Polish, etc.): Windows-1250
- Cyrillic (Russian, etc.): Windows-1251
I don't have games to test these encodings.
If the texts are not displayed properly in the encoding, just let me know!

[Shared Dictionary]
* Translation rules can be specific to more than one translators.

2/6/2015 FRI
[Game Engine]
* Add FocasLens engine to get text in .

* Add Syuntada engine for games made by .


Note: You might need Ntleas to run the game on Windows 7, including Japanese
Windows.
LocaleEmulator might not work.

.
Windows 7 Ntleas

* Text Settings will warn if the scenario thread in the VNR's online database is
unknown
to the current VNR. When it happens, an update of VNR might be needed to
support the game.
VNR
VNR

[Game Information]
* Allow to associate the game with the app on Steam.

[i18n](Korean, @mireado)
* Update VNR's UI translation in Korean made by @mireado sama.

2/5/2015 THU
[Machine Translation](Vietnamese)
* Add an option to display Phin m above Japanese kanji in
Preferences/Translation.

* When there multiple definitions for a Chinese phrase in VietPhrase.txt, VNR


will
underline the translated text. Clicking the translation, and VNR will popup the
alternative Vietnamese translation.

The underline behavior can be disabled in Preferences/Shared Dictionary.

* Add option to display translation alignment between Chinese and Vietnamese


for HanViet translation in Preferences.

2/4/2015 WED
[JBeijing](Chinese, @djz020815)
* djz J

[Game Settings]
* Game text language can be adjusted by clicking Edit on the SpringBoard.
It should be Japanese for a Japanese game, English for an English game, etc.
SpringBoard
etc.
[Machine Translation](Vietnamese)
* VNR's HanViet translator will use VietPhrase.txt from QuickTranslatorTAO
to translate Chinese to Vietnamese.

A screenshot is as follows:

http://i.imgur.com/kL6cxUv.png

Note: If you are playing a traditional Chinese game such as NEKOPARA, the
language
in Text Settings must be set to Chinese instead of Simplified Chinese so that
VNR will convert Traditional Chinese characters to Simplified Chinese.
Otherwise, Traditional Chinese characters might not be recognized by HanViet.

* HanViet translator will also apply translation rules in the Shared Dictionary.
As a result, a Japanese name in the Chinese translation will be translated to
Romaji
instead of Phin m if there are name/yomi rules defined in the Shared
Dictionary.

* Add an option to display Phin m above Chinese texts in


Preferences/Translation.

2/3/2015 TUE
[Windows 10]
* Fix the issue that VNR would crash on Windows 10 build 9926.
VNR win10

2/2/2014 MON
[Game Engine]
* Add new 5pb text engine for Re;Birth1.
Note: If you are playing an English version, don't forget to change the
language in Text Settings to English.

Re;Birth1

[Machine Translator](Korean)
* Support English-Korean translation alignment for Naver.com.

2/1/2015 SUN
[Shared Dictionary]
* Add a case-insensitive option to the translation rules.

[Game Launch]
* Fix an issue that VNR sometimes is not able to recognize the game when launched
with Locale Emulator, or in a symbolic link directory, or from a network
location.
VNR

* Game can be launched in non-Japanese locale.


This might be helpful if you want to play a non-Japanese game.

For half-translated games with hybrid languages, I am not sure which locale to
use.
According to my experience:
- If it is a Japanese game half-translated to English, Japanese locale might be
used.
- If it is a Japanese game half-translated to Chinese, Chinese locale might be
used.
For other language pairs, I am not sure.

For Chinese games, be careful if it is in Traditional Chinese or Simplified


Chinese.
Usually, fan-patched games are in Simplified Chinese;
while officially translated games are in Traditional Chinese.


-
-

1/30/2015 FRI
[OCR]
* Fix a bug that HTML tags could mess up the OCR translation popup.
OCR HTML

[Shared Dictionary]
* There are now two language properties for a translation rule:
- Source language (From):
The language of the original text, i.e. Japanese for a Japanese game.
- Target language (To):
The language the user want to translate to.

The target language is the same as the old language property.


If you are playing a Japanese game, just put source language as Japanese, and
everything is the same as before.

If you are playing a non-Japanese game (English, or Chinese, etc.), you can
create translation rules specific for that source language.


- To: VNR
- From:


From

[Game Engine]
* Update KiriKiriZ engine to work with .

btw, since this version, KiriKiri stopped using GDI function to draw text by
default.
The traditional way to find KiriKiri hooks by backtracking callgraph to GDI
APIs no longer works.
As a result, I do not have a portable way to hook to KiriKiriZ games anymore.
VNR's game engine might keep becoming outdated whenever KiriKiriZ
implementation is changed.

KiriKiriZ
djz020815 sensei

1/28/2015 WED
[Wine]
* Fixed a bug that caused LEC translation fail to work on Wine.
1/26/2015 MON
[Machine Translation]
* Google/Bing/Infoseek translation can also display the alignment between the
translation
and the original text.
With Google/Infoseek, the alignment works for any supported language pairs.
With Bing, only Japanese to English/Korean translations can be aligned.

[i18n](Korean, @mireado)
* Update VNR's UI translation in Korean made by @mireado sama.

1/25/2015 SUN
[Machine Translation]
* Add an option to display mapping of translations for Baidu.com/Naver.com.
VNR will display the original text above the translation except for those
modified by the Shared Dictionary.
A screenshot is as follows. It can be enabled/disabled in
Preferences/Translation.

http://i.imgur.com/6Zf5XTw.png

VNR Baidu Naver


VNR
/

* I temporarily disabled Japanese syntax-based translation.


I will enable it later after I finish implementing this feature.

1/24/2015 SAT
[Translation Scripts](English, @errzotl)
* Update TAH script for LEC from @errzotl sensei.

[Machine Translation](English)
* Share translation rules (Shared Dictionary and TAH script) between offline LEC
and online LEC translators.

* Handle jittering for non CJK languages (such as English) as well.


For example, given:
=> I am sorry!
Then:
=> I, I am sorry!

You might not observe such translation for LEC/ATLAS though, since @errzotl's
TAHScript tend to delete dangling sounds such as "".

* I dropped the old translation mechanism for non-CJK languages (such as


English),
and changed to use the same mechanism as CJK.
Using the new system for English, it is now possible to observe changes made
by the Shared Dictionary for ouput/translation/name/yomi/suffix rules.

A screenshot is as follows, where the changes are marked with underline.


Click the underlined text and VNR will show the term that causes the changes.

http://i.imgur.com/uWnRBkD.png

If you are speaking Chinese/Korean, you can ignore the following long texts,
as it is already how CJK translation works since the first version of VNR.

For example, given a yomigana definition in the Shared Dictionary:

=> (ID=12345)

If I want To translate the following sentence to English using LEC:

In the old VNR, the translation pipeline is like this:

=> Apply Shared Dictionary


Yuuma-kun

=> Send to LEC


If it captures Yuuma-kun, is it 210 yen?

The new translation process is like this, which I called "translation


escaping":

=> Apply Shared Dictionary


SN12345

=> Send to LEC


If it captures SN12345, is it 210 yen?

=> Apply Shared Dictionary again


If it captures {id=12345}Yuuma-kun{/id}, is it 210 yen?

There are a couple of advantages for the new mechanism.

1. It can hide the translation contents from the machine translators.


A machine translator cannot see Yuuma-kun but SN12345.

This prevents translation from messing up the original Japanese text,


which is critical to for Japanese-Chinese translation, because Chinese
translation also consists of kanji.

This will also enable re-translating text where the translation's language
is not the same as the machine translator's output language.

For example, if I want to use ATLAS to translate Japanese to Russian,


I can first use ATLAS to translate Japanese to English, and LEC to re-
translate
English to Russian.
Given a yomigana definition: => =>
I can hide non-English word from being visible to ATLAS in this way.

I will add retranslation support to VNR soon.

2. It can hide non Shift-JIS characters in the translation.


Certain translators such as ezTrans require the input Japanese text to be
Shift-JIS,
which makes it impossible to use simple TAH-like replacement for translation
having
characters not in the Shift-JIS character set.

3. It allows us to track the changes made by Shared Dictionary like in the


screenshot.

While applying translation escaping, VNR currently will avoid escaping full-
width
Japanese punctuations at the beginning/ending of the translation.
For example, given a translation definition in the Shared Dictionary:

=> Yes (ID=5678)

And to translate the following sentence to English using LEC:

VNR's translation pipeline will be like this:

=> Apply Shared Dictionary


SN5678

=> Send to LEC:


SN5678. It is so.

=> Apply Shared Dictionary again


{id=5678}Yes{/id}. It is so.

As you can see, VNR will avoid escaping "" in the end of "Yes".

For details on how it works, please try Test Machine Translation on the
SpringBoard.

[Shared Dictionary]
* VNR will automatically translate after a name or name+suffix.
For example, given a yomigana definition: =
And some suffix definition:

English: => -kun


Korean: =>

Then, VNR will translate "" to:

English: => Yuuma-kun's


Korean: =>

1/23/2015 FRI
[Shared Dictionary]
* You can right click the translation subs to add an Output term to the Shared
Dictionary.

[Game Management]
* VNR does not require valid Text Settings to add a new game to VNR.
To add a game, you can simplify drag/drop the game's executable or shortcut
file,
i.e *.exe or *.lnk, to the SpringBoard like before.
But even if VNR is offline or the game does not exist in VNR's database, VNR
will still add
the game and won't open the Game Wizard anymore.
i.e. You can add WHATEVER game/exe to VNR in this way no matter text hook can
extract texts or not.

This might be helpful if you want to use OCR to extract game text instead of
text hook.

You will have to re-adjust Text Settings if you still need VNR's text hook to
extract text.

Please DO NOT add non-game Windows system process (such as Explorer.exe) to


VNR.
If you do, I might block your IP to access VNR's database depending on the
processes added.

I might totally remove the GameWizard in the future.

VNR
exe lnk SpringBoard

VNR VNR offline VNR

VNR VNR

OCR VNR

VNR

explorer VNR
IP VNR

1/22/2015 THU
[Shared Dictionary]
* VNR no longer downloads entries in the Shared Dictionary that has been disabled
for more than 6 months, which might help reduce same some memory and time.
If you still want to find these disabled entries, you can search them at
sakuradite.com/dict.

VNR

* Input/output/translation/name/yomi entries can be translator-specific.


By default, a translation rule will be applied to all machine translators.
You can now change it to be enabled on specific translator instead.

[Machine Translator]
* Google translation speed improved.
Google

[i18n](Korean, @mireado)
* Update VNR's UI translation in Korean made by @mireado sama.

[Machine Translator](Korean)
* Add Naver.com online translation support for Korean as suggested by @mireado
sama.
Naver can be enabled in Preferences/Translation.

[TTS]
* Add Naver.com online TTS support.
If you are using Online Japanese TTS while playing games, maybe you can try
Naver TTS.

Naver TTS supports less languages (only CJK and English).


But Naver Japanese TTS sounds better, has higher bitrate, voice pitch can be
adjusted,
and it supports both Male/Female voices.

For example, in Voices Settings, if you assign a Male gender to a character,


VNR will use Naver's male TTS to speak out the text.

Naver
TTS Naver TTS

Baidu Naver TTS bitrate


VNR Naver

1/21/2015 WED
[Shared Dictionary]
* Slightly modified the jitter pattern to eliminate xtsu in the middle.
An example is as follows:

=> Chinese:
=> Korean: , !

xtsu

1/20/2015 TUE
[Yomigana](Russian)
* Support converting Japanese kana to Russian alphabet.
The current mapping could be found in the following page:

http://sakuradite.com/wiki/en/Furigana

If you find errors in the mapping, please let me know!

* Add an option to display ruby in Russian for Japanese in


Preferences/Translation.
When selected, for example, VNR will display instead of kawaii above
.

* For yomi typed terms in the Shared Dictionary, VNR will generate names in
Russian
instead of English when a Russian translator is used.

For example, given a yomi term: =>


VNR will then translate => - instead of Yuuma-chan.

btw., If you want to add name translation to the Shared Dictionary, I hope you
can use
Yomi type instead of Name type, so that different languages don't have to have
duplicate
translations for the same set of Japanese names.
On the bottom of the Game Information, there is an Import Name widget that might
help make
creating Yomi names easier.

[Yomigana](Thai)
* I disabled generating names for Thai since the current kana mapping for Thai
seems to be totally wrong.

If you are using VNR to translate Japanese games to Thai, I hope if you could
give me a hand to fix the mapping on the following wiki page:

http://sakuradite.com/wiki/en/Furigana

[Translation Scripts](English/Russian, @errzotl)


* Update TAH script for LEC from @errzotl sensei.

[Machine Translator](Russian)
* Support using LEC to provide offline Japanese to Russian and English to Russian
translation.
LEC will translate to English by default.
You can enable Russian translation by selecting Russian as VNR's language in
Preferences.

Finally, I managed to get this work, which has been obsessing me for two
years ...
I am using the same method as my old post on hongfire two years ago. How time
flies.
After reading assembly for many games, I finally could understand the logic
behind LEC's assembly.

LEC also supports a couple of European languages as well as Chinese and Korean.
I am going to add translation support for other languages supported by LEC when
I have ime.
And I will add an option to use LEC/Google/Bing as secondary translator to re-
translate
LEC/ATLAS English translation/subtitles to other languages, such as Russian and
Vietnamese.

btw., I created a page below for browsing the Shared Dictionary online.
It could be used to look up dictionary entries without opening VNR.
Currently, all entries are read-only on that page.

http://sakuradite.com/dict

1/19/2015 MON
[Game Engine]
* Update old WillPlus engine to work with new Honeybee games.
WillPlus Honeybee

[Command Line]
* As request, add command line options to minimize VNR to system tray after
launch.
You can do it this way:

Library\Frameworks\Sakura\bin\reader.exe --minimize --nosplash


VNR system tray

1/17/2015 SAT
[Shared Dictionary]
* /


* When generating names from yomigana, VNR will remove after the o-column
hiragana.
For example, given = , the generated names will be Satoin/
instead of Satouin/.

The removal will only be applied if there are at least 4 characters in the
yomigana.
For example, () will still be translated to Shou instead of Sho because
the original yomigana has only 3 characters (< 4).

If you don't want VNR to remove , you can use katakana instead of hiragana as
yomigana.
For example, if the yomigana of is defined as instead of
,
then VNR will not remove in the middle.

1/16/2015 FRI
[Game Engine]
* Fix the issue that text hook might stop working for games for Black Cyc, MIO,
etc.
Black CycMIO

* Fix a bug existing for a long time that certain game engine (Malie, PPSSPP,
etc.)
that generating large numbers of text threads might crash VNR with vnrsrv.dll
exception.
MaliePPSSPP thread

1/15/2015 THU
[Shared Dictionary]
* Fixed a bug that sometimes not all name entries are applied.
Thanks for @djz020815 sensei's report!

* VNR will try to handle jittering Japanese sentences for Chinese/Korean, such
as:

=> Chinese:
=> Korean: , , !

Note that this only works for Chinese/Korean.


For English, I don't have a way to handle this pattern.
So, I add a rule to the Shared Dictionary to delete leading "" instead.

For Chinese/Korean, VNR will identify the jitter in the following pattern:

{{boc}}({{kana}})[]\1
As a result, VNR cannot identify, for example:

Because and are different.

VNR

VNR

1/14/2015 WED
[Web Browser]
* Aero effect is removed which is not portable to different Windows.

1/12/2015 MON
[UI]
* Texts in the inspector at the bottom of views (SpringBoard, Shared Dictionary,
etc.)
are selectable by mouse and copyable using CTRL+C.
SpringBoard inspector CTRL+C

[Shared Dictionary]
* Reduce the time and memory to process large numbers of name entries for machine
translation.

* Fixed a regression that newly submitted rules might not be immediately applied.
bug

* Append a space after English translation term just like Korean.


For example, given two translation rule:
= cute
= girl
Then, "" will be translated to "cute girl" instead of "cutegirl",
where a space will be inserted in the middle.

1/11/2015 SUN
[Shared Subtitle]
* Avoid showing duplicate subtitles.
The first-created subtitle will overshadow later duplicates.
Thanks for @s793016 sensei's report!


s793016 sensei

[Shared Dictionary]
* VNR will validate correctness of the entries in Shared Dictionary.
There is a new Check column which shows the possible errors in for the entry.
- When the check value is in green, the entry seems to be OK.
- When the check value is in orange, it is a warning and the entry might be
inappropriate.
- When the check value is in red, it is an error and the entry is definitely
wrong.

The detailed error message can be find the bottom of the Shared Dictionary.
Some sample error messages are as follows:
- Useless error: the entry has no effect and should be deleted
- Parenthesis warning: the regular expression might have mismatched
parentheses/brackets
(This check is not accurate)

You can find all incorrect entries by sorting the Check column.

VNR
table
-
- orange
-



-
-
-
-

1/10/2015 SAT
[Word Dictionary]
* Display term ID in Shared Dictionary.
The ID is a number used by VNR internally to uniquely identify a dictionary
entry.
This number can also be found in the popup when click an underlined translation
text.

If you search an integer, such as 1234, VNR will show the ID=1234 entry.

When create new entry, before saved online, the ID column will display
"Unsaved" in red.

ID
ID

1234 VNR ID=1234

ID

* In the machine translation test, click the underlined text and VNR will popup
the
dictionary entry that causes the change.

VNR

[Shared Subtitle]
* Javascript can be used in [url] for subtitles.
Some examples are as follows. It is still useless, though.
- [url=javascript://growl.msg('hello world")]Click to growl a "hello world"
message[/url]
- [url=javascript://main.showSpringBoard()]Click to open SpringBoard[/url]
- [url=javascript://main.showUser('jichi')]Click to display user information of
@jichi[/url]
- [url=javascript://main.searchDictionary("jichi", "user")]Click to search
dictionary entries made by @jichi[/url]

1/9/2015 FRI
[Word Dictionary]
* Improve dictionary rendering to make it more readable.

[Shared Dictionary]
* When click the underlined machine translation text, VNR will popup to show
the dictionary entry that causes the changes.
Due to technical difficulties, the underline trick only works for the
entries with the follow types and languages:
- Output (all languages, including English)
- Translation (Chinese/Japanese/Korean only)
- Name (Chinese/Japanese/Korean only)
- Yomi (Chinese/Japanese/Korean only)



-
-
-
-

[Shared Subtitle]
* This is kind of useless, but you can now use [url] bbcode in subtitles/danmaku.
For example, given the following subtitle, it will render with underline.
And if user clicks that underlined word, VNR will open the wiki link in the web
browser.

[url=http://ja.wikipedia.org/wiki/][/url]

[url]
VNR
VNR wiki

btw., I am thinking to expose Python/Javascript API though danmaku with bbcode.


For example, maybe, given the following danmaku:

[script=python]environ['hentai'] = 1[/script]

It could be used as a trigger to change the translation environment or whatever


properties of VNR at specific game scene.
i.e. the script will only be executed when the game reaches at specific scene
where the danmaku is submitted.

Or, the script could also be used to create animated danmaku/subtitle, like
this:

[script=javascript]
var self = this;
setInterval(1000, function() {
self.x += 100;
self.color = Qt.rgb(self.x % 255, 0, 0);
});
[/script]

And it might also be possible to use [url] to simulate clickable buttons:

[url="javascript://this.speed=10"]Speedup[/url]

Enabling Python/Javascript in danmaku is quite simple to implement.


But I feel it is still kind of useless.
If you have suggestions to make use of it, feel free to discuss with me!

Javascript Python
VNR hentai

[script=javascript]environment.hentai = true[/script]

script scene

1/7/2015 WED
[ezTrans](Korean)
* Preserve "" in the translation.
Prevent ezTrans XP from replacing "" with "".

[Ruby](Chinese)
* Display tone for Pinyin.

1/6/2015 TUE
[Translation Scripts](English, @errzotl)
* Update TAH script for LEC from @errzotl sensei.

* I wrote some scripts to enable macro support while composing TAH scripts.
I wrote these scripts originally for @riz sensei to improve English translation
quality.
You can ignore the following text if you have never manually written a TAH
script.

The basic idea is that instead of directly writing a TAH script manually,
first write translation rules in one or several files, and then use a Python
script to combine them together to generate a legal TAH script.

My script could be found at Scripts/tahcompile.sh.


It will take several translation scripts with a new macro syntax and generate
a single TAH script.
It will also do syntax checking to the regular expressions in the translation
scripts.
An example could be found at Library/Examples/TAHScript.

[Chinese Variants](Korean)
* Add a toggle in Preferences to use Korean Hanja as Chinese variants.

[Ruby](Korean)
* Add an option to recover hanja for hangul text in Preferences.
For example, given a sentence as follows (which is picked from Korean
Wikipedia):

,
.

VNR is able to recover hanja like this, which mixes hangul with hanja just like
Japanese:

,
.
In this way, it might make it easier to understand for Korean learners who
already know Chinese/Japanese.
A screenshot with hanja and romaja as ruby is as follows:

http://i859.photobucket.com/albums/ab155/jichi/hanja_zps0638299d.png

However, the hanja might not be 100% correct, because the meaning of hangul
could be ambiguous,
whose meaning is usually context-sensitive.
For example, "" in the above sentence can be either "" or "".
When that happens, VNR will pick the hanja at beginning of the word (i.e.
) over the others,
which might be right or wrong depending on the context.
Additionally, due to ambiguity, VNR currently will not guess hanja for
individual hangul.

I will add support of displaying romaja and hanja for Korean to Website Reader
later when I have time.

//
Wikipedia

,
.

VNR

,
.

http://i859.photobucket.com/albums/ab155/jichi/hanja_zps0638299d.png

100%

VNR

VNR

Website Reader

1/5/2015 MON
[Korean]
* Add KS_C_5601 encoding to Text Settings for translating Korean games.
KS_C_5601

[Ruby]
* Add an option in Preferences/Translation to display romaji as ruby for non-
Japanese texts.
This is useless unless you want to play non-Japanese games using VNR.
A screenshot of translation with ruby for Chinese Pinyi and Korean Romaja is as
follows:

http://i859.photobucket.com/albums/ab155/jichi/Ruby_zps6c4331ff.png
/
VNR

1/4/2015 SUN
[Shared Dictionary]
* If you have Microsoft Japanese IME installed, when create new dictionary entry,
the popup dialog will display the guessed kanji of Japanese kana.

* In the bottom of Game Information window, there is a new "Import Name" button,
which might help you add names to Shared Dictionary.
In the name wizard window, it will display all guessed names for the game.

- For non-Chinese languages


You can press "Yomi" buttons to add yomi entries to Shared Dictionary.
As mentioned before, Yomi names will be automatically converted to
English/Korean/Thai
translations.

- For Chinese
You can press "Name" buttons to add name entries to Shared Dictionary.
VNR will automatically guess the Chinese kanji for Japanese names.

-
VNR

* At the bottom of Shared Dictionary, VNR will display Romaji of translation for
all languages
(such as Chinese Pinyin and Korean Romaja) except Japanese and English.
This is useless unless you want to understand dictionary entries in foreign
languages like me.

1/2/2015 FRI
[Forum]
* Display topics of questions and reviews per-game.
VNR

[Proxy]
* If you are blocked by ErogameScape, you can turn on proxy in
Preferences/Internet.
Due to technical difficulties, it currently only works in VNR, not the Website
Reader.
/Internet
VNR Website Reader

* If it is very slow to access Baidu.com, you can turn on proxy in


Preferences/Internet.

/Internet

* Google
Google

[Shared Dictionary]
* Add a "private" toggle in the Create Dictionary Entry dialog as requested by
@Venomg3 sama.

12/31/2014 WED
[JBeijing](Chinese, @djz020815)
* djz J

12/30/2014 TUE
[i18n](Korean, @mireado)
* Update VNR's UI translation in Korean made by @mireado sensei.

12/28/2014 SUN
[Game Engine]
* Do not hijack Lstr functions for games made by Chartreux Inc. (Rosebleu, MORE,
etc.)
It might cause text hook to stop working.
Chartreux RosebleuMORE

[Online TTS](Korean)
* Fixed a bug that Baidu TTS did not speak Korean text.

btw., if you are learning Korean, you could try ezTrans to translate Japanese
eroge to Korean.
Due to the similarity of the two languages especially the pronunciation,
combining with TTS
for Japanese and Korean, it might give you a hand to learn Korean at the same
time.

TTS bug

btw., ezTrans XP
ezTrans
TTS

12/27/2014 SAT
[Game Engine]
* Add LunaSoft engine for .

* Add new YU-RIS engine for .


The old engine might not work and will crash the game on Windows XP.
YU-RIS

* Fixed a bug in Leaf engine which might crash White Album.


White Album bug

12/26/2014 FRI
[Machine Translation](English)
* VNR will capitalize the first letter of a sentence for machine translation.

[Game Engine]
* Add game engine for .
However, the Text Settings have to be re-adjusted every time the game is
restarted.
VNR now will hook to several functions in mono.dll, which might also work for
non-eroge C# games:

MonoString* mono_string_from_utf16 (gunichar2 *data);


mono_unichar2* mono_string_to_utf16 (MonoString *s);
char* mono_string_to_utf8 (MonoString *s);
gchar* mono_utf8_from_external (const gchar *in);
gunichar2* mono_unicode_from_external (const gchar *in, gsize *bytes);
gchar* mono_unicode_to_external (const gunichar2 *uni);

12/25/2014 THU
[Game Engine]
* Add Leaf engine for WHITE ALBUM2 .
WHITE ALBUM2

[Yomigana](Korean, @Reality)
* Fix the errors in the mapping from Furigana to Hangul.
Thanks for @Reality sensei's help!

12/23/2014 TUE
[Game Engine]
* Remove garbage text in HorkEye engine for .

* Add new CatSystem engine for FrontWing games.


The old engine has been broken for a long time.
CatSystem

* Add Mink engine for 3.


My current hook is kind of crappy that it contains a large number of garbage
threads.
If you have a better way to handle Mink games, feel free to let me know!
Mink

[Yomigana]
* Add an option in Preferences/Translation to change position of kanji's yomigana
(such as romaji).
By default, VNR will render big kanji on the bottom, and small yomigana as ruby
on the top.
When that option is toggled, VNR will instead show big yomigana on the bottom,
but kanji as ruby.

This option might be helpful if you are uncomfortable with Kanji but only want
to see Romaji.
Here's a sample screenshot:

http://i859.photobucket.com/albums/ab155/jichi/yomigana_zps1dd31f9f.png

/
VNR
VNR

12/21/2014 SUN
[i18n](Korean, @mireado)
* Update VNR's UI translation in Korean made by @mireado sensei.
12/20/2014 SAT
[Translation Scripts](English, @errzotl)
* Update TAH script for LEC from @errzotl sensei.

[Shared Dictionary](Korean)
* Fixed a bug that might cause translation to become floating numbers.

* Append a space after each Korean translation.


For example, given two names:

= , =

Then, will be translated to " ",


where a space will be inserted in the middle.

[Shared Dictionary]
* Name suffices now support regular expressions and macros.
But please do not use back references in regex suffices, such as:

(abc) => \1

Because this might break the regex names that also use back references.
And if you need regex groups, please use "(?:)" instead of "()".
For example, please use "(?:|)" instead of "(|)".

I am going to clean up the existing suffices in the Shared Dictionary using


regex and macros.
Then, I will delete old non-regex suffices after Two Weeks when most users have
updated VNR.

\1\2\3


VNR

* Add a new Yomi type to the Shared Dictionary for specifying furigana of
Japanese names.
VNR will automatically generate name translation from the furigana into Romaji,
Hangul, or Thai.
Yomi terms have no effect for Chinese translation.

I notice that there are duplicate character names for various languages, esp.
English and Korean.
Such terms might help share name translations between different languages,
and allow me to import character names on Getchu in the future.

For example, given a yomi term in either katakana or hiragana:

VNR will automatically generate the following three names depending on the
language to translate to.

= -- for Korean
= -- for Thai
(ignored) -- for Chinese
= Sakurakouji -- for any other languages including English

I am going to create an UI to let us selectively import Yomi names on Getchu


later,
which might save us from manually adding character names.


VNR
VNR

Getchu

12/17/2014 WED
[Subtitle Sharing]
* Add an alternative way to import/export/edit offline subtitles.
The idea is motivated by the offline subtitles made by @bayooooo sensei for
several games.
For example, you can find the uploaded subtitles forhere,
where the subtitles
are converted from the XML format offline subtitles made by @bayooooo sensei
for VNR.

http://sakuradite.com/game/PRINCESS_LOVER

The new subtitles are expressed in YAML format.


If you don't know YAML, please check: http://en.wikipedia.org/wiki/YAML
YAML is selected as VNR's subtitle format, because it is easy for human to
read.
Here's an example subtitle file to create new subtitles:

# The root item in YAML file is a list of dictionaries.


# The first dictionary describes the global options
- subLang: en
textLang: ja
# The following dictionaries are the subtitles.
- text:
sub: Hello!
- text:
sub: Smell of flower

The web server will compare the uploaded subtitles with the existing ones in
the database.
If there are no existing subtitles for and in the
online DB,
the web server will create two new subtitles for them.
Otherwise, if there are existing subtitles, it will create new *revisions* of
the subtitles,
instead of overwriting the existing ones.

After uploading, the subtitles can be redownloaded, which might look like this:

- subLang: en
textLang: ja
- id: 101
text:
sub: Hello!
- id: 102
text:
sub: Smell of flower

For example, if I want to replace "Smell" by "Fragrance", I can create the


following file
and re-upload it to the server.

- subLang: en
textLang: ja
- id: 102
text:
sub: Fragrance of flower

Here, the "id: 102" part is optional. The following file also works.
But keeping the id will help the server speed up the subtitle comparison
process.

- subLang: en
textLang: ja
- text:
sub: Fragrance of flower

Note that VNR will create a new revision of the subtitle, instead of simply
replacing the string.
The subtitles are saved in a wiki-like way.
In the future, I am going to create UI to allow people to revise/revert to
previous revisions.

Currently, there is a limit of 200 changes that each upload can made to the
existing subtitles.
It is intended to prevent malicious/by mistake sabotage to the existing
subtitles.

After upload, the server will categorize the subtitles into five groups:
- total: it contains all subtitles that are processed
- create: it contains new subtitles that do not exist in the database
- update: it contains subtitles that have modified existing subtitles
- ignore: it contains subtitles that are the same as the existing subtitles
- error: it contains the subtitles that are rejected, and the reject reasons

After uploading the subtitles, VNR will render the them in game in the old
subtitles.
The new subtitles is implemented in very efficient way, which is faster and
takes few memory.
For examples, all Chinese subtitles of PRINCESS LOVER takes only 15MB RAM.

Currently, I haven't finished implementing the support to submit/edit new


subtitles in VNR.
The only way to add/edit subtitles is to upload YAML files.
I am going to implement a new subtitle editing interface to expose revisions of
subtitles later
allowing people to revise and revert changes.
And I am also going to add support to record game text into YAML files to allow
users to create
or edit subtitles offline without opening VNR.

btw., I also created some scripts to manipulate YAML subtitles, which you can
find in Scripts.
- Script/sublint.cmd
This script can check if there are syntax errors in the YAML subtitle file.
- Script/subx2y.cmd
This script can convert existing XML subtitle file to YAML format.
It is intended to help @bayooooo sensei convert his external XML subtitles to
new YAML format.
Please don't use it to convert subtitles already existing in VNR.

I plan to change the subtitle sharing mechanism in VNR to a new wiki-like way.
Because I don't want to break the existing subtitles in VNR, I will first
finish implementing
the new sharing mechanism and then port existing subtitles to the new system.

There are some major differences comparing the organizations of the new and old
subtitles.
- Old subtitle sharing mechanism
Multiple subtitles are allowed for the same text.
One subtitle is saved with one text.
Each subtitle is owned by a user.

Illustration example:
User1 (lang1): text1 = sub1
User2 (lang1): text1 = sub2
User3 (lang2): text2 = sub3

- New subtitle sharing mechanism


Only one subtitle is allowed for the same text per language.
The editing history of each subtitle is saved.
Each change made to a subtitle is owned by a user.

Illustration example:
text1
- lang1
- user1: sub revision 1
- user2: sub revision 2
- lang2
- user3: sub revision 1

Here's an example translation in XML format that might help illustrate the
organization:

<texts lang="ja" gameId="425">


<text time="1418887452">
<content></content>
<sub lang="en" version="3">
<revision version="3" userName="bayooooo" time="1418887533">
<content>Hello!</content>
</revision>
<revision version="2" userName="jichi" time="1418887826">
<content>Hello</content>
</revision>
<revision version="1" userName="jichi" time="1418887819">
<content>Good morning!</content>
</revision>
</sub>
<sub lang="zh-CN" version="1">
<revision version="1" userName="jichi" time="1418887533">
<content>!</content>
</revision>
</sub>
</text>
</texts>

It defines two subtitles in two languages (en and zh-CN) for the same text

for game 425 (game ID of PRINCESS LOVER is 425).


For the en subtitle, there are 3 versions.
User "jichi" first created an initial translation "Good morning!" on
1418887533.
Then, the subtitle was changed to "Hello" on 1418887819.
Finally, another user "bayooooo" modified the subtitle to "Hello!" on
1418887533.

If you have suggestions or concerns for the new subtitle sharing system,
feel free to let me know!


YAML
@bayooooo sensei VNR
PRINCESS LOVER
YAML @bayooooo sensei XML

http://sakuradite.com/game/PRINCESS_LOVER

Wiki

-

-

revise revert revision

VNR

PRINCESS LOVER 15MB

VNR
VNR
Wiki revert changes
YAML

btw, Script
- sublint
- subx2y xml yaml
yaml
Library/Frameworks/Sakura/py/scripts

12/13/2014 SAT
* Proxy to ErogameScape no longer works.

VNR ip
11 VNR 47

12/10/2014 WED
[Machine Translator]
* Fix Bing online translator, which stopped working due to the changes of
Microsoft website.
Bing VNR Bing

12/9/2014 TUE
I put VNR's recent changes in the following page.
If you don't like updates, you can check the changes to determine whether update
VNR.

http://sakuradite.com/app/vnr/changes

VNR
VNR

[JBeijing](Chinese, @djz020815)
* djz J

[Translation Scripts](English, @errzotl)


* Update TAH script for ATLAS/LEC from @errzotl sensei.

[Shared Dictionary]
* VNR now will do incremental update to the Shared Dictionary by default, which
is
much faster and uses less memory and network bandwidth.
VNR

But if the local Shared Dictionary is corrupted for whatever reason,


you can press "Reset" in the update prompt to discard local data and
redownload the entire Shared Dictionary (which will be slower).

12/4/2014 THU
[OCR]
* As requested, add a keyboard shortcut to start/stop monitoring game window to
OCR.
The shortcut can be adjusted in Preferences/Shortcuts.
OCR

[Speech Recognition](Windows XP)


* Selecting audio devices for speech recognition is always disabled on Windows
XP,
as it might hang VNR on startup on certain hardware.
Windows XP
Windows XP VNR

[Game Engine]
* The logic of Majiro2 engine is changed so that it can remove from game
text,
as these would mess up machine translation.

If you are playing Majiro2 games such as and released


this month, you will have to re-adjust Text Settings.
Sorry for the inconvenience!

Majiro2

Majiro2

P.S. BIG5
ChromeSafariFirefox
BIG5 GBK

12/2/2014 TUE
[Game Engine]
* Add 5pb engine forCROSS+CHANNEL Final Complete.
It might also work for other 5pb PSP/PS3 games ported to PC.
CROSS+CHANNEL Final Complete
PC 5pb PSP/PS3

* CalendarMain.exe

11/28/2014 FRI
[Game Engine]
* Add text engine for new Majiro game"".
The old Majiro engine cannot extract text any more and will crash the game on
Windows XP.
"" Majiro
@ sama

[Preferences]
* As requested, add an option to select the location to save game screenshot in
Preferences/Recordings.
/

[Shared Dictionary]
* As requested, add a combobox to select the column to search the Shared
Dictionary.

11/24/2014 MON
[Game Engine]
* Fixed a bug that might crash KiriKiriZ games such asVenusBlood HYPNO.
VenusBlood HYPNO bug

11/22/2014 SAT
[Preferences]
* Add an option to disable auto-hiding the left dock.
This might be useful if you are running VNR on a tablet.
Dock Dock
VNR
@ sama

11/20/2014 THU
* Automatic speech recognition (ASR) is temporarily disabled.
Going to re-enable it after adding offline ASR support.
ASR

* Allow uploading images in the messages.


11/16/2014 SUN
* Update LocaleSwitch to the latest version 1.0.1.1.
Thanks for @867258173 sama's report!

* In Website Reader, make sure Japan-only pages will not be blocked by DMM.
Website Reader DMM

* Add alternative KAGParserEx hook engine for KiriKiriZ games.

11/15/2014 SAT
* Add very primitive support to translate online galgame

using Website Reader. A screenshot is as follows:

http://i.imgur.com/kkVo36l.png

The subtitles can be turned on by clicking the button on the toolbar.

Currently, only machine translation is supported.


Any other features in VNR such as TTS, MeCab, and Shared Dictionary have not
been implemented.
And is the only supported game.
I am planning to allow users to specify the location of the text to translate
using simple
jQuery selectors in the future.
If you would like to have other online games supported, feel free to let me
know!

NoteVNR is using Apple's WebKit to access Internet, which requires QuickTime


to play multimedia.
The online game might not have sound if Apple's QuickTime is not installed.

http://i.imgur.com/kkVo36l.png

Website Reader

TTS
VNR scenario
jQuery

VNR WebKit QuickTime


QuickTime
QuickTime 71MB

11/14/2014 FRI
* Add text hook engine for from .

11/5/2014 WED
* Update TAH script for LEC from @errzotl sensei.

* djz J
by djz 10 J

http://sakuradite.com/topic/220

* Fixed a bug that VNR might crash when EDICT is enabled while clicking Japanese
words to lookup very fast.

11/4/2014 TUE
* Enable context menu for full screen Adobe Flash 10 games.
Adobe Flash Player 10

11/2/2014 SUN
* Support using Google Speech Recognition (SR) online service to extract text
from game audio.
There is a Speech Recognition Tester on the SpringBoard.
You can also enable periodical recognition on the left dock after a game is
launched.
There is also a keyboard shortcut (Alt+R) that can trigger the SR.

By default, the sound is recorded through Microphone, where the quality is low.
If you want to record audio in games, it is better to specify which device to
use in Preferences/SR.
However, on Wine or Virtual Machines (such as Parallels Desktop) where the
emulated sound card
does not support recording, only Microphone can be used to record speech.

The current support is very primitive.


- It requires high-speed Internet access to Google.

- There are no OCR-like customized filters to eliminate BGM behind speech.


The accuracy of the recognition can not adjusted.

- VNR's algorithm is not clever enough to detect when a sentence has finished.
Currently, an audio is divided into sentences by "silence".
But if there is no silence, VNR will keep recording and never do recognition.
You might usually have to manually trigger the recognition (Alt+R)
before/after a sentence.

Google (Speech recognition, or SR)


SpringBoard app
Dock
/ Alt+R

VNR

Wine Parallels Desktop


- Google
/Internet

- OCR BGM

- VNR
VNR
VNR
Alt+R VNR

11/1/2014 SAT
* Fix a bug that the mouse/keyboard shortcuts might stop working after a while.

10/31/2014 FRI
Since so many users were using VNR simultaneously this weekend, VNR's server was
overloaded.
You might experience failure to update VNR's Shared Dictionary and game database
around JST 10:00pm this Friday.

VNR's services are written in Python and Java. I temporarily shut down the Java
server so that
the Python server could serve the large amount of queries to the game database
the Shared
Dictionary normally. But you are no longer to post or register new accounts
online like before.
I am going to fix scalability issue of the current service implementation when I
have time.
Sorry for the inconvenience!

VNR
VNR
VNR VNR Web UI

* Add Adobe Flash Player 10 game engine for Duo from TinkerBell.
TinkerBell Duo

10/28/2014 TUE
* Update TAH script for ATLAS/LEC.
The scripts are from @errzotl sensei, and you can say thanks to him/her at
TAHscript@outlook.com.

10/25/2014 SAT
* Add alternative SiglusEngine that can extract character name thread.
SiglusEngine thread

* VNR no long hooks to GDI functions when the game engine is known to be
sufficient to extract all texts.
This might save some memory and reduce the possible game slowdown caused by
text extraction.

10/24/2014 FRI
* Remove garbage texts for KAGParser and CIRCUS engines so that Share Dictionary
rules to repair text are no longer needed.
Additionally, ITH is extended to allow removing garbage text per game engine.
If you find certain game engine always has similar kind of garbage, feel free
to
let me know!

KAGParser CIRCUS

* Add new KiriKiriZ game engine that can extract character name.

* NK-Frontend.exe VNR

10/21/2014 TUE
* Add a new KAGParser game engine for VenusBlood HYPNO, which uses KiriKiriZ.
The existing KiriKiri1/KiriKiri2 seem to be broken for KiriKiriZ games.
However, the new engine currently cannot extract character name, and the
extracted
text contains "[r]" garbage which requires Shared Dictionary rules to clean-up.

As you known, KiriKiri is a very popular game engine.


If you find a better way to handle KiriKiriZ games, feel free to let me know!

btw., the context menu of VNR still works when KiriKiriZ games enter full
screen.

VenusBlood HYPNO KiriKiriZ


jin70908469 sama

KiriKiriZ VNR

10/20/2014 MON
* Fix a bug in TTS that sometimes only half of the sentence was read.
bug

10/19/2014 SUN
* Use OpenCC instead of Google to convert different Chinese variants.
Add an option in Preferences/Translation/Chinese for selecting default Kanji
variants among
Taiwan Standard Chinese (default), Hong Kong traditional Chinese, and Japanese
Kanji.

VNR's default Chinese UI is changed to use Taiwan Standard Chinese.

OpenCC Google
//

VNR OpenCC

* vnrcli.dll and vnreng.dll are merged into a single vnrhook.dll


If you have anti-virus soft installed, you might have to add that dll onto the
whitelist.

vnrcli.dll vnreng.dll vnrhook.dll


dll

* For certain game engines such as SiglusEngine, VNR no longer disables context
menu
when game enters full screen.
SiglusEngineVNR

10/18/2014 SAT
* Add new SiglusEngine for .

* Bugfix for the correctness of the generated romaji and hangul furigana.

10/17/2014 FRI
* Add variable syntax to VNR's new machine translation system.
It can be enabled in Preferences/Shared Dictionary.

Current, it is still at testing stage.


Please do NOT enable it to translate real-world games except for testing
purpose!!

Regarding the syntax, for example, $x can be used to match any single node in
the syntax tree.
And @x can be used to match a list of any adjacent nodes in the syntax tree.
Here's some example illustrating how it works:

Given a syntax tree: (((( ) ( )) ( )) )


The following replacement will translate at the end of an adjective to ""
in Chinese.
- ($x ) => ($x ) -- $x =
- (($x ) $y) => (($x ) $y) -- $x = , $y =
Here's an example for list variables:
- ((@adj) ) => ((@adj) ) -- @adj = (( ) ( )) and ( ), totally
two nodes

VNR

(((( ) ( )) ( )) )
scalar
- ($x ) => ($x ) -- $x =
- (($x ) $y) => (($x ) $y) -- $x = , $y =
list
- ((@adj) ) => ((@adj) ) -- @adj (( ) ( ))( )
node

((( ) ) ) ( )) ( ))

=>
($vi ) => ($vi )
($adv ) => ($adv )
( ) => ( )
(( ) ) => (( ) )

10/13/2014 MON
* Improve the support for .
VNR can directly play the TTS without launching zunko's program.
I dissembled zunko into C# code and reimplemented the logic using C++.
.NET and clipboard are not needed, and there is no blacklist of H-words.
But currently, the pitch/speed/range of the voice cannot be adjusted like in
zunko.

VNR TTS
.NET H

* VNR's UI is flatter.

10/11/2014 SAT
* Add rUGP2 engine for new series games from .
rUGP2

10/9/2014 THU
* Add support for all VOICEROID+ and VoiceText online TTS.
You can select your favorite TTS in Preferences/Text-to-speech or per-game
Voice Settings.
But the online TTS is relatively slow comparing to the offline version.

VOICEROID+ VoiceText TTS


TTS

10/8/2014 WED
* Add a toggle in Preferences/Translation to convert Mandarin to Yue Chinese.
/

* Display game sizes on the Game Board.


You can also search "GB" for large games >= 1GB, or "MB" for small game < 1GB.
Game Board
GB 1GB MB 1GB

* The texts modified by the Shared Dictionary are underlined by default now.
This could help remove the redundant spaces for Chinese/Korean escape terms.
If you don't like the underline, it can be disabled in Preferences/Shared
Dictionary.
VNR

/

10/7/2014 TUE
* Fixed a severe regression that might crash VNR.
I am very sorry for the inconvenience! m(_ _)m

VNR
m(_ _)m

* Add Baidu TTS. The voice is the same as VW Misaki from Korea, except that
the bitrate is lower than the offline version.
TTS
TTS VoiceText Misaki
TTS bitrate

* Add Bing TTS.


Bing TTS

* The volume and speed for online TTS can be adjusted in Preferences.
TTS

* The pitch for SAPI TTS can be adjusted in Preferences.


Higher pitch will make the voice to sound younger.
SAPI TTS

* You can toggle "Speak -> Original" or "Speak -> Translation" on the left dock
to select whether to read the original game texts or the subtitles.
=> VNR TTS

* Online TTS support for VNR's website reader has not been implemented yet.
VNR TTS

10/6/2014 MON
* The online TTS implementation is switched from Apple QuickTime to native
Windows Media Player (WMP).
If you have a genuine Windows, WMP has already been installed.
So, nothing is required to use the online TTS.

The performance of the online TTS is improved.


You can find the cached TTS audios in MP3 format in Caches/tmp/reader/tts.
The new online TTS implementation is surprisingly very fast. Even as fast as
offline TTS.
And it works both with and without administrator privileges.
I am going to add more online TTS and support for adjusting TTS volume and
speed soon.

TTS Windows Media PlayerWMP QuickTime


Windows WMP

TTS performance
TTS MP3 Caches/tmp/reader/tts
TTS TTS
TTS
TTS TTS

10/4/2014 SAT
* Fixed a cache inconsistency bug for the Shared Dictionary.

* Add a new kind of syntax-based translation terms to the Shared Dictionary.


It might help improve machine translation quality.
Comparing to the old terms which work at Japanese-character level, the new
terms can catch
lexical or syntactical patterns.
You can enable it in Preferences/Shared Dictionary.
The new translation system requires MeCab, CaboCha, and UniDic to work.
All of them are open-sourced libraries and can be downloaded for free in
Preferences/Downloads.

You can ignore the following text if you don't know any Japanese or have never
used the
Shared Dictionary before.

There is a also a Japanese Syntax Tester for debugging the terms.


But currently, the new syntax terms cannot be debugged in the Machine
Translation Tester
(I haven't got time to implemented the support in this tester yet).

Currently, guest account is not allowed to create syntax terms.

As none of the existing machine translators is open-sourced, we cannot have


fine-control
over the translation process, and the machine translation quality is always
bound by
the 3rd-party translator being used.
Though there are Shared Dictionary and TAH scripts, but all of the existing
rules
are context-insensitive lexical-level text replacement, and their capabilities
are quite limited.

My ultimate goal is to a design new rule-based machine translator in VNR based


only on
the community-contributed translation rules in the Shared Dictionary.
The other machine translators will become optional, and only serve as
alternatives
or dictionaries for looking up seldom used words.

The current syntax-based translation system is still very primitive, though.


I guess it might take at least half a year to get every thing done and have
enough translation rules for daily Japanese sentences.

If you have questions or suggestions, feel free to post them to the following
topic.

http://sakuradite.com/topic/471

You can play with the new syntax terms, but please don't extensively add tons
of rules
at the moment. I am going to add more grammar to describe the syntax soon.

Currently, my focus is on Japanese-Chinese translation.


It might also work well for Japanese-Korean translation.
But my current focus is NOT on Japanese-English translation.
The current translation system does not address the challenges in English
translation,
such as how to deal with plurals/articles, which do not exist in
Chinese/Japanese/Korean.
I might come back to think about English and other languages after the
Chinese/Korean
translation support is mostly done.

In the following text, I am going to discuss the new system and the future plan
in my mind.

I. Motivation

Let's start with an example:

If I want to translate, say, =>Hakuusing a Translation term, it will


break .
This problem can be solved in the new translation system.
In the new system, VNR will first construct a Syntax Parse Tree for the
sentence,
as follows:

((( ( )) ( )) ( ))

There are 9 leaves in total: , , , , , , , , and .


These nodes are separated by either " " (space) or "()" (parentheses).
The content in-out of the parentheses are parent-child.
The content next to each other are sibling nodes.
For instance: ( ( )) is the parent of( ), and the grand-parent of
.
And and are siblings.

Additionally, I also have the types of each node, such as if the node is a
noun, name, verb, etc.
The current VNR does not support matching the types of the nodes, though.
Going to add this support soon.

After the syntax parse tree is constructed, VNR will use the syntax terms from
the community
to translate the tree.
The pattern of the term will be used to match any subtree in the Syntax Tree.
If matched, the node will be replaced by the subtree created from the
replacement text.
You can debug this process in the "Japanese Syntax Tester" widget.

For example, will match which used independently, but will not match
.
And won't match , because,will be a single node.

Additionally, nested parentheses can be used to express trees whose height > 1,
such as ( ( )).

Besides, just one to mention that a list with/without parentheses are


different.
and( ) are different.

For example, giving the following two syntax trees:

((((( ) ) ) ( )) ( ))
((((( ) ) ) ( )) ( ))

(without parentheses) will match the nodes in both of the


sentences.
But ( )(with parentheses) will only match the first sentence.

II. Translation workflow

If you know Compiler, the translation process is quite similar to compiling one
language to another:

front-end mid-end
back-end
Japanese sentence => token stream => Japanese parse tree => Chinese
parse tree => token stream => Chinese sentence
(lexical tokenizer) (syntax parser) (translator)
(unparser) (join)
Below is the the actual translation workflow in VNR:

front-end mid-end
back-end
Japanese sentence => word stream => Japanese parse tree => Chinese
parse tree => Chinese sentence
(MeCab+CaboCha+UniDic) (VNR syntax parser) (VNR translator)
(VNR unparser)

Current, our shared syntax translation rules are applied at mid-end (VNR
translator).
Later, I am going to add syntax support for Input/Output terms as well, which
will be applied
to front-end parser and back-end unparser respectively.

After the translation, if VNR has found there are untranslated nodes, VNR will
use the
existing machine translator you have selected, such as Google, to translate the
left
untranslated subtrees.

The order to apply the syntax rules and the other existing types of the terms
are as follows:

Apply input term => Apply general translation term => (Apply syntax
translation terms) => Apply machine translation => Apply output terms

It is done like this which is easier to implement. But it does not make sense.
I am going to change the order to the following one soon.

Apply input term => (Apply syntax translation terms) => Apply general
translation term => Apply machine translation => Apply output terms

III. Future work


The current grammar for the pattern still cannot describe all Japanese syntax.
I am planning to add the following grammars one by one.

Capture variables. Below is a Japanese-Chinese example (I don't know how to


express this in a single English word):
($x ) => ($x ) -- $x represents a single node
($x $y ) => ($x $y ) -- $x and $y represent two different nodes
(@x ) => (@x ) -- @x represents a list of sibling nodes, similar to
@array in Perl
You might know that Japanese is an Agglutinative language.
The above rules can be used to express the trailing in Japanese adjectives.

Types of the words. Japanese-Chinese Example:


($x:noun:name ) => ($x ) -- here, :noun:name means $x must be either a
noun or a name
($x:verb ) => ( $x:verb) -- :verb means $x must be a verb.

Express optional nodes. Example:


($x? ) => ($x ) -- "?" means $x can be optional
( ? ? ?) -- ? and ? can be optional

Integrate regular expressions. Example:


(/[]/ ) -- the text within // is a regular expression
(/[]/:v ) -- the ":v" means the regular expression must be a
verb
($x=/[]/:v ) -- capture the regular expression using $x

Use quotes to escape special characters


$x="English word with space" -- the quotes here is used to escape " "
(space)

Currently, we cannot directly modify the generated parse tree from CaboCha.
I am going to add a new MeCab typed terms that will be compiled into MeCab
user-defined dictionary.
The term will have a weight parameter used to express the expected frequency of
the word.
This might be a way to combine the syntax-based MT with the statistical MT.

If you have other suggestions, for instance, if a Japanese syntax cannot be


expressed
under the current system, feel free to suggest to me.


/
/ MeCabCaboCha UniDic

widget debug
widget debug

Guest

VNR community
J


topic

http://sakuradite.com/topic/471

You can play with the new syntax terms,


I. Motivation

=>,

VNR UniDic Syntax Parse Tree

((( ( )) ( )) ( ))

9 leaves""

sibling
( ( ))( )


VNR

VNR subtree
VNR subtree
widget

( ( )) parse tree
=2 subtree

( )
syntax tree

((((( ) ) ) ( )) ( ))
((((( ) ) ) ( )) ( ))


( )

II. workflow

compiler

front-end mid-end
back-end
Japanese sentence => token stream => Japanese parse tree => Chinese parse
tree => stream => Chinese sentence
(lexical tokenizer) (syntax parser) (translator)
(unparser) (join)

VNR

front-end mid-end
back-end
Japanese sentence => word stream => Japanese parse tree => Chinese parse
tree => Chinese sentence
(MeCab+CaboCha+UniDic) (VNR syntax parser) (VNR translator)
(VNR unparser)

mid-end VNR translator


InputOuput
front-end back-end parser unparser

VNR VNR

=> => () => =>


make sense

=> () => => =>

III. Future work




capture
($x ) => ($x ) -- $x
($x $y ) => ($x $y ) -- $x $y
(@x ) => (@x ) -- @x a list of Perl array
(Agglutinative language)


($x:noun:name ) => ($x ) -- :noun:name $x
($x:verb ) => ( $x:verb) -- :verb $x


($x? ) => ($x ) -- ?$x
( ? ? ?) -- ??


(/[]/ ) -- // Perl JavaScript

(/[]/:v ) -- //
($x=/[]/:v ) -- $x capture


$x="English word with space" -- VNR

parse tree MeCab


MeCab parse tree
MeCab syntax-based MT statistical
MT

10/2/2014 THU
* djz J 141001
qq djz J

330102505@qq.com

* Reduce VNR's memory usage by 70MB by adding __slots__ to Python classes.


VNR

9/30/2014 TUE
* The types of the terms in the Shared Dictionary are slightly changed.
You can ignore the following text if you have never used it before.

+ For Chinese and Korean


Nothing has been changed except the names of the term types, as follows:
- Translation: the same as "Escape" -- the translation will be escaped
before/after the machine translation.
- Input: the same as "Japanese" -- used to repair the Japanese text
before applying machine translation
- Output: the same as "Translation" -- used to repair the Chinese/Korean
text after applying machine translation
- Name: the same as "Chara" -- Japanese names, such as
- Suffix: the same as "Title" -- the titles after Japanese names,
such as
- Game: the same as "Original text" -- used to repair the text extracted
from the game
- TTS: not changed -- used to repair the text before
applying TTS
- OCR: not changed -- used to repair the text after
applying OCR
- Macro: not changed -- reusable regular expression patterns

+ For any other languages including English


1. The "escape" type is removed
2. A new "translation" type is added, which is the same as the old "Japanese"
terms
3. The names of the terms are changed, as follows:

- Translation: the same as "Japanese" -- the same as the old "Japanese" type,
different from Chinese/Korean

- Input: the same as "Japanese" -- (the same as Chinese/Korean)


- Output: the same as "Translation" -- (the same as Chinese/Korean)
- Name: the same as "Chara" -- (the same as Chinese/Korean)
- Suffix: the same as "Title" -- (the same as Chinese/Korean)
- Game: the same as "Original text" -- (the same as Chinese/Korean)
- TTS: not changed -- (the same as Chinese/Korean)
- OCR: not changed -- (the same as Chinese/Korean)
- Macro: not changed -- (the same as Chinese/Korean)

The "Translation" terms should be used to translate Japanese to English or


any other Latin languages.
The "Input" terms should be used to translate Japanese to Japanese.

Currently, the "Translation" and the "Input" terms are handled the same way
for Latin languages,
both of which are equivalent to the old "Japanese" terms.
But they will be handled differently soon in the future version of VNR.

If you would like to add new rules to the Shared Dictionary, I hope if you
could distinguish
"Translation" and "Input" types. For example:
- to transform "" to "I", "Translation" should be used
- to transform "" to "", "Input" should be used

Let's wait for two weeks until most people have updated to this version of
VNR.
And then I am going to revise the Shared Dictionary to distinguish
Translation from Input type
for old terms in Latin languages.

- : --
- : --
- : --
- : --
- : --
- : --
- : -- TTS
- : -- OCR
- : --

9/28/2014 SUN
* Fixed a severe bug that OCR might stop working when the inserting space option
is enabled.
Sorry for the issue!
OCR

9/27/2014 SAT
* Modify the ScenarioPlayer engine to support new games.

* Fix the ApRicoT engine to support this month.


9/26/2014 FRI
* The text processing using the Shared Dictionary is reimplemented using C++ with
Boost.Regex.
It is more powerful, much faster (time < 0.01 second) and using less memory
(about 20MB for 20k rules).
If you have never used the Shared Dictionary before, you can ignore the
following text.

The major changes about the Shared Dictionary are as follows:

+ VNR no longer processes the Shared Dictionary on the startup any more.

+ VNR won't process the Shared Dictionary until the first time you use it, such
as
when a sentence is translated, or when TTS is triggered.
The bad thing is, for example, that the first machine translated subtitle
will not
use the Shared Dictionary, and the translation quality might be bad.
But after that, the follow-up translations will be processed by the Shared
Dictionary.

+ After the first time the Shared Dictionary is used, you can find the enabled
text replacement
rules in the following directory:

Caches/tmp/reader/dict

VNR will rebuild the cache there whenever the Shared Dictionary is modified,
or the current
game is changed, or your language is changed.
You can also open that directory by pressing the "Browse" tool button in the
Shared Dictionary.

+ The regex library used in the Shared Dictionary is changed from Python.re to
Boost.Regex.
Boost's implementation is a superset of Python's and is more powerful, which
supports
recursive syntax. More details about Boost.Regex's syntax could be found in
the following pages.

http://www.boost.org/doc/libs/1_56_0/libs/regex/doc/html/boost_regex/syntax.html

http://www.boost.org/doc/libs/1_56_0/libs/regex/doc/html/boost_regex/syntax/perl_sy
ntax.html

I haven't explored all available features in boost.regex yet.


But here are some usage examples of the recursive syntax "(?+-N", which might
be interesting:

- Multiple replacement. For example:

(?:()|()|()) => Kaoru-(?1chan)(?2san)(?3kun)

The above rule could translate "" to Kaoru-chan, "" to Kaoru-


san, and
"" to Kaoru-kun at the same time.

- Conditionals. For example:

() => Kaoru-(?1chan:san)

The above rule will translate "" to "Kaoru-chan", and " otherwise"
to "Kaoru-san otherwise"

+ Boost is intentionally not compiled with ICU so that regex is not aware of
unicode characters.
For instance:
- "\s" will match ascii spaces, but won't match \u3000.
- :digit: only matches ascii [0-9], and won't match "", "", "", etc.

C++ Python.re Boost.Regex



+ VNR

Caches/tmp/reader/dict


VNR Caches

+ VNR TTS
Caches Caches 1

+ Boost.Regex Python.re

http://www.boost.org/doc/libs/1_56_0/libs/regex/doc/html/boost_regex/syntax.html

http://www.boost.org/doc/libs/1_56_0/libs/regex/doc/html/boost_regex/syntax/perl_sy
ntax.html

9/23/2014 TUE
* Dictionary lookup was moved to threads.
When "Popup when hover" is enabled, it won't block GUI any more.
GUI

9/22/2014 MON
* Disable the keeping spaces option in Text Settings for Japanese/Chinese games.
It does not make sense to keep spaces for these languages.

VNR

9/21/2014 SUN
* Bypass the issue for embedding Chinese translations where Kanji becomes "?".

VNR
BGI

http://sakuradite.com/images/screenshots/sekai_bgi2_zh.jpg
http://sakuradite.com/images/screenshots/sekai_bgi2_choice_zh.jpg


sama

9/20/2014 SAT
* Fix a bug that might crash the Elf engine on Windows XP.
Thanks for @goodboyye sama's report!
Elf Windows XP

* SAPI TTS is moved to a different thread so that it won't block GUI.

9/18/2014 THU
* The mouse hotkey to select OCR region can be changed in Preferences (default is
SHIFT).
OCR SHIFT

* Bugfix for the hue calculation in OCR filter.


OCR

* Add support for Kingsoft FastAIT that is a free Chinese offline translator.
You can use it to re-translate Chinese-translated VNs to English if you want.
It can be downloaded here for free:

http://ky.iciba.com (534MB after installation)

It does not contain any nasty ads like Baidu products. So, feel free to use.

J
J

+
-
- translate as it is

- J VNR
- VNR
- Dr.eye
youorz

+
-


x2 3
*** VNR ***
galgame or not

trickyDLL reentrant
key



--



--



--
--
-- exact

9/16/2014 TUE
* Add a new Macro type to the Shared Dictionary.
You can ignore the following text if you don't know Japanese.

Macro terms will be used to replace regular expression patterns.


For example, I defined the following macro to express the beginning of a
sentence.

bos => (?:^|(?<=[]))

Then, you can use it like this to capture "" at the beginning of a
sentence:

{{bos}}

The text within {{}} will be replaced by macros. This only applies to regex
patterns.

btw., we can filter certain types of the terms in the Shared Dictionary.
If we search "Macro", all macro terms will show up.

You can name the macro in whatever way you like.


But let's make some conventions so that it is easier to understand each other's
macros.
For example, I want to define some macros to match all , and I did it this
way:

:hira: => - -- use a pair of ":" to represent a character set,


just like :digit: in regex.
hira => [{{:hira:}}] -- express positive predicate by default
!hira => [^{{:hira:}}] -- use leading "!" to represent negative predicate

You can also name the macro as, say, KiriKiriRemoveRepeat, or


kiri_remove_repeat, etc.
If you need intermediate tmp macros, you might give it a name starting with
"_".

bos

bos => (?:^|(?<=[]))

{{bos}}

{{}}

btw,


convention macro

:hira: => - -- ":":digit:

hira => [{{:hira:}}] --


!hira => [^{{:hira:}}] -- !

KiriKiriRemoveRepeat, or kirikiri_remove_repeat
_

9/15/2014 MON

VNR google

* OCR operations are moved to threads so that the GUI won't get blocked while
analyzing images.
OCR

9/14/2014 SUN
* When the underline option in Shared Dictionary is enabled, character names
defined by Chara terms
for Kanji-based languages (Chinese, Korean, etc.) will also be underlined.
Due to technical difficulties, character names of Latin-based languages such as
English will not be underlined.

* Add global keyboard shortcuts for taking snapshot as request.


as request

* Add more image filters for OCR, mainly filters for HSI color model.
- Usually, if the font color is always white/black, the "I" (intensity) filter
might be sufficient.
- Otherwise, if the font is in a single color, the "H" (hue) might help.
- The worse case, if the font color usually changes, but always in a pure
color, the "S" (saturation) might help.

You can find the formulation of these terminologies here:

https://en.wikipedia.org/wiki/HSL_and_HSV#Lightness

- Additionally, if the game text is extremely large/small, then the "Z" (zoom)
filter could be used.

OCR
-
-
-
-

9/13/2014 SAT
* Add an option to underline the modified text by escape or translation terms in
the Shared Dictionary.
The changes that made by Japanese terms are not marked, which might sacrifice
the translation quality
in order to implement the marks.
You don't have to bother this unless you are actively editing the Shared
Dictionary.

* Fix a bug existing for a long time that the subtitles are sometimes displayed
below the game window.
bug

* Add a Desktop button to the game OCR dock.


By default, VNR will only capture images in the game window for OCR.
However, certain images might not be captured this way, such as MPEG videos.
When that happen, you can toggle the Desktop button so that VNR will capture
the entire visible desktop to make sure the images are visible.

btw, when the "Desktop" button is enabled, the OCR region can also track other
windows outside of the game, such as anime subtitles in video players.
Here's a screenshot of the captured subtitles on Youtube:

http://i859.photobucket.com/albums/ab155/jichi/youtube_zpscd6bf9cb.png

However, currently, one game has to be launched in VNR in order to capture


the video players, which is very inconvenient.
I am going to create an independent app for OCR videos in the future.

OCR
VNR MPEG
VNR

btw, VNR OCR


Youtube

http://i859.photobucket.com/albums/ab155/jichi/youtube_zpscd6bf9cb.png

VNR
VNR OCR

9/12/2014 FRI
* Able to select OCR regions where VNR will periodically capture the image and
extracing text in them.
I hope if this could serve as an alternative text extractor when the game does
have supported game engines.

A screenshot is as follows:

http://i859.photobucket.com/albums/ab155/jichi/ocr-region_zps009469c1.png

(Note that does have an EXP game engine, and it does not need
OCR to work.)

As you know, by default, you can Shift+Mouse to select one region for instant
machine translation.
After launching the game, there is a new OCR button on the left dock which
contains two sub buttons.
- Edit: The new Shift+Mouse region will become persistent.
- Monitor: Monitor the persistent regions and periodically extract texts in
them.
The interval of the capturing can be adjusted in Preferences/OCR.

The region can be both resized and moved.


There are current three buttons on the top-left of the persistent regions:
- : Permanently destroy the region.
- : Temporarily enable/disable the region.
- : Edit the image filtering option for the region.
Comparing to ITH, the texts from OCR are slower and more unreliable.
It is still better to stick to ITH if it works.

The subtitles and danmaku are temporarily disabled for OCR texts as they are
unreliable.
I will turn them on after I finish implementing all the image filters for OCR.

It also works for full-screen games, but context menu will be disabled as
usual.

Currently, this feature cannot be enabled unless a game is launched.


I will move this feature out of VNR into a standalone application in the
future.

OCR
VNR OCR

http://i859.photobucket.com/albums/ab155/jichi/ocr-region_zps009469c1.png

EXP OCR

OCR
OCR
- Shift+ OCR
- VNR

OCR CPU VNR


OCR

OCR focus

OCR OCR

VNR VNR

9/10/2014 WED
* Update the TAH script for LEC from @errzotl sensei.

* djz J
qq djz J

330102505@qq.com

9/9/2014 TUE
* I made a wiki as follows for what to do if you cannot find correct text in the
game.

http://sakuradite.com/wiki/en/VNR/Game_Settings

The above link can also be found in Text Settings.


Sometimes, the game settings has to be adjusted in order to work with VNR,
such as changing Text Speed to fastest or changing Text Font to MS Gothic.
You can find these game-specific information on that page.

wiki MS
Gothic

http://sakuradite.com/wiki/zh/VNR/Game_Settings

9/8/2014 MON
* Add TAH script for LEC online/offline Japanese-English translation.
The script is from @errzotl sensei, and you can say thanks to him/her at
TAHscript@outlook.com.

* Add EXP engine for released last month.


* Add an option to select the range of the color intensity to identify the target
text.
This might help eliminate irregular colorful background behind the target text.
A screenshot is as follows.
Windows native UI widgets (buttons, text editors, etc.) are not used so that it
could work with
full screen games.

http://i859.photobucket.com/albums/ab155/jichi/VNROCRColorIntensity_zps48f059b6.png

Let's say, if the selected range is from 30% to 70%.


Then, only the pixel whose color satisfy the following logic will be identified
as "text".

function isTextColor(color) {
var intensity = sqrt(color.red*color.red + color.green*color.green +
color.blue*color.blue);
var min = 0.3 * 255 * sqrt(3);
var max = 0.7 * 255 * sqrt(3);
return min <= intensity && intensity <= max;
}

The OCR support is still under construction.


I am going to create a help page on the wiki regarding how to use OCR in VNR
later after I
finish implementing all the OCR features in my mind.

OCR

http://i859.photobucket.com/albums/ab155/jichi/VNROCRColorIntensity_zps48f059b6.png

9/7/2014 SUN
* Make sure OCR works for Direct X and full screen games.
OCR

9/6/2014 SAT
* OCR text boxes will follow the position of the first-clicked window.
OCR

* Add multi-language support for OCR.


Some screenshots are shown below.
It will take 61MB after installation.
If you already have MODI OCR installed from the old VNR, please RE-DOWNLOAD
MOD OCR from VNR's mega repo, then check Readme.txt for how to update.
Sorry for the inconvenience!

Japanese: http://sakuradite.com/images/screenshots/ocr_wiki_ja.png
English: http://sakuradite.com/images/screenshots/ocr_wiki_en.png
Korean: http://sakuradite.com/images/screenshots/ocr_wiki_ko.png
Russian: http://sakuradite.com/images/screenshots/ocr_wiki_ru.png
Chinese: http://sakuradite.com/images/screenshots/ocr_wiki_zh.png

OCR
OCR 61MB
VNR MODI OCR Mega OCR
Readme.txt

Since there are currently so many languages in VNR, some of the languages
supported by MODI are not enabled in VNR.
If you need support certain languages that are disabled, feel free to let me
know.

Enabled MODI Languages and Locales in VNR


- 1028: Chinese - Republic of China (Taiwan)
- 1029: Czech - Czech Republic
- 1031: German - Germany
- 1033: English - United States
- 1036: French - France
- 1040: Italian - Italy
- 1041: Japanese - Japan
- 1042: Korean - Korea
- 1043: Dutch - Netherlands
- 1045: Polish - Poland
- 1046: Portuguese - Brazil
- 1049: Russian - Russia
- 2052: Chinese (Simplified) - People's Republic of China
- 3076: Chinese - Hong Kong (S.A.R.)
- 3082: Spanish (Modern Sort) - Spain

Disabled MODI Languages and Locales in VNR


- 1030: Danish - Denmark
- 1032: Greek - Greece
- 1035: Finnish - Finland
- 1038: Hungarian - Hungary
- 1044: Norwegian (Bokml) - Norway
- 1053: Swedish - Sweden
- 1055: Turkish - Turkey

9/5/2014 FRI
* Add Felistella engine for PSP game Summon Night 5.

9/4/2014 THU
* TAH script is changed to be ATLAS only, only for Japanese-English machine
translation.
TAH script is also updated to the latest version from @errzotl sensei.
Please report bugs to TAHscript@outlook.com.

8/31/2014 SUN
* Add a shared window for leaving messages.
When new messages are received, the message button will flash.
You can discuss everything there EXCEPT DISTRIBUTING PIRATE SOFTWARE AND GAMES!

8/30/2014 SAT
* Add zoom buttons to the header of the text boxes.
-+

8/29/2014 FRI
* Add support for PPSSPPEX.exe and PPSSPPSP.exe that is the same as
PPSSPPWindows.exe.

8/28/2014 THU
* I changed the mouse behaviors of the text boxes (subtitles, dictionary, OCR,
etc.)
- Drag the center of the box: vertically scroll the text
- Drag the top/bottom border: move the text box
- Drag the left/right border: horizontally resize the text box
It is the same as adjusting the width in the left dock.

OCR

8/26/2014 TUE
TAH

I disabled 99.999% of the TAH scripts and changed them to be for English
translation only.
You can revert my changes here:

http://www.sakuradite.com/wiki/en/VNR/Translation_Scripts

To be honest, I don't know why lots of people love these rules.


To me, TAH is far too aggressive that it will remove the EMOTIONs and
kawaii/ecchi sounds
from Japanese, which can be at least recognized by All online/offline Chinese
translators.
I don't know how bad the existing English translators are, and I have no idea
whether
non-ATLAS English translators such as Google can recognize the TAH deleted
structures or not.

One example of the Japanese before/after applying TAH is here:

http://sakuradite.com/upload/image/396.jpg

TAH scripts will turn


to

The ecchi voices such as "" were removed.
The emotional sentence such as "" was rewritten to plain
Japanese "" where the emotion is lost.
As a result, after applying TAH, the Chinese translation become much much much
worse.
Currently, all TAH rules are still enabled for English by default.
But I am not maintaining it for English, and I don't know whether it will make
the
English machine translation better or worse.
I suggest you to try enabling/disabling TAH based on your own judgment.
If you feel TAH is usually making the English translation better or worse, I hope
if you could let me know your option. Thanks!

* Bugfix when applying name and title terms in Shared Dictionary.

8/25/2014 MON
* Fixed the OCR bug. Sorry for the inconvenience! m(_ _)m
OCR m(_ _)m

* Add a TTS button to read OCR text.


Note that currently only Google TTS and Voiceroid work.
SAPI TTS does not work when VNR is launched as Administrator.

OCR
SAPI TTS Google TTS Voiceroid

* Reduce memory usage for network access to online machine translators.

8/23/2014 SAT
* VNR
VNR
ITH

* VNR will cache all online machine translations to Library/Translations using


SQLite.
VNR Caches/Translations.

* Rewrite VNR's internal network access to use QtNetwork to replace Python


requests that is slow.
Online machine translation is faster now.

8/21/2014 THU
* Fixed a bug that OCR might stop working after a while.
OCR bug

8/19/2014 TUE
* Fix the NEXTON engine for .
Normad

* Fix the OCR selection bug.


Thanks so much for 1dat1 sensei's patch!!
OCR Bug 1dat1 sensei

* VNR will popup confirmation if you want clone other's terms in the Shared
Dictionary.
You don't need clone others' the terms to enable them. They have already been
enabled.
Cloning will result in duplicate rules which will make it more difficult to
manage the rules.

VNR

* Forbid adding terms whose pattern and translation are the same except for
escaped terms.
Having pattern == translation is meaningless except for escaping.

8/18/2014 MON
* Bugfix for OCR.
I forgot to register DLLs for MODI OCR.
If you would like to try OCR, you can either re-download MODI OCR (36MB) and
re-run the scripts here:

https://mega.co.nz/#F!g00SQJZS!pm3bAcS6qHotPzJQUT596Q

Or, if you don't want to re-download, you can manually run the following
commands AS ADMINISTRATOR:

regsvr32 "C:\Program Files (x86)\Common Files\Microsoft


Shared\MODI\12.0\MDIVWCTL.DLL"
regsvr32 "C:\Program Files (x86)\Common Files\Microsoft
Shared\MODI\12.0\MSPCORE.DLL"

Please remove x86 if you are on a x86 Windows.

OCR DLL
OCR MODI OCR36MB

https://mega.co.nz/#F!g00SQJZS!pm3bAcS6qHotPzJQUT596Q

regsvr32 "C:\Program Files (x86)\Common Files\Microsoft


Shared\MODI\12.0\MDIVWCTL.DLL"
regsvr32 "C:\Program Files (x86)\Common Files\Microsoft
Shared\MODI\12.0\MSPCORE.DLL"

x86 32 Windows

8/17/2014 SUN
* Add an OCR type to the Shared Dictionary for correcting OCR text, which is not
accurate.
OCR OCR

* Add support of Ntleas for changing locale.


You can get it here:
http://ntlea.codeplex.com
Ntleas

* Restore the support of using Locale Switch to change game locale.


You can turn it on in Preferences/Launch, which requires admin privileges.
Locale Emulator is better in most cases.
But if Locale Emulator does not work, you could also give LocaleSwitch a try.

Locale Switch /
Locale Emulator
Locale Emulator LocaleSwitch

* Add alternative NEXTON engine for old NEXTON brands such as Nomad.
Nomad

8/16/2014 SAT
* Add very primitive OCR support.
A screenshot of 's Config UI with OCR popup and translations are as
follows:

http://sakuradite.com/images/screenshots/ocr_popup.jpg

You can press Shift+Mouse to select an area, and VNR will popup translation in
the selected rectangle.
You can enable it in Preferences/OCR.
It could work without launching games.
It might be used to identify texts in games as well as anime, manga, websites,
or any other texts on the screen.

REQUIREMENTS
- You must have Microsoft MODI OCR installed.
You can either purchase Microsoft Office 2007 and manually enabled it, or get
it from here:

https://mega.co.nz/#F!g00SQJZS!pm3bAcS6qHotPzJQUT596Q

Currently, it is only 36MB, and only Japanese/Chinese fonts are included.

LIMITATIONS
- VNR must be launched as Administrator to make MODI OCR work.
The trade-off is that several features (including SAPI TTS) will not work
when VNR is launched as admin.
- Currently, only machine translation works.
TTS, , and popup dictionaries including EDICT and EPWING are not
implemented yet.
- Currently, no settings can be adjusted for OCR.
You cannot specify the target text color, size, and orientation which are
critical to enhance OCR accuracy.
As a result, irregular texts (fat, large, outlined), texts on the fancy
background, and vertical texts
can not be correctly identified.

MODI OCR
Config OCR

http://sakuradite.com/images/screenshots/ocr_popup.jpg

/ OCR
SHIFT+
OCR

MODI OCR idea OCR


hhyjq007

MODI OCR
Office 2007 MODI OCR

https://mega.co.nz/#F!g00SQJZS!pm3bAcS6qHotPzJQUT596Q
36MB

VNR OCR
- OCR VNR
- EPWING TTS

- OCR orientation
OCR

8/15/2014 FRI
* Add support to use TA Helper replacement scripts to improve machine translation
quality.
The current version is modified from @errzotl sensei 's 0.16 version.
The TAH scripts are equivalent to VNR's Japanase terms in the Shared
Dictionary.
VNR will automatically update the scripts on the following wiki:

http://sakuradite.com/wiki/en/VNR/Translation_Scripts

Since the scripts on the wiki will affect all users,


PLEASE BE VERY VERY VERY CAREFUL if you want to edit it.
If you want to edit it, please first try your modification in Test Machine
Translation
offline before adding it to the online wiki!

community TAH
VNR

VNR 8000+

=>

C++ Python 0.006


8/13/2014 WED
* Add scripts to totally uninstall VNR.
If you want uninstall VNR or reset its settings, you can run the following
files:

Scripts/Remove VNR Profiles.cmd -- This will delete %APPDATA


%/org.sakuradite.*
Scripts/Remove VNR Settings.reg -- This will delete
HKCU/Software/sakuradite.org

VNR
VNR VNR

* Fixed the random crash for certain PPSSPP games.


Some hooks (Alchemist, 5pb and Nippon1) sometimes do not work on PPSSPP 0.9.9.
If you find a game does not work on PPSSPP 0.9.9, you might try switching back
to 0.9.8.

8/12/2014 TUE
* Bug fix CYBERFRONT PSP engine for old KID games.
CYBERFRONT PSP

* Add KONAMI engine for PSP game .


PSP

8/9/2014 SAT

QQ VNR IP123.244.x.x
QQ VNR VNR QQ VNR QQ
hook
IP QQ VNR

QQ VNR
QQ

VNR

* Add alternative Imageepoch engine for PSP game SOL TRIGGER.


PSP SOL TRIGGER.

* Add machine translation ability to VNR's built-in browser.


I hope if could help ease reading online Visual Novels or any other Japanese
websites.

It now supports using machine translator to translate Japanese websites,


using MeCab to add ruby , and using TTS to read the clicked sentence.
A screenshot of the translated http://ja.wikipedia.org/wiki/Clover_Day's is as
follows:

http://sakuradite.com/images/screenshots/wr_wiki_en.png

Additionally, VNR's Game Information page also supports the same translation
system.

http://sakuradite.com/images/screenshots/wr_vnr_en.png

Comparing to VNR, a couple of features are still missing in the browser:


- Shared Dictionary is not supported in the Browser.
- Dictionaries such as EPWING and EDICT are not supported in the Browser.
- Most Preferences cannot be changed in the Browser.
If you want to, say, change the default TTS to use, you have to change VNR's
Preferences.

There are currently four buttons that can be toggled to adjust how to translate
the website, as follows:
- : Use VNR's MeCab and UniDic to add to all texts
- : Use the machine translation to replace all texts (slow unless using an
offline translator)
- : Display machine translation for the hovered sentence in the tooltip
- : Use TTS to read the clicked sentence (don't forget to install QuickTime if
you want to use Google TTS)

VNR Visual Novel

http://ja.wikipedia.org/wiki/Clover_Day's

http://sakuradite.com/images/screenshots/wr_wiki_zh.png

VNR

http://sakuradite.com/images/screenshots/wr_vnr_zh.png
TTS

- : ruby
- : J
- : tooltip
- : TTS Google TTS QuickTime

alpha VNR
-
- EPWING
- VNR VNR
-

8/7/2014 THU
* VNR APIVNR API

API

* Use persistent threads and sessions to reduce the latency of online machine
translation.

* Excite
Excite JBeijing
q JBeijing

* Hide text box when no visible texts.


8/5/2014 TUE
* Add new BGI engine for .
Thanks for @98549177 sama's report!
BGI

* Add embedding translation support for the new BGI engine.


A screenshot of with embedded English translation is as
follows

http://i859.photobucket.com/albums/ab155/jichi/84BC306E5F7C65B9306E30D530A930FC30EA
30B9309930E0_zpsa69ea4f1.png

It ONLY works for LATIN charactered languages.

8/3/2014 SUN
* Add support for Fate/stay night on PCSX2.
A screenshot is as follows (tested on pcsx2-v1.2.1-328-gef0e3fe-windows-x86):

http://sakuradite.com/images/screenshots/pcsx2_fate.jpg

The compatibility issue is the same as PSP:


1. Do not work on Windows XP
2. Must launch VNR AFTER the PS2 ISO has been loaded
3. Changing game ISO requires restarting VNR

PCSX2 Fate/stay night


* Add Marvelous PS2 engine for School Rumble and School Rumble

PS2 School Rumble School Rumble Marvelous

8/2/2014 SAT
* djz J

* Add 2RM engine for PC games from .

* Add side-B engine for PC game .


The existing H-code has the issue of floating address.
It is better to use this hook than the H-code so that you don't have to adjust
Text Settings
everytime before the game starts.

side-B

8/1/2014 FRI
QQ VNR

*
VNR 2MB
commit

7/31/2014 THU
* QQDownload VNR

* Increase the black padding border's width in full screen.

* Add a toggle to the left dock for copying machine/shared translation to the
clipboard.

I am sorry that I failed to find a way to load LEC translator's DLL for non-
English translation.
If you want to translate Japanese to non-English using LEC, currently, you
might have to
turn on this "Sub to clipboard" toggle to re-translate English to your native
language
through clipboard using LEC or any other translators.

* Able to add/detect games running on a network drive, such as a NAS drive, or


Parallels Desktop's host.

* Add a command line parameter --pid for specifying which game process to attach.
For instance, run "Debug VNR.cmd --pid 1234" will attach to the process whose
PID is 1234.
If there are multiple games running at the same time, or if there are multiple
game processes
for the same game, you can use this parameter to select which game process to
attach.

I posted current supported parameters here:


http://www.sakuradite.com/wiki/en/VNR/Command_Line

--pid PID
http://www.sakuradite.com/wiki/zh/VNR/

* Bug fix for PPSSPP 0.9.9. Most engines should work now.
But in order to support 0.9.9, VNR is 10 times slower than before to scan the
memory.
It could take up to 10 seconds to determine the PSP game engine to use.
After VNR is launched, you might have to wait for 10 seconds for the text to
appear.

PPSSPP 0.9.9

7/29/2014 TUE
* Add Otomate PSP hook for PPSSPP 0.9.9.
It should cover most cases where 0.9.8 hooks (BANDAI, Alchemist, and Otomate)
do not work.

Otomate PSP PPSSPP 0.9.9

* Display required PPSSPP version in Text Settings


If it shows =0.9.x, then the hook works for all PSP versions.
If it shows =0.9.9 or 0.9.8, then the hook might work only for the specified
PPSSPP.

PPSSPP

7/27/2014 SUN
* Add Intense PSP engine for .

Note: It is reported by @roninmedia that certain games did not work on PPSSPP
0.9.9.
I am going to investigate the changes from 0.9.8 to 0.9.9 which broke VNR.
If you find certain games working on 0.9.8 no longer working on 0.9.9, you can
also let me know the game.
Sorry for the inconvenience!

VNR 0.9.8
0.9.8 0.9.9

* Reduce VNR's memory usage from 330MB to 190MB.


VNR 330MB 190MB

7/26/2014 SAT
* Add EAGLS engine for games from TechArts which does not have text duplication
issue.
TechArts owns several popular nuki-ge brand, including G.J?, SQUEEZ

and May-Be Soft.


If you are playing released this month, please re-adjust Text
Settings.
There will be several EAGLS threads, and be careful about the subtle
differences that only 1 is correct.


EAGLS EAGLS

Otome:
* Add Brocolli engine for PSP game .
* Add Otomate engine for PSP game and .
* Add SOFTWARE engine for PSP game .
* Remove garbage text for PSP game Are you Alice?.

Non-otome:
* Add PSP engine for KADOKAWA game .
* Add alternative Yeti engine for Never7, Remember1, Ever17.

7/25/2014 FRI
* Modify BANDAI PSP hook to support SEGA's Shining Hearts and Shape's
.
PSP Shining Hearts

I created a wiki page for the known games that are not supported by VNR.
If you find a game does not work with VNR, you can also put it there.
I will try to make the games on the list to work when I have time.

http://sakuradite.com/wiki/en/VNR/Compatibility

VNR
VNR

7/24/2014 THU
* Add support for Arabic language.
You can switch the language in Preferences/Account.
If your language is not supported by VNR, feel free to let me know.

When Arabic language is selected, VNR will try to switch the alignment
from left-right to right-left.
A screenshot of the current Arabic UI is as follows:

http://sakuradite.com/images/screenshots/vnr_ar.jpg

However, since I don't know any Arabic, I am not able to verify myself
if an Arabic sentence is from left-to-right or right-to-left.
If you find the text alignment is wrong in certain places, feel free to
complain to me.

* Restore the toggle in Preferences/Features to force enabling context menu in


full screen game.

This is requested by @goodboyye ONLY for people who have very small screen
size.
Since context menu would break full screen in most games, you normally don't
want to enable this unless your laptop has a very small screen size.

@goodboyye request

btw., I rewrote the comet service from scratch at the server side.
There should be no more network errors while signing in VNR or updating
database when lots of users are using VNR.

VNR

7/23/2014 WED
* Add Hn Vit Chinese-Vietnamese offline translator ().
The dictionary is from Quick Translator TAO
(http://www.tangthuvien.vn/forum/showthread.php?t=30151).
You can enable it in Preferences/Translation if you want to cross-translate
Chinese-translated eroge to Vietnamese.
To translate Chinese games, you also need to change the game language
from Japanese to Chinese in Text Settings.

7/22/2014 TUE
* Fix the regression for Ryokucha engine. Sorry for the problem!
bug

* Add BANDAI PSP engine for School Rumble PSP.


BANDAI PSP

* Add Brocolli PSP engine for .

7/20/2014 SUN
* Add a Vanillaware engine for Wii game .
Tested on Dolphin 4.0, and a screenshot is as follows:

http://sakuradite.com/images/screenshots/dolphin_oboro.jpg

This is just a test for extracting texts from Dolphin.


Please hold until this feature become stable.

btw, the compatibility and limitation of Dolphin support is similar to PSP:


1. Do not work on Windows XP
2. Must launch VNR AFTER the GameCube/Wii ISO has been loaded
3. Changing game ISO requires restarting VNR

* Reduce garbage characters for Rejet PSP games.


Thanks for @Sakamichi sama's report!

* Add alternative engine for old Alchemist PSP game .


Alchemist PSP
@ sama

7/19/2014 SAT
* Add KID PSP engine for old KID games which does not have repetition texts.
KID PSP

* Add CYBERFRONT PSP engine for old KID games.


KID CYBERFRONT

* Add Yeti PSP engine for Secret Game.


Secret Game PSP

* Bug fix PSP game engines. I tested several PSP games, as follows:
PSP Bug

Work -
- [KID] Monochrome <= KID sceFont

- [5pb.] STEINS;GATE
- [5pb.] Chaos Head Noah
- [5pb.] DUNAMIS15
- [Alchemist] 2
- [Alchemist]
- [Alchemist] your diary+
- [CYBERFRONT]
- [Imageepoch] BLACKROCK SHOOTER
- [SEGA] SHINING BLADE
- [Yeti] Secret Game

Work, but have repetition in texts -


- [NAMCO] .hack//.link

Not work -
- [] Final Fantasy Zero
- [Imageepoch]
- [Spike]
- [Shade]
- [Shade]

Additional game engines are needed for the games that are not supported at the
time.
Note: None of the above games works on Windows XP.
Note2: Just to emphasize, you MUST ENTER THE GAME (not only load PSP ISO)
before launching VNR.


1. Windows XP
2. PSP ISO VNR

7/16/2014 WED
* Bug fix PSP game engines, which should now work on both Windows 7 and 8, x86 or
x64.
But it does NOT support Windows XP.
If you are using Windows 7/8, but VNR cannot get text from PSP games made from
Alchemist, 5pb, SEGA, or Imageepoch, I hope you could let me know.

PSP VNR Windows 7/8


PSP Windows XP
Windows 7/8 VNR Alchemist5pbSEGA Imageepoch

7/16/2014 WED
* Fix the text duplication issue for 5pb PSP engine.

* Fix a bug in Alchemist PSP engine.


btw., it seems that this engine works for various game makers.
It also works for SEGA PSP games such as SHINING BLADE.
The hooked function can also be found in STEINS;GATE (@5pb.), though not
called.
I guess the hooked function was in certain common PSP SDK/Library.

The Imageepoch's hooked function was also found in SEGA's SHINING BLADE, though
not called.
It seems that PSP games share more similarities than I expected so that I don't
have to write game engines for each different maker.

Alchemist PSP bug


SEGA SHINING BLADE

7/15/2014 TUE
* Add a PPSSPP engine for Imageepoch.co.jp (jrpg.jp) games.
Imageepoch PSP

A screenshot of BLACKROCK SHOOTER on PPSSPP is as follows.


BLACKROCK SHOOTER

http://sakuradite.com/images/screenshots/psp_brs.jpg

* Add support of UTF-8 encoding which might be needed by PSP games.


UTF-8 PSP

* Restore furigana and TTS support to Game Information.


TTS

* Add YukaSystem2 game engine for .


Note: The text encoding is UTF-8 (this is the first UTF-8 PC engine added to
VNR).
YukaSystem2
UTF-8.

7/14/2014 MON
* Add a PPSSPP engine for 5pb games.
5pb PSP

A screenshot of STEINS;GATE on PPSSPP is as follows:


http://sakuradite.com/images/screenshots/psp_5pb.jpg

7/13/2014 SUN
* Fix the bugs that the series-specific terms might not be shared by game series.
However, it only works for games existed in VNR's database.

If you are adding a very new game file to VNR that does not exist in VNR's
database,
(i.e. VNR asks you to add the new game by Game Board),
game series will not work until you edit Game Information to link the new game
with a online reference, and run Update Game Database again after that.

If the game you added does have a Series in Game Information, but the game
does not exist in sakuradite.com/game, VNR is not able to recognize the game
series
until the VNR's online database is updated every day 4:00am JST,
and VNR need to run Update Game Database again after the game appears in
sakuradite.com/game.

If you are lazy, you basically don't need to do any thing after adding new
games, which is OK.
VNR will update the game database everyday automatically anyway.

bug
VNR

VNR


sakuradite.com/game VNR


VNR

* Add game engine for Alchemist-net.co.jp games on PPSSPP.


A screenshot of your diary+ on PPSSPP 0.9.8 is as follows:
http://sakuradite.com/images/screenshots/psp_alchemist.jpg

Currently, translating PPSSPP games is not as convenient as PC games.


There are several limitations comparing to hooking to Windows games, as
follows:

- Game settings cannot be saved based on per-game fashion.


For instance, you cannot have per-game Text Settings, Voice Settings,
subtitles, dictionary terms, etc.
As a result, every time you switch the PSP ISO, you might have to re-adjust
EVERYTHING.
I am going to change the VNR to be able to identify game by the PSP ISO in
the future.

- The game engines will only work AFTER you have launched the ISO and entered
the game!
If you directly launch PPSSPP in VNR, IT WON'T WORK.

- You MUST NOT close/change the current PSP ISO BEFORE closing VNR.
Otherwise, the behavior is undefined that either VNR or PPSSPP might crash.

- A large amount of PSP games will also need game-specific engines, such as 5pb
games, Final Fantasy, etc.
But currently, only Alchemist games are supported.
It might take me at least half a year to add as many PSP game engines as the
PC game engines.

Before that, I also plan to add a Memory Reader as an alternative of current


ITH
and VNR's embed translation engine (vnragent.dll) for extracting text
directly from memory.
It seems that most PSP games do have a stable address where the texts could
be read.
Before I have time to add an engine for you, you can easily tell VNR the
memory address of
the game texts you found using Cheat Engine or Ollydbg.
The memory address can also be saved online and shared among users.
I feel this approach might be even more stable for extracting texts from
PPSSPP comparing
to using ITH, which might crash if the JIT-compiled code region is trashed.

I am going to put more information later here:


http://sakuradite.com/wiki/en/VNR/PSP

PPSSPP Alchemist
your diary+ PPSSPP 0.9.8
http://sakuradite.com/images/screenshots/psp_alchemist.jpg

VNR PPSSPP PC

- PSP

PSP

- PSP PPSSPP ISO VNR


VNR

- ISO ISO VNR/ ISO VNR

VNR PSP ISO VNR PPSSPP

- PSP PC

PPSSPP
http://sakuradite.com/wiki/zh/VNR/PSP

7/12/2014 SAT
* Add hooks to HLE functions in PPSSPP.
However, most games (such as Alchemist's games) still need game-specific
engines.
If you have PPSSPP installed, you could give it a try.
If you don't, please hold a while until more game engines are added for popular
makers.

The current hooked HLE functions are from PPSSPP 0.9.8 as follows.
UTF-8 functions are excluded as they are not supported by current ITH (need to
modify vnrcli.dll).
If you have other requests, feel free to let me know!
Core/HLE/sceCcc.cpp
int sceCccStrlenSJIS(u32 strAddr)
int sceCccStrlenUTF16(u32 strAddr)
int sceCccSJIStoUTF8(u32 dstAddr, u32 dstSize, u32 srcAddr)
int sceCccSJIStoUTF16(u32 dstAddr, u32 dstSize, u32 srcAddr)
int sceCccUTF16toUTF8(u32 dstAddr, u32 dstSize, u32 srcAddr)
int sceCccUTF16toSJIS(u32 dstAddr, u32 dstSize, u32 srcAddr)
int sceCccStrlenSJIS(u32 strAddr)
Core/HLE/sceFont.cpp
int sceFontGetCharInfo(u32 fontHandle, u32 charCode, u32 charInfoPtr)
int sceFontGetShadowInfo(u32 fontHandle, u32 charCode, u32 charInfoPtr)
int sceFontGetCharImageRect(u32 fontHandle, u32 charCode, u32 charRectPtr)
int sceFontGetShadowImageRect(u32 fontHandle, u32 charCode, u32
charRectPtr)
int sceFontGetCharGlyphImage(u32 fontHandle, u32 charCode, u32
glyphImagePtr)
int sceFontGetCharGlyphImage_Clip(u32 fontHandle, u32 charCode, u32
glyphImagePtr, int clipXPos, int clipYPos, int clipWidth, int clipHeight)
int sceFontGetShadowGlyphImage(u32 fontHandle, u32 charCode, u32
glyphImagePtr)
int sceFontGetShadowGlyphImage_Clip(u32 fontHandle, u32 charCode, u32
glyphImagePtr, int clipXPos, int clipYPos, int clipWidth, int clipHeight)
Core/HLE/sceKernelInterrupt.cpp
u32 sysclib_strlen(u32 src)
u32 sysclib_strcat(u32 dst, u32 src)

7/8/2014 TUE
* Add new game engine for NeXAS games from or .
Tested working with Harvest, BALDRSKY EXTREME, and .
Unlike GetGlyphOutlineA, it can properly extract scenario threads from other
texts.
If you are playing Harvest now, I highly recommend you to switch to NeXAS in
Text Settings.

Harvest NeXAS
* Fixed a severe bug in CaramelBox engine.
BOX bug

7/6/2014 SUN
* SolfaSoft engine is extended and renamed to ScenarioPlayer.
It now supports more games such as from eRONDO and
from bolero.
The name "ScenarioPlayer" comes from the resource string of the executable
"scenario player program for XXX".

ScenarioPlayer

7/4/2014 FRI
* @djz J

* Display Japanese reviews on ErogameScape in Game Information.


6/30/2014 MON
* Display Text Settings and subtitle makers in Game Information.

6/29/2014 SUN
* Fix a bug that VNR is not able to load TTS when TTS's path contains unicode
characters.
* VNR will look for both HKCU and HKLM for TTS keys in order to support Infovox
TTS.
Thanks for @1dat1 sama's suggestion!

* Google VNR
https://mega.co.nz/#F!g00SQJZS!pm3bAcS6qHotPzJQUT596Q
@goodboyye sama

* Add support of EPWING dictionary as an alternative of 's


.
It is smaller than ( is only 600MB), but it seems to have a larger
vocabulary.
It also has English translations for some words.
Additionally, its explanations seems to be more concise to the point, while
is sometimes so verbose.
I personally recommend you to replace with .
I might remove the support in the near future.

EPWING
600MB


6/27/2014 FRI
* Display subtitle/danmaku counts in the Game Board.
GameBoard
123/456=123=456

6/26/2014 THU
* VNR BlueStacks
@CO830409 sama
* VNR no longer prefetches all game cover images into offline caches.
This was suggested by @andrix sama and might save some disk space.
VNR

* Game Information window is simplified.


Certain previous features (such as game intro with furigana) haven't got
implemented, though.

G

6/21/2014 SAT
* @djz J

* Support linking games with DiGiket.com. It has more BL games than other sites.

6/20/2014 FRI
* Add a game type filter to the bottom right corner of the SpringBoard.
SpringBoard

* You can also enable a group of selected rows in Shared Dictionary and Subtitle
Editor
as requested by @najizhimo.

* Display game file size from dlsite/digiket in Game Information.


dlsite digiket

* In the Spring Board, the color behind the icon will reflect the type of the
game:
blue for , purple for , and green for , and snow for unknown.

6/19/2014 THU
* Add a global keyboard shortcut for toggling visibility of VNR's text box.

6/18/2014 WED
* Allow associate games with those on Holyseal.net.
* Add basic mouse gestures to VNR's web browser.

6/16/2014 MON
* Display link to erogame-tokuten.com in Game Information.
erogame-tokuten.com

6/15/2014 SUN
* @djz J

* Support for UniDic Classical Dictionary (UniDic MLJ) is removed, as its parsing
results are quite similar to UniDic Modern Dictionary for most eroge.
UniDic UniDic

* Add support for highlighting Japanese using CaboCha.


This is an unimportant feature, and is only for Japanese learners who are able
to read some extend of Japanese.
If you are not able to read any Japanese, you can ignore the following texts.

To turn it on, the CaboCha model for the used MeCab dictionary has to be
downloaded in Preferences/Downloads.
And then, you can enable CaboCha syntax highlighter in Preferences/Translation.
You can also search for "CaboCha" in the left-bottom edit in Preferences for
the related settings.

A screenshot of the highlighted Japanese is as follows:

http://sakuradite.com/images/screenshots/cabocha_remini.jpg

While reading long Japanese sentences, our brain has to split it into short
segments and try to understand each piece.
TTS is one of the tools that could help us split long sentences.
CaboCha is able to split a sentence by grouping the related words together,
which is similar to TTS.

You know, VNR mainly uses MeCab for parsing Japanese to furigana.
From the compiler point of view, MeCab is basically a lexical parser that
tokenizes Japanese into flat words;
while CaboCha is a syntax parser that can construct a hierarchical syntax tree
from the tokenized Japanese words.
An example of the CaboCha tree is as follows:

% cabocha

---------D
-D |
-D |
---D
-D

EOS
(See: https://code.google.com/p/cabocha)

VNR currently only uses the CaboCha tree to colorize the Japanese sentences.
Other features such as using it to improving machine translation quality might
be added later.

CaboCha

CaboCha/ MeCab CaboCha


/ CaboCha
CaboCha

CaboCha

http://sakuradite.com/images/screenshots/cabocha_remini.jpg


TTS
CaboCha TTS

6/9/2014 MON
* You can always use the mouse to "select" the text in Shared Dictionary and
CTRL+C to copy it
even if you don't have edit permissions.
CTRL+C
@najizhimo sama request
* Japanese lines are wrapped by MeCab words.

* Display game series name in Shared Dictionary.


The game column is represented by:
[Series Name] Game Name (File ID)
For example: [] !! (6365)
The series-specific terms will be shared by the games having the same series
ID,
or game ID, or file ID.


[] !! (6365)
[Series Name] Game Name (File ID)

6/7/2014 SAT
*

* Game engine "Silkys" is renamed to "Elf", as Silky's belongs to elf, and it


supports
several other elf games such as .
It does not require modifying AI6WIN.ini for elf games.
elf AI6WIN.ini

6/6/2014 FRI
* Able to display duplicate rows in the Shared Dictionary and Subtitle Editor.
Duplicate rows are supposed to be avoided.
Due to performance reason, duplicates from different games in the (such
as BSZ1 and BSZ2) are currently not detected.


BSZ1 BSZ2

6/5/2014 THU
* Microsoft Translator changed their API. Fix VNR to work with the new API.
Thanks for @goodboyye sama's report!
Bing VNR Bing
@goodboyye sama

6/4/2014 WED
* Fix a bug that on Windows XP VNR might not work.
Thanks for @goodboyye sama's report!
VNR Windows XP

* Add embedding translation support for CIRCUS games.


It works for all languages except Chinese/Korean/Thai.
An example screenshot of DC3 is as follows:
http://sakuradite.com/images/screenshots/dc3_en.jpg

6/3/2014 TUE
* Add ITH game engine for games from AMUSE CRAFT.
The game engine credits to @ok123 's H-code.
AMUSE CRAFT is a large company owning several brands such as:

Qoobrand, STRIKES, UNiSONSHIFT, piriri, and ErectLip

If you are playing games such as , please adjust Text Settings


to AMUSE CRAFT@ok123 threads.
In the old version of VNR, text threads were extracted from lstrlenA
which worked quite unstable under ITH.
As a result, lstrlenA is disabled for AMUSE CRAFT games.

AMUSE CRAFT
,
AMUSE CRAFT@ok123.

6/2/2014 MON
* Add embedded game engine for Eushully games.
Currently, embedding translation only works for Latin languages.
I mean, it won't work for Chinese/Korean/Thai.
Due to encoding issue, characters that do not exist in SHIFT-JIS will become
"?".

A screenshot of LaDEA with English translations is as follows:


http://sakuradite.com/images/screenshots/ladea_en.jpg

Eushully

LaDEA
http://sakuradite.com/images/screenshots/ladea_en.jpg

* Automatically hook to WideCharToMultiByte for AlterEgo and TEATIME games.


AlterEgo TEATIME

* Support embedding translations for Silky's games such as 4.


Again, it does not support Chinese/Korean/Thai.
Silky's

6/1/2014 SUN
* Add game engine for Silky's games.
Silky's

5/30/2014 FRI
* There is no longer "Japanese" language in the Shared Dictionary.
If you want to add a generic rule for all languages, please specify "all" as
the language.

* Share subtitles and danmaku between your diaryand your diary +H.
Share subtitles and danmaku between euphoriaand euphoria HD.

5/29/2014 THU
* Fix the bug that Preferences/Downloads might always display "Installing" after
terminate the download window.
Thanks for @angelonth sama's report.
/

5/28/2014 WED
* Add multiple-selection support to the Subtitle Editor.
/

* Update the NG words for Voiceroid summarized by @CC., such as and


.
@CC. sama NG
5/27/2014 TUE
* Add multiple-selection support to the Shared Dictionary for bulk
deleting/disabling terms.
/

* Reduce machine translation time for character names.

5/26/2014 MON
* Add paginators to the Shared Dictionary and Subtitle Editor.

* Add support for embedding translations for all BGI games.


It works for all languages EXCEPT Chinese, Korean, and Thai.

There is a region lock in BGI games preventing launching them in non-Japanese


locale,
which is needed to display Chinese and Korean translations.
Fixing the issue requires injecting VNR's DLLs before the game is launched.
But currently, VNR's DLLs are injected after the game is launched.
It will take me some time to rewrite the logic to support embedding
Chinese/Korean for BGI games.

5/25/2014 SUN
* djz J 140517

* Add Text Settings GUI for embedded game engines.


It is quite similar but simpler comparing to the Text Settings for ITH threads.

* Add support of embedding translations for SiglusEngine2 games.


However, currently, it only works for languages in THIN characters, such as
English.
And it also cannot translate like ITH.
A screenshot of with English translations inlined is as follows:
http://sakuradite.com/images/screenshots/siglus_en.jpg

For languages containing wide characters such as Chinese and Korean,


embedded translations might suffer from overlapping characters.
A screenshot illustrating the issue is as follows:
http://sakuradite.com/images/screenshots/siglus_zh_font.jpg
Non-Japanese wide characters might overlap with each other and become difficult
to read.

Fixing this issue requires hijacking font creation functions before the game is
launched,
which might take more time to implement.
Basically, if your language is not a Latin language, currently you might have
to disable
the support of embedding translations.

SiglusEngine2

http://sakuradite.com/images/screenshots/siglus_zh_font.jpg

* Embedding translation is disabled by default until it becomes stable for all


languages.

5/13/2014 TUE
* Fixed a regression that Preferences/i18n did not work.
/ bug
@najizhimo sama

5/12/2014 MON
* Modify the new embedded Majiro engine to be consistent with VNR's old online
Text Settings and thread settings.

* Add support for embedding English/Latin translations for BGI2 games.


However, it only works well for English and Latin languages.
A screenshot for with embeded English translations is as
follows:
http://sakuradite.com/images/screenshots/sekai_bgi2_en.jpg

For Chinese, Korean, and Thai, this does not work well that it will have
garbage characters of "?".
An example of problematic Chinese translations is as follows:
http://sakuradite.com/images/screenshots/sekai_bgi2_zh.jpg
The problem is that, I am not able to launch BGI games in non-Japanese locale
like Majiro.
The game will simply crash on the startup.
If you have any clue on how to fix the locale issue,

Currently, the new embedded engine is lacking a Text Settings GUI.


If you want to adjust the text threads, please switch back to ITH by disabling
the new engine in Preferences/Embed, change the Text Settings, and re-enable
the new engine.

Additionally, I temporarily disabled the support for for old BGI games.
It works well, and a screenshot of translated FORTUNE ARTERIAL is as
follows:
http://sakuradite.com/images/screenshots/fa_bgi1_en.jpg
But the problem is that I have to hook to a totally different place comparing
to ITH.
As a result, the text and thread settings for the new engine are different from
ITH.
Currently, the online database only has ITH's settings saved per game.
I will need to extend the database to be able to save more than one settings
per game
so that the new engine will not mess up the existing game settings for ITH.
This might take another one or two weeks to implement, and I will enable
support
for old BGI games after it is done.

BGI2
http://sakuradite.com/images/screenshots/sekai_bgi2_en.jpg

http://sakuradite.com/images/screenshots/sekai_bgi2_zh.jpg

MAJIRO
BGI

BGI BGI

BGI
BGI FORTUNE ARTERIAL
http://sakuradite.com/images/screenshots/fa_bgi1_en.jpg
BGI ITH BGI
ITH

5/11/2014 SUN
Note: Embedding translation currently does not work under Wine.

* Fixed a severe bug that the machine translations might not be displayed
properly.
Thanks for @goodboyye sama and @najizhimo sama's reports!

@goodboyye sama @najizhimo sama

5/10/2014 SAT
* Update the NG words for Voiceroid .
Thanks for @CC. sama's report!

@CC. sama NG

* djz J 140509
@djz020815 http://pan.baidu.com/s/1kT2trON

* Added a new hook supporting embedding machine/manual translations into the


game.
You can find its settings in Preferences/Embed.
The new hook is fully independent of ITH (and it does conflict with ITH).
Currently, it only supports the games made by MAJIRO game engine.
The current substitution method is not generic and will need descriptions for
each game engine.
I will gradually add more game engines to the new hook later.

Depending on your language and the encoding of the game, embedding translation
might or might not work properly:
- English and all other Latin-based languages are supported no matter which
encoding the game is.
- For UTF-16 games, all languages are fully supported.
- For SHIFT-JIS games, Chinese and Korean partially work with hacks (I will
describe it later).
- For SHIFT-JIS games, embedding Thai translation does NOT work.

Currently, the font of the embedded translation might not look well for all
languages.
If that happens, I hope if you can help me by letting me know the proper font
family in your language.

Here are some screenshot from with embedded translations:


Chinese
- Scenario: http://sakuradite.com/images/screenshots/remini_zhs.jpg
- Internal translation:
http://sakuradite.com/images/screenshots/remini_save_zhs.jpg
English: http://sakuradite.com/images/screenshots/remini_en.jpg
Russian: http://sakuradite.com/images/screenshots/remini_ru.jpg
Korean: http://sakuradite.com/images/screenshots/remini_ko.jpg

More information could be found at:


- http://sakuradite.com/topic/226
- http://sakuradite.com/wiki/en/Game Settings
Some of the important issues are described as follows:

* Translation fonts
Currently, the font family of different languages for the embedded
translations are not specified.
Basically, I just don't know the proper fonts for all kinds of languages.
Here are some screenshots illustrating the font problem
- When the selected font does not support your language, some characters
might become "" or "?" or "".
http://sakuradite.com/images/screenshots/remini_zht_font.jpg
- The non-English latin characters might be rendered with double-width so
that it is too long to be displayed in the game.
http://sakuradite.com/images/screenshots/remini_ru_font.jpg

If you know the proper font usually used to display your language, I hope if
you could let me know.

* Embedding Chinese and Korean into SHIFT-JIS games


To display characters in your language above, VNR has to launch the game
using your language's encoding.
This means the locale launchers such as NTLEA and LocaleEmulator will be
disabled.

For Chinese, if the game is able to launch, then there are no more problems.

For Korean, the original Japanese texts can no longer be displayed.


All texts must be translated to Korean in order to be displayed properly.

This is because the Chinese character set is basically a superset of


Japanese.
But the Korean character set only partially supports Japanese.

/
ITH ITH
MAJIRO


- http://sakuradite.com/images/screenshots/remini_zhs.jpg
- http://sakuradite.com/images/screenshots/remini_save_zhs.jpg


- http://sakuradite.com/topic/226
- http://sakuradite.com/wiki/zh/Game Settings


UTF-16
SHIFT-JIS

*
SHIFTJJIS NTLEALocaleEmulator

VNR VNR
UTF16

Windows VNR


SHIFT-JIS

*
hook
http://sakuradite.com/images/screenshots/remini_zht_font.jpg

5/3/2014 SAT
* @djz020815 J 5 1

4/21/2014 MON
* @ok123 sensei added new Mono game engine for BALDRSKY ZERO, which contains no
garbage texts.
Garbage elimination terms in Shared Dictionaries can be abandoned now.
@ok123 BALDRSKY ZERO Mono

4/20/2014 SUN
* Voiceroid NG
@CC sama

Voiceroid
http://sakuradite.com/wiki/zh/VNR/
VNR

4/19/2014 SAT
* Add game engine for BL games from Marine Heart.
Margine Heart BL

* Fix the issue that VNR could crash BALDRSKY ZERO2.


The reason of the issue was that the latest AlphaROM games would close itself
if VNR was gaining debug privileges.
This bugfix might also save other AlphaROM games from crashing.

BALDRSKY ZERO2

4/18/2014 FRI
* Fixed a severe bug for extracting text from Ryokucha game engine (games from
).
Thanks for @djz020815 sama's report!
bug

* @djz020815 sensei J 140417

4/15/2014 TUE
* VNR will automatically back up local games settings.
If VNR has crashed for whatever reason and corrupted current game settings, VNR
will restore the last settings.
Thanks for @najizhimo sama's report!

VNR
VNR VNR
@najizhimo sama

* Add game engine for Adobe AIR.


Tested working with and .
Adobe AIR

* Modify the old BALDR engine so that it works with 2.


The new engine is renamed to "Unity" to be more generalized.

Additionally, since and 2 share the same terms in


the Shared Dictionary
(both of them are in the same series of ),
the garbage elimination rules for also work for 2.
No extra modifications to the Shared Dictionary are required.

BALDR 2Unity
2
2

* Add game engine for sol-fa-soft.

4/13/2014 SUN
* Restored support to read user-shared/machine translations using TTS.
By default, VNR will use TTS to read the original game text (usually in
Japanese).
Now, if the language of your selected global TTS or character-specific TTS is
different from game's language,
VNR will try to read the translation using your selected TTS.
The translation could come from either user-shared subtitles or machine
translators.

For example, if you are speaking Korean, after installing VoiceText YUMI, VNR
can use that TTS to read Korean translation instead of Japanese game text.

TTS
VNR TTS
TTS VNR TTS

VoiceText Liang Hui TTS TTS


VNR

btw., if you would like to try TTS+VNR, personally I would recommend VoiceText.
Some of its supported languages and sizes of the voices are as follows:
- Japanese: VM Misaki (female, 755MB) and VM Show (male, 724MB
- English: VM Julie (female, 565MB) and VM Paul (male, 448MB)
- Chinese: VM Hui (female, 368MB) and VM Liang (male, 241MB)

4/12/2014 SAT
* MeCab VNR
MeCab
Caches/Dictionaries

* Launch Voiceroid using AppLocale on non-Japanese Windows.


Thanks for @CC. sama's suggestion!
AppLocale Voiceroid

4/4/2014 FRI
* @djz020815 sensei J J
@djz020815
VNR TranslationPendant J

@djz020815 http://pan.baidu.com/s/1kT2trON

4/3/2014 THU
* Prevent VNR from hooking to Notepad++.
VNR Notepad++

4/2/2014 WED
* Add AOS engine for games from SugarPot and other game brands under the umbrella
of .
Tested working with , and some nuki games from
LiLiM.
Sugar Pot AOS

4/1/2014 TUE
* Fixed the losing text bug in Malie3 engine for .
Thanks for @ok123 sensei's report!
light Malie3

* Add a new Tenco game engine for .


These games usually have several updates.
Hope this engine could help reduce the dependence on H-code for different
updates.
Tenco

3/31/2014 MON
* Modify the built-in browser to support parsing website using MeCab and reading
Japanese sentences using TTS.
The role of the Japanese word is rendered in the tooltip.
VNR TTS
tooltip

3/27/2014 THU
* flash

3/26/2014 WED
* VNR UniDic


Lingoes EDICT

3/25/2014 TUE
* Modify the theme of the web browser to look better when Aero is not supported.
Aero

* You can disable the notification at the corner of the screen in the left dock.

3/24/2014 MON
* Handle the cookies so that the browser can visit DMM properly.

3/22/2014 SAT
* Add a simple web browser which could be used to visit certain web sites that
are blocked outside of Japan.
Currently, it works well on Windows Vista and later when Aero is enabled.
The GUI will look very ugly on Windows XP.

Aero Vista Windows
Windows XP

* Fixed a bug for determining whether a game is an otome game.


Thanks for @Sakamichi sama's report.

* The underlying mechanism for saving manual subtitles is changed.


In short, the subs are less likely to get lost due to the changes/updates to
the games.
The UI are not changed, and you don't need to do anything to enable this
change.

Additionally, I also manually shared subtitles between

and at the server side.


Currently, there is no public UI to specify which games to share subs
other than linking them with the same online game (say, from getchu).
If you have requests, feel free to let me know!

More technical details about the changes are at the end.






Trinity

In the old version of VNR, all subtitles were saved with the raw data of the
text in the memory instead
of the game text that you can see in the screen.
For example, assume the current game text is "", and my subtitle
is "Kaido: Hello".
In the old version of VNR, "Kaito: Hello" will be saved not with "
",
but with the current data in the memory behind "" which you
cannot see.

The reason behind this decision is that: I feel raw memory is usually more
stable than
the extracted game text.
Because the game text might be different depending how we view/process it
(which encoding to decode text, whether eliminate repetitions, whether display
user name, whether
use Shared Dictionary to reorder character names and to remove garbage
characters, etc.).

Then, I tried importing subtitles made for (assume


this to be A3) to
(let this game be AT).
But because A3 and AT were made using different game engines and the subtitle
scripts were in different encodings
(A3 = MAJIRO with SHIFT-JIS, AT = KiriKiri with UTF-16),
the raw memory were different for these two games, which made it impossible
to share subtitles between them.

So, I changed the mechanism for saving subtitles to that:


the subtitle will be saved with both raw memory data and the game text.
Now, the subs in A3 and AT can be shared since their processed game text are
the same.
To be more precise, the subtitle is not really saved with game text, but the
"normalized" game text.
The normalization includes removing spaces, reordering text and eliminate
repetitions.
This will make it less possible to suffer from the changes of different game
engines,
and how user select to process the game text.

Additionally, in the old version of VNR, because the memory extracted from
certain game engines
(such as KiriKiri and YU-RIS) were unstable, manual subtitles could randomly
get lost.
This update will also fix such issue.

btw, was THE game that changed my personality, and motivated me to


create VNR so that
more (Chinese) users could enjoy the game.
If you know some basic Japanese, I personally strongly recommend you to give
this game a try.

3/19/2014 WED
* Bugfix for the CMVS engine.

3/17/2014 MON
* Add support for Translate.Ru online translator from PROMT.
It supports several European languages, but I believe Russian is its best.
Thanks for @1dat1 sama's suggestion.

Note: You cannot see this translator in Preferences if you have blocked Russian
language in Preferences/i18n.

* VNR's updater is temporarily rolled back to command line script.


It is uglier, but much faster and stabler than the previous GUI version.
VNR

* Fix a bug that might cause games from Eushully randomly losing texts.
E bug

* Support for extracting texts from MultiByteToWideChar and WideCharToMultiByte


are temporarily disabled.
MultiByteToWideChar WideCharToMultiByte

Certain games require extracting texts from MultiByteToWideChar or


WideCharToMultiByte.
But due to technical difficulties, hooking these two functions could cause a
large number of games to lose text.
A as a result, I temporarily disabled hooking to these two functions.
If your existing games need to extract texts from these functions, you have to
manually download vnrcli.dll
from the following place, and replace the default DLLs in
Library/Frameworks/Sakura/bin.

Google Drive: http://goo.gl/t31MqY


Baidu Disk: http://pan.baidu.com/s/1jGftD9W
MultiByteToWideChar WideCharToMultiByte

VNR
vnrcli.dll
Library/Frameworks/Sakura/bin DLL

Since this issue is very difficult to fix, it might take more than a week.
I will try to fix this issue as soon as possible.
Really sorry for the inconvenience! m(_ _)m
More information about this issue could be found in the following place:

http://sakuradite.com/topic/175
http://sakuradite.com/topic/159

3/16/2014 SUN
* Support using Alt / Ctrl modifiers for mouse and keyboard shortcuts.
Alt/Ctrl

3/15/2014 SAT
Note: If you are experiencing the issue that VNR is reading out unwanted
character names through TTS,
please do a manual update to the Shared Dictionary.
There was an important rule to eliminate character names in voices which was
disabled by some users by accident.

VNR TTS

* You can specify global mouse/keyboard shortcuts in Preferences/Shortcuts.


You can enable the shortcut in the option dock on the left of the game window.
Currently, you can bind the shortcuts only with TTS.
/

* Pressing the Close button (X) on the top-right corner of the text box no longer
stops the text extraction.
If you want to disable VNR, you have to manually press the "Pause" button on
the left dock.
X
VNR

* UniDic sourceforge UniDic

@goodboyye sensei

3/11/2014 TUE
* @djz020815 sensei JBeijng

* Fixed a severe bug in VNR that might crash TanukiSoft games,


and might cause certain game engines (such as Debomosu) randomly unable to find
game threads.
Thanks for @Kodoku sensei's report!
VNR bug
bug TanukiSoft Debonosu

Kodoku sensei

3/10/2014 MON
* VNR will display the guessed encoding for the text threads in Text Settings.
VNR will not force you to change the encoding.
But it is usually correct, unless you are playing a mod/translated game.
VNR

btw, I added a summary of all game engines in ITH and VNR at:
http://sakuradite.com/wiki/en/VNR/Game_Engine

3/9/2014 SUN
* Fix a bug of Malie3 that the garbage texts sometimes are not removed
Malie3

3/8/2014 SAT
* Add a new Malie3 engine for .
You can find Malie3@ok123 in Text Settings crediting to @ok123 sensei.
The new engine does not have the issue of showing texts before it is painted on
the screen.
You can say thanks to @ok123 here: http://sakuradite.com/topic/157


Malie3@ok123

* The startup time of VNR is reduced.


In the old version of VNR, a large amount of the startup time is spent on
preprocessing the Shared Dictionary.
As the size of the Shared Dictionary increases, the processing time becomes
longer and longer.
Now, VNR will preprocess the Shared Dictionary in another thread so that it
will not block the startup.
The green ring will be spinning on the startup when VNR is processing the
dictionary.
The trade-off it that, if you are trying to open the Shared Dictionary
immediately after startup,
VNR might complain to you that it is still processing the dictionary.
Please wait a few seconds until the green ring disappears.

VNR
VNR

VNR
VNR
VNR
VNR

* By default, VNR will display the number of online users on the Spring Board.
You can disable this in Preferences/UI.

VNR
/

3/7/2014 FRI
* Add game engine CMVS2 for recent games from .
Specifically, FD does not need /H code any more.
CMVS2 is actually better the the current /H code for that game.
The existing /H code will extract duplicate threads while CMVS2 will not.
I think it might be better you enable CMVS2 in Text Settings and disable the
current /H code for that game.

CMVS2
FD
CMVS2

3/5/2014 WED
* Avoid growling repeating messages.

* Fixed the issue that MeCab does not work on some computers.
MeCab

* UniDic sourceforge.jp mirror UniDic

* Change the encoding for SHIFT-JIS from the standard SHIFT-JIS to CP932.
This will fix the issue that certain uncommon kanjis such as were
missing.
Thanks for @tidus2310 sama's report!

* Fix the bug that the comment is not saved for newly-created terms in the Shared
Dictionary.
bug

3/4/2014 TUE
* Fixed the issue that UniDic MLJ cannot be downloaded.
Thanks for @qdbkrc sama's report!
UniDic
* DMM
* Display the total number of users that are using VNR.
VNR

3/3/2014 MON
* Add Malaysian language support. You can select the new language in
Preferences/Account.

* VNR ip G
@goodboyye sama

* Add LEC Online translation support which can be enabled in


Preferences/Translation.
LEC is said to be the best translator for European languages.
VNR supports LEC offline translator only for English.
If you does not have LEC installed, or your native language is an European
language other than English,
it is highly recommended to try LEC online translator.

Thanks for @spoxxy sama's suggestion!

3/2/2014 SUN
Note: VNR's servers are online again. Sorry for all the troubles caused by it
last week!
If VNR's server is down again, you can get a recent version at Google Drive:
http://goo.gl/t31MqY
Or:
https://drive.google.com/folderview?id=0B3YXxE6u-4bzc1RKWHpoLWZROTQ

VNR
VNR down
http://pan.baidu.com/s/1jGftD9W

* At the left dock, VNR will display the number of users playing the same game at
the same time with you.

* The organization of VNR's files changed slightly.


VNR

* Reduce the disk usage of VNR. reader.7z is reduce to 56MB.


VNR reader.7z 56MB

* I rewrote the updater to get rid of the dependence on cygwin and autoit
so that the updater will not crash on Windows 8 x64.
win8

* Update Python and PySide to the latest version.

* Python no longer compiles the source code into byte code.


This will fix the issue that running VNR as administrator might sometimes mess
up the update.
Python
VNR

* Fix the bug that vnrsrv.dll sometimes crashes when the game is closed.
This only works for Windows Vista and later. On Windows XP, the problem
remains.
Thanks for @goodboyye sama's report!
vnrsrv.dll
Vista Windows Windows XP VNR
@goodboyye sama

* Support for LocaleSwitch is dropped, as I feel LocaleEmulator + NTLEA +


AppLocale is sufficient.
LocaleSwitch LocaleEmulator + NTLEA + AppLocale

2/26/2014 WED
Note: VNR's servers are being migrated by the service provider. The Internet
connection is very unstable.
This might last for at most two weeks, and there is nothing I can do ...
Sorry for the inconvenience!
I am going to release an update to fix the issues of VNR when the servers are
offline.

VNR

VNR VNR

* The UI style of some of the widgets is changed from Twitter Bootstrap version 2
to version 3.
It has less gradient colors and shadows which will be faster to render.
You might find it feels slightly different (flatter), though.
VNR Twitter Bootstrap 2 Twitter Bootstrap 3

* Add a primitive widget beside the Shared Dictionary where you can discuss with
others
about the usage of the Shared Dictionary.

* VNR no longer distributes IPAdic by default.


IPAdic is one of the dictionaries needed by MeCab.
If you want to use VNR to parse Japanese into phrases and look up dictionaries,
you must download at least one MeCab dictionary in Preferences/Downloads.
VNR IPAdic
IPAdic MeCab
VNR / MeCab

* Reduce the disk usage of VNR.


VNR

* I added some alternative MeCab dictionaries.


VNR now supports three kinds of MeCab dictionaries, which could be downloaded
in Preferences/Downloads.
The one used by the old version of VNR is IPAdic.
I feel UniDic Modern Japanese Dictionary (UniDic ) is the best (but
larger than IPAdic).
If you have enough disk space, I think you could try UniDic.

MeCab UniDic /
UniDic VNR IPAdic

IPAdic UniDic
IPAdic UniDic
UniDic


VNR
,,,,,

I investigated available MeCab dictionaries a little bit, and found 5 free


candidates.
A summary is as follows. Among the 5, I feel UniDic is the best.
If you have alternative suggestions, feel free to let me know!

1. IPA dic (50MB): http://sourceforge.net/projects/mecab/files/mecab-ipadic/


This is the default dictionary comes with MeCab.
But I found its vocabulary is limited.
For example, it cannot even recognize .
In the old version of VNR, VNR cannot recognize unless Microsoft Japanese
IME is installed.

2. UniDic (247MB): http://sourceforge.jp/projects/unidic/


I feel UniDic is better than IPA.
- It has much larger vocabulary, which includes .
- It can tell whether the pronunciation of the phrase originates from ancient
China or ancient Japan.
See the example below.
- It can return the associated Kanji of the katakana/hiragana.
For example:

will be parsed to:

If you click , VNR will popup something like this:
,,,,,
If you click , VNR will popup something like this:
,,,,,
Here, and are the of and .
And at the end means the pronunciations of and come from ancient
Japanese.
If it shows instead of , it means that pronunciation is ported from
Chinese than Japanese.
- The way UniDic splits Japanese seems to be more natural than IPA.
For example, will be parsed by UniDic as:

while it will be parsed by IPAdic as:

IPAdic has a tendency to split into + , while UniDic does not.

3. UniDic (UniDicMLJ, 458MB) http://www2.ninjal.ac.jp/lrc/index.php?


UniDic%2F%B6%E1%C2%E5%CA%B8%B8%ECUniDic
This is an extension of UniDic by adding phrases from .
It has larger vocabulary than the original UniDic.
But I found it might make more mistakes than the original UniDic when parsing
.
For example:
UniDic MLJ will recognize as a verb instead of an adjective like in the
original UniDic.
I guess it might be a good fit only for hardcore games from Nitro+/light, or
games
where the tends to be classical/ancient.

4. NAIST jdic (160MB): http://sourceforge.jp/projects/naist-jdic/


This is the original dictionary developed by the same team of MeCab from NAIST
university.
I feel it is quite similar to UniDicMLJ, and not as good as UniDic for parsing
modern Japanese.
It also tends to recognize as a verb (which might be the case for ancient
Japanese?).
And it cannot recognize either ><

5. JUMAN dic: http://sourceforge.net/projects/mecab/files/mecab-jumandic/


The parsing quality is horrible.
The only benefit is that it has a loose license.

2014/2/18 TUE
* Display the number of users viewing the Shared Dictionary.
This feature is useless. It is mostly for testing the stability of the
atmosphere connection
between VNR and the server. This new technique might allow VNR to get real-time
incremental
changes to the shared dictionary, subtitles and comments from the server in the
future.


2014/2/17 MON

* JBeijing by @djz020815
-

@Hdgdyl = //
@Hdgdyl,@Goodboyye,@Zhugeqiu = //
@Hdgdyl,@Goodboyye,@Zhugeqiu = / //
@Goodboyye = ////

@Hdgdyl = //
@Hdgdyl,@Goodboyye,@Zhugeqiu = //
@Hdgdyl,@Goodboyye,@Zhugeqiu = //

@Hdgdyl,@Goodboyye,@Zhugeqiu = //

@Hdgdyl,@Zhugeqiu = //
@Hdgdyl,@Goodboyye,@Zhugeqiu = //@Hdgdyl
@Goodboyye

- @Goodboyye

= //
= () //
= //
= () //
= () //
= //
= ////
= ////
= //
= () //
= () //
= //
= //
= () //
= //
= //
= //

@djz020815: jbeijing

2/16/2014 SUN
* Add a simple "VNR for Mac.app" to Library/ for launching VNR on Mac OS X.
Library/ Mac VNR app

* You can right-click a Japanese word in the game text and add it to the Shared
Dictionary.
Thanks for @liconan sama's suggestion!


@liconan sama
* Add a simple dictionary app for looking up Japanese words.
app

2/14/2014 FRI
* Add Dutch language and JMDict in Dutch.

* You can adjust the size of the translation popup in the left dock.

* The "Text" tab in Preferences is renamed to "Font".


Its functionality is not changed.

2/13/2014 THU
* VNR can automatically install pAppLocale from Taiwan University in
Preferences/Downloads.
The pAppLocale comes from its author @piaip's web page at Taiwan University, as
follows:
http://ntu.csie.org/~piaip
This only serves to help new users of VNR.
You can ignore this if you have already installed pAppLocale.

VNR pAppLocale/
VNR pAppLocale @piaip

http://ntu.csie.org/~piaip

AppLocale

* Add JMDict support for French and Russian languages.


You can get JMDict in Preferences/Downloads.
VNR will download JMDict from Monash University in Australia:
ftp://ftp.monash.edu.au/pub/nihongo/
JMDict has much smaller vocabulary than EDICT.
But if English is not your native language, you could use JMDict together with
EDICT or Vicon dictionary.

* VNR can automatically download Wadoku Japanese-German dictionary.


You can get the dictionary at Preferences/Downloads.
VNR is using the 2012 version from the following web page:
http://www.wadoku.de/wiki/display/WAD/Downloads+und+Links

2/12/2014 WED
* Add a simple input dialog for adding new entries to the Shared Dictionary.
VNR

2/11/2014 TUE
* VNR no longer distributes EDICT and Lingoes dictionaries by default.
If you need these dictionaries, you can turn them on in Preferences/Downloads.
VNR EDICT Lingoes
/

* Add Vicon English-Japanese Dictionary from Lingoes.


You can get it in Preferences/Downloads.
Not sure if it is better than EDICT, but it does have much larger vocabulary,
and it can tell the "" (role?) of the Japanese.

* Translation support for is removed, since it seems that seldom people are
using that feature.
* Translation support for Excite.co.jp is restored. You can enable it in
Preferences/Translation.
Excite.co.jp /
Excite.co.jp
Excite J JBeijing
Excite Excite
J Excite.co.jp

* Reduce the disk usage of VNR.


VNR

* VNR no longer touches Python source code when updating, which took too much
time.

However, as the consequence, if you launch VNR as administrator, it could cause


serious problem after updating VNR.
Because the non-admin updater will not be able to update/delete the pyc/pyo
files created by the admin VNR,
this will cause severe inconsistency in the Python byte code of VNR and will
result in mysterious runtime errors.

To fix the issue, either you NEVER launch VNR as administrator, or you have to
launch
the updater as administrator as well.

VNR touch Python script touch

VNR
VNR pyc pyo
VNR


VNR

VNR

VNR pyc pyo

2/9/2014 SUN
* Texts ending with "" will be identified as dialog and VNR will skip reading
it using TTS.
VNR

* The H-code for certain games are locked.


I found a couple of correct H-codes got deleted by people.
I manually locked these codes which are no longer allowed to be deleted/edited
by VNR.
If you find a wrong H-code that is locked by me, feel free to complain to me!

2/8/2014 SAT
* JBeijing
@Hdgdyl,@Goodboyye,@Zhugeqiu = //
@Hdgdyl = //
@Hdgdyl,@Goodboyye,@Zhugeqiu = //
=> @Goodboyye
= //
= //

2/7/2014 FRI
* bug
djz sensei

2/5/2014 WED
* The BGI2 engine is changed so that the text thread location can be saved.

* @djz020815 JBeijing
VNR J wiki
J
http://sakuradite.com/wiki/zh/VNR/JBeijing

@Hdgdyl,@Goodboyye,@Zhugeqiu = //
@Goodboyye = //
@Hdgdyl = //
@Hdgdyl,@Goodboyye,@Zhugeqiu = //
@Hdgdyl,@Goodboyye = //
@Hdgdyl,@Goodboyye,@Zhugeqiu = //
@Hdgdyl,@Goodboyye,@Zhugeqiu = / //
@Hdgdyl = //
@Hdgdyl,@Goodboyye,@Zhugeqiu = //
@Hdgdyl,@Goodboyye,@Zhugeqiu = //
@Goodboyye = //
@Hdgdyl,@Goodboyye,@Zhugeqiu = //

=> @Goodboyye
= //
= //
= //
= //
= //
= //
= //
= //
= //
= //
= //
= //
= //
= //
= () //
= //
= //
= //
= //
= //
= //
= //
= //
= //
= //
= //

==@Goodboyye
= //
= //

1/31/2014: FRI
* Add a BGI2 engine for new BGI games like .
You can find both scenario text and character names in Text Settings.
Please also update the Shared Dictionary to eliminate "<r>" in the game text.
BGI2

"<r>"

btw, I am creating a wiki page as follows to describe the behaviors of game


engines in VNR.
http://sakuradite.com/wiki/en/VNR/Game_Engine
It is currently incomplete, though.
If you don't want to use VNR but need VNR's game engine, that page might help
you to create H-code manually.

1/26/2014: SUN
* I created some discussion pages online for VNR and Japanese games.
If you have questions regarding VNR or the game you are playing, you might be
able to get help there.
Here are some links that might be useful:

http://sakuradite.com/game You can search for games in VNR's database


there
http://sakuradite.com/topic All the topics
http://sakuradite.com/subject Non-game subjects such as VNR

These discussion pages are basically light-weighted forums.


I wrote the framework from scratch, and the UI might be felt differently from
conventional forums, though.

- The topics are associated with games. For each game, there is a discussion
place.
Currently, there is no useful information about the game online, though.

- You can use it for chatting.


If you create/edit a post, other people viewing the same topic will see your
changes immediately
without refreshing the web page.
The underlying communication is implemented using WebSocket technology, which
requires a
modern web browser such as Google Chrome, Firefox, or Apple Safari.

- You can upload images and BGM in the post as well.


There is a Full Screen mode that will render the post text like VNR's
subtitles over the image.
If you want to post screenshots of the game with a few
explanations/translations,
I am not sure if it could be a good way to render your translations.
Other people can comment on each uploaded image.

- Most of the floating portals are draggable and closable.

Regarding the focus of the website, I am still not sure at the moment.
I think you can post whatever things there, but please AVOID POSTING LINKS OF
PIRATE SOFTWARE AND PIRATE GAMES.
Anything else is fine.
Currently, the website is at alpha stage. Just let me know if you have
suggestions or find bugs.


VNR

- VNR http://sakuradite.com/game

WebSocket modern Google ChromeFirefox Apple


Safari

-
VNR


googlebaidu

1/20/2014: MON
* Not sure if people know this, in the Shared Dictionary, you can search terms
only in specific language.
For example, if you want to search Korean translations, just type "Korean" and
press enter.
I added a "language" button to the search bar of the Shared Dictionary for this
to make it easier.

1/17/2014: FRI
* Some of the cached contents were moved to the Caches folder, including
subtitles, images, etc.
Since these caches might be useful to you, I moved them to a place where you
could reach them easier.
It is OK to delete the entire Caches folder if you want.
VNR will re-cache everything the next time .

VNR Caches
Caches
VNR cache

* Create indices in SQLite database of lingoes dictionaries to speed up


translation queries.

1/16/2014: THU
* (Korean) Correct the Korean translation for the VNR's UI.
The translation comes from @mireado sensei.

* Speed up processing lingoes dictionaries.


Lingoes

* Improve the rendering of Vietnamese LD2 dictionaries.

1/15/2014: WED
* VNR can read LD2 format Lingoes dictionaries now.
I also added some free dictionaries from Lingoes for Chinese, Korean, and
Vietnamese.
You can turn on these dictionaries in Preferences/Translation.
If you need other LD dictionaries for your language, just let me know.

Here are the links of the dictionaries on the Lingoes website.


You don't have to download them manually for VNR. Just provide the links as
references.
Though free, not sure if they have violated the copyright law.

- (New Japanese-Chinese dictionary)


http://www.lingoes.net/en/dictionary/dict_down.php?
id=054A857FF8D2F3458F849148F6BE5CE9

- Naver (Naver Japanese-Korean dictionary)


http://www.lingoes.net/en/dictionary/dict_down.php?
id=63332AAFE6159C448748FF073FAA1157

- OVDP Japanese-Vietnamese Dictionary


http://www.lingoes.net/en/dictionary/dict_down.php?
id=D2B4817958C3E644B3B2B6788B9B9E1C

I also checked the source code of StarDict, and I think it is possible and kind
of simple to add support for it in VNR.
But I didn't find any useful Japanese dictionaries in StarDict format, as its
original sourceforge website has been shut down.
If you need support for specific StarDict dictionaries, you can also let me
know.

NOTE:
My current implementation to process lingoes dictionaries is primitive and
stupid.
It would take a bunch of memory and could slow down VNR "a little bit" on the
startup.
My Windows laptop is about 5 years old, and here "a little bit" is about 20
seconds ... T_T
If your laptop is as old as mine, you might have to wait for one or two weeks
for me to fix the performance issue.

Lingoes
VNR Ligoes /

Lingoes
lingoes

EPWING Lingoes

Lingoes


[]

,,,,,

EPWING

fch, dch./.
/,.



VNR


VNR Lingoes VNR
Lingoes VNR

1/14/2014: TUE
VNR needs your help ><
Currently, VNR only has complete translations of the user interface in English
and Chinese.
Japanese is partially translated manually.
Other languages are partially translated automatically by Google, which has
pretty bad quality T_T
If you find errors in the translation of the user interface, you can edit the
following wiki page:
http://sakuradite.com/wiki/en/VNR/Translation
You can put down the correct translation there, and I will incorporate your
translation to VNR.
The user name and password of the wiki is the same as the VNR's account.
If you have issues or other suggestions, just let me know!

1/11/2014: SAT
* (Korean) The mapping from Hangul to Furigana is changed.
The rule is described here:
http://www.geocities.jp/p451640/moji/skm/gjo/utfgjo_02.html
There some ambiguities for mapping and lines.
is used for andfamilies while is used forfamily.
If this is not the right way to go, just let me know.

* (Thai) Add an option to use Thai as Furigana in Preferences/Translation.


The mapping is described here:
http://www.itagaki.net/trv/thai/language/Japanese_syllabary.htm
According to that page,could be mapped either toor.
I used the first one. Just let me know if it is the wrong character to use.

* (Thai) The categorization of Thai is changed to Asian character language from


Latin character based language.
The way to apply Thai terms in the Shared Dictionary is now the same as
Chinese/Korean but different from English.
And it does not share translations with English terms any more.

* (Thai) If VNR discovers character names for the game, it will automatically
translate them to Thai.
The character names could be found in the Game Information window.
You don't have to manually add them to the Shared Dictionary any more.

1/10/2014: FRI
* The screenshot button is moved from the popup window to the left dock so that
it is easier to click.

* Add a "Private" toggle to the Shared Dictionary.


A "Private" term in the Shared Dictionary will only be visible to its creator.
The private terms will still be saved online. But other people including me and
moderators will never see them.
If you want to do aggressive modifications to the game text specific to your
purpose,
it might be better to mark it as private so that others will not get affected.

For example, if you want to change the hero's name to your the heroine's name
to your boyfriend or girlfriend,
you can simply create some translation terms and mark them as "Private" so that
other people will not see your real names.
For example in , the hero character is. And there is
already a chara term of = "Yuma".
If I want to change the hero's name to "jichi", I can either add a new
"Translation" term of "Yuma"="jichi",
or a new "Chara" term of ="jichi".
Don't forget to mark these terms as series-specific as well so that they will
not pollute other games.

Note:
- The private terms have higher priority then non-private ones.
If there are two terms for the same character name, the private one will be
applied first.

- Currently the guest account cannot create private terms, since I am not able
to distinguish different guests to be private.

- If you are not familiar with the Shared Dictionary, you must be very careful
about the private terms.
If you add a bad private term, it could mess up the machine translation.
Since the term is private, no one will double-check the translation for you.
You might want to keep the following criteria in mind when adding Private
terms so that it will not hurt you:

1. Avoid adding translation for ambiguous (I mean "context-sensitive")


Japanese word.
For example, you should not add translation of: = chan
Because does not always mean chan. Say, = just
Additionally, when a word contains only 1 character, it is usually
ambiguous and should be avoided.

2. If it is ambiguous but you really want to add it, mark it as game-


specific.
For example in ,is a character name read as Nozomi.
But it is ambiguous since it could also means "Hope".
If you want to add a term of =Nozomi, it is better to mark this
term as series-specific to reduce the damage to the other games.

The detailed explanations for the meaning of each toggles in the Shared
Dictionary could be found here:
http://sakuradite.com/wiki/en/VNR/Shared_Dictionary


jichi
- 1=jichi
- 2=jichi


jichi
2 2 1






1.
=


2.


http://sakuradite.com/wiki/zh/VNR/Shared_Dictionary

* (Korean) Add an option in Preferences/Translation that can use Hangul as


Furigana.
I am studying Korean now, and I am not sure the correctness of the mapping from
katakana to hangul.
The current map is as follows. Feel free to let me know if it contains errors.
Hiragana:

Hangul:

-

* (Korean) If VNR discovers character names for the game, it will automatically
translate them to Hangul.
The character names could be found in the Game Information window.
You don't have to manually add them to the Shared Dictionary any more.

But the same as another languages, VNR will not automatically translate the
character name that has only 1 character to Hangul.
And it will not automatically translate names that only contains katakana
(hiragana is fine).
Because katakana name sometimes is just an English word. It could be wrong to
translate it to Hangul by the pronunciation of furigana.

1/5/2014: SUN
* Add Polish language support as requested by @platinum.
You can set the language to Polish in Preferences/Account.
Currently, only Microsoft and Google translators do support Polish language.

1/3/2014: FRI
* Fix ApRicot engine to split character names from dialog texts.

1/2/2014: THU
* The way to split sentences for LEC and Atlas is changed.
This will significantly improve the quality to translate multiple sentences.
Thanks for @andrix sama's report!

* Add Taskforce2 engine.


Tested working with different versions of and ().
Feel free to update those games to the latest version, and select Taskforce2 in
Text Settings.

Note: It only guarantees to work with Taskforce2.exe instead of


Taskforce2_safe.exe.

Taskforce2
()
Taskforce2

Taskforce2.exe Taskforce2_safe.exe

btw, I updated the wiki for using VNR on Wine.


If you are using VNR on Mac or Linux, the following articles might be helpful:
http://sakuradite.com/wiki/en/vnr/mac
http://sakuradite.com/wiki/en/vnr/linux

12/31/2013: TUE
* No need to install msvcrt 2008/2010 manually on Windows XP/7/8 x86/x64.
No external libraries are needed to be installed to launch VNR on a newly-
installed Windows.
Windows msvcrt
Windows library VNR

* By default, VNR will automatically detect whether you have got Internet access.
If the detection does not work well, you can force enabling/disabling the
Internet
in Preferences/Features.
VNR
/

* As requested by @nixanol, VNR will not popup translations when all dictionaries
are disabled in Preferences.

* @djz020815: jbeijing
@Hdgdyl = //(
)
@Hdgdyl,@Goodboyye,@Zhugeqiu = //**
@Hdgdyl,@Goodboyye,@Zhugeqiu = //**
=> @Goodboyye
= //
= //

* JBeijing bug that


@djz020815 sama debug
12/30/2013: MON
* Reduce the resource usage when VNR is idle.
Thanks for @winter3d sama's report.

12/28/2013: SAT
* Add a few translations for different languages.
Most of the new translations come from Google, some of which might be
inaccurate.

* Offline help text is reduce to only cover basic usage.


Advance help text is moved to the online wiki at:
http://sakuradite.com/wiki/en/vnr
It will make me easier to render and maintain the help text for different
languages.
You can use your VNR's account to log in to the wiki to edit the text as well.

Wiki :
http://sakuradite.com/wiki/zh/vnr
VNR Wiki

12/27/2013: FRI
* Extend the Rejet engine to support .
Tested working with , version 1.00 and 1.02.
Rejet

12/26/2013: THU
* Add System43 game engine for Rance series games.
Tested working with and 01 .
The global repetition elimination option in Text Settings is disabled for
System43 engine.
You can update Shared Dictionary to get the terms to eliminate repetition and
garbage
text for Rance games.

Rance System43
System43

* Add hooks to MultiByteToWideChar and WideCharToMultiByte.


Tested working with AlterEgo.
Some BL games might also need these functions
(http://blgames.proboards.com/thread/265).
Thanks for @Goodboyye sama's suggestion.

MultiByteToWideChar WideCharToMultiByte
@Goodboyye sama

12/25/2013: WED
* Fix the issue that VNR might crash VenusBlood series games.
Thanks for @winter3d & @hsz10102007's help on reproducing the crash.
VNR VenusBlood
@winter3d & @hsz10102007 sama

* The "Glow" button in the left dock is renamed to "Transp" standing for
transparency.
The functionality is not changed.

12/22/2013: SUN
* Add game engine for Rejet games.
Tested working with Tiny Machinegune, I, and II.
The text threads are displayed as Rejet@CaoNiMaGeBi crediting to CaoNiMaGeBi
sensei's work.
Rejet
Rejet@CaoNiMaGeBi

* Fix a bug that might cause VNR fails to sync with VOICEROID+.
VNR VOICEROID bug

* Fix a bug that when the game crashes during screen resolution change,
it might cause SpringBoard to have zero size and hence disappear.
Thanks for @ sama's report.
bug that SpringBoard
@ sama

12/21/2013: SAT
* cdnjs q GameBoard

* Add Bruns2 engine to support recent games like


.

Bruns2

* I tried to add dlls to the blacklist to prevent game from being crashed by VNR.
I suspect certain DLLs on some specific platforms could crash the game, but I
am not sure what they are.
If VNR still crashes games on your laptop, esp. when you are using Windows XP,
could you try following steps and email me the list of dlls the problematic
game is using?

1. Download listdlls from Microsoft: http://technet.microsoft.com/en-


us/sysinternals/bb896656.aspx
2. Launch the game with or without VNR
3. Open Command Prompt
3.1 Find ProcsssID of the application by executing:
tasklist
3.2 Get list of dlls by:
listdlls _game_process_id > output.txt

It the game crashes, it would be quite helpful if you can email me that
output.txt.

DLL
dll
VNR Windows XP
dll

1. listdlls Microsoft: http://technet.microsoft.com/en-


us/sysinternals/bb896656.aspx
2. VNR
3. Command Prompt
3.1 tasklist PID
3.2 dll output.txt
listdlls _game_process_id > output.txt

* Add a button to the left docked panel which can toggle whether split long
translation
into sentences by punctuations.
If the game text is very long in, say, Electro Arms, splitting the translations
might make it easier to read.


Electro Arms

* By default, VNR will popup translation for CLICKED Japanese word.


I added a toggle to the left docked panel which can change this behavior to
popup translations for HOVERED text.

VNR
toggleVNR hover

* The option to disable Dub Voices is removed from the left dock.
If you want to disable Dubbing Voices, you can press the Disable button in
Voice Settings.

12/18/2013: WED
* I forgot to push the changes to Malie2 to the repository yesterday...><
Electro Arms should work now. Sorry for the inconvenience!
Just disable all options in Text Settings and reselect correct Chara and
Scenario threads.
Here's a screenshot of Text Settings for that game which might be helpful.

http://i859.photobucket.com/albums/ab155/jichi/7121984C2_zps5141b0d5.png

Malie2
push dll ><
Electro Arms

12/17/2013: TUE
* I rewrote the Malie2 engine for new games from light.co.jp.
It can extract both character names and the complete game text now.
Tested to work perfectly for Electro Arms and BRAVA!!.

The old signature for text threads cannot match new Malie2's threads.
Please reselect correct text in Text Settings.

btw., I had to write an extern_fun for Malie2 to dispatch game text at runtime.
So, there is no equivalent H-code for this engine.

Thanks for @ sama's report for the issue.

liight Malie2

Electro Arms BRAVA!!

12/16/2013: MON
* Fix the regression on x64 Windows that VNR sometimes crash the game.
Really sorry for the inconvenience because of the crash!
VNR 64

* Disable "Keep all scenario threads" options for Malie and Malie2.
light Malie Malie2
12/15/2013: SUN
* @Kodoku sensei JBeijing
- =
- =
- =
- =
- =
- =
- =
- =
- =
- =
- =
- =
- =
- =

12/14/2013: SAT
* Add a button to the left docked option menu which can toggle displaying current
time
as requested by @.

* I rewrote the exception handling mechanism in ITH.


If VNR still periodically crashes your games, just let me know!
Additionally, dlls for Windows 7, XP, and Wine were merged together.
There are no more vnr*xp.dll and vnr*ux.dll.
If you have anti-virus soft installed, please re-add VNR's dlls to your
whitelist.

Special thanks to @Zinc Zhou for helping me identify the issue from exceptions.

VNR VNR
VNR dll
@Zinc Zhou sama

12/12/2013: THU
* Add a Padding button to the docked FS button group which can toggle the black
padding in full screen.
It might be helpful if the game is not able to enter full screen, say, on Wine.
/
Wine

btw., VOICEROID+ works out of box with VNR on Wine 1.7.


- For , nothing extra is needed to do.
- For , .NET is needed to be installed through winetricks.

btw., VOICEROID+ VNR Wine 1.7


-
- .NET winetricks

12/10/2013: TUE
* Always disable keeping all scenario threads for text threads ending with 'A' or
'W'.
A W

* djz020815
@Hdgdyl,@Goodboyye,@Zhugeqiu = / //

@Hdgdyl,@Goodboyye,@Zhugeqiu = //

@Hdgdyl,@Goodboyye,@Zhugeqiu = //

@Goodboyye = //
@Hdgdyl,@Goodboyye,@Zhugeqiu = //

@Hdgdyl = //

@Hdgdyl,@Goodboyye,@Zhugeqiu = //
@Hdgdyl = //

@Hdgdyl,@Zhugeqiu = / //
@Goodboyye,@Zhugeqiu = //=>
@Hdgdyl,@Zhugeqiu = //leaf/
@Hdgdyl,@Goodboyye,@Zhugeqiu = //
@Hdgdyl,@Zhugeqiu = //
@Hdgdyl,@Zhugeqiu = //

@Hdgdyl,@Goodboyye,@Zhugeqiu = //

@Hdgdyl = //
@Hdgdyl,@Goodboyye,@Zhugeqiu = //
@Hdgdyl,@Goodboyye,@Zhugeqiu = //
@Zhugeqiu = //

12/9/2013: MON
* Bugfix for the Shared Dictionary.
bug
@ sama

12/7/2013 SAT
* It seems that certain options in Text Settings are misused for a large amount
of games.
Now, VNR will force disabling certain options for the following game engines:

NEVER KEEP ALL SCENARIO THREADS:


- CIRCUS
- KiriKiri1
- KiriKiri2
- MAJIRO

NEVER TURN ON GLOBAL REPETITION FILTERS:


- CIRCUS
- KiriKiri1
- KiriKiri2
- MAJIRO

- Artemis
- BALDR
- BGI
- Gesen18
- RealLive
- QLIE
- QLIE2
- NEXTON
- ShinaRio
- SiglusEngine
- SiglusEngine2

The explanations for these two options are as follows:


1. Regarding the first option, it should never be enabled UNLESS the scenario
text thread FLOATS each time you launch the game.
I mean, UNLESS the NUMBER after the thread name in Text Settings changes
every time you launch the game, such as in BALDRSKY ZERO.

By default a text thread is identified by its address, context and


subcontext.
The NUMBER after the thread name is combined from these factors.
For games like BALDRSKY ZERO, the address of the text changed every time you
launch the game. As the result, VNR is not able to locate the text thread.
When that option is turned on, VNR will instead identify the text threads
by the names of the functions being hijacked, so that even the address or
the context of the text threads varies each time you launch the game, VNR
can still identify the text from the function that the text comes from.

UNLESS the above case (the NUMBER above the text thread varies) happens,
this option SHOULD NEVER BE TURNED ON.
For common game engines like KiriKiri and Majiro, this option should NEVER
be turned on.

2. Regarding global repetition filters, it is NOT needed for most of game


engines.
The only engine that I know might need global filters is MALIE (not MALIE2)
from light.co.jp.
When this option is turned on for games that do not need it, it could, say,
turn into .
This will significantly downgrade the correctness of the machine
translation.

ITH does have built-in repetition filter to smooth repetitive text like
"AABBCCDD".
And this filter is ALWAYS TURNED ON.
But, the filter requires one or two input texts to get trained and warmed
up.
As the result, you might find the first one or two sentences to have
repetitions
and the later texts do not have repetitions.
BUT, YOU DONT'T WANT TO TURN ON GLOBAL REPETITION FILTER FOR THE FIRST FEW
SENTENCES.
Otherwise, it will mess up any other texts after the first two sentences.
This phenomenon is quite common in KiriKiri games.

For KiriKiri games, there are usually two kinds of text threads: KiriKiri1
and KiriKiri2.
KIRIKI1 is ALWAYS PREFERRED OVER KIRIKIRI2.
Because KiriKiri2 sometimes fails to detect repeating texts, and the
difference
between KiriKiri2 and the original game text is very subtle and hence
difficult to tell.
One example was found by @lambl in where (father) becomes
in KiriKiri2:
Game Text:
KiriKiri2:
So, if KiriKiri1 exists, please always use KiriKiri1 instead of KiriKiri2!
Sometimes, there are repetitions that only appear in certain part of the
game text,
such as KiriKiri1's name thread.
For example, in , the repetition only appears in the name thread like
this:

Such repetition can be accurately removed by adding regular expression rules
to the Shared Dictionary RATHER THAN ENABLING GLOBAL REPETITION FILTER.
If you don't know how to do this, you can search for "repetition" in Shared
Dictionary or shoot me an email for help.

*
VNR


- CIRCUS
- KiriKiri1
- KiriKiri2
- MAJIRO


- CIRCUS
- KiriKiri1
- KiriKiri2
- MAJIRO

- Artemis
- BALDR
- BGI
- Gesen18
- RealLive
- QLIE
- QLIE2
- NEXTON
- ShinaRio
- SiglusEngine
- SiglusEngine2


1. thread

BALDRSKY ZERO

VNR context subcontext



BALDRSKY ZERO
VNR
VNR


KiriKiri Majiro

2.
light MALIE MALIE2


ITH "AABBCCDD"

train warm up



warmup KiriKiri

KiriKiri KiriKiri1 KiriKiri2


KiriKiri1 over KiriKiri2
KiriKiri2
KiriKiri2 KiriKiri2

@lambl KiriKiri2

Game Text:
KiriKiri2:
KiriKiri1 KiriKiri1 KiriKiri2

KiriKiri1 thread




repetition

12/4/2013 WED
* djz020815
@Hdgdyl = //
@Hdgdyl,@Goodboyye,@Zhugeqiu = / //

@Hdgdyl = //

@Hdgdyl,@Goodboyye,@Zhugeqiu = //

@Hdgdyl = //

12/3/2013 TUE
* You can search for games by creators in the game board.
GameBoard

12/2/2013 MON
* VNR

12/1/2013 SUN
* Add hooks to MultiByteToWideChar (SHIFT-JIS) and WideCharToMultiByte (UTF-16)
MultiByteToWideChar WideCharToMultiByte hook

If you have anti-virus installed, don't forget to re-add VNR's dlls to your
white list.
VNR dll

11/30/2013 SAT
*
VNR OPED Trailers

* I tried to fix the mysterious crash issue for Venus Blood series by reverting
some of the code.
But I could not reproduce the issue on my laptop, and I am not if the issue is
fixed now.
If the game still crashes esp. on Windows XP, feel free to complain to me!

Venus Blood
reproduce
Windows XP

11/27/2013 WED
* Add support for associating games with DLsite in game information.
dlsite

11/25/2013 MON
* djz020815
- @Hdgdyl =
- @Hdgdyl,@Goodboyye,@Zhugeqiu: =
- @Hdgdyl,@Goodboyye,@Zhugeqiu: =

11/24/2013 SUN
* djz JBeijing
- @Hdgdyl,@Zhugeqiu,@Goodboyye: =
- @Hdgdyl: = => =

* Locale Emulator (>=1.0.7.4) no longer requires administrator privileges to


work.
Thanks for Paddy Xu sensei's time and effort!
Since it seems to always work well than NTLEA in Windows Vista/7/8,
I changed it to the recommended locale changer for VNR.
You can get the latest version of Locale Emulator here:
https://app.box.com/LocaleEmulator
You can say THANKS to Paddy Xu sensei here:
http://bbs.sumisora.org/read.php?tid=11045407

Locale Emulator>=1.0.7.4
Paddy Xu
Windows Vista/7/8 NTLEA
VNR Locale Emulator

https://app.box.com/LocaleEmulator
Paddy Xu
http://bbs.sumisora.org/read.php?tid=11045407

* I tried debugging VNR for XP. I suspected the issue was cause by illegal heap
permission.
But I am not sure if the issue is fixed or not since I am not able to reproduce
the issue myself.
If VNR still crashes your game on Windows XP, just let me know.

VNR VNR XP

11/23/2013 SAT
* Bug fix for machine translation.

* Add a machine translation testing app to the Spring Board.


It might be helpful to debug Shared Dictionary.

* G
/

btw. G

11/20/2013 WED
* Fix the bug that the h-code in the Hook Code Dialog was sometimes
inconsistent with the current game.
bug
@ sama

11/19/2013 TUE
* By default, VNR will automatically change SpringBoard wallpaper for different
games.
You can disable this behavior in Preferences/UI.
VNR SpringBoard
/

* The hentai button in the left docked toobar is moved to the popup options.
Hentai

11/18/2013 MON
* Ensure that texts are copied to the clipboard.

* Google TTS performance is improved.


Google TTS

* Add support for VOICEROID+ and .


You can specify the locations of voiceroids in Preferences/Locations/TTS.
Additionally, the interface of TTS is simplified.

Note:
Due to technical difficulties, the integration with VOICEROID+ is not as good
as SAPI.
- Currently, only and are supported.
Other voiceroids such as TALK are not supported.
- VNR has to launch the voiceroid application.
- Communication with will mess up the Clipboard.

VOICEROID+
// VOICEROID+

VNR VOICEROID+ SAPI


- VNR VOICEROIDTALK
- VNR VOICEROID
-

11/12/2013 TUE
* bug Kodoku
Kodoku JBeijing

@Hdgdyl =
@Hdgdyl =
@Hdgdyl =
@Hdgdyl =
@Hdgdyl = ** ORZ

@Zhugeqiu =
@Goodboyye =
@Goodboyye =

11/10/2013 SUN
* Fix the bug that the character name text thread could not be disabled in Text
Settings.
Thanks for @ sama's report!
bug
@ sama

* VNR will compile character names in Game Information into MeCab dictionary at
runtime.
This ensures that the character names can be recognized by MeCab.
However, VNR will skip pure katakana and hiragana names which have less than 2
characters.
Compiled csv and dic files could be found in the following location if you want
to use them
for other purposes:
%APPDATA%/org.sakuradite.reader/caches/mecab

VNR MeCab
VNR

btw, Yahoo JLP is said to be the best Japanese language parser out there.
But it is an online service and would be too slow to add to VNR.
I found a Perl script that could compile Wikipedia with YahooJLP into offline
MeCab dictionary.
http://chasen.org/~taku/blog/archives/2007/06/yahoomecab.html
This should improve the accuracy of MeCab parser a lot.
I will add this to VNR when I have time.

11/9/2013 SAT
* Fix the issue that fullscreen-ed game might have black border on the top.
Fix the issue that VNR sometimes went out of screen after launching the game.

VNR

* Fix the bug that certain chara terms in Shared Dictionary are not applied.

* VNR will check integrity of itself on the startup.


It will warn you if it notices certain files are missing.
This could happen when, for example, vnrcli.dll or pydasm.pyd is quarantined
by your anti-virus soft after update.

VNR
vnrcli.dll pydasm.pyd VNR VNR

11/7/2013 THU
* I wrote a simple script to ease downloading VNR.
If you want to re-download VNR, just paste the command below to your Command
Prompt,
It will automatically set up VNR at the current folder (only works for Windows
7 or above).
You don't have to go to Google Code to manually download the zipped installer.

@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-


object net.webclient).DownloadString('http://sakuradite.org/reader.ps1'))"

VNR
VNR@powershell Command
Prompt
VNR
Google Code Installer VNR

Google Code installer

Windows 7 Windows XP
VNR

* NEXTON engine is updated following CaoNiMaGeBi sensei's instructions.


The new game engine can extract game characters and work for new games
like 2 .

Note: If you are using anti-virus soft, don't forget to re-add VNR's dlls to the
whitelist.

CaoNiMaGeBi NEXTON

2

VNR dll

11/7/2013 WED
* Fix issue that newly added games are not showing up.
Thanks for @lambl's report!

lambl sama

11/3/2013 SUN
* Software Update will also update EDICT dictionary.
EDICT

* VNR will update EDICT at most once a month instead of once a day.
EDICT

11/2/2013 SAT
* Able to render the translation in EDICT and Shared Dictionary as Furigana.
This might be useful if you know 50 and are familiar with Japanese syntax,
but have difficulties to understand kanji.
An example of rendered texts from ChuSinGura is as follows:


deplorable kyoto and vicinity okuno feudal retainer or warrior
big portion


kyoto and vicinity vengance same mind search difficult

You can turn this on in Preferences/Translation.


The game story in Game Information will also be translated in this way.

* Able to translate Japanese to http://ja.wikipedia.org/wiki/.


is an intermediate language between Japanese and English.
It might be helpful you know basic Japanese but have difficulties to recognize
kanji.
in VNR is similar to lou5 in Perl, except the translation is represented
in
English instead of .
You can turn this on in Preferences/Translation. An example is as follows:

:
: catalogue dog number write down forget

http://ja.wikipedia.org/wiki/

11/1/2013 FRI
* Thai is changed to non-Asian language which will share translations with
English.
The only Asian languages left are Chinese, Japanese, and Korean.

10/31/2013 THU
* JBeijing djz efforts

- =
- =
- =
- =
- =
- =
- =
- =
- =
- =
Goodboyye
- =
- =

10/28/2013 MON
* Add download buttons to the Game Information window which can download all
images
or YouTube videos (in mp4 format) to the Desktop.
YouTube ( mp4)

* I added an option to Text Settings which can preserve SPACES in game text.
If you want to preserve spaces between words, especially for English games,
you can simply toggle that option in Text Settings.
Don't forget to change the game language from Japanese to English in Text
Settings
as well if you want to have VNR to translate English to your own language.

This option might also be useful for RPG games such as .


When enabled, VNR will insert spaces between words like
messages
I plan to add an alternative way for rendering translations for such messages
in a way similar to the current Mac-like Growl pop-up notifications.

RPG

RPG
Mac Growl message

* The interval when guest users are allowed to edit shared dictionary is reduced
from 15 days to 7 days.
Some guest users messed up the anonymous entries in the shared dictionary last
week end.
I had to manually examine and revert their changes to the database in past 15
days
which is really a waste of time.
I am thinking to track the IP addresses of anonymous users to prevent them from
editing other anonymous entries.
If you are relying on the Shared Dictionary, it might be better to get an
account
instead of using guest account to protect your efforts from being messed up by
others.

15 7
15
guest
VNR

10/24/2013 THU
* Bugfix while rendering romaji furigana when MSIME is not installed.

Note: If you are relying on the Furigana feature in VNR to help read Japanese,
it is highly recommended to install Microsoft Japanese IME, whose dictionary
could improve the correctness of furigana a lot.
You can find whether VNR has detected MSIME in Preferences/Location.

VNR

/

10/23/2013 WED
* Vietnamese and Indonesian languages are categorized as European languages
instead of Asian ones.

BTW, internally, languages in VNR are categorized as either Asian or non-Asian.


Currently, the only Asian languages are: Japanese, Chinese, Korean, and Thai.
Vietnamese and Indonesian are used to be treated as Asian.
Text processing for Asian and non-Asian languages are very different.
- Non-Asian languages will share translation with English, while Asian ones will
not.
- Characters in Asian language will be transcoded, while non-Asian ones will not.
- Character names in Asian language will be escaped, while non-Asian ones will
not.
- Text to translate to Asian languages will be split into paragraphs;
text to translate to non-Asian languages will be split into sentences.
- The algorithm to render Asian and non-Asian fonts are different.

* Display game characters and their CVs in Game Information.


If you have TTS installed, VNR will read the Japanese name you clicked.
VNR will also copy the clicked text to the Clipboard.
CV
TTSVNR
VNR

* VNR will try to search game character names online, and use the names to
correct MeCab's as well as machine translation.
Note: Looking up character names for machine translation works for all
languages
EXCEPT KOREAN AND THAI.

Take Dies irae as an example.


1. You can find " " in Game Information.
VNR will automatically translate:
- => Ayase
- => Kasumi
- => Kasumi-san
- => Kasumi-chan
- => Ayase Kasumi
- => Ayase Kasumi
Additionally, it will force MeCab to parse to and to .

Basically, if the character name is like "A B C" or "ABC", then VNR will
automatically
translate "A B C" and combinations of "A" and "C" with the title terms in the
Shared Dictionary,
UNLESS the following exception happens.

2. There is one exception that VNR will skip the character name if it has only
1 character
or contains (but is ok).
For example, given , VNR will only translate and
,
but will not translate which only has one character.
Similarly, VNR will not translate which contains .

You can find the automatically detected character names in Game Information.
Currently, there is no way to alter or disable the character names.
If you don't like the automatically translated names, you have to create an
entry in the Shared Dictionary to override the bad character name.
The definitions of character names in the Shared Dictionary have higher
priority
comparing to the ones in Game Information.

VNR
Dies irae
1. " "
VNR
- =>
- =>
- =>
- =>
- =>
- =>
VNR MeCab

"A B C""ABC" VNR "A B C"


"A""C"

2. VNR (but is ok).


VNR

VNR



VNR
VNR

VNR getchu
getchu
getchu VNR
VNR getchu
getchu

10/18/2013 FRI
* Bugfix for WolfRPG engine. Games like othErs should work without /H code now.
Thanks for @asdzx257 sama's report!
WolfRPG othErs
@asdzx257 sama

10/16/2013 WED
* Show keywords on Game Board.
Game Board

10/13/2013 SUN
* Add game engine for RPG maker. The text threads are marked as WolfRPG.
Wolf RPG

* VNR will popup machine translation as tooltip for game titles, story, etc. in
Game Information.
tooltip

10/12/2013 SAT
* @ JBeijing

* Modify Bruns engine so that it can recognize .


btw., instead of checking "bruns.exe", VNR will check existence of "args.txt"
to identify Bruns games.

Bruns

* It seems that the option of keeping all scenario text threads in Text Settings
is misused for a large amount of games.
Now, VNR will popup following WARNING if you are trying to turn on that option.

Are you sure to keep all scenario text threads?


You might NOT want to enable this unless the ADDRESS OF TEXT
(the gray the number) varies each time you launch the game!

WARNING:
For example, if there are several threads marked as KiriKiri,
when you turn this option on, VNR will translate ALL KIRIKIRI TEXTS.
This could result in A LARGE AMOUNT OF GARBAGE, which is NOT what you want!


VNR


KiriKiri
VNR KiriKiri

10/11/2013 FRI
* Clicking sentences in Game Information will trigger TTS to read the text out.
Double-clicking words in Game Information will pop up translation from EDICT
and EPWING dictionaries..
TTS EDICT
EPWING

10/10/2013 THU
* Japanese text in Game Information is also parsed with MeCab and MSIME
the same way as game text.

10/6/2013 SUN
* Updater is slightly changed.

* Updater can run on Wine now.


Wine Mac

10/4/2013 FRI
* Bugfix for BALDRSKY ZERO's game engine.
Thanks so much for @ok123 sama's help!
VNR BALDRSKY ZERO
ok123 sama

10/3/2013 THU
* Display sample images, story, and reviews from Amazon.co.jp in Game
Information.
Amazon

* VNR
@ sama

* Add game engine for BALDRSKY ZERO.


You can find the correct thread marked as BALDR@ok123 in Text Settings.
Thanks so much for @ok123 sensei's /H code!

BALDRSKY ZERO
BALDR@ok123
@ok123

btw, the new game engine for BDZ is implemented in Python using pydbg instead of
using C++ in ITH engine dll. I am planning to gradually move existing game
engines
in ITH to Python side and finally get rid of the C++ ITH engine from VNR.
It will be much more stable and flexible to manipulate game engines out of game
in Python instead of within the game like ITH.

Additionally, it will allow me to "scriptify" the logic of the game engines.


I am planning to create some kind of sharing mechanism so that everyone can
easily add
new game engines to VNR. The mechanism might be similar to the current Shared
Dictionary
except that the shared things will be Python scripts instead of dictionary
entries.
I feel describing a game engine logic in Python is extremely simple.
As an example, my Python script to define BALDR engine is as follows.
I feel it might be a better way to preserve hooks than using plain /H code
since a game engine can identify a bunch of similar games and it can expose
the logic behind the /H code.

import os
from sakurakit import skwin
name = skwin.get_process_name(pid)
if name == 'bsz.exe': # BALDRSKY ZERO
from gamedebugger import GameDebugger
dbg = GameDebugger(pid)
if dbg.active():
# See (ok123): http://9baka.com/read.php?tid=411756
pattern = 0x90, 0xff, 0x50, 0x3c, 0x83, 0xc4, 0x20, 0x8b, 0x45, 0xec
addr = dbg.searchbytes(pattern)
if addr > 0:
code = "/HQN4@%x" % addr
from texthook import texthook
texthook.global_().addHook(code, name="BALDR")

10/2/2013 WED
* Enable SEH to reduce the change that ITH gets crashed.

* Ensure that Python will recompile byte code after updating VNR.
VNR Python VNR

* Fix the issue that VNR cannot extract correct text fromMagical Marriage
Lunatics.
Thanks a lot for @w774908117 sama's report
Magical Marriage Lunatics
@w774908117 sama
* VNR will extract text from Lstr functions if and only if it cannot find a game
engine for the game.
I made this decision as I feel Lstr threads usually produce rubbish text than
being helpful,
If the game already has an engine, texts from Lstr are useless.
Also, Hijacking Lstr may crash ITH in games likeMagical Marriage Lunatics.

VNR Lstr
Lstr
Lstr
Lstr Magical Marriage Lunatics

10/1/2013 TUE
* Fix infinite repetition elimination algorithm so that VNR can extract text from
Dies irae.
VNR Dies irae

* Bugfix for rUGP game engine

* The terms for TTS and character names in the Shared Dictionary will also be
used to improve the quality to unparse Japanese text to furigana.
Here's the description added to the help page:

Improving Unparsing Furigana

VNR could use MeCab and MS Japanese IME to unparse Japanese text to furigana.
Non-regular-expression terms for TTS and character names will also be used to
improve unparsing furigana.
Their patterns will be used to split Japanese text.
Additionally, the translation of TTS terms will be used to replace the
furigana from MeCab or MS Japanese IME.

VNR

VNR MeCab


MeCab

* Add Artemis@CaoNiMaGeBi engine.


It covers a large amount of games (ohp: http://www.ies-net.com/).
Cite @CaoNiMaGeBi's original post:

RECENT GAMES:
[130927]
[130927]
[131025]
CLIENT ORGANIZAIONS:
CROWD
D:drive.
Hands-Aid Corporation
iMel
SHANNON
SkyFish
SNACK-FACTORY
team flap
Zodiac







CUCURI





9/30/2013 MON
* Prevent VNR from hooking to Windows Media Player

* Bugfix for Waffle and Nitro+ game engine

* Fix the bug for adding/removing games in SpringBoard

* Show visit count in Game Board

* It seems the repetition filters in Text Settings are over-used.


Now, VNR will pop up a warning as follows if you are trying to turn on
global repetition elimination in Text Settings:

Are you sure to turn on repetition filter?


You might NOT want to turn this on unless the game text is FULL OF repeats.
Few games really need this option.

This option only serves to eliminate repetition.


It has NOTHING to do with finding NEW game text.

WARNING: If the game do NOT have repetition but you turn it on,
it might significantly downgrade the translation quality.

If only some of the game text repeat while some not,


it is better to add some regular expressions to Shared Dictionary
than turning on global repetition filters here.


VNR

If you find repetition filters are turned on in Text Settings,


you might consider turning them off which might improve translation quality.

9/29/2013 SUN
* Spring Board filter will not show unmatched games.
Thanks for @lambl sama's suggestions.

SpringBoard lambl sama

* Debug ITH extensively.


It took me a week to debug ITH on Mac. Several bugs were fixed on the way.

* Rewrite ITH so that it can work on wine.


I only tested VNR on my MacBook, but I believe it would work on Linux as well.
Some screen shots are as follows:

Normal window with manual/machine/online translations


http://sakuradite.com/images/screenshots/mac1.jpg

Full screen mode and EPWING


http://sakuradite.com/images/screenshots/mac2.jpg

Preferences and text settings


http://sakuradite.com/images/screenshots/mac3.jpg

Shared dictionary and manual translation


http://sakuradite.com/images/screenshots/mac4.jpg

SpringBoard and game information


http://sakuradite.com/images/screenshots/mac5.jpg

Currently, support for Wine on Mac is at primitive stage.


I am not sure if I should put the entire VNR on wine, or to put wine on native
Python/Qt
in the future. And I don't know exactly which features are broken on wine.
If you are interested, you could try getting wine and run VNR on it.
Following is a summary of working/broken functionalities that I tested on Mac
OS X 10.8.5
using Wine 1.7.

+ Tested games that work out of box


- CROSS CHANNEL (English version)
- ChuSinGura47+1
-
-

+ Features that work out-of-box


- General hooks ending with A or W, game engines, and /H code
- Online machine translation such as Baidu
- Offline translators like JBeijing
- Manual subtitles and comments
- Shared database of game profiles
- Shared dictionary
- MeCab, EDICT, and EPWING
- Flashy GUI including Growl, SpringBoard and GameBoard
- Translate window text and menu
- Game wizard and game detection
- Locale changing
Wine could be launched with Japanese locale
Apps including AppLocale or NTLEA are not needed and are disabled

+ Features that partially work with issues


- Full screen mode
Stretching game window works out-of-box.
But changing screen resolution does not work well.

- Update
Updater on Wine does not work.
If you have MacPorts installed, you can install Mecurial using
port install mercurial
And then, execute "Library/Debug Update (Mac).sh" to perform update.

+ Broken features
- Offline TTS such as VoiceText Misaki
- Looking up Microsoft Japanese IME's dictionary
- Drag-drop game to SpringBoard

+ Crash
- Injecting game might crash it
- Closing VNR before closing game might crash the game
You might have to close the game before closing VNR.

You will need Wine and some knowledge of unix command line to set up VNR on
Mac.
I am not sure if I should package and distribute pre-configured Wine binary.
Wine is kind of too large to distribute (up to 1GB), and it might violate
copyright
if I distribute Microsoft binaries together like d3dx.
I think I might write some scripts to simplify installing VNR for Mac in the
future.
Currently, here's what I did to make VNR work on Wine manually.

1. Get Wine from either Darwine or MacPorts


Option 1:
- Download Darwine from: http://sourceforge.net/projects/darwine/
- You don't have to install Wine, which is be broken anyway.
Just drag-drop Wine.app to your /Applications folder.
You can find Wine.app in a HIDDEN folder in the downloaded Darwine dmg
Option 2:
- Install Xcode from AppStore
- Install MacPorts from http://www.macports.org/
- Execute: port install wine

2. Install msvcrt and DirectX 9 from winetricks


Get winetricks here: http://wiki.winehq.org/winetricks
Or from MacPorts: port install winetricks
Then execute the following command in terminal:
winetricks vcrun2008
winetricks vcrun2010
winetricks d3dx9
3. Installing windows fronts // Windows
Copy fonts from you Windows/Fonts to ~/.wine/driver_c/windows/fonts

4. Get VNR from http://sakuradite.org/reader.7z


Then, you can launch "Library/VNR for Mac (pre-alpha).sh"
Or manually execute following commands:
export LC_ALL=ja_JP.UTF-8
wine "Visual Novel Reader.exe"

If you have got questions or issues or suggestions, feel free to let me know!

btw, I figured out how to detect spaces in game text by accident.


This will solve the missing-space issue for most English games like
andyour diary.
I will try to add this to VNR in two weeks when I have time.

VNR Wine Mac

JBeijing
http://sakuradite.com/images/screenshots/mac1.jpg

EPWING
http://sakuradite.com/images/screenshots/mac2.jpg


http://sakuradite.com/images/screenshots/mac3.jpg


http://sakuradite.com/images/screenshots/mac4.jpg

SpringBoard
http://sakuradite.com/images/screenshots/mac5.jpg

VNR Mac
Mac Wine Windows VNR
JBeijng Mac

Mac OS X 10.8.5 Wine 1.7


+
- CROSS CHANNEL (English version)
- ChuSinGura47+1
-
-

+
-
- Baidu
- JBeijing
-
-
-
- EPWING
- VNR
-
-
-
Wine
AppLocale NTLEA VNR Mac
+
-

-
Windows Update
VNR MacPorts Mercurial
port install mercurial
Library Debug Update (Mac).sh

+
- TTS VoiceText Misaki
-
- SpringBoard

+
- ITH
- VNR
VNR

Mac VNR Wine Unix

1. Darwine MacPorts Wine


1
- Darwine: http://sourceforge.net/projects/darwine/
- dmg ** Wine.app
Wine.app /Applications
2
- AppStore Xcode
- MacPortshttp://www.macports.org/
- wine
port install wine

2. winetricks msvcrt DirectX


winetricks http://wiki.winehq.org/winetricks
MacPorts port install winetricks

winetricks vcrun2008
winetricks vcrun2010
winetricks d3dx9

3. Windows
Windows7 XP Windows/Fonts ~/.wine/driver_c/windows/fonts

4. VNRhttp://sakuradite.org/reader.7z
"Library/VNR for Mac (pre-alpha).sh"
VNR
export LC_ALL=ja_JP.UTF-8
wine "Visual Novel Reader.exe"

btw galgame

9/27/2013 FRI
* Debug Update Changes.txt
Library Debug Update VNR
9/21/2013 SAT
* Display twitter updates from makers and users in Game Info if you are not
living in Mainland China.

* Game Board performance improved.


Game Board

* Fixed a severe bug when applying translation for character names.


Thanks a lot for @f841202 and @lambl sama's report!


@f841202 @lambl

9/19/2013 THU
* Distinguish and .

* Show data count and on ErogameScape.


9/17/2013 TUE
* Make sure that adding/removing bad /H code will not crash on Windows Vista and
later.
On Windows XP, ITH will still crash with a C00005 exception and you have to
manually restart the apps.


Windows Vista
Windows XPITH C00005

9/16/2013 MON
* Add a new game engine to ITH for games from a-unicorn/ 18
anddo notreceive require /H code to work any more.
The correct text thread is marked as Gesen18@CaoNiMaGeBi
crediting to @CaoNiMaGeBi daisensei.

18

Gesen18@CaoNiMaGeBi @CaoNiMaGeBi

9/15/2013 SUN
* Add an Otome filter to Game Board to find games.
Game Board

* Display median scores from in Game Board.


Game Board

* Access to is restored.

/

9/14/2013 SAT
* Handling exceptions in ITH to make sure that ITH's game engines will not crash
the game.
This might impact a large number of games. Games like could work
now.
Thanks for @yuan2k sama's report!
ITH
@yuan2k sama

* Distinguish different anonymous users using randomized avatars.


If you did not upload an avatar, VNR will also assign a random one for you.
guest
VNR

* The "Game-specific" toggle in the Shared Dictionary is renamed to "Series-


specific".
"Series-specific" terms will not only be enabled in the specified games, but
also in
the games that fall in the same "series".
For example, BUNNYBLACK, BUNNYBLACK2, and BUNNYBLACK3 will share the same terms
automatically as they are in the same series of "BUNNYBLACK".
You don't have to, say, clone your existing game-specific character names for
FD any more.

You can find the game's series in Game Information.


You can find the games in the same series in Game Board.
Currently, VNR is lacking an interface to manually alter the "series", though.
Thanks for @djz020815 sensei's suggestion!


FD
BUNNYBLACKBUNNYBLACK2 BUNNYBLACK3
FD


Game Board
VNR interface
@djz020815 sensei

9/13/2013 FRI
* Update Baidu Chinese online translator.

API VNR

9/11/2013 WED
* Display game series in Game Board.
FD GameBoard

* Add Youdao.com Chinese online translation service support.



/

btw,
VNR



9/10/2013 TUE
* Access to ErogameScape is disabled since ErogameScape is down.

9/8/2013 SUN
* Add common hook functions lstrlenA and lstrlenW to ITH.
Games likefrom PIL/SLASH should work without /H code now.

ITH lstrlenA lstrlenW hook


PLI/SLASH

* Make sure that VNR will not go out-of-screen after the screen resolution is
changed.

* VNR no longer launches games in Japan/Tokyo time zone by default.


You can toggle per-game time zone settings by clicking Edit button on the
Spring Board.
You can also enable the previous time zone hack globally in Preferences/Launch.

VNR
SpringBoard
/

* VNR will speak the current game text using TTS if you click the text box using
middle button.
This shortcut might be helpful if automatic TTS cannot catch the character
names.
VNR TTS

9/7/2013 SAT
* Add a new game engine for games from .
owns several game brands including BaseSon, Liquid, Nomad,
Luxury, SCORE, and recent cinematograph.
The text threads are marked as NEXTON@CaoNiMaGeBi crediting to @CaoNiMaGeBi.

Note: NEXTON games do not require /H code to work any more.


But you have to manually adjust the text threads from HCode to CaoNiMaGeBi.

For example, if you are playing recent


or , please open Text Settings, click the game window,
and then click the "dialog" button above the NEXTON@CaoNiMaGeBi thread.


BaseSonLiquidLuxuryNomadSCORE
cinematograph brand
NEXTON@CaoNiMaGeBi credit @CaoNiMaGeBi

NEXTON
CaoNiMaGeBi



NEXTON@CaoNiMaGeBi

9/5/2013 THU
* I added a new type of terms for helping translate Japanese titles.
The descriptions in the Help of Shared Dictionary are as follows:

The titles can be specified using title terms.


It's pattern must matches the text immediately following a Japanese name.

For example, if you define a chara term to translate to "Weiss",


and a title term as "-general",
then VNR will try to translate to "Weiss-general".

Note:
To reduce the time to process large number of names X titles, VNR internally
will compile all names and titles into a regular expression.
As trade-off, there are certain limitations for describing names and terms
using regular expressions. When regular expression is enabled, "|"
(the "or" operator) and captures like "\1" cannot be used, or it will mess
up your name translation.

"Weiss"""
VNR "Weiss "


VNR

"|""\1"

9/3/2013 TUE
* I removed flashy animations in Game Board.
Since there are so many games, removing animations will reduce navigation time.
Game Board

9/2/2013 MON
* VNR will hide certain tool tips in full screen mode.
VNR tooltip

* Add a new type of terms to Shared Dictionary for translate character names.
The descriptions from the Help page are as follows.

Character Name Terms


You can identify your translations as Japanese names.
If your language is an European language, it is similar to Japanese terms.
Otherwise, if your language is an Asian language, it is similar to Escaped
terms.
The difference is that VNR will try to translate titles around character
names.

For example, if you define a term to translate to "Kaido",


then VNR will also try to translate to "Kaido-chan"
and to "Kaido-sama", etc.





VNR

""
VNR """"

Note: Currently, the titles are hard-coded within VNR, as follows.


It only has English/Chinese translations, and there is no way to modify the
titles.
I will add interface to allow modifying titles later.

VNR

TR_TITLES_EN = {
u"" : "-san",
u"" : "-san",
u"" : "-san",
u"" : "-san",

u"" : "-sama",
u"" : "-sama",
u"" : "-sama",
u"" : "-sama",
u"" : "-sama",

u"" : "-kun",
u"" : "-kun",
u"" : "-kun",
u"" : "-kun",

u"" : "-dono",

u"" : "-chan",
u"" : "-chan",
u"" : "-chan",

u"" : "-shan",
u"" : "-chin",
u"" : "-chi",
u"" : "-chi",

u"" : "-tan",
u"" : "-tan",
u"" : "-tan",

u"" : "-sensei",
u"" : "-sensei",
u"" : "-sensei",
u"" : "-sensei",
u"" : "-sensei",
u"" : "-sensei",
u"" : "-sensei",
u"" : "-sensei",
u"" : "-sensei",

u"" : "-senpai",
u"" : "-senpai",
u"" : "-senpai",
u"" : "-ni",
u"" : "-nichan",
u"" : "-nisama",
u"" : "-nisama",
u"" : "-nisan",

u"" : "-aniki",
u"" : "-aniki",

u"" : "-ne",
u"" : "-nechan",
u"" : "-nesama",
u"" : "-nesama",
u"" : "-nesan",
u"" : "-onesama",
u"" : "-onesan",

u"" : "-sama",
u"" : "-sama",
}

TR_TITLES_ZH = {
u"" : u"",
u"" : u"",
u"" : u"",
u"" : u"",

u"" : u"",
u"" : u"",
u"" : u"",
u"" : u"",
u"" : u"",

u"" : u"",

u"" : u"",
u"" : u"",
u"" : u"",
u"" : u"",

u"" : u"",
u"" : u"",
u"" : u"",

u"" : u"",
u"" : u"",
u"" : u"",
u"" : u"",

u"" : u"",
u"" : u"",
u"" : u"",

u"" : u"",
u"" : u"",
u"" : u"",
u"" : u"",
u"" : u"",
u"" : u"",
u"" : u"",
u"" : u"",
u"" : u"",

u"" : u"",
u"" : u"",
u"" : u"",

u"" : u"",
u"" : u"",
u"" : u"",
u"" : u"",
u"" : u"",

u"" : u"",
u"" : u"",

u"" : u"",
u"" : u"",
u"" : u"",
u"" : u"",
u"" : u"",
u"" : u"",
u"" : u"",

u"" : u"",
u"" : u"",
}

9/1/2013 SUN
* Automatically remove repetition text for games like and Fault.
I am not sure which game could affected. If you have turned on finite
repetition removal in Text Settings, I think you could try turning it off now.

* I added some text to the help of Shared Dictionary to explain how to use it
to eliminate finite repetition in a more accurate way, as follows.
As it is kind of complicated, you can ignore the following if you don't have
any
experience in programming or regular expression.

Repetition Elimination

There are options in Text Settings for removing repeating text.


But the granularity is so coarse that you cannot control how exactly to
remove repetitions.
It might remove more things than what you want.
If the default repetition filters do not work well, you can use the regular
expression
in Shared Dictionary for fine-grain finite repetition removal.

For example, in , the original game text is like


"CharaCharaCharaDialog",
where the character names at the beginning repeat for exact 3 times.
We want to to change it to "CharaDialog".
The default repetition filter will remove repeats in not only Chara, but also
Dialog,
which is not what we want. So, it will be better to add the following term to
rewrite source text:

* Pattern: ^(.+)\1\1
* Replacement: \1

In English, it means that "to replace whatever is repeating for 3 times at


the beginning of the
sentence with the repeated text".
Here, ".+" means whatever.
"(.+)" means to let whatever = "\1".
"(.+)\1" means whatever has repeated twice.
"(.+)\1\1" means whatever has repeated three times.
The "^" sign means it only happens at the beginning of a sentence.

Actually, the built-in finite repetition filter in Text Settings is achieved


using similar regular expressions.
It is similar to the following logic:

* Pattern: (.+)\1+
* Replacement: \1

In English, it means to remove whatever has repeated for more than one times.
It might sound dangerous.
However, for example, "AAABAAAB" will become "AAAB" instead of "ABAB".
This is because the regular expression will try to match maximum number of
repeated characters, which will be "AAAB" instead of "A".

""
3
""

* : ^(.+)\1\1
* : \1

" 3 "
".+"
"(.+)""\1"
"(.+)\1"\1 1 2
"(.+)\1\1"\1 2 3
"^"

VNR

* : (.+)\1+
* : \1



"AAABAAAB""AAAB""ABAB"

"AAAB""A"

8/30/2013 FRI
* Bugfix for parsing /H code that contains spaces.
bug

8/28/2013 WED
* Bugfix for escaped hentai terms.
Thanks @BlueRex sama's report!
Hentai
@ sama

* Display game makers and their twitter avatars in Game Information.


Twitter

8/27/2013 TUE
* Fix the bug for showing random numbers (like xxx.97) in the machine
translation.
bug
@ sama

Warning:
When adding terms to the Shared Dictionary, you should avoid adding translation
for AMBIGUOUS Japanese words. For example, you should never add translation for
a single character like , which could have different meaning under
different contexts.


******
=

* Modify ITH's ShinaRio engine to work with games from .


* Add a new ITH engine for games from Sweet Light, which is marked as Malie2.

8/26/2013 MON
* I added a Hentai flag to the terms in the Shared Dictionary.
Hentai terms will only be enabled after the user enable them from the left
dock.
Basically, you don't want to enable hentai terms unless in H-scene or .
Otherwise, the machine translation might become overly erotic.
The motivation of Hentai terms could be find in the Help of Shared Dictionary,
as follows:
Certain Japanese words have special meaning when come to H-scene.
For example, usually means "ejaculation" instead of "getting out"
under the context.
Also, some translations might be offensive to certain group of people.
You could mark these terms as Hentai so that the users could select
whether to enable them or not.

Hentai
Hentai Hentai
H-scene erotic
Hentai
Hentai
Hentai
H-scene
H

Hentai

8/25/2013 SUN
* ITH is optimized specific to VNR.
Additionally, ITH and VNR can run at the same time now.
But when /H code is applied or game-specific engine are selected,
either VNR or ITH could work rather than both.

Note: Since this version, the dlls in VNR are no longer compatible with ITHv3
any more.
I removed the dead code and a few ITH features that VNR do not need.
As the result, the dlls in VNR do not work with the original ITHv3 any more.

ITH VNR

VNR ITHv3
VNR dll ITHv3

8/23/2013 FRI
* While rendering Japanese, noun/verb will be in red/yellow, while others in
blue/green.

8/22/2013 THU
* Baidu
* Bugfix for the new SiglusEngine.
Credits and special thanks to @CaoNiMaGeBi sensei!

8/19/2013 MON
* The MSIME parser option is removed.
VNR now always uses MeCab to parse Japanese. When MeCab fails to parse
certain Japanese word (such like ), VNR will use MSIME as fallback
if installed.

MeCab VNR

8/18/2013 SUN
* Add new engine for QLIE games.
The text threads are named as QLIE2@CaoNiMaGeBi to memorize @CaoNiMaGeBi who
found it.
Games includinganddo not need /H code any more.
QLIE @CaoNiMaGeBi

8/17/2013 SAT
* Japanese parser
- When MeCab parser is used, VNR will show the of the clicked text that is
formated as:
,,, 1, 2, 3,
An example for is as follows:
,,
,,,
,,,
,,
,,,,,
,,,

MeCab VNR

- MeCab
-

- When MeCab parser is used, VNR look up the original form of the selected word
in the dictionary. For example, when in is clicked,
VNR will look up instead of.
MeCab VNR
VNR

* Text settings
- The hook dialog will also display the most recent hcode deleted by other
users.

- The "keeping all threads generate from /H code" in Text Settings is changed
to
"keeping all threads generated by the selected scenario engine".
For example, if the address of SignusEngine text thread varies on each
launch,
you can turn on that option catch it.

SigusEngine
SignusEngine

* Launch settings
- Always convert dos 8.3 game path like ABC~1.exe to full path name.
DOS 8.3 ABC~1.exe

* ITH fixes
- Fix the issue that ITH sometimes fails to recognize game engine launched by
NTLEA.
NTLEA ITH

- Fix the issue that ITH Brus engine cannot recognize game with msvcrt 2010.
ITH Brus engine msvc2010

- Fix the issue that ITH might crash recent SiglusEngine.


You no longer have to launch the game with NTLEA any more.
ITH SiglusEngine
NTLEA
- I added a new hook to ITH to identify the recent SiglusEngine.
The text thread will be identified as Siglus@ with the credits to
@ who found the hcode for these games.

Note: VNR does not need HCode for SiglusEngine games any more.
Additionally, the new ITH engine will override the text thread from the /H
code.
If you are playing, say, , then you have to manually
change the scenario thread from HCode to Signus@ in Text Settings.

SiglusEngine
Siglus@

VNR SigplusEngine


Signus@

* Notes
- I removed the "beta" tag from the VNR as I feel VNR is out of severe bugs
now.
VNR Beta

- I added some text to the help of Text Settings regarding the name of the
executable, as follows:
Game executable name
The name of the game's executable file might be used by ITH to help
identify the game engine.
If you rename the executable, VNR might not be able to find the game engine
any more.
So, unless the executable contains Japanese characters, YOU DO NOT WANT TO
RENAME THE EXECUTABLE.




ITH VNR

******

8/16/2013 FRI
* Fixed the text repetition issue in .
If you are playing this game, just update the Shared Dictionary and the text
will be correct.


@ sama

8/15/2013 THU
* Show game OP and demo on Youtube in the game information window.
You can download Youtube video to your desktop by clicking the "" button.
Youtube OP Demo

/

* Fixed the regression that VNR might disappear after the game window is
minimized.
VNR
@ sama

8/14/2013 WED
* Fix the issue that ITH would crash the game.
ITH bug
@ sama

* Fixed the ITH's deficiency on removing INFINITE cyclic repetition in game text.
The option can be toggled in Text Settings.
I only tested Lover's Collection, and not sure how good this approach
works.
If you still have repeat text that VNR still cannot handle, feel free to let me
know
the game name.

VNR currently have two kinds of repetition filters, the old finite filter and
the
new infinite filter. The old one is always preferred than the new one.
I mean, if the old finite filter is sufficient, you do NOT want to turn on the
new one.
Some technical details follows.
- The finite filter is applied AFTER extracting the game text from ITH.
The infinite filter is applied WHILE extracting the game text in ITH.
As a result, in Text Settings, toggling finite filter will change existing
texts at once,
while toggling infinite filter will only impact new texts than the existing
ones.
- The infinite filter is slower and takes much more memory than the finite one.
The finite filter is applied to the game text per paragraph, while the
infinite one
is applied while processing each character.
If the finite filter take O(T(s)) time to process string s, then the infinite
one
might take up to O(T(s) * lengthOf(s)) time to finish.
- The finite one can handle whatever kinds of repetitions, while infinite one
can only recognize cyclic repetition,
But you can turn on both finite and infinite filters together to deal with
whatever repetition patterns.

ITH

VNR
cyclic repetition
******

+Lovers Collection

* Support adding games from erogetrailers.com.


The game information on ErogeTrailers is more accurate, and it will help VNR
automatically adding links on amazon, dmm, and getchu.
Manually adding Getchu games is disabled.
ErogeTrailers.com
VNR ErogeTrailers Getfchu Getchu
* You can right-click the game CG in the game information window to save the
images
to the desktop, or drag the images to wherever you want.
CG

8/11/2013 SUN
* Permissions changed for guest users.
Guest users can delete anonymous shared subs and terms.
But they can no longer modify entires added 15 days ago.

15

8/9/2013 FRI
* Automatically remove garbage character "^L" from the game text which might
crash VNR.
Subtitles in games like the English version of Rewrite should work fine now.

* You can browse/export the manual subtitles and their creators of the game in
Game Board without downloading the game.
Game Board

* Fix the ITH bug for finding texts for certain versions of .
Well, if you have purchased that game, ITH should have no problem to find the
text for the original game.
But if you were using certain illegal nodvd cracker, ITH might not be able to
find the correct ShinaRio text.
I modified ITH source code in order to fix the issue.

Since this version, VNR started to use its modified branch of ITH.
The C++ source code could be found in
Library/Frameworks/Sakura/cpp/plugins/ith.
If you do not want to use VNR, but want the features of VNR's ITH, you can
manually
copy the following dlls to your old ITH directory:
Library/Frameworks/Python/ITH*.dll
Library/Frameworks/Python/IHF*.dll
If you have found bugs or suggestions on new common game engine for ITH itself,
feel free to let me know!

Special thanks to @'s bug report for .

ITH
Well ITH
DVD ><
ITH

VNR ITH
C++ Library/Frameworks/Sakura/cpp/plugins/ith
VNR ITH VNR ITH

Library/Frameworks/Python/ITH*.dll
Library/Frameworks/Python/IHF*.dll
ITH bug

@ sama

8/7/2013 WED
* If you choose to block, say, Chinese, VNR will no longer download Chinese terms
and subtitles any more.
VNR

* Fix the timezone bug while processing Japanese date time.

* The exported terms/subs will be saved in Excel-compatible CSV format.


CSV is easier to read by human and parse by program than XML.
If you are a normal user, you can open the CSV files using Excel.
If you are a developer, it might be easier to integrate the terms to your
machine translator
or make a patch from the subs in CSV format than XML.

Excel CSV XML


Excel
patch
CSV XML

8/6/2013 TUE
* Fix a bug in the underlying text hooking code that has existed since the
beginning of VNR,
which might mess up the game text order, say, ABCD => BCDA.
Thanks so much for @lambl's report!
VNR bug ABCD BCDA
@ 1 sama

* You can double-click the text in the popup translation window to read the text
using TTS and copy it to the clipboard.
TTS

8/5/2013 MON
* Bug fix for getting getchu games.
* VNR Excite Google

8/4/2013 SUN
* Bug fix for the full screen mode.

* Allow adding game reference from Getchu.com.


But due to copyright concerns, VNR will NOT save game information on Getchu.
Getchu
VNR Getchu
@goodboyye sama

* Allow editing game information in the Shared Dictionary.


If you have game-specific terms for older versions of the game, you can edit
its information so that both old and new versions of the same game would share
the terms.


* You can turn off furigana from the left docked option window.
If you do not want to learn Japanese, turning off furigana might make VNR to
run faster.

* There were lots of terms from guest users in the Shared Dictionary,
which could be deleted by any other guest.
To protect existing terms from guest, I removed the permission for guest to
delete terms.
If you sign in as guest, you can still disable guest terms, but no longer
delete them.

VNR

8/3/2013 SAT
* The Game Window Text Translation feature docked left supports online
translators now.
But as online translators are much slower and less stable than offline ones,
VNR will use online translators to translate window texts, iff you don't have
any offline translators enabled in Preferences/Translation.


/
VNR

* Add Google translator support.


I feel its English translation quality is not good.
But it might help minority languages like Thai and Vietnamese.
Google

* Google TTS
/

* Add a new "Ratio" button to the "FS" popup.


The differences of "Window", "Screen", and "Ratio" are:
- Window: Keep the resolution
- Screen: Change the resolution without respecting the display aspect ratio
- Ratio: Change the resolution while forcing the current display aspect ratio

*

- :
-
-
@ sama

8/2/2013 FRI
* Fix a bug for searching games in DMM.
* Add a Game Board where you can find known games in VNR's online game database.
Game Board VNR

* Force keeping display aspect while changing resolution for full screen.

@ sama

7/30/2013 TUE
* You can adjust the maximum length of game text in the left dock.
Game text longer than that will be ignored.

VNR

7/29/2013 MON
* Improve performance to render glowing text.
* The "Transp" button on the left dock is renamed to "Glow". Nothing else is
changed.

7/28/2013 SUN
* The Show/Hide button in the left dock is renamed to Pause to be more accurate.
The functionality is the same as before.
/

* I improved the image blurring algorithm to render the subtitles.


Now, you can adjust the text glowing intensity and range from the left dock.
Increasing these factors will make the text more readable, esp. after turning
off the background shadow.
You can press the Transp button on the left dock to toggle these factors.

Warning: Increasing glow factors will also increase CPU cycles to render the
text halo, especially when you have turned off the background shadow.
If you have a very old laptop, you might want to keep the glowing factors
small,
and keep the background shadow.

* Add DMM.co.jp as an alternative reference of Amazon.co.jp.


It covers more recent games than Amazon, such as S2.
After adding a DMM reference, you can find sample CG in game information.

DMM.co.jp Amazon.co.jp
DMM CG

* Display game names in the Spring Board using the names from Amazon or DMM

7/26/2013 FRI
* Fix the issue that VNR might slow down certain games.
VNR @ sama

* Fix the issue that has been existed for long that changing display resolution
might crash VNR.
VNR

* Automatically zoom UI when VNR realizes the display resolution is changed.


VNR

7/24/2013 WED
* Add a button for changing display's resolution to achieve full screen.
When you press the FS button, VNR will show two more buttons:
- Window: Change the game window to fit the screen size
- Screen: Change the display resolution to fit the game window


@ sama

7/23/2013 TUE
* The game images are cached for offline access.
* You can clear the text box from its context menu, or "" button on the header.

7/21/2013 SUN
* The user-defined threads generated from h-code are renamed to "HCode".
Nothing is changed except the naming.
User-defined

* The "Speak" button on the left dock is togglable now.


You can use it to toggle the automatic TTS option.
VNR

* If you are really bothered by TTS, you can disable it in Preferences/Features.


/
VNR TTS

* Switch to lxml to reduce xml processing time.

* Fix the issue the for some games like Zero Infinity, FS failed to remove
the border of the game window.
VNR

* I added a Slim button to the left dock.. When toggled, VNR will switch back
to the old GUI. When pressed, the old blue button is also restored.

Slim
VNR

* I added a new feature to VNR that you can specify/select the name of the game.
The games that are assigned with the same name will share game-specific
subtitles and terms.
Here are some texts from the help for the newly-added Game Information:

- Motivation
In VNR, game settings including user-contributed subtitles and game-specific
dictionary terms are bound
with the game's executable. However, usually the same game has different
versions of executables from
,,, and different updates.
For example, if you have game-specific character names in the Shared
Dictionary, after the game is updated,
the old terms might not work with the latest game anymore.

When that happens, you can create a reference for different versions of the
same game.
The games sharing the same reference will share the game-specific
translations.


VNR

7/17/2013 WED
* Fix the issue that VNR might crash when there are too many unfinished
online translation tasks.
VNR

* Make sure that the FS (full screen) function will preserve game window's
aspect.

* 360
360

7/15/2013 MON
* Automatically recognize and block wrong or malicious user-defined hook code.

7/14/2013 SUN
* Hide the green spinner in full screen mode.

* Automatically bold small fonts.


.

* I added some help text for the Shared Dictionary to show how to use regexp
to help identify character names, as follows:

The regular expression could also help VNR identify character names in the
game text.
For example, in S-1, the original game text is like:
ScenarioCharaName.
And we want to change it to: CharaNameScenario. You can achieve it by
adding a term as follows:
* Target: Original text
* Language: Japanese
* Game-specific: YES -- i.e. only apply to this game
* Regular expression: YES
* Pattern: (.*)(.*) -- Match scenarios as \1 and chara as \2
* Replacement: \2\1 -- swap \1 and \2

Another example, in , the original game text is like: CharaName


Scenario.
And if you want to change it to: CharaNameScenario, you can add a term as
follows to achieve it:
* Target: Original text
* Language: Japanese
* Game-specific: YES -- i.e. only apply to this game
* Regular expression: YES
* Pattern: (.*?)(.*) -- Match chara as \1 and scenarios as \2
* Replacement: \1\2 -- wrap \2 with

VNR
S-1

*
*
* -- i.e.
*
* (.*)(.*) -- \1 \2
* \2\1 -- \1 \2

*
*
* -- i.e.
*
* (.*?)(.*) -- \1 \2
* \1\2 -- \2

7/13/2013 SAT
* I tried increasing the limit for max recursion to ease the exception of
"maximum recursion depth exceeded".
But I am not sure if this could help or not.
If you have got the same issue, feel free to complain to me!

"maximum recursion depth exceeded"


* Automatically hide the task bar after switching to full screen model.

* Fixed the issue that VNR sometimes failed to find game window after restored
from being minimized.
VNR

* Update FTP
Library Debug Update.cmd

Library Debug Update.cmd Update.exe


Update Debug Update
Debug Update Library

* Remove the "always on top" attribute from some of the VNR's windows.

* Prevent VNR from adding HCODE to and Berry's.


These games do NOT need AGTH code to work. Please STOP ADDING HCODE TO IT!

I am really confused! There are already correct texts existing in Text


Settings.
But why people are still trying to add AGTH hcode to it?!
Please make sure there are no correct texts before adding HCODE to the game!
I mean, please try adjusting the text encoding and examining each text thread
ONE BY ONE first before adding new AGTH code!
VNR is NOT using AGTH at all. And bad AGTH code could mess up the game text!

VNR Berry's


******
******
VNR
****** AGTH VNR
7/12/2013 FRI
* Support IVONA TTS for European languages to dub character voices.
Thanks for molitar sama's report!

* Make sure that you can close the left docked panel window.

* I added a FS button to the left docked panel, where you can FORCE stretching
the game window to full screen.

As you know, some games like RPG Maker require changing the resolution to work
in full screen, which does not feel well, and might mess up the game's aspect.

Some games like do not allow VNR to paint subtitles on


it after switched to full screen.

Additionally, after the game enters full screen, VNR has to restrict itself
from obtaining the focus, which will break the game's full screen status.
As the result, you cannot access VNR's native GUI components like context
menus, Text Settings and Preferences.

When that bothers you, you could try pressing the FS button to let VNR take
the control over the game window's full screen status.
This feature works only for certain games like RPG maker,,
and , but does not work well for some GDI games like
><

Thanks for spoxxy sama's suggestion!

RGP Maker

VNR

VNR Windows
native


VNR
RPG maker
VNR ><

7/11/2013 THU
* Fixed a severe bug existing for long time that very long game text might crash
VNR.
CTRL game will not crash VNR now.
Thanks so much to @ 1 and sama for pin-pointing me to reproduce the
issue
by enabling text correction.

VNR
CTRL VNR
@ 1 sama
7/10/2013 WED
* Fixed the regression that pymsime.pyd might crash VNR.
Thanks for @molitar sama's report!
pymsime.pyd VNR @ 0 sama

* The GUI of the word translation popup is slightly changed.

7/9/2013 TUE
* Distribute MSVC redist 2008&2010 together with VNR.
VNR is self-contained now. New users no long have to install these libraries
for using VNR.

MSVC 2008 2010 VNR

* The underlying GUI framework (PySide/Qt4) is updated.


But Qt5 is still not supported by PySide.

* Fix the bug that sometimes VNR becomes zombie process after exit.
VNR

* When the user language is Chinese, always convert Simplified Chinese to


Traditional
Chinese for terms in Shared Dictionary.
/

7/8/2013 MON
* Update Qt
* Prevent VNR from adding hcode to , which will crash the game.
If you find your HCODE would crash the game, please, PLEASE DON'T FORGET TO
DELETE IT!
I might block the users/ips leaving bad hcode within games as punishment!

Again, ITH and AGTH are different. Please make sure there are NO correct texts
in VNR
before adding your AGTH code to ITH engine!

VNR
******
IP

AGTH ITH
AGTH ITH

* The speak button in the left-docked option window is moved to the top of
the text box and displayed as .

* VoiceText TTS

7/7/2013 SUN
* Bug fix to auto-hide the docked option window.

* Add a button to the option window to show context menu in case new users cannot
find it.

* The green spinner is moved to the left bottom corner.
It's color and width indicates how many parallel threads are running in the
background.
For example, when the spinner becomes red, you might want to wait a few seconds
until
VNR finishes the scheduled tasks.



VNR

* I added some help text reading the name of the text threads, as follows:
Each text thread has a name to identify what kind of procedure is being
hooked,
such as "User-defined", "CIRCUS", and "TextOutA".
Usually, you can find the correct text threads according to their names.
There are three kinds of thread names, as follows:

- User-defined:
This thread is generated by user-defined hcode.
The thread name is rendered in red.

- The name does not end with "A" and "W" like "CIRCUS":
This thread is specific to this kind of game engine.
The thread name is rendered in blue.

- The name ends with "A" or "W" like "TextOutA":


This thread is general to all games.
The thread name is rendered in black.

When there are user-defined threads, they usually (90%) have the correct
texts.
Otherwise, if there are threads whose names are ends with neither with "A"
nor "W",
they have more chances to be correct than threads ending with either "A" or
"W".

User-definedCIRCUSTextOutA.


- User-defined

- AWCIRCUS

- AWTextOutA

User-defined 90%
AWAW

7/6/2013 SAT
* The blue button is removed. You can right click the floating option window to
access the context menu.

* Improve JBeijing, Dr.eye and ezTrans by splitting Japanese into sentences.


JBeijing Dr.eye
JBeijing

* Fixed the regression that the "repetition removal" option in Text Settings was
not saved.

* Improve garbage text filtering, esp. for .


sama

* Bing replaces Yahoo as the default online translator.


Yahoo! Honyaku is removed because its translation is almost the same as
infoseek,
except it does not support Vietnamese, Thai, and Indonesian.
The reason I made Bing as the default is not that bing is always better than
Infoseek,
but it supports all languages.

Bing
Infoseek Infoseek
Infoseek
Bing

* The left docked option window is moved out of the game window.

7/5/2013 FRI
* By default, VNR will split the long game text into sentences in different
lines.
You can disable this behavior by toggling [Option/Purge new lines].
VNR
/
@ feat sama

* Bug fix for English machine translators.




VNR

* Game text will be splitted into sentences before sending to online translators.
This might slowdown translation time a little bit.
But I feel translation quality might be more important than the spent time.

@ sama

* Online translators will be applied in parallel instead of one by one.


The appearing order of online translators becomes undefined.

* Automatically remove illegal characters (ASCII code < 32) from the game text.
ASCII 32
* I added an option to Text Settings to allow capturing all user-defined threads
generated by hcode.
Games including Bunny Black 3, ofLOVE!and
should work now.
Here's the text copied from the help of Text Settings:
The text threads generated by user-defined hook code is named as "User-
defined".
The text threads are identified by their addresses in VNR.
But the address of the user-defined thread might vary on different
launches.
When that happens, you can choose to keep all user-defined threads.

User-defined
Bunny Black 3 ofLOVE!


User-defined
VNR

* Able to monitor clipboard in Text Reader.



@ 1sama

7/4/2013 THU
* Block following wrong hook codes for

- /HB8*0:D4@0:GDI32.dll:GetTextExtentPoint32A
- /HA-C:40@0:GDI32.dll:GetTextMetricsA
- /HA8@394F8:gdi32.dll

This game DOES NOT REQUIRE HCODE AT ALL! Please stop adding hcode to it!

Note: ITH and AGTH are different. Many games where AGTH requires hcode, do NOT
need hcode in ITH.
On the contrary, a correct AGTH hcode might mess up text detection in ITH.
So, before adding AGTH hcode to VNR, PLEASE FIRST CHECK IF THERE ARE ALREADY
CORRECT TEXT IN TEXT SETTINGS!!
Additionally, if you find your AGTH hcode does not work, PLEASE DON'T FORGET TO
DELETE IT IN VNR!!

****

* You can access the context menu by right-clicking the left docked panel in case
the blue button is not visible.

* Show user avatar in Preferences.


* Bug fix for Text Reader.
* The left docked panel changed a little bit.
* I removed the "" button, which I feel was causing more issues and confusing
than being helpful.
If you really need that button, feel free to complain to me!
* The English names of the thread categorization in Text Settings changed to
shorter ones.
The functionality remains the same.
The current categorization follows:
- Dialog (old name: scenario)
- Chara (old name: character)
- Other (old name: extra)
- Ignore (old name: ignored)

7/3/2013 WED
* Shared dictionary terms and comments in the tables will be rendered by the
colors of their creators.
An exception is that the term whose language is Japanese or whose target is
original text will be
in red color, because those two kinds of terms could impact a large number of
users.
You might want to avoid using these two terms unless you are pretty sure what
you are doing.

7/2/2013 TUE
* I added a new feature (Text Reader) to translate hovered text as requested by
@Denobo.
Here's a screenshot for BL game Crain DX that could demonstrate how it
works:

http://i859.photobucket.com/albums/ab155/jichi/crain_zpsbfe74f96.png

- Intro
You can open Text Reader on the right side of the Spring Board.
I am hoping it could ease reading Japanese text in website, blog, or light
novels.
For example, it can translate hovered Japanese Wikipedia articles in Firefox,
online visual novels, or light novel paragraphs in Notepad.
This feature is in pre-alpha stage and has only primitive functionality.
Any suggestions are welcomed!
As it is not limited to VNs, Text Reader might be forked out of VNR into
another
stand-alone app in the future.

- Limitations
Only the text in traditional NORMAL window can be translated.
The current Text Reader cannot detect the window text that is rendered in
non-native way.
For example, Text Reader can detect texts in game's menus, buttons, and
dialogs,
but cannot detect texts rendered by GDI or DirectX.
Application-wise, Text Reader can work with Notepad, Internet Explore, and
Firefox.
But it does not support Google Chrome and Foxit Reader.

Text Reader
VN

http://i859.photobucket.com/albums/ab155/jichi/crain_zpsbfe74f96.png

VN
Text Reader Firefox Notepad
alpha

* I added some help text to Text Settings regarding how text font could impact
text detection, as follows:

If there is no game text appearing, adjusting game font might help.


For example, VNR could not detect the game text in
unless you have changed its font from MS Mincho (MS ) to MS Gothic (MS
).


MS MinchoMS
MS GothicMS VNR

6/30/2013 SUN
* Add an option in Voice Settings to toggle whether dub voices for newly
discovered characters.
Thanks for @DinX's suggestion!

* Fixed the issue that VNR sometimes failed to find the correct window when it
was restored from being minimized.
Thanks for @kylin130's report!

VNR
@kylin130 sama

6/29/2013 SAT
* You can inspect the basic information of users for shared dictionary and
subtitles.

* Make sure the new line ("\n") in machine translation and user-contributed
subtitles will generate a '<br/>'.
"\n""<br/>"

* VNR can use non-Japanese TTS to read machine/shared subtitles now.


If you are too lazy to read subtitles on the screen, you could install TTS
in your own language, and turn on "Speak subtitles" in the left docked panel.
Then, VNR will read the translation for you in your language.

btw, VoiceText from Korea has support for many languages like VoiceText Paul
for
English, which is also used by Stephen Hawking hakase.
You can add them to VNR as non-Japanese TTS.

Here's a demo video that might give you an idea how dubbed games look like in
VNR:
http://www.youtube.com/watch?v=dC0qEoV3XvI

VNR
TTS VoiceText Hui Liang


@maxrc sama
http://v.youku.com/v_show/id_XNTc3MTQ4NTcy.html

6/28/2013 FRI
* Update Baidu Chinese translator.

API VNR

* Excite is replaced by Yahoo! Honyaku.


Excite

* Performance improved to process large number of parallel text threads.

* User comments will be rendered with the submitter's avatar when VNR has
Internet access.
VNR

* You can specify the color to render your subtitles shared to others in
Preferences/Account.
/

* I add some help text in Text Settings to explain how to use Source Term in
the Shared Dictionary to remove game-specific garbage characters.
The following text are copied from the help of Text Settings:

Sometimes, there might be garbage characters in the detected game text.


You can use the Shared Dictionary to remove the garbage text.
For example, in , there are redundant "^[^C" at the end of each
sentence.
Google tells us that the ASCII code of "^[" is "0x1b", and that of "^C" is
"0x03".
Then, you can add following term to the Shared Dictionary to remove those two
characters:
* Target: Source text
* Language: Japanese
* Regular expression: YES
* Game-specific: YES
* Pattern: \x1b\x03
* Translation: (leave this column empty)
* Comment: Remove garbage characters "^[^C"


"^[^C" Google
"^[" ASCII "0x1b" "^C""0x03"

*
*
*
*
* \x1b\x03
*
* "^[^C"

6/27/2013 THU
* You can assign colors to different translators in Preferences/Text.
/

* I changed the default font to DF Girl ().


DF Girl is designed by Chinese. It covers not only English, but also Japanese,
Chinese, Korean,
and many other alphabets. I feel it might be a good fit for rendering a text in
mixed languages.
If you don't like it, you can change to other fonts in Preferences/Text.
If you prefer other fonts for your language, feel free to let me know, and
I will set your flavor as VNR's default.

VNR ><
/ YouYuan
email VNR

6/26/2013 WED
* Add user-defined dictionary to JBeijing Chinese translator.
@

* Prevent VNR from hooking with Xunlei and Windows system process DWM.
Please do not add non-game applications to VNR!
If this happens again, I might have to block the user doing this in the future.
The IP address adding DWM to VNR follows as a punishment!
122.150.208.* (Last month from Hoppers Crossing, Victoria, Australia)
VNR DWM
@ 1
VNR
VNR
VNR IP
118.251.198.*

6/25/2013 TUE
* Bug fix for rendering translation, danmaku, and comments.
* Support extracting character names for games like .

@

* Prevent VNR from blocking Japanese language which might cause problems.
VNR

6/24/2013 MON
* You can add new games to VNR using Game Wizard without Internet access now.
VNR

* Update Baidu Chinese translator.



API VNR

* Prevent VNR from hooking to the following applications.


PLEASE, PLEASE DO NOT TRY TO ADD NON-GAME APPLICATIONS TO VNR!
- Baidu Player
- Media Info
- MPC Player
- Pot Player
- QQ Player
- Sogou Explorer
- Storm Player
- The World Browser
- Xunlei Kankan
- Youku Client
VNR
VNR
VNR

* MSIME correction will not be applied to the text for TTS.



@
* Bug fix for extracting character names for games like .

@

* I just notice that there are a couple of games that will temporarily rename
their
executables (*.exe) to *.000 after launched.
There are only 22 known games that fall in to such category, but some of them
are famous,
including,Little Busters,, and
.
You can add these games to VNR now.

6/22/2013 SAT
* Fixed the issue that character names sometimes didn't show up.
* Fixed the issue that MSIME sometimes failed to parse Japanese text.

* You can specify the TTS voice to use for specific game characters.
As you know, in many games, not all characters are covered by voice actors.
You can use this feature to add voices to characters that do not have CVs.
You can click the Help button in Voice Settings for more details.

TTS

CV

* I added a new kind of target, "original text", to the Shared Dictionary.


It is similar to "Japanese" terms, except it will effect not only machine
translation,
but all follow-up text processing.
It is not for improving machine translation, but for fixing game texts received
from ITH.
For example, if the game text contains garbage characters, you can use such
term
to remove garbages before all text processing.

btw., I am running of English vocabulary. If you have better words to represent


"Japanese"
and "Original text", feel free to let me know, and I will modify the current
terminologies.

I am so sorry that VNR's server periodically went down on weekends this month.
When the server is down, you might experience issues while downloading VNR,
updating VNR,
adding new games, modifying the Shared Dictionary, or submitting subtitles and
comments.
I have complained to the service provider in Japan several times, but the issue
remains
and seems to become worse. I am planning to switch to other server providers
after
the current lease expires (which will be 105 days later ...).
Before that, I will modify VNR to allow adding new games while offline to ease
the issue.
I am really sorry for the inconvenience! m(_ _)m

VNR
VNR


VNR
m(_ _)m

6/20/2013 THU
* Add language support for Indonesian.
Currently, Infoseek.co.jp is the only machine translator that supports this
language.
* You can specify the font's filling color in Preferences/Text.
VNR's default color is 'snow' ('#ffafaf').
For example, now you can revert text and background colors from white-on-black
to black-on-white.

/#ffafaf

* I changed the categorization for text threads in Text Settings.


As you know, previously it was Primary/Secondary/Ignored.
The current categorization follows:
- Scenario (the same as Primary): This text thread is the scenario or dialogue
thread.
- Character: The contents are names of game characters.
- Extra (similar to Secondary): The text thread is neither scenario nor
character, but still translate it.
- Ignored (the same as Ignored): Do not translate this text thread.

If you don't want to see the character names, you can disable it in the left
docked panel.
But please don't remove existing correct character name thread in Text
Settings.
I am planning to use the character thread to enable other features.
Because the thread settings are shared by all users, if you remove character
thread in Text Settings,
it might impact other users.




-
-
-
-

6/19/2013 WED
* I changed the service port from 8080 to 80, which is more common.
The old versions of VNR will not work properly any more.
Sorry for the inconvenience for update!

VNR 8080 80
VNR

6/15/2013 SAT
* Fonts to render Japanese and subtitles can be modified in Preferences/Text.
If your favorite font is more popular than VNR's default one in your country,
feel free to let me know and I will change VNR's default font to your favorite
one.

6/14/2013 FRI
* Fix the issue that the game path resolved from shortcut contains "~".
Thanks for @toze's report!
* Support using Wadoku EPWING dictionary to provide Japanese-German word
translation.
Wadoku is free, and you can get it from wadoku.de:
http://www.wadoku.de/wiki/display/WAD/Downloads+und+Links
Here's the direct download link to the latest version:
http://www.wadoku.de/downloads/epwing/wadoku_epwing_jan2012.zip
If you don't need this, you can block German language in Preferences/i18n.

6/13/2013 THU
* Fix the issue to resolve game shortcut that contains Japanese characters on
English-localed OS.
* Bound the text box in full screen mode.
Thanks for Chris' suggestion!

6/12/2013 WED
* Fix the string decoding issue when handle *.lnk on non-Japanese Windows.
* After installing a game, usually there will be a shortcut on your Desktop/.
You can simply drag-drop that shortcut (*.lnk) to Spring Board to add the game.
By default, VNR will launch the game file dropped to the Spring Board.
But you can disable this behavior in Preferences/Launch.
Thanks for @toze's suggestion!

Note: Drag-drop won't work when VNR is launched as Administrator.


**** SpringBoard
VNR
/ VNR

VNR

6/11/2013 TUE
* Fix the issue that non Japanese characters in game text might crash
English/Korean offline translators.
* VNR supports game path to have non-ascii Japanese characters on non-Japanese OS
now.
But it is still NOT recommended to have Japanese characters in the game path,
which might crash the
game on the startup.

* Fix window title text decoding issue on non-Japanese Windows.


* Bugfix for ezTrans Korean translator.
Thanks for @foolmaker's help!

6/10/2013 MON
* Fix the regression that removing Shared Dictionary terms might crash VNR.
VNR bug
m(_ _)m

6/9/2013 SUN
* Fix the issue that launching with LocaleEmulator option cannot be saved when
Editing Game Properties.
Thanks for @toze's report!

* I just noticed that offline TTS might NOT work properly when VNR is launched
with admin privileges.
Currently, I haven't found a way to fix the conflicts between TTS and admin
privileges.

VNR TTS

6/8/2013 SAT
* You can click any column to sort entries in Shared Dictionary or Subtitle
Editor.
* Add a language chart in Statistics dialog.
* Fix the issue that sometimes in Shared Dictionary game ID cannot be saved.
Thanks for @DinX's report!
* Fix the bug that subtitle's comments were not saved.
* Fix the bug in Subtitle Editor to remove/duplicate subs.
* Speed-up XML processing. Fix the slow subtitle loading issue in DC3.
* By default, VNR will launch the game in Japanese Time Zone.
You can disable this behavior in Preferences/Launch.

6/7/2013 FRI
* I removed Japanese characters from the update scripts to avoid issues on
English OS.
If the updater of VNR still malfunctions, feel free to complains to me!

* Support ezTrans XP offline Japanese-Korean translator.


Thanks a lot for @foolmaker's suggestion and pointing me to Taeho Oh's library!
If you don't need Korean language support, you can block Korean in
Preferences/i18n.

ezTrans XP
/

6/6/2013 THU
* Subtitle Maker is improved.

6/5/2013 WED
* Improve XML processing speed.

6/4/2013 TUE
* Allow editing subtitles without launching the game.
* Make sure that the terms in the Shared Dictionary are sorted by the length of
their patterns.
Thanks for @katana's bug report!

6/2/2013 SUN
* Prevent VNR from hooking to QQBrowser.
VNR QQ @goodboyye
* You can export subtitles or existing dictionary entries to XML by clicking the
Export button.
* Fix the issue of the "Text to clibpoard" option.
Thanks for @basicvnlts's report!
* Add Chinese translation for Subtitle Editor's help.
VNR

6/1/2013 SAT
* The "Copy when click" option in the dock is restored as requested by @sorc.
* Backlog is renamed to Subtitle Creator. Nothing changed there.
* I add a Subtitle Editor for revising/editing subtitles like Shared Dictionary.
You can find more details by clicking the Help button in Subtitle Editor.
It explains how to sub a visual novel in VNR.

5/31/2013 FRI
* Support using LocaleSwitch to change game locale.
LocaleSwitch is distributed together with VNR.

LocaleSwitch LocaleSwitch VNR

* Fix the issue that sometimes changes in Shared Dictionary couldn't be saved.
Thanks for @DinX's report!

5/30/2013 FRI
* Fix some font rendering issues for European languages.
* Add translation support for Vietnamese and Thai.
Currently, Infoseek.co.jp is the only translator that supports these two
languages.

* Fix a JBeijing translation issue that shows unescaped numbers.


J __
@goodboyye
m(_ _)m

5/29/2013 WED
* Add some help descriptions for Text Settings.

* Render GUI with Apple's marble background.


5/28/2013 TUE
* Add a context menu item to upload local cached game database.

* Fix the broken STOP button in Game Wizard. Thanks @tobira's report!
@tobira

5/27/2013 MON
* Minor bug fix.

5/25/2013 SAT
* Fix a JBeijing translation issue that shows unescaped numbers.
J ()
@goodboyye

* Prevent VNR from applying user-defined hook to DC3.


That game does NOT require user-defined hook code. And please stop adding hook
code to it.

* Infoseek replaces Excite as the default online translator.


Infoseek's translation quality is not necessarily better than Excite.
I made this change only because Excite.co.jp was blocked in Mainland China and
could hang VNR there.

* Prevent VNR from hooking to web browsers.


VNR
VNR

5/24/2013 FRI
* Add an option to the left dock to copy game text to the clipboard, as requested
by @basicvnlts.

* Fix the issue that VNR might try to launch the game again and again if the game
doesn't start in time.
Thanks for @katana's report!
VNR
@katana

* Put machine translation into threads, so that it will not hang VNR.
Especially when Windows Text Translation is enabled.
VNR

* Fix the "game text is too long" issue for light's Zero Infinity.
light Zero Infinity

* Japanese game text will be rendered sentence by sentence, so that it is easier


to read.

5/23/2013 THU
* Allow the terms in the Shared Dictionary to be game-specific.

* Allow utilizing the Shared Dictionary to rewrite texts for TTS as requested by
@DinX.

5/22/2013 WED
* Improve English machine translation by splitting the text into sentences.
Thanks for suggestions from @DinX and @spoxxy!
* Add a few Chinese translation for notifications.

5/20/2013 MON
* Modify the text threads aggregation rules to apply only to games from
light.co.jp.
* Fix the thread detection issue for Zero Infinity. Thanks for @CaoNiMaGeBi's
report!
* Add support for Dr.eye Chinese offline translator.
If you are playing a Chinese galgame, Dr.eye can also help translate Chinese to
English.

Dr.eye
JBeijing //

JBeijing Dr.eye
play galgame Dr.eye
* Fix the issue of sometimes showing unescaped {numbers} in the translation.
{}

* If the online translation is delayed, it will be rendered in the previous page


instead of the current one.

@

5/19/2013 SUN
* Add a useless feature that renders comments like nico's danmaku floating on the
top of the game.
You can drag or edit danmaku just like subtitles.
As it is useless, if it bothers you, you can disable danmaku support in
Preferences/Features.

nico

/

* I added some heuristics to aggregate text threads.


As reported by @CaoNiMaGeBi, VNR sometimes split the same text into different
threads.
I found this issue exists in many games from light and C:Drive.
So, I added some code to recognize and aggregate the split text threads.
But I am not sure if it could have side effects on other games.
If my changes break your old games, please let me know!



@CaoNiMaGeBi

* Add Excite online translation support.


Excite replaces Infoseek as the default online translator.
Bing online translation support is removed.

Excite
Excite Infoseek

@63232128

* Add support to translate visual novel other than Japanese.


I mean, you can use VNR to translator a, say, Chinese galgame to English.
You can specify the language of the game in Text Threads.
However, Infoseek is the only translator in VNR that supports non-Japanese
multilingual translation. If you want to translate a non-Japanese game,
don't forget to turn on Infoseek in Preferences/Translation!
Thanks for @tobira's suggestion!

VNR galgame

VNR Infoseek
/ Infoseek

* Add Baidu online translation support.


5/17/2013 FRI
* Microsoft online translator support is restored.

* Rewrite a few GUI rendering code with Twitter Bootstrap theme.


Twitter Bootstrap

* "Game Settings" is renamed to "Text Settings". The functionalities are the same.

5/16/2013 THU
* Check whether Microsoft onling translator is running out of quota.
It seems that many users were using Microsoft translator , and VNR has run out
of
free quota this month. The translator will not be available until next month TT
VNR
TT

* You can edit some game settings in the SpringBoard before the game is launched.
SpringBoard

5/15/2013 WED
* Case-sensitivity and BBCode options are removed from Shared Dictionaries to make
text processing faster.
I found few people are using them. If this feature is important to you, just let
me know!

5/6/2013 MON
* You can block specific languages in Preferences/i18n.
For example, if you select to block "Chinese", VNR will not show comments and
subtitles in Chinese.
Also, Chinese-specific settings in Preferences will become hidden after restart.
Thanks for suggestions from Saru Wakaranai!

/


Saru Wakaranai

5/4/2013 SAT
* Terms in the shared directory are sorted based on the length of the pattern.
@
* You can adjust game-specific loader (such like NTLEA) in Game Settings.
@
* Support using Locale Emulator to change game locale to Japanese.
Locale Emulator is free, and you can get it here:
http://www.hongfire.com/forum/showthread.php/418962-Locale-Emulator-another-
tool-for-japanese-locale-emulation

Locale Emulator (LE) is similar to NTLEA. It is not always better, but it is


said to have
better support for Windows 7/8. As NTLEA is dead, I feel LE is the future.
LE is open source on Github. It is written in C# with WPF, comparing to NTLEA
which is
written in assembly orz. So, even if the author drops the project when he is
busy, or get
kidnapped by UFO, I believe another hero could come to help and keep the project
long alive
for future Windows.
Locale EmulatorLE@
LE NTLEA LE NTLEA LE Windows 7/8
NTLEA LE
LE
http://bbs.sumisora.org/read.php?tid=11045407

5/1/2013 WED
* You can adjust the TTS voice speed in Preferences/Speech.
Thanks to @zero7510's suggestion!

/
@zero7510

4/30/2013 TUE
* Window text translation is disabled by default.
* Clicking the "X" button in the left docked panel will stop VNR from listening to
game text.
X

4/29/2013 MON
* Fix the regression when translating.

m(_ _)m

4/27/2013 SAT
* Text-to-speech (TTS) function improved. Thanks to @DinX's suggestion!
I made a demo video for VNR+TTS here:
http://www.youtube.com/watch?v=CPmOc2Ktfy4
If you are using VNR to learn Japanese, TTS might help, esp. when you are in a
stage that
you can understand Japanese voice but not read the text.

TTS@DinX
TTS
http://www.youtube.com/watch?v=CPmOc2Ktfy4
http://v.youku.com/v_show/id_XNTQ5Mzg2MzIw.html
VNR TTS

* Window text hook improved. It can work with NTLEA now.


As it is stable now, and it is enabled by default.
If it bothers you, you can disable it in the left Dock.

NTLEA bug

Dock

* Add Bing as an alternative online translator, which support all languages.


I add this only because Infoseek does not support Russian language.
I feel Bing's Japanese-English translation quality is no better than Infoseek,
which is powered by
the same engine (Transer SDK) as the old OCN translation service.

If your language is supported by Bing but not by VNR, just let me know and I
will add the feature.

Bing
Infoseek
Bing Infoseek InfoseekInfoseek OCN

* Fix a regression that VNR kept rewinding Game Wizard while adding new game.
Thanks for @'s report!

VNR @

* Add some Chinese translation.


4/24/2013 WED
* Add user-defined dictionary for JBeijing from @Zhugeqiu.

@ JBeijing http://tieba.baidu.com/p/2287516521
@sama

4/23/2013 TUE
* Allow using BBCode and HTML tags to format translated text in Shared Dictionary.
For example:
* A term that defines "" as "<br/>" will create a new line after every "".
* A term that defines "(.*?)" as "[color=red]\1[/color]" will turn the text
within "" to red.

Thanks to @DinX's suggestion!

4/22/2013 MON
* NTLEA is distributed together with VNR now. You can enable it on in
Preferences/Launch.

Both NTLEA and Microsoft AppLocale could help run Japanese game on non-Japanese
environment.
NTLEA is usually better. But I just noticed that it conflicted with the Windows
text hook in VNR.
VNR would be able to translate/replace texts in menus, context menu, and dialogs
for games
launched by NTLEA. Please give me some time fo fix this bug!

NTLEA VNR /

NTLEA AppLocale
NTLEA NTLEA VNR Windows
NTLEA VNR

* Support user-defined dictionaries in JBeijing (a Japanese-Chinese translation


soft)

JBeijing

VNR JBeijing JCT


VNR JBeijing @goodboyye JcUserdic1289
JCT VNR

@goodboyye JBeijing

4/14/2013 SUN
* Add some instructions in Readme.txt.
Readme.txt

4/12/2013 FRI
* You can temporarily disable user-defined hook code in Preferences/Launch.
* Fixed a severe regression that in-game comments were not displayed.

4/11/2013 THU
* Always show the header for dragging the text box, no matter its position is
locked or not.
* Add some explanations of the "target" column in the Shared Dictionary.
You can find it by clicking the Help button there.

4/9/2013 TUE
* The curtain on the top of the SpringBoard was temporarily removed.
The game launch settings there were moved to Preferences.
* Support NTLEA as an alternative of AppLocale.
You can specify its location and enable it in Preferences.
Just type "NTLEA" in Preferences and you will find the options.

4/8/2013 MON
* Add a few Chinese translations for the GUI.

4/7/2013 SUN
* Support using Windows Text-To-Speech (TTS) as an alternative of default Google
TTS.
There are several Japanese TTS engines out there. VoiceText is probably the
best, as follows:
http://voicetext.jp/samplevoice.html
Thanks for @DinX's suggestion!

Windows TTS Google TTS


TTS VoiceText VoiceText
http://voicetext.jp/samplevoice.html

4/6/2013 SAT
* Create a primitive GUI for software update.

4/5/2013 FRI
* MS Japanese IME parser improved.
* You can use the search edit in Preferences to search any text in each view.

4/4/2013 THU
* Rewrite the UI of Preferences.
* Support for utilizing Microsoft Japanese IME (IMJP).
* Able to use IMJP to parse Japanese, as a replacement to MeCab.
* Able to use IMJP to convert Japanase kana back to kanji before sending to
machine translator.
For example, will become .
This only applies to confusing phrases, such as =>.
Common Japanese phrases such as will not be corrected to .
Because these kana usually confuses machine translator, such conversion might
significantly improve the quality
of machine translation, given the large set of dictionaries from Microsoft.
The latest JMJP is free to download for Office Enterprise users here (version
14):
http://www.microsoft.com/ja-jp/office/2010/ime/
Here's an illustration of how to update its dictionaries.
http://support.microsoft.com/kb/978478/
JMJP also comes with any Windows OS, but the version is old (version9 or
version10).
And it would be better to do an update.
btw, if you are using MS JP IME instead of Google's, your typing will actually
improve machine translation quality><

Special thanks to @dg8806 for his/her suggesions and source code to help me
exploit IMJP!

IMJP
- / IMJP MeCab
- / IMJP

=>

IMJP
Office IMJP 14:
http://www.microsoft.com/ja-jp/office/2010/ime/

http://support.microsoft.com/kb/978478/
Windows JMJP 9 10

btw><

@dg8806 IMJP

4/2/2013 TUE
* Fix a severe regression that prevents Game Wizard from adding new games.

3/31/2013 SUN
* Render GAIJI for EPWING dictionaries.
* Support using a epwing dictionaryto provide Chinese
translation for Japanese phrases
epwing

* EPWING 30MB
* CATALOG CATALOGS
*

http://sakuradite.com/images/screenshots/ayakashibito.jpg

* Fix a severe bug when detecting running game is enabled.
* Add Chinese translation for Game Wizard.

3/30/2013 SAT
* Able to utilize EPWING dictionaries to enhance translations.
Currently, only (a Japanese dictionary) is supported to enable ja-ja
translation of phrases
(see Preferences).
Due to copyright reason, the dictionary is not distributed together with VNR.
You could purchase one from amazon, or google " ".

EPWING gives VNR access to a large set of high-quality offline commercial


dictionaries (as follows).
I am thinking how to use them to improve translation, especially for Japanese
learners.
If you have suggestions on it, feel free to discuss with me by email!
* Syntax helpers and terms
PDD , , , , ,

* Encyclopedia
JP WIKI, , , , , ,
,
* Conventional JJ
, Super
* Foreign languages
(ja-en), wadoku(ja-de), -(ja-zh)

Special thanks to @0xCCBA696 for the request of EPWING support!

3/26/2013 WED
* Fixed a regression bug in the shared dictionary.
Thanks for @makaplayer's report!

3/26/2013 TUE
* Reduce VNR's memory usage.
Though VNR is still leaking memory, the leak speed is much slower now.

3/24/2013 SUN
* Due to performance concerns, Japanese text-to-speech (TTS) and running game
detection
are disabled by default as suggested by @HunterHughes.
* TTS could be reanbled in Preferences/Features.
* Running game detection could be renabled in SpringBoard's dropdown menu.

3/23/2013 SAT
* Add a simple bbcode scratchpad.

3/22/2013 FRI
* Add a toggle in Game Settings to eliminate repetition in game text.
Most games that need agth /K options, such as , shoud work now.

3/21/2013 THU
* Subtitle default syntax changed from LaTeX to BBCode.
* Added a context menu item for restarting VNR.
If VNR is consuming too much memory, restart it might save you some memory.
Currently, I don't have a way to reduce VNR's memory usage. Have to wait for Qt5
whose V8 engine will be a savor to the current Javascript memory leaking issue.
Sorry for the inconvenience at the moment!

3/19/2013 TUE
* The online machine translation is disabled by default.
You could re-enable the translators in Preferences/Translation.
If you have got issues in getting @Aaeru subs for DC3, it is all my fault of
not putting up tutorials for how to use VNR, and I am sorry for it m(_ _)m
But please don't blame Aaeru for her hard work! Thanks.

3/11/2013 MON
* Automatically hide left dock buttons as requested by @Kira.

3/10/2013 SUN
* Add a few Chinese translation for the UI.

3/9/2013 SAT
* Make the text threads to run in parallel and thread-safe
so that game texts won't get lost while clicking fast.
* Fixed a severe regression that might mess up the text thread title.
3/5/2013 TUE
* Prevent VNR from hooking to Google Chrome and 360 Chrome.
Please don't try to hook VNR to non-game applications orz.

3/4/2013 MON
* Add a "Japanese" target type in the Shared Dictionary.
It could be used to explain Japanese with Japanese.
I will create a wiki to explain it soon.

3/3/2013 SUN
* Add a toggle to SpringBoard to prevent VNR from applying user-defined /h-code
after game starts.
If an incorrect hook code crash the game on the startup, you can use this
toggle
to temporarily disable the hcode, and then add the correct one in Game
Settings.
Special thanks to @ for the bug report!
@!

3/2/2013 SAT
* Bug fix for the shared dictionary.

2/28/2013 THU
* Fix the bug which will crash VNR when there are non-utf8 characters in PATH
or in the location of VNR.
* Make sure the changes to subs and dictionary entries are saved before refresh.
* Make sure the python process is terminated after VNR quit.
* Bug fix for window text translation.

2/27/2013 WED
* Bug fix for the shared dictionary.
* Add a regular expression scratchpad for testing regex used by the dictionary.

2/26/2013 TUE
* Prevent guest user from modifying other users' subtitles and dictionary
entries.
* Annot Player and Installer are removed from VNR.

2/25/2013 MON
* Prevent users from hooking VNR to 360SE.
* The shared dictionary is improved.
* Allow the pattern to be regular expression.
* Allow the pattern to be case-insenstive.
* Allow the text to be empty, when the words matched by pattern will be
deleted.

2/24/2013 SUN
* Automatically detect and sync with running game.
You can disable it at Springboard's sliding sheet on the top.

2/23/2013 SAT
* Add a few Japanese/Chinese translations for Javascript code.

2/21/2013 THU
* Steal keyboard focus back to VNR when work with subtitles.
* Add a user-defined dictionary shared by all users for improving machine
translation.
It is a simplified version of TA's replacement script, and will affect
translations
for both game texts and window texts.
You can click the "Help" button in the Dictionary dialog for more details.
Special thanks to @spoxxy and @DinX for the suggestions!

2/19/2013 TUE
* Fix the bugs that would crash VNR on the startup when there are unicode
characters in the environment variables, such as PATH and USERPROFILE.

2/18/2013 MON
* Fix a bug that prevents using the launch icon in the Spring Board to add new
game.
* Add an option to force converting Simplified Chinese to Traditional Chinese in
Preferences/Translator.

2/17/2013 SUN
* Prevent users from hooking VNR to Google Chrome orz
* Added some translations of Japanese and Chinese (not completed yet).
You can switch the GUI's language in Preferences/Account.

2/16/2013 SAT
* Add a launch button to the Spring Board for adding new game to VNR.
It will compare running processes with the online database to find new game.
If the running game exists in the online database, VNR will set up everything
for you, and you don't have to bother Game Wizard any more.

2/15/2013 FRI
* Add a button to delete hook code in GameSettings/Text/HookDialog.
After deletion, the hook code will not be deleted from the online datase,
but be marked as deletion. Others who plays the same game with this hook
will automatically revert the deletion.
If the hook code appears again, please re-delete it again in the hook dialog.

2/14/2013 THU
* VNR will not search for user-contributed subtitles in the same day.

2/13/2013 WED
* You can edit the game's display name in Game Settings / Properties.
* Always show the "Browse" buttons in Preferences/External.
* To reduce the memory usage of VNR, I limited the # of texts in Backlog to 100.
I also removed the button to show all subtitles in the Backlog.
This change is a regression as the trade-off of better performance.
If you want to edit your previous subs without loading the game to that scene,
please try the "Edit subtitles online" menu item from the blue button instead.

2/12/2013 TUE
* Turn the blue button to an ajax indicator to show status of async Internet
access.
It will be spinning while VNR is:
* Checking for updates online
* Signing in with a different account
* Searching for game thread and hook information online
* Fetching online translations
* Saving your subtitles online after VNR is idle for 5 seconds
* Saving your modification to subtitles online after VNR is idle for 5 seconds

2/11/2013 MON
* Saving/modifying subtitles are put into threads, so that sub VN will not hang
the GUI.
2/9/2013 SAT
* I changed the initial values of subtitles' font size, position and alignment.
I must appologize if it overrode your previous settings.
If you prefer the previous settings, please adjust the options from the left
dock.

2/8/2013 FRI
* Fixed the "Browse" button in GameSettings/Location for specifying alternative
game launcher.

2/7/2013 THU
* Bug fix for window text translation.
* Bug fix for D.C.III.

2/6/2013 WED
* Bug fix for window text translation.
* Update the window text translation lively when you change your language or
translator.
* Add an option to the blue button to display the orignal window text.
For example: "" will become "<Yes" instead of "Yes".

2/4/2013 MON
* Automatically resize Game Settings window based on the number of text threads.
* Add a useless feature to use kanji as furigana, so that:
(kawaii) will become ().

2/3/2013 SUN
* VNR can translate the substitute window texts (menus and buttons) now.
You can enable/disable it by right-click the blue button and toggle the menu
item.
This feature will NOT be enabled unless you have at least ONE offline machine
translator (LEC, Atlas, or JBeijing).
Currently, there is no further option to adjust its translation.

1/30/2013 WED
* You can save/load/reset the position of the text box relative to the game
window
from the context menu of the text box.

1/29/2013 TUE
* The current GUI in fullscreen is kind of confusing.
Just made a new demo video to illustrate what VNR can do in fullscreen:
http://www.youtube.com/watch?v=GNZSNA1gYEk
The Phi () button on the left dock is the key to unlock the features in
fullscreen.
Be careful that, unlocking the Phi button (like in this video) might give VNR
troubles
when render subtitles for OLD games.
* Add a light-weighted Subtitle Editor to ease modifying subtitles.
* Fixed some bugs which might crash VNR when running out of memory.

1/28/2013 MON
* Games in SpringBoard will be sorted by the last access time.
* Created primitive online interface for editing subtitles without opening the
game.

1/27/2013 SUN
* MeCab library is updated.
1/26/2013 SAT
* When romaji is selected as furigana, show it for all Japanese words.
* Put the Text Thread settings into scroll area.

1/25/2013 FRI
* In Preferences/Translator, you could select the furigana characters from
hiragana, katakana, and romaji.
* The "Time Zone" option also works for minori games.
* Note:
It is recommended that you set the Game Text Speed to maximum if possible.
Especially if you would like to translate this game.

1/24/2013 THU
* Add a search bar to the SpringBoard.
* Add EnterButtons to manually send "Enter" event to the game.
* In the bottom comment bar, shift+enter without text will also send enter.
* Right-click subs, and there is a Comment Properties menu to show the selected
subtitle's context.
I will make the fields in this dialog editable later.

1/22/2013 TUE
* Filter some garbage characters (ten ten ten toka) for TTS.

1/20/2013 SUN
* Add a phi button () in the left dock for toggling whether VNR should ignore
focuses when full screen.
This option is enabled by default in order to be compatible for old games.
But if disabled, we will be able to access the VNR's context menu, the blue
button, Preferences,
and able to submit subtitles when full screen as well.
This option is important if you would like to use VNR for full screen gaming.
For some old fullscreen games, VNR has to restrict itself from stealing windows
focus from the game.
But this is not required for many new games.
If disabling it gives you troubles when switched to full screen, please enable
it again.
* Changed from GET to POST to allow saving subtitles with very long game context.

1/19/2013 SAT
* Support using LEC Power Translator for English offline translation.
You can enable it in Preferences/{External,Translator}
* Ensure the text box visible in full screen mode when unlocked.
* Add options to change the text glowing colors in Preferences/Text.
* Add option to toggle the text alignment in the left dock.

1/17/2013 THU
* [lock] will lock the text box's relative position to the game window,
instead of putting the text to the top of the game window.

1/15/2013 TUE
* Add a draggable header to the text box.
* Fixed a severe bug in ATLAS machine translation.

1/14/2013 MON
* Now you can drag the subtitles to any place you want.
Don't forget to unlock the position of the text box first (by clicking
[ Lock ]).
Here's a screenshot of how to drag the text box:
http://sakuradite.com/images/screenshots/otome-drag.jpg
* Able to change the text box width from the left dock.

1/13/2013 SUN
* Fixed a bug that VNR did not apply the hook code correctly for the second
launched game.

1/12/2013 SAT
* Fixed a severe bug in hook code decoder.
All AGTH/ITH /H codes should work now.
* You can select more than one machine translators in Preferences/Translation.

1/8/2013 SUN
* Able to zoom font size for subtitles.
* Able to remove games from the Spring Board.
* Fixed the delay for offline machine translation.

1/6/2013 SUN
* Able to change the SpringBoard wallpaper by dragging your favorite wallpaper
image file to the SpringBoard
* Able to add new game by dragging the executable(*.exe) or the shortcut(*.lnk)
file to the SpringBoard
* Able to launch existing game by dragging the executable(*.exe) or the
shortcut(*.lnk) to the SpringBoard
* Remember the size of the SpringBoard window on exit

1/5/2013 SAT
* Support using JBeijing for Japanese-Chinese machine translation.
You can select preferred translation provider from Preferences/Translation.
Don't forget to specify the location of JBeijing in Preferences/External.
* Improve ATLAS offline translation performance.

1/1/2013 TUE
* Minor modification to the documentation.
If you cannot see the text being displayed,
PLEASE MODIFY THE TEXT THREADS IN GAME SETTINGS!

12/28/2012 FRI
* Add an alternative online translator from LEC.
You can change the machine translator from Preferences/Translation.

12/25/2012 MON
* VNR beta released. Heres a recent demo on youtube:
http://www.youtube.com/watch?v=KxRGwS4gkW4

12/24/2012 MON
* Able to lock subtitles from being edited by others.

12/22/2012 SAT
* B

12/21/2012 FRI
* Add \popup to display subtitles for game choices.
* Put machine translation into another thread to reduce GUI blocking.
* Fix the issue of hanging GUI while quiting the app.

12/19/2012 WED
* Able to add subtitle for previous game texts in in backlog, by clicking
[ add subtitle ].
12/18/2012 TUE
* Fix the bug for adding ITH hook code in Game Wizard or Game Settings.

12/17/2012 MON
* Bugfix for

12/16/2012 SUN
* B BUG
* Galgame
* VLC Qt

12/15/2012 SAT
* Add wizard to select apps.

12/12/2012 TUE
* Automatically detect and sychronize with the running game on startup.
* Add button to hide comment bar.
* Bugfix for

12/11/2012 TUE
* Option to launch game in Japanese time zone.

12/10/2012 MON
* Fixed the bug that the editted annotations were not saved.

12/9/2012 SUN
* Add spell checker for English/French/German.
* Change subtitle submission shortcuts from CTRL+ENTER to SHIFT+ENTER.
* Able to disable mouse theme in Preferences.

12/8/2012 SAT
* Annotation rendering improved.
* Detect game window and process changes. Re-hook to game when game state
changes.
* Use multi-threading to prevent UI from blocking while importing thousands of
subs.
* Bug fix for DC3.

11/30/2012 FRI
* Hover game text to popup translations
* Add simple context menu.
* Render shadows behind game text.

11/26/2012 MON
* Fix bugs with the translation popup.

11/25/2012 SUN
* Integrate with EDICT.
Click the word in the game text will popup its translations.
* Integrate with Google TTS.
Click/double-click the game text will read it out.
* Syntax-highlight game texts in different colors when hover.
* Able to change the threads to translate in Game Settings
* Able to dock the annotation window to corners of the screen.

11/19/2012 Mon
* Use AppLocale to load galgame if installed
* Use ATLAS for offline translation if installed
* Fix bugs loading subs when offline
11/14/2012 TUE
* Split annotations for galgame out from annot-player into a new app:
Visual Novel Reader (pre-alpha)
* Source code moved to mercurial repository at sakuradite.org/hg/stream.
The "Library" directory is just clone of sakuradite.org/hg/stream.
* The underlying framework is switching from C++ to Python/Javascript.

*** Annot Player is split into video player and galgame player ***

11/4/2012 SUN
* Automatically backup local database of games and subtitles.
* Update VLC plugins

10/14/2012 SUN
* Support for OCN is removed, as OCN shut down its translation service.

10/11/2012 THU
* Make the saved subtitles to be context-sensitive to the game texts.
Special thanks to aaeru.

9/28/2012 FRI
* Fixed resolving video from acfun.
A

9/23/2012 SUN
* Fixed resolving video from bilibili.
B
* Fixed a bug that prevent drop-and-open.
bug

9/21/2012 FRI annot-player 0.1.9.8


* Add basic EDICT dictionary support.
* Qt updated.

9/9/2012 SUN annot-player 0.1.9.7


* Click to translate any word (parsed by MeCab) in displayed galgame text.
If you don't like this feature, turn it off from the context menu.
* Always focus on the input text edit after submitting subtitles.
* Fix a severe bug which prevents subtitles from being saved.
* Translator is simplified.

9/7/2012 FRI annot-player 0.1.9.6


* Update annotation resolver for bilibili.tv.
B
B

9/7/2012 FRI annot-player 0.1.9.5


* Add ATLAS support for offline translation.
* Fix a bug when displaying manual subtitles.

9/5/2012 WED annot-player 0.1.9.4


* Fix a line-wrapping bug when rendering annotated Japanese text.
* Fix a bug when converting katakana to hiragana.
* Fix a bug when generating annotation analytics.
bug

9/5/2012 WED annot-player 0.1.9.3


* Integrate with MeCab.
Able to show annotated galgame text with furigana.
Hover-and-translate ability is not implemented yet.
* If AppLocale is installed on your Windows, launch galgame using AppLocale with
0x0411 by default.
* Add SYSTRANet translation support.
* Distinguish Traditional Chinese and Simplified Chinese.

9/3/2012 MON annot-player 0.1.9.2


* Able to add user-defined ITH hook code for game.
The added hook code is then shared by all users online.
* Highlight tool buttons.
* Translations are cached.
* Fix the bug which causes OCN translation failed to show up.

8/31/2012 FRI annot-player 0.1.9.1


* Thread profile will be saved online at annot.me and shared with all users.
After sync with a game, the thread profile will be saved both offline and
online.
Other users opening the same game will automatically import proper thread
profile from annot.me,
and do not need to set up text threads manually anymore.
Thread settings could be changed at "Game Settings".
The changes will also be saved both offline and online.
* Able to subscribe to more than one text threads in a galgame.
When sync with a game, you could select which text threads to subscribe and
translate.
You could also select the roles of text threads.
Texts with different roles will be rendered differently.
Only two roles are supported at the time:
* Leading role (the leading thread)
Supposed to be the scenario thread. Translations will be rendered on the top or
on the bottom.
The leading thread is used as the timeline for annotation/subtitle
synchronization.
* Support role (supplementary threads)
Could be the choice thread, or the thread of character names, etc.
Translations will be rendered at the top-left corner.
* Option to change subtitle's background opacity from "Preferences" (galgame
only).
Set the value to zero if you prefer transparent background like in previous
version.
* Annotations are rendered smaller than before, and in a darker color.
The subtitle's font size and outline color could be adjusted in "Preferences".

8/26/2012 SUN annot-player 0.1.9.0


* Add word translation support from Kotobank (ja).
* Add more text translation options, including:
* Infoseek honyaku
* Yahoo! honyaku
* OCN translator (en, zh, ko) - the best for Chinese
* freshEYE honyaku (en,zh)
* @nifty honyaku (en)
* Excite hongyaku (en)
* SDL free translator (en)
The default translator switched to Ocn from Microsoft.
* Try to synchronize with any running game in the library on startup.
* Retry to reconnect on accidental soap error.
* Option to set annotation transparency from Preferences.

* Option to set fullscreen annotation size, which is slightly larger than normal
one.

8/20/2012 MON player,down,browser,translator 0.1.8.3,0.1.3.4,0.1.2.4,0.1.0.1


* Fix a severe bug that might crash the app when opening new game/media in
Windows.
Windows crash bug
* Improve the scheduling algorithm for floating annotations.

8/18/2012 SAT player,down,browser,translator 0.1.8.2,0.1.3.4,0.1.2.4,0.1.0.1


* Show media library on startup.
* Game launch settings (channel & encoding) will be saved for the next launch.
Setting up synchronization is only required once for each game.
* Highlight selected text in yellow in all textedit widgets.
* Fix a bug in the updater.

8/14/2012 TUE player,down,browser,translator 0.1.8.1,0.1.3.3,0.1.2.3,0.1.0.0


* Add intremental updater (Windows only).
Alternatively, latest binaries could be found at ftp.annot.me/release/annot-
player.
Versions before 0.1.8.1 are now broken and won't work propertly.
* Add Annot Translator using WWWJDIC (beta). Internet access is indispensible.
* Integrate galgame Backlog with Annot Translator.
* Add media library to index available media and games from play history.
* Double-click subtitles will edit it if the user has its ownership.
Otherwise, show its analytics.
* Add support for Russian language.
* Update VLC plugins to version 2.0.3.

7/29/2012 MON annot.player, down, browser 0.1.8.0, 0.1.3.2, 0.1.2.2


* Fix the severe issue for synchronizing annotations caused by the changes of the
server framework.
App before version 0.1.8.0 might not function well anymore.
* Fix the bug which might cause downloaded gzipped annotations failed to be
unzipped and parsed.
* Utilize cookies to reduce network traffic.

7/22/2012 SUN annot.player, down, browser 0.1.7.1, 0.1.3.1, 0.1.2.1


* Long annotations/subtitles will be wrapped by word boundaries.
* Game subtitles will be rendered stably on the top or bottom.
* Add dock button to embedded mode, to toggle whether embed to the top or bottom.
* Add Italian language for galgame translation.
* Existing files to overwrite will be moved to trash instead of being deleted or
renamed.
* Press the "Play/Pause" button after sync with galgame will start or pause
listening to game signals.
* Add XML/JSON annotations download dialog to annot-player.
* Some unstable experimental features are temporarily disabled.
* Annotation Downloader is changed to use single download thread to avoid
parallel bugs.
* Fix the bug that makes wmv and ISO images invisible from opening.
* Fix the bug that causes annot-player unable to fetch annotations when opening
files in Windows Explorer.
* Fix a bug that might cause context menu to render in full black.
* Reimplement thread-safe message logging mechanism which could result in mystery
crashes.

7/16/2012 MON annot.player, down, browser 0.1.7, 0.1.3, 0.1.2


* Able to edit and save machine-translated subtitles.
The user will take the ownership of the editted subtitles.
* Render widgets (such as push buttons) as annotations (currently not for Mac).
* Bing API is replaced with Microsoft Azure API for default Galgame translation.
Because Microsoft will stop Bing translation service after Aug. 1, 2012,
galgame translation before version 0.1.7 will stop functioning after Aug.1.
* Add Google Translator and Romaji translation service.
* Able to turn on more than one translation providers.
* Enble translation for French/German/Spanish/Portuguese
* Opion to change annotation moving speed in preferences.
Modification to movement resolution is removed.
* Prefetch annotations and save to XML/JSON before streaming media is completed.
* Able to download annotation XML/JSON from Annot Browser or Annot Downloader.
To associate the downloaded XML/JSON subtitle with media file, rename the
subtitle
as the same basename as the media file.
* Update VLC plugins to version 2.0.2.
* Fix the bug for creating Annotation Analytics view for galgame.
Double-click the annotation will show analytics of all annotations from its
owner user.
* Fix the bug which causes annot-player window to disappear after the galgame is
minimized,
* Fix a bug that might randomly crashes annot-player when dragging annotations.
* Fix the offline-cache inconsistent bug when editing annotations.

6/30/2012 annot.player, down, browser 0.1.6.4, 0.1.2.9, 0.1.1.9


* Able to convert all Chinese annotations to Traditional Chinese.
* Add translation for Traditional Chinese.
* Able to adjust annotation movement resolution for floating annotations.
* Switch from llvm gcc to clang with C++11 enabled on Mac.
* Fix a bug while rendering translations in Galgame with multiple lines.
* Fix a bug which results in failure to resolve nico anime from
nicovideo.jp/watch/so[0-9]*
* Fix severe multi-threading bugs in downloader.
* Switch from qthreadpool task to qthread in downloader to deal with concurrency
bugs.
* Imported annotations will be saved to XML/JSON files.
New annotation searching logic follows:
* Search offline annotations in "Annot Stream/Data/cache/cache.db"
(or ~/Library/Caches/me.annot.player/cache.db on Mac OS X).
* Search offline annotations from XML/JSON files in the same folder of the
video.
Assume the current file being played is ABC.mp4, then
ABC.whatever.xml and ABC.whatever.json will be imported.
* If no offline annotations exist, fetch latest annotations online.
Trigger "Update Annotations" from context menu will sync all three sources of
annotations.
Edit annotations sources from "Annotation Source" in context menu.

6/14/2012 annot.player, down, browser 0.1.6.3, 0.1.2.8, 0.1.1.8


* Annotation motionless scheduling and rendering improved.
* Add halo effect to render annotations (able to change colors in Preferences).
* Selected annotations will glow.
* Able to change audio channels and delay time in context menu.
* Able to import annotation files in XML/JSON format downloaded from
nicovideo/acfun/bilibili.
Automatically load external annotation files whose name starts with the file
name of current media.
* Able to select text encoding for the annotated Galgame (usually Shift-JIS or
UTF-16).
Enforce Shift-JIS as default.
* Fix the encoding issue for Galgame from light (malie.exe).

6/8/2012 annot.player, down, browser 0.1.6.2, 0.1.2.8, 0.1.1.7


* Update the scripts to resolve annotations from bilibili's new web ui.

6/8/2012 annot.player, down, browser 0.1.6.1, 0.1.2.7, 0.1.1.7


* Add option to switch whether connect to the Internet.
If connected, the latest online annotations are preferred.
When disconnected, the local offline annotation database is used.
* Add new annotation scheduler to reduce annotation movement for better
readability.
* Update from ITH2 to ITH3 for tracking Galgame.
Translation for Akatsuki no Goei 2 is partially broken.
Translation support for games from light is broken.

6/3/2012 annot.player, down, browser 0.1.6.0, 0.1.2.6, 0.1.1.6


* Option to always show avatars (could be disabled from context menu).
* Able to translate annotations to different languages.
* Able to change file associations from Preferences.
* Enable HTTP pipelining to improve download and stream speed.
* Update to Qt 4.8.2. Switch from Carbon to Cocoa on Mac OS X.
* Add getchu.com to the browser's delegate list.
* Fix the issues that cause buttons in full screen difficult to press.
* Fix a bug in downloader which might result in incorrent file size.
* Fix bugs while tracking Galgame process and rendering annotations.

5/25/2012 annot.player, down, browser 0.1.5.6, 0.1.2.5, 0.1.1.5


* Add randomized avatars to identify different users.
* Able to change annotation font in preferences ("Helvetia" as default).
* Option to limit annotation bandwidth (enabled by default).
* Bugfix
* Fix a bug which could freeze the player when stream video with more than 6
parts.
* Fix a bug which bound # of download tasks to # of CPUs.
* Fix a bug which might mess up merged FLV streams, esp. Sina video from
AcFun.tv.
* Fix a bug that could crash the browser when activate context menu.
* Fix a bug when prevent logging in to Nicovideo.jp on Windows.
* Fix a bug while annotating galgame.
* Fix a bug while rendering Aero on Windows 7.

5/19/2012 annot.player, down, browser 0.1.5.5, 0.1.2.4, 0.1.1.4


* Add water ripple effect to render windows (conflicts with Aero effect,
Mac/WinXP only).
* Show meta info (e.g. user,date) after annotations.
* Show loading progress in Browser's address bar.
* When the download option is off, try to use MMS protocal instead of
HTTP to stream remote video.
Include Youtube, and any other video which is less than 6 minutes.
Currently, parted remote video and those require authentification
(such as Nicovideo) do not support MMS mode.
* Fix a bug when resolve Youtube video on Windows.
* Fix an encoding bug when resolve Tudou video.
* Fix a bug that might result in unsaved download tasks when downloading
multiple videos.

5/11/2012 annot.player, down, browser 0.1.5.4, 0.1.2.3, 0.1.1.3


* FadeIn/FadeOut animation applied to all windows and annotations.
* Change menubar shortcuts from ALT to CAPSLOCK.
* Added magnifier (CTRL+E or hold LeftButton).
* Fixed mouse freezing issue on Windows.
* Fixed a bug while decoding AcFun.tv URLs.
* Fixed a bug in Browser when visiting SSL encrypted webs.

5/5/2012 annot.player, down, browser 0.1.5.3, 0.1.2.2, 0.1.1.2


* Able to play limited Youku video from outside of China.
* Use annotion pool to reduce memory traffic and CPU usage significantly.
* Support for AcFun.tv is fixed.
* Fixed a bug preventing network proxy settings from being saved.
* Change stream strategy from mult-thread to single-thread multi-task
to avoid being banned by remote server when download in parallel.
* right button will collect nearby annotations.
ALT + DoubleClick will attract all annotations.
SHIFT + DoubleClick will expel nearby annotations.
Shortcuts to manipulate annotations changed.
* Added FadeIn / FadeOut effects to render annotations.
* Added touchpad gestures to player and all webview (Mac only).
* Added menu bar to Browser/Downloader on Windows.
* Added debug console to Browser.
* Added preferences dialog. Able to change default downloads location.
* Context menu to repeat current video.

4/28/2012 annot.player, down, browser 0.1.5.2, 0.1.2.1, 0.1.1.1


* Fixed a severe bug that might cause duplicated imported annotations.

4/28/2012 annot.player, down, browser 0.1.5.1, 0.1.2.0, 0.1.1.1


* Fixed a bug that prevent resolving annotations when the app or system
path contains Chinese characters in Windows.
* Option to change online/offline annotations preference.
Prefer cached offline annotations by default.
* Able to select annotation and draw all annotations from the its user.
* Able to exile surrounded annotations using SHIFT+LButton or LButton+RButton.
* Added more mouse gestures to manipulate annotations. Shortcuts follow.
* Browser improved.
* Added multiple search engines.
* Always highlight selected text.
* Highlight hovered downloadable links.
* Added menus on Mac and Linux.
* Able to go full screen by double clicking any tab.
* Added mouse gestures with right or middle button, as follow.

4/22/2012 annot.player, down, browser 0.1.5.0, 0.1.1.0, 0.1.1.0


* Offline caching improved. Most network accesses are cached if possible.
Imported annotations are also cached for offline playing.
Offline database performance improved.
* Able to change annotation offset in time. Shortcuts follow.
* CTRL+ALT with =-0
* CTRL+ALT+Wheel
* Able to open media file from context menu on Windows.
* To maximize will result in full screen.
* Browser improved.
* Detect streamable video and open in Annot Player from context menu.
* Most webkit compatible shortcuts added.
* Fixed URL encoding for Asia characters.
* Offline cookies and caching are enabled.
* Downloader improved.
* Added concurrency control. Limit max number of downloads to 3.
* Added system tray.
* Added context menu.
* Streaming from AcFun.tv is broken.
Won't fix until AcFun.tv finalize its new RESTful API.
* Bugfix.
* Fixed bugs that might crash the player while switching media.
* Fixed bugs preventing Adobe Flash from playing MP4 video on Mac.

4/14/2012 annot.player, down, browser 0.1.4.3, 0.1.0.2, 0.1.0.1


* Fixed a severe bug while streaming MP4 video from nicovideo.jp.
* Use CTRL+SHIFT/MiddleButton with Mouse to select and delete annotations.
* Annotation analytics improved.
* Display download progress and media information in full screen mode.
* Preferred playing mode changed to embedded mode.
* Browser improved.
* Automatic login nicovideo.jp and bilibili.tv.
* Added built-in adblock.
* Remember history of visited and recent closed URLs.

4/8/2012 annot.player, down, browser 0.1.4.2, 0.1.0.1, 0.1.0.1


* Annotation analytics improved.
* Show annotation analysis while playing.
* Fixed a bug in deployed package for Windows.

4/7/2012 annot.player, down, browser 0.1.4.1, 0.1.0.1, 0.1.0.1


* Added keyboard shortcuts to adjust contrast, brightness, hue, saturation and
gamma.
* Added mouse wheel shortcuts to rotate/scale annotations.
* Ctrl + Wheel: scale all/paused annotations
* Shift + Wheel: rotate all/paused annotations
* Added basic analytics for annotations.
* Hardcode anonymous accounts for annot.me and nicovideo.jp.
* Alpha-release for linux.
* Service host moved to Japan.
* Bug fix and improvement on usability and stability.

3/30/2012 annot.player, down, browser 0.1.4.0, 0.1.0.0, 0.1.0.0


* Web browser and downloader utilities are made into different apps.
* Added mouse rubber band to select annotations with CTRL/SHIFT modifiers.
* Nico browser fixed. Able to visit nico anime channel from outside of Japan.
* Added previous/next/browse actions for online video.
* Upgraded to Qt 4.8.1 and VLC 2.0.1.

3/23/2012 annot.player 0.1.3.4


* Show download progress in position slider.
* Added annotation thread view.
* Allow opennng multiple windows from context menu.
* Bug fix in streaming module.

3/20/2012 annot.player 0.1.3.3


* Fixed a severe bug which could crash the app while downloading.
* Option to disable context menu rendering.
* Option to open multiple player windows on Windows in context menu.
* Able to change video aspect ratio in context menu.
Specified aspect ratio will be saved for the movie.

3/17/2012 annot.player 0.1.3.2


* When playing online video from AcFun/Bilibili,
parted videos are now merged on the fly.
Knowing issues with current implementation:
* Seeking over downloaded frames is not allowed.
* High CPU usage on Macbook Air.
* Added network proxy.
* Added proxy browser for nicovideo.
Able to play nico video from outside of Japan.
* Added utilities menu.
* Monitor clipboard for online media/annot URLs.
* Added increase/decrease buttons to URL dialog.
* Reimplemented video download and demux modules.
Removed dependencies on mp4v2 and gpac.

3/10/2012 annot.player 0.1.3.1


* Added fast forward buttons.
* Able to disable Aero effect in Windows Vista/7.
* Automatically detect last language preference for subtitle/audio track.
* Several bug fixes.

3/2/2012 annot.player 0.1.3.0


* Now support streaming from nicovideo.jp in Mac OS X as well.
Online video will be automatically downloaded and associated with annotations.
* Support streaming nicovideo using proxy.
* Switched to VLC2. Performance and stability improved.
* Now support playing Bluray Disc.
* Playing cue is broken on Mac OS X.
* GUI improved.

2/25/2012 annot.player 0.1.2.9


* Annotation rendering improved.
* Online streaming improved.
Added support to stream from nicovideo.jp (Windows only).
* Added dialog to download online videos, and remux parted videos to mp4.
Downloaded videos will be associated with online annotations automatically.
Supported websites: nicovideo.jp,acfun.tv,bilibili.tv,....
* Added debug console.

2/17/2012 annot.player 0.1.2.8


* Added annotation rendering effects.
Annotations rendered with shadow by default.
* Added support to open RTSP stream.
* GUI improved.

2/9/2012 annot.player 0.1.2.7


* Support importing annotations from nicovideo.jp.
* Support bilibili/nicovideo login.
* Online video and annotations decoding improved.
* User interface improved.
* Added history to all input line edits.
* Web browser module removed.
* Remember last played position, subtitle, and audio track for each movie.
* Added option to limit annotation count.

2/4/2012 annot.player 0.1.2.6


* Fixed a severe bug while opening remote media.
2/4/2012 annot.player 0.1.2.5
* Now support playing GoogleVideo/AcFun/BiliBili/Sina/Tudou,QQ video online, with
annotation support.
* Support importing online annotations from AcFun and Bilibli.

1/27/2012 annot.player 0.1.2.4


* Now support playing Youtube/Youku video online, with annotation support.

1/20/2012 annot.player 0.1.2.3


* Adjusted for Akatsuki no Goei 2
* Added support to play commentary audio tracks in BD video.
* Performance improved while handling large amount of annots/subtitles.
* Cast (bless/curse/block) to annotation and user added.
* Shortcuts assigned to switch play modes.
* Filters added to to annotation browser.
* Added basic user view.
* Several bug fixes.

1/12/2012 annot.player 0.1.2.2


* Enforce Japanese encoding to decode Galgame text in Windows.
* Service domain changed.
* Added automatic game signal detection.
Current database only supports galgame from light and a few other games.
* Subtitle rendering improved.

1/6/2012 annot.player 0.1.2.1 (Spring Festival Edition)


* Added Spring Festival channel.
* Ensure buttons repaint correctly in Windows.
* Fixed crash on exit in Mac OS X caused by unreleased nsobject.

1/1/2012 annot.player 0.1.2.0


* Able to delete annotations and alias.
* Fixed bugs while editing annotations.
* Adopted on-demand window creation to improve performance.
* Startup popups eliminated.
* Ensure player always on top of DirectX windows in full screen mode.
* Window-always-on-top disabled by default.
* Stop listening to process if required or on process close.
* Performance improved on large number of annotations.
* Updated to Qt 4.8 on Windows. Several improvements using new APIs.
* Added backlog view for annotations/translations.
* Annotation font rendered with contoured shadow.
* Mac OS X upgraded to 10.7. Toolchain switched.
No more support for 10.6 in the future.

12/25/2011 annot.player 0.1.1.5


* Fixed a bug while clustering annotations.
* Fixed a bug in annotation editor.

12/22/2011 annot.player 0.1.1.4


* Fixed a bug while playing DVD.
* Fixed a bug while dragging annotion.

12/16/2011 annot.player 0.1.1.3


* Added input line history.
* Added pre-defined command to input line.

12/13/2011 annot.player 0.1.1.2


* Windows tool chain updated. Qt library rebuilt. gSOAP updated.
* Added disc type automatic detection.
* Launcher dependency on msvcrt removed.
* Offline annotation caching improved.

12/7/2011 annot.player 0.1.1.1


* Added Fedora support.
* Added CD/DVD device dialog. CD/DVD buffering performance improved.
* Fixed sqlite cache creation bug in Linux.
* Menubar enabled to all OSes.
* Forward token digest to reduce delay on opening media.
* Added playlist to open multiple files or folder.
* Switched to GNU ChangeLog format.

12/2/2011 annot.player 0.1.1.0


* Windows global mouse hook removed and replaced with native vlcore calls.
Less mouse hanging in Windows when the app is busy.
* Added support to play cue file.
* Added support to play cdda. Fixed bug while opening CD on Windows.
* Added embedded mode.
Able to embed/play vidoe/annots in any window, such as Notepad, Photoshop, or
PPStream.
* Able to select embedded player on the top or bottom.
* Player buttons and menues extended.
* Added task bar icon for Windows 7.
* Added Dwm notifier in Windows 7 to watch aero composition changes.

11/26/2011 annot.player 0.1.0.3


* Fixed a severe bug in annot-player-0.1.0.2-win that might cause significant
delay for displaying context menu.
* Added support for navigating DVD menu on Mac OS X.
* Added app desktop/icon on linux.

11/25/2011 annot.player 0.1.0.2


* Added support for playing disc images such as ISO/MDF/BIN/IMG.
* Added support for Ubuntu 11.
* Improved mouse hook in windows to reduce GUI hanging.
* Minor bug fix.

11/22/2011 annot.player 0.1.0.1


* Added annotation counting.
* Delete Caches script removed. Caches will be automatically invalidated if
required.
* Minor bug fix.

11/18/2011 annot.player 0.1.0.0


* Improved translations.
* Minor bug fix.

11/18/2011 annot.player 0.1.0.0.rc


* Added basic support for viewing/annotating pictures and manga.
* CD/DVD/DVDISO support completed. DVD menu added.
* Added basic NG support.
* Block/bless/curse cast completed.
* Communication module and underlying data structure redesigned.
Player with version# less than 0.1.0.0 might not work anymore.
* Added support for Mac OS X Lion 10.7.
* Added support for Mac to directly open file in Finder.
* Added drag/drop support for Mac.
* Mouse hook bug fixed on Windows.
* GUI improved.
* Translations improved.

11/12/2011 annot.player 0.0.9.2


* Several bugfixes for Mac.
* OSD structure redesigned for sake of Mac and Windows XP.
* Mac OS X deployment frameworks finished.
* Caches and logs moved to ~/Library on Mac OS X.
* Added warming-up caches to speed up program startup.
* Reduced slow-downs that caused by Windows XP compatible code.
* Theming bug fixed for Windows XP.

11/10/2011 annot.player 0.0.9.0-0.0.9.1


* Windows XP theme redesigned.
* Mac OS X theme redesigned.
* Several bug fixes for Mac and Windows XP.
* Added Chinese translation.

11/8/2011 touch.player 0.0.8.4


* Open file context menu item now could open game exe as well.
* Finished update module.
* HTML editor sibling bug fixed.
* Subtitle color is now customizable. Long subtitle is split.

11/4/2011 touch.player 0.0.8.3


* NtCreateThreadEx replaced by synchronized NtCreatThread for Windows XP support.

11/3/2011 touch.player 0.0.8.2


* Added missed qtxml.

11/2/2011 touch.player 0.0.8.1


* Added in translate module.
* Added subtitle position settings.

11/1/2011 touch.player 0.0.8.0


* Communication approach with server changed.

10/30/2011 touch.player 0.0.7.2


* Added window picker (windows only).
* Enable attach process by window (windows only).
* Enable attach OSDPlayer to other window (windows only).
* TokenView removed from SignalView.

10/29/2011 touch.player 0.0.7.1


* Asynchronized communication.
* Annotation scheduling algorithm changed.

10/27/2011 touch.player 0.0.7.0


* Added debug output.
* Added system tray.
* Removed ALPHA features.
* Added single application feature.
* Added font caching notification.
* Game annotation hashing algorithm changed.

10/26/2011 touch.player 0.0.6.0


* Get local caching work, ready for publish.
10/24/2011 touch.player 0.0.5.1
* Mac theme and mouse events fixed

10/23/2011 touch.player 0.0.5.0


* Renamed from touch to annot
* Start using google code.
* Added language selection.
* Added annot filter.
* Finished annot editing.
* Finished alias editing.
* Token tag, name and file merged into alias.
* Game and media type merged into one.
* Most client-side componets finished except sync mode and local cache.
* Ready for publishing.

10/16/2011 touch.player 0.0.4.2


* Added client side signal mode.

10/16/2011 touch.player 0.0.4.1


* Finished GTH and process monitor module

10/12/2011 touch.player 0.0.4


* Start with ITH

9/15/2011 touch.player 0.0.3.1


* Added local cache using SQLite to implement SOAP client functions.
* Added persistent storage.
* Added licences

9/10/2011 touch.player 0.0.3


* Replaced REST xml parser with SOAP RPC.

9/3/2011 touch.app 0.0.0.1


* Project start.

9/3/2011 touch.player 0.0.2.1


* Add subtitle support

8/26/2011 touch.player 0.0.2.0


* First server side support (annotation/token/user)
* Mac OS X new GUI
* Several bug fixed. Stable release.
* Support LaTeX style commands
* Disc basic support in Windows.

7/31/2011 touch.player 0.0.1.3


* Added AIML module.

7/30/2011 touch.player 0.0.1.2


* Mac OS X support using VLCKit!

7/27/2011 touch.player 0.0.1.1


* Several bug fixed. Stable release.
* Improved command line edit.
* Using event filter in Windows hook

7/26/2011 touch.player 0.0.1.0


* Most GUI issue solved.
* DWM aero
* Mouse hook on Windows
* OSD display
* Graphics view animation
* Text encoding
* QSS and UI style
* Directory structure changed a lot.
* Moved common packages into Core
* Moved Windows stuff into win32
* Put VLC wrapper (MediaPlayer) alone.
* Combined with touch.reader.
* Work under Linux.
But only tested for Windows.
Missing VLC 1.1.x for Mac.
* Major Missing component
* Database
* User
* Network
* Platform other then win7

6/30/2011 touch.player 0.0.0.0


* Project launched.

6/18/2011 touch.reader 0.0.0.0


* Project launched.

Copyright 2011-2015, Annot Cloud


Copying and distribution of this file, with or without modification, are
permitted provided the copyright notice and this notice are preserved.

También podría gustarte