Succeeded in running Java on 'NINTENDO 64' released in 1996



Mr.

Mike Cohn has succeeded in executing Java programs on the ' NINTENDO64 ', a stationary game machine released by Nintendo in 1996.

Michael Kohn - nintendo64 java
https://www.mikekohn.net/micro/nintendo64_java.php

It seems that Mr. Kohn did not play with Nintendo 64 in his childhood, but he seems to have been interested in the fact that Nintendo 64 is equipped with MIPS (custom made VR4300 ) in the CPU and is based on SGI Indy. . Mr. Kohn has developed a tool called `` Java Grinder '' for natively executing programs written in Java on microcontrollers and game machines, and by using this, you can run Java programs on PlayStation 2 (PS2). ``I thought it would be relatively easy to run Java programs on NINTENDO64 , which supports the same MIPS,'' he wrote. However, NINTENDO64 has simpler hardware than PS2, so the implementation work is complicated, 'Frankly speaking, it was hard,' Mr. Cohn said.

According to Mr. Cohn, using Java Grinder to run a Java program on the Nintendo 64 took about two years, the same time it took to run a Java program on the PS2. . However, Mr. Kohn was working on various other projects and had a long break period, so he was purely working on a project to run Java programs on NINTENDO64 for two years. explains.



The first thing Kohn did was add an assembler to the RSP module naken_asm . Regarding the work, Cohn said, 'It's basically a scaled-down MIPS core with some very nasty vector instructions.' Compared to newer vector instruction sets like AVX and PS2, working with NINTENDO64 was more difficult.'

Therefore, Mr. Corn started from learning the hardware of NINTENDO64. As a result, he succeeded in adding some samples to ' samples/nintendo64 ' in naken_asm's GitHub repository. In addition, Kohn decided to write his own RSP routine to do all the 3D calculations, creating rsp.asm in the naken_asm examples directory. It seems that there were some standard RSP microcodes created by Nintendo and used by many game makers, and some open source microcodes, but the reason why I decided to create and use naken_asm is 'RSP routine I was interested in learning for myself how it works,' Cohn wrote.

Mr. Kohn's self-made Java program is `` Nintendo64.java '' `` n64/Rectangle.java '' `` n64/Triangle. It seems that there were only three objects called ' java '.

The NINTENDO64 has an RSP coprocessor, which it uses to do things like 3D rotation and projection. When I actually touched this, 'I found that the vector instruction of RSP was very difficult to handle,' Mr. Kohn said. RSP's vector instructions are mostly 16-bit only, there are no division instructions, only cumbersome reciprocal instructions and multiplication instructions. Therefore, Mr. Korn seems to be able to clear the screen, reset the Z buffer, process textures, rectangles, triangles, etc. using rsp.asm.

Next to RSP on NINTENDO64 is RDP, similar to GS on PS2. RDP takes a list of commands (draw rectangle, draw triangle, etc.) and executes them, but RSP or CPU software should do the calculations instead of RDP doing the calculations. So, NINTENDO64's RDP is very primitive compared to PS2's GS, Mr. Cohn said. Cohn wrote that the coding for this was 'pretty uninteresting and I burned out,' and as a result, many features could not be implemented in tools for running Java on Nintendo64. I'm explaining.

Mr. Kohn said that when actually testing the Java program, he used an EV64 cartridge that can read NINTENDO64 image files from a microSD card. In addition, it seems that the actual machine of NINTENDO 64 was purchased at Mercari.

Below is a video that actually runs Java on NINTENDO64.

Nintendo 64 Java Demo-YouTube


``Working on the Nintendo 64 wasn't very interesting, especially in 1996, when it was a very good and advanced computer, but to do simple things,'' Cohn said. It also required a lot of work, most game developers used RSP code written by someone else to make it easier to program, but I used my own to understand the system better. I chose to create this with.'

in Software,   Video,   Game, Posted by logu_ii