gomule-d2r icon indicating copy to clipboard operation
gomule-d2r copied to clipboard

Hi from GoMule!

Open silospen opened this issue 3 years ago • 16 comments

Hey, just wanted to say hi and let you know that I've been working on D2R support over at Sourceforge https://sourceforge.net/p/gomule/git/ci/d2rSupport/tree/

silospen avatar Sep 30 '21 03:09 silospen

Hey @silospen,

Ohh! nice! I will look at your repo.

Most of the classes and functions that you have I've kept. There is this additional class that I added for a shared stash here https://github.com/pairofdocs/gomule-d2r/pull/14 (WIP on the shared stash)

pairofdocs avatar Sep 30 '21 17:09 pairofdocs

I downloaded the official gomule version from silopen to see what the differences are but it seems you guys use different file types for the atma stashes, cant load them.

AcetateBarrel avatar Oct 05 '21 01:10 AcetateBarrel

Yea there might be some difference there (but maybe just file extension, not structure of the stash itself)

@AcetateBarrel if you change the stash filename to .d2x will it work in gomule-official ?

The .d2i stashes created in this gomule-d2r are Atma structure but the file name extension for Atma stashes is actually .d2x for LoD

pairofdocs avatar Oct 06 '21 23:10 pairofdocs

I updated the D2X format to be inline with the D2R savefiles, so there's:

  • A version bump to keep it in sync with d2s files (97 vs 96)
  • JM flags between items have been removed (so no JMs at all)

I was planning to put together a PR on here https://github.com/pairofdocs/atma-stash-d2r for another converter from your d2i/d2x to my d2x later this week.

silospen avatar Oct 06 '21 23:10 silospen

I updated the D2X format to be inline with the D2R savefiles, so there's:

  • A version bump to keep it in sync with d2s files (97 vs 96)
  • JM flags between items have been removed (so no JMs at all)

I was planning to put together a PR on here https://github.com/pairofdocs/atma-stash-d2r for another converter from your d2i/d2x to my d2x later this week.

Cheers for the update! The d2x stashes I made with R0.3 currently throw an error in R4.4.8, do I have to update them manually?

georgwacker avatar Oct 07 '21 11:10 georgwacker

@silospen ohh I see 👍

I have .d2i as JM, numItems, Itemlist(no JM separators) (I chose that since the D2R shared stashes .d2i from the Alpha were just this simple item list)

image


and .d2x format has D2X, numItems, version, checksum, JM, Itemlist (with JM separators for LoD and no sep. for D2R)

image

so my .d2i file can't be used like I thought, I'm missing the D2X characters, the version (97 like you said for D2R) and the checksum

pairofdocs avatar Oct 07 '21 18:10 pairofdocs

We could do something like this conversion system which has the 'starting point' of .d2x version 96

(.d2x version 96 ) < -- > (.d2i gomule-d2r) is already set up

so all that's missing is (.d2x version 96 LoD) -- > (.d2x version 97 LoD)

and we can skip the (.d2i gomule-d2r) -- > (.d2x version 97 LoD) converter
since the 'undo D2R' step is covered by (.d2i) --> (.d2x version 96)

pairofdocs avatar Oct 07 '21 22:10 pairofdocs

and .d2x format has D2X, numItems, version, checksum, JM, Itemlist (with JM separators for LoD and no sep. for D2R)

It looks like the d2x version 97 from @silospen has the following header now:

D2X, numItems, version, checksum, Itemlist (with no JM separation) (so no initial JM as well)

I tried to modify the atma-converter today, for the d2x 96->97 conversion, just reading the item data byte-wise and skipping any JM's... I'm still debugging.

Perhaps GoMule could convert the 96 stashes automatically?

georgwacker avatar Oct 10 '21 16:10 georgwacker

and .d2x format has D2X, numItems, version, checksum, JM, Itemlist (with JM separators for LoD and no sep. for D2R)

It looks like the d2x version 97 from @silospen has the following header now:

D2X, numItems, version, checksum, Itemlist (with no JM separation) (so no initial JM as well)

I tried to modify the atma-converter today, for the d2x 96->97 conversion, just reading the item data byte-wise and skipping any JM's... I'm still debugging.

Perhaps GoMule could convert the 96 stashes automatically?

I'll take a look this week too.

My idea was to use the atma-converter javascript code https://github.com/pairofdocs/atma-stash-d2r/blob/master/index.html#L280-L285

and just change what's written to the header ( D2X, numItems, version, checksum, Itemlist (with no JM separation) (so no initial JM as well) like you wrote above)

And i'll have a separate .html page for this atma 96 --> atma 97 converter so the 1st index.html page doesn't become spaghetti messy

Edit: https://github.com/pairofdocs/atma-stash-d2r/blob/master/index.html#L307-L313

the header for the destination bytes (dst) should be something like

    numItems = src.read16();
    // write D2X, itemcount, version 97, 00 00 00 00 for checksum
    dst.write8(0x44);
    dst.write16(0x5832);
    dst.write16(numItems);
    dst.write16(97);
    dst.write32(0x00000000); // fill in checksum after dst is populated

then parseItemList() is called

pairofdocs avatar Oct 11 '21 18:10 pairofdocs

An update on the Atma .d2x v96 to v97 (D2R) converter

I added a separate page for the .d2x <---> .d2x converter here https://pairofdocs.github.io/atma-stash-d2r/convert96to97.html

Testing with a stash (.d2x LoD --> .d2x D2R) worked https://imgur.com/a/as0Qbay

pairofdocs avatar Oct 13 '21 15:10 pairofdocs

Just tried the converter for d2i>d2x and got this as error

Error

Stash Version Incorrect! at gomule.d2x.D2Stash.readAtmaItems(D2Stash.java:153) at gomule.d2x.D2Stash.(D2Stash.java:78) at gomule.gui.D2FileManager.addItemList(D2FileManager.java:1597) at gomule.gui.D2ViewStash.connect(D2ViewStash.java:352) at gomule.gui.D2ViewStash.(D2ViewStash.java:286) at gomule.gui.D2FileManager.openStash(D2FileManager.java:1508) at gomule.gui.D2FileManager.handleStash(D2FileManager.java:1484) at gomule.gui.D2FileManager.openStash(D2FileManager.java:1446) at gomule.gui.D2FileManager$26.actionPerformed(D2FileManager.java:901) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$500(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)

AcetateBarrel avatar Oct 14 '21 18:10 AcetateBarrel

does anyone know what causing the error for me? Thanks

AcetateBarrel avatar Oct 20 '21 15:10 AcetateBarrel

Share your stash, we can take a look

Which converter page did you use?

pairofdocs avatar Oct 20 '21 21:10 pairofdocs

Here's the link Link

here's my original stash and the one I converted. Stashes

AcetateBarrel avatar Oct 21 '21 01:10 AcetateBarrel

I think you need to use https://pairofdocs.github.io/atma-stash-d2r/convert96to97.html to convert to the latest version and then hit 'Download Atma version 97 LoD .d2x stash'. Let me know how that goes?

silospen avatar Oct 21 '21 02:10 silospen

Just tested a few and they seem to be all good now. I did D2i>D2x then 96>97. I'll update them all tomorrow and let you know if I have any problems. Thanks for the help

AcetateBarrel avatar Oct 21 '21 02:10 AcetateBarrel