3D表示部分で一番時間のかかるクイックソートの部分をC言語で機械語にしてみた

#module 
;クイックソート
#deffunc qsort array qsort_index,array qsort_sort,int qsort_right,int qsort_left
xdim QsortCode, 145
  QsortCode.0 = $81ec8b55, $000380ec, $57565300, $fc80bd8d, $e0b9ffff, $b8000000
  QsortCode.6 = $cccccccc, $45c7abf3, $000000fc, $fc458b00, $89104d8b, $fe6c858c
  QsortCode.12 = $558bffff, $14458bfc, $dc958489, $8bfffffc, $c183fc4d, $fc4d8901
  QsortCode.18 = $8bfc558b, $e883fc45, $fc458901, $8e0fd285, $000001de, $8bfc4d8b
  QsortCode.24 = $fe6c8d94, $5589ffff, $10458b10, $fccc8589, $4d8bffff, $8d948bfc
  QsortCode.30 = $fffffcdc, $8b145589, $85891445, $fffffcc8, $0310458b, $2b991445
  QsortCode.36 = $8bf8d1c2, $148b0c4d, $c09589c1, $8bfffffc, $8904c144, $fffcc485
  QsortCode.42 = $cc8d8bff, $8bfffffc, $04dd0c55, $c09ddcca, $dffffffc, $41c4f6e0
  QsortCode.48 = $858b1175, $fffffccc, $8901c083, $fffccc85, $8bd6ebff, $fffcc88d
  QsortCode.54 = $0c558bff, $dcca04dd, $fffcc09d, $f6e0dfff, $117401c4, $fcc8858b
  QsortCode.60 = $e883ffff, $c8858901, $ebfffffc, $cc8d8bd6, $3bfffffc, $fffcc88d
  QsortCode.66 = $b28f0fff, $8b000000, $fffccc95, $0c458bff, $89d00c8b, $fffcd48d
  QsortCode.72 = $d0548bff, $d8958904, $8bfffffc, $fffcc885, $0c4d8bff, $fccc958b
  QsortCode.78 = $758bffff, $c13c8b0c, $8bd63c89, $8904c144, $8b04d644, $fffcc88d
  QsortCode.84 = $0c558bff, $fcd4858b, $0489ffff, $d8858bca, $89fffffc, $8b04ca44
  QsortCode.90 = $fffccc8d, $08558bff, $898a048b, $fffcd085, $cc8d8bff, $8bfffffc
  QsortCode.96 = $858b0855, $fffffcc8, $8b08758b, $04898604, $c88d8b8a, $8bfffffc
  QsortCode.102 = $858b0855, $fffffcd0, $8b8a0489, $fffccc8d, $01c183ff, $fccc8d89
  QsortCode.108 = $958bffff, $fffffcc8, $8901ea83, $fffcc895, $cc858bff, $3bfffffc
  QsortCode.114 = $fffcc885, $d68e0fff, $8bfffffe, $8d3b104d, $fffffcc8, $558b267d
  QsortCode.120 = $10458bfc, $6c958489, $8bfffffe, $958bfc4d, $fffffcc8, $dc8d9489
  QsortCode.126 = $8bfffffc, $c083fc45, $fc458901, $fccc8d8b, $4d3bffff, $8b267d14
  QsortCode.132 = $858bfc55, $fffffccc, $6c958489, $8bfffffe, $558bfc4d, $8d948914
  QsortCode.138 = $fffffcdc, $83fc458b, $458901c0, $fe0ee9fc, $5e5fffff, $5de58b5b
  QsortCode.144 = $000000c3
 prm = varptr(qsort_index),varptr(qsort_sort),qsort_right,qsort_left
 val = callfunc(prm,varptr(QsortCode),4)
 return
#global

1600ポリゴンで20msしか早くならなかった。

再帰するクイックソートを機械語でHSPで使用すると変な値になる。
なんでだろう。

と、とりあえず、機械語をHSPで使えるようになったから嬉しい!

他にもいろいろ出来たらいいなあ。
マップメーカーは、3D表示プレビューを作ったら大体完成します。

あと、暗号化もつけたいなー

関連記事

  • 3Dネット対戦ゲーム作成日記 part63Dネット対戦ゲーム作成日記 part6 やったー 意外に簡単に裏面の処理ができちゃった! まさか2つのベクトルの外積の計算式がこんなところで役に立つなんて。 ただ1つの面を調べるのに8回もatan使ってます。 速度は大丈夫かな、描写速度よりは計算速度のほうが速いからいいけど。 だれか4点から右方向に回転か、左方向に回転か調べる方法でもっといい方法があったら教えて下さい^^ /*4点が左回 […] Posted in ゲーム制作
  • Javaで3Dゲーム開発日記 part1Javaで3Dゲーム開発日記 part1 以前作ったこれは、とにかく3Dの表示にチャレンジということで拡張性がありませんでした。 ということで、今回は、物体を単位として色々設定できるオブジェクト、UV座標は0~1、 当たり判定、画像レンダリングを別スレッドへ、の4つを意識して再び作成。 モーションは、まだまだ敷居が高いので諦めます。(((っ・ω・)っ 「UV座標は0~1」というのは、以前は素の値(0-256と […] Posted in ゲーム制作
  • Javaで3Dゲーム開発日記 part4 パーリンノイズJavaで3Dゲーム開発日記 part4 パーリンノイズ 3Dと言ったらやっぱりテクスチャ。 パーリンノイズを作ってみた。 ノイズの間は線形補完しています。 本当はバイキュービックとか、しっかりした補完がいいと思うのですが、技術力不足で無理でした。(>_<) こんなのが出来上がるなんて、ランダムって不思議です! 自動生成を利用すれば、小さなファイルサイズでも、高解像度テクスチャを利用できます。 […] Posted in ゲーム制作
  • Javaで3Dゲーム開発日記 part5 画像補間Javaで3Dゲーム開発日記 part5 画像補間 以前の続きでテクスチャのパーリンノイズの補間法の話です。 いい加減補間について調べようといろいろとプログラムして作ってみました。 テクスチャなので、上下と左右が繋がるように補間します。 8x8px → 256x256px […] Posted in ゲーム制作
  • Javaで3Dレンダラ作りたい人まとめJavaで3Dレンダラ作りたい人まとめ Javaでソフトウェアレンダリングを勉強したい人の調べ物まとめ。順番は関係ないです。 誰もが一度は作ってみたいと思う?3Dソフトレンダラ。是非チャレンジしてみて下さい!!  講座系 石田智史さんの「JAVAで学ぶ3D」 (gcj/JAVAde3D)(Internet […] Posted in ゲーム制作
  • ドット絵用の拡大アルゴリズムの開発ドット絵用の拡大アルゴリズムの開発 前々から拡大について色々作ってたのですが、 ちょっと新作のフィルターが完成しました^^ 原理的にはまずニアレストネイバーで拡大して、 次に斜め線になるようなところに補間を入れていく。 処理の関係でドット絵専用フィルターになりそう と言うわけでちょっと結果をお見せします。 まず元画像はこちら 8bit design.様 よりDRAGON […] Posted in アルゴリズム