11-06-2011, 02:27 PM
I think you would have to somehow expand of one byte or rewrite that data :
By what you are saying, you might already know that the start of the string is the third byte(91) and ends by 00. I don't know what the first two bytes are however.
As you can see, all the data is squeezed so there is no extra room:
Here are some pointer I found that are related to that data:
For "Relic", you could always rewrite the data contained in C3/37E3 somewhere else in the C3 bank (there is some empty space at the end of the bank) and change the pointer at C3/372D. Those pointer is used here (C3/31F7) and then you jump to the writing subroutine($69BA):
I think it would work by I never tried it and I'm not very good at assembly but from what I checked it seem logic. If some menu words take less space than what they are originally, you could also squeeze the data but change the pointers as well.
Edit: You should back up your hack before attempting it in cases I'm not right.
Code:
C3/37E3: B97A919EA5A29C00 ("Relic")
By what you are saying, you might already know that the start of the string is the third byte(91) and ends by 00. I don't know what the first two bytes are however.
As you can see, all the data is squeezed so there is no extra room:
Code:
C3/37CB: 397988AD9EA600 ("Item")
C3/37D2: B97992A4A2A5A5AC00 ("Skills")
C3/37DB: 397A84AAAEA2A900 ("Equip")
C3/37E3: B97A919EA5A29C00 ("Relic")
C3/37EB: 397B92AD9AADAEAC00 ("Status")
C3/37F4: B97B82A8A79FA2A000 ("Config")
C3/37FD: 397C929AAF9E00 ("Save")
C3/3804: BB7C93A2A69E00 ("Time")
C3/380B: FF7CC100 (":")
C3/380F: B77D92AD9EA9AC00 ("Steps")
C3/3817: 777E86A900 ("Gp")
C3/381C: BD7A989EAC00 ("Yes")
C3/3822: 3D7B8DA800 ("No")
C3/3827: 377993A1A2AC00 ("This")
C3/382E: B7799D9AAD9ABF00 ("data?")
C3/3836: 377984AB9AACA2A7A000 ("Erasing")
C3/3840: B7799D9AAD9AC500 ("data.")
C3/3848: 377A8EA49AB2BF00 ("Okay?")
C3/3850: 3D818EAB9D9EAB00 ("Order")
Here are some pointer I found that are related to that data:
Code:
C3/3723: 0438 ("Time")
C3/3725: 0F38 ("Steps")
C3/3727: 5038 ("Order")
C3/3729: CB37 ("Item")
C3/372B: D237 ("Skills")
C3/372D: E337 ("Relic")
C3/372F: EB37 ("Status")
For "Relic", you could always rewrite the data contained in C3/37E3 somewhere else in the C3 bank (there is some empty space at the end of the bank) and change the pointer at C3/372D. Those pointer is used here (C3/31F7) and then you jump to the writing subroutine($69BA):
Code:
C3/31F3: A920 LDA #$20
C3/31F5: 8529 STA $29 (set text color to white)
C3/31F7: A22937 LDX #$3729
C3/31FA: A00800 LDY #$0008
C3/31FD: 20BA69 JSR $69BA (display "Item, Skills, Relic, and Status")
I think it would work by I never tried it and I'm not very good at assembly but from what I checked it seem logic. If some menu words take less space than what they are originally, you could also squeeze the data but change the pointers as well.
Edit: You should back up your hack before attempting it in cases I'm not right.