Jump to content

Zelda MultiPurpose Editor


SanguinettiMods
 Share

Recommended Posts

Alright, another program ^^

 

 

 

Zelda MultiPurpose Editor 1.1 (ZMPE V1.1) Written in C by SanguinettiMods.

 

Credit=+=+=+=+=+=+vvvvvvv

 

Flotonic-+-+

::::::::::::

FLotonic was a very cutial addition to this project, without him, I would be stuck at some very tight spots. He gave me permission to use some of his coding from other programs of his, as well as letting me add 3 programs from his Link Editor in C to this editor. Give him credit when using this program.

::::::::::::

 

Others

::::::

I want to thank other members of the community for providing documentation on some things in the ROM, such as the offsets for Tunic colors and such.

::::::

 

Satoshi Kura++++=====+++++

::::::::::::::::::::::::::

Satoshi helped as my "Beta Tester" when some of the programs were in development. He picked out problems that I missed, as well as had fun using the programs. Thanks~

::::::::::::::::::::::::::

 

This program was written entirely in C spanning for a little less than two weeks. This resulted in a whopping 3368 Lines of source code.

 

Suggestions? Contact me, the creator, at SanguinettiMods@Hotmail.com

 

This program includes:

 

-The ability to edit Oot's Header(SanguinettiMods)

-The ability to edit MM's Header(SanguinettiMods)

- An MM Tunic Changer (SanguinettiMods)

-An OoT Tunic Changer (SanguinettiMods)

-OoT Spin Attack Modification (SanguinettiMods)

-OoT DList recoloring (SanguinettiMods)

-OoT Sword Slash Modifier(SanguinettiMods)

-The ability to edit OoT Item Maximums (Flotonic)

-The Abilty to edit OoT's Rupee Values (Flotonic)

-The Ability to edit OoT's Wallet Maximums (Flotonic)

- Navi Color Editor (SanguinettiMods)

 

I'm not releasing the source code.

 

Download - Here!

Link to comment
Share on other sites

This resulted in a whopping 3368 Lines of source code.

omgwtf

 

Well anyway, nice program but I'd recommend being able to choose a ROM without it having to have a specific filename and adding a main loop for the program so you don't have to keep reopening it to use different features; you should try rewriting this as a gui program rather than cli, it'd work so much better.

Link to comment
Share on other sites

Mind if I give some criticism?

 

For one, don't hardcode filenames into your program! Not everyone has their MQ Debug ROM named ZELOOTMA.Z64, so just give the user the option to enter the filename, like you give them the option to enter whatever else already.

 

Second, the header editor is broken, it stops writing to the ROM at the first space. Also, the game title can be 20 characters long, not just 19. And also, there's programs identifying the ROMs according to their title and ID - "THE LEGEND OF DEBUG" already caused more harm than necessary in that regard - so I'd actually advise against editing the header in general.

 

And on the subject of the ROM header, you should also look into identifying ROMs instead of blindly assuming that the user provides the correct ROM. What if someone loads in, say, a decompressed OoT ROM instead of the MQ Debug ROM?

 

Some things that came to my mind when starting the program. It's a good idea, but what I tried is - in my opinion anyway - full of tiny flaws.

 

EDIT: Also, 3368 lines of source? Sayaka's Ucode interpreter is just over 2000 lines long, the game handler just over 1800 lines. Isn't that a bit much for a relatively simple command line tool?

Edited by xdaniel
Link to comment
Share on other sites

Everyone basically summed up my criticism I had offer but I also am asking why not release the source code? If your learning to program, then these guys can help you improve your code to be better and be able to discuss it with you so you can make the program efficiently, its not like anyone is steal your work and call their own. But the choice is yours, this is just my two cents.

Link to comment
Share on other sites

Everyone basically summed up my criticism I had offer but I also am asking why not release the source code? If your learning to program, then these guys can help you improve your code to be better and be able to discuss it with you so you can make the program efficiently, its not like anyone is steal your work and call their own. But the choice is yours, this is just my two cents.

This. Open source programs get stuff done.

 

Also agree with comments on the 3368 lines of code--a long source does not make a good one. Efficiency should be taken into consideration once you get the program fully working. Ideally, a program should do as much as possible with as few lines of code as is also possible.

Link to comment
Share on other sites

Hmm, Thanks for the criteria. I would re-make it in a GUI, just for fun, but in VB, I have NO Idea how to edit a file in Hex, like I do in C.

 

I don't see why the Header Editor would be broken, but I guess it is. I've decided to release my source code, since apperently I should.

 

Go Ahead, if you can find a way to make it better, knock yourself out. - Source Code

 

Also, remember, that I'm an 11 year old, so I don't know how to do everything.

Link to comment
Share on other sites

The header editor is broken because, like this, scanf doesn't take spaces.

 

As for making the code smaller and the like, don't duplicate the same code over and over, rather use functions that take certain parameters and/or return certain values. Like entering RGB values (from memory, so bear with me if it doesn't work right out of the box, tho it should):

 

void RGBwrite(int offset)
{
	char rr, gg, bb;

	printf("\nBe sure to use the RR GG BB format!\n\nRed Value (Hexadecimal) = ");
	scanf("%x",&rr);
	printf("Green Value (Hexadecimal) = ");
	scanf("%x",&gg);
	printf("Blue Value (Hexadecimal) = ");
	scanf("%x",&bb);

	fseek ( ootrom , offset , SEEK_SET );
	fputc(rr,ootrom);
	fseek ( ootrom , offset+0x1 , SEEK_SET);
	fputc(gg,ootrom);
	fseek ( ootrom , offset+0x2 , SEEK_SET);
	fputc(bb,ootrom);
	printf("\nDone!\n\n");
}

And called like so:

 

if (oottunic=='1')
{
	printf("Currently editing the Kokiri Tunic.\n");
	RGBwrite(0xB9D1A8);
}

That said, at 11, I was messing around in VB 4.0, doing random junk, so in that regard you're already ahead of me when I was that age :P

Link to comment
Share on other sites

Couldn't you use Visual C++?

 

My advice would be to think a little more about the program before you rush into writing it. You should learn how and when to use things like loops and functions too because I'm pretty sure that'd save many lines of code here. I'm not saying you're a bad programmer because you've probably only just started but you should try out some more examples to learn more about the language you use because that will improve anything you program in the future.

Link to comment
Share on other sites

Pro-tip: Don't use the scanf family to get integers. Use strtol and strtoul. strtoul and strtol are really neat, because if you specify the base as 0, it automatically detects the base - weather it be octal, decimal, or hexadecimal. The functions also ignore leading and ending whitespace :P

Link to comment
Share on other sites

  • 3 months later...
 Share

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.