Davee讲解PSV的PSP模拟器Kermit协议的原理

互联网 | 编辑: 2012-03-30 09:10:04

今天Davee更新了博客,说明了vita中psp模拟器使用的Kermit协议的工作原理,并对有关函数进行了说明,由于涉及很多编程术语,个人翻译不太到位,大家凑合看,有问题欢迎提出。

今天Davee更新了博客,说明了vita中psp模拟器使用的Kermit协议的工作原理,并对有关函数进行了说明,由于涉及很多编程术语,个人翻译不太到位,大家凑合看,有问题欢迎提出。

PS:这篇博客Davee主要是解释PS Vita的PSP模拟器使用Kermit协议的原理,讲的主要是技术的东西,还提了函数和源码,有兴趣的童鞋可以看下(我木有看懂 - -)

原来他不只是一只池蛙(这儿不明白什么意思)!是的,最近我一直说到这个词,现在该由我来解释下了。Kermit,或者说是一种协议,它可能有一个有意思的名字(参看KIRK/SPOCK),它是PSP模拟器的一个通信接口。要特别提下,它允许PSP访问主机。

现在,我想说由于开发员不足,我将尝试简化这个令人好奇的想法,不过这东西相当复杂。我只会详细解释下API,因为底层结构仍需要整理下,以下是说明。

恩,这儿的Kermit能让模拟器访问主机来共享设备和其他活动点。可能最初是硬件的原因,PSP模拟器从许多硬件设备中剔除了。因而kermit出现了,它能让系统访问vita来使用硬件。顺便提一下,以下似乎是kermit负责的硬件:

记忆卡

闪存文件系统

DMA

LCD

GE

IDStorage

音频

照相

电池控制

USB

OSK

WLAN

RTC…等等

有意思的是,kermit通信并未用于蓝牙耳机和控制器输入。

为了理解kermit如何运作,探索API的应用很重要。从电源工具开始:

这个函数是命令发送函数。它接收一个初始值为最小64字节的kermit数据包(无需填充幅角),具有一个描述整套命令的命令模块,cmd:实际命令,遵循16字节包头幅角的编号。当等待求全运算和一个64字节回应时,它也能让你传输一个布尔值来回拨。

需要重点注意的是数据包的变量是64字节宽(不是32字节)升序编码的。最多有13个变量可以传输到主机。

有时,需要发送超过13个变量的数据。这是kermit提供存储API的地方。如下:

这些函数为数据传输给主机提供了基准。sceKermitMemory_driver_AAF047AC是基准命令。在以幅角量传输给主机前 它接收一个数据包,一个通向输入/输出缓冲器的指针和该模块的指示器。这让kermit传送命令或拥有输出位置时接收数据缓冲。

sceKermitMemory_driver_80E1240A和sceKermitMemory_driver_90B662D0彼此是相反的,正式提供输入和输出。这个API难以置信的简单,用来发送多重缓冲给kermit先验和执行命令。这些说明很废话,不过正如你说看到的,它正是一条传输某个接口的命令。你告诉它你需要传输什么数据,向它发送信号,然后它告诉你数据放哪儿。

https://github.com/DaveeFTW/vita_kermit

这儿有一些更编程化的源代码,也有一些用于kermit的反转函数。正如你所见,它在核心的某个循环队列信号上工作。大家可以眯一眼。

感谢Proxima和some1

更多精彩游戏资讯,请点击进入PChome游戏中心

相关阅读

每日精选

点击查看更多

首页 手机 数码相机 笔记本 游戏 DIY硬件 硬件外设 办公中心 数字家电 平板电脑