aboutsummaryrefslogtreecommitdiffstats
path: root/atk16_emu/test/utils.py
blob: 0d40d54f0d184254b3b26f9cd1a90488048d53f1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
def pad_bytearray(to_length: int, ba: bytearray) -> bytearray:
  """
  Pads a bytearray with zeros until it reaches a specified length.

  :param to_length: Target length in bytes.
  :param ba: The bytearray to be padded.
  :return: The padded bytearray.
  """
  padding_size = to_length - len(ba)
  if padding_size > 0:
    ba.extend(b'\x00' * padding_size)
  return ba

def make_rom(words: list[int]) -> bytearray:
  """
  Constructs a ROM image from a list of 16-bit words.

  :param words: The list of 16-bit words.
  :return: The ROM image as a bytearray.
  """
  bytes = []
  for word in words:
    bytes.append((word >> 8) & 0xFF)
    bytes.append(word & 0xFF)
  return pad_bytearray(64 * 1024, bytearray(bytes))