手机游戏生命线taylor is busyiisbusy

谁能超越贝爷活到最后 可以吞食天地的求生游戏
来源:太平洋   作者:未知
NO.9《生命线》Lifeline...
游戏类型:休闲益智
开发厂商:3 Minute Games
游戏大小:19.9 MB(收费/6元)
  《生命线》是一款文字冒险手游,在游戏中,玩家将与一位名叫Taylor的宇航员进行交流,帮助他解决各种难题,从而逃离危险。目前该作已经于今天正式上架中国区AppStore(不过只有英文版本),售价18元人民币,喜欢这类风格的玩家可以去下载了。
本作是一款文字冒险游戏
  《生命线》的剧本由曾参与创作《人中之狼(The Wolf Amog Us)》的Dave Justus负责编写。本作的背景设定在一个地外星球上,由于飞船坠毁,导致可怜的宇航员Taylor被困在这里。而他的同僚不是失踪就是已经阵亡,于是我们成为他求生的唯一希望。
玩家只能通过文字与宇航员联系
  玩家在游戏中将以文字通讯的形式与Taylor沟通,通过游戏提供的选项,指引他在陌生的星球上探险求生。不同的选择将直接影响剧情的发展,你能带领他逃离厄运吗?只有试过才知道。据悉游戏将在不久后还会登陆苹果手表Apple Watch,届时玩家将可以随时与Taylor进行交流,获悉他的近况。
不得不说英文对于国内玩家来说是一个不小的障碍
游戏下载:
友情提示:支持键盘左右键“← →”翻页
热门手游推荐
第三人称射击当前位置:
《这是我的战争》领衔!好玩的求生冒险手游盘点
在手游类别中,生存游戏算是一个小众领域,只要活着就是生存游戏的基本游戏原则,这些游戏都有一个共同点,开放的玩法和开放的故事走向,主角孤身一人,要靠自己制造工具生存下去。如果想学习一下野外生存能力,对于游戏的耐玩性,自由性有很高的要求,那么这些生存游戏绝对适合你。
  NO.11《生命线》Lifeline... &  游戏类型:休闲益智  开发厂商:3 Minute Games  游戏大小:19.9 MB(收费/6元)  《生命线》是一款文字冒险手游,在游戏中,玩家将与一位名叫Taylor的宇航员进行交流,帮助他解决各种难题,从而逃离危险。目前该作已经于今天正式上架中国区AppStore(不过只有英文版本),售价18元人民币,喜欢这类风格的玩家可以去下载了。   《生命线》的剧本由曾参与创作《人中之狼(The Wolf Among Us)》的Dave Justus负责编写。本作的背景设定在一个地外星球上,由于飞船坠毁,导致可怜的宇航员Taylor被困在这里。而他的同僚不是失踪就是已经阵亡,于是我们成为他求生的唯一希望。  玩家在游戏中将以文字通讯的形式与Taylor沟通,通过游戏提供的选项,指引他在陌生的星球上探险求生。不同的选择将直接影响剧情的发展,你能带领他逃离厄运吗?只有试过才知道。据悉游戏将在不久后还会登陆苹果手表Apple Watch,届时玩家将可以随时与Taylor进行交流,获悉他的近况。& & & & &&
提示:键盘也能翻页,试试“← →”键
热门新闻排行准备工作该做的都做了,别嫌太麻烦,什么事情都要经过这么一个阶段,大家都明白。现 在看看第二阶段的重头戏,看看设备是怎么从Address进入Configured的。1501行,这行主要就是对那些刚出去偷过情的人说的,如果已经在 Configured状态了,就得做些清理工作,别被老婆发现了,要装作若无其事的退回到Address状态。都清理些什么怎么去清理?别着急,要想学 会,得仔细研究下message.c里的usb_disable_device函数。
&* usb_disable_device - Disable all the endpoints for a USB device
&* @dev: the device whose endpoints are being disabled
&* @skip_ep0: 0 to disable endpoint 0, 1 to skip it.
&* Disables all the device&s endpoints, potentially including endpoint 0.
&* Deallocates hcd/hardware state for the endpoints (nuking all or most
&* pending urbs) and usbcore state for the interfaces, so that usbcore
&* must usb_set_configuration() before any interfaces could be used.
void (struct
*, int skip_ep0)
&&&&&&&&int ;
&&&&&&&& (&-&, "%s nuking %s URBs/n", ,
&&&&&&&&&&&&&&&&&&&&&&&& skip_ep0 ? "non-ep0" : "all");
&&&&&&&& for ( = skip_ep0;
& 16; ++) {
&&&&&&&&&&&&&&&& (, );
&&&&&&&&&&&&&&&& (,
&&&&&&&& }
&&&&&&&& -&[0] = -&[1] = 0;
&&&&&&&& /* getting rid of interfaces will disconnect
&&&&&&&&& * any drivers bound to them (a key side effect)
&&&&&&&&& */
&&&&&&&& if (-&actconfig) {
&&&&&&&&&&&&&&&& for ( = 0;
& -&actconfig-&.bNumI ++) {
&&&&&&&&&&&&&&&&&&&&&&&& struct &&& *;
&&&&&&&&&&&&&&&&&&&&&&&&/* remove this interface if it has been registered */
&&&&&&&&&&&&&&&&&&&&&&&&
= -&actconfig-&[];
&&&&&&&&&&&&&&&&&&&&&&&& if (!(&-&))
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&
(&-&, "unregistering interface %s/n",
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& -&.);
&&&&&&&&&&&&&&&&&&&&&&&& ();
&&& &&&&&&&&&&&&&&&&&&&&& (&-&);
&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&&& /* Now that the interfaces are unbound, nobody should
&&&&&&&&&&&&&&&&& * try to access them.
&&&&&&&&&&&&&&&&& */
&&&&&&&&&&&&&&&& for ( = 0;
& -&actconfig-&.bNumI ++) {
&&&&&&&&&&&&&&&&&&&&&&&&
(&-&actconfig-&[]-&);
&&&&&&&&&&&&&&&&&&&&&&&& -&actconfig-&[] = ;
&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&&& -&actconfig = ;
&&&&&&&&&&&&&&&& if (-& == USB_STATE_CONFIGURED)
&&&&&&&&&&&&&&&&&&&&&&&& (, USB_STATE_ADDRESS);
&&&&&&&& }
经 过研究我们可以发现,usb_disable_device函数的清理工作主要有两部分,一是将设备里所有端点给disable掉,一是将设备当前配置使 用的每个接口都从系统里给unregister掉,也就是将接口和它对应的驱动给分开。前面不是说要那些行为不端背着老婆玩儿偷情的男人要向这个函数学习 么,学习什么?就是也要分两个方面做清理工作,一是喷点香水或者洒点酒气什么的,将谁谁的味道给disable掉,去掉,一是从手机电脑等里面将谁谁的暧 昧信息给删掉,将自己和那个谁谁的关系给断掉,省得老婆发现了伤心,要爱惜老婆爱惜生命。
先说下第二部分的工作,1409行,actconfig表示的是设备当前激活的配置,只有它不为空时才有接下来清理的必要。
这个for循环就是将这个配置的每个接口从设备模型的体系中删除掉,将它们和对应的接口驱动分开,没有驱动了,这些接口也就丧失了能力,当然也就什么作用都发挥不了了,这也是名字里那个disable的真正含意所在。
行,将actconfig的interface数组置为空,然后再将actconfig置为空,这里你可能会有的一个问题是,为什么只是置为空,既然要清 理actconfig,为什么不直接将它占用的内存给释放掉?这个问题问的好,说明你足够细心,不过你应该注意到actconfig只是一个指针,一个地 址,你应该首先弄清楚这个地址里保存的是什么东西再决定是不是将它给释放掉,那这个指针指向哪儿?它指向设备struct usb_device结构的config数组里的其中一项,当前被激活的是哪一个配置,它就指向config数组里的哪一项,你这里只是不想让设备当前激 活任何一个配置而已,没必要将actconfig指向的那个配置给释放掉吧,前面在设备生命线那里走了那么久,历尽千辛万苦才将设备各个配置的内容给拿过 来放到config数组里,你这里如果给释放掉,对得起谁啊,岂不要哭死。
那 这么说的话另一个问题就出来了,既然actconfig指向了config里的一项,那为什么要把那个配置的interface数组给置为空,这不是修改 了那个配置的内容,从而也修改了config数组的内容么?你先别着急,俺帮你回忆一下,在设备生命线那里取配置描述符的,解析返回的那堆数据时,只是把 每个配置里的cache数组,也就是intf_cache数组给初始化了,并没有为interface数组充实任何的内容,这里做清理工作的目的就是要恢 复原状,当然要将它置为空了,那么配置的interface数组又在哪里被充实了那?usb_set_configuration函数里第二个高潮阶段之 后不是还有个第三个阶段么,就在那里,你那时激活了哪个配置,就为哪个配置的interface数组动手术,填点东西。
1071行,如果这个设备此时确实是在Configured状态,就让它回到Address。
现 在回头来说说第一部分的清理工作。这个部分主要就是为每个端点调用了usb_disable_endpoint函数,将挂在它们上面的urb给取消掉。为 什么要这么做?你想想,能调用到usb_disable_device这个函数,一般来说设备的状态要发生变化了,设备的状态都改变了,那设备的那些端点 的状态要不要改变?还有挂在它们上面的那些urb需不需要给取消掉?这些都是很显然的事情,就拿现在让设备从Configured回到Address来说 吧,在Address的时候,你只能通过缺省管道也就是端点0对应的管道与设备进行通信的,但是在Configured的时候,设备的所有端点都是能够使 用的,它们上面可能已经挂了一些urb正在处理或者将要处理,那么你这时让设备要从Configured变到Address,是不是应该先将这些urb给 取消掉?
还 有个问题是参数skip_ep0是嘛意思?这里for循环的i是从skip_ep0开始算起,也就是说skip_ep0为1的话,就不需要对端点0调用 usb_disable_endpoint函数了,按常理来说,设备状态改变了,是需要把每个端点上面的urb给取消掉的,这里面当然也要包括端点0,但 是写代码的哥们儿这里搞出个skip_ep0自然有他们的玄机,蓦然回首一下,usb_set_configuration()调用这个函数的时候参数 skip_ep0的值是什么?是1,因为这时候是从Configured回到Address,这个过程中,其它端点是从能够使用变成了不能使用,但端点0 却是一直都很强势,虽说是设备发生了状态的变化,但在这两个状态里它都是要正常使用的,所以就没必要disable它了。
什 么时候需要disable端点0?目前版本的内核里俺只发现了两种情况,一是设备要断开的时候,一是设备从Default进化到Address的时候,虽 说不管是Default还是Address,端点0都是需要能够正常使用的,但因为地址发生改变了,毫无疑问,你需要将挂在它上面的urb清除掉。俺当时 讲设备生命线的时候,在设置完设备地址,设备进入Address后,第二种情况的这个步骤给有意无意的飘过了,主要是当时也不影响理解,现在既然遇到了, 就把它给补上吧。
在设备生命线的那个过程中,设置完设备地址,让设备进入Address状态后,立马就调用了hub.c里一个名叫ep0_reinit的函数
static void (struct
&&&&&&&& (udev, 0 + );
&&&&&&&& (udev, 0 + );
&&&&&&&& udev-&ep_in[0] = udev-&ep_out[0] = &udev-&ep0;
这 个函数里只对端点0调用了usb_disable_endpoint(),但是端点0接下来还是要使用的,不然你就取不到设备那些描述符了,所以接着重新 将ep0赋给ep_in[0]和ep_out[0]。多说无益,还是到usb_disable_endpoint()里面去看看吧。
&* usb_disable_endpoint -- Disable an endpoint by address
&* @dev: the device whose endpoint is being disabled
&* @epaddr: the endpoint&s address.&Endpoint number for output,
&*&&&&& endpoint number + USB_DIR_IN for input
&* Deallocates hcd/hardware state for this endpoint ... and nukes all
&* pending urbs.
&* If the HCD hasn&t registered a disable() function, this sets the
&* endpoint&s maxpacket size to 0 to prevent further submissions.
void (struct
*, unsigned int epaddr)
&&&&&&&& unsigned int
= epaddr & ;
&&&&&&&& struct
&&&&&&&& if (!)
&&&&&&&&&&&&&&&&
&&&&&&&& if ((epaddr)) {
&&&&&&&&&&&&&&&& ep = -&ep_out[];
&&&&&&&&&&&&&&&& -&ep_out[] = ;
&&&&&&&& } else {
&&&&&&&&&&&&&&&& ep = -&ep_in[];
&&&&&&&&&&&&&&&& -&ep_in[] = ;
&&&&&&&& }
&&&&&&&& if (ep && -&)
&&&&&&&&&&&&&&&& (, ep);
这 个函数先获得端点号和端点的方向,然后从ep_in或ep_out两个数组里取出端点的struct usb_host_endpoint结构体,并将数组里的对应项置为空,要注意的是这里同样不是释放掉数组里对应项的内存而是置为空。这两个数组里的 ep_in[0]和ep_out[0]是早就被赋值了,至于剩下的那些项是在什么时候被赋值的,又是指向了什么东西,就是 usb_set_configuration函数第三个阶段的事了。
不要怪俺说得比较粗略,只是都在前面说过了,你既然已经看到这里了,只要用过那么一点点心就会明白这里是什么意思。呼吁一下:要用心啊,要用心去爱你的邻居,不过不要让她的老公知道。
最 后1003行调用了一个usb_hcd_endpoint_disable函数,主要的工作还得它来做,不过这已经深入HCD的腹地了,就不多说了,还是 飘回usb_disable_device()吧。在为每个端点都调用了usb_disable_endpoint()之后,还有一个小步骤要做,就是将 设备struct usb_device结构体的toggle数组置为0。至于toggle数组干吗的,为啥要被初始化为0,你还是蓦然回首到设备那节去看吧。俺要接着飘回 usb_set_configuration()了。
1504 行,又一次与熟悉的陌生人usb_control_msg()相遇了,每当我们需要向设备发送请求的时候它就会适时的出现,我们每个人是不是也都希望在自 己的生活里有这么一个角色?当你需要的时候,她就会出现在你身边,你快乐的时候,她能够分享你的快乐,你痛苦的时候,她也能够给你慰藉,你无聊的时候,她 能够陪你去逛衡山路,你烦躁的时候,她能够用自己的柔情平和你的心情。
usb_control_msg这次出现的目的当然是为了SET_CONFIGURATION请求,这里只说一下它的那堆参数,看一下spec 9.4.7的那张表
SET_CONFIGURATION 请求不需要DATA transaction,而且还是协议里规定所有设备都要支持的标准请求,也不是针对端点或者接口什么的,而是针对设备的,所以bRequestType 只能为0x80,就是上面表里的B,也就是1505行的第一个0,wValue表示配置的bConfigurationValue,就是 1505行的configuration。
1514 行,将激活的那个配置的地址赋给actconfig。如果cp为空,重新设置设备的状态为Address,并将之前准备的那些struct usb_interface结构体和new_interfaces释放掉,然后返回。扫一下前面的代码,cp有三种可能为空,一是参数 configuration为-1,一是参数configuration为0,且从设备的config数组里拿出来的就为空,一是 SET_CONFIGURATION请求除了问题。不管怎么说,走到1515行,cp还是空的,你就要准备返回了。
1520行,事情在这里发展达到了高潮的顶端,设置设备的状态为Configured。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:431090次
积分:5026
积分:5026
排名:第2493名
原创:57篇
转载:190篇
评论:93条
(1)(1)(2)(3)(1)(4)(3)(1)(1)(2)(3)(1)(7)(16)(4)(4)(9)(15)(21)(18)(131)当前位置:&&
全英文文字冒险游戏《生命线》上架iOS
来源:作者:白牙卡卡发表时间:
《生命线》是一款全英文版的文字冒险游戏,今天刚刚登陆iOS平台。据说这款游戏未来还将会登陆苹果手表Apple Watch。赶快跟白牙一起来了解一下这款手游新作《生命线》吧!本作的游戏背景设定是在宇宙中,因飞船坠毁,宇航员Taylor被困,玩家需要同问文字通讯方式与Taylor沟通并且提供帮助。这款游戏定价18元,有兴趣的玩家不妨前去苹果App Store看看吧!
【责任编辑:白牙卡卡】
手机上看攻略 独家礼包等你拿
12345678910
周排行榜月排行榜
开测表开服表
不删档内测
不删档内测
不删档内测
不删档内测

我要回帖

更多关于 taylor is busy 的文章

 

随机推荐