Talks to Watch

Finding the BEST sine function for Nintendo 64

418K views · Jun 24, 2023 · 26:41 · 2 HN recommenders · 8 mentions · discussed 2023–2026

Kaze Emanuar searches for the best sine approximation for the Nintendo 64, comparing the lookup tables in Mario 64 and Ocarina of Time with polynomial alternatives. It walks through numerics and 3rd, 4th and 5th order approximations.

Why Hacker News points people here: Cited in discussions of sine implementations and whether lookup tables beat computation on memory-bound hardware.

“This guy puts a lot of work into figuring out if there is a faster way to do trig calcs on the N64”HN comment, 2024

What Hacker News said 8

RecommendseskaMar 2024

“You might also find this video interesting”

N64 sine optimization

Full comment

You might also find this video interesting: "Finding the BEST sine function for Nintendo 64" this video

in “How do computers calculate sine?” · view on HN
RecommendsqingcharlesAug 2024

“This guy puts a lot of work into figuring out if there is a faster way to do trig calcs on the N64”

Faster N64 trig than SM64 used

Full comment

Yeah, I used a ton of trig tables for software renderers in the late 80s/early 90s, but I'm just throwing ideas out there, since I've seen a lot of really great optimizations recently that were mostly missed during that time. This guy puts a lot of work into figuring out if there is a faster way to do trig calcs on the N64 than was used in SM64 (spoiler: there is): this video Jez (CEO of Argonaut) once offered me an interview for the Starfox/DSP team, so I almost worked on this thing. He was very active on the coding groups on Usenet around that time.

in “SNES Coprocessors: DSP-1 and Friends” · view on HN
RecommendsqingcharlesAug 2024

“This is the video that got me thinking”

Prompted rethinking of old optimizations

Full comment

This is the video that got me thinking: this video I was writing software texturers etc in the late 80s/early 90s, and even recently I've seen x86 people humble me with all sorts of info that I had no idea about at the time, concerning pipelining etc. I would just sit all day randomly reordering assembler instructions and reprofiling teapot renders to see if anything would move the needle.

in “SNES Coprocessors: DSP-1 and Friends” · view on HN
Cites itqingcharlesOct 2023

“this video dives into those LUTs and brings them into question”

Questions Mario 64 sine lookup tables

Full comment

I always used to use lookup tables for sin/cos in the days of software 3D rendering. The developers of Mario 64 did the same, but this video dives into those LUTs and brings them into question: this video

in “You (Probably) Shouldn't Use a Lookup Table” · view on HN
Cites itqingcharlesNov 2023

“That recent Mario 64 rewrite has me questioning everything.”

Mario 64 optimization rewrite

Full comment

These are the sorts of questions I would like to solve. Were we mistaken in using fixed point for everything? Are there actually faster ways of doing most of these tasks. That recent Mario 64 rewrite has me questioning everything. At least Nintendo's first party developers made the same mistake, and they had the hardware guys right there. this video

in “RIP Google Groups Dejanews.com Archive” · view on HN
Cites itboricjApr 2025

“Kaze Emanuar has two entire videos dedicated to optimizing sin() on the Nintendo 64”

Approximate sin() works well on N64

Full comment

It's not useless if it's good enough for the problem at hand. Kaze Emanuar has two entire videos dedicated to optimizing sin() on the Nintendo 64 and he's using approximations like this without issues in his homebrew: - this video - link

Cites itsomatMar 2026

“the Nintendo64 was memory bound under most circumstances”

N64 is memory bound

Full comment

Not just modern machines, the Nintendo64 was memory bound under most circumstances and as such many traditional optimizations (lookup tables, unrolling loops) can be slower on the N64. The unrolling loops case is interesting. Because the cpu has to fetch more instructions this puts more strain on the memory bus. If curious, On a N64 the graphics chip is also the memory controller so every thing the cpu can do to stay off the memory bus has an additive effect allowing the graphics to do more graphics. This is also why the n64 has weird 9-bit ram, it is so they could use a 18-bit pixel format, only taking two bytes per pixel, for cpu requests the memory controller ignored the 9th bit, presenting a normal 8 bit byte. They were hoping that by having high speed memory, 250 mHz, the cpu ran at 90mHz, it could provide for everyone and it did ok, there are some very impressive games on the n64. but on most of them the cpu is running fairly light, gotta stay off that memory bus. this video (Kaze Emanuar: Finding the BEST sine function for Nintendo 64)

in “Even Faster Asin() Was Staring Right at Me” · view on HN
CriticalpsychphysicJun 2023

“I find him a bit abrasive even though I enjoy his videos”

Full comment

I find him a bit abrasive even though I enjoy his videos (and actually submitted this a couple days ago). It's alot of cool work, but the way he presents it to laymen is kind of annoying. Even if he had never heard of data orientated design in the original video series (where he claims to not know what its called when you organise data to improve throughput) he should by now because clearly he does huge amounts of research. (Case in point at 9:30[0] he talks about localised memory patterns as though he's the first to come up with it). Again, love his work, watch every video and even submit to HN because I think others would. But that doesn't mean he's not very annoying. [0] this video

in “Finding the best sine function for Nintendo 64” · view on HN