2 Nintendo Family BASIC Emulator 'eFamilyBASIC'
5 Author : Takeda.Toshiya
11 #ifndef _FAMILYBASIC_MEMORY_H_
12 #define _FAMILYBASIC_MEMORY_H_
15 #include "../../emu.h"
16 #include "../device.h"
18 namespace FAMILYBASIC {
22 namespace FAMILYBASIC {
24 class MEMORY : public DEVICE
27 DEVICE *d_cpu, *d_apu, *d_drec, *d_opll;
30 _TCHAR save_file_name[_MAX_PATH];
32 const uint8_t* key_stat;
33 const uint32_t* joy_stat;
38 // uint8_t rom[0x8000];
41 // uint8_t save_ram[0x2000];
42 uint8_t save_ram[0x10000];
43 uint32_t save_ram_crc32;
47 uint8_t dummy[0x2000];
51 uint8_t frame_irq_enabled;
54 uint8_t pad1_bits, pad2_bits;
59 void __FASTCALL set_rom_bank(uint8_t bank, uint32_t bank_num);
63 uint32_t mmc5_wram_bank[8];
64 uint8_t mmc5_chr_reg[8][2];
67 uint8_t mmc5_wram_protect0;
68 uint8_t mmc5_wram_protect1;
69 uint8_t mmc5_prg_size;
70 uint8_t mmc5_chr_size;
71 uint8_t mmc5_gfx_mode;
72 // uint8_t mmc5_split_control;
73 // uint8_t mmc5_split_bank;
74 uint8_t mmc5_irq_enabled;
75 uint8_t mmc5_irq_status;
76 uint32_t mmc5_irq_line;
79 uint32_t __FASTCALL mmc5_lo_read(uint32_t addr);
80 void __FASTCALL mmc5_lo_write(uint32_t addr, uint32_t data);
81 // uint32_t __FASTCALL mmc5_save_read(uint32_t addr);
82 void __FASTCALL mmc5_save_write(uint32_t addr, uint32_t data);
83 void __FASTCALL mmc5_hi_write(uint32_t addr, uint32_t data);
84 void mmc5_hsync(int v);
85 void __FASTCALL mmc5_set_cpu_bank(uint8_t bank, uint32_t bank_num);
86 void __FASTCALL mmc5_set_wram_bank(uint8_t bank, uint32_t bank_num);
87 void __FASTCALL mmc5_set_ppu_bank(uint8_t mode);
90 uint8_t vrc7_irq_enabled;
91 uint8_t vrc7_irq_counter;
92 uint8_t vrc7_irq_latch;
95 uint32_t __FASTCALL vrc7_lo_read(uint32_t addr);
96 void __FASTCALL vrc7_lo_write(uint32_t addr, uint32_t data);
97 // uint32_t __FASTCALL vrc7_save_read(uint32_t addr);
98 // void __FASTCALL vrc7_save_write(uint32_t addr, uint32_t data);
99 void __FASTCALL vrc7_hi_write(uint32_t addr, uint32_t data);
100 void __FASTCALL vrc7_hsync(int v);
103 MEMORY(VM_TEMPLATE* parent_vm, EMU_TEMPLATE* parent_emu) : DEVICE(parent_vm, parent_emu)
105 set_device_name(_T("Memory Bus"));
113 void __FASTCALL write_data8(uint32_t addr, uint32_t data);
114 uint32_t __FASTCALL read_data8(uint32_t addr);
115 void event_vline(int v, int clock);
116 void __FASTCALL event_callback(int event_id, int err);
117 bool process_state(FILEIO* state_fio, bool loading);
120 void set_context_cpu(DEVICE* device)
124 void set_context_apu(DEVICE* device)
128 void set_context_ppu(PPU* device)
132 void set_context_drec(DEVICE* device)
136 // void set_context_mmc5(DEVICE* device)
140 void set_context_opll(DEVICE* device)
144 void set_spr_ram_ptr(uint8_t* ptr)
148 void load_rom_image(const _TCHAR *file_name);
150 uint8_t mmc5_ppu_latch_render(uint8_t mode, uint32_t addr);