19 |
|
#include "main.h" |
20 |
|
#include "video.h" |
21 |
|
|
22 |
+ |
#if !REAL_ADDRESSING && !DIRECT_ADDRESSING |
23 |
+ |
|
24 |
|
static bool illegal_mem = false; |
25 |
|
|
26 |
|
#ifdef SAVE_MEMORY_BANKS |
29 |
|
addrbank mem_banks[65536]; |
30 |
|
#endif |
31 |
|
|
32 |
+ |
#ifdef WORDS_BIGENDIAN |
33 |
+ |
# define swap_words(X) (X) |
34 |
+ |
#else |
35 |
+ |
# define swap_words(X) (((X) >> 16) | ((X) << 16)) |
36 |
+ |
#endif |
37 |
+ |
|
38 |
|
#ifdef NO_INLINE_MEMORY_ACCESS |
39 |
|
__inline__ uae_u32 longget (uaecptr addr) |
40 |
|
{ |
407 |
|
uae_u32 *m, l; |
408 |
|
m = (uae_u32 *)(FrameBaseDiff + addr); |
409 |
|
l = *m; |
410 |
< |
return (l >> 16) | (l << 16); |
410 |
> |
return swap_words(l); |
411 |
|
} |
412 |
|
|
413 |
|
uae_u32 REGPARAM2 frame_host_555_wget(uaecptr addr) |
421 |
|
{ |
422 |
|
uae_u32 *m; |
423 |
|
m = (uae_u32 *)(FrameBaseDiff + addr); |
424 |
< |
*m = (l >> 16) | (l << 16); |
424 |
> |
*m = swap_words(l); |
425 |
|
} |
426 |
|
|
427 |
|
void REGPARAM2 frame_host_555_wput(uaecptr addr, uae_u32 w) |
437 |
|
m = (uae_u32 *)(FrameBaseDiff + addr); |
438 |
|
l = *m; |
439 |
|
l = (l & 0x001f001f) | ((l >> 1) & 0x7fe07fe0); |
440 |
< |
return (l >> 16) | (l << 16); |
440 |
> |
return swap_words(l); |
441 |
|
} |
442 |
|
|
443 |
|
uae_u32 REGPARAM2 frame_host_565_wget(uaecptr addr) |
453 |
|
uae_u32 *m; |
454 |
|
m = (uae_u32 *)(FrameBaseDiff + addr); |
455 |
|
l = (l & 0x001f001f) | ((l << 1) & 0xffc0ffc0); |
456 |
< |
*m = (l >> 16) | (l << 16); |
456 |
> |
*m = swap_words(l); |
457 |
|
} |
458 |
|
|
459 |
|
void REGPARAM2 frame_host_565_wput(uaecptr addr, uae_u32 w) |
556 |
|
frame_xlate, frame_check |
557 |
|
}; |
558 |
|
|
559 |
< |
void memory_init(void) |
559 |
> |
void InitFrameBufferMapping(void) |
560 |
|
{ |
553 |
– |
char buffer[4096]; |
554 |
– |
char *nam; |
555 |
– |
int i, fd; |
561 |
|
|
562 |
< |
for(i=0; i<65536; i++) |
562 |
> |
} |
563 |
> |
|
564 |
> |
void memory_init(void) |
565 |
> |
{ |
566 |
> |
for(long i=0; i<65536; i++) |
567 |
|
put_mem_bank(i<<16, &dummy_bank); |
568 |
|
|
569 |
|
// Limit RAM size to not overlap ROM |
561 |
– |
#if REAL_ADDRESSING |
562 |
– |
uint32 ram_size = RAMSize; |
563 |
– |
#else |
570 |
|
uint32 ram_size = RAMSize > ROMBaseMac ? ROMBaseMac : RAMSize; |
565 |
– |
#endif |
571 |
|
|
572 |
|
RAMBaseDiff = (uae_u32)RAMBaseHost - (uae_u32)RAMBaseMac; |
573 |
|
ROMBaseDiff = (uae_u32)ROMBaseHost - (uae_u32)ROMBaseMac; |
614 |
|
for (bnr = start; bnr < start+size; bnr++) |
615 |
|
put_mem_bank((bnr + hioffs) << 16, bank); |
616 |
|
} |
617 |
+ |
|
618 |
+ |
#endif /* !REAL_ADDRESSING && !DIRECT_ADDRESSING */ |
619 |
+ |
|