diff --git a/README.md b/README.md index bb61cdb..5d87e81 100755 --- a/README.md +++ b/README.md @@ -1,10 +1,15 @@ -# Majora's Mask resources +# Miscellaneous Zelda 64 Resources -i like to muck around in this game's memory. +i like to muck around in the memory of these games. + +# Majora's Mask + +for brevity, all addresses written here are given for the original US version. +refer to the spreadsheet or Lua tables for their equivalents in other versions. ## spreadsheets -i put together some sheets to see if glitches could have desirable results. +i put together some sheets to dump data in. some of them can be used to predict the result of glitches. * [Memory Addresses][gs_addrs] updates more frequently than [MM addrs.lua.][noice] @@ -12,7 +17,7 @@ i put together some sheets to see if glitches could have desirable results. * [Get Item Manipulation][gim] mzxrules did the original OoT one, i just jammed in MM's data for the item table and chest contents. *spoilers:* no desirable results besides light arrows, if it were even possible. - potential crashes are not taken account for. + _potential crashes are not taken account for._ * [Entrance Data][ed] this is a huge laggy mess that brings google docs to its knees. @@ -24,27 +29,14 @@ i put together some sheets to see if glitches could have desirable results. [gim]: https://docs.google.com/spreadsheets/d/17LsLbF6aRePVRxisui8azPtDBfPmjugWIf91wPuXTsY [ed]: https://docs.google.com/spreadsheets/d/1e9kDyAW0gxXHFWS-GNEtVIo-rp39wQJJOtf3B0ehhqY -## memory - -link's struct begins at 801EF670 (US 1.0), and is some length long. -i just pretend it's 0x4000 in size, since that's the most you can jam in a save file. - -two regions of 0x960 bytes are allocated for all the scene flags in the game. -the first (801EFAE0 US 1.0) is loaded from save files, the second (801F35D8 US 1.0) is used for in-game changes. -basically, edit the first for save hacking, and the second for in-game hacking. - -[each area in the game][areas] uses 0x14 bytes of scene flags. -this implies there's 0x78 possible areas: 0x78\*0x14 = 0x960. - -[areas]: https://docs.google.com/spreadsheets/d/1e9kDyAW0gxXHFWS-GNEtVIo-rp39wQJJOtf3B0ehhqY/edit#gid=2120585358 - ## save files -save files are just memory dumps of link's struct. -regular SoT saves are 0x2000 in size, owl saves are 0x4000. -owls use the extra space primarily (exclusively?) to store the pictograph picture. +save files are just memory dumps of some important data. save data is loaded into 801EF670, and extends roughly 0x4000 bytes. -note that some values don't get copied when reading/writing save files, even owl saves. +in the versions with owl saves, regular saves are 0x100C in size, and owl saves are 0x3CA0. +owls use the extra space primarily to store the pictograph picture. + +note that some values don't are reset when reading/writing save files, even owl saves. the game checks a checksum, and for the text "ZELDA3". each slot has one backup copy of itself, though they don't seem to be used? @@ -95,9 +87,51 @@ sometime i'll bother checking what the bombers/lottery codes are for these. * [Bizhawk US 1.0 tampered](https://dl.dropboxusercontent.com/u/9602837/temp/bizhawk%20saves.zip ) one slot with a bunch of 00s, another with a bunch of FFs. +## scene flags + +two regions of 0x960 bytes are allocated for all the scene flags in the game. +the first (801EFAE0) is loaded from save files, the second (801F35D8) is used for in-game changes. +basically, edit the first for save hacking, and the second for in-game hacking. + +each scene in the game uses 0x14 bytes of scene flags. +this implies there's 0x78 possible scenes: 0x78\*0x14 = 0x960. + +the current scene's flags are always copied into the same place in memory. +they appear in a different order than in save files, however. + +(four bytes each) +803E8978 corresponds to offset 0x4 in the save file. +803E897C corresponds to offset 0x8. +803E8988 corresponds to offset 0x0. +803E898C corresponds to offset 0xC. +803E8994 corresponds to offset 0x10. + ## bitfields -### link's flags +## scenes visited + +scenes with one-time intro cutscenes store their flags at 801F0568. +many flags are documented, courtesy of fkualol: + +``` +bit 00: Termina Field +bit 01: Ikana Graveyard +bit 03: Gorman Racetrack +bit 06: Snowhead +bit 07: Southern Swamp +bit 09: Deku Palace +bit 11: Pirates' Fortress +bit 12: Zora's Domain +bit 16: Stone Tower +bit 17: Inverted Stone Tower +bit 18: West Clock Town +bit 19: East Clock Town +bit 20: North Clock Town +bit 21: Woodfall Temple +bit 22: Snowhead Temple +``` + +### link's status here's [an incomplete document on some of link's bitfields][linkfields] for JP 1.0.