-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpreparations.lua
More file actions
60 lines (53 loc) · 2.09 KB
/
Copy pathpreparations.lua
File metadata and controls
60 lines (53 loc) · 2.09 KB
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
-- =============================================================
-- preparations.lua — prepara os .asm pra montar com ca65
-- =============================================================
-- Cria copias "copy_*.asm" dos bancos, removendo o prefixo do
-- BZK (aquele "C - - - - - 0x...... ..:....: .. .. .." na
-- esquerda) que o ca65 nao entende. O ca65 monta as copias.
--
-- (Padrao usado pelos disassemblies profissionais do
-- cyneprepou4uk/NES-Games-Disassembly.)
-- =============================================================
local files_list = {
"bank_00.asm","bank_01.asm","bank_02.asm","bank_03.asm",
"bank_04.asm","bank_05.asm","bank_06.asm","bank_07.asm",
"bank_08.asm","bank_09.asm","bank_0A.asm","bank_0B.asm",
"bank_0C.asm","bank_0D.asm","bank_0E.asm","bank_FF.asm",
"bank_ram.inc","bank_val.inc","header.asm",
}
local game_file_name = "_tmnt2.nes"
-- regex que remove o prefixo BZK. Ex de linha removida:
-- C - - - - - 0x01D803 07:D7F3: AD F0 05
local bzk_regex = ".%s.%s.%s.%s.%s.%s0x......%s..:....:%s..%s..%s..."
local replace_with_latin = false -- mantem so latin
-- --- processa cada arquivo ---
for _, fname in ipairs(files_list) do
local inp = io.open(fname, "r")
if inp then
local outp = io.open("copy_"..fname, "w")
for line in inp:lines() do
-- remove o prefixo BZK
line = string.gsub(line, bzk_regex, "")
outp:write(line, "\n")
end
inp:close()
outp:close()
print("preparado: copy_"..fname)
end
end
-- --- cria o arquivo .nl pro FCEUX (labels de RAM) ---
local ram_in = io.open("copy_bank_ram.inc", "r")
if ram_in then
local nl = io.open(string.gsub(game_file_name, "%.nes", ".nl"), "w")
for line in ram_in:lines() do
-- extrai "NOME = $ADDR"
local name, addr = string.match(line, "%s*(%S+)%s*=%s*$([%x]+)")
if name and addr then
nl:write(string.format("$%04X#%s#\n", tonumber(addr,16), name))
end
end
ram_in:close()
nl:close()
print("criado: arquivo .nl para FCEUX")
end
print("\npreparations.lua OK")