harbourmasters / retro Goto Github PK
View Code? Open in Web Editor NEWAn OTR generation tool
License: MIT License
An OTR generation tool
License: MIT License
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.
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:
Multiple files with the same name in different folders and showing the folders to showcase that the file only exists once:
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.
i want Production language
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.
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.
It'd be great to have a small guide on using Retro in the README.
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
[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)
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.
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.
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.
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.
retro/lib/otr/types/sequence.dart
Line 26 in 4593536
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.
Basically 04a1d37 but as a configurable option. Disabling compression can improve performance, such as reducing stuttering issues.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.