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.
Question
john_smith_account
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
29 answers to this question
Recommended Posts