Acmlm's Board - I2 Archive - Rom Hacking - Proposing universal byte-data editor; DRDHack
User | Post |
Geiger
Posts: 452/460 |
Anyway, i have gotten myself started on the quest to convert to VC++. Once im able to do windows programs fairly well i will recode DRDHack for C++ 6.0.
If you are not going to learn Forms (which would require the Framework), do yourself a favor and learn MFC. Trying to program in straight Win32 is about the biggest headache you could incur.
Or maybe MinGW is good. Have not used it, so I cannot speak on the subject.
I just don't want to have to install another layer of obscurity just so I can have runtimes for runtimes hogging up all my resources with weird new bugs.
The new layer of obscurity is supposed to protect against things like buffer overruns. Also keeps programs from doing really weird stuff by just immediately failing them if they screw up. The combined pseudo-code also allows for cross-language compatibility.
I will dismiss "runtimes for runtimes" as a knock against Microsoft. Not that its entirely unfounded, since they have had large runtime packages for a number of years now. Hell, its practically unavoidable (even this program requires a couple of items). The main difference between the .NET Framework and previous packages is that Microsoft now forces you to get them all at once (which helps to avoid DLL Hell).
Binary programs hog memory too, as its standard runtime policy to just grab a ton more memory than is actually needed. Even worse, binaries have memory leaks. The Framework does not, as it has a garbage collector (another benefit of the "extra layer").
As for weird new bugs, I suppose it depends on how you define weird. A program will no longer keep running if it screws up (and the developer is not handling exceptions), and the system will keep right on chugging. That is A-OK in my book.
But no one said he had to use the Framework with the express editions (which are free by the way). VC 2005 can still compile to binary.
---T.Geiger |
HyperLamer
Posts: 7868/8210 |
I just don't want to have to install another layer of obscurity just so I can have runtimes for runtimes hogging up all my resources with weird new bugs. |
dan
Posts: 771/782 |
Originally posted by Santa Claus VC++ is nice and all, but I'd go with MinGW if you don't want a lot of weird bugs to deal with. But hell, use VB1 for all I care, just so long as it doesn't use that .Net crap. So long as the end result is good.
.NET really isn't that bad. Most people's problems with it are pretty irrational in my opinion. It'll likely be bundled with the next version of Windows, so I'd get used to it.
If DRDHack was written using .NET, I'd still use it. To deny yourself a useful program just because you don't like .NET is pretty stupid. |
HyperLamer
Posts: 7865/8210 |
VC++ is nice and all, but I'd go with MinGW if you don't want a lot of weird bugs to deal with. But hell, use VB1 for all I care, just so long as it doesn't use that .Net crap. So long as the end result is good. |
Matrixz
Posts: 18/20 |
So what if VB6 is old, it works fine Anyway, i have gotten myself started on the quest to convert to VC++. Once im able to do windows programs fairly well i will recode DRDHack for C++ 6.0. SharpDevelop i never heard about, but since its freeware, i might check out that.. |
Geiger
Posts: 451/460 |
Visual Basic source isnt too great for team development..
Its not so much that you are using Visual Basic, but that you are using VB Six.
You may want to consider using the Visual Studio 2005 Express compilers and SharpDevelop (though as slow as the latter is, I think I would just code it without an IDE).
DRDHack is a really nice program though. And you are certainly a better programmer than myself; had someone asked me to add graphical capabilities to a freakin' data editor, I would have told them to go to hell.
(What do you mean you want your toaster to make Jello? Its for makin' freakin' toast! )
---T.Geiger |
Matrixz
Posts: 17/20 |
Originally posted by GuyInSummers A bunch of people have pointed me to this topic since apparently it's similar to Nightmare. From the looks of things, this is developing much more quickly than Nightmare did. Does DRDHack in fact do everything Nightmare did and more? If so, I'll certainly recommend use of DRDHack rather than Nightmare and offer my services, though that might not amount to much since Nightmare mostly ceased development due to my laziness in the first place. I don't know how Alchemic'd feel about me abandoning his brainchild, but since I've got the cryptic source it isn't going far if I'm too unmotivated to touch it.
Well, the main thing is that DRDHack is aimed towards various kind of data at a defined offset, supported by different setups of interfaces. But, tables/arrays are supported pretty well, as indexed arrays and relative pointers are. One thing is that it doesnt line-up textboxes and drop-downs below each other like Nightmare does. Anyway, the Visual Basic source isnt too great for team development.. im doing slight changes everywhere in the code almost everyday. I had ideas about dividing the program into script-like plug-in files, but it seems pointless work still.
Originally posted by Imzogelmo I like the relative pointer capability, but is there a way (or are you planning a way) to edit 2x2 arrays of data?
Its not really supported. You could create a branch with relative pointers, and have many arrays in it:
(angle brackets are replaced so browsers doesnt detect XML.) {bra ptr="8010" name="Enemy Statistics"}   {item relptr="0" type="arr_byte" len="100" name="HP"/}   {item relptr="100" type="arr_byte" len="100" name="Palette"/}   {item relptr="200" type="arr_byte" len="100" name="Attack"/}   {item relptr="300" type="arr_byte" len="100" name="Sprite"/} {/bra}
But thats as deep table/array support in DRDHack is right now. I might find a way to support double-dimensional arrays (assuming thats what youre talking about by the formula you wrote). Im planning more variations of table/array support though |
GuyInSummers
Posts: 8/8 |
A bunch of people have pointed me to this topic since apparently it's similar to Nightmare. From the looks of things, this is developing much more quickly than Nightmare did. Does DRDHack in fact do everything Nightmare did and more? If so, I'll certainly recommend use of DRDHack rather than Nightmare and offer my services, though that might not amount to much since Nightmare mostly ceased development due to my laziness in the first place. I don't know how Alchemic'd feel about me abandoning his brainchild, but since I've got the cryptic source it isn't going far if I'm too unmotivated to touch it. |
Imzogelmo
Posts: 41/41 |
I like the relative pointer capability, but is there a way (or are you planning a way) to edit 2x2 arrays of data?
Basically I'm picturing relative pointers that work like (TableStart+Length*Index+FieldOffset).
I'm thinking that there is a way, but I don't see it yet. |
dan
Posts: 767/782 |
Super Mario Bros uses signed bytes for things like running left, jumping, etc. |
Matrixz
Posts: 16/20 |
Originally posted by dan Does DRDHack have support for signed data types?
No.. but does NES games ever use signed bytes, though? I guess SNES games uses signed integers commonly. I will support 16-bit integers anyway, and decimal bytes and integers.
SNES (and GBC) palettes will be no problem Im familiar with those. Hm.. variable-length-bit fields.. i think thats a good idea. Now to just think up how to organize support for all those combinations of byte and integer data :p
Btw, that new version of DRDHack is now aviable. |
dan
Posts: 763/782 |
Does DRDHack have support for signed data types? |
DahrkDaiz
Posts: 857/885 |
It's about time that good ideas and programs get attention, this, this sucker is going to get stickied for a while. |
HyperLamer
Posts: 7697/8210 |
That'd be easy if the program allows for variable-bit-length fields. SNES colours are just 5 bits of each colour and one left over. |
Smallhacker
Posts: 2187/2273 |
Please tell me that there will be SNES palette support too. |
Matrixz
Posts: 15/20 |
Great, good that this is catching on. It motivates me to keep active updates on this project.
http://elazulspad.net/matrixz/drd/drd.htm
That place is where i will keep all latest updates on DRDHack and my own database files. I updated the specifications for DRDXML files, (which is also aviable there). I hope to release a new version of DRDHack today to support the changes. Here's a little preview:
Yep, palette support |
drjayphd
Posts: 1430/1477 |
(services Matrixz)
I might do a database for Wheel of Fortune, if I can figure out how to handle the puzzles. I know their format, it's just a matter of how to translate it into something you can edit intuitively. |
DahrkDaiz
Posts: 851/885 |
A bit of a bump but I wanted to express my endorsement for this thing. I've started to create a database for Super Mario Bros. 3 using this program, so I'm now relying on you Matrixz to update this thing regularly! This would be a perfect answer for me to release my knowledge of SMB3 without having to write long explanations or write it in neat notes (plus makes it a lot easier for people to use the knowledge). |
Matrixz
Posts: 14/20 |
Originally posted by AnyoneEB Perhaps you could add a (table branch) element or something like that with an offset for the very start of the table and the table entry size and have the item offsets be relative to the start of an entry?
As it stands, data types can be an array where user choose the index (and each index can have a relative offset to the main one), so it works like a table. I recently improved it so each index can each have a name/label displayed in a textbox too. But your idea (if i got it right) is a good alternative, so i will support that.
Originally posted by AnyoneEB Also, type requests: 1. Binary flags like the "ownership" byte in EarthBound's items table (http://pkhack.fobby.net/misc/txt/items_table.txt). (I believe that is a feature request for Nightmare.) You would have to specify the meaning of each bit.
Great idea. Ill make it as an addition to the byte types, so you can have either bits, byte, or both.
Originally posted by AnyoneEB 2. Being able to edit a string by specifying in the XML that it is ASCII+something text would be nice.
Planning on it. Maybe ill just make .tbl files includable for this purpose
Originally posted by Jigglysaint What might be neat is if it's possible to implement graphical representation for certain bytes. For example, say I have a game where 1 byte is one tile. I want to be able to see those tiles in the rom and edit them as is. Perhaps it just might meaning that you need to rip the tiles and store them in the file, but that's better than nothing at all.
Or it could use pointers in the XML to specify where in the rom the CHR is, and what type it is (nes, gb, snes..). Hm, shouldnt be too hard to do, but ill stick to NES first.
Originally posted by Jigglysaint Also, instant pointer calulations. I'd like something that could decompress, but that's really beyond this type of editor.
You mean, instead of having static pointers in the XML, read and calculate pointers from the rom? Im gonna have to implement that. Decompression.. not sure how that would be useful for what this thing does. |
HyperLamer
Posts: 7561/8210 |
Hm... a full-blown game editor that uses XML and some sort of Javascript-like language to edit anything in any game (use XML to give it data locations/formats and script to do math and such). I wonder... |
This is a long thread. Click here to view it. |
|