Users browsing this thread: 1 Guest(s)
Need Some Help

#11
Posts: 3,966
Threads: 279
Thanks Received: 234
Thanks Given: 56
Joined: Oct 2011
Reputation: 65
Status
Tissue-aware
(03-21-2018, 05:13 AM)Robo Jesus Wrote: Yeah, I had the same issue when I was trying to recreate what GhostXIII did with his "Runic becomes Shock" relic without the rest of what he added in his own mod. I did eventually figure out what to do (incase you want to use it yourself, you can find it on romhacking.net)

Is this what you are reffering to? Tongue

https://www.ff6hacking.com/forums/thread-2015.html

(03-21-2018, 05:13 AM)Robo Jesus Wrote: For newbies, a lot of people forget that sometimes simple stuff like that actually does need to be shown and/or explained.

To be fair it's the kind of info that won't be written in every document, it's in the same class as "Don't forget to substract 0x200 bytes from your offset if your ROM has a header", it is implied the person following the document knows this. And it's an info easily available and documented in various places, only newcomers don't read these document as their intro to ROM hacking. They also won't search the term "SNES memory mapping" on Google if they don't know it actually exist. So considering these two things I understand it is confusing the first time.

However I expect someone read a page named "Hacking FAQ" or "ROM Hacking basics" before posting about common ROM hacking concepts. Our page was lacking this explanation so I just added a question about offsets and SNES addresses (plus one about patching). Thanks for pointing that out. If you have any common question suggestion, feel free to suggest them and I can add them: https://www.ff6hacking.com/wiki/doku.php?id=hacking_faq
  Find
Quote  
[-] The following 1 user says Thank You to madsiur for this post:
  • Robo Jesus (03-21-2018)

#12
Posts: 45
Threads: 0
Thanks Received: 0
Thanks Given: 24
Joined: Feb 2015
Reputation: 0
Status
None
(03-21-2018, 07:20 AM)madsiur Wrote:
(03-21-2018, 05:13 AM)Robo Jesus Wrote: Yeah, I had the same issue when I was trying to recreate what GhostXIII did with his "Runic becomes Shock" relic without the rest of what he added in his own mod. I did eventually figure out what to do (incase you want to use it yourself, you can find it on romhacking.net)

Is this what you are reffering to? Tongue

https://www.ff6hacking.com/forums/thread-2015.html

Yep. I picked doing that as it was both easy enough to mess with without breaking everything should I get anything wrong, and a nice test to see if I was doing things correctly.

I kept wondering what was going on (as things were not resulting in what I was expecting), before a convo with darknil elsewhere helped me figure out I also needed to mess with the status menu bits of the coding as well with those particular item triggers (as you probably all too well know, the vanilla game has five such triggers for the five relics that change various battle commands into other battle commands, and those triggers change things in battles and things in the character status screen when equiped). Once I got everything working I made some ips files for changing the five relics (well, technically ten ips files. One set with just the trigger changes, and a second set with both the trigger changes and where each relic with those triggers were then editted with FF3usME), made a text document explaining everything and how it was done (and linking to GhostXIII's patch if they wanted that), offered thanks to those who helped, and then uploaded it over on romhacking for those who wanted it.

If I have time to waste, I may mess around with making more ips files for every variation changable (Fight to Magitek, Fight to Mime, etc., going through EVERY command change possible for those five triggers) to make it easy for other modders to use and utilize for their own projects. Granted, for those who have and know how to do hex work it's not that big a problem, but for newbies and those who want to save time, something like that would be a very useful thing for them.

(03-21-2018, 07:20 AM)madsiur Wrote:
(03-21-2018, 05:13 AM)Robo Jesus Wrote: For newbies, a lot of people forget that sometimes simple stuff like that actually does need to be shown and/or explained.

To be fair it's the kind of info that won't be written in every document, it's in the same class as "Don't forget to substract 0x200 bytes from your offset if your ROM has a header", it is implied the person following the document knows this. And it's an info easily available and documented in various places, only newcomers don't read these document as their intro to ROM hacking. They also won't search the term "SNES memory mapping" on Google if they don't know it actually exist. So considering these two things I understand it is confusing the first time.

However I expect someone read a page named "Hacking FAQ" or "ROM Hacking basics" before posting about common ROM hacking concepts. Our page was lacking this explanation so I just added a question about offsets and SNES addresses (plus one about patching). Thanks for pointing that out. If you have any common question suggestion, feel free to suggest them and I can add them: https://www.ff6hacking.com/wiki/doku.php?id=hacking_faq

Indeed.

When I started things were not matching up at all (it was a mess, much like what ShadowDreamer was describing), and I kept reading and rereading the documents I had on hand and none of the codes were matching up or making sense for why they weren't matching up, and I couldn't figure it out. I believe it was one of your videos on messing with game trigger events that I was finally able to spot that bit where you changed the "Display Offset As" bit. After that, things started clicking into place, and it became easy to make things match and then start messing with things and making them work.

I'm hoping that's the issue ShadowDreamer was having, as it would help make it easier for them to get into things and deal with the problems they were having.

Also, thank you. I may do that, but only after I've had some time to figure out what questions and answers would need to be listed for those who jumped into the deep end of things like I did and didn't know what questions to ask in order to find the answers to their problems. Tongue
  Find
Quote  

#13
Posts: 614
Threads: 49
Thanks Received: 0
Thanks Given: 4
Joined: Feb 2017
Reputation: 25
Status
None
I actually started off doing the same thing RoboJesus did, getting a relic to change Runic to Shock. I understood what I needed to do almost immediately, but it took me weeks to figure out how to do it. I read a lot of those documents, but they all started off with "here's how to understand SNES assembly". That was way too dense for a newbie. I just needed to figure out where to get a hex editor, how to find the byte that I wanted to change, and save the file.

I finally figured it out watching the NPC Sprite Expansion video on Youtube. (https://www.youtube.com/watch?v=gvX-GQaaz2A) In the video, the hacker says something to the effect of, "And if you don't know why I'm going to this hex address, you shouldn't be watching this video". It set the light bulb off of saying, "Hmmm... so the hex address IS different than what I'm seeing in the disassembly. I bet there's a quick way to convert between one and the other." Once I knew to look for that, I was able to find the answer within minutes.


Projects:
FFVI: Divergent Paths (Completed) - a complete storyline and gameplay hack of FF6 that adds Leo as a playable character
  Find
Quote  
[-] The following 2 users say Thank You to PowerPanda for this post:
  • Robo Jesus (03-21-2018), Turbotastic (03-23-2018)

#14
Posts: 45
Threads: 0
Thanks Received: 0
Thanks Given: 24
Joined: Feb 2015
Reputation: 0
Status
None
Yep, same problems and issues for me as well. Almost exactly the same. Only thing different was how I realized to convert things right. Everything else was understandable enough, but that bit with figuring out how to convert things so that they would match so I could then start changing things effectively was a MAJOR pain in the ass for a newbie to deal with.

I honestly suspect that is actually THE biggest issue for people who want to get into hacking for FF6 here, but can't figure out what is going on and how to get around that issue when they grab most of the programs and guides and whatnot.
  Find
Quote  
[-] The following 1 user says Thank You to Robo Jesus for this post:
  • Turbotastic (03-23-2018)

#15
Posts: 3,966
Threads: 279
Thanks Received: 234
Thanks Given: 56
Joined: Oct 2011
Reputation: 65
Status
Tissue-aware
(03-21-2018, 09:55 AM)PowerPanda Wrote: It set the light bulb off of saying, "Hmmm... so the hex address IS different than what I'm seeing in the disassembly. I bet there's a quick way to convert between one and the other." Once I knew to look for that, I was able to find the answer within minutes.

Yeah this is what I was saying in my previous post. As far as SNES hacking goes, all relevant and critical information is easily available once you understand what you are looking for. It might be presented in a technical way, but assembly and SNES hardware understanding were never and will never be a general public knowledge. Like all technical and programming things, some reading is harsh and it's the case the more you want to know in detail how things work. One thing that can be done is having a good starting document that goes through the basics and suggest further reading for each element. That might be one of my goal eventually, writing something like FAST6191's ROM Hacking guide but aimed at FF6. But doing such thing would be time consuming so I'm waiting to have written more FF6 tutorials and wiki pages to have more content ready.

One issue is also that regardless how information is presented and given, some people will miss it or won't want to read a lot of documentation about the subject. I'm expecting when starting to sprite or modify GFX you look up a tutorial on FF6 spriting that is available on the wiki and forum and linked in 3 or 4 relevant places. As for coding, you may want to just do a small change in the game but you will bang your head over and over on the hex editor and if you don't sit down and read a good document about 65816 assembly it will be a recurring problem. You could either way have this as bedtime reading for a month or constantly referring a good reference document when doing your changes but you'll have to dive in the pool somehow if you want to get results, a thing a lot of people simply don't want to do when starting.
  Find
Quote  

#16
Posts: 17
Threads: 3
Thanks Received: 0
Thanks Given: 0
Joined: Nov 2014
Reputation: 0
Status
None
Okay so thank you guys, especially Robo Jesus.

I did NOT know about the "display offset" thing and funny enough I did that and things make more sense! XD now everything is slightly more legible scrambled coding.

So I tried to change Health to use Pearl Wind instead of Cure 2. That's "60" in spells, right? Well I tested it...and somehow it made Health damage everyone instead of heal them lol.
  Find
Quote  

#17
Posts: 3,966
Threads: 279
Thanks Received: 234
Thanks Given: 56
Joined: Oct 2011
Reputation: 65
Status
Tissue-aware
(03-21-2018, 06:18 PM)ShadowDreamer Wrote: So I tried to change Health to use Pearl Wind instead of Cure 2. That's "60" in spells, right? Well I tested it...and somehow it made Health damage everyone instead of heal them lol.

When you write code, you write in hexadecimal so spell ID 0x60 is 96 in decimal (16 * 6). See section 3 here to get a grasp of calculation in hex. You probably replaced Cure2 by Fire Dance (96). Pearl Wind is 147 in decimal so 147 / 16 = 9 rest 3, so hex number is 0x93. You can use Windows calculator to switch between hexadecimal and decimal system, I use this often.
  Find
Quote  
[-] The following 1 user says Thank You to madsiur for this post:
  • ShadowDreamer (03-22-2018)

#18
Posts: 17
Threads: 3
Thanks Received: 0
Thanks Given: 0
Joined: Nov 2014
Reputation: 0
Status
None
(03-21-2018, 08:09 PM)madsiur Wrote:
(03-21-2018, 06:18 PM)ShadowDreamer Wrote: So I tried to change Health to use Pearl Wind instead of Cure 2. That's "60" in spells, right? Well I tested it...and somehow it made Health damage everyone instead of heal them lol.

When you write code, you write in hexadecimal so spell ID 0x60 is 96 in decimal (16 * 6). See section 3 here to get a grasp of calculation in hex. You probably replaced Cure2 by Fire Dance (96). Pearl Wind is 147 in decimal so 147 / 16 = 9 rest 3, so hex number is 0x93. You can use Windows calculator to switch between hexadecimal and decimal system, I use this often.

Thank you for the tip! I fixed that and it's working perfectly! :O oh my god - I actually hex-edited lol.

Now I know you said you'd do the commands for me in due time but I'm going to try and tinker with things myself until then. Which brings me to my next question: say I try to edit Sketch to become a new command. I'd have to go to where it is in the data and redirect the command to call something else (like the spell I want?) and then have it follow a new path. But that being said, if I did change Sketch to follow a new set of directions is the rest of the Sketch code going to be problematic? Like if there's just unused Sketch code in the data is it going to have ill effects? Would I have to then delete all of the old Sketch code that isn't being used?
  Find
Quote  

#19
Posts: 3,966
Threads: 279
Thanks Received: 234
Thanks Given: 56
Joined: Oct 2011
Reputation: 65
Status
Tissue-aware
There's a few things to consider, I think I got them all removed in code below. Download xkas, copy the content of the code block below in a text file and rename the file "sketch.asm", edit the spell ID at beginning of file, save the file in same folder as xkas. Make sure your ROM has no header and use windows command prompt to type:

xkas sketch.asm romname.smc

I tested the compilation so the ASM file is good but I'm not sure if it will be bug or crash free in-game. You can go look in banks $C2 and search "sketch" and you will find the place of each org instruction (which go on an offset and write the new code). I find working with an assemebler a lot better than dealing with a hex editor and hex commands, it's a better practice in general unless you edit 1 or 2 bytes..

Edit: I added optional stuff for Control but for now it will no be executed unless you uncomment the code.

Code:
hirom

!sketch_spell    = #$00      ;change for whatever spell ID in hexadecimal, like 00 is Fire here

;-------------------------------------------------------------------------------
; sketch
;-------------------------------------------------------------------------------
org $C2151F
    LDA !sketch_spell   ; load sketch spell
    JMP $1712

org $C23E77
dw $388C                ; point sketch special effect to RTS

org $C25454
dw $00                  ; remove Sketch as command to be replaced by another one (Control)
                        ; this just set entry as being Fight command which is already there
                        
org $C22C21
BRA .continueA          ; skip sketcher check

org $C22C28
.continueA

org $C231EC
BRA .continueB          ; skip sketcher check

org $C231F2
.continueB

;-------------------------------------------------------------------------------
; Control
;-------------------------------------------------------------------------------
; remove ";" from the beginning of the two line below to enable
;org $C23E73
;dw $388C               ; point control special effect to RTS

; remove ";" from the beginning of the two line below to enable
;org $C25459
;dw $16                 ; remove Control as command to be replaced by another one (Sketch)
                        ; this just set entry as being Jump command which is already there
  Find
Quote  

#20
Posts: 17
Threads: 3
Thanks Received: 0
Thanks Given: 0
Joined: Nov 2014
Reputation: 0
Status
None
I tried what you said multiple ways and I keep getting the same message:

"Xkas is not recognized as an internal or external command, operable program or batch file."

Not sure what it means. I tried googling it but the results were inconclusive.
  Find
Quote  



Forum Jump:

Users browsing this thread: 1 Guest(s)


Theme by Madsiur2017Custom Graphics by JamesWhite