Mercurial > repos > blastem
diff dis.c @ 2053:3414a4423de1 segacd
Merge from default
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 15 Jan 2022 13:15:21 -0800 |
parents | 460e14497120 |
children | 1ff67ce37085 |
line wrap: on
line diff
--- a/dis.c Sat Jan 05 00:58:08 2019 -0800 +++ b/dis.c Sat Jan 15 13:15:21 2022 -0800 @@ -269,19 +269,21 @@ { *cur = (*cur >> 8) | (*cur << 8); } - uint32_t start = filebuf[2] << 16 | filebuf[3]; - uint32_t int_2 = filebuf[0x68/2] << 16 | filebuf[0x6A/2]; - uint32_t int_4 = filebuf[0x70/2] << 16 | filebuf[0x72/2]; - uint32_t int_6 = filebuf[0x78/2] << 16 | filebuf[0x7A/2]; - named_labels = add_label(named_labels, "start", start); - named_labels = add_label(named_labels, "int_2", int_2); - named_labels = add_label(named_labels, "int_4", int_4); - named_labels = add_label(named_labels, "int_6", int_6); - if (!def || !only) { - def = defer(start, def); - def = defer(int_2, def); - def = defer(int_4, def); - def = defer(int_6, def); + if (!address_off) { + uint32_t start = filebuf[2] << 16 | filebuf[3]; + uint32_t int_2 = filebuf[0x68/2] << 16 | filebuf[0x6A/2]; + uint32_t int_4 = filebuf[0x70/2] << 16 | filebuf[0x72/2]; + uint32_t int_6 = filebuf[0x78/2] << 16 | filebuf[0x7A/2]; + named_labels = add_label(named_labels, "start", start); + named_labels = add_label(named_labels, "int_2", int_2); + named_labels = add_label(named_labels, "int_4", int_4); + named_labels = add_label(named_labels, "int_6", int_6); + if (!def || !only) { + def = defer(start, def); + def = defer(int_2, def); + def = defer(int_4, def); + def = defer(int_6, def); + } } } uint16_t *encoded, *next; @@ -292,7 +294,7 @@ encoded = NULL; address = def->address; if (!is_visited(address)) { - encoded = filebuf + (address - address_off)/2; + encoded = filebuf + ((address & 0xFFFFFF) - address_off)/2; } tmpd = def; def = def->next; @@ -302,7 +304,7 @@ break; } for(;;) { - if (address > address_end || address < address_off) { + if ((address & 0xFFFFFF) > address_end || address < address_off) { break; } visit(address);