Giter Site home page Giter Site logo

phst-randomizer / ph-randomizer Goto Github PK

View Code? Open in Web Editor NEW
26.0 8.0 0.0 2.37 MB

Randomizer for The Legend of Zelda: Phantom Hourglass

License: GNU General Public License v3.0

Dockerfile 0.92% Makefile 1.72% C 6.78% Assembly 6.34% Python 84.24%
zelda randomizer ds phantom hourglass

ph-randomizer's People

Contributors

dependabot[bot] avatar lunarsoap5 avatar mike8699 avatar noobtenluka avatar redr1el avatar redriel57 avatar renovate[bot] avatar sammygoodtunes 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ph-randomizer's Issues

Find more unused space in arm9.bin

We're running low on free space to put new code (see base/src/main.asm). We need to try and find some more free space, ideally in arm9.bin.

chest models match chest contents?

In the Wind Waker and Majora's Mask randomizers, there's now an option to make chests' appearance reflect whether they contain progression items, junk, or dungeon keys. This is a really nice feature, I'd like to see it planned for the PH randomizer.

Make tree drop items randomizable

With #7, this is now mostly done.
Left to do:

  • Make sure correct sprite or model is rendered for item.
    • Right now everything renders as a glitchy black object
  • Add some tests for this
  • It would be nice if the assembly code in _additional_tree_items.asm could be rewritten in C to be more readable
    • This is mostly aspirational and would require some more RE work and restructuring of everything in #7 to be possible

Make salvatore game rewards randomizable

At the very least we should make it so the bomb upgrade is randomizable, not sure yet if it would make sense to do the other rewards as I think they are just random ship parts/treasures (?).

They don't appear to be located in BMG instructions as other "NPC event" items are.

"Got item" text doesn't render for some randomized items

When placing certain items (such as the boomerang) in locations they aren't found in in the original game, the "Got item" text when picking up the item doesn't appear. Instead, Link holds the item up as usual, but it lasts less than a second and skips the text box entirely.

Rework Ghost Ship dungeon entrance

The mechanics around the spawning of the ghost ship dungeon need to be reworked.

  • When all three spirits are obtained, the ghost ship must spawn in the NW sea
  • When the ghost ship boss is defeated, it must not disappear like in the vanilla game
  • Somehow we need to handle the distinction between the final boss entrance and the regular ghost ship entrance.

Make ocean treasures randomizable

The oceans at the bottom of the ocean should be randomized like every other chest. There is a possibility that they work exactly like normal chests, in that case, comment and close this.

Rework `lose` descriptors

The following files have lose edge descriptors that need to be reworked as node descriptors (retrieved by grep'ing for lose in the logic directory) -

  • Dungeons/ToTOK/B8/B8.logic (@mike8699)
  • Dungeons/ToTOK/B2/B2.logic @mike8699
  • Dungeons/ToTOK/B9/B9.logic @mike8699
  • Dungeons/Mutoh Temple/MutohTemple.logic @mike8699
  • Dungeons/Ghost Ship/Dungeon/B1.logic @mike8699
  • Dungeons/Courage Temple/CourageTemple.logic (@mike8699)
  • Dungeons/Ice Temple/Dungeon/B2.logic @mike8699
  • Dungeons/Ice Temple/Dungeon/B1.logic @mike8699
  • Dungeons/Ice Temple/Dungeon/F3.logic (@mike8699 )
  • Dungeons/Ice Temple/Dungeon/F1.logic @mike8699
  • Dungeons/Fire Temple/FireTemple.logic (@mike8699)

Implement basic shuffler

This would just be a basic, rough version of the shuffler that would at least enable us to test the full randomizing workflow end-to-end. Probably just using random fill for the seed generation, as that would be simpler for the time being

Display correct "Got Item" text for the progressive sword

As of #39, the Oshus Sword (id 0x3) is progressive, i.e. if the player picks up an Oshus Sword when they already have one, they will receive the Phantom Sword instead. However, the "Got Item" text when you pick up the item still says its the Oshus Sword.

Beetle coupons don't work when randomized

The three beetle coupons (freebie card, compliment card, and complimentary card) don't get saved to the players inventory if they are 1) purchased in the shop, 2) dug up, or 3) found in a salvage chest. I haven't tested it with regular chests yet.

More specifically, the "Got item" animation plays with the correct model and everything, but the item doesn't appear in your inventory after that, and the appropriate flags in memory are not set.

Once this issue is fixed, this commit should be reverted.

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Awaiting Schedule

These updates are awaiting their schedule. Click on a checkbox to get an update now.

  • Update dependency Pillow to v10.2.0
  • Update dependency types/types-Pillow to ~=10.2.0.20240111

Rate-Limited

These updates are currently rate-limited. Click on a checkbox below to force their creation now.

  • Update actions/upload-artifact action to v4

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Ignored or Blocked

These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.

Detected dependencies

dockerfile
base/Dockerfile
  • python 3.12
  • python 3.12
  • python 3.12
  • python 3.12
github-actions
.github/workflows/build-test-release.yml
  • actions/checkout v4
  • actions/setup-python v4
  • actions/cache v3
  • actions/checkout v4
  • actions/setup-python v4
  • actions/checkout v4
  • actions/setup-python v4
  • actions/checkout v4
  • actions/setup-python v4
  • actions/checkout v4
  • actions/setup-python v4
  • actions/upload-artifact v3
  • actions/checkout v4
  • actions/setup-python v4
  • actions/checkout v4
  • actions/setup-python v4
  • docker/setup-buildx-action v3
  • docker/build-push-action v5
  • actions/upload-artifact v3
  • actions/checkout v4
  • dorny/paths-filter v2
  • actions/setup-python v4
  • actions/checkout v4
  • actions/setup-python v4
  • actions/download-artifact v3
  • actions/upload-artifact v3
  • actions/checkout v4
  • actions/setup-python v4
  • actions/download-artifact v3
  • actions/upload-artifact v3
  • actions/checkout v4
  • actions/setup-python v4
  • actions/download-artifact v3
  • actions/checkout v4
  • actions/download-artifact v3
  • softprops/action-gh-release v1
.github/workflows/clear-cache.yml
  • easimon/wipe-cache v2
.github/workflows/logic-graph-viz.yml
  • actions/checkout v4
  • actions/setup-python v4
  • actions/upload-artifact v3
.github/workflows/pre-commit-autoupdate.yml
  • actions/checkout v4
  • actions/setup-python v4
  • peter-evans/create-pull-request v5
pep621
pyproject.toml
  • PySide6 ==6.6.1
  • click ==8.1.3
  • inflection ==0.5.1
  • ndspy ==4.1.0
  • ordered-set ==4.1.0
  • pydantic ==2.4.2
  • pyparsing ==3.1.1
  • vidua ==0.4.5
  • test/PyYAML ==6.0.1
  • test/numpy ~=1.26.1
  • test/opencv-python ~=4.7.0.68
  • test/py-desmume ==0.0.6
  • test/pytest ~=7.4.2
  • test/pytest-repeat ~=0.9.1
  • test/pytest-xdist ~=3.5.0
  • test/tqdm ~=4.66.1
  • types/mypy ==1.8.0
  • types/types-Pillow ~=10.1.0.0
  • types/types-PyYAML ~=6.0.12.8
  • types/types-setuptools ~=69.0.0.0
  • types/types-tqdm ~=4.66.0.1
  • pyinstaller/pyinstaller ==6.3.0
  • setuptools >68
pip_requirements
base/requirements.txt
  • click ==8.1.3
  • ndspy ==4.1.0
  • Pillow ==10.0.1
  • zed 5ee969236bf3c3d0707da963e5edc818ddf246d3
pyenv
.python-version
  • python 3.12

  • Check this box to trigger a request for Renovate to run again on this repository

Action Required: Fix Renovate Configuration

There is an error with this repository's Renovate configuration that needs to be fixed. As a precaution, Renovate will stop PRs until it is resolved.

Error type: Cannot find preset's package (schedule:earlyFridays)

Clean up base patch build toolchain

  • fixy9.exe is a closed-source windows utility for updating the y9.bin manifest after making changes to overlay files. Since our docker image for running the toolchain is based on debian, running this tiny utility requires downloading and installing Wine, which adds several minutes to the build time.

  • CUE's compression tools are a set of C programs for decompressing/compressing various GBA/NDS compression formats. We use it to (de)compress the arm9.bin and overlay executables which are in BLZ format. Unfortunately, the original code is written using some windows-exclusive library functions, so I forked it and changed those function calls to more standardized libc calls so we can use it in our Debian-based docker image. Ideally we stop relying on these tools and just delete that repo.

As far as a solution, ndspy has support for extracting/inserting arm9.bin and overlay files from roms, and handles any (de)compression and y9.bin updates automatically. So, I think the best thing to do would be write a Python script that effectively does what the arm9.bin overlay Makefile target does, except using ndspy's code API

Implement edge constraint evaluation

The edge_is_traversable() function is currently not implemented correctly.

The shuffler needs to be able to dynamically evaluate logical expressions found in the .logic files such as

flag BridgeRepaired & (item Hammer | (item Bombs & item Bombchus) | (item Sword | (item Bow & item GrapplingHook)))

That expression is completely made up, but the idea is these expressions can be nested any number of times.

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.