Registrarse

[Herramienta] [Multiplataforma] pyFSF (Completo, estable y con GUI)

cosarara97

Dejad de cambiar de nick
Miembro de honor
Hola!
Traigo mi segunda herramienta! :awesome:

Que es pyFSF:

Bueno, es py de python, porque el programa está escrito en python
FSF es FreeSpaceFinder
Por lo que nos queda un pythonFreeSpaceFinder, que es un nombre demasiado largo, así que pyFSF está perfecto.


¿Por qué lo he hecho?
Mira, es que sinceramente, a mi, el FSF nunca me ha gustado. No se porque será, pero no me gusta. Y como no me gustaba, he decidido intentar crear un equivalente que si lo hiciera :D


Como usar la versión CLI (command-line):

Código:
python pyFSF.py --rom nombredelrom.gba --offset 1 --lenght 2
donde nombredelrom.gba es el nombre del rom, 1 es el offset en el que empezar a buscar (en hex, pero sin 0x) y 2 el numero de bytes a buscar (en hex, también sin 0x)
ejemplo:
Código:
python pyFSF.py --rom Ruby.gba --offset 800000 --lenght 20B
o
Código:
python pyFSF.py -r Ruby.gba -o 800000 -l 20B

Como usar la versión GUI (Graphical-user-interface):


(I know, I know there's a typo)
Primero abrid un ROM en File -> Open
Luego:
En lenght va la longitud de bytes a buscar en decimal o hex (se elige en los botones que hay a la derecha), y en start offset va el offset en hex, no le pongáis el 0x al principio, fijaros que está escrito a la izquierda... Ah, si, y para buscar le dais al botón grande que pone Search, ok?

Para hacer:
- Crear una versión con funciones avanzadas
- Encontrar posibles bugs en las versiones actuales
- Icono
- Ejecutables windows

Descarga
python-free-space-finder - ROM-hacking tool written in python. - Google Project Hosting
Links viejos y rotos:
v1.1 versión CLI: [attachment=1476]
v1.2 versión CLI: [attachment=1483]
(Alpha) v1.0 versión GUI: [attachment=1478]
(Beta) v1.1 versión GUI: [attachment=1513]
(Estable) v1.1 versión GUI: [attachment=1514]
v1.99: [Completo, estable y con GUI] pyFSF - Foro Whack a Hack!

Info. tecnica
Licencia: GPL v3
Lenguaje de programación: python
Libs necesarias: pyqt4
Autor: Yo (cosarara97)
Se pueden hacer versiones derivadas del programa si me ponéis como autor original y blah, blah, blah, y pongo "blah, blah, blah" porque la GPL es laaarga y difícil de entender, así que no me la he leído entera xD

Aclaración:
Este programa se puede usar en windows, solo hay que instalar python (y pyqt4 para la versión con gui)

Próximas versiones GUI:
v2: [porcentaje]99[/porcentaje]
Estable 1: [porcentaje]100[/porcentaje] ^ Es la beta 1, que no tenia bugs, pero con el texto seleccionable
Beta 1: [porcentaje]100[/porcentaje] ^ Sin bugs conocidos, completa
Alpha 1: [porcentaje]100[/porcentaje] ^ Sin bugs conocidos, incompleta

ATENCIÓN!!!!
La primera versión CLI (v1.0) tenia un bug gordo, porque el start offset tenia que ser multiplicado por 2 y el programa no lo hacia (en un byte hay dos caracteres, ejemplo: "FF"), por lo que daba resultados erróneos.
La versión sin el bug está en las descargas...
 
RE: pyFSF

Bueno, yo nunca usé el FSF en general, más que nada uso el #DYNAMIC para que se encargue de ver si hay espacio libre en un offset.
Pero bueno, claro está, no voy a probarlo porque uso Windows pero si es un Free Space Finder para Linux esta bien.

Pero no entiendo algo, el offset debe estar permutado o los bytes separados? De todas maneras, ya vi el ejemplo con el offset 0x800000, asi que nada, por lo visto debe estar tal cual pero sin el 0x.

Un saludo.
 

cosarara97

Dejad de cambiar de nick
Miembro de honor
RE: pyFSF

Vuelvo a decirlo:
Esta herramienta es multiplataforma. Puede funcionar incluso dentro de una DS, solo necesita tener python instalado.

Así que si usáis windows también podéis usarla, solo tenéis que instalar python, porque no uso ningún modulo raro.

Para instalar python (python 2.7) hay que descargarlo de aquí:

http://python.org/download/releases/2.7.2/


_________________________________________________


La primera versión tenia un bug gordo, porque el start offset tenia que ser multiplicado por 2 y el programa no lo hacia (en un byte hay dos caracteres, ejemplo: "FF"), por lo que daba resultados erróneos.
Por suerte lo he visto mientras testeaba la alpha de la versión con GUI, y aquí traigo el bugfix (v1.1):
[attachment=1477]

NOTA: Como se me pasó algo tan tonto?


EDIT: Recordad que la v1.1 también es beta, puede contener errores. Mi intención es que el programa, en sus 2 versiones (cli y gui) funcione perfectamente antes del lunes 24[hr]
Ya tenemos versión GUI alpha 1!!! (sin errores, incompleta)
Ahora tengo prisa, así que, directo al grano:
http://whackahack.com/foro/attachment.php?aid=1478


____________________________________________

Que trabajador que estoy, no? :awesome:

Bueno, he hecho la versión 1.2 de pyFSF CLI. Esta es la primera versión estable, lo que significa que teóricamente no tiene errores. La descarga está en el post principal.


_________________________________________________

ACTUALIZACIÓN 4/11/2011
A la beta 1 se le ha añadido la posibilidad de seleccionar el offset resultante y se ha convertido en estable :D
 

cosarara97

Dejad de cambiar de nick
Miembro de honor
RE: [Completo, estable y con GUI] pyFSF

Perdón por el doble post, pero si no nadie se entera, y me parece suficientemente importante.

Bueno, pues que ya he hecho lo que queríais (nunca lo decís, pero yo lo se), ejecutables windows!
Si! Un practico y simple *.exe que todo usuario de windows debe saber usar.
El ejecutable es para la versión GUI v1.1, así que lo tenéis todo actualizado, sin contar lo que aún no ha salido de mi PC.

Y hay una especie de error:
No permite que el ROM esté en una carpeta el nombre de la cual tenga acentos ni caracteres raros, siendo la siguiente ruta incorrecta:
C:\asdf\àéï?çû\aaa\ROM.gba
Y la siguiente correcta:
C:\asdf\aeiou\aaa\ROM.gba
Tengo planeado corregirlo en la próxima versión, pero no creo que sea muy importante.

El resto de cosas va perfectamente...

Descargas:
http://www.mediafire.com/?0g4szega15ylx9y - zip
 

Gender

DeathSpace
RE: [Completo, estable y con GUI] pyFSF

Grácias por la herramienta, con razón no podia
habrír mi juego por los acentos, y en fín me gusta mas FSF pero veamos
probare con tu herramienta aver que tal.
 

cosarara97

Dejad de cambiar de nick
Miembro de honor
RE: [Completo, estable y con GUI] pyFSF

Bueno, he estado limpiando el codigo, corrigiendo errores ortograficos, etc. y he creado una pagina en google code para el proyecto. Es esta:
http://code.google.com/p/python-free-space-finder/
La versión más reciente siempre estará en el repositorio git, al que podeis acceder con este comando (desde linux):
Código:
git clone https://code.google.com/p/python-free-space-finder/
O con este programa (desde windows, no probado)
http://downloadsvn.codeplex.com/
Usando esta url:
https://code.google.com/p/python-free-space-finder/
Y poniendo "GIT" en la pestaña "type"

Seguiré sacando versiones normales, pero con poca frequencia, porque crear ejecutables para windows es un rollo, y en linux es muy facil usar git xD (tranquilos, cuando haya cambios importantes que afecten a los usuarios liberaré versiones)

La versión avanzada (la que llevará infinitas funciones no aptas para novatos) aún la estoy empezando a crear, pero podeis encontrar lo que llevo hecho en "git/branch/advanced version".

Bye!
 

Cheve

MoonLover~
Miembro de honor
RE: [Completo, estable y con GUI] pyFSF

Bueno, muchas gracias por seguir mejorando la herramienta cada vez más...

Antes quizá no lo hacía, pero se agradece mucho que hagas herramientas compatibles con Linux...

Ahora lo aprecio más porque en mi portatil Windows dejó de funcionar... Pero Linux sigue en Pié... (Y wine no me Funciona)

Bueno, esperaré más novedades sobre la herramienta. Me has dejado "picando el bichito de la curiosidad" con lo de "que llevará infinitas funciones no aptas para novatos" :awesome:

Salu2! ^^
 

cosarara97

Dejad de cambiar de nick
Miembro de honor
RE: [Completo, estable y con GUI] pyFSF

Bueno, ya he empezado a agregar funciones a la versión avanzada (Se encuentra en fase prealpha inestable), de momento llevo estas:
- Margen
Algo que yo siempre hago manualmente, que es dejar unos cuantos bytes libres entre lo que hay antes del espacio libre y donde empiezo a escribir. Ejemplo:
Tenemos un binario con este contenido:
Código:
AA AA AA AA AA AA FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF CC FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF DD DD 11 11 11 11 11 11 11 11 11 11 11 11
Imaginemos que todo lo que no son FF's es importante, y lo la queremos liar. En concreto, los AA's son el cuerpo de nuestro script, y necesitamos algun sitio para poner un msgbox de este.
Bueno, si somos Seph usaremos #dynamic, como nos explica en un mensaje por aquí arriba :D
Bueno, este es el ROM con el mensaje insertado:
Código:
AA AA AA AA AA AA 66 66 66 66 66 66 66 66FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF CC FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF DD DD 11 11 11 11 11 11 11 11 11 11 11 11
Si, el mensaje son los 66's. Bueno, el script nos ha quedado muy bien, y al cabo de una semana de seguir con el hack ya tienes 5 scripts que llaman a este con goto's, call's etc. y el mismo mensaje también lo usas en muchos sitios
Peeero entonces resulta que necesitas agregar un comando al script (y naturalmente no vamos a reemplazar unos cuantos comandos por un goto que llama a un script donde está todo lo necesario, porque eso es pensar mucho).

Bueno, por el simple hecho de haber dejado 5 bytes de margen podemos agregar el maldito comando sin haber de pensar. Y para esto tenemos la funcion de margen :D

Si lo de los scripts no os convence, pensad en una tabla de sprites o una imagen.

- Next - Desgraciadamente aún no aplica el margen. Lo explicaré con un mini-ejempo:
Queremos buscar x bytes libres a partir de y
Pulsamos Search
Nos los encuentra en z.
(Next se activa)
Pulsamos next.
Nos busca x bytes a partir de y+x

Nos sirve si queremos insertar 5 sprites del mismo tamaño y queremos buscar todos los offsets antes de empezar a insertar.

- Conversor dec <-> hex - Si queremos convertir de dec a hex pondremos un numero decimal, si queremos convertir de hex a dec pondremos un numero hex con 0x al principio.
Sí, cierra ya esa horrible calculadora de winbugs :D Si tienes la de gnome (linux) usa esa, que es super-pro xD

Repuntear offsets -
Bueno, pues eso xD, de momento hay 3 casillas, hay que poner 1 byte en cada una, posteriormente lo sustituiré por una sola casilla.


Captura:



Lo podéis descargar del repositorio git.


Por cierto, para seguir con la herramienta (y las próximas que haga) me gustaria tener ayudantes :D
Necesito:
- Alguien que haga iconos (presentad un posible icono para el programa que me guste y tendréis el puesto)
- Betatester(s)
Obligatorio:
No tener miedo a usar la linea de comandos
Usar linux (o, en otros SO's, tener python2.7 y pyqt4 y git instalados)
Saber algo inglés, o ser muy bueno usando el google traductor

Otras cosas no obligatorias:
Saber algo de python
Saber algo de debugging
- Alguien que me dé ideas (Hay que ser alguien simpático :D)
- Alguien que me corrija las faltas de ortografía (en inglés) xD
 

cosarara97

Dejad de cambiar de nick
Miembro de honor
RE: [Completo, estable y con GUI] pyFSF

Hola! @RogellParadox me pidió mis herramientas para ponerlas en su pack, así que fui a buscar la versión más nueva que había en el repositorio git. Lo que pasa es que me encontré que tenía la versión avanzada a medio hacer, así que decidí acabarla, mejorarla, y convertirla en la segunda versión de pyFSF.
Y eso os traigo, pyFSF v1.99 :) ¿Por qué v1.99 y no v2? Básicamente porque solo ha sido probada por mi, y puede que haya algún retoque o bugfix antes de la v2.0
Esta versión es la que viene incluida en el HackTools 4.0, así que si ya habéis descargado ese pack, no hace falta volver a descargarla ahora.
Ok, basta de tanta charla, es así:

Para buscar espacio es tan fácil como abrir un ROM (File -> Open), escribir una longitud en length y pulsar Search. La función de margen hace básicamente eso, dejar un margen de la longitud especificada para que no se junten las cosas. Una vez buscado, se puede ir pulsando next para conseguir más offsets con el mismo espacio libre.
La función de convertir de hex a decimal y al revés es muy sencilla, solo hay que poner 0x al principio del numero cuando se quiere convertir de hex a dec, y no ponerlo cuando se quiere convertir de dec a hex. Lo del repoint creo que es bastante fácil de entender.
ERRORES: Dice repuntear cuando sería permutar... [EDIT: Arreglado en la ultima versión del git]

Link de descarga:
http://dl.dropbox.com/u/57504822/tools/pyFSF-win32.zip
En el zip vienen tanto los ejecutables para windows como el código fuente en python (en la carpeta src).
 

Cheve

MoonLover~
Miembro de honor
RE: [Completo, estable y con GUI] pyFSF

¡Nueva Versión! ¡Genial!

Antes quizás no apreciaba tanto el hecho de que hagas herramientas para Linux... Pero ahora si xD

¿Why? Porque usé Linux, y es desesperantemente difícil instalar Wine si no sabes nada del SO, así que si las herramientas son compatibles con Linux no necesitas usar nada raro, solo lo abres y ya.


Muchas gracias y cuando tenga tiempo me fijo si encuentro algún error xD

Salu2!
 

Kal!ser

Vuelve el lobito
RE: [Completo, estable y con GUI] pyFSF

Bueno, ahora que estoy planteando pasarme a linux, creo que debería ir viendo qué herramientas puedo usar, y ya me voy alegrando de ver unas pocas, y la mayoría tuyas ^^. Buenas mejoras, sigue sacando tools para linux, que a muchos les hará falta =P
 
Arriba