12/26/2008

EQ2 自我幻想

「嗚........」。
緩慢的張開雙眼,翻身吐了幾口海水,
雙手用盡力氣撐起上半身,環顧四周,
少少的幾隻螃蟹,不遠處看似有個小鎮。

回想當時商船被海盜打劫後,
除了被丟下海的,也只剩下冷冰冰的屍體,
慶幸還能抓塊浮木,飄流到這。


起身往不遠處的小鎮入口走去,
「........」
說是小鎮卻又不像,也不是個市集,
只有不到10人的小地方,
四周卻又用牆圍住,
只留下二三處出入口,
「喂.......那邊的小子」凱拉貓人叫著。

「是在叫我嗎?」
「我叫 Murrar Shar,小子你叫什麼名字。」
一身銀白色盔甲,腰中配著長劍,胸前的盔甲有的奇特的雕刻
像是個隊長階級的貓人對我說著。
「唔...我叫Enialis,這..這是什麼地方呢?」我回答著。
「Enialis......Enialis.....,真是個難發音的名字,
這個小島叫Queen's Colony,我是這裡的隊長,
目前島上有奇怪的現象發生,我們需要人手幫忙,
你快去找 Barbarian 報到吧。」Murrar Shar指著不遠處帳棚下的野蠻人。

「我為什麼要做這些事啊!」低言著。
順手往旁邊桌上拿了幾個麵包,和一壺水,看來就是隨意讓人取用的。

「怎麼還沒有人來幫忙呢?上頭到底在做什麼?」Barbarian 吼叫著。
「你好,我是Enialis,是Murrar Shar叫我過來幫忙的」我的回答打斷Barbarian的抱怨。
「.....怎麼叫個矮小的木精靈來幫忙啊,是沒有人了嗎?
他能做事嗎?喔,我的老天」Barbarian 並不在意我是否在旁邊的大叫著。
「你....小子,去和我的士兵對打看看,看你是否有些本事」。

選了根順手的雙手杖,口中輕念著咒語,
對著樹下休息的士兵轟了過去,
受到驚嚇和傷害的士兵,拿了短劍就砍了過來,
正想往旁邊閃躲時,卻忘了沒有充份休息的雙腳,只好往地上滾去,
士兵在次舉起短劍,往地上揮砍,我只能眼睜睜的看他把我砍成肉塊,
「噹.....」一隻怪異的巨大甲蟲擋在我的身前。
嚇一跳的士兵,忽然間軟倒在地上,好像某種法術在他身上起了作用。

「你好,我叫Valery,這是我的召喚寵Joke,我是個元素師」Valery伸出手把我拉起。
「謝謝你的幫忙,我叫Enialis,是個秘術者」仔細一看,
是個凱拉女貓人,高我一個肩,正低著頭,眼精像發著光似的盯著我看。
「哇...是個秘術師也,聽說你們能和神說話啊,是真的嗎?
你們會神的法術啊,好利害喔」Valery像看到寶似的高興叫著。
「這是一般人對我們的誤解啦...,我們是尊重先靈,
尋求先靈的智慧,學習先靈的法術。Valery 謝謝你的幫忙,
我先去找那個看不起人的 Barbarian,要不是你,我早就變肉醬了」我回答著。

12/24/2008

耳機

對音樂的要求不高
對我這個木耳來說
總是能聽就好


半年前買了個全罩式耳機
還是特價時花不到300大洋
使用後覺的效果不錯 :D
現在有些小毛病出現了 0.0
剛好最近也常逛
想說在找看看有沒一樣的
結果沒貨了 ~_~

選了好久一直沒有中意的
直到看到了 Philips SHP2000
使用後.............
原來耳機的好壞真的差很多
還以為自已之前買的就很好了 XDDD

看了許多網友的討論和研究
耳機也是門大學問啊 @_@
讓我有點想在買隻2000上下的入門機
不知女王是否會點頭呢? XDDD

不過對我來說好像SHP2000也很好用了 :P
只差沒有MIC要在自已DIY

12/17/2008

Amd? Intel?

對電腦有些許研究的人
都知道這二個CPU
剛好最近公司同事和我自已
共組了4台電腦

有用INTEL 也有用AMD
而目前市場主流也是INTEL


就我個人看法
Intel好在浮點運算強
適合做大型運算,影片轉檔.......etc
但就是貴 ~_~
只要你的預算夠
商家也是叫你買Intel

但認真的想想 0.0
我只是打打game,上上網,沒轉過檔 XDD
買Intel的CPU好像太浪費了
所以我選擇了AMD

其實真的是常轉檔和跑繪圖做運算
還有就是錢太多沒地方花 囧
不然AMD就真的很夠用了
而且還比較便宜 XDD

12/05/2008

AT89S5X + RF_module

這次的案子
使用到RF_module
也怕自已忘掉
所以就改寫到89S51上 XDDD



/*
RF_module user TR24A
TR24A MCU = EMI198810 3.3V
需注意io 可使用在16 or 32 bit mcu
By Brian @Taiwan
*/
#include "AT89X52.H"

#define Port_B P2

#define RF_DI 0x01 //P2.0 low
#define RF_CSB 0x02 //P2.1 high
#define RF_CLK 0x04 //P2.2 low
#define FIFO_FLAG 0x08 //P2.3 low
#define PKT_FLAG 0x10 //P2.4 low
#define RF_RESET 0x20 //P2.5 high
#define RF_DO 0x80 //P2.7 high

#define MaxLength 4

void Init_RF(void);
void INTO_TX(void);
void INTO_RX(void);
void WRITE_FIFO(unsigned char tx_leng,unsigned char tx_data);
void READ_FIFO(void);

void SpiTxReg(unsigned char rf_com,unsigned char rf_hb,unsigned char rf_lb);

void Write_FIFO_Start(unsigned char rf_com,unsigned char tx_leng);
void Write_FIFO_data(unsigned char tx_data);
void Write_FIFO_End(void);

unsigned char Read_FIFO_Start(unsigned char rf_com);
unsigned char Read_FIFO_data(void);
void Read_FIFO_End(void);
unsigned int SpiRxReg(unsigned char rf_com); //debug user

void Spi_Tx_Loop(unsigned char tx_data);
unsigned int Spi_Rx_Loop(void);

void sys_init(void);
void msDelay(unsigned int MaxDelay);

unsigned int DelayCNT;
unsigned int TimeCNT;
unsigned char Revice_Data[MaxLength];

void main(void)
{
sys_init();
Port_B &= ~RF_RESET; //RESET LOW ACT
msDelay(30);
Port_B |= RF_RESET; //RESET HIGH
msDelay(30);

Init_RF();

while(1)
{
//IN YOU CODE TX OR RX

//EX: TX
WRITE_FIFO(0x04,0x99); //SEND 4BYTE LENGTH 0x99 0x99 0x99 0x99

//EX: RX
INTO_RX(); //RESET RX STATUS
READ_FIFO(); // RECEIVE DATA IN Revice_data[]
}
}

void sys_init(void)
{
//ALL SYSTEM REG SET
IE = 0x82; //USER INTERRUPT TIME0
TMOD = 0x02; //SET TIME 0 MODE
TH0 = 256-200; //SET RELOAD VALUE
TL0 = 256-200; // FAST VALUE
TR0=1; //time enabled
TimeCNT=0;
P2 = 0xA6; //RF port default
}

void Time0_int(void)interrupt 1
{
// TIME 0 MODE2 AUTORELOAD USER UNTERUPT 1
// 1000 = 0.1S, 10000 = 1S, 100=0.01S ,10=0.001S
TimeCNT++;
if(TimeCNT>=5)
{
DelayCNT++;
TimeCNT=0;
}
}

void msDelay(unsigned int MaxDelay)
{
DelayCNT = 0x0000;
while(DelayCNT < MaxDelay) {}
}


void Init_RF(void)
{
//unsigned int rec_data; debug
//INITIAL REG48~REG58
SpiTxReg(0x30,0x98,0x00); //reg48
// rec_data=SpiRxReg(0x30);
SpiTxReg(0x31,0xFF,0x0F); //reg49
// rec_data=SpiRxReg(0x31);
SpiTxReg(0x32,0x80,0x28); //reg50
SpiTxReg(0x33,0x80,0x56); //reg51
SpiTxReg(0x34,0x4E,0xF6); //reg52
SpiTxReg(0x35,0xF6,0xF5); //reg53
SpiTxReg(0x36,0x18,0x5C); //reg54
SpiTxReg(0x37,0xD6,0x51); //reg55
SpiTxReg(0x38,0x44,0x04); //reg56
SpiTxReg(0x39,0xE0,0x00); //reg57
SpiTxReg(0x3a,0x00,0x00); //reg58
msDelay(20);
//INITIAL REG0~REG28
SpiTxReg(0x00,0x35,0x4F); //reg00
SpiTxReg(0x02,0x1F,0x01); //reg02
SpiTxReg(0x04,0x38,0xD8); //reg04
SpiTxReg(0x05,0x00,0xA1); //reg05
SpiTxReg(0x07,0x12,0x4C); //reg07
SpiTxReg(0x08,0x80,0x08); //reg08
SpiTxReg(0x09,0x21,0x01); //reg09
SpiTxReg(0x0A,0x00,0x04); //reg10
SpiTxReg(0x0B,0x40,0x41); //reg11
SpiTxReg(0x0C,0x7E,0x00); //reg12
SpiTxReg(0x0D,0x00,0x00); //reg13
SpiTxReg(0x0E,0x16,0x9D); //reg14
SpiTxReg(0x0F,0x80,0x2F); //reg15
SpiTxReg(0x10,0xB0,0xF8); //reg16
// SpiTxReg(0x11,0x00,0x66); //reg17
SpiTxReg(0x12,0xE0,0x00); //reg18
SpiTxReg(0x13,0xA1,0x14); //reg19
SpiTxReg(0x14,0x81,0x91); //reg20
SpiTxReg(0x15,0x69,0x62); //reg21
SpiTxReg(0x16,0x00,0x02); //reg22
SpiTxReg(0x17,0x00,0x02); //reg23
SpiTxReg(0x18,0xB1,0x40); //reg24
SpiTxReg(0x19,0x78,0x0F); //reg25
SpiTxReg(0x1A,0x3F,0x04); //reg26
// SpiTxReg(0x1B,0x80,0x00); //reg27
SpiTxReg(0x1C,0x58,0x00); //reg28

//完成進入閒置模式
SpiTxReg(0x07,0x00,0x00);
}
//==========================================================================
/*void INTO_TX(void)
{
SpiTxReg(0x52,0x80,0x00); //RESET TX
msDelay(5);
SpiTxReg(0x07,0x01,0x10); //INTO TX
msDelay(5);
} */

//==========================================================================
void INTO_RX(void)
{
SpiTxReg(0x52,0x00,0x80); //RESET RX
msDelay(5);
SpiTxReg(0x07,0x00,0x90); //INTO RX
msDelay(5);
}
//==========================================================================
void WRITE_FIFO(unsigned char tx_leng,unsigned char tx_data)
{
int i;

SpiTxReg(0x52,0x80,0x00); //RESET TX
msDelay(5);

Write_FIFO_Start(0x50,tx_leng); //WRITE FIFO
for(i=0;i<tx_leng;i++)
Write_FIFO_data(tx_data);
Write_FIFO_End();

SpiTxReg(0x07,0x01,0x10); //INTO TX
msDelay(5);

/* i = 0;
while( i == 0) //若PKT_FLAG = 0則等待,等於1則往下執行
{
i = Port_B; //此處沒有作用 但 Application Notes 說可讀取此io來確定data是否傳送完成
i &= PKT_FLAG; //檢查pkt_flag
} */

SpiTxReg(0x52,0x80,0x00); //RESET TX
msDelay(5);

SpiTxReg(0x07,0x00,0x00); //TX完成,進入閒置模式
msDelay(5);
}
//==========================================================================
void READ_FIFO(void)
{
char i;
unsigned char length;

for(i=0;i<MaxLength;i++) //clear receive data
Revice_Data[i]=0;
i = 0;
while( i == 0)
{
i = Port_B;
i &= PKT_FLAG; //wait pkt_flag io
}

length = Read_FIFO_Start(0xD0); //send 0xD0 and receive length
if(length<=MaxLength) //確定傳送的資料是無誤的 可在自已加上check code
{
for(i=0;i<length;i++)
{
Revice_Data[i]= Read_FIFO_data(); //接收資料
}
}

Read_FIFO_End(); //io set

SpiTxReg(0x52,0x00,0x80);
msDelay(5);
SpiTxReg(0x07,0x00,0x90);
msDelay(5);
}

void SpiTxReg(unsigned char rf_com,unsigned char rf_hb,unsigned char rf_lb)
{
unsigned char Port_status;

Port_status = Port_B;
Port_status |= RF_CSB;
Port_status &= ~RF_CLK;
Port_B = Port_status;

Port_status &= ~RF_CSB;
Port_B = Port_status;

Spi_Tx_Loop(rf_com);
Spi_Tx_Loop(rf_hb);
Spi_Tx_Loop(rf_lb);

Port_status = Port_B;
Port_status |= RF_CSB;
Port_status &= ~RF_CLK;
Port_B = Port_status;

}

void Write_FIFO_Start(unsigned char rf_com,unsigned char tx_leng)
{
unsigned char Port_status;

Port_status = Port_B;
Port_status |= RF_CSB;
Port_status &= ~RF_CLK;
Port_B = Port_status;

Port_status &= ~RF_CSB;
Port_B = Port_status;

Spi_Tx_Loop(rf_com);
Spi_Tx_Loop(tx_leng);

}

void Write_FIFO_data(unsigned char tx_data)
{
Spi_Tx_Loop(tx_data);
}

void Write_FIFO_End(void)
{
unsigned char Port_status;

Port_status = Port_B;
Port_status |= RF_CSB;
Port_status &= ~RF_CLK;
Port_B = Port_status;
}


unsigned char Read_FIFO_Start(unsigned char rf_com)
{
unsigned char Port_status;
unsigned char Rx_leng;

Port_status = Port_B;
Port_status |= RF_CSB;
Port_status &= ~RF_CLK;
Port_B = Port_status;

Port_status &= ~RF_CSB;
Port_B = Port_status;

Spi_Tx_Loop(rf_com);

Rx_leng = Spi_Rx_Loop();

return Rx_leng;
}

unsigned char Read_FIFO_data(void)
{
return Spi_Rx_Loop();
}

void Read_FIFO_End(void)
{
unsigned char Port_status;

Port_status = Port_B;
Port_status |= RF_CSB;
Port_status &= ~RF_CLK;
Port_B = Port_status;
}

void Spi_Tx_Loop(unsigned char tx_data)
{
unsigned char Port_status;
unsigned char temp;
int i;

for(i=0;i<8;i++)
{
Port_status = Port_B;
Port_status |= RF_CLK; //SPI_CLK = HIGH
Port_B = Port_status;

temp = tx_data & RF_DO;
Port_status = Port_B;

if(temp)
Port_status |= RF_DO;
else
Port_status &= ~RF_DO;

Port_B = Port_status;

tx_data<<=1;

msDelay(1);

Port_status = Port_B;
Port_status &= ~RF_CLK; //SPI_CLK = LOW
Port_B = Port_status;
msDelay(1);
}
}

unsigned int Spi_Rx_Loop(void)
{
unsigned char Port_status;
unsigned char rx_data;
unsigned char ret_data;
unsigned char temp;
int i;

ret_data = 0;

for(i=0;i<8;i++)
{
Port_status = Port_B;
Port_status |= RF_CLK; //SPI_CLK = HIGH
Port_B = Port_status;

rx_data = Port_B & RF_DI;

if(rx_data)
temp = 1;
else
temp = 0;

ret_data |= temp;

if(i<7)
ret_data <<= 1;
msDelay(1);
Port_status = Port_B;
Port_status &= ~RF_CLK; //SPI_CLK = LOW
Port_B = Port_status;
msDelay(1);
}

return ret_data;
}

unsigned int SpiRxReg(unsigned char rf_com)
{
unsigned char Port_status;
unsigned int rec_data;

Port_status = Port_B;
Port_status |= RF_CSB;
Port_status &= ~RF_CLK;
Port_B = Port_status;

Port_status &= ~RF_CSB;
Port_B = Port_status;

Spi_Tx_Loop(rf_com|0x80);

rec_data = Spi_Rx_Loop();
rec_data<<=8;
rec_data |= Spi_Rx_Loop();

return rec_data;
}

12/03/2008

工作 0.0

最近景氣不好 ~_~
公司也做了調整
所有人員減薪10%
真囧..........


這次又完成了二個Game
總計今年做出了7個Game
沒年終沒關係啊
請給我設計費 XDDD

冬天真的來了
景氣的寒冬也跟著來
又冷又囧

EverQuest 2

最近WOW改版為"哭妖王之怒" XDDD
我也因月卡到期就退出了 0.0
而這次的改版給我的感覺是......


無新意,還是一樣的無聊 = =
重覆著之前的事
每天的每日...膩了

所以決定重回EQ2了
打算邊玩邊學英文 XDD

目前所在伺服:Najena
人物:Enialis
所在:Qeynos