Need help with N64 VC Injects

  • Thread starter Thread starter Memes1921
  • Start date Start date
  • Views Views 13,633
  • Replies Replies 86
  • Likes Likes 2

Memes1921

Well-Known Member
Newcomer
Joined
Apr 14, 2024
Messages
55
Reaction score
53
Trophies
0
XP
321
Country
United States
I’ll be keeping this first post updated with all the important info on what has been found so far on the Wii U VC emulator for the N64. I will still post new messages when I find some new things, but I will mainly update this message for any small or big updates. With that said, here's a quick summary of what's been found so far:

[RomOption]
RomType: Switches between 64 cartridge to 64DD floppy disk. *Make sure to read [64DD on Wii U VC]*.
UseTimer
: Can help with fixing games that only have sound.
n64PIF_TPak_Read: Unknown. Sets file path for Game Boy (Color) ROMs? Can only be found on the .rpx of Donkey Kong 64 (USA) and The Legend of Zelda: Ocarina of Time (USA).
n64PIF_TPak_Write: Unknown. Sets file path for Game Boy (Color) saves? Can only be found on the .rpx of Donkey Kong 64 (USA) and The Legend of Zelda: Ocarina of Time (USA).
MemPak: Enabling this can sometimes cause graphical issues or prevents progress in some games.
RetraceByVsync: If there is audio stuttering, try disabling this setting.

[Render]
CopyMiddleBuffer: Enable Frame Buffer emulation. If a game has flickering on some textures or on the black borders of the screen, try enabling this setting. Otherwise, if the game doesn't use FB effects and it stutters, try disabling this setting.
CopyDepthBuffer: Disabling this can sometimes get rid of slowdown in some games. Interestingly, enabling this setting has fixed a crash in Pokémon Stadium when viewing photos, but the game still freezes (at least you can restart the game from the Virtual Console menu, instead of needing to shut down the system every time).
CopyAlphaForceOne: Still unclear what it does exactly, but it fixes some missing shadows in Pokémon Stadium's menus.
CopyAlphaForceOne (Pokémon Stadium).png

ZClip: Setting it to 0 can fix incorrect Z-Clipping in some games.
ZClip (Doubutsu no Mori).png
ZClip (Extreme-G).png

DepthCompareLess: Moves 2D assets closer on the Z-Axis(?)
InitPerspectiveMode: Fixes how textures are rendered in chunks.
InitPerspectiveMode (Toy Story 2).png
InitPerspectiveMode (WinBack - Covert Operations).png

TexEdgeAlpha = Similar to "InitPerspectiveMode," it can be used to fix small 2D texture seams.
TexEdgeAlpha (Pokémon Stadium).png

NeedTileSizeCheck: Can be used to fix some 3D textures.
NeedTileSizeCheck (Pokémon Stadium).png

ForceRectFilterPoint: Disables bilinear filtering for 2D assets, can also affect backgrounds.

[Input]
StickLimit: Can be set to any range. Official .ini settings have this set to 80 or 90, but you can set it to lower values like 30.

[RSPG]
Skip: Disables video rendering.
RIntAfterGTask: Frame skips.
RDPInt: Not sure about what it does specifically. In Blast Dozer, the game softlocks on certain spots like when loading a save or playing the demo. The game freezes, yet the music keeps playing normally, for some reason. When this setting gets activated in Blast Dozer, the softlocks get fixed.

[CMP]
BlockSize: Sets the size of data to read in chunks? Blast Dozer has this set to 1C00, which transformed from hexadecimal to decimal equals 7168 (~7 KB).

[Idle]
;Handles Idle instructions (duh). Can sometimes fix softlocks or crashing in some games. Template is as follows:
Count = X
AddressX = 0xXXXXXXXX
InstX = 0xXXXXXXXX
TypeX = 1
;A true Idle address usually has 0x1000FFFF as the instruction. If you want to look for these addresses, launch the game on Project64, go to Debugger -> Memory -> Search and set the following:
Hex = Enabled
Type = Int32
Value = 0x1000FFFF
;You will see a list of addresses the game uses (if it uses any), note these addresses on the .ini file, following the template.
;There are also Psuedo Idle addresses that don't have 0x1000FFFF as the value but it's unclear how to look for them without using Nemu64 (I hate you, Nemu64). The Switch's configuration files sometimes have a mix of true and Psuedo addresses.

[BreakBlockInst]
;Redirects a specific address in RAM to another one, template is as follows:
Count = X
AddressX = 0xXXXXXXXX ;Target address
InstX = 0xXXXXXXXX ;Instruction
JmpPCX = 0xXXXXXXXX ;Address to redirect to
TypeX = 1

[SpecialInst]
;Not sure at the moment. Template is as follows:
Count = X
AddressX = 0xXXXXXXXX
InstX = 0xXXXXXXXX
TypeX = X ;Has 4 different values: 1, 2, 3, and 4
Since both the Wii U and Switch's N64 emulator were both developed by iQue (the Wii U emulator first ported into Super Mario 3D All-Stars, then to Nintendo 64 - Nintendo Switch Online/Nintendo Classics), we can take advantage of more Nintendo's official settings for games that weren't released on the Wii U VC lineup. Though it isn't straightforward; it requires some conversion for the settings to work correctly.
By extracting the .dtz file of the Switch's emulator (located in \romfs\titles\ROMID\ROMID.dtz) with CaVE Database Manager, we get the following extracted files:
.meta: The game's meta file. It lists things like the game tile, description, etc.
.cfg: The configuration file. The format is slightly different to the N64's .ini file, but it's basically the same.
.pcb: Not sure, doesn't seem important.
.nro: Not sure, not important.
.lua: Lua hacks for the ROM. It has more settings that aren't listed in the .cfg file like Cheats, RomPatch, FrameHackTicks, InsertIdleInst, etc. The values are written in decimal format, so you have to convert them back to hexadecimal.
.spv: Not important.
.rpt: Texture hacks. They are in the same format as the Wii U's texture patches, but loading them from the Wii U emulator can sometimes cause graphical glitches or crashing, so it's basically useless.
To decompress the .lua files, you can go to Decompiler to see what's in there. Keep in mind that there are some .lua hacks that can't be decompiled (Pretty sure starting with Paper Mario and Jet Force Gemini and then new releases), this is because Nintendo is using their own method of compiling the .lua hacks and unfortunately, nothing can be done about it.
Converting the settings from the Switch back to the Wii U is still unclear how to do so exactly. Here are some ways I tried converting the Switch settings back to the Wii U emulator:
Example from Super Mario 64's .cfg file.
Code:
;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
Code:
;Wii U
[VertexHack]
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
@YakiNeen mentioned the following for ExciteBike 64's type settings in the .cfg file:
Code:
Comparing Excitebike 64's official .ini between Wii U/Switch, I noticed this:

(Wii U)
[SpecialInst]
Count = 2
Address0 = 0x8000123C
Inst0 = 0x3C03800C
Type0 = 3
Address1 = 0x8007dc88
Inst1 = 0xA5240048
Type1 = 3


(Switch)
"SpecialInst": [
{
"Addr": "0x8007dc88",
"Inst": "0xA5240048",
"Type": "Lua_BeforeInst",
"Comment": ""
},
{
"Addr": "0x8000123C",
"Inst": "0x3C03800C",
"Type": "Lua_BeforeInst",
"Comment": ""
},


So, "Lua_BeforeInst" is "TypeX = 3". And "BreakLoop" is "TypeX = 1".
Probably "Lua_AfterInst" is type 2?
However, when I looked at Pokémon Snap's .cfg file and compared it to the Wii U's .ini file, I found that "TypeX = 3" was translated to the Switch as "Lua_AfterInst: 1", instead of "Type: Lua_BeforeInst", so the "Type" setting remains unclear.

------------------------

After looking carefully at the [SpecialInst] part of the Switch settings, I realized that the [SpecialInst] actually just refers to any hacks that are written on the .lua file of the Switch emulator.

For example, Extreme-G has this instruction:

Code:
      "Addr": "0x80073CAC",
      "Inst": "0x3C028009",
      "Type": "Lua_AfterInst",
      "Comment": ""

What this instruction does is recall the .lua file to see what the emulator has to do when said address and instruction matches the script and virtual memory. The "type" part on the Switch settings file probably just means WHEN the code is executed (which is irrelevant to the Wii U's "Type" setting, but I'll explain that later).

And that special instruction recalls this code on the .lua script (the addresses and instructions are A0_5 and A1_6 respectively in decimal form):

Code:
function L0_0(A0_5, A1_6)
  local L2_7

...

  elseif A0_5 == 2147957932 and A1_6 == 1006796809 then
    L2_7 = n64MemWrite32
    L2_7(2148103840, 901)

Now, I'm kind of theorizing on how the "Type" part can be translated for the Wii U, so stay with me on this one.

I was looking up 3DS homebrew stuff online out of curiosity, and I found out about this thread that details Game Boy link cable patches for the Pokémon Virtual Console games and how they work. I was reading through the documentation this deleted user wrote and I noticed that the layout of the configuration file is a lot similar to that of the Wii U's N64 emulator. I don't have a confirmed source on this, but I think I saw somewhere that most of the 3DS and Wii U VC emulators were developed by the same company, except for the GBA and DS emulators, which were developed by M2 and NERD respectively, so that leads me to believe that the "Type" setting might work the same way on the Wii U's N64 emulator.

For example, in Pokémon Gold Edition has this instruction:
Code:
[send_dummy]
Mode = 2
Address = 0x3E73F
Type = 33

According to this deleted user's notes, this is what "Type = 33" should do:
Code:
"* send_dummy *
Identified as Type 33.
This is taken into affect when the is sending zero bytes.
Set its Address to the beginning of the loop that is syncing sending zero bytes.

This leads me to believe that there might be more than just 4 "Type" settings in the Wii U emulator and that some types are game specific and others are for broader use. Though that leads to 2 questions: "How many type settings are and what does each of them do?"

But that's just a theory. A GAM-
Just a first glance at the setting already shows that this is going to be a tricky one. I still haven't figured out how I would translate this one, but my best guess would be to translate it to [RomHack] on the Wii U's .ini file. Here's how I would translate it:
Example from Dr. MARIO 64's .cfg file.
Code:
;Switch
"ModifyCC_Count": 3,
        "ModifyCC_0":{
            "DetectFlag": "1111010000",
            "Value4": "0x0c184240",
            "Value6": "0x011f1f1f",
            "Value7": "0x001f1f1f",
            "Value8": "0x01070707",
            "Value9": "0x01070707",
            "ModifyFlag": "1100000000",
            "NewValue8": "0x02070707",
            "NewValue9": "0x00070707"
        },
        "ModifyCC_1":{
            "DetectFlag": "1111000000",
            "Value6": "0x011f1f1f",
            "Value7": "0x00050003",
            "Value8": "0x01070707",
            "Value9": "0x00070707",
            "ModifyFlag": "110000000000",
            "NewValue10": "0x6",
            "NewValue11": "0x1"
        },
        "ModifyCC_2":{
            "DetectFlag": "1111000000",
            "Value6": "0x041f1f1f",
            "Value7": "0x00050003",
            "Value8": "0x07040701",
            "Value9": "0x00070707",
            "ModifyFlag": "110000000000",
            "NewValue10": "0x7",
            "NewValue11": "0x1"
Code:
;Wii U
;Before I start, note that the "DetectFlag" and "ModifyFlag" values are written in binary, so you need to convert them back to hexadecimal.
[RomHack]
Count = 3
Address0 = 0xF4300
;Address is both DetectFlag and ModifyFlag together (In this case, 11110100001100000000)
Type0 = 4
Value0 = a24:
;"Value5" is missing, so I added 4 extra blank bytes
0c 18 42 40 00 00 00 00 01 1f 1f 1f 00 1f 1f 1f
02 07 07 07 00 07 07 07
Address1 = 0x3C0C00
Type1 = 4
Value1 = a24:
;NewValue10 & 11 are added as if it was written as "NewValue10": "0x00000006" for example,
01 1f 1f 1f 00 05 00 03 01 07 07 07 00 07 07 07
00 00 00 06 00 00 00 01
Address2 = 0x3C0C00
Type2 = 4
Value2 = a24:
04 1f 1f 1f 00 05 00 03 07 04 07 01 00 07 07 07
00 00 00 07 00 00 00 01
I still haven't had any luck with these, but it's still something.
From Shadow Man's .lua hack.
Code:
;Switch
BeforeVIFrameEnd = L0_0
function L0_0(A0_3, A1_4)
  local L2_5, L3_6, L4_7
  if A0_3 == 1161760 and A1_4 == 8392737 then
    L2_5 = n64GPRRead32
    L3_6 = 4
    L2_5 = L2_5(L3_6)
    L3_6 = n64GPRRead32
    L4_7 = 5
    L3_6 = L3_6(L4_7)
    L4_7 = n64GPRRead32
    L4_7 = L4_7(6)
    if L2_5 == 2150694912 and L3_6 == 0 and (L4_7 == 691200 or L4_7 == 307200) then
      n64InsertIdle(20, 1161760)
HookFunc_BeforeInst = L0_0
function L0_0(A0_8, A1_9)
  if A0_8 == 2992536 and A1_9 == 878941823 then
    n64InsertIdle(10, 2992536)
    n64GPRWrite32(3, 0)
(Focus only on the "n64InsertIdle" part and the "if, then" sections)
Code:
;Wii U
[InsertIdleInst]
Count = 2
Address0 = 0x0011B0A0
;Maybe address needs to be offset to RDRAM? Or maybe not...
;2nd value from the parentheses, "n64InsertIdle(20, 1161760)"
Inst0 = 0x00BFC6A1
;From "if A0_3 == 1161760 (Address) and A1_4 == 8392737 (Instruction) then
Type0 = 1
Value0 = 20
;1st value from the parentheses, "n64InsertIdle(20, 1161760)"
Address1 = 0x802DA998
Inst1 = 0x345F92DF
;From "if A0_8 == 2992536 and A1_9 == 878941823 then"
Type1 = 1
Value1 = 10
Type2 = 1
From Shadow Man's .lua hack.
Code:
;Switch
  n64ResetParameter("FrameTicks")
  if 2974528 == n64MemRead32(2147821432) then
    if n64MemRead32(n64MemRead32(2147991384) + 0) == 1313035008 and n64MemRead32(n64MemRead32(2147991384) + 4) == 916 and n64MemRead32(n64MemRead32(2147991384) + 8) == 13208 and n64MemRead32(n64MemRead32(2147991384) + 12) == 922 then
      n64SetParameter("FrameTicks", 783250)
    elseif n64MemRead32(n64MemRead32(2147991384) + 0) == 1313035008 and n64MemRead32(n64MemRead32(2147991384) + 4) == 4294967295 and n64MemRead32(n64MemRead32(2147991384) + 8) == 0 and n64MemRead32(n64MemRead32(2147991384) + 12) == 443 then
      n64SetParameter("FrameTicks", 783250)
    elseif n64MemRead32(n64MemRead32(2147991384) + 0) == 1313035008 and n64MemRead32(n64MemRead32(2147991384) + 4) == 367 and n64MemRead32(n64MemRead32(2147991384) + 8) == 5348 and n64MemRead32(n64MemRead32(2147991384) + 12) == 381 then
      n64SetParameter("FrameTicks", 783250)
    elseif n64MemRead32(n64MemRead32(2147991384) + 0) == 1313035008 and n64MemRead32(n64MemRead32(2147991384) + 4) == 372 and n64MemRead32(n64MemRead32(2147991384) + 8) == 5392 and n64MemRead32(n64MemRead32(2147991384) + 12) == 383 then
      n64SetParameter("FrameTicks", 783250)
    elseif n64MemRead32(n64MemRead32(2147991384) + 0) == 1313035008 and n64MemRead32(n64MemRead32(2147991384) + 4) == 378 and n64MemRead32(n64MemRead32(2147991384) + 8) == 5624 and n64MemRead32(n64MemRead32(2147991384) + 12) == 387 then
      n64SetParameter("FrameTicks", 783250)
(Only focus on the "FrameTicks" parts)
Code:
;Wii U
[FrameTickHack]
Hack0 = 783250
Hack1 = 783250
Hack2 = 783250
Hack3 = 783250
Hack4 = 783250
This list is kind of outdated, so if you want to check the updated list, go to the Wii U N64 VC Compatibility List website. Also, some of the .ini files here have an updated version with updated notes on the Compatibility List.

Banjo-Kazooie: Runs pretty much perfect. Configuration file here.

Banjo-Tooie: Still runs slow, but there are two things I noticed: 1. The game doesn't crash randomly that much as it used to before. 2. Maybe "RSPMultiCoreInt = 1" can improve slightly FPS with "RSPMultiCore"? The lag seems to be fixable, but it looks like it's somewhere in the "SpecialInst" section of the Switch configuration, as someone from the Switch Compatibility list posted a .dtz file before the game released on NSO and they had the same issues. Configuration file here.

Blast-Corps: Still refuses to boot. Not sure what it needs. Configuration file here.

CastleVania: The game runs fine. Some textures like scrolls have color rendered incorrectly and character portraits are black. Tried to mess with "TicksPerFrame" to fix intro's overclock but doesn't do anything. Maybe requires adding lag through [SpecialInst] or [RomOption]? Configuration file here.

Conker's Bad Fur Day: The game boots to a blue screen (Meaning the game did boot). However, nothing happens. Maybe something has to be done with the [RSPG] section. Configuration file here.

Doubutsu no Mori: Game runs almost flawless. However, frame buffer effects lack colors. Unfortunately, English translation by Zoinkity doesn't work as it's most likely that the ROM size is bigger than the original. Configuration file here.

Dr. Mario 64: Same issues as before. Mega vitamins don't render when falling. Something interesting to note is that on the demo, the Mega Vitamins DO render, as it most likely points out the emulator does have the ability to render those effects. The issue is most likely because the emulator fails to render the frame buffer as texture. Configuration file here.

Extreme-G: Works fine, though there is minor rendering issues at the intro. Configuration file here.

GoldenEye 007: Game runs choppy and slow. Character textures are loaded correctly, but other textures (Such as buildings) are not rendered/are invisible. Only ground textures are render if the player is near. May randomly crash. Configuration file here.

Iggy's Reckin' Balls: Seems to work fine. Doesn't seem to crash randomly anymore. Configuration file here.

Jet Force Gemini: Game boots but only shows Rareware logo and main menu textures are rendered incorrectly. May needs something in [RSPG] and/or [SpecialInst]? Configuration file here.

Mario Party: Works almost flawlesly. The camera seems to be misplaced a little back further when entering the bank, blocking the view of the stored items. Interestingly enough, the emulator fixes the issue if the ID is left as CLBE, but there is graphical glitches in the board's intro and the characters flicker when moving in between spaces. It seems that the emulator is forcing a setting if the ID gets changed to NMWE. Configuration file here.

Mario Party 3: Works perfect. Only needs to change ID to NMWE for the game to boot. Configuration file here.

Paperboy: Background is missing on copyright info and High Voltage Software (Giving a weird effect). With the Psuedo Idle address from the Switch's comaptibility thread, the game gets past level select (Wait a little) but runs slow like Banjo-Tooie. Configuration file here.

PilotWings 64: Doesn't boot. Tried changing the ID to the JPN version, still doesn't work. Configuration file here.

PilotWings 64 (JPN): Game boots. There is a weird effect in the whole game that makes it look like kind of like the intro of TLoZ: MM. There is major lag in file select screen and vehicle select. Game runs almost slow on most areas when playing. There is a strobe light effect when viewing photos that may cause seizure to some people (too bad Nintendo's dark filter can't fix that, can it?). Configuration file here.

Pokémon Puzzle League: Game works almost flawlessly. Character's boards are rendered incorrectly and background disappears, leaving garbage effects on screen. Unlike the PAL version, the game doesn't suffer from any audio nor speed issues. Configuration file here.

Pokémon Stadium: Game works mostly. The first caution screen is displayed incorrectly (may require [RomHack] to get fixed), viewing a picture in the gallery crashes the game (may require [SpecialInst]?). If you use a restore point on some areas (like selecting Pokémon before battling), some effects will be broken (like background missing). Configuration file here.

Pokémon Stadium 2: Works almost flawlessly. Only issue is that there is a weird graphical issue in character's dialog boxes and HP bars. Configuration file here.

Puyo Puyo Sun 64: Works fine. Use F-Zero X and "ForceFilterPoint" to remove black grid on screen. Configuration file here.

Rayman 2: The Great Escape: Game works with Psuedo Idle address, but there is severe graphical glitches. Specifically, character's polygons are not cropped correctly. Configuration file here.

Resident Evil 2: Still refuses to boot, even with new [Idle] addresses. Configuration file here.

Shadow Man: Still refuses to boot. Configuration file here.

SimCity 64 (64DD) (JPN): Refuses to boot. Requires a Bios in /content/DDROM/iplrom.n64. ROM needs to be a floppy disk format and not cartridge port. Configuration file here (and yes, I wrote those [Idle] addresses manually).

Snowboard Kids: Works almost flawlesly. With [Idle] address, you can sort of quit the shop but when actually purchasing something and quitting, game crashes. Most likely requires a Psuedo Idle address (Damn you, Nemu64). Configuration file here.

Star Twins (JPN): Same issues as USA version. Configuration file here.

Turok: Dinosaur Hunter: Game boots but there are some slight graphical glitches in the intro. Game randomly crashes. Configuration file here.

Turok 2: Seeds of Evil: Still refuses to boot. Configuration file here.

Win Back: Covert Operations: Game works almost flawlessly. Only slight issue is that there is a weird gray box flying around screen. Configuration file here.
The Wii U VC emulator has incomplete 64DD code, so don't get your hopes up for this one. Apparently, @LuigiBlood was the first one to find some traces of 64DD code on the Wii U VC emulator. If you want to test it out yourself, here's how you can set up 64DD injects in Ultimate Wii U Virtual Console Injection (UWUVCI):
1. Create an injection containing:
a. A random N64 cartridge
b. The .ini file for the 64DD game
c. The base VC game being Mario Kart 64 (you can also try a newer base like F-Zero X)
2. Click "Inject" BUT DON'T CLICK "WUP Installable" OR "Loadiine" YET!
3. Go to the folder directory you have UWUVCI installed and navigate to the temporary folder of the game you are injecting (Something/UWUVCI AIO/bin/temp/baserom).
4. Create a folder named "DDROM" inside "content" and make sure the bios is named "iplrom.n64" (or .z64, I guess?).
5. Replace the ROM inside "content/rom" with the N64DD game (Floppy Disk format, not Cartridge port).
a. Make sure the name of the 64DD ROM matches the name of the cartridge's name (in this case, "Unkte0.024" for Mario Kart 64 or "Ucfze0.242" for F-Zero X).
6. Go back to UWUVCI and then click "WUP Installable" or "Loadiine".
If you want, you can check out LuigiBlood's forum here. Again, the VC emulator has incomplete 64DD code, so there might be a chance that games won't work properly or even boot at all.

If you want to take a look at Nintendo's official decrypted Switch's .dtz files, here are the links for the USA and JPN regions:
USA: Google Drive
JPN: Google Drive
If you want to check out the Switch's Compatibility List for some extra settings hidden in some .dtz files, here's the link. You will need to use CaVE Database Manager to decrypt those .dtz files.

Aside from working and researching on the Wii U's N64 emulator, I also do some Custom TV Boot Screens for Wii U VC injections, here are the files if you are interested:
Version 1.2
Version 1.1
Version 1.0
If you want to create your own Custom Boot Screens, you can download the template from here. Keep in mind that you need to have the Rodin NTLG Pro (Bold) font installed in your computer and you also need to have Adobe Photoshop.
 
Last edited by Memes1921,
  • Like
Reactions: TiWill14 and CORE
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,
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,
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

Test
Post automatically merged:

Comparing Excitebike 64's official .ini between Wii U/Switch, I noticed this:

(Wii U)
[SpecialInst]
Count = 2
Address0 = 0x8000123C
Inst0 = 0x3C03800C
Type0 = 3
Address1 = 0x8007dc88
Inst1 = 0xA5240048
Type1 = 3

(Switch)
"SpecialInst": [
{
"Addr": "0x8007dc88",
"Inst": "0xA5240048",
"Type": "Lua_BeforeInst",
"Comment": ""
},
{
"Addr": "0x8000123C",
"Inst": "0x3C03800C",
"Type": "Lua_BeforeInst",
"Comment": ""
},


So, "Lua_BeforeInst" is "TypeX = 3". And "BreakLoop" is "TypeX = 1".

Probably "Lua_AfterInst" is type 2?
 
Last edited by YakiNeen,
  • Like
Reactions: Memes1921 and CORE
Test
Post automatically merged:

Comparing Excitebike 64's official .ini between Wii U/Switch, I noticed this:

(Wii U)
[SpecialInst]
Count = 2
Address0 = 0x8000123C
Inst0 = 0x3C03800C
Type0 = 3
Address1 = 0x8007dc88
Inst1 = 0xA5240048
Type1 = 3

(Switch)
"SpecialInst": [
{
"Addr": "0x8007dc88",
"Inst": "0xA5240048",
"Type": "Lua_BeforeInst",
"Comment": ""
},
{
"Addr": "0x8000123C",
"Inst": "0x3C03800C",
"Type": "Lua_BeforeInst",
"Comment": ""
},


So, "Lua_BeforeInst" is "TypeX = 3". And "BreakLoop" is "TypeX = 1".

Probably "Lua_AfterInst" is type 2?
I did noticed that too, but it doesn't seem to be straight forward. I have also compared some special instruction with Pokémon Snap that also has "TypeX = 3" defined (The only 2 Wii U releases that use special instructions) but that same special instruction on the Wii U that was carried over to the switch was rewritten as "Lua_AfterInst: 1" (Not "Type: Lua_AfterInst", just like how I wrote it). I have also realized that the Switch lacks other sections that the Wii U had like BreakBlockInst, so I'm speculating that some of the special inst from the Switch have to be distributed into different parts of the Wii U .ini file ( Thanks for helping out tho!).
I was dumb enough to realize just now that the "DetectFlag" part of modify cc was written in binary. I transformed it back to hexadecimal values and placed them on the "AddressX = 0x" part but I'm now confused about how to transform the "NewValue11: 0xX" parts to the "ValueX = a:" where it's just half of a byte. I think I could maybe use "TypeX = 1" where as the user has said before, it just swaps one byte.
I was also looking at the extra files that the decompressed .dtz files on the Switch has and I have also found some extra .rpt files. The big takeaway that these are patch files for specific games is that Nintendo recycled some files from the Wii U releases (Like Zelda OOT) and just copy-paste it on the .dtz file (With the name unchanged). The patch files can be placed for the Wii U in "ID of game/Content/Patch/ID of the Wii U N64 ROM (Ex: Ucfze0.242 (F-Zero X)". I did try to use these patches for some games but they cause weird stuff to happen; Pokémon Stadium's warning sign on the game just gets even more messed up and Extreme-G just refused to go further after the copyright info was shown.
One more thing, I was looking at an N64 NSO compatibility Google Sheet (https://docs.google.com/spreadsheet...YcqfE_hA58/edit?gid=1970937573#gid=1970937573) and I have found out how to get Idle addresses for any game. Unfortunatedly, I can't find Psuedo Idle addresses as they require Nemu64's debugging features and I can't get a single game to run in this very old emulator (I tried looking online but barely anyone talks about this emulator and the only people that had the same issue as me just said to use Project 64 T_T ). However, with the other Idle addresses, I was able to fix certain stuff in-game, like how on Snowboard Kids, the game would crash if exiting the Shop; with the Idle addresses, the bug is fixed.
Once again, I will post my progress so far some other day, but I'm currently busy with stuff and I still need time to process all of this at once. I did managed to get access to the Mature N64 app and now I have all of the configuration files for every game released on the Switch (I tried to upload the .zip to GBATemp but either I'm impacient to let it upload or it doesn't let me, so here is a Google Drive link)
 
Last edited by Memes1921,
Great to see others looking at this again. I think I will maybe pick things up again maybe get further progress.
 
  • Like
Reactions: Memes1921
(BioHazard 2) works perfect with minor texture issues mostly backgrounds where Mr X breaks through wall.

The wall is already broken before he breaks through background texture just needs swapped out etc.

Be nice to get the ROM translated or USA version to Boot.

(The World is not Enough) seems to work but lacks Audio I was hoping to find something between Bio Hazard 2 Emu Revision since they both use the same Factor 5 Audio Code or similar.

(Banjo Kazooie) Despite it working flawless it still lacks FrameBuffer Effect Pause Menu White Screen.
(Banjo Tooie) Boots with think it Trueboot=1 But needs to be disabled afterwards to get FPS Boost.
(DOOM 64) This game lacks the Vector like Map Display but Runs Perfect.

(Castlevania 64) Has always ran slighty too fast on every Emulator during intro and skips audio "Deep in his Castle Count Dracula Awakes" No biggy but call me perfectionist I fixed it with Tick Limiter = I think? works on CEMU but does not work via Wii U.

A lot of these glitches seem similar to other previous Emulators on PC etc maybe Code similarities , for example older Surreal 64 on OGXBOX (BanjoTooie) wont boot without Trueboot=1 you get glitchy view of landscape and water not sure what equivalent is for it and not to sure what revision that was but remember getting same issue but was later fixed.

For testing Loadiine comes in very handy since you can just swap out Ini's and ofcourse CEMU.
Ghidra and Radare also come in handy along with a Hexeditor to checkout what Function Calls etc work on each Revision of the Emulator since although mostly the same each Build has it's offsets for certain ROMs.

Decompilation Project , Not/Wii64 with Overclock and hope that maybe Clownacy will finish the Core for Retroarch or Standalone is other options but I like to try squeeze what can out of we working with here.
 
Last edited by CORE,
(BioHazard 2) works perfect with minor texture issues mostly backgrounds where Mr X breaks through wall.

The wall is already broken before he breaks through background texture just needs swapped out etc.

Be nice to get the ROM translated or USA version to Boot.

(The World is not Enough) seems to work but lacks Audio I was hoping to find something between Bio Hazard 2 Emu Revision since they both use the same Factor 5 Audio Code or similar.

(Banjo Kazooie) Despite it working flawless it still lacks FrameBuffer Effect Pause Menu White Screen.
(Banjo Tooie) Boots with think it Trueboot=1 But needs to be disabled afterwards to get FPS Boost.
(DOOM 64) This game lacks the Vector like Map Display but Runs Perfect.

A lot of these glitches seem similar to other previous Emulators on PC etc maybe Code similarities , for example older Surreal 64 on OGXBOX (BanjoTooie) wont boot without Trueboot=1 you get glitchy view of landscape and water not sure what equivalent is for it and not to sure what revision that was but remember getting same issue but was later fixed.

For testing Loadiine comes in very handy since you can just swap out Ini's and ofcourse CEMU.

(Castlevania 64) Has always ran slighty too fast on every Emulator during intro and skips audio "Deep in his Castle Count Dracula Awakes" No biggy but call me perfectionist I fixed it with Tick Limiter = I think? works on CEMU but does not work via Wii U.
I havent't tested out those games yet because my primary focus is to use the N64 NSO files for reference for those selected games but I have noticed 2 things:
1. "InitPerspectiveMode" seems to fix certain texture rendering stuff. I activated this setting in Win Back and it fixed the texture rendering issues with the characters and the helicopter. I have also found out that "ZClip" fixes some stuff rendering from behind (Like Animal Forest's speech bubbles or Extreme-G's camera misalignment). Though I speculate that to fix Biohazard's wall texture replacement, you might need to use [BreakBlockInst] and I'm not sure how to use it properly.
2. CEMU doesn't seem to be reliable for N64 emulation (At least for me). Not sure if I lack a powerful PC but CEMU has different results compared to installing the .wup files to the Wii U. Examples are Dr. Mario 64's background being missing in CEMU or Mario Party 1 having both the bank graphical glitch being fixed and the board being displayed correctly while on the Wii U, it's either one or the other. For the Mario Party 1 case, if you change the ID of the game to Mario Party 2's ID, the emulator will read the [RomHack] section correctly and will fix the board being displayed incorrectly, however, if you use the original ID of the game, the graphical glitch at the bank will get fixed, but the board will have some weird stuff going on and the characters are flickering, likely because the emulator is ignoring the [RomHack] section with the original ID.
 
  • Like
Reactions: tchp123
Well im glad to see someone else taking interest in this and going more in depth perhaps with the NSO extras can get more things running and a better understanding overall I have a Switch I am yet to put 2gather been laying in pieces for over a year maybe 2 fs lol. Added a adachip for auto payload. No Jig everytime. Just never got round to adding wires too it.

Loadiine is very useful for testing before packing into a WUP.
I run mine extracted WUP for N64 for this reason and NDS.

May need to get my Research upto speed it kind of got buried and I have other files on different drives that I never got round to updating findings.

But if you got time Keep it up the more the better:)
 
Last edited by CORE,
One more thing, can you explain how does Ghidra and Radare work? I tried to install it on my PC but it's confusing on where to start (Especially since I don't have that much of knowledge in coding but I'd like to learn more about it).
 
https://github.com/NationalSecurity...1.2.1_build/ghidra_11.2.1_PUBLIC_20241105.zip

https://github.com/radareorg/radare2/releases/download/5.9.8/radare2-5.9.8-w64.zip

https://github.com/0CBH0/wiiurpxtool/releases/download/v1.3/wiiurpxtool.zip

https://gbatemp.net/threads/tutorial-how-to-decompress-and-repack-rpx-rpl-files.399934/

https://github.com/Relys/rpl2elf/archive/refs/tags/v0.0.1.zip

It has been awhile but think it was a cmd prompt No GUI. converted to ELF so can hexedit away and search for certain strings etc. Like I mention earlier the Builds are different early Builds for example lack some functions [cheat] whereas the latest Build the F-Zero has all functions or most but cant Boot some games or if it does there is problems.

MarioGolf Build for example I think that the only Build that runs BioHazard 2 correct Video position etc.
The tools are pretty basic and straight forward I think there is another file or module for use with decompilers I need to find my old setups on one of my Laptops. I will get back to you but most is covered here and as for Coding ur just good if not better than me I would bet.

Not to sure about Legality of some things but think this all open source apart from RPX files themselves so obviously cant share those freely around.

Also some of the Functions might be just bogus
g_nN64CpuPC = 0 ;(CPU Function?) for example although most are legit commands / calls / functions etc.
 
Last edited by CORE,
Hey, Memes1921:
1. Wii U's N64 emulator can emulate Doubutsu no Mori's RTC?
2. For me, Snowboard Kids crashed when I exit from Shop Menu.
 
Hey, Memes1921:
1. Wii U's N64 emulator can emulate Doubutsu no Mori's RTC?
2. For me, Snowboard Kids crashed when I exit from Shop Menu.
1. I don't think the Wii U emulator can use RTC, as for me, it sets to 1985 at 8:00 PM I believe? It does get the date right. Regardless, it should be playable but you might need to reset the clock every time you reset the game.
2. The Idle addresses should have fixed that issue. Are you using the .ini file from the compatibility list and are playing the USA version? If you are using a different region for the ROM, you need to find them using Project64's debugging features as they are different for every region. Load your game, and search for the following on Debug -> Memory -> Search:
*Check "Hex Value" or something like that
*Make sure the type is set to "Inst32"
*On the bar, type "1000FFFF"
You will see a list of possible True Idle addresses you can test. I recommend using Loadiine or instaling the .wup file when you have finished creating your .ini file to test it as Cemu doesn't seem to be relaible for N64 VC injections (Or even official ones).

-EDIT-
I tried it on my Wii U as well and it does seem to still crash, I'm pretty sure that a Pseudo Idle address is needed. Though it requires Nemu64's debugging features and I can't get a game to boot. I will try to fix the issue.
 
Last edited by Memes1921,
  • Like
Reactions: tchp123
1. I don't think the Wii U emulator can use RTC, as for me, it sets to 1985 at 8:00 PM I believe? It does get the date right. Regardless, it should be playable but you might need to reset the clock every time you reset the game.
2. The Idle addresses should have fixed that issue. Are you using the .ini file from the compatibility list and are playing the USA version? If you are using a different region for the ROM, you need to find them using Project64's debugging features as they are different for every region. Load your game, and search for the following on Debug -> Memory -> Search:
*Check "Hex Value" or something like that
*Make sure the type is set to "Inst32"
*On the bar, type "1000FFFF"
You will see a list of possible True Idle addresses you can test. I recommend using Loadiine or instaling the .wup file when you have finished creating your .ini file to test it as Cemu doesn't seem to be relaible for N64 VC injections (Or even official ones).

-EDIT-
I tried it on my Wii U as well and it does seem to still crash, I'm pretty sure that a Pseudo Idle address is needed. Though it requires Nemu64's debugging features and I can't get a game to boot. I will try to fix the issue.
About Snowboard Kids:
I tried the injected again - stills crashing after exiting Shop Menu. The ROM is NTSC-U, base is F-Zero X NTSC-U, same INI file from compatibility's list website...
 
Hey, Memes1921, I have injected Banjo-Kazooie into F-Zero X with your .ini file and all SFX from the game are stutting. This happen with you?
 
Hey, Memes1921, I have injected Banjo-Kazooie into F-Zero X with your .ini file and all SFX from the game are stutting. This happen with you?
That doesn't happen with mine strangely enough, try to enable/disable "TicksPerFrame" and enable "AIUseTimer". See if that works.

-UPDATE-
Nemu64 finally works in my laptop. I will take advantage of this while I can to fix stuff that require Psuedo Idle addresses (If I can...).
 
Last edited by Memes1921,
  • Like
Reactions: tchp123
Regarding the Modify CC part of the Switch configuration files, I think I might know how to translate it.

As I said before, I noticed that the flag sections are written in Binary format, with an online converter, I can transform those value to Hexadecimal values and place them in the Address section. I assume that I can combine both "DetectFlag" and "ModifyFlag" into one single address since looking at the official WIi U configuration files, the addresses typically do not exceed more than 6 characters, and the Hexadecimal values of both flags from the Switch configuration files give 6 characters exactly. "TypeX = 4" seems to be the one to do the job to cover the "ValueX" and "NewValueX" part, though I'm still confused about the "NewValueXX" part (I'll explain that later). With all of that out of the way, here was my thinking on how can the values be translated for the Wii U (This is an example from the Dr. Mario 64 Configuration file):



;Switch:

"ModifyCC_Count": 1,

"ModifyCC_0":{

"DetectFlag": "1111010000",
"Value4": "0x0c184240",
"Value6": "0x011f1f1f",
"Value7": "0x001f1f1f",
"Value8": "0x01070707",
"Value9": "0x01070707",
"ModifyFlag": "1100000000",
"NewValue8": "0x02070707",
"NewValue9": "0x00070707"




;Wii U:

[RomHack]
Count = 1
Address0 = 0x3D0300
;"DetectFlag" is first, "ModifyFlag" is the 2nd part
Type0 = 4
Value0 = a20:
0c 18 42 40 01 1f 1f 1f 00 1f 1f 1f 02 07 07 07
00 07 07 07
;Last 8 bytes come from the "NewValueX" parts, instead of the "Value8" and "Value9" respectively.



I have only tested this specific part for Dr. Mario 64 only (Though I don't see any visual differences), I haven't tried this with any games yet and haven't tested on real console yet. When I mentioned the "NewValueXX" part, I refer that "NewValue10" and "NewValue11" are always written as half of a byte (Like 0x7). I thought I could use "TypeX = 1" on the Wii U since that type is used for a singular byte swap but then that will mean creating a new instruction specifically for that singular byte and "Modify_CC" instructions are supposed to be read as one instruction instead of 2 separate ones.
Post automatically merged:

I also got access to the Japanese N64 NSO files and now I have the configurations for the Japanese counterparts of those games (Since usually Japanese games have a greater chance to boot with the Wii U VC emulator than USA, so why not improve the games that only the Japanese version works?). Here is the Google Drive link: JPN N64 NSO Config Files. I also did some custom TV Boot screens for some N64 and NDS games, if anyone wants them: Custom TV Boot Screens
 
Last edited by Memes1921,
Regarding the Modify CC part of the Switch configuration files, I think I might know how to translate it.

As I said before, I noticed that the flag sections are written in Binary format, with an online converter, I can transform those value to Hexadecimal values and place them in the Address section. I assume that I can combine both "DetectFlag" and "ModifyFlag" into one single address since looking at the official WIi U configuration files, the addresses typically do not exceed more than 6 characters, and the Hexadecimal values of both flags from the Switch configuration files give 6 characters exactly. "TypeX = 4" seems to be the one to do the job to cover the "ValueX" and "NewValueX" part, though I'm still confused about the "NewValueXX" part (I'll explain that later). With all of that out of the way, here was my thinking on how can the values be translated for the Wii U (This is an example from the Dr. Mario 64 Configuration file):



;Switch:

"ModifyCC_Count": 1,

"ModifyCC_0":{

"DetectFlag": "1111010000",
"Value4": "0x0c184240",
"Value6": "0x011f1f1f",
"Value7": "0x001f1f1f",
"Value8": "0x01070707",
"Value9": "0x01070707",
"ModifyFlag": "1100000000",
"NewValue8": "0x02070707",
"NewValue9": "0x00070707"




;Wii U:

[RomHack]
Count = 1
Address0 = 0x3D0300
;"DetectFlag" is first, "ModifyFlag" is the 2nd part
Type0 = 4
Value0 = a20:
0c 18 42 40 01 1f 1f 1f 00 1f 1f 1f 02 07 07 07
00 07 07 07
;Last 8 bytes come from the "NewValueX" parts, instead of the "Value8" and "Value9" respectively.



I have only tested this specific part for Dr. Mario 64 only (Though I don't see any visual differences), I haven't tried this with any games yet and haven't tested on real console yet. When I mentioned the "NewValueXX" part, I refer that "NewValue10" and "NewValue11" are always written as half of a byte (Like 0x7). I thought I could use "TypeX = 1" on the Wii U since that type is used for a singular byte swap but then that will mean creating a new instruction specifically for that singular byte and "Modify_CC" instructions are supposed to be read as one instruction instead of 2 separate ones.
Post automatically merged:

I also got access to the Japanese N64 NSO files and now I have the configurations for the Japanese counterparts of those games (Since usually Japanese games have a greater chance to boot with the Wii U VC emulator than USA, so why not improve the games that only the Japanese version works?). Here is the Google Drive link: JPN N64 NSO Config Files. I also did some custom TV Boot screens for some N64 and NDS games, if anyone wants them: Custom TV Boot Screens
How you get the Wii U VC's font in the boot screen? Nice work, I want to try it by myself.
Post automatically merged:

Hey, 64DD games are working for you? When I inject F-Zero X: Expansion Kit (.z64 converted ROM), it boots in black screen.
Post automatically merged:

Just a update, Puyo Puyo Sun 64 can handle the N64's four players slots. Magical Tetris Challenge only two players.
 
Last edited by YakiNeen,
  • Like
Reactions: Memes1921

Site & Scene News

Popular threads in this forum