Giter Club home page Giter Club logo

shin's People

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

Watchers

 avatar  avatar

Forkers

meew0 xmoezzz

shin's Issues

Fix video playback on windows

It appears that on windows ffmpeg doesn't spit out the frame info as early as we would like and the game gets stuck

Maybe it's a problem with a certain ffmpeg build, instead of windows?

Also, we can try handling in a more failsafe way? (e.g. timeout & skip the playback?)

Refactor the scenario and VM types

Currently types used in scenario parsing & vm execution are all over the place. Them needing FromVmCtx implementations is does not help. We want to figure out a policy on where to put them and where to put the impls

Properly implement transitions & wipes

This requires some investigation on the engine side, but, probably should be done as:

  • the PAGEBACK command "freezes" the screen
  • the LAYERLOAD commands load the layers off-screen
  • the WIPE command executes the transition animation (if any), changing from the frozen screen to the new layer set

Implement EVs (events?)

Those are started with EVBEGIN and ended with EVEND commands

They do not allow fast-forwarding

They can be skipped as a whole (jump to EVEND) by pressing B

Questions:

  • I haven't seen any messageboxes there. Is it possible to have one? How do they behave?
  • Can stuff like interruptible wait (WAIT with first arg being 1) be interrupted? How do SELECTs work? Are events fully non-interactive?

Add a hide/show messagebox animation

It should:

  • slide in from the bottom
  • change its opacity as it does so

The speed should be matched to the original impl. Also don't forget to add waits in MSGCLOSE

Add streaming APIs for assets

It doesn't make sense to load full videos to even start playing, they should be streamable.

For other assets it probably isn't beneficial though. We should support both use-cases.

Load the Adv state from Vm state

This seems to be called "Scene Loading" in the game

The idea is to first run a lighter version of VM, without loading assets & rendering to a specific position in the script, and then to materialize it to the "real" ADV view.

This feature is used to implement loading (definitely), rollback and save thumbnail building (maybe). Also, warping to specific point of SNR is useful for development & debugging.

Finish the audio stuff

AFAIR there were some shortcuts in audio implementation, like looping not being implemented (?)

Extracting data.rom from two PS Vita VNs by Favorite

I found your tool when I was looking for a way to extract the data.rom found in the following two PS Vita ports:
(PCSG00462) Irotoridori no Sekai: World's End Re-Birth
(PCSG00901) AstralAir no Shiroki Eien: White Eternity

I tried to extract IroSeka's data.rom, but sdu gave me a bad magic number error. To fix that I changed "ROM" to "ROM2" in a hex editor, but now I get:
Error: Parsing ROM

Caused by:
Unknown version: 0x00020001

Astral Air already has ROM2 in its file header, but I get the same issue there:
Error: Parsing ROM

Caused by:
Unknown version: 0x00000001

There are many file formats inside that your tool also supports, such as .snr, .txa, .pic and .bup.

Is it possible to implement support for these two data.roms?
Also, is there a way to repack the data.rom file?

The `transform` parameter in the `Renderable` trait is not generic enough

It does not allow us to express the inheritable transformations that can be put onto the RootLayerGroup

In the original engine, the LayerGroup and PageLayer ignore those transforms and pass them into the lower level layers. The transforms should probably be split into the transformation and projection?

Do your engine support updates?

Entergram released three patches in 2021, fixing several problems in Umineko. Is it possible apply thoses fix using your engine?

Umineko 1.0.3 (01006A300BA2C800)/(20.7MB) ? They also released patches for other games, such as Gerokasu.

Restructure the rendering pipeline to do the blending the "wrong way"

So, apparently, entergram has fucked up gamma correctness in their engine...

image

They do not mark textures as being in sRGB space (but they are!) and therefore all computations happen without conversion to linear space (but they should be converted!)

Because of this I couldn't get the messagebox opacity to look quite right (to be the same as in the game)....

Alpha blending (RES = a * src + (1-a) * dst) was done in the different colorspace, so the result is different

To implement the same in our engine we would need to use texture views with differing srgb-ness, tracked at gfx-rs/wgpu#3237

Implement the rendering pipeline closer to the game

I have spent some time carefully reverse-engineering how the rendering pipeline actually works in the engine, and what we have right now is very different from the game. I want to basically rewrite

This will help us to support features like:

  • Masks applied to LayerGroups (which is what shin currently crashes)
  • NewDrawableLayer-based effects (props 0x38-0x54). This is actually the only kind of effects used in umineko, with remnants of the older system (EffectLayer) still being present in the game. What a mess
  • #8 (the rendering part)

This will probably also reduce GPU usage a bit: we do a ton of redundant renders right now, while the original engine design seems pretty optimized for some older smaller GPUs.

However I am not sure if it should be done now: wgpu seems to be on its path to resolving gfx-rs/wgpu#1453, which will make it much easier to implement the renderer (no need to manually put the GFX objects into an arena and ensuring they outlive the frame render).

Add debug overlays to look at layer properties

I really like the impl by kira audio, would copy some ideas from there. Also, they are apparently called "tweens", for "in beTWEEN"

Wanna:

  • Some debug overlays for layers ¿& other? tweens
  • Warnings on unimplemented layer properties

DC4: Scenario parsing error

I tried sdu on the game D.C.4 ~ダ・カーポ4~ (title id 0100D8500EE14000), and got an issue with the scenario. Everything else is fine.

$ ./sdu scenario dump-info output/main.snr 
Error: 
 ╺━━━━━━━━━━━━━━━━━━━━┅ Backtrace ┅━━━━━━━━━━━━━━━━━━━━╸

 0: Error: unexpected end of string when reading double-byte char
           While parsing field 'emotion' in BustupInfoItem
     at shin-core/src/format/scenario/info.rs:30
 1: While parsing field 'elements' in SizedTable
     at shin-core/src/format/scenario/info.rs:122
 2: While parsing field 'bustup_info' in ScenarioInfoTables
     at shin-core/src/format/scenario/info.rs:150
 3: While parsing field 'info_tables' in ScenarioHeader
     at shin-core/src/format/scenario/mod.rs:28

 ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸

Implement asset preloading

Design: run another scripter some amount of instructions ahead of the main scripter, tracking only assets to be loaded. Maintain a set of "assets needed in near future", load them into the cache.

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.