Mercurial > hg > Game > Atoc
comparison kernel/convert @ 0:42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 08 Sep 2009 13:44:18 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:42f240cc4bc6 |
---|---|
1 #!/usr/bin/php | |
2 <?php | |
3 $import_file_name = $argv[1]; | |
4 $export_file_name = $argv[2]; | |
5 $export_file_base = basename($export_file_name); | |
6 | |
7 | |
8 // raw バイナリを読み込んで 4 バイトごとに unsigned int 化 | |
9 $content = file_get_contents($import_file_name); | |
10 $unpacked = unpack('N*', $content); | |
11 foreach ($unpacked as $key => $val) | |
12 { | |
13 $unpacked[$key] = sprintf('0x%08X', $val); | |
14 } | |
15 | |
16 // 各データ準備 | |
17 $kernel_size = strlen($content); | |
18 $kernel_uints = $kernel_size / 4; | |
19 $kernel_items = implode(', ', $unpacked); | |
20 | |
21 // C 言語のヘッダファイルを書き出す | |
22 $fp = fopen($export_file_name, 'wb') or die("Can't open {$export_file_base}."); | |
23 | |
24 $content = <<<EOH | |
25 /* [{$export_file_base}] This file has automatically generated by kernel/convert. So don't edit me. */ | |
26 | |
27 #ifndef KERNEL_H | |
28 #define KERNEL_H | |
29 | |
30 | |
31 #define SPE_KERNEL_SIZE {$kernel_size} | |
32 #define SPE_KERNEL_INITIAL_PC 0x10 | |
33 #define SPE_KERNEL_PROC_CONTEXT_OFFSET 0x70 | |
34 //#define SPE_KERNEL_PROGRAM_OFFSET 0x30 | |
35 | |
36 uint32_t spe_kernel_raw[{$kernel_uints}] = { {$kernel_items} }; | |
37 | |
38 | |
39 #endif /*KERNEL_H*/ | |
40 | |
41 EOH; | |
42 | |
43 fwrite($fp, $content); | |
44 fclose($fp); |