Mercurial > repos > blastem
annotate memmap.h @ 1925:039553703c20
Don't apply address and cd register changes to the 'live' registers until pending flag is cleared, but do preserve the upper address bits in the latch. Fixes regression in Overdrive 2 while preserving fix to Mona in 344 bytes
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 13 Apr 2020 20:43:25 -0700 |
parents | 360d5bab199f |
children | 9caebcfeac72 |
rev | line source |
---|---|
1595
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
1 #ifndef MEMMAP_H_ |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
2 #define MEMMAP_H_ |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
3 |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
4 typedef enum { |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
5 READ_16, |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
6 READ_8, |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
7 WRITE_16, |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
8 WRITE_8 |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
9 } ftype; |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
10 |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
11 #define MMAP_READ 0x01 |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
12 #define MMAP_WRITE 0x02 |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
13 #define MMAP_CODE 0x04 |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
14 #define MMAP_PTR_IDX 0x08 |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
15 #define MMAP_ONLY_ODD 0x10 |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
16 #define MMAP_ONLY_EVEN 0x20 |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
17 #define MMAP_FUNC_NULL 0x40 |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
18 #define MMAP_BYTESWAP 0x80 |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
19 #define MMAP_AUX_BUFF 0x100 |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
20 #define MMAP_READ_CODE 0x200 |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
21 |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
22 typedef uint16_t (*read_16_fun)(uint32_t address, void * context); |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
23 typedef uint8_t (*read_8_fun)(uint32_t address, void * context); |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
24 typedef void * (*write_16_fun)(uint32_t address, void * context, uint16_t value); |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
25 typedef void * (*write_8_fun)(uint32_t address, void * context, uint8_t value); |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
26 |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
27 typedef struct { |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
28 uint32_t start; |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
29 uint32_t end; |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
30 uint32_t mask; |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
31 uint32_t aux_mask; |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
32 uint16_t ptr_index; |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
33 uint16_t flags; |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
34 void * buffer; |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
35 read_16_fun read_16; |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
36 write_16_fun write_16; |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
37 read_8_fun read_8; |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
38 write_8_fun write_8; |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
39 } memmap_chunk; |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
40 |
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
41 #endif //MEMMAP_H_ |