Hang on, the 68k is big-endian --- I'm extracting words (and bytes) from longs
incorrectly.
This commit is contained in:
		
							parent
							
								
									2cf39be752
								
							
						
					
					
						commit
						4b26f75d23
					
				
					 2 changed files with 5 additions and 5 deletions
				
			
		|  | @ -56,8 +56,8 @@ | ||||||
| /* ======================================================================== */ | /* ======================================================================== */ | ||||||
| 
 | 
 | ||||||
| /* Turn ON if you want to use the following M68K variants */ | /* Turn ON if you want to use the following M68K variants */ | ||||||
| #define M68K_EMULATE_010            OPT_ON | #define M68K_EMULATE_010            OPT_OFF | ||||||
| #define M68K_EMULATE_EC020          OPT_ON | #define M68K_EMULATE_EC020          OPT_OFF | ||||||
| #define M68K_EMULATE_020            OPT_ON | #define M68K_EMULATE_020            OPT_ON | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -84,7 +84,7 @@ unsigned int cpu_read_long(unsigned int address) | ||||||
| 		case 0x00: return INIT_SP; | 		case 0x00: return INIT_SP; | ||||||
| 		case 0x04: return INIT_PC; | 		case 0x04: return INIT_PC; | ||||||
| 		case 0x80: syscall(); return 0x10000; | 		case 0x80: syscall(); return 0x10000; | ||||||
| 		case 0x10000: return 0x4e73; /* rte */ | 		case 0x10000: return 0x4e734e73; /* rte; rte */ | ||||||
| 		case 0x10004: return 0; | 		case 0x10004: return 0; | ||||||
| 		default: return READ_LONG(g_ram, transform_address(address)); | 		default: return READ_LONG(g_ram, transform_address(address)); | ||||||
| 	} | 	} | ||||||
|  | @ -94,14 +94,14 @@ unsigned int cpu_read_long(unsigned int address) | ||||||
| unsigned int cpu_read_word(unsigned int address) | unsigned int cpu_read_word(unsigned int address) | ||||||
| { | { | ||||||
| 	unsigned int l = cpu_read_long(address & ~3); | 	unsigned int l = cpu_read_long(address & ~3); | ||||||
| 	l >>= (address & 2) * 8; | 	l >>= 16 - (address & 2)*8; | ||||||
| 	return l & 0xffff; | 	return l & 0xffff; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| unsigned int cpu_read_byte(unsigned int address) | unsigned int cpu_read_byte(unsigned int address) | ||||||
| { | { | ||||||
| 	unsigned int l = cpu_read_long(address & ~3); | 	unsigned int l = cpu_read_long(address & ~3); | ||||||
| 	l >>= (address & 3) * 8; | 	l >>= 24 - (address & 3)*8; | ||||||
| 	return l & 0xff; | 	return l & 0xff; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue