Register | Login | |||||
Main
| Memberlist
| Active users
| Calendar
| Chat
| Online users Ranks | FAQ | ACS | Stats | Color Chart | Search | Photo album |
| |
Acmlm's Board - I3 Archive - - Posts by Guy Perfect |
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
User | Post | ||
Guy Perfect Since: 11-18-05 Last post: 6291 days Last view: 6290 days |
| ||
Production Checklist
(Level Editor Production at MFO) Legend: [ ] Uncompleted task [\] Task in progress [×] Completed task Programming archetecture: [×] Redesign 3D programming interface [×] Create Bézier Spline Loop program module [×] Create MIO0 decoder [×] Create spline manipulation routine [×] Redesign IEEE754 codec [×] Implement spline stuff in 3D [×] Create ROM course decoder [ ] Redesign course file format and create codec [×] Conform CRC64 code into project [×] Create course geometry spline generator [ ] Create relative camera transformation module [ ] Create pixel projection routine [×] Create texture loader [×] Generate display lists [ ] Hard code widgets and decorations [ ] Create windowed interface [ ] Create menus and property windows N64DD stuff: [ ] Save up to purchase the N64DD and FZXEK [ ] Trial for built-in limitations [ ] Record undocumented music and video Ghost Info: [\] Investigate Staff Ghost storage format [\] Investigate Project64 save data user ghost Machine Info: [ ] Analyze Original Machine codes by fzeroman [ ] Attempt to implement Original Machines into ROM Other tasks: [×] Look into the ROM again for pointers [×] Hack horizon rotation algorithm [ ] Create PNG codec for program textures [ ] Run through a vigorous testing cycle [ ] Document findings [ ] Obtain a copyright [ ] Release the program I saw Blue Falkon’s post in the ‘‘we’ll kill you if you ask for an editor’’ thread, and I thought I’d just make a li’l announcement: I’m giving the project another go. I’ve done some thorough research of the things I need to do and I’m starting the program over from scratch (while keeping all the data I found about the ROM, of course). Progress will be slow as I will make sure everything is absolutely as it needs to be for every future iteration of production. The MFO equivalent of this thread is here: Level Editor - Take 2 EDIT: There are a few things that someone could help with in terms of for-real ROM Hacking (not just the rudimentary programming spiel), but that information will be let out later. For now, just hang tight whilst I put together the editor software architecture. (edited by BGNG on 12-09-05 09:41 PM) (edited by BGNG on 12-10-05 09:07 PM) (edited by BGNG on 12-13-05 11:55 PM) (edited by BGNG on 12-14-05 07:47 PM) (edited by BGNG on 12-14-05 09:44 PM) (edited by BGNG on 12-16-05 03:38 PM) (edited by BGNG on 12-16-05 08:50 PM) (edited by BGNG on 12-17-05 05:39 PM) (edited by BGNG on 12-18-05 01:22 PM) (edited by BGNG on 12-18-05 08:55 PM) (edited by BGNG on 12-21-05 04:52 PM) (edited by BGNG on 12-23-05 03:48 PM) (edited by BGNG on 01-07-06 10:12 PM) |
|||
Guy Perfect Since: 11-18-05 Last post: 6291 days Last view: 6290 days |
| ||
If you need any help at all with OpenGL, just call your local BGNG. (edited by Guy Perfect on 10-01-06 10:59 PM) (edited by Guy Perfect on 10-01-06 11:01 PM) |
|||
Guy Perfect Since: 11-18-05 Last post: 6291 days Last view: 6290 days |
| ||
Just as I did over in the MFO thread, I've put up a tentative checklist of things that need to be done in order to create the editor. As I progress, I will fill in the checklist.
If you have any questions about any of the listed tasks, just post them here. Also, be sure to refer to the MFO version of this thread as well. I'll be posting details on what I accomplish there, but not here. The Acmlm ROM Hacking forum will not be able to archive the information thusly. EDIT: Worthy of mention is that Heian-794 (who was active in this forum somewhat before the archive was put up) is selling his N64DD and F-Zero X Expansion Kit... to me. He's agreed to wait until I save up enough money to purchase it from him, so I'm counting on its aquisition as part of this project. (edited by BGNG on 12-09-05 09:47 PM) |
|||
Guy Perfect Since: 11-18-05 Last post: 6291 days Last view: 6290 days |
| ||
Hey, that "Product Activation" thing is an awesome idea. You know why? Because that means software developers are able to exert control over how their technologies are used.
Brilliant! Together, Kawa, you and I will further my dream of removing the Public Domain once and for all! BWAHAHA! Then the only thing left will be corporately-controlled commerce! The public won't have any say in the matter! BWAHAHA again! You, Kyoufu Kawa, are one of the most delightfully evil people I've ever met. Well done. Once they find out you're manipulating them with illegal activities in the first place, it will already be too late. Excellent scheme you've come up with. |
|||
Guy Perfect Since: 11-18-05 Last post: 6291 days Last view: 6290 days |
| ||
I'm one of those open-source junkies, so I have a natural predisposition to disliking the manipulation of fair use.
Though I do warn you: The Nintendo GBA and everything in it (particularly the music engine coded into the system's BIOS) is protected under U.S. and international copyright laws. Of them, Title 17, Chapter 13, Section 1309 states the following two regulations:
While ROM hacking in itself is not illegal, it does fit the description of an infringing article defined in subsection (e) by being a design copied from another design protected under the copyright law. Releasing hacks and utilities to the public domain is not illegal. However, requiring a registration falls under the category of "for use in trade" as documented in subsection (a). Since, as mentioned before, the utility qualifies as an infringing article, and since, as just mentioned, the registration counts as use in trade, releasing the utility under both conditions constitues a legal copyright infringement. As such, the Entertainment Software Association has been given executive authority in hundreds of countries around the world to enforce criminal prosecution in regards to international copyright laws (which is why the U.S. law I posted here is a threat). If you include this registration feature, Kawa, you're exposing yourself to potential criminal prosecution to the fullest extent of the law... any law that's applicable in international copyrights. |
|||
Guy Perfect Since: 11-18-05 Last post: 6291 days Last view: 6290 days |
| ||
Here's an old pic from back in May. It's technically part of the same project.
|
|||
Guy Perfect Since: 11-18-05 Last post: 6291 days Last view: 6290 days |
| ||
12/10/2005 20:00 CST:
IEEE-754 codec completed. 12/13/2005 22:40 CST: Spline manipulation routine completed. Check out the link for this one. It's neato. 12/14/2005 18:25 CST: Splines implemented in 3D 12/14/2005 20:40 CST: Horizon rotation algorithm hacked You remember a while back when the horizon rotation stumped me? Turns out that 2-byte rotation value was actually part of a 4-byte IEEE-754 Single. Now we know. |
|||
Guy Perfect Since: 11-18-05 Last post: 6291 days Last view: 6290 days |
| ||
I appreciate your suggestion, but I'm a stickler for desiring utmost control over my programs. Only as a last resort will I consult to use someone else's code in one of my programs that wasn't designed specifically for that program by said someone else. I have references to the PNG specification (namely RFC 2083), so I shouldn't have to resort to others' code.
An update! I've ammended two sections to the checklist up above: Ghost Info When hacking the ROM data way back in June '04, I stumbled across the Staff Ghost data in the ROM. What I fool I was, for I considered it inconsenquential and ignored where it was. So I'll have to look it up again. Regardless, with proper support for Staff Ghosts in the level editor, it shouldn't be a huge deal to take a Project64 save file and extract the user ghost from it (which can be set after a race in Time Attack) and use that as any original course's Staff Ghost when patched to the ROM. Machine Info Ever since fzerman hacked the Original Machine data in the retail game with a GameShark, I've considered looking up the data and seeing if the codes could be reverse-implemented into the ROM... Meaning: The editor project may end up being able to supply custom machines as well as courses. Keep your fingers crossed and hope for the best. 12/16/2005 19:35 CST ROM Course Loader complete. Here ya go, since people like pictures: |
|||
Guy Perfect Since: 11-18-05 Last post: 6291 days Last view: 6290 days |
| ||
12/17/2005 16:32 CST
Course Geometry Spline Generator completed. |
|||
Guy Perfect Since: 11-18-05 Last post: 6291 days Last view: 6290 days |
| ||
This thing runs at reasonable speed as-is on an old 500MHz testing computer I built out of pieces from year 2000. I don't think you'll have any troubles getting this to run well. | |||
Guy Perfect Since: 11-18-05 Last post: 6291 days Last view: 6290 days |
| ||
Since games and 3D apps are typically very light on processing power, I went for the ease of Microsoft Visual Basic on this one. None of that .NET crap. .NET sucks. But VB, while it's considered child's play by the idiots who don't know anything about it, actually makes fairly effective EXEs when compiled.
However, unless I get some kinda copyright that is NOT the hiddeous condemned to the umpteenth power GNU GPL, I won't be releasing the source code. Take a look at the checklist. "Obtain a copyright" is in it for just such a purpose. In either case, "Document findings" is also in the checklist. So even if the source code doesn't make it out to the public domain, everyone will know how I did it. |
|||
Guy Perfect Since: 11-18-05 Last post: 6291 days Last view: 6290 days |
| ||
Screenshots would be nice. As a rule of thumb, I don't download programs just to look at them. | |||
Guy Perfect Since: 11-18-05 Last post: 6291 days Last view: 6290 days |
| ||
That's the kind of post that gets deleted in respectable forums. | |||
Guy Perfect Since: 11-18-05 Last post: 6291 days Last view: 6290 days |
| ||
12/18/2005 19:50 CST
CIC-NUS-6106 CRC calculator incorporated into project A wallpaper for youse to hold you over while I finish up the texture loader: Thumbnail. Click for larger version (edited by Guy Perfect on 10-01-06 10:44 PM) (edited by Guy Perfect on 10-01-06 10:44 PM) (edited by Guy Perfect on 10-01-06 10:45 PM) |
|||
Guy Perfect Since: 11-18-05 Last post: 6291 days Last view: 6290 days |
| ||
12/21/2005 15:32
Texture Loader completed. No no. I do in fact mean copyright. What good is making up my own license agreement if there's no way to enforce it? With a copyright, however, somone won't be able to take my code and call it theirs lest they be prosecuted. |
|||
Guy Perfect Since: 11-18-05 Last post: 6291 days Last view: 6290 days |
| ||
There is a Rainbow Road in F-Zero X. That wallpaper just shows some of it decoded.
Oh, and Sukasa... I didn't explicitly say VB6. I might end up compiling it in VB4 just to spite you. (-: (edited by BGNG on 12-22-05 01:06 AM) |
|||
Guy Perfect Since: 11-18-05 Last post: 6291 days Last view: 6290 days |
| ||
Let's pretend I'm dealing with the North American version of F-Zero X and let's also pretend that I'm looking for a program pointer somewhere in the ROM that points to offset 2AD1E0.
Let's pretend also that the offset in question is the start of the track data and is not mentioned in the ROM as bytes. While there is one instance of 002AD1E0, nothing happens when it's changed. 802AD1E0 doesn't even show up, E0D12A doesn't find anything useful, etc. So, um... Help? Any opcodes or what-not I could be searching for instead? |
|||
Guy Perfect Since: 11-18-05 Last post: 6291 days Last view: 6290 days |
| ||
MIO0 is the compression format used by Super Mario 64. It's an implementation of LZ77. All of the levels in the game are compressed with MIO0. Within the decompressed files, however, changing certain values will change which objects they represent.
In order to do this, you'll need to be able to extract a chunk of a ROM, decompress MIO0, change the byte values, recompress MIO0, and insert the new chunk into the ROM. If you can't do each of those, you won't be able to hack the game in this manner. |
|||
Guy Perfect Since: 11-18-05 Last post: 6291 days Last view: 6290 days |
| ||
A VERY peculiar bit of information.
In the North American ROM at offset 000DFC28, there is data displaying the value 80119550. That is the pointer to the first byte of course description text (i.e., the "FIGURE EIGHT" of Mute City 1). The only thing is, the actual ROM offset where that text is located is 000DFCB0. When changed, it works exactly as if 80119550 truely WAS 000DFCB0. This works for all 24 courses, as this is a pointer table. But how the heck is this possible? How can the value 80119550 actually represent 000DFCB0? |
|||
Guy Perfect Since: 11-18-05 Last post: 6291 days Last view: 6290 days |
| ||
Most textures are encoded with the Zelda-rific compression algorithm Yaz0, which is like the MIO0 used in Super Mario 64 and F-Zero X, except that it deals with 16-bit values instead of 8-bit values.
In order to edit the textures and, most likely, the level data, you'll need to get something that can extract a segment of the ROM, a Yaz0 decompresser, a binary file editor (aka Hex Editor), a Yaz0 compressor, and something to insert the new data back into the ROM. You'll also likely need a CRC recalculator. Some of the data is probably in the protected first megabyte of the ROM. |
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Acmlm's Board - I3 Archive - - Posts by Guy Perfect |