MECC - 代碼格式
代碼格式
輸入代碼格式使之後的代碼以指定的代碼格式解析
不輸入代碼格式的話則以遊戲代碼指定的代碼格式解析
代碼清單中的每個代碼都可以指定複數的代碼格式
CODE
以MECC格式解析以下代碼
FCPAR
以Pro Action Rocky格式解析以下代碼
64PAR
以64用Pro Action Replay格式解析以下代碼
GCPARRAW
以GC用Pro Action Replay(已解密)格式解析以下代碼
GBPAR
以GB用Pro Action Replay格式解析以下代碼
GBAPAR
以GBA用Pro Action Replay(已加密)格式解析以下代碼
GBAPARRAW
以GBA用Pro Action Replay(已解密)格式解析以下代碼
NDSPAR
以DS用Pro Action Replay格式解析以下代碼
PSPAR
以PS用Pro Action Replay格式解析以下代碼
PS2PAR
以PS2用Pro Action Replay(已加密)格式解析以下代碼
PS2PARRAW
以PS2用Pro Action Replay(已解密)格式解析以下代碼
PSPPAR
以PSP用Pro Action Replay格式解析以下代碼
PSPCWC
以PSP用CWCheat格式解析以下代碼
MDPAR
以MD用Pro Action Replay格式解析以下代碼
SSPAR
以SS用Pro Action Replay格式解析以下代碼
GGPAR
以GG用Pro Action Replay格式解析以下代碼
- CODE
- 306000 01
- PSPAR
- 30010000 0001
复制代码#306000 01以MECC格式解析並寫入內存
#30010000 0001以PSPAR格式解析並寫入內存
註解
以# / ; '之中任一符號為首的每一行當作註解被忽略
另外自//(雙斜線)至行尾也當作註解
- #註解1
- /註解2
- ;註解3
- '註解4
- 306000 01 //註解5
复制代码#記載為註解的部分會全部忽略
※以下的說明全部以小尾設定論
MECC格式
寫入
指定地址與數值
數值可指定1至4字節
XXXXXX YY
XXXXXX為地址,YY為數值
數值前附上D:可指定10進制
#地址7E0000以數值63寫入
也可以輸入運算式
●四則運算 + - * /
●邏輯運算 & | ^
&=邏輯積, |=邏輯和,^=邏輯異或
●位運算 < >
運算符的優先度為 * / > + - >位運算>邏輯運算
也可以附上()
數值前附上@可以引用地址的數值
#7E0000以7E1000的數值寫入
#7E0000以(7E1000的數值+AA)寫入
寫入數值的大小,依各項之中最大大小設置
若為地址則依其他項最大大小讀取數值
#7E0000以1A寫入
#7E0000以001A寫入
#7E0000以1字節(7E0004的數值+A)寫入
#7E0000以2字節(7E0004的數值+A0A)寫入
#自7E0004讀取2字節數值
要固定自地址讀取的大小的話使用SIZE代碼(後述)或大小指定
#7E0000以2字節(7E0004的數值+A)寫入
#自7E0004讀取2字節數值
要引用寫入地址的數值的話使用VALUE
#7E0000以(7E0000的數值+1)寫入
VALUE也可以改變讀取大小
#7E0000以2字節(7E0000的數值+1)寫入
#自7E0000讀取2字節數值
#7E0000以4字節(7E0000的數值+10000000)寫入
#自7E0000讀取2字節數值
寫入選項
數值後附上 ; 可以指定選項
COUNT=
寫入執行次數
ADDRUP=
COUNT指定時的地址增量
UPTO
COUNT指定時數值增加
DOWNTO
COUNT指定時數值減少
UPTO=
COUNT指定時的數值增量
DOWNTO=
COUNT指定時的數值減量
SIZE=
寫入大小
MAX=
寫入數值的最大值(也可以指定變數)
MIN=
寫入數值的最小值(也可以指定變數)
- 7E0000 00;COUNT=100;UPTO;
复制代码#7E0000~7E00FF以00~FF寫入
- 7E0000 00;COUNT=80;UPTO=2;
复制代码#7E0000~7E007F以00,02,…,FC,FE寫入
- 7E0000 00;COUNT=100;ADDRUP=2;
复制代码#7E0000,7E0002,…,7E01FC,7E01FE以00寫入
ADDRUP不指定時由數值決定字節大小
#7E0000以0102,7E0002以0102,…寫入
#7E0000以0010寫入
#7E0000以5678寫入
#7E0000以80寫入
#7E0000以20寫入
MAX/MIN並非最終結果,而是每個計算都適用
#7E0000以20寫入
#20+20=40變為30,30-10=20
變數
作為暫時保存數值的領域可使用全局變數與本地變數的兩種變數
全局變數
可使用$0~$9的10個領域
代碼清單中各代碼共用的變數
例如說,第1個代碼使用$0設置數值,第2個代碼也使用$0的話,$0的數值會是第1個代碼設置的數值
本地變數
可使用%0~%9的10個領域
代碼清單中各代碼獨立的變數
例如說,第1個代碼使用%0設置數值,即使第2個代碼也使用%0,%0的數值也會維持默認值
設置變數的數值時,敘述欲設置的變數與數值
XX = YY
XX為變數(指定$0-$9,%0-%9)
YY為變數要設置的數值(可與寫入的數值相同敘述)
#變數$0以1001設置
#7E0000以$0的設定值1001寫入
將變數當作地址寫入數值時在變數前附上@
- $0 = 7E0000
- @$0 = 1000 + 1
复制代码#7E0000以1001寫入
變數作為地址時,變數部分用()圍住也可以指定索引
- $0 = 7E0000
- @($0 + 1) = 10
- @$0 = 11
复制代码#7E0001以10,7E0000以11寫入
當作地址設置時,與一般寫入處理同樣作用的關係,也可以指定上述的寫入設置
以下為MECC格式以外也可使用
if代碼
比較數值來判斷代碼是運行與否
IF XX ?? YY
XX,YY用以指定數值(附上@也可以指定地址)
??用以指定運算符
可指定的運算符如以下所示
==
XX與YY相等時運行代碼
!=
XX與YY相異時運行代碼
<
XX小於YY時運行代碼
>
XX大於YY時運行代碼
<=
XX在YY以下時運行代碼
>=
XX在YY以上時運行代碼
- IF @7E0000 == AA
- 7E0010 BB
- ENDIF
复制代码#7E0000的數值為AA時7E0010以BB寫入
- IF @7E0000 == D:99
- 7E0010 BB
- ENDIF
复制代码#7E0000的數值為63時7E0010以BB寫入
if代碼會自動設定地址的讀取大小
此外,進行大小指定時讀取的數值會是指定的大小
但是,SIZE代碼的大小指定無效
- IF @7E0000 == @7E0001
- 7E0010 BB
- ENDIF
复制代码#7E0000與7E0001的數值相等時7E0010以BB寫入
- IF @7E0000 == 00AA
- 7E0010 BB
- ENDIF
复制代码#7E0000的數值為00AA時7E0010以BB寫入
- IF 2@7E0000 == @7E0002
- 7E0010 BB
- ENDIF
复制代码#7E0000的2字節數值與7E0002的數值相等時,7E0010以BB寫入
XX與YY的部分附上()可以加入運算式
- IF (4@7E0000+01) == (4@7E0004)
- 7E0010 BB
- ENDIF
复制代码#7E0000的4字節數值+1與7E0004的4字節數值相等時,7E0010以BB寫入
else代碼
運行不合IF條件時的處理
- IF @7E0000 == AA
- 7E0010 01
- ELSE
- 7E0010 02
- ENDIF
复制代码#7E0000的數值為AA時7E0010以01寫入
#7E0000的數值不為AA時7E0010以02寫入
whileコード
運行重複的處理
WHILE XX
YYYY
ENDWHILE
XX以指定的次數運行YYYY
省略XX時,在運行BREAK代碼(後述)以前持續運行
即使指定XX時也能用BREAK代碼
※注意
變為無限循環那樣處理時,ENDWHILE之後的代碼不會運行(代碼清單中存在的其他代碼也是)
但是,即使無限循環中也能解除代碼應用,使用的WHILE代碼未依想像中運作時,首先確認是否有BREAK代碼
- WHILE 2
- 7E0000 VALUE+01
- ENDWHILE
复制代码#7E0000的數值+2
break代碼
中斷while代碼
BREAK XX
XX用以指定while代碼退出次數
省略XX當作退出1次
- WHILE
- 7E0000 01
- WHILE
- 7E0001 02
- BREAK
- ENDWHILE
- 7E0002 03
- BREAK
- ENDWHILE
复制代码#7E0000以01,7E0001以02,7E0002以03寫入
- WHILE
- 7E0000 01
- WHILE
- 7E0001 02
- BREAK 2
- ENDWHILE
- 7E0002 03
- BREAK
- ENDWHILE
复制代码#7E0000以01,7E0001以02寫入
#第1次的BREAK退出2次WHILE的緣故7E0002不寫入
copy代碼
複製內存
COPY XXXX YYYY ZZ
XXXX指定要複製的地址
YYYY指定複製至的地址
ZZ指定複製的大小
#往7E0100至7E010F寫入7E0000至7E000F的數值
random代碼
設置亂數範圍以使用亂數
RANDOM XX YY
XX指定亂數的最小數值
YY指定亂數的最大數值
亂數可以RAND使用
#7E0000以10以上20以下的數值寫入
#省略RANDOM時變為00以上FF以下的數值
wait代碼
加入代碼運行時的等待時間
WAIT XX
XX指定ms單位的等待時間
#輸入WAIT的位置等待1秒才運行代碼
#7E0000的數值每1秒間隔隨機變化
size代碼
將變數,地址的讀取大小固定化
SIZE ?? XX
??指定固定化的對象
變數的話為$0-$9,%0-%9,地址的話為ADDR
XX指定1至4的大小(指定0的話為一般的可變大小)
- SIZE $0 2
- $0 = 10
- 7E0000 $0
复制代码#7E0000以0010寫入
- SIZE ADDR 2
- 7E0000 @7E0002
复制代码#7E0000以7E0002的2字節數值寫入
地址的話,個別指定大小的一方為優先
- SIZE ADDR 2
- 7E0000 1@7E0002
复制代码#7E0000以7E0002的1字節數值寫入
sub代碼
代碼之中呼叫其他代碼
sub XX YY
XX指定呼叫代碼的名稱
名稱在代碼清單中的代碼內容欄
YY指定代碼的編號
相同代碼名稱存在時指定(0為第1個、1為第2個)
沒有相同代碼名稱時可省略
- [主代碼]
- $0 = 306000
- sub 子代碼
- [子代碼]
- @$0 = value+01
复制代码#306000的數值+1
- [主代碼]
- $0 = 306000
- sub サブコード 1
- [子代碼]
- @$0 = value+01
- [子代碼]
- @$0 = value-01
复制代码#306000的數值-1
exit代碼
途中結束代碼
exit代碼運行時點以後的代碼不運行,運行代碼清單的下個存在的代碼
#7E0000以01寫入
#往7E0001的寫入不運行
stop代碼
途中結束代碼,解除代碼應用
stop代碼運行時點以後的代碼不運行,之後代碼清單存在的代碼也不運行解除代碼應用
stop代碼運行時點的變數內容會在調試信息清單顯示
#往7E0000的寫入不運行
#可以確認STOP時點的變數數值
還有,STOP指定數值的話,可以指定運行幾次STOP
#XX指定STOP運行次數
- %0 = 1
- WHILE
- %0 = %0 + 1
- STOP 2
- ENDWHILE
复制代码#STOP為運行2次的時點結束
#運行上述代碼則%0的數值為3
print代碼
指定內容在調試輸出作為文字列輸出
可以輸出內存的內容與文字,可使用於自製遊戲代碼的調試等方面
PRINT XX
XX指定文字列
指定的文字列維持原狀輸出
PRINT DEC XX YY
XX指定字節大小
YY指定地址
自指定地址字節數内容以10進制輸出
不可指定5字節以上大小
PRINT HEX XX YY
XX指定字節大小
YY指定地址
自指定地址字節數内容以16進制輸出
PRINT SJIS XX YY
XX指定字節大小
YY指定地址
自指定地址字節數内容以SJIS文字代碼作為文字列輸出
以大尾讀取
PRINT UTF8 XX YY
XX指定字節大小
YY指定地址
自指定地址字節數内容以UTF8文字代碼作為文字列輸出
以大尾讀取
- 7E0000 82
- 7E0001 A0
- 7E0002 E3
- 7E0003 81
- 7E0004 84
- PRINT DEBUG
- PRINT DEC 2 7E0000
- PRINT HEX 3 7E0002
- PRINT SJIS 2 7E0000
- PRINT UTF8 3 7E0002
复制代码#顯示内容如以下
#DEBUG
#41090
#E38184
#あ
#い
地址指定可以指定變數與算式
自由內存領域
作為可以自由讀寫的內存領域F0000000至F007FFFF的512KB領域是存在的
這個領域可使用與其他代碼一樣的格式
#自由內存領域F0000000以01寫入
#7E0000以自由內存領域F0000000的數值寫入