PDA

View Full Version : Oreimo PSP Staff Wanted


AngelicDreams
2011-04-07, 16:39
There is a project on tlwiki for the translation of the Ore no Imouto ga Konna ni Kawaii Wake ga Nai Portable for the PSP.
http://tlwiki.tsukuru.info/index.php?title=Ore_no_Imouto_ga_Konna_ni_Kawaii_Wake_ga_Nai_Portable

EdMX has offered to help translate the game, and I am editing/QCing.

Update: We now have another translator, a T/L checker, and two image editors. Ed is still bleeding for another translator though.

Our hacker, RoByte, has returned. Apparently he/she can recompile the scripts so we should be fine for hacking. Thanks anons and Nanashi3 for the help!

If you are interested you can contact me at bokunoyakusoku@gmail.com
or just head over to the tlwiki page and announce that you'd like to help.
Or you can reply here. xD

Unregistered
2011-04-08, 18:38
Rather than the HCA, which look very much like compressed sound effects (see also: 1296615259), I'd rather look elsewhere if I were you, at the obj files maybe?.

Unregistered
2011-04-08, 20:19
Hint: it's MBCS (utf16?), but you'll have to figure out which endianness and what delimiter bytecodes in order to pull out text strings

京介「だから桐乃のやつ、今頃部屋で買ったばかりのゲームに熱中してるんじゃねえかな」

AngelicDreams
2011-04-08, 22:26
Unfortunately I forget to mention this but when I said I was desperate, I meant that I attempted to extract the script with absolutely no experience at all. Zero. Nilch. Nada. It was mostly trial and error trying to figure out what to do. In fact, even if I found a way to extract the script on my own, I wouldn't know how to...recompile (I think that's what it's called) everything.

Rather than the HCA, which look very much like compressed sound effects (see also: 1296615259), I'd rather look elsewhere if I were you, at the obj files maybe?.

Like I said, I have no experience with this but with your suggestion, I attempted to open the an obj file from one of the .dat files (AKYO_0000A.0001) which I extracted with tenori tool.

Of course, I had no idea how to do this, but in the end I opened it with Microsoft Visual Studio and found what looks like (not sure, as I, again, have no experience with this stuff) hex strings.

If these strings can be converted into text then this might be the script? I have no idea. But it seems that the next poster might.

Hint: it's MBCS (utf16?), but you'll have to figure out which endianness and what delimiter bytecodes in order to pull out text strings

I do not know what MBCS utf16 is. (I'm sorry I don't know any of this >.<)
But from utf16 I would think that it is a unicode or something. (Maybe for the hex strings that I found in the .obj?) From what you posted, it seems like you have possibly found a way to extract the script? (using delimiter bytecodes, which I have no idea what they are, to pull out text from a file, maybe the .obj?) Bah, I should go learn this stuff.

Unregistered
2011-04-09, 08:49
Using your example and tenoritool, I extracted the file "AKYO_0000A.obj.gz" from "AKYO_0000A.0001.dat" from "AKYO_0000A.dat" from "script.dat" from "RES.DAT". Then I extracted "AKYO_0000A.obj" from "AKYO_0000A.obj.gz" using 7zip, you can use other programs to do this.

The text strings are in UTF-16LE,
to view it, you can try:
remove the first byte with an hex editor (filesize should be 9888 minus 1 bytes), rename the extension to txt, open it with firefox, set the character encoding to "UTF-16LE".

AngelicDreams
2011-04-09, 09:51
Using your example and tenoritool, I extracted the file "AKYO_0000A.obj.gz" from "AKYO_0000A.0001.dat" from "AKYO_0000A.dat" from "script.dat" from "RES.DAT". Then I extracted "AKYO_0000A.obj" from "AKYO_0000A.obj.gz" using 7zip, you can use other programs to do this.

The text strings are in UTF-16LE,
to view it, you can try:
remove the first byte with an hex editor (filesize should be 9888 minus 1 bytes), rename the extension to txt, open it with firefox, set the character encoding to "UTF-16LE".

This has brought me one step closer!
I opened it both in JEdit and in Firefox after removing the first bytewith UTF-16LE encoding and received the (I think) same result. There is definitely recognizable script in there. Of course, there is still some gibberish which I assume is what "figure out which endianness and what delimiter bytecodes in order to pull out text strings" means. I will have to figure out what this means and what I have to do, but even so, thank you everyone. At least I now know where the scripts are and that they exist. ;D

Edit: Of course, I'm definitely still looking for hacker(s)/staff. If anyone would like to volunteer, please do. :D

Nanashi3
2011-04-09, 11:12
extracted scripts
http://ifolder.ru/22871967

AngelicDreams
2011-04-09, 11:41
extracted scripts
http://ifolder.ru/22871967

Oh my god, thank you very much! This saves me so much trouble!! I love you! <3 I don't know how long this took you, but thank you for helping! I will be sure to give credit to you and everyone else for the help.

Now all I need to do is see if I can find a way to recompile the scripts after they're translated and then back into the original .dat files and get the game working.

Message
2011-04-09, 12:08
Usually, reinsertion is a lot more tricky than extraction... >_>;;

AngelicDreams
2011-04-09, 12:19
Yes, unfortunately, but I am still extremely happy with what we have now, since a few days ago I had absolutely no idea how I would get this project started without scripts. And now we have them! :)

Nanashi3
2011-04-09, 12:37
AASTARTPOINT: http://ifolder.ru/22873124

Extractor:
QuickBMS script (http://pastie.org/private/hmqbmheofl6lavkaws4a)

AngelicDreams
2011-04-09, 14:49
Thank you. I was wondering where AASTARTPOINT was.

Nanashi3
2011-04-12, 10:14
Updated scripts (http://ifolder.ru/22926846), parsing additional commands (ui messages, etc.).

For modified files only: modified files (http://ifolder.ru/22926820)

QuickBMS http://forums.novelnews.net/images/icons/icon3.gif Guyzware OBJ script (script 0.2.0) (http://pastie.org/private/sknqe8raur80xcchpl8cdw) http://forums.novelnews.net/images/icons/icon3.gif

AngelicDreams
2011-04-12, 14:34
Thank you! I don't exactly understand the changes, but I have provided the updated scripts to our staff.

Nanashi3
2011-04-12, 16:18
somewhat unrelated, toradora scripts (http://www.2shared.com/file/q99vv_c1/__tora_new1.html). (extractor bumped to version 0.2.1)

Would be nice if you managed to have that other guy who (tentatively?) wrote a .dat repacker to release his/her source code.

out,
7-4-3.

AngelicDreams
2011-04-12, 19:11
somewhat unrelated, toradora scripts (http://www.2shared.com/file/q99vv_c1/__tora_new1.html). (extractor bumped to version 0.2.1)

Would be nice if you managed to have that other guy who (tentatively?) wrote a .dat repacker to release his/her source code.

out,
7-4-3.

I will thank you in the place of the Toradora! P translation project's staff. I have notified them that they can get the scripts that they've had trouble extracting here. This may start their project just as it started ours! :D

I don't think RoByte has finished writing the tool for the .dat file repacker yet. I'll ask him if he's willing to share his source code when he's done though. On another note, somebody from the Toradora! P thread at hongfire seems to have written one but hasn't been on in a while. I attempted to ask him for the repacker before RoByte came back but he didn't reply. If RoByte's willing to share after he's done writing it, I'll post back here as soon as possible. Considering you helped us with the scripts, it's likely he'll be willing to share.

Thanks for all your help!

RoByte
2011-04-13, 19:58
I'll be glad to release to source once I've finalized the program and cleaned up the code. I'm probably the only one who could use it in the current state :)

k-wng
2011-04-16, 18:28
It seems like I don't need to finish this anymore. It is still usable if you create some batch files.


import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.RandomAccessFile;
import java.util.Arrays;

public class Gpda {
static final String CHARSET = "SJIS";
static final int DAT_BLOCK_SIZE = 2048;
static final byte[] GPDA_SIG = new byte[] {71,80,68,65};
static final byte[] GZIP_SIG = new byte[] {31,(byte)139,8,0};

static final int FILE_BUFFER_SIZE = 5120000;
static boolean gzip = false;

public Gpda() {
}

int findDupName(int cur, String name, String[] names) {
int count = 0;
for (int i=0; i<names.length;i++) {
if (names[i].equals(name)) {
if (cur < i) {
return count;
}
count++;
}
}
if (count>1) {
return count;
}
return -1;
}

void extractGpda(RandomAccessFile in, long offset, int size, String output, FileOutputStream datlist, String infostring, byte[] indexname) {
try {
byte[] buffer = new byte[4];
in.seek(offset);
in.read(buffer, 0, 4);

if (Arrays.equals(GPDA_SIG,buffer)) {
int filecount,namesize,sameNum;
int[] filesizes, nameoffsets;
long filesize;
long[] fileoffsets;
String[] filelist;
byte[][] indexnames;
String filename;

filesize = Long.reverseBytes(in.readLong());
filecount = Integer.reverseBytes(in.readInt());
fileoffsets = new long[filecount];
filesizes = new int[filecount];
nameoffsets = new int[filecount];
filelist = new String[filecount];
indexnames = new byte[filecount][];

for (int i=0; i<filecount; i++) {
fileoffsets[i] = Long.reverseBytes(in.readLong());
filesizes[i] = Integer.reverseBytes(in.readInt());
nameoffsets[i] = Integer.reverseBytes(in.readInt());
}
for (int i=0; i<filecount; i++) {
in.seek((long)nameoffsets[i]+offset);
namesize = Integer.reverseBytes(in.readInt());
indexnames[i] = new byte[namesize];
in.read(indexnames[i], 0, namesize);
filelist[i] = new String(indexnames[i], CHARSET);
}
System.out.println("Extracting: "+output);
new File(output).mkdir();

datlist.write(("d"+infostring).getBytes());
datlist.write(indexname);
datlist.write("\r\n".getBytes());

for (int i=0; i<filecount; i++) {
sameNum = findDupName(i, filelist[i], filelist);
filename = output+"/"+filelist[i].trim();
if (sameNum > 0) {
extractGpda(in, fileoffsets[i]+offset, filesizes[i], filename+"_"+sameNum, datlist, sameNum+","+output+"/", indexnames[i]);
} else {
extractGpda(in, fileoffsets[i]+offset, filesizes[i], filename, datlist, ","+output+"/", indexnames[i]);
}
}
} else if (offset==0) {
System.out.println("not a GPDA file");
} else if (gzip && Arrays.equals(GZIP_SIG,buffer)) {
int read;
String filename = output;
FileOutputStream out;
if (output.endsWith(".gz")) {
datlist.write(("g"+infostring).getBytes());
datlist.write(indexname);
datlist.write("\r\n".getBytes());
} else {
filename = output+".gz";
datlist.write(("e"+infostring).getBytes());
datlist.write(indexname);
datlist.write("\r\n".getBytes());
}
in.seek(offset);
buffer = new byte[FILE_BUFFER_SIZE];
out = new FileOutputStream(filename);
for (int r=0;r<size;r+=read) {
read = in.read(buffer, 0, Math.min(FILE_BUFFER_SIZE,size-r));
if (read <= 0) {
return;
}
out.write(buffer, 0, read);
}
out.close();
System.out.println("Extracting: "+filename);
Runtime.getRuntime().exec(new String[] {"gzip", "-df", filename});
//does not wait for and check if extracted file is a gpda file
} else {
int read;
FileOutputStream out;
in.seek(offset);
buffer = new byte[FILE_BUFFER_SIZE];
System.out.println("Writing: "+output);

datlist.write(("f"+infostring).getBytes());
datlist.write(indexname);
datlist.write("\r\n".getBytes());
out = new FileOutputStream(output);
for (int r=0;r<size;r+=read) {
read = in.read(buffer, 0, Math.min(FILE_BUFFER_SIZE,size-r));
if (read <= 0) {
return;
}
out.write(buffer, 0, read);
}
out.close();
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}

void writeSig(RandomAccessFile out, long offset, int filecount) throws Exception {
out.seek(offset);
out.write(GPDA_SIG, 0, 4);
if (filecount == 0) {
out.writeInt(Integer.reverseBytes(DAT_BLOCK_SIZE));
out.seek(offset+DAT_BLOCK_SIZE-1);
out.writeByte(0);
return;
}
out.seek(offset+12);
out.writeInt(Integer.reverseBytes(filecount));
}

int writeIndexNames(RandomAccessFile out, long offset, byte[][] list) throws Exception {
int filecount = list.length;
int size_index = filecount*16+16;
int size_names = 0;
for (int i=0; i<filecount; i++) {
out.seek(offset+28+i*16);
out.writeInt(Integer.reverseBytes(size_index+size_names));
size_names += list[i].length+4;
}
out.seek(offset+size_index);
for (int i=0; i<filecount; i++) {
out.writeInt(Integer.reverseBytes(list[i].length));
out.write(list[i], 0, list[i].length);
}
return size_index+size_names;
}

void writeIndexFiles(RandomAccessFile out, long offset, long fileoffset, int filesize) throws Exception {
out.seek(offset);
out.writeLong(Long.reverseBytes(fileoffset));
out.writeInt(Integer.reverseBytes(filesize));
}

void writeDatSize(RandomAccessFile out, long offset, long size) throws Exception {
out.seek(offset+4);
out.writeLong(Long.reverseBytes(size));
}

int getBlockSize(int size) {
if (size > 0) {
return (int)(Math.ceil((double)size/DAT_BLOCK_SIZE)*DAT_BLOCK_SIZE);
} else {
return DAT_BLOCK_SIZE;
}
}

long writeFile(File input, RandomAccessFile out, long offset) throws Exception {
long current_filesize = input.length();
byte[] buffer = new byte[FILE_BUFFER_SIZE];
FileInputStream in = new FileInputStream(input);
int bytes_read;
out.seek(offset);
for (int total_bytes_read=0;total_bytes_read<current_filesize;total_bytes_read += bytes_read) {
bytes_read = in.read(buffer, 0, FILE_BUFFER_SIZE);
if (bytes_read > 0) {
out.write(buffer, 0, bytes_read);
} else {
return -1;
}
}
in.close();
return current_filesize;
}

private class Node {
int depth;
String id,path;
Node next,parent,child;
byte[] indexname;

Node(Node parent, String id, byte[] indexname, String path, int depth) {
this.parent = parent;
this.id=id;
this.indexname = indexname;
this.path = path;
this.depth = depth;
this.child = this.next = null;
}

}

int getDepth(String path) {
int depth = 0;
for (int i=0;i<path.length();i++) {
if (path.charAt(i)=='/') {
depth++;
}
}
return depth;
}

int _fcurrent=0;
int _fcurrentsize=0;
byte[] _fbuffer = new byte[4096000];

byte[] readLine(FileInputStream datlist) throws Exception {
int start = _fcurrent;
if (_fcurrentsize==0) {
_fcurrentsize = datlist.read(_fbuffer, 0, _fbuffer.length);
}
int nl = -2;
for (;_fcurrent<_fcurrentsize;_fcurrent++) {
if (_fbuffer[_fcurrent] == (byte)13) {
nl = _fcurrent;
} else if (nl == _fcurrent-1 && _fbuffer[_fcurrent] == (byte)10) {
_fcurrent++;
byte[] ret = new byte[nl-start];
for (int j=0;j<nl-start;j++) {
ret[j] = _fbuffer[j+start];
}
return ret;
}
}
if (_fcurrentsize > 0) {
int copy = _fbuffer.length-start;
System.arraycopy(_fbuffer, start, _fbuffer, 0, copy);
_fcurrent = 0;
_fcurrentsize = datlist.read(_fbuffer, copy, _fbuffer.length-copy);
if (_fcurrentsize <= 0) {
return null;
}
_fcurrentsize+= copy;
return readLine(datlist);
}
return null;
}

void readDatlist(FileInputStream datlist, Node p) throws Exception {
int depth,cs,ls;
String path,id;
Node c;
byte[] indexname;

for (byte[] byteline=readLine(datlist);byteline!=null;byteline=readLine(datlist)) {
String line = new String(byteline, CHARSET);
cs = line.indexOf(',');
ls = line.lastIndexOf('/');
id = line.substring(0, cs);
path = line.substring(cs+1, ls);
depth = getDepth(line);
indexname = new byte[byteline.length-ls-1];
System.arraycopy(byteline, ls+1, indexname, 0, byteline.length-ls-1);
if (depth == p.depth+1) {
p=p.child = new Node(p, id, indexname,path,depth);
} else if (depth == p.depth) {
p=p.next = new Node(p, id, indexname,path,depth);
} else {
for (c = p; c!=null && depth < c.depth;c=c.parent) {}
p=c.next=new Node(c, id, indexname,path,depth);
}
}
}

long writeGpda(RandomAccessFile out, long offset, FileInputStream datlist) {
try {
byte[] l = readLine(datlist);
String line = new String(l);
if (line.startsWith("d,")) {
String name = line.substring(2);
Node start = new Node(null, "d", name.getBytes(),"",0);
readDatlist(datlist, start);
return _writeGpdaWithTxt(out, offset, start.child);
} else {
return -1;
}
} catch (Exception e) {
System.out.println(e.getMessage());
return -1;
}
}

long _writeGpdaWithTxt(RandomAccessFile out, long offset, Node filelist) {
long written_bytes = 0;
try {
int filecount = 0;
for (Node c=filelist;c != null; c=c.next) {
filecount++;
}
byte[][] list = new byte[filecount][];
int t=0;
for (Node c=filelist;c != null; c=c.next) {
list[t] = c.indexname;
t++;
}
writeSig(out, offset, filecount);
if (filecount==0) {
return DAT_BLOCK_SIZE;
}

written_bytes += getBlockSize(writeIndexNames(out, offset, list));

String current_file;
long current_filesize;
int i=0;
for (Node c=filelist;c != null; c=c.next) {
current_file = c.path+"/"+new String(c.indexname, CHARSET).trim();
System.out.println("Adding: "+current_file);
if (c.id.charAt(0) == 'd') {
current_filesize = _writeGpdaWithTxt(out,offset+written_bytes,c.child);
if (current_filesize < 0) {
return current_filesize;
}
} else {
if (c.id.length()>1) {
current_file = current_file+"_"+c.id.substring(1);
}
if (gzip && c.id.charAt(0)== 'g') {
Process p = Runtime.getRuntime().exec(new String[] {"gzip", "-fkn9", current_file.substring(0, current_file.lastIndexOf('.'))});
p.waitFor();
File tmp = new File(current_file);
current_filesize = writeFile(tmp, out, offset+written_bytes);
tmp.delete();
} else if (gzip && c.id.charAt(0) == 'e') {
Process p = Runtime.getRuntime().exec(new String[] {"gzip", "-fkn9", current_file});
p.waitFor();
File tmp = new File(current_file+".gz");
current_filesize = writeFile(tmp, out, offset+written_bytes);
tmp.delete();
} else {
current_filesize = writeFile(new File(current_file), out, offset+written_bytes);
}
}
if (current_filesize < 0) {
return current_filesize;
}
writeIndexFiles(out, offset+16+i*16, written_bytes, (int)current_filesize);
current_filesize = getBlockSize((int)current_filesize);
written_bytes += current_filesize;
i++;
}
writeDatSize(out, offset, written_bytes);
return written_bytes;
} catch (Exception e) {
System.out.println(e.getMessage());
return -1;
}
}

void start(String file) {
try {
File f = new File(file);
if (f.isDirectory()) {
} else if (file.endsWith(".dat.txt")) {
FileInputStream datlist = new FileInputStream(file);
String filename = file.substring(0, file.length()-8);
f = new File(filename+".dat");
if (f.exists()) {
f.delete();
}
RandomAccessFile out = new RandomAccessFile(f, "rw");
long ret = writeGpda(out, 0, datlist);
if (ret > 0 && out.length() != ret) {
out.seek(ret-1);
out.writeByte(0);
}
out.close();
} else if (file.endsWith(".dat")) {
RandomAccessFile in = new RandomAccessFile(f, "r");
FileOutputStream datlist = new FileOutputStream(file+".txt");
String name = file.substring(0, file.length()-4);
extractGpda(in, 0, 0, name, datlist, ",", name.getBytes());
in.close();
datlist.close();
}
System.out.println("end");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}

public static void main(String[] args) {
if (args.length == 1) {
new Gpda().start(args[0]);
} else if (args.length == 2) {
if (args[1].equals("gzip")) { //gzip.exe is needed, recompressing can change some files,
gzip = true; //without this option and without changing files
} //should produce exactly the same .dat as the original
new Gpda().start(args[0]);
} else {
System.out.println("To unpack: java Gpda <filename>.dat [gzip]");
System.out.println("To pack: java Gpda <filename>.dat.txt [gzip]");
}
}
}

AngelicDreams
2011-04-19, 19:11
EDIT2: Sorry, could you share how you extracted it? I don't think it's a GPDA header .dat so tenoritool can't extract it. I apologize for any inconveniences. :S

EDIT: Nvm, found it. It was something i failed to extract when I extracted from the ISO. Anywho, THANK YOU!

@k-wing
I received your email concerning where I can find the ornament text but I have encountered a problem. I can't find envpsp.dat in the files I've extracted with tenoritool. I'm sure I'm just being stupid overlooking something. Could you please provide me with the exact location of the file? For example USRDIR>FIRST.DAT>and so on.

I apologize for my incompentence in searching for files. xD
I've also emailed back but since you said that you probably wouldn't check that email account, I'm posting here too.

Thank you!

Also, even though you say I don't need to give credits I probably will anyway. It's my opinion that anyone who helps should be mentioned, and you are no exception! Unless you don't want to be mentioned. xD

Nanashi3
2011-04-20, 10:57
I don't think envpsp.dat is a GPDA archive.

Likewise, there's another localizable item that wasn't handled earlier :
RES.DAT>main_resource.dat>main_resource_data.dat>flowmap.dat>map.dat

AngelicDreams
2011-04-20, 13:55
I don't think envpsp.dat is a GPDA archive.

Likewise, there's another localizable item that wasn't handled earlier :
RES.DAT>main_resource.dat>main_resource_data.dat>flowmap.dat>map.dat

Yep, it was also something I couldn't extract. Both of them aren't GPDA. Though, for the flowmap, I think it's exactly what it is: a flowmap of the choices and endings and whatnot. Ornament text are in envpsp.dat according to k-wing, so he/she probably knows how to extract it.

Nanashi3
2011-04-27, 15:41
To RoByte:
Does this fork for you :
http://forum.xentax.com/viewtopic.php?f=18&t=6313

with or without the index8 palettizing thing.

RoByte
2011-04-27, 18:35
To RoByte:
Does this fork for you :
http://forum.xentax.com/viewtopic.php?f=18&t=6313

with or without the index8 palettizing thing.

gimconv with the flags --format_style psp --format_endian little appears to create a file with the correct header and I can load it with a GIM viewer. I tested converting TKA0020A.gim to PNG and back. The resulting GIM is three times the original file size and didn't work when I inserted it back into image_tukkomi.dat.

I tried combinations of the other flags and never seemed to get anywhere close to the original file.

Unregistered
2011-04-28, 03:52
I tested this, it works, but alfa channel of image is lost.
There are 3 copies of TKA0020A.gim, you should probably change them all.
I used gim2bmp and gimconv from tenoritool archive, and compiled Gpda from k-wng.

java Gpda res.dat
copy res\image_tukkomi.dat\TKA0020A.gim TKA0020A.gim.gz
gzip -d TKA0020A.gim.gz
gim2bmp TKA0020A.gim
<edit bmp>
gimconv TKA0020A.bmp --format_style psp --format_endian little --pixel_order faster --image_format index8
gzip -n9 TKA0020A.gim
move TKA0020A.gim.gz TKA0020A.gim
copy TKA0020A.gim res\script.dat\AKYO_0020T.dat\AKYO_0020T.dat_1\AKYO_0020T.dat_2
java Gpda res.dat.txt

Nanashi3
2011-04-28, 06:43
why not gimconv TKA0020A.gim -o TKA0020A.tga
to preserve alpha channel?

Unregistered
2011-04-28, 15:56
I didn't know about that option,
I tested some more, even with png and a bigger file, it works.

And I forgot to mention, I used UMDGen to reinsert RES.DAT back into the iso.

Unregistered
2011-05-05, 13:56
There's a guy on youtube posting CCed translations of the game in play. Maybe you can talk him into joining your project.

http://www.youtube.com/user/zidanechoo2

AngelicDreams
2011-05-06, 21:30
Edit: Yep, they're translating from the Chinese fan translation with some exceptions while editing.

I will attempt to contact them, though the translation style from what I've seen would be annoying for me to edit to the same style as our current translations. Other than that, there is the problem I am concerned about. If those translations are from the chinese fan translation, then the translation will be a problem. Basically, From Japanese>Chinese>English, meanings or literal translations and other technical issues tend to happen, and would not be accurate enough as it has gone through different languages. I feel that this would affect our translation quality. We'll see how it goes.

RoByte
2011-05-07, 13:40
I finally got the image insertion working with a combination of the above methods.

gimconv TKA0020A.gim -o TKA0020A.tga
(Edit the TGA with GIMP)
gimconv TKA0020A.tga --format_style psp --format_endian little

I had been trying to put the modified file into image_tukkomi with no success. Now I'm only inserting it into the appropriate T script and everything appears to be working so far.

RoByte
2011-05-16, 19:25
I've uploaded the code to a few of my tools to SourceForge. https://sourceforge.net/projects/oreimo/
I'll upload more once they're a bit more mature. I've re-written my inserter at least a dozen times so far.

Bael_Balzac
2011-06-20, 09:47
Please reupload AASTARTPOINT: http://ifolder.ru/22873124

aendin
2012-01-01, 08:15
Do you still need another translator? I'm up for some work.

max_one
2012-05-19, 12:33
hi people, i registered just to ask your help.
i am an insignificant anime fun boy located in italy who doesn't know neither Japanese nor Scripting stuff etc. , i just want to play Toradora (and other visual novels) but with my lack of knowledge i can't do anything.
by chance i found this thread, and with an heartbrake i downloaded the dialogues posted up there. i can translate them with the help of someone out there or even with google translated if necessary (more comprehensible than katakana, you know). just one more step to the goal: can someone explain me how to build them back once traslated?
i just want to prove myself that with the power of internet i can do unimaginable things because we are all linked, and we can share our knowledge and cohoperate to achieve every aim. Thanks. MaX

Unregistered
2012-05-19, 14:32
Don't you dare try to tarnish this project by using machine translations. If you don't have any skills what so ever, then don't bother.

max_one
2012-05-19, 15:44
you are not fair with me "Unregistered", i have asked for help, if you don't want to provide it "then don't bother". i do not want to tarnish anyone's project, as i said i want to work on Toradora, not Oreimo.. i've written here just because i have recognised that some people could help me. Moreover, no one (as far as i know) is working on Toradora otherwise my attempt would be useless. Eventually, if i ever succeed, you are not forced to download it. Regards.

John Smith
2012-05-20, 01:46
For translating something like that you will is not enought if you don't have some skills and pacience. But if you want to try to do something (stupid) like the FH translator at least use some decent mt like Honyaku combined with Babel and not GT...

Bakamoto
2012-05-20, 02:30
For translating something like that you will is not enought if you don't have some skills and pacience. But if you want to try to do something (stupid) like the FH translator at least use some decent mt like Honyaku combined with Babel and not GT...

LOL dont encourage him you make it even more worst...
If I where you....Try to have a decent japanese learning and then start translating...
because machine translations are not that too accurate you know.....

max_one
2012-05-21, 08:23
Okok guys, i swear i will not send to you the translated version. Happy? Now, can someone help me rebuild the scripts back in the game ? Where are gone robyte and angelic dreams?