HeavyZ Posted May 16, 2013 Share Posted May 16, 2013 Thanks for all of this info Pendants. I might just use some of it in my Rebirth project To think a week ago this was all giberish to me. Link to comment Share on other sites More sharing options...
giadrosich Posted May 16, 2013 Share Posted May 16, 2013 Now I just have to figure out how to make a custom song and have an NPC teach you. I'm glad I've gotten rid of ocarina usage in my recent mod idea. XD Link to comment Share on other sites More sharing options...
Three_Pendants Posted May 16, 2013 Author Share Posted May 16, 2013 Thanks for all of this info Pendants. I might just use some of it in my Rebirth project To think a week ago this was all giberish to me.  My pleasure Heavy1930. I excel at this sort of thing, and now I've found a new lure to catch the desired data with! But more on that later, for now I'm posting the text commands relevant to Ocarina Songs.  (Ignore the 118 that is the Frame in which the song is played in the Impa Cutscene, did not learn this until my list was halfway compiled)  00010118 - Freehand Ocarina 00020118 - Play Minuet of Forest 00030118 - Play Bolero of Fire 00040118 - Play Serenade of Water 00050118 - Play Requiem of Spirit 00060118 - Play Nocturne of Shadow 00070118 - Play Prelude of Light 00080118 - Play Saria's Song 00090118 - Play Epona's Song 000A0118 - Play Zelda's Lullaby 000B0118 - Play Sun's Song 000C0118 - Play Song of Time 000D0118 - Play Song of Storms 000E0118 - Play ?Scarecrow's Song? (It's shown as two Right-C Buttons that can't actually be pressed, maybe because it is unactivated at the moment?)  000F0118 - Learn Minuet of Forest 00100118 - Learn Bolero of Fire 00110118 - Learn Serenade of Water 00120118 - Learn Requiem of Spirit 00130118 - Learn Nocturne of Shadow 00140118 - Learn Prelude of Light 00150118 - Learn Saria's Song 00160118 - Learn Epona's Song 00170118 - Learn Zelda's Lullaby 00180118 - Learn Sun's Song (though if learned outside of its normal area and the area has day and night it will change it from the opposite time.) 00190118 - Learn Song of Time 001A0118 - Learn Song of Storms 001B0118 - Learn Scarecrow's Song (Which is set to an A when not actually set) 001C0118 - ?It's a blank Ocarina tab that doesn't seem to have a right answer, no matter what is pressed? 001D0118 - Freehand OCarina, but the music lines show up and it proceeds past eight notes in tones. 001E0118 - Same as above except hitting the eigth note causes the normal error sound. 001F0118 - Any note pressed is considered wrong. 00200118 - As above. 00210118 - Play Song Spot 00220118 - As above. 00230118 - As above. 00240118 - As above.. 1 Link to comment Share on other sites More sharing options...
Three_Pendants Posted May 16, 2013 Author Share Posted May 16, 2013 And here's the info I promised earlier, all of the locations of the songs in the normal game! I plan on expanding upon this with text pointers to normal NPC's so that people can decide what NPC they want to teach them songs and the like.  Special thanks to john_smith_account who simplified the process of looking through raw cutscenes with his Cutscene Tool, which allowed me to locate everything in a faster manner.   00A9  ovl_Demo_Im Impa  ROM: 0xD3EAAC (2405006A) Shadow Medallion (From Sage Impa) ROM: 0xD4033C (24060060) Zelda's Lullaby (After speaking with Zelda)  Cutscene with Impa in Courtyard 0x30DB960 - (000A) - Play Zelda's Lullaby 0x30DB978 - (0017) - Learn Zelda's Lullaby  00E7 ovl_En_Ma1 (Child Malon)  ROM: 0xE56F4C (24060047) Receiving the Pocket Egg for talking with Malon outside of the Castle Gate. ROM: 0xE57124 Text: (24050009) Play Epona's Song ROM: 0xE5719C Text: (24050016) Learn Epona's Song   0146 ovl_En_Sa Saria  ROM: 0xEACB24 (24050062) Saria's Song (Learned at initiation of Sacred Forest Meadow Scene)  Cutscene with Saria in Sacred Forest Meadow  0x28CFDEC - (0008) - Play Saria's Song 0x28CFE04 - (0015) - Learn Saria's Song  Cutscene with Sun's Song in Royal Family Tomb  0x34658AC - (000B) Play Sun's Song 0x34658C4 - (0018) Learn Sun's Song  Cutscene with Child Zelda in Temple of Time (Obtaining Ocarina of Time)  0x2B2ACC4 (000C) Play Song of Time 0x2B2ACDC (0019) Learn Song of Time  0153 ovl_En_Fu Windmill Man  ROM: 0xDD48AC (24050065) Song of Storms learned from Windmill Man ROM: 0xDD49F0 Text: (2405000D) Play Song of Storms ROM: 0xDD4974 Text: (2405001A) Learn Song of Storms    0048 ovl_en_Xc Shiek  ROM: 0xEF2874 (2405005A) Minuet of Forest (Meeting Shiek in Sacred Forest Meadow)  Cutscene with Shiek in Sacred Forest Meadow  0x28CE82C - (0002) Play Minuet of Forest 0x28CE844 - (000F) Learn Minuet of Forest  ROM: 0xEF2A1C (2405005B) Bolero of Fire (Meeting Shiek in Death Mountain Crater)   Cutscene with Shiek in Death Mountain Crater  0x2A6B814 - (0003) Play Bolero of Fire 0x2A6B82C - (0010) Learn Bolero of Fire  ROM: 0xEF2B78 (2405005C) Serenade of Water (Meeting Shiek in the Ice Cavern)  Cutscene with Shiek in the Ice Cavern  0x25CD9D4 - (0004) Play Serenade of Water 0x25CD9EC - (0011) Learn Serenade of Water  Cutscene with Shiek in the Desert Colossus  0x29AA5A0 - (0005) Play Requiem of Spirit 0x29AA5B8 - (0012) Learn Requiem of Spirit  Nocturne of Shadow  0xADCFAC - (2405005E) (From Burning awakening in Kakariko)  Cutscene with Shiek in Kakariko  0x281F034 - (0006) Play Nocturne of Shadow 0x281F04C - (0013) Learn Nocturne of Shadow   Cutscene with Shiek in the Temple of Time after defeating Phantom Ganon  0x2B2C37C - (0007) Play Prelude of Light 0x2B2C394 - (0014) Learn Prelude of Light  And there you have it. Make sure to change Every Instance of a song to change it! They are include side-by-side for easy modification.  That is every item in the game down, from fairy magics to the Prelude of Light, but in reality our journey is just beginning. What can we do with this knowledge now that we have it?  Expect in the coming weeks for a more full record of NPC text identifiers as that may be the key to getting any NPC into giving items.   Link to comment Share on other sites More sharing options...
Three_Pendants Posted May 17, 2013 Author Share Posted May 17, 2013 The Items within Actors (and Elsewhere) List on the first post has been updated with all of my findings and have been cleaned up to increase readability. If anyone still has any problems with the format, please let me know, thank you. 2 Link to comment Share on other sites More sharing options...
giadrosich Posted May 18, 2013 Share Posted May 18, 2013 So...while working with exits, I've made a few notes on them that I decided to post up. Not very big, but might help someone. Â I've only really looked at Object Set 2 (Adult Link) in ZLE2 to change the Lost Woods exit to go straight into Kokiri Forest. Â Replace 04DE with 020D in object set 2 from Hyrule Field to Kokiri Forest. Replace 05E0 with 0185 in object set 2 from kokiri forest to hyrule field. Â From Hyrule Field0033 market00DB kakariko00EA zora river04DE lost woods0286 kokiri forest020d kokiri forest0185 Hyrule fieldStanding inside kokiri forest00EE kokiri forest00EE kokiri forest05E0 lost woods011E lost woods0272 Link's house00C1 kokiri shop00C9 know it all009C house of twins0433 mido's house0437 saria's houseInside lost woods bridge area0286 lost woods00FC sacred forest meadow011E lost woods01AD lost woods01B1 lost woods04C6 lost woods04E2 goron city01DD zora river0185 Hyrule field020d kokiri forest Link to comment Share on other sites More sharing options...
mzxrules Posted May 19, 2013 Share Posted May 19, 2013 giadrosich, check out https://www.the-gcn.com/topic/2374-mzxrules-notes-on-ocarina-of-time/?p=37460 Â There's a complete table of all the entrances within the game, in the FW table. Also they're not exits. Link to comment Share on other sites More sharing options...
giadrosich Posted May 20, 2013 Share Posted May 20, 2013 giadrosich, check out https://www.the-gcn.com/topic/2374-mzxrules-notes-on-ocarina-of-time/?p=37460  There's a complete table of all the entrances within the game, in the FW table. Also they're not exits.  Entrances are considered only as points of entry into a map from an exit. If you take a look at the wiki list: http://wiki.spinout182.com/w/Debug_ROM:_Exit_List it'll show you the exits to use, and the entrances show where you'll come out in the map (sort of, it's not extremely detailed).  The only reason I've put up the little notes up there was mainly documentation for myself while I was working with it. As you can see, the wiki list is not very good on telling where exactly you're standing or what exit brings you where.  For example: 04DE Child: Day  : Entrance 08 : 005B Lost Woods This doesn't tell you where this is actually at (at least to me, others might have no problem knowing exactly where this is). Now, through looking at the exits in the game itself while I'm playing it, I can determine that 04DE is the exit when you're standing in Hyrule Field, so it's the entrance to the lost woods, or the area to the bridge. There are a lot of other Lost Woods exits, but I specifically wanted to know about the one leading to the bridge from Hyrule Field. Now, unless another list has details like that, it won't be very useful to me (also, I'm working with debug instead of 1.0). Link to comment Share on other sites More sharing options...
mzxrules Posted May 20, 2013 Share Posted May 20, 2013 For example: 04DE Child: Day  : Entrance 08 : 005B Lost Woods This doesn't tell you where this is actually at.... unless another list has details like that, it won't be very useful to me (also, I'm working with debug instead of 1.0). If you had actually clicked the link and followed my instructions, you would have seen that there already exists such a list in my tables, though it may be a little confusing to read as I've removed redundant indexes (ex. 0000 - 0003 are logically equivalent, so the lowest index (0000) is the only one listed as this value would be the one passed by exits). Also, I'm very confident that the tables are identical across versions as V1.0's entrance table has the same number of records, there are still references the scenes which are no longer in the rom, and lastly because Master Quest is merely a dungeon mod.  Entrances are considered only as points of entry into a map from an exit. If you take a look at the wiki list: http://wiki.spinout182.com/w/Debug_ROM:_Exit_List it'll show you the exits to use, and the entrances show where you'll come out in the map (sort of, it's not extremely detailed).There is no logic in your reasoning behind calling the index value an exit (aside from "tradition"), because you aren't thinking about what the data actually represents. To elaborate, I want to start by defining what I believe to be accurate definitions for entrances and exits with respect to the game world:  An entrance is an entrance point into a scene. An exit is point within a scene that allows you to leave the scene into the same or another scene.  Now, the index value is a reference to a single record in our so called "Exit List". And if you look, you'll see that each record defines a Scene number, and a Position number, which in turn defines what scene file to load, and the position number translates into coordinates within that scene (a.k.a an entrance).  Clearly there is no proper relationship between an index value for that table, and an exit, so they shouldn't be called exit indexes. Link to comment Share on other sites More sharing options...
giadrosich Posted May 20, 2013 Share Posted May 20, 2013 Well, I did follow the link and I did click on the ocarinabot, but all it seemed to give me was a list of actors in a spreadsheet....not sure how to use that program really, and I didn't see a readme. Â *shrug* To me, one is always exiting a scene, so it makes sense logically to call them exits rather than confuse newbies the difference between "exits" and "entrances". It's easier to tell them "you're always exiting something." Â EDIT: I will try the program again though to see if I've missed something, so thanks for telling me about it. Â EDIT again: Really, the exit/entrance thing to me is like the object/group thing people do. Link to comment Share on other sites More sharing options...
Three_Pendants Posted May 20, 2013 Author Share Posted May 20, 2013 With the help of john_smith_account the other day we happened upon some old documentation which lead us to the Action Parameters... in 1.0, so copying over some hex to find it in Debug Rom was done and there we had it. At first I had wanted it just to clear up some curiosity on the beta arrows, but the more I thought about it these may be the key for NPC's reacting in certain ways to items. With this helpful page... http://wiki.spinout182.com/w/Link_Action_Parameters I used that as a stepping stone and the address we found at 3F403C in RAM  The first parts are obvious and are clearly just the order of the items in the menu for the most part, but after that things get rather interesting, culminating in a copy of the elemental arrows (which may have been the beta arrows spot originally) and sword values that when switched will actively change that blade into another action parameter.   Action Parameters Mapping  0xC22D3C - 06 = Deku Stick 0xC22D3D - 1B = Deku Nuts 0xC22D3E - 12 = Bombs 0xC22D3F - 08 = Bow 0xC22D40 - 09 = Fire Arrow 0xC22D41 - 1A = Din's Fire 0xC22D42 - 0F = Slingshot 0xC22D43 - 1C = Fairy Ocarina 0xC22D44 - 1D = Ocarina of Time 0xC22D45 - 13 = Bombchu 0xC22D46 - 10 = Hookshot 0xC22D47 - 11 = Longshot 0xC22D48 - 0A = Ice Arrow 0xC22D49 - 18 = Farore's Wind 0xC22D4A - 14 = Boomerang 0xC22D4B - 42 = Lens of Truth 0xC22D4C - 2E = Magic Beans 0xC22D4D - 07 = Megaton Hammer 0xC22D4E - 0B = Light Arrow 0xC22D4F - 19 = Nayru's Love  0xC22D50 - 1E = Swing Empty Bottle 0xC22D51 - 25 = Drink Red Potion 0xC22D52 - 27 = Drink Green Potion 0xC22D53 - 36 = Drink Blue Potion 0xC22D54 - 2A = Letting Fairy out of Bottle 0xC22D55 - 1F = Empty Bottle containing Fish 0xC22D56 - 28 = Drinks Empty Bottle? (Lon Lon Milk Maybe?) 0xC22D57 - 24 = Ruto's Letter in Bottle 0xC22D58 - 20 = Empties Bottle containing Blue Fire 0xC22D59 - 21 = Empties Bottle containing Bugs 0xC22D5A - 23 = Shows bottle containing Big Poe 0xC22D5B - 29 = Drinks Empty Bottle? (Lon Lon Milk Maybe?) 0xC22D5C - 22 = Drinks Poe  0xC22D5D - 2C = Shows Egg 0xC22D5E - 2D = Shows Cucco 0xC22D5F - 2B = Shows Zelda's Letter 0xC22D60 - 3A = Put Keaton Mask On 0xC22D61 - 3B = Put Skull Mask On 0xC22D62 - 3C = Put Spooky Mask On 0xC22D63 - 3D = Put Bunny Hood On 0xC22D64 - 3E = Put Goron Mask On 0xC22D65 - 3F = Put Zora Mask on 0xC22D66 - 40 = Put Gerudo Mask On 0xC22D67 - 41 = Put Mask of Truth On  0xC22D68 - 03 = Swings Sword (Likely used for "Sold Out" 0xC22D69 - 2F = Shows Egg (Likely Adult version) 0xC22D6A - 30 = Shows Pocket Cucco 0xC22D6B - 31 = Shows Cojiro 0xC22D6C - 32 = Shows Mushroom 0xC22D6D - 33 = Shows Odd Potion 0xC22D6E - 34 = Shows Poacher's Saw 0xC22D6F - 35 = Shows Broken Goron's Sword 0xC22D70 - 36 = Shows Prescription 0xC22D71 - 37 = Shows Eyeball Frog 0xC22D72 - 38 = Shows Eyedrops 0xC22D73 - 39 = Shows Claim Check  0xC22D74 - 09 = Fire Arrow 0xC22D75 - 0A = Ice Arrow 0xC22D76 - 0B = Light Arrows  0xC22D77 - 04 = Swings Sword (Kokiri Sword) 0xC22D78 - 03 = Swings Sword (Master Sword) 0xC22D79 - 05 = Pulls out Two-Handed Sword  Admittedly finding use for these are a bit trickier, but maybe someone will have a use for them? For instance you can replace Farore's Wind and Nayru's Love functionality for any of the unused arrows (Values 0C,0D,0E) Link to comment Share on other sites More sharing options...
mzxrules Posted May 20, 2013 Share Posted May 20, 2013 Well, I did follow the link and I did click on the ocarinabot, but all it seemed to give me was a list of actors in a spreadsheet....not sure how to use that program really, and I didn't see a readme.It's not a program, it's an excel file that requires either Microsoft Excel or Open Office to view. You need to click the tabs on the bottom to switch between sheets. I didn't think I would need to add a readme on how to use a spreadsheet program.*shrug* To me, one is always exiting a scene, so it makes sense logically to call them exits rather than confuse newbies the difference between "exits" and "entrances". It's easier to tell them "you're always exiting something."EDIT again: Really, the exit/entrance thing to me is like the object/group thing people do.Object vs Group is a completely different thing because you're trading one generic term (group) for an even more generic term (object). An entrance CLEARLY has a functional difference than an exit, and thus should be properly expressed. You are not really helping by not taking the extra effort in explaining the difference. Link to comment Share on other sites More sharing options...
Three_Pendants Posted May 20, 2013 Author Share Posted May 20, 2013 The difference is that exits have entrances defined within them which is how you get to another map, hence the "Entrance" byte  in the exit tables. Every Exit Must Have An Entrance and Vice-Versa. You exit from one map into another, conversely you can argue that you Enter one map from another. There is no right or wrong answer in this and to continue to push your point seems like trying to push intellectual superiority over something as simple as a term.  This is sophistry, let people say what they will. Trying to shove this down people's throats will do nothing but end in disdain. Link to comment Share on other sites More sharing options...
mzxrules Posted May 21, 2013 Share Posted May 21, 2013 Three_Pendants, on 20 May 2013 - 18:19, said: The difference is that exits have entrances defined within them which is how you get to another map Incorrect. Exits (whether it's a collision polygon, actor, code.asm) do not define an entrance, they merely contain a single index value. It is the so called "Exit List" table which defines the entrances. Without it, the index value has no meaning. The table is what gives meaning to the index value in the first place, and thus to understand and describe what the index value is representing, you must understand what the table is representing because the index value is merely a key into that data.  And this the heart of my problem. You (and many others) are not understanding that it is the data that the index is representing that defines it, not how the index is being used.  What data does the table hold? A scene, a position.  Given that data alone, can you always determine what entrance you will be starting from? Yes, provided that the same scene header is used.  Given that data alone, can you always determine what exit you used to reference the data? No, because even if you had only one exit take you to a particular entrance, the data within the table is not enough to uniquely define what exit you came from (ex. only one "exit" can take you to the title screen entrance (0x00D4), but 0x00D4 has the same Scene/Position pair as 0x00CD, which is an entrance you're placed at after another cutscene).  And that is why it's incorrect to say that http://wiki.spinout182.com/w/Debug_ROM:_Exit_List is a table of exits.  And it's not because I want to show off some intellectual superiority, it's because when I first started looking through to Spinout's wiki, the Exit List made it harder for me to understand how the game worked, and harder to explain the things I was observing with the Wrong Warp glitch. Link to comment Share on other sites More sharing options...
Three_Pendants Posted May 21, 2013 Author Share Posted May 21, 2013 It is a given that a table would hold a scene and position used by moving from one place to another. You are not wrong to call it an Entrance, but others are not wrong to call it an Exit. It can be argued that these values can only be accessed from exiting an area. You are always leaving one place and going to another and the opposite is true, you can always say that you are exiting and leaving. That there is an entrance variable within the exit table which determines position would mean to me at least that they would be considered entrance as that is how they appear.  In the example you give above it is just as easy to say it is a "Cutscene Exit", that is how JSA has defined the term for nearly half a decade now. It is a cutscene that is accessed by leaving an area with those coordinates and special instructions to carry out a cutscene.  Again, you are not wrong to label these things as entrances, but others are not wrong to call them exits. In the end it all comes down to preference. if calling them entrances helps you better comprehend it, that's great! Continue to use that term in your documentation as it helps you better understand it. If people see your point of view on it they will begin to call it that without any further prodding.  There is the other point of view of an exit that is equally viable though. Link to comment Share on other sites More sharing options...
mzxrules Posted May 21, 2013 Share Posted May 21, 2013 It is a given that a table would hold a scene and position used by moving from one place to another. You are not wrong to call it an Entrance, but others are not wrong to call it an Exit.Except they are wrong, for the reasons above.It can be argued that these values can only be accessed from exiting an area.And it would be a nonsensical argument. The contents of this message can only be accessed via web browser, but you wouldn't call it a Google Chrome message (or your browser of choice) would you?Again, it doesn't matter how you access the values, what matters is the information that is actually being stored.In the example you give above it is just as easy to say it is a "Cutscene Exit", that is how JSA has defined the term for nearly half a decade now. It is a cutscene that is accessed by leaving an area with those coordinates and special instructions to carry out a cutscene.But it's cleaner to say that the 00CD + FFF3 pair defines the exit, and the 00D4 record defines the entrance, because the 00CD + FFF3 pair is what is pushed by the exit, while the 00D4 record that is pulled is used to facilitate spawning within a scene, as again the 00D4 record has nothing to do with the cutscene or the exit directly. Link to comment Share on other sites More sharing options...
Jason777 Posted May 21, 2013 Share Posted May 21, 2013 If it works for you, that's cool; keep it that way. If you really do feel that it is correct then perhaps you can get people to quit using "exit" as the term to define it and use "entrance" instead (like the change from "group" to "object"). In the, end people have been using that term for so long that it may be difficult to replace at this point.However, for now... You exit from one map into another, conversely you can argue that you Enter one map from another. There is no right or wrong answer in this and to continue to push your point seems like trying to push intellectual superiority over something as simple as a term.This is sophistry, let people say what they will. Trying to shove this down people's throats will do nothing but end in disdain. 1 Link to comment Share on other sites More sharing options...
mzxrules Posted May 21, 2013 Share Posted May 21, 2013 Slept on it, think I can figure out a way to explain it easier to you since you guys are still not understanding the difference. Â Say you were able to add new records to the table. How many new exits do you add to the game if you add 1, 2, 20 records? How many exits do you lose if you delete 1, 2, 20, all 0x614 records? The correct answer is 0, because the table DOES NOT DEFINE AN EXIT. Regardless of whatever you do to the table the exits will still exist in code, in the scene data, in actors. If you delete a record that an exit was referring to it would cause a garbage result, but the exit IS STILL THERE AND IS FUNCTIONAL. Â Conversely, if you define a new exit through code or by editing a scene scene, without modifying the table, you do not define a new entrance in which to spawn into a scene. You cannot spawn anywhere else that is not already defined by the table (unless you do something stupid and read past the table). If you delete an exit without modifying the table, you do not delete an entrance. You may get to a point where you can no longer access all the entrances, but they will still exist. Â The table is not a list of exits, therefore an index value to the table is not an exit indexer. Link to comment Share on other sites More sharing options...
Three_Pendants Posted June 22, 2013 Author Share Posted June 22, 2013  I have some good news for those who want to add that extra bit of challenge to their game. In looking for how swords are considered Two-Handed (no luck on that yet) I came across the amount of hits the Giant's Knife has left... it was right next to Rupees the Entire Time.  There is a caveat though as you can imagine, the game doesn't write any data to that spot when the game begins and only writes it when the Giant's Knife is purchased. To get around that for File 1 go to 0xBA176E and if it is not already 0008 (or whatever number of hits you want the desired sword to last for) change it to 0008. In File2/3 go to 0xBA16B2 and change the 0000 that is there to any amount you like and that will be the breaking point of your chosen sword.  Now when the Giant's Knife breaks several things happen. One the icon becomes 55,  0xAFBBE0 -  240E0055 -  Broken Giant's Knife, you think you might be able to set it to FF to have the sword break and be done with it, right? If only... The game does not allow the value of FF to be on the B Button and reverts it to 00 which is a Deku Stick. This likely has something to do with their Easy Swordless Link fix. To get around that set the value at...  0xAFAAF4 - 240D00FF to 240D0000, this will nullify the auto-reversion of FF to 00.  Secondly the Equipment Value will change, now this is a dynamic number as the game is quite flexible with what equipment you currently have, but only uses one half-byte to express this so the ordering is a bit... strange.  0xAFBBAE - 24090008 - This is a difficult matter to get a grasp on, it appears to be adding what appears to be an 8 but the value changes in many different places to reach a set value. I'm afraid I can't figure this part out, but hopefully someone else can. Once that is figured out the sword can be erased without worry.   And to change what weapon uses the Giant's Knife countdown bytes you would change...  0xC11A2C - 24010005 (Giant's Knife)  You can change this to 0004 (Kokiri Sword) or 0003 (Master Sword) to have those weapons correspond to the countdown.  Now while it's not perfect, it is a start to getting these matters more fully explored. Link to comment Share on other sites More sharing options...
Strati Posted June 22, 2013 Share Posted June 22, 2013 I have a guess on what that 8 may represent.  If you access the debug mode on the start menu by pressing L, go to "equip" and change the first digit, that will change the swords you have. Each C button changes one of the bits for that digit.  C< changes 0001, turning the Kokiri Sword on/off; Cv changes 0010, for the Master Sword; C> changes 0100, for the Giant's Knife; C^ changes 1000, for the Broken Giant's Knife - being the 8 value being added.  Note: If you leave only the 8 bit on, the equipment screen will show the broken sword, but won't let you put the cursor over it. To have the broken giant's knife usable you need both the 4 and 8 bits activated. Link to comment Share on other sites More sharing options...
Three_Pendants Posted June 23, 2013 Author Share Posted June 23, 2013 An interesting theory Strati, unfortunately the game does very little to back it up in any meaningful manner 4+8 would equal C after all, that is true but the correlation... I believe it means I am missing a 4 or a C somewhere that should likely be nulled or changed to make this work properly.  In any case do I have some exciting news today!  Last night I discovered an (as of my knowledge) unknown Debug Message to appear on screen which seems like it would be useful to me, if only I could get it to actually show up without half-berserking the game.    I managed to get these to show up in their appropriate places in RAM but not on screen.  EDIT: Looks like I was mistaken, Seems that XDaniel saw this a while back and located it without any issue. It was at 210BA5, just set a 01 there. Haha, I feel like an idiot for missing that.  But now for the exciting Modding News! I've found the MP Cost for the three spells (and the MP Cost for the three deleted spells as well!) They were in such a strange location, they were located alongside the magic animmations.  0xC23230 - 0C18180C - Deleted Spell 1 is 30 (0C)/Deleted Spell 2 is 31 (18)/ Deleted Spell 3 is 32 (18)/Farore's Wind MP Cost is 33 (0C) 0xC23234 - 180C0000 - Nayru's Love MP Cost is 34 (18) / Din's Fire MP Cost is 35 (0C)  Remember that all spells are actually double of what their MP Cost is claimed. 0C = Dec. 12 = 06 in-game standards. 18 = Dec. 12 = 24 in game standards. The player starts with 48 MP, rather than the 24 the game seems to try and says it does.  To come along with this news is something any modder will be happy to have...  The Timer to Nayru's Love to make it a Not-So Broken Spell!   ROM 0xF3613C - 286104B0 - Nayru's Love Timer ROM 0xF36150 - 286104B0 - Nayru's Love Timer  Change 04B0 to what you will and that will become the new timer for Nayru's Love. Now it can be modified, rather than thrown out of hacks all together for being absolutely broken!  Next is some researching into healing items like Fairies and Potions with some usable results.  0xC1DE40 - 240F0140 - Amount of HP for a Bottled Fairy to Heal (0140 = 200 in Decimal, 20 Hearts, can be changed to anything desired)  0xC1DA14 - 24080140 - Amount of HP healed from Red Potion/Blue Potion.  0xC1DA48 - 240B0050 - Amount of HP healed from Milk/Half-Milk.  It is clear from this that they intended Fairies to heal a different amount one point in production, otherwise they would not have separated them in this manner. I still need to find the Poe's healing (and hurting) values since they don't follow the usual avenues, but that would be the only healing item left, leaving only Hearts, Great Fairies and the Ganondorf Heal, I believe.  Next update I will hopefully have the MP Cost of the Arrows and the Spin Attack down as well.   EDIT: While I don't have the MP Cost of Fairies, I can say for certain that Bottled Fairies and Reviving Fairies have two different healing values.  0xC12A74 - 240A0140 - Reviving Fairies Healing Amount (0xC12A74 in ROM)  But more importantly I have taken apart the routine for how the game searches and selects the Revival Item.  If you're going to use this, make sure to Change All of It. Problems can arise, or it simply won't work if you change one portion but not another.  0x86C8C - 24040018 - Item Required for Link to Revive when killed. (0018 Bottled Fairy) (ROM: 0xAFDE2C) 0x86C9C - 90EF0074 - Looks for Address 15E6E6 (Starts from the address of 15E672, items begin at 15E6D4 which is 0062. It repeats this process four times to search one word (4 bytes)) (ROM:0xAFDE3C) 0x86CC0 - 24190014 - The Item the C-Button will Become (0014 Empty Bottle) (ROM:0xAFDE60) 0x86D20 - 24090014 - The Item the Inventory Slot will Become (0014 Empty Bottle) (ROM:0xAFDEC0) 0x86D2C - A0E90074 - (As above with 0x86C9C except for what it will become) (ROM: 0xAFDECC)  0x86D3C - 28410004 - The amount of times it will repeat looking at a byte sequence. Change this to 19, if you plan on changing the location of the Revival Item) (ROM:0xAFDEDC)   Sorry about the odd formatting. Since all of these need to be changed at the same time, I needed to have their RAM addresses immediately handy for testing.  Now the purpose of this is to have a different revival item, that is not the Fairy.  Say for instance you wanted to turn "Magical Beans" into... "Crazy Tracy's Medicine".  You would change 24040018 into 24040010. From Bottled Fairy to Magical Beans You would change 90EF0074 to 90EF0062 so that it will start from the beginning of the Item List. Presumably the Item would erase, at 24190014 change that to 241900FF to erase it if on a C-Button. Do the same with 24090014. With A0E90074 change that to 0062 so that the replacement routine can start at the beginning of the inventory as well. Change 28410004 to 28410019 so that the game will scan the entirety of the inventory instead of just four bytes.  And there you have it!  This kind of modification works great with mods that don't involve Navi or a fairy guide, (since that spawn also depends on whether the reviving fairy will appear) For those that do... well I'll see if I can't find something.  2 Link to comment Share on other sites More sharing options...
Strati Posted June 23, 2013 Share Posted June 23, 2013 An interesting theory Strati, unfortunately the game does very little to back it up in any meaningful manner 4+8 would equal C after all, that is true but the correlation... I believe it means I am missing a 4 or a C somewhere that should likely be nulled or changed to make this work properly.  Here's what I could take from the code (starting at 800849EC on RAM - for me at least): LUI A1, 0x8012 ADDIU A1, A1, 0x7120 A1=80127120 //Multiples Table?LUI V1, 0x8016 LUI V0, 0x8012 LBU V0, 0x71F0 (V0) v0= ub *(801271F0) = 00 //Defines Type of Equipment (Boots, Tunic, Shield or Sword)LW T7, 0x0008 (A1) t7= *(80127120 + 8) = 4ADDIU V1, V1, 0xE660 v1= 8015E660 //Variables OffsetLHU T6, 0x009C (V1) t6= uh*(8015E660 + 9C) = 7777 //Current Equipment ( 7 = 0111 = -B.G.Kn + G.Kn + M.Sw + K.Sw)ADDIU T1, R0, 0x0008 t1= 8SLLV T8, T7, V0 t8= 4 << 0 = 4 //Would Shift to the correct Equipment Type's Half-byteLW T4, 0x000C (A1) t4= *(80127120 + C) = 8SLLV T2, T1, V0 t2= 8 << 0 = 8OR T0, T6, T8 t0= 7777 OR 0004 = 7777 // 0111 OR 0100 = 0111 : Confirms the Giant's Knife bit is TrueXOR T3, T0, T2 t3= 7777 XOR 0008 = 777F // 0111 XOR 1000 = 1111 : Switches the BrokenGK bit's value ANDI T5, T3, 0xFFFF t5= 777F AND FFFF = 777F //(t5 = t3)ADDIU SP, SP, 0xFFE8 SP =- 24SH T0, 0x009C (V1) h*(8015E660 + 9C) = 7777 //Stores Old Equipment StatusAND T7, T4, T5 t7 = 0008 AND 777F = 0008 //1000 AND 1111 = 1000: Verifies a new difference?SW RA, 0x0014 (SP) [w5] = RABEQ T7, R0, 0x80084A4C if t7 = 0 goto L1 //if equipment didn't change?SH T3, 0x009C (V1) {h*(8015E660 + 9C) = 777F} //Writes New EquipmentADDIU T6, R0, 0x0055 t6= 55 //55 = Broken Sword IconBEQ R0, R0, 0x80084A54 goto L2SB T6, 0x0068 (V1) { b*(8015E660 + 68) = 55} //Currently equipped Item on B = Broken G.Knife-----L1ADDIU T8, R0, 0x003D t8 = 3D //3D = GK IconSB T8, 0x0068 (V1) { b*(8015E660 + 68) = 3D} //Currently equipped Item on B = Giant's Knife-----L2JAL 0x80084A6C goto L3OR A1, R0, R0 { A1 = 0 }LW RA, 0x0014 (SP) RA = [w5]ADDIU SP, SP, 0x0018 SP =+ 18JR RA goto RA-----L3I'll do better and complete this with the solution for changing the Giant's Knife, wait for it.  EDIT:  All right, coming from Three_Pendants' instructions, here's what you do to erase the Giant's Knife once broken:  0xAFAAF4 - 240D00FF to 240D0000, this will nullify the auto-reversion of FF to 00.From 0xAFBBB4 to 0xAFBBE0, Paste Write: 10000004 01D84026 00000000 00000000 00000000 27BDFFE8 A46E009C 01C87826 AFBF0014 11E00004 A468009C 240E00FF 1 Link to comment Share on other sites More sharing options...
Strati Posted June 24, 2013 Share Posted June 24, 2013 We have improved the code to have any sword to be breakable and erase it from the inventory once it happens. Three will be making and posting patches for each sword, while I got the job of explaining the asm changes.  First of all, the change in 0xAFAAF4 from FF to 00 was causing the HUD to malfunction, changing the opacity of some buttons and sometimes making them not usable at all. Later, Three found out changing it to FE instead made things work normally.  Then again... And to change what weapon uses the Giant's Knife countdown bytes you would change...  0xC11A2C - 24010005 (Giant's Knife)  You can change this to 0004 (Kokiri Sword) or 0003 (Master Sword) to have those weapons correspond to the countdown. The other ASM changes are in the same code I posted above. Here's the modified code using the Giant's Knife as example:  800849EC: LUI A1, 0x8012 A1=8012----800849F0: ADDIU A1, A1, 0x7120 A1=80127120 //Multiples Table?800849F4: LUI V1, 0x8016 v1=8016----800849F8: LUI V0, 0x8012 v0=8012----800849FC: LBU V0, 0x71F0 (V0) v0= ub *(801271F0) = 00 //Defines Type of Equipment80084A00: LW T7, 0x0008 (A1) t7= *(80127120 + 8) = 4 // 0008 for the GK, 0004 = MS and 0000 for the KS80084A04: ADDIU V1, V1, 0xE660 v1= 8015E660 //Variables Offset80084A08: LHU T6, 0x009C (V1) t6= uh*(8015E660 + 9C) = 7777 //Current Equipment80084A0C: ADDIU T1, R0, 0x000B t1= B //This value will serve 2 purposes80084A10: SLLV T8, T7, V0 t8= 4 << 0 = 4 //Would Shift to the correct Equipment Type's Half-byte80084A14: SH t1, 0x0036 (V1) h*(8015E660 + 36) = B //Remaining Sword Hits = 0xB. This value doesn't matter, as long //as it differs from 0. This prevents the GK showing as broken //and will be reset once you buy a new sword.80084A18: LUI t5, 0x8022 80084A1C: ADDIU t5, t5, 0x29B9 t5= 802229B9 //This code redirects the cursor to L in the start menu80084A20: SB t1, 0(t5) b*(802229B9 + 0) = B //to avoid the deleted sword to be re-equipped80084A24: XOR T0, T6, T8 t0= 7777 XOR 0004 = 7773 //Removes the chosen sword from the equipment half-byte 80084A28: ADDIU SP, SP, 0xFFE8 SP =- 2480084A2C: SH t6, 0x009C (V1) h*(8015E660 + 9C) = 7777 //Stores Old Equipment Status 80084A30: AND T7, t6, T0 t7 = 7777 XOR 7773 = 0004 //Checks a difference in the equipment80084A34: SW RA, 0x0014 (SP) [w5] = RA80084A38: BEQ T7, R0, 0x80084A4C if t7 = 0 goto L1 //if equipment didn't change?80084A3C: SH T0, 0x009C (V1) {h*(8015E660 + 9C) = 7773} //Writes New Equipment80084A40: ADDIU T6, R0, 0x0055 t6= FF //FF = Empty Icon80084A44: BEQ R0, R0, 0x80084A54 goto L280084A48: SB T6, 0x0068 (V1) { b*(8015E660 + 68) = 55} //Currently equipped Item on B = NoneL180084A4C: ADDIU T8, R0, 0x003D t8 = 3D80084A50: SB T8, 0x0068 (V1) { b*(8015E660 + 68) = 3D} //Currently equipped Item on B = Giant's Knife[...]For the ROM, paste write this, beginning at 0xAFBBAC: 2409000B 004FC004 A4690036 3C0D8022 25AD29B9 A1A90000 01D84026 27BDFFE8 A46E009C 01C87826 AFBF0014 11E00004 A468009C 240E00FF 3 Link to comment Share on other sites More sharing options...
Three_Pendants Posted June 25, 2013 Author Share Posted June 25, 2013 (edited) As Strati has posted above it took us roughly two days but we've nearly perfected sword breaking. Reacquiring the Broken Sword is not our concern though and there are a variety of hacks and information to make it work the way you particularly want it.  It is included in the .ppf's already but one thing that Strati did not mention is the Secondary Sword check, Yes Nintendo really fixed Swordless Link by forcing a game-breaking Deku Stick into Adult Link's hands anytime the item info reads FF when you press pause, I guess if the first check failed? I have no idea. That was at "0x84C44 - 240400FF - Secondary pointer which automatically makes the value on B if it reads FF to become 00 when pause is pressed.) (ROM: 0xAFBDE4)"  And now the three patches. There will be a patch for each sword, and from there you can use the available notes to use that as you will.  http://depositfiles.com/files/c65wy8i6o - Kokiri Sword Break Patch http://depositfiles.com/files/h87zgnr3t - Master Sword Break Patch http://depositfiles.com/files/j0d4ym015 - Giant's Knife Break Patch.  We may have a few more interesting projects in the works so keep an eye out!  EDIT: How careless of me to say that reacquiring the sword is not our concern! I should have known OoT would throw a curve ball. For more information about what to change and make your new breakable sword seem legitimate please go to this thread...  https://www.the-gcn.com/topic/2494-zelda-oot-npc-functionality-project/?do=findComment&comment=39633 Edited June 25, 2013 by Three_Pendants 1 Link to comment Share on other sites More sharing options...
Three_Pendants Posted June 25, 2013 Author Share Posted June 25, 2013 Sme more miscellaneous information. Â 0x8DAB8 ROM: 0xB04C58 - 950E0070 - The location (using 15E660 as a base) the game searches for to find the Goron Tunic. (Originally points to 15E6D0) 0x8DAC8 ROM: 0xB04C68 - 24010002 - The check to see if the tunic Link is wearing is the Goron Tunic for hot areas. Â 0x8DB14 ROM: 0xB04CB4 - 95180070 - The location (using 15E660 as a base) the game searches for to find the Zora Tunic (Originally points to 15E6D0) 0x8DB24 ROM: 0xB04C54 - 24010003 - The check to see if the tunic Link is wearing is the Zora Tunic for underwater. Â 0x8E9D4 - ROM: 0xB05B74 - 8C42E664 - Age check location for the functionality of the Hylian Shield.(Must be altered from a breakpoint) When the check is changed or removed, Young Link will wield the Hylian Shield like a normal shield, but the game has no graphic to show for this so graphical entry points would need modified to have that work perfectly. Link to comment Share on other sites More sharing options...
Recommended Posts