(name);
+ entry.Size = LittleEndian.ToUInt32 (index, index_offset);
+ entry.Offset = LittleEndian.ToUInt32 (index, index_offset+4);
+ if (!entry.CheckPlacement (file.MaxOffset))
+ return null;
+ dir.Add (entry);
+ index_offset += 0x2C;
+ }
+ return new ArcFile (file, this, dir);
+ }
+
+ public override Stream OpenEntry (ArcFile arc, Entry entry)
+ {
+ if (entry.Size <= 8 || !arc.File.View.AsciiEqual (entry.Offset, "DSFF"))
+ return base.OpenEntry (arc, entry);
+ var input = arc.File.CreateStream (entry.Offset+8, entry.Size-8);
+ var lzss = new LzssStream (input);
+ lzss.Config.FrameInitPos = 0xFF0;
+ return lzss;
+ }
+
+ unsafe void Decrypt (byte[] data, uint key)
+ {
+ fixed (byte* data8 = data)
+ {
+ uint* data32 = (uint*)data8;
+ for (int length = data.Length / 4; length > 0; --length)
+ *data32++ ^= key;
+ }
+ }
+ }
+}
diff --git a/supported.html b/supported.html
index d2a3b226..fd153205 100644
--- a/supported.html
+++ b/supported.html
@@ -254,6 +254,7 @@ Okiba ga Nai!
Oku-sama wa Moto Yariman
Omana 2: Omaenchi Moeteruzo
Ore no Saimin Fantasia
+Ouka Ryouran
RGH ~Koi to Hero to Gakuen to~
Riding Incubus
Seirei Tenshou
@@ -294,6 +295,7 @@ Assault Angel Canon
Chikatetsu Fuusa Jiken
Eien no Owari ni
Fuurinkanzan
+Gedou Yuusha
Himemiko
Ikusa Otome Valkyrie
Mahou Tenshi Misaki
@@ -613,6 +615,7 @@ Shinsetsu Ryouki no Ori
Gokudou no Hanayome
Inraku no Miko
Knight Carnival!
+Maou no Kuse ni Namaiki da! Torotoro Tropical!
Nise Kyoushi ~Seikatsu Shidou ADV~
Seal Princess
Zettai★Maou ~Boku no Mune-kyun Gakuen Saga~
@@ -726,6 +729,7 @@ Shukufuku no Kane no Oto wa, Sakurairo no Kaze to Tomo ni
*.bsa | BSArc | No | Bishop |
Houkago ~Nureta Seifuku~
Kyouiku Shidou
+Sansha Mendan ~Rensa Suru Chijoku Choukyou no Gakuen~
Yakata ~Kannou Kitan~
|
*.bsg | BSS-Graphics BSS-Composition | No |
@@ -1015,6 +1019,9 @@ Elevator Panic ~Misshitsu no Inkou~
*.dat | MK2.0 | No | MAIKA |
Uchuu Keiji Soldivan
|
+*.ttd | .FRC | No | Morning |
+Binkan Ecchi! ~Futari no Oyatsu wa Tokunou Milk~
+ |
Non-encrypted only