Qhimm.com Forums
Miscellaneous Forums => Scripting and Reverse Engineering => Topic started by: ff7rules on 2009-02-11 23:19:38
-
Well i wanted to know is it possible to actually make a battle out of it ive looked at him in hexediter and he has two attacks done- in(which im guessing is his animation when you beat him if so i best not touch that) and cut if i were to change these im sure it would mean bad things for sure, also he has 1 hp ....... right couldn't Squaresoft be abit more creative with that. Well anyway i see the battle has huge potential and if possible i wanna do something with it my questions are 1 is it even possible and 2 i know id need to edit the AI alot thats fine but would it be possible to completely redo his script and make a battle out of it? I think ive seen this done on youtube saintdragon i think was his name.
-
1. Yes, it's totally possible to make him a better final-battle. There's room for 32 attacks in any scene and his scene only uses 17. Don't touch Done-In. It's very specific attack that needs to stay the same. Feel free to add more attacks.
2. Yes, his AI will need significant re-writing. From TFergusson's Enemy Mechanics guide this is his script:
AI: Setup
{
Sephiroth's [402C] = 1
}
AI: Main
{
Choose Cloud
Use <Cut> on Target
Set Cloud as Self
Choose Sephiroth
Use Attack Command on Target
}
AI: Counter - General
{
Choose Self
Use <Done-in> on Target
Remove Self
RunCmd 0x22/0x0F
}
AI: Counter - Death
{
Choose Self
Use <Done-in> on Target
RunCmd 0x22/0x0F
}
AI: Counter - 13 [Post-Defeat/Battle]
{
[2110] = [2110] OR 0x08
}
There's plenty of things that could be changed, but don't leave out the Initialize script, RunCmd 22h/0Fh in the Counter-Death script or the Post-Battle script. Since we don't know for sure what they do.
402C is almost certainly "Don't allow death visual". ie, when target "dies" it flashes red and disappears. If this is set then the target won't do that. It's mostly only used in boss battles when the boss has a specific run-away animation.
Command 22/0F and the 2110 OR 08 have unknown functions.
Still, shouldn't be too hard to do.
-
1. Yes, it's totally possible to make him a better final-battle. There's room for 32 attacks in any scene and his scene only uses 17. Don't touch Done-In. It's very specific attack that needs to stay the same. Feel free to add more attacks.
2. Yes, his AI will need significant re-writing. From TFergusson's Enemy Mechanics guide this is his script:
AI: Setup
{
Sephiroth's [402C] = 1
}
AI: Main
{
Choose Cloud
Use <Cut> on Target
Set Cloud as Self
Choose Sephiroth
Use Attack Command on Target
}
AI: Counter - General
{
Choose Self
Use <Done-in> on Target
Remove Self
RunCmd 0x22/0x0F
}
AI: Counter - Death
{
Choose Self
Use <Done-in> on Target
RunCmd 0x22/0x0F
}
AI: Counter - 13 [Post-Defeat/Battle]
{
[2110] = [2110] OR 0x08
}
There's plenty of things that could be changed, but don't leave out the Initialize script, RunCmd 22h/0Fh in the Counter-Death script or the Post-Battle script. Since we don't know for sure what they do.
402C is almost certainly "Don't allow death visual". ie, when target "dies" it flashes red and disappears. If this is set then the target won't do that. It's mostly only used in boss battles when the boss has a specific run-away animation.
Command 22/0F and the 2110 OR 08 have unknown functions.
Still, shouldn't be too hard to do.
WOW man thanks this helps me sooooo much im gonna do it then im gonna make him a hard SOB :) Also do you know which field file contains the battle and field script because i can't find it anywhere?
-
The battle is in the scene.bin file scene232.
The field file that takes you to the battle is called las4_0. Towards the end of the very first script in the file there is a pointer to battle 39D, the formation ID for this fight.
-
The battle is in the scene.bin file scene232.
The field file that takes you to the battle is called las4_0. Towards the end of the very first script in the file there is a pointer to battle 39D, the formation ID for this fight.
thanks very much dude :) Also do you know if theres a list of where to get the battle IDs i looked on qhimm wiki but no luck if there isn't one i will do 1.
-
Sorry to double post but i have some news i think i managed to get his AI script im not sure if its all off it it though
0x0000 | 12.PushValue(2060)
0x0003 | 10.PushValue(402C)
0x0006 | 80.MaskSet
0x0007 | 60.PushByte(01)
0x0009 | 90.SetAddr
0x000A | 73.ScriptEnd
0x0000 | 12.PushValue(0000)
0x0003 | 02.LoadAddr(2060)
0x0006 | 90.SetAddr
0x0007 | 12.PushValue(0020)
0x000A | 02.LoadAddr(2050)
0x000D | 01.LoadAddr(4060)
0x0010 | 80.MaskSet
0x0011 | 60.PushByte(10)
0x0013 | 40.IfEqual
0x0014 | 90.SetAddr
0x0015 | 12.PushValue(2070)
0x0018 | 02.LoadAddr(0020)
0x001B | 90.SetAddr
0x001C | 60.PushByte(20)
0x001E | 61.PushWord(03BF)
0x0021 | 92.RunCmd
0x0022 | 12.PushValue(2060)
0x0025 | 02.LoadAddr(0020)
0x0028 | 90.SetAddr
0x0029 | 12.PushValue(2070)
0x002C | 02.LoadAddr(0000)
0x002F | 90.SetAddr
0x0030 | 60.PushByte(01)
0x0032 | 60.PushByte(00)
0x0034 | 92.RunCmd
0x0035 | 73.ScriptEnd
0x0000 | 12.PushValue(2070)
0x0003 | 02.LoadAddr(2060)
0x0006 | 90.SetAddr
0x0007 | 60.PushByte(20)
0x0009 | 61.PushWord(03C0)
0x000C | 92.RunCmd
0x000D | 12.PushValue(2060)
0x0010 | 10.PushValue(4023)
0x0013 | 80.MaskSet
0x0014 | 60.PushByte(00)
0x0016 | 90.SetAddr
0x0017 | 12.PushValue(2060)
0x001A | 10.PushValue(4024)
0x001D | 80.MaskSet
0x001E | 60.PushByte(00)
0x0020 | 90.SetAddr
0x0021 | 60.PushByte(22)
0x0023 | 60.PushByte(0F)
0x0025 | 92.RunCmd
0x0026 | 73.ScriptEnd
0x0000 | 12.PushValue(2070)
0x0003 | 02.LoadAddr(2060)
0x0006 | 90.SetAddr
0x0007 | 60.PushByte(20)
0x0009 | 61.PushWord(03C0)
0x000C | 92.RunCmd
0x000D | 60.PushByte(22)
0x000F | 60.PushByte(0F)
0x0011 | 92.RunCmd
0x0012 | 73.ScriptEnd
0x0000 | 12.PushValue(2110)
0x0003 | 02.LoadAddr(2110)
0x0006 | 60.PushByte(08)
0x0008 | 36.Or
0x0009 | 90.SetAddr
0x000A | 73.ScriptEnd
If this is his script i can see where the done-in animation is im guessing the camera work is alot of the script too so where can i start making changes since done-in is right at the start or doesn't that matter?
-
The animation and camera are completely controlled by the attack itself. Don't change any of that. Also don't forget that the 32 bytes preceding that script will need to be updated to reflect the beginning point of each script section.
-
The animation and camera are completely controlled by the attack itself. Don't change any of that. Also don't forget that the 32 bytes preceding that script will need to be updated to reflect the beginning point of each script section.
So the series of camera angles at the start is classed as an attack? thats whats confusing me since when i tried just for the hell of it to replace another bos with sephiroth since i don't have any disc 3 data yet and wanted to see if my changes worked with the boss it loaded. Showed sephiroth the black screen but it looked like when it goes to the camera screens it froze and crashed could be because i had 2 people in my party i dunno.
-
So the series of camera angles at the start is classed as an attack? thats whats confusing me since when i tried just for the hell of it to replace another bos with sephiroth since i don't have any disc 3 data yet and wanted to see if my changes worked with the boss it loaded. Showed sephiroth the black screen but it looked like when it goes to the camera screens it froze and crashed could be because i had 2 people in my party i dunno.
Oh! If you want to change the camera angle at the beginning of the battle you'll have to change the formation setup at the beginning of the scene. I'm sorry, I thought you were talking about the "Done-In" animation. For that battle those will appear somewhere in this range of bytes in that scene:
0x01C - 0x02F
0x044 - 0x057
0x088 - 0x0B7
0x0E8 - 0x117
Unfortunately, there's not a lot of public documentation on these pieces so I'm not sure what they do. Regardless I believe that intro camera angles exist somewhere in there.
-
So the series of camera angles at the start is classed as an attack? thats whats confusing me since when i tried just for the hell of it to replace another bos with sephiroth since i don't have any disc 3 data yet and wanted to see if my changes worked with the boss it loaded. Showed sephiroth the black screen but it looked like when it goes to the camera screens it froze and crashed could be because i had 2 people in my party i dunno.
Oh! If you want to change the camera angle at the beginning of the battle you'll have to change the formation setup at the beginning of the scene. I'm sorry, I thought you were talking about the "Done-In" animation. For that battle those will appear somewhere in this range of bytes in that scene:
0x01C - 0x02F
0x044 - 0x057
0x088 - 0x0B7
0x0E8 - 0x117
Unfortunately, there's not a lot of public documentation on these pieces so I'm not sure what they do. Regardless I believe that intro camera angles exist somewhere in there.
Thanks again man! i managed to give him deen and an attack that makes cloud HP 1(called Fallen Angel) so its already alot more harder and interesting im sure its possible so im also gonna make sephiroth taunt cloud. Im also gonna try and make him counter attack cloud whenever he uses his sword which will be difficult but ill be adding that towards tyhe end of my mod.
-
Got some news i got it to work cloud has to be on his own which isn't surprising really. I also changed the battle background just to see if it would work and it did nothing was different worked perfect which surprised me abit i don't know why just didn't expect it to be that easy. Now i do have 1 problem it seems no matter how much HP i give sephiroth he dies in 1 hit i know this is in the script but where i thought it was this
0x0000 | 12.PushValue(2060)
0x0003 | 10.PushValue(402C)
0x0006 | 80.MaskSet
0x0007 | 60.PushByte(01)
0x0009 | 90.SetAddr
0x000A | 73.ScriptEn
I guessed that pushvalue means forced to do if a certain event is met like say i don't attack sephiroth but he attacks me with "cut" cut been PushValue(2060) and then cloud automatically counterattacks with his normal attack that been PushValue(402c) not sure i thought that would be done-in or maybe clouds attack is the pushbyte im not 100% and im properly MILES off im not with ff7 script editing yet but i did alot for ff6 (ff3) anyway heres a screenshot to prove im serious about this i really want to accomplish a great final battle the way it should of been.
(http://img16.imageshack.us/img16/1383/finalfightatthestartdh8.png)
and yes sephiroth has no eyes lol. I know why though its obvious.
-
If you don't want Sephiroth to die in one hit you'll have to change his General Counter. That's what's causing him to die.
Also, please try to punctuate your posts better. They're really hard to read the way you're doing it.
-
If you don't want Sephiroth to die in one hit you'll have to change his General Counter. That's what's causing him to die.
Also, please try to punctuate your posts better. They're really hard to read the way you're doing it.
Ok. Thanks again sorry about my English. I will try to punctuate my posts better. Im going to attempt to edit the General counter bit of the script now.
-
Oh! If you want to change the camera angle at the beginning of the battle you'll have to change the formation setup at the beginning of the scene.
Whist I was trying some things out after my discoveries in the scene.bin file*, I found that there is something to do with camera angle in the section of the scene file named "battle setup 2" in the wiki (from 0x0058 to 0x0118). After I put the data from this part of the scene232 file into the scene117 file I fought Rufus with the camera angle from the Safer Sephiroth fight.
* BTW, I was able to do this (http://www.youtube.com/watch?v=5BqI3y4uzF0)! Nearly all the bosses, one after the other :wink:
-
Oh! If you want to change the camera angle at the beginning of the battle you'll have to change the formation setup at the beginning of the scene.
Whist I was trying some things out after my discoveries in the scene.bin file*, I found that there is something to do with camera angle in the section of the scene file named "battle setup 2" in the wiki (from 0x0058 to 0x0118). After I put the data from this part of the scene232 file into the scene117 file I fought Rufus with the camera angle from the Safer Sephiroth fight.
* BTW, I was able to do this (http://www.youtube.com/watch?v=5BqI3y4uzF0)! Nearly all the bosses, one after the other :wink:
WOW......! Is that possible in the PSX version do you know? I have no clue how you did that but it was awesome! It would be awesome to have a gauntlet like that before the Final boss.Kinda like Chrono Trigger.
-
You might want to read the discussion in the second half of this (http://forums.qhimm.com/index.php?topic=8198.0) thread. :-) I see no reason why it shouldn't be possible for the PSX version.
-
You might want to read the discussion in the second half of this (http://forums.qhimm.com/index.php?topic=8198.0) thread. :-) I see no reason why it shouldn't be possible for the PSX version.
Thanks for that link :) Im gonna try it on the PSX version now i know for a fact Safer sephiroth does work on the PSX version and on Disc one. But when he tries to cast super nova bad things happen. Im guessing its because super nova is a special video only on Disc 3 thats the only thing i can think off.
-
Sorry for double posting and im really embarrassed about this....... but i can't do it for some reason it just won't work and the emulator just crashes. any chnace of a quick tutorial Leighos?? sorry to ask but i just don't get why it won't work.
-
I didn't have any crashes when I did this (although the game froze up when loading new enemies after certain enemies were beaten). Can you tell me exactly what you are doing?
-
I didn't have any crashes when I did this (although the game froze up when loading new enemies after certain enemies were beaten). Can you tell me exactly what you are doing?
Im not 100% sure what im doing to be honest i opened up the scene in Hexediter and added at the end of the dying animation the id of the next battle and it just crashes the emulator.
-
I see. That's not where you put the ID! :-P
It must go in the battle setup. From 0x08 to 0x048 in the scene files there are four 20-byte-long records, one for each of the formations. the first two bytes in each record tell the game what background to load, the next two tell it which formation ID to put in when the current formation is beaten (if it's FF FF, nothing will happen). Try putting 6c 01 at 0x00A of scene82 (between 0B 00 and 09 00), then fight the Guard Scorpion. Hopefully, Air Buster will show up after he dies.
-
I see. That's not where you put the ID! :-P
It must go in the battle setup. From 0x08 to 0x048 in the scene files there are four 20-byte-long records, one for each of the formations. the first two bytes in each record tell the game what background to load, the next two tell it which formation ID to put in when the current formation is beaten (if it's FF FF, nothing will happen). Try putting 6c 01 at 0x00A of scene82 (between 0B 00 and 09 00), then fight the Guard Scorpion. Hopefully, Air Buster will show up after he dies.
AH! i see now! Thanks so much for telling me that i was really lost as to what i was doing wrong. Also what Hexediter do you use because mine crashes with some scene files.
-
I use HxD (http://mh-nexus.de/en/programs.php). It's freeware ftw!
-
I use HxD (http://mh-nexus.de/en/programs.php). It's freeware ftw!
thanks for the new hex editer its much better than what i was using before! Im not really sure if im on the right track with it, ive got a screenshot of what ive done. sorry to be such a pain.
(http://img156.imageshack.us/img156/2695/righttrackyz2.th.png) (http://img156.imageshack.us/my.php?image=righttrackyz2.png)
-
This is where you should be changing things:
(http://img99.imageshack.us/img99/7707/scene82ja1.png)
If you do this, beating the first formation (against Guard Scorion) will take you to formation 01 6c (Air Buster).
-
Thanks so-------ooo much man it worked!!! It works on the PSX version. Also is it the same place everytime for each boss?
-
Yes, it always puts the new enemy into the same place.
-
So it will do it for all the enemys in that scene then?
-
No. There are up to four formations in each scene (most of which are never used in the game), each with 20 bytes of battle setup data in this section of the file. Putting an ID in at 0x0A will only make the enemies appear after the first formation in the file is beaten. You can tell what the formations are by looking at the data from 0x0118 - 0x0297 (they are in the same order in both parts of the file. To make enemies appear after the other formations in the file are beaten, you have to put IDs in their battle setup section.
So, the two bytes at 0x0A of the file are the formation that appears after the first formation defined in the file is beaten, the bytes at 0x01E are the one that appears after the second formation in the file is beaten, 0x032 for the third formation in the file and 0x046 for the last one. You can put in the IDs of formations that are in the same file as well; this is actually done in scene 116, which has the Hundred Gunner and the Heligunner (IIRC); in the setup for the Hundred Gunner formation that is used there is the ID for the Heligunner fight, so the Heligunner turns up when the Hundred Gunner is beaten.
I fear that I might not be explaining this very well, so experiment and see what happens.
-
No. There are up to four formations in each scene (most of which are never used in the game), each with 20 bytes of battle setup data in this section of the file. Putting an ID in at 0x0A will only make the enemies appear after the first formation in the file is beaten. You can tell what the formations are by looking at the data from 0x0118 - 0x0297 (they are in the same order in both parts of the file. To make enemies appear after the other formations in the file are beaten, you have to put IDs in their battle setup section.
So, the two bytes at 0x0A of the file are the formation that appears after the first formation defined in the file is beaten, the bytes at 0x01E are the one that appears after the second formation in the file is beaten, 0x032 for the third formation in the file and 0x046 for the last one. You can put in the IDs of formations that are in the same file as well; this is actually done in scene 116, which has the Hundred Gunner and the Heligunner (IIRC); in the setup for the Hundred Gunner formation that is used there is the ID for the Heligunner fight, so the Heligunner turns up when the Hundred Gunner is beaten.
I fear that I might not be explaining this very well, so experiment and see what happens.
Nah you explained yourself well, i understand what you mean. Thats good then because it would be pretty bad if it was for every scene it would have to be a one off thing.
-
Sorry to double post again but i found this too funny not to post. Well i guess this is what i get for just playing around with stuff i know nothing about. Tried to change Sephiroths general counter and well look what happened! Not what i wanted to see!
(http://img5.imageshack.us/img5/8174/ooooopswq4.png)
good job i backed it up haha.
-
The worst I've ever done is make the game freeze up...
-
Yeah its first time anything like THAT ever happened to me. When i edit the General Counter move of sephiroth what can i edit it to just FF? What i want to do is make it so cloud doesn't counter attack because Sephiroth now has 9999 HP, and its scripted for the battle to end as soon as the counter attack is done.
-
This is where you should be changing things:
(http://img99.imageshack.us/img99/7707/scene82ja1.png)
If you do this, beating the first formation (against Guard Scorion) will take you to formation 01 6c (Air Buster).
This is what you meant by 0x0A and 0x0B! I thought you meant that offset of the record, not the absolute address in the scene. It has been updated in the wiki now. I'm glad you clarified this. :)
-
Yes :-P
And I see that some information about formations has been found as well...
-
This is where you should be changing things:
(http://img99.imageshack.us/img99/7707/scene82ja1.png)
If you do this, beating the first formation (against Guard Scorion) will take you to formation 01 6c (Air Buster).
This is what you meant by 0x0A and 0x0B! I thought you meant that offset of the record, not the absolute address in the scene. It has been updated in the wiki now. I'm glad you clarified this. :)
Yeah thats what was confusing me too untill i saw that picture. I had no idea what to do i assumed it was where the background was loaded, well how wrong was i haha. I have another question. How do i find out the battle IDs for say, Cactuer so i can have the encounter where ever i want? I looked on the PC version (which i recently purchased cost me £40 off Ebay!) and found a battle ID in the encounters bit in Meteor but what can i do with this?
-
I don' know for certain. When encounters happen on the field screen, it's possible to find the ID by looking in meteor (that's how I found the IDs for my mod). However there is no way to find the corresponding information for the world map AFAIK.
Nevertheless, it should be possible to find the ID for Cactuar by finding the scene file he is in an looking at the formation data there and finding a nearby scene with some formation IDs that are known (since the formation IDs are in the order in which they appear in the scene.bin, and nearly every file has four formations). Ultimate Weapon in Mideel has a formation ID of 0118 and is in scene71. Cactuar is in scene65 and is the first formation in that scene, so if I counted correctly his ID would be 0100.
And it was!
(http://img511.imageshack.us/img511/3664/cactuarinreactor1dg8.jpg)
-
I don' know for certain. When encounters happen on the field screen, it's possible to find the ID by looking in meteor (that's how I found the IDs for my mod). However there is no way to find the corresponding information for the world map AFAIK.
Nevertheless, it should be possible to find the ID for Cactuar by finding the scene file he is in an looking at the formation data there and finding a nearby scene with some formation IDs that are known (since the formation IDs are in the order in which they appear in the scene.bin, and nearly every file has four formations). Ultimate Weapon in Mideel has a formation ID of 0118 and is in scene71. Cactuar is in scene65 and is the first formation in that scene, so if I counted correctly his ID would be 0100.
And it was!
(http://img511.imageshack.us/img511/3664/cactuarinreactor1dg8.jpg)
AWESOME! glad to know your theory worked! I wonder would this work for every monster in the game. If so this could get very interesting, im gonna try now since im adding Cactuar as an optional boss aswell as the random encounter.
-
Small snag.
Turns out that's the Cactuar from the Corel Prison and not the Cactuer from the world map (which, I assume, is the one you'll want to fight). The ID for the latter is 00 E4
-
Small snag.
Turns out that's the Cactuar from the Corel Prison and not the Cactuer from the world map (which, I assume, is the one you'll want to fight). The ID for the latter is 00 E4
Wait thats the only Cactuar enemy in the scenes so it must be the same 1 used on the world map.
Thanks for the ID code.
-
No, the one on the world map is spelt with an er instead of ar and he's in scene58. I only found out myself half an hour ago.
-
No, the one on the world map is spelt with an er instead of ar and he's in scene58. I only found out myself half an hour ago.
http://www.youtube.com/watch?v=njwlhDMV60A So hes the one on the world map then, hes that one. So wheres the one in corel prison :S Just a thought you can only go in the prison at Corel on Disc 1 yeah? you can't access Cactuar Island untill disc 2. what if its the same one but because you can't access it on disc 1? You would never know because you can't get on the Island untill disc 2. I Might test this and spawn the highwind on disc 1 with gameshark codes and see if i get my modded beast of a cactuar on the Island. Also what code edits the enemys size or is that unknown?
-
The Cactuar in Corel Prison (about whom I'd completely forgotten) is also much weaker than the one on the World Map.
The one in this video is definitely the one from scene58, and I'd imagine that the size increase might have something to do with Cait Sith's "Transform" attack, since he starts off normal size and then gets bigger, but maybe not. gjoerulv did something similar with the Cactuer, maybe you could ask him how he did it?
-
The Cactuar in Corel Prison (about whom I'd completely forgotten) is also much weaker than the one on the World Map.
The one in this video is definitely the one from scene58, and I'd imagine that the size increase might have something to do with Cait Sith's "Transform" attack, since he starts off normal size and then gets bigger, but maybe not. gjoerulv did something similar with the Cactuer, maybe you could ask him how he did it?
I found the other Cactuar its in scene 65 so that clears that up. You think Gjoeruly would mind if i asked him?
-
I doubt he'd mind; I assume that what he did (http://www.youtube.com/watch?v=Mhi0a16fREQ) was the same as what SaintDragon666 did.
-
Ok thanks ill ask him if giving him transform doesn't work although im sure it will. Do you have a list of the Battle IDs or know where i can get 1? Also im gonna start work on rescripting Sephiroth soon i think i now have a vague idea what im doing after looking at wiki. Im just not sure for certain where sephiroths General Counter bit is. i know its located at offset 0x04 General Counter but im not certain which byte controls clouds counter attack, and i just wanna say dude thanks for helping me and answering all my questions.
-
Would that I could find a list of formation IDs! I had to search for battle opcodes in meteor :-o
Have a look at Sephiroth's AI with scene edit (http://www.subfan.pl/mav/SceneEdit.zip). It's not perfect and it doesn't let you edit AI (that still has to be done with a hex editor :cry:), but it's useful for finding things like this.
-
Would that I could find a list of formation IDs! I had to search for battle opcodes in meteor :-o
Have a look at Sephiroth's AI with scene edit (http://www.subfan.pl/mav/SceneEdit.zip). It's not perfect and it doesn't let you edit AI (that still has to be done with a hex editor :cry:), but it's useful for finding things like this.
Wow...... This has saved me loads of time! Do i just edit it in wordpad or whatever then dump it back in? Also how do you find the opcodes for the battles on the world map in meteor? I can view the field files after splitting and all the dialog and maps. will the battle IDs be the same for both the PSX and PC version im guessing so.
-
You still have to edit everything manually with a hex editor like you did before, I'm afraid. That includes changing all the pointers as well (which is a pain).
Meteor can't do anything with the world map; AFAIK very little is known about how the world map works.
-
You still have to edit everything manually with a hex editor like you did before, I'm afraid. That includes changing all the pointers as well (which is a pain).
Meteor can't do anything with the world map; AFAIK very little is known about how the world map works.
Ah well maybe one day. Yeah editing them manually is hard work but very rewarding if you get the result you want im hoping to have him using 1 more attack than ususal and him not dying when cloud counter attacks or removing the counter attack altogether. I heard theres a glitch with Sephiroth that you can't change his HP im guessing this because its scripted to be that much.
-
Sorry to double post again but i found this too funny not to post. Well i guess this is what i get for just playing around with stuff i know nothing about. Tried to change Sephiroths general counter and well look what happened! Not what i wanted to see!
(http://img5.imageshack.us/img5/8174/ooooopswq4.png)
good job i backed it up haha.
IT'S MISSINGNO! :-o
-
Sorry to double post again but i found this too funny not to post. Well i guess this is what i get for just playing around with stuff i know nothing about. Tried to change Sephiroths general counter and well look what happened! Not what i wanted to see!
(http://img5.imageshack.us/img5/8174/ooooopswq4.png)
good job i backed it up haha.
IT'S MISSINGNO! :-o
LMFAO hes back oh noes! I actually
Anyway My good friend Hotdog made an amazing discover today which i think has helped us all he found the opcodes for the battles without meaning to!
Recently He found a Gameshark cheat code site for ff7 thought nothing of it. But today hotdog discovered something this list is the battle opcodes! http://viper.shadowflareindustries.com/index.php?doc=ff7enemieshtml hows this work? Well you see for example i will use safer sephiroth he has 2 battles i don't know why look at the code on the left its 039C Safer Sephiroth Big deal right well guess what Safer Sephiroth-battle ( 00, 9C, 03 ) im sure you will get the idea how it works now and if this has been discovered before sorry i didn't know. So now we have the list thanks to Viper for these codes!
-
I have a question about Sephiroths script how do i know which part or code is used for clouds counter when Sephiroth uses cut. I know it will be located in the general counter part aswell which helps is it this byte and offset that controls whether or not cloud counters Sephiroths cut or not? (0x001E | 60.PushByte(00) post battle i think) im guessing its this, what can i do to change it?
-
Actually it's in Sephiroth's Main Script.
0x0000 | 12.PushValue(0000)
0x0003 | 02.LoadAddr(2060)
0x0006 | 90.SetAddr
0x0007 | 12.PushValue(0020)
0x000A | 02.LoadAddr(2050)
0x000D | 01.LoadAddr(4060)
0x0010 | 80.MaskSet
0x0011 | 60.PushByte(10)
0x0013 | 40.IfEqual
0x0014 | 90.SetAddr
0x0015 | 12.PushValue(2070)
0x0018 | 02.LoadAddr(0020)
0x001B | 90.SetAddr
0x001C | 60.PushByte(20)
0x001E | 61.PushWord(03BF)
0x0021 | 92.RunCmd
1:
0x0022 | 12.PushValue(2060)
0x0025 | 02.LoadAddr(0020)
0x0028 | 90.SetAddr
2:
0x0029 | 12.PushValue(2070)
0x002C | 02.LoadAddr(0000)
0x002F | 90.SetAddr
3:
0x0030 | 60.PushByte(01)
0x0032 | 60.PushByte(00)
0x0034 | 92.RunCmd
0x0035 | 73.ScriptEnd
This section that I've isolated says
1. set self mask to opponent
2. choose target as self
3. opponent attack self
His death counter will then activate, ending the battle. If you do 0 damage (almost not possible), then his general counter will activate, ending the battle.
-
OH I SEE NOW! thanks alot man im pretty sure i now know what im doing :wink: Also i tried stealing form him and that ended the battle lol
-
Sorry to bother you again but i have a new problem. I added some script to sephirioth and like i expected the file got bigger so i cut down some of the padding. The file says its smaller (6 kb) however when i use scenereader to put it all back it says in Cdmage the file will be trundicated. Is there anyway around this as i thought deleting some of the padding added by the script i added would of worked? Also this IS sephiroths script right? I'm sure it is, if not I'm clueless.
http://www.imagenerd.com/show.php?_img=seps_script-VPD3r.png
EDIT: Problem solved!!! I have to delete the exact amount of FF from the bytes i added no more no less hopefully have a vid of the new final battle soon.
-
Sorry to triple post but i have some news on sephiroth. I have managed to do 2 things i wanted to do 1 make it so he dies like a regular enemy which is good and make it so he doesn't use cut. I'm now in the process of wanting to give him Ultima and Deen. Gjoerulv (sorry if i spelt your name wrong) has been helping me alot with this so big thanks goes out to him and everyone else who's helped me thus far. I have a new problem and i know exactly why it is i think, the headers are wrong again. I thought i got how you worked them out but i guess not. Anyway back to the sephiroth script i have it so i want to cast either deen or ultima at random but it doesn't work he just does nothing just like Cactuar did. So thought id post what Ive done so far and see if anyone can tell me if I'm doing the right things or not. I will produce a video of what i have done so far if it is requested :)
http://www.imagenerd.com/uploads/sepsai-9QzOy.png
http://www.imagenerd.com/uploads/sephelp2-i3xdi.png
This is all confusing stuff to me but I'm gonna do it.
-
#1. Do not multi-post unless the topic you're posting in is NOT on the first page of topics.
#2. That first image isn't even showing the same scene. If that's OK then don't worry about it, but I thought you wanted to change the final 1-1 battle. If that's the case it'll need to be in the same scene.
Yes your headers are wrong. You need each section to point to the byte AFTER the previous section's 73h.
20 00 50 00 91 00 5B 00 FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF A4 00
Your script is all wrong too. You've got a jump in there to script address 0x8601?! You also have an absolute jump back to the beginning of the script. Basically, your jumps are all wrong.
Jumps are, unlike the header, script-relative addresses stored in Big-Endian (Most significant [greatest] value last). It's better for you to write all the script out and see the actual addresses within the script. Those are the addresses you'll want to jump to.
ex:
Init Script:
0x00: 12 60 20
0x03: 10 A0 20
...
Main Script:
0x00 12 70 20
0x03 10 A0 20
0x06 60 01
0x08 80
These are the addresses you'll want to jump to. Not "jump this many bytes ahead" or "jump to this address within the collective script". You can't jump scripts and do not create a loop you can't get out of. You put that "Jump to beginning" in your init script. Bad idea. The battle will never get farther than Sephiroth performing something over and over. That is assuming, of course, that it gets past that "JZ 0x8601".
I don't really have the time at the moment to attempt to correct it. Just know for now that it's wrong.
-
#1. Do not multi-post unless the topic you're posting in is NOT on the first page of topics.
#2. That first image isn't even showing the same scene. If that's OK then don't worry about it, but I thought you wanted to change the final 1-1 battle. If that's the case it'll need to be in the same scene.
Yes your headers are wrong. You need each section to point to the byte AFTER the previous section's 73h.
20 00 50 00 91 00 5B 00 FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF A4 00
Your script is all wrong too. You've got a jump in there to script address 0x8601?! You also have an absolute jump back to the beginning of the script. Basically, your jumps are all wrong.
Jumps are, unlike the header, script-relative addresses stored in Big-Endian (Most significant [greatest] value last). It's better for you to write all the script out and see the actual addresses within the script. Those are the addresses you'll want to jump to.
ex:
Init Script:
0x00: 12 60 20
0x03: 10 A0 20
...
Main Script:
0x00 12 70 20
0x03 10 A0 20
0x06 60 01
0x08 80
These are the addresses you'll want to jump to. Not "jump this many bytes ahead" or "jump to this address within the collective script". You can't jump scripts and do not create a loop you can't get out of. You put that "Jump to beginning" in your init script. Bad idea. The battle will never get farther than Sephiroth performing something over and over. That is assuming, of course, that it gets past that "JZ 0x8601".
I don't really have the time at the moment to attempt to correct it. Just know for now that it's wrong.
Thanks for all this help NFITIC1 and sorry about posting multiple times i won't do it again. I got really confused with the "86 01" bit i thought i had to put the offset where the attack ID was but now i know thats definitely not the case lol. I see this is gonna be one of those things that takes months to grasp, All i get now is a black screen no battle i can't understand why though should i quit trying and try something else? Just a bit dishearted by all this thought i really had it :|
-
I think the problem might have been that you jumped to the the offset in the scene as a whole, not starting counting at the beginning of the section. The 1st byte of each section must be treated as offset 0x0000 when calculating a jump. If you understand this it's pretty obvious you where miles of with 0x8601. No AI is that long. The jump can't find the location 0x8601.
And you really shouldn't getting into loops. Unless you have some mechanic that checks if the loop should end you should try it. But this loop wasn't supposed to be was it? :P
ok enough of that.
1st as I see in the 2nd picture you shouldn't insert ultima between Cut and Done-in. Insert it at the end. Otherwise Ultima will get data from Done-in and Done-in will get data from ultima. Always store the attacks in the same order in attack data, attack IDs and attack names.
2nd why does the AI start at another offset at edited one?
3rd offset 0x1218 in the edited one needs to be A0h, not 0Ah. 20A0h flopped is A020h. (20 A0 -> A0 20)
There are other issues (where does setup end for instance).
Here is some image help:
(http://www.imagenerd.com/uploads/5555-wfnzn.jpg)
(http://www.imagenerd.com/uploads/7777-A1NO7.jpg)
-
Hey man thanks for these pics really helped me out. Ive just literally been playing around tonight in hex editor and managed to do something pretty funny. Sephiroth uses cut on cloud. Cloud then counter attacks himself the script isn't finished yet though so i was just testing it really see if the headers worked and such. Heres what i have so far Only thing I'm not sure about is IfZeroGoTo bit but ill post a video of cloud owning himself tommorrow. Its 4 am and I'm tired :lol: thats how decicated i am to this.
Oh yeah and......
I think the problem might have been that you jumped to the the offset in the scene as a whole, not starting counting at the beginning of the section. The 1st byte of each section must be treated as offset 0x0000 when calculating a jump. If you understand this it's pretty obvious you where miles of with 0x8601. No AI is that long. The jump can't find the location 0x8601.
That was just me been a rtard i didn't actually realize i had done that until i looked tonight. I added Ultima right after Done-In but haven't got sephy to use it yet I'm looking forward to what strange animation he will have when he uses it. He might just use cut. He might break dance he might just stand there i don't mind long as its a good fight.
http://www.imagenerd.com/uploads/sepscriptwip-p8vgU.png
I'm sure ill have done something wrong but hopefully it won't be as critical as last time :-P
If the headers are wrong it might of been because i was tired either that or I'm dumb. I now know its after 73 then the 12 which you read from the offset like Gjoerulv showed in his pics. sorry if i didn't explain that very well.
-
You're missing 4 bytes. The 1st pointer must always point to offset 0x0020. Insert FF FF FF FF before AC 00. As it is now your setup starts at 0x0027 which should be main. The header is always 32 bytes long (or 20h). As it is now, the bytes from 0x1C to 0x26 are useless.
The inside jump doesn't make any sense, It simply jumps to the next byte. Now Seph may cast Ultima (1/8 chance), attack Cloud and then Cloud will attack himself lol. You need to swap the bytes at 0x66 and 0x67 to 12 70 20 (not 12 20 70), then Cloud will attack Sephiroth again.
If you make the AI exactly like in my pics you won't have any probs I hope.
-
You're missing 4 bytes. The 1st pointer must always point to offset 0x0020. Insert FF FF FF FF before AC 00. As it is now your setup starts at 0x0027 which should be main. The header is always 32 bytes long (or 20h). As it is now, the bytes from 0x1C to 0x26 are useless.
The inside jump doesn't make any sense, It simply jumps to the next byte. Now Seph may cast Ultima (1/8 chance), attack Cloud and then Cloud will attack himself lol. You need to swap the bytes at 0x66 and 0x67 to 12 70 20 (not 12 20 70), then Cloud will attack Sephiroth again.
If you make the AI exactly like in my pics you won't have any probs I hope.
I copied everything you did from the pic you showed me just to see if it would work and i get the same result as before sephy does nothing just stands there. Maybe hes not meant to cast magic :lol: At least he doesn't die in one hit now lol. Also in SceneEdit i can't view his script its just blank :?
-
Make sure the pointers at offset 0xE80 are correct. You know, where the whole AI section of the scene starts.
You could send me that scene and I'll look into it. Oh and you should add Sephiroth's 0x402C = 1h in the setup. I forgot that. And, just for fun, you could try the other body animation on the new attacks. The 04h one; see if anything happens.
-
I have no idea how to add his other body animations for his magic attacks but heres the file of what Ive done so far http://www.megaupload.com/?d=O9J0T9UZ If i made any mistakes could you let me know i just wanna learn everything i can thanks man. EDIT: changed the link it was the wrong version.
How does the headers work at 0xE80 in what way are they connected with the AI?
06 00 6C 03 FF FF 20 00 7F 01 FF FF 2B 03 FF FF
Thats what i have
-
For some reason post repeated twice :? ill edit this 1 when i next reply unless theres away to delete it?
-
Those three Words (byte-pairs) are pointers to the header of the monsters' AI scripts. The first one should always be 06 00 and the second one will point to the address of the next monsters' AI relative to 0xE80. So if second script starts at 0x1200 and there's not a third monster then these three Words will be:
06 00 80 04 FF FF because E80 + 480 = 1200 (in hex of course). Make sure they're pointing to the beginning of the monster's AI header too (the first byte of the init script even if that monster doesn't have an init script).
-
Ah i see now its like how many bytes it needs to jump to get to that start of the AI? 0000 = Start of headers for that enemy like in Gjoerulvs pic? If thats so how the hell do you work out E80 + 480 = 1200 does E80 have a special number or something or do you literally have to count how many bytes seprates em?
-
0xE80 is always the address of those pointers in each scene. So the first enemy's AI always starts at 0xE86. These are going to be absolutes.
-
ok, quick feedback on the scene. You did not add the attacks (Deen and Ultima) to Sephiroth's data, but you did add some extra IDs to the attack ID list and names including Deen which was already there, so I removed 'em. Deen was also added at the end of Attack data (which I also removed). You don't have to add an attack to the lists if it's already there.
I added 04h at offset 0x38A and 0x38B to tie an animation to the attacks. Look at 0x39C - 0x39F to see the attack ID I added there. (talking offset now I mean the scene as a whole, not just the AI). The animation added are the same as Sephy's done in lol, but You can change 'em back to 03h to use the Cut animation (offset 0x38A and 0x38B).
The pointers at 0xE80 was correct but Sephiroth's header was again messed up. The header is always 32 bytes long, or 20h, and need to start where those main pointers point at (the ones at 0xE80). I think you thought correctly, but the sections start offsets was all mess up because of the extra bytes at the start.
Here is the scene http://www.megaupload.com/?d=R18YZX32 (http://www.megaupload.com/?d=R18YZX32)
-
ok, quick feedback on the scene. You did not add the attacks (Deen and Ultima) to Sephiroth's data, but you did add some extra IDs to the attack ID list and names including Deen which was already there, so I removed 'em. Deen was also added at the end of Attack data (which I also removed). You don't have to add an attack to the lists if it's already there.
I added 04h at offset 0x38A and 0x38B to tie an animation to the attacks. Look at 0x39C - 0x39F to see the attack ID I added there. (talking offset now I mean the scene as a whole, not just the AI). The animation added are the same as Sephy's done in lol, but You can change 'em back to 03h to use the Cut animation (offset 0x38A and 0x38B).
The pointers at 0xE80 was correct but Sephiroth's header was again messed up. The header is always 32 bytes long, or 20h, and need to start where those main pointers point at (the ones at 0xE80). I think you thought correctly, but the sections start offsets was all mess up because of the extra bytes at the start.
Here is the scene http://www.megaupload.com/?d=R18YZX32 (http://www.megaupload.com/?d=R18YZX32)
Thanks NFITC1 for that info i had no idea that was the case. GJ i tried that scene out and well something really werid happened i either attack sephiroth with braver then he cut me twice then he like does his done in animation but drops his sword and flys away (no joke) Then i get Game Over ill have alook at it now see if i can figure out whats wrong thanks for doing having alook at it i guess its still trial and error for me still oh well :)
-
lol would love to see a video of it!
But you know there is an extra scripts starting at 0xC80. This may f**** up the battle if you want it normally.
-
Video coming up! ill edit it in when its uploaded
EDIT Video is uploaded waiting for it to process.
Vids done http://www.youtube.com/watch?v=wASMd1DsHpM
EDIT: After looking at the scene in Hex editor I'm really confused. It looks like you deleted all the other headers except the 1 to tell it to go to done-In animation?
As far as i can see heres how it goes
Use cut if attacked or wait an amount of time to use cut anyway
after cut use done- in then game over instead of end the battle. Is it just done- in = end of the battle no matter what? i will try changing it to cut and let you know what happens.
EDIT: Some bad news I'm afraid i now know whats happening after changing done-in casting magic to cut i see whats going on. I had 20 fights in a row 6 of them Sephiroth just died the other 4 he used cut over and over again. But then he did actual damage and killed me in one swoop I'm guessing that damage was "Deen"(hit me for 1565) and another time hit me for alot more(Ultima). So that's it folks sephiroth can only use the damage value in his cut. No magic animations since cut is classed as a "cut" attack if i was to change this might i get a different result? I will try now.
Out of luck sephiroths Cut is not a cut attack.
Thinking what about the other sephiroth the one from the flashback would replacing the two be hard?
Well with what i got to work with heres a vid http://www.youtube.com/watch?v=XRj9l0ErTM0
-
Yeah, he doesn't have casting animation, does he? Unfortunately I don't know much about animating these figures so I couldn't answer this, but wouldn't it be possible to "borrow" the skeleton from the Sephiroth in the flashback to make a casting animation?
Other than that the video looks great. Sephiroth seems a good challenge when 1-1.
Personal opinion; You should add the following to Sephiroth's Death Counter script:
12 60 20
02 20 00
90
12 70 20
02 00 00
90
60 14
61 86 00
92
That will force Cloud to use Omnislash when Sephiroth's HP are 0. :D Then he can perform his normal dying animation. Well, I guess the only set-back to this is that Cloud MIGHT do two Omnislashes in a row. One via a command by the player, the other forced by Sephiroth's Main Script...
-
Yeah, he doesn't have casting animation, does he? Unfortunately I don't know much about animating these figures so I couldn't answer this, but wouldn't it be possible to "borrow" the skeleton from the Sephiroth in the flashback to make a casting animation?
Other than that the video looks great. Sephiroth seems a good challenge when 1-1.
Personal opinion; You should add the following to Sephiroth's Death Counter script:
12 60 20
02 20 00
90
12 70 20
02 00 00
90
60 14
61 86 00
92
That will force Cloud to use Omnislash when Sephiroth's HP are 0. :D Then he can perform his normal dying animation. Well, I guess the only set-back to this is that Cloud MIGHT do two Omnislashes in a row. One via a command by the player, the other forced by Sephiroth's Main Script...
Thanks for this idea! Im definetly gonna add this as he has the same HP as Ruby Weapon anyway so it wouldn't matter if he did two limit breaks. Also i think it would make the fight all the more epic if i added a dialog box just before he uses the last omnislash. But i dunno what he could say i don't wanna ruin the whole moment by saying something cloud wouldn't say or sephiroth wouldn't say remember he returns in advent children so could refer to that? If people think this is a silly idea i won't do it im gonna add what you said to do now though NFITC1 thanks. :wink: If its possible to "borrow" the flashbacks animation for casting magic im all for it if someone knows how to pull this off.
I tried the script you posted the battle works but when hes at 0 HP i got Data Error sceen 925 code 32 i might know why this is though ill edit this post if what i try works.
-
This would work like NFITC1 posted if you have stored Cloud as 0x20 and Sephira as 0x00 (and 86 is Omni. Haven't checked but I guess he got controll). It's like this by default but if you used my suggestion then I removed that part where the variables are made. You could bring it back in the setup part though.
12.(0000)
02.(2060)
90. <- Seph is 0x0000
12.(0020)
02.(2050)
01.(4060)
80.
60.(10) <- I guess this is Cloud from the AND-ed bank
40.l
90. <- Cloud is 0x0020
As much HP as ruby? IMO that's a bit much. You could add a part that makes him use an attack that drains damage dealt when his HP is low.
This one checks if Current Hp is under MAX HP/XX*YY. (if not GOTO offset 0xZZZZ)
02.(2060)
03.(4160)
80.
02.(2060)
03.(4180)
80.
60.(XX)
33.
60.(YY)
32.
43.
70.(ZZZZ)
As target is stored in Setup we don't need to set it (Cloud id the only option anyway. By default it isn't set though)
60.(20)
61.(The attack ID)
92.
72.(goto end of script)
-
This would work like NFITC1 posted if you have stored Cloud as 0x20 and Sephira as 0x00 (and 86 is Omni. Haven't checked but I guess he got controll). It's like this by default but if you used my suggestion then I removed that part where the variables are made. You could bring it back in the setup part though.
12.(0000)
02.(2060)
90. <- Seph is 0x0000
12.(0020)
02.(2050)
01.(4060)
80.
60.(10) <- I guess this is Cloud from the AND-ed bank
40.l
90. <- Cloud is 0x0020
As much HP as ruby? IMO that's a bit much. You could add a part that makes him use an attack that drains damage dealt when his HP is low.
This one checks if Current Hp is under MAX HP/XX*YY. (if not GOTO offset 0xZZZZ)
02.(2060)
03.(4160)
80.
02.(2060)
03.(4180)
80.
60.(XX)
33.
60.(YY)
32.
43.
70.(ZZZZ)
As target is stored in Setup we don't need to set it (Cloud id the only option anyway. By default it isn't set though)
60.(20)
61.(The attack ID)
92.
72.(goto end of script)
Thanks for posting this im gonna try it now and the reason i gave him as much HP as ruby was because of omnislash as it can deal a hell of alot of damage so i figured that but i might make it lower.
-
This is where you should be changing things:
(http://img99.imageshack.us/img99/7707/scene82ja1.png)
If you do this, beating the first formation (against Guard Scorion) will take you to formation 01 6c (Air Buster).
Hi im new here. I'm currently modding my FF7 psx version. And I don't know how you guys can decipher the hex code. How do you guys know what & where to change?
-
See here (http://wiki.qhimm.com/FF7/Battle/Battle_Scenes). It takes a while to work out what you're doing with hex editors, but it's not too hard. :wink:
However, there isn't much need for them any more (at least when editing enemies); there are a few things that no program can do in the scene.bin file yet, but most things can be done with Proud Clod (http://forums.qhimm.com/index.php?topic=8481.0) (read the help file for AI editing) and Hojo (http://forums.qhimm.com/index.php?topic=7186.0).
-
I'm currently modding my FF7 psx version.
==
#1 @Kudistos Megistos, so after you edit whatever it is do, what do you do after that? how can you take your edited work and merge back to scene.bin?
#2 @Kudisto Megistos & ff7rules, i want to know how you guys can replace the first scorpion boss for another boss of your pick? I've tried using the proud clod program, to edit the enemy formation. Am I doing this right? Because for some reason, the game screen gets glitchy, errored, and frozed.
http://img199.imageshack.us/img199/6576/71287934.jpg
#3 I really want to mod my own enemy "encounter" but it seems like it's not as easy as changing a few hex numbers.
btw, i'm reading the link you recommended (Kudistos Megistos).
-
Before hex editing a scene file, you need to decompress it with scene reader (link is at the bottom of the wiki page) and recompress it when you've finished the editing (protip: close the hex editor window before recompressing with scene reader). Hojo and Proud Clod do the de- and recompressing themselves.
As for editing formations, I'd be careful; some enemies don't like being in certain positions. Not much research has been done with formations AFAIK, so I can't really give you any help.
gjoerulv gives some advice on creating enemies here (http://forums.qhimm.com/index.php?topic=7407.msg90114#msg90114) (post was made before Proud Clod came out). You may have to do some field editing as well; unfortunately that isn't my area of expertise. For the PC version, a program called meteor will do the job (you should be able to find it on the forums).
Unfortunately, I'm not sure what program would be best for the PSX version; I know that 7mimic can do some editing to field files, but I don't know whether that includes encounter and script edits.
-
Before hex editing a scene file, you need to decompress it with scene reader (link is at the bottom of the wiki page) and recompress it when you've finished the editing (protip: close the hex editor window before recompressing with scene reader). Hojo and Proud Clod do the de- and recompressing themselves.
Proud Clod does not need the scene.bin to be decompressed first. If you're using Hojo, do all that before hand and recompress the scene.bin then edit THAT with Proud Clod. SceneReader is not necessary.
Just thought I'd clarify.
-
Mimic 7 can change encounters im done it myself. Also about enemy AI i have a template i use so all you have to do is add your attacks and change the headers would anyone be intertsed in seeing or using this template it was made by gjoerulv.
-
I'd like that template :-)