(Link to AcmlmWiki) Offline: thank ||bass
Register | Login
Views: 13,040,846
Main | Memberlist | Active users | Calendar | Chat | Online users
Ranks | FAQ | ACS | Stats | Color Chart | Search | Photo album
06-16-24 09:36 PM
0 users currently in General Emulation.
Acmlm's Board - I3 Archive - General Emulation - Hacking Project 64 ! New poll | |
Add to favorites | Next newer thread | Next older thread
User Post
eNathan
Newcomer


 





Since: 02-22-06
From: Earth

Last post: 6555 days
Last view: 6555 days
Posted on 02-22-06 04:38 AM Link | Quote
Well, for those who dont remember my breif existance here a couple months ago, I am eNathan; I am attempting to write a multiplayer mod for Paper Mario.

In any event, the emulator on which the MP mod would be played is going to be Project 64. But I don't fully understand how the emulator works . . and if I dont understand that, how I can reverse engineer it =\ 'Nuf said..

Where exactly does PJ64 store the ROM data? Does it load it straight into memory from the file, and access it thorugh that? If so, then explain this..

There is a point in the game where mario encouters a sign that says "To regain your health, eat a mushroom!" or something . . So I Hiew'd it, and found that the address which this string of text starts at is 01C5A240. However, when I opened up Artmoney (a memory searching utility), and searched for the string "regain", no results showed up, as if the ROM data is not even in PJ64's memory.

And it doesnt, of course, read from the file everytime it needs to grab data from it (tested that lame theory).

Any insight or an explination for this would be great =D
Raccoon Sam

Boomerang Brother
Custom Title








Since: 11-20-05
From: Correct

Last post: 6328 days
Last view: 6327 days
Posted on 02-22-06 03:42 PM Link | Quote
Note that the lower case letters are a=a, b=b etc..
But the higher case letters are 4=A, 7=B, if I remember correctly.
And Retriever II has made a shitload of documentation about Paper Mario. Google his name.
eNathan
Newcomer


 





Since: 02-22-06
From: Earth

Last post: 6555 days
Last view: 6555 days
Posted on 02-23-06 01:27 AM Link | Quote
Well, I googled his name extensively, and could not find any Paper Mario documentation by Retriever II I would greatly appriaciate if you could link me, as any documentation of Paper Mario would greatly help me.

One more thing . . I don't understand what you mean by 4=A, 7=B.

If I can find the address in memory for the text "To regain your health, eat a mushroom!", I think I can find the Create() procedure for enimies of Mario. Let me explain how I would go about doing this:

There is point in the begining of the game where Mario comes across a sign that says "To regain your health, eat a mushroom!." After Mario is done reading the sign, guess what? A GOOMBA ENEMY POPS OUT ! So, I can set a break-point in my memory searching software to see what code accesses this string of text; Somewhere in that code, it will soon call the procedure to create the goomba. Nice plan eh? If I can find this, I can create enimies at will. This is the first step.

Thanks in advanved; When I do figure this out, and can dynamiclly create enimies, I'll post an update and start a website for the development of the MP mod
Cellar Dweller +

Red Koopa









Since: 11-18-05
From: Arkansas

Last post: 6337 days
Last view: 6328 days
Posted on 02-23-06 03:34 AM Link | Quote
Many N64 emulators that run on x86 compatible processors will internally store the N64 ROM and RAM in DCBA order. This is an optimization to speed up emulation of big endian reads and writes on a little endian system. For example, "regain" might be ordered as "ageroy n", "ger nia"(two spaces), "re oniag", or "r oTiageoy n" in the emulator's memory depending on the alignment of the text with four byte boundries. Note how letters from "To" and "your" can get mixed in with "regain".

There is no easy way to find out where the N64 ROM and RAM are located without source code. If you have the source code, for example, you can modify the emulator to display the base pointers to the N64 memory at runtime, or even add an integrated memory viewer. Source code for recent versions of PJ64 is not available. Source code for 1964 is available, but can't be compiled as-is with any free compiler, because no standard makefile is included, only a VS project file.

The best emulator for hacking ROMs seems to be Mupen 64 because it is open source and can be readily compiled with free tools. I have found it to be very useful to add debugging stuff to the CPU core. Some of the stuff I posted in the SM64 thread was found with help from modifications to Mupen 64.
HyperHacker

Star Mario
Finally being paid to code in VB! If only I still enjoyed that. <_<
Wii #7182 6487 4198 1828


 





Since: 11-18-05
From: Canada, w00t!
My computer's specs, if anyone gives a damn.
STOP TRUNCATING THIS >8^(

Last post: 6328 days
Last view: 6328 days
Posted on 02-24-06 02:21 AM Link | Quote
Wouldn't it be easier to just hack the ROM than to try to do it through some external memory viewer? Nemu has some nice debugging tools you could use.

Also, text in RPGs is generally displayed using some sort of script system. Going about your method, you'd probably find the code for the 'display text' script command. Then you'd want to backtrack to find out where the script itself is, see what command spawns the Goomba, and trace that. (And while you're at it, I bet a lot of people would love to know whatever details you can find about the script system.)
eNathan
Newcomer


 





Since: 02-22-06
From: Earth

Last post: 6555 days
Last view: 6555 days
Posted on 02-28-06 02:29 AM Link | Quote
yea, Nemu would be a good choice -- I dont know why I didnt want to use it from the begining. When I played Paper Mario with Nemu, the quality seemed just as bad (err) as Project 64; Same screen flikering, etc. But Nemu stopped working for some reason -- even after I re-install it. But I'm sure I can fix that somehow.

There is one more question I have, however.

Nemu 64 byte-swappes, meaning that it stores everything in reverse order every 4 bytes (or something along those lines). But in the debugger, when I searched for the text "to regain your energy", I did find a result. Does Nemu64 automaticlly de-swap the bytes for you or something? =\

By the way, thanks for all the help -- I will report on the progress I make when I make it.
Add to favorites | Next newer thread | Next older thread
Acmlm's Board - I3 Archive - General Emulation - Hacking Project 64 ! |


ABII

Acmlmboard 1.92.999, 9/17/2006
©2000-2006 Acmlm, Emuz, Blades, Xkeeper

Page rendered in 0.028 seconds; used 376.86 kB (max 454.53 kB)