「拡張アニメーションタイル」の編集履歴(バックアップ)一覧はこちら
拡張アニメーションタイル - (2015/08/11 (火) 17:05:45) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
#contents
*はぢめに・・・
ここではLunar Magic v1.7x以降で大幅に変化した拡張アニメーションタイルについて書いていこうと思いません。
※情報はLunar Magic v2.32の物です。
*使い方
ツールバーの一番右の3個が拡張アニメーションタイル関連の機能です。
#image(http://i.imgur.com/35VFLK0.png)
ローカル(マップ固有)拡張アニメーションタイルの設定画面を開きます。
拡張アニメーションタイルの設定と言えばこっちを指します。
#image(http://i.imgur.com/EAThztf.png)
グローバル(全マップ共通)拡張アニメーションタイルの設定画面を開きます。
使い方はローカル拡張アニメーションタイルの設定と同じなので一緒に解説。
Lunar Magic v1.80で追加。
#image(http://i.imgur.com/rQittfQ.png)
現在の開いているマップのアニメーション設定画面を開きます。
Lunar Magic v1.80で追加。
**拡張アニメーションタイルの設定画面
#image(http://i.imgur.com/35VFLK0.png)
#image(http://i.imgur.com/EAThztf.png)を開くとこんなダイアログが出ると思います。
機能を一つ一つ解説しません。自分で調べろ。(途中保存)
#image(http://i.imgur.com/CfJGXUw.png)
各種ボタンについて
- <
--前の64(0x40)フレームの設定を閲覧します。
- >
--次の64(0x40)フレームの設定を閲覧します。
-Copy Slot
--現在選択中のスロットをコピーします。
-Paste Slot
--現在選択中のスロットにペーストします。
-Clear Slot
--現在選択中のスロットを削除します。
-Trigger Init
--Manual及びCustomTriggerの初期状態を設定します。
-Copy All Slots
--全ての有効なスロットをコピーします。
-Paste All Slots
--全ての有効なスロットをペーストします。
-Clear All Slots
--全ての有効なスロットを削除します。
-Insert All Slots
--全ての有効なスロットを未使用のスロットに挿入します。
**Slotについて
スロットは32個用意されています。
負荷分散のためにそれぞれアニメーション更新のタイミングがわずかに違います。
※:Lunar Magic v1.6xまでは全てのスロットを同じタイミングで更新していたため、
アニメーションを使いすぎるとV-Blank中にVRAM更新が間に合わず、画面上部に黒い帯が発生していた。
|更新タイミング|スロット|
|0|0, 8, 10, 18|
|1|1, 9, 11, 19|
|2|2, A, 12, 1A|
|3|3, B, 13, 1B|
|4|4, C, 14, 1C|
|5|5, D, 15, 1D|
|6|6, E, 16, 1E|
|7|7, F, 17, 1F|
複数のスロットで同期を取りたい時はタイミングが同じスロットを使いましょう。
また、更新タイミングの違いを利用して0と4のスロットを使い、通常の倍の早さでアニメーションするタイルも作成できます。
**Typeについて
アニメーションの種類を設定します。
なんかやたらと多いですが、実際使うのはあんまり多くないと思います。
#region(Type一覧)
|Type名|種別|説明|
|Not Used|未使用|未使用スロット|
|8x8|タイル|1タイル分アニメーション|
|2 8x8s line|タイル|16x8 2タイル分アニメーション|
|3 8x8s line|タイル|24x8 3タイル分アニメーション|
|4 8x8s line|タイル|32x8 4タイル分アニメーション|
|5 8x8s line|タイル|40x8 5タイル分アニメーション|
|6 8x8s line|タイル|48x8 6タイル分アニメーション|
|7 8x8s line|タイル|56x8 7タイル分アニメーション|
|8 8x8s line|タイル|64x8 8タイル分アニメーション|
|0x0C 8x8s line|タイル|96x8 12タイル分アニメーション|
|0x10 8x8s line|タイル|128x8 16タイル分アニメーション|
|0x14 8x8s line|タイル|160x8 20タイル分アニメーション|
|0x18 8x8s line|タイル|192x8 24タイル分アニメーション|
|0x1C 8x8s line|タイル|224x8 28タイル分アニメーション|
|0x20 8x8s line|タイル|256x8 32タイル分アニメーション|
|1 8x8 2bpp|タイル|8x8 1タイルアニメーション レイヤー3用?|
|2 8x8s stacked|タイル|8x16 2タイル分アニメーション?|
|4 8x8s: 16x16|タイル|16x16 4タイル分アニメーション|
|8 8x8s: 32x16|タイル|32x16 8タイル分アニメーション|
|Palette|パレット|パレット用アニメーション|
|Palette + Working|パレット|パレット用アニメーション 上との違い不明|
|Palette + Working, Stop on Fade|パレット|パレット用アニメーション フェード時停止?|
|Palette Back Area Color|背景色|背景色用アニメーション|
|Palette Back Area Color, Stop on Fade|背景色|背景色用アニメーション フェード時停止?|
|Palette Rotate Right|パレットシフト|パレットを右に回す|
|Palette Rotate Right, Rev on Trigger|パレットシフト|パレットを右に回す トリガーONで左に回す|
|Palette Rotate Left|パレットシフト|パレットを左に回す|
|Palette Rotate Left, Rev on Trigger|パレットシフト|パレットを左に回す トリガーONで右に回す|
#endregion
***タイル系
Colors:使われない
Frames:アニメーションフレームの数(x2の時は指定した数の2倍になります)
Destination:アニメーションをさせる8x8タイル番号
Frame00-FF:各フレーム番号で参照するタイル番号を選択
8x8 Tile EditorでCtrl+Shift+PgDownを押すと"Internal GFX data viewing unlocked."と出て0x0500以降を閲覧できるようになります。
使用可能なタイル番号
- &tt(){0x0500-0x067F}
--GFX33 通常アニメーションタイル
- &tt(){0x0680-0x06FF}
--SuperGFX Bypassで設定した拡張アニメーションタイル
- &tt(){0x0700-0x077F}
--不明 (拡張アニメーションタイル?)
- &tt(){0x0800-0x0AFF}
--GFX32 マリオのGFX
- &tt(){0x0B00-0x0EFF}
--ExGFX60
- &tt(){0x0F00-0x12FF}
--ExGFX61
- &tt(){0x1300-0x16FF}
--ExGFX62
- &tt(){0x1700-0x1AFF}
--ExGFX63
Use alternate ExGFX file for sourceにチェックを入れると、ExGFX60-63のいずれかを使用することができます。
選択したExGFX以外のタイルは参照できないので注意。
***パレット系
Colors:変更する色の数(1以外の適切な設定方法は分かりません・・・)
Frames:アニメーションフレームの数(x2の時は指定した数の2倍になります)
Destination:アニメーションをさせるパレット番号
Frame00-FF:各フレーム番号でのSNES RGBの値を設定
***背景色
Colors:使用されない
Frames:アニメーションフレームの数
Destination:使用されない
Frame00-FF:各フレーム番号でのSNES RGBの値を設定
***パレットシフト系
Colors:シフトするパレットの数
Frames:使用されない
Destination:シフトするパレットのベース番号
**Triggerについて
アニメーションの条件を設定します。
#region(Trigger一覧)
|Trigger名|種別|説明|
|None|通常|条件なし|
|POW|x2|青POW起動|
|SilverPOW|x2|銀POW起動|
|ON/OFF|x2|OFFで起動|
|Have Star|x2|無敵中に起動|
|Timer < 100|x2|TIME100未満で起動|
|Timer < 100 One Shot|One Shot|TIME100未満になると1度起動?|
|>= 5 Yoshi coins|x2|ドラゴンコイン5枚以上獲得で起動?|
|>= 5 Yoshi coins One Shot|One Shot|ドラゴンコイン5枚以上獲得で1度起動?|
|Precision Timer Palette Rotate|通常?|しらない|
|Manual 0-F|通常|ユーザー用トリガー フレーム番号指定型|
|Custom 0-F|x2|ユーザー用トリガー ON/OFFスイッチ型|
|One Shot 00-1F|One Shot|ユーザー用トリガー OneShot型|
#endregion
***通常系
Frame0から指定フレームまでアニメーションし続けます。
***x2系
起動条件を満たしていない場合、Frame0から指定フレーム-1まで
起動条件を満たしている場合、指定フレームから指定フレームx2-1までアニメーションします。
***One Shot系
※:未検証
起動条件を満たしていない場合、Frame0を表示
起動条件を満たした瞬間、Frame0から指定フレームまでアニメーション
起動条件を満たした後は指定フレーム番号を表示?
#contents
*はぢめに・・・
ここではLunar Magic v1.7x以降で大幅に変化した拡張アニメーションタイルについて書いていこうと思いません。
※情報はLunar Magic v2.32の物です。
*使い方
ツールバーの一番右の3個が拡張アニメーションタイル関連の機能です。
#image(http://i.imgur.com/35VFLK0.png)
ローカル(マップ固有)拡張アニメーションタイルの設定画面を開きます。
拡張アニメーションタイルの設定と言えばこっちを指します。
#image(http://i.imgur.com/EAThztf.png)
グローバル(全マップ共通)拡張アニメーションタイルの設定画面を開きます。
使い方はローカル拡張アニメーションタイルの設定と同じなので一緒に解説。
Lunar Magic v1.80で追加。
#image(http://i.imgur.com/rQittfQ.png)
現在の開いているマップのアニメーション設定画面を開きます。
Lunar Magic v1.80で追加。
**拡張アニメーションタイルの設定画面
#image(http://i.imgur.com/35VFLK0.png)
#image(http://i.imgur.com/EAThztf.png)を開くとこんなダイアログが出ると思います。
機能を一つ一つ解説しません。自分で調べろ。(途中保存)
#image(http://i.imgur.com/CfJGXUw.png)
各種ボタンについて
- <
--前の64(0x40)フレームの設定を閲覧します。
- >
--次の64(0x40)フレームの設定を閲覧します。
-Copy Slot
--現在選択中のスロットをコピーします。
-Paste Slot
--現在選択中のスロットにペーストします。
-Clear Slot
--現在選択中のスロットを削除します。
-Trigger Init
--Manual及びCustomTriggerの初期状態を設定します。
-Copy All Slots
--全ての有効なスロットをコピーします。
-Paste All Slots
--全ての有効なスロットをペーストします。
-Clear All Slots
--全ての有効なスロットを削除します。
-Insert All Slots
--全ての有効なスロットを未使用のスロットに挿入します。
**Slotについて
スロットは32個用意されています。
負荷分散のためにそれぞれアニメーション更新のタイミングがわずかに違います。
※:Lunar Magic v1.6xまでは全てのスロットを同じタイミングで更新していたため、
アニメーションを使いすぎるとV-Blank中にVRAM更新が間に合わず、画面上部に黒い帯が発生していた。
|更新タイミング|スロット|
|0|0, 8, 10, 18|
|1|1, 9, 11, 19|
|2|2, A, 12, 1A|
|3|3, B, 13, 1B|
|4|4, C, 14, 1C|
|5|5, D, 15, 1D|
|6|6, E, 16, 1E|
|7|7, F, 17, 1F|
複数のスロットで同期を取りたい時はタイミングが同じスロットを使いましょう。
また、更新タイミングの違いを利用して0と4のスロットを使い、通常の倍の早さでアニメーションするタイルも作成できます。
**Typeについて
アニメーションの種類を設定します。
なんかやたらと多いですが、実際使うのはあんまり多くないと思います。
#region(Type一覧)
|Type名|種別|説明|
|Not Used|未使用|未使用スロット|
|8x8|タイル|1タイル分アニメーション|
|2 8x8s line|タイル|16x8 2タイル分アニメーション|
|3 8x8s line|タイル|24x8 3タイル分アニメーション|
|4 8x8s line|タイル|32x8 4タイル分アニメーション|
|5 8x8s line|タイル|40x8 5タイル分アニメーション|
|6 8x8s line|タイル|48x8 6タイル分アニメーション|
|7 8x8s line|タイル|56x8 7タイル分アニメーション|
|8 8x8s line|タイル|64x8 8タイル分アニメーション|
|0x0C 8x8s line|タイル|96x8 12タイル分アニメーション|
|0x10 8x8s line|タイル|128x8 16タイル分アニメーション|
|0x14 8x8s line|タイル|160x8 20タイル分アニメーション|
|0x18 8x8s line|タイル|192x8 24タイル分アニメーション|
|0x1C 8x8s line|タイル|224x8 28タイル分アニメーション|
|0x20 8x8s line|タイル|256x8 32タイル分アニメーション|
|1 8x8 2bpp|タイル|8x8 1タイルアニメーション レイヤー3用?|
|2 8x8s stacked|タイル|8x16 2タイル分アニメーション?|
|4 8x8s: 16x16|タイル|16x16 4タイル分アニメーション|
|8 8x8s: 32x16|タイル|32x16 8タイル分アニメーション|
|Palette|パレット|パレット用アニメーション|
|Palette + Working|パレット|パレット用アニメーション 上との違い不明|
|Palette + Working, Stop on Fade|パレット|パレット用アニメーション フェード時停止?|
|Palette Back Area Color|背景色|背景色用アニメーション|
|Palette Back Area Color, Stop on Fade|背景色|背景色用アニメーション フェード時停止?|
|Palette Rotate Right|パレットシフト|パレットを右に回す|
|Palette Rotate Right, Rev on Trigger|パレットシフト|パレットを右に回す トリガーONで左に回す|
|Palette Rotate Left|パレットシフト|パレットを左に回す|
|Palette Rotate Left, Rev on Trigger|パレットシフト|パレットを左に回す トリガーONで右に回す|
#endregion
***タイル系
Colors:使われない
Frames:アニメーションフレームの数(x2の時は指定した数の2倍になります)
Destination:アニメーションをさせる8x8タイル番号
Frame00-FF:各フレーム番号で参照するタイル番号を選択
8x8 Tile EditorでCtrl+Shift+PgDownを押すと"Internal GFX data viewing unlocked."と出て0x0500以降を閲覧できるようになります。
使用可能なタイル番号
(Lunar Magic.chm > Lunar Magic Documentation > Level Menu > Edit Level ExAnimated Framesから引用)
|タイル番号|Direct Offset|種別|説明|
|&tt(){0x0500-0x067F}|&tt(){0x017D00-0x01ACFF}|RAM|GFX33 通常アニメーションタイル|
|&tt(){0x0680-0x0757}|&tt(){0x01AD00-0x01C7FF}|RAM|SuperGFX Bypassで設定した拡張アニメーションタイル|
|&tt(){0x0800-0x0AE7}|&tt(){0x012000-0x017CFF}|RAM|GFX32 マリオのGFX|
|&tt(){0x0B00-0x0EFF}|&tt(){0x010000-0x017FFF}|ROM|未圧縮 ExGFX60|
|&tt(){0x0F00-0x12FF}|&tt(){0x010000-0x017FFF}|ROM|未圧縮 ExGFX61|
|&tt(){0x1300-0x16FF}|&tt(){0x010000-0x017FFF}|ROM|未圧縮 ExGFX62|
|&tt(){0x1700-0x1AFF}|&tt(){0x010000-0x017FFF}|ROM|未圧縮 ExGFX63|
Use alternate ExGFX file for sourceにチェックを入れると、ExGFX60-63のいずれかを使用することができます。
選択したExGFX以外のタイルは参照できないので注意。
***パレット系
Colors:変更する色の数(1以外の適切な設定方法は分かりません・・・)
Frames:アニメーションフレームの数(x2の時は指定した数の2倍になります)
Destination:アニメーションをさせるパレット番号
Frame00-FF:各フレーム番号でのSNES RGBの値を設定
***背景色
Colors:使用されない
Frames:アニメーションフレームの数
Destination:使用されない
Frame00-FF:各フレーム番号でのSNES RGBの値を設定
***パレットシフト系
Colors:シフトするパレットの数
Frames:使用されない
Destination:シフトするパレットのベース番号
**Triggerについて
アニメーションの条件を設定します。
#region(Trigger一覧)
|Trigger名|種別|説明|
|None|通常|条件なし|
|POW|x2|青POW起動|
|SilverPOW|x2|銀POW起動|
|ON/OFF|x2|OFFで起動|
|Have Star|x2|無敵中に起動|
|Timer < 100|x2|TIME100未満で起動|
|Timer < 100 One Shot|One Shot|TIME100未満になると1度起動?|
|>= 5 Yoshi coins|x2|ドラゴンコイン5枚以上獲得で起動?|
|>= 5 Yoshi coins One Shot|One Shot|ドラゴンコイン5枚以上獲得で1度起動?|
|Precision Timer Palette Rotate|通常?|しらない|
|Manual 0-F|通常|ユーザー用トリガー フレーム番号指定型|
|Custom 0-F|x2|ユーザー用トリガー ON/OFFスイッチ型|
|One Shot 00-1F|One Shot|ユーザー用トリガー OneShot型|
#endregion
***通常系
Frame0から指定フレームまでアニメーションし続けます。
***x2系
起動条件を満たしていない場合、Frame0から指定フレーム-1まで
起動条件を満たしている場合、指定フレームから指定フレームx2-1までアニメーションします。
***One Shot系
※:未検証
起動条件を満たしていない場合、Frame0を表示
起動条件を満たした瞬間、Frame0から指定フレームまでアニメーション
起動条件を満たした後は指定フレーム番号を表示?
**ユーザー用トリガーの使い方
Manual 0-F, Custom 0-F, One Shot 00-1Fはユーザーが自由に使えるトリガーです。
***Manual Trigger
指定したフレーム番号を表示し続けるタイプのトリガーです。
&tt(){0x7FC070}から16bytesがManual Trigger用メモリです。
例:
; 上を押すとManual 0のフレームを1増加
; 下を押すとManual 0のフレームを1減少
print "MAIN ",pc
LDA $7FC070 ;\ Y:Manual Trigger 0
TAY ;/
LDA $16 ;\
BIT #$04 ; | 下が押されていなければ次へ
BEQ + ;/
DEY ; 1減少
+ BIT #$08 ;\ 上が押されていなければ次へ
BEQ + ;/
INY ; 1増加
+ TYA ;\ Manual Trigger 0を更新
STA $7FC070 ;/
print "INIT ",pc
RTL
***Custom Trigger
true/falseを持ち、状態によってアニメーションのパターンを変えれるトリガーです。
&tt(){0x7EC0FC}から2bytesがCustom Trigger用メモリで、bit0がTrigger 0 bit15がTrigger Fです。
例:
; ビックリスイッチ押下状態を見て、Custom Trigger 0から3を設定する。
; Trigger 0 : 緑ビックリスイッチが押されていればON
; Trigger 1 : 黄ビックリスイッチが押されていればON
; Trigger 2 : 青ビックリスイッチが押されていればON
; Trigger 3 : 赤ビックリスイッチが押されていればON
print "INIT ",pc
STZ $00
LDY #$03
- LDA $1F27,y ;\ スイッチが押されていれば
CMP #$00 ;/ キャリーフラグが1になる
ROL $00 ; 左ローテートでキャリーフラグの情報を記憶していく
DEY ;\ 上の処理を4回繰り返す
BPL - ;/
LDA $7FC0FC ; A:Custom Trigger 0-7
AND #$F0 ; Trigger 0-3を0にする
ORA $00 ; スイッチの状態をTrigger 0-3に書き込み
STA $7FC0FC ; Custom Trigger 0-7を更新
print "MAIN ",pc
RTL
***One Shot Trigger
trueにした瞬間から1周期だけアニメーションするタイプのトリガーです。
その内書きます。