当前位置: 首页 > 专利查询>徐靖专利>正文

一种GBA游戏机模拟方法技术

技术编号:2851646 阅读:363 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种GBA游戏机模拟方法,逻辑上称之为模拟器,流程为:分配和初始化内存,将GBA软件载入内存地址A;初始化SDL,创建窗口,初始化输入输出部分;安装SWI及data  abort异常处理程序;创建一进程proc  gba,从地址A处开始新的进程;判断是否结束模拟:若否,则模拟GBA的输入输出,使proc  gba获得运行机会,处理SDL异常事件,获得用户输入,刷新程序窗口,然后重复判断是否结束模拟;若是,则关闭程序窗口,释放内存,卸载异常处理程序。本发明专利技术的运用大大提高了GBA模拟器的性能,使之应用于手机、MP3、PDA等产品上畅通无阻,技术效果极其显著。

【技术实现步骤摘要】

本专利技术涉及一种模拟器,具体地讲是涉及一种GBA游戏机模拟方法
技术介绍
GBA(GameBoy Advance)是日本任天堂公司生产的一种很成功的掌上游戏机,它拥有丰富的高质量的游戏软件,其软件数量在一千部以上,这个游戏机在世界各地深受欢迎,销售量非常大。下面介绍一下GBA的结构。如图1、图2所示。GBA CPU32位RISC类型CPU(ARM7TDMI)/16.78MHZ向下兼容GBC的能力为了兼容整合了一个8位的CISC类型CPU(不过,这个CPU不能和GBA的CPU同时工作)内存系统ROM 16K字节(包含2K字节的GBC系统ROM)工作RAM 32K字节+CPU外部256K字节(两个时钟周期)VRAM 96K字节OAM 64位*128调色板RAM16位*512(OBJ 256色,BG 256色)游戏卡ROM最大32MB掩膜ROM或者Flash ROM游戏卡RAM最大32MBSRAM或者Flash ROM显示240*160*RGB可同时显示32768色硬件支持特殊效果(旋转/缩放,α混合,淡入淡出,马赛克)4个图像模式操作操作键(A,B,L,R,START,SELECT和4个方向键)声音4个声道(相当于GBC的声道)+2个CPU直接控制声道(PCM格式)通讯串行通讯(8位/32位,UART,多人游戏,多用,游戏手柄总线)其他功能DMA支持4个通道的DMA(用于快速内存拷贝)定时器提供四个定时器,并且定时器可级联游戏卡和DMG、GBC一样,GBA装备了32针的游戏卡连接槽。当游戏卡插入的时候,GBA自动判断类型,并自动切换GBC和GBA模式。可以在GBA系统上面使用的游戏卡1)DMG游戏卡,DMG/GBC双模式卡,GBC(GameBoy Color)专用卡;2)GBA专用卡。表1 GBA的地址分配 ARM处理器是英国ARM公司设计的一种CPU。ARM处理器主要针对嵌入式系统和消费类电子产品,其特点是高性能、低功耗。现在的一些手机、MP3、PDA、照相机等都有应用。Intel公司的XScale处理器就具有ARM核,但在此之外也进行了扩展。ARM处理器有多个系列,如ARM7、ARM9等,GBA使用的是ARM7TDMI,支持ARM/THUMB两个指令集,但不带MMU(存储管理单元)。ARM处理器占据了嵌入式系统75%以上的市场份额。为了能够在GBA以外的平台上也能玩GBA游戏,首先要把游戏软件从游戏卡中读出存为文件,好在网上已经有大量的游戏软件可供下载。GBA模拟器(重新编译后)可运行于多种硬件平台上,如PC、PSP(PSP是索尼公司的掌上游戏机)、手机等。其中最流行的是一种名为VisualBoyAdvance的模拟器(下面记作VBA),最初的版本可运行于windows或linux上,现在被移植到多个平台上,包括一些智能手机。需要说明的是,模拟器不能保证所有的GBA游戏都百分之百的兼容,VBA的兼容性在90%以上。关于GBA游戏机的模拟方法是一种有关计算机程序的软件产品,因此在逻辑上通常称之为模拟器,即GBA模拟器。软件本质上是代码与数据的集合。代码是目标CPU的机器指令序列的集合,它总是针对某种特定类型CPU的。比如,GBA软件所包含的代码就是针对ARM7TDMI(或兼容)的CPU的。模拟器从大的结构上来说,要分为两个部分,一是对代码的执行部分,另一个是对输入输出设备的模拟。GBA模拟器就应该包括两个部分,一是对ARM CPU的模拟(包括存储器),另一部分是对输入输出的模拟,如显示、键盘输入、声音输出、游戏卡、串口(用于多机联网)等。对CPU的模拟,对于VBA这种纯软件的模拟器来说,实际上是对代码的解释执行。过程是这样,定义一些变量代表CPU中的寄存器,分配一些内存表示CPU的存储器,然后读取一条指令,根据机器码解析一下,知道了该指令执行什么操作,比如是加法指令,就把两个操作数相加,操作数可以是寄存器,也可以是在存储器中,但对于模拟器来说都是在内存里的。然后再读下一条指令,再分析,执行,就这样一条条执行下去。在执行过程中会计算每条指令所需的时钟周期(在GBA上所需的时钟周期),目的是用于和输入输出部分进行同步。对输入输出部分的模拟,目的是要从模拟器所运行的平台上获得用户的输入,并把GBA软件的输出又通过一定方式展现给用户。首先要知道GBA是如何进行输入输出的。在表1中给出的GBA地址分配中,0x04000000-0x040003FF这段地址是分配给I/O寄存器的,0x05000000-0x06FFFFFF是用于显示的,0x0D000000以上的内存是用于存储游戏进度的。模拟器需要对这些地址范围的数据进行一些特殊处理来实现I/O操作。现有技术方案的流程图如图3所示。模拟器首先分配和初始化内存,将GBA软件载入内存;初始化简单直接媒介层(SDL),创建窗口,初始化输入输出部分,如键盘输入、图像显示、声音输出等;判断周期数是否小于250000若是,则对指令进行解释执行,并计算周期数,然后重复上一步继续进行周期数判断;若否,则处理SDL事件,获得用户输入,刷新程序窗口,周期数清零;判断是否结束模拟若是,则关闭程序窗口,释放内存等;若否,则返回到周期数的数值大小判断步骤。现有技术的缺点根据上面的分析可以看到,现有技术完全使用软件对GBA指令进行解释执行,可适用于不同的硬件平台,但带来的问题是效率极低。因为,解释执行一条指令大约需要花费30条指令,这是现有模拟器的性能瓶颈。以PC平台为例,至少需要500MHz的CPU才能使模拟器的性能接近于GBA。所以,目前的模拟器对处理器的性能要求太高。这还带来另外一个缺点,如果是在手机等使用电池的设备上运行模拟器,则运行时间会很短,一般不超过2小时。
技术实现思路
针对现有技术中存在的缺陷,本专利技术旨在提高GBA模拟器的性能,使之可用于手机、MP3、PDA等性能受限的产品上,使大量高质量的GBA游戏可流畅的运行于这些产品上,为这些产品增加一项新的业务功能。为实现上述目的,本专利技术采取以下设计方案一种GBA游戏机模拟方法,它包括如下步骤为GBA的I/O寄存器分配内存,并安装异常处理程序,监视GBA软件对该内存的访问;安装软件中断(SWI)异常处理程序,用来模拟GBA的BIOS功能;将GBA软件加载到内存中,使CPU执行载入内存的GBA软件;当模拟没有结束时处理异常事件,获得用户输入事件,将它转换为GBA软件的输入,模拟GBA的DMA功能,模拟GBA的中断功能,周期性的刷新画面;当模拟结束时释放内存。上述的GBA游戏机模拟方法,其进一步的特征在于,所述的异常处理程序包括监视I/O寄存器所在的内存,当GBA程序写入产生异常时,就进行异常处理,即根据DMA寄存器的值来完成内存的拷贝;在软件中断异常处理程序中,通过程序代码,实现GBA BIOS提供的功能。本专利技术是一种模拟方法,在逻辑上可以称之为模拟器。本专利技术所设计的模拟器最好运行在符合ARM体系结构V4或以上的处理器上,并兼容ARM/THUMB指令集。正如现有技术所陈述的一样,既然解释执行是一种效率很低的方式,那么在符合ARM体系结构的处理器上完全可以直接执行GBA的代码,使效率提高几十倍。这也是本专利技术本文档来自技高网
...

【技术保护点】
一种GBA游戏机模拟方法,其特征在于:为GBA的I/O寄存器分配内存,并安装异常处理程序,监视GBA软件对该内存的访问;安装软件中断异常处理程序,用来模拟GBA的BIOS功能;将GBA软件加载到内存中,使CPU执行载 入内存的GBA软件;当模拟没有结束时:处理异常事件,获得用户输入事件,将它转换为GBA软件的输入,模拟GBA的DMA功能,模拟GBA的中断功能,周期性的刷新画面;当模拟结束时: 释放内存。

【技术特征摘要】
1.一种GBA游戏机模拟方法,其特征在于为GBA的I/O寄存器分配内存,并安装异常处理程序,监视GBA软件对该内存的访问;安装软件中断异常处理程序,用来模拟GBA的BIOS功能;将GBA软件加载到内存中,使CPU执行载入内存的GBA软件;当模拟没有结束时处理异常事件,获得用户输入事件,将它转换为GBA软件的输入,模拟GBA的DMA功能,模拟GBA的中断功能,周期性的刷新画面;当模拟结束时释放内存。2...

【专利技术属性】
技术研发人员:徐靖
申请(专利权)人:徐靖
类型:发明
国别省市:84[中国|南京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利