!eclmap # mappings from zero318 !ins_names ## Section A 0 nop 1 enemy_delete 10 ret 11 call 12 jump 13 jump_equ 14 jump_neq 15 async_call 16 async_call_id 17 async_stop_id 18 __async_unknown_flag_set 19 __async_unknown_flag_clear 20 __async_unknown_value 21 async_stop_all 30 debug_print 40 frame_enter 41 frame_leave 42 push_int 43 pop_int 44 push_float 45 pop_float 50 math_int_add 51 math_float_add 52 math_int_sub 53 math_float_sub 54 math_int_mul 55 math_float_mul 56 math_int_div 57 math_float_div 58 math_int_mod 59 cmp_int_equ 60 cmp_float_equ 61 cmp_int_neq 62 cmp_float_neq 63 cmp_int_les 64 cmp_float_les 65 cmp_int_leq 66 cmp_float_leq 67 cmp_int_gre 68 cmp_float_gre 69 cmp_int_geq 70 cmp_float_geq 71 cmp_int_not 72 cmp_float_not 73 cmp_or 74 cmp_and 75 math_bit_xor 76 math_bit_or 77 math_bit_and 78 math_post_dec 79 math_sin 80 math_cos 81 math_circle_pos 82 math_reduce_angle 83 ecl_time_sub 84 math_int_neg 85 math_float_neg ## BROKEN, uses integer NEG on a float 86 math_hypot_squared 87 math_line_angle 88 math_sqrt ## Section B 256 enemy_create_rel 257 enemy_create_abs 258 anm_source 259 anm_set_slot 260 enemy_create_rel_mirror 261 enemy_create_abs_mirror 262 anm_set_slot_main 263 anm_create_rel_front 264 anm_create_front 265 enemy_create_rel_stage 266 enemy_create_abs_stage 267 enemy_create_rel_stage_mirror 268 enemy_create_abs_stage_mirror 269 anm_play_attack 270 __enemy_create_background 271 __enemy_create_background_stage 272 anm_create_rel_back 273 anm_create_rel_front_rotated 274 anm_play_attack_ex 275 anm_interrupt_slot 276 anm_play_main 277 anm_rotate_slot 278 __nop_278 ## Section C 280 move_position_abs 281 move_position_abs_interp 282 move_position_rel 283 move_position_rel_interp 284 move_velocity_abs 285 move_velocity_abs_interp 286 move_velocity_rel 287 move_velocity_rel_interp 288 move_orbit_abs 289 move_orbit_abs_interp 290 move_orbit_rel 291 move_orbit_rel_interp 292 move_rand_interp_abs 293 move_rand_interp_rel 294 move_to_boss0_abs 295 move_to_boss0_rel 296 move_position_add_abs 297 move_position_add_rel 298 __move_position_interp_current_abs ## BROKEN, falls through to move_ellipse_rel 299 __move_position_interp_current_rel ## BROKEN, falls through to move_ellipse_rel 300 move_ellipse_abs 301 move_ellipse_abs_interp 302 move_ellipse_rel 303 move_ellipse_rel_interp 304 enemy_flag_mirror 305 move_bezier_abs 306 move_bezier_rel 307 move_stop ## Section D 320 enemy_set_hitbox 321 enemy_set_collision 322 enemy_flags_set 323 enemy_flags_clear 324 move_bounds_set 325 move_bounds_disable 326 item_bonus_slots_reset 327 item_bonus_slot_set 328 item_drop_area 329 drop_item_rewards 330 item_reward_set 331 enemy_life_set 332 boss_set 333 boss_timer_clear 334 callback_ex 335 enemy_invincible_timer 336 effect_sound 337 effect_screen_shake 338 msg_read 339 msg_wait 340 boss0_wait 341 timer_callback_sub 342 spellcard_start 343 spellcard_end 344 chapter_set 345 enemy_kill_all 346 player_protect_range 347 enemy_lifebar_color 348 spellcard_start_2 349 set_float_rank_3 ## BROKEN, can't read middle value 350 set_float_rank_5 351 math_float_rank_lerp 352 set_int_rank_3 ## BROKEN, can't read middle value 353 set_int_rank_5 354 math_int_rank_lerp 355 set_int_difficulty 356 set_float_difficulty 357 spellcard_start_difficulty 358 spellcard_start_difficulty_1 359 spellcard_start_difficulty_2 360 boss_set_life_count 361 enemy_no_collision_timer 362 spellcard_flag_timeout_set 363 __spellcard_flag_anm_unknown 364 enemy_flag_homing_disable 365 laser_clear_all 366 enemy_bomb_shield 367 game_speed_set 368 ecl_time_sub_difficulty 369 __enemy_flag_unknown_A 370 enemy_kill_id_set 371 enemy_kill_all_id 372 anm_layer_base ## Section E 400 shooter_reset 401 shoot_now 402 bullet_sprite 403 shoot_offset 404 shoot_angle 405 bullet_speed 406 bullet_count 407 shoot_aim_mode 408 bullet_sound 409 bullet_effects 410 bullet_cancel 411 shooter_copy 412 laser_line_create 413 laser_infinite_create 414 laser_offset 415 laser_target 416 laser_speed 417 laser_width 418 laser_angle 419 laser_rotate 420 bullet_cancel_radius 421 bullet_clear_radius 422 bullet_speed_rank_3 423 bullet_speed_rank_5 424 bullet_speed_rank_lerp 425 bullet_count_rank_3 426 bullet_count_rank_5 427 bullet_count_rank_lerp 428 laser_line_create_no_blend 429 laser_infinite_create_no_blend 430 set_float_angle_to_player_from_point 431 laser_line_ex_create 432 laser_infinite_ex_create 433 laser_line_ex_create_no_blend 434 laser_infinite_ex_create_no_blend 435 bullet_speed_difficulty 436 bullet_count_difficulty 437 shoot_offset_circle 438 shoot_spawn_distance 439 __shoot_unknown_A 440 enemy_fog_spawn 441 std_interrupt 442 __enemy_manager_flag_unknown_A 443 ex_ins_repeat 444 __enemy_damage_ex 445 __enemy_hitbox_ex 446 bullet_cancel_weak_radius 447 bullet_clear_weak_radius 448 laser_cancel 449 ex_ins_call 450 score_add ## Section G 500 __debug_nop_500 !ins_signatures 0 1 10 #11 P(bs=4)v(rep="G") 12 ot 13 ot 14 ot #15 P(bs=4)v(rep="G") #16 P(bs=4)Sv(rep="G") 17 S 18 S 19 S 20 SS 21 #30 p(bs=4)v(rep="g") 40 S 41 42 S 43 S 44 f 45 f 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 S 79 80 81 ffff 82 f 83 S 84 85 86 fff 87 ffff 88 256 P(bs=4)ffSSS(enum="ItemID") 257 P(bs=4)ffSSS(enum="ItemID") 258 S(enum="AnmSource") 259 S(enum="AnmSlotIndex")N 260 P(bs=4)ffSSS(enum="ItemID") 261 P(bs=4)ffSSS(enum="ItemID") 262 S(enum="AnmSlotIndex")N 263 S(enum="AnmSource")N 264 S(enum="AnmSource")N 265 P(bs=4)ffSSS(enum="ItemID") 266 P(bs=4)ffSSS(enum="ItemID") 267 P(bs=4)ffSSS(enum="ItemID") 268 P(bs=4)ffSSS(enum="ItemID") 269 S(enum="AnmSlotIndex") 270 P(bs=4)fffSSS(enum="ItemID") 271 P(bs=4)fffSSS(enum="ItemID") 272 S(enum="AnmSource")N 273 S(enum="AnmSource")Nf 274 S(enum="AnmSlotIndex")N 275 S(enum="AnmSlotIndex")S 276 277 S(enum="AnmSlotIndex")f 278 S 280 ff 281 SS(enum="InterpMode")ff 282 ff 283 SS(enum="InterpMode")ff 284 ff 285 SS(enum="InterpMode")ff 286 ff 287 SS(enum="InterpMode")ff 288 ffff 289 SS(enum="InterpMode")fff 290 ffff 291 SS(enum="InterpMode")fff 292 SSf 293 SSf 294 295 296 fff 297 fff 298 ff 299 ff 300 ffffff 301 SS(enum="InterpMode")ffffff 302 ffffff 303 SS(enum="InterpMode")ffffff 304 S(enum="bool") ## S(enum="BitBool") 305 Sffffff 306 Sffffff 307 320 ff 321 ff 322 S(hex;enum="EnemyFlagsSet") 323 S(hex;enum="EnemyFlagsClear") 324 ffff 325 326 327 S(enum="BonusDropIndex")S(enum="ItemID") 328 ff 329 330 S(enum="ItemID") 331 S 332 S(enum="BossIndex") 333 334 S(enum="CallbackSlotIndex")SSP(bs=4) 335 S 336 S(enum="SoundID") 337 SSS 338 S(enum="MsgScript") 339 340 341 S(enum="CallbackSlotIndex")P(bs=4) 342 SSSp(bs=4;mask=0x77,7,16) 343 344 S 345 346 f 347 S(enum="LifeSlotIndex")fC 348 SSSp(bs=4;mask=0x77,7,16) 349 ffff 350 fffff 351 fff 352 SSSS 353 SSSSS 354 SSS 355 SSSSS 356 fffff 357 SSSp(bs=4;mask=0x77,7,16) 358 SSSp(bs=4;mask=0x77,7,16) 359 SSSp(bs=4;mask=0x77,7,16) 360 S 361 S 362 363 364 S(enum="bool") ## S(enum="BitBool") 365 366 S(enum="bool")N ## S(enum="BitBool")N 367 f 368 SSSS 369 S(enum="bool") ## S(enum="BitBool") 370 S 371 S 372 S(enum="AnmLayerIndex") 400 S(enum="ShooterIndex") 401 S(enum="ShooterIndex") 402 S(enum="ShooterIndex")S(enum="BulletSprite")S(enum="BulletColor") 403 S(enum="ShooterIndex")ff 404 S(enum="ShooterIndex")ff 405 S(enum="ShooterIndex")ff 406 S(enum="ShooterIndex")SS 407 S(enum="ShooterIndex")S(enum="BulletAim") 408 S(enum="ShooterIndex")S(enum="SoundID")S(enum="SoundID") 409 S(enum="ShooterIndex")S(enum="BulletEffectIndex")S(enum="bool")S(enum="BulletEffectID")SSff 410 411 S(enum="ShooterIndex")S(enum="ShooterIndex") 412 SSffffff 413 SSSfffSSSSfS(hex;enum="LaserFlags") 414 Sff 415 Sff 416 Sf 417 Sf 418 Sf 419 Sf 420 f 421 f 422 S(enum="ShooterIndex")ffffff 423 S(enum="ShooterIndex")ffffffffff 424 S(enum="ShooterIndex")ffff 425 S(enum="ShooterIndex")SSSSSS 426 S(enum="ShooterIndex")SSSSSSSSSS 427 S(enum="ShooterIndex")SSSS 428 SSffffff 429 SSSfffSSSSfS(hex;enum="LaserFlags") 430 fff 431 SSffffff 432 SSSfffSSSSfS(hex;enum="LaserFlags") 433 SSffffff 434 SSSfffSSSSfS(hex;enum="LaserFlags") 435 S(enum="ShooterIndex")ffffffff 436 S(enum="ShooterIndex")SSSSSSSS 437 S(enum="ShooterIndex")ff 438 S(enum="ShooterIndex")f 439 S(enum="ShooterIndex")ff 440 fC 441 S 442 S(enum="bool") ## S(enum="BitBool") 443 S(enum="ExIns") 444 S(enum="ExDamage") 445 S(enum="ExHitbox") 446 f 447 f 448 S 449 S(enum="ExIns") 450 S 500 S !gvar_names -10000 RAND_UINT -9999 RAND_FLOAT -9998 RAND_ANGLE -9997 SELF_X -9996 SELF_Y -9995 SELF_X_ABS -9994 SELF_Y_ABS -9993 SELF_X_REL -9992 SELF_Y_REL -9991 PLAYER_X -9990 PLAYER_Y -9989 PLAYER_ANGLE -9988 BOSS_TIMER -9987 RAND_FLOAT_SIGNED -9986 SPELL_TIMEOUT -9985 I0 -9984 I1 -9983 I2 -9982 I3 -9981 F0 -9980 F1 -9979 F2 -9978 F3 -9977 SELF_X2 -9976 SELF_Y2 -9975 SELF_X2_ABS -9974 SELF_Y2_ABS -9973 SELF_X2_REL -9972 SELF_Y2_REL -9971 SELF_ANGLE_ABS -9970 SELF_ANGLE_REL -9969 SELF_SPEED_ABS -9968 SELF_SPEED_REL -9967 SELF_ORBIT_RADIUS_ABS -9966 SELF_ORBIT_RADIUS_REL -9965 PLAYER_X2 -9964 PLAYER_Y2 -9963 BOSS0_X -9962 BOSS0_Y -9961 ANM_SLOT0_ID -9960 RANK -9959 DIFFICULTY -9958 SELF_ANGLE -9957 TRUE_VAR -9956 PLAYER_ANGLE_ABS -9955 PLAYER_ANGLE_REL -9954 SELF_LIFE -9953 EASY -9952 NORMAL -9951 HARD -9950 LUNATIC -9949 PLAYER_DEATHS -9948 PLAYER_BOMBS_USED -9947 __ENEMY_MANAGER_UNKNOWN_A -9946 __ENEMY_MANAGER_UNKNOWN_B -9945 PLAYER_SHOT -9944 PLAYER_DISTANCE -9943 BOSS0_I0 -9942 BOSS0_I1 -9941 BOSS0_I2 -9940 BOSS0_I3 -9939 BOSS0_F0 -9938 BOSS0_F1 -9937 BOSS0_F2 -9936 BOSS0_F3 -9935 F4 -9934 F5 -9933 F6 -9932 F7 -1 STACK_TOP 0 LOCAL_A 4 LOCAL_B 8 LOCAL_C 12 LOCAL_D 16 LOCAL_E 20 LOCAL_F 24 LOCAL_G 28 LOCAL_H 32 LOCAL_I 36 LOCAL_J 40 LOCAL_K 44 LOCAL_L 48 LOCAL_M 52 LOCAL_N 56 LOCAL_O 60 LOCAL_P 64 LOCAL_Q 68 LOCAL_R 72 LOCAL_S 76 LOCAL_T 80 LOCAL_U 84 LOCAL_V 88 LOCAL_W 92 LOCAL_X 96 LOCAL_Y 100 LOCAL_Z !gvar_types -10000 $ -9999 % -9998 % -9997 % -9996 % -9995 % -9994 % -9993 % -9992 % -9991 % -9990 % -9989 % -9988 $ -9987 % -9986 $ -9985 $ -9984 $ -9983 $ -9982 $ -9981 % -9980 % -9979 % -9978 % -9977 % -9976 % -9975 % -9974 % -9973 % -9972 % -9971 % -9970 % -9969 % -9968 % -9967 % -9966 % -9965 % -9964 % -9963 % -9962 % -9961 $ -9960 $ -9958 % -9957 $ -9956 % -9955 % -9954 $ -9953 $ -9952 $ -9951 $ -9950 $ -9949 $ -9948 $ -9947 $ -9946 $ -9945 $ -9944 % -9943 $ -9942 $ -9941 $ -9940 $ -9939 % -9938 % -9937 % -9936 % -9935 % -9934 % -9933 % -9932 % -1 ? 0 ? 4 ? 8 ? 12 ? 16 ? 20 ? 24 ? 28 ? 32 ? 36 ? 40 ? 44 ? 48 ? 52 ? 56 ? 60 ? 64 ? 68 ? 72 ? 76 ? 80 ? 84 ? 88 ? 92 ? 96 ? 100 ? !ins_intrinsics #10 RetStack() ## Internally calls FrameLeave() #11 CallStack() #12 Jmp() #13 StackJmp(op="==") #14 StackJmp(op="!=") #15 CallStackAsync() #16 CallStackAsyncId() #40 FrameEnter() #41 FrameLeave() #42 StackPush(type="int") #43 StackPop(type="int") #44 StackPush(type="float") #45 StackPop(type="float") ## All Binary Ops/Cmps pop the right argument first, then the left, perform the op, then push the result. ## All Unary Ops pop the argument then push the result. ## All Binary/Unary Ops push a value of the type matching their arguments. ## All Binary/Unary Cmps push an int value regardless of their arguments. #50 StackBinOp(op="+";type="int") #51 StackBinOp(op="+";type="float") #52 StackBinOp(op="-";type="int") #53 StackBinOp(op="-";type="float") #54 StackBinOp(op="*";type="int") #55 StackBinOp(op="*";type="float") #56 StackBinOp(op="/";type="int") #57 StackBinOp(op="/";type="float") #58 StackBinOp(op="%";type="int") #59 StackBinCmp(op="==";type="int") #60 StackBinCmp(op="==";type="float") #61 StackBinCmp(op="!=";type="int") #62 StackBinCmp(op="!=";type="float") #63 StackBinCmp(op="<";type="int") #64 StackBinCmp(op="<";type="float") #65 StackBinCmp(op="<=";type="int") #66 StackBinCmp(op="<=";type="float") #67 StackBinCmp(op=">";type="int") #68 StackBinCmp(op=">";type="float") #69 StackBinCmp(op=">=";type="int") #70 StackBinCmp(op=">=";type="float") #71 StackUnCmp(op="!";type="int") # Internally pushes (val==0) #72 StackUnCmp(op="!";type="float") # Internally pushes (val==0.0f), which is relevant for NaN handling #73 StackBinCmp(op="|||";type="int") #74 StackBinCmp(op="&&&";type="int") #75 StackBinOp(op="^";type="int") #76 StackBinOp(op="|";type="int") #77 StackBinOp(op="&";type="int") #78 PushDec() #79 StackUnOp(op="sin";type="float") #80 StackUnOp(op="cos";type="float") #84 StackUnOp(op="-";type="int") ##85 StackUnOp(op="-";type="float") # Instruction is broken until later games, uncomment if a patch fixes it #88 StackUnOp(op="sqrt";type="float") !enum(name="BonusDropIndex") 0 MainDrop 1 BonusDrop0 2 BonusDrop1 3 BonusDrop2 4 BonusDrop3 5 BonusDrop4 6 BonusDrop5 7 BonusDrop6 8 BonusDrop7 9 BonusDrop8 10 BonusDrop9 11 BonusDrop10 12 BonusDrop11 !enum(name="ItemID") -1 NoItem 0 Item0 1 Item1 2 Item2 3 Item3 4 Item4 5 Item5 6 Item6 7 Item7 8 Item8 9 Item9 10 Item10 11 Item11 !enum(name="AnmSource") 0 BulletAnm !enum(name="AnmSlotIndex") 0 AnmSlot0 1 AnmSlot1 2 AnmSlot2 3 AnmSlot3 4 AnmSlot4 5 AnmSlot5 6 AnmSlot6 7 AnmSlot7 8 AnmSlot8 9 AnmSlot9 !enum(name="AnmLayerIndex") !enum(name="InterpMode") 0 Linear 1 AccelerateSlow 2 Accelerate 3 AccelerateFast 4 DecelerateSlow 5 Decelerate 6 DecelerateFast 7 ConstantVelocity 8 Bezier 9 AccelDecelSlow 10 AccelDecel 11 AccelDecelFast 12 DecelAccelSlow 13 DecelAccel 14 DecelAccelFast 15 Initial 16 Final 17 ConstantAccel !enum(name="EnemyFlagsSet") !enum(name="EnemyFlagsClear") !enum(name="BossIndex") -1 UnsetBoss 0 Boss0 !enum(name="CallbackSlotIndex") 0 Callback1 1 Callback2 2 Callback3 3 Callback4 4 Callback5 5 Callback6 6 Callback7 7 Callback8 !enum(name="SoundID") !enum(name="LifeSlotIndex") 0 LifeSlot1 1 LifeSlot2 2 LifeSlot3 3 LifeSlot4 4 LifeSlot5 5 LifeSlot6 6 LifeSlot7 7 LifeSlot8 !enum(name="ShooterIndex") 0 Shooter0 1 Shooter1 2 Shooter2 3 Shooter3 4 Shooter4 5 Shooter5 6 Shooter6 7 Shooter7 !enum(name="BulletSprite") !enum(name="BulletColor") !enum(name="BulletAim") !enum(name="BulletEffectIndex") !enum(name="BulletEffectID") !enum(name="LaserFlags") !enum(name="ExIns") 0 Disable 1 Func1 2 Func2 3 Func3 4 Func4 5 Func5 6 Func6 7 Func7 8 Func8 9 Func9 10 Func10 11 Func11 12 Func12 !enum(name="ExDamage") 0 Disable 1 ExDamage1 !enum(name="ExHitbox") 0 Disable 1 ExHitbox1 !difficulty_flags 0 E- 1 N- 2 H- 3 L- 4 X+ 5 5+ 6 6+ 7 7+