<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-21803270</id><updated>2011-12-14T04:57:53.469+01:00</updated><category term='PS3'/><category term='Java'/><category term='JEmu2'/><category term='BDJ'/><title type='text'>JEmu2's Development blog</title><subtitle type='html'>The development process of JEmu2, a multi games system emulator for java (http://www.gagaplay.com).</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jemu2.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jemu2.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Erik Duijs</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>22</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-21803270.post-3838469184876266712</id><published>2008-09-15T12:22:00.003+02:00</published><updated>2008-09-15T12:44:42.306+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='BDJ'/><category scheme='http://www.blogger.com/atom/ns#' term='JEmu2'/><category scheme='http://www.blogger.com/atom/ns#' term='PS3'/><title type='text'>BDJ on PS3 impressions</title><content type='html'>JEmu2 on BDJ is now largely working on PS3.&lt;br /&gt;It was really quite a hassle to get things going, but to be honest I'm not really sure it was worth it after all.&lt;br /&gt;&lt;br /&gt;The problems with JEmu2 on PS3 are this:&lt;br /&gt;* No sound&lt;br /&gt;* Bad performance&lt;br /&gt;* No VSync&lt;br /&gt;* 60fps are drawn in JEmu2 but less are actually rendered&lt;br /&gt;* Only one directional button gets registered at a time&lt;br /&gt;* Only 2 action buttons available on PS3 controller&lt;br /&gt;&lt;br /&gt;The sound problem might be solvable, but the rest is not as far as I can see; they seem to be limitations of the BDJ implementation on PS3. And from what I've read, the BDJ implementation on PS3 is actually the fastest and most complete of all Bluray players, so things don't look good.&lt;br /&gt;&lt;br /&gt;The controller problems seem to be the worst to seriously consider BDJ as a gaming platform. "Only one directional button at a time" basically means that it's impossible to do diagonal movement, for example by pressing UP and RIGHT at the same time. This means most action games are out of the window.&lt;br /&gt;The PS3 controller just acts as a Bluray remote here. So the analog sticks and triggers are not registered.&lt;br /&gt;&lt;br /&gt;The JVM performance problem follows after the controller problem. The JVM seems to be an old fashioned interpreter, which is only helped by the PS3's CELL performance. A very wild guess would be that performance is comparable to a Sun HotSpot JVM on a 200-300MHz pentium (at the very most, but probably even less!).&lt;br /&gt;The result is that JEmu2 struggles with many games. Don't even think about doing multi-CPU 16 bit games...&lt;br /&gt;&lt;br /&gt;No VSync, and not having the ability to actually display 60fps don't help things either.&lt;br /&gt;&lt;br /&gt;All is not lost though. BDJ might be a bad platform for emulation, it might still have some use for many game genres.&lt;br /&gt;Considering all the above, it will be well suited for things like Chess and other board games, card games, some adventure games (point-and-click and such), any game that doesn't require fast animation or moving diagonally.&lt;br /&gt;On the plus side, blitting images seems quite fast. Scaling small images to 1080p comes with no perceivable performance cost.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21803270-3838469184876266712?l=jemu2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jemu2.blogspot.com/feeds/3838469184876266712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21803270&amp;postID=3838469184876266712&amp;isPopup=true' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/3838469184876266712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/3838469184876266712'/><link rel='alternate' type='text/html' href='http://jemu2.blogspot.com/2008/09/bdj-on-ps3-impressions.html' title='BDJ on PS3 impressions'/><author><name>Erik Duijs</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21803270.post-4634752177738628020</id><published>2008-08-31T15:54:00.002+02:00</published><updated>2008-08-31T16:07:23.075+02:00</updated><title type='text'>JEmu2 coming to PS3?</title><content type='html'>I've done a few tests with BDJ (Java for Bluray disks) and managed to make a start with bringing JEmu2 over to the PS3.&lt;br /&gt;&lt;br /&gt;My first test was running JEmu2's Space Invaders emulator, and to my surprise it actually ran quite smoothly! &lt;br /&gt;It took some effort to get things going on PS3, but I think it's quite a good start and encouraging to get the complete JEmu2 to PS3.&lt;br /&gt;&lt;br /&gt;I guess I will call it 'BD-JEmu2', and it will involve copying it to a memory stick, inserting the stick in the PS3, and play the stick from the PS3's video menu (this is because the stick with JEmu2 will have the layout of a Bluray disk).&lt;br /&gt;&lt;br /&gt;Stay tuned...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21803270-4634752177738628020?l=jemu2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jemu2.blogspot.com/feeds/4634752177738628020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21803270&amp;postID=4634752177738628020&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/4634752177738628020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/4634752177738628020'/><link rel='alternate' type='text/html' href='http://jemu2.blogspot.com/2008/08/jemu2-coming-to-ps3.html' title='JEmu2 coming to PS3?'/><author><name>Erik Duijs</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21803270.post-116821489183585173</id><published>2007-01-08T00:29:00.000+01:00</published><updated>2007-02-04T11:20:17.976+01:00</updated><title type='text'>Upcoming goodness</title><content type='html'>&lt;a href="http://photos1.blogger.com/x/blogger/6036/2208/1600/450124/sc0.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/x/blogger/6036/2208/320/746581/sc0.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;I think I'll soon be releasing a new version of JEmu2 now that I finally found the (incredibly silly) bug which prevented a number of MSX2 disk games to boot, which include Konami's Snatcher and SD Snatcher (both early Hideo Kojima games of Metal Gear Solid fame). &lt;br /&gt;Both these games are feature more or less the same fantastic cyberpunk story in a 'Blade Runner-esque' setting but are both completely different games: Snatcher is a menu driven adventure game, SD Snatcher is an action RPG game. The rich story really has that Hideo Kojima trademark; thought provoking, intelligent and emotional. People who have enjoyed the Metal Gear games (especially the later Metal Gear Solid games) will know what I'm talking about.&lt;br /&gt;&lt;br /&gt;Snatcher has been released on a number of platforms, the most well known (outside of japan) is probably the Sega CD version as that version was the only version to be released outside of japan. To be honest, that version was really much better as the MSX2 version had a few problems: Due to a rushed release, it was actually incomplete; Act 3 was completely missing, making the ending much darker and ambiguous. Because of the rushed release, the MSX2 version was also suffering from long loading times, reportedly partly because of inefficient programming of image decompressing.&lt;br /&gt;On the other hand, the Sega CD version was slightly toned down on violence and some nudity was removed. The MSX2 version can thus be seen as a raw 'uncut' version, which is still worth to be experienced.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/x/blogger/6036/2208/1600/998849/sc1.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/x/blogger/6036/2208/320/642457/sc1.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;SD Snatcher on the other hand more suited the MSX2 and was actually never published on any other platform. It's a unique action RPG game which has some nice surprises in the plot for people who are familiar with Snatcher. Really a forgotten gem! SD stands for 'Super Deformed', which refers to a japanese drawing style where people have strange child-like proportions featuring huge heads and small bodies (see screenshot).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/x/blogger/6036/2208/1600/826334/sc4.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/x/blogger/6036/2208/320/417695/sc4.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Also a cool game in the upcoming release is Aleste 2, a cool shoot-em up which was also unique to the MSX2 system. JEmu2's MSX emulation shows some minor bugs in this game, fortunately only visible in the introduction sequence. The game itself runs perfect.&lt;br /&gt;&lt;br /&gt;Finally, JEmu2 will feature ZX Spectrum emulation in the next release. It's as of yet a fairly simple Spectrum emulator only emulating the 48k Spectrum, but able to run many games pretty well. It does feature emulation of the sound speaker (which sounds quite horrible, to be honest) and Kempston Joystick interface.&lt;br /&gt;&lt;a href="http://photos1.blogger.com/x/blogger/6036/2208/1600/466714/sc5.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/x/blogger/6036/2208/320/133725/sc5.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;The spectrum was a popular home computer from the eighties, which made up its audio visiual limitations (compared to it's more expensive main contender, the C64) with performance: The spectrum was often able to run games at better speed, especially 3D games. Although many spectrum games don't look like much (especially nowadays), there are still many great and very playable games produced for this little machine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21803270-116821489183585173?l=jemu2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jemu2.blogspot.com/feeds/116821489183585173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21803270&amp;postID=116821489183585173&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/116821489183585173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/116821489183585173'/><link rel='alternate' type='text/html' href='http://jemu2.blogspot.com/2007/01/upcoming-goodness.html' title='Upcoming goodness'/><author><name>Erik Duijs</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21803270.post-116782239202285138</id><published>2007-01-03T10:30:00.000+01:00</published><updated>2007-01-03T12:06:32.080+01:00</updated><title type='text'>Happy 2007</title><content type='html'>First of all, happy new year!&lt;br /&gt;&lt;br /&gt;Looking back, 2006 has been a good year for GaGaPlay.com with many new games and exciting new hardware emulation in JEmu2:&lt;br /&gt;* For the first time in java, Sega X-Board and Y-Board emulation (the most complex hardware emulated in JEmu2 yet, with up to 4 CPU's, math chips, zooming &amp; rotating sprites, FM sound, 16 channel PCM etc).&lt;br /&gt;* The introduction of VirtuArcade, the first ever true virtual arcade emulating 20 arcades at once in a hardware accellerated 3D environment.&lt;br /&gt;* The introduction of pretty accurate emulation of the Sega Master System console.&lt;br /&gt;* The introduction of MSX1/2 emulation with support for Konami SCC and Pana FM-PAC sound add-ons. The SCC emulation even improves over the original, creating a nice stereo output.&lt;br /&gt;* A new homebrew game 'Hyper Blazer', a fast 3D action game. Think of the game as 'Trail Blazer' on steroids, adding many gameplay features to the original.&lt;br /&gt;&lt;br /&gt;Special mention should go to Stephan Dittrich, who donated his Motorola MC68000 CPU emulator for use with JEmu2. This CPU is used in systems such as X-Board (After Burner), Y-Board (G-Loc, Power Driver etc), CPS1 (Street Fighter 2) and Snow Bros. Nick &amp; Tom.&lt;br /&gt;Check out &lt;a href="http://www.workingdesign.de"&gt;his website&lt;/a&gt; featuring his project jEnesis, a great emulator of the Sega Genesis with 32X add-on. For the first time in java, running at good speed.&lt;br /&gt;&lt;br /&gt;For 2007, the following is in the pipeline:&lt;br /&gt;* Atari ST emulation. I still got a long way to go with this; it's now booting about halfway to TOS 1.02.&lt;br /&gt;* ZX Spectrum emulation. I got a 48k speccy driver working okay, with support of it's 'beeper' sound output and Kempston Joystick. Okay, it's been done numerous times before, but it was a nice little system in it's days with many great games made for it.&lt;br /&gt;* Disk support for MSX. I had this working great before I lost my latest sources. I got it mostly working again, but am running into a problem which prevents it from running the great 'SD Snatcher' (a fantastic 3-Disk cyberpunk action RPG made by Hideo Kojima of Metal Gear Solid fame). I remember having this problem before, but don't remember how I fixed it before losing sources...&lt;br /&gt;* More homebrew games? Hyper Blazer ranks up high in the top 10 of most popular games on GaGaPlay.com...&lt;br /&gt;* .... who knows? My plans tend to change a lot :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21803270-116782239202285138?l=jemu2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jemu2.blogspot.com/feeds/116782239202285138/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21803270&amp;postID=116782239202285138&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/116782239202285138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/116782239202285138'/><link rel='alternate' type='text/html' href='http://jemu2.blogspot.com/2007/01/happy-2007.html' title='Happy 2007'/><author><name>Erik Duijs</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21803270.post-115676818049031641</id><published>2006-08-28T14:02:00.000+02:00</published><updated>2007-02-03T15:28:30.423+01:00</updated><title type='text'>An old MSX classic</title><content type='html'>I recently did a bit of work on the MSX part of JEmu2. Not even MSX2, but 'good-ole' MSX1. One of the reasons was that a personal favourite of mine didn't work correctly on it yet: The sadly overlooked 'Iriegas' (a.k.a. 'Illegus'), made by the japanese ASCII corp. (the main creators of the MSX standard).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/6036/2208/1600/sc6.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/6036/2208/320/sc6.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It plays much like an updated version of &lt;a href="http://en.wikipedia.org/wiki/3D_Monster_Maze"&gt;the ZX81 classic 3D Monster Maze&lt;/a&gt;, but in full colour, much smoother game play and animation, sound, traps you have to jump over, atmospherically changing light conditions, I/R goggles, gold, and this time you can shoot back at your enemies!&lt;br /&gt;&lt;br /&gt;Not exactly Doom4 or Half-Life 3, but you can still regard this as a pretty good, early First Person Shooter.&lt;br /&gt;&lt;br /&gt;I have some fond memories playing this game, which is at least as scary as the mentioned 3D Moster Maze. Especially the day/night cycles add a sense of urge to finish a level before night has fallen completely. &lt;br /&gt;&lt;br /&gt;If you're lucky, you have found the infra red goggles before that happens, but they tend to deplete when you need them most which leaves you helplessly wandering in the dark, hoping you'll find new goggles or a brand new day to arrive before the baddies find you, or before you fall into a trap.&lt;br /&gt;Even the sound, which is merely a pulsating drone indicating the distance to a baddy, adds a lot to the atmosphere.&lt;br /&gt;&lt;br /&gt;The things that were missing from JEmu2 to allow this game to work correctly were proper SCREEN 3 support and support for zoomed sprites.&lt;br /&gt;&lt;br /&gt;The use of SCREEN 3 (a low resolution graphics mode) is probably one of the reasons this full 3D game moves so fluidly on an old machine like the MSX.&lt;br /&gt;&lt;br /&gt;I will add this game to the next version of JEmu2, and I recommend anyone to give this one a go!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21803270-115676818049031641?l=jemu2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jemu2.blogspot.com/feeds/115676818049031641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21803270&amp;postID=115676818049031641&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/115676818049031641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/115676818049031641'/><link rel='alternate' type='text/html' href='http://jemu2.blogspot.com/2006/08/old-msx-classic.html' title='An old MSX classic'/><author><name>Erik Duijs</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21803270.post-115626102040378190</id><published>2006-08-22T17:21:00.000+02:00</published><updated>2006-08-22T19:40:33.170+02:00</updated><title type='text'>Announcing VirtuArcade</title><content type='html'>I'm currently working on the next step in online emulation: VirtuArcade!&lt;br /&gt;VirtuArcade is, as the name suggests, a totally 3D representation of a 'real' virtual arcade with multiple machines, all running simultaneously in real-time. You can simply walk around to look what games the arcade has running, walk towards the game you feel like doing, insert a 'virtual' coin and start playing.&lt;br /&gt;&lt;br /&gt;The idea was also to make things as scalable as possible, so running an arcade with many games at once should be doable on today's machines.&lt;br /&gt;&lt;br /&gt;To pull this off, a number of optimizations, tricks and clever cheats were needed.&lt;br /&gt;&lt;br /&gt;I have an early prototype running locally now, which already works nicely but the graphics and models (obviously) need work, as you can see below.&lt;br /&gt;&lt;br /&gt;Screenshot of the prototype displaying 6 fully working arcades at once at full speed:&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/6036/2208/1600/sc73.0.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/6036/2208/400/sc73.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;VirtuArcade is built on JEmu2, so all hardware currently emulated by JEmu2 work in VirtuArcade too and they will be simultaneously updated.&lt;br /&gt;You can regard VirtuArcade as a new, enhanced 3D front-end for JEmu2.&lt;br /&gt;&lt;br /&gt;Stay tuned!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21803270-115626102040378190?l=jemu2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jemu2.blogspot.com/feeds/115626102040378190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21803270&amp;postID=115626102040378190&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/115626102040378190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/115626102040378190'/><link rel='alternate' type='text/html' href='http://jemu2.blogspot.com/2006/08/announcing-virtuarcade.html' title='Announcing VirtuArcade'/><author><name>Erik Duijs</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21803270.post-115434771737822507</id><published>2006-07-31T14:08:00.000+02:00</published><updated>2006-07-31T14:08:40.043+02:00</updated><title type='text'>Update</title><content type='html'>Progress is continueing in JEmu2. For the next version, the following changes are done:&lt;br /&gt;1) Much reduced memory footprint in all games. This might lead to more games being able to make it as applets (which have more memory restrictions).&lt;br /&gt;2) Reduced and sometimes even eliminated Sega Y-Board graphics glitchiness. This is kind of a hack because I don't know exactly how the hw should behave with regards to interrupts. For the time being, I overclocked the 68000 CPU's for some games and fiddled with IRQ2 timing which seemed to solve most problems. Because idle loop elimination was already implemented, this didn't cause a noticable performance penalty.&lt;br /&gt;3) Added support for Strike Fighter&lt;br /&gt;4) Added 3 new rendering methods: Plain, Plain with Scanlines, Plain with Scale2x. These rendering methods don't apply any filtering like the current 'default' rendering methods.&lt;br /&gt;&lt;br /&gt;I'm also considering to change the local caching of the games. Currently, I'm relying on Java Web Start to do this, but this leads to large downloads the first time you start JEmu2 (all games are downloaded then). Especially with 16bit games (which are generally larger than 8bit games), this is becoming an increasing problem.&lt;br /&gt;&lt;br /&gt;A new caching scheme is being implemented where only one game is downloaded from the server if you start that game for the first time, instead of all games at once.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21803270-115434771737822507?l=jemu2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jemu2.blogspot.com/feeds/115434771737822507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21803270&amp;postID=115434771737822507&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/115434771737822507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/115434771737822507'/><link rel='alternate' type='text/html' href='http://jemu2.blogspot.com/2006/07/update.html' title='Update'/><author><name>Erik Duijs</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21803270.post-115348343500767163</id><published>2006-07-21T13:56:00.000+02:00</published><updated>2006-07-21T14:03:55.020+02:00</updated><title type='text'>Y-Board Sprite Rotation</title><content type='html'>&lt;a href="http://photos1.blogger.com/blogger/6036/2208/1600/sc2.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/6036/2208/320/sc2.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;A picture says more than a 1000 words...&lt;br /&gt;Sprite rotation in the Y-Board driver now fully works, making the driver now complete. The above screenshot is from the game G-Loc, which is now fully playable.&lt;br /&gt;There some general glitchyness in the games (some more than others), though. This also happens in MAME and FinalBurn. As MAME suggests, this might have something to do with very sensitive IRQ timing. So my final step will be to tweak the IRQ timing (maybe even separately for each game) to minimize the glitches.&lt;br /&gt;&lt;br /&gt;In any case, expect a release this weekend!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21803270-115348343500767163?l=jemu2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jemu2.blogspot.com/feeds/115348343500767163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21803270&amp;postID=115348343500767163&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/115348343500767163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/115348343500767163'/><link rel='alternate' type='text/html' href='http://jemu2.blogspot.com/2006/07/y-board-sprite-rotation.html' title='Y-Board Sprite Rotation'/><author><name>Erik Duijs</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21803270.post-115325870614990087</id><published>2006-07-18T23:20:00.000+02:00</published><updated>2006-07-18T23:58:32.116+02:00</updated><title type='text'>More Y-Board progress!</title><content type='html'>&lt;a href="http://photos1.blogger.com/blogger/6036/2208/1600/sc38.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/6036/2208/320/sc38.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/6036/2208/1600/sc40.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/6036/2208/320/sc40.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;I've finally figured out the sprite colours and the controls, and got both Galaxy Force II and Power Drift fully playable, and with sound.&lt;br /&gt;Before I'll upload this new version, I intend to work on the following:&lt;br /&gt;* Add more game drivers for the Y-Board, such as G-Loc, Rail Chase and Strike Fighter.&lt;br /&gt;* Do some optimizations, such as idle loop removal.&lt;br /&gt;* Maybe implement the Y-Board's screen tilt feature.&lt;br /&gt;* Fix the background colors.&lt;br /&gt;&lt;br /&gt;Currently the supported games run easily at full speed on my new laptop using java 1.6 client VM, but not on my not-so-new desktop PC, where the games currently run at about 45 fps on the java 1.4.2 client VM. Hopefully I can get it to run full speed on my desktop too, but the Y-Board driver is quite a resource hungry one (more so than the X-Board driver).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21803270-115325870614990087?l=jemu2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jemu2.blogspot.com/feeds/115325870614990087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21803270&amp;postID=115325870614990087&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/115325870614990087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/115325870614990087'/><link rel='alternate' type='text/html' href='http://jemu2.blogspot.com/2006/07/more-y-board-progress.html' title='More Y-Board progress!'/><author><name>Erik Duijs</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21803270.post-115307709191825074</id><published>2006-07-16T21:01:00.000+02:00</published><updated>2006-07-16T21:25:10.683+02:00</updated><title type='text'>Sega Y-Board progress</title><content type='html'>&lt;a href="http://photos1.blogger.com/blogger/6036/2208/1600/sc32.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/6036/2208/320/sc32.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/6036/2208/1600/sc37.1.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/6036/2208/320/sc37.1.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I've made some good progress with emulation of the Sega Y-Board hardware. It's quite powerful hardware to emulate, featuring 2 zooming sprite layers, custom math hardware, three M68000 processors plus one Z80, a YM2151 FM synthesizer chip and a 16 channel PCM chip.&lt;br /&gt;All hardware is currently emulated except the controls, but there's still some work to do before it's ready to be released:&lt;br /&gt;1) Figure out the sprite colours&lt;br /&gt;2) Hook up controls&lt;br /&gt;3) Optimizations&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21803270-115307709191825074?l=jemu2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jemu2.blogspot.com/feeds/115307709191825074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21803270&amp;postID=115307709191825074&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/115307709191825074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/115307709191825074'/><link rel='alternate' type='text/html' href='http://jemu2.blogspot.com/2006/07/sega-y-board-progress.html' title='Sega Y-Board progress'/><author><name>Erik Duijs</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21803270.post-115228486358175908</id><published>2006-07-07T17:07:00.000+02:00</published><updated>2006-07-07T17:13:22.293+02:00</updated><title type='text'>Adding sound</title><content type='html'>I've been busy improving the Sega X-Board driver, and the most important improvement in the next version will be sound support in After Burner II!&lt;br /&gt;&lt;br /&gt;Both the YM2151 and SegaPCM emulators have now simply been ported from existing and open C sources to java (preventing to reinvent the wheel).&lt;br /&gt;Also the general sound system needed a small change, because it didn't support stereo sound yet.&lt;br /&gt;&lt;br /&gt;Both sound chip emulators have been hooked up in the X-Board driver, and the Z80 emulation has been enabled. Thankfully, the performance impact is smaller than I expected and with everything enabled, I can still easily run it at full speed with great sound.&lt;br /&gt;&lt;br /&gt;There's still some wrinkles to iron out, though. Most importantly, the music tempo is too low for some reason. Could be a bug in the interrupt timing or maybe there's a bug in the YM2151 timer function, not sure yet...&lt;br /&gt;Also I still need to implement and test the option to disable sound in the driver (in case things run too slow).&lt;br /&gt;&lt;br /&gt;Another (not sound related) thing I noticed is that maybe the 68K emulator is not at fault regarding the wrong refuelling sequences I mentioned in my last blog. For some reason, this behaviour seems to have improved in my latest build and I didn't change anything in the 68K emulation at all (as I didn't find any possible bug in it yet). I'm not sure I know what it was exactly that improved this behaviour.&lt;br /&gt;&lt;br /&gt;Anyway, I hope to have ironed out the last issues regarding sound emulation soon so that I can release a new JEmu2 update this weekend.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21803270-115228486358175908?l=jemu2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jemu2.blogspot.com/feeds/115228486358175908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21803270&amp;postID=115228486358175908&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/115228486358175908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/115228486358175908'/><link rel='alternate' type='text/html' href='http://jemu2.blogspot.com/2006/07/adding-sound.html' title='Adding sound'/><author><name>Erik Duijs</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21803270.post-115166746746880912</id><published>2006-06-30T13:23:00.000+02:00</published><updated>2006-06-30T13:37:47.483+02:00</updated><title type='text'>JEmu2 does Sega X-Board!</title><content type='html'>The next release of JEmu2 will include a brand new driver for the Sega X-Board arcade system. The 1st supported X-Board game will be the famous After Burner 2!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/6036/2208/1600/sc25.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/6036/2208/320/sc25.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is the first JEmu2 driver to emulate 2 M68000 CPU's plus a Z80, and zooming sprites hardware.&lt;br /&gt;Although After Burner 2 is fully playable, there are still some minor issues in the driver:&lt;br /&gt;- No sound yet (working on it)&lt;br /&gt;- Not all attributes of the tile layers are emulated correctly, which results in some wrong graphics in attract mode.&lt;br /&gt;- There seems to be a little bug in the M68000 core which leads to some strange behaviour during the refeulling sequence (doesn't affect gameplay though).&lt;br /&gt;- The road generator is not really emulated yet, so in the landing sequences, you will land your fighter in the dirt instead of a proper landing strip :-)&lt;br /&gt;- The controls in the real arcade are analogue, which I mapped to the mouse. It works pretty well, but maybe I'll need to tune it a bit to make it feel better.&lt;br /&gt;&lt;br /&gt;It is not optimized at all yet, so you will need a fairly new system to run it in full speed. The screenshot was taken on my laptop where it reaches ~100FPS average, but there it is running on Sun's 1.6 server VM, which is a very fast VM but still in Beta.&lt;br /&gt;&lt;br /&gt;I plan to upload the new version tonight, or somewhere this weekend!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21803270-115166746746880912?l=jemu2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jemu2.blogspot.com/feeds/115166746746880912/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21803270&amp;postID=115166746746880912&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/115166746746880912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/115166746746880912'/><link rel='alternate' type='text/html' href='http://jemu2.blogspot.com/2006/06/jemu2-does-sega-x-board.html' title='JEmu2 does Sega X-Board!'/><author><name>Erik Duijs</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21803270.post-115063202378535678</id><published>2006-06-18T14:00:00.000+02:00</published><updated>2006-06-18T14:00:23.823+02:00</updated><title type='text'>Progress</title><content type='html'>It's been a while since my last post, but there has been some progress. First of all, the next version will have a brand new M68000 emulator, written by my friend Stephan Dittrich of jEnesis fame. Check out his extremely cool jEnesis project, a Sega Genesis/32X emulator, at &lt;a href="http://www.workingdesign.de/projects/index.php"&gt;the homepage&lt;/a&gt;. It is the very first java based emulator capable of emulating the Sega 32X, which is a tough one to emulate both correctly and at good speed.&lt;br /&gt;&lt;br /&gt;His M68000 emulator seems to be very compatible and quite fast as well, and it fixed the remaining problems in Street Fighter 2 (random lock-ups) and some minor glitches in Snow Bros.&lt;br /&gt;&lt;br /&gt;One interesting thing to note in his M68000 emulator is that he didn't use the traditional switch/case mechanism for opcode despatching, but used an array of Opcode interfaces (which act sort of like function pointers to all opcodes).&lt;br /&gt;&lt;br /&gt;This is a more clean approach but previously this used to be slower than switch/case, so it wasn't used much in java based CPU cores.&lt;br /&gt;&lt;br /&gt;Apparently, things have changed for the better in the JVM department and the Opcode interface implementation is now actually faster than the switch-case approach!&lt;br /&gt;He mentioned that especially in his SH2 core for his 32X emulator, this made the whole thing run 10% faster than with using switch-case, which is remarkable.&lt;br /&gt;&lt;br /&gt;OTOH, this is on 1.4 and 1.5 JRE's. On the upcoming 1.6 version of Sun's JVM, there are some switch-case performance improvements implemented.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21803270-115063202378535678?l=jemu2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jemu2.blogspot.com/feeds/115063202378535678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21803270&amp;postID=115063202378535678&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/115063202378535678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/115063202378535678'/><link rel='alternate' type='text/html' href='http://jemu2.blogspot.com/2006/06/progress.html' title='Progress'/><author><name>Erik Duijs</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21803270.post-114310859500714554</id><published>2006-03-23T11:09:00.000+01:00</published><updated>2006-03-23T11:09:55.036+01:00</updated><title type='text'>Sega Master System emulation improving</title><content type='html'>I've rewritten parts of the video emulation to render per scanline instead rendering once per frame.&lt;br /&gt;This has improved compatibility and accuracy for quite a bit, because effects done by changing video registers in line interrupt handlers are now emulated correctly.&lt;br /&gt;&lt;br /&gt;Also, performance has been improved dramatically. I can now easily run 4 or 5 SMS emulators at once at full speed on my not-so-new Athlon 1800XP machine, which I think is not bad for a java based emulator. &lt;br /&gt;There's even room for more optimizations (caching of decoded video tiles might help for example), but I think I'm satisfied.&lt;br /&gt;Performance problems are always temporary problems so I'm not too obsessed with it (who wants to run multiple SMS emulators at once anyway?), but it's still a nice side effect of the recent changes.&lt;br /&gt;&lt;br /&gt;Last but not least, I've made some utilities which makes it very easy for me to add support for online high scores in more games. It now takes just a few minutes per game, tops.&lt;br /&gt;The parameters of the online high scores per game are also not hardcoded in the source code anymore, but are now loaded from config files.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21803270-114310859500714554?l=jemu2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jemu2.blogspot.com/feeds/114310859500714554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21803270&amp;postID=114310859500714554&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/114310859500714554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/114310859500714554'/><link rel='alternate' type='text/html' href='http://jemu2.blogspot.com/2006/03/sega-master-system-emulation-improving.html' title='Sega Master System emulation improving'/><author><name>Erik Duijs</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21803270.post-114262576648225888</id><published>2006-03-17T21:02:00.000+01:00</published><updated>2006-03-17T21:02:46.513+01:00</updated><title type='text'>JEmu2 does Sega Master System!</title><content type='html'>JEmu2 now supports a classic console: The Sega Master System.&lt;br /&gt;It currently fully supports sound, and even has support for saving your scores on the internet (currently implemented in 7 games, for example Sonic The Hedgehog).&lt;br /&gt;&lt;br /&gt;There is still some room for improvement though. For example the renderer is a frame based renderer, which means that video emulation is only done once per frame.&lt;br /&gt;In some games though, this isn't enough because they use some tricks which requires the screen to be updated more often. &lt;br /&gt;&lt;br /&gt;For example, the palette may be changed a few times during video updating so that there can be more colours displayed at once than the official hardware specifications allow for.&lt;br /&gt;Thus, such games are not emulated perfectly yet.&lt;br /&gt;&lt;br /&gt;The same goes for sound updating, which is also only done once per frame, so digital sound effects do not work yet.&lt;br /&gt;&lt;br /&gt;I did however keep track of the horizontal scroll register each line, so for example the road in racing games are still displayed properly.&lt;br /&gt;&lt;br /&gt;The Sega Master System is a fun system to emulate: It's not too difficult compared to get some games to work, but it's still a good challenge to make it accurate and compatible.&lt;br /&gt;&lt;br /&gt;Check it out at &lt;a href="http://www.gagaplay.com/jemu2"&gt; the official JEmu2 homepage&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21803270-114262576648225888?l=jemu2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jemu2.blogspot.com/feeds/114262576648225888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21803270&amp;postID=114262576648225888&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/114262576648225888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/114262576648225888'/><link rel='alternate' type='text/html' href='http://jemu2.blogspot.com/2006/03/jemu2-does-sega-master-system.html' title='JEmu2 does Sega Master System!'/><author><name>Erik Duijs</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21803270.post-114139535784206220</id><published>2006-03-03T15:15:00.000+01:00</published><updated>2006-03-03T15:52:36.596+01:00</updated><title type='text'>MSX2 emulation improving.</title><content type='html'>&lt;a href="http://photos1.blogger.com/blogger/6036/2208/1600/wip_mg2b.0.png"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/6036/2208/320/wip_mg2b.0.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/6036/2208/1600/wip_mg2c.0.png"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/6036/2208/320/wip_mg2c.0.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/6036/2208/1600/wip_mg2.0.png"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/6036/2208/320/wip_mg2.0.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Working on improving the V9938 instruction set emulation is starting to show results. Next release, JEmu2 will be running a game which is often touted as the best MSX2 game ever: Metal Gear 2: Solid Snake. And it now finally works perfectly!&lt;br /&gt;&lt;br /&gt;People who know this game often regard the game Metal Gear Solid, which first appeared on the PlayStation, as a 3D remake in terms of story, events and gameplay.&lt;br /&gt;Metal Gear 2: Solid Snake game is quite unique in the sense that it is the only 'real' successor of the first Metal Gear game, and the MSX2 was the only platform it has been released on (the first Metal Gear game has been developed and released first on MSX2 as well).&lt;br /&gt;There has been been a Metal Gear 2 released for the NES, but the original game designers were not involved in that and the game turned out as a real disappointment, sharing none of the qualities of the successful first Metal Gear. Even the story has no connection with the Metal Gear saga whatsoever.&lt;br /&gt;&lt;br /&gt;Fortunately, an official Metal Gear 2 was made by the original designers from the first Metal Gear, the still very successful Hideo Kojima being the most important, and this version was not only a worthy successor but a fantastic game in its own right as well.&lt;br /&gt;The only downside of the official Metal Gear 2: Solid Snake was that it exclusively appeared on the MSX2 (a system which was only successful in a few countries), and it was also only released in Japan, so difficult to understand by people who don't understand japanese, if they could even get a hold of this game in the first place.&lt;br /&gt;Fortunately, Metal Gear 2: Solid Snake has later been translated to English by fans (so it's not an official translation), and this is the version which will appear on gagaplay.com. Now finally everyone can see what a wonderful game Konami has kept from non-japanese and non-MSX2 users.&lt;br /&gt;&lt;br /&gt;There will be a few more games in the next release of JEmu2, such as Arkanoid 2: Revenge of Doh and Contra (a.k.a. Gryzor).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/6036/2208/1600/wip_ark2a.png"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/6036/2208/320/wip_ark2a.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/6036/2208/1600/wip_ark2b.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/6036/2208/320/wip_ark2b.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21803270-114139535784206220?l=jemu2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jemu2.blogspot.com/feeds/114139535784206220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21803270&amp;postID=114139535784206220&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/114139535784206220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/114139535784206220'/><link rel='alternate' type='text/html' href='http://jemu2.blogspot.com/2006/03/msx2-emulation-improving.html' title='MSX2 emulation improving.'/><author><name>Erik Duijs</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21803270.post-114130736242519441</id><published>2006-03-02T14:49:00.000+01:00</published><updated>2006-03-02T14:54:29.023+01:00</updated><title type='text'>JEmu2's Development blog</title><content type='html'>&lt;a href="http://jemu2.blogspot.com/"&gt;V9938 emulation progress&lt;/a&gt;&lt;br /&gt;I finally got the V9938 instruction 0x0F working (high speed put bytes CPU-&gt;VRAM) and the instruction 0x0E (high speed Copy Vertically), which made Gryzor/Contra playable, fixed some missing graphics in Vampire Killer (most notably the doors at the end of the levels) and made various other games work somewhat better.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/6036/2208/1600/wip_xevious.png"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/6036/2208/320/wip_xevious.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/6036/2208/1600/wip_vkiller4.png"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/6036/2208/320/wip_vkiller4.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/6036/2208/1600/wip_usas.png"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/6036/2208/320/wip_usas.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/6036/2208/1600/wip_gryzor.0.png"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/6036/2208/320/wip_gryzor.0.png" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21803270-114130736242519441?l=jemu2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jemu2.blogspot.com/feeds/114130736242519441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21803270&amp;postID=114130736242519441&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/114130736242519441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/114130736242519441'/><link rel='alternate' type='text/html' href='http://jemu2.blogspot.com/2006/03/jemu2s-development-blog.html' title='JEmu2&apos;s Development blog'/><author><name>Erik Duijs</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21803270.post-114103111773949963</id><published>2006-02-27T09:59:00.000+01:00</published><updated>2006-02-27T10:10:24.960+01:00</updated><title type='text'>WIP</title><content type='html'>Here's another work in progress report:&lt;br /&gt;&lt;br /&gt;* I've created some interfacing code so that non-arcade drivers can be used in the applet version as well. This involved remapping from AWT event codes to LWJGL event codes. The next version, MSX games will be playable in the applet as well.&lt;br /&gt;&lt;br /&gt;* The sprite colours of the MSX2 video modes are fixed now. One feature of the V9938 video display processor was missing which apparently was used a lot in MSX2 games to create multi-coloured sprites.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21803270-114103111773949963?l=jemu2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jemu2.blogspot.com/feeds/114103111773949963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21803270&amp;postID=114103111773949963&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/114103111773949963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/114103111773949963'/><link rel='alternate' type='text/html' href='http://jemu2.blogspot.com/2006/02/wip.html' title='WIP'/><author><name>Erik Duijs</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21803270.post-113992439945175356</id><published>2006-02-14T14:21:00.000+01:00</published><updated>2006-02-14T14:42:41.596+01:00</updated><title type='text'>Source code release imminent!</title><content type='html'>Currently I'm finishing the distribution of the complete JEmu2 source code.&lt;br /&gt;&lt;br /&gt;The source will be released under a license which, in short allows for reuse of components in other non-commercial open source projects, but strictly forbids hosting of JEmu2 on any other site than http://www.gagaplay.com.&lt;br /&gt;&lt;br /&gt;Why this restriction?&lt;br /&gt;The reason is simple. I don't want multiple versions of JEmu2 floating around, and everybody should be using the latest version. This will help keeping the high score tables maintainable, for example, and keeping up to date was one of the reasons to use Java Web Start in the first place.&lt;br /&gt;&lt;br /&gt;It isn't such a bad restriction, though.&lt;br /&gt;Everybody will be allowed to put up links on their own (non-commercial) web site to the JNLP files which start JEmu2, on the condition that there will be a clear link to the official JEmu2 homepage as well (http://www.gagaplay.com/jemu2) and a clear mention of the JEmu2 name. A little note to me, mentioning the links to JEmu2 will be appreciated too.&lt;br /&gt;This will save anyone the trouble to keep JEmu2 up to date, and of course it saves a lot of bandwidth too!&lt;br /&gt;&lt;br /&gt;There are more things to reckon with in the license, so read it carefully before you use anything from the JEmu2 source code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21803270-113992439945175356?l=jemu2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jemu2.blogspot.com/feeds/113992439945175356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21803270&amp;postID=113992439945175356&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/113992439945175356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/113992439945175356'/><link rel='alternate' type='text/html' href='http://jemu2.blogspot.com/2006/02/source-code-release-imminent.html' title='Source code release imminent!'/><author><name>Erik Duijs</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21803270.post-113978140472674518</id><published>2006-02-12T22:33:00.000+01:00</published><updated>2006-02-12T22:56:44.736+01:00</updated><title type='text'>Enhancing games using specialized drivers</title><content type='html'>Some really great classics have been produced for the MSX system. Take for example the Nemesis saga, or Knightmare. All fantastic games, but they did reveal a very important technical shortcoming of the MSX(1) system: The inability to create colourful graphics and having a smooth scroll.&lt;br /&gt;So the MSX1 gamers just had to settle with jerky background scrolling. Although the gameplay was still fantastic, it did influence the whole experience.&lt;br /&gt;&lt;br /&gt;So, what would be cooler than be able to replay those exact same games using emulation, but with a specialed driver which makes the games' backgrounds scroll smoothly?&lt;br /&gt;That's exactly what I've been working on.&lt;br /&gt;&lt;br /&gt;The idea is to separate the background rendering and the sprite rendering, and introduce a pixel offset for the playfield.&lt;br /&gt;In Knightmare, I found a memory location which seems to keep track of the vertical background position, which I use to sync the pixel offset with. When that value in RAM changes, the pixel offset is reset to 0, otherwise it's increased every 8 frames. So, 64 frames are needed to 'blend' from one background scroll position to the next.&lt;br /&gt;One thing I had to take care of; the pixel offset only had to be updated when the memory location was changing so in the end the code looks something like this:&lt;br /&gt;&lt;br /&gt;vdp.renderBackground();&lt;br /&gt;mem_old = mem;&lt;br /&gt;mem = RAM[background_pos];&lt;br /&gt;if (mem_old != mem) {&lt;br /&gt;  timer = 0;&lt;br /&gt;  scroll = 0;&lt;br /&gt;}&lt;br /&gt;timer++;&lt;br /&gt;if (timer &lt; 64) { // stop scrolling when the background pos. isn't updated&lt;br /&gt;  scroll++;&lt;br /&gt;}&lt;br /&gt;updateBackgroundPosition(scroll / 8);&lt;br /&gt;&lt;br /&gt;In Knightmare, it works a treat and the background scrolls as smoothly as a baby's bum in the new specialized driver.&lt;br /&gt;&lt;br /&gt;In the Nemesis games however, things are more complicated.&lt;br /&gt;For example, there are the background stars which do scroll smoothly in the originals. Actually, it's a trick, but they are part of the background so if I start implementing the smooth scroll on top of that, the background stars don't move so great anymore.&lt;br /&gt;&lt;br /&gt;The answer is to patch the rom to make the stars scroll jerky, together with the rest of the background.&lt;br /&gt;Today an MSX user (BiFi) mailed me with patched roms of the whole nemesis saga where he disabled the trick of smoothly moving the background stars!&lt;br /&gt;&lt;br /&gt;There are however more hurdles to overcome... More later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21803270-113978140472674518?l=jemu2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jemu2.blogspot.com/feeds/113978140472674518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21803270&amp;postID=113978140472674518&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/113978140472674518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/113978140472674518'/><link rel='alternate' type='text/html' href='http://jemu2.blogspot.com/2006/02/enhancing-games-using-specialized.html' title='Enhancing games using specialized drivers'/><author><name>Erik Duijs</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21803270.post-113922761094669148</id><published>2006-02-06T13:00:00.000+01:00</published><updated>2006-02-06T14:20:26.160+01:00</updated><title type='text'>MSX-2 progress</title><content type='html'>Finally, I've got some MSX-2 emulation progress to show.&lt;br /&gt;The V9938 is now partially implemented and MSX-2 is booting. Some games are now even fully playable, including the classic Metal Gear and Vampire Killer (a.k.a. 'Castlevania' on other platforms).&lt;br /&gt;At this moment, only SCREEN 0-3 and SCREEN 5 are implemented, and some VDP opcodes and features are missing so not all games are working yet.&lt;br /&gt;Furthermore, the sprite colours are not 100% correct yet.&lt;br /&gt;The V9938 Video Display Processor is actually a quite interesting chip and a good challenge to emulate properly. You could say that it's an early GPU, because it can really process instructions in parallel to the CPU (things like line drawing and blitting).&lt;br /&gt;&lt;br /&gt;Here are some screenshots:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/6036/2208/1600/wip_vkiller2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/6036/2208/320/wip_vkiller1.png" border="0" alt="" /&gt;Vampire Killer (a.k.a. Castlevania)&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/6036/2208/1600/wip_vkiller2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/6036/2208/320/wip_vkiller2.png" border="0" alt="" /&gt;Vampire Killer (a.k.a. Castlevania)&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/6036/2208/1600/wip_mgear2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/6036/2208/320/wip_mgear2.png" border="0" alt="" /&gt;Metal Gear&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/6036/2208/1600/wip_ssnake.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/6036/2208/320/wip_ssnake.png" border="0" alt="" /&gt;Metal Gear 2: Solid Snake&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/6036/2208/1600/wip_hinotori.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/6036/2208/320/wip_hinotori.png" border="0" alt="" /&gt;Hinotori (a.k.a. Fire Bird)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21803270-113922761094669148?l=jemu2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jemu2.blogspot.com/feeds/113922761094669148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21803270&amp;postID=113922761094669148&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/113922761094669148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/113922761094669148'/><link rel='alternate' type='text/html' href='http://jemu2.blogspot.com/2006/02/msx-2-progress.html' title='MSX-2 progress'/><author><name>Erik Duijs</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21803270.post-113879144601645251</id><published>2006-02-01T11:53:00.000+01:00</published><updated>2006-02-01T13:58:16.383+01:00</updated><title type='text'>Welcome to the JEmu2 development blog</title><content type='html'>Well, you have to start somewhere. Before, I used to post WIP updates on the official JEmu2 site (http://www.gagaplay.com/jemu2), but I decided to only post the most important news on the official site, and blog about JEmu2 development here.&lt;br /&gt;&lt;br /&gt;At this point I'm still working on MSX emulation. Although MSX1 emulation seems to work fine, there are still a few roms that don't work.&lt;br /&gt;I'm replacing the TMS9928A (the MSX1 video chip) emulator with a new V9938 (the MSX2 video chip) emulator which I'm currently writing. The TMS9928A emulator was based on the TMS9928A emulator as found in the java version of VirtualColeco by Neal Danner, but with some bugs fixed.&lt;br /&gt;&lt;br /&gt;With this new V9938 emulator, I hope to get MSX2 roms to work anytime soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21803270-113879144601645251?l=jemu2.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jemu2.blogspot.com/feeds/113879144601645251/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21803270&amp;postID=113879144601645251&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/113879144601645251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21803270/posts/default/113879144601645251'/><link rel='alternate' type='text/html' href='http://jemu2.blogspot.com/2006/02/welcome-to-jemu2-development-blog.html' title='Welcome to the JEmu2 development blog'/><author><name>Erik Duijs</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
