libretro / mame2003-plus-libretro

Updated 2018 version of MAME (0.78) for libretro. with added game support plus many fixes and improvements
Other
193 stars 110 forks source link

Add a Nintendo Wii version of MAME 2003 Plus to official RA Wii? (with split cores) #1416

Open saulfabregwiivc opened 2 years ago

saulfabregwiivc commented 2 years ago

Look here: https://github.com/libretro/mame2003-plus-libretro/issues/247

Any chnace we can also play arcade games on Wii using the MAME2003+ emulator, but splitted in different cores?

Thanks :)

mahoneyt944 commented 2 years ago

We would gladly support split cores for the Wii, however I do not believe we currently have a dev with this system to help get it up and running. I believe there is however a mame2003+ wii project available elsewhere which maybe a good resource for us here to support it officially.

saulfabregwiivc commented 2 years ago

We would gladly support split cores for the Wii, however I do not believe we currently have a dev with this system to help get it up and running. I believe there is however a mame2003+ wii project available elsewhere which maybe a good resource for us here to support it officially.

Maybe this avaliable "Unofficial" MAME2003+ cores by Wiimpathy (with source code included) is what you're looking for?: https://gbatemp.net/threads/mame-2003-plus.499497/

MistyDreams commented 2 years ago

You know since you guys are promoting the core and setting the targets on low end targets you should actually make these low end targets work for these platforms.

psp, wii and possibly will need the core split up no point in keeping low end hardware attitudes to updates if people on this low end hardware cant use the cores in the first place.

You also need to do some memory tricks for bigger games to work as well. Would be best if it was done in a sensible way that didnt mess capable platforms that have enough memory or youll end up with more slow downs than gains on more capable platforms.

I would have in the past suggested to do so this on mame2000/mame4all but seems its viable for this core after a few discussions.

A few cpu cores could be simplified and downgraded to make things faster of course compatibility will take a dive but backporting the 2000 cpu cores will boost these ole platforms and thats the aim of the game. The 68k has a definitive boost on mame2000. I wouldnt imagine this would cause any issues as its a pretty solid core even back then.

mahoneyt944 commented 1 year ago

@saulfabregwiivc I saw you started a fork for this. If you split the cores in a sensible way, we'd be able to build the wii cores here without effecting other platforms with the nightly buildbot. For example only create split cores for Wii so they can share the same driver/ makefile/includes etc. Other words, if Wii then designate split cores otherwise don't split. That way Wii can be just another regular built platform here nightly.

https://github.com/saulfabregwiivc/MAME2003-Plus-Libretro-Wii

saulfabregwiivc commented 1 year ago

@mahoneyt944 yeah i'm aware of this, i'm trying to implement Wiimpathy's modifications for get MAME2003+ working on Wii, but this time i cloned official latest Libretro upstream for try to add these.

Unfortunately the new code doesn't compile the same way as the older MAME2003+ Wii cores compiled. I tried to ask on RetroArch official Discord for see if anyone can help for fix compilation of new MAME2003+ code on Wii, but i didn't get any response nor help.

To be specific: These errors throw me when i link to RetroArch Salamander with Makefile.griffin on Wii mode: image

I think it's related to core code and not the Salamander/Griffin itself.

If anyone want to help me with supporting latest MAME2003+ on Wii, feel free to collaborate and add PRs to my repo.

mahoneyt944 commented 1 year ago

Those errors are because you are missing files needed such as pacman_vidhrdw.c. I'm guessing you used an old reference when making your make file and Wii driver. Some of these files changed so you'll have to patch the current list with the split core changes

saulfabregwiivc commented 1 year ago

@mahoneyt944

Ok, i have fixed some things, first i'm starting with the first split core (core A) for testing. Now i have linked all the required files of the drivers in order for compile, but now i still get some stupid WPAD (libwiiuse) errors when trying to link. See picture below:

image

I was going to ask: what libOGC version are you using for Wii builds? I'm interested in know what version so i can compile this correctly. Or is there any way for fix this stupid issue when compiling for Wii? Thanks ;)

mahoneyt944 commented 1 year ago

I don't compile locally. However this info should be available through the buildbot. Here's the commit when I removed Wii from our build https://github.com/libretro/mame2003-plus-libretro/commit/dfd49d647fb500aebae18f07985c9752c31e42d0

These linked scripts should contain everything you need. https://github.com/libretro/RetroArch/tree/master/wii/libogc

mahoneyt944 commented 1 year ago

It looks like libOGC Release 1.8.17 if I'm reading that correctly

saulfabregwiivc commented 1 year ago

nope, still errors at WPAD.

saulfabregwiivc commented 1 year ago

After a brief tests with RetroArch code i can compile the other unmodified cores supported by the Wii without any trouble. I compiled successfully:

I think MAME2003+ has some code that causes conflict with WPAD input/declaration? Any way for fix that issue on MAME2003+ code? Thanks a lot! :)

mahoneyt944 commented 1 year ago

Let me reach out and see if I can find someone who has more Wii compiling experience.

mahoneyt944 commented 1 year ago

Still waiting on some responses, have you tried compiling with -fPIC

mahoneyt944 commented 1 year ago

Here's a response I got from jd regarding this issue:

I've never seen that particular error before, but it seems to be this: https://www.technovelty.org/c/relocation-truncated-to-fit-wtf.html Basically means that your program is too large I see people suggesting the following build flags (but these all reduce performance):

-mcmodel=medium

or

-Wl,--default-image-base-low

But I guess it depends on whether the wii toolchain supports those options... (Note that you can't use -fPIC with -mcmodel=medium)

saulfabregwiivc commented 1 year ago

Still waiting on some responses, have you tried compiling with -fPIC

Tried to add the -fPIC flag to the Wii section of makefile, in the "PLATCFLAGS" section, as shown:

Nintendo Wii

else ifeq ($(platform), wii) include $(DEVKITPPC)/wii_rules TARGET := $(TARGETNAME)$(SUBTARGET)libretro$(platform).a BIGENDIAN = 1 CC = $(DEVKITPPC)/bin/powerpc-eabi-gcc$(EXE_EXT) AR = $(DEVKITPPC)/bin/powerpc-eabi-ar$(EXE_EXT) PLATCFLAGS += -DGEKKO -mrvl -mcpu=750 -meabi -mhard-float -fPIC -Dppc -DPOWERPC CFLAGS += -I$(LIBOGC_INC) -I$(DEVKITPRO)/libogc/include -I$(DEVKITPRO)/libogc/include/ogc/machine PLATCFLAGS += -UINT32_TYPE -U UINT32_TYPE -D__INT32_TYPE__=int PLATCFLAGS += -fsigned-char -D$(SUBTARGET) STATIC_LINKING = 1

But it gives me the same result (error at WPAD), also the core library (.a file) is much larger than without the flag... even if using dkPPC r29.

mahoneyt944 commented 1 year ago

Fpic likely not correct then, how about jd's advice?

mahoneyt944 commented 1 year ago

@saulfabregwiivc I stripped the drivers from the core and left only cclimber as in one game only. Then with some persistence, I was able to build it on the buildbot. Note this is just a test dummy, proof of concept, to see if cclimber will work on the wii. See if this works for you. You can download it here from the buildbot. https://git.libretro.com/libretro/mame2003-plus-libretro/-/jobs/3482325

Or download it below artifacts.zip

Can you test and let me know?

saulfabregwiivc commented 1 year ago

@saulfabregwiivc I stripped the drivers from the core and left only cclimber as in one game only. Then with some persistence, I was able to build it on the buildbot. Note this is just a test dummy, proof of concept, to see if cclimber will work on the wii. See if this works for you. You can download it here from the buildbot. https://git.libretro.com/libretro/mame2003-plus-libretro/-/jobs/3482325

Or download it below artifacts.zip

Can you test and let me know?

I have tested this build with that game and it boots fine, but input is all messed up, and the game physics aren't the correct. Some buttons/joystick directions aren't mapped, making the game (almost) unplayable. Is it expected for an old version of MAME (0.78)? Here's a video of how the input and physics of the game works: https://www.youtube.com/watch?v=7lMKC1FZBTs

Also, i'm forced to used Classic Controller/GCN controller, but can i just change the input to Wiimote only?

In other words, we are close, but not quite there yet. But the .dol you sent me works fine, only thing not working correctly are the inputs and/or the physics for that game on MAME2003+ (cclimber - Crazy Climber).

I bet other games have good input, so can I ask you to compile a version with driver dkong? (This one i know the input works fine on MAME2003+ Wii unofficial core by Wiimpathy)

mahoneyt944 commented 1 year ago

Crazy climber is a game I happen to own which is why I picked it. It's not a game that would map well to a Wii mote since you need dual joysticks to play it, though I believe it could be played with the nunchuck attachment and dpad of the remote maybe? But never the less, it was a proof of concept...If it actually booted a game we're looking good 👍. I'm working on creating split cores to contain the full library. Though it's going to take me some time to divide things out. So updates to come soon.

mahoneyt944 commented 1 year ago

heres another file to try out with some more games. Pacman should be basic enough control wise. some of the roms may have had updates so make sure to use the correct romset as well. artifacts.zip

game list:

    DRIVER( puckman )   /* (c) 1980 Namco */
    DRIVER( puckmana )  /* (c) 1980 Namco */
    DRIVER( pacman )    /* (c) 1980 Midway */
    DRIVER( pacmanf )   /* hack (speedup) */
    DRIVER( puckmod )   /* (c) 1981 Namco */
    DRIVER( pacmod )    /* (c) 1981 Midway */
    DRIVER( hangly )    /* hack */
    DRIVER( hangly2 )   /* hack */
    DRIVER( hangly3 )   /* hack */
    DRIVER( newpuckx )  /* hack */
    DRIVER( pacheart )  /* hack */
    DRIVER( joyman  )   /* hack */
    DRIVER( newpuc2 )   /* hack */
    DRIVER( newpuc2b )  /* hack */
    DRIVER( piranha )   /* GL */
    DRIVER( piranhao )  /* GL */
    DRIVER( piranhah )  /* hack */
    DRIVER( nmouse )    /* (c) 1981 Amenip (Palcom Queen River) */
    DRIVER( nmouseb )   /* (c) 1981 Amenip Nova Games Ltd. */
    DRIVER( woodpeck )  /* (c) 1981 Amenip (Palcom Queen River) set 1 */
    DRIVER( woodpeca )  /* (c) 1981 Amenip (Palcom Queen River) set 2 */
    DRIVER( pacplus )
    DRIVER( mspacman )  /* (c) 1981 Midway */   /* made by Gencomp */
    DRIVER( mspacmnf )  /* hack (speedup) */
    DRIVER( mspacmab )  /* bootleg */
    DRIVER( mspacmat )  /* hack */
    DRIVER( mspacpls )  /* hack */
    DRIVER( pacgal )    /* hack */
    DRIVER( mschamp )   /* hack */
    DRIVER( mspactwin ) /* hack */
    DRIVER( maketrax )  /* (c) 1981 Williams, high score table says KRL (fur Kural) */
    DRIVER( maketrxb )  /* (c) 1981 [Kural] (Williams license) */
    DRIVER( korosuke )  /* (c) 1981 Kural Electric */
    DRIVER( crush )     /* (c) 1981 Kural Samno Electric Ltd */
    DRIVER( crush2 )    /* (c) 1981 Kural Esco Electric Ltd - bootleg? */
    DRIVER( crush3 )    /* Kural Electric Ltd - bootleg? */
    DRIVER( mbrush )    /* 1981 bootleg */
    DRIVER( paintrlr )  /* 1981 bootleg */
    DRIVER( eyes )      /* (c) 1982 Digitrex Techstar + "Rockola presents" */
    DRIVER( eyes2 )     /* (c) 1982 Techstar + "Rockola presents" */
    DRIVER( mrtnt )     /* (c) 1983 Telko */
    DRIVER( gorkans )   /* (c) 1984 Techstar */
    DRIVER( eggor )     /* (c) 1983 Telko */
    DRIVER( ponpoko )   /* (c) 1982 Sigma Ent. Inc. */
    DRIVER( ponpokov )  /* (c) 1982 Sigma Ent. Inc. + Venture Line license */
    DRIVER( lizwiz )    /* (c) 1985 Techstar + "Sunn presents" */
    DRIVER( theglobp )  /* (c) 1983 Epos Corporation */
    DRIVER( beastf )    /* (c) 1984 Epos Corporation */
    DRIVER( acitya )    /* (c) 1983 Epos Corporation */
    DRIVER( bwcasino )  /* (c) 1983 Epos Coropration */
    DRIVER( dremshpr )  /* (c) 1982 Sanritsu */
    DRIVER( vanvan )    /* (c) 1983 Sanritsu */
    DRIVER( vanvank )   /* (c) 1983 Karateco (bootleg?) */
    DRIVER( alibaba )   /* (c) 1982 Sega */
    DRIVER( alibabab )  /* (c) 1982 Sega (bootleg) */
    DRIVER( jrpacman )  /* (c) 1983 Midway */
    DRIVER( jrpacmnf )  /* hack */
    DRIVER( jumpshot )  /* (c) 1985 Bally Midway */
    DRIVER( shootbul )  /* (c) 1985 Bally Midway */
    DRIVER( bigbucks )  /* (c) 1986 Dynasoft Inc. */

    /* S2650 Pacman Kits */
    DRIVER( drivfrcp )  /* (c) 1984 Shinkai Inc. (Magic Eletronics Inc. licence) */
    DRIVER( 8bpm )      /* (c) 1985 Seatongrove Ltd (Magic Eletronics USA licence) */
    DRIVER( porky )     /* (c) 1985 Shinkai Inc. (Magic Eletronics Inc. licence) */

    /* Epos games */
    DRIVER( megadon )   /* (c) 1982 */
    DRIVER( catapult )  /* (c) 1982 */
    DRIVER( eeekk )     /* (c) 1983 */
    DRIVER( suprglob )  /* (c) 1983 */
    DRIVER( theglob )   /* (c) 1983 */
    DRIVER( theglob2 )  /* (c) 1983 */
    DRIVER( theglob3 )  /* (c) 1983 */
    DRIVER( igmo )      /* (c) 1984 */
    DRIVER( dealer )    /* (c) 198? */

    /* "Galaxian hardware" games */
    DRIVER( galaxian )  /* (c) Namco */
    DRIVER( galaxiaj )  /* (c) Namco */
    DRIVER( galmidw )   /* (c) Midway */
    DRIVER( galmidwo )  /* (c) Midway */
    DRIVER( superg )    /* hack */
    DRIVER( galapx )    /* hack */
    DRIVER( moonaln )   /* [Nichibutsu] (Karateco license) or hack */
    DRIVER( galap1 )    /* hack */
    DRIVER( galap4 )    /* hack */
    DRIVER( galturbo )  /* hack */
    DRIVER( swarm )     /* hack */
    DRIVER( zerotime )  /* hack */
    DRIVER( tst_galx )
    DRIVER( gmgalax )   /* bootleg */
    DRIVER( pisces )    /* Subelectro */
    DRIVER( piscesb )   /* bootleg */
    DRIVER( uniwars )   /* (c) Irem */
    DRIVER( gteikoku )  /* (c) Irem */
    DRIVER( gteikokb )  /* bootleg */
    DRIVER( gteikob2 )  /* bootleg */
    DRIVER( spacbatt )  /* bootleg */
    DRIVER( skyraidr )  /* bootleg */
    DRIVER( batman2 )   /* bootleg */
    DRIVER( warofbug )  /* (c) 1981 Armenia */
    DRIVER( redufo )    /* bootleg - original should be (c) Artic */
    DRIVER( exodus )    /* Subelectro - bootleg? */
    DRIVER( streakng )  /* [1980] Shoei */
    DRIVER( pacmanbl )  /* bootleg */
    DRIVER( devilfsg )  /* (c) 1984 Vision / Artic (bootleg?) */
    DRIVER( zigzag )    /* (c) 1982 LAX */
    DRIVER( zigzag2 )   /* (c) 1982 LAX */
    DRIVER( jumpbug )   /* (c) 1981 Rock-ola */
    DRIVER( jumpbugb )  /* (c) 1981 Sega */
    DRIVER( levers )    /* (c) 1983 Rock-ola */
    DRIVER( azurian )   /* (c) 1982 Rait Electronics Ltd */
    DRIVER( orbitron )  /* Signatron USA */
    DRIVER( mooncrgx )  /* bootleg */
    DRIVER( mooncrst )  /* (c) 1980 Nichibutsu */
    DRIVER( mooncrsu )  /* (c) 1980 Nichibutsu USA */
    DRIVER( mooncrsa )  /* (c) 1980 Nichibutsu */
    DRIVER( mooncrsg )  /* (c) 1980 Gremlin */
    DRIVER( smooncrs )  /* Gremlin */
    DRIVER( mooncrsb )  /* bootleg */
    DRIVER( mooncrs2 )  /* bootleg */
    DRIVER( fantazia )  /* bootleg */
    DRIVER( moonqsr )   /* (c) 1980 Nichibutsu */
    DRIVER( mshuttle )  /* (c) 1980 Nichibutsu */
    DRIVER( mshuttlj )  /* (c) 1980 Nichibutsu */
    DRIVER( moonal2 )   /* Nichibutsu */
    DRIVER( moonal2b )  /* Nichibutsu */
    DRIVER( eagle )     /* (c) Centuri */
    DRIVER( eagle2 )    /* (c) Centuri */
    DRIVER( skybase )   /* (c) 1982 Omori Electric Co., Ltd. */
    DRIVER( checkman )  /* (c) 1982 Zilec-Zenitone */
    DRIVER( checkmaj )  /* (c) 1982 Jaleco (Zenitone/Zilec in ROM CM4, and the programmer names) */
    DRIVER( dingo )     /* (c) 1983 Ashby Computers and Graphics LTD. + Jaleco license */
    DRIVER( blkhole )   /* TDS (Tokyo Denshi Sekkei) */
    DRIVER( kingball )  /* (c) 1980 Namco */
    DRIVER( kingbalj )  /* (c) 1980 Namco */
    DRIVER( scorpnmc )  /* bootleg */
    DRIVER( frogg )     /* bootleg */
    DRIVER( 4in1 )      /* (c) 1981 Armenia / Food and Fun */
    DRIVER( bagmanmc )  /* bootleg */
    DRIVER( dkongjrm )  /* bootleg */
    DRIVER( ozon1 )     /* (c) 1983 Proma */
    DRIVER( ladybugg )  /* bootleg */
    DRIVER( vpool )     /* bootleg */
    DRIVER( drivfrcg )  /* Shinkai */
saulfabregwiivc commented 1 year ago

Tested this new build today. I only have tested a few games of the list but all of these i have tested booted fine and played fine too. Only issue i've found, that in some games when i press the credits button (in my case the SELECT (-) button on Wii Classic Controller) acts like a cuckoo crazy: 1st press = one credit (fine) 2nd press = another credit but also starts a 2-player game?! (isn't it supposed to just insert another credit?)

Also, still im forced to use Wii Classic Controller / GCN controller. Can't i just use Wiimote since some arcade games don't even need so many buttons?

mahoneyt944 commented 1 year ago

Try deleting your default.cfg file it will auto create a new one on next load. You may have an old one thats not compatible causing issues. likely if you've been using the old wii core. otherwise I would check the mame menu mappings to see that it's what you expect.

mahoneyt944 commented 1 year ago

good news though with the latest core. im going to continue to work on dividing out drivers

mahoneyt944 commented 1 year ago

btw on average how big were the mame2003+ cores Wiimpathy's made? I saw mame2000 was about 12mb I think so I've been trying to stay under that when building these here.

saulfabregwiivc commented 1 year ago

Try deleting your default.cfg file it will auto create a new one on next load. You may have an old one thats not compatible causing issues. likely if you've been using the old wii core. otherwise I would check the mame menu mappings to see that it's what you expect.

i will try your suggestion and tell the results.

btw on average how big were the mame2003+ cores Wiimpathy's made? I saw mame2000 was about 12mb I think so I've been trying to stay under that when building these here.

image

Between 5-8 MB of size (of the DOL files) per core were Wiimpathy's ones.

saulfabregwiivc commented 1 year ago

Try deleting your default.cfg file it will auto create a new one on next load. You may have an old one thats not compatible causing issues. likely if you've been using the old wii core. otherwise I would check the mame menu mappings to see that it's what you expect.

I have deleted all the .cfg files of RetroArch (including the savefiles/mame2003-plus/default.cfg file), have reset to default settings from RetroArch Wii GUI, loaded Pac-Man, and now input works as should. 1 (-) button press = 1 credit - another (-) button press = another credit (without starting accidentally a 2-player game, like it should be)

Crazy Climber also has input working as should, but it has default mapping of 1st joystick (UP-DOWN) to left joystick, and 2nd joystick (LEFT-RIGHT) to the right joystick.

In other words, input is working as should on all builds you have posted here. Also, are you currently working on Wii to at official branch?: https://github.com/libretro/mame2003-plus-libretro/tree/Wii

But... only one suggestion (by now)... any chance for modify RetroArch code for accept also Wiimote only for map inputs for games? For example Neo-Geo CD (NeoCD-Libretro core) controller has a joystick (which can be emulated with Wiimote's D-Pad) and only four buttons plus START/SELECT, which Wiimote also has four buttons (A,B,1,2) plus START(+)/SELECT(-).

saulfabregwiivc commented 1 year ago

Between 5-8 MB of size (of the DOL files) per core were Wiimpathy's ones.

BTW some Wiimpathy's cores can overpass 8 MB of size, but not more of 10-11 MB per core.

mahoneyt944 commented 1 year ago

The biggest issue with Wii builds is that all the source files are tangled, so figuring out a manageable way to sort this is the biggest task. Wiimpathy's had a fair approach, but what I suspect they ran into was that there's always something that doesn't quite fit the bill. This means the Wii cores didn't have everything the normal build had available.

I think my approach, and I'm brain storming here, will be to sort all the needed files for each and every driver that way you can build any driver individually, then I'll link each driver into groups (or split cores) to build for Wii and or any other core needing small executables. The trick there would be to include all the files, then sort for duplicates then build.

mahoneyt944 commented 1 year ago

Not sure what the issue is with Wii mote. But I'm sure it can be made to work if it doesn't.

mahoneyt944 commented 1 year ago

https://github.com/libretro/mame2003-plus-libretro/tree/Wii is my branch which builds on the buildbot for wii. Its more for testing at this point. I am working on an official build though.

mahoneyt944 commented 1 year ago

@saulfabregwiivc here's an afterburner core. aburner and aburner2. Wondering how this would play on the Wii. Maybe you could try and record a video?

Aburner core: artifacts.zip

saulfabregwiivc commented 1 year ago

@saulfabregwiivc here's an afterburner core. aburner and aburner2. Wondering how this would play on the Wii. Maybe you could try and record a video?

Aburner core: artifacts.zip

Sure i could try this week and if we're lucky i will post on my YouTube channel (http://youtube.com/saulfabregwiivc).

saulfabregwiivc commented 1 year ago

@mahoneyt944 Here's a video of my testing with the aburner/aburner2 split core running on Wii. Here's a tiny slowdown on After Burner II title screen, but the gameplay on both games is working fine, with very little framedrops. (I understand, because Wii is a low-powered console xD, but maybe u want to add Frameskip to MAME2003+? :)) https://youtu.be/KLGObjlhSDc

mahoneyt944 commented 1 year ago

@saulfabregwiivc we already have frameskip, select auto or hard values. core options -> video -> frameskip

Looks pretty decent though.

saulfabregwiivc commented 1 year ago

@mahoneyt944 a small request: along with the next test build u make, can u compile a build of MAME2003+ for Wii with segas32 (Sega System 32) driver (and its games) only? Im interested in see its performance of these on Wii. (alien3, sonic, jpark, spidey, etc...)

Or at least tell me how i can modify MAME2003+ code for make/compile "split" builds with specific drivers only? Thanks ;)

arcadez2003 commented 1 year ago

You should get pretty decent performance with the Sega System 32 games i'd think on the Wii as we're using the older and faster video drawing routines for those games, certainly on the original xbox they're full speed more or less.

saulfabregwiivc commented 1 year ago

You should get pretty decent performance with the Sega System 32 games i'd think on the Wii as we're using the older and faster video drawing routines for those games, certainly on the original xbox they're full speed more or less.

Hey @arcadez2003, thanks for the info, i'm being positive with Sega System 32 arcade emulation on Wii! Now what i need to know is how to modify MAME2003+ core code for split by myself the drivers for make custom builds with specific drivers only.

saulfabregwiivc commented 1 year ago

BTW, @mahoneyt944 , @arcadez2003

is it OK if i share the compiled builds of tiny builds of MAME2003+ for Wii with other users so they can also be beta testers of this Wii project? Since all Libretro, RetroArch and MAME are open-source, i think it's OK to share these builds we're testing.

mahoneyt944 commented 1 year ago

Yeah share away. And how to split them is a loaded question, but basically I'm compiling every driver individually by isolating all the needed files for each one. Then I'll be adding them to split cores. It's a very tedious process that will take awhile. But I'm actively chipping away at it everyday.

mahoneyt944 commented 1 year ago

I'll whip up a system32 core for you soon.

mahoneyt944 commented 1 year ago

Here's the system32 core game list, video some of the main titles? Its cool to see it working since I don't actually have this console lol.

    /* system32.c */
    DRIVER( holo )      /* (c) 1992 (US) */
    DRIVER( arescue )   /* (c) 1992 */
    DRIVER( radm )
    DRIVER( radr )      /* (c) 1991 */
    DRIVER( spidey )    /* (c) 1991 */
    DRIVER( spideyj )   /* (c) 1991 (Japan) */
    DRIVER( f1en )
    DRIVER( arabfgt )   /* (c) 1991 */
    DRIVER( ga2 )       /* (c) 1992 */
    DRIVER( ga2j )      /* (c) 1992 */
    DRIVER( brival )    /* (c) 1992 (Japan) */
    DRIVER( sonic )     /* (c) 1992 (Japan) */
    DRIVER( sonicp )    /* (c) 1992 (Japan) */
    DRIVER( alien3 )    /* (c) 1993 */
    DRIVER( jpark )     /* (c) 1994 */
    DRIVER( svf )       /* (c) 1994 */
    DRIVER( svs )       /* (c) 1994 */
    DRIVER( jleague )   /* (c) 1994 (Japan) */
    DRIVER( f1lap )     /* (c) 1993 (World) */
    DRIVER( f1lapj )    /* (c) 1993 (Japan) */
    DRIVER( darkedge )
    DRIVER( dbzvrvs )
    DRIVER( slipstrm )  /* Capcom */

artifacts.zip

mind you some of these wont work or will have graphics issues, see the driver flags on these. so for sonic, try sonicp instead https://github.com/libretro/mame2003-plus-libretro/blob/a9d71ca339823520fa8ed2b0d2dfbd5462c4a0ff/src/drivers/system32.c#L3322-L3348

mahoneyt944 commented 1 year ago

aliens core artifacts.zip

    DRIVER( aliens )    /* GX875 (c) 1990 (World) */
    DRIVER( aliens2 )   /* GX875 (c) 1990 (World) */
    DRIVER( aliensu )   /* GX875 (c) 1990 (US) */
    DRIVER( aliensj )   /* GX875 (c) 1990 (Japan) */
saulfabregwiivc commented 1 year ago

Here's the system32 core game list, video some of the main titles? Its cool to see it working since I don't actually have this console lol.

  /* system32.c */
  DRIVER( holo )      /* (c) 1992 (US) */
  DRIVER( arescue )   /* (c) 1992 */
  DRIVER( radm )
  DRIVER( radr )      /* (c) 1991 */
  DRIVER( spidey )    /* (c) 1991 */
  DRIVER( spideyj )   /* (c) 1991 (Japan) */
  DRIVER( f1en )
  DRIVER( arabfgt )   /* (c) 1991 */
  DRIVER( ga2 )       /* (c) 1992 */
  DRIVER( ga2j )      /* (c) 1992 */
  DRIVER( brival )    /* (c) 1992 (Japan) */
  DRIVER( sonic )     /* (c) 1992 (Japan) */
  DRIVER( sonicp )    /* (c) 1992 (Japan) */
  DRIVER( alien3 )    /* (c) 1993 */
  DRIVER( jpark )     /* (c) 1994 */
  DRIVER( svf )       /* (c) 1994 */
  DRIVER( svs )       /* (c) 1994 */
  DRIVER( jleague )   /* (c) 1994 (Japan) */
  DRIVER( f1lap )     /* (c) 1993 (World) */
  DRIVER( f1lapj )    /* (c) 1993 (Japan) */
  DRIVER( darkedge )
  DRIVER( dbzvrvs )
  DRIVER( slipstrm )  /* Capcom */

artifacts.zip

mind you some of these wont work or will have graphics issues, see the driver flags on these. so for sonic, try sonicp instead

https://github.com/libretro/mame2003-plus-libretro/blob/a9d71ca339823520fa8ed2b0d2dfbd5462c4a0ff/src/drivers/system32.c#L3322-L3348

I've made a small video https://www.youtube.com/watch?v=5yXdNj3R7VQ

Some issues i've found:

Besides that, the build of system32 works fine.

I'm gonna test the aliens/aliens2 driver build soon.

mahoneyt944 commented 1 year ago

Not sure about the sound issue, could be getting dropped. You could try lowering the sample rate in the audio settings.

mahoneyt944 commented 1 year ago

You can adjust the trackball speed in sonicp by going into the mame menu sonicp-230506-225116 sonicp-230506-225140

mahoneyt944 commented 1 year ago

heres another fan favorite arkanoid core: artifacts.zip

likely have to adjust the analog sensitivity in the mame menu on this one to get the paddle feel right.

    DRIVER( arkanoid )  /* A75 (c) 1986 Taito Corporation Japan (World) */
    DRIVER( arknoidu )  /* A75 (c) 1986 Taito America Corporation + Romstar license (US) */
    DRIVER( arknoiuo )  /* A75 (c) 1986 Taito America Corporation + Romstar license (US) */
    DRIVER( arknoidj )  /* A75 (c) 1986 Taito Corporation (Japan) */
    DRIVER( arkbl2 )    /* bootleg */
    DRIVER( arkbl3 )    /* bootleg */
    DRIVER( paddle2 )   /* bootleg */
    DRIVER( arkatayt )  /* bootleg */
    DRIVER( arkblock )  /* bootleg */
    DRIVER( arkbloc2 )  /* bootleg */
    DRIVER( arkangc )   /* bootleg */
    DRIVER( arkatour )  /* ??? (c) 1987 Taito America Corporation + Romstar license (US) */
saulfabregwiivc commented 1 year ago

heres another fan favorite arkanoid core: artifacts.zip

likely have to adjust the analog sensitivity in the mame menu on this one to get the paddle feel right.

  DRIVER( arkanoid )  /* A75 (c) 1986 Taito Corporation Japan (World) */
  DRIVER( arknoidu )  /* A75 (c) 1986 Taito America Corporation + Romstar license (US) */
  DRIVER( arknoiuo )  /* A75 (c) 1986 Taito America Corporation + Romstar license (US) */
  DRIVER( arknoidj )  /* A75 (c) 1986 Taito Corporation (Japan) */
  DRIVER( arkbl2 )    /* bootleg */
  DRIVER( arkbl3 )    /* bootleg */
  DRIVER( paddle2 )   /* bootleg */
  DRIVER( arkatayt )  /* bootleg */
  DRIVER( arkblock )  /* bootleg */
  DRIVER( arkbloc2 )  /* bootleg */
  DRIVER( arkangc )   /* bootleg */
  DRIVER( arkatour )  /* ??? (c) 1987 Taito America Corporation + Romstar license (US) */

thanks for the build, i will try when i have the time ;)

Wiimpathy commented 1 year ago

For spidey, the v60 cpu was modified in system32.c :

#define OSC_A  (32215900)  // System 32 master crystal is 32215900 Hz

/* basic machine hardware */
#if defined(GEKKO)
MDRV_CPU_ADD(V60, OSC_A/2/16) // Reality is 16.somethingMHz, it seems better with 16?
#else
MDRV_CPU_ADD(V60, OSC_A/2/12) // Reality is 16.somethingMHz, use magic /12 factor to get approximate speed
#endif

A kind of funny issue also happened only with an usb drive attached where some games have slowdowns.

The way you split games is better and cleaner. The RAM is still a problem for some large games to start. But pretty sure most of these wouldn't run well because of the weak wii cpu. If interested, you can test and play with the virtual memory from this early test http://www.mediafire.com/file/7kmq7n1ebk9am32/mame2003-plus-0.2_source_code.zip

mahoneyt944 commented 1 year ago

@Wiimpathy hi and thanks for popping in here. Yeah, I can say I feel your pain with splitting these drivers, though I still have a long ways to go. My thought was to isolate each driver and ensure each one builds correctly. Once all the drivers are split, we can simply link them to split cores. This also allows anyone to build "one off" cores with individual drivers as well as creates opportunities to port to other platforms like psp, ps2, etc.

Once we have the drivers all sorted, I'll look into the virtual memory you linked. I've been chipping away at the drivers in my free time, but this process will take me some time due to the sheer volume of drivers. Should be able to get them within a few weeks or so.

mahoneyt944 commented 1 year ago

@saulfabregwiivc here's the updated system32 test core with the v60 CPU change @Wiimpathy shared System32: artifacts.zip

edit: arcadez brought it to my attention that the v60 cpu was updated and this may or may not work. let me know if this system32 change helps or not for wii.