tag:blogger.com,1999:blog-56330372008-07-02T11:26:24.426+01:00Chris White - Emulation!ythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.comBlogger29125tag: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 ythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.comtag: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.comtag: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: Passythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.comtag:blogger.com,1999:blog-5633037.post-27010253551692483692008-05-11T21:02:00.004+01:002008-05-11T21:08:04.445+01:00JavaGear Android Port
I'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 ythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.comtag: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.comtag: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.comtag: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.comtag: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 ythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.comtag: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.comtag: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.comtag: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 ythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.comtag: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 ythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.comtag: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.comtag: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.comtag: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 ythttp://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 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, althoughythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.comtag: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,ythttp://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, ythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.comtag: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.comtag:blogger.com,1999:blog-5633037.post-1073928983004951192004-01-12T17:36:00.000Z2004-01-12T17:43:04.233ZOver the weekend, I added more opcodes to the processor emulation; roughly 90 out of 250 are now emulated. I fixed a daft bug with regard to the negative flag in certain instructions (actually cause by a typo). I also corrected the JML absolute long instruction. I did a little bug fixing on the video emulation, and now tiles with higher colour depths are decoded correctly. Following that, I ythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.comtag:blogger.com,1999:blog-5633037.post-1073556571453375462004-01-08T10:09:00.000Z2005-01-19T16:59:12.170ZWell, a very long time without an update, but I've been busy programming games at work and drinking too much over Christmas. Still, some progress has been made. I've added a load of CPU opcodes, fixed the usual range of silly bugs that come with starting an emulator from scratch and implemented interrupts (see the Hello World demo below). As a result, a handful of simple demos now work.
ythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.comtag:blogger.com,1999:blog-5633037.post-1062493695898217262003-09-02T10:08:00.000+01:002005-01-19T16:48:30.016ZSpent a while fixing minor PPU bugs, and other errors due to misinterpretation of documentation. The result is that the homebrew ROM that I've been experimenting with now runs! It only draws a simple image, but demonstrates DMA, CGRAM, and BG layers in operation.
ythttp://www.blogger.com/profile/06951854683143825385noreply@blogger.com