Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
06717 Media Support Minor Always Oct 14, 2017, 15:35 7 days ago
Tester rcoltrane View Status Public Platform MAME (Official Binary)
Assigned To Resolution Open OS Windows 10 (64-bit)
Status [?] Confirmed Driver
Version 0.190 Fixed in Version Build 64-bit
Fixed in Git Commit Github Pull Request #
Summary MESS-specific 06717: expert11: Reopened - Expert11 - H.E.R.O. (Japan).rom still not working
Description Sorry, I've to reopen this as I cannot comment in a closed report anymore and you guys didn't test it correctly (my fault, I should have given more details). So I will give more details about it here.

I'm playing it sice ever and I had no trouble at all playing it in previous mame versions, always using the expert11 driver and the cartridge rom named h.e.r.o. (Japan).rom officialy supported by the software list.

Try to start the JAPAN ROM cart version using the expert11 driver and you will see that it stays at the expert11 intro screen and nothing else happens. I tried to mount in in MAME and reboot and it still does not work, in fact, it crashes MAME (try it aswell). I tried running it from command line as pointed by someone in the closed report but it gives the same results (the game has to start automatically, but it does not anymore) and I also tried to erase my .cfg and .ini files and this one still does not work. Even with a clean mame 0.190 install it does not work anymore.

Yie-ar Kung-Fu II is working fine, just H.E.R.O. started having this issue, I don't know why. That's why I reopened the report. I need a better explanation on why the rom cartridge is not working anymore because the same thing happened before, a looooong time ago, and it had something related to the cart size or something, but after some time it was fixed and the game/system have been working fine since then... until now :P
Steps To Reproduce Get the h.e.r.o. (japan).rom file somewhere and run it in mame 0.190 expert11 driver using a Frontend ou through command line.
Additional Information It was working before and stopped working in current MAME version. So I presume someone has changed something in the code for some reason because my files are the same.
Github Commit
Flags
Regression Version
Affected Sets / Systems expert11
Attached Files
 
Relationships
There are no relationship linked to this issue.
Notes
11
User avatar
No.14273
Robbbert
Senior Tester
Oct 14, 2017, 17:02
edited on: Oct 14, 2017, 17:20
This is a very weird bug in MAME. It works perfectly well if you don't have expert11.ini in existence.

But, once that ini file exists, the game will only start if there's no slots in the file. Once a slot is there, even if empty, the game loads, but will not start.

Most likely caused by the recent options rewrite that has caused so much havoc.

There's an associated bug: if you get the game to run, go to the slots menu and cartslot1 will say "nomapper", which is illegal. Then press left or right arrow, nomapper goes away and cannot be found again. Select reset, and the game will no longer start. If you manually put "nomapper" into the ini file, MAME will say it's an unknown slot option and terminate.

Also, to get the cart to load, you have to either start with mame expert11 msx1_cart:hero, or mame expert11 -cart1 hero. Just typing mame expert11 hero will load the cassette version of the game.
User avatar
No.14275
rcoltrane
Tester
Oct 14, 2017, 20:12
edited on: Oct 14, 2017, 20:40
Thanks for your explanation Robbert!! You actually helped me and through command line, the game runs exactly how you explained. But when I try to mount the game using QMC2 (what I've been doing for a long time and it was working before), it won't run. And entering the MAME internal UI says "nomapper" in the cartslot1 as you said. So it really seems to be a weird MAME bug indeed.

An interesting discovery: Here's the command line generated by QMC2 which is not running the game, even after deleting the expert11.ini file:

mame64.exe -nouse_backdrops -nouse_bezels -nouse_cpanels -nouse_marquees -nouse_overlays -bgfx_screen_chains -bgfx_shadow_mask -noreadconfig -nofilter -triplebuffer -pause_brightness 1.00000000 -ui_active -noplugins -skip_gameinfo -noui_mouse -hashpath "C:\RCS\Games\UME\hash" -inipath "C:\RCS\Games\UME\ini" -rompath "C:\RCS\Games\UME\roms" -samplepath "C:\RCS\Games\UME\samples" -nounevenstretch -video d3d -output console expert11 -cartridge1 "C:\RCS\Games\UME\roms\EXPERT11\h.e.r.o. (japan).rom"

It seems that I've found the bug. When mounting the cartridge with the software list name only (hero) as suggested by Robert, the game runs. But when I tried to run the game as QMC2 was doing, by giving the full path of the game file in the command line parameters, the game won't run anymore! This is the bug! Here's the command line that is not running the game:

mame64 -output console expert11 -cartridge1 "c:\rcs\games\ume\roms\expert11\h.e.r.o. (japan).rom"
User avatar
No.14276
Robbbert
Senior Tester
Oct 14, 2017, 23:13
edited on: Oct 15, 2017, 15:21
Make sure you're using QMC2 correctly. The command line you've given indicates that the software is being treated as loose software rather than a software-list item. This is a Very Bad Idea, because any extra info in the xml will not be passed to MAME. I find it hard to believe that QMC2 would have been programmed with such a mistake. I'd suggest you ask on the QMC2 forum to find if you're using it wrongly.
User avatar
No.14277
rcoltrane
Tester
Oct 15, 2017, 12:51
edited on: Oct 15, 2017, 14:43
Ok, I will do that. I'm not using this system with software list, I just mount the game to play like I do with other systems which do not have a software list, such as old PC machines. I just do not understand why it does not work for just some games in this system, whereas in other systems such as PCs, all my games are mounted in the same way and all of them runs just fine.

IMHO all games should work properly no matter in which way you mount them in MAME (using software lists or mounting the files straight from a given path).
User avatar
No.14278
Robbbert
Senior Tester
Oct 15, 2017, 15:01
We are getting off topic here. You originally reported a MAME bug, I verified that one exists. That's all we can do here until someone fixes it.

As to QMC2 and ways of mounting files, that is to be discussed elsewhere.
User avatar
No.14280
Robbbert
Senior Tester
Oct 15, 2017, 15:26
edited on: Oct 15, 2017, 15:26
I'm confirming the existence of bugs, seemingly related to slots.

There is a workaround, by loading the file as a software-item from the command line, and making sure expert11.ini does not exist.
User avatar
No.14283
Tafoid
Administrator
Oct 15, 2017, 19:40
A vast majority of software list items will load as picker items. Only ones requiring special mapping and are not listed in the deprecated msx.hsi or msx2.hsi hash files (used primarily in MAME/MESSUI) such as Hero and other Activision carts will not load via picker anymore (since 0.154 or so).

Reference the first time this was reported at 05949 where it was shown that softlist was the way to load these.
https://github.com/mamedev/mame/commit/32fd5e1405105b2b1bd84664e7c661a6afb9f901
User avatar
No.14284
Haze
Senior Tester
Oct 16, 2017, 04:02
if you bypass the software lists then you're at the mercy of some ugly guesswork code in order to determine what is meant to be inside the cartridge.

really, the softlists should be used, trying to do direct loading results in all sorts of problems for a number of systems because the truth is the roms alone don't contain enough information to comprehensively guess what's in the cartridge in every case, so the code to try and detect such things just becomes progressively uglier over time. the softlist approach is much cleaner.
User avatar
No.14285
rcoltrane
Tester
Oct 16, 2017, 12:30
Thanks for the explanations! Well, since the game is working through the msx software list, I can tell that my issue here is fixed. Feel free to let this report open or close it.
User avatar
No.20136
Robbbert
Senior Tester
Apr 30, 2022, 12:15
The current situation is once you get the game to run, go to slot options, you see the illegal option "nomapper", attempt to change it, and MAME will crash.

throw_bad_array_new_length in slot_option::specify
User avatar
No.22441
Robbbert
Senior Tester
7 days ago
There's no change to the crash situation that I mentioned in my last post.

Here's a proper dump.

C:\MAME>mame expert11 -cart1 hero

-----------------------------------------------------
Exception at EIP=00007ffaa475cdc5 (__cxa_throw_bad_array_new_length+0x86c54a15): ACCESS VIOLATION
While attempting to read memory at ffffffffffffffff
-----------------------------------------------------
RAX=0000003e31f29230 RBX=000001f6f25d3d08 RCX=6f6c65766564206f RDX=000000000000002c
RSI=746e692074692070 RDI=0000000000000001 RBP=6f6c65766564206f RSP=0000003e31f291c8
 R8=746e69207469206b R9=000001f6f25d3d68 R10=0000000000000000 R11=72657070616d6f6e
R12=0000003e31f29230 R13=000001f6f25d3d18 R14=0000003e31f29220 R15=e3dace96d9cd40df
-----------------------------------------------------
Stack crawl:
  0000003e31f291c0: 00007ffaa475cdc5 (memchr+0x0005)
  0000003e31f29280: 00007ff615d24bf4 (slot_option::specify(std::basic_string_view<char, std::char_traits<char> >, bool)+0x00a4)
  0000003e31f29370: 00007ff61b1bb489 (luaopen_lfs+0x781d89)
  0000003e31f29450: 00007ff61b1bc3a3 (luaopen_lfs+0x782ca3)
  0000003e31f294c0: 00007ff61b1bcb7c (luaopen_lfs+0x78347c)
  0000003e31f29540: 00007ff61aa486f1 (luaopen_lfs+0xeff1)
  0000003e31f295c0: 00007ff61aa48a99 (luaopen_lfs+0xf399)
  0000003e31f296d0: 00007ff6199c2a33 (mame_ui_manager::update_and_render(render_container&)+0x01e3)
  0000003e31f29760: 00007ff615e8b798 (video_manager::frame_update(bool)+0x0048)
  0000003e31f297c0: 00007ff612bed01a (screen_device::vblank_begin(int)+0x022a)
  0000003e31f29840: 00007ff612bdc14b (device_scheduler::timeslice()+0x013b)
  0000003e31f299c0: 00007ff612bd93a5 (running_machine::run(bool)+0x01c5)
  0000003e31f2efe0: 00007ff615d1910c (mame_machine_manager::execute()+0x024c)
  0000003e31f2f3d0: 00007ff619a0adfa (cli_frontend::start_execution(mame_machine_manager*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)+0x03ea)
  0000003e31f2f6e0: 00007ff619a0b42a (cli_frontend::execute(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)+0x007a)
  0000003e31f2f740: 00007ff615d13eb7 (emulator_info::start_frontend(emu_options&, osd_interface&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)+0x0027)
  0000003e31f2fb10: 00007ff61b695a21 (luaopen_lfs+0xc5c321)
  0000003e31f2fb60: 00007ff60ee612ee (__tmainCRTStartup+0x016e)
  0000003e31f2fb90: 00007ff60ee61406 (mainCRTStartup+0x0016)
  0000003e31f2fbc0: 00007ffaa42e7374 (BaseThreadInitThunk+0x0014)
  0000003e31f2fc40: 00007ffaa629cc91 (RtlUserThreadStart+0x0021)