Jump to content

wildpawz

Members
  • Posts

    2
  • Joined

  • Last visited

Posts posted by wildpawz

  1. Thank you so much!! Your suggestion was a lifesaver!!

    I used kirikiri to repackage instead of GARbro, and it worked like a charm! (Note: I tried also with KrkrDEV_232r2EN but the .xp3 didn't read - I think the program may be a bit too modern for this game, mayhaps.)

    For anyone else having this issue with old games:

    I downloaded kirikiri2-archive-3 and extracted the rar kr2_218. Then, in the kirikiri2 folder, I opened krkrrel.exe and chose the file to turn into a .xp3. (note: for multiple files to be turned into one .xp3, I made a folder with the .ks and images and whatnot and sealed it into a .rar, and converted that. It worked for me.)

    Also, in the same kr2_218, I went into the graphconv folder and opened the .exe. Any images I needed modified (usually TLGs), I'd extract as .JPEGs from GARbro and then turn them back to .TLGs using this program once I edited them, so the game could read them again.

    I don't know how I never thought to do this, but you pointing it out saved SO much time. Thank you!!!!!!!

  2. I'm working with a very old Kirikiri game - 2003. It has no data.xp3. Besides the .exe, all it has is a "savedata" folder, extrans.dll, wuvorbis.dll, and a read me file. Using GARbro I can look into the .exe file and extract all its contents. All its scenarios are .ks. Here's the .exe file's contents:

     26rJW4p.png

    I've translated some text on artworks and text in .ks files as a test, but every time I try to get the results to appear, nothing happens. 

    Is it because all the data is from INSIDE the .exe, instead of outside? So when i put "patch.xp3" in the folder with the game, it won't run?

    Assuming that ISN'T the case, my only other clue is the startup.tjs file. It reads as this:

    Spoiler

    // startup.tjs - スタートアップスクリプト
    // Copyright (C) 2001, W.Dee  改変・配布は自由です


    // このスクリプトは一番最初に実行されるスクリプトです
    Scripts.execStorage("system/Initialize.tjs"); // system/Initialize.tjs を実行

    Initialize.tjs is in the "system" folder of the .exe. So, I took a look:

    Spoiler

    // Initialize.tjs - システムの初期化
    // Copyright (C)2001-2003, W.Dee  改変・配布は自由です

    /*
        Debug.message へのショートカット
    */

    var dm = Debug.message; // これで dm("message"); でコンソールに message を表示できる


    /*
        パスの設定
        後に指定した物が、より優先されて使用される
    */


    function useArchiveIfExists(name)
    {
        // name が存在していたらそのアーカイブを使う
        var arcname;
        if(Storages.isExistentStorage(arcname = System.exePath + name))
            Storages.addAutoPath(arcname + "#");
    }

    Storages.addAutoPath(System.exePath + "video/"); // exePath 以下の video/
    Storages.addAutoPath("video/"); // video フォルダ
    Storages.addAutoPath("others/"); // その他
    Storages.addAutoPath("rule/"); // ルール画像フォルダ
    Storages.addAutoPath("sound/"); // 効果音フォルダ
    Storages.addAutoPath("bgm/"); // BGM フォルダ
    Storages.addAutoPath("fgimage/"); // 前景画像フォルダ
    Storages.addAutoPath("bgimage/"); // 背景画像フォルダ
    Storages.addAutoPath("scenario/"); // シナリオフォルダ
    Storages.addAutoPath("image/"); // そのほかの画像フォルダ
    Storages.addAutoPath("system/"); // システムフォルダ

    // パッチアーカイブの検索と使用
    // もしこれらの名前を持ったアーカイブが実行可能ファイルと
    // 同じ場所にあった場合、それを優先して使う
    useArchiveIfExists("video.xp3");
    useArchiveIfExists("others.xp3");
    useArchiveIfExists("rule.xp3");
    useArchiveIfExists("sound.xp3");
    useArchiveIfExists("bgm.xp3");
    useArchiveIfExists("fgimage.xp3");
    useArchiveIfExists("bgimage.xp3");
    useArchiveIfExists("scenario.xp3");
    useArchiveIfExists("image.xp3");
    useArchiveIfExists("system.xp3");

    useArchiveIfExists("patch.xp3");

    // 追加のパッチ用アーカイブの検索
    for(var i = 2; ; i++)
    {
        // パッチ用アーカイブ patch2.xp3, patch3.xp3 ... がある場合はそちらを
        // 優先して読み込むように
        if(Storages.isExistentStorage(System.exePath + "patch" + i + ".xp3"))
            Storages.addAutoPath(System.exePath + "patch" + i + ".xp3#");
        else
            break;
    }

    delete useArchiveIfExists; // useArchiveIfExists は使い終わったので一応消しておく

    /*
        システムバージョン
    */
    var kagVersion = "3.18 release rev.2";
    Debug.notice("OS : " + System.osName + " (" + System.platformName + ")");
    Debug.notice("KAG : " + kagVersion);
    Debug.notice("Kirikiri : " + System.versionString);

    /*
        ( デバッグ ) 時間計測
    */

    var parseStartTick = System.getTickCount();


    /*
        スクリプト読み込みラッパー
    */

    function KAGLoadScript(name)
    {
        var start = System.getTickCount();
        Scripts.execStorage(name);
        dm(name + " を読み込みました(" + (System.getTickCount() - start) + "ms)");
    }


    /*
        Config.tjs 読み込み
    */
    if(Storages.isExistentStorage("Config.tjs"))
    {
        KAGLoadScript("Config.tjs");
    }
    else if(Storages.isExistentStorage("Config.~new"))
    {
        System.inform("Config.tjs が見つかりません。\nsystem フォルダにある "
            "Config.~new ファイルを Config.tjs に改名してください。");
        System.exit();
    }
    else
    {
        throw new Exception("Config.tjs が見つかりません。");
    }

    /*
        Config.tjs バージョンチェック
    */

    if(typeof global.config_version == "undefined" || config_version != kagVersion)
    {
        KAGLoadScript("UpdateConfig.tjs");
    }

    /*
        二重起動のチェック
    */

    // 実行可能ファイルのパスをキーにしてロックを行う
    if(!System.createAppLock(System.exePath.replace(/[^A-Za-z]/g, '_')))
    {
        // すでに起動している
        System.inform(System.title + "はすでに起動しています");
        System.exit();
    }


    /*
        オン・デマンド・ローディングを行うための定義
    */


    property askYesNo { getter() { KAGLoadScript("YesNoDialog.tjs"); return global.askYesNo; } }
    property CheckBoxLayer { getter() { KAGLoadScript("CheckBoxLayer.tjs"); return global.CheckBoxLayer; } }
    property ButtonLayer { getter() { KAGLoadScript("ButtonLayer.tjs"); return global.ButtonLayer; } }
    property EditLayer { getter() { KAGLoadScript("EditLayer.tjs"); return global.EditLayer; } }
    property KAGPlugin { getter() { KAGLoadScript("Plugin.tjs"); return global.KAGPlugin; } }

    /*
        各システム読み込み
    */
    dm("KAG System スクリプトを読み込んでいます...");

    KAGLoadScript("Utils.tjs");
    KAGLoadScript("KAGLayer.tjs");
    KAGLoadScript("HistoryLayer.tjs");
    KAGLoadScript("BGM.tjs");
    KAGLoadScript("SE.tjs");
    KAGLoadScript("Movie.tjs");
    KAGLoadScript("Conductor.tjs");
    KAGLoadScript("AnimationLayer.tjs");
    KAGLoadScript("GraphicLayer.tjs");
    KAGLoadScript("MessageLayer.tjs");
    KAGLoadScript("Menus.tjs");
    KAGLoadScript("DefaultMover.tjs");
    KAGLoadScript("MainWindow.tjs");
    if(Storages.isExistentStorage("Override.tjs"))
        KAGLoadScript("Override.tjs");
    if(Storages.isExistentStorage(System.exePath + "Override2.tjs"))
        KAGLoadScript(System.exePath + "Override2.tjs");


    /*
        ( デバッグ ) 時間計測
    */
    dm("スクリプトの読み込みに " + (System.getTickCount() - parseStartTick) + "ms かかりました");
    parseStartTick = System.getTickCount();

    /*
        ( デバッグ ) VM コードのダンプ
    */

    // Scripts.dump();

    /*
        ( デバッグ ) 時間計測
    */

    parseStartTick = System.getTickCount();


    /*
        KAG メインウィンドウの作成
    */

    var kag;
    kag = new KAGWindow();


    /*
        グローバルから簡単にアクセスできるように、いくつかの
        変数の別名を作成
    */

    var f = kag.flags;   // ユーザ変数 (フラグ)
    var sf = kag.sflags; // システム変数 (システム)
    var tf = kag.tflags; // 一時変数 (一時フラグ)

    property mp
    {
        getter { return kag.conductor.macroParams; }
    }

    /*
        ( デバッグ ) 時間計測
    */
    dm("KAGMainWindow のコンストラクタで " + (System.getTickCount() - parseStartTick) + "ms かかりました");
    delete parseStartTick;


    /*
        AfterInit.tjs が存在すれば実行
    */
    if(Storages.isExistentStorage("AfterInit.tjs"))
        KAGLoadScript("AfterInit.tjs");
    if(Storages.isExistentStorage(System.exePath + "AfterInit2.tjs"))
        KAGLoadScript(System.exePath + "AfterInit2.tjs");

    /*
        コマンドラインパラメータとして -ovr が指定されていれば
        そのパラメータを TJS 式として実行
    */
    {
        var ovr = System.getArgument('-ovr');
        if(ovr !== void && ovr != 'yes') ovr!;
    }

    /*
        first.ks の実行
    */

    kag.process("first.ks");


     

    I highlighted with blue what I believe was the important part of the text. As it suggests in Japanese, I placed the patch in the same folder as the .exe - didn't work. named it different things (i.e. "scenarios.xp3") and put it in different folders. Nothing worked. To be honest, the patch.xp3 itself only has the modified first.ks file in it for a test, so maybe that's what's making it not work...?

    Please let me know how to fix it. Everything else has been going smooth, I just don't know how to get the game to read the patch.xp3. (btw, this is my first time ever doing something like this, so excuse if this is a noob question. I just couldn't find an answer online.)

×
×
  • Create New...