sourceforge.jpIntel Galileo板子怎样能同时make并且用USB client接口连接电脑

sourceforge.jp  时间:2021-02-04  阅读:()

关于安卓的开发和移植

登录 e.jp,就可以获得关于标准版ONS的详细介绍与各版本下载路径。

至于ONS-Android,则是由ONS作者提供的,完全实现了ONS功能的,专门用于跑在Android平台的ONS版本。

如果您要在Android上进行NS游戏移植,首先就离不开ONS-Android的下载与编译。

ONS-Android的编译: ONS-Android的编译,仅需要如下步骤就可以做到。

1 下载SDL的Android版扩展库 由于标准版SDL源码包中尚未包括Android本地化支持,所以我们需要单独下载Android版SDL源码包,才能在Android环境中正常编译与运行SDL程序。

事实上,所有想使用SDL以C/C++方式开发Android游戏的用户,也会需要这个SDL运行库的支持。

下载地址: / (PS: ONScripter-Android内置已是这个运行库,不必真正下载,此处仅说明来源)。

2 下载Android版ONScripter 下载地址: e.jp/android/onscripter_android.tar.gz 由于ONS-Android采用JNI方式,进行C/C++部分与Java部分的交互,因此下载后的源代码也就同时包含了java(功能集中在游戏载入,界面初始化与JNI调用)与纯C(sdl-android支持库)两大部分的源码。

不过,真正解释执行NS脚本的ONScripter本体(C++实现)这时却并没有包含在内(估计是作者考虑到ONScripter核心代码是所有平台共通的,才没有直接放入ONS-Android当中)。

现在,我们还需要下载ONScripter的核心源码部分,才能真正进行ONS-Android编译。

3 下载标准版ONScripter 下载地址(也可选其它版本): e.jp/onscripter-20110619.tar.gz 好了,编译ONS-Android的要素全部齐备了。

现在,将最后下载的ONS核心源码解压,并放入onscripter_android的jniapplication文件夹下(建议解压时不要改名,因为 ONS的Android.mk配置里默认就是编译onscripter*下文件,改名很可能导致找不到目标文件(除非您重写了Android.mk配置))。

这时,我们只要通过NDK编译onscripter_android项目,就能立刻得到相关的so文件了(累计将编译出九个文件,其中只有libapplication.so为ONS运行库,其余为SDL支持库),相当之简单吧? 下图为通过Cygwin在Windows中编译ONS的画面。

可以说,只要系统环境设定正常,原始ONS-Android配置已可保证编译成功。

假如在编译时提示找不到某某文件,则说明环境变量中缺少必要的系统支持库路径,并非onscripter_android源码不全,请自行在Android.mk添加相关路径或者修改Cygwin环境配置,具体请参考NDK开发文档或Cygwin使用文档(当然,直接Ubuntu编译最简单)。

编译成功后,获得的so文件列表: 有了so支持库与Java代码,任何稍有Android(或Java)开发经验者,都能轻易将NS游戏运行于Android系统之上。

ONS-Android的汉化问题: 出于众所周知的原因,ONS-Android默认并不支持中文编码(它是日本人做的)。

这样的设计,在使用原版ONS-Android运行日文游戏时并不会有太大问题(只要该游戏没有调用第三方插件,没有使用额外API)。

但是,一旦我们想要让它跑一些经过汉化的中文编码游戏呢?显而易见,肯定会造成乱码的出现。

所以,如果我们想要ONS-Android能够正常地进行中文游戏显示,在进行ONS-Android编译时,便需修改其部分代码。

更准确地说——是修改位于ONS核心包下的sjis2utf16.cpp文件来解决这一问题。

总体来讲,ONS的字符解码过程并不复杂,sjis2utf16.cpp中仅有initSJIS2UTF16(初始化解码表到sjis_2_utf16这一数组中)、convSJIS2UTF16(转化日文编码SJIS为UTF-16编码)、convUTF16ToUTF8(转化UTF-16为UTF-8编码)这三个函数在起作用。

而ONS的所有字符解码部分也会经由调用convSJIS2UTF16和convUTF16ToUTF8这两个函数产生作用(注意,initSJIS2UTF16是sjis_2_utf16变量初始化赋值时使用的函数,仅会在ONS启动时调用一次)。

知道了这些,解决汉化问题就变得非常简单,只要根据现有的ONS解码规则,将其sjis_2_数组中的SJIS日文编码表转化为我们需要的中文编码表(GBK也好,Big5也好,原理都一样,一个指定编码对应一个相对的UTF-16编码,然后以二维数组形式保存),就能够非常轻松的实现 ONS中文解码,甚至不需改写任何逻辑代码(如果有某些字符需要特殊过滤,也可以修改convSJIS2UTF16和convUTF16ToUTF8这两个函数进行拦截)。

编码表较大,下文有相关下载地址。

当然,如果我们想保留原版sjis2utf16.cpp内容也没问题,大可以新建一个gbk2utf16.cpp之类的文件,让两套解码器并行存在,按需求进行切换(比如想根据手机环境自适配字符解码器)。

怎么做呢?粗读ONS源码我们可以发现,它实际调用到字符解码器的部分,仅集中于DirectReader.cpp和 ONScripterLabel.cpp、ONScripterLabel_text.cpp这三个源文件当中。

具体的说,在于DirectReader 中的convertFromSJISToUTF8函数(其中同时调用了解码器的convSJIS2UTF16与convUTF16ToUTF8函数。

PS:该文件中还有convertFromSJISToEUC函数,是给资源文件名解码的,如果文件名中没有稀奇古怪字符的话原则上可以忽视不管,如果有的话也需要进行适当修改),以及ONScripterLabel_text.cpp中的drawGlyph函数(调用convSJIS2UTF16)和 ONScripterLabel中的initSDL函数(调用initSJIS2UTF16)。

如果想自适配解码器,只需创建出相关的解码用函数(放在 gbk2utf16.cpp、big52utf16.cpp随便什么中原理都一样,改个编码表而已),继而通过最简单的if……else……判定即可(如果想根据编译环境判定,直接#if defined也行)。

总之,ONS中文解码并不是什么复杂的问题,汉字编码表可以去 查询,或者参考Emacs项目提供的map文件(下载一个Emacs,解压后它的etc/charsets文件夹下全是后缀为.map的编码表)。

还有,很久以前有人用google code发布过ONS的gbk解码版本( /svn/trunk/),有需要的朋友可以从svn下载过来参考。

ONS-Android的运行机制: 单从Java编程角度来说,ONS-Android的结构可谓非常简单,开放给用户的仅有Audio.java、DataDownloader.java、 GLSurfaceView_SDL.java、ONScripter.java、Video.java这五个Java文件而已(因为具体实现是 C/C++的)。

其中Video.java最为重要,它包含有DemoRenderer和DemoGLSurfaceView两个子类,这不单是ONS- Android的渲染核心,而且包含了nativeInit, nativeInitJavaCallbacks, nativeDone,nativeResize,nativeMouse,nativeKey等六个jni接口。

其中最主要的接口是 nativeInitJavaCallbacks以及nativeInit,只有执行了这两个jni函数,才能真正启动ONS(本质上是先启动SDL框架,附带唤醒ONS)。

而执行nativeInit函数时需要注入的地址字符串,默认来源于 ONScripter类下的gCurrentDirectoryPath这个静态变量。

不管我们往gCurrentDirectoryPath中放入什么字符串,默认情况下ONS都会按照这个字符串去读取/保存游戏资源(如果不能找到该路径,则ONS会立即崩掉)。

至于其它,nativeDone是关闭SDL(由于ONS依赖于SDL,所以这些操作实际上都会先执行SDL部分,然后才转到ONS部分,以下同),nativeResize是改变SDL画面大小,nativeMouse触发SDL屏幕操作,nativeKey触发SDL键盘操作,皆属基础操作,并没太多好讲解的。

PS:上述部分jni源码位于onscripter_androidjnisdlsrcvideoandroid文件夹下,如果要修改Java类名或接口名,请注意同时修改相关C代码。

而 ONS-Android的启动用Activity是ONScripter类,其中真正调用ONS运行的只有runSDLApp这个私有函数,至于 runLauncher及runDownloader函数一者为要求游戏用户选择ONS资源所在路径,一者为通过网络下载ONS游戏资源,都只会在 runSDLApp执行前调用,也不会实际触发jni接口(只有runSDLApp触发jni操作)。

所以,如果您不想让游戏用户使用您的APK启动其它人提供的游戏资源(也就是不想被人当模拟器用),则可以删除runLauncher函数,或者固定gCurrentDirectoryPath变量中路径字符串即可。

再者,游戏初始化后默认显示于画面右侧的仅仅是Java编码的ONS操作按钮(如ESC、Skip 这些),它们仅会通过JNI方式调用相应的SDL API,而不会真正影响C/C++实现部分。

因此,如果您需要改变它们的显示位置,或者进行删除、修改这些按钮的操作,乃至用其它方式彻底替代它们(比如将相关JNI调用放入Menu中,按下菜单键时才起作用),都只需修改相关Java代码即可,无需改变任何C/C++部分。

另外,通过解读源码我们可以获悉,在ONS-Android初始化运行时,有三种文件必不可少。

一是脚本文件,它可以命名为0.txt、00.txt、nscr_sec.dat、nscript.___、nscript.dat这五种名称中的任意一种(后三种都属于NS的dat文件包,需要通过工具打包,网络有下载),但除此之外的名称一概不认,没有则无法运行游戏。

二是游戏资源文件,也就是NS中使用的arc.nsa,游戏中使用的音频与图像文件强制要求打成此包(NS提供有打包工具),并且保持此名称不变,否则ONS还是不认。

三是default.ttf,也就是字库文件,由于ONS-Android默认情况下不能使用Android字库,所以此文件必须存在,并且正常可读(必须能够被SDL识别),否则游戏会强制退出(没错,如果字库不存在或者读取异常,ONS直接就崩了~连错误都不报~)。

有了上述三种文件,ONS才能在 Android中正常运行。

最后,虽然AVG游戏通常需要较大的音频与图像文件支持,Android版ONS默认要求将游戏资源文件保存于SD卡中。

但经实测发现,如果将gCurrentDirectoryPath设定为其它可读写目录,只要上述三文件正常无误,ONS-Android一样能正常运行(比如APK的Cache文件夹)。

所以,如果我们想对游戏资源作一些手脚(在内存而非SD卡中进行游戏什么的),完全可以根据此特性入手。

ARtoolkit可以使用unity3D来做吗?

ARtoolkit和unity3d都是属于一种3D引擎,unity3d也可以做3D仿真的,我们公司目前就是用unity3d做工业仿真。

Intel Galileo板子怎样能同时make并且用USB client接口连接电脑

可以装debian的 e.jp/projects/_galileodebian/ 用VirtualBox导入那个SDK里的系统 按readme一步步来就行上交大的创客空间也有现成的系统下载驱动怎么找呀。



真想找个现成的系统直接拷进去就好了。



搬瓦工:香港PCCW机房即将关闭;可免费升级至香港CN2 GIA;2核2G/1Gbps大带宽高端线路,89美元/年

搬瓦工怎么样?这几天收到搬瓦工发来的邮件,告知香港pccw机房(HKHK_1)即将关闭,这也不算是什么出乎意料的事情,反而他不关闭我倒觉得奇怪。因为目前搬瓦工香港cn2 GIA 机房和香港pccw机房价格、配置都一样,可以互相迁移,但是不管是速度还是延迟还是丢包率,搬瓦工香港PCCW机房都比不上香港cn2 gia 机房,所以不知道香港 PCCW 机房存在还有什么意义?关闭也是理所当然的事情。点击进...

IMIDC(rainbow cloud):香港/台湾/日本/莫斯科独立服务器特价,闪购大促销,最低30usd/月起

imidc怎么样?imidc彩虹网路,rainbow cloud知名服务器提供商。自营多地区数据中心,是 Apnic RIPE Afrinic Arin 认证服务商。拥有丰富的网路资源。 在2021年 6.18 开启了输血大促销,促销区域包括 香港 台湾 日本 莫斯科 等地促销机型为 E3係,参与促销地区有 香港 日本 台湾 莫斯科 等地, 限量50台,售罄为止,先到先得。所有服务器配置 CPU ...

TMTHosting:夏季优惠,美国西雅图VPS月付7折,年付65折,美国服务器95折AS4837线路

tmthosting怎么样?tmthosting家本站也分享过多次,之前也是不温不火的商家,加上商家的价格略贵,之到斯巴达商家出现,这个商家才被中国用户熟知,原因就是斯巴达家的机器是三网回程AS4837线路,而且也没有多余的加价,斯巴达家断货后,有朋友发现TMTHosting竟然也在同一机房,所以大家就都入手了TMTHosting家的机器。目前,TMTHosting商家放出了夏季优惠,针对VPS推...

sourceforge.jp为你推荐
留学生认证留学生为什么要做学历认证?www.20ren.com求此欧美艳星名字http://www.sqsmm.com/index.php?album-read-id-1286.html刘祚天DJ这个职业怎么样?陈嘉垣陈浩民、马德钟强吻女星陈嘉桓,求大家一个说法。同一服务器网站服务器建设:一个服务器有多个网站该如何设置?www.7788dy.comwww.tom365.com这个免费的电影网站有毒吗?www.baitu.com我看电影网www.5ken.com为什么百度就不上关键字呢斗城网女追男有多易?喜欢你,可我不知道你喜不喜欢我!!平安夜希望有他陪我过www.22zizi.com乐乐电影天堂 http://www.leleooo.com 这个网站怎么样?sesehu.com68lolita com是真的吗
虚拟主机试用 美国加州vps hostigation 罗马假日广场 hostmaster flashfxp怎么用 dux 阿里云浏览器 世界测速 ftp免费空间 hktv dnspod starry web应用服务器 网页加速 工信部icp备案查询 域名和主机 聚惠网 web服务器有哪些 dmz主机 更多