ASM Tasks - Printable Version +- FF6 Hacking (https://www.ff6hacking.com/forums) +-- Forum: Discussion Forums (https://www.ff6hacking.com/forums/forum-5.html) +--- Forum: Returner's Hideout (https://www.ff6hacking.com/forums/forum-66.html) +---- Forum: Full Roster Hack (Community Project) (https://www.ff6hacking.com/forums/forum-68.html) +---- Thread: ASM Tasks (/thread-3334.html) |
ASM Tasks - B-Run - 09-20-2016 Coders! Thank goodness you're here! We have a lot to do to make the Full Roster Hack a reality! Since we are adding 2 new full-fledged characters, there are quite a few bells and whistles invloved to get this working. In this topic, I need coders to point out any obstacle we could have in getting our new party members up and running, as well as sign up for, and submit resolutions to said problems. Here's a handful of things that need consideration:
Similarly, getting equipment working should be an extremely quick task and should be as simple as relocating the "Spec active when Imp" and "Heavy gear" bits, then making sure our new character slots get assigned those equipment bits. Which leads me to expansion... .8..We have plenty of room for putting our characters in the properties IDs in the game, however it might be wise to make them officially IDs $0E and $0F and shifting off less important characters, then updating the instances they are used in vanilla. Sprite and portrait expansion is even more straightforward and can just be tacked on after relocating the overworld and battle pointer lists... we just need someone (or someones) to get it done. Colosseum functionality may or may not be an issue. I don't know much about it, and I really don't feel like learning. So somebody take the reigns here once we decide on where to put our characters' property information. Commands are where things start to get hairy. Making new commands will come down to expanding or reusing code. This will likely be a HEAVY edit, but nothing we can't overcome. Attacks might be a little bit harder and involve either expanding the attack list, OR hardcoding every ability and animation setup, which will likely be tedious, but doable. OAM is the big-ticket item. We need to track down how the image that the OAM data references is built. OAM calling is going to need to either be dynamic, or we need to find a way to make some of the current data unneeded so to make room to weasel our characters in. There will also need to be some sprite-shifting in the shop menu to make room for 2 new people. As much as I am inclined just to do all of this myself, I (just like others here) have a personal project to attend to, as well as coordination duties here. I am happy to help out and discuss possibilities for any of the topics here, but my time coding for this may be limited. I would love for some of you very, very talented people to step up. This is a community project on all-fronts, especially when it comes to ASM work! So speak up! Tell me what you're inclined to work on, and what you'd be willing to do if i bugged you enough (I'm very persuasive). Also bring up any other topics we may need to consider and keep an eye on the list, I will be marking who is working on what. Feel free to poke me here or on discord with any questions or comments. Happy Hacking! RE: ASM Tasks - madsiur - 09-20-2016 I can make a code proof of concept of two functional sprite sheet added and two portraits. I could also work on properties shifting, using the dummied entries for vanilla guests $0E and $0F. For equipment, we'll need to find two equip bits on the item data. I could work on that too. Finally I suggest we scrap the already scrapped Summon command for a brand new one. Other things should come to my mind by looking each points in the code. I'll come up with a more relevant input this weekend. P.S. Count me out (for now) for OAM, I know nothing in the domain but I'm interested in almost all the other points you've mentioned. RE: ASM Tasks - m06 - 09-21-2016 I'll see what I can figure out of the shop OAM to begin with.. RE: ASM Tasks - B-Run - 09-21-2016 (09-20-2016, 09:48 PM)Madsiur Wrote: I can make a code proof of concept of two functional sprite sheet added and two portraits. I could also work on properties shifting, using the dummied entries for vanilla guests $0E and $0F. There's a fair number of unused bits on equipment, tho I'm not sure many of them get automatically loaded into battle, so you may need to write a function that calls the equipment, then retrieves the bit to handle functions that need to check for Imp gear and heavy gear. The great part about equippable gear bits is that if we put Iris and our new character properties at $0E and $0F in place of Banon and Leo, and unlock the equip menu, the bits will already work. No extra ASM required. This really should be a quick fix. Moving Leo and Banon's properties will cause a few actor assignment fixes to be needed in the event script, and Leo's battle event where Kefka... ahem... does him in... changed to the properties IDs as battle events use properties ID rather than actor or sprite. (09-21-2016, 03:37 AM)m06 Wrote: I'll see what I can figure out of the shop OAM to begin with.. Here's what I have on the OAM data (you might want to copy this into a text document): Code: D8/E917: Pointers to pointers! used to make calling simple since different characters have different length OAM data RE: ASM Tasks - HatZen08 - 09-21-2016 Unfortunately, in the shops, the actor sprites which are displayed only work correctly for the default characters. The others sprites don't display correctly. I suspect it may be related to the fact that they don't have a full sprite sheet or the full set of oam pointers. Anyway, if we want to expand the shop sprites from 14 to 16 characters, we should fix this issue. Also, we need to change another routine. When you select an item (double click) in the item menu, it displays the names of the characters who can equip it. It also need to be updated to include all the 16 characters. As mentioned, the guests identifier can be $0e and $0f. Their equipment flags will be the the 'imp' and 'merit award' flag. However, a few issues may arise. The game engine uses the actor id to determinate where to load from the startup data. As example, the 'additional physical power' and the 'run' variable are loaded directly from the startup data (rom) when the battle starts. The game engine don't load all the battle data of the characters based only in RAM values. If you use the id of Banon and Leo, these ROM variables will be based on the setup of Leo and Banon, independently of whatever setup the guests may have in another startup slot. If you want to use the ids of Banon and Leo, probably you will need to create another versions of them in another slot of the startup up data and change the events related to them accordantly. Perhaps it will be easier to adjust the equipment code to add an exception for two specific guests identifiers instead of redesigning Leo and Banon events. You can also change the routine that loads these rom variables with exceptions for the two guest characters. Also, Banon id has a hard coded feature to trigger the game over if the character is defeated. When Banon dies it is game over and this feature will be inherited by whoever has its identifier. You can kill this feature with an asm modification but it will change the game history because the game tells you, in Banon's arc, that the game is over if Banon dies but it will not happen if you disable this feature. RE: ASM Tasks - B-Run - 09-21-2016 (09-21-2016, 10:12 AM)HatZen08 Wrote: Unfortunately, in the shops, the actor sprites which are displayed only work correctly for the default characters. The others sprites don't display correctly. I suspect it may be related to the fact that they don't have a full sprite sheet or the full set of oam pointers. Anyway, if we want to expand the shop sprites from 14 to 16 characters, we should fix this issue. Yes, this is the OAM data I'm talking about, I think we have most of the puzzle pieces we need to make this a dynamic system rather than the static one that's currently in place. God bless Novalia's C3. (09-21-2016, 10:12 AM)HatZen08 Wrote: Also, we need to change another routine. When you select an item (double click) in the item menu, it displays the names of the characters who can equip it. It also need to be updated to include all the 16 characters. Good catch. Can you take care of that? (09-21-2016, 10:12 AM)HatZen08 Wrote: As mentioned, the guests identifier can be $0e and $0f. Their equipment flags will be the the 'imp' and 'merit award' flag. However, a few issues may arise. So to clarify, you're saying it uses the Actor ID loaded as the index to the properties for a few things?, that should be an easy ASM fix by loading the properties ID instead of the actor ID. If I'm misunderstanding post the relevant code for me. (09-21-2016, 10:12 AM)HatZen08 Wrote: Also, Banon id has a hard coded feature to trigger the game over if the character is defeated. When Banon dies it is game over and this feature will be inherited by whoever has its identifier. You can kill this feature with an asm modification but it will change the game history because the game tells you, in Banon's arc, that the game is over if Banon dies but it will not happen if you disable this feature. Another good catch. We ought to be able to change that to whatever new ID we give Banon no problem. Keep up the good work! RE: ASM Tasks - HatZen08 - 09-22-2016 (09-21-2016, 10:31 AM)B-Run Wrote: Good catch. Can you take care of that? Yes. I will check the code and report back later. I will assume that the guests identifier will be $0e and $0f and that their flags for equipment will be the 'imp' and 'merit award' flag. If it is incorrect, please correct me. RE: ASM Tasks - B-Run - 09-22-2016 I found another thing, and we need someone with some knowledge of the dialog commands: actors 0E and 0F, while they have RAM for naming, do not have dialog commands that fill that name in. So <A0> is Terra, <A6> is Celes, <A13> is Umaro... we need someone to add <A14> and <A15> because they do not currently work. RE: ASM Tasks - HatZen08 - 09-24-2016 For testing purposes, i create a (lame) event in the south figaro city at the stable (world of ruin). When you talk with the chocobo manager, it will setup the new guests and give you two rare items. They are used to identify the availability of the new created guests. In the default game these rare items were unused. You must call this event only in the world of ruin because the guests slots are used in the world of balance. This event it is only for testing and it can be relocated to another location later. The only noticeable feature of the event in the player perspective is the 'found item' sound. After the event, you can go to the airship and change the party members. The two new guests (now banon and leo) should be available, as long you have the associated rare items. As long as i know, they can only be removed by an event. Unlike the guest adder code, the guests MUST be setup by an event, like the event used now. The actual code only allows the guests to be selectable based on its rare items. For reference, it will not check if the guests are properly setup by an event. I changed the code of the display of names when you double click an item. It now includes the two guests, as long as they have their associated rare items. Unlike the original game design, all actors names have a fixed position in the screen. It makes easier to locate if an item is equip-able by a specific actor/character. For whatever reason, leo and banon can fight normally in the Colosseum. Perhaps, is it because they were setup by an event instead of directly by code? I don't know but it is good news for me. We know that many issues will arrive because the game design didn't expect guests in the world of ruin. However, because the created guests are now selectable in the roster, i suppose it is a good start for this project. We can track and hunt down these issues later. :-) You can compile it with asar. The rom is the ff3 rom, english, version 1.0, with a header. You can download it here: http://www.bwass.org/bucket/ff6re_01.7z RE: ASM Tasks - Scorcher - 09-24-2016 Okay so, if the equipment has the "imp"flag, wouldn't it still make any equipment with that flag's stats only affect the character if they're an imp? I probably worded that horribly. |