citra icon indicating copy to clipboard operation
citra copied to clipboard

Super Mario 3D Land: White Screen after pressing A on title screen with save that has Shining Stars saved in Special World

Open Leo626 opened this issue 8 years ago • 43 comments

From my tests, I've concluded this only occurs with a save that has Shining Stars and saved in the Special World. I used the same save but saved in the Regular World in my 3DS, dumped it and it loaded up just fine in Citra. Tested with a variety of settings and the issue still persists.

citra-qt_2017-01-28_19-06-27

The save file is the first save slot: Special World (white screen) SM3DL - Special World.zip Regular World (no white screen) SM3DL - Regular World.zip

LOG Commit: ac4ea522 OS: Windows 10 Pro 64-bit CPU: Intel Core i5 4670K @ 3.40GHz GPU: NVIDIA GeForce GTX 970 (MSI) GPU driver: 376.33 RAM: 8.00GB Single-Channel DDR3 @ 933MHz

Leo626 avatar Jan 28 '17 23:01 Leo626

I can't get any of the saves you provided here to work, white screen on both. I have four stars on my file, but not glittering/shining stars since I have to complete the game with Luigi too. I think it's strange that something like having glittering/shining stars can cause this.

ghost avatar Feb 12 '17 11:02 ghost

You can try disabling CPU JIT. I have posted this issue several months ago.

ghost avatar Feb 18 '17 02:02 ghost

@1425720626 This still occurs with CPU JIT disabled as of 23bb870.

Leo626 avatar Feb 18 '17 13:02 Leo626

White screen again in the latest version. I also saved the log file.

[   6.904337] Frontend <Info> citra_qt\main.cpp:BootGame:382: Citra starting...
[   7.390594] Service.APT <Warning> core\hle\service\apt\apt.cpp:Init:1004: Unable to load shared font
[   7.390933] Render.OpenGL <Info> video_core\renderer_opengl\renderer_opengl.cpp:Init:488: GL_VERSION: 3.3.0 NVIDIA 384.76
[   7.390949] Render.OpenGL <Info> video_core\renderer_opengl\renderer_opengl.cpp:Init:489: GL_VENDOR: NVIDIA Corporation
[   7.390961] Render.OpenGL <Info> video_core\renderer_opengl\renderer_opengl.cpp:Init:490: GL_RENDERER: GeForce GTX 970/PCIe/SSE2
[   7.392493] Loader <Info> core\loader\ncch.cpp:Load:349: Program ID: 0004000000054000
[   7.396027] Loader <Info> core\hle\kernel\process.cpp:ParseKernelCaps:108: ExHeader kernel version: 2.30
[   7.396271] Service.CFG <Info> core\hle\service\cfg\cfg.cpp:SetPreferredRegionCode:613: Preferred region code set to 0
[   7.480313] Service.SRV <Warning> core\hle\service\sm\srv.cpp:RegisterClient:47: (STUBBED) called
[   7.480659] Service.SRV <Warning> core\hle\service\sm\srv.cpp:EnableNotification:69: (STUBBED) called
[   7.482840] Service.APT <Warning> core\hle\service\apt\apt.cpp:GetLockHandle:261: (STUBBED) called handle=0x00038009 applet_attributes=0x00000000
[   7.487077] Service.NDM <Warning> core\hle\service\ndm\ndm.cpp:OverrideDefaultDaemons:203: (STUBBED) default_daemon_bit_mask=0x0000000F 
[   7.487203] Service.NDM <Warning> core\hle\service\ndm\ndm.cpp:SuspendDaemons:89: (STUBBED) daemon_bit_mask=0x00000009 
[   7.487388] Service.NDM <Warning> core\hle\service\ndm\ndm.cpp:SuspendScheduler:112: (STUBBED) called
[   7.993117] Service.APT <Warning> core\hle\service\apt\apt.cpp:NotifyToWait:238: (STUBBED) app_id=768
[   7.995630] Service.APT <Warning> core\hle\service\apt\apt.cpp:AppletUtility:565: (STUBBED) called command=0x00000007, input_size=0x00000004, output_size=0x00000001, input_addr=0x0FFFFF58, output_addr=0x0FFFFF28
[   7.995994] Service.APT <Warning> core\hle\service\apt\apt.cpp:AppletUtility:565: (STUBBED) called command=0x00000004, input_size=0x00000001, output_size=0x00000001, input_addr=0x0FFFFF2C, output_addr=0x0FFFFF28
[   7.996252] Service.APT <Warning> core\hle\service\apt\apt.cpp:AppletUtility:565: (STUBBED) called command=0x00000004, input_size=0x00000001, output_size=0x00000001, input_addr=0x0FFFFF9C, output_addr=0x0FFFFF98
[   8.010238] Service.GSP <Warning> core\hle\service\gsp_gpu.cpp:AcquireRight:702: called
[   8.010934] Service.GSP <Warning> core\hle\service\gsp_gpu.cpp:RegisterInterruptRelayQueue:397: called, flags=0x00000001
[   8.081546] Service.DSP <Info> core\hle\service\dsp_dsp.cpp:LoadComponent:148: Firmware hash: 0xfebbb7d459664e14
[   8.081570] Service.DSP <Info> core\hle\service\dsp_dsp.cpp:LoadComponent:152: Structures hash: 0x3f02d76b56ccedc5
[   8.081582] Service.DSP <Warning> core\hle\service\dsp_dsp.cpp:LoadComponent:156: (STUBBED) called size=0xBE44, prog_mask=0x000000FF, data_mask=0x000E00FF, buffer=0x003E31B0
[   8.082180] Service.DSP <Info> core\hle\service\dsp_dsp.cpp:RegisterInterruptEvents:247: Registered type=2, pipe=2, event_handle=0x000F002C
[   8.082417] Service.DSP <Warning> core\hle\service\dsp_dsp.cpp:GetSemaphoreEventHandle:173: (STUBBED) called
[   8.082638] Service.DSP <Warning> core\hle\service\dsp_dsp.cpp:SetSemaphoreMask:468: (STUBBED) called mask=0x00002000
[   8.083011] Audio.DSP <Info> audio_core\hle\pipe.cpp:PipeWrite:134: Application has requested initialization of DSP hardware
[   8.083173] Service.DSP <Warning> core\hle\service\dsp_dsp.cpp:SetSemaphore:270: (STUBBED) called
[   8.084843] Service.DSP <Warning> core\hle\service\dsp_dsp.cpp:SetSemaphore:270: (STUBBED) called
[   8.618495] Service <Error> core\hle\service\service.cpp:HandleSyncRequest:95: unknown / unimplemented function 'SetInternalPriorities': port=gsp::Gpu, cmd_buff[1]=0x19, cmd_buff[2]=0x1A
[   8.622707] Kernel.SVC <Warning> core\hle\svc.cpp:CreateMemoryBlock:1033: called addr=0x0041F000
[   8.622911] Service.MIC <Warning> core\hle\service\mic_u.cpp:MapSharedMem:62: called, size=0x1000, mem_handle=0x00120032
[   8.623351] Service.MIC <Warning> core\hle\service\mic_u.cpp:GetGain:194: (STUBBED) called
[   8.623523] Service.MIC <Warning> core\hle\service\mic_u.cpp:SetGain:179: (STUBBED) called, mic_gain=55
[   8.623676] Service.MIC <Warning> core\hle\service\mic_u.cpp:SetPower:209: (STUBBED) called, mic_power=1
[   8.623827] Service.MIC <Warning> core\hle\service\mic_u.cpp:SetClamp:259: (STUBBED) called, clamp=1
[   8.623918] Service.MIC <Warning> core\hle\service\mic_u.cpp:GetGain:194: (STUBBED) called
[   8.624562] Service.MIC <Warning> core\hle\service\mic_u.cpp:StartSampling:105: (STUBBED) called, encoding=3, sample_rate=3, audio_buffer_offset=0, audio_buffer_size=4092, audio_buffer_loop=1
[   9.748953] Service.NDM <Warning> core\hle\service\ndm\ndm.cpp:ResumeScheduler:120: (STUBBED) called
[  11.637529] Service.FS <Error> core\file_sys\savedata_archive.cpp:OpenDirectory:317: Unexpected file in path C:\Users\Administrator\Documents\Citra/user/sdmc/Nintendo 3DS/00000000000000000000000000000000/00000000000000000000000000000000/title/00040000/00054000/data/00000001/GameData.bin
[  11.637561] Service.FS <Error> core\hle\service\fs\fs_user.cpp:OpenDirectory:426: failed to get a handle for directory type=4 size=28 data=[Wchar: /GameData.bin]
[  11.649469] Service.APT <Warning> core\hle\service\apt\apt.cpp:AppletUtility:565: (STUBBED) called command=0x00000004, input_size=0x00000001, output_size=0x00000001, input_addr=0x0FFFFD8C, output_addr=0x0FFFFD88
[  11.671486] Service.FS <Error> core\file_sys\archive_extsavedata.cpp:OpenFile:107: C:\Users\Administrator\Documents\Citra/user/nand/data/00000000000000000000000000000000/extdata/00000000/F000000B/user/ublg.lst not found
[  11.671507] Service.FS <Error> core\hle\service\fs\fs_user.cpp:OpenFile:93: failed to get a handle for file [Wchar: /ublg.lst]
[  11.710042] Service.NDM <Warning> core\hle\service\ndm\ndm.cpp:SuspendDaemons:89: (STUBBED) daemon_bit_mask=0x0000000E 
[  11.710618] Service <Error> core\hle\service\service.cpp:HandleSyncRequest:95: unknown / unimplemented function 'OpenRawFile': port=cecd:u, cmd_buff[1]=0x54000, cmd_buff[2]=0x2, cmd_buff[3]=0x2, cmd_buff[4]=0x20, cmd_buff[5]=0xFFFFD8C
[  11.711149] Service <Error> core\hle\service\service.cpp:HandleSyncRequest:95: unknown / unimplemented function 'ReadRawFile': port=cecd:u, cmd_buff[1]=0x60, cmd_buff[2]=0x60C, cmd_buff[3]=0xFFFFD24
[  11.712168] Service.NDM <Warning> core\hle\service\ndm\ndm.cpp:ResumeDaemons:104: (STUBBED) daemon_bit_mask=0x0000000F 
[  11.855102] HW.GPU <Critical> video_core\renderer_opengl\gl_shader_gen.cpp:SampleTexture:169: Unhandled texture type 5
[  15.979325] Render.OpenGL <Warning> video_core\renderer_opengl\renderer_opengl.cpp:DebugHandler:472: API OTHER 65536: Framebuffer unsupported. Framebuffer object 3 is unsupported because the depth and stencil attachments are mismatched.
[  19.777199] WebService <Error> web_service\web_backend.cpp:PostJson:42: Environment variables CITRA_WEB_SERVICES_USERNAME and CITRA_WEB_SERVICES_TOKEN must be set to POST JSON

ghost avatar Sep 13 '17 11:09 ghost

I discovered a workaround for this:

Go to the save data location using Citra Rename GameData.bin to GameData.old Start the game and create a new file Once it says "The file has been created." and while the game is still running, delete the new GameData.bin file and rename GameData.old back to GameData.bin Go to the Emulation menu and click Restart The list of save files should display and load properly

ampnjdevs avatar Jan 08 '19 00:01 ampnjdevs

I'm having a similar problem with the latest nightly and canary builds, and neither disabling JIT CPU nor the above fix works to get around the issue.

The problem may have expanded to any save file which has stars or is saved in the special worlds. As I had only just beaten world 8 for the first time. The game saved and returned to the title, then I tried to load, but the screen went blank white and stayed there before the file select screen. The game had played perfectly up to that point.

The versions of Citra I tried on: Nightly 1329 | HEAD-2f0ea48 (2019-08-13) Canary 1441 | HEAD-2a39f44 (2019-08-13)

Game: Super Mario 3D Land (USA) (Rev1) The version is from a cartridge, not the eStore version and was decrypted using Batch CIA 3DS Decryptor: https://gbatemp.net/threads/batch-cia-3ds-decryptor-a-simple-batch-file-to-decrypt-cia-3ds.512385/

Attached is a zip containing a save from before the issue (before finishing 8-castle) and one from after the problem manifests (after finishing 8-castle the first time). Also included are log files from a run where the white screen issue manifested.

SM3DL_Saves.zip

JagYui avatar Aug 13 '19 16:08 JagYui

Eloeri avatar Sep 13 '19 13:09 Eloeri

Is there any possibility to circumvent this white screen in the very latest canary builds?

What is causing this to happen? I really hope I can continue my play through some day.

ghost avatar Jan 17 '20 14:01 ghost

@RokkumanX The problem is caused by the flashing stars on your profile that show up once you complete the main part of the game. If you haven't died more than 5 times in a single level, then the stars on the profile will shine, causing the crash. In order to proceed to the next part of the game, you'll have to die more than 5 times on a level so the stars won't shine and the game won't crash.

GottaHelp avatar Feb 10 '20 15:02 GottaHelp

@GottaHelp

Thanks for telling me, so much for a perfect save file I guess. Just to be clear, by dying 5 times means using the white/gold Tanooki suit also right?

ghost avatar Feb 11 '20 08:02 ghost

@RokkumanX Correct.

GottaHelp avatar Feb 11 '20 20:02 GottaHelp

I got to try this out, is the solution really that simple? Glittering stars or not I just want to complete the bloody game ha ha ha.

OK.......I'm doing this for science.

ghost avatar Feb 12 '20 08:02 ghost

Amazing, all it took was to die 5 times before completing the base game and I could finally start to complete the rest of the game.

Glittering profile stars ain't worth shit considering that you miss out over half the game.

ghost avatar Feb 12 '20 11:02 ghost

@RokkumanX Those were my exact thoughts too haha. I just wanted to be able to complete the game. Such a strange issue that I hope gets fixed eventually. Glad I was able to help you out.

GottaHelp avatar Feb 12 '20 20:02 GottaHelp

Please try again with PR #5120 to see if this fixes the issue. To test you can download the latest Canary.

Dragios avatar Mar 18 '20 02:03 Dragios

Still not fixed with #5120.

Hiroex avatar Mar 21 '20 21:03 Hiroex

It's still not working, are they ever going to fix it?

Ninjudo avatar Apr 09 '20 00:04 Ninjudo

Did you guys use a fresh/healthy save file before testing this? A corrupted/tainted save file will stay that way even with PR #5120 merged. It will not magically fix the problem if you are just reusing back the same save file with white screen issue.

To properly test this you need to have a save file that works fine before any white screen occur, play until the moment that you are 100% sure will cause white screen in previous Citra version. Save that then try to load back the save file. Most importantly all this steps must be done on the latest Citra Nightly from the start.

Even better will be just dump the save file from 3DS and load on latest Nightly. This method is more reliable way to confirm whether this issue is fix or not.

Dragios avatar Apr 23 '20 15:04 Dragios

#5120 didn't fix this, I deleted the title ID folder, and used a cheat from https://gbatemp.net/threads/release-super-mario-3d-land-cheat-codes.554275/

ghost avatar Apr 23 '20 16:04 ghost

I can confirm the issue is still not fixed. I used a save from before the issue manifests (same one I linked back in August 2019), completed Bowser's Castle then went to load again. The same white screen appeared and stayed there forever.

This is on current nightly 1515 | HEAD-98fe5f8 (2020-04-28)

And here's the log file from this run. Looks like we're still seeing the same video issues. citra_log.txt

JagYui avatar Apr 29 '20 04:04 JagYui

Fixed or not I got a 100% completed game thanks to @GottaHelp , sure the stars ain't glittering but I can live with that.

The only fix at the moment is to die 5 times in the game and that's it, I saved my 5 deaths to the end of the game before completing the last stage and beating Bowser to see the end.

ghost avatar Jun 21 '20 18:06 ghost

i am not gonna spend time to do all the achievement just to play the extreme Special 8 Crown....would there be a perfect save now? I somehow have Taiwan version...Would a USA/EUR gamedata.bin work?

supermansaga avatar Sep 26 '20 04:09 supermansaga

@RokkumanX The problem is caused by the flashing stars on your profile that show up once you complete the main part of the game. If you haven't died more than 5 times in a single level, then the stars on the profile will shine, causing the crash. In order to proceed to the next part of the game, you'll have to die more than 5 times on a level so the stars won't shine and the game won't crash.

Hi there @GottaHelp, do you have a 100% save so that I could experience Special 8-Crown? Many thanks.

supermansaga avatar Sep 26 '20 05:09 supermansaga

@RokkumanX The problem is caused by the flashing stars on your profile that show up once you complete the main part of the game. If you haven't died more than 5 times in a single level, then the stars on the profile will shine, causing the crash. In order to proceed to the next part of the game, you'll have to die more than 5 times on a level so the stars won't shine and the game won't crash.

Hi there @GottaHelp, do you have a 100% save so that I could experience Special 8-Crown? Many thanks.

I do not at the moment @supermansaga. Sorry.

GottaHelp avatar Sep 26 '20 16:09 GottaHelp

This problem still occurs in Citra Nightly 1629, unfortunately :(

Ugoku avatar Oct 16 '20 14:10 Ugoku

The problem still occurs in Citra Canary 1952.

I was able to devise a sort of workaround. It's not a great workaround, because it involves deliberately invalidating your own perfect save, but it does allow you to continue playing and you can eventually restore your save to perfect status (although doing this will again, make the game not work).

NOTE: Don't have Citra open while doing this.

  1. Find your GameData.bin (save file) for Super Mario 3D Land. For me, it's in "C:\Users\Admin\AppData\Roaming\Citra\sdmc\Nintendo 3DS\00000000000000000000000000000000\00000000000000000000000000000000\title\00040000\00054000\data\00000001" (NTSC version of the game).
  2. Create a backup of GameData.bin (same folder is fine).
  3. Use a hex editor (such as HxD) to open up the original GameData.bin.
  4. If your save game with the shiny status is in slot 1, go to offset (CTRL+G opens the "go to" function in most hex editors) 0x2B8F; if it's in slot 2, 0x3513 instead; if it's in slot 3, 0x3E95 instead.
  5. The value should be 04 here if you've just beaten the base game and have the two sparkly stars. If you're using a save game from a real 3DS (or someone else's 100% save), then the value may be different, since this offset corresponds to the amount of sparkly stars you have. A value of 3F is a perfect full-game all-sparkly save.
  6. However, to REMOVE the sparkly status, you should instead set this value to 40.
  7. Save the file and close the hex editor.
  8. Download this SM3DL save game editor (from Mirror 2, Mediafire.com): https://gbatemp.net/threads/how-to-get-5-sparkly-stars-savefile-back-on-super-mario-3d-land.542645/
  9. Run the save game editor and open up your modified GameData.bin via the "open GameData" button.
  10. You don't need to make any changes, you just need to then hit "save GameData" after having opened it up. Presumably, this fixes a corruption/cheating-monitoring checksum or some such.

Your save should now work. If at some point in the future you want to restore all your sparkly stars (perhaps if Citra has fixed this issue), then you would simply do this all over again but instead change your value to 04 (2 sparkly stars) or 3F (all sparkly stars).

As opposed to what @Dragios said, your save is not permanently corrupted even if you're using an old save. My save was from two years ago, and I was able to fix it by just changing that one flag and re-saving it.

BartyMae avatar Feb 14 '21 18:02 BartyMae

@BartyMae I can confirm that this fix works! Thanks so much!

Ugoku avatar Mar 01 '21 15:03 Ugoku

@Ugoku You're welcome. I had a broken save sitting around for two years and I didn't want to erase it and start all over just to create an imperfect save, so I had to figure out how to fix the save in a way that was reversible. Finally took a look into it again recently and figured it out with the help of other people's related research.

BartyMae avatar Mar 02 '21 23:03 BartyMae

@BartyMae I don't think I'm editing the right value, I have my sparkly save in slot 2 and the value at 0x00003513 was 03. Editing it to 40 and then reverifying it with the save editor just caused the emulator to see the entire .bin as corrupt and erase it (fortunately I had a backup). Could someone take a look at my .bin and see if I'm selecting the right value? I'm not too familiar with hex editors so sorry if I'm not selecting the right one. Again, my sparkly save is in slot 2. https://drive.google.com/file/d/1NZdrUB10mq8qxVsVIFJfUi_gcMOnrecI/view?usp=sharing

WickBRSTM avatar Jun 27 '21 11:06 WickBRSTM

Still happens as of Citra Nightly 1737 Capture

Peduls avatar Dec 20 '21 19:12 Peduls