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

Mensaje Trasteando con el Lua Player de Saturn (Tutorial)

#1  Ryo Suzuki 10 May 2014, 12:50 AM

He estado echándole un ojo a este entorno de desarrollo de la Saturn que sacó Rockin'-B hace más de cinco años y que desafortunadamente creo que no ha tenido mucha repercusión.

sega saturn lua dev homebrew

El desarrollo homebrew por parte de aficionados para la Sega Saturn prácticamente no existe, a diferencia de otras consolas clásicas que sí que tienen más proyectos y una comunidad sensiblemente activa en este campo. A parte del SDK oficial de SEGA, solo existía el Saturn Orbit, que es una especie de adaptación de Rockin'-B (omnipresente siempre en estos temas para la Saturn) y que ha comentado en varios tutoriales nuestro amigo y compañero del foro, FacundoARG. NOTA Edición: Ahora que recuerdo también existe el Game Basic que era comercial, todavía no lo he investigado. NOTA Edición 2: Tambien está disponible el libyaul que es totalmente open source.

Saturn Orbit si no me equivoco, y disculpadme si meto la pata porque en estos temas no sé prácticamente nada, es una especie de adaptación para trabajar con lenguaje C y las librerías de SEGA con compilador gcc optimizado para los procesadores de la Saturn. Un IDE (Integrated development enviroment) que tiene especificadas las librerías para compilar para la 32 bits de SEGA.

Sin embargo, este Saturn Lua Player tiene la capacidad de correr aplicaciones programadas en el lenguaje de programación Lua. Esas aplicaciones pueden tener acceso a cientos de funciones API y librerías que pueden ser necesarias como SGL (SEGA Graphics Library), PCM, GFS y STM.

Digamos que Lua Player para la Saturn es un intérprete del lenguaje de programación Lua, que hace buen uso de las librerías oficiales de SEGA para la Saturn. Es muy sencillo a la hora de ponerte a probar, ya que no necesita ningún tipo de configuración o setup, y solo te hace falta un editor de textos como el notepad y un emulador para empezar a programar en la Saturn.


¿Qué es Lua? El lenguaje del que parte este player portado a Saturn

Lua es un lenguaje de programación, basado en C y en Perl, imperativo, estructurado y bastante ligero que fue diseñado como un lenguaje interpretado con una semántica extendible. El nombre significa "luna" en portugués.

Más info en Wikipedia (que es de donde lo he copiado): http://es.wikipedia.org/wiki/Lua

Teóricamente Lua es más accesible y sencillo que otros lenguajes de programación, así que debería resultar más fácil para los principiantes hacer sus pinitos con el Lua Player que con el Saturn Orbit...

O sea que, vamos al grano. Voy a poneros un pequeño tutorial con un ejemplo por si queréis empezar a trastear con el Lua Player para Saturn.

NOTA: No tengo ni idea de programación. Solo hice cuatro chorradas en los tiempos de los 8 bits con el BASIC y poca cosa más. Quiero decir que teneis que coger todo esto con pinzas


Descargar Lua Player de Saturn

Como comentaba antes este entorno no tiene ningún tipo de configuración o problemas para instalarlo y demás. Es cuestión de bajarlo y empezar a picar código o liarse a probar con los ejemplos que vienen incluidos.

Por lo tanto, lo primero que tenemos que hacer es descargarlo y rápidamente estaremos ya funcionando. Podéis bajarlo en esa maravillosa página llamada SEGASaturno ( ) siguiendo este enlace, o en la web donde originalmente el gran Rockin'-B lo hizo público.

Bien, ya teneis el archivo comprido SaturnLuaPlayer_080701_R1. Lo descomprimis y vereis que os crea una carpeta llamada SaturnLuaPlayer. Ya podemos comenzar.


Primeros pasos

Si os fijais, teneis varias carpetas con diferentes contenidos (documentación, tools, librerías y demás historias), lo que nos interesa ahora para comenzar es la carpeta samples, donde están evidentemente los ejemplos.

Veremos diferentes carpetas con ejemplos que son proyectos que podemos probar y ver el código para copiar/trastear/modificar cosas, e incluso tratar de averiguar cómo funcionan. Tenemos la carpeta CHROME, DESIGN3, TORUS3, etc...

Bien, podéis probarlos todos en emulador si os apetece para ver como lucen estos ejemplos hechos con el Lua Player y fliparnos un poco de paso con lo que podríamos llegar a hacer. Para ello ejecutamos makeiso_all.bat que vemos en la carpeta samples y se compilan todas las isos de cada carpeta de ejemplos para que las podemos testear.


Usando emulador y unidad virtual para testear lo que programemos

Podríamos quemar cada iso en un CDROM y probarlo directamente en la Sega Saturn, pero está claro que lo mejor de momento es que usemos un emulador para catar los ejemplos y las cosas que podamos programar nosotros.

Una opción sería utilizar el Yabause, que directamente puede cargar isos y que podéis descargar en su página oficial: http://yabause.org

Pero yo prefiero usar el SSF porque es más fiel a la máquina original. No permite usar isos directamente, así que tendremos que montar las isos en una unidad virtual. Podeis bajar el emulador SSF aqui: http://www7a.biglobe.ne.jp/~phantasy/ssf/index.html (nota la pagina oficial se ha mudado y no recuerdo ahora donde, cuando la encuentre de nuevo la pongo)
Bajadlo desde nuestra web mismo.

Para el SSF, como decía, necesitais emular la iso con un CDROM virtual, algo que igual ya estáis acostumbrados a hacer para otros menesteres. Bajad el DAEMON Tools Lite 4, por ejemplo, si no lo tenéis, la versión Free de aquí:
http://www.daemon-tools.cc/products/dtLite#features
Instaladlo y ya contaréis con una o varias unidades virtuales para probar las isos que vayamos haciendo.

Vale, tenemos todo lo necesario. Estamos listos. Vamos a probar los ejemplos que vienen con el Lua Player y que hemos compilado con el makeiso_all.bat que hemos ejecutado anteriormente.

Abrimos el Daemon Tools y veremos la unidad virtual que nos ha creado tras la instalación. En mi caso es la letra M:, si le dais al boton derecho os aperece la opción "Montar" (también se puede arrastrar directamente la iso sobre la unidad). La seleccionamos y buscamos la iso de la carpeta samples/ CHROME para empezar. Vereis que en esa carpeta se encuentra el archivo sample.iso, lo montamos y ejecutamos el emulador.

En el SSF, a parte de necesitar la bios para un mejor funcionamiento (en este caso no lo recomiendo porque para esto va bien y así nos saltamos la animación de Saturn ide inicio cada vez), lo debeis configurar con la letra del CDROM para que sea la misma que la del Daemon Tools y así trague la unidad virtual y las isos que vayamos montando. Yo como os comentaba en Option del SSF en CD drive he seleccionado la letra M, haced vosotros lo propio con vuestra letra correspondiente. Bien, reiniciamos para que quede guardada la letra del CD pertinente (el SSF tras cada cambio en configuración hay que cerrar y abrir el emulador para que lo guarde) y lo ejecutamos de nuevo. Obtenemos esto:

 emulador_saturn

NOTA Edición: He comprobado que si el SSF lo corres sin bios de la Saturn pueden mostrar mal algunos ejemplos y por ende algunas cosas que programemos (por ejemplo los colores de las letras no se ven bien en ocasiones). Así que es bueno que useis el emulador con BIOS.

Un objeto tridimensional rotando y mostrando varios valores de lo que va procesando, pintando en pantalla y demás. Muy bonito, luego veremos que el código se las trae

Podéis ir probando asi todos los ejemplos de las diferentes carpetas, tendréis el sample.iso correspondiente en cada carpeta DESIGN3, S_4_5, SBKLIB, etc. Probadlos todos si queréis, hay cosas bastante impresionantes para ser homebrew de la Saturn.


Al lío, primer ejemplo

Bueno, ya nos hemos hecho pajas mentales de lo que se puede hacer con este Lua Player. Ahora tendrás ganas de empezar a programar por ejemplo un Virtua Fighter 3 en hi-res y con los mismos gráficos que el Shenmue de Saturn... Bromas a parte, podemos ver el código de todos esos ejemplos para hacernos una idea de cómo están hechos.

El source code está en la carpeta de cada sample. Por ejemplo en el ejemplo DESIGN3, esta la carpeta cd y el código fuente está en el archivo 0_orig.lua. Vale para todos los ejemplos, siempre será así. Si lo abris con el bloc de notas os saldrá el contenido que empieza de esta guisa:

--/*----------------------------------------------------------------------*/
--/*    Design Check 3                            */
--/*----------------------------------------------------------------------*/


local max_texture = 2

-- Note: GFS_Init() has already been called in the Saturn Lua Player
local len = GFS_Load_name("DATA.BIN", 0, CPU_WRAM_LO, CPU_WRAM_LO_LEN)-- filename case sensitive !!!!
if len == nil or len <= 0 then
    slPrint("Error loading data file!", 9, 3)
end
local object_sample  = CPU_WRAM_LO + 0x000
local tex_sample     = CPU_WRAM_LO + 0x220
local pic_sample     = CPU_WRAM_LO + 0x210
local cam = {}
cam.pos   = {}
cam.ang   = {}
cam.sca   = {}
cam.base  = getnewuserdata(4*3*4)--

local old_pos = {}
local old_scl = {}


Y sigue bastante... Si no entendeis nada no os preocupéis, ya somos dos.

Vamos a hacer nuestro primer ejemplo de prueba, bien sencillo para que nos familiaricemos un poco con el rollo.

Nos podemos crear una carpeta nueva llamada por ejemplo Samples Mios y ahí copiamos un sample original para modificarlo y hacer nuestros testeos. Copiamos, por coger uno, la carpeta del sample CHROME: osea toda la carpeta CHROME la copiamos al directorio que hemos creado llamado Samples Mios. Lo mejor es que una vez copiada le cambiemos el nombre y le llamemos por ejemplo TEXTO Y VARIABLE, que es lo que vamos a hacer en esta primera prueba de toma de contacto.

Nota de edición: Asegurate que en el directorio que crees para meter tus pruebas, en este caso Samples Mios, en la raiz copies el IP.bin que viene en la carpeta original Samples, de lo contrario no podrás generar las isos del código que crees ya que el mkisofs.exe que lo hace necesita la Ip.bin (te aparecerían isos que pesarían 0kbs)

Perfecto, vamos a editar el código en nuestra carpeta TEXTO Y VARIABLE así que buscamos el archivo que tiene el código fuente para modificarlo. No es otro que 0_orig.lua, que esta dentro del directorio cd como hemos dicho con anterioridad.

Abrimos 0_orig.lua con el bloc de notas para modificarlo. Borramos todo lo que tiene y ponemos este código sencillo que me he inventado yo:

slInitSystem(TV_720x576,NULL,1)

local sega = 20

      
slPrint("www.segasaturno.com", 11, 3)

slPrint("Esto es una primera prueba", 5, 6)

slPrint("El valor de la variable es", 5, 7)

slPrint(sega, 32, 7)

slPrint("Saturn Lua Player", 11, 9)


while true do slSynch() end


¡Listo! Este ya se entiende algo mejor, ¿verdad? Guardamos este 0_orig.lua y ya tenemos preparado para "compilar" nuestra primera iso creada por nosotros y probarla en el emulador.

Si vais un directorio hacia atrás en nuestra carpeta TEXTO Y VARIABLE veréis que tenemos un ejecutable llamado makeiso_for_debugging.bat, que como su nombre indica se encarga de crear la iso con el código que acabamos de copiar. Lo ejecutamos e inmediatamente obtenemos nuestra iso con el archivo que se generará y que veremos que se llama sample.iso.

El mismo proceso nos va a tocar hacer. La montamos en la unidad virtual del Daemon Tools, ejecutamos el SSF y obtenemos nuestro primer programa ejecutándose:

 sega_saturn_dev_homebrew

No es tan impresionante como los ejemplos que hemos visto antes y que venían con el Lua Player, pero lo hemos hecho nosotros y el código es corto y medio entendible a simple vista para newbies.

Repasemos el código de nuevo, esta vez con anotaciones digamos "para tontos", para que se comprenda mejor qué estamos haciendo con cada comando:

slInitSystem(TV_720x576,NULL,1) -- pone el modo de video

local sega = 20 -- define la variable local sega y le asigna un valor de 20

      
slPrint("www.segasaturno.com", 11, 3) -- escribe en pantalla este mensaje en la linea 3 y tras 11 espacios

slPrint("Esto es una primera prueba", 5, 6) -- escribe en pantalla este mensaje en la linea 6 y tras 5 espacios

slPrint("El valor de la variable es", 5, 7) -- escribe en pantalla este mensaje en la línea 7 y tras 5 espacios

slPrint(sega, 32, 7) -- escribe en pantalla el valor de la variable sega que hemos definido al comienzo en la línea 7 tras 32 espacios para que quede justo después de la frase de antes

slPrint("Saturn Lua Player", 11, 9) -- escribe en pantalla este mensaje en la línea 9 y tras 11 espacios para finalizar

while true do slSynch() end -- lo mete en bucle creo algo así como mientras que sea cierto haz  esto hasta el infinito


Ahora sí que queda bastante más claro, ¿verdad?

Con la tontería hemos aprendido algo más sin darnos casi cuenta, si escribimos -- detrás de cada orden podemos poner un comentario para identificar qué hace ese comando y escribir nuestra anotaciones personalizadas.

Probadlo si quereis, cambiar el código por el que os he puesto con comentarios (o cread comentarios propios para testearlo), recread la iso de nuevo y montadla en el Daemon y vereis que sigue funcionando igual en el emulador. Eso quiere decir que todo lo que pongamos detrás de -- lo interpreta como un comentario y no da error ni se lia con ese texto. Esto creo que se denomina REMARK o algo asi, en BASIC me parece que se hacía con REM. Parece una gilipollez pero viene muy bien anotarse cosas, sobre todo cuando nuestros códigos comiencen a complicarse y convertirse en galimatías que hasta a nosotros nos costará entender.


LUA y SEGA

Mirando de nuevo nuestro código tan sencillo llego a otra conclusión. Si os fijáis parece que hay órdenes que son del lenguaje Lua y otras que son de la librerías de SEGA.

Por ejemplo:

Citar:
local sega = 20

Esto lo he sacado de algun sample de documentación de Lua de cómo definir el valor de una variable local y ha funcionado. O sea yo interpreto que esto es Lua.

Sin embargo, otra orden como esta:

Citar:
slPrint("El valor de la variable es", 5, 7)

Esto es Sega Library. No os saldrá nada así en la documentación de Lua, los print en Lua son directamente print y lo he probado y no parece funcionar. Así que tenemos que usar este print particular para que escriba en pantalla, este print es de las librerías gráfica de Sega con casi toda seguridad, si os fijais empieza por "sl" (sega library) lo que le delata.

Así que llego a la conclusión de que habrá que trabajar unos temas como pueden ser variables, procesos, rutinas y demás programándolos con Lua, pero para otras cosas particulares tendremos que "hablarle" a la Saturn en su lenguaje con las librerías de Sega para que nos haga caso.

Creo entender pues que con el Saturn Orbit sucede algo similar pero con el lenguaje C. Aquí es con Lua, que en principio es más sencillo.


¿Y ahora qué hago?

Pues eso mismo me pregunto yo. Sería cuestión de investigar y hacer cosas más complicadas. Estas historias suelen ser al principio todo basado casi en la prueba y el error (os cansaréis de cambiar código, regenerar la iso, montarla en el daemon y rularla de nuevo en el emulador).

Una buena idea quizás para inspirarse un poco sería echarle un ojo a la documentación sobre Lua que incluye este Player, está en la carpeta docs\Lua

Tenemos el manual de programación y luego el de referencia en dos pdfs bien majos. Ahí en docs también tenemos las carpetas SBL y SGL con pdfs oficiales (SEGA Confidential, lol!) y varios textos que nos pueden ayudar y mucho.

Añado yo además en clave SEGA este manual que puede ser muy interesante y no está incluido en la documentación del Lua Player. Se trata del Manual de referencia del desarrollador, donde estan creo que todas las funciones (los comandos sl que hablábamos antes) listados y explicados cómo funcionan, así como estructuras, apéndices y demás. Me parece que puede venir muy bien, la verdad.

Junto a esto y los ejemplos que vienen podemos tratar de descifrar cómo diablos hacen las cosas. Objetos en 3D, uso de sprites, como se cargan texturas, reproducir audio... se me ocurren muchas cuestiones... Supongo que hay que ir paso a paso y armarse de paciencia.

No creo que nadie del foro se anime a hacer nada, sinceramente. Ni siquiera tengo demasiada fe en que nadie haya leido todo este tutorial al completo , solo lo pongo para documentar un poco el Lua Player de Rockin'-B que por lo que veo estaba muy huerfano de este tipo de cosas en todo internet y me da un poco de pena, si soy sincero.

Con este entorno Rockin'-B y otro colaborador suyo estaban programando la videoaventura Police Officer Smith que quizás recordaréis. En teoría se podrían llegar a hacer homebrew bastante ambiciosos...

En fin, espero que os haya gustado el tutorial y alguno se anime a hacer sus pinitos. También espero que amigos como Indiket, FacundoARG, vbt y demás compañeros que pasan por aquí y saben de programación igual les pique el gusanillo, o puedan echarnos un cable si surgiera alguna duda probando otras cosas.

Un saludo y pongo deberes para mi o para quien se atreva a ver si se pueden llegar a hacer.


DEBERES:
Pintar texto con diferentes colores en pantalla
Pintar un sprite en pantalla, no solo letras!


BONUS:
Existe Lua Player para PSP. Creo que igual la idea surgió de aquí para llevarlo a Saturn. ¿Se podrían portar homebrew sencillos como estos a Saturn gracias al estar los dos en Lua?:
http://bugz.luaplayer.org/gallery/index.html
(creo que va a ser que no )


Enlaces de interés:

Web oficial de Lua: http://www.lua.org/
Manual en castellano (es 5.1 pero creo que servirá): http://www.lua.org/manual/5.1/es/manual.html
Lua Users: http://lua-users.org/

Documentación dev Saturn: http://koti.kapsi.fi/~antime/sega/docs.html
Más de dev en SegaXtreme (foro donde normalmente hablan de Orbit, pero nos puede servir para Lua Player por el tema de las librerías de SEGA): http://segaxtreme.net/forum/forumdisplay.php?fid=34
 




____________
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: 9663
  • Volver arriba Página inferior
 

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

#2  Rick Fdez 10 May 2014, 09:57 AM

Interesante, no soy programador, ni siquiera informatico, pero me atraen estas cosas una barbaridad, prometo intentar algo en cuanto tenga tiempo aunque puede que no pase de poner texto y porque lo has explicado estupendamente.
 
 




____________
Jugar es tan natural como vivir.
Jugando nos arriesgamos y tomamos nuestras propias decisiones.
Jugando conocemos a nuestros amigos y entendemos a nuestros
adversarios. Jugar es parte de nuestra vida.

Igual que Dreamcast.
 
avatar
spain.png Rick Fdez Sexo: Masculino
Segata Sanshirō
Segata Sanshirō
 
Registrado: May 2010
Ubicación: Cordoba
Mensajes: 341
  • Volver arriba Página inferior
 

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

#3  Sh0X 10 May 2014, 11:04 AM

Muy buenas!. La verdad que también me parece un mini-tutorial muy interesante y coincido con Ryo, me da muchisima lástima que la scene de Saturn sea prácticamente inexistente. Creo que sería interesante discutir el por qué de esto, puesto que no creo que sus herramientas disten mucho de las ofrecias por la scene de Dreamcast, aunque quizás si habría que pasarlas a limpio ( llevan mucho tiempo desactualizadas   ).

En cualquier caso, espero que esta tendencia cambie poco a poco. Y personalmente en cuanto tenga algo de tiempo espero poder contribuir a ello! =).

Un saludo!.
 



 
avatar
 Sh0X Sexo: Masculino
Recien llegado
Recien llegado
 
Registrado: May 2014
Mensajes: 1
  • Volver arriba Página inferior
 

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

#4  zeros 10 May 2014, 07:15 PM

Buenísima clase tio!! Me ha gustado lo de proponer un ejercicio XD Pordía montarse un curso de programación en saturn no? Saber que funciones van de SEGA library, cuales de LUA. (yo creo que el estar ahi con el prueba y erro es lo que más echa atras.

Con que funciones se presentan graficos 3d, con que cambias resolución, con que usas un procesador u otro (si se puede). Lo que pasa que eso requiere un esfuerzo titánico por parte del profesor, de sintetizar tanta info, descartar variables, preparar ejercicios, agrupar conceptos... flipas. Pero esta primera clase ha molao mil, lo de los comentarios y tal parece fácil, lo has hecho fácil.

Ese gráfico que has mostrado 3D, ese cubo rectángulo, lo que sea... no lo generas por código no? o sea le das un archivo al lua que carga aparte, un archivo hecho con un editor 3D supongo, no? si es así que extensión tiene?

No creo que la scene de Saturn esté muerta pq si, alguna razón de peso habrá. Hay juegos homebrew en PSOne? yo no he oido muchos, he oido más de Dreamcast (tb puede ser que cuando oigo Playstation dejo de escuchar XD), igual es un problema generacional de las 32 bits. Que necesiten mucha optimización, para cualquier cosa mínima que se haga en 3D o 2D. No lo se, hablo por hablar, estoy divagando.

Por ejemplo, usar este lenguaje de programación, asegura poder sacar rendimiento a la consola? o hay que programar a más bajo nivel para hacer algo parecido al Sonic Jam por ejemplo?
 




____________
Desde 1999
 
avatar
spain.png zeros Sexo: Masculino
Moderador
Moderador
Donante Unreleased €
 
Registrado: Diciembre 2005
Ubicación: Albacete
Mensajes: 1358
  • Volver arriba Página inferior
 

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

#5  Noon 10 May 2014, 08:32 PM

O_O a mi me gustaria programar un juego de saturn... es mi consola favorita no se nada de programacion pero podriamos juntarnos unos pocos he ir sacando ideas y ir repartiendo tareas cuando sepamos como programar... claro... un juego asi de rol a lo zelda en 2d por ejemplo pa empezar... joer molaria un monton eh?
 



 
avatar
 Noon 
SEGA Junior
SEGA Junior
 
Registrado: Noviembre 2010
Mensajes: 32
  • Volver arriba Página inferior
 

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

#6  Indiket 10 May 2014, 09:44 PM

Este post me estaba llamando a gritos!! jajajaaja. Buen aporte Ryo!!

Mirad, yo llevo ya años programando cosas para Dreamcast, y lo sigo haciendo... es un tema que cada día me apasiona más: siempre aprendes y descubres cosas fascinantes!!

Entonces, por qué no hay tanta scene en Saturn? Yo coincido con vosotros y considero estos puntos:

- La arquitectura de la consola: programar para Dreamcast es muy sencillo, al disponer de 1 procesador RISC (SH4) tipo Little Endian. Es fácil de acceder a memoria, a las funciones 3D del PVR, y al chip gráfico AICA. No conozco al dedo la de Saturn, pero al tener 2 procesadores SH2 creo que es lo que realmente complica (y mucho) la programación.

Dreamcast tiene 16MB de RAM general, que no es ninguna maravilla, pero en Saturn hay menos... bastante menos. Eso reduce mucho las posibilidades de la consola!

- Las herramientas: siento contradecir el comentario de Sh0X, pero en Dreamcast hay herramientas muy potentes para desarrollar: desde S.O enteros como KOS, a librerías gráficas como SDL o Allegro. Gracias a ello, la portabilidad de muchos códigos es rápida y factible.

Ok, en Saturn también hay cosas muy interesantes!! El Lua Player mismo, a mi me fascina porqué... no está en Dreamcast y sí en Saturn!! jajaja.

- La accesibilidad: Nos guste o no, en Dreamcast es muy fácil cargar binarios sin firmar (tan fácil que ni siquiera se necesita chip y custom firmware ni nada!!). Y cada vez hay más opciones: vía SD, vía BBA, pronto vía HDD....
En Saturn, hay que tener la consola chipeada (creo). Y luego, ¿qué opciones hay de cargar binarios? La única que conozco es quemando CD's... hay alguna otra???


En PSOne es cierto que no hay mucho homebrew, pero también hubo muchísimo homebrew en la época activa de la consola (recordad en las revistas): SONY ofrecía kits para programar (las consolas Net Yazore), y su arquitectura era más fácil (MIPS y otros chips más conocidos).


Total, luego de esta "chapa", tenéis más ganas de aprender a programar? Es un camino duro y lleno de dolor, yo aviso!! jajajaja.

El mayor problema de la scene de Saturn quizá sea la dificultad para ejecutar código, y luego que necesita más herramientas y, sobretodo, librerías, para que sea atractiva!!

Seguimos!!

PD: Ryo, hay pendiente ver una demo rulando de Sonic Jam, cierto? jajaja
 



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

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

#7  Noon 10 May 2014, 11:00 PM

Oye si segun tu en dreamcast es tan facil... dime como programar por alli, o algun tutorial o algo me da= que sea sega saturn o dreamcast total... tengo las 2 xDDDDD.
 



 
avatar
 Noon 
SEGA Junior
SEGA Junior
 
Registrado: Noviembre 2010
Mensajes: 32
  • Volver arriba Página inferior
 

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

#8  apietoteae 11 May 2014, 02:29 PM

simple y llanamente maravilloso      

estoy DESEANDO meterle mano al lenguaje C y aprender a programar algun que otro juego (aunque me encantaria empezar por megadrive jejeje).
 



 
avatar
 apietoteae Sexo: Masculino
SEGA Fan
SEGA Fan
 
Registrado: Enero 2013
Mensajes: 145
  • Volver arriba Página inferior
 

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

#9  Jose 12 May 2014, 01:00 AM

A ver si siguen aportando material diferentes programadores.
Gracias de ante mano.
 



 
avatar
 Jose 
Segata Sanshirō
Segata Sanshirō
 
Registrado: Enero 2007
Mensajes: 469
  • Volver arriba Página inferior
 

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

#10  Ryo Suzuki 12 May 2014, 04:19 AM

Qué buen rollo! Luego os contesto a todos. Voy a dar la "clase" de hoy y luego os cito y os comento a cada uno.

Bueno, lo primero es decir que no he podido hacer los particulares deberes que me auto impuse. No he sido capaz aún de poner sprites en pantalla porque es bastante más difícil de lo que sospechaba -también hay que señalar que para mi todo es complicado-, creo que los sprites al fin de al cabo hay que tratarlos un poco como polígonos. Es delicado por lo que veo convertir al formato adecuado, cargarlo en la memoria de video y demas rollos... No os aburro pero, de momento, queda pospuesto.

Lo de mostrar texto de diferente color tampoco lo he conseguido. Pensaba que seria una chorrada con el comando  slCurColor, pero no ha resultado tan sencillo como sospeché. Parece ser que hay que definir la paleta primero y en las pruebas que he realizado no he conseguido tampoco tener éxito.
Igual alguno de vosotros consigue hacerlo, sería bienvenido si lo lograis y lo explicaráis por aquí (os pongo un post de SegaXtreme en el que hablan de ello y tienen también problemas para lograrlo, es en Orbit pero nos puede dar ideas para tratar de hacerlo en Lua: http://segaxtreme.net/forum/showthread.php?tid=9166 )

Estas dos cosas ya las investigaré por mi cuenta, o trataré de consultaos por aquí a los compañeros que puedan echar un cable al saber mas del tema. Para no estancarme voy a sacarme alguna otra cosa de la manga:


Azar y condicionales

Vamos a aprender a generar un número al azar con la Saturn. En principio puede parecer que no tiene mucha utilidad, pero, con casi toda seguridad, es posible que le saquemos partido con algo de ingenio, ya vereis.
También nos va a servir para tocar los condicionales. Se ve que las sentencias condicionales en programación junto con los bucles son los pilares de la programación estructurada.

Empecemos con el número al azar. Para hacer que la máquina se invente un número al azar vamos a tirar de un comando de la librería de Sega, en este caso es slRandom()

Una función matemática que está descrita de esta forma en la documentación oficial:

Citar:
slRandom                        
Random number generator

Format: FIXED slRandom()
Parameters: None
Function: This function generates a random FIXED-type value in a range from 0 to 1. Return Value A FIXED-type value ranging from 0.0 to 1.0

Vale, por lo que dice se usa sin parámetros y te genera un numero random que puede oscilar entre el 0.0 y el 1. Ahora lo probaremos, que es gratis

En cuanto a los condicionales, esta vez tiramos de Lua. Le echo un vistazo a la documentación buscando por internet y me pone algo así:

Citar:
An if statement tests its condition and executes its then-part or its else-part accordingly. The else-part is optional.

    if a<0 then a = 0 end
    
    if a<b> MAXLINES then
      showpage()
      line = 0
    end

De acuerdo, tambien puedo mirar en los ejemplos del Lua Player que hacen uso de condicionales, como es normal.


A programar de nuevo

Pero menos cháchara y vayamos al grano otra vez. Me he inventado este código tras quebrarme un rato la cabeza y tener varios fallos de sintaxis, problemas varios, etc.. Ahora ya funciona:

--//------------------------------------------------------------------------
--//                Ejemplo de azar y condicionales
--//------------------------------------------------------------------------


slInitSystem(TV_320x240,NULL,1)    

slPrint("Generamos un numero al azar -", 2, 1)

slRandom()

if slRandom()<0.49999999999999 then slPrint("RESULTADO: Ha salido menos de medio", 2, 3)
else slPrint("RESULTADO: Ha salido mas de medio", 2, 3)
end

slPrint("Para los desconfiaos,", 2, 5)
slPrint("aqui esta la prueba:", 2, 6)
slPrint(slRandom(), 2, 7)

slPrint("-------------------", 2, 10)
slPrint("Ahora generamos otro distinto -", 2, 11)
slRandom()
if slRandom()<0.49999999999999 then slPrint("Ha salido menos de medio", 2, 13)
else slPrint("Ha salido mas de medio", 2, 13)
end

slPrint("A las pruebas me remito:", 2, 14)
slPrint(slRandom(), 2, 15)

slPrint("Ryo Suzuki _ www.segasaturno.com", 2, 18)

while true do slSynch() end


¿Qué tal? ¿Parece sencillo?

Lo repito, pero esto se dará por hecho cada vez que haya algo nuevo de código que hagamos, copiamos uno de los ejemplos que tengamos y le cambiamos el nombre para usarlo con esta nueva prueba. Podemos por ejemplo darle el nombre a la carpeta  IFRANDOM o lo que se os ocurra. Guardamos el correspondiente 0_orig.lua con este codigo que os he puesto, generamos la iso y a correrla rápidamente en el emulador.

Nos aparecerá esto:

 azar

Bien, ha funcionado. Ha generado un par de números al azar y ha puesto una condición en ambos casos para comprobar su valor, si el valor era menos de 0.5 ha puesto en pantalla una cosa que correspondía y si era más ha puesto la otra conveniente.

En definitiva, hemos usado generación de azar y sentencias condicionales para que nuestro programa obre en consecuencia.

-continua...
 



 
avatar
japan.png Ryo Suzuki Sexo: Masculino
Alfonso Martínez González
Webmaster
Webmaster
Shenmue Freak
 
Registrado: Agosto 2005
Ubicación: 難波
Mensajes: 9663
  • 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 1 de 4
Ir a la página 1, 2, 3, 4  Siguiente