Friday, May 28, 2010

Website overhaul

I guess this counts as another blog post (wow, already?). I had been working on a new website for past two days. My previous website was made entirely in MS Publisher (yes, you can laugh uncontrollably now) and ever since I switched over to Linux I could no longer use it. Besides, although as simple as it looked, MS Publisher generates seriously ugly and large code to do even simple stuff. So maintaining it was not so simple. Also, it seems that MS Publisher takes great care in making sure that the pages render correctly in IE only. Other browsers didn't render some of the stuff as simple as bullet lists correctly. Besides, at the time, I didn't knew any CSS or whatever it did. This meant that layouts had been duplicated across all of the pages which made pages even larger and more complex. So finally, I decided to dedicate some time to this.

So I quickly learned some CSS (and quickly forgot it) and had wrote a nice minimalistic template. I already knew some (X)HTML so made a little template. So, then using gedit and little bit of KompoZer I "ported" my old website to this new design/template. Also made sure that my site was XHTML 1.0 Strict validating. However, if there is a standard for CSS, it may not get passed (because my CSS knowledge is limited and I am noob at that still).

So, the new site was done today. Its now lighter, faster, pleasant looking to the eyes yet minimal. It should also be rendered correctly in all browsers (though I've only checked Firefox). Source should be easy to understand too (though KompoZer seems to have messed up the indentation, ffffff....).

Anyways, thats all for now. Hopefully you'll like the newer design. Please report any broken links or any other suggestion that you may have.

stay safe,

AamirM

Wednesday, May 26, 2010

Current works

O....K....

So, I made this blog like two years ago with the thought of letting people know about the stuff I was doing and show the so called "WIPs" etc.. but haven't really been able to do it because of less time/other crap. Now that I am a little free, I thought what the hell, lets update this thing. There would be at least one person who maybe wondering (or at least I hope so) what I have been doing and why I haven't been much active recently. Anyways, here goes nothing:

1) Regen (Win32 and GTK+):

Regen has not been worked on for a while. And by that, I mean like there hasn't been any big core emulation change. I haven't really done anything worthwhile since the last release. Only a small list of cosmetic changes and little stuff here and there. All in all, not enough stuff to be release worthy.

Also, maintaining two GUI ports sorta sucks as evident from the fact that the GTK+ port is light years behind the Win32 one in terms of feature and core emulation. If I wanted, I could just add these feature and update the emulator to the latest core for GTK+ port. It'll only like take a few days. But I have no motivation to do that. And writing code for GTK+ (and Win32) sucks and is not fun at all. But thats something for another blog post I guess. So I've decided to stop doing this any longer. Its just a waste of time and energy. So I hereby declare that the Win32 and GTK+ ports of Regen have been discontinued. This, however, does not mean that Regen is dead. Also, the "D" (Debug) edition will continue to be available and worked on. So, what will happen then? you ask? Continue to read and find out :P .

2) Turbo Engine:

Turbo Engine has had some major unreleased work done. All of this was for the 0.4 release. But that was done like three to six months ago. New stuff include many speed related improvements including a completely new and very fast cache renderer to address the speed problems, improved VDC/VCE timing improvements thanks to Ki, Rypheca, Exophase, Tomaitheous etc.., much improved CD-ROM emulation and some enhancements in PSG (thanks to Tomaitheous) and other things (like addition of debugging stuff). Again however, maintaining two GUI ports suck (yes, there is a preliminary GTK+ port of this too). So work on these two ports has been stopped as well.

3) Satronic:

This is the thing I am working on currently (alongside another thing mentioned later). What is it? Well, Satronic is a new Sega Saturn emulator with the aim of high compatibility and high speed emulation. Currently, its not much. Though it works and manages to run quite many games but at rather poor speeds (like 3-8 FPS). The slow speed is expected at this stage because the two SH2s and the M68000 are synced very closely to each other (this seems to be required to boot the BIOS). Also, the renderer is line based and is currently VERY unoptimized and incomplete though working. I've started working on a new optimized renderer (for VDP2 only for now :D). Other things are probably not that bad in terms of speed but are just plainly incomplete. Thats because the Saturn is a machine with HUGE amounts of stuff and details. Its programmer manuals consists of "over 9000" pages. Anyways, here is a screenshot of the last Windows build (still using the old renderer):


4) Reality0x40:

About over an year ago, I started to get some interest in understanding how N64's graphics system works. After studying the MESS' RDP implementation by Ville Linde and reading various documents along with the very valuable help from angrylion, I wrote a LLE RDP plugin for N64 emulators. The main goal at the time was to have a plugin that provided "enough" features of the RDP to run most games at playable speeds. To get this, almost 40% of the code was in SSE assembly (mainly for different combiner and blender stages) and making triangle rasterization faster lead to code that would overdraw pixels in an ugly manner under certain conditions and wasn't really accurate. Though, it was still better than MESS' implementation at the time (which now seems to totally murder everything in terms of accuracy :D). Many games ran at playable speeds (averaging 38-45 FPS but this figure is HIGHLY dependent on the game) entirely in software rendering. I had planned that I would distribute this as a plugin for the N64 emulators. But then I found that it wouldn't be of ANY use whatsoever because:

  • N64 emulators were way too hackish, x86 specific and in some cases, even compiler specific.
  • Very well suited towards HLE plugins.
  • Timings were totally inaccurate. And some games (Stunt Racer is the only one that comes to mind right now) required a bit better timing between different things.
  • People would still need a HLE RDP+RSP plugin (which in turn use game specific hacks and detections) to run some games.

Due to these shortcomings, Reality0x40 (R0x40 for short, 0x40 hex is 64 decimal) was born. Its goal is to become a balanced emulator in terms of speed and compatibility. Its only about 20% done (R4300i, RSP interpreters and the RDP I had before is now adapted to this) and does not work at all :P . Many things still remain to be done including but not limited to, VI, PI, AI, memory subsystem and most importantly, dynamic recompilers for CPU and RSP and even perhaps RDP. This project is currently in "halt" state. It will continue whenever I feel like it :D.

5) S.E.F.E.

S.E.F.E. stands for Standard Emulator Front End. Its a new GUI being developed for all of my current and future emulators. This will replace all of the existing platform specific ports. Its being done using Qt. I will probably write more details about it as I make it but for now lets just say that in Sefe, there are mainly two essential components, emulation core and GUI. Emulation core is the source of video and audio and GUI (which is actually a lot more than that) presents it to the user. Its a lot more modular than that actually. The end result would be that there would be a single code base for the GUI and due to the portability of Qt, Windows, Linux and OSX ports would be available all at the same time. There are much more advantages but they are a pain to write and I am already tired.

So yeah, that is whats been going on for the past many months. On a side note, my Windows XP was recently hit by a virus and thus I have currently switched over to Linux (openSUSE). And to be honest, as much as people know me for being such a huge anti-linux bitch, I actually like it now as it has improved quite considerably and I don't really see a reason to switch back to Windows XP now. The only thing I miss from XP is Textpad. There just isn't any source editor that I feel comfortable with. All other lack one feature of it or another. I am currently using gedit. And thats just "OK".

Anyways, this was an update of the things I am doing and things to come. Hopefully you liked it :).

stay safe,

AamirM