Need help with N64 VC Injects

Memes1921

Member
OP
Newcomer
Joined
Apr 14, 2024
Messages
11
Trophies
0
XP
80
Country
United States
I'm trying to figure out how does the N64 Emulator works on the Wii U and improve the compatibility for more games. I have a few things I need help with:

1. Diddy Kong Racing: Despite the compatibility thread saying "Freezes Wii U on boot", I tried to test the game using F-Zero X as a base (Which apparently is the latest version of the emulator) and using the official .ini already made by Nintendo. The thing is, the game boots but doesn't display anything on screen. I figured it could be that I didn't have "RetraceByVsync" activated on the .ini file but it didn't do anything. I know I'm close to getting the game working and I just don't want to give up right now.

2. Dr. Mario 64: I also read on the compatibility thread that it doesn't display the mega vitamins on motion (Similar case with New Tetris). I'm pretty sure it has something to do with Auxiliary Frame Buffer effects not working correctly but according to CORE's research on the emulator (https://gbatemp.net/blogs/wiiu-n64-virtual-console-research.14384/), there doesn't seem to have any options that could be useful and I already tried most of the settings like "CopyColorBuffer" or "CopyMiddleBuffer".

If anyone is able to help me with these issues I would greatly appreciate it. I also don't want an answer like "Use vWii Overclocked" unless it can't be helped.
 

Memes1921

Member
OP
Newcomer
Joined
Apr 14, 2024
Messages
11
Trophies
0
XP
80
Country
United States
I have some things to share and update:

1. Diddy Kong Racing (USA): I was messing around with the official .ini and figured out that "Skip = 1" function located on the [RSPG] section was causing the game to show a black screen with sound, however, when I deactivated it, the game didn't load any textures for 3D Models and the frame is choppy and slow (At least you can kind of fix the sound delay if you activate "AIUseTimer = 1" on the [RomOption] section). Maybe someone can figure out how to use the [BreakBlockInst] section to load the textures correctly?

2. Pokémon Puzzle League (EUR): I have updated the compatibility list to show that the USA version doesn't work, however, the EUR version works. I assume theprevious person who was reporting the game accidentally mentioned the USA version instead of the EUR version. Anyways, the game doesn't play any sounds when the only 2 cutscenes in the entire game play and those cutscenes are slow. Everything works fine in the game but when getting into the gameplay, the boards and backgrounds are displayed incorrectly. I assume the background is gone when playing because when GFX effects play, they stay in the background and that causes a lot of lag. Otherwise, playable.

3. Conker's Bad Fur Day (USA): Being honest, I haven't played this game but I was curious. I was using the F-Zero X Emulator as a base and tried using the Donkey Kong 64 .ini to be able to boot the game. The game didn't work, however, it showed a blue square kind of off in the top-left side of the screen. I have read somewhere that someone was able to inject the game with the Banjo-Kazooie .ini file but that it ran slow and the audio was choppy. They didn't specify what base emulator they were using and if they made any modifications to the ROM itself (The Game being injected) and I couldn't find any more info on it. I have tried to use the .ini as they have mentioned but I still have the same result; tried swapping the ROM header with the JPN version, JPN Banjo Header but no luck. Maybe it's not working or it's just that my PC isn't able to emulate Wii U games correctly.

I still haven't fixed the mega vitamins issue in Dr. Mario 64 but I'm working on it (Maybe someone has info on how Nintendo fixed the issue on the N64 NSO emulator since technically both the Wii U and Switch emulator are the same). I have also been trying to open the Nintendo Puzzle Collection ROM to see if there is any good info to fix this issue since it looks the same as in performance as the Wii U VC emulator but it has the Frame Buffer working correctly and removes the transparency around the textures. I speculate that most .ini files with multiple regions will only work with their JPN original games and those other regions are just a copy-paste thing. I will also experiment with Rayman 2: The Great Escape because I got the game to boot but there is some weirdness going on that I need to fix. I'm not sure if anyone will help me at this point, but it's still nice to share some notes with current progress.
 
Last edited by Memes1921,

Memes1921

Member
OP
Newcomer
Joined
Apr 14, 2024
Messages
11
Trophies
0
XP
80
Country
United States
By the way, does anyone know if there's any tools on Cemu like a "memory viewer"? I want to experiment with trying to use memory values on the .ini files but because I have no computer science experience,I have no idea what I'm doing, so I just try to compare the memory of an N64 emulator running a game and the memory of Cemu running the same game to see if I have any leads. I also found it interesting, yet expected, that when looking at the official Rayman 2 .ini file, it has a memory address with some other stuff and out of curiosity, I booted up the game on Project64 and oppened the memory viewer and under 80000000 RAM, it has the same address with the same whatever this is (0x3C02800D), so I'm assuming that those values on the .ini files are just telling the Wii U's N64 emulator to read specific memory addresses correctly which may be a huge lead in improving the compatibility of more games (That is if you have enough patience and experience). I have also extracted the N64 NSO app and it was a little hard to figure out what was happening BUT I have found that on the folder ".nrr", there are some files with other files of the same .nrr extension to which I speculate those are the configurations files for the games, unfortunately, they are compressed but I'm figuring out how to decompress them and see if they have any leads for the Wii U emulator.

-UPDATE-
I actually realize that the configurations are stored on the same folder as the game in .dtz format but this is a huge goldmine to search (Example: 0100C9A00ECE6000\romfs\titles\N-1053_e\N-1053_e.dtz). You can decompress those configuration files with CaVE Database Manager and open the .cfg file. Unfortunately, I'm a little busy today and need to test these things some other day.
 
Last edited by Memes1921,

Memes1921

Member
OP
Newcomer
Joined
Apr 14, 2024
Messages
11
Trophies
0
XP
80
Country
United States
HUGE UPDATE
After testing for a while with the current games and some new ones, I have some good news and some bad news. First of all, it is lucky that the N64 NSO application seems to be relatively the same with the Wii U emulator, therefore, most of the configuration from the Switch can be properly translated into the Wii U's .ini configurations. However, it looks like the Switch implements new features to the emulator that may have been absent on the Wii U emulator. On the Switch's configuration file, it looks like there are 2 major roadblocks that prevents me from fixing certain issues on the Wii U's emulator: Those being the [ModifyCC] section and the [SpecialInst] section.

The special instruction section seemed to look straight forward... ...but the thing that screws me over is the "Type" part. The Switch has different types written compared to the Wii U. The Switch uses: BreakLoop, Lua_BeforeInst, and Lua_AfterInst (Sometimes there is a 1 written besides the type and other times it is written like "Lua_AfterInst": 1 instead of "Type": "Lua_AfterInst"). The Wii U uses numbers to define the type but I'm not sure what range of numbers does the Wii U emulator support, I have tested until 6 but I'm still not sure if there is more than that.

The modify cc section doesn't exist on the Wii U's configuration and that is a problem by itself. This is a big one because it does help with how the emulator renders certain things (For example, it fixes the invisible mega vitamin from Dr. MARIO 64). I speculate that it could be translated under [RomHack] but I really don't get what the heck is "DetectFlag" and how do I convert it to a virtual address for the emulator. Under Core's research on the emulator, an user named "JacobM" has written how does [RomHack] works but I'm not sure how to handle that section correctly as it sometimes even crashes CEMU when loading it to the Wii U's N64 emulator (Here is the link: https://gbatemp.net/blogs/wiiu-n64-virtual-console-research.14384).

I was able to translate the other sections like [Render], [Idle], [FilterHack], and [VertexHack]. For [VertexHack], here is how you translate it:

;Using Super Mario 64 as an example

;Switch:
"VertexCount" : 15,
"VertexAddress" : "0x000ff108",
"TextureAddress" : "0x001c6000",
"FirstVertex" :
{
"x" : "0x045d",
"y" : "0x0e00",
"z" : "0xf5b1",
},
"ReplaceVertex" :
[
{
"index" : "0x0003",
"x" : "0x1002
"y" : "0x0200
"z" : "0x1000
},
{
"index" : "0x0006",
"x" : "0x1002
"y" : "0x0100
"z" : "0x1000

;Wii U
[VertexHack]
;Tells the emulator how many things to process, I'm only showing 1 as an example
Count = 1

;Stays the same between each configuration file
VertexCount0 = 15
;I only removed the 1st two numbers since they are empty
VertexAddress0 = 0xff108
;I only removed the 1st two numbers since they are empty
TextureAddress0 = 0x1c6000
;This part is the "FirstVertex" part. "a6" tells the emulator how many bytes to read
FirstVertex0 = a6:04 5d 0e 00 f5 b1
;a# shows how many lines to read along with the 2 bytes (Example: 1 Line = a10:00 01, 2 Lines = a18:00 02, 3 Lines = a26:00 03, 4 Lines = a34:00 04, and so on...)
Value0 = a18:00 02
;First line of bytes from "ReplaceVertex". First 2 bytes are the "index", rest is "x", "y", and "z"
00 03 10 02 02 00 10 10
;Second line of bytes from "ReplaceVertex". First 2 bytes are the "index", rest is "x", "y", and "z"
00 06 10 02 01 00 10 00

As for the other games that weren't released on the Switch online service, unfortunately, I can't fix them since I don't even know where does Nintendo pulls these addresses from to fix stuff. It also looks like these games refuse to work correctly with only the preset settings. I'm guessing someone can open a memory viewer for both the Wii U emulator and the N64 emulator and compare them side-by-side to see which addresses and values need to be fixed. I will post some notes on the games I tested but I still need to test some more. I have also attached a .zip file containing some of the Switch's configuration files in case anyone wants to review them. I have only contained the games' configurations that weren't released on the Wii U's VC lineup with the exception of some games like Mario 64 to be able to compare them to their Wii U counterparts.
 

Attachments

  • N64 NSO Configuration files.zip
    16.6 KB · Views: 1

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    Veho @ Veho: WELL AIN'T THAT SOME SHIT (ain't that some shit) +2