Jump to content

fkualol

Member
  • Posts

    65
  • Joined

  • Last visited

  • Days Won

    4

Posts posted by fkualol

  1. Like I said, I zeroed out the old file just to make sure that it was loading the newly pointed gameplay_keep. I don't know how your RAM Expansion hack works but making gameplay_keep bigger may introduce problems. This isn't OoT related but if you make Child Link's object file larger in MM, it ends up overwriting scene/map data in RAM, which then causes various glitches depending on the scene you enter.

     

    I haven't been paying much attention to the forums lately, but if you could lead me to your RAM Expansion hack then I could test it out on my ED64, if you want.

  2.  

    5UdzGXW.jpg

     

     

    I made this map with SharpOcarina a while ago and did some testing to see how I could get it to run on hardware. You're going to have to at least add the 0x1B command to the scene header. You can use 1B090000 02xxxxxx and have it point to this data if you want. You'll probably have to add a pointer to the camera data in the collision header as well. If you point it to a bunch of zeroes then there should be no problems with the camera.

     

    Anyway, that's how I got the above map to work on real hardware.

     

    Edit: Oh yeah, use the program Arcaith linked to above me for converting the map's model.

     

    Edit2: Forgot another thing. Make sure Link's Y rotation ends with 00 if you plan on using the 1B command with that data I linked to.

    • Like 4
  3. http://www.en64.net/OoTMM.7z

     

    Contains most of the stuff I've had documented over the last few years or so. It's quite a mess. If you have any questions about a certain thing then please reply to this thread and I'll try my best to help.

     

    As you can see I have a text file named "MM (J) grass item rng.txt" this does just apply to grass, but to pots and maybe other actors as well.

     

    MM (J) Camera Stuff.txt and oot camera types.txt include various information about the camera when using items, actions, etc. a lot of stuff still needs to be documented.

     

    Jazz made a thread on his site and included my MM shop hacking info here: http://en64.net/forums/index.php?topic=4.0 so you don't have to go through the txt files for this info. I copied Wareya's format on spinout's wiki and there are some object:shader values which I am unsure of whether they are present or not.

     

    The Height and Speed.txt file needs to be looked into, as there are many variables that determine how high Link can grab onto a ledge, speed, etc.

     

    0x1a.txt, 0x1b command.txt, 0x1c.txt, and 0x02.txt are simply MM scene commands that I have documented and posted here before.

     

    Damage Colours.txt only contains the RAM pointer for the asm to change the damage colour in MM (J), but there's more info in another text file somewhere in there.

     

     

    Two of the most important text files are MM (J) Action ASM.txt and OoT Action Modifier.txt as they contain pointers to different actions coded in assembly. It can be useful if you want to change how an action works or something.

     

    That's all I'll explain for now and if there's something you want to add or need help with, just ask. Sometimes I'm gone for a certain period so I don't know of or when I'll be able to help you, but hopefully all of this garbage I wrote in notepad helps people hack Zelda in some way.

    • Like 3
  4. Kind of off-topic, but I just noticed today that 5 of my videos have been muted for matching third-party content. All 5 of those videos are using in-game music too.

     

    This is embarassing. My headphones have been unplugged the whole time so I thought the videos were muted.

     

    On-topic, all we can really do is wait and see how this works.

  5. Majora's Mask Stuff:

     

    The Japanese name for Honey & Darling's minigame is the map select is "kakusiana", which literally means "hidden hole", AKA "secret grotto".

    It's actually called Z2_BOWLING, it's just that no one has bothered updating the names for the scene listings.

     

     

     

    Also from http://www.htloz.net/archives/htloz/2000-2001/zelda6/spaceworld99.html

     

     

    • Deku Scrub Mask: Link has the chance to turn himself into what's perhaps the most annoying creature from Ocarina of Time. Just like the Deku guys from the predecessor, Link can now hop through the dungeons and shoot seeds out his snout to defend himself. But that's not all. Not only can the Deku walk on water, they can also grab a hold of certain flowers and use them to glide through the air, enabling Link to reach high up areas that he previously couldn't get to (not even with the help of a chicken).

    This and the one video I made is the only proof I have that supports that Deku Link originally shot out deku seeds instead of bubbles.

     

     

    One more thing for OoT:

     

    http://youtu.be/7Bz9W9IuLPg?t=1m30s

     

    When you have nothing equipped and press B Link simply unsheathes his sword instead of slashing immediately. I'm guessing this applied to all weapons.

  6. Main reason why I didn't look further into it was because the world map is corrupt on the decompressed Majora's Mask ROM.

    For some reason zdec doesn't fix the DMA offsets for the file that contains the overworld map textures and Fierce Deity's object file.

     

    Replace the 8 bytes at 0x1A5A8 with 009F5000 00000000 and 0x1CDD8 with 0114D000 00000000 to fix it.

    Lol

    I compared the mesh between both versions of bdan_boss_room_1 and noticed there were DA380003 8012DB20 instances in the debug version, while in 1.0 there were DA380003 800FEDB0 instances. I'm not sure what the DA display list command does but changing them might fix it.

  7. I think I figured out the F0 command. It's used for messages.

     

    F0xxyyyy

     

    xx = Character name/portrait

    00 = Fox

    0A = Falco

    14 = Slippy

    1E = Peppy

    28 = Katt (Glitchy Portrait?)

    5A = ROB64

    yy = Message ID

     

    The message table is at 0xCCAC in file 0x00DE1360 (Virtual Start Address)

     

    xxxxxxxx yyyyyyyy

     

    xx = Message ID

    yy = Offset of text in RAM

     

    EDIT: D20000xx will turn the enemy into a teammate.

     

    00 = Fox/James?01 = Falco02 = Slippy03 = Peppy04 = Katt*05 = Bill**Portrait will be glitchy if used on levels other than the ones they're supposed to appear in.

     

    The 00 command modifies movement speed and can also act as a delay timer.

     

    00xxyyyyxx = Movement speed (0x7F max?)yy = Delay

     

    EDIT 2: Forgot the D0 command

     

    D0xxyyyy

    xx = Health

    yy = Model

     

    002B is the Arwing.

     

    EDIT 3: C0 has something to do with the way an enemy attacks.

     

    C0xxyyyy

     

    xx = Attack/Action

    09 - fire laser twice, spin, fly up 0A - fire laser once, spin, fly up 0B - fire laser twice, fly up 0C - fire laser once, fly up 19 - fire laser ball when really close, fly left 1A - fire 2 laser balls, fly left 1B - fire laser ball, fly left 2E - changes into a different enemy?

    yy = unknown

    • Like 2
  8. There appears to be a table for Object type/IDs 0x3E8 and up in the main level file. The starting offset for this table is hard-coded so you're going to have to go through the asm to find it for each level. Corneria's (0x0095D2F0 Virtual Start Address) begins at 0x0003D9E8. I have no idea how it works from here on but it looks like each entry ends with FE000000. Or maybe not. I'm not sure.

    • Like 2
  9. I haven't really been doing anything related to MM lately but i might as well mention a few things

     

    The first 0x12 scenes or so in http://spinout182.com/mmde/s.html are using the wrong names.

     

    The 0x02 command seems to use the same format as http://wiki.spinout182.com/w/Zelda_64:_Collision_Format#Camera_Data

     

    MM Camera Types

     

    00 NONE01 NORMAL002 NORMAL303 CIRCLE504 HORSE005 ZORA006 PREREND007 PREREND108 DOORC09 DEMO00A FREE00B FUKAN00C NORMAL10D NANAME0E CIRCLE00F FIXED010 SPIRAL11 DUNGEON012 ITEM013 ITEM114 ITEM215 ITEM316 NAVI17 WARP018 DEATH19 REBIRTH1A TREASURE1B TRANSFORM1C ATTENTION1D WARP11E DUNGEON11F FIXED120 FIXED221 MAZE22 REMOTEBOMB23 CIRCLE124 CIRCLE225 CIRCLE326 CIRCLE427 FIXED328 TOWER029 PARALLEL02A NORMALD2B SUBJECTD2C START02D START22E STOP02F JCRUISING30 CLIMEMAZE31 SIDED32 DUNGEON233 BOSS_SHIGE34 KEEPBACK35 CIRCLE636 CIRCLE737 CHUBOSS38 RFIXED139 TRESURE13A BOMBBASKET3B CIRCLE83C FUKAN13D DUNGEON33E TELESCOPE3F ROOM040 RCIRC041 CIRCLE942 ONTHEPOLE43 INBUSH44 BOSS_LAST45 BOSS_INI46 BOSS_HAK47 BOSS_KON48 CONNECT049 MORAY4A NORMAL24B BOMBBOWL4C CIRCLEa4D WHIRLPOOL4E KOKKOGAME4F GIANT50 SCENE051 ROOM152 WATER253 SOKONASI54 FORCEKEEP55 PARALLEL156 START157 ROOM258 NORMAL459 SHELL5A DUNGEON4

     

     

    OoT Camera Types

     

    00 NONE01 NORMAL002 NORMAL103 DUNGEON004 DUNGEON105 NORMAL306 HORSE007 BOSS_GOMA08 BOSS_DODO09 BOSS_BARI0A BOSS_FGANON0B BOSS_BAL0C BOSS_SHADES0D BOSS_MOF0E BOSS_TWIN00F BOSS_TWIN110 BOSS_GANON111 BOSS_GANON212 TOWER013 TOWER114 FIXED015 FIXED116 CIRCLE017 CIRCLE218 CIRCLE319 PREREND01A PREREND11B PREREND31C DOORC1D RAIL31E START01F START120 FREE021 FREE222 CIRCLE423 CIRCLE524 DEMO025 DEMO126 MORI127 ITEM028 ITEM129 DEMO32A DEMO42B UFOBEAN2C LIFTBEAN2D SCENE02E SCENE12F HIDAN130 HIDAN231 MORI232 MORI333 TAKO34 SPOT05A35 SPOT05B36 HIDAN337 ITEM238 CIRCLE639 NORMAL23A FISHING3B DEMOC3C UO_FIBER3D DUNGEON23E TEPPEN3F CIRCLE740 NORMAL4

     

     

    MM Scene Table Format

     

     

    xxxxxxxx yyyyyyyy aaaabbbb 00000000

     

    xx = Scene Start

    yy = Scene End

    aa = Message Number

    bb = Scene Configuration (01 if you want to use the 0x1A command. Goes up to 0x0D IIRC)

     

     

  10. Awesome! Now if only we could figure out how exactly OoT animates its textures in maps. That way we don't have to use engine hacks to do it and can use what the game already provides.

    I found a table at 0xBA0BB0 in the OoT Debug ROM that goes

     

    aaaaaaaa bbbbbbbb cccccccc dddddddd eeffgghh

     

    aa = scene start address

    bb = scene end address

    cc = scene name start address

    dd = scene name end address

    ee = unknown

    ff = something to do with the scene's animated textures

    gg = unknown

    hh = unknown

     

    If you set ff to 00 then the scene won't animate any of the map's textures. There's probably another table that needs to be found, or it might be hard-coded. I'm not sure.

     

     

    EDIT: Er... just realised this is the scene table and that this information is already available.

  11. 0x1A command- used to animate textures

     

    Maps with mesh that use animated textures will use the DE000000 aa000000 display list command where aa = 08+.

     

    Format

     

    1A000000 xxxxxxxx

     

    xx = offset

     

    then it's

     

    xx00yyyy zzzzzzzz

    xx = animated mesh entry (take aa value in DE command and subtract 07 (last entry needs to be negative)
    yy = type
      00 = one layer
      01 = two layers
    zz = pointer

     

    then

     

    aabbccdd

    aa = x velocity factor
    bb = y velocity factor
    cc = unknown - use 0x20 if unsure
    dd = unknown - use 0x20 if unsure


     

    • Like 1
  12. These are the entries in the exit list within the scene? As opposed to being indexes within a list in code, like OoT.

    There's an entrance table at 0x00C5BC60 in a decompressed MM (U) ROM and the format goes:

     

    xx000000 yyyyyyyy zzzzzzzz

     

    xx = Number of Entrances

    yy = RAM Offset

    zz = Scene Name RAM Offset

     

    To get the data for an individual entrance you would go to

     

    RAM Offset + (Entrance Number * 4)

     

    take the address written there and add (Variable * 4)

     

    The data here seems to be in the same format as OoT

     

    aabbccdd

     

    aa = Scene Number (Signed Byte)

    bb = Entrance Number

    cc = Variable

    dd = Fade 

    And wouldn't it be more like:

    SSSSSSSS SSSSSSSE EEEEEEEE zzzzzzzz

    In a bitwise manner, that is:

    scene = exit_val>>17

    entrance = (exit_val >>8) & 0x1F

    ?

     

    Yes, that seems to be about right.

     

    Nevertheless, this thread is full of win. Would there be opposition to me putting the data on the wiki?

    Feel free to do so. I would have added it myself but I can't seem to log in with OpenID. 

  13. Exit Values

     

    xxyz

     

    xx = Exit number - Divide by two to get its entry in the exit table (list)

    xy = Entrance Number

    z = Variable?

     

    Examples:

     

    D800 will take you to exit 0x6C (South Clock Town) at entrance 0x00

     

    1500 will take you to exit 0x0A (Grottos) at entrance 0x10

     

    4650 will take you to exit 0x23 (Fairy Fountain) at entrance 0x05

  14. Actors are programmed to check for a specific value.

     

    In each actor's source file (http://spinout182.com/mmde/a.html) I searched for:

    	jal             external_func_8010B11C

    if there was a match then usually before or after that instruction there would be:

    	li              a1,x

    Where x is the decimal value of the marker

     

    This doesn't work all of the time as there are some actors like En_Giant which have a lhu instruction instead.

     

    You could try doing something similar with Ocarina of Time's actors, but I'm not sure what you would have to search.

     

    • Like 1
×
×
  • Create New...

Important Information

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