Register | Login
Views: 19364387
Main | Memberlist | Active users | ACS | Commons | Calendar | Online users
Ranks | FAQ | Color Chart | Photo album | IRC Chat
11-02-05 12:59 PM
1 user currently in Rom Hacking: hukka | 2 guests
Acmlm's Board - I2 Archive - Rom Hacking - Mario 64 - Amazing Stuff | |
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33Add to favorites | "RSS" Feed | Next newer thread | Next older thread
User Post
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 191/200
EXP: 64158
For next: 3565

Since: 06-06-04
From: In the Moon!

Since last post: 5 days
Last activity: 2 hours
Posted on 10-19-05 11:02 AM Link | Quote
Originally posted by Santa Claus
Awesome. Now you just need to learn a real programming language.

Yeah I'm starting to learn D++, I just can't get enough of D++

Seriously, I have years of experience in programming, and I know I could learn other programming languages quickly, but learning C++ and OpenGL at the same time to do this would require me too much time to be able to build a Mario 64 editor. Even if I did learn those two, I would probably still use Director to prototype stuff, simply because it's much more easy on the brain, if just for the coding legibility, I find the use of { and } to be a bad typography choice, as those two looks the same when your eyes do a quick scan of a listing. For that and many other reasons I find It's much easier to test code parts with that kind of development environment, and then port the code to C++. You know it's like using C++ to prototype code that will latter be implemented in ASM, which I don't think is that rare even for experienced programmers.

That being said, I will look into some dev solutions that are not Windows specific, trying to gauge how hard it could be for me to port my editor. For now though, expect any future release of my editor to still not include built-in MIO0 decompressing or compressing.
HyperLamer
<||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people

Sesshomaru
Tamaranian

Level: 118

Posts: 7848/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 10-19-05 06:21 PM Link | Quote
Oh now really. There are plenty of reasons to complain about C's readability, but {} isn't one of them. You just need to not write messy code. Indent!
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 192/200
EXP: 64158
For next: 3565

Since: 06-06-04
From: In the Moon!

Since last post: 5 days
Last activity: 2 hours
Posted on 10-20-05 12:59 PM Link | Quote
Originally posted by Santa Claus
Oh now really. There are plenty of reasons to complain about C's readability, but {} isn't one of them. You just need to not write messy code. Indent!


I gave the example I had on the top of my head. I don't think that indentation totally solve the issue, as it doesn't remove the requirement to use { }. Those have more meaning than indentation, so you still have to take them into account when reading code. I guess it's nit-picking, if you take just this example, but as you said "There are plenty of reasons to complain about C's readability", and this is what I was implying in my post.

Anyhow, I said that I'm looking to start learning C++ more and probably OpenGL, so I don't want to "debate" about why one should choose C, I was stating the reason why I think some higher-level language can be good for prototyping code and interfaces, even when you know C++.

I'm reverse-engineering Super Mario 64 because I love doing it, I'll take the time I need to choose what solutions I have to get past the compression problem. In the mean time, I'll continue to evolve the Director/Shockwave version, and probably release a version "not intended for the general public".

But could we please move on? I guess I'm the one doing all the blabbering about that, but I don't think anything good can come out of having this discussion about C++ in this thread. I feel like I annoy many people when I talk about this, and I always look like the one who "over reacts" in situation like these.

The last thing I want in this context is stalling the evolution of Super Mario 64 hacking because of issues like that. I may or not ever release a fully featured editor supporting compression, like I said before, don't count on me, I'm providing a hacking tool. There is now enough info in this thread for someone to build a very useful Mario 64 level editor, so what are you waiting for people?

-Now back to our regular program-

In the ROM 21CCDC replace:
0C 00 00 00 80 2C B1 C0 0C 00 00 00 80 29 CA 58 0C 00 00 00 80 2C B2 64
with: 0C 00 00 00 80 29 CA 0C 00 00 00 80 29 CA 58 0C 00 00 00 80 29 CA 58

And you get super turbo charged Mario! He runs faster than Sonic! Some little glitches here and there but it's really fun! Mario runs faster, swims faster, and flies faster with this hack. But he also gains some mass, as he cannot jump as high Oh and yes I'm aware that some gameshark code can make Mario faster. This one can be made permanent on a ROM though, also there are other interesting Mario related things around there since it's the location of the Mario "behavior code" pointed by command 0x25 (see hacking doc).

I posted the other day something about replacing Mario with some characters and that some 0x22 commands where exceptionally used for individual Mario body parts. Well I was wrong, the 0x22 commands found at 02ABCE0 do point to the Mario data, but as whole animated objects, not body parts. Mario is only one of these objects, the first one at 02ABCE0:

22 08 00 [01] [17] [00 2D D4]

01 is the number assigned to Mario. The rest is the segment and offset where to find the Mario geometry layout. Segment 16 is containing many geometry layouts for shared objects like coins, doors trees etc. You can copy paste the last 4 bytes of the other 0x22 commands to replace the 17 00 2D D4 with something else and transform Mario into many other objects. Only copy from 0x22 commands that point to segment 16 or 17. Flat objects like coins and trees are only visible when Mario faces the camera.

In theory, it will be possible to load some other MIO0 file and then simply re-point the Mario 0x22 command.

Here are possible values for segment 16:

16000388 160003A8 1600043C 160004D0 160005F8 1600068C 16000720 160007B4 16000868 1600091C 160009D0 16000FE8 16001000 16001018 16001048

So at 2ABCE4, replace the 17002DD4 with any of these values to transform Mario into a pipe, a tree or a door amongst other weird things! (how impressive )

I'm trying to find ways to load other MIO0 files to use Yoshi or Mips for example. I don't promise anything, but it should be easier to change Mario into something else than expected.
BGNG

Snifit
Level: 22

Posts: 273/276
EXP: 56579
For next: 1771

Since: 06-03-05

Since last post: 8 days
Last activity: 3 hours
Posted on 10-20-05 11:08 PM Link | Quote
Our good buddies over at FreeBASIC have made a VERY handy and powerful BASIC compiler that goes for Windows, DOS and Linux. They've got NeHe's OpenGL tutorials all ported to BASIC so you would be able to use this to do your dirty work. It also has native support for such things as multithreading and inline Assembly.

Fancy thing about FreeBASIC is that the source code for it is in FreeBASIC. Now THAT'S what I call product effectiveness. (-:
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 193/200
EXP: 64158
For next: 3565

Since: 06-06-04
From: In the Moon!

Since last post: 5 days
Last activity: 2 hours
Posted on 10-21-05 09:46 AM Link | Quote
Originally posted by BGNG
Our good buddies over at FreeBASIC have made a VERY handy and powerful BASIC compiler that goes for Windows, DOS and Linux. They've got NeHe's OpenGL tutorials all ported to BASIC so you would be able to use this to do your dirty work. It also has native support for such things as multithreading and inline Assembly.

Fancy thing about FreeBASIC is that the source code for it is in FreeBASIC. Now THAT'S what I call product effectiveness. (-:


Ok, I guess I should have been clearer on what I meant by "not Windows specific". Yes I meant multi-platform, but I was under impression that it was a well known fact here that I'm not working on Windows or DOS, nor Linux, because of my rant in the Hardware/Software forum. But I guess that you didn't know. My native platform is ehm *cough* Mac OS X *cough*, I have friends who use Windows so I can test stuff there, and I can run DOS in an emulator (I could run Windows too ,albeit a little slowly, but I lost my Win 98 boot disk image).

Macromedia Director/Shockwave can produce programs for both platforms, so it didn't really matter until I realized that the disk I/O routines were too slow to move large chunks of data, and that my Shockwave MIO0 decompressor is too slow to be useable (though I guess it could be optimized). That's one of the reason I was not too keen to mention it before that point, because it didn't really matter and I didn't want to be labeled with pre-concieved ideas. OS X is a FreeBSD UNIX variant, and most Linux/UNIX programs can be recompiled without much change. I recently ported the YaZ0 decompressor with only one small change. By looking at it, I could probably port the MIO0 compressor and decompressor too. But anyway it doesn't matter much to you I guess.

All that to say that FreeBASIC looks like a good solution, and the fact the source is written in FreeBASIC is really neat, but it's not natively supported on my platform even though it would be probably easy for them to port it. I'll try to find another solution, and many exists, to support all three platforms. Don't bother looking for me if you don't feel like it, and I suspect you won't.

I assume that a somewhat large percentage of people on this board have negative views of Mac OS X. I can understand that, for anyone interested in video game ROM hacking, because while OS X has zero viruses, it also has just about zero ROM hacking programs, aside from a few emulators, IPS patchers, hex editors, UNIX ports, a GBA devkit and my own level editors.

The Windows hacking tools and editors can be run in emulation (Virtual PC), and next year when I buy an intel equipped Mac, it will emulate them at 80%-90% of the native speed using the Mac port of WINE. But anyway for people doing ROM hacking on Windows (probably all of you ) the Mac is simply not a viable platform for them and I don't see how I could argue otherwise. Still, this is the platform I chose and like, and I happen to like to hack ROMs and reverse engineer them with tools I build myself, I don't mind the limitations and lack of tools, I learned to appreciate the challenge of it. But what should I do? Should I stop contributing to this thread because I don't use the best and latest tools to reverse-engineer Super Mario 64? Should I put a warning in my sig? If so, I guess it's another sign that the ROM hacking community is in a sad state...

So, now you know. Sorry for the off-topicness, though it's relevant in a way. Don't worry I don't have anything to add.

Ok, I'll add just a little useless "fun" fact. Try to guess what the president of Nintendo Satoru Iwata uses as a personal computer, see the answer in the link: http://pages.infinit.net/voxel/IwataTGS2005.jpg
HyperLamer
<||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people

Sesshomaru
Tamaranian

Level: 118

Posts: 7904/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 10-21-05 06:20 PM Link | Quote
It'd be funny for Nintendo to use a Microsoft OS, now wouldn't it?
BGNG

Snifit
Level: 22

Posts: 274/276
EXP: 56579
For next: 1771

Since: 06-03-05

Since last post: 8 days
Last activity: 3 hours
Posted on 10-21-05 11:28 PM Link | Quote
The #1 solution for cross-platform for years has been Java. Contrary to popular belief, Java code actually is fast, as the virtual machines are geared towards the processors of the machines they run on. While those .class files are compiled to a special, processor-less "byte code," Sun structured that byte code in such a way that practically any processor out there could run it well.

One of the more popular tools in the ROM hacking scene, Tile Molester, is programmed in Java and works like a charm.

One of the plusses to Java is that the programs can be run either from the shell or embedded in a web page. It supports 3D graphics (I think OpenGL) and does a good job with file I/O. The chaps over at Equinox have been making demos for Java for quite a while, and some of their stuff is downright impressive.

Definitely look into that one if you're looking for something versatile. Java takes some getting used to, but it's very flexible.
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 194/200
EXP: 64158
For next: 3565

Since: 06-06-04
From: In the Moon!

Since last post: 5 days
Last activity: 2 hours
Posted on 10-22-05 07:52 AM Link | Quote
Originally posted by BGNG
The #1 solution for cross-platform for years has been Java. Contrary to popular belief, Java code actually is fast, as the virtual machines are geared towards the processors of the machines they run on. While those .class files are compiled to a special, processor-less "byte code," Sun structured that byte code in such a way that practically any processor out there could run it well.

One of the more popular tools in the ROM hacking scene, Tile Molester, is programmed in Java and works like a charm.

One of the plusses to Java is that the programs can be run either from the shell or embedded in a web page. It supports 3D graphics (I think OpenGL) and does a good job with file I/O. The chaps over at Equinox have been making demos for Java for quite a while, and some of their stuff is downright impressive.

Definitely look into that one if you're looking for something versatile. Java takes some getting used to, but it's very flexible.


Yeah actually Tile Molester is one of the few ROM hacking tool that can run "natively" on the Mac OS, thanks Snowbro! (Yeah I like to thank him, he started it all! )

I had Java in mind before, but got under the impression that it was not very good at 3d graphics. You seem to say that it's not the case, and I believe you, but I'm pretty sure that Java cannot drive OpenGL inside a web browser without downloading something extra. Anyway I don't mind, it's not a requirement for me that it works online, even if I did publish online demos of editors in the past, like the StarFox editor, which was not exactly "good" since it had to contain part of the ROM data.

There was one version of Director in the past that supported "exporting" to Java directly, but it only made sense for small programs, and many things wouldn't be translatable. Some helper would tell you which lines to change, but for anything big it became too complicated. The feature was latter dropped. The current version of Director does supports Java syntax for scripting, which will probably help me make the transition, even if I currently mostly use the Director/Lingo syntax which is not so far from Java anyway.

So Java it will be I keep getting recommendations for AJAX, so I guess I'll give it a try. I don't know why I got so inclined to go to C++, maybe because I needed raw power. But Java is also on the list of languages I want to learn, and I kinda forgot how fast it was for disk I/O.

Santa Claus: I have a picture of Miyamoto San himself having a Mac at his desk, but it's an old photo so it doesn't mean he still use them (though I would personally assume so). Nintendo does use Windows for part of their development. Intelligent Systems http://intsys.co.jp which is a spin-off of Nintendo's R&D1 (or are they R&D1?), is responsible for such games as Metroid Fusion, the (Advanced) Wars series, Fire Emblem, Panel de Pon (Tetris attack) and others, is also producing some of the Nintendo development tools for the n64, GB(A), DS and Gamecube. If you look on their page you can find that many of these tools also exists for the Mac OS, which implies that at least Intelligent Systems uses some Macs to make Nintendo games.

I know it's a drop in the ocean of Windows using developers, but I just wanted to dispel the myth that only dumb people buy and use Macs. Many people that you admire use them, and not necessarily just because they look "cool".

But let's move on, I'm starting to learn Java, which is by definition cross-platform, and I expect to learn it pretty quickly considering my years of experience at programming in a not so different language. So I guess I'll try to port my Super Mario 64 editor to Java piece by piece (first the level decoding routine, then the 3d part).
tachyon

Octorok
Level: 7

Posts: 17/23
EXP: 1089
For next: 359

Since: 07-28-05

Since last post: 5 days
Last activity: 10 hours
Posted on 10-23-05 07:22 AM Link | Quote
sorry to ask for another utility, but where can I get n64unc? I googled it and checked the dextrose site, but got nothing.
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 197/200
EXP: 64158
For next: 3565

Since: 06-06-04
From: In the Moon!

Since last post: 5 days
Last activity: 2 hours
Posted on 10-23-05 07:47 AM Link | Quote
Originally posted by tachyon
sorry to ask for another utility, but where can I get n64unc? I googled it and checked the dextrose site, but got nothing.


Don't be sorry, it's hard to find

There you go, here is the address:
http://www.dextrose.com/index.php?s=3&m=8&f=270#f270
BGNG

Snifit
Level: 22

Posts: 275/276
EXP: 56579
For next: 1771

Since: 06-03-05

Since last post: 8 days
Last activity: 3 hours
Posted on 10-23-05 09:23 AM Link | Quote
I've not experiemented with 3D in Java firsthand, but I will mention (for future reference) that there is an official Java 3D API by Sun that looks to be quite the graphical powerhouse and is suitable for animation. The development kit for it appears to be an extension of the JDK, but it's apparent that the graphics it produces are self-contained and necessarily independant from any specific hardware configurations.
tachyon

Octorok
Level: 7

Posts: 18/23
EXP: 1089
For next: 359

Since: 07-28-05

Since last post: 5 days
Last activity: 10 hours
Posted on 10-23-05 07:29 PM Link | Quote
thanks! but if n64unc only extracts objects, does that mean I can use only it and be able to decompress everything in the game so I can edit it?

EDIT: right, downloaded it anyway. then it put a bunch of files in my downloads and I couldn't be bothered to find out why, so I tried VL-tone's decompressor again. it says the file isn't a mio0 file. it's a sm64 ROM, will that work? does it need to be a certain byte order?


(edited by tachyon on 10-23-05 01:27 PM)
stag019

Snifit
Level: 23

Posts: 299/299
EXP: 62259
For next: 5464

Since: 06-10-05
From: C:\Documents and Settings\stag019\Desktop

Since last post: 9 days
Last activity: 7 hours
Posted on 10-24-05 02:17 AM Link | Quote
Originally posted by tachyon
does it need to be a certain byte order?
Yeah, it needs to be ABCD.
I use this Byteswapper.
tachyon

Octorok
Level: 7

Posts: 19/23
EXP: 1089
For next: 359

Since: 07-28-05

Since last post: 5 days
Last activity: 10 hours
Posted on 10-24-05 04:13 AM Link | Quote
that's the order it's in. does it have to have a .mio0 ending or something?
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 198/200
EXP: 64158
For next: 3565

Since: 06-06-04
From: In the Moon!

Since last post: 5 days
Last activity: 2 hours
Posted on 10-24-05 12:42 PM Link | Quote
Originally posted by tachyon
that's the order it's in. does it have to have a .mio0 ending or something?


I used .Z64 when I used the program (in DOS), or maybe it was .n64? Anyway it's the ROM you have to open, the program will search for MIO0 files inside the ROM for you and extract all of them in one sweep.

BGNG: That Java 3d API looks really neat, I'll look more into that...

I did some work on my editor lately, I'm currenting experimenting a new interface layout. Please don't mind the gaps in the interface, they'll be filled by future features, and I'm currently shifting things around.

Just to be sure it's clear enough, this is not a release, it's a peek into what I'm experimenting with the editor.



(Dang this time I used photobucket!)

If you click "Load Level" you will be presented with a list of every level in the game and its sub areas that you can click to load a particular level area. For now there are a few areas that won't load.

The white text list in the upper left corner is to select what kind of objects you want to edit in the game. If you select Objects (0x24), the editor will behave much like the old version, but with some new things like the list of object you find just below the edit mode list (small green text).

By clicking on lines on this list you can select an object to be edited with the interface at the bottom. The same applies to the other edit modes. The 0x39 objects, which I call "Macro Objects" because they can spawn multiple objects, like 3 Goombas at the same time for example, or coin formations, are called by a single 0x39 object found in an area, which reads a list found in the main level MIO0 file. They are represented for now in the 3d view as blue diamonds, and the 0x24 objects are still tri-color cubes. When in Macro Object editing mode, a different kind of list is presented with a description based on the list of objects made earlier in this thread. I'm also implementing an editor for the music values for each area (easy), and warp values (not so easy).

Many other types of object editors could be added to the list, for 0x22 commands or 0x18 commands for example. Maybe I could put an "expert mode" where those would appear.

I have other kind of features in mind, like camera position bookmarking, where you can save camera positions to go back later. I added a feature where the camera will automatically position itself to have a good view near an object that you select.

Ok that's it for now, I gotta sleep sometimes , and I work more early tomorrow.
tachyon

Octorok
Level: 7

Posts: 20/23
EXP: 1089
For next: 359

Since: 07-28-05

Since last post: 5 days
Last activity: 10 hours
Posted on 10-24-05 05:34 PM Link | Quote
nope, I tried it in all three byte orders, it turns up 6 (file was not valid mio0 data). maybe I should use n64unc. why does it put a bunch of files named as hex addresses in my downloads and not change the rom? or maybe it did and I didn't notice. a decompressed rom won't run on an emulator, will it?
HyperLamer
<||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people

Sesshomaru
Tamaranian

Level: 118

Posts: 7979/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 10-24-05 06:09 PM Link | Quote
......

It's not supposed to change the ROM. It's supposed to put a bunch of files named as hex addresses in the folder with it. Those are the decompressed MIO0 files.
tachyon

Octorok
Level: 7

Posts: 21/23
EXP: 1089
For next: 359

Since: 07-28-05

Since last post: 5 days
Last activity: 10 hours
Posted on 10-24-05 08:49 PM Link | Quote
then what do I use to open them, a hex editor? and how do I recompress it?
HyperLamer
<||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people

Sesshomaru
Tamaranian

Level: 118

Posts: 7990/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 10-25-05 01:33 AM Link | Quote
You could open them in a hex editor, sure. Depends what you want to do. As for re-compression, the only semi-working tool I know of is mine, which is near the beginning of the thread; you need to do a bit of hex-editing with the output before you can stick it back into the ROM, but it should do the trick.
tachyon

Octorok
Level: 7

Posts: 22/23
EXP: 1089
For next: 359

Since: 07-28-05

Since last post: 5 days
Last activity: 10 hours
Posted on 10-25-05 06:40 AM Link | Quote
okay, thanks. I think I'm ready to start hacking now.
EDIT: ok, I ran into a problem. I changed a byte in one of the decompressed objects and recompressed it, and when I tried to run the ROM on pj64, it said it was not a valid rom. so far so good, I assumed I had simply changed a vital byte and corrupted the rom. but when I changed it back and recompressed the file back in, it gave the same error. this fixes when I delete the rom and start from the backup rom. I assume it's some problem with compression, and has to do with your quote "you need to do a bit of hex-editing with the output before you can stick it back into the ROM". what kind of editing is necessary?


(edited by tachyon on 10-25-05 10:40 PM)
(edited by tachyon on 10-25-05 10:43 PM)
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33Add to favorites | "RSS" Feed | Next newer thread | Next older thread
Acmlm's Board - I2 Archive - Rom Hacking - Mario 64 - Amazing Stuff | |


ABII


AcmlmBoard vl.ol (11-01-05)
© 2000-2005 Acmlm, Emuz, et al



Page rendered in 2.548 seconds.