-
Notifications
You must be signed in to change notification settings - Fork 478
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
Comments
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. |
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. |
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. |
is this an issue ? What needs to be fixed or can I close the issue? |
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. |
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. |
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. |
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. |
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?
The text was updated successfully, but these errors were encountered: