视频游戏系统的制作方法

文档序号:6414350阅读:173来源:国知局
专利名称:视频游戏系统的制作方法
技术领域
本发明涉及视频游戏系统,更具体地说,本发明涉及有一个设置在控制器中的把操作信号提供给视频游戏机的振动源,根据游戏图象产生振动的新颖视频游戏系统。
传统的商用视频游戏机涉及已经实用的所谓人体感应游戏机,为了更进一步增强游戏的兴趣,这种游戏机可以引起游玩者座位的振动或倾斜。
与此同时,在例如1987年12月10公开的公开号为S62-194389的日本实用新型专利中公开了一种控制器,该控制器有一个配置在操纵杆中的电磁铁,由于电磁铁的激励,在操纵杆上引起振动。可以考虑提供这样一种游戏,即通过将产生振动的控制器与家用视频游戏机相连接把振动传送给游玩者的手中。
然而,在现有技术中,没有公开关于显示器上所显示游戏图象与所引起振动之间的相互关系。因此,难以把这种现有技术应用于家用视频游戏系统。此外,上述的人体感应游戏机在座位上产生振动,不能用于没有这种座位的家用视频游戏机上。
因此,本发明的主要目的是提供一种能够以与游戏图象相关的方式把振动传送给游玩者的视频游戏系统。
本发明是一种视频游戏系统,它包括一个视频游戏机和一个控制器,其中,视频游戏机包括根据控制器的操作状态并按照存储器媒体中存储的游戏程序产生显示器上所显示游戏图象的处理装置,控制器以游玩者手持状态使用并包括多个指定游戏者目标运动或移动的操作开关、一个产生机械振动的振动源和一个根据视频游戏机提供的命令信号驱动振动源的驱动电路,存储器媒体包括根据至少一个操作开关的操作产生变化的游戏者目标图象的游戏者目标图象发生程序、产生出现在游戏者目标周围的至少一个其它目标的其它目标图象发生程序、基于游戏者目标图象和其它目标图象的显示状态检测振动发生条件的振动发生条件检测程序、以及按照振动发生条件检测程序根据对振动发生条件的检测产生控制振动源数据的振动控制程序,处理装置按照游戏者目标图象发生程序和其它目标图象发生程序产生游戏图象以及按照振动控制程序通过驱动电路引起振动源产生与显示器上帧图象的发生在时间上同步的机械振动。
本发明是一种视频游戏系统,它包括一个视频游戏机和一个提供操作信号的控制器,其中,控制器以游玩者手持状态使用并包括多个指定游戏者目标运动或移动的操作开关、一个产生机械振动的振动源和一个根据视频游戏机提供的命令信号驱动振动源的驱动电路,视频游戏机包括根据至少一个操作开关的操作产生变化的游戏者目标图象的游戏者目标图象发生装置、基于控制器的操作开关的操作状态对振动发生条件进行检测的振动发生条件检测装置、以及根据振动发生条件检测装置对振动发生条件的检测结果,通过驱动电路引起振动源产生与显示器上帧图象的发生在时间上同步的机械振动的振动发生装置。
振动发生条件的检测与游戏者目标图象和其它目标图象的状态(例如,它们是否被击中或类似的情况)有关。如果检测到这一条件,驱动电路将驱动包含在控制器中的振动源。
此外,不管游戏者目标和其它目标的状态,也能够产生与控制器的操作开关状态有关的振动。
根据本发明,能够根据游戏图象的状态由控制器的振动源产生振动。于是,游玩游戏进一步增加真实感。
从以下结合附图对本发明所作的详细描述中,本发明的上述目的以及其它目的、特征、方案和优点将变得更加清楚。


图1是表明本发明一个实施例的视频游戏系统的示意图。
图2是详细表明图1所示视频游戏机的方框图。
图3是详细表明图2所示控制器进行控制的方框图。
图4是详细表明图2所示控制器控制电路和振动盒的方框图。
图5是详细表明振动盒的示意图。
图6是表明包含在振动盒中的振动发生电路的电路图。
图7是表明外部ROM中存储映象的示意图。
图8是表明RAM中存储映象的示意图。
图9是表明图1所示实施例整个工作的流程图。
图10是表明振动发生条件检测子程序的流程图。
图11是表明击中确定子程序的流程图。
图12是表明振动发生子程序的流程图。
图13是表明游戏者目标与敌方目标碰撞的示意图。
图14是表明游戏者目标与静止目标碰撞的示意图。
图15示出产生既强又短暂振动的振动模式。
图16示出产生既弱又长振动的振动模式。
图17是表明本发明一个实施例的RAM中存储映象的示意图。
参考图1,本实施例的视频游戏系统包括视频游戏机10、ROM盒式存储器20(例如存储媒体)、与视频游戏机10连接的显示器30以及控制器40。控制器40与振动盒50为可拆卸安装。
控制器40是由多个设置在外壳41上的开关或按钮构成的,可以用双手或单手抓外壳41。具体地说,控制器40包括分别从外壳41的左侧、右侧和中间向下伸展的把手41L、41C和41R,在外壳41的上表面上提供操作区。在操作区中,在其中心的下部设置一个模拟输入操纵杆(以下称为“模拟操纵杆”)45,在左侧上设置一个十字形的数字方向开关(以下称为“十字开关”)46,在右侧设置多个按钮开关47A、47B、47C、47D、47E和47F。
采用模拟操纵杆45输入由操纵杆的倾斜量和方向确定的游戏者目标(一可由游戏者经控制器40操纵的目标)的移动方向和/或移动速度或移动量。采用十字开关46而不是操纵杆45指定游戏者目标的移动方向。采用按钮开关47A和47B指定游戏者目标的运动。采用按钮开关47C-47D切换三维图象摄像机的视点或调节游戏者目标的速度等。在操作区的中心附近设置启动开关47S。在开始游戏时操作该启动开关47S。在中心把手41C的背侧设置开关47Z。采用该开关47Z作为例如射击游戏中的触发开关。在外壳41上部的左右侧面上设置开关47L和47R。
除了切换摄像机视点之外,在射击或动作游戏中,上述的按钮开关47C-47F也能够被用于控制游戏者目标的移动速度(例如加速度或减速度)。然而,根据游戏程序能够任意地限定这些开关47A-F、47S、47Z、47L和47R的功能。
图2是图1所示实施例的视频游戏系统的方框图。视频游戏机10中装有中央处理单元(以下称为“CPU”)11和协处理器(真正协处理器以下称为“RCP”)12。RPC12包括控制总线的总线控制电路121、执行多边形坐标变换、阴影处理等的信号处理器(真正信号处理器以下称为“RSP”)122以及将多边形数据光栅扫描成被显示图象和将多边形数据转变成存储在帧存储器中的数据形式(点阵数据)的再现处理器(真实显示处理器,以下称为“RDP”)46。
RCP12与存储盒连接器13和磁盘驱动连接器197连接,前者用于不可卸地装载其中装有外部ROM21的ROM盒式存储器20,后者用于可拆卸地安装磁盘驱动器29和RAM14。此外,RCP12与DAC(数字/模拟转换器)15和16连接,分别输出经CPU11处理的声音信号和图象信号。另外,RCP12与控制器控制电路17连接,串行传送一个或多个控制器40的操作数据和/或振动盒50的数据。
包含在RCP12中的总线控制电路121对通过总线从CPU以并行信号提供的命令进行并/串转换,由此将串行信号提供给控制器控制电路18。此外,总线控制电路121将控制器控制电路17输入的串行信号转换成并行信号,经总线将输出提供给CPU11。由CPU11对控制器40A-40D读出的操作状态(操作信号或操作数据)的数据表示进行处理,暂时存储在RAM14中。换句话说,RAM15包括暂时存储经CPU11处理的数据的存储位置,从而可以利用它通过总线控制电路121平缓地读写数据。
声音DAC15与设置在视频游戏机10背面的连接器195连接。图象DAC16与设置在视频游戏机10背面的连接器196连接。连接器195与显示器30的扬声器31连接,而连接器196与诸如TV接收器或CRT的显示器30连接。
控制器控制电路17与设置在视频游戏机10正面的控制器连接器连接。连接器18经连接插口与控制器40进行可断开连接。控制器40与连接器18的连接使控制器与视频游戏机10电连接,由此进行它们之间的数据发送/接收或传送。
控制器控制电路17用于串行发送和接收RCP12与连接器18之间的数据。如图3所示,控制器控制电路17包括数据传送控制电路171、发送电路172、接收电路173和暂时存储发送和接收数据的RAM174。数据传送控制电路171包括并/串转换电路和串/并转换电路,以便在数据传送期间对数据格式进行转换以及对RAM174进一步进行读/写控制。串/并转换电路将RCP12提供的串行数据转换成并行数据并将其提供给RAM174或发送电路172。并/串转换电路将RAM174或接收电路173提供的并行数据转换成串行数据并将其提供给RCP12。发送电路172把从控制器40读出信号和将数据(并行数据)写入振动盒50的命令转换成串行数据,发送到与各个控制器40相对应的通道CH1-CH4。接收电路173以串行数据方式接收通过相应通道CH1-CH4输人的控制器工作状态数据和从振动盒50读出的数据,将它们转换并行数据,发送到数据传送控制电路171。数据传送控制电路171把从RCP12传送的数据、接收电路173接收的控制器数据、或RAM盒式存储器读出的数据写入到RAM174中并根据RCP12的命令读出RAM174的数据,从而将它传送到RCP12。
RAM174(尽管图中未示出)包括各个通道CH1-CH4的存储位置。每个存储位置存储有通道命令、发送数据和/或接收数据。
图4示出控制器40和振动盒50的的详细电路图。控制器40的外壳装有操作信号处理电路44等,以检测操纵杆45、开关46、47等的操作状态并将检测到的数据传送到控制器控制电路17。操作信号处理电路44包括接收电路441、控制电路442、切换信号检测电路443、计数器电路444、操纵端口控制电路446、复位电路447和“或非”门448。接收电路441将诸如控制器控制电路17发射的控制信号或写入振动盒50数据一类的串行信号转换成并行信号,将其提供给控制电路442。当控制器控制电路17发送的控制信号是使操纵杆45的X、Y坐标复位的信号时,控制电路442产生复位信号,通过“或非”门448复位(0)、计数器444中的X-轴计数器444X的计数值和Y-轴计数器444Y的计数值。
操纵杆45包括X-轴和Y-轴光中断器,以便将杆倾斜分解成X-轴和Y-轴分量,产生与倾斜成正比的脉冲数。脉冲信号被分别提供到计数器444X和计数器444Y。计数器444X对操纵杆在X-轴方向倾斜时根据倾斜量产生的脉冲数进行计数。计数器444Y对操纵杆在Y-轴方向倾斜时根据倾斜量产生的脉冲数进行计数。于是,由计数器444X和444Y的计数值确定的合成X-轴和Y-轴矢量可确定游戏者目标或主角人物或光标的移动方向和坐标位置。顺便说,当同时压下两个预定开关从开关信号检测电路443提供复位信号时,或当接通电源时从复位信号发生电路447提供复位信号时,计数器444X和444Y被复位。
开关信号检测电路443根据控制电路442以不变周期间隔(例如象TV帧周期的1/30秒间隔)提供的开关状态输出命令,读出随十字开关46和开关47A-47Z的压下状态而变的信号。将读出信号发送到控制电路442。控制电路442响应于控制器控制电路17的操作状态数据的读出命令信号,以预定数据格式将开关47A-47Z的操作状态数据和计时器444X和444Y的计数值提供给发送电路445。发送电路445将控制电路442输出的并行信号转换成串行信号并通过转换电路43和信号线42将它传送到控制器控制电路17。控制电路442经地址总线和数据总线以及端口连接器46与操纵杆控制电路446连接。操纵杆控制电路446根据振动盒50与端口连接器46连接时从CPU11输出的命令进行数据输入/输出(或发送/接收)控制。
振动盒50通过将RAM51接至地址总线和数据总线和将RAM51与电池52连接而构成。RAM51是一种容量(例如256k比特)例如低于通过地址总线可存取的最大存储器容量一半的RAM。RAM51用于存储与游戏有关的备份数据,即使振动盒50从端口连接器449中抽出,应用电池52的电功率可以保持备份数据。这个振动盒50中装有振动发生电路53。
现在参照图5将详细说明振动盒50。振动盒50包括外壳501和附着在该外壳501上的背盖502。由这个外壳501和背盖502形成的振动盒50被可拆卸地安装在图1所示的控制器40的开口部分。
外壳501有一块容纳在其中的基板503。基板503上除了上述的RAM51和备用电池52外,还装有电池504和构成图4所示振动发生电路53的驱动电路505。顺便说,基板503在其边缘部分有多个这样朝向的端子506,使端子506能够与上述控制器40的开口部分形成的连接器(未示出)连接。通过这些端子506接收CPU11(图2)提供的,即视频游戏机10的控制器控制电路17提供的数据和地址。
背盖502上固定有构成振动发生电路53的振动源507。在本实施例中,振动源507采用电机产生振动。然而,除了电机以外当然能够采用其它的装置,如螺线管加上电源后产生振动。顺便说,Tokyo Parts工业股份有限公司制造的“FM16”、“FM23”、“FM25”、“FM29”或“CM-5”等可以用作振动发生电机。在采用“FM”电机的情况中,附着一个偏心构件,使构建在圆柱外壳中的轴旋转。当旋转轴旋转时,偏心构件旋转,从而引起外壳上振动。当采用“CM”电机时,以偏心方式配置电枢线圈。通过使该电枢旋转,引起振动。顺便说,如果采用螺线管,由于设置在螺线管中的磁心的往复运动而产生振动。
在任何一种情况中,通过将电池504的功率施加到如上构造的振动源507上并由驱动电路505对其进行驱动,从而由此引起振动。振动源507消耗的功率相对较大。于是,在本实施例中,提供一个与备用电池52分离的电池504(图4)。因此,当电池504用完时,可以打开可拆卸地固定在背盖502上的电池盖,掉换一个新的电池504。注意两个电池502和504可以是通用的同种电池。
此外,电源线可以包含在控制器电缆(未示出)中,从而通过该电源线将电源从图象处理装置主机或视频游戏机10经端子506提供到振动源507。在这种情况下,不用说需要适当考虑振动源507所需的功率来确定电源线的承载量。
再说,在本实施例中,振动源507安装在背盖502上,振动源507产生的振动易于传递到游玩者的手中,而不存在衰减。即振动源507产生的振动通过背盖502发射到控制器40与背盖502接触的开口部分,因此使控制器自身发生振动。结果,振动源507产生的振动被传送到游玩者抓住控制器40的手中。因此,只要振动源507产生的振动能够通过控制器40传送到游玩者的手中,振动源507可以设置在外壳501中的任何位置上。
顺便说,本实施例通过将振动盒50安装在控制器40上而将振动源507设置在控制器中。然而,振动发生电路53(图4),即振动源507、驱动电路505、电池504等可以构造在控制器40的外壳中,而不采用振动盒50。
现在参考图6详细描述构成振动发生电路53的驱动电路505。驱动电路505包括解码器,解码器包含“与非”门510。这个“与非”门510通过地址总线,即视频游戏机10的CPU11(图2)的端子506(图5)接收地址数据A2-A14。在本实施例的游戏机系统中,当地址A0-A15全为1时,即当CPU11指定地址范围FFFF时,建立振动模式,从CPU11输出数据,驱动振动源507。即,如果指定CPU地址FFFF,解码器的输出,即“与非”门510的输出变为“0”。将“与非”门510的这个输出提供到“与非”门511。由于给“与非”门511进一步提供有来自CPU11的写信号-WE和芯片允许信号CE,“与非”门511响应于“与非”门510的输出和信号-WE和CE,将锁存信号提供给锁存器512。因此,当CPU11指定FFFF地址,即处于振动模式中时,锁存器512通过数据总线或端子506锁存CPU数据D0。当振动源507产生振动时这个CPU数据D0输出为“1”,当振动源507不产生振动时这个CPU数据D0输出为“0”。锁存器512的输出端经过电阻器513与驱动晶体管514的基极连接。当锁存器512的输出为“1”时,晶体管514导通,而当输出为“0”时,晶体管截止。晶体管514导通使得电池504的驱动电流流至振动源507(振动电机)。因此,驱动源507产生振动。
图7是表明装在ROM盒式存储器20(图1)中的外部ROM21的存储空间的存储映象。如图5所示,外部ROM21例如包括多个诸如程序区22、字符代码区23、图象数据区24和声音存储区25的存储区(以下仅称作“区”),因此以固定方式事先存储各种程序。
程序区22存储按照游戏内容对游戏图象进行处理所需的程序和游戏数据等。具体说,程序区22包括以固定方式事先CPU11的存储操作程序的存储区22a-22p。主程序区22a存储有例如图9所示游戏(后面将描述)的主例行处理程序。控制台数据确定程序区22d存储有对控制器40上操作数据进行处理的程序。写程序区22c存储有CPU11引起RCP12进行写入帧存储器和Z缓冲器的写程序。例如,写程序区22c存储有一个写程序,它根据一个背景景象中显示的多个移动目标或背景目标的纹理数据把作为图象数据的色度数据写入到RAM14的图象数据区201(图8)中。移动程序区22d存储有CPU11引起RCP12改变移动物体在三维空间中位置的控制程序。摄像机控制程序区22e存储有控制在三维空间中拍摄包括游戏者目标或背景目标在内的移动目标的方向和/位置的控制程序。游戏者目标程序区22f存储有控制游玩者操纵目标显示的程序。敌方目标程序区22g存储有控制袭击游戏者目标的敌方目标显示的程序。背景程序区22h存储有CPU引起RCP12产生三维背景景象的背景产生程序。
字符代码区23是存储多种字符代码,例如对应于代码的多种字符点数据的区域。在游戏过程中利用存储在字符代码区23中的字符代码数据向游玩者显示指令内容。
图象数据区24存储有诸如每个背景目标和/或移动目标多边形坐标数据的图象数据和纹理数据,以及显示静止在预定位置上或处于移动状态中的这些目标的显示控制程序。
声音存储区25存储有以适合景象的方式有声输出上述消息的言辞、效果声、游戏音乐等的声音数据。
顺便说,存储媒体或外部存储装置可采用诸如CD-ROM或磁盘的各种存储媒体,作为添加或替代ROM盒式存储器20。在这种情况下,设置一个磁盘驱动器29(图2),在需要时对诸如CD-ROM或磁盘的光盘或磁盘存储媒体上游戏的各种数据(包括程序数据和图象表示用的数据)进行读写。磁盘驱动器29从磁盘或光盘中读出数据,同样以磁学或光学方式把程序数据存储到外部ROM21中,并将同一数据传送到RAM14中。
图8是表明RAM14存储空间的存储映象图。RAM14包括图象数据区201和程序区202。尽管图中未示出,图象数据区201包括暂时存储1帧图象数据的帧存储器区和在帧存储器区中以点为基础存储深度数据的Z缓冲器区。程序数据区202是暂时存储程序的区域。分配给ROM21区域(图7)的程序数据在需要时暂时存储在程序数据区202上,通过存取RAM14的程序区,使CPU11和RCP12能够进行游戏。同样,图象数据区201是在需要时暂时存储已存储在ROM中的能够由CPU11或RCP12直接存取的图象数据的区域。即,图象数据区201存储游戏图象显示用的存储在外部ROM中的构成静止目标和/或移动目标的多个多边形的坐标数据和纹理数据。在图象处理之前,一段历程或多级数据从外部ROM21传送到图象数据区201。
控制器数据存储区141暂时存储代表从控制器40读出的操作状态的操作状态数据。
此外,标记/寄存区142在需要时设定一个标记或者当CPU11正在执行程序时存储一个可变量或不变量。能够设定在这一标记/寄存区142中的标记包括振动游戏标记F1、击中标记F2、前一帧标记F3和振动标记F4。
振动游戏标记F1表示现在正在游玩的游戏是否包括振动盒50振动源507产生的振动的景象。当存在这种景象时,振动游戏标记F1设定为“1”,对于该情况以外的情况设定为“0”。当由于击中确定程序(图11,后面将作描述)使两个目标相撞或接触时,击中标记F2设定为“1”,对于该情况以外的情况设定为“0”。前一帧标记F3设定为在显示器30上这一帧之前的帧上击中标记F2是否设定为“1”,即在前面一帧的两个目标是否相互碰撞和接触。当前面一帧确定击中时前一帧标记F3设定为“1”,对于该情况以外的情况设定为“0”。当振动源507产生振动时,振动标记F4设定为“1”,对于该情况以外的情况设定为“0”。
变量n_add是在振动发生条件检测程序(图10,后面将作描述)中增大计数器CT计数值n的每一帧的增量值,而n_add_m是由增量值n_add改变的值。计数器CT具有32位的数据大小,所以,就象256(8位二进码)计数器中那样,当计数值n超过“255”时它驱动振动源507(图5)产生振动。变量ax、ay和az分别是游戏者目标在X-轴、Y-轴和Z-轴方向上的加速度分量。变量fx、fy和fz分别是加速度分量ax、ay和az乘以常量accx、accy和accz的值。
顺便说,变量n_add和n_add_m可以常量。在本实施例中,将变量n_add设定为“255”或“150”。同时将变量n_add_m设定为例如“20”或“10”。
图9是本实施例的视频游戏系统的主流程图。如果接通电源,在第一步S1中,CPU将视频游戏机10设定为预定的初始状态。例如,CPU11从存储在外部ROM21程序区22中的游戏程序中把启动程序传送到RAM14,将每个参数设定为初始值,在此之后依次执行图9所示的步骤。
例如,每隔1帧(1/60秒)或每隔2帧或3帧执行图9所示主流程图的工作,这里在清除历程前重复执行步骤S2-S14。如果游戏结束没有成功清除历程,那么在步骤S14后的步骤S15中进行游戏结束处理。如果成功地完成历程清除,那么过程从步骤S13返回到步骤S1。
即,在步骤S1,对于游戏历程屏幕和/或历程选择屏幕进行显示。然而,在通电后开始游戏的地方,显示第一历程屏幕。如果第一历程被清除,那么设定下一历程。
在步骤S1之后,步骤S2进行控制器处理。在这个过程中,检测是否操作了控制器40的操纵杆45、十字开关46和开关47A-47Z中任何一个。读出有关这一操作状态的检测数据(控制器数据)并将读出的控制器数据写入RAM14的控制器数据区141。
在步骤S3中,进行显示游戏者目标的处理过程。这一过程基本根据游玩者操纵的操纵杆45的操作状态和是否存在敌方的袭击改变游戏者目标的位置、方向、形状和地点。例如,根据从外部ROM21的存储器区22f(图7)传送的程序、从存储器区24传送的游戏者目标的多边形数据、以及控制器数据,即操纵杆45的操作状态,通过计算确定被改变的多边形数据。所获得的多个多边形给出图象数据的色彩。
在步骤S4中,进行摄像机处理过程。例如,从各个目标的视点进行计算,通过摄像机取景器观看的视线或视场处在游玩者用操纵杆45指定的角度内。
在步骤S5中,进行敌方目标处理过程。这个过程是根据从存储区22g和存储区24(图2)传送的敌方目标的多边形数据并按照部分传送的程序进行的。例如,通过计算多边形数据确定显示位置和/或形状的敌方目标,使敌方目标移动,在判定游戏者目标移动的同时袭击该游戏者目标或者阻挡其前进,由此显示被改变的敌方目标图象。因此,敌方目标将作这样的移动,以对游戏者目标产生一定的影响。
在步骤S6中,进行背景(静止)目标处理过程。这一过程是根据从存储区22h部分传送的程序和从存储区24传送的静止目标的多边形数据(图2)计算静止目标的显示位置和形状。
在步骤S7中,RSP122进行再现处理过程。即RCP12在CPU11的控制下根据存储在RAM14的图象数据区201中的诸如敌方目标、游戏者目标等的可移动目标以及诸如背景的静止目标的各个纹理数据,对显示可移动目标和静止目标的图象数据进行转换处理(坐标变换处理和帧存储器再现处理)。具体说,将色彩放入到每个可移动目标和静止目标的多个多边形中。
在步骤S8中,CPU11根据诸如消息、音乐、效果声等的声音数据进行声音处理。
在步骤S9中,CPU11进行振动条件检测处理过程。即在步骤S9 RCP12根据游戏者目标和敌方目标或静止目标的图象数据或根据控制器40提供的操作数据执行图10所示的子程序,由此检测是否建立振动源507产生振动的条件。顺便说一下,后面将参照图10对振动条件检测子程序作详细描述。
在下一步骤S10中,CPU11响应于步骤S9对振动发生条件的检测结果执行如图12所示的子程序,由此引起振动源507产生振动。参照图12也将对这一步骤S10作详细描述。
在步骤S11中,作为步骤S7的再现处理的结果,CPU11读出存储在RAM14的帧存储区中的图象数据。这使游戏者目标、可移动目标和静止目标等显示在显示器30(图1,图2)的显示屏上。
在步骤S12中,读出在步骤S8中由RCP12已经进行声音处理的声音数据,由此输出诸如音乐、效果声对话等的声音。
在步骤S13中确定是否清除历程(历程清除检测)。如果未清除历程,那么,在步骤S14中确定游戏是否结束。如果游戏未结束,过程返回到步骤S2,重复步骤S2-S14直至检测到游戏结束的条件为止。如果检测游戏结束条件,允许游玩者发生错误的次数达到了预定的次数或者游戏者目标的寿命消耗了一定的预定量,那么,在下一步骤S15进行游戏结束处理,选择游戏继续、备份数据保存等。
顺便说,如果在步骤S13中检测到清除历程的条件(例如战胜首领),处理过程在历程清除处理后返回到步骤S1。
现在参考图10,在振动发生条件检测子程序的第一步骤S101中,CPU11确定游戏者目标是否击中(碰撞或接触)干扰目标或遮挡物(诸如地面、海面、墙壁、敌方目标、袭击目标等其它可移动目标、静止目标)。根据图11所示的子程序执行这一击中检测。
在图11所示的步骤S201中,CPU11确定是否满足ABS(OBJ2x-OBJ1x)≤OBJ1r,即在X-坐标系上两个目标是否相互击中。OBJ1是被确定击中的目标,在本实施例中指游戏者目标。OBJ2是向OBJ1移动的目标,在本实施例中指友方目标、敌方目标、静止目标和敌方目标发射的袭击目标。OBJ1x是OBJ1的X-坐标值,而OBJ2x是OBJ2的X-坐标值。OBJ1x和OBJ2x可以是游戏空间坐标或游玩者坐标,只要它门是同一坐标系的X-坐标值。ABS()代表括号内数值的绝对值。OBJ1r是把OBJ1看作立方体时代表立方体一半边长的值。换句话说,OBJ1r是表示OBJ1击中范围的值。如果满足ABS(OBJ2x-OBJ1x)≤OBJ1r,那么过程前进到步骤S202。
在步骤S202中,CPU11确定是否满足ABS(OBJ2y-OBJ1y)≤OBJ1r,即在Y-坐标系上两个目标是否相互击中。OBJ1y是OBJ1的Y-坐标值,而OBJ2y是OBJ2的Y-坐标值。OBJ1y和OBJ2y可以是游戏空间坐标或游玩者坐标,只要它门是同一坐标系的Y-坐标值。如果满足ABS(OBJ2y-OBJ1y)≤OBJ1r,那么过程前进到步骤S203。
在步骤S203中,CPU11确定是否满足ABS(OBJ2z-OBJ1z)≤OBJ1r,即在Z-坐标系上两个目标是否相互击中。OBJ1z是OBJ1的Z-坐标值,而OBJ2z是OBJ2的Z-坐标值。OBJ1z和OBJ2z可以是游戏空间坐标或游玩者坐标,只要它门是同一坐标系的Z-坐标值。如果满足ABS(OBJ2z-OBJ1z)≤OBJ1r,那么过程前进到步骤S204。
在步骤S204中,CPU11确定OBJ2与OBJ1之间已有击中,则将RAM14的标记区142中的击中标记F2设定为“1”。
另一方面,如果在步骤S201中不满足ABS(OBJ2x-OBJ1x)≤OBJ1r,那么过程返回到前一程序。如果在步骤S202中不满足ABS(OBJ2y-OBJ1y)≤OBJ1r,那么过程返回到前一程序。如果在步骤S203中不满足ABS(OBJ2z-OBJ1z)≤OBJ1r,那么过程返回到前一程序。
在图10中,在步骤S101中,如果确定游戏者目标未被另一目标击中,即如果在步骤S101确定为“NO”,那么,在下一步骤S102,CPU11确定游玩者是否操纵控制器40开始游戏者目标加速。例如,通过揿下按钮47a(图1)开始加速,这里,游戏者目标是在“波浪水道”中的“飞机滑雪”。此外,如果游戏者目标是“玛利亚”,通过让操纵杆45(图1)向前倾斜开始加速。于是,在步骤S102,CPU11参考RAM14控制器数据区141中的数据,确定是否操作按钮47A或操纵杆45。
在步骤S102如果确定为“NO”,那么,在下一步骤S103 CPU11确定游戏者目标(在本实施例中为“波浪水道”中的“飞机滑雪”)是否与水面接触。在步骤S103,利用图11所示的击中检测子程序,以确定游戏者目标(“飞机滑雪”)是否与水面接触。
在图10所示的振动发生条件检测子程序中,对于三个振动发生条件中的任何一个条件,即上述的步骤S101、S102和S103中的任何一个步骤进行检测。如果在步骤S101、S102和S103中的任何一个步骤上确定为“NO”,即如果未检测到振动发生条件,那么,CPU11复位,在图10中的步骤S104中,RAM14的标记/寄存区142的寄存值n_add设定为“0”。同时,在步骤S105中,CPU11将标记/寄存区142的前一帧标记F3清除为“0”。即,对于每一帧给计数器CT的计数值n加“0”,以便将计数器CT的增加值n_add设定为“0”。换句话说,如果在所有步骤S101、S102和S103中确定为“NO”,那么,一点也不增大计数器CT。正如后面将要说明的,如果计数器CT的计数值超过例如“255”,那么将发生振动。于是,在上述情况中,振动源507不产生振动。
顺便说,如果在上述的步骤S101中确定为“NO”,那么,在步骤S105中使前一帧标记F3复位。
如果在步骤S101、S102和S103中的任何一个步骤上确定为“YES”,那么,建立振动发生条件并按照相应的振动发生条件进行振动发生过程。
即,如果在步骤S101确定游戏者目标被另一目标击中,那么,执行步骤S106至S110,由振动源507产生强振动。与此同时,在步骤S102检测到开始加速,通过步骤S111至S113产生弱振动。如果在步骤S103检测到游戏者目标(例如“飞机滑雪”)与水面接触,执行步骤S114至S117,产生代表“飞机滑雪”在波浪上移动的状态的弱振动。
如果在上述步骤S101中确定为“YES”,即如果确定游戏者目标与另一目标相碰撞或接触,那么,CPU11确定前一帧标记F3是否设定为“0”,即,在步骤S106确定在前一帧中游戏者目标是否也与另一目标碰撞。如果步骤S106确定为“YES”,即如果确定在前一帧不存在游戏者目标碰撞或接触,而是在当前帧检测到游戏者目标与另一目标碰撞或接触,那么,在步骤S107,CPU11将RAM14标记/寄存区142的增加值n_add设定为例如“255”,以产生强振动。
即,如图13所示,游戏者目标将与敌方目标碰撞或接触,或者,如图14所示,游戏者目标冲撞到或接触到敌方目标或静止目标,为了产生强振动,在步骤S107将增加值n_add设定为较大的值。
然后,在步骤S108 CPU11将增加值n_add的变化值n_add_m设定为“20”。当与另一目标碰撞或接触时,在步骤S107将增加值n_add设定为“255”,在步骤S108变化值n_add_m设定为“20”,从而产生强振动。如果变化值n_add_m大,增加值n_add_m在短时间内变为“0”,而如果变化值n_add_m小,增加值n_add_m变为“0”需要花较长时间。因此,当变化值n_add_m大时,由振动源507产生的振动将维持较长时间,在步骤S108之后的步骤S109中,CPU11将前一帧标记F3设定为“1”,即由于当前帧检测到游戏者目标击中,这时将前一帧标记F3设定为“1”。
顺便说,如果在上述的步骤S106中检测为“NO”,即如果前一帧标记F3设定为“1”,即如果在前一帧也检测到游戏者目标的碰撞或接触,那么,在步骤S110将增加值n_add复位到“0”,即当前一帧也是游戏者目标与另一目标碰撞或接触,在步骤S110将增加值n_add再现为“0”,从而阻止继续发生振动。
在步骤S102,如果检测到游戏者目标加速开始,那么,在步骤S111中CPU11将增加值n_add设定为例如“150”,产生弱振动。即当开始游戏者目标加速时,将计数器CT的增加值n_add设定为小于步骤S107中设定值的“150”,产生不同于上述击中检测情况的相对较小的振动。然后,在步骤S112中CPU11将变化值n_add_m设定为“10”。在步骤S113,前一帧标记F3再现为“0”,即这个步骤S113是在上述步骤S101确定为“NO”时执行的步骤,于是,以不同于上述步骤S109的方式,前一帧标记F3再现为“0”。
此外,如果在步骤S103检测到游戏者目标,例如本实施例中的“飞机滑雪”与水面接触,那么,在步骤S114计算乘数值fx、fy和fz。在步骤S115中CPU11计算fx×fx+fy×fy+fz×fz的平方根(小数部分不计),作为计数器CT的增加值n_add。即在步骤S114和S115中,确定游戏者目标在X-轴方向、Y-轴方向和Z-轴方向的加速度分量ax、ay和az,从而分别确定与各加速度分量成正比的fx、fy和fz值。根据这些比例值和乘数值,在“0”至“255”的范围内计算增加值n_add。在步骤S116,将增加值n_add的变化值n_add_m设定为例如“10”。即游戏者目标“飞机滑雪”与水面接触,将变化值n_add_m设定为相对较小的值“10”,从而在较长的时间里产生碰撞。也是在这个情况中,由于在上面的步骤S101中确定为“NO”,所以,在下一步骤S117中前一帧标记F3再现为“0”。
在表示振动发生子程序的图12中,第一步骤S120,CPU11确定RAM14的标记/寄存区142中的振动游戏标记F1是否为“1”,即,现在正在游玩的游戏是否涉及振动的游戏。如果在这一步骤S120中确定为“YES”,那么,CPU11参考RAM14的控制器数据区141,确定振动盒50(图1,图4)是否装载到控制器40中。如果这个游戏是有振动的游戏并且振动盒50装载到控制器40中,那么,在下一步骤S122,尽管建立振动发生条件,CPU11确定振动是否被强迫停止,即振动是否被复位。
如果在这一步骤S120中确定为“NO”,那么,在下一步骤S123,CPU11使计数器CT的计数值n再现为“n+n_add”。即根据增加值n_add增加计数器CT的计数值n。
在下一步骤S124中,根据变化值n_add_m修改增加值n_add。即在步骤S124中将显示器30的每1帧的增加值n_add减去变化值n_add_m。于是,计数器CT的计数值n的增加值随帧数的加大而减小,最终计数值n不增大。换句话说,由振动源507产生的振动开始大(强),逐渐减小(较弱),最终没有振动。
步骤S125确定计数器CT的计数值n是否超过“255”。如果步骤S125确定是“YES”,那么计数器CT的计数值再现为“n-256”。即如果步骤S125确定计数器CT的计数值n超过“255”,在下一步骤S126,计数值n减去“256”。在步骤S127,CPU11将振动标记F4设定为“1”。由于在上一步骤S125中检测到计数器CT的计数值n超过“255”,在这一步骤S127将振动标记F4设定为“1”。
在下一步骤S128,确定振动标记F4是否为“1”。由于在上述步骤S127中将振动标记F4设定为“1”产生振动,因此,在下一步骤S129,CPU11把“1”输出到除地址A15以外的所有地址A2-A14,并输出写信号和芯片允许信号。于是,在步骤S129,记录器或“与非”门511(图6)有输出信号,锁存器512锁存CPU11的数据位D0、由于在步骤S129由振动源507产生振动,CPU11的数据位D0输出为“1”。于是,锁存器512(图6)锁存“1”。根据这,晶体管514导通,把电池504的功率提供给振动源或振动电机507,由此在控制器40的振动源507或振动盒50中产生振动。
顺便说,如果在步骤S125中确定为“NO”,那么,在步骤S130中将振动标记F4复位为“0”,即计数器CT的计数值n不超过“255”,振动标记F4保持在复位状态。
在步骤S127,当振动标记F4不是“1”,即当振动标记F4为“0”时,在步骤S131中CPU11向数据位D0输出“0”,从而停止振动。因此,锁存器512锁存“0”,晶体管截止。于是,振动源507没有电流,振动源507不产生振动。
例如,如果游戏者目标将与敌方目标或静止目标碰撞或接触(图13,图14),在步骤S107,将计数器CT的计数值n_add设定为“255”,在步骤S108,将变化值n_add_m设定为“20”。如表1和图15所示,除了第一帧之外的连续4帧,计数器CT的计数值n超过“255”。因此,在这连续4帧上,连续地驱动振动源507,在此之后,每两帧的计数值n超过“255”。每隔两帧驱动一下振动源507,产生相对较强振动。
表1
然而,当游戏者目标开始加速时,产生相对较弱的振动。于是,在步骤S111,将增加值n_add设定为“150”,在步骤S112,将变化值n_add_m设定为“10”。因此,在这种情况中,如表2所示,每两帧的计数值n超过“255”,从而每隔两帧驱动一下振动源507,接下来2帧暂停振动。在接下来的1帧驱动一下振动源507,此后2帧暂停振动。
表2
即在产生强振动中,有几帧连续驱动振动源507,然后例如每隔2帧驱动一下振动源,使振动逐渐减小。在产生弱振动时,每隔2帧驱动一下振动源507,然后以每隔3帧驱动一下的方式,使振动逐渐减小。然而,不用说,可以用任意的方式设定增加值n_add或变化值n_add_m,即以上的振动发生模式。
顺便说,在第三振动发生条件下,即游戏者目标(“飞机滑雪”)与水面接触,增加值n_add设定为游戏者目标加速度的函数,根据加速度产生强或弱的振动。
顺便说,在上述的实施例中,通过执行图12所示的流程图,根据增加值n_add或者变化值n_add_m改变计数器CT的计数值n,产生如图15或图16所示的强振动或弱振动。当计数值n超过“255”时,振动标记F4设定为“1”,对振动源507进行驱动,即在上述实施例中,通过实时方式的计算,确定是否由振动源507产生振动。
与此相反,从外部ROM21的程序区22a读出的强振动和弱振动模式数据可以分别被存储到RAM14的标记/寄存区142中,如图17所示。通过有选择地读出这些振动模式数据,可以根据这些模式数据控制振动源507。可以考虑强振动模式数据采用以上述表1中的1-16帧的帧序列表示的振动信号“0111101010000000”。与此同时,弱振动模式数据可以采用上述表2中的1-16帧的帧序列表示的振动信号“0101001001000000”。顺便说,在需要时可以存储中等振动模式数据。
例如,当在图10的步骤S101检测到游戏者目标碰撞或接触时,如果读出强振动模式数据,第一帧不驱动振动源507。然而,在接下来的4帧中连续地驱动振动源507,然后,每隔2帧驱动一下,在此之后停止驱动。例如,当在图10的步骤S102检测到加速开始或者在步骤S1103检测到与水面接触,读出弱振动模式数据。因此,在前4帧期间每隔2帧驱动一下振动源507,然后每隔3帧驱动一下,在此之后停止驱动。
在以上的实施例中,当游戏者目标被另一目标或类似物体击中时,装载在控制器40中的振动盒50的振动源507产生振动。可以按照与该振动有关的定时,从视觉上给出游戏图象振动。在这种情况下,能够以比控制器40中振动盒50所产生机械振动更高的快速性感觉显示器30上的游戏图象振动。于是,在图9的步骤S10中,可以由振动盒50产生机械振动,在此之后,在图9的步骤S4或S7中,延迟1或2帧或更多帧从视觉上给出游戏图象振动。
例如,当在图10的步骤S101中检测到游戏者目标将与另一目标接触或碰撞时,由于在游戏图象上产生强振动,在整个屏幕上使显示器30振动。在这种情况下,在图9中步骤S4的摄像机处理过程期间,可以一点点地改变前面所述的摄像机的视觉坐标。
当在图10的步骤S102或S103中检测到产生弱振动的条件时,在游戏图象上产生弱振动。仅在显示器30上显示的游戏者目标图象上给出振动。在这种情况下,在图9中步骤S7的再现处理过程中,可以一点点地改变构成游戏者目标的多个多边形组的中心坐标位置。
顺便说,在图12的步骤S128中检测到“F4=1”,由该条件可以确定是否给出游戏图象振动。即,当振动标记F4为“1”时,给出游戏图象振动,而振动标记为“0”时,游戏图象上不产生振动。
尽管已经对本发明作了详细描述和示例,但是,应当清楚地明白,这里的描述和示例仅仅作为示例,而不是作为限制,本发明的精神和范围仅受说明书所附的权利要求书的权项限制。
权利要求
1.一种视频游戏系统,包括一个视频游戏机和一个控制器,其特征在于所述的视频游戏机包括根据所述控制器的操作状态并按照所述存储器媒体中存储的游戏程序产生显示器上所显示游戏图象的处理装置,所述控制器以游玩者手持状态使用,它包括多个指定游戏者目标运动或移动的操作开关;产生机械振动的振动源;和根据所述视频游戏机提供的命令信号驱动所述振动源的驱动电路;所述存储器媒体包括根据至少一个所述操作开关的操作产生变化的游戏者目标图象的游戏者目标图象发生程序;产生出现在游戏者目标周围的至少一个其它目标的其它目标图象发生程序;基于游戏者目标图象和其它目标图象的显示状态检测振动发生条件的振动发生条件检测程序;和按照振动发生条件检测程序根据对振动发生条件的检测产生控制所述振动源数据的振动控制程序;所述的处理装置按照游戏者目标图象发生程序和其它目标图象发生程序产生游戏图象,以及按照振动控制程序通过所述驱动电路引起所述振动源产生与所述显示器上帧的产生在时间上同步的机械振动。
2.如权利要求1所述的视频游戏系统,其特征在于所述的振动发生条件检测程序是为检测多种振动发生条件而编制的,所述的振动控制程序产生与按照所述振动发生条件检测程序检测的振动发生条件有关的不同的控制数据。
3.如权利要求2或3所述的视频游戏系统,其特征在于所述的振动发生条件检测程序包括检测(根据游戏者目标图象与其它目标图象之间关系产生弱振动)第一振动发生条件和(根据所述关系产生强振动)第二振动发生条件的程序,所述的处理装置对所述驱动电路进行控制,从而使所述振动源按照所述振动发生条件检测程序根据第一振动发生条件的检测结果产生相对较弱的振动以及根据第二振动发生条件的检测结果产生相对较强的振动。
4.如权利要求3所述的视频游戏系统,其特征在于所述的振动控制程序是一种根据接通和断开哪种所述振动源并按照帧数之间的差引起所述振动源产生相对较强振动和相对较弱振动的间歇控制程序。
5.如权利要求4所述的视频游戏系统,其特征在于所述的振动控制程序根据游戏者目标图象和其它目标图象的显示状态计算接通或断开所述振动源的帧数。
6.如权利要求2所述的视频游戏系统,其特征在于所述的振动控制程序包括以前由游戏者目标图象和其它目标图象的显示状态确定的多个振动模式数据。
7.如权利要求1所述的视频游戏系统,其特征在于所述的存储器媒体包括直观上引起游戏者目标和其它目标中至少一个目标振动的图象振动程序。
8.如权利要求6所述的视频游戏系统,其特征在于所述的振动控制程序在机械振动发生时间之后的时间引起图象振动。
9.一种视频游戏系统,包括一个视频游戏机和一个控制器,其特征在于所述控制器以游玩者手持状态使用,它包括多个指定游戏者目标运动或移动的操作开关;一个产生机械振动的振动源和一个根据所述视频游戏机提供的命令信号驱动所述振动源的驱动电路,所述视频游戏机包括根据至少一个所述操作开关的操作产生变化的游戏者目标图象的游戏者目标图象发生装置;产生出现在游戏者目标周围的至少一个其它目标的其它目标图象发生装置;基于游戏者目标图象和其它目标图象的显示状态检测振动发生条件的振动发生条件检测装置;以及根据所述振动发生条件检测装置对振动发生条件的检测结果,通过所述驱动电路引起所述振动源产生与显示器上帧的发生在时间上同步的机械振动的振动发生装置。
10.如权利要求9所述的视频游戏系统,其特征在于所述的振动发生条件检测装置包括多种振动发生条件,所述的振动发生装置包括以所述振动发生条件检测装置检测的不同振动发生条件的不同方式驱动所述振动源的驱动装置。
11.如权利要求10所述的视频游戏系统,其特征在于所述的振动发生条件检测装置包括对根据游戏者目标图象与其它目标图象之间关系产生弱振动的第一振动发生条件进行检测的第一检测装置和对根据同一关系产生强振动的第二振动发生条件进行检测的第二检测装置,所述的驱动装置对所述驱动电路进行控制,从而使所述振动源根据所述第一检测装置对第一振动发生条件的检测结果产生相对较弱的振动以及根据所述第二检测装置对第二振动发生条件的检测结果产生相对较强的振动。
12.如权利要求11所述的视频游戏系统,其特征在于所述驱动装置包括间歇控制装置,通过它所述驱动电路间歇地接通和断开所述振动源。
13.如权利要求12所述的视频游戏系统,其特征在于所述的间歇控制装置包括根据接通和断开所述振动源计算帧数的计算装置。
14.一种视频游戏系统,包括一个视频游戏机和一个控制器,其特征在于所述的视频游戏机包括根据所述控制器的操作状态并按照所述存储器媒体中存储的游戏程序产生显示器上所显示游戏图象的处理装置,所述控制器以游玩者手持状态使用,它包括多个指定游戏者目标运动或移动的操作开关;产生机械振动的振动源;和根据所述视频游戏机提供的命令信号驱动所述振动源的驱动电路;所述存储器媒体包括根据至少一个所述操作开关的操作产生变化的游戏者目标图象的游戏者目标图象发生程序;产生出现在游戏者目标周围的至少一个其它目标的其它目标图象发生程序;基于所述控制器的所述操作开关的操作状态检测振动发生条件的振动发生条件检测程序;和按照振动发生条件检测程序根据对振动发生条件的检测产生控制所述振动源数据的振动控制程序;所述的处理装置按照游戏者目标图象发生程序和其它目标图象发生程序产生游戏图象,以及按照振动控制程序通过所述驱动电路引起所述振动源产生与所述显示器上帧的发生在时间上同步的机械振动。
15.一种视频游戏系统,包括一个视频游戏机和一个控制器,其特征在于所述控制器以游玩者手持状态使用并包括多个指定游戏者目标运动或移动的操作开关;一个产生机械振动的振动源和一个根据所述视频游戏机提供的命令信号驱动所述振动源的驱动电路,所述视频游戏机包括根据至少一个所述操作开关的操作产生变化的游戏者目标图象的游戏者目标图象发生装置;基于所述控制器的所述操作开关的操作状态检测振动发生条件的振动发生条件检测装置;以及根据所述振动发生条件检测装置对振动发生条件的检测结果,通过所述驱动电路引起所述振动源产生与显示器上帧的发生在时间上同步的机械振动的振动发生装置。
全文摘要
一种视频游戏系统,包括视频游戏机、存储器媒体和控制器。包含在视频游戏机中的CPU检测游戏者目标与敌方目标或静止目标发生碰撞或接触的振动发生条件。如果检测到振动发生条件,CPU驱动包含在控制器中的振动源,在控制器上产生振动。
文档编号G06F3/00GK1205905SQ9811633
公开日1999年1月27日 申请日期1998年7月17日 优先权日1997年7月17日
发明者西海聪, 幸嶋一雄, 太田敬三 申请人:任天堂株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1