📄 shakeme.cpp
字号:
#include <nds.h>#include "ShakeMe.h"u16 ws;u8 SMReadREG(u8 addr){ u16 r; *(vu16 *)(0x08000100 | (addr << 1)) = 0; r = *(vu16 *)0x080001FE; while(r & 1) r = *(vu16 *)0x080001FE; return(*(vu16 *)0x08000000);}void SMWriteREG(u8 addr, u8 value){ u16 r; *(vu16 *)(0x08000000 + (addr << 1)) = value; r = *(vu16 *)0x080001FE; while(r & 1) r = *(vu16 *)0x080001FE;}bool SMInserted(void){ return(SMReadREG(0x0F) == 0x3A);}u32 SMSetCtrlREG(u32 value){ if(*(vu16 *)0x080001FE & 1)return(1); SMWriteREG(0x20, value); SMWriteREG(0x21, value >> 8); SMWriteREG(0x22, value >> 16); if(SMReadREG(0x20) != (value & 0xFF))return(2); if(SMReadREG(0x21) != ((value >> 8) & 0xFF))return(3); if(SMReadREG(0x22) != ((value >> 16) & 0xFF))return(4); return(0);}u32 SMGetCtrlREG(void){ if(*(vu16 *)0x080001FE & 1)return(0xFFFFFFFF); return(SMReadREG(0x20) | (SMReadREG(0x21)<<8) | (SMReadREG(0x22)<<16));}void SMPowerOn(u16 host){ ws = *(vu16*)(0x04000204); *(vu16*)(0x04000204) = (ws >> 8 << 8) | 0x7C | host; //set PHI to 16MHz swiDelay(32); //wait for stable clk SMSetCtrlREG(SMGetCtrlREG() | SM_POWER_ON);}void SMPowerOff(void){ SMSetCtrlREG(SMGetCtrlREG() & SM_POWER_OFF_MASK); *(vu16*)(0x04000204) = ws & 0xFF9F;}void SMEnterFastMode(void){ u16 r; r = *(vu16 *)0x080001FE; if(r & 2)return; *(vu16 *)0x080001FE = r | 2; r = *(vu16 *)0x080001FE; while(!(r & 2)) r = *(vu16 *)0x080001FE;}void SMLeaveFastMode(void){ u16 r; r = *(vu16 *)0x080001FE; if(!(r & 2))return; *(vu16 *)0x080001FE = r & 4; r = *(vu16 *)0x080001FE; while(r & 2) r = *(vu16 *)0x080001FE;}bool SMIsFastMode(void){ return(*(vu16 *)0x080001FE & 2);}/*bool SMIsIRQEnabled(void){ return(*(vu16 *)0x080001FE & 4);}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -