Página 3 de 4
Ir a la página Anterior  1, 2, 3, 4  Siguiente
 

Mensaje Re: Trasteando con el Lua Player de Saturn (Tutorial)

#21  Indiket 14 May 2014, 12:55 AM

Gracias Wesker, ese era jeje.

Para que os animéis un poco, algo de homebrew Saturnero que encontré: http://vieille.merde.free.fr/
Son juegos programados directamente en SGL pero ya aviso que no es un camino de rosas! xD
 



 
avatar
blank.gif Indiket Sexo: Masculino
Administrador
Administrador
Donante Unreleased €
DC Coder
 
Registrado: May 2009
Mensajes: 257
  • Volver arriba Página inferior
 

Mensaje Re: Trasteando Con El Lua Player De Saturn (Tutorial)

#22  FacundoARG 14 May 2014, 04:09 AM

Indiket escribió: [Ver mensaje]

Sabéis si Rockin-B publica los códigos fuentes de los ports? Dónde se puede obtener ese wrapper, aunque sea con SGL y
no libyaul? Sería interesante ver que libs usó y cómo lo hizo, para tener ideas!!!


Indiket, el wrapper esta publicado en segaxtreme. Es el que vbt usó con el Wofl3D, le envié un mensaje privado hace 1 año más o menos y nunca me contestó.

Fijate si tenes suerte en compilarlo, no parece difícil pero no tengo mucho tiempo.
 




____________
SegaSaturn Developer Addict
 
avatar
argentina.png FacundoARG Sexo: Masculino
Colaborador SEGASATURNO
Colaborador SEGASATURNO
Professional Videogamer Coder
Donante Unreleased €
 
Registrado: Diciembre 2006
Ubicación: San Luis
Mensajes: 691
  • Volver arriba Página inferior
 

Mensaje Re: Trasteando con el Lua Player de Saturn (Tutorial)

#23  Ryo Suzuki 16 May 2014, 03:15 PM

Indiket escribió: [Ver mensaje]
Que interesante es el USB Data Link!! Ryo, sabes si es fácil obtenerlo? Vale para todos los Action Replay?? Me interesaría tener uno ya!!!  


Es facil. Vienes a verme y te lo dejo junto a un Action Replay de los antiguos que tiene puerto para conectarlo.

Quiero que el bueno de Indiket se meta en Saturn, este hombre es un crack de los ports, etc...

FacundoARG escribió: [Ver mensaje]

Indiket, el wrapper esta publicado en segaxtreme. Es el que vbt usó con el Wofl3D, le envié un mensaje privado hace 1 año más o menos y nunca me contestó.

Fijate si tenes suerte en compilarlo, no parece difícil pero no tengo mucho tiempo.


Tenemos que mirar lo del SDL Wrapper a fondo. Facundo enviale un privado desde aqui mismo si puedes, que el bueno de vbt anda por aqui por el foro y he hablado con el hace poco.

Bueno, sigo con mis tutoriales. ¿Que pensabais que os iba a dejar en paz?



Más estructuras de control: while

Hemos visto y usado estructuras de control como el if. Ahora vamos a ver otra que es el buqle while cuyo propósito es repetir un bloque de código mientras una condición se mantenga verdadera.

Imaginate, por poner un ejemplo practico de la vida real, que tienes un juego de segunda mano para vender y piensas "por menos de 10 euros no lo vendo". Varios amigos te van haciendo ofertas, te doy 3 euros, te doy 7, te doy...

Entonces llega uno que te ofrece 11 leuros y automaticamente se lo vendes. O sea que mientras(while) que no te ofrezcan al menos 10 euros tu no lo soltabas

Pues esto es lo mismo que hace el comando while en Lua. Te mete en un bucle en el que se ejecuta un bloque de codigo hasta que no se cumpla esa condicion.

Citar:
- while loop

while condition do
  block
end


Vamos a verlo con un caso practico con el Lua Player de Saturn. He vuelto a perpetrar un codigo de los mios, aqui lo teneis:

--/***************************************************
--
--  WHILE SAMPLE SATURNO TUTORIAL
--
--***************************************************/

local variable_numerica = 1

local variable_saltolinea = 4

slInitSystem(TV_320x240,NULL,1)

slPrint("- EJEMPLO DE WHILE -", 12, 1)


while variable_numerica<10 do

slPrint(variable_numerica, 3, variable_saltolinea)
variable_numerica = variable_numerica + 1
variable_saltolinea = variable_saltolinea + 2

end


slPrint("Ryo Suzuki para www.segasaturno.com", 3, 25)

while true do slSynch() end


Generamos la iso como siempre y lo probamos en el emulador. Nos aparece esto:

 while

Ha funcionado. Le hemos dicho que vaya imprimiendo una variable numerica en pantalla y que esa variable se vaya incrementando +1 cada vez y la vaya mostrando en pantalla en ese proceso, MIENTRAS sea menor de 10. Cuando sea mayor o igual a 10 ya el bucle del while deja de ejecutarse y en este caso el programa termina.

Vamos a ver el codigo comentado para que quede mas claro y explicar las instrucciones y como lo he montado:

--/***************************************************
--
--  WHILE SAMPLE SATURNO TUTORIAL
--
--***************************************************/

local variable_numerica = 1  -- creamos la variable que vamos a imprimir en pantalla y vamos a ir incrementando hasta que llega a 10

local variable_saltolinea = 4  -- esto es una variable extra que no se va a ver pero nos va a servir para que imprima cada vez la variable anterior en una linea diferente porque si no no veriamos como se incrementra en pantalla (seria instantaneo a nuestros ojos)

slInitSystem(TV_320x240,NULL,1)

slPrint("- EJEMPLO DE WHILE -", 12, 1)


while variable_numerica<10 do  -- comienzo de la estructura de control while, le estamos diciendo como veis que mientras la variable numerica sea menor de 10 que haga el siguiente bucle

slPrint(variable_numerica, 3, variable_saltolinea) -- *comienzo del bucle, imprime la variable con el valor que tenga en ese momento, el 3 son tres espacios en la linea que le toque, la variable salto de linea es en la linea de la pantalla que la queremos (empezara en la 4)
variable_numerica = variable_numerica + 1 -- incrementamos la variable numerica en uno, cada vez le sumamos uno en este bucle
variable_saltolinea = variable_saltolinea + 2 --  incrementamos la variable salto de linea dos, para que cada vez imprima la variable numerica dos lineas mas abajo y no se pise con la anterior impresion en pantalla *fin del bucle

end -- fin del while


slPrint("Ryo Suzuki para www.segasaturno.com", 3, 25)

while true do slSynch() end


Creo que habra quedado bastante claro. Como el if el while nos puede servir de mucho a la hora de programar cualquier cosa que hagamos. Luego le doy una vuelta de tuerca a este mismo ejemplo si puedo, que voy mal de tiempo ahora mismo y me tengo que ir a comer.

Un saludo y que no se anime tanta gente a probar estos tutoriales y a trastear con Lua que estoy desbordado de preguntas
 



 
avatar
japan.png Ryo Suzuki Sexo: Masculino
Alfonso Martínez González
Webmaster
Webmaster
Shenmue Freak
 
Registrado: Agosto 2005
Ubicación: 難波
Mensajes: 9820
  • Volver arriba Página inferior
 

Mensaje Re: Trasteando con el Lua Player de Saturn (Tutorial)

#24  Indiket 19 May 2014, 12:46 AM

Mientras Ryo se prepara para la siguiente clase de programación 101, os comunico que he estado estos días trasteando con la libyaul

LibYaul es una nueva librería para programar en Saturn, con la diferencia que es 100% opensource! Y eso atrae mucho amigos, es como el KOS de Dreamcast!!

https://github.com/ijacquez/libyaul

Conseguí compilar mi tool-chain saturnera, la librería y el ejemplo gracias a la ayuda del mismo Piratero ;) . En los próximos días pondré un nuevo hilo con todos los detalles para que os la podáis compilar y algunas capturas interesantes ^.^
 



 
avatar
blank.gif Indiket Sexo: Masculino
Administrador
Administrador
Donante Unreleased €
DC Coder
 
Registrado: May 2009
Mensajes: 257
  • Volver arriba Página inferior
 

Mensaje Re: Trasteando Con El Lua Player De Saturn (Tutorial)

#25  Raizing 19 May 2014, 09:00 PM

Muy buen curro Ryo.

A raíz de ver este hilo me he puesto a leer las documentación que todo kiski tiene sobre la SBL y la SGL (los manuales i tal) y me estaban dando ganas de toquetear xD.

Indiket, tengo ganas de ese post... el LibYaul pinta bien, en qué estado estaba? es que creo que desde 2012 no había mucho movimiento, no?

Saludos,
 



 
avatar
spain.png Raizing Sexo: Masculino
Miembro de honor
Miembro de honor
Donante Unreleased €
 
Registrado: Noviembre 2006
Mensajes: 348
  • Volver arriba Página inferior
 

Mensaje Re: Trasteando con el Lua Player de Saturn (Tutorial)

#26  Indiket 20 May 2014, 12:47 AM

Cierto Raizing, no hubo mucho movimiento. Pero recientemente contacte con Piratero y me comentó que hizo muchos cambios internos. Algunas cosas están rotas, pero pinta muy bien!!

Mañana redacto el tutorial, espero que os guste!
 



 
avatar
blank.gif Indiket Sexo: Masculino
Administrador
Administrador
Donante Unreleased €
DC Coder
 
Registrado: May 2009
Mensajes: 257
  • Volver arriba Página inferior
 

Mensaje Re: Trasteando con el Lua Player de Saturn (Tutorial)

#27  Indiket 20 May 2014, 11:56 PM

Lo prometido es deuda Raizing!! Aquí tenéis el tuto ;)

http://www.segasaturno.com/portal/t...370.html#p78370
 



 
avatar
blank.gif Indiket Sexo: Masculino
Administrador
Administrador
Donante Unreleased €
DC Coder
 
Registrado: May 2009
Mensajes: 257
  • Volver arriba Página inferior
 

Mensaje Re: Trasteando Con El Lua Player De Saturn (Tutorial)

#28  Ryo Suzuki 24 May 2014, 04:19 PM

Raizing escribió: [Ver mensaje]
Muy buen curro Ryo.
A raíz de ver este hilo me he puesto a leer las documentación que todo kiski tiene sobre la SBL y la SGL (los manuales i tal) y me estaban dando ganas de toquetear xD.


A ver si os animáis. Yo voy haciendo mis pruebas tratando de aprender un poco.


El azar de Lua

Si antes vimos la función azar de la librería de SEGA slRandom() que nos devolvía un número al azar con bastantes decimales, ahora he estado echándole un ojo a esta misma función pero desde Lua. Es la ventaja que tenemos con este Lua Player tan particular para Saturn, en ocasiones podemos usar cosas de las librerías oficiales de SEGA, pero también podemos hacer uso del lenguaje Lua en esta particular mezcla que es el Lua Player.

La función para azar es math.random
Citar:

math.random ([m [, n]])

Esta función es un interface a rand, generador simple de números pseudo-aleatorios proporcionado por el ANSI C. (Sin garantías de sus propiedades estadísticas.)

Cuando se invoca sin argumentos devuelve un número pseudoaleatorio real uniforme en el rango [0,1). Cuando se invoca con un número entero m, math.random devuelve un número pseudoaleatorio entero uniforme en el rango [1, m]. Cuando se invoca con dos argumentos m y n enteros, math.random devuelve un número pseudoaleatorio entero uniforme en el rango [m, n].


Imaginemos que necesitamos un número entero al azar del 1 al 10. Creo que debería usar el comando:

math.random(1,10)


Lo pruebo haciendo un pequeño programa que genere e imprima en pantalla varios números al azar, como ya sabemos y obtengo esto:

 azar_saturn_lua

No os pego el código simple porque ya sabéis hacerlo. Como veis, ha funcionad. Lo de pseudoaleatorio al final va a ser verdad porque parece ser que tiende a repetir números... cosas del azar?

Con Lua, en este sentido, vemos que tenemos más flexibilidad, ya que con el de la librería de SEGA el rango de azar era solo entre 0.0 y el 1 con 14 decimales y ahora podemos definir nosotros más el azar a nuestras necesidades:

 azar500

Ahora le he dicho math.random(0,500) y me ha generado números al azar desde el 0 al 500 -ambos incluidos-, también como habréis visto se me ha olvidado editar el título del programa... soy un programador chapucero


Funciones no usadas por SEGA en la Saturn

Quizás pensáis que es osado que yo que no tengo ni idea de estos temas crea haber descubierto algo así, pero me parece a mi que es cierto. Por lo que he estado viendo hay varias funcionalidadades de la Saturn que estoy comprobando que nunca se han usado en ningún juego comercial a pesar de que la consola era capaz de ello.

Una de ellas es la posibilidad de en los juegos multilenguaje no obligarte a seleccionar el idioma y por el contrario coger esa información de cómo tenemos configuradad nuestra máquina y mostrar el idioma correspondiente, como hicieron consolas posteriores como la Dreamcast, PlayStation 2, etc...

Podríamos determinar que la Saturn se adelantó a su tiempo en esta posibilidad, aunque nunca se llegó a usar

Esto se podría hacer con el comando slGetLanguage() que obtiene el número de lenguaje almacenado en la bios de la consola. Con eso y con algo como el IF que hemos aprendido ya podríamos derivar a nuestro programa -o juego comercial, como decía- a que muestre un idioma u otro en pantalla según nos interese.

Pero no solo eso, podemos con un programa a "obligar" a nuestra Saturn a configurarse con un lenguaje concreto que nos convenga. Por ejemplo tenemos la consola configurada en inglés y podemos forzarla a que se ponga en español.

Esto se haría con este comando de la librería SEGA:

Citar:
slSetLanguage(numero del lenguaje que queramos)


Por ejemplo, yo creo un pequeño programa que ejecute: slSetLanguage(3)
Con esta orden pondría la bios de la consola en castellano, con independencia de qué idioma tuviese configurado. Como digo, algo que ningún juego comercial ha hecho y por lo tanto una funcionalidad no usada en la Saturn...

El problema es que en cuanto hacemos reset se va a tomar viento, ya que no hemos almacenado este cambio. Edito mi código con otro comando nuevo que sirve para precisamente eso, que no es otro que:

Citar:
slSetSmpcMemory()


Le estoy diciendo que tras cambiar a castellano guarde los cambios del estado como está en ese momento la SmpcMemory que es toda la info de configuración de la bios.

Os pongo el programita para que lo veais:

slInitSystem(TV_320x240,NULL,1)


slPrint("Lenguaje de la Bios en castellano", 3, 1)

slSetLanguage(3) -- pone la bios de la Saturn en spanish, que es el numero 3
slPrint("- OK, ahora es SPANISH", 3, 15)

slSetSmpcMemory() -- guarda la bios tal y como esta en este momento, en este caso guardaria el cambio de lenguaje que hemos hecho
slPrint("- OK, guardo los cambios", 3, 17)

slPrint("Aunque hagas reset o ", 3, 20)
slPrint("apagues la consola sera asi.", 3, 21)

slPrint("Ryo Suzuki de www.segasaturno.com", 3, 27)
 

while true do slSynch() end


Le hemos dicho que poga el lenguaje 3, que es el castellano. He comprobado que el 4 es el italiano y el 5 el japonés. Los demás podéis probadlos vosotros mismos...

Ejecuto el tema y sale esto:

 language_saturn_dev

Podeis comprobadlo en el emulador que efectivamente funciona. Hace lo que dice incluso en consola real, a no ser -claro está- que no tengáis pila en vuestra consola

 Podeis configurar la bios en el SSF con cualquier idioma diferente al español y comprobar que tras ejecutar esta iso que generemos y volver a la bios del emulador, la consola queda configurada en castellano.

Un pequeño ejemplo de que hay funciones de las librerías de SEGA que nunca fueron usadas en la vida comercial de la SEGA Saturn.

Eso es todo por el momento, ya seguiré con más "lecciones" si os apetecen. Un saludo!!



P.D: De momento continuaré con el Lua Player hasta que pueda avanzar más y pueda migrar al YAUL que ha posteado el bueno de Indiket

P.D2: Os pongo otra página con buena info sobre Lua y varios samples que la estoy consultando en busca de info: http://lua-users.org
 




____________
sega_firma

Choose a job you love, and you will never have to work a day in your life. (Confucius)
 
avatar
japan.png Ryo Suzuki Sexo: Masculino
Alfonso Martínez González
Webmaster
Webmaster
Shenmue Freak
 
Registrado: Agosto 2005
Ubicación: 難波
Mensajes: 9820
  • Volver arriba Página inferior
 

Mensaje Re: Trasteando con el Lua Player de Saturn (Tutorial)

#29  Wesker 24 May 2014, 06:23 PM

Ryo, la función de que la consola detecte el idioma de la bios y configure el arranque de los juegos de acuerdo a ese idioma sí que se llegó a utilizar. Sin ir más lejos, hay juegos como las versiones PAL de Panzer Dragoon y Exhumed que se inician directamente en castellano si la consola detecta el castellano como idioma de la bios.

Incluso hay juegos que sólo salieron en Japón como The King of Fighters '96 que se inicia directamente en castellano (o pseudo-castellano según se interprete las traducciones chusqueras que hacía SNK ) si la bios está en castellano, o Final Fight Revenge que se inicia en inglés si detecta en la bios cualquier idioma que no sea japonés.

Hay muchos más, sobre todo los típicos juegos multi-idioma que son de third parties. Se podría hacer el típico listado para tenerlos referenciados.
 



 
avatar
blank.gif Wesker Sexo: Masculino
Staff Unreleased
Administrador
Administrador
Seguero y coleccionista!
 
Registrado: Septiembre 2006
Ubicación: Sun Coast Zone
Mensajes: 3344
  • Volver arriba Página inferior
 

Mensaje Re: Trasteando con el Lua Player de Saturn (Tutorial)

#30  Ryo Suzuki 26 May 2014, 12:20 AM

Veis lo que me pasa a veces? Que soy un bocazas

Es cierto que haciendo memoria sí que conocía al menos el Panzer Dragoon que lo tengo japonés y europeo en mi colección y que efectivamente tenía que haber recordado que es un juego que hace uso de esta funcionalidad (el PAL, of course).

Además, como estuvimos hablando luego, creo que la Saturn es la consola pionera en este sentido de tener una bios configurable con opciones como idioma, fecha, hora, etc; y que guarda esa información por medio de una pila. Si estoy confundido y hubo otra antes que alguien me desmienta esta info...

En cuanto a lo de funciones no usadas, en mi defensa diré -y tras la metedura de pata- que slSetLanguage sí que estoy casi seguro que no lo usa ningún juego. De hecho no tiene mucho sentido que un juego te cambie esa configuración, o al menos yo personalmente no le veo razón de ser... pero en fin, que el comando ahí está....


Bueno, sigo avanzando un poco más en mis devaneos con el Lua Player. Voy a abordar una lección que acabo de improvisar hace unos minutos. Hoy toca el turno de:


Detectando el pad y periféricos conectados

Para esto me he documentado mirando este hilo del amigo y maestro saturnero FacundoARG. Ahí explicaba como controlar un cuadrado blanco con el mando bajo Saturn Orbit y me ha servido de mucho ya que adaptando un poco en ocasiones la sintaxis a este Lua Player he conseguido que me funcione, al menos hasta cierto punto.

Cito al bueno de Facundo que explicó muy bien como administra la Saturn este tema:

Citar:
Primero vamos a entender como se manejan los pads.
El SMPC(System Manager & Pheriperal Control) Sistema de administración y Control de Periféricos, tiene como una de sus tantas tareas controlar nuesotros joysticks.

Tenemos dos constantes Per_Connect1 y Per_Connect2 que contienen el estado de los periféricos/puertos  1 y 2 respectivamente.
El resultado/valor que se puede obtener en todo momento (lo asigna el SMPC) son:

0 Si hay algo conectado al puerto.
1 Si no esta conectado algún pad al puerto.


Con esta valiosa información y ajustando un poco los condicionales a Lua, lo pongo en práctica:

slInitSystem(TV_720x576,NULL,1)


slPrint("- SAMPLE DE ESTADO DE PUERTOS 1 Y 2 -", 2, 2)

if Per_Connect1()==0 then slPrint("-Puerto 1: Nada conectado", 2, 6) else slPrint("-Puerto 1: Algo conectado", 2, 6)
end

if Per_Connect2()==1 then slPrint("-Puerto 2: Algo conectado", 2, 8)
else slPrint("-Puerto 2: Nada conectado", 2, 8)
end


slPrint("www.segasaturno.com", 10, 25)

while true do slSynch() end

Creamos la iso correspondiente como siempre, ejectuamos en el el emulador y obtenemos este resultado:

 01_mandos

Parece haber funcionado bien. Vamos a cercionárnos de que sea correcto y esté detectando bien. Configuramos en emulador y en el puerto dos le decimos, por enchufar algo virtual, que tenemos metido un ratón de Saturn:

 02_mandos

Volvemos a ejecutar la iso en el Yabause para comprobar que todo haya ido bien:

 03_mandos

Como dirían los ingleses, so far so good. Volvamos a las enseñanzas saturneras del master FacundoARG:

Citar:
Por otro lado tenemos Smpc_Peripheral[] que es un array, donde el indice del arreglo/vector es el número de pad. Que van desde el 0 al 11.
Recuerden que podemos conectar 12 joysticks con el multitap; 6 por cada puerto.

Tenemos 3 tipos de datos en la estructura del array Smpc_Peripheral[].
data (es el metodo conocido como Pressed que significa persionado constantemente ó mantener presionado)
    
push (es el metodo conocido como press, que significa que ejecuta la accion apenas presionamos el boton)
    
pull (es el metodo conocido como release, que significa que se ejecuta la accion una vez soltado el boton que hayamos presionado)

    
Los botones:

PER_DGT_ST
PER_DGT_KU
PER_DGT_KR
PER_DGT_KD
PER_DGT_KL

PER_DGT_TA
PER_DGT_TB
PER_DGT_TC

PER_DGT_TX
PER_DGT_TY
PER_DGT_TZ

PER_DGT_TL
PER_DGT_TR
    

Supongo que PER_DGT significa Peripheral_Didital, TA = Trigger A, KU = Keypad Up , ST = Start    .


Genial, vamos a añadir esto a nuestro pequeño programa que hemos creado antes para detectar si los puertos uno y dos tenían algo conectado.

Imaginemos que queremos detectar y que nos informe en pantalla si estamos pulsando el boton A del mando 1.

A Lua, yo lo adaptaría así:

Citar:
if bit.band(data, PER_DGT_TA) == 0 then slPrint("Estas pulsando A en el mando 1", 5, 12)
end


Cambia ligeramente de como lo hacía Facundo en el Saturn Orbit. Lo he mirado de los ejemplos de Lua que usan la gestión y detección del mando. Por lo que veo necesitamos hacer también esto antes de dar ese condicional para detectar que botón estamos pulsando:

Citar:
id,ext,data = Smpc_Peripheral(0)


Por lo que entiendo son como tres variables asociadas al system managament y al periferical control. Con esto y la linea que he puesto arriba podemos detectar en este caso si estamos pulsando A (fijaos que hemos puesto PER_DGT_TA) y poner un mensaje en pantalla en cuanto lo hagas.


Integrando con todo lo aprendido

Voy a poneros un código que he hecho usando la detección del mando y pulsación de un botón concreto y a la vez tratándolo de unificar con todo lo que he ido aprendiendo anteriormente (variables, condicionales, bucles whiles, etc). Por lo que estoy intuyendo en el tema este de la programación es importante ir adquiriendo conocimientos y tener la capacidad de integrarlos todos y hacer buen uso de ellos.

Ahí va mi nuevo programa:

slInitSystem(TV_320x240,NULL,1)

local bucle = 3

local variablepad = 0.25

local variableautoincremento = 0

slPrint("- VARIABLES LOCAS Y TAL -", 7, 1)


while bucle < 30000000000 do

slPrint("-Esta variable va subiendo", 1, 6)
slPrint(" al pulsar A", 1, 7)

slPrint(variablepad, 20, 7)

slPrint("-Sin embargo esta se incrementa ", 1, 9)
slPrint(" por la puta cara", 1, 10)

slPrint(variableautoincremento, 20, 10)

variableautoincremento = variableautoincremento + 0.02

id,ext,data = Smpc_Peripheral(0)
if bit.band(data, PER_DGT_TA) == 0 then variablepad = variablepad + 0.25
end
if bit.band(data, PER_DGT_TA) == 0 then slPrint("----Pulsando----", 10, 16) else slPrint("--No Pulsando---", 10, 16)  
end

slPrint("Ryo Suzuki de www.segasaturno.com", 3, 25)
end

while true do slSynch() end


Si lo miráis detalladamente no es muy complicado, ¿no? Luce tal que así:

 variables_locas

Como veis y podéis probar si compiláis este código y creáis la correspondiente iso, este pequeño programa muestra dos variables en pantalla. Una de ellas se incrementa cuando pulsamos el bóton A, mientras que la otra va subiendo de valor sin que hagamos nada.

También podéis comprobar que tenemos un "chivato" que nos indica si estamos o no pulsado el bóton, para decorar un poco.

Creo que es bastante entendible, pero aun así lo comento que puede venir bien por si alguno se pierde:

slInitSystem(TV_320x240,NULL,1)

local bucle = 3 -- creo esta variable que la voy a usar para crear el bucle principal del while del programa

local variablepad = 0.25  -- esta es la variable que se va a incrementar con la pulsación del pad

local variableautoincremento = 0  -- ahora defino la variable que como su nombre indica se auntoincrementa automaticamente

slPrint("- VARIABLES LOCAS Y TAL -", 7, 1)


while bucle < 30000000000 do  -- bucle del while principal, hasta que no llega a un numero muy alto haz esto...

slPrint("-Esta variable va subiendo", 1, 6)
slPrint(" al pulsar A", 1, 7)

slPrint(variablepad, 20, 7)   -- muestro en pantalla la variable del pad

slPrint("-Sin embargo esta se incrementa ", 1, 9)
slPrint(" por la puta cara", 1, 10)

slPrint(variableautoincremento, 20, 10)   -- muestro en pantalla la variable que va subiendo de valor sola

variableautoincremento = variableautoincremento + 0.02  -- comoe esta dentro del bucle a cada pasada la variable autoincremento va a subir 0.02

id,ext,data = Smpc_Peripheral(0)  -- necesito hacer esto que no se bien lo que es para detectar el pad, es valido solo para el mando uno porque hemos puesto 0, como hemos explicado antes

if bit.band(data, PER_DGT_TA) == 0 then variablepad = variablepad + 0.25  -- Si pulsamos A, la variable pad de incrementea 0.25
end -- esto es el end de este if, ¿queda claro?
 
if bit.band(data, PER_DGT_TA) == 0 then slPrint("----Pulsando----", 10, 16) else slPrint("--No Pulsando---", 10, 16) -- aqui lo que hago es usando el mismo condicional además de sumar 0.25 como ha hecho antes que imprima si estas pulsando o no (gracias al uso del else que ya hemos aprendido). Tengo que tener cuidado con la colocación del texto para que uno "pise" a otro y quede bien
end -- end de este if, NOTA: esto se podria hacer con un If combinado que a la vez que sume imprima, seria algo asi if con then "haz esto" y "haz esto otro tambien", como no se hacerlo aun o no encuentro la sintaxis correcta tengo que usar dos ifs :(

slPrint("Ryo Suzuki de www.segasaturno.com", 3, 25) -- A lo Cristiano Ronaldo
end -- Para los despistados este es el end de nuestro bucle principal while

while true do slSynch() end


No está nada mal la fusión de conocimientos que he aplicado. Sin embargo tiene una pequeña pega. Si lo probáis vereis que pulsando A, aunque lo hagamos muy ligeramente la variable se incrementa de golpe bastante -como 1 y pico cada vez-, o sea no podemos ver el incremento de 0.25 a cada pequeña pulsación. Esto no sé como afinarlo bien, aunque supongo que se debe poder hacer... Si teneis idea o podéis ayudarme, ya sabéis...

En fin, que eso es todo por hoy. Añado en esta ocasión la iso de este último sample por si os apetece probarlo y no os animáis a compilarlo por vosotros mismos.

Pronto +
 




____________
sega_firma

Choose a job you love, and you will never have to work a day in your life. (Confucius)
 
avatar
japan.png Ryo Suzuki Sexo: Masculino
Alfonso Martínez González
Webmaster
Webmaster
Shenmue Freak
 
Registrado: Agosto 2005
Ubicación: 難波
Mensajes: 9820
  • Volver arriba Página inferior
 


Ocultar¿Este tema fue útil?
Compartir este tema
Correo a un amigo Facebook Twitter Windows Live Favorites MySpace del.icio.us Digg SlashDot google.com LinkedIn StumbleUpon Blogmarks Diigo reddit.com Blinklist co.mments.com
technorati.com DIGG ITA linkagogo.com meneame.net netscape.com newsvine.com yahoo.com Fai Informazione Ok Notizie Segnalo Bookmark IT fark.com feedmelinks.com spurl.net

Página 3 de 4
Ir a la página Anterior  1, 2, 3, 4  Siguiente