mirror of
https://github.com/zeldaret/mm.git
synced 2026-08-22 06:19:54 -04:00
Remove asm-processor in favor of preprocess.sh (#1760)
* Remove asm-processor in favor of preprocess.sh * Remove duplicate CMD_F * preprocess_pragmas gitignore * Mac fixes * Macos + clang as cc check fixes * Need quotes for paths with spaces * Fix bss
This commit is contained in:
@@ -1,83 +0,0 @@
|
||||
#ifndef PREVENT_BSS_REORDERING_H
|
||||
#define PREVENT_BSS_REORDERING_H
|
||||
|
||||
/**
|
||||
* To determine variable order for .bss, the compiler sorts variables by their
|
||||
* "name index" mod 256, where name index is something that, with -g, gets
|
||||
* incremented by struct and variable declarations, typedefs, and file markers,
|
||||
* among else. (Without -g, only variable declarations affects the index.)
|
||||
* This file contains enough dummy declarations to bump the index by 128.
|
||||
* Including it, or removing the include, should fix bss reordering problems
|
||||
* for a file, assuming the name index distance between its first and last bss
|
||||
* variable is at most 128.
|
||||
* Note that if a variable is declared "extern" within a header file, the name
|
||||
* index is taken at that point of the extern declaration. Thus, this include
|
||||
* must come before any such header.
|
||||
*/
|
||||
|
||||
struct Dummy0 { int x; };
|
||||
struct Dummy1 { int x; };
|
||||
struct Dummy2 { int x; };
|
||||
struct Dummy3 { int x; };
|
||||
struct Dummy4 { int x; };
|
||||
struct Dummy5 { int x; };
|
||||
struct Dummy6 { int x; };
|
||||
struct Dummy7 { int x; };
|
||||
struct Dummy8 { int x; };
|
||||
struct Dummy9 { int x; };
|
||||
struct Dummy10 { int x; };
|
||||
struct Dummy11 { int x; };
|
||||
struct Dummy12 { int x; };
|
||||
struct Dummy13 { int x; };
|
||||
struct Dummy14 { int x; };
|
||||
struct Dummy15 { int x; };
|
||||
struct Dummy16 { int x; };
|
||||
struct Dummy17 { int x; };
|
||||
struct Dummy18 { int x; };
|
||||
struct Dummy19 { int x; };
|
||||
struct Dummy20 { int x; };
|
||||
struct Dummy21 { int x; };
|
||||
struct Dummy22 { int x; };
|
||||
struct Dummy23 { int x; };
|
||||
struct Dummy24 { int x; };
|
||||
struct Dummy25 { int x; };
|
||||
struct Dummy26 { int x; };
|
||||
struct Dummy27 { int x; };
|
||||
struct Dummy28 { int x; };
|
||||
struct Dummy29 { int x; };
|
||||
struct Dummy30 { int x; };
|
||||
struct Dummy31 { int x; };
|
||||
struct Dummy32 { int x; };
|
||||
struct Dummy33 { int x; };
|
||||
struct Dummy34 { int x; };
|
||||
struct Dummy35 { int x; };
|
||||
struct Dummy36 { int x; };
|
||||
struct Dummy37 { int x; };
|
||||
struct Dummy38 { int x; };
|
||||
struct Dummy39 { int x; };
|
||||
struct Dummy40 { int x; };
|
||||
struct Dummy41 { int x; };
|
||||
struct Dummy42 { int x; };
|
||||
struct Dummy43 { int x; };
|
||||
struct Dummy44 { int x; };
|
||||
struct Dummy45 { int x; };
|
||||
struct Dummy46 { int x; };
|
||||
struct Dummy47 { int x; };
|
||||
struct Dummy48 { int x; };
|
||||
struct Dummy49 { int x; };
|
||||
struct Dummy50 { int x; };
|
||||
struct Dummy51 { int x; };
|
||||
struct Dummy52 { int x; };
|
||||
struct Dummy53 { int x; };
|
||||
struct Dummy54 { int x; };
|
||||
struct Dummy55 { int x; };
|
||||
struct Dummy56 { int x; };
|
||||
struct Dummy57 { int x; };
|
||||
struct Dummy58 { int x; };
|
||||
struct Dummy59 { int x; };
|
||||
struct Dummy60 { int x; };
|
||||
struct Dummy61 { int x; };
|
||||
struct Dummy62 { int x; };
|
||||
typedef int Dummy63;
|
||||
|
||||
#endif
|
||||
@@ -1,44 +0,0 @@
|
||||
#ifndef PREVENT_BSS_REORDERING2_H
|
||||
#define PREVENT_BSS_REORDERING2_H
|
||||
|
||||
/**
|
||||
* See the explanation at prevent_bss_reordering.h
|
||||
*
|
||||
* Instead of producing 64 dummy declarations, this header only produces 32
|
||||
* dummy declarations
|
||||
*/
|
||||
|
||||
struct Dummy100 { int x; };
|
||||
struct Dummy101 { int x; };
|
||||
struct Dummy102 { int x; };
|
||||
struct Dummy103 { int x; };
|
||||
struct Dummy104 { int x; };
|
||||
struct Dummy105 { int x; };
|
||||
struct Dummy106 { int x; };
|
||||
struct Dummy107 { int x; };
|
||||
struct Dummy108 { int x; };
|
||||
struct Dummy109 { int x; };
|
||||
struct Dummy110 { int x; };
|
||||
struct Dummy111 { int x; };
|
||||
struct Dummy112 { int x; };
|
||||
struct Dummy113 { int x; };
|
||||
struct Dummy114 { int x; };
|
||||
struct Dummy115 { int x; };
|
||||
struct Dummy116 { int x; };
|
||||
struct Dummy117 { int x; };
|
||||
struct Dummy118 { int x; };
|
||||
struct Dummy119 { int x; };
|
||||
struct Dummy120 { int x; };
|
||||
struct Dummy121 { int x; };
|
||||
struct Dummy122 { int x; };
|
||||
struct Dummy123 { int x; };
|
||||
struct Dummy124 { int x; };
|
||||
struct Dummy125 { int x; };
|
||||
struct Dummy126 { int x; };
|
||||
struct Dummy127 { int x; };
|
||||
struct Dummy128 { int x; };
|
||||
struct Dummy129 { int x; };
|
||||
struct Dummy130 { int x; };
|
||||
struct Dummy131 { int x; };
|
||||
|
||||
#endif
|
||||
@@ -6,8 +6,34 @@
|
||||
|
||||
/**
|
||||
* Cutscene scripts are arrays of `CutsceneData` words, including bit-packed integers and floats.
|
||||
*
|
||||
* Most command macros have unused arguments. This is to account for the vanilla assets setting specific values
|
||||
* that don't end up being used by any code. They can safely be set to anything, as they aren't used in the
|
||||
* implementation.
|
||||
*
|
||||
* It is believed the original tool used for cutscenes handled most commands the same way, using similar
|
||||
* fields, and the code would have accessed them using common structs. Given this, the unused values observed in vanilla
|
||||
* assets may appear to map to a variable that makes sense, even if it doesn't end up being used in the code. It
|
||||
* probably isn't garbage data.
|
||||
*
|
||||
* This codebase goes with specialized structs and macros to make it easier to follow the code.
|
||||
* Note this common struct design is still partially reflected in all commands having a `startFrame` and `endFrame`,
|
||||
* when sometimes only the `startFrame` matters (as documented).
|
||||
*/
|
||||
|
||||
/**
|
||||
* CMD_F expects an (IEEE 754) encoded float (colloquially "in hex", such as `0x42280000`),
|
||||
* rather than a C float literal (such as `42.0f`).
|
||||
* Float literals cannot be used because cutscenes are arrays of union type CutsceneData, which may contain integers and floats.
|
||||
* Regardless of CutsceneData having a float member, initializing with a float will cast the float to s32.
|
||||
* Designated initializers (added in C99) would solve this problem but are not supported by IDO (C89 and some extensions).
|
||||
*/
|
||||
#ifdef __GNUC__
|
||||
#define CS_FLOAT(ieee754bin, f) (f)
|
||||
#else
|
||||
#define CS_FLOAT(ieee754bin, f) (ieee754bin)
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Marks the beginning of a cutscene script.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user