'ello! I thought I'd try my hand(again) at attempting Mode7 in Graal. For those unaware, mode7 was graphical mode embedded in the hardware of the SNES that emulated 3D projection. Obvious examples would be Super Mario Kart on the SNES.
People have attempted to do this many times before in Graal, but it tends to be a taxing endeavor. There is always a lot of looping involved and on top of that having to entirely rerender the player's view.
So I've been going over in my head various methods to try to emulate Mode7 in Graal in the least intensive way possible. I thought I'd post a thread on the subject to share my progress, and possibly exchange ideas and maybe even get some others on board.
See, I'm not good at math. Any math I accomplish I pretty much wing my way through it, tweaking and messing around until I get a desirable result. So I'm probably not the most qualified person to do this, but I'm trying!
My first attempt is already underway. This attempt is being done in a sort of progressive, tweaking matter. What I did was start by rendering tiles in a standard grid view with polygons. The polygons are important because in the end I want to tweak each point of the polygon as if I were manipulating the vertices of a 3D plane. The downside is that polygons seem to be VERY expensive to Graal. Rendering even half a level's worth of polygon tiles drops my FPS down to 12. Rendering the full level(without further 3D math and other intensive calculations) drops it to a staggering 3 frames per second. Anyways, then I took this plane of tiles and I added rotation math to it. This is the first step to emulating mode7 for me.
However, I don't think this will be a viable method. Rendering polygons are just too taxing. So I'm also contemplating other methods. My most promising idea is to use a drawingpanel to emulate a screen buffer. This would allow me to create mode7 using methods similar to how actual programming languages would do it. See, what I would do is use the canvas like a buffer, rendering each pixel individually. I haven't done any experimentation yet though, so I don't know how taxing this method will be. However the upside is that because I'm emulating a screen, I can lower the resolution, thus lowering the calculations needed to be done. I could actually allow users to specify their own resolutions that fit their computer.
In the end my desire is to make a flexible and more importantly,
user-friendly mode7 emulation. Something that others can be able to drop directly into a level and easily manipulate the camera to do their own thing with. Everything from rendering a map to porting old game types like Mario Kart of F-Zero. The more cooperation and help, I think the better off I'll be!