Opened 21 months ago

Closed 9 months ago

#13895 closed defect (fixed)

WII: Pointer is missing after opening ScummVM menu

Reported by: Ereina8 Owned by: digitall
Priority: normal Component: Port: Wii
Version: Keywords:
Cc: Game: Sam and Max

Description

Hello.

It's my first time using ScummVM on Wii, but it has been enough to spot a bug.

Using the latest version 2.6.0, while playing a game, if you open the ScummVM menu pressing the home button with the wiimote, you then go back to the game (resume) and the pointer is missing.
If you manage to move your character to a different scene, the pointer comes back, but of course nobody wants to deal with that.

I've tried 2.1.1 version and this bug doesn't appear. Everthing works perfectly.

Games: Sam & Max and Monkey Island, but I think it happens with any game.

Hopefully my explanation is enough, it's very easy to reproduce this bug.

Thank you!

Change History (12)

comment:1 by dwatteau, 21 months ago

Component: --Unset--Port: Wii
Summary: Bug on Wii versionWII: Pointer is missing after opening ScummVM menu
Type: patchdefect

comment:2 by dwatteau, 21 months ago

Hello,

Thanks for reporting this issue! I've completed some fields for easier tracking and review of this bug report.

Hopefully, a ScummVM developer having access to a Wii system can look into this at some point :)

comment:3 by digitall, 11 months ago

Right. Firstly, this was reported again on all versions up to and including v2.8.0 on the forums as https://forums.scummvm.org/viewtopic.php?p=98663.

This can be replicated in Full Throttle and probably a fair few other games by opening and then closing the Options menu with (1) button on the Wiimote and probably the GMM as well.

It seems to be triggered by the cursor change to a GMM / launcher dialog and back to game.

comment:4 by digitall, 11 months ago

Debugging this was tricky as I don't have a working USB Gecko or network GB solution, but I did work out a viable solution. By hold the up button of the directional pad on a Wiimote and pressing (1), this toggle visibility of the text console as an overlay. This contains the output from various printf() statements in the backend (and probably debug()) so can add more of these to track down issues as I have done.

comment:5 by digitall, 11 months ago

The issue was not the showMouse() API as I had initially thought:
https://github.com/scummvm/scummvm/blob/master/backends/platform/wii/osystem_gfx.cpp#L645

That works as expected.

comment:6 by digitall, 11 months ago

The reason for the missing cursor is that when you switch to the GMM dialogs, this loads a cursor which is RGBA, not CLUT8 i.e. paletted. This uses the setMouseCursor API:
https://github.com/scummvm/scummvm/blob/master/backends/platform/wii/osystem_gfx.cpp#L657

Once you switch back to the game, the same function is called, but while this loads the mouse cursor data for the CLUT8 cursor, it has lost and does not restore the palette present prior to the switch to a RGBA cursor.

This will only affect games which use CLUT8 paletted cursors and which don't reload the palette periodically.

comment:7 by digitall, 11 months ago

A workaround in FT and other games is to blindly point at an exit point of the screen. Upon scene change, the engine does a setPalette call and thus fixes the cursor palette as a side effect:
https://github.com/scummvm/scummvm/blob/master/backends/platform/wii/osystem_gfx.cpp#L329

comment:8 by digitall, 11 months ago

Fixing this should be possible by either having two textures for mouse or keeping the palette data when switching from CLUT8 to RGBA cursor and restoring it if you switch back.

comment:9 by fracturehill, 10 months ago

I've pushed what is hopefully a fix to master. digitall was nice enough to give it a quick run for me since I don't actually own a Wii myself, but I'd appreciate a bit more testing before declaring the issue fixed.

comment:10 by digitall, 10 months ago

Owner: set to digitall
Resolution: fixed
Status: newpending

Confirming that I tested a local build with @fracturehill patch for this applied and the cursor / mouse behaved itself in GMM (RGBA), Full Throttle (CLUT8) even when switching to the Options Dialog (RGBA) and back ... This is fixed by:
https://github.com/scummvm/scummvm/commit/73b66c60f873e80f327ddafb052d07bc8da79615

@Ereina8 : Could you test with the next nightly build of master and see if this works for you (Note that you will need to remove the large plugins as per https://bugs.scummvm.org/ticket/14390 to run this currently) ...

Setting bug state to pending. If no further feedback or problems are reported, this bug will be closed in 14 days.

comment:11 by digitall, 9 months ago

Since no feedback from original reporter and confirmation from others on forum post that this fix appears good, am closing this as fixed:
https://forums.scummvm.org/viewtopic.php?t=16777&start=15

comment:12 by digitall, 9 months ago

Status: pendingclosed
Note: See TracTickets for help on using tickets.