NESe (pronounced "Nessie") is a NES emulator based on the e6502 emulator, also written in C with a focus on speed and portability for use on embedded platforms, especially ARM.
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

71 rinda
1.6KB

  1. #ifndef NES_H_
  2. #define NES_H_
  3. #include "cart.h"
  4. #include "apu.h"
  5. #include "ppu.h"
  6. #include "input.h"
  7. #include "e6502/e6502.h"
  8. #define nes_clock_master_num (945U * 1000U * 1000U)
  9. #define nes_clock_master_den (44U)
  10. #define nes_clock_cpu_div (12U)
  11. #define nes_clock_ppu_div (4U)
  12. #define nes_clock_apu_div (24U)
  13. #define nes_chr_page_size (0x1000U)
  14. #define nes_vram_page_size (0x0400U)
  15. #define nes_prg_rom_page_size (0x4000U)
  16. #define nes_mem_ram_start (0x0000U)
  17. #define nes_mem_ram_size (0x0800U)
  18. #define nes_mem_ppu_start (0x2000U)
  19. #define nes_mem_ppu_size (0x2000U)
  20. #define nes_mem_apu_start (0x4000U)
  21. #define nes_mem_apu_size (0x0020U)
  22. #define nes_mem_exp_start (0x4020U)
  23. #define nes_mem_exp_size (0x1FE0U)
  24. #define nes_mem_wram_start (0x6000U)
  25. #define nes_mem_wram_size (0x2000U)
  26. #define nes_mem_rom_start (0x8000U)
  27. #define nes_mem_rom_size (0x8000U)
  28. #define nes_ppu_mem_size (0x4000U)
  29. #define nes_ppu_map_size (0x8U)
  30. #define nes_ppu_dma_reg (0x4014U)
  31. #define nes_input_1_reg (0x4016U)
  32. #define nes_input_2_reg (0x4017U)
  33. #define nes_input_set_reg (0x4016U)
  34. #define nes_apu_map_size (0x20U)
  35. typedef struct {
  36. e6502_Core cpu;
  37. nes_ppu ppu;
  38. nes_apu apu;
  39. nes_input input;
  40. uint8_t ram[nes_mem_ram_size];
  41. nes_cart cart;
  42. } nes;
  43. uint8_t nes_mem_read(nes*, uint16_t addr);
  44. void nes_mem_write(nes*, uint16_t addr, uint8_t);
  45. int nes_init(nes*, int audio_freq);
  46. void nes_done(nes*);
  47. int nes_setup_cart(nes*);
  48. void nes_reset(nes*);
  49. nes_ppu_Result nes_step(nes*, int* run);
  50. #endif // NES_H_