tag:blogger.com,1999:blog-56330372009-06-02T22:26:04.983+01:00Chris White - Emulation!Diary of emulation projects: JSNES, JavaGear, JEmu2.ythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.comBlogger32125tag:blogger.com,1999:blog-5633037.post-41271452790877976112009-03-24T21:36:00.001Z2009-03-24T21:37:09.935ZFlashGearNow 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! :)ythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.com1tag:blogger.com,1999:blog-5633037.post-15647485437955240982009-03-23T10:01:00.003Z2009-03-23T22:30:14.691ZJavaGear Actionscript/Flash PortI 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,ythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.com0tag:blogger.com,1999:blog-5633037.post-24182396222216934452009-03-23T09:58:00.003Z2009-03-23T10:01:21.304ZDroidGearDue 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.ythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.com0tag:blogger.com,1999:blog-5633037.post-3110471223152878882008-07-02T11:14:00.002+01:002008-07-02T11:26:15.355+01:00JavaGear 0.97 PreviewUpcoming 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 ythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.com3tag:blogger.com,1999:blog-5633037.post-18983730990094034732008-06-02T17:16:00.002+01:002008-06-02T17:17:59.320+01:00JavaGear UpdatesSo 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.ythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.com1tag:blogger.com,1999:blog-5633037.post-58891497734029892802008-05-20T14:14:00.000+01:002008-05-20T14:15:18.419+01:00JavaGear ME 0.92 Released 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 ythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.com0tag:blogger.com,1999:blog-5633037.post-27010253551692483692008-05-11T21:02:00.004+01:002008-05-11T21:08:04.445+01:00JavaGear 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 debuggingythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.com8tag:blogger.com,1999:blog-5633037.post-38493749450967110172007-08-17T13:18:00.000+01:002007-08-17T13:30:40.409+01:00OutRun is now integrated with JEmu2. ythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.com0tag:blogger.com,1999:blog-5633037.post-61253732147310883652007-08-13T23:30:00.000+01:002007-08-13T23:36:23.510+01:00The OutRun driver for JEmu2 is pretty much done. I sent the code to Erik today :)It was tricky to get the sound right - a hack was needed to ensure the music played at the correct speed, and I'm not entirely sure I've done it in the best way, but we'll see what he thinks! I'll post a link when it's online and playable :)ythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.com0tag:blogger.com,1999:blog-5633037.post-41219296430381146542007-08-07T23:52:00.001+01:002007-08-07T23:53:59.423+01:00More good news on the OutRun front - controls are now fully emulated, so the game is playable.I've also fixed a bug with sprite ram swapping, which has fixed the occasional corruption problems I previously mentioned.Next steps are to implement sound :)ythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.com2tag:blogger.com,1999:blog-5633037.post-43579245970955218772007-07-31T23:38:00.001+01:002007-07-31T23:44:31.659+01:00I'm making quick progress. The road layer is now implemented. I've also implemented shadow support on the sprites, you can see these under the trees in the screenshots below. I *think* the graphics hardware is pretty much complete now. I've started implementing the controls. The basic digital controls are done and I'll investigate the analogue controls next.I will then double check the timings ythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.com0tag:blogger.com,1999:blog-5633037.post-43764210876343158072007-07-28T18:45:00.000+01:002007-07-28T18:52:57.122+01:00I've added sprite support to the Java OutRun arcade emulator driver I'm working on.The major graphical hardware left to implement, as you'll see from the screenshots, is the road layer.There's occassionally some very brief and minor corruption to the sprites. I'm not sure what this is yet.ythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.com0tag:blogger.com,1999:blog-5633037.post-62971202075557174762007-07-26T13:43:00.000+01:002007-07-26T13:50:25.831+01:00OK, so JSnes hasn't been updated in a while. This is purely because I lost interest and had other things to spend my time on.In the meantime I worked on a mobile version of JavaGear for MIDP handsets.I'm also adding OutRun support to Jemu2. You can see below that I have got the text layer and tile layer working.ythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.com4tag:blogger.com,1999:blog-5633037.post-1106915017670147442005-01-28T13:14:00.000Z2005-01-28T12:23:37.670Z- Fixed a problem in the CPU core with the RTI instruction, (switching the Accumulator to and from 8 and 16 bits after popping the status register from the stack). Solved graphical corruption and problems in loads of games, including Contra 3: - Bugfixed HDMA support, fixing a bunch of Commercial ROMs (Zool, Turrican 2 etc.). - Corrected some SRAM mirroring issues, meaning Mario Allstars passesythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.com18tag:blogger.com,1999:blog-5633037.post-1106150028823335502005-01-19T15:49:00.000Z2005-01-19T16:02:38.510ZGot my websites back up (Finally!) Fixed a few minor issues on JSnes: - Fixed CPU cycles per scaline - Implemented a handful of new opcodes. - Fixed directPageIndexedIndirect memory mode in CPU emulation - Fixed bug on certain 256 Colour mode backgrounds There are still a lot of bugs, but the above also means that some more games start to run. A handful of basic commercial titles are now ythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.com0tag:blogger.com,1999:blog-5633037.post-1079961078670688032004-03-22T13:11:00.000Z2005-01-19T16:46:35.086ZSprites are now implemented. Support is included for all sizes, including those that are undocumented, as well as features like sprite priority rotation. Check out the new screenshots. Also fixed a bug in VRAM reading, which caused graphical corruption in a few ROMs.ythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.comtag:blogger.com,1999:blog-5633037.post-1079448568993485902004-03-16T14:49:00.000Z2004-03-16T14:51:50.716ZAdded support for screen fading, one of the easier bits of the PPU to emulate! In the CPU core, I fixed a bug with the TCS / TSC opcode; the 16-bit accumulator needed to be transferred to/from the stack pointer ignoring the status of the memory flag. I already knew this, but implemented it incorrectly. Oops. Now Ghosts N Ghouls runs further, before hitting an unimplemented opcode. Lots of ythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.com0tag:blogger.com,1999:blog-5633037.post-1079351154120188222004-03-15T11:45:00.000Z2004-03-15T11:48:49.873ZWell, a short time without an update, but I've been hacking away. I researched offet-per-tile mode, which can be used in Modes 2, 4 and 6 by the Snes. Implementing this proved tricky, as no documentation exists on it, and quite a few emulators don't support it. Further to this, the game doctor I ordered didn't work and is being sent back for repair, so I couldn't run any tests on hardware. Bah!ythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.com0tag:blogger.com,1999:blog-5633037.post-1078239619582043242004-03-02T15:00:00.000Z2005-01-19T16:47:11.836ZAdded HDMA support. Managed to get the basics working pretty quickly, but spent a while trying to get the repeat flag working properly. Also had some trouble with conflicting documentation. A lot of nice effects work in PD demos now! Next, I'm going to work on bug fixing existing code to ensure everything is working as it should. Currently a few simple demos that should work don't, and I wantythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.comtag:blogger.com,1999:blog-5633037.post-1077708170136571842004-02-25T11:22:00.000Z2005-01-19T16:48:59.420ZAs promised, I've implemented correct (as opposed to hacky) subscreen support. This includes fixed colour and subscreen addition and subtraction. One obvious benefit of this is that the sky in Super Mario World is now correct (compare these new screenshots with the previous ones). Also, have a look at the transparent clouds in the Dwarf demo. Nearly all the docs I found regarding subscreens ythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.comtag:blogger.com,1999:blog-5633037.post-1077530983633337232004-02-23T10:09:00.000Z2004-02-23T10:11:43.530ZImplemented H-Blanking support, which was causing Super Mario World to hang. In fact, SMW now runs into the game... and I'm sure it would be playable, if I had sprites implemented! There are some graphical glitches, related to me not supporting subscreens correctly yet. I'll optimise the BG layer code next, and simultaneously correct this. Found a small bug related to NMI interrupts, although Iythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.com0tag:blogger.com,1999:blog-5633037.post-1077013870803284412004-02-17T10:31:00.000Z2005-01-19T16:49:57.093ZI've worked on fixing more graphics related bugs (one of which was very silly and prevented 64x64 tilemaps working). I'm sure they'll be more to uncover yet. I've implemented horizontal and vertical tile flipping. Super Mario World now partially works. Obviously, there are no sprites yet, and graphics emulation is incomplete. It doesn't run any further than the second screen at the moment, dueythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.comtag:blogger.com,1999:blog-5633037.post-1076591406098802682004-02-12T13:10:00.000Z2004-02-12T13:11:55.123ZNo screenshots today, because I don't have anything interesting enough to post. However, I've worked on improving graphics emulation. I've started to clean a few bits of code, and most importantly, have implemented 16x16 tiles. Some further opcodes and bugfixes in the core mean that a whole bunch of new PD demos run, or at least do something. I've also ordered myself a Game Doctor SF7, which ythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.com0tag:blogger.com,1999:blog-5633037.post-1076340972230635942004-02-09T15:36:00.000Z2005-01-19T16:56:34.733ZHere's an update of my progress: 150 CPU Opcodes are now emulated. I've bug fixed quite a few existing ones, and corrected various errors. 64x32 tilemaps now display correctlyTilemap scrolling implementedAutomatic joypad reading implementedSPU skipper implemented (Fakes the sound processor for now) The result of all this is that a handful of new PD demos are working, and the following ythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.comtag:blogger.com,1999:blog-5633037.post-1073989756423445772004-01-13T10:29:00.000Z2005-01-19T16:57:42.266ZAs promised some screenshots from some partially working new demos: ythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.com