aorom.c 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /*
  2. * AOROM Mapper - The peTI-NESulator Project
  3. * aorom.c
  4. *
  5. * Created by Manoël Trapier.
  6. * Copyright (c) 2002-2019 986-Studio.
  7. *
  8. */
  9. #include "aorom.h"
  10. uint8_t aorom_load_bank;
  11. void aorom_MapperWriteHook(register uint8_t Addr, register uint8_t Value);
  12. extern uint8_t *ppu_mem_nameTables;
  13. int aorom_InitMapper(NesCart *cart)
  14. {
  15. int i;
  16. set_prom_bank_32k(0x8000, 0);
  17. ppu_setScreenMode(PPU_SCMODE_SINGLE);
  18. aorom_load_bank = 0;
  19. /* Register the write hook */
  20. for (i = 0x80 ; i < 0x100 ; i++)
  21. {
  22. set_page_wr_hook(i, aorom_MapperWriteHook);
  23. set_page_writeable(i, true);
  24. }
  25. return 0;
  26. }
  27. void aorom_MapperWriteHook(register uint8_t Addr, register uint8_t Value)
  28. {
  29. int BankNb;
  30. if (Value & (1 << 4))
  31. {
  32. ppu_setSingleScreen(PPU_SCREEN_000);
  33. }
  34. else
  35. {
  36. ppu_setSingleScreen(PPU_SCREEN_400);
  37. }
  38. BankNb = Value & 0x0F;
  39. aorom_load_bank = BankNb;
  40. //console_printf(Console_Default, "aorom: Asking bank %d - NT is 0x%04X\n",BankNb,(Value&0x10)?0x2400:0x2000);
  41. set_prom_bank_32k(0x8000, BankNb);
  42. }
  43. void aorom_MapperDump(FILE *fp)
  44. {
  45. fprintf(fp, "aorom: bank:%d\n", aorom_load_bank);
  46. }