/*-------------------------------------------------------------------- GBA Expansion Pack Initialize Routine Module kzat3 2008/03/27 ---------------------------------------------------------------------*/ typedef volatile unsigned long vu32; typedef volatile unsigned short vu16; typedef unsigned long u32; void G6_Setup(u32 mode) { *(vu16*)(0x09000000); *(vu16*)(0x09FFFFE0); *(vu16*)(0x09FFFFEC); *(vu16*)(0x09FFFFEC); *(vu16*)(0x09FFFFEC); *(vu16*)(0x09FFFFFC); *(vu16*)(0x09FFFFFC); *(vu16*)(0x09FFFFFC); *(vu16*)(0x09FFFF4A); *(vu16*)(0x09FFFF4A); *(vu16*)(0x09FFFF4A); *(vu16*)(0x09200000+(mode<<1)); *(vu16*)(0x09FFFFF0); *(vu16*)(0x09FFFFE8); } void GEP_Setup(u32 Value) { *(vu8*)(0x0A000000); *(vu8*)(0x0A009999); *(vu8*)(0x0A009999); *(vu8*)(0x0A006666); *(vu8*)(0x0A006666); *(vu8*)(0x0A000000+Value); } /**********************************/ /* SDRAM configuration, only once */ /**********************************/ void GEP_Initialize(void) { /* RAM disable */ G6_Setup(2); /* SDRAM configuration */ GEP_Setup(1); *(vu16*)(0x08000000); GEP_Setup(6); *(vu16*)(0x08000800); GEP_Setup(8); *(vu16*)(0x09000040); GEP_Setup(8); *(vu16*)(0x08000060); GEP_Setup(6); *(vu16*)(0x08000800); GEP_Setup(7); *(vu16*)(0x08000000); GEP_Setup(3); GEP_Setup(5); *(vu16*)(0x08000000); swiDelay(1); /* wait 1ms */ GEP_Setup(10); *(vu16*)(0x08000000); GEP_Setup(3); } /****************/ /* SDRAM Enable */ /****************/ void GEP_RAM_Enable(void) { G6_Setup(6); } /*****************/ /* SDRAM Disable */ /*****************/ void GEP_RAM_Disable(void) { G6_Setup(2); }