※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x08000000()
eme-disas-init.asm:;;ここからカートリッジ
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x080003a4()
eme-disas-init.asm:;; BIOS, stack 設定後に呼ばれるmain関数
eme-disas-init.asm:;; 実質のエントリポイント
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x082959e0(WORD r0)
eme-disas-init.asm:;; swi 01の bios命令で RAM をクリアする関数
eme-disas-init.asm:;; 初期化時は func_0x082959e0(0xff)で呼び出し i.e.  WRAM, VRAM領域等allクリア
eme-disas-init.asm:;; 処理される領域は gbatek参照
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x08001074()
eme-disas-init.asm:;; メモリ領域初期化の関数
eme-disas-init.asm:;;;
eme-disas-init.asm:;;; メモリ領域初期化の関数ここまで
eme-disas-init.asm:;;;
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x0006f0(POINTER r0)
eme-disas-init.asm:;; POINTER [$03002360 + 0x0c] に r0 に代入する関数
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x080006fc(POINTER r0)
eme-disas-init.asm:;; POINTER [$03002360+0x10] に r0を代入する関数
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x0800072c(POINTER r0)
eme-disas-init.asm:;; POINTER [$03002360 + 0x18] に r0を代入する関数
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x08001240()
eme-disas-init.asm:;; 割り込みのマスタ設定 byte [$030008d9]
eme-disas-init.asm:;; 割り込みの設定を hWORD [$030008da]
eme-disas-init.asm:;; に変更するための関数
eme-disas-init.asm:;; 一度IMEで割り込みを抑止する
eme-disas-init.asm:;; IE を [$030008da]に設定する
eme-disas-init.asm:;; IMEを元に戻す
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; hWORD func_0x080011d0(byte r0)
eme-disas-init.asm:;; r0 == 0x4 だったら DISPSTATの値をhWORDでr0に読み込む
eme-disas-init.asm:;; r0 == 0x6 だったら VCOUNTの値をhWORDで r0に読み込む
eme-disas-init.asm:;; それ以外は [$03000818 + r0] i.e. IO Register の設定値をhWORDで読み出す
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x08005bc()
eme-disas-init.asm:;; キーのステータスをクリアする
eme-disas-init.asm:;; 変数の一部を初期化する (要調査)
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x08000684()
eme-disas-init.asm:;; メモリ領域のGame pack から In-chip RAM へコピー
eme-disas-init.asm:;; 割り込みハンドラの設定
eme-disas-init.asm:;; その他割り込み設定のための関数を呼び出し
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x080006f0(WORD r0)
eme-disas-init.asm:;; [$03002360 + 0xc] = r0 とする関数 i.e.
eme-disas-init.asm:;;
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x080006fc(WORD r0)
eme-disas-init.asm:;; [$03002360 + 0x10] = r0 とする関数 i.e.
eme-disas-init.asm:;; LCD H-Blank割り込みで実行される関数のポインタを設定する
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; POINTER func_0x0800072c(POINTER r0)
eme-disas-init.asm:;; [$03002360 + 0x18] = r0 とする関数 i.e.
eme-disas-init.asm:;;  Serial Communication割り込みで実行される関数のポインタを設定する
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x08001274(hWORD r0)
eme-disas-init.asm:;; 第一引数で立っているビットをIEに設定する関数
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x080012cc(hWORD r0)
eme-disas-init.asm:;; 引数 r0 は IE の値を取る
eme-disas-init.asm:;; DISPSTAT側の割り込み設定を変更 func_0x08001240()とセットで実行する
eme-disas-init.asm:;; 初期化時には func_0x080012cc(0x1)として呼び出し
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x08001144(byte r0, hWORD r1)
eme-disas-init.asm:;; 第一引数は LCDのIOレジスタのoffset (0x0 <= offset < 0x5f)
eme-disas-init.asm:;; 第二引数はレジスタの設定値
eme-disas-init.asm:;; LCD-V-BlankやForce Blankの値を確かめてLCDのIOレジスタ設定を行う関数
eme-disas-init.asm:;; 設定値は[$03000818 + offset]にも保存される
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x080010cc(byte r0=offset )
eme-disas-init.asm:;; [$03000818 + offset] の値を IO Register [$04000000 + offset] にセットする
eme-disas-init.asm:;; offset = 0x04 の場合には割り込み一時停止/maskするなど処理を行ってから実行される
eme-disas-init.asm:;; LCD操作用
eme-disas-init.asm:;; ; VCOUNTER = 150 V-BlankとV-COUNTER のIRQが有効、H-BLANKのIRQ無効?
eme-disas-init.asm:;; 第一引数 != 0x04 の場合
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x0828e5f8()
eme-disas-init.asm:;;
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x082959bc(POINTER r0, POINTER r1, WORD r2)
eme-disas-init.asm:;;
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x0828ea64(POINTER r0)
eme-disas-init.asm:;; 引数にサウンド用構造体のベースアドレス$03006120を取り、初期化を行う
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x0828ddd4(POINTER r0)
eme-disas-init.asm:;; 初期化時には $0805fd500 から $030071c0 へ 0x24*4(=0x90)バイト分コピーする
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x0828ddee(POINTER r0, WORD r1, POINTER r2, &WORD r3)
eme-disas-init.asm:;; r3 は参照渡しをされて直接変更される
eme-disas-init.asm:;; 上位7bitが0の場合には何もしない
eme-disas-init.asm:;; 上位2bitが0の場合には何もしない
eme-disas-init.asm:;; 上位2bitが0で無い場合には r3 を0にする
eme-disas-init.asm:;; r2 < 0x085fd500 場合には r3 を0にする
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x0828eb5c(WORD r0)
eme-disas-init.asm:;; サウンド用タイマーの処理を行う関数
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; byte func_0x08295e78(WORD r0, WORD r1)
eme-disas-init.asm:;;
eme-disas-init.asm:;; 08295e96 の分岐先  
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x08295f0c()
eme-disas-init.asm:;; 何もしない関数。デバッグ関数呼び出し用か?
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x0828ed68()
eme-disas-init.asm:;; DMAをサウンドFIFO用に設定する
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; ??? func_0x0828e920(POINTER r0)
eme-disas-init.asm:;; 初期化時にfunc_0x0828e5f8()から呼び出し。引数はr0=$03007250
eme-disas-init.asm:;;
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x0828ec00(WORD r0)
eme-disas-init.asm:;; 初期化時にはr0=0x0094c500 で func_0x0828e5f8() から呼ばれる
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x0828ecec()
eme-disas-init.asm:;; サウンド用DMAをいじるのかな?
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; ??? func_0x08297d0c(???)
eme-disas-init.asm:;;
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x08000594()
eme-disas-init.asm:;; VCOUNTER Match割り込みを許可する関数
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x0800e194()
eme-disas-init.asm:;; シリアル通信を初期化し外部接続デバイスを確認する
eme-disas-init.asm:;; 外部接続デバイスがある場合の処理は未確認
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x0800e1c4()
eme-disas-init.asm:;; 構造体の初期化、シリアル割り込みハンドラの設定、割り込みの許可
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; hWORD func_0x0829243c(POINTER r0, hWORD r1, POINTER r2, byte r3)
eme-disas-init.asm:;; 初期化時には func_0x0829243c($03004230, 0x0e64, $030027b4, 0x1) として実行される
eme-disas-init.asm:;; シリアル通信用の設定と構造体の初期化、割り込みルーチンのメモリへのコピーを行う
eme-disas-init.asm:;; 戻り値0 正常
eme-disas-init.asm:;; 戻り値1 エラー
eme-disas-init.asm:;; 戻り値2 エラー
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x08290fa0(POINTER r0, POINTER r1, byte r2)
eme-disas-init.asm:;; 初期化時には func_0x08290fa0($03004068, $030027b4, 0x1)
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x082911dc()
eme-disas-init.asm:;; シリアル通信用構造体のベースアドレス[[$03007608](=03004ab0)+0x18]を0x0にする
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x082911f4(WORD r0)
eme-disas-init.asm:;; シリアル通信用構造体のベースアドレス[[$03007608](=$03004ab0)+0x18]に r0の値を設定する
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x082911e8()
eme-disas-init.asm:;; シリアル通信用構造体のベースアドレス[[$03007608](=$03004ab0)+0x1c]に 0x0の値を設定する
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x08291200(WORD r0)
eme-disas-init.asm:;; シリアル通信用構造体のベースアドレス[[$03007608](=$03004ab0)+0x1c]に r0の値を設定する
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x08292564()
eme-disas-init.asm:;; シリアル通信用構造体の一部を初期化する関数
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x08293a10()
eme-disas-init.asm:;; シリアル通信用構造体の初期化
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x0800a6b8()
eme-disas-init.asm:;;
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x08010ca0(WORD r0)
eme-disas-init.asm:;; 初期化時にはfunc_0x08010ca0(0x0)で呼び出し
eme-disas-init.asm:;; 第一引数 == 0x0の場合は [$030050a0 + 0xee] = 0 に初期化
eme-disas-init.asm:;; 第一引数 != 0x0の場合は [$030050a0 + 0xee] += 4
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x0800e0c8()
eme-disas-init.asm:;; シリアル通信の構造体・配列の初期化
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; POINTER func_0x0800f7a8(POINTER r0)
eme-disas-init.asm:;; r0の先の構造体を0で初期化する。
eme-disas-init.asm:;; 戻り値は引数のアドレス
eme-disas-init.asm:;; 何の構造体?
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x0800d184(POINTER r0)
eme-disas-init.asm:;; 初期化時には func_0x0800d184($030051c4) として呼び出される
eme-disas-init.asm:;; r0[0x14][0x46]の配列を0 fillで初期化する
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x0800d1e0(POINTER r0)
eme-disas-init.asm:;; 初期化時は func_0x0800d1e0($03005740)として呼び出し
eme-disas-init.asm:;;
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x08292648(byte r0, POINTER r1)
eme-disas-init.asm:;; 初期化時にはfunc_0x08292648(0x3, $030027b4+0x4) として呼ばれる
eme-disas-init.asm:;; 引数をswapして func_0x08291078(POINTER r1, byte r0)を呼び出す
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x08291078(POINTER r0, byte r1)
eme-disas-init.asm:;; 初期化時には func_0x08291078($030027b4+0x4, 0x3)として呼び出す
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x0829284c()
eme-disas-init.asm:;;
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x082910b4()
eme-disas-init.asm:;; シリアルを General-Purpose Modeに変更して 1ms待つ
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; WORD func_0x082952f4(hWORD r0)
eme-disas-init.asm:;; 初期化時には func_0x082952f4(0x8)として呼び出す
eme-disas-init.asm:;;
eme-disas-init.asm:;; 割り込みが許可されていない場合は -1を戻す
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; POINTER func_0x0829120c(POINTER r0)
eme-disas-init.asm:;;
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; void func_0x082953a8()
eme-disas-init.asm:;; シリアル割り込み、タイマー割り込みの停止
eme-disas-init.asm:;; SIOを Normal Modeに戻す
eme-disas-init.asm:;; シリアル割り込みを手動で発生させる
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; WORD func_0x0829541c()
eme-disas-init.asm:;; シリアル処理がスタートしていなかったらスタートさせて戻り値0で復帰
eme-disas-init.asm:;; シリアル処理が完了し、データが [$03007640 + 0xa] にあればこの値を返す
eme-disas-init.asm:;; シリアル処理中の場合戻り値0
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; hWORD func_0x08292770()
eme-disas-init.asm:;; 割り込み待ちを行って、[$03004ab0 + 0x1c] の値を返す
eme-disas-init.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init.asm:;; hWORD func_0x08291218()
eme-disas-init.asm:;; 割り込み待ち(何の?)を行って hWORD [$03004ab0+ 0x12]の値を返す
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; void func_0x0802ee80()
eme-disas-init2.asm:;;
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; hWORD func_0x0802ed30()
eme-disas-init2.asm:;; IME を [$03000dce]に保存して割り込みを停止する関数
eme-disas-init2.asm:;; 戻り値0
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; hWORD func_0x0802ed48()
eme-disas-init2.asm:;; IMEを [$03000dce]から復帰する関数
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; void func_0x082906d8()
eme-disas-init2.asm:;;
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; void func_0x08290f78()
eme-disas-init2.asm:;; [$080000c8]のCartridge Header ROM領域に0x1を書き込んでいる?
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; ??? func_0x08290708(???)
eme-disas-init2.asm:;;
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; WORD func_0x08290864(WORD r0)
eme-disas-init2.asm:;; [$03001a76] == 1 の時は戻り値0で復帰 i.e. エラー終了
eme-disas-init2.asm:;; [$03001a76] == 0 の時は戻り値1で復帰 i.e. 正常終了
eme-disas-init2.asm:;; 初期化時には func_08290864(前の関数のsp + #0x4)
eme-disas-init2.asm:;; この辺でRTCの読み込みをしている。要再調査
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; ??? func_0x08290da8(WORD r0)
eme-disas-init2.asm:;;  初期化時には func_0x08290da8(0x63)として呼ばれる
eme-disas-init2.asm:;; RTCを読み込んでいる。要再調査
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; ??? func_0x08290eec(???)
eme-disas-init2.asm:;; ここもRTCの読み込みをしている。要再調査
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; ??? func_0x082907e0(???)
eme-disas-init2.asm:;;
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; ??? func_0x0802ef4c(POINTER r0)
eme-disas-init2.asm:;; 初期化時は func_0x0802ef4c($03000dc0) として呼び出される
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; ??? func_0x0802ef34(POINTER r0)
eme-disas-init2.asm:;; 初期化時は func_0x0802ef34($03000dc0) として呼び出される
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; ??? func_0x0802ef1c(???)
eme-disas-init2.asm:;; 初期化時はfunc_0x0802ef1c($03000dc0)として呼び出される
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; ??? func_0x082909d8(???)
eme-disas-init2.asm:;; 初期化時はfunc_0x082909d8($03000dc0)として呼び出される
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; ??? func_0x0802ef60(???)
eme-disas-init2.asm:;;
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; ??? func_0x0802ed5c(???)
eme-disas-init2.asm:;;
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; ??? func_0x0802ed84(???)
eme-disas-init2.asm:;;
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; ??? func_0x08296518(???)
eme-disas-init2.asm:;;
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; void func_0x08076570()
eme-disas-init2.asm:;; SRAMを読み込んでセーブデータを判別するルーチン?
eme-disas-init2.asm:;; 結果は [$03005ae8]に0x0 or 0x1 が保存される
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; WORD func_0x082902e4()
eme-disas-init2.asm:;;
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; hWORD func_0x0828fe08()
eme-disas-init2.asm:;;
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; void func_0x0828fff8(POINTER r0)
eme-disas-init2.asm:;; 初期化時には func_0x0828fff8(sp)として呼ばれる
eme-disas-init2.asm:;; hWORD [sp+0x0]=0x7800, hWORD [sp+0x2] = 0x4770, hWORD [sp+0x4]=0xb500
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; ??? func_0x08295a1c(POINTER r0)
eme-disas-init2.asm:;;
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; void func_0x08000800()
eme-disas-init2.asm:;; タイマー2の割り込みハンドラを設定する関数
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; WORD func_0x0828fecc(byte r0, POINTER r1)
eme-disas-init2.asm:;; 初期化時には func_0x0828fecc(0x2,$030027cc)として呼び出される
eme-disas-init2.asm:;; r0 タイマー番号
eme-disas-init2.asm:;; 戻り値0 正常
eme-disas-init2.asm:;; 戻り値1 異常
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; void func_0x080004d8()
eme-disas-init2.asm:;; 各種変数の初期化
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; byte func_0x08000540(POINTER r0)
eme-disas-init2.asm:;; [$03002360 +0x04] に r0を保存
eme-disas-init2.asm:;; 初期化時にはfunc_0x08000540($0816cc91)として呼び出し
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; void func_0x080a269c()
eme-disas-init2.asm:;; [$03005b58]=0に初期化
eme-disas-init2.asm:;; func_0x080a27a8()の呼び出し
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; void func_0x080a27a8()
eme-disas-init2.asm:;;
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; void func_0x08000c48()
eme-disas-init2.asm:;;
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; void func_0x08001308()
eme-disas-init2.asm:;; $030008e0 構造体の初期化とDISPCNTの設定
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; void func_0x0800134c()
eme-disas-init2.asm:;; WORD $030008e0[0x4] の配列を初期化する
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; void func_0x080016d4()
eme-disas-init2.asm:;; DISPCNT を 0xf0f8でマスクする
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; void func_0x080061a4()
eme-disas-init2.asm:;;
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; void func_0x08004474(POINTER r0)
eme-disas-init2.asm:;; [$03003020] = r0 に設定する
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; void func_0x08000bac(WORD r0, WORD r1)
eme-disas-init2.asm:;; 初期化時には func_0x08000bac(0x02000000, 0x1c000)として呼び出し
eme-disas-init2.asm:;; POINTER [$03000004] = r0
eme-disas-init2.asm:;; WORD [$03000008] = r1
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; void func_0x080009a4(POINTER r0, WORD r1)
eme-disas-init2.asm:;; 初期化時には func_0x080009a4(0x02000000, 0x1c000)として呼び出し
eme-disas-init2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-init2.asm:;; void func_0x08000988(POINTER r0, WORD r1, WORD r2, WORD r3)
eme-disas-init2.asm:;; 初期化時にはfunc_0x08000988(0x02000000, 0x02000000, 0x02000000, 0x1bff0)として呼び出し
eme-disas-int.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-int.asm:;; void func_0x030027f0()
eme-disas-int.asm:;; 割り込みのエントリポイント
eme-disas-int.asm:;; レジスタの保存、割り込み要因の判別
eme-disas-int.asm:;; 割り込みに応じた関数の実行
eme-disas-int.asm:;; レジスタの復帰、関数から復帰
eme-disas-int.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-int.asm:;; void func_0x080008a8()
eme-disas-int.asm:;; 何もしないで戻る
eme-disas-int.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-int.asm:;; void func_0x08000844()
eme-disas-int.asm:;;  LCD V-Counter Match 割り込み時に実行される関数
eme-disas-int.asm:;; フラグの設定とサウンドデータのDMA転送を行う
eme-disas-int.asm:;; 通常 V-COUNTER == 150 で実行?
eme-disas-int.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-int.asm:;; void func_08295a08(POINTER r0)
eme-disas-int.asm:;; 引数r0を関数のポインタとして実行する関数
eme-disas-int.asm:;; LCD-VCOUNTER Match
eme-disas-int.asm:;; H-Blank, V-Blank
eme-disas-int.asm:;; で呼ばれる
eme-disas-int.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-int.asm:;; void func_0x0828df98()
eme-disas-int.asm:;; V-Counter Match 内で呼び出される関数
eme-disas-int.asm:;; サウンドのDMA転送を行う
eme-disas-int.asm:;; DMA 1 で Sound Buffer に転送
eme-disas-int.asm:;; [$040000c4] の 3bit目が立っている場合
eme-disas-int.asm:;;ここからDMA 2 で同じ事を行う。
eme-disas-int.asm:;; DMA 2 Source Address $03006AA0
eme-disas-int.asm:;; DMA 2 Dest Address $400000A4 Sound B FIFO Data 0-3
eme-disas-int.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-int.asm:;; void func_0x08000814()
eme-disas-int.asm:;; LCD H-Blank 割り込み時に実行される関数
eme-disas-int.asm:;; POINTER [$03002360 + 0x10] にある関数の実行
eme-disas-int.asm:;; [$03007ff8] と [$03002360 + 0x1c]の bit 1 を立てる
eme-disas-int.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-int.asm:;; void func_0828fea4()
eme-disas-int.asm:;; Timer 2 Overflow で呼ばれる関数
eme-disas-int.asm:;; 初期化時にどのタイミングで Timer 2 が設定されるか要調査
eme-disas-int.asm:;; hWORD [$03001a6a] をカウントダウンして 0となったときに [$0828fec8]=1 とする。
eme-disas-int.asm:;; hWORD [$03001a6a] が最初から0の場合にはなにもしない。
eme-disas-int.asm:;; [$03001a6a]!= 0 の時
eme-disas-int.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-int.asm:;; void func_0x0800b4e4()
eme-disas-int.asm:;;Timer 3 Overflow 割り込み時に実行される関数
eme-disas-int.asm:;; 初期化時にどのタイミングで Timer 3 が設定されるか要調査
eme-disas-int.asm:;; 中身は func_0x0800b854(), func_0x00b57c() を呼び出しているだけ
eme-disas-int.asm:;; Timer 3 Overflow の実行終了
eme-disas-int.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-int.asm:;; void func_0x0800b854()
eme-disas-int.asm:;; Timer 3 Overflow で呼び出されている関数 その1
eme-disas-int.asm:;; タイマー3をストップして初期値(Reload)を0xff7fに設定
eme-disas-int.asm:;; [$03003210] == 0 の場合は上記処理が行われない
eme-disas-int.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-int.asm:;; void func_0x0800b57c()
eme-disas-int.asm:;; Timer 3 Overflow で呼び出されている関数 その2
eme-disas-int.asm:;; SIOCNT のbit 7 を立てる i.e. Serial IO を Active状態にする
eme-disas-int.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-int.asm:;; void func_0x0829179c()
eme-disas-int.asm:;;
eme-disas-int.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-int.asm:;; void func_0x08000878()
eme-disas-int.asm:;; Serial Communication 割り込み
eme-disas-int.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-int.asm:;; void func_0x08295510()
eme-disas-int.asm:;; シリアル通信で初期化時に行われる割り込み
eme-disas-int.asm:;; 起動直後に外部接続を調査してデータを受け取る部分か?
eme-disas-loop.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop.asm:;; void func_0x080005e4()
eme-disas-loop.asm:;; キーのステータスを取っている
eme-disas-loop.asm:;;
eme-disas-loop.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop.asm:;; void func_0x080008f4()
eme-disas-loop.asm:;; DMA設定やstack pointerを元に戻して Softresetを行う
eme-disas-loop.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop.asm:;; void func_0x080b9710()
eme-disas-loop.asm:;;
eme-disas-loop.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop.asm:;; void func_0x082906f0()
eme-disas-loop.asm:;; GPIO(RTC)を Write Only にして mutex を lockにする
eme-disas-loop.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop.asm:;; void func_0x08290f8c()
eme-disas-loop.asm:;; GPIOを Write Onlyにする
eme-disas-loop.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop.asm:;; void func_0x082959e4(WORD r0)
eme-disas-loop.asm:;; ソフトリセットの最終実行部分
eme-disas-loop.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop.asm:;;void func_0x080008ac()
eme-disas-loop.asm:;; V-Blank割り込みで [$03002360 + 0x1c] の bit 0 が立つまで永久ループで待つ関数
eme-disas-loop.asm:;; ループここから
eme-disas-loop.asm:;; ループここまで
eme-disas-loop2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop2.asm:;; WORD func_0x08086f98()
eme-disas-loop2.asm:;;
eme-disas-loop2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop2.asm:;; byte func_0x08086ff4()
eme-disas-loop2.asm:;;
eme-disas-loop2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop2.asm:;; byte func_0x080856f4()
eme-disas-loop2.asm:;;
eme-disas-loop2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop2.asm:;; byte func_0x08009ad4()
eme-disas-loop2.asm:;;
eme-disas-loop2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop2.asm:;; byte func_0x0800f2a4()
eme-disas-loop2.asm:;;
eme-disas-loop2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop2.asm:;; void func_0x080004c4()
eme-disas-loop2.asm:;; func_0x0800aee0() の戻り値が0x0の時 func_0x0800051c()を実行して関数から復帰
eme-disas-loop2.asm:;; それ以外i.e. 0x1 の場合は関数から復帰
eme-disas-loop2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop2.asm:;; void func_0x0800051c()
eme-disas-loop2.asm:;; [$03002360 + 0x0], [$03002360 +0x4] を関数のポインタとして実行
eme-disas-loop2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop2.asm:;; void func_0x08295a08(POINTER r0)
eme-disas-loop2.asm:;; 引数を関数のポインタとして実行する関数
eme-disas-loop2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop2.asm:;; byte func_0x0800aee0()
eme-disas-loop2.asm:;; 各種のメモリ、状態を判定して戻り値 0 or 1 を返す関数
eme-disas-loop2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop2.asm:;; WORD func_0x0800b0f4(POINTER r0, POINTER r1, POINTER r2)
eme-disas-loop2.asm:;;   func_0x0800b0f4(0x030031e4, 0x030031b0, 0x03003130)として呼ばれる@func_0x0800aee0()
eme-disas-loop2.asm:;;   多分他のGBAとの通信制御部分
eme-disas-loop2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop2.asm:;; void func_0x0800aff8()
eme-disas-loop2.asm:;; Multi Player Modeでの通信。後で解析
eme-disas-loop2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop2.asm:;; void func_0x080012a0(hWORD r0)
eme-disas-loop2.asm:;;
eme-disas-loop2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop2.asm:;; void func_0x0800b050()
eme-disas-loop2.asm:;;
eme-disas-loop2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop2.asm:;; ??? func_0x0800b220(???)
eme-disas-loop2.asm:;;
eme-disas-loop2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop2.asm:;; ??? func_0x0800b24c(???)
eme-disas-loop2.asm:;;
eme-disas-loop2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop2.asm:;; ??? func_0x0800b27c(???)
eme-disas-loop2.asm:;;
eme-disas-loop2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop2.asm:;; ??? func_0x0800b364(???)
eme-disas-loop2.asm:;;
eme-disas-loop2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop2.asm:;; ??? func_0x0800957c(POINTER r0)
eme-disas-loop2.asm:;;
eme-disas-loop2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop2.asm:;; WORD func_0x080109b0()
eme-disas-loop2.asm:;;
eme-disas-loop2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop2.asm:;; void func_0x0800c008(hWORD r0)
eme-disas-loop2.asm:;;  func_0x0800c008(疑似乱数)として呼び出し@func_0x080109b0()
eme-disas-loop2.asm:;; swich-case文による多量の分岐処理。後で解析
eme-disas-loop2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop2.asm:;; void func_0x0800c200(hWORD r0)
eme-disas-loop2.asm:;; r0 は16bit疑似乱数を入れる
eme-disas-loop2.asm:;; [$030041e0 + 0x7] をシーケンス番号として処理を行う関数
eme-disas-loop2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop2.asm:;; WORD func_0x08010a0c()
eme-disas-loop2.asm:;;
eme-disas-loop2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop2.asm:;; WORD func_0x0800eca0()
eme-disas-loop2.asm:;;
eme-disas-loop2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop2.asm:;; ??? func_0x080108a4(???)
eme-disas-loop2.asm:;;
eme-disas-loop2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop2.asm:;; ??? func_0x08086fd0(???)
eme-disas-loop2.asm:;;
eme-disas-loop2.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop2.asm:;; ??? func_0x0800eb78(???)
eme-disas-loop2.asm:;;
eme-disas-loop3.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop3.asm:;; void func_0x08083bc4()
eme-disas-loop3.asm:;;
eme-disas-loop3.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop3.asm:;; void func_0x08083c2c()
eme-disas-loop3.asm:;; プレイ時間が999時間を超えたときに実行される処理
eme-disas-loop3.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop3.asm:;; void func_0x080a26b0()
eme-disas-loop3.asm:;;
eme-disas-loop3.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop3.asm:;; void func_0x080a3040(hWORD r0)
eme-disas-loop3.asm:;;
eme-disas-loop3.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop3.asm:;; void func_0x0828e6b8(hWORD r0)
eme-disas-loop3.asm:;;
eme-disas-loop3.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-loop3.asm:;; void func_0x0828ee1c(POINTER r0, POINTER r1)
eme-disas-loop3.asm:;;
eme-disas-prng.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-prng.asm:;; hWORD func_0x0802bd8c()
eme-disas-prng.asm:;; 疑似乱数作成関数
eme-disas-prng.asm:;; [$020229b0 + 0x24] i.e. [$020229d4] 乱数のシード
eme-disas-prng.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-prng.asm:;; hWORD func_0x0806f050()
eme-disas-prng.asm:;; 疑似乱数作成関数
eme-disas-prng.asm:;; 通常V-Blankで進む
eme-disas-prng.asm:;; [$03005ae0] 乱数のシード
eme-disas-prng.asm:;; [$02024664] 乱数呼び出し回数のカウンタ
eme-disas-prng.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-prng.asm:;; hWORD func_0x0806f0a4()
eme-disas-prng.asm:;; 疑似乱数作成関数
eme-disas-prng.asm:;; [$03005ae4] 乱数のシード
eme-disas-prng.asm:;; hWORD func_0x080f98cc()
eme-disas-prng.asm:;; 疑似乱数作成関数
eme-disas-prng.asm:;; [$03005e18] 乱数のシード
eme-disas-prng.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-prng.asm:;; void func_0x080f9878()
eme-disas-prng.asm:;; byte [$0203b9ca] の最下位ビットが0の場合は V-Blankと同じ乱数生成器を呼び出し
eme-disas-prng.asm:;; そうでない場合は WORD [$03005e18] をシードとした乱数生成器を呼び出し。
eme-disas-prng.asm:;; 呼び出した乱数を引数に取り、hWORD func_0x08296518(hWORD 乱数, hWORD r1)を実行
eme-disas-prng.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-prng.asm:;; hWORD func_0x08296518(WORD r0, WORD r1)
eme-disas-prng.asm:;; r0を疑似乱数の出力、r1を最大値とした時に
eme-disas-prng.asm:;; r1より小さい乱数を求める関数
eme-disas-prng.asm:;; arg0 >= arg1 の場合は bit shift, rotation を繰り返して
eme-disas-prng.asm:;; 十分なランダム性を確保する。
eme-disas-prng.asm:;; arg1 == 0 の場合
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; void func_0x08000738()
eme-disas-vblank.asm:;; LCD V-Blank 割り込み時に実行される関数
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; void func_0x080115a8()
eme-disas-vblank.asm:;; func_0x0800bfec()を呼んでいるだけ
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; void func_0x0800bfec()
eme-disas-vblank.asm:;; func_0x08293128() の戻り値が0の時は何もしない
eme-disas-vblank.asm:;; 0で無い場合は func_0x0800cdc8(0xf1, 0), func_0x00d0cc()を実行  
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; WORD func_0x08293128()
eme-disas-vblank.asm:;; 解析中
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; void func_0x08295240()
eme-disas-vblank.asm:;;
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; byte func_0x082939d8()
eme-disas-vblank.asm:;; $03004ab0 にある構造体 i.e. 割り込みの状態に応じて 0 or 1 を返す関数
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; hWORD func_0x0829117c(byte r0)
eme-disas-vblank.asm:;; r0 による swich-case文
eme-disas-vblank.asm:;; r0 == 0x0 の時戻り値 hWORD [$03004ab0 + 0x12]
eme-disas-vblank.asm:;; r0 == 0x1 の時戻り値 byte [$03004ab0 + 0x14]
eme-disas-vblank.asm:;; r0 == 0x2 の時戻り値 hWORD [$03004ab0]
eme-disas-vblank.asm:;; r0 == 0x3 の時戻り値 byte [$03004ab0 + 0x06]
eme-disas-vblank.asm:;; 上記以外 戻り値 0xffff
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; void func_0x0800cdc8(byte r0, byte r1)
eme-disas-vblank.asm:;;
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; void func_0x08295a10(byte r0, byte r1, POINTER r2)
eme-disas-vblank.asm:;;  関数 (*r2)(byte r0, r1)を実行
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; void func_0x0800d0cc()
eme-disas-vblank.asm:;;
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; void func_0x0800b474()
eme-disas-vblank.asm:;;
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; void func_0x08001110()
eme-disas-vblank.asm:;; キューにたまったLCD IOレジスタの値をflushする(lockされていない場合)
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; void func_0x08000c80()
eme-disas-vblank.asm:;; offset = [$03000811]
eme-disas-vblank.asm:;; POINTER $03000010 にある構造体の設定値をFIFO空になる or VCOUNT が次の描画に入る直前までDMA転送を行う
eme-disas-vblank.asm:;; 構造体には DMA3 Source, Dest, Count, mode(See memory.txt)が含まれている
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; void func_0x0828e6ac(???)
eme-disas-vblank.asm:;;
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; void func_0x0828d5e4()
eme-disas-vblank.asm:;; サウンド構造体の処理?
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; WORD? func_0x0828da1e(WORD r0, WORD r1, WORD r2, POINTER r3)
eme-disas-vblank.asm:;; r3を関数のポインタとして (*r3)(r0, r1, r2)を実行, inline関数、また、まだ関数の一部でもある
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; ? func_0x0828da24(???)
eme-disas-vblank.asm:;; ARMの関数
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; ? func_0x0828dce0(???)
eme-disas-vblank.asm:;; ARMの関数
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; ??? func_0x0828dd84(???)
eme-disas-vblank.asm:;;
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;;  func_0x0828dda4(???)
eme-disas-vblank.asm:;;
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; ??? func_0x0828ddd4(???)
eme-disas-vblank.asm:;;
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; ??? func_0x0828ddec(???)
eme-disas-vblank.asm:;;
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; ??? func_0x0828ddee(???)
eme-disas-vblank.asm:;;
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; ここは不明な値
eme-disas-vblank.asm:;;
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; ??? func_0x0828de14(???)
eme-disas-vblank.asm:;;
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; void func_0x080334e0()
eme-disas-vblank.asm:;;
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; void func_0x080116bc()
eme-disas-vblank.asm:;;
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; byte func_0x080a8aac(WORD r0)
eme-disas-vblank.asm:;; func_0x080a8aac(0x0811fd5)として呼び出し@func_0x080116bc()
eme-disas-vblank.asm:;;  $03005b60 にある構造体の配列に value4 == 1 かつ value0 == arg0 のものがあれば 1を返す
eme-disas-vblank.asm:;;  そうでない場合は0を返す
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; void func_0x080a8964(byte r0)
eme-disas-vblank.asm:;; Vector構造の r0 番目の要素を取り除いている
eme-disas-vblank.asm:;; value4: position, value5: previous, value6: next
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; byte func_0x08009b64()
eme-disas-vblank.asm:;;
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; byte func_0x0800fff4()
eme-disas-vblank.asm:;; byte [$030050a0]を戻す関数
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; byte func_0x0800a114()
eme-disas-vblank.asm:;;
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; void func_0x0800a1b0(byte r0)
eme-disas-vblank.asm:;;
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; void func_0x0800f1e8(byte r0)
eme-disas-vblank.asm:;; $030050a0 + 0x80から存在する構造体配列の arg0番目の +0x12 に0を代入?
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; void func_0x0800dc40()
eme-disas-vblank.asm:;;
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; byte func_0x0800d7e8(byte r0)
eme-disas-vblank.asm:;;
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; ??? func_0x0800dbf0(???)
eme-disas-vblank.asm:;;
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; ??? func_0x08011d10(???)
eme-disas-vblank.asm:;;
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; ??? func_0x0800dc28(???)
eme-disas-vblank.asm:;;
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; ??? func_0x08011564(???)
eme-disas-vblank.asm:;;
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; ??? func_0x0800db50(???)
eme-disas-vblank.asm:;;
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; ??? func_0x08006e00(???)
eme-disas-vblank.asm:;;
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; ??? func_0x08006f5c(???)
eme-disas-vblank.asm:;;
eme-disas-vblank.asm:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
eme-disas-vblank.asm:;; void func_0x0808653c()
eme-disas-vblank.asm:;; [$03002360 + 0x0] に保存される可能性のある関数