Author
|
Topic: Repointing Dialogue SNES (Read 1 times)
|
Quirino
Guest
|
 |
« on: January 22, 2011, 10:01:52 am » |
|
Currently I try experimenting with hacking the SNES. I've had a small talk with the translator of the complete Monshou no Nazo patch and asked him how exactly RPGuy96 fit in the whole dialogue. Me was told the entire dialogue was just repointed (and the rom was expanded obviously), but he didn't know the specifics.
I tried to find documents to repointing dialogue within expanded roms, but all I could find were some NES documents and I heard rom expanding is hard on NES but easy on SNES. Can someone recommend me some guides on how I would expand SNES roms and repoint dialogue to the expanded part of the rom? Thanks!
|
|
|
|
KingMike
Guest
|
 |
« Reply #1 on: January 22, 2011, 11:15:44 am » |
|
It involves writing (relatively simple) ASM hacks to the pointer-reading (and maybe script-reading) routine(s) to change 2-byte pointers (points to the offset within the current ROM bank) to 3-byte pointers (points to anywhere in the ROM).
|
|
|
|
Quirino
Guest
|
 |
« Reply #2 on: January 22, 2011, 11:23:04 am » |
|
OK, doesn't sound too hard for ASM being  Does it work the same way as the NES? In that case I could use the document you've written. edit: How do I find the SNES pointer by the way? I want to repoint a text location beginning at $71A3C. Will the pointer just be the offset without the header: 7193C -> 3C 19?
|
|
« Last Edit: January 22, 2011, 01:22:50 pm by Quirino »
|
|
|
|
Ryusui
Guest
|
 |
« Reply #3 on: January 22, 2011, 07:55:44 pm » |
|
It depends. There are two primary mapping schemes for SNES cartridges: LoROM and HiROM. HiROM uses $10000-byte banks, so yes, the pointers - assuming there isn't some relative address trickery going on - will be 16-bit little-endian, as you've described. It gets a little trickier if they're LoROM. LoROM banks are $8000 bytes each, so the SNES memory addresses don't line up so nicely with the file addresses. If the HiROM pointer would be $8000 or more, you'll need to subtract $8000 to get the LoROM pointer. File address $017FFC = LoROM address $7FFC (Bank 3) = HiROM address $7FFC (Bank 1) File address $0182FA = LoROM address $02FA (Bank 4) = HiROM address $82FA (Bank 1) Does that help you understand? Alternately, you could just use Lunar Address.
|
|
|
|
Quirino
Guest
|
 |
« Reply #4 on: January 23, 2011, 05:45:42 am » |
|
Accordign to Lunar Address, the ROM type is (I auto-detected it):
LoROM - PC 80:8000 - FF:FFFF
And the address where the text begin is at $71A3C and the LoRom pointer should then be 3C 98 (address: $8E:983C), but still no pointer. Could it be that Lunar Address was wrong about the file type?
edit: nvm, found the pointer. Thanks for your help Ryusui!
My only question left is how that ASM code of rom expanding works. If it works the same as on the NES, I could learn it by the documents. However, I don't see any SNES documents about it.
|
|
« Last Edit: January 23, 2011, 08:07:21 am by Quirino »
|
|
|
|
KingMike
Guest
|
 |
« Reply #5 on: January 23, 2011, 01:40:38 pm » |
|
Does the ROM have a header? Do not delete $200 from the offset if the ROM does not have a header. (address $8E:9A3C)
|
|
|
|
Quirino
Guest
|
 |
« Reply #6 on: January 23, 2011, 02:03:46 pm » |
|
I already found the pointer  But as I asked, are there any documents around here for those 3-byte-pointers? I found some for the NES but I can't seem to find them for the SNES. And by the way, for people to patch an expanded NES rom (like DS' FE1) they must first expand the rom prior to patching and I know that's not required for SNES roms, why is that?
|
|
|
|
KingMike
Guest
|
 |
« Reply #7 on: January 23, 2011, 03:25:01 pm » |
|
Because SNES ROMs can be expanded at the end (up to 4MB), so a patch will just add empty space to the end. NES ROMs will (almost?) always need to be expanded in the middle or beginning, which means a patch would include at least part of the game's original data, which would be violating the site's no ROMs rule.
|
|
|
|
Quirino
Guest
|
 |
« Reply #8 on: January 23, 2011, 03:37:56 pm » |
|
OK, I see. That kinda sucks. But as I asked, are there any documents around here for those 3-byte-pointers? I found some for the NES but I can't seem to find them for the SNES.
I shouldn't constantly ask another question after a question 
|
|
|
|
Ryusui
Guest
|
 |
« Reply #9 on: January 23, 2011, 03:38:09 pm » |
|
I already found the pointer  But as I asked, are there any documents around here for those 3-byte-pointers? I found some for the NES but I can't seem to find them for the SNES. And by the way, for people to patch an expanded NES rom (like DS' FE1) they must first expand the rom prior to patching and I know that's not required for SNES roms, why is that? The SNES uses an upgraded version of the NES' processor. As long as it's data-related and not hardware-specific (graphics hacking, sound hacking, input hacking, etc.), you should still be able to apply the information.
|
|
|
|
KingMike
Guest
|
 |
« Reply #10 on: January 24, 2011, 01:45:56 pm » |
|
Alright, I've written a document and submitted it.
|
|
|
|
Spikeman
Guest
|
 |
« Reply #11 on: January 24, 2011, 10:45:09 pm » |
|
NES ROMs will (almost?) always need to be expanded in the middle or beginning, which means a patch would include at least part of the game's original data, which would be violating the site's no ROMs rule.
Only if the patch format is IPS, there are plenty of more flexible patching formats available, I know that xdelta doesn't have this problem.
|
|
|
|
|