Project

General

Profile

Actions

Emulator Issues #8104

closed

Mario Party 5 wiggler capsule issue (unknown opcode)

Added by karolherbst about 9 years ago. Updated about 2 years ago.

Status:
Fixed
Priority:
Normal
Assignee:
-
% Done:

0%

Operating system:
N/A
Issue type:
Bug
Milestone:
Regression:
No
Relates to usability:
No
Relates to performance:
No
Easy:
No
Relates to maintainability:
No
Regression start:
Fixed in:
5.0-15931

Description

Game Name?
Mario Party 5

Game ID?
GP5P01

What's the problem? Using wiggler capsule results into unkown opcode.

What did you expect to happen instead? Getting the start and no opcode error.

What steps will reproduce the problem?

  1. Get wiggler capusle inside Party mode (through luck or Cheat)
  2. Use the capsule and pay the 20 coins twice
  3. unkown opcode error

Which versions of Dolphin did you test on? 64bit master-c2bdcbe71c8e559a3bb91ff1da7844dd65406582

Does using an older version of Dolphin solve your issue? If yes, which
versions of Dolphin used to work? Don't know

What are your PC specifications? Linux 64bit, most libraries up to date.

Is there any other relevant information?
https://gist.github.com/karolherbst/5eeee497b657e473490e


Files

2018-09-30_02-20-07.png (123 KB) 2018-09-30_02-20-07.png hockeymikey, 09/30/2018 07:24 AM
wigglerunknown.7z (811 KB) wigglerunknown.7z Fifolog from JMC4789 pokechu22, 01/23/2022 12:56 AM
Actions #1

Updated by JMC4789 about 9 years ago

  • Status changed from New to Accepted

please try to cause this on older versions of dolphin. If you get a savefile (not savestate) with the capsule, then you can try it in older builds.

Confirmed on latest master using a brute force, 4 AI on turbo method.

Actions #2

Updated by karolherbst about 9 years ago

I will try to bisect this issue.

Actions #3

Updated by karolherbst about 9 years ago

so far as I can tell it works with 4.0.2

I will try to find the commit now, which broke this.

Actions #4

Updated by JMC4789 about 9 years ago

look for a comex commit about refactoring opcodes, please.

Actions #5

Updated by karolherbst about 9 years ago

608f9bcd6724c77fef9be8e45ec8f14b49e2b3fb is the first bad commit
commit 608f9bcd6724c77fef9be8e45ec8f14b49e2b3fb
Author: comex comexk@gmail.com
Date: Mon Sep 1 01:11:32 2014 -0400

Refactor opcode decoding a bit to kill FifoCommandRunnable.

Separated out from my gpu-determinism branch by request.  It's not a big
commit; I just like to write long commit messages.

The main reason to kill it is hopefully a slight performance improvement
from avoiding the double switch (especially in single core mode);
however, this also improves cycle calculation, as described below.

- FifoCommandRunnable is removed; in its stead, Decode returns the
number of cycles (which only matters for "sync" GPU mode), or 0 if there
was not enough data, and is also responsible for unknown opcode alerts.

Decode and DecodeSemiNop are almost identical, so the latter is replaced
with a skipped_frame parameter to Decode.  Doesn't mean we can't improve
skipped_frame mode to do less work; if, at such a point, branching on it
has too much overhead (it certainly won't now), it can always be changed
to a template parameter.

- FifoCommandRunnable used a fixed, large cycle count for display lists,
regardless of the contents.  Presumably the actual hardware's processing
time is mostly the processing time of whatever commands are in the list,
and with this change InterpretDisplayList can just return the list's
cycle count to be added to the total.  (Since the calculation for this
is part of Decode, it didn't seem easy to split this change up.)

To facilitate this, Decode also gains an explicit 'end' parameter in
lieu of FifoCommandRunnable's call to GetVideoBufferEndPtr, which can
point to there or to the end of a display list (or elsewhere in
gpu-determinism, but that's another story).  Also, as a small
optimization, InterpretDisplayList now calls OpcodeDecoder_Run rather
than having its own Decode loop, to allow Decode to be inlined (haven't
checked whether this actually happens though).

skipped_frame mode still does not traverse display lists and uses the
old fake value of 45 cycles.  degasus has suggested that this hack is
not essential for performance and can be removed, but I want to separate
any potential performance impact of that from this commit.

:040000 040000 86ddddd6bb800881e1e366bebf1caadc241c4034 9b1440cb47e96bdac9d73dc098ec01df55590b21 M Source

git bisect log
git bisect start

bad: [c2bdcbe71c8e559a3bb91ff1da7844dd65406582] Merge pull request #1837 from adamdmoss/sdl-more-haptic

git bisect bad c2bdcbe71c8e559a3bb91ff1da7844dd65406582

good: [2879cbd2b5648bf896ed521628284bd4d96c3d4f] Installer: Bump PRODUCT_VERSION.

git bisect good 2879cbd2b5648bf896ed521628284bd4d96c3d4f

good: [c25be031fc1031d795157d8344b87b7841145197] Dolphin 4.0 release

git bisect good c25be031fc1031d795157d8344b87b7841145197

good: [72179f98b6d31f7d60c1e450634f0741b18179a7] DSP: Use completion event for ARAM interrupt

git bisect good 72179f98b6d31f7d60c1e450634f0741b18179a7

bad: [5f21683343b2d36274f9d5c590944622bf2955b8] Merge pull request #1388 from waddlesplash/dolphin-qt

git bisect bad 5f21683343b2d36274f9d5c590944622bf2955b8

bad: [2ab19c7cec514d2b9a807164f5ba7bf274d3bdf3] Merge pull request #927 from FioraAeterna/fastermmu

git bisect bad 2ab19c7cec514d2b9a807164f5ba7bf274d3bdf3

good: [f47c30a804701b5df5a1d696b08f21436c8890c6] Merge pull request #940 from delroth/x64emittertest

git bisect good f47c30a804701b5df5a1d696b08f21436c8890c6

bad: [7a1eca149fe2cba0ffc874297565a04c4f7f4675] Merge pull request #841 from AMDmi3/bundled-smfl-include-order

git bisect bad 7a1eca149fe2cba0ffc874297565a04c4f7f4675

bad: [d6000e475b0620c698f5df53cc5319b39b14a38c] Merge pull request #970 from lioncash/ar-statics

git bisect bad d6000e475b0620c698f5df53cc5319b39b14a38c

bad: [09b11db2ee748f1dce83594944b4418e140a29a6] Merge pull request #951 from shuffle2/Anti-Ultimate-master

git bisect bad 09b11db2ee748f1dce83594944b4418e140a29a6

bad: [532b7bb7da8dde441518a025965d4106f1f546c9] Merge pull request #893 from rohitnirmal/scan-build-fixes

git bisect bad 532b7bb7da8dde441518a025965d4106f1f546c9

bad: [fa29b18e3e29c37386fa3a75cfd76f9d279857dd] Merge pull request #840 from FioraAeterna/jittimer

git bisect bad fa29b18e3e29c37386fa3a75cfd76f9d279857dd

good: [031beca9c9dac810011b65f275fbb156d2c03362] Merge pull request #943 from Sonicadvance1/arm32-asserts

git bisect good 031beca9c9dac810011b65f275fbb156d2c03362

bad: [dd5be7c0dc14bfaa7972ce24d07d85bd7189a090] Merge pull request #924 from comex/fifo-command-runnable

git bisect bad dd5be7c0dc14bfaa7972ce24d07d85bd7189a090

bad: [608f9bcd6724c77fef9be8e45ec8f14b49e2b3fb] Refactor opcode decoding a bit to kill FifoCommandRunnable.

git bisect bad 608f9bcd6724c77fef9be8e45ec8f14b49e2b3fb

first bad commit: [608f9bcd6724c77fef9be8e45ec8f14b49e2b3fb] Refactor opcode decoding a bit to kill FifoCommandRunnable.

Actions #6

Updated by kostamarino about 9 years ago

Why did i get a mail about this issue? Oh stupid google code....

Actions #7

Updated by JMC4789 about 9 years ago

Should we disable these popups and make them a warning instead?

Actions #9

Updated by hockeymikey over 5 years ago

Still an issue on 5.0-8775 and stable 5.0. Running on Windows 7 x64.

Actions #10

Updated by UnicorNora almost 3 years ago

Still an issue in 5.0-14263. Can we please disable this popups and make them a debug warning. Since clicking ignore still proceads the game. Running on Windows 10 x64

Actions #11

Updated by pokechu22 almost 3 years ago

Uncheck "Use Panic Handlers" under interface in settings.

Actions #12

Updated by pokechu22 about 2 years ago

https://github.com/dolphin-emu/dolphin/pull/10389 will silence the unknown opcode warning for opcodes 0x01-0x07. It looks like Mario Party 5 has a game bug resulting in it sending 132 vertices when it says it'll send 128, and the data in those vertices is getting interpreted as commands, but the only values are 0, 1, 2, and 3, and hardware testing indicates that those don't actually do anything (0x00 is known to be a NOP, and 0x01-0x07 seem to behave as NOPs as well), so showing a panic alert isn't helpful (an error is still put into the log, though).

JMC4789 also recorded a fifolog of this issue (which recently became possible; before the fifo recorder would die if it encountered an unknown opcode).

Actions #13

Updated by pokechu22 about 2 years ago

  • Status changed from Fix pending to Fixed
  • Fixed in set to 5.0-15931
Actions

Also available in: Atom PDF