脱离Windows,并跨平台
This commit is contained in:
parent
68e785525d
commit
140de72f79
455
MAME.Core/AxiBitmap/AxiBitmap.cs
Normal file
455
MAME.Core/AxiBitmap/AxiBitmap.cs
Normal file
@ -0,0 +1,455 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace MAME.Core.AxiBitmap
|
||||||
|
{
|
||||||
|
public struct AxiColor
|
||||||
|
{
|
||||||
|
public byte r, g, b, a;
|
||||||
|
// 构造函数
|
||||||
|
public AxiColor(byte _r, byte _g, byte _b)
|
||||||
|
{
|
||||||
|
r = _r;
|
||||||
|
g = _g;
|
||||||
|
b = _b;
|
||||||
|
a = 255;
|
||||||
|
}
|
||||||
|
|
||||||
|
public AxiColor(byte _r, byte _g, byte _b, byte _a)
|
||||||
|
{
|
||||||
|
r = _r;
|
||||||
|
g = _g;
|
||||||
|
b = _b;
|
||||||
|
a = _a;
|
||||||
|
}
|
||||||
|
public static AxiColor FromArgb(int argb)
|
||||||
|
{
|
||||||
|
byte a = (byte)((argb >> 24) & 0xFF);
|
||||||
|
byte r = (byte)((argb >> 16) & 0xFF);
|
||||||
|
byte g = (byte)((argb >> 8) & 0xFF);
|
||||||
|
byte b = (byte)(argb & 0xFF);
|
||||||
|
return new AxiColor { r = r, g = g, b = b, a = a };
|
||||||
|
}
|
||||||
|
public static int ToArgb(AxiColor color)
|
||||||
|
{
|
||||||
|
return (color.a << 24) | (color.r << 16) | (color.g << 8) | color.b;
|
||||||
|
}
|
||||||
|
|
||||||
|
#region 颜色定义
|
||||||
|
public static AxiColor Transparent => new AxiColor(0, 0, 0, 0);
|
||||||
|
public static AxiColor AliceBlue => new AxiColor(240, 248, 255);
|
||||||
|
public static AxiColor AntiqueWhite => new AxiColor(250, 235, 215);
|
||||||
|
public static AxiColor Aqua => new AxiColor(0, 255, 255);
|
||||||
|
public static AxiColor Aquamarine => new AxiColor(127, 255, 212);
|
||||||
|
public static AxiColor Azure => new AxiColor(240, 255, 255);
|
||||||
|
public static AxiColor Beige => new AxiColor(245, 245, 220);
|
||||||
|
public static AxiColor Bisque => new AxiColor(255, 228, 196);
|
||||||
|
public static AxiColor Black => new AxiColor(0, 0, 0);
|
||||||
|
public static AxiColor BlanchedAlmond => new AxiColor(255, 235, 205);
|
||||||
|
public static AxiColor Blue => new AxiColor(0, 0, 255);
|
||||||
|
public static AxiColor BlueViolet => new AxiColor(138, 43, 226);
|
||||||
|
public static AxiColor Brown => new AxiColor(165, 42, 42);
|
||||||
|
public static AxiColor BurlyWood => new AxiColor(222, 184, 135);
|
||||||
|
public static AxiColor CadetBlue => new AxiColor(95, 158, 160);
|
||||||
|
public static AxiColor Chartreuse => new AxiColor(127, 255, 0);
|
||||||
|
public static AxiColor Chocolate => new AxiColor(210, 105, 30);
|
||||||
|
public static AxiColor Coral => new AxiColor(255, 127, 80);
|
||||||
|
public static AxiColor CornflowerBlue => new AxiColor(100, 149, 237);
|
||||||
|
public static AxiColor Cornsilk => new AxiColor(255, 248, 220);
|
||||||
|
public static AxiColor Crimson => new AxiColor(220, 20, 60);
|
||||||
|
public static AxiColor Cyan => new AxiColor(0, 255, 255);
|
||||||
|
public static AxiColor DarkBlue => new AxiColor(0, 0, 139);
|
||||||
|
public static AxiColor DarkCyan => new AxiColor(0, 139, 139);
|
||||||
|
public static AxiColor DarkGoldenrod => new AxiColor(184, 134, 11);
|
||||||
|
public static AxiColor DarkGray => new AxiColor(169, 169, 169);
|
||||||
|
public static AxiColor DarkGreen => new AxiColor(0, 100, 0);
|
||||||
|
public static AxiColor DarkKhaki => new AxiColor(189, 183, 107);
|
||||||
|
public static AxiColor DarkMagenta => new AxiColor(139, 0, 139);
|
||||||
|
public static AxiColor DarkOliveGreen => new AxiColor(85, 107, 47);
|
||||||
|
public static AxiColor DarkOrange => new AxiColor(255, 140, 0);
|
||||||
|
public static AxiColor DarkOrchid => new AxiColor(153, 50, 204);
|
||||||
|
public static AxiColor DarkRed => new AxiColor(139, 0, 0);
|
||||||
|
public static AxiColor DarkSalmon => new AxiColor(233, 150, 122);
|
||||||
|
public static AxiColor DarkSeaGreen => new AxiColor(143, 188, 143);
|
||||||
|
public static AxiColor DarkSlateBlue => new AxiColor(72, 61, 139);
|
||||||
|
public static AxiColor DarkSlateGray => new AxiColor(47, 79, 79);
|
||||||
|
public static AxiColor DarkViolet => new AxiColor(148, 0, 211);
|
||||||
|
public static AxiColor DeepPink => new AxiColor(255, 20, 147);
|
||||||
|
public static AxiColor DeepSkyBlue => new AxiColor(0, 191, 255);
|
||||||
|
public static AxiColor DimGray => new AxiColor(105, 105, 105);
|
||||||
|
public static AxiColor DodgerBlue => new AxiColor(30, 144, 255);
|
||||||
|
public static AxiColor FireBrick => new AxiColor(178, 34, 34);
|
||||||
|
public static AxiColor FloralWhite => new AxiColor(255, 250, 240);
|
||||||
|
public static AxiColor ForestGreen => new AxiColor(34, 139, 34);
|
||||||
|
public static AxiColor Fuchsia => new AxiColor(255, 0, 255);
|
||||||
|
public static AxiColor Gainsboro => new AxiColor(220, 220, 220);
|
||||||
|
public static AxiColor GhostWhite => new AxiColor(248, 248, 255);
|
||||||
|
public static AxiColor Gold => new AxiColor(255, 215, 0);
|
||||||
|
public static AxiColor Goldenrod => new AxiColor(218, 165, 32);
|
||||||
|
public static AxiColor Gray => new AxiColor(128, 128, 128);
|
||||||
|
public static AxiColor Green => new AxiColor(0, 128, 0);
|
||||||
|
public static AxiColor GreenYellow => new AxiColor(173, 255, 47);
|
||||||
|
public static AxiColor Honeydew => new AxiColor(240, 255, 240);
|
||||||
|
public static AxiColor HotPink => new AxiColor(255, 105, 180);
|
||||||
|
public static AxiColor IndianRed => new AxiColor(205, 92, 92);
|
||||||
|
public static AxiColor Indigo => new AxiColor(75, 0, 130);
|
||||||
|
public static AxiColor Ivory => new AxiColor(255, 255, 240);
|
||||||
|
public static AxiColor Khaki => new AxiColor(240, 230, 140);
|
||||||
|
public static AxiColor Lavender => new AxiColor(230, 230, 250);
|
||||||
|
public static AxiColor LavenderBlush => new AxiColor(255, 240, 245);
|
||||||
|
public static AxiColor LawnGreen => new AxiColor(124, 252, 0);
|
||||||
|
public static AxiColor LemonChiffon => new AxiColor(255, 250, 205);
|
||||||
|
public static AxiColor LightBlue => new AxiColor(173, 216, 230);
|
||||||
|
public static AxiColor LightCoral => new AxiColor(240, 128, 128);
|
||||||
|
public static AxiColor LightCyan => new AxiColor(224, 255, 255);
|
||||||
|
public static AxiColor LightGoldenrodYellow => new AxiColor(250, 250, 210);
|
||||||
|
public static AxiColor LightGray => new AxiColor(211, 211, 211);
|
||||||
|
public static AxiColor LightGreen => new AxiColor(144, 238, 144);
|
||||||
|
public static AxiColor LightPink => new AxiColor(255, 182, 193);
|
||||||
|
public static AxiColor LightSalmon => new AxiColor(255, 160, 122);
|
||||||
|
public static AxiColor LightSeaGreen => new AxiColor(32, 178, 170);
|
||||||
|
public static AxiColor LightSkyBlue => new AxiColor(135, 206, 250);
|
||||||
|
public static AxiColor LightSlateGray => new AxiColor(119, 136, 153);
|
||||||
|
public static AxiColor LightYellow => new AxiColor(255, 255, 224);
|
||||||
|
public static AxiColor Lime => new AxiColor(0, 255, 0);
|
||||||
|
public static AxiColor LimeGreen => new AxiColor(50, 205, 50);
|
||||||
|
public static AxiColor Linen => new AxiColor(250, 240, 230);
|
||||||
|
public static AxiColor Magenta => new AxiColor(255, 0, 255);
|
||||||
|
public static AxiColor Maroon => new AxiColor(176, 48, 96);
|
||||||
|
public static AxiColor MediumAquamarine => new AxiColor(102, 205, 170);
|
||||||
|
public static AxiColor MediumBlue => new AxiColor(0, 0, 205);
|
||||||
|
public static AxiColor MediumOrchid => new AxiColor(186, 85, 211);
|
||||||
|
public static AxiColor MediumPurple => new AxiColor(147, 112, 219);
|
||||||
|
public static AxiColor MediumSeaGreen => new AxiColor(60, 179, 113);
|
||||||
|
public static AxiColor MediumSlateBlue => new AxiColor(123, 104, 238);
|
||||||
|
public static AxiColor MediumSpringGreen => new AxiColor(0, 250, 154);
|
||||||
|
public static AxiColor MediumTurquoise => new AxiColor(72, 209, 204);
|
||||||
|
public static AxiColor MediumVioletRed => new AxiColor(199, 21, 133);
|
||||||
|
public static AxiColor MidnightBlue => new AxiColor(25, 25, 112);
|
||||||
|
public static AxiColor MintCream => new AxiColor(245, 255, 250);
|
||||||
|
public static AxiColor MistyRose => new AxiColor(255, 228, 225);
|
||||||
|
public static AxiColor Moccasin => new AxiColor(255, 228, 181);
|
||||||
|
public static AxiColor NavajoWhite => new AxiColor(255, 222, 173);
|
||||||
|
public static AxiColor Navy => new AxiColor(0, 0, 128);
|
||||||
|
public static AxiColor OldLace => new AxiColor(253, 245, 230);
|
||||||
|
public static AxiColor Olive => new AxiColor(128, 128, 0);
|
||||||
|
public static AxiColor OliveDrab => new AxiColor(107, 142, 35);
|
||||||
|
public static AxiColor Orange => new AxiColor(255, 165, 0);
|
||||||
|
public static AxiColor OrangeRed => new AxiColor(255, 69, 0);
|
||||||
|
public static AxiColor Orchid => new AxiColor(218, 112, 214);
|
||||||
|
public static AxiColor PaleGoldenrod => new AxiColor(238, 232, 170);
|
||||||
|
public static AxiColor PaleGreen => new AxiColor(152, 251, 152);
|
||||||
|
public static AxiColor PaleTurquoise => new AxiColor(175, 238, 238);
|
||||||
|
public static AxiColor PaleVioletRed => new AxiColor(219, 112, 147);
|
||||||
|
public static AxiColor PapayaWhip => new AxiColor(255, 239, 213);
|
||||||
|
public static AxiColor PeachPuff => new AxiColor(255, 218, 185);
|
||||||
|
public static AxiColor Peru => new AxiColor(205, 133, 63);
|
||||||
|
public static AxiColor Pink => new AxiColor(255, 192, 203);
|
||||||
|
public static AxiColor Plum => new AxiColor(221, 160, 221);
|
||||||
|
public static AxiColor PowderBlue => new AxiColor(176, 224, 230);
|
||||||
|
public static AxiColor Purple => new AxiColor(160, 32, 240);
|
||||||
|
public static AxiColor Red => new AxiColor(255, 0, 0);
|
||||||
|
public static AxiColor RosyBrown => new AxiColor(188, 143, 143);
|
||||||
|
public static AxiColor RoyalBlue => new AxiColor(65, 105, 225);
|
||||||
|
public static AxiColor SaddleBrown => new AxiColor(139, 69, 19);
|
||||||
|
public static AxiColor Salmon => new AxiColor(250, 128, 114);
|
||||||
|
public static AxiColor SandyBrown => new AxiColor(244, 164, 96);
|
||||||
|
public static AxiColor SeaGreen => new AxiColor(46, 139, 87);
|
||||||
|
public static AxiColor SeaShell => new AxiColor(255, 245, 238);
|
||||||
|
public static AxiColor Sienna => new AxiColor(160, 82, 45);
|
||||||
|
public static AxiColor Silver => new AxiColor(192, 192, 192);
|
||||||
|
public static AxiColor SkyBlue => new AxiColor(135, 206, 235);
|
||||||
|
public static AxiColor SlateBlue => new AxiColor(106, 90, 205);
|
||||||
|
public static AxiColor SlateGray => new AxiColor(112, 128, 144);
|
||||||
|
public static AxiColor Snow => new AxiColor(255, 250, 250);
|
||||||
|
public static AxiColor SpringGreen => new AxiColor(0, 255, 127);
|
||||||
|
public static AxiColor SteelBlue => new AxiColor(70, 130, 180);
|
||||||
|
public static AxiColor Tan => new AxiColor(210, 180, 140);
|
||||||
|
public static AxiColor Teal => new AxiColor(0, 128, 128);
|
||||||
|
public static AxiColor Thistle => new AxiColor(216, 191, 216);
|
||||||
|
public static AxiColor Tomato => new AxiColor(255, 99, 71);
|
||||||
|
public static AxiColor Turquoise => new AxiColor(64, 224, 208);
|
||||||
|
public static AxiColor Violet => new AxiColor(238, 130, 238);
|
||||||
|
public static AxiColor Wheat => new AxiColor(245, 222, 179);
|
||||||
|
public static AxiColor White => new AxiColor(255, 255, 255);
|
||||||
|
public static AxiColor WhiteSmoke => new AxiColor(245, 245, 245);
|
||||||
|
public static AxiColor Yellow => new AxiColor(255, 255, 0);
|
||||||
|
public static AxiColor YellowGreen => new AxiColor(154, 205, 50);
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
public struct Rectangle
|
||||||
|
{
|
||||||
|
public int X;
|
||||||
|
public int Y;
|
||||||
|
public int Width;
|
||||||
|
public int Height;
|
||||||
|
public Rectangle(int x, int y, int width, int height)
|
||||||
|
{
|
||||||
|
X = x;
|
||||||
|
Y = y;
|
||||||
|
Width = width;
|
||||||
|
Height = height;
|
||||||
|
}
|
||||||
|
public int Right => X + Width;
|
||||||
|
public int Bottom => Y + Height;
|
||||||
|
public int Area { get { return Width * Height; } }
|
||||||
|
public bool Contains(int pointX, int pointY) { return pointX >= X && pointX < X + Width && pointY >= Y && pointY < Y + Height; }
|
||||||
|
}
|
||||||
|
public enum RotateFlipType
|
||||||
|
{
|
||||||
|
RotateNoneFlipNone = 0,
|
||||||
|
Rotate90FlipNone = 1,
|
||||||
|
Rotate180FlipNone = 2,
|
||||||
|
Rotate270FlipNone = 3,
|
||||||
|
RotateNoneFlipX = 4,
|
||||||
|
Rotate90FlipX = 5,
|
||||||
|
Rotate180FlipX = 6,
|
||||||
|
Rotate270FlipX = 7,
|
||||||
|
RotateNoneFlipY = Rotate180FlipX, // 注意:FlipY 可以通过FlipX两次来实现,但这里为了完整性列出
|
||||||
|
Rotate90FlipY = 5, // 注意:FlipY在这里与FlipX相同角度的旋转结合,因为直接FlipY不是90度的倍数
|
||||||
|
Rotate180FlipY = 6,
|
||||||
|
Rotate270FlipY = 7,
|
||||||
|
// 注意:上面的FlipY情况实际上在90度旋转的上下文中并不直接对应,因为FlipY通常意味着沿Y轴翻转,
|
||||||
|
// 但在这里我们假设FlipX和FlipY在枚举中是为了完整性。在实际应用中,您可能只需要处理FlipNone。
|
||||||
|
}
|
||||||
|
|
||||||
|
public class AxiBitmap
|
||||||
|
{
|
||||||
|
public AxiColor[] mData;
|
||||||
|
public int Width;
|
||||||
|
public int Height;
|
||||||
|
|
||||||
|
public AxiBitmap(int width, int height)
|
||||||
|
{
|
||||||
|
Width = width;
|
||||||
|
Height = height;
|
||||||
|
mData = new AxiColor[width * height];
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetPixel(int x, int y, AxiColor color)
|
||||||
|
{
|
||||||
|
mData[y * Width + x] = color;
|
||||||
|
}
|
||||||
|
|
||||||
|
public AxiColor GetPixel(int x, int y)
|
||||||
|
{
|
||||||
|
return mData[y * Width + x];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//public AxiBitmap Clone(Rectangle rect)
|
||||||
|
//{
|
||||||
|
// // 检查矩形是否超出位图边界
|
||||||
|
// if (rect.X < 0 || rect.Right > Width || rect.Y < 0 || rect.Bottom > Height)
|
||||||
|
// {
|
||||||
|
// throw new ArgumentException("out of");
|
||||||
|
// }
|
||||||
|
|
||||||
|
// AxiBitmap clonedBitmap = new AxiBitmap(rect.Width, rect.Height);
|
||||||
|
|
||||||
|
// int srcStartIndex = rect.Y * Width + rect.X;
|
||||||
|
|
||||||
|
// for (int y = 0; y < rect.Height; y++)
|
||||||
|
// {
|
||||||
|
// Array.Copy(mData, srcStartIndex + y * Width, clonedBitmap.mData, y * rect.Width, rect.Width);
|
||||||
|
// }
|
||||||
|
// return clonedBitmap;
|
||||||
|
//}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class AxiBitmapEx
|
||||||
|
{
|
||||||
|
public static int ToArgb(this AxiColor color)
|
||||||
|
{
|
||||||
|
return (color.a << 24) | (color.r << 16) | (color.g << 8) | color.b;
|
||||||
|
}
|
||||||
|
//public static AxiBitmap Clone(this AxiBitmap baseBitmap, Rectangle rect)
|
||||||
|
//{
|
||||||
|
// unsafe
|
||||||
|
// {
|
||||||
|
// if (rect.X < 0 || rect.Right > baseBitmap.Width || rect.Y < 0 || rect.Bottom > baseBitmap.Height)
|
||||||
|
// {
|
||||||
|
// throw new ArgumentException("The rectangle is out of the bitmap bounds.");
|
||||||
|
// }
|
||||||
|
// AxiBitmap clonedBitmap = new AxiBitmap(rect.Width, rect.Height);
|
||||||
|
|
||||||
|
// for (int y = 0; y < rect.Height; y++)
|
||||||
|
// {
|
||||||
|
// int srcStartIndex = (rect.Y + y) * baseBitmap.Width * sizeof(AxiColor) + rect.X * sizeof(AxiColor);
|
||||||
|
// int dstStartIndex = y * rect.Width * sizeof(AxiColor);
|
||||||
|
// Array.Copy(baseBitmap.mData, srcStartIndex, clonedBitmap.mData, dstStartIndex, rect.Width * sizeof(AxiColor));
|
||||||
|
// }
|
||||||
|
// return clonedBitmap;
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
public static void Clear(this AxiBitmap baseBitmap, AxiColor color)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static int[] CloneIntColorArr(int[] baseBitmap, int Width, int Height, Rectangle rect)
|
||||||
|
{
|
||||||
|
// 检查矩形是否超出位图边界
|
||||||
|
if (rect.X < 0 || rect.Right > Width || rect.Y < 0 || rect.Bottom > Height)
|
||||||
|
{
|
||||||
|
throw new ArgumentException("out of");
|
||||||
|
}
|
||||||
|
|
||||||
|
//int[] result = new int[Width * Height];
|
||||||
|
|
||||||
|
int[] result = new int[rect.Width * rect.Height];
|
||||||
|
|
||||||
|
int srcStartIndex = rect.Y * Width + rect.X;
|
||||||
|
|
||||||
|
for (int y = 0; y < rect.Height; y++)
|
||||||
|
{
|
||||||
|
Array.Copy(baseBitmap, srcStartIndex + y * Width, result, y * rect.Width, rect.Width);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//public static int[] CloneIntColorArr(int[] baseBitmap, int Width, int Height, Rectangle rect)
|
||||||
|
//{
|
||||||
|
// unsafe
|
||||||
|
// {
|
||||||
|
// if (rect.X < 0 || rect.Right > Width || rect.Y < 0 || rect.Bottom > Height)
|
||||||
|
// {
|
||||||
|
// throw new ArgumentException("The rectangle is out of the bitmap bounds.");
|
||||||
|
// }
|
||||||
|
// int[] result = new int[Width * Height];
|
||||||
|
// for (int y = 0; y < rect.Height; y++)
|
||||||
|
// {
|
||||||
|
// int srcStartIndex = (rect.Y + y) * Width * sizeof(int) + rect.X * sizeof(int);
|
||||||
|
// int dstStartIndex = y * rect.Width * sizeof(int);
|
||||||
|
// Array.Copy(baseBitmap, srcStartIndex, result, dstStartIndex, rect.Width * sizeof(int));
|
||||||
|
// }
|
||||||
|
// return result;
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
// DrawImage 方法,用于在当前 AxiBitmap 上绘制另一个 AxiBitmap 的一部分
|
||||||
|
public static void DrawImage(this AxiBitmap baseBitmap, AxiBitmap source, Rectangle destRect, Rectangle srcRect)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (!source.Contains(srcRect.X, srcRect.Y, srcRect.Width, srcRect.Height))
|
||||||
|
throw new ArgumentException("Err");
|
||||||
|
|
||||||
|
// 遍历源矩形的每个像素
|
||||||
|
for (int y = srcRect.Y; y < srcRect.Bottom; y++)
|
||||||
|
{
|
||||||
|
for (int x = srcRect.X; x < srcRect.Right; x++)
|
||||||
|
{
|
||||||
|
// 计算目标位置
|
||||||
|
int destX = destRect.X + (x - srcRect.X);
|
||||||
|
int destY = destRect.Y + (y - srcRect.Y);
|
||||||
|
|
||||||
|
// 确保目标位置在当前位图范围内(如果需要)
|
||||||
|
// if (destX < 0 || destX >= Width || destY < 0 || destY >= Height)
|
||||||
|
// continue; // 或者抛出异常,取决于你的需求
|
||||||
|
|
||||||
|
// 获取源像素并设置到目标位置
|
||||||
|
AxiColor sourceColor = source.GetPixel(x, y);
|
||||||
|
baseBitmap.SetPixel(destX, destY, sourceColor);
|
||||||
|
|
||||||
|
// 如果需要处理透明度混合,则在这里添加代码
|
||||||
|
// 注意:你的 AxiColor 已经包含了 alpha 通道,但 SetPixel 并没有使用它
|
||||||
|
// 你可能需要实现一个混合像素的方法,比如 BlendPixels
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 辅助方法,用于检查一个点是否在位图范围内
|
||||||
|
private static bool Contains(this AxiBitmap baseBitmap, int x, int y, int width, int height)
|
||||||
|
{
|
||||||
|
return x >= 0 && x + width <= baseBitmap.Width && y >= 0 && y + height <= baseBitmap.Height;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ... 其他省略 ...
|
||||||
|
|
||||||
|
public static void RotateFlip(this AxiBitmap baseBitmap, RotateFlipType rotateFlipType)
|
||||||
|
{
|
||||||
|
// 先处理旋转部分
|
||||||
|
switch (rotateFlipType)
|
||||||
|
{
|
||||||
|
case RotateFlipType.Rotate90FlipNone:
|
||||||
|
Rotate90(baseBitmap);
|
||||||
|
break;
|
||||||
|
case RotateFlipType.Rotate180FlipNone:
|
||||||
|
Rotate180(baseBitmap);
|
||||||
|
break;
|
||||||
|
case RotateFlipType.Rotate270FlipNone:
|
||||||
|
Rotate270(baseBitmap);
|
||||||
|
break;
|
||||||
|
// 如果需要处理FlipX或FlipY,可以添加额外的case或方法
|
||||||
|
default:
|
||||||
|
// 无需旋转或翻转
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 注意:这里没有处理FlipX或FlipY,因为通常它们不是通过旋转来实现的
|
||||||
|
// 如果需要FlipX或FlipY,请添加额外的逻辑
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Rotate90(this AxiBitmap baseBitmap)
|
||||||
|
{
|
||||||
|
int newWidth = baseBitmap.Height;
|
||||||
|
int newHeight = baseBitmap.Width;
|
||||||
|
AxiColor[] newData = new AxiColor[baseBitmap.mData.Length];
|
||||||
|
|
||||||
|
for (int x = 0; x < baseBitmap.Width; x++)
|
||||||
|
{
|
||||||
|
for (int y = 0; y < baseBitmap.Height; y++)
|
||||||
|
{
|
||||||
|
int oldIndex = (y * baseBitmap.Width + x);
|
||||||
|
int newIndex = (newHeight - 1 - x) * newWidth + y;
|
||||||
|
newData[newIndex] = baseBitmap.mData[oldIndex];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
baseBitmap.mData = newData;
|
||||||
|
baseBitmap.Width = newWidth;
|
||||||
|
baseBitmap.Height = newHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Rotate180(this AxiBitmap baseBitmap)
|
||||||
|
{
|
||||||
|
for (int y = 0; y < baseBitmap.Height / 2; y++)
|
||||||
|
{
|
||||||
|
for (int x = 0; x < baseBitmap.Width; x++)
|
||||||
|
{
|
||||||
|
int topLeftIndex = y * baseBitmap.Width + x;
|
||||||
|
int bottomRightIndex = (baseBitmap.Height - 1 - y) * baseBitmap.Width + x;
|
||||||
|
AxiColor temp = baseBitmap.mData[topLeftIndex];
|
||||||
|
baseBitmap.mData[topLeftIndex] = baseBitmap.mData[bottomRightIndex];
|
||||||
|
baseBitmap.mData[bottomRightIndex] = temp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Rotate270(this AxiBitmap baseBitmap)
|
||||||
|
{
|
||||||
|
// Rotate270 可以通过 Rotate90 两次或 Rotate180 后再 Rotate90 来实现
|
||||||
|
// 这里直接实现 Rotate270 以避免额外的旋转调用
|
||||||
|
int newWidth = baseBitmap.Height;
|
||||||
|
int newHeight = baseBitmap.Width;
|
||||||
|
AxiColor[] newData = new AxiColor[baseBitmap.mData.Length];
|
||||||
|
|
||||||
|
for (int x = 0; x < baseBitmap.Width; x++)
|
||||||
|
{
|
||||||
|
for (int y = 0; y < baseBitmap.Height; y++)
|
||||||
|
{
|
||||||
|
int oldIndex = (y * baseBitmap.Width + x);
|
||||||
|
int newIndex = y * newWidth + (newWidth - 1 - x);
|
||||||
|
newData[newIndex] = baseBitmap.mData[oldIndex];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
baseBitmap.mData = newData;
|
||||||
|
baseBitmap.Width = newWidth;
|
||||||
|
baseBitmap.Height = newHeight;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,298 +0,0 @@
|
|||||||
using mame;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Drawing;
|
|
||||||
using System.Drawing.Imaging;
|
|
||||||
using System.Globalization;
|
|
||||||
using System.IO;
|
|
||||||
using static System.Net.Mime.MediaTypeNames;
|
|
||||||
using static System.Net.WebRequestMethods;
|
|
||||||
|
|
||||||
namespace MAME.Core.Common
|
|
||||||
{
|
|
||||||
public partial class cpsForm
|
|
||||||
{
|
|
||||||
private mainForm _myParentForm;
|
|
||||||
private string[] sde2 = new string[] { "," };
|
|
||||||
private int locationX, locationY;
|
|
||||||
|
|
||||||
#region
|
|
||||||
public bool cbLockpal = false;
|
|
||||||
public bool cbRowscroll = false;
|
|
||||||
public string tbInput = string.Empty;
|
|
||||||
public bool cbL0 = false;
|
|
||||||
public bool cbL1 = false;
|
|
||||||
public bool cbL2 = false;
|
|
||||||
public bool cbL3 = false;
|
|
||||||
public string tbFile = string.Empty;
|
|
||||||
public string tbPoint = string.Empty;
|
|
||||||
public int cbLayer = 0;
|
|
||||||
public string tbCode = string.Empty;
|
|
||||||
public string tbColor = string.Empty;
|
|
||||||
|
|
||||||
public string tbScroll1x = string.Empty;
|
|
||||||
public string tbScroll1y = string.Empty;
|
|
||||||
public string tbScroll2x = string.Empty;
|
|
||||||
public string tbScroll2y = string.Empty;
|
|
||||||
public string tbScroll3x = string.Empty;
|
|
||||||
public string tbScroll3y = string.Empty;
|
|
||||||
public string tbScrollsx = string.Empty;
|
|
||||||
public string tbScrollsy = string.Empty;
|
|
||||||
public List<string> tbResult = new List<string>();
|
|
||||||
#endregion
|
|
||||||
public cpsForm(mainForm form)
|
|
||||||
{
|
|
||||||
this._myParentForm = form;
|
|
||||||
}
|
|
||||||
private void cpsForm_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
cbL0 = true;
|
|
||||||
cbL1 = true;
|
|
||||||
cbL2 = true;
|
|
||||||
cbL3 = true;
|
|
||||||
tbFile = "00";
|
|
||||||
tbPoint = "512,512,0,256";
|
|
||||||
cbLayer = 0;
|
|
||||||
tbCode = "0000";
|
|
||||||
tbColor = "00";
|
|
||||||
}
|
|
||||||
private void GetData()
|
|
||||||
{
|
|
||||||
tbScroll1x = CPS.scroll1x.ToString("X4");
|
|
||||||
tbScroll1y = CPS.scroll1y.ToString("X4");
|
|
||||||
tbScroll2x = CPS.scroll2x.ToString("X4");
|
|
||||||
tbScroll2y = CPS.scroll2y.ToString("X4");
|
|
||||||
tbScroll3x = CPS.scroll3x.ToString("X4");
|
|
||||||
tbScroll3y = CPS.scroll3y.ToString("X4");
|
|
||||||
tbScrollsx = CPS.scrollxSG.ToString();
|
|
||||||
tbScrollsy = CPS.scrollySG.ToString();
|
|
||||||
}
|
|
||||||
private Bitmap GetTile0(int gfxset, int code1, int iColor)
|
|
||||||
{
|
|
||||||
int i1, i2, i3, i4, i5, i6;
|
|
||||||
int iCode, iByte, cols, rows;
|
|
||||||
int tilewidth, tileheight;
|
|
||||||
int iOffset;
|
|
||||||
int idx = 0;
|
|
||||||
Color c1;
|
|
||||||
Bitmap bm1;
|
|
||||||
int width, height;
|
|
||||||
int x0, y0, dx0, dy0;
|
|
||||||
int ratio = 4;
|
|
||||||
width = 0x200;
|
|
||||||
height = 0x200;
|
|
||||||
tilewidth = 8;
|
|
||||||
tileheight = 8;
|
|
||||||
cols = width / tilewidth / ratio;
|
|
||||||
rows = height / tileheight / ratio;
|
|
||||||
bm1 = new Bitmap(width, height);
|
|
||||||
BitmapData bmData;
|
|
||||||
bmData = bm1.LockBits(new Rectangle(0, 0, bm1.Width, bm1.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
|
|
||||||
unsafe
|
|
||||||
{
|
|
||||||
byte* ptr = (byte*)(bmData.Scan0);
|
|
||||||
byte* ptr2 = (byte*)0;
|
|
||||||
for (i3 = 0; i3 < cols; i3++)
|
|
||||||
{
|
|
||||||
for (i4 = 0; i4 < rows; i4++)
|
|
||||||
{
|
|
||||||
iCode = code1 + i4 * 0x10 + i3;
|
|
||||||
x0 = tilewidth * i3;
|
|
||||||
y0 = tileheight * i4;
|
|
||||||
dx0 = 1;
|
|
||||||
dy0 = 1;
|
|
||||||
for (i1 = 0; i1 < tilewidth; i1++)
|
|
||||||
{
|
|
||||||
for (i2 = 0; i2 < tileheight; i2++)
|
|
||||||
{
|
|
||||||
iOffset = iCode * 0x80 + gfxset * 8 + i1 + i2 * 16;
|
|
||||||
iByte = CPS.gfx1rom[iOffset];
|
|
||||||
idx = iColor * 0x10 + iByte;
|
|
||||||
c1 = CPS.cc1G[idx];
|
|
||||||
for (i5 = 0; i5 < ratio; i5++)
|
|
||||||
{
|
|
||||||
for (i6 = 0; i6 < ratio; i6++)
|
|
||||||
{
|
|
||||||
ptr2 = ptr + (((y0 + dy0 * i2) * ratio + i6) * width + ((x0 + dx0 * i1) * ratio + i5)) * 4;
|
|
||||||
*ptr2 = c1.B;
|
|
||||||
*(ptr2 + 1) = c1.G;
|
|
||||||
*(ptr2 + 2) = c1.R;
|
|
||||||
*(ptr2 + 3) = c1.A;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
bm1.UnlockBits(bmData);
|
|
||||||
return bm1;
|
|
||||||
}
|
|
||||||
private Bitmap GetTile1(int code1, int iColor)
|
|
||||||
{
|
|
||||||
int i1, i2, i3, i4, i5, i6;
|
|
||||||
int iCode, iByte, cols, rows;
|
|
||||||
int tilewidth, tileheight;
|
|
||||||
int iOffset;
|
|
||||||
int idx = 0;
|
|
||||||
Color c1;
|
|
||||||
Bitmap bm1;
|
|
||||||
int width, height;
|
|
||||||
int x0, y0, dx0, dy0;
|
|
||||||
int ratio = 2;
|
|
||||||
width = 0x200;
|
|
||||||
height = 0x200;
|
|
||||||
tilewidth = 16;
|
|
||||||
tileheight = 16;
|
|
||||||
cols = width / tilewidth / ratio;
|
|
||||||
rows = height / tileheight / ratio;
|
|
||||||
bm1 = new Bitmap(width, height);
|
|
||||||
BitmapData bmData;
|
|
||||||
bmData = bm1.LockBits(new Rectangle(0, 0, bm1.Width, bm1.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
|
|
||||||
unsafe
|
|
||||||
{
|
|
||||||
byte* ptr = (byte*)(bmData.Scan0);
|
|
||||||
byte* ptr2 = (byte*)0;
|
|
||||||
for (i3 = 0; i3 < cols; i3++)
|
|
||||||
{
|
|
||||||
for (i4 = 0; i4 < rows; i4++)
|
|
||||||
{
|
|
||||||
iCode = code1 + i4 * 0x10 + i3;
|
|
||||||
x0 = tilewidth * i3;
|
|
||||||
y0 = tileheight * i4;
|
|
||||||
dx0 = 1;
|
|
||||||
dy0 = 1;
|
|
||||||
for (i1 = 0; i1 < tilewidth; i1++)
|
|
||||||
{
|
|
||||||
for (i2 = 0; i2 < tileheight; i2++)
|
|
||||||
{
|
|
||||||
iOffset = iCode * 0x40 * 4 + i1 + i2 * 16;
|
|
||||||
iByte = CPS.gfx1rom[iOffset];
|
|
||||||
idx = iColor * 0x10 + iByte;
|
|
||||||
c1 = CPS.cc1G[idx];
|
|
||||||
for (i5 = 0; i5 < ratio; i5++)
|
|
||||||
{
|
|
||||||
for (i6 = 0; i6 < ratio; i6++)
|
|
||||||
{
|
|
||||||
ptr2 = ptr + (((y0 + dy0 * i2) * ratio + i6) * width + ((x0 + dx0 * i1) * ratio + i5)) * 4;
|
|
||||||
*ptr2 = c1.B;
|
|
||||||
*(ptr2 + 1) = c1.G;
|
|
||||||
*(ptr2 + 2) = c1.R;
|
|
||||||
*(ptr2 + 3) = c1.A;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
bm1.UnlockBits(bmData);
|
|
||||||
return bm1;
|
|
||||||
}
|
|
||||||
private Bitmap GetTile2(int code1, int iColor)
|
|
||||||
{
|
|
||||||
int i1, i2, i3, i4, i5, i6;
|
|
||||||
int iCode, iByte, cols, rows;
|
|
||||||
int tilewidth, tileheight;
|
|
||||||
int iOffset;
|
|
||||||
int idx = 0;
|
|
||||||
Color c1;
|
|
||||||
Bitmap bm1;
|
|
||||||
int width, height;
|
|
||||||
int x0, y0, dx0, dy0;
|
|
||||||
int ratio = 1;
|
|
||||||
width = 0x200;
|
|
||||||
height = 0x200;
|
|
||||||
tilewidth = 32;
|
|
||||||
tileheight = 32;
|
|
||||||
cols = width / tilewidth / ratio;
|
|
||||||
rows = height / tileheight / ratio;
|
|
||||||
bm1 = new Bitmap(width, height);
|
|
||||||
BitmapData bmData;
|
|
||||||
bmData = bm1.LockBits(new Rectangle(0, 0, bm1.Width, bm1.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
|
|
||||||
unsafe
|
|
||||||
{
|
|
||||||
byte* ptr = (byte*)(bmData.Scan0);
|
|
||||||
byte* ptr2 = (byte*)0;
|
|
||||||
for (i3 = 0; i3 < cols; i3++)
|
|
||||||
{
|
|
||||||
for (i4 = 0; i4 < rows; i4++)
|
|
||||||
{
|
|
||||||
iCode = code1 + i4 * 0x10 + i3;
|
|
||||||
x0 = tilewidth * i3;
|
|
||||||
y0 = tileheight * i4;
|
|
||||||
dx0 = 1;
|
|
||||||
dy0 = 1;
|
|
||||||
for (i1 = 0; i1 < tilewidth; i1++)
|
|
||||||
{
|
|
||||||
for (i2 = 0; i2 < tileheight; i2++)
|
|
||||||
{
|
|
||||||
iOffset = iCode * 0x40 * 16 + i1 + i2 * 16 * 2;
|
|
||||||
iByte = CPS.gfx1rom[iOffset];
|
|
||||||
idx = iColor * 0x10 + iByte;
|
|
||||||
c1 = CPS.cc1G[idx];
|
|
||||||
for (i5 = 0; i5 < ratio; i5++)
|
|
||||||
{
|
|
||||||
for (i6 = 0; i6 < ratio; i6++)
|
|
||||||
{
|
|
||||||
ptr2 = ptr + (((y0 + dy0 * i2) * ratio + i6) * width + ((x0 + dx0 * i1) * ratio + i5)) * 4;
|
|
||||||
*ptr2 = c1.B;
|
|
||||||
*(ptr2 + 1) = c1.G;
|
|
||||||
*(ptr2 + 2) = c1.R;
|
|
||||||
*(ptr2 + 3) = c1.A;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
bm1.UnlockBits(bmData);
|
|
||||||
return bm1;
|
|
||||||
}
|
|
||||||
private void DumpRam()
|
|
||||||
{
|
|
||||||
BinaryWriter bw1 = new BinaryWriter(new FileStream("dump1.dat", FileMode.Create));
|
|
||||||
bw1.Write(Memory.mainram, 0, 0x10000);
|
|
||||||
bw1.Close();
|
|
||||||
BinaryWriter bw2 = new BinaryWriter(new FileStream("dump2.dat", FileMode.Create));
|
|
||||||
bw2.Write(CPS.gfxram, 0, 0x30000);
|
|
||||||
bw2.Close();
|
|
||||||
BinaryWriter bw3 = new BinaryWriter(new FileStream("dump3.dat", FileMode.Create));
|
|
||||||
int i;
|
|
||||||
for (i = 0; i < 0x20; i++)
|
|
||||||
{
|
|
||||||
bw3.Write(CPS.cps_a_regs[i]);
|
|
||||||
}
|
|
||||||
for (i = 0; i < 0x20; i++)
|
|
||||||
{
|
|
||||||
bw3.Write(CPS.cps_b_regs[i]);
|
|
||||||
}
|
|
||||||
bw3.Close();
|
|
||||||
}
|
|
||||||
private void WriteRam()
|
|
||||||
{
|
|
||||||
byte[] bb1 = new byte[0x10000], bb2 = new byte[0x30000], bb3 = new byte[0x80];
|
|
||||||
BinaryReader br1 = new BinaryReader(new FileStream("dump1.dat", FileMode.Open));
|
|
||||||
br1.Read(bb1, 0, 0x10000);
|
|
||||||
br1.Close();
|
|
||||||
Array.Copy(bb1, Memory.mainram, 0x10000);
|
|
||||||
BinaryReader br2 = new BinaryReader(new FileStream("dump2.dat", FileMode.Open));
|
|
||||||
br2.Read(bb2, 0, 0x30000);
|
|
||||||
br2.Close();
|
|
||||||
Array.Copy(bb2, CPS.gfxram, 0x30000);
|
|
||||||
BinaryReader br3 = new BinaryReader(new FileStream("dump3.dat", FileMode.Open));
|
|
||||||
br3.Read(bb3, 0, 0x80);
|
|
||||||
br3.Close();
|
|
||||||
int i;
|
|
||||||
for (i = 0; i < 0x20; i++)
|
|
||||||
{
|
|
||||||
CPS.cps_a_regs[i] = (ushort)(bb3[i * 2] + bb3[i * 2 + 1] * 0x100);
|
|
||||||
}
|
|
||||||
for (i = 0; i < 0x20; i++)
|
|
||||||
{
|
|
||||||
CPS.cps_b_regs[i] = (ushort)(bb3[0x40 + i * 2] + bb3[0x40 + i * 2 + 1] * 0x100);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,28 +0,0 @@
|
|||||||
using mame;
|
|
||||||
using System;
|
|
||||||
using System.Drawing;
|
|
||||||
using System.Drawing.Imaging;
|
|
||||||
using static System.Net.Mime.MediaTypeNames;
|
|
||||||
|
|
||||||
namespace MAME.Core.Common
|
|
||||||
{
|
|
||||||
public class konami68000Form
|
|
||||||
{
|
|
||||||
private mainForm _myParentForm;
|
|
||||||
private int locationX, locationY;
|
|
||||||
|
|
||||||
#region
|
|
||||||
public bool cbT0 = false;
|
|
||||||
public bool cbT1 = false;
|
|
||||||
public bool cbT2 = false;
|
|
||||||
public bool cbSprite = false;
|
|
||||||
public Bitmap pictureBox1;
|
|
||||||
public string tbSprite;
|
|
||||||
#endregion
|
|
||||||
public konami68000Form(mainForm form)
|
|
||||||
{
|
|
||||||
this._myParentForm = form;
|
|
||||||
tbSprite = "0000-4000";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
25
MAME.Core/Log/EmuLogger.cs
Normal file
25
MAME.Core/Log/EmuLogger.cs
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
using MAME.Core.run_interface;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace mame
|
||||||
|
{
|
||||||
|
public static class EmuLogger
|
||||||
|
{
|
||||||
|
|
||||||
|
#region 抽象出去
|
||||||
|
static Action<string> Act_Log;
|
||||||
|
|
||||||
|
public static void BindFunc(ILog ilog)
|
||||||
|
{
|
||||||
|
Act_Log -= Act_Log;
|
||||||
|
|
||||||
|
Act_Log += ilog.Log;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Log(string msg)
|
||||||
|
{
|
||||||
|
Act_Log?.Invoke(msg);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
@ -5,9 +5,4 @@
|
|||||||
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="ImageProcessor.Core" Version="1.1.0" />
|
|
||||||
<PackageReference Include="LamarCodeGeneration" Version="6.3.0" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -3,11 +3,10 @@ using cpu.nec;
|
|||||||
using mame;
|
using mame;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace MAME.Core.Common
|
namespace MAME.Core.Common
|
||||||
{
|
{
|
||||||
public partial class cheatForm
|
public partial class cheatMotion
|
||||||
{
|
{
|
||||||
public enum LockState
|
public enum LockState
|
||||||
{
|
{
|
||||||
@ -15,7 +14,6 @@ namespace MAME.Core.Common
|
|||||||
LOCK_SECOND,
|
LOCK_SECOND,
|
||||||
LOCK_FRAME,
|
LOCK_FRAME,
|
||||||
}
|
}
|
||||||
private mainForm _myParentForm;
|
|
||||||
public LockState lockState = LockState.LOCK_NONE;
|
public LockState lockState = LockState.LOCK_NONE;
|
||||||
public List<int[]> lsCheatdata1;
|
public List<int[]> lsCheatdata1;
|
||||||
public List<int[]> lsCheatdata2;
|
public List<int[]> lsCheatdata2;
|
||||||
@ -27,9 +25,8 @@ namespace MAME.Core.Common
|
|||||||
#region
|
#region
|
||||||
List<string> mTxList_tbResult = new List<string>();
|
List<string> mTxList_tbResult = new List<string>();
|
||||||
#endregion
|
#endregion
|
||||||
public cheatForm(mainForm form)
|
public cheatMotion()
|
||||||
{
|
{
|
||||||
this._myParentForm = form;
|
|
||||||
cheatForm_Load();
|
cheatForm_Load();
|
||||||
}
|
}
|
||||||
private void cheatForm_Load()
|
private void cheatForm_Load()
|
38
MAME.Core/Motion/cpsMotion.cs
Normal file
38
MAME.Core/Motion/cpsMotion.cs
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace MAME.Core.Common
|
||||||
|
{
|
||||||
|
public partial class cpsMotion
|
||||||
|
{
|
||||||
|
private string[] sde2 = new string[] { "," };
|
||||||
|
private int locationX, locationY;
|
||||||
|
|
||||||
|
#region
|
||||||
|
public bool cbLockpal = false;
|
||||||
|
public bool cbRowscroll = false;
|
||||||
|
public string tbInput = string.Empty;
|
||||||
|
public bool cbL0 = false;
|
||||||
|
public bool cbL1 = false;
|
||||||
|
public bool cbL2 = false;
|
||||||
|
public bool cbL3 = false;
|
||||||
|
public string tbFile = string.Empty;
|
||||||
|
public string tbPoint = string.Empty;
|
||||||
|
public int cbLayer = 0;
|
||||||
|
public string tbCode = string.Empty;
|
||||||
|
public string tbColor = string.Empty;
|
||||||
|
|
||||||
|
public string tbScroll1x = string.Empty;
|
||||||
|
public string tbScroll1y = string.Empty;
|
||||||
|
public string tbScroll2x = string.Empty;
|
||||||
|
public string tbScroll2y = string.Empty;
|
||||||
|
public string tbScroll3x = string.Empty;
|
||||||
|
public string tbScroll3y = string.Empty;
|
||||||
|
public string tbScrollsx = string.Empty;
|
||||||
|
public string tbScrollsy = string.Empty;
|
||||||
|
public List<string> tbResult = new List<string>();
|
||||||
|
#endregion
|
||||||
|
public cpsMotion()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
19
MAME.Core/Motion/konami68000Motion.cs
Normal file
19
MAME.Core/Motion/konami68000Motion.cs
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
namespace MAME.Core.Common
|
||||||
|
{
|
||||||
|
public class konami68000Motion
|
||||||
|
{
|
||||||
|
private int locationX, locationY;
|
||||||
|
|
||||||
|
#region
|
||||||
|
public bool cbT0 = false;
|
||||||
|
public bool cbT1 = false;
|
||||||
|
public bool cbT2 = false;
|
||||||
|
public bool cbSprite = false;
|
||||||
|
public string tbSprite;
|
||||||
|
#endregion
|
||||||
|
public konami68000Motion()
|
||||||
|
{
|
||||||
|
tbSprite = "0000-4000";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,18 +1,11 @@
|
|||||||
using cpu.m68000;
|
using cpu.m68000;
|
||||||
using mame;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Drawing;
|
|
||||||
using System.Globalization;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using static System.Net.Mime.MediaTypeNames;
|
|
||||||
|
|
||||||
namespace MAME.Core.Common
|
namespace MAME.Core.Common
|
||||||
{
|
{
|
||||||
public class m68000Form
|
public class m68000Motion
|
||||||
{
|
{
|
||||||
private mainForm _myParentForm;
|
|
||||||
private string[] sde6 = new string[1] { "," }, sde7 = new string[1] { ";" }, sde9 = new string[1] { "$" }, sde10 = new string[] { "+" };
|
private string[] sde6 = new string[1] { "," }, sde7 = new string[1] { ";" }, sde9 = new string[1] { "$" }, sde10 = new string[] { "+" };
|
||||||
private bool bLogNew, bNew;
|
private bool bLogNew, bNew;
|
||||||
public static int iStatus, iRAddress, iWAddress, iROp, iWOp, iValue;
|
public static int iStatus, iRAddress, iWAddress, iROp, iWOp, iValue;
|
||||||
@ -61,9 +54,8 @@ namespace MAME.Core.Common
|
|||||||
M68000_STOP,
|
M68000_STOP,
|
||||||
}
|
}
|
||||||
public static M68000State m68000State, m68000FState;
|
public static M68000State m68000State, m68000FState;
|
||||||
public m68000Form(mainForm form)
|
public m68000Motion()
|
||||||
{
|
{
|
||||||
this._myParentForm = form;
|
|
||||||
int i;
|
int i;
|
||||||
mTxList_tbDs = new string[8];
|
mTxList_tbDs = new string[8];
|
||||||
mTxList_tbAs = new string[8];
|
mTxList_tbAs = new string[8];
|
@ -1,16 +1,12 @@
|
|||||||
using cpu.m6809;
|
using cpu.m6809;
|
||||||
using mame;
|
using mame;
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Globalization;
|
|
||||||
using static System.Net.Mime.MediaTypeNames;
|
|
||||||
|
|
||||||
namespace MAME.Core.Common
|
namespace MAME.Core.Common
|
||||||
{
|
{
|
||||||
|
|
||||||
public partial class m6809Form
|
public partial class m6809Motion
|
||||||
{
|
{
|
||||||
private mainForm _myParentForm;
|
|
||||||
//private Disassembler disassembler;
|
//private Disassembler disassembler;
|
||||||
private bool bLogNew;
|
private bool bLogNew;
|
||||||
public static int iStatus;
|
public static int iStatus;
|
||||||
@ -38,9 +34,8 @@ namespace MAME.Core.Common
|
|||||||
public string tbDisassemble = string.Empty;
|
public string tbDisassemble = string.Empty;
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public m6809Form(mainForm form)
|
public m6809Motion()
|
||||||
{
|
{
|
||||||
this._myParentForm = form;
|
|
||||||
}
|
}
|
||||||
public void GetData()
|
public void GetData()
|
||||||
{
|
{
|
@ -1,52 +1,60 @@
|
|||||||
using mame;
|
using mame;
|
||||||
using MAME.Core.run_interface;
|
using MAME.Core.run_interface;
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Threading;
|
||||||
using System.Xml.Linq;
|
using System.Xml.Linq;
|
||||||
|
|
||||||
namespace MAME.Core.Common
|
namespace MAME.Core.Common
|
||||||
{
|
{
|
||||||
public class mainForm
|
public class mainMotion
|
||||||
{
|
{
|
||||||
public string tsslStatus;
|
public string tsslStatus;
|
||||||
public cheatForm cheatform;
|
public cheatMotion cheatmotion;
|
||||||
public m68000Form m68000form;
|
public m68000Motion m68000motion;
|
||||||
public z80Form z80form;
|
public z80Motion z80motion;
|
||||||
public m6809Form m6809form;
|
public m6809Motion m6809motion;
|
||||||
public cpsForm cpsform;
|
public cpsMotion cpsmotion;
|
||||||
public neogeoForm neogeoform;
|
public neogeoMotion neogeomotion;
|
||||||
public konami68000Form konami68000form;
|
public konami68000Motion konami68000motion;
|
||||||
public string sSelect;
|
public string sSelect;
|
||||||
|
public static Thread t1;
|
||||||
|
|
||||||
public static IResources resource;
|
public static IResources resource;
|
||||||
|
|
||||||
public mainForm()
|
public mainMotion()
|
||||||
{
|
{
|
||||||
neogeoform = new neogeoForm(this);
|
neogeomotion = new neogeoMotion();
|
||||||
cheatform = new cheatForm(this);
|
cheatmotion = new cheatMotion();
|
||||||
m68000form = new m68000Form(this);
|
m68000motion = new m68000Motion();
|
||||||
m6809form = new m6809Form(this);
|
m6809motion = new m6809Motion();
|
||||||
z80form = new z80Form(this);
|
z80motion = new z80Motion();
|
||||||
cpsform = new cpsForm(this);
|
cpsmotion = new cpsMotion();
|
||||||
konami68000form = new konami68000Form(this);
|
konami68000motion = new konami68000Motion();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Init(IResources iRes,
|
public void Init(
|
||||||
|
string RomDir,
|
||||||
|
ILog ilog,
|
||||||
|
IResources iRes,
|
||||||
IVideoPlayer ivp,
|
IVideoPlayer ivp,
|
||||||
ISoundPlayer isp,
|
ISoundPlayer isp,
|
||||||
IKeyboard ikb,
|
IKeyboard ikb,
|
||||||
IMouse imou)
|
IMouse imou)
|
||||||
{
|
{
|
||||||
|
Mame.RomRoot = RomDir;
|
||||||
|
EmuLogger.BindFunc(ilog);
|
||||||
Video.BindFunc(ivp);
|
Video.BindFunc(ivp);
|
||||||
Sound.BindFunc(isp);
|
Sound.BindFunc(isp);
|
||||||
resource = iRes;
|
resource = iRes;
|
||||||
|
|
||||||
StreamReader sr1 = new StreamReader("mame.ini");
|
//StreamReader sr1 = new StreamReader("mame.ini");
|
||||||
sr1.ReadLine();
|
//sr1.ReadLine();
|
||||||
sSelect = sr1.ReadLine();
|
//sSelect = sr1.ReadLine();
|
||||||
sr1.Close();
|
//sr1.Close();
|
||||||
|
|
||||||
|
//TODO 上次选择
|
||||||
|
sSelect = "samsho2";
|
||||||
|
|
||||||
|
|
||||||
RomInfo.Rom = new RomInfo();
|
RomInfo.Rom = new RomInfo();
|
||||||
@ -87,7 +95,7 @@ namespace MAME.Core.Common
|
|||||||
RomInfo.Rom = RomInfo.GetRomByName(Name);
|
RomInfo.Rom = RomInfo.GetRomByName(Name);
|
||||||
if (RomInfo.Rom == null)
|
if (RomInfo.Rom == null)
|
||||||
{
|
{
|
||||||
Console.WriteLine("Not Found");
|
EmuLogger.Log("Not Found");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -207,13 +215,13 @@ namespace MAME.Core.Common
|
|||||||
}
|
}
|
||||||
if (Machine.bRom)
|
if (Machine.bRom)
|
||||||
{
|
{
|
||||||
Console.Write("MAME.NET: " + Machine.sDescription + " [" + Machine.sName + "]");
|
EmuLogger.Log("MAME.NET: " + Machine.sDescription + " [" + Machine.sName + "]");
|
||||||
Mame.init_machine(this);
|
Mame.init_machine(this);
|
||||||
Generic.nvram_load();
|
Generic.nvram_load();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Console.Write("error rom");
|
EmuLogger.Log("error rom");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,17 +1,12 @@
|
|||||||
using mame;
|
using mame;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Drawing;
|
|
||||||
using System.Drawing.Imaging;
|
|
||||||
using System.Globalization;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using static System.Net.Mime.MediaTypeNames;
|
|
||||||
|
|
||||||
namespace MAME.Core.Common
|
namespace MAME.Core.Common
|
||||||
{
|
{
|
||||||
public partial class neogeoForm
|
public partial class neogeoMotion
|
||||||
{
|
{
|
||||||
private mainForm _myParentForm;
|
|
||||||
private string[] sde2 = new string[] { "," };
|
private string[] sde2 = new string[] { "," };
|
||||||
private int locationX, locationY;
|
private int locationX, locationY;
|
||||||
public List<string> tbResult;
|
public List<string> tbResult;
|
||||||
@ -20,15 +15,13 @@ namespace MAME.Core.Common
|
|||||||
public string tbFile = string.Empty;
|
public string tbFile = string.Empty;
|
||||||
public string tbSOffset = string.Empty;
|
public string tbSOffset = string.Empty;
|
||||||
public string tbPensoffset = string.Empty;
|
public string tbPensoffset = string.Empty;
|
||||||
public Bitmap pictureBox1;
|
|
||||||
|
|
||||||
#region
|
#region
|
||||||
bool cbL0 = false;
|
bool cbL0 = false;
|
||||||
bool cbL1 = false;
|
bool cbL1 = false;
|
||||||
#endregion
|
#endregion
|
||||||
public neogeoForm(mainForm form)
|
public neogeoMotion()
|
||||||
{
|
{
|
||||||
this._myParentForm = form;
|
|
||||||
tbResult = new List<string>();
|
tbResult = new List<string>();
|
||||||
neogeoForm_Load();
|
neogeoForm_Load();
|
||||||
}
|
}
|
@ -1,8 +1,5 @@
|
|||||||
using cpu.z80;
|
using cpu.z80;
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Globalization;
|
|
||||||
using static System.Net.Mime.MediaTypeNames;
|
|
||||||
|
|
||||||
namespace MAME.Core.Common
|
namespace MAME.Core.Common
|
||||||
{
|
{
|
||||||
@ -15,9 +12,8 @@ namespace MAME.Core.Common
|
|||||||
STEP3,
|
STEP3,
|
||||||
STOP,
|
STOP,
|
||||||
}
|
}
|
||||||
public partial class z80Form
|
public partial class z80Motion
|
||||||
{
|
{
|
||||||
private mainForm _myParentForm;
|
|
||||||
private Disassembler disassembler;
|
private Disassembler disassembler;
|
||||||
private bool bLogNew;
|
private bool bLogNew;
|
||||||
public static int iStatus;
|
public static int iStatus;
|
||||||
@ -59,9 +55,8 @@ namespace MAME.Core.Common
|
|||||||
Z80A_STOP,
|
Z80A_STOP,
|
||||||
}
|
}
|
||||||
public static Z80AState z80State, z80FState;
|
public static Z80AState z80State, z80FState;
|
||||||
public z80Form(mainForm form)
|
public z80Motion()
|
||||||
{
|
{
|
||||||
this._myParentForm = form;
|
|
||||||
disassembler = new Disassembler();
|
disassembler = new Disassembler();
|
||||||
Disassembler.GenerateOpcodeSizes();
|
Disassembler.GenerateOpcodeSizes();
|
||||||
}
|
}
|
@ -1,9 +1,4 @@
|
|||||||
using System;
|
namespace cpu.m6502
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace cpu.m6502
|
|
||||||
{
|
{
|
||||||
public partial class M6502
|
public partial class M6502
|
||||||
{
|
{
|
||||||
|
@ -1,19 +1,16 @@
|
|||||||
using System;
|
using mame;
|
||||||
using System.Collections.Generic;
|
using System;
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using mame;
|
|
||||||
|
|
||||||
namespace cpu.m6502
|
namespace cpu.m6502
|
||||||
{
|
{
|
||||||
public partial class M6502 : cpuexec_data
|
public partial class M6502 : cpuexec_data
|
||||||
{
|
{
|
||||||
public static M6502[] mm1;
|
public static M6502[] mm1;
|
||||||
public Action[] insn,insn6502;
|
public Action[] insn, insn6502;
|
||||||
public byte subtype;
|
public byte subtype;
|
||||||
public Register ppc,pc,sp,zp,ea;
|
public Register ppc, pc, sp, zp, ea;
|
||||||
public byte p,a,x,y,pending_irq,after_cli,nmi_state,irq_state,so_state;
|
public byte p, a, x, y, pending_irq, after_cli, nmi_state, irq_state, so_state;
|
||||||
public delegate int irq_delegate(int i);
|
public delegate int irq_delegate(int i);
|
||||||
public irq_delegate irq_callback;
|
public irq_delegate irq_callback;
|
||||||
public delegate byte read8handler(ushort offset);
|
public delegate byte read8handler(ushort offset);
|
||||||
@ -21,7 +18,7 @@ namespace cpu.m6502
|
|||||||
public read8handler rdmem_id;
|
public read8handler rdmem_id;
|
||||||
public write8handler wrmem_id;
|
public write8handler wrmem_id;
|
||||||
private ushort M6502_NMI_VEC = 0xfffa, M6502_RST_VEC = 0xfffc, M6502_IRQ_VEC = 0xfffe;
|
private ushort M6502_NMI_VEC = 0xfffa, M6502_RST_VEC = 0xfffc, M6502_IRQ_VEC = 0xfffe;
|
||||||
private int M6502_SET_OVERFLOW=1;
|
private int M6502_SET_OVERFLOW = 1;
|
||||||
private int m6502_IntOccured;
|
private int m6502_IntOccured;
|
||||||
protected ulong totalExecutedCycles;
|
protected ulong totalExecutedCycles;
|
||||||
protected int pendingCycles;
|
protected int pendingCycles;
|
||||||
@ -54,7 +51,7 @@ namespace cpu.m6502
|
|||||||
{
|
{
|
||||||
return ReadMemory(offset);
|
return ReadMemory(offset);
|
||||||
}
|
}
|
||||||
private void default_wdmem_id(ushort offset,byte data )
|
private void default_wdmem_id(ushort offset, byte data)
|
||||||
{
|
{
|
||||||
WriteMemory(offset, data);
|
WriteMemory(offset, data);
|
||||||
}
|
}
|
||||||
@ -158,18 +155,18 @@ namespace cpu.m6502
|
|||||||
byte op;
|
byte op;
|
||||||
ppc.d = pc.d;
|
ppc.d = pc.d;
|
||||||
//debugger_instruction_hook(Machine, PCD);
|
//debugger_instruction_hook(Machine, PCD);
|
||||||
if (pending_irq!=0)
|
if (pending_irq != 0)
|
||||||
{
|
{
|
||||||
m6502_take_irq();
|
m6502_take_irq();
|
||||||
}
|
}
|
||||||
op=ReadOp(pc.LowWord);
|
op = ReadOp(pc.LowWord);
|
||||||
pc.LowWord++;
|
pc.LowWord++;
|
||||||
pendingCycles -= 1;
|
pendingCycles -= 1;
|
||||||
insn[op]();
|
insn[op]();
|
||||||
if (after_cli!=0)
|
if (after_cli != 0)
|
||||||
{
|
{
|
||||||
after_cli = 0;
|
after_cli = 0;
|
||||||
if (irq_state !=(byte)LineState.CLEAR_LINE)
|
if (irq_state != (byte)LineState.CLEAR_LINE)
|
||||||
{
|
{
|
||||||
pending_irq = 1;
|
pending_irq = 1;
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,4 @@
|
|||||||
using System;
|
namespace cpu.m6502
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using mame;
|
|
||||||
|
|
||||||
namespace cpu.m6502
|
|
||||||
{
|
{
|
||||||
public partial class M6502
|
public partial class M6502
|
||||||
{
|
{
|
||||||
@ -30,7 +24,7 @@ namespace cpu.m6502
|
|||||||
protected void m6502_21() { int tmp; EA_IDX(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; AND(tmp); }
|
protected void m6502_21() { int tmp; EA_IDX(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; AND(tmp); }
|
||||||
protected void m6502_41() { int tmp; EA_IDX(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; EOR(tmp); }
|
protected void m6502_41() { int tmp; EA_IDX(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; EOR(tmp); }
|
||||||
protected void m6502_61() { int tmp; EA_IDX(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; ADC(tmp); }
|
protected void m6502_61() { int tmp; EA_IDX(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; ADC(tmp); }
|
||||||
protected void m6502_81() { int tmp=0; STA(ref tmp); EA_IDX(); wrmem_id((ushort)ea.d, (byte)tmp); pendingCycles -= 1; }
|
protected void m6502_81() { int tmp = 0; STA(ref tmp); EA_IDX(); wrmem_id((ushort)ea.d, (byte)tmp); pendingCycles -= 1; }
|
||||||
protected void m6502_a1() { int tmp; EA_IDX(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; LDA(tmp); }
|
protected void m6502_a1() { int tmp; EA_IDX(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; LDA(tmp); }
|
||||||
protected void m6502_c1() { int tmp; EA_IDX(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; CMP(tmp); }
|
protected void m6502_c1() { int tmp; EA_IDX(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; CMP(tmp); }
|
||||||
protected void m6502_e1() { int tmp; EA_IDX(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; SBC(tmp); }
|
protected void m6502_e1() { int tmp; EA_IDX(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; SBC(tmp); }
|
||||||
@ -39,7 +33,7 @@ namespace cpu.m6502
|
|||||||
protected void m6502_31() { int tmp; EA_IDY_P(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; AND(tmp); }
|
protected void m6502_31() { int tmp; EA_IDY_P(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; AND(tmp); }
|
||||||
protected void m6502_51() { int tmp; EA_IDY_P(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; EOR(tmp); }
|
protected void m6502_51() { int tmp; EA_IDY_P(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; EOR(tmp); }
|
||||||
protected void m6502_71() { int tmp; EA_IDY_P(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; ADC(tmp); }
|
protected void m6502_71() { int tmp; EA_IDY_P(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; ADC(tmp); }
|
||||||
protected void m6502_91() { int tmp=0; STA(ref tmp); EA_IDY_NP(); wrmem_id((ushort)ea.d, (byte)tmp); pendingCycles -= 1; }
|
protected void m6502_91() { int tmp = 0; STA(ref tmp); EA_IDY_NP(); wrmem_id((ushort)ea.d, (byte)tmp); pendingCycles -= 1; }
|
||||||
protected void m6502_b1() { int tmp; EA_IDY_P(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; LDA(tmp); }
|
protected void m6502_b1() { int tmp; EA_IDY_P(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; LDA(tmp); }
|
||||||
protected void m6502_d1() { int tmp; EA_IDY_P(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; CMP(tmp); }
|
protected void m6502_d1() { int tmp; EA_IDY_P(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; CMP(tmp); }
|
||||||
protected void m6502_f1() { int tmp; EA_IDY_P(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; SBC(tmp); }
|
protected void m6502_f1() { int tmp; EA_IDY_P(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; SBC(tmp); }
|
||||||
@ -66,7 +60,7 @@ namespace cpu.m6502
|
|||||||
protected void m6502_23() { int tmp; EA_IDX(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; WRMEM((ushort)ea.d, (byte)tmp); RLA(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_23() { int tmp; EA_IDX(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; WRMEM((ushort)ea.d, (byte)tmp); RLA(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_43() { int tmp; EA_IDX(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; WRMEM((ushort)ea.d, (byte)tmp); SRE(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_43() { int tmp; EA_IDX(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; WRMEM((ushort)ea.d, (byte)tmp); SRE(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_63() { int tmp; EA_IDX(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; WRMEM((ushort)ea.d, (byte)tmp); RRA(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_63() { int tmp; EA_IDX(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; WRMEM((ushort)ea.d, (byte)tmp); RRA(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_83() { int tmp=0; SAX(ref tmp); EA_IDX(); wrmem_id((ushort)ea.d, (byte)tmp); pendingCycles -= 1; }
|
protected void m6502_83() { int tmp = 0; SAX(ref tmp); EA_IDX(); wrmem_id((ushort)ea.d, (byte)tmp); pendingCycles -= 1; }
|
||||||
protected void m6502_a3() { int tmp; EA_IDX(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; LAX(tmp); }
|
protected void m6502_a3() { int tmp; EA_IDX(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; LAX(tmp); }
|
||||||
protected void m6502_c3() { int tmp; EA_IDX(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; WRMEM((ushort)ea.d, (byte)tmp); DCP(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_c3() { int tmp; EA_IDX(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; WRMEM((ushort)ea.d, (byte)tmp); DCP(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_e3() { int tmp; EA_IDX(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; WRMEM((ushort)ea.d, (byte)tmp); ISB(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_e3() { int tmp; EA_IDX(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; WRMEM((ushort)ea.d, (byte)tmp); ISB(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
@ -75,7 +69,7 @@ namespace cpu.m6502
|
|||||||
protected void m6502_33() { int tmp; EA_IDY_NP(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; WRMEM((ushort)ea.d, (byte)tmp); RLA(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_33() { int tmp; EA_IDY_NP(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; WRMEM((ushort)ea.d, (byte)tmp); RLA(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_53() { int tmp; EA_IDY_NP(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; WRMEM((ushort)ea.d, (byte)tmp); SRE(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_53() { int tmp; EA_IDY_NP(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; WRMEM((ushort)ea.d, (byte)tmp); SRE(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_73() { int tmp; EA_IDY_NP(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; WRMEM((ushort)ea.d, (byte)tmp); RRA(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_73() { int tmp; EA_IDY_NP(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; WRMEM((ushort)ea.d, (byte)tmp); RRA(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_93() { int tmp=0; EA_IDY_NP(); SAH(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_93() { int tmp = 0; EA_IDY_NP(); SAH(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_b3() { int tmp; EA_IDY_P(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; LAX(tmp); }
|
protected void m6502_b3() { int tmp; EA_IDY_P(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; LAX(tmp); }
|
||||||
protected void m6502_d3() { int tmp; EA_IDY_NP(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; WRMEM((ushort)ea.d, (byte)tmp); DCP(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_d3() { int tmp; EA_IDY_NP(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; WRMEM((ushort)ea.d, (byte)tmp); DCP(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_f3() { int tmp; EA_IDY_NP(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; WRMEM((ushort)ea.d, (byte)tmp); ISB(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_f3() { int tmp; EA_IDY_NP(); tmp = rdmem_id((ushort)ea.d); pendingCycles -= 1; WRMEM((ushort)ea.d, (byte)tmp); ISB(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
@ -84,7 +78,7 @@ namespace cpu.m6502
|
|||||||
protected void m6502_24() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); BIT(tmp); }
|
protected void m6502_24() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); BIT(tmp); }
|
||||||
protected void m6502_44() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); }
|
protected void m6502_44() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); }
|
||||||
protected void m6502_64() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); }
|
protected void m6502_64() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); }
|
||||||
protected void m6502_84() { int tmp=0; STY(ref tmp); EA_ZPG(); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_84() { int tmp = 0; STY(ref tmp); EA_ZPG(); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_a4() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); LDY(tmp); }
|
protected void m6502_a4() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); LDY(tmp); }
|
||||||
protected void m6502_c4() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); CPY(tmp); }
|
protected void m6502_c4() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); CPY(tmp); }
|
||||||
protected void m6502_e4() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); CPX(tmp); }
|
protected void m6502_e4() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); CPX(tmp); }
|
||||||
@ -93,7 +87,7 @@ namespace cpu.m6502
|
|||||||
protected void m6502_34() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); }
|
protected void m6502_34() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); }
|
||||||
protected void m6502_54() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); }
|
protected void m6502_54() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); }
|
||||||
protected void m6502_74() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); }
|
protected void m6502_74() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); }
|
||||||
protected void m6502_94() { int tmp=0; STY(ref tmp); EA_ZPX(); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_94() { int tmp = 0; STY(ref tmp); EA_ZPX(); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_b4() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); LDY(tmp); }
|
protected void m6502_b4() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); LDY(tmp); }
|
||||||
protected void m6502_d4() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); }
|
protected void m6502_d4() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); }
|
||||||
protected void m6502_f4() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); }
|
protected void m6502_f4() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); }
|
||||||
@ -102,7 +96,7 @@ namespace cpu.m6502
|
|||||||
protected void m6502_25() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); AND(tmp); }
|
protected void m6502_25() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); AND(tmp); }
|
||||||
protected void m6502_45() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); EOR(tmp); }
|
protected void m6502_45() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); EOR(tmp); }
|
||||||
protected void m6502_65() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); ADC(tmp); }
|
protected void m6502_65() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); ADC(tmp); }
|
||||||
protected void m6502_85() { int tmp=0; STA(ref tmp); EA_ZPG(); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_85() { int tmp = 0; STA(ref tmp); EA_ZPG(); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_a5() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); LDA(tmp); }
|
protected void m6502_a5() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); LDA(tmp); }
|
||||||
protected void m6502_c5() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); CMP(tmp); }
|
protected void m6502_c5() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); CMP(tmp); }
|
||||||
protected void m6502_e5() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); SBC(tmp); }
|
protected void m6502_e5() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); SBC(tmp); }
|
||||||
@ -111,7 +105,7 @@ namespace cpu.m6502
|
|||||||
protected void m6502_35() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); AND(tmp); }
|
protected void m6502_35() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); AND(tmp); }
|
||||||
protected void m6502_55() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); EOR(tmp); }
|
protected void m6502_55() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); EOR(tmp); }
|
||||||
protected void m6502_75() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); ADC(tmp); }
|
protected void m6502_75() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); ADC(tmp); }
|
||||||
protected void m6502_95() { int tmp=0; STA(ref tmp); EA_ZPX(); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_95() { int tmp = 0; STA(ref tmp); EA_ZPX(); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_b5() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); LDA(tmp); }
|
protected void m6502_b5() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); LDA(tmp); }
|
||||||
protected void m6502_d5() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); CMP(tmp); }
|
protected void m6502_d5() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); CMP(tmp); }
|
||||||
protected void m6502_f5() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); SBC(tmp); }
|
protected void m6502_f5() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); SBC(tmp); }
|
||||||
@ -120,7 +114,7 @@ namespace cpu.m6502
|
|||||||
protected void m6502_26() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); ROL(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_26() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); ROL(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_46() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); LSR(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_46() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); LSR(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_66() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); ROR(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_66() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); ROR(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_86() { int tmp=0; STX(ref tmp); EA_ZPG(); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_86() { int tmp = 0; STX(ref tmp); EA_ZPG(); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_a6() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); LDX(tmp); }
|
protected void m6502_a6() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); LDX(tmp); }
|
||||||
protected void m6502_c6() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); DEC(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_c6() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); DEC(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_e6() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); INC(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_e6() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); INC(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
@ -129,7 +123,7 @@ namespace cpu.m6502
|
|||||||
protected void m6502_36() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); ROL(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_36() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); ROL(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_56() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); LSR(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_56() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); LSR(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_76() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); ROR(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_76() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); ROR(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_96() { int tmp=0; STX(ref tmp); EA_ZPY(); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_96() { int tmp = 0; STX(ref tmp); EA_ZPY(); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_b6() { int tmp; EA_ZPY(); tmp = RDMEM((ushort)ea.d); LDX(tmp); }
|
protected void m6502_b6() { int tmp; EA_ZPY(); tmp = RDMEM((ushort)ea.d); LDX(tmp); }
|
||||||
protected void m6502_d6() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); DEC(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_d6() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); DEC(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_f6() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); INC(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_f6() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); INC(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
@ -138,7 +132,7 @@ namespace cpu.m6502
|
|||||||
protected void m6502_27() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); RLA(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_27() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); RLA(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_47() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); SRE(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_47() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); SRE(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_67() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); RRA(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_67() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); RRA(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_87() { int tmp=0; SAX(ref tmp); EA_ZPG(); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_87() { int tmp = 0; SAX(ref tmp); EA_ZPG(); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_a7() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); LAX(tmp); }
|
protected void m6502_a7() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); LAX(tmp); }
|
||||||
protected void m6502_c7() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); DCP(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_c7() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); DCP(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_e7() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); ISB(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_e7() { int tmp; EA_ZPG(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); ISB(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
@ -147,7 +141,7 @@ namespace cpu.m6502
|
|||||||
protected void m6502_37() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); RLA(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_37() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); RLA(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_57() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); SRE(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_57() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); SRE(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_77() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); RRA(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_77() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); RRA(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_97() { int tmp=0; SAX(ref tmp); EA_ZPY(); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_97() { int tmp = 0; SAX(ref tmp); EA_ZPY(); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_b7() { int tmp; EA_ZPY(); tmp = RDMEM((ushort)ea.d); LAX(tmp); }
|
protected void m6502_b7() { int tmp; EA_ZPY(); tmp = RDMEM((ushort)ea.d); LAX(tmp); }
|
||||||
protected void m6502_d7() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); DCP(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_d7() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); DCP(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_f7() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); ISB(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_f7() { int tmp; EA_ZPX(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); ISB(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
@ -183,7 +177,7 @@ namespace cpu.m6502
|
|||||||
protected void m6502_39() { int tmp; EA_ABY_P(); tmp = RDMEM((ushort)ea.d); AND(tmp); }
|
protected void m6502_39() { int tmp; EA_ABY_P(); tmp = RDMEM((ushort)ea.d); AND(tmp); }
|
||||||
protected void m6502_59() { int tmp; EA_ABY_P(); tmp = RDMEM((ushort)ea.d); EOR(tmp); }
|
protected void m6502_59() { int tmp; EA_ABY_P(); tmp = RDMEM((ushort)ea.d); EOR(tmp); }
|
||||||
protected void m6502_79() { int tmp; EA_ABY_P(); tmp = RDMEM((ushort)ea.d); ADC(tmp); }
|
protected void m6502_79() { int tmp; EA_ABY_P(); tmp = RDMEM((ushort)ea.d); ADC(tmp); }
|
||||||
protected void m6502_99() { int tmp=0; STA(ref tmp); EA_ABY_NP(); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_99() { int tmp = 0; STA(ref tmp); EA_ABY_NP(); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_b9() { int tmp; EA_ABY_P(); tmp = RDMEM((ushort)ea.d); LDA(tmp); }
|
protected void m6502_b9() { int tmp; EA_ABY_P(); tmp = RDMEM((ushort)ea.d); LDA(tmp); }
|
||||||
protected void m6502_d9() { int tmp; EA_ABY_P(); tmp = RDMEM((ushort)ea.d); CMP(tmp); }
|
protected void m6502_d9() { int tmp; EA_ABY_P(); tmp = RDMEM((ushort)ea.d); CMP(tmp); }
|
||||||
protected void m6502_f9() { int tmp; EA_ABY_P(); tmp = RDMEM((ushort)ea.d); SBC(tmp); }
|
protected void m6502_f9() { int tmp; EA_ABY_P(); tmp = RDMEM((ushort)ea.d); SBC(tmp); }
|
||||||
@ -219,7 +213,7 @@ namespace cpu.m6502
|
|||||||
protected void m6502_3b() { int tmp; EA_ABY_NP(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); RLA(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_3b() { int tmp; EA_ABY_NP(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); RLA(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_5b() { int tmp; EA_ABY_NP(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); SRE(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_5b() { int tmp; EA_ABY_NP(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); SRE(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_7b() { int tmp; EA_ABY_NP(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); RRA(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_7b() { int tmp; EA_ABY_NP(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); RRA(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_9b() { int tmp=0; EA_ABY_NP(); SSH(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_9b() { int tmp = 0; EA_ABY_NP(); SSH(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_bb() { int tmp; EA_ABY_P(); tmp = RDMEM((ushort)ea.d); AST(tmp); }
|
protected void m6502_bb() { int tmp; EA_ABY_P(); tmp = RDMEM((ushort)ea.d); AST(tmp); }
|
||||||
protected void m6502_db() { int tmp; EA_ABY_NP(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); DCP(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_db() { int tmp; EA_ABY_NP(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); DCP(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_fb() { int tmp; EA_ABY_NP(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); ISB(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_fb() { int tmp; EA_ABY_NP(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); ISB(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
@ -228,7 +222,7 @@ namespace cpu.m6502
|
|||||||
protected void m6502_2c() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); BIT(tmp); }
|
protected void m6502_2c() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); BIT(tmp); }
|
||||||
protected void m6502_4c() { EA_ABS(); JMP(); }
|
protected void m6502_4c() { EA_ABS(); JMP(); }
|
||||||
protected void m6502_6c() { int tmp; EA_IND(); JMP(); }
|
protected void m6502_6c() { int tmp; EA_IND(); JMP(); }
|
||||||
protected void m6502_8c() { int tmp=0; STY(ref tmp); EA_ABS(); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_8c() { int tmp = 0; STY(ref tmp); EA_ABS(); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_ac() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); LDY(tmp); }
|
protected void m6502_ac() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); LDY(tmp); }
|
||||||
protected void m6502_cc() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); CPY(tmp); }
|
protected void m6502_cc() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); CPY(tmp); }
|
||||||
protected void m6502_ec() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); CPX(tmp); }
|
protected void m6502_ec() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); CPX(tmp); }
|
||||||
@ -237,7 +231,7 @@ namespace cpu.m6502
|
|||||||
protected void m6502_3c() { int tmp; EA_ABX_P(); tmp = RDMEM((ushort)ea.d); }
|
protected void m6502_3c() { int tmp; EA_ABX_P(); tmp = RDMEM((ushort)ea.d); }
|
||||||
protected void m6502_5c() { int tmp; EA_ABX_P(); tmp = RDMEM((ushort)ea.d); }
|
protected void m6502_5c() { int tmp; EA_ABX_P(); tmp = RDMEM((ushort)ea.d); }
|
||||||
protected void m6502_7c() { int tmp; EA_ABX_P(); tmp = RDMEM((ushort)ea.d); }
|
protected void m6502_7c() { int tmp; EA_ABX_P(); tmp = RDMEM((ushort)ea.d); }
|
||||||
protected void m6502_9c() { int tmp=0; EA_ABX_NP(); SYH(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_9c() { int tmp = 0; EA_ABX_NP(); SYH(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_bc() { int tmp; EA_ABX_P(); tmp = RDMEM((ushort)ea.d); LDY(tmp); }
|
protected void m6502_bc() { int tmp; EA_ABX_P(); tmp = RDMEM((ushort)ea.d); LDY(tmp); }
|
||||||
protected void m6502_dc() { int tmp; EA_ABX_P(); tmp = RDMEM((ushort)ea.d); }
|
protected void m6502_dc() { int tmp; EA_ABX_P(); tmp = RDMEM((ushort)ea.d); }
|
||||||
protected void m6502_fc() { int tmp; EA_ABX_P(); tmp = RDMEM((ushort)ea.d); }
|
protected void m6502_fc() { int tmp; EA_ABX_P(); tmp = RDMEM((ushort)ea.d); }
|
||||||
@ -246,7 +240,7 @@ namespace cpu.m6502
|
|||||||
protected void m6502_2d() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); AND(tmp); }
|
protected void m6502_2d() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); AND(tmp); }
|
||||||
protected void m6502_4d() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); EOR(tmp); }
|
protected void m6502_4d() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); EOR(tmp); }
|
||||||
protected void m6502_6d() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); ADC(tmp); }
|
protected void m6502_6d() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); ADC(tmp); }
|
||||||
protected void m6502_8d() { int tmp=0; STA(ref tmp); EA_ABS(); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_8d() { int tmp = 0; STA(ref tmp); EA_ABS(); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_ad() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); LDA(tmp); }
|
protected void m6502_ad() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); LDA(tmp); }
|
||||||
protected void m6502_cd() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); CMP(tmp); }
|
protected void m6502_cd() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); CMP(tmp); }
|
||||||
protected void m6502_ed() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); SBC(tmp); }
|
protected void m6502_ed() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); SBC(tmp); }
|
||||||
@ -255,7 +249,7 @@ namespace cpu.m6502
|
|||||||
protected void m6502_3d() { int tmp; EA_ABX_P(); tmp = RDMEM((ushort)ea.d); AND(tmp); }
|
protected void m6502_3d() { int tmp; EA_ABX_P(); tmp = RDMEM((ushort)ea.d); AND(tmp); }
|
||||||
protected void m6502_5d() { int tmp; EA_ABX_P(); tmp = RDMEM((ushort)ea.d); EOR(tmp); }
|
protected void m6502_5d() { int tmp; EA_ABX_P(); tmp = RDMEM((ushort)ea.d); EOR(tmp); }
|
||||||
protected void m6502_7d() { int tmp; EA_ABX_P(); tmp = RDMEM((ushort)ea.d); ADC(tmp); }
|
protected void m6502_7d() { int tmp; EA_ABX_P(); tmp = RDMEM((ushort)ea.d); ADC(tmp); }
|
||||||
protected void m6502_9d() { int tmp=0; STA(ref tmp); EA_ABX_NP(); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_9d() { int tmp = 0; STA(ref tmp); EA_ABX_NP(); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_bd() { int tmp; EA_ABX_P(); tmp = RDMEM((ushort)ea.d); LDA(tmp); }
|
protected void m6502_bd() { int tmp; EA_ABX_P(); tmp = RDMEM((ushort)ea.d); LDA(tmp); }
|
||||||
protected void m6502_dd() { int tmp; EA_ABX_P(); tmp = RDMEM((ushort)ea.d); CMP(tmp); }
|
protected void m6502_dd() { int tmp; EA_ABX_P(); tmp = RDMEM((ushort)ea.d); CMP(tmp); }
|
||||||
protected void m6502_fd() { int tmp; EA_ABX_P(); tmp = RDMEM((ushort)ea.d); SBC(tmp); }
|
protected void m6502_fd() { int tmp; EA_ABX_P(); tmp = RDMEM((ushort)ea.d); SBC(tmp); }
|
||||||
@ -264,7 +258,7 @@ namespace cpu.m6502
|
|||||||
protected void m6502_2e() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); ROL(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_2e() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); ROL(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_4e() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); LSR(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_4e() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); LSR(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_6e() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); ROR(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_6e() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); ROR(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_8e() { int tmp=0; STX(ref tmp); EA_ABS(); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_8e() { int tmp = 0; STX(ref tmp); EA_ABS(); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_ae() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); LDX(tmp); }
|
protected void m6502_ae() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); LDX(tmp); }
|
||||||
protected void m6502_ce() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); DEC(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_ce() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); DEC(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_ee() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); INC(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_ee() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); INC(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
@ -273,7 +267,7 @@ namespace cpu.m6502
|
|||||||
protected void m6502_3e() { int tmp; EA_ABX_NP(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); ROL(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_3e() { int tmp; EA_ABX_NP(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); ROL(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_5e() { int tmp; EA_ABX_NP(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); LSR(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_5e() { int tmp; EA_ABX_NP(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); LSR(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_7e() { int tmp; EA_ABX_NP(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); ROR(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_7e() { int tmp; EA_ABX_NP(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); ROR(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_9e() { int tmp=0; EA_ABY_NP(); SXH(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_9e() { int tmp = 0; EA_ABY_NP(); SXH(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_be() { int tmp; EA_ABY_P(); tmp = RDMEM((ushort)ea.d); LDX(tmp); }
|
protected void m6502_be() { int tmp; EA_ABY_P(); tmp = RDMEM((ushort)ea.d); LDX(tmp); }
|
||||||
protected void m6502_de() { int tmp; EA_ABX_NP(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); DEC(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_de() { int tmp; EA_ABX_NP(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); DEC(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_fe() { int tmp; EA_ABX_NP(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); INC(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_fe() { int tmp; EA_ABX_NP(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); INC(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
@ -282,7 +276,7 @@ namespace cpu.m6502
|
|||||||
protected void m6502_2f() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); RLA(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_2f() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); RLA(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_4f() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); SRE(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_4f() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); SRE(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_6f() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); RRA(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_6f() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); RRA(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_8f() { int tmp=0; SAX(ref tmp); EA_ABS(); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_8f() { int tmp = 0; SAX(ref tmp); EA_ABS(); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_af() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); LAX(tmp); }
|
protected void m6502_af() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); LAX(tmp); }
|
||||||
protected void m6502_cf() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); DCP(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_cf() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); DCP(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_ef() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); ISB(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_ef() { int tmp; EA_ABS(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); ISB(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
@ -291,7 +285,7 @@ namespace cpu.m6502
|
|||||||
protected void m6502_3f() { int tmp; EA_ABX_NP(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); RLA(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_3f() { int tmp; EA_ABX_NP(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); RLA(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_5f() { int tmp; EA_ABX_NP(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); SRE(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_5f() { int tmp; EA_ABX_NP(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); SRE(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_7f() { int tmp; EA_ABX_NP(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); RRA(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_7f() { int tmp; EA_ABX_NP(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); RRA(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_9f() { int tmp=0; EA_ABY_NP(); SAH(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_9f() { int tmp = 0; EA_ABY_NP(); SAH(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_bf() { int tmp; EA_ABY_P(); tmp = RDMEM((ushort)ea.d); LAX(tmp); }
|
protected void m6502_bf() { int tmp; EA_ABY_P(); tmp = RDMEM((ushort)ea.d); LAX(tmp); }
|
||||||
protected void m6502_df() { int tmp; EA_ABX_NP(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); DCP(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_df() { int tmp; EA_ABX_NP(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); DCP(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
protected void m6502_ff() { int tmp; EA_ABX_NP(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); ISB(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
protected void m6502_ff() { int tmp; EA_ABX_NP(); tmp = RDMEM((ushort)ea.d); WRMEM((ushort)ea.d, (byte)tmp); ISB(ref tmp); WRMEM((ushort)ea.d, (byte)tmp); }
|
||||||
|
@ -1,8 +1,4 @@
|
|||||||
using System;
|
using mame;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using mame;
|
|
||||||
|
|
||||||
namespace cpu.m6502
|
namespace cpu.m6502
|
||||||
{
|
{
|
||||||
@ -468,7 +464,7 @@ namespace cpu.m6502
|
|||||||
PULL(ref p);
|
PULL(ref p);
|
||||||
PULL(ref pc.LowByte);
|
PULL(ref pc.LowByte);
|
||||||
PULL(ref pc.HighByte);
|
PULL(ref pc.HighByte);
|
||||||
p |=(byte)(F_T | F_B);
|
p |= (byte)(F_T | F_B);
|
||||||
if ((irq_state != (byte)LineState.CLEAR_LINE) && ((p & F_I) == 0))
|
if ((irq_state != (byte)LineState.CLEAR_LINE) && ((p & F_I) == 0))
|
||||||
{
|
{
|
||||||
after_cli = 1;
|
after_cli = 1;
|
||||||
@ -491,7 +487,7 @@ namespace cpu.m6502
|
|||||||
int sum = a - tmp - c;
|
int sum = a - tmp - c;
|
||||||
int lo = (a & 0x0f) - (tmp & 0x0f) - c;
|
int lo = (a & 0x0f) - (tmp & 0x0f) - c;
|
||||||
int hi = (a & 0xf0) - (tmp & 0xf0);
|
int hi = (a & 0xf0) - (tmp & 0xf0);
|
||||||
if ((lo & 0x10)!=0)
|
if ((lo & 0x10) != 0)
|
||||||
{
|
{
|
||||||
lo -= 6;
|
lo -= 6;
|
||||||
hi--;
|
hi--;
|
||||||
|
@ -1,10 +1,6 @@
|
|||||||
using System;
|
using mame;
|
||||||
using System.Collections.Generic;
|
using System;
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using mame;
|
|
||||||
|
|
||||||
namespace cpu.m6800
|
namespace cpu.m6800
|
||||||
{
|
{
|
||||||
@ -211,7 +207,7 @@ namespace cpu.m6800
|
|||||||
subb_ex,cmpb_ex,sbcb_ex,illegal,andb_ex,bitb_ex,ldb_ex, stb_ex,
|
subb_ex,cmpb_ex,sbcb_ex,illegal,andb_ex,bitb_ex,ldb_ex, stb_ex,
|
||||||
eorb_ex,adcb_ex,orb_ex, addb_ex,illegal,illegal,ldx_ex, stx_ex
|
eorb_ex,adcb_ex,orb_ex, addb_ex,illegal,illegal,ldx_ex, stx_ex
|
||||||
};
|
};
|
||||||
hd63701_insn=new Action[]
|
hd63701_insn = new Action[]
|
||||||
{
|
{
|
||||||
trap, nop, trap ,trap ,lsrd, asld, tap, tpa,
|
trap, nop, trap ,trap ,lsrd, asld, tap, tpa,
|
||||||
inx, dex, clv, sev, clc, sec, cli, sei,
|
inx, dex, clv, sev, clc, sec, cli, sei,
|
||||||
@ -353,7 +349,7 @@ namespace cpu.m6800
|
|||||||
if (irq_state[0] != (byte)LineState.CLEAR_LINE)
|
if (irq_state[0] != (byte)LineState.CLEAR_LINE)
|
||||||
{
|
{
|
||||||
ENTER_INTERRUPT(0xfff8);
|
ENTER_INTERRUPT(0xfff8);
|
||||||
if( irq_callback!=null )
|
if (irq_callback != null)
|
||||||
{
|
{
|
||||||
irq_callback(0);
|
irq_callback(0);
|
||||||
}
|
}
|
||||||
@ -921,7 +917,7 @@ namespace cpu.m6800
|
|||||||
do
|
do
|
||||||
{
|
{
|
||||||
int prevCycles = pendingCycles;
|
int prevCycles = pendingCycles;
|
||||||
if ((wai_state & (M6800_WAI | M6800_SLP))!=0)
|
if ((wai_state & (M6800_WAI | M6800_SLP)) != 0)
|
||||||
{
|
{
|
||||||
EAT_CYCLES();
|
EAT_CYCLES();
|
||||||
}
|
}
|
||||||
@ -1042,7 +1038,7 @@ namespace cpu.m6800
|
|||||||
}
|
}
|
||||||
private void m6803_internal_registers_w(int offset, byte data)
|
private void m6803_internal_registers_w(int offset, byte data)
|
||||||
{
|
{
|
||||||
int latch09=0;
|
int latch09 = 0;
|
||||||
switch (offset)
|
switch (offset)
|
||||||
{
|
{
|
||||||
case 0x00:
|
case 0x00:
|
||||||
|
@ -1,9 +1,4 @@
|
|||||||
using System;
|
using mame;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using mame;
|
|
||||||
|
|
||||||
namespace cpu.m6800
|
namespace cpu.m6800
|
||||||
{
|
{
|
||||||
@ -243,11 +238,11 @@ namespace cpu.m6800
|
|||||||
}
|
}
|
||||||
protected void pula()
|
protected void pula()
|
||||||
{
|
{
|
||||||
D.HighByte=PULLBYTE();
|
D.HighByte = PULLBYTE();
|
||||||
}
|
}
|
||||||
protected void pulb()
|
protected void pulb()
|
||||||
{
|
{
|
||||||
D.LowByte=PULLBYTE();
|
D.LowByte = PULLBYTE();
|
||||||
}
|
}
|
||||||
protected void des()
|
protected void des()
|
||||||
{
|
{
|
||||||
@ -267,11 +262,11 @@ namespace cpu.m6800
|
|||||||
}
|
}
|
||||||
protected void pulx()
|
protected void pulx()
|
||||||
{
|
{
|
||||||
X=PULLWORD();
|
X = PULLWORD();
|
||||||
}
|
}
|
||||||
protected void rts()
|
protected void rts()
|
||||||
{
|
{
|
||||||
PC=PULLWORD();
|
PC = PULLWORD();
|
||||||
//CHANGE_PC();
|
//CHANGE_PC();
|
||||||
}
|
}
|
||||||
protected void abx()
|
protected void abx()
|
||||||
@ -280,11 +275,11 @@ namespace cpu.m6800
|
|||||||
}
|
}
|
||||||
protected void rti()
|
protected void rti()
|
||||||
{
|
{
|
||||||
cc=PULLBYTE();
|
cc = PULLBYTE();
|
||||||
D.LowByte=PULLBYTE();
|
D.LowByte = PULLBYTE();
|
||||||
D.HighByte=PULLBYTE();
|
D.HighByte = PULLBYTE();
|
||||||
X=PULLWORD();
|
X = PULLWORD();
|
||||||
PC=PULLWORD();
|
PC = PULLWORD();
|
||||||
//CHANGE_PC();
|
//CHANGE_PC();
|
||||||
CHECK_IRQ_LINES();
|
CHECK_IRQ_LINES();
|
||||||
}
|
}
|
||||||
|
@ -1036,7 +1036,7 @@ namespace cpu.m68000
|
|||||||
int mode = (op >> 3) & 0x07;
|
int mode = (op >> 3) & 0x07;
|
||||||
int reg = op & 0x07;
|
int reg = op & 0x07;
|
||||||
info.Mnemonic = "asl";
|
info.Mnemonic = "asl";
|
||||||
info.Args=DisassembleValue(mode, reg, 1, ref pc);
|
info.Args = DisassembleValue(mode, reg, 1, ref pc);
|
||||||
info.Length = pc - info.PC;
|
info.Length = pc - info.PC;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -284,7 +284,7 @@ namespace cpu.m68000
|
|||||||
{
|
{
|
||||||
//D[reg].u8 = (byte)(result | 0x80);
|
//D[reg].u8 = (byte)(result | 0x80);
|
||||||
}*/
|
}*/
|
||||||
WriteValueB(mode, reg,(sbyte)(result | 0x80));
|
WriteValueB(mode, reg, (sbyte)(result | 0x80));
|
||||||
pendingCycles -= (mode == 0) ? 4 : 14 + EACyclesBW[mode, reg];
|
pendingCycles -= (mode == 0) ? 4 : 14 + EACyclesBW[mode, reg];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
using System;
|
using mame;
|
||||||
using System.Runtime.InteropServices;
|
using System;
|
||||||
using System.IO;
|
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Collections.Generic;
|
using System.IO;
|
||||||
using mame;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
namespace cpu.m68000
|
namespace cpu.m68000
|
||||||
{
|
{
|
||||||
@ -72,14 +71,14 @@ namespace cpu.m68000
|
|||||||
return;
|
return;
|
||||||
if (value == true) // entering supervisor mode
|
if (value == true) // entering supervisor mode
|
||||||
{
|
{
|
||||||
//Console.WriteLine("&^&^&^&^& ENTER SUPERVISOR MODE");
|
//EmuLogger.Log("&^&^&^&^& ENTER SUPERVISOR MODE");
|
||||||
usp = A[7].s32;
|
usp = A[7].s32;
|
||||||
A[7].s32 = ssp;
|
A[7].s32 = ssp;
|
||||||
s = true;
|
s = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ // exiting supervisor mode
|
{ // exiting supervisor mode
|
||||||
//Console.WriteLine("&^&^&^&^& LEAVE SUPERVISOR MODE");
|
//EmuLogger.Log("&^&^&^&^& LEAVE SUPERVISOR MODE");
|
||||||
ssp = A[7].s32;
|
ssp = A[7].s32;
|
||||||
A[7].s32 = usp;
|
A[7].s32 = usp;
|
||||||
s = false;
|
s = false;
|
||||||
@ -176,7 +175,7 @@ namespace cpu.m68000
|
|||||||
}
|
}
|
||||||
public override void set_irq_line(int irqline, LineState state)
|
public override void set_irq_line(int irqline, LineState state)
|
||||||
{
|
{
|
||||||
if (irqline ==(int)LineState.INPUT_LINE_NMI)
|
if (irqline == (int)LineState.INPUT_LINE_NMI)
|
||||||
irqline = 7;
|
irqline = 7;
|
||||||
switch (state)
|
switch (state)
|
||||||
{
|
{
|
||||||
@ -212,9 +211,9 @@ namespace cpu.m68000
|
|||||||
|
|
||||||
public void Step()
|
public void Step()
|
||||||
{
|
{
|
||||||
//Console.WriteLine(Disassemble(PC));
|
//EmuLogger.Log(Disassemble(PC));
|
||||||
|
|
||||||
op = (ushort)ReadOpWord(PC);PC += 2;
|
op = (ushort)ReadOpWord(PC); PC += 2;
|
||||||
Opcodes[op]();
|
Opcodes[op]();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -410,7 +409,7 @@ namespace cpu.m68000
|
|||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//Console.WriteLine("Skipping unrecognized identifier " + args[0]);
|
//EmuLogger.Log("Skipping unrecognized identifier " + args[0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -542,7 +542,7 @@ namespace cpu.m68000
|
|||||||
|
|
||||||
int GetIndex()
|
int GetIndex()
|
||||||
{
|
{
|
||||||
//Console.WriteLine("IN INDEX PORTION - NOT VERIFIED!!!");
|
//EmuLogger.Log("IN INDEX PORTION - NOT VERIFIED!!!");
|
||||||
// TODO kid chameleon triggers this in startup sequence
|
// TODO kid chameleon triggers this in startup sequence
|
||||||
|
|
||||||
short extension = ReadOpWord(PC); PC += 2;
|
short extension = ReadOpWord(PC); PC += 2;
|
||||||
@ -571,7 +571,7 @@ namespace cpu.m68000
|
|||||||
|
|
||||||
int PeekIndex()
|
int PeekIndex()
|
||||||
{
|
{
|
||||||
//Console.WriteLine("IN INDEX PORTION - NOT VERIFIED!!!");
|
//EmuLogger.Log("IN INDEX PORTION - NOT VERIFIED!!!");
|
||||||
|
|
||||||
short extension = ReadOpWord(PC);
|
short extension = ReadOpWord(PC);
|
||||||
|
|
||||||
|
@ -1,17 +1,13 @@
|
|||||||
using System;
|
using mame;
|
||||||
using System.Collections.Generic;
|
using System;
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using mame;
|
|
||||||
|
|
||||||
namespace cpu.m6805
|
namespace cpu.m6805
|
||||||
{
|
{
|
||||||
public partial class M6805 : cpuexec_data
|
public partial class M6805 : cpuexec_data
|
||||||
{
|
{
|
||||||
public static M6805 m1;
|
public static M6805 m1;
|
||||||
public Register ea,pc,s;
|
public Register ea, pc, s;
|
||||||
public int subtype;
|
public int subtype;
|
||||||
public ushort sp_mask;
|
public ushort sp_mask;
|
||||||
public ushort sp_low;
|
public ushort sp_low;
|
||||||
@ -23,7 +19,7 @@ namespace cpu.m6805
|
|||||||
public int nmi_state;
|
public int nmi_state;
|
||||||
public byte CFLAG = 0x01, ZFLAG = 0x02, NFLAG = 0x04, IFLAG = 0x08, HFLAG = 0x10;
|
public byte CFLAG = 0x01, ZFLAG = 0x02, NFLAG = 0x04, IFLAG = 0x08, HFLAG = 0x10;
|
||||||
public int SUBTYPE_M6805 = 0, SUBTYPE_M68705 = 1, SUBTYPE_HD63705 = 2;
|
public int SUBTYPE_M6805 = 0, SUBTYPE_M68705 = 1, SUBTYPE_HD63705 = 2;
|
||||||
public byte[] flags8i=new byte[256] /* increment */
|
public byte[] flags8i = new byte[256] /* increment */
|
||||||
{
|
{
|
||||||
0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
@ -42,7 +38,7 @@ namespace cpu.m6805
|
|||||||
0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,
|
0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,
|
||||||
0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04
|
0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04
|
||||||
};
|
};
|
||||||
public byte[] flags8d=new byte[256] /* decrement */
|
public byte[] flags8d = new byte[256] /* decrement */
|
||||||
{
|
{
|
||||||
0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
@ -61,7 +57,7 @@ namespace cpu.m6805
|
|||||||
0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,
|
0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,
|
||||||
0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04
|
0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04
|
||||||
};
|
};
|
||||||
public byte[] cycles1 =new byte[]
|
public byte[] cycles1 = new byte[]
|
||||||
{
|
{
|
||||||
/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
|
/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
|
||||||
/*0*/ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
|
/*0*/ 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
|
||||||
@ -165,19 +161,19 @@ namespace cpu.m6805
|
|||||||
}
|
}
|
||||||
private void CLR_NZ()
|
private void CLR_NZ()
|
||||||
{
|
{
|
||||||
cc&=(byte)~(NFLAG|ZFLAG);
|
cc &= (byte)~(NFLAG | ZFLAG);
|
||||||
}
|
}
|
||||||
private void CLR_HNZC()
|
private void CLR_HNZC()
|
||||||
{
|
{
|
||||||
cc&=(byte)~(HFLAG|NFLAG|ZFLAG|CFLAG);
|
cc &= (byte)~(HFLAG | NFLAG | ZFLAG | CFLAG);
|
||||||
}
|
}
|
||||||
private void CLR_Z()
|
private void CLR_Z()
|
||||||
{
|
{
|
||||||
cc&=(byte)~(ZFLAG);
|
cc &= (byte)~(ZFLAG);
|
||||||
}
|
}
|
||||||
private void CLR_NZC()
|
private void CLR_NZC()
|
||||||
{
|
{
|
||||||
cc&=(byte)~(NFLAG|ZFLAG|CFLAG);
|
cc &= (byte)~(NFLAG | ZFLAG | CFLAG);
|
||||||
}
|
}
|
||||||
private void CLR_ZC()
|
private void CLR_ZC()
|
||||||
{
|
{
|
||||||
@ -185,7 +181,7 @@ namespace cpu.m6805
|
|||||||
}
|
}
|
||||||
private void SET_Z(byte b)
|
private void SET_Z(byte b)
|
||||||
{
|
{
|
||||||
if(b==0)
|
if (b == 0)
|
||||||
{
|
{
|
||||||
SEZ();
|
SEZ();
|
||||||
}
|
}
|
||||||
@ -196,30 +192,30 @@ namespace cpu.m6805
|
|||||||
}
|
}
|
||||||
private void SET_N8(byte b)
|
private void SET_N8(byte b)
|
||||||
{
|
{
|
||||||
cc|=(byte)((b&0x80)>>5);
|
cc |= (byte)((b & 0x80) >> 5);
|
||||||
}
|
}
|
||||||
private void SET_H(byte a,byte b,byte r)
|
private void SET_H(byte a, byte b, byte r)
|
||||||
{
|
{
|
||||||
cc|=(byte)((a^b^r)&0x10);
|
cc |= (byte)((a ^ b ^ r) & 0x10);
|
||||||
}
|
}
|
||||||
private void SET_C8(ushort b)
|
private void SET_C8(ushort b)
|
||||||
{
|
{
|
||||||
cc|=(byte)((b&0x100)>>8);
|
cc |= (byte)((b & 0x100) >> 8);
|
||||||
}
|
}
|
||||||
private void SET_FLAGS8I(byte b)
|
private void SET_FLAGS8I(byte b)
|
||||||
{
|
{
|
||||||
cc|=flags8i[b&0xff];
|
cc |= flags8i[b & 0xff];
|
||||||
}
|
}
|
||||||
private void SET_FLAGS8D(byte b)
|
private void SET_FLAGS8D(byte b)
|
||||||
{
|
{
|
||||||
cc|=flags8d[b&0xff];
|
cc |= flags8d[b & 0xff];
|
||||||
}
|
}
|
||||||
private void SET_NZ8(byte b)
|
private void SET_NZ8(byte b)
|
||||||
{
|
{
|
||||||
SET_N8(b);
|
SET_N8(b);
|
||||||
SET_Z(b);
|
SET_Z(b);
|
||||||
}
|
}
|
||||||
private void SET_FLAGS8(byte a,byte b,ushort r)
|
private void SET_FLAGS8(byte a, byte b, ushort r)
|
||||||
{
|
{
|
||||||
SET_N8((byte)r);
|
SET_N8((byte)r);
|
||||||
SET_Z8((byte)r);
|
SET_Z8((byte)r);
|
||||||
@ -236,7 +232,7 @@ namespace cpu.m6805
|
|||||||
}
|
}
|
||||||
private void IMM8()
|
private void IMM8()
|
||||||
{
|
{
|
||||||
ea.LowWord= pc.LowWord++;
|
ea.LowWord = pc.LowWord++;
|
||||||
}
|
}
|
||||||
private void EXTENDED()
|
private void EXTENDED()
|
||||||
{
|
{
|
||||||
@ -244,54 +240,54 @@ namespace cpu.m6805
|
|||||||
}
|
}
|
||||||
private void INDEXED()
|
private void INDEXED()
|
||||||
{
|
{
|
||||||
ea.LowWord=x;
|
ea.LowWord = x;
|
||||||
}
|
}
|
||||||
private void INDEXED1()
|
private void INDEXED1()
|
||||||
{
|
{
|
||||||
ea.d=0;
|
ea.d = 0;
|
||||||
IMMBYTE(ref ea.LowByte);
|
IMMBYTE(ref ea.LowByte);
|
||||||
ea.LowWord+=x;
|
ea.LowWord += x;
|
||||||
}
|
}
|
||||||
private void INDEXED2()
|
private void INDEXED2()
|
||||||
{
|
{
|
||||||
IMMWORD(ref ea);
|
IMMWORD(ref ea);
|
||||||
ea.LowWord+=x;
|
ea.LowWord += x;
|
||||||
}
|
}
|
||||||
private void SEC()
|
private void SEC()
|
||||||
{
|
{
|
||||||
cc|=CFLAG;
|
cc |= CFLAG;
|
||||||
}
|
}
|
||||||
private void CLC()
|
private void CLC()
|
||||||
{
|
{
|
||||||
cc&=(byte)~CFLAG;
|
cc &= (byte)~CFLAG;
|
||||||
}
|
}
|
||||||
private void SEZ()
|
private void SEZ()
|
||||||
{
|
{
|
||||||
cc|=ZFLAG;
|
cc |= ZFLAG;
|
||||||
}
|
}
|
||||||
private void CLZ()
|
private void CLZ()
|
||||||
{
|
{
|
||||||
cc&=(byte)~ZFLAG;
|
cc &= (byte)~ZFLAG;
|
||||||
}
|
}
|
||||||
private void SEN()
|
private void SEN()
|
||||||
{
|
{
|
||||||
cc|=NFLAG;
|
cc |= NFLAG;
|
||||||
}
|
}
|
||||||
private void CLN()
|
private void CLN()
|
||||||
{
|
{
|
||||||
cc&=(byte)~NFLAG;
|
cc &= (byte)~NFLAG;
|
||||||
}
|
}
|
||||||
private void SEH()
|
private void SEH()
|
||||||
{
|
{
|
||||||
cc|=HFLAG;
|
cc |= HFLAG;
|
||||||
}
|
}
|
||||||
private void CLH()
|
private void CLH()
|
||||||
{
|
{
|
||||||
cc&=(byte)~HFLAG;
|
cc &= (byte)~HFLAG;
|
||||||
}
|
}
|
||||||
private void SEI()
|
private void SEI()
|
||||||
{
|
{
|
||||||
cc|=IFLAG;
|
cc |= IFLAG;
|
||||||
}
|
}
|
||||||
private void CLI()
|
private void CLI()
|
||||||
{
|
{
|
||||||
@ -300,31 +296,31 @@ namespace cpu.m6805
|
|||||||
private void DIRBYTE(ref byte b)
|
private void DIRBYTE(ref byte b)
|
||||||
{
|
{
|
||||||
DIRECT();
|
DIRECT();
|
||||||
b=ReadMemory((ushort)ea.d);
|
b = ReadMemory((ushort)ea.d);
|
||||||
}
|
}
|
||||||
private void EXTBYTE(ref byte b)
|
private void EXTBYTE(ref byte b)
|
||||||
{
|
{
|
||||||
EXTENDED();
|
EXTENDED();
|
||||||
b=ReadMemory((ushort)ea.d);
|
b = ReadMemory((ushort)ea.d);
|
||||||
}
|
}
|
||||||
private void IDXBYTE(ref byte b)
|
private void IDXBYTE(ref byte b)
|
||||||
{
|
{
|
||||||
INDEXED();
|
INDEXED();
|
||||||
b=ReadMemory((ushort)ea.d);
|
b = ReadMemory((ushort)ea.d);
|
||||||
}
|
}
|
||||||
private void IDX1BYTE(ref byte b)
|
private void IDX1BYTE(ref byte b)
|
||||||
{
|
{
|
||||||
INDEXED1();
|
INDEXED1();
|
||||||
b=ReadMemory((ushort)ea.d);
|
b = ReadMemory((ushort)ea.d);
|
||||||
}
|
}
|
||||||
private void IDX2BYTE(ref byte b)
|
private void IDX2BYTE(ref byte b)
|
||||||
{
|
{
|
||||||
INDEXED2();
|
INDEXED2();
|
||||||
b=ReadMemory((ushort)ea.d);
|
b = ReadMemory((ushort)ea.d);
|
||||||
}
|
}
|
||||||
private void BRANCH(bool f)
|
private void BRANCH(bool f)
|
||||||
{
|
{
|
||||||
byte t=0;
|
byte t = 0;
|
||||||
IMMBYTE(ref t);
|
IMMBYTE(ref t);
|
||||||
if (f)
|
if (f)
|
||||||
{
|
{
|
||||||
|
@ -1,9 +1,4 @@
|
|||||||
using System;
|
using mame;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using mame;
|
|
||||||
|
|
||||||
namespace cpu.m6805
|
namespace cpu.m6805
|
||||||
{
|
{
|
||||||
@ -18,7 +13,7 @@ namespace cpu.m6805
|
|||||||
/* $00/$02/$04/$06/$08/$0A/$0C/$0E BRSET direct,relative ---- */
|
/* $00/$02/$04/$06/$08/$0A/$0C/$0E BRSET direct,relative ---- */
|
||||||
protected void brset(byte bit)
|
protected void brset(byte bit)
|
||||||
{
|
{
|
||||||
byte t=0, r=0;
|
byte t = 0, r = 0;
|
||||||
DIRBYTE(ref r);
|
DIRBYTE(ref r);
|
||||||
IMMBYTE(ref t);
|
IMMBYTE(ref t);
|
||||||
CLC();
|
CLC();
|
||||||
@ -1116,7 +1111,7 @@ namespace cpu.m6805
|
|||||||
/* $b5 BITA direct -**- */
|
/* $b5 BITA direct -**- */
|
||||||
protected void bita_di()
|
protected void bita_di()
|
||||||
{
|
{
|
||||||
byte t=0, r;
|
byte t = 0, r;
|
||||||
DIRBYTE(ref t);
|
DIRBYTE(ref t);
|
||||||
r = (byte)(a & t);
|
r = (byte)(a & t);
|
||||||
CLR_NZ();
|
CLR_NZ();
|
||||||
|
@ -1,9 +1,4 @@
|
|||||||
using System;
|
namespace cpu.m6809
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace cpu.m6809
|
|
||||||
{
|
{
|
||||||
public partial class M6809
|
public partial class M6809
|
||||||
{
|
{
|
||||||
@ -366,7 +361,7 @@ namespace cpu.m6809
|
|||||||
i1 = 1;
|
i1 = 1;
|
||||||
}
|
}
|
||||||
buffer = ReadOp(p).ToString("X2");
|
buffer = ReadOp(p).ToString("X2");
|
||||||
bool indirect,opcode_found = false;
|
bool indirect, opcode_found = false;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
opcode = ReadOp(p);
|
opcode = ReadOp(p);
|
||||||
|
@ -1,10 +1,6 @@
|
|||||||
using System;
|
using mame;
|
||||||
using System.Collections.Generic;
|
using System;
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using mame;
|
|
||||||
|
|
||||||
namespace cpu.m6809
|
namespace cpu.m6809
|
||||||
{
|
{
|
||||||
@ -498,7 +494,7 @@ namespace cpu.m6809
|
|||||||
private ushort RM16(ushort Addr)
|
private ushort RM16(ushort Addr)
|
||||||
{
|
{
|
||||||
ushort result = (ushort)(RM(Addr) << 8);
|
ushort result = (ushort)(RM(Addr) << 8);
|
||||||
return (ushort)(result | RM((ushort)((Addr + 1) &0xffff)));
|
return (ushort)(result | RM((ushort)((Addr + 1) & 0xffff)));
|
||||||
}
|
}
|
||||||
private void WM16(ushort Addr, Register p)
|
private void WM16(ushort Addr, Register p)
|
||||||
{
|
{
|
||||||
|
@ -1,8 +1,4 @@
|
|||||||
using System;
|
using mame;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using mame;
|
|
||||||
|
|
||||||
namespace cpu.m6809
|
namespace cpu.m6809
|
||||||
{
|
{
|
||||||
@ -1713,13 +1709,13 @@ namespace cpu.m6809
|
|||||||
}
|
}
|
||||||
void ldx_ex()
|
void ldx_ex()
|
||||||
{
|
{
|
||||||
X=EXTWORD();
|
X = EXTWORD();
|
||||||
CLR_NZV();
|
CLR_NZV();
|
||||||
SET_NZ16(X.LowWord);
|
SET_NZ16(X.LowWord);
|
||||||
}
|
}
|
||||||
void ldy_ex()
|
void ldy_ex()
|
||||||
{
|
{
|
||||||
Y=EXTWORD();
|
Y = EXTWORD();
|
||||||
CLR_NZV();
|
CLR_NZV();
|
||||||
SET_NZ16(Y.LowWord);
|
SET_NZ16(Y.LowWord);
|
||||||
}
|
}
|
||||||
@ -1841,7 +1837,7 @@ namespace cpu.m6809
|
|||||||
}
|
}
|
||||||
void ldd_im()
|
void ldd_im()
|
||||||
{
|
{
|
||||||
D=IMMWORD();
|
D = IMMWORD();
|
||||||
CLR_NZV();
|
CLR_NZV();
|
||||||
SET_NZ16(D.LowWord);
|
SET_NZ16(D.LowWord);
|
||||||
}
|
}
|
||||||
@ -2274,7 +2270,7 @@ namespace cpu.m6809
|
|||||||
}
|
}
|
||||||
void ldd_ex()
|
void ldd_ex()
|
||||||
{
|
{
|
||||||
D=EXTWORD();
|
D = EXTWORD();
|
||||||
CLR_NZV();
|
CLR_NZV();
|
||||||
SET_NZ16(D.LowWord);
|
SET_NZ16(D.LowWord);
|
||||||
}
|
}
|
||||||
@ -2287,13 +2283,13 @@ namespace cpu.m6809
|
|||||||
}
|
}
|
||||||
void ldu_ex()
|
void ldu_ex()
|
||||||
{
|
{
|
||||||
U=EXTWORD();
|
U = EXTWORD();
|
||||||
CLR_NZV();
|
CLR_NZV();
|
||||||
SET_NZ16(U.LowWord);
|
SET_NZ16(U.LowWord);
|
||||||
}
|
}
|
||||||
void lds_ex()
|
void lds_ex()
|
||||||
{
|
{
|
||||||
S=EXTWORD();
|
S = EXTWORD();
|
||||||
CLR_NZV();
|
CLR_NZV();
|
||||||
SET_NZ16(S.LowWord);
|
SET_NZ16(S.LowWord);
|
||||||
int_state |= M6809_LDS;
|
int_state |= M6809_LDS;
|
||||||
|
@ -1,10 +1,6 @@
|
|||||||
using System;
|
using mame;
|
||||||
using System.Collections.Generic;
|
using System;
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using mame;
|
|
||||||
|
|
||||||
namespace cpu.nec
|
namespace cpu.nec
|
||||||
{
|
{
|
||||||
@ -208,7 +204,7 @@ namespace cpu.nec
|
|||||||
ushort var = ReadWord((I.sregs[2] << 4) + I.regs.b[8] + I.regs.b[9] * 0x100);
|
ushort var = ReadWord((I.sregs[2] << 4) + I.regs.b[8] + I.regs.b[9] * 0x100);
|
||||||
I.regs.b[i * 2] = (byte)(var % 0x100);
|
I.regs.b[i * 2] = (byte)(var % 0x100);
|
||||||
I.regs.b[i * 2 + 1] = (byte)(var / 0x100);
|
I.regs.b[i * 2 + 1] = (byte)(var / 0x100);
|
||||||
ushort w4 =(ushort)(I.regs.b[8] + I.regs.b[9] * 0x100 + 2);
|
ushort w4 = (ushort)(I.regs.b[8] + I.regs.b[9] * 0x100 + 2);
|
||||||
I.regs.b[8] = (byte)(w4 % 0x100);
|
I.regs.b[8] = (byte)(w4 % 0x100);
|
||||||
I.regs.b[9] = (byte)(w4 / 0x100);
|
I.regs.b[9] = (byte)(w4 / 0x100);
|
||||||
}
|
}
|
||||||
@ -636,7 +632,7 @@ namespace cpu.nec
|
|||||||
{
|
{
|
||||||
int result, result2;
|
int result, result2;
|
||||||
b1 = false;
|
b1 = false;
|
||||||
result = (short)(I.regs.b[0]+I.regs.b[1]*0x100);
|
result = (short)(I.regs.b[0] + I.regs.b[1] * 0x100);
|
||||||
result2 = result % (short)((sbyte)tmp);
|
result2 = result % (short)((sbyte)tmp);
|
||||||
if ((result /= (short)((sbyte)tmp)) > 0xff)
|
if ((result /= (short)((sbyte)tmp)) > 0xff)
|
||||||
{
|
{
|
||||||
@ -1194,7 +1190,7 @@ namespace cpu.nec
|
|||||||
public void SaveStateBinary(BinaryWriter writer)
|
public void SaveStateBinary(BinaryWriter writer)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
writer.Write(I.regs.b,0,16);
|
writer.Write(I.regs.b, 0, 16);
|
||||||
for (i = 0; i < 4; i++)
|
for (i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
writer.Write(I.sregs[i]);
|
writer.Write(I.sregs[i]);
|
||||||
|
@ -1,9 +1,4 @@
|
|||||||
using System;
|
namespace cpu.nec
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace cpu.nec
|
|
||||||
{
|
{
|
||||||
partial class Nec
|
partial class Nec
|
||||||
{
|
{
|
||||||
@ -13,7 +8,7 @@ namespace cpu.nec
|
|||||||
int EA_000()
|
int EA_000()
|
||||||
{
|
{
|
||||||
EO = (ushort)(I.regs.b[6] + I.regs.b[7] * 0x100 + I.regs.b[12] + I.regs.b[13] * 0x100);
|
EO = (ushort)(I.regs.b[6] + I.regs.b[7] * 0x100 + I.regs.b[12] + I.regs.b[13] * 0x100);
|
||||||
EA = DefaultBase(3,I) + EO;
|
EA = DefaultBase(3, I) + EO;
|
||||||
return EA;
|
return EA;
|
||||||
}
|
}
|
||||||
int EA_001()
|
int EA_001()
|
||||||
|
@ -1,9 +1,4 @@
|
|||||||
using System;
|
namespace cpu.nec
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace cpu.nec
|
|
||||||
{
|
{
|
||||||
partial class Nec
|
partial class Nec
|
||||||
{
|
{
|
||||||
@ -820,7 +815,7 @@ namespace cpu.nec
|
|||||||
void i_repnc()
|
void i_repnc()
|
||||||
{
|
{
|
||||||
int next = fetchop();
|
int next = fetchop();
|
||||||
ushort c = (ushort)(I.regs.b[2]+I.regs.b[3]*0x100);// I.regs.w[1];
|
ushort c = (ushort)(I.regs.b[2] + I.regs.b[3] * 0x100);// I.regs.w[1];
|
||||||
switch (next)
|
switch (next)
|
||||||
{ /* Segments */
|
{ /* Segments */
|
||||||
case 0x26: seg_prefix = 1; prefix_base = (I.sregs[0] << 4); next = fetchop(); CLK(2); break;
|
case 0x26: seg_prefix = 1; prefix_base = (I.sregs[0] << 4); next = fetchop(); CLK(2); break;
|
||||||
@ -885,7 +880,7 @@ namespace cpu.nec
|
|||||||
tmp = FETCHWORD();
|
tmp = FETCHWORD();
|
||||||
PUSH((ushort)tmp);
|
PUSH((ushort)tmp);
|
||||||
//CLKW(12, 12, 5, 12, 8, 5, I.regs.w[4]);
|
//CLKW(12, 12, 5, 12, 8, 5, I.regs.w[4]);
|
||||||
CLKW(12, 12, 5, 12, 8, 5, I.regs.b[8]+I.regs.b[9]*0x100);
|
CLKW(12, 12, 5, 12, 8, 5, I.regs.b[8] + I.regs.b[9] * 0x100);
|
||||||
}
|
}
|
||||||
void i_imul_d16()
|
void i_imul_d16()
|
||||||
{
|
{
|
||||||
@ -906,7 +901,7 @@ namespace cpu.nec
|
|||||||
int tmp = (ushort)((short)((sbyte)FETCH()));
|
int tmp = (ushort)((short)((sbyte)FETCH()));
|
||||||
PUSH((ushort)tmp);
|
PUSH((ushort)tmp);
|
||||||
//CLKW(11, 11, 5, 11, 7, 3, I.regs.w[4]);
|
//CLKW(11, 11, 5, 11, 7, 3, I.regs.w[4]);
|
||||||
CLKW(11, 11, 5, 11, 7, 3, I.regs.b[8]+I.regs.b[9]*0x100);
|
CLKW(11, 11, 5, 11, 7, 3, I.regs.b[8] + I.regs.b[9] * 0x100);
|
||||||
}
|
}
|
||||||
void i_imul_d8()
|
void i_imul_d8()
|
||||||
{
|
{
|
||||||
@ -919,7 +914,7 @@ namespace cpu.nec
|
|||||||
I.CarryVal = I.OverVal = (uint)(((((int)dst) >> 15 != 0) && (((int)dst) >> 15 != -1)) ? 1 : 0);
|
I.CarryVal = I.OverVal = (uint)(((((int)dst) >> 15 != 0) && (((int)dst) >> 15 != -1)) ? 1 : 0);
|
||||||
//I.regs.w[mod_RM.regw[ModRM]] = (ushort)dst;
|
//I.regs.w[mod_RM.regw[ModRM]] = (ushort)dst;
|
||||||
I.regs.b[mod_RM.regw[ModRM] * 2] = (byte)(dst % 0x100);
|
I.regs.b[mod_RM.regw[ModRM] * 2] = (byte)(dst % 0x100);
|
||||||
I.regs.b[mod_RM.regw[ModRM] * 2+1] = (byte)(dst / 0x100);
|
I.regs.b[mod_RM.regw[ModRM] * 2 + 1] = (byte)(dst / 0x100);
|
||||||
pendingCycles -= (ModRM >= 0xc0) ? 31 : 39;
|
pendingCycles -= (ModRM >= 0xc0) ? 31 : 39;
|
||||||
}
|
}
|
||||||
void i_insb()
|
void i_insb()
|
||||||
@ -927,7 +922,7 @@ namespace cpu.nec
|
|||||||
//PutMemB(0, I.regs.w[7], ReadIOByte(I.regs.w[2]));
|
//PutMemB(0, I.regs.w[7], ReadIOByte(I.regs.w[2]));
|
||||||
PutMemB(0, I.regs.b[14] + I.regs.b[15] * 0x100, ReadIOByte(I.regs.b[4] + I.regs.b[5] * 0x100));
|
PutMemB(0, I.regs.b[14] + I.regs.b[15] * 0x100, ReadIOByte(I.regs.b[4] + I.regs.b[5] * 0x100));
|
||||||
//I.regs.w[7] += (ushort)(-2 * (I.DF ? 1 : 0) + 1);
|
//I.regs.w[7] += (ushort)(-2 * (I.DF ? 1 : 0) + 1);
|
||||||
ushort w7 =(ushort)(I.regs.b[14] + I.regs.b[15] * 0x100);
|
ushort w7 = (ushort)(I.regs.b[14] + I.regs.b[15] * 0x100);
|
||||||
w7 += (ushort)(-2 * (I.DF ? 1 : 0) + 1);
|
w7 += (ushort)(-2 * (I.DF ? 1 : 0) + 1);
|
||||||
I.regs.b[14] = (byte)(w7 % 0x100);
|
I.regs.b[14] = (byte)(w7 % 0x100);
|
||||||
I.regs.b[15] = (byte)(w7 / 0x100);
|
I.regs.b[15] = (byte)(w7 / 0x100);
|
||||||
@ -1401,7 +1396,7 @@ namespace cpu.nec
|
|||||||
void i_cwd()
|
void i_cwd()
|
||||||
{
|
{
|
||||||
//I.regs.w[2] = (ushort)(((I.regs.b[1] & 0x80) != 0) ? 0xffff : 0);
|
//I.regs.w[2] = (ushort)(((I.regs.b[1] & 0x80) != 0) ? 0xffff : 0);
|
||||||
ushort w2= (ushort)(((I.regs.b[1] & 0x80) != 0) ? 0xffff : 0);
|
ushort w2 = (ushort)(((I.regs.b[1] & 0x80) != 0) ? 0xffff : 0);
|
||||||
I.regs.b[4] = (byte)(w2 % 0x100);
|
I.regs.b[4] = (byte)(w2 % 0x100);
|
||||||
I.regs.b[5] = (byte)(w2 / 0x100);
|
I.regs.b[5] = (byte)(w2 / 0x100);
|
||||||
CLK(4);
|
CLK(4);
|
||||||
@ -1573,7 +1568,7 @@ namespace cpu.nec
|
|||||||
ushort w7 = (ushort)(I.regs.b[14] + I.regs.b[15] * 0x100 + (-4 * (I.DF ? 1 : 0) + 2));
|
ushort w7 = (ushort)(I.regs.b[14] + I.regs.b[15] * 0x100 + (-4 * (I.DF ? 1 : 0) + 2));
|
||||||
I.regs.b[14] = (byte)(w7 % 0x100);
|
I.regs.b[14] = (byte)(w7 % 0x100);
|
||||||
I.regs.b[15] = (byte)(w7 / 0x100);
|
I.regs.b[15] = (byte)(w7 / 0x100);
|
||||||
CLKW(8, 8, 5, 8, 4, 3, I.regs.b[14]+I.regs.b[15]*0x100);
|
CLKW(8, 8, 5, 8, 4, 3, I.regs.b[14] + I.regs.b[15] * 0x100);
|
||||||
}
|
}
|
||||||
void i_lodsb()
|
void i_lodsb()
|
||||||
{
|
{
|
||||||
@ -1609,14 +1604,14 @@ namespace cpu.nec
|
|||||||
}
|
}
|
||||||
void i_scasw()
|
void i_scasw()
|
||||||
{
|
{
|
||||||
ushort src = GetMemW(0, I.regs.b[14]+I.regs.b[15]*0x100);
|
ushort src = GetMemW(0, I.regs.b[14] + I.regs.b[15] * 0x100);
|
||||||
ushort dst = (ushort)(I.regs.b[0]+I.regs.b[1]*0x100);
|
ushort dst = (ushort)(I.regs.b[0] + I.regs.b[1] * 0x100);
|
||||||
SUBW(ref src, ref dst);
|
SUBW(ref src, ref dst);
|
||||||
//I.regs.w[7] += (ushort)(-4 * (I.DF ? 1 : 0) + 2);
|
//I.regs.w[7] += (ushort)(-4 * (I.DF ? 1 : 0) + 2);
|
||||||
ushort w7 = (ushort)(I.regs.b[14] + I.regs.b[15] * 0x100 + (-4 * (I.DF ? 1 : 0) + 2));
|
ushort w7 = (ushort)(I.regs.b[14] + I.regs.b[15] * 0x100 + (-4 * (I.DF ? 1 : 0) + 2));
|
||||||
I.regs.b[14] = (byte)(w7 % 0x100);
|
I.regs.b[14] = (byte)(w7 % 0x100);
|
||||||
I.regs.b[15] = (byte)(w7 / 0x100);
|
I.regs.b[15] = (byte)(w7 / 0x100);
|
||||||
CLKW(8, 8, 5, 8, 4, 3, I.regs.b[14]+I.regs.b[15]*0x100);
|
CLKW(8, 8, 5, 8, 4, 3, I.regs.b[14] + I.regs.b[15] * 0x100);
|
||||||
}
|
}
|
||||||
void i_mov_ald8()
|
void i_mov_ald8()
|
||||||
{
|
{
|
||||||
@ -1832,7 +1827,7 @@ namespace cpu.nec
|
|||||||
}
|
}
|
||||||
if (level != 0)
|
if (level != 0)
|
||||||
{
|
{
|
||||||
PUSH((ushort)(I.regs.b[10]+I.regs.b[11]*0x100));
|
PUSH((ushort)(I.regs.b[10] + I.regs.b[11] * 0x100));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void i_leave()
|
void i_leave()
|
||||||
@ -2010,7 +2005,7 @@ namespace cpu.nec
|
|||||||
}
|
}
|
||||||
void i_trans()
|
void i_trans()
|
||||||
{
|
{
|
||||||
int dest = (I.regs.b[6]+I.regs.b[7]*0x100 + I.regs.b[0]) & 0xffff;
|
int dest = (I.regs.b[6] + I.regs.b[7] * 0x100 + I.regs.b[0]) & 0xffff;
|
||||||
I.regs.b[0] = GetMemB(3, dest);
|
I.regs.b[0] = GetMemB(3, dest);
|
||||||
CLKS(9, 9, 5);
|
CLKS(9, 9, 5);
|
||||||
}
|
}
|
||||||
@ -2161,7 +2156,7 @@ namespace cpu.nec
|
|||||||
ushort w0 = ReadIOWord(I.regs.b[4] + I.regs.b[5] * 0x100);
|
ushort w0 = ReadIOWord(I.regs.b[4] + I.regs.b[5] * 0x100);
|
||||||
I.regs.b[0] = (byte)(w0 % 0x100);
|
I.regs.b[0] = (byte)(w0 % 0x100);
|
||||||
I.regs.b[1] = (byte)(w0 / 0x100);
|
I.regs.b[1] = (byte)(w0 / 0x100);
|
||||||
CLKW(12, 12, 7, 12, 8, 5, I.regs.b[4]+I.regs.b[5]*0x100);
|
CLKW(12, 12, 7, 12, 8, 5, I.regs.b[4] + I.regs.b[5] * 0x100);
|
||||||
}
|
}
|
||||||
void i_outdxal()
|
void i_outdxal()
|
||||||
{
|
{
|
||||||
@ -2174,7 +2169,7 @@ namespace cpu.nec
|
|||||||
//WriteIOWord(I.regs.w[2], I.regs.w[0]);
|
//WriteIOWord(I.regs.w[2], I.regs.w[0]);
|
||||||
//CLKW(12, 12, 5, 12, 8, 3, I.regs.w[2]);
|
//CLKW(12, 12, 5, 12, 8, 3, I.regs.w[2]);
|
||||||
WriteIOWord(I.regs.b[4] + I.regs.b[5] * 0x100, (ushort)(I.regs.b[0] + I.regs.b[1] * 0x100));
|
WriteIOWord(I.regs.b[4] + I.regs.b[5] * 0x100, (ushort)(I.regs.b[0] + I.regs.b[1] * 0x100));
|
||||||
CLKW(12, 12, 5, 12, 8, 3, I.regs.b[4]+I.regs.b[5]*0x100);
|
CLKW(12, 12, 5, 12, 8, 3, I.regs.b[4] + I.regs.b[5] * 0x100);
|
||||||
}
|
}
|
||||||
void i_lock()
|
void i_lock()
|
||||||
{
|
{
|
||||||
@ -2331,7 +2326,7 @@ namespace cpu.nec
|
|||||||
case 0x10: PutbackRMWord(ModRM, (ushort)(~tmp)); pendingCycles -= (ModRM >= 0xc0) ? 2 : 16; break;
|
case 0x10: PutbackRMWord(ModRM, (ushort)(~tmp)); pendingCycles -= (ModRM >= 0xc0) ? 2 : 16; break;
|
||||||
case 0x18: I.CarryVal = (uint)((tmp != 0) ? 1 : 0); tmp = (~tmp) + 1; SetSZPF_Word((int)tmp); PutbackRMWord(ModRM, (ushort)(tmp & 0xffff)); pendingCycles -= (ModRM >= 0xc0) ? 2 : 16; break;
|
case 0x18: I.CarryVal = (uint)((tmp != 0) ? 1 : 0); tmp = (~tmp) + 1; SetSZPF_Word((int)tmp); PutbackRMWord(ModRM, (ushort)(tmp & 0xffff)); pendingCycles -= (ModRM >= 0xc0) ? 2 : 16; break;
|
||||||
case 0x20:
|
case 0x20:
|
||||||
uresult = (uint)((I.regs.b[0]+I.regs.b[1]*0x100) * tmp);
|
uresult = (uint)((I.regs.b[0] + I.regs.b[1] * 0x100) * tmp);
|
||||||
//I.regs.w[0] = (ushort)(uresult & 0xffff);
|
//I.regs.w[0] = (ushort)(uresult & 0xffff);
|
||||||
//I.regs.w[2] = (ushort)(uresult >> 16);
|
//I.regs.w[2] = (ushort)(uresult >> 16);
|
||||||
I.regs.b[0] = (byte)((ushort)(uresult & 0xffff) % 0x100);
|
I.regs.b[0] = (byte)((ushort)(uresult & 0xffff) % 0x100);
|
||||||
@ -2342,13 +2337,13 @@ namespace cpu.nec
|
|||||||
pendingCycles -= (ModRM >= 0xc0) ? 30 : 36;
|
pendingCycles -= (ModRM >= 0xc0) ? 30 : 36;
|
||||||
break;
|
break;
|
||||||
case 0x28:
|
case 0x28:
|
||||||
result = (int)((short)(I.regs.b[0]+I.regs.b[1]*0x100)) * (int)((short)tmp);
|
result = (int)((short)(I.regs.b[0] + I.regs.b[1] * 0x100)) * (int)((short)tmp);
|
||||||
//I.regs.w[0] = (ushort)(result & 0xffff);
|
//I.regs.w[0] = (ushort)(result & 0xffff);
|
||||||
//I.regs.w[2] = (ushort)(result >> 16);
|
//I.regs.w[2] = (ushort)(result >> 16);
|
||||||
I.regs.b[0] = (byte)((ushort)(result & 0xffff) % 0x100);
|
I.regs.b[0] = (byte)((ushort)(result & 0xffff) % 0x100);
|
||||||
I.regs.b[1] = (byte)((ushort)(result & 0xffff) / 0x100);
|
I.regs.b[1] = (byte)((ushort)(result & 0xffff) / 0x100);
|
||||||
I.regs.b[4] = (byte)((ushort)(result >>16) % 0x100);
|
I.regs.b[4] = (byte)((ushort)(result >> 16) % 0x100);
|
||||||
I.regs.b[5] = (byte)((ushort)(result >>16) / 0x100);
|
I.regs.b[5] = (byte)((ushort)(result >> 16) / 0x100);
|
||||||
I.CarryVal = I.OverVal = (uint)(((I.regs.b[4] + I.regs.b[5] * 0x100) != 0) ? 1 : 0);
|
I.CarryVal = I.OverVal = (uint)(((I.regs.b[4] + I.regs.b[5] * 0x100) != 0) ? 1 : 0);
|
||||||
pendingCycles -= (ModRM >= 0xc0) ? 30 : 36;
|
pendingCycles -= (ModRM >= 0xc0) ? 30 : 36;
|
||||||
break;
|
break;
|
||||||
|
@ -1,9 +1,4 @@
|
|||||||
using System;
|
namespace cpu.nec
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace cpu.nec
|
|
||||||
{
|
{
|
||||||
partial class Nec
|
partial class Nec
|
||||||
{
|
{
|
||||||
@ -57,7 +52,7 @@ namespace cpu.nec
|
|||||||
//I.regs.w[mod_RM.RMw[ModRM]] = FETCHWORD();
|
//I.regs.w[mod_RM.RMw[ModRM]] = FETCHWORD();
|
||||||
ushort w = FETCHWORD();
|
ushort w = FETCHWORD();
|
||||||
I.regs.b[mod_RM.RMw[ModRM] * 2] = (byte)(w % 0x100);
|
I.regs.b[mod_RM.RMw[ModRM] * 2] = (byte)(w % 0x100);
|
||||||
I.regs.b[mod_RM.RMw[ModRM] * 2+1] = (byte)(w / 0x100);
|
I.regs.b[mod_RM.RMw[ModRM] * 2 + 1] = (byte)(w / 0x100);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -104,25 +99,25 @@ namespace cpu.nec
|
|||||||
WriteByte(EA, val);
|
WriteByte(EA, val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void DEF_br8(out int ModRM,out byte src, out byte dst)
|
void DEF_br8(out int ModRM, out byte src, out byte dst)
|
||||||
{
|
{
|
||||||
ModRM = FETCH();
|
ModRM = FETCH();
|
||||||
src = RegByte(ModRM);
|
src = RegByte(ModRM);
|
||||||
dst = GetRMByte(ModRM);
|
dst = GetRMByte(ModRM);
|
||||||
}
|
}
|
||||||
void DEF_wr16(out int ModRM,out ushort src, out ushort dst)
|
void DEF_wr16(out int ModRM, out ushort src, out ushort dst)
|
||||||
{
|
{
|
||||||
ModRM = FETCH();
|
ModRM = FETCH();
|
||||||
src = RegWord(ModRM);
|
src = RegWord(ModRM);
|
||||||
dst = GetRMWord(ModRM);
|
dst = GetRMWord(ModRM);
|
||||||
}
|
}
|
||||||
void DEF_r8b(out int ModRM,out byte src, out byte dst)
|
void DEF_r8b(out int ModRM, out byte src, out byte dst)
|
||||||
{
|
{
|
||||||
ModRM = FETCH();
|
ModRM = FETCH();
|
||||||
dst = RegByte(ModRM);
|
dst = RegByte(ModRM);
|
||||||
src = GetRMByte(ModRM);
|
src = GetRMByte(ModRM);
|
||||||
}
|
}
|
||||||
void DEF_r16w(out int ModRM,out ushort src,out ushort dst)
|
void DEF_r16w(out int ModRM, out ushort src, out ushort dst)
|
||||||
{
|
{
|
||||||
ModRM = FETCH();
|
ModRM = FETCH();
|
||||||
dst = RegWord(ModRM);
|
dst = RegWord(ModRM);
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
//VgMuseum.Z80.Disassembler disasm = new Disassembler();
|
//VgMuseum.Z80.Disassembler disasm = new Disassembler();
|
||||||
//ushort pc = RegPC.Word;
|
//ushort pc = RegPC.Word;
|
||||||
//string str = disasm.Disassemble(() => ReadMemory(pc++));
|
//string str = disasm.Disassemble(() => ReadMemory(pc++));
|
||||||
//Console.WriteLine(str);
|
//EmuLogger.Log(str);
|
||||||
|
|
||||||
//please note that however much youre tempted to, timings can't be put in a table here because they depend on how the instruction executes at runtime
|
//please note that however much youre tempted to, timings can't be put in a table here because they depend on how the instruction executes at runtime
|
||||||
|
|
||||||
@ -601,7 +601,7 @@ namespace cpu.z80
|
|||||||
|
|
||||||
return format;
|
return format;
|
||||||
}
|
}
|
||||||
public string Disassemble2(byte[] code,int offset)
|
public string Disassemble2(byte[] code, int offset)
|
||||||
{
|
{
|
||||||
return Result2(DisassembleInternal2(code), code, offset);
|
return Result2(DisassembleInternal2(code), code, offset);
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,4 @@
|
|||||||
using System.IO;
|
namespace cpu.z80
|
||||||
using mame;
|
|
||||||
|
|
||||||
namespace cpu.z80
|
|
||||||
{
|
{
|
||||||
public partial class Z80A
|
public partial class Z80A
|
||||||
{
|
{
|
||||||
|
@ -33,8 +33,8 @@ namespace cpu.z80
|
|||||||
private bool halted;
|
private bool halted;
|
||||||
public bool Halted { get { return halted; } set { halted = value; } }
|
public bool Halted { get { return halted; } set { halted = value; } }
|
||||||
|
|
||||||
public Func<int> IRQCallback = delegate() { return 0; };
|
public Func<int> IRQCallback = delegate () { return 0; };
|
||||||
public Action NMICallback = delegate() { };
|
public Action NMICallback = delegate () { };
|
||||||
|
|
||||||
private void ResetInterrupts()
|
private void ResetInterrupts()
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
using System.Runtime.InteropServices;
|
using System;
|
||||||
using System;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
namespace cpu.z80
|
namespace cpu.z80
|
||||||
{
|
{
|
||||||
|
@ -47,7 +47,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private ushort[, , ,] TableALU;
|
private ushort[,,,] TableALU;
|
||||||
private void InitTableALU()
|
private void InitTableALU()
|
||||||
{
|
{
|
||||||
TableALU = new ushort[8, 256, 256, 2]; // Class, OP1, OP2, Carry
|
TableALU = new ushort[8, 256, 256, 2]; // Class, OP1, OP2, Carry
|
||||||
@ -191,7 +191,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private ushort[, ,] TableRotShift;
|
private ushort[,,] TableRotShift;
|
||||||
private void InitTableRotShift()
|
private void InitTableRotShift()
|
||||||
{
|
{
|
||||||
TableRotShift = new ushort[2, 8, 65536]; // All, operation, AF
|
TableRotShift = new ushort[2, 8, 65536]; // All, operation, AF
|
||||||
@ -299,7 +299,7 @@
|
|||||||
private int[] cc_op, cc_cb, cc_ed, cc_xy, cc_xycb, cc_ex;
|
private int[] cc_op, cc_cb, cc_ed, cc_xy, cc_xycb, cc_ex;
|
||||||
private void InitTableCc()
|
private void InitTableCc()
|
||||||
{
|
{
|
||||||
cc_op=new int[0x100]{
|
cc_op = new int[0x100]{
|
||||||
4,10, 7, 6, 4, 4, 7, 4, 4,11, 7, 6, 4, 4, 7, 4,
|
4,10, 7, 6, 4, 4, 7, 4, 4,11, 7, 6, 4, 4, 7, 4,
|
||||||
8,10, 7, 6, 4, 4, 7, 4,12,11, 7, 6, 4, 4, 7, 4,
|
8,10, 7, 6, 4, 4, 7, 4,12,11, 7, 6, 4, 4, 7, 4,
|
||||||
7,10,16, 6, 4, 4, 7, 4, 7,11,16, 6, 4, 4, 7, 4,
|
7,10,16, 6, 4, 4, 7, 4, 7,11,16, 6, 4, 4, 7, 4,
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
using System;
|
using mame;
|
||||||
|
using System;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using mame;
|
|
||||||
|
|
||||||
// This Z80 emulator is a modified version of Ben Ryves 'Brazil' emulator.
|
// This Z80 emulator is a modified version of Ben Ryves 'Brazil' emulator.
|
||||||
// It is MIT licensed.
|
// It is MIT licensed.
|
||||||
@ -279,7 +278,7 @@ namespace cpu.z80
|
|||||||
pendingCycles = int.Parse(args[1]);
|
pendingCycles = int.Parse(args[1]);
|
||||||
|
|
||||||
else
|
else
|
||||||
Console.WriteLine("Skipping unrecognized identifier " + args[0]);
|
EmuLogger.Log("Skipping unrecognized identifier " + args[0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,4 @@
|
|||||||
using System;
|
namespace mame
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace mame
|
|
||||||
{
|
{
|
||||||
public struct Atime
|
public struct Atime
|
||||||
{
|
{
|
||||||
@ -21,7 +16,7 @@ namespace mame
|
|||||||
public static long ATTOSECONDS_PER_SECOND = (long)(1e18);
|
public static long ATTOSECONDS_PER_SECOND = (long)(1e18);
|
||||||
public static Atime ATTOTIME_ZERO = new Atime(0, 0);
|
public static Atime ATTOTIME_ZERO = new Atime(0, 0);
|
||||||
public static Atime ATTOTIME_NEVER = new Atime(1000000000, 0);
|
public static Atime ATTOTIME_NEVER = new Atime(1000000000, 0);
|
||||||
public static long ATTOSECONDS_PER_NANOSECOND=(long)1e9;
|
public static long ATTOSECONDS_PER_NANOSECOND = (long)1e9;
|
||||||
public static Atime ATTOTIME_IN_NSEC(long ns)
|
public static Atime ATTOTIME_IN_NSEC(long ns)
|
||||||
{
|
{
|
||||||
return new Atime((int)(ns / 1000000000), (long)((ns % 1000000000) * ATTOSECONDS_PER_NANOSECOND));
|
return new Atime((int)(ns / 1000000000), (long)((ns % 1000000000) * ATTOSECONDS_PER_NANOSECOND));
|
||||||
@ -151,7 +146,7 @@ namespace mame
|
|||||||
return ATTOTIME_ZERO;
|
return ATTOTIME_ZERO;
|
||||||
|
|
||||||
/* split attoseconds into upper and lower halves which fit into 32 bits */
|
/* split attoseconds into upper and lower halves which fit into 32 bits */
|
||||||
attohi = divu_64x32_rem((ulong)_time1.attoseconds, 1000000000,out attolo);
|
attohi = divu_64x32_rem((ulong)_time1.attoseconds, 1000000000, out attolo);
|
||||||
|
|
||||||
/* scale the lower half, then split into high/low parts */
|
/* scale the lower half, then split into high/low parts */
|
||||||
temp = mulu_32x32(attolo, factor);
|
temp = mulu_32x32(attolo, factor);
|
||||||
|
@ -38,7 +38,7 @@ namespace mame
|
|||||||
public class Cpuexec
|
public class Cpuexec
|
||||||
{
|
{
|
||||||
public static byte SUSPEND_REASON_HALT = 0x01, SUSPEND_REASON_RESET = 0x02, SUSPEND_REASON_SPIN = 0x04, SUSPEND_REASON_TRIGGER = 0x08, SUSPEND_REASON_DISABLE = 0x10, SUSPEND_ANY_REASON = 0xff;
|
public static byte SUSPEND_REASON_HALT = 0x01, SUSPEND_REASON_RESET = 0x02, SUSPEND_REASON_SPIN = 0x04, SUSPEND_REASON_TRIGGER = 0x08, SUSPEND_REASON_DISABLE = 0x10, SUSPEND_ANY_REASON = 0xff;
|
||||||
public static int iType, bLog, bLog0, bLog1, bLog2, bLog3,bLogS;
|
public static int iType, bLog, bLog0, bLog1, bLog2, bLog3, bLogS;
|
||||||
public static bool bLog02, bLog12, bLog22, bLog32;
|
public static bool bLog02, bLog12, bLog22, bLog32;
|
||||||
public static bool b11 = true, b12 = true, b13 = true, b14 = true;
|
public static bool b11 = true, b12 = true, b13 = true, b14 = true;
|
||||||
public static int iloops, activecpu, icpu, ncpu, iloops2;
|
public static int iloops, activecpu, icpu, ncpu, iloops2;
|
||||||
@ -2118,46 +2118,46 @@ namespace mame
|
|||||||
case "Neo Geo":
|
case "Neo Geo":
|
||||||
case "PGM":
|
case "PGM":
|
||||||
case "Taito B":
|
case "Taito B":
|
||||||
m68000Form.m68000State = m68000Form.M68000State.M68000_RUN;
|
m68000Motion.m68000State = m68000Motion.M68000State.M68000_RUN;
|
||||||
MC68000.m1.debugger_start_cpu_hook_callback = Machine.FORM.m68000form.m68000_start_debug;
|
MC68000.m1.debugger_start_cpu_hook_callback = Machine.FORM.m68000motion.m68000_start_debug;
|
||||||
MC68000.m1.debugger_stop_cpu_hook_callback = Machine.FORM.m68000form.m68000_stop_debug;
|
MC68000.m1.debugger_stop_cpu_hook_callback = Machine.FORM.m68000motion.m68000_stop_debug;
|
||||||
z80Form.z80State = z80Form.Z80AState.Z80A_RUN;
|
z80Motion.z80State = z80Motion.Z80AState.Z80A_RUN;
|
||||||
Z80A.zz1[0].debugger_start_cpu_hook_callback = Machine.FORM.z80form.z80_start_debug;
|
Z80A.zz1[0].debugger_start_cpu_hook_callback = Machine.FORM.z80motion.z80_start_debug;
|
||||||
Z80A.zz1[0].debugger_stop_cpu_hook_callback = Machine.FORM.z80form.z80_stop_debug;
|
Z80A.zz1[0].debugger_stop_cpu_hook_callback = Machine.FORM.z80motion.z80_stop_debug;
|
||||||
break;
|
break;
|
||||||
case "Tehkan":
|
case "Tehkan":
|
||||||
z80Form.z80State = z80Form.Z80AState.Z80A_RUN;
|
z80Motion.z80State = z80Motion.Z80AState.Z80A_RUN;
|
||||||
Z80A.zz1[0].debugger_start_cpu_hook_callback = Machine.FORM.z80form.z80_start_debug;
|
Z80A.zz1[0].debugger_start_cpu_hook_callback = Machine.FORM.z80motion.z80_start_debug;
|
||||||
Z80A.zz1[0].debugger_stop_cpu_hook_callback = Machine.FORM.z80form.z80_stop_debug;
|
Z80A.zz1[0].debugger_stop_cpu_hook_callback = Machine.FORM.z80motion.z80_stop_debug;
|
||||||
Z80A.zz1[1].debugger_start_cpu_hook_callback = null_callback;
|
Z80A.zz1[1].debugger_start_cpu_hook_callback = null_callback;
|
||||||
Z80A.zz1[1].debugger_stop_cpu_hook_callback = null_callback;
|
Z80A.zz1[1].debugger_stop_cpu_hook_callback = null_callback;
|
||||||
break;
|
break;
|
||||||
case "IGS011":
|
case "IGS011":
|
||||||
m68000Form.m68000State = m68000Form.M68000State.M68000_RUN;
|
m68000Motion.m68000State = m68000Motion.M68000State.M68000_RUN;
|
||||||
MC68000.m1.debugger_start_cpu_hook_callback = Machine.FORM.m68000form.m68000_start_debug;
|
MC68000.m1.debugger_start_cpu_hook_callback = Machine.FORM.m68000motion.m68000_start_debug;
|
||||||
MC68000.m1.debugger_stop_cpu_hook_callback = Machine.FORM.m68000form.m68000_stop_debug;
|
MC68000.m1.debugger_stop_cpu_hook_callback = Machine.FORM.m68000motion.m68000_stop_debug;
|
||||||
break;
|
break;
|
||||||
case "SunA8":
|
case "SunA8":
|
||||||
z80Form.z80State = z80Form.Z80AState.Z80A_RUN;
|
z80Motion.z80State = z80Motion.Z80AState.Z80A_RUN;
|
||||||
Z80A.zz1[0].debugger_start_cpu_hook_callback = Machine.FORM.z80form.z80_start_debug;
|
Z80A.zz1[0].debugger_start_cpu_hook_callback = Machine.FORM.z80motion.z80_start_debug;
|
||||||
Z80A.zz1[0].debugger_stop_cpu_hook_callback = Machine.FORM.z80form.z80_stop_debug;
|
Z80A.zz1[0].debugger_stop_cpu_hook_callback = Machine.FORM.z80motion.z80_stop_debug;
|
||||||
Z80A.zz1[1].debugger_start_cpu_hook_callback = null_callback;
|
Z80A.zz1[1].debugger_start_cpu_hook_callback = null_callback;
|
||||||
Z80A.zz1[1].debugger_stop_cpu_hook_callback = null_callback;
|
Z80A.zz1[1].debugger_stop_cpu_hook_callback = null_callback;
|
||||||
break;
|
break;
|
||||||
case "Namco System 1":
|
case "Namco System 1":
|
||||||
m6809Form.m6809State = CPUState.RUN;
|
m6809Motion.m6809State = CPUState.RUN;
|
||||||
M6809.mm1[0].DisassemblerInit();
|
M6809.mm1[0].DisassemblerInit();
|
||||||
M6809.mm1[0].debugger_start_cpu_hook_callback = Machine.FORM.m6809form.m6809_start_debug;
|
M6809.mm1[0].debugger_start_cpu_hook_callback = Machine.FORM.m6809motion.m6809_start_debug;
|
||||||
M6809.mm1[0].debugger_stop_cpu_hook_callback = Machine.FORM.m6809form.m6809_stop_debug;
|
M6809.mm1[0].debugger_stop_cpu_hook_callback = Machine.FORM.m6809motion.m6809_stop_debug;
|
||||||
M6809.mm1[1].debugger_start_cpu_hook_callback = null_callback;
|
M6809.mm1[1].debugger_start_cpu_hook_callback = null_callback;
|
||||||
M6809.mm1[1].debugger_stop_cpu_hook_callback = null_callback;
|
M6809.mm1[1].debugger_stop_cpu_hook_callback = null_callback;
|
||||||
M6809.mm1[2].debugger_start_cpu_hook_callback = null_callback;
|
M6809.mm1[2].debugger_start_cpu_hook_callback = null_callback;
|
||||||
M6809.mm1[2].debugger_stop_cpu_hook_callback = null_callback;
|
M6809.mm1[2].debugger_stop_cpu_hook_callback = null_callback;
|
||||||
break;
|
break;
|
||||||
case "M72":
|
case "M72":
|
||||||
z80Form.z80State = z80Form.Z80AState.Z80A_RUN;
|
z80Motion.z80State = z80Motion.Z80AState.Z80A_RUN;
|
||||||
Z80A.zz1[0].debugger_start_cpu_hook_callback = Machine.FORM.z80form.z80_start_debug;
|
Z80A.zz1[0].debugger_start_cpu_hook_callback = Machine.FORM.z80motion.z80_start_debug;
|
||||||
Z80A.zz1[0].debugger_stop_cpu_hook_callback = Machine.FORM.z80form.z80_stop_debug;
|
Z80A.zz1[0].debugger_stop_cpu_hook_callback = Machine.FORM.z80motion.z80_stop_debug;
|
||||||
break;
|
break;
|
||||||
case "M92":
|
case "M92":
|
||||||
break;
|
break;
|
||||||
@ -2186,35 +2186,35 @@ namespace mame
|
|||||||
case "boblcave":
|
case "boblcave":
|
||||||
case "bublcave11":
|
case "bublcave11":
|
||||||
case "bublcave10":
|
case "bublcave10":
|
||||||
z80Form.z80State = z80Form.Z80AState.Z80A_RUN;
|
z80Motion.z80State = z80Motion.Z80AState.Z80A_RUN;
|
||||||
Z80A.zz1[0].debugger_start_cpu_hook_callback = Machine.FORM.z80form.z80_start_debug;
|
Z80A.zz1[0].debugger_start_cpu_hook_callback = Machine.FORM.z80motion.z80_start_debug;
|
||||||
Z80A.zz1[0].debugger_stop_cpu_hook_callback = Machine.FORM.z80form.z80_stop_debug;
|
Z80A.zz1[0].debugger_stop_cpu_hook_callback = Machine.FORM.z80motion.z80_stop_debug;
|
||||||
Z80A.zz1[1].debugger_start_cpu_hook_callback = Machine.FORM.z80form.z80_start_debug;
|
Z80A.zz1[1].debugger_start_cpu_hook_callback = Machine.FORM.z80motion.z80_start_debug;
|
||||||
Z80A.zz1[1].debugger_stop_cpu_hook_callback = Machine.FORM.z80form.z80_stop_debug;
|
Z80A.zz1[1].debugger_stop_cpu_hook_callback = Machine.FORM.z80motion.z80_stop_debug;
|
||||||
Z80A.zz1[2].debugger_start_cpu_hook_callback = Machine.FORM.z80form.z80_start_debug;
|
Z80A.zz1[2].debugger_start_cpu_hook_callback = Machine.FORM.z80motion.z80_start_debug;
|
||||||
Z80A.zz1[2].debugger_stop_cpu_hook_callback = Machine.FORM.z80form.z80_stop_debug;
|
Z80A.zz1[2].debugger_stop_cpu_hook_callback = Machine.FORM.z80motion.z80_stop_debug;
|
||||||
break;
|
break;
|
||||||
case "opwolf":
|
case "opwolf":
|
||||||
case "opwolfa":
|
case "opwolfa":
|
||||||
case "opwolfj":
|
case "opwolfj":
|
||||||
case "opwolfu":
|
case "opwolfu":
|
||||||
case "opwolfp":
|
case "opwolfp":
|
||||||
m68000Form.m68000State = m68000Form.M68000State.M68000_RUN;
|
m68000Motion.m68000State = m68000Motion.M68000State.M68000_RUN;
|
||||||
MC68000.m1.debugger_start_cpu_hook_callback = Machine.FORM.m68000form.m68000_start_debug;
|
MC68000.m1.debugger_start_cpu_hook_callback = Machine.FORM.m68000motion.m68000_start_debug;
|
||||||
MC68000.m1.debugger_stop_cpu_hook_callback = Machine.FORM.m68000form.m68000_stop_debug;
|
MC68000.m1.debugger_stop_cpu_hook_callback = Machine.FORM.m68000motion.m68000_stop_debug;
|
||||||
z80Form.z80State = z80Form.Z80AState.Z80A_RUN;
|
z80Motion.z80State = z80Motion.Z80AState.Z80A_RUN;
|
||||||
Z80A.zz1[0].debugger_start_cpu_hook_callback = Machine.FORM.z80form.z80_start_debug;
|
Z80A.zz1[0].debugger_start_cpu_hook_callback = Machine.FORM.z80motion.z80_start_debug;
|
||||||
Z80A.zz1[0].debugger_stop_cpu_hook_callback = Machine.FORM.z80form.z80_stop_debug;
|
Z80A.zz1[0].debugger_stop_cpu_hook_callback = Machine.FORM.z80motion.z80_stop_debug;
|
||||||
break;
|
break;
|
||||||
case "opwolfb":
|
case "opwolfb":
|
||||||
m68000Form.m68000State = m68000Form.M68000State.M68000_RUN;
|
m68000Motion.m68000State = m68000Motion.M68000State.M68000_RUN;
|
||||||
MC68000.m1.debugger_start_cpu_hook_callback = Machine.FORM.m68000form.m68000_start_debug;
|
MC68000.m1.debugger_start_cpu_hook_callback = Machine.FORM.m68000motion.m68000_start_debug;
|
||||||
MC68000.m1.debugger_stop_cpu_hook_callback = Machine.FORM.m68000form.m68000_stop_debug;
|
MC68000.m1.debugger_stop_cpu_hook_callback = Machine.FORM.m68000motion.m68000_stop_debug;
|
||||||
z80Form.z80State = z80Form.Z80AState.Z80A_RUN;
|
z80Motion.z80State = z80Motion.Z80AState.Z80A_RUN;
|
||||||
Z80A.zz1[0].debugger_start_cpu_hook_callback = Machine.FORM.z80form.z80_start_debug;
|
Z80A.zz1[0].debugger_start_cpu_hook_callback = Machine.FORM.z80motion.z80_start_debug;
|
||||||
Z80A.zz1[0].debugger_stop_cpu_hook_callback = Machine.FORM.z80form.z80_stop_debug;
|
Z80A.zz1[0].debugger_stop_cpu_hook_callback = Machine.FORM.z80motion.z80_stop_debug;
|
||||||
Z80A.zz1[1].debugger_start_cpu_hook_callback = Machine.FORM.z80form.z80_start_debug;
|
Z80A.zz1[1].debugger_start_cpu_hook_callback = Machine.FORM.z80motion.z80_start_debug;
|
||||||
Z80A.zz1[1].debugger_stop_cpu_hook_callback = Machine.FORM.z80form.z80_stop_debug;
|
Z80A.zz1[1].debugger_stop_cpu_hook_callback = Machine.FORM.z80motion.z80_stop_debug;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -2222,17 +2222,17 @@ namespace mame
|
|||||||
switch (Machine.sName)
|
switch (Machine.sName)
|
||||||
{
|
{
|
||||||
case "cuebrick":
|
case "cuebrick":
|
||||||
m68000Form.m68000State = m68000Form.M68000State.M68000_RUN;
|
m68000Motion.m68000State = m68000Motion.M68000State.M68000_RUN;
|
||||||
MC68000.m1.debugger_start_cpu_hook_callback = Machine.FORM.m68000form.m68000_start_debug;
|
MC68000.m1.debugger_start_cpu_hook_callback = Machine.FORM.m68000motion.m68000_start_debug;
|
||||||
MC68000.m1.debugger_stop_cpu_hook_callback = Machine.FORM.m68000form.m68000_stop_debug;
|
MC68000.m1.debugger_stop_cpu_hook_callback = Machine.FORM.m68000motion.m68000_stop_debug;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
m68000Form.m68000State = m68000Form.M68000State.M68000_RUN;
|
m68000Motion.m68000State = m68000Motion.M68000State.M68000_RUN;
|
||||||
MC68000.m1.debugger_start_cpu_hook_callback = Machine.FORM.m68000form.m68000_start_debug;
|
MC68000.m1.debugger_start_cpu_hook_callback = Machine.FORM.m68000motion.m68000_start_debug;
|
||||||
MC68000.m1.debugger_stop_cpu_hook_callback = Machine.FORM.m68000form.m68000_stop_debug;
|
MC68000.m1.debugger_stop_cpu_hook_callback = Machine.FORM.m68000motion.m68000_stop_debug;
|
||||||
z80Form.z80State = z80Form.Z80AState.Z80A_RUN;
|
z80Motion.z80State = z80Motion.Z80AState.Z80A_RUN;
|
||||||
Z80A.zz1[0].debugger_start_cpu_hook_callback = Machine.FORM.z80form.z80_start_debug;
|
Z80A.zz1[0].debugger_start_cpu_hook_callback = Machine.FORM.z80motion.z80_start_debug;
|
||||||
Z80A.zz1[0].debugger_stop_cpu_hook_callback = Machine.FORM.z80form.z80_stop_debug;
|
Z80A.zz1[0].debugger_stop_cpu_hook_callback = Machine.FORM.z80motion.z80_stop_debug;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -2250,13 +2250,13 @@ namespace mame
|
|||||||
case "makaimurc":
|
case "makaimurc":
|
||||||
case "makaimurg":
|
case "makaimurg":
|
||||||
case "diamond":
|
case "diamond":
|
||||||
m6809Form.m6809State = CPUState.RUN;
|
m6809Motion.m6809State = CPUState.RUN;
|
||||||
M6809.mm1[0].DisassemblerInit();
|
M6809.mm1[0].DisassemblerInit();
|
||||||
M6809.mm1[0].debugger_start_cpu_hook_callback = Machine.FORM.m6809form.m6809_start_debug;
|
M6809.mm1[0].debugger_start_cpu_hook_callback = Machine.FORM.m6809motion.m6809_start_debug;
|
||||||
M6809.mm1[0].debugger_stop_cpu_hook_callback = Machine.FORM.m6809form.m6809_stop_debug;
|
M6809.mm1[0].debugger_stop_cpu_hook_callback = Machine.FORM.m6809motion.m6809_stop_debug;
|
||||||
z80Form.z80State = z80Form.Z80AState.Z80A_RUN;
|
z80Motion.z80State = z80Motion.Z80AState.Z80A_RUN;
|
||||||
Z80A.zz1[0].debugger_start_cpu_hook_callback = Machine.FORM.z80form.z80_start_debug;
|
Z80A.zz1[0].debugger_start_cpu_hook_callback = Machine.FORM.z80motion.z80_start_debug;
|
||||||
Z80A.zz1[0].debugger_stop_cpu_hook_callback = Machine.FORM.z80form.z80_stop_debug;
|
Z80A.zz1[0].debugger_stop_cpu_hook_callback = Machine.FORM.z80motion.z80_stop_debug;
|
||||||
break;
|
break;
|
||||||
case "sf":
|
case "sf":
|
||||||
case "sfua":
|
case "sfua":
|
||||||
@ -2264,14 +2264,14 @@ namespace mame
|
|||||||
case "sfjan":
|
case "sfjan":
|
||||||
case "sfan":
|
case "sfan":
|
||||||
case "sfp":
|
case "sfp":
|
||||||
m68000Form.m68000State = m68000Form.M68000State.M68000_RUN;
|
m68000Motion.m68000State = m68000Motion.M68000State.M68000_RUN;
|
||||||
MC68000.m1.debugger_start_cpu_hook_callback = Machine.FORM.m68000form.m68000_start_debug;
|
MC68000.m1.debugger_start_cpu_hook_callback = Machine.FORM.m68000motion.m68000_start_debug;
|
||||||
MC68000.m1.debugger_stop_cpu_hook_callback = Machine.FORM.m68000form.m68000_stop_debug;
|
MC68000.m1.debugger_stop_cpu_hook_callback = Machine.FORM.m68000motion.m68000_stop_debug;
|
||||||
z80Form.z80State = z80Form.Z80AState.Z80A_RUN;
|
z80Motion.z80State = z80Motion.Z80AState.Z80A_RUN;
|
||||||
Z80A.zz1[0].debugger_start_cpu_hook_callback = Machine.FORM.z80form.z80_start_debug;
|
Z80A.zz1[0].debugger_start_cpu_hook_callback = Machine.FORM.z80motion.z80_start_debug;
|
||||||
Z80A.zz1[0].debugger_stop_cpu_hook_callback = Machine.FORM.z80form.z80_stop_debug;
|
Z80A.zz1[0].debugger_stop_cpu_hook_callback = Machine.FORM.z80motion.z80_stop_debug;
|
||||||
Z80A.zz1[1].debugger_start_cpu_hook_callback = Machine.FORM.z80form.z80_start_debug;
|
Z80A.zz1[1].debugger_start_cpu_hook_callback = Machine.FORM.z80motion.z80_start_debug;
|
||||||
Z80A.zz1[1].debugger_stop_cpu_hook_callback = Machine.FORM.z80form.z80_stop_debug;
|
Z80A.zz1[1].debugger_stop_cpu_hook_callback = Machine.FORM.z80motion.z80_stop_debug;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -2428,7 +2428,7 @@ namespace mame
|
|||||||
Atime tbase = Timer.global_basetime;
|
Atime tbase = Timer.global_basetime;
|
||||||
int ran;
|
int ran;
|
||||||
Atime at;
|
Atime at;
|
||||||
int i,j;
|
int i, j;
|
||||||
for (icpu = 0; icpu < ncpu; icpu++)
|
for (icpu = 0; icpu < ncpu; icpu++)
|
||||||
{
|
{
|
||||||
cpu[icpu].suspend = cpu[icpu].nextsuspend;
|
cpu[icpu].suspend = cpu[icpu].nextsuspend;
|
||||||
@ -2472,9 +2472,9 @@ namespace mame
|
|||||||
cpu[icpu].eatcycles = cpu[icpu].nexteatcycles;
|
cpu[icpu].eatcycles = cpu[icpu].nexteatcycles;
|
||||||
}
|
}
|
||||||
Timer.timer_set_global_time(target);
|
Timer.timer_set_global_time(target);
|
||||||
if (Timer.global_basetime.attoseconds == 0 && Machine.FORM.cheatform.lockState == cheatForm.LockState.LOCK_SECOND)
|
if (Timer.global_basetime.attoseconds == 0 && Machine.FORM.cheatmotion.lockState == cheatMotion.LockState.LOCK_SECOND)
|
||||||
{
|
{
|
||||||
Machine.FORM.cheatform.ApplyCheat();
|
Machine.FORM.cheatmotion.ApplyCheat();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public static void cpu_boost_interleave(Atime timeslice_time, Atime boost_duration)
|
public static void cpu_boost_interleave(Atime timeslice_time, Atime boost_duration)
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text;
|
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
namespace mame
|
namespace mame
|
||||||
@ -59,7 +57,7 @@ namespace mame
|
|||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
public irq(int _cpunum, int _line, LineState _state,int _vector, Atime _time)
|
public irq(int _cpunum, int _line, LineState _state, int _vector, Atime _time)
|
||||||
{
|
{
|
||||||
cpunum = _cpunum;
|
cpunum = _cpunum;
|
||||||
line = _line;
|
line = _line;
|
||||||
@ -143,7 +141,7 @@ namespace mame
|
|||||||
{
|
{
|
||||||
if (cpunum < Cpuexec.ncpu && line >= 0 && line < (int)LineState.MAX_INPUT_LINES)
|
if (cpunum < Cpuexec.ncpu && line >= 0 && line < (int)LineState.MAX_INPUT_LINES)
|
||||||
{
|
{
|
||||||
interrupt_vector[cpunum,line] = vector;
|
interrupt_vector[cpunum, line] = vector;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -162,12 +160,12 @@ namespace mame
|
|||||||
{
|
{
|
||||||
int i1 = 1;
|
int i1 = 1;
|
||||||
}
|
}
|
||||||
foreach(irq irq1 in lirq)
|
foreach (irq irq1 in lirq)
|
||||||
{
|
{
|
||||||
if (Attotime.attotime_compare(irq1.time, Timer.global_basetime) <= 0)
|
if (Attotime.attotime_compare(irq1.time, Timer.global_basetime) <= 0)
|
||||||
{
|
{
|
||||||
input_line_state[irq1.cpunum,irq1.line] = (byte)irq1.state;
|
input_line_state[irq1.cpunum, irq1.line] = (byte)irq1.state;
|
||||||
input_line_vector[irq1.cpunum,irq1.line] = irq1.vector;
|
input_line_vector[irq1.cpunum, irq1.line] = irq1.vector;
|
||||||
if (irq1.line == (int)LineState.INPUT_LINE_RESET)
|
if (irq1.line == (int)LineState.INPUT_LINE_RESET)
|
||||||
{
|
{
|
||||||
if (irq1.state == LineState.ASSERT_LINE)
|
if (irq1.state == LineState.ASSERT_LINE)
|
||||||
@ -293,7 +291,7 @@ namespace mame
|
|||||||
}
|
}
|
||||||
public static void SaveStateBinary(BinaryWriter writer)
|
public static void SaveStateBinary(BinaryWriter writer)
|
||||||
{
|
{
|
||||||
int i,j, n;
|
int i, j, n;
|
||||||
n = lirq.Count;
|
n = lirq.Count;
|
||||||
writer.Write(n);
|
writer.Write(n);
|
||||||
for (i = 0; i < n; i++)
|
for (i = 0; i < n; i++)
|
||||||
@ -345,7 +343,7 @@ namespace mame
|
|||||||
}
|
}
|
||||||
public static void LoadStateBinary(BinaryReader reader)
|
public static void LoadStateBinary(BinaryReader reader)
|
||||||
{
|
{
|
||||||
int i,j, n;
|
int i, j, n;
|
||||||
n = reader.ReadInt32();
|
n = reader.ReadInt32();
|
||||||
lirq = new List<irq>();
|
lirq = new List<irq>();
|
||||||
for (i = 0; i < n; i++)
|
for (i = 0; i < n; i++)
|
||||||
|
@ -1,10 +1,5 @@
|
|||||||
using System;
|
using Bitmap = MAME.Core.AxiBitmap.AxiBitmap;
|
||||||
using System.Collections.Generic;
|
using Color = MAME.Core.AxiBitmap.AxiColor;
|
||||||
using System.Linq;
|
|
||||||
using System.Drawing;
|
|
||||||
using System.IO;
|
|
||||||
using System.Text;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
|
|
||||||
namespace mame
|
namespace mame
|
||||||
{
|
{
|
||||||
@ -24,7 +19,7 @@ namespace mame
|
|||||||
public byte animation_counter;
|
public byte animation_counter;
|
||||||
}
|
}
|
||||||
public static crosshair_global global;
|
public static crosshair_global global;
|
||||||
public static byte[] crosshair_raw_top =new byte[]
|
public static byte[] crosshair_raw_top = new byte[]
|
||||||
{
|
{
|
||||||
0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,
|
0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,
|
||||||
0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,
|
0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,
|
||||||
@ -77,7 +72,7 @@ namespace mame
|
|||||||
0x07,0xff,0x00,0x00,0x00,0x01,0x98,0x00,0x00,0x00,0x1f,0xfc,0x00,
|
0x07,0xff,0x00,0x00,0x00,0x01,0x98,0x00,0x00,0x00,0x1f,0xfc,0x00,
|
||||||
0x07,0xff,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x1f,0xfc,0x00
|
0x07,0xff,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x1f,0xfc,0x00
|
||||||
};
|
};
|
||||||
public static uint[] crosshair_colors =new uint[]
|
public static uint[] crosshair_colors = new uint[]
|
||||||
{
|
{
|
||||||
0x4040ff,
|
0x4040ff,
|
||||||
0xff4040,
|
0xff4040,
|
||||||
|
@ -1,14 +1,8 @@
|
|||||||
using System;
|
namespace mame
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.IO;
|
|
||||||
|
|
||||||
namespace mame
|
|
||||||
{
|
{
|
||||||
public partial class Drawgfx
|
public partial class Drawgfx
|
||||||
{
|
{
|
||||||
public static int[] gfx_drawmode_table=new int[256];
|
public static int[] gfx_drawmode_table = new int[256];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,8 +1,4 @@
|
|||||||
using System;
|
using System.IO;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.IO;
|
|
||||||
|
|
||||||
namespace mame
|
namespace mame
|
||||||
{
|
{
|
||||||
@ -52,7 +48,7 @@ namespace mame
|
|||||||
public static LineState reset_line, clock_line;
|
public static LineState reset_line, clock_line;
|
||||||
public static int locked;
|
public static int locked;
|
||||||
public static int enable_multi_read;
|
public static int enable_multi_read;
|
||||||
public static int reset_delay,reset_delay1;
|
public static int reset_delay, reset_delay1;
|
||||||
private static bool eeprom_command_match(byte[] buf, byte[] cmd, int len)
|
private static bool eeprom_command_match(byte[] buf, byte[] cmd, int len)
|
||||||
{
|
{
|
||||||
int ibuf = 0, idx = 0;
|
int ibuf = 0, idx = 0;
|
||||||
@ -64,7 +60,7 @@ namespace mame
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
for (; len > 0; )
|
for (; len > 0;)
|
||||||
{
|
{
|
||||||
byte b = buf[ibuf];
|
byte b = buf[ibuf];
|
||||||
byte c = cmd[idx];
|
byte c = cmd[idx];
|
||||||
@ -151,8 +147,8 @@ namespace mame
|
|||||||
cmd_read = new byte[] { (byte)'0', (byte)'1', (byte)'1', (byte)'0' };
|
cmd_read = new byte[] { (byte)'0', (byte)'1', (byte)'1', (byte)'0' };
|
||||||
cmd_write = new byte[] { (byte)'0', (byte)'1', (byte)'0', (byte)'1' };
|
cmd_write = new byte[] { (byte)'0', (byte)'1', (byte)'0', (byte)'1' };
|
||||||
cmd_erase = new byte[] { (byte)'0', (byte)'1', (byte)'1', (byte)'1' };
|
cmd_erase = new byte[] { (byte)'0', (byte)'1', (byte)'1', (byte)'1' };
|
||||||
cmd_lock = new byte[] { (byte)'0',(byte)'1',(byte)'0',(byte)'0',(byte)'0',(byte)'0',(byte)'0',(byte)'0',(byte)'0',(byte)'0' };
|
cmd_lock = new byte[] { (byte)'0', (byte)'1', (byte)'0', (byte)'0', (byte)'0', (byte)'0', (byte)'0', (byte)'0', (byte)'0', (byte)'0' };
|
||||||
cmd_unlock = new byte[] {(byte)'0',(byte)'1',(byte)'0',(byte)'0',(byte)'1',(byte)'1',(byte)'0',(byte)'0',(byte)'0',(byte)'0' };
|
cmd_unlock = new byte[] { (byte)'0', (byte)'1', (byte)'0', (byte)'0', (byte)'1', (byte)'1', (byte)'0', (byte)'0', (byte)'0', (byte)'0' };
|
||||||
for (int i = 0; i < 0x80; i++)
|
for (int i = 0; i < 0x80; i++)
|
||||||
{
|
{
|
||||||
eeprom_data[i] = 0xff;
|
eeprom_data[i] = 0xff;
|
||||||
@ -358,7 +354,7 @@ namespace mame
|
|||||||
{
|
{
|
||||||
if (sending == 1)
|
if (sending == 1)
|
||||||
{
|
{
|
||||||
if (eeprom_clock_count == data_bits && enable_multi_read!=0)
|
if (eeprom_clock_count == data_bits && enable_multi_read != 0)
|
||||||
{
|
{
|
||||||
eeprom_read_address = (eeprom_read_address + 1) & ((1 << address_bits) - 1);
|
eeprom_read_address = (eeprom_read_address + 1) & ((1 << address_bits) - 1);
|
||||||
if (data_bits == 16)
|
if (data_bits == 16)
|
||||||
|
@ -1,27 +1,59 @@
|
|||||||
using System.Drawing;
|
using MAME.Core.AxiBitmap;
|
||||||
using System.Drawing.Imaging;
|
using System;
|
||||||
using System.Runtime.InteropServices;
|
using Bitmap = MAME.Core.AxiBitmap.AxiBitmap;
|
||||||
|
using Color = MAME.Core.AxiBitmap.AxiColor;
|
||||||
|
using Rectangle = MAME.Core.AxiBitmap.Rectangle;
|
||||||
|
|
||||||
namespace mame
|
namespace mame
|
||||||
{
|
{
|
||||||
partial class Video
|
partial class Video
|
||||||
{
|
{
|
||||||
public delegate Bitmap drawcrosshairdelegate(Bitmap bm1);
|
//public delegate Bitmap drawcrosshairdelegate(Bitmap bm1);
|
||||||
|
//public static drawcrosshairdelegate drawcrosshair;
|
||||||
|
|
||||||
|
|
||||||
|
public delegate int[] drawcrosshairdelegate(int[] bm1);
|
||||||
public static drawcrosshairdelegate drawcrosshair;
|
public static drawcrosshairdelegate drawcrosshair;
|
||||||
public static Bitmap drawcrosshair_null(Bitmap bm1)
|
|
||||||
|
//public static Bitmap drawcrosshair_null(Bitmap bm1)
|
||||||
|
//{
|
||||||
|
// Bitmap bm2 = bm1;
|
||||||
|
// return bm2;
|
||||||
|
//}
|
||||||
|
|
||||||
|
public static int[] drawcrosshair_null(int[] bm1)
|
||||||
{
|
{
|
||||||
Bitmap bm2 = bm1;
|
return bm1;
|
||||||
return bm2;
|
|
||||||
}
|
}
|
||||||
|
//public static Bitmap drawcrosshair_opwolf(Bitmap bm1)
|
||||||
|
//{
|
||||||
|
// Bitmap bm2 = bm1;
|
||||||
|
// Graphics g = Graphics.FromImage(bm2);
|
||||||
|
// g.DrawImage(MultiplyAlpha(Crosshair.global.bitmap[0], (float)Crosshair.global.fade / 0xff), new Rectangle(Crosshair.global.x[0] - 10, Crosshair.global.y[0] - 10, 20, 20), new Rectangle(0, 0, 100, 100), GraphicsUnit.Pixel);
|
||||||
|
// g.Dispose();
|
||||||
|
// return bm2;
|
||||||
|
//}
|
||||||
|
|
||||||
public static Bitmap drawcrosshair_opwolf(Bitmap bm1)
|
public static Bitmap drawcrosshair_opwolf(Bitmap bm1)
|
||||||
{
|
{
|
||||||
Bitmap bm2 = bm1;
|
Bitmap bm2 = bm1;
|
||||||
Graphics g = Graphics.FromImage(bm2);
|
bm2.DrawImage(
|
||||||
g.DrawImage(MultiplyAlpha(Crosshair.global.bitmap[0], (float)Crosshair.global.fade / 0xff), new Rectangle(Crosshair.global.x[0] - 10, Crosshair.global.y[0] - 10, 20, 20), new Rectangle(0, 0, 100, 100), GraphicsUnit.Pixel);
|
MultiplyAlpha(Crosshair.global.bitmap[0], (float)Crosshair.global.fade / 0xff),
|
||||||
g.Dispose();
|
new Rectangle(Crosshair.global.x[0] - 10,
|
||||||
|
Crosshair.global.y[0] - 10, 20, 20),
|
||||||
|
new Rectangle(0, 0, 100, 100));
|
||||||
return bm2;
|
return bm2;
|
||||||
}
|
}
|
||||||
public static Bitmap MultiplyAlpha(Bitmap bitmap, float factor)
|
|
||||||
|
public static int[] drawcrosshair_opwolf(int[] bm1)
|
||||||
|
{
|
||||||
|
int[] bm2 = bm1;
|
||||||
|
//TODO
|
||||||
|
return bm2;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 替换代码
|
||||||
|
* public static Bitmap MultiplyAlpha(Bitmap bitmap, float factor)
|
||||||
{
|
{
|
||||||
Bitmap result = new Bitmap(bitmap.Width, bitmap.Height);
|
Bitmap result = new Bitmap(bitmap.Width, bitmap.Height);
|
||||||
using (Graphics graphics = Graphics.FromImage(result))
|
using (Graphics graphics = Graphics.FromImage(result))
|
||||||
@ -33,42 +65,128 @@ namespace mame
|
|||||||
graphics.DrawImage(bitmap, new Rectangle(0, 0, bitmap.Width, bitmap.Height), 0, 0, bitmap.Width, bitmap.Height, GraphicsUnit.Pixel, imageAttributes);
|
graphics.DrawImage(bitmap, new Rectangle(0, 0, bitmap.Width, bitmap.Height), 0, 0, bitmap.Width, bitmap.Height, GraphicsUnit.Pixel, imageAttributes);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="bitmap"></param>
|
||||||
|
/// <param name="factor"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static Bitmap MultiplyAlpha(Bitmap bitmap, float factor)
|
||||||
|
{
|
||||||
|
Bitmap result = new Bitmap(bitmap.Width, bitmap.Height);
|
||||||
|
for (int y = 0; y < bitmap.Height; y++)
|
||||||
|
{
|
||||||
|
for (int x = 0; x < bitmap.Width; x++)
|
||||||
|
{
|
||||||
|
Color originalColor = bitmap.GetPixel(x, y);
|
||||||
|
byte newAlpha = (byte)Math.Min(255, (int)(originalColor.a * factor));
|
||||||
|
Color newColor = new Color
|
||||||
|
{
|
||||||
|
r = originalColor.r,
|
||||||
|
g = originalColor.g,
|
||||||
|
b = originalColor.b,
|
||||||
|
a = newAlpha
|
||||||
|
};
|
||||||
|
result.SetPixel(x, y, newColor);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="bitmap"></param>
|
||||||
|
/// <param name="factor"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static int[] MultiplyAlpha(int[] bitmap, float factor)
|
||||||
|
{
|
||||||
|
int[] result = (int[])bitmap.Clone();
|
||||||
|
for (int i = 0; i < result.Length; i++)
|
||||||
|
{
|
||||||
|
Color originalColor = AxiColor.FromArgb(result[i]);
|
||||||
|
byte newAlpha = (byte)Math.Min(255, (int)(originalColor.a * factor));
|
||||||
|
Color newColor = new Color
|
||||||
|
{
|
||||||
|
r = originalColor.r,
|
||||||
|
g = originalColor.g,
|
||||||
|
b = originalColor.b,
|
||||||
|
a = newAlpha
|
||||||
|
};
|
||||||
|
result[i] = AxiColor.ToArgb(newColor);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//public static void GDIDraw()
|
||||||
|
//{
|
||||||
|
// try
|
||||||
|
// {
|
||||||
|
// bitmapData = bitmapGDI.LockBits(new Rectangle(0, 0, Video.fullwidth, Video.fullheight), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
|
||||||
|
// Marshal.Copy(Video.bitmapcolor, 0, bitmapData.Scan0, Video.fullwidth * Video.fullheight);
|
||||||
|
// bitmapGDI.UnlockBits(bitmapData);
|
||||||
|
// if (Wintime.osd_ticks() < popup_text_end)
|
||||||
|
// {
|
||||||
|
// Machine.FORM.tsslStatus = sDrawText;
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// popup_text_end = 0;
|
||||||
|
// if (Mame.paused)
|
||||||
|
// {
|
||||||
|
// Machine.FORM.tsslStatus = "pause";
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// switch (Mame.playState)
|
||||||
|
// {
|
||||||
|
// case Mame.PlayState.PLAY_RECORDRUNNING:
|
||||||
|
// Machine.FORM.tsslStatus = "record";
|
||||||
|
// break;
|
||||||
|
// case Mame.PlayState.PLAY_REPLAYRUNNING:
|
||||||
|
// Machine.FORM.tsslStatus = "replay";
|
||||||
|
// break;
|
||||||
|
// default:
|
||||||
|
// Machine.FORM.tsslStatus = "run";
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// //bbmp[iMode] = drawcrosshair((Bitmap)bitmapGDI.Clone(new Rectangle(offsetx, offsety, width, height), PixelFormat.Format32bppArgb));
|
||||||
|
// bbmp[iMode] = drawcrosshair(bitmapGDI.Clone(new Rectangle(offsetx, offsety, width, height)));
|
||||||
|
// switch (Machine.sDirection)
|
||||||
|
// {
|
||||||
|
// case "":
|
||||||
|
// break;
|
||||||
|
// case "90":
|
||||||
|
// bbmp[iMode].RotateFlip(RotateFlipType.Rotate90FlipNone);
|
||||||
|
// break;
|
||||||
|
// case "180":
|
||||||
|
// bbmp[iMode].RotateFlip(RotateFlipType.Rotate180FlipNone);
|
||||||
|
// break;
|
||||||
|
// case "270":
|
||||||
|
// bbmp[iMode].RotateFlip(RotateFlipType.Rotate270FlipNone);
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// //Machine.FORM.pictureBox1.Image = bbmp[iMode];
|
||||||
|
// SubmitVideo(bbmp[iMode]);
|
||||||
|
// }
|
||||||
|
// catch
|
||||||
|
// {
|
||||||
|
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
public static void GDIDraw()
|
public static void GDIDraw()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
bitmapData = bitmapGDI.LockBits(new Rectangle(0, 0, Video.fullwidth, Video.fullheight), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
|
int[] TempData = AxiBitmapEx.CloneIntColorArr(Video.bitmapcolor, Video.fullwidth, Video.fullheight, new Rectangle(offsetx, offsety, width, height));
|
||||||
Marshal.Copy(Video.bitmapcolor, 0, bitmapData.Scan0, Video.fullwidth * Video.fullheight);
|
drawcrosshair(TempData);
|
||||||
bitmapGDI.UnlockBits(bitmapData);
|
//bbmp[iMode] = drawcrosshair(bitmapGDI.Clone(new Rectangle(offsetx, offsety, width, height)));
|
||||||
if (Wintime.osd_ticks() < popup_text_end)
|
|
||||||
{
|
|
||||||
Machine.FORM.tsslStatus = sDrawText;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
popup_text_end = 0;
|
|
||||||
if (Mame.paused)
|
|
||||||
{
|
|
||||||
Machine.FORM.tsslStatus = "pause";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
switch (Mame.playState)
|
|
||||||
{
|
|
||||||
case Mame.PlayState.PLAY_RECORDRUNNING:
|
|
||||||
Machine.FORM.tsslStatus = "record";
|
|
||||||
break;
|
|
||||||
case Mame.PlayState.PLAY_REPLAYRUNNING:
|
|
||||||
Machine.FORM.tsslStatus = "replay";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
Machine.FORM.tsslStatus = "run";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
bbmp[iMode] = drawcrosshair((Bitmap)bitmapGDI.Clone(new Rectangle(offsetx, offsety, width, height), PixelFormat.Format32bppArgb));
|
|
||||||
switch (Machine.sDirection)
|
switch (Machine.sDirection)
|
||||||
{
|
{
|
||||||
case "":
|
case "":
|
||||||
@ -84,12 +202,45 @@ namespace mame
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
//Machine.FORM.pictureBox1.Image = bbmp[iMode];
|
//Machine.FORM.pictureBox1.Image = bbmp[iMode];
|
||||||
SubmitVideo(bbmp[iMode]);
|
SubmitVideo(Video.bitmapcolor);
|
||||||
}
|
}
|
||||||
catch
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void CopyDataFrom(AxiBitmap destBitmap, byte[] sourceData, int sourceStride)
|
||||||
|
{
|
||||||
|
int pixelCount = destBitmap.Width * destBitmap.Height;
|
||||||
|
if (sourceData.Length < pixelCount * 4) // 假设每个AxiColor是4字节
|
||||||
|
throw new ArgumentException("Source data is too small.");
|
||||||
|
|
||||||
|
// 注意:这里我们假设sourceStride是源数据的每行字节数,它可能包含额外的填充字节
|
||||||
|
// 以确保每行的开始都是4的倍数。但是,对于紧密打包的AxiColor数组,我们可以忽略它。
|
||||||
|
|
||||||
|
for (int y = 0; y < destBitmap.Height; y++)
|
||||||
|
{
|
||||||
|
int sourceOffset = y * sourceStride; // 但对于紧密打包的AxiColor,这将是 y * (destBitmap.Width * 4)
|
||||||
|
// 然而,由于我们知道sourceData是直接对应于AxiColor的,我们可以简化为:
|
||||||
|
sourceOffset = y * destBitmap.Width * 4; // 假设没有行填充
|
||||||
|
|
||||||
|
for (int x = 0; x < destBitmap.Width; x++)
|
||||||
|
{
|
||||||
|
int index = y * destBitmap.Width + x;
|
||||||
|
int sourceIndex = sourceOffset + x * 4;
|
||||||
|
|
||||||
|
byte r = sourceData[sourceIndex];
|
||||||
|
byte g = sourceData[sourceIndex + 1];
|
||||||
|
byte b = sourceData[sourceIndex + 2];
|
||||||
|
byte a = sourceData[sourceIndex + 3];
|
||||||
|
|
||||||
|
destBitmap.mData[index] = new AxiColor { r = r, g = g, b = b, a = a };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,9 +1,5 @@
|
|||||||
using System;
|
using cpu.m68000;
|
||||||
using System.Collections.Generic;
|
using System;
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.IO;
|
|
||||||
using cpu.m68000;
|
|
||||||
|
|
||||||
namespace mame
|
namespace mame
|
||||||
{
|
{
|
||||||
@ -54,7 +50,7 @@ namespace mame
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
coinlockedout[num] =(uint) on;
|
coinlockedout[num] = (uint)on;
|
||||||
}
|
}
|
||||||
public static void coin_lockout_global_w(int on)
|
public static void coin_lockout_global_w(int on)
|
||||||
{
|
{
|
||||||
@ -139,7 +135,7 @@ namespace mame
|
|||||||
}
|
}
|
||||||
public static void clear_all_lines()
|
public static void clear_all_lines()
|
||||||
{
|
{
|
||||||
int inputcount=0;
|
int inputcount = 0;
|
||||||
int line;
|
int line;
|
||||||
if (objcpunum == 0 && Cpuexec.cpu[0] == MC68000.m1)
|
if (objcpunum == 0 && Cpuexec.cpu[0] == MC68000.m1)
|
||||||
{
|
{
|
||||||
@ -238,14 +234,14 @@ namespace mame
|
|||||||
long period = Video.screenstate.frame_period;
|
long period = Video.screenstate.frame_period;
|
||||||
RECT visarea = Video.screenstate.visarea;
|
RECT visarea = Video.screenstate.visarea;
|
||||||
Tmap.tilemap_set_flip(null, (byte)((Tilemap.TILEMAP_FLIPX & flip_screen_x) | (Tilemap.TILEMAP_FLIPY & flip_screen_y)));
|
Tmap.tilemap_set_flip(null, (byte)((Tilemap.TILEMAP_FLIPX & flip_screen_x) | (Tilemap.TILEMAP_FLIPY & flip_screen_y)));
|
||||||
if (flip_screen_x!=0)
|
if (flip_screen_x != 0)
|
||||||
{
|
{
|
||||||
int temp;
|
int temp;
|
||||||
temp = width - visarea.min_x - 1;
|
temp = width - visarea.min_x - 1;
|
||||||
visarea.min_x = width - visarea.max_x - 1;
|
visarea.min_x = width - visarea.max_x - 1;
|
||||||
visarea.max_x = temp;
|
visarea.max_x = temp;
|
||||||
}
|
}
|
||||||
if (flip_screen_y!=0)
|
if (flip_screen_y != 0)
|
||||||
{
|
{
|
||||||
int temp;
|
int temp;
|
||||||
temp = height - visarea.min_y - 1;
|
temp = height - visarea.min_y - 1;
|
||||||
@ -323,7 +319,7 @@ namespace mame
|
|||||||
set_color_444(offset, 12, 8, 4, paletteram16_split(offset));
|
set_color_444(offset, 12, 8, 4, paletteram16_split(offset));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void paletteram16_xBBBBBGGGGGRRRRR_word_w(int offset,ushort data)
|
public static void paletteram16_xBBBBBGGGGGRRRRR_word_w(int offset, ushort data)
|
||||||
{
|
{
|
||||||
paletteram16[offset] = data;
|
paletteram16[offset] = data;
|
||||||
set_color_555(offset, 0, 5, 10, paletteram16[offset]);
|
set_color_555(offset, 0, 5, 10, paletteram16[offset]);
|
||||||
|
@ -46,7 +46,7 @@ namespace mame
|
|||||||
public static bool bReplayRead;
|
public static bool bReplayRead;
|
||||||
public delegate void loop_delegate();
|
public delegate void loop_delegate();
|
||||||
public static loop_delegate loop_inputports_callback, record_port_callback, replay_port_callback;
|
public static loop_delegate loop_inputports_callback, record_port_callback, replay_port_callback;
|
||||||
public static analog_field_state analog_p0, analog_p1,analog_p1x,analog_p1y;
|
public static analog_field_state analog_p0, analog_p1, analog_p1x, analog_p1y;
|
||||||
public static input_port_private portdata;
|
public static input_port_private portdata;
|
||||||
public static void input_port_init()
|
public static void input_port_init()
|
||||||
{
|
{
|
||||||
@ -570,7 +570,7 @@ namespace mame
|
|||||||
result = (uint)apply_analog_settings(value, analog);
|
result = (uint)apply_analog_settings(value, analog);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
public static int apply_analog_settings(int value,analog_field_state analog)
|
public static int apply_analog_settings(int value, analog_field_state analog)
|
||||||
{
|
{
|
||||||
value = apply_analog_min_max(analog, value);
|
value = apply_analog_min_max(analog, value);
|
||||||
value = (int)((long)value * analog.sensitivity / 100);
|
value = (int)((long)value * analog.sensitivity / 100);
|
||||||
@ -580,11 +580,11 @@ namespace mame
|
|||||||
}
|
}
|
||||||
if (value >= 0)
|
if (value >= 0)
|
||||||
{
|
{
|
||||||
value = (int)((long)(value * analog.scalepos)>>24);
|
value = (int)((long)(value * analog.scalepos) >> 24);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
value = (int)((long)(value * analog.scaleneg)>>24);
|
value = (int)((long)(value * analog.scaleneg) >> 24);
|
||||||
}
|
}
|
||||||
value += analog.adjdefvalue;
|
value += analog.adjdefvalue;
|
||||||
return value;
|
return value;
|
||||||
|
@ -19,7 +19,7 @@ namespace mame
|
|||||||
}
|
}
|
||||||
public static char getcharbykey(Key key1)
|
public static char getcharbykey(Key key1)
|
||||||
{
|
{
|
||||||
char c1=' ';
|
char c1 = ' ';
|
||||||
foreach (KeyStruct ks in lks)
|
foreach (KeyStruct ks in lks)
|
||||||
{
|
{
|
||||||
if (ks.key == key1)
|
if (ks.key == key1)
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
using MAME.Core;
|
using MAME.Core.Common;
|
||||||
using MAME.Core.Common;
|
|
||||||
using MAME.Core.run_interface;
|
using MAME.Core.run_interface;
|
||||||
|
|
||||||
namespace mame
|
namespace mame
|
||||||
@ -10,7 +9,7 @@ namespace mame
|
|||||||
|
|
||||||
static IKeyboard mKeyboard;
|
static IKeyboard mKeyboard;
|
||||||
|
|
||||||
public static void InitializeInput(mainForm form1,IKeyboard ikb)
|
public static void InitializeInput(mainMotion form1, IKeyboard ikb)
|
||||||
{
|
{
|
||||||
mKeyboard = ikb;
|
mKeyboard = ikb;
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@ namespace mame
|
|||||||
{
|
{
|
||||||
public static string sName, sParent, sBoard, sDirection, sDescription, sManufacturer;
|
public static string sName, sParent, sBoard, sDirection, sDescription, sManufacturer;
|
||||||
public static List<string> lsParents;
|
public static List<string> lsParents;
|
||||||
public static mainForm FORM;
|
public static mainMotion FORM;
|
||||||
public static RomInfo rom;
|
public static RomInfo rom;
|
||||||
public static bool bRom;
|
public static bool bRom;
|
||||||
public delegate void machine_delegate();
|
public delegate void machine_delegate();
|
||||||
@ -264,16 +264,20 @@ namespace mame
|
|||||||
public static byte[] GetNeogeoRom(string sFile)
|
public static byte[] GetNeogeoRom(string sFile)
|
||||||
{
|
{
|
||||||
byte[] bb1;
|
byte[] bb1;
|
||||||
if (File.Exists("roms\\neogeo\\" + sFile))
|
string path = System.IO.Path.Combine(Mame.RomRoot + "/" + "roms/neogeo/", sFile);
|
||||||
|
if (File.Exists(path))
|
||||||
{
|
{
|
||||||
FileStream fs1 = new FileStream("roms\\neogeo\\" + sFile, FileMode.Open);
|
EmuLogger.Log($"Had File => {path}");
|
||||||
int n1 = (int)fs1.Length;
|
return File.ReadAllBytes(path);
|
||||||
bb1 = new byte[n1];
|
//FileStream fs1 = new FileStream(path, FileMode.Open);
|
||||||
fs1.Read(bb1, 0, n1);
|
//int n1 = (int)fs1.Length;
|
||||||
fs1.Close();
|
//bb1 = new byte[n1];
|
||||||
|
//fs1.Read(bb1, 0, n1);
|
||||||
|
//fs1.Close();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
EmuLogger.Log($"Miss File => {path}");
|
||||||
bb1 = null;
|
bb1 = null;
|
||||||
}
|
}
|
||||||
return bb1;
|
return bb1;
|
||||||
@ -284,15 +288,22 @@ namespace mame
|
|||||||
int n1;
|
int n1;
|
||||||
foreach (string s1 in lsParents)
|
foreach (string s1 in lsParents)
|
||||||
{
|
{
|
||||||
if (File.Exists("roms\\" + s1 + "\\" + sFile))
|
string path = System.IO.Path.Combine(Mame.RomRoot + "/" + "roms/" + s1 + "/", sFile);
|
||||||
|
if (File.Exists(path))
|
||||||
{
|
{
|
||||||
FileStream fs1 = new FileStream("roms\\" + s1 + "\\" + sFile, FileMode.Open);
|
EmuLogger.Log($"Had File => {path}");
|
||||||
n1 = (int)fs1.Length;
|
return File.ReadAllBytes(path);
|
||||||
bb1 = new byte[n1];
|
//FileStream fs1 = new FileStream(path, FileMode.Open);
|
||||||
fs1.Read(bb1, 0, n1);
|
//n1 = (int)fs1.Length;
|
||||||
fs1.Close();
|
//bb1 = new byte[n1];
|
||||||
|
//fs1.Read(bb1, 0, n1);
|
||||||
|
//fs1.Close();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
EmuLogger.Log($"Miss File => {path}");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return bb1;
|
return bb1;
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
using MAME.Core.Common;
|
using MAME.Core.Common;
|
||||||
using MAME.Core.run_interface;
|
using MAME.Core.run_interface;
|
||||||
using System;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
|
||||||
namespace mame
|
namespace mame
|
||||||
@ -29,6 +27,7 @@ namespace mame
|
|||||||
public static BinaryReader brRecord = null;
|
public static BinaryReader brRecord = null;
|
||||||
public static BinaryWriter bwRecord = null;
|
public static BinaryWriter bwRecord = null;
|
||||||
public static bool bPP = true;
|
public static bool bPP = true;
|
||||||
|
public static string RomRoot = string.Empty;
|
||||||
public class AA
|
public class AA
|
||||||
{
|
{
|
||||||
public int fr;
|
public int fr;
|
||||||
@ -98,12 +97,12 @@ namespace mame
|
|||||||
if (playState == PlayState.PLAY_SAVE)
|
if (playState == PlayState.PLAY_SAVE)
|
||||||
{
|
{
|
||||||
mame_pause(true);
|
mame_pause(true);
|
||||||
UI.ui_handler_callback = handle_save;
|
Motion.motion_handler_callback = handle_save;
|
||||||
}
|
}
|
||||||
else if (playState == PlayState.PLAY_LOAD)
|
else if (playState == PlayState.PLAY_LOAD)
|
||||||
{
|
{
|
||||||
mame_pause(true);
|
mame_pause(true);
|
||||||
UI.ui_handler_callback = handle_load;
|
Motion.motion_handler_callback = handle_load;
|
||||||
}
|
}
|
||||||
else if (playState == PlayState.PLAY_RESET)
|
else if (playState == PlayState.PLAY_RESET)
|
||||||
{
|
{
|
||||||
@ -113,7 +112,7 @@ namespace mame
|
|||||||
else if (playState == PlayState.PLAY_RECORDSTART)
|
else if (playState == PlayState.PLAY_RECORDSTART)
|
||||||
{
|
{
|
||||||
mame_pause(true);
|
mame_pause(true);
|
||||||
UI.ui_handler_callback = handle_record;
|
Motion.motion_handler_callback = handle_record;
|
||||||
}
|
}
|
||||||
else if (playState == PlayState.PLAY_RECORDEND)
|
else if (playState == PlayState.PLAY_RECORDEND)
|
||||||
{
|
{
|
||||||
@ -122,14 +121,14 @@ namespace mame
|
|||||||
else if (playState == PlayState.PLAY_REPLAYSTART)
|
else if (playState == PlayState.PLAY_REPLAYSTART)
|
||||||
{
|
{
|
||||||
mame_pause(true);
|
mame_pause(true);
|
||||||
UI.ui_handler_callback = handle_replay;
|
Motion.motion_handler_callback = handle_replay;
|
||||||
}
|
}
|
||||||
else if (playState == PlayState.PLAY_REPLAYEND)
|
else if (playState == PlayState.PLAY_REPLAYEND)
|
||||||
{
|
{
|
||||||
handle_replay();
|
handle_replay();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public static void init_machine(mainForm form)
|
public static void init_machine(mainMotion form)
|
||||||
{
|
{
|
||||||
Inptport.input_init();
|
Inptport.input_init();
|
||||||
Palette.palette_init();
|
Palette.palette_init();
|
||||||
@ -153,6 +152,7 @@ namespace mame
|
|||||||
{
|
{
|
||||||
if (paused == pause)
|
if (paused == pause)
|
||||||
return;
|
return;
|
||||||
|
EmuLogger.Log($"mame_pause->{pause}");
|
||||||
paused = pause;
|
paused = pause;
|
||||||
Window.wininput_pause(paused);
|
Window.wininput_pause(paused);
|
||||||
Sound.sound_pause(paused);
|
Sound.sound_pause(paused);
|
||||||
@ -187,7 +187,7 @@ namespace mame
|
|||||||
Video.popup_text_end = Wintime.osd_ticks() + Wintime.ticks_per_second * 2;
|
Video.popup_text_end = Wintime.osd_ticks() + Wintime.ticks_per_second * 2;
|
||||||
playState = PlayState.PLAY_RUNNING;
|
playState = PlayState.PLAY_RUNNING;
|
||||||
mame_pause(false);
|
mame_pause(false);
|
||||||
UI.ui_handler_callback = UI.handler_ingame;
|
Motion.motion_handler_callback = Motion.handler_ingame;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
char file;
|
char file;
|
||||||
@ -208,7 +208,7 @@ namespace mame
|
|||||||
Video.sDrawText = "Save to position " + file;
|
Video.sDrawText = "Save to position " + file;
|
||||||
Video.popup_text_end = Wintime.osd_ticks() + Wintime.ticks_per_second * 2;
|
Video.popup_text_end = Wintime.osd_ticks() + Wintime.ticks_per_second * 2;
|
||||||
playState = PlayState.PLAY_RUNNING;
|
playState = PlayState.PLAY_RUNNING;
|
||||||
UI.ui_handler_callback = UI.handler_ingame;
|
Motion.motion_handler_callback = Motion.handler_ingame;
|
||||||
Thread.Sleep(500);
|
Thread.Sleep(500);
|
||||||
mame_pause(false);
|
mame_pause(false);
|
||||||
return;
|
return;
|
||||||
@ -230,7 +230,7 @@ namespace mame
|
|||||||
Video.popup_text_end = Wintime.osd_ticks() + Wintime.ticks_per_second * 2;
|
Video.popup_text_end = Wintime.osd_ticks() + Wintime.ticks_per_second * 2;
|
||||||
playState = PlayState.PLAY_RUNNING;
|
playState = PlayState.PLAY_RUNNING;
|
||||||
mame_pause(false);
|
mame_pause(false);
|
||||||
UI.ui_handler_callback = UI.handler_ingame;
|
Motion.motion_handler_callback = Motion.handler_ingame;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
char file;
|
char file;
|
||||||
@ -246,7 +246,7 @@ namespace mame
|
|||||||
playState = PlayState.PLAY_RUNNING;
|
playState = PlayState.PLAY_RUNNING;
|
||||||
Thread.Sleep(500);
|
Thread.Sleep(500);
|
||||||
mame_pause(false);
|
mame_pause(false);
|
||||||
UI.ui_handler_callback = UI.handler_ingame;
|
Motion.motion_handler_callback = Motion.handler_ingame;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
FileStream fs1 = new FileStream("sta\\" + Machine.sName + "\\" + file + ".sta", FileMode.Open);
|
FileStream fs1 = new FileStream("sta\\" + Machine.sName + "\\" + file + ".sta", FileMode.Open);
|
||||||
@ -264,7 +264,7 @@ namespace mame
|
|||||||
fs2.Close();
|
fs2.Close();
|
||||||
return;*/
|
return;*/
|
||||||
playState = PlayState.PLAY_RUNNING;
|
playState = PlayState.PLAY_RUNNING;
|
||||||
UI.ui_handler_callback = UI.handler_ingame;
|
Motion.motion_handler_callback = Motion.handler_ingame;
|
||||||
Thread.Sleep(500);
|
Thread.Sleep(500);
|
||||||
mame_pause(false);
|
mame_pause(false);
|
||||||
return;
|
return;
|
||||||
@ -288,7 +288,7 @@ namespace mame
|
|||||||
Video.popup_text_end = Wintime.osd_ticks() + Wintime.ticks_per_second * 2;
|
Video.popup_text_end = Wintime.osd_ticks() + Wintime.ticks_per_second * 2;
|
||||||
playState = PlayState.PLAY_RUNNING;
|
playState = PlayState.PLAY_RUNNING;
|
||||||
mame_pause(false);
|
mame_pause(false);
|
||||||
UI.ui_handler_callback = UI.handler_ingame;
|
Motion.motion_handler_callback = Motion.handler_ingame;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
char file;
|
char file;
|
||||||
@ -318,7 +318,7 @@ namespace mame
|
|||||||
Video.sDrawText = "Record to position " + file;
|
Video.sDrawText = "Record to position " + file;
|
||||||
Video.popup_text_end = Wintime.osd_ticks() + Wintime.ticks_per_second * 2;
|
Video.popup_text_end = Wintime.osd_ticks() + Wintime.ticks_per_second * 2;
|
||||||
playState = PlayState.PLAY_RECORDRUNNING;
|
playState = PlayState.PLAY_RECORDRUNNING;
|
||||||
UI.ui_handler_callback = UI.handler_ingame;
|
Motion.motion_handler_callback = Motion.handler_ingame;
|
||||||
Thread.Sleep(500);
|
Thread.Sleep(500);
|
||||||
mame_pause(false);
|
mame_pause(false);
|
||||||
return;
|
return;
|
||||||
@ -351,7 +351,7 @@ namespace mame
|
|||||||
Video.popup_text_end = Wintime.osd_ticks() + Wintime.ticks_per_second * 2;
|
Video.popup_text_end = Wintime.osd_ticks() + Wintime.ticks_per_second * 2;
|
||||||
playState = PlayState.PLAY_RUNNING;
|
playState = PlayState.PLAY_RUNNING;
|
||||||
mame_pause(false);
|
mame_pause(false);
|
||||||
UI.ui_handler_callback = UI.handler_ingame;
|
Motion.motion_handler_callback = Motion.handler_ingame;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
char file;
|
char file;
|
||||||
@ -367,7 +367,7 @@ namespace mame
|
|||||||
playState = PlayState.PLAY_RUNNING;
|
playState = PlayState.PLAY_RUNNING;
|
||||||
Thread.Sleep(500);
|
Thread.Sleep(500);
|
||||||
mame_pause(false);
|
mame_pause(false);
|
||||||
UI.ui_handler_callback = UI.handler_ingame;
|
Motion.motion_handler_callback = Motion.handler_ingame;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (bwRecord != null)
|
if (bwRecord != null)
|
||||||
@ -405,7 +405,7 @@ namespace mame
|
|||||||
Video.sDrawText = "Replay from position " + file;
|
Video.sDrawText = "Replay from position " + file;
|
||||||
Video.popup_text_end = Wintime.osd_ticks() + Wintime.ticks_per_second * 2;
|
Video.popup_text_end = Wintime.osd_ticks() + Wintime.ticks_per_second * 2;
|
||||||
playState = PlayState.PLAY_REPLAYRUNNING;
|
playState = PlayState.PLAY_REPLAYRUNNING;
|
||||||
UI.ui_handler_callback = UI.handler_ingame;
|
Motion.motion_handler_callback = Motion.handler_ingame;
|
||||||
Thread.Sleep(500);
|
Thread.Sleep(500);
|
||||||
mame_pause(false);
|
mame_pause(false);
|
||||||
return;
|
return;
|
||||||
|
@ -1,9 +1,4 @@
|
|||||||
using System;
|
namespace mame
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace mame
|
|
||||||
{
|
{
|
||||||
public class Memory
|
public class Memory
|
||||||
{
|
{
|
||||||
@ -116,7 +111,7 @@ namespace mame
|
|||||||
case "sboblbobl":
|
case "sboblbobl":
|
||||||
Taito.sbyte0 = unchecked((sbyte)0x73);
|
Taito.sbyte0 = unchecked((sbyte)0x73);
|
||||||
break;
|
break;
|
||||||
case"opwolf":
|
case "opwolf":
|
||||||
Taito.sbyte0 = unchecked((sbyte)0xfc);
|
Taito.sbyte0 = unchecked((sbyte)0xfc);
|
||||||
break;
|
break;
|
||||||
case "opwolfp":
|
case "opwolfp":
|
||||||
|
@ -1,27 +1,26 @@
|
|||||||
using MAME.Core.Common;
|
using MAME.Core.Common;
|
||||||
using MAME.Core.run_interface;
|
using MAME.Core.run_interface;
|
||||||
using System;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
|
|
||||||
namespace mame
|
namespace mame
|
||||||
{
|
{
|
||||||
public class UI
|
/// <summary>
|
||||||
|
/// 原依赖Form的内容
|
||||||
|
/// </summary>
|
||||||
|
public class Motion
|
||||||
{
|
{
|
||||||
[DllImport("user32.dll")]
|
|
||||||
private static extern IntPtr GetForegroundWindow();
|
|
||||||
private static uint UI_FILLCOLOR = Palette.make_argb(0xe0, 0x10, 0x10, 0x30);
|
private static uint UI_FILLCOLOR = Palette.make_argb(0xe0, 0x10, 0x10, 0x30);
|
||||||
public delegate void ui_delegate();
|
public delegate void motion_delegate();
|
||||||
public static ui_delegate ui_handler_callback, ui_update_callback;
|
public static motion_delegate motion_handler_callback, motion_update_callback;
|
||||||
public static bool single_step;
|
public static bool single_step;
|
||||||
public static mainForm mainform;
|
//public static mainMotion mainmotion;
|
||||||
public static void ui_init(mainForm form1)
|
public static void init()
|
||||||
{
|
{
|
||||||
mainform = form1;
|
//mainmotion = motion;
|
||||||
}
|
}
|
||||||
public static void ui_update_and_render()
|
public static void ui_update_and_render()
|
||||||
{
|
{
|
||||||
ui_update_callback();
|
motion_update_callback();
|
||||||
ui_handler_callback();
|
motion_handler_callback();
|
||||||
}
|
}
|
||||||
public static void ui_updateC()
|
public static void ui_updateC()
|
||||||
{
|
{
|
||||||
@ -195,7 +194,7 @@ namespace mame
|
|||||||
}
|
}
|
||||||
if (Mame.is_foreground)
|
if (Mame.is_foreground)
|
||||||
{
|
{
|
||||||
if(Keyboard.IsPressed(Key.F3))
|
if (Keyboard.IsPressed(Key.F3))
|
||||||
{
|
{
|
||||||
cpurun();
|
cpurun();
|
||||||
Mame.playState = Mame.PlayState.PLAY_RESET;
|
Mame.playState = Mame.PlayState.PLAY_RESET;
|
||||||
@ -255,10 +254,10 @@ namespace mame
|
|||||||
}
|
}
|
||||||
public static void cpurun()
|
public static void cpurun()
|
||||||
{
|
{
|
||||||
m68000Form.m68000State = m68000Form.M68000State.M68000_RUN;
|
m68000Motion.m68000State = m68000Motion.M68000State.M68000_RUN;
|
||||||
Machine.FORM.m68000form.mTx_tsslStatus = "run";
|
Machine.FORM.m68000motion.mTx_tsslStatus = "run";
|
||||||
z80Form.z80State = z80Form.Z80AState.Z80A_RUN;
|
z80Motion.z80State = z80Motion.Z80AState.Z80A_RUN;
|
||||||
Machine.FORM.z80form.mTx_tsslStatus = "run";
|
Machine.FORM.z80motion.mTx_tsslStatus = "run";
|
||||||
}
|
}
|
||||||
private static double ui_get_line_height()
|
private static double ui_get_line_height()
|
||||||
{
|
{
|
@ -8,14 +8,15 @@ namespace mame
|
|||||||
public static int deltaX, deltaY, oldX, oldY;
|
public static int deltaX, deltaY, oldX, oldY;
|
||||||
public static byte[] buttons;
|
public static byte[] buttons;
|
||||||
static IMouse iMouse;
|
static IMouse iMouse;
|
||||||
public static void InitialMouse(mainForm form1,IMouse im)
|
public static void InitialMouse(mainMotion form1, IMouse im)
|
||||||
{
|
{
|
||||||
iMouse = im;
|
iMouse = im;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Update()
|
public static void Update()
|
||||||
{
|
{
|
||||||
iMouse.MouseXY(out int X, out int Y);
|
int X, Y;
|
||||||
|
iMouse.MouseXY(out X, out Y);
|
||||||
deltaX = X - oldX;
|
deltaX = X - oldX;
|
||||||
deltaY = Y - oldY;
|
deltaY = Y - oldY;
|
||||||
oldX = X;
|
oldX = X;
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
using System;
|
using MAME.Core.AxiBitmap;
|
||||||
using System.Collections.Generic;
|
using Color = MAME.Core.AxiBitmap.AxiColor;
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Drawing;
|
|
||||||
|
|
||||||
namespace mame
|
namespace mame
|
||||||
{
|
{
|
||||||
@ -11,9 +8,9 @@ namespace mame
|
|||||||
public static uint[] entry_color;
|
public static uint[] entry_color;
|
||||||
public static float[] entry_contrast;
|
public static float[] entry_contrast;
|
||||||
private static uint trans_uint;
|
private static uint trans_uint;
|
||||||
private static int numcolors,numgroups;
|
private static int numcolors, numgroups;
|
||||||
public static Color trans_color;
|
public static Color trans_color;
|
||||||
public delegate void palette_delegate(int index,uint rgb);
|
public delegate void palette_delegate(int index, uint rgb);
|
||||||
public static palette_delegate palette_set_callback;
|
public static palette_delegate palette_set_callback;
|
||||||
public static void palette_init()
|
public static void palette_init()
|
||||||
{
|
{
|
||||||
@ -309,7 +306,7 @@ namespace mame
|
|||||||
}
|
}
|
||||||
public static byte pal1bit(byte bits)
|
public static byte pal1bit(byte bits)
|
||||||
{
|
{
|
||||||
return (byte)(((bits & 1)!=0) ? 0xff : 0x00);
|
return (byte)(((bits & 1) != 0) ? 0xff : 0x00);
|
||||||
}
|
}
|
||||||
public static byte pal4bit(byte bits)
|
public static byte pal4bit(byte bits)
|
||||||
{
|
{
|
||||||
|
@ -1,8 +1,4 @@
|
|||||||
using System;
|
using System.IO;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.IO;
|
|
||||||
|
|
||||||
namespace mame
|
namespace mame
|
||||||
{
|
{
|
||||||
@ -108,7 +104,7 @@ namespace mame
|
|||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
real_year = (pd4990a.year >> 4) * 10 + (pd4990a.year & 0xf);
|
real_year = (pd4990a.year >> 4) * 10 + (pd4990a.year & 0xf);
|
||||||
if ((real_year % 4)!=0 && ((real_year % 100)==0 || (real_year % 400)!=0))
|
if ((real_year % 4) != 0 && ((real_year % 100) == 0 || (real_year % 400) != 0))
|
||||||
{
|
{
|
||||||
if (pd4990a.days == 0x29)
|
if (pd4990a.days == 0x29)
|
||||||
{
|
{
|
||||||
@ -243,9 +239,9 @@ namespace mame
|
|||||||
private static void pd4990a_nextbit()
|
private static void pd4990a_nextbit()
|
||||||
{
|
{
|
||||||
++bitno;
|
++bitno;
|
||||||
if (reading!=0)
|
if (reading != 0)
|
||||||
pd4990a_readbit();
|
pd4990a_readbit();
|
||||||
if (reading!=0 && bitno == 0x34)
|
if (reading != 0 && bitno == 0x34)
|
||||||
{
|
{
|
||||||
reading = 0;
|
reading = 0;
|
||||||
pd4990a_resetbitstream();
|
pd4990a_resetbitstream();
|
||||||
@ -276,7 +272,7 @@ namespace mame
|
|||||||
{
|
{
|
||||||
case 0x1: //load output register
|
case 0x1: //load output register
|
||||||
bitno = 0;
|
bitno = 0;
|
||||||
if (reading!=0)
|
if (reading != 0)
|
||||||
pd4990a_readbit(); //prepare first bit
|
pd4990a_readbit(); //prepare first bit
|
||||||
shiftlo = 0;
|
shiftlo = 0;
|
||||||
shifthi = 0;
|
shifthi = 0;
|
||||||
@ -300,7 +296,7 @@ namespace mame
|
|||||||
private static void pd4990a_serial_control(byte data)
|
private static void pd4990a_serial_control(byte data)
|
||||||
{
|
{
|
||||||
//Check for command end
|
//Check for command end
|
||||||
if (command_line!=0 && (data & 4)==0) //end of command
|
if (command_line != 0 && (data & 4) == 0) //end of command
|
||||||
{
|
{
|
||||||
pd4990a_process_command();
|
pd4990a_process_command();
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,4 @@
|
|||||||
using System;
|
using System.Collections.Generic;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Xml.Linq;
|
|
||||||
|
|
||||||
namespace mame
|
namespace mame
|
||||||
{
|
{
|
||||||
|
@ -1,9 +1,4 @@
|
|||||||
using System;
|
using System.IO;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.IO;
|
|
||||||
using cpu.m68000;
|
|
||||||
|
|
||||||
namespace mame
|
namespace mame
|
||||||
{
|
{
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace mame
|
namespace mame
|
||||||
{
|
{
|
||||||
@ -104,7 +102,7 @@ namespace mame
|
|||||||
{
|
{
|
||||||
palette_offset = offset;
|
palette_offset = offset;
|
||||||
}
|
}
|
||||||
public static void tilemap_set_flip(Tmap tmap,byte _attributes)
|
public static void tilemap_set_flip(Tmap tmap, byte _attributes)
|
||||||
{
|
{
|
||||||
if (tmap == null)
|
if (tmap == null)
|
||||||
{
|
{
|
||||||
@ -153,12 +151,12 @@ namespace mame
|
|||||||
{
|
{
|
||||||
scrollcols = scroll_cols;
|
scrollcols = scroll_cols;
|
||||||
}
|
}
|
||||||
public void tilemap_set_scrolldx(int _dx,int _dx2)
|
public void tilemap_set_scrolldx(int _dx, int _dx2)
|
||||||
{
|
{
|
||||||
dx = _dx;
|
dx = _dx;
|
||||||
dx_flipped = _dx2;
|
dx_flipped = _dx2;
|
||||||
}
|
}
|
||||||
public void tilemap_set_scrolldy(int _dy,int _dy2)
|
public void tilemap_set_scrolldy(int _dy, int _dy2)
|
||||||
{
|
{
|
||||||
dy = _dy;
|
dy = _dy;
|
||||||
dy_flipped = _dy2;
|
dy_flipped = _dy2;
|
||||||
@ -269,7 +267,7 @@ namespace mame
|
|||||||
{
|
{
|
||||||
public static List<Tmap> lsTmap = new List<Tmap>();
|
public static List<Tmap> lsTmap = new List<Tmap>();
|
||||||
public static byte[,] priority_bitmap;
|
public static byte[,] priority_bitmap;
|
||||||
public static byte[,] bb00,bbFF;
|
public static byte[,] bb00, bbFF;
|
||||||
public static byte[] bb0F;
|
public static byte[] bb0F;
|
||||||
public static int screen_width, screen_height;
|
public static int screen_width, screen_height;
|
||||||
private static int INVALID_LOGICAL_INDEX = -1;
|
private static int INVALID_LOGICAL_INDEX = -1;
|
||||||
|
@ -1,9 +1,7 @@
|
|||||||
using System;
|
using cpu.m6800;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text;
|
|
||||||
using cpu.m6800;
|
|
||||||
|
|
||||||
namespace mame
|
namespace mame
|
||||||
{
|
{
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
using MAME.Core.run_interface;
|
using MAME.Core.run_interface;
|
||||||
using System;
|
using System;
|
||||||
using System.Drawing;
|
|
||||||
using System.Drawing.Imaging;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using Bitmap = MAME.Core.AxiBitmap.AxiBitmap;
|
||||||
|
|
||||||
namespace mame
|
namespace mame
|
||||||
{
|
{
|
||||||
@ -27,8 +26,8 @@ namespace mame
|
|||||||
public static Atime frame_update_time;
|
public static Atime frame_update_time;
|
||||||
public static screen_state screenstate;
|
public static screen_state screenstate;
|
||||||
public static int video_attributes;
|
public static int video_attributes;
|
||||||
private static int PAUSED_REFRESH_RATE = 30, VIDEO_UPDATE_AFTER_VBLANK=4;
|
private static int PAUSED_REFRESH_RATE = 30, VIDEO_UPDATE_AFTER_VBLANK = 4;
|
||||||
public static Timer.emu_timer vblank_begin_timer,vblank_end_timer;
|
public static Timer.emu_timer vblank_begin_timer, vblank_end_timer;
|
||||||
public static Timer.emu_timer scanline0_timer, scanline_timer;
|
public static Timer.emu_timer scanline0_timer, scanline_timer;
|
||||||
private static Atime throttle_emutime, throttle_realtime, speed_last_emutime, overall_emutime;
|
private static Atime throttle_emutime, throttle_realtime, speed_last_emutime, overall_emutime;
|
||||||
private static long throttle_last_ticks;
|
private static long throttle_last_ticks;
|
||||||
@ -50,7 +49,7 @@ namespace mame
|
|||||||
public static string sDrawText;
|
public static string sDrawText;
|
||||||
public static long popup_text_end;
|
public static long popup_text_end;
|
||||||
public static int iMode, nMode;
|
public static int iMode, nMode;
|
||||||
private static BitmapData bitmapData;
|
//private static BitmapData bitmapData;
|
||||||
public static int offsetx, offsety, width, height;
|
public static int offsetx, offsety, width, height;
|
||||||
public delegate void video_delegate();
|
public delegate void video_delegate();
|
||||||
public static video_delegate video_update_callback, video_eof_callback;
|
public static video_delegate video_update_callback, video_eof_callback;
|
||||||
@ -63,7 +62,7 @@ namespace mame
|
|||||||
|
|
||||||
|
|
||||||
#region 抽象出去
|
#region 抽象出去
|
||||||
static Action<Bitmap> Act_SubmitVideo;
|
static Action<int[]> Act_SubmitVideo;
|
||||||
|
|
||||||
public static void BindFunc(IVideoPlayer Ivp)
|
public static void BindFunc(IVideoPlayer Ivp)
|
||||||
{
|
{
|
||||||
@ -72,7 +71,7 @@ namespace mame
|
|||||||
Act_SubmitVideo += Ivp.SubmitVideo;
|
Act_SubmitVideo += Ivp.SubmitVideo;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void SubmitVideo(Bitmap Bitmap)
|
static void SubmitVideo(int[] Bitmap)
|
||||||
{
|
{
|
||||||
Act_SubmitVideo?.Invoke(Bitmap);
|
Act_SubmitVideo?.Invoke(Bitmap);
|
||||||
}
|
}
|
||||||
@ -82,7 +81,7 @@ namespace mame
|
|||||||
{
|
{
|
||||||
Wintime.wintime_init();
|
Wintime.wintime_init();
|
||||||
global_throttle = true;
|
global_throttle = true;
|
||||||
UI.ui_handler_callback = UI.handler_ingame;
|
Motion.motion_handler_callback = Motion.handler_ingame;
|
||||||
sDrawText = "";
|
sDrawText = "";
|
||||||
popup_text_end = 0;
|
popup_text_end = 0;
|
||||||
popcount = new int[256]{
|
popcount = new int[256]{
|
||||||
@ -111,7 +110,7 @@ namespace mame
|
|||||||
screenstate.vblank_period = 0;
|
screenstate.vblank_period = 0;
|
||||||
video_attributes = 0;
|
video_attributes = 0;
|
||||||
bitmapGDI = new Bitmap(Video.fullwidth, Video.fullheight);
|
bitmapGDI = new Bitmap(Video.fullwidth, Video.fullheight);
|
||||||
UI.ui_update_callback = UI.ui_updateC;
|
Motion.motion_update_callback = Motion.ui_updateC;
|
||||||
bitmapbase = new ushort[2][];
|
bitmapbase = new ushort[2][];
|
||||||
bitmapbase[0] = new ushort[0x200 * 0x200];
|
bitmapbase[0] = new ushort[0x200 * 0x200];
|
||||||
bitmapbase[1] = new ushort[0x200 * 0x200];
|
bitmapbase[1] = new ushort[0x200 * 0x200];
|
||||||
@ -135,7 +134,7 @@ namespace mame
|
|||||||
screenstate.vblank_period = 0;
|
screenstate.vblank_period = 0;
|
||||||
video_attributes = 0;
|
video_attributes = 0;
|
||||||
bitmapGDI = new Bitmap(Video.fullwidth, Video.fullheight);
|
bitmapGDI = new Bitmap(Video.fullwidth, Video.fullheight);
|
||||||
UI.ui_update_callback = UI.ui_updateC;
|
Motion.motion_update_callback = Motion.ui_updateC;
|
||||||
bitmapbase = new ushort[2][];
|
bitmapbase = new ushort[2][];
|
||||||
bitmapbase[0] = new ushort[0x200 * 0x200];
|
bitmapbase[0] = new ushort[0x200 * 0x200];
|
||||||
bitmapbase[1] = new ushort[0x200 * 0x200];
|
bitmapbase[1] = new ushort[0x200 * 0x200];
|
||||||
@ -159,7 +158,7 @@ namespace mame
|
|||||||
screenstate.vblank_period = 0;
|
screenstate.vblank_period = 0;
|
||||||
video_attributes = 0;
|
video_attributes = 0;
|
||||||
bitmapGDI = new Bitmap(Video.fullwidth, Video.fullheight);
|
bitmapGDI = new Bitmap(Video.fullwidth, Video.fullheight);
|
||||||
UI.ui_update_callback = UI.ui_updateC;
|
Motion.motion_update_callback = Motion.ui_updateC;
|
||||||
bitmapbase = new ushort[2][];
|
bitmapbase = new ushort[2][];
|
||||||
bitmapbase[0] = new ushort[0x100 * 0x100];
|
bitmapbase[0] = new ushort[0x100 * 0x100];
|
||||||
bitmapbase[1] = new ushort[0x100 * 0x100];
|
bitmapbase[1] = new ushort[0x100 * 0x100];
|
||||||
@ -192,7 +191,7 @@ namespace mame
|
|||||||
screenstate.vblank_period = 0;
|
screenstate.vblank_period = 0;
|
||||||
video_attributes = 0;
|
video_attributes = 0;
|
||||||
bitmapGDI = new Bitmap(Video.fullwidth, Video.fullheight);
|
bitmapGDI = new Bitmap(Video.fullwidth, Video.fullheight);
|
||||||
UI.ui_update_callback = UI.ui_updateTehkan;
|
Motion.motion_update_callback = Motion.ui_updateTehkan;
|
||||||
bitmapbase = new ushort[2][];
|
bitmapbase = new ushort[2][];
|
||||||
bitmapbase[0] = new ushort[0x100 * 0x100];
|
bitmapbase[0] = new ushort[0x100 * 0x100];
|
||||||
bitmapbase[1] = new ushort[0x100 * 0x100];
|
bitmapbase[1] = new ushort[0x100 * 0x100];
|
||||||
@ -213,7 +212,7 @@ namespace mame
|
|||||||
frame_update_time = new Atime(0, (long)(1e18 / 6000000) * screenstate.width * screenstate.height);//59.1856060608428Hz
|
frame_update_time = new Atime(0, (long)(1e18 / 6000000) * screenstate.width * screenstate.height);//59.1856060608428Hz
|
||||||
screenstate.vblank_period = (long)(1e18 / 6000000) * 384 * (264 - 224);
|
screenstate.vblank_period = (long)(1e18 / 6000000) * 384 * (264 - 224);
|
||||||
video_attributes = 0;
|
video_attributes = 0;
|
||||||
UI.ui_update_callback = UI.ui_updateN;
|
Motion.motion_update_callback = Motion.ui_updateN;
|
||||||
bitmapbaseN = new int[2][];
|
bitmapbaseN = new int[2][];
|
||||||
bitmapbaseN[0] = new int[384 * 264];
|
bitmapbaseN[0] = new int[384 * 264];
|
||||||
bitmapbaseN[1] = new int[384 * 264];
|
bitmapbaseN[1] = new int[384 * 264];
|
||||||
@ -234,7 +233,7 @@ namespace mame
|
|||||||
frame_update_time = new Atime(0, (long)(1e18 / 60));
|
frame_update_time = new Atime(0, (long)(1e18 / 60));
|
||||||
screenstate.vblank_period = (long)(1e12 * 2500);
|
screenstate.vblank_period = (long)(1e12 * 2500);
|
||||||
video_attributes = 0;
|
video_attributes = 0;
|
||||||
UI.ui_update_callback = UI.ui_updatePGM;
|
Motion.motion_update_callback = Motion.ui_updatePGM;
|
||||||
bitmapbase = new ushort[2][];
|
bitmapbase = new ushort[2][];
|
||||||
bitmapbase[0] = new ushort[0x100 * 0x100];
|
bitmapbase[0] = new ushort[0x100 * 0x100];
|
||||||
bitmapbase[1] = new ushort[0x100 * 0x100];
|
bitmapbase[1] = new ushort[0x100 * 0x100];
|
||||||
@ -255,7 +254,7 @@ namespace mame
|
|||||||
frame_update_time = new Atime(0, (long)(1e18 / 60.606060));
|
frame_update_time = new Atime(0, (long)(1e18 / 60.606060));
|
||||||
screenstate.vblank_period = 0;
|
screenstate.vblank_period = 0;
|
||||||
video_attributes = 0;
|
video_attributes = 0;
|
||||||
UI.ui_update_callback = UI.ui_updateNa;
|
Motion.motion_update_callback = Motion.ui_updateNa;
|
||||||
bitmapGDI = new Bitmap(Video.fullwidth, Video.fullheight);
|
bitmapGDI = new Bitmap(Video.fullwidth, Video.fullheight);
|
||||||
bitmapbase = new ushort[2][];
|
bitmapbase = new ushort[2][];
|
||||||
bitmapbase[0] = new ushort[0x200 * 0x200];
|
bitmapbase[0] = new ushort[0x200 * 0x200];
|
||||||
@ -278,7 +277,7 @@ namespace mame
|
|||||||
frame_update_time = new Atime(0, (long)(1e18 / 60));
|
frame_update_time = new Atime(0, (long)(1e18 / 60));
|
||||||
screenstate.vblank_period = 0;
|
screenstate.vblank_period = 0;
|
||||||
video_attributes = 0;
|
video_attributes = 0;
|
||||||
UI.ui_update_callback = UI.ui_updateIGS011;
|
Motion.motion_update_callback = Motion.ui_updateIGS011;
|
||||||
bitmapGDI = new Bitmap(Video.fullwidth, Video.fullheight);
|
bitmapGDI = new Bitmap(Video.fullwidth, Video.fullheight);
|
||||||
bitmapbase = new ushort[2][];
|
bitmapbase = new ushort[2][];
|
||||||
bitmapbase[0] = new ushort[0x200 * 0x200];
|
bitmapbase[0] = new ushort[0x200 * 0x200];
|
||||||
@ -300,7 +299,7 @@ namespace mame
|
|||||||
frame_update_time = new Atime(0, (long)(1e18 / 60));
|
frame_update_time = new Atime(0, (long)(1e18 / 60));
|
||||||
screenstate.vblank_period = 0;
|
screenstate.vblank_period = 0;
|
||||||
video_attributes = 0;
|
video_attributes = 0;
|
||||||
UI.ui_update_callback = UI.ui_updatePGM;
|
Motion.motion_update_callback = Motion.ui_updatePGM;
|
||||||
bitmapGDI = new Bitmap(Video.fullwidth, Video.fullheight);
|
bitmapGDI = new Bitmap(Video.fullwidth, Video.fullheight);
|
||||||
bitmapbase = new ushort[2][];
|
bitmapbase = new ushort[2][];
|
||||||
bitmapbase[0] = new ushort[0x200 * 0x200];
|
bitmapbase[0] = new ushort[0x200 * 0x200];
|
||||||
@ -322,7 +321,7 @@ namespace mame
|
|||||||
frame_update_time = new Atime(0, (long)(1e18 / 8000000) * screenstate.width * screenstate.height);
|
frame_update_time = new Atime(0, (long)(1e18 / 8000000) * screenstate.width * screenstate.height);
|
||||||
screenstate.vblank_period = (long)(1e18 / 8000000) * 512 * (284 - 256);
|
screenstate.vblank_period = (long)(1e18 / 8000000) * 512 * (284 - 256);
|
||||||
video_attributes = 0;
|
video_attributes = 0;
|
||||||
UI.ui_update_callback = UI.ui_updatePGM;
|
Motion.motion_update_callback = Motion.ui_updatePGM;
|
||||||
bitmapbase = new ushort[2][];
|
bitmapbase = new ushort[2][];
|
||||||
bitmapbase[0] = new ushort[0x200 * 0x200];//0x11c
|
bitmapbase[0] = new ushort[0x200 * 0x200];//0x11c
|
||||||
bitmapbase[1] = new ushort[0x200 * 0x200];//0x11c
|
bitmapbase[1] = new ushort[0x200 * 0x200];//0x11c
|
||||||
@ -343,7 +342,7 @@ namespace mame
|
|||||||
frame_update_time = new Atime(0, (long)(1e18 / 60));
|
frame_update_time = new Atime(0, (long)(1e18 / 60));
|
||||||
screenstate.vblank_period = 0;
|
screenstate.vblank_period = 0;
|
||||||
video_attributes = 0;
|
video_attributes = 0;
|
||||||
UI.ui_update_callback = UI.ui_updatePGM;
|
Motion.motion_update_callback = Motion.ui_updatePGM;
|
||||||
bitmapbase = new ushort[2][];
|
bitmapbase = new ushort[2][];
|
||||||
bitmapbase[0] = new ushort[0x200 * 0x200];
|
bitmapbase[0] = new ushort[0x200 * 0x200];
|
||||||
bitmapbase[1] = new ushort[0x200 * 0x200];
|
bitmapbase[1] = new ushort[0x200 * 0x200];
|
||||||
@ -354,7 +353,7 @@ namespace mame
|
|||||||
break;
|
break;
|
||||||
case "Taito":
|
case "Taito":
|
||||||
video_attributes = 0;
|
video_attributes = 0;
|
||||||
UI.ui_update_callback = UI.ui_updatePGM;
|
Motion.motion_update_callback = Motion.ui_updatePGM;
|
||||||
switch (Machine.sName)
|
switch (Machine.sName)
|
||||||
{
|
{
|
||||||
case "tokio":
|
case "tokio":
|
||||||
@ -435,7 +434,7 @@ namespace mame
|
|||||||
frame_update_time = new Atime(0, (long)(1e18 / 60));
|
frame_update_time = new Atime(0, (long)(1e18 / 60));
|
||||||
screenstate.vblank_period = 0;
|
screenstate.vblank_period = 0;
|
||||||
video_attributes = 0;
|
video_attributes = 0;
|
||||||
UI.ui_update_callback = UI.ui_updatePGM;
|
Motion.motion_update_callback = Motion.ui_updatePGM;
|
||||||
bitmapbase = new ushort[2][];
|
bitmapbase = new ushort[2][];
|
||||||
bitmapbase[0] = new ushort[0x200 * 0x100];
|
bitmapbase[0] = new ushort[0x200 * 0x100];
|
||||||
bitmapbase[1] = new ushort[0x200 * 0x100];
|
bitmapbase[1] = new ushort[0x200 * 0x100];
|
||||||
@ -452,7 +451,7 @@ namespace mame
|
|||||||
frame_update_time = new Atime(0, (long)(1e18 / 60));
|
frame_update_time = new Atime(0, (long)(1e18 / 60));
|
||||||
screenstate.vblank_period = (long)(1e12 * 2500);
|
screenstate.vblank_period = (long)(1e12 * 2500);
|
||||||
video_attributes = 0x34;
|
video_attributes = 0x34;
|
||||||
UI.ui_update_callback = UI.ui_updatePGM;
|
Motion.motion_update_callback = Motion.ui_updatePGM;
|
||||||
bitmapbase = new ushort[2][];
|
bitmapbase = new ushort[2][];
|
||||||
bitmapbase[0] = new ushort[0x200 * 0x100];
|
bitmapbase[0] = new ushort[0x200 * 0x100];
|
||||||
bitmapbase[1] = new ushort[0x200 * 0x100];
|
bitmapbase[1] = new ushort[0x200 * 0x100];
|
||||||
@ -604,7 +603,7 @@ namespace mame
|
|||||||
frame_update_time = new Atime(0, (long)(1e18 / 60));
|
frame_update_time = new Atime(0, (long)(1e18 / 60));
|
||||||
screenstate.vblank_period = 0;
|
screenstate.vblank_period = 0;
|
||||||
video_attributes = 0;
|
video_attributes = 0;
|
||||||
UI.ui_update_callback = UI.ui_updatePGM;
|
Motion.motion_update_callback = Motion.ui_updatePGM;
|
||||||
bitmapbase = new ushort[2][];
|
bitmapbase = new ushort[2][];
|
||||||
bitmapbase[0] = new ushort[0x100 * 0x100];
|
bitmapbase[0] = new ushort[0x100 * 0x100];
|
||||||
bitmapbase[1] = new ushort[0x100 * 0x100];
|
bitmapbase[1] = new ushort[0x100 * 0x100];
|
||||||
@ -630,7 +629,7 @@ namespace mame
|
|||||||
frame_update_time = new Atime(0, (long)(1e18 / 60));
|
frame_update_time = new Atime(0, (long)(1e18 / 60));
|
||||||
screenstate.vblank_period = 0;
|
screenstate.vblank_period = 0;
|
||||||
video_attributes = 0;
|
video_attributes = 0;
|
||||||
UI.ui_update_callback = UI.ui_updatePGM;
|
Motion.motion_update_callback = Motion.ui_updatePGM;
|
||||||
bitmapbase = new ushort[2][];
|
bitmapbase = new ushort[2][];
|
||||||
bitmapbase[0] = new ushort[0x200 * 0x100];
|
bitmapbase[0] = new ushort[0x200 * 0x100];
|
||||||
bitmapbase[1] = new ushort[0x200 * 0x100];
|
bitmapbase[1] = new ushort[0x200 * 0x100];
|
||||||
@ -752,7 +751,7 @@ namespace mame
|
|||||||
screenstate.height = height;
|
screenstate.height = height;
|
||||||
screenstate.visarea = visarea;
|
screenstate.visarea = visarea;
|
||||||
//realloc_screen_bitmaps(screen);
|
//realloc_screen_bitmaps(screen);
|
||||||
screenstate.frame_period=frame_period;
|
screenstate.frame_period = frame_period;
|
||||||
screenstate.scantime = frame_period / height;
|
screenstate.scantime = frame_period / height;
|
||||||
screenstate.pixeltime = frame_period / (height * width);
|
screenstate.pixeltime = frame_period / (height * width);
|
||||||
/*if (config->vblank == 0 && !config->oldstyle_vblank_supplied)
|
/*if (config->vblank == 0 && !config->oldstyle_vblank_supplied)
|
||||||
@ -853,7 +852,7 @@ namespace mame
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Timer.timer_adjust_periodic(vblank_end_timer, video_screen_get_time_until_vblank_end(),Attotime.ATTOTIME_NEVER);
|
Timer.timer_adjust_periodic(vblank_end_timer, video_screen_get_time_until_vblank_end(), Attotime.ATTOTIME_NEVER);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public static void vblank_end_callback()
|
public static void vblank_end_callback()
|
||||||
@ -878,7 +877,7 @@ namespace mame
|
|||||||
{
|
{
|
||||||
scanline = screenstate.visarea.min_y;
|
scanline = screenstate.visarea.min_y;
|
||||||
}
|
}
|
||||||
scanline_param=scanline;
|
scanline_param = scanline;
|
||||||
Timer.timer_adjust_periodic(scanline_timer, video_screen_get_time_until_pos(scanline, 0), Attotime.ATTOTIME_NEVER);
|
Timer.timer_adjust_periodic(scanline_timer, video_screen_get_time_until_pos(scanline, 0), Attotime.ATTOTIME_NEVER);
|
||||||
}
|
}
|
||||||
public static void video_frame_update()
|
public static void video_frame_update()
|
||||||
@ -891,10 +890,10 @@ namespace mame
|
|||||||
Keyboard.Update();
|
Keyboard.Update();
|
||||||
Mouse.Update();
|
Mouse.Update();
|
||||||
Inptport.frame_update_callback();
|
Inptport.frame_update_callback();
|
||||||
UI.ui_update_and_render();
|
Motion.ui_update_and_render();
|
||||||
if(Machine.FORM.cheatform.lockState == MAME.Core.Common.cheatForm.LockState.LOCK_FRAME)
|
if (Machine.FORM.cheatmotion.lockState == MAME.Core.Common.cheatMotion.LockState.LOCK_FRAME)
|
||||||
{
|
{
|
||||||
Machine.FORM.cheatform.ApplyCheat();
|
Machine.FORM.cheatmotion.ApplyCheat();
|
||||||
}
|
}
|
||||||
GDIDraw();
|
GDIDraw();
|
||||||
if (effective_throttle())
|
if (effective_throttle())
|
||||||
|
@ -1,9 +1,4 @@
|
|||||||
using System;
|
namespace mame
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace mame
|
|
||||||
{
|
{
|
||||||
public class Watchdog
|
public class Watchdog
|
||||||
{
|
{
|
||||||
|
@ -1,17 +1,19 @@
|
|||||||
using MAME.Core.Common;
|
using MAME.Core.Common;
|
||||||
using System;
|
|
||||||
using System.Drawing;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
|
|
||||||
namespace mame
|
namespace mame
|
||||||
{
|
{
|
||||||
public class Window
|
public class Window
|
||||||
{
|
{
|
||||||
private static mainForm _myParentForm;
|
private static mainMotion _myParentForm;
|
||||||
[DllImport("kernel32.dll ")]
|
//[DllImport("kernel32.dll ")]
|
||||||
private static extern uint GetTickCount();
|
//private static extern uint GetTickCount();
|
||||||
|
|
||||||
public static bool input_enabled,input_paused, mouse_enabled, lightgun_enabled;
|
private static uint GetTickCount()
|
||||||
|
{
|
||||||
|
return (uint)Wintime._stopwatch.ElapsedMilliseconds;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool input_enabled, input_paused, mouse_enabled, lightgun_enabled;
|
||||||
public static uint last_poll, last_event_check;
|
public static uint last_poll, last_event_check;
|
||||||
private static bool _CursorShown = true;
|
private static bool _CursorShown = true;
|
||||||
public static void osd_update(bool skip_redraw)
|
public static void osd_update(bool skip_redraw)
|
||||||
@ -45,7 +47,7 @@ namespace mame
|
|||||||
}
|
}
|
||||||
winwindow_process_events(true);
|
winwindow_process_events(true);
|
||||||
}
|
}
|
||||||
public static void osd_init(mainForm form)
|
public static void osd_init(mainMotion form)
|
||||||
{
|
{
|
||||||
_myParentForm = form;
|
_myParentForm = form;
|
||||||
wininput_init();
|
wininput_init();
|
||||||
|
@ -1,18 +1,33 @@
|
|||||||
using System;
|
using System.Diagnostics;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
|
||||||
namespace mame
|
namespace mame
|
||||||
{
|
{
|
||||||
public class Wintime
|
public class Wintime
|
||||||
{
|
{
|
||||||
[DllImport("kernel32.dll ")]
|
//[DllImport("kernel32.dll ")]
|
||||||
public static extern bool QueryPerformanceCounter(ref long lpPerformanceCount);
|
//public static extern bool QueryPerformanceCounter(ref long lpPerformanceCount);
|
||||||
[DllImport("kernel32.dll")]
|
//[DllImport("kernel32.dll")]
|
||||||
private static extern bool QueryPerformanceFrequency(ref long PerformanceFrequency);
|
//private static extern bool QueryPerformanceFrequency(ref long PerformanceFrequency);
|
||||||
|
|
||||||
|
#region 跨平台等效实现
|
||||||
|
public static Stopwatch _stopwatch = Stopwatch.StartNew();
|
||||||
|
private static long _lastReportedCount = 0;
|
||||||
|
|
||||||
|
public static bool QueryPerformanceCounter(ref long lpPerformanceCount)
|
||||||
|
{
|
||||||
|
lpPerformanceCount = _stopwatch.ElapsedTicks;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool QueryPerformanceFrequency(ref long PerformanceFrequency)
|
||||||
|
{
|
||||||
|
PerformanceFrequency = Stopwatch.Frequency;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
public static long ticks_per_second;
|
public static long ticks_per_second;
|
||||||
public static void wintime_init()
|
public static void wintime_init()
|
||||||
{
|
{
|
||||||
|
@ -1,23 +1,19 @@
|
|||||||
using System;
|
using cpu.m68000;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using cpu.m68000;
|
|
||||||
|
|
||||||
namespace mame
|
namespace mame
|
||||||
{
|
{
|
||||||
public partial class Capcom
|
public partial class Capcom
|
||||||
{
|
{
|
||||||
public static byte[] audiorom2;
|
public static byte[] audiorom2;
|
||||||
public static int basebankmain,basebanksnd1;
|
public static int basebankmain, basebanksnd1;
|
||||||
public static byte[] gfx1rom, gfx2rom, gfx3rom,gfx4rom,gfx5rom,gfx12rom,gfx22rom,gfx32rom,gfx42rom;
|
public static byte[] gfx1rom, gfx2rom, gfx3rom, gfx4rom, gfx5rom, gfx12rom, gfx22rom, gfx32rom, gfx42rom;
|
||||||
public static ushort dsw1, dsw2;
|
public static ushort dsw1, dsw2;
|
||||||
public static byte bytedsw1, bytedsw2;
|
public static byte bytedsw1, bytedsw2;
|
||||||
public static ushort[] sf_objectram, sf_videoram;
|
public static ushort[] sf_objectram, sf_videoram;
|
||||||
public static int[] scale = new int[8] { 0x00, 0x40, 0xe0, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe };
|
public static int[] scale = new int[8] { 0x00, 0x40, 0xe0, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe };
|
||||||
public static void CapcomInit()
|
public static void CapcomInit()
|
||||||
{
|
{
|
||||||
int i,n;
|
int i, n;
|
||||||
Machine.bRom = true;
|
Machine.bRom = true;
|
||||||
switch (Machine.sName)
|
switch (Machine.sName)
|
||||||
{
|
{
|
||||||
@ -351,7 +347,7 @@ namespace mame
|
|||||||
}
|
}
|
||||||
MC68000.m1.WriteWord(0xffc682, (short)d1);
|
MC68000.m1.WriteWord(0xffc682, (short)d1);
|
||||||
MC68000.m1.WriteWord(0xffc00e, (short)off);
|
MC68000.m1.WriteWord(0xffc00e, (short)off);
|
||||||
sf_bg_scroll_w((byte)(d1>>8));
|
sf_bg_scroll_w((byte)(d1 >> 8));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,4 @@
|
|||||||
using System;
|
namespace mame
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace mame
|
|
||||||
{
|
{
|
||||||
public partial class Drawgfx
|
public partial class Drawgfx
|
||||||
{
|
{
|
||||||
@ -163,7 +158,7 @@ namespace mame
|
|||||||
int colorbase = 0x200 + 0x10 * color;
|
int colorbase = 0x200 + 0x10 * color;
|
||||||
blockmove_8toN_transpen16_sf(bb1, code, sw, sh, 0x10, ls, ts, flipx, flipy, dw, dh, colorbase, sy, sx);
|
blockmove_8toN_transpen16_sf(bb1, code, sw, sh, 0x10, ls, ts, flipx, flipy, dw, dh, colorbase, sy, sx);
|
||||||
}
|
}
|
||||||
public static void blockmove_8toN_transpen16_sf(byte[] bb1, int code, int srcwidth, int srcheight, int srcmodulo,int leftskip, int topskip, int flipx, int flipy,int dstwidth, int dstheight, int colorbase, int offsety, int offsetx)
|
public static void blockmove_8toN_transpen16_sf(byte[] bb1, int code, int srcwidth, int srcheight, int srcmodulo, int leftskip, int topskip, int flipx, int flipy, int dstwidth, int dstheight, int colorbase, int offsety, int offsetx)
|
||||||
{
|
{
|
||||||
int ydir, xdir, col, i, j;
|
int ydir, xdir, col, i, j;
|
||||||
int srcdata_offset = code * 0x100;
|
int srcdata_offset = code * 0x100;
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
using System.Drawing;
|
|
||||||
using System.Drawing.Imaging;
|
|
||||||
|
|
||||||
namespace mame
|
namespace mame
|
||||||
{
|
{
|
||||||
public partial class Capcom
|
public partial class Capcom
|
||||||
@ -10,731 +8,5 @@ namespace mame
|
|||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
public static Bitmap GetBg_gng()
|
|
||||||
{
|
|
||||||
int i1, i2, iOffset, i3, i4;
|
|
||||||
int rows, cols, width, height;
|
|
||||||
int tilewidth, tileheight;
|
|
||||||
int tile_index;
|
|
||||||
tilewidth = 0x10;
|
|
||||||
tileheight = tilewidth;
|
|
||||||
rows = 0x20;
|
|
||||||
cols = 0x20;
|
|
||||||
width = tilewidth * cols;
|
|
||||||
height = tileheight * rows;
|
|
||||||
int iByte;
|
|
||||||
int code, color;
|
|
||||||
int group, flags, attributes = 0;
|
|
||||||
int pen_data_offset, palette_base;
|
|
||||||
int x0 = 0, y0 = 0, dx0 = 0, dy0 = 0;
|
|
||||||
Color c1 = new Color();
|
|
||||||
Bitmap bm1;
|
|
||||||
bm1 = new Bitmap(width, height);
|
|
||||||
BitmapData bmData;
|
|
||||||
bmData = bm1.LockBits(new Rectangle(0, 0, bm1.Width, bm1.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
|
|
||||||
unsafe
|
|
||||||
{
|
|
||||||
byte* ptr = (byte*)(bmData.Scan0);
|
|
||||||
byte* ptr2 = (byte*)0;
|
|
||||||
for (i3 = 0; i3 < cols; i3++)
|
|
||||||
{
|
|
||||||
for (i4 = 0; i4 < rows; i4++)
|
|
||||||
{
|
|
||||||
tile_index = i3 * rows + i4;
|
|
||||||
int base_offset = 2 * tile_index;
|
|
||||||
int attr = gng_bgvideoram[tile_index + 0x400];
|
|
||||||
color = attr & 0x07;
|
|
||||||
code = gng_bgvideoram[tile_index] + ((attr & 0xc0) << 2);
|
|
||||||
code = code % bg_tilemap.total_elements;
|
|
||||||
pen_data_offset = code * 0x100;
|
|
||||||
palette_base = color * 8;
|
|
||||||
flags = (((attr & 0x30) >> 4) & 0x03) ^ (attributes & 0x03);
|
|
||||||
group = (attr & 0x08) >> 3;
|
|
||||||
if (flags == 0)
|
|
||||||
{
|
|
||||||
x0 = tilewidth * i3;
|
|
||||||
y0 = tileheight * i4;
|
|
||||||
dx0 = 1;
|
|
||||||
dy0 = 1;
|
|
||||||
}
|
|
||||||
else if (flags == 1)
|
|
||||||
{
|
|
||||||
x0 = tilewidth * i3 + tilewidth - 1;
|
|
||||||
y0 = tileheight * i4;
|
|
||||||
dx0 = -1;
|
|
||||||
dy0 = 1;
|
|
||||||
}
|
|
||||||
else if (flags == 2)
|
|
||||||
{
|
|
||||||
x0 = tilewidth * i3;
|
|
||||||
y0 = tileheight * i4 + tileheight - 1;
|
|
||||||
dx0 = 1;
|
|
||||||
dy0 = -1;
|
|
||||||
}
|
|
||||||
else if (flags == 3)
|
|
||||||
{
|
|
||||||
x0 = tilewidth * i3 + tilewidth - 1;
|
|
||||||
y0 = tileheight * i4 + tileheight - 1;
|
|
||||||
dx0 = -1;
|
|
||||||
dy0 = -1;
|
|
||||||
}
|
|
||||||
for (i1 = 0; i1 < tilewidth; i1++)
|
|
||||||
{
|
|
||||||
for (i2 = 0; i2 < tileheight; i2++)
|
|
||||||
{
|
|
||||||
iOffset = pen_data_offset + i2 * 0x10 + i1;
|
|
||||||
iByte = gfx2rom[iOffset];
|
|
||||||
c1 = Color.FromArgb((int)Palette.entry_color[palette_base + iByte]);
|
|
||||||
ptr2 = ptr + ((y0 + dy0 * i2) * width + x0 + dx0 * i1) * 4;
|
|
||||||
*ptr2 = c1.B;
|
|
||||||
*(ptr2 + 1) = c1.G;
|
|
||||||
*(ptr2 + 2) = c1.R;
|
|
||||||
*(ptr2 + 3) = c1.A;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
bm1.UnlockBits(bmData);
|
|
||||||
return bm1;
|
|
||||||
}
|
|
||||||
public static Bitmap GetFg_gng()
|
|
||||||
{
|
|
||||||
int i1, i2, iOffset, i3, i4;
|
|
||||||
int rows, cols, width, height;
|
|
||||||
int tilewidth, tileheight;
|
|
||||||
int tile_index;
|
|
||||||
tilewidth = 8;
|
|
||||||
tileheight = tilewidth;
|
|
||||||
rows = 0x20;
|
|
||||||
cols = 0x20;
|
|
||||||
width = tilewidth * cols;
|
|
||||||
height = tileheight * rows;
|
|
||||||
int iByte;
|
|
||||||
int code, color;
|
|
||||||
int group, flags, attributes = 0;
|
|
||||||
int pen_data_offset, palette_base;
|
|
||||||
int x0 = 0, y0 = 0, dx0 = 0, dy0 = 0;
|
|
||||||
Color c1 = new Color();
|
|
||||||
Bitmap bm1;
|
|
||||||
bm1 = new Bitmap(width, height);
|
|
||||||
BitmapData bmData;
|
|
||||||
bmData = bm1.LockBits(new Rectangle(0, 0, bm1.Width, bm1.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
|
|
||||||
unsafe
|
|
||||||
{
|
|
||||||
byte* ptr = (byte*)(bmData.Scan0);
|
|
||||||
byte* ptr2 = (byte*)0;
|
|
||||||
for (i3 = 0; i3 < cols; i3++)
|
|
||||||
{
|
|
||||||
for (i4 = 0; i4 < rows; i4++)
|
|
||||||
{
|
|
||||||
tile_index = i4 * cols + i3;
|
|
||||||
int base_offset = 2 * tile_index;
|
|
||||||
int attr = Capcom.gng_fgvideoram[tile_index + 0x400];
|
|
||||||
color = attr & 0x0f;
|
|
||||||
code = Capcom.gng_fgvideoram[tile_index] + ((attr & 0xc0) << 2);
|
|
||||||
code = code % fg_tilemap.total_elements;
|
|
||||||
pen_data_offset = code * 0x40;
|
|
||||||
palette_base = 0x80 + color * 4;
|
|
||||||
flags = (((attr & 0x30) >> 4) & 0x03) ^ (attributes & 0x03);
|
|
||||||
group = 0;
|
|
||||||
if (flags == 0)
|
|
||||||
{
|
|
||||||
x0 = tilewidth * i3;
|
|
||||||
y0 = tileheight * i4;
|
|
||||||
dx0 = 1;
|
|
||||||
dy0 = 1;
|
|
||||||
}
|
|
||||||
else if (flags == 1)
|
|
||||||
{
|
|
||||||
x0 = tilewidth * i3 + tilewidth - 1;
|
|
||||||
y0 = tileheight * i4;
|
|
||||||
dx0 = -1;
|
|
||||||
dy0 = 1;
|
|
||||||
}
|
|
||||||
else if (flags == 2)
|
|
||||||
{
|
|
||||||
x0 = tilewidth * i3;
|
|
||||||
y0 = tileheight * i4 + tileheight - 1;
|
|
||||||
dx0 = 1;
|
|
||||||
dy0 = -1;
|
|
||||||
}
|
|
||||||
else if (flags == 3)
|
|
||||||
{
|
|
||||||
x0 = tilewidth * i3 + tilewidth - 1;
|
|
||||||
y0 = tileheight * i4 + tileheight - 1;
|
|
||||||
dx0 = -1;
|
|
||||||
dy0 = -1;
|
|
||||||
}
|
|
||||||
for (i1 = 0; i1 < tilewidth; i1++)
|
|
||||||
{
|
|
||||||
for (i2 = 0; i2 < tileheight; i2++)
|
|
||||||
{
|
|
||||||
iOffset = pen_data_offset + i2 * 8 + i1;
|
|
||||||
iByte = gfx1rom[iOffset];
|
|
||||||
if (iByte != 3)
|
|
||||||
{
|
|
||||||
c1 = Color.FromArgb((int)Palette.entry_color[palette_base + iByte]);
|
|
||||||
ptr2 = ptr + ((y0 + dy0 * i2) * width + x0 + dx0 * i1) * 4;
|
|
||||||
*ptr2 = c1.B;
|
|
||||||
*(ptr2 + 1) = c1.G;
|
|
||||||
*(ptr2 + 2) = c1.R;
|
|
||||||
*(ptr2 + 3) = c1.A;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
bm1.UnlockBits(bmData);
|
|
||||||
return bm1;
|
|
||||||
}
|
|
||||||
public static Bitmap GetSprite_gng()
|
|
||||||
{
|
|
||||||
Bitmap bm1;
|
|
||||||
int offs;
|
|
||||||
int i5, i6;
|
|
||||||
int xdir, ydir, offx, offy,color;
|
|
||||||
int iByte;
|
|
||||||
Color c1 = new Color();
|
|
||||||
bm1 = new Bitmap(256, 256);
|
|
||||||
for (offs = 0x200 - 4; offs >= 0; offs -= 4)
|
|
||||||
{
|
|
||||||
byte attributes = Generic.buffered_spriteram[offs + 1];
|
|
||||||
int sx = Generic.buffered_spriteram[offs + 3] - 0x100 * (attributes & 0x01);
|
|
||||||
int sy = Generic.buffered_spriteram[offs + 2];
|
|
||||||
int flipx = attributes & 0x04;
|
|
||||||
int flipy = attributes & 0x08;
|
|
||||||
if (Generic.buffered_spriteram[offs] == 0 && Generic.buffered_spriteram[offs + 1] == 0 && Generic.buffered_spriteram[offs + 2] == 0 && Generic.buffered_spriteram[offs + 3] == 0)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
color=(attributes >> 4) & 3;
|
|
||||||
if (Generic.flip_screen_get() != 0)
|
|
||||||
{
|
|
||||||
sx = 240 - sx;
|
|
||||||
sy = 240 - sy;
|
|
||||||
flipx = (flipx == 0 ? 1 : 0);
|
|
||||||
flipy = (flipy == 0 ? 1 : 0);
|
|
||||||
}
|
|
||||||
if (flipx != 0)
|
|
||||||
{
|
|
||||||
offx = 0x0f;
|
|
||||||
xdir = -1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
offx = 0;
|
|
||||||
xdir = 1;
|
|
||||||
}
|
|
||||||
if (flipy != 0)
|
|
||||||
{
|
|
||||||
offy = 0x0f;
|
|
||||||
ydir = -1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
offy = 0;
|
|
||||||
ydir = 1;
|
|
||||||
}
|
|
||||||
for (i5 = 0; i5 < 0x10; i5++)
|
|
||||||
{
|
|
||||||
for (i6 = 0; i6 < 0x10; i6++)
|
|
||||||
{
|
|
||||||
if (sx + offx + xdir * i5 >= 0 && sx + offx + xdir * i5 < 0x100 && sy + offy + ydir * i6 >= 0 && sy + offy + ydir * i6 < 0x100)
|
|
||||||
{
|
|
||||||
iByte = gfx3rom[(Generic.buffered_spriteram[offs] + ((attributes << 2) & 0x300)) * 0x100 + i5 + i6 * 0x10];
|
|
||||||
if (iByte != 0x0f)
|
|
||||||
{
|
|
||||||
c1 = Color.FromArgb((int)Palette.entry_color[0x40 + 0x10 * color + iByte]);
|
|
||||||
bm1.SetPixel(sx + offx + xdir * i5, sy + offy + ydir * i6, c1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return bm1;
|
|
||||||
}
|
|
||||||
public static Bitmap GetAllGDI_gng()
|
|
||||||
{
|
|
||||||
Bitmap bm1 = new Bitmap(0x200, 0x100), bm2;
|
|
||||||
Graphics g = Graphics.FromImage(bm1);
|
|
||||||
g.Clear(Color.Transparent);
|
|
||||||
if (bBg)
|
|
||||||
{
|
|
||||||
bm2 = GetBg_gng();
|
|
||||||
g.DrawImage(bm2, -(scrollx[0] + 256 * scrollx[1]), 0);
|
|
||||||
}
|
|
||||||
if (bSprite)
|
|
||||||
{
|
|
||||||
bm2 = GetSprite_gng();
|
|
||||||
g.DrawImage(bm2, 0, 0);
|
|
||||||
}
|
|
||||||
if (bFg)
|
|
||||||
{
|
|
||||||
bm2 = GetFg_gng();
|
|
||||||
g.DrawImage(bm2, -(scrolly[0] + 256 * scrolly[1]), 0);
|
|
||||||
}
|
|
||||||
return bm1;
|
|
||||||
}
|
|
||||||
public static Bitmap GetBg_sf()
|
|
||||||
{
|
|
||||||
int i1, i2, iOffset, i3, i4;
|
|
||||||
int rows, cols, width, height;
|
|
||||||
int tilewidth, tileheight;
|
|
||||||
int tile_index;
|
|
||||||
tilewidth = 0x10;
|
|
||||||
tileheight = tilewidth;
|
|
||||||
rows = 0x10;
|
|
||||||
cols = 0x800;
|
|
||||||
width = tilewidth * cols;
|
|
||||||
height = tileheight * rows;
|
|
||||||
int iByte;
|
|
||||||
int code, color;
|
|
||||||
int group, flags, attributes = 0;
|
|
||||||
int pen_data_offset, palette_base;
|
|
||||||
int x0 = 0, y0 = 0, dx0 = 0, dy0 = 0;
|
|
||||||
Color c1 = new Color();
|
|
||||||
Bitmap bm1;
|
|
||||||
bm1 = new Bitmap(width, height);
|
|
||||||
BitmapData bmData;
|
|
||||||
bmData = bm1.LockBits(new Rectangle(0, 0, bm1.Width, bm1.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
|
|
||||||
unsafe
|
|
||||||
{
|
|
||||||
byte* ptr = (byte*)(bmData.Scan0);
|
|
||||||
byte* ptr2 = (byte*)0;
|
|
||||||
for (i3 = 0; i3 < cols; i3++)
|
|
||||||
{
|
|
||||||
for (i4 = 0; i4 < rows; i4++)
|
|
||||||
{
|
|
||||||
tile_index = i3 * rows + i4;
|
|
||||||
int base_offset = 2 * tile_index;
|
|
||||||
int attr = gfx5rom[base_offset + 0x10000];
|
|
||||||
color = gfx5rom[base_offset];
|
|
||||||
code = (gfx5rom[base_offset + 0x10000 + 1] << 8) | gfx5rom[base_offset + 1];
|
|
||||||
code = code % bg_tilemap.total_elements;
|
|
||||||
pen_data_offset = code * 0x100;
|
|
||||||
palette_base = color * 0x10;
|
|
||||||
group = 0;
|
|
||||||
flags = (attr & 0x03) ^ (attributes & 0x03);
|
|
||||||
pen_data_offset = code * 0x100;
|
|
||||||
if (flags == 0)
|
|
||||||
{
|
|
||||||
x0 = tilewidth * i3;
|
|
||||||
y0 = tileheight * i4;
|
|
||||||
dx0 = 1;
|
|
||||||
dy0 = 1;
|
|
||||||
}
|
|
||||||
else if (flags == 1)
|
|
||||||
{
|
|
||||||
x0 = tilewidth * i3 + tilewidth - 1;
|
|
||||||
y0 = tileheight * i4;
|
|
||||||
dx0 = -1;
|
|
||||||
dy0 = 1;
|
|
||||||
}
|
|
||||||
else if (flags == 2)
|
|
||||||
{
|
|
||||||
x0 = tilewidth * i3;
|
|
||||||
y0 = tileheight * i4 + tileheight - 1;
|
|
||||||
dx0 = 1;
|
|
||||||
dy0 = -1;
|
|
||||||
}
|
|
||||||
else if (flags == 3)
|
|
||||||
{
|
|
||||||
x0 = tilewidth * i3 + tilewidth - 1;
|
|
||||||
y0 = tileheight * i4 + tileheight - 1;
|
|
||||||
dx0 = -1;
|
|
||||||
dy0 = -1;
|
|
||||||
}
|
|
||||||
for (i1 = 0; i1 < tilewidth; i1++)
|
|
||||||
{
|
|
||||||
for (i2 = 0; i2 < tileheight; i2++)
|
|
||||||
{
|
|
||||||
iOffset = pen_data_offset + i2 * 0x10 + i1;
|
|
||||||
iByte = gfx1rom[iOffset];
|
|
||||||
if (iByte == 0)
|
|
||||||
{
|
|
||||||
c1 = Color.Transparent;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (palette_base + iByte >= 0x400)
|
|
||||||
{
|
|
||||||
c1 = Color.Transparent;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
c1 = Color.FromArgb((int)Palette.entry_color[palette_base + iByte]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ptr2 = ptr + ((y0 + dy0 * i2) * width + x0 + dx0 * i1) * 4;
|
|
||||||
*ptr2 = c1.B;
|
|
||||||
*(ptr2 + 1) = c1.G;
|
|
||||||
*(ptr2 + 2) = c1.R;
|
|
||||||
*(ptr2 + 3) = c1.A;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
bm1.UnlockBits(bmData);
|
|
||||||
return bm1;
|
|
||||||
}
|
|
||||||
public static Bitmap GetFg_sf()
|
|
||||||
{
|
|
||||||
int i1, i2, iOffset, i3, i4;
|
|
||||||
int rows, cols, width, height;
|
|
||||||
int tilewidth, tileheight;
|
|
||||||
int tile_index;
|
|
||||||
tilewidth = 0x10;
|
|
||||||
tileheight = tilewidth;
|
|
||||||
rows = 0x10;
|
|
||||||
cols = 0x800;
|
|
||||||
width = tilewidth * cols;
|
|
||||||
height = tileheight * rows;
|
|
||||||
int iByte;
|
|
||||||
int code,color;
|
|
||||||
int group, flags,attributes=0;
|
|
||||||
int pen_data_offset, palette_base;
|
|
||||||
int x0 = 0, y0 = 0, dx0 = 0, dy0 = 0;
|
|
||||||
Color c1 = new Color();
|
|
||||||
Bitmap bm1;
|
|
||||||
bm1 = new Bitmap(width, height);
|
|
||||||
BitmapData bmData;
|
|
||||||
bmData = bm1.LockBits(new Rectangle(0, 0, bm1.Width, bm1.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
|
|
||||||
unsafe
|
|
||||||
{
|
|
||||||
byte* ptr = (byte*)(bmData.Scan0);
|
|
||||||
byte* ptr2 = (byte*)0;
|
|
||||||
for (i3 = 0; i3 < cols; i3++)
|
|
||||||
{
|
|
||||||
for (i4 = 0; i4 < rows; i4++)
|
|
||||||
{
|
|
||||||
tile_index = i3 * rows + i4;
|
|
||||||
int base_offset = 0x20000 + 2 * tile_index;
|
|
||||||
int attr = gfx5rom[base_offset + 0x10000];
|
|
||||||
color = gfx5rom[base_offset];
|
|
||||||
code = (gfx5rom[base_offset + 0x10000 + 1] << 8) | gfx5rom[base_offset + 1];
|
|
||||||
code = code % fg_tilemap.total_elements;
|
|
||||||
pen_data_offset = code * 0x100;
|
|
||||||
palette_base = 0x100 + color * 0x10;
|
|
||||||
group = 0;
|
|
||||||
flags = (attr & 0x03) ^ (attributes & 0x03);
|
|
||||||
pen_data_offset = code * 0x100;
|
|
||||||
palette_base = 0x100+ 0x10 * color;
|
|
||||||
if (flags == 0)
|
|
||||||
{
|
|
||||||
x0 = tilewidth * i3;
|
|
||||||
y0 = tileheight * i4;
|
|
||||||
dx0 = 1;
|
|
||||||
dy0 = 1;
|
|
||||||
}
|
|
||||||
else if (flags == 1)
|
|
||||||
{
|
|
||||||
x0 = tilewidth * i3 + tilewidth - 1;
|
|
||||||
y0 = tileheight * i4;
|
|
||||||
dx0 = -1;
|
|
||||||
dy0 = 1;
|
|
||||||
}
|
|
||||||
else if (flags == 2)
|
|
||||||
{
|
|
||||||
x0 = tilewidth * i3;
|
|
||||||
y0 = tileheight * i4 + tileheight - 1;
|
|
||||||
dx0 = 1;
|
|
||||||
dy0 = -1;
|
|
||||||
}
|
|
||||||
else if (flags == 3)
|
|
||||||
{
|
|
||||||
x0 = tilewidth * i3 + tilewidth - 1;
|
|
||||||
y0 = tileheight * i4 + tileheight - 1;
|
|
||||||
dx0 = -1;
|
|
||||||
dy0 = -1;
|
|
||||||
}
|
|
||||||
for (i1 = 0; i1 < tilewidth; i1++)
|
|
||||||
{
|
|
||||||
for (i2 = 0; i2 < tileheight; i2++)
|
|
||||||
{
|
|
||||||
iOffset = pen_data_offset + i2 * 0x10 + i1;
|
|
||||||
iByte = gfx2rom[iOffset];
|
|
||||||
if (iByte == 15)
|
|
||||||
{
|
|
||||||
c1 = Color.Transparent;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
c1 = Color.FromArgb((int)Palette.entry_color[palette_base + iByte]);
|
|
||||||
}
|
|
||||||
ptr2 = ptr + ((y0 + dy0 * i2) * width + x0 + dx0 * i1) * 4;
|
|
||||||
*ptr2 = c1.B;
|
|
||||||
*(ptr2 + 1) = c1.G;
|
|
||||||
*(ptr2 + 2) = c1.R;
|
|
||||||
*(ptr2 + 3) = c1.A;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
bm1.UnlockBits(bmData);
|
|
||||||
return bm1;
|
|
||||||
}
|
|
||||||
public static Bitmap GetTx_sf()
|
|
||||||
{
|
|
||||||
int i1, i2, iOffset, i3, i4;
|
|
||||||
int rows, cols, width, height;
|
|
||||||
int tilewidth, tileheight;
|
|
||||||
int tile_index;
|
|
||||||
tilewidth = 0x8;
|
|
||||||
tileheight = tilewidth;
|
|
||||||
rows = 0x20;
|
|
||||||
cols = 0x40;
|
|
||||||
width = tilewidth * cols;
|
|
||||||
height = tileheight * rows;
|
|
||||||
int iByte;
|
|
||||||
int code, color;
|
|
||||||
int group, flags, attributes = 0;
|
|
||||||
int pen_data_offset, palette_base;
|
|
||||||
int x0 = 0, y0 = 0, dx0 = 0, dy0 = 0;
|
|
||||||
Color c1 = new Color();
|
|
||||||
Bitmap bm1;
|
|
||||||
bm1 = new Bitmap(width, height);
|
|
||||||
BitmapData bmData;
|
|
||||||
bmData = bm1.LockBits(new Rectangle(0, 0, bm1.Width, bm1.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
|
|
||||||
unsafe
|
|
||||||
{
|
|
||||||
byte* ptr = (byte*)(bmData.Scan0);
|
|
||||||
byte* ptr2 = (byte*)0;
|
|
||||||
for (i3 = 0; i3 < cols; i3++)
|
|
||||||
{
|
|
||||||
for (i4 = 0; i4 < rows; i4++)
|
|
||||||
{
|
|
||||||
tile_index = i4 * cols + i3;
|
|
||||||
int base_offset = 0x20000 + 2 * tile_index;
|
|
||||||
code = Capcom.sf_videoram[tile_index];
|
|
||||||
color = code >> 12;
|
|
||||||
flags = (((code & 0xc00) >> 10) & 0x03) ^ (attributes & 0x03);
|
|
||||||
code = (code & 0x3ff) % tx_tilemap.total_elements;
|
|
||||||
pen_data_offset = code * 0x40;
|
|
||||||
palette_base = 0x300 + color * 4;
|
|
||||||
group = 0;
|
|
||||||
if (flags == 0)
|
|
||||||
{
|
|
||||||
x0 = tilewidth * i3;
|
|
||||||
y0 = tileheight * i4;
|
|
||||||
dx0 = 1;
|
|
||||||
dy0 = 1;
|
|
||||||
}
|
|
||||||
else if (flags == 1)
|
|
||||||
{
|
|
||||||
x0 = tilewidth * i3 + tilewidth - 1;
|
|
||||||
y0 = tileheight * i4;
|
|
||||||
dx0 = -1;
|
|
||||||
dy0 = 1;
|
|
||||||
}
|
|
||||||
else if (flags == 2)
|
|
||||||
{
|
|
||||||
x0 = tilewidth * i3;
|
|
||||||
y0 = tileheight * i4 + tileheight - 1;
|
|
||||||
dx0 = 1;
|
|
||||||
dy0 = -1;
|
|
||||||
}
|
|
||||||
else if (flags == 3)
|
|
||||||
{
|
|
||||||
x0 = tilewidth * i3 + tilewidth - 1;
|
|
||||||
y0 = tileheight * i4 + tileheight - 1;
|
|
||||||
dx0 = -1;
|
|
||||||
dy0 = -1;
|
|
||||||
}
|
|
||||||
for (i1 = 0; i1 < tilewidth; i1++)
|
|
||||||
{
|
|
||||||
for (i2 = 0; i2 < tileheight; i2++)
|
|
||||||
{
|
|
||||||
iOffset = pen_data_offset + i2 * 0x8 + i1;
|
|
||||||
iByte = gfx4rom[iOffset];
|
|
||||||
if (iByte == 3)
|
|
||||||
{
|
|
||||||
c1 = Color.Transparent;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
c1 = Color.FromArgb((int)Palette.entry_color[palette_base + iByte]);
|
|
||||||
}
|
|
||||||
ptr2 = ptr + ((y0 + dy0 * i2) * width + x0 + dx0 * i1) * 4;
|
|
||||||
*ptr2 = c1.B;
|
|
||||||
*(ptr2 + 1) = c1.G;
|
|
||||||
*(ptr2 + 2) = c1.R;
|
|
||||||
*(ptr2 + 3) = c1.A;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
bm1.UnlockBits(bmData);
|
|
||||||
return bm1;
|
|
||||||
}
|
|
||||||
public static Bitmap GetSprite_sf()
|
|
||||||
{
|
|
||||||
Bitmap bm1;
|
|
||||||
int offs;
|
|
||||||
int i5, i6;
|
|
||||||
int xdir, ydir, offx, offy;
|
|
||||||
int iByte1,iByte2,iByte3,iByte4;
|
|
||||||
Color c11 = new Color(),c12=new Color(),c13=new Color(),c14=new Color();
|
|
||||||
bm1 = new Bitmap(512,256);
|
|
||||||
for (offs = 0x1000 - 0x20; offs >= 0; offs -= 0x20)
|
|
||||||
{
|
|
||||||
int c = sf_objectram[offs];
|
|
||||||
int attr = sf_objectram[offs + 1];
|
|
||||||
int sy = sf_objectram[offs + 2];
|
|
||||||
int sx = sf_objectram[offs + 3];
|
|
||||||
int color = attr & 0x000f;
|
|
||||||
int flipx = attr & 0x0100;
|
|
||||||
int flipy = attr & 0x0200;
|
|
||||||
if ((attr & 0x400) != 0)
|
|
||||||
{
|
|
||||||
int c1, c2, c3, c4, t;
|
|
||||||
if (Generic.flip_screen_get() != 0)
|
|
||||||
{
|
|
||||||
sx = 480 - sx;
|
|
||||||
sy = 224 - sy;
|
|
||||||
flipx = (flipx == 0) ? 1 : 0;
|
|
||||||
flipy = (flipy == 0) ? 1 : 0;
|
|
||||||
}
|
|
||||||
c1 = c;
|
|
||||||
c2 = c + 1;
|
|
||||||
c3 = c + 16;
|
|
||||||
c4 = c + 17;
|
|
||||||
if (flipx != 0)
|
|
||||||
{
|
|
||||||
t = c1; c1 = c2; c2 = t;
|
|
||||||
t = c3; c3 = c4; c4 = t;
|
|
||||||
}
|
|
||||||
if (flipy != 0)
|
|
||||||
{
|
|
||||||
t = c1; c1 = c3; c3 = t;
|
|
||||||
t = c2; c2 = c4; c4 = t;
|
|
||||||
}
|
|
||||||
if (flipx != 0)
|
|
||||||
{
|
|
||||||
offx = 0x0f;
|
|
||||||
xdir = -1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
offx = 0;
|
|
||||||
xdir = 1;
|
|
||||||
}
|
|
||||||
if (flipy != 0)
|
|
||||||
{
|
|
||||||
offy = 0x0f;
|
|
||||||
ydir = -1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
offy = 0;
|
|
||||||
ydir = 1;
|
|
||||||
}
|
|
||||||
for (i5 = 0; i5 < 0x10; i5++)
|
|
||||||
{
|
|
||||||
for (i6 = 0; i6 < 0x10; i6++)
|
|
||||||
{
|
|
||||||
iByte1 = gfx3rom[(sf_invert(c1)) * 0x100 + i5 + i6 * 0x10];
|
|
||||||
iByte2 = gfx3rom[(sf_invert(c2)) * 0x100 + i5 + i6 * 0x10];
|
|
||||||
iByte3 = gfx3rom[(sf_invert(c3)) * 0x100 + i5 + i6 * 0x10];
|
|
||||||
iByte4 = gfx3rom[(sf_invert(c4)) * 0x100 + i5 + i6 * 0x10];
|
|
||||||
if (iByte1 != 0x0f)
|
|
||||||
{
|
|
||||||
c11 = Color.FromArgb((int)Palette.entry_color[0x200 + 0x10 * color + iByte1]);
|
|
||||||
bm1.SetPixel(sx + offx + xdir * i5, sy + offy + ydir * i6, c11);
|
|
||||||
}
|
|
||||||
if (iByte2 != 0x0f)
|
|
||||||
{
|
|
||||||
c12 = Color.FromArgb((int)Palette.entry_color[0x200 + 0x10 * color + iByte2]);
|
|
||||||
bm1.SetPixel(sx + 16 + offx + xdir * i5, sy + offy + ydir * i6, c12);
|
|
||||||
}
|
|
||||||
if (iByte3 != 0x0f)
|
|
||||||
{
|
|
||||||
bm1.SetPixel(sx + offx + xdir * i5, sy + 16 + offy + ydir * i6, c13);
|
|
||||||
c13 = Color.FromArgb((int)Palette.entry_color[0x200 + 0x10 * color + iByte3]);
|
|
||||||
}
|
|
||||||
if (iByte4 != 0x0f)
|
|
||||||
{
|
|
||||||
c14 = Color.FromArgb((int)Palette.entry_color[0x200 + 0x10 * color + iByte4]);
|
|
||||||
bm1.SetPixel(sx + 16 + offx + xdir * i5, sy + 16 + offy + ydir * i6, c14);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (Generic.flip_screen_get() != 0)
|
|
||||||
{
|
|
||||||
sx = 496 - sx;
|
|
||||||
sy = 240 - sy;
|
|
||||||
flipx = (flipx == 0) ? 1 : 0;
|
|
||||||
flipy = (flipy == 0) ? 1 : 0;
|
|
||||||
}
|
|
||||||
if (flipx != 0)
|
|
||||||
{
|
|
||||||
offx = 0x0f;
|
|
||||||
xdir = -1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
offx = 0;
|
|
||||||
xdir = 1;
|
|
||||||
}
|
|
||||||
if (flipy != 0)
|
|
||||||
{
|
|
||||||
offy = 0x0f;
|
|
||||||
ydir = -1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
offy = 0;
|
|
||||||
ydir = 1;
|
|
||||||
}
|
|
||||||
for (i5 = 0; i5 < 0x10; i5++)
|
|
||||||
{
|
|
||||||
for (i6 = 0; i6 < 0x10; i6++)
|
|
||||||
{
|
|
||||||
iByte1 = gfx3rom[(sf_invert(c)) * 0x100 + i5 + i6 * 0x10];
|
|
||||||
if (iByte1 != 0x0f)
|
|
||||||
{
|
|
||||||
c11 = Color.FromArgb((int)Palette.entry_color[0x200 + 0x10 * color + iByte1]);
|
|
||||||
bm1.SetPixel(sx + offx + xdir * i5, sy + offy + ydir * i6, c11);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return bm1;
|
|
||||||
}
|
|
||||||
public static Bitmap GetAllGDI_sf()
|
|
||||||
{
|
|
||||||
Bitmap bm1 = new Bitmap(0x200, 0x100), bm2;
|
|
||||||
Graphics g = Graphics.FromImage(bm1);
|
|
||||||
g.Clear(Color.Transparent);
|
|
||||||
if (bBg)
|
|
||||||
{
|
|
||||||
bm2 = GetBg_sf();
|
|
||||||
g.DrawImage(bm2, -bg_scrollx, 0);
|
|
||||||
}
|
|
||||||
if(bFg)
|
|
||||||
{
|
|
||||||
bm2 = GetFg_sf();
|
|
||||||
g.DrawImage(bm2, -fg_scrollx, 0);
|
|
||||||
}
|
|
||||||
if(bTx)
|
|
||||||
{
|
|
||||||
bm2 = GetTx_sf();
|
|
||||||
g.DrawImage(bm2, 0,0);
|
|
||||||
}
|
|
||||||
if(bSprite)
|
|
||||||
{
|
|
||||||
bm2 = GetSprite_sf();
|
|
||||||
g.DrawImage(bm2, 0,0);
|
|
||||||
}
|
|
||||||
return bm1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,4 @@
|
|||||||
using System;
|
namespace mame
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace mame
|
|
||||||
{
|
{
|
||||||
public partial class Capcom
|
public partial class Capcom
|
||||||
{
|
{
|
||||||
|
@ -895,7 +895,7 @@ namespace mame
|
|||||||
}
|
}
|
||||||
public static void record_port_sf()
|
public static void record_port_sf()
|
||||||
{
|
{
|
||||||
if (short0 != short0_old || short1!=short1_old|| short2!=short2_old||shorts!=shorts_old||shortc!=shortc_old|| sbyte1 != sbyte1_old || sbyte2 != sbyte2_old || sbyte3 != sbyte3_old || sbyte4 != sbyte4_old)
|
if (short0 != short0_old || short1 != short1_old || short2 != short2_old || shorts != shorts_old || shortc != shortc_old || sbyte1 != sbyte1_old || sbyte2 != sbyte2_old || sbyte3 != sbyte3_old || sbyte4 != sbyte4_old)
|
||||||
{
|
{
|
||||||
short0_old = short0;
|
short0_old = short0;
|
||||||
short1_old = short1;
|
short1_old = short1;
|
||||||
|
@ -1,8 +1,4 @@
|
|||||||
using System;
|
using cpu.z80;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using cpu.z80;
|
|
||||||
|
|
||||||
namespace mame
|
namespace mame
|
||||||
{
|
{
|
||||||
@ -10,8 +6,8 @@ namespace mame
|
|||||||
{
|
{
|
||||||
public static sbyte sbyte1, sbyte2, sbyte3, sbyte4;
|
public static sbyte sbyte1, sbyte2, sbyte3, sbyte4;
|
||||||
public static sbyte sbyte1_old, sbyte2_old, sbyte3_old, sbyte4_old;
|
public static sbyte sbyte1_old, sbyte2_old, sbyte3_old, sbyte4_old;
|
||||||
public static short short0, short1,short2,shorts,shortc;
|
public static short short0, short1, short2, shorts, shortc;
|
||||||
public static short short0_old, short1_old,short2_old,shorts_old,shortc_old;
|
public static short short0_old, short1_old, short2_old, shorts_old, shortc_old;
|
||||||
public static byte bytes, byte1, byte2;
|
public static byte bytes, byte1, byte2;
|
||||||
public static byte bytes_old, byte1_old, byte2_old;
|
public static byte bytes_old, byte1_old, byte2_old;
|
||||||
public static byte MReadOpByte_gng(ushort address)
|
public static byte MReadOpByte_gng(ushort address)
|
||||||
@ -852,11 +848,11 @@ namespace mame
|
|||||||
else if (address >= 0xff8000 && address + 1 <= 0xffdfff)
|
else if (address >= 0xff8000 && address + 1 <= 0xffdfff)
|
||||||
{
|
{
|
||||||
int offset = address - 0xff8000;
|
int offset = address - 0xff8000;
|
||||||
result = (short)(Memory.mainram[offset]*0x100+Memory.mainram[offset+1]);
|
result = (short)(Memory.mainram[offset] * 0x100 + Memory.mainram[offset + 1]);
|
||||||
}
|
}
|
||||||
else if (address >= 0xffe000 && address + 1 <= 0xffffff)
|
else if (address >= 0xffe000 && address + 1 <= 0xffffff)
|
||||||
{
|
{
|
||||||
int offset = (address - 0xffe000)/2;
|
int offset = (address - 0xffe000) / 2;
|
||||||
result = (short)sf_objectram[offset];
|
result = (short)sf_objectram[offset];
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
@ -960,7 +956,7 @@ namespace mame
|
|||||||
else if (address >= 0x800000 && address + 3 <= 0x800fff)
|
else if (address >= 0x800000 && address + 3 <= 0x800fff)
|
||||||
{
|
{
|
||||||
int offset = (address - 0x800000) / 2;
|
int offset = (address - 0x800000) / 2;
|
||||||
result = (int)(sf_videoram[offset]*0x10000+sf_videoram[offset+1]);
|
result = (int)(sf_videoram[offset] * 0x10000 + sf_videoram[offset + 1]);
|
||||||
}
|
}
|
||||||
else if (address >= 0xff8000 && address + 3 <= 0xffdfff)
|
else if (address >= 0xff8000 && address + 3 <= 0xffdfff)
|
||||||
{
|
{
|
||||||
@ -1140,7 +1136,7 @@ namespace mame
|
|||||||
else if (address >= 0xff8000 && address + 1 <= 0xffdfff)
|
else if (address >= 0xff8000 && address + 1 <= 0xffdfff)
|
||||||
{
|
{
|
||||||
int offset = address - 0xff8000;
|
int offset = address - 0xff8000;
|
||||||
Memory.mainram[offset] = (byte)(value>>8);
|
Memory.mainram[offset] = (byte)(value >> 8);
|
||||||
Memory.mainram[offset + 1] = (byte)value;
|
Memory.mainram[offset + 1] = (byte)value;
|
||||||
}
|
}
|
||||||
else if (address >= 0xffe000 && address + 1 <= 0xffffff)
|
else if (address >= 0xffe000 && address + 1 <= 0xffffff)
|
||||||
@ -1165,7 +1161,7 @@ namespace mame
|
|||||||
else if (address >= 0x800000 && address + 3 <= 0x800fff)
|
else if (address >= 0x800000 && address + 3 <= 0x800fff)
|
||||||
{
|
{
|
||||||
int offset = (address - 0x800000) / 2;
|
int offset = (address - 0x800000) / 2;
|
||||||
sf_videoram_w(offset, (ushort)(value>>16));
|
sf_videoram_w(offset, (ushort)(value >> 16));
|
||||||
sf_videoram_w(offset + 1, (ushort)value);
|
sf_videoram_w(offset + 1, (ushort)value);
|
||||||
}
|
}
|
||||||
else if (address >= 0xb00000 && address + 3 <= 0xb007ff)
|
else if (address >= 0xb00000 && address + 3 <= 0xb007ff)
|
||||||
|
@ -1,11 +1,7 @@
|
|||||||
using System;
|
using cpu.m68000;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.IO;
|
|
||||||
using cpu.m68000;
|
|
||||||
using cpu.m6809;
|
using cpu.m6809;
|
||||||
using cpu.z80;
|
using cpu.z80;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
namespace mame
|
namespace mame
|
||||||
{
|
{
|
||||||
@ -23,7 +19,7 @@ namespace mame
|
|||||||
writer.Write(scrolly, 0, 2);
|
writer.Write(scrolly, 0, 2);
|
||||||
writer.Write(Generic.paletteram, 0, 0x100);
|
writer.Write(Generic.paletteram, 0, 0x100);
|
||||||
writer.Write(Generic.paletteram_2, 0, 0x100);
|
writer.Write(Generic.paletteram_2, 0, 0x100);
|
||||||
writer.Write(Generic.spriteram,0,0x200);
|
writer.Write(Generic.spriteram, 0, 0x200);
|
||||||
writer.Write(Generic.buffered_spriteram, 0, 0x200);
|
writer.Write(Generic.buffered_spriteram, 0, 0x200);
|
||||||
for (i = 0; i < 0x100; i++)
|
for (i = 0; i < 0x100; i++)
|
||||||
{
|
{
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.IO;
|
|
||||||
|
|
||||||
namespace mame
|
namespace mame
|
||||||
{
|
{
|
||||||
@ -426,7 +423,7 @@ namespace mame
|
|||||||
int pen_data_offset, palette_base, group;
|
int pen_data_offset, palette_base, group;
|
||||||
tile_index = col * rows + row;
|
tile_index = col * rows + row;
|
||||||
int base_offset = 0x20000 + 2 * tile_index;
|
int base_offset = 0x20000 + 2 * tile_index;
|
||||||
int attr = Capcom.gfx5rom[base_offset+0x10000];
|
int attr = Capcom.gfx5rom[base_offset + 0x10000];
|
||||||
color = Capcom.gfx5rom[base_offset];
|
color = Capcom.gfx5rom[base_offset];
|
||||||
code = (Capcom.gfx5rom[base_offset + 0x10000 + 1] << 8) | Capcom.gfx5rom[base_offset + 1];
|
code = (Capcom.gfx5rom[base_offset + 0x10000 + 1] << 8) | Capcom.gfx5rom[base_offset + 1];
|
||||||
code = code % total_elements;
|
code = code % total_elements;
|
||||||
|
@ -1,7 +1,4 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace mame
|
namespace mame
|
||||||
{
|
{
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
|
||||||
using System.IO;
|
|
||||||
|
|
||||||
namespace mame
|
namespace mame
|
||||||
{
|
{
|
||||||
@ -2455,8 +2453,8 @@ namespace mame
|
|||||||
|
|
||||||
/* EEPROM */
|
/* EEPROM */
|
||||||
Eeprom.eeprom_write_bit(data & 0x1000);
|
Eeprom.eeprom_write_bit(data & 0x1000);
|
||||||
Eeprom.eeprom_set_clock_line(((data & 0x2000)!=0) ? LineState.ASSERT_LINE : LineState.CLEAR_LINE);
|
Eeprom.eeprom_set_clock_line(((data & 0x2000) != 0) ? LineState.ASSERT_LINE : LineState.CLEAR_LINE);
|
||||||
Eeprom.eeprom_set_cs_line(((data & 0x4000)!=0) ? LineState.CLEAR_LINE : LineState.ASSERT_LINE);
|
Eeprom.eeprom_set_cs_line(((data & 0x4000) != 0) ? LineState.CLEAR_LINE : LineState.ASSERT_LINE);
|
||||||
}
|
}
|
||||||
//low 8 bits
|
//low 8 bits
|
||||||
{
|
{
|
||||||
|
@ -1,9 +1,4 @@
|
|||||||
using System;
|
namespace mame
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace mame
|
|
||||||
{
|
{
|
||||||
public partial class Drawgfx
|
public partial class Drawgfx
|
||||||
{
|
{
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1594,7 +1594,7 @@ namespace mame
|
|||||||
else if (address >= 0x618000 && address <= 0x619fff)
|
else if (address >= 0x618000 && address <= 0x619fff)
|
||||||
{
|
{
|
||||||
int offset = (address - 0x618000) / 2;
|
int offset = (address - 0x618000) / 2;
|
||||||
qsound_sharedram1_w(offset, (byte)(value>>16));
|
qsound_sharedram1_w(offset, (byte)(value >> 16));
|
||||||
qsound_sharedram1_w(offset + 1, (byte)value);
|
qsound_sharedram1_w(offset + 1, (byte)value);
|
||||||
}
|
}
|
||||||
else if (address >= 0x662000 && address <= 0x662001)
|
else if (address >= 0x662000 && address <= 0x662001)
|
||||||
@ -1632,7 +1632,7 @@ namespace mame
|
|||||||
else if (address >= 0x70a000 && address <= 0x70bfff)
|
else if (address >= 0x70a000 && address <= 0x70bfff)
|
||||||
{
|
{
|
||||||
int offset = (address - 0x70a000) / 2;
|
int offset = (address - 0x70a000) / 2;
|
||||||
cps2_objram2_w(offset, (ushort)(value>>16));
|
cps2_objram2_w(offset, (ushort)(value >> 16));
|
||||||
cps2_objram2_w(offset + 1, (ushort)value);
|
cps2_objram2_w(offset + 1, (ushort)value);
|
||||||
}
|
}
|
||||||
else if (address >= 0x70c000 && address <= 0x70dfff)
|
else if (address >= 0x70c000 && address <= 0x70dfff)
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
sbyte result = 0;
|
sbyte result = 0;
|
||||||
if (address >= 0x800052 && address <= 0x800055)
|
if (address >= 0x800052 && address <= 0x800055)
|
||||||
{
|
{
|
||||||
int offset=(address-0x800052)/2;
|
int offset = (address - 0x800052) / 2;
|
||||||
result = (sbyte)((Inptport.input_port_read_direct(Inptport.analog_p0) - dial0) >> (8 * offset));
|
result = (sbyte)((Inptport.input_port_read_direct(Inptport.analog_p0) - dial0) >> (8 * offset));
|
||||||
}
|
}
|
||||||
else if (address >= 0x80005a && address <= 0x80005d)
|
else if (address >= 0x80005a && address <= 0x80005d)
|
||||||
@ -184,7 +184,7 @@
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MCWriteWord(address,value);
|
MCWriteWord(address, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public static sbyte MCReadByte_sf2m3(int address)
|
public static sbyte MCReadByte_sf2m3(int address)
|
||||||
@ -921,7 +921,7 @@
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MCWriteWord(address,value);
|
MCWriteWord(address, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public static sbyte MC2ReadByte_ecofghtr(int address)
|
public static sbyte MC2ReadByte_ecofghtr(int address)
|
||||||
@ -942,7 +942,7 @@
|
|||||||
{
|
{
|
||||||
address &= 0xffffff;
|
address &= 0xffffff;
|
||||||
short result = 0;
|
short result = 0;
|
||||||
if (address >= 0x804000 && address+1 <= 0x804001)
|
if (address >= 0x804000 && address + 1 <= 0x804001)
|
||||||
{
|
{
|
||||||
result = 0;
|
result = 0;
|
||||||
}
|
}
|
||||||
@ -1670,7 +1670,7 @@
|
|||||||
else if (address >= 0x70a000 && address + 3 <= 0x70bfff)
|
else if (address >= 0x70a000 && address + 3 <= 0x70bfff)
|
||||||
{
|
{
|
||||||
int offset = (address - 0x70a000) / 2;
|
int offset = (address - 0x70a000) / 2;
|
||||||
cps2_objram2_w(offset, (ushort)(value>>16));
|
cps2_objram2_w(offset, (ushort)(value >> 16));
|
||||||
cps2_objram2_w(offset + 1, (ushort)value);
|
cps2_objram2_w(offset + 1, (ushort)value);
|
||||||
}
|
}
|
||||||
else if (address >= 0x70c000 && address <= 0x70dfff)
|
else if (address >= 0x70c000 && address <= 0x70dfff)
|
||||||
@ -1740,7 +1740,7 @@
|
|||||||
else if (address >= 0xfffff0 && address + 3 <= 0xfffffb)
|
else if (address >= 0xfffff0 && address + 3 <= 0xfffffb)
|
||||||
{
|
{
|
||||||
int offset = (address - 0xfffff0) / 2;
|
int offset = (address - 0xfffff0) / 2;
|
||||||
cps2_output[offset] = (ushort)(value>>16);
|
cps2_output[offset] = (ushort)(value >> 16);
|
||||||
cps2_output[offset + 1] = (ushort)value;
|
cps2_output[offset + 1] = (ushort)value;
|
||||||
}
|
}
|
||||||
else if (address >= 0xfffffc && address + 3 <= 0xffffff)
|
else if (address >= 0xfffffc && address + 3 <= 0xffffff)
|
||||||
|
@ -1,10 +1,6 @@
|
|||||||
using System;
|
using cpu.m68000;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.IO;
|
|
||||||
using cpu.m68000;
|
|
||||||
using cpu.z80;
|
using cpu.z80;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
namespace mame
|
namespace mame
|
||||||
{
|
{
|
||||||
@ -334,11 +330,11 @@ namespace mame
|
|||||||
cps2_output[i] = reader.ReadUInt16();
|
cps2_output[i] = reader.ReadUInt16();
|
||||||
}
|
}
|
||||||
cps2networkpresent = reader.ReadInt32();
|
cps2networkpresent = reader.ReadInt32();
|
||||||
cps2_objram_bank= reader.ReadInt32();
|
cps2_objram_bank = reader.ReadInt32();
|
||||||
scancount= reader.ReadInt32();
|
scancount = reader.ReadInt32();
|
||||||
cps1_scanline1= reader.ReadInt32();
|
cps1_scanline1 = reader.ReadInt32();
|
||||||
cps1_scanline2= reader.ReadInt32();
|
cps1_scanline2 = reader.ReadInt32();
|
||||||
cps1_scancalls= reader.ReadInt32();
|
cps1_scancalls = reader.ReadInt32();
|
||||||
for (i = 0; i < 0xc00; i++)
|
for (i = 0; i < 0xc00; i++)
|
||||||
{
|
{
|
||||||
Palette.entry_color[i] = reader.ReadUInt32();
|
Palette.entry_color[i] = reader.ReadUInt32();
|
||||||
|
@ -1,7 +1,4 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace mame
|
namespace mame
|
||||||
{
|
{
|
||||||
@ -55,8 +52,8 @@ namespace mame
|
|||||||
ttmap[i].rowscroll = new int[ttmap[i].scrollrows];
|
ttmap[i].rowscroll = new int[ttmap[i].scrollrows];
|
||||||
ttmap[i].colscroll = new int[ttmap[i].scrollcols];
|
ttmap[i].colscroll = new int[ttmap[i].scrollcols];
|
||||||
ttmap[i].tilemap_draw_instance3 = ttmap[i].tilemap_draw_instanceC;
|
ttmap[i].tilemap_draw_instance3 = ttmap[i].tilemap_draw_instanceC;
|
||||||
ttmap[i].tilemap_set_scrolldx(0,0);
|
ttmap[i].tilemap_set_scrolldx(0, 0);
|
||||||
ttmap[i].tilemap_set_scrolldy(0x100,0);
|
ttmap[i].tilemap_set_scrolldy(0x100, 0);
|
||||||
}
|
}
|
||||||
ttmap[0].tile_update3 = ttmap[0].tile_updateC0;
|
ttmap[0].tile_update3 = ttmap[0].tile_updateC0;
|
||||||
ttmap[1].tile_update3 = ttmap[1].tile_updateC1;
|
ttmap[1].tile_update3 = ttmap[1].tile_updateC1;
|
||||||
@ -375,7 +372,7 @@ namespace mame
|
|||||||
{
|
{
|
||||||
for (cury = y; cury < nexty; cury++)
|
for (cury = y; cury < nexty; cury++)
|
||||||
{
|
{
|
||||||
for (i = xpos + x_start; i < xpos+x_end; i++)
|
for (i = xpos + x_start; i < xpos + x_end; i++)
|
||||||
{
|
{
|
||||||
if ((flagsmap[offsety2, i - xpos] & mask) == value)
|
if ((flagsmap[offsety2, i - xpos] & mask) == value)
|
||||||
{
|
{
|
||||||
|
@ -1,17 +1,12 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Drawing;
|
|
||||||
using System.Drawing.Imaging;
|
|
||||||
using System.IO;
|
|
||||||
|
|
||||||
namespace mame
|
namespace mame
|
||||||
{
|
{
|
||||||
public partial class CPS
|
public partial class CPS
|
||||||
{
|
{
|
||||||
private static int iXAll, iYAll, nBitmap;
|
private static int iXAll, iYAll, nBitmap;
|
||||||
private static Bitmap bmAll=new Bitmap(512,512);
|
//private static Bitmap bmAll=new Bitmap(512,512);
|
||||||
private static List<string> lBitmapHash = new List<string>();
|
private static List<string> lBitmapHash = new List<string>();
|
||||||
private static int cpsb_addr, cpsb_value, mult_factor1, mult_factor2, mult_result_lo, mult_result_hi;
|
private static int cpsb_addr, cpsb_value, mult_factor1, mult_factor2, mult_result_lo, mult_result_hi;
|
||||||
public static int layercontrol, layer_control, palette_control, in2_addr, in3_addr, out2_addr, bootleg_kludge;
|
public static int layercontrol, layer_control, palette_control, in2_addr, in3_addr, out2_addr, bootleg_kludge;
|
||||||
@ -80,7 +75,7 @@ namespace mame
|
|||||||
}
|
}
|
||||||
private static void cps1_cps_a_w(int offset, ushort data)
|
private static void cps1_cps_a_w(int offset, ushort data)
|
||||||
{
|
{
|
||||||
cps_a_regs[offset] =data;
|
cps_a_regs[offset] = data;
|
||||||
if (offset == CPS1_PALETTE_BASE)
|
if (offset == CPS1_PALETTE_BASE)
|
||||||
{
|
{
|
||||||
cps1_build_palette(cps1_base(CPS1_PALETTE_BASE, 0x0400));
|
cps1_build_palette(cps1_base(CPS1_PALETTE_BASE, 0x0400));
|
||||||
@ -279,10 +274,10 @@ namespace mame
|
|||||||
}
|
}
|
||||||
public static void video_start_cps()
|
public static void video_start_cps()
|
||||||
{
|
{
|
||||||
bmAll = new Bitmap(512, 512);
|
//bmAll = new Bitmap(512, 512);
|
||||||
Graphics g = Graphics.FromImage(bmAll);
|
//Graphics g = Graphics.FromImage(bmAll);
|
||||||
g.Clear(Color.Magenta);
|
//g.Clear(Color.Magenta);
|
||||||
g.Dispose();
|
//g.Dispose();
|
||||||
int i;
|
int i;
|
||||||
ttmap[0].enable = true;
|
ttmap[0].enable = true;
|
||||||
ttmap[1].enable = true;
|
ttmap[1].enable = true;
|
||||||
@ -302,8 +297,8 @@ namespace mame
|
|||||||
cps1_stars_enabled = new int[2];
|
cps1_stars_enabled = new int[2];
|
||||||
cps1_buffered_obj = new ushort[0x400];
|
cps1_buffered_obj = new ushort[0x400];
|
||||||
cps2_buffered_obj = new ushort[0x1000];
|
cps2_buffered_obj = new ushort[0x1000];
|
||||||
cps2_objram1=new ushort[0x1000];
|
cps2_objram1 = new ushort[0x1000];
|
||||||
cps2_objram2=new ushort[0x1000];
|
cps2_objram2 = new ushort[0x1000];
|
||||||
|
|
||||||
uuBFF = new ushort[0x200 * 0x200];
|
uuBFF = new ushort[0x200 * 0x200];
|
||||||
for (i = 0; i < 0x40000; i++)
|
for (i = 0; i < 0x40000; i++)
|
||||||
@ -554,13 +549,13 @@ namespace mame
|
|||||||
code = cps2_buffered_obj[i * 4 + 2] + ((y & 0x6000) << 3);
|
code = cps2_buffered_obj[i * 4 + 2] + ((y & 0x6000) << 3);
|
||||||
colour = cps2_buffered_obj[i * 4 + 3];
|
colour = cps2_buffered_obj[i * 4 + 3];
|
||||||
col = colour & 0x1f;
|
col = colour & 0x1f;
|
||||||
if ((colour & 0x80)!=0)
|
if ((colour & 0x80) != 0)
|
||||||
{
|
{
|
||||||
x += cps2_port(0x08); /* fix the offset of some games */
|
x += cps2_port(0x08); /* fix the offset of some games */
|
||||||
y += cps2_port(0x0a); /* like Marvel vs. Capcom ending credits */
|
y += cps2_port(0x0a); /* like Marvel vs. Capcom ending credits */
|
||||||
}
|
}
|
||||||
y += 0x100;
|
y += 0x100;
|
||||||
if ((colour & 0xff00)!=0)
|
if ((colour & 0xff00) != 0)
|
||||||
{
|
{
|
||||||
/* handle blocked sprites */
|
/* handle blocked sprites */
|
||||||
int nx = (colour & 0x0f00) >> 8;
|
int nx = (colour & 0x0f00) >> 8;
|
||||||
@ -568,10 +563,10 @@ namespace mame
|
|||||||
int nxs, nys, sx, sy;
|
int nxs, nys, sx, sy;
|
||||||
nx++;
|
nx++;
|
||||||
ny++;
|
ny++;
|
||||||
if ((colour & 0x40)!=0)
|
if ((colour & 0x40) != 0)
|
||||||
{
|
{
|
||||||
/* Y flip */
|
/* Y flip */
|
||||||
if ((colour & 0x20)!=0)
|
if ((colour & 0x20) != 0)
|
||||||
{
|
{
|
||||||
for (nys = 0; nys < ny; nys++)
|
for (nys = 0; nys < ny; nys++)
|
||||||
{
|
{
|
||||||
@ -598,7 +593,7 @@ namespace mame
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ((colour & 0x20)!=0)
|
if ((colour & 0x20) != 0)
|
||||||
{
|
{
|
||||||
for (nys = 0; nys < ny; nys++)
|
for (nys = 0; nys < ny; nys++)
|
||||||
{
|
{
|
||||||
@ -719,7 +714,7 @@ namespace mame
|
|||||||
cps1_update_transmasks();
|
cps1_update_transmasks();
|
||||||
ttmap[0].tilemap_set_scrollx(0, scroll1x);
|
ttmap[0].tilemap_set_scrollx(0, scroll1x);
|
||||||
ttmap[0].tilemap_set_scrolly(0, scroll1y);
|
ttmap[0].tilemap_set_scrolly(0, scroll1y);
|
||||||
if ((videocontrol & 0x01)!=0) /* linescroll enable */
|
if ((videocontrol & 0x01) != 0) /* linescroll enable */
|
||||||
{
|
{
|
||||||
int scrly = -scroll2y;
|
int scrly = -scroll2y;
|
||||||
int otheroffs;
|
int otheroffs;
|
||||||
@ -852,7 +847,7 @@ namespace mame
|
|||||||
//memcpy(cps2_buffered_obj, cps2_objbase(), cps2_obj_size);
|
//memcpy(cps2_buffered_obj, cps2_objbase(), cps2_obj_size);
|
||||||
int baseptr;
|
int baseptr;
|
||||||
baseptr = 0x7000;
|
baseptr = 0x7000;
|
||||||
if ((cps2_objram_bank & 1)!=0)
|
if ((cps2_objram_bank & 1) != 0)
|
||||||
{
|
{
|
||||||
baseptr ^= 0x0080;
|
baseptr ^= 0x0080;
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,4 @@
|
|||||||
using System;
|
namespace mame
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace mame
|
|
||||||
{
|
{
|
||||||
public partial class Drawgfx
|
public partial class Drawgfx
|
||||||
{
|
{
|
||||||
|
@ -1,11 +1,4 @@
|
|||||||
using System;
|
namespace mame
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Drawing;
|
|
||||||
using System.Drawing.Imaging;
|
|
||||||
|
|
||||||
namespace mame
|
|
||||||
{
|
{
|
||||||
public partial class Dataeast
|
public partial class Dataeast
|
||||||
{
|
{
|
||||||
@ -14,206 +7,5 @@ namespace mame
|
|||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
public static Bitmap GetBg()
|
|
||||||
{
|
|
||||||
int i1, i2, iOffset, i3, i4;
|
|
||||||
int rows, cols, width, height;
|
|
||||||
int tilewidth, tileheight;
|
|
||||||
tilewidth = 0x8;
|
|
||||||
tileheight = tilewidth;
|
|
||||||
rows = 0x20;
|
|
||||||
cols = rows;
|
|
||||||
width = tilewidth * cols;
|
|
||||||
height = width;
|
|
||||||
int iByte;
|
|
||||||
int tile_index, attr, color, flipyx, code, flags;
|
|
||||||
int pen_data_offset, palette_base;
|
|
||||||
int x0 = 0, y0 = 0, dx0 = 0, dy0 = 0;
|
|
||||||
Color c1 = new Color();
|
|
||||||
Bitmap bm1;
|
|
||||||
bm1 = new Bitmap(width, height);
|
|
||||||
BitmapData bmData;
|
|
||||||
bmData = bm1.LockBits(new Rectangle(0, 0, bm1.Width, bm1.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
|
|
||||||
unsafe
|
|
||||||
{
|
|
||||||
byte* ptr = (byte*)(bmData.Scan0);
|
|
||||||
byte* ptr2 = (byte*)0;
|
|
||||||
for (i3 = 0; i3 < cols; i3++)
|
|
||||||
{
|
|
||||||
for (i4 = 0; i4 < rows; i4++)
|
|
||||||
{
|
|
||||||
tile_index = i4 * cols + i3;
|
|
||||||
code = Generic.videoram[tile_index * 2 + 1] + ((Generic.videoram[tile_index * 2] & 0x0f) << 8);
|
|
||||||
color = Generic.videoram[tile_index * 2] >> 4;
|
|
||||||
flags = 0;
|
|
||||||
palette_base = 0x100 + 0x10 * color;
|
|
||||||
pen_data_offset = code * 0x40;
|
|
||||||
if (flags == 0)
|
|
||||||
{
|
|
||||||
x0 = tilewidth * i3;
|
|
||||||
y0 = tileheight * i4;
|
|
||||||
dx0 = 1;
|
|
||||||
dy0 = 1;
|
|
||||||
}
|
|
||||||
else if (flags == 1)
|
|
||||||
{
|
|
||||||
x0 = tilewidth * i3 + tilewidth - 1;
|
|
||||||
y0 = tileheight * i4;
|
|
||||||
dx0 = -1;
|
|
||||||
dy0 = 1;
|
|
||||||
}
|
|
||||||
else if (flags == 2)
|
|
||||||
{
|
|
||||||
x0 = tilewidth * i3;
|
|
||||||
y0 = tileheight * i4 + tileheight - 1;
|
|
||||||
dx0 = 1;
|
|
||||||
dy0 = -1;
|
|
||||||
}
|
|
||||||
else if (flags == 3)
|
|
||||||
{
|
|
||||||
x0 = tilewidth * i3 + tilewidth - 1;
|
|
||||||
y0 = tileheight * i4 + tileheight - 1;
|
|
||||||
dx0 = -1;
|
|
||||||
dy0 = -1;
|
|
||||||
}
|
|
||||||
for (i1 = 0; i1 < tilewidth; i1++)
|
|
||||||
{
|
|
||||||
for (i2 = 0; i2 < tileheight; i2++)
|
|
||||||
{
|
|
||||||
iOffset = pen_data_offset + i2 * 8 + i1;
|
|
||||||
iByte = Dataeast.gfx1rom[iOffset];
|
|
||||||
if (palette_base + iByte < 0x200)
|
|
||||||
{
|
|
||||||
c1 = Color.FromArgb((int)Palette.entry_color[palette_base + iByte]);
|
|
||||||
}
|
|
||||||
ptr2 = ptr + ((y0 + dy0 * i2) * width + (x0 + dx0 * i1)) * 4;
|
|
||||||
*ptr2 = c1.B;
|
|
||||||
*(ptr2 + 1) = c1.G;
|
|
||||||
*(ptr2 + 2) = c1.R;
|
|
||||||
*(ptr2 + 3) = c1.A;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
bm1.UnlockBits(bmData);
|
|
||||||
return bm1;
|
|
||||||
}
|
|
||||||
public static Bitmap GetSprite()
|
|
||||||
{
|
|
||||||
int i, j, offsetx, offsety, xdir, ydir, sx1, code = 0, color = 0;
|
|
||||||
Bitmap bm1;
|
|
||||||
Color c1 = new Color();
|
|
||||||
bm1 = new Bitmap(0x100, 0x100);
|
|
||||||
int offs;
|
|
||||||
BitmapData bmData;
|
|
||||||
bmData = bm1.LockBits(new Rectangle(0, 0, bm1.Width, bm1.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
|
|
||||||
unsafe
|
|
||||||
{
|
|
||||||
byte* ptr = (byte*)(bmData.Scan0);
|
|
||||||
byte* ptr2 = (byte*)0;
|
|
||||||
for (offs = 0; offs < 0x200; offs += 4)
|
|
||||||
{
|
|
||||||
if (Generic.spriteram[offs] != 0xf8)
|
|
||||||
{
|
|
||||||
int sx, sy, flipx, flipy;
|
|
||||||
sx = 240 - Generic.spriteram[offs + 2];
|
|
||||||
sy = 240 - Generic.spriteram[offs];
|
|
||||||
flipx = Generic.spriteram[offs + 1] & 0x04;
|
|
||||||
flipy = Generic.spriteram[offs + 1] & 0x02;
|
|
||||||
if (Generic.flip_screen_get() != 0)
|
|
||||||
{
|
|
||||||
sx = 240 - sx;
|
|
||||||
sy = 240 - sy;
|
|
||||||
if (flipx != 0)
|
|
||||||
{
|
|
||||||
flipx = 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
flipx = 1;
|
|
||||||
}
|
|
||||||
if (flipy != 0)
|
|
||||||
{
|
|
||||||
flipy = 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
flipy = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (flipx != 0)
|
|
||||||
{
|
|
||||||
offsetx = 0x0f;
|
|
||||||
xdir = -1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
offsetx = 0;
|
|
||||||
xdir = 1;
|
|
||||||
}
|
|
||||||
if (flipy != 0)
|
|
||||||
{
|
|
||||||
offsety = 0x0f;
|
|
||||||
ydir = -1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
offsety = 0;
|
|
||||||
ydir = 1;
|
|
||||||
}
|
|
||||||
sx1 = sx;
|
|
||||||
code = Generic.spriteram[offs + 3] + ((Generic.spriteram[offs + 1] & 1) << 8);
|
|
||||||
color = (Generic.spriteram[offs + 1] & 0x70) >> 4;
|
|
||||||
for (i = 0; i < 0x10; i++)
|
|
||||||
{
|
|
||||||
for (j = 0; j < 0x10; j++)
|
|
||||||
{
|
|
||||||
if (sx1 + offsetx + xdir * j >= 0 && sx1 + offsetx + xdir * j < 0x100 && sy + offsety + ydir * i >= 0 && sy + offsety + ydir * i < 0x100)
|
|
||||||
{
|
|
||||||
ushort c = gfx2rom[code * 0x100 + 0x10 * i + j];
|
|
||||||
if (c != 0)
|
|
||||||
{
|
|
||||||
c1 = Color.FromArgb((int)Palette.entry_color[color * 4 + c]);
|
|
||||||
ptr2 = ptr + ((sy + offsety + ydir * i) * 0x100 + (sx1 + offsetx + xdir * j)) * 4;
|
|
||||||
*ptr2 = c1.B;
|
|
||||||
*(ptr2 + 1) = c1.G;
|
|
||||||
*(ptr2 + 2) = c1.R;
|
|
||||||
*(ptr2 + 3) = c1.A;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
bm1.UnlockBits(bmData);
|
|
||||||
return bm1;
|
|
||||||
}
|
|
||||||
public static Bitmap GetAllGDI()
|
|
||||||
{
|
|
||||||
Bitmap bm1 = new Bitmap(0x100, 0x100), bm2;
|
|
||||||
Graphics g = Graphics.FromImage(bm1);
|
|
||||||
g.Clear(Color.Transparent);
|
|
||||||
if (bBg)
|
|
||||||
{
|
|
||||||
bm2 = GetBg();
|
|
||||||
g.DrawImage(bm2, 0, 0);
|
|
||||||
}
|
|
||||||
if (bSprite)
|
|
||||||
{
|
|
||||||
bm2 = GetSprite();
|
|
||||||
g.DrawImage(bm2, 0, 0);
|
|
||||||
}
|
|
||||||
switch (Machine.sDirection)
|
|
||||||
{
|
|
||||||
case "":
|
|
||||||
break;
|
|
||||||
case "90":
|
|
||||||
bm1.RotateFlip(RotateFlipType.Rotate90FlipNone);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return bm1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -152,8 +152,8 @@ namespace mame
|
|||||||
lfr = new List<fr1>();
|
lfr = new List<fr1>();
|
||||||
lfr.Add(new fr1((int)(Video.screenstate.frame_number + 1), 0x7f));
|
lfr.Add(new fr1((int)(Video.screenstate.frame_number + 1), 0x7f));
|
||||||
lfr.Add(new fr1((int)(Video.screenstate.frame_number + 2), 0xff));
|
lfr.Add(new fr1((int)(Video.screenstate.frame_number + 2), 0xff));
|
||||||
lfr.Add(new fr1((int)(Video.screenstate.frame_number + 2+i3), 0x7f));
|
lfr.Add(new fr1((int)(Video.screenstate.frame_number + 2 + i3), 0x7f));
|
||||||
lfr.Add(new fr1((int)(Video.screenstate.frame_number + 2+i3+1), 0xff));
|
lfr.Add(new fr1((int)(Video.screenstate.frame_number + 2 + i3 + 1), 0xff));
|
||||||
}
|
}
|
||||||
if (Keyboard.IsTriggered(Key.U))
|
if (Keyboard.IsTriggered(Key.U))
|
||||||
{
|
{
|
||||||
|
@ -1,9 +1,4 @@
|
|||||||
using System;
|
namespace mame
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace mame
|
|
||||||
{
|
{
|
||||||
public partial class Dataeast
|
public partial class Dataeast
|
||||||
{
|
{
|
||||||
|
@ -1,10 +1,4 @@
|
|||||||
using System;
|
namespace mame
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.IO;
|
|
||||||
|
|
||||||
namespace mame
|
|
||||||
{
|
{
|
||||||
public partial class Dataeast
|
public partial class Dataeast
|
||||||
{
|
{
|
||||||
@ -13,7 +7,7 @@ namespace mame
|
|||||||
public static int basebankmain1, basebankmain2, basebanksnd, msm5205next, toggle;
|
public static int basebankmain1, basebankmain2, basebanksnd, msm5205next, toggle;
|
||||||
public static void DataeastInit()
|
public static void DataeastInit()
|
||||||
{
|
{
|
||||||
int i,n;
|
int i, n;
|
||||||
Machine.bRom = true;
|
Machine.bRom = true;
|
||||||
Memory.mainram = new byte[0x800];
|
Memory.mainram = new byte[0x800];
|
||||||
Memory.audioram = new byte[0x800];
|
Memory.audioram = new byte[0x800];
|
||||||
|
@ -1,9 +1,5 @@
|
|||||||
using System;
|
using cpu.m6502;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using cpu.m6502;
|
|
||||||
|
|
||||||
namespace mame
|
namespace mame
|
||||||
{
|
{
|
||||||
|
@ -1,7 +1,4 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace mame
|
namespace mame
|
||||||
{
|
{
|
||||||
|
@ -1,9 +1,4 @@
|
|||||||
using System;
|
namespace mame
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace mame
|
|
||||||
{
|
{
|
||||||
public partial class Dataeast
|
public partial class Dataeast
|
||||||
{
|
{
|
||||||
|
@ -1,12 +1,4 @@
|
|||||||
using System;
|
namespace mame
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Drawing;
|
|
||||||
using System.Drawing.Imaging;
|
|
||||||
using System.IO;
|
|
||||||
|
|
||||||
namespace mame
|
|
||||||
{
|
{
|
||||||
public partial class IGS011
|
public partial class IGS011
|
||||||
{
|
{
|
||||||
@ -14,82 +6,5 @@ namespace mame
|
|||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
public static Bitmap GetBmp(string layer1)
|
|
||||||
{
|
|
||||||
int width = 0x200, height = 0xf0;
|
|
||||||
int x, y, l, scr_addr, pri_addr;
|
|
||||||
int pri_ram_offset;
|
|
||||||
pri_ram_offset = (priority & 7) * 0x100;
|
|
||||||
Color c1 = new Color();
|
|
||||||
Bitmap bm1;
|
|
||||||
bm1 = new Bitmap(width, height);
|
|
||||||
BitmapData bmData;
|
|
||||||
bmData = bm1.LockBits(new Rectangle(0, 0, bm1.Width, bm1.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
|
|
||||||
unsafe
|
|
||||||
{
|
|
||||||
byte* ptr = (byte*)(bmData.Scan0);
|
|
||||||
byte* ptr2 = (byte*)0;
|
|
||||||
for (y = 0; y < 0xef; y++)
|
|
||||||
{
|
|
||||||
for (x = 0; x < 0x1ff; x++)
|
|
||||||
{
|
|
||||||
scr_addr = x + y * 0x200;
|
|
||||||
pri_addr = 0xff;
|
|
||||||
for (l = 0; l < 8; l++)
|
|
||||||
{
|
|
||||||
if (layer[l][scr_addr] != 0xff)
|
|
||||||
{
|
|
||||||
pri_addr &= ~(1 << l);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (layer1 == "normal")
|
|
||||||
{
|
|
||||||
l = priority_ram[pri_ram_offset + pri_addr] & 7;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
l = int.Parse(layer1);
|
|
||||||
}
|
|
||||||
c1 = Color.FromArgb((int)Palette.entry_color[layer[l][scr_addr] | (l << 8)]);
|
|
||||||
ptr2 = ptr + (y * width + x) * 4;
|
|
||||||
*ptr2 = c1.B;
|
|
||||||
*(ptr2 + 1) = c1.G;
|
|
||||||
*(ptr2 + 2) = c1.R;
|
|
||||||
*(ptr2 + 3) = c1.A;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
bm1.UnlockBits(bmData);
|
|
||||||
return bm1;
|
|
||||||
}
|
|
||||||
public static Bitmap GetAllGDI(string layer)
|
|
||||||
{
|
|
||||||
Bitmap bm1 = new Bitmap(0x200, 0xf0), bm2;
|
|
||||||
Graphics g = Graphics.FromImage(bm1);
|
|
||||||
g.Clear(Color.Transparent);
|
|
||||||
bm2 = GetBmp(layer);
|
|
||||||
g.DrawImage(bm2, 0, 0);
|
|
||||||
/*if (bBg)
|
|
||||||
{
|
|
||||||
bm2 = GetBg_sf();
|
|
||||||
g.DrawImage(bm2, -bg_scrollx, 0);
|
|
||||||
}
|
|
||||||
if (bFg)
|
|
||||||
{
|
|
||||||
bm2 = GetFg_sf();
|
|
||||||
g.DrawImage(bm2, -fg_scrollx, 0);
|
|
||||||
}
|
|
||||||
if (bTx)
|
|
||||||
{
|
|
||||||
bm2 = GetTx_sf();
|
|
||||||
g.DrawImage(bm2, 0, 0);
|
|
||||||
}
|
|
||||||
if (bSprite)
|
|
||||||
{
|
|
||||||
bm2 = GetSprite_sf();
|
|
||||||
g.DrawImage(bm2, 0, 0);
|
|
||||||
}*/
|
|
||||||
return bm1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,4 @@
|
|||||||
using System;
|
namespace mame
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace mame
|
|
||||||
{
|
{
|
||||||
public partial class IGS011
|
public partial class IGS011
|
||||||
{
|
{
|
||||||
@ -11,7 +6,7 @@ namespace mame
|
|||||||
public static byte prot1, prot2, prot1_swap;
|
public static byte prot1, prot2, prot1_swap;
|
||||||
public static uint prot1_addr;
|
public static uint prot1_addr;
|
||||||
public static ushort[] igs003_reg, vbowl_trackball;
|
public static ushort[] igs003_reg, vbowl_trackball;
|
||||||
public static ushort priority, igs_dips_sel,igs_input_sel, lhb_irq_enable;
|
public static ushort priority, igs_dips_sel, igs_input_sel, lhb_irq_enable;
|
||||||
public static byte igs012_prot, igs012_prot_swap;
|
public static byte igs012_prot, igs012_prot_swap;
|
||||||
private static bool igs012_prot_mode;
|
private static bool igs012_prot_mode;
|
||||||
public static byte[] gfx1rom, gfx2rom;
|
public static byte[] gfx1rom, gfx2rom;
|
||||||
@ -476,7 +471,7 @@ namespace mame
|
|||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
private static void lhb_inputs_w(int offset,byte data)
|
private static void lhb_inputs_w(int offset, byte data)
|
||||||
{
|
{
|
||||||
if (offset == 0)
|
if (offset == 0)
|
||||||
{
|
{
|
||||||
@ -840,7 +835,7 @@ namespace mame
|
|||||||
//if (ACCESSING_BITS_0_7)
|
//if (ACCESSING_BITS_0_7)
|
||||||
YM3812.ym3812_write_port_0_w(data);
|
YM3812.ym3812_write_port_0_w(data);
|
||||||
}
|
}
|
||||||
private static void lhb_irq_enable_w(int offset,byte data)
|
private static void lhb_irq_enable_w(int offset, byte data)
|
||||||
{
|
{
|
||||||
if ((offset & 1) == 0)
|
if ((offset & 1) == 0)
|
||||||
{
|
{
|
||||||
|
@ -1,9 +1,4 @@
|
|||||||
using System;
|
namespace mame
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace mame
|
|
||||||
{
|
{
|
||||||
public partial class IGS011
|
public partial class IGS011
|
||||||
{
|
{
|
||||||
|
@ -1,9 +1,4 @@
|
|||||||
using System;
|
namespace mame
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace mame
|
|
||||||
{
|
{
|
||||||
public partial class IGS011
|
public partial class IGS011
|
||||||
{
|
{
|
||||||
@ -17,7 +12,7 @@ namespace mame
|
|||||||
sbyte result = 0;
|
sbyte result = 0;
|
||||||
if (address >= prot1_addr + 8 && address <= prot1_addr + 9)
|
if (address >= prot1_addr + 8 && address <= prot1_addr + 9)
|
||||||
{
|
{
|
||||||
if (address %2==0)
|
if (address % 2 == 0)
|
||||||
{
|
{
|
||||||
result = (sbyte)(igs011_prot1_r() >> 8);
|
result = (sbyte)(igs011_prot1_r() >> 8);
|
||||||
}
|
}
|
||||||
@ -71,11 +66,11 @@ namespace mame
|
|||||||
else if (address >= 0x400000 && address <= 0x401fff)
|
else if (address >= 0x400000 && address <= 0x401fff)
|
||||||
{
|
{
|
||||||
int offset = (address - 0x400000) / 2;
|
int offset = (address - 0x400000) / 2;
|
||||||
if (address %2 == 0)
|
if (address % 2 == 0)
|
||||||
{
|
{
|
||||||
result = (sbyte)(paletteram16[offset] >> 8);
|
result = (sbyte)(paletteram16[offset] >> 8);
|
||||||
}
|
}
|
||||||
else if (address %2 == 1)
|
else if (address % 2 == 1)
|
||||||
{
|
{
|
||||||
result = (sbyte)paletteram16[offset];
|
result = (sbyte)paletteram16[offset];
|
||||||
}
|
}
|
||||||
@ -100,7 +95,8 @@ namespace mame
|
|||||||
{
|
{
|
||||||
int i1 = 1;
|
int i1 = 1;
|
||||||
}
|
}
|
||||||
else*/ if(address == 0x800003)
|
else*/
|
||||||
|
if (address == 0x800003)
|
||||||
{
|
{
|
||||||
result = (sbyte)drgnwrld_igs003_r();
|
result = (sbyte)drgnwrld_igs003_r();
|
||||||
}
|
}
|
||||||
@ -338,7 +334,7 @@ namespace mame
|
|||||||
int offset = (int)(address - prot1_addr);
|
int offset = (int)(address - prot1_addr);
|
||||||
igs011_prot1_w(offset, (ushort)value);
|
igs011_prot1_w(offset, (ushort)value);
|
||||||
}
|
}
|
||||||
else if (address >= 0x100000 && address+1 <= 0x103fff)
|
else if (address >= 0x100000 && address + 1 <= 0x103fff)
|
||||||
{
|
{
|
||||||
int offset = address - 0x100000;
|
int offset = address - 0x100000;
|
||||||
Generic.generic_nvram[offset] = (byte)(value >> 8);
|
Generic.generic_nvram[offset] = (byte)(value >> 8);
|
||||||
@ -351,8 +347,8 @@ namespace mame
|
|||||||
}
|
}
|
||||||
else if (address >= 0x400000 && address + 1 <= 0x401fff)
|
else if (address >= 0x400000 && address + 1 <= 0x401fff)
|
||||||
{
|
{
|
||||||
int offset = (address - 0x400000)/2;
|
int offset = (address - 0x400000) / 2;
|
||||||
igs011_palette(offset,(ushort)value);
|
igs011_palette(offset, (ushort)value);
|
||||||
}
|
}
|
||||||
else if (address >= 0x600000 && address + 1 <= 0x600001)
|
else if (address >= 0x600000 && address + 1 <= 0x600001)
|
||||||
{
|
{
|
||||||
@ -368,7 +364,7 @@ namespace mame
|
|||||||
}
|
}
|
||||||
else if (address >= 0x800000 && address + 1 <= 0x800003)
|
else if (address >= 0x800000 && address + 1 <= 0x800003)
|
||||||
{
|
{
|
||||||
int offset = (address - 0x800000)/2;
|
int offset = (address - 0x800000) / 2;
|
||||||
drgnwrld_igs003_w(offset, (ushort)value);
|
drgnwrld_igs003_w(offset, (ushort)value);
|
||||||
}
|
}
|
||||||
else if (address >= 0xa20000 && address + 1 <= 0xa20001)
|
else if (address >= 0xa20000 && address + 1 <= 0xa20001)
|
||||||
|
@ -1,9 +1,4 @@
|
|||||||
using System;
|
namespace mame
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace mame
|
|
||||||
{
|
{
|
||||||
public partial class IGS011
|
public partial class IGS011
|
||||||
{
|
{
|
||||||
@ -750,7 +745,7 @@ namespace mame
|
|||||||
public static void MWriteLong_lhb(int address, int value)
|
public static void MWriteLong_lhb(int address, int value)
|
||||||
{
|
{
|
||||||
address &= 0xffffff;
|
address &= 0xffffff;
|
||||||
if (address >= prot1_addr && address+3 <= prot1_addr + 7)
|
if (address >= prot1_addr && address + 3 <= prot1_addr + 7)
|
||||||
{
|
{
|
||||||
int i1 = 1;
|
int i1 = 1;
|
||||||
}
|
}
|
||||||
@ -3141,7 +3136,7 @@ namespace mame
|
|||||||
}
|
}
|
||||||
else if (address >= 0x600000 && address + 1 <= 0x600007)
|
else if (address >= 0x600000 && address + 1 <= 0x600007)
|
||||||
{
|
{
|
||||||
int offset=(address-0x600000)/2;
|
int offset = (address - 0x600000) / 2;
|
||||||
ics2115_0_word_w(offset, (ushort)value);
|
ics2115_0_word_w(offset, (ushort)value);
|
||||||
}
|
}
|
||||||
else if (address >= 0x700000 && address + 1 <= 0x700003)
|
else if (address >= 0x700000 && address + 1 <= 0x700003)
|
||||||
|
@ -1,9 +1,5 @@
|
|||||||
using System;
|
using cpu.m68000;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using cpu.m68000;
|
|
||||||
|
|
||||||
namespace mame
|
namespace mame
|
||||||
{
|
{
|
||||||
@ -120,15 +116,15 @@ namespace mame
|
|||||||
layer[i][j] = reader.ReadByte();
|
layer[i][j] = reader.ReadByte();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lhb2_pen_hi= reader.ReadByte();
|
lhb2_pen_hi = reader.ReadByte();
|
||||||
blitter.x= reader.ReadUInt16();
|
blitter.x = reader.ReadUInt16();
|
||||||
blitter.y= reader.ReadUInt16();
|
blitter.y = reader.ReadUInt16();
|
||||||
blitter.w= reader.ReadUInt16();
|
blitter.w = reader.ReadUInt16();
|
||||||
blitter.h= reader.ReadUInt16();
|
blitter.h = reader.ReadUInt16();
|
||||||
blitter.gfx_lo= reader.ReadUInt16();
|
blitter.gfx_lo = reader.ReadUInt16();
|
||||||
blitter.gfx_hi= reader.ReadUInt16();
|
blitter.gfx_hi = reader.ReadUInt16();
|
||||||
blitter.depth= reader.ReadUInt16();
|
blitter.depth = reader.ReadUInt16();
|
||||||
blitter.pen= reader.ReadUInt16();
|
blitter.pen = reader.ReadUInt16();
|
||||||
blitter.flags = reader.ReadUInt16();
|
blitter.flags = reader.ReadUInt16();
|
||||||
MC68000.m1.LoadStateBinary(reader);
|
MC68000.m1.LoadStateBinary(reader);
|
||||||
Cpuint.LoadStateBinary(reader);
|
Cpuint.LoadStateBinary(reader);
|
||||||
|
@ -1,9 +1,4 @@
|
|||||||
using System;
|
namespace mame
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace mame
|
|
||||||
{
|
{
|
||||||
public partial class IGS011
|
public partial class IGS011
|
||||||
{
|
{
|
||||||
@ -143,7 +138,7 @@ namespace mame
|
|||||||
}
|
}
|
||||||
private static void igs011_blit_x_w(ushort data)
|
private static void igs011_blit_x_w(ushort data)
|
||||||
{
|
{
|
||||||
blitter.x=data;
|
blitter.x = data;
|
||||||
}
|
}
|
||||||
private static void igs011_blit_y_w(int offset, byte data)
|
private static void igs011_blit_y_w(int offset, byte data)
|
||||||
{
|
{
|
||||||
@ -258,7 +253,7 @@ namespace mame
|
|||||||
int clear, opaque, z;
|
int clear, opaque, z;
|
||||||
byte trans_pen, clear_pen, pen_hi, pen = 0;
|
byte trans_pen, clear_pen, pen_hi, pen = 0;
|
||||||
int gfx_size = gfx1rom.Length;
|
int gfx_size = gfx1rom.Length;
|
||||||
int gfx2_size=0;
|
int gfx2_size = 0;
|
||||||
if (gfx2rom != null)
|
if (gfx2rom != null)
|
||||||
{
|
{
|
||||||
gfx2_size = gfx2rom.Length;
|
gfx2_size = gfx2rom.Length;
|
||||||
@ -287,7 +282,7 @@ namespace mame
|
|||||||
{
|
{
|
||||||
trans_pen = 0x0f;
|
trans_pen = 0x0f;
|
||||||
}
|
}
|
||||||
clear_pen =(byte)(blitter.pen | 0xf0);
|
clear_pen = (byte)(blitter.pen | 0xf0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -303,7 +298,7 @@ namespace mame
|
|||||||
}
|
}
|
||||||
xstart = (blitter.x & 0x1ff) - (blitter.x & 0x200);
|
xstart = (blitter.x & 0x1ff) - (blitter.x & 0x200);
|
||||||
ystart = (blitter.y & 0x0ff) - (blitter.y & 0x100);
|
ystart = (blitter.y & 0x0ff) - (blitter.y & 0x100);
|
||||||
if (flipx!=0)
|
if (flipx != 0)
|
||||||
{
|
{
|
||||||
xend = xstart - (blitter.w & 0x1ff) - 1;
|
xend = xstart - (blitter.w & 0x1ff) - 1;
|
||||||
xinc = -1;
|
xinc = -1;
|
||||||
@ -327,7 +322,7 @@ namespace mame
|
|||||||
{
|
{
|
||||||
for (x = xstart; x != xend; x += xinc)
|
for (x = xstart; x != xend; x += xinc)
|
||||||
{
|
{
|
||||||
if (clear==0)
|
if (clear == 0)
|
||||||
{
|
{
|
||||||
if (depth4)
|
if (depth4)
|
||||||
{
|
{
|
||||||
@ -337,7 +332,7 @@ namespace mame
|
|||||||
{
|
{
|
||||||
pen = gfx1rom[z % gfx_size];
|
pen = gfx1rom[z % gfx_size];
|
||||||
}
|
}
|
||||||
if (gfx2rom!=null)
|
if (gfx2rom != null)
|
||||||
{
|
{
|
||||||
pen &= 0x0f;
|
pen &= 0x0f;
|
||||||
if ((gfx2rom[(z / 8) % gfx2_size] & (1 << (z & 7))) != 0)
|
if ((gfx2rom[(z / 8) % gfx2_size] & (1 << (z & 7))) != 0)
|
||||||
|
@ -1,9 +1,4 @@
|
|||||||
using System;
|
namespace mame
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace mame
|
|
||||||
{
|
{
|
||||||
public partial class Konami68000
|
public partial class Konami68000
|
||||||
{
|
{
|
||||||
@ -105,7 +100,7 @@ namespace mame
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public static void common_drawgfxzoom_konami68000(byte[] bb1, int code, int color, int flipx, int flipy, int sx, int sy, RECT clip, int transparent_color, int scalex, int scaley,uint pri_mask)
|
public static void common_drawgfxzoom_konami68000(byte[] bb1, int code, int color, int flipx, int flipy, int sx, int sy, RECT clip, int transparent_color, int scalex, int scaley, uint pri_mask)
|
||||||
{
|
{
|
||||||
if ((scalex == 0) || (scaley == 0))
|
if ((scalex == 0) || (scaley == 0))
|
||||||
{
|
{
|
||||||
@ -272,7 +267,7 @@ namespace mame
|
|||||||
}
|
}
|
||||||
public static void blockmove_8toN_transpen_pri16_konami68000(byte[] bb1, int code, int srcwidth, int srcheight, int srcmodulo,
|
public static void blockmove_8toN_transpen_pri16_konami68000(byte[] bb1, int code, int srcwidth, int srcheight, int srcmodulo,
|
||||||
int leftskip, int topskip, int flipx, int flipy,
|
int leftskip, int topskip, int flipx, int flipy,
|
||||||
int dstwidth, int dstheight, int colorbase,uint pmask, int sx, int sy)
|
int dstwidth, int dstheight, int colorbase, uint pmask, int sx, int sy)
|
||||||
{
|
{
|
||||||
int ydir, xdir, col, i, j, offsetx, offsety;
|
int ydir, xdir, col, i, j, offsetx, offsety;
|
||||||
int srcdata_offset = code * 0x100;
|
int srcdata_offset = code * 0x100;
|
||||||
@ -307,9 +302,9 @@ namespace mame
|
|||||||
col = bb1[srcdata_offset + srcmodulo * i + j];
|
col = bb1[srcdata_offset + srcmodulo * i + j];
|
||||||
if (col != 0)
|
if (col != 0)
|
||||||
{
|
{
|
||||||
if (((1 << (Tilemap.priority_bitmap[offsety+ydir*i,offsetx+xdir*j] & 0x1f)) & pmask) == 0)
|
if (((1 << (Tilemap.priority_bitmap[offsety + ydir * i, offsetx + xdir * j] & 0x1f)) & pmask) == 0)
|
||||||
{
|
{
|
||||||
if ((Tilemap.priority_bitmap[offsety + ydir * i, offsetx + xdir * j] & 0x80)!=0)
|
if ((Tilemap.priority_bitmap[offsety + ydir * i, offsetx + xdir * j] & 0x80) != 0)
|
||||||
{
|
{
|
||||||
Video.bitmapbase[Video.curbitmap][(offsety + ydir * i) * 0x200 + offsetx + xdir * j] = (ushort)(colorbase + col);//palette_shadow_table[paldata[col]];
|
Video.bitmapbase[Video.curbitmap][(offsety + ydir * i) * 0x200 + offsetx + xdir * j] = (ushort)(colorbase + col);//palette_shadow_table[paldata[col]];
|
||||||
}
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -336,7 +336,7 @@ namespace mame
|
|||||||
{
|
{
|
||||||
sbyte0 |= 0x02;
|
sbyte0 |= 0x02;
|
||||||
}
|
}
|
||||||
if(Keyboard.IsPressed(Key.D1))
|
if (Keyboard.IsPressed(Key.D1))
|
||||||
{
|
{
|
||||||
sbyte0 &= ~0x10;
|
sbyte0 &= ~0x10;
|
||||||
}
|
}
|
||||||
@ -635,7 +635,7 @@ namespace mame
|
|||||||
{
|
{
|
||||||
sbyte2 |= 0x40;
|
sbyte2 |= 0x40;
|
||||||
}
|
}
|
||||||
if(Keyboard.IsPressed(Key.NumPad4))
|
if (Keyboard.IsPressed(Key.NumPad4))
|
||||||
{
|
{
|
||||||
sbyte2 &= unchecked((sbyte)~0x80);
|
sbyte2 &= unchecked((sbyte)~0x80);
|
||||||
}
|
}
|
||||||
@ -1380,7 +1380,7 @@ namespace mame
|
|||||||
}
|
}
|
||||||
public static void record_port_prmrsocr()
|
public static void record_port_prmrsocr()
|
||||||
{
|
{
|
||||||
if (sbyte0 != sbyte0_old || sbyte1 != sbyte1_old || sbyte2 != sbyte2_old || sbyte3 != sbyte3_old || sbyte4 != sbyte4_old||bytee!=bytee_old)
|
if (sbyte0 != sbyte0_old || sbyte1 != sbyte1_old || sbyte2 != sbyte2_old || sbyte3 != sbyte3_old || sbyte4 != sbyte4_old || bytee != bytee_old)
|
||||||
{
|
{
|
||||||
sbyte0_old = sbyte0;
|
sbyte0_old = sbyte0;
|
||||||
sbyte1_old = sbyte1;
|
sbyte1_old = sbyte1;
|
||||||
|
@ -1,15 +1,11 @@
|
|||||||
using System;
|
using cpu.m68000;
|
||||||
using System.Collections.Generic;
|
using System;
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.IO;
|
|
||||||
using cpu.m68000;
|
|
||||||
|
|
||||||
namespace mame
|
namespace mame
|
||||||
{
|
{
|
||||||
public partial class Konami68000
|
public partial class Konami68000
|
||||||
{
|
{
|
||||||
public static byte[] gfx1rom, gfx2rom, gfx12rom, gfx22rom,titlerom,user1rom,zoomrom;
|
public static byte[] gfx1rom, gfx2rom, gfx12rom, gfx22rom, titlerom, user1rom, zoomrom;
|
||||||
public static byte dsw1, dsw2, dsw3, bytee;
|
public static byte dsw1, dsw2, dsw3, bytee;
|
||||||
public static byte[] mainram2;
|
public static byte[] mainram2;
|
||||||
public static short[] sampledata;
|
public static short[] sampledata;
|
||||||
@ -29,7 +25,7 @@ namespace mame
|
|||||||
Memory.audioram = new byte[0x2000];//0x800 prmrsocr_0x2000
|
Memory.audioram = new byte[0x2000];//0x800 prmrsocr_0x2000
|
||||||
mainram2 = new byte[0x4000];//0x4000 tmnt2_ssriders_0x80
|
mainram2 = new byte[0x4000];//0x4000 tmnt2_ssriders_0x80
|
||||||
layer_colorbase = new int[3];
|
layer_colorbase = new int[3];
|
||||||
cuebrick_nvram=new ushort[0x400*0x20];
|
cuebrick_nvram = new ushort[0x400 * 0x20];
|
||||||
tmnt2_1c0800 = new ushort[0x10];
|
tmnt2_1c0800 = new ushort[0x10];
|
||||||
K053245_memory_region = new byte[2][];
|
K053245_memory_region = new byte[2][];
|
||||||
K053244_rombank = new int[2];
|
K053244_rombank = new int[2];
|
||||||
@ -327,11 +323,11 @@ namespace mame
|
|||||||
int offset1 = ((offset & 0x3000) >> 1) | (offset & 0x07ff);
|
int offset1 = ((offset & 0x3000) >> 1) | (offset & 0x07ff);
|
||||||
return K052109_word_r(offset1);
|
return K052109_word_r(offset1);
|
||||||
}
|
}
|
||||||
public static void K052109_word_noA12_w(int offset,ushort data)
|
public static void K052109_word_noA12_w(int offset, ushort data)
|
||||||
{
|
{
|
||||||
int offset1;
|
int offset1;
|
||||||
offset1 = ((offset & 0x3000) >> 1) | (offset & 0x07ff);
|
offset1 = ((offset & 0x3000) >> 1) | (offset & 0x07ff);
|
||||||
K052109_word_w(offset1,data);
|
K052109_word_w(offset1, data);
|
||||||
}
|
}
|
||||||
public static void K052109_word_noA12_w1(int offset, byte data)
|
public static void K052109_word_noA12_w1(int offset, byte data)
|
||||||
{
|
{
|
||||||
@ -380,12 +376,12 @@ namespace mame
|
|||||||
ushort result;
|
ushort result;
|
||||||
if ((offset & 0x0031) != 0)
|
if ((offset & 0x0031) != 0)
|
||||||
{
|
{
|
||||||
result= Generic.spriteram16[offset];
|
result = Generic.spriteram16[offset];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
offset = ((offset & 0x000e) >> 1) | ((offset & 0x1fc0) >> 3);
|
offset = ((offset & 0x000e) >> 1) | ((offset & 0x1fc0) >> 3);
|
||||||
result= K053245_word_r(offset);
|
result = K053245_word_r(offset);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -426,7 +422,7 @@ namespace mame
|
|||||||
offset &= ~1;
|
offset &= ~1;
|
||||||
return (ushort)(K053244_r(offset + 1) | (K053244_r(offset) << 8));
|
return (ushort)(K053244_r(offset + 1) | (K053244_r(offset) << 8));
|
||||||
}
|
}
|
||||||
public static void K053244_word_noA1_w(int offset,ushort data)
|
public static void K053244_word_noA1_w(int offset, ushort data)
|
||||||
{
|
{
|
||||||
offset &= ~1;
|
offset &= ~1;
|
||||||
//if (ACCESSING_BITS_8_15)
|
//if (ACCESSING_BITS_8_15)
|
||||||
@ -461,7 +457,7 @@ namespace mame
|
|||||||
}
|
}
|
||||||
public static void punkshot_interrupt()
|
public static void punkshot_interrupt()
|
||||||
{
|
{
|
||||||
if (K052109_is_IRQ_enabled()!=0)
|
if (K052109_is_IRQ_enabled() != 0)
|
||||||
{
|
{
|
||||||
Generic.irq4_line_hold(0);
|
Generic.irq4_line_hold(0);
|
||||||
}
|
}
|
||||||
@ -575,7 +571,7 @@ namespace mame
|
|||||||
Upd7759.upd7759_reset_w(0, (byte)(data & 2));
|
Upd7759.upd7759_reset_w(0, (byte)(data & 2));
|
||||||
if ((data & 0x04) != 0)
|
if ((data & 0x04) != 0)
|
||||||
{
|
{
|
||||||
if (Sample.sample_playing(0)==0)
|
if (Sample.sample_playing(0) == 0)
|
||||||
{
|
{
|
||||||
Sample.sample_start_raw(0, sampledata, 0x40000, 20000, 0);
|
Sample.sample_start_raw(0, sampledata, 0x40000, 20000, 0);
|
||||||
}
|
}
|
||||||
@ -740,7 +736,7 @@ namespace mame
|
|||||||
//if (ACCESSING_BITS_0_7)
|
//if (ACCESSING_BITS_0_7)
|
||||||
{
|
{
|
||||||
Eeprom.eeprom_write_bit(data & 0x01);
|
Eeprom.eeprom_write_bit(data & 0x01);
|
||||||
Eeprom.eeprom_set_cs_line((data & 0x02)!=0 ?LineState.CLEAR_LINE :LineState.ASSERT_LINE);
|
Eeprom.eeprom_set_cs_line((data & 0x02) != 0 ? LineState.CLEAR_LINE : LineState.ASSERT_LINE);
|
||||||
Eeprom.eeprom_set_clock_line((data & 0x04) != 0 ? LineState.ASSERT_LINE : LineState.CLEAR_LINE);
|
Eeprom.eeprom_set_clock_line((data & 0x04) != 0 ? LineState.ASSERT_LINE : LineState.CLEAR_LINE);
|
||||||
dim_c = data & 0x18;
|
dim_c = data & 0x18;
|
||||||
K053244_bankselect(0, ((data & 0x20) >> 5) << 2);
|
K053244_bankselect(0, ((data & 0x20) >> 5) << 2);
|
||||||
@ -780,15 +776,15 @@ namespace mame
|
|||||||
//if (ACCESSING_BITS_0_7)
|
//if (ACCESSING_BITS_0_7)
|
||||||
{
|
{
|
||||||
Eeprom.eeprom_write_bit(data & 0x01);
|
Eeprom.eeprom_write_bit(data & 0x01);
|
||||||
Eeprom.eeprom_set_cs_line((data & 0x02)!=0 ? LineState.CLEAR_LINE : LineState.ASSERT_LINE);
|
Eeprom.eeprom_set_cs_line((data & 0x02) != 0 ? LineState.CLEAR_LINE : LineState.ASSERT_LINE);
|
||||||
Eeprom.eeprom_set_clock_line((data & 0x04)!=0 ? LineState.ASSERT_LINE : LineState.CLEAR_LINE);
|
Eeprom.eeprom_set_clock_line((data & 0x04) != 0 ? LineState.ASSERT_LINE : LineState.CLEAR_LINE);
|
||||||
if (last == 0 && (data & 0x20) != 0)
|
if (last == 0 && (data & 0x20) != 0)
|
||||||
{
|
{
|
||||||
Cpuint.cpunum_set_input_line(1, 0, LineState.HOLD_LINE);
|
Cpuint.cpunum_set_input_line(1, 0, LineState.HOLD_LINE);
|
||||||
//cpunum_set_input_line_and_vector(machine, 1, 0, LineState.HOLD_LINE, 0xff);
|
//cpunum_set_input_line_and_vector(machine, 1, 0, LineState.HOLD_LINE, 0xff);
|
||||||
}
|
}
|
||||||
last = data & 0x20;
|
last = data & 0x20;
|
||||||
K052109_set_RMRD_line((data & 0x40)!=0 ? LineState.ASSERT_LINE : LineState.CLEAR_LINE);
|
K052109_set_RMRD_line((data & 0x40) != 0 ? LineState.ASSERT_LINE : LineState.CLEAR_LINE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public static void thndrx2_eeprom_w2(byte data)
|
public static void thndrx2_eeprom_w2(byte data)
|
||||||
@ -806,7 +802,7 @@ namespace mame
|
|||||||
public static ushort prmrsocr_IN0_r()
|
public static ushort prmrsocr_IN0_r()
|
||||||
{
|
{
|
||||||
ushort res;
|
ushort res;
|
||||||
res = (ushort)((sbyte0 << 8)|(byte)sbyte1);
|
res = (ushort)((sbyte0 << 8) | (byte)sbyte1);
|
||||||
if (init_eeprom_count != 0)
|
if (init_eeprom_count != 0)
|
||||||
{
|
{
|
||||||
init_eeprom_count--;
|
init_eeprom_count--;
|
||||||
@ -926,7 +922,7 @@ namespace mame
|
|||||||
}
|
}
|
||||||
public static byte tmnt2_get_byte(int addr)
|
public static byte tmnt2_get_byte(int addr)
|
||||||
{
|
{
|
||||||
byte result=0;
|
byte result = 0;
|
||||||
if (addr <= 0x07ffff)
|
if (addr <= 0x07ffff)
|
||||||
{
|
{
|
||||||
result = Memory.mainrom[addr];
|
result = Memory.mainrom[addr];
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user