Xevious
A downloadable game
Xevious / Super Xevious (68K)
This is a transcode from the original arcade game (multiple Z80s) to 68K assembly.
The original GAME and SUB CPU ROMs were disassembled and reverse-engineered. Then the code was transcoded line-by-line to 68K assembly. The 'core' code is platform-agnostic and calls out to an operating system dependent (OSD) layer written for each target platform.
The original target is the Neo Geo (AES/MVS/CD). It runs in 'tate' mode.
Subsequent targets include the Amiga (requirements TBD).
In theory the core can be ported easily to any 68K target that can support the resolution, number of sprites (performance) and palette.
PROGRESS:
The core transcode is 100% complete. One "last" gameplay bug to be confirmed.
The Neo Geo target is playable with sound on an emulator and also on real hardware (tested on an AES with NeoSD cartridge and NGCD).
The Amiga target is playable.
NEW!!!: Megadrive version by SirVH
FEATURES:
- game play is identical to the original arcade game, including the pseudo-random number generation
- both Xevious and Super Xevious available
- original dipswitch options supported (except cocktail cabinet mode)
- all original graphics and colours reproduced perfectly on Neo Geo target
- 1 or 2 players supported
- high score load/save for each variant
CREDITS:
- Mark McDougall (aka tcdev): reverse-engineering, core and Neo Geo code and assets
- Jean-Francois Fabre (aka jotd): Amiga code and assets
- Namco: original game :)
| Status | In development |
| Rating | Rated 5.0 out of 5 stars (2 total ratings) |
| Author | tcdev |
| Genre | Shooter |
| Tags | neo-geo, xevious |
Download
Click download now to get access to the following files:
Development log
- Xevious and Super Xevious in the next betaMar 22, 2023
- Super XeviousMar 14, 2023
- Running in MAME will be easier in Beta2Mar 10, 2023
- FREEPLAY issue on MVSMar 08, 2023
- Added Darksoft imageMar 07, 2023


Comments
Log in with itch.io to leave a comment.
Hello,
What is your transcoding technique? What tools do you use? Ghidra?
Hah, funny you mention Ghidra... I've been using IDAPro for many years, owning a paid copy I bought for my business. When I started Xevious, I decided to give Ghidra a go, just to see how it compared and to see if there were any features that I could use that were missing in IDAPro. However one session I discovered that it had suddenly lost several hours of my work. Thinking I had done something stupid, I went back and re-did it all, only to find a few sessions later that even more of my work had disappeared. To say I was pi**sed was an understatement. I'm not 100% sure but I think it was related to some undocumented Z80 instructions being used. So yeah, wouldn't touch it again if you paid me. YMMV. Besides, I didn't find any good reason to use it over IDAPro, which has been rock-solid for me for decades.
The games I RE are generally games that I really like and so my process has as much to do with revealing how it was coded as it does about being able to transcode it. For that reason they're all done by hand. I generally like to finish the RE before I start transcoding, but it doesn't always turn out that way, especially if I get to the point where the remaining RE effort is generally just cranking the handle. That mostly happens with well-written code BTW. And Xevious was well written IMHO.
Again my transcoding has been all hand-coded up until this point. So it's a very long and drawn-out process, but you end up with commented code with meaningful labels and a 1:1 correspondence with the original "source". I always structure the transcoded file exactly the same way as the original, and comment each routine's original address. You can see my sources on github. I've done a few transcodes to C as well, together with some other projects I haven't made public at all. As you can imagine, only well structured assembler lends itself to a C transcode. I would have loved to have done Space Invaders in C, but I don't think anyone could possibly manage it in any meaningful way (other than a single function with goto's everywhere) because the code is spaghetti. Would be interesting to see what AI makes of it though.
Moving forward I'm looking at automating the transcode process at the very least. jotd666 has been a prolific author over the last few years with his transcodes. Automating negates the need to do a lot of RE, so it will depend on my own personal goals for the project.
Right now Frogger has stalled but that has a lot to do with my lack of time. I started it because I wanted to understand how it worked. Not the best code I have ever seen, and there are several well-known bugs in the game, plus one that I found in the code during an RE.
So to summarise on the tools; IDAPro and MAME mostly, and obviously whatever compiler/assembler I'm targeting, running under windows.
Thanks for the well details process
It is very interesting.
I saw a video on YT with the guy that finish to RE GTA SA using AI. He made a GH repo of his tool: https://github.com/Dryxio/auto-re-agent
It's using Ghidra with python api managed by several AI agent. I didn't manage to use it, maybe it works better with a windows executable.
I have done a remake of Torvak the warrior from Amiga using Godot from scratch
I would love to see the gameplay part of the original source, it is the most difficult part in a game along with enemies behavior.
The gameplay is always the most difficult part of any game to RE. For most of the code, you can see on the screen what it's doing, or otherwise know what it is supposed to do. But for game logic, you don't know the algorithm that was implemented - it may not even be anything sensible - so there's no point of reference. I've had a few projects where there were still parts of the original code that I couldn't quite understand, but it didn't prevent a transcode because all that matters is that the same logic is implemented.
I'm not surprised that AI is starting to get to the point where it can RE software. Recently a core was released on MiSTer that was written by AI, and I know from experience that it's no trivial process. I suspect a transcode by AI would be fairly straightforward... I'd like to try one on a simple program one day. RE would be more difficult but I can see how even now it would do quite a bit of it.
I just had to educate myself on Godot. Looks pretty cool. I also had to Google Torvak; despite having an Amiga back in the day, and hundreds of games, I'm not familiar with this one. Interestingly my 11yo son has to develop and showcase a 'game' next week at school as a special project, and I have no idea what to advise him to do. Maybe Godot is the answer...
Yes Godot is a good start. At beginning I would not like to use any SDK and made 2 games using javascript, but collision between elements was a nightmare. You have a lot of tuto for Godot on YT, collision are built-in using mask index, tiles can be set as solid just by a click, and the most interesting are the nodes: graphics elements inheritance using relative or globals positions. Then you code in python-like (or C++ if you prefer) You can compile in a lot of devices, including smartphones. I wish I can compile/export for Amiga or Neo-geo but for now, I'm using a Godot script to export animation for making a game using ngdevkit.
Hey Mark, how are you going? I updated my Mega Drive port and added a new 32X port.
Thanks again for the awesome work you did! :-)
Hi SirVH! Very, very busy with Real Life atm, I'm afraid I won't get to look at retro stuff at all for a few months at least. In fact I'll be busy packing away most of it for a house move. But love the work you're doing! Once day I'll get more time again!
Nice man, I should be moving to Spain in the next months too, it will be an adventure. I hope everything works well in real life for you, and that you get the time to come back and have fun with us :)
Imagine if Xevious arrangement got this treatment in here
I've considered it. It's already 68K of course. I actually did the MAME driver for it (Namco Classics PCB) many many years ago, so I know - or at least knew - quite a few technical details about it. I have also started on a MiSTer core for it. But I haven't looked closely at what it would entail, or even if it's feasible on the Neo Geo.
Is this playable on steam deck?
Hi there, I hope you don't mind, but I have included Xevious in with the best Neo Geo homebrew games of all time.
Again, nice, thanks!
My pleasure
Made some flyer/box art for it in the meantime :)
That is way cool!!!
Blog entry
'mame puzzledp' or 'mame neocdz -cdrom xevious.iso'
Beta2 will remove the need for masquerading as puzzledp
I tried running the puzzledp.zip in MAME, which booted the Neo Geo screen but then just hung on black :(
Will hang on for beta 2.
Never seen Xevious (puzzledp) hang in MAME and I've run it literally hundreds of times!?!
What should I be running this in? FBNeo doesn't seem to recognise either the .NEO or .ISO files, although it claims to recognise some kind of Xevious ROMset, and lr-neocd doesn't recognise the ISO either.