Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[N64] Ocarina of Time Glitched Subscreen / Inventory #1372

Open
Sirius902 opened this issue Nov 20, 2018 · 24 comments

Comments

Projects
None yet
6 participants
@Sirius902
Copy link

commented Nov 20, 2018

What we know:

  • This bug affects unmodded roms and not romhacks simply because they have different SHA1 checksums. There's nothing special about the roms' contents.
  • Normally, game-specific emulation hacks are enabled by flags in the gamedb, but there are some baked into the copy of Mupen64Plus' core distributed with BizHawk.
  • We can't recompile the core right now.
  • @steventylerseanherr has (unwittingly?) provided a workaround: change the file slightly with a hex editor.

Original bug report follows.


The inventory screen is glitched for OOT such that when using GlideN64, the inventory screen is always white and when using Glide64mk2 it looks very broken. I suspect it has something to do with some sort of hard-coded Subscreen Delay Fix conflicting with the graphics plugins' framebuffer emulation since the inventory works fine in OOT Randomizer which isn't recognized as OOT and thus the delay fix isn't applied to it.

GlideN64 OOT
oot gliden64

Glide64mk2 OOT
oot glidemk2

GlideN64 OOT Randomizer
oot rando gliden64

@Sirius902 Sirius902 changed the title Ocarina of Time Glitched Subscreen \ Inventory [N64] Ocarina of Time Glitched Subscreen / Inventory Nov 21, 2018

@vadosnaprimer

This comment has been minimized.

Copy link
Contributor

commented Jan 29, 2019

Test in dev build please.

@YoshiRulz YoshiRulz added this to the Mupen64+ Update milestone Feb 4, 2019

@Sirius902

This comment has been minimized.

Copy link
Author

commented Feb 22, 2019

I tested this in the most recent dev build, currently from 2/22, and it still has the same issue.

@steventylerseanherr

This comment has been minimized.

Copy link

commented Mar 19, 2019

if its still up for testing i can say that the latest release and good dev build does the same
Legend of Zelda, The - Ocarina of Time (USA) 2019-03-19 00 50 56
seems to be randomish but i can always trigger it on the platform of links house
all 4 graphics plugins each with a simuler effect
and all 3 display methods

i played around with the dev builds enable fb emulation
and with it ticked off i could cause the glitch anywhere

haha just ask for anymore information if needed

@steventylerseanherr

This comment has been minimized.

Copy link

commented Mar 19, 2019

update:
sure enough a randomized rom doesnt have this issue
tested on dev build 2019 03 15 151853

@steventylerseanherr

This comment has been minimized.

Copy link

commented Apr 21, 2019

little more then a month and no response?
guess ill just make another thread then

@YoshiRulz

This comment has been minimized.

Copy link
Member

commented Apr 21, 2019

We're not really able to fix any bugs in Mupen64Plus until we can build it again. Edit: nm, just re-read the thread. I'll look at the db.
Edit 2: GLideN64_CopyDepthToRDRAM is set on all regions, changing that setting doesn't appear to fix it however.
Edit 3: Removing my copy's region from the db, forcing all defaults for GLideN64, doesn't fix it. If the modded rom works, it's because of the changes made to it. I believe there's an additional key display in the pause screen, maybe ask the devs about that.

@steventylerseanherr

This comment has been minimized.

Copy link

commented Apr 21, 2019

just tested in more depth
if bizhawk detects a rom with
........THE LEGEND OF ZELDA .......CZLE
specifically the "THE LEGEND OF ZELDA"
then i get a white background on pausing in a 3d area

if i change that to something else then it works as its supposed to

@YoshiRulz

This comment has been minimized.

Copy link
Member

commented Apr 21, 2019

Wait, it depends on the filename?

@steventylerseanherr

This comment has been minimized.

Copy link

commented Apr 21, 2019

no
the games title in hex
something to do with rom identification
Capture

@YoshiRulz

This comment has been minimized.

Copy link
Member

commented Apr 21, 2019

Right, so BizHawk uses the game's SHA1 checksum to tell games apart. If you change even 1 bit with a hex editor, it's going to think it's a different rom and you won't see a checkmark in the status bar.

@vadosnaprimer

This comment has been minimized.

Copy link
Contributor

commented Apr 21, 2019

Try tweaking the video plugin settings.

@steventylerseanherr

This comment has been minimized.

Copy link

commented Apr 21, 2019

and when bizhawk detects oot as a different rom then the white background is gone and works as intended
clean oot rom
clean oot rom
clean oot rom disguised as something else
clean oot rom disguised as something else

i will say that with the white background gone that the pause screen delay is back in full force
surely there is a way to fix the white screen glitch and the delay glitch at the same time?

and i dont want to be that guy that does this but
pj64 with gliden64 doesnt do this

@YoshiRulz

This comment has been minimized.

Copy link
Member

commented Apr 21, 2019

Might find this extremely relevant -_-

// If game is Zelda OOT, apply subscreen delay fix
if (strncmp((char *)ROM_HEADER.Name, "THE LEGEND OF ZELDA", 19) == 0 && entry == ENTRY_VI) {
if (sl(ROM_HEADER.CRC1) == 0xEC7011B7 && sl(ROM_HEADER.CRC2) == 0x7616D72B) {
// Legend of Zelda, The - Ocarina of Time (U) + (J) (V1.0)
execute_cheat(0x801DA5CB, 0x0002, NULL);
} else if (sl(ROM_HEADER.CRC1) == 0xD43DA81F && sl(ROM_HEADER.CRC2) == 0x021E1E19) {
// Legend of Zelda, The - Ocarina of Time (U) + (J) (V1.1)
execute_cheat(0x801DA78B, 0x0002, NULL);
} else if (sl(ROM_HEADER.CRC1) == 0x693BA2AE && sl(ROM_HEADER.CRC2) == 0xB7F14E9F) {
// Legend of Zelda, The - Ocarina of Time (U) + (J) (V1.2)
execute_cheat(0x801DAE8B, 0x0002, NULL);
} else if (sl(ROM_HEADER.CRC1) == 0xB044B569 && sl(ROM_HEADER.CRC2) == 0x373C1985) {
// Legend of Zelda, The - Ocarina of Time (E) (V1.0)
execute_cheat(0x801D860B, 0x0002, NULL);
} else if (sl(ROM_HEADER.CRC1) == 0xB2055FBD && sl(ROM_HEADER.CRC2) == 0x0BAB4E0C) {
// Legend of Zelda, The - Ocarina of Time (E) (V1.1)
execute_cheat(0x801D864B, 0x0002, NULL);
} else if (sl(ROM_HEADER.CRC1) == 0xF034001A && sl(ROM_HEADER.CRC2) == 0xAE47ED06) {
// Legend of Zelda, The - Ocarina of Time - Master Quest (U) (GC)
execute_cheat(0x801DB74B, 0x0002, NULL);
} else if (sl(ROM_HEADER.CRC1) == 0xF43B45BA && sl(ROM_HEADER.CRC2) == 0x2F0E9B6F) {
// Legend of Zelda, The - Ocarina of Time - Master Quest (J) (GC)
execute_cheat(0x801DB78B, 0x0002, NULL);
} else {
// Legend of Zelda, The - Ocarina of Time Master Quest
execute_cheat(0x801D8F4B, 0x0002, NULL);
}
}

@steventylerseanherr

This comment has been minimized.

Copy link

commented Apr 21, 2019

yep
id say thats the fix for the pause screen lag
using that cheat causes the white screen problem though

@steventylerseanherr

This comment has been minimized.

Copy link

commented Apr 21, 2019

latest nightly pj64 with gliden64 on my pc doesnt have the white screen or the delay at all so im wondering if its possible to fix at all

@YoshiRulz

This comment has been minimized.

Copy link
Member

commented Apr 21, 2019

Because there's nothing wrong with our copy of GLideN64, we'll eventually get it fixed, the problem here is going to be building the Mupen core.

@steventylerseanherr

This comment has been minimized.

Copy link

commented Apr 21, 2019

ok
its always good to know if a problem will be fixed eventually instead of just being ignored

@Sirius902

This comment has been minimized.

Copy link
Author

commented Apr 21, 2019

The issue does not exist when using Mupen64plus from https://m64p.github.io/ but it's likely that they used a newer version of the core.

@vadosnaprimer

This comment has been minimized.

Copy link
Contributor

commented Apr 21, 2019

Our m64p is from 2013 and no one is able to update it.

@steventylerseanherr

This comment has been minimized.

Copy link

commented Apr 21, 2019

yeah i was wondering about that
why not?

@vadosnaprimer

This comment has been minimized.

Copy link
Contributor

commented Apr 21, 2019

It requires reapplying all the functionality that hawk needs from the core, and their codebase is totally different now. @NarryG tried without success.

@Nicholas-Steel

This comment has been minimized.

Copy link

commented May 7, 2019

I was going to report this too, lucky I searched first. My own observation is it's some GlideN64 configuration being loaded from a internal database for recognized ROM's and there's no way in the Bizhawk UI to override the behaviour.

I think the plugin lets you override game specific configurations if you use the plugin's UI instead of whatever Bizhawk does for a UI. At least in PJ64 I believe you can override GlideN64's game database when configuring the plugin (and you get tooltips for all the options too!).

@YoshiRulz

This comment has been minimized.

Copy link
Member

commented May 8, 2019

@Nicholas-Steel As in my earlier comment, the specific (broken) hack that only applies to this rom isn't set in the gamedb with the others, but is hardcoded in the Mupen core library that comes with BizHawk. I've edited a summary into the issue desc to make this clear to future humans.

@Nicholas-Steel

This comment has been minimized.

Copy link

commented May 9, 2019

No problems, thanks for the summary.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.