Ocarina


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



Ocarina

Ocarinaはチートコードを使用するためのアプリケーションです
手順
1.Ocarina Code Managerを用いGCTファイルを作成し以下に配置
フォルダ構成
codes/*.gct
2.Ocarinaを実行しゲームディスクを挿入しWiiリモコンのAボタンを押す

ゲームIDとGCTファイルのゲームIDが一致すればコードが適用されゲームが開始します

Ocarina Code Manager

Ocarina Code ManagerはOcarinaで使用するためのGCTファイルを作成するソフトです

コードタイプ

Standard memory fill codes:

GCT:
 8 bit: 00XXXXXX ZZZZ00YY
16 bit: 01XXXXXX ZZZZYYYY
32 bit: 02XXXXXX YYYYYYYY
Consecutive: 03XXXXXX YYYYYYYY
WiiRd:
 8 bit: 00XXXXXX ZZZZ00YY or 10XXXXXX ZZZZ00YY
16 bit: 02XXXXXX ZZZZYYYY or 12XXXXXX ZZZZYYYY
32 bit: 04XXXXXX YYYYYYYY or 14XXXXXX YYYYYYYY
Consecutive: 06XXXXXX YYYYYYYY or 16XXXXXX YYYYYYYY
You recognize WiiRd has two possibilities.They are not identical!
The codes beginning with 0 mean they write to the address [base+XXXXXX] (XXXXXX may go up to 1FFFFFF) while the codes begining with 1 write to the address [pointer+XXXXXX] - this means that you can access regular memory using the “base address” even while you’re handling pointers in between.
ZZZZ is handled the exact same way.
Serial codes:
GCT:
04XXXXXX YYYYYYYY
TNNNZZZZ VVVVVVVV
T being 0 for 8 bit, 1 for 16 bit, 2 for 32 bit
WiiRd:
08XXXXXX YYYYYYYY or 18XXXXXX YYYYYYYY
TNNNZZZZ VVVVVVVV
Same structure.. again 08 means use base address to apply offset, while 18 means pointer address!

Conditional codes:

GCT:
32 bit: 1TXXXXXX YYYYYYYY (compare value: YYYYYYYY)
16 bit: 2TXXXXXX ZZZZYYYY (compare value: ZZZZ & YYYY)
Endif: 60000000 00000000

T: see Gecko instructions too long to list
WiiRd:
32 bit: 2TXXXXXX YYYYYYYY or 3TXXXXXX YYYYYYYY
16 bit: 2UXXXXXX ZZZZYYYY or 3UXXXXXX ZZZZYYYY
(compare value: (not ZZZZ) & YYYY)
Endif: E2000001 00000000

T: 0 -> equal (==) (equals GCT type C)
T: 2 -> not equal (!=) (GCT: D)
T: 4 -> greater than (>) (GCT: E)
T: 6 -> lower than (<) (GCT: F)
U: 8 -> equal (==) (GCT: C)
U: A -> not equal (!=) (GCT: D)
U: C -> greater than (>) (GCT: E)
U: E -> lower than (<) (GCT: F)
As you see.. WiiRd only allows allows comparison until the next endif!
However.. there is a trick - if you raise XXXXXX by 1 (so make 145544 to 145545) and your statement includes and endif - this is kinda neat if you have multiple statements in a row (like if player pressed D-Up - if he presses D-Down - the “if he presses D-Down” can include the endif for the selection before!

Base address changing

set Base address to XXXXXXXX:
GCT 30000000 XXXXXXXX
WiiRd 42000000 XXXXXXXX for ba - 4A0000000 XXXXXXXX for po
load Base address from XXXXXXXX
GCT 31000000 XXXXXXXX
WiiRd 40000000 XXXXXXXX for ba - 48000000 XXXXXXXX for po
set Base address to data register N
GCT 3200000N 00000000
WiiRd 4200100N 00000000 for ba - 4A00100N 00000000 for po
store Base address to XXXXXXXX
GCT 33000000 XXXXXXXX
WiiRd 44000000 XXXXXXXX for ba - 4C000000 XXXXXXXX for po
add XXXXXXXX to current base address
GCT 34000000 XXXXXXXX
WiiRd 42010000 XXXXXXXX for ba - 5A010000 XXXXXXXX for po
You see… all codes can be used the exact same way!
A very elegent way to make a full terminator in WiiRd to reset both the base address and the pointer ist:

WiiRd: E0000000 80008000 //Sets ba and po to 80000000

Set Repeat Code Types

GCT:
40000000 000MNNNN //set block
[block]
41000000 000M0000 //execute block
WiiRd:
6000NNNN 0000000M
[block]
62000000 0000000M 

Load & Store Code Types

load XXXXXXXX into register specified by N
GCT: 5000000N XXXXXXXX
WiiRd: 8000000N XXXXXXXX
load data at address XXXXXXXX into register N
GCT: 510U000N XXXXXXXX
WiiRd: 82U0000N XXXXXXXX
U: 0: 8 bit; 1: 16 bit; 2: 32 bit
Execute instructions from code list
GCT: 54000000 XXXXXXXX //execute XXXXXXXX operations
WiiRd: C0000000 NNNNNNNN //execute NNNNNNNN lines of operations
Both GCT and WiiRd codes must end with blr!

Perform the operation N=(XXXXXXXX ? N) where operation is specified by T/U
GCT: 5T00000N XXXXXXXX
WiiRd: 86U0000N XXXXXXXX
Please note that the speicifications of T and U differ (see description documents)!

Perform the operation n=(M ? N) where operation is specified by T/U
GCT: 5T0001MN 00000000
WiiRd: 88TY000N 0000000M
Please note that the speicifications of T and U differ (see description documents)!

Hook Code Types

Hook
GCT: C0XXXXXX YYYYYYYY
WiiRd: C6XXXXXX YYYYYYYY for ba or D6XXXXXX YYYYYYYY for po 

Insert Instruction Code Types

Execute NNNNNNNN bytes/lines of code at instruction base+XXXXXX
GCT: C1XXXXXX NNNNNNNN (N=bytes)
WiiRd: C2XXXXXX NNNNNNNN (N=lines) for ba
   or D2XXXXXX NNNNNNNN (N=lines) for po
Please make sure that in both cases one last value remains as 00000000 - this one will be overwritten to branch back to regular code.
In case of WiiRd if your last code line would be 00000000 00000000 then, please use 60000000 00000000 instead!

End If Code Types

GCT:
60000000 XXXXXXXX
Set execution status to 0 (=execute)
Set base address to XXXXXXXX if XXXXXXXX =! 0
WiiRd:
Regular endif:
E20000VV XXXXYYYYApplies VV endifs (you can close deep if trees that way)..
set ba to XXXX0000 if XXXX!=0 and po to YYYY0000 if YYYY!=0
Full terminator:
E0000000 XXXXYYYYClears all if trees.. If XXXX!=0, ba = XXXX0000 - If YYYY!=0, po = YYYY0000

カウンタ

今日: -
昨日: -
合計 -

更新履歴

取得中です。

最近のリンク元

申し訳ありませんが、recent_ref プラグインは提供を終了し、ご利用いただけません。