forked from sin365/AxibugEmuOnline
Compare commits
No commits in common. "090322a60aaff194727e0185c34b21e5f3e24e86" and "8dc535e874f1d0cf4d310c46051bef9296160343" have entirely different histories.
090322a60a
...
8dc535e874
@ -26,7 +26,7 @@ RenderSettings:
|
|||||||
m_AmbientIntensity: 1
|
m_AmbientIntensity: 1
|
||||||
m_AmbientMode: 0
|
m_AmbientMode: 0
|
||||||
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
|
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
|
||||||
m_SkyboxMaterial: {fileID: 0}
|
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
m_HaloStrength: 0.5
|
m_HaloStrength: 0.5
|
||||||
m_FlareStrength: 1
|
m_FlareStrength: 1
|
||||||
m_FlareFadeSpeed: 3
|
m_FlareFadeSpeed: 3
|
||||||
@ -38,7 +38,7 @@ RenderSettings:
|
|||||||
m_ReflectionIntensity: 1
|
m_ReflectionIntensity: 1
|
||||||
m_CustomReflection: {fileID: 0}
|
m_CustomReflection: {fileID: 0}
|
||||||
m_Sun: {fileID: 0}
|
m_Sun: {fileID: 0}
|
||||||
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
|
m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1}
|
||||||
m_UseRadianceAmbientProbe: 0
|
m_UseRadianceAmbientProbe: 0
|
||||||
--- !u!157 &3
|
--- !u!157 &3
|
||||||
LightmapSettings:
|
LightmapSettings:
|
||||||
@ -123,6 +123,99 @@ NavMeshSettings:
|
|||||||
debug:
|
debug:
|
||||||
m_Flags: 0
|
m_Flags: 0
|
||||||
m_NavMeshData: {fileID: 0}
|
m_NavMeshData: {fileID: 0}
|
||||||
|
--- !u!1 &708549044
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 708549046}
|
||||||
|
- component: {fileID: 708549045}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Directional Light
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!108 &708549045
|
||||||
|
Light:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 708549044}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 10
|
||||||
|
m_Type: 1
|
||||||
|
m_Shape: 0
|
||||||
|
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
|
||||||
|
m_Intensity: 1
|
||||||
|
m_Range: 10
|
||||||
|
m_SpotAngle: 30
|
||||||
|
m_InnerSpotAngle: 21.80208
|
||||||
|
m_CookieSize: 10
|
||||||
|
m_Shadows:
|
||||||
|
m_Type: 2
|
||||||
|
m_Resolution: -1
|
||||||
|
m_CustomResolution: -1
|
||||||
|
m_Strength: 1
|
||||||
|
m_Bias: 0.05
|
||||||
|
m_NormalBias: 0.4
|
||||||
|
m_NearPlane: 0.2
|
||||||
|
m_CullingMatrixOverride:
|
||||||
|
e00: 1
|
||||||
|
e01: 0
|
||||||
|
e02: 0
|
||||||
|
e03: 0
|
||||||
|
e10: 0
|
||||||
|
e11: 1
|
||||||
|
e12: 0
|
||||||
|
e13: 0
|
||||||
|
e20: 0
|
||||||
|
e21: 0
|
||||||
|
e22: 1
|
||||||
|
e23: 0
|
||||||
|
e30: 0
|
||||||
|
e31: 0
|
||||||
|
e32: 0
|
||||||
|
e33: 1
|
||||||
|
m_UseCullingMatrixOverride: 0
|
||||||
|
m_Cookie: {fileID: 0}
|
||||||
|
m_DrawHalo: 0
|
||||||
|
m_Flare: {fileID: 0}
|
||||||
|
m_RenderMode: 0
|
||||||
|
m_CullingMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_RenderingLayerMask: 1
|
||||||
|
m_Lightmapping: 4
|
||||||
|
m_LightShadowCasterMode: 0
|
||||||
|
m_AreaSize: {x: 1, y: 1}
|
||||||
|
m_BounceIntensity: 1
|
||||||
|
m_ColorTemperature: 6570
|
||||||
|
m_UseColorTemperature: 0
|
||||||
|
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
m_UseBoundingSphereOverride: 0
|
||||||
|
m_UseViewFrustumForShadowCasterCull: 1
|
||||||
|
m_ShadowRadius: 0
|
||||||
|
m_ShadowAngle: 0
|
||||||
|
--- !u!4 &708549046
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 708549044}
|
||||||
|
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
|
||||||
|
m_LocalPosition: {x: 0, y: 3, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
|
||||||
--- !u!1 &1232273651
|
--- !u!1 &1232273651
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -159,7 +252,7 @@ Camera:
|
|||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_ClearFlags: 1
|
m_ClearFlags: 1
|
||||||
m_BackGroundColor: {r: 0, g: 0, b: 0, a: 0}
|
m_BackGroundColor: {r: 1, g: 1, b: 1, a: 0}
|
||||||
m_projectionMatrixMode: 1
|
m_projectionMatrixMode: 1
|
||||||
m_GateFitMode: 2
|
m_GateFitMode: 2
|
||||||
m_FOVAxisMode: 0
|
m_FOVAxisMode: 0
|
||||||
@ -204,7 +297,7 @@ Transform:
|
|||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_RootOrder: 1
|
m_RootOrder: 2
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!1 &1359344831
|
--- !u!1 &1359344831
|
||||||
GameObject:
|
GameObject:
|
||||||
@ -270,7 +363,7 @@ Transform:
|
|||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_RootOrder: 0
|
m_RootOrder: 1
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!1001 &4232056520998800727
|
--- !u!1001 &4232056520998800727
|
||||||
PrefabInstance:
|
PrefabInstance:
|
||||||
@ -281,7 +374,7 @@ PrefabInstance:
|
|||||||
m_Modifications:
|
m_Modifications:
|
||||||
- target: {fileID: 4232056521131536011, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3}
|
- target: {fileID: 4232056521131536011, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3}
|
||||||
propertyPath: m_RootOrder
|
propertyPath: m_RootOrder
|
||||||
value: 2
|
value: 3
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 4232056521131536011, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3}
|
- target: {fileID: 4232056521131536011, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3}
|
||||||
propertyPath: m_LocalPosition.x
|
propertyPath: m_LocalPosition.x
|
||||||
@ -327,17 +420,5 @@ PrefabInstance:
|
|||||||
propertyPath: m_Name
|
propertyPath: m_Name
|
||||||
value: NesEmulator
|
value: NesEmulator
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 4232056521759880274, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3}
|
|
||||||
propertyPath: m_Enabled
|
|
||||||
value: 1
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 4232056521759880274, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3}
|
|
||||||
propertyPath: m_Texture
|
|
||||||
value:
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 4232056521759880276, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3}
|
|
||||||
propertyPath: m_IsActive
|
|
||||||
value: 1
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
m_RemovedComponents: []
|
m_RemovedComponents: []
|
||||||
m_SourcePrefab: {fileID: 100100000, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3}
|
m_SourcePrefab: {fileID: 100100000, guid: f8bea3f8aa351bb46ada33b2274729ea, type: 3}
|
||||||
|
|||||||
@ -14,7 +14,6 @@ namespace AxibugEmuOnline.Client
|
|||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
{
|
{
|
||||||
Application.targetFrameRate = 60;
|
|
||||||
StartGame("Kirby.nes");
|
StartGame("Kirby.nes");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,38 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!84 &8400000
|
||||||
|
RenderTexture:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: New Render Texture
|
||||||
|
m_ImageContentsHash:
|
||||||
|
serializedVersion: 2
|
||||||
|
Hash: 00000000000000000000000000000000
|
||||||
|
m_ForcedFallbackFormat: 4
|
||||||
|
m_DownscaleFallback: 0
|
||||||
|
m_IsAlphaChannelOptional: 0
|
||||||
|
serializedVersion: 3
|
||||||
|
m_Width: 272
|
||||||
|
m_Height: 240
|
||||||
|
m_AntiAliasing: 1
|
||||||
|
m_MipCount: -1
|
||||||
|
m_DepthFormat: 2
|
||||||
|
m_ColorFormat: 8
|
||||||
|
m_MipMap: 0
|
||||||
|
m_GenerateMips: 1
|
||||||
|
m_SRGB: 0
|
||||||
|
m_UseDynamicScale: 0
|
||||||
|
m_BindMS: 0
|
||||||
|
m_EnableCompatibleFormat: 1
|
||||||
|
m_TextureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_FilterMode: 1
|
||||||
|
m_Aniso: 0
|
||||||
|
m_MipBias: 0
|
||||||
|
m_WrapU: 1
|
||||||
|
m_WrapV: 1
|
||||||
|
m_WrapW: 1
|
||||||
|
m_Dimension: 2
|
||||||
|
m_VolumeDepth: 1
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ffe34aaf87e4b9942b4c2ac05943d444
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 8400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -1,7 +1,13 @@
|
|||||||
using AxibugEmuOnline.Client.Assets.Script.NesEmulator;
|
using AxibugEmuOnline.Client.Assets.Script.NesEmulator;
|
||||||
|
using Codice.CM.Client.Differences;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Text;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
using UnityEngine.Playables;
|
||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
using VirtualNes.Core;
|
using VirtualNes.Core;
|
||||||
|
|
||||||
@ -11,29 +17,23 @@ namespace AxibugEmuOnline.Client
|
|||||||
{
|
{
|
||||||
public RawImage Image;
|
public RawImage Image;
|
||||||
|
|
||||||
private UInt32[] wrapTexBuffer;
|
private Color32[] wrapTexBuffer;
|
||||||
private IntPtr wrapTexBufferPointer;
|
private IntPtr wrapTexBufferPointer;
|
||||||
private Texture2D wrapTex;
|
private Texture2D wrapTex;
|
||||||
private int TexBufferSize;
|
|
||||||
|
|
||||||
private uint[] pPal;
|
|
||||||
public void SetDrawData(byte[] screenData, byte[] lineColorMode, int screenWidth, int screenHeight)
|
public void SetDrawData(byte[] screenData, byte[] lineColorMode, int screenWidth, int screenHeight)
|
||||||
{
|
{
|
||||||
if (wrapTex == null)
|
if (wrapTex == null)
|
||||||
{
|
{
|
||||||
wrapTex = new Texture2D(screenWidth, screenHeight, TextureFormat.BGRA32, false);
|
wrapTex = new Texture2D(screenWidth, screenHeight, TextureFormat.BGRA32, false);
|
||||||
wrapTexBuffer = new UInt32[screenWidth * screenHeight];
|
wrapTexBuffer = new Color32[screenWidth * screenHeight];
|
||||||
// 固定数组,防止垃圾回收器移动它
|
// 固定数组,防止垃圾回收器移动它
|
||||||
GCHandle handle = GCHandle.Alloc(wrapTexBuffer, GCHandleType.Pinned);
|
GCHandle handle = GCHandle.Alloc(wrapTexBuffer, GCHandleType.Pinned);
|
||||||
// 获取数组的指针
|
// 获取数组的指针
|
||||||
wrapTexBufferPointer = handle.AddrOfPinnedObject();
|
wrapTexBufferPointer = handle.AddrOfPinnedObject();
|
||||||
|
|
||||||
Image.texture = wrapTex;
|
|
||||||
pPal = PaletteDefine.m_cnPalette[0];
|
|
||||||
|
|
||||||
TexBufferSize = wrapTexBuffer.Length * 4;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint[] pPal;
|
||||||
int pScn = 0;
|
int pScn = 0;
|
||||||
int width;
|
int width;
|
||||||
|
|
||||||
@ -42,26 +42,41 @@ namespace AxibugEmuOnline.Client
|
|||||||
|
|
||||||
for (int line = 0; line < screenHeight; line++)
|
for (int line = 0; line < screenHeight; line++)
|
||||||
{
|
{
|
||||||
|
if ((lineColorMode[line] & 0x80) == 0)
|
||||||
|
{
|
||||||
|
pPal = PaletteDefine.m_cnPalette[lineColorMode[line] & 0x07];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pPal = PaletteDefine.m_mnPalette[lineColorMode[line] & 0x07];
|
||||||
|
}
|
||||||
|
|
||||||
width = screenWidth;
|
width = screenWidth;
|
||||||
|
|
||||||
while (width > 0)
|
while (width > 0)
|
||||||
{
|
{
|
||||||
var edx = screenData[pScn + 8];
|
var edx = screenData[pScn + 8];
|
||||||
|
|
||||||
int index = edx & 0xFF;
|
byte index = (byte)(edx & 0xFF);
|
||||||
var colorData = pPal[index];
|
var colorData = pPal[index];
|
||||||
Dst[pDst] = 0xFF000000 | colorData;
|
var rawData = BitConverter.GetBytes(colorData);
|
||||||
|
Dst[pDst] = new Color32(rawData[0], rawData[1], rawData[2], 255);
|
||||||
|
|
||||||
pScn += 1;
|
pScn += 1;
|
||||||
pDst += 1;
|
pDst += 1;
|
||||||
width -= 1;
|
width -= 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
pScn += 16;// PPU.SCREEN_WIDTH - screenWidth;
|
pScn += PPU.SCREEN_WIDTH - screenWidth;
|
||||||
}
|
}
|
||||||
|
|
||||||
wrapTex.LoadRawTextureData(wrapTexBufferPointer, TexBufferSize);
|
//wrapTex.SetPixels32(wrapTexBuffer);
|
||||||
|
wrapTex.LoadRawTextureData(wrapTexBufferPointer, screenWidth * screenHeight * 4);
|
||||||
wrapTex.Apply();
|
wrapTex.Apply();
|
||||||
|
|
||||||
|
Graphics.Blit(wrapTex, Image.mainTexture as RenderTexture);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -45,7 +45,7 @@ namespace VirtualNes.Core
|
|||||||
private APU apu;
|
private APU apu;
|
||||||
internal R6502 R = new R6502();
|
internal R6502 R = new R6502();
|
||||||
private byte[] ZN_Table = new byte[256];
|
private byte[] ZN_Table = new byte[256];
|
||||||
private ByteArrayRef STACK;
|
private Memory<byte> STACK;
|
||||||
|
|
||||||
public CPU(NES parent)
|
public CPU(NES parent)
|
||||||
{
|
{
|
||||||
@ -1361,12 +1361,12 @@ namespace VirtualNes.Core
|
|||||||
|
|
||||||
private byte POP()
|
private byte POP()
|
||||||
{
|
{
|
||||||
return STACK[(++R.S) & 0xFF];
|
return STACK.Span[(++R.S) & 0xFF];
|
||||||
}
|
}
|
||||||
|
|
||||||
private void PUSH(byte V)
|
private void PUSH(byte V)
|
||||||
{
|
{
|
||||||
STACK[(R.S--) & 0xFF] = V;
|
STACK.Span[(R.S--) & 0xFF] = V;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SEI()
|
private void SEI()
|
||||||
@ -2010,7 +2010,7 @@ namespace VirtualNes.Core
|
|||||||
DMA_cycles = 0;
|
DMA_cycles = 0;
|
||||||
|
|
||||||
// STACK quick access
|
// STACK quick access
|
||||||
STACK = new ByteArrayRef(MMU.RAM, 0x0100, MMU.RAM.Length - 0x100);
|
STACK = new Memory<byte>(MMU.RAM, 0x0100, MMU.RAM.Length - 0x100);
|
||||||
|
|
||||||
// Zero/Negative FLAG
|
// Zero/Negative FLAG
|
||||||
ZN_Table[0] = Z_FLAG;
|
ZN_Table[0] = Z_FLAG;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user