aboutsummaryrefslogtreecommitdiff
path: root/libpsn00b/psxgpu/font.c
diff options
context:
space:
mode:
Diffstat (limited to 'libpsn00b/psxgpu/font.c')
-rw-r--r--libpsn00b/psxgpu/font.c68
1 files changed, 54 insertions, 14 deletions
diff --git a/libpsn00b/psxgpu/font.c b/libpsn00b/psxgpu/font.c
index 4c715a9..2d4105f 100644
--- a/libpsn00b/psxgpu/font.c
+++ b/libpsn00b/psxgpu/font.c
@@ -1,4 +1,4 @@
-#include <sys/types.h>
+#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
@@ -6,29 +6,28 @@
#include <psxgpu.h>
typedef struct _fnt_stream {
- char *txtbuff;
- char *txtnext;
- char *pribuff;
- short x,y;
- short w,h;
- int bg;
- int maxchars;
+ char *txtbuff;
+ char *txtnext;
+ char *pribuff;
+ int16_t x, y;
+ int16_t w, h;
+ int bg, maxchars;
} _fnt_stream;
static _fnt_stream _stream[8];
static int _nstreams = 0;
-u_short _font_tpage;
-u_short _font_clut;
+uint16_t _font_tpage;
+uint16_t _font_clut;
-extern u_char dbugfont[];
+extern uint8_t _gpu_debug_font[];
void FntLoad(int x, int y) {
RECT pos;
TIM_IMAGE tim;
- GetTimInfo( (u_long*)dbugfont, &tim );
+ GetTimInfo( (const uint32_t *) _gpu_debug_font, &tim );
// Load font image
pos = *tim.prect;
@@ -215,7 +214,7 @@ char *FntFlush(int id) {
// Draw the primitives
DrawSync(0);
- DrawOTag((u_long*)_stream[id].pribuff);
+ DrawOTag((uint32_t*)_stream[id].pribuff);
DrawSync(0);
_stream[id].txtnext = _stream[id].txtbuff;
@@ -223,4 +222,45 @@ char *FntFlush(int id) {
return _stream[id].pribuff;
-} \ No newline at end of file
+}
+
+char *FntSort(uint32_t *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;
+
+}