F-Zero and Rouge Leader and potentially other programs that use the options TLBHack or MMU
result in a DSI interrupt because these values start at 0 which is the wrong value
Solution
Save the MMU state values
Discussion
The problem hasn't been fixed before because it's not noticed when loading a state
during a running emulation if the values for the current state is correct which they often are because the values are set at boot and not changed after that
after a terminated emulation (that doesn't reset the values) for the same ISO the state is for and the last values are right
These values are used for page trable translation discussed at Terms and Acronyms
MMU PPC Memory Management Unit. Translates virtual address to physical. MMU has two translation mechanisms: block address translation and page table translation
Shutdown
Problem
It's not clear which values are state values
Solution
Adding the values to shutdown because that makes it clear that they're part of the system state
Fake VMEM
Problem
A state saved with "TLBHack" doesn't work if it's changed to "MMU" because fake VMEM isn't saved if "TLBHack" isn't used because
it's 32 MB which makes the state larger without benefit when its not used
Solution
Fake VMEM should be saved regardless of the TLBHack setting because
the state can be loaded with "MMU" (instead of "TLBHack") because fake VMEM is ignored and unnecessary
its size is only 152 KB (,005 larger than the compressed size 27 MB) when it's empty because the state is compressed
Adding MMU state values to state
Problem
State loading before CCPU::Run() in
result in a DSI interrupt because these values start at 0 which is the wrong value
Solution
Save the MMU state values
Discussion
The problem hasn't been fixed before because it's not noticed when loading a state
These values are used for page trable translation discussed at Terms and Acronyms
It's not clear which values are state values
Solution
Adding the values to shutdown because that makes it clear that they're part of the system state
Fake VMEM
Problem
A state saved with "TLBHack" doesn't work if it's changed to "MMU" because fake VMEM isn't saved if "TLBHack" isn't used because
Solution
Fake VMEM should be saved regardless of the TLBHack setting because