GithubHelp home page GithubHelp logo

alttpj / memeforcehunt Goto Github PK

View Code? Open in Web Editor NEW

This project forked from christianlegge/memeforcehunt

2.0 2.0 1.0 696 KB

MemeforceHunt - Swap the Triforce Sprite in Triforce Hunt mode or create your own!

License: Apache License 2.0

Java 99.14% CSS 0.72% Shell 0.14%
alttp alttp-vt-randomizer alttpr java snes sprites

memeforcehunt's People

Contributors

bmarwell avatar christianlegge avatar fish-waffle64 avatar imgbotapp avatar miketrethewey avatar spannerisms avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Forkers

fish-waffle64

memeforcehunt's Issues

Allow importing/exporting zspr files

Currently, the whole compressed spritemaps are being saved and shipped.

This has a few disadvantages:

  • Other sprites, like the AG arrows, are being overwritten
  • Waste of code
  • Hard to export by other tools
  • No palette information
  • Not easy to render

There will be a little "memehunt-native" format, which is easy-to-read, easy-to-implement, and easy-to-use. However, zspr is already well-known and. Users should therefore be able to import and export from/to zspr. A few advantages:

  • Well-known format
  • Can be adapted without too many hazle to only store 4 tiles
  • Allows recompression of existing sprites in the same tile, i.e. no existing sprites are overwritten
  • Easier to render than just the .bin files, because it includes a palette number.
  • Helps the roll-your-oown in the same release.

Have initial size calculated

โ€ฆ instead of fixed.

win-size

  • set min width of right buttons
  • set min width of skin buttons
  • set preferred size of stage.

Features for Roll-your-own

  • missing preview link standing in front of a chest
  • save/load to/from yaml and zspr
  • maybe add a background layer of arbitrary PNGs/JPGs, so users have it easier to draw?
  • swapping colours
  • make sure progress is not lost when app exists
  • load pre-rolled sprites

Update addresses

The updated addresses are:
public static final int OFFSET = 0x18A800;
public static final int PAL_LOC = 0x104FE4;
public static final int PAL_OW = 0x10126E;

Upload function

When the repository question is solved, create an upload button, so users can share their sprite!

Max size 0x800

yes, the randomizer is skipping 0x800 byte before the next gfx

If no ID present in Sprite Listing, ignore it

In preparation for including the rest of the sprites that aren't there yet, let's get the metadata ready. If the metadata is there, but the sprite file isn't there yet, ignore it. The id tag should be sufficient with figuring out whether or not the thing is there or not.

Show items from online repository

  • Query IDs and names by page
  • Search functionality
  • Browse with async loading of sprites.

publish API so other tools can adapt this.

Quick UI cleanup

Simple changes, i.e. new grids and maybe some XML layouts and classes.

new item sprite file format

Instead of saving just the binary dump and the palette and description extra, I'd like to create a more specific format.

For easiness of use, that would be yaml with the following fields:

  • ULID
  • Sprite name (max 12 chars, only alphanumeric)
  • Display Name - should reflect the sprite name, but with spaces and more characters.
    • E.g. if the sprite name is "B", the display name would be "[B]".
  • Sprite author
  • Description (optional)
  • Creation date (optional)
  • Base 64 encoded data, 4 uncompressed, packed tiles in one string or as 4 uncompressed, packed tiles separately
    • if it was 4 tiles in a single byte stream, that would be 90 uncompressed bytes
    • 90 raw bytes are 120 bytes in base64
  • Base64 encoded png preview (optional, because it can be generated from the data).
  • Colour palette name
  • Tags[] (for search)

For later: Also supported gzipped extensions if it makes a difference.
This will also help creating an online repository or exchanging sprites.

Sprite name should be removed. The former idea was that it should reflect the filename.

TODO:

  • Retain tags
  • retain ULID

Create GUI tab "roll your own"

The actual implementation.

Things which need to be included:

  • 16x16px sprite editor
  • previews (just the icon and link standing in front of such a chest)
  • save/load to/from yaml and zspr
  • transparent bg (small boxes white/gray)
  • maybe add a background layer of arbitrary PNGs/JPGs, so users have it easier to draw?
  • palette swapping (transform existing coloured pixels to another of the three palettes)
  • swapping colours
  • make sure progress is not lost when app exists
  • make sure progress is not lost when switching tabs
  • load pre-rolled sprites

Make memory addresses configurable

  • ini configuration in $HOME/.config/memeforcehunt/config.yaml
  • Accept --offset=0xCAFEBABE as an override for the CLI when using the set command
  • add GUI elements to restore the original and to update the config.yaml

Directories:

  • Windows: %LocalAppData%/memeforcehunt or %AppData%/memeforcehunt (whichever comes first)
  • Mac OS X: ~/Library/Preferences/io.github.alttpj.memeforcehunt
  • Linux: ${XDG_CONFIG_HOME}/memeforcehunt or ${HOME}/.config/memeforcehunt (whichever comes first).

Create JSON format for sprite loading

sth like this:

{
  "sprites": [ 
    {
      "id": "ULID",
      "author": "author",
      "spriteName": "spriteName",
      "uri": "uri",
      "preview": "uri",
      "created": "createdTimeStamp"
    },
    {
      "id": "ULID",
      "author": "author",
      "spriteName": "spriteName",
      "uri": "uri",
      "preview": "uri",
      "created": "createdTimeStamp"
    }
  ]
}

This can be used in the default (shipped) sprites, an online repository or for adding new sprites, etc.

ULID: https://github.com/huxi/sulky/tree/master/sulky-ulid

add CI service

  • mvnw
  • travis config with at least 6 JDKs (3x 11, 3x 14)
  • copyright

Use decompressor to only replace the triforce sprite

At the moment, we ship the complete spritemap (see README.md).
This will always replace silvers and other sprites to the old sprite (depending on when the spritemap was created).

Instead, it would be better to decompress both sprite maps, read only the four corresponding tiles from the shipped sprites, put them into the decompressed spritemap of the ROM and compress it back.

The alltpj library can handle compression.

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.