Qhimm.com Forums

Final Fantasy Forums => Archive => Topic started by: gamefac on 2009-08-08 04:57:19

Title: How do I add new enemy to the existing group?
Post by: gamefac on 2009-08-08 04:57:19
psx version
---
Hi guys, Im using Proud Clod program, Wall Market & Hojo. My question is..

#1 Is it possible to add a new monster? if so, how can i do it?
(http://img291.imageshack.us/img291/9563/estion.jpg)
Title: Re: How do I add new enemy to the existing group?
Post by: The Seer of Shadows on 2009-08-08 09:20:24
With the release of Proud Clod, this little guide by gjoerulv is partly obsolete, but here. (http://forums.qhimm.com/index.php?topic=7407.msg90114#msg90114)
Title: Re: How do I add new enemy to the existing group?
Post by: gjoerulv on 2009-08-08 13:57:10
Hmmm, Anyone made a proggy to add enemies yet? Shouldn't be too hard. Proud Clod could do it. Actually PC should be a full blown enemy editor. To tweak PC so that it can alter enemy data and IDs should be relatively easy. In fact thats all it's missing. As far as I know at least.

I could make a simple proggy to just add IDs, and then use Hojo and PC do alter the rest of the enemy. But, as I see it, it would be redundant when PC easily can get the same function.
Title: Re: How do I add new enemy to the existing group?
Post by: The Seer of Shadows on 2009-08-08 14:48:06
Yeah, it'd be nice if PC could edit just those first few bytes of each scene.  It would be a pain to have to extract all files from the scene.bin and go through them with a hex editor just because those few, easily-changeable bytes cannot be altered with any of the released enemy editors.

And just as WM has become a full blown kernel.bin editing tool, I agree, it'll be great if PC could become a full blown scene.bin editing tool.  Though I think NFITC1 once mentioned that he didn't want to render Hojo obsolete.

Thanks for writing up the above guide.
Title: Re: How do I add new enemy to the existing group?
Post by: Xelane on 2009-08-09 05:44:01
nothing wrong with besting someone in program creation. in fact it should be looked upon as a learning experience since NFIT is good with programming IMO
Title: Re: How do I add new enemy to the existing group?
Post by: The Seer of Shadows on 2009-08-09 05:59:17
nothing wrong with besting someone in program creation. in fact it should be looked upon as a learning experience since NFIT is good with programming IMO

IMO?  It's an established fact :-)
Title: Re: How do I add new enemy to the existing group?
Post by: NFITC1 on 2009-08-09 07:08:51
*cracks knuckles* Prepare for a wall of text:

OK, here's the deal. I'd love to be able to add enemies (not just IDs and/or names which will likely show up in the next PrC along with some other new features), but I haven't looked into it much. The concept of doing this isn't any more complicated than adding an attack to a scene, there's just more data to toss around. This isn't hard to do, but there are still some unknown sections (http://wiki.qhimm.com/FF7/Battle/Battle_Scenes#Enemy_data_format) on the wiki for the data that comprises an enemy (the address of the first unknown is wrong anyway). It'd also be a hassle to load PrC just to modify those bytes and then save, then re-open in Hojo. It can simply be done, don't get me wrong.

Aside from that, PrC (which is its official abbreviation to distinguish it from things like "Personal Computer" and/or "Player Character") modifies everything that Hojo doesn't. I almost completely rendered Teioh obsolete with WM 1.0 when I allowed kernel2.bin text editing. I have respect for Squall78 for making Hojo in the first place. Heidegger was only ever going to be an attack editor based on WM until I was pushed into editing the AI. PrC has gotten MUCH bigger than I planned for it to be. Not to say that's a bad thing. I just feel guilty for taking away Teioh and don't want to do it to Hojo. Almost all the people that come here that want to make mods say the same thing: "WallMarket, Proud Clod, and Hojo". It's like this is the basic modding package that everyone can use and learn to work with. I get satisfaction out of people saying that they use my tools and I imagine that Squall78 feels that way about seeing Hojo being used. He still comes around, but he hasn't posted anything since I made an account. I even offered to make Hojo into what PrC is now (http://forums.qhimm.com/index.php?topic=7186.msg96129#msg96129). Unfortunately, he never got back to me which made me make Heidegger. Dang it, I even considered making kimera and LGPtools obsolete as well and can't bring myself to continue that project. Loveless, on the other hand, will always be needed. I've never found it wanting in terms of functions or features. Either way, I'm only really focusing on battle manipulation.

*sigh* Enemy addition, however, an exclusion of Hojo, but for good reason. To add an enemy, you'd need to make AI for it and a model as well. The enemy ID isn't just enemy ID, it's also model ID. Yes, it would be easy to give PrC the ability to add enemies to scenes and modify stats, but there's so much involved in the user adding one (it's easy on my end; It's just more data to juggle to me). The overall appearance would also have to change (also not hard), it's getting cluttered as it is.

Basically, what I'm saying is if we fill in those unknowns I'll consider it. However, it's all more work for the user than you might think.

PS - Yes, I'm good with programming, that's why I started making WM, PrC, and the PC MDef fix; I saw a need and I created. This is one of the things I am least modest about. ;)

PPS - I still consider myself new here. Here I am, account less than 11 months old, and I've already created two powerful and quite-widely-used modding tools. I've learned a LOT about FF7 in these past 11 months and have surpassed some of the people that have been here for years. I still have to give reverence to vets like Akari, gjoerulv, et al. for the contributions to the wiki they've made and the things they've discovered without near as much help as I was given. Even Kudistos Megistos who registered his account less than two weeks before me I'd still consider a superior (though I tend to think of him as a sort of older brother on this forum despite his obsession with Lucky ☆ Star...everything about it weirds me out :P). That being said, I don't want to insult Squall78 for all he's done for this community by steadily making his tools obsolete. He's been around a lot longer than I have and I respect the work he's done. Kind of a "honor among programmers" thing. At least, that's what I think.


Short version: I'll add the ability to change the enemy/model ID in the next PrC version which will be released soon (read: eventually).
Title: Re: How do I add new enemy to the existing group?
Post by: The Seer of Shadows on 2009-08-09 07:26:58
I viewed "Who's Online" at what felt like a very long time ago.  Ages later, your post is finally done.  And now I know why it took you a while.
I'm sorry, it wasn't my intention to stalk you.

So long as you add that function to PrC, I'm happy.  Well... I'm actually pretty euphoric about all this already, but yeah.

Even Kudistos Megistos who registered his account less than two weeks before me I'd still consider a superior (though I tend to think of him as a sort of older brother on this forum despite his obsession with Lucky ☆ Star...everything about it weirds me out :P).

Well, without that unique personality he has, he wouldn't be the guy that we all know and appreciate so highly :-)
Title: Re: How do I add new enemy to the existing group?
Post by: Kudistos Megistos on 2009-08-09 13:33:55
I'm flattered. I think...

Although, NFITC1, you've definitely surpassed me in most things modding related :-) Then again, I have no programming knowledge and have learnt everything I know about modding since I came here, so I'll allow you to call me superior :-P

As for my Lucky Star obsession, well, I used to be a goth; let's just say that I'm overcompensating now  :-D
Title: Re: How do I add new enemy to the existing group?
Post by: NFITC1 on 2009-08-09 15:23:12
I viewed "Who's Online" at what felt like a very long time ago.  Ages later, your post is finally done.  And now I know why it took you a while.
I'm sorry, it wasn't my intention to stalk you.

Ya know, I'm just surprised you read it all. :) I was in a vaguely sentimental mood when I wrote it.

As for my Lucky Star obsession, well, I used to be a goth; let's just say that I'm overcompensating now  :-D

Wow. Those are pretty polar opposites.... Though I suppose you're less likely to spill blood being obsessed with Lucky Star. :D

I've also learned a great deal about programming by coming here (by necessity rather than directly) and everything I know about modding comes from these people as well.
Title: Re: How do I add new enemy to the existing group?
Post by: gjoerulv on 2009-08-12 16:54:56
Yeah I see what you mean there NFITC1. I kinda made an enemy editor myself, but didn't release it for some of the same reasons. I felt there were enough editors available that had the same functions as mine. The only thing mine had in addition at that time was a formation and attack editor editor (but the interface is baaad).

ugh... I need to change my avatar. It was meant to be funny for a short while...
EDIT: anyone got a funny avatar I clould use?
Title: Re: How do I add new enemy to the existing group?
Post by: obesebear on 2009-08-12 17:16:50
ugh... I need to change my avatar. It was meant to be funny for a short while...
EDIT: anyone got a funny avatar I clould use?
http://forums.qhimm.com/index.php?topic=8827.msg112991#msg112991
Title: Re: How do I add new enemy to the existing group?
Post by: Kudistos Megistos on 2009-08-12 17:25:04
ugh... I need to change my avatar. It was meant to be funny for a short while...
EDIT: anyone got a funny avatar I clould use?
http://forums.qhimm.com/index.php?topic=8827.msg112991#msg112991

 :-D

DO IT!

And only slightly more on-topic, coming here has taught me a lot, not only about FF7 modding, but about computers in general; before I came here, I was one of those people who think that computers are run by magic pixies living inside the case. It has been very educational.

BTW, NFITC1, can you make FF7Music obsolete? Pweeeease?
Title: Re: How do I add new enemy to the existing group?
Post by: NFITC1 on 2009-08-12 20:52:20
And only slightly more on-topic, coming here has taught me a lot, not only about FF7 modding, but about computers in general; before I came here, I was one of those people who think that computers are run by magic pixies living inside the case. It has been very educational.

Yeah, when you discover that they're actually gnomes, your whole world-view turns upside-down, doesn't it? :D

BTW, NFITC1, can you make FF7Music obsolete? Pweeeease?

No. You expect me to somehow tell the game to play mp3s or oggs? Tell you what I CAN do, I can let you import different midis into the game. How's that sound?
Title: Re: How do I add new enemy to the existing group?
Post by: Kudistos Megistos on 2009-08-12 21:00:07
And only slightly more on-topic, coming here has taught me a lot, not only about FF7 modding, but about computers in general; before I came here, I was one of those people who think that computers are run by magic pixies living inside the case. It has been very educational.

Yeah, when you discover that they're actually gnomes, your whole world-view turns upside-down, doesn't it? :D

Yep. It was a shock, I can tell you :-o

BTW, NFITC1, can you make FF7Music obsolete? Pweeeease?

No. You expect me to somehow tell the game to play mp3s or oggs? Tell you what I CAN do, I can let you import different midis into the game. How's that sound?

I wasn't really being serious with that suggestion :-P

I mean, if someone could make a program that does what FF7 music is supposed to do, that would be great. Of course, I have no idea how difficult that would be.
Title: Re: How do I add new enemy to the existing group?
Post by: titeguy3 on 2009-08-12 21:38:19
I'd love to tackle that job, only problem is I have no idea how Ficedula managed to read the playback data from FF7 to begin with.

Of course I'd only make a prettier version of the same thing. Actually tweaking FF7 to read MP3's on the other hand is something better suited for someone like halkun or Aali (for example).
Title: Re: How do I add new enemy to the existing group?
Post by: Aali on 2009-08-12 22:01:16
FF7Music works by capturing debug messages from FF7. When FF7 says "reading midi file: poop.mid", FF7Music starts playing that song; When it says "MIDI stop", FF7Music stops playback. A total hack, but it's simple and effective.
If you really want to work on a replacement I suggest you make it a music plugin for the custom driver.
That way you don't have to worry about how FF7 works, as long as you provide the functions used by the driver.
Title: Re: How do I add new enemy to the existing group?
Post by: titeguy3 on 2009-08-13 07:49:48
HA! I had an inkling that that was it, but I thought to myself "Nooo.... that's too...'improper'." A plugin for the custom driver, you say? That sounds completely and utterly feasible.
Title: Re: How do I add new enemy to the existing group?
Post by: gjoerulv on 2009-08-13 09:28:55
ugh... I need to change my avatar. It was meant to be funny for a short while...
EDIT: anyone got a funny avatar I clould use?
http://forums.qhimm.com/index.php?topic=8827.msg112991#msg112991

 :-D

DO IT!

OK!

Sorry! No more off topic...

If Proud Cloud could edit enemy IDs the rest could be done with Hojo. Adding IDs to a formation could spell disaster without editing the data 1st.
Title: Re: How do I add new enemy to the existing group?
Post by: Kudistos Megistos on 2009-08-13 13:17:37
The avatar :-o

We'd also finally have no more need to decompress and recompress the scene.bin file when we want to make certain kinds of mod. I can't tell you how much of a relief it was to not have to do that with the kernel.bin any more when WallMarket got finished.
Title: Re: How do I add new enemy to the existing group?
Post by: gjoerulv on 2009-08-13 16:45:29
The avatar :-o

We'd also finally have no more need to decompress and recompress the scene.bin file when we want to make certain kinds of mod. I can't tell you how much of a relief it was to not have to do that with the kernel.bin any more when WallMarket got finished.

There still are some unknown parts though. In the scene that is. In my case I haven't done anything to figure it out. When I think 'bout it shouldn't magic evasion be somewhere? I know we can AI it, but it would be magnificent to edit it directly.
Title: Re: How do I add new enemy to the existing group?
Post by: Kudistos Megistos on 2009-08-13 16:50:20
A couple of things are still unknown (http://wiki.qhimm.com/FF7/Battle/Battle_Scenes) (but not much). Still, it would be nice to be able to edit everything that isn't known in the same way that one edits raw formation data (http://img200.imageshack.us/img200/2137/formation.png). It would at least save us time by having all the compressing done automatically.
Title: Re: How do I add new enemy to the existing group?
Post by: NFITC1 on 2009-08-13 18:55:00
Quote
0x0058     38 bytes     Unknown data

This is wrong. First of all, the address can't be 0x58 if the previous block is 32 bytes long and starts at 0x48. This starts at 0x68 and is 32 bytes long (I just fixed this). This dramatically narrows down what it could be.

Current observations (not confirmed)

0x68 is definitely 16 16-bit values and the order is significant. They don't have to be unique in the list, but each instance of an enemy has the same list. (related to attacks?)

0x9A I'm not sure about yet. It's either FFFFh or FFFEh. I don't have a list of which enemies have it which, but these seem to be the only options here and the default is FFFFh. Likely just a yes/no flag of tiny significance.

0xB4 seems to be alignment bytes and is always NULL. It could possibly have been initial statuses (Haste, Shell, etc), but got taken out.
Title: Re: How do I add new enemy to the existing group?
Post by: Kudistos Megistos on 2009-08-13 19:21:04
I'll have a little look-see at these (although I won't necessarily look very hard :-P).

I've tried a couple of values at 0x00B4 and nothing noticeable has happened; if it originally meant initial status it probably has been taken out (although I would have thought that initial status would be a single byte).

I'll use my standard technique for finding out what (if anything) the others do.

EDIT:

I've noticed that some enemies have 32 FFs at 0x0068. Sweepers have 5e 01, Mono Drives have 05 01 and the Guard Scorpion and Grashtrike have 13 01. These values don't seem to correlate to anything else in the scenes; the Sweeper's 5e 01 here is the only occurrence of 5e 01 in that scene.
Title: Re: How do I add new enemy to the existing group?
Post by: secondadvent on 2009-08-14 19:03:24
Actually, initial status would have to have been 4 bytes like the status immunities, because one byte alone cannot point to all the possible status conditions that can be active on the enemy, otherwise the status immunity section would have only been one byte, but that is only possible with 8 statuses, and there are definitely more than 8 :P.

it is likely that the 2 byte unknown was originally a fourth manip/berserk move that was scrapped for whatever reason at the end. as for the 32 byte unknown, that would require looking at every enemy's data to see if there is a possible pattern to be seen, it is hard to tell from a few enemies :P. here are a few more enemies and their values (including the ones you mentioned KM) maybe throwing a few out there will get some ideas flowing, though it would still be easier with a complete list of all enemies and their values:

Grunt - d200 (3rd/4th bytes)
Sweeper - 5e01 (5th/6th bytes)
Guard Scorpion - 1301 (11th/12th and 13th/14th bytes)
Grashtrike - 1301 (3rd/4th bytes)
Rocket launcher - d600 (first two bytes)
Blugu - d700 (3rd/4th bytes)
Special Combatant - d200 (3rd/4th bytes)
Smogger - d800 (5th/6th bytes)
Air Buster - db00 (5th/6th and 7th/8th bytes), 1301 (15th/16th bytes)

i think all of these share the same position as a specific attack the enemy uses (as in the same position as the 32 block of the enemy's attacks), so it could be something to do with the camera movement, guard scorpion has 1301 set in the same position as the two unnamed moves it uses to switch between stages, and grashtrike has it in the same position as it's silk attack. the way to figure out what it is would be to compare the way the moves are used with the value there, and with the value as FFFF (i.e. unused), but my guess is that is somehow changes the camera, possibly by "borrowing" the animation used by another attack. it is probably likely that my guess about what it does is wrong (since they would likely just replace the camera movement in the attack data instead of borrowing the camera from another), but it definitely has to be related to the moves in some way.
Title: Re: How do I add new enemy to the existing group?
Post by: Kudistos Megistos on 2009-08-14 19:21:00
Actually, initial status would have to have been 4 bytes like the status immunities, because one byte alone cannot point to all the possible status conditions that can be active on the enemy, otherwise the status immunity section would have only been one byte, but that is only possible with 8 statuses, and there are definitely more than 8 :P.

I was thinking that it might work like the status defence and status attack parts of weapon and armour data that are one byte and can only identify one status. I'll have a look at this.

it is likely that the 2 byte unknown was originally a fourth manip/berserk move that was scrapped for whatever reason at the end.

That seems quite sensible. Have you tried putting anything in there to see whether an enemy can actually have a fourth attack? I don't think it would work, but...

as for the 32 byte unknown, that would require looking at every enemy's data to see if there is a possible pattern to be seen, it is hard to tell from a few enemies :P. here are a few more enemies and their values (including the ones you mentioned KM) maybe throwing a few out there will get some ideas flowing, though it would still be easier with a complete list of all enemies and their values:

Grunt - d200 (3rd/4th bytes)
Sweeper - 5e01 (5th/6th bytes)
Guard Scorpion - 1301 (11th/12th and 13th/14th bytes)
Grashtrike - 1301 (3rd/4th bytes)
Rocket launcher - d600 (first two bytes)
Blugu - d700 (3rd/4th bytes)
Special Combatant - d200 (3rd/4th bytes)
Smogger - d800 (5th/6th bytes)
Air Buster - db00 (5th/6th and 7th/8th bytes), 1301 (15th/16th bytes)

i think all of these share the same position as a specific attack the enemy uses (as in the same position as the 32 block of the enemy's attacks), so it could be something to do with the camera movement, guard scorpion has 1301 set in the same position as the two unnamed moves it uses to switch between stages, and grashtrike has it in the same position as it's silk attack. the way to figure out what it is would be to compare the way the moves are used with the value there, and with the value as FFFF (i.e. unused), but my guess is that is somehow changes the camera, possibly by "borrowing" the animation used by another attack. it is probably likely that my guess about what it does is wrong (since they would likely just replace the camera movement in the attack data instead of borrowing the camera from another), but it definitely has to be related to the moves in some way.

Something else for me to try :-P

Of course, it might be that some or all of these things used to what the things we think they might be doing but have been dummied out, in which case we might be looking for a long time :roll:
Title: Re: How do I add new enemy to the existing group?
Post by: secondadvent on 2009-08-14 19:25:15
yeah, it is possible that they are all dummied out, having to rewrite the entire pointing crap/removing the now unneeded data is much more work than just making it all useless :P.

i think i may have tried to add an extra move to the data after the manip attacks at one point in time, but do not remember the results, so it was likely that it did nothing  :roll:. no harm in testing it again though  :lol:.

oh, and i may not be right on this (nfitc1 is the "master of the kernels", so he would know for sure XD), but i think that the weapon status infliction is only one byte because only one status can be inflicted by one weapon, so they would only need to make it one byte, whatever the value is would be the status it can inflict (so 27/26 (depending if it starts from one or zero) would be the darkness status). for the initial statuses/immunities, it is possible to have all active at the same time (though not likely to happen, it is possible), so to do it the same as the weapon would take 32 bytes, one to show each active status, so the better way in that situation would be four bytes, each bit being a flag for a status, four bytes on a weapon that is only allowed one status to inflict is similar, more bytes than needed, though if it could activate more than one status it would be better with four. i hope you see what i mean, i am not the best at explaining things, and i may not even be right on the way the weapon status byte is... i am just assuming i am right :P.

yeah, i just checked again and adding another move to the spot after the three manip moves does nothing to the manip screen, so it is likely dummied out. and the second "status" section also did nothing, as you said... just making sure :P.