manager.c 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /*
  2. * manager.c
  3. * TI-NESulator.X
  4. *
  5. * Created by Manoël Trapier on 07/10/07.
  6. * Copyright 2007 986 Corp. All rights reserved.
  7. *
  8. */
  9. #include <stdio.h>
  10. #include <stdlib.h>
  11. #include <mappers/manager.h>
  12. MapperIRQ mapper_irqloop;
  13. MapperDump mapper_dump;
  14. MapperWriteHook mapper_hook;
  15. typedef struct Mapper_
  16. {
  17. byte id;
  18. byte *name;
  19. MapperInit init;
  20. MapperIRQ irq;
  21. MapperDump dump;
  22. } Mapper;
  23. #include "mappers_list.h"
  24. void mapper_list ()
  25. {
  26. Mapper *ptr = &(Mappers[0]);
  27. printf("Available mapers:\n");
  28. while(ptr->name != NULL)
  29. {
  30. printf("%d - %s\n", ptr->id, ptr->name);
  31. ptr++;
  32. }
  33. }
  34. int mapper_init (NesCart *cart)
  35. {
  36. Mapper *ptr = &(Mappers[0]);
  37. printf ("Search for a compatible mapper ID #%X:\n", cart->MapperID);
  38. while (ptr->name != NULL)
  39. {
  40. if (ptr->id == cart->MapperID)
  41. {
  42. printf ("Found mapper ID #%X - '%s'\n", ptr->id, ptr->name);
  43. ptr->init (cart);
  44. mapper_irqloop = ptr->irq;
  45. mapper_dump = ptr->dump;
  46. return 0;
  47. }
  48. ptr++;
  49. }
  50. return -1;
  51. }