Romhacking.net

Romhacking => Personal Projects => Topic started by: luigi1er on April 05, 2014, 10:02:19 pm

Title: Paper Mario 64 - General Hacking Tool
Post by: luigi1er on April 05, 2014, 10:02:19 pm
Hi everyone. I want to show you a WIP of my tool to hack Paper Mario 64. Before you read the suite, I want to say I'm a french speaker, so forgive me for my mistakes. I began to seek many valuable data on the EUR version and I found some interesting things : enemies stats, chest content, item price and also the loaded area from a loading zone. Although I just focus on the stats, it would be easy and fun to find the other things. I made it with Qt and it works to change HP and defense, the others things doesn't depend of the file game.

(http://s26.postimg.org/uprnl4v95/paper_master.png)

I am probably going to search the data in the USA version since it would be more convenient for the community, but I just wanted to say that I'm in the process to create a tool for change many things in this game  :D
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: Lenophis on April 06, 2014, 12:26:19 am
Without being a total creeper, the only thing I can say is I love you. :o Love Paper Mario.
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: Raccoon Sam on April 07, 2014, 02:22:39 am
Retriever II has done a lot of work regarding Paper Mario and its sequels.. years ago. For some reason he never made a big fuss about it, but his documents (and a some kind of viewer?) are in his personal server.
Here's (http://hocuspocus.taloncrossing.com/rii/pm1docs.txt) a useful text doc, and all of his stuff is here (http://hocuspocus.taloncrossing.com/rii/). Everything with a pm-prefix is Paper Mario related.
I don't know how to contact him these days, but if you get a hold of him, he might have some previously unknown valuable PM data.

Either way, looks nice!!
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: katage on April 07, 2014, 04:44:58 pm
Retriever's work appears to focus on viewing image files, not on editing stats. Being able to edit stats is a big innovation. I've looked at Retriever's files and it's not clear to me they enable hacking; only viewing.
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: luigi1er on April 11, 2014, 09:26:27 pm
Hello guys! Sorry for the delay, but I began my stage a bit after, it seems I posted my news at the wrong time  :(.  Anyways I found HP data for the half of ennemies, I should share it when I will have finished, but if you want it althought I can post it  :).  It was fast because I already mess the game and I knew its operation and the data distance between PAL and US are pretty similar so it's easy to do the same things in the US version. It's also crashless in PJ64 (there was 4 spots of crash issues on PAL), so I could take the middle boss Magikoopa data in the Prologue  :thumbsup:. Also thank you for the post, it could be useful because the text chart is already done (althought I'm not ready to modify the texts in the game).

Find HP, DEF and ATT aren't a really big deal (except 1 HP ennemies), but a thing that I don't understand yet and you could enjoy to test is the attribued status of each attack. I find it by mistake, I think the attack's status is settled before the amount of damages. Example : Pokey Mummy has 2 attacks, hit by a bullet or with his head, each do 2 damages. Before both we have [02 80 28 03 00 00] [02] and [02 80 64 03 00 00] [02]. Both of them poison Mario and if you recall well, the poison with head has an accuracy of 100% so [64], the first one has [28] so it's 40%. It's fun to know, but we can do better by changing the status, I did it with Pokey Mummy and King Crystal and I was happy that it was so easy to do. The condition of the ice beam is [00 00 FE 42 00 00] [06], I exchange both data and we have these results.  8)

(http://s26.postimg.org/8ov8aevqx/poison_glace.jpg)          (http://s26.postimg.org/bhofufw3d/glace_poison.png)
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: luigi1er on April 20, 2014, 02:00:40 pm
- Small Update -

I made a main screen since I want modify items in the shops too. I didn't made a screen for them, but I will work on that for sure.

I was wrong about the time to find values for stats. I found out that there were many occurrences on some ennemies. Ex : Paragoomba is stored 3 times in the game : when you are with Goompa, when you are in Goomba Road later and when you are at East from Toad Town. That makes harder the collect of data so it will be a bit longer to find all of them.

I am also going to share my finds even if that's not much. My program's management is not optimal, but maybe soon I could finish my WIP and ask for feedback with will.
https://docs.google.com/file/d/0BzSek_0oxKC-b1c0bXlzMkVWOTg/edit?pli=1 (https://docs.google.com/file/d/0BzSek_0oxKC-b1c0bXlzMkVWOTg/edit?pli=1)

April 22, 2014, 05:59:18 pm - (Auto Merged - Double Posts are not allowed before 7 days.)
Good new guys, a Paper Mario 64 editing tool has releashed today under the name of Origami 64  :crazy:. With advanced data on his side, he has surely a better tool than mine. Since there is someone to handle the project to hack Paper Mario 64, I don't have any reasons to continue besides help to its conception.  8)

EDIT
Sorry for no updating correctly my topic because I cannot post until the next week. I hope people will rewatch this because there's a new, the rom used in the tool is bitswitched, so my data are 1 byte aside. I'm less disappointed and maybe I could post some finds in this game even if I won't do a tool anymore.

I will contribuate to this tool, but I don't see any reasons to continue my tool, that's just the point.

I don't think it's the right place for it but I would like to ask someone if I could change the name of the topic and if yes it must be for the current project or both. I always wanted to change the spaces from Mario Party game by clicking on the rounds over a displayed map on a screen. :) I hope I could start it even if mod don't allow to have nothing to show, we will see folks. ;)
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: luigi1er on May 04, 2014, 08:36:42 pm
Hi guys! Sorry for not replying but I was a little busy these times... Anyways, I just want to say I get all data from shops (including the badge shop) even if there's a problem with the last. In my document I defined 6 slots in each item shop (16 for the badge), each slot has 3 informations of 2 bytes : the object, the cost and the description (because they didn't change along with object). You just have to do +0x4 to see the next one. After +0x12, you get immediately the next slot.

It's the same with the badge shop, however the cost didn't work even if it would be obviously it. Example : Speedy Spin has a cost data of 50, but if I change it to 51 it doesn't change anything. Someone else should figure it out a way to resolve it because the game seems to manage it in a way I cannot understand.

Also, I begin to search the range of data of each area. There's nothing of interesting to say now, I will probably try to have many of them before I do some tests.

(http://s26.postimg.org/l2fiedtfd/shop_mess.jpg)
 
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: luigi1er on May 19, 2014, 05:21:25 pm
Hi guys  :D

I just found out something of very interesting (not what I wanted but whatever).
By testing area data range I discover that at the end there are many settings.
There, we can find exit destinations of area and guessing the ID of the area.

Example : Tutankoopa's Room ID is isk_16 and the exit destination is the room where there is a save block.
At the end of Tutankoopa's Room we find isk_19 which corresponds at the exit destination ID.

So... Tutankoopa's Room ID = isk_16
Save Block Room ID = isk_19
You can change the exit destination ID to change the Dry Dry Ruins Map.  8)

I tested what happened if I change the exit destination ID for the same and that done the result below.
When I get out by the left, I return in the room but by the right, it's why the camera looks like vey glitchy.
It seems like we cannot do everything and hope there're no issues.  :(

(http://s26.postimg.org/jo2bw12k9/Tutankoopa_s_Room_Reverted.jpg)

The last thing is the additionnal thing we can find along with the exit destination ID.
The game saves space by loading graphics and collisions from an older area when they repeat themselves many times.
I don't know how many times that happens, but I find it in Bowser's Castle with theses values.

kpa_112_shape...
kpa_112_hit.kpa_
113.kpa_115.....

With these stuffs, we can think the area ID is 114 and the area 112 is similar to it.
There are not really things to do with it as it's not convenient to load the shape and not the hit, but it can give some funny pictures.

(http://s26.postimg.org/4gmcboapl/Load_Hit_Stuff_1.jpg)     (http://s26.postimg.org/eryp4c2ex/Load_Hit_Stuff_2.jpg)
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: luigi1er on June 03, 2014, 06:17:23 pm
Hi guys, I am here to share my last finds about ID locations.  8)

By searching the IDs, I found a list where I could gather all abbreviations of areas.
Between [0x73E2C , 0x74BC9], we can find :
I don't know yet if I will do a list of all locations and post it. Probably I will just fill all locations in a document and provide a link toward it, because testing all side-effects of loading locations doesn't make me want to do it formally. :P When I will have finished it, I focus to find a save block data. :)
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: Rew on June 13, 2014, 10:12:02 pm
Very cool! I've seen those location IDs for The Thousand-Year Door and Super Paper Mario, but had no idea the N64 original had them too. I see lots of similarities as well.
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: luigi1er on June 20, 2014, 04:37:39 pm
Very cool! I've seen those location IDs for The Thousand-Year Door and Super Paper Mario, but had no idea the N64 original had them too. I see lots of similarities as well.

I didn't know there were the same stuffs in this game too, either someone works on it. I should ask you how you can do that because it takes me 30s to 1min every time to corrupt it (though it's not the right topic for that).  :-X

Anyways, I finally do my document and I will ask you what you think about it before I post it. Because so many areas are not specific, the labels can be confusing so I will wait awhile and make sure it's well done. If everyone agree with the content, I will do.

https://docs.google.com/file/d/0BzSek_0oxKC-N1gxOGJFWlNKbEk/edit (https://docs.google.com/file/d/0BzSek_0oxKC-N1gxOGJFWlNKbEk/edit)

Last thing, I kept my promise about the save block data, I even do the same thing for the heart block. I figured out how changing a save block into a heart block and vice-versa. So the data are :
I don't have many ideas on what I will work right now, maybe allies' stats, who knows?  :thumbsup:

(http://s26.postimg.org/i9l40c4ah/Save_Block_Manipulation.jpg)
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: Yoshimaster96 on June 25, 2014, 09:45:33 am
Do you have the hexadecimal area IDs for each of the areas? That would make it a lot easier to go to different areas, as all I'd need would be a cheat program (which I have). If you have them, could you please post them or PM me? I'd like to know.
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: luigi1er on June 26, 2014, 06:07:07 pm
Do you have the hexadecimal area IDs for each of the areas? That would make it a lot easier to go to different areas, as all I'd need would be a cheat program (which I have). If you have them, could you please post them or PM me? I'd like to know.

I did the same thing you're going to do, but I didn't list them because the cheat program I use (HxD) allow me to see data in ASCII and to swap the IDs with common letters without get bother with hexdecimals. I can overwrite "mac_00" by "tik_01" just by typing the second one normally. You can simply copy-paste an ID in my document over the one you want to change. So, I don't have them, but I would recommend you to do what I did, it's easier to manage. :)
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: luigi1er on July 05, 2014, 08:12:24 pm
Hi guys :D I bring my new find. I was looking for allies' stats, but I didn't find them, so I was searching the dizzy data because Kooper can do it. I wasn't able to find the Kooper's stats, but I figure out how status work (the most of them). :)

I find a data pattern for each attack of ennemies. All attacks have 12 bytes before the number of damages [80 27 CC B4 FF FF FF 81 FE 36 3C ##], but the first four can be used as well. At the end of the 12 bytes, do +16 and you find the number of damages. However, by attack I mean an attack which involves Mario (heal and power-up must have an other pattern and I didn't find it) :(

## can be 80, 8A or 8F (don't know why)  :-[

For the status effects, there are 4 bytes for each, they are 7 bytes behind the number of damages. The first two define the status, there is a list of all of them :
The remain has 2 functions : the first determines the number of turns you are affected and the second is the rate to be affected. However they are 3 different patterns for the first. This bytes is special because what it's important it's the second number and changing the other cancels the effect. Here is what that means :
You can edit a status effect and even add one where there was nothing and add damage points too. :o And Mario cannot be affected on a first strike.

So this is an example for all that stuffs. 8)

Dark Koopa Shell Toss = Mario fall asleep in 20% of cases and for 9 turns :laugh:
Before : 80 27 CC B4 FF FF FF 81 FE 36 3C 80 40 00 00 00 00 00 FF FF [00 00 00 00] 00 00 00 03
After :   80 27 CC B4 FF FF FF 81 FE 36 3C 80 40 00 00 00 00 00 FF FF [80 00 19 14] 00 00 00 03

(http://s26.postimg.org/lj60dkq0p/Status_Mess.jpg)
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: luigi1er on July 14, 2014, 07:58:42 pm
Hi guys, this time I'm providing a powerful thing that cannot be shown so easily. :o I'm talking about the music affectation. With a thorough work, I finally found where areas decide which music they will play and list them in a single room give me the feeling I was in a jukebox... Anyways, for this new I would say to go easy about what I will say, because there are exceptions and exceptions over exceptions. So let's go!

There are actually 3 patterns to find the byte that counts (but there are more) :
The first one is used mostly for all musics (place music, themes and events). The second one is used for the incoming fights, when a battle is about to start the byte is after this pattern. The third is really rare, it's used to change the music for a theme when you talk to a NPC, I only see that on flowers in Chapter 6. For each pattern, the byte is 8 bytes after the pattern. However, the second one is 4 bytes after.

Here is a list of all musics of the game.
https://docs.google.com/file/d/0BzSek_0oxKC-WlRJeE9JWkVoV0U/edit (https://docs.google.com/file/d/0BzSek_0oxKC-WlRJeE9JWkVoV0U/edit)

It's incomplete, but almost all is there. If you check it a little bit, you will notice there are "extras" on some of them, it's where things become difficult. :P Basically, one byte = one music, but sometimes there is a byte further which gives an other result.

Here are some examples :
The variation byte can change the music from the main byte. If you change that over a no-extra music, it causes either nothing or side effects. In more, it's different for the 17 which the variation byte is further.

With all my founds, I will try to record a short demo to make fun for people who wishes to make a hack for this game. :D To finish this new, I show you I'm able to modify data on Star Spirits' ability. Both of great finds were kind of tricky to find.

See ya later! :)

(http://s26.postimg.org/tgcl3az09/Skolar_Star_Storm.jpg)     (http://s26.postimg.org/4blkpvzjt/Misstar_Smooch.jpg)
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: bxbcore on July 20, 2014, 04:15:02 pm
Wow, your work so far has been amazing! I've been using Origami 64 to mess around with the rom a little bit. My hope is to create a rebalance/difficulty patch at some point. Unfortunately, I'm not too terrific at hex editing. So this is perfect! Thank you for your work on such an awesome game!
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: luigi1er on July 21, 2014, 10:16:35 pm
Thank you for your comment, I like sharing my knowledges for this game and giving tools for hackers. I'm currently hacking places though it's a RPG and it's not the best way to change the difficulty, but if it can contribute to your plans as well I'm satisfied.

So this is the new today, I make a short video where I changed some elements to make my finds a little bit consistent and for the entertainment. It can give an idea to people where the paper mario 64 hacking is going on.

http://youtu.be/8nJjtrQCME8 (http://youtu.be/8nJjtrQCME8)

I will probably continue to mess with places, my next challenge will be to figure out where is the setting for a room to be dark or not.
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: Rew on July 27, 2014, 12:03:36 am
Hi there, this is looking really great so far. I especially love your post about the music in this game, a couple posts up! I myself am in the process of compiling a full and comprehensive tracklist for the music in this game, so this is timely. We should compare notes! (If you have a USF set, I find it's easiest to take a track, then open up the .miniusf file in a hex editor and change the track number in there to test things out.)

One thing, though--I'm having trouble getting the "Oasis" track to play, which you indicate was at track 17 (then 43 in the extra bit). I tried that, but it only gives me the regular desert music. I've tried it with dozens of other values in that sparse area for #17, and they all play just the ordinary desert theme. I can't get "Oasis." Any tips?

Also, would you happen to know how to get the Toad Town variations to play, or is that something different altogether?

Thanks again!
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: luigi1er on July 27, 2014, 03:01:21 pm
I will try to clear up all music stuffs within this reply : "Oasis" is unfortunately like dark areas setting which I'm blocked. I figure out in the oasis area you can play the normal music by switching 43 to 24, but if you do the opposite the game will crash, and I assumed it would work in both ways. :-[ It's not the only exception though, I have problems with "Lava Piranha's Fight" and "Heart Pillar" is tricky too because I found it without pattern and it's surrounded by a lot of strange bytes. Yeah I said there were many exceptions... I cannot explain them yet.

For the Toad Town variations it will be very tough to know for some reasons. 1st - It seems they are not affiliated to any patterns, so it's like the "Heart Pillar". 2nd - It seems they aren't main musics, they are surely variations. Even if I suspect they are in the tight section of the area (at the beginning), I don't know what searching as values so it's like I would find them by chance. It's not like there's nothing else to find out, I'm always looking for battle musics that are loaded within battles like chp 1 and 5. 8)

Otherwise, what do you mean about USF? I don't use it, I use many XML files for areas, musics and etc... and do my tests with them, so I don't know if you're interesting about a USF-like or a real USF file or if it's just a tip, just PM me to make it clear. :)

I will just add I will soon add new stuffs about area loading process, it will be surely the hardest thing I would have found but redoing the game maps will be very possible. ;D
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: luigi1er on August 04, 2014, 02:01:03 pm
Hi guys, as promised I will provide infos about manipulating the destinations to change the maps of Paper Mario 64. So for this time I will give real adresses because I use more visual clues and because the patterns vary. The data are taken from "Windmill Area".

To begin, I will talk about "directions". The directions data (DD) are the scrypted moves of Mario when he enters or goes away from a loading zone. The DD are well written : each DD occupies a row and begins at the beginning. There are 4 params of 2 bytes separate by 2 [00] : X, Y, Z and Angle. The first 3 are the Mario's position in the new area and the angle is where Mario heads. This range is where they are : 0xbeec80-0xbeecbf. There are 4 : Windmill Door, East, West and Getting the card. Finally, they have an ID in number fairly recognizable : 00, 01, 02 and 03.

Notice, changing it is generally a bad idea, it messes up the process. The only example where it's interesting is when the exit is one way and doorless like when Mario falls from tornadoes.

And now I will talk about the manipulation of exits destination. For each exit, there's 2 bytes that have important functions... actually 3, but as the DD fit well with exits, they should remain with their exit. The first determines which destination will be loaded (ex: arn_08) and the second which exit Mario will go away in the new area. I will explain later how that can be interesting. Here is a table for all the matter :

AdressesDestinationsValuesExits
0xbef263kmr_231402
0xbef747arn_081c00
0xbef7a3arn_032400
0xbef7ffmim_122c01

The adresses are where the datas are. The destinations are where the exits lead. The values are the values at the adresses. There are kind of pointers which go to find destinations at the end of area data. They are ascending and fit with the order of this general pattern, in this case 4 leads toward kmr_23 and arn_03 and c toward arn_08 and mim_12 :

Code: [Select]
0123456789abcdef
€$.ükmr_23..arn_
08..arn_03..mim_
12..............

Finally, exits correpond at the exits ID in the new area. Ex: 02 at kmr_23 means you will have the Getting Card cutscene with Skolar because he is the third Star Spirit. They are always 4 bytes after the adresses over there.

Now I will just give some examples of what you can do with all this news. Like you can see, destinations are written once, but in Forever Forest many ways can lead you at the beginning. It means multiple ways lead at one mim_01 at a specific exit where you can easily go out of the forest. So you can change it to make all exits correct or just one. In more, if you have an area which have 2 exits that lead toward a same area, you can make them pointing on two different areas.
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: luigi1er on August 19, 2014, 11:47:32 pm
Hi guys, there are some things I would like to say in this new. To begin, I would like to thank Rew for his work to make a full tracklist on Paper Mario 64, I invite everyone to look over at http://www.hcs64.com/mboard/forum.php?showthread=37772 (http://www.hcs64.com/mboard/forum.php?showthread=37772) to see the results. So, I just want to say because I will come back to school I will have to slow down my researches for a long time. :P Here are the last things I have found on the game, others things aren't enough accurate to talk about them.

I managed to get all interactive objects we can find in any areas along with save blocks and health blocks :
https://drive.google.com/file/d/0BzSek_0oxKC-TFFLUkJQbjBoLWs/edit?usp=sharing (https://drive.google.com/file/d/0BzSek_0oxKC-TFFLUkJQbjBoLWs/edit?usp=sharing)

It's not quite new because I already did a demo with the health blocks, but this time there're very many more objects to mess with. My next trial will be to understand the process of some of them because they just don't have only positions as paramaters, otherwise I would be able to switch a blue pipe into a tornado easily. I did some tests and that brings out some interesting things :
Anyways I will continue to bring discoveries around theses objects. See ya folks :)

(http://s26.postimg.org/jyuxp03w9/Blue_Pipes.jpg)     (http://s26.postimg.org/axgebe5yx/Moved_Lock.jpg)
   
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: luigi1er on September 13, 2014, 05:09:51 pm
Hi guys :D, today I will announce an info about blue pipes and a new thing of possibilities.

To begin, I can say I'm able to fix the problems with moving a blue pipe. Did you remember my article about DD (direction data), it's the same thing execepted the measures are shifted. Example : if your blue pipe's X is [00 96] and DD's X is [43 16], making 96 to b6 makes 16 to 36. I also found where the blue pipe chooses its exit and its DD, but it's useless unless you want to create your own.

Otherwise, maybe I will begin the hack of sprites in areas, though it's very VERY difficult. :P All my knowledge is very basic, but it's already very good. On the next picture you can see what is a typical pattern of sprite in an area. Notice, sprites data are scattered throughout the area data, so it's impossible to get them very efficiently... What you see in black is a function which has 2 functions : the first byte is a id, "02" means it's the 3rd one in the row. The other is the two lasts bytes. I have theories but nothing of consistent. In red it's the position in XYZ, they are like blue pipe position setting. Finally, the hardest is the blue section where we have a bank of animations sticked together. "83" is the "spritesheet" used for the sprite. Example : 7f = Crystal King, 83 = Toad and 76 = General Guy. The byte after "83" is for variants like Ninjakoopas and Toad (colors). Others things are unknown, but in general only the first ones matter probably because there are always less animations than 16. Notice, if you can find the blue section in the right array, then you can easily find any others patterns. :)

(http://s26.postimg.org/c1vhhizi1/Pattern_des_sprites.gif)

Beside that, I tried to change an ennemy for an other, but it will be very difficult because data are not dynamic. So, if you want to change a pokey for a bandit, you will have to fix his : skin, hitbox, animations, behaviors, etc... I tried to show you what you can do with the next picture. Like you can see, I moved some toads in X and Y (he walks in air). I didn't mention it, you can see General Guy because I changed the "spritesheet" byte, but changing the "spritesheet" byte leads to a crash in 99% of cases. :o So that's all folks, it's an important source of search. I will continue slowly but surely. ;)

(http://s26.postimg.org/v5oaqyiwp/Sprites_Mess.jpg)
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: luigi1er on September 24, 2014, 08:13:34 am
Hi guys :D Today I will tell you all results about my researches about sprites in areas. This is a bit better than the last time because I can do many more things. So here we go :).

I will explain my stuffs with the code's image in the last post. A sprite's pattern has always 16 series of 4 bytes. I will pick up a serie and explain each byte because there is a utility for each one. The 1st [83] is the id of the "spritesheet", it's connected with the 2nd [00] which is a variant index of the "spritesheet". The two bytes decide which sprite will be shown. In this case, [83] is a normal Toad in Toad Town and [00] next to it decides he is red. With the second you can, generaly, change the color of the sprites like : Ninjakoopas, Shy Guys, Clubbas, etc... The 3rd [01] determines which animation will be played, [01] is generaly an idle animation. The 4th [00] separates two series. In function of which animation the sprite will play, it will load the approppriate serie.

When you enter into a area (or get out from a battle) the sprite will load its spritesheet once and from a specific serie. If you enter into an area (or run away) the sprite will load the #1 serie to play the idle animation. Afterward if the sprite chases you, it loads the #4 but don't refresh its spritesheet, but it DOES for the variant byte. You should just replace all of firsts 2 bytes if you want to deal easily with it. 8)

So, do we need all theses 16 series? The answer is I'm not sure, but I'm pretty sure there are similitaries for some of them. I do a list with all functions of them from 1 to 16 :

#1 : Idle & Run Away
#2 : Walk
#4 : Chase
#7 : Death*
#8 : Hit
#9 : Before Attack
#10: Attack
#11: After Attack

Death is only used to load the variant and the animation.

There can be more functions, I would need to do more tests. Notice, they are for ennemies, that involves exceptions. :P For NPC, there are functions to load animations which aren't in the patterns. Example : if you want to talk to a NPC, a function above the pattern will load an animation. In some cases, one function can load animations for many sprites.

Now, I will talk about the big issue you can have with messing with sprites. According to me, the game has a limit about the number of spritesheets it can load. More you load spritesheets, more it leads to a crash. Worse than that, some of spritesheets (especialy the bosses) are heavier than normal ennemies. That's means if you can load maybe 5 SS you can barely load 2 bosses (which explains why I was just able to load General Guy). However, the number of sprites which have a heavy SS doesn't matters and to have many variants with the same SS doesn't count as loadings.

I would add all that stuffs can be use to search data linked to animations in area's data and ennemy's data. That's all for now, there is a image of what it looks like if you're lucky, because of that limitation. See you next time :D.

(http://s26.postimg.org/focsaixbt/General_Heart.jpg)
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: luigi1er on October 09, 2014, 08:59:19 am
Hi guys :D, since I got a PM encouraging me to continue my hacking tool, I get back to work and bring today a new about it.

I added a shops' feature where you can change the item, the price and the description which is independant. This works for all 9 shops in the game. However, for the description I will ask to testers to give me feedback because changing descriptions is a little bit tricky. :P

Description for items in shops needs 3 bytes. The 1st one is for the type of text you want : 24 is shop's descriptions, 26 is the label of objects, these 2 include badges as well. The 2 others are to specify the text itself. [0000] is Fire Flower and [002a] is Fright Jar. The problem is when you change the description for a item which is not normally in a shop, the text is either "no data" or "nothing". However, if you change the 1st byte to 23, it's the same excepted the text is there for all items. I cannot tell if it's a really big matter if I decide on purpose to change 24 to 23, but without that users couldn't choose items from recipes because of the descriptions issues.

I will probably wait some time before posting a pre-released version because I feel my software's structure is really bad and I want to continue to optimize it. Also, if shops' data were easy to gather, my ennemies' data are very fragmentary and I didn't work on it since the time I posted the first screenshot of it on this topic.

So that's all, I hope my changes won't take so long, see ya folks. ;)

(http://s26.postimg.org/3vun4kda1/Tool_0.png)
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: luigi1er on October 26, 2014, 12:02:30 am
Hi guys :D, today I can post a WIP of my tool to get feedback from you. Of course, my tool isn't finished yet because I don't have all enemies' stats so it can't be used for an accurate hack. Also, it will allow me to know if there are bugs.

I should precise a thing (though I can talk about it in a Readme.txt), but attacks that can make Mario frozen have a glitchy rate. Example : if you can mess with rate of poison and the number of turns Mario is sick, modifying rate of freezing make the number of turns you're affected always at 3, nonetheless what is the turn byte's value. For this reason, I lock this feature when the status equals "Frozen", if it's a bad idea I would like to know. :)

So there is the link, unfortunately I have some issues with Ultra Bowser and Kent C. Koopa. Ultra Bowser's attacks status are in an arbitrary-like place unlike normal attacks, exception call. :P For Kent C. Koopa (it's not limited to him), attacks that make Mario's ally stunt isn't a status but an attack as well, so I don't know if I will add an attack for Mario and the ally or add an extra counter for this attack... :-\

I will have to adjust my tool again (changing the name maybe?), but I hope that you will enjoy that tool. If you have an idea to improve it or to report something you can PM me or posting, it would be great than my tool get better and be able to be reused anywhere else. 8)

https://drive.google.com/file/d/0BzSek_0oxKC-Q1g2RXlzckIzcDg/view?usp=sharing (https://drive.google.com/file/d/0BzSek_0oxKC-Q1g2RXlzckIzcDg/view?usp=sharing)
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: Iamdehf on October 26, 2014, 03:18:27 am
Seems like i stumbled upon this at just the right time. The shop feature seems fairly fleshed out. Your only missing some of the more obscure/cooked items and everything worked. As for the stat modifier (albeit limited), the only problem I ran into was when I tried to change Tutankoopa's Defense to 1 and then saved the rom causing the program to crash. I think it still changed the value as when I brought it back up, it showed 1. I'm not quite sure why that happened but it didn't crash when I reverted the value back to 0. Anywho, good work so far. Combining this program with Origami 0.1 and an additional double damage mod, I'll be able to have quite a unique run through of the game already. Looking forward to the rest of the monsters and potentially changing partner damage values, item effects, badge bp costs, & star powers. I'm also hoping that the level cap can be changed or removed (if that is even possible). :thumbsup:

Edit: So after viewing the files directly and noticing how easy it is to modify them, I was able to go ahead and add in the rest of the missing items for the shops
         as you already gave all of the values in a seperate file. I also tried to just throw badge ID's in to see if that was possible but sadly it was not.
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: henke37 on October 27, 2014, 08:49:46 am
How about the actual script? The one that contains the dialog and such. It's sure to have tons of fun control codes.
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: CrashingThunder on November 04, 2014, 12:29:15 am
You've inspired me to get into hacking Paper Mario. After a little messing around and referencing this thread, I was able to find the offsets for several locations and alter the exit locations. (I could do stuff like making the exit from Toad Town Plaza go to the inside of the whale  :happy:). You said the exit locations are located at the end of the data for the level, so I used that info and searched backwards for the "music key" (the 05802D5D4C value for regular background music) and also found the hex offsets for the levels.

My question is: is there any demand for these offsets? One could find them using information in this thread, but it's fairly time consuming. Is there an existing list of offsets for these levels (and their attributes like exit destinations and music tracks) that already exists? If not, I would happily continue to generate these lists of offsets so making tools would be a little easier for you people who have a better idea of what you're doing. After 15 minutes or so (things started slowly too) I came up with this:

Code: [Select]
   Toad Town Plaza
      822F30 : Exits
      80913B : Music
   Pleasant Path 1st Zone
      9FA720 : Exits
      9F6A03 : Music
   Pleasant Path 2nd Zone
      A00250 : Exits
      9FC943 : Music

This shows the offsets of the exit locations for that level, as well as where the music track is located. I'd gladly continue to generate this information if people wanted it!  ;)

More questions:

I was trying to understand the shops. Your tool already does it all, but I'm trying to make sense of the item descriptions. If this stuff is true (which it is):

Code: [Select]
Item Slot Format: AA 00 00 00 BB 00 CC 00 DD 00 00 00
   AA = Item ID
   BB = Item Price
   CC = 24 --> dont know why yet
   DD = Item Description (See ID_tag table)
   
ID_TAG TABLE

DD : ITEM NAME (ITEM ID)

00 : Fire Flower (80)
01 : Snowman Doll  (81)
02 : Thunder Rage (82)
03 : Thunder Bolt (84)
04 : Shooting Star (83)
05 : Dusty Hammer (86)
06 : Pebble  (85)
07 : Stone Cap (88)
08 : Volt Shroom (8B)
09 : Mushroom (8A)
0A : Super Shroom (8C)

Why is the order all screwy? Looking at the ID Column, it starts off with 80, 81, 82...but then jumps to 84, then back to 83. I'm trying to make sense of why these jump around instead of going up in a linear fashion. I did it to 0A to see if I could find a pattern but I can't see one yet.
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: luigi1er on November 05, 2014, 09:02:48 am
In fact, the item slot format is more like : 00 00 00 8F 00 00 00 0A 00 24 00 26

And there is their function :
8F = Item ID (Sleepy Sheep)
0A = Item Cost (10)
24 = Text Group (Descriptions)
26 = Item Description

IDs and costs have 4 bytes (that would explain the holes between them). Also, IDs aren't increased from left to right. Example : Fire Flower is 0080 and not 8000. You're right, IDs and descriptions don't follow themselves correctly, but it's not like it's necessary to understand why. I fill up my list with these differences, it doesn't matter more than that.

I didn't talk about text groups for the moment because it's a very big subject. For any texts in the game you have to set a group and pick up a text. Here is a list of some groups :

23 = Objects Description
24 = Normal Objects Description
25 = Objects Description
26 = Items Name
28 = Allies Attacks Description
2B = Allies Attacks Titles
1D = Texts (a huge general group)

So it can explain what does "24".

My question is: is there any demand for these offsets? One could find them using information in this thread, but it's fairly time consuming. Is there an existing list of offsets for these levels (and their attributes like exit destinations and music tracks) that already exists?

For the music there is already someone who gathered all musics IDs, check in past posts. Also, I already have a big list of exits so it's likely I have what you got. But if you want to help, you can use these both files to make easier the collect of data. Don't hesitate if you have others questions.

https://drive.google.com/file/d/0BzSek_0oxKC-cWNfejZfMXVBUFU/view?usp=sharing (https://drive.google.com/file/d/0BzSek_0oxKC-cWNfejZfMXVBUFU/view?usp=sharing) for Areas Data
https://drive.google.com/file/d/0BzSek_0oxKC-N1gxOGJFWlNKbEk/view?usp=sharing (https://drive.google.com/file/d/0BzSek_0oxKC-N1gxOGJFWlNKbEk/view?usp=sharing) for Areas ID
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: CrashingThunder on November 05, 2014, 10:25:32 am
Thanks for the files, especially the information about where the data resides for each area. It seems like you've basically got the whole ROM already mapped out for the most part (at least in general), which is fantastic.

Anyways, I'll be continuing my efforts to find something that hasn't been found yet. I remember searching the internet a couple of years ago, wanting to find something exactly like this and Origami64, but ended up disappointed. It looks like the Paper Mario nut is about to be cracked  ;D

EDIT: I think I actually found something nobody else has, or at least not documented anywhere I've seen. The Little Oinks! Their data range is [0x841000, 0x841077] and have a similar format to items in shops that I have yet to figure out. Each Lil' Oink has a 4-byte Item ID (like shops), and two other 4-byte pieces of information that are  [00 00 00 01] and [00 00 00 64] for every single of the 10 piggies. I'm going to mess with these values later to see what they mean, but I tested my theory by setting the IDs for each piggie to be cake mix [00 00 00 AA] and that was exactly what they dropped  :laugh:

Code: [Select]
LITTLE OINKS
   Offset : 00 00 00 AA 00 00 00 BB 00 00 00 CC ITEM NAME
      AA = Item ID
      BB = 01 (why?)
      CC = 64 (why?)
   
   841000 : 00 00 00 8D 00 00 00 01 00 00 00 64 DRIED SHROOM
   84100C : 00 00 00 8C 00 00 00 01 00 00 00 64 SUPER SHROOM
   841018 : 00 00 00 80 00 00 00 01 00 00 00 64 FIRE FLOWER
   841024 : 00 00 00 82 00 00 00 01 00 00 00 64 THUNDER RAGE
   841030 : 00 00 00 95 00 00 00 01 00 00 00 64 LIFE SHROOM
   84103C : 00 00 00 A3 00 00 00 01 00 00 00 64 MAPLE SYRUP
   841048 : 00 00 00 83 00 00 00 01 00 00 00 64 SHOOTING STAR
   841054 : 00 00 00 97 00 00 00 01 00 00 00 64 REPEL JEL
   841060 : 00 00 00 A2 00 00 00 01 00 00 00 64 JAMMIN JELLY
   84106C : 00 00 00 8E 00 00 00 01 00 00 00 64 ULTRA SHROOM

Title: Re: Paper Mario 64 - General Hacking Tool
Post by: luigi1er on November 11, 2014, 10:17:57 am
Hi guys :D, I bring today a new of my research. However, it's not what we can call a discovery because there are no ways to test it. So, it's more like a question I'm asking to advanced hackers than a new thing. To begin, I was looking for the number of bars you need to use a Star Spirit attack and as I get exhausted I decided to do somehing else than looking randomly adresses. With text groups, I know titles and descriptions data of : items, badges, allies, places, Spirit Stars. I supposed there are data alongside them, ex : Fire Flower (title = 00260000) would be near 03 because it does 3. As I began, I found interesting things at around 0x60000.

Around there, there are maybe a full database. Here are a few examples :
Code: [Select]
0025 is the objects description
0026 is the titles group

Looking for items values

Fire Flower (0x63CE0-63CFF)
(00 26 00 00) 01 20 00 00 00 00 80  02  00 04 00 00
(00 25 00 00) 00 23 00 00 10 06 00 (03) 00 00 00 00

Shooting Star (0x63D40-63D5F)
(00 26 00 04) 01 24 00 00 00 00 80  02  00 0F 00 00
(00 25 00 04) 00 23 00 04 10 06 00 (06) 00 00 00 00


001D is a general group
Respectively the title's attack and its description

Looking for number of needed stars bars

Smooch (0x6AE10-6AE23)
(00 1D 00 19) 00 00 00 08 (00 1D 00 25) 00 00 00 00 0A (03 03) FF

Time Out (0x6AE24-6AE37)
(00 1D 00 1A) 00 00 80 02 (00 1D 00 26) 00 00 00 00 0A (02 02) FF


002B is the allies attacks titles group
0028 is the allies descriptions group

Looking for FP values

Power Bomb (0x6AFDC-6AFEF)
(00 2B 00 0A) 00 00 80 04 (00 28 00 1E)(00 28 00 25) 0B (06) 00 03

Mega Bomb (0x6AFF0-6B003)
(00 2B 00 0B) 00 00 80 02 (00 28 00 1F)(00 28 00 26) 0B (08) 00 03

So, as you can see it would be logical to conclude there is a bunch of useful adresses there, but there's a problem. No matter what I modify (even a 00 in the middle of nowhere) it says I'm in a loop and the emulator can't fix it. :huh: It's always like it around sub 0x200000. So I would like to know if it's normal and if these values can be useful or not. Otherwise, I would get back on my search, but it will have soon reached the state of testing each byte. :banghead:
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: Zoinkity on November 11, 2014, 11:56:25 am
That sort of thing would be easier to work out using an in-memory debugger, but if you want to go the ROM route...

N64 ROMs have an internal checksum on data from 0x1000 to 0x101000 kept in the header at 0x10.  The checksum scheme should correspond to the type of CIC chip the cartridge uses.  Paper Mario (USA) used a CIC-6103, first found in Diddy Kong Racing.  there's a few options when recalculating them:
Code: [Select]
def calccrc(rom, cic='6102', fix=False):
    """Recalculates the CRC based on the CIC chip version given.
    Set fix to True to revise the crc in rom."""
    def rol(v, n):
        return (v % 0x100000000)>>n

    cic_names = {
        "6101":0x3F, "starf":0x3F,
        "7102":0x3F, "lylat":0x3F,
        "6102":0x3F, "7101":0x3F, "mario":0x3F,
        "6103":0x78, "7103":0x78, "diddy":0x78,
        "6105":0x91, "7105":0x91, "zelda":0x91,
        "6106":0x85, "7106":0x85, "yoshi":0x85,
        }

    from array import array
    s = cic_names.get(cic)
    if s in (0x78, 0x85):
        seed = 0x6C078965 * s
    else:
        seed = 0x5D588B65 * s
    seed+= 1
    seed&=0xFFFFFFFF
    r1, r2, r3, r4, r5, r6 = seed, seed, seed, seed, seed, seed

    # Unbyteswap if swapped.
    if rom[1]==128:
      a = array("H", rom)
      a.byteswap()
      rom = a.tobytes()

    # I wish there was a less horrifying way to do this...
    l = min(0x101000, len(rom))
    m = array("L", rom[0x1000:l] + bytes(0x101000 - l))
    m.byteswap()
    # Zelda updates the second word a different way...
    if s == 0x91:
        from itertools import cycle
        n = array("L", rom[0x750:0x850])
        n.byteswap()
        n = cycle(n)
    # Read each word as an integer.
    for i in m:
        v = (r1+i) & 0xFFFFFFFF
        if v < r1: r2+=1
        v = i & 0x1F
        a = (i<<v) | (rol(i, 0x20-v))
        r1+=i
        r3^=i
        r4+=a
        # You have to limit the result here to 32bits.
        r1&= 0xFFFFFFFF
        r4&= 0xFFFFFFFF
        if r5 < i:
            r5^= (r1^i)
        else:
            r5^=a
        if s == 0x91:
            r6+= (i ^ next(n))
        else:
            r6+= (i ^ r4)
        # Ditto here.
        r5&= 0xFFFFFFFF
        r6&= 0xFFFFFFFF
    # Assemble upper and lower CRCs
    if s == 0x85:
        r1*=r2
        r4*=r5
    else:
        r1^=r2
        r4^=r5
    if s in (0x78, 0x85):
        r1+=r3
        r4+=r6
    else:
        r1^=r3
        r4^=r6
    # Make sure they fit within 4 bytes each.
    r1&= 0xFFFFFFFF
    r4&= 0xFFFFFFFF
    if fix:
        if isinstance(rom, bytes):
            rom = bytearray(rom)
        rom[16:20] = r1.to_bytes(4, 'big')
        rom[20:24] = r4.to_bytes(4, 'big')
        return rom
    return (r1,r4)

Using it would be something like:
Code: [Select]
with open(filename, 'rb') as f:
  rom = f.read()
with open(output, 'wb') as f:
  f.write(calccrc(rom, "diddy", True))


Since there seems to be some confusion on how this is done, here's a little script to unbyteswap a ROM. 
Code: [Select]
def unbyteswap(rom):
    from array import array
    if rom[0]==128:
      return rom
    a = array("H", rom)
    a.byteswap()
    return a.tobytes()
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: luigi1er on November 20, 2014, 09:40:20 pm
Hello guys :D I bring today an update of my data. You could overwrite the old XML file to see the new enemies. This is still incomplete but it's decently more filled than what it was before.

https://drive.google.com/file/d/0BzSek_0oxKC-Y3BZYlFSdC1LQzA/view?usp=sharing (https://drive.google.com/file/d/0BzSek_0oxKC-Y3BZYlFSdC1LQzA/view?usp=sharing)

Just a little word about your answer Zoinkity, I'm not sure if it confirms or not my theory and I'm not familiar with pointers and instructions of that kind of thing. Also, I prefer editing the rom directly otherwise my founds would sound meaningless to me. Free to everyone to investigate on it :)

I will take this opportunity to clear some things about the defense, because there're a few people that are complaining about the fact there are wrong data while it's not the case. The first thing is obviously to take this sort of rom : Paper Mario (U) [!].z64, taking anything else is subject to lead to a crash. After, defense stats are really annoying since there can be 3 defenses for an enemy. It only happened on Koopas, I think, but changing a defense value can change one type of attack. So I may be wrong, but it can be for an other reason.

- Mario's Jump (with some partners attacks)
- Mario's Hammer
- Partner Attacks (verified with Parakarry's 2nd attack)

EDIT : Seems like I can modify Mario's Jump at some places by just 1 and I don't manage to check it everywhere, it's how defenses value hunting is :'( (at least for the 00 ones)

Unfortunately, some enemies couldn't join the list soon because they have different troublesome data. The different defenses are an example, but there's also the fact that a few attacks don't have the pattern I use to locate them, even none. The problem is attacks status aren't at the same distance of attacks than normal ones, which cause a crash. As I'm more focusing on collecting data than my tool it will take a moment before I add Jr. Troopa 1 and Ultra Bowser.

Last thing, enemies attacks on partners are alike to attacks on Mario (damages amount = stun turns). Changing status effects doesn't seem to change anything, so it's included as well.
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: CrashingThunder on December 06, 2014, 06:30:58 pm
How goes the progress on hacking this game? I've come along a fair ways, but I'm still getting used to the process. I'm sure many people know about this tool, but I stumbled upon a program called Cheat Engine that allows you to actively search for specific values (such as Mario's health), and then make subsequent searches on all of the results that turned up, allowing you to narrow down which one is right (ex: Mario's HP is currently 7, you search for 7 in Cheat Engine. Then you eat a Mushroom and Mario's HP is 10. You search again in Cheat Engine for 10, and the results get narrowed down even further). And once I find the location in RAM (not ROM, so you wouldn't find this in the .n64 ROM file), I can set a breakpoint there to view code that is being run when that location is accessed. Then, I find code that was running when the breakpoint was triggered and it can lead me to where the game is looking for specific values, such as the price of an item in a shop.

I also use Nemu64 for the in-game debugger, allowing me to view ASM code that is being run, and to set breakpoints when certain parts of memory are written or read from. Using these things, I was able to change a SUBI command (subtract immediate value) to an ADDI (add immediate value) so that when I bought a particular item from the store, it gave me money instead of taking it away  :laugh:

Anyways, I recommend using those programs if you (or anybody else reading this) aren't already using them or something similar.

Edit : Did the same thing with attacking a particular enemy lol (attacking with Mario gives them HP). But I don't think what I'm doing is changing the game itself -- just modifying the RAM that is being used by the emulator. I am totally speculating, but I believe I need to find the code that writes to the RAM. The code that loads the enemy stats (which you've found) and puts them in the temporary memory when you're in a battle.
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: luigi1er on December 17, 2014, 02:07:34 pm
Hi guys :D, today I bring some new things. There is the new version of enemies file that contains more enemies in Chp 2, Chp 6 and here and there.

https://drive.google.com/file/d/0BzSek_0oxKC-Y3BZYlFSdC1LQzA/view?usp=sharing (https://drive.google.com/file/d/0BzSek_0oxKC-Y3BZYlFSdC1LQzA/view?usp=sharing)

I have also found the stats for the luck to make running out enemies with fright jars and succeeding to use Up & Away. I tried to frighten Kent C. Koopa and even if it said nice he didn't run out. Looks like if the enemy doesn't have the animation with this item, it stays. :'( I'm not planning to integrate it soon, but it could be something to considerate to integrate in a tool. :)

(http://s26.postimg.org/km0br9agp/Frightening_Kent_C_Koopa.jpg)

I also tried to edit the level cap, but I didn't succeed. According to me, there are five stats for that : HP cap, FP cap, BP cap, level cap in a battle stage and in the overworld. The last two may be confusing. The first is when you are at 26 and you pass over 99 star points in a battle, the counter stops to 0. If you increase that stat, the counter doesn't stop at 0 if you have more, but there is an overworld level cap which reinitializes the counter when you actually level up to 27 (meanwhile the upgrade blocks appear or if you change manually your level in MSH anywhere). I just have the 4th, the 5th would be cool to catch.
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: luigi1er on January 04, 2015, 08:33:47 pm
Hi guys :D, today I complete my post about stats of chance with the fear and Up & Away and etc... For this, I will use this picture to explain what is generally enemies pattern, this is a regular goomba in Goomba's Village.

(http://s26.postimg.org/8a6nyqpx5/Enemies_pattern.png)

1st colors group :

In an enemy's data, you're supossed to find that. At the beginning, you can find the blue pattern to know where is the yellow one (before it). Because the 9 "d" can be "." you can use the orange pattern, vertically 09 04 0B 0A 1F, to know where is the first "d". Brown adresses are chances of enemies to be afected by status, "shock" means when enemies are paralyzed. I learned status are shared by attacks and items. Ex : Mamar's Lullaby's rate is the same than the sheep item one, Dizzy Dial is the same than Dizzy Toss from Kooper. The black adress is the defense adress. It's not always true, but, generally, it's two units above the orange pattern. Otherwise it's a bit above.

2nd colors group :

Thanks to Scelux, I learned that star points are aside of HP. The name is litteraly the enemy name's id. Nothing to say about green adresses besides they seem to be always +0x20 after the HP's adress.

I think it's all I can say about the attribution of stats. There's unfortunately exceptions to that too. It seems modifying values in the yellow pattern doesn't change anything for the 6th Jr. Troopa. I don't think I will implement it sooner, I'm considering it's more important than I continue to search and complete my database. So, see you next time :)
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: TopOfAllWorlds on January 15, 2015, 04:04:10 pm
I can't wait to see more  come from this, paper mario is my favorite game and I would love to make a paper Luigi (as Nintendo should have totally done by now)
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: 90s Retro Gamer on January 15, 2015, 05:32:33 pm
Paper Mario was the first time I bought a game on the first day it came out with my own money that I saved. I think it was back in March 2001? I was a little boy then.

Anyway it was a fun game. I fell out of games as a teenager so I never had a Gamecube to play Thousand Year Door, but I will always cherish the memories I had playing PM64 in 5th grade. PM was different from other RPG's like SMRPG (SNES). A lot of it was very "tactical" (which badge to wear, which ally to have, using a star power or not), I credit that from being developed by Intelligent Systems (who did the Wars games).
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: luigi1er on February 09, 2015, 02:02:48 pm
Hi guys :D, I know it's been a long time since I post my last post so I bring some news even if it's not something of big. To begin, I did some researches to change the areas' skybox, but I'm 100% sure now it's not inside the data block where is the music value. Also, I didn't succeed to find where are the level cap adresses, I just found the first one at 0x18cdab (if someone want to play with it) which only serves to get all star points even if you level up at the final level.

For the stats, I have done 60% of the collect. It's a bit annoying to do the rest (especially with the colored magikoopas) because enemies are in many spots. Furthermore, because some enemies have : no attacks, irregular attacks pattern, many defenses and many hp (colored magikoopas :() I will have to tweak a lot my program once I'll be done with the collect.

There is the point, hopefully it doesn't take too long. I will let my file since I progressed although. See you next time 8)

https://drive.google.com/open?id=0BzSek_0oxKC-Y3BZYlFSdC1LQzA&authuser=0 (https://drive.google.com/open?id=0BzSek_0oxKC-Y3BZYlFSdC1LQzA&authuser=0)
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: Iamdehf on March 02, 2015, 08:32:47 pm
Nice work so far. The ability to alter enemy stats and add status effects have already made the game more interesting for me. Widespread Status effects really bolster the A-block's usefulness as well as the feeling fine badge. A one turn dizzy/sleep effectively acts a non infinite one turn stun that forfeits your attack for the next turn and long poisons make drawn out battles more difficult. Although I'm in no rush, once this project has been fleshed out, I'll be able to distribute my settings to some of my friends for quite a challenge.  ;)
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: luigi1er on March 23, 2015, 03:33:57 pm
Hi guys :D, today I bring along with me a nearly completed version of my tool. I fixed many things like : many defenses management, many hp, irregular attacks effects and the missing items... I still miss a few data of Bowser and Jr. Troopa 1, but everything is pretty done. Also, I locked some inputs when there are no data related to them to avoid issues.

https://drive.google.com/file/d/0BzSek_0oxKC-UkRMT3dIaVVCRUE/view?usp=sharing (https://drive.google.com/file/d/0BzSek_0oxKC-UkRMT3dIaVVCRUE/view?usp=sharing)

With the recent news around PM64, I think I will stop upgrading my tool as many others will be able to do much more than what I can offer. Although, I will finish my list of enemies soon and after I will publish it like a tool I guess. See you next time 8)
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: luigi1er on April 30, 2015, 09:23:13 pm
Hi guys :D, I'm back with a new version of my tool. I added all or almost all enemies and their attacks with the status. I also added all badges shops with the unused badges, but as they have no descriptions it's still a little glitchy if you choose to take them in shops. Also, I verified what happens when you have two same badges in the menu : when you activate one, the other is also actived, so duplicating HP Plus or something like that is useless :(.

The assignment of descriptions is complementary, so I hope it doesn't trigger any bug when you will try it out. I want to make remember people that I don't know how to modify the cost of badges in Toad Town, that's why there is no slots for that. Now, my enemies module seems less big than this one, but they have much stuffs both. :laugh:

(http://s26.postimg.org/5c25wwla1/Hack_Rod_v_1_0.png)

That's it. I'm not sure what I will do now. I don't think I will upgrade my tool soon (for major things in any case). If you find a bug which is untientional, you can write so I would be able to fix it. I will take a break and see if other hackers can bring other interesting things that I wouldn't know on the game. On that, good day :thumbsup:

Link : https://drive.google.com/file/d/0BzSek_0oxKC-dmVITUNCZy1ybFk/view?usp=sharing (https://drive.google.com/file/d/0BzSek_0oxKC-dmVITUNCZy1ybFk/view?usp=sharing)

EDIT : An item is mislabed in charts.xml and can main to a crash. To avoid it, just rename "Honey SYrup" by "Honey Syrup".
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: Grimoire LD on May 01, 2015, 12:39:23 am
Hmm, aren't the badges in Toad Town event based? As in its not a normal shop as memory serves me right. I imagine if you did a specific search for their prices though you may find something related to it.

Though it looks like you've done an Amazing job with this editor thus far, while my computer isn't very friendly to USB controllers so I can't really play N64 games on this machine, I am very appreciative of work such as yours.
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: Andrew171717 on May 09, 2015, 12:54:59 am
Awesome work Luigi1er! :thumbsup:
I've added your work to my doc file.
I'm trying to keep an archive of all the Paper Mario 64 Hacking Projects.

Here's a link if anyone wants to check out where we are in terms of creating Paper Mario Hacks.  8)
https://docs.google.com/document/d/19claOHWCbQ7XMJUaLOWIfom9OW-059Xkjr-hxPAZt5I/edit?usp=sharing (https://docs.google.com/document/d/19claOHWCbQ7XMJUaLOWIfom9OW-059Xkjr-hxPAZt5I/edit?usp=sharing)
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: BlackNebulX on May 13, 2015, 09:20:49 pm
I like what you've done so far! Is there any way to figure out/modify what items enemies drop after a battle (and the rates of those items dropped), or how many turns an enemy is afflicted with a status ailment (Stop, Sleep, Shock, Dizzy, Shrink)? Just asking.
Title: .
Post by: Chpexo on May 14, 2015, 12:28:02 am
.
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: luigi1er on May 18, 2015, 11:05:24 am
I like what you've done so far! Is there any way to figure out/modify what items enemies drop after a battle (and the rates of those items dropped), or how many turns an enemy is afflicted with a status ailment (Stop, Sleep, Shock, Dizzy, Shrink)? Just asking.

Thanks. I have never tried to see if we can modify enemies' drop after a battle and the rates either. The best way to do it would be to look for items' values nearby the enemy's formation or their code in areas data. As for turns caused by items, I'm pretty sure it's linked to their own data and not to enemies', so I'm not sure where you can do it because I think they are really far away each other.

Always nice to see some tools being made. Some advice I would give you would be to add a way to toggle what address the data is being read at, in case someone wants to move around the data in the game. I would suggest storing the addresses in an external file if you haven't already. Other than that you are doing a great job and keep up the good work!

Thanks. I let my adresses in an external file as you have mentioned, except they can be used to replace about twenty adresses in the same time, so your idea to make adresses visible somehow isn't a bad idea since I assumed people could figure out where the values go by refering to the files to locate them.
Title: Re: Paper Mario 64 - General Hacking Tool
Post by: Andrew171717 on July 24, 2015, 11:11:25 pm
Hey Luigi1er and anyone else who stumbles onto this thread,

Your work is greatly appreciated Luigi1er, a lot of us over at the Origami 64 forum are super excited about what you've discovered.
I have personally added your information to my new Paper Mario 64 Archive (https://7b3c406b560d2ed1e3befc9dc06a9750ed619752.googledrive.com/host/0B4x0kZTlDyBjfkliUzVlZmoyd0tTUUFRdDl3MF9UN3ViSjF2Z282NXhfTUVwMWlidl9BTWc/index.html).

Anyone who wishes to have further conversations about Paper Mario 64 Hacking please come over to the Origami 64 forum to talk about it. The forum has a completely dedicated Paper Mario Hacking section :o, so come check it out.
http://origami64.net/forumdisplay.php?fid=5 (http://origami64.net/forumdisplay.php?fid=5)

Thank you again Luigi1er and I hope to see you do great things in the future.