MAME.Core/README.md
2024-08-30 17:59:15 +08:00

81 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## MAME.Core
一个MAME模拟器核心的现代化.Net版本移植作为独立模拟器核心但是.NetStandard 2.0)
移植的目的是便于用于Unity Godot Stride MonoGame FNA 等跨平台的游戏引擎,并运行在不同平台。
MAME.Core 接口化的核心。算一个真正的泛用型.Net/mono 任意生态版本 可用的MAME核心库。性能卓越。
并且最终会接入HaoYueNet高性能网络库
[HaoYueNet-Github](https://github.com/Sin365/HaoYueNet "HaoYueNet-Github")
自己开发联机功能。
此外我自己也开发了Relpay功能用于随时保存和回看之前的游玩回放。
基于我自己的AxiRelpay
[AxiReplay-Github](https://github.com/Sin365/AxiReplay "AxiReplay-Github")
## MAME.Unity 项目说明
是基于MAME.Core在Unity中的实现
如上所说,加上对色彩通道和精度的合理对齐,视频非常高效的显示。音频也处理得较为完备。
PC和Android已经就比较好的实现。
目前有一个简易的游戏选择器Android制作了虚拟按键。
下一步是接入PSVPS3等游戏机往跨平台联机靠拢。
## MAME.Core 项目说明
原项目将MAME C++翻译为C#的一个Windows下的WinForm项目
高度依赖Windows、WinForm、Win32APITick、System.Drawing、BitmapDirectX音/视频
有些静态变量是放在Form做GDIgdi的扩展类里都是Bitmap用unsafe处理指针来填充RGBA。
本项目(MAME.Core)中 **已经完全脱离如上依赖** ,并将一切标准化,去掉和整理好一切不规范的部分。
是一个标准的.Net Standard 2.0 库。无障碍跨平台。
接口抽象化IKeyboard、ILog、IMouse、IResources、ISoundPlayer、IVideoPlayer
抽象枚举MotionKey
资源加载设置按键映射音视频接入可以自由自定义接入任何C#生态的平台。
btw总所周知街机游戏已经有类似现代的场景和摄像机的概念
比如CPS1 实际逻辑绘制的画布场景是512x512实际显示区域类似摄像机概念只有其中384*224
在完美显示必要内容时不再使用Clone的方式重写而是像素矩阵绘制时那么我们需要扣出中间那部分。
最高效率的数据读取设计模式,就是直接不拷贝。
MAME.Core中通过计算的方式仅处理显示区域的颜色。
并在提交颜色int[]时额外提供了GC固定维护的安全Ptr非unsafe甚至可以做到显示GPU提交直通。
模拟器核心中的颜色缓冲的指针引用直接提交给外部GPU DrawCall如Unity接入可以用于直接映射Texture
**效率极佳**没有新的内存对象无GC。
## References
shunninghuang - https://www.codeproject.com/Articles/1275365/The-Main-Architecture-of-MAME-NET
MAME-Multiple Arcade Machine Emulator - https://github.com/mamedev
MSDN - https://msdn.microsoft.com
BizHawk M68000 and Z80 code - https://github.com/TASEmulators/BizHawk/tree/master/src/BizHawk.Emulation.Cores/CPUs
VCMAME detail by Bryan McPhail - https://www.codeproject.com/Articles/4923/VCMAME-Multiple-Arcade-Machine-Emulator-for-Visual
MAME and MAMEUI Visual C Project Files - http://www.mikesarcade.com/arcade/vcmame.html
CPS1.NET - https://www.codeproject.com/Articles/998595/CPS1-NET-A-Csharp-Based-CPS1-MAME-Emulator