We’ll there’s been a huge while since I last post on my blog, mainly because I’ve been realy busy in real time ™ and because… well, blogging without subject simply sucks. I now got some project that I’ve been working on and some things I’ll be doing soon.
It’s been while I didn’t work on this, but I’ve started a NES emulator project. Its coded using plain old C and I’ve been trying to reproduce system component independant by going for multithreading and synchronization. I know it is overkill for such an old system as a modern CPU is by far able to deal with the job of all the chips linearly, but I wanted it to be clean. Current status is : I’ve codded most opcodes and there some basic graphic chip logic going on. However, I’d like to do some more neat code, so I’ll surely recode using C++, Java or .Net. Most of the stuff have been planned to be independant from the platform it runs on. By example, the graphic chip will be running on it’s own thread, but it wont have anything to do with on-screen drawing. The emulator thread will fetch the data from each classes at each frame and update them with the latest input. As I say, it’s not the fastest way to do NES emulation, but it’s the neatest way to do it, and the best way to learn NES internal working.
Other ongoing stuff… I’ve been running Windows 7 on my Thinkpad for a week and I’ll be posting another time about it. For now everything is going fine, except from some minor quirks, but I’d say its by far one of the best Windows version I’ve used. It is cleary what Vista should have been. More update to come.
I’ll be finishing home improvement in the basement in the next week or so. After this I’ll be setuping my small work room, were I’ll be storing tools and doing computer hardware and eletronic stuff. I plan to build a concreat topped workbench. I may then do soldering without fearing to burn something. My first task will be to finalise my server that have been waiting in my office for months. Two 500gig hard drives in RAID 1 shall be more than enough for now. Or I could go with a third 500 and have them RAID-5. Anyway, I’ll be going with Linux software RAID, and hope I’ll be able to do inline conversion and upgrade the array from time to time.
So, things to do: finish home improvements, setup work area, finish the server, recode my NES emulator, buy a Samsung SPF-85V and hack it (adding a touch interface to it would be cool) *More to come about the digital picture frame.
juin 20th, 2009
While under an oldies rage, I fell on the dopefish website. I always been a great fan of Commander Keen and I think there should be new games based on the franchise. Anyway, the Dopefish have always been the perfect image for the perfect dumb video game enemy. I’ve been sad there was no high definition image of it. So I made one! Actualy, this is a SVG conversion of the classic bitmap using Inkscape capacity to convert bitmap to vectorial drawing. This is a nice function. Click here to download it Dopefish
août 6th, 2008
Its been a while I’ve worked extensively on Surreal. I’ve got some day off lately so I decided to get my hands dirty a bit and began to code some stuff. I’ve decided to take a different look on the way the VM problem should be handled. Up to now I only had seen Unreal packages as data holder which were read when needed using some fancy serializing technique. When looking from a functional point of view, like having to execute code without loading anything, packages are in fact serialized objects. So, having to set up the game using dynamic bytecode interpretation, I needed a host. Rather than having to code my own VM (which would be frankly a PITA!) I decided to code it using .Net. I’ve used extensively C++ a few years ago but now I’m more of a C# developper. I think that implementing a Unrealscript JIT Compiler for the .Net CLR would be much more sexy than hacking my way through a custom VM. So, that’s it, Surreal will be realized using the future Unrealscript JIT compiler. This is the biggest part of the game, creating the parser.
Unrealscript is a two pass compiled language. I’ve never had to write multi-pass parser before, yet it seems simple. I’m not sure if there’s tool existing to generate this kind of parser though. Looks like I’ll have to do it by hand!
Ho, and I guess you’re wondering about performance? Well, guest what? Done right this should be faster than the original Unreal engine implementation. I’m still not sure if I’ll be trying to interpret the bytecode into the packages or if I simply read the packages source (which are included most of the time except for native ones) and compile into .Net executable code. The later seems to be the easiest yet most performant. Also, I’d like to point out that it’s not because it will be coded using .Net that it will not run under Linux. Mono is very capable. All it will need is native code for each platform. I’ll try to do it for both XNA and OpenGL. It should run on almost everything supported by Mono. A XBox 360 port could even be possible. But that my friends, is still very far from reach.
Good night everyone, and sleep well (I’ll do!)
juillet 23rd, 2008