So for anyone who knows asm and uses it for romhacking in particular, do you have any advice on how I would go about this?
1) Give a once-over (or twice-over) of a tutorial doc that goes over the basics. Don't worry about fully absorbing the info, just try to wrap your head around the core concepts like registers and addressing modes.
2) Find some existing code that is well documented (SMW might be a good place to start, but there's also a bunch on this site
(try to stick to SNES or NES -- NES is similar enough)... including FF1
which I have a personal bias towards.
3) Pick some routine in that code that isn't too large and has plenty of comments. Look over the code, follow along with the comments, and see if you can understand how
the code is doing what the comments say it's doing.
4) Try to re-create a few routines from that code without looking back at it... or write some code that does a very simple task (like appending two strings together).
5) Once you've done that you've probably got a strong enough handle on the basics... so start looking at your game of choice (whatever RPG you want to translate) and start dissecting the code you're interested in. Basically this is the same as #3 only this time you don't have comments to help you out. It might be too hard to figure out the code from just looking, so you may have to make changes and see what that changes in-game. Tinkering is very helpful.
*) At any point in the process... if you hit a wall, get stuck, or something is just not making any sense to you... ask a question on the forums
. There are a ton of people here that can help you get over roadblocks -- and there's no point in banging your head against the wall for 2 hours if you're not making any progress.
Is it beneficial to learn a higher level programming language first (I know none)
Is it easier to learn how to drive stick if you already know how to drive automatic? Yes.
Does that mean you should learn how to drive automatic first? Absolutely not. Not if your goal is to learn to drive stick.
It definitely helps if you have prior programming experience, but don't waste time learning another language first. It's just an extra, unnecessary step.
What resources would you recommend?
I'm not savvy on what the best tutorial is... but any 65xx series tutorial (6502/65816/etc) will probably be good enough to get you started.
Apart from that, you'll want an asm reference sheet: https://wiki.superfamicom.org/snes/show/65816+Reference
a SNES hw register layout: http://www.romhacking.net/documents/196/
<-- but don't worry about this until later. You may not need it at all, and it'll just confuse the hell out of you if you try to read it now.
Is there a console that it is advisable to start learning on? I'm mostly interested in SNES, but is there an easier/beginner friendlier kind of asm to learn first?
Again, I wouldn't waste too much time learning something that isn't directly related to your end goal. Focus on SNES if you can. Though if you can't find enough SNES-oriented resources, maybe consider NES (which is very
similar, has better tools, and has a lot more documentation). But I wouldn't bother looking at anything else.