Homebrew Project [RELEASE] FriishProduce - multiplatform WAD injector

Amuro-san

Well-Known Member
Member
Joined
Jan 20, 2022
Messages
272
Trophies
0
Age
34
XP
709
Country
Brazil
what system are you trying to inject?
Super Nintendo, these are some like Donkey Kong Country 2 and 3 in PT-BR, another is Super Mario All Star in Spanish, there is also Joe & Mac European version, and Super Adventure Island I and II (both included native Spanish)
 

NecroNova

Well-Known Member
Newcomer
Joined
Sep 22, 2021
Messages
59
Trophies
0
XP
388
Country
United States
icon.png

Today I am rising out of the dead to announce a new project I've been working on for about a month now: introducing FriishProduce.

What is this?

FriishProduce is an automated WAD injector which allows for ROM/SWF replacement and customization in certain Wii VC channels. What's unique about it compared to other injectors? By handling many steps directly from the program's code, it bypasses several third-party assets & apps which may otherwise be required in Wii VC injection (such as Wii Common Key, and most of HowardC's tools). Some examples:
  • WAD/U8 handling using libWiiSharp
  • VC ROM injection through hex writing and/or file replacement - bye-bye AutoInjectuwad
  • Automatic banner/icon editing using VCBrlyt
  • Generates custom savedata image using original WAD's source TPL/WTE(s) - good riddance VCIconGen
  • Automatically edits savedata text where available using hex writing - Sayonara VCSaveInject
  • Additional content/emulator options for each platform where supported
  • Replace WAD contents with forwarder to auto-load specific emulator core and ROM
This was actually based off of an earlier project that I worked on back in 2020, until it was left abandoned and eventually wiped after my hard drive failed. I started work on a preliminary revision of FriishProduce for around three weeks before my then-seven-month-old drive also ended up failing, after which I coded the current version in about a week or so.

Platforms/FeaturesHow-toCredits


  1. Currently supported as of the latest release:
    • Nintendo Entertainment System (NES) / Famicom (Virtual Console/FCE Ultra GX)
    • Super Nintendo Entertainment System (SNES) / Super Famicom (Virtual Console/Snes9x-GX)
    • Nintendo 64 (Virtual Console/mupen64gc-fix94)
    • Sega Master System (Virtual Console)
    • Sega Mega Drive/Genesis (Virtual Console)
    • Shockwave/Adobe Flash
    • NES/Famicom:
      • Set custom palette
    • SNES/Super Famicom: N/A
    • Nintendo 64:
      • Clear all preinstalled VC textures (*.T64)
      • Fix brightness (remove dark/epilepsy filter)
      • 8 MB extended memory (Expansion Pak detection)
      • Auto-allocation of ROM size (supports up to 56 MB; not available in later revisions)
      • Fix crashes (not available in later revisions)
    • Master System & Mega Drive/Genesis:
      • Emulator configuration editor
      • Controller mapping
    • Shockwave/Adobe Flash:
      • Enable "Unsaved data" message in HOME Menu
      • Change SWF update rate (FPS?)
      • Enable save data; change total savedata size in KB
      • Strap reminder setting
      • Controller mapping to keyboard values


    Requisites

    • OS: Windows 7 or newer
    • Redistributables:
      • .NET Framework 2.0 (needed for libWiiSharp)
      • .NET Framework 4.7.2 and Microsoft Visual C++ Redistributable for Visual Studio 2019 (needed for ccf-tools)
    • Required by HowardC Tools:
      • ActiveX Control Pad
        • Setup: run in Windows XP (SP3) compatibility mode
      • comdlg32.ocx, comctl32.ocx and mscomctl.ocx
        • Download these files, then register them using regsvr32.
    Additionally, you will also need WAD files to be added to the applications's bases folder.
    When first opening FriishProduce, select a platform, then go to the next page, click the "+" button and search for a WAD. If it is supported by the current version of the database, then the WAD file will be copied to the bases folder.
    NES/Famicom
    • Kirby's Adventure (USA; EUR; JPN; KOR) - ROM CHR size: 32 x 8 KB; ROM PRG size: 32 x 16 KB
    • Ninja Gaiden (EUR/PAL60) - ROM CHR size: 16 x 8 KB; ROM PRG size: 8 x 16 KB
    • Super Mario Bros. 3 (USA; EUR; JPN; KOR) - ROM CHR size: 16 x 8 KB; ROM PRG size: 16 x 16 KB
    Your ROM size must not exceed the total of the base ROM embedded within the WAD.
    SNES/Super Famicom
    • Donkey Kong Country 2/Super Donkey Kong 2 (USA; EUR; JPN; KOR) - original ROM size: 4 MB
    • Mario's Super Picross (EUR/PAL60) - original ROM size: 1 MB; can support ROMs at least 4 MB
    Nintendo 64
    • Bomberman Hero (USA; EUR; JPN)
    • Custom Robo V2 (JPN)
    • F-Zero X (USA; EUR; JPN)
    • The Legend of Zelda: Ocarina of Time (USA; EUR; JPN)
    • Mario Golf (USA; EUR; JPN)
    • Mario Kart 64 (USA; EUR; JPN; KOR)
    • Mario Party 2 (USA; EUR)
    • Ogre Battle 64: Person of Lordly Caliber (USA; EUR/PAL60)
    • Sin and Punishment (USA; EUR/PAL60; JPN)
    • Star Fox 64/Lylat Wars (USA; EUR; JPN; KOR)
    • Super Mario 64 (USA; EUR; JPN)
    • Yoshi's Story (USA; EUR; JPN)
    Your ROM size must not exceed the total of the base ROM embedded within the WAD.
    Master System
    • Phantasy Star (USA; EUR) - emulator revision: v3
    • Sonic the Hedgehog (USA; EUR; JPN) - emulator revision: v2
    Mega Drive/Genesis
    • Comix Zone (USA; EUR; JPN) - emulator revision: v1
    • Pulseman (USA; EUR) - emulator revision: v3
    • Sonic the Hedgehog 3 (USA; EUR; JPN) - emulator revision: v2
    Shockwave/Adobe Flash
    • Flash Placeholder (USA; EUR) / Back to Nature (EUR)
    If you are using the Flash Placeholder, search for it at the MarioCube website > WADs > Flash Injects, then download the WAD corresponding to your Wii's region.

  2. See the Wiki for a more detailed explanation on setup & usage. TL;DR:
    1. Select a target platform, then browse for a ROM, and select a base WAD.
      • Optionally, you can also browse for a *.bps/*.ips to be patched to the ROM before injection.
    2. (Optional) Toggle the "Customize" checkbox, then fill in the relevant fields with the game's title, a shortened version thereof if needed, its release year and the number of players.
      • An image of the title screen is also recommended, but may not be needed if you are injecting a non-cosmetic ROM hack (e.g. a randomizer, TAS hack, etc.). Left click on the image field to browse for a new file, and right/middle click to remove it.
    3. Enter a title ID and change any content options to your liking.
    4. Save the WAD and you're done!

    Make sure you have a (v)Wii NAND backup in case anything goes wrong!


  3. This program uses the following third-party components and apps:
    • libWiiSharp (orig. author: Leathl), forked by WiiDatabase.
    • Floating IPS (Flips) by Alcaro.
    • ccf-tools (orig. author: paulguy) and BrawlLib (orig. author: soopercool101), both forked by libertyernie.
    • ROMC compressor by Jurai, with additional LZSS code by Haruhiko Okumura.
    • gbalzss by Andre Perrot, with additional LZSS code by Haruhiko Okumura.
    • LZSS by CUE.
    • HowardC's Tools (particularly, VCbrlyt).
    • For homebrew emulators compatiblity:
      • Waninkoko's NAND loader, retrieved from ShowMiiWads repo. (file renamed as "nandloader_wii.app")
      • FIX94's tiny-vwii-nand-loader. (file renamed as "nandloader_vwii.app")
      • Forwarder DOL generated from ModMii Classic (application author: XFlak) (file renamed as "forwarder.dol")
    I would also like to thank the following people:
    • SuperrSonic for reverse-engineering much of Wii software and official emulator code, and in particular, his fork of RetroArch Wii.
    • SaulFabre for archiving several tools and aiding in research & documentation.
    • Larsenv for his astounding work in the Wii homebrew community, and for originally disclosing a method for Flash WAD injection (GBAtemp thread).
    • And of course, the team at the 0RANGECHiCKEN release group, including lolsjoel, and the late G0dLiKe, without whose work this project would not have been possible.
    This application is distributed and licensed under the GNU General Public License v3.0.

Download

:download: Releases/Changelog (Github)
:arrow: Source code (GitHub)

Please note that this project is still in early beta stage and certain features may be subject to change or removal.[/Information

icon.png

Today I am rising out of the dead to announce a new project I've been working on for about a month now: introducing FriishProduce.

What is this?

FriishProduce is an automated WAD injector which allows for ROM/SWF replacement and customization in certain Wii VC channels. What's unique about it compared to other injectors? By handling many steps directly from the program's code, it bypasses several third-party assets & apps which may otherwise be required in Wii VC injection (such as Wii Common Key, and most of HowardC's tools). Some examples:
  • WAD/U8 handling using libWiiSharp
  • VC ROM injection through hex writing and/or file replacement - bye-bye AutoInjectuwad
  • Automatic banner/icon editing using VCBrlyt
  • Generates custom savedata image using original WAD's source TPL/WTE(s) - good riddance VCIconGen
  • Automatically edits savedata text where available using hex writing - Sayonara VCSaveInject
  • Additional content/emulator options for each platform where supported
  • Replace WAD contents with forwarder to auto-load specific emulator core and ROM
This was actually based off of an earlier project that I worked on back in 2020, until it was left abandoned and eventually wiped after my hard drive failed. I started work on a preliminary revision of FriishProduce for around three weeks before my then-seven-month-old drive also ended up failing, after which I coded the current version in about a week or so.

Platforms/FeaturesHow-toCredits


  1. Currently supported as of the latest release:
    • Nintendo Entertainment System (NES) / Famicom (Virtual Console/FCE Ultra GX)
    • Super Nintendo Entertainment System (SNES) / Super Famicom (Virtual Console/Snes9x-GX)
    • Nintendo 64 (Virtual Console/mupen64gc-fix94)
    • Sega Master System (Virtual Console)
    • Sega Mega Drive/Genesis (Virtual Console)
    • Shockwave/Adobe Flash
    • NES/Famicom:
      • Set custom palette
    • SNES/Super Famicom: N/A
    • Nintendo 64:
      • Clear all preinstalled VC textures (*.T64)
      • Fix brightness (remove dark/epilepsy filter)
      • 8 MB extended memory (Expansion Pak detection)
      • Auto-allocation of ROM size (supports up to 56 MB; not available in later revisions)
      • Fix crashes (not available in later revisions)
    • Master System & Mega Drive/Genesis:
      • Emulator configuration editor
      • Controller mapping
    • Shockwave/Adobe Flash:
      • Enable "Unsaved data" message in HOME Menu
      • Change SWF update rate (FPS?)
      • Enable save data; change total savedata size in KB
      • Strap reminder setting
      • Controller mapping to keyboard values


    Requisites

    • OS: Windows 7 or newer
    • Redistributables:
      • .NET Framework 2.0 (needed for libWiiSharp)
      • .NET Framework 4.7.2 and Microsoft Visual C++ Redistributable for Visual Studio 2019 (needed for ccf-tools)
    • Required by HowardC Tools:
      • ActiveX Control Pad
        • Setup: run in Windows XP (SP3) compatibility mode
      • comdlg32.ocx, comctl32.ocx and mscomctl.ocx
        • Download these files, then register them using regsvr32.
    Additionally, you will also need WAD files to be added to the applications's bases folder.
    When first opening FriishProduce, select a platform, then go to the next page, click the "+" button and search for a WAD. If it is supported by the current version of the database, then the WAD file will be copied to the bases folder.
    NES/Famicom
    • Kirby's Adventure (USA; EUR; JPN; KOR) - ROM CHR size: 32 x 8 KB; ROM PRG size: 32 x 16 KB
    • Ninja Gaiden (EUR/PAL60) - ROM CHR size: 16 x 8 KB; ROM PRG size: 8 x 16 KB
    • Super Mario Bros. 3 (USA; EUR; JPN; KOR) - ROM CHR size: 16 x 8 KB; ROM PRG size: 16 x 16 KB
    Your ROM size must not exceed the total of the base ROM embedded within the WAD.
    SNES/Super Famicom
    • Donkey Kong Country 2/Super Donkey Kong 2 (USA; EUR; JPN; KOR) - original ROM size: 4 MB
    • Mario's Super Picross (EUR/PAL60) - original ROM size: 1 MB; can support ROMs at least 4 MB
    Nintendo 64
    • Bomberman Hero (USA; EUR; JPN)
    • Custom Robo V2 (JPN)
    • F-Zero X (USA; EUR; JPN)
    • The Legend of Zelda: Ocarina of Time (USA; EUR; JPN)
    • Mario Golf (USA; EUR; JPN)
    • Mario Kart 64 (USA; EUR; JPN; KOR)
    • Mario Party 2 (USA; EUR)
    • Ogre Battle 64: Person of Lordly Caliber (USA; EUR/PAL60)
    • Sin and Punishment (USA; EUR/PAL60; JPN)
    • Star Fox 64/Lylat Wars (USA; EUR; JPN; KOR)
    • Super Mario 64 (USA; EUR; JPN)
    • Yoshi's Story (USA; EUR; JPN)
    Your ROM size must not exceed the total of the base ROM embedded within the WAD.
    Master System
    • Phantasy Star (USA; EUR) - emulator revision: v3
    • Sonic the Hedgehog (USA; EUR; JPN) - emulator revision: v2
    Mega Drive/Genesis
    • Comix Zone (USA; EUR; JPN) - emulator revision: v1
    • Pulseman (USA; EUR) - emulator revision: v3
    • Sonic the Hedgehog 3 (USA; EUR; JPN) - emulator revision: v2
    Shockwave/Adobe Flash
    • Flash Placeholder (USA; EUR) / Back to Nature (EUR)
    If you are using the Flash Placeholder, search for it at the MarioCube website > WADs > Flash Injects, then download the WAD corresponding to your Wii's region.

  2. See the Wiki for a more detailed explanation on setup & usage. TL;DR:
    1. Select a target platform, then browse for a ROM, and select a base WAD.
      • Optionally, you can also browse for a *.bps/*.ips to be patched to the ROM before injection.
    2. (Optional) Toggle the "Customize" checkbox, then fill in the relevant fields with the game's title, a shortened version thereof if needed, its release year and the number of players.
      • An image of the title screen is also recommended, but may not be needed if you are injecting a non-cosmetic ROM hack (e.g. a randomizer, TAS hack, etc.). Left click on the image field to browse for a new file, and right/middle click to remove it.
    3. Enter a title ID and change any content options to your liking.
    4. Save the WAD and you're done!

    Make sure you have a (v)Wii NAND backup in case anything goes wrong!


  3. This program uses the following third-party components and apps:
    • libWiiSharp (orig. author: Leathl), forked by WiiDatabase.
    • Floating IPS (Flips) by Alcaro.
    • ccf-tools (orig. author: paulguy) and BrawlLib (orig. author: soopercool101), both forked by libertyernie.
    • ROMC compressor by Jurai, with additional LZSS code by Haruhiko Okumura.
    • gbalzss by Andre Perrot, with additional LZSS code by Haruhiko Okumura.
    • LZSS by CUE.
    • HowardC's Tools (particularly, VCbrlyt).
    • For homebrew emulators compatiblity:
      • Waninkoko's NAND loader, retrieved from ShowMiiWads repo. (file renamed as "nandloader_wii.app")
      • FIX94's tiny-vwii-nand-loader. (file renamed as "nandloader_vwii.app")
      • Forwarder DOL generated from ModMii Classic (application author: XFlak) (file renamed as "forwarder.dol")
    I would also like to thank the following people:
    • SuperrSonic for reverse-engineering much of Wii software and official emulator code, and in particular, his fork of RetroArch Wii.
    • SaulFabre for archiving several tools and aiding in research & documentation.
    • Larsenv for his astounding work in the Wii homebrew community, and for originally disclosing a method for Flash WAD injection (GBAtemp thread).
    • And of course, the team at the 0RANGECHiCKEN release group, including lolsjoel, and the late G0dLiKe, without whose work this project would not have been possible.
    This application is distributed and licensed under the GNU General Public License v3.0.

Download

:download: Releases/Changelog (Github)
:arrow: Source code (GitHub)

Please note that this project is still in early beta stage and certain features may be subject to change or removal.
I gotta say, im absolutely excited that a new Injection tool for the Wii is finally being made for the modern-day convivence! Thank you for all the effort youve put into this!

I'd like to ask one question for this though, that being; Could Sonic 3D Blast be a base option in a future update? Reason i bring that game up specifically is because its 4MB's, and (to my knowledge) its the largest Genesis game on WiiVC, itd be greatly helpful for injecting more games into, in my opinion. Id also like to point out that for the Supported Bases list that, like NES & N64, Genesis (and possibly Master System) games cannot go over their Base Wad's original file size limit.

Edit: Im now experiencing a problem with games being stretched into widescreen for seemingly no reason. I have no idea if its due to one of the settings within the program, or if its something with the Base Wad. Every game ive tested (aside from one SNES game) has been affected by this issue, and im very confused as to how its happening.
 
Last edited by NecroNova,

SaulFabre

I like Yoshis and the Wii/Wii U scene.
Member
Joined
Feb 6, 2019
Messages
3,186
Trophies
2
Age
25
Location
Ecuador
Website
saulfabreg-wiivc.blogspot.com
XP
7,835
Country
Ecuador
I'd like to ask one question for this though, that being; Could Sonic 3D Blast be a base option in a future update? Reason i bring that game up specifically is because its 4MB's, and (to my knowledge) its the largest Genesis game on WiiVC, itd be greatly helpful for injecting more games into, in my opinion.
Sonic 3D Blast will be in the next update, but by now we're addressing some issues related to Sega Genesis / Sega Mega Drive VC injection.

Edit: Im now experiencing a problem with games being stretched into widescreen for seemingly no reason. I have no idea if its due to one of the settings within the program, or if its something with the Base Wad. Every game ive tested (aside from one SNES game) has been affected by this issue, and im very confused as to how its happening.
Maybe it's related to the emulator code.
SuperrSonic time ago made some widescreen patches for Nintendo 64 VC games, but not sure if there's for the rest of VC games, here: https://gbatemp.net/threads/hidden-n64-vc-widescreen-mode.575806/
Post automatically merged:

Id also like to point out that for the Supported Bases list that, like NES & N64, Genesis (and possibly Master System) games cannot go over their Base Wad's original file size limit.
Totally wrong, i injected some large games on base WADs with small roms and they still work fine.
On VC games which use roms as-is (raw format), you can inject roms of ANY size while it doesn't overpass the size limit set by the VC emulator.

For take an idea:
  • NES/Famicom VC - the WAD's original ROM sets the max size of the ROM you can use
  • SNES/Super Famicom VC - max ROM size: 4 MB (4096 kB)
  • Nintendo 64 VC - max ROM size: 32 MB (32768 kB)
  • NeoGeo VC - max ROM size: 52000000 bytes (49.5911 MB / 50781.25 kB) for rev1 WADs, 56000000 bytes / 54687.5 kB / 53.4058 MB for rev2 WADs, 61.210.688 bytes (58.3751 MB) / 62.259.264 bytes (59.3751 MB) for rev3 WADs
  • Sega Master System VC - max ROM size: 0,5 MB 512 kB
  • Sega Genesis / Sega Mega Drive VC - max ROM size: 5,25 MB (5376 kB)
  • PC Engine/TurboGrafx-16 HuCARD VC - max ROM size: 2,5 MB (2560 kB)
  • PC Engine CD/TurboGrafx-16 CD VC - max ROM size: none? (cause i injected many TG16 CD games of any size and they all booted fine)
  • MSX/MSX2 VC - max ROM size: 0,5 MB (512 kB)
 
Last edited by SaulFabre,

NecroNova

Well-Known Member
Newcomer
Joined
Sep 22, 2021
Messages
59
Trophies
0
XP
388
Country
United States
Sonic 3D Blast will be in the next update, but by now we're addressing some issues related to Sega Genesis / Sega Mega Drive VC injection.


Maybe it's related to the emulator code.
SuperrSonic time ago made some widescreen patches for Nintendo 64 VC games, but not sure if there's for the rest of VC games, here: https://gbatemp.net/threads/hidden-n64-vc-widescreen-mode.575806/
Great to hear that Sonic 3D Blast will be added in the next update!
Though on the topic of "now we're addressing some issues related to Sega Genesis / Sega Mega Drive VC injection", id like to also point out a problem with SMS (Master System) Injection i've been facing through my testing. It seems like whenever i make an inject, the next time i try to make one it throws this specific error at me;

friishproduceErrorScreenshot.PNG

Like with the Widescreen Stretching issue, i have no idea what this is caused by.
(Also, i know you said "Sega Genesis / Sega Mega Drive VC injection", but i believe since the Emulator's backends are similar, this issue should also be taken into consideration for possible future updates if there's no solution for this already)
 

SaulFabre

I like Yoshis and the Wii/Wii U scene.
Member
Joined
Feb 6, 2019
Messages
3,186
Trophies
2
Age
25
Location
Ecuador
Website
saulfabreg-wiivc.blogspot.com
XP
7,835
Country
Ecuador
Great to hear that Sonic 3D Blast will be added in the next update!
Though on the topic of "now we're addressing some issues related to Sega Genesis / Sega Mega Drive VC injection", id like to also point out a problem with SMS (Master System) Injection i've been facing through my testing. It seems like whenever i make an inject, the next time i try to make one it throws this specific error at me;

friishproduceErrorScreenshot.PNG
This was solved in the code, current version used LZSS for that but since it doesn't support LZ77 0x11 compression (which all newer main.dol file uses), we replaced it with WWCXTool for the next version.

Also, we fixed also some things on both Sega Master System and Sega Genesis VC injection, so for the next update it should be fixed.
 

NecroNova

Well-Known Member
Newcomer
Joined
Sep 22, 2021
Messages
59
Trophies
0
XP
388
Country
United States
Totally wrong, i injected some large games on base WADs with small roms and they still work fine.
On VC games which use roms as-is (raw format), you can inject roms of ANY size while it doesn't overpass the size limit set by the VC emulator.

For take an idea:
  • NES/Famicom VC - the WAD's original ROM sets the max size of the ROM you can use
  • SNES/Super Famicom VC - max ROM size: 4 MB (4096 kB)
  • Nintendo 64 VC - max ROM size: 32 MB (32768 kB)
  • NeoGeo VC - max ROM size: 52000000 bytes (49.5911 MB / 50781.25 kB) for rev1 WADs, 56000000 bytes / 54687.5 kB / 53.4058 MB for rev2 WADs, 61.210.688 bytes (58.3751 MB) / 62.259.264 bytes (59.3751 MB) for rev3 WADs
  • Sega Master System VC - max ROM size: 0,5 MB 512 kB
  • Sega Genesis / Sega Mega Drive VC - max ROM size: 5,25 MB (5376 kB)
  • PC Engine/TurboGrafx-16 HuCARD VC - max ROM size: 2,5 MB (2560 kB)
  • PC Engine CD/TurboGrafx-16 CD VC - max ROM size: none? (cause i injected many TG16 CD games of any size and they all booted fine)
  • MSX/MSX2 VC - max ROM size: 0,5 MB (512 kB)
Huh, that's absolutely strange. I could've sworn that would've been the case, since when i tried inputting a 4MB title into the Program (using the Sonic 3 Base), it gave me this error upon attempting to export the inject.
friishproduceErrorScreenshot2.PNG

(To be more specific, the rom was 4,096 MB's, which is below the intended amount you gave for the Genesis Label)
 

Amuro-san

Well-Known Member
Member
Joined
Jan 20, 2022
Messages
272
Trophies
0
Age
34
XP
709
Country
Brazil
Huh, that's absolutely strange. I could've sworn that would've been the case, since when i tried inputting a 4MB title into the Program (using the Sonic 3 Base), it gave me this error upon attempting to export the inject. View attachment 376786
(To be more specific, the rom was 4,096 MB's, which is below the intended amount you gave for the Genesis Label)
this happens to me with Donkey Kong Country 2 and 3 translated
 
  • Like
Reactions: SaulFabre

SaulFabre

I like Yoshis and the Wii/Wii U scene.
Member
Joined
Feb 6, 2019
Messages
3,186
Trophies
2
Age
25
Location
Ecuador
Website
saulfabreg-wiivc.blogspot.com
XP
7,835
Country
Ecuador
Huh, that's absolutely strange. I could've sworn that would've been the case, since when i tried inputting a 4MB title into the Program (using the Sonic 3 Base), it gave me this error upon attempting to export the inject. View attachment 376786
(To be more specific, the rom was 4,096 MB's, which is below the intended amount you gave for the Genesis Label)
currently the current version doesn't support these filesize limits i said, these will be avaliable in the next version.
By now, on 0.20, it will be the last version with the condition of that your rom mustn't overpass limit of the original rom file on the WAD.
 

MeXen

Well-Known Member
Member
Joined
Sep 6, 2022
Messages
289
Trophies
0
Age
38
Location
WutzerLund
XP
734
Country
Mexico
icon.png

Today I am rising out of the dead to announce a new project I've been working on for about a month now: introducing FriishProduce.

What is this?

FriishProduce is an automated WAD injector which allows for ROM/SWF replacement and customization in certain Wii VC channels. What's unique about it compared to other injectors? By handling many steps directly from the program's code, it bypasses several third-party assets & apps which may otherwise be required in Wii VC injection (such as Wii Common Key, and most of HowardC's tools). Some examples:
  • WAD/U8 handling using libWiiSharp
  • VC ROM injection through hex writing and/or file replacement - bye-bye AutoInjectuwad
  • Automatic banner/icon editing using VCBrlyt
  • Generates custom savedata image using original WAD's source TPL/WTE(s) - good riddance VCIconGen
  • Automatically edits savedata text where available using hex writing - Sayonara VCSaveInject
  • Additional content/emulator options for each platform where supported
  • Replace WAD contents with forwarder to auto-load specific emulator core and ROM
This was actually based off of an earlier project that I worked on back in 2020, until it was left abandoned and eventually wiped after my hard drive failed. I started work on a preliminary revision of FriishProduce for around three weeks before my then-seven-month-old drive also ended up failing, after which I coded the current version in about a week or so.

Platforms/FeaturesHow-toCredits


  1. Currently supported as of the latest release:
    • Nintendo Entertainment System (NES) / Famicom (Virtual Console/FCE Ultra GX)
    • Super Nintendo Entertainment System (SNES) / Super Famicom (Virtual Console/Snes9x-GX)
    • Nintendo 64 (Virtual Console/mupen64gc-fix94)
    • Sega Master System (Virtual Console)
    • Sega Mega Drive/Genesis (Virtual Console)
    • Shockwave/Adobe Flash
    • NES/Famicom:
      • Set custom palette
    • SNES/Super Famicom: N/A
    • Nintendo 64:
      • Clear all preinstalled VC textures (*.T64)
      • Fix brightness (remove dark/epilepsy filter)
      • 8 MB extended memory (Expansion Pak detection)
      • Auto-allocation of ROM size (supports up to 56 MB; not available in later revisions)
      • Fix crashes (not available in later revisions)
    • Master System & Mega Drive/Genesis:
      • Emulator configuration editor
      • Controller mapping
    • Shockwave/Adobe Flash:
      • Enable "Unsaved data" message in HOME Menu
      • Change SWF update rate (FPS?)
      • Enable save data; change total savedata size in KB
      • Strap reminder setting
      • Controller mapping to keyboard values


    Requisites

    • OS: Windows 7 or newer
    • Redistributables:
      • .NET Framework 2.0 (needed for libWiiSharp)
      • .NET Framework 4.7.2 and Microsoft Visual C++ Redistributable for Visual Studio 2019 (needed for ccf-tools)
    • Required by HowardC Tools:
      • ActiveX Control Pad
        • Setup: run in Windows XP (SP3) compatibility mode
      • comdlg32.ocx, comctl32.ocx and mscomctl.ocx
        • Download these files, then register them using regsvr32.
    Additionally, you will also need WAD files to be added to the applications's bases folder.
    When first opening FriishProduce, select a platform, then go to the next page, click the "+" button and search for a WAD. If it is supported by the current version of the database, then the WAD file will be copied to the bases folder.
    NES/Famicom
    • Kirby's Adventure (USA; EUR; JPN; KOR) - ROM CHR size: 32 x 8 KB; ROM PRG size: 32 x 16 KB
    • Ninja Gaiden (EUR/PAL60) - ROM CHR size: 16 x 8 KB; ROM PRG size: 8 x 16 KB
    • Super Mario Bros. 3 (USA; EUR; JPN; KOR) - ROM CHR size: 16 x 8 KB; ROM PRG size: 16 x 16 KB
    Your ROM size must not exceed the total of the base ROM embedded within the WAD.
    SNES/Super Famicom
    • Donkey Kong Country 2/Super Donkey Kong 2 (USA; EUR; JPN; KOR) - original ROM size: 4 MB
    • Mario's Super Picross (EUR/PAL60) - original ROM size: 1 MB; can support ROMs at least 4 MB
    Nintendo 64
    • Bomberman Hero (USA; EUR; JPN)
    • Custom Robo V2 (JPN)
    • F-Zero X (USA; EUR; JPN)
    • The Legend of Zelda: Ocarina of Time (USA; EUR; JPN)
    • Mario Golf (USA; EUR; JPN)
    • Mario Kart 64 (USA; EUR; JPN; KOR)
    • Mario Party 2 (USA; EUR)
    • Ogre Battle 64: Person of Lordly Caliber (USA; EUR/PAL60)
    • Sin and Punishment (USA; EUR/PAL60; JPN)
    • Star Fox 64/Lylat Wars (USA; EUR; JPN; KOR)
    • Super Mario 64 (USA; EUR; JPN)
    • Yoshi's Story (USA; EUR; JPN)
    Your ROM size must not exceed the total of the base ROM embedded within the WAD.
    Master System
    • Phantasy Star (USA; EUR) - emulator revision: v3
    • Sonic the Hedgehog (USA; EUR; JPN) - emulator revision: v2
    Mega Drive/Genesis
    • Comix Zone (USA; EUR; JPN) - emulator revision: v1
    • Pulseman (USA; EUR) - emulator revision: v3
    • Sonic the Hedgehog 3 (USA; EUR; JPN) - emulator revision: v2
    Shockwave/Adobe Flash
    • Flash Placeholder (USA; EUR) / Back to Nature (EUR)
    If you are using the Flash Placeholder, search for it at the MarioCube website > WADs > Flash Injects, then download the WAD corresponding to your Wii's region.

  2. See the Wiki for a more detailed explanation on setup & usage. TL;DR:
    1. Select a target platform, then browse for a ROM, and select a base WAD.
      • Optionally, you can also browse for a *.bps/*.ips to be patched to the ROM before injection.
    2. (Optional) Toggle the "Customize" checkbox, then fill in the relevant fields with the game's title, a shortened version thereof if needed, its release year and the number of players.
      • An image of the title screen is also recommended, but may not be needed if you are injecting a non-cosmetic ROM hack (e.g. a randomizer, TAS hack, etc.). Left click on the image field to browse for a new file, and right/middle click to remove it.
    3. Enter a title ID and change any content options to your liking.
    4. Save the WAD and you're done!

    Make sure you have a (v)Wii NAND backup in case anything goes wrong!


  3. This program uses the following third-party components and apps:
    • libWiiSharp (orig. author: Leathl), forked by WiiDatabase.
    • Floating IPS (Flips) by Alcaro.
    • ccf-tools (orig. author: paulguy) and BrawlLib (orig. author: soopercool101), both forked by libertyernie.
    • ROMC compressor by Jurai, with additional LZSS code by Haruhiko Okumura.
    • gbalzss by Andre Perrot, with additional LZSS code by Haruhiko Okumura.
    • LZSS by CUE.
    • HowardC's Tools (particularly, VCbrlyt).
    • For homebrew emulators compatiblity:
      • Waninkoko's NAND loader, retrieved from ShowMiiWads repo. (file renamed as "nandloader_wii.app")
      • FIX94's tiny-vwii-nand-loader. (file renamed as "nandloader_vwii.app")
      • Forwarder DOL generated from ModMii Classic (application author: XFlak) (file renamed as "forwarder.dol")
    I would also like to thank the following people:
    • SuperrSonic for reverse-engineering much of Wii software and official emulator code, and in particular, his fork of RetroArch Wii.
    • SaulFabre for archiving several tools and aiding in research & documentation.
    • Larsenv for his astounding work in the Wii homebrew community, and for originally disclosing a method for Flash WAD injection (GBAtemp thread).
    • And of course, the team at the 0RANGECHiCKEN release group, including lolsjoel, and the late G0dLiKe, without whose work this project would not have been possible.
    This application is distributed and licensed under the GNU General Public License v3.0.

Download

:download: Releases/Changelog (Github)
:arrow: Source code (GitHub)

Please note that this project is still in early beta stage and certain features may be subject to change or removal.

Can it run Rokko Chan SWF version?
 

RunningSnakes

Well-Known Member
Member
Joined
Jun 21, 2018
Messages
1,350
Trophies
1
Age
50
XP
4,801
Country
United States
As confirmed by Saul and @NecroNova , the Genesis injection surely has Issues using current 0.20.

In fact, in my testing, both Sonic 3 and Comix Zone have 0% compatibility using USA base wads. These are the only wads i have ever used besides Sonic 3D Blast, with 130+ positive results the old fashioned way.

But, using Pulseman, which i did not know was a viable option before, has worked on 90% of what i tested, including some EA games with sound. Although, using (Pulseman) as base wad, will always display a border during gameplay.

I have not tested anything other than Genesis at this point to give results.
 

CatmanFan

Anxious and regretful
OP
Member
Joined
Aug 14, 2016
Messages
1,963
Trophies
0
Website
www.youtube.com
XP
2,599
Country
Morocco
I've heard about these issues with Gen/MD and discussed it with Saul, who said it has something to do with the file order entered in ccfarc (his PR here), and that the application does not add any files that are 0 bytes (specifically, the edited emanual.arc, so I replaced it with a dummy 16byte file). However, I'm not sure if this has solved the problem since with my testing Sonic 3 will always load a black screen no matter what I tried, while Comix Zone only works on-and-off depending on changes I did to the code.
I'm currently working on a possible fix which should be rolled out in the next version.
 

SaulFabre

I like Yoshis and the Wii/Wii U scene.
Member
Joined
Feb 6, 2019
Messages
3,186
Trophies
2
Age
25
Location
Ecuador
Website
saulfabreg-wiivc.blogspot.com
XP
7,835
Country
Ecuador
I've heard about these issues with Gen/MD and discussed it with Saul, who said it has something to do with the file order entered in ccfarc (his PR here), and that the application does not add any files that are 0 bytes (specifically, the edited emanual.arc, so I replaced it with a dummy 16byte file). However, I'm not sure if this has solved the problem since with my testing Sonic 3 will always load a black screen no matter what I tried, while Comix Zone only works on-and-off depending on changes I did to the code.
I'm currently working on a possible fix which should be rolled out in the next version.
OK, @CatmanFan.
I compiled your code until your latest changes of yesterday, and i saw that your fix for Flash broke again Genesis.
If u checked my PR u rejected https://github.com/CatmanFan/FriishProduce/pull/24, i was trying hard for finally get this fix working but without breaking other VC console injection codes, such Genesis.

U could adapt again my PR for put a permanent fix for both Genesis/MD and Flash.
Post automatically merged:

@CatmanFan found the issue, i will push a commit later when i fix it. (PS: thanks for making me your collaborator for FriishProduce) :)
Post automatically merged:

@CatmanFan saw the cause of the issue but dont know how to fix it by myself, could u do it? I sent info on my Discord server.
 
Last edited by SaulFabre,
  • Like
Reactions: RunningSnakes

CatmanFan

Anxious and regretful
OP
Member
Joined
Aug 14, 2016
Messages
1,963
Trophies
0
Website
www.youtube.com
XP
2,599
Country
Morocco
Version 0.25 beta has been released.

I worked extensively with saulfabreg on this release to try and remove most bugs that have been addressed, as well as adding new features (see changelog).
NEO-GEO (with ROM injection method courtesy of sr_corsario), and MSX have been added and happen to be working so far based on our final tests
Non-native console support via emulator forwarders (GBA, PSX) may most likely be included in the next release(s).
 

Disorarara

Well-Known Member
Member
Joined
Sep 12, 2012
Messages
599
Trophies
1
Age
29
XP
1,183
Country
NBA Hangtime will load and play with a minor graphical glitch and some slowdown (comparable to using Wii64 Rice) using Mario Golf as the base .wad, NBA Showtime will seemingly load fine but hang right before any gameplay. I would highly recommend you guys try out injecting roms into Mario Golf as the base, it has a very nice compatibility that even Sin and Punishment doesn't have.
 

RunningSnakes

Well-Known Member
Member
Joined
Jun 21, 2018
Messages
1,350
Trophies
1
Age
50
XP
4,801
Country
United States
NBA Hangtime will load and play with a minor graphical glitch and some slowdown (comparable to using Wii64 Rice) using Mario Golf as the base .wad, NBA Showtime will seemingly load fine but hang right before any gameplay. I would highly recommend you guys try out injecting roms into Mario Golf as the base, it has a very nice compatibility that even Sin and Punishment doesn't have.

Thanks for posting this. A compatibility chart would be very useful if we all could contribute. I have done hundreds of injects but haven't kept track of which base i used. But now with FriishProduce making simple work of what took much more tedious time, i think a solid legitimate list could be achieved rather quickly. Only question is who could volunteer to maintain the master list?

Question: I'll try this later, but, does injected channels weights the same as the channel to be modified?

For instance, I think Megaman X as a Wii VC Channel weights 12MB or something like that... an injected rom will weight that too?
Yes, somewhere very close.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Psionic Roshambo @ Psionic Roshambo: By the power of Florida Man, I have the power!!! *Lifts up meth pipe* Meth Man!!! lol