From ccc8e8e46b1c5d2fb622a937af4ac08efed9347c Mon Sep 17 00:00:00 2001 From: Ethan Roseman Date: Tue, 25 Jul 2023 00:37:23 +0900 Subject: [PATCH] More autos (#1097) * prep * git subrepo pull --force tools/splat subrepo: subdir: "tools/splat" merged: "aab26aab63" upstream: origin: "https://github.com/ethteck/splat.git" branch: "master" commit: "aab26aab63" git-subrepo: version: "0.4.5" origin: "https://github.com/ingydotnet/git-subrepo" commit: "aa416e4" * fix * blah --- tools/build/configure.py | 9 +- tools/splat/.gitrepo | 4 +- tools/splat/CHANGELOG.md | 26 +- .../disassembler/spimdisasm_disassembler.py | 6 +- tools/splat/requirements.txt | 2 +- tools/splat/segtypes/common/code.py | 38 +- tools/splat/segtypes/common/codesubsegment.py | 9 + tools/splat/segtypes/common/group.py | 30 +- tools/splat/segtypes/n64/img.py | 67 +- tools/splat/segtypes/n64/palette.py | 41 +- tools/splat/segtypes/segment.py | 7 +- tools/splat/split.py | 2 +- tools/splat/util/compiler.py | 5 +- tools/splat/util/options.py | 12 +- tools/splat/util/symbols.py | 13 +- ver/pal/splat.yaml | 4 +- ver/us/splat.yaml | 1236 ++++++++--------- 17 files changed, 809 insertions(+), 702 deletions(-) diff --git a/tools/build/configure.py b/tools/build/configure.py index a5c7f36012..55b99e8b1e 100755 --- a/tools/build/configure.py +++ b/tools/build/configure.py @@ -624,7 +624,11 @@ class Configure: ) # Not dead cod else: - if non_matching or seg.get_most_parent().name not in ["main", "engine1", "engine2"]: + if non_matching or seg.get_most_parent().name not in [ + "main", + "engine1", + "engine2", + ]: cflags += " -fno-common" build( entry.object_path, @@ -846,7 +850,7 @@ class Configure: "msg_combine", ) build(entry.object_path, [entry.object_path.with_suffix(".bin")], "bin") - + elif seg.type == "pm_icons": # make icons.bin header_path = str(self.build_path() / "include" / "icon_offsets.h") @@ -1171,6 +1175,7 @@ if __name__ == "__main__": "version", nargs="*", default=[], + choices=[*VERSIONS, []], help="Version(s) to configure for. Most tools will operate on the first-provided only. Supported versions: " + ",".join(VERSIONS), ) diff --git a/tools/splat/.gitrepo b/tools/splat/.gitrepo index 29549d2cdb..7a5d8a880b 100644 --- a/tools/splat/.gitrepo +++ b/tools/splat/.gitrepo @@ -6,7 +6,7 @@ [subrepo] remote = https://github.com/ethteck/splat.git branch = master - commit = 7869ef2e51a5974fb8e583e45e8b47793d3fecd2 - parent = 03b911bbea92dc1d78522d8de3cc41c2fd45ecbc + commit = aab26aab63c40fe0bffeb21bf27677881bdb6910 + parent = 943a5d67594b76f0d7f030ae9fc613e7c5fe046c method = merge cmdver = 0.4.5 diff --git a/tools/splat/CHANGELOG.md b/tools/splat/CHANGELOG.md index a8ccf40d50..9389540fee 100644 --- a/tools/splat/CHANGELOG.md +++ b/tools/splat/CHANGELOG.md @@ -1,9 +1,33 @@ # splat Release Notes +### 0.16.1 +* Various changes so that series of image and palette subsegments can have `auto` rom addresses (as long as the first can find its rom address from the parent segment or its own definition) + +### 0.16.0 + +* Add option `detect_redundant_function_end`. It tries to detect redundant and unreferenced functions ends and merge them together. + * This option is ignored if the compiler is not set to IDO. + * This type of codegen is only affected by flags `-g`, `-g1` and `-g2`. + * This option can also be overriden per file. +* Disable `include_macro_inc` by default for IDO projects. +* Disable `asm_emit_size_directive` by default for SN64 projects. +* `spimdisasm` 1.16.0 or above is now required. + +### 0.15.4 + +* Try to assign a segment to an user-declared symbol if the user declared the rom address. + * Helps to disambiguate symbols for same-address overlays. + +### 0.15.3 + +* Disabled `asm_emit_size_directive` by default for IDO projects. + ### 0.15.2 + * Various cleanup and fixes to support more liberal use of `auto` for rom addresses ### 0.15.1 + * Made some modifications such that linker object paths should be simpler in some circumstances ### 0.15.0 @@ -349,7 +373,7 @@ The `auto_all_sections` option, when set to true, will automatically add `all_` * Code and ASM modes have been combined into the `code` mode * BREAKING: The `name` attribute of a segment now should no longer be a subdirectory but rather a meaningful name for the segment which will be used as the name of the linker section. If your `name` was previously a directory, please change it into a `dir`. * BREAKING: `subsections` has been renamed to `subsegments` -* New `dir` segment attribute specifies a subdirectory into which files will be saved. You can combine `dir` ("foo") with a subsection file name containing a subdirectory ("bar/out"), and the paths will be joined (foo/bar/out.c) +* New `dir` segment attribute specifies a subdirectory into which files will be saved. You can combine `dir` ("foo") with a subsegment name containing a subdirectory ("bar/out"), and the paths will be joined (foo/bar/out.c) * If the `dir` attribute is specified but the `name` isn't, the `name` becomes `dir` with directory separation slashes replaced with underscores (foo/bar/baz -> foo_bar_baz) * BREAKING: Many configuration options have been renamed. `_dir` options have been changed to the suffix `_path`. * BREAKING: Assets (non-code, like `bin` and images) are now placed in the directory `asset_path` (defaults to `assets`). diff --git a/tools/splat/disassembler/spimdisasm_disassembler.py b/tools/splat/disassembler/spimdisasm_disassembler.py index 399b4e3f08..c3e49a7fde 100644 --- a/tools/splat/disassembler/spimdisasm_disassembler.py +++ b/tools/splat/disassembler/spimdisasm_disassembler.py @@ -8,7 +8,7 @@ from typing import Set class SpimdisasmDisassembler(disassembler.Disassembler): # This value should be kept in sync with the version listed on requirements.txt - SPIMDISASM_MIN = (1, 15, 0) + SPIMDISASM_MIN = (1, 16, 0) def configure(self, opts: SplatOpts): # Configure spimdisasm @@ -73,6 +73,10 @@ class SpimdisasmDisassembler(disassembler.Disassembler): elif selected_compiler == compiler.IDO: spimdisasm.common.GlobalConfig.COMPILER = spimdisasm.common.Compiler.IDO + spimdisasm.common.GlobalConfig.DETECT_REDUNDANT_FUNCTION_END = ( + opts.detect_redundant_function_end + ) + spimdisasm.common.GlobalConfig.GP_VALUE = opts.gp spimdisasm.common.GlobalConfig.ASM_TEXT_LABEL = opts.asm_function_macro diff --git a/tools/splat/requirements.txt b/tools/splat/requirements.txt index 56576c295b..429fdead57 100644 --- a/tools/splat/requirements.txt +++ b/tools/splat/requirements.txt @@ -4,7 +4,7 @@ tqdm intervaltree colorama # This value should be keep in sync with the version listed on disassembler/spimdisasm_disassembler.py -spimdisasm>=1.15.0 +spimdisasm>=1.16.0 rabbitizer>=1.7.0 pygfxd n64img>=0.1.4 diff --git a/tools/splat/segtypes/common/code.py b/tools/splat/segtypes/common/code.py index a3f614743f..eda9936faf 100644 --- a/tools/splat/segtypes/common/code.py +++ b/tools/splat/segtypes/common/code.py @@ -178,12 +178,12 @@ class CommonSegCode(CommonSegGroup): # Mark any manually added dot types cur_section = None - for i, subsection_yaml in enumerate(segment_yaml["subsegments"]): + for i, subsegment_yaml in enumerate(segment_yaml["subsegments"]): # endpos marker - if isinstance(subsection_yaml, list) and len(subsection_yaml) == 1: + if isinstance(subsegment_yaml, list) and len(subsegment_yaml) == 1: continue - typ = Segment.parse_segment_type(subsection_yaml) + typ = Segment.parse_segment_type(subsegment_yaml) if typ.startswith("all_"): typ = typ[4:] if not typ.startswith("."): @@ -218,15 +218,15 @@ class CommonSegCode(CommonSegGroup): inserts = self.find_inserts(found_sections) - last_rom_end = 0 + last_rom_end = None - for i, subsection_yaml in enumerate(segment_yaml["subsegments"]): + for i, subsegment_yaml in enumerate(segment_yaml["subsegments"]): # endpos marker - if isinstance(subsection_yaml, list) and len(subsection_yaml) == 1: + if isinstance(subsegment_yaml, list) and len(subsegment_yaml) == 1: continue - typ = Segment.parse_segment_type(subsection_yaml) - start = Segment.parse_segment_start(subsection_yaml) + typ = Segment.parse_segment_type(subsegment_yaml) + start = Segment.parse_segment_start(subsegment_yaml) # Add dummy segments to be expanded later if typ.startswith("all_"): @@ -253,11 +253,21 @@ class CommonSegCode(CommonSegGroup): end = self.get_next_seg_start(i, segment_yaml["subsegments"]) - if ( - isinstance(start, int) - and isinstance(prev_start, int) - and start < prev_start - ): + if start is None: + # Attempt to infer the start address + if i == 0: + # The start address of this segment is the start address of the group + start = self.rom_start + else: + # The start address is the end address of the previous segment + start = last_rom_end + + if start is not None and end is None: + est_size = segment_class.estimate_size(subsegment_yaml) + if est_size is not None: + end = start + est_size + + if start is not None and prev_start is not None and start < prev_start: log.error( f"Error: Group segment {self.name} contains subsegments which are out of ascending rom order (0x{prev_start:X} followed by 0x{start:X})" ) @@ -274,7 +284,7 @@ class CommonSegCode(CommonSegGroup): end = last_rom_end segment: Segment = Segment.from_yaml( - segment_class, subsection_yaml, start, end, vram + segment_class, subsegment_yaml, start, end, vram ) segment.sibling = base_segments.get(segment.name, None) diff --git a/tools/splat/segtypes/common/codesubsegment.py b/tools/splat/segtypes/common/codesubsegment.py index a26f2cbe9d..9731c11794 100644 --- a/tools/splat/segtypes/common/codesubsegment.py +++ b/tools/splat/segtypes/common/codesubsegment.py @@ -33,6 +33,12 @@ class CommonSegCodeSubsegment(Segment): elif options.opts.platform == "psx": self.instr_category = rabbitizer.InstrCategory.R3000GTE + self.detect_redundant_function_end: Optional[bool] = ( + self.yaml.get("detect_redundant_function_end", None) + if isinstance(self.yaml, dict) + else None + ) + @property def needs_symbols(self) -> bool: return True @@ -72,6 +78,9 @@ class CommonSegCodeSubsegment(Segment): self.spim_section.get_section().isHandwritten = is_hasm self.spim_section.get_section().instrCat = self.instr_category + self.spim_section.get_section().detectRedundantFunctionEnd = ( + self.detect_redundant_function_end + ) self.spim_section.analyze() self.spim_section.set_comment_offset(self.rom_start) diff --git a/tools/splat/segtypes/common/group.py b/tools/splat/segtypes/common/group.py index 5687ab07b3..1242b22d7d 100644 --- a/tools/splat/segtypes/common/group.py +++ b/tools/splat/segtypes/common/group.py @@ -45,23 +45,33 @@ class CommonSegGroup(CommonSegment): prev_start: Optional[int] = -1 last_rom_end = 0 - for i, subsection_yaml in enumerate(yaml["subsegments"]): + for i, subsegment_yaml in enumerate(yaml["subsegments"]): # endpos marker - if isinstance(subsection_yaml, list) and len(subsection_yaml) == 1: + if isinstance(subsegment_yaml, list) and len(subsegment_yaml) == 1: continue - typ = Segment.parse_segment_type(subsection_yaml) - start = Segment.parse_segment_start(subsection_yaml) + typ = Segment.parse_segment_type(subsegment_yaml) + start = Segment.parse_segment_start(subsegment_yaml) segment_class = Segment.get_class_for_type(typ) end = self.get_next_seg_start(i, yaml["subsegments"]) - if ( - isinstance(start, int) - and isinstance(prev_start, int) - and start < prev_start - ): + if start is None: + # Attempt to infer the start address + if i == 0: + # The start address of this segment is the start address of the group + start = self.rom_start + else: + # The start address is the end address of the previous segment + start = last_rom_end + + if start is not None and end is None: + est_size = segment_class.estimate_size(subsegment_yaml) + if est_size is not None: + end = start + est_size + + if start is not None and prev_start is not None and start < prev_start: log.error( f"Error: Group segment {self.name} contains subsegments which are out of ascending rom order (0x{prev_start:X} followed by 0x{start:X})" ) @@ -82,7 +92,7 @@ class CommonSegGroup(CommonSegment): end = last_rom_end segment: Segment = Segment.from_yaml( - segment_class, subsection_yaml, start, end, vram + segment_class, subsegment_yaml, start, end, vram ) segment.parent = self if segment.special_vram_segment: diff --git a/tools/splat/segtypes/n64/img.py b/tools/splat/segtypes/n64/img.py index 8ed00e66a4..dd4e32b6cb 100644 --- a/tools/splat/segtypes/n64/img.py +++ b/tools/splat/segtypes/n64/img.py @@ -1,5 +1,5 @@ from pathlib import Path -from typing import Type, Optional +from typing import Dict, List, Tuple, Type, Optional, Union from n64img.image import Image from util import log, options @@ -8,6 +8,15 @@ from segtypes.n64.segment import N64Segment class N64SegImg(N64Segment): + @staticmethod + def parse_dimensions(yaml: Union[Dict, List]) -> Tuple[int, int]: + if isinstance(yaml, dict): + return yaml["width"], yaml["height"] + else: + if len(yaml) < 5: + log.error(f"Error: {yaml} is missing width and height parameters") + return yaml[3], yaml[4] + def __init__( self, rom_start: Optional[int], @@ -29,23 +38,16 @@ class N64SegImg(N64Segment): yaml=yaml, ) - self.n64img: Image = img_cls(None, 0, 0) + if rom_start is None: + log.error(f"Error: {type} segment {name} rom start could not be determined") + + self.n64img: Image = img_cls(b"", 0, 0) if isinstance(yaml, dict): - if self.extract: - self.width = yaml["width"] - self.height = yaml["height"] - self.n64img.flip_h = bool(yaml.get("flip_x", False)) self.n64img.flip_v = bool(yaml.get("flip_y", False)) - else: - if self.extract: - if len(yaml) < 5: - log.error( - f"Error: {self.name} is missing width and height parameters" - ) - self.width = yaml[3] - self.height = yaml[4] + + self.width, self.height = self.parse_dimensions(yaml) self.n64img.width = self.width self.n64img.height = self.height @@ -53,22 +55,21 @@ class N64SegImg(N64Segment): self.check_len() def check_len(self) -> None: - if self.extract: - expected_len = int(self.n64img.size()) - assert isinstance(self.rom_start, int) - assert isinstance(self.rom_end, int) - assert isinstance(self.subalign, int) - actual_len = self.rom_end - self.rom_start - if actual_len > expected_len and actual_len - expected_len > self.subalign: - log.error( - f"Error: {self.name} should end at 0x{self.rom_start + expected_len:X}, but it ends at 0x{self.rom_end:X}\n(hint: add a 'bin' segment after it)" - ) + expected_len = int(self.n64img.size()) + assert isinstance(self.rom_start, int) + assert isinstance(self.rom_end, int) + assert isinstance(self.subalign, int) + actual_len = self.rom_end - self.rom_start + if actual_len > expected_len and actual_len - expected_len > self.subalign: + log.error( + f"Error: {self.name} should end at 0x{self.rom_start + expected_len:X}, but it ends at 0x{self.rom_end:X}\n(hint: add a 'bin' segment after it)" + ) def out_path(self) -> Path: return options.opts.asset_path / self.dir / f"{self.name}.png" def should_split(self) -> bool: - return self.extract and options.opts.is_mode_active("img") + return options.opts.is_mode_active("img") def split(self, rom_bytes): path = self.out_path() @@ -77,8 +78,22 @@ class N64SegImg(N64Segment): assert isinstance(self.rom_start, int) assert isinstance(self.rom_end, int) - if self.n64img.data is None: + if self.n64img.data == b"": self.n64img.data = rom_bytes[self.rom_start : self.rom_end] self.n64img.write(path) self.log(f"Wrote {self.name} to {path}") + + @staticmethod + def estimate_size(yaml: Union[Dict, List]) -> int: + width, height = N64SegImg.parse_dimensions(yaml) + typ = N64Segment.parse_segment_type(yaml) + + if typ == "ci4" or typ == "i4" or typ == "ia4": + return width * height // 2 + elif typ in ("ia16", "rgba16"): + return width * height * 2 + elif typ == "rgba32": + return width * height * 4 + else: + return width * height diff --git a/tools/splat/segtypes/n64/palette.py b/tools/splat/segtypes/n64/palette.py index eabd472b97..553f642286 100644 --- a/tools/splat/segtypes/n64/palette.py +++ b/tools/splat/segtypes/n64/palette.py @@ -1,6 +1,6 @@ from itertools import zip_longest from pathlib import Path -from typing import List, Optional, Tuple, TYPE_CHECKING +from typing import Dict, List, Optional, Tuple, TYPE_CHECKING, Union from util import log, options from util.color import unpack_color @@ -16,6 +16,9 @@ def iter_in_groups(iterable, n, fillvalue=None): return zip_longest(*args, fillvalue=fillvalue) +VALID_SIZES = [0x20, 0x40, 0x80, 0x100, 0x200] + + class N64SegPalette(N64Segment): require_unique_name = False @@ -40,18 +43,21 @@ class N64SegPalette(N64Segment): f"segment {self.name} needs to know where it ends; add a position marker [0xDEADBEEF] after it" ) - if self.max_length() and isinstance(self.rom_end, int): - expected_len = int(self.max_length()) - assert isinstance(self.rom_end, int) - assert isinstance(self.rom_start, int) - assert isinstance(self.subalign, int) + if not isinstance(self.yaml, dict) or "size" not in self.yaml: + assert self.rom_end is not None + assert self.rom_start is not None actual_len = self.rom_end - self.rom_start - if ( - actual_len > expected_len - and actual_len - expected_len > self.subalign - ): + + hint_msg = "(hint: add a 'bin' segment after it or specify the size in the segment)" + + if actual_len > VALID_SIZES[-1]: log.error( - f"Error: {self.name} should end at 0x{self.rom_start + expected_len:X}, but it ends at 0x{self.rom_end:X}\n(hint: add a 'bin' segment after it)" + f"Error: {self.name} (0x{actual_len:X} bytes) is too long, max 0x{VALID_SIZES[-1]:X})\n{hint_msg}" + ) + + if actual_len not in VALID_SIZES: + log.error( + f"Error: {self.name} (0x{actual_len:X} bytes) is not a valid palette size ({', '.join(hex(s) for s in VALID_SIZES)})\n{hint_msg}" ) def split(self, rom_bytes): @@ -66,9 +72,6 @@ class N64SegPalette(N64Segment): self.raster.extract = False def parse_palette(self, rom_bytes) -> List[Tuple[int, int, int, int]]: - assert isinstance(self.rom_start, int) - assert isinstance(self.rom_end, int) - data = rom_bytes[self.rom_start : self.rom_end] palette = [] @@ -77,9 +80,6 @@ class N64SegPalette(N64Segment): return palette - def max_length(self): - return 256 * 2 - def out_path(self) -> Path: return options.opts.asset_path / self.dir / f"{self.name}.png" @@ -97,3 +97,10 @@ class N64SegPalette(N64Segment): self.get_linker_section(), ) ] + + @staticmethod + def estimate_size(yaml: Union[Dict, List]) -> int: + if isinstance(yaml, dict): + if "size" in yaml: + return int(yaml["size"]) + return 0x20 diff --git a/tools/splat/segtypes/segment.py b/tools/splat/segtypes/segment.py index 9944a8463d..c7f43e4085 100644 --- a/tools/splat/segtypes/segment.py +++ b/tools/splat/segtypes/segment.py @@ -304,6 +304,10 @@ class Segment: def is_noload() -> bool: return False + @staticmethod + def estimate_size(yaml: Union[Dict, List]) -> Optional[int]: + return None + @property def needs_symbols(self) -> bool: return False @@ -455,9 +459,6 @@ class Segment: def warn(self, msg: str): self.warnings.append(msg) - def max_length(self): - return None - @staticmethod def get_default_name(addr) -> str: return f"{addr:X}" diff --git a/tools/splat/split.py b/tools/splat/split.py index 642890a4b6..7ec4b6998e 100755 --- a/tools/splat/split.py +++ b/tools/splat/split.py @@ -19,7 +19,7 @@ from segtypes.linker_entry import ( from segtypes.segment import Segment from util import log, options, palettes, symbols, relocs -VERSION = "0.15.2" +VERSION = "0.16.1" parser = argparse.ArgumentParser( description="Split a rom given a rom, a config, and output directory" diff --git a/tools/splat/util/compiler.py b/tools/splat/util/compiler.py index c89c35c019..e1666dc24e 100644 --- a/tools/splat/util/compiler.py +++ b/tools/splat/util/compiler.py @@ -1,4 +1,5 @@ from dataclasses import dataclass +from typing import Optional @dataclass @@ -11,6 +12,7 @@ class Compiler: c_newline: str = "\n" asm_inc_header: str = "" include_macro_inc: bool = True + asm_emit_size_directive: Optional[bool] = None GCC = Compiler( @@ -26,9 +28,10 @@ SN64 = Compiler( asm_end_label=".end", c_newline="\r\n", include_macro_inc=False, + asm_emit_size_directive=False, ) -IDO = Compiler("IDO") +IDO = Compiler("IDO", include_macro_inc=False, asm_emit_size_directive=False) compiler_for_name = {"GCC": GCC, "SN64": SN64, "IDO": IDO} diff --git a/tools/splat/util/options.py b/tools/splat/util/options.py index 2c0936389b..09db8f0565 100644 --- a/tools/splat/util/options.py +++ b/tools/splat/util/options.py @@ -175,6 +175,8 @@ class SplatOpts: asm_generated_by: bool # Tells the disassembler to try disassembling functions with unknown instructions instead of falling back to disassembling as raw data disasm_unknown: bool + # Tries to detect redundant and unreferenced functions ends and merge them together. This option is ignored if the compiler is not set to IDO. + detect_redundant_function_end: bool ################################################################################ # N64-specific options @@ -289,6 +291,11 @@ def _parse_yaml( ) asm_path: Path = p.parse_path(base_path, "asm_path", "asm") + asm_emit_size_directive = p.parse_optional_opt("asm_emit_size_directive", bool) + # If option not provided then use the compiler default + if asm_emit_size_directive is None: + asm_emit_size_directive = comp.asm_emit_size_directive + def parse_endianness() -> Literal["big", "little"]: endianness = p.parse_opt_within( "endianness", @@ -389,7 +396,7 @@ def _parse_yaml( ), asm_data_macro=p.parse_opt("asm_data_macro", str, comp.asm_data_macro), asm_end_label=p.parse_opt("asm_end_label", str, comp.asm_end_label), - asm_emit_size_directive=p.parse_optional_opt("asm_emit_size_directive", bool), + asm_emit_size_directive=asm_emit_size_directive, include_macro_inc=p.parse_opt( "include_macro_inc", bool, comp.include_macro_inc ), @@ -431,6 +438,9 @@ def _parse_yaml( filesystem_path=p.parse_optional_path(base_path, "filesystem_path"), asm_generated_by=p.parse_opt("asm_generated_by", bool, True), disasm_unknown=p.parse_opt("disasm_unknown", bool, False), + detect_redundant_function_end=p.parse_opt( + "detect_redundant_function_end", bool, True + ), ) p.check_no_unread_opts() return ret diff --git a/tools/splat/util/symbols.py b/tools/splat/util/symbols.py index 9a6bc68488..2f3366fb81 100644 --- a/tools/splat/util/symbols.py +++ b/tools/splat/util/symbols.py @@ -72,13 +72,21 @@ def to_cname(symbol_name: str) -> str: return symbol_name -def handle_sym_addrs(path: Path, sym_addrs_lines: List[str], all_segments): +def handle_sym_addrs( + path: Path, sym_addrs_lines: List[str], all_segments: "List[Segment]" +): def get_seg_for_name(name: str) -> Optional["Segment"]: for segment in all_segments: if segment.name == name: return segment return None + def get_seg_for_rom(rom: int) -> Optional["Segment"]: + for segment in all_segments: + if segment.contains_rom(rom): + return segment + return None + for line_num, line in enumerate( tqdm.tqdm(sym_addrs_lines, desc=f"Loading symbols ({path.stem})") ): @@ -234,6 +242,9 @@ def handle_sym_addrs(path: Path, sym_addrs_lines: List[str], all_segments): continue + if sym.segment is None and sym.rom is not None: + sym.segment = get_seg_for_rom(sym.rom) + if sym.segment: sym.segment.add_symbol(sym) diff --git a/ver/pal/splat.yaml b/ver/pal/splat.yaml index 1437747b9c..cc1302e8d1 100644 --- a/ver/pal/splat.yaml +++ b/ver/pal/splat.yaml @@ -2963,11 +2963,11 @@ segments: - [0x3D8E30, ci4, D_09000420_3AB450, 32, 64] - [0x3D9230, palette, D_09000420_3AB450] - [0x3D9250, ci4, D_09000840_3AB870, 32, 64] - - [0x3D9650, palette, D_09000840_3AB870] + - {start: 0x3D9650, type: palette, name: D_09000840_3AB870, size: 0x10} - [0x3D9660, ci4, D_09000C50_3ABC80, 32, 64] - [0x3D9A60, palette, D_09000C50_3ABC80] - [0x3D9A80, ci4, D_09001070_3AC0A0, 32, 64] - - [0x3D9E80, palette, D_09001070_3AC0A0] + - {start: 0x3D9E80, type: palette, name: D_09001070_3AC0A0, size: 0x10} - [0x3D9E90, ci4, D_09001480_3AC4B0, 32, 64] - [0x3DA290, palette, D_09001480_3AC4B0] - [0x3DA2B0, ci4, D_090018A0_3AC8D0, 32, 64] diff --git a/ver/us/splat.yaml b/ver/us/splat.yaml index b2f8c44117..c862bc12a1 100644 --- a/ver/us/splat.yaml +++ b/ver/us/splat.yaml @@ -317,7 +317,6 @@ segments: - [0x511E0, vtx, theater/wall_shadows_vtx] - [0x51260] - [0x51540, ia8, ui/no_controller, 128, 32] - - [0x52540] - [auto, .data, crash_screen] - [auto, .data, os/nusys/nugfxtaskmgr] - [auto, .data, os/nusys/nusimgr] @@ -406,380 +405,380 @@ segments: type: .data name: global_hud_scripts subsegments: - - [0x919B0, ci4, ui/input/a_button_unpressed, 48, 40] - - [0x91D70, palette, ui/input/a_button_unpressed] - - [0x91D90, ci4, ui/input/a_button_pressed, 48, 40] - - [0x92150, palette, ui/input/a_button_pressed] - - [0x92170, ci4, ui/input/analog_stick, 32, 32] - - [0x92370, palette, ui/input/analog_stick] - - [0x92390, ci4, ui/input/analog_stick_left, 40, 32] - - [0x92610, palette, ui/input/analog_stick_left] - - [0x92630, ci4, ui/input/analog_stick2, 32, 32] - - [0x92830, palette, ui/input/analog_stick2] - - [0x92850, ci4, ui/input/analog_stick_right, 40, 32] - - [0x92AD0, palette, ui/input/analog_stick_right] - - [0x92AF0, ci4, ui/input/analog_stick3, 32, 32] - - [0x92CF0, palette, ui/input/analog_stick3] - - [0x92D10, ci4, ui/input/analog_stick_down, 32, 32] - - [0x92F10, palette, ui/input/analog_stick_down] - - [0x92F30, ci4, ui/input/analog_stick_up, 32, 32] - - [0x93130, palette, ui/input/analog_stick_up] - - [0x93150, ci4, ui/unk_bar, 72, 16] - - [0x93390, palette, ui/unk_bar] - - [0x933B0, ci4, ui/ok, 24, 16] - - [0x93470, palette, ui/ok] - - [0x93490, ci4, ui/input/start_button, 48, 40] - - [0x93850, palette, ui/input/start_button] - - [0x93870, ci4, ui/input/start_button2, 48, 40] - - [0x93C30, palette, ui/input/start_button2] - - [0x93C50, ci4, ui/input/start_text, 24, 8] - - [0x93CB0, palette, ui/input/start_text] - - [0x93CD0, ci4, ui/hammer, 32, 32] - - [0x93ED0, palette, ui/hammer] - - [0x93EF0, palette, ui/hammer.disabled] - - [0x93F10, ci4, ui/super_hammer, 32, 32] - - [0x94110, palette, ui/super_hammer] - - [0x94130, palette, ui/super_hammer.disabled] - - [0x94150, ci4, ui/ultra_hammer, 32, 32] - - [0x94350, palette, ui/ultra_hammer] - - [0x94370, palette, ui/ultra_hammer.disabled] - - [0x94390, ci4, ui/boots, 32, 32] - - [0x94590, palette, ui/boots] - - [0x945B0, palette, ui/boots.disabled] - - [0x945D0, ci4, ui/super_boots, 32, 32] - - [0x947D0, palette, ui/super_boots] - - [0x947F0, palette, ui/super_boots.disabled] - - [0x94810, ci4, ui/ultra_boots, 32, 32] - - [0x94A10, palette, ui/ultra_boots] - - [0x94A30, palette, ui/ultra_boots.disabled] - - [0x94A50, ci4, ui/item, 32, 32] - - [0x94C50, palette, ui/item] - - [0x94C70, palette, ui/item.disabled] - - [0x94C90, ci4, ui/star_spirit, 32, 32] - - [0x94E90, palette, ui/star_spirit] - - [0x94EB0, palette, ui/star_spirit.disabled] - - [0x94ED0, ci4, ui/arrow_left, 16, 16] - - [0x94F50, palette, ui/arrow_left] - - [0x94F70, ci4, ui/arrow_right, 16, 16] - - [0x94FF0, palette, ui/arrow_right] - - [0x95010, ci4, ui/point_right, 16, 16] - - [0x95090, palette, ui/point_right] - - [0x950B0, ci4, ui/pip, 8, 8] - - [0x950D0, palette, ui/pip] - - [0x950F0, ci4, ui/pip2, 8, 8] - - [0x95110, palette, ui/pip2] - - [0x95130, ci4, ui/coin_sparkle_0, 8, 8] - - [0x95150, palette, ui/coin_sparkle_0] - - [0x95170, ci4, ui/coin_sparkle_1, 8, 8] - - [0x95190, palette, ui/coin_sparkle_1] - - [0x951B0, ci4, ui/coin_sparkle_2, 8, 8] - - [0x951D0, palette, ui/coin_sparkle_2] - - [0x951F0, ci4, ui/coin_sparkle_3, 8, 8] - - [0x95210, palette, ui/coin_sparkle_3] - - [0x95230, ci4, ui/coin_sparkle_4, 8, 8] - - [0x95250, palette, ui/coin_sparkle_4] - - [0x95270, ci4, ui/coin_sparkle_5, 8, 8] - - [0x95290, palette, ui/coin_sparkle_5] - - [0x952B0, ci4, ui/coin_sparkle_none, 8, 8] - - [0x952D0, palette, ui/coin_sparkle_none] - - [0x952F0, ia8, ui/status/star_point_shine, 24, 24] - - [0x95530, ci4, ui/status/star_piece_0, 16, 16] - - [0x955B0, palette, ui/status/star_piece_0] - - [0x955D0, ci4, ui/status/star_piece_1, 16, 16] - - [0x95650, palette, ui/status/star_piece_1] - - [0x95670, ci4, ui/status/star_piece_2, 16, 16] - - [0x956F0, palette, ui/status/star_piece_2] - - [0x95710, ci4, ui/menu_times, 8, 8] - - [0x95730, palette, ui/menu_times] - - [0x95750, ci4, ui/fp_cost, 16, 8] - - [0x95790, palette, ui/fp_cost] - - [0x957B0, palette, ui/fp_cost.reduced] - - [0x957D0, palette, ui/fp_cost.reduced_twice] - - [0x957F0, palette, ui/fp_cost.notenough] - - [0x95810, ci4, ui/pow_cost, 16, 8] - - [0x95850, palette, ui/pow_cost] - - [0x95870, palette, ui/pow_cost.reduced] - - [0x95890, palette, ui/pow_cost.reduced_twice] - - [0x958B0, palette, ui/pow_cost.notenough] - - [0x958D0, ci4, ui/green_arrow_down, 16, 8] - - [0x95910, palette, ui/green_arrow_down] - - [0x95930, ci4, ui/green_arrow_up, 16, 8] - - [0x95970, palette, ui/green_arrow_up] - - [0x95990, ci4, ui/kaime, 56, 24] - - [0x95C30, palette, ui/kaime] - - [0x95C50, ci4, ui/unused_1, 16, 16] - - [0x95CD0, palette, ui/unused_1] - - [0x95CF0, ci4, ui/unused_2, 16, 16] - - [0x95D70, palette, ui/unused_2] - - [0x95D90, ci4, ui/unused_3, 16, 16] - - [0x95E10, palette, ui/unused_3] - - [0x95E30, ci4, ui/red_bar1, 112, 8] - - [0x95FF0, palette, ui/red_bar1] - - [0x96010, ci4, ui/empty_bar, 112, 8] - - [0x961D0, palette, ui/empty_bar] - - [0x961F0, ci4, ui/red_bar2, 104, 8] - - [0x96390, palette, ui/red_bar2] - - [0x963B0, ci4, ui/eldstar, 32, 32] - - [0x965B0, palette, ui/eldstar] - - [0x965D0, palette, ui/eldstar.disabled] - - [0x965F0, ci4, ui/mamar, 32, 32] - - [0x967F0, palette, ui/mamar] - - [0x96810, palette, ui/mamar.disabled] - - [0x96830, ci4, ui/skolar, 32, 32] - - [0x96A30, palette, ui/skolar] - - [0x96A50, palette, ui/skolar.disabled] - - [0x96A70, ci4, ui/muskular, 32, 32] - - [0x96C70, palette, ui/muskular] - - [0x96C90, palette, ui/muskular.disabled] - - [0x96CB0, ci4, ui/misstar, 32, 32] - - [0x96EB0, palette, ui/misstar] - - [0x96ED0, palette, ui/misstar.disabled] - - [0x96EF0, ci4, ui/klevar, 32, 32] - - [0x970F0, palette, ui/klevar] - - [0x97110, palette, ui/klevar.disabled] - - [0x97130, ci4, ui/kalmar, 32, 32] - - [0x97330, palette, ui/kalmar] - - [0x97350, palette, ui/kalmar.disabled] - - [0x97370, ci4, ui/star_beam, 32, 32] - - [0x97570, palette, ui/star_beam] - - [0x97590, palette, ui/star_beam.disabled] - - [0x975B0, ci4, ui/peach_beam, 32, 32] - - [0x977B0, palette, ui/peach_beam] - - [0x977D0, palette, ui/peach_beam.disabled] - - [0x977F0, ci4, ui/mario_head, 16, 16] - - [0x97870, palette, ui/mario_head] - - [0x97890, ci4, ui/partner0, 32, 32] - - [0x97A90, palette, ui/partner0] - - [0x97AB0, palette, ui/partner0.disabled] - - [0x97AD0, ci4, ui/goombario, 32, 32] - - [0x97CD0, palette, ui/goombario] - - [0x97CF0, palette, ui/goombario.disabled] - - [0x97D10, ci4, ui/kooper, 32, 32] - - [0x97F10, palette, ui/kooper] - - [0x97F30, palette, ui/kooper.disabled] - - [0x97F50, ci4, ui/bombette, 32, 32] - - [0x98150, palette, ui/bombette] - - [0x98170, palette, ui/bombette.disabled] - - [0x98190, ci4, ui/parakarry, 32, 32] - - [0x98390, palette, ui/parakarry] - - [0x983B0, palette, ui/parakarry.disabled] - - [0x983D0, ci4, ui/bow, 32, 32] - - [0x985D0, palette, ui/bow] - - [0x985F0, palette, ui/bow.disabled] - - [0x98610, ci4, ui/watt, 32, 32] - - [0x98810, palette, ui/watt] - - [0x98830, palette, ui/watt.disabled] - - [0x98850, ci4, ui/sushie, 32, 32] - - [0x98A50, palette, ui/sushie] - - [0x98A70, palette, ui/sushie.disabled] - - [0x98A90, ci4, ui/lakilester, 32, 32] - - [0x98C90, palette, ui/lakilester] - - [0x98CB0, palette, ui/lakilester.disabled] - - [0x98CD0, ci4, ui/partner9, 32, 32] - - [0x98ED0, palette, ui/partner9] - - [0x98EF0, palette, ui/partner9.disabled] - - [0x98F10, ci4, ui/partner10, 32, 32] - - [0x99110, palette, ui/partner10] - - [0x99130, palette, ui/partner10.disabled] - - [0x99150, ci4, ui/partner11, 32, 32] - - [0x99350, palette, ui/partner11] - - [0x99370, palette, ui/partner11.disabled] - - [0x99390, ci4, ui/status/text_times, 8, 8] - - [0x993B0, palette, ui/status/text_times] - - [0x993D0, ci4, ui/status/text_slash, 8, 16] - - [0x99410, palette, ui/status/text_slash] - - [0x99430, ci4, ui/status/text_0, 16, 16] - - [0x994B0, palette, ui/status/text_0] - - [0x994D0, ci4, ui/status/text_1, 16, 16] - - [0x99550, palette, ui/status/text_1] - - [0x99570, ci4, ui/status/text_2, 16, 16] - - [0x995F0, palette, ui/status/text_2] - - [0x99610, ci4, ui/status/text_3, 16, 16] - - [0x99690, palette, ui/status/text_3] - - [0x996B0, ci4, ui/status/text_4, 16, 16] - - [0x99730, palette, ui/status/text_4] - - [0x99750, ci4, ui/status/text_5, 16, 16] - - [0x997D0, palette, ui/status/text_5] - - [0x997F0, ci4, ui/status/text_6, 16, 16] - - [0x99870, palette, ui/status/text_6] - - [0x99890, ci4, ui/status/text_7, 16, 16] - - [0x99910, palette, ui/status/text_7] - - [0x99930, ci4, ui/status/text_8, 16, 16] - - [0x999B0, palette, ui/status/text_8] - - [0x999D0, ci4, ui/status/text_9, 16, 16] - - [0x99A50, palette, ui/status/text_9] - - [0x99A70, ci4, ui/status/text_hp, 16, 16] - - [0x99AF0, palette, ui/status/text_hp] - - [0x99B10, ci4, ui/status/text_fp, 16, 16] - - [0x99B90, palette, ui/status/text_fp] - - [0x99BB0, ci4, ui/status/pow_unit_1, 8, 8] - - [0x99BD0, palette, ui/status/pow_unit_1] - - [0x99BF0, ci4, ui/status/pow_unit_2, 8, 8] - - [0x99C10, palette, ui/status/pow_unit_2] - - [0x99C30, ci4, ui/status/pow_unit_3, 8, 8] - - [0x99C50, palette, ui/status/pow_unit_3] - - [0x99C70, ci4, ui/status/pow_unit_4, 8, 8] - - [0x99C90, palette, ui/status/pow_unit_4] - - [0x99CB0, ci4, ui/status/pow_unit_5, 8, 8] - - [0x99CD0, palette, ui/status/pow_unit_5] - - [0x99CF0, ci4, ui/status/pow_unit_6, 8, 8] - - [0x99D10, palette, ui/status/pow_unit_6] - - [0x99D30, ci4, ui/status/pow_unit_7, 8, 8] - - [0x99D50, palette, ui/status/pow_unit_7] - - [0x99D70, ci4, ui/status/pow_unit_empty, 8, 8] - - [0x99D90, palette, ui/status/pow_unit_empty] - - [0x99DB0, ci4, ui/status/pow_star_1, 8, 8] - - [0x99DD0, palette, ui/status/pow_star_1] - - [0x99DF0, ci4, ui/status/pow_star_2, 8, 8] - - [0x99E10, palette, ui/status/pow_star_2] - - [0x99E30, ci4, ui/status/pow_star_3, 8, 8] - - [0x99E50, palette, ui/status/pow_star_3] - - [0x99E70, ci4, ui/status/pow_star_4, 8, 8] - - [0x99E90, palette, ui/status/pow_star_4] - - [0x99EB0, ci4, ui/status/pow_star_5, 8, 8] - - [0x99ED0, palette, ui/status/pow_star_5] - - [0x99EF0, ci4, ui/status/pow_star_6, 8, 8] - - [0x99F10, palette, ui/status/pow_star_6] - - [0x99F30, ci4, ui/status/pow_star_7, 8, 8] - - [0x99F50, palette, ui/status/pow_star_7] - - [0x99F70, ci4, ui/status/pow_star_empty, 8, 8] - - [0x99F90, palette, ui/status/pow_star_empty] - - [0x99FB0, ci4, ui/status/coin_0, 16, 16] - - [0x9A030, palette, ui/status/coin_0] - - [0x9A050, ci4, ui/status/coin_1, 16, 16] - - [0x9A0D0, palette, ui/status/coin_1] - - [0x9A0F0, ci4, ui/status/coin_2, 16, 16] - - [0x9A170, palette, ui/status/coin_2] - - [0x9A190, ci4, ui/status/coin_3, 16, 16] - - [0x9A210, palette, ui/status/coin_3] - - [0x9A230, ci4, ui/status/coin_4, 16, 16] - - [0x9A2B0, palette, ui/status/coin_4] - - [0x9A2D0, ci4, ui/status/coin_5, 16, 16] - - [0x9A350, palette, ui/status/coin_5] - - [0x9A370, ci4, ui/status/coin_6, 16, 16] - - [0x9A3F0, palette, ui/status/coin_6] - - [0x9A410, ci4, ui/status/coin_7, 16, 16] - - [0x9A490, palette, ui/status/coin_7] - - [0x9A4B0, ci4, ui/status/coin_8, 16, 16] - - [0x9A530, palette, ui/status/coin_8] - - [0x9A550, ci4, ui/status/coin_9, 16, 16] - - [0x9A5D0, palette, ui/status/coin_9] - - [0x9A5F0, ci4, ui/status/star_point_0, 16, 16] - - [0x9A670, palette, ui/status/star_point_0] - - [0x9A690, ci4, ui/status/star_point_1, 16, 16] - - [0x9A710, palette, ui/status/star_point_1] - - [0x9A730, ci4, ui/status/star_point_2, 16, 16] - - [0x9A7B0, palette, ui/status/star_point_2] - - [0x9A7D0, ci4, ui/status/star_point_3, 16, 16] - - [0x9A850, palette, ui/status/star_point_3] - - [0x9A870, ci4, ui/status/star_point_4, 16, 16] - - [0x9A8F0, palette, ui/status/star_point_4] - - [0x9A910, ci4, ui/status/star_point_5, 16, 16] - - [0x9A990, palette, ui/status/star_point_5] - - [0x9A9B0, ci4, ui/status/star_point_6, 16, 16] - - [0x9AA30, palette, ui/status/star_point_6] - - [0x9AA50, ci4, ui/status/star_point_7, 16, 16] - - [0x9AAD0, palette, ui/status/star_point_7] - - [0x9AAF0, ci4, ui/bluepip, 16, 16] - - [0x9AB70, palette, ui/bluepip] - - [0x9AB90, ci4, ui/bluepip2, 16, 16] - - [0x9AC10, palette, ui/bluepip2] - - [0x9AC30, ci4, ui/battle/status/charge_jump, 24, 24] - - [0x9AD50, palette, ui/battle/status/charge_jump] - - [0x9AD70, ci4, ui/battle/status/charge_hammer, 24, 24] - - [0x9AE90, palette, ui/battle/status/charge_hammer] - - [0x9AEB0, ci4, ui/battle/status/charge_goombario, 24, 24] - - [0x9AFD0, palette, ui/battle/status/charge_goombario] - - [0x9AFF0, ci4, ui/battle/status/exclamation, 24, 24] - - [0x9B110, palette, ui/battle/status/exclamation] - - [0x9B130, ci4, ui/battle/status/sleep_0, 16, 16] - - [0x9B1B0, palette, ui/battle/status/sleep_0] - - [0x9B1D0, ci4, ui/battle/status/sleep_1, 16, 16] - - [0x9B250, palette, ui/battle/status/sleep_1] - - [0x9B270, ci4, ui/battle/status/sleep_2, 16, 16] - - [0x9B2F0, palette, ui/battle/status/sleep_2] - - [0x9B310, ci4, ui/battle/status/static_0, 16, 16] - - [0x9B390, palette, ui/battle/status/static_0] - - [0x9B3B0, ci4, ui/battle/status/static_1, 16, 16] - - [0x9B430, palette, ui/battle/status/static_1] - - [0x9B450, ci4, ui/battle/status/paralyze_0, 16, 16] - - [0x9B4D0, palette, ui/battle/status/paralyze_0] - - [0x9B4F0, ci4, ui/battle/status/paralyze_1, 16, 16] - - [0x9B570, palette, ui/battle/status/paralyze_1] - - [0x9B590, ci4, ui/battle/status/dizzy_0, 16, 16] - - [0x9B610, palette, ui/battle/status/dizzy_0] - - [0x9B630, ci4, ui/battle/status/dizzy_1, 16, 16] - - [0x9B6B0, palette, ui/battle/status/dizzy_1] - - [0x9B6D0, ci4, ui/battle/status/dizzy_2, 16, 16] - - [0x9B750, palette, ui/battle/status/dizzy_2] - - [0x9B770, ci4, ui/battle/status/dizzy_3, 16, 16] - - [0x9B7F0, palette, ui/battle/status/dizzy_3] - - [0x9B810, ci4, ui/battle/status/poison_0, 16, 16] - - [0x9B890, palette, ui/battle/status/poison_0] - - [0x9B8B0, ci4, ui/battle/status/poison_1, 16, 16] - - [0x9B930, palette, ui/battle/status/poison_1] - - [0x9B950, ci4, ui/battle/status/frozen_0, 16, 16] - - [0x9B9D0, palette, ui/battle/status/frozen_0] - - [0x9B9F0, ci4, ui/battle/status/frozen_1, 16, 16] - - [0x9BA70, palette, ui/battle/status/frozen_1] - - [0x9BA90, ci4, ui/battle/status/frozen_2, 16, 16] - - [0x9BB10, palette, ui/battle/status/frozen_2] - - [0x9BB30, ci4, ui/battle/status/frozen_3, 16, 16] - - [0x9BBB0, palette, ui/battle/status/frozen_3] - - [0x9BBD0, ci4, ui/battle/status/stop_0, 16, 16] - - [0x9BC50, palette, ui/battle/status/stop_0] - - [0x9BC70, ci4, ui/battle/status/stop_1, 16, 16] - - [0x9BCF0, palette, ui/battle/status/stop_1] - - [0x9BD10, ci4, ui/battle/status/stop_2, 16, 16] - - [0x9BD90, palette, ui/battle/status/stop_2] - - [0x9BDB0, ci4, ui/battle/status/stop_3, 16, 16] - - [0x9BE30, palette, ui/battle/status/stop_3] - - [0x9BE50, ci4, ui/battle/status/pdown_0, 16, 16] - - [0x9BED0, palette, ui/battle/status/pdown_0] - - [0x9BEF0, ci4, ui/battle/status/pdown_1, 16, 16] - - [0x9BF70, palette, ui/battle/status/pdown_1] - - [0x9BF90, ci4, ui/battle/status/shrink_0, 16, 16] - - [0x9C010, palette, ui/battle/status/shrink_0] - - [0x9C030, ci4, ui/battle/status/shrink_1, 16, 16] - - [0x9C0B0, palette, ui/battle/status/shrink_1] - - [0x9C0D0, ci4, ui/battle/status/shrink_2, 16, 16] - - [0x9C150, palette, ui/battle/status/shrink_2] - - [0x9C170, ci4, ui/battle/status/shrink_3, 16, 16] - - [0x9C1F0, palette, ui/battle/status/shrink_3] - - [0x9C210, ci4, ui/battle/status/transparent_0, 16, 16] - - [0x9C290, palette, ui/battle/status/transparent_0] - - [0x9C2B0, ci4, ui/battle/status/transparent_1, 16, 16] - - [0x9C330, palette, ui/battle/status/transparent_1] - - [0x9C350, ci4, ui/battle/status/transparent_2, 16, 16] - - [0x9C3D0, palette, ui/battle/status/transparent_2] - - [0x9C3F0, ci4, ui/battle/status/transparent_3, 16, 16] - - [0x9C470, palette, ui/battle/status/transparent_3] - - [0x9C490, ci4, ui/battle/status/transparent_4, 16, 16] - - [0x9C510, palette, ui/battle/status/transparent_4] - - [0x9C530, ci4, ui/battle/status/transparent_5, 16, 16] - - [0x9C5B0, palette, ui/battle/status/transparent_5] - - [0x9C5D0, ci4, ui/battle/status/peril, 40, 16] - - [0x9C710, palette, ui/battle/status/peril] - - [0x9C730, ci4, ui/battle/status/danger, 40, 16] - - [0x9C870, palette, ui/battle/status/danger] - - [0x9C890, ci4, ui/battle/status/refund, 40, 24] - - [0x9CA70, palette, ui/battle/status/refund] - - [0x9CA90, ci4, ui/battle/status/happy, 40, 16] - - [0x9CBD0, palette, ui/battle/status/happy] - - [0x9CBF0, ci4, ui/battle/status/hp_drain, 40, 16] - - [0x9CD30, palette, ui/battle/status/hp_drain] - - [0x9CD50, ci4, ui/move_basic, 32, 32] - - [0x9CF50, palette, ui/move_basic] - - [0x9CF70, palette, ui/move_basic.disabled] - - [0x9CF90, ci4, ui/move_partner_1, 32, 32] - - [0x9D190, palette, ui/move_partner_1] - - [0x9D1B0, palette, ui/move_partner_1.disabled] - - [0x9D1D0, ci4, ui/move_partner_2, 32, 32] - - [0x9D3D0, palette, ui/move_partner_2] - - [0x9D3F0, palette, ui/move_partner_2.disabled] - - [0x9D410, ci4, ui/move_partner_3, 32, 32] - - [0x9D610, palette, ui/move_partner_3] - - [0x9D630, palette, ui/move_partner_3.disabled] + - [auto, ci4, ui/input/a_button_unpressed, 48, 40] + - [auto, palette, ui/input/a_button_unpressed] + - [auto, ci4, ui/input/a_button_pressed, 48, 40] + - [auto, palette, ui/input/a_button_pressed] + - [auto, ci4, ui/input/analog_stick, 32, 32] + - [auto, palette, ui/input/analog_stick] + - [auto, ci4, ui/input/analog_stick_left, 40, 32] + - [auto, palette, ui/input/analog_stick_left] + - [auto, ci4, ui/input/analog_stick2, 32, 32] + - [auto, palette, ui/input/analog_stick2] + - [auto, ci4, ui/input/analog_stick_right, 40, 32] + - [auto, palette, ui/input/analog_stick_right] + - [auto, ci4, ui/input/analog_stick3, 32, 32] + - [auto, palette, ui/input/analog_stick3] + - [auto, ci4, ui/input/analog_stick_down, 32, 32] + - [auto, palette, ui/input/analog_stick_down] + - [auto, ci4, ui/input/analog_stick_up, 32, 32] + - [auto, palette, ui/input/analog_stick_up] + - [auto, ci4, ui/unk_bar, 72, 16] + - [auto, palette, ui/unk_bar] + - [auto, ci4, ui/ok, 24, 16] + - [auto, palette, ui/ok] + - [auto, ci4, ui/input/start_button, 48, 40] + - [auto, palette, ui/input/start_button] + - [auto, ci4, ui/input/start_button2, 48, 40] + - [auto, palette, ui/input/start_button2] + - [auto, ci4, ui/input/start_text, 24, 8] + - [auto, palette, ui/input/start_text] + - [auto, ci4, ui/hammer, 32, 32] + - [auto, palette, ui/hammer] + - [auto, palette, ui/hammer.disabled] + - [auto, ci4, ui/super_hammer, 32, 32] + - [auto, palette, ui/super_hammer] + - [auto, palette, ui/super_hammer.disabled] + - [auto, ci4, ui/ultra_hammer, 32, 32] + - [auto, palette, ui/ultra_hammer] + - [auto, palette, ui/ultra_hammer.disabled] + - [auto, ci4, ui/boots, 32, 32] + - [auto, palette, ui/boots] + - [auto, palette, ui/boots.disabled] + - [auto, ci4, ui/super_boots, 32, 32] + - [auto, palette, ui/super_boots] + - [auto, palette, ui/super_boots.disabled] + - [auto, ci4, ui/ultra_boots, 32, 32] + - [auto, palette, ui/ultra_boots] + - [auto, palette, ui/ultra_boots.disabled] + - [auto, ci4, ui/item, 32, 32] + - [auto, palette, ui/item] + - [auto, palette, ui/item.disabled] + - [auto, ci4, ui/star_spirit, 32, 32] + - [auto, palette, ui/star_spirit] + - [auto, palette, ui/star_spirit.disabled] + - [auto, ci4, ui/arrow_left, 16, 16] + - [auto, palette, ui/arrow_left] + - [auto, ci4, ui/arrow_right, 16, 16] + - [auto, palette, ui/arrow_right] + - [auto, ci4, ui/point_right, 16, 16] + - [auto, palette, ui/point_right] + - [auto, ci4, ui/pip, 8, 8] + - [auto, palette, ui/pip] + - [auto, ci4, ui/pip2, 8, 8] + - [auto, palette, ui/pip2] + - [auto, ci4, ui/coin_sparkle_0, 8, 8] + - [auto, palette, ui/coin_sparkle_0] + - [auto, ci4, ui/coin_sparkle_1, 8, 8] + - [auto, palette, ui/coin_sparkle_1] + - [auto, ci4, ui/coin_sparkle_2, 8, 8] + - [auto, palette, ui/coin_sparkle_2] + - [auto, ci4, ui/coin_sparkle_3, 8, 8] + - [auto, palette, ui/coin_sparkle_3] + - [auto, ci4, ui/coin_sparkle_4, 8, 8] + - [auto, palette, ui/coin_sparkle_4] + - [auto, ci4, ui/coin_sparkle_5, 8, 8] + - [auto, palette, ui/coin_sparkle_5] + - [auto, ci4, ui/coin_sparkle_none, 8, 8] + - [auto, palette, ui/coin_sparkle_none] + - [auto, ia8, ui/status/star_point_shine, 24, 24] + - [auto, ci4, ui/status/star_piece_0, 16, 16] + - [auto, palette, ui/status/star_piece_0] + - [auto, ci4, ui/status/star_piece_1, 16, 16] + - [auto, palette, ui/status/star_piece_1] + - [auto, ci4, ui/status/star_piece_2, 16, 16] + - [auto, palette, ui/status/star_piece_2] + - [auto, ci4, ui/menu_times, 8, 8] + - [auto, palette, ui/menu_times] + - [auto, ci4, ui/fp_cost, 16, 8] + - [auto, palette, ui/fp_cost] + - [auto, palette, ui/fp_cost.reduced] + - [auto, palette, ui/fp_cost.reduced_twice] + - [auto, palette, ui/fp_cost.notenough] + - [auto, ci4, ui/pow_cost, 16, 8] + - [auto, palette, ui/pow_cost] + - [auto, palette, ui/pow_cost.reduced] + - [auto, palette, ui/pow_cost.reduced_twice] + - [auto, palette, ui/pow_cost.notenough] + - [auto, ci4, ui/green_arrow_down, 16, 8] + - [auto, palette, ui/green_arrow_down] + - [auto, ci4, ui/green_arrow_up, 16, 8] + - [auto, palette, ui/green_arrow_up] + - [auto, ci4, ui/kaime, 56, 24] + - [auto, palette, ui/kaime] + - [auto, ci4, ui/unused_1, 16, 16] + - [auto, palette, ui/unused_1] + - [auto, ci4, ui/unused_2, 16, 16] + - [auto, palette, ui/unused_2] + - [auto, ci4, ui/unused_3, 16, 16] + - [auto, palette, ui/unused_3] + - [auto, ci4, ui/red_bar1, 112, 8] + - [auto, palette, ui/red_bar1] + - [auto, ci4, ui/empty_bar, 112, 8] + - [auto, palette, ui/empty_bar] + - [auto, ci4, ui/red_bar2, 104, 8] + - [auto, palette, ui/red_bar2] + - [auto, ci4, ui/eldstar, 32, 32] + - [auto, palette, ui/eldstar] + - [auto, palette, ui/eldstar.disabled] + - [auto, ci4, ui/mamar, 32, 32] + - [auto, palette, ui/mamar] + - [auto, palette, ui/mamar.disabled] + - [auto, ci4, ui/skolar, 32, 32] + - [auto, palette, ui/skolar] + - [auto, palette, ui/skolar.disabled] + - [auto, ci4, ui/muskular, 32, 32] + - [auto, palette, ui/muskular] + - [auto, palette, ui/muskular.disabled] + - [auto, ci4, ui/misstar, 32, 32] + - [auto, palette, ui/misstar] + - [auto, palette, ui/misstar.disabled] + - [auto, ci4, ui/klevar, 32, 32] + - [auto, palette, ui/klevar] + - [auto, palette, ui/klevar.disabled] + - [auto, ci4, ui/kalmar, 32, 32] + - [auto, palette, ui/kalmar] + - [auto, palette, ui/kalmar.disabled] + - [auto, ci4, ui/star_beam, 32, 32] + - [auto, palette, ui/star_beam] + - [auto, palette, ui/star_beam.disabled] + - [auto, ci4, ui/peach_beam, 32, 32] + - [auto, palette, ui/peach_beam] + - [auto, palette, ui/peach_beam.disabled] + - [auto, ci4, ui/mario_head, 16, 16] + - [auto, palette, ui/mario_head] + - [auto, ci4, ui/partner0, 32, 32] + - [auto, palette, ui/partner0] + - [auto, palette, ui/partner0.disabled] + - [auto, ci4, ui/goombario, 32, 32] + - [auto, palette, ui/goombario] + - [auto, palette, ui/goombario.disabled] + - [auto, ci4, ui/kooper, 32, 32] + - [auto, palette, ui/kooper] + - [auto, palette, ui/kooper.disabled] + - [auto, ci4, ui/bombette, 32, 32] + - [auto, palette, ui/bombette] + - [auto, palette, ui/bombette.disabled] + - [auto, ci4, ui/parakarry, 32, 32] + - [auto, palette, ui/parakarry] + - [auto, palette, ui/parakarry.disabled] + - [auto, ci4, ui/bow, 32, 32] + - [auto, palette, ui/bow] + - [auto, palette, ui/bow.disabled] + - [auto, ci4, ui/watt, 32, 32] + - [auto, palette, ui/watt] + - [auto, palette, ui/watt.disabled] + - [auto, ci4, ui/sushie, 32, 32] + - [auto, palette, ui/sushie] + - [auto, palette, ui/sushie.disabled] + - [auto, ci4, ui/lakilester, 32, 32] + - [auto, palette, ui/lakilester] + - [auto, palette, ui/lakilester.disabled] + - [auto, ci4, ui/partner9, 32, 32] + - [auto, palette, ui/partner9] + - [auto, palette, ui/partner9.disabled] + - [auto, ci4, ui/partner10, 32, 32] + - [auto, palette, ui/partner10] + - [auto, palette, ui/partner10.disabled] + - [auto, ci4, ui/partner11, 32, 32] + - [auto, palette, ui/partner11] + - [auto, palette, ui/partner11.disabled] + - [auto, ci4, ui/status/text_times, 8, 8] + - [auto, palette, ui/status/text_times] + - [auto, ci4, ui/status/text_slash, 8, 16] + - [auto, palette, ui/status/text_slash] + - [auto, ci4, ui/status/text_0, 16, 16] + - [auto, palette, ui/status/text_0] + - [auto, ci4, ui/status/text_1, 16, 16] + - [auto, palette, ui/status/text_1] + - [auto, ci4, ui/status/text_2, 16, 16] + - [auto, palette, ui/status/text_2] + - [auto, ci4, ui/status/text_3, 16, 16] + - [auto, palette, ui/status/text_3] + - [auto, ci4, ui/status/text_4, 16, 16] + - [auto, palette, ui/status/text_4] + - [auto, ci4, ui/status/text_5, 16, 16] + - [auto, palette, ui/status/text_5] + - [auto, ci4, ui/status/text_6, 16, 16] + - [auto, palette, ui/status/text_6] + - [auto, ci4, ui/status/text_7, 16, 16] + - [auto, palette, ui/status/text_7] + - [auto, ci4, ui/status/text_8, 16, 16] + - [auto, palette, ui/status/text_8] + - [auto, ci4, ui/status/text_9, 16, 16] + - [auto, palette, ui/status/text_9] + - [auto, ci4, ui/status/text_hp, 16, 16] + - [auto, palette, ui/status/text_hp] + - [auto, ci4, ui/status/text_fp, 16, 16] + - [auto, palette, ui/status/text_fp] + - [auto, ci4, ui/status/pow_unit_1, 8, 8] + - [auto, palette, ui/status/pow_unit_1] + - [auto, ci4, ui/status/pow_unit_2, 8, 8] + - [auto, palette, ui/status/pow_unit_2] + - [auto, ci4, ui/status/pow_unit_3, 8, 8] + - [auto, palette, ui/status/pow_unit_3] + - [auto, ci4, ui/status/pow_unit_4, 8, 8] + - [auto, palette, ui/status/pow_unit_4] + - [auto, ci4, ui/status/pow_unit_5, 8, 8] + - [auto, palette, ui/status/pow_unit_5] + - [auto, ci4, ui/status/pow_unit_6, 8, 8] + - [auto, palette, ui/status/pow_unit_6] + - [auto, ci4, ui/status/pow_unit_7, 8, 8] + - [auto, palette, ui/status/pow_unit_7] + - [auto, ci4, ui/status/pow_unit_empty, 8, 8] + - [auto, palette, ui/status/pow_unit_empty] + - [auto, ci4, ui/status/pow_star_1, 8, 8] + - [auto, palette, ui/status/pow_star_1] + - [auto, ci4, ui/status/pow_star_2, 8, 8] + - [auto, palette, ui/status/pow_star_2] + - [auto, ci4, ui/status/pow_star_3, 8, 8] + - [auto, palette, ui/status/pow_star_3] + - [auto, ci4, ui/status/pow_star_4, 8, 8] + - [auto, palette, ui/status/pow_star_4] + - [auto, ci4, ui/status/pow_star_5, 8, 8] + - [auto, palette, ui/status/pow_star_5] + - [auto, ci4, ui/status/pow_star_6, 8, 8] + - [auto, palette, ui/status/pow_star_6] + - [auto, ci4, ui/status/pow_star_7, 8, 8] + - [auto, palette, ui/status/pow_star_7] + - [auto, ci4, ui/status/pow_star_empty, 8, 8] + - [auto, palette, ui/status/pow_star_empty] + - [auto, ci4, ui/status/coin_0, 16, 16] + - [auto, palette, ui/status/coin_0] + - [auto, ci4, ui/status/coin_1, 16, 16] + - [auto, palette, ui/status/coin_1] + - [auto, ci4, ui/status/coin_2, 16, 16] + - [auto, palette, ui/status/coin_2] + - [auto, ci4, ui/status/coin_3, 16, 16] + - [auto, palette, ui/status/coin_3] + - [auto, ci4, ui/status/coin_4, 16, 16] + - [auto, palette, ui/status/coin_4] + - [auto, ci4, ui/status/coin_5, 16, 16] + - [auto, palette, ui/status/coin_5] + - [auto, ci4, ui/status/coin_6, 16, 16] + - [auto, palette, ui/status/coin_6] + - [auto, ci4, ui/status/coin_7, 16, 16] + - [auto, palette, ui/status/coin_7] + - [auto, ci4, ui/status/coin_8, 16, 16] + - [auto, palette, ui/status/coin_8] + - [auto, ci4, ui/status/coin_9, 16, 16] + - [auto, palette, ui/status/coin_9] + - [auto, ci4, ui/status/star_point_0, 16, 16] + - [auto, palette, ui/status/star_point_0] + - [auto, ci4, ui/status/star_point_1, 16, 16] + - [auto, palette, ui/status/star_point_1] + - [auto, ci4, ui/status/star_point_2, 16, 16] + - [auto, palette, ui/status/star_point_2] + - [auto, ci4, ui/status/star_point_3, 16, 16] + - [auto, palette, ui/status/star_point_3] + - [auto, ci4, ui/status/star_point_4, 16, 16] + - [auto, palette, ui/status/star_point_4] + - [auto, ci4, ui/status/star_point_5, 16, 16] + - [auto, palette, ui/status/star_point_5] + - [auto, ci4, ui/status/star_point_6, 16, 16] + - [auto, palette, ui/status/star_point_6] + - [auto, ci4, ui/status/star_point_7, 16, 16] + - [auto, palette, ui/status/star_point_7] + - [auto, ci4, ui/bluepip, 16, 16] + - [auto, palette, ui/bluepip] + - [auto, ci4, ui/bluepip2, 16, 16] + - [auto, palette, ui/bluepip2] + - [auto, ci4, ui/battle/status/charge_jump, 24, 24] + - [auto, palette, ui/battle/status/charge_jump] + - [auto, ci4, ui/battle/status/charge_hammer, 24, 24] + - [auto, palette, ui/battle/status/charge_hammer] + - [auto, ci4, ui/battle/status/charge_goombario, 24, 24] + - [auto, palette, ui/battle/status/charge_goombario] + - [auto, ci4, ui/battle/status/exclamation, 24, 24] + - [auto, palette, ui/battle/status/exclamation] + - [auto, ci4, ui/battle/status/sleep_0, 16, 16] + - [auto, palette, ui/battle/status/sleep_0] + - [auto, ci4, ui/battle/status/sleep_1, 16, 16] + - [auto, palette, ui/battle/status/sleep_1] + - [auto, ci4, ui/battle/status/sleep_2, 16, 16] + - [auto, palette, ui/battle/status/sleep_2] + - [auto, ci4, ui/battle/status/static_0, 16, 16] + - [auto, palette, ui/battle/status/static_0] + - [auto, ci4, ui/battle/status/static_1, 16, 16] + - [auto, palette, ui/battle/status/static_1] + - [auto, ci4, ui/battle/status/paralyze_0, 16, 16] + - [auto, palette, ui/battle/status/paralyze_0] + - [auto, ci4, ui/battle/status/paralyze_1, 16, 16] + - [auto, palette, ui/battle/status/paralyze_1] + - [auto, ci4, ui/battle/status/dizzy_0, 16, 16] + - [auto, palette, ui/battle/status/dizzy_0] + - [auto, ci4, ui/battle/status/dizzy_1, 16, 16] + - [auto, palette, ui/battle/status/dizzy_1] + - [auto, ci4, ui/battle/status/dizzy_2, 16, 16] + - [auto, palette, ui/battle/status/dizzy_2] + - [auto, ci4, ui/battle/status/dizzy_3, 16, 16] + - [auto, palette, ui/battle/status/dizzy_3] + - [auto, ci4, ui/battle/status/poison_0, 16, 16] + - [auto, palette, ui/battle/status/poison_0] + - [auto, ci4, ui/battle/status/poison_1, 16, 16] + - [auto, palette, ui/battle/status/poison_1] + - [auto, ci4, ui/battle/status/frozen_0, 16, 16] + - [auto, palette, ui/battle/status/frozen_0] + - [auto, ci4, ui/battle/status/frozen_1, 16, 16] + - [auto, palette, ui/battle/status/frozen_1] + - [auto, ci4, ui/battle/status/frozen_2, 16, 16] + - [auto, palette, ui/battle/status/frozen_2] + - [auto, ci4, ui/battle/status/frozen_3, 16, 16] + - [auto, palette, ui/battle/status/frozen_3] + - [auto, ci4, ui/battle/status/stop_0, 16, 16] + - [auto, palette, ui/battle/status/stop_0] + - [auto, ci4, ui/battle/status/stop_1, 16, 16] + - [auto, palette, ui/battle/status/stop_1] + - [auto, ci4, ui/battle/status/stop_2, 16, 16] + - [auto, palette, ui/battle/status/stop_2] + - [auto, ci4, ui/battle/status/stop_3, 16, 16] + - [auto, palette, ui/battle/status/stop_3] + - [auto, ci4, ui/battle/status/pdown_0, 16, 16] + - [auto, palette, ui/battle/status/pdown_0] + - [auto, ci4, ui/battle/status/pdown_1, 16, 16] + - [auto, palette, ui/battle/status/pdown_1] + - [auto, ci4, ui/battle/status/shrink_0, 16, 16] + - [auto, palette, ui/battle/status/shrink_0] + - [auto, ci4, ui/battle/status/shrink_1, 16, 16] + - [auto, palette, ui/battle/status/shrink_1] + - [auto, ci4, ui/battle/status/shrink_2, 16, 16] + - [auto, palette, ui/battle/status/shrink_2] + - [auto, ci4, ui/battle/status/shrink_3, 16, 16] + - [auto, palette, ui/battle/status/shrink_3] + - [auto, ci4, ui/battle/status/transparent_0, 16, 16] + - [auto, palette, ui/battle/status/transparent_0] + - [auto, ci4, ui/battle/status/transparent_1, 16, 16] + - [auto, palette, ui/battle/status/transparent_1] + - [auto, ci4, ui/battle/status/transparent_2, 16, 16] + - [auto, palette, ui/battle/status/transparent_2] + - [auto, ci4, ui/battle/status/transparent_3, 16, 16] + - [auto, palette, ui/battle/status/transparent_3] + - [auto, ci4, ui/battle/status/transparent_4, 16, 16] + - [auto, palette, ui/battle/status/transparent_4] + - [auto, ci4, ui/battle/status/transparent_5, 16, 16] + - [auto, palette, ui/battle/status/transparent_5] + - [auto, ci4, ui/battle/status/peril, 40, 16] + - [auto, palette, ui/battle/status/peril] + - [auto, ci4, ui/battle/status/danger, 40, 16] + - [auto, palette, ui/battle/status/danger] + - [auto, ci4, ui/battle/status/refund, 40, 24] + - [auto, palette, ui/battle/status/refund] + - [auto, ci4, ui/battle/status/happy, 40, 16] + - [auto, palette, ui/battle/status/happy] + - [auto, ci4, ui/battle/status/hp_drain, 40, 16] + - [auto, palette, ui/battle/status/hp_drain] + - [auto, ci4, ui/move_basic, 32, 32] + - [auto, palette, ui/move_basic] + - [auto, palette, ui/move_basic.disabled] + - [auto, ci4, ui/move_partner_1, 32, 32] + - [auto, palette, ui/move_partner_1] + - [auto, palette, ui/move_partner_1.disabled] + - [auto, ci4, ui/move_partner_2, 32, 32] + - [auto, palette, ui/move_partner_2] + - [auto, palette, ui/move_partner_2.disabled] + - [auto, ci4, ui/move_partner_3, 32, 32] + - [auto, palette, ui/move_partner_3] + - [auto, palette, ui/move_partner_3.disabled] - [0x9D650] - [0x9D658, rgba32, ui/stat_heart, 16, 16] - [0x9DA58] @@ -804,16 +803,16 @@ segments: subsegments: - [0xA2D90] - [0xA2E90, ia8, ui/box/corners9, 16, 64] - - [0xA3290, ia8, ui/box/corners8, 24, 96] - - [0xA3B90, ia8, ui/box/corners6, 16, 40] - - [0xA3E10, ia8, ui/box/corners7, 16, 32] - - [0xA4010, ia8, ui/box/corners3, 16, 96] - - [0xA4610, ia8, ui/box/corners5, 16, 32] - - [0xA4810, ia8, ui/box/corners4, 8, 32] - - [0xA4910, i4, ui/box/bg_tile, 16, 16] - - [0xA4990, ia8, ui/box/corners1, 16, 64] - - [0xA4D90, i4, ui/box/corners2, 16, 64] - - [0xA4F90, i4, ui/box/bg_flat, 16, 1] + - [auto, ia8, ui/box/corners8, 24, 96] + - [auto, ia8, ui/box/corners6, 16, 40] + - [auto, ia8, ui/box/corners7, 16, 32] + - [auto, ia8, ui/box/corners3, 16, 96] + - [auto, ia8, ui/box/corners5, 16, 32] + - [auto, ia8, ui/box/corners4, 8, 32] + - [auto, i4, ui/box/bg_tile, 16, 16] + - [auto, ia8, ui/box/corners1, 16, 64] + - [auto, i4, ui/box/corners2, 16, 64] + - [auto, i4, ui/box/bg_flat, 16, 1] - [0xA4F98] - [0xA5078, vtx, vtx/drawbox1] - [0xA50B8] @@ -970,79 +969,78 @@ segments: type: .data name: msg_data_2 subsegments: - - [0x10CE00] - [0x10CEB0, ci4, ui/msg/bubble_left, 32, 64, ui/msg/bubble_left] - - [0x10D2B0, ci4, ui/msg/bubble_mid, 8, 64, ui/msg/bubble_left] - - [0x10D3B0, ci4, ui/msg/bubble_right, 32, 64, ui/msg/bubble_left] - - [0x10D7B0, ci4, ui/msg/arrow, 16, 16, ui/msg/bubble_left] - - [0x10D830, ci4, ui/msg/frame_a_1_1, 8, 8, ui/msg/bubble_left] - - [0x10D850, ci4, ui/msg/frame_a_1_2, 8, 8, ui/msg/bubble_left] - - [0x10D870, ci4, ui/msg/frame_a_1_3, 8, 8, ui/msg/bubble_left] - - [0x10D890, ci4, ui/msg/frame_a_1_4, 8, 8, ui/msg/bubble_left] - - [0x10D8B0, ci4, ui/msg/frame_a_1_5, 8, 8, ui/msg/bubble_left] - - [0x10D8D0, ci4, ui/msg/frame_a_2_1, 8, 8, ui/msg/bubble_left] - - [0x10D8F0, ci4, ui/msg/frame_a_2_5, 8, 8, ui/msg/bubble_left] - - [0x10D910, ci4, ui/msg/frame_a_3_1, 8, 8, ui/msg/bubble_left] - - [0x10D930, ci4, ui/msg/frame_a_3_5, 8, 8, ui/msg/bubble_left] - - [0x10D950, ci4, ui/msg/frame_a_4_1, 8, 8, ui/msg/bubble_left] - - [0x10D970, ci4, ui/msg/frame_a_4_5, 8, 8, ui/msg/bubble_left] - - [0x10D990, ci4, ui/msg/frame_a_5_1, 8, 8, ui/msg/bubble_left] - - [0x10D9B0, ci4, ui/msg/frame_a_5_2, 8, 8, ui/msg/bubble_left] - - [0x10D9D0, ci4, ui/msg/frame_a_5_3, 8, 8, ui/msg/bubble_left] - - [0x10D9F0, ci4, ui/msg/frame_a_5_4, 8, 8, ui/msg/bubble_left] - - [0x10DA10, ci4, ui/msg/frame_a_5_5, 8, 8, ui/msg/bubble_left] - - [0x10DA30, ci4, ui/msg/frame_b_1_1, 8, 8, ui/msg/bubble_left] - - [0x10DA50, ci4, ui/msg/frame_b_1_2, 8, 8, ui/msg/bubble_left] - - [0x10DA70, ci4, ui/msg/frame_b_1_3, 8, 8, ui/msg/bubble_left] - - [0x10DA90, ci4, ui/msg/frame_b_1_4, 8, 8, ui/msg/bubble_left] - - [0x10DAB0, ci4, ui/msg/frame_b_1_5, 8, 8, ui/msg/bubble_left] - - [0x10DAD0, ci4, ui/msg/frame_b_2_1, 8, 8, ui/msg/bubble_left] - - [0x10DAF0, ci4, ui/msg/frame_b_2_5, 8, 8, ui/msg/bubble_left] - - [0x10DB10, ci4, ui/msg/frame_b_3_1, 8, 8, ui/msg/bubble_left] - - [0x10DB30, ci4, ui/msg/frame_b_3_5, 8, 8, ui/msg/bubble_left] - - [0x10DB50, ci4, ui/msg/frame_b_4_1, 8, 8, ui/msg/bubble_left] - - [0x10DB70, ci4, ui/msg/frame_b_4_5, 8, 8, ui/msg/bubble_left] - - [0x10DB90, ci4, ui/msg/frame_b_5_1, 8, 8, ui/msg/bubble_left] - - [0x10DBB0, ci4, ui/msg/frame_b_5_2, 8, 8, ui/msg/bubble_left] - - [0x10DBD0, ci4, ui/msg/frame_b_5_3, 8, 8, ui/msg/bubble_left] - - [0x10DBF0, ci4, ui/msg/frame_b_5_4, 8, 8, ui/msg/bubble_left] - - [0x10DC10, ci4, ui/msg/frame_b_5_5, 8, 8, ui/msg/bubble_left] + - [auto, ci4, ui/msg/bubble_mid, 8, 64, ui/msg/bubble_left] + - [auto, ci4, ui/msg/bubble_right, 32, 64, ui/msg/bubble_left] + - [auto, ci4, ui/msg/arrow, 16, 16, ui/msg/bubble_left] + - [auto, ci4, ui/msg/frame_a_1_1, 8, 8, ui/msg/bubble_left] + - [auto, ci4, ui/msg/frame_a_1_2, 8, 8, ui/msg/bubble_left] + - [auto, ci4, ui/msg/frame_a_1_3, 8, 8, ui/msg/bubble_left] + - [auto, ci4, ui/msg/frame_a_1_4, 8, 8, ui/msg/bubble_left] + - [auto, ci4, ui/msg/frame_a_1_5, 8, 8, ui/msg/bubble_left] + - [auto, ci4, ui/msg/frame_a_2_1, 8, 8, ui/msg/bubble_left] + - [auto, ci4, ui/msg/frame_a_2_5, 8, 8, ui/msg/bubble_left] + - [auto, ci4, ui/msg/frame_a_3_1, 8, 8, ui/msg/bubble_left] + - [auto, ci4, ui/msg/frame_a_3_5, 8, 8, ui/msg/bubble_left] + - [auto, ci4, ui/msg/frame_a_4_1, 8, 8, ui/msg/bubble_left] + - [auto, ci4, ui/msg/frame_a_4_5, 8, 8, ui/msg/bubble_left] + - [auto, ci4, ui/msg/frame_a_5_1, 8, 8, ui/msg/bubble_left] + - [auto, ci4, ui/msg/frame_a_5_2, 8, 8, ui/msg/bubble_left] + - [auto, ci4, ui/msg/frame_a_5_3, 8, 8, ui/msg/bubble_left] + - [auto, ci4, ui/msg/frame_a_5_4, 8, 8, ui/msg/bubble_left] + - [auto, ci4, ui/msg/frame_a_5_5, 8, 8, ui/msg/bubble_left] + - [auto, ci4, ui/msg/frame_b_1_1, 8, 8, ui/msg/bubble_left] + - [auto, ci4, ui/msg/frame_b_1_2, 8, 8, ui/msg/bubble_left] + - [auto, ci4, ui/msg/frame_b_1_3, 8, 8, ui/msg/bubble_left] + - [auto, ci4, ui/msg/frame_b_1_4, 8, 8, ui/msg/bubble_left] + - [auto, ci4, ui/msg/frame_b_1_5, 8, 8, ui/msg/bubble_left] + - [auto, ci4, ui/msg/frame_b_2_1, 8, 8, ui/msg/bubble_left] + - [auto, ci4, ui/msg/frame_b_2_5, 8, 8, ui/msg/bubble_left] + - [auto, ci4, ui/msg/frame_b_3_1, 8, 8, ui/msg/bubble_left] + - [auto, ci4, ui/msg/frame_b_3_5, 8, 8, ui/msg/bubble_left] + - [auto, ci4, ui/msg/frame_b_4_1, 8, 8, ui/msg/bubble_left] + - [auto, ci4, ui/msg/frame_b_4_5, 8, 8, ui/msg/bubble_left] + - [auto, ci4, ui/msg/frame_b_5_1, 8, 8, ui/msg/bubble_left] + - [auto, ci4, ui/msg/frame_b_5_2, 8, 8, ui/msg/bubble_left] + - [auto, ci4, ui/msg/frame_b_5_3, 8, 8, ui/msg/bubble_left] + - [auto, ci4, ui/msg/frame_b_5_4, 8, 8, ui/msg/bubble_left] + - [auto, ci4, ui/msg/frame_b_5_5, 8, 8, ui/msg/bubble_left] # all 16 following palettes can be applied to all images above - - [0x10DC30, palette, ui/msg/bubble_left] - #- [0x10DC30, palette, ui/msg/palette_0] - #- [0x10DC50, palette, ui/msg/palette_1] - #- [0x10DC70, palette, ui/msg/palette_2] - #- [0x10DC90, palette, ui/msg/palette_3] - #- [0x10DCB0, palette, ui/msg/palette_4] - #- [0x10DCD0, palette, ui/msg/palette_5] - #- [0x10DCF0, palette, ui/msg/palette_6] - #- [0x10DD10, palette, ui/msg/palette_7] - #- [0x10DD30, palette, ui/msg/palette_8] - #- [0x10DD50, palette, ui/msg/palette_9] - #- [0x10DD70, palette, ui/msg/palette_A] - #- [0x10DD90, palette, ui/msg/palette_B] - #- [0x10DDB0, palette, ui/msg/palette_C] - #- [0x10DDD0, palette, ui/msg/palette_D] - #- [0x10DDF0, palette, ui/msg/palette_E] - #- [0x10DE10, palette, ui/msg/palette_F] - - [0x10DE30, ci4, ui/msg/sign_corner_topleft, 16, 16, ui/msg/sign_corner_topleft] - - [0x10DEB0, ci4, ui/msg/sign_corner_topright, 16, 16, ui/msg/sign_corner_topleft] - - [0x10DF30, ci4, ui/msg/sign_corner_bottomleft, 16, 16, ui/msg/sign_corner_topleft] - - [0x10DFB0, ci4, ui/msg/sign_corner_bottomright, 16, 16, ui/msg/sign_corner_topleft] - - [0x10E030, ci4, ui/msg/lamppost_corner_bottomright, 16, 16, ui/msg/lamppost_corner_bottomright] - - [0x10E0B0, ci4, ui/msg/sign_side_top, 32, 16, ui/msg/sign_corner_topleft] - - [0x10E1B0, ci4, ui/msg/sign_side_left, 16, 40, ui/msg/sign_corner_topleft] - - [0x10E2F0, ci4, ui/msg/sign_side_right, 16, 40, ui/msg/sign_corner_topleft] - - [0x10E430, ci4, ui/msg/sign_side_bottom, 32, 16, ui/msg/sign_corner_topleft] - - [0x10E530, ci4, ui/msg/sign_fill, 8, 8, ui/msg/sign_corner_topleft] + - {start: auto, type: palette, name: ui/msg/bubble_left, size: 0x200} + #- [auto, palette, ui/msg/palette_0] + #- [auto, palette, ui/msg/palette_1] + #- [auto, palette, ui/msg/palette_2] + #- [auto, palette, ui/msg/palette_3] + #- [auto, palette, ui/msg/palette_4] + #- [auto, palette, ui/msg/palette_5] + #- [auto, palette, ui/msg/palette_6] + #- [auto, palette, ui/msg/palette_7] + #- [auto, palette, ui/msg/palette_8] + #- [auto, palette, ui/msg/palette_9] + #- [auto, palette, ui/msg/palette_A] + #- [auto, palette, ui/msg/palette_B] + #- [auto, palette, ui/msg/palette_C] + #- [auto, palette, ui/msg/palette_D] + #- [auto, palette, ui/msg/palette_E] + #- [auto, palette, ui/msg/palette_F] + - [auto, ci4, ui/msg/sign_corner_topleft, 16, 16, ui/msg/sign_corner_topleft] + - [auto, ci4, ui/msg/sign_corner_topright, 16, 16, ui/msg/sign_corner_topleft] + - [auto, ci4, ui/msg/sign_corner_bottomleft, 16, 16, ui/msg/sign_corner_topleft] + - [auto, ci4, ui/msg/sign_corner_bottomright, 16, 16, ui/msg/sign_corner_topleft] + - [auto, ci4, ui/msg/lamppost_corner_bottomright, 16, 16, ui/msg/lamppost_corner_bottomright] + - [auto, ci4, ui/msg/sign_side_top, 32, 16, ui/msg/sign_corner_topleft] + - [auto, ci4, ui/msg/sign_side_left, 16, 40, ui/msg/sign_corner_topleft] + - [auto, ci4, ui/msg/sign_side_right, 16, 40, ui/msg/sign_corner_topleft] + - [auto, ci4, ui/msg/sign_side_bottom, 32, 16, ui/msg/sign_corner_topleft] + - [auto, ci4, ui/msg/sign_fill, 8, 8, ui/msg/sign_corner_topleft] # these two palettes can be applied to all sign and lamppost frame images - - [0x10E550, palette, ui/msg/sign_corner_topleft] - - [0x10E570, palette, ui/msg/lamppost_corner_bottomright] - - [0x10E590, i4, ui/msg/background, 64, 64] - - [0x10ED90, ci4, ui/msg/rewind_arrow, 24, 24] - - [0x10EEB0, palette, ui/msg/rewind_arrow] - - [0x10EED0, rgba16, ui/msg/star, 16, 18] - - [0x10F110, i4, ui/msg/star_silhouette, 16, 20] + - [auto, palette, ui/msg/sign_corner_topleft] + - [auto, palette, ui/msg/lamppost_corner_bottomright] + - [auto, i4, ui/msg/background, 64, 64] + - [auto, ci4, ui/msg/rewind_arrow, 24, 24] + - [auto, palette, ui/msg/rewind_arrow] + - [auto, rgba16, ui/msg/star, 16, 18] + - [auto, i4, ui/msg/star_silhouette, 16, 20] - type: code name: heaps3 start: 0x10F1B0 @@ -1127,157 +1125,157 @@ segments: vram: 0x8023E000 vram_of_symbol: battle_code_vram_start subsegments: - - [0x131340, ci4, ui/pause/unused_badge_points, 24, 24] - - [0x131460, palette, ui/pause/unused_badge_points] - - [0x131480, palette, ui/pause/unused_badge_points.disabled] - - [0x1314A0, ci4, ui/pause/unused_compass, 24, 24] - - [0x1315C0, palette, ui/pause/unused_compass] - - [0x1315E0, palette, ui/pause/unused_compass.disabled] - - [0x131600, ci4, ui/pause/cursor_hand, 16, 16] - - [0x131680, palette, ui/pause/cursor_hand] - - [0x1316A0, ci4, ui/files/filename_caret, 16, 16] - - [0x131720, palette, ui/files/filename_caret] - - [0x131740, ci4, ui/files/filename_space, 8, 8] - - [0x131760, palette, ui/files/filename_space] - - [0x131780, ci4, ui/pause/label_stats, 48, 16] - - [0x131900, palette, ui/pause/label_stats] - - [0x131920, ci4, ui/pause/label_badges, 48, 16] - - [0x131AA0, palette, ui/pause/label_badges] - - [0x131AC0, ci4, ui/pause/label_items, 48, 16] - - [0x131C40, palette, ui/pause/label_items] - - [0x131C60, ci4, ui/pause/label_party, 48, 16] - - [0x131DE0, palette, ui/pause/label_party] - - [0x131E00, ci4, ui/pause/label_spirits, 48, 16] - - [0x131F80, palette, ui/pause/label_spirits] - - [0x131FA0, ci4, ui/pause/label_map, 48, 16] - - [0x132120, palette, ui/pause/label_map] - - [0x132140, ci4, ui/pause/small_digit_0, 8, 8] - - [0x132160, palette, ui/pause/small_digit_0] - - [0x132180, ci4, ui/pause/small_digit_1, 8, 8] - - [0x1321A0, palette, ui/pause/small_digit_1] - - [0x1321C0, ci4, ui/pause/small_digit_2, 8, 8] - - [0x1321E0, palette, ui/pause/small_digit_2] - - [0x132200, ci4, ui/pause/small_digit_3, 8, 8] - - [0x132220, palette, ui/pause/small_digit_3] - - [0x132240, ci4, ui/pause/small_digit_4, 8, 8] - - [0x132260, palette, ui/pause/small_digit_4] - - [0x132280, ci4, ui/pause/small_digit_5, 8, 8] - - [0x1322A0, palette, ui/pause/small_digit_5] - - [0x1322C0, ci4, ui/pause/small_digit_6, 8, 8] - - [0x1322E0, palette, ui/pause/small_digit_6] - - [0x132300, ci4, ui/pause/small_digit_7, 8, 8] - - [0x132320, palette, ui/pause/small_digit_7] - - [0x132340, ci4, ui/pause/small_digit_8, 8, 8] - - [0x132360, palette, ui/pause/small_digit_8] - - [0x132380, ci4, ui/pause/small_digit_9, 8, 8] - - [0x1323A0, palette, ui/pause/small_digit_9] - - [0x1323C0, ci4, ui/pause/small_text_bp, 8, 8] - - [0x1323E0, palette, ui/pause/small_text_bp] - - [0x132400, ci4, ui/pause/label_jp_file, 32, 16] - - [0x132500, palette, ui/pause/label_jp_file] - - [0x132520, ci4, ui/pause/label_jp_file_disabled, 32, 16] - - [0x132620, palette, ui/pause/label_jp_file_disabled] - - [0x132640, ci4, ui/files/option_mono_on, 64, 16] - - [0x132840, palette, ui/files/option_mono_on] - - [0x132860, ci4, ui/files/option_mono_off, 64, 16] - - [0x132A60, palette, ui/files/option_mono_off] - - [0x132A80, ci4, ui/files/option_stereo_on, 64, 16] - - [0x132C80, palette, ui/files/option_stereo_on] - - [0x132CA0, ci4, ui/files/option_stereo_off, 64, 16] - - [0x132EA0, palette, ui/files/option_stereo_off] - - [0x132EC0, ci4, ui/files/eldstar, 16, 16] - - [0x132F40, palette, ui/files/eldstar] - - [0x132F60, ci4, ui/files/eldstar_silhouette, 16, 16] - - [0x132FE0, palette, ui/files/eldstar_silhouette] - - [0x133000, ci4, ui/files/mamar, 16, 16] - - [0x133080, palette, ui/files/mamar] - - [0x1330A0, ci4, ui/files/mamar_silhouette, 16, 16] - - [0x133120, palette, ui/files/mamar_silhouette] - - [0x133140, ci4, ui/files/skolar, 16, 16] - - [0x1331C0, palette, ui/files/skolar] - - [0x1331E0, ci4, ui/files/skolar_silhouette, 16, 16] - - [0x133260, palette, ui/files/skolar_silhouette] - - [0x133280, ci4, ui/files/muskular, 16, 16] - - [0x133300, palette, ui/files/muskular] - - [0x133320, ci4, ui/files/muskular_silhouette, 16, 16] - - [0x1333A0, palette, ui/files/muskular_silhouette] - - [0x1333C0, ci4, ui/files/misstar, 16, 16] - - [0x133440, palette, ui/files/misstar] - - [0x133460, ci4, ui/files/misstar_silhouette, 16, 16] - - [0x1334E0, palette, ui/files/misstar_silhouette] - - [0x133500, ci4, ui/files/klevar, 16, 16] - - [0x133580, palette, ui/files/klevar] - - [0x1335A0, ci4, ui/files/klevar_silhouette, 16, 16] - - [0x133620, palette, ui/files/klevar_silhouette] - - [0x133640, ci4, ui/files/kalmar, 16, 16] - - [0x1336C0, palette, ui/files/kalmar] - - [0x1336E0, ci4, ui/files/kalmar_silhouette, 16, 16] - - [0x133760, palette, ui/files/kalmar_silhouette] - - [0x133780, ci4, ui/pause/map_walk0, 24, 24] - - [0x1338A0, palette, ui/pause/map_walk0] - - [0x1338C0, ci4, ui/pause/map_walk1, 24, 24] - - [0x1339E0, palette, ui/pause/map_walk1] - - [0x133A00, ci4, ui/pause/map_walk2, 24, 24] - - [0x133B20, palette, ui/pause/map_walk2] - - [0x133B40, ci4, ui/pause/jp_super, 40, 16] - - [0x133C80, palette, ui/pause/jp_super] - - [0x133CA0, ci4, ui/pause/jp_ultra, 40, 16] - - [0x133DE0, palette, ui/pause/jp_ultra] - - [0x133E00, ci4, ui/pause/list_prev_page, 16, 16] - - [0x133E80, palette, ui/pause/list_prev_page] - - [0x133EA0, ci4, ui/pause/list_next_page, 16, 16] - - [0x133F20, palette, ui/pause/list_next_page] - - [0x133F40, ci4, ui/pause/unused_z_up_arrow, 16, 16] - - [0x133FC0, palette, ui/pause/unused_z_up_arrow] - - [0x133FE0, ci4, ui/pause/unused_r_down_arrow, 16, 16] - - [0x134060, palette, ui/pause/unused_r_down_arrow] - - [0x134080, ci4, ui/pause/desc_msg_prev, 16, 16] - - [0x134100, palette, ui/pause/desc_msg_prev] - - [0x134120, ci4, ui/pause/desc_msg_next, 16, 16] - - [0x1341A0, palette, ui/pause/desc_msg_next] - - [0x1341C0, ci4, ui/pause/bp_needed, 48, 8] - - [0x134280, palette, ui/pause/bp_needed] - - [0x1342A0, ci4, ui/pause/mario_large, 32, 32] - - [0x1344A0, palette, ui/pause/mario_large] - - [0x1344C0, ci4, ui/pause/dash, 16, 8] - - [0x134500, palette, ui/pause/dash] - - [0x134520, ci4, ui/pause/stat_bp, 16, 16] - - [0x1345A0, palette, ui/pause/stat_bp] - - [0x1345C0, ci4, ui/pause/stat_mario, 16, 16] - - [0x134640, palette, ui/pause/stat_mario] - - [0x134660, ci4, ui/pause/stat_time, 16, 16] - - [0x1346E0, palette, ui/pause/stat_time] - - [0x134700, ci4, ui/pause/stat_star_piece0, 16, 16] - - [0x134780, palette, ui/pause/stat_star_piece0] - - [0x1347A0, ci4, ui/pause/stat_star_piece1, 16, 16] - - [0x134820, palette, ui/pause/stat_star_piece1] - - [0x134840, ci4, ui/pause/stat_star_piece2, 16, 16] - - [0x1348C0, palette, ui/pause/stat_star_piece2] - - [0x1348E0, ci4, ui/pause/stat_fp, 16, 16] - - [0x134960, palette, ui/pause/stat_fp] - - [0x134980, ci4, ui/pause/stat_times, 8, 8] - - [0x1349A0, palette, ui/pause/stat_times] - - [0x1349C0, ci4, ui/pause/stat_boots0, 16, 16] - - [0x134A40, palette, ui/pause/stat_boots0] - - [0x134A60, ci4, ui/pause/stat_boots1, 16, 16] - - [0x134AE0, palette, ui/pause/stat_boots1] - - [0x134B00, ci4, ui/pause/stat_boots2, 16, 16] - - [0x134B80, palette, ui/pause/stat_boots2] - - [0x134BA0, ci4, ui/pause/stat_boots3, 16, 16] - - [0x134C20, palette, ui/pause/stat_boots3] - - [0x134C40, ci4, ui/pause/stat_hammer0, 16, 16] - - [0x134CC0, palette, ui/pause/stat_hammer0] - - [0x134CE0, ci4, ui/pause/stat_hammer1, 16, 16] - - [0x134D60, palette, ui/pause/stat_hammer1] - - [0x134D80, ci4, ui/pause/stat_hammer2, 16, 16] - - [0x134E00, palette, ui/pause/stat_hammer2] - - [0x134E20, ci4, ui/pause/stat_hammer3, 16, 16] - - [0x134EA0, palette, ui/pause/stat_hammer3] - - [0x134EC0, ci4, ui/pause/partner_rank, 16, 16] - - [0x134F40, palette, ui/pause/partner_rank] - - [0x134F60, ci4, ui/pause/unused_bubble, 56, 16] - - [0x135120, palette, ui/pause/unused_bubble] - - [0x135140, .data, menu_hud_scripts] + - [auto, ci4, ui/pause/unused_badge_points, 24, 24] + - [auto, palette, ui/pause/unused_badge_points] + - [auto, palette, ui/pause/unused_badge_points.disabled] + - [auto, ci4, ui/pause/unused_compass, 24, 24] + - [auto, palette, ui/pause/unused_compass] + - [auto, palette, ui/pause/unused_compass.disabled] + - [auto, ci4, ui/pause/cursor_hand, 16, 16] + - [auto, palette, ui/pause/cursor_hand] + - [auto, ci4, ui/files/filename_caret, 16, 16] + - [auto, palette, ui/files/filename_caret] + - [auto, ci4, ui/files/filename_space, 8, 8] + - [auto, palette, ui/files/filename_space] + - [auto, ci4, ui/pause/label_stats, 48, 16] + - [auto, palette, ui/pause/label_stats] + - [auto, ci4, ui/pause/label_badges, 48, 16] + - [auto, palette, ui/pause/label_badges] + - [auto, ci4, ui/pause/label_items, 48, 16] + - [auto, palette, ui/pause/label_items] + - [auto, ci4, ui/pause/label_party, 48, 16] + - [auto, palette, ui/pause/label_party] + - [auto, ci4, ui/pause/label_spirits, 48, 16] + - [auto, palette, ui/pause/label_spirits] + - [auto, ci4, ui/pause/label_map, 48, 16] + - [auto, palette, ui/pause/label_map] + - [auto, ci4, ui/pause/small_digit_0, 8, 8] + - [auto, palette, ui/pause/small_digit_0] + - [auto, ci4, ui/pause/small_digit_1, 8, 8] + - [auto, palette, ui/pause/small_digit_1] + - [auto, ci4, ui/pause/small_digit_2, 8, 8] + - [auto, palette, ui/pause/small_digit_2] + - [auto, ci4, ui/pause/small_digit_3, 8, 8] + - [auto, palette, ui/pause/small_digit_3] + - [auto, ci4, ui/pause/small_digit_4, 8, 8] + - [auto, palette, ui/pause/small_digit_4] + - [auto, ci4, ui/pause/small_digit_5, 8, 8] + - [auto, palette, ui/pause/small_digit_5] + - [auto, ci4, ui/pause/small_digit_6, 8, 8] + - [auto, palette, ui/pause/small_digit_6] + - [auto, ci4, ui/pause/small_digit_7, 8, 8] + - [auto, palette, ui/pause/small_digit_7] + - [auto, ci4, ui/pause/small_digit_8, 8, 8] + - [auto, palette, ui/pause/small_digit_8] + - [auto, ci4, ui/pause/small_digit_9, 8, 8] + - [auto, palette, ui/pause/small_digit_9] + - [auto, ci4, ui/pause/small_text_bp, 8, 8] + - [auto, palette, ui/pause/small_text_bp] + - [auto, ci4, ui/pause/label_jp_file, 32, 16] + - [auto, palette, ui/pause/label_jp_file] + - [auto, ci4, ui/pause/label_jp_file_disabled, 32, 16] + - [auto, palette, ui/pause/label_jp_file_disabled] + - [auto, ci4, ui/files/option_mono_on, 64, 16] + - [auto, palette, ui/files/option_mono_on] + - [auto, ci4, ui/files/option_mono_off, 64, 16] + - [auto, palette, ui/files/option_mono_off] + - [auto, ci4, ui/files/option_stereo_on, 64, 16] + - [auto, palette, ui/files/option_stereo_on] + - [auto, ci4, ui/files/option_stereo_off, 64, 16] + - [auto, palette, ui/files/option_stereo_off] + - [auto, ci4, ui/files/eldstar, 16, 16] + - [auto, palette, ui/files/eldstar] + - [auto, ci4, ui/files/eldstar_silhouette, 16, 16] + - [auto, palette, ui/files/eldstar_silhouette] + - [auto, ci4, ui/files/mamar, 16, 16] + - [auto, palette, ui/files/mamar] + - [auto, ci4, ui/files/mamar_silhouette, 16, 16] + - [auto, palette, ui/files/mamar_silhouette] + - [auto, ci4, ui/files/skolar, 16, 16] + - [auto, palette, ui/files/skolar] + - [auto, ci4, ui/files/skolar_silhouette, 16, 16] + - [auto, palette, ui/files/skolar_silhouette] + - [auto, ci4, ui/files/muskular, 16, 16] + - [auto, palette, ui/files/muskular] + - [auto, ci4, ui/files/muskular_silhouette, 16, 16] + - [auto, palette, ui/files/muskular_silhouette] + - [auto, ci4, ui/files/misstar, 16, 16] + - [auto, palette, ui/files/misstar] + - [auto, ci4, ui/files/misstar_silhouette, 16, 16] + - [auto, palette, ui/files/misstar_silhouette] + - [auto, ci4, ui/files/klevar, 16, 16] + - [auto, palette, ui/files/klevar] + - [auto, ci4, ui/files/klevar_silhouette, 16, 16] + - [auto, palette, ui/files/klevar_silhouette] + - [auto, ci4, ui/files/kalmar, 16, 16] + - [auto, palette, ui/files/kalmar] + - [auto, ci4, ui/files/kalmar_silhouette, 16, 16] + - [auto, palette, ui/files/kalmar_silhouette] + - [auto, ci4, ui/pause/map_walk0, 24, 24] + - [auto, palette, ui/pause/map_walk0] + - [auto, ci4, ui/pause/map_walk1, 24, 24] + - [auto, palette, ui/pause/map_walk1] + - [auto, ci4, ui/pause/map_walk2, 24, 24] + - [auto, palette, ui/pause/map_walk2] + - [auto, ci4, ui/pause/jp_super, 40, 16] + - [auto, palette, ui/pause/jp_super] + - [auto, ci4, ui/pause/jp_ultra, 40, 16] + - [auto, palette, ui/pause/jp_ultra] + - [auto, ci4, ui/pause/list_prev_page, 16, 16] + - [auto, palette, ui/pause/list_prev_page] + - [auto, ci4, ui/pause/list_next_page, 16, 16] + - [auto, palette, ui/pause/list_next_page] + - [auto, ci4, ui/pause/unused_z_up_arrow, 16, 16] + - [auto, palette, ui/pause/unused_z_up_arrow] + - [auto, ci4, ui/pause/unused_r_down_arrow, 16, 16] + - [auto, palette, ui/pause/unused_r_down_arrow] + - [auto, ci4, ui/pause/desc_msg_prev, 16, 16] + - [auto, palette, ui/pause/desc_msg_prev] + - [auto, ci4, ui/pause/desc_msg_next, 16, 16] + - [auto, palette, ui/pause/desc_msg_next] + - [auto, ci4, ui/pause/bp_needed, 48, 8] + - [auto, palette, ui/pause/bp_needed] + - [auto, ci4, ui/pause/mario_large, 32, 32] + - [auto, palette, ui/pause/mario_large] + - [auto, ci4, ui/pause/dash, 16, 8] + - [auto, palette, ui/pause/dash] + - [auto, ci4, ui/pause/stat_bp, 16, 16] + - [auto, palette, ui/pause/stat_bp] + - [auto, ci4, ui/pause/stat_mario, 16, 16] + - [auto, palette, ui/pause/stat_mario] + - [auto, ci4, ui/pause/stat_time, 16, 16] + - [auto, palette, ui/pause/stat_time] + - [auto, ci4, ui/pause/stat_star_piece0, 16, 16] + - [auto, palette, ui/pause/stat_star_piece0] + - [auto, ci4, ui/pause/stat_star_piece1, 16, 16] + - [auto, palette, ui/pause/stat_star_piece1] + - [auto, ci4, ui/pause/stat_star_piece2, 16, 16] + - [auto, palette, ui/pause/stat_star_piece2] + - [auto, ci4, ui/pause/stat_fp, 16, 16] + - [auto, palette, ui/pause/stat_fp] + - [auto, ci4, ui/pause/stat_times, 8, 8] + - [auto, palette, ui/pause/stat_times] + - [auto, ci4, ui/pause/stat_boots0, 16, 16] + - [auto, palette, ui/pause/stat_boots0] + - [auto, ci4, ui/pause/stat_boots1, 16, 16] + - [auto, palette, ui/pause/stat_boots1] + - [auto, ci4, ui/pause/stat_boots2, 16, 16] + - [auto, palette, ui/pause/stat_boots2] + - [auto, ci4, ui/pause/stat_boots3, 16, 16] + - [auto, palette, ui/pause/stat_boots3] + - [auto, ci4, ui/pause/stat_hammer0, 16, 16] + - [auto, palette, ui/pause/stat_hammer0] + - [auto, ci4, ui/pause/stat_hammer1, 16, 16] + - [auto, palette, ui/pause/stat_hammer1] + - [auto, ci4, ui/pause/stat_hammer2, 16, 16] + - [auto, palette, ui/pause/stat_hammer2] + - [auto, ci4, ui/pause/stat_hammer3, 16, 16] + - [auto, palette, ui/pause/stat_hammer3] + - [auto, ci4, ui/pause/partner_rank, 16, 16] + - [auto, palette, ui/pause/partner_rank] + - [auto, ci4, ui/pause/unused_bubble, 56, 16] + - [auto, palette, ui/pause/unused_bubble] + - [auto, .data, menu_hud_scripts] - type: code dir: pause start: 0x135EE0 @@ -1353,16 +1351,16 @@ segments: - [auto, .data, filemenu_main] - [auto, .data, filemenu_yesno] - [auto, .data, filemenu_info] - - [0x16A9E0, .data, filemenu_createfile] + - [auto, .data, filemenu_createfile] - start: 0x16AA60 type: .data name: filemenu_gfx subsegments: - - [0x16AA60, ia4, copyarrow, 64, 16] - - [0x16AC60, rgba32, corners_yellow, 16, 64] - - [0x16BC60, ia8, corners_gray, 16, 32] - - [0x16BE60, .data, filemenu_gfx] - - [0x16BF90, .data, filemenu_msg] + - [auto, ia4, copyarrow, 64, 16] + - [auto, rgba32, corners_yellow, 16, 64] + - [auto, ia8, corners_gray, 16, 32] + - [auto, .data, filemenu_gfx] + - [auto, .data, filemenu_msg] - [auto, .data, filemenu_styles] - [0x16C7D0] - type: code @@ -1433,11 +1431,11 @@ segments: - [0x1B8B00, ci4, ui/battle/swap_arrow_left, 8, 16] - [0x1B8B40, palette, ui/battle/swap_arrow_left] - [0x1B8B60, ci4, ui/battle/swap_arrow_right, 8, 16] - - [0x1B8BA0, palette, ui/battle/swap_arrow_right] + - {start: 0x1B8BA0, type: palette, name: ui/battle/swap_arrow_right, size: 0x190} - [0x1B8D40, ci4, ui/battle/menu/spirits, 32, 32] - [0x1B8F40, palette, ui/battle/menu/spirits] - [0x1B8F60, ci4, ui/battle/yellow_arrow, 16, 16] - - [0x1B8FE0, palette, ui/battle/yellow_arrow] + - {start: 0x1B8FE0, type: palette, name: ui/battle/yellow_arrow, size: 0x140} - [0x1B9120, ci4, ui/battle/hp_bar, 32, 16] - [0x1B9220, palette, ui/battle/hp_bar] - [0x1B9240, ci4, ui/battle/hp_0, 8, 8] @@ -1579,9 +1577,9 @@ segments: type: code start: 0x1FE1B0 subsegments: - - [0x1FE1B0, rgba16, logo_n64, 128, 112] - - [0x2051B0, rgba16, logo_is, 256, 112] - - [0x2131B0, rgba16, logo_nintendo, 256, 48] + - [auto, rgba16, logo_n64, 128, 112] + - [auto, rgba16, logo_is, 256, 112] + - [auto, rgba16, logo_nintendo, 256, 48] - [0x2191B0, ci8, title/bg_1, 264, 162] - [0x2238C0, palette, title/bg_1] - [0x223AC0, ci8, title/bg_2, 264, 162] @@ -4114,11 +4112,11 @@ segments: - [0x3AB450, ci4, D_09000420_3AB450, 32, 64] - [0x3AB850, palette, D_09000420_3AB450] - [0x3AB870, ci4, D_09000840_3AB870, 32, 64] - - [0x3ABC70, palette, D_09000840_3AB870] + - {start: 0x3ABC70, type: palette, name: D_09000840_3AB870, size: 0x10} - [0x3ABC80, ci4, D_09000C50_3ABC80, 32, 64] - [0x3AC080, palette, D_09000C50_3ABC80] - [0x3AC0A0, ci4, D_09001070_3AC0A0, 32, 64] - - [0x3AC4A0, palette, D_09001070_3AC0A0] + - {start: 0x3AC4A0, type: palette, name: D_09001070_3AC0A0, size: 0x10} - [0x3AC4B0, ci4, D_09001480_3AC4B0, 32, 64] - [0x3AC8B0, palette, D_09001480_3AC4B0] - [0x3AC8D0, ci4, D_090018A0_3AC8D0, 32, 64]