2010年2月28日 星期日

PV3Tool final beta

PV3Tool beta修得差不多了,原本有人反應說toolbar按鈕會一直閃而且不能按,
也回報沒問題了。(不過我完全沒改半行code說......)
其實我一直覺得這問題是driver的關係,因為我這邊原本開發的機器跟新組的電腦,
兩台跑起來都沒問題,我也去挖了XP日文版來測試,也是一樣沒問題。

真要說改了什麼的話,就是有把一些跟字串有關的sizeof改成了_countof ... 該不會是
memory爆了什麼的造成這個問題吧XD...。只能說又學到東西了:)

另外就是修掉了載入電視台logo功能裡面讀檔會掛掉的問題,這算是當初在unicode化時
沒注意到就改了。因為logo檔那邊的檔頭還是用ascii code的,所以檔頭structure裡面的
char[]被我改成TCHAR[]後就會有問題。改回原本的char[]後就沒問題了。

再來我還加了個可以自由切換aero mode開關的功能。
因為我自己在windows7下用,錄影的結果很正常,但monitor的畫面都頓頓的。
關掉aero mode就正常了。看來aero mode是很漂亮,但也吃掉一些資源。

最後就只剩下OSD在Directdraw off-screen surface會一直被消掉造成閃爍的問題。
這個我想只能用個thread一直強迫重畫才行,不知道會吃掉多少cpu。

有興趣的人可以下載final beta
for winxp
for vista/windows7
source code

2010年2月27日 星期六

sizeof, _countof

_countof -> static array的element數

sizeof -> 某個型態/變數的byte數

TCHAR haha[100]

sizeof(haha) in unicode = 200
sizeof(haha) in multibyte = 100
_countof(haha) in both = 100

no _countof() ? use sizeof(haha) / sizeof(TCHAR)

這東西真的會影響很多...
一堆strncpy什麼的 如果之前都寫sizeof的話 會掛得很難看..

2010年2月26日 星期五

iPhone App Info->Identifier

from iPhone Dev Center

Example App ID: A1B2C3D4E5.com.domainname.applicationname
Identifier to enter in Xcode: com.domainname.applicationname

Example App ID: A1B2C3D4E5.com.domainname.*
Identifier to enter in Xcode: com.domainname.${PRODUCT_NAME}

Example App ID: A1B2C3D4E5.*
Identifier to enter in Xcode: ${PRODUCT_NAME:rfc1034identifier}

iPhone Dev

今天真的差一點就要抓狂了XDD

iPhone的codesign一直有問題,每次程式傳上去iPhone之後,
GDB就說沒辦法跟iPhone連線orz
網路上有很多解法,像是重作Provisioning Profile、重開機、改plist都沒用

最後怒了,把Xcode整個刪掉重新裝一次。
就好了 囧囧囧囧囧囧.......

我覺得應該是我之前在試bypass sign check的時候改了Xcode的設定
結果試完之後沒有改回來

總之,終於可以實機debug了。
果然實機跑起來比較知道程式操作起來的感覺。

開始來寫一些測試的程式

2010年2月25日 星期四

{S}


{S}...是什麼東西 -.-||

PV3Tool(續)

ok剛剛說按鈕有問題的人回報了 還錄了影片
看了一下 應該是更新按鈕state的部份有問題
或是timer的重畫時間太長
之前有試著改過timer時間為15ms畫一次
在off-screen surface下 osdbar不會一直閃
不過到了window7下因為aero的關係還是沒辦法解決
先丟一個timer 15ms的版本試試好了

如果還是有問題就要大改code了.....

PV3Tool

2ch那邊有人提到Clipboard的問題
稍微看一下code,發現原來我忘了改Clipboard的資料類型
原本是設定成ANSI TEXT,但因為整個程式都unicode化了
所以本來的檔案路徑也都變unicode了,所以抓圖完的Clipboard都會只有一個char
因為一般ascii code在unicode下都變成0x00??了,在記憶體裡排列就變成
?? 00,然後00剛好是null terminate,所以都只會有一個char

2000/XP之後有新的參數是可以指定Clipboard的資料內容是unicode text了,
改了之後就正常了,順便加上可以由ini/profile指定Clipboard字串format。
這樣應該就方便很多了。

不過有人說toolbar的按鈕問題解決了說XD
我根本沒動其它的code阿XD 要說其它修改的話,只有針對xp和windows7的def作修改
真是怪怪,不過沒問題就好,不然其實我也找不出原因orz
我換了兩台電腦都OK,想說再不行就只好灌日文XP來試了 XD
anyway, 沒問題就好:D

2010年2月24日 星期三

[PS3] Heavy Rain入手




2010年2月23日 星期二

iPhone Developer Program

看來我也得打客服電話了...apple的人都不會回報這個問題給美國那邊嗎??
在台灣買IPHONE DEVELOPER PROGRAM的人應該都會遇到這個鳥問題吧

2010年2月22日 星期一

Classicdanjon fuyokunomasoujin

再打一次Classicdanjon fuyokunomasoujin......應該沒打錯吧XD


剛剛在台灣PSN上看到這個遊戲的時候,我一直在嘗試要把名字完整的念出來
.
.
.
.
.
這是什麼東東阿XDD

類似的狀況也發生在最近發售的「100万トンのバラバラ」遊戲上面
100万トン = 1000000t 很忠實的翻譯 (我沒多打0吧XD)

兒子:「爸,我想買那個...個十百千萬十萬百萬...,一百萬噸的八拉八拉。」
女友:「那個看起來很有趣耶,叫什麼名字?」
.......我數一下個十百千萬十萬百萬......。

請加油XD 台灣PSN

2010年2月19日 星期五

PV3Tool問題

2ch那邊有人提到不能按toolbar上的open memory等按鈕的問題..

..........我都可以耶XD..... 這是要怎麼debug... -.-||
只好暫時先擺放了,反正他們還有areya的版本可以用
我不用unicode版的話畫面會很亂而且會有當機bug

話說最近還發現windows7的winmm.dll export function的順序編號跟XP不一樣了
不過怎麼用起來沒差.... 為了保險起見,我還是改了def檔
免得出一些怪問題

請大家開始學寫unicode程式了,不然你的程式永遠只能給自己用

2010年2月17日 星期三

移除掉XP內建的MSN

移除XP內建MSN 
RunDll32 advpack.dll,LaunchINFSection %windir%\INF\msmsgs.inf,BLC.Remove
 

2010年2月16日 星期二

路人model的命

最近在玩God of War Collection...
果然路人的model就是要狂省面數阿XDD
看看那祭師的手... 我想去挖PS2版出來看看了
有一種看到FF7方塊人的感覺

2010年2月10日 星期三

PV3Tool抓圖問題修正

會產生問題的原因是IDirectDrawSurface7::Lock()時會有SURFACE_BUSY的問題,加了一個新的參數MaxSnapShotRetry 讓程式在Lock有問題時可以重新再嘗試Lock

PV3Tool用Hook的方式... 這問題應該沒有好的解法吧

2010年2月5日 星期五

FindWindow與多語系 - 3

本來應該解決這個問題了
不過又半路殺出個程咬金

"另存新檔" -> 在xp, vista, windows7, 不管是x32或x64 中文版或日文版都能正確抓到字串

"開啟舊檔" -> 在xp, vista, windows7中 顯示出來是 "開啟舊檔"
但在windows7 中 comdlg32.dll裡存的字串卻是 "開啟" Orz

後來才發現 原來開啟舊檔的dialog應該是用dialog resource內#1547的dialog...
標題寫的正是"開啟舊檔"
不過打開其它的dialog 有的標題寫"開啟" 有的寫 "開啟舊檔"...... Orz

最後終於讓我用另一個方法解決這問題了
WM_ENTERIDLE會回傳給dialog的parent window
所以在parent window裡面攔這個message 其中的LPARAM就是dialog的handle了 -.-||
如果要確定是我們要的那個dialog 就用getdlgitemtext之類的檢查一下就好

2010年2月3日 星期三

FindWindow與多語系 - 2

今天終於解決(?)這個問題了

因為save dialog是依據comdlg32.dll來創造的,所以在comdlg32.dll中
就含有dialog對應的string resource

用visual studio開啟comdlg32.dll (個人是使用XP SP3)
可以看到resource id=385 就是我們要的 "另存新檔"

根據這個結果,寫了下面的程式:

LoadString((HINSTANCE)GetModuelHandle(_T("comdlg32.dll")), 385, buf, 1024);

這樣buf的內容就會是"另存新檔" 再丟給FindWindow就能找到我們要的dialog的handle

FindWindow(MAKEINTATOM(32775), buf) 這樣子就能找出SaveDialog的handle

vista下LoadString也能得到"另存新檔"字串
windows7下應該也沒有問題 而且在windows7下打開comdlg32.dll可以看到其它語系的string table
其它語系的"另存新檔" id也同樣是385
所以這個方法應該沒有問題吧... XD

現在要測試在64bits的os是否也能得到相同結果

>> 64bits OS OK!!

2010年2月2日 星期二

FindWindow與多語系

最近遇到一個問題
有支程式,原本是日本人開發的。有個部份是程式會去檢查是否有跳出"另存新檔"的視窗
如果有,程式會代替使用者按下"儲存"按鈕.. 原本的程式是這樣寫的

FindWindow(NULL, _T("名前を付けて保存"))

"名前を付けて保存"就是日本的另存新檔的意思
這樣子寫,在日文的作業系統下運作當然是沒有問題

但是到了中文的系統下就不行了 因為中文的系統下 另存新檔視窗的title就是"另存新檔"
所以程式如果不修改的話,FindWindow一定會找不到對應的視窗

當然改成FindWindow(NULL, _T("另存新檔"))這樣子就沒問題了
但是變成要維護兩份source 而且一但之後再增加新語言支援 又要再多一份source..

原本是想把這個字串放到resource裡面,不過resource editor好像原生不支援unicode
看起來打進去的字串 會依照我們設定的語言跟codepage存起來 等到compile time才會轉成unicode存起來..

而且看起來這個視窗的標題應該是系統內部有定義好 如果可以由程式拿到這個字串的話
就能解決這個問題了