1. CrashmanX

    OP CrashmanX Current project: SD Gundam G Generation Overworld
    Member

    Joined:
    Aug 1, 2008
    Messages:
    1,217
    Country:
    United States
    [​IMG]

    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?
     

    Attached Files:

  2. MrShyCity

    MrShyCity Member Class Zero - No.00 SHY
    Member

    Joined:
    Sep 13, 2012
    Messages:
    218
    Country:
    extracting the .cpk came with .pac file
    Screenshot
    [​IMG]
    [​IMG]

    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
     
  3. CrashmanX

    OP CrashmanX Current project: SD Gundam G Generation Overworld
    Member

    Joined:
    Aug 1, 2008
    Messages:
    1,217
    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.
    [​IMG]
     
  4. MrShyCity

    MrShyCity Member Class Zero - No.00 SHY
    Member

    Joined:
    Sep 13, 2012
    Messages:
    218
    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
     
  5. CrashmanX

    OP CrashmanX Current project: SD Gundam G Generation Overworld
    Member

    Joined:
    Aug 1, 2008
    Messages:
    1,217
    Country:
    United States
    Whatever one you edited to adjust the menus like that.
    That is, if you don't mind me using yours as a base and combining it with my work.
     
  6. MrShyCity

    MrShyCity Member Class Zero - No.00 SHY
    Member

    Joined:
    Sep 13, 2012
    Messages:
    218
    Country:
    yea i don't mind it's not like i'm planning to release it
     
  7. CrashmanX

    OP CrashmanX Current project: SD Gundam G Generation Overworld
    Member

    Joined:
    Aug 1, 2008
    Messages:
    1,217
    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?
     
  8. MrShyCity

    MrShyCity Member Class Zero - No.00 SHY
    Member

    Joined:
    Sep 13, 2012
    Messages:
    218
    Country:
    Send you a PM
    ohh really, that's nice
    will the file i have is not Compress/Ecrypted i open it with HexEditor lol
     
  9. CrashmanX

    OP CrashmanX Current project: SD Gundam G Generation Overworld
    Member

    Joined:
    Aug 1, 2008
    Messages:
    1,217
    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.
     
  10. MrShyCity

    MrShyCity Member Class Zero - No.00 SHY
    Member

    Joined:
    Sep 13, 2012
    Messages:
    218
    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
     
  11. ferret7463

    ferret7463 GBAtemp Advanced Fan
    Member

    Joined:
    Sep 21, 2010
    Messages:
    612
    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.
     
  12. CrashmanX

    OP CrashmanX Current project: SD Gundam G Generation Overworld
    Member

    Joined:
    Aug 1, 2008
    Messages:
    1,217
    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.
     
  13. Manasword

    Manasword Tempest Tales
    Newcomer

    Joined:
    Jul 29, 2012
    Messages:
    28
    Country:
    United States
    Is that the DL game in PSP?
     
  14. CrashmanX

    OP CrashmanX Current project: SD Gundam G Generation Overworld
    Member

    Joined:
    Aug 1, 2008
    Messages:
    1,217
    Country:
    United States
    Indeed it is.
     
  15. Nobunaga

    Nobunaga Empty
    Member

    Joined:
    Apr 19, 2010
    Messages:
    2,074
    Country:
    Greece
    Good luck Crashman I might help you with the other chapters in the future =)
     
  16. CrashmanX

    OP CrashmanX Current project: SD Gundam G Generation Overworld
    Member

    Joined:
    Aug 1, 2008
    Messages:
    1,217
    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.
     
  17. Nobunaga

    Nobunaga Empty
    Member

    Joined:
    Apr 19, 2010
    Messages:
    2,074
    Country:
    Greece
    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 :/
     
  18. CrashmanX

    OP CrashmanX Current project: SD Gundam G Generation Overworld
    Member

    Joined:
    Aug 1, 2008
    Messages:
    1,217
    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.
     
  19. xhai

    xhai GBAtemp Regular
    Member

    Joined:
    Sep 19, 2012
    Messages:
    173
    Country:
    hey! have you forgotten me..

    NPJH-50521_1112562245_328.jpg
     
  20. CrashmanX

    OP CrashmanX Current project: SD Gundam G Generation Overworld
    Member

    Joined:
    Aug 1, 2008
    Messages:
    1,217
    Country:
    United States
    xhai you haven't posted in this thread so how could I forget about you?
     
Draft saved Draft deleted
Loading...

Hide similar threads Similar threads with keywords - Super, Robot,