Jump to content
  • 0

!IMPORTANT! Prevent mods from freezing on some emulators.


john_smith_account
 Share

Question

This patch resolves issues related to the DMA mappings, which can cause mods not to work on some emulators.

 

http://www.sendspace.com/file/5cypap

 

Examples:

 

1964: You can enter a map created with SharpOcarina only once. If you enter it again, it will fail to load. This patch will fix that.

 

PJ64 v1.6: is more passive aggressive, preferring to freeze randomly during gameplay.

 

Short Version(for those in a hurry to mod):

 

1. Copy down current ROM settings in your emulator from a working copy of the Debug ROM.

2. Apply patch.

3. Refresh your ROM listing.

4. Apply settings to the newly created ROM.

 

 

Long Version(for those who want to understand how this works)

 

Each resource with in the ROM(actors, objects, scenes, maps, skyboxes, etc.) is broken up into it's own file. The DMA(dynamic memory allocation) table it's self is also a file.

 

I'll not get into all the details on how the DMA table works. Simple version is that it maps memory so you can compress the files easily.

 

The problem is two fold here.

 

Number 1, the DMA table is used to CRC the ROM. Some emulators, and real hardware rely on the CRC. On real hardware, for instance if the CRC isn't correct, the ROM doesn't boot.

 

Number 2, the DMA table maps the memory for the entire ROM. If a mapped address is altered outside it's original mappings, it can cause crashes, and freezes. Even on emulators that don't care about the CRC.

 

How this patch works:

 

The DMA table is actually a tad longer than it has to be to allow for new entries. Since the DMA table is it's own file(not part of the code) it can be even be moved and extended as much as one needs.

 

The game quits reading the DMA table when it hits the first blank entry, 16-bytes of 0's. All I did was cut a line of 0's from the end of the DMA table, and place them right after the entry for the game's code. I then ran rn64crc to fix the CRC.

 

This method allows one to develop the ROM, altering all resource files(actors, objects, scenes, maps, skyboxes, etc.) without the DMA tables giving you grief.

 

This method is convenient in that it allows you to make the changes you need to the DMA tables after you've completed developing, rather than having to update the tables with every alteration you make.

 

When you are done, and want to restore the DMA tables(for use on real hardware, to compress the ROM, etc.) the process is easily reversed.

 

 

How to reverse it:

 

Cut the line of 0's just after the entry for the game's code, and place it back at the end of the DMA table. Run a CRC fix.

Link to comment
Share on other sites

Recommended Posts

  • 0

Is there a link to different plugins anywhere? @Sang, what about the people who try to play the game? They won't get the freeze or anything unless they're using the right plugins?


Edit: I actually found some links to the plugins, but when I install them, the list of places are unreadable and turned into lines x.x

Link to comment
Share on other sites

  • 0

 

This lets it not freeze, but the words are still garbled.

 

What do I do with that code? 8022414B 0002 This is a gameshark code right? I tried putting it in, but it just made everything freeze up.

 

It's not a HUGE issue, and as people won't be using the first slot to save the game (I suppose), then I can just live with the names being garbled.

Link to comment
Share on other sites

 Share

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.