Anuncios Google

Fuentes en Lua Player HM 8

Pues como podeis ver en el titulo, a veces hasta los coders con algo de experiencia (yo no es que tenga mucha, pero algo tengo je, je) tenemos problemas a la hora de programar, seguro que no soy el único :P

Bueno, aqui va mi duda:

Estoy intentando usar el Luaplayer HM 8, pero no puedo usar las fuentes convencionales .ttf

Supuestamente el codigo debería de funcionar bien de la siguiente forma:

Font.init() --Inicializa las fuentes ttf en HM8
 
Font.load("ms0:/PSP/GAME/JUEGO/fuente.ttf",1) --Carga la fuente deseada en un slot entre el 1 y el 5
 
Font.color(255,255,255,255) --Indica los valores R,G,B y Alfa de la fuente
 
while true do --Comienza el bucle principal
  screen:clear()
    System.setHigh() --Pone la PSP a 333Mhz
     pad = Controls.read() --Obviamente todos sabemos para que sirve esto
      screen:blit(0,0, instalacion4) --Muestra una imagen cargada previamente
      Font.print(40, 40,"Texto",Blanco,1) --Muestra texto usando la fuente cargada con aterioridad y el color
      Funcion() --Ejecuta una funcion creada con anterioridad
     oldpad = pad
   screen.flip() --Muestra en pantalla la imagen y el texto
end --Fin del bucle
Font.term() --Termina el uso de la fuente

El error es el siguiente:

Error: Script.lua1: attempt to index global 'Font' (a nil value)

Press start to restart

¿Alguna sugerencia?

PD: En caso de que no se pueda arreglar el error que comento (ya que he probado miles de cosas) ¿Sería posible cargar los PRX que hay en HM8 desde el HM7 y utilizarlos usando las funciones del HM8?


-----[[7 años en Scenebeta, con la misma ilusión que la del primer día]]----


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Oye no te falta la linea de

Oye no te falta la linea de codigo siguiente?:

Font.unload()

Imagen de ZYX3D

Valiente TONTERÍA has dicho

Desde luego. Sin duda. Tú dirás todo lo que quieras que sabes lo que te haces, bla, bla, bla, pero acabas de soltar un auténtico disparate, y encima ignorando toda la discusión anterior a tu "sonada" intervención. No es mucha muestra de respeto por tu parte que digamos.

Insisto: programar no es jugar a los dados, a ver qué sale. Hay que saber qué se hace uno, por qué lo hace y por qué no hace lo que no hace.

Cualquiera con dos dedos de frente y un mínimo conocimiento de programación (no ya en Lua, en cualquier lenguaje de POO) ya sabe ver que si Font.init() da el error de "Attempt to index XX (a nil value)", Font.unload() dará exactamente el mismo error. Es de cajón.

Así que bueno, tendrás todas las ganas que tengas de que se te vea en el foro de programadores, de soltar lo que se te ocurra y tal... pero esta actitud, aquí, está peor vista -mucho peor- que en las otras partes de la página, donde tampoco es buena idea.

Así que te lo digo claro: si no sabes de qué estás hablando, cállate, porque entonces no estás haciendo más que estorbar; nada de intentar ayudar, nada de aportar, simplemente soltar la parida de turno por el scenebito y para pasearse por "ahí". O sea, estorbar. Y punto.


Strength is irrelevant. Resistance is future. We wish to improve ourselves.

La fuerza es irrelevante. La resistencia es futuro. Queremos mejorarnos.

Imagen de rubenelportero

jo**r

ZYX3D, que sabemos que tú lo ""sabes todo"", puede que tu sepas por lo que es, pero quizás otras personas no, y por eso preguntan, o puede, que otras respondan creyendo que tienen razón y lo unico que saben es empeorar las cosas, pero tampoco es para decir "cállate" de esa manera, y lo que las dicho, no seas tan arisco leñe! (no e sido el primero en decirtelo y seguro que no el ultimo)

salu2

Imagen de Arbër

Perdona pero he de decir

Que en este caso ZYX3D tiene toda la razón y estoy completamente de acuerdo con el. Si mi error está en el Font.init()... ¿Porque demonios debería de añadir una funcion (que por cierto no existe) si me dara justo el mismo error que Font.init()?

Está claro que Ðαrk_Ðrαgøn-βlαck no tiene mucha idea en lo de la programacion.


-----[[7 años en Scenebeta, con la misma ilusión que la del primer día]]----

Imagen de el__QAT

Los apoyo

No es por traerla en contra de Ðαrk_Ðrαgøn-βlαck, pero ya van varias veces que comenta "tonterias".


Tutorial: Fabricando nuestro propio micrófono para la PSP.

Exclusivo de PSP.Scenebeta.com

Imagen de rubenelportero

vale,

yo no he dicho que no lleve razon, porque la tiene, pero tampoco es pa decirlo asi ¿no? pero bueno, me callo que siempre yo "y mi libro" llevamos la culpa de todo, y si digo esto, es porque prefiero no montar lo de la ultima vez :P

Imagen de Arbër

Bueno, dejemoslo aqui

Que esto ya va siendo off topic.

Imagen de ZYX3D

[OT] Y otros que sólo hablan por hablar.

Y se les nota. Y esos sí estorban. Y a mi modo de ver, a esos NI AGUA. Punto.

Y si crees que me he pasado, ya sabes: márcalo como ofensivo. Como si tú fueras para hacerte mucho caso, por otra parte... Porque ambos sabemos que tú crees que puedes darme lecciones de vida, moral y demás, y yo ya ando tan resabiado (doblándote la edad, así a ojo) que no estoy para "tonterías de patio de colegio", o lo que interpreto como tal, ni para cambiar mi manera de ver la vida por el primer desconocido (o segundo, da igual) que me encuentre por ahí y tenga sus ideas: yo ya tengo las mías...

Así que bueno, tú sabrás. Por mi parte ya te he dicho a ti (y no serás el último) que no pienso hacerte ningún caso, ni echarte ningún cable. Tú sabrás, ya que vas dando lecciones, qué te conviene más... y qué manera de programar, si la "cortés y lo decimos todo con estilo francés del XIX", o la mía de "hay cosas que ni por el forro, y cuanto antes se corte, mejor", sirve: los resultados, a la vista están...

...pero de todos modos, lo dicho, te recuerdo que ya te dije que no iba a dirigirte más la palabra -por lo menos en temas de programación-, ya que mis modos te resultaban tan molestos. Así que espero que tu hilo de dudas se enriquezca con la gente que dice cosas a bulto y tú pierdas el tiempo probando suerte -con exquisita cortesía, eso sí-, y a los que queremos hablar de programación, y qué cosas son una tontería (que las hay, a qué negarlo), y qué cosas no, nos dejen hablarlo en paz.

Así que bueno. Por tu parte, mejor que si no vas a aportar nada al hilo, también te calles -que al fin y al cabo has escrito, únicamente, para meter un offtopic por un encontronazo personal que tuviste con otro-. Y si la gente quisiera las Lecciones Morales de Rubenelportero, ya se comprarían el libro, se harían de la secta, o lo que toque...


Strength is irrelevant. Resistance is future. We wish to improve ourselves.

La fuerza es irrelevante. La resistencia es futuro. Queremos mejorarnos.

Ok, gracias por tu

Ok, gracias por tu explicacon. Pernonad por la falta de respeto a todos.

Imagen de pspgorrister

attempt to index global

attempt to index global 'Font' (a nil value)

El error deja bien claro que Font tiene un valor nil (nulo) y por lo tanto no se puede manipular de la forma que lo haces.

¿Seguro que el Lua que tienes usa "Font"?. De hacerlo ese "Font" no tendría un valor nulo al entrar en el programa, sería una variable/objeto global.

Yo no se, pero creo que soy el único de aquí al que Lua se le hace más difícil que C. RisaRisaRisaRisa. Con tanto interprete y librería suelta al final no sé qué es válido en cada caso.

 

Un saludo.

 


LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.

Imagen de ZYX3D

Tabla rápida

Regla del nueve: si es una clase/tabla con nombre en minúscula, es "core" de Lua, y está en todas sus encarnaciones. Ejemplos: string, io, os, table, math, function (core), Image, Color, Timer, System, Controls... (dependientes de players). Excepción: screen (es una instancia de clase Image, y por tanto, player-dependant). (La lista no es exhaustiva).

Luego: hay unos que llamo "estándares de facto", que se mantienen desde los primeros players de Lua para PSP/PC (sobre el de PSP, como el LuaPlayer Windows) y que cambian nada o casi nada hasta el LPHM 7 (inclusive). Estos serían Image, Color, Timer y Controls. System es más propio de la serie HM, pero puede emularse fácilmente en PC con la tabla os, por ejemplo, ya que System viene básicamente por algo que comenté en un hilo en que creo que estabas (así que no me extiendo; digamos sólo para quien no lo sepa que es que os no funciona bien en PSP, y lo suple con System).

Y los posteriores al HM7 (el HM8, LPHMv2, PGE, creo que tb el Euphoria) cambian mucho/bastante//demasiado en cualquier caso alguna parte crucial de los "de facto" (normalmente, la gráfica) y mandan la retrocompatibilidad a tomar por saco, con lo que si te has tomado la molestia de hacerte tus bibliotecas que funcionan igual bajo Win que bajo PSP, lo más sensato es mandar al australiano a tomar por saco ventral con los canguros, y al fénix que se haga cenizas, que por las cuatro chorradillas que mete (que te puedes hacer tú mismo en Lua, y más que eso... y sigue sin tener soporte digno de fuentes, etc.), tampoco vale la pena tirar tu trabajo previo por la borda.

Luego hay algunos casos un tanto "raros", como los file handlers, que no-son-una-clase-pero-sí-y-tanto-que-lo-son, o ¿para qué necesita nadie un tipo de datos Fecha?, o que... (agárrate, curvas) Lua no tiene ninguna manera global de convertir datos. Sólo algunos casos, como tostring, funcionan coherentemente, pero para los otros puede ser un tanto complicado, según depende.


Strength is irrelevant. Resistance is future. We wish to improve ourselves.

La fuerza es irrelevante. La resistencia es futuro. Queremos mejorarnos.

Imagen de Arbër

Cuanta info

Cuanta informacion ^^

Ja, ja manda al australiano a tomar por saco xD

Un saludo.

+5 scenebitos tambien ;)

Imagen de pspgorrister

Muchas gracias por la respuesta

Es muy completa y detallada. Una lástima que algunas partes que quieren ampliar la potencia del proyecto Lua sean tan caóticas. Esperemos que con el tiempo se vuelvan todos más homogeneos y que no intenten "inventar la rueda con otro nombre", sino más innovación respentando la compatiblidad.

 

+5 Scenebitos


LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.

Imagen de ZYX3D

Revisa Font...

Que el error que te da sea justamente ese, lo que significa es que no existe nada llamado "Font".

Y bueno... Font no es una clase estándar de Lua, es de esos "estándares de facto", como Color, Image, Controls...

Así que supongo que la respuesta al misterio estará por alguna parte de la documentación del HM8. Será que es font y no Font, o hay TTFFont y SysFont o algo...

...pero si te dice ya en la primera línea que "Font" es nil, es que Font no existe ya desde el principio.

En fin, de todas maneras, EMHO el soporte de fuentes para toda la serie de players (desde el 0.20 al HMv2, pasando por los PGE y Euphoria y Blah y demás), es una auténtica cacuela. Ni acentos, ni ordenación como Dios manda, ni nada de eso... lo más que han añadido, esas funciones chorras para darles brillos, que tampoco cuesta tanto hacértelas tú mismo en ¿diez líneas?... a ver cuando dejan esa perspectiva anglocéntrica de una buena vez.


Strength is irrelevant. Resistance is future. We wish to improve ourselves.

La fuerza es irrelevante. La resistencia es futuro. Queremos mejorarnos.

Imagen de Arbër

El problema es que

Yo la funcion de Font.Init() pues no me lo he sacado de la manga sino de un tutorial de Pipagerardo (muy completo por ciert) en el que estas funciones tambien estan...

Bueno como mucho puedo volver al 7, porque solo estaba experimentando con HM8, pero demasiados cambios... Yo prefiero lo clásico :P


-----[[7 años en Scenebeta, con la misma ilusión que la del primer día]]----

Imagen de P22

=

Yo igual, pues probé con el hmv2 y me fue de culo... Pregúntale a ZX-3D-. XD

Saludos

Imagen de Arbër

Tiene que ser un problema del Lua Player

Tiene que ser un problema del Lua Player HM8 porque no hay otra explicación, al fin y al cabo es una beta.

Imagen de el__QAT

Pues

Si son errores yo tengo otro, al intentar escribir con fuentes Originales de la PSP (la del XMB) en LuaHM8 solo me mostraba la imagen de fondo per las letras no.

Si funcionaba ya que si presionaba X salia al XMB, por eso creo que es un error.

PD: Al igual que tú saque la información del tutorial de Pipagerardo.


Tutorial: Fabricando nuestro propio micrófono para la PSP.

Exclusivo de PSP.Scenebeta.com

Imagen de ZYX3D

Prueba con IntraFont.init()

Otra cosa no se me ocurre :)

Pero como los tutos de pipagerardo eran para HM<=7, si mal no recuerdo, y Homemister tiene esa manía de sustituir "sin mirar atrás", y las IntraFont eran de los avances cacareados, tiene toda la pinta que Font haya caído y lo haya sustituido IntraFont...


Strength is irrelevant. Resistance is future. We wish to improve ourselves.

La fuerza es irrelevante. La resistencia es futuro. Queremos mejorarnos.

Imagen de Arbër

Si y no

Porque es verdad que sustituyeron las fuentes ttf por las IntraFont, pero por otro lado, segun el tutorial de Pipagerardo si que hay retrocompatibilidad con estas fuentes usando el Font.init().

He pensado lo de usar las IntraFont, pero tendri que cambiar TODO el texto que muestro en mi programa, y no es poco... Por otro aldo tampco se si la RAM soportaría la IntraFont mejor que las fuentes ttf, es decir ¿Cual de ellas pesa mas? No quiero que la velocidad de mi homebrew se vea mas afectada de lo que esta... (aunque nunca lo sabre si no lo pruebo).

PD: ¿Alguien sabe si es posible cargar desde el Lua Player HM7 los .prx que vienen con el HM8 y de este modo poder usar las funciones del HM8 en el HM7? Me interesa lo que bloquear el popup del Home y el hook.


-----[[7 años en Scenebeta, con la misma ilusión que la del primer día]]----

Imagen de ZYX3D

Creo que es más cuestión de recursos...

Es decir, creo que la cuestión clave no es tanto la RAM (que quieras que no, no será mucha... cuenta unos 128KB, tirando MUY largo), sino los recursos de procesador que se gasta...

Quieras que no, cualquier fuente vectorial (como las TTF) son un meterse a hacer multiplicaciones por cada letra, letra a letra, y si encima le pones un degradado con alpha blending, pues... suena a bastante processor-intensive. Ya la "built-in monospace" era más lenta que el caballo del malo, con las TTF y demás es que no quiero ni imaginarlo :)

Personalmente, viendo lo limitado de todas las implementaciones de las distintas fuentes (problemas, aparatosidad, ¡que todas se comen los acentos y sólo permiten los caracteres hasta ASCII 127!), creo que lo mejor es ninguna de las opciones anteriores...

 

...¿¿por qué no habrá un soporte para las buenas, viejas, siempre útiles y legibles fuentes bitmap??


Strength is irrelevant. Resistance is future. We wish to improve ourselves.

La fuerza es irrelevante. La resistencia es futuro. Queremos mejorarnos.

Imagen de el__QAT

Como ya he dicho antes...

A mí no me iba así, ya que solo mostraba la imagen de fondo per no las letras.

Es algo raro pues el archivo script.lua original del LuaHM8 viene escrito de esa manera y si funciona a a perfección.


Tutorial: Fabricando nuestro propio micrófono para la PSP.

Exclusivo de PSP.Scenebeta.com

Imagen de ZYX3D

¿Pero con Font o IntraFont?

Porque son dos clases distintas, y el error parece ser muy distinto (y no extrapolable)... Si no se ven, entonces no hay ningún problema con indexar una clase inexistente (que es lo que le pasa a Arbër). Si con IntraFont sí se puede llamar al método, pero no se ven, el problema estará por otra parte (hay que inicializar la pantalla antes o después, o tomarse una Foster's Lager, o tatuarse algo maorí en la cara, o algo...), pero la clase será otra.

Eso sí, efectivamente, el propio Homemister ya reconoce que la v8 está poco menos que muerta (especialmente por los bugs) y que para eso mejor te pases a la v2 y tal... pero sigue siendo interesante saber si la clase Font -uno de estos "no propio de Lua pero sí"- sigue o no en los >LPHM7.


Strength is irrelevant. Resistance is future. We wish to improve ourselves.

La fuerza es irrelevante. La resistencia es futuro. Queremos mejorarnos.

Imagen de pspgorrister

Y digo yo de mili...

Realmente leyendote con lo de las fuentes, el tema es más serio de lo que parece. Esto es un auténtico lío!!.

Estoy pensado que una opción sería hacer un wrapper directo del SDL_ttf que se usa en C. Me explico para manejar fuentes a través de SDL en C, se usa esa libería, voy a poner unas pocas funciones:

TTF_Init(void)  //Evidente :D
 
//Pone un estilo a la fuente como negrita (TTF_STYLE_BOLD), itálica (TTF_STYLE_ITALIC), etc.
TTF_SetFontStyle( TTF_Font *fuente, int estilo) 
 
//Estas son algunas para renderizar el texto con distintos métodos (solid, blended, ...)
//No todas tienen los mismos parámetros, y creo que hay más de 10 funciones diferentes.  
//Según el método usado tendrá más o menos calidad (a costa de proceso claro)
TTF_Render_Text_Solid( TTF_Font *fuente, const char *texto, SDL_Color color_fondo)
TTF_Render_Text_Blended( TTF_Font *fuente, const char *texto, SDL_Color color_fondo)

Yo apenas he tocado las TTF de SDL, más que para mostrar unos simples textos. Pero bueno a lo que iba.

¿No hay en Lua un wrapper basado en el SDL_ttf respetando los nombres de las funciones?, esto supondría un "estándar de facto" y la misma documentacion de las DSL sería útil. Aparte que tendría una optimización bastante buena.

Sería una especie de:

Font.Init()
Font.SetFontStyle(estilo)
Font.TTF_Render_Text_Blended(texto, color_fondo)

NOTA: Lógicamente no uso el parámetro fuente porque ya está implícito en "Font"

Puede que esté diciendo alguna burrada y que el Lua del que estamos hablando no se base en SDL, en suyo caso me callo Pie en la boca.

 


LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.

Imagen de ZYX3D

Algo huele a podrido en DynaFontia...

No sé si usan la SDL, la verdad; además, en cuanto al cómo hacen sus trucos de magia, los autores de players suelen ser bastante herméticos...

De todas maneras, me huele que debe ser algún "parche" más profundo, y que esto de las fuentes es un síntoma... Lo más llamativo es la cuestión de los acentos (o sea, códigos superiores a 128): no funcionan en ninguna de ninguna fuente. Ni la de sistema de 8 puntos, ni la incrustada, ni las truetype, ni las intrafont. Nin-gu-na.

PERO en cambio... si escribes un archivo con texto "raro", se lee bien (léase: con la codificación Win-1252 en la PSP y Windows -¿o era 1522? La típica de alfabeto latino-centroeuropeo-). No hay una conversión a ASCII ni nada de eso, sino una total identidad del texto. Pero como intentes mostrar en pantalla de la PSP algo "raro", ¡cuadradín al canto!

Y esto, creo, puede ser que tenga algo que ver con que los "locale" no funcionan nada, nada, de nada. Da igual cómo te lo montes con os.setlocale(), no hay puñetera manera. El primer día de la semana seguirá siendo el "Sun", etcétera. Porque, aparte, este problema de los acentos no lo he visto en programas en C, así que debe de haber algo más por el medio, y ser algo propio de Lua...

Y si hay un problema relacionado con la página de carácteres (vía el locale)... me temo que por muchos apaños (o maravillas) que se hagan con las fuentes, el problema va a persistir. 

Y bueno, ya supongo que pedir, por ejemplo, no ya que sean con lucecitas o bombillos, sino ajustar kerning (interletraje), interlineado, que se puedan "rotar" las fuentes (para poner la PSP en formato vertical, pongamos) o se "escriba al revés" (como el árabe o el hebreo, que se escriben de derecha a izquierda) ya sería más que pedir peras al olmo... y en C me suena que será bastante posible (más que en Lua tal cual viene, desde luego) :(


Strength is irrelevant. Resistance is future. We wish to improve ourselves.

La fuerza es irrelevante. La resistencia es futuro. Queremos mejorarnos.

Imagen de Arbër

El__Qat se equivoca

En el script de ejemplo el texto se muestra usando el IntraFont (en todo su explendor :P).

Creo que la funcion Font.init() es una funcion "fantasma", es decir esta mal, deberá de ser un error de Pipagerardo.


-----[[7 años en Scenebeta, con la misma ilusión que la del primer día]]----

Imagen de el__QAT

Y yo que he dicho...

Talves no me explique bien pero eso quize decir, que el script.lua de LuaHM8 viene escrito con IntraFont y se ve bien, pero al querer usarlas yo no me va.


Tutorial: Fabricando nuestro propio micrófono para la PSP.

Exclusivo de PSP.Scenebeta.com

Imagen de Arbër

Ahh, ok

Entendí que dijiste que venia con la funcion Font.init() Sorry :p

Imagen de el__QAT

Me pasa..

Con las IntraFont es por eso que uso HMv2.

Imagen de el__QAT

Fácil..

A la hora de cargar la fuente:

--Para cargar la funete es asi--
Font.load("ms0:/PSP/GAME/JUEGO/fuente.ttf",1)
 
--y no:
 
Font.load(ms0:/PSP/GAME/JUEGO/fuente.ttf,1)
 
--Lleva comillas, al igual que las imagenes.--


Tutorial: Fabricando nuestro propio micrófono para la PSP.

Exclusivo de PSP.Scenebeta.com

Imagen de Arbër

Ok el__QAT, lo he escrito mal en el ejemplo

Pero en el codigo lo tengo con comillas (lo escribi sin copy/paste).

Aunque eso estuviese mal, el error se genera en la linea 1 del codigo, es decir, la linea del Font.init().


-----[[7 años en Scenebeta, con la misma ilusión que la del primer día]]----

Imagen de el__QAT

Pues..

No veo nada mal, solo que estes usando un EBOOT.PBP que no sea el de HM8.

Imagen de Arbër

Ya me he asegurado

De que el eboot es el correcto... Me parece muy raro, pero bueno...

¿Sabes si se podria hacer lo que dice el hilo en la postdata?


-----[[7 años en Scenebeta, con la misma ilusión que la del primer día]]----

Imagen de el__QAT

Te refieres a..

Cargarlos con la función de HM7 para cargar archivos prx, ¿no?

Imagen de Arbër

Si con esa misma funcion

Cargar PRX e usar las funciones del HM8 ¿Sabes si es posible?

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.