touhou-reimpl/research/stage06mboss.tecl

227 lines
8.3 KiB
Plaintext

#pragma mapfile "utils/th11.eclm"
meta {}
void MBoss() {
stackAlloc(@nargs=1, @blob="10000000");
setBoss(@nargs=1, @blob="00000000");
anmSelect(@nargs=1, @blob="00000000");
anmSetSprite(@nargs=2, @blob="02000000 aa000000");
anmSelect(@nargs=1, @blob="02000000");
anmSetMain(@nargs=2, @blob="00000000 07000000");
flagSet(@nargs=1, @blob="40000000");
setHurtbox(@nargs=2, @blob="00004042 00004042");
setHitbox(@nargs=2, @blob="00002042 00002042");
lifeSet(@nargs=1, @blob="d0070000");
lifeMarker(@nargs=3, @blob="00000000 0000fa44 80a0ffff");
pushi(@nargs=1, @blob="01000000");
seti(@mask=0b1, @nargs=1, @blob="25d9ffff");
setChapter(@nargs=1, @blob="06000000");
movePosTime(@nargs=4, @blob="3c000000 04000000 00000000 00000043");
wait(@nargs=1, @blob="46000000");
playSound(@nargs=1, @blob="29000000");
anmSetSprite(@nargs=2, @blob="00000000 23000000");
+60: // 60
dialogWait(@blob="");
anmSetMain(@nargs=2, @blob="00000000 1b000000");
moveLimit(@nargs=4, @blob="00000000 00000043 00008c43 00008041");
playSound(@nargs=1, @blob="29000000");
fog(@nargs=2, @blob="00002043 00808000");
anmSelect(@nargs=1, @blob="00000000");
anmSetSprite(@nargs=2, @blob="01000000 5c000000");
anmSelect(@nargs=1, @blob="02000000");
call(@nargs=1, @blob="0c000000 4d426f73 73436172 64310000");
jmp(@nargs=2, @blob="2c000000 3c000000");
wait(@nargs=1, @blob="e8030000");
pushi(@nargs=1, @blob="01000000");
jmpNeq(@nargs=2, @blob="d8ffffff 3c000000");
delete(@blob="");
}
void MBossCard1() {
stackAlloc(@nargs=1, @blob="14000000");
setInterrupt(
@nargs=4,
@blob="00000000 00000000 ac080000 08000000 426f7373 32000000",
);
spell(
@nargs=4,
@blob="8a000000 ac080000 00000000 14000000 e01a1c4a 724f1836 e67d0ff8 65661ea6 e61885ac",
);
setChapter(@nargs=1, @blob="0f000000");
lifeSet(@nargs=1, @blob="d0070000");
lifeMarker(@nargs=3, @blob="00000000 0000fa44 80a0ffff");
setInterrupt(
@nargs=4,
@blob="00000000 00000000 ac080000 0c000000 4d426f73 73446561 64000000",
);
killAllAsync(@blob="");
setInvuln(@nargs=1, @blob="3c000000");
enmCreate(
@nargs=6,
@blob="0c000000 45636c5f 45744272 65616b00 00000000 00000000 0f270000 00000000 00000000",
);
enmKillAll(@blob="");
pushi(@nargs=1, @blob="01000000");
seti(@mask=0b1, @nargs=1, @blob="25d9ffff");
moveLimitReset(@blob="");
+30: // 30
anmPlay(@nargs=2, @blob="00000000 83000000");
+60: // 90
nop(@blob="");
flagSet(@nargs=1, @blob="0c000000");
pushi(@nargs=1, @blob="32000000");
seti(@mask=0b1, @nargs=1, @blob="10000000");
jmp(@nargs=2, @blob="64020000 5a000000");
pushf(@nargs=1, @blob="7077d63c");
setf(@mask=0b1, @nargs=1, @blob="00f41bc6");
pushf(@nargs=1, @blob="7077d63b");
setf(@mask=0b1, @nargs=1, @blob="00f01bc6");
pushi(@nargs=1, @blob="19000000");
seti(@mask=0b1, @nargs=1, @blob="ffd8ffff");
pushi(@nargs=1, @blob="00000000");
seti(@mask=0b1, @nargs=1, @blob="00d9ffff");
callAsync(@nargs=1, @blob="10000000 4d426f73 73436172 64315f61 74000000");
wait(@mask=0b1, @nargs=1, @blob="10000000");
pushf(@nargs=1, @blob="7077d6bc");
setf(@mask=0b1, @nargs=1, @blob="00f41bc6");
pushf(@nargs=1, @blob="7077d6bb");
setf(@mask=0b1, @nargs=1, @blob="00f01bc6");
pushi(@nargs=1, @blob="12000000");
seti(@mask=0b1, @nargs=1, @blob="ffd8ffff");
pushi(@nargs=1, @blob="01000000");
seti(@mask=0b1, @nargs=1, @blob="00d9ffff");
callAsync(@nargs=1, @blob="10000000 4d426f73 73436172 64315f61 74000000");
wait(@mask=0b1, @nargs=1, @blob="10000000");
pushi(@mask=0b1, @nargs=1, @blob="10000000");
pushi(@nargs=1, @blob="1e000000");
greateri(@blob="");
jmpEq(@nargs=2, @blob="64000000 5a000000");
pushi(@mask=0b1, @nargs=1, @blob="10000000");
pushi(@nargs=1, @blob="04000000");
subi(@blob="");
seti(@mask=0b1, @nargs=1, @blob="10000000");
pushi(@nargs=1, @blob="01000000");
jmpNeq(@nargs=2, @blob="a0fdffff 5a000000");
ret(@blob="");
}
void MBossCard1_at() {
stackAlloc(@nargs=1, @blob="18000000");
etNew(@mask=0b1, @nargs=1, @blob="00d9ffff");
etAim(@mask=0b1, @nargs=2, @blob="00d9ffff 03000000");
etSprite(@mask=0b11, @nargs=3, @blob="00d9ffff ffd8ffff 00000000");
etCountD(
@mask=0b1,
@nargs=9,
@blob="00d9ffff 0c000000 18000000 1a000000 1c000000 01000000 01000000 01000000 01000000",
);
etAngle(@mask=0b1, @nargs=3, @blob="00d9ffff 00000000 00000000");
etSpeedD(
@mask=0b1,
@nargs=9,
@blob="00d9ffff 0000e03f 0000e03f 0000e03f 0000e03f 0000c03f 0000c03f 0000c03f 0000c03f",
);
etEx(
@mask=0b1,
@nargs=8,
@blob="00d9ffff 00000000 01000000 02000000 01000000 c1bdf0ff f02374c9 f02374c9",
);
etEx(
@mask=0b1,
@nargs=8,
@blob="00d9ffff 02000000 00000000 04000000 3c000000 c1bdf0ff 8988883c f02374c9",
);
pushi(@nargs=1, @blob="0c000000");
seti(@mask=0b1, @nargs=1, @blob="0c000000");
pushi(@nargs=1, @blob="0c000000");
setf(@mask=0b1, @nargs=1, @blob="00000000");
pushi(@nargs=1, @blob="64000000");
seti(@mask=0b1, @nargs=1, @blob="10000000");
pushf(@nargs=1, @blob="d80fc93f");
setf(@mask=0b1, @nargs=1, @blob="00008040");
pushf(@mask=0b1, @nargs=1, @blob="00f41bc6");
setf(@mask=0b1, @nargs=1, @blob="00000041");
pushi(@mask=0b1, @nargs=1, @blob="00d9ffff");
seti(@mask=0b1, @nargs=1, @blob="14000000");
jmp(@nargs=2, @blob="88010000 00000000");
etEx(
@mask=0b1,
@nargs=8,
@blob="14000000 01000000 00000000 00100000 1e000000 c1bdf0ff f02374c9 f02374c9",
);
etDist(@mask=0b11, @nargs=2, @blob="14000000 00000000");
etAngle(@mask=0b11, @nargs=3, @blob="14000000 00008040 00000000");
etOn(@mask=0b1, @nargs=1, @blob="14000000");
pushf(@mask=0b1, @nargs=1, @blob="00000000");
pushi(@nargs=1, @blob="0e000000");
addf(@blob="");
setf(@mask=0b1, @nargs=1, @blob="00000000");
pushi(@mask=0b1, @nargs=1, @blob="10000000");
pushi(@nargs=1, @blob="07000000");
subi(@blob="");
seti(@mask=0b1, @nargs=1, @blob="10000000");
pushf(@mask=0b1, @nargs=1, @blob="00008040");
pushf(@mask=0b1, @nargs=1, @blob="00000041");
subf(@blob="");
setf(@mask=0b1, @nargs=1, @blob="00008040");
wait(@nargs=1, @blob="08000000");
deci(@mask=0b1, @nargs=1, @blob="0c000000");
jmpNeq(@nargs=2, @blob="7cfeffff 00000000");
ret(@blob="");
}
void MBossDead() {
stackAlloc(@nargs=1, @blob="04000000");
flagSet(@nargs=1, @blob="8c000000");
anmPlay(@nargs=2, @blob="00000000 4c000000");
playSound(@nargs=1, @blob="12000000");
anmPlay(@nargs=2, @blob="00000000 8d000000");
moveVel(@mask=0b1, @nargs=2, @blob="00381cc6 cdcccc3e");
pushi(@mask=0b1, @nargs=1, @blob="fed8ffff");
pushi(@nargs=1, @blob="00000000");
eqi(@blob="");
jmpEq(@nargs=2, @blob="68000000 00000000");
enmCreate(
@nargs=6,
@blob="10000000 45636c5f 45744272 65616b32 00000000 00000000 00000000 0f270000 00000000 00000000",
);
jmp(@nargs=2, @blob="50000000 00000000");
enmCreate(
@nargs=6,
@blob="10000000 45636c5f 45744272 65616b32 5f6e6900 00000000 00000000 0f270000 00000000 00000000",
);
+60: // 60
etClearAll(@blob="");
spellEnd(@blob="");
enmKillAll(@blob="");
dropMain(@nargs=1, @blob="00000000");
pushi(@mask=0b1, @nargs=1, @blob="fed8ffff");
pushi(@nargs=1, @blob="00000000");
eqi(@blob="");
jmpEq(@nargs=2, @blob="0c010000 3c000000");
dropClear(@blob="");
pushi(@mask=0b1, @nargs=1, @blob="25d9ffff");
pushi(@nargs=1, @blob="01000000");
eqi(@blob="");
jmpEq(@nargs=2, @blob="2c000000 3c000000");
dropMain(@nargs=1, @blob="05000000");
pushi(@nargs=1, @blob="01000000");
seti(@mask=0b1, @nargs=1, @blob="25d9ffff");
dropExtra(@nargs=2, @blob="04000000 02000000");
dropExtra(@nargs=2, @blob="02000000 0a000000");
dropArea(@nargs=2, @blob="00004042 00004042");
dropItems(@blob="");
setScreenShake(@nargs=3, @blob="1e000000 0c000000 00000000");
anmPlay(@nargs=2, @blob="00000000 4c000000");
anmPlay(@nargs=2, @blob="00000000 8e000000");
playSound(@nargs=1, @blob="12000000");
setBoss(@nargs=1, @blob="ffffffff");
delete(@blob="");
delete(@blob="");
}