Email or username:

Password:

Forgot your password?
Top-level
Joshua Barretto

I've fixed the horrible near plane clipping issues, added *very* basic collision resolution (literally 'snap to the top of the highest floor') and given him a drop shadow.

27 comments
snep

@jsbarretto excited for the triangle man video game where he defeats person man!!!

Joshua Barretto

@SnepperStepper Still trying to figure out whether I have the budget for a very slimmed down 3D model or whether I'm going to have to go for billboarding

snep

@jsbarretto i genuinely like whatever you've got going on in the preview, i believe there's a very valid and budget-friendly artstyle in there that will let you allocate that cash a bit more freely.

Joshua Barretto

@SnepperStepper It's pretty much the vanilla SM64 map but with flat shading (texturing is expensive). I've had to scale the resolution down from the GBA's native quite a bit though :(

snep

@jsbarretto oh yeah i definitely noticed the sm64 castle grounds map. I'm new to what you're doing and tbh game making in general- are you making a GBA port or something? I kinda assumed it was a familiar test location for something else.
All i was getting at with what i said previously was that the 3d enviroment scaled down like that is visually interesting imo.

Joshua Barretto

@SnepperStepper My initial goal was a port, but the system is so underpowered that I think I'm going to have to rewrite the whole thing from scratch. No idea how far I'll get, probably until it stops being fun 😄

snep

@jsbarretto hope you learn a lot no matter what the outcome! and always remember to archive and hold onto your files, you never know when something you macgyvered in your early days can help you out of a bind on something else down the road ;3

Joshua Barretto

I have implemented collision detection and resolution with the geometry mesh including wall and floor sliding...

...all without a single division operation (they're slow).

I spent ages trying to fix a mystery unsolid floor bug only to realise that the triangle frustum check was overflowing internally. Fixed-point maths sucks, makes me realise how painless and elegant floating point is in comparison.

Joshua Barretto

Are there any 3D modelling gurus that feel like taking a stab at an ultra low-poly Mario? I'm abysmal with Blender. Here's my attempt at simplifying the existing model, down to 172 polygons. Ideally, I'd like to get below 100.

Joshua Barretto

Texture mapping, mipmaps, and transparency support for today. Oh, and the game can now switch between stages.

I'm surprised by how performant these ended up being. Texture mapping roughly doubles the cost of the rasteriser inner loop but nothing else, mipmapping is basically free, and transparency support - after a lot of prodding - compiles down to a *single* assembly instruction in the inner loop.

That said, none of them are free so the game is gradually slowing down despite my best efforts.

Joshua Barretto

Here's a video of it all in action (minus mipmapping, I got that working less than an hour ago): youtu.be/K0ye--qxt-w

Joshua Barretto

Found some more time to work on this over the past week. The rasteriser is now significantly faster, the physics code is more rugged, I added a proper player model, and am now experimenting with some basic animations. It's starting to feel like... a thing?

Sean Earle

@jsbarretto This is ridiculously impressive, keep up the amazing work!

Eniko Fox

@jsbarretto low poly Mario is a delightfully weird lil guy

Joshua Barretto

@eniko Animation interpolation done entirely with shifts and adds, it's so janky. Good fun though.

Eniko Fox

@jsbarretto oh man I hope you post a whole workup on how you did all of those one day

Joshua Barretto

@eniko If I find the energy and time, I'd like to do that. There are some really neat tricks that went into making it all run at somewhat playable speeds. Video or blog post?

Eniko Fox replied to Joshua

@jsbarretto I'll consume either but a video would probably do gangbusters on YouTube

Joshua Barretto

Sadly, SM64's assets are - to use the technical term - 'borked as hell', with T-junctions and mesh cracks everywhere. That's fine on the N64 where floating-point and plenty of iffy triangle overdraw covers them up, but with the imprecision of fixed-point maths on the GBA it produces very visible and ugly gaps. I don't think there's a solution other than going in and manually fixing all of the assets by hand.

Joshua Barretto

I made a video showcasing my more recent changes, including much improved performance.

youtu.be/Ndo21b2FZYU

R. L. Dane :debian: :openbsd:

@jsbarretto

Duuuude! This is like a Mario 64 fever dream. 😅

Amazing work!

winden^capsule^batman.group

@jsbarretto mipmaps are only needed if you need to optimize for a data cache.. did the GBA have a data cache at all??

Joshua Barretto

@winden It's more about making things look visually nice and avoiding horrible aliasing / noise in the distance. The GBA has no cache so the mipmappings have very little in the way of meaningful impact on performance.

nil :demisexual_flag: (U) [!].7z

@jsbarretto i wonder if you'd be better off using 2d sprites for mario

Go Up