Skip to content

Instantly share code, notes, and snippets.

@cauefcr
Created April 27, 2017 19:40
Show Gist options
  • Save cauefcr/125571de9f387ad759635b301d47cbcf to your computer and use it in GitHub Desktop.
Save cauefcr/125571de9f387ad759635b301d47cbcf to your computer and use it in GitHub Desktop.
divide o arquivo binário gerado pelo mips-assembler em 4 aquivos com 8 bits, de modo que o hades possa ler tais arquivo, por padrão funciona com ROMs de 1KB
#!/bin/python3
import sys
# utilização:
# chmod +x divider.py
# ./divider.py nome_do_arquivo_com_o_binario nome_do_arquivo_saida
# ou "python3 divider.py" etc
def main(args):
if len(args) > 2:
f = open(args[1],'r')
txt = f.read().split() # quebra em linhas o binário fornecido pelo mips-assembler
f.close()
# abre quatro arquivos com o nome fornecido no segundo argumento, que serão os arquivos .rom do hades
output = [open(args[2]+'1.rom','w'),open(args[2]+'2.rom','w'),open(args[2]+'3.rom','w'),open(args[2]+'4.rom','w')]
cont = 0 # contador de endereço, usado no formato do hades
for line in txt:
for i in range(4):
cont_hx = str(hex(cont))[2:] # transforma em hexadecimal o endereço, ignora o '0x' do começo
for j in range(4-len(cont_hx)): # coloca os '0's de começo no endereço
output[i].write('0')
output[i].write(cont_hx+':')
num_hex = str(hex(int(line[8*i:8*(i+1)],2)))[2:] # pega a localização correta da string, transforma pra hex e ignora o '0x'
for j in range(2-len(num_hex)): # coloca os '0's do começo do valor, se necessário
output[i].write('0')
output[i].write(num_hex)
output[i].write('\n')
cont += 1
for rest in range(cont,1024): # preenche o resto da memória, com 'X's
cont_hx = str(hex(rest))[2:]
for i in range(4):
for j in range(4-len(cont_hx)):
output[i].write('0')
output[i].write(cont_hx + ':XX\n')
for o in output:
o.close()
else:
print("Número errado de argumentos\nUtilize-o como ./divider.py <arquivo_entrada> <arquivo_saida>")
if __name__ == '__main__':
main(sys.argv)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment