DeSmuMEで組み込まれているLua用API　非公式リファレンス　～movieライブラリ～

この記事はニンテンドーDS向けエミュレータの一つである「DeSmuME」（以降Desmume）のLua用APIの非公式日本語リファレンスです。今回はmovieライブラリについてのリファレンスです。

:::note warn
このリファレンスは非公式の日本語リファレンスです。そもそも英語のリファレンスも公式のリファレンスもありません。
さらに詳細の仕様を確認したい場合はDesmumeのソースコードを参照することを推奨します。
→https://github.com/TASEmulators/desmume/blob/master/desmume/src/lua-engine.cpp
:::

---

`movie.active()`
ムービーモードが有効化否かをブール値で返します。

<details><summary>引数</summary>

無し　nil

</details>

<details><summary>戻り値</summary>

`boolean`型
True or Falseで戻ってきます。

True = 有効　TASing
False = 無効　

</details>

``` lua: example.lua
function fn()
local m

m = movie.active()

if m then

gui.text(0,10,string.format("Active"))

else

gui.text(0,10,string.format("Inactive"))

end

end
gui.register(fn)
```

---

`movie.isrecording()`
ムービーを追記中かをブール値で返します。

<details><summary>引数</summary>

無し　nil

</details>

<details><summary>戻り値</summary>

`boolean`型
True or Falseで戻ってきます。

True = Recording Read+Write
False = Playing Read-Only

</details>

``` lua: example.lua
function fn()
local m

m = movie.recording()

if m then

gui.text(0,10,string.format("Recording"))

else

gui.text(0,10,string.format("Playing"))

end

end
gui.register(fn)
```

---

`movie.playing()`
ムービーを再生中かブール値で返します。

<details><summary>引数</summary>

</details>

<details><summary>戻り値</summary>

</details>

``` lua: example.lua
function fn()
local m

m = movie.playing()

if m then

gui.text(0,10,string.format("Playing"))

else

gui.text(0,10,string.format("Recording"))

end

end
gui.register(fn)
```

---

`movie.mode()`
現在のムービーモードを取得する

<details><summary>引数</summary>

無し　nil

</details>

<details><summary>戻り値</summary>

文字列
`playback` ムービー再生中
`record`　ムービー追記中
`inactive`　ムービーを読み込んでいない
`finished`　ムービー再生終了

</details>

``` lua: example.lua
function fn()
local m

m = movie.mode()

gui.text(0,10,""..m)

end
gui.register(fn)
```

---

`movie.length()`
ムービーの長さを取得する

<details><summary>引数</summary>

無し　nil

</details>

<details><summary>戻り値</summary>

整数
ムービーのフレーム数が戻ってきます

</details>

``` lua: example.lua
function fn()
local m

m = movie.length()

gui.text(0,10,""..m)

end
gui.register(fn)
```

---

`movie.name()`
ムービーファイルの名前をパスごと取得します。

<details><summary>引数</summary>

無し　nil

</details>

<details><summary>戻り値</summary>

文字列　ムービーファイルの名前をパスごと取得します。

例:`C:TASmovie/Any.dsm`

</details>

``` lua: example.lua
function fn()
local m

m = movie.name()

gui.text(0,10,""..m)

end
gui.register(fn)
```

---

`movie.rerecordcount()`
ムービーの追記回数を取得します。

<details><summary>引数</summary>

無し nil

</details>

<details><summary>戻り値</summary>

整数

</details>

``` lua: example.lua
function fn()
local m

m = movie.rerecordcount()

gui.text(0,10,""..m)

end
gui.register(fn)
```

---

`movie.setrerecordcount()`
追記回数をセットします。

<details><summary>引数</summary>

数値

:::note info
ソースコードを見るに引数が定義されていないのですが、数値を受け取ることを前提として関数が処理されているように見えます
:::


</details>

<details><summary>戻り値</summary>

無し　nil

</details>

``` lua: example.lua
function fn()
local m

movie.setrerecordcount(10)
m = movie.rerecordcount()

gui.text(0,10,""..m)

end
gui.register(fn)
```

---

`movie.rerecordcounting()`
Luaスクリプトでの追記を追記回数に含めるかどうかを設定します。

<details><summary>引数</summary>

`boolean`型
True or False
デフォルト: False

True:Luaスクリプトによる追記は追記回数に含めない
False:Luaスクリプトによる追記は追記回数に含める

</details>

<details><summary>戻り値</summary>

無し　nil

</details>

``` lua: example.lua
function fn()

movie.rerecordcounting(true)

end
gui.register(fn)
```

---

`movie.readonly()`
ムービーが追記不可かどうかをブール値で返します。

<details><summary>引数</summary>

無し nil

</details>

<details><summary>戻り値</summary>

`boolean`型
True or False

True:Read-Onlyモード
False:Read&Writeモード

</details>

``` lua: example.lua
function fn()
local m

m = movie.readonly()

if m then

gui.text(0,10,string.format("Read-Only"))

else

gui.text(0,10,string.format("Read+Write"))

end

end
gui.register(fn)
```

---

`movie.setreadonly()`
ムービーの読み取りモードを設定する

<details><summary>引数</summary>

`boolean`型
True or False

True:Read-Onlyモード
False:Read&Writeモード

</details>

<details><summary>戻り値</summary>

無し　nil

</details>

``` lua: example.lua
function fn()

movie.setreadonly(true)

end
gui.register(fn)
```

---

`movie.framecount()`
ムービーファイルの現状フレームカウントを取得する

<details><summary>引数</summary>

無し nil

</details>

<details><summary>戻り値</summary>

範囲：`int`型
-2,147,483,648~2,147,483,647の0を含む整数が戻ってきます。

</details>

``` lua: example.lua
function fn()
local m

m = movie.framecount()

gui.text(0,10,""..m)

end
gui.register(fn)
```

:::note info
`emu.framecount()`の代替名用として用意されています。
:::


---

`movie.play()`
任意のムービーファイルを読み込み再生する

<details><summary>引数</summary>

`string`型
絶対パスもしくは相対パスを入力

:::note warn
C言語の性質上\は重ねる必要があります。重ねなかった場合はdesmumeがクラッシュします
:::

</details>

<details><summary>戻り値</summary>

無し　nil

</details>

``` lua: example.lua
movie.play("C:\\TASmovie\\test.dsm")
```

---

`movie.replay()`
開いているムービーファイルを最初から再生する

<details><summary>引数</summary>

無し nil

</details>

<details><summary>戻り値</summary>

無し nil

</details>

``` lua: example.lua
movie.replay()
```

---

`movie.close()`
開いているムービーファイルを閉じる

<details><summary>引数</summary>

無し　nil

</details>

<details><summary>戻り値</summary>

無し　nil

</details>

``` lua: example.lua
movie.close()
```

---

代替名一覧
以下の関数でコードを書いても右側の関数として認識されます。
`movie.open()`→`movie.play()`
`movie.close()`→`movie.close()`
`movie.getname()`→`movie.name()`
`movie.playback()`→`movie.play()`
`movie.getreadonly()`→`movie.readonly()`