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

Author Topic: WORD WITHOUT POINTER (ASSEMBLY)  (Read 420 times)

Megaalisson

  • Newbie
  • *
  • Posts: 3
  • You don't play the game, the game that plays you
    • View Profile
WORD WITHOUT POINTER (ASSEMBLY)
« on: August 08, 2020, 07:55:01 pm »
  :woot!: Hello guys! I'm not very new here, I created the account a while ago, I was browsing the site, but without being logged in, but anyway.

I'm from the Romhacking Br scene and my level is intermediate (I learned a lot in my first translation). I'm translating Final Fight from SNES. It is my first translation, I have already translated all texts editing most game pointers (including the menu that has hardcoded pointers), except I did not translate the "TIME" of the game, it is the last word to be translated (TIME in Portuguese is TEMPO). A friend from the Brazilian community told me that this "TIME" is hardcoded (no pointer), and that the only way to translate is knowing ASSEMBLY. I never worked with assembly. My friend knows, but he wants me to learn and sent me an Assembly Guide. However, I yet don't find the information I want there, can someone help me with that? Does anyone know a tutorial teaching how to edit words without pointers using ASM or give me a small step by step?

If anyone can help me and open the Final Fight ROM, TIME is at 5c 24

If someone gave me an answer as soon as possible, I would be very happy ;D
« Last Edit: August 14, 2020, 01:54:55 am by Megaalisson »

FCandChill

  • Hero Member
  • *****
  • Posts: 549
    • View Profile
Re: WORD WITHOUT POINTER (ASSEMBLY)
« Reply #1 on: August 09, 2020, 12:24:07 pm »
Your friend is correct about it being hardcoded, but not the location... The location is actually 0x6112 in the rom. It's hardcoded like so.

Code: [Select]
00e112 lda #$49               A:0054 X:007f Y:0000 S:1e38 D:0000 DB:00 nvMxdizc V:191 H:155 F:11
00e114 sta $7e245e   [7e245e] A:0049 X:007f Y:0000 S:1e38 D:0000 DB:00 nvMxdizc V:191 H:159 F:11
00e118 lda #$4d               A:0049 X:007f Y:0000 S:1e38 D:0000 DB:00 nvMxdizc V:191 H:169 F:11
00e11a sta $7e2460   [7e2460] A:004d X:007f Y:0000 S:1e38 D:0000 DB:00 nvMxdizc V:191 H:173 F:11
00e11e lda #$45               A:004d X:007f Y:0000 S:1e38 D:0000 DB:00 nvMxdizc V:191 H:183 F:11
00e120 sta $7e2462   [7e2462] A:0045 X:007f Y:0000 S:1e38 D:0000 DB:00 nvMxdizc V:191 H:187 F:11

#$49 is T for example. What you want to do is JMP to somewhere else, add an extra LDA, and JMP back. This is a good guide to learn assembly...

https://skilldrick.github.io/easy6502/

6502 is similar enough to 65C816. As for how I found the correct location, I used the BSNES+ debugging emulator.

Megaalisson

  • Newbie
  • *
  • Posts: 3
  • You don't play the game, the game that plays you
    • View Profile
FCandChill
« Reply #2 on: August 09, 2020, 04:21:59 pm »
 :o Man, thank you very much, this will help me a lot! And about the location of TIME (5c 24), I referred to one of the characters in the text where TIME is located in the hex editor.  :laugh: Thank you again! :beer: