はじめに 以前、VGS-Zeroというラズパイで動作する自作ゲーム機を紹介させていただきました。 今回、上記の記事でも触れているVGS-Zeroのローンチタイトル「Battle Marine」(下記)をゲームギアに移植してみました。 本書はBattle Marineをゲームギアへ移植した経緯や技術的に苦労した点などを纏めたものとなります。 なお、今回ゲームギア(実機)で動作できるソフトとしてBattle Marineを開発しましたが、セガの公式なライセンス商品ではなく、飽くまでも ゲームギアと互換性のある同人ソフト となります。 何故ゲームギア? Battle Marine のゲームジャンルは「弾幕STG」です。 もしかすると、この点については議論の余地があるかもしれませんが、少なくとも私は弾幕STGとして創ったつもりです。 「Z80のゲーム機」としてはチート級のスペックのVDPを搭載して
概略本講義ではC言語によるプログラミング修得者を対象に, プログラミングに関する理解をより深めるために不可欠なアセンブラと C言語の境界部分についての講義を行う.ポインタや構造体とアセンブラ言語との関係, C言語におけるヒープ,スタックとコンピュータアーキテクチャとの関係, main関数以前の動作などについて,実例を通して理解を深める. このページはhttp://www.swlab.cs.okayama-u.ac.jp/~nom/lect/p3/ 岡山大学moodle のURL システムプログラミング1 https://moodle.el.okayama-u.ac.jp/course/view.php?id=186502 システムプログラミング2 https://moodle.el.okayama-u.ac.jp/course/view.php?id=186504 本演習ではC言語によるプ
はじめに グラフィックス全般 Advent Calendar 2023 13日目の記事になります. きっかけ GLSL で mix を使って2つの値から1つを選択する際に, a に bvec3 を直接用いずに vec3 に変換して渡しているコードを見かけた. bvec3 で渡す場合と vec3 で渡す場合の, 最終的にGPUで実行されるコードの違いが気になったので, 簡単に調べてみることにした. 関連する GLSL の mix のオーバーロード: // vecN を取るもの genType mix(genType x, genType y, genType a); // bvecN を取るもの genType mix(genType x, genType y, genBType a); 題材となる GLSL によるフラグメントシェーダ egui_glow の実装に含まれる, リニアから s
プログラミング指南 - Code Knowledge ゲーム制作に関するプログラミング等を主に書き溜めていきます。ただ、どちらかと言えば日記的な書き方が続くと思いますが、そこは温かい目で見て頂ければ。あと、ちょっとしたサンプルやツールのダウンロードも出来るようにしておきます。 自分から見て、相手が左右どちらにいるのかを判定したいことがよくあります。コンパイラ系であれば、内積を使えば一発なのですが、Z80 ではなかなかそういう訳にもいきません。そこで今回は、8方向に移動している自分から見て、相手が左右どちらにいるのかをどう判定すれば良いのか解説していきます。 アルゴリズム「自分から見て」という判断を行う場合、まずは自分座標系に相手の座標を変換する事から始めます。自分の座標が X0, Y0、相手の座標が X1, Y1 という状態であれば、自分座標系は、自分を起点とするため… X = X1 -
コンピュータの歴史を暗部も含めてていねいに掘り起こすことで定評のある大原雄介さんによる連載10回目。今回は、Z80後継がいかに失敗していったか。
Loading… This website is NOT compatible with this version of Internet Explorer… Hopper Disassembler, the reverse engineering tool that lets you disassemble, decompile and debug your applications. Hopper Disassembler for Mac requires macOS 10.13 or higher. Hopper Disassembler for Linux requires Ubuntu 18.04, Arch Linux, Fedora 25 or higher, and a 64 bits processor. Native Hopper is perfectly adapte
この記事はx86-64の機械語を書けるようになるためのガイドとなることを目指します。読者はアセンブリー言語について既にある程度知っていることを想定します。 情報源 x86-64の機械語のオフィシャルなガイドはIntelのSoftware Developer ManualまたはAMDのAMD64 Architecture Programmer's Manualです。 Intel SDM: Intel® 64 and IA-32 Architectures Software Developer Manuals AMD64 Architecture Programmer's Manual, Volumes 1-5 このほか、Cから呼び出される関数を定義したり、Cの関数を呼び出すためには、呼び出し規約の知識も必要です。使用される呼び出し規約はOSに依存し、Unix系では主にSystem V ABI
※1:8080/8085と共にZ80を解説した本で、8080と8085は上位アドレスに下位アドレスと同じ値が出るがZ80は「他のレジスタの値」が出るとされ、厳密な説明にはなっていない ※2:本文には記載がないが、命令一覧表に記述がある。多くの場合一覧表はデータシートの転載であり、転載元の表に記述があったのが反映されていると思われる ※3:囲み記事にて、X1の事例を引用して説明。 こうしてみると、記述のない本が多いですね…特に早い時期に発行されてベストセラーと言って差し支えないであろう「Z-80の使い方」に記述がない影響は大きい気がします。「使い方」はその後たくさんのCPU向けに展開されたシリーズで、それはZ80のものがよく売れたからに他ならないと思われるだけに…。 注釈しておきますが、書かれてないからといってそれが著者のマニュアル読み込み不足を指しているとは限りません。解説の方針として、1
比較項目 持っている演算 四則演算 sqrt, abs, FMA ビット演算 変換 比較演算 選択 gather, scatter マスク関連 対応するデータ型 x86系 (SSE/AVX/AVX512) とりあえず128ビット幅のやつ。 浮動小数点数 TODO: float16とbfloat16 (AVX512) 演算 float32 float64
初めに これはx64用JITアセンブラXbyakや静的アセンブラs_xbyakを開発するときに、各種アセンブラの差異についてはまったり調べたりしたことをまとめるにあたり、せっかくなのでクイズ形式にしたものです。 中級以降は主にAVX-512に関するかなりマニアックで瑣末な知識です。何を聞かれてるのか分からなくても殆どの場合、何の問題もありません。 前置き ここで扱うアセンブラは GAS (GNU Assembler) 2.38 Netwide Assembler (NASM) 2.16 Microsoft Macro Assembler 14.35.32217.1 です。MASMはWindows専用、GASは主にLinuxで扱われますが、Windowsでもmingwなどで使えます。NASMはwin64, elf64, macho64 (Intel macOS)用のオブジェクトコードを生成で
初めに これはx64用JITアセンブラXbyakに慣れてしまい、JITでなく静的なアセンブリ言語(以下ASM)もXbyakライクに書きたいという人(つまり私)がPython上で似た開発体験を求めて作ったツールです。 s_xbyakの"s_"は静的(static)からつけました。 s_xbyakの特徴 Pythonで作られたASMコードジェネレータ gas (GNU Assembler), Netwide Assembler (NASM), Microsoft Macro Assemblerに対応 Win64 ABIとAMD64 (Linux)に(一部)対応 XbyakライクなDSL 背景 私はC++上でJITコードを書きたくてXbyakを作りました。するとJIT機能だけでなく、ASMをC++の文法で記述できるのはとても便利なことが分かりました。既存のアセンブラの文法は制約が多かったり、擬似
はじめに C# で並列化によってプログラムを高速化する方法を紹介します。 基本的に複数のスレッドを使うような並列化ではなく、一度の命令で複数のデータを同時に処理できる SIMD(Single Instruction Multiple Data)を使って並列化します。 C# では Vector256<T> を用いることで簡単に SIMD を使うことができます。 また、JIT コンパイラーが出力するアセンブリーコードも取り扱っているため、アセンブリーコードの学習を始めたい方にもおすすめです。 記事一覧 配列の総和 C 言語版 C 言語版では、SIMD 命令と一対一に結び付いた SIMD 関数を使用しています。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く