1
0
Fork 0
mirror of https://github.com/notwa/mm synced 2024-06-01 10:53:05 -07:00
mm/Lua
2015-12-18 15:18:08 -08:00
..
addrs remove read-3/write-3 functions 2015-12-03 02:50:31 -08:00
classes fix actor lister 2015-12-11 00:41:57 -08:00
data add an observatory flag 2015-12-11 00:34:02 -08:00
inject improve spawning 2015-12-18 14:04:44 -08:00
menus add half-broken race file creator 2015-11-15 19:59:10 -08:00
.gitignore add asm injection scripts 2015-12-16 18:04:57 -08:00
actor lister.lua fix actor lister 2015-12-11 00:41:57 -08:00
boilerplate.lua remove read-3/write-3 functions 2015-12-03 02:50:31 -08:00
cheat menu.lua don't unpause the game if it wasn't already 2015-12-11 00:36:29 -08:00
classes.lua implement greedy menu input handler 2015-11-14 16:30:04 -08:00
count flags.lua get older scripts up to speed; refactor 2015-05-01 11:15:53 -07:00
depend.lua remove luanet crap 2015-11-27 21:37:48 -08:00
event flag monitor.lua one class per file 2015-05-25 20:10:00 -07:00
exit calculator.lua finish up exit dumper 2015-08-12 18:20:07 -07:00
extra.lua dump ordered tables to be git-friendly 2015-05-01 11:29:43 -07:00
flag manager.lua many more menus 2015-11-12 09:09:14 -08:00
inject.lua refactor inject as a function 2015-12-18 15:18:08 -08:00
m64p entry.lua rename main.lua to be less misleading 2015-12-17 16:08:33 -08:00
menu classes.lua allow a single function for simple callbacks 2015-11-15 09:43:29 -08:00
menu input handlers.lua make L close menu in greedy mode 2015-11-14 16:42:50 -08:00
messages.lua update for new gui.text behaviour 2015-12-11 00:44:18 -08:00
misc monitor.lua misc monitor tweaks 2015-11-25 03:02:21 -08:00
movement tests.lua movement test "works" now on oot 2015-05-25 19:21:35 -07:00
oneshot.lua disable this until i bother writing a 5.3 bit op wrapper 2015-12-11 00:45:22 -08:00
oot memory editor monitor.lua move save/loading to Monitor 2015-05-03 10:37:45 -07:00
pt.lua add pt 2015-12-16 02:55:20 -08:00
race.lua race tweaks 2015-11-15 20:04:49 -08:00
README.md (attempt to) abide to calling conventions 2015-12-17 22:59:32 -08:00
room debug.lua room stuff for oot; fixes 2015-05-25 22:17:37 -07:00
scene flag monitor.lua add crappy old scene flag monitor 2015-05-25 20:25:30 -07:00
serialize.lua typo 2015-05-10 14:36:42 -07:00
test chests.lua Revert "Revert "update for new readbyterange behaviour"" 2015-12-11 00:38:50 -08:00
watch animations.lua reverse serialize's arguments 2015-05-03 08:35:50 -07:00

Zelda 64 Lua Scripts

These are written for the latest revision of Bizhawk, but some compatiblity is provided for a fork of mupen64plus with Lua support.

Note that some scripts lack full support for Ocarina of Time.

Scripts

actor listor.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; refer to the comment near the start of the script. 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

Dumps information on the current exit value; scene name, entrance, entrance with unused offset; using human-readable English names.

Provides the function dump_all_exits(fn) which produces a large csv file.

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.

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

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.

watch animations.lua

Monitors Link's used animations.

Libraries

Or rather, scripts that have no functionality on their own.

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 — look there for basic usage.

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.

Data

Any data (that isn't provided by the games themselves) is located in the data directory.

Much of this should be self-explanitory. However, files beginning with an underscores contain serialized tables (generally from monitor scripts) and usually won't make sense out of context.