Example #1
0
//---------------------------------------------------------------------------------
bool sdio_Startup() {
//---------------------------------------------------------------------------------
	if (!REG_DSIMODE) return false;

	fifoSendValue32(FIFO_SDMMC,SDMMC_HAVE_SD);
	while(!fifoCheckValue32(FIFO_SDMMC));
	int result = fifoGetValue32(FIFO_SDMMC);

	if(result==0) return false;

	fifoSendValue32(FIFO_SDMMC,SDMMC_SD_START);
	while(!fifoCheckValue32(FIFO_SDMMC));
	result = fifoGetValue32(FIFO_SDMMC);
	
	return result == 0;
}
Example #2
0
//---------------------------------------------------------------------------------
bool sdio_IsInserted() {
//---------------------------------------------------------------------------------
	if (!REG_DSIMODE) return false;

	fifoSendValue32(FIFO_SDMMC,SDMMC_SD_IS_INSERTED);
	while(!fifoCheckValue32(FIFO_SDMMC));
	int result = fifoGetValue32(FIFO_SDMMC);
	return result == 1;
}
Example #3
0
int CommandStopRecording(void)
{
    NTXMFifoMessage command;
    command.commandType = STOP_RECORDING;

    fifoSendDatamsg(FIFO_NTXM, sizeof(command), (u8*)&command);

    while(!fifoCheckValue32(FIFO_NTXM))
        swiDelay(1);

    return (int)fifoGetValue32(FIFO_NTXM);
}
Example #4
0
File: sound.c Project: hl1itj/Team5
int soundPlayNoise(u16 freq, u8 volume, u8 pan){
	FifoMessage msg;

	msg.type = SOUND_NOISE_MESSAGE;
	msg.SoundPsg.freq = freq;
	msg.SoundPsg.volume = volume;
	msg.SoundPsg.pan = pan;

	fifoSendDatamsg(FIFO_SOUND, sizeof(msg), (u8*)&msg);

	while(!fifoCheckValue32(FIFO_SOUND));

	return (int)fifoGetValue32(FIFO_SOUND);
}
Example #5
0
int CommandStopRecording(void)
{
    NTXMFifoMessage command;
    command.commandType = STOP_RECORDING;

	fifoSetValue32Handler(FIFO_NTXM, 0, 0);
	fifoSendDatamsg(FIFO_NTXM, sizeof(command), (u8*)&command);

    while(!fifoCheckValue32(FIFO_NTXM))
        //swiDelay(1);
		DSWaitForIRQ(~0);

    int x = (int)fifoGetValue32(FIFO_NTXM);
	fifoSetValue32Handler(FIFO_NTXM, CommandRecvHandler, 0);
	return x;
}
Example #6
0
void sleepMode(u32 value32, void* userdata)
{iprintf("sleep mode engaged\n");for(;;);
	fifoSendValue32(FIFO_USER_03, 1);
	
	// turn shit off
	u32 powerstate = *(vu32*)0x04000304;
	*(vu32*)0x04000304 = (powerstate & 0x8001);
	
	swiIntrWait(1, IRQ_FIFO_NOT_EMPTY);
	iprintf("done sleeping\n");
	// turn shit back on
	*(vu32*)0x04000304 = powerstate;
	
	fifoSendValue32(FIFO_USER_03, 1);
	while (!fifoCheckValue32(FIFO_USER_03));
}
Example #7
0
// fifoSetValue32Handler - Set a callback to receive incoming value32 messages on a specific channel.
bool fifoSetValue32Handler(int channel, FifoValue32HandlerFunc newhandler, void * userdata) {
	if(channel<0 || channel>=FIFO_NUM_CHANNELS) return false;

	int oldIME = enterCriticalSection();

	fifo_value32_func[channel] = newhandler;
	fifo_value32_data[channel] = userdata;

	if(newhandler) {
		while(fifoCheckValue32(channel)) {
			newhandler( fifoGetValue32(channel) , userdata );
		}
	}


	leaveCriticalSection(oldIME);

	return true;
}
Example #8
0
void send_mp3_stop_message(void)
{
	do_mp3 = 0;
	
	fifo_msg msg;
	msg.type = kStopMP3;
	fifoSendDatamsg(FIFO_7to9,sizeof(msg),(u8 *)&msg);
	while(!fifoCheckValue32(FIFO_7to9));
	int ret = (int)fifoGetValue32(FIFO_7to9);

	/*while (quake_ipc_7to9->message == 0xffffffff);
	
	quake_ipc_7to9->message_type = kStopMP3;
	quake_ipc_7to9->message = 0xffffffff;
	
	while (quake_ipc_7to9->message == 0xffffffff);*/
	
	ARM7_PRINT("mp3 stop message sent\n");
}
Example #9
0
File: sound.c Project: hl1itj/Team5
int soundMicRecord(void *buffer, u32 bufferLength, MicFormat format, int freq, MicCallback callback){
	FifoMessage msg;

	msg.type = MIC_RECORD_MESSAGE;
	msg.MicRecord.format = format;
	msg.MicRecord.buffer = buffer;
	msg.MicRecord.freq = freq;
	msg.MicRecord.bufferLength = bufferLength;

	micCallback = callback;

	fifoSetDatamsgHandler(FIFO_SOUND, micBufferHandler, 0);

	fifoSendDatamsg(FIFO_SOUND, sizeof(msg), (u8*)&msg);

	while(!fifoCheckValue32(FIFO_SOUND));

	return (int)fifoGetValue32(FIFO_SOUND);
}
Example #10
0
//---------------------------------------------------------------------------------
bool sdio_WriteSectors(sec_t sector, sec_t numSectors,const void* buffer) {
//---------------------------------------------------------------------------------
	if (!REG_DSIMODE) return false;
	FifoMessage msg;

	DC_FlushRange(buffer,numSectors * 512);

	msg.type = SDMMC_SD_WRITE_SECTORS;
	msg.sdParams.startsector = sector;
	msg.sdParams.numsectors = numSectors;
	msg.sdParams.buffer = (void*)buffer;
	
	fifoSendDatamsg(FIFO_SDMMC, sizeof(msg), (u8*)&msg);

	while(!fifoCheckValue32(FIFO_SDMMC));

	int result = fifoGetValue32(FIFO_SDMMC);
	
	return result == 0;
}
Example #11
0
File: sound.c Project: hl1itj/Team5
int soundPlaySample(const void* data, SoundFormat format, u32 dataSize, u16 freq, u8 volume, u8 pan, bool loop, u16 loopPoint){ 
	
	FifoMessage msg;

	msg.type = SOUND_PLAY_MESSAGE;
	msg.SoundPlay.data = data;
	msg.SoundPlay.freq = freq;
	msg.SoundPlay.volume = volume;
	msg.SoundPlay.pan = pan;
	msg.SoundPlay.loop = loop;
	msg.SoundPlay.format = format;
	msg.SoundPlay.loopPoint = loopPoint;
	msg.SoundPlay.dataSize = dataSize >> 2;

	fifoSendDatamsg(FIFO_SOUND, sizeof(msg), (u8*)&msg);

	while(!fifoCheckValue32(FIFO_SOUND));

	return (int)fifoGetValue32(FIFO_SOUND);
}
Example #12
0
static inline void render1(void)
{
	scanKeys();
	
	// cpuEndSlice();
	playerControls(NULL);
	updateControls();
	// iprintf("controls : %d  \n",cpuEndSlice());
	
		updatePlayer(NULL);
	// iprintf("player : %d  \n",cpuEndSlice());
	
		updatePortals();
		updateTurrets();
		updateBigButtons();
		updateTimedButtons();
		updateEnergyDevices();
		updateEnergyBalls();
		updatePlatforms();
		updateCubeDispensers();
		updateEmancipators();
		updateEmancipationGrids();
		updateDoors();
		updateWallDoors();
	// iprintf("updates : %d  \n",cpuEndSlice());
	
	// if(currentPortal)GFX_CLEAR_COLOR=currentPortal->color|(31<<16);
	// else GFX_CLEAR_COLOR=0;
	u16 color=getCurrentPortalColor(getPlayer()->object->position);
	// NOGBA("col %d",color);
	// GFX_CLEAR_COLOR=color|(31<<16);
	GFX_CLEAR_COLOR=RGB15(0,0,0)|(31<<16);
	
	#ifdef DEBUG_GAME
		if(fifoCheckValue32(FIFO_USER_08))iprintf("\x1b[0J");
		while(fifoCheckValue32(FIFO_USER_08)){int32 cnt=fifoGetValue32(FIFO_USER_08);iprintf("ALERT %d      \n",cnt);NOGBA("ALERT %d      \n",cnt);}
	#else
		while(fifoCheckValue32(FIFO_USER_08)){int32 cnt=fifoGetValue32(FIFO_USER_08);NOGBA("ALERT %d      \n",cnt);}
	#endif
	
	projectCamera(NULL);

	glPushMatrix();
		
		glScalef32(SCALEFACT,SCALEFACT,SCALEFACT);
		
		renderGun(NULL);
		
		transformCamera(NULL);
		
		cpuEndSlice();
			// drawRoomsGame(128, color);
			drawRoomsGame(0, color);
			// drawCell(getCurrentCell(getPlayer()->currentRoom,getPlayerCamera()->position));
		// iprintf("room : %d  \n",cpuEndSlice());
		
		updateParticles();
		drawParticles();
		// iprintf("particles : %d  \n",cpuEndSlice());
		
			drawOBBs();
		// iprintf("OBBs : %d  \n",cpuEndSlice());
			drawBigButtons();
			drawTimedButtons();
			drawEnergyDevices();
			drawEnergyBalls();
			drawPlatforms();
			drawCubeDispensers();
			drawTurretsStuff();
			drawEmancipators();
			drawEmancipationGrids();
			drawDoors();
			drawWallDoors(NULL);
			drawSludge(&gameRoom);
		// iprintf("stuff : %d  \n",cpuEndSlice());
		
		drawPortal(&portal1);
		drawPortal(&portal2);
			
	glPopMatrix(1);

	//HUD TEST
	if(levelInfoCounter>0 && (levelTitle || levelAuthor))
	{
		levelInfoCounter--;
		glMatrixMode(GL_PROJECTION);
		glPushMatrix();
			glLoadIdentity();
			glOrthof32(inttof32(0), inttof32(255), inttof32(191), inttof32(0), -inttof32(1), inttof32(1));
			
			glMatrixMode(GL_MODELVIEW);
			glPushMatrix();
				glLoadIdentity();

				if(levelTitle)drawCenteredString(levelTitle, inttof32(17)/10, (82));
				if(levelAuthor)drawCenteredString(levelAuthor, inttof32(1), (100));

			glPopMatrix(1);
			glMatrixMode(GL_PROJECTION);
		glPopMatrix(1);
	}
	
	glFlush(0);
}
Example #13
0
//---------------------------------------------------------------------------------
int loadNDS(int socket, u32 remote) {
//---------------------------------------------------------------------------------
	int len;
	
	int i=0;
	ioctl(socket,FIONBIO,&i);

	len = recvall(socket,__NDSHeader,512,0);
	
	if (len != 512) {
		kprintf("Error reading header.\n");
		return 1;
	}

	int arm7dest = __NDSHeader->arm7destination;
	int arm7size = __NDSHeader->arm7binarySize;

	int arm9dest = __NDSHeader->arm9destination;
	int arm9size = __NDSHeader->arm9binarySize;
	
	volatile int response = 0;
	
	if (arm9dest + arm9size > (int)_start) response = 1;
	if (arm7dest >= 0x02000000 && arm7dest < 0x03000000 && arm7dest + arm7size > (int)_start) response = 2;

	send(socket,(int *)&response,sizeof(response),0);
	
	if(response) return 1;

	kprintf("Reading arm7 binary: ");
	if (progressRead(socket,(char *)memUncached((void*)0x02000000),arm7size)) {
		kprintf("\nReceive error.\n");
		return 1;
	}
	
	fifoSendValue32(FIFO_USER_01,1);

	while(!fifoCheckValue32(FIFO_USER_01)) {
		swiIntrWait(1,IRQ_FIFO_NOT_EMPTY);
	}
	fifoGetValue32(FIFO_USER_01);

	kprintf("Reading arm9 binary: ");
	if(progressRead(socket,(char *)arm9dest,arm9size)) {
		kprintf("\nReceive error.\n");
		return 1;
	}

	volatile int cmdlen=0;
	char *cmdline;
	if (arm9size != 0){
		cmdline = (char*)(arm9dest+arm9size);
	} else {
		cmdline = (char*)(arm7dest+arm7size);
	}
	len = recvall(socket,(char*)&cmdlen,4,0);

	if (cmdlen) {
		len = recvall(socket,cmdline,cmdlen,0);

		__system_argv->argvMagic = ARGV_MAGIC;
		__system_argv->commandLine = cmdline;
		__system_argv->length = cmdlen;
		__system_argv->host = remote;
	}

	Wifi_DisableWifi();

	DC_FlushAll();
	REG_IPC_SYNC = 0;

	fifoSendValue32(FIFO_USER_01,2);
	fifoSendValue32(FIFO_USER_01,__NDSHeader->arm9executeAddress);

	irqDisable(IRQ_ALL);
	REG_IME = 0;

	//clear out ARM9 DMA channels
	for (i=0; i<4; i++) {
		DMA_CR(i) = 0;
		DMA_SRC(i) = 0;
		DMA_DEST(i) = 0;
		TIMER_CR(i) = 0;
		TIMER_DATA(i) = 0;
	}

	u16 *mainregs = (u16*)0x04000000;
	u16 *subregs = (u16*)0x04001000;

	for (i=0; i<43; i++) {
		mainregs[i] = 0;
		subregs[i] = 0;
	}

	REG_DISPSTAT = 0;

	dmaFillWords(0, BG_PALETTE, (2*1024));
	VRAM_A_CR = 0x80;
	dmaFillWords(0, VRAM, 128*1024);
	VRAM_A_CR = 0;
	VRAM_B_CR = 0;
// Don't mess with the ARM7's VRAM
//	VRAM_C_CR = 0;
	VRAM_D_CR = 0;
	VRAM_E_CR = 0;
	VRAM_F_CR = 0;
	VRAM_G_CR = 0;
	VRAM_H_CR = 0;
	VRAM_I_CR = 0;
	REG_POWERCNT  = 0x820F;

	//set shared ram to ARM7
	WRAM_CR = 0x03;
	// Return to passme loop
	*((vu32*)0x02FFFE04) = (u32)0xE59FF018;		// ldr pc, 0x02FFFE24
	*((vu32*)0x02FFFE24) = (u32)0x02FFFE04;		// Set ARM9 Loop address

	REG_IPC_SYNC = 0x500;

	arm9Reset();
	while(1);
}