NESエミュレータ
https://gyazo.com/0430e13edcb92075401da18d9825c357
2019/06/04
はじめた
読んだ
読んでる
ハードウェアの基礎知識が足りなすぎて、「ふーん」としか思えなくなってしまってるmizukmb.icon
仕様よりも実装手順中心の記事
これからはじめるのがよいかなーmizukmb.icon
CPUがMOS 6502のカスタムということだけはわかったmizukmb.icon 2019/06/05
これに従って、まずはキャラクターROMを読み込むプログラムを書いてみる
https://gyazo.com/889d23d6115babcdfd21eafbda5bbc18
78は16進数に変換すると 4E になる。この数字は*.nes Header部の定数になっている
0-3: Constant $4E $45 $53 $1A ("NES" followed by MS-DOS end-of-file)
バイナリファイルを読み込んだだけ、これを仕様通りに分割していく必要がある
2019/06/06
とりあえずiNesの構造体を作った
https://gyazo.com/1b770d3b60eb3d50efcc69c5329e467b
Headerはサイズが決まっているのでその辺も合わせて定義したいけど…Rust力足りない このままだとHeader以外のデータもつっこんでOKになっちゃうからどうにかしないとmizukmb.icon
2019/06/07
型定義は諦めて、実装で余計なデータをheaderに渡さないようにした
https://gyazo.com/422fe8de8b24d3b23dfd76074062b534
split_atをつかっている
またRustのこと調べただけで終了した
2019/06/08
VSCodev1.35でRemote Development (Preview)が入ったのでinsiderやめた ねむいので寝る
2019/06/09
HeaderのByte4にプログラムROMのサイズが記録されている
HeaderのByte5にキャラクターROMのサイズが記録されている
https://gyazo.com/970b36b90a8070f1bee348df9f7820eb
2019/06/10
プログラムROMデータを抜き取ろうとしたらコードがぐちゃぐちゃになった
u8 では足りなくなってきた
2019/06/11
みんな~
ines.rs に分けてHeaderだけstructで定義した
https://gyazo.com/dca430666129456609ccb8846162dd09
2019/06/12
trainerを考えるのは一旦やめて、ほぼ決め打ちでキャラクターROM情報を引っこ抜く作戦にする
https://gyazo.com/46958aa2f6885e98c2a9f68ee04aef54
頑張って split_at で分割しまくっている
型キャストがだるい
あとは character_rom を画像化すればよさそう
2019/06/13
今日はめっちゃ疲れたのでキャラクターROMの仕様見ておわる
スプライトの読み込み方?みたいな話
この辺か?どうやって調べればいいか全然わからん…mizukmb.icon
2019/06/14
忘れてた……
思い出したのでえらいmizukmb.icon
2019/06/15
コード書いてるけど間違ってる気がしてる
スプライトの1ピクセルの色の決め方がわからん
パレットの仕様を見るしかないか
2019/06/16
毎日やっててえらいが進捗あんまりないな
おそらくこれで1スプライト情報が取れるようになったと思う
https://gyazo.com/35ab44c27a3e6f2e600dd6da74854e0f
code:result
// たぶんまっ黒のスプライトなんだと思う
加算っていうか、それぞれの桁を文字列合成させてる
2019/06/17
色々あって今日は無理っぽい
2019/06/18
無限に寝たい
2019/06/19
めっちゃ寝た
これ使ってPNG画像を作ろうとしてるが、ドキュメント以外の文献が無くてちゃんと作れているのか不安
実際やってみても壊れたPNGファイルが出力されるが…
もしかして仕様通りに組み立てる必要がある?
2019/06/20
pngの仕様を読みます
ファイルヘッダ(8ビット固定)+チャンク
チャンクは、必須チャンクと補助チャンクがある
ファイルヘッダは固定で16進数 89 50 4E 47 0D 0A 1A 0A
ファイルヘッダに続いて必須チャンクとして
IHDR 13ビット
PLTE グレースケールの場合不要
IDAT zlibにより圧縮されたイメージデータ
実際の画像となるデータはここに格納される
IEND 終端を示す
冷静になった
ほぼこれの通りの実装で作れる
https://gyazo.com/7cced93a8f8aa9eacd623089d2d05a76
成果物: https://gyazo.com/7d9a57d891b61fa2294c0b6c6d5de5ca
2019/06/21
マジで忘れてた
明日頑張る
2019/06/22
1スプライトをpng画像に出力することに成功した(クソ地味)
https://gyazo.com/db8535bcebf99bc23497a8542404c6a3
https://gyazo.com/b5ff5528831ae038d70cb0e9b903b9e5
https://gyazo.com/f7ec1b72d390160b94ca5a6b93b10f01
全部のスプライトを画像にしてみた
デバッグ用に黒色になるところは赤に変えている
どっか適切な箇所で折り返す必要があるな…mizukmb.icon
これたぶん折り返さなくてもいい感じの画像が出来る気がしてきた。コードがバグってるっぽい
2019/06/23
時間とれなかった
2019/6/24
ctrl+t (Win は alt+t) で今日の日付が出せるのはじめて知った
今まで手打ちだった
https://gyazo.com/f9f398bcf9b0d1a9ec1ffdf92864d0c1
最終的にこいつが誕生したんだけど後ろ余りすぎてる
https://gyazo.com/e413b0e314650ceb790d9c17c2d09361
拡大するとちゃんと抜き出せてる
レポジトリに上げた
2019/6/26
昨日忘れてた
浮かれてる場合じゃない
2019/6/27
横一列だと見づらいのでいい感じの縦横比になるように調整してる
2019/11/6
CPUから実装を試みたけどそもそもCPUの用語や仕組みも理解できてないことがわかったのでそこの復習をしたりしてた