1<?xml version="1.0" encoding="Shift_JIS" standalone="yes" ?>
2<package>
3    <job id="environment">
4    <?job error="true" debug="false" ?>
5    <script language="JScript">
6    <![CDATA[
7        var sh = WScript.CreateObject("WScript.Shell");
8        var envUser = sh.Environment("User");
9        var envSystem = sh.Environment("System");
10        var NW4C_ROOT = envUser.Item('NW4C_ROOT');
11        if ( NW4C_ROOT == "" )
12        {
13            NW4C_ROOT = envSystem.Item('NW4C_ROOT');
14        }
15        var CTRSDK_ROOT = envUser.Item('CTRSDK_ROOT');
16        if ( CTRSDK_ROOT == "" )
17        {
18            CTRSDK_ROOT = envSystem.Item('CTRSDK_ROOT');
19        }
20        var CTRSDK_TOOLS_ROOT     = CTRSDK_ROOT + "/tools/CommandLineTools";
21        var CTRSDK_SPECFILES_ROOT = CTRSDK_ROOT + "/resources/specfiles";
22        var SOUNDPLAYER_ROOT = NW4C_ROOT + "/tools/SoundPlayer/"
23
24        var ELF_FILE = SOUNDPLAYER_ROOT + "SoundPlayer-TS.axf";
25
26        var ROMFS_ROOT = SOUNDPLAYER_ROOT + "romfiles";
27
28        var CCI_FILE = SOUNDPLAYER_ROOT + "SoundPlayer-TS.cci";
29        var RSF_FILE = SOUNDPLAYER_ROOT + "SoundPlayer-TS.rsf";
30
31        var MAKEROM = CTRSDK_TOOLS_ROOT + "/ctr_makerom32.exe";
32        var MAKEROM_FLAGS = "-desc " + CTRSDK_SPECFILES_ROOT + "/Application.desc " +
33                            "-rsf " +  RSF_FILE + " -DUNIQUE_ID=0xfd840 " +
34                            " -DROMFS_ROOT=" + ROMFS_ROOT + " -DTITLE=SndPlyr";
35        var MAKEROM_CMD = MAKEROM + " " + ELF_FILE + " " + MAKEROM_FLAGS + " -o " + CCI_FILE + " -f card";
36
37        var SHADER_BIN = NW4C_ROOT + "/shaders/nwfont_RectDrawerShader.shbin";
38
39        /* ���C������ */
40        var args = WScript.Arguments;
41        if ( args.length == 0 )
42        {
43            var log = "NW4C MakeSoundPlayer\n\n";
44            log += "Usage:\n";
45            log += "  MakeSoundPlayer.wsf bcsar-path (stream-dir-path)\n";
46            WScript.Echo( log );
47        }
48        else
49        {
50            /* �f�B���N�g���쐬 */
51            var fso = WScript.CreateObject("Scripting.FileSystemObject");
52            if ( ! fso.FolderExists( ROMFS_ROOT ) )
53            {
54                fso.CreateFolder( ROMFS_ROOT );
55            }
56
57            /* �T�E���h�A�[�J�C�u�̃R�s�[ */
58            var BCSAR_FILE = args(0);
59            fso.CopyFile( BCSAR_FILE, ROMFS_ROOT + "/SoundPlayer.bcsar" );  /* ���O�ύX���ăR�s�[ */
60            /* �X�g���[���t�@�C���̃f�B���N�g���R�s�[ */
61            if ( args.length >= 2 )
62            {
63                var SRC_STREAM_DIR = args(1);
64                BCSAR_FILE = slash2BackSlash( BCSAR_FILE );
65                SRC_STREAM_DIR = slash2BackSlash( SRC_STREAM_DIR );
66                if ( SRC_STREAM_DIR.lastIndexOf( "\\" ) == SRC_STREAM_DIR.length - 1 )
67                {
68                    SRC_STREAM_DIR = SRC_STREAM_DIR.substr( 0, SRC_STREAM_DIR.length - 1 );
69                }
70                var STREAM_PATH = SRC_STREAM_DIR.toLowerCase();
71                var PATH = fso.GetParentFolderName( BCSAR_FILE );
72                PATH = PATH.toLowerCase();
73                var DIFF_PATH = "";
74                if ( STREAM_PATH.indexOf( PATH ) == 0)
75                {
76                    var LENGTH = SRC_STREAM_DIR.length - PATH.length;
77                    DIFF_PATH = SRC_STREAM_DIR.substr( PATH.length, LENGTH );
78                }
79                PATH = slash2BackSlash( ROMFS_ROOT.concat( DIFF_PATH ) );
80                if ( fso.FolderExists( PATH ) == false )
81                {
82                    createFolder( PATH );
83                }
84                fso.CopyFolder( SRC_STREAM_DIR, PATH, true );
85            }
86
87            /* �V�F�[�_�[�t�@�C���̃R�s�[ */
88            fso.CopyFile( SHADER_BIN, ROMFS_ROOT + "/" );
89
90            /* cci �̐��� */
91            sh.Run( MAKEROM_CMD, 0, true );
92        }
93
94        function createFolder( path )
95        {
96            if ( path == "")
97            {
98                return;
99            }
100
101            var newPath = "";
102            var fso = WScript.CreateObject("Scripting.FileSystemObject");
103
104            createFolder( fso.GetParentFolderName( path ) );
105
106            if ( fso.FolderExists( path ) == false )
107            {
108                fso.CreateFolder( path );
109            }
110        }
111
112        function slash2BackSlash( path )
113        {
114            var newPath = path;
115
116            while ( 0 < newPath.search("/") )
117            {
118                newPath = newPath.replace("/", "\\");
119            }
120
121            return newPath;
122        }
123    ]]>
124    </script>
125    </job>
126</package>
127