Sandbox

From ProjectWiki
(Redirected from Dsaudio:Functions)
Jump to: navigation, search

This page can be used to experiment with the waki wiki ways

note to self: make a page on writing device drivers for libnds...

asdfgh!

some of meh programming values:

  • simplicity

things should be intuitive, easy to use. variable and function names should be self explanitory as much as possible.

  • consistency

variable and function names, methods, etc should follow patterns

  • modularity

individual components that can be used alone or in tandem

  • compatibility

components should work with each other as well as other '3rd party components'

  • familiarity

components should be based when appropriate on well known common concepts.

  • eat lots of leet onion

Huh @_@? How about: no one is perfect :p

~_~</div>{{#if:February 2008||}}

Blah Blah Blah

Black and pink DSLite displayed here play with wiki image links

Lupis Leeestum blah da teestium.

Sowarikko?!! nandeyo?! ¬_¬

Math boxes do not work?

<math>(x2-x1)^2</math>

<math>{n^n \over 3^n} < n! < {n^n \over 2^n}\mbox{ for }n\ge 6.</math>

(a*px+b*py+c)/sqrt(a^2+b^2) <--- shortest distance from p(oint) to line (abc) ab = slope, c = distance


void reverse(char *str) {
 char *epos=strlen(str);
 char c;
 do {
   c=*--epos;
   *str=*epos;
   *epos++=c;
 } while(str>epos);
}


bgfunct

#ifndef THBG_H
#define THBG_H
 
typedef void(*_pBgStartFunc)(void);	//Background Setup Function (called first)
typedef void(*_pBgUpdateFunc)(int);	//Background update function
typedef void(*_pBgFinishFunc)(void);	//Background destroy function 
 
typedef struct {
	_pBgStartFunc 	start;
	_pBgUpdateFunc	update;
	_pBgFinishFunc	finish;
	void 		*bgdat;		//background set specific data
} thbg_t;
 
void thBgInit(void);		//get everything ready
void thBgUpdate(int frame);	//call this every vblank
void thBgStart(thbg_t *thbg);	//call this to start a bg (will first stop any already running)
void thBgFinish(void);		//stops bg, erases bg mem, etc
 
void thUpdateBgPalette(uint16 *pal, int dstpal, int size);
void thUpdateBgSubPalette(uint16 *pal, int dstpal, int size);
 
#endif
#include <nds.h>
#include "thbg.h"
#include <stdio.h>
 
thbg_t *currentbg;
 
void thBgInit(void) {
	currentbg=NULL;
	vramSetBankC(VRAM_C_SUB_BG);
	vramSetBankH(VRAM_H_SUB_BG_EXT_PALETTE);
	vramSetBankB(VRAM_B_MAIN_BG);
	vramSetBankE(VRAM_E_MAIN_BG);
	vramSetBankF(VRAM_F_BG_EXT_PALETTE);
}
 
//hmmz should i have pBgStartFunc return a pointer to its data, then pass that as arg to update and finish?
void thBgStart(thbg_t *thbg) {
	thBgFinish();	//just in case
	currentbg=thbg;	
	if(currentbg->start) 
		((_pBgStartFunc)currentbg->start)();
}
 
void thBgUpdate(int frame) {
	if(currentbg) {
		((_pBgUpdateFunc)currentbg->update)(frame);
	}
}
 
void thBgFinish(void) {
	if(currentbg) {
		if(currentbg->finish) 
			((_pBgFinishFunc)currentbg->finish)();
		currentbg=NULL;
	}
}
 
void thUpdateBgPalette(uint16 *pal, int dstpal, int size) {
	vramSetBankF(VRAM_F_LCD);
        DC_FlushRange(pal,size);
	dmaCopyWords(3,pal, VRAM_F_EXT_PALETTE[dstpal], size);
	vramSetBankF(VRAM_F_BG_EXT_PALETTE);
}
 
void thUpdateBgSubPalette(uint16 *pal, int dstpal, int size) {
	vramSetBankH(VRAM_H_LCD);
        DC_FlushRange(pal,size);
	dmaCopyWords(3,pal, VRAM_H_EXT_PALETTE[dstpal], size);
	vramSetBankH(VRAM_H_SUB_BG_EXT_PALETTE);
}
//Whatever you need to initalize the bg
void mybg0start(void) {
	BG1_CR = BG_32x32 | BG_COLOR_256 | BG_MAP_BASE(12) | BG_TILE_BASE(1) | BG_PRIORITY(BG_PRIORITY_1);
	SUB_BG1_CR = BG_32x32 | BG_COLOR_256 | BG_MAP_BASE(12) | BG_TILE_BASE(1) | BG_PRIORITY(BG_PRIORITY_1);
	dmaCopyWords(3,BG1_Map, BG_MAP_RAM(12), sizeof(BG1_Map));
	dmaCopyWords(3,BG1_Tiles, BG_TILE_RAM(1), sizeof(BG1_Tiles));
	dmaCopyWords(3,BG1_Map, BG_MAP_RAM_SUB(12), sizeof(BG1_Map));
	dmaCopyWords(3,BG1_Tiles, BG_TILE_RAM_SUB(1), sizeof(BG1_Tiles));
	thUpdateBgPalette(BG1_Pal, 1, sizeof(BG1_Pal));
	thUpdateBgSubPalette(BG1_Pal, 1, sizeof(BG1_Pal));
	thSpriteSetHblankFunc((void*)&myhblnkfunc);	
}
 
//whatever you need to update the bg each frame
void mybg0update(int frame) {
	BG1_Y0=(u16)-frame;
	SUB_BG1_Y0=(u16)-frame;	
}
 
//when your finished...
void mybg0finish(void) {
	thSpriteSetHblankFunc((void*)NULL);
}
 
//defines the background
thbg_t mybg0={
	(void*)&mybg0start,
	(void*)&mybg0update,
	(void*)&mybg0finish
};
//someplace in ur code start the desired bg...
	thBgStart(&mybg0);
Personal tools
irssi scripts
eggdrop scripts