øAslickproductions.org/forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&topic=2192.msg24884e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/indexb037.htmlslickproductions.org/forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&topic=2192.0e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/indexb037.html.zxM g^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ0°jÉßOKtext/htmlISO-8859-1gzip8:ÖÉßÿÿÿÿÿÿÿÿTue, 10 Mar 2020 03:53:08 GMT0ó°° ®0®P®€§²ð®L g^ÿÿÿÿÿÿÿÿ.Éß an unreasonably ambitious idea

Author Topic: an unreasonably ambitious idea  (Read 952 times)

perfume

  • Wing Raptor
  • *
  • Posts: 5
    • View Profile
an unreasonably ambitious idea
« on: April 05, 2016, 07:51:25 AM »
hello, I joined the forum to ask this question.

i've been playing Blizzard's Heroes of the Storm lately and really like how the leveling/talent system works.
if you're unfamiliar, at set levels (1, 4, 7, 10, 13, 16, 20), players get a choice of usually 4 different Talents which grant a bonus of some sort. 
usually these are passive, sometimes are active abilities
at level 10, they get a Heroic ability, an ultimate ability, kind of like a limit break

check the doc attached for details, but basically I was thinking about implementing some system of granting a character a "point" at certain levels and allowing them to allocate that point to one of the Talents available to that character.  what i've made is really just me thinking about what would be fun, and realize that none of it may even be feasible or possible.

most rom hacks i've seen are pretty uninteresting (to me) because they just change graphics, swap effects, or change dialogue.  however i have seen those that do more interesting (to me) things, so i'm hoping there's a chance here too

problem...i only know how to do the boring types of hacks i mentioned above.  but if anyone is interested in seeing if something like this is possible, i'm glad to help in any way i can, and maybe learn something too. 

i think the major hurdle would be keeping track of everything in memory, as much of what i'm thinking are conditional effects or reaction abilities.  i imagine creating a new window (or two) as a Talent chooser would also be required.  maybe a popup on the after-battle screen?  additionally allowing for access to the Heroic ability by pressing "up" above FIGHT, similar to accessing CHANGE and PARRY, or the FIGHT command could just change.  that would be less desirable as it would remove the option to FIGHT for that turn.  thanks!

chillyfeez

  • FF4 Hacker
  • *
  • Posts: 1,285
  • Gender: Male
  • Go ahead, ask me about Angel Feathers!
    • View Profile
Re: an unreasonably ambitious idea
« Reply #1 on: April 05, 2016, 10:20:44 AM »
You have some great ideas for abilities here, and I don't see (though admittedly I only read up through Rydia) anything that would be impossible - most of these ideas seem well within the capabilities Grimoire LD and myself have developed over the past few years - but what you're suggesting is definitely a task for somebeody with advanced knowledge of SNES assembly. I would say either 1) shouldn't be attempted by a beginner, or 2) a beginner should expect a project like this to take at least a couple of years to finish.
For my part, I can't really offer much help with the doing because I need to focus on my own project, which combines a ton of the "boring" stuff (it's a sequel to the original, so new character identities, new story) with a fair amount of the fun stuff (limit breaks, blue magic, a mimic character, chocobo time trials). For a splash of perspective, I was a complete beginner when I conceived of the idea in late 2012, and to date I have a demo with about 4.5 hrs of playing time (working toward an eventual goal of a full-length game).
I'm not trying to discourage you, by the way, if you're serious about getting this dine, I'd be excited to see your progress, and I'd be happy to lend advice along the way. Given the amount of work something like this would require, though, I can't imagine you'll find somebody who says, "yeah this is a great idea - I'll start working today." I think you're gonna have to be the one to actually do the doing.
A couple of pieces of advice to begin with: start living and breathing FFIV now. Lift up the hood and start seeing how everything works. A lot of that has been done by Grimoire LD here. Study his disassembles, while keeping this open in a separate tab for reference to what all the assembly commands mean. Doing that will help both knowing how the game does stuff and how FFIV does stuff. Both will be important to learn. Grimoire's thread there and mine here both contain a fair amount of examples of custom stuff that have been added into the game along with specific explanations of how they work. Those should also be useful to you.
Download Geiger's SNES 9X Debugger and a good, feature-rich hex editor. Those tools will be entirely necessary eventually if not right away.
Also, consider an option other than adding a new window at the end of battle. Unless you have a very advanced knowledge of how SNES graphics work, putting windows in where they weren't before can be really difficult.

perfume

  • Wing Raptor
  • *
  • Posts: 5
    • View Profile
Re: an unreasonably ambitious idea
« Reply #2 on: April 05, 2016, 07:56:27 PM »
thanks for replying, it's encouraging to hear that it sounds feasible.  by the way, i'm not married to anything specific at this point, and fully expect the end result to change.  i also expect it to take a while, but that's the idea...learn how this works and do what i can with it.  for example, from what i've read as an observer on other hacking projects, creating new windows is a huge pain.  with my limited knowledge, i can imagine creating a reaction ability, but a talent management system is another thing altogether.  to be honest though, i'm so far out that it's really not worthwhile for me to talk specifics, i'm just fishing right now.  just looking for input and for the experienced to shoot holes in my idea, see what's left and go from there.

thanks for providing the links, reading thru now. 

chillyfeez

  • FF4 Hacker
  • *
  • Posts: 1,285
  • Gender: Male
  • Go ahead, ask me about Angel Feathers!
    • View Profile
Re: an unreasonably ambitious idea
« Reply #3 on: April 06, 2016, 02:03:11 AM »
In my experience, working reactions into ffiv's existing battle system has proven much more difficult than I expected. Never really put a whole lot of effort into it, but I tried to make a simple "black belt" kind of fight counter and was unsuccessful. The points system you're envisioning (if I understand it right) is actually quite a bit easier. There's a decent amount of unused SRAM (the variable data that actually gets saved into a save file) that could easily be employed to keep track of a points system, once the plan for such a system was formulated of course. And as for abilities that are tied specifically to particular levels of particular characters, well, you wouldn't really need SRAM for something like that at all. You could work characters' level checks into the battle code, so that the applicable bonuses (or whatever) run as long as the level check returns true.
Sorry, that probably sounds like gobbledygook. My point is, the basic plan for learning abilities will likely be the easiest part of all this. Second-easiest would be coding the abilities/bonuses/whatever (possible exception being reaction abilities). Working the Heroic abilities in will be a bit tougher, because anything that requires new user interface is a bit more advanced work. Player management of all of it would likely be the hardest part, as it combines implementing new user interface and, presumably, new stuff in new windows.

perfume

  • Wing Raptor
  • *
  • Posts: 5
    • View Profile
Re: an unreasonably ambitious idea
« Reply #4 on: April 06, 2016, 05:08:33 AM »
not gobbledygook, i get what you're saying.  i have done some poking around with NES FF, tinkering with the ASM there, but it was a while ago.  think of it this way, sometimes you can hear a foreign language spoken, and get the gist, but then producing sentences of your own is where you're stuck.  you've actually provided me with more or less what i had hoped for, references to others work i can look at and MAYBE devise a plan of my own.

and as far as your own work with the "black belt", how exactly did you try to implement it, and how was it unsuccessful?  was it based on an equipped item like FF6?  i was imagining putting checks into the battle code such that for example if CHAR X's HP drops below a certain threshold, Regen or Protect is cast on the party.  that by itself seems OK, but then i think getting a spell to autocast without a menu input/using a turn might require a monumental retooling of the battle system...  that would be amazing if possible, you could have all kinds of gameplay like more dynamic/variable monster AI.

on the battle code, does each character have their own "sequence" or "script", or is it just generic?  by that i mean does i know that it' Cecil's turn vs Rosa's turn?  i'm still looking around, there's just tons of info to go thru


chillyfeez

  • FF4 Hacker
  • *
  • Posts: 1,285
  • Gender: Male
  • Go ahead, ask me about Angel Feathers!
    • View Profile
Re: an unreasonably ambitious idea
« Reply #5 on: April 06, 2016, 10:30:35 AM »
and as far as your own work with the "black belt", how exactly did you try to implement it, and how was it unsuccessful?  was it based on an equipped item like FF6?

The idea was that it'be item-based, but that's kind of irrelevant. It's equally easy to have something trigger because of a character's identity, level, certain piece of equipment, individual stat, etc. Those things all show up together in the same bank of RAM data during battle. The problem is getting the reaction to trigger at all. FFIV has a reaction system in battle, but unlike that of most other FF games, it doesn't include player characters, only enemies, and because of the game's super-weird enemy AI system, it's not easy to shove player characters into it. And we haven't really parsed the way the game actually executes enemy AI enough that writing a workaround was a feasable option, at least not at the time that I was trying all this.
Quote
i was imagining putting checks into the battle code such that for example if CHAR X's HP drops below a certain threshold, Regen or Protect is cast on the party.  that by itself seems OK, but then i think getting a spell to autocast without a menu input/using a turn might require a monumental retooling of the battle system...  that would be amazing if possible, you could have all kinds of gameplay like more dynamic/variable monster AI.

As a matter of fact, that's very possible. The game already has an auto-command: Hide. And it's always easier to harness an already a existing feature and alter it as needed than it is to create something brand-new. My Limit Break system is actually a fork off of the original auto-hide implementation.
Quote
on the battle code, does each character have their own "sequence" or "script", or is it just generic?  by that i mean does i know that it' Cecil's turn vs Rosa's turn?  i'm still looking around, there's just tons of info to go thru
... Eh, kinda... I think. We've never fully explored how the game determines whose turn it is, but I'm nearly positive that it cycles through a preset increment of x-values, and when it hits one that has a "ready" ATB status, then it calls the relevant character/monster data to determine how to proceed from there. Once it calls the character data, then it goes through a series of checks to determine if there's anything special about the character that would affect how to proceed (I.e. the character has mute status, so gray-out any magic commands). In theory, it wouldn't be difficult to hijack one of those checks in order to initiate some character-specific passive ability.

perfume

  • Wing Raptor
  • *
  • Posts: 5
    • View Profile
Re: an unreasonably ambitious idea
« Reply #6 on: April 06, 2016, 01:30:24 PM »
earlier you mentioned starting as a beginner, is there anything would you recommend as test projects to get acclimated?  additionally, you mentioned some areas like turn order and enemy AI...is there anything i could do to help out as a noob?  i would kinda doubt it, but hey the offer for grunt work is there.  who knows it may help in some way

chillyfeez

  • FF4 Hacker
  • *
  • Posts: 1,285
  • Gender: Male
  • Go ahead, ask me about Angel Feathers!
    • View Profile
Re: an unreasonably ambitious idea
« Reply #7 on: April 06, 2016, 04:34:40 PM »
Hmm, kind of a tough call. I was lucky enough that as I was really starting to get into the nitty-gritty of assembly, Grimoire was just at about the same level and also learning, so we had this really cool piggybacking thing going on, which was further fueled by the fact that pinkpuff was developing ff4kster at the same time, so there was this sudden collective excitement about FFIV. That's all sort of blown over by now.
I guess I would say the best thing to do is pick one thing you want to try. It might or might not be something that ends up in your final project, but don't worry so much if it's not. It should be something that specifically messes with game mechanics in some way (so, not a graphical change or a text edit or, you know, "boring stuff") - maybe a single new battle command or something.
If you have previous experience with NES assembly, then you probably have the basic knowledge you'd need to do something like that. The big thing to keep in mind is, a running SNES game is made up of three primary components - ROM data, assembly and RAM. He goal is to use the first two in order to affect the right outcome in RAM to make the game behave the way you want. But in order to do that, you need to know what part of RAM to affect in order to get the desired result. For the most part, you can find that here: http://rb.thundaga.com, But I'm also happy to help you find what you need to know. Looking at Grimoire's command disassembly will help you get an idea of how the game does those kinds of things naturally. From there, come up with a plan for something you'd like to try. If you're just making one custom command that executes in a normal fashion (by being selected by the player in-battle), that's probably a good first step to work towards. Doing that for the first time will probably still take a while, but once you've got one success under your belt, things will eventually start coming more easily.
Does that help?

perfume

  • Wing Raptor
  • *
  • Posts: 5
    • View Profile
Re: an unreasonably ambitious idea
« Reply #8 on: April 06, 2016, 05:17:36 PM »
actually yeah i've been going thru Grimoire's files more and more and found a couple simple things i might have luck with...

hope i'm not coming off the wrong way when i say "boring" hacks haha, definitely not trying to put down anyone's hard work!  i've done plenty of the boring stuff myself.  i think you get what i'm saying.

i'll see if i can dig in a bit to this code and make some progress, then i might have some specific questions.  also, thanks for being something of an ambassador to me, you've probably saved me days of looking thru stuff that doesnt apply/too far over my head


chillyfeez

  • FF4 Hacker
  • *
  • Posts: 1,285
  • Gender: Male
  • Go ahead, ask me about Angel Feathers!
    • View Profile
Re: an unreasonably ambitious idea
« Reply #9 on: April 06, 2016, 07:14:53 PM »
I just keep saying "boring" now because it is a pretty convenient way to sum up a lot of different processes. And it's pretty applicable to FFIV because pinkpuff has graced us with one of the most comprehensive and stable game-specific ROM editors available, so a lot of that stuff can be done with very limited background knowledge, so the "exciting" stuff now is when we really get to mess with how the game works.

And you're welcome. Like I said, I was in a pretty similar position just about four years ago. I couldn't have developed the skill as I have in that time without some great guidance and encouragement from more experienced ROM hackers,  so I feel it's only right to pay it forward.