Rationalize the addresses file, implement more sections to avoid need for ALIGN
authorNick Downing <nick@ndcode.org>
Sat, 25 Jun 2022 03:07:10 +0000 (13:07 +1000)
committerNick Downing <nick@ndcode.org>
Tue, 28 Jun 2022 03:21:37 +0000 (13:21 +1000)
disasm/Makefile
disasm/disasm.py
disasm/star_blazer.asm.patch
disasm/star_blazer.txt

index 8bded5b..4453351 100644 (file)
@@ -30,15 +30,19 @@ star_blazer.ihx \
 #      -diff -q ../loader/star_blazer_pack_rev.a2bin $@
 
 star_blazer.ihx: star_blazer.rel
-       # add for DHGR: -b data1=0x15c00
+       # add for DHGR: -b data5=0x15c00
        ${ASLINK} -n -m -u -il \
 -b zpage=0 \
--b udata0=0x200 \
--b udata1=0x400 \
--b text=0xa00 \
--b data0=0x4000 \
--b udata2=0xa800 \
--b data1=0x15c00 \
+-b data0=0x200 \
+-b udata0=0x400 \
+-b text0=0xa00 \
+-b text1=0x1800 \
+-b text2=0x1e00 \
+-b data1=0x1f80 \
+-b data2=0x4000 \
+-b data3=0x5c00 \
+-b data4=0x8e00 \
+-b udata1=0xa800 \
 $@ $<
 
 star_blazer.rel: \
@@ -61,9 +65,9 @@ ucode_data.inc: star_blazer.asm
 star_blazer.asm: \
 trace.txt \
 star_blazer.txt \
-../loader/star_blazer_recrack.a2bin \
+../loader/star_blazer.ihx \
 star_blazer.asm.patch
-       ./disasm.py star_blazer.txt ../loader/star_blazer_recrack.a2bin $@ <trace.txt
+       ./disasm.py star_blazer.txt ../loader/star_blazer.ihx $@ <trace.txt
        cp $@ $@0
        patch $@ <$@.patch
 
index 70ac6da..59715d1 100755 (executable)
@@ -5,6 +5,7 @@ import py65.devices.mpu65c02
 import py65.disassembler
 import re
 import sys
+from intelhex import IntelHex
 
 EXIT_SUCCESS = 0
 EXIT_FAILURE = 1
@@ -30,10 +31,10 @@ item_types = {
 }
 
 if len(sys.argv) < 4:
-  print(f'usage: {sys.argv[0]:s} addrs.txt in.bin out.asm <trace.txt')
+  print(f'usage: {sys.argv[0]:s} addrs.txt in.ihx out.asm <trace.txt')
   sys.exit(EXIT_FAILURE)
 addrs_txt = sys.argv[1]
-in_bin = sys.argv[2]
+in_ihx = sys.argv[2]
 out_asm = sys.argv[3]
 
 TRACE_REG_A = 0
@@ -77,9 +78,9 @@ for line in sys.stdin:
   pc1 = int(line[8:12], 16)
 
   # hacks so I don't have to redo the trace
-  if pc0 == 0x9fd:
-    pc1 = 0x9ded
-  if pc0 >= 0x2000 and pc0 < 0x4000:
+  if pc0 < 0xa00 or (pc0 >= 0x2000 and pc0 < 0x4000):
+    continue
+  if pc1 < 0xa00 or (pc1 >= 0x2000 and pc1 < 0x4000):
     continue
 
   if pc0 not in trace_nexts:
@@ -152,9 +153,14 @@ with open(addrs_txt, 'r') as fin:
 
   fields = get_line()
   while len(fields):
-    if fields == ['areas']:
+    assert len(fields) == 1
+    section = fields[0]
+    print(section)
+
+    if section == 'areas':
       fields = get_line()
-      while len(fields) >= 4:
+      while len(fields) >= 2:
+        assert len(fields) == 4
         addr = int(fields[0], 0)
         size = int(fields[1], 0)
         name = fields[2]
@@ -169,9 +175,11 @@ with open(addrs_txt, 'r') as fin:
 
         fields = get_line()
       continue
-    elif fields == ['items']:
+
+    if section == 'items':
       fields = get_line()
-      while len(fields) >= 4:
+      while len(fields) >= 2:
+        assert len(fields) >= 4
         addr = int(fields[0], 0)
         size = int(fields[1], 0)
         name = fields[2]
@@ -208,22 +216,22 @@ with open(addrs_txt, 'r') as fin:
         )
         fields = get_line()
       continue
-    else:
-      print('unknown section', fields[0])
-      sys.exit(EXIT_FAILURE)
-    line = fin.readline()
-
-print('reading image')
-with open(in_bin, 'rb') as fin:
-  data = list(fin.read())
-  hdr = data[:4]
-  bin = data[4:]
-load_addr = hdr[0] | (hdr[1] << 8)
-load_size = hdr[2] | (hdr[3] << 8)
-assert load_size == len(bin)
+
+    # unknown section, skip (for shape or object extractor)
+    fields = get_line()
+    while len(fields) >= 2:
+      fields = get_line()
+
+print('reading ihx')
+intelhex = IntelHex(in_ihx)
+entry_point = intelhex.start_addr['EIP']
+segments = [j for i in intelhex.segments() for j in i]
 
 mem = [0] * 0x10000
-mem[load_addr:load_addr + load_size] = bin
+for i in range(0, len(segments), 2):
+  [addr0, addr1] = segments[i:i + 2]
+  print(f'[{addr0:04x}, {addr1:04x})')
+  mem[addr0:addr1] = list(intelhex.tobinstr(addr0, addr1 - 1))
 
 mpu = py65.devices.mpu65c02.MPU(mem, 0)
 disassembler = py65.disassembler.Disassembler(mpu)
@@ -356,6 +364,7 @@ def add_item(
     modified = True
   return i
 
+add_item(entry_point, 1, '', ITEM_CODE, [], MAX_LOCALS)
 for pc1 in trace_nexts.keys():
   add_item(pc1, 1, '', ITEM_CODE, [])
 
@@ -1058,4 +1067,6 @@ while modified:
       flush_locals()
 
       area += 1
+    fout.write(f'\t.end\t{get_label(entry_point):s}\n')
+
   _pass += 1
index 7f8bb34..6735757 100644 (file)
@@ -1,10 +1,10 @@
---- star_blazer.asm0   2022-06-25 00:04:33.079828875 +1000
-+++ star_blazer.asm    2022-06-25 10:55:50.799994461 +1000
+--- star_blazer.asm0   2022-06-25 13:01:14.395901396 +1000
++++ star_blazer.asm    2022-06-25 13:03:26.391899763 +1000
 @@ -1,3 +1,9 @@
-+ALIGN = 0
-+DHGR = 1
-+PIXEL_SHAPE = 1
-+SHAPE = 1
++UNREACHABLE = 1
++DHGR = 0
++PIXEL_SHAPE = 0
++SHAPE = 0
 +UCODE = 0
 +
  HIRES_SCREEN = 0x2000                 ; 2000
  
        .ds     0x22                    ; 0000
  vec_init_game:
--      .ds     2                       ; 0022 rw
-+      .dw     init_game               ; 0022 rw
+-      .ds     2                       ; 0022 r
++      .dw     init_game               ; 0022 r
  vec_start_game:
--      .ds     2                       ; 0024 rw
+-      .ds     2                       ; 0024 r
 +      .dw     start_game              ; 0024 r
        .ds     2                       ; 0026
  vec_calculate_object_shape:
--      .ds     2                       ; 0028 rw
+-      .ds     2                       ; 0028 r
 +      .dw     calculate_object_shape  ; 0028 r
        .ds     0x24                    ; 002a
  vec_draw_misc_from_table:
--      .ds     2                       ; 004e rw
+-      .ds     2                       ; 004e r
 +      .dw     draw_misc_from_table    ; 004e r
        .ds     0x30                    ; 0050
  half_dimension:
  accumulator:
        .ds     3                       ; 0090 rw
        .ds     1                       ; 0093
-@@ -159,7 +204,7 @@
-       .area   udata0
- vec_restart:
--      .ds     2                       ; 0200 rw
-+      .dw     restart                 ; 0200 r
-       .area   udata1
-@@ -188,8 +233,8 @@
-       .ds     0x70                    ; 0780 rw
-       .area   text
-+text_start:
--      jmp     recrack_loader          ; -> 09fd -> 9ded r
- sign_extend_a_to_ya:
-       cmp     #0x80                   ; 0abc,0adc,133f,1366,1382,145b,1485 -> 0a00 -> 0a02 r a=00..ff
-       ldy     #0x00                   ; 0a00 -> 0a02 -> 0a04 r
-@@ -1072,7 +1117,7 @@
+@@ -1071,7 +1116,7 @@
        tsx                             ; 1095 -> 1097 -> 1098 r
        stx     *ucode_sp               ; 1097 -> 1098 -> 109a r
        ldx     *ucode_x_save_c9        ; 1098 -> 109a -> 109c r
        sta     *ucode_start_sentinel   ; 109c -> 109f -> 10a1 r
  ucode_execute_1093_entry:
        ldy     #0x00                   ; 1090,109f -> 10a1 -> 10a3 r
-@@ -1099,7 +1144,7 @@
+@@ -1098,7 +1143,7 @@
        jsr     do_ucode_pair           ; 10c6 -> 10c8 -> 106a r s=f7..f9,02
        bne     3$                      ; 107b -> 10cb -> 10c0 r z=0
  ucode_execute_1093_done:
        rts                             ; 10cd -> 10d0 -> 123e,143a,1615,1629,1633,1649,165b,1759 r s=f7..fd,02
  ucode_execute_10d1:
        beq     rts_10ec                ; 1216,123b,1260,1285 -> 10d1 -> 10d3,10ec r z=0..1
-@@ -1981,10 +2026,35 @@
+@@ -1980,10 +2025,35 @@
        sta     *button_state           ; 17ce r
  rts_17d0:
        rts                             ; 17ab,17ca -> 17d0 -> 1768,176f r s=fd
        ldx     #0x01                   ; 17db r
  0$:   jsr     ROM_PREAD               ; 17dd r
        cpy     #0xff                   ; 17e0 r
-@@ -1995,18 +2065,15 @@
+@@ -1994,7 +2064,12 @@
        sta     bvar_179e               ; 17e9 r
        sta     bvar_17a3               ; 17ec r
        sta     bvar_1e0e               ; 17ef r
 -1$:   jmp     [vec_init_game]         ; 17d9 -> 17f2 -> 1708 r
--      .db     0x00                    ; 17f5
--      .db     0x00                    ; 17f6
--      .db     0x00                    ; 17f7
--      .db     0x00                    ; 17f8
--      .db     0x00                    ; 17f9
--      .db     0x00                    ; 17fa
--      .db     0x00                    ; 17fb
--      .db     0x00                    ; 17fc
--      .db     0x00                    ; 17fd
--      .db     0x00                    ; 17fe
--      .db     0x00                    ; 17ff
 +1$:
 +.if 0 ;DHGR ; language card
 +      sta     HW_LC_BANK2_RAM_WE
 +      sta     HW_LC_BANK2_RAM_WE
 +.endif
 +      jmp     [vec_init_game]         ; 17d9 -> 17f2 -> 1708 r
-+.if ALIGN
-+      .ds     0x1800 - 0xa00 - (. - text_start)
-+.endif
- divide_a_by_y:
-       sta     *accumulator + 1        ; 0a90,0aa0,0ab5,0ad5 -> 1800 -> 1802 r
-       lda     #0x00                   ; 1800 -> 1802 -> 1804 r
-@@ -2071,10 +2138,12 @@
+       .area   text1
+@@ -2062,10 +2137,12 @@
        lda     *result + 1             ; 186e r
        ldy     *result + 2             ; 1870 r
        rts                             ; 1872 r
-+.if ALIGN ; unreachable code, treat as padding
++.if UNREACHABLE
        inc     *random_seed            ; 1873 r
        bne     4$                      ; 1875 r
        inc     *random_seed + 1        ; 1877 r
  random_init:
        lda     *random_seed            ; 16ae -> 187a -> 187c r
        ora     #0x01                   ; 187a -> 187c -> 187e r
-@@ -2233,16 +2302,30 @@
+@@ -2224,16 +2301,30 @@
        ldx     #>HIRES_SCREEN          ; 199b -> 199d -> 199f r
        stx     *video_line_ptr + 1     ; 199d -> 199f -> 19a1 r
        tay                             ; 199f -> 19a1 -> 19a2 r
        rts                             ; 19b5 -> 19b8 -> 1713 r s=fd
  video_clear_rectangle:
        ldx     *clip_y0                ; 1064 -> 19b9 -> 19bb r
-@@ -2250,8 +2333,20 @@
+@@ -2241,8 +2332,20 @@
        sta     *video_line_ptr         ; 19bb -> 19be -> 19c0 r
        lda     video_line_table_hi - 0x20,x ; 19be -> 19c0 -> 19c3 r x=28..cf
        sta     *video_line_ptr + 1     ; 19c0 -> 19c3 -> 19c5 r
  1$:   sta     [*video_line_ptr],y     ; 19c7,19ce -> 19c9 -> 19cb r y=6c..93
        iny                             ; 19c9 -> 19cb -> 19cc r
        cpy     *clip_x1                ; 19cb -> 19cc -> 19ce r y=6d..94
-@@ -2300,6 +2395,7 @@
+@@ -2291,6 +2394,7 @@
        sta     object1080_y0 - 0x10,x  ; 1a1b -> 1a1e -> 1a21 r x=10..7f
        adc     #0x01                   ; 1a1e -> 1a21 -> 1a23 r c=0..1 d=0
        sta     object1080_y1 - 0x10,x  ; 1a21 -> 1a23 -> 1a26 r x=10..7f
        rts                             ; 1a23 -> 1a26 -> 1076,1179,1602 r s=f1..f9,02
  pixel_data_table_left:
        .db     0x83                    ; 1a27 r
-@@ -2382,14 +2478,17 @@
+@@ -2373,14 +2477,17 @@
        lda     object1080_onscreen_shape_ptr_hi - 0x10,x ; 1aa5 -> 1aa7 -> 1aaa r x=20..4f
        ora     [*video_line_ptr],y     ; 1aa7 -> 1aaa -> 1aac r y=6d..93,02
        sta     [*video_line_ptr],y     ; 1aaa -> 1aac -> 1aae r y=6d..93,02
        lda     object1080_y0 - 0x10,x  ; 1ab9 -> 1abb -> 1abe r x=14..77
        cmp     object1080_y1 - 0x10,x  ; 1abb -> 1abe -> 1ac1 r a=11..d4 x=14..77
        bcs     rts_1aae                ; 1abe -> 1ac1 -> 1ac3 r c=0
-@@ -2442,7 +2541,12 @@
+@@ -2433,7 +2540,12 @@
        stx     *x_save                 ; 1b32 -> 1b35 -> 1b37 r
        lda     *draw_y                 ; 1b35 -> 1b37 -> 1b39 r
        cmp     *clip_y0                ; 1b37 -> 1b39 -> 1b3b r a=11..d4
        lda     *clip_y1                ; 1b3b -> 1b3d -> 1b3f r
        cmp     *draw_y1                ; 1b3d -> 1b3f -> 1b41 r a=d0
        bcc     8$                      ; 1b3f -> 1b41 -> 1b43,1b83 r c=0..1
-@@ -2453,16 +2557,59 @@
+@@ -2444,16 +2556,59 @@
        cmp     *draw_x1                ; 1b49 -> 1b4b -> 1b4d r a=94
        bcc     8$                      ; 1b4b -> 1b4d -> 1b4f,1b83 r c=0..1
        lda     object1080_onscreen_shape_ptr_lo - 0x10,x ; 1b4d -> 1b4f -> 1b52 r x=14..77
 +      sta     [*video_line_ptr],y
 +93$:  iny
 +.endif
- 6$:   .db     0xbd                    ; 1b69,1b76 -> 1b6b -> 1b6e r "lda shape_12_exhaust0 + 0x12,x" x=00..39
- 7$:   .dw     shape_12_exhaust0 + 0x12 ; 1b6c rw
+ 6$:   .db     0xbd                    ; 1b69,1b76 -> 1b6b -> 1b6e r "lda 0x6f9f,x" x=00..39
+ 7$:   .dw     0x6f9f                  ; 1b6c rw
        ora     [*video_line_ptr],y     ; 1b6b -> 1b6e -> 1b70 r y=6c..93
-@@ -2479,16 +2626,50 @@
+@@ -2470,16 +2625,50 @@
        rts                             ; 1b80 -> 1b82 -> 15cd r s=fb
  8$:   inc     object1080_onscreen_clipped - 0x10,x ; 1b3b,1b41,1b47,1b4d -> 1b83 -> 1b86 r x=14..77
        lda     object1080_onscreen_shape_ptr_lo - 0x10,x ; 1b83 -> 1b86 -> 1b89 r x=14..77
  10$:  lda     *draw_y                 ; 1ba0,1bbf -> 1ba2 -> 1ba4 r
        cmp     *clip_y0                ; 1ba2 -> 1ba4 -> 1ba6 r a=11..d8
        bcc     12$                     ; 1ba4 -> 1ba6 -> 1ba8,1bbb r c=0..1
-@@ -2498,6 +2679,16 @@
+@@ -2489,6 +2678,16 @@
        bcc     12$                     ; 1bac -> 1bae -> 1bb0,1bbb r c=0..1
        cpy     *clip_x1                ; 1bae -> 1bb0 -> 1bb2 r y=6c..a4
        bcs     12$                     ; 1bb0 -> 1bb2 -> 1bb4,1bbb r c=0..1
 +      sta     HW_RDMAINRAM
 +      sta     HW_WRMAINRAM
 +.endif
-       .db     0xbd                    ; 1bb2 -> 1bb4 -> 1bb7 r "lda shape_12_exhaust0 + 0x1e,x" x=00..39
- 11$:  .dw     shape_12_exhaust0 + 0x1e ; 1bb5 rw
+       .db     0xbd                    ; 1bb2 -> 1bb4 -> 1bb7 r "lda 0x6fab,x" x=00..39
+ 11$:  .dw     0x6fab                  ; 1bb5 rw
        ora     [*video_line_ptr],y     ; 1bb4 -> 1bb7 -> 1bb9 r y=6c..93
-@@ -2511,6 +2702,7 @@
+@@ -2502,6 +2701,7 @@
        cpy     *draw_y1                ; 1bc3 -> 1bc5 -> 1bc7 r y=12..d9
        bcc     9$                      ; 1bc5 -> 1bc7 -> 1b96,1bc9 r c=0..1
        ldx     *x_save                 ; 1bc7 -> 1bc9 -> 1bcb r
        rts                             ; 1bc9 -> 1bcb -> 15cd r s=fb
  erase_pixel_object:
        lda     #0x00                   ; 1c12 -> 1bcc -> 1bce r
-@@ -2542,12 +2734,15 @@
+@@ -2533,12 +2733,15 @@
        eor     #0xff                   ; 1c03 -> 1c06 -> 1c08 r
        and     [*video_line_ptr],y     ; 1c06 -> 1c08 -> 1c0a r y=6d..93,02
        sta     [*video_line_ptr],y     ; 1c08 -> 1c0a -> 1c0c r y=6d..93,02
        lda     #0x00                   ; 1c12 -> 1c14 -> 1c16 r
        sta     object1080_onscreen - 0x10,x ; 1c14 -> 1c16 -> 1c19 r x=14..77
        lda     object1080_onscreen_x0 - 0x10,x ; 1c16 -> 1c19 -> 1c1c r x=14..77
-@@ -2562,16 +2757,61 @@
+@@ -2553,16 +2756,61 @@
        stx     *x_save                 ; 1c2d -> 1c30 -> 1c32 r
        bne     3$                      ; 1c30 -> 1c32 -> 1c34,1c6a r z=0..1
        lda     object1080_onscreen_shape_ptr_lo - 0x10,x ; 1c32 -> 1c34 -> 1c37 r x=14..77
 +      sta     [*video_line_ptr],y
 +93$:  iny
 +.endif
- 1$:   .db     0xbd                    ; 1c4e,1c5d -> 1c50 -> 1c53 r "lda shape_12_exhaust0 + 6,x" x=00..39
- 2$:   .dw     shape_12_exhaust0 + 6   ; 1c51 rw
+ 1$:   .db     0xbd                    ; 1c4e,1c5d -> 1c50 -> 1c53 r "lda 0x6f93,x" x=00..39
+ 2$:   .dw     0x6f93                  ; 1c51 rw
        eor     #0xff                   ; 1c50 -> 1c53 -> 1c55 r
-@@ -2588,16 +2828,51 @@
+@@ -2579,16 +2827,51 @@
        ldx     *x_save                 ; 1c65 -> 1c67 -> 1c69 r
        rts                             ; 1c67 -> 1c69 -> 1076,16a8 r s=f3..f9,02
  3$:   lda     object1080_onscreen_shape_ptr_lo - 0x10,x ; 1c32 -> 1c6a -> 1c6d r x=14..77
  5$:   lda     *draw_y                 ; 1c84,1ca5 -> 1c86 -> 1c88 r
        cmp     *clip_y0                ; 1c86 -> 1c88 -> 1c8a r a=11..d8
        bcc     7$                      ; 1c88 -> 1c8a -> 1c8c,1ca1 r c=0..1
-@@ -2607,6 +2882,17 @@
+@@ -2598,6 +2881,17 @@
        bcc     7$                      ; 1c90 -> 1c92 -> 1c94,1ca1 r c=0..1
        cpy     *clip_x1                ; 1c92 -> 1c94 -> 1c96 r y=6c..a4
        bcs     7$                      ; 1c94 -> 1c96 -> 1c98,1ca1 r c=0..1
 +      sta     HW_RDMAINRAM
 +      sta     HW_WRMAINRAM
 +.endif
-       .db     0xbd                    ; 1c96 -> 1c98 -> 1c9b r "lda shape_12_exhaust0 + 0x1e,x" x=00..39
- 6$:   .dw     shape_12_exhaust0 + 0x1e ; 1c99 rw
+       .db     0xbd                    ; 1c96 -> 1c98 -> 1c9b r "lda 0x6fab,x" x=00..39
+ 6$:   .dw     0x6fab                  ; 1c99 rw
        eor     #0xff                   ; 1c98 -> 1c9b -> 1c9d r
-@@ -2626,9 +2912,24 @@
+@@ -2617,9 +2911,24 @@
        stx     *x_save                 ; 1db0 -> 1cb2 -> 1cb4 r
        tay                             ; 1cb2 -> 1cb4 -> 1cb5 r
        lda     shape_data_ptr_lo,y     ; 1cb4 -> 1cb5 -> 1cb8 r y=16..ff
        lda     shape_width_bytes,y     ; 1cbe -> 1cc1 -> 1cc4 r y=16..ff
        clc                             ; 1cc1 -> 1cc4 -> 1cc5 r
        adc     *draw_x0                ; 1cc4 -> 1cc5 -> 1cc7 r c=0 d=0
-@@ -2636,6 +2937,11 @@
+@@ -2627,6 +2936,11 @@
        lda     *draw_x0                ; 1cc7 -> 1cc9 -> 1ccb r
        lsr     a                       ; 1cc9 -> 1ccb -> 1ccc r
        bcc     0$                      ; 1ccb -> 1ccc -> 1cce,1cd4 r c=0..1
        lda     *draw_misc_mask         ; 1ccc -> 1cce -> 1cd0 r
        eor     *draw_misc_mask_xor     ; 1cce -> 1cd0 -> 1cd2 r
        sta     *draw_misc_mask         ; 1cd0 -> 1cd2 -> 1cd4 r
-@@ -2651,9 +2957,56 @@
+@@ -2642,9 +2956,56 @@
        lda     video_line_table_hi,y   ; 1ce5 -> 1ce7 -> 1cea r y=00..bc
        adc     #0x00                   ; 1ce7 -> 1cea -> 1cec r c=0..1 d=0
        sta     *video_line_ptr + 1     ; 1cea -> 1cec -> 1cee r
  2$:   lda     *draw_y                 ; 1cf2,1d0f -> 1cf4 -> 1cf6 r
        cmp     #0xc0                   ; 1cf4 -> 1cf6 -> 1cf8 r a=00..bc
        bcs     4$                      ; 1cf6 -> 1cf8 -> 1cfa r c=0
-@@ -2673,7 +3026,12 @@
+@@ -2664,7 +3025,12 @@
        inc     *draw_y                 ; 1d0f -> 1d11 -> 1d13 r
        ldy     *draw_y                 ; 1d11 -> 1d13 -> 1d15 r
        cpy     *draw_y1                ; 1d13 -> 1d15 -> 1d17 r y=01..bd
        ldx     *x_save                 ; 1d17 -> 1d19 -> 1d1b r
        rts                             ; 1d19 -> 1d1b -> 1db3 r s=ec..f5
  draw_misc_from_table:
-@@ -2686,7 +3044,7 @@
+@@ -2677,7 +3043,7 @@
        asl     a                       ; 1d23 -> 1d24 -> 1d25 r
        sta     *draw_misc_ptr          ; 1d24 -> 1d25 -> 1d27 r
        lda     #0x00                   ; 1d25 -> 1d27 -> 1d29 r
        sta     *draw_misc_ptr + 1      ; 1d29 -> 1d2b -> 1d2d r
        lda     *half_dimension         ; 1d2b -> 1d2d -> 1d2f r
        lsr     a                       ; 1d2d -> 1d2f -> 1d30 r
-@@ -2695,10 +3053,20 @@
+@@ -2686,10 +3052,20 @@
        lsr     a                       ; 1d31 -> 1d32 -> 1d33 r
        lsr     a                       ; 1d32 -> 1d33 -> 1d34 r
        tay                             ; 1d33 -> 1d34 -> 1d35 r
        lda     *half_dimension         ; 1d3d -> 1d3f -> 1d41 r
        and     #0x1f                   ; 1d3f -> 1d41 -> 1d43 r
        cmp     #0x08                   ; 1d41 -> 1d43 -> 1d45 r a=00..1f
-@@ -2716,6 +3084,14 @@
+@@ -2707,6 +3083,14 @@
        iny                             ; 1d57 -> 1d59 -> 1d5a r
  1$:   lda     [*draw_misc_ptr],y      ; 1d59,1d69 -> 1d5a -> 1d5c r y=03..0c
        beq     2$                      ; 1d5a -> 1d5c -> 1d5e,1d61 r z=0..1
        jsr     do_draw_misc            ; 1d5c -> 1d5e -> 1da6 r s=f3..f9,02
  2$:   iny                             ; 1d5c,1db5 -> 1d61 -> 1d62 r
        cpy     #0x10                   ; 1d61 -> 1d62 -> 1d64 r y=04..0d
-@@ -2771,6 +3147,84 @@
+@@ -2762,6 +3146,84 @@
        ldy     *draw_misc_y_save       ; 1d1b -> 1db3 -> 1db5 r
  rts_1db5:
        rts                             ; 1da1,1db3 -> 1db5 -> 1076,1d61,1d7d,1d82,1d87 r s=ee..f7
  draw_misc_mask_table:
        .db     0xff                    ; 1db6 r
        .db     0x00                    ; 1db7 r
-@@ -2781,72 +3235,17 @@
+@@ -2772,14 +3234,15 @@
        .db     0xd5                    ; 1dbc r
        .db     0xff                    ; 1dbd r
  draw_misc_mask_xor_table:
 -      .db     0x7f                    ; 1dc3 r
 -      .db     0x7f                    ; 1dc4 r
 -      .db     0x00                    ; 1dc5 r
--      .db     0x00                    ; 1dc6
--      .db     0x00                    ; 1dc7
--      .db     0x00                    ; 1dc8
--      .db     0x00                    ; 1dc9
--      .db     0x00                    ; 1dca
--      .db     0x00                    ; 1dcb
--      .db     0x00                    ; 1dcc
--      .db     0x00                    ; 1dcd
--      .db     0x00                    ; 1dce
--      .db     0x00                    ; 1dcf
--      .db     0x00                    ; 1dd0
--      .db     0x00                    ; 1dd1
--      .db     0x00                    ; 1dd2
--      .db     0x00                    ; 1dd3
--      .db     0x00                    ; 1dd4
--      .db     0x00                    ; 1dd5
--      .db     0x00                    ; 1dd6
--      .db     0x00                    ; 1dd7
--      .db     0x00                    ; 1dd8
--      .db     0x00                    ; 1dd9
--      .db     0x00                    ; 1dda
--      .db     0x00                    ; 1ddb
--      .db     0x00                    ; 1ddc
--      .db     0x00                    ; 1ddd
--      .db     0x00                    ; 1dde
--      .db     0x00                    ; 1ddf
--      .db     0x00                    ; 1de0
--      .db     0x00                    ; 1de1
--      .db     0x00                    ; 1de2
--      .db     0x00                    ; 1de3
--      .db     0x00                    ; 1de4
--      .db     0x00                    ; 1de5
--      .db     0x00                    ; 1de6
--      .db     0x00                    ; 1de7
--      .db     0x00                    ; 1de8
--      .db     0x00                    ; 1de9
--      .db     0x00                    ; 1dea
--      .db     0x00                    ; 1deb
--      .db     0x00                    ; 1dec
--      .db     0x00                    ; 1ded
--      .db     0x00                    ; 1dee
--      .db     0x00                    ; 1def
--      .db     0x00                    ; 1df0
--      .db     0x00                    ; 1df1
--      .db     0x00                    ; 1df2
--      .db     0x00                    ; 1df3
--      .db     0x00                    ; 1df4
--      .db     0x00                    ; 1df5
--      .db     0x00                    ; 1df6
--      .db     0x00                    ; 1df7
--      .db     0x00                    ; 1df8
--      .db     0x00                    ; 1df9
--      .db     0x00                    ; 1dfa
--      .db     0x00                    ; 1dfb
--      .db     0x00                    ; 1dfc
--      .db     0x00                    ; 1dfd
--      .db     0x00                    ; 1dfe
--      .db     0x00                    ; 1dff
 +      .db     0xff ^ 0xff ;0x00                       ; 1dbe r
 +      .db     0x00 ^ 0x00 ;0x00                       ; 1dbf r
 +      .db     0x55 ^ 0x2a ;0x7f                       ; 1dc0 r
 +      .db     0xaa ^ 0xd5 ;0x7f                       ; 1dc4 r
 +      .db     0xff ^ 0xff ;0x00                       ; 1dc5 r
 +.endif
-+.ifeq DHGR ; move to end
-+      .ds     0x1e00 - 0xa00 - (. - text_start)
- sub_1e00:
-       jmp     loc_1e2a                ; 15dc -> 1e00 -> 1e2a r
- test_player_fire:
-@@ -3005,77 +3404,7 @@
-       adc     #0x01                   ; 1f32 -> 1f33 -> 1f35 r c=0 d=0
-       sta     object1080_velocity_x_hi + 0x50 ; 1f33 -> 1f35 -> 1f38 r
-       rts                             ; 1f35 -> 1f38 -> 15df r s=f9
--      .db     0x00                    ; 1f39
--      .db     0x00                    ; 1f3a
--      .db     0x00                    ; 1f3b
--      .db     0x00                    ; 1f3c
--      .db     0x00                    ; 1f3d
--      .db     0x00                    ; 1f3e
--      .db     0x00                    ; 1f3f
--      .db     0x00                    ; 1f40
--      .db     0x00                    ; 1f41
--      .db     0x00                    ; 1f42
--      .db     0x00                    ; 1f43
--      .db     0x00                    ; 1f44
--      .db     0x00                    ; 1f45
--      .db     0x00                    ; 1f46
--      .db     0x00                    ; 1f47
--      .db     0x00                    ; 1f48
--      .db     0x00                    ; 1f49
--      .db     0x00                    ; 1f4a
--      .db     0x00                    ; 1f4b
--      .db     0x00                    ; 1f4c
--      .db     0x00                    ; 1f4d
--      .db     0x00                    ; 1f4e
--      .db     0x00                    ; 1f4f
--      .db     0x00                    ; 1f50
--      .db     0x00                    ; 1f51
--      .db     0x00                    ; 1f52
--      .db     0x00                    ; 1f53
--      .db     0x00                    ; 1f54
--      .db     0x00                    ; 1f55
--      .db     0x00                    ; 1f56
--      .db     0x00                    ; 1f57
--      .db     0x00                    ; 1f58
--      .db     0x00                    ; 1f59
--      .db     0x00                    ; 1f5a
--      .db     0x00                    ; 1f5b
--      .db     0x00                    ; 1f5c
--      .db     0x00                    ; 1f5d
--      .db     0x00                    ; 1f5e
--      .db     0x00                    ; 1f5f
--      .db     0x00                    ; 1f60
--      .db     0x00                    ; 1f61
--      .db     0x00                    ; 1f62
--      .db     0x00                    ; 1f63
--      .db     0x00                    ; 1f64
--      .db     0x00                    ; 1f65
--      .db     0x00                    ; 1f66
--      .db     0x00                    ; 1f67
--      .db     0x00                    ; 1f68
--      .db     0x00                    ; 1f69
--      .db     0x00                    ; 1f6a
--      .db     0x00                    ; 1f6b
--      .db     0x00                    ; 1f6c
--      .db     0x00                    ; 1f6d
--      .db     0x00                    ; 1f6e
--      .db     0x00                    ; 1f6f
--      .db     0x00                    ; 1f70
--      .db     0x00                    ; 1f71
--      .db     0x00                    ; 1f72
--      .db     0x00                    ; 1f73
--      .db     0x00                    ; 1f74
--      .db     0x00                    ; 1f75
--      .db     0x00                    ; 1f76
--      .db     0x00                    ; 1f77
--      .db     0x00                    ; 1f78
--      .db     0x00                    ; 1f79
--      .db     0x00                    ; 1f7a
--      .db     0x00                    ; 1f7b
--      .db     0x00                    ; 1f7c
--      .db     0x00                    ; 1f7d
--      .db     0x00                    ; 1f7e
--      .db     0x00                    ; 1f7f
-+      .ds     0x1f80 - 0xa00 - (. - text_start)
- barr_1f80:
-       .db     0x43                    ; 1f80 r
-       .db     0x02                    ; 1f81 r
-@@ -3212,9 +3541,20 @@
-       .db     0x00                    ; 1ffd r
-       .db     0x00                    ; 1ffe r
-       .db     0x00                    ; 1fff r
-+.endif
  
-       .area   data0
--
-+data0_start:
-+ 
+       .area   text2
+@@ -3083,6 +3546,15 @@
+       .area   data2
 +.if DHGR
 +.include "../shape/dhgr_pixel_shape_index.inc"
 +.else
 +.include "../shape/shape_index.inc"
 +.else
  shape_data_ptr_lo:
-       .db     <shape_23_bomb3 + 0x28  ; 4000 r
-       .db     <shape_23_bomb3 + 0x28  ; 4001 r
-@@ -4757,6 +5097,9 @@
+       .db     <0x5d01                 ; 4000 r
+       .db     <0x5d01                 ; 4001 r
+@@ -4625,6 +5097,9 @@
        .db     0x01                    ; 45fd r
        .db     0x01                    ; 45fe r
        .db     0x04                    ; 45ff r
  draw_misc_table:
        .db     0x01                    ; 4600 r
        .db     0x07                    ; 4601 r
-@@ -9464,6 +9807,15 @@
-       .db     0x00                    ; 5bfd
-       .db     0x00                    ; 5bfe
-       .db     0x00                    ; 5bff
+@@ -9271,6 +9746,15 @@
+       .area   data3
 +.if DHGR
 +.include "../shape/dhgr_pixel_shape_data_main.inc"
 +.else
 +.if SHAPE
 +.include "../shape/shape_data.inc"
 +.else
- shape_20_bomb0:
-       .db     0x5c                    ; 5c00 r
-       .db     0x02                    ; 5c01 r
-@@ -21884,510 +22236,15 @@
-       .db     0xe0                    ; 8c05 r
-       .db     0x83                    ; 8c06 r
-       .db     0x9e                    ; 8c07 r
--      .db     0x00                    ; 8c08
--      .db     0x00                    ; 8c09
--      .db     0x00                    ; 8c0a
--      .db     0x00                    ; 8c0b
--      .db     0x00                    ; 8c0c
--      .db     0x00                    ; 8c0d
--      .db     0x00                    ; 8c0e
--      .db     0x00                    ; 8c0f
--      .db     0x00                    ; 8c10
--      .db     0x00                    ; 8c11
--      .db     0x00                    ; 8c12
--      .db     0x00                    ; 8c13
--      .db     0x00                    ; 8c14
--      .db     0x00                    ; 8c15
--      .db     0x00                    ; 8c16
--      .db     0x00                    ; 8c17
--      .db     0x00                    ; 8c18
--      .db     0x00                    ; 8c19
--      .db     0x00                    ; 8c1a
--      .db     0x00                    ; 8c1b
--      .db     0x00                    ; 8c1c
--      .db     0x00                    ; 8c1d
--      .db     0x00                    ; 8c1e
--      .db     0x00                    ; 8c1f
--      .db     0x00                    ; 8c20
--      .db     0x00                    ; 8c21
--      .db     0x00                    ; 8c22
--      .db     0x00                    ; 8c23
--      .db     0x00                    ; 8c24
--      .db     0x00                    ; 8c25
--      .db     0x00                    ; 8c26
--      .db     0x00                    ; 8c27
--      .db     0x00                    ; 8c28
--      .db     0x00                    ; 8c29
--      .db     0x00                    ; 8c2a
--      .db     0x00                    ; 8c2b
--      .db     0x00                    ; 8c2c
--      .db     0x00                    ; 8c2d
--      .db     0x00                    ; 8c2e
--      .db     0x00                    ; 8c2f
--      .db     0x00                    ; 8c30
--      .db     0x00                    ; 8c31
--      .db     0x00                    ; 8c32
--      .db     0x00                    ; 8c33
--      .db     0x00                    ; 8c34
--      .db     0x00                    ; 8c35
--      .db     0x00                    ; 8c36
--      .db     0x00                    ; 8c37
--      .db     0x00                    ; 8c38
--      .db     0x00                    ; 8c39
--      .db     0x00                    ; 8c3a
--      .db     0x00                    ; 8c3b
--      .db     0x00                    ; 8c3c
--      .db     0x00                    ; 8c3d
--      .db     0x00                    ; 8c3e
--      .db     0x00                    ; 8c3f
--      .db     0x00                    ; 8c40
--      .db     0x00                    ; 8c41
--      .db     0x00                    ; 8c42
--      .db     0x00                    ; 8c43
--      .db     0x00                    ; 8c44
--      .db     0x00                    ; 8c45
--      .db     0x00                    ; 8c46
--      .db     0x00                    ; 8c47
--      .db     0x00                    ; 8c48
--      .db     0x00                    ; 8c49
--      .db     0x00                    ; 8c4a
--      .db     0x00                    ; 8c4b
--      .db     0x00                    ; 8c4c
--      .db     0x00                    ; 8c4d
--      .db     0x00                    ; 8c4e
--      .db     0x00                    ; 8c4f
--      .db     0x00                    ; 8c50
--      .db     0x00                    ; 8c51
--      .db     0x00                    ; 8c52
--      .db     0x00                    ; 8c53
--      .db     0x00                    ; 8c54
--      .db     0x00                    ; 8c55
--      .db     0x00                    ; 8c56
--      .db     0x00                    ; 8c57
--      .db     0x00                    ; 8c58
--      .db     0x00                    ; 8c59
--      .db     0x00                    ; 8c5a
--      .db     0x00                    ; 8c5b
--      .db     0x00                    ; 8c5c
--      .db     0x00                    ; 8c5d
--      .db     0x00                    ; 8c5e
--      .db     0x00                    ; 8c5f
--      .db     0x00                    ; 8c60
--      .db     0x00                    ; 8c61
--      .db     0x00                    ; 8c62
--      .db     0x00                    ; 8c63
--      .db     0x00                    ; 8c64
--      .db     0x00                    ; 8c65
--      .db     0x00                    ; 8c66
--      .db     0x00                    ; 8c67
--      .db     0x00                    ; 8c68
--      .db     0x00                    ; 8c69
--      .db     0x00                    ; 8c6a
--      .db     0x00                    ; 8c6b
--      .db     0x00                    ; 8c6c
--      .db     0x00                    ; 8c6d
--      .db     0x00                    ; 8c6e
--      .db     0x00                    ; 8c6f
--      .db     0x00                    ; 8c70
--      .db     0x00                    ; 8c71
--      .db     0x00                    ; 8c72
--      .db     0x00                    ; 8c73
--      .db     0x00                    ; 8c74
--      .db     0x00                    ; 8c75
--      .db     0x00                    ; 8c76
--      .db     0x00                    ; 8c77
--      .db     0x00                    ; 8c78
--      .db     0x00                    ; 8c79
--      .db     0x00                    ; 8c7a
--      .db     0x00                    ; 8c7b
--      .db     0x00                    ; 8c7c
--      .db     0x00                    ; 8c7d
--      .db     0x00                    ; 8c7e
--      .db     0x00                    ; 8c7f
--      .db     0x00                    ; 8c80
--      .db     0x00                    ; 8c81
--      .db     0x00                    ; 8c82
--      .db     0x00                    ; 8c83
--      .db     0x00                    ; 8c84
--      .db     0x00                    ; 8c85
--      .db     0x00                    ; 8c86
--      .db     0x00                    ; 8c87
--      .db     0x00                    ; 8c88
--      .db     0x00                    ; 8c89
--      .db     0x00                    ; 8c8a
--      .db     0x00                    ; 8c8b
--      .db     0x00                    ; 8c8c
--      .db     0x00                    ; 8c8d
--      .db     0x00                    ; 8c8e
--      .db     0x00                    ; 8c8f
--      .db     0x00                    ; 8c90
--      .db     0x00                    ; 8c91
--      .db     0x00                    ; 8c92
--      .db     0x00                    ; 8c93
--      .db     0x00                    ; 8c94
--      .db     0x00                    ; 8c95
--      .db     0x00                    ; 8c96
--      .db     0x00                    ; 8c97
--      .db     0x00                    ; 8c98
--      .db     0x00                    ; 8c99
--      .db     0x00                    ; 8c9a
--      .db     0x00                    ; 8c9b
--      .db     0x00                    ; 8c9c
--      .db     0x00                    ; 8c9d
--      .db     0x00                    ; 8c9e
--      .db     0x00                    ; 8c9f
--      .db     0x00                    ; 8ca0
--      .db     0x00                    ; 8ca1
--      .db     0x00                    ; 8ca2
--      .db     0x00                    ; 8ca3
--      .db     0x00                    ; 8ca4
--      .db     0x00                    ; 8ca5
--      .db     0x00                    ; 8ca6
--      .db     0x00                    ; 8ca7
--      .db     0x00                    ; 8ca8
--      .db     0x00                    ; 8ca9
--      .db     0x00                    ; 8caa
--      .db     0x00                    ; 8cab
--      .db     0x00                    ; 8cac
--      .db     0x00                    ; 8cad
--      .db     0x00                    ; 8cae
--      .db     0x00                    ; 8caf
--      .db     0x00                    ; 8cb0
--      .db     0x00                    ; 8cb1
--      .db     0x00                    ; 8cb2
--      .db     0x00                    ; 8cb3
--      .db     0x00                    ; 8cb4
--      .db     0x00                    ; 8cb5
--      .db     0x00                    ; 8cb6
--      .db     0x00                    ; 8cb7
--      .db     0x00                    ; 8cb8
--      .db     0x00                    ; 8cb9
--      .db     0x00                    ; 8cba
--      .db     0x00                    ; 8cbb
--      .db     0x00                    ; 8cbc
--      .db     0x00                    ; 8cbd
--      .db     0x00                    ; 8cbe
--      .db     0x00                    ; 8cbf
--      .db     0x00                    ; 8cc0
--      .db     0x00                    ; 8cc1
--      .db     0x00                    ; 8cc2
--      .db     0x00                    ; 8cc3
--      .db     0x00                    ; 8cc4
--      .db     0x00                    ; 8cc5
--      .db     0x00                    ; 8cc6
--      .db     0x00                    ; 8cc7
--      .db     0x00                    ; 8cc8
--      .db     0x00                    ; 8cc9
--      .db     0x00                    ; 8cca
--      .db     0x00                    ; 8ccb
--      .db     0x00                    ; 8ccc
--      .db     0x00                    ; 8ccd
--      .db     0x00                    ; 8cce
--      .db     0x00                    ; 8ccf
--      .db     0x00                    ; 8cd0
--      .db     0x00                    ; 8cd1
--      .db     0x00                    ; 8cd2
--      .db     0x00                    ; 8cd3
--      .db     0x00                    ; 8cd4
--      .db     0x00                    ; 8cd5
--      .db     0x00                    ; 8cd6
--      .db     0x00                    ; 8cd7
--      .db     0x00                    ; 8cd8
--      .db     0x00                    ; 8cd9
--      .db     0x00                    ; 8cda
--      .db     0x00                    ; 8cdb
--      .db     0x00                    ; 8cdc
--      .db     0x00                    ; 8cdd
--      .db     0x00                    ; 8cde
--      .db     0x00                    ; 8cdf
--      .db     0x00                    ; 8ce0
--      .db     0x00                    ; 8ce1
--      .db     0x00                    ; 8ce2
--      .db     0x00                    ; 8ce3
--      .db     0x00                    ; 8ce4
--      .db     0x00                    ; 8ce5
--      .db     0x00                    ; 8ce6
--      .db     0x00                    ; 8ce7
--      .db     0x00                    ; 8ce8
--      .db     0x00                    ; 8ce9
--      .db     0x00                    ; 8cea
--      .db     0x00                    ; 8ceb
--      .db     0x00                    ; 8cec
--      .db     0x00                    ; 8ced
--      .db     0x00                    ; 8cee
--      .db     0x00                    ; 8cef
--      .db     0x00                    ; 8cf0
--      .db     0x00                    ; 8cf1
--      .db     0x00                    ; 8cf2
--      .db     0x00                    ; 8cf3
--      .db     0x00                    ; 8cf4
--      .db     0x00                    ; 8cf5
--      .db     0x00                    ; 8cf6
--      .db     0x00                    ; 8cf7
--      .db     0x00                    ; 8cf8
--      .db     0x00                    ; 8cf9
--      .db     0x00                    ; 8cfa
--      .db     0x00                    ; 8cfb
--      .db     0x00                    ; 8cfc
--      .db     0x00                    ; 8cfd
--      .db     0x00                    ; 8cfe
--      .db     0x00                    ; 8cff
--      .db     0x00                    ; 8d00
--      .db     0x00                    ; 8d01
--      .db     0x00                    ; 8d02
--      .db     0x00                    ; 8d03
--      .db     0x00                    ; 8d04
--      .db     0x00                    ; 8d05
--      .db     0x00                    ; 8d06
--      .db     0x00                    ; 8d07
--      .db     0x00                    ; 8d08
--      .db     0x00                    ; 8d09
--      .db     0x00                    ; 8d0a
--      .db     0x00                    ; 8d0b
--      .db     0x00                    ; 8d0c
--      .db     0x00                    ; 8d0d
--      .db     0x00                    ; 8d0e
--      .db     0x00                    ; 8d0f
--      .db     0x00                    ; 8d10
--      .db     0x00                    ; 8d11
--      .db     0x00                    ; 8d12
--      .db     0x00                    ; 8d13
--      .db     0x00                    ; 8d14
--      .db     0x00                    ; 8d15
--      .db     0x00                    ; 8d16
--      .db     0x00                    ; 8d17
--      .db     0x00                    ; 8d18
--      .db     0x00                    ; 8d19
--      .db     0x00                    ; 8d1a
--      .db     0x00                    ; 8d1b
--      .db     0x00                    ; 8d1c
--      .db     0x00                    ; 8d1d
--      .db     0x00                    ; 8d1e
--      .db     0x00                    ; 8d1f
--      .db     0x00                    ; 8d20
--      .db     0x00                    ; 8d21
--      .db     0x00                    ; 8d22
--      .db     0x00                    ; 8d23
--      .db     0x00                    ; 8d24
--      .db     0x00                    ; 8d25
--      .db     0x00                    ; 8d26
--      .db     0x00                    ; 8d27
--      .db     0x00                    ; 8d28
--      .db     0x00                    ; 8d29
--      .db     0x00                    ; 8d2a
--      .db     0x00                    ; 8d2b
--      .db     0x00                    ; 8d2c
--      .db     0x00                    ; 8d2d
--      .db     0x00                    ; 8d2e
--      .db     0x00                    ; 8d2f
--      .db     0x00                    ; 8d30
--      .db     0x00                    ; 8d31
--      .db     0x00                    ; 8d32
--      .db     0x00                    ; 8d33
--      .db     0x00                    ; 8d34
--      .db     0x00                    ; 8d35
--      .db     0x00                    ; 8d36
--      .db     0x00                    ; 8d37
--      .db     0x00                    ; 8d38
--      .db     0x00                    ; 8d39
--      .db     0x00                    ; 8d3a
--      .db     0x00                    ; 8d3b
--      .db     0x00                    ; 8d3c
--      .db     0x00                    ; 8d3d
--      .db     0x00                    ; 8d3e
--      .db     0x00                    ; 8d3f
--      .db     0x00                    ; 8d40
--      .db     0x00                    ; 8d41
--      .db     0x00                    ; 8d42
--      .db     0x00                    ; 8d43
--      .db     0x00                    ; 8d44
--      .db     0x00                    ; 8d45
--      .db     0x00                    ; 8d46
--      .db     0x00                    ; 8d47
--      .db     0x00                    ; 8d48
--      .db     0x00                    ; 8d49
--      .db     0x00                    ; 8d4a
--      .db     0x00                    ; 8d4b
--      .db     0x00                    ; 8d4c
--      .db     0x00                    ; 8d4d
--      .db     0x00                    ; 8d4e
--      .db     0x00                    ; 8d4f
--      .db     0x00                    ; 8d50
--      .db     0x00                    ; 8d51
--      .db     0x00                    ; 8d52
--      .db     0x00                    ; 8d53
--      .db     0x00                    ; 8d54
--      .db     0x00                    ; 8d55
--      .db     0x00                    ; 8d56
--      .db     0x00                    ; 8d57
--      .db     0x00                    ; 8d58
--      .db     0x00                    ; 8d59
--      .db     0x00                    ; 8d5a
--      .db     0x00                    ; 8d5b
--      .db     0x00                    ; 8d5c
--      .db     0x00                    ; 8d5d
--      .db     0x00                    ; 8d5e
--      .db     0x00                    ; 8d5f
--      .db     0x00                    ; 8d60
--      .db     0x00                    ; 8d61
--      .db     0x00                    ; 8d62
--      .db     0x00                    ; 8d63
--      .db     0x00                    ; 8d64
--      .db     0x00                    ; 8d65
--      .db     0x00                    ; 8d66
--      .db     0x00                    ; 8d67
--      .db     0x00                    ; 8d68
--      .db     0x00                    ; 8d69
--      .db     0x00                    ; 8d6a
--      .db     0x00                    ; 8d6b
--      .db     0x00                    ; 8d6c
--      .db     0x00                    ; 8d6d
--      .db     0x00                    ; 8d6e
--      .db     0x00                    ; 8d6f
--      .db     0x00                    ; 8d70
--      .db     0x00                    ; 8d71
--      .db     0x00                    ; 8d72
--      .db     0x00                    ; 8d73
--      .db     0x00                    ; 8d74
--      .db     0x00                    ; 8d75
--      .db     0x00                    ; 8d76
--      .db     0x00                    ; 8d77
--      .db     0x00                    ; 8d78
--      .db     0x00                    ; 8d79
--      .db     0x00                    ; 8d7a
--      .db     0x00                    ; 8d7b
--      .db     0x00                    ; 8d7c
--      .db     0x00                    ; 8d7d
--      .db     0x00                    ; 8d7e
--      .db     0x00                    ; 8d7f
--      .db     0x00                    ; 8d80
--      .db     0x00                    ; 8d81
--      .db     0x00                    ; 8d82
--      .db     0x00                    ; 8d83
--      .db     0x00                    ; 8d84
--      .db     0x00                    ; 8d85
--      .db     0x00                    ; 8d86
--      .db     0x00                    ; 8d87
--      .db     0x00                    ; 8d88
--      .db     0x00                    ; 8d89
--      .db     0x00                    ; 8d8a
--      .db     0x00                    ; 8d8b
--      .db     0x00                    ; 8d8c
--      .db     0x00                    ; 8d8d
--      .db     0x00                    ; 8d8e
--      .db     0x00                    ; 8d8f
--      .db     0x00                    ; 8d90
--      .db     0x00                    ; 8d91
--      .db     0x00                    ; 8d92
--      .db     0x00                    ; 8d93
--      .db     0x00                    ; 8d94
--      .db     0x00                    ; 8d95
--      .db     0x00                    ; 8d96
--      .db     0x00                    ; 8d97
--      .db     0x00                    ; 8d98
--      .db     0x00                    ; 8d99
--      .db     0x00                    ; 8d9a
--      .db     0x00                    ; 8d9b
--      .db     0x00                    ; 8d9c
--      .db     0x00                    ; 8d9d
--      .db     0x00                    ; 8d9e
--      .db     0x00                    ; 8d9f
--      .db     0x00                    ; 8da0
--      .db     0x00                    ; 8da1
--      .db     0x00                    ; 8da2
--      .db     0x00                    ; 8da3
--      .db     0x00                    ; 8da4
--      .db     0x00                    ; 8da5
--      .db     0x00                    ; 8da6
--      .db     0x00                    ; 8da7
--      .db     0x00                    ; 8da8
--      .db     0x00                    ; 8da9
--      .db     0x00                    ; 8daa
--      .db     0x00                    ; 8dab
--      .db     0x00                    ; 8dac
--      .db     0x00                    ; 8dad
--      .db     0x00                    ; 8dae
--      .db     0x00                    ; 8daf
--      .db     0x00                    ; 8db0
--      .db     0x00                    ; 8db1
--      .db     0x00                    ; 8db2
--      .db     0x00                    ; 8db3
--      .db     0x00                    ; 8db4
--      .db     0x00                    ; 8db5
--      .db     0x00                    ; 8db6
--      .db     0x00                    ; 8db7
--      .db     0x00                    ; 8db8
--      .db     0x00                    ; 8db9
--      .db     0x00                    ; 8dba
--      .db     0x00                    ; 8dbb
--      .db     0x00                    ; 8dbc
--      .db     0x00                    ; 8dbd
--      .db     0x00                    ; 8dbe
--      .db     0x00                    ; 8dbf
--      .db     0x00                    ; 8dc0
--      .db     0x00                    ; 8dc1
--      .db     0x00                    ; 8dc2
--      .db     0x00                    ; 8dc3
--      .db     0x00                    ; 8dc4
--      .db     0x00                    ; 8dc5
--      .db     0x00                    ; 8dc6
--      .db     0x00                    ; 8dc7
--      .db     0x00                    ; 8dc8
--      .db     0x00                    ; 8dc9
--      .db     0x00                    ; 8dca
--      .db     0x00                    ; 8dcb
--      .db     0x00                    ; 8dcc
--      .db     0x00                    ; 8dcd
--      .db     0x00                    ; 8dce
--      .db     0x00                    ; 8dcf
--      .db     0x00                    ; 8dd0
--      .db     0x00                    ; 8dd1
--      .db     0x00                    ; 8dd2
--      .db     0x00                    ; 8dd3
--      .db     0x00                    ; 8dd4
--      .db     0x00                    ; 8dd5
--      .db     0x00                    ; 8dd6
--      .db     0x00                    ; 8dd7
--      .db     0x00                    ; 8dd8
--      .db     0x00                    ; 8dd9
--      .db     0x00                    ; 8dda
--      .db     0x00                    ; 8ddb
--      .db     0x00                    ; 8ddc
--      .db     0x00                    ; 8ddd
--      .db     0x00                    ; 8dde
--      .db     0x00                    ; 8ddf
--      .db     0x00                    ; 8de0
--      .db     0x00                    ; 8de1
--      .db     0x00                    ; 8de2
--      .db     0x00                    ; 8de3
--      .db     0x00                    ; 8de4
--      .db     0x00                    ; 8de5
--      .db     0x00                    ; 8de6
--      .db     0x00                    ; 8de7
--      .db     0x00                    ; 8de8
--      .db     0x00                    ; 8de9
--      .db     0x00                    ; 8dea
--      .db     0x00                    ; 8deb
--      .db     0x00                    ; 8dec
--      .db     0x00                    ; 8ded
--      .db     0x00                    ; 8dee
--      .db     0x00                    ; 8def
--      .db     0x00                    ; 8df0
--      .db     0x00                    ; 8df1
--      .db     0x00                    ; 8df2
--      .db     0x00                    ; 8df3
--      .db     0x00                    ; 8df4
--      .db     0x00                    ; 8df5
--      .db     0x00                    ; 8df6
--      .db     0x00                    ; 8df7
--      .db     0x00                    ; 8df8
--      .db     0x00                    ; 8df9
--      .db     0x00                    ; 8dfa
--      .db     0x00                    ; 8dfb
--      .db     0x00                    ; 8dfc
--      .db     0x00                    ; 8dfd
--      .db     0x00                    ; 8dfe
--      .db     0x00                    ; 8dff
-+.endif
+       .db     0x5c                    ; 5c00
+       .db     0x02                    ; 5c01
+       .db     0x00                    ; 5c02
+@@ -21567,9 +22051,15 @@
+       .db     0xe0                    ; 8c05
+       .db     0x83                    ; 8c06
+       .db     0x9e                    ; 8c07
 +.endif
 +.endif
-+.if ALIGN
-+      .ds     0x8e00 - 0x4000 - (. - data0_start)
 +.endif
+       .area   data4
 +.if UCODE
 +.include "ucode_data.inc"
 +.else
- ucode1080_countdown_30_pixel:
-       .dw     0x0f30                  ; 8e00 r
-       .db     0x00                    ; 8e02 r
-@@ -25710,31 +25567,309 @@
-       .dw     0xf1f1                  ; 9de8 r
-       .dw     0x987c                  ; 9dea r
-       .db     0x00                    ; 9dec r
--recrack_loader:
--      cld                             ; 09fd -> 9ded -> r
--      ldx     #0xff                   ; 9dee r
--      txs                             ; 9df0 r
--      lda     #<init_game             ; 9df1 r
--      sta     *vec_init_game          ; 9df3 r
--      lda     #>init_game             ; 9df5 r
--      sta     *vec_init_game + 1      ; 9df7 r
--      lda     #<start_game            ; 9df9 r
--      sta     *vec_start_game         ; 9dfb r
--      lda     #>start_game            ; 9dfd r
--      sta     *vec_start_game + 1     ; 9dff r
--      lda     #<calculate_object_shape ; 9e01 r
--      sta     *vec_calculate_object_shape ; 9e03 r
--      lda     #>calculate_object_shape ; 9e05 r
--      sta     *vec_calculate_object_shape + 1 ; 9e07 r
--      lda     #<draw_misc_from_table  ; 9e09 r
--      sta     *vec_draw_misc_from_table ; 9e0b r
--      lda     #>draw_misc_from_table  ; 9e0d r
--      sta     *vec_draw_misc_from_table + 1 ; 9e0f r
--      lda     #<restart               ; 9e11 r
--      sta     vec_restart             ; 9e13 r
--      lda     #>restart               ; 9e16 r
--      sta     vec_restart + 1         ; 9e18 r
--      jmp     start                   ; 9e1b r
+ bvar_8e00:
+       .db     0x30                    ; 8e00 r
+       .db     0x0f                    ; 8e01
+@@ -26140,6 +26630,13 @@
+       .db     0x7c                    ; 9dea
+       .db     0x98                    ; 9deb
+       .db     0x00                    ; 9dec
 +.endif
 +
-+.if DHGR ; move to here
-+sub_1e00:
-+      jmp     loc_1e2a                ; 15dc -> 1e00 -> 1e2a r
-+test_player_fire:
-+      clc                             ; 1542 -> 1e03 -> 1e04 r
-+      bit     *demo_mode              ; 1e03 -> 1e04 -> 1e06 r
-+      bmi     loc_1e1e                ; 1e04 -> 1e06 -> 1e08,1e1e r n=0..1
-+      lda     HW_PB0                  ; 1e06 -> 1e08 -> 1e0b r
-+      ora     HW_PB1                  ; 1e08 -> 1e0b -> 1e0e r
-+bvar_1e0e:
-+      bmi     loc_1e21                ; 1e0b -> 1e0e -> 1e10 rw n=0
-+      lda     #0x02                   ; 1e0e -> 1e10 -> 1e12 r
-+      and     *button_state           ; 1e10 -> 1e12 -> 1e14 r
-+      beq     0$                      ; 1e12 -> 1e14 -> 1e16,1e1d r z=0..1
-+      lda     #0xfd                   ; 1e14 -> 1e16 -> 1e18 r
-+      and     *button_state           ; 1e16 -> 1e18 -> 1e1a r
-+      sta     *button_state           ; 1e18 -> 1e1a -> 1e1c r
-+      sec                             ; 1e1a -> 1e1c -> 1e1d r
-+0$:   rts                             ; 1e14,1e1c -> 1e1d -> 1545 r s=f7
-+loc_1e1e:
-+      jsr     random_byte             ; 1e06 -> 1e1e -> 1881 r s=f7
-+loc_1e21:
-+      asl     a                       ; 18a1 -> 1e21 -> 1e22 r
-+      rts                             ; 1e21 -> 1e22 -> 1545 r s=f7
-+loc_1e23:
-+      lda     #0x02                   ; 1e4a -> 1e23 -> 1e25 r
-+      ora     *button_state           ; 1e23 -> 1e25 -> 1e27 r
-+      sta     *button_state           ; 1e25 -> 1e27 -> 1e29 r
-+      rts                             ; 1e27 -> 1e29 -> 15df r s=f9
-+loc_1e2a:
-+      bit     *demo_mode              ; 1e00 -> 1e2a -> 1e2c r
-+      bpl     0$                      ; 1e2a -> 1e2c -> 1e2e,1e42 r n=0..1
-+      jsr     random_byte             ; 1e2c -> 1e2e -> 1881 r s=f9
-+      and     #0x1f                   ; 18a1 -> 1e31 -> 1e33 r
-+      tay                             ; 1e31 -> 1e33 -> 1e34 r
-+      dey                             ; 1e33 -> 1e34 -> 1e35 r
-+      beq     6$                      ; 1e34 -> 1e35 -> 1e37,1e87 r z=0..1
-+      dey                             ; 1e35 -> 1e37 -> 1e38 r
-+      beq     7$                      ; 1e37 -> 1e38 -> 1e3a,1e94 r z=0..1
-+      dey                             ; 1e38 -> 1e3a -> 1e3b r
-+      beq     2$                      ; 1e3a -> 1e3b -> 1e3d,1e69 r z=0..1
-+      dey                             ; 1e3b -> 1e3d -> 1e3e r
-+      beq     1$                      ; 1e3d -> 1e3e -> 1e40,1e5c r z=0..1
-+      bne     4$                      ; 1e3e -> 1e40 -> 1e82 r z=0
-+0$:   bit     *button_state           ; 1e2c -> 1e42 -> 1e44 r
-+      bmi     5$                      ; 1e42 -> 1e44 -> 1e46 r n=0
-+      lda     *key_state              ; 1e44 -> 1e46 -> 1e48 r
-+      cmp     #0xa0                   ; 1e46 -> 1e48 -> 1e4a r a=00..da
-+      beq     loc_1e23                ; 1e48 -> 1e4a -> 1e23,1e4c r z=0..1
-+      cmp     #0xc1                   ; 1e4a -> 1e4c -> 1e4e r a=00..da
-+      beq     6$                      ; 1e4c -> 1e4e -> 1e50,1e87 r z=0..1
-+      cmp     #0xda                   ; 1e4e -> 1e50 -> 1e52 r a=00..da
-+      beq     7$                      ; 1e50 -> 1e52 -> 1e54,1e94 r z=0..1
-+      cmp     #0x95                   ; 1e52 -> 1e54 -> 1e56 r a=00..95
-+      beq     2$                      ; 1e54 -> 1e56 -> 1e58,1e69 r z=0..1
-+      cmp     #0x88                   ; 1e56 -> 1e58 -> 1e5a r a=00..88
-+      bne     4$                      ; 1e58 -> 1e5a -> 1e5c,1e82 r z=0..1
-+1$:   ldy     object1080_velocity_x_hi + 0x51 ; 1e3e,1e5a -> 1e5c -> 1e5f r
-+      cpy     #0x01                   ; 1e5c -> 1e5f -> 1e61 r y=00..04
-+      bmi     4$                      ; 1e5f -> 1e61 -> 1e63,1e82 r n=0..1
-+      lda     #0x20                   ; 1e61 -> 1e63 -> 1e65 r
-+      ldy     #0xff                   ; 1e63 -> 1e65 -> 1e67 r
-+      bne     3$                      ; 1e65 -> 1e67 -> 1e74 r z=0
-+2$:   ldy     object1080_velocity_x_hi + 0x51 ; 1e3b,1e56 -> 1e69 -> 1e6c r
-+      cpy     #0x04                   ; 1e69 -> 1e6c -> 1e6e r y=00..04
-+      bpl     4$                      ; 1e6c -> 1e6e -> 1e70,1e82 r n=0..1
-+      lda     #0xe0                   ; 1e6e -> 1e70 -> 1e72 r
-+      ldy     #0x00                   ; 1e70 -> 1e72 -> 1e74 r
-+3$:   clc                             ; 1e67,1e72 -> 1e74 -> 1e75 r
-+      adc     object1080_velocity_x_lo + 0x51 ; 1e74 -> 1e75 -> 1e78 r c=0 d=0
-+      sta     object1080_velocity_x_lo + 0x51 ; 1e75 -> 1e78 -> 1e7b r
-+      tya                             ; 1e78 -> 1e7b -> 1e7c r
-+      adc     object1080_velocity_x_hi + 0x51 ; 1e7b -> 1e7c -> 1e7f r c=0..1 d=0
-+      sta     object1080_velocity_x_hi + 0x51 ; 1e7c -> 1e7f -> 1e82 r
-+4$:   jmp     17$                     ; 1e40,1e5a,1e61,1e6e,1e7f -> 1e82 -> 1f1f r
-+5$:   bmi     10$                     ; 1e85 r
-+6$:   ldy     object1080_velocity_y_hi + 0x51 ; 1e35,1e4e -> 1e87 -> 1e8a r
-+      cpy     #0xfe                   ; 1e87 -> 1e8a -> 1e8c r y=00..ff
-+      bmi     9$                      ; 1e8a -> 1e8c -> 1e8e,1ead r n=0..1
-+      lda     #0x00                   ; 1e8c -> 1e8e -> 1e90 r
-+      ldy     #0xff                   ; 1e8e -> 1e90 -> 1e92 r
-+      bne     8$                      ; 1e90 -> 1e92 -> 1e9f r z=0
-+7$:   ldy     object1080_velocity_y_hi + 0x51 ; 1e38,1e52 -> 1e94 -> 1e97 r
-+      cpy     #0x03                   ; 1e94 -> 1e97 -> 1e99 r y=00..ff
-+      bpl     9$                      ; 1e97 -> 1e99 -> 1e9b,1ead r n=0..1
-+      lda     #0x00                   ; 1e99 -> 1e9b -> 1e9d r
-+      ldy     #0x01                   ; 1e9b -> 1e9d -> 1e9f r
-+8$:   clc                             ; 1e92,1e9d -> 1e9f -> 1ea0 r
-+      adc     object1080_velocity_y_lo + 0x51 ; 1e9f -> 1ea0 -> 1ea3 r c=0 d=0
-+      sta     object1080_velocity_y_lo + 0x51 ; 1ea0 -> 1ea3 -> 1ea6 r
-+      tya                             ; 1ea3 -> 1ea6 -> 1ea7 r
-+      adc     object1080_velocity_y_hi + 0x51 ; 1ea6 -> 1ea7 -> 1eaa r c=0 d=0
-+      sta     object1080_velocity_y_hi + 0x51 ; 1ea7 -> 1eaa -> 1ead r
-+9$:   jmp     17$                     ; 1e8c,1e99,1eaa -> 1ead -> 1f1f r
-+10$:  lda     #0x01                   ; 1eb0 r
-+      eor     *button_state           ; 1eb2 r
-+      sta     *button_state           ; 1eb4 r
-+      and     #0x01                   ; 1eb6 r
-+      php                             ; 1eb8 r
-+      ora     #0x64                   ; 1eb9 r
-+      sta     12$                     ; 1ebb r
-+      bit     HW_PTRIG                ; 1ebe r
-+      ldy     #0xfe                   ; 1ec1 r
-+      lda     #0x40                   ; 1ec3 r
-+11$:  .db     0x2c                    ; 1ec5 r "bit HW_PADDL1"
-+12$:  .dw     HW_PADDL1               ; 1ec6 rw
-+      bpl     13$                     ; 1ec8 r
-+      clc                             ; 1eca r
-+      adc     #0x05                   ; 1ecb r
-+      bcc     11$                     ; 1ecd r
-+      iny                             ; 1ecf r
-+      cpy     #0x03                   ; 1ed0 r
-+      bne     11$                     ; 1ed2 r
-+      dey                             ; 1ed4 r
-+      sbc     #0x05                   ; 1ed5 r
-+13$:  plp                             ; 1ed7 r
-+      bne     15$                     ; 1ed8 r
-+      sta     object1080_velocity_x_lo + 0x51 ; 1eda r
-+      clc                             ; 1edd r
-+      adc     object1080_x_lo + 0x51  ; 1ede r
-+      iny                             ; 1ee1 r
-+      iny                             ; 1ee2 r
-+      tya                             ; 1ee3 r
-+      sta     object1080_velocity_x_hi + 0x51 ; 1ee4 r
-+      adc     object1080_x_hi + 0x51  ; 1ee7 r
-+      cmp     #0x4f                   ; 1eea r
-+      bcc     14$                     ; 1eec r
-+      cmp     #0xab                   ; 1eee r
-+      bcc     17$                     ; 1ef0 r
-+14$:  lda     object1080_velocity_x_lo + 0x50 ; 1ef2 r
-+      sta     object1080_velocity_x_lo + 0x51 ; 1ef5 r
-+      lda     object1080_velocity_x_hi + 0x50 ; 1ef8 r
-+      sta     object1080_velocity_x_hi + 0x51 ; 1efb r
-+      jmp     17$                     ; 1efe r
-+15$:  sta     object1080_velocity_y_lo + 0x51 ; 1f01 r
-+      clc                             ; 1f04 r
-+      adc     object1080_y_lo + 0x51  ; 1f05 r
-+      tya                             ; 1f08 r
-+      sta     object1080_velocity_y_hi + 0x51 ; 1f09 r
-+      adc     object1080_y_hi + 0x51  ; 1f0c r
-+      cmp     #0x35                   ; 1f0f r
-+      bcc     16$                     ; 1f11 r
-+      cmp     #0xb8                   ; 1f13 r
-+      bcc     17$                     ; 1f15 r
-+16$:  lda     #0x00                   ; 1f17 r
-+      sta     object1080_velocity_y_lo + 0x51 ; 1f19 r
-+      sta     object1080_velocity_y_hi + 0x51 ; 1f1c r
-+17$:  lda     object1080_x_hi + 0x51  ; 1e82,1ead -> 1f1f -> 1f22 r
-+      asl     a                       ; 1f1f -> 1f22 -> 1f23 r
-+      rol     object1080_velocity_x_hi + 0x50 ; 1f22 -> 1f23 -> 1f26 r
-+      asl     a                       ; 1f23 -> 1f26 -> 1f27 r
-+      rol     object1080_velocity_x_hi + 0x50 ; 1f26 -> 1f27 -> 1f2a r
-+      sta     object1080_velocity_x_lo + 0x50 ; 1f27 -> 1f2a -> 1f2d r
-+      lda     object1080_velocity_x_hi + 0x50 ; 1f2a -> 1f2d -> 1f30 r
-+      and     #0x03                   ; 1f2d -> 1f30 -> 1f32 r
-+      clc                             ; 1f30 -> 1f32 -> 1f33 r
-+      adc     #0x01                   ; 1f32 -> 1f33 -> 1f35 r c=0 d=0
-+      sta     object1080_velocity_x_hi + 0x50 ; 1f33 -> 1f35 -> 1f38 r
-+      rts                             ; 1f35 -> 1f38 -> 15df r s=f9
-+      .ds     0xa180 - 0x4000 - (. - data0_start)
-+barr_1f80:
-+      .db     0x43                    ; 1f80 r
-+      .db     0x02                    ; 1f81 r
-+      .db     0x0a                    ; 1f82 r
-+      .db     0x10                    ; 1f83 r
-+      .db     0x06                    ; 1f84 r
-+      .db     0xa0                    ; 1f85 r
-+      .db     0x01                    ; 1f86 r
-+      .db     0x04                    ; 1f87 r
-+      .db     0x03                    ; 1f88 r
-+      .db     0x08                    ; 1f89 r
-+      .db     0x08                    ; 1f8a r
-+      .db     0x18                    ; 1f8b r
-+      .db     0x08                    ; 1f8c r
-+      .db     0x18                    ; 1f8d r
-+      .db     0x18                    ; 1f8e r
-+      .db     0x18                    ; 1f8f r
-+barr_1f90:
-+      .db     0x00                    ; 1f90 r
-+      .db     0xff                    ; 1f91 r
-+      .db     0x11                    ; 1f92 r
-+      .db     0x60                    ; 1f93 r
-+      .db     0x08                    ; 1f94 r
-+      .db     0x01                    ; 1f95 r
-+      .db     0x30                    ; 1f96 r
-+      .db     0xa1                    ; 1f97 r
-+      .db     0x40                    ; 1f98 r
-+      .db     0x10                    ; 1f99 r
-+      .db     0x10                    ; 1f9a r
-+      .db     0x21                    ; 1f9b r
-+      .db     0x30                    ; 1f9c r
-+      .db     0x31                    ; 1f9d r
-+      .db     0x49                    ; 1f9e r
-+      .db     0x61                    ; 1f9f r
-+barr_1fa0:
-+      .db     0xab                    ; 1fa0 r
-+      .db     0x80                    ; 1fa1 r
-+      .db     0xff                    ; 1fa2 r
-+      .db     0x00                    ; 1fa3 r
-+      .db     0x08                    ; 1fa4 r
-+      .db     0x01                    ; 1fa5 r
-+      .db     0x00                    ; 1fa6 r
-+      .db     0x00                    ; 1fa7 r
-+      .db     0xf8                    ; 1fa8 r
-+      .db     0xb0                    ; 1fa9 r
-+      .db     0xa9                    ; 1faa r
-+      .db     0xff                    ; 1fab r
-+      .db     0xfc                    ; 1fac r
-+      .db     0xfe                    ; 1fad r
-+      .db     0xfd                    ; 1fae r
-+      .db     0xfc                    ; 1faf r
-+barr_1fb0:
-+      .db     0xff                    ; 1fb0 r
-+      .db     0xff                    ; 1fb1 r
-+      .db     0xff                    ; 1fb2 r
-+      .db     0xff                    ; 1fb3 r
-+      .db     0x18                    ; 1fb4 r
-+      .db     0xff                    ; 1fb5 r
-+      .db     0xff                    ; 1fb6 r
-+      .db     0xff                    ; 1fb7 r
-+      .db     0x10                    ; 1fb8 r
-+      .db     0xff                    ; 1fb9 r
-+      .db     0xff                    ; 1fba r
-+      .db     0xff                    ; 1fbb r
-+      .db     0xff                    ; 1fbc r
-+      .db     0xff                    ; 1fbd r
-+      .db     0xff                    ; 1fbe r
-+      .db     0xff                    ; 1fbf r
-+barr_1fc0:
-+      .db     0x04                    ; 1fc0 r
-+      .db     0x04                    ; 1fc1 r
-+      .db     0x06                    ; 1fc2 r
-+      .db     0x02                    ; 1fc3 r
-+      .db     0x08                    ; 1fc4 r
-+      .db     0x02                    ; 1fc5 r
-+      .db     0x10                    ; 1fc6 r
-+      .db     0x02                    ; 1fc7 r
-+      .db     0x08                    ; 1fc8 r
-+      .db     0x04                    ; 1fc9 r
-+      .db     0x04                    ; 1fca r
-+      .db     0x02                    ; 1fcb r
-+      .db     0x06                    ; 1fcc r
-+      .db     0x02                    ; 1fcd r
-+      .db     0x02                    ; 1fce r
-+      .db     0x02                    ; 1fcf r
-+barr_1fd0:
-+      .db     0x00                    ; 1fd0 r
-+      .db     0x00                    ; 1fd1 r
-+      .db     0x00                    ; 1fd2 r
-+      .db     0x00                    ; 1fd3 r
-+      .db     0xfe                    ; 1fd4 r
-+      .db     0x00                    ; 1fd5 r
-+      .db     0x00                    ; 1fd6 r
-+      .db     0x00                    ; 1fd7 r
-+      .db     0x02                    ; 1fd8 r
-+      .db     0x00                    ; 1fd9 r
-+      .db     0x00                    ; 1fda r
-+      .db     0x00                    ; 1fdb r
-+      .db     0x00                    ; 1fdc r
-+      .db     0x00                    ; 1fdd r
-+      .db     0x00                    ; 1fde r
-+      .db     0x00                    ; 1fdf r
-+barr_1fe0:
-+      .db     0x01                    ; 1fe0 r
-+      .db     0x02                    ; 1fe1 r
-+      .db     0x01                    ; 1fe2 r
-+      .db     0x01                    ; 1fe3 r
-+      .db     0x01                    ; 1fe4 r
-+      .db     0x01                    ; 1fe5 r
-+      .db     0x01                    ; 1fe6 r
-+      .db     0x01                    ; 1fe7 r
-+      .db     0x03                    ; 1fe8 r
-+      .db     0x01                    ; 1fe9 r
-+      .db     0x01                    ; 1fea r
-+      .db     0x01                    ; 1feb r
-+      .db     0x04                    ; 1fec r
-+      .db     0x01                    ; 1fed r
-+      .db     0x01                    ; 1fee r
-+      .db     0x01                    ; 1fef r
-+barr_1ff0:
-+      .db     0x00                    ; 1ff0 r
-+      .db     0x00                    ; 1ff1 r
-+      .db     0x00                    ; 1ff2 r
-+      .db     0x00                    ; 1ff3 r
-+      .db     0x00                    ; 1ff4 r
-+      .db     0x00                    ; 1ff5 r
-+      .db     0x00                    ; 1ff6 r
-+      .db     0x00                    ; 1ff7 r
-+      .db     0x00                    ; 1ff8 r
-+      .db     0x00                    ; 1ff9 r
-+      .db     0x00                    ; 1ffa r
-+      .db     0x00                    ; 1ffb r
-+      .db     0x00                    ; 1ffc r
-+      .db     0x00                    ; 1ffd r
-+      .db     0x00                    ; 1ffe r
-+      .db     0x00                    ; 1fff r
-+
-+      .area   data1
++.if DHGR
++      .area   data5
 +
 +.include "../shape/dhgr_pixel_shape_data_aux.inc"
 +.endif
  
-       .area   udata2
-@@ -25817,3 +25952,4 @@
- object6080_b560:
-       .ds     0x20                    ; b560 rw
+       .area   udata1
  
-+      .end    start
index 2e0fb31..963cf4c 100644 (file)
@@ -1,15 +1,20 @@
 areas
 0x0000,0x00f3,zpage,uninit
-0x0200,0x0002,udata0,uninit
-0x0400,0x03f0,udata1,uninit
-0x09fd,0x1603,text,init
-0x4000,0x5e1e,data0,init
-0xa800,0x0d80,udata2,uninit
+0x0200,0x0002,data0,init
+0x0400,0x03f0,udata0,uninit
+0x0a00,0x0df5,text0,init
+0x1800,0x05c6,text1,init
+0x1e00,0x0139,text2,init
+0x1f80,0x0080,data1,init
+0x4000,0x1bc0,data2,init
+0x5c00,0x3008,data3,init
+0x8e00,0x0fed,data4,init
+0xa800,0x0d80,udata1,uninit
 
 items
 0x0022,0x0002,vec_init_game,word
 0x0024,0x0002,vec_start_game,word
-0x0028,0x0002,vec_calculate_object_shape,word
+0x0028,0x0002,vec_calculate_object_shape,word,,10000 # suppress local for patch
 0x004e,0x0002,vec_draw_misc_from_table,word
 0x0080,0x0001,half_dimension,byte
 0x0081,0x0001,x_save,byte
@@ -363,9 +368,9 @@ items
 0x16f1,0x0001,clear_demo_mode_set_mission_from_a,code
 0x16f7,0x0001,set_demo_mode_set_mission_from_a,code
 0x16fd,0x0001,inc_mission,code
-0x1708,0x0001,init_game,code
+0x1708,0x0001,init_game,code,,10000 # suppress local for patch
 0x1719,0x0001,start_game_demo,code
-0x171b,0x0001,start_game,code
+0x171b,0x0001,start_game,code,,10000 # suppress local for patch
 0x1750,0x0001,test_key,code
 0x1797,0x0001,read_buttons,code
 0x17b1,0x0001,vector_to_start_game,code
@@ -388,29 +393,41 @@ items
 0x1a3d,0x0008,pixel_mask_table_right,byte
 0x1a45,0x0001,draw_pixel_object,code
 0x1aaf,0x0001,draw_object,code
+0x1b6b,0x0001,,code_ign # self-modifying code assembled with garbage word
+0x1b6c,0x0002,,word
 0x1b96,0x0001,,code_ign # bug? spans a900 and aa00 tables, don't merge them
 0x1b9b,0x0001,,code_ign # bug? spans aa00 and ab00 tables, don't merge them
+0x1bb4,0x0001,,code_ign # self-modifying code assembled with garbage word
+0x1bb5,0x0002,,word
 0x1bcc,0x0001,erase_pixel_object,code
 0x1c0d,0x0001,erase_object,code
+0x1c50,0x0001,,code_ign # self-modifying code assembled with garbage word
+0x1c51,0x0002,,word
 0x1c7a,0x0001,,code_ign # bug? spans a900 and aa00 tables, don't merge them
 0x1c7f,0x0001,,code_ign # bug? spans aa00 and ab00 tables, don't merge them
+0x1c98,0x0001,,code_ign # self-modifying code assembled with garbage word
+0x1c99,0x0002,,word
 0x1cb2,0x0001,draw_misc,code
-0x1d1c,0x0001,draw_misc_from_table,code
+0x1cfe,0x0001,,code_ign # self-modifying code assembled with garbage word
+0x1cff,0x0002,,word
+0x1d1c,0x0001,draw_misc_from_table,code,,10000 # suppress local for patch
 0x1d6d,0x0001,draw_4_digits,code
 0x1d8c,0x0001,draw_digit_hi,code
 0x1d90,0x0001,draw_digit_lo,code
 0x1da6,0x0001,do_draw_misc,code
 0x1db6,0x0008,draw_misc_mask_table,byte
 0x1dbe,0x0008,draw_misc_mask_xor_table,byte
-0x1e03,0x0001,test_player_fire,code # returns cf=1 if firing (random for demo mode)
+# returns cf=1 if firing (random for demo mode)
+0x1e03,0x0001,test_player_fire,code
 0x2000,0x2000,HIRES_SCREEN,byte
-0x4000,0x0100,shape_data_ptr_lo,byte
-0x4100,0x0100,shape_data_ptr_hi,byte
-0x4200,0x0100,shape_width_bytes,byte
+0x4000,0x0100,shape_data_ptr_lo,byte,byte
+0x4100,0x0100,shape_data_ptr_hi,byte,byte
+0x4200,0x0100,shape_width_bytes,byte,byte
 0x4300,0x0100,shape_height,byte
 0x4400,0x0100,shape_size_bytes,byte
 0x4500,0x0100,shape_width,byte
-0x4600,0x0200,draw_misc_table,byte,,10000 # 0x20 entries of 0x10 bytes
+# 0x20 entries of 0x10 bytes
+0x4600,0x0200,draw_misc_table,byte,,10000 # suppress local for patch
 0x4800,0x0001,score_var_4800,byte
 0x4801,0x000f,score_table_4801,byte
 0x4810,0x0070,object1080_countdown_b120_init,byte
@@ -491,630 +508,11 @@ items
 0x5b00,0x0040,ucode6080_fire_state_f2,word
 0x5b40,0x0040,ucode6080_test_fire_state_f3,word
 0x5b80,0x0040,ucode6080_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
-0x5c93,0x0046,shape_22_bomb2,byte
-0x5cd9,0x0054,shape_23_bomb3,byte
-0x5d2d,0x0054,shape_50_missile_launcher0_empty,byte
-0x5d81,0x0118,shape_51_missile_launcher1_empty,byte
-0x5e99,0x0188,shape_52_56_missile_launcher2,byte
-0x6021,0x00c4,shape_54_missile_launcher0,byte
-0x60e5,0x0118,shape_55_missile_launcher1,byte
-0x61fd,0x003f,shape_40_missile0,byte
-0x623c,0x0062,shape_44_missile4,byte
-0x629e,0x003f,shape_48_missile8,byte
-0x62dd,0x0062,shape_4c_missile12,byte
-0x633f,0x0054,shape_41_missile1,byte
-0x6393,0x0054,shape_47_missile7,byte
-0x63e7,0x0054,shape_49_missile9,byte
-0x643b,0x0054,shape_4f_missile15,byte
-0x648f,0x0054,shape_42_missile2,byte
-0x64e3,0x0054,shape_46_missile6,byte
-0x6537,0x0054,shape_4a_missile10,byte
-0x658b,0x0054,shape_4e_missile14,byte
-0x65df,0x0062,shape_43_missile3,byte
-0x6641,0x0062,shape_45_missile5,byte
-0x66a3,0x0062,shape_4b_missile11,byte
-0x6705,0x0062,shape_4d_missile13,byte
-0x6767,0x0046,shape_60_fragment0,byte
-0x67ad,0x0046,shape_61_fragment1,byte
-0x67f3,0x0038,shape_62_fragment2,byte
-0x682b,0x002a,shape_63_fragment3,byte
-0x6855,0x0015,shape_64_fragment4,byte
-0x686a,0x002a,shape_65_fragment5,byte
-0x6894,0x0038,shape_66_fragment6,byte
-0x68cc,0x0046,shape_67_fragment7,byte
-0x6912,0x007e,shape_0c_bird0,byte
-0x6990,0x007e,shape_0d_bird1,byte
-0x6a0e,0x007e,shape_0e_bird2,byte
-0x6a8c,0x000e,shape_0f_bird3,byte
-0x6a9a,0x000e,shape_08_bullet3,byte
-0x6aa8,0x0015,shape_09_bullet5,byte
-0x6abd,0x0015,shape_0a_bullet7,byte
-0x6ad2,0x001c,shape_0b_bullet9,byte
-0x6aee,0x0054,shape_14_parachute0,byte
-0x6b42,0x007e,shape_15_parachute1,byte
-0x6bc0,0x00bd,shape_16_parachute_open,byte
-0x6c7d,0x0093,shape_88_8a_explosion0_2,byte
-0x6d10,0x0093,shape_89_explosion1,byte
-0x6da3,0x007e,shape_8b_explosion3,byte
-0x6e21,0x00a8,shape_10_ship,byte
-0x6ec9,0x00c4,shape_11_ship_open,byte
-0x6f8d,0x002a,shape_12_exhaust0,byte
-0x6fb7,0x0008,shape_13_exhaust1,byte
-0x6fbf,0x002a,shape_17_fuel,byte
-0x6fe9,0x00d2,shape_18_supply_plane,byte
-0x70bb,0x0038,shape_28_balloon0,byte
-0x70f3,0x0062,shape_29_balloon1,byte
-0x7155,0x00bd,shape_2a_balloon2,byte
-0x7212,0x0070,shape_2e_enemy_plane0,byte
-0x7282,0x0070,shape_2f_enemy_plane1,byte
-0x72f2,0x00f5,shape_2c_helicopter,byte
-0x73e7,0x0118,shape_1c_tank,byte
-0x74ff,0x0118,shape_1e_missile_tank,byte
-0x7617,0x0118,shape_1f_missile_tank_empty,byte
-0x772f,0x0196,shape_36_pylon,byte
-0x78c5,0x00d2,shape_30_silo0,byte
-0x7997,0x00d2,shape_31_silo1,byte
-0x7a69,0x0118,shape_70_haystack,byte
-0x7b81,0x0118,shape_71_house,byte
-0x7c99,0x0118,shape_72_headquarters,byte
-0x7db1,0x00d2,shape_73_radar0,byte
-0x7e83,0x00d2,shape_74_radar1,byte
-0x7f55,0x00d2,shape_75_radar2,byte
-0x8027,0x00bd,shape_76_icbm,byte
-0x80e4,0x0188,shape_78_tree,byte
-0x826c,0x0126,shape_79_cactus,byte
-0x8392,0x0031,shape_aa_text_score,byte
-0x83c3,0x0007,shape_ab_text_colon,byte
-0x83ca,0x0023,shape_ac_text_high,byte
-0x83ed,0x003f,shape_b0_text_mission,byte
-0x842c,0x002a,shape_b2_text_fuel,byte
-0x8456,0x0031,shape_b3_text_empty,byte
-0x8487,0x002a,shape_b4_text_bomb,byte
-0x84b1,0x004d,shape_b6_text_ship_left,byte
-0x84fe,0x0054,shape_b7_text_complete,byte
-0x8552,0x001c,shape_b8_text_the,byte
-0x856e,0x0031,shape_b9_text_radar,byte
-0x859f,0x0023,shape_ba_text_icbm,byte
-0x85c2,0x003f,shape_bc_text_attack,byte
-0x8601,0x002a,shape_bd_text_tank,byte
-0x862b,0x0077,shape_be_text_headquarters,byte
-0x86a2,0x0007,shape_bf_text_a,byte
-0x86a9,0x0007,shape_a0_text_0,byte
-0x86b0,0x0007,shape_a1_text_1,byte
-0x86b7,0x0007,shape_a2_text_2,byte
-0x86be,0x0007,shape_a3_text_3,byte
-0x86c5,0x0007,shape_a4_text_4,byte
-0x86cc,0x0007,shape_a5_text_5,byte
-0x86d3,0x0007,shape_a6_text_6,byte
-0x86da,0x0007,shape_a7_text_7,byte
-0x86e1,0x0007,shape_a8_text_8,byte
-0x86e8,0x0007,shape_a9_text_9,byte
-0x86ef,0x0007,shape_ff_blank,byte
-0x86f6,0x0010,shape_f0_ground0,byte
-0x8706,0x0010,shape_f1_ground1,byte
-0x8716,0x0010,shape_f2_ground2,byte
-0x8726,0x0010,shape_f3_ground3,byte
-0x8736,0x001c,shape_c0_ships0,byte
-0x8752,0x0018,shape_c1_ships1,byte
-0x876a,0x002a,shape_c2_ships2,byte
-0x8794,0x003c,shape_c3_ships3,byte
-0x87d0,0x0015,shape_d2_text_by,byte
-0x87e5,0x002a,shape_d3_text_tony,byte
-0x880f,0x0038,shape_d4_text_suzuki,byte
-0x8847,0x002a,shape_d8_text_game,byte
-0x8871,0x002a,shape_d9_text_over,byte
-0x889b,0x0031,shape_da_text_bonus,byte
-0x88cc,0x0031,shape_dc_text_great,byte
-0x88fd,0x0070,shape_dd_text_performance,byte
-0x896d,0x0015,shape_e1_text_copyright,byte
-0x8982,0x0062,shape_e2_text_star_craft,byte
-0x89e4,0x0023,shape_e3_text_inc,byte
-0x8a07,0x003f,shape_e4_text_thanks,byte
-0x8a46,0x002a,shape_e5_text_lot_comma,byte
-0x8a70,0x002a,shape_e6_text_raly,byte
-0x8a9a,0x000f,shape_e7_text_minus_20,byte
-0x8aa9,0x003c,shape_e8_text_20_40_60_80,byte
-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,0x0003,ucode1080_countdown_30_pixel,word
-0x8e03,0x0003,ucode4080_x_outside_61_ship,word
-0x8e06,0x0011,ucode1080_animate_shape_68_missile,byte
-0x8e17,0x0007,ucode1080_animate_shape_30_pixel,byte
-0x8e1e,0x0007,ucode1080_animate_shape_31_pixel,byte
-0x8e25,0x0003,ucode1080_countdown_31_pixel,word
-0x8e28,0x0007,ucode1080_animate_shape_32_pixel,byte
-0x8e2f,0x0003,ucode1080_countdown_32_pixel,word
-0x8e32,0x0007,ucode1080_animate_shape_33_pixel,byte
-0x8e39,0x0003,ucode1080_countdown_33_pixel,word
-0x8e3c,0x0007,ucode1080_animate_shape_34_pixel,byte
-0x8e43,0x0003,ucode1080_countdown_34_pixel,word
-0x8e46,0x0007,ucode1080_animate_shape_35_pixel,byte
-0x8e4d,0x0003,ucode1080_countdown_35_pixel,word
-0x8e50,0x0007,ucode1080_animate_shape_36_pixel,byte
-0x8e57,0x0003,ucode1080_countdown_36_pixel,word
-0x8e5a,0x0007,ucode1080_animate_shape_37_pixel,byte
-0x8e61,0x0003,ucode1080_countdown_37_pixel,word
-0x8e64,0x0003,ucode4080_x_outside_68_missile,word
-0x8e67,0x0007,ucode1080_animate_shape_38_pixel,byte
-0x8e6e,0x0003,ucode1080_countdown_38_pixel,word
-0x8e71,0x0007,ucode1080_animate_shape_39_pixel,byte
-0x8e78,0x0003,ucode1080_countdown_39_pixel,word
-0x8e7b,0x0007,ucode1080_animate_shape_3a_pixel,byte
-0x8e82,0x0003,ucode1080_countdown_3a_pixel,word
-0x8e85,0x0007,ucode1080_animate_shape_3b_pixel,byte
-0x8e8c,0x0003,ucode1080_countdown_3b_pixel,word
-0x8e8f,0x0011,ucode1080_animate_shape_69_missile,byte
-0x8ea0,0x0003,ucode4080_x_outside_69_missile,word
-0x8ea3,0x0011,ucode1080_animate_shape_6a_missile,byte
-0x8eb4,0x0003,ucode4080_x_outside_6a_missile,word
-0x8eb7,0x0009,ucode6080_fire_state_f0_68_missile,word
-0x8ec0,0x0009,ucode6080_fire_state_f0_69_missile,word
-0x8ec9,0x0009,ucode6080_fire_state_f0_6a_missile,word
-0x8ed2,0x0003,ucode4080_x_outside_44_missile_launcher,word
-0x8ed5,0x0003,ucode4080_x_outside_45_missile_launcher,word
-0x8ed8,0x0003,ucode4080_x_outside_46_missile_launcher,word
-0x8edb,0x000b,ucode1080_animate_shape_44_missile_launcher,byte
-0x8ee6,0x000b,ucode1080_animate_shape_45_missile_launcher,byte
-0x8ef1,0x000b,ucode1080_animate_shape_46_missile_launcher,byte
-0x8efc,0x0009,ucode1080_animate_shape_14_fragment,byte
-0x8f05,0x0009,ucode1080_animate_shape_18_fragment,byte
-0x8f0e,0x0003,ucode1080_countdown_19_fragment,word
-0x8f11,0x0009,ucode1080_animate_shape_1a_fragment,byte
-0x8f1a,0x0003,ucode1080_countdown_1a_fragment,word
-0x8f1d,0x0009,ucode1080_animate_shape_1b_fragment,byte
-0x8f26,0x0003,ucode1080_countdown_1b_fragment,word
-0x8f29,0x0009,ucode1080_animate_shape_1c_fragment,byte
-0x8f32,0x0003,ucode4080_x_outside_43_tree_cactus,word
-0x8f35,0x0003,ucode4080_x_outside_42_tree_cactus,word
-0x8f38,0x0002,ucode6080_test_fire_state_f1_61_ship,word
-0x8f3a,0x0009,ucode1080_collision_59_bomb_explosion,word
-0x8f43,0x0009,ucode1080_collision_5a_bomb_explosion,word
-0x8f4c,0x0009,ucode1080_collision_5b_bomb_explosion,word
-0x8f55,0x0003,ucode4080_x_outside_41_tree_cactus,word
-0x8f58,0x0003,ucode4080_x_outside_48_pylon,word
-0x8f5b,0x0002,ucode1080_animate_shape_48_pylon,byte
-0x8f5d,0x0002,ucode1080_animate_shape_70_supply_plane,byte
-0x8f5f,0x0003,ucode4080_x_outside_71_parachute,word
-0x8f62,0x0007,ucode1080_animate_shape_4e_pixel,byte
-0x8f69,0x0003,ucode1080_countdown_4e_pixel,word
-0x8f6c,0x0007,ucode1080_animate_shape_4f_pixel,byte
-0x8f73,0x0003,ucode1080_countdown_4f_pixel,word
-0x8f76,0x0009,ucode1080_collision_58_bomb_explosion,word
-0x8f7f,0x0003,ucode1080_collision_50_bullet,word
-0x8f82,0x0003,ucode4080_x_outside_50_bullet,word
-0x8f85,0x0002,ucode6080_test_fire_state_f0_61_ship,word
-0x8f87,0x0005,ucode1080_animate_shape_20_pixel,byte
-0x8f8c,0x0005,ucode1080_animate_shape_21_pixel,byte
-0x8f91,0x0005,ucode1080_animate_shape_22_pixel,byte
-0x8f96,0x0005,ucode1080_animate_shape_24_pixel,byte
-0x8f9b,0x0005,ucode1080_animate_shape_26_pixel,byte
-0x8fa0,0x0021,ucode6080_fire_state_f0_63_pixel,word
-0x8fc1,0x0003,ucode1080_countdown_14_fragment,word
-0x8fc4,0x0003,ucode1080_countdown_18_fragment,word
-0x8fc7,0x0003,ucode1080_countdown_1c_fragment,word
-0x8fca,0x0005,ucode1080_animate_shape_23_pixel,byte
-0x8fcf,0x0005,ucode1080_animate_shape_25_pixel,byte
-0x8fd4,0x0005,ucode1080_animate_shape_27_pixel,byte
-0x8fd9,0x0009,ucode1080_collision_5c_bomb_explosion,word
-0x8fe2,0x0015,ucode1080_animate_shape_58_bomb_explosion,byte
-0x8ff7,0x0014,ucode1080_animate_shape_5a_bomb_explosion,byte
-0x900b,0x0016,ucode1080_animate_shape_5b_bomb_explosion,byte
-0x9021,0x0014,ucode1080_animate_shape_5c_bomb_explosion,byte
-0x9035,0x0003,ucode4080_x_outside_58_bomb_explosion,word
-0x9038,0x0013,ucode4080_y_outside_58_bomb_explosion,word
-0x904b,0x0003,ucode4080_x_outside_59_bomb_explosion,word
-0x904e,0x0013,ucode4080_y_outside_59_bomb_explosion,word
-0x9061,0x0003,ucode4080_x_outside_5a_bomb_explosion,word
-0x9064,0x0013,ucode4080_y_outside_5a_bomb_explosion,word
-0x9077,0x0003,ucode4080_x_outside_5b_bomb_explosion,word
-0x907a,0x0013,ucode4080_y_outside_5b_bomb_explosion,word
-0x908d,0x0003,ucode4080_x_outside_5c_bomb_explosion,word
-0x9090,0x0013,ucode4080_y_outside_5c_bomb_explosion,word
-0x90a3,0x0002,ucode1080_animate_shape_11_pixel,byte
-0x90a5,0x0002,ucode1080_animate_shape_10_pixel,byte
-0x90a7,0x0009,ucode1080_collision_5d_bomb_explosion,word
-0x90b0,0x0003,ucode4080_x_outside_5d_bomb_explosion,word
-0x90b3,0x0013,ucode4080_y_outside_5d_bomb_explosion,word
-0x90c6,0x0014,ucode1080_animate_shape_5e_bomb_explosion,byte
-0x90da,0x0009,ucode1080_collision_5e_bomb_explosion,word
-0x90e3,0x0003,ucode4080_x_outside_5e_bomb_explosion,word
-0x90e6,0x0013,ucode4080_y_outside_5e_bomb_explosion,word
-0x90f9,0x0016,ucode1080_animate_shape_5f_bomb_explosion,byte
-0x910f,0x0009,ucode1080_collision_5f_bomb_explosion,word
-0x9118,0x0003,ucode4080_x_outside_5f_bomb_explosion,word
-0x911b,0x0013,ucode4080_y_outside_5f_bomb_explosion,word
-0x912e,0x0002,ucode6080_test_fire_state_f2_61_ship,word
-0x9130,0x0009,ucode4080_y_outside_61_ship,word
-0x9139,0x0002,ucode6080_test_fire_state_f3_61_ship,word
-0x913b,0x0003,ucode6080_fire_state_f3_61_ship,word
-0x913e,0x0003,ucode4080_x_outside_4d_headquarters_radar_icbm,word
-0x9141,0x0003,ucode1080_collision_51_bullet,word
-0x9144,0x0003,ucode4080_x_outside_51_bullet,word
-0x9147,0x0003,ucode1080_collision_52_bullet,word
-0x914a,0x0003,ucode4080_x_outside_52_bullet,word
-0x914d,0x0002,ucode1080_animate_shape_47_pylon,byte
-0x914f,0x0003,ucode4080_x_outside_47_pylon,word
-0x9152,0x0003,ucode6080_test_fire_state_f2_78_pixel,word
-0x9155,0x0003,ucode6080_test_fire_state_f3_78_pixel,word
-0x9158,0x0002,ucode1080_animate_shape_78_pixel,byte
-0x915a,0x0009,ucode6080_fire_state_f2_78_pixel,word
-0x9163,0x0003,ucode1080_collision_test_10_pixel,byte
-0x9166,0x0002,ucode1080_animate_shape_7a_pixel,byte
-0x9168,0x000d,ucode1080_countdown_7a_pixel,word
-0x9175,0x0003,ucode6080_test_fire_state_f2_7a_pixel,word
-0x9178,0x0003,ucode6080_test_fire_state_f3_7a_pixel,word
-0x917b,0x0003,ucode4080_x_outside_6b_helicopter_enemy_plane,word
-0x917e,0x0014,ucode1080_animate_shape_59_bomb_explosion,byte
-0x9192,0x0015,ucode1080_animate_shape_5d_bomb_explosion,byte
-0x91a7,0x0003,ucode4080_y_outside_65_pixel_exhaust,word
-0x91aa,0x0002,ucode1080_animate_shape_62_ship,byte
-0x91ac,0x0004,ucode1080_animate_shape_64_pixel_ship,byte
-0x91b0,0x0003,ucode1080_collision_test_78_pixel,byte
-0x91b3,0x0003,ucode1080_collision_test_7a_pixel,byte
-0x91b6,0x0003,ucode1080_countdown_64_pixel_ship,word
-0x91b9,0x0002,ucode1080_animate_shape_60_pixel,byte
-0x91bb,0x0002,ucode1080_animate_shape_7f_pixel,byte
-0x91bd,0x0003,ucode6080_fire_state_f0_7f_pixel,word
-0x91c0,0x0003,ucode6080_fire_state_f2_60_pixel,word
-0x91c3,0x0005,ucode0010_init_or_zero_0d,word
-0x91c8,0x0021,ucode6080_fire_state_f1_61_ship,word
-0x91e9,0x0002,ucode1080_animate_shape_12_pixel,byte
-0x91eb,0x0003,ucode1080_countdown_68_missile,word
-0x91ee,0x0003,ucode1080_countdown_69_missile,word
-0x91f1,0x0003,ucode1080_countdown_6a_missile,word
-0x91f4,0x0005,ucode1080_countdown_60_pixel,word
-0x91f9,0x0003,ucode6080_fire_state_f1_60_pixel,word
-0x91fc,0x0007,ucode1080_collision_44_missile_launcher,word
-0x9203,0x0007,ucode1080_collision_45_missile_launcher,word
-0x920a,0x0007,ucode1080_collision_46_missile_launcher,word
-0x9211,0x0007,ucode1080_collision_47_pylon,word
-0x9218,0x0007,ucode1080_collision_48_pylon,word
-0x921f,0x0003,ucode1080_collision_test_14_fragment,byte
-0x9222,0x000b,ucode1080_collision_14_fragment,word
-0x922d,0x0003,ucode1080_collision_test_18_fragment,byte
-0x9230,0x0003,ucode1080_collision_test_1c_fragment,byte
-0x9233,0x0004,ucode1080_animate_shape_41_tree_cactus,byte
-0x9237,0x0004,ucode1080_animate_shape_42_tree_cactus,byte
-0x923b,0x0004,ucode1080_animate_shape_43_tree_cactus,byte
-0x923f,0x0003,ucode6080_fire_state_f0_65_pixel_exhaust,word
-0x9242,0x0003,ucode6080_fire_state_f1_65_pixel_exhaust,word
-0x9245,0x0003,ucode6080_test_fire_state_f1_6b_helicopter_enemy_plane,word
-0x9248,0x000b,ucode6080_fire_state_f1_6b_helicopter_enemy_plane,word
-0x9253,0x0003,ucode6080_fire_state_f0_6b_helicopter_enemy_plane,word
-0x9256,0x0003,ucode4080_x_outside_6c_helicopter_enemy_plane,word
-0x9259,0x0003,ucode6080_fire_state_f0_6c_helicopter_enemy_plane,word
-0x925c,0x0003,ucode6080_test_fire_state_f1_6c_helicopter_enemy_plane,word
-0x925f,0x000b,ucode6080_fire_state_f1_6c_helicopter_enemy_plane,word
-0x926a,0x0003,ucode4080_x_outside_6d_helicopter_enemy_plane,word
-0x926d,0x0003,ucode6080_fire_state_f0_6d_helicopter_enemy_plane,word
-0x9270,0x0003,ucode6080_test_fire_state_f1_6d_helicopter_enemy_plane,word
-0x9273,0x000b,ucode6080_fire_state_f1_6d_helicopter_enemy_plane,word
-0x927e,0x000d,ucode1080_collision_18_fragment,word
-0x928b,0x0009,ucode6080_fire_state_f3_78_pixel,word
-0x9294,0x0006,ucode1080_animate_shape_50_bullet,byte
-0x929a,0x0006,ucode1080_animate_shape_51_bullet,byte
-0x92a0,0x0006,ucode1080_animate_shape_52_bullet,byte
-0x92a6,0x0003,ucode4080_x_outside_70_supply_plane,word
-0x92a9,0x0003,ucode4080_x_outside_53_pixel_balloon_explosion,word
-0x92ac,0x0003,ucode4080_y_outside_53_pixel_balloon_explosion,word
-0x92af,0x0003,ucode6080_fire_state_f1_71_parachute,word
-0x92b2,0x0003,ucode4080_x_outside_72_fuel_explosion,word
-0x92b5,0x0008,ucode1080_animate_shape_61_ship,byte
-0x92bd,0x0003,ucode4080_y_outside_71_parachute,word
-0x92c0,0x000f,ucode4080_y_outside_72_fuel_explosion,word
-0x92cf,0x0003,ucode6080_fire_state_f3_71_parachute,word
-0x92d2,0x0005,ucode1080_countdown_71_parachute,word
-0x92d7,0x0007,ucode1080_countdown_58_bomb_explosion,word
-0x92de,0x0007,ucode1080_countdown_59_bomb_explosion,word
-0x92e5,0x0007,ucode1080_countdown_5a_bomb_explosion,word
-0x92ec,0x0007,ucode1080_countdown_5b_bomb_explosion,word
-0x92f3,0x0007,ucode1080_countdown_5c_bomb_explosion,word
-0x92fa,0x0007,ucode1080_countdown_5d_bomb_explosion,word
-0x9301,0x0007,ucode1080_countdown_5e_bomb_explosion,word
-0x9308,0x0007,ucode1080_countdown_5f_bomb_explosion,word
-0x930f,0x0003,ucode6080_test_fire_state_f0_6c_helicopter_enemy_plane,word
-0x9312,0x0003,ucode6080_test_fire_state_f0_6b_helicopter_enemy_plane,word
-0x9315,0x0003,ucode6080_test_fire_state_f0_6d_helicopter_enemy_plane,word
-0x9318,0x0004,ucode1080_animate_shape_65_pixel_exhaust,byte
-0x931c,0x0002,ucode1080_animate_shape_66_ship,byte
-0x931e,0x0009,ucode1080_animate_shape_16_fragment,byte
-0x9327,0x0003,ucode1080_countdown_16_fragment,word
-0x932a,0x0009,ucode1080_animate_shape_1e_fragment,byte
-0x9333,0x0003,ucode1080_countdown_1e_fragment,word
-0x9336,0x0009,ucode1080_animate_shape_17_fragment,byte
-0x933f,0x0003,ucode1080_countdown_17_fragment,word
-0x9342,0x0009,ucode1080_animate_shape_1f_fragment,byte
-0x934b,0x0003,ucode1080_countdown_1f_fragment,word
-0x934e,0x0009,ucode1080_animate_shape_19_fragment,byte
-0x9357,0x0009,ucode1080_animate_shape_15_fragment,byte
-0x9360,0x0003,ucode1080_countdown_15_fragment,word
-0x9363,0x0009,ucode1080_animate_shape_1d_fragment,byte
-0x936c,0x0003,ucode1080_countdown_1d_fragment,word
-0x936f,0x0002,ucode1080_animate_shape_7c_pixel,byte
-0x9371,0x0003,ucode1080_collision_test_7c_pixel,byte
-0x9374,0x0003,ucode6080_test_fire_state_f2_7c_pixel,word
-0x9377,0x0003,ucode6080_test_fire_state_f3_7c_pixel,word
-0x937a,0x000d,ucode6080_fire_state_f3_65_pixel_exhaust,word
-0x9387,0x0002,ucode1080_animate_shape_79_pixel,byte
-0x9389,0x0003,ucode1080_collision_test_79_pixel,byte
-0x938c,0x0003,ucode6080_test_fire_state_f3_79_pixel,word
-0x938f,0x0011,ucode1080_countdown_7f_pixel,word
-0x93a0,0x0011,ucode6080_fire_state_f1_7f_pixel,word
-0x93b1,0x0010,ucode1080_collision_test_64_pixel_ship,byte
-0x93c1,0x000e,ucode1080_animate_shape_53_pixel_balloon_explosion,byte
-0x93cf,0x000e,ucode1080_animate_shape_54_pixel_balloon_explosion,byte
-0x93dd,0x0003,ucode4080_x_outside_54_pixel_balloon_explosion,word
-0x93e0,0x0003,ucode4080_y_outside_54_pixel_balloon_explosion,word
-0x93e3,0x000e,ucode1080_animate_shape_55_pixel_balloon_explosion,byte
-0x93f1,0x0003,ucode4080_x_outside_55_pixel_balloon_explosion,word
-0x93f4,0x0003,ucode4080_y_outside_55_pixel_balloon_explosion,word
-0x93f7,0x000e,ucode1080_animate_shape_56_pixel_balloon_explosion,byte
-0x9405,0x0003,ucode4080_x_outside_56_pixel_balloon_explosion,word
-0x9408,0x0003,ucode4080_y_outside_56_pixel_balloon_explosion,word
-0x940b,0x000e,ucode1080_animate_shape_57_pixel_balloon_explosion,byte
-0x9419,0x0003,ucode4080_x_outside_57_pixel_balloon_explosion,word
-0x941c,0x0003,ucode4080_y_outside_57_pixel_balloon_explosion,word
-0x941f,0x000b,ucode1080_collision_test_61_ship,byte
-0x942a,0x000d,ucode1080_countdown_7c_pixel,word
-0x9437,0x0002,ucode1080_animate_shape_2c_pixel,byte
-0x9439,0x0003,ucode6080_test_fire_state_f0_77_tank,word
-0x943c,0x0003,ucode4080_x_outside_6e_helicopter_enemy_plane,word
-0x943f,0x0003,ucode6080_test_fire_state_f0_6e_helicopter_enemy_plane,word
-0x9442,0x0003,ucode6080_fire_state_f0_6e_helicopter_enemy_plane,word
-0x9445,0x0003,ucode6080_test_fire_state_f1_6e_helicopter_enemy_plane,word
-0x9448,0x000b,ucode6080_fire_state_f1_6e_helicopter_enemy_plane,word
-0x9453,0x0003,ucode4080_x_outside_6f_helicopter_enemy_plane,word
-0x9456,0x0003,ucode6080_test_fire_state_f0_6f_helicopter_enemy_plane,word
-0x9459,0x0003,ucode6080_fire_state_f0_6f_helicopter_enemy_plane,word
-0x945c,0x0003,ucode6080_test_fire_state_f1_6f_helicopter_enemy_plane,word
-0x945f,0x000b,ucode6080_fire_state_f1_6f_helicopter_enemy_plane,word
-0x946a,0x0003,ucode6080_test_fire_state_f2_77_tank,word
-0x946d,0x001f,ucode6080_fire_state_f3_79_pixel,word
-0x948c,0x000b,ucode1080_collision_1c_fragment,word
-0x9497,0x0013,ucode1080_collision_6b_helicopter_enemy_plane,word
-0x94aa,0x0013,ucode1080_collision_6c_helicopter_enemy_plane,word
-0x94bd,0x0013,ucode1080_collision_6d_helicopter_enemy_plane,word
-0x94d0,0x0013,ucode1080_collision_6e_helicopter_enemy_plane,word
-0x94e3,0x0013,ucode1080_collision_6f_helicopter_enemy_plane,word
-0x94f6,0x001b,ucode1080_collision_10_pixel,word
-0x9511,0x0009,ucode1080_collision_72_fuel_explosion,word
-0x951a,0x000d,ucode1080_collision_53_pixel_balloon_explosion,word
-0x9527,0x000d,ucode1080_collision_54_pixel_balloon_explosion,word
-0x9534,0x000d,ucode1080_collision_55_pixel_balloon_explosion,word
-0x9541,0x000d,ucode1080_collision_56_pixel_balloon_explosion,word
-0x954e,0x000d,ucode1080_collision_57_pixel_balloon_explosion,word
-0x955b,0x0003,ucode4080_y_outside_70_supply_plane,word
-0x955e,0x0002,ucode1080_animate_shape_28_exhaust,byte
-0x9560,0x0003,ucode1080_countdown_28_exhaust,word
-0x9563,0x0002,ucode1080_collision_test_28_exhaust,byte
-0x9565,0x0013,ucode1080_collision_28_exhaust,word
-0x9578,0x0007,ucode1080_countdown_61_ship,word
-0x957f,0x0003,ucode6080_test_fire_state_f1_7a_pixel,word
-0x9582,0x0003,ucode6080_test_fire_state_f1_7c_pixel,word
-0x9585,0x0002,ucode1080_animate_shape_7b_pixel,byte
-0x9587,0x0003,ucode1080_collision_test_7b_pixel,byte
-0x958a,0x0003,ucode6080_test_fire_state_f3_7b_pixel,word
-0x958d,0x0009,ucode6080_fire_state_f2_7a_pixel,word
-0x9596,0x0002,ucode1080_animate_shape_7d_pixel,byte
-0x9598,0x0013,ucode1080_countdown_7d_pixel,word
-0x95ab,0x0005,ucode6080_fire_state_f0_7d_pixel,word
-0x95b0,0x0007,ucode6080_fire_state_f1_7d_pixel,word
-0x95b7,0x000d,ucode6080_fire_state_f2_7f_pixel,word
-0x95c4,0x000d,ucode6080_fire_state_f2_7d_pixel,word
-0x95d1,0x000b,ucode0010_init_or_zero_0e,word
-0x95dc,0x0006,ucode1080_animate_shape_6b_helicopter_enemy_plane,byte
-0x95e2,0x0007,ucode6080_homing_6b_helicopter_enemy_plane,word
-0x95e9,0x0006,ucode1080_animate_shape_6c_helicopter_enemy_plane,byte
-0x95ef,0x0007,ucode6080_homing_6c_helicopter_enemy_plane,word
-0x95f6,0x0006,ucode1080_animate_shape_6d_helicopter_enemy_plane,byte
-0x95fc,0x0007,ucode6080_homing_6d_helicopter_enemy_plane,word
-0x9603,0x0006,ucode1080_animate_shape_6e_helicopter_enemy_plane,byte
-0x9609,0x0007,ucode6080_homing_6e_helicopter_enemy_plane,word
-0x9610,0x0006,ucode1080_animate_shape_6f_helicopter_enemy_plane,byte
-0x9616,0x0007,ucode6080_homing_6f_helicopter_enemy_plane,word
-0x961d,0x0009,ucode1080_countdown_44_missile_launcher,word
-0x9626,0x0009,ucode1080_countdown_45_missile_launcher,word
-0x962f,0x0009,ucode1080_countdown_46_missile_launcher,word
-0x9638,0x0003,ucode4080_y_outside_47_pylon,word
-0x963b,0x0003,ucode4080_y_outside_48_pylon,word
-0x963e,0x0003,ucode6080_test_fire_state_f3_6b_helicopter_enemy_plane,word
-0x9641,0x0007,ucode6080_fire_state_f3_6b_helicopter_enemy_plane,word
-0x9648,0x0003,ucode6080_test_fire_state_f3_6c_helicopter_enemy_plane,word
-0x964b,0x0007,ucode6080_fire_state_f3_6c_helicopter_enemy_plane,word
-0x9652,0x0003,ucode6080_test_fire_state_f3_6d_helicopter_enemy_plane,word
-0x9655,0x0007,ucode6080_fire_state_f3_6d_helicopter_enemy_plane,word
-0x965c,0x0003,ucode6080_test_fire_state_f3_6e_helicopter_enemy_plane,word
-0x965f,0x0007,ucode6080_fire_state_f3_6e_helicopter_enemy_plane,word
-0x9666,0x0003,ucode6080_test_fire_state_f3_6f_helicopter_enemy_plane,word
-0x9669,0x0007,ucode6080_fire_state_f3_6f_helicopter_enemy_plane,word
-0x9670,0x0006,ucode1080_animate_shape_73_bullet,byte
-0x9676,0x0003,ucode1080_collision_73_bullet,word
-0x9679,0x0002,ucode1080_animate_shape_2f_pixel,byte
-0x967b,0x0003,ucode4080_x_outside_73_bullet,word
-0x967e,0x0006,ucode1080_animate_shape_74_bullet,byte
-0x9684,0x0003,ucode1080_collision_74_bullet,word
-0x9687,0x0003,ucode4080_x_outside_74_bullet,word
-0x968a,0x0006,ucode1080_animate_shape_75_bullet,byte
-0x9690,0x0003,ucode1080_collision_75_bullet,word
-0x9693,0x0003,ucode4080_x_outside_75_bullet,word
-0x9696,0x0002,ucode1080_animate_shape_76_pixel,byte
-0x9698,0x0003,ucode6080_test_fire_state_f1_76_pixel,word
-0x969b,0x0003,ucode6080_test_fire_state_f0_76_pixel,word
-0x969e,0x0002,ucode1080_animate_shape_2d_pixel,byte
-0x96a0,0x0003,ucode6080_test_fire_state_f2_79_pixel,word
-0x96a3,0x0003,ucode6080_test_fire_state_f2_7b_pixel,word
-0x96a6,0x0003,ucode6080_fire_state_f2_79_pixel,word
-0x96a9,0x0003,ucode6080_fire_state_f2_7b_pixel,word
-0x96ac,0x0002,ucode1080_animate_shape_2e_pixel,byte
-0x96ae,0x0007,ucode4080_x_outside_77_tank,word
-0x96b5,0x000f,ucode1080_collision_77_tank,word
-0x96c4,0x0007,ucode1080_countdown_2f_pixel,word
-0x96cb,0x0003,ucode4080_y_outside_4d_headquarters_radar_icbm,word
-0x96ce,0x0002,ucode6080_homing_77_tank,word
-0x96d0,0x0006,ucode1080_animate_shape_77_tank,byte
-0x96d6,0x0007,ucode6080_fire_state_f2_77_tank,word
-0x96dd,0x0003,ucode6080_fire_state_f3_77_tank,word
-0x96e0,0x0011,ucode1080_countdown_2d_pixel,word
-0x96f1,0x0013,ucode1080_countdown_2e_pixel,word
-0x9704,0x0003,ucode6080_test_fire_state_f3_77_tank,word
-0x9707,0x000a,ucode1080_animate_shape_4d_headquarters_radar_icbm,byte
-0x9711,0x000c,ucode1080_animate_shape_72_fuel_explosion,byte
-0x971d,0x0010,ucode1080_collision_test_62_ship,byte
-0x972d,0x0019,ucode6080_fire_state_f3_7b_pixel,word
-0x9746,0x0009,ucode1080_collision_68_missile,word
-0x974f,0x0009,ucode4080_y_outside_68_missile,word
-0x9758,0x0009,ucode1080_collision_69_missile,word
-0x9761,0x0009,ucode4080_y_outside_69_missile,word
-0x976a,0x0009,ucode1080_collision_6a_missile,word
-0x9773,0x0009,ucode4080_y_outside_6a_missile,word
-0x977c,0x0006,ucode1080_collision_test_6b_helicopter_enemy_plane,byte
-0x9782,0x0006,ucode1080_collision_test_6c_helicopter_enemy_plane,byte
-0x9788,0x0006,ucode1080_collision_test_6d_helicopter_enemy_plane,byte
-0x978e,0x0006,ucode1080_collision_test_6e_helicopter_enemy_plane,byte
-0x9794,0x0006,ucode1080_collision_test_6f_helicopter_enemy_plane,byte
-0x979a,0x0009,ucode1080_collision_test_70_supply_plane,byte
-0x97a3,0x0007,ucode1080_collision_70_supply_plane,word
-0x97aa,0x0021,ucode1080_countdown_10_pixel,word
-0x97cb,0x0015,ucode1080_collision_test_58_bomb_explosion,byte
-0x97e0,0x0015,ucode1080_collision_test_59_bomb_explosion,byte
-0x97f5,0x0015,ucode1080_collision_test_5a_bomb_explosion,byte
-0x980a,0x0015,ucode1080_collision_test_5b_bomb_explosion,byte
-0x981f,0x0015,ucode1080_collision_test_5c_bomb_explosion,byte
-0x9834,0x0015,ucode1080_collision_test_5d_bomb_explosion,byte
-0x9849,0x0015,ucode1080_collision_test_5e_bomb_explosion,byte
-0x985e,0x0015,ucode1080_collision_test_5f_bomb_explosion,byte
-0x9873,0x0011,ucode1080_collision_test_72_fuel_explosion,byte
-0x9884,0x0007,ucode4080_y_outside_66_ship,word
-0x988b,0x0012,ucode1080_collision_test_66_ship,byte
-0x989d,0x0003,ucode1080_collision_test_67_bird,byte
-0x98a0,0x0007,ucode1080_collision_67_bird,word
-0x98a7,0x0003,ucode1080_countdown_2a_explosion,word
-0x98aa,0x0007,ucode1080_collision_71_parachute,word
-0x98b1,0x0003,ucode1080_collision_test_2a_explosion,byte
-0x98b4,0x0007,ucode1080_collision_2a_explosion,word
-0x98bb,0x000a,ucode1080_animate_shape_2a_explosion,byte
-0x98c5,0x000d,ucode1080_animate_shape_71_parachute,byte
-0x98d2,0x0003,ucode6080_test_fire_state_f3_71_parachute,word
-0x98d5,0x0005,ucode6080_fire_state_f2_76_pixel,word
-0x98da,0x0003,ucode6080_test_fire_state_f3_76_pixel,word
-0x98dd,0x0003,ucode6080_fire_state_f3_76_pixel,word
-0x98e0,0x0003,ucode6080_homing_67_bird,word
-0x98e3,0x0002,ucode1080_animate_shape_13_pixel,byte
-0x98e5,0x0005,ucode1080_countdown_13_pixel,word
-0x98ea,0x0017,ucode1080_collision_66_ship,word
-0x9901,0x0007,ucode4080_x_outside_66_ship,word
-0x9908,0x000f,ucode0010_init_or_zero_07,word
-0x9917,0x000f,ucode6080_fire_state_f2_65_pixel_exhaust,word
-0x9926,0x0013,ucode1080_countdown_12_pixel,word
-0x9939,0x0015,ucode0010_init_or_zero_04,word
-0x994e,0x0013,ucode0010_init_or_zero_05,word
-0x9961,0x0005,ucode0010_init_or_zero_0a,word
-0x9966,0x0015,ucode6080_fire_state_f0_76_pixel,word
-0x997b,0x0019,ucode6080_fire_state_f0_61_ship,word
-0x9994,0x0019,ucode6080_fire_state_f2_61_ship,word
-0x99ad,0x001f,ucode6080_fire_state_f1_76_pixel,word
-0x99cc,0x0002,ucode1080_animate_shape_67_bird,byte
-0x99ce,0x000b,ucode4080_x_outside_67_bird,word
-0x99d9,0x000b,ucode4080_y_outside_67_bird,word
-0x99e4,0x0006,ucode1080_animate_shape_40_bird,byte
-0x99ea,0x0003,ucode6080_fire_state_f0_67_bird,word
-0x99ed,0x0007,ucode6080_fire_state_f1_67_bird,word
-0x99f4,0x0003,ucode1080_countdown_70_supply_plane,word
-0x99f7,0x0002,ucode1080_animate_shape_63_pixel,byte
-0x99f9,0x0015,ucode1080_collision_78_pixel,word
-0x9a0e,0x000f,ucode1080_collision_79_pixel,word
-0x9a1d,0x0015,ucode1080_collision_7a_pixel,word
-0x9a32,0x000f,ucode1080_collision_7b_pixel,word
-0x9a41,0x0002,ucode1080_animate_shape_29_pixel,byte
-0x9a43,0x0003,ucode1080_countdown_29_pixel,word
-0x9a46,0x0009,ucode6080_homing_6a_missile,word
-0x9a4f,0x000b,ucode1080_collision_test_53_pixel_balloon_explosion,byte
-0x9a5a,0x000b,ucode1080_collision_test_54_pixel_balloon_explosion,byte
-0x9a65,0x000b,ucode1080_collision_test_55_pixel_balloon_explosion,byte
-0x9a70,0x000b,ucode1080_collision_test_56_pixel_balloon_explosion,byte
-0x9a7b,0x000b,ucode1080_collision_test_57_pixel_balloon_explosion,byte
-0x9a86,0x0009,ucode1080_collision_test_50_bullet,byte
-0x9a8f,0x0009,ucode1080_collision_test_51_bullet,byte
-0x9a98,0x0009,ucode1080_collision_test_52_bullet,byte
-0x9aa1,0x0005,ucode1080_countdown_2c_pixel,word
-0x9aa6,0x0009,ucode6080_homing_68_missile,word
-0x9aaf,0x0009,ucode6080_homing_69_missile,word
-0x9ab8,0x0004,ucode6080_test_fire_state_f2_76_pixel,word
-0x9abc,0x0003,ucode6080_test_fire_state_f1_7e_pixel,word
-0x9abf,0x0003,ucode6080_test_fire_state_f3_7e_pixel,word
-0x9ac2,0x000d,ucode4080_x_outside_7e_pixel,word
-0x9acf,0x0007,ucode4080_x_outside_62_ship,word
-0x9ad6,0x0015,ucode1080_collision_29_pixel,word
-0x9aeb,0x0015,ucode1080_collision_61_ship,word
-0x9b00,0x0009,ucode1080_countdown_7e_pixel,word
-0x9b09,0x0002,ucode1080_animate_shape_7e_pixel,byte
-0x9b0b,0x001b,ucode6080_fire_state_f3_60_pixel,word
-0x9b26,0x0002,ucode1080_animate_shape_3d_pixel,byte
-0x9b28,0x0013,ucode1080_countdown_3d_pixel,word
-0x9b3b,0x000d,ucode0010_init_or_zero_0f,word
-0x9b48,0x0009,ucode0010_init_or_zero_06,word
-0x9b51,0x0002,ucode1080_animate_shape_3c_pixel,byte
-0x9b53,0x0002,ucode1080_collision_test_3c_pixel,byte
-0x9b55,0x0003,ucode1080_collision_3c_pixel,word
-0x9b58,0x000b,ucode1080_countdown_3c_pixel,word
-0x9b63,0x0005,ucode1080_countdown_65_pixel_exhaust,word
-0x9b68,0x0005,ucode4080_x_outside_65_pixel_exhaust,word
-0x9b6d,0x0005,ucode1080_collision_test_73_bullet,byte
-0x9b72,0x0005,ucode1080_collision_test_74_bullet,byte
-0x9b77,0x0005,ucode1080_collision_test_75_bullet,byte
-0x9b7c,0x0010,ucode1080_collision_test_71_parachute,byte
-0x9b8c,0x0005,ucode1080_collision_test_11_pixel,byte
-0x9b91,0x000d,ucode1080_collision_11_pixel,word
-0x9b9e,0x001d,ucode1080_countdown_11_pixel,word
-0x9bbb,0x0003,ucode6080_test_fire_state_f2_68_missile,word
-0x9bbe,0x0003,ucode6080_fire_state_f2_68_missile,word
-0x9bc1,0x0003,ucode6080_test_fire_state_f3_63_pixel,word
-0x9bc4,0x0005,ucode6080_fire_state_f3_63_pixel,word
-0x9bc9,0x0009,ucode1080_countdown_78_pixel,word
-0x9bd2,0x0009,ucode1080_countdown_79_pixel,word
-0x9bdb,0x0009,ucode6080_fire_state_f3_7a_pixel,word
-0x9be4,0x0009,ucode1080_countdown_7b_pixel,word
-0x9bed,0x0005,ucode4080_y_outside_76_pixel,word
-0x9bf2,0x0017,ucode1080_collision_4d_headquarters_radar_icbm,word
-0x9c09,0x0003,ucode4080_x_outside_76_pixel,word
-0x9c0c,0x0008,ucode1080_animate_shape_49_silo,byte
-0x9c14,0x0019,ucode4080_x_outside_49_silo,word
-0x9c2d,0x0008,ucode1080_animate_shape_4a_silo_haystack,byte
-0x9c35,0x0019,ucode4080_x_outside_4a_silo_haystack,word
-0x9c4e,0x0008,ucode1080_animate_shape_4b_haystack_house,byte
-0x9c56,0x0019,ucode4080_x_outside_4b_haystack_house,word
-0x9c6f,0x0008,ucode1080_animate_shape_4c_silo_house,byte
-0x9c77,0x0019,ucode4080_x_outside_4c_silo_house,word
-0x9c90,0x001d,ucode1080_collision_49_silo,word
-0x9cad,0x001d,ucode1080_collision_4a_silo_haystack,word
-0x9cca,0x001d,ucode1080_collision_4b_haystack_house,word
-0x9ce7,0x001d,ucode1080_collision_4c_silo_house,word
-0x9d04,0x0019,ucode6080_fire_state_f1_7e_pixel,word
-0x9d1d,0x0009,ucode6080_fire_state_f3_7e_pixel,word
-0x9d26,0x0015,ucode0010_init_or_zero_02,word
-0x9d3b,0x0015,ucode0010_init_or_zero_03,word
-0x9d50,0x0005,ucode1080_countdown_62_ship,word
-0x9d55,0x000f,ucode0010_init_or_zero_0c,word
-0x9d64,0x0009,ucode4080_x_outside_64_pixel_ship,word
-0x9d6d,0x0003,ucode6080_test_fire_state_f2_63_pixel,word
-0x9d70,0x0007,ucode6080_fire_state_f1_7a_pixel,word
-0x9d77,0x0007,ucode6080_fire_state_f1_7c_pixel,word
-0x9d7e,0x0009,ucode6080_fire_state_f3_7c_pixel,word
-0x9d87,0x0019,ucode6080_fire_state_f2_63_pixel,word
-0x9da0,0x0009,ucode6080_fire_state_f2_7c_pixel,word
-0x9da9,0x0013,ucode1080_collision_7c_pixel,word
-0x9dbc,0x0005,ucode4080_y_outside_7c_pixel,word
-0x9dc1,0x0003,ucode4080_x_outside_7c_pixel,word
-0x9dc4,0x0015,ucode0010_init_or_zero_01,word
-0x9dd9,0x0005,ucode1080_countdown_63_pixel,word
-0x9dde,0x0002,ucode1080_collision_test_2c_pixel,byte
-0x9de0,0x000d,ucode1080_collision_2c_pixel,word
-0x9ded,0x0001,recrack_loader,byte
+# 0x5bc0 padding
+# 0x5c00 shape data
+# 0x8c08 padding
+# 0x8e00 ucode data
+# 0x9ded end of image
 0xa800,0x0001,x_table_times2_div7_plus_5b,byte
 0xa900,0x0001,x_table_times2_mod7_minus_03,byte
 0xaa00,0x0001,video_line_table_lo,byte
@@ -1173,3 +571,254 @@ items
 0xc065,0x0001,HW_PADDL1,byte
 0xc070,0x0001,HW_PTRIG,byte
 0xfb1e,0x0001,ROM_PREAD,code
+
+shapes
+0x00,pixel
+0x01,pixel
+0x02,pixel
+0x03,pixel
+0x04,pixel
+0x05,pixel
+0x06,pixel
+0x07,pixel
+0x08,bullet
+0x09,bullet
+0x0a,bullet
+0x0b,bullet
+0x0c,bird
+0x0d,bird
+0x0e,bird
+0x0f,bird
+0x10,ship_state0
+0x11,ship_state1
+0x12,exhaust
+0x13,exhaust
+0x14,parachute
+0x15,parachute
+0x16,parachute_open
+0x17,fuel
+0x18,supply_plane
+0x1c,tank
+0x1e,missile_tank_state0
+0x1f,missile_tank_state1
+0x20,bomb
+0x21,bomb
+0x22,bomb
+0x23,bomb
+0x28,balloon
+0x29,balloon
+0x2a,balloon
+0x2c,helicopter
+0x2e,enemy_plane
+0x2f,enemy_plane
+0x30,silo
+0x31,silo
+0x36,pylon
+0x40,missile
+0x41,missile
+0x42,missile
+0x43,missile
+0x44,missile
+0x45,missile
+0x46,missile
+0x47,missile
+0x48,missile
+0x49,missile
+0x4a,missile
+0x4b,missile
+0x4c,missile
+0x4d,missile
+0x4e,missile
+0x4f,missile
+0x50,missile_launcher_state0
+0x51,missile_launcher_state0
+0x52,missile_launcher_state0
+0x54,missile_launcher_state1
+0x55,missile_launcher_state1
+0x56,missile_launcher_state1
+0x60,fragment
+0x61,fragment
+0x62,fragment
+0x63,fragment
+0x64,fragment
+0x65,fragment
+0x66,fragment
+0x67,fragment
+0x70,haystack
+0x71,house
+0x72,headquarters
+0x73,radar
+0x74,radar
+0x75,radar
+0x76,icbm
+0x78,tree
+0x79,cactus
+0x88,explosion
+0x89,explosion
+0x8a,explosion
+0x8b,explosion
+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,ships
+0xc1,ships
+0xc2,ships
+0xc3,ships
+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,ground
+0xf1,ground
+0xf2,ground
+0xf3,ground
+0xff,blank
+
+objects
+0x10,pixel
+0x11,pixel
+0x12,pixel
+0x13,pixel
+0x14,fragment
+0x15,fragment
+0x16,fragment
+0x17,fragment
+0x18,fragment
+0x19,fragment
+0x1a,fragment
+0x1b,fragment
+0x1c,fragment
+0x1d,fragment
+0x1e,fragment
+0x1f,fragment
+0x20,pixel
+0x21,pixel
+0x22,pixel
+0x23,pixel
+0x24,pixel
+0x25,pixel
+0x26,pixel
+0x27,pixel
+0x28,exhaust
+0x29,pixel
+0x2a,explosion
+0x2c,pixel
+0x2d,pixel
+0x2e,pixel
+0x2f,pixel
+0x30,pixel
+0x31,pixel
+0x32,pixel
+0x33,pixel
+0x34,pixel
+0x35,pixel
+0x36,pixel
+0x37,pixel
+0x38,pixel
+0x39,pixel
+0x3a,pixel
+0x3b,pixel
+0x3c,pixel
+0x3d,pixel
+0x40,bird
+0x41,tree_cactus
+0x42,tree_cactus
+0x43,tree_cactus
+0x44,missile_launcher
+0x45,missile_launcher
+0x46,missile_launcher
+0x47,pylon
+0x48,pylon
+0x49,silo
+0x4a,silo_haystack
+0x4b,haystack_house
+0x4c,silo_house
+0x4d,headquarters_radar_icbm
+0x4e,pixel
+0x4f,pixel
+0x50,bullet
+0x51,bullet
+0x52,bullet
+0x53,pixel_balloon_explosion
+0x54,pixel_balloon_explosion
+0x55,pixel_balloon_explosion
+0x56,pixel_balloon_explosion
+0x57,pixel_balloon_explosion
+0x58,bomb_explosion
+0x59,bomb_explosion
+0x5a,bomb_explosion
+0x5b,bomb_explosion
+0x5c,bomb_explosion
+0x5d,bomb_explosion
+0x5e,bomb_explosion
+0x5f,bomb_explosion
+0x60,pixel
+0x61,ship
+0x62,ship
+0x63,pixel
+0x64,pixel_ship
+0x65,pixel_exhaust
+0x66,ship
+0x67,bird
+0x68,missile
+0x69,missile
+0x6a,missile
+0x6b,helicopter_enemy_plane
+0x6c,helicopter_enemy_plane
+0x6d,helicopter_enemy_plane
+0x6e,helicopter_enemy_plane
+0x6f,helicopter_enemy_plane
+0x70,supply_plane
+0x71,parachute
+0x72,fuel_explosion
+0x73,bullet
+0x74,bullet
+0x75,bullet
+0x76,pixel
+0x77,tank
+0x78,pixel
+0x79,pixel
+0x7a,pixel
+0x7b,pixel
+0x7c,pixel
+0x7d,pixel
+0x7e,pixel
+0x7f,pixel