Advertisement
xiahanlu

卡带读取

Oct 13th, 2018
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 26.29 KB | None | 0 0
  1.  
  2. #include "gameboy.h"
  3. #include "internal.h"
  4.  
  5. /* Add mapper --*/
  6. int cartridge_load (struct cartridge *cart, FILE *cartmem) {
  7.  
  8.   static ks_uint8 nintendo_magicnumber[] =
  9.   { 0xCE, 0xED, 0x66, 0x66, 0xCC, 0x0D, 0x00, 0x0B, 0x03, 0x73, 0x00, 0x83, 0x00, 0x0C, 0x00, 0x0D,
  10.     0x00, 0x08, 0x11, 0x1F, 0x88, 0x89, 0x00, 0x0E, 0xDC, 0xCC, 0x6E, 0xE6, 0xDD, 0xDD, 0xD9, 0x99,
  11.     0xBB, 0xBB, 0x67, 0x63, 0x6E, 0x0E, 0xEC, 0xCC, 0xDD, 0xDC, 0x99, 0x9F, 0xBB, 0xB9, 0x33, 0x3E };
  12.   ks_bool bat;
  13.   ks_bool ram, cgb, sgb;
  14.   ks_uint8 magicnumber_buffer[sizeof(nintendo_magicnumber)];
  15.   ks_uint8 *promworks;
  16.   ks_uint8 *sramworks;
  17.  
  18.   int cartridge_mbc0_init (struct cartridge *cartridge);
  19.   int cartridge_mbc1_init (struct cartridge *cartridge);
  20.   int cartridge_mbc2_init (struct cartridge *cartridge);
  21.   void cpu_reset (struct cpu *cpu);
  22.   int ppu_reset (struct ppu *ppu);
  23.   int ppu_cgb_mode (struct ppu *ppu);
  24.   int ppu_dmg_mode (struct ppu *ppu);
  25.  
  26.   //extern int cartridge_mbc0_init (struct cartridge *cartridge);
  27.  
  28.   ks_int sig = -1;
  29.   ks_int promsize;
  30.   ks_int sramsize;
  31.   ks_int calc;
  32.   ks_int type;
  33.   assert (cart != ks_null);
  34.   assert (cartmem != ks_null);
  35.  
  36.   bat = ks_false;
  37.   ram = ks_false;
  38.   cgb = ks_false;
  39.   sgb = ks_false;
  40.   sramworks = ks_null;
  41.   promworks = ks_null;
  42.  
  43.   if (fseek (cartmem, 0x104, SEEK_SET) != 0)
  44.     return -1;
  45.   if (fread (& magicnumber_buffer[0], sizeof (nintendo_magicnumber), 1, cartmem)
  46.       != 1)
  47.     return -1;
  48.   if (memcmp (nintendo_magicnumber,
  49.                 magicnumber_buffer, sizeof (magicnumber_buffer) != 0))
  50.     return -1;
  51.   if (fseek (cartmem, 0x134, SEEK_SET) != 0)
  52.     return -1;
  53.   if (fread (& cart->infochunk[0], sizeof (cart->infochunk), 1, cartmem)
  54.       != 1)
  55.     return -1;
  56.  
  57.   /* x143/x146 - Check CGB/ SGB  */
  58.   cgb = !!(cart->infochunk[15] & 0x80);
  59.   sgb = !!(cart->infochunk[18] == 0x03);
  60.  
  61.   /*
  62.    00h  ROM ONLY                 19h  MBC5
  63.    01h  MBC1                     1Ah  MBC5+RAM
  64.    02h  MBC1+RAM                 1Bh  MBC5+RAM+BATTERY
  65.    03h  MBC1+RAM+BATTERY         1Ch  MBC5+RUMBLE
  66.    05h  MBC2                     1Dh  MBC5+RUMBLE+RAM
  67.    06h  MBC2+BATTERY             1Eh  MBC5+RUMBLE+RAM+BATTERY
  68.    08h  ROM+RAM                  20h  MBC6
  69.    09h  ROM+RAM+BATTERY          22h  MBC7+SENSOR+RUMBLE+RAM+BATTERY
  70.    0Bh  MMM01
  71.    0Ch  MMM01+RAM
  72.    0Dh  MMM01+RAM+BATTERY
  73.    0Fh  MBC3+TIMER+BATTERY
  74.    10h  MBC3+TIMER+RAM+BATTERY   FCh  POCKET CAMERA
  75.    11h  MBC3                     FDh  BANDAI TAMA5
  76.    12h  MBC3+RAM                 FEh  HuC3
  77.    13h  MBC3+RAM+BATTERY         FFh  HuC1+RAM+BATTERY
  78.  */
  79.  
  80.   /* check error device */
  81.   switch (cart->infochunk[19]) {
  82.   case 0x00:
  83.     type = MBC_0;
  84.     break;
  85.   case 0x01:
  86.   case 0x02:
  87.   case 0x03:
  88.     type = MBC_1;
  89.     break;
  90.   case 0x05:
  91.   case 0x06:
  92.     type = MBC_2;
  93.     break;
  94.   case 0x08:
  95.   case 0x09:
  96.     type = MBC_0;
  97.     break;
  98.   case 0x0B:
  99.   case 0x0C:
  100.   case 0x0D:
  101.     type = MMM0;
  102.     break;
  103.   case 0x0F:
  104.   case 0x10:
  105.   case 0x11:
  106.   case 0x12:
  107.   case 0x13:
  108.     type = MBC_3;
  109.     break;
  110.   case 0x19:
  111.   case 0x1A:
  112.   case 0x1B:
  113.   case 0x1C:
  114.   case 0x1D:
  115.   case 0x1E:
  116.     type = MBC_5;
  117.     break;  
  118.   case 0x20:
  119.     type = MBC_6;
  120.     break;  
  121.   case 0x22:
  122.     type = MBC_7;
  123.     break;  
  124.   case 0xFC:
  125.     type = POCKER_CAM;
  126.     break;  
  127.   case 0xFD:
  128.     type = TAMA5;
  129.     break;
  130.   case 0xFE:
  131.     type = HUCL3;
  132.     break;
  133.   case 0xFF:
  134.     type = HUCL1;
  135.     break;
  136.   default :
  137.     return -1;
  138.   }
  139.   /* check prom size */
  140.   switch (cart->infochunk[20]) {
  141.   case 0x00: promsize = 2; break;
  142.   case 0x01: promsize = 4; break;
  143.   case 0x02: promsize = 8; break;
  144.   case 0x03: promsize =16; break;
  145.   case 0x04: promsize =32; break;
  146.   case 0x05: promsize =64; if (type == MBC_1) promsize = 63; break;
  147.   case 0x06: promsize =128; if (type == MBC_1) promsize = 125; break; break;
  148.   case 0x07: promsize =256; break;
  149.   case 0x08: promsize =512; break;
  150.   case 0x52: promsize =72; break;
  151.   case 0x53: promsize =80; break;
  152.   case 0x54: promsize =96; break;
  153.   default : return -1;
  154.   }
  155.  
  156.   /* check sram size */
  157.   switch (cart->infochunk[21]) {
  158.   case 0x00: sramsize = 0; break;
  159.   case 0x01: sramsize = 1; break; /* 2K sram, same as 8K */
  160.   case 0x02: sramsize = 1; break;
  161.   case 0x03: sramsize = 4; break;
  162.   case 0x04: sramsize =16; break;
  163.   case 0x05: sramsize = 8; break;
  164.   default : return -1;
  165.   }
  166.   /* init prom and sram */
  167.   promworks = (ks_uint8 *)malloc (promsize * 0x4000);
  168.   sramworks = (ks_uint8 *)malloc (sramsize * 0x2000);
  169.   assert (promworks != ks_null);
  170.   assert (sramworks != ks_null); /* random data in init time */
  171.  
  172.   fseek (cartmem, 0, SEEK_END);
  173.   calc = ftell(cartmem);
  174.  
  175.   if (calc != promsize * 0x4000)
  176.     promsize = calc / 0x4000;
  177.   if (fseek (cartmem, 0, SEEK_SET) != 0)
  178.     goto _cleanup;
  179.   if (fread (promworks, promsize * 0x4000, 1, cartmem) != 1)
  180.     goto _cleanup;
  181.   if (cart->promworks != ks_null)
  182.     free (cart->promworks);
  183.   if (cart->sramworks != ks_null)
  184.     free (cart->sramworks);
  185.  
  186.   cart->promworks = promworks;
  187.   cart->sramworks = sramworks;
  188.   cart->cbgmode = cgb;
  189.   cart->sgbmode = sgb;
  190.   cart->promsize = promsize;
  191.   cart->sramsize = sramsize;
  192.   cart->type = type;
  193.   cart->battery = bat;
  194.  
  195.   /* reset cart chip device */
  196.   switch (type) {
  197.   case MBC_0:
  198.     cartridge_mbc0_init (cart);
  199.     break;
  200.   case MBC_1:
  201.   case MBC_2:
  202.   case MBC_3:
  203.   case MBC_4:
  204.   case MBC_5:
  205.   case MBC_6:
  206.   case MBC_7:
  207.   case TAMA5:
  208.   case HUCL1:
  209.   case HUCL3:
  210.   case MMM0:
  211.   case POCKER_CAM:
  212.   default :assert (0); /*never reach here */
  213.   }
  214.   if (cgb != ks_false)
  215.     ppu_cgb_mode (cart->gb->lh5028);
  216.   else
  217.     ppu_dmg_mode (cart->gb->lh5028);
  218.   cpu_reset (cart->gb->lr35902);
  219.   ppu_reset (cart->gb->lh5028);
  220.   /* set std freq. */
  221.   cart->gb->mach_tools = (struct machine_setup *)& std_machine;
  222.   return 0;
  223. _cleanup:
  224.   free (sramworks);
  225.   free (promworks);
  226.   return -1;
  227. }
  228.  
  229. int cartridge_init (struct cartridge **cartridge) {
  230.   struct cartridge *cartridge_ =ks_null;
  231.   assert (cartridge != ks_null);
  232.  
  233.   cartridge_ = (struct cartridge *)
  234.      calloc (sizeof (struct cartridge), 1);
  235.   cartridge_->clks = ks_null;
  236.   assert (cartridge_ != ks_null);
  237.   * cartridge = cartridge_;
  238.  
  239.   /* Settings cart type desc init --*/
  240.   cartridge_->cartgt[0x00] = "ROM ONLY";
  241.   cartridge_->cartgt[0x01] = "ROM+MBC1";
  242.   cartridge_->cartgt[0x02] = "ROM+MBC1+RAM";
  243.   cartridge_->cartgt[0x03] = "ROM+MBC1+RAM+Battery";
  244.   cartridge_->cartgt[0x05] = "ROM+MBC2";
  245.   cartridge_->cartgt[0x06] = "ROM+MBC2+Battery";
  246.   cartridge_->cartgt[0x08] = "ROM+RAM";
  247.   cartridge_->cartgt[0x09] = "ROM+RAM+Battery";
  248.   cartridge_->cartgt[0x0B] = "ROM+MMM01";
  249.   cartridge_->cartgt[0x0C] = "ROM+MMM01+RAM";
  250.   cartridge_->cartgt[0x0D] = "ROM+MMM01+RAM+Battery";
  251.   cartridge_->cartgt[0x0F] = "ROM+MBC3+Battery+Timer";
  252.   cartridge_->cartgt[0x10] = "ROM+MBC3+RAM+Battery+Timer";
  253.   cartridge_->cartgt[0x11] = "ROM+MBC3";
  254.   cartridge_->cartgt[0x12] = "ROM+MBC3+RAM";
  255.   cartridge_->cartgt[0x13] = "ROM+MBC3+RAM+Battery";
  256.   cartridge_->cartgt[0x15] = "ROM+MBC4";
  257.   cartridge_->cartgt[0x16] = "ROM+MBC4+RAM";
  258.   cartridge_->cartgt[0x17] = "ROM+MBC4+RAM+Battery";
  259.   cartridge_->cartgt[0x19] = "ROM+MBC5";
  260.   cartridge_->cartgt[0x1A] = "ROM+MBC5+RAM";
  261.   cartridge_->cartgt[0x1B] = "ROM+MBC5+RAM+Battery";
  262.   cartridge_->cartgt[0x1C] = "ROM+MBC5+Rumble";
  263.   cartridge_->cartgt[0x1D] = "ROM+MBC5+RAM+Rumble";
  264.   cartridge_->cartgt[0x1E] = "ROM+MBC5+RAM+Battery+Rumble";
  265.   cartridge_->cartgt[0x22] = "ROM+MBC5+Tilt";
  266.   cartridge_->cartgt[0xFC] = "Nintendo Pocket Camera";
  267.   cartridge_->cartgt[0xFD] = "Bandai TAMA5";
  268.   cartridge_->cartgt[0xFE] = "Hudson HuC-3";
  269.   cartridge_->cartgt[0xFF] = "Hudson HuC-1";
  270.  
  271.   /* Settings old licensee desc init --*/
  272.   cartridge_->ancl[0x00] = "None";
  273.   cartridge_->ancl[0x01] = "Nintendo"; /* homepage:https://www.nintendo.com */
  274.   cartridge_->ancl[0x08] = "Capcom"; /* homepage:http://www.capcom.com*/
  275.   cartridge_->ancl[0x09] = "Hot B Games"; /* wiki:https://en.wikipedia.org/wiki/Category:Hot_B_games */
  276.   cartridge_->ancl[0x0A] = "Jaleco"; /* wiki:https://en.wikipedia.org/wiki/Jaleco*/
  277.   cartridge_->ancl[0x0B] = "Coconuts Japan"; /* misc link:https://www.genkivideogames.com/japanese_imported_video_games.asp?pagetoshow=search&keywordtext=Coconuts%20Japan&searchtype=publisher*/
  278.   cartridge_->ancl[0x0C] = "Elite Systems";/*wiki: https://en.wikipedia.org/wiki/Elite_Systems*/
  279.   cartridge_->ancl[0x13] = "ËA"; /*homepage: https://www.ea.com/zh-cn */
  280.   cartridge_->ancl[0x18] = "Hudson Soft"; /*homepage: http://www.hudsonsoft.net/what-we-do/ */
  281.   cartridge_->ancl[0x19] = "ITC Entertainment"; /*wiki: https://en.wikipedia.org/wiki/ITC_Entertainment */
  282.   cartridge_->ancl[0x1A] = "Yanoman"; /* MobyGames:https://www.mobygames.com/company/yanoman-corporation */
  283.   cartridge_->ancl[0x1D] = "Nippon Clary"; /* giantbomb:https://www.giantbomb.com/nippon-clary-business/3010-6837/ */
  284.   cartridge_->ancl[0x1F] = "Virgin"; /* wiki:https://en.wikipedia.org/wiki/Virgin_Interactive */
  285.                                              /* homepage: https://www.virgingames.com/quick-login */
  286.   cartridge_->ancl[0x24] = "PCM Complete"; /* https://segaretro.org/PCM_Complete | https://www.mobygames.com/company/pcm-complete */
  287.   cartridge_->ancl[0x25] = "San-X"; /* homepage http://www.san-x.jp*/
  288.   cartridge_->ancl[0x28] = "Kotobuki Systems";/*wiki: https://en.wikipedia.org/wiki/Kemco*/
  289.   cartridge_->ancl[0x29] = "SETA"; /*wiki: https://en.wikipedia.org/wiki/SETA_Corporation */
  290.   cartridge_->ancl[0x30] = "Atari,SA"; /*wiki: https://en.wikipedia.org/wiki/Atari,_SA */
  291.   cartridge_->ancl[0x31] = "Nintendo"; /* homepage:https://www.nintendo.com */
  292.   cartridge_->ancl[0x32] = "Bandai"; /*homepage: http://www.bandai.com */
  293.   cartridge_->ancl[0x33] = "GameBoyColor"; /*new licensee */
  294.   cartridge_->ancl[0x34] = "Konami"; /*homepage: https://www.konami.com/en/*/
  295.   cartridge_->ancl[0x35] = "Hector"; /*N/A */
  296.   cartridge_->ancl[0x38] = "Capcom"; /* homepage:http://www.capcom.com*/
  297.   cartridge_->ancl[0x39] = "Banpresto"; /* homepage:http://www.banpresto.jp/prize/0008.html*/
  298.   cartridge_->ancl[0x3C] = "Entertainment i"; /* truncated, see http://gbdev.gg8.se/wiki/articles/Gameboy_ROM_Header_Info#Licensee*/
  299.   cartridge_->ancl[0x3E] = "Gremlin"; /* wiki: https://en.wikipedia.org/wiki/Gremlin_Interactive */
  300.   cartridge_->ancl[0x41] = "Ubisoft"; /*homepage: https://www.ubisoft.com/en-US/ */
  301.   cartridge_->ancl[0x42] = "Atlus"; /*homepage: https://atlus.com*/
  302.   cartridge_->ancl[0x44] = "Malibu"; /*swiki: https://strategywiki.org/wiki/Category:Malibu*/
  303.   cartridge_->ancl[0x46] = "Angel"; /*N/A*/
  304.   cartridge_->ancl[0x47] = "Spectrum HoloByte"; /*wiki: https://en.wikipedia.org/wiki/Spectrum_HoloByte*/
  305.   cartridge_->ancl[0x49] = "Irem"; /* wiki: https://en.wikipedia.org/wiki/Irem */
  306.   cartridge_->ancl[0x4A] = "Virgin"; /* wiki:https://en.wikipedia.org/wiki/Virgin_Interactive */
  307.                                              /* homepage: https://www.virgingames.com/quick-login */
  308.   cartridge_->ancl[0x4D] = "Malibu"; /*swiki: https://strategywiki.org/wiki/Category:Malibu*/
  309.   cartridge_->ancl[0x4F] = "US.Gold"; /*wiki: https://en.wikipedia.org/wiki/U.S._Gold */
  310.   cartridge_->ancl[0x50] = "Absolute"; /*homepgae:http://www.absolutegamez.com */
  311.   cartridge_->ancl[0x51] = "Acclaim"; /*wiki: https://en.wikipedia.org/wiki/Acclaim_Games*/
  312.   cartridge_->ancl[0x52] = "Activision"; /*homepage: https://www.activision.com*/  
  313.   cartridge_->ancl[0x53] = "Sammy"; /*wiki: https://en.wikipedia.org/wiki/Sammy_Corporation*/
  314.   cartridge_->ancl[0x54] = "GameTek"; /*wiki: https://en.wikipedia.org/wiki/GameTek*/
  315.   cartridge_->ancl[0x55] = "Park Place"; /*maybe???: https://en.wikipedia.org/wiki/List_of_Jurassic_Park_video_games*/
  316.   cartridge_->ancl[0x56] = "LJN"; /*avgn: http://avgn.wikia.com/wiki/LJN*/  
  317.   cartridge_->ancl[0x57] = "MATCHBOX"; /*homepage: http://play.matchbox.com/en_US/*/
  318.   cartridge_->ancl[0x59] = "Milton Bradley"; /*wiki: https://en.wikipedia.org/wiki/Milton_Bradley_Company*/
  319.   cartridge_->ancl[0x5A] = "Mindscape"; /*wiki: https://en.wikipedia.org/wiki/Mindscape*/
  320.   cartridge_->ancl[0x5B] = "Romstar"; /*wiki: https://en.wikipedia.org/wiki/Romstar*/  
  321.   cartridge_->ancl[0x5C] = "Kaga Create"; /*wiki: https://en.wikipedia.org/wiki/Kaga_Create*/
  322.   cartridge_->ancl[0x5D] = "Tradewest"; /*wiki: https://en.wikipedia.org/wiki/Tradewest*/
  323.   cartridge_->ancl[0x60] = "Titus"; /*wiki: https://en.wikipedia.org/wiki/Titus_Interactive*/
  324.   cartridge_->ancl[0x61] = "Virgin"; /* wiki:https://en.wikipedia.org/wiki/Virgin_Interactive */
  325.                                              /* homepage: https://www.virgingames.com/quick-login */
  326.   cartridge_->ancl[0x67] = "Ocean"; /*wiki: https://en.wikipedia.org/wiki/Ocean_Software*/  
  327.   cartridge_->ancl[0x69] = "ËA"; /*homepage: https://www.ea.com/zh-cn */
  328.   cartridge_->ancl[0x6E] = "Elite Systems";/*wiki: https://en.wikipedia.org/wiki/Elite_Systems*/
  329.   cartridge_->ancl[0x6F] = "Electro Brain";/*wiki: https://en.wikipedia.org/wiki/Electro_Brain*/
  330.   cartridge_->ancl[0x70] = "Atari,SA"; /*wiki: https://en.wikipedia.org/wiki/Atari,_SA */
  331.   cartridge_->ancl[0x71] = "Interplay"; /*wiki: https://en.wikipedia.org/wiki/Interplay_Entertainment*/
  332.   cartridge_->ancl[0x72] = "Brøderbund"; /*moby: https://www.mobygames.com/company/brderbund-software-inc*/  
  333.   cartridge_->ancl[0x73] = "Sculptured"; /*maybe??: http://closinglogogroup.wikia.com/wiki/Sculptured_Software,_Inc.*/
  334.   cartridge_->ancl[0x75] = "SCi Games"; /*wiki: https://en.wikipedia.org/wiki/SCi_Games*/  
  335.   cartridge_->ancl[0x78] = "THQ"; /*source is:t*hq wiki: https://en.wikipedia.org/wiki/THQ*/
  336.   cartridge_->ancl[0x79] = "Accolade"; /*wiki: https://en.wikipedia.org/wiki/Accolade_(game_company)*/
  337.   cartridge_->ancl[0x7A] = "Triffix"; /*wiki: https://en.wikipedia.org/wiki/Triffix_Entertainment*/
  338.   cartridge_->ancl[0x7C] = "MicroProse"; /*homepage: http://www.microprose.com*/  
  339.   cartridge_->ancl[0x7F] = "Kemco";/*wiki: https://en.wikipedia.org/wiki/Kemco*/
  340.   cartridge_->ancl[0x80] = "Misawa"; /*nseen64: https://www.unseen64.net/tag/misawa-entertainment/*/
  341.   cartridge_->ancl[0x83] = "LOZC G"; /*wiki: https://en.wikipedia.org/wiki/Category:LOZC_G._Amusements_games*/
  342.   cartridge_->ancl[0x86] = "Tokuma Shoten"; /*wiki: https://en.wikipedia.org/wiki/Tokuma_Shoten*/  
  343.   cartridge_->ancl[0x8B] = "Blue Planet"; /*wiki: https://en.wikipedia.org/wiki/Blue_Planet_Software*/
  344.   cartridge_->ancl[0x8C] = "Tokai Communications"; /*wiki: https://en.wikipedia.org/wiki/Tokai_Communications*/
  345.   cartridge_->ancl[0x8E] = "APE Games"; /*homepage: http://www.apegames.com*/
  346.   cartridge_->ancl[0x8F] = "I'Max"; /*No find infos */  
  347.   cartridge_->ancl[0x91] = "Spike Chunsoft"; /*wiki: https://en.wikipedia.org/wiki/Spike_Chunsoft*/
  348.   cartridge_->ancl[0x92] = "Video System"; /*No find infos*/  
  349.   cartridge_->ancl[0x93] = "Tsuburava"; /*No find infos */
  350.   cartridge_->ancl[0x95] = "Varie"; /*wiki: https://en.wikipedia.org/wiki/Varie*/  
  351.   cartridge_->ancl[0x96] = "Yonezawa PR21"; /*wiki: https://en.wikipedia.org/wiki/Yonezawa_PR21*/
  352.   cartridge_->ancl[0x97] = "Kaneko"; /*wiki: https://en.wikipedia.org/wiki/Kaneko*/
  353.   cartridge_->ancl[0x99] = "Arcade"; /*wiki: https://en.wikipedia.org/wiki/Arcade_game*/
  354.   cartridge_->ancl[0x9A] = "Nihon Bussan"; /*wiki: https://en.wikipedia.org/wiki/Nihon_Bussan*/  
  355.   cartridge_->ancl[0x9B] = "Tecmo"; /*wiki: https://en.wikipedia.org/wiki/Tecmo*/
  356.   cartridge_->ancl[0x9C] = "Disney"; /*wiki: https://en.wikipedia.org/wiki/Walt_Disney_Imagineering*/
  357.   cartridge_->ancl[0x9D] = "Banpresto"; /* homepage:http://www.banpresto.jp/prize/0008.html*/
  358.   cartridge_->ancl[0x9F] = "Nova"; /*No find infos*/
  359.   cartridge_->ancl[0xA1] = "Hori Electric"; /* https://www.giantbomb.com/hori-electric-co-ltd/3010-5917/*/  
  360.   cartridge_->ancl[0xA2] = "Bandai"; /*homepage: http://www.bandai.com */
  361.   cartridge_->ancl[0xA4] = "Konami"; /*homepage: https://www.konami.com/en/*/  
  362.   cartridge_->ancl[0xA6] = "Kawada"; /*No find infos*/
  363.   cartridge_->ancl[0xA7] = "Takara"; /*wiki: https://en.wikipedia.org/wiki/Takara**/
  364.   cartridge_->ancl[0xA9] = "Technōs Japan"; /*wiki: https://en.wikipedia.org/wiki/Technōs_Japan*/
  365.   cartridge_->ancl[0xAA] = "Brøderbund"; /*moby: https://www.mobygames.com/company/brderbund-software-inc*/  
  366.   cartridge_->ancl[0xAC] = "Toei Animation"; /*homepage: http://toei-animation-usa.com*/  
  367.   cartridge_->ancl[0xAD] = "Toho"; /*No find infos*/
  368.   cartridge_->ancl[0xAF] = "Namco"; /*homepage: https://www.bandainamcoent.com*/  
  369.   cartridge_->ancl[0xB0] = "Acclaim"; /*wiki: https://en.wikipedia.org/wiki/Acclaim_Games*/
  370.   cartridge_->ancl[0xB1] = "ASCII|Nexoft"; /*moby: http://www.mobygames.com/company/nexoft-corporation*/
  371.   cartridge_->ancl[0xB2] = "Bandai"; /*homepage: http://www.bandai.com */
  372.   cartridge_->ancl[0xB4] = "Enix"; /*homepage: https://en.wikipedia.org/wiki/Enix*/  
  373.   cartridge_->ancl[0xB6] = "HAL"; /*wiki: https://en.wikipedia.org/wiki/HAL_Laboratory*/
  374.   cartridge_->ancl[0xB7] = "SNK"; /*wiki: https://en.wikipedia.org/wiki/SNK*/
  375.   cartridge_->ancl[0xB9] = "Pony Canyon"; /*wiki: https://en.wikipedia.org/wiki/Pony_Canyon*/
  376.   cartridge_->ancl[0xBA] = "Culture Brain"; /*wiki: https://en.wikipedia.org/wiki/Culture_Brain*/  
  377.   cartridge_->ancl[0xBB] = "Sunsoft"; /*wiki: https://en.wikipedia.org/wiki/Sunsoft*/
  378.   cartridge_->ancl[0xBD] = "Sony Imagesoft"; /*wiki: https://en.wikipedia.org/wiki/Sony_Imagesoft*/
  379.   cartridge_->ancl[0xBF] = "Sammy"; /*wiki: https://en.wikipedia.org/wiki/Sammy_Corporation*/
  380.   cartridge_->ancl[0xC0] = "Taito"; /*wiki: https://en.wikipedia.org/wiki/Taito*/  
  381.   cartridge_->ancl[0xC2] = "Kemco";/*wiki: https://en.wikipedia.org/wiki/Kemco*/
  382.   cartridge_->ancl[0xC3] = "Square"; /*wiki: https://en.wikipedia.org/wiki/Square_(company)*/
  383.   cartridge_->ancl[0xC4] = "Tokuma Shoten"; /*wiki: https://en.wikipedia.org/wiki/Tokuma_Shoten*/  
  384.   cartridge_->ancl[0xC5] = "Data East"; /*wiki: https://en.wikipedia.org/wiki/Data_East*/  
  385.   cartridge_->ancl[0xC6] = "Tonkin House"; /*wiki: https://en.wikipedia.org/wiki/Category:Tonkin_House_games*/
  386.   cartridge_->ancl[0xC8] = "Koei"; /*wiki: https://en.wikipedia.org/wiki/Koei*/  
  387.   cartridge_->ancl[0xC9] = "UFL"; /*No find infos*/
  388.   cartridge_->ancl[0xCA] = "Ultra"; /*wiki: https://en.wikipedia.org/wiki/Ultra_Games*/
  389.   cartridge_->ancl[0xCB] = "VAP"; /*wiki: https://en.wikipedia.org/wiki/VAP_%28company%29*/  
  390.   cartridge_->ancl[0xCC] = "Use"; /*No Find infos*/
  391.   cartridge_->ancl[0xCD] = "Meldac"; /*wiki: https://en.wikipedia.org/wiki/Meldac*/
  392.   cartridge_->ancl[0xCE] = "Pony Canyon"; /*wiki: https://en.wikipedia.org/wiki/Pony_Canyon*/
  393.   cartridge_->ancl[0xCF] = "Angel"; /*N/A*/
  394.   cartridge_->ancl[0xD0] = "Taito"; /*wiki: https://en.wikipedia.org/wiki/Taito*/
  395.   cartridge_->ancl[0xD1] = "SOFEL"; /*wiki: https://en.wikipedia.org/wiki/SOFEL*/
  396.   cartridge_->ancl[0xD2] = "Quest"; /*No find infos*/  
  397.   cartridge_->ancl[0xD3] = "Sigma Enterprises"; /*maybe?: http://sigma-enterprises.com*/
  398.   cartridge_->ancl[0xD4] = "Ask Kodansha"; /*https://www.giantbomb.com/ask-kodansha/3010-3528/*/
  399.   cartridge_->ancl[0xD6] = "Kaga Create"; /*wiki: https://en.wikipedia.org/wiki/Kaga_Create*/
  400.   cartridge_->ancl[0xD7] = "Copya Systems"; /*wiki: https://en.wikipedia.org/wiki/Category:Copya_Systems_games*/
  401.   cartridge_->ancl[0xD9] = "Banpresto"; /* homepage:http://www.banpresto.jp/prize/0008.html*/
  402.   cartridge_->ancl[0xDA] = "Tomy"; /*wiki: https://en.wikipedia.org/wiki/Tomy*/  
  403.   cartridge_->ancl[0xDB] = "LJN"; /*avgn: http://avgn.wikia.com/wiki/LJN*/  
  404.   cartridge_->ancl[0xDD] = "Masaya Games"; /*wiki: https://en.wikipedia.org/wiki/Masaya_Games*/
  405.   cartridge_->ancl[0xDE] = "Human"; /*No find infos */  
  406.   cartridge_->ancl[0xDF] = "Altron"; /*wiki: https://en.wikipedia.org/wiki/Altron*/
  407.   cartridge_->ancl[0xE0] = "Jaleco"; /* wiki:https://en.wikipedia.org/wiki/Jaleco*/
  408.   cartridge_->ancl[0xE1] = "Towa Chiki"; /*wiki: https://en.wikipedia.org/wiki/Towa_Chiki*/  
  409.   cartridge_->ancl[0xE2] = "Uutaka"; /*No find infos*/
  410.   cartridge_->ancl[0xE3] = "Varie"; /*wiki: https://en.wikipedia.org/wiki/Varie*/  
  411.   cartridge_->ancl[0xE5] = "Epoch"; /*wiki: https://en.wikipedia.org/wiki/Epoch_Co.*/
  412.   cartridge_->ancl[0xE7] = "Athena"; /*wiki: https://en.wikipedia.org/wiki/Athena_(company)*/
  413.   cartridge_->ancl[0xE8] = "Asmik ACE"; /*wiki: https://en.wikipedia.org/wiki/Asmik_Ace*/  
  414.   cartridge_->ancl[0xE9] = "Natsume"; /*Homepage: http://www.natsume.com*/
  415.   cartridge_->ancl[0xEA] = "King_Records"; /*wiki: https://en.wikipedia.org/wiki/King_Records_(Japan)*/
  416.   cartridge_->ancl[0xEB] = "Atlus"; /*homepage: https://atlus.com*/
  417.   cartridge_->ancl[0xEC] = "Epic Records"; /*wiki: https://en.wikipedia.org/wiki/Epic_Records_Japan*/
  418.   cartridge_->ancl[0xEE] = "IGS"; /*wiki: https://en.wikipedia.org/wiki/International_Games_System*/  
  419.   cartridge_->ancl[0xF0] = "a wave"; /*No find infos*/
  420.   cartridge_->ancl[0xF3] = "Extreme Entertainment"; /**Moby: https://www.mobygames.com/company/extreme-entertainment-group-inc */
  421.   cartridge_->ancl[0xFF] = "LJN"; /*avgn: http://avgn.wikia.com/wiki/LJN*/
  422.  
  423.   /* Settings new licensee desc init --*/
  424.   cartridge_->curl[0] = "None";
  425.   cartridge_->curl[1] = "Nintendo"; /* homepage:https://www.nintendo.com */
  426.   cartridge_->curl[8] = "Capcom"; /* homepage:http://www.capcom.com*/
  427.   cartridge_->curl[13] = "ËA"; /*homepage: https://www.ea.com/zh-cn */
  428.   cartridge_->curl[18] = "Hudson Soft"; /*homepage: http://www.hudsonsoft.net/what-we-do/ */
  429.   cartridge_->curl[19] = "B-AI";  
  430.   cartridge_->curl[20] = "KSS"; /* wiki: https://en.wikipedia.org/wiki/KSS_(company) */
  431.   cartridge_->curl[22] = "POW";                                      /* homepage: https://www.virgingames.com/quick-login */
  432.   cartridge_->curl[24] = "PCM Complete"; /* https://segaretro.org/PCM_Complete | https://www.mobygames.com/company/pcm-complete */
  433.   cartridge_->curl[25] = "San-X"; /* homepage http://www.san-x.jp*/
  434.   cartridge_->curl[28] = "Kemco Japan";/*homepage: https://kemco-games.com/global/index.html*/
  435.   cartridge_->curl[29] = "SETA"; /*wiki: https://en.wikipedia.org/wiki/SETA_Corporation */
  436.   cartridge_->curl[30] = "Viacom"; /*wiki: https://en.wikipedia.org/wiki/Viacom */
  437.   cartridge_->curl[31] = "Nintendo"; /* homepage:https://www.nintendo.com */
  438.   cartridge_->curl[32] = "Bandai"; /*bandia? homepage: http://www.bandai.com */
  439.   cartridge_->curl[33] = "Ocean"; /*wiki: https://en.wikipedia.org/wiki/Ocean_Software*/  
  440.   cartridge_->curl[34] = "Konami"; /*homepage: https://www.konami.com/en/*/
  441.   cartridge_->curl[35] = "Hector"; /*N/A */
  442.   cartridge_->curl[37] = "Taito"; /*wiki: https://en.wikipedia.org/wiki/Taito*/  
  443.   cartridge_->curl[38] = "Hudson"; /*homepage: http://www.hudsonsoft.net/what-we-do/ */
  444.   cartridge_->curl[39] = "Banpresto"; /* homepage:http://www.banpresto.jp/prize/0008.html*/
  445.   cartridge_->curl[41] = "Ubisoft"; /*homepage: https://www.ubisoft.com/en-US/ */
  446.   cartridge_->curl[42] = "Atlus"; /*homepage: https://atlus.com*/
  447.   cartridge_->curl[44] = "Malibu"; /*swiki: https://strategywiki.org/wiki/Category:Malibu*/
  448.   cartridge_->curl[46] = "Angel"; /*N/A*/
  449.   cartridge_->curl[47] = "Pullet-Proof";
  450.   cartridge_->curl[49] = "Irem"; /* wiki: https://en.wikipedia.org/wiki/Irem */
  451.   cartridge_->curl[50] = "Absolute"; /*homepgae:http://www.absolutegamez.com */
  452.   cartridge_->curl[51] = "Acclaim"; /*wiki: https://en.wikipedia.org/wiki/Acclaim_Games*/
  453.   cartridge_->curl[52] = "Activision"; /*homepage: https://www.activision.com*/  
  454.   cartridge_->curl[53] = "American Sammy"; /*wiki: https://en.wikipedia.org/wiki/Sammy_Corporation*/
  455.   cartridge_->curl[54] = "Konami"; /*homepage: https://www.konami.com/en/*/
  456.   cartridge_->curl[55] = "Hi-TECH";
  457.   cartridge_->curl[56] = "LJN"; /*avgn: http://avgn.wikia.com/wiki/LJN*/  
  458.   cartridge_->curl[57] = "MATCHBOX"; /*homepage: http://play.matchbox.com/en_US/*/
  459.   cartridge_->curl[58] = "Mattel"; /*wiki: https://en.wikipedia.org/wiki/Mattel*/
  460.   cartridge_->curl[59] = "Milton Bradley"; /*wiki: https://en.wikipedia.org/wiki/Milton_Bradley_Company*/
  461.   cartridge_->curl[60] = "Titus"; /*wiki: https://en.wikipedia.org/wiki/Titus_Interactive*/
  462.   cartridge_->curl[61] = "Virgin"; /* wiki:https://en.wikipedia.org/wiki/Virgin_Interactive */
  463.                                              /* homepage: https://www.virgingames.com/quick-login */                                        
  464.   cartridge_->curl[64] = "LucasArts";/*wiki: https://en.wikipedia.org/wiki/LucasArts*/
  465.   cartridge_->curl[67] = "Ocean"; /*wiki: https://en.wikipedia.org/wiki/Ocean_Software*/  
  466.   cartridge_->curl[69] = "ËA"; /*homepage: https://www.ea.com/zh-cn */
  467.   cartridge_->curl[70] = "Atari,SA"; /*wiki: https://en.wikipedia.org/wiki/Atari,_SA */
  468.   cartridge_->curl[71] = "Interplay"; /*wiki: https://en.wikipedia.org/wiki/Interplay_Entertainment*/
  469.   cartridge_->curl[72] = "Brøderbund"; /*moby: https://www.mobygames.com/company/brderbund-software-inc*/  
  470.   cartridge_->curl[73] = "Sculptured"; /*maybe??: http://closinglogogroup.wikia.com/wiki/Sculptured_Software,_Inc.*/
  471.   cartridge_->curl[75] = "SCi Games"; /*wiki: https://en.wikipedia.org/wiki/SCi_Games*/  
  472.   cartridge_->curl[78] = "THQ"; /*source is:t*hq wiki: https://en.wikipedia.org/wiki/THQ*/
  473.   cartridge_->curl[79] = "Accolade"; /*wiki: https://en.wikipedia.org/wiki/Accolade_(game_company)*/
  474.   cartridge_->curl[80] = "Misawa"; /*nseen64: https://www.unseen64.net/tag/misawa-entertainment/*/
  475.   cartridge_->curl[83] = "LOZC G"; /*wiki: https://en.wikipedia.org/wiki/Category:LOZC_G._Amusements_games*/
  476.   cartridge_->curl[86] = "Tokuma Shoten"; /*wiki: https://en.wikipedia.org/wiki/Tokuma_Shoten*/  
  477.   cartridge_->curl[87] = "Tsukuda Original"; /*https://segaretro.org/Tsukuda_Original*/
  478.   cartridge_->curl[91] = "Spike Chunsoft"; /*wiki: https://en.wikipedia.org/wiki/Spike_Chunsoft*/
  479.   cartridge_->curl[92] = "Video System"; /*No find infos*/  
  480.   cartridge_->curl[93] = "Ocean"; /*wiki: https://en.wikipedia.org/wiki/Ocean_Software*/  
  481.   cartridge_->curl[95] = "Varie"; /*wiki: https://en.wikipedia.org/wiki/Varie*/  
  482.   cartridge_->curl[96] = "Yonezawa PR21"; /*wiki: https://en.wikipedia.org/wiki/Yonezawa_PR21*/
  483.   cartridge_->curl[97] = "Kaneko"; /*wiki: https://en.wikipedia.org/wiki/Kaneko*/
  484.   cartridge_->curl[99] = "Pack-In-Video"; /*wiki: https://en.wikipedia.org/wiki/Pack-In-Video*/
  485.  
  486.   return 0;
  487. }
  488.  
  489. void cartridge_uninit (struct cartridge **cartridge) {
  490.   struct cartridge *cartridge_;
  491.   assert (cartridge != ks_null);
  492.   cartridge_ = *cartridge;
  493.   *cartridge = ks_null;
  494.   if (cartridge_ != ks_null)
  495.     free (cartridge_);
  496.   else ;
  497. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement