Ultimate MAME 0.144 - 模擬器

Ophelia avatar
By Ophelia
at 2011-11-16T11:46

Table of Contents

http://mamedev.emulab.it/haze/2011/11/15/ultimate-mame-0-144/

MESS is MAME, I’ve made this point before.

The functionality found in MESS, the ability to run console / computer based
software can easily be added to MAME.

There has been talk of doing this officially for a while now, but every
attempt is met by too many opinions, too many people trying to overcomplicate
the process, and too much focus on offering LESS functionality to the end
user and requiring MORE code to get there.

As a result nothing ever actually happens.

There are some devs saying they’ll quit the scene if it ever happens,
contribute nothing more, there are people who really don’t seem to want to
allow this functionality in MAME, even if there is no cost at all to having
it, and a huge number of benefits in terms of testing, unified development
and a cleaner source tree.

The most elegant solution to this problem is also the simplest one, and that
is to wipe from your mind any concept that a system having a coin slot is a
valid criteria for division, and simply treat the source trees as if that
were the case.

The current MAME source structure has 2 main emulation sub-folders
emu – all common off-the-shelf, non system specific components go here
mame – all custom chips and system emulations go here

Inside each of these is currently a tree structure of drivers, video
implementations, machine implementations, audio system implementations etc.

By default the mess project adds a further folder, ‘mess’ for non-arcade
systems. On the surface that might seem like sound logic, but in reality it
just creates uncertainty over where to look for files. By logic you’d
probably expect to see video/n64.c in the /mess folder. N64 was a home
console, but in reality it exists in the /mame folder, because it’s a custom
component emulation which is also used by arcade games.

Proposals have been put forward to maybe create a 4th folder when merging the
projects ‘shared’ but all that would achieve is bumping having 2 places to
look for files right up to 4, and you’d still need prior knowledge that a
system was shared between arcade / home use to even think about looking there.

Essentially the existing structure MAME already has is still the best, 2
places, making it obvious where to look. The most logical way to merge things
would be to just move the MESS files into those folders, which, if you’re
saying the coin / no-coin criteria doesn’t matter also makes the most sense.

The other argument people keep putting forward is that whatever system is
created it should still allow the creation of MAME and MESS executables with
‘combined’ simply being another build target. This just seems to be
avoiding the benefits of merging altogether. One of the big benefits of
combining the projects is that in a default build every file gets built. When
you’re dealing with a large number of cross-project shared files this makes
the most sense, right now it’s very easy to break the MAME compile with
changes in MESS (or vice versa) simply by not knowing that code was used in
both. If all the dependencies are being built by default that simply can’t
happen, in addition, you’re more likely to know where things are used for
better testing of the actual emulation effects of any changes you do make.
Creating an additional build target is again just more work, and ultimately
offers less benefits, tiny builds of mame/mess specific stuff will always be
possible with tiny.mak, but beyond that are unnecessary. Unsurprisingly, the
easiest way to merge is to just keep the existing MAME target and integrate
the MESS stuff into it, which again gives you the most benefits for the least
amount of work.

So what’s the problem? Others have claimed that the work will take a
significant amount of time, needs to be carefully planned, but again this
just seems like stalling. Due to the size of the change and rapid daily
changes which occur in both projects, it’s not really something you can take
a significant amount of time over, it’s something which needs to be done in
one swift action, and worked further on from there in order to keep everybody
in sync.

In reality, it’s not a change which takes long to implement, at least not if
you keep it simple. It takes about 2 hours if doing it from scratch, working
out the modifications you need to make, working out where the conflicts
between the project are and other such bits and pieces.

The other issues put forward against doing it the simple way are things like
breakage of Save States due to MESS using a different signature, but that’s
to be expected, and the signature issue could be resolved easily anyway.
Given how often states break anyway I doubt many people keep them around.

More action, less talk is apparently the message coming from MAMEdev these
days, and despite writing a lot that’s something I believe in, the whole
concept of ‘if you want something doing, do it yourself’ is what has kept a
lot of MAME development going over the years. With that in mind I’ve created
a guide to creating an Ultimate MAME Build, one with MAME and MESS combined.

With this setup you can run anything from MESS in MAME, it ‘just works’, it
’s wonderful. I can launch Megatech, or, if I don’t want the timer
crippling the software, I can launch the standard Genesis versions. SNES,
NES, PCE, Neogeo AES, NeoGeoPocket, you name it, it’s there, in MAME,
working with the support from MESS. Want to see what state the PSX and Saturn
are in? You can do that too, it sheds plenty of light on the work needed on
those MAME drivers which you otherwise don’t see. I know not everybody is
going to want to follow that guide.. so.. introducing

—- ULTIMATE MAME 0.144 —-

Source
http://mamedev.emulab.it/haze/files2011/ultimatemame0144_source.zip
32-bit Binary
http://mamedev.emulab.it/haze/files2011/ultimatemame0144_32-bit.zip
64-bit Binary
http://mamedev.emulab.it/haze/files2011/ultimatemame0144_64-bit.zip

The only real difference with the MESS stuff compared to what you’re used to
with MAME is the launch syntax, as the majority of MESS systems use Software
Lists instead of the internal Database, but as discussed in the previous post
here, such support is needed for MAME and Multislot support anyway, so those
on the ball won’t find it to be anything new.

“MAME genesis sonic” (or “MAME genesis -cart sonic”) will launch Sonic
for the Genesis / Megadrive

some systems are a bit more complex, for example PCECD

“MAME pce -cart scdsys -cdrom draculax” would launch Dracula X for the
PCE-CD. The syntax is more complex because that’s just how the system works.

for regular MAME stuff everything works just as it did before

“MAME pacman” will still launch pacman

There is absolutely no loss in functionality.

All in all it’s very easy to use, and having that functionality and code
within the same project as MAME is invaluable for developemnt and testing
alike. I just hope something like this is integrated officially sooner rather
than later, because it will make working on heavily shared systems a lot
easier and no doubt lead to many more bugs in MAME being quashed as the MESS
drivers expose them.

I will give on word of warning. The ClrMAME support for the Software Lists is
a bit flaky at the moment for users of that, they can still be imported
however, and there is talk of integrating the lists into the -listXML output
too. Some MAME frontends may struggle, but QMC should work because it’s been
developed to the higher MESS standards already.

Anyway, in conclusion, I’ve always tried to push for progress, always put my
money where my mouth is when it comes to such things, that’s exactly what
this is here. I just hope that people do eventually start to see that this
solution, which is by far the easiest solution, is also in many ways the most
logical solution with the least complications and most benefits. This isn’t
something that needs months and months of debate which ultimately end up
nowhere, it’s just something which initially needs doing in one single
operation, as soon as possible, with a level of commitment which means people
will accept it and move forwards and work on any issues which arise from
there otherwise it simply won’t get done as the last few years have shown.


--

All Comments

Kelly avatar
By Kelly
at 2011-11-19T07:08
這是MAME+MESS的合體版@@"不過之前MAME的頭不是大力反對
Agatha avatar
By Agatha
at 2011-11-23T15:16
MESS的做法並且加以指責違背模擬的意義嗎??

新手想玩大型電玩

Emma avatar
By Emma
at 2011-11-16T04:49
※ 引述《OPWaug (哼哼)》之銘言: : ※ 引述《blazer720301 (小緯)》之銘言: 引言43.. 其實我反而不太會推用MAME來給入門者 除非是像是美少女戰士這種非大類基版的 我來提供一個跟版上大家講的爬文不太一樣的方法 因為如果是初學者,爬文and#34;也許and#34;會爬 ...

ePSXe 遊戲無法開始

Hazel avatar
By Hazel
at 2011-11-16T00:08
小弟第一次在此發文 今天想做菜卻遇到瓶頸 之前抓了很多遊戲都沒有無法開始遊戲的問題 都可以正常進行 只有 [Ore No Ryouri我的料理] 這個遊戲 到了要按START進入遊戲的畫面 按任何按鍵都沒有反應 遊戲畫面跟音樂都正常進行 就差按START 我就可以做菜了 這是一款很好玩的遊戲阿! 有人有解決過 ...

MESSUI 0.144

Kelly avatar
By Kelly
at 2011-11-15T23:56
http://messui.the-chronicles.org/ This is where MESSUI (with NEWUI) builds of MESS, compiled from SVN, will be released, from time to time. Although fans ...

玩MD&SFC&PS1&SS的解析度問題

Barb Cronin avatar
By Barb Cronin
at 2011-11-15T22:42
想弄個電視來專門打老遊戲 雖說用模擬器會畫面自動最佳化, 輸出效果很好,但不考慮用模擬器 因為喜歡用實機 爬了對岸很多文章 有幾個論點 1.老遊戲機建議用CRT螢幕玩 2.最棒的輸出推薦是RGB 事實上對岸很多所謂神人 都自己弄出了RGB線 但是最大問題是 台灣買不太到支援RGB的CRT螢幕 就算有,也 ...

請問紅白機的熱血高校

Selena avatar
By Selena
at 2011-11-15T20:08
請問任天堂最早期紅白機的熱血高校某一款遊戲... 好像叫做[熱血硬派]? 還是就是 [熱血高校] ... 抱歉小弟忘了 該款遊戲開始之前可以設定主角的 名字、生日、格鬥類型(有分格鬥派、空手道、等等的) 開始遊戲之後就是2vs2 開始對打,角色有能力值。 想請問角色生日要設定在幾月幾號能力才會是最強的 ...