aorom.c 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /*
  2. * AOROM Mapper - The peTI-NESulator Project
  3. * aorom.c
  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 "aorom.h"
  15. unsigned char aorom_load_bank;
  16. void aorom_MapperWriteHook(register byte Addr, register byte Value);
  17. extern byte *ppu_mem_nameTables;
  18. int aorom_InitMapper(NesCart * cart)
  19. {
  20. int i;
  21. set_prom_bank_32k(0x8000,0);
  22. ppu_setScreenMode(PPU_SCMODE_SINGLE);
  23. aorom_load_bank = 0;
  24. /* Register the write hook */
  25. for (i = 0x80; i < 0x100; i++)
  26. {
  27. set_page_wr_hook(i, aorom_MapperWriteHook);
  28. set_page_writeable(i, true);
  29. }
  30. return 0;
  31. }
  32. void aorom_MapperWriteHook(register byte Addr, register byte Value)
  33. {
  34. int BankNb;
  35. if (Value & (1 << 4))
  36. ppu_setSingleScreen(PPU_SCREEN_000);
  37. else
  38. ppu_setSingleScreen(PPU_SCREEN_400);
  39. BankNb = Value & 0x0F;
  40. aorom_load_bank = BankNb;
  41. //console_printf(Console_Default, "aorom: Asking bank %d - NT is 0x%04X\n",BankNb,(Value&0x10)?0x2400:0x2000);
  42. set_prom_bank_32k(0x8000,BankNb);
  43. }
  44. void aorom_MapperDump(FILE *fp)
  45. {
  46. fprintf(fp,"aorom: bank:%d\n",aorom_load_bank);
  47. }