Otro frente abierto: Saturn

Todavía intento localizar alguna información más. Parece ser que se está portando el emu de SATURN [tadoramo] Yabause a Wii.
Me lo he encotrado en DCEmu.

Por dios que sea cierto y se ventilen pronto el capado a los discos sin código de barras... [babas] [babas] [babas] (hay muchos originales de Saturn en la estantería cogiendo polvo inmerecidamente ;))
Si para correr un emulador de Saturn fluido necesitamos un ordenador de 2020 dudo mucho que haya algo para wii..
Hombre, rular juegos de saturn a resolución nativa y sin efectos lo consiguen PCs bastante "normalitos". A mi me tiraba el giri-giri de puta madre* en mi K7 800 con 512MB de DDR. El Yabause es un emu que lo están portando a todo lo que se traga homebrew y le cabe en memoria. Funcional hay incluso una versión para Dreamcast (aunque de velocidad ni hablamos XD), se está portando también a PSP y me ilusiona un montón ver cómo empieza a crecer en Wii también.
De momento lo único que se puede leer es algo así como "added initial wii suport", espero que con los días se vayan conociendo más datos.

* Dragon Force, Guardian Heroes, el Shining Force disc 3 casi casi... (me acuero de esos)
RoberSolid escribió:Si para correr un emulador de Saturn fluido necesitamos un ordenador de 2020 dudo mucho que haya algo para wii..


No necesariamente... en un PIV con 512MB de RAM y gráfica de 64MB fui capaz de correr el Jet Set Radio de DC a aproximadamente un 80% de velocidad. Digo yo que para la Saturn no se debería necesitar tanto. De hecho, en el ordenador que tengo ahora (que es algo más pepino, pero nada del otro mundo) el Nights me funciona perfectamente y a toda velocidad.
beje escribió:
No necesariamente... en un PIV con 512MB de RAM y gráfica de 64MB fui capaz de correr el Jet Set Radio de DC a aproximadamente un 80% de velocidad. Digo yo que para la Saturn no se debería necesitar tanto. De hecho, en el ordenador que tengo ahora (que es algo más pepino, pero nada del otro mundo) el Nights me funciona perfectamente y a toda velocidad.


lo que pasa esque la Saturn es mas dificil de emular que la dreamcast, se que sorprende pero es cierto

la saturn es bastante mas compleja a la hora de hacer un emulador
beje escribió:
No necesariamente... en un PIV con 512MB de RAM y gráfica de 64MB fui capaz de correr el Jet Set Radio de DC a aproximadamente un 80% de velocidad. Digo yo que para la Saturn no se debería necesitar tanto. De hecho, en el ordenador que tengo ahora (que es algo más pepino, pero nada del otro mundo) el Nights me funciona perfectamente y a toda velocidad.


PARA NADA son comparables los emuladores de dc y de saturn.Un emulador de saturn debe emuladro dos cpus trabajando en paralelo, una gpu y una arkitectura MUY compleja.Si supieseis algo de la emulacion de saturn en pc sabriais que se necesita un ordenador POTENTE para hacerlo funcionar comodamente.Unicamente un emulador, el giri giri hacked consiguio ofrecer una emulacion aproximadamente correcta en pc.El ssf es otro emulador, a años luz del girigiri, que tb carga juegos.Ver un emulador funcional de saturn en otra consola es una tarea TITANICA solo accesible a unos pocos programadores.Emuladores funcionales de psx hay a patadas, en cambio de saturn hay pocos, muy pocos.Sega seria la unica que, con fiabilidad, podria crear un emulador de sega saturn.Otra cosa es que lo hagan XD.

Conociendo como se conoce el hardware de dc veo MUCHO mas factible que en el largo plazo se consiga algo funcional -a nivel de velocidad- en la dc.En wii lo veo muy muy muy muy muy muy complicado.
Todabia guardo mis originales de Daytona y Sega Rally, me gustaria verlos en wii asi como el virtua tennis y varios mas
Yo he programado emuladores basicos(gameboy,nes,master system) en arquitectura pc y te puedo garantizar que emular una saturn es tarea complicada. Si encima hay que adaptarlo a la arquitectura de wii no te digo nada. En resumen: olividate.
Joer con la gente [tomaaa] Con el de gameboy también me atreví yo, hace más de un lustro siguiendo un tutorial de la web de Talfi creo recordar, y después indagando por otros lares. Sé lo jodida que es la arquitectura de Saturn. No seamos tan destructivos con el "esto no llegará a ningún lado". El mero hecho de intentar el port ya es más que plausible. Si los programadores terminan consiguiendo una emulación perfecta pero a 12fps, pues chapó! si no llegan ni a eso, pues ole sus cojones también por haberlo intentado. Hay veces que dejando de lado el pragmatismo se consigue disfrutar más, y se debe reconocer el mérito y el esfuerzo ajeno aunque no repercuta en beneficios personales.

...

[MODO MORALISTA OFENDIDO OFF] XD
Pues precisamente esta mañana estaba aburrido y me puse a probar la nueva versión de yabause.


Esta es la salida del gprof de una ejecución arrancando el story of thor 2 un juego de los más ligeros que tiene saturn,ejecutado desde cue/bin con el plugin de video por soft (es más rapido y compatible que el de opengl,con el plugn de sonido sdl y a fullscreen con resolucion 320*240) :

Profile.txt escribió:Flat profile:

Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls ms/call ms/call name
9.73 15.64 15.64 103728 0.15 0.43 Vdp2DrawPage
7.97 28.45 12.81 14041180 0.00 0.00 SH2InterpreterExec
7.67 40.78 12.33 4486 2.75 3.53 VIDSoftVdp2DrawEnd
6.53 51.28 10.50 335289524 0.00 0.00 DoColorCalcWithColorOffset
5.83 60.66 9.38 9327817 0.00 0.00 Vdp2DrawCell
4.25 67.49 6.83 13834263 0.00 0.00 C68k_Exec
3.62 73.31 5.83 387124487 0.00 0.00 Vdp2ColorRamGetColor
2.64 77.56 4.24 3564 1.19 2.44 Vdp2DrawScrollBitmap
2.59 81.72 4.16 4486 0.93 0.93 Vdp2DrawBackScreen
2.31 85.42 3.71 624903699 0.00 0.00 FetchHWram
2.26 89.06 3.63 4021 0.90 0.90 VIDSoftVdp1EraseFrameBuffer
1.87 92.06 3.00 71856 0.04 0.04 scsp_slot_update_8B_LR
1.82 94.98 2.92 713541875 0.00 0.00 T1ReadByte
1.74 97.78 2.81 335664881 0.00 0.00 vdp2putpixel32
1.72 100.56 2.77 719552793 0.00 0.00 T2ReadWord
1.24 102.56 2.00 5001561 0.00 0.00 SH2idleCheck
1.19 104.47 1.91 59054238 0.00 0.00 SH2addi
1.16 106.33 1.87 100598761 0.00 0.00 MappedMemoryReadLong
1.14 108.17 1.84 47902762 0.00 0.00 SH2movli
1.07 109.89 1.72 91200556 0.00 0.00 Vdp1ProcessSpritePixel
1.07 111.61 1.72 31932 0.05 0.05 scsp_slot_update_F_8B_LR
1.06 113.33 1.71 268006 0.01 0.01 VIDSoftVdp1NormalSpriteDraw
0.89 114.76 1.44 51090533 0.00 0.00 SH2bf
0.84 116.11 1.35 4486 0.30 35.58 YabauseExec
0.82 117.43 1.32 28429295 0.00 0.00 SH2add
0.80 118.72 1.28 35101388 0.00 0.00 SH2tst
0.70 119.84 1.12 9039619 0.00 0.00 SH2idleParse
0.70 120.96 1.12 14041180 0.00 0.00 FRTExec
0.69 122.06 1.10 128202739 0.00 0.00 Vdp1ReadPattern16
0.69 123.17 1.10 35978488 0.00 0.00 SH2movwl
0.63 124.18 1.01 23036597 0.00 0.00 SH2cmpge
0.62 125.17 0.99 387124487 0.00 0.00 T2ReadWord
0.61 126.16 0.98 34829173 0.00 0.00 SH2bt
0.58 127.10 0.94 61940012 0.00 0.00 MappedMemoryReadWord
0.55 127.98 0.89 43556805 0.00 0.00 SH2delay
0.51 128.81 0.82 25465620 0.00 0.00 SH2movi
0.50 129.62 0.81 26439937 0.00 0.00 T1ReadWord


Como podeis ver la mayoría del tiempo se lo pasa emulando el vdp2 y los sh2's (Diría que se lleva más trozo del pastel el vdp2 por que además hay que sumarle la parte del plugin grafico por software ).

Se me olvidó comentar mi máquina es un athlon 1300xp con 256 de memoria ddr una máquina más que modesta y el story of thor 2 se juega casi casi a la perfección.

Yo creo que ni el autor del emulador ni los ingenieros de nintendo saben si es posible o no la emulación de saturn.

Yo digo que con algunos juegos posiblemente si veamos a la wii corriendolos a velocidad completa y quizás con otros más virgueros nos quedemos con las ganas (aún tengo que probar el radiant pero el guardian heroes va algo lento a parte de tener algunos gliches ,aunque cada vez menos).

Link al archivo completo:
http://omploader.org/vZW5v/profile.txt
dios!!!! que sea cierto!!!! daytona!!!!!!
Antes de portar un emulador se evalua si es viable. Portar un emulador para solo poder correr un puzzle bobble o mover los demas a 5 fps no lo es. Arquitecturas del tipo snes,md,8 bits,,n64,dreamcast,psx tienen muchas papeletas de ser podidas emular al casi 100% con las especificaciones de wii. La saturn es EXTREMADAMENTE compleja de emular. Un caso similar es el de gamecube.
Bueno sino nos conformamos con un emulador de psx, que los que ya hay estan muy optimizados ;)
Ha salido una nueva versión de Yabause, la 0.9.5 en concreto.
Me enteré ayer pero no la he probado en ninguna de sus versiones.

Según leo en Tehskeen, en cuanto a las novedades se lee lo siguiente con respecto al port de wii:

wii port:
- Added support for bios and game loading from sd card.
- Added sound support.
- Added usb keyboard support.


¬_¬

¿De verdad es así de "funcional" ya? (para mí, si es cierto, mucho es a día de hoy).


A ver si alguien tiene un momento y es tan apañado de compilar el source de la versión wii para curiosear lo que hace el "emu" de marras.


http://yabause.org/download/



Vamos, que me suena a coña.

EDIT:

No es tan simple como hacer make y ya está :S

$ make
bios.c
cdbase.c
cdbase.c: In function 'ISOCDReadSectorFAD':
cdbase.c:439: warning: 'sector' may be used uninitialized in this function
cheat.c
cheat.c: In function 'CheatAddARCode':
cheat.c:83: warning: format '%08lX' expects type 'long unsigned int *', but argu
ment 3 has type 'u32 *'
cheat.c: In function 'CheatRemoveARCode':
cheat.c:185: warning: format '%08lX' expects type 'long unsigned int *', but arg
ument 3 has type 'u32 *'
coffelf.c
cs0.c
cs1.c
cs2.c
debug.c
debug.c: In function 'DebugPrintf':
debug.c:134: warning: format '%ld' expects type 'long int', but argument 5 has t
ype 'u32'
debug.c:143: warning: format '%ld' expects type 'long int', but argument 5 has t
ype 'u32'
debug.c:151: warning: format '%ld' expects type 'long int', but argument 5 has t
ype 'u32'
error.c
error.c: In function 'YabSetError':
error.c:91: warning: format '%08lX' expects type 'long unsigned int', but argume
nt 4 has type 'unsigned int'
error.c:91: warning: format '%08lX' expects type 'long unsigned int', but argume
nt 5 has type 'unsigned int'
error.c:91: warning: format '%08lX' expects type 'long unsigned int', but argume
nt 6 has type 'unsigned int'
error.c:91: warning: format '%08lX' expects type 'long unsigned int', but argume
nt 7 has type 'unsigned int'
error.c:91: warning: format '%08lX' expects type 'long unsigned int', but argume
nt 8 has type 'unsigned int'
error.c:91: warning: format '%08lX' expects type 'long unsigned int', but argume
nt 9 has type 'unsigned int'
error.c:91: warning: format '%08lX' expects type 'long unsigned int', but argume
nt 10 has type 'unsigned int'
error.c:91: warning: format '%08lX' expects type 'long unsigned int', but argume
nt 11 has type 'unsigned int'
error.c:91: warning: format '%08lX' expects type 'long unsigned int', but argume
nt 12 has type 'unsigned int'
error.c:91: warning: format '%08lX' expects type 'long unsigned int', but argume
nt 13 has type 'u32'
error.c:91: warning: format '%08lX' expects type 'long unsigned int', but argume
nt 14 has type 'unsigned int'
error.c:91: warning: format '%08lX' expects type 'long unsigned int', but argume
nt 15 has type 'u32'
error.c:91: warning: format '%08lX' expects type 'long unsigned int', but argume
nt 16 has type 'unsigned int'
error.c:91: warning: format '%08lX' expects type 'long unsigned int', but argume
nt 17 has type 'u32'
error.c:91: warning: format '%08lX' expects type 'long unsigned int', but argume
nt 18 has type 'unsigned int'
error.c:91: warning: format '%08lX' expects type 'long unsigned int', but argume
nt 19 has type 'u32'
error.c:91: warning: format '%08lX' expects type 'long unsigned int', but argume
nt 20 has type 'unsigned int'
error.c:91: warning: format '%08lX' expects type 'long unsigned int', but argume
nt 21 has type 'u32'
error.c:91: warning: format '%08lX' expects type 'long unsigned int', but argume
nt 22 has type 'unsigned int'
error.c:91: warning: format '%08lX' expects type 'long unsigned int', but argume
nt 23 has type 'u32'
error.c:91: warning: format '%08lX' expects type 'long unsigned int', but argume
nt 24 has type 'unsigned int'
error.c:91: warning: format '%08lX' expects type 'long unsigned int', but argume
nt 25 has type 'u32'
error.c:91: warning: format '%08lX' expects type 'long unsigned int', but argume
nt 26 has type 'unsigned int'
m68kcore.c
m68kc68k.c
m68kd.c
memory.c
memory.c: In function 'SearchString':
memory.c:1252: warning: pointer targets in passing argument 1 of 'strcpy' differ
in signedness
memory.c:1237: warning: unused variable 'lastval'
memory.c: In function 'MappedMemorySearch':
memory.c:1398: warning: format '%08lx' expects type 'long unsigned int *', but a
rgument 3 has type 'u32 *'
netlink.c
netlink.c: In function 'NetlinkDoATResponse':
netlink.c:199: warning: pointer targets in passing argument 1 of 'strcpy' differ
in signedness
netlink.c: In function 'NetlinkFetchATParameter':
netlink.c:210: warning: value computed is not used
netlink.c: In function 'NetlinkWriteByte':
netlink.c:247: warning: pointer targets in passing argument 1 of 'strncmp' diffe
r in signedness
netlink.c:248: warning: pointer targets in passing argument 1 of 'strncmp' diffe
r in signedness
netlink.c:258: warning: pointer targets in passing argument 1 of 'NetlinkDoATRes
ponse' differ in signedness
peripheral.c
profile.c
scsp.c
scsp.c: In function 'ScspExec':
scsp.c:3036: warning: pointer targets in passing argument 2 of 'SNDCore->UpdateA
udio' differ in signedness
scsp.c: In function 'ScspSlotDebugStats':
scsp.c:3565: warning: format '%05lX' expects type 'long unsigned int', but argum
ent 3 has type 'u32'
scsp.c:3566: warning: format '%04lX' expects type 'long unsigned int', but argum
ent 3 has type 'u32'
scsp.c:3567: warning: format '%04lX' expects type 'long unsigned int', but argum
ent 3 has type 'u32'
scsp.c:3568: warning: format '%ld' expects type 'long int', but argument 3 has t
ype 's32'
scsp.c:3569: warning: format '%ld' expects type 'long int', but argument 3 has t
ype 's32'
scsp.c:3574: warning: format '%ld' expects type 'long int', but argument 3 has t
ype 's32'
scsp.c:3583: warning: format '%ld' expects type 'long int', but argument 3 has t
ype 'u32'
scsp.c:3587: warning: format '%ld' expects type 'long int', but argument 3 has t
ype 's32'
scsp.c:3599: warning: format '%ld' expects type 'long int', but argument 3 has t
ype 's32'
scsp.c: In function 'ScspCommonControlRegisterDebugStats':
scsp.c:3639: warning: format '%ld' expects type 'long int', but argument 3 has t
ype 'u32'
scsp.c:3640: warning: format '%ld' expects type 'long int', but argument 3 has t
ype 'u32'
scsp.c:3641: warning: format '%08lX' expects type 'long unsigned int', but argum
ent 3 has type 'u32'
scsp.c:3646: warning: format '%ld' expects type 'long int', but argument 3 has t
ype 'u32'
scsp.c:3647: warning: format '%ld' expects type 'long int', but argument 3 has t
ype 'u32'
scsp.c:3652: warning: format '%08lX' expects type 'long unsigned int', but argum
ent 3 has type 'u32'
scsp.c:3653: warning: format '%08lX' expects type 'long unsigned int', but argum
ent 3 has type 'u32'
scsp.c:3654: warning: format '%lX' expects type 'long unsigned int', but argumen
t 3 has type 'u32'
scsp.c:3659: warning: format '%02lX' expects type 'long unsigned int', but argum
ent 3 has type 's32'
scsp.c:3661: warning: format '%02lX' expects type 'long unsigned int', but argum
ent 3 has type 's32'
scsp.c:3663: warning: format '%02lX' expects type 'long unsigned int', but argum
ent 3 has type 's32'
scsp.c:3669: warning: format '%04lX' expects type 'long unsigned int', but argum
ent 3 has type 'u32'
scsp.c:3670: warning: format '%04lX' expects type 'long unsigned int', but argum
ent 3 has type 'u32'
scsp.c:3671: warning: format '%04lX' expects type 'long unsigned int', but argum
ent 3 has type 'u32'
scsp.c:3672: warning: format '%04lX' expects type 'long unsigned int', but argum
ent 3 has type 'u32'
scsp.c:3673: warning: format '%04lX' expects type 'long unsigned int', but argum
ent 3 has type 'u32'
scsp.c:3674: warning: format '%04lX' expects type 'long unsigned int', but argum
ent 3 has type 'u32'
scsp.c:3675: warning: format '%04lX' expects type 'long unsigned int', but argum
ent 3 has type 'u32'
scsp.c: In function 'ScspSlotDebugAudio':
scsp.c:3709: warning: pointer targets in assignment differ in signedness
scsp.c:3710: warning: pointer targets in assignment differ in signedness
scu.c
sh2core.c
sh2idle.c
sh2idle.c: In function 'SH2idleCheckIterate':
sh2idle.c:109: warning: suggest parentheses around + or - inside shift
sh2idle.c:155: warning: suggest parentheses around + or - inside shift
sh2idle.c:159: warning: suggest parentheses around + or - inside shift
sh2idle.c:337: warning: suggest parentheses around + or - inside shift
sh2idle.c:399: warning: suggest parentheses around + or - inside shift
sh2idle.c:400: warning: suggest parentheses around + or - inside shift
sh2idle.c: In function 'SH2idleCheck':
sh2idle.c:461: warning: unused variable 'i'
sh2idle.c: At top level:
sh2idle.c:434: warning: 'oldLoopBegin' defined but not used
sh2idle.c:435: warning: 'idleCheckCount' defined but not used
sh2idle.c:436: warning: 'sh2cycleCount' defined but not used
sh2idle.c:437: warning: 'sh2oldCycleCount' defined but not used
sh2idle.c:438: warning: 'oldCheckCount' defined but not used
sh2int.c
sh2d.c
smpc.c
vdp1.c
vdp2.c
vdp2.c: In function 'AddColorOffsetInfo':
vdp2.c:1577: warning: format '%ld' expects type 'long int', but argument 3 has t
ype 's32'
vdp2.c:1577: warning: format '%ld' expects type 'long int', but argument 4 has t
ype 's32'
vdp2.c:1577: warning: format '%ld' expects type 'long int', but argument 5 has t
ype 's32'
vdp2.c:1594: warning: format '%ld' expects type 'long int', but argument 3 has t
ype 's32'
vdp2.c:1594: warning: format '%ld' expects type 'long int', but argument 4 has t
ype 's32'
vdp2.c:1594: warning: format '%ld' expects type 'long int', but argument 5 has t
ype 's32'
vdp2.c: In function 'Vdp2DebugStatsGeneral':
vdp2.c:2739: warning: format '%08lX' expects type 'long unsigned int', but argum
ent 3 has type 'u32'
vidshared.c
vidsoft.c
vidsoft.c: In function 'VIDSoftVdp2DrawEnd':
vidsoft.c:2832: warning: implicit declaration of function 'YuiSwapBuffers'
vidsoft.c: At top level:
vidsoft.c:160: warning: 'outputwidth' defined but not used
vidsoft.c:161: warning: 'outputheight' defined but not used
vidsoft.c: In function 'Vdp2DrawScroll':
vidsoft.c:621: warning: 'clip[0].xstart' may be used uninitialized in this funct
ion
vidsoft.c:621: warning: 'clip[0].ystart' may be used uninitialized in this funct
ion
vidsoft.c:621: warning: 'clip[0].xend' may be used uninitialized in this functio
n
vidsoft.c:621: warning: 'clip[0].yend' may be used uninitialized in this functio
n
vidsoft.c:621: warning: 'clip[1].xstart' may be used uninitialized in this funct
ion
vidsoft.c:621: warning: 'clip[1].ystart' may be used uninitialized in this funct
ion
vidsoft.c:621: warning: 'clip[1].xend' may be used uninitialized in this functio
n
vidsoft.c:621: warning: 'clip[1].yend' may be used uninitialized in this functio
n
vidsoft.c:630: warning: 'linewnd0addr' may be used uninitialized in this functio
n
vidsoft.c:630: warning: 'linewnd1addr' may be used uninitialized in this functio
n
vidsoft.c: In function 'VIDSoftVdp2DrawEnd':
vidsoft.c:2677: warning: 'priority' may be used uninitialized in this function
yabause.c
ygl.c
c68k.c
powerpc-gekko-gcc -DPACKAGE=\"yabause-wii\" -DVERSION=\"0.9.5\" -DWORDS_BIGENDIA
N -DREENTRANT_SYSCALLS_PROVIDED  -mrvl -Wall -DGEKKO -mcpu=750 -meabi -mhard-flo
at -I/c/devkitPro/libogc/include -c c68k/c68kexec.c -o c68k/c68kexec.o
c68k/c68kexec.c:250:28: error: c68k_op0.inc: No such file or directory
c68k/c68kexec.c:251:28: error: c68k_op1.inc: No such file or directory
c68k/c68kexec.c:252:28: error: c68k_op2.inc: No such file or directory
c68k/c68kexec.c:253:28: error: c68k_op3.inc: No such file or directory
c68k/c68kexec.c:254:28: error: c68k_op4.inc: No such file or directory
c68k/c68kexec.c:255:28: error: c68k_op5.inc: No such file or directory
c68k/c68kexec.c:256:28: error: c68k_op6.inc: No such file or directory
c68k/c68kexec.c:257:28: error: c68k_op7.inc: No such file or directory
c68k/c68kexec.c:258:28: error: c68k_op8.inc: No such file or directory
c68k/c68kexec.c:259:28: error: c68k_op9.inc: No such file or directory
c68k/c68kexec.c:260:28: error: c68k_opA.inc: No such file or directory
c68k/c68kexec.c:261:28: error: c68k_opB.inc: No such file or directory
c68k/c68kexec.c:262:28: error: c68k_opC.inc: No such file or directory
c68k/c68kexec.c:263:28: error: c68k_opD.inc: No such file or directory
c68k/c68kexec.c:264:28: error: c68k_opE.inc: No such file or directory
c68k/c68kexec.c:265:28: error: c68k_opF.inc: No such file or directory
c68k/c68kexec.c:290:32: error: c68k_ini.inc: No such file or directory
c68k/c68kexec.c: In function 'C68k_Exec':
c68k/c68kexec.c:288: warning: unused variable 'j'
c68k/c68kexec.c:288: warning: unused variable 'i'
c68k/c68kexec.c:278: warning: label 'C68k_Exec_Really_End' defined but not used
c68k/c68kexec.c:270: warning: label 'C68k_Exec_End' defined but not used
c68k/c68kexec.c:232: warning: label 'C68k_Exec' defined but not used
make: *** [c68k/c68kexec.o] Error 1


Por mi parte lo dejo hasta mañana. Ya veremos qué pasa con esto.
14 respuestas