Jump to content

Wind Waker Hacking Thread


xdaniel
 Share

Recommended Posts

http://tcrf.net/Talk..._The_Wind_Waker

 

Its just a log of windwaker hacking progress done.

 

Well, the main thing that's been done over there was accessing the map select. That's certainly an awesome find, however hacking actual game content isn't really what TCRF is about, and neither on there directly nor on the Jul forums has been much WW hacking going on. Again, not to diminish ex. the map select finding. It's just that we're doing something else here.

 

Tiny EDIT: Saving is a wee bit more work that I had thought... so here's another screenshot to tide you over before release:

 

Posted Image

 

(Collision translucency can be toggled, btw)

Edited by xdaniel
Link to comment
Share on other sites

Posted Image

 

.dzs - MULT: Translation of room models

 

[decimal32][decimal32][ushort][byte][byte]

| | | | |

| | | | Unknown

| | | Room number

| | Empty?

| Vertical translation

Horizontal translation

 

Example Stageseastage.arcstagedzsstage.dzs:

 

- Center room (H/V translation 000000/000000) is room 0x19/25, Six-Eye Reef

- Forsaken Fortress is top-left "room"

- Outset Island, room 0x2C/44, has H/V translation -200000/-300000...

- ...thus Outset is two islands left, and three islands down from Six-Eye Reef

- ...and Windfall (H/V 000000/-200000) is two islands up from Six-Eye Reef!

 

- Examples for unknown:

- 0x00/0 (ex. Outset Island, Forsaken Fortress, Dragon Roost, Windfall, Forest Haven)

- 0x05/5

- 0x0F/15

- 0x1E/30

- 0x32/50 (ex. Six-Eye Reef)

 

- Unknown -seems- to be related to island (models) size?

 

...or something like that. Hey, it works fine for rendering! ...okay, I haven't tested if really each and every island's models and collision now match up, but it does work for several big and small ones, so I'm guessing this is correct...

Link to comment
Share on other sites

Translation...?

 

As in, how the game offsets each Room so that they're not all at the center of the map?

 

If that's so, THAT'S how it handles dungeon rooms, and folders with more than one room!

 

So, if I understand, each room has its own water model. Does this mean that one 'unit' is equal to one entire ocean sector?

Link to comment
Share on other sites

Well, I think it has to do with island placement on the overworld map, so that they're not all at the center.

 

Without this, the maps themselves would have to be moved. the E3 Outset Island is an example of that. And obviously, that's not exactely diresable as it introduces it's own set of problems.

 

As for dungeon rooms, they're actually moved in relation to the model origin, since it's not outside.

Link to comment
Share on other sites

Note: Written before I saw Kargaroc's post, but whatever :)

 

That kinda translation, however, apparently isn't used in dungeons, seeing how ex. Siren or M_Dai's rooms all are correctly positioned even when not loading their Stage archives, and how they themselfs don't have MULT chunks... But anyway, what MULT certainly does control is how the Great Sea is laid out - without reading and using that chunk's data, sea's rooms all render at the center of the map instead of where their actors and collision are rendered.

 

For comparison, the first screenshot is Outset Island without the sea's Stage archive loaded, while the second has been taken with the Stage loaded, thus using its MULT chunk to position Outset's models correctly:

 

Posted Image

Posted Image

Link to comment
Share on other sites

I'm thinking of "Wind Viewer" as its new name. I mean, my old C-based proof of concept from page 1 is called that, the model viewer I was working on (most of its BMD/J3Dx renderer now being part of this) was called that internally at least... plus it kinda rhymes with "Wind Waker", I guess.

 

Yeah, think I'm calling it "Wind Viewer".

Link to comment
Share on other sites

How did you load it, exactly?

 

Anyway, it looks... odd. Like it lacks an effect that should be on it.

 

First, extract the ISO with GCRebuilder

 

Open A_R00 in the stage folder, extract Room0.arc, open bmd, delete the fake bmd inside it, put vrbox.bmd where the fake bmd was (rename it to model.bmd and delete any debugout.txt files), make folder called "Room0" (make sure you put it in another folder otherwise it might conflict with the original Room0.arc), put the folders inside it, and drag the folder over the ArcPack.exe

 

it should make an arc called Room0.arc

delete the original Room0.arc and replace it with the new one

 

Rebuild the ISO, launch the game, and go to R00 in the debug menu (#34, map 5 in the debug menu).

 

People have been saying that Jaytheham's arc packer wasn't working for them. Well, for some reason, it works for me.

http://dl.dropbox.co...29/arcpacker.7z

There's the files that I use, incase that helps

 

I think I will make a tutorial about this

 

___

On a unrelated note, I discovered that ITest61's bdl and SubD51's bdl are bit for bit identical.

Link to comment
Share on other sites

"Wind Viewer" aka "WW Actor Edit" no-save-maybe-unstable-resource-hungry-etc DEMO build; hope it works for everyone: http://magicstone.de...orEdit_DEMO.rar

  • "File -> Open Room RARC(s)" to open room archive(s), can be several at once, "File -> Open Stage RARC" to open the stage archive, "File -> Reset" to unload everything, although I'd advise you to quit and restart the program (cleanup isn't yet working well and still wastes memory).
  • Options under, well, "Options" are mostly self-explanatory, "Auto-Center Camera" makes the camera focus on whatever ex. actor, door, MULT translation point, etc. you highlight in the treeview on the left - good for jumping to islands.
  • Some models or parts of them can be missing, the collision overlay doesn't fit perfectly and flickers for some maps, etc., etc. Some of this I'll be fixing in the future, some of it I probably can't.
Link to comment
Share on other sites

The only thing it seems to show is actor cubes for me

 

Windows XP 32bit, nVidia GTX 570

 

EDIT: I should really learn to keep my mouth shut

Can it open both BMDs and BDLs?

 

EDIT 2:

Feature suggestion: holding down either shift or space to make the camera move faster?

Link to comment
Share on other sites

AHA!

 

Posted Image

 

Posted Image

 

With that packer, Kargaroc, I've done what I've been wanting to do for a while- port the 'Underwater' effect to other maps! I replaced 'vr_sky' in sea's stage.

 

...ahem. However, there are two things:

 

-The regular sun is still there; I'll have to see if I can change that with the STAG .dzs entry.

-The regular model in Hyrule shimmers. This one... doesn't. It looks a bit odd. I think we can confirm now that .btk files have to do with... texture animation? At least animation-like effects.

Link to comment
Share on other sites

Can it open both BMDs and BDLs?

Feature suggestion: holding down either shift or space to make the camera move faster?

 

1) Yep, should all work. I should note, tho, that any models inside the stage archive are ignored as I don't know how to place them correctly. 2) Good idea, will look into it. At the worst, the camera code might need some rewriting, but it's certainly doable.

Link to comment
Share on other sites

 

I was able to both block the sun and get the movement by adding the model and btk into Outset's .arc. It's black and white probably because it's only set to turn blue when you get the Master Sword. I wonder if there's a way to force it to its colored version.

 

Going out of Outset's square leads to the model simply disappearing. I'm wondering if there would be any kind of bump when switching between two islands with that model.

Link to comment
Share on other sites

Hey, I have a question.

 

.map files document .rels, right? Does that mean that we can use .map files to tell what's in .rel files?

 

 

SRS (0010 1000 0000 0000)

 

ADDR (0100 0000 1000 0010)

 

LOOP (0000 0000 0100 0000)

 

ANDC (0011 1100 0110 0000)

 

NOP

 

ORR (0011 1000 0110 0011)

 

NOP

 

NX (1000 0000 0110 0011)

 

NOP

 

MULX (1010 1000 0000 0011)

 

LOOPI (0001 0000 1101 0110)

 

SRS (0010 1100 0000 0000)

 

DAR (0000 0000 0000 0110)

 

ADDR (0100 0001 1000 0010)

 

DECM (0000 0000 111 1000)

 

ANDC (0011 1100 0110 0000)

 

NOP

 

This... is the first 24 bytes of a section in Gohdan's .rel that its .map labels as (and I quote) 'bom_eat_check__FP9bst_class,' meaning that the section this is from is, going by the name, a check for whether or not you've thrown a bomb into Gohdan's mouth after hitting both of its eyes. However, I have NO idea if this is actually right. This could all be a bunch of gibberish, for all I know. However, some if it does make sense; SRS, for example, is supposed to store a value to 'register 18' (whose purpose isn't known). If I interpreted the format of that particular opcode right, that SRS code stores 0000 0000 to the 18th register. That ADDR that comes next adds that exact same register ($18+S, where S is 0 in both opcodes) to one of the accumulators (which I don't completely understand as of yet). Alright, I think that I've come to understand that the accumulators are where the Gamecube stores the results of arithmetic.

 

Then it loops that until, one would assume, both of Gohdan's eyes are shot and he falls, triggering the ANDC, which preforms an AND operation on the same accumulator that the ADDR wrote to.

 

While I don't really know what this is, from my perspective, this seems correct. Can any of the other, more opcode/ASM-savvy people here confirm if this section could be part of a check? Or maybe even if it looks right? :S

Link to comment
Share on other sites

Posted Image

 

Heaved the hex editor control from SharpBoy and GearMod over to Wind Viewer, the name of which will stay for the time being, although I have to admit that "Wind Maker" also sounds pretty good. Anyway, when you now select an unknown/unimplemented DZx chunk, a panel with said hex editor control will appear beneath the map view, which'll (someday) allow you to manually edit that chunk.

 

And finally, I added the program icon Sage of Mirrors made without my consent! :)

 

EDIT: First proper, save-capable build!

 

Download: http://magicstone.de/dzd/random/WWActorEdit_1.rar

 

I cannot guarantee it's gonna work 100% perfectly, it's probably still wasting memory somewhere, it might still be a bit unstable, but it should (hopefully) save stuff correctly! Anything that has editing controls on the right hand side of the window (ACTRs, etc.) should save, for anything that just shows the hex editor panel, editing and saving is disabled.

Edited by xdaniel
Link to comment
Share on other sites

 Share

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.