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
30        var MAKEROM = CTRSDK_TOOLS_ROOT + "/ctr_makerom32.exe";
31        var MAKEROM_FLAGS = "-desc " + CTRSDK_SPECFILES_ROOT + "/Application.desc " +
32                            "-rsf " +  CTRSDK_SPECFILES_ROOT + "/Application.rsf " +
33                            "-DROMFS_ROOT=" + ROMFS_ROOT + " -DTITLE=NW4C_SoundPlayer"
34        var MAKEROM_CMD = MAKEROM + " " + ELF_FILE + " " + MAKEROM_FLAGS + " -o " + CCI_FILE + " -f card";
35
36        var SHADER_BIN = NW4C_ROOT + "/shaders/nwfont_RectDrawerShader.shbin";
37
38        /* ���C������ */
39        var args = WScript.Arguments;
40        if ( args.length == 0 )
41        {
42            var log = "NW4C MakeSoundPlayer\n\n";
43            log += "Usage:\n";
44            log += "  MakeSoundPlayer.wsf bcsar-path (stream-dir-path)\n";
45            WScript.Echo( log );
46        }
47        else
48        {
49            /* �f�B���N�g���쐬 */
50            var fso = WScript.CreateObject("Scripting.FileSystemObject");
51            if ( ! fso.FolderExists( ROMFS_ROOT ) )
52            {
53                fso.CreateFolder( ROMFS_ROOT );
54            }
55
56            /* �T�E���h�A�[�J�C�u�̃R�s�[ */
57            var BCSAR_FILE = args(0);
58            fso.CopyFile( BCSAR_FILE, ROMFS_ROOT + "/SoundPlayer.bcsar" );  /* ���O�ύX���ăR�s�[ */
59            /* �X�g���[���t�@�C���̃f�B���N�g���R�s�[ */
60            if ( args.length >= 2 )
61            {
62                var SRC_STREAM_DIR = args(1);
63                BCSAR_FILE = slash2BackSlash( BCSAR_FILE );
64                SRC_STREAM_DIR = slash2BackSlash( SRC_STREAM_DIR );
65                if ( SRC_STREAM_DIR.lastIndexOf( "\\" ) == SRC_STREAM_DIR.length - 1 )
66                {
67                    SRC_STREAM_DIR = SRC_STREAM_DIR.substr( 0, SRC_STREAM_DIR.length - 1 );
68                }
69                var STREAM_PATH = SRC_STREAM_DIR.toLowerCase();
70                var PATH = fso.GetParentFolderName( BCSAR_FILE );
71                PATH = PATH.toLowerCase();
72                var DIFF_PATH = "";
73                if ( STREAM_PATH.indexOf( PATH ) == 0)
74                {
75                    var LENGTH = SRC_STREAM_DIR.length - PATH.length;
76                    DIFF_PATH = SRC_STREAM_DIR.substr( PATH.length, LENGTH );
77                }
78                PATH = slash2BackSlash( ROMFS_ROOT.concat( DIFF_PATH ) );
79                if ( fso.FolderExists( PATH ) == false )
80                {
81                    createFolder( PATH );
82                }
83                fso.CopyFolder( SRC_STREAM_DIR, PATH, true );
84            }
85
86            /* �V�F�[�_�[�t�@�C���̃R�s�[ */
87            fso.CopyFile( SHADER_BIN, ROMFS_ROOT + "/" );
88
89            /* cci �̐��� */
90            sh.Run( MAKEROM_CMD, 0, true );
91        }
92
93        function createFolder( path )
94        {
95            if ( path == "")
96            {
97                return;
98            }
99
100            var newPath = "";
101            var fso = WScript.CreateObject("Scripting.FileSystemObject");
102
103            createFolder( fso.GetParentFolderName( path ) );
104
105            if ( fso.FolderExists( path ) == false )
106            {
107                fso.CreateFolder( path );
108            }
109        }
110
111        function slash2BackSlash( path )
112        {
113            var newPath = path;
114
115            while ( 0 < newPath.search("/") )
116            {
117                newPath = newPath.replace("/", "\\");
118            }
119
120            return newPath;
121        }
122    ]]>
123    </script>
124    </job>
125</package>
126