專利名稱:一種掌上娛樂終端游戲模擬器系統(tǒng)及其實現(xiàn)方法
技術領域:
本發(fā)明涉及一種游戲模擬器系統(tǒng),尤其涉及掌上娛樂終端模擬器系統(tǒng)及其實現(xiàn)方法。
背景技術:
目前隨著互聯(lián)網的發(fā)展,網絡游戲逐漸成為人們生活中不可缺少的娛樂內容之一。不同的游戲所需的運行環(huán)境不一樣,即使是同一款游戲,在普通PC機上能夠運行但如果移植到便攜式游戲機上,也不一定能夠實現(xiàn)。
從70年代到現(xiàn)在已經有超過3300個不同的經典大型街機游戲,為了保存紀念這些游戲,全球的許多組織開發(fā)了許許多多的模擬平臺來模擬街機游戲,但這種模擬器主要運行于個人PC及服務器上,提供標準的游戲平臺,滿足不同的游戲運營需要。但通用的PC、各種類型的服務器以及其他大型游戲設備與輕便靈活的掌上型游戲娛樂設備硬件環(huán)境的不同,其運行游戲所需的環(huán)境要求也不一致,在PC上運行游戲的模擬器不能滿足便攜式掌機的游戲兼容性要求。
掌上型隨身互動娛樂終端模擬器系統(tǒng),是基于目前最先進的掌上電腦平臺Microsoft Windows CE 5.0(微軟公司做的一種嵌入式操作系統(tǒng),以下簡稱WinCE)嵌入式操作系統(tǒng),實現(xiàn)了對Taito B,Taito f2,Taito L等一系列游戲機基板的模擬,支持高度準確的圖像與聲音還原,以及硬件支持下的8方向控制。這是針對特定基板而定制開發(fā)的模擬器,后續(xù)還可以再添加擴充對其它基板的支持。同時,如果依循這種開發(fā)模式也可以開發(fā)出具有自主版權的基于其它平臺的街機游戲模擬器。
發(fā)明內容
本發(fā)明要解決的技術問題是提供一種便于攜帶、輕巧、能夠模擬各種游戲的掌上型娛樂終端游戲模擬器系統(tǒng)及其進行游戲模擬的方法。
為解決上述技術問題,本發(fā)明由預先讀入所要模擬的游戲的CPU代碼的ROM讀取模塊;檢測用戶輸入的CE控制輸入模塊;傳輸圖像數(shù)據(jù)到顯示設備的CE圖像輸出模塊;傳輸聲音數(shù)據(jù)到音頻設備的CE聲音輸出模塊;接受來自ROM讀取模塊和CE控制輸入模塊的信息代碼的MEMORY接口模塊;接受來自ROM讀取模塊中的游戲代碼信息并啟動所述模擬器系統(tǒng)的CHIP模擬模塊;在模擬器啟動時配置所要模擬的游戲代碼及其它模擬設備代碼的控制模擬模塊;受控制模擬模塊激活并從MEMORY接口模塊讀取游戲代碼的CPU模擬模塊;接受CPU模擬模塊調取自MEMORY接口模塊的圖像數(shù)據(jù)的圖像模擬模塊;接受CPU模擬模塊調取自MEMORY接口模塊的聲音數(shù)據(jù)的聲音模擬模塊所組成。
為解決上述技術問題,本發(fā)明進行游戲模擬的方法,包含下列步驟控制模擬模塊初始化游戲配置;ROM讀取模塊讀取游戲數(shù)據(jù);CE控制輸入模塊檢測用戶輸入;CPU模擬模塊運行;聲音模擬模塊更新音頻數(shù)據(jù);圖像模擬模塊更新畫面;VBLANK中斷。
本發(fā)明由于完全采用軟件技術方案來模擬游戲硬件運行環(huán)境的體系結構以及基本的軟件環(huán)境,解決了在便攜式娛樂設備上運行各種游戲的需求。
圖1是本發(fā)明掌上娛樂終端游戲模擬器系統(tǒng)的模塊框圖;圖2是本發(fā)明掌上娛樂終端游戲模擬器系統(tǒng)的流程圖。
具體實施例方式
下面結合附圖對本發(fā)明作進一步詳細的說明。
掌上游戲機實質上是一種很特殊的計算機(單片機),包括CPU、內存、圖形設備、聲音設備和輸入輸出等設備。街機游戲模擬器的開發(fā)任務就是根據(jù)游戲機的硬件類型,通過軟件指令實現(xiàn)游戲機主機CPU所有指令,同時將游戲機的內存、顯示、聲音、輸入映射到目標機上,從而通過軟件實現(xiàn)了一個虛擬的游戲機,而這個虛擬的游戲機如果模擬的好,那與真實的游戲機幾乎沒什么差別。
模擬器系統(tǒng)模型主要有外圍的ROM讀取模塊、CE控制輸入模塊、CE圖像輸出模塊、CE聲音輸出模塊,和核心的CPU模擬模塊、芯片(CHIP)模擬模塊、內存(MEMORY)接口模塊、圖像模擬模塊、聲音模擬模塊、控制模擬模塊,其模型圖如圖1所示。
如圖2所示,掌上娛樂終端游戲模擬器系統(tǒng)進行游戲模擬的方式是這樣的,在啟動一個游戲的時候,即插式加載模塊負責把一個游戲的所有數(shù)據(jù)從zip文件中解壓并且裝載到內存接口模塊中,當然裝載的位置是有要求的,要符合要模擬的機板的要求,這些文件中有數(shù)據(jù)文件(如圖形信息,聲音信息等),程序文件(二進制的可執(zhí)行程序,是在街機上運行的,也是我們要在PC上模擬的代碼。),這些文件是以一個zip壓縮文件的形式存放在所述即插式加載模塊上面的。這是游戲啟動的第一步。
當加載完成后,是建立模擬器的工作了,在這個工程中,我們的程序會根據(jù)這個游戲所對應的機板來初始化運行模擬器所必要的工作。初始化聲音系統(tǒng),建立從聲音數(shù)據(jù)到聲音輸出的整個通路系統(tǒng);初始化圖形系統(tǒng),初始化圖形解碼和顯示的所有準備工作;初始化被模擬的指令執(zhí)行系統(tǒng),建立對應所需要的CPU的各項參數(shù)。
當所有這些準備工作完成后,模擬器啟動,也就真正開始了我們的游戲,軟CPU模擬模塊模擬硬CPU的執(zhí)行過程,不停的取指令和執(zhí)行指令,當然這中間會有時間片來同步的,模擬被模擬的CPU的時鐘。在CPU執(zhí)行的過程中所有輸出的聲音,圖形都會被送到各自的內存接口模塊中去,當這些內存更新后,會回調對應的更新模塊,把這些更新同步到用戶界面上去。
實施例1Pbobble游戲的模擬器的實施過程要模擬一個游戲,首先要了解它的運行環(huán)境,才能配置它所需要的模擬模塊。根據(jù)相關資料,我們獲悉Pbobble游戲用了兩個CPU,即M68000和Z80(其中Z80用做音頻處理用),還用了一個Yamaha的音頻芯片。這幾部分內容也就是我們模擬器需要模擬的幾大主要模塊。日模擬器運行時,在WinMain()函數(shù)里根據(jù)傳進來的參數(shù)得知所要運行的游戲,game_index=parse_cmd_line(lpCmdLine);如Pbobble的game_index是2。然后我們在運行游戲時將這個game_index傳進去,res=run_game(game_index);在run_game()函數(shù)里設置Pbobble的Driver。
在模擬器啟動的過程中,在控制模擬模塊里(在文件tatio_b.c中)配置Pbobble游戲的CPU和其它模擬設置,例如MDRV_CPU_ADD(M68000,3000000) /*配置M68000CPU并設置模擬3MHz的主頻*/MDRV_CPU_ADD(Z80,2500000) /*配置Z80CPU并設置模擬2.5MHz的主頻*/MDRV_SOUND_ADD(YM2610B,8000000)/*配置Yamaha音頻芯片*/其它主要配置還有配置游戲的中斷,配置游戲的INPUT_PORTS和ADDRESS_MAP讀寫。
模擬器通過外圍的ROM讀取模塊取得游戲的數(shù)據(jù),包括游戲程序和游戲音頻、視頻數(shù)據(jù)兩部分;讀取到游戲程序和游戲數(shù)據(jù)后就可以在模擬器上運行。
在顯示的時,圖象解碼模塊里調用游戲所設定的那些驅動,如在intvh_open(void)函數(shù)里,調用decode_graphics()函數(shù)對取得的Pbobble游戲圖像數(shù)據(jù)進行解碼,解碼后的圖形形成在模擬器的顯示存儲里面,然后通過圖形格式的轉換到掌機的顯示設備里面。
配置好以后游戲的模擬運行基本與具體的游戲無關了,去掉ROM讀取模塊,游戲在運行時需要一直讀取數(shù)據(jù)。然后,模擬器會自動按照配置好的參數(shù)運行,讀取到的游戲程序和數(shù)據(jù),關于這部分各個游戲的運行都是一樣的。
整個游戲模擬器的運行是靠定時器按時間片的模式輪流讓各個CPU去執(zhí)行,CPU模擬模塊通過CPU的接口使所配置的游戲里所要模擬的CPU都運行起來,每個CPU得到時間片后都會調用“int(*execute)(int cycles)”接口執(zhí)行一定的周期。
CPU的接口定義如下struct cpu_interface{void (*get_info)(UINT32 state,union cpuinfo*info);
void(*set_info)(UINT32 state,union cpuinfo*info);void(*get_context)(void*buffer);void(*set_context)(void*buffer);void(*init)(void);void(*reset)(voi d*param);void(*exit)(void);int (*execute)(int cycles);void(*burn)(int cycles);offs_t (*disassemble)(char*buffer,offs_t pc);size_t context_size;intaddress_shift;int*icount;};模擬器的時間片輪詢工作方式的偽代碼示意如下while(1){設置模擬器VBlank中斷();PUSH M68KCPU的context();按時間片運行模擬器M68KCPU n個周期();POP M68KCPU的context();PUSH Z80CPU的context();
按時間片運行模擬器Z80CPU n個周期();POP Z80CPU的context();聲音模擬模塊更新音頻采樣();CE聲音輸出模塊輸出一幀音頻數(shù)據(jù)();圖像模擬模塊更新視頻數(shù)據(jù)();CE圖像輸出模塊輸出一幀圖像數(shù)據(jù)();}在此輪詢中,更新音頻和視頻時調用到了聲音模擬模塊和圖像模擬模塊,從此整個模擬器就按一定的頻率(例如60Hz或者低于60Hz)運行起來,每運行一幀,模擬器就會檢測用戶的輸入,按照游戲程序運行游戲邏輯,并產生一幀圖像和產生時間長度為1/60秒的音頻數(shù)據(jù),音頻數(shù)據(jù)再通過聲音輸出模塊送到音頻設備,而圖像畫面則通過貼圖(Tile)轉換成符合當前屏幕格式的位圖,通過圖像輸出模塊顯示到顯示設備。
權利要求
1.一種掌上娛樂終端游戲模擬器系統(tǒng),其特征在于,由外圍模塊與核心模塊所組成,且所述外圍模塊包含預先讀入所要模擬的游戲的CPU代碼的ROM讀取模塊;檢測用戶輸入的CE控制輸入模塊;傳輸圖像數(shù)據(jù)到顯示設備的CE圖像輸出模塊;傳輸聲音數(shù)據(jù)到音頻設備的CE聲音輸出模塊;所述核心模塊包含接受來自ROM讀取模塊和CE控制輸入模塊的信息代碼的MEMORY接口模塊;接受來自ROM讀取模塊中的游戲代碼信息并啟動所述模擬器系統(tǒng)的CHIP模擬模塊;在模擬器啟動時配置所要模擬的游戲代碼及其它模擬設備代碼的控制模擬模塊;受控制模擬模塊激活并從MEMORY接口模塊讀取游戲代碼的CPU模擬模塊;接受CPU模擬模塊調取自MEMORY接口模塊的圖像數(shù)據(jù)的圖像模擬模塊;接受CPU模擬模塊調取自MEMORY接口模塊的聲音數(shù)據(jù)的聲音模擬模塊。
2.根據(jù)權利要求1所述的掌上娛樂終端游戲模擬器系統(tǒng),其特征在于,還包括一配置游戲的中斷、配置游戲的INPUT_PORTS和ADDRESS_MAP讀寫。
3.一種利用權利要求1所述的掌上娛樂終端游戲模擬器系統(tǒng)進行游戲模擬的方法,其特征在于,包含下列步驟控制模擬模塊初始化游戲配置;ROM讀取模塊讀取游戲數(shù)據(jù);CE控制輸入模塊檢測用戶輸入;CPU模擬模塊運行;聲音模擬模塊更新音頻數(shù)據(jù);圖像模擬模塊更新畫面;VBLANK中斷。
全文摘要
本發(fā)明公開了一種掌上娛樂終端游戲模擬器系統(tǒng),該系統(tǒng)由外圍的ROM讀取模塊、CE控制輸入模塊、CE圖像輸出模塊、CE聲音輸出模塊,和核心的控制模擬模塊、CPU模擬模塊、MEMORY接口模塊、CHIP模擬模塊、圖像模擬模塊、聲音模擬模塊組成,通過軟件設計模擬掌上網絡娛樂終端設備的硬件以及基本的軟件環(huán)境。解決了在便攜式娛樂設備上運行各種游戲的需求。
文檔編號A63F13/00GK101038557SQ20061002466
公開日2007年9月19日 申請日期2006年3月14日 優(yōu)先權日2006年3月14日
發(fā)明者朱笑靖, 張紅濤 申請人:盛大計算機(上海)有限公司