mirror of
https://github.com/griches/PS5_Dusklight.git
synced 2026-10-17 08:01:27 +02:00
Twilight Princess-style home-screen art, and version 1.0.0
icon0.png, pic0.dds and pic1.dds come from two new pictures in ps5/art/: a young swordsman and a black wolf split by a seam of twilight, over carved stone, in the near-monochrome silver and sepia of the game's own cover art, made for the port by Gary Riches with an image generator (nothing in them is from the game, and there is no logo, title or Triforce). pic0 and pic1 are now the same picture, as in the other ports. make-title-art.py still draws the menu pictures in ps5/art/res/, unchanged byte for byte. Upstream Dusklight has nothing newer than the pinned 34a144a493 on main, so the program is v0.3.0's. contentVersion is 02.000.000 (0.1 to 0.3 used 01.000.000 to 01.003.000), so consoles see the update. Claude-Session: https://claude.ai/code/session_016xMYBaR9GfxtETyVf6er1P
This commit is contained in:
1 parent
f4f12bdfd3
commit
577c76212b
9 files changed
+30
-29
No files matched your search
+9
-6
@@ -50,12 +50,15 @@ make the source of every part available at the revisions it was built from.
|
||||
can only give away what is theirs. The code is a reimplementation derived from
|
||||
a decompilation of Nintendo's game; whether and where that is lawful to use or
|
||||
share is not something these licences settle.
|
||||
- **Artwork.** `ps5/sce_sys/icon0.png`, `pic0.dds`, `pic1.dds` and the menu
|
||||
pictures in `ps5/art/res/` (which a built title carries in place of
|
||||
Dusklight's own logo, icon, emblem and pre-launch background) are drawn by
|
||||
`ps5/art/make-title-art.py`: a generated landscape, the lettering of
|
||||
Dusklight's logo (CC0, without its mascot), and Aurora's own mark. Nothing in
|
||||
them is Nintendo's.
|
||||
- **Artwork.** `ps5/sce_sys/icon0.png`, `pic0.dds` and `pic1.dds` come from
|
||||
`ps5/art/icon0-source.png` and `ps5/art/pic-source.jpg`, the port's own
|
||||
pictures (a young swordsman and a black wolf split by a seam of twilight, over
|
||||
carved stone, made for it by Gary Riches with an image generator): nothing in
|
||||
them is from the game. The menu pictures
|
||||
in `ps5/art/res/` (which a built title carries in place of Dusklight's own
|
||||
logo, icon, emblem and pre-launch background) are drawn by
|
||||
`ps5/art/make-title-art.py`: a generated landscape and the lettering of
|
||||
Dusklight's logo (CC0, without its mascot). Nothing in them is Nintendo's.
|
||||
- **Button symbols.** `ps5/art/glyphs/` (shipped as `res/ps5-glyphs/`) is made
|
||||
from Kenney's Input Prompts (www.kenney.nl), Creative Commons Zero:
|
||||
`ps5/art/kenney/License.txt`. The cross, circle, square and triangle are
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.6 MiB |
+18
-20
@@ -3,13 +3,18 @@
|
||||
#
|
||||
# python3 ps5/art/make-title-art.py OUTPUT_DIR
|
||||
#
|
||||
# Writes icon0.png (512x512), pic0.png and pic1.png (3840x2160): a dusk sky over
|
||||
# hills, generated by this script, with Dusklight's wordmark on pic0 and pic1 and
|
||||
# Aurora's mark on pic1. Writes res/ too: the pictures the game's menus load,
|
||||
# to go over Dusklight's own in a title (ps5/art/res/ holds them, and
|
||||
# tools/link-title.sh lays them in).
|
||||
# Writes icon0.png (512x512) from icon0-source.png, and pic0.png and pic1.png
|
||||
# (3840x2160, the same picture) from pic-source.jpg: a young swordsman and a black
|
||||
# wolf split by a seam of twilight, over carved stone, made for this port by Gary
|
||||
# Riches with an image generator; nothing in them is from the game.
|
||||
# tools/png-to-title-dds.py turns pic0.png into sce_sys/pic0.dds, and pic1.dds is
|
||||
# a copy of it.
|
||||
#
|
||||
# Nothing here is Nintendo's. Of Dusklight's own artwork only the lettering of
|
||||
# Writes res/ too: the pictures the game's menus load, drawn by this script (a
|
||||
# dusk sky over hills), to go over Dusklight's own in a title (ps5/art/res/ holds
|
||||
# them, and tools/link-title.sh lays them in).
|
||||
#
|
||||
# Nothing in res/ is Nintendo's. Of Dusklight's own artwork only the lettering of
|
||||
# res/logo.png is used: its mascot, its application icon, its organisation icon
|
||||
# and its pre-launch background all depict the game (a character, the Triforce,
|
||||
# a screenshot) and stay out of the title. The lettering is cut from the logo
|
||||
@@ -96,20 +101,14 @@ def place(picture: Image.Image, mark: Image.Image, width: int, centre: tuple[flo
|
||||
def main() -> int:
|
||||
out = Path(sys.argv[1])
|
||||
out.mkdir(parents=True, exist_ok=True)
|
||||
letters = with_shadow(wordmark(), 14, 0.75)
|
||||
aurora = Image.open(DUSKLIGHT / "assets/aurora-powered.png").convert("RGBA")
|
||||
art = Path(__file__).resolve().parent
|
||||
# pic0, behind the title on the home screen, and pic1, the splash: one picture
|
||||
picture = Image.open(art / "pic-source.jpg").convert("RGB").resize((3840, 2160), Image.LANCZOS)
|
||||
picture.save(out / "pic0.png")
|
||||
picture.save(out / "pic1.png")
|
||||
Image.open(art / "icon0-source.png").convert("RGB").resize((512, 512), Image.LANCZOS).save(out / "icon0.png")
|
||||
|
||||
background = scene(3840, 2160).convert("RGBA")
|
||||
# pic0, behind the title on the home screen: the shell writes over the lower left
|
||||
pic0 = background.copy()
|
||||
place(pic0, letters, 1500, (0.70, 0.30))
|
||||
pic0.convert("RGB").save(out / "pic0.png")
|
||||
# pic1, the splash
|
||||
pic1 = background.copy()
|
||||
place(pic1, letters, 2500, (0.50, 0.40))
|
||||
place(pic1, with_shadow(aurora, 8, 0.6), 520, (0.50, 0.90))
|
||||
pic1.convert("RGB").save(out / "pic1.png")
|
||||
# icon0: the same sky, square, with the wordmark's first letter
|
||||
# the drawn sky, square, with the wordmark's first letter: the game's own icon
|
||||
icon = scene(1024, 1024, seed=11).convert("RGBA")
|
||||
mark = wordmark()
|
||||
# the D ends at the first empty column
|
||||
@@ -117,7 +116,6 @@ def main() -> int:
|
||||
end = next(x for x in range(40, mark.width) if columns[x] == 0)
|
||||
initial = with_shadow(mark.crop((0, 0, end, mark.height)), 10, 0.8)
|
||||
place(icon, initial, 430, (0.50, 0.45))
|
||||
icon.resize((512, 512), Image.LANCZOS).convert("RGB").save(out / "icon0.png")
|
||||
|
||||
# res/: the pictures the game's own menus load. Dusklight's show the game (a
|
||||
# character as mascot, the Triforce in the emblem, a screenshot behind the
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.6 MiB |
Binary file not shown.
|
Before Width: | Height: | Size: 107 KiB After Width: | Height: | Size: 519 KiB |
@@ -10,7 +10,7 @@
|
||||
"conceptId": "99305",
|
||||
"contentBadgeType": 1,
|
||||
"contentId": "UP9000-PPSA99305_00-DUSKLIGHT0000000",
|
||||
"contentVersion": "01.003.000",
|
||||
"contentVersion": "02.000.000",
|
||||
"downloadDataSize": 256,
|
||||
"gameIntent": {
|
||||
"permittedIntents": [
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -79,8 +79,8 @@ Compiler: $(${PS5_CLANG:-clang} --version | head -1)
|
||||
|
||||
No game data is included. The Legend of Zelda: Twilight Princess belongs to
|
||||
Nintendo; this title does nothing without a GameCube disc image (.iso or .ciso)
|
||||
that you provide, placed beside eboot.bin. The pictures in sce_sys/ are drawn by
|
||||
the port's ps5/art/make-title-art.py and contain nothing of Nintendo's.
|
||||
that you provide, placed beside eboot.bin. The pictures in sce_sys/ are the
|
||||
port's own, made for it with an image generator; nothing in them is from the game.
|
||||
|
||||
eboot.bin sha256: $(sha256sum "$app/eboot.bin" | cut -d' ' -f1)
|
||||
SOURCE
|
||||
|
||||
Reference in new issue
Block a user