mirror of
https://github.com/suloku/PMStadium_Viewer.git
synced 2026-04-26 10:07:03 -05:00
Can view all teams in the rom.
Can export as jpk1 file to use with pkhex.
This commit is contained in:
commit
8b686374ef
236
.gitignore
vendored
Normal file
236
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,236 @@
|
||||||
|
## Ignore Visual Studio temporary files, build results, and
|
||||||
|
## files generated by popular Visual Studio add-ons.
|
||||||
|
|
||||||
|
# User-specific files
|
||||||
|
*.suo
|
||||||
|
*.user
|
||||||
|
*.userosscache
|
||||||
|
*.sln.docstates
|
||||||
|
|
||||||
|
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||||
|
*.userprefs
|
||||||
|
|
||||||
|
# Build results
|
||||||
|
[Dd]ebug/
|
||||||
|
[Dd]ebugPublic/
|
||||||
|
[Rr]elease/
|
||||||
|
[Rr]eleases/
|
||||||
|
x64/
|
||||||
|
x86/
|
||||||
|
bld/
|
||||||
|
[Bb]in/
|
||||||
|
[Oo]bj/
|
||||||
|
|
||||||
|
# Visual Studio 2015 cache/options directory
|
||||||
|
.vs/
|
||||||
|
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||||
|
#wwwroot/
|
||||||
|
|
||||||
|
# MSTest test Results
|
||||||
|
[Tt]est[Rr]esult*/
|
||||||
|
[Bb]uild[Ll]og.*
|
||||||
|
|
||||||
|
# NUNIT
|
||||||
|
*.VisualState.xml
|
||||||
|
TestResult.xml
|
||||||
|
|
||||||
|
# Build Results of an ATL Project
|
||||||
|
[Dd]ebugPS/
|
||||||
|
[Rr]eleasePS/
|
||||||
|
dlldata.c
|
||||||
|
|
||||||
|
# DNX
|
||||||
|
project.lock.json
|
||||||
|
artifacts/
|
||||||
|
|
||||||
|
*_i.c
|
||||||
|
*_p.c
|
||||||
|
*_i.h
|
||||||
|
*.ilk
|
||||||
|
*.meta
|
||||||
|
*.obj
|
||||||
|
*.pch
|
||||||
|
*.pdb
|
||||||
|
*.pgc
|
||||||
|
*.pgd
|
||||||
|
*.rsp
|
||||||
|
*.sbr
|
||||||
|
*.tlb
|
||||||
|
*.tli
|
||||||
|
*.tlh
|
||||||
|
*.tmp
|
||||||
|
*.tmp_proj
|
||||||
|
*.log
|
||||||
|
*.vspscc
|
||||||
|
*.vssscc
|
||||||
|
.builds
|
||||||
|
*.pidb
|
||||||
|
*.svclog
|
||||||
|
*.scc
|
||||||
|
|
||||||
|
# Chutzpah Test files
|
||||||
|
_Chutzpah*
|
||||||
|
|
||||||
|
# Visual C++ cache files
|
||||||
|
ipch/
|
||||||
|
*.aps
|
||||||
|
*.ncb
|
||||||
|
*.opendb
|
||||||
|
*.opensdf
|
||||||
|
*.sdf
|
||||||
|
*.cachefile
|
||||||
|
|
||||||
|
# Visual Studio profiler
|
||||||
|
*.psess
|
||||||
|
*.vsp
|
||||||
|
*.vspx
|
||||||
|
*.sap
|
||||||
|
|
||||||
|
# TFS 2012 Local Workspace
|
||||||
|
$tf/
|
||||||
|
|
||||||
|
# Guidance Automation Toolkit
|
||||||
|
*.gpState
|
||||||
|
|
||||||
|
# ReSharper is a .NET coding add-in
|
||||||
|
_ReSharper*/
|
||||||
|
*.[Rr]e[Ss]harper
|
||||||
|
*.DotSettings.user
|
||||||
|
|
||||||
|
# JustCode is a .NET coding add-in
|
||||||
|
.JustCode
|
||||||
|
|
||||||
|
# TeamCity is a build add-in
|
||||||
|
_TeamCity*
|
||||||
|
|
||||||
|
# DotCover is a Code Coverage Tool
|
||||||
|
*.dotCover
|
||||||
|
|
||||||
|
# NCrunch
|
||||||
|
_NCrunch_*
|
||||||
|
.*crunch*.local.xml
|
||||||
|
nCrunchTemp_*
|
||||||
|
|
||||||
|
# MightyMoose
|
||||||
|
*.mm.*
|
||||||
|
AutoTest.Net/
|
||||||
|
|
||||||
|
# Web workbench (sass)
|
||||||
|
.sass-cache/
|
||||||
|
|
||||||
|
# Installshield output folder
|
||||||
|
[Ee]xpress/
|
||||||
|
|
||||||
|
# DocProject is a documentation generator add-in
|
||||||
|
DocProject/buildhelp/
|
||||||
|
DocProject/Help/*.HxT
|
||||||
|
DocProject/Help/*.HxC
|
||||||
|
DocProject/Help/*.hhc
|
||||||
|
DocProject/Help/*.hhk
|
||||||
|
DocProject/Help/*.hhp
|
||||||
|
DocProject/Help/Html2
|
||||||
|
DocProject/Help/html
|
||||||
|
|
||||||
|
# Click-Once directory
|
||||||
|
publish/
|
||||||
|
|
||||||
|
# Publish Web Output
|
||||||
|
*.[Pp]ublish.xml
|
||||||
|
*.azurePubxml
|
||||||
|
# TODO: Comment the next line if you want to checkin your web deploy settings
|
||||||
|
# but database connection strings (with potential passwords) will be unencrypted
|
||||||
|
*.pubxml
|
||||||
|
*.publishproj
|
||||||
|
|
||||||
|
# NuGet Packages
|
||||||
|
*.nupkg
|
||||||
|
# The packages folder can be ignored because of Package Restore
|
||||||
|
**/packages/*
|
||||||
|
# except build/, which is used as an MSBuild target.
|
||||||
|
!**/packages/build/
|
||||||
|
# Uncomment if necessary however generally it will be regenerated when needed
|
||||||
|
#!**/packages/repositories.config
|
||||||
|
# NuGet v3's project.json files produces more ignoreable files
|
||||||
|
*.nuget.props
|
||||||
|
*.nuget.targets
|
||||||
|
|
||||||
|
# Microsoft Azure Build Output
|
||||||
|
csx/
|
||||||
|
*.build.csdef
|
||||||
|
|
||||||
|
# Microsoft Azure Emulator
|
||||||
|
ecf/
|
||||||
|
rcf/
|
||||||
|
|
||||||
|
# Microsoft Azure ApplicationInsights config file
|
||||||
|
ApplicationInsights.config
|
||||||
|
|
||||||
|
# Windows Store app package directory
|
||||||
|
AppPackages/
|
||||||
|
BundleArtifacts/
|
||||||
|
|
||||||
|
# Visual Studio cache files
|
||||||
|
# files ending in .cache can be ignored
|
||||||
|
*.[Cc]ache
|
||||||
|
# but keep track of directories ending in .cache
|
||||||
|
!*.[Cc]ache/
|
||||||
|
|
||||||
|
# Others
|
||||||
|
ClientBin/
|
||||||
|
~$*
|
||||||
|
*~
|
||||||
|
*.dbmdl
|
||||||
|
*.dbproj.schemaview
|
||||||
|
*.pfx
|
||||||
|
*.publishsettings
|
||||||
|
node_modules/
|
||||||
|
orleans.codegen.cs
|
||||||
|
|
||||||
|
# RIA/Silverlight projects
|
||||||
|
Generated_Code/
|
||||||
|
|
||||||
|
# Backup & report files from converting an old project file
|
||||||
|
# to a newer Visual Studio version. Backup files are not needed,
|
||||||
|
# because we have git ;-)
|
||||||
|
_UpgradeReport_Files/
|
||||||
|
Backup*/
|
||||||
|
UpgradeLog*.XML
|
||||||
|
UpgradeLog*.htm
|
||||||
|
|
||||||
|
# SQL Server files
|
||||||
|
*.mdf
|
||||||
|
*.ldf
|
||||||
|
|
||||||
|
# Business Intelligence projects
|
||||||
|
*.rdl.data
|
||||||
|
*.bim.layout
|
||||||
|
*.bim_*.settings
|
||||||
|
|
||||||
|
# Microsoft Fakes
|
||||||
|
FakesAssemblies/
|
||||||
|
|
||||||
|
# GhostDoc plugin setting file
|
||||||
|
*.GhostDoc.xml
|
||||||
|
|
||||||
|
# Node.js Tools for Visual Studio
|
||||||
|
.ntvs_analysis.dat
|
||||||
|
|
||||||
|
# Visual Studio 6 build log
|
||||||
|
*.plg
|
||||||
|
|
||||||
|
# Visual Studio 6 workspace options file
|
||||||
|
*.opt
|
||||||
|
|
||||||
|
# Visual Studio LightSwitch build output
|
||||||
|
**/*.HTMLClient/GeneratedArtifacts
|
||||||
|
**/*.DesktopClient/GeneratedArtifacts
|
||||||
|
**/*.DesktopClient/ModelManifest.xml
|
||||||
|
**/*.Server/GeneratedArtifacts
|
||||||
|
**/*.Server/ModelManifest.xml
|
||||||
|
_Pvt_Extensions
|
||||||
|
|
||||||
|
# Paket dependency manager
|
||||||
|
.paket/paket.exe
|
||||||
|
|
||||||
|
# FAKE - F# Make
|
||||||
|
.fake/
|
||||||
18
Stadium_Viewer.sln
Normal file
18
Stadium_Viewer.sln
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||||
|
# Visual Studio 2010
|
||||||
|
# SharpDevelop 5.1
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Stadium_Viewer", "Stadium_Viewer\Stadium_Viewer.csproj", "{65D9D223-0FB6-4CA8-BF8C-6242BF62F284}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{65D9D223-0FB6-4CA8-BF8C-6242BF62F284}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{65D9D223-0FB6-4CA8-BF8C-6242BF62F284}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{65D9D223-0FB6-4CA8-BF8C-6242BF62F284}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{65D9D223-0FB6-4CA8-BF8C-6242BF62F284}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
75
Stadium_Viewer/BigEndian.cs
Normal file
75
Stadium_Viewer/BigEndian.cs
Normal file
|
|
@ -0,0 +1,75 @@
|
||||||
|
/*
|
||||||
|
* Created by SharpDevelop.
|
||||||
|
* User: sergi
|
||||||
|
* Date: 08/02/2017
|
||||||
|
* Time: 1:11
|
||||||
|
*
|
||||||
|
* To change this template use Tools | Options | Coding | Edit Standard Headers.
|
||||||
|
*/
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace Stadium_Viewer
|
||||||
|
{
|
||||||
|
public static class BigEndian
|
||||||
|
{
|
||||||
|
public static uint ToUInt32(byte[] data, int offset)
|
||||||
|
{
|
||||||
|
int val = 0;
|
||||||
|
val |= data[offset + 0] << 24;
|
||||||
|
val |= data[offset + 1] << 16;
|
||||||
|
val |= data[offset + 2] << 8;
|
||||||
|
val |= data[offset + 3] << 0;
|
||||||
|
return (uint)val;
|
||||||
|
}
|
||||||
|
public static ushort ToUInt16(byte[] data, int offset)
|
||||||
|
{
|
||||||
|
int val = 0;
|
||||||
|
val |= data[offset + 0] << 8;
|
||||||
|
val |= data[offset + 1] << 0;
|
||||||
|
return (ushort)val;
|
||||||
|
}
|
||||||
|
public static int ToInt32(byte[] data, int offset)
|
||||||
|
{
|
||||||
|
int val = 0;
|
||||||
|
val |= data[offset + 0] << 24;
|
||||||
|
val |= data[offset + 1] << 16;
|
||||||
|
val |= data[offset + 2] << 8;
|
||||||
|
val |= data[offset + 3] << 0;
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
public static short ToInt16(byte[] data, int offset)
|
||||||
|
{
|
||||||
|
int val = 0;
|
||||||
|
val |= data[offset + 0] << 8;
|
||||||
|
val |= data[offset + 1] << 0;
|
||||||
|
return (short)val;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static byte[] GetBytes(int value)
|
||||||
|
{
|
||||||
|
return Invert(BitConverter.GetBytes(value));
|
||||||
|
}
|
||||||
|
public static byte[] GetBytes(short value)
|
||||||
|
{
|
||||||
|
return Invert(BitConverter.GetBytes(value));
|
||||||
|
}
|
||||||
|
public static byte[] GetBytes(uint value)
|
||||||
|
{
|
||||||
|
return Invert(BitConverter.GetBytes(value));
|
||||||
|
}
|
||||||
|
public static byte[] GetBytes(ushort value)
|
||||||
|
{
|
||||||
|
return Invert(BitConverter.GetBytes(value));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static byte[] Invert(byte[] data)
|
||||||
|
{
|
||||||
|
byte[] result = new byte[data.Length];
|
||||||
|
int o = 0;
|
||||||
|
int i = data.Length;
|
||||||
|
while (o != data.Length)
|
||||||
|
result[--i] = data[o++];
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
161
Stadium_Viewer/FileIO.cs
Normal file
161
Stadium_Viewer/FileIO.cs
Normal file
|
|
@ -0,0 +1,161 @@
|
||||||
|
/*
|
||||||
|
* Created by SharpDevelop.
|
||||||
|
* User: sergi
|
||||||
|
* Date: 07/02/2017
|
||||||
|
* Time: 19:13
|
||||||
|
*
|
||||||
|
* To change this template use Tools | Options | Coding | Edit Standard Headers.
|
||||||
|
*/
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Data;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
|
namespace Stadium_Viewer
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Description of FileIO.
|
||||||
|
/// </summary>
|
||||||
|
public class FileIO
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Reads data into a complete array, throwing an EndOfStreamException
|
||||||
|
/// if the stream runs out of data first, or if an IOException
|
||||||
|
/// naturally occurs.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="stream">The stream to read data from</param>
|
||||||
|
/// <param name="data">The array to read bytes into. The array
|
||||||
|
/// will be completely filled from the stream, so an appropriate
|
||||||
|
/// size must be given.</param>
|
||||||
|
private static void ReadWholeArray (Stream stream, ref byte[] data)
|
||||||
|
{
|
||||||
|
int offset=0;
|
||||||
|
int remaining = data.Length;
|
||||||
|
while (remaining > 0)
|
||||||
|
{
|
||||||
|
int read = stream.Read(data, offset, remaining);
|
||||||
|
if (read <= 0)
|
||||||
|
throw new EndOfStreamException
|
||||||
|
(String.Format("End of stream reached with {0} bytes left to read", remaining));
|
||||||
|
remaining -= read;
|
||||||
|
offset += read;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private static void _read_data(ref byte [] buffer, string path)
|
||||||
|
{
|
||||||
|
System.IO.FileStream saveFile;
|
||||||
|
saveFile = new FileStream(path, FileMode.Open);
|
||||||
|
if (saveFile.Length < 1){
|
||||||
|
MessageBox.Show("Invalid file length", "Error");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
buffer = new byte[saveFile.Length];
|
||||||
|
//MessageBox.Show(buffer.Length.ToString());
|
||||||
|
ReadWholeArray(saveFile, ref buffer);
|
||||||
|
saveFile.Close();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
public static int load_file(ref byte[] buffer, ref string path, string filter)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (path == null)
|
||||||
|
{
|
||||||
|
OpenFileDialog openFD = new OpenFileDialog();
|
||||||
|
//openFD.InitialDirectory = "c:\\";
|
||||||
|
openFD.Filter = filter;
|
||||||
|
if (openFD.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
#region filename
|
||||||
|
path = openFD.FileName;
|
||||||
|
//MessageBox.Show(path.ToString());
|
||||||
|
#endregion
|
||||||
|
_read_data(ref buffer, path);
|
||||||
|
//MessageBox.Show(buffer.Length.ToString());
|
||||||
|
return buffer.Length;
|
||||||
|
}else{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_read_data(ref buffer, path);
|
||||||
|
return buffer.Length;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
private static byte[] dsvfoot = new byte[] {
|
||||||
|
0x7C, 0x3C, 0x2D, 0x2D, 0x53, 0x6E, 0x69, 0x70, 0x20, 0x61, 0x62, 0x6F,
|
||||||
|
0x76, 0x65, 0x20, 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x63,
|
||||||
|
0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x72, 0x61, 0x77, 0x20,
|
||||||
|
0x73, 0x61, 0x76, 0x20, 0x62, 0x79, 0x20, 0x65, 0x78, 0x63, 0x6C, 0x75,
|
||||||
|
0x64, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x44, 0x65,
|
||||||
|
0x53, 0x6D, 0x75, 0x4D, 0x45, 0x20, 0x73, 0x61, 0x76, 0x65, 0x64, 0x61,
|
||||||
|
0x74, 0x61, 0x20, 0x66, 0x6F, 0x6F, 0x74, 0x65, 0x72, 0x3A, 0x00, 0x00,
|
||||||
|
0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x2D,
|
||||||
|
0x44, 0x45, 0x53, 0x4D, 0x55, 0x4D, 0x45, 0x20, 0x53, 0x41, 0x56, 0x45,
|
||||||
|
0x2D, 0x7C
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
public static void save_data(byte[] buffer)
|
||||||
|
{ //if (savegamename.Text.Length < 1) return;
|
||||||
|
if (buffer == null) return;
|
||||||
|
SaveFileDialog saveFD = new SaveFileDialog();
|
||||||
|
//saveFD.InitialDirectory = "c:\\";
|
||||||
|
saveFD.Filter = "NDS RAW save data|*.sav|NDS Desmune/Drastic save data|*.dsv|All Files (*.*)|*.*";
|
||||||
|
if (saveFD.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
System.IO.FileStream saveFile;
|
||||||
|
saveFile = new FileStream(saveFD.FileName, FileMode.Create);
|
||||||
|
|
||||||
|
//Write file
|
||||||
|
var extension = Path.GetExtension(saveFD.FileName);
|
||||||
|
switch(extension.ToLower())
|
||||||
|
{
|
||||||
|
case ".sav":
|
||||||
|
//Write file
|
||||||
|
saveFile.Write(buffer, 0, buffer.Length);
|
||||||
|
break;
|
||||||
|
/*
|
||||||
|
case ".dsv":
|
||||||
|
//Add dsv footer
|
||||||
|
byte[] dsv_save = new byte[SAV5.SIZERAW+122];
|
||||||
|
buffer.CopyTo(dsv_save, 0);
|
||||||
|
dsvfoot.CopyTo(dsv_save, SAV5.SIZERAW);
|
||||||
|
//Write file
|
||||||
|
saveFile.Write( dsv_save, 0, dsv_save.Length);
|
||||||
|
break;
|
||||||
|
*/
|
||||||
|
default:
|
||||||
|
//throw new ArgumentOutOfRangeException(extension);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
saveFile.Close();
|
||||||
|
MessageBox.Show("File Saved.", "Save file");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static void save_file(byte[] buffer, string filter)
|
||||||
|
{ //if (savegamename.Text.Length < 1) return;
|
||||||
|
if (buffer == null) return;
|
||||||
|
SaveFileDialog saveFD = new SaveFileDialog();
|
||||||
|
//saveFD.InitialDirectory = "c:\\";
|
||||||
|
saveFD.Filter = filter;
|
||||||
|
if (saveFD.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
System.IO.FileStream saveFile;
|
||||||
|
saveFile = new FileStream(saveFD.FileName, FileMode.Create);
|
||||||
|
//Write file
|
||||||
|
saveFile.Write(buffer, 0, buffer.Length);
|
||||||
|
saveFile.Close();
|
||||||
|
MessageBox.Show("File Saved.", "Save file");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
1959
Stadium_Viewer/MainForm.Designer.cs
generated
Normal file
1959
Stadium_Viewer/MainForm.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
486
Stadium_Viewer/MainForm.cs
Normal file
486
Stadium_Viewer/MainForm.cs
Normal file
|
|
@ -0,0 +1,486 @@
|
||||||
|
/*
|
||||||
|
* Created by SharpDevelop.
|
||||||
|
* User: sergi
|
||||||
|
* Date: 07/02/2017
|
||||||
|
* Time: 19:12
|
||||||
|
*
|
||||||
|
* To change this template use Tools | Options | Coding | Edit Standard Headers.
|
||||||
|
*/
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Data;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
|
namespace Stadium_Viewer
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Description of MainForm.
|
||||||
|
/// </summary>
|
||||||
|
public partial class MainForm : Form
|
||||||
|
{
|
||||||
|
public MainForm()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// The InitializeComponent() call is required for Windows Forms designer support.
|
||||||
|
//
|
||||||
|
InitializeComponent();
|
||||||
|
PartySlot.Value = 0;
|
||||||
|
offset_val.Maximum = 0xFFFFFFFF;
|
||||||
|
trainer_start = fifties_tournament;
|
||||||
|
trainers.SelectedIndex = 0;
|
||||||
|
cups.SelectedIndex = 0;
|
||||||
|
|
||||||
|
//
|
||||||
|
// TODO: Add constructor code after the InitializeComponent() call.
|
||||||
|
//
|
||||||
|
}
|
||||||
|
public string z64filter = "N64 rom|*.z64|All Files (*.*)|*.*";
|
||||||
|
public string jpk1filter = "PkHex JPK1|*.jpk1|All Files (*.*)|*.*";
|
||||||
|
public byte[] savebuffer;
|
||||||
|
public static js1pk pokemon;
|
||||||
|
|
||||||
|
public int trainer_start;
|
||||||
|
public int fifties_tournament = 0x175980;
|
||||||
|
public int pokecup = 0x177690;
|
||||||
|
public int greatcup = 0x178610;
|
||||||
|
public int ultracup = 0x179590;
|
||||||
|
public int mastercup = 0x17A510;
|
||||||
|
|
||||||
|
void Load_butClick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
load_rom(null);
|
||||||
|
}
|
||||||
|
void load_rom(string filepath)
|
||||||
|
{
|
||||||
|
string path = filepath;
|
||||||
|
int filesize = FileIO.load_file(ref savebuffer, ref path, z64filter);
|
||||||
|
|
||||||
|
if( filesize == 0x1000000 )
|
||||||
|
{
|
||||||
|
filelocation.Text = path;
|
||||||
|
offset_val.Value = trainer_start;
|
||||||
|
load_pokemon();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MessageBox.Show("Invalid file.");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
void load_pokemon()
|
||||||
|
{
|
||||||
|
if (filelocation.Text != "")
|
||||||
|
{
|
||||||
|
offset_val.Value = (int)(trainer_start+(trainers.SelectedIndex*js1pk.Size*6)+(trainers.SelectedIndex*0x10)+(PartySlot.Value*js1pk.Size));
|
||||||
|
pokemon = new js1pk(getDatafromSave((int)offset_val.Value, js1pk.Size));
|
||||||
|
|
||||||
|
//Fill data
|
||||||
|
Species.SelectedIndex = pokemon.Species;
|
||||||
|
ID.Value = pokemon.TID;
|
||||||
|
move1.SelectedIndex = pokemon.Move1;
|
||||||
|
move2.SelectedIndex = pokemon.Move2;
|
||||||
|
move3.SelectedIndex = pokemon.Move3;
|
||||||
|
move4.SelectedIndex = pokemon.Move4;
|
||||||
|
|
||||||
|
ppup1.SelectedIndex = pokemon.Move1_PPUps;
|
||||||
|
ppup2.SelectedIndex = pokemon.Move2_PPUps;
|
||||||
|
ppup3.SelectedIndex = pokemon.Move3_PPUps;
|
||||||
|
ppup4.SelectedIndex = pokemon.Move4_PPUps;
|
||||||
|
|
||||||
|
|
||||||
|
hp.Value = pokemon.IV_HP;
|
||||||
|
atk.Value = pokemon.IV_ATK;
|
||||||
|
def.Value = pokemon.IV_DEF;
|
||||||
|
spc.Value = pokemon.IV_SPC;
|
||||||
|
spe.Value = pokemon.IV_SPE;
|
||||||
|
|
||||||
|
hpEv.Value = pokemon.EV_HP;
|
||||||
|
atkEv.Value = pokemon.EV_ATK;
|
||||||
|
defEv.Value = pokemon.EV_DEF;
|
||||||
|
spcEv.Value = pokemon.EV_SPC;
|
||||||
|
speEv.Value = pokemon.EV_SPE;
|
||||||
|
|
||||||
|
//Stats
|
||||||
|
hpStat.Text = pokemon.Stat_HPCurrent.ToString()+"/"+pokemon.Stat_HPMax;
|
||||||
|
atkStat.Text = pokemon.Stat_ATK.ToString();
|
||||||
|
defStat.Text = pokemon.Stat_DEF.ToString();
|
||||||
|
spcStat.Text = pokemon.Stat_SPC.ToString();
|
||||||
|
speStat.Text = pokemon.Stat_SPE.ToString();
|
||||||
|
|
||||||
|
level.Value = pokemon.Stat_Level;
|
||||||
|
exp.Value = pokemon.EXP;
|
||||||
|
|
||||||
|
//Extra data
|
||||||
|
type1.SelectedIndex = pokemon.Type_A;
|
||||||
|
type2.SelectedIndex = pokemon.Type_B;
|
||||||
|
catchrate.Value = pokemon.Catch_Rate;
|
||||||
|
status.Text = "0x"+pokemon.Status_Condition.ToString("X");
|
||||||
|
|
||||||
|
//OT and nickname
|
||||||
|
otraw.Text = pokemon.raw_OT();
|
||||||
|
nickraw.Text = pokemon.raw_Nick();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
byte[] getDatafromSave(int Offset, int Length)
|
||||||
|
{
|
||||||
|
return savebuffer.Skip(Offset).Take(Length).ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
void PartySlotValueChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
load_pokemon();
|
||||||
|
}
|
||||||
|
void MainFormLoad(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
void Offset_valValueChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
//load_pokemon();
|
||||||
|
}
|
||||||
|
void Jpk1Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
FileIO.save_file(pokemon.convertojpk1(), jpk1filter);
|
||||||
|
}
|
||||||
|
void CupsSelectedIndexChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
trainers.Items.Clear();
|
||||||
|
trainers.Items.AddRange(new object[] {
|
||||||
|
"0: Bug Catcher",
|
||||||
|
"1: Burglar",
|
||||||
|
"2: Bird Keeper",
|
||||||
|
"3: Picnicker",
|
||||||
|
"4: Super Nerd",
|
||||||
|
"5: Youngster",
|
||||||
|
"6: Camper",
|
||||||
|
"7: Lass"});
|
||||||
|
|
||||||
|
switch(cups.SelectedIndex)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
trainer_start = fifties_tournament;
|
||||||
|
trainers.Items.Clear();
|
||||||
|
trainers.Items.AddRange(new object[] {
|
||||||
|
"0: Katou Kazuhito",
|
||||||
|
"1: Yukiyo Jiro",
|
||||||
|
"2: Takahashi Jun",
|
||||||
|
"3: Toru",
|
||||||
|
"4: Suzuki Yusuke",
|
||||||
|
"5: Fujita Mika",
|
||||||
|
"6: Hiro Hayashiyasu",
|
||||||
|
"7: Yamadataka Hisa",
|
||||||
|
"8: Kitagawa Yasunori",
|
||||||
|
"9: Nishimura Shun",
|
||||||
|
"10: Imai Daisuke",
|
||||||
|
"11: Yuwamasa Kenji",
|
||||||
|
"12: Hiroki Yoshii",
|
||||||
|
"13: Tomitaisei Yoshi",
|
||||||
|
"14: Hiro Fuchiwakiaki"});
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
trainer_start = pokecup;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
trainer_start = greatcup;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
trainer_start = ultracup;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
trainer_start = mastercup;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
trainers.SelectedIndex = 0;
|
||||||
|
PartySlot.Value = 0;
|
||||||
|
load_pokemon();
|
||||||
|
}
|
||||||
|
void TrainersSelectedIndexChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
PartySlot.Value = 0;
|
||||||
|
load_pokemon();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
chartable[0x00] = 0x00 //NULL
|
||||||
|
chartable[0x01] = 0xA5A4 //イ゛ //SPECIAL (2 CHARACTERS) A5A4 + A59B
|
||||||
|
chartable[0x02] = 0xA5F4 //ヴ
|
||||||
|
chartable[0x03] = 0xA5A8 //エ゛ //SPECIAL (2 CHARACTERS) A5A8 + A59B
|
||||||
|
chartable[0x04] = 0xA5AA //オ゛ //SPECIAL (2 CHARACTERS) A5AA + A59B
|
||||||
|
chartable[0x05] = 0xA5AC //ガ
|
||||||
|
chartable[0x06] = 0xA5AE //ギ
|
||||||
|
chartable[0x07] = 0xA5B0 //グ
|
||||||
|
chartable[0x08] = 0xA5B2 //ゲ
|
||||||
|
chartable[0x09] = 0xA5B4 //ゴ
|
||||||
|
chartable[0x0A] = 0xA5B6 //ザ
|
||||||
|
chartable[0x0B] = 0xA5B8 //ジ
|
||||||
|
chartable[0x0C] = 0xA5BA //ズ
|
||||||
|
chartable[0x0D] = 0xA5BC //ゼ
|
||||||
|
chartable[0x0E] = 0xA5BE //ゾ
|
||||||
|
chartable[0x0F] = 0xA5C0 //ダ
|
||||||
|
|
||||||
|
chartable[0x10] = 0xA5C2 //ヂ
|
||||||
|
chartable[0x11] = 0xA5C5 //ヅ
|
||||||
|
chartable[0x12] = 0xA5C7 //デ
|
||||||
|
chartable[0x13] = 0xA5C9 //ド
|
||||||
|
chartable[0x14] = 0xA5CA //ナ゛ //SPECIAL (2 CHARACTERS) A5CA + A59B
|
||||||
|
chartable[0x15] = 0xA5CB //ニ゛ //SPECIAL (2 CHARACTERS) A5CB + A59B
|
||||||
|
chartable[0x16] = 0xA5CC //ヌ゛ //SPECIAL (2 CHARACTERS) A5CC + A59B
|
||||||
|
chartable[0x17] = 0xA5CD //ネ゛ //SPECIAL (2 CHARACTERS) A5CD + A59B
|
||||||
|
chartable[0x18] = 0xA5CE //ノ゛ //SPECIAL (2 CHARACTERS) A5CE + A59B
|
||||||
|
chartable[0x19] = 0xA5D0 //バ
|
||||||
|
chartable[0x1A] = 0xA5D3 //ビ
|
||||||
|
chartable[0x1B] = 0xA5D6 //ブ
|
||||||
|
chartable[0x1C] = 0xA5DC //ボ
|
||||||
|
chartable[0x1D] = 0xA5DE //マ゛ //SPECIAL (2 CHARACTERS) A5DE + A59B
|
||||||
|
chartable[0x1E] = 0xA5DF //ミ゛ //SPECIAL (2 CHARACTERS) A5DF + A59B
|
||||||
|
chartable[0x1F] = 0xA5E0 //ム゛ //SPECIAL (2 CHARACTERS) A5E0 + A59B
|
||||||
|
|
||||||
|
chartable[0x20] = 0xA5A3 //ィ゛ //SPECIAL (2 CHARACTERS) A5A3 + A59B
|
||||||
|
chartable[0x21] = 0xA542 //あ゛ //SPECIAL (2 CHARACTERS) A543 + A59B
|
||||||
|
chartable[0x22] = 0xA544 //い゛ //SPECIAL (2 CHARACTERS) A544 + A59B
|
||||||
|
chartable[0x23] = 0xA5F4 //ゔ
|
||||||
|
chartable[0x24] = 0xA548 //え゛ //SPECIAL (2 CHARACTERS) A548 + A59B
|
||||||
|
chartable[0x25] = 0xA54A //お゛ //SPECIAL (2 CHARACTERS) A54A + A59B
|
||||||
|
chartable[0x26] = 0xA54C //が
|
||||||
|
chartable[0x27] = 0xA54E //ぎ
|
||||||
|
chartable[0x28] = 0xA550 //ぐ
|
||||||
|
chartable[0x29] = 0xA552 //げ
|
||||||
|
chartable[0x2A] = 0xA554 //ご
|
||||||
|
chartable[0x2B] = 0xA556 //ざ
|
||||||
|
chartable[0x2C] = 0xA558 //じ
|
||||||
|
chartable[0x2D] = 0xA55A //ず
|
||||||
|
chartable[0x2E] = 0xA55C //ぜ
|
||||||
|
chartable[0x2F] = 0xA55E //ぞ
|
||||||
|
|
||||||
|
chartable[0x30] = 0xA560 //だ
|
||||||
|
chartable[0x31] = 0xA562 //ぢ
|
||||||
|
chartable[0x32] = 0xA565 //づ
|
||||||
|
chartable[0x33] = 0xA567 //で
|
||||||
|
chartable[0x34] = 0xA569 //ど
|
||||||
|
chartable[0x35] = 0xA56A //な゛ //SPECIAL (2 CHARACTERS) A56A + A59B
|
||||||
|
chartable[0x36] = 0xA56B //に゛ //SPECIAL (2 CHARACTERS) A56B + A59B
|
||||||
|
chartable[0x37] = 0xA56C //ぬ゛ //SPECIAL (2 CHARACTERS) A56C + A59B
|
||||||
|
chartable[0x38] = 0xA56D //ね゛ //SPECIAL (2 CHARACTERS) A56D + A59B
|
||||||
|
chartable[0x39] = 0xA56E //の゛ //SPECIAL (2 CHARACTERS) A56E + A59B
|
||||||
|
chartable[0x3A] = 0xA570 //ば
|
||||||
|
chartable[0x3B] = 0xA573 //び
|
||||||
|
chartable[0x3C] = 0xA576 //ぶ
|
||||||
|
chartable[0x3D] = 0xA579 //べ
|
||||||
|
chartable[0x3E] = 0xA57C //ぼ
|
||||||
|
chartable[0x3F] = 0xA57E //ま゛ //SPECIAL (2 CHARACTERS) A57E + A59B
|
||||||
|
|
||||||
|
chartable[0x40] = 0xA5D1 //パ
|
||||||
|
chartable[0x41] = 0xA5D4 //ピ
|
||||||
|
chartable[0x42] = 0xA5D7 //プ
|
||||||
|
chartable[0x43] = 0xA5DD //ポ
|
||||||
|
chartable[0x44] = 0xA571 //ぱ
|
||||||
|
chartable[0x45] = 0xA574 //ぴ
|
||||||
|
chartable[0x46] = 0xA577 //ぷ
|
||||||
|
chartable[0x47] = 0xA57A //ぺ
|
||||||
|
chartable[0x48] = 0xA57D //ぽ
|
||||||
|
chartable[0x49] = 0xA57E //ま゜ //SPECIAL (2 CHARACTERS) A57E + A59C
|
||||||
|
chartable[0x4A] = 0x00 //Control
|
||||||
|
chartable[0x4B] = 0x00 //Control
|
||||||
|
chartable[0x4C] = 0x00 //Control
|
||||||
|
chartable[0x4D] = 0xA5 //も゜
|
||||||
|
chartable[0x4E] = 0x00 //Control
|
||||||
|
chartable[0x4F] = 0x00 //Control
|
||||||
|
|
||||||
|
|
||||||
|
chartable[0x50] = 0x00 //Control
|
||||||
|
chartable[0x51] = 0x00 //Control
|
||||||
|
chartable[0x52] = 0x00 //Control
|
||||||
|
chartable[0x53] = 0x00 //Control
|
||||||
|
chartable[0x54] = 0x00 //Control
|
||||||
|
chartable[0x55] = 0x00 //Control
|
||||||
|
chartable[0x56] = 0x00 //Control
|
||||||
|
chartable[0x57] = 0x00 //Control
|
||||||
|
chartable[0x58] = 0x00 //Control
|
||||||
|
chartable[0x59] = 0x00 //Control
|
||||||
|
chartable[0x5A] = 0x00 //Control
|
||||||
|
chartable[0x5B] = 0x00 //Control
|
||||||
|
chartable[0x5C] = 0x00 //Control
|
||||||
|
chartable[0x5D] = 0x00 //Control
|
||||||
|
chartable[0x5E] = 0x00 //Control
|
||||||
|
chartable[0x5F] = 0x00 //Control
|
||||||
|
|
||||||
|
chartable[0x60] = 0xA541 //A
|
||||||
|
chartable[0x61] = 0xA542 //B
|
||||||
|
chartable[0x62] = 0xA543 //C
|
||||||
|
chartable[0x63] = 0xA544 //D
|
||||||
|
chartable[0x64] = 0xA545 //E
|
||||||
|
chartable[0x65] = 0xA546 //F
|
||||||
|
chartable[0x66] = 0xA547 //G
|
||||||
|
chartable[0x67] = 0xA548 //H
|
||||||
|
chartable[0x68] = 0xA549 //I
|
||||||
|
chartable[0x69] = 0xA556 //V
|
||||||
|
chartable[0x6A] = 0xA553 //S
|
||||||
|
chartable[0x6B] = 0xA543 //L
|
||||||
|
chartable[0x6C] = 0xA54D //M
|
||||||
|
chartable[0x6D] = 0xA53A //:
|
||||||
|
chartable[0x6E] = 0xA543 //ぃ
|
||||||
|
chartable[0x6F] = 0xA545 //ぅ
|
||||||
|
|
||||||
|
chartable[0x70] = 0xA50C //「
|
||||||
|
chartable[0x71] = 0xA50D //」
|
||||||
|
chartable[0x72] = 0xA50E //『
|
||||||
|
chartable[0x73] = 0xA50F //』
|
||||||
|
chartable[0x74] = 0xA5FB //・
|
||||||
|
chartable[0x75] = 0xA526 //…
|
||||||
|
chartable[0x76] = 0xA541 //ぁ
|
||||||
|
chartable[0x77] = 0xA547 //ぇ
|
||||||
|
chartable[0x78] = 0xA549 //ぉ
|
||||||
|
chartable[0x79] = 0 //Unknown unicode
|
||||||
|
chartable[0x7A] = 0xA53D //=
|
||||||
|
chartable[0x7B] = 0 //Unknown unicode
|
||||||
|
chartable[0x7C] = 0xA57C //| ****The character in GB is actually two ||
|
||||||
|
chartable[0x7D] = 0 //Unknown unicode
|
||||||
|
chartable[0x7E] = 0 //Unknown unicode
|
||||||
|
chartable[0x7F] = 0xA520 // space character
|
||||||
|
|
||||||
|
chartable[0x80] = 0xA5A2 //ア
|
||||||
|
chartable[0x81] = 0xA5A4 //イ
|
||||||
|
chartable[0x82] = 0xA5A6 //ウ
|
||||||
|
chartable[0x83] = 0xA5A8 //エ
|
||||||
|
chartable[0x84] = 0xA5AA //オ
|
||||||
|
chartable[0x85] = 0xA5AB //カ
|
||||||
|
chartable[0x86] = 0xA5AD //キ
|
||||||
|
chartable[0x87] = 0xA5AF //ク
|
||||||
|
chartable[0x88] = 0xA5B1 //ケ
|
||||||
|
chartable[0x89] = 0xA5B3 //コ
|
||||||
|
chartable[0x8A] = 0xA5B5 //サ
|
||||||
|
chartable[0x8B] = 0xA5B7 //シ
|
||||||
|
chartable[0x8C] = 0xA5B9 //ス
|
||||||
|
chartable[0x8D] = 0xA5BB //セ
|
||||||
|
chartable[0x8E] = 0xA5BD //ソ
|
||||||
|
chartable[0x8E] = 0xA5BF //タ
|
||||||
|
|
||||||
|
|
||||||
|
chartable[0x90] = 0xA5C1 //チ
|
||||||
|
chartable[0x91] = 0xA5C4 //ツ
|
||||||
|
chartable[0x92] = 0xA5C6 //テ
|
||||||
|
chartable[0x93] = 0xA5C8 //ト
|
||||||
|
chartable[0x94] = 0xA5CA //ナ
|
||||||
|
chartable[0x95] = 0xA5CB //ニ
|
||||||
|
chartable[0x96] = 0xA5CC //ヌ
|
||||||
|
chartable[0x97] = 0xA5CD //ネ
|
||||||
|
chartable[0x98] = 0xA5CE //ノ
|
||||||
|
chartable[0x99] = 0xA5CF //ハ
|
||||||
|
chartable[0x9A] = 0xA5D2 //ヒ
|
||||||
|
chartable[0x9B] = 0xA5D5 //フ
|
||||||
|
chartable[0x9C] = 0xA5DB //ホ
|
||||||
|
chartable[0x9D] = 0xA5DE //マ
|
||||||
|
chartable[0x9E] = 0xA5DF //ミ
|
||||||
|
chartable[0x9F] = 0xA5E0 //ム
|
||||||
|
|
||||||
|
chartable[0xA0] = 0xA5E1 //メ
|
||||||
|
chartable[0xA1] = 0xA5E2 //モ
|
||||||
|
chartable[0xA2] = 0xA5E4 //ヤ
|
||||||
|
chartable[0xA3] = 0xA5E6 //ユ
|
||||||
|
chartable[0xA4] = 0xA5E8 //ヨ
|
||||||
|
chartable[0xA5] = 0xA5E9 //ラ
|
||||||
|
chartable[0xA6] = 0xA5EB //ル
|
||||||
|
chartable[0xA7] = 0xA5EC //レ
|
||||||
|
chartable[0xA8] = 0xA5ED //ロ
|
||||||
|
chartable[0xA9] = 0xA5EF //ワ
|
||||||
|
chartable[0xAA] = 0xA5F2 //ヲ
|
||||||
|
chartable[0xAB] = 0xA5F3 //ン
|
||||||
|
chartable[0xAC] = 0xA5C3 //ッ
|
||||||
|
chartable[0xAD] = 0xA5E3 //ャ
|
||||||
|
chartable[0xAE] = 0xA5E5 //ュ
|
||||||
|
chartable[0xAF] = 0xA5E7 //ョ
|
||||||
|
|
||||||
|
|
||||||
|
chartable[0xB0] = 0xA5A3 //ィ
|
||||||
|
chartable[0xB1] = 0xA542 //あ
|
||||||
|
chartable[0xB2] = 0xA544 //い
|
||||||
|
chartable[0xB3] = 0xA546 //う
|
||||||
|
chartable[0xB4] = 0xA548 //え
|
||||||
|
chartable[0xB5] = 0xA54A //お
|
||||||
|
chartable[0xB6] = 0xA54B //か
|
||||||
|
chartable[0xB7] = 0xA54D //き
|
||||||
|
chartable[0xB8] = 0xA54F //く
|
||||||
|
chartable[0xB9] = 0xA551 //け
|
||||||
|
chartable[0xBA] = 0xA553 //さ
|
||||||
|
chartable[0xBB] = 0xA555 //こ
|
||||||
|
chartable[0xBC] = 0xA557 //し
|
||||||
|
chartable[0xBD] = 0xA559 //す
|
||||||
|
chartable[0xBE] = 0xA55B //せ
|
||||||
|
chartable[0xBF] = 0xA55D //そ
|
||||||
|
|
||||||
|
chartable[0xc0] = 0xA55F //た
|
||||||
|
chartable[0xc1] = 0xA561 //ち
|
||||||
|
chartable[0xc2] = 0xA564 //つ
|
||||||
|
chartable[0xc3] = 0xA566 //て
|
||||||
|
chartable[0xc4] = 0xA568 //と
|
||||||
|
chartable[0xc5] = 0xA56A //な
|
||||||
|
chartable[0xc6] = 0xA56B //に
|
||||||
|
chartable[0xc7] = 0xA56C //ぬ
|
||||||
|
chartable[0xc8] = 0xA56D //ね
|
||||||
|
chartable[0xc9] = 0xA56E //の
|
||||||
|
chartable[0xcA] = 0xA56F //は
|
||||||
|
chartable[0xcB] = 0xA572 //ひ
|
||||||
|
chartable[0xcC] = 0xA575 //ふ
|
||||||
|
chartable[0xcD] = 0xA58 //へ
|
||||||
|
chartable[0xcE] = 0xA57B //ほ
|
||||||
|
chartable[0xcF] = 0xA57E //ま
|
||||||
|
|
||||||
|
chartable[0xD0] = 0xA57F //み
|
||||||
|
chartable[0xD1] = 0xA580 //む
|
||||||
|
chartable[0xD2] = 0xA581 //め
|
||||||
|
chartable[0xD3] = 0xA582 //も
|
||||||
|
chartable[0xD4] = 0xA584 //や
|
||||||
|
chartable[0xD5] = 0xA586 //ゆ
|
||||||
|
chartable[0xD6] = 0xA588 //よ
|
||||||
|
chartable[0xD7] = 0xA589 //ら
|
||||||
|
chartable[0xD8] = 0xA58A //り
|
||||||
|
chartable[0xD9] = 0xA58B //る
|
||||||
|
chartable[0xDA] = 0xA58C //れ
|
||||||
|
chartable[0xDB] = 0xA58D //ろ
|
||||||
|
chartable[0xDC] = 0xA58F //わ //small version isn't in GB charset (A58E)
|
||||||
|
chartable[0xDD] = 0xA592 //を
|
||||||
|
chartable[0xDE] = 0xA593 //ん
|
||||||
|
chartable[0xDF] = 0xA563 //っ
|
||||||
|
|
||||||
|
chartable[0xE0] = 0xA583 //ゃ
|
||||||
|
chartable[0xE1] = 0xA585 //ゅ
|
||||||
|
chartable[0xE2] = 0xA587 //ょ
|
||||||
|
chartable[0xE3] = 0xA5FC //ー
|
||||||
|
chartable[0xE4] = 0xA59C //゜ //needs special handling
|
||||||
|
chartable[0xE5] = 0xA59B //゛ //needs special handling
|
||||||
|
chartable[0xE6] = 0xA53F //?
|
||||||
|
chartable[0xE7] = 0xA521 //!
|
||||||
|
chartable[0xE8] = 0xA502 //。
|
||||||
|
chartable[0xE9] = 0xA5A1 //ァ
|
||||||
|
chartable[0xEA] = 0xA5A5 //ゥ
|
||||||
|
chartable[0xEB] = 0xA5A7 //ェ
|
||||||
|
chartable[0xEC] = 0xA5B7 //▷
|
||||||
|
chartable[0xED] = 0xA5B6 //▶
|
||||||
|
chartable[0xEE] = 0xA5BC //▼
|
||||||
|
chartable[0xEF] = 0xA542 //♂
|
||||||
|
|
||||||
|
|
||||||
|
chartable[0xF0] = 0xA5A5 //円 //Yen sign, conflicts with ゥ (0xEA in GB table)
|
||||||
|
chartable[0xF1] = 0xA5D7 //×
|
||||||
|
chartable[0xF2] = 0xA52E //.
|
||||||
|
chartable[0xF3] = 0xA52F //'/'
|
||||||
|
chartable[0xF4] = 0xA5A9 //ォ
|
||||||
|
chartable[0xF5] = 0xA540 //♀
|
||||||
|
chartable[0xF6] = 0xA530 //0
|
||||||
|
chartable[0xF7] = 0xA531 //1
|
||||||
|
chartable[0xF8] = 0xA532 //2
|
||||||
|
chartable[0xF9] = 0xA533 //3
|
||||||
|
chartable[0xFA] = 0xA534 //4
|
||||||
|
chartable[0xFB] = 0xA535 //5
|
||||||
|
chartable[0xFC] = 0xA536 //6
|
||||||
|
chartable[0xFD] = 0xA537 //7
|
||||||
|
chartable[0xFE] = 0xA538 //8
|
||||||
|
chartable[0xFF] = 0xA539 //9
|
||||||
|
*/
|
||||||
120
Stadium_Viewer/MainForm.resx
Normal file
120
Stadium_Viewer/MainForm.resx
Normal file
|
|
@ -0,0 +1,120 @@
|
||||||
|
<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
||||||
31
Stadium_Viewer/Program.cs
Normal file
31
Stadium_Viewer/Program.cs
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
/*
|
||||||
|
* Created by SharpDevelop.
|
||||||
|
* User: sergi
|
||||||
|
* Date: 07/02/2017
|
||||||
|
* Time: 19:12
|
||||||
|
*
|
||||||
|
* To change this template use Tools | Options | Coding | Edit Standard Headers.
|
||||||
|
*/
|
||||||
|
using System;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace Stadium_Viewer
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Class with program entry point.
|
||||||
|
/// </summary>
|
||||||
|
internal sealed class Program
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Program entry point.
|
||||||
|
/// </summary>
|
||||||
|
[STAThread]
|
||||||
|
private static void Main(string[] args)
|
||||||
|
{
|
||||||
|
Application.EnableVisualStyles();
|
||||||
|
Application.SetCompatibleTextRenderingDefault(false);
|
||||||
|
Application.Run(new MainForm());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
31
Stadium_Viewer/Properties/AssemblyInfo.cs
Normal file
31
Stadium_Viewer/Properties/AssemblyInfo.cs
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
#region Using directives
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
// General Information about an assembly is controlled through the following
|
||||||
|
// set of attributes. Change these attribute values to modify the information
|
||||||
|
// associated with an assembly.
|
||||||
|
[assembly: AssemblyTitle("Stadium_Viewer")]
|
||||||
|
[assembly: AssemblyDescription("")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("")]
|
||||||
|
[assembly: AssemblyProduct("Stadium_Viewer")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright 2017")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
|
// This sets the default COM visibility of types in the assembly to invisible.
|
||||||
|
// If you need to expose a type to COM, use [ComVisible(true)] on that type.
|
||||||
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
|
// The assembly version has following format :
|
||||||
|
//
|
||||||
|
// Major.Minor.Build.Revision
|
||||||
|
//
|
||||||
|
// You can specify all the values or you can use the default the Revision and
|
||||||
|
// Build Numbers by using the '*' as shown below:
|
||||||
|
[assembly: AssemblyVersion("1.0.*")]
|
||||||
73
Stadium_Viewer/Stadium_Viewer.csproj
Normal file
73
Stadium_Viewer/Stadium_Viewer.csproj
Normal file
|
|
@ -0,0 +1,73 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
|
||||||
|
<PropertyGroup>
|
||||||
|
<ProjectGuid>{65D9D223-0FB6-4CA8-BF8C-6242BF62F284}</ProjectGuid>
|
||||||
|
<ProjectTypeGuids>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<OutputType>WinExe</OutputType>
|
||||||
|
<RootNamespace>Stadium_Viewer</RootNamespace>
|
||||||
|
<AssemblyName>Stadium_Viewer</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Platform)' == 'AnyCPU' ">
|
||||||
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
<DebugSymbols>True</DebugSymbols>
|
||||||
|
<DebugType>Full</DebugType>
|
||||||
|
<Optimize>False</Optimize>
|
||||||
|
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
<DebugSymbols>False</DebugSymbols>
|
||||||
|
<DebugType>None</DebugType>
|
||||||
|
<Optimize>True</Optimize>
|
||||||
|
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="Microsoft.CSharp">
|
||||||
|
<RequiredTargetFramework>4.0</RequiredTargetFramework>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Core">
|
||||||
|
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Data.DataSetExtensions">
|
||||||
|
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Drawing" />
|
||||||
|
<Reference Include="System.Windows.Forms" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
<Reference Include="System.Xml.Linq">
|
||||||
|
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||||
|
</Reference>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="BigEndian.cs" />
|
||||||
|
<Compile Include="FileIO.cs" />
|
||||||
|
<Compile Include="jpk1.cs" />
|
||||||
|
<Compile Include="js1pk.cs" />
|
||||||
|
<Compile Include="MainForm.cs" />
|
||||||
|
<Compile Include="MainForm.Designer.cs">
|
||||||
|
<DependentUpon>MainForm.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Program.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="app.config" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<EmbeddedResource Include="MainForm.resx">
|
||||||
|
<DependentUpon>MainForm.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
</Project>
|
||||||
6
Stadium_Viewer/app.config
Normal file
6
Stadium_Viewer/app.config
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<configuration>
|
||||||
|
<startup>
|
||||||
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
|
||||||
|
</startup>
|
||||||
|
</configuration>
|
||||||
95
Stadium_Viewer/jpk1.cs
Normal file
95
Stadium_Viewer/jpk1.cs
Normal file
|
|
@ -0,0 +1,95 @@
|
||||||
|
/*
|
||||||
|
* Created by SharpDevelop.
|
||||||
|
* User: sergi
|
||||||
|
* Date: 08/02/2017
|
||||||
|
* Time: 0:47
|
||||||
|
*
|
||||||
|
* To change this template use Tools | Options | Coding | Edit Standard Headers.
|
||||||
|
*/
|
||||||
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace Stadium_Viewer
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Description of jpk1.
|
||||||
|
/// </summary>
|
||||||
|
public class jpk1
|
||||||
|
{
|
||||||
|
public jpk1()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
public int Size = 44;
|
||||||
|
public byte[] Data;
|
||||||
|
public jpk1(byte[] data = null)
|
||||||
|
{
|
||||||
|
Data = data ?? new byte[Size];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//Quite riped from pkhex
|
||||||
|
public int Species
|
||||||
|
{
|
||||||
|
get { return Data[0]; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
Data[0] = (byte)value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Stat_HPCurrent { get { return BigEndian.ToUInt16(Data, 0x1); } set { BigEndian.GetBytes((ushort)value).CopyTo(Data, 0x1); } }
|
||||||
|
public int Status_Condition { get { return Data[4]; } set { Data[4] = (byte)value; } }
|
||||||
|
public int Type_A { get { return Data[5]; } set { Data[5] = (byte)value; } }
|
||||||
|
public int Type_B { get { return Data[6]; } set { Data[6] = (byte)value; } }
|
||||||
|
public int Catch_Rate { get { return Data[7]; } set { Data[7] = (byte)value; } }
|
||||||
|
public int Move1 { get { return Data[8]; } set { Data[8] = (byte) value; } }
|
||||||
|
public int Move2 { get { return Data[9]; } set { Data[9] = (byte)value; } }
|
||||||
|
public int Move3 { get { return Data[10]; } set { Data[10] = (byte)value; } }
|
||||||
|
public int Move4 { get { return Data[11]; } set { Data[11] = (byte)value; } }
|
||||||
|
public int TID { get { return BigEndian.ToUInt16(Data, 0xC); } set { BigEndian.GetBytes((ushort)value).CopyTo(Data, 0xC); } }
|
||||||
|
public uint EXP
|
||||||
|
{
|
||||||
|
get { return (BigEndian.ToUInt32(Data, 0xE) >> 8) & 0x00FFFFFF; }
|
||||||
|
set { Array.Copy(BigEndian.GetBytes((value << 8) & 0xFFFFFF00), 0, Data, 0xE, 3); }
|
||||||
|
}
|
||||||
|
public int EV_HP { get { return BigEndian.ToUInt16(Data, 0x11); } set { BigEndian.GetBytes((ushort)value).CopyTo(Data, 0x11); } }
|
||||||
|
public int EV_ATK { get { return BigEndian.ToUInt16(Data, 0x13); } set { BigEndian.GetBytes((ushort)value).CopyTo(Data, 0x13); } }
|
||||||
|
public int EV_DEF { get { return BigEndian.ToUInt16(Data, 0x15); } set { BigEndian.GetBytes((ushort)value).CopyTo(Data, 0x15); } }
|
||||||
|
public int EV_SPE { get { return BigEndian.ToUInt16(Data, 0x17); } set { BigEndian.GetBytes((ushort)value).CopyTo(Data, 0x17); } }
|
||||||
|
public int EV_SPC { get { return BigEndian.ToUInt16(Data, 0x19); } set { BigEndian.GetBytes((ushort)value).CopyTo(Data, 0x19); } }
|
||||||
|
public int EV_SPA { get { return EV_SPC; } set { EV_SPC = value; } }
|
||||||
|
public int EV_SPD { get { return EV_SPC; } set { } }
|
||||||
|
public ushort DV16 { get { return BigEndian.ToUInt16(Data, 0x1B); } set { BigEndian.GetBytes(value).CopyTo(Data, 0x1B); } }
|
||||||
|
public int IV_HP { get { return ((IV_ATK & 1) << 3) | ((IV_DEF & 1) << 2) | ((IV_SPE & 1) << 1) | ((IV_SPC & 1) << 0); } set { } }
|
||||||
|
public int IV_ATK { get { return (DV16 >> 12) & 0xF; } set { DV16 = (ushort)((DV16 & ~(0xF << 12)) | (ushort)((value > 0xF ? 0xF : value) << 12)); } }
|
||||||
|
public int IV_DEF { get { return (DV16 >> 8) & 0xF; } set { DV16 = (ushort)((DV16 & ~(0xF << 8)) | (ushort)((value > 0xF ? 0xF : value) << 8)); } }
|
||||||
|
public int IV_SPE { get { return (DV16 >> 4) & 0xF; } set { DV16 = (ushort)((DV16 & ~(0xF << 4)) | (ushort)((value > 0xF ? 0xF : value) << 4)); } }
|
||||||
|
public int IV_SPC { get { return (DV16 >> 0) & 0xF; } set { DV16 = (ushort)((DV16 & ~(0xF << 0)) | (ushort)((value > 0xF ? 0xF : value) << 0)); } }
|
||||||
|
public int IV_SPA { get { return IV_SPC; } set { IV_SPC = value; } }
|
||||||
|
public int IV_SPD { get { return IV_SPC; } set { } }
|
||||||
|
public int Move1_PP { get { return Data[0x1D] & 0x3F; } set { Data[0x1D] = (byte)((Data[0x1D] & 0xC0) | (value & 0x3F)); } }
|
||||||
|
public int Move2_PP { get { return Data[0x1E] & 0x3F; } set { Data[0x1E] = (byte)((Data[0x1E] & 0xC0) | (value & 0x3F)); } }
|
||||||
|
public int Move3_PP { get { return Data[0x1F] & 0x3F; } set { Data[0x1F] = (byte)((Data[0x1F] & 0xC0) | (value & 0x3F)); } }
|
||||||
|
public int Move4_PP { get { return Data[0x20] & 0x3F; } set { Data[0x20] = (byte)((Data[0x20] & 0xC0) | (value & 0x3F)); } }
|
||||||
|
public int Move1_PPUps { get { return (Data[0x1D] & 0xC0) >> 6; } set { Data[0x1D] = (byte)((Data[0x1D] & 0x3F) | ((value & 0x3) << 6)); } }
|
||||||
|
public int Move2_PPUps { get { return (Data[0x1E] & 0xC0) >> 6; } set { Data[0x1E] = (byte)((Data[0x1E] & 0x3F) | ((value & 0x3) << 6)); } }
|
||||||
|
public int Move3_PPUps { get { return (Data[0x1F] & 0xC0) >> 6; } set { Data[0x1F] = (byte)((Data[0x1F] & 0x3F) | ((value & 0x3) << 6)); } }
|
||||||
|
public int Move4_PPUps { get { return (Data[0x20] & 0xC0) >> 6; } set { Data[0x20] = (byte)((Data[0x20] & 0x3F) | ((value & 0x3) << 6)); } }
|
||||||
|
|
||||||
|
public int Stat_Level
|
||||||
|
{
|
||||||
|
get { return Data[0x21]; }
|
||||||
|
set { Data[0x21] = (byte)value; Data[0x3] = (byte)value; }
|
||||||
|
}
|
||||||
|
public int Stat_HPMax { get { return BigEndian.ToUInt16(Data, 0x22); } set { BigEndian.GetBytes((ushort)value).CopyTo(Data, 0x22); } }
|
||||||
|
public int Stat_ATK { get { return BigEndian.ToUInt16(Data, 0x24); } set { BigEndian.GetBytes((ushort)value).CopyTo(Data, 0x24); } }
|
||||||
|
public int Stat_DEF { get { return BigEndian.ToUInt16(Data, 0x26); } set { BigEndian.GetBytes((ushort)value).CopyTo(Data, 0x26); } }
|
||||||
|
public int Stat_SPE { get { return BigEndian.ToUInt16(Data, 0x28); } set { BigEndian.GetBytes((ushort)value).CopyTo(Data, 0x28); } }
|
||||||
|
public int Stat_SPC { get { return BigEndian.ToUInt16(Data, 0x2A); } set { BigEndian.GetBytes((ushort)value).CopyTo(Data, 0x2A); } }
|
||||||
|
// Leave SPA and SPD as alias for SPC
|
||||||
|
public int Stat_SPA { get { return Stat_SPC; } set { Stat_SPC = value; } }
|
||||||
|
public int Stat_SPD { get { return Stat_SPC; } set { } }
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
905
Stadium_Viewer/js1pk.cs
Normal file
905
Stadium_Viewer/js1pk.cs
Normal file
|
|
@ -0,0 +1,905 @@
|
||||||
|
/*
|
||||||
|
* Created by SharpDevelop.
|
||||||
|
* User: sergi
|
||||||
|
* Date: 08/02/2017
|
||||||
|
* Time: 0:47
|
||||||
|
*
|
||||||
|
* To change this template use Tools | Options | Coding | Edit Standard Headers.
|
||||||
|
*/
|
||||||
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace Stadium_Viewer
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Description of js1pk.
|
||||||
|
/// </summary>
|
||||||
|
public class js1pk
|
||||||
|
{
|
||||||
|
public js1pk()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
public static int Size = 80;
|
||||||
|
public byte[] Data;
|
||||||
|
public js1pk(byte[] data = null)
|
||||||
|
{
|
||||||
|
Data = data ?? new byte[Size];
|
||||||
|
|
||||||
|
init_table();
|
||||||
|
init_speciestable();
|
||||||
|
}
|
||||||
|
|
||||||
|
//Quite riped from pkhex
|
||||||
|
public int Species
|
||||||
|
{
|
||||||
|
get { return Data[0]; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
Data[0] = (byte)value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Stat_HPCurrent { get { return BigEndian.ToUInt16(Data, 0x2); } set { BigEndian.GetBytes((ushort)value).CopyTo(Data, 0x2); } }
|
||||||
|
public int Status_Condition { get { return Data[5]; } set { Data[5] = (byte)value; } }
|
||||||
|
public int Type_A { get { return Data[6]; } set { Data[6] = (byte)value; } }
|
||||||
|
public int Type_B { get { return Data[7]; } set { Data[7] = (byte)value; } }
|
||||||
|
public int Catch_Rate { get { return Data[8]; } set { Data[8] = (byte)value; } }
|
||||||
|
public int Move1 { get { return Data[9]; } set { Data[9] = (byte) value; } }
|
||||||
|
public int Move2 { get { return Data[10]; } set { Data[10] = (byte)value; } }
|
||||||
|
public int Move3 { get { return Data[11]; } set { Data[11] = (byte)value; } }
|
||||||
|
public int Move4 { get { return Data[12]; } set { Data[12] = (byte)value; } }
|
||||||
|
public int TID { get { return BigEndian.ToUInt16(Data, 0xE); } set { BigEndian.GetBytes((ushort)value).CopyTo(Data, 0xE); } }
|
||||||
|
public uint EXP
|
||||||
|
{
|
||||||
|
get { return (BigEndian.ToUInt32(Data, 0x11) >> 8) & 0x00FFFFFF; }
|
||||||
|
set { Array.Copy(BigEndian.GetBytes((value << 8) & 0xFFFFFF00), 0, Data, 0x11, 3); }
|
||||||
|
}
|
||||||
|
public int EV_HP { get { return BigEndian.ToUInt16(Data, 0x14); } set { BigEndian.GetBytes((ushort)value).CopyTo(Data, 0x14); } }
|
||||||
|
public int EV_ATK { get { return BigEndian.ToUInt16(Data, 0x16); } set { BigEndian.GetBytes((ushort)value).CopyTo(Data, 0x16); } }
|
||||||
|
public int EV_DEF { get { return BigEndian.ToUInt16(Data, 0x18); } set { BigEndian.GetBytes((ushort)value).CopyTo(Data, 0x18); } }
|
||||||
|
public int EV_SPE { get { return BigEndian.ToUInt16(Data, 0x1A); } set { BigEndian.GetBytes((ushort)value).CopyTo(Data, 0x1A); } }
|
||||||
|
public int EV_SPC { get { return BigEndian.ToUInt16(Data, 0x1C); } set { BigEndian.GetBytes((ushort)value).CopyTo(Data, 0x1C); } }
|
||||||
|
public int EV_SPA { get { return EV_SPC; } set { EV_SPC = value; } }
|
||||||
|
public int EV_SPD { get { return EV_SPC; } set { } }
|
||||||
|
public ushort DV16 { get { return BigEndian.ToUInt16(Data, 0x1E); } set { BigEndian.GetBytes(value).CopyTo(Data, 0x1E); } }
|
||||||
|
public int IV_HP { get { return ((IV_ATK & 1) << 3) | ((IV_DEF & 1) << 2) | ((IV_SPE & 1) << 1) | ((IV_SPC & 1) << 0); } set { } }
|
||||||
|
public int IV_ATK { get { return (DV16 >> 12) & 0xF; } set { DV16 = (ushort)((DV16 & ~(0xF << 12)) | (ushort)((value > 0xF ? 0xF : value) << 12)); } }
|
||||||
|
public int IV_DEF { get { return (DV16 >> 8) & 0xF; } set { DV16 = (ushort)((DV16 & ~(0xF << 8)) | (ushort)((value > 0xF ? 0xF : value) << 8)); } }
|
||||||
|
public int IV_SPE { get { return (DV16 >> 4) & 0xF; } set { DV16 = (ushort)((DV16 & ~(0xF << 4)) | (ushort)((value > 0xF ? 0xF : value) << 4)); } }
|
||||||
|
public int IV_SPC { get { return (DV16 >> 0) & 0xF; } set { DV16 = (ushort)((DV16 & ~(0xF << 0)) | (ushort)((value > 0xF ? 0xF : value) << 0)); } }
|
||||||
|
public int IV_SPA { get { return IV_SPC; } set { IV_SPC = value; } }
|
||||||
|
public int IV_SPD { get { return IV_SPC; } set { } }
|
||||||
|
public int Move1_PP { get { return Data[0x20] & 0x3F; } set { Data[0x20] = (byte)((Data[0x1D] & 0xC0) | (value & 0x3F)); } }
|
||||||
|
public int Move2_PP { get { return Data[0x21] & 0x3F; } set { Data[0x21] = (byte)((Data[0x1E] & 0xC0) | (value & 0x3F)); } }
|
||||||
|
public int Move3_PP { get { return Data[0x22] & 0x3F; } set { Data[0x22] = (byte)((Data[0x1F] & 0xC0) | (value & 0x3F)); } }
|
||||||
|
public int Move4_PP { get { return Data[0x23] & 0x3F; } set { Data[0x23] = (byte)((Data[0x20] & 0xC0) | (value & 0x3F)); } }
|
||||||
|
public int Move1_PPUps { get { return (Data[0x20] & 0xC0) >> 6; } set { Data[0x20] = (byte)((Data[0x1D] & 0x3F) | ((value & 0x3) << 6)); } }
|
||||||
|
public int Move2_PPUps { get { return (Data[0x21] & 0xC0) >> 6; } set { Data[0x21] = (byte)((Data[0x1E] & 0x3F) | ((value & 0x3) << 6)); } }
|
||||||
|
public int Move3_PPUps { get { return (Data[0x22] & 0xC0) >> 6; } set { Data[0x22] = (byte)((Data[0x1F] & 0x3F) | ((value & 0x3) << 6)); } }
|
||||||
|
public int Move4_PPUps { get { return (Data[0x23] & 0xC0) >> 6; } set { Data[0x23] = (byte)((Data[0x20] & 0x3F) | ((value & 0x3) << 6)); } }
|
||||||
|
|
||||||
|
public int Stat_Level
|
||||||
|
{
|
||||||
|
get { return Data[0x24]; }
|
||||||
|
set { Data[0x24] = (byte)value; Data[0x4] = (byte)value; }
|
||||||
|
}
|
||||||
|
public int Stat_HPMax { get { return BigEndian.ToUInt16(Data, 0x26); } set { BigEndian.GetBytes((ushort)value).CopyTo(Data, 0x26); } }
|
||||||
|
public int Stat_ATK { get { return BigEndian.ToUInt16(Data, 0x28); } set { BigEndian.GetBytes((ushort)value).CopyTo(Data, 0x26); } }
|
||||||
|
public int Stat_DEF { get { return BigEndian.ToUInt16(Data, 0x2A); } set { BigEndian.GetBytes((ushort)value).CopyTo(Data, 0x28); } }
|
||||||
|
public int Stat_SPE { get { return BigEndian.ToUInt16(Data, 0x2C); } set { BigEndian.GetBytes((ushort)value).CopyTo(Data, 0x2A); } }
|
||||||
|
public int Stat_SPC { get { return BigEndian.ToUInt16(Data, 0x2E); } set { BigEndian.GetBytes((ushort)value).CopyTo(Data, 0x2C); } }
|
||||||
|
// Leave SPA and SPD as alias for SPC
|
||||||
|
public int Stat_SPA { get { return Stat_SPC; } set { Stat_SPC = value; } }
|
||||||
|
public int Stat_SPD { get { return Stat_SPC; } set { } }
|
||||||
|
|
||||||
|
public string raw_Nick()
|
||||||
|
{
|
||||||
|
return BitConverter.ToString(Data, 0x30, 0xF);
|
||||||
|
}
|
||||||
|
public string raw_OT()
|
||||||
|
{
|
||||||
|
return BitConverter.ToString(Data, 0x40, 0xF);
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte[] gb_string(int name) //0 nickname, 1 OT
|
||||||
|
{
|
||||||
|
int offset = 0x30;
|
||||||
|
if (name == 1)
|
||||||
|
offset = 0x40;
|
||||||
|
byte[] jnick = new byte[6];
|
||||||
|
int i, j;
|
||||||
|
UInt16 temp = 0;
|
||||||
|
UInt16 temp2 = 0;
|
||||||
|
for (i=0;i<0x5;i++)
|
||||||
|
{
|
||||||
|
temp = BitConverter.ToUInt16(Data, offset+(i*2));
|
||||||
|
temp = (ushort)((ushort)((temp & 0xff) << 8) | ((temp >> 8) & 0xff));
|
||||||
|
|
||||||
|
temp2 = 0;
|
||||||
|
|
||||||
|
//Handle special ゜ (0xA59C) and ゛ (0xA59B) characters
|
||||||
|
//I don't actually know if the n64 game handles this characters as a separate character,
|
||||||
|
//but since it seems to follow some kind of standard and not use a custom font/encoding like the GB games,
|
||||||
|
//this seems the most reasonable way to do it (without actual knowledge of the specific encoding the game uses)
|
||||||
|
if(i<0x5)
|
||||||
|
{
|
||||||
|
temp2 = BitConverter.ToUInt16(Data, offset+(i*2)+2);
|
||||||
|
temp2 = (ushort)((ushort)((temp2 & 0xff) << 8) | ((temp2 >> 8) & 0xff));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (temp2 == 0xA59C)
|
||||||
|
{
|
||||||
|
if (temp == 0xA5A4)
|
||||||
|
jnick[i] = 0x01;
|
||||||
|
else if (temp == 0xA5A8)
|
||||||
|
jnick[i] = 0x03;
|
||||||
|
else if (temp == 0xA5AA)
|
||||||
|
jnick[i] = 0x04;
|
||||||
|
else if (temp == 0xA5CA)
|
||||||
|
jnick[i] = 0x14;
|
||||||
|
else if (temp == 0xA5CB)
|
||||||
|
jnick[i] = 0x14;
|
||||||
|
else if (temp == 0xA5CC)
|
||||||
|
jnick[i] = 0x16;
|
||||||
|
else if (temp == 0xA5CD)
|
||||||
|
jnick[i] = 0x17;
|
||||||
|
else if (temp == 0xA5CE)
|
||||||
|
jnick[i] = 0x18;
|
||||||
|
else if (temp == 0xA5DE)
|
||||||
|
jnick[i] = 0x1D;
|
||||||
|
else if (temp == 0xA5DF)
|
||||||
|
jnick[i] = 0x1E;
|
||||||
|
else if (temp == 0xA5E0)
|
||||||
|
jnick[i] = 0x1F;
|
||||||
|
else if (temp == 0xA5A3)
|
||||||
|
jnick[i] = 0x20;
|
||||||
|
else if (temp == 0xA542)
|
||||||
|
jnick[i] = 0x21;
|
||||||
|
else if (temp == 0xA544)
|
||||||
|
jnick[i] = 0x22;
|
||||||
|
else if (temp == 0xA548)
|
||||||
|
jnick[i] = 0x24;
|
||||||
|
else if (temp == 0xA54A)
|
||||||
|
jnick[i] = 0x25;
|
||||||
|
else if (temp == 0xA56A)
|
||||||
|
jnick[i] = 0x35;
|
||||||
|
else if (temp == 0xA56B)
|
||||||
|
jnick[i] = 0x36;
|
||||||
|
else if (temp == 0xA56C)
|
||||||
|
jnick[i] = 0x37;
|
||||||
|
else if (temp == 0xA56D)
|
||||||
|
jnick[i] = 0x38;
|
||||||
|
else if (temp == 0xA56E)
|
||||||
|
jnick[i] = 0x39;
|
||||||
|
else if (temp == 0xA57E)
|
||||||
|
jnick[i] = 0x3F;
|
||||||
|
else //This should not happen afaik
|
||||||
|
{
|
||||||
|
MessageBox.Show("Unrecognized n64 string encoding 0x"+temp.ToString("X")+" 0x"+temp2.ToString("X"));
|
||||||
|
jnick[i] = 0x00;
|
||||||
|
}
|
||||||
|
i++;//Skip the special character
|
||||||
|
}
|
||||||
|
else if (temp2 == 0xA59B)
|
||||||
|
{
|
||||||
|
if (temp == 0xA57E)
|
||||||
|
jnick[i] = 0x49;
|
||||||
|
else if (temp == 0xA582)
|
||||||
|
jnick[i] = 0x4D;
|
||||||
|
else //This should not happen afaik
|
||||||
|
{
|
||||||
|
MessageBox.Show("Unrecognized n64 string encoding 0x"+temp.ToString("X")+" 0x"+temp2.ToString("X"));
|
||||||
|
jnick[i] = 0x00;
|
||||||
|
}
|
||||||
|
i++;//Skip the special character
|
||||||
|
}
|
||||||
|
else //Not a special ゜ (0xA59C) or ゛ (0xA59B)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (temp == 0)
|
||||||
|
{
|
||||||
|
jnick[i] = 0x50;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
for (j=0xFF;j>0;j--) //Reverse for loop, because this way characters without special ゜ (0xA59C) or ゛ (0xA59B) are asigned first.
|
||||||
|
{
|
||||||
|
if (temp == 0xA1A1)//Invalid chars are mapped to this
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (chartable[j] == temp)
|
||||||
|
{
|
||||||
|
jnick[i] = (byte)j;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return jnick;
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte[] convertojpk1()
|
||||||
|
{
|
||||||
|
byte [] temparray = new byte[44];
|
||||||
|
jpk1 jpoke = new jpk1(temparray);
|
||||||
|
|
||||||
|
|
||||||
|
jpoke.Species = speciestable[Species];
|
||||||
|
jpoke.Stat_HPCurrent = Stat_HPCurrent;
|
||||||
|
jpoke.Stat_Level = Stat_Level;
|
||||||
|
jpoke.Status_Condition = Status_Condition;
|
||||||
|
jpoke.Type_A = Type_A;
|
||||||
|
jpoke.Type_B = Type_B;
|
||||||
|
jpoke.Catch_Rate = Catch_Rate;
|
||||||
|
jpoke.Move1 = Move1;
|
||||||
|
jpoke.Move2 = Move2;
|
||||||
|
jpoke.Move3 = Move3;
|
||||||
|
jpoke.Move4 = Move4;
|
||||||
|
jpoke.TID = TID;
|
||||||
|
jpoke.EXP = EXP;
|
||||||
|
jpoke.EV_HP = EV_HP;
|
||||||
|
jpoke.EV_ATK = EV_ATK;
|
||||||
|
jpoke.EV_DEF = EV_DEF;
|
||||||
|
jpoke.EV_SPE = EV_SPE;
|
||||||
|
jpoke.EV_SPC = EV_SPC;
|
||||||
|
jpoke.DV16 = DV16;
|
||||||
|
jpoke.Move1_PPUps = Move1_PPUps;
|
||||||
|
jpoke.Move2_PPUps = Move2_PPUps;
|
||||||
|
jpoke.Move3_PPUps = Move3_PPUps;
|
||||||
|
jpoke.Move4_PPUps = Move4_PPUps;
|
||||||
|
jpoke.Stat_HPMax = Stat_HPMax;
|
||||||
|
jpoke.Stat_ATK = Stat_ATK;
|
||||||
|
jpoke.Stat_DEF = Stat_DEF;
|
||||||
|
jpoke.Stat_SPE = Stat_SPE;
|
||||||
|
jpoke.Stat_SPC = Stat_SPC;
|
||||||
|
|
||||||
|
byte[] finalpoke = new byte[59];
|
||||||
|
|
||||||
|
finalpoke[0] = 0x01;
|
||||||
|
finalpoke[1] = (byte)Species;
|
||||||
|
finalpoke[2] = 0xFF;
|
||||||
|
jpoke.Data.CopyTo(finalpoke, 3);
|
||||||
|
|
||||||
|
gb_string(1).CopyTo(finalpoke, 47);//OT
|
||||||
|
gb_string(0).CopyTo(finalpoke, 53);//Nickname
|
||||||
|
|
||||||
|
//To do: NICK and OT conversion
|
||||||
|
|
||||||
|
return finalpoke;
|
||||||
|
|
||||||
|
}
|
||||||
|
internal int[] speciestable = new int[152];
|
||||||
|
internal void init_speciestable()
|
||||||
|
{
|
||||||
|
speciestable[1] = 0x99;
|
||||||
|
speciestable[2] = 0x9;
|
||||||
|
speciestable[3] = 0x9A;
|
||||||
|
speciestable[4] = 0xB0;
|
||||||
|
speciestable[5] = 0xB2;
|
||||||
|
speciestable[6] = 0xB4;
|
||||||
|
speciestable[7] = 0xB1;
|
||||||
|
speciestable[8] = 0xB3;
|
||||||
|
speciestable[9] = 0x1C;
|
||||||
|
speciestable[10] = 0x7B;
|
||||||
|
speciestable[11] = 0x7C;
|
||||||
|
speciestable[12] = 0x7D;
|
||||||
|
speciestable[13] = 0x70;
|
||||||
|
speciestable[14] = 0x71;
|
||||||
|
speciestable[15] = 0x72;
|
||||||
|
speciestable[16] = 0x24;
|
||||||
|
speciestable[17] = 0x96;
|
||||||
|
speciestable[18] = 0x97;
|
||||||
|
speciestable[19] = 0xA5;
|
||||||
|
speciestable[20] = 0xA6;
|
||||||
|
speciestable[21] = 0x5;
|
||||||
|
speciestable[22] = 0x23;
|
||||||
|
speciestable[23] = 0x6C;
|
||||||
|
speciestable[24] = 0x2D;
|
||||||
|
speciestable[25] = 0x54;
|
||||||
|
speciestable[26] = 0x55;
|
||||||
|
speciestable[27] = 0x60;
|
||||||
|
speciestable[28] = 0x61;
|
||||||
|
speciestable[29] = 0x0F;
|
||||||
|
speciestable[30] = 0xA8;
|
||||||
|
speciestable[31] = 0x10;
|
||||||
|
speciestable[32] = 0x3;
|
||||||
|
speciestable[33] = 0xA7;
|
||||||
|
speciestable[34] = 0x7;
|
||||||
|
speciestable[35] = 0x4;
|
||||||
|
speciestable[36] = 0x8E;
|
||||||
|
speciestable[37] = 0x52;
|
||||||
|
speciestable[38] = 0x53;
|
||||||
|
speciestable[39] = 0x64;
|
||||||
|
speciestable[40] = 0x65;
|
||||||
|
speciestable[41] = 0x6B;
|
||||||
|
speciestable[42] = 0x82;
|
||||||
|
speciestable[43] = 0xB9;
|
||||||
|
speciestable[44] = 0xBA;
|
||||||
|
speciestable[45] = 0xBB;
|
||||||
|
speciestable[46] = 0x6D;
|
||||||
|
speciestable[47] = 0x2E;
|
||||||
|
speciestable[48] = 0x41;
|
||||||
|
speciestable[49] = 0x77;
|
||||||
|
speciestable[50] = 0x3B;
|
||||||
|
speciestable[51] = 0x76;
|
||||||
|
speciestable[52] = 0x4D;
|
||||||
|
speciestable[53] = 0x90;
|
||||||
|
speciestable[54] = 0x2F;
|
||||||
|
speciestable[55] = 0x80;
|
||||||
|
speciestable[56] = 0x39;
|
||||||
|
speciestable[57] = 0x75;
|
||||||
|
speciestable[58] = 0x21;
|
||||||
|
speciestable[59] = 0x14;
|
||||||
|
speciestable[60] = 0x47;
|
||||||
|
speciestable[61] = 0x6E;
|
||||||
|
speciestable[62] = 0x6F;
|
||||||
|
speciestable[63] = 0x94;
|
||||||
|
speciestable[64] = 0x26;
|
||||||
|
speciestable[65] = 0x95;
|
||||||
|
speciestable[66] = 0x6A;
|
||||||
|
speciestable[67] = 0x29;
|
||||||
|
speciestable[68] = 0x7E;
|
||||||
|
speciestable[69] = 0xBC;
|
||||||
|
speciestable[70] = 0xBD;
|
||||||
|
speciestable[71] = 0xBE;
|
||||||
|
speciestable[72] = 0x18;
|
||||||
|
speciestable[73] = 0x9B;
|
||||||
|
speciestable[74] = 0xA9;
|
||||||
|
speciestable[75] = 0x27;
|
||||||
|
speciestable[76] = 0x31;
|
||||||
|
speciestable[77] = 0xA3;
|
||||||
|
speciestable[78] = 0xA4;
|
||||||
|
speciestable[79] = 0x25;
|
||||||
|
speciestable[80] = 0x8;
|
||||||
|
speciestable[81] = 0xAD;
|
||||||
|
speciestable[82] = 0x36;
|
||||||
|
speciestable[83] = 0x40;
|
||||||
|
speciestable[84] = 0x46;
|
||||||
|
speciestable[85] = 0x74;
|
||||||
|
speciestable[86] = 0x3A;
|
||||||
|
speciestable[87] = 0x78;
|
||||||
|
speciestable[88] = 0x0D;
|
||||||
|
speciestable[89] = 0x88;
|
||||||
|
speciestable[90] = 0x17;
|
||||||
|
speciestable[91] = 0x8B;
|
||||||
|
speciestable[92] = 0x19;
|
||||||
|
speciestable[93] = 0x93;
|
||||||
|
speciestable[94] = 0x0E;
|
||||||
|
speciestable[95] = 0x22;
|
||||||
|
speciestable[96] = 0x30;
|
||||||
|
speciestable[97] = 0x81;
|
||||||
|
speciestable[98] = 0x4E;
|
||||||
|
speciestable[99] = 0x8A;
|
||||||
|
speciestable[100] = 0x6;
|
||||||
|
speciestable[101] = 0x8D;
|
||||||
|
speciestable[102] = 0x0C;
|
||||||
|
speciestable[103] = 0x0A;
|
||||||
|
speciestable[104] = 0x11;
|
||||||
|
speciestable[105] = 0x91;
|
||||||
|
speciestable[106] = 0x2B;
|
||||||
|
speciestable[107] = 0x2C;
|
||||||
|
speciestable[108] = 0x0B;
|
||||||
|
speciestable[109] = 0x37;
|
||||||
|
speciestable[110] = 0x8F;
|
||||||
|
speciestable[111] = 0x12;
|
||||||
|
speciestable[112] = 0x1;
|
||||||
|
speciestable[113] = 0x28;
|
||||||
|
speciestable[114] = 0x1E;
|
||||||
|
speciestable[115] = 0x2;
|
||||||
|
speciestable[116] = 0x5C;
|
||||||
|
speciestable[117] = 0x5D;
|
||||||
|
speciestable[118] = 0x9D;
|
||||||
|
speciestable[119] = 0x9E;
|
||||||
|
speciestable[120] = 0x1B;
|
||||||
|
speciestable[121] = 0x98;
|
||||||
|
speciestable[122] = 0x2A;
|
||||||
|
speciestable[123] = 0x1A;
|
||||||
|
speciestable[124] = 0x48;
|
||||||
|
speciestable[125] = 0x35;
|
||||||
|
speciestable[126] = 0x33;
|
||||||
|
speciestable[127] = 0x1D;
|
||||||
|
speciestable[128] = 0x3C;
|
||||||
|
speciestable[129] = 0x85;
|
||||||
|
speciestable[130] = 0x16;
|
||||||
|
speciestable[131] = 0x13;
|
||||||
|
speciestable[132] = 0x4C;
|
||||||
|
speciestable[133] = 0x66;
|
||||||
|
speciestable[134] = 0x69;
|
||||||
|
speciestable[135] = 0x68;
|
||||||
|
speciestable[136] = 0x67;
|
||||||
|
speciestable[137] = 0xAA;
|
||||||
|
speciestable[138] = 0x62;
|
||||||
|
speciestable[139] = 0x63;
|
||||||
|
speciestable[140] = 0x5A;
|
||||||
|
speciestable[141] = 0x5B;
|
||||||
|
speciestable[142] = 0xAB;
|
||||||
|
speciestable[143] = 0x84;
|
||||||
|
speciestable[144] = 0x4A;
|
||||||
|
speciestable[145] = 0x4B;
|
||||||
|
speciestable[146] = 0x49;
|
||||||
|
speciestable[147] = 0x58;
|
||||||
|
speciestable[148] = 0x59;
|
||||||
|
speciestable[149] = 0x42;
|
||||||
|
speciestable[150] = 0x83;
|
||||||
|
speciestable[151] = 0x15;
|
||||||
|
/*
|
||||||
|
//Some Gen 1 Missingnos
|
||||||
|
speciestable[] = 0x1F;
|
||||||
|
speciestable[] = 0x20;
|
||||||
|
speciestable[] = 0x32;
|
||||||
|
speciestable[] = 0x34;
|
||||||
|
speciestable[] = 0x38;
|
||||||
|
speciestable[] = 0x3D;
|
||||||
|
speciestable[] = 0x3E;
|
||||||
|
speciestable[] = 0x3F;
|
||||||
|
speciestable[] = 0x43;
|
||||||
|
speciestable[] = 0x44;
|
||||||
|
speciestable[] = 0x45;
|
||||||
|
speciestable[] = 0x4F;
|
||||||
|
speciestable[] = 0x50;
|
||||||
|
speciestable[] = 0x51;
|
||||||
|
speciestable[] = 0x56;
|
||||||
|
speciestable[] = 0x57;
|
||||||
|
speciestable[] = 0x5E;
|
||||||
|
speciestable[] = 0x5F;
|
||||||
|
speciestable[] = 0x73;
|
||||||
|
speciestable[] = 0x79;
|
||||||
|
speciestable[] = 0x7A;
|
||||||
|
speciestable[] = 0x7F;
|
||||||
|
speciestable[] = 0x86;
|
||||||
|
speciestable[] = 0x87;
|
||||||
|
speciestable[] = 0x89;
|
||||||
|
speciestable[] = 0x8C;
|
||||||
|
speciestable[] = 0x92;
|
||||||
|
speciestable[] = 0x9C;
|
||||||
|
speciestable[] = 0x9F;
|
||||||
|
speciestable[] = 0xA0;
|
||||||
|
speciestable[] = 0xA1;
|
||||||
|
speciestable[] = 0xA2;
|
||||||
|
speciestable[] = 0xAC;
|
||||||
|
speciestable[] = 0xAE;
|
||||||
|
speciestable[] = 0xAF;
|
||||||
|
speciestable[] = 0xB5;
|
||||||
|
speciestable[] = 0xB6;
|
||||||
|
speciestable[] = 0xB7;
|
||||||
|
speciestable[] = 0xB8;
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
speciestable[112] = 0x1;
|
||||||
|
speciestable[115] = 0x2;
|
||||||
|
speciestable[32] = 0x3;
|
||||||
|
speciestable[35] = 0x4;
|
||||||
|
speciestable[21] = 0x5;
|
||||||
|
speciestable[100] = 0x6;
|
||||||
|
speciestable[34] = 0x7;
|
||||||
|
speciestable[80] = 0x8;
|
||||||
|
speciestable[2] = 0x9;
|
||||||
|
speciestable[103] = 0x0A;
|
||||||
|
speciestable[108] = 0x0B;
|
||||||
|
speciestable[102] = 0x0C;
|
||||||
|
speciestable[88] = 0x0D;
|
||||||
|
speciestable[94] = 0x0E;
|
||||||
|
speciestable[29] = 0x0F;
|
||||||
|
speciestable[31] = 0x10;
|
||||||
|
speciestable[104] = 0x11;
|
||||||
|
speciestable[111] = 0x12;
|
||||||
|
speciestable[131] = 0x13;
|
||||||
|
speciestable[59] = 0x14;
|
||||||
|
speciestable[151] = 0x15;
|
||||||
|
speciestable[130] = 0x16;
|
||||||
|
speciestable[90] = 0x17;
|
||||||
|
speciestable[72] = 0x18;
|
||||||
|
speciestable[92] = 0x19;
|
||||||
|
speciestable[123] = 0x1A;
|
||||||
|
speciestable[120] = 0x1B;
|
||||||
|
speciestable[9] = 0x1C;
|
||||||
|
speciestable[127] = 0x1D;
|
||||||
|
speciestable[114] = 0x1E;
|
||||||
|
speciestable[58] = 0x21;
|
||||||
|
speciestable[95] = 0x22;
|
||||||
|
speciestable[22] = 0x23;
|
||||||
|
speciestable[16] = 0x24;
|
||||||
|
speciestable[79] = 0x25;
|
||||||
|
speciestable[64] = 0x26;
|
||||||
|
speciestable[75] = 0x27;
|
||||||
|
speciestable[113] = 0x28;
|
||||||
|
speciestable[67] = 0x29;
|
||||||
|
speciestable[122] = 0x2A;
|
||||||
|
speciestable[106] = 0x2B;
|
||||||
|
speciestable[107] = 0x2C;
|
||||||
|
speciestable[24] = 0x2D;
|
||||||
|
speciestable[47] = 0x2E;
|
||||||
|
speciestable[54] = 0x2F;
|
||||||
|
speciestable[96] = 0x30;
|
||||||
|
speciestable[76] = 0x31;
|
||||||
|
speciestable[126] = 0x33;
|
||||||
|
speciestable[125] = 0x35;
|
||||||
|
speciestable[82] = 0x36;
|
||||||
|
speciestable[109] = 0x37;
|
||||||
|
speciestable[56] = 0x39;
|
||||||
|
speciestable[86] = 0x3A;
|
||||||
|
speciestable[50] = 0x3B;
|
||||||
|
speciestable[128] = 0x3C;
|
||||||
|
speciestable[83] = 0x40;
|
||||||
|
speciestable[48] = 0x41;
|
||||||
|
speciestable[149] = 0x42;
|
||||||
|
speciestable[84] = 0x46;
|
||||||
|
speciestable[60] = 0x47;
|
||||||
|
speciestable[124] = 0x48;
|
||||||
|
speciestable[146] = 0x49;
|
||||||
|
speciestable[144] = 0x4A;
|
||||||
|
speciestable[145] = 0x4B;
|
||||||
|
speciestable[132] = 0x4C;
|
||||||
|
speciestable[52] = 0x4D;
|
||||||
|
speciestable[98] = 0x4E;
|
||||||
|
speciestable[37] = 0x52;
|
||||||
|
speciestable[38] = 0x53;
|
||||||
|
speciestable[25] = 0x54;
|
||||||
|
speciestable[26] = 0x55;
|
||||||
|
speciestable[147] = 0x58;
|
||||||
|
speciestable[148] = 0x59;
|
||||||
|
speciestable[140] = 0x5A;
|
||||||
|
speciestable[141] = 0x5B;
|
||||||
|
speciestable[116] = 0x5C;
|
||||||
|
speciestable[117] = 0x5D;
|
||||||
|
speciestable[27] = 0x60;
|
||||||
|
speciestable[28] = 0x61;
|
||||||
|
speciestable[138] = 0x62;
|
||||||
|
speciestable[139] = 0x63;
|
||||||
|
speciestable[39] = 0x64;
|
||||||
|
speciestable[40] = 0x65;
|
||||||
|
speciestable[133] = 0x66;
|
||||||
|
speciestable[136] = 0x67;
|
||||||
|
speciestable[135] = 0x68;
|
||||||
|
speciestable[134] = 0x69;
|
||||||
|
speciestable[66] = 0x6A;
|
||||||
|
speciestable[41] = 0x6B;
|
||||||
|
speciestable[23] = 0x6C;
|
||||||
|
speciestable[46] = 0x6D;
|
||||||
|
speciestable[61] = 0x6E;
|
||||||
|
speciestable[62] = 0x6F;
|
||||||
|
speciestable[13] = 0x70;
|
||||||
|
speciestable[14] = 0x71;
|
||||||
|
speciestable[15] = 0x72;
|
||||||
|
speciestable[85] = 0x74;
|
||||||
|
speciestable[57] = 0x75;
|
||||||
|
speciestable[51] = 0x76;
|
||||||
|
speciestable[49] = 0x77;
|
||||||
|
speciestable[87] = 0x78;
|
||||||
|
speciestable[10] = 0x7B;
|
||||||
|
speciestable[11] = 0x7C;
|
||||||
|
speciestable[12] = 0x7D;
|
||||||
|
speciestable[68] = 0x7E;
|
||||||
|
speciestable[55] = 0x80;
|
||||||
|
speciestable[97] = 0x81;
|
||||||
|
speciestable[42] = 0x82;
|
||||||
|
speciestable[150] = 0x83;
|
||||||
|
speciestable[143] = 0x84;
|
||||||
|
speciestable[129] = 0x85;
|
||||||
|
speciestable[89] = 0x88;
|
||||||
|
speciestable[99] = 0x8A;
|
||||||
|
speciestable[91] = 0x8B;
|
||||||
|
speciestable[101] = 0x8D;
|
||||||
|
speciestable[36] = 0x8E;
|
||||||
|
speciestable[110] = 0x8F;
|
||||||
|
speciestable[53] = 0x90;
|
||||||
|
speciestable[105] = 0x91;
|
||||||
|
speciestable[93] = 0x93;
|
||||||
|
speciestable[63] = 0x94;
|
||||||
|
speciestable[65] = 0x95;
|
||||||
|
speciestable[17] = 0x96;
|
||||||
|
speciestable[18] = 0x97;
|
||||||
|
speciestable[121] = 0x98;
|
||||||
|
speciestable[1] = 0x99;
|
||||||
|
speciestable[3] = 0x9A;
|
||||||
|
speciestable[73] = 0x9B;
|
||||||
|
speciestable[118] = 0x9D;
|
||||||
|
speciestable[119] = 0x9E;
|
||||||
|
speciestable[77] = 0xA3;
|
||||||
|
speciestable[78] = 0xA4;
|
||||||
|
speciestable[19] = 0xA5;
|
||||||
|
speciestable[20] = 0xA6;
|
||||||
|
speciestable[33] = 0xA7;
|
||||||
|
speciestable[30] = 0xA8;
|
||||||
|
speciestable[74] = 0xA9;
|
||||||
|
speciestable[137] = 0xAA;
|
||||||
|
speciestable[142] = 0xAB;
|
||||||
|
speciestable[81] = 0xAD;
|
||||||
|
speciestable[4] = 0xB0;
|
||||||
|
speciestable[7] = 0xB1;
|
||||||
|
speciestable[5] = 0xB2;
|
||||||
|
speciestable[8] = 0xB3;
|
||||||
|
speciestable[6] = 0xB4;
|
||||||
|
speciestable[43] = 0xB9;
|
||||||
|
speciestable[44] = 0xBA;
|
||||||
|
speciestable[45] = 0xBB;
|
||||||
|
speciestable[69] = 0xBC;
|
||||||
|
speciestable[70] = 0xBD;
|
||||||
|
speciestable[71] = 0xBE;
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
internal UInt16[] chartable = new UInt16[256];
|
||||||
|
internal void init_table()
|
||||||
|
{
|
||||||
|
//All commented chars become 0xA1A1 in stadium (space character)
|
||||||
|
chartable[0x00] = 0x00; //NULL
|
||||||
|
//chartable[0x01] = 0xA5A4; //イ゛ //SPECIAL (2 CHARACTERS) A5A4 + A59B
|
||||||
|
//chartable[0x02] = 0xA5F4; //ヴ
|
||||||
|
//chartable[0x03] = 0xA5A8; //エ゛ //SPECIAL (2 CHARACTERS) A5A8 + A59B
|
||||||
|
//chartable[0x04] = 0xA5AA; //オ゛ //SPECIAL (2 CHARACTERS) A5AA + A59B
|
||||||
|
chartable[0x05] = 0xA5AC; //ガ
|
||||||
|
chartable[0x06] = 0xA5AE; //ギ
|
||||||
|
chartable[0x07] = 0xA5B0; //グ
|
||||||
|
chartable[0x08] = 0xA5B2; //ゲ
|
||||||
|
chartable[0x09] = 0xA5B4; //ゴ
|
||||||
|
chartable[0x0A] = 0xA5B6; //ザ
|
||||||
|
chartable[0x0B] = 0xA5B8; //ジ
|
||||||
|
chartable[0x0C] = 0xA5BA; //ズ
|
||||||
|
chartable[0x0D] = 0xA5BC; //ゼ
|
||||||
|
chartable[0x0E] = 0xA5BE; //ゾ
|
||||||
|
chartable[0x0F] = 0xA5C0; //ダ
|
||||||
|
|
||||||
|
chartable[0x10] = 0xA5C2; //ヂ
|
||||||
|
chartable[0x11] = 0xA5C5; //ヅ
|
||||||
|
chartable[0x12] = 0xA5C7; //デ
|
||||||
|
chartable[0x13] = 0xA5C9; //ド
|
||||||
|
//chartable[0x14] = 0xA5CA; //ナ゛ //SPECIAL (2 CHARACTERS) A5CA + A59B
|
||||||
|
//chartable[0x15] = 0xA5CB; //ニ゛ //SPECIAL (2 CHARACTERS) A5CB + A59B
|
||||||
|
//chartable[0x16] = 0xA5CC; //ヌ゛ //SPECIAL (2 CHARACTERS) A5CC + A59B
|
||||||
|
//chartable[0x17] = 0xA5CD; //ネ゛ //SPECIAL (2 CHARACTERS) A5CD + A59B
|
||||||
|
//chartable[0x18] = 0xA5CE; //ノ゛ //SPECIAL (2 CHARACTERS) A5CE + A59B
|
||||||
|
chartable[0x19] = 0xA5D0; //バ
|
||||||
|
chartable[0x1A] = 0xA5D3; //ビ
|
||||||
|
chartable[0x1B] = 0xA5D6; //ブ
|
||||||
|
chartable[0x1C] = 0xA5DC; //ボ
|
||||||
|
//chartable[0x1D] = 0xA5DE; //マ゛ //SPECIAL (2 CHARACTERS) A5DE + A59B
|
||||||
|
//chartable[0x1E] = 0xA5DF; //ミ゛ //SPECIAL (2 CHARACTERS) A5DF + A59B
|
||||||
|
//chartable[0x1F] = 0xA5E0; //ム゛ //SPECIAL (2 CHARACTERS) A5E0 + A59B
|
||||||
|
|
||||||
|
//chartable[0x20] = 0xA5A3; //ィ゛ //SPECIAL (2 CHARACTERS) A5A3 + A59B
|
||||||
|
//chartable[0x21] = 0xA542; //あ゛ //SPECIAL (2 CHARACTERS) A543 + A59B
|
||||||
|
//chartable[0x22] = 0xA544; //い゛ //SPECIAL (2 CHARACTERS) A544 + A59B
|
||||||
|
//chartable[0x23] = 0xA5F4; //ゔ
|
||||||
|
//chartable[0x24] = 0xA548; //え゛ //SPECIAL (2 CHARACTERS) A548 + A59B
|
||||||
|
//chartable[0x25] = 0xA54A; //お゛ //SPECIAL (2 CHARACTERS) A54A + A59B
|
||||||
|
chartable[0x26] = 0xA4AC; //が
|
||||||
|
chartable[0x27] = 0xA4AE; //ぎ
|
||||||
|
chartable[0x28] = 0xA4B0; //ぐ
|
||||||
|
chartable[0x29] = 0xA4B2; //げ
|
||||||
|
chartable[0x2A] = 0xA4B4; //ご
|
||||||
|
chartable[0x2B] = 0xA4B6; //ざ
|
||||||
|
chartable[0x2C] = 0xA4B8; //じ
|
||||||
|
chartable[0x2D] = 0xA4BA; //ず
|
||||||
|
chartable[0x2E] = 0xA4BC; //ぜ
|
||||||
|
chartable[0x2F] = 0xA4BE; //ぞ
|
||||||
|
|
||||||
|
chartable[0x30] = 0xA4C0; //だ
|
||||||
|
chartable[0x31] = 0xA4C2; //ぢ
|
||||||
|
chartable[0x32] = 0xA4C5; //づ
|
||||||
|
chartable[0x33] = 0xA4C7; //で
|
||||||
|
chartable[0x34] = 0xA4C9; //ど
|
||||||
|
//chartable[0x35] = 0xA56A; //な゛ //SPECIAL (2 CHARACTERS) A56A + A59B
|
||||||
|
//chartable[0x36] = 0xA56B; //に゛ //SPECIAL (2 CHARACTERS) A56B + A59B
|
||||||
|
//chartable[0x37] = 0xA56C; //ぬ゛ //SPECIAL (2 CHARACTERS) A56C + A59B
|
||||||
|
//chartable[0x38] = 0xA56D; //ね゛ //SPECIAL (2 CHARACTERS) A56D + A59B
|
||||||
|
//chartable[0x39] = 0xA56E; //の゛ //SPECIAL (2 CHARACTERS) A56E + A59B
|
||||||
|
chartable[0x3A] = 0xA4D0; //ば
|
||||||
|
chartable[0x3B] = 0xA4D3; //び
|
||||||
|
chartable[0x3C] = 0xA4D6; //ぶ
|
||||||
|
chartable[0x3D] = 0xA4DA; //べ
|
||||||
|
chartable[0x3E] = 0xA4DD; //ぼ
|
||||||
|
//chartable[0x3F] = 0xA57E; //ま゛ //SPECIAL (2 CHARACTERS) A57E + A59B
|
||||||
|
|
||||||
|
//chartable[0x40] = 0xA5D1; //パ
|
||||||
|
//chartable[0x41] = 0xA5D4; //ピ
|
||||||
|
chartable[0x42] = 0xA5D7; //プ
|
||||||
|
chartable[0x43] = 0xA5DD; //ポ
|
||||||
|
chartable[0x44] = 0xA4D1; //ぱ
|
||||||
|
chartable[0x45] = 0xA4D4; //ぴ
|
||||||
|
chartable[0x46] = 0xA4D7; //ぷ
|
||||||
|
//chartable[0x47] = 0xAA; //ぺ
|
||||||
|
//chartable[0x48] = 0xA57D; //ぽ
|
||||||
|
//chartable[0x49] = 0xA57E; //ま゜ //SPECIAL (2 CHARACTERS) A57E + A59C
|
||||||
|
//chartable[0x4A] = 0x00; //Control
|
||||||
|
//chartable[0x4B] = 0x00; //Control
|
||||||
|
//chartable[0x4C] = 0x00; //Control
|
||||||
|
//chartable[0x4D] = 0xA582; //も゜ //SPECIAL (2 CHARACTERS) A582 + A59C
|
||||||
|
//chartable[0x4E] = 0x00; //Control
|
||||||
|
//chartable[0x4F] = 0x00; //Control
|
||||||
|
|
||||||
|
/*
|
||||||
|
chartable[0x50] = 0x00; //Control
|
||||||
|
chartable[0x51] = 0x00; //Control
|
||||||
|
chartable[0x52] = 0x00; //Control
|
||||||
|
chartable[0x53] = 0x00; //Control
|
||||||
|
chartable[0x54] = 0x00; //Control
|
||||||
|
chartable[0x55] = 0x00; //Control
|
||||||
|
chartable[0x56] = 0x00; //Control
|
||||||
|
chartable[0x57] = 0x00; //Control
|
||||||
|
chartable[0x58] = 0x00; //Control
|
||||||
|
chartable[0x59] = 0x00; //Control
|
||||||
|
chartable[0x5A] = 0x00; //Control
|
||||||
|
chartable[0x5B] = 0x00; //Control
|
||||||
|
chartable[0x5C] = 0x00; //Control
|
||||||
|
chartable[0x5D] = 0x00; //Control
|
||||||
|
chartable[0x5E] = 0x00; //Control
|
||||||
|
chartable[0x5F] = 0x00; //Control
|
||||||
|
*/
|
||||||
|
|
||||||
|
chartable[0x60] = 0xA3C1; //A
|
||||||
|
chartable[0x61] = 0xA3C2; //B
|
||||||
|
chartable[0x62] = 0xA3C3; //C
|
||||||
|
chartable[0x63] = 0xA3C4; //D
|
||||||
|
chartable[0x64] = 0xA3C5; //E
|
||||||
|
chartable[0x65] = 0xA3C6; //F
|
||||||
|
chartable[0x66] = 0xA3C7; //G
|
||||||
|
chartable[0x67] = 0xA3C8; //H
|
||||||
|
chartable[0x68] = 0xA3C9; //I
|
||||||
|
chartable[0x69] = 0xA3CA; //V
|
||||||
|
chartable[0x6A] = 0xA3CB; //S
|
||||||
|
chartable[0x6B] = 0xA3CC; //L
|
||||||
|
chartable[0x6C] = 0xA3CD; //M
|
||||||
|
chartable[0x6D] = 0xA5CE; //: //N in stadium 1 jap
|
||||||
|
chartable[0x6E] = 0xA4A3; //ぃ
|
||||||
|
chartable[0x6F] = 0xA4A5; //ぅ
|
||||||
|
|
||||||
|
chartable[0x70] = 0xA3D1; //「 //Q in stadium 1 jap
|
||||||
|
chartable[0x71] = 0xA3D2; //」 //R in stadium 1 jap
|
||||||
|
chartable[0x72] = 0xA3D3; //『 //S in stadium 1 jap
|
||||||
|
chartable[0x73] = 0xA3D4; //』 //T in stadium 1 jap
|
||||||
|
chartable[0x74] = 0xA3D5; //・ //U in stadium 1 jap
|
||||||
|
chartable[0x75] = 0xA3D6; //… //V in stadium 1 jap
|
||||||
|
chartable[0x76] = 0xA4A1; //ぁ
|
||||||
|
chartable[0x77] = 0xA4A7; //ぇ
|
||||||
|
chartable[0x78] = 0xA4A9; //ぉ
|
||||||
|
chartable[0x79] = 0xA3DA; //Unknown unicode //Z in stadium 1 jap
|
||||||
|
//chartable[0x7A] = 0xA53D; //=
|
||||||
|
//chartable[0x7B] = 0; //Unknown unicode
|
||||||
|
//chartable[0x7C] = 0xA57C; //| ****The character in GB is actually two || (need to check if it is a valid in-game text input)
|
||||||
|
//chartable[0x7D] = 0; //Unknown unicode
|
||||||
|
//chartable[0x7E] = 0; //Unknown unicode
|
||||||
|
chartable[0x7F] = 0xA1A1; // space character
|
||||||
|
|
||||||
|
chartable[0x80] = 0xA5A2; //ア
|
||||||
|
chartable[0x81] = 0xA5A4; //イ
|
||||||
|
chartable[0x82] = 0xA5A6; //ウ
|
||||||
|
chartable[0x83] = 0xA5A8; //エ
|
||||||
|
chartable[0x84] = 0xA5AA; //オ
|
||||||
|
chartable[0x85] = 0xA5AB; //カ
|
||||||
|
chartable[0x86] = 0xA5AD; //キ
|
||||||
|
chartable[0x87] = 0xA5AF; //ク
|
||||||
|
chartable[0x88] = 0xA5B1; //ケ
|
||||||
|
chartable[0x89] = 0xA5B3; //コ
|
||||||
|
chartable[0x8A] = 0xA5B5; //サ
|
||||||
|
chartable[0x8B] = 0xA5B7; //シ
|
||||||
|
chartable[0x8C] = 0xA5B9; //ス
|
||||||
|
chartable[0x8D] = 0xA5BB; //セ
|
||||||
|
chartable[0x8E] = 0xA5BD; //ソ
|
||||||
|
chartable[0x8E] = 0xA5BF; //タ
|
||||||
|
|
||||||
|
|
||||||
|
chartable[0x90] = 0xA5C1; //チ
|
||||||
|
chartable[0x91] = 0xA5C4; //ツ
|
||||||
|
chartable[0x92] = 0xA5C6; //テ
|
||||||
|
chartable[0x93] = 0xA5C8; //ト
|
||||||
|
chartable[0x94] = 0xA5CA; //ナ
|
||||||
|
chartable[0x95] = 0xA5CB; //ニ
|
||||||
|
chartable[0x96] = 0xA5CC; //ヌ
|
||||||
|
chartable[0x97] = 0xA5CD; //ネ
|
||||||
|
chartable[0x98] = 0xA5CE; //ノ
|
||||||
|
chartable[0x99] = 0xA5CF; //ハ
|
||||||
|
chartable[0x9A] = 0xA5D2; //ヒ
|
||||||
|
chartable[0x9B] = 0xA5D5; //フ
|
||||||
|
chartable[0x9C] = 0xA5DB; //ホ
|
||||||
|
chartable[0x9D] = 0xA5DE; //マ
|
||||||
|
chartable[0x9E] = 0xA5DF; //ミ
|
||||||
|
chartable[0x9F] = 0xA5E0; //ム
|
||||||
|
|
||||||
|
chartable[0xA0] = 0xA5E1; //メ
|
||||||
|
chartable[0xA1] = 0xA5E2; //モ
|
||||||
|
chartable[0xA2] = 0xA5E4; //ヤ
|
||||||
|
chartable[0xA3] = 0xA5E6; //ユ
|
||||||
|
chartable[0xA4] = 0xA5E8; //ヨ
|
||||||
|
chartable[0xA5] = 0xA5E9; //ラ
|
||||||
|
chartable[0xA6] = 0xA5EB; //ル
|
||||||
|
chartable[0xA7] = 0xA5EC; //レ
|
||||||
|
chartable[0xA8] = 0xA5ED; //ロ
|
||||||
|
chartable[0xA9] = 0xA5EF; //ワ
|
||||||
|
chartable[0xAA] = 0xA5F2; //ヲ
|
||||||
|
chartable[0xAB] = 0xA5F3; //ン
|
||||||
|
chartable[0xAC] = 0xA5C3; //ッ
|
||||||
|
chartable[0xAD] = 0xA5E3; //ャ
|
||||||
|
chartable[0xAE] = 0xA5E5; //ュ
|
||||||
|
chartable[0xAF] = 0xA5E7; //ョ
|
||||||
|
|
||||||
|
|
||||||
|
chartable[0xB0] = 0xA5A3; //ィ
|
||||||
|
chartable[0xB1] = 0xA4A2; //あ
|
||||||
|
chartable[0xB2] = 0xA4A4; //い
|
||||||
|
chartable[0xB3] = 0xA4A6; //う
|
||||||
|
chartable[0xB4] = 0xA4A8; //え
|
||||||
|
chartable[0xB5] = 0xA4AA; //お
|
||||||
|
chartable[0xB6] = 0xA4AB; //か
|
||||||
|
chartable[0xB7] = 0xA4AD; //き
|
||||||
|
chartable[0xB8] = 0xA4AF; //く
|
||||||
|
chartable[0xB9] = 0xA4B1; //け
|
||||||
|
chartable[0xBA] = 0xA4B3; //さ
|
||||||
|
chartable[0xBB] = 0xA4B5; //こ
|
||||||
|
chartable[0xBC] = 0xA4B7; //し
|
||||||
|
chartable[0xBD] = 0xA4B9; //す
|
||||||
|
chartable[0xBE] = 0xA4BB; //せ
|
||||||
|
chartable[0xBF] = 0xA4BD; //そ
|
||||||
|
|
||||||
|
chartable[0xc0] = 0xA4BF; //た
|
||||||
|
chartable[0xc1] = 0xA4C1; //ち
|
||||||
|
chartable[0xc2] = 0xA4C4; //つ
|
||||||
|
chartable[0xc3] = 0xA4C6; //て
|
||||||
|
chartable[0xc4] = 0xA4C8; //と
|
||||||
|
chartable[0xc5] = 0xA4CA; //な
|
||||||
|
chartable[0xc6] = 0xA4CB; //に
|
||||||
|
chartable[0xc7] = 0xA4CC; //ぬ
|
||||||
|
chartable[0xc8] = 0xA4CD; //ね
|
||||||
|
chartable[0xc9] = 0xA4CE; //の
|
||||||
|
chartable[0xcA] = 0xA4CF; //は
|
||||||
|
chartable[0xcB] = 0xA4D2; //ひ
|
||||||
|
chartable[0xcC] = 0xA4D5; //ふ
|
||||||
|
chartable[0xcD] = 0xA4D8; //へ
|
||||||
|
chartable[0xcE] = 0xA4DB; //ほ
|
||||||
|
chartable[0xcF] = 0xA4DE; //ま
|
||||||
|
|
||||||
|
chartable[0xD0] = 0xA4DF; //み
|
||||||
|
chartable[0xD1] = 0xA4E0; //む
|
||||||
|
chartable[0xD2] = 0xA4E1; //め
|
||||||
|
chartable[0xD3] = 0xA4E2; //も
|
||||||
|
chartable[0xD4] = 0xA4E4; //や
|
||||||
|
chartable[0xD5] = 0xA4E6; //ゆ
|
||||||
|
chartable[0xD6] = 0xA4E8; //よ
|
||||||
|
chartable[0xD7] = 0x44E9; //ら
|
||||||
|
chartable[0xD8] = 0xA4EA; //り
|
||||||
|
chartable[0xD9] = 0xA4EB; //る
|
||||||
|
chartable[0xDA] = 0xA4EC; //れ
|
||||||
|
chartable[0xDB] = 0xA4ED; //ろ
|
||||||
|
chartable[0xDC] = 0xA4EF; //わ //small version isn't in GB charset (A58E)
|
||||||
|
chartable[0xDD] = 0xA4F2; //を
|
||||||
|
chartable[0xDE] = 0xA4F3; //ん
|
||||||
|
chartable[0xDF] = 0xA4C3; //っ
|
||||||
|
|
||||||
|
chartable[0xE0] = 0xA4E3; //ゃ
|
||||||
|
chartable[0xE1] = 0xA4E5; //ゅ
|
||||||
|
chartable[0xE2] = 0xA4E7; //ょ
|
||||||
|
chartable[0xE3] = 0xA1BC; //ー
|
||||||
|
chartable[0xE4] = 0xA1A3; //゜ //needs special handling?
|
||||||
|
chartable[0xE5] = 0xA1A5; //゛ //needs special handling?
|
||||||
|
chartable[0xE6] = 0xA1A9; //?
|
||||||
|
chartable[0xE7] = 0xA1AA; //!
|
||||||
|
chartable[0xE8] = 0xA1A; //。 //some sort of ' punctuation, but appers in the bottom in stadium 1 jap
|
||||||
|
chartable[0xE9] = 0xA5A1; //ァ
|
||||||
|
chartable[0xEA] = 0xA5A5; //ゥ
|
||||||
|
chartable[0xEB] = 0xA5A7; //ェ
|
||||||
|
//chartable[0xEC] = 0xA5B7; //▷
|
||||||
|
//chartable[0xED] = 0xA5B6; //▶
|
||||||
|
//chartable[0xEE] = 0xA5BC; //▼
|
||||||
|
chartable[0xEF] = 0xA1E9; //♂
|
||||||
|
|
||||||
|
//chartable[0xF0] = 0xA5A5; //円 //Yen sign, conflicts with ゥ (0xEA in GB table) (need to check if it is a valid in-game text input)
|
||||||
|
//chartable[0xF1] = 0xA5D7; //× //Conflicts with プ (0x42 in GB table) (need to check if it is a valid in-game text input)
|
||||||
|
//chartable[0xF2] = 0xA52E; //.
|
||||||
|
//chartable[0xF3] = 0xA52F; //'/'
|
||||||
|
//chartable[0xF4] = 0xA5A9; //ォ
|
||||||
|
chartable[0xF5] = 0xA1EA; //♀
|
||||||
|
chartable[0xF6] = 0xA3B0; //0
|
||||||
|
chartable[0xF7] = 0xA3B1; //1
|
||||||
|
chartable[0xF8] = 0xA3B2; //2
|
||||||
|
chartable[0xF9] = 0xA3B3; //3
|
||||||
|
chartable[0xFA] = 0xA3B4; //4
|
||||||
|
chartable[0xFB] = 0xA3B5; //5
|
||||||
|
chartable[0xFC] = 0xA3B6; //6
|
||||||
|
chartable[0xFD] = 0xA3B7; //7
|
||||||
|
chartable[0xFE] = 0xA3B8; //8
|
||||||
|
chartable[0xFF] = 0xA3B9; //9
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user