Gaming Super Robot Wars OE

CrashmanX

Current project: SD Gundam G Generation Overworld
OP
Member
Joined
Aug 1, 2008
Messages
1,217
Trophies
0
Age
29
Location
@CrashmanX
Website
boards.4chan.org
XP
536
Country
United States
screenshot_3_thumb.jpg


With the release of Super Robot Wars OE (Operation Extend) I figured it was a good idea to get a jump start on this.

What am I hoping to do here?
Nothing complex, a simple menu translation of Super Robot Wars OE. Maybe a bit more if things turn out to be easy.

"OK so why not do it yourself?"
Because there's a LOT to be done here. I mean menu wise it's not much but there's a lot when you toss in abilities and attacks as well plus their descriptions.
Plus my Japanese is REALLY rusty at best.

"Don't you have like 10 other projects?"
Danball is and will be in progress for a long time.
AGE is on hold till I get better at Japanese.
MechaMon is still being worked on, a bit slowly though because sprites are boring as shit.
And this makes project 4. So not too horribly many.

"If it's so easy why not just get it done with?"
Well because I ran into an issue with .pac files. These ones are not like those found in Madoka/Danball. They cause the program to crash so I can't say what's wrong but if someone wanted to help with that, that'd be AWESOME and it'd make things go WAY faster and WAY better.

"How would they be better?"
Well because I'm currently dealing with the constraint of having to use the same amount of spaces as the Japanese characters, well double technically.
But with the ability to edit the .pac files like I can in Danball then I'd be able to use as many spaces as I want, which would result in better translations and higher quality.

"Anything else?"
Nah, that's about it. I'm always looking for help. Right now I'm just using a Hex Editor (MadEdit) and the CPK Tools from the Danball translation thread I have, feel free to try your hand and help out.

"What series are in this game?"
Well here's a list of what series I know are either in the game so far or are to be added in later chapters.
Mobile Suit Gundam
Mobile Suit Gundam: The 08th MS Team
Mobile Suit Gundam 0080: War in the Pocket
Mobile Suit Zeta Gundam
Mobile Suit Gundam ZZ
New Mobile Report Gundam Wing
Mobile Suit Gundam SEED Destiny
Mobile Suit Gundam 00
Armored Trooper Votoms
Armored Trooper Votoms Red Shoulder Document: Roots of Ambition
Armored Trooper Votoms: Pailsen Files
Blue Comet SPT Layzner
Mobile Police Patlabor
Mobile Police Patlabor movies
Zoids: Chaotic Century
Zoids: Genesis
Heavy Metal L-Gaim
Macross Frontier
Code Geass: Lelouch of the Rebellion
Shin Mazinger Shougeki! Z-hen
Getter Robo Armageddon
Mobile Fighter G Gundam
Super Beast Machine God Dancougar
Tengen Toppa Gurren Lagann
Demon God of War Goshogun
Hyper Combat Unit Dangaioh
Jushin Liger
NG Knight Lamune & 40
Absolutely Invincible Raijin-oh
Energetic Explosion Ganbaruger
Hot-Blooded Strongest Go-Saurer
Perfect Victory Daiteioh
Lord of Lords Ryu Knight
Sgt. Frog
Aura Battler Dunbine

"How long til this is done?"
Hell if I know. But he's an approximate progress thing with a lot of really vague numbers.
Chapter 1 (Base):
Character Names: ~60%
Unit Names: ~80%
Attack Names: ~80%
Attack Descriptions: ~02%
Spirit names: 00%
Spirit Descriptions: 00%
Ability Names: ~02%
Ability Descriptions: ~02%
Terrain Effects: ~30%
Terrain Descriptions: ???%
Level Names: 100%
Story: ---% (Can't exactly translate ATM because I don't have tools to work with it)
Attack Shouts/Talking: ---% (See Above)
Song Names: 100%
Battle Menus: 90%
Main Menus: ~70%
Reference: 0% (Same issue as story)
Item Names: ~99% (Some are a bit hard to read because space issues. Hex editing sucks)
DLC Details: ~2% (Not a high priority right now)
Buffs/Effects: ~1%

Chapter 1 (DLC)
0% on all. Don't know how to repack the DLC properly yet.

Chapter 2 - 8
Not out yet. Chapter 2 comes out on Tuesday I believe. After that another one should come out every 2 weeks with mission packs between then.

"Got any pics?"
I'll upload some in a bit. I'll go through and grab a bunch for this thread.

Original post
I don't know much about the game really right now, just that it's stored in a metric ton of CPK files.
I'm not sure how to extract from any of these CPK files either.
Using a build of UTF_Tab (07b7_special_nunsg) I end up with an exception error "STATUS_ACCESS_VIOLATION" to be exact. It does extract a single file though, a .pac file to be exact, same size as the packed up CPK at that. Not 100% sure what's wrong.
Using the CriFileMajik (the official stuff) I get an invalid CPK but I can see what's inside the file.

I can edit the .pac file using MadEdit (barbaric yes, but it works) but I can't seem to open it using the same .pac program I have from the Madoka team.
If anyone would be willing to give me a hand for now, just so we can throw some tools together or something, then I would greatly appreciate it.
I don't intend on doing a full on translation for this if we can get anything worked out, at most I'd like to figure out how to/if we can translate this and then toss it over to /m/ and let them have their way with it.

Oh whoops. I suppose it'd help if I attached one of the files so people could test it out themselves huh?
 

Attachments

  • config00cpk.zip
    201.2 KB · Views: 1,058

MrShyCity

Member Class Zero - No.00 SHY
Member
Joined
Sep 13, 2012
Messages
218
Trophies
0
Location
Flip
Website
shypsp.blogspot.com
XP
125
Country
extracting the .cpk came with .pac file
Screenshot
2013-07-19_195422_zps064f0686.png

2013-07-19_195645_zps9ea1ff8c.png

Crash sending you PM for the .cpk

Edit: here is the QuickBMS Script for the .cpk
Edit 2: These can also extract the .EDAT file inside NPJH50521 folder by renaming .EDAT to .CPK
# CRI CPK archives (script 0.2.2)
# derived from cpk_unpack of hcs
# script for QuickBMS http://aluigi.org/papers.htm#quickbms

quickbmsver 0.3.12
endian big
comtype cpk

idstring "CPK "

set query->offset long 0
set query->index long 0
set query->name string "TocOffset"
callfunction query_utf 1
set toc_offset long UTF_VALUE

set query->offset long 0
set query->index long 0
set query->name string "ContentOffset"
callfunction query_utf 1
set content_offset long UTF_VALUE

set query->offset long 0
set query->index long 0
set query->name string "Files"
callfunction query_utf 1
set CpkHeader_count long UTF_VALUE

goto toc_offset
getdstring signature 4
if signature != "TOC "
print "TOC signature not found"
cleanexit
endif

set query->offset long toc_offset
set query->index long 0
set query->name string ""
callfunction query_utf 1
set CpkHeader_count long UTF_VALUE
set toc_entries long table_info.rows # it remains saved after the call

if content_offset < 0 # "if" can't be unsigned
set add_offset long toc_offset
elif toc_offset < 0
set add_offset long content_offset
elif content_offset < toc_offset
set add_offset long content_offset
else
set add_offset long toc_offset
endif

for mytoc = 0 < toc_entries
set query->offset long toc_offset
set query->index long mytoc
set query->name string "DirName"
callfunction query_utf 1
set file_name string UTF_VALUE

set query->offset long toc_offset
set query->index long mytoc
set query->name string "FileName"
callfunction query_utf 1
set file_name2 string UTF_VALUE

string file_name += /
string file_name += file_name2

set query->offset long toc_offset
set query->index long mytoc
set query->name string "FileSize"
callfunction query_utf 1
set file_size long UTF_VALUE

set query->offset long toc_offset
set query->index long mytoc
set query->name string "ExtractSize"
callfunction query_utf 1
set extract_size long UTF_VALUE

set query->offset long toc_offset
set query->index long mytoc
set query->name string "FileOffset"
callfunction query_utf 1
set file_offset long UTF_VALUE

math file_offset += add_offset
if extract_size > file_size
clog file_name file_offset file_size extract_size
else
log file_name file_offset file_size
endif
next mytoc



startfunction query_utf
set COLUMN_STORAGE_MASK long 0xf0
set COLUMN_STORAGE_PERROW long 0x50
set COLUMN_STORAGE_CONSTANT long 0x30
set COLUMN_STORAGE_ZERO long 0x10
set COLUMN_TYPE_MASK long 0x0f
set COLUMN_TYPE_DATA long 0x0b
set COLUMN_TYPE_STRING long 0x0a
set COLUMN_TYPE_FLOAT long 0x08
set COLUMN_TYPE_8BYTE2 long 0x07
set COLUMN_TYPE_8BYTE long 0x06
set COLUMN_TYPE_4BYTE2 long 0x05
set COLUMN_TYPE_4BYTE long 0x04
set COLUMN_TYPE_2BYTE2 long 0x03
set COLUMN_TYPE_2BYTE long 0x02
set COLUMN_TYPE_1BYTE2 long 0x01
set COLUMN_TYPE_1BYTE long 0x00

set UTF_VALUE string ""
math offset = query->offset
math offset += 0x10 # needed by the tool
goto offset

set table_info.table_offset long offset
getdstring UTF_signature 4
if UTF_signature != "@UTF"
print "not a @UTF table at %offset%"
cleanexit
endif
get table_info.table_size long
set table_info.schema_offset long 0x20
get table_info.rows_offset long
get table_info.string_table_offset long
get table_info.data_offset long
get table_name_string long
get table_info.columns short
get table_info.row_width short
get table_info.rows long

for i = 0 < table_info.columns
get schema.type byte
get schema.column_name long
putarray 0 i schema.type
putarray 1 i schema.column_name
putarray 2 i -1 # schema.constant_offset

math TMP = schema.type
math TMP &= COLUMN_STORAGE_MASK
if TMP == COLUMN_STORAGE_CONSTANT
savepos schema.constant_offset
putarray 2 i schema.constant_offset

math TMP = schema.type
math TMP &= COLUMN_TYPE_MASK
if TMP == COLUMN_TYPE_STRING
getdstring DUMMY 4
elif TMP == COLUMN_TYPE_DATA
getdstring DUMMY 8
elif TMP == COLUMN_TYPE_FLOAT
getdstring DUMMY 4
elif TMP == COLUMN_TYPE_8BYTE2
getdstring DUMMY 8
elif TMP == COLUMN_TYPE_8BYTE
getdstring DUMMY 8
elif TMP == COLUMN_TYPE_4BYTE2
getdstring DUMMY 4
elif TMP == COLUMN_TYPE_4BYTE
getdstring DUMMY 4
elif TMP == COLUMN_TYPE_2BYTE2
getdstring DUMMY 2
elif TMP == COLUMN_TYPE_2BYTE
getdstring DUMMY 2
elif TMP == COLUMN_TYPE_1BYTE2
getdstring DUMMY 1
elif TMP == COLUMN_TYPE_1BYTE
getdstring DUMMY 1
else
print "unknown type for constant"
cleanexit
endif
endif
next i

math TMP = table_info.string_table_offset
math TMP += 8
math TMP += offset
math string_table_size = table_info.data_offset
math string_table_size -= table_info.string_table_offset
log MEMORY_FILE TMP string_table_size

for i = query->index < table_info.rows
math TMP = i
math TMP *= table_info.row_width
math row_offset = table_info.table_offset
math row_offset += 8
math row_offset += table_info.rows_offset
math row_offset += TMP

for j = 0 < table_info.columns
getarray type 0 j
getarray column_name 1 j
getarray constant_offset 2 j

if constant_offset >= 0
math data_offset = constant_offset
else
math data_offset = row_offset
endif

math TMP = type
math TMP &= COLUMN_STORAGE_MASK
if TMP == COLUMN_STORAGE_ZERO
set value long 0
else
goto data_offset
math TMP = type
math TMP &= COLUMN_TYPE_MASK
if TMP == COLUMN_TYPE_STRING
get string_offset long
goto string_offset MEMORY_FILE
get value string MEMORY_FILE
elif TMP == COLUMN_TYPE_DATA
get vardata_offset long
get vardata_size long
goto vardata_offset MEMORY_FILE
getdstring value vardata_size MEMORY_FILE
elif TMP == COLUMN_TYPE_FLOAT
get value long
elif TMP == COLUMN_TYPE_8BYTE2
get DUMMY long # no 64 bit support!
get value long
elif TMP == COLUMN_TYPE_8BYTE
get DUMMY long # no 64 bit support!
get value long
elif TMP == COLUMN_TYPE_4BYTE2
get value long
elif TMP == COLUMN_TYPE_4BYTE
get value long
elif TMP == COLUMN_TYPE_2BYTE2
get value short
elif TMP == COLUMN_TYPE_2BYTE
get value short
elif TMP == COLUMN_TYPE_1BYTE2
get value byte
elif TMP == COLUMN_TYPE_1BYTE
get value byte
else
print "unknown normal type"
cleanexit
endif

if constant_offset < 0
savepos row_offset # row_offset += bytes_read
endif
endif

goto column_name MEMORY_FILE
get column_name string MEMORY_FILE
if column_name == query->name
set UTF_VALUE string value # result.value.value (qthis)
math i = table_info.rows # break
math j = table_info.columns # break
endif
next j
next i
endfunction
 

CrashmanX

Current project: SD Gundam G Generation Overworld
OP
Member
Joined
Aug 1, 2008
Messages
1,217
Trophies
0
Age
29
Location
@CrashmanX
Website
boards.4chan.org
XP
536
Country
United States
.EDAT data?
Is that the DLC data?
You wouldn't by chance be willing to share that .cpk you modified would you? I messed with it earlier and seemed to have broken my game. I made the horribly newbish mistake of not testing my changes and made A LOT of changes.

Thanks for the QuickBMS script though! I will use that to extract the .pac files properly.
It's possible to re-pack the .cpk files as I managed to do so for the imenu 00.cpk and was able to test a few changes in there, as you can see in the image below.
oTdahvd.png
 

MrShyCity

Member Class Zero - No.00 SHY
Member
Joined
Sep 13, 2012
Messages
218
Trophies
0
Location
Flip
Website
shypsp.blogspot.com
XP
125
Country
yea the .EDAT are that came with the game are inside NPJH50521 folder
yea sure which file you need?
Edit: i tried to repack "without any changes" the game crash so i may need a special tool for these
 

CrashmanX

Current project: SD Gundam G Generation Overworld
OP
Member
Joined
Aug 1, 2008
Messages
1,217
Trophies
0
Age
29
Location
@CrashmanX
Website
boards.4chan.org
XP
536
Country
United States
For the .CPK repacking I used the CPK tools that I also used for Danball.
I just left "Force Compress" unchecked and it worked. If you weren't able to re-pack the files... how did you manage to get the menu to show up like that?
 

CrashmanX

Current project: SD Gundam G Generation Overworld
OP
Member
Joined
Aug 1, 2008
Messages
1,217
Trophies
0
Age
29
Location
@CrashmanX
Website
boards.4chan.org
XP
536
Country
United States
Oh you were editing the CPK in a HexEditor?
Shit man, you're crazy.
Well, to be fair. I've been unable to extract the contents of the .pac file properly. I can't seem to get it to open with the Madoka Tools and I don't know of any other program to open .pac files.
 

MrShyCity

Member Class Zero - No.00 SHY
Member
Joined
Sep 13, 2012
Messages
218
Trophies
0
Location
Flip
Website
shypsp.blogspot.com
XP
125
Country
lol i always use the .cpk Extractor i have first, if no success i look for the Header google search for QuickBMS, if still no success, i go back to HexEdit and look for JAP Script.
yea i also tried Madoka Tool didn't work
 

ferret7463

Well-Known Member
Member
Joined
Sep 21, 2010
Messages
613
Trophies
0
Age
48
XP
585
Country
United States
by a "Bit more" do you mean like the "mission objectives"? Those are not always "Beat the hell out of the Enemy" ones and some times takes me like 2 or 3 times to figure out what they want.
 

CrashmanX

Current project: SD Gundam G Generation Overworld
OP
Member
Joined
Aug 1, 2008
Messages
1,217
Trophies
0
Age
29
Location
@CrashmanX
Website
boards.4chan.org
XP
536
Country
United States
Yea. I want to do just the basic menu translations and the abilities at the very least.
Objectives would be a must IMO simply because like you said, some are rather annoying.
 

CrashmanX

Current project: SD Gundam G Generation Overworld
OP
Member
Joined
Aug 1, 2008
Messages
1,217
Trophies
0
Age
29
Location
@CrashmanX
Website
boards.4chan.org
XP
536
Country
United States
Ah well thank you sir.
I'd be more willing to translate the actual dialogue in each chapter if, like I said earlier, I could extract the data properly.
Right now I'm just doing a lot of dirty Hex Edits, which is working just having to fight for space at times.
 

Nobunaga

Empty
Member
Joined
Apr 19, 2010
Messages
2,075
Trophies
0
Age
27
XP
2,136
Country
Greece
Ah well thank you sir.
I'd be more willing to translate the actual dialogue in each chapter if, like I said earlier, I could extract the data properly.
Right now I'm just doing a lot of dirty Hex Edits, which is working just having to fight for space at times.
You can extract the CPK files with this program http://www.mediafire.com/download/0r88327zp3asws3/cri packed file maker.rar it is the best one around I used that for the Digimon Translation. =)
And you can also make a new CPK file but I wish I knew how so I could tell you :/
 

CrashmanX

Current project: SD Gundam G Generation Overworld
OP
Member
Joined
Aug 1, 2008
Messages
1,217
Trophies
0
Age
29
Location
@CrashmanX
Website
boards.4chan.org
XP
536
Country
United States
I know how to extract the CPK's, only problem seems to be re-building them.
I don't know their original format (Forced compression, file name, SJIS, etc.) so I can't rebuild them.
Also even extracting the Data in the CPK only yields .pac files which I can't even open, so ATM it's easier just to directly edit the CPK's.
 
General chit-chat
Help Users
    KenniesNewName @ KenniesNewName: If you're selling drugs dm me