Custom Font Texture Not Loading (but others do)

Issue:
I am trying to use custom textures in Pokémon Sun but some of the textures (specifically font textures and the types banner texture) do not load and only use default textures. I am trying to use Volya’s HD Texture Pack for Pokémon Ultra Sun/Ultra Moon on Pokémon Sun/Moon. Even though the texture pack is made for a different game, all compatible textures appear to work except for the font textures and the types banner texture. I have tried dumping the textures for these games and renaming the new textures to the original texture filename to no avail. Interestingly, many of the texture pack files load in-game without having a matching filename which leads me to believe filename does not even matter. Any advice on how to get this to work?

System Information

  • Operating System: Windows 10 Pro 22H2 19045.3086
  • CPU: Intel(R) Core™ i5-6500 3.2GHz
  • GPU: NVIDIA GeForce GTX 960 4GB
  • Affected Citra Versions: Canary 2537 / Nightly 1938-1951 / Nightly 1895
  • Game: Pokémon Sun / Pokémon Moon v1.0/1.2
  • Screenshot of Issue:

Pokémon Ultra Moon - Correct

Pokémon Sun - Incorrect


image

Diagnostic Log
citra_log.txt (53.4 KB)

Not too long ago, our custom textures system was overhauled. So this may be because of that. We have legacy system for when an old texture pack is detected, but it isn’t perfect. You could try out an old Citra build to confirm this: Release nightly-1889 · citra-emu/citra-nightly · GitHub

I had already tried an older build as listed under system information. However, your suggested Citra version was even older so I tried that one too.
This time, instead of the font texture not loading properly, none of the custom textures loaded. Neither for Sun/Moon nor Ultra Sun/Ultra Moon. I verified that custom textures was enabled, toggled it on and off, and restarted Citra between.
I am not going to list it in affected versions in this thread as I believe that is a different issue.

Then it probably isn’t an issue with Citra but rather the texture pack. Keep in mind that these texture packs were made for Citra. So if they don’t work correctly, that’s usually an issue with the texture pack. If I recall correctly, the author of this pack took it down themselves, citing issues with it that they didn’t want to fix.

TL;DR Solution:

  1. Move pack.json from the texture dump folder to the custom textures folder.
  2. Rename the/each custom texture to match the name of the corresponding dumped texture.
    OR Copy the dumped texture from your dumped texture folder, place it in the custom texture folder, and modify that texture.

Essentially, this official guide for creating custom textures in Citra did not tell me that I needed to move the pack.json file from the texture dump folder to the custom textures folder in order to use newly dumped filenames.

Long Story

As I said before, even making custom textures was not working. I followed this very simple official guide and none of the textures I modified or made following this guide worked. This couldn’t have been a problem with the texture pack in question (at least not completely) as even making/modifying textures from scratch was not working. It is either a problem with Citra or my methods.
So I noticed when I was dumping textures that Citra was also creating a “pack.json” file. It isn’t a texture. Some other textures I had were loading fine and the guide only said to place my “custom texture .PNG files in the [custom textures] folder” so I assumed it was not something that I needed. I decided today to try and put it in my custom textures folder anyways, and it actually changed what textures loaded! All of the textures that were working from the downloaded pack stopped working, but all of the ones that I had renamed to match the dumped files now worked! All that I have to do now is rename all of the textures in the pack to match the filenames of the dumped textures, at least the compatible ones and the ones I care to rename.

Here is what was contained in pack.json.

pack.json
{
    "author": "citra",
    "version": "1.0.0",
    "description": "A graphics pack",
    "options": {
        "skip_mipmap": false,
        "flip_png_files": true,
        "use_new_hash": true
    }
}

I also noticed that when I set “use_new_hash” to “false”, the issue that I was having before persists. I am assuming then that “false” is the default setting for “use_new_hash” unless specified otherwise by this file.

Ah, right. I need to nag the dev to update that page again. Sorry for the inconvenience.

1 Like