Thank you so much to @Pack64 and @LK64DSH for their superb assistance in porting and simplifying assets, the game only looks at good as it does because of their work.
Your work here looks beyond incredible! Good job mulching the polygons and pixels into something that could fit in a gba while still looking stunning, 10/10
If you took these techniques back in time to when GBA games were being actively developed you'd probably be considered the best developer who ever lived.
I seem to recall retro games being produced up to last year. Don't remember if the latest was for Sega console or one of the Gameboy. Point being there's no need to time travel. I even feel that fan made games are sometimes superior to the triple A titles being produced today.
@@larrykoopa64dshacker64 I'm not big into playing SM64 hacks or mods, but it existing will definitely put a smile on my face, only if you'd want to though.
that polygon subdivision, while not perfect, just single handedly changed this from looking like a mess to really looking good. thank you so much, this is even more amazing now!
@@MaxOakland i mean it is very noticable, but its definitely at a point where you can ignore it if you dont look at it too hard. also that approach is impressive
It looks more mass appealing now, and probably better for long-term playing, but idk something about the way it looked before still captivated me. I felt nostalgic looking at it for some reason.
I know some people are disappointed you can't post the game anywhere, but honestly it's just really cool to see someone work this hard and do something that seems impossible.
@@sawyerr1335 Thanks! Yeah, I added Bowser in the Dark World (the stage, entirely on my own) and added the Snow Mountain music, the Dire Dire Docks music and the Koopa's Road music entirely on my own (added as in also copy-pasted stuff in the code to get those in the code). I also added Larry's voice clips (but I didn't know how to make it change voices depending on the figure, so Joshua did that, Joshua is pretty much the only one doing coding, I just copy paste sometimes to add stuff since I can compile it and play around with the source code, lol) And Larry's model, of course I made that one, hahah! I really need to get LarryDS Chapter 1 out though, for LarryDS, been focusing on story important scripts and I pretty much wrote all that, just need it voiced now then I can storyboard the story important stuff and then get back to focusing on Chapter 1 with the story important moments out of my system...
Cool to follow this project and seeing how much more complete and polished it becomes with each update. The character models especially are impressive to see. Most official 3D GBA games (even the impressive VD-Dev ones like Asterix) usually opted for sprites on characters/objects.
Damn, this game just looks better and better with every update. It's gone from an impressive but clearly limited tech demo to something close enough to Mario 64 DS that we're genuinely surprised it even runs on the GBA. Sorta curious what the extra character models were about though, they reminded me of certain Mario 64 DS mods, especially the Larry Koopa one. Great work with the game so far!
@larrykoopa64dshacker64 That's probably the silliest thing I've read in a while, but in the best way lmao. Did Larry get duped by Kyuubei into making a wish?
this is absolutely insane. sm64ds was considered mindblowing, but this is on hardware 5 years older and made by a team probably a hundredth of the size. with the texture warping problem solved, this really looks just like something nintendo wouldve released back in the day. i assume you're running all this on an emulator, so it would be really cool to see this running on an actual GBA. again, it's amazing seeing super mario 64 running on GBA, keep up the good work :)
Yep, it all runs on real hardware. Running it on an emulator makes for faster testing and debugging though. Every few days I put it on my flashcart just to check that the real hardware still likes it though.
@@jsbarretto that's so cool! :O like, obviously it'd still be ridiculously impressive even if it only ran on emulator, but knowing this can run entirely on original hardware makes it just that much cooler. if/when you release a ROM for this and I can play it on my actual GBA I think I'll lose my mind. seriously, you're doing amazing stuff here
Woah dude, looks awesome. Iggy Koopa is a REALLY cool concept. I loved the koopas in Mario 3 but they never really went anywhere. Good to see ur having fun!
Just found this and am amazed by this project. Excellent work! As a side note: It saddens me to see people in the comments not know what Koopaling that is. It's clearly Larry due to the spiked up blue hair.
As well as his face, he's got the blue eyes and the kitty smile shaped mouth. His mohawk looks specifically like a chicken cockscomb and his shell is blue.
you are an actual wizard. the way you explain your work makes the whole process much more understandable. not only have you made a piece of art, you've built heavily upon it and made something that nintendo literally thought was impossible...
Even if I don’t understand everything here, the work you’ve put in is amazing and the technical skill is mindblowing. I appreciate the explanation of texture correct; very interesting and good luck on this amazing project
Really awesome project, and great progress in a really short period of time. Would be cool to see a GBA version of the SM64 sound font playing the background music!
at this speed, we'll have a fully functional demo by the end of the year... seriously man, amazing job you're doing ! every update video of yours brings a smile to my face.
This is so crazy, wow! A 3D platformer running on GBA!! Not sprites with some 3D objects, not sprites moving perpendicularly, no mode 7, it's ENTIELY 3D on a 32-bit handheld of 2001!!!
Well, there was a 3d asterix and obelix platformer game on the GBA, but it's nowhere near as polished or recognisable as Mario 64 ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-b0pknb4ghUA.htmlsi=3h-JN_dmuvPmf94B
Super impressive. For me, this is right up there with the best projects that came out the golden age of PSP homebrew. Other consoles have totally had their share of cool stuff too, but this stuff is on a whole different level of cool.
Honestly this really just helps show how massive the jump from SNES to N64 was back in the day, and how challenging it must have been for developers to basically relearn their jobs. I've seen people say SM64 hasn't aged great before, but I'd say it's insane how well it holds up given the circumstances.
Yep, exactly. ~1000 is few enough that skipping through the empty ones isn't a huge performance hog, but also high enough that draw order irregularities are pretty rare. Another advantage of subdivision that I didn't mention in the video is that subdivision occurs before depth sorting, so the subdivided triangles end up getting sorted into the depth bins independently, resulting in even fewer depth issues.
@@jsbarrettoI thought that psx only sorts z by bin? Inside each bin Sony uses a linked list, which would be pretty slow to sort. The easy structure of a z buffer makes it fast. Even a hierarchical buffer doesn’t need malloc. Would be interesting to benchmark it at this low resolution. Correction: quicksort works well on a linked list. As separating value start with the middle of the bin. Needs to be double linked or seek for center first? We need links anyway for the triangle structure. Still sorting array of z:id sounds faster to me
I like how Yoshi looks in your project :) Keep going. No matter what you do with the project eventually, it'd be really interesting to see how much of the original you can put in this.
This is impressively optimized. Been loosely following the whole project when Mario was simply a shape. Now look at it. As a kid with a GBA, I wouldn't even think this was possible.
This was impressive in earlier iterations and it is only getting more wild. You mad lad! You are a master of efficiency! Looks phenomenal (sounds killer too now)
This project continues, very frequently, to surprise me in what can be achieved. Honestly, I kinda love seeing the limited ways in which problems have to be solved. It feels more raw and real, in a way.
Once again an incredible job! So excited to see the hardware being pushed to its limits! Your solution for close textures being texture warped is verry interesting! Keep it up, looking forward to the next updates! 😄
To save on ROM space I've downsampled everything to 8 KHz. I might up that at a later date if I implement MIDI playback, allowing background music to be compressed a lot. Also, I need to improve the performance of the mixer so that it can operate at higher frequencies.
This is absolutely insane and the rate of progress makes it doubly impressive. I don't have the words to express it as strongly as I'd like, so I'll leave it at a simple "Well done."
4:50 How do you avoid performance issues by subdividing the polygons? It seems like it would slash rendering performance if you render two to three time the triangles or more for closer objects!
I put some work in to radically reduce the overhead of triangle drawing. This means that triangle drawing time is now largely dominated by texture mapping, which is a reasonable tradeoff because subdivided polygons are smaller anyway and so require less texture mapping work. Also, subdivided polygons don't need to go through vertex transformation to view space: I can just pick a point halfway between the parent polygon vertices to use as the new vertex. This also saves a lot of processing time. All that aside, it definitely does have a performance impact. It's a bit difficult to quantify just how much since implementing it required changing other aspects of the rendering code too, but disabling it looks to produce a roughly 5-10% speedup. That's sufficiently low that I don't think that having it enabled by default is an issue though.
@@jsbarretto So this is how games have so many divided triangles on the PS1 to combat the texture warping and distortion without destroying the performance?
@@MatthewCenance Yes. I think PS1 games do this subdivision in software so I imagine many of them use different approaches. I don't know exactly how they work, this is very much my own spin on how I personally think it should be implemented.
Mode-7 gives you 60 fps. AtariJaguar already implemented this linear interpolation in hardware. Famously, it only worked with 16 bits and not 64. But GBA is 16 bit outside of the CPU. It would have been a perfect match. Instead we got this Argonaut sprite rotation hack and limited mode-7. Just allow mode-7 to render to VRAM and to pull from eWRAM!
This looks really good compared to the last edition! you're making progress very fast, and I'm excited to see how things go from here. One thing I'd recommend is turning down the volume of the game during sections while you are speaking. It wasn't too bad during sections that only had the ingame music, but Mario was so loud campared to you! 😅