From 7b41851e30ab191e3017fb7f84b4e715d7c9dbb8 Mon Sep 17 00:00:00 2001 From: Sergio Martin Date: Sun, 14 Jan 2024 12:10:53 +0100 Subject: [PATCH] Putting mapper creation in the core file2 --- source/core/Nes_Core.cpp | 130 +++++++++++++++++++++++++++++++++-- source/core/Nes_Mapper.cpp | 134 ------------------------------------- source/core/Nes_Mapper.h | 3 - 3 files changed, 125 insertions(+), 142 deletions(-) diff --git a/source/core/Nes_Core.cpp b/source/core/Nes_Core.cpp index 4218e1c..5a8771f 100644 --- a/source/core/Nes_Core.cpp +++ b/source/core/Nes_Core.cpp @@ -2,8 +2,8 @@ // Nes_Emu 0.7.0. http://www.slack.net/~ant/ #include "Nes_Core.h" - -#include +#include +#include #include "Nes_Mapper.h" #include "Nes_State.h" @@ -20,6 +20,66 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "blargg_source.h" +/* + New mapping distribution by Sergio Martin (eien86) + https://github.com/SergioMartin86/jaffarPlus +*/ +#include "mappers/mapper000.hpp" +#include "mappers/mapper001.hpp" +#include "mappers/mapper002.hpp" +#include "mappers/mapper003.hpp" +#include "mappers/mapper004.hpp" +#include "mappers/mapper005.hpp" +#include "mappers/mapper007.hpp" +#include "mappers/mapper009.hpp" +#include "mappers/mapper010.hpp" +#include "mappers/mapper011.hpp" +#include "mappers/mapper015.hpp" +#include "mappers/mapper019.hpp" +#include "mappers/mapper021.hpp" +#include "mappers/mapper022.hpp" +#include "mappers/mapper023.hpp" +#include "mappers/mapper024.hpp" +#include "mappers/mapper025.hpp" +#include "mappers/mapper026.hpp" +#include "mappers/mapper030.hpp" +#include "mappers/mapper032.hpp" +#include "mappers/mapper033.hpp" +#include "mappers/mapper034.hpp" +#include "mappers/mapper060.hpp" +#include "mappers/mapper066.hpp" +#include "mappers/mapper069.hpp" +#include "mappers/mapper070.hpp" +#include "mappers/mapper071.hpp" +#include "mappers/mapper073.hpp" +#include "mappers/mapper075.hpp" +#include "mappers/mapper078.hpp" +#include "mappers/mapper079.hpp" +#include "mappers/mapper085.hpp" +#include "mappers/mapper086.hpp" +#include "mappers/mapper087.hpp" +#include "mappers/mapper088.hpp" +#include "mappers/mapper089.hpp" +#include "mappers/mapper093.hpp" +#include "mappers/mapper094.hpp" +#include "mappers/mapper097.hpp" +#include "mappers/mapper113.hpp" +#include "mappers/mapper140.hpp" +#include "mappers/mapper152.hpp" +#include "mappers/mapper154.hpp" +#include "mappers/mapper156.hpp" +#include "mappers/mapper180.hpp" +#include "mappers/mapper184.hpp" +#include "mappers/mapper190.hpp" +#include "mappers/mapper193.hpp" +#include "mappers/mapper206.hpp" +#include "mappers/mapper207.hpp" +#include "mappers/mapper232.hpp" +#include "mappers/mapper240.hpp" +#include "mappers/mapper241.hpp" +#include "mappers/mapper244.hpp" +#include "mappers/mapper246.hpp" + extern const char unsupported_mapper [] = "Unsupported mapper"; bool const wait_states_enabled = true; @@ -71,9 +131,69 @@ const char * Nes_Core::open( Nes_Cart const* new_cart ) // Getting cartdrige mapper code auto mapperCode = new_cart->mapper_code(); - mapper = Nes_Mapper::create(mapperCode); - if ( !mapper ) - return unsupported_mapper; + // Now checking if the detected mapper code is supported + if (mapperCode == 0) mapper = new Mapper000(); + if (mapperCode == 1) mapper = new Mapper001(); + if (mapperCode == 2) mapper = new Mapper002(); + if (mapperCode == 3) mapper = new Mapper003(); + if (mapperCode == 4) mapper = new Mapper004(); + if (mapperCode == 5) mapper = new Mapper005(); + if (mapperCode == 7) mapper = new Mapper007(); + if (mapperCode == 9) mapper = new Mapper009(); + if (mapperCode == 10) mapper = new Mapper010(); + if (mapperCode == 11) mapper = new Mapper011(); + if (mapperCode == 15) mapper = new Mapper015(); + if (mapperCode == 19) mapper = new Mapper019(); + if (mapperCode == 21) mapper = new Mapper021(); + if (mapperCode == 22) mapper = new Mapper022(); + if (mapperCode == 23) mapper = new Mapper023(); + if (mapperCode == 24) mapper = new Mapper024(); + if (mapperCode == 25) mapper = new Mapper025(); + if (mapperCode == 26) mapper = new Mapper026(); + if (mapperCode == 30) mapper = new Mapper030(); + if (mapperCode == 32) mapper = new Mapper032(); + if (mapperCode == 33) mapper = new Mapper033(); + if (mapperCode == 34) mapper = new Mapper034(); + if (mapperCode == 60) mapper = new Mapper060(); + if (mapperCode == 66) mapper = new Mapper066(); + if (mapperCode == 69) mapper = new Mapper069(); + if (mapperCode == 70) mapper = new Mapper070(); + if (mapperCode == 71) mapper = new Mapper071(); + if (mapperCode == 73) mapper = new Mapper073(); + if (mapperCode == 75) mapper = new Mapper075(); + if (mapperCode == 78) mapper = new Mapper078(); + if (mapperCode == 79) mapper = new Mapper079(); + if (mapperCode == 85) mapper = new Mapper085(); + if (mapperCode == 86) mapper = new Mapper086(); + if (mapperCode == 87) mapper = new Mapper087(); + if (mapperCode == 88) mapper = new Mapper088(); + if (mapperCode == 89) mapper = new Mapper089(); + if (mapperCode == 93) mapper = new Mapper093(); + if (mapperCode == 94) mapper = new Mapper094(); + if (mapperCode == 97) mapper = new Mapper097(); + if (mapperCode == 113) mapper = new Mapper113(); + if (mapperCode == 140) mapper = new Mapper140(); + if (mapperCode == 152) mapper = new Mapper152(); + if (mapperCode == 154) mapper = new Mapper154(); + if (mapperCode == 156) mapper = new Mapper156(); + if (mapperCode == 180) mapper = new Mapper180(); + if (mapperCode == 184) mapper = new Mapper184(); + if (mapperCode == 190) mapper = new Mapper190(); + if (mapperCode == 193) mapper = new Mapper193(); + if (mapperCode == 206) mapper = new Mapper206(); + if (mapperCode == 207) mapper = new Mapper207(); + if (mapperCode == 232) mapper = new Mapper232(); + if (mapperCode == 240) mapper = new Mapper240(); + if (mapperCode == 241) mapper = new Mapper241(); + if (mapperCode == 244) mapper = new Mapper244(); + if (mapperCode == 246) mapper = new Mapper246(); + + // If no mapper was found, return null (error) now + if (mapper == NULL) + { + fprintf(stderr, "Could not find mapper for code: %u\n", mapperCode); + return unsupported_mapper; + } // Assigning backwards pointers to cartdrige and emulator now mapper->cart_ = new_cart; diff --git a/source/core/Nes_Mapper.cpp b/source/core/Nes_Mapper.cpp index fba9528..4f25a4a 100644 --- a/source/core/Nes_Mapper.cpp +++ b/source/core/Nes_Mapper.cpp @@ -2,8 +2,6 @@ // Nes_Emu 0.7.0. http://www.slack.net/~ant/ #include "Nes_Mapper.h" - -#include #include #include "Nes_Core.h" @@ -20,66 +18,6 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "blargg_source.h" -/* - New mapping distribution by Sergio Martin (eien86) - https://github.com/SergioMartin86/jaffarPlus -*/ -#include "mappers/mapper000.hpp" -#include "mappers/mapper001.hpp" -#include "mappers/mapper002.hpp" -#include "mappers/mapper003.hpp" -#include "mappers/mapper004.hpp" -#include "mappers/mapper005.hpp" -#include "mappers/mapper007.hpp" -#include "mappers/mapper009.hpp" -#include "mappers/mapper010.hpp" -#include "mappers/mapper011.hpp" -#include "mappers/mapper015.hpp" -#include "mappers/mapper019.hpp" -#include "mappers/mapper021.hpp" -#include "mappers/mapper022.hpp" -#include "mappers/mapper023.hpp" -#include "mappers/mapper024.hpp" -#include "mappers/mapper025.hpp" -#include "mappers/mapper026.hpp" -#include "mappers/mapper030.hpp" -#include "mappers/mapper032.hpp" -#include "mappers/mapper033.hpp" -#include "mappers/mapper034.hpp" -#include "mappers/mapper060.hpp" -#include "mappers/mapper066.hpp" -#include "mappers/mapper069.hpp" -#include "mappers/mapper070.hpp" -#include "mappers/mapper071.hpp" -#include "mappers/mapper073.hpp" -#include "mappers/mapper075.hpp" -#include "mappers/mapper078.hpp" -#include "mappers/mapper079.hpp" -#include "mappers/mapper085.hpp" -#include "mappers/mapper086.hpp" -#include "mappers/mapper087.hpp" -#include "mappers/mapper088.hpp" -#include "mappers/mapper089.hpp" -#include "mappers/mapper093.hpp" -#include "mappers/mapper094.hpp" -#include "mappers/mapper097.hpp" -#include "mappers/mapper113.hpp" -#include "mappers/mapper140.hpp" -#include "mappers/mapper152.hpp" -#include "mappers/mapper154.hpp" -#include "mappers/mapper156.hpp" -#include "mappers/mapper180.hpp" -#include "mappers/mapper184.hpp" -#include "mappers/mapper190.hpp" -#include "mappers/mapper193.hpp" -#include "mappers/mapper206.hpp" -#include "mappers/mapper207.hpp" -#include "mappers/mapper232.hpp" -#include "mappers/mapper240.hpp" -#include "mappers/mapper241.hpp" -#include "mappers/mapper244.hpp" -#include "mappers/mapper246.hpp" - Nes_Mapper::Nes_Mapper() { emu_ = NULL; @@ -214,75 +152,3 @@ void Nes_Mapper::mirror_manual( int page0, int page1, int page2, int page3 ) } -Nes_Mapper* Nes_Mapper::create(const int mapperCode) -{ - // Storage for the mapper, NULL by default - Nes_Mapper* mapper = NULL; - - // Now checking if the detected mapper code is supported - if (mapperCode == 0) mapper = new Mapper000(); - if (mapperCode == 1) mapper = new Mapper001(); - if (mapperCode == 2) mapper = new Mapper002(); - if (mapperCode == 3) mapper = new Mapper003(); - if (mapperCode == 4) mapper = new Mapper004(); - if (mapperCode == 5) mapper = new Mapper005(); - if (mapperCode == 7) mapper = new Mapper007(); - if (mapperCode == 9) mapper = new Mapper009(); - if (mapperCode == 10) mapper = new Mapper010(); - if (mapperCode == 11) mapper = new Mapper011(); - if (mapperCode == 15) mapper = new Mapper015(); - if (mapperCode == 19) mapper = new Mapper019(); - if (mapperCode == 21) mapper = new Mapper021(); - if (mapperCode == 22) mapper = new Mapper022(); - if (mapperCode == 23) mapper = new Mapper023(); - if (mapperCode == 24) mapper = new Mapper024(); - if (mapperCode == 25) mapper = new Mapper025(); - if (mapperCode == 26) mapper = new Mapper026(); - if (mapperCode == 30) mapper = new Mapper030(); - if (mapperCode == 32) mapper = new Mapper032(); - if (mapperCode == 33) mapper = new Mapper033(); - if (mapperCode == 34) mapper = new Mapper034(); - if (mapperCode == 60) mapper = new Mapper060(); - if (mapperCode == 66) mapper = new Mapper066(); - if (mapperCode == 69) mapper = new Mapper069(); - if (mapperCode == 70) mapper = new Mapper070(); - if (mapperCode == 71) mapper = new Mapper071(); - if (mapperCode == 73) mapper = new Mapper073(); - if (mapperCode == 75) mapper = new Mapper075(); - if (mapperCode == 78) mapper = new Mapper078(); - if (mapperCode == 79) mapper = new Mapper079(); - if (mapperCode == 85) mapper = new Mapper085(); - if (mapperCode == 86) mapper = new Mapper086(); - if (mapperCode == 87) mapper = new Mapper087(); - if (mapperCode == 88) mapper = new Mapper088(); - if (mapperCode == 89) mapper = new Mapper089(); - if (mapperCode == 93) mapper = new Mapper093(); - if (mapperCode == 94) mapper = new Mapper094(); - if (mapperCode == 97) mapper = new Mapper097(); - if (mapperCode == 113) mapper = new Mapper113(); - if (mapperCode == 140) mapper = new Mapper140(); - if (mapperCode == 152) mapper = new Mapper152(); - if (mapperCode == 154) mapper = new Mapper154(); - if (mapperCode == 156) mapper = new Mapper156(); - if (mapperCode == 180) mapper = new Mapper180(); - if (mapperCode == 184) mapper = new Mapper184(); - if (mapperCode == 190) mapper = new Mapper190(); - if (mapperCode == 193) mapper = new Mapper193(); - if (mapperCode == 206) mapper = new Mapper206(); - if (mapperCode == 207) mapper = new Mapper207(); - if (mapperCode == 232) mapper = new Mapper232(); - if (mapperCode == 240) mapper = new Mapper240(); - if (mapperCode == 241) mapper = new Mapper241(); - if (mapperCode == 244) mapper = new Mapper244(); - if (mapperCode == 246) mapper = new Mapper246(); - - // If no mapper was found, return null (error) now - if (mapper == NULL) - { - fprintf(stderr, "Could not find mapper for code: %u\n", mapperCode); - return NULL; - } - - // Returning successfully created mapper - return mapper; -} diff --git a/source/core/Nes_Mapper.h b/source/core/Nes_Mapper.h index cbd077f..182cdc9 100644 --- a/source/core/Nes_Mapper.h +++ b/source/core/Nes_Mapper.h @@ -16,9 +16,6 @@ class Nes_Core; class Nes_Mapper { public: - // Create mapper appropriate for cartridge. Returns NULL if it uses unsupported mapper. - static Nes_Mapper* create(const int mapperCode ); - virtual ~Nes_Mapper(); // Reset mapper to power-up state.