Z80比較命令 数値を符号付きとして扱うか、符号無しとして扱うか、で少し変わりますね。 A,B符号無しの場合 CP A, B ; A-B の結果をフラグに反映する命令 → A < B なら Cy = 1 → A = B なら Zf = 1 → A ≧ B なら Cy = 0 → A ≦ B なら Cy = 1 or Zf = 1 → A > B なら Cy = 0 and Zf = 0 A,B符号付きの場合 CP A, B → A < B なら Sf = 1 → A = B なら Zf = 1 → A ≧ B なら Sf = 0 → A ≦ B なら Sf = 1 or Zf = 1 → A > B なら Sf = 0 and Zf = 0 ≦は、AとBの中身を事前に入れ替えておければ >で判定できるようになるので、1つのフラグで判定できるようになります。
sugaさんからのメールより モニタMZ-1Z001とSB-1520で、IPL後モニタの初期化が完了し 後続のBASIC等に制御を渡すのに次の番地が使われています。 00AE C3 (無条件ジャンプ命令) 00AF 実行アドレスの下位バイト 00B0 実行アドレスの上位バイト このままだと、RESETを押してもモニタに戻らず再びBASIC等に 戻ってしまうので ここをモニタのリストの通り 00AE C3 00AF B1 00B0 00 とか、全てNOP (00)とか 00AE 21 とか 00AE 01 ・・等に置き換えてるようです。
Godot Engineで「一方通行床」「ハシゴ」「登り壁」「ダッシュ」「壊れる壁」の実装方法について解説する記事を書きました
https://2dgames.jp/godot4-impreme
https://twitter.com/2dgames_jp/status/1686552143140986881
https://twitter.com/2dgames_jp/status/1684015176444706817
MZ-1Z001 0000h モニタスタート 00AEh GOOUT BASICへジャンプ 00B1h モニタホットスタート 12A0h BASICコールドスタート 1300h BASICホットスタート
周波数 | 転送速度 | 割り込み周期 |
8MHz | 976KB/s | 125ns |
6MHz | 750KB/s | 167ns |
4MHz | 488KB/s | 250ns |
2MHz | 244KB/s | 500ns |
1MHz | 122KB/s | 1μs |
500KHz | 61KB/s | 2μs |
250KHz | 30.5KB/s | 4μs |
125KHz | 15.25KB/s | 8μs |
PC-8001 リスト構造と弾幕
MSX用ゲーム製作
私のへっぽこコードでよければ参考にどうぞ. math.h/math.c の atan2 と sin と cos です.
#JSDSCSI https://amazon.co.jp/gp/product/B010PZZXNI/ MOSI - [3] MISO -[8] SCLK - [2] CS - [1] 5V - [5] GND - [9] で自作もできます。
Z80のCP使用時の分岐 cc 読み方 意味 -------+---------------+----------------------------------------- Z ゼロ 演算結果がゼロ,または等しい NZ ノンゼロ 演算結果がゼロでない,または等しくない C キャリー 桁あふれ,または小さい NC ノンキャリ 桁あふれなし,または大きいか等しい P プラス 符号付き数値の時,演算結果がプラス M マイナス 同じく,演算結果がマイナス PE パリティ・イーブン 論理演算で,「1」のビットの数が偶数 PO パリティ・オッド 同じく,奇数
> フロー制御に用いるxon xoffのコマンドを送る方法 方法、なんていうほどたいしたものじゃありません。通常XONとして0x11,XOFFとして0x13を送信するだけです。もちろん、コマンドを受けた側でフロー制御として機能するようにプログラムを組むのはプログラマの責任です。
プロジェクトの「プロパティ」の「リンカー」「入力」「特定の既定のライブラリを無視」にリリースでは「libc.lib;%(IgnoreSpecificDefaultLibraries)」デバッグでは「libcd.lib;%(IgnoreSpecificDefaultLibraries)」を設定 追加の依存ファイルに「legacy_stdio_definitions.lib」を設定
C2 KMM 200V 560μF C13 KY 35V 470μF C14 KY 25V 47μF C15 KY 25V 100μF C23 LXZ 16V 4700μF C33 KY 35V 2200μF C34 KY 25V 100μF C35 LAH 25V 22000μF C41 KY 35V 2200μF C43 KY 25V 100μF
・小さい(A<n)ならば,Cフラグセット,Zフラグリセット ・等しい(A=n)ならば,Cフラグリセット,Zフラグセット ・大きい(A>n)ならば,Cフラグ,Zフラグ両方リセット
MZ-2200 IPL取り出し方法 ちなみに、容量が7FFFのテープを作成し、 その中の7FF0あたりに、0080をたくさん並べておいて、 テープのはじめのほうに0000から3FFFあたりを9000 へLDIRするようなプログラムを置いておくと、再度、モニター だけロードしたらIPLをSAVEできますよ。 スタックを直接上書きしてしまう方法ですが。
String operator"" s(const char* str, std::size_t length) { return String(str); } int operator"" km(unsigned long long x) { return static_cast<int>(x) * 1000; }
System256でキン肉マンマッスルグランプリ2(1だと不可)を起動して 「SYSTEM256 MODE SETTING ERROR」と表示されているときに ボタン 123 123 4321232 123 123 4321231 START の順番に押すと起動できる。 3ボタンの筐体が多くてできないかもだけど… System256だとCPUは1.33倍になって処理落ちが減ってRAMが多いからキャッシュが効く。 System256の246モードだとキャッシュが効くんだったかなぁ…? もう昔過ぎて忘れた…
HandleRewardedAdFailedToLoad(object sender, AdErrorEventArgs args) の引数の型を↓に変更 HandleRewardedAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
import { app } from "electron"; app.commandLine.appendSwitch('js-flags', '--max-old-space-size=4096'); // readyよりも前に実行する app.on('ready', () => { // ... });
GPIO18をonにする \\batocera\share\system\custom.sh #!/bin/bash gpio_number=18 echo "${gpio_number}" > /sys/class/gpio/export echo "out" > /sys/class/gpio/gpio${gpio_number}/direction echo "1" > /sys/class/gpio/gpio${gpio_number}/value
System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch(); stopWatch.Start(); stopWatch.Stop(); Debug.Log("time " + stopWatch.Elapsed);
■TiledTmxImporter.csのCreateMapPrefab関数修正 PrefabUtility.CreatePrefab(path, game_object); Editor.DestroyImmediate(game_object); ↓ var prefab = PrefabUtility.SaveAsPrefabAsset(game_object, path); PrefabUtility.UnpackPrefabInstance(game_object, PrefabUnpackMode.OutermostRoot, InteractionMode.AutomatedAction); Editor.DestroyImmediate(game_object); AssetDatabase.SaveAssets();
[Unity]アンドロイドでバックボタンを押した時の処理 // プラットフォームがアンドロイドかチェック if (Application.platform == RuntimePlatform.Android) { if (Input.GetKeyDown(KeyCode.Escape)) { Application.Quit(); return; } }
OpenVRとOpenGLの座標系は同じっぽい (y+) 奥(z-) ↑ / | / | / |/ (x-)-----+----→(x+) /| / | / | ↙ | 手前(z+) (y-)
// aとbが同じだったらtrue (a == bのfloat版) #define _USE_MATH_DEFINES #include <math.h> bool approximatelyf(float a, float b) { if(fabs(a - b) <= DBL_EPSILON * fmaxf(1.0f, fmaxf(fabs(a), fabs(b)))) { return true; } return false; }
■プロジェクトに外部モジュール追加 libdms, dms, lpng, ssalib, libogg, libvorbisを追加した場合。libvorbisはliboggを参照しているのでliboggの下に追加。 ・settings.gradle include ':app', ':libdms', ':dms', ':lpng', ':ssalib', ':libogg', ':libvorbis' project(':libdms').projectDir = new File(settingsDir, '../../../libDms/project/androidstudio/libdms') project(':dms').projectDir = new File(settingsDir, '../../../libDms/project/androidstudio/dms') project(':lpng').projectDir = new File(settingsDir, '../../../lpng/project/androidstudio/lpng') project(':ssalib').projectDir = new File(settingsDir, '../../../ssalib/project/androidstudio/ssalib') project(':libogg').projectDir = new File(settingsDir, '../../../libogg/project/androidstudio/ogg') project(':libvorbis').projectDir = new File(settingsDir, '../../../libvorbis/project/androidstudio/vorbis') ・app\build.gradle dependencies { implementation project(path: ':libdms') implementation project(path: ':dms') implementation project(path: ':lpng') implementation project(path: ':ssalib') implementation project(path: ':libogg') implementation project(path: ':libvorbis') } ■プロジェクトに.a追加 ・app\src\main\cpp\CMakeLists.txt set(LIB_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../../libDms/project/androidstudio) add_library(Dms STATIC IMPORTED) set_target_properties(Dms PROPERTIES IMPORTED_LOCATION ${LIB_ROOT}/lib/${ANDROID_ABI}/libDms.a) ■AdMob (Google Play Services) ・AndroidManifest.xmlに<meta-data>追加 <manifest> <application> <meta-data android:name="com.google.android.gms.ads.AD_MANAGER_APP" android:value="true"/> </application> </manifest> ・app\build.gradleにライブラリ追加 dependencies { implementation 'com.google.android.gms:play-services-ads:18.0.0' } ■タイトルバーを消す ・app\src\main\res\values\styles.xml <resources> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="windowNoTitle">true</item> ← 追加 ■画面の向きを変更した場合の再起動を回避 <manifest <application <activity android:configChanges="orientation|screenSize" ← 追加 android:screenOrientation="portrait"> ← 追加(portrait、landscapeなど) ■assetsフォルダ追加 AndroidStudioの[File]-[New]-[Folder]-[Assets Folder]を選択する。 任意のフォルダを追加することができる。
■aarファイルの作成 (1) AndroidStudioを起動する (2) 「Start a new Android Studio Project」を選ぶ (3) 「Add No Activity」を選んで「Next」ボタンを押す (4) Nameを入力してPackage nameとSave locationを確認して「Finish」ボタンを押す (5) プロジェクトが作成されるのを待つ (6) 「File」-「New」-「New Module...」を選択する (7) 「Android Library」を選んで「Next」ボタンを押す (8) Application/Library nameを入力してModule nameとMinimum SDKを確認して「Finish」ボタンを押す (9) 「****\src\main」フォルダに「cpp」フォルダを作成する (10) cppフォルダに「CMakeLists.txt」ファイルを作成する。 例) cmake_minimum_required(VERSION 3.4.1) add_library( ssalib SHARED ../../../../../../source/ssadata.cpp ../../../../../../source/ssalib.cpp ../../../../../../source/ssaload.cpp ) target_link_libraries( ssalib Android Log ) (11) 左のProject一覧のModule名を右クリックして「Link C++ Project with Gradle」を選ぶ (12) Build Systemに「CMake」を選びProject Pathに上で作成した「CMakeLists.txt」を選択して「OK」ボタンを押す (13) 「Build」-「Rebuild Project」を選ぶと「build\outputs\aar」にaarファイルが作成される
https://developer.android.com/google/play/billing/billing_library_releases_notes#release-2_0 > 3日以内に購入を承認しない場合、ユーザーは自動的に払い戻しを受け、Google Playは購入を取り消します つまり、課金しっぱなしでアイテムを付与しなかった場合、自動的に払い戻されるということらしい
・円アイコン、アダプティブアイコンの設定 AndroidStudio3.3で「Empty Activity選択」-「Next」-「Finish」プロジェクト作る ・円アイコンにPNGを設定する (1)app/src/main/res/の各mipmapフォルダにあるic_launcher_round.pngアイコンを更新する。 PNG画像のサイズは48x48、72x72、96x96、144x144、192x192。 (2)アイコンを更新するだけなら(1)だけで良いがファイル名を変える場合は app/src/main/AndroidManifest.xmlを書き換える。 <application android:roundIcon="@mipmap/(アイコンPNG名)" ・アダプティブアイコンにPNGを設定する (1)app/src/main/res/drawable/ic_launcher_background.xmlを削除する。 (2)app/src/main/res/drawable-v24/ic_launcher_foreground.xmlを削除する。 (3)app/src/main/res/の各mipmapフォルダにアイコンを追加する。 PNG画像のサイズは108x108、162x162、216x216、324x324、432x432。 512x512の画像を1024x1024位にして余白をつけると丁度になる。 アイコン用のic_launcher_foreground.pngを追加する。 mdpi,48x48,108x108 hdpi,72x72,162x162 xhdpi,96x96,216x216 xxhdpi,144x144,324x324 xxxhdpi,192x192,432x432 各サイズのic_launcher.pngは古い端末用に残す。 (4)app/src/main/res/values/colors.xmlを修正する。 <resources>タグの後に <color name="ic_launcher_background">#FFFF00</color>を追加する。 (5)app/src/main/res/mipmap-anydpi-v26/ic_launcher.xmlを修正する。 <background android:drawable="@drawable/ic_launcher_background" /> <foreground android:drawable="@drawable/ic_launcher_foreground" /> ↓以下のように修正する。 <background android:drawable="@color/ic_background" /> <foreground android:drawable="@mipmap/ic_launcher_foreground" /> (6)app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xmlを修正する。 <background android:drawable="@drawable/ic_launcher_background" /> <foreground android:drawable="@drawable/ic_launcher_foreground" /> ↓以下のように修正する。 <background android:drawable="@color/ic_background" /> <foreground android:drawable="@mipmap/ic_launcher_foreground" />
・アダプティブアイコンと円アイコンの設定の消し方 AndroidStudio3.3で「Empty Activity選択」-「Next」-「Finish」プロジェクト作る (1)app/src/main/res/の各mipmapフォルダからic_launcher_round.pngを削除する。 (2)app/src/main/AndroidManifest.xmlを編集して android:roundIcon="@mipmap/ic_launcher_round" ← この行を消して保存する。 (3)app/src/main/res/drawable/ic_launcher_background.xmlを削除する。 (4)app/src/main/res/drawable-v24/ic_launcher_foreground.xmlを削除する。 (5)app/src/main/res/mipmap-anydpi-v26/ic_launcher.xmlを削除する。 (6)app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xmlを削除する。
Play Billing LibraryのCodeLabをなぞってみた
https://www.masaibar.com/entry/play_billing_library_codelab
Play Billing Library 和訳
https://qiita.com/oya-t/items/a11f27d093963496018d
Play Billing Libraryが超絶かんたんだった件
http://hatesatekite.hatenablog.com/entry/2018/08/07/145422
Play Billing Library 1.0 がリリースされました
http://y-anz-m.blogspot.com/2017/09/
課金をAIDLからBilling Libraryに変更した話
https://blog.choilabo.com/20181028/967
Androidのアプリ内購入を簡単実装
https://qiita.com/watanaby0/items/deb60166753533fb00b1
https://www.sakura.ne.jp/function/freessl.html これってサクラでドメイン取得したら利用できるよってことみたいですね! で、Let's Encrypt自体はさくらとは関係ない別サービスですね さくらだとLet's Encryptで取得したSSLを簡単に設定できますよ~ってだけみたいです さくらのお試し期間ってクレカで払った場合のみでした。。。クレカ払いだとすぐサーバ用意されるみたいです。。。
https://ssl.sakura.ad.jp/ これの「詳しく見る」でブラウザのURLバーのとこの表示の違いみれますよ! さくらのSSL年間972円ですよw
iPhoneでWKWebView ・httpアクセス https://qiita.com/aminosan000/items/ae2e9de0e910af42304d ・Objective-C https://i-app-tec.com/objective-c/webview.html ・Swift https://developer.apple.com/documentation/webkit/wkwebview ・SwiftとJavaScriptと相互通信 https://qiita.com/usayuki/items/6979d0d6f7d8f5b302ad ・WKWebViewにおけるSwiftとJavaScriptにおける双方向通信 https://qiita.com/mss634/items/170d3cb401eee4ec1253 上記すべてWebkit.frameworkが必要
sshでwindowsに接続 1)PoserShellを管理者権限で起動 2)opensshのインストール choco install win32-openssh -params '"/SSHServerFeature /KeyBasedAuthenticationFeature"' -confirm インストールが終わったら、インストール先に移動 cd "C:\Program Files\OpenSSH-Win64" cp sshd_config_default sshd_config notepad sshd_config 9行目の#Port 22の#を消す 3)sshdのインストール powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1 「sshd and ssh-agent services successfully installed」と表示されたら完了 4)サービスの起動 net start sshd
(1) Chrome起動 (2) F12を押してデベロップモードにする (3) アンドロイドをPCに接続する (4) ・・・ボタンを押してMore toolsを選んでRemote devidesを選ぶ (5) Enter URLにURLを入れる (6) Inspectボタンを押す
機種判別(C/C++) #if defined(_WIN32) // Windows #elif defined(__ANDROID__) // Android #elif defined(__APPLE__) // iPhone & MacOSX #elif defined(ARDUINO_SAMD_ZERO) && defined(INTERNAL32K) // TinyArcade #elif defined(ARDUINO_SAMD_ZERO) // GamebuinoMETA #else // その他 #endif
アンドロイドOSのビット数取得(Java) public int GetOsBit() { String os = System.getProperty("sun.arch.data.model"); if((os != null) && ((os = os.trim()).length() > 0)) { if("32".equals(os)) { return 32; } else if("64".equals(os)) { return 64; } } os = System.getProperty("os.arch"); if((os == null) || ((os = os.trim()).length() <= 0)) { return -1; } if(os.endsWith("86")) { return 32; } else if(os.endsWith("64")) { return 64; } return 32; }