More analysis identifying the different microcode tables and naming the objects
authorNick Downing <nick@ndcode.org>
Fri, 24 Jun 2022 07:39:36 +0000 (17:39 +1000)
committerNick Downing <nick@ndcode.org>
Fri, 24 Jun 2022 13:29:48 +0000 (23:29 +1000)
disasm/object.txt
disasm/star_blazer.asm.patch
disasm/star_blazer.txt
disasm/ucode0.py [new file with mode: 0755]
disasm/ucode1.py [new file with mode: 0755]

index 31925a2..32eef15 100644 (file)
-00 null00
-01 null01
-02 null02
-03 null03
-04 null04
-05 null05
-06 null06
-07 null07
-08 null08
-09 null09
-0a null0a
-0b null0b
-0c null0c
-0d null0d
-0e null0e
-0f null0f
-10 smaller0
-11 smaller1
-12 smaller2
-13 13
-14 fragment0
-15 fragment1
-16 fragment2
-17 fragment3
-18 fragment4
-19 fragment5
-1a fragment6
-1b fragment7
-1c fragment8
-1d fragment9
-1e fragment10
-1f fragment11
-20 star0
-21 star1
-22 star2
-23 star3
-24 star4
-25 star5
-26 star6
-27 star7
-28 exhaust1
-29 29
-2a 2a
-2b 2b
-2c star3
-2d 2d
-2e 2e
-2f 2f
-30 smallish0
-31 smallish1
-32 smallish2
-33 smallish3
-34 smallish4
-35 smallish5
-36 smallish6
-37 smallish7
-38 smallish8
-39 smallish9
-3a smallish10
-3b smallish11
-3c 3c
-3d 3d
-3e null3e
-3f null3f
-40 40
-41 tree_or_cactus0
-42 tree_or_cactus1
-43 tree_or_cactus2
-44 missile_launcher0
-45 missile_launcher1
-46 missile_launcher2
-47 pylon0
-48 pylon1
-49 haystack_house_or_silo0
-4a haystack_house_or_silo1
-4b haystack_house_or_silo2
-4c haystack_house_or_silo3
-4d radar_or_icbm
-4e smaller0
-4f smaller1
-50 bullet0
-51 bullet1
-52 bullet2
-53 balloon_or_explosion0
-54 balloon_or_explosion1
-55 balloon_or_explosion2
-56 balloon_or_explosion3
-57 balloon_or_explosion4
-58 bomb_or_explosion0
-59 bomb_or_explosion1
-5a bomb_or_explosion2
-5b bomb_or_explosion3
-5c bomb_or_explosion4
-5d bomb_or_explosion5
-5e bomb_or_explosion6
-5f bomb_or_explosion7
-60 starish
-61 player0
-62 ship0
-63 63
-64 shippish
-65 exhaust0
-66 ship1
-67 67
-68 missile0
-69 missile1
-6a missile2
-6b helicopter_or_enemy_plane0
-6c helicopter_or_enemy_plane1
-6d helicopter_or_enemy_plane2
-6e 6e
-6f 6f
-70 supply_plane
-71 71
-72 72
-73 73
-74 74
-75 75
-76 76
-77 77
-78 starish0
-79 starish1
-7a starish2
-7b starish3
-7c starish2
-7d starish3
-7e 7e
-7f starish4
+object_10_pixel
+  shape_04_pixel4
+object_11_pixel
+  shape_04_pixel4
+object_12_pixel
+  shape_04_pixel4
+object_13_pixel
+  shape_04_pixel4
+object_14_fragment
+  shape_60_fragment0
+  shape_61_fragment1
+  shape_62_fragment2
+  shape_63_fragment3
+  shape_64_fragment4
+  shape_65_fragment5
+  shape_66_fragment6
+  shape_67_fragment7
+object_15_fragment
+  shape_60_fragment0
+  shape_61_fragment1
+  shape_62_fragment2
+  shape_63_fragment3
+  shape_64_fragment4
+  shape_65_fragment5
+  shape_66_fragment6
+  shape_67_fragment7
+object_16_fragment
+  shape_60_fragment0
+  shape_61_fragment1
+  shape_62_fragment2
+  shape_63_fragment3
+  shape_64_fragment4
+  shape_65_fragment5
+  shape_66_fragment6
+  shape_67_fragment7
+object_17_fragment
+  shape_60_fragment0
+  shape_61_fragment1
+  shape_62_fragment2
+  shape_63_fragment3
+  shape_64_fragment4
+  shape_65_fragment5
+  shape_66_fragment6
+  shape_67_fragment7
+object_18_fragment
+  shape_60_fragment0
+  shape_61_fragment1
+  shape_62_fragment2
+  shape_63_fragment3
+  shape_64_fragment4
+  shape_65_fragment5
+  shape_66_fragment6
+  shape_67_fragment7
+object_19_fragment
+  shape_60_fragment0
+  shape_61_fragment1
+  shape_62_fragment2
+  shape_63_fragment3
+  shape_64_fragment4
+  shape_65_fragment5
+  shape_66_fragment6
+  shape_67_fragment7
+object_1a_fragment
+  shape_60_fragment0
+  shape_61_fragment1
+  shape_62_fragment2
+  shape_63_fragment3
+  shape_64_fragment4
+  shape_65_fragment5
+  shape_66_fragment6
+  shape_67_fragment7
+object_1b_fragment
+  shape_60_fragment0
+  shape_61_fragment1
+  shape_62_fragment2
+  shape_63_fragment3
+  shape_64_fragment4
+  shape_65_fragment5
+  shape_66_fragment6
+  shape_67_fragment7
+object_1c_fragment
+  shape_60_fragment0
+  shape_61_fragment1
+  shape_62_fragment2
+  shape_63_fragment3
+  shape_64_fragment4
+  shape_65_fragment5
+  shape_66_fragment6
+  shape_67_fragment7
+object_1d_fragment
+  shape_60_fragment0
+  shape_61_fragment1
+  shape_62_fragment2
+  shape_63_fragment3
+  shape_64_fragment4
+  shape_65_fragment5
+  shape_66_fragment6
+  shape_67_fragment7
+object_1e_fragment
+  shape_60_fragment0
+  shape_61_fragment1
+  shape_62_fragment2
+  shape_63_fragment3
+  shape_64_fragment4
+  shape_65_fragment5
+  shape_66_fragment6
+  shape_67_fragment7
+object_1f_fragment
+  shape_60_fragment0
+  shape_61_fragment1
+  shape_62_fragment2
+  shape_63_fragment3
+  shape_64_fragment4
+  shape_65_fragment5
+  shape_66_fragment6
+  shape_67_fragment7
+object_20_pixel
+  shape_01_pixel1
+  shape_02_pixel2
+  shape_04_pixel4
+object_21_pixel
+  shape_01_pixel1
+  shape_02_pixel2
+  shape_04_pixel4
+object_22_pixel
+  shape_01_pixel1
+  shape_02_pixel2
+  shape_04_pixel4
+object_23_pixel
+  shape_01_pixel1
+  shape_02_pixel2
+  shape_04_pixel4
+object_24_pixel
+  shape_01_pixel1
+  shape_02_pixel2
+  shape_04_pixel4
+object_25_pixel
+  shape_01_pixel1
+  shape_02_pixel2
+  shape_04_pixel4
+object_26_pixel
+  shape_01_pixel1
+  shape_02_pixel2
+  shape_04_pixel4
+object_27_pixel
+  shape_01_pixel1
+  shape_02_pixel2
+  shape_04_pixel4
+object_28_exhaust
+  shape_13_exhaust1
+object_29_pixel
+  shape_04_pixel4
+object_2a_explosion
+  shape_88_explosion0
+  shape_89_explosion1
+  shape_8a_explosion2
+  shape_8b_explosion3
+object_2c_pixel
+  shape_04_pixel4
+object_2d_pixel
+  shape_04_pixel4
+object_2e_pixel
+  shape_04_pixel4
+object_2f_pixel
+  shape_04_pixel4
+object_30_pixel
+  shape_01_pixel1
+  shape_02_pixel2
+  shape_03_pixel3
+  shape_05_pixel5
+  shape_06_pixel6
+  shape_07_pixel7
+object_31_pixel
+  shape_01_pixel1
+  shape_02_pixel2
+  shape_03_pixel3
+  shape_05_pixel5
+  shape_06_pixel6
+  shape_07_pixel7
+object_32_pixel
+  shape_01_pixel1
+  shape_02_pixel2
+  shape_03_pixel3
+  shape_05_pixel5
+  shape_06_pixel6
+  shape_07_pixel7
+object_33_pixel
+  shape_01_pixel1
+  shape_02_pixel2
+  shape_03_pixel3
+  shape_05_pixel5
+  shape_06_pixel6
+  shape_07_pixel7
+object_34_pixel
+  shape_01_pixel1
+  shape_02_pixel2
+  shape_03_pixel3
+  shape_05_pixel5
+  shape_06_pixel6
+  shape_07_pixel7
+object_35_pixel
+  shape_01_pixel1
+  shape_02_pixel2
+  shape_03_pixel3
+  shape_05_pixel5
+  shape_06_pixel6
+  shape_07_pixel7
+object_36_pixel
+  shape_01_pixel1
+  shape_02_pixel2
+  shape_03_pixel3
+  shape_05_pixel5
+  shape_06_pixel6
+  shape_07_pixel7
+object_37_pixel
+  shape_01_pixel1
+  shape_02_pixel2
+  shape_03_pixel3
+  shape_05_pixel5
+  shape_06_pixel6
+  shape_07_pixel7
+object_38_pixel
+  shape_01_pixel1
+  shape_02_pixel2
+  shape_03_pixel3
+  shape_05_pixel5
+  shape_06_pixel6
+  shape_07_pixel7
+object_39_pixel
+  shape_01_pixel1
+  shape_02_pixel2
+  shape_03_pixel3
+  shape_05_pixel5
+  shape_06_pixel6
+  shape_07_pixel7
+object_3a_pixel
+  shape_01_pixel1
+  shape_02_pixel2
+  shape_03_pixel3
+  shape_05_pixel5
+  shape_06_pixel6
+  shape_07_pixel7
+object_3b_pixel
+  shape_01_pixel1
+  shape_02_pixel2
+  shape_03_pixel3
+  shape_05_pixel5
+  shape_06_pixel6
+  shape_07_pixel7
+object_3c_pixel
+  shape_04_pixel4
+object_3d_pixel
+  shape_04_pixel4
+object_40_bird
+  shape_0c_bird0
+  shape_0d_bird1
+  shape_0e_bird2
+object_41_tree_cactus
+  shape_78_tree
+  shape_79_cactus
+object_42_tree_cactus
+  shape_78_tree
+  shape_79_cactus
+object_43_tree_cactus
+  shape_78_tree
+  shape_79_cactus
+object_44_missile_launcher
+  shape_50_missile_launcher0_empty
+  shape_51_missile_launcher1_empty
+  shape_52_missile_launcher2_empty
+  shape_54_missile_launcher0
+  shape_55_missile_launcher1
+  shape_56_missile_launcher2
+object_45_missile_launcher
+  shape_50_missile_launcher0_empty
+  shape_51_missile_launcher1_empty
+  shape_52_missile_launcher2_empty
+  shape_54_missile_launcher0
+  shape_55_missile_launcher1
+  shape_56_missile_launcher2
+object_46_missile_launcher
+  shape_50_missile_launcher0_empty
+  shape_51_missile_launcher1_empty
+  shape_52_missile_launcher2_empty
+  shape_54_missile_launcher0
+  shape_55_missile_launcher1
+  shape_56_missile_launcher2
+object_47_pylon
+  shape_36_pylon
+object_48_pylon
+  shape_36_pylon
+object_49_silo
+  shape_30_silo0
+  shape_31_silo1
+object_4a_silo_haystack
+  shape_30_silo0
+  shape_31_silo1
+  shape_70_haystack
+object_4b_haystack_house
+  shape_70_haystack
+  shape_71_house
+object_4c_silo_house
+  shape_30_silo0
+  shape_31_silo1
+  shape_71_house
+object_4d_headquarters_radar_icbm
+  shape_72_headquarters
+  shape_73_radar0
+  shape_74_radar1
+  shape_75_radar2
+  shape_76_icbm
+object_4e_pixel
+  shape_01_pixel1
+  shape_02_pixel2
+  shape_03_pixel3
+  shape_05_pixel5
+  shape_06_pixel6
+  shape_07_pixel7
+object_4f_pixel
+  shape_01_pixel1
+  shape_02_pixel2
+  shape_03_pixel3
+  shape_05_pixel5
+  shape_06_pixel6
+  shape_07_pixel7
+object_50_bullet
+  shape_08_bullet3
+  shape_09_bullet5
+  shape_0a_bullet7
+  shape_0b_bullet9
+object_51_bullet
+  shape_08_bullet3
+  shape_09_bullet5
+  shape_0a_bullet7
+  shape_0b_bullet9
+object_52_bullet
+  shape_08_bullet3
+  shape_09_bullet5
+  shape_0a_bullet7
+  shape_0b_bullet9
+object_53_pixel_balloon_explosion
+  shape_04_pixel4
+  shape_28_balloon0
+  shape_29_balloon1
+  shape_2a_balloon2
+  shape_88_explosion0
+  shape_89_explosion1
+  shape_8a_explosion2
+  shape_8b_explosion3
+object_54_pixel_balloon_explosion
+  shape_04_pixel4
+  shape_28_balloon0
+  shape_29_balloon1
+  shape_2a_balloon2
+  shape_88_explosion0
+  shape_89_explosion1
+  shape_8a_explosion2
+  shape_8b_explosion3
+object_55_pixel_balloon_explosion
+  shape_04_pixel4
+  shape_28_balloon0
+  shape_29_balloon1
+  shape_2a_balloon2
+  shape_88_explosion0
+  shape_89_explosion1
+  shape_8a_explosion2
+  shape_8b_explosion3
+object_56_pixel_balloon_explosion
+  shape_04_pixel4
+  shape_28_balloon0
+  shape_29_balloon1
+  shape_2a_balloon2
+  shape_88_explosion0
+  shape_89_explosion1
+  shape_8a_explosion2
+  shape_8b_explosion3
+object_57_pixel_balloon_explosion
+  shape_04_pixel4
+  shape_28_balloon0
+  shape_29_balloon1
+  shape_2a_balloon2
+  shape_88_explosion0
+  shape_89_explosion1
+  shape_8a_explosion2
+  shape_8b_explosion3
+object_58_bomb_explosion
+  shape_20_bomb0
+  shape_21_bomb1
+  shape_22_bomb2
+  shape_88_explosion0
+  shape_89_explosion1
+  shape_8a_explosion2
+  shape_8b_explosion3
+object_59_bomb_explosion
+  shape_20_bomb0
+  shape_21_bomb1
+  shape_22_bomb2
+  shape_88_explosion0
+  shape_89_explosion1
+  shape_8a_explosion2
+  shape_8b_explosion3
+object_5a_bomb_explosion
+  shape_20_bomb0
+  shape_21_bomb1
+  shape_22_bomb2
+  shape_88_explosion0
+  shape_89_explosion1
+  shape_8a_explosion2
+  shape_8b_explosion3
+object_5b_bomb_explosion
+  shape_20_bomb0
+  shape_21_bomb1
+  shape_22_bomb2
+  shape_23_bomb3
+  shape_88_explosion0
+  shape_89_explosion1
+  shape_8a_explosion2
+  shape_8b_explosion3
+object_5c_bomb_explosion
+  shape_20_bomb0
+  shape_21_bomb1
+  shape_22_bomb2
+  shape_88_explosion0
+  shape_89_explosion1
+  shape_8a_explosion2
+  shape_8b_explosion3
+object_5d_bomb_explosion
+  shape_20_bomb0
+  shape_21_bomb1
+  shape_22_bomb2
+  shape_88_explosion0
+  shape_89_explosion1
+  shape_8a_explosion2
+  shape_8b_explosion3
+object_5e_bomb_explosion
+  shape_20_bomb0
+  shape_21_bomb1
+  shape_22_bomb2
+  shape_88_explosion0
+  shape_89_explosion1
+  shape_8a_explosion2
+  shape_8b_explosion3
+object_5f_bomb_explosion
+  shape_20_bomb0
+  shape_21_bomb1
+  shape_22_bomb2
+  shape_23_bomb3
+  shape_88_explosion0
+  shape_89_explosion1
+  shape_8a_explosion2
+  shape_8b_explosion3
+object_60_pixel
+  shape_04_pixel4
+object_61_ship
+  shape_10_ship
+  shape_11_ship_open
+object_62_ship
+  shape_10_ship
+object_63_pixel
+  shape_04_pixel4
+object_64_pixel_ship
+  shape_04_pixel4
+  shape_10_ship
+object_65_pixel_exhaust
+  shape_04_pixel4
+  shape_12_exhaust0
+object_66_ship
+  shape_10_ship
+object_67_bird
+  shape_0f_bird3
+object_68_missile
+  shape_40_missile0
+  shape_41_missile1
+  shape_42_missile2
+  shape_43_missile3
+  shape_44_missile4
+  shape_45_missile5
+  shape_46_missile6
+  shape_47_missile7
+  shape_48_missile8
+  shape_49_missile9
+  shape_4a_missile10
+  shape_4b_missile11
+  shape_4c_missile12
+  shape_4d_missile13
+  shape_4e_missile14
+  shape_4f_missile15
+object_69_missile
+  shape_40_missile0
+  shape_41_missile1
+  shape_42_missile2
+  shape_43_missile3
+  shape_44_missile4
+  shape_45_missile5
+  shape_46_missile6
+  shape_47_missile7
+  shape_48_missile8
+  shape_49_missile9
+  shape_4a_missile10
+  shape_4b_missile11
+  shape_4c_missile12
+  shape_4d_missile13
+  shape_4e_missile14
+  shape_4f_missile15
+object_6a_missile
+  shape_40_missile0
+  shape_41_missile1
+  shape_42_missile2
+  shape_43_missile3
+  shape_44_missile4
+  shape_45_missile5
+  shape_46_missile6
+  shape_47_missile7
+  shape_48_missile8
+  shape_49_missile9
+  shape_4a_missile10
+  shape_4b_missile11
+  shape_4c_missile12
+  shape_4d_missile13
+  shape_4e_missile14
+  shape_4f_missile15
+object_6b_helicopter_enemy_plane
+  shape_2c_helicopter
+  shape_2e_enemy_plane0
+  shape_2f_enemy_plane1
+object_6c_helicopter_enemy_plane
+  shape_2c_helicopter
+  shape_2e_enemy_plane0
+  shape_2f_enemy_plane1
+object_6d_helicopter_enemy_plane
+  shape_2c_helicopter
+  shape_2e_enemy_plane0
+  shape_2f_enemy_plane1
+object_6e_helicopter_enemy_plane
+  shape_2c_helicopter
+  shape_2e_enemy_plane0
+  shape_2f_enemy_plane1
+object_6f_helicopter_enemy_plane
+  shape_2c_helicopter
+  shape_2e_enemy_plane0
+  shape_2f_enemy_plane1
+object_70_supply_plane
+  shape_18_supply_plane
+object_71_parachute
+  shape_14_parachute0
+  shape_15_parachute1
+  shape_16_parachute_open
+object_72_fuel_explosion
+  shape_17_fuel
+  shape_88_explosion0
+  shape_89_explosion1
+  shape_8a_explosion2
+  shape_8b_explosion3
+object_73_bullet
+  shape_08_bullet3
+  shape_09_bullet5
+  shape_0a_bullet7
+  shape_0b_bullet9
+object_74_bullet
+  shape_08_bullet3
+  shape_09_bullet5
+  shape_0a_bullet7
+  shape_0b_bullet9
+object_75_bullet
+  shape_08_bullet3
+  shape_09_bullet5
+  shape_0a_bullet7
+  shape_0b_bullet9
+object_76_pixel
+  shape_04_pixel4
+object_77_tank
+  shape_1c_tank
+  shape_1e_missile_tank
+  shape_1f_missile_tank_empty
+object_78_pixel
+  shape_04_pixel4
+object_79_pixel
+  shape_04_pixel4
+object_7a_pixel
+  shape_04_pixel4
+object_7b_pixel
+  shape_04_pixel4
+object_7c_pixel
+  shape_04_pixel4
+object_7d_pixel
+  shape_04_pixel4
+object_7e_pixel
+  shape_04_pixel4
+object_7f_pixel
+  shape_04_pixel4
index 4bd4e79..d636fca 100644 (file)
@@ -1,5 +1,5 @@
---- star_blazer.asm0   2022-06-23 18:12:24.911895205 +1000
-+++ star_blazer.asm    2022-06-23 18:12:53.087894857 +1000
+--- star_blazer.asm0   2022-06-24 17:39:52.231813771 +1000
++++ star_blazer.asm    2022-06-24 17:40:28.671813320 +1000
 @@ -1,3 +1,8 @@
 +ALIGN = 0
 +DHGR = 1
  microcode_execute_1093_entry:
        ldy     #0x00                   ; 1090,109f -> 10a1 -> 10a3 r
 @@ -1099,7 +1144,7 @@
-       jsr     do_microcode_test       ; 10c6 -> 10c8 -> 106a r s=f7..f9,02
+       jsr     do_microcode_pair       ; 10c6 -> 10c8 -> 106a r s=f7..f9,02
        bne     3$                      ; 107b -> 10cb -> 10c0 r z=0
  microcode_execute_1093_done:
 -      lda     0xaee0,x                ; 1093,10a5,10ba,10c2,10c6 -> 10cd -> 10d0 r x=01..7f
  draw_misc_table:
        .db     0x01                    ; 4600 r
        .db     0x07                    ; 4601 r
-@@ -9432,6 +9775,15 @@
-       .dw     0x0000                  ; 5bfa r
-       .dw     0x0000                  ; 5bfc r
-       .dw     0x0000                  ; 5bfe r
+@@ -9464,6 +9807,15 @@
+       .db     0x00                    ; 5bfd
+       .db     0x00                    ; 5bfe
+       .db     0x00                    ; 5bff
 +.if DHGR
 +.include /dhgr_pixel_shape_data_main.inc/
 +.else
  shape_20_bomb0:
        .db     0x5c                    ; 5c00 r
        .db     0x02                    ; 5c01 r
-@@ -21852,510 +22204,12 @@
+@@ -21884,510 +22236,12 @@
        .db     0xe0                    ; 8c05 r
        .db     0x83                    ; 8c06 r
        .db     0x9e                    ; 8c07 r
 +.if ALIGN
 +      .ds     0x8e00 - 0x4000 - (. - data0_start)
 +.endif
- microcode_table_5560_data_8e00:
+ microcode1080_countdown_30:
        .db     0x30                    ; 8e00 r
        .db     0x0f                    ; 8e01
-@@ -24655,7 +24509,15 @@
+@@ -24687,7 +24541,15 @@
        .db     0x0a                    ; 95da
        .db     0x00                    ; 95db
- microcode_table_54d6_data_95dc:
+ microcode1080_animate_shape_6b:
 +.if 0 ; testing
 +      .db     0x73 ; radar0 shape
 +      .db     0x74 ; radar1 shape
        .db     0xf2                    ; 95dd
        .db     0x2e                    ; 95de
        .db     0xf3                    ; 95df
-@@ -24670,7 +24532,15 @@
+@@ -24702,7 +24564,15 @@
        .db     0x60                    ; 95e7
        .db     0x00                    ; 95e8
- microcode_table_54d8_data_95e9:
+ microcode1080_animate_shape_6c:
 +.if 0 ; testing
 +      .db     0x73 ; radar0 shape
 +      .db     0x74 ; radar1 shape
        .db     0xf2                    ; 95ea
        .db     0x2e                    ; 95eb
        .db     0xf3                    ; 95ec
-@@ -24685,7 +24555,15 @@
+@@ -24717,7 +24587,15 @@
        .db     0x60                    ; 95f4
        .db     0x00                    ; 95f5
- microcode_table_54da_data_95f6:
+ microcode1080_animate_shape_6d:
 +.if 0 ; testing
 +      .db     0x73 ; radar0 shape
 +      .db     0x74 ; radar1 shape
        .db     0xf2                    ; 95f7
        .db     0x2e                    ; 95f8
        .db     0xf3                    ; 95f9
-@@ -26926,31 +26804,308 @@
+@@ -26958,31 +26836,308 @@
        .db     0x7c                    ; 9dea
        .db     0x98                    ; 9deb
        .db     0x00                    ; 9dec
  
        .area   udata2
  
-@@ -27033,3 +27188,4 @@
+@@ -27065,3 +27220,4 @@
  object6080_b560:
        .ds     0x20                    ; b560 rw
  
index 07fb5e3..7825629 100644 (file)
@@ -57,6 +57,13 @@ items
 0x00c8,0x0001,sp_save,byte
 0x00c9,0x0001,microcode_x_save_c9,byte
 0x00ca,0x0001,microcode_y_save_ca,byte
+# seems to preserve a value from one of:
+#   object6080_b500 (execute_microcode6080_fire_state_f0)
+#   object6080_b520 (execute_microcode6080_fire_state_f1)
+#   object6080_b540 (execute_microcode6080_fire_state_f2)
+#   object6080_b560 (execute_microcode6080_fire_state_f3)
+# and also used as an index into microcode in microcode_execute_10d1
+0x00cb,0x0001,microcode_state_save,byte
 # may contain a value from object1080_microcode_start_sentinel (basically
 # the current state of the object) and also seems to be used as a counter
 0x00cc,0x0001,microcode_start_sentinel,byte
@@ -265,48 +272,48 @@ items
 0x11b2,0x0001,make_object_inactive_and_erase,code
 # called from update_object, when:
 #   object1080_countdown_b120 or object1080_countdown_b190 expires
-0x11bd,0x0001,execute_microcode_table_5520,code
+0x11bd,0x0001,execute_microcode1080_countdown,code
 # called from update_object, when:
 #   test_object_collision returns cf=1
-0x11cd,0x0001,execute_microcode_table_5720,code
+0x11cd,0x0001,execute_microcode1080_collision,code
 # called from update_object for objects >= 40, when:
 #   object1080_x_hi outside [object4080_x_hi_min, object4080_x_hi_max)
-0x11dd,0x0001,execute_microcode_table_5800,code
+0x11dd,0x0001,execute_microcode4080_x_outside,code
 # called from update_object for objects >= 40, when:
 #   object1080_y_hi outside [object4080_y_hi_min, object4080_y_hi_max)
-0x11ed,0x0001,execute_microcode_table_5880,code
+0x11ed,0x0001,execute_microcode4080_y_outside,code
 # called from update_object for objects >= 60, when:
 #   object1080_start_sentinel == 0xf0
-#   and then test_object_fire_14ef returns cf=1
-0x11fd,0x0001,execute_microcode_table_5a00,code
+#   and then test_object_fire_state_f0 returns cf=1
+0x11fd,0x0001,execute_microcode6080_fire_state_f0,code
 # called from update_object for objects >= 60, when:
 #   object1080_start_sentinel == 0xf1
-#   and then test_object_fire_150f returns cf=1
-0x1222,0x0001,execute_microcode_table_5a80,code
+#   and then test_object_fire_state_f1 returns cf=1
+0x1222,0x0001,execute_microcode6080_fire_state_f1,code
 # called from update_object for objects >= 60, when:
 #   object1080_start_sentinel == 0xf2
-#   and then test_object_fire_1549 returns cf=1
-0x1247,0x0001,execute_microcode_table_5b00,code
+#   and then test_object_fire_state_f2 returns cf=1
+0x1247,0x0001,execute_microcode6080_fire_state_f2,code
 # called from update_object for objects >= 60, when:
 #   object1080_start_sentinel == 0xf3
-#   and then test_object_fire_1569 returns cf=1
-0x126c,0x0001,execute_microcode_table_5b80,code
+#   and then test_object_fire_state_f3 returns cf=1
+0x126c,0x0001,execute_microcode6080_fire_state_f3,code
 # called from accelerate_object_towards_another
 # seems to have a chance to intervene in the homing logic
-0x1291,0x0001,execute_microcode_table_5920,code
+0x1291,0x0001,execute_microcode6080_homing,code
 0x12e1,0x0001,accelerate_object_towards_another,code
 0x133f,0x0001,sign_extend_a_to_ya_asl_by_4,code
 0x1350,0x0001,accelerate_object_somehow,code
 0x1388,0x0001,move_object_by_velocity,code
 0x13d0,0x0001,test_object_collision,code
 0x1447,0x0001,accelerate_object_anyhow,code
-0x14ef,0x0001,test_object_fire_14ef,code
-0x150f,0x0001,test_object_fire_150f,code
+0x14ef,0x0001,test_object_fire_state_f0,code
+0x150f,0x0001,test_object_fire_state_f1,code
 0x152c,0x0001,test_object_fire_entry,code
 0x153f,0x0001,test_object_fire_false,code
 0x1542,0x0001,test_object_fire_player,code
-0x1549,0x0001,test_object_fire_1549,code
-0x1569,0x0001,test_object_fire_1569,code
+0x1549,0x0001,test_object_fire_state_f2,code
+0x1569,0x0001,test_object_fire_state_f3,code
 0x1589,0x0001,objects_init,code
 0x1595,0x0001,objects_init_entry,code
 0x15d7,0x0001,maybe_calculate_object_shape_and_update,code
@@ -410,37 +417,41 @@ items
 0x5270,0x0030,object5080_difference_5270,byte
 0x52a0,0x0030,object5080_difference_52a0,byte
 0x52d0,0x0030,object5080_difference_52d0,byte
-0x5300,0x0020,object6080_5300,byte
+0x5300,0x0020,object6080_fire_count_init_state_f0,byte
+# used from execute_microcode6080_fire_state_f0
 0x5320,0x0020,object6080_5320,byte
-0x5340,0x0020,object6080_5340,byte
+0x5340,0x0020,object6080_fire_count_init_state_f1,byte
+# used from execute_microcode6080_fire_state_f1
 0x5360,0x0020,object6080_5360,byte
-0x5380,0x0020,object6080_5380,byte
+0x5380,0x0020,object6080_fire_count_init_state_f2,byte
+# used from execute_microcode6080_fire_state_f2
 0x53a0,0x0020,object6080_53a0,byte
-0x53c0,0x0020,object6080_53c0,byte
+0x53c0,0x0020,object6080_fire_count_init_state_f3,byte
+# used from execute_microcode6080_fire_state_f2
 0x53e0,0x0020,object6080_53e0,byte
 # the partitioning below is approximate and just tries to cover everything
 0x5400,0x0020,,word
-0x5420,0x00e0,microcode_table_animate_shape,word
-0x5500,0x0020,microcode_table_5500,word
-0x5520,0x00e0,microcode_table_5520,word
+0x5420,0x00e0,microcode1080_animate_shape,word
+0x5500,0x0020,microcode0010_init_or_zero,word
+0x5520,0x00e0,microcode1080_countdown,word
 0x5600,0x0020,,word
-0x5620,0x00e0,microcode_table_5620,word
+0x5620,0x00e0,microcode1080_collision_test,word
 0x5700,0x0020,,word
-0x5720,0x00e0,microcode_table_5720,word
-0x5800,0x0080,microcode_table_5800,word
-0x5880,0x0080,microcode_table_5880,word
+0x5720,0x00e0,microcode1080_collision,word
+0x5800,0x0080,microcode4080_x_outside,word
+0x5880,0x0080,microcode4080_y_outside,word
 0x5900,0x0020,,word
-0x5920,0x0030,microcode_table_5920,word
+0x5920,0x0030,microcode6080_homing,word
 0x5950,0x0070,,word
-0x59c0,0x0040,microcode_table_59c0,word
-0x5a00,0x0040,microcode_table_5a00,word
-0x5a40,0x0040,microcode_table_5a40,word
-0x5a80,0x0040,microcode_table_5a80,word
-0x5ac0,0x0040,microcode_table_5ac0,word
-0x5b00,0x0040,microcode_table_5b00,word
-0x5b40,0x0040,microcode_table_5b40,word
-0x5b80,0x0040,microcode_table_5b80,word
-0x5bc0,0x0040,,word
+0x59c0,0x0040,microcode6080_test_fire_state_f0,word
+0x5a00,0x0040,microcode6080_fire_state_f0,word
+0x5a40,0x0040,microcode6080_test_fire_state_f1,word
+0x5a80,0x0040,microcode6080_fire_state_f1,word
+0x5ac0,0x0040,microcode6080_test_fire_state_f2,word
+0x5b00,0x0040,microcode6080_fire_state_f2,word
+0x5b40,0x0040,microcode6080_test_fire_state_f3,word
+0x5b80,0x0040,microcode6080_fire_state_f3,word
+# from 0x5bc0 is padding
 # generated by shape_extract.py, manually sorted, duplicates merged, named
 0x5c00,0x003f,shape_20_bomb0,byte
 0x5c3f,0x0054,shape_21_bomb1,byte
@@ -570,294 +581,294 @@ items
 0x8ae5,0x004b,shape_e9_text_100_120_300_1500,byte
 0x8b30,0x005a,shape_d0_text_star,byte
 0x8b8a,0x007e,shape_d1_text_blazer,byte
-0x8e00,0x0001,microcode_table_5560_data_8e00,byte
-0x8e03,0x0001,microcode_table_5842_data_8e03,byte
-0x8e06,0x0001,microcode_table_54d0_data_8e06,byte
-0x8e17,0x0001,microcode_table_5460_data_8e17,byte
-0x8e1e,0x0001,microcode_table_5462_data_8e1e,byte
-0x8e25,0x0001,microcode_table_5562_data_8e25,byte
-0x8e28,0x0001,microcode_table_5464_data_8e28,byte
-0x8e2f,0x0001,microcode_table_5564_data_8e2f,byte
-0x8e32,0x0001,microcode_table_5466_data_8e32,byte
-0x8e39,0x0001,microcode_table_5566_data_8e39,byte
-0x8e3c,0x0001,microcode_table_5468_data_8e3c,byte
-0x8e43,0x0001,microcode_table_5568_data_8e43,byte
-0x8e46,0x0001,microcode_table_546a_data_8e46,byte
-0x8e4d,0x0001,microcode_table_556a_data_8e4d,byte
-0x8e50,0x0001,microcode_table_546c_data_8e50,byte
-0x8e57,0x0001,microcode_table_556c_data_8e57,byte
-0x8e5a,0x0001,microcode_table_546e_data_8e5a,byte
-0x8e61,0x0001,microcode_table_556e_data_8e61,byte
-0x8e64,0x0001,microcode_table_5850_data_8e64,byte
-0x8e67,0x0001,microcode_table_5470_data_8e67,byte
-0x8e6e,0x0001,microcode_table_5570_data_8e6e,byte
-0x8e71,0x0001,microcode_table_5472_data_8e71,byte
-0x8e78,0x0001,microcode_table_5572_data_8e78,byte
-0x8e7b,0x0001,microcode_table_5474_data_8e7b,byte
-0x8e82,0x0001,microcode_table_5574_data_8e82,byte
-0x8e85,0x0001,microcode_table_5476_data_8e85,byte
-0x8e8c,0x0001,microcode_table_5576_data_8e8c,byte
-0x8e8f,0x0001,microcode_table_54d2_data_8e8f,byte
-0x8ea0,0x0001,microcode_table_5852_data_8ea0,byte
-0x8ea3,0x0001,microcode_table_54d4_data_8ea3,byte
-0x8eb4,0x0001,microcode_table_5854_data_8eb4,byte
-0x8eb7,0x0001,microcode_table_5a10_data_8eb7,byte
-0x8ec0,0x0001,microcode_table_5a12_data_8ec0,byte
-0x8ec9,0x0001,microcode_table_5a14_data_8ec9,byte
-0x8ed2,0x0001,microcode_table_5808_data_8ed2,byte
-0x8ed5,0x0001,microcode_table_580a_data_8ed5,byte
-0x8ed8,0x0001,microcode_table_580c_data_8ed8,byte
-0x8edb,0x0001,microcode_table_5488_data_8edb,byte
-0x8ee6,0x0001,microcode_table_548a_data_8ee6,byte
-0x8ef1,0x0001,microcode_table_548c_data_8ef1,byte
-0x8efc,0x0001,microcode_table_5428_data_8efc,byte
-0x8f05,0x0001,microcode_table_5430_data_8f05,byte
-0x8f0e,0x0001,microcode_table_5532_data_8f0e,byte
-0x8f11,0x0001,microcode_table_5434_data_8f11,byte
-0x8f1a,0x0001,microcode_table_5534_data_8f1a,byte
-0x8f1d,0x0001,microcode_table_5436_data_8f1d,byte
-0x8f26,0x0001,microcode_table_5536_data_8f26,byte
-0x8f29,0x0001,microcode_table_5438_data_8f29,byte
-0x8f32,0x0001,microcode_table_5806_data_8f32,byte
-0x8f35,0x0001,microcode_table_5804_data_8f35,byte
-0x8f38,0x0001,microcode_table_5a42_data_8f38,byte
-0x8f3a,0x0001,microcode_table_57b2_data_8f3a,byte
-0x8f43,0x0001,microcode_table_57b4_data_8f43,byte
-0x8f4c,0x0001,microcode_table_57b6_data_8f4c,byte
-0x8f55,0x0001,microcode_table_5802_data_8f55,byte
-0x8f58,0x0001,microcode_table_5810_data_8f58,byte
-0x8f5b,0x0001,microcode_table_5490_data_8f5b,byte
-0x8f5d,0x0001,microcode_table_54e0_data_8f5d,byte
-0x8f5f,0x0001,microcode_table_5862_data_8f5f,byte
-0x8f62,0x0001,microcode_table_549c_data_8f62,byte
-0x8f69,0x0001,microcode_table_559c_data_8f69,byte
-0x8f6c,0x0001,microcode_table_549e_data_8f6c,byte
-0x8f73,0x0001,microcode_table_559e_data_8f73,byte
-0x8f76,0x0001,microcode_table_57b0_data_8f76,byte
-0x8f7f,0x0001,microcode_table_57a0_data_8f7f,byte
-0x8f82,0x0001,microcode_table_5820_data_8f82,byte
-0x8f85,0x0001,microcode_table_59c2_data_8f85,byte
-0x8f87,0x0001,microcode_table_5440_data_8f87,byte
-0x8f8c,0x0001,microcode_table_5442_data_8f8c,byte
-0x8f91,0x0001,microcode_table_5444_data_8f91,byte
-0x8f96,0x0001,microcode_table_5448_data_8f96,byte
-0x8f9b,0x0001,microcode_table_544c_data_8f9b,byte
-0x8fa0,0x0001,microcode_table_5a06_data_8fa0,byte
-0x8fc1,0x0001,microcode_table_5528_data_8fc1,byte
-0x8fc4,0x0001,microcode_table_5530_data_8fc4,byte
-0x8fc7,0x0001,microcode_table_5538_data_8fc7,byte
-0x8fca,0x0001,microcode_table_5446_data_8fca,byte
-0x8fcf,0x0001,microcode_table_544a_data_8fcf,byte
-0x8fd4,0x0001,microcode_table_544e_data_8fd4,byte
-0x8fd9,0x0001,microcode_table_57b8_data_8fd9,byte
-0x8fe2,0x0001,microcode_table_54b0_data_8fe2,byte
-0x8ff7,0x0001,microcode_table_54b4_data_8ff7,byte
-0x900b,0x0001,microcode_table_54b6_data_900b,byte
-0x9021,0x0001,microcode_table_54b8_data_9021,byte
-0x9035,0x0001,microcode_table_5830_data_9035,byte
-0x9038,0x0001,microcode_table_58b0_data_9038,byte
-0x904b,0x0001,microcode_table_5832_data_904b,byte
-0x904e,0x0001,microcode_table_58b2_data_904e,byte
-0x9061,0x0001,microcode_table_5834_data_9061,byte
-0x9064,0x0001,microcode_table_58b4_data_9064,byte
-0x9077,0x0001,microcode_table_5836_data_9077,byte
-0x907a,0x0001,microcode_table_58b6_data_907a,byte
-0x908d,0x0001,microcode_table_5838_data_908d,byte
-0x9090,0x0001,microcode_table_58b8_data_9090,byte
-0x90a3,0x0001,microcode_table_5422_data_90a3,byte
-0x90a5,0x0001,microcode_table_5420_data_90a5,byte
-0x90a7,0x0001,microcode_table_57ba_data_90a7,byte
-0x90b0,0x0001,microcode_table_583a_data_90b0,byte
-0x90b3,0x0001,microcode_table_58ba_data_90b3,byte
-0x90c6,0x0001,microcode_table_54bc_data_90c6,byte
-0x90da,0x0001,microcode_table_57bc_data_90da,byte
-0x90e3,0x0001,microcode_table_583c_data_90e3,byte
-0x90e6,0x0001,microcode_table_58bc_data_90e6,byte
-0x90f9,0x0001,microcode_table_54be_data_90f9,byte
-0x910f,0x0001,microcode_table_57be_data_910f,byte
-0x9118,0x0001,microcode_table_583e_data_9118,byte
-0x911b,0x0001,microcode_table_58be_data_911b,byte
-0x912e,0x0001,microcode_table_5ac2_data_912e,byte
-0x9130,0x0001,microcode_table_58c2_data_9130,byte
-0x9139,0x0001,microcode_table_5b42_data_9139,byte
-0x913b,0x0001,microcode_table_5b82_data_913b,byte
-0x913e,0x0001,microcode_table_581a_data_913e,byte
-0x9141,0x0001,microcode_table_57a2_data_9141,byte
-0x9144,0x0001,microcode_table_5822_data_9144,byte
-0x9147,0x0001,microcode_table_57a4_data_9147,byte
-0x914a,0x0001,microcode_table_5824_data_914a,byte
-0x914d,0x0001,microcode_table_548e_data_914d,byte
-0x914f,0x0001,microcode_table_580e_data_914f,byte
-0x9152,0x0001,microcode_table_5af0_data_9152,byte
-0x9155,0x0001,microcode_table_5b70_data_9155,byte
-0x9158,0x0001,microcode_table_54f0_data_9158,byte
-0x915a,0x0001,microcode_table_5b30_data_915a,byte
-0x9163,0x0001,microcode_table_5620_data_9163,byte
-0x9166,0x0001,microcode_table_54f4_data_9166,byte
-0x9168,0x0001,microcode_table_55f4_data_9168,byte
-0x9175,0x0001,microcode_table_5af4_data_9175,byte
-0x9178,0x0001,microcode_table_5b74_data_9178,byte
-0x917b,0x0001,microcode_table_5856_data_917b,byte
-0x917e,0x0001,microcode_table_54b2_data_917e,byte
-0x9192,0x0001,microcode_table_54ba_data_9192,byte
-0x91a7,0x0001,microcode_table_58ca_data_91a7,byte
-0x91aa,0x0001,microcode_table_54c4_data_91aa,byte
-0x91ac,0x0001,microcode_table_54c8_data_91ac,byte
-0x91b0,0x0001,microcode_table_56f0_data_91b0,byte
-0x91b3,0x0001,microcode_table_56f4_data_91b3,byte
-0x91b6,0x0001,microcode_table_55c8_data_91b6,byte
-0x91b9,0x0001,microcode_table_54c0_data_91b9,byte
-0x91bb,0x0001,microcode_table_54fe_data_91bb,byte
-0x91bd,0x0001,microcode_table_5a3e_data_91bd,byte
-0x91c0,0x0001,microcode_table_5b00_data_91c0,byte
-0x91c3,0x0001,microcode_table_551a_data_91c3,byte
-0x91c8,0x0001,microcode_table_5a82_data_91c8,byte
-0x91e9,0x0001,microcode_table_5424_data_91e9,byte
-0x91eb,0x0001,microcode_table_55d0_data_91eb,byte
-0x91ee,0x0001,microcode_table_55d2_data_91ee,byte
-0x91f1,0x0001,microcode_table_55d4_data_91f1,byte
-0x91f4,0x0001,microcode_table_55c0_data_91f4,byte
-0x91f9,0x0001,microcode_table_5a80_data_91f9,byte
-0x91fc,0x0001,microcode_table_5788_data_91fc,byte
-0x9203,0x0001,microcode_table_578a_data_9203,byte
-0x920a,0x0001,microcode_table_578c_data_920a,byte
-0x9211,0x0001,microcode_table_578e_data_9211,byte
-0x9218,0x0001,microcode_table_5790_data_9218,byte
-0x921f,0x0001,microcode_table_5628_data_921f,byte
-0x9222,0x0001,microcode_table_5728_data_9222,byte
-0x922d,0x0001,microcode_table_5630_data_922d,byte
-0x9230,0x0001,microcode_table_5638_data_9230,byte
-0x9233,0x0001,microcode_table_5482_data_9233,byte
-0x9237,0x0001,microcode_table_5484_data_9237,byte
-0x923b,0x0001,microcode_table_5486_data_923b,byte
-0x923f,0x0001,microcode_table_5a0a_data_923f,byte
-0x9242,0x0001,microcode_table_5a8a_data_9242,byte
-0x9245,0x0001,microcode_table_5a56_data_9245,byte
-0x9248,0x0001,microcode_table_5a96_data_9248,byte
-0x9253,0x0001,microcode_table_5a16_data_9253,byte
-0x9256,0x0001,microcode_table_5858_data_9256,byte
-0x9259,0x0001,microcode_table_5a18_data_9259,byte
-0x925c,0x0001,microcode_table_5a58_data_925c,byte
-0x925f,0x0001,microcode_table_5a98_data_925f,byte
-0x926a,0x0001,microcode_table_585a_data_926a,byte
-0x926d,0x0001,microcode_table_5a1a_data_926d,byte
-0x9270,0x0001,microcode_table_5a5a_data_9270,byte
-0x9273,0x0001,microcode_table_5a9a_data_9273,byte
-0x927e,0x0001,microcode_table_5730_data_927e,byte
-0x928b,0x0001,microcode_table_5bb0_data_928b,byte
-0x9294,0x0001,microcode_table_54a0_data_9294,byte
-0x929a,0x0001,microcode_table_54a2_data_929a,byte
-0x92a0,0x0001,microcode_table_54a4_data_92a0,byte
-0x92a6,0x0001,microcode_table_5860_data_92a6,byte
-0x92a9,0x0001,microcode_table_5826_data_92a9,byte
-0x92ac,0x0001,microcode_table_58a6_data_92ac,byte
-0x92af,0x0001,microcode_table_5aa2_data_92af,byte
-0x92b2,0x0001,microcode_table_5864_data_92b2,byte
-0x92b5,0x0001,microcode_table_54c2_data_92b5,byte
-0x92bd,0x0001,microcode_table_58e2_data_92bd,byte
-0x92c0,0x0001,microcode_table_58e4_data_92c0,byte
-0x92cf,0x0001,microcode_table_5ba2_data_92cf,byte
-0x92d2,0x0001,microcode_table_55e2_data_92d2,byte
-0x92d7,0x0001,microcode_table_55b0_data_92d7,byte
-0x92de,0x0001,microcode_table_55b2_data_92de,byte
-0x92e5,0x0001,microcode_table_55b4_data_92e5,byte
-0x92ec,0x0001,microcode_table_55b6_data_92ec,byte
-0x92f3,0x0001,microcode_table_55b8_data_92f3,byte
-0x92fa,0x0001,microcode_table_55ba_data_92fa,byte
-0x9301,0x0001,microcode_table_55bc_data_9301,byte
-0x9308,0x0001,microcode_table_55be_data_9308,byte
-0x930f,0x0001,microcode_table_59d8_data_930f,byte
-0x9312,0x0001,microcode_table_59d6_data_9312,byte
-0x9315,0x0001,microcode_table_59da_data_9315,byte
-0x9318,0x0001,microcode_table_54ca_data_9318,byte
-0x931c,0x0001,microcode_table_54cc_data_931c,byte
-0x931e,0x0001,microcode_table_542c_data_931e,byte
-0x9327,0x0001,microcode_table_552c_data_9327,byte
-0x932a,0x0001,microcode_table_543c_data_932a,byte
-0x9333,0x0001,microcode_table_553c_data_9333,byte
-0x9336,0x0001,microcode_table_542e_data_9336,byte
-0x933f,0x0001,microcode_table_552e_data_933f,byte
-0x9342,0x0001,microcode_table_543e_data_9342,byte
-0x934b,0x0001,microcode_table_553e_data_934b,byte
-0x934e,0x0001,microcode_table_5432_data_934e,byte
-0x9357,0x0001,microcode_table_542a_data_9357,byte
-0x9360,0x0001,microcode_table_552a_data_9360,byte
-0x9363,0x0001,microcode_table_543a_data_9363,byte
-0x936c,0x0001,microcode_table_553a_data_936c,byte
-0x936f,0x0001,microcode_table_54f8_data_936f,byte
-0x9371,0x0001,microcode_table_56f8_data_9371,byte
-0x9374,0x0001,microcode_table_5af8_data_9374,byte
-0x9377,0x0001,microcode_table_5b78_data_9377,byte
-0x937a,0x0001,microcode_table_5b8a_data_937a,byte
-0x9387,0x0001,microcode_table_54f2_data_9387,byte
-0x9389,0x0001,microcode_table_56f2_data_9389,byte
-0x938c,0x0001,microcode_table_5b72_data_938c,byte
-0x938f,0x0001,microcode_table_55fe_data_938f,byte
-0x93a0,0x0001,microcode_table_5abe_data_93a0,byte
-0x93b1,0x0001,microcode_table_56c8_data_93b1,byte
-0x93c1,0x0001,microcode_table_54a6_data_93c1,byte
-0x93cf,0x0001,microcode_table_54a8_data_93cf,byte
-0x93dd,0x0001,microcode_table_5828_data_93dd,byte
-0x93e0,0x0001,microcode_table_58a8_data_93e0,byte
-0x93e3,0x0001,microcode_table_54aa_data_93e3,byte
-0x93f1,0x0001,microcode_table_582a_data_93f1,byte
-0x93f4,0x0001,microcode_table_58aa_data_93f4,byte
-0x93f7,0x0001,microcode_table_54ac_data_93f7,byte
-0x9405,0x0001,microcode_table_582c_data_9405,byte
-0x9408,0x0001,microcode_table_58ac_data_9408,byte
-0x940b,0x0001,microcode_table_54ae_data_940b,byte
-0x9419,0x0001,microcode_table_582e_data_9419,byte
-0x941c,0x0001,microcode_table_58ae_data_941c,byte
-0x941f,0x0001,microcode_table_56c2_data_941f,byte
-0x942a,0x0001,microcode_table_55f8_data_942a,byte
-0x9437,0x0001,microcode_table_5458_data_9437,byte
-0x9439,0x0001,microcode_table_59ee_data_9439,byte
-0x943c,0x0001,microcode_table_585c_data_943c,byte
-0x943f,0x0001,microcode_table_59dc_data_943f,byte
-0x9442,0x0001,microcode_table_5a1c_data_9442,byte
-0x9445,0x0001,microcode_table_5a5c_data_9445,byte
-0x9448,0x0001,microcode_table_5a9c_data_9448,byte
-0x9453,0x0001,microcode_table_585e_data_9453,byte
-0x9456,0x0001,microcode_table_59de_data_9456,byte
-0x9459,0x0001,microcode_table_5a1e_data_9459,byte
-0x945c,0x0001,microcode_table_5a5e_data_945c,byte
-0x945f,0x0001,microcode_table_5a9e_data_945f,byte
-0x946a,0x0001,microcode_table_5aee_data_946a,byte
-0x946d,0x0001,microcode_table_5bb2_data_946d,byte
-0x948c,0x0001,microcode_table_5738_data_948c,byte
-0x9497,0x0001,microcode_table_57d6_data_9497,byte
-0x94aa,0x0001,microcode_table_57d8_data_94aa,byte
-0x94bd,0x0001,microcode_table_57da_data_94bd,byte
-0x94d0,0x0001,microcode_table_57dc_data_94d0,byte
-0x94e3,0x0001,microcode_table_57de_data_94e3,byte
-0x94f6,0x0001,microcode_table_5720_data_94f6,byte
-0x9511,0x0001,microcode_table_57e4_data_9511,byte
-0x951a,0x0001,microcode_table_57a6_data_951a,byte
-0x9527,0x0001,microcode_table_57a8_data_9527,byte
-0x9534,0x0001,microcode_table_57aa_data_9534,byte
-0x9541,0x0001,microcode_table_57ac_data_9541,byte
-0x954e,0x0001,microcode_table_57ae_data_954e,byte
-0x955b,0x0001,microcode_table_58e0_data_955b,byte
-0x955e,0x0001,microcode_table_5450_data_955e,byte
-0x9560,0x0001,microcode_table_5550_data_9560,byte
-0x9563,0x0001,microcode_table_5650_data_9563,byte
-0x9565,0x0001,microcode_table_5750_data_9565,byte
-0x9578,0x0001,microcode_table_55c2_data_9578,byte
-0x957f,0x0001,microcode_table_5a74_data_957f,byte
-0x9582,0x0001,microcode_table_5a78_data_9582,byte
-0x9585,0x0001,microcode_table_54f6_data_9585,byte
-0x9587,0x0001,microcode_table_56f6_data_9587,byte
-0x958a,0x0001,microcode_table_5b76_data_958a,byte
-0x958d,0x0001,microcode_table_5b34_data_958d,byte
-0x9596,0x0001,microcode_table_54fa_data_9596,byte
-0x9598,0x0001,microcode_table_55fa_data_9598,byte
-0x95ab,0x0001,microcode_table_5a3a_data_95ab,byte
-0x95b0,0x0001,microcode_table_5aba_data_95b0,byte
-0x95b7,0x0001,microcode_table_5b3e_data_95b7,byte
-0x95c4,0x0001,microcode_table_5b3a_data_95c4,byte
-0x95d1,0x0001,microcode_table_551c_data_95d1,byte
+0x8e00,0x0001,microcode1080_countdown_30,byte
+0x8e03,0x0001,microcode4080_x_outside_61,byte
+0x8e06,0x0001,microcode1080_animate_shape_68,byte
+0x8e17,0x0001,microcode1080_animate_shape_30,byte
+0x8e1e,0x0001,microcode1080_animate_shape_31,byte
+0x8e25,0x0001,microcode1080_countdown_31,byte
+0x8e28,0x0001,microcode1080_animate_shape_32,byte
+0x8e2f,0x0001,microcode1080_countdown_32,byte
+0x8e32,0x0001,microcode1080_animate_shape_33,byte
+0x8e39,0x0001,microcode1080_countdown_33,byte
+0x8e3c,0x0001,microcode1080_animate_shape_34,byte
+0x8e43,0x0001,microcode1080_countdown_34,byte
+0x8e46,0x0001,microcode1080_animate_shape_35,byte
+0x8e4d,0x0001,microcode1080_countdown_35,byte
+0x8e50,0x0001,microcode1080_animate_shape_36,byte
+0x8e57,0x0001,microcode1080_countdown_36,byte
+0x8e5a,0x0001,microcode1080_animate_shape_37,byte
+0x8e61,0x0001,microcode1080_countdown_37,byte
+0x8e64,0x0001,microcode4080_x_outside_68,byte
+0x8e67,0x0001,microcode1080_animate_shape_38,byte
+0x8e6e,0x0001,microcode1080_countdown_38,byte
+0x8e71,0x0001,microcode1080_animate_shape_39,byte
+0x8e78,0x0001,microcode1080_countdown_39,byte
+0x8e7b,0x0001,microcode1080_animate_shape_3a,byte
+0x8e82,0x0001,microcode1080_countdown_3a,byte
+0x8e85,0x0001,microcode1080_animate_shape_3b,byte
+0x8e8c,0x0001,microcode1080_countdown_3b,byte
+0x8e8f,0x0001,microcode1080_animate_shape_69,byte
+0x8ea0,0x0001,microcode4080_x_outside_69,byte
+0x8ea3,0x0001,microcode1080_animate_shape_6a,byte
+0x8eb4,0x0001,microcode4080_x_outside_6a,byte
+0x8eb7,0x0001,microcode6080_fire_state_f0_68,byte
+0x8ec0,0x0001,microcode6080_fire_state_f0_69,byte
+0x8ec9,0x0001,microcode6080_fire_state_f0_6a,byte
+0x8ed2,0x0001,microcode4080_x_outside_44,byte
+0x8ed5,0x0001,microcode4080_x_outside_45,byte
+0x8ed8,0x0001,microcode4080_x_outside_46,byte
+0x8edb,0x0001,microcode1080_animate_shape_44,byte
+0x8ee6,0x0001,microcode1080_animate_shape_45,byte
+0x8ef1,0x0001,microcode1080_animate_shape_46,byte
+0x8efc,0x0001,microcode1080_animate_shape_14,byte
+0x8f05,0x0001,microcode1080_animate_shape_18,byte
+0x8f0e,0x0001,microcode1080_countdown_19,byte
+0x8f11,0x0001,microcode1080_animate_shape_1a,byte
+0x8f1a,0x0001,microcode1080_countdown_1a,byte
+0x8f1d,0x0001,microcode1080_animate_shape_1b,byte
+0x8f26,0x0001,microcode1080_countdown_1b,byte
+0x8f29,0x0001,microcode1080_animate_shape_1c,byte
+0x8f32,0x0001,microcode4080_x_outside_43,byte
+0x8f35,0x0001,microcode4080_x_outside_42,byte
+0x8f38,0x0001,microcode6080_test_fire_state_f1_61,byte
+0x8f3a,0x0001,microcode1080_collision_59,byte
+0x8f43,0x0001,microcode1080_collision_5a,byte
+0x8f4c,0x0001,microcode1080_collision_5b,byte
+0x8f55,0x0001,microcode4080_x_outside_41,byte
+0x8f58,0x0001,microcode4080_x_outside_48,byte
+0x8f5b,0x0001,microcode1080_animate_shape_48,byte
+0x8f5d,0x0001,microcode1080_animate_shape_70,byte
+0x8f5f,0x0001,microcode4080_x_outside_71,byte
+0x8f62,0x0001,microcode1080_animate_shape_4e,byte
+0x8f69,0x0001,microcode1080_countdown_4e,byte
+0x8f6c,0x0001,microcode1080_animate_shape_4f,byte
+0x8f73,0x0001,microcode1080_countdown_4f,byte
+0x8f76,0x0001,microcode1080_collision_58,byte
+0x8f7f,0x0001,microcode1080_collision_50,byte
+0x8f82,0x0001,microcode4080_x_outside_50,byte
+0x8f85,0x0001,microcode6080_test_fire_state_f0_61,byte
+0x8f87,0x0001,microcode1080_animate_shape_20,byte
+0x8f8c,0x0001,microcode1080_animate_shape_21,byte
+0x8f91,0x0001,microcode1080_animate_shape_22,byte
+0x8f96,0x0001,microcode1080_animate_shape_24,byte
+0x8f9b,0x0001,microcode1080_animate_shape_26,byte
+0x8fa0,0x0001,microcode6080_fire_state_f0_63,byte
+0x8fc1,0x0001,microcode1080_countdown_14,byte
+0x8fc4,0x0001,microcode1080_countdown_18,byte
+0x8fc7,0x0001,microcode1080_countdown_1c,byte
+0x8fca,0x0001,microcode1080_animate_shape_23,byte
+0x8fcf,0x0001,microcode1080_animate_shape_25,byte
+0x8fd4,0x0001,microcode1080_animate_shape_27,byte
+0x8fd9,0x0001,microcode1080_collision_5c,byte
+0x8fe2,0x0001,microcode1080_animate_shape_58,byte
+0x8ff7,0x0001,microcode1080_animate_shape_5a,byte
+0x900b,0x0001,microcode1080_animate_shape_5b,byte
+0x9021,0x0001,microcode1080_animate_shape_5c,byte
+0x9035,0x0001,microcode4080_x_outside_58,byte
+0x9038,0x0001,microcode4080_y_outside_58,byte
+0x904b,0x0001,microcode4080_x_outside_59,byte
+0x904e,0x0001,microcode4080_y_outside_59,byte
+0x9061,0x0001,microcode4080_x_outside_5a,byte
+0x9064,0x0001,microcode4080_y_outside_5a,byte
+0x9077,0x0001,microcode4080_x_outside_5b,byte
+0x907a,0x0001,microcode4080_y_outside_5b,byte
+0x908d,0x0001,microcode4080_x_outside_5c,byte
+0x9090,0x0001,microcode4080_y_outside_5c,byte
+0x90a3,0x0001,microcode1080_animate_shape_11,byte
+0x90a5,0x0001,microcode1080_animate_shape_10,byte
+0x90a7,0x0001,microcode1080_collision_5d,byte
+0x90b0,0x0001,microcode4080_x_outside_5d,byte
+0x90b3,0x0001,microcode4080_y_outside_5d,byte
+0x90c6,0x0001,microcode1080_animate_shape_5e,byte
+0x90da,0x0001,microcode1080_collision_5e,byte
+0x90e3,0x0001,microcode4080_x_outside_5e,byte
+0x90e6,0x0001,microcode4080_y_outside_5e,byte
+0x90f9,0x0001,microcode1080_animate_shape_5f,byte
+0x910f,0x0001,microcode1080_collision_5f,byte
+0x9118,0x0001,microcode4080_x_outside_5f,byte
+0x911b,0x0001,microcode4080_y_outside_5f,byte
+0x912e,0x0001,microcode6080_test_fire_state_f2_61,byte
+0x9130,0x0001,microcode4080_y_outside_61,byte
+0x9139,0x0001,microcode6080_test_fire_state_f3_61,byte
+0x913b,0x0001,microcode6080_fire_state_f3_61,byte
+0x913e,0x0001,microcode4080_x_outside_4d,byte
+0x9141,0x0001,microcode1080_collision_51,byte
+0x9144,0x0001,microcode4080_x_outside_51,byte
+0x9147,0x0001,microcode1080_collision_52,byte
+0x914a,0x0001,microcode4080_x_outside_52,byte
+0x914d,0x0001,microcode1080_animate_shape_47,byte
+0x914f,0x0001,microcode4080_x_outside_47,byte
+0x9152,0x0001,microcode6080_test_fire_state_f2_78,byte
+0x9155,0x0001,microcode6080_test_fire_state_f3_78,byte
+0x9158,0x0001,microcode1080_animate_shape_78,byte
+0x915a,0x0001,microcode6080_fire_state_f2_78,byte
+0x9163,0x0001,microcode1080_collision_test_10,byte
+0x9166,0x0001,microcode1080_animate_shape_7a,byte
+0x9168,0x0001,microcode1080_countdown_7a,byte
+0x9175,0x0001,microcode6080_test_fire_state_f2_7a,byte
+0x9178,0x0001,microcode6080_test_fire_state_f3_7a,byte
+0x917b,0x0001,microcode4080_x_outside_6b,byte
+0x917e,0x0001,microcode1080_animate_shape_59,byte
+0x9192,0x0001,microcode1080_animate_shape_5d,byte
+0x91a7,0x0001,microcode4080_y_outside_65,byte
+0x91aa,0x0001,microcode1080_animate_shape_62,byte
+0x91ac,0x0001,microcode1080_animate_shape_64,byte
+0x91b0,0x0001,microcode1080_collision_test_78,byte
+0x91b3,0x0001,microcode1080_collision_test_7a,byte
+0x91b6,0x0001,microcode1080_countdown_64,byte
+0x91b9,0x0001,microcode1080_animate_shape_60,byte
+0x91bb,0x0001,microcode1080_animate_shape_7f,byte
+0x91bd,0x0001,microcode6080_fire_state_f0_7f,byte
+0x91c0,0x0001,microcode6080_fire_state_f2_60,byte
+0x91c3,0x0001,microcode0010_init_or_zero_0d,byte
+0x91c8,0x0001,microcode6080_fire_state_f1_61,byte
+0x91e9,0x0001,microcode1080_animate_shape_12,byte
+0x91eb,0x0001,microcode1080_countdown_68,byte
+0x91ee,0x0001,microcode1080_countdown_69,byte
+0x91f1,0x0001,microcode1080_countdown_6a,byte
+0x91f4,0x0001,microcode1080_countdown_60,byte
+0x91f9,0x0001,microcode6080_fire_state_f1_60,byte
+0x91fc,0x0001,microcode1080_collision_44,byte
+0x9203,0x0001,microcode1080_collision_45,byte
+0x920a,0x0001,microcode1080_collision_46,byte
+0x9211,0x0001,microcode1080_collision_47,byte
+0x9218,0x0001,microcode1080_collision_48,byte
+0x921f,0x0001,microcode1080_collision_test_14,byte
+0x9222,0x0001,microcode1080_collision_14,byte
+0x922d,0x0001,microcode1080_collision_test_18,byte
+0x9230,0x0001,microcode1080_collision_test_1c,byte
+0x9233,0x0001,microcode1080_animate_shape_41,byte
+0x9237,0x0001,microcode1080_animate_shape_42,byte
+0x923b,0x0001,microcode1080_animate_shape_43,byte
+0x923f,0x0001,microcode6080_fire_state_f0_65,byte
+0x9242,0x0001,microcode6080_fire_state_f1_65,byte
+0x9245,0x0001,microcode6080_test_fire_state_f1_6b,byte
+0x9248,0x0001,microcode6080_fire_state_f1_6b,byte
+0x9253,0x0001,microcode6080_fire_state_f0_6b,byte
+0x9256,0x0001,microcode4080_x_outside_6c,byte
+0x9259,0x0001,microcode6080_fire_state_f0_6c,byte
+0x925c,0x0001,microcode6080_test_fire_state_f1_6c,byte
+0x925f,0x0001,microcode6080_fire_state_f1_6c,byte
+0x926a,0x0001,microcode4080_x_outside_6d,byte
+0x926d,0x0001,microcode6080_fire_state_f0_6d,byte
+0x9270,0x0001,microcode6080_test_fire_state_f1_6d,byte
+0x9273,0x0001,microcode6080_fire_state_f1_6d,byte
+0x927e,0x0001,microcode1080_collision_18,byte
+0x928b,0x0001,microcode6080_fire_state_f3_78,byte
+0x9294,0x0001,microcode1080_animate_shape_50,byte
+0x929a,0x0001,microcode1080_animate_shape_51,byte
+0x92a0,0x0001,microcode1080_animate_shape_52,byte
+0x92a6,0x0001,microcode4080_x_outside_70,byte
+0x92a9,0x0001,microcode4080_x_outside_53,byte
+0x92ac,0x0001,microcode4080_y_outside_53,byte
+0x92af,0x0001,microcode6080_fire_state_f1_71,byte
+0x92b2,0x0001,microcode4080_x_outside_72,byte
+0x92b5,0x0001,microcode1080_animate_shape_61,byte
+0x92bd,0x0001,microcode4080_y_outside_71,byte
+0x92c0,0x0001,microcode4080_y_outside_72,byte
+0x92cf,0x0001,microcode6080_fire_state_f3_71,byte
+0x92d2,0x0001,microcode1080_countdown_71,byte
+0x92d7,0x0001,microcode1080_countdown_58,byte
+0x92de,0x0001,microcode1080_countdown_59,byte
+0x92e5,0x0001,microcode1080_countdown_5a,byte
+0x92ec,0x0001,microcode1080_countdown_5b,byte
+0x92f3,0x0001,microcode1080_countdown_5c,byte
+0x92fa,0x0001,microcode1080_countdown_5d,byte
+0x9301,0x0001,microcode1080_countdown_5e,byte
+0x9308,0x0001,microcode1080_countdown_5f,byte
+0x930f,0x0001,microcode6080_test_fire_state_f0_6c,byte
+0x9312,0x0001,microcode6080_test_fire_state_f0_6b,byte
+0x9315,0x0001,microcode6080_test_fire_state_f0_6d,byte
+0x9318,0x0001,microcode1080_animate_shape_65,byte
+0x931c,0x0001,microcode1080_animate_shape_66,byte
+0x931e,0x0001,microcode1080_animate_shape_16,byte
+0x9327,0x0001,microcode1080_countdown_16,byte
+0x932a,0x0001,microcode1080_animate_shape_1e,byte
+0x9333,0x0001,microcode1080_countdown_1e,byte
+0x9336,0x0001,microcode1080_animate_shape_17,byte
+0x933f,0x0001,microcode1080_countdown_17,byte
+0x9342,0x0001,microcode1080_animate_shape_1f,byte
+0x934b,0x0001,microcode1080_countdown_1f,byte
+0x934e,0x0001,microcode1080_animate_shape_19,byte
+0x9357,0x0001,microcode1080_animate_shape_15,byte
+0x9360,0x0001,microcode1080_countdown_15,byte
+0x9363,0x0001,microcode1080_animate_shape_1d,byte
+0x936c,0x0001,microcode1080_countdown_1d,byte
+0x936f,0x0001,microcode1080_animate_shape_7c,byte
+0x9371,0x0001,microcode1080_collision_test_7c,byte
+0x9374,0x0001,microcode6080_test_fire_state_f2_7c,byte
+0x9377,0x0001,microcode6080_test_fire_state_f3_7c,byte
+0x937a,0x0001,microcode6080_fire_state_f3_65,byte
+0x9387,0x0001,microcode1080_animate_shape_79,byte
+0x9389,0x0001,microcode1080_collision_test_79,byte
+0x938c,0x0001,microcode6080_test_fire_state_f3_79,byte
+0x938f,0x0001,microcode1080_countdown_7f,byte
+0x93a0,0x0001,microcode6080_fire_state_f1_7f,byte
+0x93b1,0x0001,microcode1080_collision_test_64,byte
+0x93c1,0x0001,microcode1080_animate_shape_53,byte
+0x93cf,0x0001,microcode1080_animate_shape_54,byte
+0x93dd,0x0001,microcode4080_x_outside_54,byte
+0x93e0,0x0001,microcode4080_y_outside_54,byte
+0x93e3,0x0001,microcode1080_animate_shape_55,byte
+0x93f1,0x0001,microcode4080_x_outside_55,byte
+0x93f4,0x0001,microcode4080_y_outside_55,byte
+0x93f7,0x0001,microcode1080_animate_shape_56,byte
+0x9405,0x0001,microcode4080_x_outside_56,byte
+0x9408,0x0001,microcode4080_y_outside_56,byte
+0x940b,0x0001,microcode1080_animate_shape_57,byte
+0x9419,0x0001,microcode4080_x_outside_57,byte
+0x941c,0x0001,microcode4080_y_outside_57,byte
+0x941f,0x0001,microcode1080_collision_test_61,byte
+0x942a,0x0001,microcode1080_countdown_7c,byte
+0x9437,0x0001,microcode1080_animate_shape_2c,byte
+0x9439,0x0001,microcode6080_test_fire_state_f0_77,byte
+0x943c,0x0001,microcode4080_x_outside_6e,byte
+0x943f,0x0001,microcode6080_test_fire_state_f0_6e,byte
+0x9442,0x0001,microcode6080_fire_state_f0_6e,byte
+0x9445,0x0001,microcode6080_test_fire_state_f1_6e,byte
+0x9448,0x0001,microcode6080_fire_state_f1_6e,byte
+0x9453,0x0001,microcode4080_x_outside_6f,byte
+0x9456,0x0001,microcode6080_test_fire_state_f0_6f,byte
+0x9459,0x0001,microcode6080_fire_state_f0_6f,byte
+0x945c,0x0001,microcode6080_test_fire_state_f1_6f,byte
+0x945f,0x0001,microcode6080_fire_state_f1_6f,byte
+0x946a,0x0001,microcode6080_test_fire_state_f2_77,byte
+0x946d,0x0001,microcode6080_fire_state_f3_79,byte
+0x948c,0x0001,microcode1080_collision_1c,byte
+0x9497,0x0001,microcode1080_collision_6b,byte
+0x94aa,0x0001,microcode1080_collision_6c,byte
+0x94bd,0x0001,microcode1080_collision_6d,byte
+0x94d0,0x0001,microcode1080_collision_6e,byte
+0x94e3,0x0001,microcode1080_collision_6f,byte
+0x94f6,0x0001,microcode1080_collision_10,byte
+0x9511,0x0001,microcode1080_collision_72,byte
+0x951a,0x0001,microcode1080_collision_53,byte
+0x9527,0x0001,microcode1080_collision_54,byte
+0x9534,0x0001,microcode1080_collision_55,byte
+0x9541,0x0001,microcode1080_collision_56,byte
+0x954e,0x0001,microcode1080_collision_57,byte
+0x955b,0x0001,microcode4080_y_outside_70,byte
+0x955e,0x0001,microcode1080_animate_shape_28,byte
+0x9560,0x0001,microcode1080_countdown_28,byte
+0x9563,0x0001,microcode1080_collision_test_28,byte
+0x9565,0x0001,microcode1080_collision_28,byte
+0x9578,0x0001,microcode1080_countdown_61,byte
+0x957f,0x0001,microcode6080_test_fire_state_f1_7a,byte
+0x9582,0x0001,microcode6080_test_fire_state_f1_7c,byte
+0x9585,0x0001,microcode1080_animate_shape_7b,byte
+0x9587,0x0001,microcode1080_collision_test_7b,byte
+0x958a,0x0001,microcode6080_test_fire_state_f3_7b,byte
+0x958d,0x0001,microcode6080_fire_state_f2_7a,byte
+0x9596,0x0001,microcode1080_animate_shape_7d,byte
+0x9598,0x0001,microcode1080_countdown_7d,byte
+0x95ab,0x0001,microcode6080_fire_state_f0_7d,byte
+0x95b0,0x0001,microcode6080_fire_state_f1_7d,byte
+0x95b7,0x0001,microcode6080_fire_state_f2_7f,byte
+0x95c4,0x0001,microcode6080_fire_state_f2_7d,byte
+0x95d1,0x0001,microcode0010_init_or_zero_0e,byte
 # object 0x6b is helicopter_or_enemy_plane0
-# 54d6 = microcode_table_animate_shape + 0x6b * 2
+# 54d6 = microcode1080_animate_shape + 0x6b * 2
 #              -> implied start of section 0xf0
 #      .db     0x2c helicopter shape
 #      .db     0xf2 -> start of section 0xf2
@@ -865,10 +876,10 @@ items
 #      .db     0xf3 -> start of section 0xf3
 #      .db     0x2f enemy_plane1 shape
 #      .db     0x00 sentinel
-0x95dc,0x0001,microcode_table_54d6_data_95dc,byte
-0x95e2,0x0001,microcode_table_5936_data_95e2,byte
+0x95dc,0x0001,microcode1080_animate_shape_6b,byte
+0x95e2,0x0001,microcode6080_homing_6b,byte
 # object 0x6c is helicopter_or_enemy_plane1
-# 54d8 = microcode_table_animate_shape + 0x6c * 2
+# 54d8 = microcode1080_animate_shape + 0x6c * 2
 #              -> implied start of section 0xf0
 #      .db     0x2c helicopter shape
 #      .db     0xf2 -> start of section 0xf2
@@ -876,10 +887,10 @@ items
 #      .db     0xf3 -> start of section 0xf3
 #      .db     0x2f enemy_plane1 shape
 #      .db     0x00 sentinel
-0x95e9,0x0001,microcode_table_54d8_data_95e9,byte
-0x95ef,0x0001,microcode_table_5938_data_95ef,byte
+0x95e9,0x0001,microcode1080_animate_shape_6c,byte
+0x95ef,0x0001,microcode6080_homing_6c,byte
 # object 0x6d is helicopter_or_enemy_plane2
-# 54da = microcode_table_animate_shape + 0x6d * 2
+# 54da = microcode1080_animate_shape + 0x6d * 2
 #              -> implied start of section 0xf0
 #      .db     0x2c helicopter shape
 #      .db     0xf2 -> start of section 0xf2
@@ -887,59 +898,59 @@ items
 #      .db     0xf3 -> start of section 0xf3
 #      .db     0x2f enemy_plane1 shape
 #      .db     0x00 sentinel
-0x95f6,0x0001,microcode_table_54da_data_95f6,byte
-0x95fc,0x0001,microcode_table_593a_data_95fc,byte
-0x9603,0x0001,microcode_table_54dc_data_9603,byte
-0x9609,0x0001,microcode_table_593c_data_9609,byte
-0x9610,0x0001,microcode_table_54de_data_9610,byte
-0x9616,0x0001,microcode_table_593e_data_9616,byte
-0x961d,0x0001,microcode_table_5588_data_961d,byte
-0x9626,0x0001,microcode_table_558a_data_9626,byte
-0x962f,0x0001,microcode_table_558c_data_962f,byte
-0x9638,0x0001,microcode_table_588e_data_9638,byte
-0x963b,0x0001,microcode_table_5890_data_963b,byte
-0x963e,0x0001,microcode_table_5b56_data_963e,byte
-0x9641,0x0001,microcode_table_5b96_data_9641,byte
-0x9648,0x0001,microcode_table_5b58_data_9648,byte
-0x964b,0x0001,microcode_table_5b98_data_964b,byte
-0x9652,0x0001,microcode_table_5b5a_data_9652,byte
-0x9655,0x0001,microcode_table_5b9a_data_9655,byte
-0x965c,0x0001,microcode_table_5b5c_data_965c,byte
-0x965f,0x0001,microcode_table_5b9c_data_965f,byte
-0x9666,0x0001,microcode_table_5b5e_data_9666,byte
-0x9669,0x0001,microcode_table_5b9e_data_9669,byte
-0x9670,0x0001,microcode_table_54e6_data_9670,byte
-0x9676,0x0001,microcode_table_57e6_data_9676,byte
-0x9679,0x0001,microcode_table_545e_data_9679,byte
-0x967b,0x0001,microcode_table_5866_data_967b,byte
-0x967e,0x0001,microcode_table_54e8_data_967e,byte
-0x9684,0x0001,microcode_table_57e8_data_9684,byte
-0x9687,0x0001,microcode_table_5868_data_9687,byte
-0x968a,0x0001,microcode_table_54ea_data_968a,byte
-0x9690,0x0001,microcode_table_57ea_data_9690,byte
-0x9693,0x0001,microcode_table_586a_data_9693,byte
-0x9696,0x0001,microcode_table_54ec_data_9696,byte
-0x9698,0x0001,microcode_table_5a6c_data_9698,byte
-0x969b,0x0001,microcode_table_59ec_data_969b,byte
-0x969e,0x0001,microcode_table_545a_data_969e,byte
-0x96a0,0x0001,microcode_table_5af2_data_96a0,byte
-0x96a3,0x0001,microcode_table_5af6_data_96a3,byte
-0x96a6,0x0001,microcode_table_5b32_data_96a6,byte
-0x96a9,0x0001,microcode_table_5b36_data_96a9,byte
-0x96ac,0x0001,microcode_table_545c_data_96ac,byte
-0x96ae,0x0001,microcode_table_586e_data_96ae,byte
-0x96b5,0x0001,microcode_table_57ee_data_96b5,byte
-0x96c4,0x0001,microcode_table_555e_data_96c4,byte
-0x96cb,0x0001,microcode_table_589a_data_96cb,byte
-0x96ce,0x0001,microcode_table_594e_data_96ce,byte
-0x96d0,0x0001,microcode_table_54ee_data_96d0,byte
-0x96d6,0x0001,microcode_table_5b2e_data_96d6,byte
-0x96dd,0x0001,microcode_table_5bae_data_96dd,byte
-0x96e0,0x0001,microcode_table_555a_data_96e0,byte
-0x96f1,0x0001,microcode_table_555c_data_96f1,byte
-0x9704,0x0001,microcode_table_5b6e_data_9704,byte
+0x95f6,0x0001,microcode1080_animate_shape_6d,byte
+0x95fc,0x0001,microcode6080_homing_6d,byte
+0x9603,0x0001,microcode1080_animate_shape_6e,byte
+0x9609,0x0001,microcode6080_homing_6e,byte
+0x9610,0x0001,microcode1080_animate_shape_6f,byte
+0x9616,0x0001,microcode6080_homing_6f,byte
+0x961d,0x0001,microcode1080_countdown_44,byte
+0x9626,0x0001,microcode1080_countdown_45,byte
+0x962f,0x0001,microcode1080_countdown_46,byte
+0x9638,0x0001,microcode4080_y_outside_47,byte
+0x963b,0x0001,microcode4080_y_outside_48,byte
+0x963e,0x0001,microcode6080_test_fire_state_f3_6b,byte
+0x9641,0x0001,microcode6080_fire_state_f3_6b,byte
+0x9648,0x0001,microcode6080_test_fire_state_f3_6c,byte
+0x964b,0x0001,microcode6080_fire_state_f3_6c,byte
+0x9652,0x0001,microcode6080_test_fire_state_f3_6d,byte
+0x9655,0x0001,microcode6080_fire_state_f3_6d,byte
+0x965c,0x0001,microcode6080_test_fire_state_f3_6e,byte
+0x965f,0x0001,microcode6080_fire_state_f3_6e,byte
+0x9666,0x0001,microcode6080_test_fire_state_f3_6f,byte
+0x9669,0x0001,microcode6080_fire_state_f3_6f,byte
+0x9670,0x0001,microcode1080_animate_shape_73,byte
+0x9676,0x0001,microcode1080_collision_73,byte
+0x9679,0x0001,microcode1080_animate_shape_2f,byte
+0x967b,0x0001,microcode4080_x_outside_73,byte
+0x967e,0x0001,microcode1080_animate_shape_74,byte
+0x9684,0x0001,microcode1080_collision_74,byte
+0x9687,0x0001,microcode4080_x_outside_74,byte
+0x968a,0x0001,microcode1080_animate_shape_75,byte
+0x9690,0x0001,microcode1080_collision_75,byte
+0x9693,0x0001,microcode4080_x_outside_75,byte
+0x9696,0x0001,microcode1080_animate_shape_76,byte
+0x9698,0x0001,microcode6080_test_fire_state_f1_76,byte
+0x969b,0x0001,microcode6080_test_fire_state_f0_76,byte
+0x969e,0x0001,microcode1080_animate_shape_2d,byte
+0x96a0,0x0001,microcode6080_test_fire_state_f2_79,byte
+0x96a3,0x0001,microcode6080_test_fire_state_f2_7b,byte
+0x96a6,0x0001,microcode6080_fire_state_f2_79,byte
+0x96a9,0x0001,microcode6080_fire_state_f2_7b,byte
+0x96ac,0x0001,microcode1080_animate_shape_2e,byte
+0x96ae,0x0001,microcode4080_x_outside_77,byte
+0x96b5,0x0001,microcode1080_collision_77,byte
+0x96c4,0x0001,microcode1080_countdown_2f,byte
+0x96cb,0x0001,microcode4080_y_outside_4d,byte
+0x96ce,0x0001,microcode6080_homing_77,byte
+0x96d0,0x0001,microcode1080_animate_shape_77,byte
+0x96d6,0x0001,microcode6080_fire_state_f2_77,byte
+0x96dd,0x0001,microcode6080_fire_state_f3_77,byte
+0x96e0,0x0001,microcode1080_countdown_2d,byte
+0x96f1,0x0001,microcode1080_countdown_2e,byte
+0x9704,0x0001,microcode6080_test_fire_state_f3_77,byte
 # object 0x4d is radar_or_icbm
-# 549a = microcode_table_animate_shape + 0x4d * 2
+# 549a = microcode1080_animate_shape + 0x4d * 2
 # controls the headquarters, icbm or radar shape as follows
 #              -> implied start of section 0xf0
 #      .db     0x72 headquarters shape
@@ -972,158 +983,158 @@ items
 #      and     #0x03
 #      ora     #0xf0
 #      jmp     [vec_calculate_object_shape]
-0x9707,0x0001,microcode_table_549a_data_9707,byte
-0x9711,0x0001,microcode_table_54e4_data_9711,byte
-0x971d,0x0001,microcode_table_56c4_data_971d,byte
-0x972d,0x0001,microcode_table_5bb6_data_972d,byte
-0x9746,0x0001,microcode_table_57d0_data_9746,byte
-0x974f,0x0001,microcode_table_58d0_data_974f,byte
-0x9758,0x0001,microcode_table_57d2_data_9758,byte
-0x9761,0x0001,microcode_table_58d2_data_9761,byte
-0x976a,0x0001,microcode_table_57d4_data_976a,byte
-0x9773,0x0001,microcode_table_58d4_data_9773,byte
-0x977c,0x0001,microcode_table_56d6_data_977c,byte
-0x9782,0x0001,microcode_table_56d8_data_9782,byte
-0x9788,0x0001,microcode_table_56da_data_9788,byte
-0x978e,0x0001,microcode_table_56dc_data_978e,byte
-0x9794,0x0001,microcode_table_56de_data_9794,byte
-0x979a,0x0001,microcode_table_56e0_data_979a,byte
-0x97a3,0x0001,microcode_table_57e0_data_97a3,byte
-0x97aa,0x0001,microcode_table_5520_data_97aa,byte
-0x97cb,0x0001,microcode_table_56b0_data_97cb,byte
-0x97e0,0x0001,microcode_table_56b2_data_97e0,byte
-0x97f5,0x0001,microcode_table_56b4_data_97f5,byte
-0x980a,0x0001,microcode_table_56b6_data_980a,byte
-0x981f,0x0001,microcode_table_56b8_data_981f,byte
-0x9834,0x0001,microcode_table_56ba_data_9834,byte
-0x9849,0x0001,microcode_table_56bc_data_9849,byte
-0x985e,0x0001,microcode_table_56be_data_985e,byte
-0x9873,0x0001,microcode_table_56e4_data_9873,byte
-0x9884,0x0001,microcode_table_58cc_data_9884,byte
-0x988b,0x0001,microcode_table_56cc_data_988b,byte
-0x989d,0x0001,microcode_table_56ce_data_989d,byte
-0x98a0,0x0001,microcode_table_57ce_data_98a0,byte
-0x98a7,0x0001,microcode_table_5554_data_98a7,byte
-0x98aa,0x0001,microcode_table_57e2_data_98aa,byte
-0x98b1,0x0001,microcode_table_5654_data_98b1,byte
-0x98b4,0x0001,microcode_table_5754_data_98b4,byte
-0x98bb,0x0001,microcode_table_5454_data_98bb,byte
-0x98c5,0x0001,microcode_table_54e2_data_98c5,byte
-0x98d2,0x0001,microcode_table_5b62_data_98d2,byte
-0x98d5,0x0001,microcode_table_5b2c_data_98d5,byte
-0x98da,0x0001,microcode_table_5b6c_data_98da,byte
-0x98dd,0x0001,microcode_table_5bac_data_98dd,byte
-0x98e0,0x0001,microcode_table_592e_data_98e0,byte
-0x98e3,0x0001,microcode_table_5426_data_98e3,byte
-0x98e5,0x0001,microcode_table_5526_data_98e5,byte
-0x98ea,0x0001,microcode_table_57cc_data_98ea,byte
-0x9901,0x0001,microcode_table_584c_data_9901,byte
-0x9908,0x0001,microcode_table_550e_data_9908,byte
-0x9917,0x0001,microcode_table_5b0a_data_9917,byte
-0x9926,0x0001,microcode_table_5524_data_9926,byte
-0x9939,0x0001,microcode_table_5508_data_9939,byte
-0x994e,0x0001,microcode_table_550a_data_994e,byte
-0x9961,0x0001,microcode_table_5514_data_9961,byte
-0x9966,0x0001,microcode_table_5a2c_data_9966,byte
-0x997b,0x0001,microcode_table_5a02_data_997b,byte
-0x9994,0x0001,microcode_table_5b02_data_9994,byte
-0x99ad,0x0001,microcode_table_5aac_data_99ad,byte
-0x99cc,0x0001,microcode_table_54ce_data_99cc,byte
-0x99ce,0x0001,microcode_table_584e_data_99ce,byte
-0x99d9,0x0001,microcode_table_58ce_data_99d9,byte
-0x99e4,0x0001,microcode_table_5480_data_99e4,byte
-0x99ea,0x0001,microcode_table_5a0e_data_99ea,byte
-0x99ed,0x0001,microcode_table_5a8e_data_99ed,byte
-0x99f4,0x0001,microcode_table_55e0_data_99f4,byte
-0x99f7,0x0001,microcode_table_54c6_data_99f7,byte
-0x99f9,0x0001,microcode_table_57f0_data_99f9,byte
-0x9a0e,0x0001,microcode_table_57f2_data_9a0e,byte
-0x9a1d,0x0001,microcode_table_57f4_data_9a1d,byte
-0x9a32,0x0001,microcode_table_57f6_data_9a32,byte
-0x9a41,0x0001,microcode_table_5452_data_9a41,byte
-0x9a43,0x0001,microcode_table_5552_data_9a43,byte
-0x9a46,0x0001,microcode_table_5934_data_9a46,byte
-0x9a4f,0x0001,microcode_table_56a6_data_9a4f,byte
-0x9a5a,0x0001,microcode_table_56a8_data_9a5a,byte
-0x9a65,0x0001,microcode_table_56aa_data_9a65,byte
-0x9a70,0x0001,microcode_table_56ac_data_9a70,byte
-0x9a7b,0x0001,microcode_table_56ae_data_9a7b,byte
-0x9a86,0x0001,microcode_table_56a0_data_9a86,byte
-0x9a8f,0x0001,microcode_table_56a2_data_9a8f,byte
-0x9a98,0x0001,microcode_table_56a4_data_9a98,byte
-0x9aa1,0x0001,microcode_table_5558_data_9aa1,byte
-0x9aa6,0x0001,microcode_table_5930_data_9aa6,byte
-0x9aaf,0x0001,microcode_table_5932_data_9aaf,byte
-0x9ab8,0x0001,microcode_table_5aec_data_9ab8,byte
-0x9abc,0x0001,microcode_table_5a7c_data_9abc,byte
-0x9abf,0x0001,microcode_table_5b7c_data_9abf,byte
-0x9ac2,0x0001,microcode_table_587c_data_9ac2,byte
-0x9acf,0x0001,microcode_table_5844_data_9acf,byte
-0x9ad6,0x0001,microcode_table_5752_data_9ad6,byte
-0x9aeb,0x0001,microcode_table_57c2_data_9aeb,byte
-0x9b00,0x0001,microcode_table_55fc_data_9b00,byte
-0x9b09,0x0001,microcode_table_54fc_data_9b09,byte
-0x9b0b,0x0001,microcode_table_5b80_data_9b0b,byte
-0x9b26,0x0001,microcode_table_547a_data_9b26,byte
-0x9b28,0x0001,microcode_table_557a_data_9b28,byte
-0x9b3b,0x0001,microcode_table_551e_data_9b3b,byte
-0x9b48,0x0001,microcode_table_550c_data_9b48,byte
-0x9b51,0x0001,microcode_table_5478_data_9b51,byte
-0x9b53,0x0001,microcode_table_5678_data_9b53,byte
-0x9b55,0x0001,microcode_table_5778_data_9b55,byte
-0x9b58,0x0001,microcode_table_5578_data_9b58,byte
-0x9b63,0x0001,microcode_table_55ca_data_9b63,byte
-0x9b68,0x0001,microcode_table_584a_data_9b68,byte
-0x9b6d,0x0001,microcode_table_56e6_data_9b6d,byte
-0x9b72,0x0001,microcode_table_56e8_data_9b72,byte
-0x9b77,0x0001,microcode_table_56ea_data_9b77,byte
-0x9b7c,0x0001,microcode_table_56e2_data_9b7c,byte
-0x9b8c,0x0001,microcode_table_5622_data_9b8c,byte
-0x9b91,0x0001,microcode_table_5722_data_9b91,byte
-0x9b9e,0x0001,microcode_table_5522_data_9b9e,byte
-0x9bbb,0x0001,microcode_table_5ad0_data_9bbb,byte
-0x9bbe,0x0001,microcode_table_5b10_data_9bbe,byte
-0x9bc1,0x0001,microcode_table_5b46_data_9bc1,byte
-0x9bc4,0x0001,microcode_table_5b86_data_9bc4,byte
-0x9bc9,0x0001,microcode_table_55f0_data_9bc9,byte
-0x9bd2,0x0001,microcode_table_55f2_data_9bd2,byte
-0x9bdb,0x0001,microcode_table_5bb4_data_9bdb,byte
-0x9be4,0x0001,microcode_table_55f6_data_9be4,byte
-0x9bed,0x0001,microcode_table_58ec_data_9bed,byte
-0x9bf2,0x0001,microcode_table_579a_data_9bf2,byte
-0x9c09,0x0001,microcode_table_586c_data_9c09,byte
-0x9c0c,0x0001,microcode_table_5492_data_9c0c,byte
-0x9c14,0x0001,microcode_table_5812_data_9c14,byte
-0x9c2d,0x0001,microcode_table_5494_data_9c2d,byte
-0x9c35,0x0001,microcode_table_5814_data_9c35,byte
-0x9c4e,0x0001,microcode_table_5496_data_9c4e,byte
-0x9c56,0x0001,microcode_table_5816_data_9c56,byte
-0x9c6f,0x0001,microcode_table_5498_data_9c6f,byte
-0x9c77,0x0001,microcode_table_5818_data_9c77,byte
-0x9c90,0x0001,microcode_table_5792_data_9c90,byte
-0x9cad,0x0001,microcode_table_5794_data_9cad,byte
-0x9cca,0x0001,microcode_table_5796_data_9cca,byte
-0x9ce7,0x0001,microcode_table_5798_data_9ce7,byte
-0x9d04,0x0001,microcode_table_5abc_data_9d04,byte
-0x9d1d,0x0001,microcode_table_5bbc_data_9d1d,byte
-0x9d26,0x0001,microcode_table_5504_data_9d26,byte
-0x9d3b,0x0001,microcode_table_5506_data_9d3b,byte
-0x9d50,0x0001,microcode_table_55c4_data_9d50,byte
-0x9d55,0x0001,microcode_table_5518_data_9d55,byte
-0x9d64,0x0001,microcode_table_5848_data_9d64,byte
-0x9d6d,0x0001,microcode_table_5ac6_data_9d6d,byte
-0x9d70,0x0001,microcode_table_5ab4_data_9d70,byte
-0x9d77,0x0001,microcode_table_5ab8_data_9d77,byte
-0x9d7e,0x0001,microcode_table_5bb8_data_9d7e,byte
-0x9d87,0x0001,microcode_table_5b06_data_9d87,byte
-0x9da0,0x0001,microcode_table_5b38_data_9da0,byte
-0x9da9,0x0001,microcode_table_57f8_data_9da9,byte
-0x9dbc,0x0001,microcode_table_58f8_data_9dbc,byte
-0x9dc1,0x0001,microcode_table_5878_data_9dc1,byte
-0x9dc4,0x0001,microcode_table_5502_data_9dc4,byte
-0x9dd9,0x0001,microcode_table_55c6_data_9dd9,byte
-0x9dde,0x0001,microcode_table_5658_data_9dde,byte
-0x9de0,0x0001,microcode_table_5758_data_9de0,byte
+0x9707,0x0001,microcode1080_animate_shape_4d,byte
+0x9711,0x0001,microcode1080_animate_shape_72,byte
+0x971d,0x0001,microcode1080_collision_test_62,byte
+0x972d,0x0001,microcode6080_fire_state_f3_7b,byte
+0x9746,0x0001,microcode1080_collision_68,byte
+0x974f,0x0001,microcode4080_y_outside_68,byte
+0x9758,0x0001,microcode1080_collision_69,byte
+0x9761,0x0001,microcode4080_y_outside_69,byte
+0x976a,0x0001,microcode1080_collision_6a,byte
+0x9773,0x0001,microcode4080_y_outside_6a,byte
+0x977c,0x0001,microcode1080_collision_test_6b,byte
+0x9782,0x0001,microcode1080_collision_test_6c,byte
+0x9788,0x0001,microcode1080_collision_test_6d,byte
+0x978e,0x0001,microcode1080_collision_test_6e,byte
+0x9794,0x0001,microcode1080_collision_test_6f,byte
+0x979a,0x0001,microcode1080_collision_test_70,byte
+0x97a3,0x0001,microcode1080_collision_70,byte
+0x97aa,0x0001,microcode1080_countdown_10,byte
+0x97cb,0x0001,microcode1080_collision_test_58,byte
+0x97e0,0x0001,microcode1080_collision_test_59,byte
+0x97f5,0x0001,microcode1080_collision_test_5a,byte
+0x980a,0x0001,microcode1080_collision_test_5b,byte
+0x981f,0x0001,microcode1080_collision_test_5c,byte
+0x9834,0x0001,microcode1080_collision_test_5d,byte
+0x9849,0x0001,microcode1080_collision_test_5e,byte
+0x985e,0x0001,microcode1080_collision_test_5f,byte
+0x9873,0x0001,microcode1080_collision_test_72,byte
+0x9884,0x0001,microcode4080_y_outside_66,byte
+0x988b,0x0001,microcode1080_collision_test_66,byte
+0x989d,0x0001,microcode1080_collision_test_67,byte
+0x98a0,0x0001,microcode1080_collision_67,byte
+0x98a7,0x0001,microcode1080_countdown_2a,byte
+0x98aa,0x0001,microcode1080_collision_71,byte
+0x98b1,0x0001,microcode1080_collision_test_2a,byte
+0x98b4,0x0001,microcode1080_collision_2a,byte
+0x98bb,0x0001,microcode1080_animate_shape_2a,byte
+0x98c5,0x0001,microcode1080_animate_shape_71,byte
+0x98d2,0x0001,microcode6080_test_fire_state_f3_71,byte
+0x98d5,0x0001,microcode6080_fire_state_f2_76,byte
+0x98da,0x0001,microcode6080_test_fire_state_f3_76,byte
+0x98dd,0x0001,microcode6080_fire_state_f3_76,byte
+0x98e0,0x0001,microcode6080_homing_67,byte
+0x98e3,0x0001,microcode1080_animate_shape_13,byte
+0x98e5,0x0001,microcode1080_countdown_13,byte
+0x98ea,0x0001,microcode1080_collision_66,byte
+0x9901,0x0001,microcode4080_x_outside_66,byte
+0x9908,0x0001,microcode0010_init_or_zero_07,byte
+0x9917,0x0001,microcode6080_fire_state_f2_65,byte
+0x9926,0x0001,microcode1080_countdown_12,byte
+0x9939,0x0001,microcode0010_init_or_zero_04,byte
+0x994e,0x0001,microcode0010_init_or_zero_05,byte
+0x9961,0x0001,microcode0010_init_or_zero_0a,byte
+0x9966,0x0001,microcode6080_fire_state_f0_76,byte
+0x997b,0x0001,microcode6080_fire_state_f0_61,byte
+0x9994,0x0001,microcode6080_fire_state_f2_61,byte
+0x99ad,0x0001,microcode6080_fire_state_f1_76,byte
+0x99cc,0x0001,microcode1080_animate_shape_67,byte
+0x99ce,0x0001,microcode4080_x_outside_67,byte
+0x99d9,0x0001,microcode4080_y_outside_67,byte
+0x99e4,0x0001,microcode1080_animate_shape_40,byte
+0x99ea,0x0001,microcode6080_fire_state_f0_67,byte
+0x99ed,0x0001,microcode6080_fire_state_f1_67,byte
+0x99f4,0x0001,microcode1080_countdown_70,byte
+0x99f7,0x0001,microcode1080_animate_shape_63,byte
+0x99f9,0x0001,microcode1080_collision_78,byte
+0x9a0e,0x0001,microcode1080_collision_79,byte
+0x9a1d,0x0001,microcode1080_collision_7a,byte
+0x9a32,0x0001,microcode1080_collision_7b,byte
+0x9a41,0x0001,microcode1080_animate_shape_29,byte
+0x9a43,0x0001,microcode1080_countdown_29,byte
+0x9a46,0x0001,microcode6080_homing_6a,byte
+0x9a4f,0x0001,microcode1080_collision_test_53,byte
+0x9a5a,0x0001,microcode1080_collision_test_54,byte
+0x9a65,0x0001,microcode1080_collision_test_55,byte
+0x9a70,0x0001,microcode1080_collision_test_56,byte
+0x9a7b,0x0001,microcode1080_collision_test_57,byte
+0x9a86,0x0001,microcode1080_collision_test_50,byte
+0x9a8f,0x0001,microcode1080_collision_test_51,byte
+0x9a98,0x0001,microcode1080_collision_test_52,byte
+0x9aa1,0x0001,microcode1080_countdown_2c,byte
+0x9aa6,0x0001,microcode6080_homing_68,byte
+0x9aaf,0x0001,microcode6080_homing_69,byte
+0x9ab8,0x0001,microcode6080_test_fire_state_f2_76,byte
+0x9abc,0x0001,microcode6080_test_fire_state_f1_7e,byte
+0x9abf,0x0001,microcode6080_test_fire_state_f3_7e,byte
+0x9ac2,0x0001,microcode4080_x_outside_7e,byte
+0x9acf,0x0001,microcode4080_x_outside_62,byte
+0x9ad6,0x0001,microcode1080_collision_29,byte
+0x9aeb,0x0001,microcode1080_collision_61,byte
+0x9b00,0x0001,microcode1080_countdown_7e,byte
+0x9b09,0x0001,microcode1080_animate_shape_7e,byte
+0x9b0b,0x0001,microcode6080_fire_state_f3_60,byte
+0x9b26,0x0001,microcode1080_animate_shape_3d,byte
+0x9b28,0x0001,microcode1080_countdown_3d,byte
+0x9b3b,0x0001,microcode0010_init_or_zero_0f,byte
+0x9b48,0x0001,microcode0010_init_or_zero_06,byte
+0x9b51,0x0001,microcode1080_animate_shape_3c,byte
+0x9b53,0x0001,microcode1080_collision_test_3c,byte
+0x9b55,0x0001,microcode1080_collision_3c,byte
+0x9b58,0x0001,microcode1080_countdown_3c,byte
+0x9b63,0x0001,microcode1080_countdown_65,byte
+0x9b68,0x0001,microcode4080_x_outside_65,byte
+0x9b6d,0x0001,microcode1080_collision_test_73,byte
+0x9b72,0x0001,microcode1080_collision_test_74,byte
+0x9b77,0x0001,microcode1080_collision_test_75,byte
+0x9b7c,0x0001,microcode1080_collision_test_71,byte
+0x9b8c,0x0001,microcode1080_collision_test_11,byte
+0x9b91,0x0001,microcode1080_collision_11,byte
+0x9b9e,0x0001,microcode1080_countdown_11,byte
+0x9bbb,0x0001,microcode6080_test_fire_state_f2_68,byte
+0x9bbe,0x0001,microcode6080_fire_state_f2_68,byte
+0x9bc1,0x0001,microcode6080_test_fire_state_f3_63,byte
+0x9bc4,0x0001,microcode6080_fire_state_f3_63,byte
+0x9bc9,0x0001,microcode1080_countdown_78,byte
+0x9bd2,0x0001,microcode1080_countdown_79,byte
+0x9bdb,0x0001,microcode6080_fire_state_f3_7a,byte
+0x9be4,0x0001,microcode1080_countdown_7b,byte
+0x9bed,0x0001,microcode4080_y_outside_76,byte
+0x9bf2,0x0001,microcode1080_collision_4d,byte
+0x9c09,0x0001,microcode4080_x_outside_76,byte
+0x9c0c,0x0001,microcode1080_animate_shape_49,byte
+0x9c14,0x0001,microcode4080_x_outside_49,byte
+0x9c2d,0x0001,microcode1080_animate_shape_4a,byte
+0x9c35,0x0001,microcode4080_x_outside_4a,byte
+0x9c4e,0x0001,microcode1080_animate_shape_4b,byte
+0x9c56,0x0001,microcode4080_x_outside_4b,byte
+0x9c6f,0x0001,microcode1080_animate_shape_4c,byte
+0x9c77,0x0001,microcode4080_x_outside_4c,byte
+0x9c90,0x0001,microcode1080_collision_49,byte
+0x9cad,0x0001,microcode1080_collision_4a,byte
+0x9cca,0x0001,microcode1080_collision_4b,byte
+0x9ce7,0x0001,microcode1080_collision_4c,byte
+0x9d04,0x0001,microcode6080_fire_state_f1_7e,byte
+0x9d1d,0x0001,microcode6080_fire_state_f3_7e,byte
+0x9d26,0x0001,microcode0010_init_or_zero_02,byte
+0x9d3b,0x0001,microcode0010_init_or_zero_03,byte
+0x9d50,0x0001,microcode1080_countdown_62,byte
+0x9d55,0x0001,microcode0010_init_or_zero_0c,byte
+0x9d64,0x0001,microcode4080_x_outside_64,byte
+0x9d6d,0x0001,microcode6080_test_fire_state_f2_63,byte
+0x9d70,0x0001,microcode6080_fire_state_f1_7a,byte
+0x9d77,0x0001,microcode6080_fire_state_f1_7c,byte
+0x9d7e,0x0001,microcode6080_fire_state_f3_7c,byte
+0x9d87,0x0001,microcode6080_fire_state_f2_63,byte
+0x9da0,0x0001,microcode6080_fire_state_f2_7c,byte
+0x9da9,0x0001,microcode1080_collision_7c,byte
+0x9dbc,0x0001,microcode4080_y_outside_7c,byte
+0x9dc1,0x0001,microcode4080_x_outside_7c,byte
+0x9dc4,0x0001,microcode0010_init_or_zero_01,byte
+0x9dd9,0x0001,microcode1080_countdown_63,byte
+0x9dde,0x0001,microcode1080_collision_test_2c,byte
+0x9de0,0x0001,microcode1080_collision_2c,byte
 0x9ded,0x0001,recrack_loader,byte
 0xa800,0x0001,x_table_times2_div7_plus_5b,byte
 0xa900,0x0001,x_table_times2_mod7_minus_03,byte
@@ -1163,9 +1174,13 @@ items
 0xb480,0x0030,object5080_abs_difference_b480,byte
 0xb4b0,0x0030,object5080_abs_difference_b4b0,byte
 0xb4e0,0x0020,object6080_fire_count,byte
+# used from execute_microcode6080_fire_state_f0
 0xb500,0x0020,object6080_b500,byte
+# used from execute_microcode6080_fire_state_f1
 0xb520,0x0020,object6080_b520,byte
+# used from execute_microcode6080_fire_state_f2
 0xb540,0x0020,object6080_b540,byte
+# used from execute_microcode6080_fire_state_f3
 0xb560,0x0020,object6080_b560,byte
 0xc000,0x0001,hw_kbd,byte
 0xc010,0x0001,hw_kbdstrb,byte
diff --git a/disasm/ucode0.py b/disasm/ucode0.py
new file mode 100755 (executable)
index 0000000..af0efe4
--- /dev/null
@@ -0,0 +1,20 @@
+#!/usr/bin/env python3
+
+# process the microcode tables, numbering the entries
+
+import sys
+
+for line in sys.stdin:
+  fields = line.rstrip().split()
+  if len(fields) == 1:
+    label = fields[0]
+    assert label[-1:] == ':'
+    label = label[:-1]
+    assert label[:9] == 'microcode'
+    count = int(label[9:11], 16)
+  else:
+    assert fields[0] == '.dw'
+    target = fields[1]
+    if target != '0x0000':
+      print(f's/{target:s}/{label:s}_{count:02x}/g')
+    count += 1
diff --git a/disasm/ucode1.py b/disasm/ucode1.py
new file mode 100755 (executable)
index 0000000..5b86e65
--- /dev/null
@@ -0,0 +1,179 @@
+#!/usr/bin/env python3
+
+import sys
+
+# process the microcode data, extracting possible shapes for each object
+
+shapes = {
+  0x00: 'pixel0',
+  0x01: 'pixel1',
+  0x02: 'pixel2',
+  0x03: 'pixel3',
+  0x04: 'pixel4',
+  0x05: 'pixel5',
+  0x06: 'pixel6',
+  0x07: 'pixel7',
+  0x08: 'bullet3',
+  0x09: 'bullet5',
+  0x0a: 'bullet7',
+  0x0b: 'bullet9',
+  0x0c: 'bird0',
+  0x0d: 'bird1',
+  0x0e: 'bird2',
+  0x0f: 'bird3',
+  0x10: 'ship',
+  0x11: 'ship_open',
+  0x12: 'exhaust0',
+  0x13: 'exhaust1',
+  0x14: 'parachute0',
+  0x15: 'parachute1',
+  0x16: 'parachute_open',
+  0x17: 'fuel',
+  0x18: 'supply_plane',
+  0x1c: 'tank',
+  0x1e: 'missile_tank',
+  0x1f: 'missile_tank_empty',
+  0x20: 'bomb0',
+  0x21: 'bomb1',
+  0x22: 'bomb2',
+  0x23: 'bomb3',
+  0x28: 'balloon0',
+  0x29: 'balloon1',
+  0x2a: 'balloon2',
+  0x2c: 'helicopter',
+  0x2e: 'enemy_plane0',
+  0x2f: 'enemy_plane1',
+  0x30: 'silo0',
+  0x31: 'silo1',
+  0x36: 'pylon',
+  0x40: 'missile0',
+  0x41: 'missile1',
+  0x42: 'missile2',
+  0x43: 'missile3',
+  0x44: 'missile4',
+  0x45: 'missile5',
+  0x46: 'missile6',
+  0x47: 'missile7',
+  0x48: 'missile8',
+  0x49: 'missile9',
+  0x4a: 'missile10',
+  0x4b: 'missile11',
+  0x4c: 'missile12',
+  0x4d: 'missile13',
+  0x4e: 'missile14',
+  0x4f: 'missile15',
+  0x50: 'missile_launcher0_empty',
+  0x51: 'missile_launcher1_empty',
+  0x52: 'missile_launcher2_empty',
+  0x54: 'missile_launcher0',
+  0x55: 'missile_launcher1',
+  0x56: 'missile_launcher2',
+  0x60: 'fragment0',
+  0x61: 'fragment1',
+  0x62: 'fragment2',
+  0x63: 'fragment3',
+  0x64: 'fragment4',
+  0x65: 'fragment5',
+  0x66: 'fragment6',
+  0x67: 'fragment7',
+  0x70: 'haystack',
+  0x71: 'house',
+  0x72: 'headquarters',
+  0x73: 'radar0',
+  0x74: 'radar1',
+  0x75: 'radar2',
+  0x76: 'icbm',
+  0x78: 'tree',
+  0x79: 'cactus',
+  0x88: 'explosion0',
+  0x89: 'explosion1',
+  0x8a: 'explosion2',
+  0x8b: 'explosion3',
+  0xa0: 'text_0',
+  0xa1: 'text_1',
+  0xa2: 'text_2',
+  0xa3: 'text_3',
+  0xa4: 'text_4',
+  0xa5: 'text_5',
+  0xa6: 'text_6',
+  0xa7: 'text_7',
+  0xa8: 'text_8',
+  0xa9: 'text_9',
+  0xaa: 'text_score',
+  0xab: 'text_colon',
+  0xac: 'text_high',
+  0xb0: 'text_mission',
+  0xb2: 'text_fuel',
+  0xb3: 'text_empty',
+  0xb4: 'text_bomb',
+  0xb6: 'text_ship_left',
+  0xb7: 'text_complete',
+  0xb8: 'text_the',
+  0xb9: 'text_radar',
+  0xba: 'text_icbm',
+  0xbc: 'text_attack',
+  0xbd: 'text_tank',
+  0xbe: 'text_headquarters',
+  0xbf: 'text_a',
+  0xc0: 'ships0',
+  0xc1: 'ships1',
+  0xc2: 'ships2',
+  0xc3: 'ships3',
+  0xd0: 'text_star',
+  0xd1: 'text_blazer',
+  0xd2: 'text_by',
+  0xd3: 'text_tony',
+  0xd4: 'text_suzuki',
+  0xd8: 'text_game',
+  0xd9: 'text_over',
+  0xda: 'text_bonus',
+  0xdc: 'text_great',
+  0xdd: 'text_performance',
+  0xe1: 'text_copyright',
+  0xe2: 'text_star_craft',
+  0xe3: 'text_inc',
+  0xe4: 'text_thanks',
+  0xe5: 'text_lot_comma',
+  0xe6: 'text_raly',
+  0xe7: 'text_minus_20',
+  0xe8: 'text_20_40_60_80',
+  0xe9: 'text_100_120_300_1500',
+  0xf0: 'ground0',
+  0xf1: 'ground1',
+  0xf2: 'ground2',
+  0xf3: 'ground3',
+  0xff: 'blank',
+}
+objects = {}
+
+for line in sys.stdin:
+  fields = line.rstrip().split()
+  if len(fields) == 1:
+    label = fields[0]
+    assert label[-1:] == ':'
+    label = label[:-1]
+  else:
+    assert fields[0] == '.db'
+    assert fields[1][:2] == '0x'
+    value = int(fields[1][2:], 16)
+    if label[:-2] == 'microcode1080_animate_shape_':
+      object = int(label[-2:], 16)
+      if object not in objects:
+        objects[object] = set()
+      if value >= 1 and value < 0xf0:
+        objects[object].add(value)
+
+for object in sorted(objects.keys()):
+  suffixes = []
+  shape_names = []
+  for shape in sorted(objects[object]):
+    suffix = '_' + shapes[shape]
+    if suffix[-1] >= '0' and suffix[-1] <= '9':
+      while suffix[-1] >= '0' and suffix[-1] <= '9':
+        suffix = suffix[:-1]
+    if suffix not in suffixes:
+      suffixes.append(suffix)
+    shape_names.append(f'shape_{shape:02x}_{shapes[shape]:s}')
+  print(f'object_{object:02x}' + ''.join(suffixes))
+  for shape_name in shape_names:
+    print('  ' + shape_name)