|
Wednesday, December 16. 2009
The intent for this project is to write a reusable library (statically linked ONLY -- reasons for this later) that can be built into a number of emulators to provide an SRDP "entry point" to the emulator's core debugging functionality. In this chapter, I will explain my vision of the API provided by the library, and touch up on some of the ABI as specified on the wiki.
The library, "libsrdp", might look something like this:
Continue reading "libSRDP: API, ABI, and modus operandi"
Sunday, December 13. 2009
Sometimes I forget what I like about software engineering and reverse engineering. This comes about because I go for months without touching any familiar personal projects. I can attribute this mostly to my job. I work in Information Technology; not software engineering. IT sucks. It's not me. I'm supposed to be designing and developing mail servers; not configuring them. But I digress.
The stresses from my work flow into my hobbies, and I lose interest in much of anything. The only way I'm going to fight that feeling is by consciously forcing myself back into the hobbies that I enjoy. Even if it means my work ethic suffers. Oh well.
So to start off, I'm getting back into some development and hacking with another debugger. Some might recall that I developed the initial FCEU debugger (FCEUd) many years ago, followed by a GameCube debugger (GCNrd), and some other related projects that never saw a release of any sort. This time, I'm going to focus on an area that has been severely lacking debugging tools for as long as I can remember: SNES. And this time, I'm going to do it right. I'm pushing to adopt SRDP in its very first implementation. But there are still some trouble areas to cover, and some serious decisions left to be made before any work can be done.
Continue reading "And now for something Remotely enjoyable"
Thursday, August 6. 2009
Background:
Debugging is hard.
Let me rephrase that: Debugging is HARD. When I say "debugging" I am talking about real-to-life low level debugging. Not source-level debugging, and not printf() debugging. This is the real deal; what some people call "reverse engineering."
Why is it so hard? Probably because we don't have the right tools. We have some tools. Not much of an arsenal, but enough tools to get by. Some of these few tools are pretty decent, even. But they have limited usefulness. I will give some examples. IDA Pro is very popular for low-level debugging and its analysis-oriented disassembler. But it is only useful as a debugger on x86 platforms. Even though it supports hundreds of CPU architectures, that support is only available in its disassembler mode. As far as the debugger goes, x86 only. And then you also have the trouble that costs thousands (!) of dollars.
Continue reading "Moving Forward with Scale"
Monday, December 15. 2008
It has been over a month since I last blogged (sorry about that... But I'm sure it doesn't affect too many people, anyway. When I say "all two of you" it's probably closer to the truth than most bloggers) My excuse this time is not exactly one of losing interest, but of getting extremely busy with work. And ... other things. Which I will cover briefly in a few moments.
Continue reading "Facing the Inevitable; Hindering Progress to Continue Waging the Battle Against Evil (or, how Microsoft is Ruining my Life)"
Wednesday, November 12. 2008
Branding is big in the world of Mozilla; the MPL, for example, has a clause specifically to protect brand names, trademarks, and logos. A lot of the Mozilla API deals with branding, as well. Especially in the locales API, where branding most comes into play. But also in the skinning APIs.
I haven't researched or played much with Mozilla's branding support, but I did decide that Descend needs its own identifiable brand, at least temporarily. Remember, "Descend" is very much a code name, and will remain one for the foreseeable future. But it can still be graced with a logo, among other things. And this is why I am discussing branding at all: Today, I present a very simple logo that I whipped up in GIMP 2.6...
Continue reading "Branding a Mozilla-based application"
Saturday, November 8. 2008
After implementing proper anchor/link support in Descend, I realized that the default action for 'hash links' in Mozilla is very bad. When you click on such a link, the browser window scrolls to the target element, placing the element at the very top of the browser view port. This is probably fine for some common website layouts, where the website is a document you read top-down. In the case of coding, however, you often find yourself reading center-out, instead. What I mean by this is that once you pinpoint an interesting piece of code, you often need to read the code prior to get an idea of how variables are initialized, for example, and the code afterward to see where else it leads.
Realizing these two paradigms of reading are incompatible, I decided to change the default action taken when hash links are clicked. This is simply a matter of adding a 'click' event handler in Javascript to the document's body element.
Continue reading "Capture click; make things work"
Wednesday, November 5. 2008
After reading over the previous blog entry I made which explains the Style Context object and its use, I realized that there are, in fact, cases where you might want to style portions of comments differently (just as an example). For instance, I use "FIXME" comments in my code all the time; these comments have special meaning, so they should also have special styles.
The styling parser styles chunks of text, but does not do any further styling after each chunk is broken down. To fix this, today I added nested styling rules to the Style Context structure. This is just another optional member, which itself is a Style Context. When the parser encounters a match with this new sub-context, it re-enters itself recursively, to style the matched text with the new Sub-Style Context. What you get, then, is a simple and effective method of infinite style nesting (though only one or two will probably be useful) within every chunk. That means, chunks can have chunks which can have chunks...
Continue reading "Extending the Style Context"
Saturday, November 1. 2008
I've been playing a lot with Mozilla 1.9.0.x recently (the version which Firefox 3.0 is built on), and one of the things I have been studying is regular expression optimization. See my previous entry for some examples.
The upcoming Mozilla 1.9.1 (which Firefox 3.1 is being built on) will increase Javascript performance in a number of ways, but it will not likely help regular expressions. The parser I am writing for Descend will rely on regular expressions for doing a lot of the difficult text matching. For this reason, it is important to make regular expressions perform well in Descend. In order to make this happen, I have been writing a number of regular expression benchmarks in Javascript to test the performance gains and faults of reordering the matching sequences.
Continue reading "Optimizing Regular Expressions for Mozilla"
Friday, October 31. 2008
It has been almost exactly 25 months since Kodewerx launched. I'm not sure what exactly I have accomplished with it, but it's definitely still kicking and at least putting along in some form or another.
That needs to change. This site used to be a beacon of hope for some very poorly treated hackers and coders. It used to represent freedom and meaning. And atone point, Kodewerx was also a hotspot for inspiration and opportunity. Some of these points haven't changed much over the past two years. But it's slowly dwindling. And the less I do about it, the less relevant Kodewerx will become. Both as a meeting place for friends and as a quagmire for explosive creativity.
I know the solution. Surely, you do too. But first, let's examine the problem more closely; to better evaluate if solving the problem is even worth it. First, to understand the problem, let us justify that the problem exists. Going back in time a few years, I was responsible for a few really nice pieces of software; GCNcrypt, MAXcrypt, GCNrd... If you are unfamiliar with any of these names, it's probably because hacking video games is not your cup of tea. These are video game hacking tools that I developed in my spare time and released for free (in the two former cases, this also means free as in speech, not just free beer; to paraphrase an oft-spouted RMS quote). I developed these tools out of necessity, and released them out of love; for the community and for the hacking. But this was all long ago. Long before Kodewerx was founded.
Coming back to present times, we still see nothing really definitive come from Kodewerx. There are some interesting projects in our Hacking Development forum, but these are mostly from third parties (forum visitors) who have also posted about their projects elsewhere. In essence, Kodewerx lacks its killer app. This is a problem.
Now we have defined our problem, and we can begin considering the course of action which best suits our needs; do we work to solve the problem, or is it too late and nothing good will ever come of this? Given those two choices, it is clear that working on the solution will be a major struggle and could take several months, or even several years, to begin to see any result of the massive amount of effort it will require. On the other hand, taking the easy way out and letting it die quietly will put me 'out of the job', so to speak. What will I do with my spare time? I'll be bored to misery and the world will miss out on some class Kodewerx innovation.
Worth it? Or kill it?
Continue reading "Descend to the Low Level"
Wednesday, April 30. 2008
I am personally adamant about web standards. There is no "feature" good enough to break or even bend web standards. Ever. One such "feature" is the very disturbing "favicon.ico" which you might recognize as another disgusting Microsoft invention.
The big problem with favicon.ico is that browsers implementing this "feature" assume that a file with that specific name exists at the web server root, and will attempt to download it. For smart web admins who do not bow to the will of Microsoft, this "feature" fills the server's error log with 404's on the non-existent "favicon.ico" file. Even our best friend, Mozilla Firefox, contributes to this problem. But fret not; there is a cure!
Continue reading "Firefox Tip"
Tuesday, April 29. 2008
Welcome to what you might call the most retarded idea I've ever put to bad use! Of course, I speak of Kodewerx, a website / forum community which used to have a well-defined goal, but now boasts mostly randomness and whatever we are in the mood for today.
To add to all of the action-packed excitement here, I've installed a new blog system that I might actually use, and it might even be something actually worthwhile of a visit! If not, at least I now have a place where I can whine about life and its every nook and cranny of wholesome enjoyment.
Continue reading "The part of KW where things actually happen?"
|