page0059
の編集
http://osecpu.osask.jp/wiki/?page0059
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
BracketName
FormattingRules
FrontPage
Fulyn
Fulyn-v2
Fulyn_Samples
Help
InterWiki
InterWikiName
InterWikiSandBox
K
KOR_PIT8254
KWVM.NET
Liva
MANA
MenuBar
OSECPU_FPGA
PG_MANA
PHP
PukiWiki
PukiWiki/1.4
PukiWiki/1.4/Manual
PukiWiki/1.4/Manual/Plugin
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/H-K
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/V-Z
RecentDeleted
SandBox
WikiEngines
WikiName
WikiWikiWeb
YukiWiki
hikalium
hikarupsp
hikarupsp_ELCHNOS
hikarupsp_ELCHNOS_IDE
hikarupsp_FrontEndCode
hikarupsp_WebCPU-VM
hikarupsp_WebCPU-VM_internal
hikarupsp_study_hh4
impressions
impressions0000
jpag0000
jpag0001
jpag0002
jpag0003
jpag0004
jpag0005
lambdalice
mandel59
members
memo0000
memo0001
memo0002
memo0003
memo0004
memo0005
memo0006
memo0007
memo0008
memo0009
memo0010
osask
osecpu4android
page0000
page0001
page0002
page0003
page0004
page0005
page0006
page0007
page0008
page0009
page0010
page0011
page0012
page0013
page0014
page0015
page0016
page0017
page0018
page0019
page0020
page0021
page0022
page0023
page0024
page0025
page0026
page0027
page0028
page0029
page0030
page0031
page0032
page0033
page0034
page0035
page0036
page0037
page0038
page0039
page0040
page0041
page0042
page0043
page0044
page0045
page0046
page0047
page0048
page0049
page0050
page0051
page0052
page0053
page0054
page0055
page0056
page0057
page0058
page0059
page0060
page0061
page0062
page0063
page0064
page0065
page0066
page0067
page0068
page0069
page0070
page0071
page0072
page0073
page0074
page0075
page0076
page0077
page0078
page0079
page0080
page0081
page0082
page0083
page0084
page0085
page0086
page0087
page0088
page0089
page0090
page0091
page0092
page0093
page0094
page0095
page0096
page0097
page0098
page0099
page0100
page0101
page0102
page0103
page0104
page0105
page0106
page0107
page0108
page0109
pagenames
populars
seccamp2013
seccamp2014
seccamp2017
ttwilb
ttwilb-asmi
yao
* すべてがOSECPUアプリになる? -(by [[K]], 2013.08.02) -ちなみにこのページ名は、森博嗣著『すべてがFになる』のタイトルのパクリです(笑)。 ** (0) はじめに -OSECPUアプリはセキュアです。そしてOSECPUアプリは機能密度が高いです。さらにOSECPUアプリはCPUに依存せずに実行できます。この三つが同時に成立したことで、予想外の相乗効果があると気が付きました。 ** (1) きっかけ -ええとOSECPUアプリでは、画面に絵を描く系のアプリが多いですよね。これは別に深い意味があるわけではなく、字を書いてもつまらないから絵を描いていただけなのですが、とにかくそれが出発点です。 -OSECPUではapp0006.oseで256x256ピクセルのきれいなグラデーションが表示されますが、これはたったの17バイトです。またapp0023.oseは71バイトでbballの模様を描くことができます。app0038の国旗は21バイトですし、app0043のメタリックなボールは30バイトです。これはとにかく驚異的な小ささだと思います。・・・何をいまさらと思うでしょう。 -でもこれを眺めていたら、ふと思ったのです。・・・「あれ、もしかして.oseって新しい画像形式の名前?」って。 -このアイデアに僕はわくわくしました(笑)。 -早速適当な画像ファイルを用意して(下記参照)これをOSECPUアプリにしてみました。それは.pngでは1410バイトでしたが、.oseにしたら587バイトになりました(app0080)。おお、これはいける! --http://osecpu.osask.jp/download/night.png ~''night.png'' -調子に乗ってもう一個やってみました。.pngでは38233バイトですが、.oseにしたら3311バイトになりました(app0081)。 --http://osecpu.osask.jp/download/osask.png ~''osask.png'' -「.oseは新しい画像形式です。ものにもよりますが、単純な絵なら結構小さくなります。アニメーションもできるのでアニメーションGIFの代わりもできます。・・・あ、そういえばキー入力もできるのでゲームもできます。そういえばファイルの読み書きもできますね。・・・あれ?これは何でしたっけ??」(笑) ** (2) こうさつ -まあこれは半分は冗談です。だからそんなに真剣にならずに軽く読んでほしいのですが、仮に.png画像のほとんどが.oseにすることで容量を大幅に削減できるとしましょう。GIFアニメもそうだとしましょう。そうだとしたら、.pngや.gifなんて一部のハイエンドグラフィックツールだけが対応すればいいと思うんです。あとはみんな.oseでいいじゃないですか。 -.oseなら画像だけではなくて普通のOSECPUアプリの実行にも使えるわけで、エンジンは共通にできます。設定ファイルとかもこれからは.ose形式ですよ。データもアプリも.oseでいいのなら、簡単でいいじゃないですか。もちろん頻繁に編集するようなものについては、ベタで持っておけばいいと思います。でもリリース時には.oseにするのです。 -OSECPUは仮想マシンなので、特定のCPUに依存せずに実行できます。だからこそ汎用のデータ形式になりえるのです。そうでないと、x86でしかこの画像は見られません、とかになってしまいます。そんなのはもちろん論外です。.exeが画像形式になれない理由です。 -OSECPUはセキュアなので、データ形式の候補になりえます。もし「画像を見ようと思って開いたら、システムが破壊された」なんてことになったらどうですか?そんな可能性があるだけでももう怖くて開く気になれません。無限ループで帰ってこなくなった、そんなこともありません。これも.exeが画像形式になれない理由です。 -そしてもちろん、.oseが.pngや.gifよりも小さくなるからこんな話が成立するのです。そうじゃなかったら提案すらされないでしょう。 ** (3) プログラムについて -app0080.ask (瑣末な記述は省略しています) VPtr p:P01; PLIMM(p, L_PICTDATA); DAT_SA(L_PICTDATA, T_UINT8, 16384); // 128*128=16384 D8B(4,4,4,4,4,4,4,4,4,4,4,... (中略) D8B(6,6,6,6,6,6,6,0,0,0,0,... SInt32 x:R00, y:R01, c:R02; junkApi_openWin(128, 128); for (y = 0; y != 128; y++) { for (x = 0; x != 128; x++) { LMEM0PP(c, T_UINT8, p); junkApi_drawPoint(4, x, y, c); } } --このプログラムでopenWinから最後までのバイトコードは無圧縮状態で16バイトです。だからベタ形式データに対するオーバヘッドはかなり小さいです。ということで単純な圧縮勝負になります。 --このプログラムで、基本8色しか使わない画像は全て対応できます。 -インデックスカラーを使うとしたら: VPtr p:P01, t:P02; PLIMM(p, L_PICTDATA); PLIMM(t, L_COLORTBL); DAT_SA(L_PICTDATA, T_UINT?, XSIZ * YSIZ); D?B(?,?,?,?,?,?,... DAT_SA(L_COLORTBL, T_UINT24, ?); D24B(0x??????, 0x??????, 0x??????,... SInt32 x:R00, y:R01, c:R02; junkApi_openWin(XSIZ, YSIZ); for (y = 0; y != YSIZ; y++) { for (x = 0; x != XSIZ; x++) { LMEM0PP(c, T_UINT?, p); // c = *p++; PALMEM0(c, T_UINT24, t, c); // c = t[c]; junkApi_drawPoint(0, x, y, c); } } --多分これがインデックスカラーを使う場合の基本形です。 * こめんと欄 -jpgで保存された写真はどうですか?バイトコードを圧縮している圧縮形式がpngより優れているという事でしょうか? -- ''noname'' SIZE(10){2013-08-08 (木) 14:42:14} -jpgだと多分勝てないです・・・。いや、うーん、勝てるかもしれない要素は少しあるのですが、でも些細な差だと思います。 -- ''K'' SIZE(10){2013-08-08 (木) 14:58:27} -pngより圧縮率がいい理由の一つは、OSECPUがtek5圧縮を採用しているからです。もう一つには、画像の特徴を生かして色数を削減していることもあります。たとえばapp0081は全部で5色使われていますが、内部データは2ビットカラーになっていて、つまり4色用のデータ形式になっています。それで前後の関係から5色を正しく再現させています。こういうことができるのは、app0081が単なる「データを圧縮したもの」ではなく、プログラムだからです。 -- ''K'' SIZE(10){2013-08-08 (木) 15:03:54} #comment
タイムスタンプを変更しない
* すべてがOSECPUアプリになる? -(by [[K]], 2013.08.02) -ちなみにこのページ名は、森博嗣著『すべてがFになる』のタイトルのパクリです(笑)。 ** (0) はじめに -OSECPUアプリはセキュアです。そしてOSECPUアプリは機能密度が高いです。さらにOSECPUアプリはCPUに依存せずに実行できます。この三つが同時に成立したことで、予想外の相乗効果があると気が付きました。 ** (1) きっかけ -ええとOSECPUアプリでは、画面に絵を描く系のアプリが多いですよね。これは別に深い意味があるわけではなく、字を書いてもつまらないから絵を描いていただけなのですが、とにかくそれが出発点です。 -OSECPUではapp0006.oseで256x256ピクセルのきれいなグラデーションが表示されますが、これはたったの17バイトです。またapp0023.oseは71バイトでbballの模様を描くことができます。app0038の国旗は21バイトですし、app0043のメタリックなボールは30バイトです。これはとにかく驚異的な小ささだと思います。・・・何をいまさらと思うでしょう。 -でもこれを眺めていたら、ふと思ったのです。・・・「あれ、もしかして.oseって新しい画像形式の名前?」って。 -このアイデアに僕はわくわくしました(笑)。 -早速適当な画像ファイルを用意して(下記参照)これをOSECPUアプリにしてみました。それは.pngでは1410バイトでしたが、.oseにしたら587バイトになりました(app0080)。おお、これはいける! --http://osecpu.osask.jp/download/night.png ~''night.png'' -調子に乗ってもう一個やってみました。.pngでは38233バイトですが、.oseにしたら3311バイトになりました(app0081)。 --http://osecpu.osask.jp/download/osask.png ~''osask.png'' -「.oseは新しい画像形式です。ものにもよりますが、単純な絵なら結構小さくなります。アニメーションもできるのでアニメーションGIFの代わりもできます。・・・あ、そういえばキー入力もできるのでゲームもできます。そういえばファイルの読み書きもできますね。・・・あれ?これは何でしたっけ??」(笑) ** (2) こうさつ -まあこれは半分は冗談です。だからそんなに真剣にならずに軽く読んでほしいのですが、仮に.png画像のほとんどが.oseにすることで容量を大幅に削減できるとしましょう。GIFアニメもそうだとしましょう。そうだとしたら、.pngや.gifなんて一部のハイエンドグラフィックツールだけが対応すればいいと思うんです。あとはみんな.oseでいいじゃないですか。 -.oseなら画像だけではなくて普通のOSECPUアプリの実行にも使えるわけで、エンジンは共通にできます。設定ファイルとかもこれからは.ose形式ですよ。データもアプリも.oseでいいのなら、簡単でいいじゃないですか。もちろん頻繁に編集するようなものについては、ベタで持っておけばいいと思います。でもリリース時には.oseにするのです。 -OSECPUは仮想マシンなので、特定のCPUに依存せずに実行できます。だからこそ汎用のデータ形式になりえるのです。そうでないと、x86でしかこの画像は見られません、とかになってしまいます。そんなのはもちろん論外です。.exeが画像形式になれない理由です。 -OSECPUはセキュアなので、データ形式の候補になりえます。もし「画像を見ようと思って開いたら、システムが破壊された」なんてことになったらどうですか?そんな可能性があるだけでももう怖くて開く気になれません。無限ループで帰ってこなくなった、そんなこともありません。これも.exeが画像形式になれない理由です。 -そしてもちろん、.oseが.pngや.gifよりも小さくなるからこんな話が成立するのです。そうじゃなかったら提案すらされないでしょう。 ** (3) プログラムについて -app0080.ask (瑣末な記述は省略しています) VPtr p:P01; PLIMM(p, L_PICTDATA); DAT_SA(L_PICTDATA, T_UINT8, 16384); // 128*128=16384 D8B(4,4,4,4,4,4,4,4,4,4,4,... (中略) D8B(6,6,6,6,6,6,6,0,0,0,0,... SInt32 x:R00, y:R01, c:R02; junkApi_openWin(128, 128); for (y = 0; y != 128; y++) { for (x = 0; x != 128; x++) { LMEM0PP(c, T_UINT8, p); junkApi_drawPoint(4, x, y, c); } } --このプログラムでopenWinから最後までのバイトコードは無圧縮状態で16バイトです。だからベタ形式データに対するオーバヘッドはかなり小さいです。ということで単純な圧縮勝負になります。 --このプログラムで、基本8色しか使わない画像は全て対応できます。 -インデックスカラーを使うとしたら: VPtr p:P01, t:P02; PLIMM(p, L_PICTDATA); PLIMM(t, L_COLORTBL); DAT_SA(L_PICTDATA, T_UINT?, XSIZ * YSIZ); D?B(?,?,?,?,?,?,... DAT_SA(L_COLORTBL, T_UINT24, ?); D24B(0x??????, 0x??????, 0x??????,... SInt32 x:R00, y:R01, c:R02; junkApi_openWin(XSIZ, YSIZ); for (y = 0; y != YSIZ; y++) { for (x = 0; x != XSIZ; x++) { LMEM0PP(c, T_UINT?, p); // c = *p++; PALMEM0(c, T_UINT24, t, c); // c = t[c]; junkApi_drawPoint(0, x, y, c); } } --多分これがインデックスカラーを使う場合の基本形です。 * こめんと欄 -jpgで保存された写真はどうですか?バイトコードを圧縮している圧縮形式がpngより優れているという事でしょうか? -- ''noname'' SIZE(10){2013-08-08 (木) 14:42:14} -jpgだと多分勝てないです・・・。いや、うーん、勝てるかもしれない要素は少しあるのですが、でも些細な差だと思います。 -- ''K'' SIZE(10){2013-08-08 (木) 14:58:27} -pngより圧縮率がいい理由の一つは、OSECPUがtek5圧縮を採用しているからです。もう一つには、画像の特徴を生かして色数を削減していることもあります。たとえばapp0081は全部で5色使われていますが、内部データは2ビットカラーになっていて、つまり4色用のデータ形式になっています。それで前後の関係から5色を正しく再現させています。こういうことができるのは、app0081が単なる「データを圧縮したもの」ではなく、プログラムだからです。 -- ''K'' SIZE(10){2013-08-08 (木) 15:03:54} #comment
テキスト整形のルールを表示する