2012年2月28日 星期二

粒子程式編輯器及動作編輯器小修正

> 粒子程式編輯器(StgeScriptEditor)在重新編譯script前,詢問是否存檔。


> 動作編輯器(SpriteEditor)的選取項目框改為紅色。

2012年2月22日 星期三

太空戰士13-2時鐘任務輔助器

利用空閒時間作了一個太空戰士13-2時鐘任務輔助器,可以用來產生時鐘任務的解答。連結



使用javascript實作,當作一個練習題。解法很簡單,很暴力。簡單講,就是硬幹。用亂數的方法,亂到答案出來為止。不過因為怕會有亂不出答案的情況發生,所以實際上最多給它亂個1萬次就停止,因為在亂填資料時,可能會出現無解。

得到答案之後,再簡單的用圖解的方式把解答顯示出來,幫助使用。

Hello World! Hello Jaja!

export hello
export msg

jump hello

msg:
db "Hello Hello!", '\n', 0

hello:
push msg
call system.outstr
ret

這是使用jaja指令集實作的一個HelloWorld程式,jaja指令集乍看下和x86指令集很相像,但其實並不相同。jaja是一個軟體虛擬機器,是一個Stack Machine類型的虛擬機器,也就是指令操作的對象都是置於堆疊中。

原始碼檔組譯過後,如果沒有任何錯誤發生則會輸出一個mod檔案。每一個原始碼檔,可以組譯成一個對應的mod檔。透過dump工具顯示組譯過後的mod檔內容,如下。

module 'test/hello.mod', version: 0.01
...names table
0 hello
1 msg
2 system
3 outstr
...exports table
0 hello 16
1 msg 3
...imports table
0 system.outstr
...code section
code size: 23 byte(s)

可以觀察到,mod檔是section導向的。可以看到import/export表,這和系統呼叫及symbol匯出相關。import/export表都是以字串型式儲存,所以還可看到一個名稱字串表。最後是一個程式碼區段,每一個程式碼區段的大小最大為64k。


使用dbg工具,可以以單步的方式去追踪程式的執行,以及作基本的除錯。在命令提示符號下輸入g指令直接執行程式,觀看結果。畫面輸出

Hello World!

在Hello程式裡面,export了二個symbol,hello及msg。hello指向一個函式的開始,而msg指向一串資料的開始。下面的範例import中,使用了這二個在hello程式裡export的symbol。

call hello.hello

push hello.msg
call system.outstr

ret

如同要輸出字串時,使用system模組export的outstr呼叫,要使用hello模組export的hello或msg,則使用hello.hello或hello.msg。import模組dump結果如下。

module 'test/import.mod', version: 0.01
...names table
0 hello
1 msg
2 system
3 outstr
...imports table
0 hello.hello
1 hello.msg
2 system.outstr
...code section
code size: 10 byte(s)

2012年2月3日 星期五

Good Game Editor 1.3 Beta

* 新增TGA圖形格式。
* 關卡編輯器(LevelEditor)加大物件選取框。
* 修正程式碼編輯器(SciprtEditor)鍵盤焦點(Focus)問題。
* 範例StgeTest1更名為stge1。
* 移除貼圖的KeyColor屬性。
* 移除View選單裡的Toolbar及Status Bar選項。
* 新增範例fire(火焰模擬)。
* 新增Resource.GetTextureSize API。
* 新增Graphics.DrawImage及Graphics.FillRect API。
* 新增粒子測試器(STGE particle script tester)。
* 新增OnDraw事件(OwnerDraw)。
* 新增範例stge2(粒子效果)。
* 預設ShowFps開啟。
* 新增MRU(Most Recently Used)。
* 修正一個拼字錯誤(You are using latest version)。
* 拿掉新增貼圖對話盒(Add new texture dialog),簡化成開啟檔案對話盒(Open file dialog)作檔案選取。
* 修正地圖編輯器(MapEditor)輔助線編輯器的顏色選擇鈕沒有正確重畫的問題。
* 新增範例savegame(記錄檔讀寫)。
* 修正遊戲視窗改變大小時滑鼠座標產生的誤差。
* 新增範例mouse(滑鼠狀態)。
* 地圖編輯器(MapEditor)橡皮擦工具也能以右鍵選取區塊範圍。
* 修正地圖編輯器(MapEditor)編輯狀態錯誤的問題。

下載
Related Posts Plugin for WordPress, Blogger...