October 5th, 2008 by nkeynes
Shadow volumes are in
Posted in Development
for opaque polygons, and they’re looking quite nice. And it didn’t even have as big a performance hit as I had expected. Translucent shadows need to be dealt with separately, alongside the translucent poly sorting (and will probably be quite a bit more expensive, but then again they’re more expensive on the actual PVR2 as well).
Other than that, Real Life(tm) has been quite busy recently, so progress has been a little slower than one might like, but we’re still on track for 0.9 at the moment.
Changes
- Add opaque shadow volumes
- Fix some punchout ordering problems
- Add EXT_packed_depth_stencil support
No Comments »
Posted in Development
Now taking requests here: Poll
I’ve been looking into why Ketm (among other games) was showing some strange timing problems - turns out that they’re very sensitive to the exact SH4 CPU speed, presumably due to use of timing loops. Unfortunately the raw instruction rate, like most modern CPUs, is quite complicated, so this is going to take some time to get right. Admittedly we were certainly going to need cycle-accurate emulation eventually though (or at least close-to-cycle-accurate).
Otherwise work on the accumulation buffer + shadow volumes (at least for opaque polygons) is progressing nicely, but nothing to brag about as yet. In a rare bit of good news, it appears that ATI’s latest 8.9 drivers do in fact (at least claim to) support EXT_packed_depth_stencil at long last, meaning that people with ATI cards will actually be able to see the shadow effects now. Well, once they’re working at all, anyway.
No changelog today, as I find the recent lack of commits disturbing…
1 Comment »
September 13th, 2008 by nkeynes
Ooh look, new features
Posted in Development
You know, with all the porting and bug fixing this year, I think it’s been a while since anything new was actually added to lxdream. But it looks like we might finally be past most of that stuff, and I can start getting back on track. Well ok, the lightgun support is pretty random, but it’s good to get the input system more or less fully sorted out now.
Remaining for 0.9: Accumulation buffer, shadow volumes, and bump mapping. And a ‘real’ translucent polygon sorting algorithm, along with a bunch of minor things I need to tidy up.
Changelog
- ASIC: Start adding the secondary PVR DMA channel
- IDE: Implement drive status command (10h)
- PVR2: Add vertex fog & rudimentary LUT fog (needs to be moved to the pixel shader for pixel-level correctness)
- PVR2: Add render-to-texture support (completely untested and probably broken)
- PVR2: Implement horizontal scaler buffer write-back
- MAPLE: Add lightgun support
- GUI: Allow mouse events to be used for controller buttons
- OSX: Disable run button/menu when no program is loaded
No Comments »
September 2nd, 2008 by nkeynes
More bugfixes
Posted in Development
Ok, that’s about a wrap for the ‘month of bugs’. Mostly minor stuff again, but I’d be interested in hearing about anything that’s still failing to start with the latest svn revisions. And now back to some of those video bits and pieces that I keep putting off… (well, that and continuing to hammer on the ARM test cases as time permits)
Changes
- SH4: Mask SR, FPSCR, and the MMU/General IO registers properly
- SH4: Remove a number of harmless warnings that have been cluttering up the output
- SH4: Initial real perf counter implementation, at least for 0×23 (SH4 clock count)
- AICA: Set a sensible default value on the 0×2808 register
- GDROM: Fix reading NRG images with multiple DAOX/DAOI sections
- IDE: Generate the DMA interrupt on end of DMA rather than end of read (duh…)
- PVR2: Adjust hclip appropriately when using the horizontal scaler
- PVR2: Fix DMA/SQ writes to the VRAM32 region
- GUI: Display the current disc title in the title bar
- GUI: Change mouse grab to only take effect while actually running, and a grabby controller is configured (ie the DC Mouse).
No Comments »
August 20th, 2008 by nkeynes
Small Bug Fixes
Posted in Development
I’ve been taking some time to tidy up a few lingering issues with the emulation, mostly small fixes but it does tend to take some time to find the bugs. As part of this, I’ve also started putting together a test harness for the ARM processor, but it’s not quite working on the actual hardware yet (In other news, the G2 bus hates me with a rather astounding passion).
I’ll probably keep going through these for another couple of weeks at this stage - it would be nice to get through the remaining known black-screen/hang type of bugs before I get back to mangling the renderer.
Changes
- SH4: Fix 64-bit bugs that broke the OS X 64-bit builds
- SH4: Fix ASID usage in ITLB lookups
- SH4: Fix core-exit on a translation-cache flush when it occurs in a branch delay slot
- SH4: Add the 1Cxx..1Fxx mapping for the P4 region when accessed through the TLB
- SH4: Add version register 0xFF000030 (read-only).
- SH4: Add undocumented performance counters (just stubbed for now) . Removes the 0xFF100008 warnings, but breaks save-state compatibility.
- ARM: Fix STM {R15} offset (should be +12, was +8)
- ARM: Add missing half-word load/store instructions
- ARM: Add test harness work-in-progress
- Other: Cleanup all the -Wall compile-time warnings
No Comments »
August 4th, 2008 by nkeynes
Minor OS X update
Posted in Development
I’ve uploaded a new OS X binary package that actually runs on 10.4 now. It also includes a fix for the Intel GMA950, and a new .dst document icon. In any case, you probably only want this if the previous package didn’t work for you.
1 Comment »
July 30th, 2008 by nkeynes
lxdream 0.8.4 released
Posted in Releases
As promised, 0.8.4 is now available from the usual place. For the first time, I’ve also put up binaries for Debian(unstable) and OS X (10.4+). Again, this is a minor release with the bulk of the changes under the hood, so don’t expect radical changes to the emulation quality or compatibility.
What’s new
- Fully native OS X support
- Renderer rewrite (fixes perspective correction among other problems)
- ALSA and PulseAudio sound drivers
- Save states now work on x86-64
- New translations: Spanish and Italian
- Lots of miscellaneous bug-fixes and improvements
Last week’s changes
- OS X: Shiny new preferences dialog
- OS X: Fix internationalization support
- OS X: Finish off application bundle (Info.plist, icon)
- OS X: Handle mode-unspecified CD-Rom disc reads
- Linux: Show CD-Rom drive names in gdrom menu
- Linux: Fix mounting empty CD-Rom drives
- Change audio initialization to try all available drivers
No Comments »
July 21st, 2008 by nkeynes
Slipping 0.9 to October
Posted in Development
Well, it’s become increasingly clear that I’m not going to have 0.9 ready in the next 2 weeks, or even in month after that. There’s two main reasons for this - I’m unfortunately finding much less time to work on lxdream of late than originally counted on, and the OS X work pretty much took a couple of months out of the schedule by itself. In any case, based on the remaining work and current rate of progress, I’m rescheduling 0.9 for October. We’ll see how that goes ^_^.
However having said that, there’s certainly enough changes to warrant a 0.8.4 interim release, especially for OS X and x86-64 users. I have a fairly short list of things remaining that need to go into that release, so that will be out in about 2 weeks. In the meantime, if anyone’s noticed any regressions relative to 0.8.3 or platform-specific bugs, please let me know as soon as possible so they can be fixed prior to release.
Changes
- Various automake fixes (eg out-of-tree builds and distcheck work now for the first time)
- Tag SVN binaries with the revision for ease of tracking/reporting
- Initial implementation of the sort-dma channel
- Fix alignment of 64-bit FMOVs
- Fix soft-reset from the emulator (lockup)
- Fix off-by-one in the translator recovery data (crash)
- Fix build when no translator is available
- Fix build against OS X 10.4 SDK
- General formatting and warnings cleanup
2 Comments »
July 6th, 2008 by nkeynes
Wrapping up the OS X port
Posted in Development
I’ve ended up spending a lot longer on the OS X port than I would have liked - the worst culprit lately has been the native CD-Rom support (but that’s a rant for another day). The only major bit outstanding now for OS X is the preferences dialog, which I’ll get back to shortly after I spend some time on other things.
Changes
- Add CoreAudio support (OS X dependencies are now down to glib + gettext)
- Finish making the OS X bundles self-contained (ie distributable)
- Get the OS X native cdrom drive to a ‘mostly working’ state.
- Fix a couple of minor translator buffer issues
1 Comment »
June 20th, 2008 by nkeynes
Small fixes
Posted in Development
Mostly just finishing/unbreaking things I’d broken in recent changes, so there’s nothing terribly exciting to report at the moment.
Changes
- Fix launching from the Finder (odd command line arguments and all)
- Move the background into the main scene structure, so it’s actually included in the min/max z (the lack of which was causing missing backgrounds in some situations). Massively simplifies things at the cost of needing colour unclamping support for correct output in all situations.
- Change internal colour format to float from unsigned char - surprisingly doesn’t have much impact on performance, but makes a few things much simpler to implement
- Finish integrating the run-time limiting properly so that it’s no longer a big wart on main.c (and works properly on OS X as well)
- Refactor the GD-Rom selection menu to be a bit more generic and add a cocoa view for it
No Comments »