Welcome, Guest!

Here are some links you may find helpful

Advanced N64 Video Interface (VI) Register hacking (Resolution & Color Depth)

Goemon

Well-known member
Original poster
Registered
Feb 15, 2020
50
33
18
AGName
Goemon
AG Join Date
2005
Today I made a few new VI Filter cheats and stumbled on somthing which could maybe help to improve some N64 games.
I am no expert at all and it would be nice if somebody with deeper knowledge could have a look and maybe comment.

We all know that the VI Filters are just some flags or switches.
I made cheats for the game Mystical Ninja 64 US/EU/JP.
When I did the japanese version, I found out, that it uses a interlaced resolution.
The US and EU version are not.
I then checked :
and compared the japanese and US version of the game in Nemu0.8.

From what I found on the pages above, the resolutions, interlaced modes and the color depth for the games are also set by flags.
For the Mystical Ninja JP/US Game the following line is different:
---------
0x04400010 - VI_CURRENT_REG or VI_V_CURRENT_LINE_REG - VI current vertical line (Read/Write)
Bit Expl.
0-9 current half line, sampled once per line - Writes clears interrupt line
current half line, sampled once per line (the lsb of V_CURRENT is constant within a field, and interlaced modes gives the field number - which is constant for non-interlaced modes) - Any write to this register will clear interrupt line
----------
So if I read that right, we should be able to change the interlaced mode of the japanese version to match it with the US and EU version with a simple cheat.

That made me thinking.
According to the one page above the video interface performs the following functions.
  1. Creates signal timing when outputting to television monitor.
  2. Specifies resolution and depth of color frame buffer.
  3. Transfers from color frame buffer to video DAC (D-A converter) and specifies filters used during transfers.
  4. Provides current display position information.
We all know that almost all games run in 16Bit color mode and this is creating the nasty dither effect.
The game Quake 2 uses the the Expansion Pak only for the reason to increase the color depth to 24bit(32bit)
So now here is the question: Would it be possible to create cheats to manipulate the VI Registers and change the depth of color frame buffer and utilize the Expansion Pak for the extended color informations like Quake 2 did? The one doc above speaks also about VI_DRAM_ADDR_REG maybe we can manipulate all that with cheats?
This is propably not as easy as the VI Filter cheats but if possible it would make many games much nicer and the damn Expansion Pak gets finally more sense.
(in that regard, it made me wonder why nobody tried that with Mario 64, now that the game has proper source code to compile? All that Flags and VI settings should be in some of the make files.)

It would be nice the see some feedback here.
 

Make a donation