コード例 #1
0
ファイル: HW.C プロジェクト: polaco1782/ultrahle
void hw_pi_dma(void)
{
    if(WPI[3])
    {
        logh("hw: PI Dma Transfer (dram:%08X cart:%08X rd:%X wr:%X st:%X)\n",
            WPI[0],WPI[1],WPI[2],WPI[3],WPI[4]);
        osPiStartDma(0,0,0,WPI[1],WPI[0],WPI[3]+1,0);
        WPI[3]=0;
    }
}
コード例 #2
0
ファイル: boot.c プロジェクト: shlomnissan/ultra64demos
/*
 * This is the main routine of the app.
 */
static void
mainproc(void *arg)
{

	/*
	 * Setup the message queues
	 */
	osCreateMesgQueue(&dmaMessageQ, &dmaMessageBuf, 1);

	osCreateMesgQueue(&rspMessageQ, &rspMessageBuf, 1);
	osSetEventMesg(OS_EVENT_SP, &rspMessageQ, NULL);

	osCreateMesgQueue(&rdpMessageQ, &rdpMessageBuf, 1);
	osSetEventMesg(OS_EVENT_DP, &rdpMessageQ, NULL);

	osCreateMesgQueue(&retraceMessageQ, &retraceMessageBuf, 1);
	osViSetEvent(&retraceMessageQ, NULL, 1);

	/*
	 * Stick the static segment right after the code/data segment
	 */
	staticSegment = _zbufferSegmentEnd;
	osPiStartDma(&dmaIOMessageBuf, OS_MESG_PRI_NORMAL, OS_READ,
		 (u32) _staticSegmentRomStart, staticSegment,
		 (u32) _staticSegmentRomEnd - (u32) _staticSegmentRomStart,
		 &dmaMessageQ);

	/*
	 * Wait for DMA to finish
	 */
	(void) osRecvMesg(&dmaMessageQ, NULL, OS_MESG_BLOCK);

	freeSegment = staticSegment + 
		(u32) _staticSegmentRomEnd - (u32) _staticSegmentRomStart;

	initControllers(MAXCONTROLLERS);

	game();
}