(57)【特許請求の範囲】
【請求項１】
指定されたアドレスからアドレスをインクリメント又はデクリメントしてアドレスを発生するアドレス発生回路と、このアドレス発生回路からのアドレスで圧縮データを記録媒体から読み込み、そのデータをデコードして伸張したデータを出力するデコーダと、前記アドレス発生回路から出力されるアドレスと外部のアドレスバスから出力されるアドレスのどちらかを記録媒体のアドレスへ出力するアドレス切り替え回路と、記録媒体からの出力データと、前記デコーダ回路の出力データのどちらかをデータバスへ出力するデータ切り替え回路と、を備えたデコーダ回路であって、前記デコーダ回路は、入力されたデータをそのまま出力するスルーモードと入力された圧縮データをデコードして出力するデコードモードとが切り替え可能に構成され、外部のアドレスが記録媒体のアドレスとして出力されると、前記デコーダ回路はスルーモードに切り替わり、記録媒体からのデータが外部のデータバスへ出力され、前記アドレス発生回路から出力されるアドレスを記録媒体のアドレスとして出力されると、前記デコーダ回路はデコードモードに切り替わり、記録媒体からの圧縮データを読み込みデコードしたデータが外部のデータバスへ出力されることを特徴とするデータのデコーダ回路。
【請求項２】
前記デコーダ回路は、デコーダ回路から読み出すデータ量が予め設定され、前記デコーダ回路から設定された量のデータを読み出すとデコーダ回路のモードがデコードモードからスルーモードへ切り替わることを特徴とする請求項１に記載のデータのデコーダ回路。
【請求項３】
内部ＲＡＭメモリと、前記ＲＡＭメモリのアドレスマップを任意に設定できるアドレスマッピング回路と、前記ＲＡＭメモリの出力データと前記記憶媒体からの出力データとデコーダ回路からの出力データを切り替えて出力するデータ切り替え回路を備えたことを特徴とする請求項１に記載のデータのデコーダ回路。
【請求項４】
前記デコーダ回路に、圧縮データのスタートアドレスが予め設定され、その設定されたアドレスの時のみデコードデータを出力すると共に記録媒体から圧縮データを読み込み、それ以外のアドレスでのアクセスの時にはスルーモードでのアクセスとなることを特徴とする請求項１に記載のデータのデコーダ回路。
【請求項５】
前記記録媒体に圧縮されていないデータと圧縮されたデータから構成されているデータを格納し、圧縮データのスタートアドレスが予め設定され、その設定されたアドレスがアクセスされたときから前記の圧縮データを読み込みデコード動作を開始し、最初のサイクルもしくは最初からの複数のデータのリードサイクルでは圧縮されていないデータを出力し、適宜なリードサイクル後には圧縮されたデータをデコードしてデータを出力することを特徴とする請求項１に記載のデータのデコーダ回路。
【請求項６】
指定されたアドレスからアドレスをインクリメント又はデクリメントしてアドレスを発生するアドレス発生回路と、このアドレス発生回路からのアドレスで圧縮データを記録媒体から読み込み、そのデータをデコードして伸張したデータを出力するデコーダと、前記アドレス発生回路から出力されるアドレスと外部のアドレスバスから出力されるアドレスのどちらかを記録媒体のアドレスへ出力するアドレス切り替え回路と、記録媒体からの出力データと、前記デコーダ回路の出力データのどちらかをデータバスへ出力するデータ切り替え回路と、前記外部のアドレスバスの動作状態を検出する検出回路と、を備えたデコーダ回路であって、前記デコーダ回路は、ＤＭＡ動作時に伸張動作を行うことが設定され、前記検出回路が伸張動作のＤＭＡアドレス状態を検出すると、前記アドレス発生回路から出力されるアドレスを記録媒体のアドレスとして出力され、記録媒体からの圧縮データをデコードしたデータが外部のデータバスへ出力されるとともに、前記検出回路が伸張動作のＤＭＡアドレス状態以外の状態を検出すると、外部のアドレスが記録媒体のアドレスとして出力され、記録媒体からのデータがそのまま外部のデータバスへ出力されることを特徴とするデータのデコーダ回路。
【請求項７】
外部から与えられるデコーダ回路へのデコードモードの動作指示に対応して、前記検出回路が外部のアドレスバスの動作状態からデコーダ回路に接続された記録媒体以外のアドレスへのアクセスサイクルを検出すると、前記デコーダ回路は接続された記録媒体から圧縮データを読み込みデコードを開始して、前記検出回路が外部のアドレスバスの動作状態からＤＭＡ動作への移行を検出するとともに、ＤＭＡアクセスサイクル時にデコードデータを出力することを特徴とする請求項６に記載のデータのデコーダ回路。
【請求項８】
指定されたアドレスからアドレスをインクリメント又はデクリメントしてアドレスを発生するアドレス発生回路と、このアドレス発生回路からのアドレスで圧縮データを記録媒体から読み込み、そのデータをデコードして伸張したデータを出力するデコーダと、前記アドレス発生回路から出力されるアドレスと外部のアドレスバスから出力されるアドレスのどちらかを記録媒体のアドレスへ出力するアドレス切り替え回路と、記録媒体からの出力データと、前記デコーダ回路の出力データのどちらかをデータバスへ出力するデータ切り替え回路と、前記外部のアドレスバスの動作状態を検出する検出回路と、を備えたデコーダ回路であって、前記デコーダ回路は、入力されたデータをそのまま出力するスルーモードと入力された圧縮データをデコードして出力するデコードモードとが切り替え可能に構成され、前記デコーダ回路に与えられる外部からのデコードモードに対応し、前記検出回路が前記外部のアドレスバスの状態からデコーダ回路に接続された記録媒体以外の予め設定されたアドレスのアクセスサイクルを検出した時、記録媒体から圧縮データを読み込みデコードを開始して予めデコードデータを読み込むアドレスを設定し、その設定したアドレスの時のみデコードデータを出力し、それ以外のアドレスでのアクセスのときにはスルーモードでのアクセスとなることを特徴とするデータのデコーダ回路。
【請求項９】
圧縮データを読み込むためのアドレスを設定する複数のレジスタと、前記複数のレジスタに対応した動作する優先順位が予め設定されたデコード開始をコントロールするコントロールレジスタと、前記複数のレジスタに対応したそれぞれの転送量を設定する複数のレジスタと、指定されたアドレスからアドレスをインクリメントまたはディクリメントしてアドレスを発生する第１及び第２のアドレス発生回路と、第１または第２のアドレス発生回路からのアドレスに従い記録媒体から読み出された圧縮データを格納する第１及び第２の記憶手段と、この記憶手段に格納された圧縮データを伸張するデコーダと、前記アドレス発生回路から出力されるアドレスと外部のアドレスバスから出力されるアドレスのどちらかを記録媒体のアドレスへ出力するアドレス切り替え回路と、記録媒体からの出力データと、前記デコーダ回路の出力データのどちらかをデータバスへ出力するデータ切り替え回路と、を備えたデコーダ回路であって、前記デコーダ回路は、入力されたデータをそのまま出力するスルーモードと入力された圧縮データをデコードして出力するデコードモードとが切り替え可能に構成され、外部のアドレスが記録媒体のアドレスとして出力されると、前記デコーダ回路はスルーモードに切り替わり、記録媒体からのデータが外部のデータバスへ出力され、前記アドレス発生回路から出力されるアドレスを記録媒体のアドレスとして出力されると、前記デコーダ回路はデコードモードに切り替わりるとともに、前記記録媒体からの圧縮データを読み込みデコードしたデータが外部のデータバスへ出力される前記コントロールレジスタに設定された複数のデコード動作の指示に対して、優先順位の高いアドレスから第１のアドレス発生回路でアドレスを発生し、そのアドレスで圧縮データを記録媒体から読み込み、前記第１の記憶手段に書き込み、書き込まれたデータは前記デコーダでデコードされ、前記第１の記憶手段がＦＵＬＬ状態になったときには、次の優先順位のアドレスから第２のアドレス発生回路でアドレスを発生し、そのアドレスで圧縮データを記録媒体から読み込み、前記第２の記憶手段に書き込むことを行い、最初に指定されたアドレスのデータを転送量設定レジスタに設定された分を出力し終えた後、次の伸張動作では前記デコーダは前記第２の記憶手段メモリのデータを読み込みデータのデコードを開始し、第２のアドレス発生回路は前に引き続きアドレスを発生し、そのアドレスで圧縮データを記録媒体から読み込み、前記第２の記憶手段に書き込むことを行い、前記第２の記憶手段がＦＵＬＬ状態になったときには、次の優先順位のアドレスから第１のアドレス発生回路でアドレスを発生し、そのアドレスで圧縮データを記録媒体から読み込み、前記第１の記憶手段に書き込むことを特徴とするデータのデコーダ回路。
【請求項１０】
前記第１及び第２の記憶手段をＦＩＦＯメモリで構成したことを特徴とする請求項９に記載のデータデコーダ回路。
【請求項１１】
前記第１の記憶手段をＦＩＦＯメモリで、第２の記憶手段をレジスタで構成したことを特徴とする請求項９に記載のデータデコーダ回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、データ圧縮された画像データなどを伸張するデコーダ回路に関し、特に、マイクロコンピュータを利用したゲーム機などの圧縮データのデコーダ回路に関するものである。
【０００２】
【従来の技術】
従来のマイクロコンピュータを用いたゲーム機の概略構成を図１９に示す。この図において、１はゲーム機本体、２はプログラムカートリッジ、３はＣＲＴディスプレイである。
【０００３】
ゲーム機本体１は、マイクロコンピュータにより構成されているもので、１０はそのＣＰＵ、１１はダイレクト・メモリ・アクセスコントローラ（ＤＭＡＣ）、１２はワークエリア内のランダム・アクセス・メモリ（ＲＡＭ）、１３はピクチャ・プロセシング・ユニット（ＰＰＵ）、１４はビデオＲＡＭ（ＶＲＡＭ）である。
【０００４】
そして、システムバス１５にＣＰＵ１０、ＤＭＡコントローラ１１、ＲＡＭ１２およびＰＰＵ１３が接続される。
【０００５】
また、ＶＲＡＭ１４は、例えば、２フレーム分（２画面分）の画像データが、ＰＰＵ１３によりＣＲＴディスプレイ３の垂直及び水平走査に同期して読み出され、ＣＲＴディスプレイ３により画像として表示されると共に、この表示が行われている間に、他方の画面エリアに次に表示される画像データが書き込まれる。
【０００６】
プログラムカートリッジ２は、ゲーム機の使用時、ゲーム機本体１のスロット（図示せず）に差し込まれて使用され、このカートリッジ２内には、ＲＯＭ２０とＲＡＭ２１が備えられている。ＲＯＭ２０には、ゲームのプログラムなどが書き込まれ、またＲＡＭ２１には、例えば、ゲームの途中経過やゲームスコアの結果を格納するために用いられ、バッテリ２２にてバックアップされている。
【０００７】
ところで、昨今のゲーム機においては、動画などの画像データをＣＲＴに表示するなどの要求が多くなり、ＲＯＭに格納するデータ量が膨大な量となっている。このようなデータ量の多い画像データをそのまま格納するためには、大容量のＲＯＭを必要とする。そのため、画像データなどを圧縮してＲＯＭに格納するなどの手段が用いられている。
【０００８】
上記した従来のマイクロコンピュータを用いたゲーム機において、画像データなどのデータを圧縮したデータのデコードは、ゲーム機本体１のＣＰＵ１０を用いて行われる。すなわち、プログラムカートリッジ２のＲＯＭ２０からＤＭＡコントローラ１１を用いてデータをワークＲＡＭ１２上に転送する。そして、ワークＲＡＭ１２上でＣＰＵ１０によりデコードしてそれをＰＰＵ１３に送り、ＣＲＴ３への表示を行っていった。
【０００９】
ところが、この方法では、圧縮データをデコードしてＰＰＵ１３に送るまでには、データ転送時間とデコード時間がかかるために表示が遅れるなどの問題がある。
【００１０】
一方、動画の画像データをデータ圧縮してＣＤ−ＲＯＭに記録しておき、表示時には、そのデータ圧縮された画像データを再生すると共に、元の画像データにデコードしてからディスプレイに供給するようにしたデコーダ回路が特開平４−２８６２８９号に開示されている。
【００１１】
このデコーダ回路は、圧縮されたデータが記録されているＣＤ−ＲＯＭからデータが供給されるワークＲＡＭと、このワークＲＡＭのデータがＤＭＡ転送されてそのデータに対して第１のデコードを行うＤＳＰと、この第１のデコードの行われたデータがＤＭＡ転送されるワークＲＡＭと、このワークＲＡＭのデータがＤＭＡ転送されてそのデータに対して第２次のデコードを行うＰＰＵと、ＤＭＡ転送を行うＤＭＡコントローラと、を備える。そして、ＰＰＵから圧縮されたデータを伸張したデータが取り出される。
【００１２】
しかしながら、このデコーダ回路では、ＣＤ−ＲＯＭから読み出されたデータを一旦ワークＲＡＭにＤＭＡ転送し、このワークＲＡＭに転送されたデータを更にＤＳＰにＤＭＡ転送する。そして、このＤＳＰでデコードし、このデコードしたデータをまたワークＲＡＭにＤＭＡ転送するように構成されており、ＤＭＡ転送を複数回行わなければならず、非常に複雑な制御を必要とするなどの難点がある。
【００１３】
【発明が解決しようとする課題】
上述したように、図１９に示す従来のゲーム機において、圧縮データをデコードしようとする場合、ＣＰＵでデコードした後、データをＰＰＵに転送するために、データ転送時間とデコード時間を必要とし、時間がかかるという問題がある。
【００１４】
また、上記の公報に記載されたデコーダ回路のように、ＤＳＰでデコードを行うものでは制御が複雑になるなどの難点がある。
【００１５】
この発明は、上述した従来の問題点を解決するためになされたものにして、デコードする時間を見かけ上なくし、画像の表示などに遅延を来すことなくスムーズな画像表示が行える装置を提供することを目的とする。
【００１６】
また、この発明は、プログラムカートリッジから直接デコードしたデータをアクセスすることができるデコーダ回路を提供することを目的とする。
【００１７】
【課題を解決するための手段】
この発明のデータのデコーダ回路は、指定されたアドレスからアドレスをインクリメント又はデクリメントしてアドレスを発生するアドレス発生回路と、このアドレス発生回路からのアドレスで圧縮データを記録媒体から読み込み、そのデータをデコードして伸張したデータを出力するデコーダ回路と、前記アドレス発生回路から出力されるアドレスと外部のアドレスバスから出力されるアドレスのどちらかを記録媒体のアドレスへ出力するアドレス切り替え回路と、記録媒体からの出力データと、前記デコーダ回路の出力データのどちらかをデータバスへ出力するデータ切り替え回路と、を備え、前記デコーダ回路は、入力されたデータをそのまま出力するスルーモードと入力された圧縮データをデコードして出力するデコードモードとが切り替え可能に構成され、外部のアドレスが記録媒体のアドレスとして出力されると、前記デコーダ回路はスルーモードに切り替わり、記録媒体からのデータが外部のデータバスへ出力され、前記アドレス発生回路から出力されるアドレスを記録媒体のアドレスとして出力されると、前記デコーダ回路はデコードモードに切り替わり、記録媒体からの圧縮データを読み込みデコードしたデータが外部のデータバスへ出力されることを特徴とする。
【００１９】
また、前記デコーダ回路は、デコーダ回路から読み出すデータ量が予め設定され、前記デコーダ回路から設定された量のデータを読み出すとデコーダ回路のモードがデコードモードからスルーモードへ切り替わるように構成すると良い。
【００２０】
更に、内部ＲＡＭメモリと、前記ＲＡＭメモリのアドレスマップを任意に設定できるアドレスマッピング回路と、前記ＲＡＭメモリの出力データと前記記憶媒体からの出力データとデコーダ回路からの出力データを切り替えて出力するデータ切り替え回路を備えると良い。
【００２１】
前記デコーダ回路に、圧縮データのスタートアドレスが予め設定され、その設定されたアドレスの時のみデコードデータを出力すると共に記録媒体から圧縮データを読み込み、それ以外のアドレスでのアクセスの時にはスルーモードでのアクセスとなるように構成すると良い。
【００２２】
前記記録媒体に圧縮されていないデータと圧縮されたデータから構成されているデータを格納し、圧縮データのスタートアドレスが予め設定され、その設定されたアドレスがアクセスされたときから前記の圧縮データを読み込みデコード動作を開始し、最初のサイクルもしくは最初からの複数のデータのリードサイクルでは圧縮されていないデータを出力し、適宜なリードサイクル後には圧縮されたデータをデコードしてデータを出力するように構成することもできる。
【００２３】
この発明のデータのデコード回路は、指定されたアドレスからアドレスをインクリメント又はデクリメントしてアドレスを発生するアドレス発生回路と、このアドレス発生回路からのアドレスで圧縮データを記録媒体から読み込み、そのデータをデコードして伸張したデータを出力するデコーダと、前記アドレス発生回路から出力されるアドレスと外部のアドレスバスから出力されるアドレスのどちらかを記録媒体のアドレスへ出力するアドレス切り替え回路と、記録媒体からの出力データと、前記デコーダ回路の出力データのどちらかをデータバスへ出力するデータ切り替え回路と、前記外部のアドレスバスの動作状態を検出する検出回路と、を備えたデコーダ回路であって、前記デコーダ回路は、ＤＭＡ動作時に伸張動作を行うことが設定され、前記検出回路が伸張動作のＤＭＡアドレス状態を検出すると、前記アドレス発生回路から出力されるアドレスを記録媒体のアドレスとして出力され、記録媒体からの圧縮データをデコードしたデータが外部のデータバスへ出力されるとともに、前記検出回路が伸張動作のＤＭＡアドレス状態以外の状態を検出すると、外部のアドレスが記録媒体のアドレスとして出力され、記録媒体からのデータがそのまま外部のデータバスへ出力されることを特徴とする。
【００２４】
また、この発明は、外部から与えられるデコーダ回路へのデコードモードの動作指示に対応して、前記検出回路が外部のアドレスバスの動作状態からデコーダ回路に接続された記録媒体以外のアドレスへのアクセスサイクルを検出すると、前記デコーダ回路は接続された記録媒体から圧縮データを読み込みデコードを開始して、前記検出回路が外部のアドレスバスの動作状態からＤＭＡ動作への移行を検出するとともに、ＤＭＡアクセスサイクル時にデコードデータを出力するように構成できる。
【００２５】
さらに、この発明のデータのデコード回路は、指定されたアドレスからアドレスをインクリメント又はデクリメントしてアドレスを発生するアドレス発生回路と、このアドレス発生回路からのアドレスで圧縮データを記録媒体から読み込み、そのデータをデコードして伸張したデータを出力するデコーダと、前記アドレス発生回路から出力されるアドレスと外部のアドレスバスから出力されるアドレスのどちらかを記録媒体のアドレスへ出力するアドレス切り替え回路と、記録媒体からの出力データと、前記デコーダ回路の出力データのどちらかをデータバスへ出力するデータ切り替え回路と、前記外部のアドレスバスの動作状態を検出する検出回路と、を備えたデコーダ回路であって、前記デコーダ回路は、入力されたデータをそのまま出力するスルーモードと入力された圧縮データをデコードして出力するデコードモードとが切り替え可能に構成され、前記デコーダ回路に与えられる外部からのデコードモードに対応し、前記検出回路が前記外部のアドレスバスの状態からデコーダ回路に接続された記録媒体以外の予め設定されたアドレスのアクセスサイクルを検出した時、記録媒体から圧縮データを読み込みデコードを開始して予めデコードデータを読み込むアドレスを設定し、その設定したアドレスの時のみデコードデータを出力し、それ以外のアドレスでのアクセスのときにはスルーモードでのアクセスとなることを特徴とする。
【００２６】
また、この発明のデータのデコード回路は、圧縮データを読み込むためのアドレスを設定する複数のレジスタと、前記複数のレジスタに対応した動作する優先順位が予め設定されたデコード開始をコントロールするコントロールレジスタと、前記複数のレジスタに対応したそれぞれの転送量を設定する複数のレジスタと、指定されたアドレスからアドレスをインクリメントまたはディクリメントしてアドレスを発生する第１及び第２のアドレス発生回路と、第１または第２のアドレス発生回路からのアドレスに従い記録媒体から読み出された圧縮データを格納する第１及び第２の記憶手段と、この記憶手段に格納された圧縮データを伸張するデコーダと、前記アドレス発生回路から出力されるアドレスと外部のアドレスバスから出力されるアドレスのどちらかを記録媒体のアドレスへ出力するアドレス切り替え回路と、記録媒体からの出力データと、前記デコーダ回路の出力データのどちらかをデータバスへ出力するデータ切り替え回路と、を備えたデコーダ回路であって、前記デコーダ回路は、入力されたデータをそのまま出力するスルーモードと入力された圧縮データをデコードして出力するデコードモードとが切り替え可能に構成され、外部のアドレスが記録媒体のアドレスとして出力されると、前記デコーダ回路はスルーモードに切り替わり、記録媒体からのデータが外部のデータバスへ出力され、前記アドレス発生回路から出力されるアドレスを記録媒体のアドレスとして出力されると、前記デコーダ回路はデコードモードに切り替わりるとともに、前記記録媒体からの圧縮データを読み込みデコードしたデータが外部のデータバスへ出力される前記コントロールレジスタに設定された複数のデコード動作の指示に対して、優先順位の高いアドレスから第１のアドレス発生回路でアドレスを発生し、そのアドレスで圧縮データを記録媒体から読み込み、前記第１の記憶手段に書き込み、書き込まれたデータは前記デコーダでデコードされ、前記第１の記憶手段がＦＵＬＬ状態になったときには、次の優先順位のアドレスから第２のアドレス発生回路でアドレスを発生し、そのアドレスで圧縮データを記録媒体から読み込み、前記第２の記憶手段に書き込むことを行い、最初に指定されたアドレスのデータを転送量設定レジスタに設定された分を出力し終えた後、次の伸張動作では前記デコーダは前記第２の記憶手段メモリのデータを読み込みデータのデコードを開始し、第２のアドレス発生回路は前に引き続きアドレスを発生し、そのアドレスで圧縮データを記録媒体から読み込み、前記第２の記憶手段に書き込むことを行い、前記第２の記憶手段がＦＵＬＬ状態になったときには、次の優先順位のアドレスから第１のアドレス発生回路でアドレスを発生し、そのアドレスで圧縮データを記録媒体から読み込み、前記第１の記憶手段に書き込むことを特徴とする。
【００２７】
この発明によれば、圧縮データをデコードしたデータを連続して転送する場合、通常のＲＯＭからの転送と全く同じようにできるため、圧縮データをワークＲＡＭに転送する時間やデコードの時間を全く無視できるようになり、画像の表示などに遅延を来すことなくスムーズな画像表示が可能となる。
【００２８】
また、デコードに時間がかかり、圧縮したデータをしようできなかった画像データにおいてもデータの圧縮が可能となり、ＲＯＭの容量の削減を大幅に行うことができる。
【００２９】
デコーダ回路へ転送量を設定しない場合、所定のデータを転送した後、デコーダ回路へデコードモードの終了を知らせ、スルーモードに戻す必要があるが、最初に転送量のみを設定しておけば、データ転送終了後の操作を行うことなく自動的にモードを変更することができる。
【００３０】
デコーダ回路の内部にＲＡＭを持ち、そのＲＡＭのアドレスマップをＲＯＭアドレス上に置けるため、デコードモード時のインストラクションアクセスが見かけ上ＲＯＭから行っていることと同等となり、ワークＲＡＭ上でのプログラムを走らせる必要がなくなり、プログラムの構成が複雑になることを防止できる。
【００３１】
【発明の実施の形態】
以下、この発明の実施例を図面を参照して説明する。図１は、この発明をマイクロコンピュータを使用したゲーム機に適用した場合の実施例の構成を示す概略ブロック図である。なお、従来例と同一部分には同一符号を付す。
【００３２】
従来例と同様に、この発明を用いたゲーム機においても、ゲーム機本体１、プログラムカートリッジ２、ＣＲＴディスプレイ３を備える。
【００３３】
この実施例におけるゲーム機本体１は、前述した図１９に示した従来例と同様に構成されており、ＣＰＵ１０、ＤＭＡコントローラ１１、ワークＲＡＭ１２、ＰＰＵ１３、ＶＲＡＭ１４を備える。
【００３４】
そして、システムバス１５にＣＰＵ１０、ＤＭＡコントローラ１１、ＲＡＭ１２およびＰＰＵ１３が接続される。
【００３５】
また、ＶＲＡＭ１４は、例えば、２フレーム分（２画面分）の画像データが、ＰＰＵ１３によりＣＲＴディスプレイ３の垂直及び水平走査に同期して読み出され、ＣＲＴディスプレイ３により画像として表示されると共に、この表示が行われている間に、他方の画面エリアに次に表示される画像データが書き込まれる。
【００３６】
また、プログラムカートリッジ２は、ゲーム機の使用時、ゲーム機本体１のスロット（図示せず）に差し込まれて使用される。そして、、この実施例におけるプログラムカートリッジ２内には、ＲＯＭ２０とＲＡＭ２１およびこの発明の特徴とするデータのデコーダ回路２３が備えられている。ＲＯＭ２０には、この実施例においては、圧縮されていないゲームのプログラムと画像データなどの圧縮データが書き込まれている。また、ＲＡＭ２１には、例えばゲームの途中経過やゲームスコアの結果を格納するために用いられ、バッテリ２２にてバックアップされている。
【００３７】
このデコーダ回路２３は、入力されたデータをそのまま出力するスルーモードと入力された圧縮データをリアルタイムにデコードして出力するデコードモードを切り替えて出力することができる。すなわち、このデコーダ回路２３はＲＯＭ２０からのデータをそのままアクセスし、ゲーム機本体１のシステムバス１５に出力するスルーモードと、ＲＯＭ２０から読み出した圧縮データをデコードしてゲーム機本体１のシステムバス１５に出力するデコードモードと、がＣＰＵ１０のアクセスにより切り替えることができるように構成されている。
【００３８】
次に、この発明のデコーダ回路の第１の実施例を図２に従い説明する。図２は、このデコーダ回路２３の内部ブロック図である。
【００３９】
この図において、２３０は、圧縮されたデータをデコードするデコーダ、２３１は、デコーダ２３０がＲＯＭ２０に格納された圧縮データを読み込むためのアドレスを発生するアドレス発生回路、２３２は、ＣＰＵ１０から自由にアクセスできる小容量のＲＡＭで、常にデコーダ回路２３の外部からアクセスできるようになっている。
【００４０】
２３３は、上記ＲＡＭ２３２のＲＡＭアドレスをＲＯＭアドレス空間の任意のアドレスにマッピングするためのマッピング回路、２３４は、圧縮データの最初のアドレスを格納する領域や、コントロールレジスタ領域、ステータスレジスタ領域などを備えた内部レジスタで常に外部よりアクセスが可能になっている。
【００４１】
２３５は、このデコーダ回路２３の全体を制御するコントロール回路、２３６は、デコードを開始してからのデータ転送量をカウントする転送量カウンタ、２３７は、予め設定された転送量にカウンタ２３６のカウント値が一致し、デコードが終了することを検出する終了検出回路である。
【００４２】
２３８は、ＲＯＭ２０やバッテリバックアップされたＲＡＭ２１のチップセレクトを出力するアドレスデコーダ回路である。２３９は、マルチプレクサで構成されるアドレス切り替え回路であり、デコーダ２３０からの出力に基づきデコーダ２３０へＲＯＭ２０からのデータを読み出すためにアドレス発生回路２３１から出力されるアドレス出力とシステムバス１５のシステムアドレスバスからの出力を選択してＲＯＭ２０のＲＯＭアドレスバスに供給する。
【００４３】
２４０は、マルチプレクサで構成されるデータ切り替え回路であり、ＲＯＭ２０からのデータと内部ＲＡＭ２３２からのデータとデコーダ２３０からのデータと内部レジスタ２３４のデータを選択してシステムバス１５のシステムデータバスに出力する。２４１は、システムデータバスへのＩ／Ｏの切り替えバッファ回路である。
【００４４】
さて、この実施例においては、電源投入後は、デコーダ回路２３はＲＯＭ２０からのデータをそのままアクセスできるスルーモードの状態になっている。この時、デコーダ回路２３の内部のアドレス切り替え回路２３９はシステムバス１５のシステムアドレスバスから転送されるアドレスを選択してＲＯＭ２０に供給している。また、データ切り替え回路２４０は、ＲＯＭ２０のデータもしくは内部ＲＡＭ２３２のデータをシステムバス１５のシステムデータバスに出力する。この状態ではＣＰＵ１０から見ると通常のメモリアクセスができる状態である。
【００４５】
次に、ＲＯＭ２０に格納された圧縮データのデコード動作について述べる。
ゲーム機本体１のＣＰＵ１０は、初期化ルーチンでＤＭＡ転送のための処理プログラムをＲＯＭ２０から読み出し、そのプログラムをデコーダ回路２３の内部ＲＡＭ２３２に書き込み、そして、更にそのプログラムをＲＯＭアドレスの任意のアドレスにマッピングするためにデコーダ回路２３の内部レジスタ２３４にアドレスを書き込んでおく。
【００４６】
この処理プログラムは、図４に示したフローチャートのようになる。そして、デコードデータのＤＭＡ転送処理はこの処理プログラムにより行われる。
【００４７】
この処理プログラムは、デコード動作を開始すると、まず、デコーダ２３０のセットを行い、デコーダ回路２３の内部レジスタ２３４にスタートアドレスを書き込む（ステップＳ１）。そして、デコーダのデコードをスタートし、内部レジスタ２３４にデコーダスタートビットをたてると共に、転送量をセットする（ステップＳ２）。
【００４８】
続いて、ＤＭＡコントローラ１１の設定を行い、スタートアドレスと転送量をセットする（ステップＳ３）。そして、デコードデータがＯＫか否か判断し（ステップＳ４）、デコードデータがＯＫになると、ＤＭＡを開始し（ステップＳ５）、ＤＭＡの停止が確認されると、このプログラムの処理が終了する（ステップＳ６）。
【００４９】
図３に内部ＲＡＭ２３２のマッピング状態の変化を示す。内部ＲＡＭ２３２の変更前のアドレス領域は（ａ）に示すアドレスマップのようになっており、処理プログラムはプログラム領域内の一部にあり、これを内部ＲＡＭ２３２の領域にコピーする。そして、デコーダ回路２３にデータを設定して、この内部ＲＡＭ２３２のアドレス領域を元のコピーしたアドレスにマッピングさせる。（ｂ）はマッピングを行った後のアドレスマップである。
【００５０】
これは、ＲＯＭ２０に格納された圧縮データのデコードを開始すると、デコーダ回路２３から読み出されるデータはデコードされたデータのみでＲＯＭ２０上のプログラムをアクセスすることができなくなるので、処理プログラムを別の領域に移してＣＰＵ１０のプログラムのアクセスができるようにするためである。なお、デコーダ回路２３に内部ＲＡＭ２３２がない場合には、ワークＲＡＭ１２にこの処理プログラムをコピーし、このワークＲＡＭ１２上で処理プログラムを動作させる必要がある。
【００５１】
デコーダ回路２３の内部ＲＡＭ２３２にプログラムがある場合、ＣＰＵ１０はデコーダ回路２３がデコードモードになった後も内部ＲＡＭ２３２からインストラクションフェッチを行えるため、見かけ上ＲＯＭ２０からインストラクションをフェッチしているのと変わらないことなる。
【００５２】
次に、処理内容について述べる。まずＣＰＵ１０はデコーダ回路２３の内部レジスタ２３４にデコードする圧縮データの先頭アドレスとデータの転送量を書き込み、次にデコーダ回路２３の内部レジスタ２３４のコントロールレジスタ領域にデコードの開始ビットを書き込んでデコードの開始を指示する。そして、ＤＭＡコントローラ１１の設定を行う。
【００５３】
デコーダ回路２３は、デコードを開始してデコードデータを連続して出力できるようにするためにはある程度の時間が必要となる。そのため、ＤＭＡ転送を開始する前には、デコーダ２３０のデコードデータの出力準備が整っているかを内部レジスタ２３４のステータスレジスタ領域を読み込み確認する必要がある。準備できていればＤＭＡ転送開始をゲーム機本体１のＤＭＡコントローラ１１に指示する。但し、デコード指示からＤＭＡ開始までの時間がデコーダ回路２３のデータ出力準備が十分にできる時間であればステータスの確認は不要になる。
【００５４】
デコーダ回路２３では、デコードを開始するとデコードモードにはいる。デコーダ回路２３内部のアドレス切り替え回路２３９はアドレス発生回路２３１からのアドレス出力を選択してＲＯＭアドレスとしてＲＯＭアドレスバスに供給する。また、データの切り替え回路２４０はデコーダ２３０からの出力データか内部ＲＡＭ２３２のデータを選択して外部のシステムバス１５のシステムデータバスに出力する。
【００５５】
アドレス発生回路２３１は、先に書き込まれた圧縮データの先頭アドレスとデコーダ２３０からの指示に従いアドレスをインクリメントさせていく。デコーダ２３０はアドレス発生回路２３１を用いてＲＯＭ２０から圧縮データを読み込み、データのデコードを行う。デコードしたデータの出力準備ができると、準備が整っていることを示すステータスビットをセットする。ＤＭＡ転送が開始されると、デコーダ回路２３はデータのリード信号により外部のシステムバス１５のシステムデータバスへデータを出力していく。データの転送量は転送量カウンタ２３６によりカウントされる。この転送量カウンタ２３６はデコード開始時にリセットされる。
【００５６】
終了検出回路２３７は、内部レジスタ２３４に書き込まれた転送量と転送カウンタ２３６の値から転送終了の検出を行う。終了の検出が行われると、コントロール回路２３５はデコードモードを終了させ、デーコド回路２３をスルーモードに戻す。
【００５７】
設定されたデータを転送し終えると、ＤＭＡ転送は終了する。ＤＭＡ転送終了後、処理プログラムはＤＭＡ転送の終了確認を行い処理プログラムより抜ける。なお、ＤＭＡ転送終了の確認は必ずしも必要なものではない。
【００５８】
上記実施例においては、プログラムカートリッジ２内にデコーダ回路２３を設けているので、プログラムカートリッジ２からゲーム機本体１内に転送されるデータは圧縮データをデコードしたデータであり、データを圧縮していない通常のＲＯＭからの転送と全く同じようにできる。従って、ゲーム機本体１の構成は従来の構成と同じもので、圧縮データをワークＲＡＭに転送する時間やデコードの時間を全く無視できるようになり、画像の表示などに遅延を来すことなくスムーズな画像表示が可能となる。
【００５９】
また、プログラムカートリッジ２から読み出されるデータは、圧縮データをデコードしたデータであるので、アドレスとデータが一致せず、このプログラムカートリッジ２を読み出すことでソフトコピーを行うことができなくなり、違法コピーを防止することができる。
【００６０】
次に、この発明のデコーダ回路の第２の実施例を図５に従い説明する。図５は、デコーダ回路２３の第２の実施例を示す内部ブロック図である。
【００６１】
前述した第１の実施例と同様に、アドレス発生回路２３１にて発生されたアドレスに従いＲＯＭ２０から圧縮されたデータが読み出される。読み出された圧縮データは、ＦＩＦＯメモリ２４２に格納される。このＦＩＦＯメモリ２４２に格納された圧縮データがデコーダ２３０に与えられ、デコーダ２３０にて、圧縮データを伸張する。
【００６２】
この第２の実施例におけるデコーダ回路２３は、ＣＰＵ１０より、ＲＯＭ２０に格納され圧縮されたデータをアクセスし、そのデータを伸張してゲーム機本体１にＤＭＡ転送する。このデコーダ回路２３においては、ＣＰＵ１０よりＤＭＡを行うためのＲＯＭ２０の転送元アドレスデータがシステムデータバスからアドレスレジスタ群２４３に与えられ、書き込まれる。このアドレスレジスタ群２４３はＤＭＡチャネル毎の転送元アドレスを書き込むように複数のレジスタで構成され、マルチプレクサ２４３ａを介して、転送元アドレスがアドレス発生回路２３１に与えられる。
【００６３】
同じくＣＰＵ１０により、ＤＭＡの転送量がシステムデータバスから内部レジスタ群２４４に与えられ、書き込まれる。このアドレスレジスタ群２４４はＤＭＡチャネル毎の転送量を書き込むように複数のレジスタで構成され、マルチプレクサ２４４ａを介して、転送量が終了検出回路２３７に与えられる。
【００６４】
デコードを開始してからのデータの転送量は転送量カウンタ２３６でカウントされ、そのカウント値が終了検出回路２３７に与えられる。この終了検出回路２３７はレジスタ群２４４より与えられた転送量とカウンタ２３７のカウンタ値が一致したときにデコードが終了したことを検出する。
【００６５】
上述したこのレジスタ群２４３、２４４の各レジスタは外部すなわち、ゲーム機器本体１のＤＭＡコントローラ１１の転送元アドレスレジスタ、転送量レジスタと同じアドレスに設定され、書き込み動作のみが行えるものである。
【００６６】
更に、この第２の実施例においては、ゲーム機本体１のＣＰＵ１０から与えられるシステムアドレスバスのバス動作からＤＭＡ動作の検出をしたり、メモリサイクル毎に指定されたアドレスかどうかを検出するバス動作検出回路２４５を有する。
【００６７】
次に、図５に示すこの発明の第２の実施例のデコーダ回路の動作を説明する。
【００６８】
ゲーム機本体１のＣＰＵ１０は、伸張動作を使ってＲＯＭ２０に格納された画像データをＤＭＡ動作で転送するために、図６に示す初期設定を行う。
【００６９】
まず、複数のＤＭＡチャネルの中で伸張動作を行うＤＭＡチャネルをデコーダ回路２３の内部レジスタ２３４に設定する（ステップＳ１０）。この設定は、常に設定する必要はなく変更があるときのみ行えばよい。
【００７０】
その後、ＤＭＡコントローラ１１に転送元アドレス、転送先アドレス、転送量を設定する。このとき、デコーダ回路２３の転送元アドレスレジスタ群２４３と転送量レジスタ群２４４には、ＤＭＡコントローラ１１に設定したと同じデータが書き込まれる（ステップＳ１１）。また、通常のＤＭＡ転送では転送元アドレスは、インクリメントかディクリメントを行うが伸張動作を行うＤＭＡチャネルの転送元アドレスはインクリメントもディクリメントもせずに固定動作となるようにＤＭＡコントローラ１１を設定する。
【００７１】
ところで、単一のＤＭＡ動作のみをサポートするのであれば、デコーダ回路２３の内部には転送元アドレスレジスタと転送量レジスタが各１つあればよい。また、転送元アドレス、転送量データを設定するアドレスが同一の場合も考えられるが、ＤＭＡの設定を決められた手順で行うようにすれば、転送元アドレス、転送量データも自動的にデコーダ回路２３で検出して自動的に取り込むように構成することも可能である。
【００７２】
続いて、ＣＰＵ１０はＤＭＡコントローラ１１にＤＭＡ動作の開始を指示する（ステップＳ１２）。この実施例においては、ＣＰＵ１０は複数のＤＭＡチャネルに動作開始を指示することができる。複数のＤＭＡチャネルには伸張動作でのＤＭＡ動作と通常のＤＭＡ動作が混在してもよい。また、ＤＭＡコントローラ１１はＤＭＡ動作開始を指示されるとＣＰＵ１０にバスの明け渡しを要求し、ＣＰＵ１０からバスを明け渡されるとＤＭＡの動作を開始する。ＤＭＡ動作は、ＣＰＵ１０のＤＭＡコントローラ１１への動作開始コマンドの書き込みから常に一定のシーケンスを経て開始される。デコーダ回路２３は、このＤＭＡコントローラ１１への動作開始指示を接続されているバス動作から検出してＤＭＡ動作とそのチャネルを予め検出する。この検出は、ＤＭＡの動作開始を指示する特定アドレス、例えば、ＤＭＡコントローラ１１のコントロールレジスタへの書き込みと書き込まれたデータから行うことができる。
【００７３】
この特定アドレスがない場合は、予め定められた設定のシーケンスから検出が可能となる。このとき、もし、動作するＤＭＡチャネルがすべて伸張動作に設定されていないチャネルの場合には、デコーダ回路２３は何も動作しない。
【００７４】
図７にこの第２の実施例のデコーダ回路を用いたＤＭＡ動作開始のタイミングチャートを示す。
【００７５】
この図において、「アドレスイネーブル信号」は「Ｌｏｗ」の時アドレスバスのデータが有効であることを示す。「デコーダ回路からのアドレス出力」はデコーダ回路２３に接続されたＲＯＭ２０へのアドレスを示し、「デコーダ入力データ」はそのＲＯＭ２０からの入力データを示す。
【００７６】
このタイミングチャートでは、ＤＭＡコントローラ１１へＤＭＡの動作開始を設定した後、１サイクルのインストラクションフェッチが入りその後にＤＭＡ動作になっている。このインストラクションフェッチは、システムによって異なり無い場合も考えられる。尚、この図において、矢印は外部のシステムアドレスバスからのアドレスによる出力期間、破線矢印は内部のアドレス発生回路２３１のアドレスによる出力期間を示す。
【００７７】
この第２の実施例におけるデコーダ回路２３の動作につき説明する。
このデコーダ回路２３は、最初のＤＭＡコントローラ１１への動作開始コマンドの書き込みにより、伸張動作のＤＭＡ動作を検出すると、複数のＤＭＡチャネルの中で予め設定されている優先順位で最も高い優先順位の伸張動作のＤＭＡチャネルに対応した転送元アドレスを転送元アドレスレジスタ群２４３からマルチプレクサ２４３ａを介してアドレス発生器２３１へ与え、アドレス発生器２３１のアドレスを設定し、デコード動作を開始する。また、転送量レジスタ群２４４からの出力も、予め設定されたＤＭＡチャネルの中で最も高い優先順位の伸張動作のＤＭＡチャネルに対応したレジスタの出力となる。
【００７８】
更に、ＤＭＡ動作に入った直後に、アドレス発生器２３１からのアドレスを使ってＲＯＭ２０から圧縮データを読み込み、そのデータをＦＩＦＯメモリ２４２に書き込む。デコーダ２３０はＦＩＦＯメモリ２４２からデータを読み込み、デコードする。その後は、ＲＯＭ２０へのアドレス出力は外部のシステムアドレスバスからのアドレスがそのままＲＯＭ２０に出力されるスルーモードに戻る。
【００７９】
そして、ＤＭＡ動作のリードサイクルの始めにバス動作検出回路２４５にてアドレスをチェックし、それが予め設定された伸張動作のＤＭＡチャネルの転送元アドレス、つまり、ＤＭＡ動作開始時の転送元アドレスレジスタ群２４３から選択されたアドレスであれば、データ切り替え回路２４０はデコーダ２３０からのデータを選択しデコードされたデータを出力する。それと同時にアドレス発生器２３１からのアドレスでＲＯＭ２０から次の圧縮データを読み込むという動作を行う。
【００８０】
また、アクセスサイクルのアドレスが期待するアドレスと違うときには、外部のシステムアドレスバスがそのままＲＯＭ２０に出力され、データ切り替え回路２４０はＲＯＭ２０からのデータを選択し、ＲＯＭ２０からのデータがシステムデータバスへ出力されるスルーモードとなり、ゲーム機本体１はＲＯＭ２０からのデータを読み込むことができる。そのため、最初のＤＭＡ動作が通常の伸張動作を行わないＤＭＡ動作の場合にも、デコーダ回路２３のデコード動作は一時中断され、スルーモードでのＤＭＡ動作が行われる。
【００８１】
終了検出回路２３７は、転送量カウンタ２３６の値と転送量レジスタ群２４４からの値が一致していることを検出して現在のＤＭＡチャネルのデコード動作の終了を判断する。
【００８２】
前述した第１の実施例のデコーダ回路では、ＲＯＭ２０に格納された圧縮データのデコードを開始すると、デコーダ回路２３から読み出されるデータはデコードされたデータのみでＲＯＭ２０上のプログラムをアクセスすることができなくなるので、処理プログラムを別の領域に移してＣＰＵ１０のプログラムのアクセスができるようにするために、デコーダ回路２３に内部ＲＡＭ２３２を設け、内ＲＡＭ２３２にこの処理プログラムをコピーし、内部ＲＡＭ２３２からインストラクションフェッチを行うように構成していたが、この第２の実施例のデコーダ回路では、ＤＭＡ動作のリードサイクルの始めにアドレスをチェックし、デコードモードとスルーモードを切り替えることができるので、ＲＯＭ２０内の処理プログラム等をデコーダ回路２３内にコピーする必要はない。
【００８３】
また、この方法は、ソフトがその動作開始を制御しないＤＭＡ動作に対応することもできる。ソフトが動作開始を制御しないＤＭＡ動作では、例えば、ＮＴＳＣ，ＰＡＬなどの画像信号の水平同期信号毎に表示のパラメータをＰＰＵ１３へ転送するときのＤＭＡ動作がある。このＤＭＡ動作では、水平同期信号毎にＤＭＡ動作が起動され、ソフトにより起動されるＤＭＡ動作より優先順位が高く他のＤＭＡ動作を一時中断して動作が行われる。
【００８４】
このデコーダ回路２３では、このような優先順位の高いＤＭＡ動作が起こった場合、ＤＭＡ動作のデータアクセスサイクル時のアドレスをチェックしているため、予め設定されたアドレス以外ではスルーモードでのアクセスを行うことができる。
【００８５】
上記動作のタイミングチャートを図８に示す。このタイミングチャートでは、最初は伸張動作のＤＭＡ動作サイクルがあり、その後ＤＭＡ動作が一時中断され別の優先順位の高いＤＭＡ動作が開始されている。２番目のＤＭＡ動作ではすべてスルーモードでのアクセスとなっている例を示している。バス動作検出回路２４５がアクセスサイクルのアドレスが期待するアドレスと違うときには、データ切り替え回路２４０はＲＯＭ２０からのデータを選択するモードとなり、ＲＯＭ２０からのデータがシステムデータバスへ出力される。
【００８６】
上記動作において、前述したように、デコード回路２３の終了検出回路２３７は、転送量カウンタ２３６の値と転送量レジスタ群２４４からの値が一致していることを検出して現在のＤＭＡチャネルのデコード動作の終了を判断する。
【００８７】
そして、デコーダ回路２３は、設定された転送量のデータをデコードし終えるとＦＩＦＯメモリ２４２をリセットし、次に優先順位の高い伸張動作のＤＭＡチャネルの転送元アドレスを検出してアドレス発生器２３１に設定し、ＲＯＭ２０から圧縮データを読み込み、ＦＩＦＯメモリ２４２へ書き込む。また、転送量レジスタ群２４４からの出力も、設定されたＤＭＡチャネルの中で次に優先順位の高い伸張動作を伴うＤＭＡチャネルに対応したレジスタの出力となる。
【００８８】
デコーダ２３０は、ＦＩＦＯメモリ２４２からデータを読み込み、デコードを行う。ＦＩＦＯメモリ２４２がＦＵＬＬの状態になれば、ＤＭＡ動作でデコードデータが読み出されるときに同時に行われるＲＯＭ２０からの圧縮データの読み込みは行われない。このようにして、伸張動作を行うＤＭＡチャネルの動作がすべて終了すればデコーダ回路２３はデコード動作を終了する。
【００８９】
また、ＤＭＡチャネルが１つで、ＤＭＡ動作中に他のＤＭＡ動作が挿入されることがない場合には、ＤＭＡ動作中にアドレスをチェックしてスルーモードでのアクセスのタイミングを確保する必要はないので、ＤＭＡ動作中のアドレスを固定動作とする必要はない。
【００９０】
前記した実施例では、ＤＭＡ動作が開始された後に、ＲＯＭ２０から圧縮データを読み込んで伸張動作を行いＤＭＡ動作を行っているが、ＤＭＡ動作が開始されて圧縮データを読み込みデータを伸張し出力するまでに時間的な余裕がない場合が考えられる。この場合は、予めＲＯＭ２０から圧縮データを読み込んでデータを伸張しておく必要がある。予めＲＯＭ２０から圧縮データを読み込んでデータを伸張するように構成したこの発明のデコーダ回路２３の第３の実施例を図９に示す。
【００９１】
図１０に初期設定フローを示し、図１１にこの実施例のタイミングチャートを示す。
【００９２】
図９に示すように、この実施例では、第２のアドレス発生回路２４６と、このアドレス発生回路２４６とアドレス発生回路２３１からのアドレスを選択して、アドレス切り替え回路２３９に与えるマルチプレクサ２５０と、ＲＯＭ２０からのデータを格納するデータレジスタ２４７が設けられている。
【００９３】
この第３の実施例の動作につき説明する。
まず、初期設定動作につき説明する前記第２の実施例と同じく、複数のＤＭＡチャネルの中で伸張動作を行うＤＭＡチャネルをデコーダ回路２３の内部レジスタ２３４に設定する（ステップＳ１５）。この設定は、常に設定する必要はなく変更があるときのみ行えばよい。
【００９４】
続いて、ＣＰＵ１０はＤＭＡコントローラ１１に転送元アドレス、転送先アドレス、転送量を設定する（ステップＳ１６）。このとき、デコーダ回路２３の転送元アドレスレジスタ群２４３と転送量レジスタ群２４４には、ＤＭＡコントローラ１１に設定したと同じデータが書き込まれる。前述した実施例と同様に、通常のＤＭＡ転送では転送元アドレスは、インクリメントかディクリメントを行うが伸張動作を行うＤＭＡチャネルの転送元アドレスはインクリメントもディクリメントもせずに固定動作となるようにＤＭＡコントローラ１１が設定される。
【００９５】
そして、ＲＯＭ領域以外のデータをアクセスし（ステップＳ１７）、ＣＰＵ１０はＤＭＡ動作の開始を指示する（ステップＳ１８）。
【００９６】
このデコード回路の動作は、まず、上記したように、ＣＰＵ１０はＤＭＡコントローラ１１に転送元アドレス、転送先アドレス、転送量を設定する。このとき、デコーダ回路２３の転送元アドレスレジスタ群２４３と転送量レジスタ群２４４には、ＤＭＡコントローラ１１に設定したと同じデータが書き込まれる。
【００９７】
次に、ＣＰＵ１０はこれから動作させるＤＭＡチャネルをデコーダ回路２３の内部レジスタへ書き込む。デコーダ回路２３は、この動作予定のＤＭＡチャネルの中に伸張動作のＤＭＡチャネルがあれば、デコード動作を開始し、伸張動作のＤＭＡチャネルの中で優先順位の高いＤＭＡチャネルに対応する転送元アドレスを転送元アドレスレジスタ群２４３から選択しスタートアドレスをアドレス発生器２３１に設定する。また、次に優先順位の高い伸張動作のＤＭＡチャネルの転送元アドレスを転送元アドレスレジスタ群２４３から選択しスタートアドレスを第２のアドレス発生回路２４６に設定する。もし、動作予定のＤＭＡチャネルの中に伸張動作のＤＭＡチャネルがなければデコード動作は開始せずに何も行わない。また、伸張動作のＤＭＡチャネルが１つであれば、第２のアドレス発生回路２４６には何も設定されない。
【００９８】
次に、ＣＰＵ１０は予め設定されたデコーダ回路２３に接続されたＲＯＭアドレス領域とは異なったアドレス領域を必要な回数アクセスする。図１１に示した実施例のタイミングチャートでは、ＲＯＭ以外の領域を１回読み込んでいるがこれはシステムによって異なる。ＣＰＵ１０がこのＲＯＭアドレスとは異なったアドレス領域をアクセスするとき、デコーダ回路２３はアドレス発生回路２３１を使用してＲＯＭ２０から圧縮データを必要な分読み込み、データのデコードを開始する。読み込まれた圧縮データをデコードできるところまで行い、入力されたデータをデコードするとデコード動作は次のデータが入力されるまで一時動作が中断される。
【００９９】
そして、デコーダ回路２３はＤＭＡ動作を検出すると、ＤＭＡ動作に入った直後に、アドレス発生回路２３１からのアドレスを使ってＲＯＭ２０から圧縮データを読み込みデータをＦＩＦＯメモリ２４２に書き込む。この圧縮データの読み込みは、ＤＭＡ動作の開始指示からＤＭＡ動作までの時間が短い場合には、この動作ができない場合も考えられるが、その場合には、事前にＲＯＭ２０のデータを必要な個数読み込んでおく必要がある。
【０１００】
デコーダ２３０はＦＩＦＯメモリ２４２からデータを読み込み、デコードを再開する。その後は、ＲＯＭ２０へのアドレス出力は内部のアドレス発生回路２３１からの出力と外部のアドレスバス出力に戻る。そして、ＤＭＡ動作のリードサイクルが始まるとアドレスをチェックしそれが予め設定された伸張動作のＤＭＡチャネルの転送元アドレスであればデータ切り替え回路２４１はデコーダ２３０からのデータを選択しデコードされたデータを出力する。それと同時に、ＲＯＭ２０へのアドレス出力はアドレス発生回路２３１からの出力となり、ＲＯＭ２０から次の圧縮データを読み込むという動作を行う。この動作は繰り返し行われる。
【０１０１】
動作中に内部のＦＩＦＯメモリ２４２がＦＵＬＬ状態になると、デコーダ回路２３はＲＯＭアクセスの時、第２のアドレス発生回路２４６を使用してＲＯＭ２０から圧縮データを読み込み、そのデータをデータレジスタ２４７へ書き込む。そして、このデータレジスタ２４７のデータがＦＵＬＬになるとデータレジスタ２４７への書き込み動作は終了する。このデータレジスタ２４７のデータは、次のＤＭＡチャネルの伸張動作を伴うＤＭＡ動作が開始される前に予めデコードされたデータを準備するために必要となる。
【０１０２】
デコーダ回路２３は設定された転送量のデータをデコードし終えるとＦＩＦＯメモリ２４２をリセットし、第２のアドレス発生回路２４６の現在のアドレスを第１のアドレス発生回路２３１に設定する。転送量レジスタ群２４４からの出力は、設定されたＤＭＡチャネルの中で次に優先順位の高い伸張動作を伴うＤＭＡチャネルに対応したレジスタの出力となる。そして、次のＲＯＭデータ読み込みタイミングでは、第１のアドレス発生回路２３１からアドレスを発生し、ＦＩＦＯメモリ２４２へデータを読み込む。
【０１０３】
デコーダ回路２３が設定された転送量のデータをデコードし終えた時点では、まだ、現在のＤＭＡチャネルの動作が続いている。ところが、現在の伸張動作を伴うＤＭＡ動作と次の伸張動作を伴うＤＭＡ動作の間の時間が短い場合には、次の伸張動作を伴うＤＭＡ動作が開始される前に圧縮データを読み込み、データをデコードしておく必要がある。
【０１０４】
そのため、まず、デコーダ回路２３はデータレジスタ２４７に予め読み込んでおいた圧縮データを読み込みデコードを行う。データレジスタ２４７のデータをすべてデコードし終えると、デコーダ２３０はＦＩＦＯメモリ２４２から圧縮データを読み込みデコードを行う。
【０１０５】
ＦＩＦＯメモリ２４２がＦＵＬＬ状態になれば、ＤＭＡ動作中にデコードデータが読み出されるときに同時に行われるＲＯＭ２０からの圧縮データの読み込みは行われない。このようにして、伸張動作を行うＤＭＡチャネルの動作がすべて終了すればデコーダ回路２３はデコード動作を終了する。
【０１０６】
この実施例では、伸張動作を伴うＤＭＡ動作の開始前にデコーダ回路２３の動作を開始し、予め非ＲＯＭ領域をアクセスすることで、圧縮データの先読みを行いＤＭＡアクセスが開始される前にデータを準備することができる。また、デコーダ回路２３の内部に、先読み用のアドレス発生回路と先読みデータの格納のためのレジスタを設けることにより、１つのＤＭＡチャネルのデコード動作中、内部ＦＩＦＯメモリ２４２がＦＵＬＬの状態のときに次のＤＭＡ動作のための圧縮データを先読みしておくようにしておき、現在のチャネルのデコード動作が終了すると次のＤＭＡ動作のためのデコード動作を行うことで、連続したチャネル動作の移行間隔が短く、デコード準備ができない連続したＤＭＡ動作にも対応できる。
【０１０７】
次に、この発明のデコーダ回路の第４の実施例を図１２に従い説明する。
第４の実施例では、図１２に示すように、前記した図９に示す実施例のデータレジスタ２４７の代わりに、第２のＦＩＦＯメモリ２４８を使用したものである。これは、デコード動作中に第１のＦＩＦＯメモリ２４２がＦＵＬＬ状態の時には、第２のＦＩＦＯメモリ２４８に次のＤＭＡ動作のための圧縮データを読み込んでおき、次のチャネルのＤＭＡ動作が始まると、第２のアドレス発生回路２４６をそのまま使用して、第２のＦＩＦＯメモリ２４８に圧縮データを書き込み、デコーダ２３０は第２のＦＩＦＯメモリ２４８からデータを読み込みデコード動作を行い、第２のＦＩＦＯメモリ２４８がＦＵＬＬの状態の時には、第１のアドレス発生回路２３１を使用して次のデコード動作のための圧縮データを読み込み、第１のＦＩＦＯメモリ２４２へ書き込むことを行う。
【０１０８】
このように、この第４の実施例では、第１のアドレス発生回路２３１、第１のＦＩＦＯメモリ２４２と第２のアドレス発生回路２４６、第２のＦＩＦＯメモリ２４８を交互に使用することで、内部の制御を容易にすることができる。
【０１０９】
上述した各実施例の場合は、ＤＭＡ動作に対応するものであったが、これは、通常のＣＰＵのアクセスの場合にも適用できる。通常のＣＰＵのアクセスの場合にも適用した第５の実施例を図１３に従い説明する。
【０１１０】
この図１３に示すように、この第５の実施例においては、圧縮データの開始アドレスを設定するスタートアドレスレジスタ２５０を設け、このスタートアドレスレジスタ２５０に、ＣＰＵ１０よりＤＭＡの転送スタートアドレスを書き込む。このスタートアドレス２５０よりアドレス発生回路２３１にスタートアドレスが与えられるように構成されている。そして、ＣＰＵ１０がアクセスする場合、転送量はソフトで管理できるため終了検出のための回路は使用していない。もちろん、他の実施例のように転送量を回路で監視しデコード動作を自動的に終了することもできる。
【０１１１】
図１４にＣＰＵ１０のデータ読み込み動作フローを示す。ＣＰＵ１０はデコードデータを読み込む場合、まず、圧縮データの先頭アドレスをデコーダ回路２３のスタートアドレスレジスタ２５０へ書き込み（ステップＳ２０）、次にデコードのスタートをデコーダ回路２３に指示する（ステップＳ２１）。
【０１１２】
デコーダ回路２３はデコード動作を開始して、アドレス発生回路２３１にスタートアドレスレジスタ２５０の値をセットし、ＣＰＵ１０がＲＯＭ２０以外の領域をアクセスするのを監視する。ＣＰＵ１０は、デコードデータを読み出す前に、ＲＯＭ２０以外の領域をアクセスする（ステップＳ２２）。
【０１１３】
デコーダ回路２３は、そのアクセスが検出されるとＲＯＭ２０からアドレス発生回路２３１を使用し、圧縮データを読み込みＦＩＦＯメモリ２４２に書き込む。デコーダ２３０はＦＩＦＯメモリからデータを読み込みデコードを行う（ステップＳ２３）。この時、ＣＰＵ１０は、デコードデータが用意できる一定時間後にデータの読み込みを開始する。デコードデータの読み込みを行うまでＣＰＵ１０の動作の制限は何もない。
【０１１４】
このデータの読み込みアドレスは、最初に設定した、スタートアドレスからのみ行う。デコーダ回路２３は、デコード動作が開始されると常にこのアドレスをチェックし、スタートアドレスレジスタに書き込まれたアドレスの時にデコードデータを出す。このため、ＣＰＵ１０はデコード動作期間においてもデコードされたデータ以外のＲＯＭアドレスを自由にアクセスできる。必要なデータ量をＣＰＵ１０が読み終えるとＣＰＵ１０はデコード動作を停止させる。このデコーダ回路２３の場合には、通常のアクセスは問題なくできるため、デコード動作の停止は行わず、新たにスタートアドレスを設定するとデコード動作が再スタートするようにしてもよい。このようにすれば、デコード動作の停止という動作を省略することができる。
【０１１５】
これまでの実施例では、ＤＭＡ動作を検出する前もしくはＣＰＵデコードデータのアクセス前に圧縮データを先読みし、デコード動作をある程度行ってからＤＭＡ動作、もしくはＣＰＵのアクセスでデータを出力するようにしていたが、伸張したデータをデコードして出力するのに、事前の圧縮データの読み込みやデコードする時間がない場合もある。この解決方法として、以下のＤＭＡ動作を使用するデコーダ回路２３の第６の実施例を図１５に従い説明する。
【０１１６】
図１５に示すように、この第６の実施例は図５に示す第２の実施例の構成に、ＲＯＭデータバスの出力を２バイトデータから１バイトを選択し出力するデータ切り替え回路２４９を設けている。
【０１１７】
この実施例において、初期設定は、ＤＭＡコントローラ１１の動作設定のみとなる。圧縮データは図１７のような構成になっており、最初の１バイト目と３バイト目は、圧縮されていないデータでその後は圧縮されたデータが最後まで続く。また、前提条件としてデコーダ回路２３がＲＯＭ２０からＤＭＡアクセスサイクル毎に読み込むデータ量が、デコーダ回路２３からＤＭＡサイクル毎に読み出されるデータ量に比べて大きいことが必要である。例えば、ＤＭＡ動作で１バイト毎に転送しているとき、デコーダ回路２３は１．５〜２バイトのデータをＲＯＭ２０から読み込めるといったことである。この実施例の場合、ＲＯＭ２０のデータバス幅は２バイトでシステムデータバスのバス幅は１バイトとする。
【０１１８】
ＣＰＵ１０がＤＭＡコントローラ１１へ転送元アドレス、転送先アドレス転送量が設定されると、デコーダ回路２３にも、ＤＭＡチャネルに対応した同じ内容の転送元アドレス、転送量が転送元レジスタ群２４３と転送量レジスタ群２４４に設定される。それから、ＣＰＵ１０はＤＭＡ動作開始をＤＭＡコントローラ１１に指示しＤＭＡ動作を開始する。この動作のタイミングチャートを図１６に示す。
【０１１９】
デコーダ回路２３は、バスの動作からＤＭＡ動作を検出する。デコーダ回路２３は、まず設定された転送元アドレスをアドレス発生回路２３１に設定し、ＲＯＭ２から２バイトの圧縮データを読み込む。このデータの２バイト目はＦＩＦＯメモリ２４２へ書き込まれ、デコーダ２３０がこのデータを読み込みデコードを行う。最初の１バイト目は、データの切り替え回路２４８を通してシステムバスに出力される。
【０１２０】
次のＤＭＡサイクルでは、３、４バイト目のデータが読み込まれ、３バイト目はデータの切り替え回路２４８を通して２バイト目のデータとしてシステムバスに出力される。そして、ＦＩＦＯメモリには４、５バイト目の圧縮データが書き込まれる。このときデコーダ回路には、次のＤＭＡサイクルに出力するデータが準備できるため、３回目移行のＤＭＡアクセスサイクルでは、デコーダ２３０からのデコードデータを出力する。
【０１２１】
このように、この実施例では、デコードデータの読み込みが始まった時点からデコード動作を開始できるため、使用方法が非常に簡単になる。ただ、圧縮データの構成でオリジナルデータの量はシステムによって異なり、実施例は、その一例を示したにすぎない。また、この実施例も、ＤＭＡ動作に行うものであったが、これは通常のＣＰＵからのアクセスにおいても適用できることは、前に記述した通りである。
【０１２２】
図１８にこの発明の他の実施例を示す。上記した実施例は、プログラムカートリッジ２にデコーダ回路２３を備えているのに対して、この実施例では、ゲーム機本体１内にこの発明の特徴とするデコーダ回路２３を設けている。すなわち、プログラムカートリッジ２は、従来例と同じくＲＯＭ２０とバッテリ２２でバックアップされたＲＡＭ２１で構成されている。そして、ゲーム機本体１のＤＭＡコントローラ１１により、ＲＯＭ２０からデコーダ回路２３にプログラムデータ並びに圧縮データが転送される。このデコーダ回路２３の構成は前述した実施例と同様に構成されており、入力されたデータをそのまま出力するスルーモードと入力された圧縮データをリアルタイムにデコードして出力するデコードモードを切り替えて出力することができる。すなわち、このデコーダ回路２３はＲＯＭ２０からのデータをそのままアクセスし、システムバス１５に出力するスルーモードと、ＲＯＭ２０から読み出した圧縮データをデコードしてシステムバス１５に出力するデコードモードと、がＣＰＵ１０のアクセスにより切り替えらるものである。
【０１２３】
なお、デコーダ回路２３自体の構成は、前述の各実施例と同様のものが適用できるので、説明の重複を避けるために、ここではその説明を省略する。
【０１２４】
このように、ゲーム機本体１にこの発明の特徴とするデコーダ回路２３を内蔵すると、プログラムカートリッジ２自体は従来例と同じ構成で良いので、プログラムカートリッジ２は、前述した実施例より安価に提供することができる。
【０１２５】
【発明の効果】
以上説明したように、この発明によれば、圧縮データをデコードしたデータを連続して転送する場合、通常のＲＯＭからの転送と全く同じようにできるため、圧縮データをワークＲＡＭに転送する時間やデコードの時間を全く無視できるようになり、画像の表示などに遅延を来すことなくスムーズな画像表示が可能となる。
【０１２６】
また、デコードに時間がかかり、圧縮したデータをしようできなかった画像データにおいてもデータの圧縮が可能となり、ＲＯＭの容量の削減を大幅に行うことができる。
【０１２７】
更に、デコーダ回路へ転送量を設定しない場合、所定のデータを転送した後、デコーダ回路へデコードモードの終了を知らせ、スルーモードに戻す必要があるが、最初に転送量のみを設定しておけば、データ転送終了後の走査を行うことなく自動的にモードを変更することができる。
【０１２８】
デコーダ回路の内部にＲＡＭを持ち、そのＲＡＭのアドレスマップをＲＯＭアドレス上に置けるため、デコードモード時のインストラクションアクセスが見かけ上ＲＯＭから行っていることと同等となり、ワークＲＡＭ上でのプログラムを走らせる必要がなくなり、プログラムの構成が複雑になることを防止できる。
【０１２９】
また、この発明のデコ−ド回路では、デコード動作を行う場合にＤＭＡ設定のプログラムをデコーダに接続されたメモリ以外で走らせる必要が無く、ＤＭＡ動作の設定とデコード指示を行うのみで、容易にデコードされたデータをＤＭＡ転送することができる。
【０１３０】
また、デコード動作中には、指定されたアドレス以外ではスルーモードのアクセスとなるなどデコードデータ以外のアクセスにも対応できるため、例えば、ＤＭＡ動作が行われているときに別の優先順位の高いＤＭＡが発生しても、伸張動作を伴うＤＭＡ動作と通常のＤＭＡ動作を混在して連続なＤＭＡ動作にも対応できるため、容易に使用することができるデコーダ回路を提供することができる。
【０１３１】
また、ＣＰＵでデコードデータをアクセスする場合にも、そのデコーダ回路がデコード動作中にアクセスプログラムをデコーダに接続されたメモリ以外で走らせる必要が無く、デコード動作中のデータアクセス制限事項がないため、ハードによるデータのデコードを容易に使用することができ、その使用方法も容易となる。
【０１３２】
さらに、デコードデータを出力する前の圧縮データの先読みやデコードのための準備時間がとれないシステムでも、デコード動作を容易に行うことができる回路を提供できる。
【図面の簡単な説明】
【図１】この発明をマイクロコンピュータを使用したゲーム機に適用した場合の実施例の構成を示す概略ブロック図である。
【図２】この発明におけるデコーダ回路の第１の実施例を示すブロック図である。
【図３】この発明におけるデコーダ回路の第１の実施例における内部ＲＡＭのマッピング状態の変化を示す模式図であり、（ａ）は変更前のアドレスマップ、（ｂ）はマッピングを行った後のアドレスマップである。
【図４】この発明におけるデコーダ回路の第１の実施例の処理プログラムを示すフローチャートである。
【図５】この発明におけるデコーダ回路の第２の実施例を示すブロック図である。
【図６】この発明におけるデコーダ回路の第２の実施例の処理プログラムを示すフローチャートである。
【図７】この発明におけるデコーダ回路の第２の実施例を用いたＤＭＡ動作開始のタイミングチャートである。
【図８】この発明におけるデコーダ回路の第２の実施例を用いたＤＭＡ動作のタイミングチャートである。
【図９】この発明におけるデコーダ回路の第３の実施例を示すブロック図である。
【図１０】この発明におけるデコーダ回路の第３の実施例の処理プログラムを示すフローチャートである。
【図１１】この発明におけるデコーダ回路の第３の実施例を用いたＤＭＡ動作のタイミングチャートである。
【図１２】この発明におけるデコーダ回路の第４の実施例を示すブロック図である。
【図１３】この発明におけるデコーダ回路の第５の実施例を示すブロック図である。
【図１４】この発明におけるデコーダ回路の第５の実施例の処理プログラムを示すフローチャートである。
【図１５】この発明におけるデコーダ回路の第６の実施例を示すブロック図である。
【図１６】この発明におけるデコーダ回路の第６の実施例を用いたＤＭＡ動作のタイミングチャートである。
【図１７】上記第６の実施例に用いられるＲＯＭの構成を示す図である。
【図１８】この発明をマイクロコンピュータを使用したゲーム機に適用した場合の他の実施例の構成を示す概略ブロック図である。
【図１９】従来のマイクロコンピュータを使用したゲーム機に適用した場合の構成を示す概略ブロック図である。
【符号の説明】
１  ゲーム機本体
２  プログラムカートリッジ
３  ＣＲＴ
１０    ＣＰＵ
１１  ＤＭＡコントローラ
１２  ワークＲＡＭ
１３  ＰＰＵ
１４  ＶＲＡＭ
２０  ＲＯＭ
２１  ＲＡＭ
２３  デコーダ回路
【図１】
0003578528.tif 000002
【図２】
0003578528.tif 000003
【図３】
0003578528.tif 000004
【図４】
0003578528.tif 000005
【図５】
0003578528.tif 000006
【図６】
0003578528.tif 000007
【図７】
0003578528.tif 000008
【図８】
0003578528.tif 000009
【図９】
0003578528.tif 000010
【図１０】
0003578528.tif 000011
【図１１】
0003578528.tif 000012
【図１２】
0003578528.tif 000013
【図１３】
0003578528.tif 000014
【図１４】
0003578528.tif 000015
【図１５】
0003578528.tif 000016
【図１６】
0003578528.tif 000017
【図１７】
0003578528.tif 000018
【図１８】
0003578528.tif 000019
【図１９】
0003578528.tif 000020