私的FC/NES開発環境、プログラミング編
このエントリーはDumBoがFC/NES開発に使っているツール類を
備忘録として書き留めておく為のものである(プログラミング編)。
当方主にWinOS+NESASM+秀丸エディタという組み合わせで開発している。
これから初めてみたいと考える方の参考になれれば幸いだ。
●処理系
スキルセットと好みでチョイスすれば良いと思う。
・NESASM
camsaul/nesasm: NESasm -- NES 6502 assembler, version 3.1
thentenaar/nesasm: nesasm 2.51 - modifications by Bob Rost
MagicKit Homepage - MagicKit v2.51
FC/NESプログラミングに特化したアセンブラ。
昔から使われておりweb上の文献も其れなりに充実している。
・cc65/ca65
cc65 - a freeware C compiler for 6502 based systems
cc65 - a freeware C compiler for 6502 based systems - old site
C言語で開発出来るのが特徴。ca65を用いればアセンブラでの実装も可能。
以前より利用者が増えたため、こちらも情報には困らない。
・NESmaker
HOME | Nesmaker
プログラミング不要でゲームが作れる。
GB StudioのFC/NES版的存在。
シンタックスハイライト機能が有るエディタを使おう。
詳しく無いので未記載だが、unix系で人気のvi、Emacsや
Vimといったエディタも良いらしい。
・秀丸エディタ
秀まるおのホームページ(サイトー企画)-秀丸エディタ
・Visual Studio Code
Visual Studio Code - Code Editing. Redefined - 公式サイト
Visual Studio Code - コード エディター | Microsoft Azure
●テキスト比較
有ると便利なテキスト比較ツール。
小規模プロジェクトなら無くても大丈夫かな。
・WinMerge
WinMerge - You will see the difference…
ちょっとした作業の自動化や小物ツールが必要になった時など、
ささっと書いて直ぐ試せる環境は何かと便利だったりする。
・Python
Welcome to Python.org
・WSH (JScript/VBScript)
・PowerShell
・windowsバッチ コマンド
・シェルスクリプト (sh/bash/csh/…)
ウォームアップ中
先日買ったPython入門書をボチボチ読んでいるのだが一部文法が端折られている?<1年生の方
見落としかも知らんけど。
繰り返し処理のwhile文が記載無く。別途Qiitaの記事で補完するなど。
【初心者向け】無料でPythonの基本文法を5時間で学ぼう! - Qiita
なお、C言語のswitch文に当たるものが存在しないようで。
代替手段として紹介されている辞書型を使った分岐の書き方が良さげだった。
【Python入門】switch文の代わりに使える書き方 | 侍エンジニアブログ
ちな3.10からmatch文とやらが追加されたが、
caseに続く比較対象が式ではなく文字列なので利用シーンは限られるだろう。
Pythonでswitch/case文がない理由は?代用方法を解説! | プログラミングを学ぶならトレノキャンプ(TRAINOCAMP)
空を飛びたいモンティ・パイソン
追加で買ったパイソンズ。
Python1年生 第2版 体験してわかる!会話でまなべる!プログラミングのしくみ | 森 巧尚 | コンピュータ・IT | Kindleストア | Amazon
Amazon.co.jp: Pythonではじめるデスクトップアプリ開発入門 eBook : 久我 涼子: 本
日経ソフトウエア 2022年11月号 [雑誌] | 日経ソフトウエア | コンピュータ・テクノロジー | Kindleストア | Amazon
SQLを修めたいという話の続きだが、
言語習得のため開発の手間を抑えつつ何か作るのであれば
Pythonが妥当だろうと言う事で。
・インタプリタ言語なので書いて直ぐコードを実行できる
・デスクトップアプリ、GUIアプリが作れる
・SQLite3が標準サポートされている
個人的にはこの辺りが選択の決め手。
SQL同様、こっちも覚えるのはこれからだけど…。
シークェル
Amazon.co.jp: SQL 第2版 ゼロからはじめるデータベース操作 eBook : ミック: 本
[改訂第4版]SQLポケットリファレンス | 朝井 淳 | 工学 | Kindleストア | Amazon
去年覚える目的で買ったものの、
これと言って作りたい題材も浮かばず
ものにするまで至らなかった言語。
勤め先で今後頻出して来るっぽいので、
今年こそは其れなりに扱えるよう
改めて学び使っていきたい所存。
ラトネット リニューアルオープンSALE中につき
ラトルズさんのネットショップで萌え技術書を2冊程購入。
現在リニューアルオープンSALE中だそうで。
【電子版】最新版 12歳からはじめる ゼロからのC言語ゲームプログラミング教室 - 出版社ラトルズ公式ネットショップ - 出版社ラトルズ公式ネットショップ
【電子版】12歳からはじめる ゼロからの Pythonゲームプログラミング教室 - 出版社ラトルズ公式ネットショップ
4/23(日)まで電子書籍が最大50%OFFとの事。
気になる方はお早めに。
GBDKで何か作ってみる。(2)
PSクラシック、色々ハックされていて俄然欲しくなってきた。
ともあれ今はまだ、何をするにしても敷居が高い段階で、静観している状態。
(本体改造、ゲーミングキーボード入手等が必要な為。)
それはそれとして置いといて。
現在のGB開発状況としては、、
書き起こした設計書を元に実装を進めつつ、
GBDKに不足しているライブラリの追加を行っているところ。
printfのエスケープシーケンスによる画面制御が無いのは予想ついてたけど、
memsetが含まれていないのは想定外だった。
…Wikipediaのソース移植したけど。
mem.c (memset関数の追加)
#include <types.h> //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ void *memset(void *buf, int c, size_t num) { //------------------------------------------------------------------------------ unsigned char *ptr = (unsigned char *)buf; const unsigned char ch = c; while (num-- > 0) *ptr++ = ch; return buf; }
cons.c (コンソール画面の全消去、行消去)
#include <stdio.h> #include <gb/console.h> //------------------------------------------------------------------------------ //--------------------------------------------------------------------------- void consoleClearLine(UINT8 y) { //--------------------------------------------------------------------------- gotoxy(0, y); printf(" "); gotoxy(0, y); } //--------------------------------------------------------------------------- void consoleClear(void) { //--------------------------------------------------------------------------- UINT8 i; gotoxy(0, 0); for (i = 0; i < 18; i++) printf(" "); gotoxy(0, 0); }