aboutsummaryrefslogtreecommitdiff
path: root/libpsn00b/psxgpu/fntsort.c
blob: 93587936b50087ba67913100160b68795d943ae8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <sys/types.h>
#include <stdio.h>
#include <ctype.h>
#include <psxgpu.h>

extern unsigned short _font_tpage;
extern unsigned short _font_clut;

char *FntSort(u_long *ot, char *pri, int x, int y, const char *text) {
	
	DR_TPAGE *tpage;
	SPRT_8 *sprt = (SPRT_8*)pri;
	int	i;
	
	while( *text != 0 ) {
	
		i = toupper( *text )-32;
	
		if( i > 0 ) {
			
			i--;
			setSprt8( sprt );
			setRGB0( sprt, 128, 128, 128 );
			setXY0( sprt, x, y );
			setUV0( sprt, (i%16)<<3, (i>>4)<<3 );
			sprt->clut = _font_clut;
			addPrim( ot, sprt );
			sprt++;
			
		}
	
		x += 8;
		text++;
		
	}
	
	pri = (char*)sprt;
	
	tpage = (DR_TPAGE*)pri;
	tpage->code[0] = _font_tpage;
	setlen( tpage, 1 );
	setcode( tpage, 0xe1 );
	addPrim( ot, pri );
	pri += sizeof(DR_TPAGE);
	
	return pri;
	
}