Skip to content

Commit 09250d3

Browse files
committed
Añadido caracteres ASCII-Extendido Español
1 parent 3753f50 commit 09250d3

13 files changed

Lines changed: 205 additions & 60 deletions

inc/global.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
#define _GLOBAL_H
33
//------------------------------------------------------------------------------------------
44
#include "../res/basicos.h"//fuente, pinguno jug, cursor,
5-
#include "../res/musica.h" //toda coleccion de musicas vgm
65

76
//-----------------------------------------------
87

@@ -30,6 +29,7 @@ void _JOYupdateMouse ();
3029
char char_salida[8];
3130
void VDP_drawInt(s32,u8,u8,u8);
3231

32+
#include "../res/musica.h" //toda coleccion de musicas vgm
3333
void play_music(u8);
3434
u8 old_musica;
3535

@@ -42,8 +42,8 @@ void TITUTLO();
4242
void ZoneMap();
4343

4444

45-
#define diag_ind 200 //hex:4B0
46-
void dialogo(u16,u16,u8,u8);
45+
#define diag_ind 200 //VRAM hex:4B0
46+
void dialogo(u16,u16,u8,u8,u8);
4747

4848

4949
//-----------------------------------

res/basicos.res

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
TILESET font1 "font_1c.png" BEST NONE
2-
TILESET font16 "font8x16b.png" APLIB NONE
2+
TILESET font16 "font8x16b-SP.png" APLIB NONE
33
SPRITE penguin "pingu1.png" 3 4 APLIB
44
SPRITE cursor "cursor.png" 1 1 APLIB
55
SPRITE dig_marco1 "DiagBox1.png" 1 1 APLIB

res/font8x16b-SP.png

2.42 KB
Loading

src/dialogos.c

Lines changed: 128 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,67 @@
55
***********************************************************************************/
66
#include "../inc/global.h"
77

8+
/*
9+
ASCI: 33 = " (comillas) usar: \"
10+
ASCI: 92 = \ (CUIDADO! escape seuence) usar siempre: \\
11+
*/
812

13+
#define topdialogo 128//0-127=X 128=\0
14+
//---------------------|XXXXXXXXXXXXXXXXXXXXXXXXX0|---------
15+
const char dialogo0[]={"El veloz murciélago hindú comía feliz cardillo y kiwi. La cigüeña tocaba el saxofón detrás del palenque de paja."};
16+
const char dialogo1[]={" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ "};
917

10-
void dialogo(u16 x,u16 y,u8 ancho, u8 alto){
18+
19+
const char dialogo2[]={"¡¿ÁÉÍÑÓÚÜáéíñóúü"};//ASCII Extendido
20+
const char dialogo3[]={" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ¡¿ÁÉÍÑÓÚÜáéíñóúü"};
21+
22+
const u8 ascii_SP[]={129,159,161,169,173,177,179,186,188,193,201,205,209,211,218,220};
23+
/*Message : ¡
24+
Message : letra: 14 >ASCI: 161 >c: 129
25+
Message : ¿
26+
Message : letra: 15 >ASCI: 191 >c: 159
27+
Message : Á
28+
Message : letra: 0 >ASCI: 193 >c: 161
29+
Message : É
30+
Message : letra: 1 >ASCI: 201 >c: 169
31+
Message : Í
32+
Message : letra: 2 >ASCI: 205 >c: 173
33+
Message : Ñ
34+
Message : letra: 5 >ASCI: 209 >c: 177
35+
Message : Ó
36+
Message : letra: 3 >ASCI: 211 >c: 179
37+
Message : Ú
38+
Message : letra: 4 >ASCI: 218 >c: 186
39+
Message : Ü
40+
Message : letra: 6 >ASCI: 220 >c: 188
41+
Message : á
42+
Message : letra: 7 >ASCI: 225 >c: 193
43+
Message : é
44+
Message : letra: 8 >ASCI: 233 >c: 201
45+
Message : í
46+
Message : letra: 9 >ASCI: 237 >c: 205
47+
Message : ñ
48+
Message : letra: 12 >ASCI: 241 >c: 209
49+
Message : ó
50+
Message : letra: 10 >ASCI: 243 >c: 211
51+
Message : ú
52+
Message : letra: 11 >ASCI: 250 >c: 218
53+
Message : ü
54+
Message : letra: 13 >ASCI: 252 >c: 220
55+
*/
56+
57+
static u8 ASCII_EXT(u8 charasci){
58+
u8 i=0;
59+
while(ascii_SP[i]!=charasci){
60+
i++;
61+
}
62+
return 96+i;
63+
}
64+
65+
66+
const char* dialogos[] = {dialogo0,dialogo1,dialogo2,dialogo3};
67+
68+
void dialogo(u16 x,u16 y,u8 ancho, u8 alto, u8 numdiag){
1169

1270
u8 i;
1371
//--------Marco Esquinas---------------------------------------------------------
@@ -43,53 +101,99 @@ void dialogo(u16 x,u16 y,u8 ancho, u8 alto){
43101
SPR_setDepth(dig_marcoV[i],SPR_MIN_DEPTH+2);//-32766
44102
SPR_setDepth(dig_marcoVd[i],SPR_MIN_DEPTH+2);//-32766
45103
}
104+
SPR_update();SYS_doVBlankProcess();
46105

47106
//Lienzo 32x32---------------------------------------------------
48-
Sprite* dig_lienzo[ancho*alto];
107+
108+
u16 Start_ind=diag_ind+1+4+4;
109+
110+
u8 aa=ancho*alto;
111+
KLog_U3("ancho: ",ancho,"*alto: ",alto," >",aa);
112+
Sprite* dig_lienzo[aa];
113+
49114
u8 spritelienzo3232=0;
50115
for(u8 v=0;v<alto;v++){
51116
for(u8 h=0;h<ancho;h++){
52-
dig_lienzo[spritelienzo3232]=SPR_addSpriteEx(&dig_marco4,x+8+(32*h),y+8+(32*v),TILE_ATTR_FULL(2,TRUE,FALSE,FALSE,diag_ind+1+4+4+(16*spritelienzo3232)),0,SPR_FLAG_AUTO_SPRITE_ALLOC | SPR_FLAG_AUTO_TILE_UPLOAD);
117+
dig_lienzo[spritelienzo3232]=SPR_addSpriteEx(&dig_marco4,x+8+(32*h),y+8+(32*v),TILE_ATTR_FULL(2,TRUE,FALSE,FALSE,Start_ind+(16*spritelienzo3232)),0,SPR_FLAG_AUTO_SPRITE_ALLOC | SPR_FLAG_AUTO_TILE_UPLOAD);
118+
if((spritelienzo3232&10)==10){ //necesario para no llenar el DMA
119+
SPR_update();SYS_doVBlankProcess();
120+
}
53121
SPR_setDepth(dig_lienzo[spritelienzo3232],SPR_MIN_DEPTH+2);//-32766
54122
spritelienzo3232++;
55123
}
56124
}
57125

58126
SPR_update();//SPR_FLAG_AUTO_TILE_UPLOAD FUNCIONE! Deve estar VISIBLE! Volvado automatico de tileset de los sprites a la VRAM
59-
60127
SYS_doVBlankProcess();
61128

62129
//Insertar Caracteres 8x16 en el lienzo VRAM
63130

64-
// unpack first
65-
TileSet *t = unpackTileSet(&font16, NULL);//descomprimimos TilSet
66-
//KLog_U1("t->numTile:",t->numTile);//numTile:384
131+
//descomprimimos TilSet
132+
TileSet *t = unpackTileSet(&font16, NULL);
133+
//KLog_U1("t->numTile: ",t->numTile);//numTile:384
134+
67135

68-
u16 Start_ind=diag_ind+1+4+4;
69136
//u16 top_ind=Start_ind+(16*spritelienzo3232);
70137
u16 ind=Start_ind;
71-
u16 copy_ind;
138+
u16 copy_ind=0;
72139

73140
u8 cancho=0;
74141
u8 tcancho=ancho*4;// 1 ancho = 4 tiles
75142

76143
u8 dig_fila=0;
77144
bool subfila=FALSE;
78145

79-
u8 c=0;
146+
char cadena_org[topdialogo];//tipo cadena completa ""(se auto añade al final \0)
147+
char cadena_temp[1];//[0] caracter, [1]=\0
148+
149+
u16 c;//valor indice de Tileset de la tabla ASCII grafico! 8x16
150+
u8 rc,ct;//valor caracter ASCII 0(32)=" "
151+
152+
/*for(rc=32;rc<256;rc++){
153+
cadena_temp[0]=rc;cadena_temp[1]='\0';
154+
KLog_U1(cadena_temp,rc);
155+
}*/
80156

157+
u8 dig_long=strlen(dialogos[numdiag]);
158+
//VDP_drawInt(dig_long,0,35,ScreenY);
159+
160+
strcpy(cadena_org,dialogos[numdiag]);//VDP_drawText(cadena_org,0,ScreenY);
161+
162+
KLog(cadena_org);
163+
164+
u8 letra=0;//numero de posicion de caracteres de la frase
165+
u8 vel_letra=6;
81166
//KLog_U4("ancho:",ancho,"-tcancho:",tcancho,">ind:",Start_ind," -top_ind:",top_ind);
82167
bool skip=FALSE;
83168

84169
do{
85170

171+
cadena_temp[0]=cadena_org[letra];cadena_temp[1]='\0';// [0] = H > ASCII:72
172+
173+
KLog(cadena_temp);
174+
175+
rc=cadena_temp[0];//32-255
176+
c=rc-32;//32>0 ASCII valor
177+
178+
if(c>128){ c=ASCII_EXT(c); }
179+
180+
181+
KLog_U3("letra: ",letra," >ASCI: ",rc," >c: ",c);
182+
86183

87184
//KLog_U1(">ind:",ind);
88185
if(c>0){//0=Espacio,1=!,2=...
186+
187+
if(c>15){//calcular +16 X cada > 16 caracteres ASCII
188+
ct=c/16;
189+
ct=16*ct;//necesario para saltar a la siguiente linea tabla ASCII
190+
c+=ct;
191+
KLog_U2("/16> ",ct," *16= ",c);
192+
}
89193
//Tails8521
90194
//----No se puede comprimir----Dirección del búfer de origen., Dirección de destino VRAM / CRAM / VSRAM.
91195
//DMA_queueDma(DMA_VRAM, (void *)yourtileset.tiles + yourtileindexinthetileset * 32, yourvramtileindex * 32, 16, 2);
92-
DMA_queueDmaFast(DMA_VRAM,(void *)t->tiles+c *32,ind*32,16,2);ind++;//0>1 (2>3)
196+
DMA_queueDmaFast(DMA_VRAM,(void *)t->tiles+ c *32,ind*32,16,2);ind++;//0>1 (2>3)
93197
//ancho> 128/8= 16 tiles | situamos el origen segunda fila de tiles 8x8, parte inferior de chara 8x16
94198
DMA_queueDmaFast(DMA_VRAM,(void *)t->tiles+(c+16)*32,ind*32,16,2);ind++;//1>2... (3>4...)
95199

@@ -116,22 +220,24 @@ void dialogo(u16 x,u16 y,u8 ancho, u8 alto){
116220
} else ind+=2;//saltamos la segunda fila de texto VRAM
117221

118222

119-
c++;if((c&15)==0) c+=16;//necesario para saltar a la siguiente linea tabla ASCII
223+
letra++;
120224

121225
if(!skip){
122-
for(i=0;i<3;i++){
123-
if(!gat){
124-
if(BUTTONS[6]) { skip=TRUE; break;}//salimos del FOR
226+
if(vel_letra>0){
227+
for(i=0;i<vel_letra;i++){
228+
if(!gat){
229+
if(BUTTONS[6]) { skip=TRUE; break;}//salimos del FOR
230+
}
231+
else if(!BUTTONS[6]) gat=FALSE;
232+
233+
SYS_doVBlankProcess();
125234
}
126-
else if(!BUTTONS[6]) gat=FALSE;
127-
128-
SYS_doVBlankProcess();
129235
}
130236
}
131237
//JOY_waitPressTime(JOY_ALL,BUTTON_B,1000);
132-
} while(dig_fila<alto);
238+
} while(dig_fila<alto && letra<dig_long);
133239

134-
//liberamos el TileSet de la fuente 8x16 de la RAM
240+
//liberamos el TileSet de la fuente 8x16 ASCII de la RAM
135241
MEM_free(t);
136242

137243

@@ -147,13 +253,11 @@ void dialogo(u16 x,u16 y,u8 ancho, u8 alto){
147253
SYS_doVBlankProcess();
148254
}while(!BUTTONS[6] || gat); gat=TRUE;
149255

150-
for(i=0;i<4;i++) SPR_releaseSprite(dig_marcoE[i]);
151-
256+
for(i=0;i<spritelienzo3232;i++) SPR_releaseSprite(dig_lienzo[i]);
152257
for(i=0;i<ancho;i++)SPR_releaseSprite(dig_marcoH[i]);
153258
for(i=0;i<ancho;i++)SPR_releaseSprite(dig_marcoHd[i]);
154259
for(i=0;i<alto;i++) SPR_releaseSprite(dig_marcoV[i]);
155260
for(i=0;i<alto;i++) SPR_releaseSprite(dig_marcoVd[i]);
261+
for(i=0;i<4;i++) SPR_releaseSprite(dig_marcoE[i]);
156262

157-
for(i=0;i<spritelienzo3232;i++) SPR_releaseSprite(dig_lienzo[i]);
158-
159263
}

src/main.c

Lines changed: 43 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
#include "../inc/global.h"
77
//-----------------------------------------------------
88

9-
109
s16 readX,readY; //_JOYupdateMouse(); Coordenadas absolutas del puntero raton
1110

11+
1212
//Definiciones de las funciones---------------------------------------------------
1313
static void inputHandler(u16,u16,u16);
1414

@@ -26,31 +26,37 @@ void main(u16 hard){
2626
} else { //KLog("NTSC-224");
2727
ScreenY=27;
2828
ScreTile8=0;
29-
}
30-
29+
}
3130
ScreenTY=8+(ScreenY*8);//224/240
3231
ScreenMY=ScreenTY/2;//112/120
3332
fixAlturaY=-24-ScreTile8;//-24/-32
3433

35-
//KLog_U1("ScreenTY:",ScreenTY);
36-
//KLog_U1("ScreenMY:",ScreenMY);
34+
/*strclr(charbim);
35+
36+
u16 i=random();
37+
KLog_U1("i:",i);
38+
decabin(i);
39+
KLog(charbim);
40+
41+
drawNumberAsHex(i);*/
3742

3843
//--------------------------------------
3944
JoyType=JOY_getJoypadType(JOY_1);
4045

46+
CursorON=FALSE;
4147
padraton=JOY_getPortType(PORT_2);
4248
if(padraton==PORT_TYPE_MOUSE) JOY_setSupport(PORT_2, JOY_SUPPORT_MOUSE);
43-
44-
//CursorON=FALSE;
4549
if(padraton==PORT_TYPE_MOUSE || padraton==PORT_TYPE_PAD) CursorON=TRUE;
4650

51+
4752
JOY_setEventHandler(&inputHandler);
4853

4954
TITUTLO();
5055

51-
//VDP_setWindowVPos(1,ScreenY);// 27max vertical Windows
52-
//VDP_setTextPlane(WINDOW);//Textos "normales SGDK" se pintan en Window es temporal
53-
//PAL_setColors(0,palette_black,64,CPU);//para iniciacion Debug
56+
VDP_setWindowVPos(1,ScreenY);// 27max vertical Windows
57+
VDP_setTextPlane(WINDOW);//Textos "normales SGDK" se pintan en Window es temporal
58+
PAL_setColors(0,palette_black,64,CPU);//para iniciacion Debug
59+
old_musica=0;
5460

5561
ZoneMap();
5662

@@ -87,17 +93,17 @@ void VDP_drawInt(s32 valor,u8 ceros,u8 x, u8 y){
8793
* */
8894
void inputHandler(u16 joy, u16 state, u16 changed){
8995

90-
BUTTONS[0]=changed;
96+
BUTTONS[0]=changed;
9197

9298
if(joy==JOY_1){ //PORT 1
9399
BUTTONS[1]=changed & BUTTON_UP;
94100
BUTTONS[2]=changed & BUTTON_DOWN;
95101
BUTTONS[3]=changed & BUTTON_LEFT;
96102
BUTTONS[4]=changed & BUTTON_RIGHT;
97103

98-
BUTTONS[5]=changed & BUTTON_A;//Boton Central
99-
BUTTONS[6]=changed & BUTTON_B;//Boton Izquiero
100-
BUTTONS[7]=changed & BUTTON_C;//Boton Derecho
104+
BUTTONS[5]=changed & BUTTON_A;
105+
BUTTONS[6]=changed & BUTTON_B;
106+
BUTTONS[7]=changed & BUTTON_C;
101107

102108
BUTTONS[8]=changed & BUTTON_START;
103109
if(JoyType==JOY_TYPE_PAD6){
@@ -169,3 +175,26 @@ void _JOYupdateMouse ()
169175
SPR_setPosition(cursorsp,joypos.x,joypos.y);
170176
}
171177

178+
179+
180+
/*
181+
char charbim[16] = {0};
182+
char *ptr = charbim;
183+
184+
void decabin (u16 n) {
185+
//Sik#7563
186+
for (int i = 0; i < 16; i++) {
187+
// *ptr++ = (n & 0x8000) ? '1' : '0';
188+
*ptr++ = '0' + (n >> 15);
189+
n <<= 1;
190+
}
191+
}
192+
193+
void drawNumberAsHex(u16 number) {
194+
char buffer[16] = {0};
195+
intToHex(number, buffer, 8);
196+
KLog(buffer);
197+
}
198+
*/
199+
200+

src/zona1dat.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ const u8 const puertas_2[] = {
9494
};
9595

9696
const u8 const puertas_3[] = {
97-
9,0,3,2,9,15,//Puerta [1]
97+
9,0,3,2,9,15 //Puerta [1]
9898
};
9999

100100

0 commit comments

Comments
 (0)