GithubHelp home page GithubHelp logo

skytemple / skytemple Goto Github PK

View Code? Open in Web Editor NEW
183.0 183.0 20.0 24.47 MB

GUI Application to edit the ROM of Pokémon Mystery Dungeon Explorers of Sky (EU/US)

License: GNU General Public License v3.0

Python 99.37% CSS 0.12% Shell 0.32% NSIS 0.10% PowerShell 0.08%
hacktoberfest nintendo-ds romhacking

skytemple's Introduction

logo

SkyTemple

Build Status Localization Progress Version Downloads License (GPLv3) Supported Python versions Discord

ROM hacking tool for Pokémon Mystery Dungeon Explorers of Sky.

It is available for Linux, macOS and Windows.

It includes a Python library for editing the ROM through Python (skytemple-files) and a debugger / script editor is integrated into the UI of SkyTemple (skytemple-ssb-debugger). Inside the debugger you can edit the game's scripts via the programming language ExplorerScript.

Ko-Fi

Support and Features

See the Project Pokémon forums page.

Windows & macOS

To download SkyTemple for Windows and macOS head over to the download page or Project Pokémon.

If you want to set up SkyTemple for development, see the "BUILDING_WINDOWS.md" or "BUILDING_MACOS.md" file.

Linux

Flatpak

SkyTemple is distributed as a Flatpak on Flathub for all major Linux distributions.

Install on Flathub

This Flatpak contains everything needed to use all SkyTemple features.

Source repository for the Flatpak: https://github.com/flathub/org.skytemple.SkyTemple

Manual

The Linux version can be installed manually/"natively" via Pip.

For this Python 3.9+ must be installed and GTK+ 3 (which you most likely both have). Additionally GtkSourceView 4 is required (package gtksourceview4 on Arch and libgtksourceview-4-dev on Ubuntu).

Then install SkyTemple via pip:

pip install --upgrade skytemple[eventserver,discord]

You may need to run pip3 instead and/or need to update pip by running:

pip3 install --upgrade pip

After this, you can run skytemple to run it. If this doesn't work, you don't have ~/.local/bin in your PATH. Run ~/.local/bin/skytemple instead.

To be able to apply patches, you need to install armips. Sadly they don't provide builds. However for Arch Linux a version is available through the AUR.

If you want to set up SkyTemple for development, clone the repos and install in editable mode instead. See the steps 7 and onward in "BUILDING_WINDOWS.md".

Star History

Star History Graph

skytemple's People

Contributors

adex-8x avatar chesyon avatar dependabot[bot] avatar doubletrio avatar dracauu avatar emboarger avatar end45 avatar in2erval avatar irdkwia avatar kamilaborowska avatar marius851000 avatar parakoopa avatar riiswa avatar tech-ticks avatar thecapypara avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

skytemple's Issues

Test

Test Issue


Beep, boop, I'm a bot! This issue was created by @Parakoopa in #mods.

Weird behavior in the tileset editor

The tileset editor sometimes glitches out some DMA mappings (mostly just visually, but sometimes also for real?) when importing a new set of tiles.

Dungeon editing: Floors are not editable when they have Grudge traps

I also have this error when trying to select specific floors in dungeons here and here (I've tried with Destiny Tower, Inferno Cave, and Zero Isle Center)
Traceback (most recent call last):
File "skytemple/controller/main.py", line 378, in on_view_loaded
File "skytemple/module/dungeon/controller/floor.py", line 117, in get_view
File "skytemple/module/dungeon/controller/floor.py", line 864, in _init_trap_spawns
ZeroDivisionError: division by zero


Beep, boop, I'm a bot! This issue was created by @Nextworld 💚 in #skytemple-tester.

Error reporting

Right now the game launches with a terminal window (under Windows) and doesn't have good error reporting built-in.
Think of a better way to display errors (no matter where they happen) and maybe even have an automatic report function.

Allow importing portraits from any PNG image format

Right now SkyTemple only allows importing images which have the format required by the game. Since it's pretty trivial to convert these images into the 1 + 15 color format used by the game, SkyTemple should do it automatically.

Dungeon editing: Some Dojo dungons are not editable

I've this error with Marowak Dojo's dungeons:
Traceback (most recent call last):
File "skytemple/core/controller_loader.py", line 32, in load_controller
File "skytemple/module/dungeon/controller/floor.py", line 94, in init
File "skytemple/module/dungeon/module.py", line 139, in get_mappa_floor
IndexError: list index out of range


Beep, boop, I'm a bot! This issue was created by @Nextworld 💚 in #skytemple-tester.

Error when installing on Windows

Does the app support windows? I get this error during installation while running:
"python -m pip install git+https://github.com/SkyTemple/skytemple.git"

This is the error while installing dependencies:

Installing build dependencies ... error
ERROR: Command errored out with exit status 1:
command: 'C:\Users\fang2\AppData\Local\Programs\Python\Python37\python.exe' 'C:\Users\fang2\AppData\Local\Programs\Python\Python37\lib\site-packages\pip' install --ignore-installed --no-user --prefix 'C:\Users\fang2\AppData\Local\Temp\pip-build-env-fieyk3bx\overlay' --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- setuptools wheel pycairo
cwd: None
Complete output (34 lines):
Collecting setuptools
Using cached setuptools-47.1.1-py3-none-any.whl (583 kB)
Collecting wheel
Using cached wheel-0.34.2-py2.py3-none-any.whl (26 kB)
Collecting pycairo
Using cached pycairo-1.19.1.tar.gz (205 kB)
Using legacy setup.py install for pycairo, since package 'wheel' is not installed.
Installing collected packages: setuptools, wheel, pycairo
Running setup.py install for pycairo: started
Running setup.py install for pycairo: finished with status 'error'
ERROR: Command errored out with exit status 1:
command: 'C:\Users\fang2\AppData\Local\Programs\Python\Python37\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\Users\fang2\AppData\Local\Temp\pip-install-lnkcurhg\pycairo\setup.py'"'"'; file='"'"'C:\Users\fang2\AppData\Local\Temp\pip-install-lnkcurhg\pycairo\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' install --record 'C:\Users\fang2\AppData\Local\Temp\pip-record-793490ak\install-record.txt' --single-version-externally-managed --prefix 'C:\Users\fang2\AppData\Local\Temp\pip-build-env-fieyk3bx\overlay' --compile --install-headers 'C:\Users\fang2\AppData\Local\Temp\pip-build-env-fieyk3bx\overlay\Include\pycairo'
cwd: C:\Users\fang2\AppData\Local\Temp\pip-install-lnkcurhg\pycairo
Complete output (18 lines):
running install
running build
running build_py
creating build
creating build\lib.win-amd64-3.7
creating build\lib.win-amd64-3.7\cairo
copying cairo_init_.py -> build\lib.win-amd64-3.7\cairo
copying cairo_init_.pyi -> build\lib.win-amd64-3.7\cairo
copying cairo\py.typed -> build\lib.win-amd64-3.7\cairo
running build_ext
building 'cairo._cairo' extension
creating build\temp.win-amd64-3.7
creating build\temp.win-amd64-3.7\Release
creating build\temp.win-amd64-3.7\Release\cairo
C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.26.28801\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -DPYCAIRO_VERSION_MAJOR=1 -DPYCAIRO_VERSION_MINOR=19 -DPYCAIRO_VERSION_MICRO=1 -IC:\Users\fang2\AppData\Local\Programs\Python\Python37\include -IC:\Users\fang2\AppData\Local\Programs\Python\Python37\include "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.26.28801\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\winrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\cppwinrt" /Tccairo/device.c /Fobuild\temp.win-amd64-3.7\Release\cairo/device.obj
device.c
C:\Users\fang2\AppData\Local\Temp\pip-install-lnkcurhg\pycairo\cairo\pycairo.h(37): fatal error C1083: Cannot open include file: 'cairo.h': No such file or directory
error: command 'C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.26.28801\bin\HostX86\x64\cl.exe' failed with exit status 2
----------------------------------------
ERROR: Command errored out with exit status 1: 'C:\Users\fang2\AppData\Local\Programs\Python\Python37\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\Users\fang2\AppData\Local\Temp\pip-install-lnkcurhg\pycairo\setup.py'"'"'; file='"'"'C:\Users\fang2\AppData\Local\Temp\pip-install-lnkcurhg\pycairo\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' install --record 'C:\Users\fang2\AppData\Local\Temp\pip-record-793490ak\install-record.txt' --single-version-externally-managed --prefix 'C:\Users\fang2\AppData\Local\Temp\pip-build-env-fieyk3bx\overlay' --compile --install-headers 'C:\Users\fang2\AppData\Local\Temp\pip-build-env-fieyk3bx\overlay\Include\pycairo' Check the logs for full command output.

ERROR: Command errored out with exit status 1: 'C:\Users\fang2\AppData\Local\Programs\Python\Python37\python.exe' 'C:\Users\fang2\AppData\Local\Programs\Python\Python37\lib\site-packages\pip' install --ignore-installed --no-user --prefix 'C:\Users\fang2\AppData\Local\Temp\pip-build-env-fieyk3bx\overlay' --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- setuptools wheel pycairo Check the logs for full command output.

Support re-applying patches

Maybe show a warning that it might cause issues if the patch drastically changed? Probably not necessary though?


Beep, boop, I'm a bot! This issue was created by @Parakoopa in #rom-hacking.

Move sorting not saved and movesets are not imported

Have an issue with the import export moves:
I added 3 slots at first, then replaced these moves, and moved them so they're sorted by level. When I saved it, my moves were added, but not sorted.
Then I tried to copy this pokemon moveset to a new pokemon moveset, and it worked with the previous moveset instead or the new one.


Beep, boop, I'm a bot! This issue was created by @Nextworld 💚 in #skytemple-tester.

New icons

  • Go through all icons in new-icons branches for both main app & debugger
  • Replace all generic icons with a skytemple- prefix
  • Create new repository for icons
  • Write a script to convert the commissioned icons into multiple sizes and the required colors for auto-color.

Test

Cool.


Beep, boop, I'm a bot! This issue was created by @Soniclink137 in #mods.

Saving screen(s) are getting stuck

Not sure if this was in a previous build since I just started messing with image imports+editing - every time I save a map background change, SkyTemple's "saving" screen loops for a long time, I let it go for at least a minute, but if I alt-tab out and back in even if right after saving, the save completes.


Beep, boop, I'm a bot! This issue was created by @MaxSchersey in #skytemple-tester.

Make strings 1 indexed

The game used 1-based indexing, but currently the UI starts at 0


Beep, boop, I'm a bot! This issue was created by @Parakoopa in #skytemple.

Linux build instructions

A brief glance at the code seems like it can be run on Linux, and the YouTube video has what is definitely a non-Windows DE in it. Could you provide build instructions for the wee minority of us using Linux?

Dungeon editing: Error with Item Spawns

Edited floor 1 of Test Dungeon, switched to floor 2 and then came back to floor 1 when this happened
Traceback (most recent call last):
File "skytemple/controller/main.py", line 378, in on_view_loaded
File "skytemple/module/dungeon/controller/floor.py", line 120, in get_view
File "skytemple/module/dungeon/controller/floor.py", line 917, in _init_item_spawns
File "skytemple/module/dungeon/controller/floor.py", line 987, in _calculate_relative_weights
TypeError: reduce() of empty sequence with no initial value


Beep, boop, I'm a bot! This issue was created by @Nextworld 💚 in #skytemple-tester.

Dungeon floor editing improvements

Some feedback on the dungeon floors UI:

  • The buttons that give extra info about certain fields don't do anything yet
  • I think it would be better if boolean fields used a switch instead of a yes/no dropdown
  • Maybe other darkness levels could be added to the list?
    • No darkness
    • 1-tile vision (Heavy darkness)
    • 2-tile vision (Light darkness)
    • 3-tile vision
    • 4-tile vision
      Higher values make no sense since the screen can only fit a maximum of 5 tiles on each direction
  • An extra info button could be added to the unused chance to indicate what it does and that it can be enabled again with the ASM patch
  • "Bettle" is misspelled
  • It would be cool if you added the trap icons next to the names in the spawn lists just like you do with pokémon. It's always easier to edit if you can look at the icon instead of having to remember which one is which

Beep, boop, I'm a bot! This issue was created by @End in #skytemple-tester.

New theme settings

  • Create a new configuration option for GTK theme (Mac and Windows only)
  • Have Arc / Mojave Dark be the default theme
  • Have options to switch to any other installed GTK Theme

Fixed Room editing

  • Rooms (with placing tiles and entities)
  • Entity list (mapping to the three lists below)
  • Pokémon list (mapping to the Pokémon stats list)
  • Item list
  • Trap list
  • Pokémon stats list

Dungeon Tiles Exchange Format (DTEF)

Add an export and import function to dungeon tiles using the following specified format:

  • One PNG file with the tiles, with the common 84 tile variations grouped in a pattern (ground, then wall, then water) and after this all of the rest of the tile variations and extra tiles in order of first appearance in DMA (ground, wall, water). The PNG file is indexed and has the color palette of the DPL file.
  • One DMA file, adjusted for the generated PNG
  • One XML file containing the animated color palettes (colors + animations; DPLA). This XML file may contain additional nodes for use in other tools, they are ignored by SkyTemple.

Create a new repository for the core logic and documentation.

Fix & Improve Tilequant integration

Currently Tilequant is hard-coded to use however many palettes are passed into the controller.
For map backgrounds this is currently 16, which is incorrect, since the game can only render 14 palettes.

Also it should be possible as a user to manually override this number.

Python 3.9

Provide compatibility with Python 3.9.
This issue applies to all of the SkyTemple components, is probably most relevant for py-desmume, skytemple-rust and tilequant.

Dungeon editing: Handling dungeons with invalid mappa references

Some dummy dungeons in the game re-use floors from other dungeons. When first opening a ROM in SkyTemple those dungeons should be fixed to get their own floor lists in the mappa file. Additionally dungeon 173 references non-existing floors. Dungeons that reference invalid floors should also be fixed. In both cases the user should be asked about these changes first.


Beep, boop, I'm a bot! This issue was created by @Parakoopa in #skytemple-tester.

View tree: Filtering hides child items.

If the user searches something in the top left search bar, and a result is found, the sub-items / children of the found nodes are filtered out, so the user can't access them, unless they remove the filter again.

Windows: font aliasing issue

Maybe this is me, but the font antialiasing/cleartype makes it much harder to read


Beep, boop, I'm a bot! This issue was created by @MandL27 in #skytemple-tester.

Ground sprite rendering

Currently for the scenes the monster.bin sprites are used, but those are actually the dungeon sprites. It should be changed to use the m_ground.bin sprites instead.

Monster: Make entity id and sprite id editable

Currently the entity id (which we might want to Rename? It's a bit confusing with all the other id's) can be viewed but not edited. The sprite is can't even be viewed.

Both should be visible and editable.

Dungeon editing: Adding and removing floors

Add the ability to change the number of floors per dungeon. Note: If extending a dungeon and there are already entries for more floors in the mappa.bin, they should be used (see Dark Wasteland)


Beep, boop, I'm a bot! This issue was created by @Parakoopa in #skytemple-tester.

Monster 0 is not editable (in beta)

Trying to edit monster 0 raises this error:

Traceback (most recent call last):
  File "skytemple/controller/main.py", line 378, in on_view_loaded
  File "skytemple/module/monster/controller/monster.py", line 80, in get_view
  File "skytemple/module/monster/controller/monster.py", line 542, in _check_sprite_size
  File "site-packages/skytemple_files/container/bin_pack/model.py", line 62, in __getitem__
IndexError: list index out of range

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.