unrom512.c 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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. * $LastChangedDate$
  9. * $Author$
  10. * $HeadURL$
  11. * $Revision$
  12. *
  13. */
  14. #include <ppu/ppu.h>
  15. #include "unrom512.h"
  16. static byte mirroring_set;
  17. static byte loaded_vbank;
  18. static byte loaded_pbank;
  19. static void unrom512_applyValues()
  20. {
  21. /*if (mirroring_set)
  22. {
  23. ppu_setMirroring(PPU);
  24. }
  25. else
  26. {
  27. ppu_setMirroring(PPU_MIRROR_VERTICAL);
  28. }*/
  29. //set_vrom_bank_8k(0x0000, loaded_vbank);
  30. set_prom_bank_16k(0x8000, loaded_pbank);
  31. }
  32. static void unrom512_MapperWriteHook(byte Addr, byte Value)
  33. {
  34. mirroring_set = (Value >> 7) & 0x01;
  35. loaded_vbank = (Value >> 5) & 0x03;
  36. loaded_pbank = (Value ) & 0x1F;
  37. unrom512_applyValues();
  38. }
  39. int unrom512_InitMapper(NesCart * cart)
  40. {
  41. int i;
  42. loaded_vbank = 0;
  43. loaded_pbank = 0;
  44. set_prom_bank_16k(0xC000, GETLAST16KBANK(cart));
  45. unrom512_applyValues();
  46. /* Register the write hook */
  47. for (i = 0x80; i < 0x100; i++)
  48. {
  49. set_page_wr_hook(i, unrom512_MapperWriteHook);
  50. set_page_writeable(i, true);
  51. }
  52. return 0;
  53. }
  54. void unrom512_MapperDump(FILE *fp)
  55. {
  56. fprintf(fp,"unrom512: vbank:%d pbank:%d\n", loaded_vbank, loaded_pbank);
  57. }