能够产生伪立体声的电子游戏装置的制作方法

文档序号:7562602阅读:167来源:国知局
专利名称:能够产生伪立体声的电子游戏装置的制作方法
技术领域
本发明涉及电子游戏装置,更准确地说,涉及具有二维图形显示的微处理器控制的电子游戏装置。更具体地说,本发明涉及在这种电子游戏装置中伪立体声音乐和声响效果的产生。再具体地说,本发明涉及在使用外部存储器卡盒的游戏装置(例如,电子电视游戏装置或便携式手持电子液晶显示型的游戏装置)中用于产生音乐、声响效果和其它声音的伪立体声产生装置和方法。
常规电子电视和其它游戏装置根据存储装置中存储的表示声音的数字数据而产生诸如音乐、声响,等等。然而,在过去,这样产生的声音信号由于种种原因,都是单声道的而不是立体声的。
众所周知,“立体”声通常有两个独立的(但相关的)声频通道(例如“左”声道和“右”声道)。每个声频通道包括独立的声频(及其它)信号处理电路。由独立的立体声声频通道所产生的信号通常由空间上分开的若干声频换能器所重放(例如,“左”和“右”扬声器或耳机换能器)。
在录音行业,通常将不同的立体声通道独立地进行录制和/或混合,使得在重放时这两个通道中所存在的声频信号是有差别然而相关的。由于在不同通道中同时(或几乎同时)产生的相关声音间的相位和其它信号的关系,听众感觉出音质是二维空间的。由于听众感觉到他沉浸于从多个空间上分开的声源幅射出的声音包络线之中,这种立体声产生较为令人愉快的收听感受。这种效果在通过立体声耳机来收听立体声时尤为增强。
众所周知,利用常规计算机技术,通过产生分别由存储在数字存储器中的左声道和右声道数据所控制的左、右通道的声源来合成立体声是可能的。但是,和只产生单声效果的场合相比,产生这种立体声所需的存储器通常要增加一倍。而且,还必须提供用于左声道和右声道的分开的声音合成电路(“声源”),从而增加了合成电路结构的复杂性和成本。
在日本实用新型公开公报66800/1983号中公开了伪立体声发生装置。该参考文件公开了用AM广播接收机(调谐器)来接收AM广播信号并增强所接收到的AM信号(单声道的),以产生伪立体声的效果。该文献并未谈及在存储器资源有限的游戏装置中形成立体声的问题。
本发明提供了用便宜而比较简单的实际上减少存储器要求的电路来产生伪立体声的立体声产生装置及方法。
本发明还提供了可用于带有伪立体声产生电路的电视游戏装置中的新颖的存储器卡盒。
本发明进一步提供了包括伪立体声发生器的新颖手持式电视游戏装置。
本发明提供的另一重要的优越特性是,在手持式游戏装置中可通过立体声耳机产生立体声的声响效果。
根据本发明的一个方法,提供多个独立的声音合成电路。有些声音合成电路可用于产生左声道输出信号,而另一些声音合成电路可用产生右声道输出信号,还有一些声音合成电路用于产生加到左右两声频输出通道的声频信号。然而,在本发明的最佳实施例中,没有将声音合成电路永久地指派为声频输出通道。而是在声音合成电路的输出端设置声频开关电路,用来有选择地将各种合成电路的输出信号送向所要求的左或右声频输出通道。可在程序控制下改变模拟开关电路的状态,从而改变由特定声音合成电路所产生的信号所指向的声频输出通道。
例如,按照本发明的特征,配备有左声道声频信号总线和右声道声频信号总线。左声道声频信号总线将左声道声频信号提供给左声道声频信号放大器及相关联的声音换能器(例如,立体声耳机的左声道换能器)。同样地,右声道声频信号将右声道声频信号加至右声道声频放大器及相关联的声音换能器(例如,同一立体声耳机的右声道换能器)。还配备了多个声音合成电路(声源)。最佳实施例中的声源在程序控制下独立地产生各种声频信号(例如,音高,声响效果,等等)。多个声源的每一(任一)输出信号可通过左声道模拟开关耦合到左声道声频信号总线和/或通过右声道模拟开关耦合到右声道声频信号总线。该模拟开关的状态由程序指令控制,从而可按所要求那样动态地加以改变。
这样,可通过简单地选择与特定声源的输出端相连的模拟开关的状态,来将该特定声源的输出信号仅加到左声道声频信号总线、仅加到右声道声频信号总线,或者加到左、右声频信号的两条总线(而这些状态是可以在程序控制下按要求改变的)。通过同时地或有选择地打开或关闭和特定声源相关联的左声道或右声道模拟开关,可将声音信号送向一个、另一个或两个声频输出声道。
由于按照本发明有可能对特定声源的输出信号选择其所加的声道,所以无需存储对应于两个立体声音乐节目的声音发生数据的完全不同的集合(左声道和右声道)。也就是说,只需存储用于在特定时间内控制待激活的多个发声源的不同的声音发生数据。用于选择将各种声源的输出信号加到声频通道的附加数据只需要很少的附加存储空间,只要加少许的附加存储量便可提供伪立体声。由于对特定声源信号准备加到哪一通道有可能选择,所以存储器需求基上没有增加(这与将左、右声道信号分开存储在存储器中的情况大不相同,该情况通常需要存储单声道的声频信息所需存储量的两倍)。此外,本发明提供更多用途而且不太复杂的电路结构,使其尤其适于在小型化的便携式电视游戏装置中产生声响效果。
在以上所述电视游戏装置中,由声源信号发生装置所产生的声源信号于是通过由模拟开关装置执行的切换动作而有选择地输出到第一和第二(例如,左和右)声音信号通道,以产生伪立体声。
本发明还提供与电视游戏装置可拆卸接合的存储器卡盒,用于产生立体声控制信号。电视游戏装置包括声源信号发生装置,用来按照由存储器卡盒所提供数据产生声音信号。开关装置可将声音信号发生装置的输出连接到第一和第二声音输出通道中的一个或两者,并有选择地将声源信号发生装置的输出加到第一和/或第二声音信号输出通道。对产生音乐来讲,该存储器卡盒最好存储代表音符或休止符的持续时间(时间长度)的数据、与音高相关联的数据,以及说明按规定的音高和音长所产生的声音送向哪一个声频输出通道的“方向”数据。
存储器卡盒存储和音乐或声响信号(即音符和休止符)的顺序相对应的数据集合序列,并且,在最佳实施例中以所述序列的次序(对序列中不同数据集的存取在时间分开的情况下)存取数据集,以便描述音乐或声响信号的序列。在最佳实施例中,存储器卡盒可存储与音乐声响信号序列中给定时刻相应的多个数据集合,这样可对多个声源提供同步控制。
最佳实施例中的存储器卡盒还存储用于分别读出表示预定计时的声音数据的程序控制指令,从而提供将音长(持续时间)相关数据、音高相关数据和左/右通道区分符(“方向”)数据按照从所述存储器卡盒所读出的程序控制指令送至电视游戏装置中去的机制。
本发明的最佳实施例中的存储器卡盒最好存储表示待产生声音不同方面的多种数据结构。尤其是,该卡盒最好存储用于表示通常由活页乐谱所表示信息的乐谱数据表(例如,音符和休止符序列中的音符的音高和音长,以及休止时间)。这种乐谱数据表最好依次提供到持续时间数据结构的偏移地址,将乐谱表中存储的不同音符及休止符的持续时间映象为适合的声音发生电路的计时控制信号,以及提供到频率数据结构的偏移地址,将不同音高映象为适合的声音发生电路的音高控制信号。
随着该存储器卡盒中所存储计算机程序的进行,按预定时序从乐谱表中读出音长相关数据、音高相关数据和说明左/右通道方向的数据(这些时序是由程序流另外确定的)。所产生的声音的音高是按音高相关数据确定的,而该音高的维持的时间周期(即,音长或持续时间)是按照音长(持续时间)相关数据确定的。如上所述的输出多路转换操作是按照说明左/右通道方向的数据执行的,以获得所要求的右通道声音输出或左通道声音输出。这样,便可以按伪立体声形式产生存储在乐谱表中的音符序列。由于将左或右通道数据存储在存储器卡盒里,以及左/右通道选择数据说明了由任一特定音高和音长数据所表示的声频准备指向哪一通道,所以,有可能非常容易地产生或形成诸如音乐或声响的伪立体声。
按照本发明的另一特征,将立体声/单声道变换电路连接到从中独立地输出左和右通道声音信号的立体声源。立体声/单声道变换电路最好包括可接纳通用型立体声音频插头的耳机插座。耳机插座至少包括一个开关触点以及左和右通道声频触点。左通道声频触点将左通道声频信号导向耳机左通道声频换能器,而右通道声频触点类似地将右通道声频信号导向耳机右通道声频换能器。此外,还配置了单声道声频换能器(例如,电视游戏装置内的扬声器)。
当没有耳机插头插入该耳机插座时,该开关触点产生自动地给与耳机插座左、右通道输出端相连的独立的左、右通道声频信号通路去激励并自动地激活将左、右通道声频信号一起组合成单声道信号的组合(“混合”)电路的控制信号。该组合电路将组合后的单声道信号加到电视游戏装置的内部扬声器。另一方面,耳机插座中耳机插头的插入,改变了由耳机插座开并触点所产生的控制信号的状态,即,给组合电路去激励(并由此自动地给内部扬声器去激励)而取代以完全独立的到耳机插座左、右通道触点的左、右声道的信号通道。
这样,当没有将耳机插头插入耳机插座时,将所合成的单声道声音信号供给内部扬声器。另一方面,当耳机插头插入耳机插座时,没有禁止左通道和右通道的信号通路,而是将它们分别输出到耳机插座的左通道和右通道的触点,而这样将立体声输出到插入耳机插座的立体声耳机。这样,用户可容易地将电视游戏装置作为完全独立的部件来玩并可收听到由内部扬声器产生的单声道声音。另一方面,如果游戏机使用者想要感受由上述伪立体声发生能力所提供的声音增强效果,那么他只需将立体声耳机的插头插入耳机插座,并将耳机戴在其头上。
这样,即使数据卡盒中存储的声音发生数据控制声音发生电路产生伪立体声,本发明的这一特征也提供了能够在立体声和单声道之间选择的新颖的立体声/单声道变换电路。这种立体声/单声道选择电路对于在手持式电视游戏机中产生声响是非常有效的。
联系附图,从以下对本发明的目前最佳实施例的详细描述,本发明的这些和其它一些目的、特征、方面和优点会变得更明显和容易理解,附图中

图1为可便利地利用本发明的示范性的手持式液晶显示型的电视游戏装置的侧向透视图;
图2为图1游戏装置中所包含的电子线路的原理框图;
图2A为图2所示微计算机体系结构的更详细的原理图;
图3A-3D为图2所示CPU地址空间的示范性映象的原理图;
图4为图2所示的示范性声音发生器的原理框图;
图4A为图4中所示寄存器NR50、NR51和NR52中的示范性内容;
图5为图4中所示声音发生电路的一个示范性实例的更详细的电路图;
图5A-5D为图4中所示声音发生电路中声音控制寄存器的示范性内容的原理图;
图6为示范的乐谱的图形说明,还示出一些用于控制图4所示的不同声音发生电路的控制参数;
图7A-7B共同为由最佳实施例中图2的微计算机所执行的示范程序控制步的原理性流程图,这些控制步用于产生由图6乐谱所表示的音乐;
图8为图4所示结构的示范性立体声/单声道选择电路的电路原理图;以及图9A-9D为图1和图2中所示存储器卡盒示范内容的原理图。
首先描述由本发明目前最佳的示范性实施例所提供的完整的电子游戏装置。接着给出该最佳实施例中微计算机结构的更详细描述,包括微计算机的示范性结构和微计算机的示范的存储器组织。然后,给出最佳实施例声音发生器的详细描述。关于声音发生器,首先描述最佳实施例声音发生器的总的结构和操作,包括以彼此配合的方式更好地使用多个独立声音发生电路,以产生伪立体声。其次,给出多个独立声音发生电路的一个示范性结构及操作的详细描述。接着给出可执行的示范程序控制步和可由最佳实施例的微计算机存取用以产生一行音乐的相关的示范数据结构的描述。最后,给出示范的立体声/单声道声音变换电路的描述。
图1为展示按照本发明目前最佳的示范性实施例,即示范性手持式液晶电子游戏机外壳的立视图。该手持式液晶游戏机(下文称为“游戏机”)10包括配置有液晶显示(LDC)屏14的匣12,所述液晶显示屏包括在其前部或上部表面按照点阵方式排列的点显示段。
在匣12的背部或下部表面上与LCD屏14相对的部位形成插入口68。可将一个外部ROM卡盒16插入式地插到该插入口68。更具体地说,在插入口68内配置有32针接插件20。通过将外部ROM卡盒16插进插入口68,外部ROM卡盒16印刷电路板边缘形成的接插件(未示出)以电连接和机械连接的形式与该接插件20相连接。这样,外部ROM卡盒16可联接/可拆卸地与游戏机10相联接。
如前文所述,外部ROM卡盒16为“存储器卡盒”,而将该存储器卡盒插入其中的游戏装置10为“主装置”。卡盒16和主装置10组合构成电子游戏装置。可将不同的存储器卡盒16插进插入口68以提供不同的程序控制指令,从而改变所玩的游戏。
在外部ROM卡盒16中包括了外部ROM16a(见图9A)。在外部ROM16a的程序控制指令区310内存储游戏程序。此外,众所周知,卡盒也可包括附加的存储器装置(例如,扩展RAM,存储体控制器(MBC),等等)。当将外部ROM卡盒16插入游戏机10,便执行游戏程序,使得在LCD屏14上显示出图象,由扬声器11或通过与插座64连接的耳机产生游戏音乐。
在盒12中还配置6针接插件65,利用该接插件可通过适当电缆将该游戏机与其它机器连接,使得当外部卡盒包括多选手游戏程序时,就可进行多选手间的竞赛。
在最佳实施例中将包含十字键开关18的用户输入装置配置在盒12正面或上面LCD屏14下方的左侧部位,如图1所示。十字键开关18带有四个方向指定部或触点,按下其中任一个,例如,便可能使在显示器14上所显示的字符向上、或向下、或向左、或向右移动。此外,如图1所示,在匣12正面或上面的LCD屏14下方的右侧部位配置有两个按钮开关70a和70b。当需要控制在LCD屏14所显示的游戏字符执行各种预定功能时,可操纵这两个按钮70a和70b。例如,当按钮开关70a按下时,所显示的字符可能跳跃,或当按下按钮开关70b时,该字符可看来象是掷石块、或掷球、或投掷各种其它物体。这样来装置十字键开关18使之可用左手的姆指来操作,右手与右手协同把匣12夹在手中,并将按钮开关70a和70b装置成可由右手的姆指来操作。
而且,在游戏机10的匣12的正面或上面装有启动开关72和选择开关74。如从图1可见的启动开关72和选择开关74安装在十字键开关18和按钮开关70a和70b下方的区域78中。将这些开关72和74集中安装以便可用左手和右手中任一只手的姆指来加以操作(在左手和右手握着游戏机10的匣12的同时)。换言之,可对开关72和74加以操作而无需明显改变手的位置。例如,通过使用选单屏使用选择开关74来选择正在显示游戏的操作方式。关于这点。可用选择开关74来选择若干个玩游戏级别中的一个。此外,可用选择游戏字符可用的“武器”的功能指定给择开关74。
操作启动开关72来启动所选游戏。所以,通常在游戏期间不必操作启动开关72和选择开关74。然而,由于将暂停(PAUSE)功能也指定给启动开关72,所以当要求游戏暂时停止时可按下启动开关72。要在这种暂停之后启动游戏,可再次按下启动开关72。而且,有可能在程序控制下使启动开关72和选择开关74拥有许多其它的功能,从而使在玩游戏过程中动态地改变指定给这些开关的功能。
此外在匣12上还装有通/断开关1,电池电位灯13、对比度调节50和音量调节66。
游戏装置10的核心是图2所示的微计算机22(游戏装置中电子电路的详细原理图)。微计算机10包括CPU24,仅仅作为例子它可用商业上现有的微处理器诸如Z80型的VLSI集成电路微处理器芯片来实现。CPU24通过时序部件25a、控制总线26a、地址缓冲器25b和地址总线26b、数据缓冲器25c和数据总线26c(这些总线和相关器件也将CPU与工作RAM或暂时存储器23连接)和32针卡盒接插件20相连接(从而使之与卡盒16内的存储器和其它元件相连接)。当外部ROM卡盒16与游戏机10啮合时,CPU24与外部ROM卡盒16相结合并协同工作。
现在更具体地参考图2A,CPU24与最佳实施例中的地址译码器33和存储器选择(体切换)电路32相配合以便在CPU的地址空间内选通各种装置(例如,卡盒16中的内部ROM30、内部RAM28、和外部ROM16a)。此外,地址译码器33可用来让CPU24选通图2所示其它方框中所含各种外部控制寄存器(例如,声音发生器58中的控制寄存器)或可由其它类似的地址译码器执行该功能。
如图2A所示,CPU24最好包含内部8位的通用和专用寄存器,16位的程序计数据器PC和16位的堆栈指针SP。寄存器A可用作累加器而另一寄存器F可用作标志寄存器。CPU24最好具有允许包含以下内容的相关指令集合在寄存器或寄存器对之间进行的各种8位和16位传送指令;各种8位和/或16位的算术运算指令(例如,ADD、SUB、AND/OR、INC、DEC、等等),各种移位/环移操作指令(例如将所规定的寄存器内容向左/右环移),各种位控制操作指令(例如,在所说明的寄存器中置位所说明的位)、条件和无条件转移指令,子程序调用和返回操作以及各种程序控制操作(例如,启动、停止、空操作等等)以上这些均为本专业技术人员所熟知。
最佳实施例中CPU24在存储于存储器卡盒16中的程序控制指令的控制下执行这样一些操作,从而响应用户通过用户输入装置18所形成的用户输入信号而在显示器14上提供玩游戏的显示。此外,CPU控制声音发生器58在存储于卡盒16中所述相同的程序控制指令的控制下产生与所玩游戏相应的音乐和/或声响。
再次参考图2,通过响应石英晶体元件24a的振荡电路24b而提供时钟脉冲给CPU24。时钟脉冲除法器24c产生一种或多冲时钟脉冲速率,并可由CPU24对该除法器24c进行编程,将由振荡电路24b产生的时钟脉冲按要求的比率相除。
也可装备可编程的外部硬件计时电路24d,使CPU能判定当前所需时间间隔已过的时刻。在最佳实施例中,CPU24可装入带有表示时间区间长度的数值的计时电路24d并且启动该计时器。该计时电路24d可自动地测定时间间隔并且当该时间间隔过去时,该计时电路可产生中断信号,并将该中断信号加至CPU24(例如,通过中断控制器24i)来对CPU报警时间间隔已过去。这样,CPU便有计时能力而无需使用软件计时循环(它可能占用CPU处理时间及资源)。如果愿意,该计时电路24d也可用于由声音发生器58所产生音符的计时(将作简短说明)。
在最佳实施例中,在DMA控制器34的控制下,CPU24将显示数据通过行缓冲器36输出到LCD控制器38。LCD控制器38通过LCD显示RAM接口40和控制地址和数据总线连接到显示RAM42。
LCD控制器38在CPU24控制下,通过各种可选址的控制/状态寄存器进行工作,所述控制/状态寄存器位于通常如图3A-3D所示的CPU地址空间中。例如,这些寄存器可包括以下这些寄存器LCD显示寄存器,LCD控制器状态寄存器,水平和垂直上卷寄存器、LCDC(LCD控制器)垂直行标识寄存器以及移动物体和背景画板(例如,2位可标识四种影调颜色的浓暗度中的一个)数据寄存器。LCD显示寄存器控制该显示的性质,而状态寄存器指示LCD控制器的当前状态。通过改变水平垂直上卷寄存器的数据可以使背景显示数据的每点所对应数据是有效的。垂直行标识寄存器指出并控制当前正在由显示驱动器所传送的数据将要显示的垂直行。X和Y窗口位置寄存器对LCD显示区的部分或容器进行控制,在所示LCD显示区中呈现OBJ(电影)字符及BG(背景)字符数据。
LCD控制器38将从CPU24输出的显示相关数据变换为从显示RAM42输出的LCD驱动信号。更具体地说,来自CPU24的显示数据指定字符RAM及VRAM(图象RAM)的地址,使得字符(或物体)信号和背景信号从字符RAM和VRAM中输出。相应的LCD驱动信号由LCD控制器38予以合成。
将LCD驱动信号通过LCD驱动信号缓冲器44加到LCD公用驱动器46和LCD段驱动器48。所以,借助于LCD公用驱动器46和LCD段驱动器48,可以在LCD屏14上按照来自CPU24的显示相关数据显示图形。例如,LCD屏可定义144×160的象素或点的矩阵,每一个象素或点具有相应的唯一的“交叉的”公共电极/段电极组合。LCD公用驱动器46驱动与公用电极相连的行,例如,这种驱动器可以是Sharp公司LH5076F型的集成电路。LCD段驱动器48,例如,可以是Sharp公司的LH5077F型的集成电路。这些显示驱动器接收来自LCD驱动信号缓冲器44的数据,而该LCD驱动信号缓冲器则间接地通过显示RAM42、LCDRAM接口40和LCD控制器38接收来自CPU24的数据。
此外,强度电平控制50与LCD缓冲放大器52相连接使之可以调节由LCD板14所产生的显示的强度。
再次参考图2A,将来自复位电路55的复位信号加至CPU24和存储器选择电路32。当游戏机10的电源开关接通时(见图1),输出复位信号,所以初始时便对CPU24和存储器选择电路32进行复位。然后,从CPU24输出读信号RD和写信号WR,并将这些信号适当地输入到外部ROM卡盒16、内部RAM28、内部ROM30和存储器选择电路32。此外,将地址译码信号通过地址译码器33加到存储器选择电路32。
下面,参考图3A-3B,详细描述了示范性CPU地址空间、存储在内部存储器30和外部存储器卡盒16中的数据的性质。如图3A和3B所示,内部ROM30具有由地址“0000H-00FFH”所指定,与第一个相当小的地址空间对应的第一存储区。“H”指出这些地址用十六进制数表示。在第一存储区存储了用于显示的第一字符,例如标志“Nintendo”以及外部存储器可靠性判定程序。
外部ROM卡盒16包括外部ROM16a。如图3C和3D所示,将外部ROM16a的存储器空间划分为由地址“0000H-00FFH”所指定的第二存储区(它同样与上述第一地址空间所定义的地址相对应),以及由地址“0100H-7FFFH”所指定的第三存储区(第二地址空间)。在经许可的外部存储器卡盒中的起始于第三存储区的地址“0100H”的区域中存储有第二字符数据(它与第一字符数据相同)。在第三存储区的剩余区域中存储游戏程序。最好是,在第二字符数据存储区域以后的几个字节中存储诸如标识制造厂家的代码、游戏名称,卡盒类型、存储器容量,等等辅助数据。此外,在游戏程序所要求的存储量较大时,可用外部ROM16a的第二存储区(“0000H-00FFH”)来存储该游戏的这种程序数据。
图2所示的声音发生器58也可由CPU24根据在卡盒16所存储的程序控制指令加以控制。在最佳实施例中,声音发生器58包括许多CPU可单独或组合地加以控制的独立声音发生电路,以同时产生多种声音。这些寄存器常驻在图3B所示存储空间的单元FF00(16进制)和FF80(16进制)之间的“各种寄存器”的区段。CPU24通过将适当控制数据写到物理上位于声音发生器之内、但可由CPU直接寻址、位于CPU地址空间内的8位寄存器中,从而控制声音发生器58。
在最佳实施例中,该声音发生器的寄存器接口占用CPU地址空间内地址FF10-FF26,具体占用情况如下寄存器NR10-NR15(控制第一声音发生电路位于地址FF10-FF14);
寄存器NR21-NR24(控制第二声音发生电路)位于地址FF16-FF19;
寄存器NR30-NR34(控制第三声音发生电路)位于地址FF1A-FF1E;
寄存器NR41-NR44(控制第四声音发生电路)位于地址FF20-FF23;以及寄存器NR50-NR52(对每一个声音发生电路的输出提供全部的声音控制)位于地址FF24-FF26。
上面提及的有些寄存器只可写而另一些可读/写。CPU24通过直接将控制数据写入适当的声音控制寄存器(下面将对其进行简短描述)便可控制产生声音的各种参数(例如,特定声音发生电路的频率范围参数,波形占空比,声音持续时间,包络线特征、声音频率、特定声音发生电路的多项式计数参数,特定声音到特定输出通道的分配以及声音输出电平)。
图4为图2所示声音发生器方框58的更详细的原理图。在最佳实施例中的声音发生器方框58包括多个声音发生器电路541-544,一个模拟多路转换器方框200,左和右固态音量控制块72L,72R,左、右通道音频放大器60L、60R和立体声/单声道选择电路202。
在最佳实施例中,声音发生器电路541-544在如上所述的CPU24的地址空间内的控制寄存器NR10-NR44的内容的控制下,各自独立地产生声频信号。由CPU24的地址空间内的寄存器NR50-NR52控制模拟多路转换器200以便将每一个声音发生器电路541-544的输出信号发送到左通道音量控制72L和右通道音量控制72R中的一个或两者。如即将要更详细地加以说明的,模拟的多路转换器200在程序控制下对每个声音发生器电路541-544的输出提供独立的多路转换控制。作为一个实例,一个声音发生电路的输出可选至左通道音量控制72L的通路而另一个声音发生电路的输出可选至右通道音量控制72R,而再另一个声音发生电路的输出可能被选至左和右通道的音量控制,还有另一个声音发生电路的输出则可能不选通两个音量控制中的任一个(所有这些指定可在程序控制下改变)。
音量控制72L、72R的输出信号分别由左通道声频放大器60L和右通道声频放大器60R加以放大。然后将声频放大器60的输出依次加到立体声/单声道选择电路202,使之适用于内部单声道扬声器120或通过耳机插座122适用于可选的外部立体声耳机64。
模拟多路转换器200接收声音产生电路541-544的相应输出信号(即,声源信号)。模拟多路转换器200包括用于各自声音发生电路541-544的一对模拟开关。例如,模拟开关681L、681R对应于声音发生电路541;模拟开关682L、682R对应于声音发生电路542;模拟开关683L、683R对应于声音发生电路543;模拟开关684L、684R对应于声音发生电路544。每一对模拟开关中的一个模拟开关的输出(例如,模拟开关681L、682L、683L、684L)通常与左声频总线300连接。将左声频总线300依次与音量控制块72L的输入端连接。类似地,每一对模拟开关中另一个模拟开关的输出(例如,模拟开关681R、682R、683R、684R)则与右声频总线302相连接(即,使得所有这些提及的模拟开关其输出具有公共的连接)。右音频总线302依次与右通道音量控制块72R的输出端相连。固体音量控制块72L、72R的相应输出(即,两个声音信号)分别由左和右通道放大器60L和60R放大并其后作为第一和第二声音输出S01、S02加以输出。在所示实施例中,可将来自放大器60L的输出S01用作左通道声音信号,而将来自放大器60R的输出S02用作右通道声音信号。
图4A为描述图4中所示的示范性寄存器NR50、NR51和NR52的原理框图。寄存器NR50-NR52在最佳实施例中用来控制声音发生电路541-544、模拟多路转换器200和音量控制72L、72R的某些工作参数。尽管在图4中描绘了多个寄存器NR50A-NR50C,但是,NR50A-NR50C实际上包含如图4A所示的单个多位的寄存器(例如,8位),类似地,图4所示多个寄存器NR52A-NR52B实际上包含如图4A所示单个多位数据寄存器NR52。
寄存器NR52A-NR52B(在最佳实施例中包含单个8位可操作地与CPU24相耦合的寄存器)用来控制允许/禁止声音发生电路541-544。如图4A所示,寄存器NR52的最有效位D7可用来允许/禁止所有声音发生电路541-544。如果寄存器NR52的最有效位D7设置为逻辑电平1,那么所有声音发生电路541-544变成可操作的,类似地,如果将逻辑电平“零”值写到寄存器NR52的最有效位D7,则禁止所有声音发生电路541-544。寄存器NR52的最低4位D0-D3,用作各个声音发生电路541-544的声音发生电路的接通标志,并可根据写入这4位D0-D3的逻辑电平值使之能个别地允许或禁止各声音发生电路。
在最佳实施例中,模拟开关681L-684L、681R-684R的状态由寄存器NR51所控制,图4A中还示出了其详细原理图。在最佳实施例中,寄存器NR51也是8位宽度。寄存器NR51的最低4位D0-D3分别对应于模拟开关681L-684L并控制这些模拟开关接通或关闭(即通过或不通过)分别与左声频总线300相应的声音发生电路541-544的输出。同样地,寄存器NR51的最高4位D4-D7分别控制模拟开关681R-684R接通或关闭(以便可控制地让声音发生电路541-544的输出分别送或不送到右声频总线302)。
例如,假定将逻辑电平零值写入寄存器NR51的位D0和D4(例如,它们分别对应于模拟开关681L和681R)。存储在最低位D0的逻辑电平零值控制模拟开关681L关闭-借此有效地将声音发生电路541的输出与左通道固态音量控制块72L的输入断开。同样,寄存器NR51位D4存储的逻辑电平零有效地控制模拟开关681R使声音发生电路541与右通道固态音量控制块72R的输入断开。因此,只要这两个“零”位的值存储在寄存器NR51中,声音发生电路541的输出就既不送到左通道输出端S01,也不送到右通道输出端S02。将逻辑电平1写到寄存器NR51位D0来控制模拟开关681L将声音发生电路541的输出送到左通道输出S01;将逻辑电平1写到寄存器NR51的位D4来控制模拟开关681R将声音发生电路541的输出送到右通道输出S02;将逻辑电平1的值写入位D0和D4,则控制模拟开关681L和681R将声音发生电路541的输出分别送到左和右声音信号输出端S01、S02。
简要地说,最佳实施例中的寄存器NR51存储两个与声音发生电路541-544中每一个相对应的位,这两个位对与声音发生电路连接的模拟开关681进行控制,可选择地将声音发生电路的输出送或不送到输出端S01、S02。如果这两个位均为逻辑电平零,那么声音发生电路的输出不送到声音输出端S01、S02中的任一个。如其中1位为逻辑电平1而另1位为逻辑电平零,那么声音产生电路的输出只送到声音输出端S01、S02中的一个(声音信号输出端S01、S02中的哪一端接收声音发生电路的输出取决于哪一位为逻辑电平1)。另一方面,如果两个位都置为逻辑电平1,则声音信号输出端S01、S02都接收到来自相应声音发生电路的输出信号。
在最佳实施例中(如图4A所示),图4所示寄存器NR50A-NA50C实际上包含单个8位寄存器NR50。寄存器NR50的两个位D3、D7用于接通和断开另一组模拟开关70L、70R,这两个模拟开关的输入与从外部声源得到的信号VIN相连接。例如,在最佳实施例中,可由发声源而不是声音发生电路541-544提供附加声源信号。该外部提供的声源信号作为信号VIN被输入,可分别由模拟开关70L、70R有选择地送到左声频总线300和右声频总线302上。模拟开关70L、70R其开/关状态依次分别由寄存器NR50位D3、D7所选择。
最佳实施例中寄存器NR50的剩余6位用于控制由固态音量控制72L、72R所加的放大/衰减的程度。这样,在示范性实施例中,如图4所示的寄存器NR50B包含寄存器NR50的最低位D0-D2,而图4所示寄存器NR50C包括图4A所示寄存器NR50的最低位D4-D6。通过将2进制数值“000”-“111”设置到这三个位的域,有可能以从最小到最大的8个等级来控制固态音量控制块70L、72R的输出电平。因此,例如,将数值“000”写到最佳实施例中寄存器NR50最低位D0-D2,控制固态控制块72L就给左通道放大器60L的输入端提供最小幅度的电平(如要求,可以为零幅度)。类似地,将数值“111”写到寄存器NR50位D4-D6,则控制右通道固态音量控制块72R使得由右通道声频总线302供给左通道固态音量控制块信号的增强程度为最小,从而提供给右通道声音信号输出端S02最大(最响)信号电平的输出。
现在一起参考图4和图6,作为一个例子,声音发生电路541可用作旋律源(“声音1”),以提供图6所示的第一节或示范性乐曲的第一行。剩余的声音发生电路542-544可用于产生图6所示较下面的三个音乐小节的节奏声音。当然,也可以任何所要求的组合方式来使用声音发生电路541-544,以产生多种旋律(即,对位音)、旋律及和声一起、音乐及声响效果的组合,等等。
在图6所示的乐谱中,标以S01的音乐行对应于左通道出现的声音,而标以S02的音乐行对应于在右通道上出现的声音。图6示出以常规方式描述的音符和休止符的标准乐谱。所示的4小节音乐用作实例(尽管应该知道,本文所述系统可演奏所要求的任何长度的乐曲,其长度仅受限于存储器容量)。
至于图6第一节所示的4小节音乐(“声音1”)在所有4小节期间将模拟开关681L和681R控制为通;以便在所有4小节期间将由声音发生电路541所发生旋律输出信号输出到两个放大器60L、60R。这样,在所有4小节期间,将会把数据值“1”写入寄存器NR51的D0和D4位。
相反,如图6中标有“声音2”的节所示,声音发生电路542的输出则在左和右通道S01、S02之间交替。这样,声音发生电路542的输出在第1小节期间被提供给声音输出端S01而不是声音输出端S02;在第2小节期间提供给两个声音输出端S01、S02,而在第3小节期间只提供给声音输出端S02而不是声音输出端S01,在第4小节期间提供给S01、S02两个输出端。因此,在第1小节,CPU将数据值“1”写入寄存器NR51的位D1并将数值“0”写入寄存器NR51的位D5。在第2小节,将数值“1”写入寄存器NR51的位D1和位D5,将模拟开关682L关闭而将模拟开关682K接通(以便将声音发生电路542的输出供给输出通道S02而不是输出通道S01)。
同样地,如图6所示乐谱的“声音3”这一行指出声音发生电路543的输出在通道S01和S02间交替。即,在第1小节期间,模拟开关683L接通(通过将逻辑电平“1”写入寄存器NR51位D2)而模拟开关683R关闭(通过将逻辑电平“0”的数值写入寄存器NR51位D6)。所以,在第1小节,将声音发生电路543的输出加到声音输出通道S01而不是声音输出通道S02。但在第2小节期间,相反,则分别将数值“0”和“1”写入寄存器NR51的位D2和D6以关闭模拟开关683L并接通模拟开关683R。所以,仅将声音发生电路543的输出提供给声音输出通道S02而不提供给声音输出通道S01。
用类似方法,通过在第小节期间将数值“1”和“0”写到寄存器NR51的位D3、D7、接着在第2小节期间将数值“0”和“1”分别写到寄存器NR51的位D3、D7,以及在第3小节期间将数值“1”和“0”写到位D3、D7,等等,从而可如图6所示最下面一行乐谱那样选通声音发生电路544的输出。
很清楚,寄存器NR50-NR52通常是并行写入的,以使得例如寄存器NR51的所有位D0-D7通常每次重写时,任何通道分配位将会改变。
这样,按照图6所示的示范性音乐由声音发生电路541所产生的旋律声和按照示范音乐由声音发生电路542-544所产生的节奏声音借助于模拟开关681L-684R有选择地接通和断开,由左和右声频总线300、302适当地将这4个声源信号混合并分别提供给固态音量控制72L、72R。这些混合信号的输出电平按照寄存器NR50位D0-D2、D4-D6的内容独立地受控于固态音量控制块72L、72R以使得左、右声频通道的分开的声音输出信号S01和S02(其中组合或合成有旋律和节奏的声音)可从放大器60L、60R加以输出。通过相对于另一音量控制块的放大量,对音量控制块72中的一个放大量加以改变,有可能改变耳机(64)佩戴者所感觉到的空间关系(使得声源似乎以相对于用户的头部的位置而移动)。
图5是作为示范性的声音发生电路541-544其中一个示范性结构的详细原理框图。尽管图5中仅示出一个声音发生电路,但在结构、操作方面,4个声音发生电路541-544可以是彼此类似的,并且无论如何,对其中1个声音发生电路的描述,对该领域一般技术人员,都足以提供关于所有4个电路的细节。因此,本文只需详细描述4个声音发生电路中的一个。在最佳实施例中,事实上声音发生电路541-544并不是彼此相同的,因为其中一些发生电路包括用于产生各种声响效果的增强能力。例如,声音发生电路541可包含扫描振荡器,声音发生电路543可不包含占空比控制,而声音发生电路544可包含多项式计数时钟型的频率选择电路,所有这些皆为该领域技术人员所周知的。
现参考图5,声音发生电路542包括受控于控制寄存器NR21-NR24的各种计数器、除法器和其它元件。简单地说,元件74-94提供用于启动/禁止由D/A变换器96将包络计数器102的内容变换为声音输出信号的变换过程的时钟信号。这样,元件74-94对与声音输出信号、包络计数器102相关的时序参数进行控制,而有关元件98-106控制声音输出信号的幅度。如将要说明的,译码器108用来复位声音发生电路542。
频率为f的基准时钟信号(在最佳实施例中该信号最好由图2所示的受控晶体振荡器24a及相关元件提供)提供给图5所示声音发生电路542的时间基。例如,该时钟频率信号在最佳实施例中可以为4.194,304MHZ。此外,例如,通过对时钟频率f分频而得到附加的固定频率的时钟信号(例如,具有64Hz和256Hz的频率)也可提供给声音发生电路542。
在最佳实施例中,将基准时钟信号f加到除4除法电路74的输入端(例如,可包含构成2位计数器的一对触发器)。除4电路74以众所周知的方式将时钟频率f除以4,并将该所除得的频率信号加到“与”门76的一个输入端。“与”门76的另一输入端与触发器80的Q输出端相连。在最佳实施例中,触发器80用于通过有效地将所除得的时钟频率f选通(通过“与”门76)到频率计数器82的输入端来启动和禁止声音发生电路542。按照寄存器NR24(参见图5b)的最高位D7的值来置位触发器80。这样,当将逻辑电平“1”写入寄存器NR24最高位D7时,触发器80置位,由此使“与”门导通,以使从除法器74输出的除得的时钟频率信号通至频率计数器82的时钟输入端。在最佳实施例中,触发器80响应译码器108的输出而复位,正如即将被说明的。
在最佳实施例中,频率计数器82控制待产生的声频输出信号的频率(音高)。在最佳实施例中,频率计数器82包含一常规结构的可编程分频器。由频率计数器82所执行的分频比率由包含在寄存器NR23和NR24内的频率数据予以确定。特别是,寄存器NR24的最低3位D0-D3包含11位频率数据值的三个最高位,而寄存器NR23的所有8位D0-D7用于该频率数据值的较低8位部分。在所示的示范电路中,存储在寄存器NR23、NR24中的11位频率数据值对频率计数器82进行控制,以产生频率fd的输出信号。
fd=4194304/(4*23(2048-X))其中fd以Hz为单位,X为11位的频率值。该频率数据值X控制由声音发生电路542所产生信号的音高(即,“音程”)。
将频率计数器82的输出加到占空电路88的输入端。占空电路88根据占空比设置寄存器86的内容,对由声音发生电路542所产生的声频输出信号的占空比进行控制。在所示的示范电路中,占空比由寄存器NR21的两个最高位D6-D7予以指定。如众所周知,波形占空比涉及周期波形为通(ON)的时间量相对于周期波形为断(OFF)的时间量。因此,50%占空比(用数值“00”来设置寄存器NR21的最高位D6-D7)意味着周期波形通的时间和断的时间是一样的。在最佳实施例中,将数值“11”写入寄存器NR21最高位D6-D7来选择波形占空比为75%(这样产生的输出波形,其通的时间为断的时间1.5倍)。用类似方式,将数值“01”写入寄存器NR21最高位(D6-D7),便可产生占空比为25%的波形(即,该波形为通的时间是断的时间的一半),而将数据值“01”写入这两个最高位,便可产生占空比12.5%的波形。众所周知,声频信号占空比的改变,改变了该声频信号的音色,由此具有对同一频率信号提供许多不同声音的可能性。
在最佳实施例中,占空电路88为常规电路结构,该电路可改变由频率计数据器82所提供周期信号的占空比,从而提供以上所述4个占空比中的1个。
占空电路88的输出提供给“与”门90的一个输入端,该“与”门在由长度计数器94所产生的长度持续时间选通信号的控制下选通占空电路的输出。长度计数器94根据长度设置寄存器92的内容产生该持续选通信号。在最佳实施例中,长度设置寄存器92实际包含图5B所示寄存器NR21的最低位D0-D5。长度设置寄存器92的内容控制长度计数器94的除数,该计数器起常规可编程除法器作用对256Hz的长度时钟频率信号进行分频。在最佳实施例中,寄存器NR21的音长域D0-D5按照以下关系式对以64音阶的声音发生电路542所产生的声音的持续时间进行控制。
持续时间=(64-T1)*(1/256)秒其中“持续时间”为音乐声音的长度,T1为由寄存器NR21的位D0-D5所指定的值。通过经由“与”门90选通占空电路88的输出,长度计数器94对声音发生电路542产生的声音持续时间加以控制。这样,声音发生电路542可在每一音符结束时自动地“关闭”以节省CPU为在适合时间将声音发生电路关闭所付代价。通过将适合的数值写入长度设置寄存器92,CPU可对声音发生电路542进行控制,以产生例如任何要求音长的音符(例如,1/16音符,1/8音符,1/4音符,半音符或全音符),以及类似地,也可用这种方式对音乐休止符的长度进行设置。
将在“与”门90输出端产生的合成选通信号加到数模(D/A)变换器96的允许输入端。D/A变换器96实际上产生与声音发生电路542的声音输出相对应的模拟输出电平,其产生的时序受控于“与”门90的输出信号(并且取决于以上所讨论的所选频率、占空比和持续时间)。可对某些音符固定由D/A变换器96所产生信号的幅度,但能够自动地增加或减小所述幅度,从而在最佳实施例中产生其它音符或声响。
包络计数器102和相关元件98-108对D/A变换器96的并行数据输入端提供并行数据,以便相对于时间,对由变换器所产生的声音输出信号的幅度“电平”进行自动控制(声音的“包络”涉及包含声音的幅度包络)。
比较慢(例如,64Hz)的包络时钟信号在最佳实施例中加到可编程的1/N除法器100的输入端。由1/N除法器100所提供的除数由包络音程数寄存器98的内容来选择。在最佳实施例中,包络音程数寄存器98包含寄存器NR22的最低3位D0-D2。在最佳实施例中,1/64秒为改变声音包络“幅度”的最快速度。然而,包络音程数寄存器98的内容按照以下关系式选择每一音程声音输出幅度的变化速率。
音程持续时间=N*(1/64)秒其中N为寄存器NR22中位D0-D3中所存储的数值。在最佳实施例中,在这些位中所存储的“000”数值停止了包络计数的操作(以便使D/A变换器96所产生声音输出的幅度保持不变)。
1/N除法器100的输出信号控制包络计数器102递增或递减计数的速率。从包络初始值寄存器104将4位的初始值并行地装入包络计数器102(在最佳实施例中,该初始值寄存器包含寄存器NR22的4个最高位D4-D7)。此外,增/减寄存器106(在最佳实施例中,它包含寄存器NR22的位D3)选择包络计数器102是递增计数还是递减计数(这样提供了两种选择它起始于初始值再递增到最大值的幅度,以及起始于初始值再减小到零的幅度)。在最佳实施例中,增/减寄存器106可控制包络计数器102的计数方向,或者可交替地产生输入信号给D/A变换器96,该输入信号指出D/A变换器如何解释由包络计数器102所加给它的数值(即,减弱或增强)。
这样,包络计数器102从由包络初始值寄存器104提供的初始值开始计数,并以1/N除法器100的输出频率所确定的速率递增计数(或递减)。当包络计数器102计数时,其并行输出值变化,并由于由D/A变换器96将该并行值变换为模拟信号电平,那么由变换器所产生声音输出信号的幅度也同样变化。
译码器108接收由包络初始值寄存器104提供的并行数据和由增/减寄存器106提供的数据。译码器106对该数据译码,并且,当包络初始值为零并指定递减方向时,译码器108将译码过的输出加到触发器80的复位输入端和D/A变换器96。这种复位信号的作用是禁止D/A变换器96的操作(使之不输出声音)以及禁止“与”门76(由此禁止整个声音发生电路542)。
下面联系图7A-9D,描述用于控制示范性声音发生器58的操作的示范性程序控制步和相关数据结构。
现在更具体地参考图9A,用于控制声音发生(此外还有电视游戏的其它方面,如由LCD显示屏14所显示的电视游戏的控制,响应由控制器18所提供的用户输入,等等)的适当程序控制指令310存储在存储卡盒16中的外部只读存储器(ROM)16a中。
此外,在最佳实施例中,ROM16a存储有3个与声音发生相关的数据结构频率数据表312,音长数据表314和乐谱数据表316。简短地说,乐谱数据表316为每个声音发生电路541-544提供音高,音长和图6中所示的“声音方向”(左通道,右通道或两者)。频率数据表312执行存储在乐谱数据表316中的音高信息与需要装入声音发生电路541-544的频率设置寄存器84的数字值之间的映射或变换,以产生由乐谱数据表316所指定的音高。音长数据表314提供乐谱数据表316中所陈述的持续时间信息与需要写入音长设置寄存器92的音长数据之间映射或变换。
图9B为图9A所示的频率数据表312内容的示范性原理框图。在最佳实施例中,由存储在频率数据表312中的4个16进制数值的序列来定义每一个音高。例如,音乐休止符(即、无声音)可用值“0000”表示,C调可用“AB01”表示,高半音C调可用“0193”表示,等等。在最佳实施例中,频率数据表312以半音阶乐谱为序存储这些数值,即起始于音乐休止符,后接C调,通过每半音程递增音高(例如,C,C#,D,Eb,(D#),E,F,等等)。频率数据表312中存储的16进制数据值与这样一些数字值相对应,即当把这些数字值装入和声音发生电路541-544相关的频率数据寄存器时(例如,如前所述,寄存器NR23的位D0-D7和寄存器NR24的位D0-D2)会导致由相关声音发生电路产生与所定义音调高相符的频率。也就是说,例如,当将16进制数值“AB01”写入寄存器NR23,NR24时,声音发生电路542将产生具有频率(音高)C的声音。通过将数字值存储在频率数据表312中,书写程序控制指令310的程序员无需为形成所要求的音高而必须装入声音控制寄存器的具体数字值而担心。很快就会明白,程序员只需指定从基地址FREQD的适当的地址索引,(频率数据表312从基地址开始)来指定所要求的适当音调。然后由频率数据表312提供将该地址型值变换成用于写入例如寄存器NR23和NR24的适当数据的自动变换。
同样地,音长数据表314存储与通常所用的律音持续时间(例如,16分音符或休止符,8分音符或休止符,4分音符或休止符、半音符或休止符,全音符或休止符,带点4分音符或休止符,带点半音符或休止符,等等)。在示出的示范性实施例中,音长数据表314从基地址ONPU开始存储,并且该持续时间数据表的第一个表目存储对应于16分音符音长的16进制值“06”。即,在最佳实施例中,当将值“06”的持续时间装入前面所述寄存器NR21的最低6位时,将会使声音发生电路542以某预定的固定速率产生其长度对应于16分音符的音符或休止符。按预定次序,将不同的常用的音长存储在持续时间数据表314中。因此,程序员无需担心有关获得所需音长而必须写入寄存器NR21(举例来说)的声音长度位D0-D5的具体的值。相反地,他只需指定持续时间数据表314中合适的偏移,便可选出常用音长中他所要用的音长。
图9D是乐谱数据表316的示范性原理图。图9D所示乐谱数据表316对应于图6所示的示范音乐的“声音2”(第二)行。显然,对其它3行所提供的数据最好相似,并且,所有这4行音乐相应的数据基本上并行地从ROM16a中读出以同时产生4行音乐。在最佳实施例中,乐谱数据表316始于基地址BASE,并包括3个由2个16进制数组成的表项,每个表项用于图6中乐谱所表示每一个音符或休止符。第一个2位16进制数据对应于和音符或休止符的持续时间相符合的持续时间数据表314中的偏移。第二个2位16进制数对应于和所要求音高相符合的频率数据表312中的偏移。最后2位16进制数据(在最佳实施例中,由于只要表示4种状态,实际上可以是1个二进制的数值)指定该声音的“方向”(即,左通道、右通道、双通道或无通道)。
这样,例如,图6所示“声音2”音乐行的第1小节的第1音符为4分休止符。因此,乐谱数据表316的第一表项说明音长数据表314中的偏移为“02”,对应于4分音符或休止符。乐谱数据表316的第2表项说明频数据表312的零偏移以指定1个休止符(与音符相反)。第1小节第1音符相应的第3和最后表项是数值“01”,指定该声音仅仅准备送到输出声音通道S01而不准备送到输出声音通道S02。
乐谱数据表316提供与旋律或节奏行音符序列对应的这种数据集序列。从而,例如,乐谱数据表316中存储的下面的3个2位16进制数值对应于图6所示“声音2”行的第1小节的第2音符,即E调的4分音符。该数据集的第1个2位16进制数为“02”,指定4分音符音长,对应于音长数据表314中的偏移。该数据集的第2个2位16进制数指定频率数据表312中的偏移“OA”,相当于E音调。该数据集的最后数值对应于声音方向“01”,指定该音符只准备提供给声音输出通道S01而不准备提供给声音输出通道S02。
显然,从而可用图9D所示形式将整个音乐行进行转换并存储在乐谱数据表316中。要“演奏”由该乐谱所表示的音乐,只需以乐谱数据表316中提出的次序读出数据集,参照音长数据表314和频率数据表312,以便将音长和音高信息映射为待装入适当的声音控制寄存器的相应数值,然后,用实际合成数据装入声音寄存器。音符一旦终止,与音乐序列中下一音符对应的数据集可从乐谱数据表316中读出并再次重复整过程以产生下一音符。该整个过程可连续重复直至到达乐谱数据表316的终止(这时,如果愿意,可再次从起始处读取乐谱数据表316,以导致一遍又一遍乐曲的重复)。
图7A和7B一起为实施在图9A所示的程序控制指令310中的示范性程序控制步骤的原理流程图,这些程序步导致对存储在图9D所示乐谱数据表316中音乐行(例子)的声音控制。显然,图7A-7B所示示范性程序控制步的好几个复制的程序最好同时执行(基本上并行)以通过各个的声音发生电路541-544产生多行音乐。换言之,图7A-7B所示的示范性程序控制步只控制单个声音发生电路(例如,电路542)。应由CPU24执行程序示范性程序步的其它迭代以控制其它声音发生电路(例如,541,543,544)。
一经启动图7A-7B所示的例程,便得到适当乐谱数据表316的基地址(即,起始地址)并将该基地址写入用于指定特定乐谱数据表的存储器指针寄存器(框350)(显然,在程序ROM16a中可存储1个以上的乐谱数据表316以提供可重现的多个不同的可能的乐段或声响)。然后清除音符跟踪计数器CNT(最好是CPU24内的寄存器或RAM中的单元)并对计时器(例如,图2所示计时器24d)初始化(框352)。起始时,可将该计时器的值置为“01”以便能立即递减并执行所示例程的剩余部分。然后递减计时器(框354)并判定该值是否为零(判定框356)。如该计时器大于零,控制返回框354再次递减计时器,并重复执行框354、356直到该计时器的值递减为零。由框354、356构成的循环对当前音符或休止符的持续时间计数,显然,该计时如果需要的话,可以众所周知的方式用硬件计时器24d驱动的中断。
然后通过将基地址加上当前CNT值来访问在乐谱数据表316中所存储的第1个2位16进制数据,访问程序ROM16a从而读出存储在该单元的内容,并将这些内容存储到称作H的暂存单元(框358)。然后,将H的内容与“FF”值比较,以确定是否已到达乐谱数据表316的结束项(判定框360),(在最佳实施例中,可通过将数值“FF”或其它对音长数据表316无效的偏移来标志该表的结束)。假设H的内容为音长数据表314的有效偏移,那么用H作为从该表的基地址ONPU的偏移计算持续时间数据表中的地址,以合成计算出的地址为地址读出音长数据表314内所存储的内容,并将这些内容装入计时器(框362)。这样,便用待产生的下一音符或休止符的音长来初始化该计时器。该检索值也可装入声音控制寄存器的声音长度数据域(例如NR11位D0-D5)以便使CPU24在到达音符结束项时无须关闭声音发生电路。
然后递增计数器CNT的数值(框364)以访问乐谱数据表316中下一个2位的16进制数。访问乐谱数据表中的下一单元,(例如,根据基地址和CNT之和计算一地址),读出其内容并将其存储到暂时保存单元Q中(框366)。使用现在存储在暂时保存单元Q的频率数据表312的偏移,用来选址频率数据表312(框368,370)。在最佳实施例中,这时需要读取频率数据表312的两个连续单元,以检索到足以说明存储在例如NR13-NR14中的11位频率数据的信息。从频率数据表312中检索到这些值并将其存储在暂时存储单元X、Y(框368,370),然后对暂存单元X、Y的内容进行测试以判定是否全为零,该全零指出当前待产生的声音为休止符而非音符(判定框372)。如果当前声音为休止符,那么便清除包络初始值寄存器和相应声音发生电路(例如542)的增/减寄存器104、106以禁止声音发生电路产生声音(框374)。另一方面,如果与某音高对应的检索值取代休止符(判定框372的“N”出口),那么便用暂存单元X、Y中存储的值来设置频率设置寄存器84(框376),以确定待产生音符的音高。
然后递增CNT计数器(框378),读出存储在乐谱数据表316中相对应“声音方向”的第3个值(框380)。然后对该检索到的数据进行测试,判定它是否对应于新的输出方向数据(判定框382)。在最佳实施例中,虽然对由乐谱数据表316所定义的所有的每一个音符和休止符清楚地说明了图9D所示的左或右“声音方向”数据,但还是希望(例如,为节省存储器的缘故)只是在与特定声音发生电路对应的声音方向相对于该序列前面音符有所变化时才说明声音方向数据。这样,在最佳实施例中,由于在乐谱数据表316中存储的有些数据集只有2个2位16进制数而不是3个(如果声音方向和上一个所演奏音符相同,则省略该声音方向数据)。图7B所示的判定框382判定是否已读出新的声音方向数据,如已读出,按照由框380所得到的值来设置适当声音控制寄存器的适当位(例如,寄存器NR51位D1、D5),(框384)并递增计数器CNT(框386)以使之指向在乐谱数据表316中所存储的下一数据集的起始处。另一方面,如果由框380读到的值不是新的声音方向数据,那么框386不执行对计数器CNT的递增,并如图7A所示控制返回到框354、356。
一旦控制返回到框354、356,递减计时器对当前音符或休止符计时。一旦该持续时间过去,再次对下一待产生的音符或休止符重复框358-386的处理。
图8是图4所示立体声/单声道选择电路202的示意性原理图。选择电路202接收来自放大器60L的左通道声音信号S01和来自放大器60R的右通道声音信号S02,将适当的信号发送给扬声器120或给立体声耳机64。尤其是,如果立体声耳机64插头没有与耳机插座122连接,那么,立体声/单声道选择电路202将左、右通道的声音信号S01、S02混在一起以提供单声道信号,并将该单声道信号加至扬声器120。另一方面,如果立体声耳机64与耳机插座122相连,那么立体声/单声道选择电路202将左通道声音信号S01耦合到耳机的左耳换能器、并把右通道声音信号S02耦合到耳机的右耳换能器。
在最佳实施例中,如图4所示的放大器60L的输出通过串联电阻112L耦合到放大器114L的输入端,类似地,将图4所示的放大器60R的输出通过串联电阻112R耦合到放大器114R的输入端。电阻116L、116R串联跨接在放大器114L、114R的输入端。连接电阻116L、116R的结点与单声道放大器118的输入端耦合。电阻116L、116R的作用是将S01和S02信号混合在一起并将导出的混合(单声道)信号提供给放大器118。放大器118驱动扬声器120。
耳机插座122包括左通道声频触点122L、右通道声频触点122R和一对开关触点122P。与耳机124耦合的耳机插头124预定由耳机插座122接受和匹配。耳机插座122例如可以是与作为插入式配合件的耳机插头124相配合的凹形配合件。这样,耳机插头124便可插入耳机插座122以便将耳机64与放大器114L、114R的输出端相连接,并可在以后从该插座上移去该插头从而使耳机与放大器断开。例如,有时用户可能希望用耳机64收听由声音发生框58所产生的声音(这时,耳机插头124可插入座122)。在另一些时候,用户可能不希望使用耳机而将耳机插头124从耳机插座122拔出(以便用扬声器120而不是用耳机64来收听声音)。
耳机插头124包括左通道触点124L和右通道触点124R,当插头与插座配合时,右通道触点124L与耳机插头的左通道声频触点112L形成电接触,同时,右通道触点124R与耳机插头左通道声频触点112R形成电接触。接地部分124G最好与地相接。插头的左通道触点124L通过左通道导线126L连接到耳机64的左通道换能器,而插头右通道触点124R通过右通道导线126R连接到耳机64的右通道换能器。
每当将耳机插头124插入耳机插座124时,触点122P便相互接触形成地与反向放大器130和非反相放大器132的输入端之间的电连接。该地连接使得反相放大器130产生逻辑电平“1”的信号,使用该信号允许放大器114L、114R工作。该接地连接也使得非反相放大器132产生逻辑电平“0”的信号用来禁止放大器118工作。在这种状态下,由放大器114L、114R将立体声信号通过触点122L、122R和124L、124R供给耳机64并禁止扬声器120。
另一方面,一旦耳机插头124与耳机插座122断连,触点112P不再彼此相连。与电源电动势相连的上拉电阻128将反向放大器130的输入和非反相放大器132的输入上拉到逻辑电平“1”。该逻辑电平的高电平使得反向放大器130交逻辑电平“0”信号加到放大器114R、114L(由此来禁止这两个放大器工作)并使得非反向放大器132将逻辑电平“1”信号加到放大器118(由此允许该放大器工作)。在这种情况下,由放大器118合成(混合)出单声道信号并加到扬声器120。由于耳机未与插座相连、放大器114L、114R没有将信号加到耳机插座触点112L、112R。
尽管结合目前认为是最实用和最佳的实施例描述了本发明,但可以理解,本发明不局限于所公开的实施例,而相反,本发明旨在覆盖包含在所附权利要求的精神和范围内的各种变型及等价结构。
权利要求
1.一种能够可装/可卸地插入游戏机主机的存储器卡盒,所述类型的游戏机包含按照由该存储器卡盒提供的数据产生声源信号的声源信号发生装置,第一和第二声音信号输出部分,开关装置,其输入端连接到所述声源信号发生装置,其输出端连接到所述第一和第二声音信号输出部分,所述开关装置用于有选择地将所述声源信号发生装置的输出通过其开关操作输出到所述第一和第二声音信号输出部分的至少一个,所述存储器卡盒包含用于存储与音符或休止符序列相关的数据、(和)与在所述序列中每一个所述音符相对应的音高相关数据及左或右数据用以表示音乐效果序列的第一存储装置,以及用于存储以预定时序从所述第一存储装置中读出所述数据的程序控制指令的第二存储装置,从而按照从所述第一存储装置读出的数据将所述音长相关数据和所述音高相关数据以及所述左或右数据供给所述游戏机主机,并按照所述音长相关数据和所述音高相关数据控制所述游戏主机的声音信号发生装置,而按照从所述第一存储装置读出的所述左或右数据控制所述开关装置。
2.根据权利要求1的存储器卡盒,其特征在于所述第一存储装置包括用于存储音长相关数据表的第一表存储装置和用于存储音高相关数据表的第二表存储装置,所述第一表存储装置用于存储代表多个可用音长的多个音长相关数据,所述第二表存储装置用于存储代表多个可用音高的多个音高相关数据,所述第一存储装置还包括用于存储代表所述音乐效果序列的乐谱数据表的乐谱数据表存储装置,所述乐谱数据表包括所述音长相关数据表中的偏移地址和所述音高相关数据表中的偏移地址以及所述左或右数据,从而按照所述程序控制指令读出所述音长相关数据、(和)所述音高相关数据及所述左或右数据。
3.一种能够可装/可卸地与这种类型的游戏机主机相耦合的存储器卡盒,这种类型的游戏机主机包含有用于根据由所述存储器卡盒提供的数据产生声源信号的声源信号发生装置,所述声源信号发生装置有一个输出,以及与所述声源信号发生装置输出相连的开关装置输入端,并且,所述声源信号发生装置装有与其第一和第二声音信号输出相连的输出端,所述开关装置用于将所述声音信号发生装置的输出通过其开关操作有选择地耦合到所述第一和第二声音信号的输出,而所述存储器卡盒的特征在于包含用于存储音长相关数据,音高相关数据和表示立体声音乐效果序列的通道选择数据,以及用以存储以预定时序从所述第一存储装置中读出所述数据的程序控制指令的第二存储装置,借此,按照从所述第一存储装置中读出的数据形成所述音长相关数据,所述音高相关数据和所述通道选择数据,而所述游戏机主机声音发生装置受控于所述音长相关数据和所述音高相关数据,并按所述通道选择数据对所述开关装置进行控制。
4.根据权利要求3的存储器卡盒,其特征在于所述第一存储装置包括用于存储音长相关数据据表的音长存储装置以及用于存储音高相关数据表的音高存储装置,所述音长存储装置用于预先存储多个表示可用音长的音长相关数据,所述音高存储装置用于预先存储表示多个可用音高的多个音高相关数据,以及所述第一存储装置还包括用于存储表示所述立体声效果序列的乐谱数据表的乐谱存储装置,所述乐谱存储装置用于存储所述音长相关数据表和所音程相关数据和所述通道选择数据,因此,可按所述程序控制指令读出所述音长相关数据、所述音高相关数据和所述通道选择数据。
5.在包含主机型电子游戏装置中,所述主机包含与控制二维显示及由用户可操纵的输入装置接收输入相关联的数字处理器,所述主机可拆卸地与可替换的存储器卡盒相耦合,所述存储器卡盒给所述数字处理器提供程序控制指令,所述数字处理器响应所述的接收到的输入和所述程序控制指令在所述二维显示器上至少部分地形成变化的游戏显示,在该电子游戏装置中所述存储器卡盒的特征在于包含用于存储表示声音特性的第一数据和声音方向数据并将所述第一数据和声音方向数据供给所述数字处理器的装置,所述声音方向数据用于选择第一声频通道输出和第二声频通道输出中的任一个,以及用于响应所述供给的第一数据与所述数字处理器操作的耦合以控制所述处理器对声频信号的产生加控制、以及响应所述声音方向数据与所述数字处理器操作的耦合以控制所述处理器对将所述声频信号加到所述第一声频通道输出和/或所述第二声频输出加以控制的装置。
6.根据权利要求5的存储器卡盒,其特征在于所述处理器控制装置包含存储预定程序控制指令的装置。
7.一种能够可装/可卸地装到游戏机主机的存储器卡盒,所述类型的游戏机包括按照程序数据产生声源信号的声源信号发生装置,用于输出左通道声音的第一声音输出部分,用于输出右通道声音的第二声音输出部分,具有一个输入端的第一开关装置,所述第一形状装置响应第一开关信号而被接通并将来自所述声源信号发生装置的声源信号加到所述第一声音输出部分,其一输出端连接到所述声源信号发生装置的第二开关装置,所述第二开关装置响应第二开关信号而被接通并加来自所述声源信号发生装置的信号加到所述第二声音输出部分,所述存储器卡盒包含有用于存储乐谱表的第一存储装置,所述乐谱表示至少包括间符或休止符序列音长相关数据,对应于所述序列中每一个所述音符的音高相关数据,以及用于对每一个所述音符控制所述第一和第二开关装置的所述第一和第二开关信号以表示音乐效果序列,以及用于存储以预定时序从所述第一存储装置中读出所述数据和所述第一及第二开关信号的程序控制指令的第二存储装置,从而将根据所述程序控制指令从所述第一存储装置读出的所述第一和第二开关信号加到所述第一和第二开关装置,从而按照由所述程序控制指令从所述第一存储装置读出的所述音长相关数据及所述音高相关数据由所述声源发生装置产生所述声源信号,而该声音至少是从所述第一和第二声音输出部分中的一个产生的。
8.如权利要求7所述的盒储器卡盒,其中,所述游戏机包括多个所述声源信号发生装置,与所述多个的所述声源信号发生装置相对应的多个所述第一开关装置,与所述多个的所述声源信号发生装置相对应的多个所述第一开关装置,用于合成所述多个的第一开关装置的输出以加到所述第一声音输出部分的第一连接装置,用于合成所述多个的所述第二开关装置的输出以加到所述第二声音输出部分的第二连接装置,所述第一存储装置的所述乐谱表包括所述多个的所述声源信号发生装置的所述音长相关数据、所述音高相关数据及所述第一和第二开关信号。
9.如权利要求8所述的盒储器卡盒,其特征在于,所述游戏机包括用于控制所述多个所述声源信号发生装置的每一个的第一寄存器,用于控制所述多个的所述第一和第二开关装置的第二寄存器,所述第一和第二寄存器由从所述第一存储装置读出的所述乐谱表设置的。
10.一种能耦合到电子游戏机的存储器卡盒,其特征在于,所述游戏机包括产生至少一个程序控制的音频信号的声源,用于输出左通道声音的左通道声音输出端,用于输出右通道声音的右通道声音输出端,耦合在所述声源和所述左通道声信输出端之间用于根据第一开关信号有选择地将来自所述声源的音频信号耦合到所述左通道输出端的第一开关,以及耦合在所述声源和所述右通道输出端之间的第二开关,所述第二开关根据第二开关信号将来自所述声源的音频信号耦合到所述右通道输出端,所述存储器卡盒包含存储代表音乐效果序列的乐谱表的第一存储器存贮区,所述乐谱表包括指出音符或休止符序列音长的数据,指示所述序列中每一音符控制所述第一和第二开关的第一和第二开关信号,用于存储程序控制指令的第二存储器存贮区,该指令控制从所述第一存贮区顺序读出指示所述音符序列及所述第一和第二开关信号,因此应用根据所述程序控制指令从所述第一存贮区读出的所述第一和第二开关信号控制所述第一和第二开关,应用根据所述程序控制指令从所述第一存贮区读出的所述音长指示数据和所述音高指示数据来控制所述声源,响应由所述表提供的数据,在所述第一和第二声音输出端产生表示所述音符序列的伪立体声音频信号。
全文摘要
能产生伪立体声的电子游戏装置中,受控于微计算机产生声频信号的多个声音发生电路,其输出可彼此独立地送到两个独立声道输出中的任一个或两者,从而可用立体声耳机收听所产生的伪立体声,当未接立体声耳机时,选择电路自动将两声道输出混合以单声道形式提供给内部扬声器。微计算机根据存储于卡盒的音高,音长和乐谱数据结构产生声音和音乐,乐谱数据结构以地址偏移形式指定音高、音长和其它特征。
文档编号H04R5/00GK1080878SQ9310437
公开日1994年1月19日 申请日期1993年4月24日 优先权日1989年1月10日
发明者冈田智, 田中宏和 申请人:任天堂株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1