<?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'><id>tag:blogger.com,1999:blog-5633037</id><updated>2010-03-04T22:11:16.094Z</updated><title type='text'>Chris White - Emulation &amp; Decompilation</title><subtitle type='html'>Latest Project: OutRun Decompilation
Past Projects: JSnes, JavaGear, JEmu2</subtitle><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default'/><link rel='alternate' type='text/html' href='http://www.massdestruction.co.uk/jsnes/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default?start-index=26&amp;max-results=25'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.massdestruction.co.uk/jsnes/atom.xml'/><author><name>yt</name><uri>http://www.blogger.com/profile/06951854683143825385</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>50</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5633037.post-7154245197139455386</id><published>2010-03-04T22:11:00.001Z</published><updated>2010-03-04T22:11:16.271Z</updated><title type='text'>This blog has moved</title><summary type='text'>       This blog is now located at __FTP_MIGRATION_NEW_URL__.       You will be automatically redirected in 30 seconds, or you may click here.       For feed subscribers, please update your feed subscriptions to       __FTP_MIGRATION_FEED_URL__.  </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/7154245197139455386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5633037&amp;postID=7154245197139455386' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/7154245197139455386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/7154245197139455386'/><link rel='alternate' type='text/html' href='http://www.massdestruction.co.uk/jsnes/2010/03/this-blog-has-moved.html' title='This blog has moved'/><author><name>yt</name><uri>http://www.blogger.com/profile/06951854683143825385</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05915899640319338697'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5633037.post-7670945567463408084</id><published>2010-02-22T17:16:00.003Z</published><updated>2010-03-04T21:53:45.471Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='outrun'/><title type='text'>C Compilers</title><summary type='text'>Following my previous post, where I questioned whether Gauntlet's code was written in C as opposed to assembler, I've come to the realisation that OutRun's slave CPU code was probably generated by a compiler and is not hand-written assembler. 

The slave CPU controls the road rendering. So essentially it generates the curves, height variation, road splitting and appearance, from the level data. 
</summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/7670945567463408084/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5633037&amp;postID=7670945567463408084' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/7670945567463408084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/7670945567463408084'/><link rel='alternate' type='text/html' href='http://www.massdestruction.co.uk/jsnes/2010/02/c-compilers.html' title='C Compilers'/><author><name>yt</name><uri>http://www.blogger.com/profile/06951854683143825385</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05915899640319338697'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5633037.post-2987409501405692169</id><published>2010-02-02T15:28:00.002Z</published><updated>2010-02-02T15:29:31.555Z</updated><title type='text'>C Compilers for 68000</title><summary type='text'>Reading The Making of Gauntlet, I was interested to read the following comment:

With the switchover from the 6502 to the more capable 68000  microprocessor, the development environment at Atari had changed  considerably. “We were actually entering our own code at this point. Our  development tools changed, too. We were now programming in C instead of  assembly language,” says Logg.
Was the game </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/2987409501405692169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5633037&amp;postID=2987409501405692169' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/2987409501405692169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/2987409501405692169'/><link rel='alternate' type='text/html' href='http://www.massdestruction.co.uk/jsnes/2010/02/c-compilers-for-68000.html' title='C Compilers for 68000'/><author><name>yt</name><uri>http://www.blogger.com/profile/06951854683143825385</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05915899640319338697'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5633037.post-7980638853517258019</id><published>2010-01-14T14:36:00.002Z</published><updated>2010-02-26T11:26:54.655Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='outrun'/><title type='text'>Hidden Voices</title><summary type='text'>If you try OutRun's Sound Test, you'll notice there are four voices you can apparently play. These are the speech samples Get Ready, Congratulations and Check Point. The forth sample, "Voice 4", doesn't work. If, like me, you've lost sleep over such a monumental issue - read on!


The elusive fourth voice is, in fact, still in the ROM files, namely those containing the PCM sample data. You can </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/7980638853517258019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5633037&amp;postID=7980638853517258019' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/7980638853517258019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/7980638853517258019'/><link rel='alternate' type='text/html' href='http://www.massdestruction.co.uk/jsnes/2010/01/hidden-voices.html' title='Hidden Voices'/><author><name>yt</name><uri>http://www.blogger.com/profile/06951854683143825385</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05915899640319338697'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5633037.post-6766872717373839230</id><published>2010-01-12T12:12:00.000Z</published><updated>2010-01-12T12:12:25.728Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='outrun'/><title type='text'>Level Select</title><summary type='text'>Yesterday proved a little more fun. Whilst debugging the slave road CPU code, I figured out how to change the level order in OutRun. Using this, you could easily make a level select. Also found a way to have the road data from one level, with the object data from another. It doesn't always work, but does allow you to make some interesting permutations. Some level data for Stage 1 is also </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/6766872717373839230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5633037&amp;postID=6766872717373839230' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/6766872717373839230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/6766872717373839230'/><link rel='alternate' type='text/html' href='http://www.massdestruction.co.uk/jsnes/2010/01/level-select.html' title='Level Select'/><author><name>yt</name><uri>http://www.blogger.com/profile/06951854683143825385</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05915899640319338697'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5633037.post-5741658710621893264</id><published>2010-01-11T11:56:00.000Z</published><updated>2010-01-11T11:56:37.616Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='outrun'/><title type='text'>Slave CPU Code</title><summary type='text'>Spent most of yesterday working on the code that runs on the slave CPU. On a positive note, there isn't much of it. The code is minimal compared with the main CPU. It's a loop that handles rendering the road. On a negative, progress is slow. I spent most of the afternoon trying to figure out a few hundred lines of assembler and now feel like gouging my eyes out.</summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/5741658710621893264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5633037&amp;postID=5741658710621893264' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/5741658710621893264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/5741658710621893264'/><link rel='alternate' type='text/html' href='http://www.massdestruction.co.uk/jsnes/2010/01/slave-cpu-code.html' title='Slave CPU Code'/><author><name>yt</name><uri>http://www.blogger.com/profile/06951854683143825385</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05915899640319338697'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5633037.post-4739059740998185731</id><published>2010-01-05T00:22:00.003Z</published><updated>2010-03-02T13:41:45.535Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='outrun'/><title type='text'>Outrun Unidesa Manual</title><summary type='text'>I've had no free time lately. But the following manual arrived in the post:


It's an OutRun arcade manual from a Spanish company called Unidesa (Universal De Desarrollos Electronicos S.A.) who seem to have licensed OutRun at some stage. The company still exists and has a website here.

I expected it to be a straight translation of the common English Sega manual that can be found at KLOV. 

</summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/4739059740998185731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5633037&amp;postID=4739059740998185731' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/4739059740998185731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/4739059740998185731'/><link rel='alternate' type='text/html' href='http://www.massdestruction.co.uk/jsnes/2010/01/outrun-unidesa-manual.html' title='Outrun Unidesa Manual'/><author><name>yt</name><uri>http://www.blogger.com/profile/06951854683143825385</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05915899640319338697'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5633037.post-5976000297636553416</id><published>2009-12-11T15:27:00.000Z</published><updated>2009-12-11T15:27:42.331Z</updated><title type='text'>Pre-Xmas Update</title><summary type='text'>Quick update - pretty busy with both work and some other interesting projects that I can't discuss yet. OutRun work will definitely be continuing as I've made good progress, it's just on hold for a short period.</summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/5976000297636553416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5633037&amp;postID=5976000297636553416' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/5976000297636553416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/5976000297636553416'/><link rel='alternate' type='text/html' href='http://www.massdestruction.co.uk/jsnes/2009/12/pre-xmas-update.html' title='Pre-Xmas Update'/><author><name>yt</name><uri>http://www.blogger.com/profile/06951854683143825385</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05915899640319338697'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5633037.post-6629945753090896486</id><published>2009-11-27T17:24:00.001Z</published><updated>2009-11-27T17:43:29.500Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='outrun'/><title type='text'>Game Objects and Level Format</title><summary type='text'>I've made a lot of progress. After a lot of hard work I've figured out the internal object format used by OutRun for most sprites and game objects which is a big breakthrough. I understand the complete format, with the exception of a single bit that eludes me right now. The internal format is a lot more complex than the values finally written directly to the sprite hardware, as it includes </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/6629945753090896486/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5633037&amp;postID=6629945753090896486' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/6629945753090896486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/6629945753090896486'/><link rel='alternate' type='text/html' href='http://www.massdestruction.co.uk/jsnes/2009/11/gane-objects-and-level-format.html' title='Game Objects and Level Format'/><author><name>yt</name><uri>http://www.blogger.com/profile/06951854683143825385</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05915899640319338697'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5633037.post-851002251377233859</id><published>2009-11-11T01:03:00.000Z</published><updated>2009-11-11T01:03:08.114Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='outrun'/><title type='text'>Look Both Ways!</title><summary type='text'>One interesting aspect of disassembling games you're fond of, is that you might uncover hidden code that was unused in the final build. This can give an insight into some of the features that were planned that didn't make the final cut, either because of time, technical problems or maybe they simply didn't prove fun during playtesting. 

Lately I've been disassembling the traffic handling code, </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/851002251377233859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5633037&amp;postID=851002251377233859' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/851002251377233859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/851002251377233859'/><link rel='alternate' type='text/html' href='http://www.massdestruction.co.uk/jsnes/2009/11/look-both-ways.html' title='Look Both Ways!'/><author><name>yt</name><uri>http://www.blogger.com/profile/06951854683143825385</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05915899640319338697'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5633037.post-3641674095771771015</id><published>2009-11-10T10:41:00.003Z</published><updated>2009-11-10T14:37:05.001Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='outrun'/><title type='text'>Extend Time!</title><summary type='text'>One of the aspects of OutRun that somewhat puzzled me as a player, was exactly how the "Extend Time!" feature at the end of each level worked.

This is the additional time that is added to the countdown timer on passing a checkpoint. I've never seen details published - until now....

Here's a table that shows the time, in seconds, that is added to your overall counter per stage. The rightmost </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/3641674095771771015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5633037&amp;postID=3641674095771771015' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/3641674095771771015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/3641674095771771015'/><link rel='alternate' type='text/html' href='http://www.massdestruction.co.uk/jsnes/2009/11/extend-time.html' title='Extend Time!'/><author><name>yt</name><uri>http://www.blogger.com/profile/06951854683143825385</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05915899640319338697'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5633037.post-3326729539963225865</id><published>2009-10-20T00:56:00.004+01:00</published><updated>2009-11-17T15:37:59.362Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='outrun'/><title type='text'>OutRun Gameplay Laserdisc &amp; VHS</title><summary type='text'>I'm still beavering away, reverse engineering the OutRun source. I'm focusing on the sprite routines and level data at the moment. Both of which are quite complex. I've uncovered some pretty intriguing stuff, and understand why OutRun uses the convoluted jump table I mentioned in an earlier post. It's related to rendering the level data, and many of the repeated routines handle sprites. 

But I'm</summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/3326729539963225865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5633037&amp;postID=3326729539963225865' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/3326729539963225865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/3326729539963225865'/><link rel='alternate' type='text/html' href='http://www.massdestruction.co.uk/jsnes/2009/10/outrun-gameplay-laserdisc-vhs.html' title='OutRun Gameplay Laserdisc &amp; VHS'/><author><name>yt</name><uri>http://www.blogger.com/profile/06951854683143825385</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05915899640319338697'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5633037.post-5571633030052427976</id><published>2009-09-29T22:18:00.003+01:00</published><updated>2009-09-29T22:35:42.304+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='outrun'/><title type='text'>Tools and Tiles</title><summary type='text'>Wrote a quick tool, which takes an Outrun CPU 0 memory dump from the MAME debugger as input. As output it prints the jump table from that stage of the game that has been built and stored in RAM.This is handy, because it formats the data and only shows the addresses which are currently enabled, and doesn't repeat addresses when they're called in succession. The table in RAM itself is 124 entries </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/5571633030052427976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5633037&amp;postID=5571633030052427976' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/5571633030052427976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/5571633030052427976'/><link rel='alternate' type='text/html' href='http://www.massdestruction.co.uk/jsnes/2009/09/tools-and-tiles.html' title='Tools and Tiles'/><author><name>yt</name><uri>http://www.blogger.com/profile/06951854683143825385</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05915899640319338697'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5633037.post-1610647974570927851</id><published>2009-09-17T11:10:00.002+01:00</published><updated>2009-09-17T11:23:56.661+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='outrun'/><title type='text'></title><summary type='text'>Quick progress report: Commented all the code relating to detecting when the car is off-road. Figured out the memory location that determined which wheel was off. Established the memory location that determined the width of the road, and handles splitting the road between number of lanes and individual roads. Commented some slightly less interesting code relating to lap times, output lamps and </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/1610647974570927851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5633037&amp;postID=1610647974570927851' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/1610647974570927851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/1610647974570927851'/><link rel='alternate' type='text/html' href='http://www.massdestruction.co.uk/jsnes/2009/09/quick-progress-report-commented-all.html' title=''/><author><name>yt</name><uri>http://www.blogger.com/profile/06951854683143825385</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05915899640319338697'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5633037.post-8185799176458468080</id><published>2009-09-10T15:08:00.005+01:00</published><updated>2009-11-10T10:50:53.501Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='outrun'/><title type='text'>Debugging</title><summary type='text'>I reached a point where it was time to switch to a competent interactive debugger, instead of working out of a series of text files that were becoming increasingly difficult to manage.

It took me a good few days to transfer my comments and knowledge to the new system. But the payoff is massive - I've immediately spotted mistakes, and identifying blocks of code has become a lot less painful.



</summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/8185799176458468080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5633037&amp;postID=8185799176458468080' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/8185799176458468080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/8185799176458468080'/><link rel='alternate' type='text/html' href='http://www.massdestruction.co.uk/jsnes/2009/09/debugging.html' title='Debugging'/><author><name>yt</name><uri>http://www.blogger.com/profile/06951854683143825385</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05915899640319338697'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5633037.post-4727743973546462183</id><published>2009-08-27T17:07:00.003+01:00</published><updated>2009-08-27T17:16:25.190+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='outrun'/><title type='text'>Decompilation Update</title><summary type='text'>As predicted, progress is slow and steady.The most satisfying way of working is attempting to solve as many unknowns in a particular area, and then moving on when the going gets tough. Going back to a set of routines with a fresh pair of eyes really helps.Some areas that I've worked on:1/ Car control (X Position, Acceleration, Gear Changes)2/ Road splitting code (High level areas including the '</summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/4727743973546462183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5633037&amp;postID=4727743973546462183' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/4727743973546462183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/4727743973546462183'/><link rel='alternate' type='text/html' href='http://www.massdestruction.co.uk/jsnes/2009/08/decompilation-update.html' title='Decompilation Update'/><author><name>yt</name><uri>http://www.blogger.com/profile/06951854683143825385</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05915899640319338697'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5633037.post-2182484465887756807</id><published>2009-08-11T23:03:00.004+01:00</published><updated>2009-09-21T09:55:32.538+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='outrun'/><title type='text'>Outrun Decompilation Oddities</title><summary type='text'>The decompilation is moving along reasonably nicely. I've slowly picking up a decent understanding of the game code.One interesting thing with the decompilation is that it uncovers code routines and text that don't appear to be in the final game.For example, check the strings in the following screenshot:BIN CHAN ECOLOR BANK GA TARINA NOYO !1 STAGE 127 KO INAINI SHITENEIf you set the program </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/2182484465887756807/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5633037&amp;postID=2182484465887756807' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/2182484465887756807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/2182484465887756807'/><link rel='alternate' type='text/html' href='http://www.massdestruction.co.uk/jsnes/2009/08/outrun-decompilation-oddities.html' title='Outrun Decompilation Oddities'/><author><name>yt</name><uri>http://www.blogger.com/profile/06951854683143825385</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05915899640319338697'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5633037.post-8538492053800682657</id><published>2009-08-10T11:33:00.005+01:00</published><updated>2009-08-10T12:04:29.756+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='outrun'/><title type='text'>OutRun Decompilation Project</title><summary type='text'>I'm something of an OutRun obsessive. I've got the arcade machine in my parent's garage (they keep requesting that I remove it) and I coded the OutRun driver for Jemu2. The game has so many memories attached to it, and it will always hold a lofty place in my heart beyond what it probably deserves.One coding project that I've dabbled with on rainy days, is a full decompilation and reverse </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/8538492053800682657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5633037&amp;postID=8538492053800682657' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/8538492053800682657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/8538492053800682657'/><link rel='alternate' type='text/html' href='http://www.massdestruction.co.uk/jsnes/2009/08/outrun-decompilation-project.html' title='OutRun Decompilation Project'/><author><name>yt</name><uri>http://www.blogger.com/profile/06951854683143825385</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05915899640319338697'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5633037.post-4127145279087797611</id><published>2009-03-24T21:36:00.001Z</published><updated>2009-03-24T21:37:09.935Z</updated><title type='text'>FlashGear</title><summary type='text'>Now it runs pretty well:http://www.javagear.co.uk/flashgearBasically I missed a few Flash related things as I was working too late. I knew the code wasn't that bad! :)</summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/4127145279087797611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5633037&amp;postID=4127145279087797611' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/4127145279087797611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/4127145279087797611'/><link rel='alternate' type='text/html' href='http://www.massdestruction.co.uk/jsnes/2009/03/flashgear.html' title='FlashGear'/><author><name>yt</name><uri>http://www.blogger.com/profile/06951854683143825385</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05915899640319338697'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5633037.post-1564748543795524098</id><published>2009-03-23T10:01:00.003Z</published><updated>2009-03-23T22:30:14.691Z</updated><title type='text'>JavaGear Actionscript/Flash Port</title><summary type='text'>I quickly ported JavaGear to Actionscript 3 the other week to see how fast it would run. The actual port was really quick - took just over a day to get it up and running.It seems that Actionscript is a pretty sluggish language for emulation purposes. The main bottleneck in the code is the Z80 emulation. The rendering and flash specific stuff is not really an issue.Using a hacked version of Sonic,</summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/1564748543795524098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5633037&amp;postID=1564748543795524098' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/1564748543795524098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/1564748543795524098'/><link rel='alternate' type='text/html' href='http://www.massdestruction.co.uk/jsnes/2009/03/javagear-actionscriptflash-port.html' title='JavaGear Actionscript/Flash Port'/><author><name>yt</name><uri>http://www.blogger.com/profile/06951854683143825385</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05915899640319338697'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5633037.post-2418239622221693445</id><published>2009-03-23T09:58:00.003Z</published><updated>2009-03-23T10:01:21.304Z</updated><title type='text'>DroidGear</title><summary type='text'>Due to my own laziness at porting JavaGear to Google Android, I'm pleased to say Stephan has taken it upon himself to start a port. The code can be found hereA video can be found hereLooks like something's up with the frameskipping code from the video - I don't think the emulator is skipping frames at all. The interface and auto screen flipping looks cool though.</summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/2418239622221693445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5633037&amp;postID=2418239622221693445' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/2418239622221693445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/2418239622221693445'/><link rel='alternate' type='text/html' href='http://www.massdestruction.co.uk/jsnes/2009/03/droidgear.html' title='DroidGear'/><author><name>yt</name><uri>http://www.blogger.com/profile/06951854683143825385</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05915899640319338697'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5633037.post-311047122315287888</id><published>2008-07-02T11:14:00.002+01:00</published><updated>2008-07-02T11:26:15.355+01:00</updated><title type='text'>JavaGear 0.97 Preview</title><summary type='text'>Upcoming in the next version:1/ Big speed increase for mobile version. I've compiled my own customised version of proguard (the java obfuscator) . This results are great, and games run noticeably quicker. I'll have some precise data to back this up in due course.2/ Decent standalone application version with menubar and windows .exe launcher for ease of use. Essentially the menubar is the final </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/311047122315287888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5633037&amp;postID=311047122315287888' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/311047122315287888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/311047122315287888'/><link rel='alternate' type='text/html' href='http://www.massdestruction.co.uk/jsnes/2008/07/javagear-097-preview.html' title='JavaGear 0.97 Preview'/><author><name>yt</name><uri>http://www.blogger.com/profile/06951854683143825385</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05915899640319338697'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5633037.post-1898373099009403473</id><published>2008-06-02T17:16:00.002+01:00</published><updated>2008-06-02T17:17:59.320+01:00</updated><title type='text'>JavaGear Updates</title><summary type='text'>So you've probably noticed that there have been a few minor updates to JavaGear recently.I'm also working on implementing 'save state' support. It's a feature I've wanted for ages, but is mind numbingly dull to code. I've finally summed up the courage. It works, I've just got to hook up some UI for it now.Any other feature requests are welcome.</summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/1898373099009403473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5633037&amp;postID=1898373099009403473' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/1898373099009403473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/1898373099009403473'/><link rel='alternate' type='text/html' href='http://www.massdestruction.co.uk/jsnes/2008/06/javagear-updates.html' title='JavaGear Updates'/><author><name>yt</name><uri>http://www.blogger.com/profile/06951854683143825385</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05915899640319338697'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5633037.post-5889149773402989280</id><published>2008-05-20T14:14:00.000+01:00</published><updated>2008-05-20T14:15:18.419+01:00</updated><title type='text'>JavaGear ME 0.92 Released</title><summary type='text'>             JavaGear for MIDP2 Compatible mobile phones.       Also contains a standalone J2SE (PC compatible) build of JavaGear.               New Features:    Screen rotation    Screen can be enlarged with SCALE option (before it was only shrunk)    Lightgun emulation (touchscreen devices and with mouse on J2SE version)    SRAM is saved (Phantasy Star etc.)    NTSC/PAL selection    J2SE: Pass </summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/5889149773402989280/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5633037&amp;postID=5889149773402989280' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/5889149773402989280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/5889149773402989280'/><link rel='alternate' type='text/html' href='http://www.massdestruction.co.uk/jsnes/2008/05/javagear-me-092-released.html' title='JavaGear ME 0.92 Released'/><author><name>yt</name><uri>http://www.blogger.com/profile/06951854683143825385</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05915899640319338697'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5633037.post-2701025355169248369</id><published>2008-05-11T21:02:00.004+01:00</published><updated>2008-05-11T21:08:04.445+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javagear'/><title type='text'></title><summary type='text'>JavaGear Android PortI've started to port JavaGear to Google's Android platform. The results are good, although it runs seriously slowly in the emulator. Based on the J2ME version, it will presumably run faster on an actual device.There will be updates to the existing mobile version of JavaGear in due course. I'm hoping to add Lightgun support for touchscreen handsets.There's still some debugging</summary><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/2701025355169248369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5633037&amp;postID=2701025355169248369' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/2701025355169248369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5633037/posts/default/2701025355169248369'/><link rel='alternate' type='text/html' href='http://www.massdestruction.co.uk/jsnes/2008/05/ive-started-to-port-javagear-to-googles.html' title=''/><author><name>yt</name><uri>http://www.blogger.com/profile/06951854683143825385</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05915899640319338697'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>8</thr:total></entry></feed>