Saturday, August 27, 2011

Not dead....again

No, I am not dead, just have too much work these days to be able to do anything. Anyway, got a week vacation.

Now behold, my destroyer of the worlds muwahahaha...

Runs fullspeed on a i7-2600k now.

Friday, November 12, 2010

Requesting Icons

O hay again :).

So I was compiling stuff and just realized how ugly and uninviting the default executable icon is in Windows. So, requesting if you have, or can make, a good Nintendo64 and/or Sega Saturn icons (vector would be preferred but don't really care), kindly let me know either via the comments or through email.

stay safe,


Tuesday, November 9, 2010

Emulation WIPs

Haven't updated this in a while so lets see.

1) Regen
I haven't touched it for a while now. The plan is to fix some remaining bugs and add a few features to it (like GG and PAR ROM support). There are a few tiny bugs in the VDP that need fixing but nothing really major or show stopper. I already have done some work so that Regen's internal interface is wrapped around SEFE's interface. There are somethings that still need to be done for it to be complete (debugging and some controller related stuff among other things) but it's not a high priority. The current Windows release of Regen, 0.972(D), is very good so any new update won't probably be visible or useful to 99% of the users. On the other hand, the Linux port is not very good. One of the major thing it is lacking is the gamepad support, which I did added, but never got around to releasing. If enough people care (which I doubt), I can make a release available with gamepad support and probably with updated emulation core. Also, I did try to make a x64 build of Regen, which although successful, crashed for whoever tried to use it and since I don't have a 64bit CPU, I can't fix it. So you'll have to just be happy with the 32 bit build for now. =P

2) Turbo Engine
Haven't touched this really much too. Mednafen author ( :| ) and tomaitheous have been conducting many tests and reversing engineering a lot of things at the speed that is comparable to a millions times of that of light so basically have to keep up with them. I will try to put out a release of this before the end of this year but don't count on it =P. Also, as per being against tons of ROM formats, I have removed the ability to use bit shuffled ROM support from TE. These ROMs are incorrectly dumped and I added it because I didn't want to hear people complain. A converter will instead be provided which will "in-place" convert the file so that it can be used in any emulator (like Mednafen). Another thing on the radar is to completely remove the ISO+OGG/MPC/MP3 etc.. support for CD games. That is because a lot of people plainly use a incorrect rip and we, the emulator authors, should be supporting a single CD image format. Future versions would probably only support plain ISO, BIN (CHD anyone?) or similar "lossless" image formats.

3) Satronic
Did some little simple optimizations on the VDP1. As a result, BIOS runs almost fullspeed. Well, about 35-40 FPS to be exact but with automatic frameskipping, its quite usable. Also added some interlace mode support so many games render correctly now. Also fixed a VDP1 bug in distorted sprite and polygon commands (which are basically same btw) where "cracks" would appear between two contiguous ones under certain cases. Speed is still a massive issue though. Although VDP1 performance improved somewhat, Saturn really is a 2D system and so almost all games still run at miserable speeds. The new renderer is still being worked on but it's still a long way to go before it is complete. Also, I would REALLY love any help regarding the SCU DSP. Don't point me to the official leaked Sega manuals. If you have any other technical information (which is not wrong <_<) just shoot me an email (given at my homepage).

As I had written in my previous blog post, I lost a fair amount of code that I had written for R0x40 due to a hard drive corruption. Well, the good news is that this past week, I have rewritten almost ~75% of it. In fact, I added a few things I already that I didn't before (different types of ROM loading). So all in all, I am targeting to boot off some games within this week or next (since it involves days of addictive tracing of target code and fixing stuff). After it is able to boot games, I will move on to the R4300 and RSP recompilers.

So yeah, this was an update on the emulator progress. I think I missed some stuff but meh.

Saturday, July 17, 2010

Good and bad news

So I've got some good news and some bad news.

First, the good news. I did lots of work on R0x40. I implemented MI, RI, VI(partial) and AI (partial, no resampling), RSP interface to RDP, ROM loading and some other stuff (like improving the R4300i interpreter a bit) and hooked them up in the memory subsystem.

Now the bad news. I lost all the work that I did on it due to hard drive failure. I did have off-site backups of the things but it was very old for R0x40 so all the work is lost. And yes, I did try recovering them with Photorec but to no avail. I have tried everything already to recover them but have failed so far . That work is probably lost forever :'(.

And now I am a little demotivated due to all this. So I think I am gonna take a little break from emulation stuff for a while.

On another note, I am back to Windows XP now.

stay safe and make frequent backups,


Saturday, June 12, 2010

Not dead yet :P

Sorry for lack of more new posts. I got some contract job to build a database driven website in ASP.NET and I have been busy with that lately.

On a side note, I picked up Reality0x40 again before this. Did implemented some empty memory handlers for now for different interfaces on N64 (audio, RAM, peripheral, serial etc..). Now need to implement each handler and it should then be ready to run some games (although slowly). Next would be the optimizing dynamic recompilers for R4300i and RSP which I dread since I have zero experience with those. But should be fun. On thing that sucks is to code the x86 emitter that can generate almost all the instruction set. Are there any public domain/BSD or similary licensed ones available already? Since that will reduce the amount of time quite a bit for me.

stay safe,


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,


Wednesday, May 26, 2010

Current works


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,