1
0
Fork 0
mirror of https://github.com/notwa/mm synced 2024-05-18 05:23:22 -07:00

update readme

This commit is contained in:
Connor Olding 2016-01-12 16:12:53 -08:00
parent d0ccf16dff
commit 6cda92f07b
2 changed files with 174 additions and 165 deletions

View File

@ -12,11 +12,6 @@ Note that some scripts lack full support for Ocarina of Time.
## Scripts
#### actor lister.lua
Lists actor data onscreen,
and focuses the camera on them.
Actors may be selected using the D-Pad.
#### cheat menu.lua
Provides an onscreen UI for many features.
Has four different input methods;
@ -26,7 +21,59 @@ Generally, it's opened with L and navigated with the D-Pad.
#### count flags.lua
Simply counts the number of scene flags globally set.
#### exit calculator.lua
#### inject.lua
Assembles and injects code into the game.
#### m64p entry.lua
Ignore this for now.
This is a rough interfacing script for passing to mupen64plus,
and serves no purpose on Bizhawk.
#### setup hundred.lua
Instantly gives you all the items in the game, etc.
Does not set scene/event flags,
except the one required for the Great Spin Attack.
#### setup race file.lua
Sets up a race file.
A race file is a save in which the first cycle has been completed,
the Deku Mask has been acquired,
and some other details.
#### test chests.lua
TODO
#### test movement.lua
Tests the fastest form of basic movement in Majora's Mask.
Run it in the Clock Town Great Fairy's Fountain.
### Monitors
#### monitor actors.lua
Lists actor data onscreen,
and focuses the camera on them.
Actors may be selected using the D-Pad.
#### monitor debug memory editor.lua
(Ocarina of Time) Used for determining which values
listed by the in-game debug memory editor are constant.
#### monitor debug text.lua
TODO
#### monitor epona.lua
used to investigate [this glitch with unloading Epona.][eponaglitch]
[eponaglitch]: https://www.youtube.com/watch?v=kX0ZcIS8P84
#### monitor event flags.lua
Monitors event flags,
and announces which bits are being changed,
and if they have ever been seen changing before.
#### monitor exits.lua
Dumps information on the current exit value;
scene name, entrance, entrance with unused offset;
using human-readable English names.
@ -36,175 +83,26 @@ which produces [a large csv file.][csv]
[csv]: https://eaguru.guru/t/_exits.csv
#### movement tests.lua
Tests the fastest form of basic movement in Majora's Mask.
Run it in the Clock Town Great Fairy's Fountain.
#### inject.lua
Assembles and injects an assembly subroutine into the game.
#### oneshot.lua
Instantly gives you all the items in the game, etc.
Does not set scene/event flags,
except the one required for the Great Spin Attack.
#### race.lua
Sets up a race file.
A race file is a save in which the first cycle has been completed,
the Deku Mask has been acquired,
and some other details.
#### room debug.lua
Parses and dumps the currently loaded room headers.
#### m64p entry.lua
Ignore this for now.
This is a rough interfacing script for passing to mupen64plus,
and serves no purpose on Bizhawk.
### Monitors
These scripts look for changes in RAM regions and print them in detail.
These are mostly used for documenation.
#### epona monitor.lua
used to investigate [this glitch with unloading Epona.][eponaglitch]
[eponaglitch]: https://www.youtube.com/watch?v=kX0ZcIS8P84
#### event flag monitor.lua
Monitors event flags,
and announces which bits are being changed,
and if they have ever been seen changing before.
#### scene flag monitor.lua
Monitors the current scene's flags,
and announces which bits are being changed,
and if they have ever been seen changing before.
#### misc monitor.lua
#### monitor misc.lua
Monitors unknown regions of memory.
Currently, this region is a chunk of save data, ignoring known addresses.
#### oot memory editor monitor.lua
(Ocarina of Time) Used for determining which values
listed by the in-game debug memory editor are constant.
#### monitor rooms.lua
Parses and dumps the currently loaded room headers.
#### monitor scene flags.lua
Monitors the current scene's flags,
and announces which bits are being changed,
and if they have ever been seen changing before.
#### watch animations.lua
Monitors Link's used animations.
## Libraries
Or rather, scripts that have no functionality on their own.
See [the README in the lib directory][libs] for information.
#### depend.lua
Meant to override Lua's native `require` function,
to force reloading of the given script.
This is useless outside of development.
In fact, this could cause bugs in code that depends on
`require` yielding the same tables twice.
#### boilerplate.lua
Provides common functions used in the majority of scripts.
This should generally be imported before any other scripts, besides depend.lua.
#### addrs/init.lua
Using boilerplate.lua's functions,
this provides the bulk of the interface to the games.
Note that this particular initialization script populates the global namespace
with `version`, `oot`, `mm`, and most importantly `addrs`.
#### addrs/basics.lua
Returns a table of tables of offsetable common addresses
between every known version of OoT and MM.
**table keys:**
* **link:** the bulk of the player's state in the game;
not to be confused with Link's actor.
most of this is saved to SRAM.
* **global:** global context.
this is passed as an argument to many functions in the game's code
and contains a wealth of miscellaneous game state information.
this is actually allocated on heap, but its address never changes
— except on the file select screen?
* **actor:** Link's actor.
this includes position, rotation, animation status, etc.
Link's actor is the only actor that
has the same address consistently,
as it's always the first one loaded.
#### addrs/versions.lua
Returns a dictionary of md5 and sha1 hashes
of every known version of OoT and MM.
The format of version strings is
`(O|M) (US|JP|EU)(1[0-9]|GC|DE|DB)( MQ)?`,
where:
* O: Ocarina of Time
* M: Majora's Mask
* US: American NTSC (United States)
* JP: Japanese NTSC
* EU: European PAL
* [two digits]: version number of a release build for the N64
* GC: Gamecube
* DE: Demo (includes Debug features)
* DE: Debug
* MQ: Master Quest
#### pt.lua
Dumps Lua tables as pseudo-yaml,
complete with references to prevent recursion.
Invaluable for debugging.
[Its repository is on gist][pt] — look there for basic usage.
[pt]: https://gist.github.com/notwa/13fbddf05f654ba48321
#### extra.lua
Implements the `opairs` iterator function
and its helper functions,
providing iteration by sorted keys in alphabetical order.
#### serialize.lua
Serializes (saves, dumps) Lua tables for later deserialization (loading).
unlike `pt`, this dumps as Lua and cannot handle complicated (recursive) tables.
#### messages.lua
Provides functions for printing onscreen,
such as printing for a given number of game frames.
Also provides deferred printing,
to print to console all at once at the end of a frame,
which works around printing being otherwise slow on Bizhawk.
#### flag manager.lua
Provides basic functions for poking at event flags and scene flags.
#### classes.lua
For lazy people.
Populate the global namespace with all available classes,
excluding menu/interface classes.
#### menu classes.lua
Provides various classes for implementing onscreen menus.
#### menu input handlers.lua
Provides classes for interfacing user inputs with menus.
#### menus/\*
Contains various submenus for `cheat menu.lua`.
#### classes/\*
Contains various classes.
Note that the base `Class` function is defined in `boilerplate.lua`.
[libs]: /Lua/lib/README.md
## Data

111
Lua/lib/README.md Normal file
View File

@ -0,0 +1,111 @@
## Libraries
#### actors.lua
TODO
#### classes.lua
For lazy people.
Populate the global namespace with all available classes,
excluding menu/interface classes.
#### extra.lua
Implements the `opairs` iterator function
and its helper functions,
providing iteration by sorted keys in alphabetical order.
#### flag manager.lua
Provides basic functions for poking at event flags and scene flags.
#### boilerplate.lua
Provides common functions used in the majority of scripts.
This should generally be imported before any other scripts, besides depend.lua.
#### lips.lua
TODO
#### menu classes.lua
Provides various classes for implementing onscreen menus.
#### menu input handlers.lua
Provides classes for interfacing user inputs with menus.
#### messages.lua
Provides functions for printing onscreen,
such as printing for a given number of game frames.
#### pt.lua
Dumps Lua tables as pseudo-yaml,
complete with references to prevent recursion.
Invaluable for debugging.
[Its repository is on gist][pt] — look there for basic usage.
#### serialize.lua
Serializes (saves, dumps) Lua tables for later deserialization (loading).
unlike `pt`, this dumps as Lua and cannot handle complicated (recursive) tables.
Also provides deferred printing,
to print to console all at once at the end of a frame,
which works around printing being otherwise slow on Bizhawk.
[pt]: https://gist.github.com/notwa/13fbddf05f654ba48321
#### setup.lua
TODO
### addrs
#### addrs/init.lua
Using boilerplate.lua's functions,
this provides the bulk of the interface to the games.
Note that this particular initialization script populates the global namespace
with `version`, `oot`, `mm`, and most importantly `addrs`.
#### addrs/basics.lua
Returns a table of tables of offsetable common addresses
between every known version of OoT and MM.
**table keys:**
* **link:** the bulk of the player's state in the game;
not to be confused with Link's actor.
most of this is saved to SRAM.
* **global:** global context.
this is passed as an argument to many functions in the game's code
and contains a wealth of miscellaneous game state information.
this is actually allocated on heap, but its address never changes
— except on the file select screen?
* **actor:** Link's actor.
this includes position, rotation, animation status, etc.
Link's actor is the only actor that
has the same address consistently,
as it's always the first one loaded.
#### addrs/versions.lua
Returns a dictionary of md5 and sha1 hashes
of every known version of OoT and MM.
The format of version strings is
`(O|M) (US|JP|EU)(1[0-9]|GC|DE|DB)( MQ)?`,
where:
* O: Ocarina of Time
* M: Majora's Mask
* US: American NTSC (United States)
* JP: Japanese NTSC
* EU: European PAL
* [two digits]: version number of a release build for the N64
* GC: Gamecube
* DE: Demo (includes Debug features)
* DE: Debug
* MQ: Master Quest
## menus/\*
Contains various submenus for `cheat menu.lua`.
## classes/\*
Contains various classes.
Note that the base `Class` function is defined in `boilerplate.lua`.