フリーゲームとして公開していたのですが、バージョンアップ後、複数のOSで
動かないと言う報告をいただいておりまして、ここで質問させていただければと。
WinXP...OK / Win7(32bit)...NG / Win7(64bit)...OK / Win8.1(64bit)...OK
Win10(32bit)...NG / Win10(64bit)...OK といった具合です。
同じOSでも前バージョンでは動いていたとの連絡もあり、
なにか変わったことを追加したかな?と回想していたところといえば、
・プラグインのhspwaveを使って、音量メーターを付け足した。
・mciを使ってフルスクリーン化している。というところです。
//プラグイン読み込み部 #include "hspdxfix.as" ;DirectX特化のプラグインを使用する #include "hspcv.as" ;画像操作の拡張プラグイン #include "mod_img.as" ;PNG形式を読み込むためのプラグイン #include "hsp3util.as" ;emintなどの特定命令を使うためのプラグイン #include "hspext.as" ;固定少数→整数への命令を使う際に必要 #include "hmm.as" ;DirectSoundを使うためのプラグインを使用する #include "ck_joyforce.as" ;joystickを使うためのプラグイン #include "hspwave.as" ;音量レベルメータを使うためのプラグイン #include "hspdef.as" #include "user32.as" ;フルスクリーンに対応させるため //フルスクリーン化 dscx = ginfo_dispx : dscy = ginfo_dispy //デスクトップ画面のXサイズとYサイズを取得 gosub *dataload //データロードしてみる if wsize = 0 : screen 0, 640,480 : width 640,480 //画面サイズの指定、画面サイズ変更用 if wsize = 1 : screen 0, 800,600 : width 800,600 if wsize = 2 : screen 0, 1024,768 : width 1024,768 if wsize = 3 : screen 0, 1280,1024 : width 1280,1024 if wsize = 4 { SetWindowLong hwnd,-16,$80000000|$10000000 // フルスクリーンにする SetWindowPos hwnd,0,0,0,dscx,dscy,$4 // ウィンドウ枠のサイズ考えずにサイズ変更 } await 16 ;1/60秒待ってから es_sync 2 ;実画面に表示するよ //音量メータ部 repeat;バッファがいっぱいになるのを待つ w_in_bufs bufs await 0 if bufs==0 :break loop color 0,255,0 pos 0,128 repeat 640 //読み出すバッファサイズ tc(cnt)=peek(buf,cnt) if tsc >= 0 & tsc < tc(cnt) : tsc = tc(cnt) loop if tsc > 200 : tsc = 201 ;c=128が音量0であると考えると if playflg = 0 & tsc > 0 : tsc = tsc - 110 //プレイ中でなければ音量は0に if tsc > 0 : tsc = tsc -8 //音量ゲージは常に減少する pos 296 ,636 //左スピーカ位置 if tsc >= 160 : es_copy 7, 512,480,80,80 //最大スピーカ repeat 6 if tsc < 160-cnt*8 : es_copy 7, 592+cnt*80,480,80,80 //スピーカ loop //音に合わせたグラフィックに変更 repeat 320 //読み出すバッファサイズ c=peek(buf,cnt)-110 pos 378+cnt,636 es_copy 7, 384+c,128,1,80 loop pos 696 ,636 //右スピーカ位置 if tsc >= 160 : es_copy 7, 512,560,80,80 //最大スピーカ repeat 6 if tsc < 160-cnt*8 : es_copy 7, 592+cnt*80,560,80,80 //スピーカ loop w_in_add buf,640,0 ;2回目以降
ソースの一部ですが、長々と貼り付けてしまいました。
なぜ32bitでは動かないのかわからず、また環境も手元にあるのは動いてしまう
XP,Win8.1(64bit)なので、動作試験も自由にできるわけではありません…
なにか情報がありましたらご教授のほどお願いします。