Commit Graph

33 Commits

Author SHA1 Message Date
yellows111 4031ec9e18 Fix glTF exporter not writing the pbrMetallicRoughness correctly.
* added tests/iconwriter.js, which writes icons with formats 0-7.

Authors notes: I am aware that texture format 1 may work the same as texture format 3.
I am waiting on the tests provided by iconwriter.js to verify the functionality.
2024-02-14 15:16:53 +00:00
yellows111 aa53573a14 minor non-final changes
Reminder of TODOs:
Animation parsing, parsing animation data into visible data. ->
* Render animations in HTML client.
* Write animations to glTF2 exporter.

Considered ideas:
* Multi-format file input box (auto-detect format based off first bytes)
2023-12-25 08:20:58 +00:00
yellows111 d57d9129de Bumped RLE raw-copy threshold by 0x100
the icons that Gauntlet: Dark Legacy uses for it's save games are rarely even worth being compressed, considering that it only saves around 2900 bytes from just leaving it uncompressed. However, the fact that it's still compressed while still parsing properly ONLY with this change makes me think many others have had this constant wrong for a while. Could it be lower? needs research.

* changed a space for a no-break space in a file input description to make it flow better when text is split.

I was considering making this 0.8.0+u1, but eeh, nah.
2023-12-18 23:00:14 +00:00
yellows111 23ef7c7ca1 0.8.0 (actually) forgot to -a 2023-12-18 14:03:51 +00:00
yellows111 eb8bc8e068 0.8.0: "Maximum Power"
I think this is it. The last major format for icondumper2.
It's been a fun ride while it lasted.
See you on the flip-side! Thanks for the pineapples.

+ Now supports MAX files
+ Added an LZARI implementation to the repository.
* Now considering icondumper2 feature-complete.
* [HTML] Fixed no-webgl fallback mode.
* Reworked modules object to not clobber one that already exists
- Dropped "goes here" terminology from file input boxes.

Ending comments: There's still a few bugs involving the HTML client...
Ambient lighting is quite jank. Needs better support...
Feature: Do interpolated animations of models

For now though... I want to do something else... for a bit, at least.
2023-12-18 14:02:10 +00:00
yellows111 73e618369b cosmetic update to HTML refclient
* changed inline-grid to table-cell, I like it better, and older browsers like it better since its not technically flex-width
- removed inflator-installed id from inflator script, as it was unused
* changed pako version to es5 version, since it works with the absolute minimum version browsers that we technically target, and performance isn't the most important thing when you only need to decompress the data once per export file.

Author's comments: Wondering how LZARI works. Not much I can add to that part of the conversation. Once it's done, it's done. Until then, progress may be stale...
2023-12-08 23:00:36 +00:00
yellows111 1b5f483df8 0.7.0: The Icebreaker update
+ Now including support for CodeBreaker Save (CBS) format.
* CBS Parser function requires a function parameter that inflates data (zlib-style) given to it.
- Removed enabling/disabling strict mode from the reference client.
* Made timestamp objects consistant with every file format.
+ Added Pako to as a semi-optional dependancy to the HTML reference client.
* Disabling Pako will also disable CBS support in the HTML reference client.

Internals:
+ Now includes the RC4 cipherkey for deciphering CBS files.
+ Implemented an RC4 cipher function for deciphering CBS files.

Author comments:
One of the big five. Only one remains, and it's not going to be easy.
The road to an LZARI implementation spans a long distance, and the road there is bumpy.

- yellows
2023-12-07 14:14:07 +00:00
yellows111 98edefff2e A compatibility update.
No, this isn't a late 'Fool's joke, I was just having fun and now I can target pure ES6/ES2015 if I wanted to.

…except Chakra ('Edge <= 44), that thing never implemented `TextDecoder`/`TextEncoder` for some reason. We'll never know why...

I'm researching what makes over-bright happen... give me time!
2023-12-05 18:40:46 +00:00
yellows111 5738fbb09c fix SPS/XPS crash, example icon
fix sps/xps parser crash: apparently those 4 bytes were for a third part of metadata for those files. HTML client now shows this information if available.

example icon: id2_example_001 (12 vertices, 4 triangles)

I've saved and included this icon in the .PSU and .SPS formats. .PSV is a bit more complicated for a valid export.

Example icon shows vertex colours with no animation nor includes a texture (texture type 3).

was considering adding new formats, but its not one of the big five (translation: not MAX/PWS or CBS), and I can barely find any examples to test with. Oh well. adding them to gitignore already. If the demand comes up, I've made the related hexpat's for them anyway.

.xpo and .spo (assuming they're like .xpo files) files are out of scope for this project, if anyone asks. Reason being is that they usually exclude icon data, and even icon.sys. This makes it rather useless to me.
2023-12-03 17:32:26 +00:00
yellows111 837dffc4dc autocompile documentation on each commit
only tested this once by the way

minor formatting changes in icon.js
2023-11-29 23:11:05 +00:00
yellows111 bf646d10ba Condense type forwarders into a class for less code reuse.
Edit JSDoc definitions
dos2unix(1) .gitignore, edit README slightly.
2023-11-29 13:25:58 +00:00
yellows111 95172cf285 Do near-final touches, should of done this last commit but oh well.
Actually made C6JS C6JS and not node-specific. Didn't know there was a difference.
2023-11-28 12:52:34 +01:00
yellows111 4e27befc6f Add JSDoc comments to icon.js.
Commiting from cirno. You can tell it's dire.
2023-11-28 12:23:53 +01:00
yellows111 eb5f41f9e8 Ama' here. Decided to add frame step support.
It's a bit nasty, however. Don't really know what else to do-
with this code other than attempt to support animations.

aeiou, I'm not really sure... again.
2023-11-13 12:54:35 +00:00
yellows111 e77997efe2 DOS->Unix conversion
thought it'd save some space.
2023-11-08 10:07:57 +00:00
yellows111 ca6945d522 Update README.md
Minor updates to versioning, and added raw icon file support to both node clients.

And that's it from me. Other than using GLB instead of .glTF triplets, I don't know what to do with the exporter. Would update the HTML client, yet I'm not sure on the implementation details yet.
2023-11-05 16:26:06 +00:00
yellows111 ff80a0effc gltf-exporter: textures!
comment: "was going to update icon.js to use more for of loops, but didn't actually see a good use for them, oh well."

all intentional console.logs are now console.info or console.debug depending on use.

enabled back-face culling on HTML client, as a few models depended on it for certain effects (VJ2, Okami 2).

---

Likely my last commit for a while, again.
2023-11-05 14:01:50 +00:00
yellows111 f418828a71 only read icons once, and if we need to
pretty much makes it faster, and buffer is now clumped together with all vertex data, since the other bytes from the normals, uv and colour information adds up, and since they don't change, this makes sense, at least to me.
2023-10-27 12:01:05 +01:00
yellows111 654fa45e69 Implement glTF core features better
Now that I've used the reference client to generate some glTF files, I've learned what I was doing wrong.

to be honest, rotating on X wasn't my first thought either.

Turns out the whole colour thing was because of colour spaces. I feel like I'm going to have a distaste for those in the future.
2023-10-26 14:26:54 +01:00
yellows111 6b782a9f4b Add a glTF exporter to project.
Has a few bugs, however:
* Doesn't support textures.
* Exports upside down, and attempting to fix it inverts geometry.

This is probably my last commit to this project from amaryllis.
At least for a while.
2023-10-25 15:16:28 +01:00
yellows111 42286ba7f8 Seperate module.exports into readers, helpers and options
Also add helpers to exports (uncompress and bgr2rgb functions)
Still stuck on the whole oversaturation thing.

Considering writing something to convert icon objects to a more usable model format.
2023-10-24 14:45:55 +01:00
yellows111 d5ec733b07 allow textured icons to use vertex colours
caveat: some icons aren't meant to do this and will be over-saturated. Some icons are meant to over-saturate, but I don't mind that as much as the one's that aren't. The criteria that allows this is unknown to me.
2023-10-19 07:45:04 +01:00
yellows111 f22a8118a0 Support rotating icon using arrow keys, and use a triangle strip instead of triangles for BG again 2023-10-18 15:28:34 +01:00
yellows111 3ee8d20894 8am cleanup
felt lime it
2023-10-18 08:25:42 +01:00
yellows111 0569aa7b0b support esoteric RLE icons
looking at you katamari damacy
2023-10-17 23:35:03 +01:00
yellows111 4e27fcdc94 Oh my! Working textures!
Looking good, eh?
2023-10-17 20:59:54 +01:00
yellows111 af1359ed5b Icon rendering, basic texture support (bit broken, though) 2023-10-17 15:26:08 +01:00
yellows111 a8f47aa7fb more crash preventions, support X/SharkPort files
Long version:

Putting an SPS|XPS into the PSU input would read as if the file was very long, so added a 127-file limit (I think this is reasonable) to prevent prolonged stalling.

Added SPS|XPS support to the library, which is the third most common contained format besides PSU and PSV.

Updated demos.

Technical changes:

removed unused u16le definition from readEntryBlock(), since permissions are better read as a u32 instead

added PSV and SPS|XPS reader functions to c6 exports, since I forgot in 0.3.4

moved some stuff around in HTML demo, especially the old raw icon.sys and icon input boxes, since I'm finding parsing a collection of files more useful then the actual standalone files themselves.

HTML-demo: added an "show advanced options" checkbox that unhides features deemed too niche for conventional use
2023-10-15 20:28:59 +01:00
yellows111 4d1b790a7c fixed (while improving) offset issues with untested psv code, added more throw-outs for model parsing 2023-10-12 21:59:39 +01:00
yellows111 d68e2f913a in theory this works, in practice, i forgot to have a test file on hand 2023-10-12 10:58:05 +01:00
yellows111 5fff911ba6 correction: it's an EMS memory adapter, not MAX, that's a whole other can of worms 2023-10-12 07:54:59 +01:00
yellows111 06b1de707b Add README 2023-10-12 08:51:53 +02:00
yellows111 30258212af Initial commit 2023-10-12 08:49:07 +02:00