It’s not uncommon for him to finish the conversation with noting that he worked on Sega Saturn before the Nintendo 64, and the former was difficult to work with due to its particular architecture.
It’s not uncommon for him to finish the conversation with noting that he worked on Sega Saturn before the Nintendo 64, and the former was difficult to work with due to its particular architecture.
It's also been a huge pain to emulate.
Isn't that still the case? I know that quads are used quite a lot for modelling but is there any modern system which uses quads for rendering?
Huh? Can you elaborate on how a triangle has 2 edges opposed to 3?
Basically, the way it works is that you arrange the 3 vertices of a triangle from top to bottom, then take the middle vertex and split the triangle along the scanline from that vertex to the opposite edge. Each "half" of the triangle can be rendered by simply drawing a scanline between the two edge positions, stepping down to the next line, advancing the two edge positions, and repeating. (See "Bresenham's line algorithm" and "Digital differential analyzer" on wikipedia for efficient ways to compute the edge positions.) Note that if the middle vertex shares a scanline with another vertex, the other "half" of the triangle in this algorithm has a height of zero lines, and can just be ignored.
It's a simple, straightforward way to rasterize a triangle that can be implemented efficiently.
I'm waiting on the mail for a flash cartridge to run ROMs on retail hardware, so for now I use the mupen64plus emulator on Mac OS X, but also a more accurate (but slower) one called CEN64 from time to time. Nintendo 64 emulators are kind of odd; the popular ones don't really "emulate" a game console the way I would have expected.
Sometimes I post pictures of my progress on Twitter if you're interested: https://twitter.com/danielsavface/status/1258896460604555264
The short answer seems to be to use either SGI's N64 SDK and a modern toolchain (https://github.com/trhodeos/modern-n64sdk) or libdragon (https://dragonminded.com/n64dev/libdragon/). The latter comes at the cost of not having built-in support for 3D (but it seems like there's enough there to take a DIY approach) and also being incompatible with most emulators (which "cheat" a bit by intercepting calls to the original libultra instead of directly emulating all the hardware). One could also run SGI's original compilers/toolchain, whether on a Linux system (using qemu-irix, which is what the folks over at https://github.com/n64decomp have been doing) or on a Windows 98 VM.
The N64Homebrew subreddit (https://www.reddit.com/r/N64Homebrew/) is also a pretty useful resource.