Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions src/mars_patcher/constants/credits.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
from enum import Enum


class LineType(Enum):
BLANK = 0
BLUE = 1
RED = 2
WHITE1 = 3
WHITE2 = 4
COPYRIGHT1 = 5
COPYRIGHT2 = 6
COPYRIGHT3 = 7
COPYRIGHT4 = 8
Comment on lines +10 to +13
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

surprised to see that both fusion and zm have 4 copyrights

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

END = 9


LINE_TYPE_VALS = {
LineType.BLANK: 0x5,
LineType.BLUE: 0x0,
LineType.RED: 0x1,
LineType.WHITE1: 0x3,
LineType.WHITE2: 0x2,
LineType.COPYRIGHT1: 0xA,
LineType.COPYRIGHT2: 0xB,
LineType.COPYRIGHT3: 0xC,
LineType.COPYRIGHT4: 0xD,
LineType.END: 0x6,
}

LINE_TYPE_HEIGHTS = {
LineType.BLANK: 1,
LineType.BLUE: 1,
LineType.RED: 1,
LineType.WHITE1: 1,
LineType.WHITE2: 2,
LineType.COPYRIGHT1: 1,
LineType.COPYRIGHT2: 1,
LineType.COPYRIGHT3: 1,
LineType.COPYRIGHT4: 1,
LineType.END: 0,
}

TEXT_LINE_TYPES = {LineType.BLUE, LineType.RED, LineType.WHITE1, LineType.WHITE2}
29 changes: 4 additions & 25 deletions src/mars_patcher/credits.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,12 @@
from mars_patcher.mf.auto_generated_types import MarsschemamfCreditstextItem
from mars_patcher.mf.constants.credits_lines import (
FUSION_STAFF_LINES,
from mars_patcher.constants.credits import (
LINE_TYPE_HEIGHTS,
LINE_TYPE_VALS,
MARS_CREDITS,
RDV_CREDITS,
TEXT_LINE_TYPES,
LineType,
)
from mars_patcher.mf.auto_generated_types import MarsschemamfCreditstextItem
from mars_patcher.rom import Rom

CREDITS_ADDR = 0x74B0B0
CREDITS_LEN = 0x2B98
FULL_LINE_LEN = 36
LINE_WIDTH = 30

Expand Down Expand Up @@ -46,26 +41,10 @@ def from_json(cls, data: MarsschemamfCreditstextItem) -> "CreditsLine":
return CreditsLine(line_type, blank_lines, text, centered)


def write_credits(rom: Rom, data: list[MarsschemamfCreditstextItem]) -> None:
writer = CreditsWriter(rom)
# Write MARS credits
lines = [CreditsLine(*line) for line in MARS_CREDITS]
writer.write_lines(lines)
# Write RDV credits
lines = [CreditsLine(*line) for line in RDV_CREDITS]
writer.write_lines(lines)
# Write custom credits
lines = [CreditsLine.from_json(d) for d in data]
writer.write_lines(lines)
# Write fusion staff credits
lines = [CreditsLine(*line) for line in FUSION_STAFF_LINES]
writer.write_lines(lines)


class CreditsWriter:
def __init__(self, rom: Rom):
def __init__(self, rom: Rom, addr: int):
self.rom = rom
self.addr = CREDITS_ADDR
self.addr = addr
self.num_lines = 0

def write_lines(self, lines: list[CreditsLine]) -> None:
Expand Down
44 changes: 1 addition & 43 deletions src/mars_patcher/mf/constants/credits_lines.py
Original file line number Diff line number Diff line change
@@ -1,46 +1,4 @@
from enum import Enum


class LineType(Enum):
BLANK = 0
BLUE = 1
RED = 2
WHITE1 = 3
WHITE2 = 4
COPYRIGHT1 = 5
COPYRIGHT2 = 6
COPYRIGHT3 = 7
COPYRIGHT4 = 8
END = 9


LINE_TYPE_VALS = {
LineType.BLANK: 0x5,
LineType.BLUE: 0x0,
LineType.RED: 0x1,
LineType.WHITE1: 0x3,
LineType.WHITE2: 0x2,
LineType.COPYRIGHT1: 0xA,
LineType.COPYRIGHT2: 0xB,
LineType.COPYRIGHT3: 0xC,
LineType.COPYRIGHT4: 0xD,
LineType.END: 0x6,
}

LINE_TYPE_HEIGHTS = {
LineType.BLANK: 1,
LineType.BLUE: 1,
LineType.RED: 1,
LineType.WHITE1: 1,
LineType.WHITE2: 2,
LineType.COPYRIGHT1: 1,
LineType.COPYRIGHT2: 1,
LineType.COPYRIGHT3: 1,
LineType.COPYRIGHT4: 1,
LineType.END: 0,
}

TEXT_LINE_TYPES = {LineType.BLUE, LineType.RED, LineType.WHITE1, LineType.WHITE2}
from mars_patcher.constants.credits import LineType

MARS_CREDITS = [
(LineType.WHITE2, 4, "MARS Development"),
Expand Down
30 changes: 30 additions & 0 deletions src/mars_patcher/mf/credits.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
from mars_patcher.credits import CreditsLine, CreditsWriter
from mars_patcher.mf.auto_generated_types import MarsschemamfCreditstextItem
from mars_patcher.mf.constants.credits_lines import (
FUSION_STAFF_LINES,
MARS_CREDITS,
RDV_CREDITS,
)
from mars_patcher.rom import Rom

CREDITS_ADDR = 0x74B0B0
CREDITS_LEN = 0x2B98


def write_credits(rom: Rom, data: list[MarsschemamfCreditstextItem]) -> None:
writer = CreditsWriter(rom, CREDITS_ADDR)
# Write MARS credits
lines = [CreditsLine(*line) for line in MARS_CREDITS]
writer.write_lines(lines)
# Write RDV credits
lines = [CreditsLine(*line) for line in RDV_CREDITS]
writer.write_lines(lines)
# Write custom credits
lines = [CreditsLine.from_json(d) for d in data]
writer.write_lines(lines)
# Write fusion staff credits
lines = [CreditsLine(*line) for line in FUSION_STAFF_LINES]
writer.write_lines(lines)
# Verify that credits don't exceed existing space
if writer.addr > CREDITS_ADDR + CREDITS_LEN:
raise ValueError("Credits exceeded existing space")
2 changes: 1 addition & 1 deletion src/mars_patcher/mf/patcher.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
from collections.abc import Callable
from os import PathLike

from mars_patcher.credits import write_credits
from mars_patcher.level_edits import apply_level_edits
from mars_patcher.mf.auto_generated_types import MarsSchemaMF
from mars_patcher.mf.connections import Connections
from mars_patcher.mf.credits import write_credits
from mars_patcher.mf.door_locks import set_door_locks
from mars_patcher.mf.item_patcher import (
ItemPatcher,
Expand Down