Fix disassembler not advancing past PC
This commit is contained in:
parent
ae22c95dbe
commit
53826584b8
18
core/vb.h
18
core/vb.h
|
@ -84,6 +84,24 @@ extern "C" {
|
||||||
/* Option keys */
|
/* Option keys */
|
||||||
#define VB_PSEUDO_HALT 0
|
#define VB_PSEUDO_HALT 0
|
||||||
|
|
||||||
|
/* Controller buttons */
|
||||||
|
#define VB_PWR 0x0001
|
||||||
|
#define VB_SGN 0x0002
|
||||||
|
#define VB_A 0x0004
|
||||||
|
#define VB_B 0x0008
|
||||||
|
#define VB_RT 0x0010
|
||||||
|
#define VB_LT 0x0020
|
||||||
|
#define VB_RU 0x0040
|
||||||
|
#define VB_RR 0x0080
|
||||||
|
#define VB_LR 0x0100
|
||||||
|
#define VB_LL 0x0200
|
||||||
|
#define VB_LD 0x0400
|
||||||
|
#define VB_LU 0x0800
|
||||||
|
#define VB_STA 0x1000
|
||||||
|
#define VB_SEL 0x2000
|
||||||
|
#define VB_RL 0x4000
|
||||||
|
#define VB_RD 0x8000
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*********************************** Types ***********************************/
|
/*********************************** Types ***********************************/
|
||||||
|
|
|
@ -295,7 +295,7 @@ static void vsuWriteLRV(VB *sim, int index, uint8_t value) {
|
||||||
|
|
||||||
/* Write a value to S*RAM */
|
/* Write a value to S*RAM */
|
||||||
static void vsuWriteRAM(VB *sim, int index, uint8_t value) {
|
static void vsuWriteRAM(VB *sim, int index, uint8_t value) {
|
||||||
sim->vsu.channels[index].wave.wave = value & 7;
|
sim->vsu.channels[index].wave.wave = value & 15;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Write a value to S5SWP */
|
/* Write a value to S5SWP */
|
||||||
|
|
|
@ -511,7 +511,7 @@ static int dasmLine(VB *sim, uint32_t *address, uint32_t pc,
|
||||||
line->isPC = *address == pc;
|
line->isPC = *address == pc;
|
||||||
for (x = 0; x < line->codeLength; x++)
|
for (x = 0; x < line->codeLength; x++)
|
||||||
line->code[x] = vbRead(sim, *address + x, VB_U8);
|
line->code[x] = vbRead(sim, *address + x, VB_U8);
|
||||||
*address += pc - *address < line->codeLength ?
|
*address += pc != *address && pc - *address < line->codeLength ?
|
||||||
pc - *address : line->codeLength;
|
pc - *address : line->codeLength;
|
||||||
|
|
||||||
/* Do not process text members */
|
/* Do not process text members */
|
||||||
|
@ -655,7 +655,7 @@ static VBU_DasmLine* dasmDisassemble(VB *sim, uint32_t address,
|
||||||
size = dasmInstSize(sim, addr);
|
size = dasmInstSize(sim, addr);
|
||||||
if (address - addr < size)
|
if (address - addr < size)
|
||||||
break;
|
break;
|
||||||
addr += pc - addr < size ? pc - addr : size;
|
addr += addr != pc && pc - addr < size ? pc - addr : size;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Address of first line is in the circular buffer */
|
/* Address of first line is in the circular buffer */
|
||||||
|
|
Loading…
Reference in New Issue