00001 #ifndef _PA_TEXT
00002 #define _PA_TEXT
00003
00004
00005 #ifdef __cplusplus
00006 extern "C" {
00007 #endif
00008
00009 #include "PA_BgTiles.h"
00010 #include "../../../lib/arm9/PA/Text/all_gfx.h"
00011
00012
00013 #define PA_InitCustomTextEx(screen, bg_select, tiles, map, pal) {\
00014 PAbgtext[screen] = bg_select;\
00015 PA_LoadSimpleBg(screen, bg_select, tiles, Blank, BG_256X256, 0, 1);\
00016 PA_LoadBgPal(screen, bg_select, (void*)pal);\
00017 PA_textmap[screen] = (u16*)map;PA_textpal[screen] = (u16*)pal;PAtext_pal[screen]=0;\
00018 u32 PAtexttempvar = 0; for (PAtexttempvar = 0; PAtexttempvar < 32*24; PAtexttempvar++) PA_SetTileLetter(screen, PAtexttempvar, 0, 0); }
00019
00020 void PA_CreateTextPal(u8 screen, u8 pal_number, u16 r, u16 g, u16 b);
00021
00022 extern u8 pa_printx[2];
00023 extern u8 pa_printy[2];
00024 extern s16 pa_printscroll[2];
00025
00026 void PA_PrintYPlus(u8 screen);
00027
00028
00035
00036
00037 #define TEXT_WHITE 0
00038 #define TEXT_RED 1
00039 #define TEXT_GREEN 2
00040 #define TEXT_BLUE 3
00041 #define TEXT_MAGENTA 4
00042 #define TEXT_CYAN 5
00043 #define TEXT_YELLOW 6
00044 #define TEXT_LGRAY 7
00045 #define TEXT_DGRAY 8
00046 #define TEXT_BLACK 9
00047
00048
00050
00052
00053
00054 extern u16 textcol[2];
00055 extern u8 PAbgtext[2];
00056
00057
00058 extern u16 *PA_textmap[2];
00059 extern u8 *PA_texttiles[2];
00060 extern u16 *PA_textpal[2];
00061
00062 extern s8 PA_font[2];
00063
00064
00065
00066
00067
00068
00069 #include "text0.h"
00070 #include "text1.h"
00071 #include "text2.h"
00072 #include "text3.h"
00073 #include "text4.h"
00074 extern const u8 *textData[10];
00075 extern u8 policeheight[10];
00076 extern u16 policewidth[10];
00077 extern u8 *policesize[10];
00078
00079
00080
00081 extern u8 *text_tiles[10];
00082 extern u16 *text_maps[10];
00083
00084 extern u8 *pa8bitdefaultsize[10];
00085 extern u8 police8bitheight[10];
00086
00087 typedef void(*letterfp)(u8 size, u8 screen, u16 x, u16 y, char lettertemp, u8 color);
00088
00089
00090
00091
00092 extern letterfp letters[5];
00093
00094
00095 extern u16 PAtext_pal[2];
00096
00097
00098 typedef struct{
00099 u8 x1, x2, y1, y2;
00100 } textborders;
00101 extern textborders PA_TextBox[2];
00102
00103
00104
00105
00106
00126 void PA_InitText(u8 screen, u8 bg_select);
00127
00128
00146 #define PA_SetTileLetter(screen, x, y, letter) PA_SetMapTileAll(screen, PAbgtext[screen], x, y, (PA_textmap[screen][(u16)letter]&((1<<12)-1)) + (PAtext_pal[screen] << 12))
00147
00148
00149
00161 extern inline void PA_SetTextTileCol(u8 screen, u8 color)
00162 {
00163 PAtext_pal[screen] = color;
00164 }
00165
00166
00167
00168
00186 void PA_OutputText(u8 screen, u16 x, u16 y, char* text, ...);
00187
00205 u16 PA_OutputSimpleText(u8 screen, u16 x, u16 y, const char *text);
00206
00233 u32 PA_BoxText(u8 screen, u16 basex, u16 basey, u16 maxx, u16 maxy, const char *text, s32 limit);
00234
00261 u32 PA_BoxTextNoWrap(u8 screen, u16 basex, u16 basey, u16 maxx, u16 maxy, const char *text, u32 limit);
00262
00263
00282 extern inline void PA_SetTextCol(u8 screen, u16 r, u16 g, u16 b){
00283 PA_CreateTextPal(screen, 0, r, g, b);
00284 }
00285
00286
00287
00288
00289
00290
00307 #define PA_InitCustomText(screen, bg_select, text) PA_InitCustomTextEx(screen, bg_select, text##_Tiles, text##_Map, text##_Pal)
00308
00318 #define PA_ShowFont(screen) PA_LoadBgMap(screen, PAbgtext[screen], (void*)PA_textmap[screen], BG_256X256)
00319
00320
00321
00322
00323
00359 s16 PA_SmartText(u8 screen, s16 basex, s16 basey, s16 maxx, s16 maxy, char* text, u8 color, u8 size, u8 transp, s32 limit);
00360
00361
00362
00395 s16 PA_CenterSmartText(u8 screen, s16 basex, s16 basey, s16 maxx, s16 maxy, char* text, u8 color, u8 size, u8 transp);
00396
00397
00409 #define PA_8bitCustomFont(bit8_slot, bit8_font){\
00410 text_maps[bit8_slot] = (u16*)(void*)bit8_font##_Map; \
00411 text_tiles[bit8_slot] = (u8*)bit8_font##_Tiles; \
00412 pa8bitdefaultsize[bit8_slot] = (u8*)bit8_font##_Sizes; \
00413 police8bitheight[bit8_slot] = bit8_font##_Height;\
00414 }
00415
00416
00417
00418
00419
00431
00432
00433
00434
00435
00436
00437
00438
00439
00440
00441
00453 extern inline void PA_CopyText(char *text1, char *text2){
00454 u8 i = 0;
00455 text1[i] = text2[i];
00456 do{
00457 i++;
00458 text1[i] = text2[i];
00459 }
00460 while (text2[i]);
00461 }
00462
00463
00464
00465
00486 void PA_InitTextBorders(u8 screen, u8 x1, u8 y1, u8 x2, u8 y2);
00487
00488
00497 void PA_EraseTextBox(u8 screen);
00498
00499
00500
00515 extern inline u32 PA_SimpleBoxText(u8 screen, const char *text, u32 limit){
00516 return PA_BoxText(screen, PA_TextBox[screen].x1+1, PA_TextBox[screen].y1+1, PA_TextBox[screen].x2-1, PA_TextBox[screen].y2-1, text, limit);
00517 }
00518
00527 void PA_ClearTextBg(u8 screen);
00528
00529
00530
00531
00543 void PA_Print(u8 screen, char* text, ...);
00544
00545
00557 extern inline void PA_PrintLetter(u8 screen, char letter){
00558 PA_SetTileLetter(screen, pa_printx[screen], pa_printy[screen]&31, letter);
00559 pa_printx[screen]++;
00560 if(pa_printx[screen] >= 32){
00561 PA_PrintYPlus(screen);
00562 }
00563 }
00564
00565
00566 void PA_OutputTextSpecial0(u8 screen, int x1, int y,char *text);
00567 void PA_OutputTextSpecial1(u8 screen, int x1, int y,char *text);
00568 void PA_OutputTextSpecial2(u8 screen, int x1, int y,char *text);
00569 void PA_OutputTextSpecial3(u8 screen, int x1, int y,char *text);
00570 void PA_OutputTextSpecial4(u8 screen, int x1, int y,char *text);
00571 void PA_OutputTextSpecial5(u8 screen, int x1, int y,char *text);
00572
00574
00575
00576 #ifdef __cplusplus
00577 }
00578 #endif
00579
00580
00581
00582 #endif
00583
00584
00585