OSDN Git Service

RAM access mode support, CUI only
[unagi/old-svn-converted.git] / client / trunk / romimage.h
1 #ifndef _ROMIAMGE_H_
2 #define _ROMIAMGE_H_
3
4 enum trastype{
5         TRANSTYPE_EMPTY,
6         TRANSTYPE_TOP,
7         TRANSTYPE_BOTTOM,
8         TRANSTYPE_FULL,
9 };
10 enum memory_attribute{
11         MEMORY_ATTR_READ, MEMORY_ATTR_WRITE, MEMORY_ATTR_NOTUSE
12 };
13 struct memory{
14         const wgChar *name;
15         int size, offset;
16         enum memory_attribute attribute;
17         enum trastype transtype;
18         uint8_t *data;
19 };
20 /*
21 ROM image 内 struct memory のモード別の使い方
22 MODE_ROM_DUMP
23         cpu_rom ROM 読み込みバッファ, file out
24         ppu_rom ROM 読み込みバッファ, file out
25         cpu_ram 未使用
26 MODE_RAM_READ
27         cpu_rom 未使用
28         ppu_rom 未使用
29         cpu_ram RAM 読み込みバッファ. file out
30 MODE_RAM_WRITE
31         cpu_rom 未使用
32         ppu_rom 未使用
33         cpu_ram RAM 書き込みバッファ. . file in
34 MODE_ROM_PROGRAM
35         cpu_rom ROM 書き込みバッファ, file in
36         ppu_rom ROM 書き込みバッファ, file in
37         cpu_ram 未使用
38 */
39 enum vram_mirroring{
40         MIRROR_HORIZONAL = 0,
41         MIRROR_VERTICAL,
42         MIRROR_PROGRAMABLE = MIRROR_HORIZONAL
43 };
44 struct romimage{
45         struct memory cpu_rom, ppu_rom, cpu_ram;
46         long mappernum;
47         enum vram_mirroring mirror;
48         int backupram;
49 };
50
51 enum{
52         MEMORY_AREA_CPU_RAM, MEMORY_AREA_CPU_ROM, MEMORY_AREA_PPU
53 };
54
55 bool nesbuffer_malloc(struct romimage *r, int mode);
56 void nesfile_create(const struct textcontrol *l, struct romimage *r, const wgChar *romfilename);
57 void nesbuffer_free(struct romimage *r, int mode);
58 void backupram_create(const struct memory *r, const wgChar *ramfilename);
59 int memorysize_check(const long size, int region);
60 bool nesfile_load(const struct textcontrol *l, const wgChar *file, struct romimage *r);
61 #endif