ラベル 情報 の投稿を表示しています。 すべての投稿を表示
ラベル 情報 の投稿を表示しています。 すべての投稿を表示

2013年9月17日火曜日

V2.6、もといV2.7の予告と今後の予定(終了)

「X-BASIC for iOS」v2.6を現在審査に出していますが、
どうやらアップルはiOS7対応アプリの審査を優先しているようで、
対応してないアプリの審査は大幅に遅れているようです。
今しばらくお待ちください。

→2013/09/25追記
散々待たされた挙句に拒絶されたので現在調整中ですが、PCが不具合からの復旧中で作業ができません。です。でも拒絶理由がわからない・・・。

→2013/09/27追記
この際ですので、V2.7まで上げてiOS7対応を考えています。
アイコンはすでに作り終えましたが、表示系の違いがあまりに多くて対応に手間取っています。

アップルは毎回仕様変えすぎ(T_T)

→2013/10/02追記
アップルからの電話にしたがって、拒絶された部分の機能を削除して再審査に出しました。
同時に、iOS7上で取りあえず動くようにしました。

→2013/10/03追記
V2.7を審査に出しました


→2013/10/15追記
とにかく審査が進みません。アップルさん、人員増やしてください。


→2013/10/17追記
さんざん待たされたあげく、また拒絶されました。

最初のバージョンから存在している部分で、何で今更という感じです。
根本的な部分であり、回避策が思いつきません。
iOSの審査厳しすぎます(ほとんどいちゃもんにも聞こえる)。

そこが引っかかっているため、当然バグ取り版も出せません。

このままいけば、公開を終了しなければならない可能性もあります。
(古いバージョンを公開し続けることすら許されない。)

→2013/10/22追記
また電話があって拒絶。
とりあえずコード上抜けがあったのは確かなので強化。
でもこれでまただめなら・・・どうしよう?

→2013/10/31追記
また拒絶。「ソース送るから、どこが悪いのか詳しく教えてくれ」と言ってみた。
もう本当にどこがダメなのかわからん。
すべての拡張子を調べろというのか?


・・・V2.6/2.7での変更点・・・

・1配列の総要素数が65535を超えられなかったのを修正
・error on/offの動作が逆だったのを修正
・error on2を追加
・再帰呼び出し段数に制約をかけて落ちないようにした(エラー追加)
・アニメーションが実行された状態でプログラムを中断した時、次のプログラムを実行してもアニメーションが残ってしまうのを修正
・x68256Color2iOSColor()追加
・versionXBfunc2$()が使えなくなっていたのを修正
・全角半角変換関数を追加
・取説内で検索できなくなっていたのを修正(iPad)
・iOS7対応(とりあえず動作するようにした)
・個別ファイルでのインポート機能を削除(アップルからの指示による)
・iPadでRUNボタンが見えなくなることがあるのを修正
・サンプル追加
・細かいバグの修正

・・・

現在V2.8をiOS7完全対応版として準備中ですが、V2.7が審査を通らないかぎり、v2.8は出せません。そのiOS7対応版ですが、ソース表示&編集に使っているUITextViewというモジュールに多数のバグがいるので正常動作しません。そのため、現在保留中です。


また、iOS7対応は32ビットのみで、64ビットネイティブ動作は、労多くして益「なし」なので行いません。X-BASIC for iOSはぺけ-BASICの構造を模している部分があり、intが64ビットになると、変更が多すぎるからです。

 次はV3.xでデバッグ機能を強化しようと思っていますが、再就職も決まって、おそらくこれからしばらくは開発時間がほとんどとれないでしょう。
住む場所、仕事などすべてに関して不定の状況に陥っており、先行きが全く見えません。正直、世捨て人になる可能性も出てきました(極めてマジ)。
世を捨てたほうが開発には集中できるんですけど(T_T)/~

就職が決まったと言ってもかなり安い給料(前職の半分以下)なので、(秘密)しないとやって行けなさそうなので余計です(雇ってくれただけましなので、文句を言うつもりは全くない)。
最低数ヶ月、下手すると1年位かかるかもしれません。
その間は、サンプルは何とか1月1つは出してしのげればと思うのですが。
あしからずご了承ください。


上記の通り基本的部分で審査が通りませんので、V3.xの開発は全く白紙になりました。
Androidに移行しようかとも思いましたが、全く開発経験が無い上に、結構iOSに依存しているので、それはそれで、不可能に近いです。

市場として広いからと言って、アップルは思い上がっているのではないでしょうか?
iOS7のようなユーザーや開発者を無視したアップデートするし。

2013年6月12日水曜日

「X-BASIC for iOS」の次バージョンの開発状況(V2.2)

「X-BASIC for iOS」v2.2の開発状況などをお知らせします。

ご要望や報告は、この記事にコメントを付けて下さい。

・・・

V2.2(審査中)
・画面描画を約60%高速化
・PIC/CUT/JPEG/PNG/GIF/BMPヘッダー読み取り関数を追加
・MAGファイルローダー追加・magHeader()実装
・YES/true/NO/falseをenum定数に変更
・コントロールコード:カーソル位置から画面最後までを消す、を追加
・locate()で座標が画面内にあるかどうかをリターン値で返せるようにした
 また、座標補正を一部変更した
・tBackgroundColor()/gBackgroundColor()/sBackgroundColor()/sBorder()追加
・tBackgroundAlpha()/gBackgroundAlpha()/kBackgroundAlpha()が即時有効でなかったのを修正
・vpriority()が効いてなかったのを修正
・gTransform()をかけた状態で終了した時、次回の実行時に画面サイズがおかしくなるのを修正
・bitmapPattern()/getBitmapSize()を追加
・picLoader()/cutLoader()/magLoader()に fNoBitmapClose引数を追加
・picLoader()/cutLoader()/bitmapImageFile()で画面幅以上の画像を表示するとき、縮小して全体をいれこむようにした
・hexstrToArray()追加
・hexchr$()でセパレーターを追加
・setTouchArea()/setTouchAreaWithText()で合成RGB指定できるようにした
・devicePlatform()を追加;機種を正確に識別する
・inputで入力中の文字が表示されない(キーボードに隠れている)のを修正
・サンプルの一部をiPhone/iPod touch画面に正式に対応させた
・a_setPlayData()で同時に登録できる音声ファイルを64に拡大した
・getWidth()のwxも省略できるようにした
・bitmapを使用したあとにプログラムを終了するとメモリを確保したままになっていたのを修正
・gFileStatus()追加
・ファイル名に""を与えると落ちるのを修正(該当関数多数)
・printの"文字列"中にコントロールコードが含まれていた時の挙動がおかしいので修正
・print using "+%%"の結果がおかしいのを修正
・小バグ/サンプルバグ/取説誤記修正

スプライトの高速化中止(メモリ利用量が多すぎる)


2013年6月1日土曜日

X-BASIC for iOSのごめんなさい(随時追記)

X-BASIC for iOSの、各種「ごめんなさい」部分を述べておきます。

関数の命名規則がバラバラ
pic_load()だったりpicLoader()だったり。前者はX68に多く、後者はApple的です。
今後、X68にない関数はApple的に統一していく予定です(V2.1でだいぶ行いました)。
すでに存在する関数名についも、互換性のためそのまま残します。
同一機能の関数に複数名称あるのは主にそのためです。


関数動作がX-BASIC/68と微妙に異なる
X-BASIC for iOS は基本的にX-BASIC/68やぺけーBASICと互換性がありますが、それは内部ステートメントと機種依存しない外部関数だけで、機種やOS依存の部分は、同名関数であっても同一動作をするとは限りません。

特に表示系はiOSや機種に強く依存するため、表示結果がX68と微妙に異なることが多々あります。おそらく特にわかりにくいのが透明の概念でしょう。

 X68では黒=透明であり、ページを重ねている場合はその部分は透けてみます。
逆に言えば、助けさせるためには黒で塗れば良いです。
ところが、iOSでは黒と透明は全く異なるものです。黒で塗った部分は、重ねあわさせても黒であり、透過しません。その上、透明度を持った色で「そのまま」描画しようとすると、元々そこにあったパターンと合成してしまいます。単純に 置き換わらないのです。
これを回避するにはblend()で合成方法を変更する必要があります。

X−BASIC for iOSはBASIC/68のプログラムをそのまま動かすことを目的としたのではなく、「iOSに比較的簡単に移植する」ことを目的としたため、必要以上にX68と動作が一緒になるようにはしていません。そのため、こういう部分があります。

もし「完全互換動作」を求める声が多ければ、それを別の外部関数として実装するという手もあるでしょうが、現在の状況では(時間的そして経済的に)不可能です。


意図しない範囲まで描画される
iOS版のグラフィック座標は実数です。これは何を意味するかというと、物理的なドットの間にも仮想的なドットが存在すると想定していると言うことです。これにより、アンチエイリアスなどを実現しています。

しかしこれがゆえに、指定した範囲よりも広く実描画されることがあります。なので、X68でドット単位で正確に領域を限定して描画していた物は、それが維持できなることがあります。具体的には、ある領域に描画して、その後そこを消そうとした場合、消したはずなのに一部残る、という現象が発生します。

残念ながら、この現象はアンチエイリアス機能をOFFにしても解消しません。描画方法をプログラム的に調整するしかありません。

一番手っ取り早いのは、描画をbitmap関数で行うことです。bitmap関数は整数座標であり、アンチエイリアスもないので、指定した座標に正確に描画されます。


fopen()のリターンが異なる
開発時に参考にしていた文献の間違いのため、X68版とリターン値の範囲が異なります。
X-BASIC/68では正常で>=0ですが、iOS版では>=1です。ただし、X68版のソースを動かす場合は範囲が広いだけなので問題にはなりません(だから余計に気がつかなかった)。
万が一、X68に移植することがあれば注意してください。

すでにiOS上の多数のサンプルで使われているため、変更できませんでした。

V2.5からfclose()/fcloseall()のリターン値の値が取説上(定数名として)変わっていますが、値そのものは同じです。


外部関数のエラーチェックが異なる
外部関数内におけるエラーチェックに関しては、重要なもの以外、ほとんど再現していません。理由は簡単で「いちいち調べるのが面倒だった」からです。
基本的には、X68版のほうがエラーチェックが厳しいので、それで動いていたものはiOS版でも大丈夫と思われます。
iOS版は引数の範囲が規定外だった時、多くの場合規定範囲内に自動的に補正するのでエラーは発生しません。
エラーが発生することを想定している場合は、呼び出し側でチェックしてください。

注意すべきはfopen()で、X68版ではファイルがオープンできない時外部関数エラーが発生して停止しますが、iOS版では標準ではリターン値としてエラーコードを返してくるだけでエラーは発生しません。
したがって、エラーで止まることを前提にして作られたプログラムは、必ずエラーチェックを追加する必要があります。
X68版iOS版
fp=fopen("file","r") fp=fopen("file","r")
if fp<=0 then print "file error":end
V2.6からはerror on2で、fopen()のファイルオープンエラーでも、エラーで停止させるように出来ます。

なお、X-BASIC/68のプログラムではfopen()のリターン値=ファイルポインタを得ずにfread()などのfp値に固定数値を与えている行儀の悪いものが散見されます(Oh!X掲載のプログラムにも結構あった)。
そういうものはすべからく誤動作しますので、必ずfopen()でfpを得てそれを与えるようにしてください(そういうプログラムはBCを通してCに変換するとほぼ確実に誤動作します)。



スプライト機能は重い
これはひとえに私の技量不足からくるものですが、X68のスプライト、特にBG画面との重ね合わせは、実現するにはかなり面倒な処理が必要です。スプライト機能をX68互換を捨てて実装すればもう少し高速化も可能だったかもしれませんが、ここだけは資産を生かすため出来るだけX68互換を維持したかったので、現在のようになっています。

BGを使わないようにすれば、多少省メモリと高速化されます。

現在のスプライトでは、iPad1においてはスプライトのみ(BGなし)を、移動せず固定的に表示するのが精一杯です。iPad2以降やiPod touch4ではCPUやGPUの性能向上や、画面サイズによりおよそ問題ない性能が出ています。

ただ、やはり重いのは重いので、電池の消耗が激しいです。

BGを使わなくても遅いです。BGとの重ね合わせは処理が重いのはわかっているのですが、スプライトのみで使っても異様に遅い原因はわかっていません。
シミュレーター上では十分な速度で動いていても、実機;特にiPad1/2ではものすごく遅いです。スプライト使わず、グラフィックで描いたほうが早いくらい。

移動せず、固定的に、重ねあわせられるもう1画面として使うのが関の山かもしれません。
現状では、限定された利用しかできないようです。ごめんなさい。
OpenGLなどで書きなおせば早くなるのかしら?
今のところ、その技量はないですが。

・・・

今後、思い出し次第追記します。

2013年5月24日金曜日

「X-BASIC for iOS」の次バージョンの開発状況(V2.1)

「X-BASIC for iOS」v2.1の開発状況などをお知らせします。

ご要望や報告は、この記事にコメントを付けて下さい。

・・・

V2.10(発売中)

・若干の表示高速化
・テキスト表示コントロールコードの追加
・グラフィックページ/スプライト画面アニメーション機能
・グラフィックページ/スプライト画面変形
・グラフィックスクロール(残念ながら低速)
・int定数設定ステートメント追加(enum)
・縦書symbol追加;symbolt()
・NaN判定関数追加;isnan()
・beep2()の発声が遅れることがあることに対して対策を追加
・usingでのエラーをわかりやすくした
・symbol()で表示サイズを返すようにした
・abs()の精度が足りなかったのを修正
・tan(pi(1.0/4.0))が0と表示されるのを修正(表示のみ)
・NaNを表示すると落ちるのを修正
・box()/fill()の描画幅が1足りなかったのを修正
・vpage()の第2引数をNOにしても表示が消えない;取説の間違いを修正
・vpage()を設定しても即時表示に反映されないのを修正
・関数命名規則統一のため、一部関数に別名定義を追加
・gAntiAlias()関数追加;グラフィック描画におけるアンチエリアシングの設定
・getTouchStatus()関数追加;タッチ情報を得る
・bg_fill()のパレットブロックの省略時の番号が1ではなく2になっていたのを修正
・スプライトシステムの改良(少し高速化)
・サンプルfiler.basで先頭ページ以外で削除対象ファイルが間違っていたのを修正
・ファンクションキーの最大数を20に拡大した
・tatrb(ATRB_REVESE)で文字列表示した時、文字間に隙間があくことがあるのを修正
・tatrb()の属性をOR指定できるようにした
・tatrb(ATRB_BOLD);太字を追加
・いくつかのサンプルのバグを修正
・displayFunctionKey()の解除時の問題を修正
・タッチキー部分が反転したままになることがあったのを修正
・getWidth()に引数追加
・小バグ修正 (落ちる確率が下がる)

本体の大幅なバージョンアップはこの辺りで一段落します・・・たぶん。
BASICプログラムをたくさん作り、その過程で出たバグの修正や必要機能の追加をしています。


あと、このサイトにあるサンプルは現在V2.00用ですが、徐々にV2.1以降専用に置き換えます。取説はすでにV2.1対応に更新されています(対応バージョンを書いてあるので問題ないかと)。