スポンサーサイト

NRTC/MMLXED update

NRTC
2014-05-03
コンパイラをNRTDRV 20140503版に変更した。
コンパイル実行処理の一部を修正。
表示処理の改善。
更新記録の表示を追加。

http://www.mediafire.com/download/pg9miq9iup467vp/nrtc-140503a.apk
MD5:512e2ce47dca59d58ff53b22e5d6919c


MMLXED
2014-05-03
ファイルの改行処理を修正。
テキスト選択状態でBSボタンにより選択部分が削除されるように変更。
更新記録の表示を追加。
新規・保存・破棄などのメニューを追加。

http://www.mediafire.com/download/4ki5x5bxi7la816/mmlx140503a.apk
MD5:c0e4dcd9769bc13d97b34ee12d847a3e

NRTDRV/NRTC/MMLXED for Android 2014-05-03

NRTDRV for Android
2014-05-03
デフォルトの曲長を6分に変更。
メイン画面の変更。
最適化フラグの変更。
曲データのロード方法を変更。
曲選択時のリストでフォルダが優先されるように変更。
タイトル取得時のバグを修正。

http://www.mediafire.com/download/pw7ht6ys350ukb8/nrtdrv_android140503.apk

NRTC for Android
表示全般等を改善。

http://www.mediafire.com/download/izcitcciddcirrn/nrtc-140503.apk

MMLXED
謎。何か変えた記憶が…。

http://www.mediafire.com/download/sd91vbf1xhzdki3/mmlx140503.apk

HSP3dishのバグ

HSP3dishのバグを報告しようと思ったのですが、どこに報告していいのかわからず…。
(バグトラッカーは当方の回線からはなぜか入れず…)
とりあえずは、ここに書いておきます(^_^;)

コメントアウトした部分が従来のソースです。

■supio_ios.cpp/supio_ndk.cpp:
void getpath( char *stmp, char *outbuf, int p2 )


switch( p2&7 ) {
case 1: // Name only ( without ext )
// stmp[ strlen(tmp)-strlen(p_ext) ] = 0;
tmp[ strlen(tmp)-strlen(p_ext) ] = 0;
strcpy( p, tmp );
break;



これはよくあるバグです(打ち間違え)

■hspvar_str.cpp
static void HspVarStr_EqI( PDAT *pdat, const void *val )
static void HspVarStr_NeI( PDAT *pdat, const void *val )


// Eq
static void HspVarStr_EqI( PDAT *pdat, const void *val )
{
if ( strcmp( (char *)pdat, (char *)val ) ) {
*(int *)pdat = 0;
} else {
// *(int *)pdat = 1;
*(int *)pdat = !0;
}
myproc->aftertype = HSPVAR_FLAG_INT;
}

// Ne
static void HspVarStr_NeI( PDAT *pdat, const void *val )
{
// int i;
// i = strcmp( (char *)pdat, (char *)val );
// *(int *)pdat = i;

if (strcmp( (char *)pdat, (char *)val ))
{
*(int *)pdat = !0;
} else {
*(int *)pdat = 0;
}
myproc->aftertype = HSPVAR_FLAG_INT;
}



これはちょっとむずかしい。
strcmpは0かret > 0 か ret < 0を返すことが予期されます。

これは内部的には文字コードを引き算により比較していると考えられます(実装により異なる)
文字A - 文字Bですから、1以上の数、-1以下の数も戻るはずです。

hsp3dishではif文のそれぞれの結果はビット演算のANDで比較するため、
本来、a="a"として、a == "a" & a != "c"の結果は真ですが、正しくなりません。

■テストコード


#include <stdio.h>
#include <string.h>

int main(int argc,char *argv[])
{
char *a="a";
char *b="c";

int ret1 = 0;
int ret2 = 0;

ret1 = 1;
ret2 = strcmp(a,b);

printf("ret1 = %d,ret2 = %d\n", ret1, ret2);
printf("ret1 & ret2 = %d\n", ret1 & ret2);

return 0;
}



■実行結果

ret1 = 1,ret2 = -2
ret1 & ret2 = 0


NRTC and MMLXED and etc...

http://www.mediafire.com/download/nygskylyylo2smr/nrtc-140501.apk
NRTC for Android(NRTDRV Compiler)

http://www.mediafire.com/download/ix4qxgb5cqcrb3c/mmlx140501.apk
MMLXED 140501(MML editor for Android)


http://www.mediafire.com/download/2msifw5562pz5ln/nrtdrv_android140430.apk
NRTDRV for Android(再掲)

http://www.mediafire.com/download/2j8b01n7b7h0vai/NRTC_HSP.zip
NRTCのHSPソース

http://www.mediafire.com/download/z3zmjj62c9k0bu2/nezplay-2014-04-28.zip
NEZPLAY on SDL for Win32 最新版

http://www.mediafire.com/download/nxacuqzi2pjh3dj/nrtc_cli_hsp3embed_20140428.zip
NRTCのhsp3embed環境。HSPのソースコードコンバータで作ったファイルを利用できます。

■既知の不具合
NRTDRV for Androidでファイル更新後も以前の曲が再生される。
→内部のキャッシュの問題です。いちど別の曲を再生してみてください。

プロフィール

BouKiCHi

Author:BouKiCHi
ABOUT ME
MAIL:alf_byncyou at hotmail.com

WEB:http://clogging.web.fc2.com/
TWITTER:@bkc_alf

月別アーカイブ

FC2カウンター

ブロとも申請フォーム

ブログ内検索