aorom.c 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /*
  2. * AOROM Mapper - The TI-NESulator Project
  3. * aorom.h
  4. *
  5. * Created by Manoel TRAPIER.
  6. * Copyright (c) 2003-2007 986Corp. All rights reserved.
  7. *
  8. * $LastChangedDate: 2007-04-26 18:47:34 +0200 (jeu, 26 avr 2007) $
  9. * $Author: mtrapier $
  10. * $HeadURL: file:///media/HD6G/SVNROOT/trunk/TI-NESulator/src/aorom.h $
  11. * $Revision: 46 $
  12. *
  13. */
  14. unsigned char aorom_load_bank;
  15. void aorom_MapperWriteHook(register byte Addr, register byte Value);
  16. extern byte *ppu_mem_nameTables;
  17. int aorom_InitMapper(NesCart * cart)
  18. {
  19. int i;
  20. set_prom_bank_32k(0x8000,0);
  21. ppu_setScreenMode(PPU_SCMODE_SINGLE);
  22. aorom_load_bank = 0;
  23. /* Register the write hook */
  24. for (i = 0x80; i < 0x100; i++)
  25. {
  26. set_page_wr_hook(i, aorom_MapperWriteHook);
  27. set_page_writeable(i, true);
  28. }
  29. return 0;
  30. }
  31. void aorom_MapperWriteHook(register byte Addr, register byte Value)
  32. {
  33. int BankNb;
  34. if (Value & (1 << 4))
  35. ppu_setSingleScreen(PPU_SCREEN_000);
  36. else
  37. ppu_setSingleScreen(PPU_SCREEN_400);
  38. BankNb = Value & 0x0F;
  39. aorom_load_bank = BankNb;
  40. //printf("aorom: Asking bank %d (giving %d & %d) - mirror is %d\n",BankNb,BankNb,(Value<<1)+1,Value&0x0F);
  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. }