mirror of https://github.com/zeldaret/mm.git
				
				
				
			Subrepos update (#1208)
* git subrepo pull tools/asm-differ --force
subrepo:
  subdir:   "tools/asm-differ"
  merged:   "ae408664a"
upstream:
  origin:   "https://github.com/simonlindholm/asm-differ"
  branch:   "main"
  commit:   "ae408664a"
git-subrepo:
  version:  "0.4.3"
  origin:   "https://github.com/ingydotnet/git-subrepo.git"
  commit:   "2f68596"
* git subrepo pull (merge) tools/fado --force
subrepo:
  subdir:   "tools/fado"
  merged:   "8d896ee97"
upstream:
  origin:   "git@github.com:EllipticEllipsis/fado.git"
  branch:   "master"
  commit:   "8d896ee97"
git-subrepo:
  version:  "0.4.3"
  origin:   "https://github.com/ingydotnet/git-subrepo.git"
  commit:   "2f68596"
* git subrepo pull tools/graphovl --force
subrepo:
  subdir:   "tools/graphovl"
  merged:   "dab4addae"
upstream:
  origin:   "https://github.com/AngheloAlf/graphovl.git"
  branch:   "master"
  commit:   "dab4addae"
git-subrepo:
  version:  "0.4.3"
  origin:   "https://github.com/ingydotnet/git-subrepo.git"
  commit:   "2f68596"
* git subrepo pull tools/z64compress --force
subrepo:
  subdir:   "tools/z64compress"
  merged:   "43035d97f"
upstream:
  origin:   "https://github.com/z64me/z64compress.git"
  branch:   "main"
  commit:   "43035d97f"
git-subrepo:
  version:  "0.4.3"
  origin:   "https://github.com/ingydotnet/git-subrepo.git"
  commit:   "2f68596"
* git subrepo pull tools/ZAPD --force
subrepo:
  subdir:   "tools/ZAPD"
  merged:   "23929ec93"
upstream:
  origin:   "https://github.com/zeldaret/ZAPD.git"
  branch:   "master"
  commit:   "23929ec93"
git-subrepo:
  version:  "0.4.3"
  origin:   "https://github.com/ingydotnet/git-subrepo.git"
  commit:   "2f68596"
* Revert "git subrepo pull tools/z64compress --force"
This reverts commit 2e487b5008.
			
			
This commit is contained in:
		
							parent
							
								
									c833969ea7
								
							
						
					
					
						commit
						0c3a48ef94
					
				| 
						 | 
				
			
			@ -6,7 +6,7 @@
 | 
			
		|||
[subrepo]
 | 
			
		||||
	remote = https://github.com/zeldaret/ZAPD.git
 | 
			
		||||
	branch = master
 | 
			
		||||
	commit = 5786abbdd2d0fd14907e03575a0bd972c1fe9b28
 | 
			
		||||
	parent = e451a103ba5d14af3dd14acfa54a6b4999fd951f
 | 
			
		||||
	commit = 23929ec9373d28cb298daad4ad7cb468e09c0a46
 | 
			
		||||
	parent = 2e487b5008c129031ab311a3a7bfd42adeb4916b
 | 
			
		||||
	method = merge
 | 
			
		||||
	cmdver = 0.4.5
 | 
			
		||||
	cmdver = 0.4.3
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -569,6 +569,7 @@ void ZTextureAnimation::DeclareReferences(const std::string& prefix)
 | 
			
		|||
						count = 2;
 | 
			
		||||
					}
 | 
			
		||||
					params = new TextureScrollingParams(parent);
 | 
			
		||||
					params->type = entry.type;
 | 
			
		||||
					params->ExtractFromBinary(paramsOffset, count);
 | 
			
		||||
					break;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -582,6 +583,7 @@ void ZTextureAnimation::DeclareReferences(const std::string& prefix)
 | 
			
		|||
 | 
			
		||||
				case TextureAnimationParamsType::TextureCycle:
 | 
			
		||||
					params = new TextureCyclingParams(parent);
 | 
			
		||||
					params->type = entry.type;
 | 
			
		||||
					params->ExtractFromBinary(paramsOffset);
 | 
			
		||||
					break;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,2 +1,4 @@
 | 
			
		|||
.mypy_cache/
 | 
			
		||||
__pycache__/
 | 
			
		||||
.vscode/
 | 
			
		||||
poetry.lock
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,7 +6,7 @@
 | 
			
		|||
[subrepo]
 | 
			
		||||
	remote = https://github.com/simonlindholm/asm-differ
 | 
			
		||||
	branch = main
 | 
			
		||||
	commit = 1236288d1520335c2bfb672078fec65084d7cb5c
 | 
			
		||||
	parent = 2c5690701a350c7e7c3d6252dff925ad65d59910
 | 
			
		||||
	commit = ae408664a89ea4dc70d005d0afc69ac26c938cbb
 | 
			
		||||
	parent = c833969ea79ba31c3103e25e94ef88098c0287de
 | 
			
		||||
	method = merge
 | 
			
		||||
	cmdver = 0.4.3
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
repos:
 | 
			
		||||
-   repo: https://github.com/psf/black
 | 
			
		||||
    rev: 22.1.0
 | 
			
		||||
    rev: 22.3.0
 | 
			
		||||
    hooks:
 | 
			
		||||
    - id: black
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,7 +7,7 @@ Nice differ for assembly code. Currently supports MIPS, PPC, AArch64, and ARM32;
 | 
			
		|||
## Dependencies
 | 
			
		||||
 | 
			
		||||
- Python >= 3.6
 | 
			
		||||
- `python3 -m pip install --user colorama watchdog python-Levenshtein` (also `dataclasses` if on 3.6)
 | 
			
		||||
- `python3 -m pip install --user colorama watchdog levenshtein cxxfilt` (also `dataclasses` if on 3.6)
 | 
			
		||||
 | 
			
		||||
## Usage
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
				
			
			@ -5,7 +5,8 @@ def apply(config, args):
 | 
			
		|||
    config["source_directories"] = ["."]
 | 
			
		||||
    # config["show_line_numbers_default"] = True
 | 
			
		||||
    # config["arch"] = "mips"
 | 
			
		||||
    # config["map_format"] = "gnu" # gnu or mw
 | 
			
		||||
    # config["mw_build_dir"] = "build/" # only needed for mw map format
 | 
			
		||||
    # config["map_format"] = "gnu" # gnu, mw, ms
 | 
			
		||||
    # config["build_dir"] = "build/" # only needed for mw and ms map format
 | 
			
		||||
    # config["expected_dir"] = "expected/" # needed for -o
 | 
			
		||||
    # config["makeflags"] = []
 | 
			
		||||
    # config["objdump_executable"] = ""
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,21 @@
 | 
			
		|||
[tool.poetry]
 | 
			
		||||
name = "asm-differ"
 | 
			
		||||
version = "0.1.0"
 | 
			
		||||
description = ""
 | 
			
		||||
authors = ["Simon Lindholm <simon.lindholm10@gmail.com>"]
 | 
			
		||||
license = "UNLICENSE"
 | 
			
		||||
readme = "README.md"
 | 
			
		||||
packages = [{ include = "diff.py" }]
 | 
			
		||||
 | 
			
		||||
[tool.poetry.dependencies]
 | 
			
		||||
python = "^3.7"
 | 
			
		||||
colorama = "^0.4.6"
 | 
			
		||||
ansiwrap = "^0.8.4"
 | 
			
		||||
watchdog = "^2.2.0"
 | 
			
		||||
levenshtein = "^0.20.9"
 | 
			
		||||
cxxfilt = "^0.3.0"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
[build-system]
 | 
			
		||||
requires = ["poetry-core"]
 | 
			
		||||
build-backend = "poetry.core.masonry.api"
 | 
			
		||||
| 
						 | 
				
			
			@ -6,7 +6,7 @@
 | 
			
		|||
[subrepo]
 | 
			
		||||
	remote = git@github.com:EllipticEllipsis/fado.git
 | 
			
		||||
	branch = master
 | 
			
		||||
	commit = f7efb10a9a65f27e9ccad7ce270234f20d386ac9
 | 
			
		||||
	parent = 90cfafec47fe4b73ad9009e9501e147e86025aa6
 | 
			
		||||
	commit = 8d896ee97d565508755584803c409fc33bb0c953
 | 
			
		||||
	parent = b51c9f4d22d6e7db63700c163418654431a2a61a
 | 
			
		||||
	method = merge
 | 
			
		||||
	cmdver = 0.4.3
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -112,15 +112,15 @@ bool vc_vector_is_equals(vc_vector* vector1, vc_vector* vector2) {
 | 
			
		|||
  return memcmp(vector1->data, vector2->data, size_vector1) == 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
float vc_vector_get_growth_factor() {
 | 
			
		||||
float vc_vector_get_growth_factor(void) {
 | 
			
		||||
  return GROWTH_FACTOR;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
size_t vc_vector_get_default_count_of_elements() {
 | 
			
		||||
size_t vc_vector_get_default_count_of_elements(void) {
 | 
			
		||||
  return DEFAULT_COUNT_OF_ELEMENTS;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
size_t vc_vector_struct_size() {
 | 
			
		||||
size_t vc_vector_struct_size(void) {
 | 
			
		||||
  return sizeof(vc_vector);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,13 +24,13 @@ void vc_vector_release(vc_vector* vector);
 | 
			
		|||
bool vc_vector_is_equals(vc_vector* vector1, vc_vector* vector2);
 | 
			
		||||
 | 
			
		||||
// Returns constant value of the vector growth factor.
 | 
			
		||||
float vc_vector_get_growth_factor();
 | 
			
		||||
float vc_vector_get_growth_factor(void);
 | 
			
		||||
 | 
			
		||||
// Returns constant value of the vector default count of elements.
 | 
			
		||||
size_t vc_vector_get_default_count_of_elements();
 | 
			
		||||
size_t vc_vector_get_default_count_of_elements(void);
 | 
			
		||||
 | 
			
		||||
// Returns constant value of the vector struct size.
 | 
			
		||||
size_t vc_vector_struct_size();
 | 
			
		||||
size_t vc_vector_struct_size(void);
 | 
			
		||||
 | 
			
		||||
// ----------------------------------------------------------------------------
 | 
			
		||||
// Element access
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,7 +15,7 @@
 | 
			
		|||
 | 
			
		||||
#include "version.inc"
 | 
			
		||||
 | 
			
		||||
void PrintVersion() {
 | 
			
		||||
void PrintVersion(void) {
 | 
			
		||||
    printf("Fado (Fairy-Assisted relocations for Decompiled Overlays), version %s\n", versionNumber);
 | 
			
		||||
    printf("Copyright (C) 2021 Elliptic Ellipsis\n");
 | 
			
		||||
    printf("%s\n", credits);
 | 
			
		||||
| 
						 | 
				
			
			@ -88,7 +88,7 @@ static size_t posArgCount = ARRAY_COUNT(posArgInfo);
 | 
			
		|||
static size_t optCount = ARRAY_COUNT(optInfo);
 | 
			
		||||
static struct option longOptions[ARRAY_COUNT(optInfo)];
 | 
			
		||||
 | 
			
		||||
void ConstructLongOpts() {
 | 
			
		||||
void ConstructLongOpts(void) {
 | 
			
		||||
    size_t i;
 | 
			
		||||
 | 
			
		||||
    for (i = 0; i < optCount; i++) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,7 +6,7 @@
 | 
			
		|||
[subrepo]
 | 
			
		||||
	remote = https://github.com/AngheloAlf/graphovl.git
 | 
			
		||||
	branch = master
 | 
			
		||||
	commit = f5fe93d75bb75ea4bea65f62c43f41f6a1e70679
 | 
			
		||||
	parent = 6c5a50ef95f351acc7c4c0455a347a94443adbe1
 | 
			
		||||
	commit = dab4addae0c5db6274ab5daf7780c62c346120a1
 | 
			
		||||
	parent = 5da1ae553569ddb0016d302cfac8c45d9cb22e73
 | 
			
		||||
	method = merge
 | 
			
		||||
	cmdver = 0.4.3
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,7 +18,7 @@ except ModuleNotFoundError:
 | 
			
		|||
script_dir = os.path.dirname(os.path.realpath(__file__))
 | 
			
		||||
config = ConfigParser()
 | 
			
		||||
 | 
			
		||||
func_names = None
 | 
			
		||||
func_names = list()
 | 
			
		||||
func_definitions = list()
 | 
			
		||||
line_numbers_of_functions = list()
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -72,6 +72,19 @@ def capture_setupaction_call_arg(content):
 | 
			
		|||
            transitionList.append(func)
 | 
			
		||||
    return transitionList
 | 
			
		||||
 | 
			
		||||
setaction_regexpr = re.compile(r"_SetAction+\([^\)]*\)(\.[^\)]*\))?;")
 | 
			
		||||
 | 
			
		||||
def capture_setaction_calls(content):
 | 
			
		||||
    return [x.group() for x in re.finditer(setaction_regexpr, content)]
 | 
			
		||||
 | 
			
		||||
def capture_setaction_call_arg(content):
 | 
			
		||||
    transitionList = []
 | 
			
		||||
    for x in re.finditer(setaction_regexpr, content):
 | 
			
		||||
        func = x.group().split(",")[2].strip().split(");")[0].strip()
 | 
			
		||||
        if func not in transitionList:
 | 
			
		||||
            transitionList.append(func)
 | 
			
		||||
    return transitionList
 | 
			
		||||
 | 
			
		||||
# Search for the function definition by supplied function name
 | 
			
		||||
def definition_by_name(content, name):
 | 
			
		||||
    for definition in capture_definitions(content):
 | 
			
		||||
| 
						 | 
				
			
			@ -206,7 +219,11 @@ def addFunctionTransitionToGraph(dot, index: int, func_name: str, action_transit
 | 
			
		|||
    fontColor = config.get("colors", "fontcolor")
 | 
			
		||||
    bubbleColor = config.get("colors", "bubbleColor")
 | 
			
		||||
    indexStr = str(index)
 | 
			
		||||
    funcIndex = str(index_of_func(action_transition))
 | 
			
		||||
    try:
 | 
			
		||||
        funcIndex = str(index_of_func(action_transition))
 | 
			
		||||
    except ValueError:
 | 
			
		||||
        print(f"Warning: function '{action_transition}' called by '{func_name}' was not found. Skiping...", file=sys.stderr)
 | 
			
		||||
        return
 | 
			
		||||
 | 
			
		||||
    dot.node(indexStr, func_name, fontcolor=fontColor, color=bubbleColor)
 | 
			
		||||
    dot.node(funcIndex, action_transition, fontcolor=fontColor, color=bubbleColor)
 | 
			
		||||
| 
						 | 
				
			
			@ -230,7 +247,7 @@ def addCallNamesToGraph(dot, func_names: list, index: int, code_body: str, remov
 | 
			
		|||
        if call in removeList:
 | 
			
		||||
            continue
 | 
			
		||||
 | 
			
		||||
        if setupAction and "_SetupAction" in call:
 | 
			
		||||
        if setupAction and ("_SetupAction" in call or "_SetAction" in call):
 | 
			
		||||
            continue
 | 
			
		||||
        seen.add(call)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -342,10 +359,11 @@ def main():
 | 
			
		|||
    actionIdentifier = "this->actionFunc"
 | 
			
		||||
 | 
			
		||||
    setupAction = func_prefix + "_SetupAction" in func_names
 | 
			
		||||
    setAction = func_prefix + "_SetAction" in func_names
 | 
			
		||||
    arrayActorFunc = match_obj is not None
 | 
			
		||||
    rawActorFunc = actionIdentifier in contents
 | 
			
		||||
 | 
			
		||||
    if not setupAction and not arrayActorFunc and not rawActorFunc:
 | 
			
		||||
    if not setupAction and not setAction and not arrayActorFunc and not rawActorFunc:
 | 
			
		||||
        print("No actor action-based structure found")
 | 
			
		||||
        os._exit(1)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -383,6 +401,8 @@ def main():
 | 
			
		|||
            Create all edges for SetupAction-based actors
 | 
			
		||||
            """
 | 
			
		||||
            transitionList = capture_setupaction_call_arg(code_body)
 | 
			
		||||
        elif setAction:
 | 
			
		||||
            transitionList = capture_setaction_call_arg(code_body)
 | 
			
		||||
        elif arrayActorFunc:
 | 
			
		||||
            """
 | 
			
		||||
            Create all edges for ActorFunc array-based actors
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue