2 Nintendo Family BASIC Emulator 'eFamilyBASIC'
5 Author : Takeda.Toshiya
15 #include "../../emu.h"
16 #include "../device.h"
20 class MEMORY : public DEVICE
23 DEVICE *d_cpu, *d_apu, *d_drec, *d_opll;
26 _TCHAR save_file_name[_MAX_PATH];
28 const uint8_t* key_stat;
29 const uint32_t* joy_stat;
34 // uint8_t rom[0x8000];
37 // uint8_t save_ram[0x2000];
38 uint8_t save_ram[0x10000];
39 uint32_t save_ram_crc32;
43 uint8_t dummy[0x2000];
47 uint8_t frame_irq_enabled;
50 uint8_t pad1_bits, pad2_bits;
55 void set_rom_bank(uint8_t bank, uint32_t bank_num);
59 uint32_t mmc5_wram_bank[8];
60 uint8_t mmc5_chr_reg[8][2];
63 uint8_t mmc5_wram_protect0;
64 uint8_t mmc5_wram_protect1;
65 uint8_t mmc5_prg_size;
66 uint8_t mmc5_chr_size;
67 uint8_t mmc5_gfx_mode;
68 // uint8_t mmc5_split_control;
69 // uint8_t mmc5_split_bank;
70 uint8_t mmc5_irq_enabled;
71 uint8_t mmc5_irq_status;
72 uint32_t mmc5_irq_line;
75 uint32_t mmc5_lo_read(uint32_t addr);
76 void mmc5_lo_write(uint32_t addr, uint32_t data);
77 // uint32_t mmc5_save_read(uint32_t addr);
78 void mmc5_save_write(uint32_t addr, uint32_t data);
79 void mmc5_hi_write(uint32_t addr, uint32_t data);
80 void mmc5_hsync(int v);
81 void mmc5_set_cpu_bank(uint8_t bank, uint32_t bank_num);
82 void mmc5_set_wram_bank(uint8_t bank, uint32_t bank_num);
83 void mmc5_set_ppu_bank(uint8_t mode);
86 uint8_t vrc7_irq_enabled;
87 uint8_t vrc7_irq_counter;
88 uint8_t vrc7_irq_latch;
91 uint32_t vrc7_lo_read(uint32_t addr);
92 void vrc7_lo_write(uint32_t addr, uint32_t data);
93 // uint32_t vrc7_save_read(uint32_t addr);
94 // void vrc7_save_write(uint32_t addr, uint32_t data);
95 void vrc7_hi_write(uint32_t addr, uint32_t data);
96 void vrc7_hsync(int v);
99 MEMORY(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
101 set_device_name(_T("Memory Bus"));
109 void write_data8(uint32_t addr, uint32_t data);
110 uint32_t read_data8(uint32_t addr);
111 void event_vline(int v, int clock);
112 void event_callback(int event_id, int err);
113 bool process_state(FILEIO* state_fio, bool loading);
116 void set_context_cpu(DEVICE* device)
120 void set_context_apu(DEVICE* device)
124 void set_context_ppu(PPU* device)
128 void set_context_drec(DEVICE* device)
132 // void set_context_mmc5(DEVICE* device)
136 void set_context_opll(DEVICE* device)
140 void set_spr_ram_ptr(uint8_t* ptr)
144 void load_rom_image(const _TCHAR *file_name);
146 uint8_t mmc5_ppu_latch_render(uint8_t mode, uint32_t addr);