(57)【要約】【課題】半導体メモリに格納された種々のデータを高速に読み出すことのできる半導体集積回路、および、これを備えたゲーム用カートリッジを提供する。【解決手段】ＣＰＵがＣポートアクセス部７２にアクセスすると、データＲＯＭ６２内の圧縮データファイルを伸長しつつ読み出すことができる。また、Ｄポートアクセス部７４を介してデータＲＯＭ６２内の非伸長対象データを読み出すことができ、Ｔポートアクセス部７６を介してデータＲＯＭ６２内のデータにＣＰＵが直接ランダムにアクセスすることができる。【選択図】　図２
2004046839.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと前記ＣＰＵに接続されたバスとを備えたコンピュータシステムに使用され、半導体メモリからデータを読み出して前記バス上に出力する半導体集積回路であって、
前記バスを介して前記ＣＰＵから設定されたパラメータに従って、前記圧縮データファイルを読み出すための読出アドレスを生成するアドレス生成回路と、
前記読出アドレスに応じて前記半導体メモリから読み出された圧縮データファイルを伸長して伸長データを生成する伸長回路と、
前記伸長データを前記バス上に出力する回路と、
を有する第１の読出回路を備えることを特徴とする半導体集積回路。
【請求項２】
請求項１記載の半導体集積回路であって、
前記第１の読出回路は、さらに、
前記バスに接続され、前記ＣＰＵにより前記パラメータの１つとして設定された圧縮データファイルのファイル番号を記憶するファイル番号レジスタを備え、
前記アドレス生成回路は、
前記ファイル番号に応じて第１のアドレスを生成し、前記第１のアドレスを前記半導体メモリに与えることによって、前記半導体メモリ内のアドレステーブル領域から前記圧縮データファイルの先頭アドレスを読み出すためテーブルアドレス生成回路と、
前記先頭アドレスに基づいて前記半導体メモリから圧縮データファイルを読み出すための読出アドレスを生成する読出アドレス生成回路と、
を備える半導体集積回路。
【請求項３】
請求項２記載の半導体集積回路であって、
前記第１の読出回路は、さらに、
前記バスに接続され、前記ＣＰＵにより前記パラメータの１つとして設定されたされたオフセット値を記憶するオフセット値レジスタと、
前記圧縮データファイルを伸長して得られた前記伸長データの中で、前記伸長データの先頭から前記オフセット値で示される位置までのデータを出力せず、前記オフセット値で示される位置以降のデータを前記バス上に出力するオフセット調整回路と、
を備える半導体集積回路。
【請求項４】
請求項３記載の半導体集積回路であって、
前記第１の読出回路は、さらに、
前記バスに接続され、前記ＣＰＵにより前記パラメータの１つとして設定されたステップ値を記憶するステップ値レジスタと、
前記圧縮データファイルを伸長して得られた前記伸長データの中で、前記ステップ値で指定された間隔で前記伸長データを前記バス上に出力するステップ調整回路と、
を備える半導体集積回路。
【請求項５】
請求項１ないし４のいずれかに記載の半導体集積回路であって、
前記第１の読出回路は、さらに、
前記コンピュータシステムに備えられたＤＭＡ転送回路によって前記伸長データをＤＭＡ転送するために、前記伸長データを保持するＤＭＡ転送用データレジスタを備え、
前記伸長回路の伸長速度は前記ＤＭＡ転送回路による転送速度以上である、
半導体集積回路。
【請求項６】
請求項１ないし４のいずれかに記載の半導体集積回路であって、
前記第１の読出回路は、さらに、
前記伸長回路で得られた前記伸長データを格納し、格納した伸長データを前記ＤＭＡ転送用レジスタに供給する伸長データバッファを備え、これによって、前記伸長回路の伸長速度が前記ＤＭＡ転送回路による転送速度以下である場合にも前記ＤＭＡ転送回路によって前記伸長データを連続してＤＭＡ転送しうるように構成されている、半導体集積回路。
【請求項７】
請求項１ないし６のいずれかに記載の半導体集積回路であって、さらに、
前記バスを介して前記ＣＰＵから供給されたアドレスの中で所定範囲の下位ビット部を前記半導体メモリにそのまま与えることよって前記半導体メモリからデータを読み出し、読み出されたデータを前記バス上に出力する第２の読出回路を備える、
半導体集積回路。
【請求項８】
ＣＰＵと前記ＣＰＵに接続されたバスとを備えたコンピュータシステムに使用され、半導体メモリからデータを読み出して前記バス上に出力する半導体集積回路であって、
前記バスを介して前記ＣＰＵから設定されたパラメータに従って、前記半導体集積回路内では伸長されない非伸長対象データを前記半導体メモリから読み出すための読出アドレスを生成するアドレス生成回路と、
前記読出アドレスに応じて前記半導体メモリから読み出された非伸長対象データを前記バス上に出力する回路と、
を含む読出回路を備えることを特徴とする半導体集積回路。
【請求項９】
請求項８記載の半導体集積回路であって、
前記非伸長対象データは、前記コンピュータシステム内のＲＡＭに格納されて前記ＣＰＵによって実行されるプログラムコードである、半導体集積回路。
【請求項１０】
請求項８記載の半導体集積回路であって、
前記非伸長対象データは、前記ＣＰＵによって伸長される圧縮データである、半導体集積回路。
【請求項１１】
ＣＰＵと前記ＣＰＵに接続されたバスとを備えたコンピュータシステムに使用され、半導体メモリからデータを読み出して前記バス上に出力する半導体集積回路であって、
前記バスを介して前記ＣＰＵから設定された第１のパラメータに従って第１の読出アドレスを生成し、前記第１の読出アドレスに応じて前記半導体メモリから圧縮データファイルを読み出し、読み出された圧縮データファイルを伸長して伸長データを生成するとともに、前記バス上に前記伸長データを出力する第１の読出回路と、
前記バスを介して前記ＣＰＵから設定された第２のパラメータに従って第２の読出アドレスを生成し、前記第２の読出アドレスに応じて前記半導体メモリから非伸長対象データを読み出すとともに、読み出された非伸長対象データを前記バス上に出力する第２の読出回路と、
を備えることを特徴とする半導体集積回路。
【請求項１２】
請求項１１記載の半導体集積回路であって、
前記第１の読出回路は、
前記バスに接続され、前記ＣＰＵにより前記第１のパラメータの１つとして設定された圧縮データファイルのファイル番号を記憶するファイル番号レジスタと、
前記ファイル番号に応じて、前記半導体メモリ内のアドレステーブル領域から前記第１の読出アドレスを読み出すとともに、前記第１の読出アドレスを前記半導体メモリに与えることによって、前記半導体メモリから圧縮データを読み出すアドレス生成回路と、
を備える半導体集積回路。
【請求項１３】
請求項１２記載の半導体集積回路であって、
前記第１の読出回路は、さらに、
前記バスに接続され、前記ＣＰＵにより前記第１のパラメータの１つとして設定されたされたオフセット値を記憶するオフセット値レジスタと、
前記圧縮データファイルを伸長して得られた前記伸長データの中で、前記伸長データの先頭から前記オフセット値で示される位置までのデータを出力せず、前記オフセット値で示される位置以降のデータを前記バス上に出力するオフセット調整回路とを備える、
半導体集積回路。
【請求項１４】
請求項１３記載の半導体集積回路であって、
前記第１の読出回路は、さらに、
前記バスに接続され、前記ＣＰＵにより前記第１のパラメータの１つとして設定されたステップ値を記憶するステップ値レジスタと、
前記圧縮データファイルを伸長して得られた前記伸長データの中で、前記ステップ値で指定された間隔で前記伸長データを前記バス上に出力するステップ調整回路とを備える、
半導体集積回路。
【請求項１５】
請求項１１ないし１４のいずれかに記載の半導体集積回路であって、
前記第１の読出回路は、さらに、
前記コンピュータシステムに備えられたＤＭＡ転送回路によって前記伸長データをＤＭＡ転送するために、前記伸長データを保持するＤＭＡ転送用データレジスタを備え、
前記伸長回路の伸長速度は前記ＤＭＡ転送回路による転送速度以上である、半導体集積回路。
【請求項１６】
請求項１１ないし１４のいずれかに記載の半導体集積回路であって、
前記第１の読出回路は、さらに、
前記伸長回路で得られた前記伸長データを格納し、格納した伸長データを前記ＤＭＡ転送用レジスタに供給する伸長データバッファを備え、これによって、前記伸長回路の伸長速度が前記ＤＭＡ転送回路による転送速度以下である場合にも前記ＤＭＡ転送回路によって前記伸長データを連続してＤＭＡ転送しうるように構成されている、半導体集積回路。
【請求項１７】
請求項１１ないし１６のいずれかに記載の半導体集積回路であって、さらに、
前記バスを介して前記ＣＰＵから供給されたアドレスの中で所定範囲の下位ビット部を前記半導体メモリにそのまま与えることよって前記半導体メモリからデータを読み出し、読み出されたデータを前記バス上に出力する第３の読出回路を備える、半導体集積回路。
【請求項１８】
コンピュータゲーム機に使用されるゲーム機用カートリッジであって、
請求項１ないし１７のいずれかに記載された半導体集積回路と、
前記半導体メモリと、
を備えるゲーム機用カートリッジ。
【請求項１９】
請求項１８記載のゲーム機用カートリッジであって、
カートリッジ内に収納された半導体メモリの中のすべてのＲＯＭのアドレスバスとデータバスが前記半導体集積回路に接続されており、前記ＲＯＭ内に格納されたデータが前記半導体集積回路を介して読み出されるように構成されている、ゲーム機用カートリッジ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、半導体メモリからデータを読み出してコンピュータシステムのバス上にデータを出力するための半導体集積回路、および、これを備えたゲーム機用カートリッジに関する。
【０００２】
【従来の技術】
コンピュータゲームのゲーム機では、半導体メモリから種々の画像データを読み出しながらゲームが実行される。画像データはデータ量が大きいので、圧縮データとして半導体メモリに格納されているのが普通である。このような場合に、従来は、半導体メモリから読み出された画像の圧縮データをＣＰＵが伸長していた。
【０００３】
【発明が解決しようとする課題】
従来は、ＣＰＵが伸長処理を行なっていたので、伸長速度が遅いという問題があった。従って、伸長速度が過度に低下するのを防止するため、複雑な圧縮アルゴリズムを採用することができなかった。
【０００４】
また、ゲームのために使用されるデータは、画像の圧縮データの他に、ゲームのプログラムコードや、音声の圧縮データ等の種々のデータが存在する。従来は、このような種々のデータをそれぞれに応じたモードで高速で読み出すことが困難であった。
【０００５】
この発明は、従来技術における上述の課題を解決するためになされたものであり、半導体メモリに格納された種々のデータを高速に読み出すことのできる半導体集積回路、および、これを備えたゲーム用カートリッジを提供することを目的とする。
【０００６】
【課題を解決するための手段および作用】
上述の課題を解決するため、請求項１に記載された半導体集積回路は、ＣＰＵと前記ＣＰＵに接続されたバスとを備えたコンピュータシステムに使用され、半導体メモリからデータを読み出して前記バス上に出力する半導体集積回路であって、
前記バスを介して前記ＣＰＵから設定されたパラメータに従って、前記圧縮データファイルを読み出すための読出アドレスを生成するアドレス生成回路と、
前記読出アドレスに応じて前記半導体メモリから読み出された圧縮データファイルを伸長して伸長データを生成する伸長回路と、
前記伸長データを前記バス上に出力する回路と、
を有する第１の読出回路を備えることを特徴とする。
【０００７】
ＣＰＵが第１の読出回路にパラメータを設定すると、第１の読出回路が半導体メモリから圧縮データを読出し、伸長した後に伸長データをバス上に出力する。
【０００８】
請求項２に記載された半導体集積回路では、
前記第１の読出回路は、さらに、
前記バスに接続され、前記ＣＰＵにより前記パラメータの１つとして設定された圧縮データファイルのファイル番号を記憶するファイル番号レジスタを備え、
前記アドレス生成回路は、
前記ファイル番号に応じて第１のアドレスを生成し、前記第１のアドレスを前記半導体メモリに与えることによって、前記半導体メモリ内のアドレステーブル領域から前記圧縮データファイルの先頭アドレスを読み出すためテーブルアドレス生成回路と、
前記先頭アドレスに基づいて前記半導体メモリから圧縮データファイルを読み出すための読出アドレスを生成する読出アドレス生成回路と、
を備える。
【０００９】
半導体メモリ内のアドレステーブル領域に各圧縮データファイルのファイル番号とアドレスとの対応関係を格納しておき、ＣＰＵがファイル番号を指定すると所望の圧縮データファイルを読み出すことができる。
【００１０】
請求項３に記載された半導体集積回路では、
前記第１の読出回路は、さらに、
前記バスに接続され、前記ＣＰＵにより前記パラメータの１つとして設定されたされたオフセット値を記憶するオフセット値レジスタと、
前記圧縮データファイルを伸長して得られた前記伸長データの中で、前記伸長データの先頭から前記オフセット値で示される位置までのデータを出力せず、前記オフセット値で示される位置以降のデータを前記バス上に出力するオフセット調整回路と、を備える。
【００１１】
こうすれば、伸長データの中でオフセット値で示される以降のデータのみを選択的に出力することができる。
【００１２】
請求項４に記載された半導体集積回路では、
前記第１の読出回路は、さらに、
前記バスに接続され、前記ＣＰＵにより前記パラメータの１つとして設定されたステップ値を記憶するステップ値レジスタと、
前記圧縮データファイルを伸長して得られた前記伸長データの中で、前記ステップ値で指定された間隔で前記伸長データを前記バス上に出力するステップ調整回路と、を備える。
【００１３】
こうすれば、伸長データをステップ値で指定された間隔で出力することができる。
【００１４】
請求項５に記載された半導体集積回路では、
前記第１の読出回路は、さらに、
前記コンピュータシステムに備えられたＤＭＡ転送回路によって前記伸長データをＤＭＡ転送するために、前記伸長データを保持するＤＭＡ転送用データレジスタを備え、
前記伸長回路の伸長速度は前記ＤＭＡ転送回路による転送速度以上である。
【００１５】
こうすれば、伸長データをコンピュータシステム内の他の回路に高速に転送することができる。
【００１６】
請求項６に記載された半導体集積回路では、
前記第１の読出回路は、さらに、
前記伸長回路で得られた前記伸長データを格納し、格納した伸長データを前記ＤＭＡ転送用レジスタに供給する伸長データバッファを備え、これによって、前記伸長回路の伸長速度が前記ＤＭＡ転送回路による転送速度以下である場合にも前記ＤＭＡ転送回路によって前記伸長データを連続してＤＭＡ転送しうるように構成されている。
【００１７】
こうすれば、伸長回路の伸長速度がＤＭＡ転送回路による転送速度以下である場合にも、ＤＭＡ転送回路によって伸長データをある程度連続してＤＭＡ転送することができる。
【００１８】
請求項７に記載された半導体集積回路では、さらに、
前記バスを介して前記ＣＰＵから供給されたアドレスの中で所定範囲の下位ビット部を前記半導体メモリにそのまま与えることよって前記半導体メモリからデータを読み出し、読み出されたデータを前記バス上に出力する第２の読出回路を備える。
【００１９】
こうすれば、ＣＰＵが出力したアドレスに応じて半導体メモリからランダムにデータを読み出すことができるので、ＣＰＵが半導体メモリにランダムにアクセスすることができる。
【００２０】
請求項８に記載された半導体集積回路は、ＣＰＵと前記ＣＰＵに接続されたバスとを備えたコンピュータシステムに使用され、半導体メモリからデータを読み出して前記バス上に出力する半導体集積回路であって、
前記バスを介して前記ＣＰＵから設定されたパラメータに従って、前記半導体集積回路内では伸長されない非伸長対象データを前記半導体メモリから読み出すための読出アドレスを生成するアドレス生成回路と、
前記読出アドレスに応じて前記半導体メモリから読み出された非伸長対象データを前記バス上に出力する回路と、
を含む読出回路を備えることを特徴とする。
【００２１】
ＣＰＵが読出回路にパラメータを設定すると、読出回路が半導体メモリから非伸長対象データを読出してバス上に出力する。
【００２２】
請求項９に記載された半導体集積回路では、
前記非伸長対象データは、前記コンピュータシステム内のＲＡＭに格納されて前記ＣＰＵによって実行されるプログラムコードである。
【００２３】
請求項１０に記載された半導体集積回路では、
前記非伸長対象データは、前記ＣＰＵによって伸長される圧縮データである。
【００２４】
請求項１１に記載された半導体集積回路は、ＣＰＵと前記ＣＰＵに接続されたバスとを備えたコンピュータシステムに使用され、半導体メモリからデータを読み出して前記バス上に出力する半導体集積回路であって、
前記バスを介して前記ＣＰＵから設定された第１のパラメータに従って第１の読出アドレスを生成し、前記第１の読出アドレスに応じて前記半導体メモリから圧縮データファイルを読み出し、読み出された圧縮データファイルを伸長して伸長データを生成するとともに、前記バス上に前記伸長データを出力する第１の読出回路と、
前記バスを介して前記ＣＰＵから設定された第２のパラメータに従って第２の読出アドレスを生成し、前記第２の読出アドレスに応じて前記半導体メモリから非伸長対象データを読み出すとともに、読み出された非伸長対象データを前記バス上に出力する第２の読出回路と、
を備えることを特徴とする。
【００２５】
圧縮データを読み出す場合には、ＣＰＵが第１の読出回路に第１のパラメータを設定すると、第１の読出回路が半導体メモリから圧縮データを読出し、伸長した後に伸長データをバス上に出力する。一方、非伸長対象データを読み出す場合には、ＣＰＵが第２の読出回路に第２のパラメータを設定すると、第２の読出回路が半導体メモリから非伸長対象データを読出してバス上に出力する。従って、ＣＰＵが第１と第２の読出回路の一方にアクセスしてパラメータを設定することによって、同一の半導体メモリから圧縮データと非伸長対象データとをそれぞれ区別して読み出すことができる。
【００２６】
請求項１２に記載された半導体集積回路では、
前記第１の読出回路は、
前記バスに接続され、前記ＣＰＵにより前記第１のパラメータの１つとして設定された圧縮データファイルのファイル番号を記憶するファイル番号レジスタと、
前記ファイル番号に応じて、前記半導体メモリ内のアドレステーブル領域から前記第１の読出アドレスを読み出すとともに、前記第１の読出アドレスを前記半導体メモリに与えることによって、前記半導体メモリから圧縮データを読み出すアドレス生成回路と、を備える。
【００２７】
請求項１３に記載された半導体集積回路では、
前記第１の読出回路は、さらに、
前記バスに接続され、前記ＣＰＵにより前記第１のパラメータの１つとして設定されたされたオフセット値を記憶するオフセット値レジスタと、
前記圧縮データファイルを伸長して得られた前記伸長データの中で、前記伸長データの先頭から前記オフセット値で示される位置までのデータを出力せず、前記オフセット値で示される位置以降のデータを前記バス上に出力するオフセット調整回路とを備える。
【００２８】
請求項１４に記載された半導体集積回路では、
前記第１の読出回路は、さらに、
前記バスに接続され、前記ＣＰＵにより前記第１のパラメータの１つとして設定されたステップ値を記憶するステップ値レジスタと、
前記圧縮データファイルを伸長して得られた前記伸長データの中で、前記ステップ値で指定された間隔で前記伸長データを前記バス上に出力するステップ調整回路とを備える。
【００２９】
請求項１５に記載された半導体集積回路では、
前記第１の読出回路は、さらに、
前記コンピュータシステムに備えられたＤＭＡ転送回路によって前記伸長データをＤＭＡ転送するために、前記伸長データを保持するＤＭＡ転送用データレジスタを備え、
前記伸長回路の伸長速度は前記ＤＭＡ転送回路による転送速度以上である。
【００３０】
請求項１６に記載された半導体集積回路では、
前記第１の読出回路は、さらに、
前記伸長回路で得られた前記伸長データを格納し、格納した伸長データを前記ＤＭＡ転送用レジスタに供給する伸長データバッファを備え、これによって、前記伸長回路の伸長速度が前記ＤＭＡ転送回路による転送速度以下である場合にも前記ＤＭＡ転送回路によって前記伸長データを連続してＤＭＡ転送しうるように構成されている。
【００３１】
請求項１７に記載された半導体集積回路では、さらに、
前記バスを介して前記ＣＰＵから供給されたアドレスの中で所定範囲の下位ビット部を前記半導体メモリにそのまま与えることよって前記半導体メモリからデータを読み出し、読み出されたデータを前記バス上に出力する第３の読出回路を備える。
【００３２】
請求項１８に記載されたゲーム機用カートリッジは、
請求項１ないし１７のいずれかに記載された半導体集積回路と、
前記半導体メモリと、を備える。
【００３３】
請求項１９に記載されたゲーム機用カートリッジでは、
カートリッジ内に収納された半導体メモリの中のすべてのＲＯＭのアドレスバスとデータバスが前記半導体集積回路に接続されており、前記ＲＯＭ内に格納されたデータが前記半導体集積回路を介して読み出されるように構成されている。
【００３４】
【発明の実施の形態】
Ａ．装置の全体構成
【００３５】
図１は、この発明の一実施例としてのデータ読出用半導体集積回路を備えたコンピュータシステムの構成を示すブロック図である。このコンピュータシステムは、本体部３０と、ＲＯＭカートリッジ５０と、スピーカ５２と、カラーディスプレイ５４とを備えている。本体部３０は、ＣＰＵ３２と、ＤＭＡコントローラ３４と、ＲＡＭ３６（以下、「ワークＲＡＭ」と呼ぶ）と、音声信号生成回路３８と、表示制御回路４０と、画像データ制御回路４２と、ビデオＲＡＭ（ＶＲＡＭ）４４とを備えている。本体部３０内の各回路は、ＣＰＵバス３１を介して相互に接続されている。また、ＲＯＭカートリッジ５０は、コネクタ４６を介してＣＰＵバス３１に接続されている。
【００３６】
ＤＭＡコントローラ３４は、ＣＰＵ３２の代わりにバス３１を占有して、ダイレクト・メモリ・アクセス転送（ＤＭＡ転送）を行なう回路である。この実施例では、例えば、ＲＯＭカートリッジ５０内のＲＯＭに格納された画像データをＶＲＡＭ４４に転送する処理を実行する。音声信号生成回路３８は、ＣＰＵ３２から与えられたデータに応じて音声信号を生成し、この音声信号をスピーカ５２に供給する。表示制御回路４０は、画像データ制御回路４２によってＶＲＡＭ４４から読み出された画像データから映像信号を生成し、この映像信号をカラーディスプレイ５４に供給する。画像データ制御回路４２は、ＶＲＡＭ４４から画像データを読み出して表示制御回路４０に与える制御を行なうとともに、ＶＲＡＭ４４に種々の画像データを書き込む制御等も実行する。
【００３７】
このコンピュータシステムはゲーム機であり、アプリケーションプログラムを格納したＲＯＭカートリッジ５０をコネクタ４６に差込むことによって種々のゲームを実行することができる。
【００３８】
図２は、ＲＯＭカートリッジ５０の内部構成を示すブロック図である。ＲＯＭカートリッジ５０は、データ読出用半導体集積回路（以下、「データ読出用ＩＣ」と呼ぶ）６０と、２つのＲＯＭ６２，６４とを備えている。第１のＲＯＭ６２は圧縮画像データと非伸長対象データとを格納するマスクＲＯＭ（以下、「データＲＯＭ」と呼ぶ）であり、第２のＲＯＭ６４はゲームのアプリケーションプログラムを格納するＲＯＭ（以下、「プログラムＲＯＭ」と呼ぶ）である。第１のＲＯＭ６２はデータ読出用ＩＣ６０に接続されており、また、第２のＲＯＭ６４はバス３１に直接接続されている。ＣＰＵ３２はプログラムＲＯＭ６４に直接アクセスできるので、プログラムＲＯＭ６４に格納されたプログラムコードにランダムにアクセスことができる。プログラムＲＯＭ６４として、読出速度がデータＲＯＭ６２よりも高速なＲＯＭを用いるようにすれば、アプリケーションプログラムをスムースに実行することができる。
【００３９】
データ読出用ＩＣ６０は、ＣＰＵバス３１に接続されるＣＰＵインタフェイス７０と、Ｃポートアクセス部７２と、Ｄポートアクセス部７４と、Ｔポートアクセス部７６と、２つのＲＯＭ６２、６４に接続されたＲＯＭインタフェイス７８とを備えている。ＲＯＭインタフェイス７８は、ＣポートとＤポートとＴポートの３つのポートを有している。
【００４０】
Ｃポートアクセス部７２は、ＲＯＭインタフェイス７８のＣポートを介してデータＲＯＭ６２から圧縮データを読み出すための回路であり、本願発明における第１の読出回路に相当する。なお、Ｃポートアクセス部７２は、データＲＯＭ６２から読み出された圧縮データを伸長する伸長回路８０を有している。Ｄポートアクセス部７４は、ＲＯＭインタフェイス７８のＤポートを介してデータＲＯＭ６２から非伸長対象データを読み出すための回路であり、本願発明における第２の読出回路に相当する。Ｔポートアクセス部７６は、ＲＯＭインタフェイス７８のＴポートを介してＣＰＵ３２から与えられたアドレスの所定の下位ビットをそのままデータＲＯＭ６２に与えてデータを読み出すための回路であり、本願発明における第３の読出回路に相当する。
【００４１】
なお、ＲＯＭインタフェイス７８は、３つのアクセス部７２，７４，７６がデータＲＯＭ６２に同時にアクセスした場合に、所定の優先度に従ってアクセスを調停するアクセス調停部７９を有している。このアクセスの優先度は、例えば、Ｔポートアクセス部７６、Ｄポートアクセス部７４、Ｃポートアクセス部７２の順に予め設定される。以下では、３つのアクセス部７２，７４，７６の内部構成と動作について順次説明する。
【００４２】
Ｂ．Ｃポートアクセス部の内部構成と動作
【００４３】
図３は、Ｃポートアクセス部７２の内部構成を示すブロック図である。Ｃポートアクセス部７２は、伸長回路８０の他に、ＣＰＵ３２によって設定された種々のパラメータを記憶する第１のレジスタ群１０２〜１１０と、Ｃポートアクセス部７２で得られたデータをＣＰＵインタフェイス７０を介してＣＰＵバス３１上に出力する第２のレジスタ群１１２〜１１８と、伸長データバッファ１２０と、２つのアドレス生成回路１２２，１２４と、圧縮データバッファ１２６と、マルチプレクサ１２８とを備えている。
【００４４】
第１のレジスタ群１０２〜１１０は、ベースアドレスレジスタ１０２と、ファイル番号レジスタ１０４と、オフセット値レジスタ１０６と、ステップ値レジスタ１０８と、トリガレジスタ１１０とを含んでいる。また、第２のレジスタ群１１２〜１１８は、ステータスレジスタ１１２と、伸長データ長レジスタ１１４と、伸長データレジスタ１１６と、ＤＭＡ用データレジスタ１１８とを含んでいる。ＣＰＵ３２は、第１のレジスタ群１０２〜１１０にパラメータを設定することによって、所望の圧縮データファイルを読み出すことができる。
【００４５】
伸長回路８０は、シーケンサ８２とオフセット／ステップ調整回路８４とを備えている。シーケンサ８２は、第２のアドレス生成回路（読出アドレス生成回路）１２４のアドレスのインクリメントのタイミングを指示する機能を有する。また、オフセット／ステップ調整回路８４は、オフセット値レジスタ１０６に設定されたオフセット値とステップ値レジスタ１０８に設定されたステップ値とに応じて、伸長データの中の有効なデータのみを伸長データバッファ１２０に書き込む機能を有する。これらの機能については更に後述する。
【００４６】
図４は、ＣＰＵ３２から見たアドレスマップを示す説明図である。プログラムＲＯＭ６４は、ＣＰＵ３２のアドレス空間に直接に割り当てられている。一方、データＲＯＭ６２内のデータは、データ読出用ＩＣ６０の読出ポートを介してアクセスするようにマッピングされている。データＲＯＭ６２は、圧縮データ用テーブル６２ａと、圧縮データファイル領域６２ｂと、非伸長対象データ領域６２ｃとを有している。圧縮データ用テーブル６２ａと圧縮データファイル領域６２ｂは、Ｃポートアクセス部７２によってアクセスされる。また、非伸長対象データ領域６２ｃはＤポートアクセス部７４によってアクセスされる。Ｔポートアクセス部７６によってアクセスされる場合については後述する。
【００４７】
図５は、圧縮データ用テーブル６２ａと圧縮データファイル領域６２ｂの内容を示す説明図である。圧縮データ用テーブル６２ａでは、各圧縮データファイルがファイル番号で互いに区別されており、各ファイル番号の圧縮データファイルのデータ属性と、圧縮データファイルが格納されているアドレスＨ，Ｍ，Ｌとが登録されている。データ属性は、例えばバイナリデータ（２値の白黒画像データ）、４色画像データ、１６色画像データ等の種々の画像データのタイプを示している。また、各８ビットの３つのアドレスＨ，Ｍ，Ｌは、圧縮データファイル領域６２ｂにおける圧縮データファイルの先頭アドレスＢＮを示す合計２４ビットのアドレスを構成する。従って、圧縮データ用テーブル６２ａの先頭アドレス（ベースアドレス）Ａｂと、圧縮データファイルのファイル番号Ｎとを指定することによって、指定されたファイル番号Ｎに対応する圧縮データファイルの先頭アドレスＢＮとそのデータ属性とを圧縮データ用テーブル６２ａから読み出すことができる。そして、この先頭アドレスＢＮを用いて、圧縮データファイル領域６２ｂから圧縮データファイルを読み出すことができる。
【００４８】
図６は、圧縮データファイルで表わされる画像の例を示す説明図である。１つの圧縮データファイルで表わされる画像のサイズは様々であり、図６（Ａ），（Ｂ），（Ｃ）の画像はそれぞれ８×８キャラクタ、５×４キャラクタ、１キャラクタで構成されている。ここで、１キャラクタとは８×８画素の正方領域内の画像部分を意味しており、各キャラクタ単位に画像が圧縮されている。
【００４９】
ゲームなどのアプリケーションプログラムに必要とされる画像の数や、各画像のデータ属性、各画像のサイズなどは、各プログラム毎にかなり異なる。また、各画像の圧縮データファイルのデータ量も同一では無い。そこで、図５に示すように、各圧縮データファイルにファイル番号を割り当てておき、ファイル番号に従って、データＲＯＭ６２内のテーブル６２ａにファイル番号Ｎと圧縮データファイルの先頭アドレスＢＮとの関係を登録してこき、このテーブル６２ａから圧縮データファイルの先頭アドレスＢＮを読み出すようにすれば、プログラム作成者が任意の属性で任意のサイズの画像を任意の数だけ使用することができる。従って、アプリケーションプログラムの作成における融通性が高まるという利点がある。
【００５０】
図７は、Ｃポートアクセス部７２による圧縮データの読出手順を示すフローチャートである。ステップＳ１では、Ｃポートアクセス部７２の初期化ルーチンが実行される。
【００５１】
図８は、初期化ルーチンの詳細を示すフローチャートである。ステップＳ１１では、ＣＰＵ３２が、図３に示すベースアドレスレジスタ１０２と、ファイル番号レジスタ１０４と、オフセット値レジスタ１０６と、ステップ値レジスタ１０８とにそれぞれのデータを設定する。ベースアドレスレジスタ１０２には、図５に示す圧縮データ用テーブル６２ａの先頭を示すベースアドレスＡｂが設定される。ファイル番号レジスタ１０４には、読出したい圧縮データファイルのファイル番号Ｎが設定される。オフセット値レジスタ１０６に設定されるオフセット値と、ステップ値レジスタ１０８に設定されるステップ値については後述する。
【００５２】
ステップＳ１２では、ＣＰＵ３２がトリガレジスタ１１０にアクセスすることによって、Ｃポートアクセス部７２に圧縮データの読出しを開始させる。すなわち、Ｃポートアクセス部７２は、ＣＰＵ３２がトリガレジスタ１１０にアクセスしたことを検知すると、ステップＳ１３以降の処理を開始する。
【００５３】
ステップＳ１３では、伸長回路８０（図３）がステータスレジスタ１１２をビジーに設定する。ステータスレジスタ１１２がビジーの場合には、ＣＰＵ３２がＣポートアクセス部７２から伸長データを読み出すことが禁止される。ステップＳ１３の時点では伸長データが得られていないので、ステータスレジスタ１１２をビジーに設定することによって、ＣＰＵ３２によるデータの読出しを禁止する。ステップＳ１３ではさらに、圧縮データバッファ１２６と伸長データバッファ１２０とがリセットされる。
【００５４】
ステップＳ１４では、テーブルアドレス生成回路１２２（図３）が、ステップＳ１１で設定されたベースアドレスＡｂとファイル番号Ｎとに応じて、圧縮データ用テーブル６２ａの読出アドレスを生成する。例えば、圧縮データ用テーブル６２ａに登録されている各ファイル番号に関するデータが４バイトである場合には、ファイル番号Ｎに関するデータのアドレスＡＮは、次の式（１）で算出される。
【００５５】
ＡＮ＝Ａｂ＋Ｎ＊４　　　…（１）
【００５６】
テーブルアドレス生成回路１２２で生成されたアドレスＡＮは、マルチプレクサ１２８とＲＯＭインタフェイス７８を介してデータＲＯＭ６２に与えられる。この結果、ステップＳ１５において、ファイル番号Ｎの圧縮データファイルの先頭アドレスＢＮが読み出される。なお、データＲＯＭ６２から読み出された先頭アドレスＢＮは、ＲＯＭインタフェイス７８を介して読出アドレス生成回路１２４に供給される。後述する圧縮データの取り込みルーチンでは、読出アドレス生成回路１２４が、この先頭アドレスＢＮに基づいて圧縮データファイルの読出アドレスを生成する。
【００５７】
こうして初期化ルーチンが終了すると、図７のステップＳ２において、圧縮データバッファ１２６に格納されている圧縮データのデータ量ｎが、所定の最低データ量ｎ１以上であるか否かが判断される。最低データ量ｎ１としては、例えば１バイト程度が設定される。もちろん、伸長時の最低データ量ｎ１として２バイト以上の任意の値を設定することも可能である。圧縮データの読出処理の最初の時点では、圧縮データバッファ１２６はリセットされており、圧縮データバッファ１２６は空なので、ステップＳ２からステップＳ３に移行し、圧縮データの取り込みルーチンが実行される。
【００５８】
図９は、圧縮データの取り込みルーチンの手順を示すフローチャートである。このルーチンでは、読出アドレス生成回路１２４がデータＲＯＭ６２の実アドレス（「物理アドレス」とも呼ぶ）をインクリメントしながら（ステップＳ２１）、データＲＯＭ６２から圧縮データを１バイトずつ圧縮データバッファ１２６に読込む処理が繰返される。図３の回路から解るように、読出アドレス生成回路１２４で生成された実アドレスはマルチプレクサ１２８とＲＯＭインタフェイス７８とを介してデータＲＯＭ６２に与えられ、データＲＯＭ６２から読み出された圧縮データは圧縮データバッファ１２６に蓄積される。図７のステップＳ２における伸長時の最低データ量ｎ１が１バイトである場合には、１バイトの圧縮データが圧縮データバッファ１２６に読込まれると、ステップＳ２からステップＳ４に移行する。
【００５９】
ステップＳ４では、圧縮データバッファ１２６に格納されている圧縮データのデータ量ｎが、圧縮データバッファ１２６の容量ｎ２に等しいか否か、すなわち圧縮データバッファ１２６が満杯か否かが判断される。圧縮データバッファ１２６が満杯で無ければステップＳ６とステップＳ７が同時に実行されて、圧縮データの取り込みと伸長とが同時に行なわれる。圧縮データの取り込みと伸長は、それぞれ専用のハードウェア回路（読出アドレス生成回路１２４と伸長回路８０）によって実行されるので、これらの２つの処理を同時に実行することが可能である。
【００６０】
図１０は、伸長回路８０によって実行される伸長ルーチンの手順を示すフローチャートである。ステップＳ３１では、ステータスレジスタ１１２をビジーに設定することによって、ＣＰＵ３２が伸長データを読み出すことを禁止する。ステップＳ３２では、伸長回路８０が圧縮データバッファ１２６から圧縮データを所定量（例えば１バイト）だけ取り込む。ステップＳ３３では、伸長回路８０が圧縮データを伸長し、ステップＳ３４では伸長データバッファ１２０に伸長データを書き込む。ステップＳ３５では、伸長データバッファ１２０に格納されている伸長データのデータ量ｍが、所定の最低データ量ｍ１以上であるか否かが判断される。この最低データ量ｍ１としては、例えば１バイト程度が設定される。もちろん、読出時の最低データ量ｍ１として２バイト以上の任意の値を設定することも可能である。
【００６１】
伸長データのデータ量ｍが読出時の最低データ量ｍ１未満の場合には、ステップＳ３５からステップＳ３１に戻り、ステップＳ３１〜Ｓ３４を再度実行して伸長処理を行なう。一方、伸長データのデータ量ｍが読出時の最低データ量ｍ１以上になった場合には、ステップＳ３５からステップＳ３６に移行する。ステップＳ３６では、ステータスレジスタ１１２がレディとなり、これによってＣＰＵ３２の読出しを許可する。ステータスレジスタ１１２は、伸長データバッファ１２０に所定量以上の伸長データが貯まっており、伸長データレジスタ１１６にデータがセットアップされていればレディとなる。ＣＰＵ３２は、ステータスレジスタ１１２を一定時間毎に監視（すなわちポーリング）し、ステータスレジスタ１１２がレディであれば、伸長データレジスタ１１６から１バイトの伸長データを読込む。
【００６２】
そして、ＣＰＵ３２によって伸長データが読込まれると、ステップＳ３７からステップＳ３１に戻り、ステップＳ３１〜Ｓ３７の処理を繰返す。ＣＰＵ３２によってデータが読込まれたか否かは、ＣＰＵ３２から伸長データレジスタ１１６のアドレスとリードパルスが出力されたことを検出することによって判断される。なお、伸長データ長レジスタ１１４は、伸長対象となっている圧縮データの伸長時のデータ量のうち、ＣＰＵ３２に読み出されていないデータ量を示している。すなわち、伸長処理の開始時に、圧縮データの伸長時のデータ量が初期値として伸長データ長レジスタ１１４に設定され、伸長データがＣＰＵ３２によって読込まれる際にその値がデクリメントされる。
【００６３】
このように、読出アドレス生成回路１２４はデータＲＯＭ６２から圧縮データを順次読み出して圧縮データバッファ１２６に格納し、伸長回路８０は圧縮データを順次伸長していくので、図７のステップＳ６とステップＳ７を同時に実行することが可能である。また、伸長処理の最中に、ＣＰＵ３２が伸長データを読込むことも可能である。
【００６４】
ところで、伸長された画像データをＤＭＡ転送によってＣポートアクセス部７２からＶＲＡＭ４４やワークＲＡＭ３６（図１）に転送する場合もある。この場合には、ＤＭＡコントローラ３４がバス３１の使用権をＣＰＵ３２から取得し、Ｃポートアクセス部７２内のＤＭＡ用データレジスタ１１８（図３）に格納された伸長データを順次ＶＲＡＭ４４またはワークＲＡＭ３６にＤＭＡ転送する。圧縮データの伸長は、専用のハードウェア回路である伸長回路８０で行なうので、ＤＭＡ転送の転送速度以上の伸長速度で圧縮データを伸長して、ＤＭＡ転送がスムースに行なえるようにすることが可能である。例えば、伸長回路８０がその動作クロックの１周期ごとに１ビットずつ伸長する動作を行なう場合には、伸長回路８０の動作クロックが、ＤＭＡコントローラ３４の転送速度の８倍の周波数に設定される。こうすれば、８クロック分の周期の間に１バイトの伸長データが得られるので、その１バイトの伸長データをＤＭＡコントローラ３４の転送速度で転送することができる。
【００６５】
一般に、データの圧縮や伸長に要する時間はデータの内容に依存する。ゲームカートリッジ内のＲＯＭに格納するデータの圧縮は、そのゲームデータの作成時に、いわゆるオーサリングツールを用いて行なわれる。つまり、ゲームデータの作成時には、圧縮データの伸長に要する時間を知ることが可能である。従って、伸長速度がＤＭＡ転送速度を下回った場合にも、伸長データバッファ１２０に貯えられたデータを順次転送していくことによって、ある程度連続的なＤＭＡ転送を行なうことが可能である。伸長データバッファ１２０は、このように、伸長速度がＤＭＡ転送速度を下回った場合にも、ある程度連続的なＤＭＡ転送を行なうために設けられている。
【００６６】
Ｃ．Ｃポートアクセス部によるオフセット／ステップ読出処理
【００６７】
Ｃポートアクセス部７２は、オフセット値レジスタ１０６とステップ値レジスタ１０８に設定された値に応じて、下記に示すような伸長データのオフセット読出処理やステップ読出処理を行なうことができる。
【００６８】
図１１は、オフセット読出処理の内容を示す説明図である。図１１（Ａ）は、１つの圧縮データファイルから伸長された伸長データで表わされる画像の全体を示している。この画像は、８×８キャラクタのサイズを有し、６４個のキャラクタで構成されている。各枠内に記載された１〜６４の番号は、単にキャラクタの順番を示している。オフセット値ＯＦが０に設定されている場合には、この全画像の伸長データが伸長データバッファ１２０に転送されてＣＰＵ３２に読み出される。
【００６９】
オフセット／ステップ調整回路８４（図３）は、オフセット値ＯＦで示されるバイト数の伸長データを廃棄し、それ以降のキャラクタの伸長データを伸長データバッファ１２０（図３）に転送する。例えば、オフセット値ＯＦが２４キャラクタ分のバイト数（＝２４×６４＝１５３６バイト）に設定されている場合には、図１１（Ｂ）に示すように、２４番目のキャラクタまでの伸長データは廃棄され、２５番目のキャラクタ以降の伸長データが伸長データバッファ１２０に転送される。
【００７０】
なお、ＣＰＵ３２は、伸長データ長レジスタ１１４の内容をポーリングすることによって、伸長データを何バイト読込んだかを知ることができる。そして、必要なバイト数の伸長データを読込んだところで伸長データレジスタ１１６からのデータの読み込みを停止することができる。例えば、オフセット読出処理によって２５番目以降のキャラクタを読出し、４８番目のキャラクタまで読込んだ時点で伸長データの読込みを停止することができる。また、この後、ＣＰＵ３２がキャラクタ２８〜３２，３６〜４０，４４〜４８を廃棄すれば、キャラクタ２５〜２７，３３〜３５，４１〜４３で構成される部分の伸長データのみを読込むことが可能である。
【００７１】
なお、Ｃポートアクセス部７２（図３）に、読出すべき伸長データのデータ長を設定するための読出データ長レジスタを設けておくようにしてもよい。こうすれば、オフセット値以降の伸長データをＣＰＵ３２が読出データ長レジスタに設定されたデータ長だけ読み出した時点で、読出しを停止することができるので、ＣＰＵ３２にる伸長データ長レジスタ１１４のポーリングが不要になり、ＣＰＵ３２の負担が軽減されるという利点がある。
【００７２】
図１２は、ステップ処理の内容を示す説明図である。図１２（Ａ）の例では、１キャラクタの８×８画素の画像データが２プレーンで構成されている。各プレーンは１ドット当たり１ビットのデータを有しており、２プレーンで１ドット当たり４色の色が表現されている。また、各プレーンの１行分の８ビットによって、画像データの１バイトが構成されている。このとき、バイト単位のステップ読出しを行なうことによって、画素の間引きを実現することができる。図１２（Ｂ）は、ステップ値ＳＴを１バイトに設定した場合に、ステップ読出しによって得られる間引き画像を示す説明図である。すなわち、ステップ読出処理では、ステップ値ＳＴで示されるバイト数のデータが飛び越されて、残りの伸長データが伸長データバッファ１２０に転送される。
【００７３】
このように、オフセット／ステップ読出しを行なうことによって、１つの圧縮データファイルで表わされる全画像の中の一部分のみを選択的に表示することができる。なお、バイト単位でオフセット値とステップ値を設定した場合には、廃棄されるデータと読込まれるデータとの境界はキャラクタの境界とは無関係である。
【００７４】
なお、オフセット値ＯＦとステップ値ＳＴは、バイト単位の値に限らず、キャラクタ単位、ライン単位、画素単位などの種々の単位で設定することが可能である。オフセット値とステップ値がどの単位で設定されているかは、オフセット値レジスタ１０６とステップ値レジスタ１０８内の特定のビットに設定される。種々の単位のオフセット値とステップ値とを組み合わせて使用することによって、所望の割合で伸長データの廃棄を行ないつつ、伸長データを外部に出力することが可能である。
【００７５】
図１３と図１４は、バイト単位のオフセット／ステップ読出しの伸長ルーチンを示すフローチャートである。オフセット値ＯＦとステップ値ＳＴの少なくとも一方が０でない場合には、図１０のルーチンの代わりに図１３と図１４のルーチンが実行される。図１３の伸長ルーチンは、図１０の伸長ルーチンにおけるステップＳ３４（伸長回路８０から伸長データバッファ１２０へのデータ書込み）をステップＳ４０（オフセット／ステップ調整）で置き換えたものである。ステップＳ４０の詳細手順は図１４に示されている。
【００７６】
図１４のステップＳ４１では、オフセット／ステップ調整回路８４が、オフセット読出モードに設定されているか否かを判断する。オフセット値レジスタ１０６に０以外の値が設定されている場合にはオフセット読出モードであると判断して、ステップＳ４２の処理を実行する。一方、オフセット値レジスタ１０６内の設定値が０である場合にはステップＳ４２の処理が省略される。ステップＳ４２では、伸長回路８０が伸長した１バイト目からｋ１バイト目までの伸長データを廃棄する。ここで、ｋ１は、オフセット値レジスタ１０６に設定されたオフセット値で表わされるバイト量である。
【００７７】
ステップＳ４１では、オフセット／ステップ調整回路８４が、ステップ読出モードに設定されているか否かを判断する。ステップ値レジスタ１０８に０以外の値が設定されている場合にはステップ読出モードであると判断して、ステップＳ４４の処理を実行する。一方、ステップ値レジスタ１０８内の設定値が０である場合にはステップＳ４４の処理が省略される。ステップＳ４４では、伸長回路８０内に残っている伸長データが、ｋ２バイトに１バイトずつ伸長データバッファ１２０に転送され、他の（ｋ２−１）バイトは廃棄される。ここで、ｋ２は、ステップ値レジスタ１０８に設定されたステップ値で表わされるバイト量である。
【００７８】
なお、ＣＰＵ３２がオフセット値レジスタ１０６とステップ値レジスタ１０８に設定される値は、前述したようにバイト単位、キャラクタ単位、ライン単位、画素単位などの種々の単位で設定することができる。図１４におけるｋ１とｋ２の値は、これらの設定値をバイト単位に換算した値である。なお、キャラクタ単位のステップ読出しを行なう際には、ｋ２バイト中のｋ２１バイトを伸長データバッファ１２０に取り込み、ｋ２バイト中の残りのｋ２２バイトを廃棄する。ここで、ｋ２＝ｋ２１＋ｋ２２である。キャラクタ単位のステップ読出しを行なう場合には、これらの３つの値ｋ２，ｋ２１，ｋ２２がステップ値として設定される。
【００７９】
このように、伸長回路８０が生成した伸長データは、オフセット／ステップ調整処理が行なわれた後に伸長データバッファ１２０に書き込まれるので、画像の所望の一部分のみを外部に出力することが可能である。
【００８０】
以上説明したように、Ｃポートアクセス部７２は、ＣＰＵ３２によって指定された圧縮データファイルをデータＲＯＭ６２から読み出して伸長しつつ、バス３１上にその画像の所望の部分を表わす伸長データのみを出力することができる。圧縮データファイルの指定は、圧縮データ用テーブル６２ａ（図５）の先頭を示すベースアドレスＡｂと、圧縮データファイルのファイル番号Ｎとを設定するだけで行なえるので、データＲＯＭ６２内に格納された多数の圧縮データファイルから所望のファイルを容易に読み出すことができる。なお、圧縮データ用テーブル６２ａのベースアドレスＡｂを所定の値に固定しておくようにすることも可能である。この場合には、ＣＰＵ３２がファイル番号Ｎを指定するだけで圧縮データファイルを読み出すことが可能である。
【００８１】
Ｄ．Ｄポートアクセス部の内部構成と動作
【００８２】
図１５は、Ｄポートアクセス部７４の内部構成を示すブロック図である。Ｄポートアクセス部７４は、Ｄベースアドレスレジスタ２０２と、Ｄオフセット値レジスタ２０４と、Ｄステップ値レジスタ２０６と、Ｄ制御レジスタ２０８と、Ｄトリガレジスタ２１０と、Ｄデータレジスタ２１２と、２つの符号制御器２１４，２１６と、バッファ２１８と、アドレス増減制御部２２０と、読出アドレス生成回路２２２とを備えている。
【００８３】
Ｄポートアクセス部７４は、前述した図４に示すように、データＲＯＭ６２内の非伸長対象データ領域６２ｃに格納されている非伸長対象データを読み出す処理を実行する。なお、この明細書において、「非伸長対象データ」とは、データ読出用ＩＣ６０内の伸長回路８０で伸長されないデータを意味しており、ＣＰＵ３２などの他の回路で伸長される圧縮データも含んでいる。例えば、ＡＤＰＣＭで圧縮された音声データも、ここで言う非伸長対象データである。
【００８４】
Ｄポートアクセス部７４のＤベースアドレスレジスタ２０２は、読出しの対象となる非伸長対象データの先頭アドレスを設定するレジスタである。Ｄオフセット値レジスタ２０４とＤステップ値レジスタ２０６は、Ｃポートアクセス部７２のオフセット値レジスタ１０６（図３）とステップ値レジスタ１０８とにそれぞれ対応する。但し、Ｄポートアクセス部７４はデータＲＯＭ６２から非伸長対象データを読み出す回路なので、後述するように、オフセット／ステップ読出処理の内容は、Ｃポートアクセス部７２におけるものとは若干異なっている。
【００８５】
Ｄトリガレジスタ２１０は、Ｃポートアクセス部７２のトリガレジスタ１１０に相当するレジスタである。また、Ｄデータレジスタ２１２はＣポートアクセス部７２の伸長データレジスタ１１６に相当するレジスタである。
【００８６】
ＣＰＵ３２は、Ｄベースアドレスレジスタ２０２と、Ｄオフセット値レジスタ２０４と、Ｄステップ値レジスタ２０６と、Ｄ制御レジスタ２０８とにパラメータを設定することによって、所望の非伸長対象データを読み出すことができる。
【００８７】
非伸長対象データ領域６２ｃに格納されているデータの種類としては、プログラムコードや音声データ等がある。プログラムコードは、図２に示すプログラムＲＯＭ６４に格納されているが、プログラムコードのデータ量が大きな場合には、使用頻度の少ないプログラムコードをデータＲＯＭ６２に格納しておき、Ｄポートアクセス部７４によって読み出すようにすることが可能である。読み出されたプログラムコードは、本体部３０のワークＲＡＭ３６に転送しておけば、ランダムにアクセスして実行することができる。
【００８８】
音声データは、画像データとは異なる方法で圧縮されている場合が多い。このような場合には、音声データを非伸長対象データ領域６２ｃに格納しておき、Ｄポートアクセス部７４を介して読み出した後でＣＰＵ３２によって伸長するようにすればよい。この例からも解るように、Ｄポートアクセス部７４によってアクセスされる非伸長対象データ領域６２ｃには、Ｃポートアクセス部７２の伸長回路８０で伸長できない圧縮データを格納しておく場合もある。この明細書において、「非伸長対象データ」とは、Ｃポートアクセス部７２内の伸長回路８０で伸長されない各種のデータを含む広い意味を有する。
【００８９】
非伸長対象データ領域６２ｃには、フォント画像で構成される画像のマッピング情報が格納されている場合も多い。図１６は、フォント画像とマッピング情報とを示す説明図である。ここで、「フォント画像」とは、互いに組み合わされて１つの画像を構成するような画像部品を意味する。図１６（Ａ）〜（Ｄ）は、種々の波の形を有するフォント画像の例である。図１６（Ａ）〜（Ｄ）の例では各フォント画像は１キャラクタのサイズを有しているが、複数キャラクタで１つのフォント画像が構成されている場合もある。
【００９０】
図１６（Ｅ）は、図１６（Ａ）〜（Ｄ）に示す４つのフォント画像を組み合わせることによって作成された波の画像を示しており、図１６（Ｆ）は、この画像に対応するマッピング情報を示している。図１６（Ｆ）の各枠内の文字「Ａ」〜「Ｄ」は、図１６（Ａ）〜（Ｄ）に示す４つのフォント画像をそれぞれ表わしている。図１６（Ｅ）と（Ｆ）とを比較すれば解るように、マッピング情報は、各フォント画像をどの位置に配置するかを示す情報である。このようなマッピング情報をフォント画像とは別に作成しておくことによって、少ないフォント画像から様々な画像を構成することができる。マッピング情報は比較的データ量が少なく、また、ゲームの進行に応じて頻繁に変化する。従って、マッピング情報を図１６（Ｆ）に示すようなテーブルの形で非伸長対象データ領域６２ｃに格納しておき、Ｄポートアクセス部７４によって読み出すようにすることによって、ゲームの進行に応じた画像を高速に表示することができる。
【００９１】
図１６（Ａ）〜（Ｄ）に示すようなフォント画像の画像データは、圧縮データファイルとしてデータＲＯＭ６２内の圧縮データファイル領域６２ｂに格納されている。従って、図１６（Ｅ）の画像を表示する際には、これらのフォント画像を表わす圧縮データファイルがＣポートアクセス部７２によって読み出され、これと同時に、非伸長対象データ領域６２ｃに格納されたマッピング情報がＤポートアクセス部７４によって読み出される。そして、ＣＰＵ３２がフォント画像の伸長データとマッピング情報とから図１６（Ｅ）に示すような画像を構成してＶＲＡＭ４４に書き込むことによって、この画像がカラーディスプレイ５４に表示される。
【００９２】
なお、上記のような場合において、Ｃポートアクセス部７２によるデータＲＯＭ６２へのアクセスと、Ｄポートアクセス部７４によるアクセスとが干渉する場合がある。さらに、Ｔポートアクセス部７６によるアクセスも干渉する場合がある。このような場合には、ＲＯＭインタフェイス７８内のアクセス調停部７９（図２）が所定の優先度に応じてアクセスを調停する。通常は、高速なデータ読出しが必要な順に、また、連続して読み出されるデータ量が少ない順に高い優先度が設定される。この実施例では、この理由から、Ｔポートアクセス部７６、Ｄポートアクセス部７４、Ｃポートアクセス部７２の順に高い優先度が設定されている。
【００９３】
図１７は、Ｄポートアクセス部７４によるアクセスの処理手順を示すフローチャートである。ステップＳ５１では、ＣＰＵ３２が、Ｄベースアドレスレジスタ２０２と、Ｄオフセット値レジスタ２０４と、Ｄステップ値レジスタ２０６と、Ｄ制御レジスタ２０８にそれぞれパラメータを設定する。Ｄ制御レジスタ２０８は、オフセット／ステップ調整処理のためのパラメータｉ，ｊを設定するレジスタである。これらのパラメータｉ，ｊの機能については後述する。
【００９４】
ステップＳ５２では、ＣＰＵ３２がＤトリガレジスタ２１０にアクセスすることによって、Ｄポートアクセス部７４にステップＳ５３以降の処理を開始させる。すなわち、Ｄポートアクセス部７４は、ＣＰＵ３２がＤトリガレジスタ２１０にアクセスしたことを検知すると、ステップＳ５３以降の処理を開始する。
【００９５】
ステップＳ５３では、読出アドレス生成回路２２２が、データＲＯＭ６２の物理アドレスＡＤを次の（２）式に従って生成する。
【００９６】
ＡＤ＝ＡＤｂ＋ｉ＊ＡＤｏ　　…（２）
【００９７】
ここで、ＡＤｂはＤベースアドレスレジスタ２０２に設定されたベースアドレス、ＡＤｏはＤオフセット値レジスタ２０４に設定されたオフセット値（バイト）、ｉはＤ制御レジスタ２０８に設定されたオフセットパラメータである。なお、演算子「＊」は、オフセットパラメータｉによって、アドレスＡＤｏの符号が制御されることを示している。オフセットパラメータｉは、オフセットを有効とする場合に１に設定され、オフセットを無効とする場合には０に設定される。
【００９８】
図１５に示されるように、第１の符号制御器２１４は、オフセットパラメータｉに応じてオフセット値ＡＤｏの正負の符号を制御して、読出アドレス生成回路２２２にその結果を与えている。具体的には、第１の符号制御器２１４は、２の補数表現されたオフセット値ＡＤｏに対して符号反転をするか否かの制御を行なっている。読出アドレス生成回路２２２は、第１の符号制御器２１４から与えられた値ｉ＊ＡＤｏとベースアドレスＡＤｂとを加算することによって、上記の（２）式で与えられる物理アドレスＡＤを求めることができる。
【００９９】
図１７のステップＳ５４では、ステップＳ５３で得られた物理アドレスＡＤに従ってデータＲＯＭ６２からデータが読み出される。読み出されたデータは、ＲＯＭインタフェイス７８を介してバッファ２１８に一旦格納される。
【０１００】
ステップＳ５５では、アドレス増減制御部２２０がＤデータレジスタ２１２をポーリングして、Ｄデータレジスタ２１２内のデータがＣＰＵ３２によって読込まれたか否かを判断する。ＣＰＵ３２によってデータが読込まれていれば、アドレス増減制御部２２０がその旨を読出アドレス生成回路２２２に通知し、ステップＳ５６に移行する。ステップＳ５６では、読出アドレス生成回路２２２が、次の（３）式に従って物理アドレスＡＤを更新する。
【０１０１】
ＡＤ＝ＡＤ＋ｊ＊ＡＤｓ　　…（３）
【０１０２】
すなわち、読出アドレス生成回路２２２は、ステップパラメータｊに応じてステップ値ＡＤｓの正負の符号を制御し、その結果（ｊ＊ＡＤｓ）を物理アドレスＡＤに加算することによって、新たな物理アドレスＡＤを生成する。この値（ｊ＊ＡＤｓ）は、第２の符号制御器２１６から読出アドレス生成回路２２２に与えられている。なお、ステップパラメータｊとしては、「１」（インクリメントモード）、「−１」（デクリメントモード）、および「０」（ステップ無効）の３つの値を設定することができる。
【０１０３】
ステップＳ５６においてアドレスが更新されるとステップＳ５４に戻り、ステップＳ５４〜Ｓ５６を繰返すことによって非伸長対象データが順次読みだされる。
【０１０４】
以上のように、Ｄポートアクセス部７４は、オフセット／ステップ調整を行ないつつ非伸長対象データをデータＲＯＭ６２から読み出すことができる。読み出されるデータは非伸長対象データなので、ステップ値をデクリメントしながらデータを読み出すことも可能である。
【０１０５】
なお、Ｄデータレジスタ２１２に格納されたデータは、本体部３０内のＤＭＡコントローラ３４によってＤＭＡ転送することも可能である。例えば、データＲＯＭ６２内に格納されたプログラムコードをワークＲＡＭ３６に一括して転送する場合には、ＤＭＡ転送が利用される。
【０１０６】
Ｅ．Ｔポートアクセス部の内部構成と動作
【０１０７】
図１８は、Ｔポートアクセス部７６の内部構成を示すブロック図である。Ｔポートアクセス部７６は、ＲＯＭ割当てレジスタ３０２と、ＲＯＭバンク指定回路３０４と、物理アドレス生成回路３０６とを備えている。
【０１０８】
ＣＰＵ３２がＴポートアクセス部７６にアクセスすると、データ読出用ＩＣ６０のレジスタを介すること無く、ＣＰＵ３２がデータＲＯＭ６２に直接アクセスすることができる。すなわち、ＣＰＵ３２から与えられたアドレスがほぼそのままデータＲＯＭ６２に入力されて、あたかもデータ読出用ＩＣ６０が存在していないかのようにデータＲＯＭ６２からＣＰＵ３２にデータを読み出すことができる。
【０１０９】
図１９は、Ｔポートアクセス部７６を使用した場合におけるアドレスマップを示す説明図である。Ｔポートアクセス部７６は、データＲＯＭ６２内に格納されたプログラムコードをＣＰＵ３２がランダムアクセスする場合に用いられる。例えば、前述した図２に示すシステム構成からプログラムＲＯＭ６４を省略して、データＲＯＭ６２内にアプリケーションプログラムのプログラムコードを格納するようにシステム構成を変更ことができる。この場合には、Ｔポートアクセス部７６を介してＣＰＵ３２がデータＲＯＭ６２内のプログラムコードにランダムアクセスすることによって、プログラムを実行することができる。また、こうすれば図２に示すように２つをＲＯＭを設ける必要がなく、１つのＲＯＭ６２内にプログラムコードと画像データ等の他のデータとを格納することができるという利点がある。
【０１１０】
図２０は、Ｔポートアクセスの処理手順を示すフローチャートである。ステップＳ６１では、ＣＰＵ３２がＲＯＭ割当てレジスタ３０２にＲＯＭバンクの割当てを設定する。図２１は、ＲＯＭバンクの割当ての内容を示す説明図である。ＣＰＵ３２は、Ｔポートアクセス部７６を介してそれぞれ１Ｍバイトの４つのＲＯＭバンク（Ｃバンク〜Ｆバンク）にアクセスすることができる。例えばＣバンクは、ＣＰＵ３２のアドレスがＣ００００ｈ〜ＣＦＦＦＦｈの範囲のメモリ領域である。なお、語尾の符号「ｈ　」は１６進数であることを示している。
【０１１１】
データＲＯＭ６２が８Ｍバイトの容量を有している場合には、４つのＲＯＭバンクは、データＲＯＭ６２内の８つの１Ｍバイトの領域３２１〜３２８のいずれかにそれぞれ割り当てられる。ＲＯＭ割当てレジスタ３０２は、各ＲＯＭバンクに対応した４つのレジスタ３１１〜３１４を有している。ステップＳ６１では、ＣＰＵ３２がこれらのレジスタ３１１〜３１４にＲＯＭバンクの割当てを設定する。例えば、ＣバンクをデータＲＯＭ６２の第１番目の１Ｍバイト領域３２１に割り当てる場合には、第１のレジスタ３１１に３ビットの値「　０００」を設定する。なお、ＣＰＵ３２がＲＯＭ割当てレジスタ３０２内のデータを書き換えれば、データＲＯＭ６２内の任意の１Ｍバイト領域にアクセスすることができる。
【０１１２】
図２０のステップＳ６２では、ＣＰＵ３２がＴポートアクセス部７６にアクセスするためのアドレスを出力する。例えばＣバンクにアクセスする場合には、ＣＰＵ３２がＣＸＸＸＸｈ（Ｘ　は任意の数を示す）のアドレスをバス３１上に出力する。ＣＰＵ３２から出力されたアドレスの中で、上位ａ１ビットは図１８に示すようにＲＯＭ割当てレジスタ３０２に入力され、下位ａ２ビットは物理アドレス生成回路３０６に入力される。例えば、上位ａ１ビットは４ビット、下位ａ２は２０ビットである。
【０１１３】
ステップＳ６３では、ＲＯＭバンク指定回路３０４が、ステップＳ６１で設定されたＲＯＭバンクの割当てに従って、アドレスの上位ａ１ビットをデータＲＯＭ６２の物理アドレスの上位ｂ１ビットに置き換える。例えば、図２１のようにＣバンクがデータＲＯＭ６２の最初の１Ｍバイト領域３２１に割り当てられており、ステップＳ６２においてＣバンクにアクセスするアドレスＣＸＸＸＸｈが出力されている場合を考える。この場合には、ＣＰＵ３２から出力されたアドレスの上位４ビット「１１００」が、データＲＯＭ６２の物理アドレスの上位３ビット「　０００」に変換される。
【０１１４】
ステップＳ６４では、物理アドレス生成回路３０６が、ＲＯＭバンク指定回路３０４から出力された上位ｂ１ビットとＣＰＵ３２から出力されたアドレスの下位ａ２ビットとを合成して、データＲＯＭ６２のｃビット（ｃ＝ｂ１＋ａ２）の物理アドレスを生成する。
【０１１５】
上記の例では１バンクの容量を１Ｍバイトとしていたが、一般には１バンクの容量は２ａ２バイトに設定される。この１バンクの範囲内では、ＣＰＵ３２が下位アドレスａ２を調整することによって、直接ランダムにアクセスすることができる。
【０１１６】
ステップＳ６５では、物理アドレス生成回路３０６で得られたアドレスに応じてデータＲＯＭ６２からデータが読み出される。データＲＯＭ６２から読み出されたデータは、ＲＯＭインタフェイス７８とＣＰＵインタフェイス７０とをそのまま通過して、バス３１上に出力される。
【０１１７】
このように、Ｔポートアクセス部７６を介したアクセスでは、ＣＰＵ３２が、データＲＯＭ６２内の各バンクに直接アクセスすることができるので、データＲＯＭ６２に格納されたプログラムコードなどをランダムにアクセスすることが可能である。
【０１１８】
以上のように、データ読出用ＩＣ６０は、Ｃポートアクセス部７２と、Ｄポートアクセス部７４と、Ｔポートアクセス部７６とによって、それぞれ異なるモードでデータＲＯＭ６２にアクセスすることができるので、データＲＯＭ６２内に圧縮データ、非伸長対象データ、プログラムコード等の種々のデータを所望の数ずつ格納することが可能である。特に、コンピュータゲームのカートリッジには、種々のデータが必要となるので、このように多種類のデータをそれぞれに応じたモードで読み出すことによって、高速な読み出しを行なうことができる。
【０１１９】
なお、この発明は上記実施例に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
【０１２０】
（１）データＲＯＭ６２としては、マスクＲＯＭ、ＥＰＲＯＭ、フラッシュメモリ等の種々の半導体メモリを使用することが可能である。
【０１２１】
【発明の効果】
以上説明したように、請求項１、１８、または１９に記載された発明によれば、ＣＰＵが第１の読出回路にパラメータを設定することによって、第１の読出回路が半導体メモリから圧縮データを読出し、伸長した後に伸長データをバス上に出力することができる。
【０１２２】
請求項２または１２に記載された発明によれば、ＣＰＵがファイル番号を指定することによって所望の圧縮データファイルを読み出すことができる。
【０１２３】
請求項３または１３に記載された発明によれば、伸長データの中でオフセット値で示される以降のデータのみを選択的に出力することができる。
【０１２４】
請求項４または１４に記載された発明によれば、伸長データをステップ値で指定された間隔で出力することができる。
【０１２５】
請求項５または１５に記載された発明によれば、伸長データをコンピュータシステム内の他の回路に高速に転送することができる。
【０１２６】
請求項６または１６に記載された発明によれば、伸長回路の伸長速度がＤＭＡ転送回路による転送速度以下である場合にも、ＤＭＡ転送回路によって伸長データをある程度連続してＤＭＡ転送することができる。
【０１２７】
請求項７または１７に記載された発明によれば、ＣＰＵが出力したアドレスに応じて半導体メモリからデータを読み出すことができるので、ＣＰＵが半導体メモリにランダムにアクセスすることができる。
【０１２８】
請求項８に記載された発明によれば、ＣＰＵが読出回路にパラメータを設定することによって、読出回路が半導体メモリから非伸長対象データを読出してバス上に出力することができる。
【０１２９】
請求項９または１０に記載された発明によれば、プログラムコードやＣＰＵによって伸長される圧縮データなどの種々の非伸長対象データを半導体メモリから読み出すことができる。
【０１３０】
請求項１１に記載された発明によれば、ＣＰＵが第１と第２の読出回路の一方にアクセスしてパラメータを設定することによって、同一の半導体メモリから圧縮データと非伸長対象データとをそれぞれ区別して読み出すことができる。
【図面の簡単な説明】
【図１】この発明の一実施例としてのデータ読出回路を備えたコンピュータシステムの構成を示すブロック図。
【図２】ＲＯＭカートリッジ５０の内部構成を示すブロック図。
【図３】Ｃポートアクセス部７２の内部構成を示すブロック図。
【図４】コンピュータシステムのアドレスマップを示す説明図。
【図５】圧縮データ用テーブル６２ａと圧縮データファイル領域６２ｂの内容を示す説明図。
【図６】圧縮データファイルで表わされる画像の例を示す説明図。
【図７】Ｃポートアクセス部７２による圧縮データの読出手順を示すフローチャート。
【図８】初期化ルーチンの詳細を示すフローチャート。
【図９】圧縮データの取り込みルーチンの手順を示すフローチャート。
【図１０】伸長回路８０によって実行される伸長ルーチンの手順を示すフローチャート。
【図１１】オフセット読出処理の内容を示す説明図。
【図１２】ステップ読出処理の内容を示す説明図。
【図１３】オフセット／ステップ読出しの伸長ルーチンを示すフローチャート。
【図１４】オフセット／ステップ読出しの伸長ルーチンを示すフローチャート。
【図１５】Ｄポートアクセス部７４の内部構成を示すブロック図。
【図１６】フォント画像とマッピング情報とを示す説明図。
【図１７】Ｄポートアクセス部７４によるアクセスの処理手順を示すフローチャート。
【図１８】Ｔポートアクセス部７６の内部構成を示すブロック図。
【図１９】Ｔポートアクセス部７６を使用した場合におけるアドレスマップを示す説明図。
【図２０】Ｔポートアクセスの処理手順を示すフローチャート。
【図２１】ＲＯＭ割当てレジスタ３０２によるＲＯＭバンクの割当ての内容を示す説明図。
【符号の説明】
３０…本体部
３１…ＣＰＵバス
３２…ＣＰＵ
３４…ＤＭＡコントローラ
３６…ワークＲＡＭ
３８…音声信号生成回路
４０…表示制御回路
４２…画像データ制御回路
４４…ビデオＲＡＭ
４６…コネクタ
５０…ＲＯＭカートリッジ
５２…スピーカ
５４…カラーディスプレイ
６２…データＲＯＭ
６２ａ…圧縮データ用テーブル
６２ｂ…圧縮データファイル領域
６２ｃ…非伸長対象データ領域
６４…プログラムＲＯＭ
７０…ＣＰＵインタフェイス
７２…Ｃポートアクセス部
７４…Ｄポートアクセス部
７６…Ｔポートアクセス部
７８…ＲＯＭインタフェイス
７９…アクセス調停部
８０…伸長回路
８２…シーケンサ
８４…オフセット／ステップ調整回路
１０２…ベースアドレスレジスタ
１０４…ファイル番号レジスタ
１０６…オフセット値レジスタ
１０８…ステップ値レジスタ
１１０…トリガレジスタ
１１２…ステータスレジスタ
１１４…伸長データ長レジスタ
１１６…伸長データレジスタ
１１８…ＤＭＡ用データレジスタ
１２０…伸長データバッファ
１２２…テーブルアドレス生成回路
１２４…読出アドレス生成回路
１２６…圧縮データバッファ
１２８…マルチプレクサ
２０２…Ｄベースアドレスレジスタ
２０４…Ｄオフセット値レジスタ
２０６…Ｄステップ値レジスタ
２０８…Ｄ制御レジスタ
２１０…Ｄトリガレジスタ
２１２…Ｄデータレジスタ
２１４，２１６…乗算器
２１８…バッファ
２２０…アドレス増減制御部
２２２…読出アドレス生成回路
３０２…ＲＯＭ割当てレジスタ
３０４…ＲＯＭバンク指定回路
３０６…物理アドレス生成回路
３１１〜３１４…レジスタ
【図１】
2004046839.tif 000003
【図２】
2004046839.tif 000004
【図３】
2004046839.tif 000005
【図４】
2004046839.tif 000006
【図５】
2004046839.tif 000007
【図６】
2004046839.tif 000008
【図７】
2004046839.tif 000009
【図８】
2004046839.tif 000010
【図９】
2004046839.tif 000011
【図１０】
2004046839.tif 000012
【図１１】
2004046839.tif 000013
【図１２】
2004046839.tif 000014
【図１３】
2004046839.tif 000015
【図１４】
2004046839.tif 000016
【図１５】
2004046839.tif 000017
【図１６】
2004046839.tif 000018
【図１７】
2004046839.tif 000019
【図１８】
2004046839.tif 000020
【図１９】
2004046839.tif 000021
【図２０】
2004046839.tif 000022
【図２１】
2004046839.tif 000023
【手続補正書】
【提出日】平成15年7月16日(2003.7.16)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ＣＰＵと前記ＣＰＵに接続されたバスとを備えたコンピュータシステムに使用され、圧縮データファイルを格納する圧縮データファイル領域と非伸長対象データを格納する非伸長対象データ領域とを有する半導体ＲＯＭからデータを読み出して前記バス上に出力する半導体集積回路であって、
前記バスを介して前記ＣＰＵから設定された第１のパラメータに従って第１の読出アドレスを生成し、前記第１の読出アドレスに応じて前記半導体ＲＯＭの前記圧縮データファイル領域から圧縮データファイルを読み出し、読み出された圧縮データファイルを伸長して伸長データを生成するとともに、前記バス上に前記伸長データを出力する第１の読出回路と、
前記バスを介して前記ＣＰＵから設定された第２のパラメータに従って第２の読出アドレスを生成し、前記第２の読出アドレスに応じて前記半導体ＲＯＭの前記非伸長対象データ領域から非伸長対象データを読み出すとともに、読み出された非伸長対象データを前記バス上に出力する第２の読出回路と、
前記第１および第２の読出回路と前記半導体ＲＯＭとの間に接続され、前記第１の読出回路による前記圧縮データファイル領域へのアクセスと、前記第２の読出回路による前記非伸長対象データ領域へのアクセスとを調停するアクセス調停部を有するＲＯＭインタフェイス回路と、
を備え、
前記アクセス調整部は、前記第１と第２の読出回路による前記半導体ＲＯＭへの同時アクセスを、所定の優先度に従って調整することを特徴とする半導体集積回路。
【請求項２】
請求項１記載の半導体集積回路であって、
前記第１の読出回路は、
前記バスに接続され、前記ＣＰＵにより前記第１のパラメータの１つとして設定された圧縮データファイルのファイル番号を記憶するファイル番号レジスタと、
前記ファイル番号に応じて、前記半導体ＲＯＭ内のアドレステーブル領域から前記第１の読出アドレスを読み出すとともに、前記第１の読出アドレスを前記半導体ＲＯＭに与えることによって、前記半導体ＲＯＭから圧縮データを読み出すアドレス生成回路と、
を備える半導体集積回路。
【請求項３】
請求項２記載の半導体集積回路であって、
前記第１の読出回路は、さらに、
前記バスに接続され、前記ＣＰＵにより前記第１のパラメータの１つとして設定されたオフセット値を記憶するオフセット値レジスタと、
前記圧縮データファイルを伸長して得られた前記伸長データの中で、前記伸長データの先頭から前記オフセット値で示される位置までのデータを出力せず、前記オフセット値で示される位置以降のデータを前記バス上に出力するオフセット調整回路とを備える、
半導体集積回路。
【請求項４】
請求項３記載の半導体集積回路であって、
前記第１の読出回路は、さらに、
前記バスに接続され、前記ＣＰＵにより前記第１のパラメータの１つとして設定されたステップ値を記憶するステップ値レジスタと、
前記圧縮データファイルを伸長して得られた前記伸長データの中で、前記ステップ値で指定された間隔で前記伸長データを前記バス上に出力するステップ調整回路とを備える、
半導体集積回路。
【請求項５】
請求項１ないし４のいずれかに記載の半導体集積回路であって、
前記第１の読出回路は、さらに、
前記コンピュータシステムに備えられたＤＭＡ転送回路によって前記伸長データをＤＭＡ転送するために、前記伸長データを保持するＤＭＡ転送用データレジスタを備え、
前記伸長回路の伸長速度は前記ＤＭＡ転送回路による転送速度以上である、半導体集積回路。
【請求項６】
請求項１ないし４のいずれかに記載の半導体集積回路であって、
前記第１の読出回路は、さらに、
前記伸長回路で得られた前記伸長データを格納し、格納した伸長データを前記ＤＭＡ転送用レジスタに供給する伸長データバッファを備え、これによって、前記伸長回路の伸長速度が前記ＤＭＡ転送回路による転送速度以下である場合にも前記ＤＭＡ転送回路によって前記伸長データを連続してＤＭＡ転送しうるように構成されている、半導体集積回路。
【請求項７】
請求項１ないし６のいずれかに記載の半導体集積回路であって、さらに、
前記バスを介して前記ＣＰＵから供給されたアドレスの中で所定範囲の下位ビット部を前記半導体ＲＯＭにそのまま与えることよって前記半導体ＲＯＭからデータを読み出し、読み出されたデータを前記バス上に出力する第３の読出回路を備える、半導体集積回路。
【請求項８】
請求項１ないし７のいずれかに記載の半導体集積回路であって、
前記非伸長対象データは、前記コンピュータシステム内のＲＡＭに格納されて前記ＣＰＵによって実行されるプログラムコードである、半導体集積回路。
【請求項９】
請求項１ないし７のいずれかに記載の半導体集積回路であって、
前記非伸長対象データは、前記ＣＰＵによって伸長される圧縮データである、半導体集積回路。
【請求項１０】
コンピュータゲーム機に使用されるゲーム機用カートリッジであって、
請求項１ないし９のいずれかに記載された半導体集積回路と、
前記半導体ＲＯＭと、
を備えるゲーム機用カートリッジ。
【請求項１１】
請求項１０記載のゲーム機用カートリッジであって、
カートリッジ内に収納された半導体メモリの中のすべてのＲＯＭのアドレスバスとデータバスが前記半導体集積回路に接続されており、前記ＲＯＭ内に格納されたデータが前記半導体集積回路を介して読み出されるように構成されている、ゲーム機用カートリッジ。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００６
【補正方法】削除
【補正の内容】
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】削除
【補正の内容】
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】削除
【補正の内容】
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】削除
【補正の内容】
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】削除
【補正の内容】
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】削除
【補正の内容】
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】削除
【補正の内容】
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】削除
【補正の内容】
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】削除
【補正の内容】
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】削除
【補正の内容】
【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】００１６
【補正方法】削除
【補正の内容】
【手続補正１３】
【補正対象書類名】明細書
【補正対象項目名】００１７
【補正方法】削除
【補正の内容】
【手続補正１４】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】削除
【補正の内容】
【手続補正１５】
【補正対象書類名】明細書
【補正対象項目名】００１９
【補正方法】削除
【補正の内容】
【手続補正１６】
【補正対象書類名】明細書
【補正対象項目名】００２０
【補正方法】削除
【補正の内容】
【手続補正１７】
【補正対象書類名】明細書
【補正対象項目名】００２１
【補正方法】削除
【補正の内容】
【手続補正１８】
【補正対象書類名】明細書
【補正対象項目名】００２２
【補正方法】削除
【補正の内容】
【手続補正１９】
【補正対象書類名】明細書
【補正対象項目名】００２３
【補正方法】削除
【補正の内容】
【手続補正２０】
【補正対象書類名】明細書
【補正対象項目名】００２４
【補正方法】変更
【補正の内容】
【００２４】
【課題を解決するための手段およびその作用・効果】
本発明による半導体集積回路は、ＣＰＵと前記ＣＰＵに接続されたバスとを備えたコンピュータシステムに使用され、圧縮データファイルを格納する圧縮データファイル領域と非伸長対象データを格納する非伸長対象データ領域とを有する半導体ＲＯＭからデータを読み出して前記バス上に出力する半導体集積回路であって、
前記バスを介して前記ＣＰＵから設定された第１のパラメータに従って第１の読出アドレスを生成し、前記第１の読出アドレスに応じて前記半導体ＲＯＭの前記圧縮データファイル領域から圧縮データファイルを読み出し、読み出された圧縮データファイルを伸長して伸長データを生成するとともに、前記バス上に前記伸長データを出力する第１の読出回路と、
前記バスを介して前記ＣＰＵから設定された第２のパラメータに従って第２の読出アドレスを生成し、前記第２の読出アドレスに応じて前記半導体ＲＯＭの前記非伸長対象データ領域から非伸長対象データを読み出すとともに、読み出された非伸長対象データを前記バス上に出力する第２の読出回路と、
前記第１および第２の読出回路と前記半導体ＲＯＭとの間に接続され、前記第１の読出回路による前記圧縮データファイル領域へのアクセスと、前記第２の読出回路による前記非伸長対象データ領域へのアクセスとを調停するアクセス調停部を有するＲＯＭインタフェイス回路と、
を備え、
前記アクセス調整部は、前記第１と第２の読出回路による前記半導体ＲＯＭへの同時アクセスを、所定の優先度に従って調整することを特徴とする。


【手続補正２１】
【補正対象書類名】明細書
【補正対象項目名】００２６
【補正方法】変更
【補正の内容】
【００２６】
前記第１の読出回路は、
前記バスに接続され、前記ＣＰＵにより前記第１のパラメータの１つとして設定された圧縮データファイルのファイル番号を記憶するファイル番号レジスタと、
前記ファイル番号に応じて、前記半導体ＲＯＭ内のアドレステーブル領域から前記第１の読出アドレスを読み出すとともに、前記第１の読出アドレスを前記半導体ＲＯＭに与えることによって、前記半導体ＲＯＭから圧縮データを読み出すアドレス生成回路と、を備えるものとしてもよい。


【手続補正２２】
【補正対象書類名】明細書
【補正対象項目名】００２７
【補正方法】変更
【補正の内容】
【００２７】
前記第１の読出回路は、さらに、
前記バスに接続され、前記ＣＰＵにより前記第１のパラメータの１つとして設定されたオフセット値を記憶するオフセット値レジスタと、
前記圧縮データファイルを伸長して得られた前記伸長データの中で、前記伸長データの先頭から前記オフセット値で示される位置までのデータを出力せず、前記オフセット値で示される位置以降のデータを前記バス上に出力するオフセット調整回路とを備えるものとしてもよい。


【手続補正２３】
【補正対象書類名】明細書
【補正対象項目名】００２８
【補正方法】変更
【補正の内容】
【００２８】
前記第１の読出回路は、さらに、
前記バスに接続され、前記ＣＰＵにより前記第１のパラメータの１つとして設定されたステップ値を記憶するステップ値レジスタと、
前記圧縮データファイルを伸長して得られた前記伸長データの中で、前記ステップ値で指定された間隔で前記伸長データを前記バス上に出力するステップ調整回路とを備えるものとしてもよい。


【手続補正２４】
【補正対象書類名】明細書
【補正対象項目名】００２９
【補正方法】変更
【補正の内容】
【００２９】
前記第１の読出回路は、さらに、
前記コンピュータシステムに備えられたＤＭＡ転送回路によって前記伸長データをＤＭＡ転送するために、前記伸長データを保持するＤＭＡ転送用データレジスタを備え、
前記伸長回路の伸長速度は前記ＤＭＡ転送回路による転送速度以上であるものとしてもよい。


【手続補正２５】
【補正対象書類名】明細書
【補正対象項目名】００３０
【補正方法】変更
【補正の内容】
【００３０】
前記第１の読出回路は、さらに、
前記伸長回路で得られた前記伸長データを格納し、格納した伸長データを前記ＤＭＡ転送用レジスタに供給する伸長データバッファを備え、これによって、前記伸長回路の伸長速度が前記ＤＭＡ転送回路による転送速度以下である場合にも前記ＤＭＡ転送回路によって前記伸長データを連続してＤＭＡ転送しうるように構成されていてもよい。


【手続補正２６】
【補正対象書類名】明細書
【補正対象項目名】００３１
【補正方法】変更
【補正の内容】
【００３１】
上記半導体集積回路は、さらに、
前記バスを介して前記ＣＰＵから供給されたアドレスの中で所定範囲の下位ビット部を前記半導体ＲＯＭにそのまま与えることよって前記半導体ＲＯＭらデータを読み出し、読み出されたデータを前記バス上に出力する第３の読出回路を備えるものとしてもよい。また、前記非伸長対象データは、前記コンピュータシステム内のＲＡＭに格納されて前記ＣＰＵによって実行されるプログラムコードであるとしてもよく、前記非伸長対象データは、前記ＣＰＵによって伸長される圧縮データであるとしてもよい。
【手続補正２７】
【補正対象書類名】明細書
【補正対象項目名】００３２
【補正方法】変更
【補正の内容】
【００３２】
本発明によるゲーム機用カートリッジは、
上述のいずれかの半導体集積回路と、
前記半導体ＲＯＭと、を備える。


【手続補正２８】
【補正対象書類名】明細書
【補正対象項目名】００３３
【補正方法】変更
【補正の内容】
【００３３】
なお、カートリッジ内に収納された半導体メモリの中のすべてのＲＯＭのアドレスバスとデータバスが前記半導体集積回路に接続されており、前記ＲＯＭ内に格納されたデータが前記半導体集積回路を介して読み出されるように構成されているものとしてもよい。


【手続補正２９】
【補正対象書類名】明細書
【補正対象項目名】０１２１
【補正方法】削除
【補正の内容】
【手続補正３０】
【補正対象書類名】明細書
【補正対象項目名】０１２２
【補正方法】削除
【補正の内容】
【手続補正３１】
【補正対象書類名】明細書
【補正対象項目名】０１２３
【補正方法】削除
【補正の内容】
【手続補正３２】
【補正対象書類名】明細書
【補正対象項目名】０１２４
【補正方法】削除
【補正の内容】
【手続補正３３】
【補正対象書類名】明細書
【補正対象項目名】０１２５
【補正方法】削除
【補正の内容】
【手続補正３４】
【補正対象書類名】明細書
【補正対象項目名】０１２６
【補正方法】削除
【補正の内容】
【手続補正３５】
【補正対象書類名】明細書
【補正対象項目名】０１２７
【補正方法】削除
【補正の内容】
【手続補正３６】
【補正対象書類名】明細書
【補正対象項目名】０１２８
【補正方法】削除
【補正の内容】
【手続補正３７】
【補正対象書類名】明細書
【補正対象項目名】０１２９
【補正方法】削除
【補正の内容】
【手続補正３８】
【補正対象書類名】明細書
【補正対象項目名】０１３０
【補正方法】削除
【補正の内容】