News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

Author Topic: Repointing Dialogue SNES  (Read 6594 times)

Quirino

  • Jr. Member
  • **
  • Posts: 99
    • View Profile
Repointing Dialogue SNES
« 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!
Fire Emblem translation romhacking topic:
http://www.romhacking.net/forum/index.php/topic,10647.0.html

KingMike

  • Forum Moderator
  • Hero Member
  • *****
  • Posts: 6907
  • *sigh* A changed avatar. Big deal.
    • View Profile
Re: Repointing Dialogue SNES
« 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).
"My watch says 30 chickens" Google, 2018

Quirino

  • Jr. Member
  • **
  • Posts: 99
    • View Profile
Re: Repointing Dialogue SNES
« 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 »
Fire Emblem translation romhacking topic:
http://www.romhacking.net/forum/index.php/topic,10647.0.html

Ryusui

  • Hero Member
  • *****
  • Posts: 4989
  • It's the greatest day.
    • View Profile
    • Tumblr
Re: Repointing Dialogue SNES
« 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.
In the event of a firestorm, the salad bar will remain open.

Quirino

  • Jr. Member
  • **
  • Posts: 99
    • View Profile
Re: Repointing Dialogue SNES
« 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 »
Fire Emblem translation romhacking topic:
http://www.romhacking.net/forum/index.php/topic,10647.0.html

KingMike

  • Forum Moderator
  • Hero Member
  • *****
  • Posts: 6907
  • *sigh* A changed avatar. Big deal.
    • View Profile
Re: Repointing Dialogue SNES
« 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)
"My watch says 30 chickens" Google, 2018

Quirino

  • Jr. Member
  • **
  • Posts: 99
    • View Profile
Re: Repointing Dialogue SNES
« 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?
Fire Emblem translation romhacking topic:
http://www.romhacking.net/forum/index.php/topic,10647.0.html

KingMike

  • Forum Moderator
  • Hero Member
  • *****
  • Posts: 6907
  • *sigh* A changed avatar. Big deal.
    • View Profile
Re: Repointing Dialogue SNES
« 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.
"My watch says 30 chickens" Google, 2018

Quirino

  • Jr. Member
  • **
  • Posts: 99
    • View Profile
Re: Repointing Dialogue SNES
« 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 :P
Fire Emblem translation romhacking topic:
http://www.romhacking.net/forum/index.php/topic,10647.0.html

Ryusui

  • Hero Member
  • *****
  • Posts: 4989
  • It's the greatest day.
    • View Profile
    • Tumblr
Re: Repointing Dialogue SNES
« 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.
In the event of a firestorm, the salad bar will remain open.

KingMike

  • Forum Moderator
  • Hero Member
  • *****
  • Posts: 6907
  • *sigh* A changed avatar. Big deal.
    • View Profile
Re: Repointing Dialogue SNES
« Reply #10 on: January 24, 2011, 01:45:56 pm »
Alright, I've written a document and submitted it.
"My watch says 30 chickens" Google, 2018

Spikeman

  • Hero Member
  • *****
  • Posts: 1063
  • *unce unce unce*
    • View Profile
    • None at the moment, check out my Last.fm page instead?
Re: Repointing Dialogue SNES
« 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.
Open Source Hacking Projects: Guru Logic Champ, Telefang 2, (Want more? Check out my GitHub!)