last UpdataDate
see over ie5 KEY Depth Production - PS2 Linux Developer[tips] -
[TOP Page ]
[BBS ]
[PS2 Linux Developer ]
■news 音の鳴らし方
まず,WAVファイルを準備します.次にcatコマンドを使って表示するかわりにデバイスに垂れ流しにします.test.wavファイルの場合次のように鳴ります.
cat test.wav > /dev/dsp
MESA TV出力
MESAの出力先のの決定は glut_event.c 内の
GLUTAPI int GLUTAPIENTRY glutCreateWindow(const char *title)
によって行われています.ここで用いられている変数 g_omode によって出力は決定されます.グローバル変数 g_omode はデフォルトで
int g_omode = PS2_GS_VESA;
として宣言されております.ここを
int g_omode = PS2_GS_NTSC; //PS2_GS_VESA
と書き換えてコンパイルすることによって標準でTV出力になります.
ライブラリを書き換えるのはちょっとという方は,ソースコードの頭のほうに,
#include <linux/ps2/gs.h>
extern int g_omode;
として,main 関数付近で,
g_omode = PS2_GS_NTSC;
とすれば,出力先が変更できます.同様にしてほかのセッティングもできますね.参考までに標準の定義を示します.
int g_doubleBuffer = 1;
int g_waitVSync = 0;
int g_inter = PS2_GS_NOINTERLACE;
int g_omode = PS2_GS_VESA;
int g_ffmode = PS2_GS_FRAME;
int g_resolution = PS2_GS_640x480;
int g_refreshRate = PS2_GS_60Hz;
ちなみにソースはcdromをマウントして以下のところにあります.
/mnt/cdrom/SRPMS/Mesa-ps2-3.4.1-1.src.rpm
tips集
[pslinux-ml:2006] 動作報告とTips集より引用.和田氏に感謝.
■デモの動かし方
花火
# rpm -ihv /mnt/cdrom/scei/rpms/libps2_1.rpm
# rpm -ihv /mnt/cdrom/scei/rpms/libps2_2.rpm
# cd /usr/doc/PlayStation2/libps2dev/sample/vu1/blow
# make
# ./blow (Ctrl+C:Exit)
# ./blow -1024x768 -16 -z0
# ./blow -ntsc
花
# cd /usr/doc/PlayStation2/libps2dev/sample/basic3d/core
# make
# ./main (Ctrl+C:Exit)
■XWindowの解像度
$ startx -- -screen 0 VESA,1280x1024x16
-screen n [VESA,]WxHxD set VESA screen's width, height, depth
-screen n NTSC[,xD][,inter|,nointer] set NTSC screen's config
startx -- -screen 0 NTSC,x24,inter
■telnet&ftpの起動
# vi inetd.conf
下記2行の#コメントを外してinetd再起動
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
■samba
# cd /etc
# cat passwd | /usr/bin/mksmbpasswd.sh > /etc/smbpasswd
# smbpasswd root
# new SMB passwd: ***** (表示されません)
# Retype new SMB passwd: ***** (表示されません)
# password changed for user root
/etc/smb.confの設定を行って
# samba start [起動]
自動起動
/usr/sbin/setup で smb にチェック
■Networkの設定
# netconfig
■起動デーモンの設定
# ntsysv
■WindowManager切り替え設定
# sdr
■マニュアルの在処
/usr/doc/PlayStation2 配下 (*.txt)
/mnt/cdrom/sm_pdf/japanese 配下 (*.pdf)
■CRTモード設定
% setcrtmode ntsc1 (TV出力)
%setcrtmode vesa3,75 (コンソール1024x768)
/etc/crtmode* の設定が出来ればCRTがない人でも運用可能
/etc/rc.d/init.d/setcrtmode で、1行
/usr/bin/setcrtmode NTSC interlace 32bpp 640 448 <-- 追加
# Save current crtmode
/usr/bin/setcrtmode -p > /etc/crtmode.default
/mnt/mc00/p2lboot.opt (メモリカード内)
display=vga 改め display=ntsc にてTV出力!!
cdromのマウント
cdromのマウントは以下のコマンドでできます.[-t udf ]の部分はファイル名を 8.3 [名前.拡張子]にしないためのオプションです.8.3にしてしまうとファイル名が正確にわからず困る自体が発生すると思われます.mount -t udf /dev/cdrom /mnt/cdrom
メモリーカードのマウント
メモリーカードのカウント方法.MCの着脱に注意.この辺は解説書に書いてありますね.
mount /mnt/mc00
mount /mnt/mc10
アンマウント.
umount /mnt/mc00
umount /mnt/mc10
TV出力
方法:メモリーカード内にある p2lboot.opt を以下のように書き換える.display=ntsc
そのファイルを p2lboot.opt.tv として保存.以下のソースを適当なところに保存してその都度実行
#!/usr/bin/perl
#
# 表示出力の変更
#
system 'mount /mnt/mc00';
system 'cp /mnt/mc00/p2lboot.opt.tv /mnt/mc00/p2lboot.opt';
system 'umount /mnt/mc00';
VGA出力
方法:メモリーカード内にある p2lboot.opt を以下のように書き換える.display=vga そのファイルを p2lboot.opt.vga として保存.以下のソースを適当なところに保存してその都度実行
#!/usr/bin/perl
#
# 表示出力の変更
#
system 'mount /mnt/mc00';
system 'cp /mnt/mc00/p2lboot.opt.vga /mnt/mc00/p2lboot.opt';
system 'umount /mnt/mc00';
振動
以下の文章はデュアルショック2の振動を使うためのサンプルコードです.
#include <stdio.h>
#include <stdlib.h>
#include <linux/ps2/pad.h>
#define AXI_R_H 4
#define AXI_R_V 5
#define AXI_L_H 6
#define AXI_L_V 7
#define BTN_LEFT 9
#define BTN_RIGHT 8
#define BTN_UP 10
#define BTN_DOWN 11
#define BTN_TRA 12
#define BTN_CLR 13
#define BTN_CRS 14
#define BTN_SQU 15
#define BTN_L_1 16
#define BTN_R_1 17
#define BTN_L_2 18
#define BTN_R_2 19
int main()
{
int padID;
int result;
struct ps2pad_act padAct;
unsigned char event[PS2PAD_DATASIZE];
padID = open( "/dev/ps2pad00", 0 ); // O_NONBLOCK // パッド開く
if (padID < 0) return -1;
ioctl( padID, PS2PAD_IOCENTERPRESSMODE, NULL ); // アナログ入力開始
{
memset( padAct.data, -1, PS2PAD_DATASIZE );
padAct.len = 6;
padAct.data[0] = 0;
padAct.data[1] = 1;
ioctl( padID, PS2PAD_IOCSETACTALIGN, &padAct); // アクチュエータ設定
do{
ioctl( padID, PS2PAD_IOCGETREQSTAT, &result); // 終了待ち
}while( PS2PAD_RSTAT_COMPLETE != result );
}
printf("START\n CIRCLE : analog shakeup\n TRIANGLE : digital shakeup\n CROSS : stop\n");
for (; ;) {
// --- read pad ---
read( padID, &event, PS2PAD_DATASIZE); // パッド状態を読む
padAct.data[0] = ((event[3]&0x10)==0)?1:0;
padAct.data[1] = event[BTN_CLR];
ioctl( padID, PS2PAD_IOCSETACT, &padAct); // アクチュエータ出力
if( (event[3]&0x40)==0 )
break;
}
printf("END\n");
ioctl( padID, PS2PAD_IOCEXITPRESSMODE, NULL ); // アナログ入力終了
close( padID ); // パッド閉じる
return 0;
}
アナログパッド
以下の文章はアナログパッドを使うためのサンプルコードです.
#include <stdio.h>
#include <stdlib.h>
#include <linux/ps2/pad.h>
int main()
{
int padID;
int num;
unsigned char event[PS2PAD_DATASIZE];
padID = open( "/dev/ps2pad00", 0 ); /* パッド開く */
if (padID < 0) return -1;
ioctl( padID, PS2PAD_IOCENTERPRESSMODE, NULL ); /* アナログ入力開始 */
printf("START\n CROSS : stop\n");
for (; ;) {
num = read( padID, &event, PS2PAD_DATASIZE); /* データの入力 */
printf( "num=%2d, [0]=%08x, [1]=%08x, [2]=%08x, [3]=%08x, [4]=%08x\r", \
num, *(long*)&event[0], *(long*)&event[4], *(long*)&event[8], \
*(long*)&event[12], *(long*)&event[16] );
if( (event[3]&0x40)==0 )
break;
}
printf("END\n");
ioctl( padID, PS2PAD_IOCEXITPRESSMODE, NULL ); /* アナログ入力終了 */
close( padID ); /* パッド閉じる */
return 0;
}
MPG123
以下の文章はMPG123のコンパイル方法.[pslinux-ml:1487]より転載
[pslinux-ml:1487] Re: 本日出たテーマ
[ http://www.pslug.org/ ]
初めまして、矢坂と申します。
> ・オーディオはどーなってるのよ?(MIDIとかの再生は出来るのか?)
MIDIはやってませんが、オーディオに関してはすぐに出ましたよ。僕のところ
では、mpg123をコンパイルしてMP3のジュークボックスになっております(^^;)。
mpg123のソースをダウンロードして、Makefileに
linux-mips:
$(MAKE) CC=gcc LDFLAGS= \
OBJECTS='decode.o dct64.o audio_oss.o term.o' \
CFLAGS='$(CFLAGS) -DREAL_IS_FLOAT -DLINUX -DOSS\
-DTERM_CONTROL -Wall -O2 \
-fomit-frame-pointer -funroll-all-loops \
-finline-functions -ffast-math \
$(RPM_OPT_FLAGS)' \
mpg123-make
をlinux-mips-alsa:の後あたりに追加して
make linux-mips
でできあがりです。でも、再生するだけで30%近くCPUをもっていってしまって
いるので、つらい(_ _;)。
矢坂健司
[email protected]
[email protected]
過去の話題:
■links
[TOP Page ]