Bennu Game Development

Foros en Español => Site => Mensaje iniciado por: SplinterGU en Junio 25, 2009, 12:49:48 am

Título: wiki
Publicado por: SplinterGU en Junio 25, 2009, 12:49:48 am
Estariamos necesitando ayuda para completar la wiki, la verdad que no podemos esperar que Sandman complete todos los temas, y yo estoy dedicado al motor...

Quien se anima a colaborar? yo diria de arrancar con el mod_joys, que ya esta documentado en los fuentes... solo hay que copiar texto y agregar nombre de alguna que otra funcion alias...

aca dejo el link...

http://bennugd.svn.sourceforge.net/viewvc/bennugd/modules/mod_joy/mod_joy.c?revision=36&view=markup

Desde ya, muchisimas gracias.
Título: Re: wiki
Publicado por: Drumpi en Junio 25, 2009, 12:14:35 pm
Despues del mes que me voy fuera, si quieres (y no ha cambiado mucho la cosa desde la 093preview9, porque si no, tendría que reinvestigarlo todo) me pongo con las funciones de ficheros, que son con las que mejor me defiendo ;)
Título: Re: wiki
Publicado por: SplinterGU en Junio 25, 2009, 10:44:01 pm
las funciones de ficheros, hay nuevas, y ya tengo nuevas para subir.

Yo pido de ir documentando lo que ya esta en el codigo, pero bennu, no fenix...
Título: Re: wiki
Publicado por: Drumpi en Junio 27, 2009, 08:18:59 pm
[ironic mode] Pensaba que Bennu era la sucesión directa de Fenix y no había que cambiar casi código para que funcione de una a otra [/ironic mode] ;D

De todas formas, haré algunas pruebas e iré documentando lo que vaya viendo.
Título: Re: wiki
Publicado por: SplinterGU en Junio 27, 2009, 10:19:11 pm
el codigo fuente tiene mucha documentacion, se puede empezar por documentar en el wiki, aquellas funciones que ya estan documentadas en el codigo... la idea es darle el formato wiki y completar si hace falta.

desde ya, muchisimas gracias.
Título: Re: wiki
Publicado por: osk en Junio 29, 2009, 07:41:47 pm
En Agosto yo podré hacer algo.
Título: Re: wiki
Publicado por: l1nk3rn3l en Julio 02, 2009, 03:27:44 pm
dame un listado de funciones y las pasare este fin de semana..
Título: Re: wiki
Publicado por: SplinterGU en Julio 02, 2009, 03:49:18 pm
empecemos por:

mod_joy
mod_cd
mod_dir

en todos estos los fuentes estan documentadas las funciones de cara al usuario (las que escribimos en nuestros prgs)... luego ire poniendo mas...
Título: Re: wiki
Publicado por: l1nk3rn3l en Julio 07, 2009, 05:28:11 pm
mod_cd y mod_dir ya estan documentadas ,
asi que no fui yo,

intente documentar mod_joy pero no me aparece nada ,
asi si alguien lo puede subir:

mod_joy
------------------------------
INT JOY_AXES()
Returns the selected joystick total axes

INT JOY_AXES(INTEGER joy)
Returns the selected joystick total axes

INT JOY_NUMAXES()
Returns the selected joystick total axes


INT JOY_NUMAXES(INTEGER joy)
Returns the selected joystick total axes


INT JOY_GETAXIS(INTEGER axis)
Returns the selected joystick state for the given axis


INT JOY_GETAXIS(INTEGER joy, INTEGER axis)
Returns the selected joystick state for the given axis


INT JOY_BUTTONS()
Returns the selected joystick total buttons


INT JOY_BUTTONS(INTEGER joy)
Returns the selected joystick total buttons


STRING JOY_NAME(INTEGER joy)
 Returns the name for a given joystick present in the system


INT JOY_NUMBUTTONS()
Returns the selected joystick total buttons


INT JOY_NUMBUTTONS(INTEGER joy)
Returns the selected joystick total buttons

INT JOY_NUMBER()
Returns the number of joysticks present in the system

INT JOY_NUMJOYSTICKS()
Returns the number of joysticks present in the system

INT JOY_SELECT(INTEGER joy)
Returns the selected joystick number


INT JOY_GETBUTTON(INTEGER button)
Returns the selected joystick state for the given button

INT JOY_GETBUTTON(INTEGER joy, INTEGER button)
Returns the selected joystick state for the given button

INT JOY_GETPOSITION(INTEGER axis)
Returns the selected joystick state for the given axis

INT JOY_GETPOSITION(INTEGER joy, INTEGER axis)
Returns the selected joystick state for the given axis

INT JOY_NUMHATS()
Returns the total number of POV hats of the current selected joystick

INT JOY_NUMHATS(INTEGER joy)
Returns the total number of POV hats of the current selected joystick

INT JOY_NUMBALLS()
Returns the total number of balls of the current selected joystick

INT JOY_NUMBALLS(INTEGER joy)
Returns the total number of balls of the current selected joystick

INT JOY_GETHAT(INTEGER hat)
Returns the state of the specfied hat on the current selected joystick

INT JOY_GETHAT(INTEGER joy, INTEGER hat)
Returns the state of the specfied hat on the current selected joystick


INT JOY_GETBALL(INTEGER ball, POINTER dx, POINTER dy)
Returns the state of the specfied ball on the current selected joystick

INT JOY_GETBALL(INTEGER joy, INTEGER ball, POINTER dx, POINTER dy)

Returns the state of the specfied ball on the current selected joystick


/* Compatibility */


INT NUMBER_JOY()
Returns the number of joysticks present in the system


INT SELECT_JOY(INTEGER joy)
Returns the selected joystick number

INT GET_JOY_BUTTON(INTEGER button)
Returns the selected joystick state for the given button

INT GET_JOY_BUTTON(INTEGER joy, INTEGER button)
Returns the selected joystick state for the given button

INT GET_JOY_POSITION(INTEGER axis)
Returns the selected joystick state for the given axis

INT GET_JOY_POSITION(INTEGER joy, INTEGER axis)
Returns the selected joystick state for the given axis
Título: Re: wiki
Publicado por: DCelso en Julio 07, 2009, 07:40:27 pm
SplinterGU, parece que usas el formato de comentarios necesarios para que doxygen pueda extraerlos del código fuente y crear toda la documentación. ¿Estoy en lo cierto? o es simple coincidencia.
Título: Re: wiki
Publicado por: DCelso en Julio 07, 2009, 08:03:44 pm
linkerner, me ha llevado un rato introducir una función e
n la wiki, no es dificil pero es atareado. No tienes que editar la página mod_joy sino hacer una página para cada función, ese creo que fué tu problema.
A ver te explico los pasos a seguir.
1.- Pones en tu navegador favorito la dirección de la función a crear, por ejemplo:
http://wiki.bennugd.org/index.php?title=Joy_numaxes
2.- En esa página, pinchas en la pestaña que pone create.
3.- Insertas los datos de la función siguiendo esta plantilla:
Código: [Seleccionar]
[[Category:functions]]
[[Category:Joystick]]
[[Category:Mod_joy]]

==Definition==
'''INT''' joy_numaxes ( )

Returns the selected joystick total axes.

== Returns ==
'''INT''' : The selected joystick total axes.

{{Moduledocbox
  | module = Mod_joy
}}
4.- Das click en el botón save page.

Y ya está, listo, ya se encadena en las demás páginas solita la función.
Título: Re: wiki
Publicado por: DCelso en Julio 07, 2009, 08:12:57 pm
Lo que no se aún es sobrecargar la pagina de una función (las funciones que tienen mismo nombre pero distinto numero de parámetros de entrada osea joy_axes por ejemplo :D)

He hecho una prueba con esa función, usando un <br>or<br> si alguien sabe como sería más correcto que lo diga.

Yo no tengo mucho tiempo así que no voy a poder meter más, a ver si linkernel u otro voluntario puede seguir los pasos que puse para el resto, gracias.
Título: Re: wiki
Publicado por: SplinterGU en Julio 07, 2009, 10:32:41 pm
coincidencia
Título: Re: wiki
Publicado por: DCelso en Julio 07, 2009, 10:38:59 pm
sobre?
Título: Re: wiki
Publicado por: SplinterGU en Julio 07, 2009, 11:10:03 pm
SplinterGU, parece que usas el formato de comentarios necesarios para que doxygen pueda extraerlos del código fuente y crear toda la documentación. ¿Estoy en lo cierto? o es simple coincidencia.

sobre esto... :P
Título: Re: wiki
Publicado por: DCelso en Julio 07, 2009, 11:25:31 pm
 :D, ok.
Se podría intentar pasar doxygen al código fuente a ver qué saca :D.
Título: Re: wiki
Publicado por: DCelso en Julio 14, 2009, 11:11:25 pm
Tengo problemas con la wiki, a veces me sale el siguiente mensaje detrás de la página repetido varias veces
Notice: Use of undefined constant MW_PARSER_VERSION - assumed 'MW_PARSER_VERSION' in /home/.pillow/bennuwiki/wiki.bennugd.org/extensions/StringFunctions/StringFunctions.php on line 160

Título: Re: wiki
Publicado por: DCelso en Julio 14, 2009, 11:19:18 pm
En cuanto a doxygen, lo pasé, no extrae la información de los comentarios.
El formato que usaste es parecido pero no le gusta a doxygen un ejemplo de comentario doxygen es el siguiente
Código: [Seleccionar]
/**
 *
 * This is an incredible function that will make people happier and stop
 * wars in the world.
 *
 * @param a an integer argument.
 * @param s a constant character pointer.
 *
 * @return The test results.
 *
 * @exception MyException throwed if any error happens.
 * @see otraFuncion
 */
Con este estilo de cabecera en las funciones sí que podríamos extraer la documentación con doxygen. La ventaja es que crea la documentacion en varios formatos distintos desde html hasta word, pasando por latex.
Sería interesante intentar usar este formato, nos ahorraría mucha tela ;d. Para mas información :
http://openideas.info/wiki/index.php?title=Guidelines:Coding_Documentation_es
http://trevinca.ei.uvigo.es/~jgarcia/FP/manuales/manualDoxygen.pdf
Título: Re: wiki
Publicado por: DCelso en Julio 21, 2009, 03:28:46 pm
Splinter,mirando la wiki me dí cuenta de que faltaba por documentar elsif y elif así que las documenté y me puse a mirar que otras palabras clave faltaban, así a primera vista veo que faltan las suignetes.
DUP
cLONE
onerror
ON
ERROR
RESUME
NEXT
JMP
CALL
GOTO
PUSH
POP

Dup creo que es como un push en pilas pero metiendo otra vez en la pila el último elmento metido. Ahora bién, no sabía que existieran pilas :D.

Next creo que es para irte del tirón al siguiente elemento de un bucle, copia de un continue.
Los demás ni idea, puedes comentar su cometido para insertarlos en la wiki?
Título: Re: wiki
Publicado por: splinter_work en Julio 21, 2009, 05:48:23 pm
muchas gracias...

dup no tiene nada que ver con la pila, dup sirve para llenar datos... la sintaxis es la siguiente

cantidad dup(valor)

por ejemplo:

10 dup(0)

crearia 10 elementos con 0

Código: [Seleccionar]
import "mod_say";

global
    array[] = 10 dup(0);

begin
    say ( sizeof(array)/sizeof(array[0]));
end

esto deberia imprimir 10

----

CLONE    - Clona procesos... es como un fork de C

onerror   - Metodo que se ejecuta al morir un proceso
ON EXIT - define que label se usara para el metodo onexit, al morir un proceso, puede ser cambiado en runtime
ON ERROR - define que label se usara para el metodo onerror, puede ser cambiado en runtime, no soportada todavia
RESUME NEXT - no soportada todavia, reservada para usarla en el manejor de errores (uso futuro)
RESUME GOTO - no soportada todavia, reservada para usarla en el manejor de errores (uso futuro)

JMP        - saltos a labels dentro de una funcion, esta explicado en el foro
CALL       - llamada a una label, como si fuera una subrutina dentro de una funcion
GOTO      - alias de JMP

PUSH      - no se de donde lo sacaste, pero no existe esto como instruccion
POP        - no se de donde lo sacaste, pero no existe esto como instruccion

RETURN   - ademas de la ya conocida funcionalidad, retorna de una llamada CALL si esta fue efectuada (sin valor de retorno).
YIELD     - alias de FRAME

PD: Karma para ti
Título: Re: wiki
Publicado por: DCelso en Julio 21, 2009, 06:11:13 pm
Ok, gracias, a ver que puedo hacer en la wiki.
esas push,pop las saqué de debug.c
Código: [Seleccionar]
mnemonics[] =
{
    { "ARRAY"                       , MN_ARRAY                  , 1 },
    { "GET_PRIVATE"                 , MN_GET_PRIV               , 1 },
    { "GET_REMOTE"                  , MN_GET_REMOTE             , 1 },
    { "GET_LOCAL"                   , MN_GET_LOCAL              , 1 },
    { "GET_GLOBAL"                  , MN_GET_GLOBAL             , 1 },
    { "PRIVATE"                     , MN_PRIVATE                , 1 },
    { "REMOTE"                      , MN_REMOTE                 , 1 },
    { "LOCAL"                       , MN_LOCAL                  , 1 },
    { "GLOBAL"                      , MN_GLOBAL                 , 1 },
    { "DUP"                         , MN_DUP                    , 0 },
    { "PUSH"                        , MN_PUSH                   , 1 },
    { "POP"                         , MN_POP                    , 0 },
    { "INDEX"                       , MN_INDEX                  , 1 },
    { "NEG"                         , MN_NEG                    , 0 },
    { "NOT"                         , MN_NOT                    , 0 },
    { "CALL"                        , MN_CALL                   , 1 },
    { "PROCESS"                     , MN_PROC                   , 1 },
    { "SYSCALL"                     , MN_SYSCALL                , 1 },
    { "SYSPROC"                     , MN_SYSPROC                , 1 },
    { "CLONE"                       , MN_CLONE                  , 1 },
    { "END"                         , MN_END                    , 0 },
    { "RETURN"                      , MN_RETURN                 , 0 },
    { "FRAME"                       , MN_FRAME                  , 0 },
    { "TYPE"                        , MN_TYPE                   , 1 },

    { "MUL"                         , MN_MUL                    , 0 },
    { "DIV"                         , MN_DIV                    , 0 },
    { "ADD"                         , MN_ADD                    , 0 },
    { "SUB"                         , MN_SUB                    , 0 },
    { "MOD"                         , MN_MOD                    , 0 },
    { "ROR"                         , MN_ROR                    , 0 },
    { "ROL"                         , MN_ROL                    , 0 },
    { "AND"                         , MN_AND                    , 0 },
    { "OR"                          , MN_OR                     , 0 },
    { "XOR"                         , MN_XOR                    , 0 },

    { "BNOT"                        , MN_BNOT                   , 0 },
    { "BAND"                        , MN_BAND                   , 0 },
    { "BOR"                         , MN_BOR                    , 0 },
    { "BXOR"                        , MN_BXOR                   , 0 },

    { "EQ"                          , MN_EQ                     , 0 },
    { "NE"                          , MN_NE                     , 0 },
    { "GT"                          , MN_GT                     , 0 },
    { "LT"                          , MN_LT                     , 0 },
    { "GTE"                         , MN_GTE                    , 0 },
    { "LTE"                         , MN_LTE                    , 0 },

    { "FLOAT2INT"                   , MN_FLOAT2INT              , 1 },
    { "INT2FLOAT"                   , MN_INT2FLOAT              , 1 },
    { "INT2WORD"                    , MN_INT2WORD               , 1 },
    { "INT2BYTE"                    , MN_INT2BYTE               , 1 },

    { "POSTINC"                     , MN_POSTINC                , 1 },
    { "POSTDEC"                     , MN_POSTDEC                , 1 },
    { "INC"                         , MN_INC                    , 1 },
    { "DEC"                         , MN_DEC                    , 1 },
    { "VARADD"                      , MN_VARADD                 , 0 },
    { "VARSUB"                      , MN_VARSUB                 , 0 },
    { "VARMUL"                      , MN_VARMUL                 , 0 },
    { "VARDIV"                      , MN_VARDIV                 , 0 },
    { "VARMOD"                      , MN_VARMOD                 , 0 },
    { "VARXOR"                      , MN_VARXOR                 , 0 },
    { "VARAND"                      , MN_VARAND                 , 0 },
    { "VAROR"                       , MN_VAROR                  , 0 },
    { "VARROR"                      , MN_VARROR                 , 0 },
    { "VARROL"                      , MN_VARROL                 , 0 },
    { "LET"                         , MN_LET                    , 0 },
    { "LETNP"                       , MN_LETNP                  , 0 },

    { "REPEAT"                      , MN_REPEAT                 , 1 },
    { "BREAK"                       , MN_BREAK                  , 1 },
    { "BRFALSE"                     , MN_BRFALSE                , 1 },
    { "RETRUE"                      , MN_RETRUE                 , 1 },
    { "REFALSE"                     , MN_REFALSE                , 1 },
    { "JUMP"                        , MN_JUMP                   , 1 },
    { "JFALSE"                      , MN_JFALSE                 , 1 },
    { "JTRUE"                       , MN_JTRUE                  , 1 },
    { "JTFALSE"                     , MN_JTFALSE                , 1 },
    { "JTTRUE"                      , MN_JTTRUE                 , 1 },
    { "PTR"                         , MN_PTR                    , 0 },

    { "SWITCH"                      , MN_SWITCH                 , 0 },
    { "CASE"                        , MN_CASE                   , 0 },
    { "CASE_R"                      , MN_CASE_R                 , 0 },
    { "JNOCASE"                     , MN_JNOCASE                , 1 },

    { "STRI2CHR"                    , MN_STRI2CHR               , 0 },
    { "SUBSTR"                      , MN_SUBSTR                 , 1 },

    { "STR2INT"                     , MN_STR2INT                , 1 },
    { "STR2CHR"                     , MN_STR2CHR                , 1 },
    { "INT2STR"                     , MN_INT2STR                , 1 },
    { "CHR2STR"                     , MN_CHR2STR                , 1 },
    { "STR2FLOAT"                   , MN_STR2FLOAT              , 1 },
    { "FLOAT2STR"                   , MN_FLOAT2STR              , 1 },
    { "POINTER2STR"                 , MN_POINTER2STR            , 1 },
/*    { "POINTER2BOL"                 , MN_POINTER2BOL            , 1 }, */

    { "A2STR"                       , MN_A2STR                  , 0 },
    { "STR2A"                       , MN_STR2A                  , 0 },
    { "STRACAT"                     , MN_STRACAT                , 0 },

    { "MN_NCALL"                    , MN_NCALL                  , 1 },

    { "MN_EXITHNDLR"                , MN_EXITHNDLR              , 1 },
    { "MN_ERRHNDLR"                 , MN_ERRHNDLR               , 1 },
    { "MN_RESUME"                   , MN_RESUME                 , 1 },
    { "MN_RESUMEGOTO"               , MN_RESUMEGOTO             , 1 },

    { "DEBUG"                       , MN_DEBUG                  , 1 },
    { "------"                      , MN_SENTENCE               , 1 },

    { "PUBLIC"                      , MN_PUBLIC                 , 1 },
    { "GET_PUBLIC"                  , MN_GET_PUBLIC             , 1 },

    { "REMOTE_PUBLIC"               , MN_REMOTE_PUBLIC          , 1 },
    { "GET_REMOTE_PUBLIC"           , MN_GET_REMOTE_PUBLIC      , 1 },

    { 0                             , -1                        , 0 }
} ;
[/dode]
Título: Re: wiki
Publicado por: splinter_work en Julio 21, 2009, 06:26:43 pm
Ah, no, las de ese fuente, son las del "assembler bennugd", no esta disponibles al usuario.
Título: Re: wiki
Publicado por: DCelso en Julio 21, 2009, 07:05:23 pm
Ok, gracias.
Ya he añadido ya las que vi fáciles.
En cambio esta
ON EXIT - define que label se usara para el metodo onexit, al morir un proceso, puede ser cambiado en runtime
No se como insertarla, debería explicarse en process creo.

Y estas
onerror   - Metodo que se ejecuta al morir un proceso <----- esta no es igual a onexit¿?
ON ERROR - define que label se usara para el metodo onerror, puede ser cambiado en runtime, no soportada todavia
RESUME NEXT - no soportada todavia, reservada para usarla en el manejor de errores (uso futuro)
RESUME GOTO - no soportada todavia, reservada para usarla en el manejor de errores (uso futuro)
No me rece la pena insertarlas aún ¿no? de todas formas deberían ir tambien en process, creo
Título: Re: wiki
Publicado por: splinter_work en Julio 21, 2009, 07:29:10 pm
Ok, gracias.
Ya he añadido ya las que vi fáciles.
En cambio esta
ON EXIT - define que label se usara para el metodo onexit, al morir un proceso, puede ser cambiado en runtime
No se como insertarla, debería explicarse en process creo.

Y estas
onerror   - Metodo que se ejecuta al morir un proceso <----- esta no es igual a onexit¿?
ON ERROR - define que label se usara para el metodo onerror, puede ser cambiado en runtime, no soportada todavia
RESUME NEXT - no soportada todavia, reservada para usarla en el manejor de errores (uso futuro)
RESUME GOTO - no soportada todavia, reservada para usarla en el manejor de errores (uso futuro)
No me rece la pena insertarlas aún ¿no? de todas formas deberían ir tambien en process, creo

onerror, me confundi en el texto (maldito copy&paste!), es claro que no es igual a onexit...

no vale la pena incorporarlas ahora... quizas una mencion de que son palabras reservadas...

http://forum.bennugd.org/index.php?topic=102.msg1185#msg1185
Título: Re: wiki
Publicado por: DCelso en Octubre 13, 2009, 11:48:08 am
He visto que ahora en el wiki se mezclan los módulos oficiales con los no oficiales (como antes esto no se podía hacer.), debido a que la página http://wiki.bennugd.org/index.php?title=modules hace un listado de "category=modules" para mostrar los módulos oficiales. NPI de como solventarlo, lo suyo sería que pusiera algo como módulos oficiales y módulos de terceras personas en secciones distintas,

Por otro lado, no se modificar las dependencias de un módulo, por ejemplo, en http://wiki.bennugd.org/index.php?title=Mod_ttf al final hay una sección que pone dependencies, pues no se donde se edita, busqué en modules, dlls, mod_ttf, ttf.dll, etc, y en ningun lado veo como se referencia para que aparezca como dependencia. A ver si algún docto nos lo dice,

Título: Re: wiki
Publicado por: Sandman en Octubre 13, 2009, 12:52:01 pm
Please, comment suggestions and remarks in English, so I can be more helpful. Your English is *far* better than my Spanish or the translators. You can use the talk page on the Wiki if you like.

From what I understand it, you don't understand where the dependencies come from? They come from the categories the module is in. Mot_ttf for example is in the categories libgrbase and libfont.

The official modules should be in the category "official", but I didn't feel like doing that, so I made a category "3rd party". I fixed the listing now.
Título: Re: wiki
Publicado por: DCelso en Octubre 13, 2009, 01:52:51 pm
Ok, I'm sorry and thank you. I did it here because is the unique thread of the wiki and I didn`t want open a new Topic. :)
Título: Re: wiki
Publicado por: DCelso en Octubre 13, 2009, 01:56:29 pm
Why the mod_ttf don`t have the "_" character in the http://wiki.bennugd.org/index.php?title=Modules and the othed modules have it?
Título: Re: wiki
Publicado por: Sandman en Octubre 13, 2009, 11:28:14 pm
My bad; fixed. :)
Título: Re: wiki
Publicado por: DCelso en Octubre 16, 2009, 08:50:51 pm
He subido al wiki todas las funciones de joystick.
Si puede ser que alguien le eche un vistazo por si ve algo incorrecto. Gracias.
http://wiki.bennugd.org/index.php?title=Mod_joy
Título: Re: wiki
Publicado por: josebita en Octubre 16, 2009, 10:42:41 pm
¡Muchas gracias!
Mirándolo por encima, tiene muy buena pinta. :)
Título: Re: wiki
Publicado por: DCelso en Octubre 17, 2009, 06:54:41 am
A mandar. ¿sabes si faltan más funciones para añadir?
Título: Re: wiki
Publicado por: DCelso en Noviembre 02, 2009, 03:16:25 pm
Añadida función que faltaba
http://wiki.bennugd.org/index.php?title=Mode_is_ok

Ya puestos, he añadido también get_modes y también he añadido información adicional a set_mode sobre un modo de llamarlo con un solo parámetro.
Título: Re: wiki
Publicado por: DCelso en Enero 29, 2010, 05:46:11 pm
SplinterGU, ¿Han cambiado las funciones de encriptado (o sus parámetros) o alguna más?
Lo digo por actualizar la wiki. http://wiki.bennugd.org/index.php?title=Crypt_decrypt
Título: Re: wiki
Publicado por: SplinterGU en Enero 30, 2010, 02:55:07 am
no han cambiado... los cambios son internos...