123 ->
^^
vv
List results:
Search options:
Use \ before commas in usernames
Edit history:
Antidote: 2016-03-17 10:36:34 pm
Antidote: 2016-03-17 10:36:11 pm
Antidote: 2016-03-04 08:13:33 pm
Antidote: 2016-02-22 03:03:47 am
Antidote: 2016-02-22 02:57:10 am

URDE

URDE/PathShagged is an attempt to retread the steps of Retro Studios' talented software engineers and completely reimplement the engine from the ground up. The ultimate goal is to faithfully recreate the engine using modern programming techniques and language extensions.

PathShagged is a runtime that is rewritten from scratch using C++ from pure PPC assembly, methods include static and dynamic analysis in IDA and Dolphin's debugger.

Currently there are only two active programmers scouring the the game to achieve this, @jackoalan, and myself, but anyone who wishes is more than welcome to join in and help out in anyway you can.
Releases

Current release:
Prototype 7

EDIT:
Update names due to a recent decision.
Thread title: 
Yup!! Having an open-source codebase is definitely the best route for making engine mods, as well as getting an easier idea of how things work at the C++ level (rather than making having to make sense of optimized PPC assembly and error-prone type-inference).

PathShagged is being built on top of HECL, so the existing reverse-engineered data structures are ready to become part of a brand new asset pipeline.

URDE is part of PathShagged, designed as a modular suite of mini-editors (inspired by Blender's UI), and directly integrated into the replacement engine code. Ideally, this will allow interactive edits which continuously update or reset the engine's state, making tweaks super easy!
We would also like to stress that this is in no way designed to be competition for PWE, Parax has worked long and hard making PWE what it is and we do NOT want that work going to waste, as a matter of fact, we'd like to provide a level of compatibility between the two tools in order to further augment the flexibility of the toolchain.
Very true, it's also apparent that Retro themselves didn't use just one tool. There are plenty of points along the "pipeline" for multiple editors/tools to have a role!
Yeah, PathShagged and PWE are different things - pshagged is attempting to reimplement the engine and basically port it to PC while PWE is meant to be a toolchain for the original game on its original hardware + emulators. What you guys are trying to do is kind of insane honestly. :P Best of luck.

I personally just like to do my own thing for the most part, but if there are things we could collaborate on I'd certainly consider it! I plan on asking you guys about importing/exporting assets at some point at the very least, since that's something PWE will need to do as well that hecl is already doing a pretty decent job of.
Edit history:
Antidote: 2016-02-22 03:28:25 am
Feel free to ask us anything you need! And remember: our code is MIT licensed and you're free to use any of it in PWE.

And yes, what we're doing is insane, but it's the fun kind of insane! The things we've learned since we started is immeasurable, and I don't regret it at all.
Quote from Parax:
What you guys are trying to do is kind of insane honestly.

good luck guys. will be interested to see how you go.
Here's a little peek at what Jack and I have been working on:


All credit goes to Jack for getting indirect textures in place!
Yea, it was simultaneously really fun and a royal pain to do; especially getting the framebuffer fed-back into the shader. The GameCube is pretty limber with EFB->memory copies, but PC GPUs are quite a bit different to get efficiently set up.

Here's the shader that emulates the indirect TEV stage if anyone's curious:
Code:
#version 330
#extension GL_ARB_shading_language_420pack: enable
struct VertToFrag
{
    vec4 color;
    vec4 uvScene;
    vec2 uvTexr;
    vec2 uvTind;
};

in VertToFrag vtf;
layout(location=0) out vec4 colorOut;
layout(binding=8) uniform sampler2D texs[3];
void main()
{
    vec2 tindTexel = texture(texs[2], vtf.uvTind).zw;
    vec4 sceneTexel = texture(texs[1], mix(vtf.uvScene.xy, vtf.uvScene.zw, tindTexel));
    vec4 texrTexel = texture(texs[0], vtf.uvTexr);
    colorOut = vtf.color * sceneTexel + texrTexel;
    colorOut.a = vtf.color.a * texrTexel.a;
}
very cool!
Soooo, I loaded up the particle system for the Charge Beam and left it going for about 10 minutes
Edit history:
Antidote: 2016-03-08 11:56:56 pm
After a couple of days of work Jack has gotten THP and RSF support working in URDE/PathShagged! We're one more step closer to getting something real for you guys.

It's still pretty preliminary and there may be some bugs that we need to squash, but so far it looks pretty stable.
New Prototype released, please check the releases link in the original post.
Edit history:
Antidote: 2016-03-22 07:41:15 pm
Antidote: 2016-03-22 07:40:53 pm
Moved from PWE release thread:
Quote:
Actually, I totally forgot I had a build of nodtool ready from earlier today, if anybody wants to give it a try here it is:
https://dl.dropboxusercontent.com/u/21757902/nodtool.zip


Please report bugs them in the thread or here:
https://github.com/AxioDL/nod/issues/new
should i use cmd to repack or?
Edit history:
Antidote: 2016-03-22 07:45:01 pm
command prompt

run it without args to get a list of arguments, the official release will get a proper readme and release notes.
Also, I'd like to know what DLL it was complaining about so I can know if it's something I need to fix or something that the release notes can cover.
I'm very interested in contributing to what you guys have going here. I need a project to build my reverse engineering chops, and what better than on a game I love?

Anyway, far into the future I was thinking of building a sort of wrapper or high level emulator around the 00 iso in UE4. If I understand the MP engine correctly, I'd parse the paks to instantiate objects based on the contents of the maps and execute the objects' machine code using a PPC core. I guess I'd have to sort of create an "environment" that the object would exist in (as if it were in some empty map with only that object in existence) to compartmentalize and encapsulate each object... I'm not sure.

Here's my question to you guys:  Could you leverage an already made engine like UE4 to do stuff like replace the internal renderer (I guess you have to anyway since this is a PC port?) with UE4's for stuff like more accurate lighting (their default shaders?)

In other words, could you use UE4 to both save yourself some work writing stuff that's already in UE4 and also make it look prettier to boot?
how exactly do you make rebuild an iso with nodtool?
Edit history:
Antidote: 2016-03-22 10:40:34 pm
Antidote: 2016-03-22 10:40:19 pm
Antidote: 2016-03-22 10:40:06 pm
Antidote: 2016-03-22 10:34:21 pm
Quote from athairus:
I'm very interested in contributing to what you guys have going here. I need a project to build my reverse engineering chops, and what better than on a game I love?

Anyway, far into the future I was thinking of building a sort of wrapper or high level emulator around the 00 iso in UE4. If I understand the MP engine correctly, I'd parse the paks to instantiate objects based on the contents of the maps and execute the objects' machine code using a PPC core. I guess I'd have to sort of create an "environment" that the object would exist in (as if it were in some empty map with only that object in existence) to compartmentalize and encapsulate each object... I'm not sure.

Here's my question to you guys:  Could you leverage an already made engine like UE4 to do stuff like replace the internal renderer (I guess you have to anyway since this is a PC port?) with UE4's for stuff like more accurate lighting (their default shaders?)

In other words, could you use UE4 to both save yourself some work writing stuff that's already in UE4 and also make it look prettier to boot?


No, UE4 is far too different for what we're wanting to do, also it really takes the fun out of learning how the engine works, currently I'm REing CPlayerState and I've learned all sorts of neat information about how Samus' state is tracked

Quote from MetroidPrime_Stratton:
how exactly do you make rebuild an iso with nodtool?

Code:
nodtool makegcn <gameid> <game-title> <fsroot-in> <dol-in> <apploader-in> [<image-out>]


i.e
Code:
nodtool makegcn GM8E01 "Metroid Prime" MP1\fsroot MP1\boot.dol MP1\apploader.bin mp1.iso


Making a wii image is similar but you must specify either single or dual layer, and the partition header
Code:
nodtool makewii(sl|dl) <gameid> <game-title> <fsroot-in> <dol-in> <apploader-in> <parthead-in>


i.e
Code:
 nodtool makewiidl R3ME01 "Metroid Prime: Trilogy" MPT\fsroot MPT\boot.dol MPT\apploader.bin MPT\part_head.bin mpt.iso
i keep getting a fatal error
Please post the error, simply stating "I keep getting a fatal error" is no help to either yourself or us.
[0.5709 FATAL ERROR nod] unable to stat root\fsroot as directory

im honestly confused on how to input for rebuilding as well
Edit history:
Antidote: 2016-03-23 02:56:07 am
Antidote: 2016-03-23 02:55:01 am
Is root where you're trying to extract?

If so create that directory.

And for creation, I'm really not sure what else to tell you, that code block is really all there is to it, "makegc" for gamecube, "makewiidl" for a dual layer wii image.