› Foros › Multiplataforma › Consolas alternativas
Esta consola es de batalla y si se rompe te puedes comprar otra tranquilamente. Una Switch v1 vulnerable es mejor cuidarla bastante.hardaway escribió:Pillada barata.... consolon! Y eso tengo la Switch v1 pero esta es plug and play para Roms y ira a más sitios seguro.
Supongo que no vendrá actualizado. La actualización gana en ciertos aspectos de la emulación.hardaway escribió:Merecea la pena el firmware update? Se tarda mucho o es complicado? No se si ya viene actualizado o no...
En mi caso es por aumentar la capacidad y guardar la original como repuesto.hardaway escribió:Lo de la pila adicional que comentáis, es por si casca o para tener más capacidad? Hay alguna que calce mejor?
El pendrive permite insertar SD y microSD para enchufar tarjetas en un puerto USB A del PC. Así se le actualiza el firmware, temas del menú o los juegos.hardaway escribió:A mi me vino con la tarjeta sd dentro y con una especie de pendrive que pone "micro sd" que no se para que servirá
aleqt79 escribió:Una pregunta, el enlace que habéis puesto la pila, es la que tiene pezón? o es plana?...
RaZoR1179 escribió:Me quedo por aquí, me ha llegado esta mañana y estoy bajando el firm 1.5
Ocupa 8Gb, algun tuto para actualizar? Gracias!
Cuadri escribió:aleqt79 escribió:Una pregunta, el enlace que habéis puesto la pila, es la que tiene pezón? o es plana?...
Pilla con pezón, que yo cogí una plana y hasta que me llegue la pieza extra que he comprado la he tenido que apañar con papel de aluminio para que hiciera contacto.RaZoR1179 escribió:Me quedo por aquí, me ha llegado esta mañana y estoy bajando el firm 1.5
Ocupa 8Gb, algun tuto para actualizar? Gracias!
hardaway escribió:Pillada barata.... consolon! Y eso tengo la Switch v1 pero esta es plug and play para Roms y ira a más sitios seguro.
Merecea la pena el firmware update? Se tarda mucho o es complicado? No se si ya viene actualizado o no...
Lo de la pila adicional que comentáis, es por si casca o para tener más capacidad? Hay alguna que calce mejor?
A mi me vino con la tarjeta sd dentro y con una especie de pendrive que pone "micro sd" que no se para que servirá
RaZoR1179 escribió:INFO: May 22nd bisrv.asd detected.
Esta es la última update a dia de hoy, ¿verdad?
¿Como se remapean botones? No veo como se hace por ningun lado, jeje
anpeasolana escribió:Soy nuevo en esto, he bajado una rom y pone .nes. Es válida? o hay que buscar una rom especial?
F Society escribió:También encontré una batería a buen costo y con pronto envío, ya que la que postearon no cuenta con seguimiento si son de México creo les ayudara.Enlace
Scissorman escribió:F Society escribió:También encontré una batería a buen costo y con pronto envío, ya que la que postearon no cuenta con seguimiento si son de México creo les ayudara.Enlace
Gracias... pues habrá que checarlo pues mande pedir una bateria para una la FC3000 y nunca llego....
pjexposito escribió:He visto que es posible jugar a juegos de SMS. Es posible también hacerlo con juegos de Gamegear?
czt escribió:También se puede probar el emulador drsms
http://www.webpersona.com/drsms/downloads.html
Creo que alguien mencionó que cuando modificas los controles en Megadrive cambias los de SNES y viceversa.aleqt79 escribió:Willysonicteam escribió:Pues yo e cambiado el boton R por el Y y ningun problema,pues despues tienes que maoear el R correctamente.
Estos dias estoy con los juegos de Mame,pues hay muchos que funcionan y estan geniales.Hay muchos que estan rotados y es un rollo,como el Outzone,que es de los que mas me gustan y funciona perfectamente,pero rotado y a full screen[/quote
Pues es raro a mi no funciona, lo intente con todos los botones para quitar el gatillo R y nada....gracias
Cuadri escribió:Creo que alguien mencionó que cuando modificas los controles en Megadrive cambias los de SNES y viceversa.aleqt79 escribió:Willysonicteam escribió:Pues yo e cambiado el boton R por el Y y ningun problema,pues despues tienes que maoear el R correctamente.
Estos dias estoy con los juegos de Mame,pues hay muchos que funcionan y estan geniales.Hay muchos que estan rotados y es un rollo,como el Outzone,que es de los que mas me gustan y funciona perfectamente,pero rotado y a full screen[/quote
Pues es raro a mi no funciona, lo intente con todos los botones para quitar el gatillo R y nada....gracias
Otra opción es utilizar la herramienta de la comunidad.
aleqt79 escribió:Gracias, la opción de la herramienta de la comunidad tampoco me funciona, pone que es firmware anteriores al 15 de mayo o sea entiendo para los que no llevaban en la actualización el mapeado de botones.
LM_FUSTERO escribió:la micro SD que viene con la consola tiene serigrafiado 16gb pero realmente tiene 32gb.
naxeras escribió:LM_FUSTERO escribió:la micro SD que viene con la consola tiene serigrafiado 16gb pero realmente tiene 32gb.
Cuidado con eso que los chinos trampean los espacios de disco no sea que expandas y se te corrompa todo.
Wkr escribió:aleqt79 escribió:Gracias, la opción de la herramienta de la comunidad tampoco me funciona, pone que es firmware anteriores al 15 de mayo o sea entiendo para los que no llevaban en la actualización el mapeado de botones.
No entiendo, funciona perfectamente con la 1.5V del 22 de mayo. Con la última.
Yo lo acabo de comprobar.
¿Tu versión está actualizada?
Helwem escribió:Buenas Compis
Alguno sabe que rooms de mame o arcade se le pueden poner?
Un saludo
Wkr escribió:Por lo que tengo entendido solo se pueden cargar las roms que tiene en su dataset.
https://vonmillhausen.github.io/sf2000/ ... 0_FBA.html
Lo explica aquí:
https://vonmillhausen.github.io/sf2000/#arcade
Cody_Travers escribió:Wkr escribió:Por lo que tengo entendido solo se pueden cargar las roms que tiene en su dataset.
https://vonmillhausen.github.io/sf2000/ ... 0_FBA.html
Lo explica aquí:
https://vonmillhausen.github.io/sf2000/#arcade
Exacto, usa un romset de FBA no de mame y uno especifico, aun asi.no funcionan todos
pjexposito escribió:Cody_Travers escribió:Wkr escribió:Por lo que tengo entendido solo se pueden cargar las roms que tiene en su dataset.
https://vonmillhausen.github.io/sf2000/ ... 0_FBA.html
Lo explica aquí:
https://vonmillhausen.github.io/sf2000/#arcade
Exacto, usa un romset de FBA no de mame y uno especifico, aun asi.no funcionan todos
Me he creado un romset con todas las roms soportadas (usando el DAT) y los previews. ¿Cómo meto ahora el contenido en la consola? Resulta que Grogtool aun no es capaz y no consigo entender del todo como están creados los archivos zfb. ¿Es un zip con la imagen y el nombre? Lo digo porque no me permite descomprimirlo y tampoco veo ninguna cabecera reconocible.
A ver si alguien tiene algo más de información y puedo montar un script de Python que haga el trabajo sucio.
Edito:
Estoy tonto. Realmente no es un archivo ZIP. En la web de Frogtool explican como está formado. Es RAW en formato RGB565 de 144x208px. Luego dos ceros (00), el nombre original de la rom y dos ceros más.
A ver si los nenes mañana me dejan un rato y me hago un script para pasar todas las roms y así las puedo probar.
F Society escribió:Ese archivo se crea cuando utilizas frog tool al meter un rom junto con su imagen en png ejemplo: kof98.zip + kof98.png
Encontraste los previews en alguna web? Y si sí hay link? 👀 Yo encontré varios roms de snes, gbc y gba en español son bastantes tal vez podriamos realizar un pack que se encuentre preparado con los roms y previews traducidos.
pjexposito escribió:F Society escribió:Ese archivo se crea cuando utilizas frog tool al meter un rom junto con su imagen en png ejemplo: kof98.zip + kof98.png
Encontraste los previews en alguna web? Y si sí hay link? 👀 Yo encontré varios roms de snes, gbc y gba en español son bastantes tal vez podriamos realizar un pack que se encuentre preparado con los roms y previews traducidos.
Por ahora Frogtool sólo permite hacer lo que dices con los juegos de consola, no con los de Arcade. De todas formas ya he terminado el script y tengo las roms del archivo "DataFrog_SF2000_FBA_v0.2.97.42_playable_no_dups.dat" con sus carátulas y funcionando. Es curioso que el Tetris original no esté en el DAT. Supongo que no funcionará correctamente.
pjexposito escribió:F Society escribió:Ese archivo se crea cuando utilizas frog tool al meter un rom junto con su imagen en png ejemplo: kof98.zip + kof98.png
Encontraste los previews en alguna web? Y si sí hay link? 👀 Yo encontré varios roms de snes, gbc y gba en español son bastantes tal vez podriamos realizar un pack que se encuentre preparado con los roms y previews traducidos.
Por ahora Frogtool sólo permite hacer lo que dices con los juegos de consola, no con los de Arcade. De todas formas ya he terminado el script y tengo las roms del archivo "DataFrog_SF2000_FBA_v0.2.97.42_playable_no_dups.dat" con sus carátulas y funcionando. Es curioso que el Tetris original no esté en el DAT. Supongo que no funcionará correctamente.
pip install pillow
from PIL import Image
import struct
import os
import re
import xml.etree.ElementTree as ET
#Generado por ChatGPT
def crop_and_resize_image(input_path, output_path, target_width, target_height):
# Abrir la imagen
image = Image.open(input_path)
# Obtener las dimensiones de la imagen original
original_width, original_height = image.size
# Calcular el recorte en la anchura
left = (original_width - target_width) // 2
right = (original_width + target_width) // 2
# Recortar la imagen manteniendo toda la altura
cropped_image = image.crop((left, 0, right, original_height))
# Redimensionar la imagen manteniendo la relación de aspecto
resized_image = cropped_image.resize((target_width, target_height))
# Guardar la imagen redimensionada
resized_image.save(output_path)
#El código de rgb565_convert está sacado del script de Frogtool (https://github.com/tzlion/frogtool)
def rgb565_convert(src_filename, dest_filename, dest_size=None):
try:
srcimage = Image.open(src_filename)
except (OSError, IOError):
print(f"! Failed opening image file {src_filename} for conversion")
return False
try:
dest_file = open(dest_filename, "wb")
except (OSError, IOError):
print(f"! Failed opening destination file {dest_filename} for conversion")
return False
# convert the image to RGB if it was not already
image = Image.new('RGB', srcimage.size, (0, 0, 0))
image.paste(srcimage, None)
if dest_size and image.size != dest_size:
image = image.resize(dest_size)
image_height = image.size[1]
image_width = image.size[0]
pixels = image.load()
if not pixels:
print(f"! Failed to load image from {src_filename}")
return False
for h in range(image_height):
for w in range(image_width):
pixel = pixels[w, h]
if not type(pixel) is tuple:
print(f"! Unexpected pixel type at {w}x{h} from {src_filename}")
return False
r = pixel[0] >> 3
g = pixel[1] >> 2
b = pixel[2] >> 3
rgb = (r << 11) | (g << 5) | b
dest_file.write(struct.pack('H', rgb))
dest_file.close()
return True
def anade_final(src_filename, nombre_archivo):
with open(src_filename, 'r+b') as file:
content = file.read()
nombre_archivo = nombre_archivo+'.zip'
# Agrega los dos ceros al final del contenido
content_with_zeros = content + b'\x00\x00\x00\x00' + nombre_archivo.encode() + b'\x00\x00'
# Escribe el contenido actualizado en el archivo binario
file.seek(0, os.SEEK_END) # Posicionarse al final del archivo
file.write(content_with_zeros)
file.flush() # Asegurarse de que los cambios se escriban sin cerrar el archivo
def obtener_descripcion_por_nombre_de_juego(nombre_juego, juegos_dict):
return juegos_dict.get(nombre_juego)
def cargar_juegos_descripciones(file_path):
juegos_dict = {}
tree = ET.parse(file_path)
root = tree.getroot()
for juego in root.findall('game'):
nombre_juego = juego.attrib['name']
descripcion = juego.find('description').text
caracteres_prohibidos = r'[<>:"/\\|?*]'
nombre_limpio = re.sub(caracteres_prohibidos, '', descripcion)
juegos_dict[nombre_juego] = nombre_limpio
return juegos_dict
def procesa_archivos(carpeta):
# Obtener el diccionario de juegos y descripciones
juegos_dict = cargar_juegos_descripciones('DataFrog_SF2000_FBA_v0.2.97.42_playable_no_dups.dat')
for archivo in os.scandir(carpeta):
nombre, extension = os.path.splitext(os.path.basename(archivo.path))
ruta = os.path.dirname(archivo.path)
mini = os.path.join(ruta, nombre+'_mini'+extension)
nombre_final = os.path.join(ruta, juegos_dict.get(nombre, 'Unknown') + '.zfb')
temporal = os.path.join(ruta, 'temp.raw')
print('Procesando '+nombre+' con extensión '+extension+' en la ruta '+ruta+' como '+nombre_final)
crop_and_resize_image(archivo.path, mini, target_width, target_height)
rgb565_convert(mini, temporal)
anade_final(temporal, nombre)
os.rename(temporal, nombre_final)
os.remove(mini)
# Ejemplo de uso
target_width = 144
target_height = 208
procesa_archivos('roms')
pjexposito escribió:Hola de nuevo. Os subo el cutre script para transformar el romset de Arcade.
Los pasos son los siguientes (se que no tienen mucho sentido pero no me ha dado tiempo a más):
-Es necesario crear el nuevo romset usando clrmamepro junto con el DAT que os adjunto.
-Utilizando algún scraper (como Skraper 1.1.1), se descargan los screenshots de los juegos.
-Se copia el script de Python en una carpeta junto con el archivo DataFrog_SF2000_FBA_v0.2.97.42_playable_no_dups.dat.
-Se crea una carpeta roms y dentro se incluyen los previews o los screenshots de los juegos (en formato png o jpg). Ojo, no se meten las roms en zip ni nada similar, sólo los png/jpg.
-Se ejecuta el script. Es necesario instalar antes la librería Pillow mediante la ordenpip install pillow
-Este script creará todos los archivos .zfb.
-Se copian los archivos zfb a la carpeta ARCADE de la SD y las roms en zip a la carpeta /ARCADE/bin de la SD.
-Se pasa el frogtool sobre la carpeta ARCADE para generar el listado de roms.
No me deja subir archivos (no se porqué). Os subo el código:from PIL import Image
import struct
import os
import re
import xml.etree.ElementTree as ET
#Generado por ChatGPT
def crop_and_resize_image(input_path, output_path, target_width, target_height):
# Abrir la imagen
image = Image.open(input_path)
# Obtener las dimensiones de la imagen original
original_width, original_height = image.size
# Calcular el recorte en la anchura
left = (original_width - target_width) // 2
right = (original_width + target_width) // 2
# Recortar la imagen manteniendo toda la altura
cropped_image = image.crop((left, 0, right, original_height))
# Redimensionar la imagen manteniendo la relación de aspecto
resized_image = cropped_image.resize((target_width, target_height))
# Guardar la imagen redimensionada
resized_image.save(output_path)
#El código de rgb565_convert está sacado del script de Frogtool (https://github.com/tzlion/frogtool)
def rgb565_convert(src_filename, dest_filename, dest_size=None):
try:
srcimage = Image.open(src_filename)
except (OSError, IOError):
print(f"! Failed opening image file {src_filename} for conversion")
return False
try:
dest_file = open(dest_filename, "wb")
except (OSError, IOError):
print(f"! Failed opening destination file {dest_filename} for conversion")
return False
# convert the image to RGB if it was not already
image = Image.new('RGB', srcimage.size, (0, 0, 0))
image.paste(srcimage, None)
if dest_size and image.size != dest_size:
image = image.resize(dest_size)
image_height = image.size[1]
image_width = image.size[0]
pixels = image.load()
if not pixels:
print(f"! Failed to load image from {src_filename}")
return False
for h in range(image_height):
for w in range(image_width):
pixel = pixels[w, h]
if not type(pixel) is tuple:
print(f"! Unexpected pixel type at {w}x{h} from {src_filename}")
return False
r = pixel[0] >> 3
g = pixel[1] >> 2
b = pixel[2] >> 3
rgb = (r << 11) | (g << 5) | b
dest_file.write(struct.pack('H', rgb))
dest_file.close()
return True
def anade_final(src_filename, nombre_archivo):
with open(src_filename, 'r+b') as file:
content = file.read()
nombre_archivo = nombre_archivo+'.zip'
# Agrega los dos ceros al final del contenido
content_with_zeros = content + b'\x00\x00\x00\x00' + nombre_archivo.encode() + b'\x00\x00'
# Escribe el contenido actualizado en el archivo binario
file.seek(0, os.SEEK_END) # Posicionarse al final del archivo
file.write(content_with_zeros)
file.flush() # Asegurarse de que los cambios se escriban sin cerrar el archivo
def obtener_descripcion_por_nombre_de_juego(nombre_juego, juegos_dict):
return juegos_dict.get(nombre_juego)
def cargar_juegos_descripciones(file_path):
juegos_dict = {}
tree = ET.parse(file_path)
root = tree.getroot()
for juego in root.findall('game'):
nombre_juego = juego.attrib['name']
descripcion = juego.find('description').text
caracteres_prohibidos = r'[<>:"/\\|?*]'
nombre_limpio = re.sub(caracteres_prohibidos, '', descripcion)
juegos_dict[nombre_juego] = nombre_limpio
return juegos_dict
def procesa_archivos(carpeta):
# Obtener el diccionario de juegos y descripciones
juegos_dict = cargar_juegos_descripciones('DataFrog_SF2000_FBA_v0.2.97.42_playable_no_dups.dat')
for archivo in os.scandir(carpeta):
nombre, extension = os.path.splitext(os.path.basename(archivo.path))
ruta = os.path.dirname(archivo.path)
mini = os.path.join(ruta, nombre+'_mini'+extension)
nombre_final = os.path.join(ruta, juegos_dict.get(nombre, 'Unknown') + '.zfb')
temporal = os.path.join(ruta, 'temp.raw')
print('Procesando '+nombre+' con extensión '+extension+' en la ruta '+ruta+' como '+nombre_final)
crop_and_resize_image(archivo.path, mini, target_width, target_height)
rgb565_convert(mini, temporal)
anade_final(temporal, nombre)
os.rename(temporal, nombre_final)
os.remove(mini)
# Ejemplo de uso
target_width = 144
target_height = 208
procesa_archivos('roms')