News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

Author Topic: The Console Tool (by Low Lines)  (Read 252680 times)

beissemj

  • Jr. Member
  • **
  • Posts: 7
    • View Profile
Re: The Console Tool (by Low Lines)
« Reply #160 on: October 13, 2010, 11:52:27 pm »
Any chance of getting the source code for this? I'd like to take a look

Low Lines

  • Full Member
  • ***
  • Posts: 173
    • View Profile
    • lowlines
Re: The Console Tool (by Low Lines)
« Reply #161 on: October 14, 2010, 04:20:25 am »
@Zerox
Good for you :p

@beissemj
That would be a nope. If you can't make sense of my docs, nor locate all the other programs (with source code), that most of the stuff mine does and is generally ported/based from, then you would honestly have no hope of making sense of my code. That's not trying to be offensive, that's just a fact.

It's like when they say looking at an emulator's source code doesn't automatically mean you'll be able to write an emulator, if you don't understand the docs, it's pointless, I've tried and it's totally true.

beissemj

  • Jr. Member
  • **
  • Posts: 7
    • View Profile
Re: The Console Tool (by Low Lines)
« Reply #162 on: October 14, 2010, 05:29:18 pm »
@low lines
That's pretty unfortunate. You yourself have said on multiple occasions that university has kept you pretty busy, leading to long periods of inactivity on the project. Considering that so many people are interested in what you are working on, I don't see the harm in releasing it under a GPL/BSD license so that if you are busy other people can contribute to the project. Since it's not a commercial product and you aren't selling it, I see no compelling reason not to put it under CM on google code/github or similar. A very unfortunate part about the rom hacking community (imo) is that people start really cool projects like yours, but then for various reasons end up not finishing them (which is fine as I'm certainly guilty of that myself). The problem with this is that the community is then left with a prototype which shows lots of promise, but because the author didn't release the source code is now worthless. Why is it that no better tile editor has come out since Tile Molester which was released almost 7 years ago?

A community of people developing working in conjunction with one another always leads to a better end product. The more eyes you have looking at code the better that code will be. You claimed awhile back that you had to refactor various parts of your code to use a MVC pattern and that you were using classes incorrectly. Learning by trial and error is the most difficult way to learn, if you had a community of developers backing you they might have been able to provide guidance on better design paradigms. The end result? more progress on your tool.

Would I personally be able to understand your code? Maybe, maybe not. I've never dealt directly with openGL so I'm not familiar with the JOGL bindings that you are using, but that certainly doesn't mean someone else wouldn't be able to contribute.

*EDIT*
The portion of your code I'm interested in is the color table and the tile viewer / hex editor.
« Last Edit: October 14, 2010, 05:37:26 pm by beissemj »

Made in China

  • Jr. Member
  • **
  • Posts: 29
    • View Profile
Re: The Console Tool (by Low Lines)
« Reply #163 on: October 15, 2010, 01:23:38 am »
I think he worries less about the design part and more about the format decoding\encoding part, which is the core of the project. I don't think many people can contribute to that part, as they lack understanding of various formats, and can mostly be one-shot contributers.
But even if you could help there, he is already doing a pretty good job deciphering the format documentations by himself and converting them to code. So if you want to help him you could just bring him the documents - there's no point in making the project open source.

There's also the point of ownership. I don't know if it applies here, but it's generally more rewarding to build something grand by yourself, so you can see Lowlines doesn't share.

Anyway, I think he's doing well enough, and don't see him abandoning the project, as he does update the project regularly. So I don't think there's any reason to worry about it.

Low Lines

  • Full Member
  • ***
  • Posts: 173
    • View Profile
    • lowlines
Re: The Console Tool (by Low Lines)
« Reply #164 on: October 15, 2010, 03:10:56 am »
@beissemj
You know I've actually kind of been expecting a response such as yours for a while. I've watched it happen and many other projects before, so I knew it was just a matter of time :p
I totally understand all the points you make, in fact they say in uni that you won't make it anywhere if you can't work collaboratively with others. But the other thing is I've just come out of my first group project on IT development and it was the most horrible experience I've had to date. Not only was my partner incredibly stubborn and believed he was right all the time, but his overall standard was way below what I was aiming for so I was doing a lot more work than what I had to just to get the project up to a level I was proud enough to submit as my work. Up until I spoke to my lecturers, who were super awesome and handled it magnificently, I was really dreading working on my assignment despite it being something I genuinely enjoyed doing because of the way this other fellow was. I'm not saying every group project is going to be like that, but the fact that you've brought it up right now is really really bad timing.

I've got several gigabytes of past projects (40+ projects, not just java) that I've started and not finished either due to getting bored or just not being able to go further with them. This project has been by far the one thing I've stuck to longer than anything else, and I can't see myself stopping, because I like hacking formats and it's something I can actually do, unlike making games or writing emulators which either bore me easily or just get too complex after a while. If I ever did suddenly decide to abandon it, then I would put up the source code, but I plan on sticking to my guns for a long while yet so :p

As for the Tile Molester thing, its obvious, people (who are smart) just aren't that into making little public apps like they did 10 years ago. Back then iirc it was sort of like a boom in the whole hacking front, but since then there's been lots of things going on, such as how companies are making a real effort to prevent illegal use of their stuff. And also alot of those "people" probably have jobs now, or lives, unlike me :p I'm not saying hacking in general is any less than it was, there just aren't any uber tools popping out anymore, because they do take a bit of time to create.

I still use Tile Molester myself to check my assumptions on things when I'm hacking files, because it does its job, just because its old doesn't mean it needs to be replaced...But hey a tile editor is easy to make so why don't you make one :p

My hex editor never made it past displaying the data onscreen, though I intend to change that...

@Everyone
I've still got an assignment to finish off today, and I need to put in some time to study over the next week for exams, but other than that I'm essentially on my break now so :)

beissemj

  • Jr. Member
  • **
  • Posts: 7
    • View Profile
Re: The Console Tool (by Low Lines)
« Reply #165 on: October 15, 2010, 11:57:37 pm »
@Made in China
I do understand the ownership concept, and I certainly agree that there is a sense of pride in accomplishing big things. On the other hand it usually takes many people to accomplish great things. Think of an author for example. His name is still on the cover, but there is an editor, publisher, illustrator, etc.

Quote
I think he worries less about the design part and more about the format decoding\encoding part, which is the core of the project
And just some food for thought: If the goal of the project is to take design documents--information which is freely available for the most part--then why can't the end product also be freely available?

@Low Lines
Well, as long as when you get tired of the project you are willing to open it up to others, then that's resonable. Sounds like you had a rather unfortunate experience at uni which is weighing into your decision, but I can understand that. While I don't agree with your decision, it is certainly your right to do whatever you want with the project. For what's its worth you are doing a great job, and I applaud your work.  :thumbsup:

Also, the maturity of your response is appreciated. I was expecting more of flame than an answer, but glad to see people can be civil.

Quote
I've got several gigabytes of past projects (40+ projects, not just java) that I've started and not finished either due to getting bored or just not being able to go further with them.
You and me both =(

Jandazekon

  • Full Member
  • ***
  • Posts: 130
    • View Profile
Re: The Console Tool (by Low Lines)
« Reply #166 on: October 16, 2010, 08:45:05 am »
Low Lines.
Are you capable to build mid2bgm and dls2wd by using source code from both vgmtoolbox/mkpsf2 and vgmtrans.
I like to hear my own music in a ff x-2 psf2 file.

Low Lines

  • Full Member
  • ***
  • Posts: 173
    • View Profile
    • lowlines
Re: The Console Tool (by Low Lines)
« Reply #167 on: October 16, 2010, 09:29:56 am »
@Jandazekon
I haven't dabbled too much with audio as of yet and the last time I did was over a year ago while trying to view NDS audio formats, which worked somewhat though ADPCM (if that's the right acronym) files were a bit chocky. Have not done much on midi type audio though, I understand how they generally work but I haven't sat down and tried as of yet. Just looking at your suggestion, you seem to be talking about at least 4 different file formats, and I think to build a decent converter you would first need to be able to read and freely modify both formats first. Source code would help but documentation would be better. I'm not in any rush to work on audio formats at the moment though. The only stuff I'm really wary about are compression formats, mostly because they are generally quite poorly explained.

@beissemj
I think that if someone is going to put something out for the public to see, they should be accepting the fact that some people won't totally agree with them. If all they do is curl up into a ball and snarl at others when they give out opinions, then they shouldn't be putting it out in the first place :p Flaming is not something I see much future in, plus this is my own thread so I'd rather not sully it up with conversation that isn't worth reading, hence why I try to encourage discussion, and why I write a lot when I try explain something :p
« Last Edit: October 16, 2010, 09:51:14 am by Low Lines »

SCVgeo

  • Guest
Re: The Console Tool (by Low Lines)
« Reply #168 on: October 19, 2010, 12:03:37 am »
@Zerox
Good for you :p

@beissemj
That would be a nope. If you can't make sense of my docs, nor locate all the other programs (with source code), that most of the stuff mine does and is generally ported/based from, then you would honestly have no hope of making sense of my code. That's not trying to be offensive, that's just a fact.

It's like when they say looking at an emulator's source code doesn't automatically mean you'll be able to write an emulator, if you don't understand the docs, it's pointless, I've tried and it's totally true.
Just stopping by to add a note that one can understand the docs yet not want to undertake such a large project as yours.

Also, programming your project in Java is practically making it open source. You should just go all the way and make contributions easier.

@beissemj JD GUI is your friend.

Low Lines

  • Full Member
  • ***
  • Posts: 173
    • View Profile
    • lowlines
Re: The Console Tool (by Low Lines)
« Reply #169 on: October 19, 2010, 06:42:28 am »
@SCVgeo
Just because something can be done, doesn't mean you should just give in to people. I've made it clear what I am willing and unwilling to do, I'm not going to change my mind if I get a hundred people to tell me to do otherwise, whether it be right or wrong. Forcing/pushing someone into something can have a negative effect, and I don't recommend it here or anywhere else. People are welcome to voice their opinions, however anything after that is just not nice.

If people are so insistent on seeing my source code, then by all means, find a decompiler and use it, just be aware I don't condone this. I have my reasons, it's up to you whether you choose to respect them or not.

Also I totally agree with the docs comment, I'm pretty sure I've already pointed that out, however I just wasn't as blunt about it.

Koetsu

  • Jr. Member
  • **
  • Posts: 45
    • View Profile
Re: The Console Tool (by Low Lines)
« Reply #170 on: October 19, 2010, 03:49:20 pm »
Say, if Console Tool will be able to export sounds, would it be able to keep the names? I know sounds are named but none of the programs I've tried keep them.

Vague Rant

  • Jr. Member
  • **
  • Posts: 47
  • Deceptively cute
    • View Profile
    • Vague Rant
Re: The Console Tool (by Low Lines)
« Reply #171 on: November 06, 2010, 06:19:08 am »
Unsure if this might already be planned, but I might just literally kill for it to gain TPL (texture format used in a number of Wii games) support. I'm working on a translation hack at the moment and looking for the exact TPLs I need to modify is needle-in-haystack stuff. I'm extracting u8s which themselves include ~20 LZ77'd u8s, which in turn have anywhere from 1-15 TPLs I have to convert just to get a look at them and go "Nope, not what I'm looking for." If I could just straight out open up these files and see a preview of the TPL right there it'd make the entire process so much less horrible.
I've got nothing to say, but it's OK.
Vague Rant

Low Lines

  • Full Member
  • ***
  • Posts: 173
    • View Profile
    • lowlines
Re: The Console Tool (by Low Lines)
« Reply #172 on: November 06, 2010, 11:01:57 am »
@Koetsu
I'm a big fan of keeping stuff true to the source, so keeping internal names and the like during exporting would be expected. I don't really see the point in changing something like that other than just being lazy writing the exporter.

@Vague Rant
YACD has plenty decent docs on gamecube/wii formats including TPL so they'd definitely be on my list after the NDS stuff. I also know what you mean with finding the right files in games, and to me the companies are definitely making a clear attempt at making that job even harder by scrambling the files etc etc. Cutting a 4 step process (find, decompress,export,open) using multiple apps into a simple task has been one of major goals of this whole project, and it really does make life easier, when it works I mean :)

@Current Status
I'll be honest an say I got a bit peeved after the earlier conversation going on in this thread, and so just played GTA IV for a week while finishing off my exams which finally ended last Wednesday (hooray!!). But after that I sat back down and it was great to work on this project again, but at my own pace. Encouragement and all that is great, but too much pressure and it just becomes a task and not something fun :p

I got the palette editor/exporter fully working, which allows you to open/export between 4 different palette formats including NCLR, though there are still a few unknown bytes in the header which aren't being properly filled in yet. I immediately started working on the tile/image editor, but I kind of dropped it and went on to working on the drag and drop interface of the full version, which is coming along quite nicely :) Property/Actions are handled (I think) much more efficiently by use of property change listeners and you can freely move rearrange the gui almost as well as with Adobe apps. I still have to add resize functionality as well as rearranging the tabs in a group (the grey boxes) through dragging, but moving components from one place to another is all completely working. I've also started making use of the Properties class so you can rearrange the gui and it will still be the same the next time you open it :)




For those who want to have a play with the palette editor, I've loaded a build of the Mini version along with a preliminary how to doc I've started writing. You can open the other NDS graphic formats (NCGR, NCER, NANR, NSCR), but at best you'll get a rendered image (if anything) as I've only got as far as the first format. Also you should be able to use it as a quick NDS LZ77 decompressor by opening any compressed files. It will automatically export the decompressed version with an "_extract" added into the filename.

Download: Console Tool Mini (Demo) 199 KB
« Last Edit: November 17, 2010, 08:16:37 pm by Low Lines »

Celice

  • Hero Member
  • *****
  • Posts: 645
    • View Profile
Re: The Console Tool (by Low Lines)
« Reply #173 on: November 06, 2010, 01:52:19 pm »
Awesome.

For me this program is less used for practical purposes and more enjoyment.  I like just sifting through games and seeing their stuff in a different way, and always finding things unused.  Programs like these make that pretty fun to do :)

Rhys

  • Hero Member
  • *****
  • Posts: 706
    • View Profile
    • CN
Re: The Console Tool (by Low Lines)
« Reply #174 on: November 06, 2010, 03:17:07 pm »
I really like the photoshop-inspired UI you've got going there, how long did it take to code that? I shudder to think how long that'd take to re-implement in Objective-C, probably months -.-;

Low Lines

  • Full Member
  • ***
  • Posts: 173
    • View Profile
    • lowlines
Re: The Console Tool (by Low Lines)
« Reply #175 on: November 06, 2010, 09:25:58 pm »
@Celice
That's great. I also like doing that because I like to see how developers make their games, it's also really fun getting a new file and sitting there trying to figure out what it does :)

@Rhys
Wells obviously I had a partially working version from the older app to begin with but the only bits I really took from it were the component painters and a few good bits of code and concepts (though not very much). The top level component which I call the Desktop holds three layered panes, one for toolbars, one for the adobe uis and one for the actual open files. When it refreshes, it lays out each pane and then tells the next one how big it is. The adobe ui has three parts, the dark grey dock, the light grey group, and each individual panel with an associated tab to access it. In the old version I was treating each component manually but in the more recent one you only have to meddle with the panels themselves and the layout manager does all the rest. The groups and docks are all created and maintained automatically as well as removing themselves when they are empty. Writing the Drag n Drop was a bit of a pain, since you have to like implement 6 classes just to make it work, but that's all kept in one class and all you have to do when you want to activate it is add a GestureListener to the component you want to move and a DropTarget to the component you want to drop something on and then create a new condition in the Drag n Drop class. In general it's just a matter of removing a component from one parent and pasting it in another, but say for moving panels which is done indirectly through the tabs, you have to do a bit hierarchy walking to get the panel and then move it as the tabs are also created dynamically. I did try using a JTabbedPane but I found it was way more work, overriding everything than just writing a fresh one from scratch.

But basically all you have to do is set the id numbers in a panel (Dock Id, Dock Bar Id, Group Id, Panel Id) and the layout manager should the rest, also enabling/disabling a panel adds/removes it from the layout. Makes it very easy to save settings too :)
I don't quite remember when I started, but I'd say it took the better part of a week to do since I've only really been working on the project in general for just over a week now. I'd have to say a lot of the Java APIs made this job way easier than what it was, particularly the ArrayList class which is like my favorite class at the moment. I haven't done very much C, but I'd really hate having to do stuff without the ready made APIs, it WOULD take months O_O

I'm still considering using my own graphics for UI since the current ones are just crappy screenshots of originals without the nice lovely soft transparent edges etc, but I'm not the best at creating that professional look in photoshop, so it might still be a while before I do make any changes :p

Koetsu

  • Jr. Member
  • **
  • Posts: 45
    • View Profile
Re: The Console Tool (by Low Lines)
« Reply #176 on: November 07, 2010, 11:28:13 am »
The LZ77 decompressor didn't work for me. Is the output file supposed to be in a certain format? The program just closes.

Low Lines

  • Full Member
  • ***
  • Posts: 173
    • View Profile
    • lowlines
Re: The Console Tool (by Low Lines)
« Reply #177 on: November 07, 2010, 11:39:30 am »
Its specifically for the NDS version. The first byte in the file should either be 0x10 or 0x11 iirc, and I also think I implemented it to open files with the LZ77 magic stamp as well (found in some NDS games ie Super Mario 64 DS).

The program will just close if it doesn't know how to open a file, but I was pretty sure the auto decompressor occurs before that point though so there should still be a newly created file in the folder for any valid LZ77 compressed files.

Actually now that I'm actually going back over the code, RLU compression should also be available too btw @_@ And also it definitely should decompress the file before closing...
You can always PM me the file and I'll have an look and see what's wrong :)

Ryusui

  • Hero Member
  • *****
  • Posts: 4989
  • It's the greatest day.
    • View Profile
    • Tumblr
Re: The Console Tool (by Low Lines)
« Reply #178 on: November 07, 2010, 12:04:39 pm »
Can I double-check something with you real quick?

0x10 means the old GBA-style decompression, where every compression code is two bytes long, the first nibble is the length (minus three, i.e. add 3 to get the actual length) and the rest is the distance (minus 1, IIRC), right? And 0x11 means that the compression codes can be up to four bytes long and the length part can represent a sixteen-bit digit?

'Cause I thought I was treading uncharted ground with my current project until you mentioned those two numbers. (And lemme guess: 0x30 denotes RLE compression?)
In the event of a firestorm, the salad bar will remain open.

Low Lines

  • Full Member
  • ***
  • Posts: 173
    • View Profile
    • lowlines
Re: The Console Tool (by Low Lines)
« Reply #179 on: November 07, 2010, 12:21:24 pm »
Wells I'm not totally certain how they relate to LZ77 compression on GBA's but that sounds basically along the right lines. I'm not a real expert on compressions but I'd assume they ought to be the same or at least similar, you should look at Garyong's source code :p