Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
saulfabregwiivc opened this issue Jul 5, 2022 · 82 comments

Comments

@saulfabregwiivc
Copy link

Look here: #247

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

Thanks :)

@mahoneyt944
Copy link
Collaborator

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
Copy link
Author

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
Copy link
Contributor

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
Copy link
Collaborator

@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
Copy link
Author

@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
Copy link
Collaborator

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
Copy link
Author

@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
Copy link
Collaborator

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 dfd49d6

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

@mahoneyt944
Copy link
Collaborator

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

@saulfabregwiivc
Copy link
Author

nope, still errors at WPAD.

@saulfabregwiivc
Copy link
Author

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

  • FCEUmm Libretro
  • PokeMini Libretro
  • Genesis Plus GX Libretro
  • NeoCD Libretro (my own fork)

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
Copy link
Collaborator

mahoneyt944 commented Apr 23, 2023

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

@mahoneyt944
Copy link
Collaborator

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

@mahoneyt944
Copy link
Collaborator

mahoneyt944 commented Apr 25, 2023

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
Copy link
Author

saulfabregwiivc commented Apr 26, 2023

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 := $(TARGET_NAME)_$(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 -D__ppc__ -D__POWERPC__
CFLAGS += -I$(LIBOGC_INC) -I$(DEVKITPRO)/libogc/include -I$(DEVKITPRO)/libogc/include/ogc/machine
PLATCFLAGS += -U__INT32_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
Copy link
Collaborator

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

@mahoneyt944
Copy link
Collaborator

mahoneyt944 commented Apr 27, 2023

@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
Copy link
Author

saulfabregwiivc commented Apr 27, 2023

@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
Copy link
Collaborator

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
Copy link
Collaborator

mahoneyt944 commented Apr 28, 2023

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
Copy link
Author

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
Copy link
Collaborator

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
Copy link
Collaborator

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

@mahoneyt944
Copy link
Collaborator

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
Copy link
Author

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
Copy link
Author

saulfabregwiivc commented Apr 29, 2023

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
Copy link
Author

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
Copy link
Collaborator

mahoneyt944 commented Apr 29, 2023

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
Copy link
Collaborator

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

@Wiimpathy
Copy link

I would leave frameskip on auto or off as a default setting, otherwise the hard coded values will skip frames even when you don't need it to.

Possibly the virtual memory may help, otherwise might be a limitation of our current code base.

The virtual memory wouldn't help here, I guess. There was indeed an issue with system32 and precisely spidey. The coreD that run it quite well was based on older commit from march 2018.
By the way, @saulfabregwiivc how are launching the games, sd card only/usb/mixed setup?

If you decide to implement the virtual memory, do note that it's more complicated than an nmap equivalent, the wii RAM being non-contiguous. It's also writing to a nand which is rather slow, it increases loading times.

@mahoneyt944
Copy link
Collaborator

Here's a quick compilation of the drivers I have split so far, this includes all drivers 0 through A (note these haven't been assigned official core designations yet):
artifacts.zip

Game list

#if defined(drv_1942) || defined(core_none)
	/* 1942.c */
	DRIVER( 1942 )		/* 12/1984 (c) 1984 */
	DRIVER( 1942a )		/* 12/1984 (c) 1984 */
	DRIVER( 1942b )		/* 12/1984 (c) 1984 */
#endif

#if defined(drv_1943) || defined(core_none)
	/* 1943.c */
	DRIVER( 1943 )		/*  6/1987 (c) 1987 (US) */
	DRIVER( 1943j )		/*  6/1987 (c) 1987 (Japan) */
	DRIVER( 1943mii )       /*  6/1987 (c) 1987 (US) */
	DRIVER( 1943kai )	/*  6/1988 (c) 1987 (Japan) */
#endif

#if defined(drv_1945kii) || defined(core_none)
	/* 1945kiii.c */
	DRIVER( 1945kiii )  /* (c) 2000 Oriental */
	DRIVER( flagrall )  /* (c) 1996 Promat? */
#endif

#if defined (drv_40love) || defined(core_none)
	/* 40love.c */
	DRIVER( fieldday )	/* A23 (c) 1984 Taito */
	DRIVER( undoukai )	/* A17 (c) 1984 Taito */
	DRIVER( 40love )	/* A30 (c) 1984 Taito */
#endif

#if defined(drv_4enraya) || defined(core_none)
	/* 4enraya.c */
	DRIVER( 4enraya )	/* (c) 1990 IDSA */
#endif

#if defined(drv_8080bw_drivers) || defined(core_none)
	/* 8080bw_drivers.c */
	/* Midway 8080 b/w games */
	DRIVER( seawolf )	/* 596 [1976] */
	DRIVER( gunfight )	/* 597 [1975] */
	/* 603 - Top Gun [1976] */
	DRIVER( tornbase )	/* 605 [1976] */
	DRIVER( 280zzzap )	/* 610 [1976] */
	DRIVER( maze )		/* 611 [1976] */
	DRIVER( boothill )	/* 612 [1977] */
	DRIVER( checkmat )	/* 615 [1977] */
	DRIVER( desertgu )	/* 618 [1977] */
	DRIVER( dplay )		/* 619 [1977] */
	DRIVER( lagunar )	/* 622 [1977] */
	DRIVER( gmissile )	/* 623 [1977] */
	DRIVER( m4 )		/* 626 [1977] */
	DRIVER( clowns )	/* 630 [1978] */
	DRIVER( clowns1 )	/* 630 [1978] */
	/* 640 - Space Walk [1978] */
	DRIVER( einnings )	/* 642 [1978] Midway */
	DRIVER( shuffle )	/* 643 [1978] */
	DRIVER( dogpatch )	/* 644 [1977] */
	DRIVER( spcenctr )	/* 645 (c) 1980 Midway */
	DRIVER( phantom2 )	/* 652 [1979] */
	DRIVER( bowler )	/* 730 [1978] Midway */
	DRIVER( invaders )	/* 739 [1979] */
	DRIVER( blueshrk )	/* 742 [1978] */
	DRIVER( invad2ct )	/* 851 (c) 1980 Midway */
	DRIVER( invaddlx )	/* 852 [1980] Midway */
	DRIVER( sitv )
	DRIVER( sicv )
	DRIVER( sisv )
	DRIVER( sisv2 )
	DRIVER( galxwars )
	DRIVER( galxwar2 )
	DRIVER( galxwart )
	DRIVER( starw )
	DRIVER( lrescue )	/* LR  (c) 1979 Taito */
	DRIVER( grescue )	/* bootleg? */
	DRIVER( desterth )	/* bootleg */
	DRIVER( invadpt2 )	/* 852 [1980] Taito */
	DRIVER( cosmo )		/* TDS+Mints */
	DRIVER( schaser )	/* RT  Taito */
	DRIVER( schasrcv )	/* RT  Taito */
	DRIVER( sflush ) /* (c)1979 Taito */
	DRIVER( lupin3 )	/* LP  (c) 1980 Taito */
	DRIVER( polaris )	/* PS  (c) 1980 Taito */
	DRIVER( polarisa )	/* PS  (c) 1980 Taito */
	DRIVER( ballbomb )	/* TN  (c) 1980 Taito */
	DRIVER( indianbt )	/* Taito - 1980 */
	DRIVER( steelwkr )	/* (c) 1980 Taito */
	DRIVER( earthinv )
	DRIVER( spaceatt )
	DRIVER( spaceat2 )
	DRIVER( sinvzen )
	DRIVER( sinvemag )
	DRIVER( tst_invd )
	DRIVER( alieninv )
	DRIVER( spceking )
	DRIVER( spcewars )
	DRIVER( spacewr3 )
	DRIVER( invaderl )
	DRIVER( jspecter )
	DRIVER( jspectr2 )
	DRIVER( cosmicmo )	/* Universal */
	DRIVER( cosmicm2 )	/* Universal */
	DRIVER( superinv )
	DRIVER( sstrangr )
	DRIVER( sstrngr2 )
	DRIVER( moonbase )	/* Zeta - Nichibutsu */
	DRIVER( invrvnge )
	DRIVER( invrvnga )
	DRIVER( spclaser )
	DRIVER( laser )
	DRIVER( spcewarl )
	DRIVER( rollingc )	/* Nichibutsu */
	DRIVER( ozmawars )	/* Shin Nihon Kikaku (SNK) */
	DRIVER( ozmawar2 )	/* Shin Nihon Kikaku (SNK) */
	DRIVER( solfight )	/* bootleg */
	DRIVER( spaceph )	/* Zilec Games */
	DRIVER( yosakdon )
	DRIVER( yosakdoa )
	DRIVER( invasion )
	DRIVER( invasioa )
	DRIVER( invasiob )
	DRIVER( astropal )
	DRIVER( galactic )
	DRIVER( spacmiss )
#endif

#if defined(drv_88games) || defined(core_none)
	/* 88games.c */
	DRIVER( 88games )	/* GX861 (c) 1988 */
	DRIVER( konami88 )	/* GX861 (c) 1988 */
	DRIVER( hypsptsp )	/* GX861 (c) 1988 (Japan) */
#endif

#if defined(drv_aburner) || defined(core_none)
	/* aburner.c */
	DRIVER( aburner )	/* (c) 1987 */
	DRIVER( aburner2 )  /* (c) 1987 */
	DRIVER( loffire )	/* (protected) */
	DRIVER( thndrbld )	/* (protected) */
	DRIVER( thndrbdj )  /* (protected?) */
#endif

#if defined(drv_ace) || defined(core_none)
	/* ace.c */
	DRIVER( ace )		/* [1976 Allied Leisure] */
#endif

#if defined(drv_actfancr) || defined(core_none)
	/* actfancr.c */
	DRIVER( actfancr )	/* (c) 1989 Data East Corporation (World) */
	DRIVER( actfanc1 )	/* (c) 1989 Data East Corporation (World) */
	DRIVER( actfancj )	/* (c) 1989 Data East Corporation (Japan) */
	DRIVER( triothep )	/* (c) 1989 Data East Corporation (Japan) */
#endif

#if defined(drv_aeroboto) || defined(core_none)
	/* aeroboto.c */
	DRIVER( formatz )	/* (c) 1984 Jaleco */
	DRIVER( aeroboto )	/* (c) 1984 Williams */
#endif

#if defined(drv_aerofgt) || defined(core_none)
	/* aerofgt.c */
	DRIVER( spinlbrk )	/* (c) 1990 V-System Co. (World) */
	DRIVER( spinlbru )	/* (c) 1990 V-System Co. (US) */
	DRIVER( spinlbrj )	/* (c) 1990 V-System Co. (Japan) */
	DRIVER( pspikes )	/* (c) 1991 Video System Co. (World) */
	DRIVER( pspikesk )	/* (c) 1991 Video System Co. (Korea) */
	DRIVER( svolly91 )	/* (c) 1991 Video System Co. (Japan) */
	DRIVER( karatblz )	/* (c) 1991 Video System Co. */
	DRIVER( karatblu )	/* (c) 1991 Video System Co. (US) */
	DRIVER( turbofrc )	/* (c) 1991 Video System Co. */
	DRIVER( aerofgt )	/* (c) 1992 Video System Co. */
	DRIVER( aerofgtb )	/* (c) 1992 Video System Co. */
	DRIVER( aerofgtc )	/* (c) 1992 Video System Co. */
	DRIVER( sonicwi )	/* (c) 1992 Video System Co. (Japan) */
#endif

#if defined(drv_afega) || defined(core_none)
	/* afega.c */
	DRIVER( stagger1 )	/* (c) 1998 */
	DRIVER( redhawk )	  /* (c) 1997 */
	DRIVER( grdnstrm )	/* (c) 1998 */
	DRIVER( bubl2000 )	/* (c) 1998 Tuning */
	DRIVER( spec2k )    /* (c) 2000 Yonatech */
	DRIVER( firehawk )  /* (c) 2001 ESD */
#endif

#if defined(drv_airbustr) || defined(core_none)
	/* airbustr.c */
	DRIVER( airbustr )	/* (c) 1990 Kaneko + Namco */
	DRIVER( airbustj )	/* (c) 1990 Kaneko + Namco (Japan) */
#endif

#if defined(drv_ajax) || defined(core_none)
	/* ajax.c */
	DRIVER( ajax )		/* GX770 (c) 1987 */
	DRIVER( typhoon )	/* GX770 (c) 1987 */
	DRIVER( ajaxj )		/* GX770 (c) 1987 (Japan) */
#endif

#if defined(drv_aliens) || defined(core_none)
	/* aliens.c */
	DRIVER( aliens )	/* GX875 (c) 1990 (World) */
	DRIVER( aliens2 )	/* GX875 (c) 1990 (World) */
	DRIVER( aliensu )	/* GX875 (c) 1990 (US) */
	DRIVER( aliensj )	/* GX875 (c) 1990 (Japan) */
#endif

#if defined(drv_alpha68k) || defined(core_none)
	/* alpha68k.c */
	DRIVER( sstingry )	/* (c) 1986 Alpha Denshi Co. */
	DRIVER( kyros )		/* (c) 1987 World Games */
	DRIVER( kyrosj )	/* (c) 1986 Alpha Denshi Co. */
	DRIVER( paddlema )	/* Alpha-68K96I  'PM' (c) 1988 SNK */
	DRIVER( timesold )	/* Alpha-68K96II 'BT' (c) 1987 SNK / Romstar */
	DRIVER( timesol1 )  /* Alpha-68K96II 'BT' (c) 1987 */
	DRIVER( btlfield )  /* Alpha-68K96II 'BT' (c) 1987 */
	DRIVER( skysoldr )	/* Alpha-68K96II 'SS' (c) 1988 SNK (Romstar with dip switch) */
	DRIVER( goldmedl )	/* Alpha-68K96II 'GM' (c) 1988 SNK */
	DRIVER( goldmedb )	/* Alpha-68K96II bootleg */
	DRIVER( skyadvnt )	/* Alpha-68K96V  'SA' (c) 1989 Alpha Denshi Co. */
	DRIVER( skyadvnu )	/* Alpha-68K96V  'SA' (c) 1989 SNK of America licensed from Alpha */
	DRIVER( skyadvnj )	/* Alpha-68K96V  'SA' (c) 1989 Alpha Denshi Co. */
	DRIVER( gangwars )	/* Alpha-68K96V       (c) 1989 Alpha Denshi Co. */
	DRIVER( gangwarb )	/* Alpha-68K96V bootleg */
	DRIVER( sbasebal )	/* Alpha-68K96V       (c) 1989 SNK of America licensed from Alpha */
	DRIVER( tnexspce )	/* A8003 'NS' (c) 1989 */
#endif

#if defined(drv_ambush) || defined(core_none)
	/* ambush.c */
	DRIVER( ambush )	/* (c) 1983 Nippon Amuse Co-Ltd */
	DRIVER( ambusht )	/* (c) 1983 Tecfri */
#endif

#if defined(drv_amidar) || defined(core_none)
	/* amidar.c */
	DRIVER( amidar )	/* GX337 (c) 1981 Konami */
	DRIVER( amidaru )	/* GX337 (c) 1982 Konami + Stern license */
	DRIVER( amidaro )	/* GX337 (c) 1982 Konami + Olympia license */
	DRIVER( amigo )		/* bootleg */
	DRIVER( turtles )	/* (c) 1981 Stern */
	DRIVER( turpin )	/* (c) 1981 Sega */
	DRIVER( 600 )		/* GX353 (c) 1981 Konami */
#endif

#if defined(drv_amspdwy) || defined(core_none)
	/* amspdwy.c */
	DRIVER( amspdwy )	/* no copyright notice, but (c) 1987 Enerdyne Technologies, Inc. */
	DRIVER( amspdwya )	/* no copyright notice, but (c) 1987 Enerdyne Technologies, Inc. */
#endif

#if defined(drv_angelkds) || defined(core_none)
	/* angelkds.c */
	DRIVER( angelkds )	/* 833-6599 (c) 1988 Sega / Nasco? */
	DRIVER( spcpostn )	/* (c) 1986 Sega / Nasco" */
#endif

#if defined(drv_appoooh) || defined(core_none)
	/* appoooh.c */
	DRIVER( appoooh )	/* (c) 1984 Sega */	/* made by Sanritsu */
#endif

#if defined(drv_aquarium) || defined(core_none)
	/* aquarium.c */
	DRIVER( aquarium )	/* (c) 1996 Excellent System */
#endif

#if defined(drv_arabian) || defined(core_none)
	/* arabian.c */
	DRIVER( arabian )	/* TVG13 (c) 1983 Sun Electronics */
	DRIVER( arabiana )	/* 136019			(c) 1983 Atari */
#endif

#if defined(drv_arcadecl) || defined(core_none)
	/* arcadecl.c */
	DRIVER( arcadecl )	/* (proto)			(c) 1992 */
	DRIVER( sparkz )	/* (proto)			(c) 1992 */
#endif

#if defined(drv_argus) || defined(core_none)
	/* argus.c */
	DRIVER( argus )		/* (c) 1986 Jaleco */
	DRIVER( valtric )	/* (c) 1986 Jaleco */
	DRIVER( butasan )	/* (c) 1987 Jaleco */
#endif

#if defined(drv_arkanoid) || defined(core_none)
	/* arkanoid.c */
	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) */
#endif

#if defined(drv_armedf) || defined(core_none)
	/* armedf.c */
	DRIVER( legion )	/* (c) 1986 */
	DRIVER( legiono )	/* (c) 1986 */
	DRIVER( terraf )	/* (c) 1987 */
	DRIVER( terrafu )	/* (c) 1987 Nichibutsu USA */
	DRIVER( kodure )	/* (c) 1987 (Japan) */
	DRIVER( cclimbr2 )	/* (c) 1988 (Japan) */
	DRIVER( armedf )	/* (c) 1988 */
#endif

#if defined(drv_artmagic) || defined(core_none)
	/* artmagic.c */
	DRIVER( ultennis )	/* (c) 1993 */
	DRIVER( cheesech )	/* (c) 1994 */
	DRIVER( stonebal )	/* (c) 1994 */
	DRIVER( stoneba2 )	/* (c) 1994 */
#endif

#if defined(drv_ashnojoe) || defined(core_none)
	/* ashnojoe.c */
	DRIVER( scessjoe )	/* ??? (c) 1990 Wave / Taito */
	DRIVER( ashnojoe )	/* ??? (c) 1990 Wave / Taito */
#endif

#if defined(drv_asterix) || defined(core_none)
	/* asterix.c */
	DRIVER( asterix )	/* GX068 (c) 1992 (World) */
	DRIVER( astrxeac )	/* GX068 (c) 1992 (World) */
	DRIVER( astrxeaa )	/* GX068 (c) 1992 (World) */
#endif

#if defined(drv_asteroid) || defined(core_none)
	/* asteroid.c */
	DRIVER( asteroid )	/* 035127-035145	(c) 1979 */
	DRIVER( asteroi1 )	/* 035127-035145	no copyright notice */
	DRIVER( asteroib )	/* (bootleg) */
	DRIVER( asterock )	/* Sidam bootleg	(c) 1979 */
	DRIVER( astdelux )	/* 0351xx			(c) 1980 */
	DRIVER( astdelu1 )	/* 0351xx			(c) 1980 */
	DRIVER( llander )	/* 0345xx			no copyright notice */
	DRIVER( llander1 )	/* 0345xx			no copyright notice */
#endif

#if defined(drv_astinvad) || defined(core_none)
	/* astinvad.c */
	DRIVER( astinvad )	/* (c) 1980 Stern */
	DRIVER( kamikaze )	/* Leijac Corporation */
	DRIVER( spcking2 )
	DRIVER( spaceint )	/* [1980] Shoei */
#endif

#if defined(drv_astrocde) || defined(core_none)
	/* astrocde.c */
	DRIVER( seawolf2 )
	DRIVER( spacezap )	/* (c) 1980 */
	DRIVER( ebases )
	DRIVER( wow )		/* (c) 1980 */
	DRIVER( gorf )		/* (c) 1981 */
	DRIVER( gorfpgm1 )	/* (c) 1981 */
	DRIVER( robby )		/* (c) 1981 Bally Midway */
	DRIVER( profpac )	/* (c) 1983 Bally Midway */
#endif

#if defined(drv_astrof) || defined(core_none)
	/* astrof.c */
	DRIVER( astrof )	/* (c) [1980?] */
	DRIVER( astrof2 )	/* (c) [1980?] */
	DRIVER( astrof3 )	/* (c) [1980?] */
	DRIVER( tomahawk )	/* (c) [1980?] */
	DRIVER( tomahaw5 )	/* (c) [1980?] */
#endif

#if defined(drv_asuka) || defined(core_none)
	/* asuka.c */
	DRIVER( bonzeadv )	/* B41 (c) 1988 Taito Corporation Japan (World) */
	DRIVER( bonzeadu )	/* B41 (c) 1988 Taito America Corporation (US) */
	DRIVER( jigkmgri )	/* B41 (c) 1988 Taito Corporation (Japan)*/
	DRIVER( asuka )		/* ??? (c) 1988 Taito Corporation (Japan) */
	DRIVER( mofflott )	/* C17 (c) 1989 Taito Corporation (Japan) */
	DRIVER( cadash )	/* C21 (c) 1989 Taito Corporation Japan */
	DRIVER( cadashj )	/* C21 (c) 1989 Taito Corporation */
	DRIVER( cadashu )	/* C21 (c) 1989 Taito America Corporation */
	DRIVER( cadashi )	/* C21 (c) 1989 Taito Corporation Japan */
	DRIVER( cadashf )	/* C21 (c) 1989 Taito Corporation Japan */
	DRIVER( galmedes )	/* (c) 1992 Visco (Japan) */
	DRIVER( earthjkr )	/* (c) 1993 Visco (Japan) */
	DRIVER( eto )		/* (c) 1994 Visco (Japan) */
#endif

#if defined(drv_atarifb) || defined(core_none)
	/* atarifb.c */
	DRIVER( atarifb )	/* 033xxx			1978/10 [6502] */
	DRIVER( atarifb1 )	/* 033xxx			1978/10 [6502] */
	DRIVER( atarifb4 )	/* 034754			1979/04 [6502] */
	DRIVER( abaseb )	/* 034711-034738	1979/06 [6502] */
	DRIVER( abaseb2 )	/* 034711-034738	1979/06 [6502] */
	DRIVER( soccer )	/* 035222-035260	1980/04 [6502] */
#endif

#if defined(drv_atarig1) || defined(core_none)
	/* atarig1.c */
	DRIVER( hydra )		/* 136079			(c) 1990 */
	DRIVER( hydrap )	/* (proto)			(c) 1990 */
	DRIVER( hydrap2 )	/* (proto)			(c) 1990 */
	DRIVER( pitfight )	/* 136081			(c) 1990 */
	DRIVER( pitfigh3 )	/* 136081			(c) 1990 */
	DRIVER( pitfighj )	/* Japan */
	DRIVER( pitfighb )	/* bootleg */
#endif

#if defined(drv_atarig42) || defined(core_none)
	/* atarig42.c */
	DRIVER( roadriot )	/* 136089			(c) 1991 */
	DRIVER( guardian )	/* 136092			(c) 1992 */
	DRIVER( dangerex )	/* (proto)			(c) 1992 */
#endif

#if defined(drv_atarigt) || defined(core_none)
	/* atarigt.c */
	DRIVER( tmek )		/* 136100			(c) 1994 */
	DRIVER( tmekprot )	/* 136100			(c) 1994 */
	DRIVER( primrage )	/* 136102			(c) 1994 */
	DRIVER( primraga )	/* 136102			(c) 1994 */
#endif

#if defined(drv_atarigx2) || defined(core_none)
	/* atarigx2.c */
	DRIVER( spclords )	/* 136095			(c) 1992 */
	DRIVER( spclorda )	/* 136095			(c) 1992 */
	DRIVER( motofren )	/* 136094			(c) 1992 */
	DRIVER( rrreveng )	/*     ??			(c) 1993 */
	DRIVER( rrrevenp )	/*     ??		    (c) 1993 */
#endif

#if defined(drv_atarisy1) || defined(core_none)
	/* atarisy1.c */
	DRIVER( marble )	/* 136033			(c) 1984 */
	DRIVER( marble2 )	/* 136033			(c) 1984 */
	DRIVER( marble3 )	/* 136033			(c) 1984 */
	DRIVER( marble4 )	/* 136033			(c) 1984 */
	DRIVER( indytemp )	/* 136036			(c) 1985 */
	DRIVER( indytem2 )	/* 136036			(c) 1985 */
	DRIVER( indytem3 )	/* 136036			(c) 1985 */
	DRIVER( indytem4 )	/* 136036			(c) 1985 */
	DRIVER( indytemd )	/* 136036			(c) 1985 */
	DRIVER( roadrunn )	/* 136040			(c) 1985 */
	DRIVER( roadrun2 )	/* 136040			(c) 1985 */
	DRIVER( roadrun1 )	/* 136040			(c) 1985 */
	DRIVER( roadblst )	/* 136048			(c) 1986, 1987 */
	DRIVER( roadblsg )	/* 136048			(c) 1986, 1987 */
	DRIVER( roadbls3 )	/* 136048			(c) 1986, 1987 */
	DRIVER( roadblg2 )	/* 136048			(c) 1986, 1987 */
	DRIVER( roadbls2 )	/* 136048			(c) 1986, 1987 */
	DRIVER( roadblg1 )	/* 136048			(c) 1986, 1987 */
	DRIVER( roadbls1 )	/* 136048			(c) 1986, 1987 */
	DRIVER( roadblsc )	/* 136048			(c) 1986, 1987 */
	DRIVER( roadblcg )	/* 136048			(c) 1986, 1987 */
	DRIVER( roadblc1 )	/* 136048			(c) 1986, 1987 */
#endif

#if defined(drv_atarisy2) || defined(core_none)
	/* atarisy2.c */
	DRIVER( paperboy )	/* 136034			(c) 1984 */
	DRIVER( paperbr2 )	/* 136034			(c) 1984 */
	DRIVER( paperbr1 )	/* 136034			(c) 1984 */
	DRIVER( 720 )		/* 136047			(c) 1986 */
	DRIVER( 720r3 )		/* 136047			(c) 1986 */
	DRIVER( 720r2 )		/* 136047			(c) 1986 */
	DRIVER( 720r1 )		/* 136047			(c) 1986 */
	DRIVER( 720g )		/* 136047			(c) 1986 */
	DRIVER( 720gr1 )		/* 136047			(c) 1986 */
	DRIVER( ssprint )	/* 136042			(c) 1986 */
	DRIVER( ssprint3 )	/* 136042			(c) 1986 */
	DRIVER( ssprint1 )	/* 136042			(c) 1986 */
	DRIVER( ssprintg )	/* 136042			(c) 1986 */
	DRIVER( sspring1 )	/* 136042			(c) 1986 */
	DRIVER( ssprintf )	/* 136042			(c) 1986 */
	DRIVER( ssprints )	/* 136042			(c) 1986 */
	DRIVER( csprint )	/* 136045			(c) 1986 */
	DRIVER( csprint2 )	/* 136045			(c) 1986 */
	DRIVER( csprint1 )	/* 136045			(c) 1986 */
	DRIVER( csprintg )	/* 136045			(c) 1986 */
	DRIVER( cspring1 )	/* 136045			(c) 1986 */
	DRIVER( csprintf )	/* 136045			(c) 1986 */
	DRIVER( csprints )	/* 136045			(c) 1986 */
	DRIVER( csprins1 )	/* 136045			(c) 1986 */
	DRIVER( apb )		/* 136051			(c) 1987 */
	DRIVER( apb6 )		/* 136051			(c) 1987 */
	DRIVER( apb5 )		/* 136051			(c) 1987 */
	DRIVER( apb4 )		/* 136051			(c) 1987 */
	DRIVER( apb3 )		/* 136051			(c) 1987 */
	DRIVER( apb2 )		/* 136051			(c) 1987 */
	DRIVER( apb1 )		/* 136051			(c) 1987 */
	DRIVER( apbg )		/* 136051			(c) 1987 */
	DRIVER( apbf )		/* 136051			(c) 1987 */
#endif

#if defined(drv_ataxx) || defined(core_none)
	/* ataxx.c */
	DRIVER( ataxx )		/* (c) 1990 Leland */
	DRIVER( ataxxa )	/* (c) 1990 Leland */
	DRIVER( ataxxj )	/* (c) 1990 Leland */
	DRIVER( wsf )		/* (c) 1990 Leland */
	DRIVER( indyheat )	/* (c) 1991 Leland */
	DRIVER( brutforc )	/* (c) 1991 Leland */
	DRIVER( asylum )	/* (c) 1991 Leland */
#endif

#if defined(drv_atetris) || defined(core_none)
	/* atetris.c */
	DRIVER( atetris )	/* 136066			(c) 1988 */
	DRIVER( atetrisa )	/* 136066			(c) 1988 */
	DRIVER( atetrisb )	/* (bootleg) */
	DRIVER( atetcktl )	/* 136066			(c) 1989 */
	DRIVER( atetckt2 )	/* 136066			(c) 1989 */
#endif

#if defined(drv_avalnche) || defined(core_none)
	/* avalnche.c */
	DRIVER( avalnche )	/* 030574			1978/04 [6502] */
#endif

#if defined(drv_aztarac) || defined(core_none)
	/* aztarac.c */
	DRIVER( aztarac )	/* (c) 1983 Centuri (vector game) */
#endif


#if defined(drv_climber) || defined(core_none)
	/* cclimber.c */
	DRIVER( cclimber )	/* (c) 1980 Nichibutsu */
	DRIVER( cclimbrj )	/* (c) 1980 Nichibutsu */
	DRIVER( ccboot )	/* bootleg */
	DRIVER( ccboot2 )	/* bootleg */
	DRIVER( ckong )		/* (c) 1981 Falcon */
	DRIVER( ckonga )	/* (c) 1981 Falcon */
	DRIVER( ckongjeu )	/* bootleg */
	DRIVER( ckongo )	/* bootleg */
	DRIVER( ckongalc )	/* bootleg */
	DRIVER( monkeyd )	/* bootleg */
	DRIVER( rpatrolb )	/* bootleg */
	DRIVER( silvland )	/* Falcon */
	DRIVER( swimmer )	/* (c) 1982 Tehkan */
	DRIVER( swimmera )	/* (c) 1982 Tehkan */
	DRIVER( swimmerb )	/* (c) 1982 Tehkan */
	DRIVER( guzzler )	/* (c) 1983 Tehkan */
	DRIVER( cannonb )	/* (c) 1985 Soft */
#endif

#if defined(drv_system32) || defined(core_none)
	/* 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 */
#endif

#if defined(drv_yamato) || defined(core_none)
	/* yamato.c */
	DRIVER( yamato )	/* (c) 1983 Sega */
	DRIVER( yamato2 )	/* (c) 1983 Sega */
#endif

@saulfabregwiivc
Copy link
Author

By the way, @saulfabregwiivc how are launching the games, sd card only/usb/mixed setup?

@Wiimpathy
I'm using SD card only, by now.

@mahoneyt944
Copy link
Collaborator

Here's a batman core, interesting enough we have hooked up a super rare game to it, marble madness II, a game likely never played on the wii before.
artifacts.zip

games
DRIVER( batman )
DRIVER( marblmd2 )

@saulfabregwiivc
Copy link
Author

Here's a batman core, interesting enough we have hooked up a super rare game to it, marble madness II, a game likely never played on the wii before. artifacts.zip

games DRIVER( batman ) DRIVER( marblmd2 )

Since i couldn't find a romset for MAME2003+ for Marble Madness II (marblmd2), i took latest MAME romset and rebuilt to MAME2003+ with ClrMAMEPro.

And guess what? It works on Wii!
BATMAN (Atari) also works there, too.
Here's a video ;)
https://www.youtube.com/watch?v=R3BcFF3nTek

If u have the time u could make a build for see how's the performance and status of the games wrally and wrally2.

@mahoneyt944
Copy link
Collaborator

Wrally and wrally2 are listed as not working in this core.

@arcadez2003
Copy link
Collaborator

arcadez2003 commented May 13, 2023

Wrally and wrally2 are listed as not working in this core.

We dont have the CPU core for those unfortunately, but i hold onto some hope that an unprotected version
might pop up for either of those two games then it wont matter if we had the MCS51 or not.

The odds are likely long right enough but then again we did see a couple of Galeco sets with no protection
pop up for Glass and Touch And Go so ya never know.

@mahoneyt944
Copy link
Collaborator

mahoneyt944 commented May 13, 2023

@arcadez2003 Wonder if it could be patched around or memory dumped from another mame

Edit: any info on how our recreated tables during init fair to newer video write decode methods? Seems to be easy enough to port but not sure its worth it.

@arcadez2003
Copy link
Collaborator

@arcadez2003 Wonder if it could be patched around or memory dumped from another mame

Edit: any info on how our recreated tables during init fair to newer video write decode methods? Seems to be easy enough to port but not sure its worth it.

The answer to your first question is no chance the second im not sure really we'd have to look into it some time
If your interested in how they finally cracked one of the best and most devious protection schemes ever created
then give this a read sometime....
https://mamedev.emulab.it/haze/2017/07/17/ds5002fp-dumping/

@saulfabregwiivc
Copy link
Author

Hi there,

is it still compilable on Wii? (with make platform=wii INCLUDE_DRV=drv_system32)
BTW i'm compiling right now the new changes of MAME2003+ for Wii for test SEGA System 32 changes (sonic romset support, gfx draw fixes, etc.)
BTW i havent recorded a vid but i have tested the builds of this thread and they all work fine.

@mahoneyt944
Copy link
Collaborator

It should work yes on a rebuild

@saulfabregwiivc
Copy link
Author

Good to know, thanks!

BTW, if u have the time, I'd like to see the performance of Namco System 2 (namcos2) games on Wii on a specific driver build made for these games :)

@mahoneyt944
Copy link
Collaborator

Yeah I can probably do that, took a little detour from split builds to work on system32 🙃. I'll get back to this soon

@saulfabregwiivc
Copy link
Author

@mahoneyt944 speaking of system32, I was positive about SegaSonic the Hedgehog, Golden Axe 2 and SlipStream when i was compiling this on the Wii...

But sadly I dont see much difference :(

  • SegaSonic (sonic) still crashes after tutorial
  • SlipStream (slipstrm) now boots but refuses to accept my input of coins and game start
    Not sure about ga2

Is it just me, or these also affect other platforms?

@mahoneyt944
Copy link
Collaborator

mahoneyt944 commented Jun 4, 2023

Pretty sure there are just Wii issues, though make sure you delete your old configs, any time you use an old version of mame2003+ the inputs will get messed up

@saulfabregwiivc
Copy link
Author

saulfabregwiivc commented Jun 4, 2023

@mahoneyt944 thanks for your reply.
I have deleted all my old settings before launching the new core of system32 I have built but unfortunately still has the same issue.

I have repeated this like three times and still get those issues.

I need confirmation of if these changes are applied to Wii too.

@mahoneyt944
Copy link
Collaborator

mahoneyt944 commented Jun 4, 2023

Yes they share the same source files here so changes will all apply if you're building from the current master.

@saulfabregwiivc
Copy link
Author

@mahoneyt944

Thanks for ur explanation.
Unfortunately still same issue.
I tried to download and recompile latest code from master but still no difference.

I'd like to instead let u to compile builds of these for me, for compare.

Also, maybe i'm doing the compilation wrong?
What command should I use for compile these builds of MAME2003+ for Wii?

@mahoneyt944
Copy link
Collaborator

Sonic no longer crashes but we also likely have endian issues that need addressed for the Wii to work correctly.

@mahoneyt944
Copy link
Collaborator

I'll build system32 real quick.

@mahoneyt944
Copy link
Collaborator

mahoneyt944 commented Jun 4, 2023

Current build of system32, again may have endian issues with Wii. So idk if it will be better or not.

artifacts.zip

@saulfabregwiivc
Copy link
Author

Nope, still same issues i've described in this new build.
I suspect it's related to endianess handling on the Wii (since the Wii is a big-endian platform).
But idk :P

Anyways, could u make a build for namcos2? I wanna see how's the performance on finallap, assault, marvland, ordyne, etc.

@mahoneyt944
Copy link
Collaborator

mahoneyt944 commented Jun 6, 2023

namcos2 was having memory issues compiling into one file, So I split it into 2 files. I'll have to see if there's another solution but for now heres the builds.

part1

	DRIVER( finallap )	/* 87.12 Final Lap */
	DRIVER( finalapd )	/* 87.12 Final Lap */
	DRIVER( finalapc )	/* 87.12 Final Lap */
	DRIVER( finlapjc )	/* 87.12 Final Lap */
	DRIVER( finlapjb )	/* 87.12 Final Lap */
	DRIVER( assault )	/* (c) 1988 */
	DRIVER( assaultj )	/* (c) 1988 (Japan) */
	DRIVER( assaultp )	/* (c) 1988 (Japan) */
	DRIVER( metlhawk )	/* (c) 1988 */
	DRIVER( ordyne )	/* (c) 1988 */
	DRIVER( mirninja )	/* (c) 1988 (Japan) */
	DRIVER( phelios )	/* (c) 1988 (Japan) */
	DRIVER( dirtfoxj )	/* (c) 1989 (Japan) */
	DRIVER( fourtrax )	/* 89.11 */
	DRIVER( valkyrie )	/* (c) 1989 (Japan) */
	DRIVER( finehour )	/* (c) 1989 (Japan) */
	DRIVER( burnforc )	/* (c) 1989 (Japan) */
	DRIVER( marvland )	/* (c) 1989 (US) */
	DRIVER( marvlanj )	/* (c) 1989 (Japan) */
	DRIVER( kyukaidk )	/* (c) 1990 (Japan) */
	DRIVER( kyukaido )	/* (c) 1990 (Japan) */
	DRIVER( dsaber )	/* (c) 1990 */
	DRIVER( dsaberj )	/* (c) 1990 (Japan) */
	DRIVER( finalap2 )	/* 90.8  Final Lap 2 */
	DRIVER( finalp2j )	/* 90.8  Final Lap 2 (Japan) */
	DRIVER( gollygho )	/* 91.7  Golly Ghost */
	DRIVER( rthun2 )	/* (c) 1990 */
	DRIVER( rthun2j )	/* (c) 1990 (Japan) */
	DRIVER( sgunner )	/* (c) 1990 */

part2

	/* 91.9  Super World Stadium */
	DRIVER( sgunner2 )	/* (c) 1991 (US) */
	DRIVER( sgunnr2j )	/* (c) 1991 (Japan) */
	DRIVER( cosmogng )	/* (c) 1991 (US) */
	DRIVER( cosmognj )	/* (c) 1991 (Japan) */
	DRIVER( finalap3 )	/* 92.9  Final Lap 3 */
	DRIVER( finalp3a )	/* 92.9  Final Lap 3 */
	DRIVER( luckywld )	/* (c) 1992 */
	DRIVER( suzuka8h )
	DRIVER( suzuk8hj )
	/* 92.8  Bubble Trouble */
	DRIVER( sws92 )		/* (c) 1992 (Japan) */
	DRIVER( sws92g )	/* (c) 1992 (Japan) */
	DRIVER( suzuk8h2 )
	DRIVER( sws93 )		/* (c) 1993 (Japan) */

part2.zip
part1.zip

@saulfabregwiivc
Copy link
Author

@mahoneyt944 thanks for these builds.

Unfortunately all builds when i try to load a game, even with correct romsets, it just doesn't load them (when i load a romset, it black screens for a moment and then throws me to the RetroArch menu).
Also a few games (finallap, suzuka8h) when trying to load them they crash at DSI exception.

Maybe also endian issues, or memory? IDK :P

@mahoneyt944
Copy link
Collaborator

Seems like memory to me, maybe if I try a single game on a build? Idk

@saulfabregwiivc
Copy link
Author

Yes please.
I want finallap, suzuka8h, assault and ordyne, these are my favs

@mahoneyt944
Copy link
Collaborator

mahoneyt944 commented Jun 6, 2023

Here's finallap all by itself, if this won't go then the others probably won't either.
artifacts.zip

@saulfabregwiivc
Copy link
Author

it just crashed at DSI exception after loading a game :(

@mahoneyt944
Copy link
Collaborator

Yeah unfortunately probably not going to work on the Wii

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants