unrom512.c 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /*
  2. * UNROM Mapper - The peTI-NESulator Project
  3. * unrom.h
  4. *
  5. * Created by Manoel TRAPIER.
  6. * Copyright (c) 2003-2018 986-Studio. All rights reserved.
  7. *
  8. */
  9. #include <ppu/ppu.h>
  10. #include "unrom512.h"
  11. static byte mirroring_set;
  12. static byte loaded_vbank;
  13. static byte loaded_pbank;
  14. static void unrom512_applyValues()
  15. {
  16. /*if (mirroring_set)
  17. {
  18. ppu_setMirroring(PPU);
  19. }
  20. else
  21. {
  22. ppu_setMirroring(PPU_MIRROR_VERTICAL);
  23. }*/
  24. //set_vrom_bank_8k(0x0000, loaded_vbank);
  25. set_prom_bank_16k(0x8000, loaded_pbank);
  26. }
  27. static void unrom512_MapperWriteHook(byte Addr, byte Value)
  28. {
  29. mirroring_set = (Value >> 7) & 0x01;
  30. loaded_vbank = (Value >> 5) & 0x03;
  31. loaded_pbank = (Value ) & 0x1F;
  32. unrom512_applyValues();
  33. }
  34. int unrom512_InitMapper(NesCart * cart)
  35. {
  36. int i;
  37. loaded_vbank = 0;
  38. loaded_pbank = 0;
  39. set_prom_bank_16k(0xC000, GETLAST16KBANK(cart));
  40. unrom512_applyValues();
  41. /* Register the write hook */
  42. for (i = 0x80; i < 0x100; i++)
  43. {
  44. set_page_wr_hook(i, unrom512_MapperWriteHook);
  45. set_page_writeable(i, true);
  46. }
  47. return 0;
  48. }
  49. void unrom512_MapperDump(FILE *fp)
  50. {
  51. fprintf(fp,"unrom512: vbank:%d pbank:%d\n", loaded_vbank, loaded_pbank);
  52. }