mirror of
https://github.com/pmret/papermario.git
synced 2024-11-08 20:12:30 +01:00
bae34c46ed
* changes for splat 0.9.0 * wip * git subrepo pull --branch=develop --force tools/splat subrepo: subdir: "tools/splat" merged: "2ff7357501" upstream: origin: "https://github.com/ethteck/splat.git" branch: "develop" commit: "2ff7357501" git-subrepo: version: "0.4.3" origin: "https://github.com/ingydotnet/git-subrepo" commit: "2f68596" * OK * big_snowflakes gfx data * Jenkins? * cleanup * debuff effect gfx data * fix * more effect gfx data * dlabel * git subrepo pull --branch=experiment --force tools/splat subrepo: subdir: "tools/splat" merged: "1365775e09" upstream: origin: "https://github.com/ethteck/splat.git" branch: "experiment" commit: "1365775e09" git-subrepo: version: "0.4.3" origin: "https://github.com/ingydotnet/git-subrepo" commit: "2f68596" * . * git subrepo pull --branch=experiment --force tools/splat subrepo: subdir: "tools/splat" merged: "6bd9fe1c4e" upstream: origin: "https://github.com/ethteck/splat.git" branch: "experiment" commit: "6bd9fe1c4e" git-subrepo: version: "0.4.3" origin: "https://github.com/ingydotnet/git-subrepo" commit: "2f68596" * flower splash/trail gfx * throw_spiny gfx * disable_x and butterflies gfx data * draw_coin_sparkles * Warnings, cleanup * cleanin * attempt at test_item_player_collision * more gfx + cleanup * more effect gfx * func_8002D160 * update update_symbol_addrs and symbol_addrs * git subrepo pull --branch=develop --force tools/splat subrepo: subdir: "tools/splat" merged: "4914dc9029" upstream: origin: "https://github.com/ethteck/splat.git" branch: "develop" commit: "4914dc9029" git-subrepo: version: "0.4.3" origin: "https://github.com/ingydotnet/git-subrepo" commit: "2f68596" * git subrepo pull --branch=master --force tools/splat subrepo: subdir: "tools/splat" merged: "aa71299594" upstream: origin: "https://github.com/ethteck/splat.git" branch: "master" commit: "aa71299594" git-subrepo: version: "0.4.3" origin: "https://github.com/ingydotnet/git-subrepo" commit: "2f68596" * fix * fix regression * Add rabbitizer to requirements * warnings * symbol_addrs fixes
88 lines
2.3 KiB
Python
88 lines
2.3 KiB
Python
from yaml.loader import Loader
|
|
from segtypes.n64.segment import N64Segment
|
|
from util import options
|
|
import yaml as yaml_loader
|
|
|
|
class N64SegPm_effect_shims(N64Segment):
|
|
shims = []
|
|
|
|
@staticmethod
|
|
def get_shim_asm(index, name):
|
|
return f""".include "macro.inc"
|
|
|
|
# assembler directives
|
|
.set noat # allow manual use of $at
|
|
.set noreorder # don't insert nops after branches
|
|
.set gp=64 # allow use of 64-bit general purpose registers
|
|
|
|
.section .text, "ax"
|
|
|
|
glabel {name}
|
|
/* 0 3C01E020 */ lui $at, %hi(effectFuncs + 0x{index * 4:X})
|
|
/* 4 8C210694 */ lw $at, %lo(effectFuncs + 0x{index * 4:X})($at)
|
|
/* 8 00200008 */ jr $at
|
|
/* C 00000000 */ nop
|
|
"""
|
|
|
|
def shim_path(self, shim):
|
|
return options.get_build_path() / "asm" / "effect_shims" / f"{shim}.s"
|
|
|
|
def __init__(
|
|
self,
|
|
rom_start,
|
|
rom_end,
|
|
type,
|
|
name,
|
|
vram_start,
|
|
extract,
|
|
given_subalign,
|
|
exclusive_ram_id,
|
|
given_dir,
|
|
symbol_name_format,
|
|
symbol_name_format_no_rom,
|
|
args,
|
|
yaml,
|
|
):
|
|
super().__init__(
|
|
rom_start,
|
|
rom_end,
|
|
type,
|
|
name,
|
|
vram_start,
|
|
extract,
|
|
given_subalign,
|
|
exclusive_ram_id,
|
|
given_dir,
|
|
symbol_name_format=symbol_name_format,
|
|
symbol_name_format_no_rom=symbol_name_format_no_rom,
|
|
args=args,
|
|
yaml=yaml,
|
|
)
|
|
|
|
with open(options.get_asm_path() / ".." / "effect_shims.yaml") as f:
|
|
self.shims = yaml_loader.load(f.read(), Loader=yaml_loader.SafeLoader)
|
|
|
|
def split(self, rom_bytes):
|
|
for i, shim in enumerate(self.shims):
|
|
shim_asm = N64SegPm_effect_shims.get_shim_asm(i, shim)
|
|
|
|
self.shim_path("").parent.mkdir(parents=True, exist_ok=True)
|
|
|
|
with open(self.shim_path(shim), "w") as f:
|
|
f.write(shim_asm)
|
|
|
|
def get_linker_entries(self):
|
|
from segtypes.linker_entry import LinkerEntry
|
|
|
|
ret = []
|
|
|
|
for shim in self.shims:
|
|
ret.append(LinkerEntry(
|
|
self,
|
|
[self.shim_path(shim)],
|
|
self.shim_path(shim),
|
|
".text"
|
|
))
|
|
|
|
return ret
|