MI_SetAgbCartridgeFastestRomCycle

構文

#include <nitro/mi.h>

void MI_SetAgbCartridgeFastestRomCycle(
        MICartridgeRomCycle1st *prev1st,
        MICartridgeRomCycle2nd *prev2nd );

引数

prev1st 以前の、ROM 1st アクセスサイクルの設定値を格納する領域へのポインタ
prev2nd 以前の、ROM 2nd アクセスサイクルの設定値を格納する領域へのポインタ

返り値

なし。

ただし、prev1stprev2nd の示す先に以前の設定値が格納されます。

説明

カートリッジROM領域への1st、2nd アクセスサイクルを設定します。
AGBカートリッジのROMのために高速なROMアクセスサイクルを設定します。

1st アクセスサイクルを 8、2ndアクセスサイクルを 4 に設定します。この設定は、

MI_SetCartridgeRomCycle1st( MI_CTRDG_ROMCYCLE1_8 );
MI_SetCartridgeRomCycle2nd( MI_CTRDG_ROMCYCLE2_4 );

を行なうのと同じです。

prev1st が NULL でなければ、以前の1st アクセスサイクル設定値を prev1st で示されるポインタの先に格納します。prev2nd が NULL でなければ、以前の 2nd アクセスサイクル設定値を prev2nd で示されるポインタの先に格納します。


注意:
DS ではシステムクロックの周波数が AGB の2倍になっているため、アクセスサイクルの計算式は下記のようになります。
(AGBのウェイトサイクル数 + 1 <実アクセス>)× 2
なので、AGB での 3-1 ウェイトが、DS では 8-4 アクセスという表記になっています 。ウェイトサイクルに換算すると 7-3 というように全て奇数の表現となります。
AGB の全マスクROM は 3-1 ウェイト(DS では 8-4 アクセスと表記)まで速い設定にできますが、 遅くする分には問題はありません。1st アクセスを 6 に設定することのみが禁止となります。
ただし、カートリッジに AGB のマスク ROM と同じスピードではアクセスできないデバイスが搭載されている可能性もありますし、 AGB とは違ってアクセススピードを設定できるアドレス空間が1つしかありませんので、 できるだけ遅い設定でアクセスされることをお勧めします。 マスクROM 用の速い設定にしたまま遅いデバイスへアクセスすることの無いように注意して下さい。
またアクセスする前には CTRDG_GetAgbGameCode() / CTRDG_IsBitID() / CTRDG_IsNumberID() などを使い、想定しているカートリッジかどうか確認後にアクセスするようにして下さい。

内部動作

IOレジスタの、EXMEMCNT(0x4000204)にアクセスしています。

参照

MI_SetCartridgeRomCycle1st, MI_SetCartridgeRomCycle2nd,
CTRDG_GetAgbGameCode, CTRDG_IsBitID, CTRDG_IsNumberID

履歴

2005/02/08 初版