Esempio n. 1
0
    def test_s1(self):
        s = self.segment
        s.set_comment([[4,5]], "test1")
        s.set_comment([[40,50]], "test2")
        s.set_style_ranges([[2,100]], comment=True)
        s.set_style_ranges([[200, 299]], data=True)
        for i in range(1,4):
            for j in range(1, 4):
                # create some with overlapping regions, some without
                r = [500*j, 500*j + 200*i + 200]
                s.set_style_ranges([r], user=i)
                s.set_user_data([r], i, i*10 + j)
        r = [100, 200]
        s.set_style_ranges([r], user=4)
        s.set_user_data([r], 4, 99)
        r = [3100, 3200]
        s.set_style_ranges([r], user=4)
        s.set_user_data([r], 4, 99)

        out = dict()
        s.serialize_extra_to_dict(out)
        print "saved", out

        data = np.ones([4000], dtype=np.uint8)
        r = SegmentData(data)
        s2 = DefaultSegment(r, 0)
        s2.restore_extra_from_dict(out)
        out2 = dict()
        s2.serialize_extra_to_dict(out2)
        print "loaded", out2
        assert out == out2
Esempio n. 2
0
 def test_short_segment(self):
     bytes = [0xff, 0xff, 0x00, 0x60, 0xff, 0x60, 1, 2]
     rawdata = SegmentData(bytes)
     image = AtariDosFile(rawdata)
     image.parse_segments()
     assert len(image.segments) == 1
     assert len(image.segments[0]) == 2
Esempio n. 3
0
 def test_unbanked(self, k_size, cart_type):
     data = self.get_cart(k_size, cart_type)
     rawdata = SegmentData(data)
     image = AtariCartImage(rawdata, cart_type)
     image.parse_segments()
     assert len(image.segments) == 2
     assert len(image.segments[0]) == 16
     assert len(image.segments[1]) == k_size * 1024
Esempio n. 4
0
    def test_bad(self):
        k_size = 32

        # check for error because invalid data in cart image itself
        data = self.get_cart(k_size, 1337)
        rawdata = SegmentData(data)
        with pytest.raises(errors.InvalidDiskImage):
            image = AtariCartImage(rawdata, 1337)
        with pytest.raises(errors.InvalidDiskImage):
            image = AtariCartImage(rawdata, 12)

        # check for error with valid cart image, but invalid cart type supplied
        # to the image parser
        data = self.get_cart(k_size, 12)
        rawdata = SegmentData(data)
        with pytest.raises(errors.InvalidDiskImage):
            image = AtariCartImage(rawdata, 1337)
Esempio n. 5
0
 def test_typical_rom_sizes(self, k_size):
     data = self.get_rom(k_size)
     rawdata = SegmentData(data)
     rom_image = RomImage(rawdata)
     rom_image.strict_check()
     rom_image.parse_segments()
     assert len(rom_image.segments) == 1
     assert len(rom_image.segments[0]) == k_size * 1024
 def identify(self, guess):
     r = SegmentData(guess.numpy)
     try:
         parser = Atari800Parser(r)
     except errors.InvalidSegmentParser:
         return
     guess.parser = parser
     return self.id
Esempio n. 7
0
 def get_bytes(self, dlg):
     xex = dlg.get_bytes()
     title, author = dlg.get_extra_text()[0:2]
     byte_values = add_xexboot_header(xex, title=title, author=author)
     byte_values = add_atr_header(byte_values)
     rawdata = SegmentData(byte_values)
     atr = BootDiskImage(rawdata)
     return atr.raw_bytes.tobytes()
Esempio n. 8
0
 def setup(self):
     self.screen = np.zeros(40 * 90, dtype=np.uint8)
     data = np.fromstring(
         "\x04\x00\x00\x01\x01\x01\x01\x04\x00\x01\x01\x00\x01\x00\x04\x00\x02\x01\x01\x01\x01\xff\x04\x00\x00\x00\x00\x00\x00\x04\x00\x01\x00\x00\x00\x00\x04\x00\x02\x00\x00\x00\x00\xff\x02\x00\x00\x02\x02\x02\x06\x00\x02\x02\x02\x00\x01\x02\x02\x02\x06\x01\x02\x02\x08\x00\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x00\x03\x02\x02\x02\x06\x03\x02\x02\xff\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\xff\x04\x00\x00\x00\x03\x03\x00\x04\x00\x01\x03\x00\x00\x03\x04\x00\x02\x00\x03\x03\x00\xff\x04\x00\x00\x00\x00\x00\x00\x04\x00\x01\x00\x00\x00\x00\x04\x00\x02\x00\x00\x00\x00\xff\x01\x00\x00\x01\x01\x01\x01\x01\x01\x00\x02\x01\x01\x01\x03\x01\xff\x01\x00\x00\x02\x01\x00\x01\x02\x01\x01\x02\x02\x01\x01\x03\x02\xff\x02\x00\x00\x00\x00\x02\x00\x01\x00\x00\x02\x00\x02\x00\x00\x02\x00\x03\x00\x00\xff",
         dtype=np.uint8)
     r = SegmentData(data)
     segments = [DefaultSegment(r, 0x4000)]
     self.builder = JumpmanLevelBuilder(segments)
Esempio n. 9
0
 def __init__(self, parent, task, bytes_per_row=16, command=None, **kwargs):
     FontMapScroller.__init__(self, parent, task, bytes_per_row, command,
                              **kwargs)
     self.char_order = DefaultSegment(
         SegmentData(np.arange(256, dtype=np.uint8),
                     np.zeros(256, dtype=np.uint8)), 0)
     self.start_addr = 0
     self.selected_char = -1
Esempio n. 10
0
 def identify(self, guess):
     r = SegmentData(guess.numpy)
     try:
         mime, parser = iter_parsers(r)
     except errors.UnsupportedDiskImage:
         parser = None
     if parser is not None:
         guess.parser = parser
         return mime
Esempio n. 11
0
 def test_banked(self, k_size, main_size, banked_size, cart_type):
     data = self.get_cart(k_size, cart_type)
     rawdata = SegmentData(data)
     image = AtariCartImage(rawdata, cart_type)
     image.parse_segments()
     assert len(
         image.segments) == 1 + 1 + (k_size - main_size) // banked_size
     assert len(image.segments[0]) == 16
     assert len(image.segments[1]) == main_size * 1024
     assert len(image.segments[2]) == banked_size * 1024
Esempio n. 12
0
 def parse_segments(self, parser_list):
     parser_list.append(DefaultSegmentParser)
     r = SegmentData(self.raw_bytes, self.style)
     for parser in parser_list:
         try:
             s = parser(r)
             break
         except errors.InvalidSegmentParser:
             pass
     self.set_segments(s)
Esempio n. 13
0
 def get_break(self, section_break):
     data = np.empty(32, dtype=np.uint8)
     data[0:section_break] = 0x8d
     data[section_break:] = 0xfc
     style = np.empty(32, dtype=np.uint8)
     style[0:section_break] = 0
     style[section_break:] = 1
     raw = SegmentData(data, style)
     segment = DefaultSegment(raw, 0)
     return segment
Esempio n. 14
0
 def test_container(self, ext):
     pathname = self.base_path + ext
     try:
         sample_data = np.fromfile(pathname, dtype=np.uint8)
     except OSError:
         pass
     else:
         rawdata = SegmentData(sample_data.copy())
         mime, parser = iter_parsers(rawdata)
         assert mime == self.expected_mime
         assert len(parser.image.files) == self.num_files_in_sample
Esempio n. 15
0
 def setup(self):
     data = np.arange(256, dtype=np.uint8)
     style = np.zeros(256, dtype=np.uint8)
     raw = SegmentData(data, style)
     s = DefaultSegment(raw, 0)
     s.set_style_ranges([(10,20),], data=True)
     s.set_style_ranges([(30,40),], user=1)
     s.set_comment([(0,5)], "comment 0-5")
     s.set_comment([(15,16)], "comment 15-16")
     s.set_comment([(18,24)], "comment 18,24")
     s.set_comment([(38,42)], "comment 38,42")
     s.set_comment([(51,55)], "comment 51,55")
     self.editor = MockHexEditor(segment=s)
Esempio n. 16
0
 def __init__(self, parent, id, title):
     wx.Frame.__init__(self, parent, id, title, wx.DefaultPosition,
                       wx.DefaultSize)
     data = np.arange(0x800, dtype=np.uint8)
     data[0:0x50] = np.fromstring(
         "01\x1b1\x1b1\x1b1\xa0I\xc6\x94\xaax\x0f\x00\x00B\x80E\x1b1\xe00:\xbe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00Ws\x8e\xab\x00\x00\x86\x86\x0fT\x86\x8a\xff\xca\x00d\x00\xd0\x07\x00,F,\x80(\x01\x10L\xfdO!\x00\x00L\x00\x00 K(`\xff\x00\x8e,",
         dtype=np.uint8)
     data[0x3ec:0x400] = np.fromstring("abdceabdceabcdeabcde",
                                       dtype=np.uint8)
     r = SegmentData(data)
     segment = DefaultSegment(r, 0x2800)
     editor = MockEditor(segment)
     task = MockTask(editor)
     self.info = InfoPanel(self, task, fields)
     self.info.recalc_view()
Esempio n. 17
0
    def test_bad(self):
        data = np.fromstring("\x8dp0L\xaa8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pppM\x00p\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\x8d\x8d\x06\x16\x8e\r", dtype=np.uint8)
        style = np.empty(len(data), dtype=np.uint8)
        style[0:17] = 0
        style[17:] = 2
        raw = SegmentData(data, style)
        s = DefaultSegment(raw, 0x3bef)
        info = self.disasm.disassemble_segment(s)
        inst = info.instructions
        for i in range(info.num_instructions):
            print(info[i].instruction)
        text = self.disasm.get_disassembled_text()
        print("\n".join(text))

        text = self.disasm.get_atasm_lst_text()
        print("\n".join(text))
Esempio n. 18
0
    def get_exe_segments(self):
        data1 = np.arange(4096, dtype=np.uint8)
        data1[1::2] = np.repeat(np.arange(16, dtype=np.uint8), 128)
        data2 = np.arange(4096, dtype=np.uint8)
        data2[0::4] = np.repeat(np.arange(8, dtype=np.uint8), 128)
        raw = [
            (data1, 0x4000),
            (data2, 0x8000),
        ]

        segments = []
        for data, origin in raw:
            rawdata = SegmentData(data)
            s = DefaultSegment(rawdata, origin)
            segments.append(s)
        return segments
Esempio n. 19
0
 def test_unbanked(self):
     carts = [
         (8, 1),
         (16, 2),
         (8, 21),
         (2, 57),
         (4, 58),
         (4, 59),
     ]
     for k_size, cart_type in carts:
         data = self.get_cart(k_size, cart_type)
         rawdata = SegmentData(data)
         image = AtariCartImage(rawdata, cart_type)
         image.parse_segments()
         assert len(image.segments) == 2
         assert len(image.segments[0]) == 16
         assert len(image.segments[1]) == k_size * 1024
Esempio n. 20
0
 def check_size(self, data):
     xex_size = len(data)
     bytes = add_xexboot_header(data)
     #        rawdata = SegmentData(bytes)
     #        size = len(rawdata)
     #        atr = KBootImage(rawdata)
     #        newatr = atr.as_new_format("ATR")
     image_size = len(bytes)
     bytes = add_atr_header(bytes)
     rawdata = SegmentData(bytes)
     newatr = KBootImage(rawdata)
     image = newatr.bytes
     print image[0:16]
     paragraphs = image_size / 16
     print newatr.header, paragraphs
     assert int(image[2:4].view(dtype='<u2')) == paragraphs
     assert int(image[16 + 9:16 + 9 + 2].view('<u2')) == xex_size
     return image
Esempio n. 21
0
 def test_banked(self):
     carts = [
         (32, 8, 8, 12),
         (64, 8, 8, 13),
         (64, 8, 8, 67),
         (128, 8, 8, 14),
         (256, 8, 8, 23),
         (512, 8, 8, 24),
         (1024, 8, 8, 25),
     ]
     for k_size, main_size, banked_size, cart_type in carts:
         data = self.get_cart(k_size, cart_type)
         rawdata = SegmentData(data)
         image = AtariCartImage(rawdata, cart_type)
         image.parse_segments()
         assert len(image.segments) == 1 + 1 + (k_size - main_size)/banked_size
         assert len(image.segments[0]) == 16
         assert len(image.segments[1]) == main_size * 1024
         assert len(image.segments[2]) == banked_size * 1024
Esempio n. 22
0
 def test_segment(self):
     bytes = np.asarray([0xff, 0xff, 0x00, 0x60, 0x01, 0x60, 1, 2],
                        dtype=np.uint8)
     rawdata = SegmentData(bytes)
     container = XexContainerSegment(rawdata, 0)
     image = AtariDosFile(container.rawdata)
     image.parse_segments()
     print(image.segments)
     assert len(image.segments) == 1
     assert len(image.segments[0]) == 2
     assert np.all(image.segments[0] == bytes[6:8])
     container.resize(16)
     for s in image.segments:
         s.replace_data(container)
     new_segment = DefaultSegment(rawdata[8:16])
     new_segment[:] = 99
     assert np.all(image.segments[0] == bytes[6:8])
     print(new_segment[:])
     assert np.all(new_segment[:] == 99)
Esempio n. 23
0
 def test_conversion_to_atari_cart(self, cart):
     cart_type = cart[0]
     name = cart[1]
     k_size = cart[2]
     if "Bounty" in name:
         return
     data = self.get_rom(k_size)
     rawdata = SegmentData(data)
     rom_image = RomImage(rawdata)
     rom_image.strict_check()
     rom_image.parse_segments()
     new_cart_image = AtariCartImage(rawdata, cart_type)
     new_cart_image.relaxed_check()
     new_cart_image.parse_segments()
     assert new_cart_image.header.valid
     s = new_cart_image.create_emulator_boot_segment()
     assert len(s) == len(rawdata) + new_cart_image.header.nominal_length
     assert s[0:4].tobytes() == b'CART'
     assert s[4:8].view(dtype=">u4") == cart_type
Esempio n. 24
0
 def setup(self):
     self.segments = []
     for i in range(8):
         data = np.ones([1024], dtype=np.uint8) * i
         r = SegmentData(data)
         self.segments.append(DefaultSegment(r, i * 1024))
Esempio n. 25
0
 def setup(self):
     data = np.arange(32, dtype=np.uint8)
     style = np.zeros(32, dtype=np.uint8)
     raw = SegmentData(data, style)
     segment = DefaultSegment(raw, 0)
     self.editor = MockHexEditor(segment=segment)
Esempio n. 26
0
 def _segments_default(self):
     r = SegmentData(self.raw_bytes,self.style)
     return list([DefaultSegment(r, 0)])
Esempio n. 27
0
 def test_invalid_rom_sizes(self, k_size):
     data = np.zeros((k_size * 1024) + 17, dtype=np.uint8)
     rawdata = SegmentData(data)
     with pytest.raises(errors.InvalidDiskImage):
         rom_image = RomImage(rawdata)
Esempio n. 28
0
 def setup(self):
     data = np.arange(4096, dtype=np.uint8)
     data[1::2] = np.repeat(np.arange(16, dtype=np.uint8), 128)
     r = SegmentData(data)
     self.segment = DefaultSegment(r, 0)
Esempio n. 29
0
 def test_err_segment(self):
     bytes = [0xff, 0xff, 0x00, 0x60, 0x00, 0x00, 1, 2]
     rawdata = SegmentData(bytes)
     image = AtariDosFile(rawdata)
     with pytest.raises(errors.InvalidBinaryFile):
         image.parse_segments()
Esempio n. 30
0
        assert grid_color_indexes.shape == grid_style.shape
        assert grid_color_indexes.shape == (grid_height, pixels_per_row)

        rgb_image = pc.calc_rgb_from_color_indexes_python(
            grid_color_indexes, grid_style, color_list, empty_rgb)
        assert rgb_image.shape == (grid_height, pixels_per_row, 3)

        fast_rgb_image = fast_pc.calc_rgb_from_color_indexes(
            grid_color_indexes, grid_style, color_list, empty_rgb)
        assert (np.array_equal(rgb_image, fast_rgb_image))


if __name__ == "__main__":
    data = np.arange(64, dtype=np.uint8)
    style = np.zeros(64, dtype=np.uint8)
    raw = SegmentData(data, style)
    segment = DefaultSegment(raw, 0)
    print(data)

    ppb = 8
    pixels_per_row = 16
    bytes_per_row = pixels_per_row // ppb
    c = pc.Converter1bpp()
    grid_color_indexes, grid_style = c.calc_color_index_grid(
        data, style, bytes_per_row)
    print(grid_color_indexes)

    ppb = 4
    pixels_per_row = 16
    bytes_per_row = pixels_per_row // ppb
    c = pc.Converter2bpp()