Previous 199869 Revisions Next

r41835 Monday 23rd November, 2015 at 11:52:11 UTC by David Haywood
the non-working crystal system games make a lot of unaligned accesses, the working ones do not, this might be significant (nw)
[src/devices/cpu/se3208]se3208.cpp

trunk/src/devices/cpu/se3208/se3208.cpp
r250346r250347
5151
5252UINT32 se3208_device::read_dword_unaligned(address_space &space, UINT32 address)
5353{
54   if (address & 3)
55      return space.read_byte(address) | space.read_byte(address+1)<<8 | space.read_byte(address+2)<<16 | space.read_byte(address+3)<<24;
56   else
54   switch (address & 3)
55   {
56   case 0:
5757      return space.read_dword(address);
58   case 1:
59   case 2:
60   case 3:
61//      printf("dword read unaligned %d\n", address & 3);
62      return space.read_byte(address) | space.read_byte(address + 1) << 8 | space.read_byte(address + 2) << 16 | space.read_byte(address + 3) << 24;
63
64   }
65
66   return 0;
5867}
5968
6069UINT16 se3208_device::read_word_unaligned(address_space &space, UINT32 address)
r250346r250347
6776
6877void se3208_device::write_dword_unaligned(address_space &space, UINT32 address, UINT32 data)
6978{
70   if (address & 3)
79   switch (address & 3)
7180   {
81   case 0:
82      space.write_dword(address, data);
83      break;
84
85   case 1:
86   case 2:
87   case 3:
7288      space.write_byte(address, data & 0xff);
73      space.write_byte(address+1, (data>>8)&0xff);
74      space.write_byte(address+2, (data>>16)&0xff);
75      space.write_byte(address+3, (data>>24)&0xff);
89      space.write_byte(address + 1, (data >> 8) & 0xff);
90      space.write_byte(address + 2, (data >> 16) & 0xff);
91      space.write_byte(address + 3, (data >> 24) & 0xff);
92//      printf("dword write unaligned %d\n", address & 3);
93      break;
7694   }
77   else
78   {
79      space.write_dword(address, data);
80   }
95
8196}
8297
8398void se3208_device::write_word_unaligned(address_space &space, UINT32 address, UINT16 data)


Previous 199869 Revisions Next


© 1997-2024 The MAME Team