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

Function lookup method: Virtual lookup table #22

Closed
cxd4 opened this issue Jan 24, 2015 · 8 comments
Closed

Function lookup method: Virtual lookup table #22

cxd4 opened this issue Jan 24, 2015 · 8 comments

Comments

@cxd4
Copy link
Contributor

cxd4 commented Jan 24, 2015

Break point found at
.\N64 System\Recompiler\Recompiler Class.cpp
151

Virtual lookup table never works for any ROMs, demos or anything.
It works if I set to CPU interpreter, but that I guess is because virtual lookup table is only for recompiler.

I never remembered needing that option to get anything to work/fixed/faster speed anyway.
So why should it exist?

@oddMLan
Copy link
Contributor

oddMLan commented Jan 24, 2015

Virtual Lookup Table works perfectly fine on my end... AFAIK only some games like Conker's BFD are able to use it, but in games like Mario Tennis and Banjo-Tooie it completely breaks...

Also, it's definitely faster than Physical Lookup Table, a really nice speed boost for the games that are able to use it. It even makes unnecessary using Self-Mod methods in games that otherwise won't start with Physical Lookup Table. Tell you what, I really think it should be the default option. Sadly, it breaks many games so I don't think that would be viable... maybe just RDB dependant; only if the game has been tested throughly it doesn't break with VLT.

EDIT: I see why it breaks. You have to disable "PI DMA" and "Start changed" in order to make it work. Anyway... the best way to make use of the Virtual Lookup Table in order to get the biggest speedup is disabling every Self-Mod method... except maybe for "Cache" but that's it.

@cxd4
Copy link
Contributor Author

cxd4 commented Jan 24, 2015

I think you're right. Any combination of recompiler settings seems to allow Virtual Lookup Table, as long as PI DMA == Unchecked && Start changed == Unchecked.

So I guess that's something about recompiler methods disabling other recompiler methods/fighting over each other. I'm not really that interested in the recompiler anyway, so to me it's no issue. If this is an accidental design flaw, then I guess I leave this issue open. Otherwise, if it's coincidence/intended behavior, maybe I should close it, but maybe the box options should be disabling each other / graying each other out in the GUI if it is known that they do not work together, to prevent confusion.

@project64
Copy link
Owner

it is basically meant for games that use the TLB to map rom to ram, so when there is not enough space in the ram it pages out part, and buffers in more, but the virtual address always points to the same code.

@project64
Copy link
Owner

is this an issue ? What needs to be fixed or can I close the issue?

@cxd4
Copy link
Contributor Author

cxd4 commented Jan 24, 2015

Well I was wondering whether to close it just now, because I no longer am sure if it is an issue.

The observation is Virtual Lookup Table never seems to work, ever, if either (PI DMA || Start Changed) recompiler methods...but is that a natural fundamental design of different optimizations conflicting, or is that an unintended thing which could be helped?

Should it be possible for a user to get optimization improvements from both Virtual lookup table recompiler speed AND either PI DMA or Start Changed? If it should be possible then I think I shouldn't close...but I don't even have enough recompiler knowledge to tell whether that's realistic.

@project64
Copy link
Owner

if they are using virtual address (TLB/virtual lookup) that memory is not always mapped the same so detecting other changes in memory are not really that valid.

This is a good method to use, but it can only be used on certain games.

@oddMLan
Copy link
Contributor

oddMLan commented Jan 24, 2015

So, I guess it would be less confusing if those conflicting/invalid self-mod methods gray out/get disabled in the GUI, like cxd4 said above, but only if Virtual Lookup Table is selected.

@cxd4
Copy link
Contributor Author

cxd4 commented Jan 25, 2015

Yeah, but I'll leave that decision up in the air. GUI options gray each other out, document settings in a new GameFAQ, whatever...but the ultimate reason I created this issue was because I was under the false impression that Virtual Lookup Table never worked period. Something like a lack of current explanation or documentation about the recompiler options doesn't really constitute much of an "issue", so atm I will just close. But yeah, the options UI isn't exactly perfect either.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants