I notice that there are circulating patches out there from 2016. That version has a crash. The latest version is here:
https://drive.google.com/file/d/1w2VogDkPoUQAiETGFeIR9t1TXEiEBU6v/view?usp=sharing
PS2 Yuri Visual Novel
<0018> This time, just as I had a moment ago, Tsudzura-chan's body springs stiffly upright.
<0020> O-o-o-onee-san!? Why are you t-touching my tail!?
<0021> You know, I was just thinking it looked so fluffy, and might feel nice.
Full Website Patch!
You will need an original Akai Ito disc or ISO image.
Get the Base patch
Get the Most recent script update
Zohar’s site has 19068 of 21674 lines (88%) translated!!
Lines : 21674
Untranslated : 2606
Progress: 19068/21674 (87.98%)
Sakuya Route: 495 lines received
Progress: 19563/21674 (90.26%)
Mojibake count
R:\jp_script\decompiled\data>\ScriptStats.exe GET
Name: 20256
Title: 11681
Choice: 1514
Text: 566870
Total: 600321
Without Sakuya:
Name: 17301
Title: 9905
Choice: 1323
Text: 494567
Total: 523096
Difference: 77225
Feedback / questions?
IRC: #akaiito at Rizon
Credits
Translation: Zohar
http://art-tech.arts.ufl.edu/~kmcgo/Akaiito/storyfiles/
Hacking: Shizuka, Nanashi3
https://github.com/mchubby/akaiito_tools - for CEL and FONT formats.
Looking for: Editors, Translators
Progress
10 February 2017: Links removed. We are talking to localization companies!
27 January 2017: I’ve received Zohar’s translation of the Sakuya route.
20 January 2017: WELP, Trump’s inaugurated. Fix some Tsuzura route bugs.
15 January 2017: Fix crash in Left Side branch. Oops. Also various fixes to ending list.
Releases
28 Jan 2011: Yumei Route Patch
29 Feb 2016: Left Side Base Patch (alpha test)
6 Mar 2016: Right Side Common Route (alpha test)
13 Mar 2016: Full website patch. All existing scripts in game; need translators now!
14 Mar 2016: Full Website Beta Patch. Base Patch.
16 Mar 2016: Font modified.
Please suggest monospaced fonts to replace the Akai Ito built in one (which is pretty bad imo)
Most recent release:
[1] Base Patch (includes modified BGM, opening/demo movies, and script)
--
[2] Full Website Patch (font, script fix)
--
Old saves will not work between versions (especially after double text boxes were implemented).
Hacking is to a point where I'd be confident in writing a full patch with the current tools.
I’m in contact with the translator!! Exciting yurilicious things can happen now!!
Hacking progress:
Component | Status |
Image Format | The .CEL format was broken by "Nik" for Aoishiro. The tools for this format work for 24-bit images, and are broken for palettized 8-bit. |
Script | Script Assembler/Disassembler Tool: "script.exe" Format mostly understood. Decompiler and compiler written. Variable support is rudimentary |
Dictionary, Savefile Name data files | Decompilers: "dict.exe" "title.exe" Compiler: "compiler_bin.exe" Formats fully reversed. |
Flowchart data file | Flowchart String Codec: "AFCB.exe" Strings extractable + insertable |
PC Engine | The Galstars Akaiito Engine works, but you can make it crash if you mess with the flowchart. Flowchart crash FIXED However, it is rather buggy; when it starts up, it is mostly reliable but will sometimes crash. However, it often decides not to start up at all, and doesn't work on my dev machine. I intend to fix the Galstars engine, but it's not a focus. 2016: Looks like quite a bit of progress on the PC version side? idk... |
Aoishiro Engine | I've tried without success, even though I've actually adapted the script formats to work. I've confirmed that the engines have game-specific information in them, so adapting the Aoishiro engine to work with Akaiito will be very difficult. |
I’m trying to complete <character’s> route but keep dying. Why?
Akai Ito has a really annoying “seals” system that prevents you from playing routes out of order. More confusingly, some “seals” (notified upon completing a route) require “unlock conditions” that do not tell you you’ve passed through them. See the unlock section for more details.
How do I patch the game?
When this is finished, you would insert your disc into your computer, run the program, and the program will patch your disc, copying it to your hard drive. You would then burn the file to another DVD and play it on your modded PS2.
Wait, how do I run the game?
This is a PS2 game, and the release will be such that, given a modded PS2, you should be able to burn a copy of it and play it on the PS2. You can also get by with PCSX2, and you need something like a 2.0GHz Core 2 Duo (or equivalent) + DX9 Graphics Card, or a 2.0GHz Ivy Bridge i3 + software graphics rendering, to emulate the game without slowdown.
How about PC?
Our Communist Comrades at Galstars have modified the Akaiito PC Trial version to support the full game, but it does lose some functionality because the trial version doesn't support everything the PS2 engine does. I've patched a few bugs, but I still haven't caught all of them. I've actually tried converting the Akaiito scripts to Aoishiro's format, but now know it's not easily possible as there is game-specific data in the engine itself.
I also tried getting the Chinese patch’s PC engine to work, but it didn’t want to work on my system...
Phase 1: Converting the existing translation into game script
A. Downloading - completed.
B. Editing/Converting - converting the website's format to line up with the game scripts. This requires line by line checking, and implies an editing pass as well, as it would be wasteful not to do so. Also, the game engine doesn't support lines over 3x45 chars long, so sentence splitting is also required, and while this could be done automatically, it is better done by a human. Translation notes will go into the dictionary, the format of which has been reversed.
Phase 2: Finishing translation
A. Translating - translating the missing scripts from the game. This is the Sakuya route and any scripts the existing translation missed.
B. Image editing - Exactly as it says.
Phase 3: Fansubbing
It is really simple to get movies into Akai Ito.
Software (for movies) or DirectX 11 rendering is highly recommended on PCSX2.
A. OP movie [1] (translated, need TLC).
B. Demo movie [2] (translated, need TLC).
C. Ending movies (not done)
1 December 2010: OP and DM videos subtitled.
2-7 December 2010: Figuring out the script format.
8-9 December 2010: Format understood well enough to decompile. Decompiler is written.
13 December 2010: This page created.
19-20 December 2010: Compiler is written. Results are bit-exact.
2016: Finish what I started.
28 Feb 2016: Uzuki route synchronized.
28 Feb 2016: Compile: 26 translation too-long errors.
29 Feb 2016: Left Side alpha test patch uploaded
Trivial:
Easy:
Annoying things to do:
Difficult things to do:
Outdated:
Table of progress: bold is "complete"
Route | Rename/Sync | Edit/Fix | Translated | Notes |
Day 1 | 1890/1910 | 1890/1910 | 0/20 | s1a05_02 missing. 1890/1910 lines inserted. |
Day 2 A | 3584/3587 | 0/3587 | 1/3 | Yumei/Uzuki/??? |
Day 2 B | 2419/2423 | 0/2423 | 0/4 | Tsuzura/Sakuya |
Day 2 | 6006/6010 | 0/6010 | 0/4 | s2b01_0a, s2b01_08 missing. 3585/6010 lines inserted. |
Day 3 A | 1493/1493 | 0/1493 | n/a | Yumei |
Day 3 B | available | Uzuki | ||
Day 3 C | yes: s3c00-s3c11 avail: s3c12-s3c15 | 0/748 | Sakuya | |
Day 3 D | available | Tsuzura | ||
Day 3 E | available | ??? | ||
Day 3 | 1493/7484 | 0/7484 | 0/748 | 1493/7484 lines inserted. |
Day 4 A | 1202/1202 | 0/1202 | n/a | Yumei |
Day 4 B | available | Uzuki | ||
Day 4 C | no | 0/790 | Sakuya | |
Day 4 D | available | Tsuzura | ||
Day 4 | 1202/3638 | 0/3638 | 0/790 | 1202/3638 lines inserted |
Day 5 A | 630/630 | 0/630 | n/a | Yumei |
Day 5 B | available | Uzuki | ||
Day 5 C | no | 0/635 | Sakuya | |
Day 5 D | no | 0/426 | Sakuya | |
Day 5 | 630/2464 | 0/2464 | 0/1061 | 630/2464 lines inserted |
Misc | 0/170 | 0/170 | ||
Total | 11222/21674 (51.8%) | 8800/21674 (40.6%) | 1/26+0/2599 | 8800/21674 lines inserted |
Yumei | Uzuki | ??? | Sakuya | Tsuzura |
S1 | ||||
S2A | S2B | |||
S3A | S3B | S3E | S3C | S3D |
S4A | S4B | S4C | S4D | |
S5A | S5B | S5D | ||
S5C | ||||
Missing 5 lines | ||||
Flowchart title 28: shorten | Save title 29: truncate | Backlog title Not limited | Choices 44: shorten | Names n/a |
User interface n/a | Regular title | Missing: #text 2556 #choice 28 (13) #title 36 Total 2620 |
Yellow Highlight: not released yet.
Green Highlight: released (light green: released in 2011)
RED: translation doesn’t exist
YELLOW: translation partially exists
GREEN: translation exists on website
PURPLE: downloaded and renamed to game scripts
MAGENTA: game scripts adjusted to match script lines
BLUE: game scripts patched into data files
BLACK: edited scripts
Character Limits:
Choices: 44 (45 will cause slight overflow)
Save titles: 29. 27 + … (SJIS 0x8163)
Flowchart titles: 28 (29 with slight overflow)
Common Route
Missing Scripts:
s1a05_02<**all** 0000-0019> (20 lines)
Missing Lines:
s2b01_0a<0000> えーと、お塩は舐めさせられたけど、それ自体すでに化かされたようなものだし。
s2b01_08<0000> …………
s2b01_08<0001> でも、塩を舐めさせられて水を飲んだだけだし、あのぐらいはご馳走になった内には入らないし。
s2b01_08<0002> よし、なかったことに。
s2a02_00<0005> 地面は舗装されていない田舎道。ぬかるんだら歩くのも大変そうで、この暑さを差し引いても、今日は晴れて良かった。
s2a22_0a<0046> まぶたの向こうで、月光がはじけた。
s2a22_1h<0024> 聞こえているのかいないのか――
Sakuya route
s3c01_00<0059> 「そして今のあんたには、頼れるお供の孫悟空はいない」
s3c11_01<0035> そして彼女は数歩分の距離を置いたところで歩みを止め、わたしを一瞥した後に、サクヤさんへと視線を据えた。
s3d09_00<0033> そして彼女は数歩分の距離を置いたところで歩みを止め、わたしを一瞥した後に、サクヤさんへと視線を据えた。
s3d09_00<0033> And with several steps yet between us, she stills her feet, and after a single glance my way, fixes a stare on Sakuya-san.
Tsuzura route:
s3d16_00<0037> 葛ちゃんが警戒心あらわに身構える。
s3d16_00<0079> 「贄の血……」
Uzuki route (some of these are trivially translatable)
s3b11_00<0020> 受け身もとれずに背中をぶつけて、息が詰まっ*Nて苦しさに喘いだ。
s4b03_05<0006> 烏の濡れ羽色の御髪は、白衣とのコントラストでますます黒々と輝いている。
s4b03_06<0027>「それは、その……」
s4b06_02<0129>「どちらにせよ《器》――依代を持たない霊体は、己という形を保てずに虚空へと還っていく」
s4b07_00<0014> どうしよう。
s4b09_00<0016> 「重大な裏切り行為だとわかっていたはずなのに、鬼切りの技をお前に授けた?」
s5b02_00<0019> その音は、呼び鈴代わりだったのかもしれない。
s5b05_01<0011> ぐっと押し込まれた刃はとうとう心臓に達し、弾力に富んだその器官さえも切り裂いた。
Sakuya Route Missing:
s3c12-s3c19
s4c*
s5c*
s5d*
Choices don’t necessarily line up - need to note where the HTML gets them wrong.
Possible script paths
Yumei:
1 2A 3A 4A 5A
Uzuki:
1 2A 3B 4B 5B
???:
1 2A 3B 3E
Sakuya:
1 2B 3C 4C 5D 5C
1 2B 3C 4C 5C
Tsuzura:
1 2B 3C 3D 4D
1 2B 3D 4D
This means that 3C is partially translated (Tsuzura's portion is fully translated).
4C, 5D (Tsuzura's path does *not* continue here), and 5C are certainly not.
Substitutions:
dzu -> zu, for one. Other unpreferred romanizations will be eliminated.
《力》
<i>power</i>:《power》
《視》
<i>see</i>:《see》
<i>saw</i>:《saw》
<i>sight</i>:《sight》
<i>showed</i>:《showed》
<i>show</i>:《show》
《器》
<i>vessel</i>:《vessel》
《聴》
<i>listen</i>:《listen》
Unlocking Routes
Recommended Playing Order
No other-route seals:
Uzuki: no special requirements. True end unlocks Yumei and Sakuya.
Tsuzura: Save at A Dream Bleached Away (Tsuzura route); need to see “The Near and Distant Shores” ending.
Routes with seals:
Yumei: Need to get unlock from Tsuzura/Sakuya common route “My Scars”. Need to see Uzuki route “The Oni and the Oni Slayer” scene, near Uzuki route true ending.
Sakuya: Need to see Uzuki true ending.
Nozomi: You must pick the appropriate choices expressing empathy towards Nozomi during the Yumei route “A Multitude of Fireflies” and Tsuzura route “Aggressive Tactics”. These are choices very close to the end of each respective route. Please note that choosing to “search for the mirror” during Tsuzura’s route will lock you into Tsuzura’s normal ending.
Without Sakuya, you can still reach the true ending of all other characters.
Unlock codes:
The command variable_op<0A> [24771900000000000n000000] is enough to unlock these.
Unlock 1: You must see the Common route “My Scars” scene.
s1day_a :: s1a19_00
Unlock 2: You must go to the Regional History Museum in the Tsuzura route.
s3day_d :: s3d03_05
Unlock 3: You must choose “But, I can't help but feel sorry for them” during the Yumei route’s “That which is Left Unfinished” scene.
s4day_a :: s4a11_02
Unlock 4: You must not break the mirror. (choose “Search for the Mirror” to get this choice.)
note: choice japanese is swapped on the website.
s4day_d :: s4d02_03
Unlock 5: You must view Tsuzura’s normal ending “The Near and Distant Shores”
s4day_d :: s4d08_02
Unlock 6: You must see the Uzuki route “The Oni and the Oni Slayer” scene.
s4day_b :: s4b09_00
Unlock 7: You must view Uzuki’s true ending “A Refreshing Breeze”
s5day_b :: s5b07_00
Unlock 8: Common Route left side “Path of Illusion” scene seen.
s2day_a :: s2a05_01
Seal requirements: (Seals are achieved after finishing the game via some kind of ending. If you use the “return to the title menu” option, I believe the seal unlocking script does not run.)
Seal 0: Unlock 1, Unlock 8 “Path of Illusion”
This makes it impossible to skip “The Hashira and Kei”. ← Annoying. You have to play through the “My Scars” scene and get to an ending, plus play through the “Path of Illusion” scene and get to an ending.
Seal 1: Unlock 2 “Joker”
This might unlock the Sakuya route?
Seal 4: Unlock 5 “A Dream Bleached Away”
This unlocks Tsuzura’s true ending.
Seal 5: Unlock 6 “Jouhari Mirror F”
This unlocks Yumei’s true ending.
Seal 6: Unlock 7 “Red Guidance”
This gives you an additional choice during Sakuya’s “Red Guidance” chapter. I think it’s needed to get Sakuya’s true end? This section of the game is not translated yet.
Seal 7: Unlock 3, Unlock 4 “Crimson Admonition”
This unlocks the Nozomi route!
Seal 8: All other seals unlocked
Seal 2B: All true endings seen
PC port details and notes:
I’m not sure I’m allowed to use the Akai Ito trail engine. It can certainly do the trick, but what about legal issues? Also I’d like to remove the dictionary feature and replace it with in-game hyperlinks. No need to break gameplay for translation/mythology notes.
Ren’py 6.99.12
Script format changes needed:
voice() - dereference name.
_unk<0C05> - AFS pointer. Derefence. Is this a voice line with lip sync?
Working:
#text
#name+#text
#title
#voice (no filenumber dereference) - all voices have a lipsync file.
_unk<1A03> masks the lipsync file though
#cg (background layer)
se
sprite
fade_cg
Not working:
A lot of _unk opcodes. Some of the transitions are basically simple ATL transforms though, very easy once I understand what it is, or I can just visually estimate the effect.
Lip sync: this is just going to be painful, even off screen characters have lip sync. Guess: they used a kana-to-lipsync converter.
Format is uint8[8] dummy, uint32 length, uint16[length, image in speech sequence of .cel - sort of. Something is off.]
Blinking eyes - simple
This is a transition.
0x0B00: cg (BG_BLACK.cel 1) [000000000000010031000000]
0x0B10: _unk<0C04> [000000000000000005000000]
0x0B20: _unk<0804> [00000000000000000000000000003C0000000000] <- 60fps = 1s delay
0x0B38: _unk<0003> [000001000000000000000000]
0x0B48: _unk<2103> [0000010000000000] <--execute transition?
0x0280: _unk<0B03> [00000000000000000000000000000A0000000000]
0x0298: _unk<0B03> [00000100000000000000000000000A0000000000]
0x02D4: sprite (C05A4L2.cel) [00000o000000040031303837] - red is layer.
0x02E4: _unk<0402> [0000000000000000 4001 00000000 E001 00000000] position.
0x02FC: _unk<0102> [00000000000000000A000000]
0x030C: _unk<0A02> [0000010000000000000000000000280000000000] //fadeout delay
0x0324: _unk<0902> [0000000000000000000000000000280000000000] //fadein delay
0x033C: _unk<0B02> [0000000000000000]
0x0348: _unk<2103> [0000000000000000]
0x0354: _unk<0003> [000000000000000001000000]
Here’s a sprite transition.
0x0660: _unk<0B03> [00000000000000000000000000000A0000000000]
0x0678: _unk<0B03> [00000100000000000000000000000A0000000000]
0x0690: _unk<0C03> [0000000000000000]
0x069C: _unk<2103> [0000000000000000]
0x06A8: _unk<2103> [0000010000000000]
0x06B4: sprite (C05C6L2.cel) [000001000000040031313638]
0x06C4: _unk<0402> [0000010000000000400100000000E00100000000] position(320,480). Anchor at bottom center.
0x06DC: _unk<0102> [00000100000000000A000000] img_cmd(show_with_delay (0xA0))
0x06EC: _unk<0A02> [0000000000000000000000000000280000000000] Hide, delay ⅔ s
0x0704: _unk<0902> [0000010000000000000000000000280000000000] Show, delay ⅔ s (40f)
0x071C: _unk<0B02> [0000010000000000]
0x0728: _unk<2103> [0000000000000000] (execute.)
Without clearing the screen.
0x0A08: _unk<0102> [000001000000000009000000] ← different image operation
0x0A18: _unk<0402> [0000000000000000400100000000E00100000000]
0x0A30: _unk<0102> [00000000000000000A000000]
0x0A40: sprite (C05C1L2.cel) [000000000000040031313431] //layer 1 over layer 0.
0x0A50: _unk<0002> [000000000000000001000000] // show instantly?
0x0A60: _unk<0A02> [0000010000000000000000000000140000000000] ⅓ s - hide this layer.
0x0A78: _unk<0B02> [0000010000000000]
0x0A84: _unk<0003> [000001000000000000000000]
0x0A94: _unk<2103> [0000010000000000]
0x0AA0: #text(0014)
Might be best to heuristically determine complex image transforms and do those manually actually.
Easy stuff we need to automatically translate to renpy.
Progress:
Simple:
Text.
CG display
Sprite display (including blinking eyes)
Layering
Sound and BGM
Playing movies.
Intermediate:
Transitions and ATL transforms.
Flow chart.
Save page
Variables - save data - title, what time it is in the game (day 1/2/3/phase of the moon), blood amount
Variables - progression data.
Complicated:
Lip sync. Format is not reversed and doesn’t make sense (ie. it’s contradictory). Timing does not seem to match frame timings, which is used everywhere else in the game.