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

12 comments:

Unknown said...

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.

welcome to the dark side. ;)

Unknown said...

Good luck with your new projects! It's amazing how many emulators you're working all at once.

AamirM said...

Actually, I am not working on them at once. I only work on one at a time and then pick up on another one when I get bored (probably because I get stuck on something). :)

Joey said...

many emulators indeed. i loves all your released works.

i requesting user shortcut customization option.

for example:
fast rendering shortcut in regen was alt-F, which i usualy used to accessing File menu ...,

but that mainly because i was not mouse fan though, i prefer both hands on keyboard, whenever possible.

Unknown said...

Have you tried Kate? I thought it was pretty similar to Notepad++ which I use in Windows.

Anonymous said...

@AamirM,

Thats funny since thats exactly how I work :P

Other than that, nice to see you finally made a blog.

AamirM said...

@Daniel
Yeah, I've tried Kate. Its was lacking some features I think and was a little slow. (Btw, I don't use Notepad++ only Textpad on Windows).

@Brad, snkcube
Thanks. :)

@Joseph
You can customize the menu shortcuts. All you need is a resource editor, or if you can, compile a localization DLL with your preferred shortcuts.

Bernard Lindell Jr said...

Let me know if you need further CD/Super CD testing for TurboEngine. I basically have them all now. I'd be glad to help. Nice work on all ya got going on!

Luke said...

Please dont give up on the n64 emulator. I am slightly disgusted by the current n64 emulation scene. The future needs a 100% audio/pixel/visual representation of what an n64 was.

AamirM said...

I haven't given up on it. Its just on hold these days and I have been a bit lazy. :P

Anonymous said...

@AamirM

please contact me at Naygath(at)hotmail.com

i have c++ source code for layer disabler, cpu debugger, sound debugger, frame step etc. gens compatible features which i want to give to you.

if you have no intrest to put them on regen let me know where to get the source and i will implement them to the code.

with these features i have, you could make regen the best genesis emulator ever (if you dont want to do it then let me do it i have time and motivation). :)

best regards from Naygath

mustangemu said...

hi AamirM,
i was just wondering which emu you where working on at the moment. Could we see some screenshots or progress reports? a release would be cool, but screen shots would make me happpppy too.@_@
goodluck my friend.<_>