• Hey, guest user. Hope you're enjoying NeoGAF! Have you considered registering for an account? Come join us and add your take to the daily discourse.

Cemu, World's First Wii U Emulator, Suddenly Released

Vuze

Member
Haha, I was actually going to ask that before but I figured it was a joke about milking the Patreon backers for an extra month.
Oh, yeah that would make sense haha. Looking forward to see what's in store for the next build, guess the changelog should pop up soonish
 

jediyoshi

Member
1.4.1 is live for Patreon supporters

# CEMU detailed changelog for 1.4.1
# Patreon release date: 2016-04-07

CPU: Added new instructions to recompiler: LWARX, STWCX, STWBRX, LHAUX, LHZUX, type 5, 6 & 7 for PSQ_L and type 5, 6 & 7 for PSQ_ST, DCBZ, ADDC, MFCR, FDIV, FADD, PS_SUB, PS_NEG.
CPU: Improved handling of XMM registers in recompiler. Drastically reducing the number of load/store operations when not enough registers are available.
CPU: Added SUBFME to interpreter.

coreinit: New API __ghs_mtx_init(), __ghs_mtx_dst(), __ghs_mtx_lock(), __ghs_mtx_unlock(), OSSleepThread()
coreinit: Added weak-symbol 'environ'

RPL: Added support for SDA and SDA2

fsa: Asynchronous file operations now support sending the result via message queue (instead of callback)

GX2: Added vertex data cache (cache vertex data in GPU memory instead of re-uploading it for every drawcall)
GX2: Fixed texture decoding for compressed textures with a size smaller than 16x16
GX2: Fixed AMD issue that occurred when glDrawBuffers() enables unused color attachment
GX2: Fixed AMD issue that occurred when glPrimitiveRestartIndexNV is used instead of glPrimitiveRestartIndex
GX2: Fixed AMD driver crash that could happen after shader compilation.
GX2: Fixed a multitude of issues when using Intel GPUs. Graphics are still horribly broken due to Intel's lacking OpenGL driver, but at least we can say we tried our best :)
GX2: Invalidate destination texture in cache after GX2SurfaceCopy()

vpad: Clamp left and right stick to length 1.0

Mario Kart 8 can hit 60fps in time trials
https://www.youtube.com/watch?v=Z9uOSYbtOSM

New Super Mario Bros. U
New Super Luigi U
Bayonetta 2
The Wind Waker HD
Captain Toad: Treasure Tracker

New Super Mario Bros. U - Intro Cutscene Comparison
1.3.1 (Early February)
https://www.youtube.com/watch?v=npXBmVVeADA
1.4.1 (Now)
https://www.youtube.com/watch?v=4g1lpwAZcJY
 

roytheone

Member
Mario Kart 8 can hit 60fps in time trials
https://www.youtube.com/watch?v=Z9uOSYbtOSM

I can 100 % verify this. Mario kart 8 runs amazing in time trails, and while normal races have slowdown, it is still very playable! With this new version, super mario 3d world now also runs basically full speed. It's incredible really. Outside of some weird shadow artifacts, the game is now basically fully playable or me! The emulator does seem to have some "warm up" period on my rig, it stutters like crazy for like 10-15 minutes after starting a game, but when that is over, it flies! I am incredibly impressed.

My rig:

i7 870 @ 3,3 ghz
GTX 970
8 GB RAM
Windows 10 64-bit
 

Dr. Buni

Member
I wonder how bad/good some of these games would run on my PC (i7 2660 /r7 260x). I could try them myself but I don't know how to dump digital Wii U games :p
 

nkarafo

Member
It's incredible how a system like the WiiU (which should be slightly more powerful than a 360) runs as good on current CPUs. I was always under the impression that a current PC can only emulate systems that are at least 2 generations behind (in terms of processing power).

For instance, current "next gen emulators" that run perfectly are PS2, GC and Wii (which is basically the same as the GC). For 360/PS3 i assumed we will have to wait for CPUs that will be released in the next 2 or 3 years at least. And yet the WiiU seems like it's going to run fine on current CPUs... heck some of that footage is taken using some that are several years old already.
 

Pokemaniac

Member
It's incredible how a system like the WiiU (which should be slightly more powerful than a 360) runs as good on current CPUs. I was always under the impression that a current PC can only emulate systems that are at least 2 generations behind (in terms of processing power).

For instance, current "next gen emulators" that run perfectly are PS2, GC and Wii (which is basically the same as the GC). For 360/PS3 i assumed we will have to wait for CPUs that will be released in the next 2 or 3 years at least. And yet the WiiU seems like it's going to run fine on current CPUs... heck some of that footage is taken using some that are several years old already.

"Generation" labels have nothing to do with ease of emulation. Generations are simply measures of time.

Ease of emulation is a complex subject and has a lot of factors that play into it. The way that consoles have moved towards running games in more abstracted environments is probably helping things along with modern systems, since it means games are less reliant on a super accurate imitation of the hardware.
 

FyreWulff

Member
It's incredible how a system like the WiiU (which should be slightly more powerful than a 360) runs as good on current CPUs. I was always under the impression that a current PC can only emulate systems that are at least 2 generations behind (in terms of processing power).

For instance, current "next gen emulators" that run perfectly are PS2, GC and Wii (which is basically the same as the GC). For 360/PS3 i assumed we will have to wait for CPUs that will be released in the next 2 or 3 years at least. And yet the WiiU seems like it's going to run fine on current CPUs... heck some of that footage is taken using some that are several years old already.

Well, we thought 360 emulation was impossible, and Microsoft pulled it off on a laptop processor.

Also, CEMU doesn't have wide compatibility and I don't know how many hacks the programmer is using. It doesn't even run on recent AMD drivers.
 

c0de

Member
Well, we thought 360 emulation was impossible, and Microsoft pulled it off on a laptop processor.

Also, CEMU doesn't have wide compatibility and I don't know how many hacks the programmer is using. It doesn't even run on recent AMD drivers.

Well, it's not even out half a year and still has an amazing pace. Did they cut corners? Perhaps but this is one of the fastest progressing emulator ever and already has amazing speed and good compatibility for its age.
 

FyreWulff

Member
Well, it's not even out half a year and still has an amazing pace. Did they cut corners? Perhaps but this is one of the fastest progressing emulator ever and already has amazing speed and good compatibility for its age.

I mean I'm not dogging on the guy - great work - but there's a difference between true accurate emulation and basically quasi-porting individual games to x86 (which is pretty much what ZSNES and it's ilk were doing).

An actual accurate Wii U emulator at native speed is probably a decade or more off. An emulator that targets popular games but has to basically do a lot of customization per game to get there will have big gains at first but will slow down once the major interests are compatible.
 

Vuze

Member
I mean I'm not dogging on the guy - great work - but there's a difference between true accurate emulation and basically quasi-porting individual games to x86 (which is pretty much what ZSNES and it's ilk were doing).

An actual accurate Wii U emulator at native speed is probably a decade or more off. An emulator that targets popular games but has to basically do a lot of customization per game to get there will have big gains at first but will slow down once the major interests are compatible.
I'm not too sure about this; atleast the authors claimed that a "no hacks" approach was one reasoning as to why the are keeping it closed source. Way back before the patreon etc
 

c0de

Member
I mean I'm not dogging on the guy - great work - but there's a difference between true accurate emulation and basically quasi-porting individual games to x86 (which is pretty much what ZSNES and it's ilk were doing).

An actual accurate Wii U emulator at native speed is probably a decade or more off. An emulator that targets popular games but has to basically do a lot of customization per game to get there will have big gains at first but will slow down once the major interests are compatible.

Well, I finished many, many games when I used ZSNES 16 years ago. Was it an accurate emulation? Of course not. But could you see it? Not that often.
Also do you think Dolphin is more accurate?
I mean, yes, cycle accurate emulation is of course far off but does it need to be accurate? And why?
 

jediyoshi

Member
http://cemu.info/patreon/changelog/cemu_1_4_2.txt
Changelog up. They also announced earlier on Patreon they had a new non-serial based security system. Have to imagine it calls home at this point.

# CEMU detailed changelog for 1.4.2
# Patreon release date: 2016-04-30

general: FPS counter now updates more frequently

CPU: Improved recompiler code generated for DCBZ instruction.

h264: Simulate successful video decoding rather than returning errors (proper video decoding is still WIP. The new workaround fixes freezes where the game was waiting for video playback to happen)

coreinit: Fixed a bug in OSReadRegister16() and OSReadRegister32Ex() where 0 was returned instead of the actual register value
coreinit: Added weak-symbol __gh_FOPEN_MAX
coreinit: Added API OSWakeupThread()

ax: Added support for AUX bus callbacks (New API: AXRegisterAuxCallback)
ax: Added support for voice protection (New API: AXVoiceBegin, AXVoiceEnd, AXVoiceIsProtected)

GX2: Added permanent shader cache
Everytime a previously unknown shader is loaded, the shader and all releated renderstate information cached in a file.
When CEMU boots a game, it will use the cached information to reconstruct all known shaders right away.
This significantly can decrease stuttering during emulation but it will also increase boot times.
GX2: Added support for GX2WaitTimeStamp()
GX2: Added support for swap interval configuration via GX2SetSwapInterval()
GX2: Added support for binding depth textures as color targets
GX2: Fixed a bug where color or depth buffers were not correctly cleared.
GX2: Support for texture depth compare modes 'never' and 'always'.
GX2: Reworked texture loader code

FS: Added API FSGetMountSource()

vpad: Added VPADGetTPCalibratedPointEx()
vpad: VPADGetTPCalibratedPoint() now correctly copies the touch flags

Wasn't expecting them to implement a permanent cached shader feature, though it's a nice stop gap. Isn't this basically what the Ishiiruka ver of Dolphin does?

edit: 1.4.2 up on Patreon now
 

PGamer

fucking juniors
Wasn't expecting them to implement a permanent cached shader feature, though it's a nice stop gap. Isn't this basically what the Ishiiruka ver of Dolphin does?

Dolphin uses a shader cache. I think you might be mixing that up with the async shader compilation.

Cemu 1.4.2 game updates:

- Bayonetta
- Hyrule Warriors
- The Legend of Zelda: Twilight Princess HD
- The Legend of Zelda: The Wind Waker HD
- Mario Kart 8
- One Piece: Unlimited World Red
- Super Mario 3D World
 

jediyoshi

Member
Dolphin uses a shader cache. I think you might be mixing that up with the async shader compilation.

Ah, I figured the Dolphin shader cache was regenerated every time it's run and not saved permanently. I get the distinction with async and the emulator not waiting for them to generate.
 

jediyoshi

Member
Star Fox Guard
Super Mario 3D World
New Super Mario Bros. U

Super Mario Maker seems to crash at NSMB courses now
Star Fox Zero boots to loading/pre-title screen
RiBsWgK.jpg


4yVVqhg.jpg
 

Futaba

Member
How is multicore handled on the emulator these days, I'm seeing a lot of people's specs where overall frequency being higher seems to be the say to go, is this down to just performance in general or does the emulator favir maximum clock frequency over corecount?
 

jediyoshi

Member
Cemu 1.5.0 released on Patreon
http://cemu.info/patreon/changelog/cemu_1_5_0.txt

# CEMU detailed changelog for 1.5.0
# Patreon release date: 2016-05-15

general: CEMU now supports -f command line option to launch in fullscreen mode.
general: New controller settings menu and improved controller emulation

AX: Added support for AXSetAuxReturnVolume()
AX: Voice data is now correctly stored in PPC-residing buffers where the data can be edited by applications via the final mix callback
AX: Generally improved timing and handling of callbacks during a single audio frame

coreinit: Adjusted handling of CPU/OS timers for better accuracy
coreinit: Added API SAVERemove()

WPAD: Better implementation for WPADProbe(), WPADControlMotor()
KPAD: New API KPADInit()
VPAD: New API VPADControlMotor(), VPADStopMotor()

GX2: Added support for BC2_UNORM texture format
GX2: Texture wrap mode on the z axis (R) is now correctly updated
GX2: Added support for BRSTCNT field in copy shader export
GX2: Fixed several issues where vs->gs or gs->ps imports/exports where not correctly recognized when the geometry shader stage is active
GX2: Added support for shader MULLO_UINT instruction
GX2: Added support for linear interpolation for pixel shader imports
GX2: Added support for texture format R4_G4_UNORM
GX2: New API GX2GetSurfaceSwizzle(), GX2SurfaceIsCompressed(), GX2ConvertDepthBufferToTextureSurface()
GX2: Automatic texture swizzle channel correction (Some texture formats on GPU7 handle undefined channels differently than their OpenGL counterparts)
GX2: Added native support for compressed textures (BC1, BC3, BC4 and BC5)
GX2: Correctly handle CB_SHADER_MASK and DB_SHADER_CONTROL register

--

New gamepad controls
EXpMzWR.png


xinput triggers bind properly now

improved SM3DW graphics

bayonetta 2, star fox guard, star fox zero no longer ingame/boot
pikmin 3, captain toad performance drop
nes remix performance increase

Mario Kart 8 - fixed sky
Super Mario 3D World
New Super Mario Bros. Wii U
The Legend Of Zelda: Twilight Princess HD
Pikmin 3
NES Remix 2
Xenoblade Chronicles X
Captain Toad: Treasure Tracker
Bayonetta
 

Dr. Buni

Member
Fantastic progress. Color me impressed.

I do wonder how many years it will take for CEMU to run Xenoblade Chronicles in near perfect condition.
 

PGamer

fucking juniors
Cemu 1.5.1 is now out for Patreon backers.

Changelog:
# CEMU detailed changelog for 1.5.1
# Patreon release date: 2016-05-23

Input: Fixed input for controllers with off-center axes
Input: Added axis range scaler (50% to 200%)

H264: Fixed a bug in H264DECMemoryRequirement() that could lead to a crash.

CPU: Added new instructions to recompiler: ps_mr, ps_sel, ps_l/ps_st type 6, stfdx
CPU: Recompiler will now utilize BMI and AVX instruction set to generate faster code (if supported by host CPU)
CPU: Fixed a bug in code generated by recompiler for FSUB & FSUBS where the result would incorrectly become -0.0 instead of 0.0

AX: Added API AXSetVoiceSrcRatio()
AX: Fixed a bug in voice volume update
AX: Increased audio volume
AX: Added logging for audio API

GX2: Fixed wrong colors for certain texture dump formats
GX2: Fixed vertex ordering for special cases when PRIMITIVE_RECTS is used
GX2: New implementation for tiling aperature. Still heavily work-in-progress.

Game updates:

- Mario Kart 8
- Splatoon
 

Peterthumpa

Member
Heads up for controls: if you switch to another controller type, your previous type's bindings aren't saved so make sure to export them first.

Looks like Bayo 2 and Star Fox Guard are still broken in 1.5.1 ]:

Mario Kart 8
Super Mario 3D World
New Super Mario Bros. Wii U
Twilight Princess HD

WTF? These are running in real time? How the hell did this emulator evolved so quickly?
Absurd, amazing well done stuff. This is basically playable now. Some small fixes in the lighting and MK8 / 3D World will be basically perfect.
 

PGamer

fucking juniors
Not about Cemu but the open source Wii U emulator Decaf is apparently now capable of rendering the Mario Kart 8 title screen:

xLrh28v.png


It would be nice if Decaf gets to the point of being a legitimate contender for Wii U emulation. A closed source only future for Wii U emulation would kind of suck.
 

Alo81

Low Poly Gynecologist
I'm not sure what was even the point of implementing mip-mapping, to be honest. All it does it make the textures look blurry.

I think this may be one of those things that shows off MUCH better in motion than in screenshots.

The non-mipmapped textures on the left handside would be showing OBSCENE amounts of aliasing (shimmering) because it's trying to fit all of the detail in such a small space. Mipmapping uses lower resolution versions depending on how small the area the texture being applied to is.

It looks blurry in the screenshot but it looks like theres one other piece missing that would ideally make it look as great as it can, which is anisotropic filtering.

Anisotropic_filtering_en.png


filtering.jpg
 
Yeah, anisotropic filtering is pretty much needed for the mip mapping to actually look good. But without it, mip mapping just makes things look worse, IMO.
 

jediyoshi

Member
Cemu 1.5.2 will be out on Thursday for Patreon backers. Mip-mapping support has been added and Super Smash Bros. for Wii U now boots.

Only just realized with these previews that games that natively run 1080p, output at that resolution when in fullscreen as opposed to always 720p in windowed. Guess it's not much of a factor since Smash and TPHD are some of the few games that run that res.
 

jediyoshi

Member
1.5.2 up for Patreon

# CEMU detailed changelog for 1.5.2
# Patreon release date: 2016-06-09

coreinit: Improved performance of ExpHeap memory library.

AX: Added sndcore2 API AXAcquireVoice, AXAcquireVoiceEx, AXFreeVoice, AXVoiceBegin,
AXVoiceEnd, AXSetVoiceVe, AXSetVoiceOffsets, AXSetVoiceType,
AXSetVoiceDeviceMix, AXSetVoiceState, AXSetVoiceSrc, AXSetVoiceSrcRatio,
AXIsVoiceRunning, AXGetVoiceOffsets

Input: Fixed a bug where mapping any keyboard button would always set the key to "0xFF"

GX2: Added support for cubemap array textures
GX2: Added support for mip-mapping (all texture types)
GX2: Better handling for textures with a width or height that is not a multiple of 4
GX2: Fixed a bug in Tiling Aperature where texture pitch (width) was calculated incorrectly
GX2: New API GX2InitSamplerZMFilter(), GX2InitSamplerLOD(), GX2InitPolygonControlReg(), GX2InitPolygonOffsetReg()
GX2: Improved streamout shader emulation performance
GX2: Implemented support for directly rendering into the scanbuffer
GX2: Texture format R10_G10_B10_A2_SNORM now uses GL RGBA16_SNORM representation (since there is no signed version of RGB10_A2 in OpenGL)
GX2: New debug option 'Overwrite vertex buffer size'.
With this option enabled, CEMU will calculate the size of vertex attribute data that needs to be uploaded to the GPU instead of relying on the value provided by the game.
Can boost performance but may also make the vertex cache less efficient.
 
Top Bottom