touhou-reimpl/research/stage06.tecl

1037 lines
35 KiB
Plaintext

#pragma mapfile "utils/th11.eclm"
meta {
anim: ["enemy.anm", "stgenm06.anm"],
ecli: ["default.ecl", "stage06mboss.ecl", "stage06boss.ecl"],
}
void BPhantom00() {
stackAlloc(@nargs=1, @blob="04000000");
anmSelect(@nargs=1, @blob="01000000");
dropMain(@nargs=1, @blob="02000000");
anmSetSprite(@nargs=2, @blob="01000000 2d000000");
call(
@nargs=3,
@blob="0c000000 5068616e 746f6d30 30000000 69690000 62000000 69690000 01000000",
);
delete(@blob="");
}
void BPhantom01() {
stackAlloc(@nargs=1, @blob="04000000");
anmSelect(@nargs=1, @blob="01000000");
anmSetSprite(@nargs=2, @blob="01000000 2d000000");
call(
@nargs=3,
@blob="0c000000 5068616e 746f6d30 31000000 69690000 62000000 69690000 01000000",
);
delete(@blob="");
}
void Crow00() {
stackAlloc(@nargs=1, @blob="04000000");
anmSelect(@nargs=1, @blob="01000000");
anmSetSprite(@nargs=2, @blob="01000000 2e000000");
anmSelect(@nargs=1, @blob="02000000");
anmSetMain(@nargs=2, @blob="00000000 0c000000");
setHurtbox(@nargs=2, @blob="0000c041 0000c041");
setHitbox(@nargs=2, @blob="00008041 00008041");
pushf(@nargs=1, @blob="00004040");
pushf(@mask=0b1, @nargs=1, @blob="003c1cc6");
pushf(@nargs=1, @blob="00000040");
mulf(@blob="");
addf(@blob="");
pushf(@nargs=1, @blob="00000000");
pushf(@mask=0b1, @nargs=1, @blob="00381cc6");
pushi(@nargs=1, @blob="20000000");
divf(@blob="");
addf(@blob="");
moveVel(@mask=0b11, @nargs=2, @blob="000080bf 000080bf");
pushf(@nargs=1, @blob="00004040");
pushf(@mask=0b1, @nargs=1, @blob="003c1cc6");
pushf(@nargs=1, @blob="00000040");
mulf(@blob="");
addf(@blob="");
moveVelTime(
@mask=0b1000,
@nargs=4,
@blob="3c000000 00000000 f02374c9 000080bf",
);
callAsync(@nargs=1, @blob="0c000000 43726f77 30305f61 74000000");
+600: // 600
nop(@blob="");
jmp(@nargs=2, @blob="2c000000 58020000");
wait(@nargs=1, @blob="e8030000");
pushi(@nargs=1, @blob="01000000");
jmpNeq(@nargs=2, @blob="d8ffffff 58020000");
delete(@blob="");
}
void Crow00_at() {
stackAlloc(@nargs=1, @blob="0c000000");
etNew(@nargs=1, @blob="00000000");
etAim(@nargs=2, @blob="00000000 02000000");
etSprite(@nargs=3, @blob="00000000 01000000 06000000");
etCountD(
@nargs=9,
@blob="00000000 01000000 01000000 01000000 01000000 01000000 02000000 03000000 04000000",
);
etAngle(@nargs=3, @blob="00000000 00000000 00000000");
etSpeedD(
@nargs=9,
@blob="00000000 00000040 00004040 00008040 0000a040 0000c03f 0000c03f 0000c03f 0000c03f",
);
etEx(
@nargs=8,
@blob="00000000 00000000 01000000 02000000 01000000 c1bdf0ff f02374c9 f02374c9",
);
pushi(@mask=0b1, @nargs=1, @blob="f0d8ffff");
pushi(@nargs=1, @blob="1e000000");
modi(@blob="");
wait(@mask=0b1, @nargs=1, @blob="ffffffff");
jmp(@nargs=2, @blob="4c000000 00000000");
etOn(@nargs=1, @blob="00000000");
diffWait(@nargs=4, @blob="78000000 3c000000 1e000000 14000000");
pushi(@nargs=1, @blob="01000000");
jmpNeq(@nargs=2, @blob="b8ffffff 00000000");
ret(@blob="");
}
void Crow01() {
stackAlloc(@nargs=1, @blob="04000000");
anmSelect(@nargs=1, @blob="01000000");
anmSetSprite(@nargs=2, @blob="01000000 2e000000");
anmSelect(@nargs=1, @blob="02000000");
anmSetMain(@nargs=2, @blob="00000000 0c000000");
setHurtbox(@nargs=2, @blob="0000c041 0000c041");
setHitbox(@nargs=2, @blob="00008041 00008041");
dropClear(@blob="");
dropExtra(@nargs=2, @blob="03000000 02000000");
dropExtra(@nargs=2, @blob="02000000 05000000");
dropArea(@nargs=2, @blob="00004042 00004042");
pushf(@nargs=1, @blob="00000000");
pushf(@mask=0b1, @nargs=1, @blob="00381cc6");
pushi(@nargs=1, @blob="20000000");
divf(@blob="");
addf(@blob="");
moveVel(@mask=0b1, @nargs=2, @blob="000080bf 00008040");
pushi(@nargs=1, @blob="0a000000");
pushi(@mask=0b1, @nargs=1, @blob="f0d8ffff");
pushi(@nargs=1, @blob="1e000000");
modi(@blob="");
addi(@blob="");
wait(@mask=0b1, @nargs=1, @blob="ffffffff");
moveVelTime(@nargs=4, @blob="32000000 00000000 f02374c9 00000000");
wait(@nargs=1, @blob="32000000");
callAsync(@nargs=1, @blob="0c000000 43726f77 30315f61 74000000");
wait(@nargs=1, @blob="c8000000");
moveVelTime(@nargs=4, @blob="3c000000 00000000 f02374c9 00008040");
+600: // 600
nop(@blob="");
jmp(@nargs=2, @blob="2c000000 58020000");
wait(@nargs=1, @blob="e8030000");
pushi(@nargs=1, @blob="01000000");
jmpNeq(@nargs=2, @blob="d8ffffff 58020000");
delete(@blob="");
}
void Crow01_at() {
stackAlloc(@nargs=1, @blob="0c000000");
etNew(@nargs=1, @blob="00000000");
etAim(@nargs=2, @blob="00000000 03000000");
etSprite(@nargs=3, @blob="00000000 04000000 06000000");
etCountD(
@nargs=9,
@blob="00000000 05000000 05000000 05000000 05000000 01000000 01000000 01000000 01000000",
);
etAngle(@nargs=3, @blob="00000000 db0fc93f 00000000");
etSpeedD(
@nargs=9,
@blob="00000000 00004040 00004040 00008040 0000a040 0000c03f 0000c03f 0000c03f 0000c03f",
);
etEx(
@nargs=8,
@blob="00000000 00000000 01000000 02000000 01000000 c1bdf0ff f02374c9 f02374c9",
);
jmp(@nargs=2, @blob="4c000000 00000000");
etOn(@nargs=1, @blob="00000000");
diffWait(@nargs=4, @blob="0c000000 06000000 05000000 04000000");
pushi(@nargs=1, @blob="01000000");
jmpNeq(@nargs=2, @blob="b8ffffff 00000000");
ret(@blob="");
}
void Crow02() {
stackAlloc(@nargs=1, @blob="04000000");
anmSelect(@nargs=1, @blob="01000000");
anmSetSprite(@nargs=2, @blob="01000000 2e000000");
anmSelect(@nargs=1, @blob="02000000");
anmSetMain(@nargs=2, @blob="00000000 0c000000");
setHurtbox(@nargs=2, @blob="0000c041 0000c041");
setHitbox(@nargs=2, @blob="00008041 00008041");
dropClear(@blob="");
dropExtra(@nargs=2, @blob="03000000 08000000");
dropExtra(@nargs=2, @blob="02000000 05000000");
dropArea(@nargs=2, @blob="00004042 00004042");
pushf(@nargs=1, @blob="00000000");
pushf(@mask=0b1, @nargs=1, @blob="00381cc6");
pushi(@nargs=1, @blob="20000000");
divf(@blob="");
addf(@blob="");
moveVel(@mask=0b1, @nargs=2, @blob="000080bf 00008040");
pushi(@nargs=1, @blob="0a000000");
pushi(@mask=0b1, @nargs=1, @blob="f0d8ffff");
pushi(@nargs=1, @blob="1e000000");
modi(@blob="");
addi(@blob="");
wait(@mask=0b1, @nargs=1, @blob="ffffffff");
moveVelTime(@nargs=4, @blob="32000000 00000000 f02374c9 00000000");
wait(@nargs=1, @blob="32000000");
callAsync(@nargs=1, @blob="0c000000 43726f77 30325f61 74000000");
wait(@nargs=1, @blob="c8000000");
moveVelTime(@nargs=4, @blob="3c000000 00000000 f02374c9 00008040");
+600: // 600
nop(@blob="");
jmp(@nargs=2, @blob="2c000000 58020000");
wait(@nargs=1, @blob="e8030000");
pushi(@nargs=1, @blob="01000000");
jmpNeq(@nargs=2, @blob="d8ffffff 58020000");
delete(@blob="");
}
void Crow02_at() {
stackAlloc(@nargs=1, @blob="0c000000");
etNew(@nargs=1, @blob="00000000");
etAim(@nargs=2, @blob="00000000 03000000");
etSprite(@nargs=3, @blob="00000000 04000000 06000000");
etCountD(
@nargs=9,
@blob="00000000 05000000 05000000 05000000 05000000 01000000 01000000 01000000 01000000",
);
etAngle(@nargs=3, @blob="00000000 db0fc93f 00000000");
etSpeedD(
@nargs=9,
@blob="00000000 00004040 00004040 00008040 0000a040 0000c03f 0000c03f 0000c03f 0000c03f",
);
etEx(
@nargs=8,
@blob="00000000 00000000 01000000 02000000 01000000 c1bdf0ff f02374c9 f02374c9",
);
jmp(@nargs=2, @blob="4c000000 00000000");
etOn(@nargs=1, @blob="00000000");
diffWait(@nargs=4, @blob="0c000000 06000000 05000000 04000000");
pushi(@nargs=1, @blob="01000000");
jmpNeq(@nargs=2, @blob="b8ffffff 00000000");
ret(@blob="");
}
void Crow03() {
stackAlloc(@nargs=1, @blob="04000000");
anmSelect(@nargs=1, @blob="01000000");
anmSetSprite(@nargs=2, @blob="01000000 2e000000");
anmSelect(@nargs=1, @blob="02000000");
anmSetMain(@nargs=2, @blob="00000000 0c000000");
setHurtbox(@nargs=2, @blob="0000c041 0000c041");
setHitbox(@nargs=2, @blob="00008041 00008041");
pushf(@nargs=1, @blob="00004040");
pushf(@mask=0b1, @nargs=1, @blob="003c1cc6");
pushf(@nargs=1, @blob="00000040");
mulf(@blob="");
addf(@blob="");
pushf(@nargs=1, @blob="00000000");
pushf(@mask=0b1, @nargs=1, @blob="00381cc6");
pushi(@nargs=1, @blob="20000000");
divf(@blob="");
addf(@blob="");
moveVel(@mask=0b11, @nargs=2, @blob="000080bf 000080bf");
pushf(@nargs=1, @blob="00004040");
pushf(@mask=0b1, @nargs=1, @blob="003c1cc6");
pushf(@nargs=1, @blob="00000040");
mulf(@blob="");
addf(@blob="");
moveVelTime(
@mask=0b1000,
@nargs=4,
@blob="3c000000 00000000 f02374c9 000080bf",
);
callAsync(@nargs=1, @blob="0c000000 43726f77 30335f61 74000000");
+600: // 600
nop(@blob="");
jmp(@nargs=2, @blob="2c000000 58020000");
wait(@nargs=1, @blob="e8030000");
pushi(@nargs=1, @blob="01000000");
jmpNeq(@nargs=2, @blob="d8ffffff 58020000");
delete(@blob="");
}
void Crow03_at() {
stackAlloc(@nargs=1, @blob="0c000000");
etNew(@nargs=1, @blob="00000000");
etAim(@nargs=2, @blob="00000000 02000000");
etSprite(@nargs=3, @blob="00000000 0c000000 03000000");
etCount(@nargs=3, @blob="00000000 01000000 01000000");
etAngle(@mask=0b10, @nargs=3, @blob="00000000 00381cc6 00000000");
etSpeed(@nargs=3, @blob="00000000 cdcccc3d 0000c03f");
etEx(
@nargs=8,
@blob="00000000 00000000 01000000 02000000 01000000 c1bdf0ff f02374c9 f02374c9",
);
etEx(
@nargs=8,
@blob="00000000 01000000 00000000 04000000 78000000 c1bdf0ff 8988083d db0fc93f",
);
pushi(@mask=0b1, @nargs=1, @blob="f0d8ffff");
pushi(@nargs=1, @blob="1e000000");
modi(@blob="");
wait(@mask=0b1, @nargs=1, @blob="ffffffff");
jmp(@nargs=2, @blob="4c000000 00000000");
etOn(@nargs=1, @blob="00000000");
diffWait(@nargs=4, @blob="3c000000 1e000000 14000000 0a000000");
pushi(@nargs=1, @blob="01000000");
jmpNeq(@nargs=2, @blob="b8ffffff 00000000");
ret(@blob="");
}
void GPhantom00() {
stackAlloc(@nargs=1, @blob="04000000");
anmSelect(@nargs=1, @blob="01000000");
dropMain(@nargs=1, @blob="02000000");
anmSetSprite(@nargs=2, @blob="01000000 2f000000");
call(
@nargs=3,
@blob="0c000000 5068616e 746f6d30 30000000 69690000 60000000 69690000 01000000",
);
delete(@blob="");
}
void GPhantom01() {
stackAlloc(@nargs=1, @blob="04000000");
anmSelect(@nargs=1, @blob="01000000");
anmSetSprite(@nargs=2, @blob="01000000 2f000000");
call(
@nargs=3,
@blob="0c000000 5068616e 746f6d30 31000000 69690000 60000000 69690000 01000000",
);
delete(@blob="");
}
void MainBossDebug() {
stackAlloc(@nargs=1, @blob="00000000");
+60: // 60
dialogRead(@nargs=1, @blob="ffffffff");
dialogWait(@blob="");
enmCreateA(
@nargs=6,
@blob="08000000 426f7373 00000000 00005843 00008042 28000000 e8030000 01000000",
);
ins_500(@nargs=1, @blob="64000000");
dialogWait(@blob="");
deathWait(@blob="");
+60: // 120
dialogRead(@nargs=1, @blob="01000000");
dialogWait(@blob="");
ret(@blob="");
ret(@blob="");
}
void MainMBossDebug() {
stackAlloc(@nargs=1, @blob="00000000");
playSound(@nargs=1, @blob="35000000");
dialogRead(@nargs=1, @blob="02000000");
enmCreateA(
@nargs=6,
@blob="08000000 4d426f73 73000000 00004043 000000c2 28000000 10270000 01000000",
);
jmp(@nargs=2, @blob="2c000000 00000000");
wait(@nargs=1, @blob="e8030000");
pushi(@nargs=1, @blob="01000000");
jmpNeq(@nargs=2, @blob="d8ffffff 00000000");
ret(@blob="");
}
void MainMsgDebug() {
stackAlloc(@nargs=1, @blob="00000000");
ins_500(@nargs=1, @blob="64000000");
+120: // 120
dialogRead(@nargs=1, @blob="00000000");
dialogWait(@blob="");
+1: // 121
dialogWait(@blob="");
+60: // 181
dialogRead(@nargs=1, @blob="01000000");
dialogWait(@blob="");
jmp(@nargs=2, @blob="28000000 55100000");
+4000: // 4181
nop(@blob="");
pushi(@nargs=1, @blob="01000000");
jmpNeq(@nargs=2, @blob="dcffffff b5000000");
ret(@blob="");
}
void MainSub00() {
stackAlloc(@nargs=1, @blob="10000000");
pushi(@nargs=1, @blob="10000000");
seti(@mask=0b1, @nargs=1, @blob="0c000000");
callAsync(@nargs=1, @blob="0c000000 4d61696e 53756230 30620000");
jmp(@nargs=2, @blob="b8000000 00000000");
pushi(@nargs=1, @blob="40000000");
pushi(@mask=0b1, @nargs=1, @blob="0c000000");
pushi(@nargs=1, @blob="08000000");
muli(@blob="");
addi(@blob="");
enmCreate(
@mask=0b100,
@nargs=6,
@blob="08000000 43726f77 30300000 000060c3 000080bf 32000000 e8030000 01000000",
);
wait(@nargs=1, @blob="0a000000");
deci(@mask=0b1, @nargs=1, @blob="0c000000");
jmpNeq(@nargs=2, @blob="4cffffff 00000000");
ret(@blob="");
}
void MainSub00b() {
stackAlloc(@nargs=1, @blob="10000000");
pushi(@nargs=1, @blob="10000000");
seti(@mask=0b1, @nargs=1, @blob="0c000000");
jmp(@nargs=2, @blob="b8000000 00000000");
pushi(@nargs=1, @blob="40000000");
pushi(@mask=0b1, @nargs=1, @blob="0c000000");
pushi(@nargs=1, @blob="08000000");
muli(@blob="");
addi(@blob="");
enmCreateM(
@mask=0b100,
@nargs=6,
@blob="08000000 43726f77 30300000 00006043 000080bf 32000000 e8030000 01000000",
);
wait(@nargs=1, @blob="0a000000");
deci(@mask=0b1, @nargs=1, @blob="0c000000");
jmpNeq(@nargs=2, @blob="4cffffff 00000000");
ret(@blob="");
}
void MainSub01() {
stackAlloc(@nargs=1, @blob="10000000");
pushi(@nargs=1, @blob="06000000");
seti(@mask=0b1, @nargs=1, @blob="0c000000");
callAsync(@nargs=1, @blob="0c000000 4d61696e 53756230 31620000");
jmp(@nargs=2, @blob="b8000000 00000000");
pushi(@nargs=1, @blob="80000000");
pushf(@mask=0b1, @nargs=1, @blob="000c1cc6");
pushi(@nargs=1, @blob="40000000");
mulf(@blob="");
addf(@blob="");
enmCreate(
@mask=0b100,
@nargs=6,
@blob="08000000 43726f77 30310000 000060c3 000080bf c8000000 e8030000 02000000",
);
wait(@nargs=1, @blob="28000000");
deci(@mask=0b1, @nargs=1, @blob="0c000000");
jmpNeq(@nargs=2, @blob="4cffffff 00000000");
ret(@blob="");
}
void MainSub01b() {
stackAlloc(@nargs=1, @blob="10000000");
pushi(@nargs=1, @blob="06000000");
seti(@mask=0b1, @nargs=1, @blob="0c000000");
jmp(@nargs=2, @blob="b8000000 00000000");
pushi(@nargs=1, @blob="80000000");
pushf(@mask=0b1, @nargs=1, @blob="000c1cc6");
pushi(@nargs=1, @blob="40000000");
mulf(@blob="");
addf(@blob="");
enmCreateM(
@mask=0b100,
@nargs=6,
@blob="08000000 43726f77 30310000 00006043 000080bf c8000000 e8030000 02000000",
);
wait(@nargs=1, @blob="28000000");
deci(@mask=0b1, @nargs=1, @blob="0c000000");
jmpNeq(@nargs=2, @blob="4cffffff 00000000");
ret(@blob="");
}
void MainSub02() {
stackAlloc(@nargs=1, @blob="10000000");
pushi(@nargs=1, @blob="0c000000");
seti(@mask=0b1, @nargs=1, @blob="0c000000");
callAsync(@nargs=1, @blob="0c000000 4d61696e 53756230 32620000");
jmp(@nargs=2, @blob="b0000000 00000000");
pushf(@nargs=1, @blob="00000000");
setf(@mask=0b1, @nargs=1, @blob="00f01bc6");
pushf(@nargs=1, @blob="dc0f4940");
setf(@mask=0b1, @nargs=1, @blob="00f41bc6");
enmCreate(
@nargs=6,
@blob="0c000000 42506861 6e746f6d 30300000 00006043 00000043 64000000 e8030000 02000000",
);
wait(@nargs=1, @blob="14000000");
deci(@mask=0b1, @nargs=1, @blob="0c000000");
jmpNeq(@nargs=2, @blob="54ffffff 00000000");
wait(@nargs=1, @blob="f0000000");
pushi(@nargs=1, @blob="0c000000");
seti(@mask=0b1, @nargs=1, @blob="0c000000");
jmp(@nargs=2, @blob="b0000000 00000000");
pushf(@nargs=1, @blob="00000000");
setf(@mask=0b1, @nargs=1, @blob="00f01bc6");
pushf(@nargs=1, @blob="d80fc93f");
setf(@mask=0b1, @nargs=1, @blob="00f41bc6");
enmCreate(
@nargs=6,
@blob="0c000000 42506861 6e746f6d 30300000 00008042 000000c2 64000000 e8030000 02000000",
);
wait(@nargs=1, @blob="14000000");
deci(@mask=0b1, @nargs=1, @blob="0c000000");
jmpNeq(@nargs=2, @blob="54ffffff 00000000");
wait(@nargs=1, @blob="78000000");
pushi(@nargs=1, @blob="0c000000");
seti(@mask=0b1, @nargs=1, @blob="0c000000");
jmp(@nargs=2, @blob="b0000000 00000000");
pushf(@nargs=1, @blob="dc0f4940");
setf(@mask=0b1, @nargs=1, @blob="00f01bc6");
pushf(@nargs=1, @blob="00000000");
setf(@mask=0b1, @nargs=1, @blob="00f41bc6");
enmCreate(
@nargs=6,
@blob="0c000000 42506861 6e746f6d 30300000 000060c3 00000043 32000000 e8030000 02000000",
);
wait(@nargs=1, @blob="14000000");
deci(@mask=0b1, @nargs=1, @blob="0c000000");
jmpNeq(@nargs=2, @blob="54ffffff 00000000");
wait(@nargs=1, @blob="3c000000");
pushi(@nargs=1, @blob="0c000000");
seti(@mask=0b1, @nargs=1, @blob="0c000000");
jmp(@nargs=2, @blob="b0000000 00000000");
pushf(@nargs=1, @blob="dc0f4940");
setf(@mask=0b1, @nargs=1, @blob="00f01bc6");
pushf(@nargs=1, @blob="d80fc93f");
setf(@mask=0b1, @nargs=1, @blob="00f41bc6");
enmCreate(
@nargs=6,
@blob="0c000000 42506861 6e746f6d 30300000 000080c2 000000c2 32000000 e8030000 02000000",
);
wait(@nargs=1, @blob="14000000");
deci(@mask=0b1, @nargs=1, @blob="0c000000");
jmpNeq(@nargs=2, @blob="54ffffff 00000000");
wait(@nargs=1, @blob="3c000000");
pushi(@nargs=1, @blob="0c000000");
seti(@mask=0b1, @nargs=1, @blob="0c000000");
jmp(@nargs=2, @blob="b0000000 00000000");
pushf(@nargs=1, @blob="00000000");
setf(@mask=0b1, @nargs=1, @blob="00f01bc6");
pushf(@nargs=1, @blob="dc0f4940");
setf(@mask=0b1, @nargs=1, @blob="00f41bc6");
enmCreate(
@nargs=6,
@blob="0c000000 42506861 6e746f6d 30300000 00006043 00000043 32000000 e8030000 02000000",
);
wait(@nargs=1, @blob="14000000");
deci(@mask=0b1, @nargs=1, @blob="0c000000");
jmpNeq(@nargs=2, @blob="54ffffff 00000000");
pushi(@nargs=1, @blob="0c000000");
seti(@mask=0b1, @nargs=1, @blob="0c000000");
jmp(@nargs=2, @blob="b0000000 00000000");
pushf(@nargs=1, @blob="00000000");
setf(@mask=0b1, @nargs=1, @blob="00f01bc6");
pushf(@nargs=1, @blob="d80fc93f");
setf(@mask=0b1, @nargs=1, @blob="00f41bc6");
enmCreate(
@nargs=6,
@blob="0c000000 42506861 6e746f6d 30300000 00008042 000000c2 32000000 e8030000 02000000",
);
wait(@nargs=1, @blob="14000000");
deci(@mask=0b1, @nargs=1, @blob="0c000000");
jmpNeq(@nargs=2, @blob="54ffffff 00000000");
ret(@blob="");
}
void MainSub02b() {
stackAlloc(@nargs=1, @blob="10000000");
pushi(@nargs=1, @blob="0c000000");
seti(@mask=0b1, @nargs=1, @blob="0c000000");
wait(@nargs=1, @blob="f0000000");
pushi(@nargs=1, @blob="0c000000");
seti(@mask=0b1, @nargs=1, @blob="0c000000");
jmp(@nargs=2, @blob="b0000000 00000000");
pushf(@nargs=1, @blob="dc0f4940");
setf(@mask=0b1, @nargs=1, @blob="00f01bc6");
pushf(@nargs=1, @blob="00000000");
setf(@mask=0b1, @nargs=1, @blob="00f41bc6");
enmCreate(
@nargs=6,
@blob="0c000000 42506861 6e746f6d 30300000 000060c3 00000043 64000000 e8030000 02000000",
);
wait(@nargs=1, @blob="14000000");
deci(@mask=0b1, @nargs=1, @blob="0c000000");
jmpNeq(@nargs=2, @blob="54ffffff 00000000");
wait(@nargs=1, @blob="f0000000");
pushi(@nargs=1, @blob="0c000000");
seti(@mask=0b1, @nargs=1, @blob="0c000000");
jmp(@nargs=2, @blob="b0000000 00000000");
pushf(@nargs=1, @blob="dc0f4940");
setf(@mask=0b1, @nargs=1, @blob="00f01bc6");
pushf(@nargs=1, @blob="d80fc93f");
setf(@mask=0b1, @nargs=1, @blob="00f41bc6");
enmCreate(
@nargs=6,
@blob="0c000000 42506861 6e746f6d 30300000 000080c2 000000c2 64000000 e8030000 02000000",
);
wait(@nargs=1, @blob="14000000");
deci(@mask=0b1, @nargs=1, @blob="0c000000");
jmpNeq(@nargs=2, @blob="54ffffff 00000000");
wait(@nargs=1, @blob="3c000000");
pushi(@nargs=1, @blob="0c000000");
seti(@mask=0b1, @nargs=1, @blob="0c000000");
jmp(@nargs=2, @blob="b0000000 00000000");
pushf(@nargs=1, @blob="00000000");
setf(@mask=0b1, @nargs=1, @blob="00f01bc6");
pushf(@nargs=1, @blob="dc0f4940");
setf(@mask=0b1, @nargs=1, @blob="00f41bc6");
enmCreate(
@nargs=6,
@blob="0c000000 42506861 6e746f6d 30300000 00006043 00000043 32000000 e8030000 02000000",
);
wait(@nargs=1, @blob="14000000");
deci(@mask=0b1, @nargs=1, @blob="0c000000");
jmpNeq(@nargs=2, @blob="54ffffff 00000000");
wait(@nargs=1, @blob="3c000000");
pushi(@nargs=1, @blob="0c000000");
seti(@mask=0b1, @nargs=1, @blob="0c000000");
jmp(@nargs=2, @blob="b0000000 00000000");
pushf(@nargs=1, @blob="00000000");
setf(@mask=0b1, @nargs=1, @blob="00f01bc6");
pushf(@nargs=1, @blob="d80fc93f");
setf(@mask=0b1, @nargs=1, @blob="00f41bc6");
enmCreate(
@nargs=6,
@blob="0c000000 42506861 6e746f6d 30300000 00008042 000000c2 32000000 e8030000 02000000",
);
wait(@nargs=1, @blob="14000000");
deci(@mask=0b1, @nargs=1, @blob="0c000000");
jmpNeq(@nargs=2, @blob="54ffffff 00000000");
pushi(@nargs=1, @blob="0c000000");
seti(@mask=0b1, @nargs=1, @blob="0c000000");
jmp(@nargs=2, @blob="b0000000 00000000");
pushf(@nargs=1, @blob="dc0f4940");
setf(@mask=0b1, @nargs=1, @blob="00f01bc6");
pushf(@nargs=1, @blob="00000000");
setf(@mask=0b1, @nargs=1, @blob="00f41bc6");
enmCreate(
@nargs=6,
@blob="0c000000 42506861 6e746f6d 30300000 000060c3 00000043 32000000 e8030000 02000000",
);
wait(@nargs=1, @blob="14000000");
deci(@mask=0b1, @nargs=1, @blob="0c000000");
jmpNeq(@nargs=2, @blob="54ffffff 00000000");
pushi(@nargs=1, @blob="0c000000");
seti(@mask=0b1, @nargs=1, @blob="0c000000");
jmp(@nargs=2, @blob="b0000000 00000000");
pushf(@nargs=1, @blob="dc0f4940");
setf(@mask=0b1, @nargs=1, @blob="00f01bc6");
pushf(@nargs=1, @blob="d80fc93f");
setf(@mask=0b1, @nargs=1, @blob="00f41bc6");
enmCreate(
@nargs=6,
@blob="0c000000 42506861 6e746f6d 30300000 000080c2 000000c2 32000000 e8030000 02000000",
);
wait(@nargs=1, @blob="14000000");
deci(@mask=0b1, @nargs=1, @blob="0c000000");
jmpNeq(@nargs=2, @blob="54ffffff 00000000");
ret(@blob="");
}
void MainSub03() {
stackAlloc(@nargs=1, @blob="10000000");
pushi(@nargs=1, @blob="0a000000");
seti(@mask=0b1, @nargs=1, @blob="0c000000");
callAsync(@nargs=1, @blob="0c000000 4d61696e 53756230 33620000");
jmp(@nargs=2, @blob="b8000000 00000000");
pushi(@nargs=1, @blob="80000000");
pushf(@mask=0b1, @nargs=1, @blob="000c1cc6");
pushi(@nargs=1, @blob="40000000");
mulf(@blob="");
addf(@blob="");
enmCreateF(
@mask=0b100,
@nargs=6,
@blob="08000000 43726f77 30320000 000060c3 000080bf c8000000 e8030000 02000000",
);
wait(@nargs=1, @blob="28000000");
deci(@mask=0b1, @nargs=1, @blob="0c000000");
jmpNeq(@nargs=2, @blob="4cffffff 00000000");
ret(@blob="");
}
void MainSub03b() {
stackAlloc(@nargs=1, @blob="10000000");
pushi(@nargs=1, @blob="0a000000");
seti(@mask=0b1, @nargs=1, @blob="0c000000");
jmp(@nargs=2, @blob="b8000000 00000000");
pushi(@nargs=1, @blob="80000000");
pushf(@mask=0b1, @nargs=1, @blob="000c1cc6");
pushi(@nargs=1, @blob="40000000");
mulf(@blob="");
addf(@blob="");
enmCreateMF(
@mask=0b100,
@nargs=6,
@blob="08000000 43726f77 30320000 00006043 000080bf c8000000 e8030000 02000000",
);
wait(@nargs=1, @blob="28000000");
deci(@mask=0b1, @nargs=1, @blob="0c000000");
jmpNeq(@nargs=2, @blob="4cffffff 00000000");
ret(@blob="");
}
void MainSub04() {
stackAlloc(@nargs=1, @blob="10000000");
pushi(@nargs=1, @blob="20000000");
seti(@mask=0b1, @nargs=1, @blob="0c000000");
callAsync(@nargs=1, @blob="0c000000 4d61696e 53756230 34620000");
jmp(@nargs=2, @blob="b8000000 00000000");
pushi(@nargs=1, @blob="60000000");
pushf(@mask=0b1, @nargs=1, @blob="000c1cc6");
pushi(@nargs=1, @blob="60000000");
mulf(@blob="");
addf(@blob="");
enmCreateF(
@mask=0b100,
@nargs=6,
@blob="08000000 43726f77 30330000 000060c3 000080bf 32000000 e8030000 02000000",
);
wait(@nargs=1, @blob="0a000000");
deci(@mask=0b1, @nargs=1, @blob="0c000000");
jmpNeq(@nargs=2, @blob="4cffffff 00000000");
ret(@blob="");
}
void MainSub04b() {
stackAlloc(@nargs=1, @blob="10000000");
pushi(@nargs=1, @blob="20000000");
seti(@mask=0b1, @nargs=1, @blob="0c000000");
jmp(@nargs=2, @blob="b8000000 00000000");
pushi(@nargs=1, @blob="60000000");
pushf(@mask=0b1, @nargs=1, @blob="000c1cc6");
pushi(@nargs=1, @blob="60000000");
mulf(@blob="");
addf(@blob="");
enmCreateMF(
@mask=0b100,
@nargs=6,
@blob="08000000 43726f77 30330000 00006043 000080bf 32000000 e8030000 02000000",
);
wait(@nargs=1, @blob="0a000000");
deci(@mask=0b1, @nargs=1, @blob="0c000000");
jmpNeq(@nargs=2, @blob="4cffffff 00000000");
ret(@blob="");
}
void MainSub05() {
stackAlloc(@nargs=1, @blob="10000000");
pushi(@nargs=1, @blob="40000000");
seti(@mask=0b1, @nargs=1, @blob="0c000000");
pushf(@nargs=1, @blob="a0e1cd3b");
setf(@mask=0b1, @nargs=1, @blob="00f41bc6");
enmCreate(
@nargs=6,
@blob="0c000000 52506861 6e746f6d 30310000 00000000 000000c2 70170000 e8030000 00000000",
);
wait(@nargs=1, @blob="08020000");
pushf(@nargs=1, @blob="a0e14dbc");
setf(@mask=0b1, @nargs=1, @blob="00f41bc6");
enmCreate(
@nargs=6,
@blob="0c000000 52506861 6e746f6d 30310000 00000000 000000c2 70170000 e8030000 00000000",
);
wait(@nargs=1, @blob="c2010000");
ret(@blob="");
}
void MapleEnemy() {
stackAlloc(@nargs=1, @blob="04000000");
flagSet(@nargs=1, @blob="20000000");
anmPlayAbs(@nargs=2, @blob="00000000 b3000000");
+3: // 3
jmp(@nargs=2, @blob="e8ffffff 00000000");
delete(@blob="");
}
void Phantom00() {
stackAlloc(@nargs=1, @blob="0c000000");
anmSelect(@nargs=1, @blob="01000000");
anmSetSprite(@mask=0b10, @nargs=2, @blob="00000000 00000000");
flagSet(@nargs=1, @blob="03000000");
setHurtbox(@nargs=2, @blob="0000c041 0000c041");
setHitbox(@nargs=2, @blob="00008041 00008041");
wait(@nargs=1, @blob="0c000000");
flagSet(@nargs=1, @blob="40000000");
flagClear(@nargs=1, @blob="03000000");
callAsync(@nargs=1, @blob="10000000 5068616e 746f6d30 305f6174 00000000");
pushf(@mask=0b1, @nargs=1, @blob="00f41bc6");
setf(@mask=0b1, @nargs=1, @blob="00000041");
moveVelRel(@mask=0b1, @nargs=2, @blob="00000041 0000c03f");
moveEllipse(
@mask=0b10001,
@nargs=6,
@blob="00f01bc6 5077d63c 00008042 00000000 00000041 00000000",
);
jmp(@nargs=2, @blob="2c000000 00000000");
wait(@nargs=1, @blob="e8030000");
pushi(@nargs=1, @blob="01000000");
jmpNeq(@nargs=2, @blob="d8ffffff 00000000");
ret(@blob="");
}
void Phantom00_at() {
stackAlloc(@nargs=1, @blob="0c000000");
etNew(@nargs=1, @blob="00000000");
etAim(@nargs=2, @blob="00000000 02000000");
etSprite(@nargs=3, @blob="00000000 01000000 04000000");
etCountD(
@nargs=9,
@blob="00000000 01000000 01000000 01000000 01000000 01000000 01000000 01000000 01000000",
);
etAngle(@nargs=3, @blob="00000000 00000000 00000000");
etSpeedD(
@nargs=9,
@blob="00000000 00006040 00008040 00009040 0000a040 9a99d93f 9a99d93f 9a99d93f 9a99d93f",
);
etEx(
@nargs=8,
@blob="00000000 00000000 01000000 02000000 01000000 c1bdf0ff f02374c9 f02374c9",
);
pushi(@mask=0b1, @nargs=1, @blob="f0d8ffff");
pushi(@nargs=1, @blob="14000000");
modi(@blob="");
wait(@mask=0b1, @nargs=1, @blob="ffffffff");
jmp(@nargs=2, @blob="9c000000 00000000");
pushf(@mask=0b1, @nargs=1, @blob="00301cc6");
pushi(@nargs=1, @blob="62010000");
lessf(@blob="");
jmpEq(@nargs=2, @blob="2c000000 00000000");
etOn(@nargs=1, @blob="00000000");
diffWait(@nargs=4, @blob="46000000 23000000 1e000000 12000000");
pushi(@nargs=1, @blob="01000000");
jmpNeq(@nargs=2, @blob="68ffffff 00000000");
ret(@blob="");
}
void Phantom01() {
stackAlloc(@nargs=1, @blob="0c000000");
anmSelect(@nargs=1, @blob="01000000");
anmSetSprite(@mask=0b10, @nargs=2, @blob="00000000 00000000");
flagSet(@nargs=1, @blob="03000000");
dropClear(@blob="");
dropExtra(@nargs=2, @blob="01000000 14000000");
dropExtra(@nargs=2, @blob="02000000 14000000");
dropArea(@nargs=2, @blob="00004042 00004042");
setHurtbox(@nargs=2, @blob="0000c041 0000c041");
setHitbox(@nargs=2, @blob="00008041 00008041");
wait(@nargs=1, @blob="0c000000");
flagSet(@nargs=1, @blob="40000000");
flagClear(@nargs=1, @blob="03000000");
pushf(@mask=0b1, @nargs=1, @blob="00f41bc6");
setf(@mask=0b1, @nargs=1, @blob="00000041");
moveVel(@nargs=2, @blob="db0fc93f 00004040");
moveVelTime(@nargs=4, @blob="78000000 00000000 f02374c9 00000000");
+120: // 120
callAsync(@nargs=1, @blob="10000000 5068616e 746f6d30 315f6174 00000000");
+600: // 720
moveVel(@nargs=2, @blob="db0fc9bf 00000000");
moveVelTime(@nargs=4, @blob="c8000000 00000000 f02374c9 00000040");
killAllAsync(@blob="");
jmp(@nargs=2, @blob="2c000000 d0020000");
wait(@nargs=1, @blob="e8030000");
pushi(@nargs=1, @blob="01000000");
jmpNeq(@nargs=2, @blob="d8ffffff d0020000");
ret(@blob="");
}
void Phantom01_at() {
stackAlloc(@nargs=1, @blob="10000000");
etNew(@nargs=1, @blob="00000000");
etAim(@nargs=2, @blob="00000000 05000000");
etSprite(@nargs=3, @blob="00000000 03000000 03000000");
etCountD(
@nargs=9,
@blob="00000000 03000000 06000000 06000000 09000000 01000000 01000000 01000000 01000000",
);
etAngle(@nargs=3, @blob="00000000 00000000 00000000");
etSpeedD(
@nargs=9,
@blob="00000000 6666e63f 00000040 00004040 00004040 9a99d93f 9a99d93f 9a99d93f 9a99d93f",
);
etEx(
@nargs=8,
@blob="00000000 00000000 01000000 02000000 00000000 c1bdf0ff f02374c9 f02374c9",
);
pushi(@mask=0b1, @nargs=1, @blob="f0d8ffff");
pushi(@nargs=1, @blob="14000000");
modi(@blob="");
wait(@mask=0b1, @nargs=1, @blob="ffffffff");
pushf(@mask=0b1, @nargs=1, @blob="00141cc6");
setf(@mask=0b1, @nargs=1, @blob="00000000");
pushf(@nargs=1, @blob="7077d63c");
setf(@mask=0b1, @nargs=1, @blob="00008040");
pushi(@nargs=1, @blob="40000000");
setf(@mask=0b1, @nargs=1, @blob="00000041");
jmp(@nargs=2, @blob="d0010000 00000000");
etDist(@mask=0b10, @nargs=2, @blob="00000000 00000041");
etAngle(@mask=0b10, @nargs=3, @blob="00000000 00000000 00000000");
etOn(@nargs=1, @blob="00000000");
pushf(@mask=0b1, @nargs=1, @blob="00000000");
pushf(@mask=0b1, @nargs=1, @blob="00008040");
subf(@blob="");
setf(@mask=0b1, @nargs=1, @blob="00000000");
pushf(@mask=0b1, @nargs=1, @blob="00008040");
pushf(@mask=0b1, @nargs=1, @blob="00f41bc6");
addf(@blob="");
setf(@mask=0b1, @nargs=1, @blob="00008040");
pushf(@mask=0b1, @nargs=1, @blob="00000041");
pushi(@nargs=1, @blob="00000000");
greaterf(@blob="");
jmpEq(@nargs=2, @blob="64000000 00000000");
pushf(@mask=0b1, @nargs=1, @blob="00000041");
pushf(@nargs=1, @blob="0000003f");
subf(@blob="");
setf(@mask=0b1, @nargs=1, @blob="00000041");
validRad(@mask=0b1, @nargs=1, @blob="00000000");
validRad(@mask=0b1, @nargs=1, @blob="00008040");
wait(@nargs=1, @blob="02000000");
pushi(@nargs=1, @blob="01000000");
jmpNeq(@nargs=2, @blob="34feffff 00000000");
ret(@blob="");
}
void RPhantom00() {
stackAlloc(@nargs=1, @blob="04000000");
anmSelect(@nargs=1, @blob="01000000");
anmSetSprite(@nargs=2, @blob="01000000 2e000000");
dropMain(@nargs=1, @blob="01000000");
call(
@nargs=3,
@blob="0c000000 5068616e 746f6d30 30000000 69690000 5e000000 69690000 01000000",
);
delete(@blob="");
}
void RPhantom01() {
stackAlloc(@nargs=1, @blob="04000000");
anmSelect(@nargs=1, @blob="01000000");
anmSetSprite(@nargs=2, @blob="01000000 2e000000");
call(
@nargs=3,
@blob="0c000000 5068616e 746f6d30 31000000 69690000 5e000000 69690000 01000000",
);
delete(@blob="");
}
void YPhantom00() {
stackAlloc(@nargs=1, @blob="04000000");
anmSelect(@nargs=1, @blob="01000000");
dropMain(@nargs=1, @blob="02000000");
anmSetSprite(@nargs=2, @blob="01000000 30000000");
call(
@nargs=3,
@blob="0c000000 5068616e 746f6d30 30000000 69690000 64000000 69690000 01000000",
);
delete(@blob="");
}
void YPhantom01() {
stackAlloc(@nargs=1, @blob="04000000");
anmSelect(@nargs=1, @blob="01000000");
anmSetSprite(@nargs=2, @blob="01000000 30000000");
call(
@nargs=3,
@blob="0c000000 5068616e 746f6d30 31000000 69690000 64000000 69690000 01000000",
);
delete(@blob="");
}
void main() {
stackAlloc(@nargs=1, @blob="0c000000");
flagSet(@nargs=1, @blob="20000000");
enmCreateA(
@nargs=6,
@blob="0c000000 4d61706c 65456e65 6d790000 00000000 000080c1 14000000 e8030000 02000000",
);
wait(@nargs=1, @blob="3c000000");
wait(@nargs=1, @blob="5a000000");
call(@nargs=1, @blob="0c000000 4d61696e 53756230 30000000");
wait(@nargs=1, @blob="18010000");
call(@nargs=1, @blob="0c000000 4d61696e 53756230 31000000");
wait(@nargs=1, @blob="c8000000");
call(@nargs=1, @blob="0c000000 4d61696e 53756230 32000000");
wait(@nargs=1, @blob="d2000000");
playSound(@nargs=1, @blob="35000000");
dialogRead(@nargs=1, @blob="02000000");
enmCreateA(
@nargs=6,
@blob="08000000 4d426f73 73000000 00004043 000000c2 28000000 10270000 01000000",
);
dialogWait(@blob="");
wait(@nargs=1, @blob="e8030000");
call(@nargs=1, @blob="0c000000 4d61696e 53756230 33000000");
wait(@nargs=1, @blob="c8000000");
call(@nargs=1, @blob="0c000000 4d61696e 53756230 34000000");
wait(@nargs=1, @blob="c8000000");
call(@nargs=1, @blob="0c000000 4d61696e 53756230 35000000");
wait(@nargs=1, @blob="68010000");
dialogRead(@nargs=1, @blob="00000000");
dialogWait(@blob="");
enmCreateA(
@nargs=6,
@blob="08000000 426f7373 00000000 000058c3 00008042 28000000 e8030000 01000000",
);
deathWait(@blob="");
dialogRead(@nargs=1, @blob="01000000");
dialogWait(@blob="");
jmp(@nargs=2, @blob="2c000000 00000000");
wait(@nargs=1, @blob="e8030000");
pushi(@nargs=1, @blob="01000000");
jmpNeq(@nargs=2, @blob="d8ffffff 00000000");
+40000: // 40000
nop(@blob="");
delete(@blob="");
}