Added TransmitMii 1.0

This commit is contained in:
Leathl 2009-12-04 00:10:46 +00:00
parent 65e5e0d865
commit bf34bcaaae
35 changed files with 781 additions and 10920 deletions

View File

@ -1,154 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{46B7F0BC-101B-4167-95AD-4C5D78AA0A20}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>CustomizeMii</RootNamespace>
<AssemblyName>CustomizeMii</AssemblyName>
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkSubset>
</TargetFrameworkSubset>
<ApplicationIcon>Resources\CustomizeMii.ico</ApplicationIcon>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.1.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="CustomizeMii_Main.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="CustomizeMii_Main.Designer.cs">
<DependentUpon>CustomizeMii_Main.cs</DependentUpon>
</Compile>
<Compile Include="CustomizeMii_Preview.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="CustomizeMii_Preview.Designer.cs">
<DependentUpon>CustomizeMii_Preview.cs</DependentUpon>
</Compile>
<Compile Include="CustomizeMii_InputBox.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="CustomizeMii_InputBox.Designer.cs">
<DependentUpon>CustomizeMii_InputBox.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="CustomizeMii_InputBox.resx">
<DependentUpon>CustomizeMii_InputBox.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="CustomizeMii_Main.resx">
<DependentUpon>CustomizeMii_Main.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="CustomizeMii_Preview.resx">
<DependentUpon>CustomizeMii_Preview.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<EmbeddedResource Include="Resources\comex.app" />
<EmbeddedResource Include="Resources\Waninkoko.app" />
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<Compile Include="Wii.cs" />
</ItemGroup>
<ItemGroup>
<Content Include="License.txt" />
<Content Include="Readme.txt" />
<Content Include="Instructions.txt" />
<None Include="Resources\CustomizeMii.ico" />
<None Include="Resources\Instructions.rtf" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
<Visible>False</Visible>
<ProductName>.NET Framework Client Profile</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
<Visible>False</Visible>
<ProductName>.NET Framework 2.0 %28x86%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
<Visible>False</Visible>
<ProductName>.NET Framework 3.0 %28x86%29</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@ -1,17 +0,0 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PublishUrlHistory>publish\</PublishUrlHistory>
<InstallUrlHistory>
</InstallUrlHistory>
<SupportUrlHistory>
</SupportUrlHistory>
<UpdateUrlHistory>
</UpdateUrlHistory>
<BootstrapperUrlHistory>
</BootstrapperUrlHistory>
<ErrorReportUrlHistory>
</ErrorReportUrlHistory>
<FallbackCulture>de-DE</FallbackCulture>
<VerifyUploadedFiles>false</VerifyUploadedFiles>
</PropertyGroup>
</Project>

View File

@ -1,119 +0,0 @@
/* This file is part of CustomizeMii
* Copyright (C) 2009 Leathl
*
* CustomizeMii is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* CustomizeMii is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
namespace CustomizeMii
{
partial class CustomizeMii_InputBox
{
/// <summary>
/// Erforderliche Designervariable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Verwendete Ressourcen bereinigen.
/// </summary>
/// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Vom Windows Form-Designer generierter Code
/// <summary>
/// Erforderliche Methode für die Designerunterstützung.
/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
/// </summary>
private void InitializeComponent()
{
this.tbInput = new System.Windows.Forms.TextBox();
this.lbInfo = new System.Windows.Forms.Label();
this.btnOK = new System.Windows.Forms.Button();
this.btnExit = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// tbInput
//
this.tbInput.Location = new System.Drawing.Point(7, 34);
this.tbInput.MaxLength = 3;
this.tbInput.Name = "tbInput";
this.tbInput.Size = new System.Drawing.Size(222, 20);
this.tbInput.TabIndex = 0;
//
// lbInfo
//
this.lbInfo.AutoSize = true;
this.lbInfo.Location = new System.Drawing.Point(4, 9);
this.lbInfo.Name = "lbInfo";
this.lbInfo.Size = new System.Drawing.Size(225, 13);
this.lbInfo.TabIndex = 1;
this.lbInfo.Text = "Please enter \"45e\" to create the Common-Key";
//
// btnOK
//
this.btnOK.Location = new System.Drawing.Point(7, 62);
this.btnOK.Name = "btnOK";
this.btnOK.Size = new System.Drawing.Size(108, 23);
this.btnOK.TabIndex = 2;
this.btnOK.Text = "OK";
this.btnOK.UseVisualStyleBackColor = true;
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
//
// btnExit
//
this.btnExit.Location = new System.Drawing.Point(121, 62);
this.btnExit.Name = "btnExit";
this.btnExit.Size = new System.Drawing.Size(108, 23);
this.btnExit.TabIndex = 3;
this.btnExit.Text = "Exit";
this.btnExit.UseVisualStyleBackColor = true;
this.btnExit.Click += new System.EventHandler(this.btnExit_Click);
//
// CustomizeMii_InputBox
//
this.AcceptButton = this.btnOK;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.btnExit;
this.ClientSize = new System.Drawing.Size(238, 92);
this.Controls.Add(this.btnExit);
this.Controls.Add(this.btnOK);
this.Controls.Add(this.lbInfo);
this.Controls.Add(this.tbInput);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Name = "CustomizeMii_InputBox";
this.ShowInTaskbar = false;
this.Text = "InputBox";
this.Load += new System.EventHandler(this.CustomizeMii_InputBox_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.TextBox tbInput;
private System.Windows.Forms.Label lbInfo;
private System.Windows.Forms.Button btnOK;
private System.Windows.Forms.Button btnExit;
}
}

View File

@ -1,64 +0,0 @@
/* This file is part of CustomizeMii
* Copyright (C) 2009 Leathl
*
* CustomizeMii is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* CustomizeMii is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace CustomizeMii
{
public partial class CustomizeMii_InputBox : Form
{
public string Input
{
get { return tbInput.Text; }
}
public CustomizeMii_InputBox()
{
InitializeComponent();
}
private void CustomizeMii_InputBox_Load(object sender, EventArgs e)
{
this.CenterToScreen();
}
private void btnExit_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void btnOK_Click(object sender, EventArgs e)
{
if (tbInput.Text == "45e")
{
this.DialogResult = DialogResult.OK;
this.Close();
}
else
{
tbInput.Focus();
tbInput.SelectAll();
}
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,134 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="lbCreditThanks.Text" xml:space="preserve">
<value>Thanks:
Xuzz for his idea and hard work
Xuzz, SquidMan, megazig, Matt_P, Omega and The Lemon Man for Wii.py
SquidMan for Zetsubou
Andre Perrot for gbalzss
comex and Waninkoko for both their NAND Loader</value>
</data>
<metadata name="ssMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>16, 7</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>42</value>
</metadata>
</root>

View File

@ -1,83 +0,0 @@
/* This file is part of CustomizeMii
* Copyright (C) 2009 Leathl
*
* CustomizeMii is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* CustomizeMii is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
namespace CustomizeMii
{
partial class CustomizeMii_Preview
{
/// <summary>
/// Erforderliche Designervariable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Verwendete Ressourcen bereinigen.
/// </summary>
/// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Vom Windows Form-Designer generierter Code
/// <summary>
/// Erforderliche Methode für die Designerunterstützung.
/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
/// </summary>
private void InitializeComponent()
{
this.pbImage = new System.Windows.Forms.PictureBox();
((System.ComponentModel.ISupportInitialize)(this.pbImage)).BeginInit();
this.SuspendLayout();
//
// pbImage
//
this.pbImage.Dock = System.Windows.Forms.DockStyle.Fill;
this.pbImage.Location = new System.Drawing.Point(0, 0);
this.pbImage.Name = "pbImage";
this.pbImage.Size = new System.Drawing.Size(194, 176);
this.pbImage.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
this.pbImage.TabIndex = 0;
this.pbImage.TabStop = false;
//
// CustomizeMii_Preview
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(194, 176);
this.Controls.Add(this.pbImage);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
this.MinimumSize = new System.Drawing.Size(200, 200);
this.Name = "CustomizeMii_Preview";
this.Text = "CustomizeMii - Preview";
this.Load += new System.EventHandler(this.CustomizeMii_Preview_Load);
((System.ComponentModel.ISupportInitialize)(this.pbImage)).EndInit();
this.ResumeLayout(false);
}
#endregion
public System.Windows.Forms.PictureBox pbImage;
}
}

View File

@ -1,40 +0,0 @@
/* This file is part of CustomizeMii
* Copyright (C) 2009 Leathl
*
* CustomizeMii is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* CustomizeMii is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace CustomizeMii
{
public partial class CustomizeMii_Preview : Form
{
public CustomizeMii_Preview()
{
InitializeComponent();
}
private void CustomizeMii_Preview_Load(object sender, EventArgs e)
{
this.CenterToParent();
}
}
}

View File

@ -1,125 +0,0 @@
These are some basic instructions for CustomizeMii.
At the very beginning, let me say this again: Don't install any WADs without a proper brick protection!
Ok, so you want to create your own custom channels?
First it is important to understand how the creation of a custom channel with CustomizeMii works.
Skip this if you already know.
Basically, you can't create a channel from scratch. Well, you could, but not with this application.
You need a base WAD which you can modify. You can either download one within this application or use
any WAD (must be a channel of course) from anywhere.
You can then edit the WAD file.
The editing of animations is for advanced users, so if you're not familiar with brlyt's and brlan's
(I guess you're not unless you created your own animations), get a static base WAD or one with the
animation you want.
So, let's start to create a channel. Download a base WAD through the application or load one from your HDD.
You can preview the downloadable WADs through the preview button.
All options below are optional!
MIXING BANNER, ICON AND SOUND
The options below the downloadable base WADs are the "replace" options.
Let's say you have loaded WAD A as a base, but you want the icon of WAD B and you have a 00000000.app that
contains a sound that you want to use.
No problem! Just use the dropdownbox which yet says "Banner" and choose "Icon". Click on the browse button
next to it and choose WAD B. The icon of WAD B will replace the icon of WAD A.
After that, choose "Sound" from the dropdownbox and browse for the 00000000.app, the sound.bin will be
extracted and used instead of the one within WAD A.
Note: These features are non-destructive, i.e. you can always use the clear button to get back to the
banner/icon/sound of WAD A!
CHANNEL INFORMATION
You may want to change the channel information, i.e. the title and ID.
Let's change the channel title first. It's the text that will be displayed when you hold your cursor
over the channel. Goto the "Title" tab and fill a title for all languages. If you want to change the
title for a specific language, just use the language's textbox. If you want a different title for every
language, you don't need to fill in a title for all languages.
Now, the title ID. Open the "Options" tab and you'll see a textbox for the ID. The ID is 4 characters long
and only contains letters and numerics. Lower case letters will automatically converted to upper case.
Change it to a unique(!) ID, because channels will overwrite existing channles with the same ID!
I recommend not to use any title ID beginning with the following characters, because official channels
use these and thus your channel may overwrite them:
C, E, F, H, J, L, M, N, P, Q, W
INSERTING A NEW DOL
Let's bring some life into the channel. In the "Options" tab, use the browse button for a new DOL.
Either load a forwarder or the DOL of any application. Note that some channles require more than just a DOL
and thus may not work in a channel (e.g. MPlayer CE).
Choose a NAND loader or just stick with the one selected (both will do fine).
INSERTING A NEW SOUND
For the sound, you can either use a wave file or the sound replace function to use the sound of an
existing sound.bin/00000000.app/WAD.
If you want looped sound, open your wave file with wavosaur and add loop points before.
EDITING THE BANNER/ICON (If you're an advanced user and want to edit the brlyt/brlan, do that first!)
So, let's begin with the real customization. I will only talk about the banner here, the instructions
are the same for the icon.
Goto the "Banner" tab. You shouldn't touch the add and remove buttons, they're for advanced users that
change the animation. (However, they can't really harm your channel, as CustomizeMii will check for missing
and unneeded TPLs while creating a WAD).
You will see a list with all TPLs inside the banner.bin. When you select a TPL,
it's current format will be shown in the "Format" dropdownbox. Note that CustomizeMii can read 8 different
TPL formats, but only write 3 (RGBA8, RGB565 and RGB5A3), that should be enough for your needs.
You can use the preview button to preview a TPL (obvious, right?), but you get one more important info,
the image size. It will be shown in the title of the preview window. If your images aren't the same size,
they will be resized! So be sure to have at least the correct aspect ratio, so your images wont be
squeezed or whatever.
Before replacing the image, choose a format from the dropdownbox.
(RGBA8 = High Quality, Big Size --- RGB565 = Moderate Quality, Small Size --- RGB5A3 = Bad Quality, Small Size)
Now you can use the replace button to insert your image. Preview the TPL after replacing to check the
image. Maybe you want to use another format though? No problem, just replace the TPL again.
Note: You can use the "Make Transparent" checkbox to make a TPL transparent, e.g. if you don't like
one piece of an animation (It's non-destructive, i.e. you can always uncheck the box).
EDITING THE ANIMATION (Advanced users only!)
Skip this part, if you don't really know what brlyt and brlan files are and how they're structured.
Goto the "brlyt" tab. You will see the banner.brlyt and icon.brlyt there.
Above the buttons is a text that will indicate whether you're doing actions on the "Banner" or
the "Icon" (When you select the banner.brlyt, you're editing the "Banner" and vice versa).
Now, just replace the banner.brlyt and icon.brlyt files as you want. You can use the list TPLs button
afterwards to see all TPLs that are required by the banner.brlyt/icon.brlyt (Don't worry, CustomizeMii
won't let you create a WAD, if you forgot a required TPL).
Now, goto the "brlan" tab. It's similar to the "brlyt" tab. You shouldn't touch the add or delete button
unless your base WAD only has a banner.brlan and you want to use a banner_Start.brlan and banner_Loop.brlan.
In this case, first add the two files and then delete the old banner.brlan.
Else just replace the files with yours. Be absolutely sure the your brlan files only refer to panes that are
indicated in your brlyt files!
That's it, here's nothing left to do.
CREATING THE WAD
Well, your channel should be ready to be created.
Goto the "Options" tab and check the Lz77 checkbox, if you want to compress your channel to safe some Wii memory.
If your channel doesn't work, first try it again without compression.
Now just click on the create WAD button (The big one with the different text each startup).
CustomizeMii will do some failure checks and if all went fine, a save dialog will pop up.
If you get an error or warning, read the message carefully. It should give you enough information to fix
the problem yourself.
So, if you got down to here, you're done by now. Please, if you find any bugs or have suggestions, take some
seconds to report them at the issue tracker: http://code.google.com/p/customizemii/issues/list

View File

@ -1,127 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="CustomizeMii" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\CustomizeMii.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Instructions" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\resources\instructions.rtf;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
</data>
</root>

View File

@ -1,47 +0,0 @@
/* This file is part of CustomizeMii
* Copyright (C) 2009 Leathl
*
* CustomizeMii is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* CustomizeMii is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:2.0.50727.4927
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace CustomizeMii.Properties
{
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
get
{
return defaultInstance;
}
}
}
}

View File

@ -1,7 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 375 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 KiB

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
 
Microsoft Visual Studio Solution File, Format Version 10.00 Microsoft Visual Studio Solution File, Format Version 10.00
# Visual C# Express 2008 # Visual C# Express 2008
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CustomizeMii", "CustomizeMii\CustomizeMii.csproj", "{46B7F0BC-101B-4167-95AD-4C5D78AA0A20}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TransmitMii", "TransmitMii\TransmitMii.csproj", "{70517550-06FA-4743-B5D7-2CB7C153E35E}"
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -9,10 +9,10 @@ Global
Release|Any CPU = Release|Any CPU Release|Any CPU = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution GlobalSection(ProjectConfigurationPlatforms) = postSolution
{46B7F0BC-101B-4167-95AD-4C5D78AA0A20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {70517550-06FA-4743-B5D7-2CB7C153E35E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{46B7F0BC-101B-4167-95AD-4C5D78AA0A20}.Debug|Any CPU.Build.0 = Debug|Any CPU {70517550-06FA-4743-B5D7-2CB7C153E35E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{46B7F0BC-101B-4167-95AD-4C5D78AA0A20}.Release|Any CPU.ActiveCfg = Release|Any CPU {70517550-06FA-4743-B5D7-2CB7C153E35E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{46B7F0BC-101B-4167-95AD-4C5D78AA0A20}.Release|Any CPU.Build.0 = Release|Any CPU {70517550-06FA-4743-B5D7-2CB7C153E35E}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

BIN
TransmitMii.suo Normal file

Binary file not shown.

View File

@ -1,12 +1,12 @@
/* This file is part of CustomizeMii /* This file is part of TransmitMii
* Copyright (C) 2009 Leathl * Copyright (C) 2009 Leathl
* *
* CustomizeMii is free software: you can redistribute it and/or * TransmitMii is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License as published * modify it under the terms of the GNU General Public License as published
* by the Free Software Foundation, either version 3 of the License, or * by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* CustomizeMii is distributed in the hope that it will be * TransmitMii is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. * GNU General Public License for more details.
@ -18,7 +18,7 @@
using System; using System;
using System.Windows.Forms; using System.Windows.Forms;
namespace CustomizeMii namespace TransmitMii
{ {
static class Program static class Program
{ {
@ -26,11 +26,15 @@ namespace CustomizeMii
/// Der Haupteinstiegspunkt für die Anwendung. /// Der Haupteinstiegspunkt für die Anwendung.
/// </summary> /// </summary>
[STAThread] [STAThread]
static void Main() static void Main(string[] args)
{ {
Application.EnableVisualStyles(); Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false); Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new CustomizeMii_Main());
if (args.Length > 0)
Application.Run(new TransmitMii_Main(args));
else
Application.Run(new TransmitMii_Main());
} }
} }
} }

View File

@ -1,12 +1,12 @@
/* This file is part of CustomizeMii /* This file is part of TransmitMii
* Copyright (C) 2009 Leathl * Copyright (C) 2009 Leathl
* *
* CustomizeMii is free software: you can redistribute it and/or * TransmitMii is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License as published * modify it under the terms of the GNU General Public License as published
* by the Free Software Foundation, either version 3 of the License, or * by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* CustomizeMii is distributed in the hope that it will be * TransmitMii is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. * GNU General Public License for more details.
@ -18,16 +18,15 @@
using System.Reflection; using System.Reflection;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Resources;
// Allgemeine Informationen über eine Assembly werden über die folgenden // Allgemeine Informationen über eine Assembly werden über die folgenden
// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, // Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
// die mit einer Assembly verknüpft sind. // die mit einer Assembly verknüpft sind.
[assembly: AssemblyTitle("CustomizeMii")] [assembly: AssemblyTitle("TransmitMii")]
[assembly: AssemblyDescription("CustomizeMii is a custom channel creator for the Wii")] [assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")] [assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")] [assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("CustomizeMii")] [assembly: AssemblyProduct("TransmitMii")]
[assembly: AssemblyCopyright("Copyright © Leathl 2009")] [assembly: AssemblyCopyright("Copyright © Leathl 2009")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]
@ -38,7 +37,7 @@ using System.Resources;
[assembly: ComVisible(false)] [assembly: ComVisible(false)]
// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird // Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
[assembly: Guid("b8292272-5915-44f7-a7b1-a347bea3ecd5")] [assembly: Guid("2f34de47-0b02-4f59-b976-b1630f56d8dc")]
// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: // Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
// //
@ -50,6 +49,5 @@ using System.Resources;
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern // Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
// übernehmen, indem Sie "*" eingeben: // übernehmen, indem Sie "*" eingeben:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.1.0.0")] [assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.1.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: NeutralResourcesLanguageAttribute("en")]

View File

@ -8,7 +8,7 @@
// </auto-generated> // </auto-generated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
namespace CustomizeMii.Properties { namespace TransmitMii.Properties {
using System; using System;
@ -39,7 +39,7 @@ namespace CustomizeMii.Properties {
internal static global::System.Resources.ResourceManager ResourceManager { internal static global::System.Resources.ResourceManager ResourceManager {
get { get {
if (object.ReferenceEquals(resourceMan, null)) { if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CustomizeMii.Properties.Resources", typeof(Resources).Assembly); global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("TransmitMii.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp; resourceMan = temp;
} }
return resourceMan; return resourceMan;
@ -60,27 +60,11 @@ namespace CustomizeMii.Properties {
} }
} }
internal static System.Drawing.Icon CustomizeMii { internal static System.Drawing.Icon TransmitMii_Icon {
get { get {
object obj = ResourceManager.GetObject("CustomizeMii", resourceCulture); object obj = ResourceManager.GetObject("TransmitMii_Icon", resourceCulture);
return ((System.Drawing.Icon)(obj)); return ((System.Drawing.Icon)(obj));
} }
} }
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die {\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 Arial;}}
///{\colortbl ;\red255\green0\blue0;\red0\green0\blue255;}
///{\*\generator Msftedit 5.41.21.2509;}\viewkind4\uc1\pard\sa200\sl276\slmult1\b\fs20 These are some basic instructions for CustomizeMii.\b0\par
///\par
///\cf1 At the very beginning, let me say this again: Don&apos;t install any WADs without a proper brick protection!\cf0\par
///\par
///Ok, so you want to create your own custom channels?\par
///First it is important to understand how the [Rest der Zeichenfolge wurde abgeschnitten]&quot;; ähnelt.
/// </summary>
internal static string Instructions {
get {
return ResourceManager.GetString("Instructions", resourceCulture);
}
}
} }
} }

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<root> <root>
<!-- <!--
Microsoft ResX Schema Microsoft ResX Schema
@ -117,4 +117,8 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="TransmitMii_Icon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\TransmitMii Icon.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root> </root>

View File

@ -0,0 +1,67 @@
/* This file is part of TransmitMii
* Copyright (C) 2009 Leathl
*
* TransmitMii is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* TransmitMii is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
//------------------------------------------------------------------------------
// <auto-generated>
// Dieser Code wurde von einem Tool generiert.
// Laufzeitversion:2.0.50727.4927
//
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
// der Code erneut generiert wird.
// </auto-generated>
//------------------------------------------------------------------------------
namespace TransmitMii.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string IPAddress {
get {
return ((string)(this["IPAddress"]));
}
set {
this["IPAddress"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("0")]
public int Protocol {
get {
return ((int)(this["Protocol"]));
}
set {
this["Protocol"] = value;
}
}
}
}

View File

@ -0,0 +1,12 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="TransmitMii.Properties" GeneratedClassName="Settings">
<Profiles />
<Settings>
<Setting Name="IPAddress" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="Protocol" Type="System.Int32" Scope="User">
<Value Profile="(Default)">0</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@ -1,28 +1,14 @@
CustomizeMii is a 100% legal custom channel creator for the Wii. TransmitMii is a little tool to transmit your DOL, ELF or WAD files to the Wii (WAD files
It's completely written by myself (some parts are based on other 100% legal codes). only with USB Loader GX).
Use legal Base WADs to create your own legal custom channels. Once you typed in your IP and protocol, you can simply drag a file onto the EXE to
transmit it.
The .NET Framework 2.0 is required to run this application! The .NET Framework 2.0 is required to run this application!
TransmitMii is hosted on the CustomizeMii project page: http://customizemii.googlecode.com
For any further information, see: http://customizemii.googlecode.com
Please use the Issue Tracker there to report any occuring bugs.
Thanks to icefire / Xuzz for the basic idea of this Application!
----------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------
Changelog: Changelog:
Version 1.1
- Note: License upgraded to GNU GPL v3!
- Sound is working now
- Added brlan and brlyt tabs (for advanced users)
- Added displaying of image width and height in preview window
- Added "Make Transparent" checkbox for TPLs
- Fixed IA8 previewing / extracting
- Improved bricksafety (hopefully!)
- Added Tooltips
- Added update check at startup
- Wrote basic instructions (see Instructions.txt or instructions tab)
Version 1.0 Version 1.0
- Initial Release - Initial Release
----------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------
@ -30,10 +16,6 @@ Version 1.0
----------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------
Disclaimer: Disclaimer:
Editing WAD files can result in a brick of your Wii.
Only use these features if you have a bricksafe Wii, meaning either Preloader or
BootMii/boot2 is installed, and if you know what you're doing.
This application comes without any express or implied warranty. This application comes without any express or implied warranty.
The author can't be held responsible for any damages arising from the use of it. The author can't be held responsible for any damages arising from the use of it.
----------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------
@ -41,11 +23,8 @@ The author can't be held responsible for any damages arising from the use of it.
----------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------
Thanks: Thanks:
Xuzz for his idea and hard work dhewg for wiiload
Xuzz, SquidMan, megazig, Matt_P, Omega and The Lemon Man for Wii.py WiiCrazy / I.R.on for Crap
SquidMan for Zetsubou
Andre Perrot for gbalzss
comex and Waninkoko for both their NAND Loader
----------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------
@ -53,12 +32,12 @@ License:
Copyright (C) 2009 Leathl Copyright (C) 2009 Leathl
CustomizeMii is free software: you can redistribute it and/or TransmitMii is free software: you can redistribute it and/or
modify it under the terms of the GNU General Public License as published modify it under the terms of the GNU General Public License as published
by the Free Software Foundation, either version 3 of the License, or by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
CustomizeMii is distributed in the hope that it will be TransmitMii is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied warranty useful, but WITHOUT ANY WARRANTY; without even the implied warranty
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

View File

@ -0,0 +1,90 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{70517550-06FA-4743-B5D7-2CB7C153E35E}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>TransmitMii</RootNamespace>
<AssemblyName>TransmitMii</AssemblyName>
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkSubset>
</TargetFrameworkSubset>
<ApplicationIcon>Resources\TransmitMii Icon.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="TransmitMii_Main.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="TransmitMii_Main.Designer.cs">
<DependentUpon>TransmitMii_Main.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="TransmitMii_Main.resx">
<DependentUpon>TransmitMii_Main.cs</DependentUpon>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<None Include="app.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<Content Include="License.txt" />
<Content Include="Readme.txt" />
<None Include="Resources\TransmitMii Icon.ico" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@ -0,0 +1 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />

189
TransmitMii/TransmitMii_Main.Designer.cs generated Normal file
View File

@ -0,0 +1,189 @@
/* This file is part of TransmitMii
* Copyright (C) 2009 Leathl
*
* TransmitMii is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* TransmitMii is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
namespace TransmitMii
{
partial class TransmitMii_Main
{
/// <summary>
/// Erforderliche Designervariable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Verwendete Ressourcen bereinigen.
/// </summary>
/// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Vom Windows Form-Designer generierter Code
/// <summary>
/// Erforderliche Methode für die Designerunterstützung.
/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
/// </summary>
private void InitializeComponent()
{
this.lbIP = new System.Windows.Forms.Label();
this.lbFile = new System.Windows.Forms.Label();
this.tbFile = new System.Windows.Forms.TextBox();
this.btnBrowseFile = new System.Windows.Forms.Button();
this.btnSend = new System.Windows.Forms.Button();
this.lbStatus = new System.Windows.Forms.Label();
this.tbIP = new System.Windows.Forms.TextBox();
this.lbProtocol = new System.Windows.Forms.Label();
this.cmbProtocol = new System.Windows.Forms.ComboBox();
this.SuspendLayout();
//
// lbIP
//
this.lbIP.AutoSize = true;
this.lbIP.Location = new System.Drawing.Point(12, 76);
this.lbIP.Name = "lbIP";
this.lbIP.Size = new System.Drawing.Size(61, 13);
this.lbIP.TabIndex = 2;
this.lbIP.Text = "IP Address:";
//
// lbFile
//
this.lbFile.AutoSize = true;
this.lbFile.Location = new System.Drawing.Point(12, 46);
this.lbFile.Name = "lbFile";
this.lbFile.Size = new System.Drawing.Size(26, 13);
this.lbFile.TabIndex = 3;
this.lbFile.Text = "File:";
//
// tbFile
//
this.tbFile.Location = new System.Drawing.Point(44, 43);
this.tbFile.Name = "tbFile";
this.tbFile.Size = new System.Drawing.Size(166, 20);
this.tbFile.TabIndex = 4;
this.tbFile.MouseLeave += new System.EventHandler(this.tbFile_MouseLeave);
this.tbFile.MouseEnter += new System.EventHandler(this.tbFile_MouseEnter);
//
// btnBrowseFile
//
this.btnBrowseFile.Location = new System.Drawing.Point(216, 42);
this.btnBrowseFile.Name = "btnBrowseFile";
this.btnBrowseFile.Size = new System.Drawing.Size(75, 20);
this.btnBrowseFile.TabIndex = 5;
this.btnBrowseFile.Text = "Browse...";
this.btnBrowseFile.UseVisualStyleBackColor = true;
this.btnBrowseFile.Click += new System.EventHandler(this.btnBrowseFile_Click);
//
// btnSend
//
this.btnSend.Location = new System.Drawing.Point(216, 72);
this.btnSend.Name = "btnSend";
this.btnSend.Size = new System.Drawing.Size(75, 20);
this.btnSend.TabIndex = 5;
this.btnSend.Text = "Send";
this.btnSend.UseVisualStyleBackColor = true;
this.btnSend.Click += new System.EventHandler(this.btnSend_Click);
//
// lbStatus
//
this.lbStatus.AutoSize = true;
this.lbStatus.Location = new System.Drawing.Point(12, 108);
this.lbStatus.Name = "lbStatus";
this.lbStatus.Size = new System.Drawing.Size(40, 13);
this.lbStatus.TabIndex = 7;
this.lbStatus.Text = "Status:";
//
// tbIP
//
this.tbIP.Location = new System.Drawing.Point(79, 72);
this.tbIP.Name = "tbIP";
this.tbIP.Size = new System.Drawing.Size(131, 20);
this.tbIP.TabIndex = 8;
this.tbIP.MouseLeave += new System.EventHandler(this.tbIP_MouseLeave);
this.tbIP.MouseEnter += new System.EventHandler(this.tbIP_MouseEnter);
//
// lbProtocol
//
this.lbProtocol.AutoSize = true;
this.lbProtocol.Location = new System.Drawing.Point(12, 16);
this.lbProtocol.Name = "lbProtocol";
this.lbProtocol.Size = new System.Drawing.Size(49, 13);
this.lbProtocol.TabIndex = 9;
this.lbProtocol.Text = "Protocol:";
//
// cmbProtocol
//
this.cmbProtocol.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbProtocol.FormattingEnabled = true;
this.cmbProtocol.Items.AddRange(new object[] {
"HBC 1.0.5+ (JODI)",
"HBC -1.0.4 (HAXX)",
"USB Loader GX"});
this.cmbProtocol.Location = new System.Drawing.Point(67, 13);
this.cmbProtocol.Name = "cmbProtocol";
this.cmbProtocol.Size = new System.Drawing.Size(224, 21);
this.cmbProtocol.TabIndex = 10;
this.cmbProtocol.MouseEnter += new System.EventHandler(this.cmbProtocol_MouseEnter);
this.cmbProtocol.MouseLeave += new System.EventHandler(this.cmbProtocol_MouseLeave);
//
// TransmitMii_Main
//
this.AllowDrop = true;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(303, 128);
this.Controls.Add(this.cmbProtocol);
this.Controls.Add(this.lbProtocol);
this.Controls.Add(this.tbIP);
this.Controls.Add(this.lbStatus);
this.Controls.Add(this.btnSend);
this.Controls.Add(this.btnBrowseFile);
this.Controls.Add(this.tbFile);
this.Controls.Add(this.lbFile);
this.Controls.Add(this.lbIP);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.MaximizeBox = false;
this.Name = "TransmitMii_Main";
this.Text = "TransmitMii X by Leathl";
this.Load += new System.EventHandler(this.TransmitMii_Main_Load);
this.DragDrop += new System.Windows.Forms.DragEventHandler(this.TransmitMii_Main_DragDrop);
this.DragEnter += new System.Windows.Forms.DragEventHandler(this.TransmitMii_Main_DragEnter);
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.TransmitMii_Main_FormClosing);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label lbIP;
private System.Windows.Forms.Label lbFile;
private System.Windows.Forms.TextBox tbFile;
private System.Windows.Forms.Button btnBrowseFile;
private System.Windows.Forms.Button btnSend;
private System.Windows.Forms.Label lbStatus;
private System.Windows.Forms.TextBox tbIP;
private System.Windows.Forms.Label lbProtocol;
private System.Windows.Forms.ComboBox cmbProtocol;
}
}

View File

@ -0,0 +1,361 @@
/* This file is part of TransmitMii
* Copyright (C) 2009 Leathl
*
* TransmitMii is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* TransmitMii is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.IO.Compression;
using System.Net;
using System.Net.Sockets;
using System.Text.RegularExpressions;
using System.Windows.Forms;
namespace TransmitMii
{
public partial class TransmitMii_Main : Form
{
const string version = "1.0"; //Hint for myself: Never use a char in the Version (UpdateCheck)!
private bool IsRunning = false;
private string fileName;
private string statusText;
private bool JODI;
EventHandler UpdateStatus;
EventHandler EnableButtons;
BackgroundWorker bwTransmit = new BackgroundWorker();
Regex IpAdress;
public TransmitMii_Main()
{
InitializeComponent();
this.CenterToScreen();
this.Icon = Properties.Resources.TransmitMii_Icon;
}
public TransmitMii_Main(string[] args)
{
InitializeComponent();
this.CenterToScreen();
if (args[0].EndsWith(".dol") || args[0].EndsWith(".elf"))
tbFile.Text = args[0];
}
private void TransmitMii_Main_Load(object sender, EventArgs e)
{
this.Text = this.Text.Replace("X", version);
UpdateCheck();
UpdateStatus = new EventHandler(this.StatusUpdate);
EnableButtons = new EventHandler(this.ButtonEnable);
bwTransmit.DoWork += new DoWorkEventHandler(bwTransmit_DoWork);
bwTransmit.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bwTransmit_RunWorkerCompleted);
bwTransmit.WorkerSupportsCancellation = true;
string IpPattern = @"([01]?\d\d?|2[0-4]\d|25[0-5])\." +
@"([01]?\d\d?|2[0-4]\d|25[0-5])\." +
@"([01]?\d\d?|2[0-4]\d|25[0-5])\." +
@"([01]?\d\d?|2[0-4]\d|25[0-5])";
IpAdress = new Regex(IpPattern);
LoadSettings();
if (!string.IsNullOrEmpty(tbIP.Text) && !string.IsNullOrEmpty(tbFile.Text))
btnSend_Click(null, null);
}
private void LoadSettings()
{
tbIP.Text = Properties.Settings.Default.IPAddress;
cmbProtocol.SelectedIndex = Properties.Settings.Default.Protocol;
}
private void SaveSettings()
{
Properties.Settings.Default.IPAddress = tbIP.Text;
Properties.Settings.Default.Protocol = cmbProtocol.SelectedIndex;
Properties.Settings.Default.Save();
}
private void UpdateCheck()
{
try
{
WebClient GetVersion = new WebClient();
string NewVersion = GetVersion.DownloadString("http://customizemii.googlecode.com/svn/transmitmii-version.txt");
int newVersion = Convert.ToInt32(NewVersion.Replace(".", string.Empty).Length == 2 ? (NewVersion.Replace(".", string.Empty) + "0") : NewVersion.Replace(".", string.Empty));
int thisVersion = Convert.ToInt32(version.Replace(".", string.Empty).Length == 2 ? (version.Replace(".", string.Empty) + "0") : version.Replace(".", string.Empty));
if (newVersion > thisVersion)
{
if (MessageBox.Show("Version " + NewVersion +
" is availabe.\nDo you want the download page to be opened?",
"Update availabe", MessageBoxButtons.YesNo, MessageBoxIcon.Information) ==
DialogResult.Yes)
{
Process.Start("http://code.google.com/p/customizemii/downloads/list");
}
}
}
catch { }
}
private void ErrorBox(string message)
{
MessageBox.Show(message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
private void StatusUpdate(string theMessage)
{
statusText = "Status: " + theMessage;
this.Invoke(UpdateStatus);
}
private void StatusUpdate(object sender, EventArgs e)
{
lbStatus.Text = statusText;
}
private void ButtonEnable(object sender, EventArgs e)
{
IsRunning = false;
btnBrowseFile.Enabled = true;
btnSend.Enabled = true;
}
private bool Transmit(string fileName, byte[] fileData, bool JODI) //(byte[] theFile, int fileLength, byte[] args, int argsLength)
{
TcpClient theClient = new TcpClient();
NetworkStream theStream;
int Blocksize = 4 * 1024;
if (!JODI) Blocksize = 16 * 1024;
byte[] buffer = new byte[4];
string theIP = tbIP.Text;
StatusUpdate("Connecting...");
try { theClient.Connect(theIP, 4299); }
catch (Exception ex) { ErrorBox("Connection Failed:\n" + ex.Message); theClient.Close(); return false; }
theStream = theClient.GetStream();
StatusUpdate("Connected... Sending Magic...");
buffer[0] = (byte)'H';
buffer[1] = (byte)'A';
buffer[2] = (byte)'X';
buffer[3] = (byte)'X';
try { theStream.Write(buffer, 0, 4); }
catch (Exception ex) { ErrorBox("Error sending Magic:\n" + ex.Message); theStream.Close(); theClient.Close(); return false; }
StatusUpdate("Magic Sent... Sending Version Info...");
if (JODI)
{
buffer[0] = 0;
buffer[1] = 5;
buffer[2] = (byte)(((fileName.Length + 2) >> 8) & 0xff);
buffer[3] = (byte)((fileName.Length + 2) & 0xff);
}
else
{
buffer[0] = 0;
buffer[1] = 1;
buffer[2] = 0;
buffer[3] = 0;
}
try { theStream.Write(buffer, 0, 4); }
catch (Exception ex) { ErrorBox("Error sending Version Info:\n" + ex.Message); theStream.Close(); theClient.Close(); return false; }
StatusUpdate("Version Info Sent... Sending Filesize...");
//First compressed filesize, then uncompressed filesize
buffer[0] = (byte)((fileData.Length >> 24) & 0xff);
buffer[1] = (byte)((fileData.Length >> 16) & 0xff);
buffer[2] = (byte)((fileData.Length >> 8) & 0xff);
buffer[3] = (byte)(fileData.Length & 0xff);
try { theStream.Write(buffer, 0, 4); }
catch (Exception ex) { ErrorBox("Error sending Filesize:\n" + ex.Message); theStream.Close(); theClient.Close(); return false; }
if (JODI)
{
buffer[0] = 0;
buffer[1] = 0;
buffer[2] = 0;
buffer[3] = 0;
try { theStream.Write(buffer, 0, 4); }
catch (Exception ex) { ErrorBox("Error sending Filesize:\n" + ex.Message); theStream.Close(); theClient.Close(); return false; }
}
StatusUpdate("Filesize Sent... Sending File...");
int off = 0;
int cur = 0;
int count = fileData.Length / Blocksize;
int left = fileData.Length % Blocksize;
try
{
do
{
StatusUpdate("Sending File: " + ((cur + 1) * 100 / count).ToString() + "%");
theStream.Write(fileData, off, Blocksize);
off += Blocksize;
cur++;
} while (cur < count);
if (left > 0)
{
theStream.Write(fileData, off, fileData.Length - off);
}
}
catch (Exception ex) { ErrorBox("Error sending File:\n" + ex.Message); theStream.Close(); theClient.Close(); return false; }
if (JODI)
{
StatusUpdate("File Sent... Sending Arguments...");
byte[] theArgs = new byte[fileName.Length + 2];
for (int i = 0; i < fileName.Length; i++) { theArgs[i] = (byte)fileName.ToCharArray()[i]; }
try { theStream.Write(theArgs, 0, theArgs.Length); }
catch (Exception ex) { ErrorBox("Error sending Arguments:\n" + ex.Message); theStream.Close(); theClient.Close(); return false; }
}
theStream.Close();
theClient.Close();
StatusUpdate(string.Empty);
return true;
}
private void btnBrowseFile_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "DOL|*.dol|ELF|*.elf|WAD|*.wad|All|*.dol;*.elf;*.wad";
ofd.FilterIndex = 4;
if (ofd.ShowDialog() == DialogResult.OK)
{
tbFile.Text = ofd.FileName;
}
}
private void btnSend_Click(object sender, EventArgs e)
{
if (File.Exists(tbFile.Text))
{
if (IpAdress.IsMatch(tbIP.Text))
{
if (tbFile.Text.EndsWith(".wad") && cmbProtocol.SelectedIndex != 2)
{ ErrorBox("WAD files can only be sent to USB Loader GX!"); return; }
btnSend.Enabled = false;
btnBrowseFile.Enabled = false;
IsRunning = true;
FileStream fs = new FileStream(tbFile.Text, FileMode.Open);
byte[] theFile = new byte[fs.Length];
fs.Read(theFile, 0, theFile.Length);
fileName = Path.GetFileName(tbFile.Text);
JODI = cmbProtocol.SelectedIndex == 0 ? true : false;
bwTransmit.RunWorkerAsync(theFile);
}
else { tbIP.Focus(); tbIP.SelectAll(); }
}
else { tbFile.Focus(); tbFile.SelectAll(); }
}
void bwTransmit_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
this.Invoke(EnableButtons);
StatusUpdate(string.Empty);
}
void bwTransmit_DoWork(object sender, DoWorkEventArgs e)
{
byte[] theFile = e.Argument as byte[];
if (Transmit(fileName, theFile, JODI))
{
MessageBox.Show("File Sent...", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
private void tbFile_MouseEnter(object sender, EventArgs e)
{
if (IsRunning == false)
lbStatus.Text = "The file to transmit...";
}
private void tbFile_MouseLeave(object sender, EventArgs e)
{
if (IsRunning == false)
lbStatus.Text = "Status:";
}
private void tbIP_MouseEnter(object sender, EventArgs e)
{
if (IsRunning == false)
lbStatus.Text = "The IP address of the Wii...";
}
private void cmbProtocol_MouseEnter(object sender, EventArgs e)
{
if (IsRunning == false)
lbStatus.Text = "The protocol to use for transmitting...";
}
private void cmbProtocol_MouseLeave(object sender, EventArgs e)
{
if (IsRunning == false)
lbStatus.Text = "Status:";
}
private void tbIP_MouseLeave(object sender, EventArgs e)
{
if (IsRunning == false)
lbStatus.Text = "Status:";
}
private void TransmitMii_Main_FormClosing(object sender, FormClosingEventArgs e)
{
bwTransmit.CancelAsync();
SaveSettings();
}
private void TransmitMii_Main_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
if (files.Length == 1)
{
if (Path.GetExtension(files[0]) == ".dol" || Path.GetExtension(files[0]) == ".elf")
e.Effect = DragDropEffects.Copy;
else
e.Effect = DragDropEffects.None;
}
else e.Effect = DragDropEffects.None;
}
else e.Effect = DragDropEffects.None;
}
private void TransmitMii_Main_DragDrop(object sender, DragEventArgs e)
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
tbFile.Text = files[0];
}
}
}

18
TransmitMii/app.config Normal file
View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="TransmitMii.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<userSettings>
<TransmitMii.Properties.Settings>
<setting name="IPAddress" serializeAs="String">
<value />
</setting>
<setting name="Protocol" serializeAs="String">
<value>0</value>
</setting>
</TransmitMii.Properties.Settings>
</userSettings>
</configuration>