Coder Social home page Coder Social logo

retro's Introduction

Retro Logo

Retro Logo An OTR / O2R generation tool.

Getting Started

This project is a starting point for a Flutter application.

A few resources to get you started if this is your first Flutter project:

For help getting started with Flutter development, view the online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.

i18n localization rules

When adding any text to retro, be sure to make it localizable by doing the following

  • Make sure that import 'package:flutter_gen/gen_l10n/app_localizations.dart'; is properly imported in the file you're adding any kind of text.
  • Make sure to also have this final AppLocalizations i18n = AppLocalizations.of(context)!;present in the override.
  • When it's the time for you to add your text, follow this naming convention:
    • When you're adding a key in a component, use this: i18n.components_myFile_keyName
    • When you're adding a key somewhere else, use this: i18n.myFile_keyName
    • Add the corresponding keys in both app_en.arb which will contain your text.
    • When you're adding new text, please notify it so we can translate your new keys as fast as we can.

retro's People

Contributors

archez avatar briaguya-ai avatar dcvz avatar greatargorath avatar kiritodv avatar purplehato avatar twanvanb1 avatar xoascf avatar

Stargazers

 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

retro's Issues

Can't build on Linux

No idea how the heck to use this but.

rena@greymon:…/Retro/retro-0.0.4/linux> cmake .
-- The CXX compiler identification is GNU 12.2.1
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "1.8.1") 
-- Checking for module 'gtk+-3.0'
--   Found gtk+-3.0, version 3.24.37
-- Checking for module 'glib-2.0'
--   Found glib-2.0, version 2.76.1
-- Checking for module 'gio-2.0'
--   Found gio-2.0, version 2.76.1
-- The C compiler identification is GNU 12.2.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
CMake Warning (dev) at _deps/stormlib-src/CMakeLists.txt:11 (option):
  Policy CMP0077 is not set: option() honors normal variables.  Run "cmake
  --help-policy CMP0077" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

  For compatibility with older versions of CMake, option is clearing the
  normal variable 'BUILD_SHARED_LIBS'.
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at _deps/stormlib-src/CMakeLists.txt:12 (option):
  Policy CMP0077 is not set: option() honors normal variables.  Run "cmake
  --help-policy CMP0077" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

  For compatibility with older versions of CMake, option is clearing the
  normal variable 'STORM_SKIP_INSTALL'.
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Found ZLIB: /usr/lib/libz.so (found version "1.2.13")  
-- Found BZip2: /usr/lib/libbz2.so (found version "1.0.8") 
-- Looking for BZ2_bzCompressInit
-- Looking for BZ2_bzCompressInit - found
-- Linking against dependent libraries statically
-- Configuring done (2.0s)
-- Generating done (0.0s)
-- Build files have been written to: /home/rena/games/Shipwright/Retro/retro-0.0.4/linux

rena@greymon:…/Retro/retro-0.0.4/linux> make
[  0%] Generating ephemeral/libflutter_linux_gtk.so, ephemeral/flutter_linux/fl_basic_message_channel.h, ephemeral/flutter_linux/fl_binary_codec.h, ephemeral/flutter_linux/fl_binary_messenger.h, ephemeral/flutter_linux/fl_dart_project.h, ephemeral/flutter_linux/fl_engine.h, ephemeral/flutter_linux/fl_json_message_codec.h, ephemeral/flutter_linux/fl_json_method_codec.h, ephemeral/flutter_linux/fl_message_codec.h, ephemeral/flutter_linux/fl_method_call.h, ephemeral/flutter_linux/fl_method_channel.h, ephemeral/flutter_linux/fl_method_codec.h, ephemeral/flutter_linux/fl_method_response.h, ephemeral/flutter_linux/fl_plugin_registrar.h, ephemeral/flutter_linux/fl_plugin_registry.h, ephemeral/flutter_linux/fl_standard_message_codec.h, ephemeral/flutter_linux/fl_standard_method_codec.h, ephemeral/flutter_linux/fl_string_codec.h, ephemeral/flutter_linux/fl_value.h, ephemeral/flutter_linux/fl_view.h, ephemeral/flutter_linux/flutter_linux.h, _phony_
Unhandled exception:
RangeError (index): Invalid value: Only valid value is 0: 1
#0      _Array.[] (dart:core-patch/array.dart:10:36)
#1      main (file:///opt/flutter/packages/flutter_tools/bin/tool_backend.dart:12:37)
#2      _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:295:33)
#3      _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:192:26)
make[2]: *** [flutter/CMakeFiles/flutter_assemble.dir/build.make:93: flutter/ephemeral/libflutter_linux_gtk.so] Error 255
make[1]: *** [CMakeFiles/Makefile2:200: flutter/CMakeFiles/flutter_assemble.dir/all] Error 2
make: *** [Makefile:156: all] Error 2

Multiple files with the same name in different folders break .otr generation

For context: I used the Darunias Joy package to create a custom .otr and the 0.0.2 version of Retro.

In this package there are multiple files with the same file name in different folders, ex. Gym Theme.seq in Black-White, Diamond-Perl-Platinum and Heart Gold - Soul Silver folder. Generating an .otr works flawless if only one of them exists.

But if multiple files with the same name exist, even in different folders, Retro shows them multiple times for each folder and generating the .otr gets stuck. The green circle spins infinitely and generation never stops. I let it run for over an hour and nothing happened.

Here's some screenshots to better show the problem:
Path into one of the folders to show it works normally:
image

Multiple files with the same name in different folders and showing the folders to showcase that the file only exists once:
image

Maybe there's some way to handle this aside from having to manually rename multiple files with the same name.
Even a small error message that an .otr can't be generated because multiple files with the same name exist would help I imagine.

I thought I did something wrong using the program until I saw that files existed multiple times in the list and through trial-and-error found the cause.

Certian textures ripped are broken.

Some textures dumped by the tool are black and white and static. For example I was replacing all the Gerudo symbols in the game with the 1.0 textures I dumped from my cartridge, the symbol on the stair case at the entrance of spirit temple didn't have a properly dumped texture. It was black and white and unrecognizable, even when I managed to trace it down, replacing it resulted in a messed up texture in game. there are a few more examples of this as well.

Remember import/export paths

It would make testing and developing mods so much easier if I didn't have to navigate to the files/mods directory every time I build the OTR.

Error on Linux

[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: Invalid argument(s): Failed to load dynamic library 'libstorm.so.9.22.0': libbz2.so.1.0: cannot open shared object file: No such file or directory
#0      _open (dart:ffi-patch/ffi_dynamic_library_patch.dart:11)
#1      new DynamicLibrary.open (dart:ffi-patch/ffi_dynamic_library_patch.dart:22)
#2      _dylib.<anonymous closure> (package:flutter_storm/flutter_storm.dart:257)
#3      _dylib (package:flutter_storm/flutter_storm.dart:263)
#4      _bindings (package:flutter_storm/flutter_storm.dart)
#5      new MPQArchive.open (package:flutter_storm/flutter_storm.dart)
#6      processOTR (package:retro/features/create/create_replace_textures/create_replace_textures_viewmodel.dart:215)
#7      compute.<anonymous closure> (package:flutter/src/foundation/_isolates_io.dart:18)
#8      _RemoteRunner._run (dart:isolate:954)
#9      _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:300)
#10     _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:192)

Add Mod Metadata to Patch OTRs

We should add the ability to add metadata to patch OTRs such as: name, author, version number and an icon.

We should do something similar to what Minecraft does. Having a file for the metadata and one for the icon.

OTR inspection view searchability

Finding an item in the OTR inspection view is close to impossible, long term this can be solved with a searching mechanism, short term you could just allow the output to be copy-able, so that I can paste it into something that allows me to search.

Texture corrupt with latest version.

I made a thread in the Support channel covering my issue.
Using an older version fixed it, so i think the Async Processing might have broken the Texture compiling.

Sequences: BGM fallback not accounting for blank lines in .meta files

If a .meta file is missing the "type" line, we make the assumption that it is a bgm type. The code that does this checks for a third line, if it exits, it uses that as the type, otherwise fallback to "bgm".
Problem is some .meta files have the third line, but its blank. This causes files to be named wrong, and so they don't play probably in SoH. Reported here: https://discord.com/channels/808039310850130000/1047785921799520296/1051710976849879171

This check should account for empty lines as well in the fallback logic.

String type = metadata.length > 2 ? metadata[2].toLowerCase().trim() : "bgm";

Certain texture png's automatically turn new png to grayscale

The example I did was Link's tunic. When trying to change the texture with something that had different colors on it, it would just make it all gray scale in game. I'm not sure if this is the right place for this issue, but I figured with it so new, I'd start here. I will attach the OTR with the mentioned texture replacement in the zip folder below, along with the screenshot on this post.

image
TunicColorTest.zip

Image attributes not preserved in extracted textures

Using the 0.0.5 alpha.2 appimage to extract textures from the otr produced by SoH 7.1.0 and the OoT N64 PAL 1.1 rom (sha1sum: cfbb98d392e4a9d39da8285d10cbef3974c2f012), I get a large amount of textures where the alpha channel has been removed, or where the image has been converted to grayscale. The otr produced by SoH appears to be fine as the game plays as expected, so I'm assuming that the issue is in retro's extraction. An example of both cases, along with the the output from Imagemagick's 'identify' for each texture is provided here. The files extracted by retro are suffixed with '_retro' and the reference images were dumped from gliden64 (and correspond with popular texture repacks).

Many textures appear to be fine, with or without alpha channels, so I've been unable to rectify this programmatically in post. I really hope that you can rectify this as it would streamline community asset creation.

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.