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