看板 Emulator 關於我們 聯絡資訊
"What's New In 0.148u2" This is a ‘live’ article, it will see various updates until I eventually declare it finished. There are two ways you can judge an emulator, either by what it can do, or what it can’t do. Personally I’ve always favored the first option, it’s a more positive outlook, and it’s a good one to take with MAME, and especially MESS, or the combined UME project (and it’s part of the whole philosophy behind it, UME allows you to do more than MAME) It’s with that introduction I’ll mention some of the progress in 0.148u2 coming from the MESS side of things. It goes without saying that the Jaguar driver is a bit rubbish, in terms of what it *can’t* do you could fill a list covering most of the system library but I’m going to focus on what it can do here, and 0.148u2, thanks to some work from Ville, expands what it can do into the realm of being able to run Tempest 2000, the psychedelic follow-up to Atari’s arcade classic. The game runs and is very playable on my Core2 system with full sound, I don’t think the graphics are perfect but it’s a huge improvement on before where it would simply crash the emulator due to unsafe blitter operations overwriting the game ROM in memory! http://mamedev.emulab.it/haze/pics2013/148u2_jag_temp2k_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_jag_temp2k_2.png
http://mamedev.emulab.it/haze/pics2013/148u2_jag_temp2k_3.png
http://mamedev.emulab.it/haze/pics2013/148u2_jag_temp2k_4.png
Purists might say it lacks the crisp vector look of the original, although that’s obvious given that it isn’t running on vector hardware here, but it has a style of it’s own, and I feel could easily have been an arcade release. Jaguar will need a lot more significant work applied (probably a full rewrite) before it’s anywhere near a good driver, but nice to see it getting a bit of attention in the same way that u2 has given some attention to several older MAME drivers. The original Jaguar version of Rayman also benefited from the changes with the collisions now being fixed, although that still lacks sound and the save feature shows ‘ERROR’ in all slots, still it complements the progress made with the Saturn version of the same game in u1 nicely! http://mamedev.emulab.it/haze/pics2013/148u2_jag_rayman_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_jag_rayman_2.png
Speaking of Saturn there have been continued improvements to the emulation of it in u2 from Kale, mostly targeting specific issues highlighted by specific games, but many of the improvements likely have a wider impact than the individual test cases observed. A knock on effect of this Saturn work has been improvements to the ST-V emulation in MAME, and as featured on Kale’s Blog, the game ‘Zenkoku Seifuku Bishoujo Grand Prix Find Love’ is now playable in MAME. If it wasn’t clear from the title it’s an adult game where you undress Japanese ‘gals’ by playing various mini-games, including a ‘find the differences’ one, ‘pairs’ and a jigsaw game. Typical 90s garbage really, but at least it works now, interesting only really because of the platform it runs on. http://mamedev.emulab.it/haze/pics2013/148u2_findlove_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_findlove_2.png
http://mamedev.emulab.it/haze/pics2013/148u2_findlove_3.png
http://mamedev.emulab.it/haze/pics2013/148u2_findlove_4.png
(Kale got Zenkoku Seifuku Bishoujo Grand Prix Find Love working thanks to a better understanding of ST-V / Saturn hardware) Some observations were also made about the protected ST-V games during this development cycle, and Kale identified that the broken player / ball movements in Tecmo World Cup ’98 were indeed related to a protection check, although even with that fixed the game still hangs if the USA Goalkeeper gets the ball, it isn’t clear if that is further protection on the GKs special move, or just a bug in the Saturn / ST-V emulation. From some brief studying of the protection it looks like Sega actually used a complex encryption / compression system on some of the game data for these ST-V games, similar (possibly the same as) the one used on the Naomi cartridges. Further research suggests it might also be used on Model 3, both for the games with compressed graphics there, and even the ones doing a dumb ‘string check’. That would mean Sega were using an encryption scheme as complex as CPS2 to perform nothing more than a hardcoded check against a string in some cases if true, mind boggling! http://mamedev.emulab.it/haze/pics2013/148u2_twc98_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_twc98_2.png
(Kale improved Tecmo World Cup ’98, but it still has game breaking bugs and bad performance) Either way, a lot more work, and possibly extensive data collection + analysis will be needed to either confirm or deny that theory. Decathlete remains an odd-one out and seems to have the compression more for functional purposes than protection, the way it talks to the device is different to the rest, and it explicitly uploads what look like Huffman tables for the compression. I plan on having another look at that one in the future. There were other ST-V fixes as well, the long standing ‘some games give 2 credits on startup’ bug appears to have been fixed as well, and while only a minor irritation it is a sign that the driver, and understanding of the hardware are starting to mature even a huge amount of work remains, especially in terms of performance and video accuracy. The work on Gunpey is included in 0.148u2, although no progress was made on the compression, which remains problematic. My early optimism that I would have that one sorted in a week definitely didn’t pay off! It’s actually rather playable but still marked as not-working because a couple of the sheer number of broken graphics caused by the missing decompression. http://mamedev.emulab.it/haze/pics2013/148u2_gunpey_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_gunpey_2.png
(Gunpey, quite playable but understanding the compression scheme has become a sticking point) You’re probably sick of seeing Cool Riders by now, but that is included as well, I’d had the driver on freeze for a while as not to break in any way prior to the 0.148u2 release, I might give some of the remaining issues another look now that u2 is out of the way, the main irritation is still the sound. http://mamedev.emulab.it/haze/pics2013/148u2_coolridr.png
(Cool Riders is officially supported in 0.148u2) On the MESS side etabeta has been giving some attention to expanded cartridges for a number of systems. The Genesis and SNES were beneficiaries of this, and also improved documentation of the cartridge content (rom name, chip locations, extra hardware etc.) thanks to notes / information from ‘ ICEknight’, ‘Sunbeam’ on the MESS forums and other contributors from elsewhere. This kind of information is essential to the documentation value of MESS, and of course proper identification and emulation of any important extra chips found in the cartridges. I mentioned expanded cartridges, and for the Genesis that more often than not means 3rd party ones, usually unlicensed (by Sega) Chinese titles and the like many of which had unusual / custom mapping for things like their battery backed save systems, or custom protections. A number of games previously requiring hacked dumps to run can now be used with the proper ones, including things like ‘Tiny Toon Adventures 3′ I am however still noticing some stability issues with the driver randomly crashing, especially on startup with certain games (Mulan for example) This may or may not be related to some overall stability issues I’ve noticed since the recent HLSL work went in, where games with dynamic resolution changes are bombing out on me at random. The genesis does do dynamic resolution changes… http://mamedev.emulab.it/haze/pics2013/148u2_genesis_toon3_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_genesis_toon3_2.png
http://mamedev.emulab.it/haze/pics2013/148u2_genesis_toon3_3.png
http://mamedev.emulab.it/haze/pics2013/148u2_genesis_toon3_4.png
http://mamedev.emulab.it/haze/pics2013/148u2_wukong_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_wukong_2.png
http://mamedev.emulab.it/haze/pics2013/148u2_wukong_3.png
http://mamedev.emulab.it/haze/pics2013/148u2_wukong_4.png
http://mamedev.emulab.it/haze/pics2013/148u2_genesis_mulan_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_genesis_mulan_2.png
http://mamedev.emulab.it/haze/pics2013/148u2_genesis_mulan_3.png
http://mamedev.emulab.it/haze/pics2013/148u2_genesis_mulan_4.png
http://mamedev.emulab.it/haze/pics2013/148u2_genesis_smw64_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_genesis_smw64_2.png
http://mamedev.emulab.it/haze/pics2013/148u2_genesis_smw64_3.png
http://mamedev.emulab.it/haze/pics2013/148u2_genesis_smw64_4.png
http://mamedev.emulab.it/haze/pics2013/148u2_beggar_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_beggar_2.png
http://mamedev.emulab.it/haze/pics2013/148u2_beggar_3.png
http://mamedev.emulab.it/haze/pics2013/148u2_beggar_4.png
http://mamedev.emulab.it/haze/pics2013/148u2_beggar_5.png
http://mamedev.emulab.it/haze/pics2013/148u2_beggar_6.png
(A selection of unlicensed Genesis titles where the extra hardware in the cartridges is now emulated) Other systems saw work on obscure carts / pirate releases too, with the Gameboy not being excluded from that. Work was done on support for the custom hardware used by “Shi Qi Shi Dai – Jing Ling Wang Dan Sheng” a Chinese RPG, it still has issues with drivers other than gbpocket due to unhandled bios interactions (maybe it only works on specific machines anyway?) Improvements were made to the Rockman 8 support too, a pirate sequel to the famous series although I’m not convinced it REALLY works yet, most enemies seem to be missing until you die, and the glitches with the video timing are irritating. http://mamedev.emulab.it/haze/pics2013/148u2_gb_shi_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_gb_shi_2.png
http://mamedev.emulab.it/haze/pics2013/148u2_gb_shi_3.png
http://mamedev.emulab.it/haze/pics2013/148u2_gb_shi_4.png
http://mamedev.emulab.it/haze/pics2013/148u2_gb_shi_5.png
http://mamedev.emulab.it/haze/pics2013/148u2_gb_shi_6.png
http://mamedev.emulab.it/haze/pics2013/148u2_gb_rock8_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_gb_rock8_2.png
http://mamedev.emulab.it/haze/pics2013/148u2_gb_rock8_3.png
http://mamedev.emulab.it/haze/pics2013/148u2_gb_rock8_4.png
As part of etabeta’s work the SNES saw a large number of cleanups, and refactoring to make things work in a more ‘logical’ way. For cartridges with expanded hardware you no longer need to specify different base machines, instead the software lists specify what hardware was in the cartridge and dynamically add the extra required CPUs to the emulation etc. The downside to this is that the slot system seems to be causing some pretty significant performance issues, with a drop of 20% reported on some of the SNES titles for which performance was already worrying (the DSP based ones). Hopefully this is temporary, and some more intelligent coding somewhere can win it back. The SNES also had a number of pirate titles and the like, including an odd multi-game cart consisting of an original Tetris game alongside many ported NES titles. Not all the games run especially well in MESS, although many are glitch on (at least some models of) original hardware too. Like most multi-game pirates the cartridge contains extra bankswitching logic and etabeta needed to emulate this in order for it to run at all. http://mamedev.emulab.it/haze/pics2013/148u2_kor10_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_kor10_2.png
http://mamedev.emulab.it/haze/pics2013/148u2_kor10_3.png
http://mamedev.emulab.it/haze/pics2013/148u2_kor10_4.png
http://mamedev.emulab.it/haze/pics2013/148u2_kor10_5.png
http://mamedev.emulab.it/haze/pics2013/148u2_kor10_6.png
(A funky SNES bootleg cart containing NES games required custom bankswitch emulation in order to boot, although still has issues) While that pirate cart is quite funky, there were also a number of multi-games containing regular SNES games. Unfortunately most dumps of these are bad, containing only the first bank, probably due to being dumped with cart copiers incapable of dealing with the bankswitching. A similar problem exists for many Genesis mulit-game pirate carts. There were SNES games with additional protection as well, although many of these seem to have been of an even lower quality than the Genesis ones. Tekken 2 is one such example. A cracked version of the pirate game has been supported for a while, but 0.148u2 adds emulation of the original protected pirate cartridge too. The screenshots might look reasonable but the actual gameplay on offer makes Fit of Fighting in MAME look like Marvel vs. Capcom. Imagine if you will controls, animation and scrolling running at something like 5 frames per second, and a game where most of your attacks, if you do manage to pull any off, get blocked. It’s diabolical. As it turns out, emulating the protection on this also allowed for another game to run, the Street Fighter EX plus alpha pirate, that’s marginally better, but we’re talking very, very small margins here. http://mamedev.emulab.it/haze/pics2013/148u2_snes_tek2_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_snes_tek2_2.png
http://mamedev.emulab.it/haze/pics2013/148u2_snes_sfex_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_snes_sfex_2.png
http://mamedev.emulab.it/haze/pics2013/148u2_snes_sfex_3.png
http://mamedev.emulab.it/haze/pics2013/148u2_snes_sfex_4.png
You’ll have noticed something of a recurring theme with the emulation of these pirate carts, and might be wondering why etabeta has spent his time looking at these rather than spending time improving the actual SNES and Genesis emulation. I think a lot of it comes down simply to levels of interest, it’s always enjoyable to be discovering, documenting and understanding something new then recording those findings in MAME / MESS as a record of how they work, and while the games are often terrible that’s not really the point. When I was working on HazeMD it was one of my goals, to understand the things nobody had put much effort into understanding before, so I’m glad to see that continued here, and it looks like people have even started performing hardware tests for some of the protected carts to document how they really work. I’ve always said the value of MAME / MESS is the knowledge contained within it, and obviously understanding these things increases that even when the games are of little worth. Back to the MAME side, we decided to mark Stadium Hero 96, the game featured in the previous update here, as working. Kale played through the game, completing it, and reported that there only seem to be a few issues with the clipping windows in places, and no game breaking bugs, so the IMPERFECT GRAPHICS flag seems more appropriate than the non-working one at this point. http://mamedev.emulab.it/haze/pics2013/148u2_stadhr96j_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_stadhr96j_2.png
I don’t usually cover bootleg clones, but ‘RevisionX’ dumped an unknown board which turned out to be a new bootleg of Moon Cresta called Star Fighter (making it the 3rd game we have supported to carry that name..) It has some redrawn graphics, fast shooting, and more aggressive wave advancement compared to the original at least, I’m not sure how it compares to some of the other bootlegs. The colours might be wrong because no colour PROM was dumped, and we’re using the one from the original. http://mamedev.emulab.it/haze/pics2013/148u2_starfgmc_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_starfgmc_2.png
http://mamedev.emulab.it/haze/pics2013/148u2_starfgmc_3.png
http://mamedev.emulab.it/haze/pics2013/148u2_starfgmc_4.png
PoPo Bear, another game featured here in a previous update is also officially supported in 0.148u2. http://mamedev.emulab.it/haze/pics2013/148u2_popo_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_popo_2.pngFrom a more technical side of things one of the most significant updates in 0.148u2 is the complete rewrite of the 6809/6309/KONAMI CPU cores by Nathan Woods. This was done as an attempt to make the cores cycle accurate and should lead to far better raster effects in systems like the CoCo in MESS with some other supporting improvements. This is a very big change, and has the potential to break a lot, in fact when it first went in there was widespread breakage of many drivers in MAME and MESS, but during the course of the u1->u2 cycle the majority of the obvious ones were caught and fixed. Just be warned, some bugs could still be lurking because it’s fresh code replacing tried and tested old code. Naturally if you see any new suspicious behavior introduced for games using a CPU from this family in 0.148u2 it should be reported on Mametesters Kale also put some work into the Casio Loopy, allowing preliminary screens of that. The system is a difficult target primarily because there is no dump of the BIOS. The system uses an SH1 with internal ROM, and boots the games from that, with some code pointing back to the bios for various interrupts / system calls. The goal of trying to emulate some of the system like this is in part to gain an understanding how how things work, and potentially come up with a way to dump the content of the internal ROM if the hardware allows for reading of it from the game code. The speech bubbles shown in one of the games might actually be an ideal starting place for such work so while most of this looks like meaningless garbage right now it is actually potentially very important progress. http://mamedev.emulab.it/haze/pics2013/loopy_1.png
http://mamedev.emulab.it/haze/pics2013/loopy_2.png
http://mamedev.emulab.it/haze/pics2013/loopy_3.png
http://mamedev.emulab.it/haze/pics2013/loopy_4.png
http://mamedev.emulab.it/haze/pics2013/loopy_5.png
http://mamedev.emulab.it/haze/pics2013/loopy_6.png
Back to the ‘technical’ changes, we’ve seen a LOT of modernizations in MAME and MESS during this update in additional to Firewave going over a lot of drivers and devices adding proper initialization of many member variables in an effort to keep the project both clean, deterministic and stable. Many of these were missed during older initialization passes because the older (non C++) device model would automatically 0 out memory when creating devices, but the new one does not, and was leaving many things in undetermined states, which generally isn’t a good thing because a lot of those are detectable by the emulated system and/or can cause stability issues. I do wonder if the Genesis stability issues I’ve been seeing while writing this article aren’t related to a similar problem if we can rule out the D3D code updates made for HLSL / multithreading by default. Tracking random issues like that can be a nightmare tho, especially when they stop happening altogether in your debug builds, so I’m glad to see preemptive steps being taken to prevent many potential problems from cropping up later, it certainly helps narrow things down when you have to start looking for potential issues manually. From the oddity department LoganB submitted a software list for the Sega Dreamcast VMU quickload files. While these aren’t technically ‘roms’ as such (but memory dumps) they do provide an accessible way to make use of Sandro Ronco’s driver by validating that you’re using recognized software, software that would definitely work on the original unit. While the approach used is not very ‘pure’ it is convenient, and very useful for regression testing and the like. Here are some screenshots of the Powerstone VMU memory dump running. No new work has been done on the actual driver, but with the software list now being present and hooked up it’s the first time I’ve given it a run through so I thought it warranted putting some shots up, for a reference to how it runs right now (even if it’s still marked as NOT WORKING) http://mamedev.emulab.it/haze/pics2013/148u2_svmu_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_svmu_2.png
http://mamedev.emulab.it/haze/pics2013/148u2_svmu_3.png
http://mamedev.emulab.it/haze/pics2013/148u2_svmu_4.png
http://mamedev.emulab.it/haze/pics2013/148u2_svmu_5.png
http://mamedev.emulab.it/haze/pics2013/148u2_svmu_6.png
http://mamedev.emulab.it/haze/pics2013/148u2_svmu_7.png
http://mamedev.emulab.it/haze/pics2013/148u2_svmu_8.png
http://mamedev.emulab.it/haze/pics2013/148u2_svmu_9.png
http://mamedev.emulab.it/haze/pics2013/148u2_svmu_10.png
Not all work involving MAME and MESS involves changing the actual projects directly either. The support network is vital as well, and while I feel we should keep a lot of this tied as close to the actual emulation distributions as possible (rather than relying on miscellaneous forum posts and wiki entries) it is good to see when people make an active effort to teach people how to use MESS, and show what can be done. It’s with that I’d like to mention a thread R.Belmont created on the MESS forums to help people understand MESS to the point of being able to install an actual operating system inside an emulated PC in MESS. While doing this isn’t very practical for performance reasons it is important people realise that both MESS and UME can make use of far more advanced features of the MAME framework than MAME alone, and show how some of them are used. Now none of this would be possible without the underlying improvements to the PC emulation which have been ongoing for some time now, but the two really go hand in hand and one of the motivating factors for the project(s) is curiosity, and that desire to do things just because they can be done. There is another amusing thread of screenshots of the MESS forums taken from within MESS again showing that you can squeeze a lot of entertainment out of the projects beyond the obvious ones. 來源:http://mamedev.emulab.it/haze/2013/03/19/whats-new-in-0-148u2/ -- ポーラステーション http://perryt0517.wordpress.com/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.23.56 ※ 編輯: conpo 來自: 118.168.23.56 (03/20 23:14) ※ 編輯: conpo 來自: 118.168.23.56 (03/20 23:26)