您尚未登录。

楼主 #1 2020-08-20 14:08:51

淡定
会员
注册时间: 2020-07-23
已发帖子: 21
积分: 41

为了V3S不吃灰,移植NES游戏

一.硬件准备工作:
   1.lichee pi zero主板一块
   2.无线手柄2.4g一个
   3.屏幕800x480
   4.xt25f128b spiflash一块,焊接到板子上。(不用sd启动,看着别扭)


二.软件准备工作:
   1.参考各个大神文章,uboot,linux,buildroot
   简单说明一下需要修改的地方:
   u-boot:
   include/configs/sun8i.h

    #define CONFIG_BOOTCOMMAND  "sf probe 0:0 6000000; " \
			     "sf read 0x41800000 0x80000 0x4000; " \
			     "sf read 0x41000000 0x90000 0x470000;" \
			     "bootz 0x41000000 - 0x41800000;"
                            
                            
    #define CONFIG_BOOTARGS     "console=ttyS0,115200 earlyprintk panic=5 rootwait 
    mtdparts=spi32766.0:512k(uboot),64k(dtb)ro,4544k(kernel)ro,-(rootfs) root=/dev/mtdblock3 rw rootfstype=jffs2 init=/linuxrc 
    vt.global_cursor_default=0"

   /u-boot/drivers/mtd/spi/spi_flash_ids.c

   {"xt25f128b", INFO(0x0b4018, 0x0, 64 * 1024, 256, RD_FULL | WR_QPP | SECT_4K) },

   2. linux:
   dts:

   &spi0 {
        status ="okay";
        xt25f128b:xt25f128b@0 {
                compatible = "jedec,spi-nor";
                reg = <0x0>;
                spi-max-frequency = <50000000>;
                #address-cells = <1>;
                #size-cells = <1>;
        };

    /linux/drivers/mtd/devies/m25p80.c
   搜jedec 在最后增加xt25定义

   {"w25q80bl"}, {"w25q128"}, {"w25q256"}, {"xt25f128b"}

   3. /linux/drivers/mtd/spi-nor
   flash_info spi_nor_ids[]中

   { "w25q128", INFO(0xef4018, 0, 64 * 1024, 256, 0) },
   { "xt25f128b", INFO(0x0b4018, 0, 64 * 1024, 256, 0) },
  

   menuconfig:
   - 加入SPI Flash的支持

    Device Drivers  ---> 
	<x> Memory Technology Device (MTD) support  --->
 		<x>   Command line partition table parsing   (用以支持命令行参数 mtdparts=spi0.0:512k(uboot)ro, … )
		<x>   Caching block device access to MTD devices 
		<x>   SPI-NOR device support  ---> 
			 [ ]   Use small 4096 B erase sectors  	(取消这个选型,否则jffs2文件系统会报错)

    - 加入jffs2文件系统支持

     File systems  ---> 
	[x] Miscellaneous filesystems  --->  
		<x>   Journalling Flash File System v2 (JFFS2) support                            
  		(0)     JFFS2 debugging verbosity (0 = quiet, 2 = noisy)  
  		[x]     JFFS2 write-buffering support   
  		[ ]       Verify JFFS2 write-buffer reads 
		[ ]     JFFS2 summary support  
  		[ ]     JFFS2 XATTR support 
  		[ ]     Advanced compression options for JFFS2 

   4.编译:(u-boot,linux)

   make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j2
   make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs
   

    生成的文件:

    $ ls -lh arch/arm/boot/zImage
    -rwxrwxr-x 1 xlee xlee 4.2M Apr 23 10:41 arch/arm/boot/zImage
    $ ls -lh arch/arm/boot/dts/sun8i-v3s-licheepi-zero.dtb 
    -rw-rw-r-- 1 xlee xlee 12K Apr 22 23:33 arch/arm/boot/dts/sun8i-v3s-licheepi-zero.dtb

   5.build-root
   ls -l  ~/buildroot-2017.08/output/images/rootfs.tar
   tar 解压rootfs.tar到目录rootfs_20200820/
   拷贝linux下的lib(包含module)文件夹内容到此目录,也可以添加用同样的编译编译出来的一些程序,比如InfoNes文件等
   mkfs.jffs2 -s 0x100 -e 0x10000 --pad=0xAF0000 -d rootfs_20200820/ -o rootfs.jffs2


三:烧录
   下载sunxi-fel 编译直接在ubuntu上烧
    分区如下:

    0~0x80000              uboot
    0x80000~ 0x90000  dtb
    0x90000~ 0x500000 zImage
    0x50000~ 16M         rootfs.jffs2
   

    短接板子spi的cs脚和地
    烧录命令跑起来:

    $sudo ./sunxi-fel -p spiflash-write 0 u-boot-sunxi-with-spl.bin
    $sudo ./sunxi-fel -p spiflash-write 0x80000 sun8i-v3s-licheepi-zero-dock.dtb
    $sudo ./sunxi-fel -p spiflash-write 0x90000 zImage
    $sudo ./sunxi-fel -p spiflash-write 0x500000 rootfs.jffs2

四: 编译InfoNes
    下载源码:https://github.com/nejidev/arm-NES-linux
     在linux目录下修改Makefile:编译器,alsa(暂时去掉)
     编译完的InfoNes拷贝到rootfs_20200820,重新生成rootfs.jffs2,
     或者拷贝到sd卡,用挂载mount /dev/mmcblk0p1 /mnt/拷贝文件到板子
     再到网上下载nes游戏,拷贝到sd卡
     愉快的运行起来。

INfoRun

五: 待解决问题:
    1.声音
    2.遥控器

离线

楼主 #2 2020-08-20 14:25:10

淡定
会员
注册时间: 2020-07-23
已发帖子: 21
积分: 41

Re: 为了V3S不吃灰,移植NES游戏

占位: 无线遥控器

离线

楼主 #3 2020-08-20 14:25:34

淡定
会员
注册时间: 2020-07-23
已发帖子: 21
积分: 41

Re: 为了V3S不吃灰,移植NES游戏

占位:声音

离线

楼主 #4 2020-08-20 17:15:19

淡定
会员
注册时间: 2020-07-23
已发帖子: 21
积分: 41

Re: 为了V3S不吃灰,移植NES游戏

---- 继续 ----
六.声音调试:
   1. 下载tinyalsa git clone https://github.com/tinyalsa/tinyalsa.git
   修改makefile的交叉编译工具链,make 生成几个文件
   拷贝到sd卡,执行命令:

# ./tinymix set 1 63
# ./tinymix set 2 1
# ./tinymix contents
 

   因为只买了核心板,没有耳机孔,根据官方的原理图飞了一个滤波电路.
音频调试
  第1,3,5,7脚分别是HP_COM,HP_COMFB, HP_L, HP_R

./tinyplay SoundTest.wav
插上音响,可以听到清晰的声音。
   下一步,将InfoNes的声音补上。

离线

#5 2020-08-20 18:46:15

xyzijk
会员
注册时间: 2019-08-23
已发帖子: 31
积分: 19.5

Re: 为了V3S不吃灰,移植NES游戏

能上传版TF烧录固件感受下?

离线

#6 2020-08-20 21:21:03

armstrong
会员
注册时间: 2019-04-10
已发帖子: 246
积分: 180.5

Re: 为了V3S不吃灰,移植NES游戏

感谢分享!infones-linux on lichee-zero

离线

楼主 #7 2020-08-21 09:16:55

淡定
会员
注册时间: 2020-07-23
已发帖子: 21
积分: 41

Re: 为了V3S不吃灰,移植NES游戏

xyzijk 说:

能上传版TF烧录固件感受下?

只有spi flash版本,等我搞的差不多再上传。

离线

#8 2020-08-21 10:57:43

房地产
会员
注册时间: 2020-03-02
已发帖子: 27
积分: 27

Re: 为了V3S不吃灰,移植NES游戏

nes,tinyalsa

离线

楼主 #9 2020-08-21 11:09:45

淡定
会员
注册时间: 2020-07-23
已发帖子: 21
积分: 41

Re: 为了V3S不吃灰,移植NES游戏

七.遥控器搞起
    玩游戏肯定少不了手柄,本来想用一个有线usb手柄,但是作为一个精益求精的玩家,这个长线是不能接受的,所以决定搞一个无线手柄。
    1.在某宝买了一个无线2.4G游戏手柄,在windows下免驱的,
    估计在zeros的linux上也有相关驱动,果然,在linux目录能找到相关驱动 ~/linux/drivers/hid/hid-dr.c
   
    小技巧:插入电脑上找到设备管理器,属性,就能看到VID和PID号,查找一下驱动目录就能找到相对于的设备商。我买的遥控器是DragonRise Inc. game
    controllers
    在~/linux/drivers/hid/hid-core.c 添加PID号 0x181c
   

#if IS_ENABLED(CONFIG_HID_DRAGONRISE)
	{ HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, 0x0006) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, 0x0011) },
	{ HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, 0x181c) },
#endif
 

    2. linux menuconfig
     > Device Drivers > Input device support
     <*>   Joystick interface
      [x]   Joysticks/Gamepads  --->
     > Device Drivers > HID support > Special HID drivers
      <*> DragonRise Inc. game controller
    3. 在InfoNes文件joypad_input.cpp 修改键值
    看实际情况,ABXY,左右上下,start,select
         /**
     * FC手柄 bit 键位对应关系 真实手柄中有一个定时器,处理 连A  连B
     * 0  1   2       3       4    5      6     7
     * A  B   Select  Start  Up   Down   Left  Right
     */

       4.烧录完内核后,接上usb转接器,插上无线手柄接收器,愉快的玩起来。
       

[   26.946678] usb 2-1: new full-speed USB device number 4 using ohci-platform
[   27.213391] input: TGZ Controller as /devices/platform/soc/1c1a400.usb/usb2/2-1/2-1:1.0/0003:0079:181C.0005/input/input6
[   27.224832] dragonrise 0003:0079:181C.0005: input: USB HID v1.11 Gamepad [TGZ Controller] on usb-1c1a400.usb-1/input0
[   27.240256] input: TGZ Controller as /devices/platform/soc/1c1a400.usb/usb2/2-1/2-1:1.1/0003:0079:181C.0006/input/input7
[   27.316983] dragonrise 0003:0079:181C.0006: input: USB HID v1.11 Device [TGZ Controller] on usb-1c1a400.usb-1/input1
# ls /dev/input/js0 
/dev/input/js0

       

controler


离线

#10 2020-08-21 12:33:36

jujiaqi
会员
注册时间: 2019-10-19
已发帖子: 17
积分: 16

Re: 为了V3S不吃灰,移植NES游戏

楼主可以啊,花了不少精力吧。
V3S 带800x480感觉怎么样,吃力吗

离线

#11 2020-08-21 16:06:04

642242855
会员
注册时间: 2019-10-31
已发帖子: 191
积分: 98

Re: 为了V3S不吃灰,移植NES游戏

我的也在吃灰中

离线

楼主 #12 2020-08-21 16:17:13

淡定
会员
注册时间: 2020-07-23
已发帖子: 21
积分: 41

Re: 为了V3S不吃灰,移植NES游戏

烧录文件:
licheepi zeros,密码用户名:root和licheepi
16M spi flash
800*480屏幕

licheezeros_spiflash_16M_LCD_800_480_InfoNes_tar.gz

离线

#13 2020-08-21 16:24:55

有梦的地方
会员
注册时间: 2020-03-17
已发帖子: 284
积分: 284

Re: 为了V3S不吃灰,移植NES游戏

楼主优秀,求手柄购买链接

离线

楼主 #14 2020-08-21 16:32:45

淡定
会员
注册时间: 2020-07-23
已发帖子: 21
积分: 41

Re: 为了V3S不吃灰,移植NES游戏

有梦的地方 说:

楼主优秀,求手柄购买链接

我在这家树莓派店买的(其他店的应该也可以,但是可能要调驱动)
fu置本段内容$rNCpcXhED59$达开τao寶【树莓派4B/3B+/Zero W 2.4G 摇杆无线游戏手柄街机游戏机配件】

离线

#15 2020-08-21 17:02:41

哇酷小二
wechat微信:whycan_cn
所在地: 你猜
注册时间: 2020-04-22
已发帖子: 3,378
积分: 1902
个人网站

Re: 为了V3S不吃灰,移植NES游戏

淡定 说:

我在这家树莓派店买的(其他店的应该也可以,但是可能要调驱动)
fu置本段内容$rNCpcXhED59$达开τao寶【树莓派4B/3B+/Zero W 2.4G 摇杆无线游戏手柄街机游戏机配件】

感谢楼主分享, 电脑版的可以打开这个链接: https://item.taobao.com/item.htm?id=581516829523





离线

楼主 #16 2020-08-24 18:48:59

淡定
会员
注册时间: 2020-07-23
已发帖子: 21
积分: 41

Re: 为了V3S不吃灰,移植NES游戏

---- 继续折腾一下这个游戏机 ------------

玩了几天,发现lcd屏幕太小了,眼睛看得很累。
所以把它的视频输出端接到投影仪上,大屏玩游戏,酷。。。

_20200824184516.jpg

离线

#17 2020-08-25 11:45:41

小智
会员
注册时间: 2019-10-16
已发帖子: 109
积分: 86

Re: 为了V3S不吃灰,移植NES游戏

好牛

离线

#18 2020-08-25 19:17:36

xyzijk
会员
注册时间: 2019-08-23
已发帖子: 31
积分: 19.5

Re: 为了V3S不吃灰,移植NES游戏

详细,  牛XXX,   精彩!!!!

离线

楼主 #19 2020-08-26 18:48:07

淡定
会员
注册时间: 2020-07-23
已发帖子: 21
积分: 41

Re: 为了V3S不吃灰,移植NES游戏

---- 继续移植 wifi同屏功能------
准备工作:
    scrcpy软件: https://github.com/Genymobile/scrcpy
rtl7823bs wifi模块
一.    安装编译工具 pip3,meson,ninja-build,re2c

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo apt-get install python3-pip
sudo pip3 install --upgrade pip
pip3 install --user meson
apt-get install ninjia-build
或者源码安装
git clone https://github.com/ninja-build/ninja
./configure.py --bootstrap
apt-get install re2c
如果碰到问题就按照出错地方修改。
二. 下载相关库源码,交叉编译scrcpy
     ffmpeg,x264,xvid,sdl2
     
1. xvid
tar zxvf xvidcore-1.3.3.tar.gz
cd xvidcore/build/generic
./configure --prefix=/root/ffmpeg/ --host=arm-linux-gnueabihf --target=arm-linux
make -j 8
make install

2. x264
tar jxvf last_x264.tar.bz2
cd x264-snapshot-20161225-2245
./configure --prefix=/root/ffmpeg/x264_out --host=arm-linux-gnueabihf --enable-shared --disable-asm
修改config.mak
修改内容如下:
CC=gcc 改为 CC=arm-linux-gnueabihf-gcc
LD=gcc -o 改为 LD=arm-linux-gnueabihf-gcc -o
RANLIB=ranlib 改为 RANLIB=arm-linux-gnueabihf-ranlib
STRIP=strip 改为 STRIP=aarm-linux-gnueabihf-strip

3. ffmpeg
tar jxvf ffmpeg-3.0.2.tar.bz2
cd ffmpeg-3.0.2/
./configure --prefix=/root/ffmpeg/out --disable-static --enable-shared --disable-debug --disable-asm --disable-ffplay --disable-ffprobe --disable-ffserver --enable-small --disable-doc --enable-demuxer=rtsp --enable-parser=h264 --enable-cross-compile --enable-libx264 --enable-libxvid --enable-nonfree --enable-gpl --arch=arm --target-os=linux --cross-prefix=arm-linux-gnueabihf- --extra-cflags=-I/root/ffmpeg/out/include --extra-ldflags=-L/root/ffmpeg/out/lib --extra-libs=-lrt

tar -zxvf SDL2-2.0.9.tar.gz
./configure --prefix=/root/scrcpy/sdl2  --host=arm-linux-gnueabihf   --build=x86_64  --with-gnu-ld   --disable-video-nanox  --disable-video-qtopia   --disable-pulseaudio   --disable-video-photon  --disable-video-ggi  --disable-video-svga   --disable-video-aalib   --disable-video-dummy   --disable-video-dga  --disable-arts   --disable-esd  --disable-alsa   --disable-video-x11   --disable-nasm  --enable-joystick   --disable-input-tslib   --disable-video-fbcon
--留一个坑,后续再修改sdl源码,直接用linux framebuffer来显示图像

4.   进入目录scrcpy-1.16

/root/.local/bin/meson c --buildtype release --strip -Db_lto=true -Dprebuilt_server=../scrcpy-server.jar --cross-file cross_file.txt
cross_file.txt 文件的内容是:

[binaries]
c = 'arm-linux-gnueabihf-gcc'
cpp = 'arm-linux-gnueabihf-g++'
ar = 'arm-linux-gnueabihf-ar'
strip = 'arm-linux-gnueabihf-strip'
pkgconfig = '/root/buildroot-2017.08/output/host/bin/pkg-config'

[host_machine]
system = 'linux'
cpu_family = 'arm'
cpu = 'FP-ARMv7'
endian = 'little'

[build_machine]
system = 'linux'
cpu_family = 'x86_64'
cpu = 'i686'
endian = 'little'

在编译之前首先把ffmpeg 和sdl2的库生成的pkg-config文件拷贝到L/root/buildroot-2017.08/output/host/arm-buildroot-linux-gnueabihf/sysroot/usr/lib
一切准备就绪,编译生成scrcpy文件
ninja all

5. 用buildroot勾选adb工具,生成adb文件
二.    板子运行
1.    把adb和所有的用到的lib拷贝到板子。
2.    接上手机,打开usb调试模式(多次点击设置->关于手机->版本号)
Lsusb找到pid号
写入到~/.android/adb_usb.ini文件
Adb devices确认能找到手机设备
配置库路径,先录一个视频看看效果
export LD_LIBRARY_PATH=/mnt/scrcpy/lib:/mnt/ffmpeg/lib
./scrcpy -N -m 800 -b 1M --max-fps 15   --rotation
1 --window-height 480 --window-width 800 -r scr_test.mp4
_20200826184220.jpg

三.    rtl8723bs wifi模块
为了给tf留sdc0的接口,把它焊接到sdc1位置。
按照一般的做法就能正常使用,没有什么需要特别注意的地方
1.    linux make menuconfig选择drivers/ staging里面的rtl8723bs
2.    buildroot下面的wpa_supplicant工具,
3.    然后make,刷rootfs或者直接拷贝相关文件到sd卡,rtl8723bs_nic.bin到/lib/firmware/rtlwifi/目录下。
4.    愉快地运行起来:
修改wpa_supplicant.conf里面的ssid和psk

insmod /lib/modules/4.13.0-licheepi-zero\+/kernel/drivers/staging/rtl8723bs/r8
723bs.ko
ifconfig wlan0 up
./wpa_supplicant -Dnl80211 -iwlan0 -c /root/rtl8723/wpa_supplicant.conf -B
udhcpc -iwlan0 &

 [  873.649642] RTL8723BS: nolinked power save leave
[  875.646510] RTL8723BS: rtw_set_802_11_connect(wlan0)  fw_state = 0x00000008

# [  875.960288] RTL8723BS: start auth
[  876.017289] RTL8723BS: auth success, start assoc
[  876.052762] RTL8723BS: rtw_cfg80211_indicate_connect(wlan0) BSS not found !!
[  876.059904] RTL8723BS: assoc success

# [  877.599630] RTL8723BS: rtw_tkip_decrypt(wlan0) no_gkey_bc_cnt:9, no_gkey_mc_cnt:0
[  878.170886] RTL8723BS: send eapol packet
[  878.199958] RTL8723BS: send eapol packet
[  878.204510] RTL8723BS: set pairwise key camid:4, addr:28:6c:07:6c:b1:3a, kid:0, type:AES
[  878.217725] RTL8723BS: set group key camid:5, addr:28:6c:07:6c:b1:3a, kid:1, type:TKIP
[  878.226179] RTL8723BS: rtw_tkip_decrypt(wlan0) gkey installed. no_gkey_bc_cnt:2, no_gkey_mc_cnt:0

# udhcpc: sending discover
udhcpc: sending select for 192.168.31.197
udhcpc: lease of 192.168.31.197 obtained, lease time 43200
deleting routers
adding dns 192.168.31.1

_20200826184537.jpg

离线

#20 2020-08-27 09:19:45

木子猫
会员
注册时间: 2018-03-27
已发帖子: 63
积分: 22.5

Re: 为了V3S不吃灰,移植NES游戏

这个小投影仪好像很香的样子 tongue

离线

#21 2020-08-27 09:20:38

jkl
会员
注册时间: 2019-11-18
已发帖子: 251
积分: 139.5

Re: 为了V3S不吃灰,移植NES游戏

厉害,收藏一下

离线

#22 2020-08-31 08:35:40

有梦的地方
会员
注册时间: 2020-03-17
已发帖子: 284
积分: 284

Re: 为了V3S不吃灰,移植NES游戏

楼主优秀

离线

#23 2020-08-31 17:24:56

下雨了
会员
注册时间: 2020-07-27
已发帖子: 2
积分: 2

Re: 为了V3S不吃灰,移植NES游戏

实然有了学习的冲动。感谢。

离线

#24 2020-09-05 20:28:33

TeveT
会员
注册时间: 2019-07-01
已发帖子: 148
积分: 91

Re: 为了V3S不吃灰,移植NES游戏

这投影仪咋这么完美接上? 某宝有?

离线

#25 2020-09-06 22:12:28

775624981
会员
注册时间: 2018-05-05
已发帖子: 22
积分: 17

Re: 为了V3S不吃灰,移植NES游戏

大佬,位在nuc972上直接编译了试了试,为什么色彩不正常呢,运行正常但是颜色是乱的,fb是rgb565,搞了半天都不行

离线

#26 2020-10-11 12:12:01

shawn.d
会员
注册时间: 2020-09-12
已发帖子: 164
积分: 100

Re: 为了V3S不吃灰,移植NES游戏

这真是折腾成专家了。等有空我也耍耍这个。

离线

#27 2020-10-12 11:16:53

capricorn
会员
注册时间: 2020-06-17
已发帖子: 1
积分: 1

Re: 为了V3S不吃灰,移植NES游戏

优秀

离线

#28 2020-10-12 20:26:45

tcy641
会员
注册时间: 2020-04-11
已发帖子: 2
积分: 2

Re: 为了V3S不吃灰,移植NES游戏

很不错,受教了

离线

#29 2020-10-20 13:15:48

nianyan99
会员
注册时间: 2020-10-20
已发帖子: 12
积分: 12

Re: 为了V3S不吃灰,移植NES游戏

羨幕.

离线

#30 2020-10-26 20:56:04

hongadg
会员
注册时间: 2020-10-26
已发帖子: 1
积分: 1

Re: 为了V3S不吃灰,移植NES游戏

学习了

离线

#31 2020-11-03 06:12:38

TivonLiu
会员
注册时间: 2019-12-27
已发帖子: 46
积分: 36

Re: 为了V3S不吃灰,移植NES游戏

感谢,我要好好学习了。

离线

#32 2020-11-10 20:31:04

山羊胡子
会员
注册时间: 2020-11-10
已发帖子: 22
积分: 14.5

Re: 为了V3S不吃灰,移植NES游戏

太牛了,我也尝试下

离线

#33 2020-11-12 15:59:10

kaixxss
会员
注册时间: 2019-11-18
已发帖子: 30
积分: 0

Re: 为了V3S不吃灰,移植NES游戏

厉害了

离线

#34 2020-11-13 16:50:34

zpyws
会员
注册时间: 2018-07-19
已发帖子: 33
积分: 30

Re: 为了V3S不吃灰,移植NES游戏

突然有了学习的冲动

离线

#35 2020-12-20 14:19:23

leefei
会员
注册时间: 2020-12-19
已发帖子: 53
积分: 80

Re: 为了V3S不吃灰,移植NES游戏

淡定 说:

占位: 无线遥控器

请问声音搞定了吗

离线

#36 2020-12-21 00:54:39

leefei
会员
注册时间: 2020-12-19
已发帖子: 53
积分: 80

Re: 为了V3S不吃灰,移植NES游戏

淡定 说:

占位:声音

我有一套源码。声音正常。但是颜色不对。由于没有手柄。键盘用不了,不知怎么调

离线

#37 2020-12-24 22:26:41

pichen
会员
注册时间: 2020-12-24
已发帖子: 2
积分: 2

Re: 为了V3S不吃灰,移植NES游戏

说实话,太牛X了,等我先把板子跑起来再说。。。。。

离线

#38 2020-12-26 17:09:04

小智
会员
注册时间: 2019-10-16
已发帖子: 109
积分: 86

Re: 为了V3S不吃灰,移植NES游戏

牛逼

离线

#39 2021-01-22 11:23:59

卓林
会员
注册时间: 2021-01-10
已发帖子: 84
积分: 141.5

Re: 为了V3S不吃灰,移植NES游戏

leefei 说:
淡定 说:

占位:声音

我有一套源码。声音正常。但是颜色不对。由于没有手柄。键盘用不了,不知怎么调

颜色不对的问题可以解决,我的也是,屏幕泛蓝色。
1.framebuff颜色宽度设置错误,默认InfoNES颜色位宽16bit,所以RGB颜色前后8位被丢了,只剩下蓝色和绿色。
2.修改方法
打开源码 /linux/InfoNES_System_Linux.cpp
添加 全局变量 ,修改函数

long int lcd_bits_per_pixel;
static int lcd_fb_display_px(WORD color, int x, int y)
{
	unsigned char  *pen8;
	pen8 = (unsigned char *)(fb_mem + y*line_width + x*px_width);
    if(lcd_bits_per_pixel==32)
    {
        (unsigned int*)pen8=color;//32bit
    }
    else
    {
        (unsigned short*)pen8=color;//16bit
    }
	
	return 0;
}

修改函数

static int lcd_fb_init()
{
	//如果使用 mmap 打开方式 必须是 读定方式
	fb_fd = open("/dev/fb0", O_RDWR);
	if(-1 == fb_fd)
	{
		printf("cat't open /dev/fb0 \n");
		return -1;
	}
	//获取屏幕参数
	if(-1 == ioctl(fb_fd, FBIOGET_VSCREENINFO, &var))
	{
		close(fb_fd);
		printf("cat't ioctl /dev/fb0 \n");
		return -1;
	}
	
	//计算参数
	px_width     = var.bits_per_pixel / 8;
    lcd_bits_per_pixel=var.bits_per_pixel;
	line_width   = var.xres * px_width;
	screen_width = var.yres * line_width;
	lcd_width    = var.xres;
	lcd_height   = var.yres;
	
	printf("fb width:%d height:%d \n", lcd_width, lcd_height);

	fb_mem = (unsigned char *)mmap(NULL, screen_width, PROT_READ | PROT_WRITE, MAP_SHARED, fb_fd, 0);
	if(fb_mem == (void *)-1)
	{
		close(fb_fd);
		printf("cat't mmap /dev/fb0 \n");
		return -1;
	}
	//清屏
	memset(fb_mem, 0 , screen_width);
	return 0;
}

其实就是加了个参数区分是16位宽还是24位,还没试,应该可以:P

最近编辑记录 卓林 (2021-01-22 11:24:57)

离线

#40 2021-01-22 11:29:41

卓林
会员
注册时间: 2021-01-10
已发帖子: 84
积分: 141.5

Re: 为了V3S不吃灰,移植NES游戏

抛砖引玉,有没有人试过ps3手柄,我在内核开启了Microsoft微软的HID支持,在Microsoft的PID列表里边添加了我这个手柄的PID,但是还是识别不到手柄,插上去之后控制台也没有输出,晚点我把开机log中关于usb的信息贴上来,看看有人能知道什么情况吗?

离线

#41 2021-02-04 08:21:02

random_name
会员
注册时间: 2021-02-04
已发帖子: 3
积分: 3

Re: 为了V3S不吃灰,移植NES游戏

离题: 大佬手机上的 下厨房 体现了大佬是个热爱生活的人。

离线

#42 2021-02-04 09:27:00

微凉VeiLiang
会员
所在地: 深圳
注册时间: 2018-10-28
已发帖子: 595
积分: 525
个人网站

Re: 为了V3S不吃灰,移植NES游戏

也可以参考我这个贴子 https://whycan.com/t_5913.html 的说明,修改InfoNES中调色板的数组NesPalette,改成RGB888的

离线

#43 2021-02-04 22:58:21

mzy2364
会员
注册时间: 2019-11-23
已发帖子: 43
积分: 32.5

Re: 为了V3S不吃灰,移植NES游戏

大佬你好,按照你的帖子,InfoNES移植成功了,也可以看到 /dev/input/js0了,但是运行后手柄没有反应,用joystick软件是可以看到手柄的信息的,请问该怎么处理呢?

离线

#44 2021-02-04 23:44:55

mzy2364
会员
注册时间: 2019-11-23
已发帖子: 43
积分: 32.5

Re: 为了V3S不吃灰,移植NES游戏

mzy2364 说:

大佬你好,按照你的帖子,InfoNES移植成功了,也可以看到 /dev/input/js0了,但是运行后手柄没有反应,用joystick软件是可以看到手柄的信息的,请问该怎么处理呢?

解决了,是键值的问题,打印出来再改下源码就好了

离线

#45 2021-03-07 12:06:16

夜空中最亮的灯
会员
注册时间: 2020-05-14
已发帖子: 24
积分: 48.5

Re: 为了V3S不吃灰,移植NES游戏

请教个问题,声音滞后怎么解决?

离线

#46 2021-04-21 15:27:49

jkl
会员
注册时间: 2019-11-18
已发帖子: 251
积分: 139.5

Re: 为了V3S不吃灰,移植NES游戏

淡定 说:

---- 继续折腾一下这个游戏机 ------------

玩了几天,发现lcd屏幕太小了,眼睛看得很累。
所以把它的视频输出端接到投影仪上,大屏玩游戏,酷。。。

https://whycan.cn/files/members/4891/_20200824184516.jpg

厉害了,这个投影仪模块是个什么情况,怎么弄得,有现成的买吗,也想整一个

离线

#47 2021-04-30 16:15:11

nikoladi
会员
注册时间: 2019-12-28
已发帖子: 23
积分: 5

Re: 为了V3S不吃灰,移植NES游戏

这个投影仪多大分辨率啊?

离线

#48 2021-05-15 02:11:39

Licheepi
会员
注册时间: 2021-02-02
已发帖子: 9
积分: 4.5

Re: 为了V3S不吃灰,移植NES游戏

四: 编译InfoNes
    下载源码:https://github.com/nejidev/arm-NES-linux
     在linux目录下修改Makefile:编译器,alsa(暂时去掉)
     编译完的InfoNes拷贝到rootfs_20200820,重新生成rootfs.jffs2,

这个alsa 怎么去掉啊,我make后编译不了

离线

#49 2021-06-14 23:46:51

酷酷酷
会员
注册时间: 2021-04-13
已发帖子: 48
积分: 45

Re: 为了V3S不吃灰,移植NES游戏

Licheepi 说:

四: 编译InfoNes
    下载源码:https://github.com/nejidev/arm-NES-linux
     在linux目录下修改Makefile:编译器,alsa(暂时去掉)
     编译完的InfoNes拷贝到rootfs_20200820,重新生成rootfs.jffs2,

这个alsa 怎么去掉啊,我make后编译不了

可以参考我的文章:
https://blog.csdn.net/qq_46604211/article/details/117914263?spm=1001.2014.3001.5501

离线

#50 2021-07-03 15:13:47

6756bsdfsd
会员
注册时间: 2021-07-03
已发帖子: 10
积分: 0

Re: 为了V3S不吃灰,移植NES游戏

还能跑得动游戏?

离线

#51 2021-07-03 15:55:27

6756bsdfsd
会员
注册时间: 2021-07-03
已发帖子: 10
积分: 0

Re: 为了V3S不吃灰,移植NES游戏

该评论内容与本帖子无关,鼓励各位坑友积极发言讨论与帖子有关的内容!

离线

  • 不通过:与技术无关

#52 2021-07-04 10:38:06

995pc
会员
注册时间: 2020-05-30
已发帖子: 54
积分: 3

Re: 为了V3S不吃灰,移植NES游戏

超级玛丽,马里奥,采蘑菇

离线

#53 2021-07-05 14:50:37

sunxiang
会员
注册时间: 2021-05-05
已发帖子: 222
积分: 121

Re: 为了V3S不吃灰,移植NES游戏

有兄弟向我一样一直不能移植成功的,可以试试通过QT移植。我用QT4跑INFONES还是比较流畅的,98c8026ca716c093ae3609f3d2c83dd.jpg,

离线

#54 2021-07-05 14:51:43

sunxiang
会员
注册时间: 2021-05-05
已发帖子: 222
积分: 121

Re: 为了V3S不吃灰,移植NES游戏

这个硬件我也设计了一版,由于没有经验,用是可以用,但是供电还是有点问题。

离线

#55 2021-08-19 16:59:23

surz168168
会员
注册时间: 2021-08-19
已发帖子: 0
积分: 0

Re: 为了V3S不吃灰,移植NES游戏

该评论内容与本帖子无关,鼓励各位坑友积极发言讨论与帖子有关的内容!

离线

  • 不通过:其他

#56 2021-08-19 17:33:56

mikasa
会员
注册时间: 2021-08-11
已发帖子: 4
积分: 2

Re: 为了V3S不吃灰,移植NES游戏

该评论内容与本帖子无关,鼓励各位坑友积极发言讨论与帖子有关的内容!

离线

  • 不通过:与技术无关

#57 2021-09-19 19:00:11

卓林
会员
注册时间: 2021-01-10
已发帖子: 84
积分: 141.5

Re: 为了V3S不吃灰,移植NES游戏

F1C100s的朋友谨慎尝试吧,移植后游戏卡的飞起,人物动作比模拟器慢的多,基本没法玩,换个性能好的cpu再试试。

离线

#58 2021-10-28 14:28:37

xel
会员
注册时间: 2018-07-09
已发帖子: 15
积分: 114.5

Re: 为了V3S不吃灰,移植NES游戏

大佬这个投影模块有资料吗?

离线

#59 2023-02-16 20:08:41

vigour1000
会员
注册时间: 2018-11-19
已发帖子: 99
积分: 5

Re: 为了V3S不吃灰,移植NES游戏

adb可以使用吗

离线

#60 2023-02-19 12:09:56

soso
会员
注册时间: 2022-05-03
已发帖子: 65
积分: 32

Re: 为了V3S不吃灰,移植NES游戏

同问:大佬这个投影模块有资料吗?

看上这个投影模块了~

离线

#61 2023-02-19 12:10:08

soso
会员
注册时间: 2022-05-03
已发帖子: 65
积分: 32

Re: 为了V3S不吃灰,移植NES游戏

同问:大佬这个投影模块有资料吗?

看上这个投影模块了~

离线

#62 2023-02-20 16:25:25

naypt
会员
注册时间: 2023-02-20
已发帖子: 6
积分: 1

Re: 为了V3S不吃灰,移植NES游戏

同问:大佬这个投影模块有资料吗?

看上这个投影模块了~

离线

#64 2023-05-28 00:02:20

果子李
会员
注册时间: 2023-05-28
已发帖子: 1
积分: 1

Re: 为了V3S不吃灰,移植NES游戏

v3s流畅度怎么样

离线

#65 2023-05-29 08:45:26

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,200
积分: 1140.5

Re: 为了V3S不吃灰,移植NES游戏

我修改linux目录下的makefile,想在t113-s3板上运行。

# CC = arm-linux-gcc
CC = arm-openwrt-linux-gcc
TARBALL = InfoNES08J

# InfoNES
.CFILES =	./../K6502.cpp \
		./../InfoNES.cpp \
		./../InfoNES_Mapper.cpp \
		./../InfoNES_pAPU.cpp \
		./InfoNES_System_Linux.cpp joypad_input.cpp

.OFILES	=	$(.CFILES:.cpp=.o)

CCFLAGS =  -O2 -fsigned-char -I/home/any/MPU/AllWinner/T113-s3/Tina-Linux/out/t113-mq_r/staging_dir/target/usr/include
LDFILGS = -lstdc++		# gcc3.x.x

LIBS += -L/home/any/MPU/AllWinner/T113-s3/Tina-Linux/prebuilt/gcc/linux-x86/arm/toolchain-sunxi-glibc/toolchain/lib -lpthread -lm
LIBS += -L/home/any/MPU/AllWinner/T113-s3/Tina-Linux/out/t113-mq_r/staging_dir/target/usr/lib -lasound -lz

all: InfoNES

InfoNES: $(.OFILES)
	$(CC) $(INCLUDES) -o $@ $(.OFILES) $(LDFILGS) $(LIBS)
	# $(CC) $(INCLUDES) -o $@ $(.OFILES) $(LDFILGS) -L/home/any/MPU/AllWinner/T113-s3/Tina-Linux/prebuilt/gcc/linux-x86/arm/toolchain-sunxi-glibc/toolchain/lib -lm -lpthread -L-L/home/any/MPU/AllWinner/T113-s3/Tina-Linux/out/t113-mq_r/staging_dir/target/usr/lib -lz -lasound

.cpp.o:
	$(CC) $(INCLUDES) -c $(CCFLAGS) $*.cpp  -o $@

clean:
	rm -f $(.OFILES) ../*~ ../*/*~ core

cleanall:
	rm -f $(.OFILES) ../*~ ../*/*~ core InfoNES

release: clean all

tar:
	( cd ..; \
	tar cvf $(TARBALL).tar ./*; \
	gzip $(TARBALL).tar \
	)

install:
	install ./InfoNES /usr/local/bin

结果在板子上运行后有如下提示,然后屏幕黑屏。

# ./InfoNES                              
/dev/joypad dev not found                                   
/dev/input/js0 dev not found                                
fb width:800 height:480 

离线

#67 2023-05-31 15:36:44

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,200
积分: 1140.5

Re: 为了V3S不吃灰,移植NES游戏

void InfoNES_LoadFrame()
{
    int x,y, i;
    int line_width;
    WORD wColor;

    //修正 即便没有 LCD 也可以出声
    if(0 < fb_fd)
    {
        for (y = 0; y < lcd_height; y++ )
        {
            line_width = zoom_y_tab[y] * NES_DISP_WIDTH;
            for (x = 0; x < lcd_width; x++ )
            {
                wColor = WorkFrame[line_width  + zoom_x_tab[x]];
                lcd_fb_display_px(wColor, x, y);
                printf("x:%d, y:%d, color:%d, index:%d\r\n", x, y, wColor, line_width + zoom_x_tab[x]);
                // for (i = 0; i < 255; i++)
                // {
                    // printf("%d\r\n", WorkFrame[i]);
                // }
            }
        }
    }
}

InfoNES_LoadFrame()这个函数里,我将每个像素点的wColor打印出来,结果都是0。
甚至将WorkFrame[]数组的前255个成员打印出来,结果也是0。
这是哪里出错了?

最近编辑记录 Gentlepig (2023-05-31 15:41:08)

离线

#68 2023-06-01 10:07:49

soso
会员
注册时间: 2022-05-03
已发帖子: 65
积分: 32

Re: 为了V3S不吃灰,移植NES游戏

默默跟进t113~

离线

楼主 #70 2023-06-24 23:11:19

淡定
会员
注册时间: 2020-07-23
已发帖子: 21
积分: 41

Re: 为了V3S不吃灰,移植NES游戏

naypt 说:

同问:大佬这个投影模块有资料吗?

看上这个投影模块了~

网上没有卖,自己手工打造的模块。

最近在搞人工智能,有一起学习的不?

离线

#72 2023-06-27 16:00:51

wj8331585
会员
注册时间: 2023-02-07
已发帖子: 44
积分: 19

Re: 为了V3S不吃灰,移植NES游戏

大佬这个投影模块有资料吗?

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn