There is no way to port DirectX to the Wii, simply because the architecture is too different (programable pipeline aka shaders vs fixed function pipeline). You can fully emulate the Wii's feature set on DirectX but not vice versa.by antibyte - Ideas, requests
There's no video tutorial, but it comes with Sample applications that serve as tutorials.by antibyte - Ideas, requests
No, Wire3D is abstracting the platform specific graphics API (GX on Wii, DirectX on PC), meaning it's a layer above GX/DX. It does not expose the full feature set of these APIs, but adds a lot of higher level features (e.g. culling, sorting, transformation hierarchy, ...) which are useful for writing 3D applications.by antibyte - Ideas, requests
Owen, generally speaking, unused slots in an array means suboptimal use of the data cache. I'd use a struct like profetylen suggested, as it would be more compact and manageable (no need to deal with those numbers, so no need for unused slots that are just there for future extensibility. You need a new stats attribute, you just add it to the struct).by antibyte - Coding
just adding my 2 cents to profetylen's suggestion: There's only a limited number of players, so it should be determinable how much memory you need to use in advance. While I use STL-like containers myself all the time, I would advise to avoid per frame memory allocations at all costs in a game. So when you use std::vector, you should resize it to the needed capacity in advance in orby antibyte - Coding
Yes, there is an easy way to do it. You generate statistics data while your game is running. You know when you destroy an asteroid, you know when you get hit, you know what weapon and for how long it's being used. So you just need to collect that data internally and query if any individual or combined statistics matches any of your predefined achievements.by antibyte - Coding
Thanks Owen, I get the idea now. As you only tilt the view in Newo Shooter, your approach perfectly fits its purpose.by antibyte - Coding
Ok, I just could not see how that could be used to determine wheter an enemy object is hit or not in 3D space. So I guessed that there's more to it than you posted. Never mind. :)by antibyte - Coding
Maybe I should clarify my post a bit more: First, calculate two Vector3 values that differ only by their Z value. For instance, assume that the cursor location is currently (100, 100). Therefore, the first vector (located at the near clip plane) becomes e.g. (100, 100, 0.01) and the second (located at the far clip plane) becomes e.g. (100, 100, 500). Unproject each point as described above,by antibyte - Coding
Owen, your hack always results in the same coordinates no matter how the projection (GX_SetProjection()) or the model view (GX_LoadPosMtxImm()) is set up. Thus it cannot be used to unproject the screen point to the 3D position in a 3D world (assuming that's what he wants, it's not totally clear to me from the original post :) ).by antibyte - Coding
Assuming you have the 2D position of the Wiimote, you can get the 3D world position like this: (code snippet from Wire3D) Vector3F Camera::ScreenToWorldPoint(const Vector2F& rScreenPoint) const { Vector4F worldPoint = (GetProjectionMatrix() * GetViewMatrix()).Inverse() * Vector4F(rScreenPoint.X(), rScreenPoint.Y(), 0, 1); return Vector3F(worldPoint.X(), worldPoint.Y(), worldPointby antibyte - Coding
CodeSculptor, I never got a PM from you. I was told just now that the PM system is broken, so you might want to contact me via the project page of Wire3d. We've added quite some features in the meantime and are working on a game demo for the next release.by antibyte - Ideas, requests
This is kind of vague, so I am only guessing what you mean. QuoteBlackKnightHow do I compile the files to work on a wii? If there are no makefiles supplied for the Wii, you have to create them yourself and compile them using the devkitpro toolchain. QuoteBlackKnightWhich is the file to edit to deal with controls You have to read the source code to see how/where controls are being dealtby antibyte - Coding
Hi, for the upcoming release of Wire3D (version 1.1), we are looking for beta testers of the new Input System. Here's a short video of it in action. This game demo and the Sample11 show how to use it. If you find any bugs, or you have trouble using it, please let us know. Thanks!by antibyte - Testing Corner
As Owen recommended, check out the GX samples that come with devkitpro to get an introduction on the Wii's graphics hardware. For a 2D application you will need an orthographic camera and render polygons, the framebuffer isn't scrolled like on 80s hardware.by antibyte - Coding
@owen To catch that out-of-bound access you would have to add an assert every time you access that array. Of course that is impractical and would clutter your code too much. So in C++ that's where operator overloading comes in. When you overload the assignment operator and place the assert there, an out-of-bounds access will never slip through unnoticed again. In my Wire3D project I doby antibyte - Coding
Owen, a separate debug build is just a matter of a macro, an assert function and a compiler switch: here's the macro: #ifdef MY_DEBUG #define MY_ASSERT(e) \ (void)((!!(e)) || (MyAssert(#e, __FILE__, __LINE__), 0)) #else #define MY_ASSERT(expression) #endif the function's declaration: void MyAssert(const char* pExpression, const char* pFile, int lineNumber); Thisby antibyte - Coding
Owen, the first three points you mentioned are perfect candidates for asserts. I really recommend using separate debug and release builds to catch bugs like these. Concerning mixing ints and floats: you should set the warnings level of the compiler so it warns you about implicit type conversions. That way you have to do it explicitly and you are always aware of possible side effects.by antibyte - Coding
Good question, I would like to know how other people approach debugging on the Wii, too. As I don't own a USBGecko, I gave up on Wii runtime debugging. Instead I've separated the code in my projects into platform dependent and platform independent layers. That way I can easily runtime debug the independed parts on PC, while I've written tests and made heavy use of asserts in theby antibyte - Coding
If you use Wire3D it's just a matter of a few lines of code: // create a texture from a png (width and height have to be a power of two) Texture2D* pTex = WIRE_NEW Texture2D(Importer::LoadPNG("pic.png", false)); // create a renderable object (a quad) and attach the texture Geometry* pGeo = StandardMesh::CreateQuad(0 /* vertex colors */, 1 /* uvs */); pGeo->SetMaterial(WIRE_NEWby antibyte - Coding
Congratulations! TEVSL is a really great idea. Any chance you could also output HLSL pixel shader code? Would be great to use that in a multi platform framework.by antibyte - Testing Corner
Not directly related to your question, but I've written a Unity3D exporter script and an importer for Wire3D. As there are no shaders on the Wii, it basically only exports the transformation hierarchy (scene graph), meshes, textures (including lightmaps), cameras and material render states. It's not perfect, but I've used it to export this from Unity to Wire.by antibyte - Coding
Hi, I've released a 3D engine called Wire3D ( http://wiibrew.org/wiki/Wire3D ). In terms of a Wii homebrew pet project I think it turned out to be quite nice, however in comparison to engines on other platforms it's still very rudimentary. All the rendering basics abstracting the hardware are there, so it's a matter of adding high-level features to make the project more useful andby antibyte - Ideas, requests
In this function you can see how a texture is set-up for a specific unit. Here you can see how to set the blending mode between texture stages. I've got an example on multitexturing in Wire3D if that is of any help to you.by antibyte - Coding
Any news when this is going to be fixed? Is there any workaround (like creating an account for me and PM'ing me the pw) in the meantime?by antibyte - Feedback & Support
Hi, I would like to create a Wiki account on Wiibrew.org, but after answering the "What company made the Wii?" with "Nintendo" and filling out username, 2x the password and clicking "Create account", I get the following error message: Login error Incorrect or missing confirmation code. Is there something I'm missing? Seems to me like wiki account creation is broken. :(by antibyte - Feedback & Support