From a28589c79b619a93aa5dd438a9135ef1226e2b0d Mon Sep 17 00:00:00 2001 From: sin365 <353374337@qq.com> Date: Wed, 14 Aug 2024 10:36:59 +0800 Subject: [PATCH 1/3] api --- README_WEBAPI.md | 130 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 88 insertions(+), 42 deletions(-) diff --git a/README_WEBAPI.md b/README_WEBAPI.md index c72766c7..a0c9842e 100644 --- a/README_WEBAPI.md +++ b/README_WEBAPI.md @@ -6,57 +6,72 @@ ### Nes游戏列表 ``` -{WebHost}/api/NesRomList?Page=<页码>&PageSize=<单大小>&SearchKey=<可选的模糊查询关键字> +{WebHost}/api/NesRomList?Page=<页码>&PageSize=<单大小>&SearchKey=<可选的模糊查询关键字>&PType=<平台枚举(int)>>ype=<游戏类型枚举> ``` Request: ``` -/api/NesRomList?Page=1&PageSize=5&SearchKey=热血 +http://emu.axibug.com/api/NesRomList?Page=0&PageSize=5&SearchKey=%热血&PType=1>ype=1 ``` Response: ``` { - "page": 1, - "maxPage": 5, - "resultAllCount": 27, + "page": 0, + "maxPage": 2, + "resultAllCount": 6, "gameList": [ { - "id": 584, + "id": 190, + "romName": "热血物语", + "gType": "ACT", + "desc": "设有拳击及体力槽的热血系列节目。是带有RPG色彩的街头斗殴节目。", + "url": "roms/fcrom/Downtown%20-%20Nekketsu%20Monogatari%20(J).zip", + "imgUrl": "images/fcrom/Downtown%20-%20Nekketsu%20Monogatari%20(J).JPG", "hash": "", - "romName": "热血格斗传说", - "url": "images/fcrom/Nekketsu%20Kakutou%20Densetsu%20(J).JPG", - "imgUrl": "roms/fcrom/Nekketsu%20Kakutou%20Densetsu%20(J).zip" + "stars": 0 + }, + { + "id": 460, + "romName": "热血时代剧(热血道中记)", + "gType": "ACT", + "desc": "以古代日本为舞台展开的热血系列节目。设有多种必杀技可使用。", + "url": "roms/fcrom/Kunio%20Kun%20No%20Jidaigekidayo%20Zenin%20Shuugou%20(J).zip", + "imgUrl": "images/fcrom/Kunio%20Kun%20No%20Jidaigekidayo%20Zenin%20Shuugou%20(J).JPG", + "hash": "", + "stars": 0 }, { "id": 585, - "hash": "", "romName": "热血硬派", - "url": "images/fcrom/Nekketsu%20Kouha%20-%20Kunio%20Kun%20(J).JPG", - "imgUrl": "roms/fcrom/Nekketsu%20Kouha%20-%20Kunio%20Kun%20(J).zip" + "gType": "ACT", + "desc": "有着多种模式的格斗节目。各版面均有不同的趣味性。是热血系列游戏最初的作品。", + "url": "roms/fcrom/Nekketsu%20Kouha%20-%20Kunio%20Kun%20(J).zip", + "imgUrl": "images/fcrom/Nekketsu%20Kouha%20-%20Kunio%20Kun%20(J).JPG", + "hash": "", + "stars": 0 }, { - "id": 586, + "id": 674, + "romName": "热血物语(美版)", + "gType": "ACT", + "desc": "设有拳击及体力槽的热血系列节目。是带有RPG色彩的街头斗殴节目。", + "url": "roms/fcrom/River%20City%20Brawl%20(J).zip", + "imgUrl": "images/fcrom/River%20City%20Brawl%20(J).JPG", "hash": "", - "romName": "热血高校躲避球", - "url": "images/fcrom/Nekketsu%20Koukou%20-%20Dodgeball%20Bu%20(J).JPG", - "imgUrl": "roms/fcrom/Nekketsu%20Koukou%20-%20Dodgeball%20Bu%20(J).zip" + "stars": 0 }, { - "id": 587, + "id": 826, + "romName": "热血时代剧美版(热血道中记美版)", + "gType": "ACT", + "desc": "以古代日本为舞台展开的热血系列节目。设有多种必杀技可使用。", + "url": "roms/fcrom/Technos%20Samurai%20-%20Downtown%20Special%20(J).zip", + "imgUrl": "images/fcrom/Technos%20Samurai%20-%20Downtown%20Special%20(J).JPG", "hash": "", - "romName": "热血高校-足球篇", - "url": "images/fcrom/Nekketsu%20Koukou%20Dodgeball%20Bu%20-%20Soccer%20Hen%20(J).JPG", - "imgUrl": "roms/fcrom/Nekketsu%20Koukou%20Dodgeball%20Bu%20-%20Soccer%20Hen%20(J).zip" - }, - { - "id": 588, - "hash": "", - "romName": "热血新记录", - "url": "images/fcrom/Nekketsu%20Shinkiroku%20-%20Harukanaru%20Kin%20Medal%20(J).JPG", - "imgUrl": "roms/fcrom/Nekketsu%20Shinkiroku%20-%20Harukanaru%20Kin%20Medal%20(J).zip" + "stars": 0 } ] } @@ -65,20 +80,51 @@ Response: 序列化C#实体类示例 ``` -class Resp_GameList -{ - public int Page { get; set; } - public int MaxPage { get; set; } - public int ResultAllCount { get; set; } - public List GameList { get; set; } -} + enum PlatformType : byte + { + All = 0, + Nes, + } -public class Resp_RomInfo -{ - public int ID { get; set; } - public string Hash { get; set; } - public string RomName { get; set;} - public string Url { get; set; } - public string ImgUrl { get; set; } -} + enum GameType : byte + { + NONE = 0, + ACT, + ARPG, + AVG, + ETC, + FTG, + PUZ, + RAC, + RPG, + SLG, + SPG, + SRPG, + STG, + TAB, + /// + /// 合卡 + /// + ALLINONE, + } + + class Resp_GameList + { + public int page { get; set; } + public int maxPage { get; set; } + public int resultAllCount { get; set; } + public List gameList { get; set; } + } + + public class Resp_RomInfo + { + public int id { get; set; } + public string romName { get; set;} + public string gType { get; set; } + public string desc { get; set; } + public string url { get; set; } + public string imgUrl { get; set; } + public string hash { get; set; } + public int stars { get; set; } + } ``` \ No newline at end of file From b23d1665591e630b13aae48939eabe3ea7b210a3 Mon Sep 17 00:00:00 2001 From: sin365 <353374337@qq.com> Date: Fri, 16 Aug 2024 10:09:45 +0800 Subject: [PATCH 2/3] fixed web api --- .../Controllers/ApiController.cs | 98 ++++++++++++++----- 1 file changed, 75 insertions(+), 23 deletions(-) diff --git a/AxibugEmuOnline.Web/Controllers/ApiController.cs b/AxibugEmuOnline.Web/Controllers/ApiController.cs index a0f04725..b35c20f5 100644 --- a/AxibugEmuOnline.Web/Controllers/ApiController.cs +++ b/AxibugEmuOnline.Web/Controllers/ApiController.cs @@ -14,14 +14,32 @@ namespace AxibugEmuOnline.Web.Controllers } [HttpGet] - public JsonResult NesRomList(string SearchKey,int Page, int PageSize) + public JsonResult NesRomList(string SearchKey,int Ptype,int GType,int Page, int PageSize) { string searchPattern = $"%{SearchKey}%"; Resp_GameList resp = new Resp_GameList(); - resp.GameList = new List(); - using (MySqlConnection conn = Haoyue_SQLPoolManager.DequeueSQLConn("NesRomList")) + resp.gameList = new List(); + MySqlConnection conn = Haoyue_SQLPoolManager.DequeueSQLConn("NesRomList"); { - string query = "SELECT count(id) FROM romlist_nes where `Name` like ?searchPattern "; + + GameType SearchGType = (GameType)GType; + + string GameTypeCond = ""; + switch (SearchGType) + { + case GameType.NONE: + GameTypeCond = string.Empty; + break; + case GameType.ALLINONE: + GameTypeCond = $" and GameType = 'Ͽ' "; + break; + default: + GameTypeCond = $" and GameType = '{SearchGType.ToString()}' "; + break; + } + + + string query = "SELECT count(id) FROM romlist_nes where `Name` like ?searchPattern " + GameTypeCond; using (var command = new MySqlCommand(query, conn)) { // òֵ @@ -31,14 +49,14 @@ namespace AxibugEmuOnline.Web.Controllers { while (reader.Read()) { - resp.ResultAllCount = reader.GetInt32(0); - resp.Page = Page; - resp.MaxPage = resp.ResultAllCount / PageSize; + resp.resultAllCount = reader.GetInt32(0); + resp.page = Page; + resp.maxPage = (int)Math.Ceiling((float)resp.resultAllCount / PageSize); } } } - query = "SELECT id,`Name`,RomUrl,ImgUrl FROM romlist_nes where `Name` like ?searchPattern LIMIT ?offset, ?pageSize;"; + query = $"SELECT id,`Name`,GameType,Note,RomUrl,ImgUrl,`Hash` FROM romlist_nes where `Name` like ?searchPattern {GameTypeCond} LIMIT ?offset, ?pageSize;"; using (var command = new MySqlCommand(query, conn)) { // òֵ @@ -50,12 +68,16 @@ namespace AxibugEmuOnline.Web.Controllers { while (reader.Read()) { - resp.GameList.Add(new Resp_RomInfo() { - ID = reader.GetInt32(0), - RomName = reader.GetString(1), - Hash = string.Empty, - ImgUrl = reader.GetString(2), - Url = reader.GetString(3), + resp.gameList.Add(new Resp_RomInfo() + { + id = reader.GetInt32(0), + romName = !reader.IsDBNull(1) ? reader.GetString(1) : string.Empty, + gType = !reader.IsDBNull(2) ? reader.GetString(2) : string.Empty, + desc = !reader.IsDBNull(3) ? reader.GetString(3) : string.Empty, + url = !reader.IsDBNull(4) ? reader.GetString(4) : string.Empty, + imgUrl = !reader.IsDBNull(5) ? reader.GetString(5) : string.Empty, + hash = !reader.IsDBNull(6) ? reader.GetString(6) : string.Empty, + stars = 0, }); } } @@ -65,22 +87,52 @@ namespace AxibugEmuOnline.Web.Controllers return new JsonResult(resp); } + enum PlatformType : byte + { + All = 0, + Nes, + } + + enum GameType : byte + { + NONE = 0, + ACT, + ARPG, + AVG, + ETC, + FTG, + PUZ, + RAC, + RPG, + SLG, + SPG, + SRPG, + STG, + TAB, + /// + /// Ͽ + /// + ALLINONE, + } class Resp_GameList { - public int Page { get; set; } - public int MaxPage { get; set; } - public int ResultAllCount { get; set; } - public List GameList { get; set; } + public int page { get; set; } + public int maxPage { get; set; } + public int resultAllCount { get; set; } + public List gameList { get; set; } } public class Resp_RomInfo { - public int ID { get; set; } - public string Hash { get; set; } - public string RomName { get; set;} - public string Url { get; set; } - public string ImgUrl { get; set; } + public int id { get; set; } + public string romName { get; set;} + public string gType { get; set; } + public string desc { get; set; } + public string url { get; set; } + public string imgUrl { get; set; } + public string hash { get; set; } + public int stars { get; set; } } } } From 289c95ace495d4749c28946797fcfd108406cf49 Mon Sep 17 00:00:00 2001 From: sin365 <353374337@qq.com> Date: Fri, 16 Aug 2024 10:20:00 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E8=80=83=E8=99=91PSV=20Unity=E4=BD=8E?= =?UTF-8?q?=E7=89=88=E6=9C=AC=20=E4=BF=AE=E6=94=B9=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Assets/Script/AppAxibugEmuOnline.cs | 2 - .../Assets/Script/Manager/AppEmu.cs | 9 +- .../Assets/Script/Manager/AppLogin.cs | 4 +- .../Assets/Script/Manager/LogManager.cs | 6 +- .../Script/Manager/RomLib/EnumPlatform.cs | 8 +- .../Assets/Script/Manager/RomLib/RomFile.cs | 1 - .../Assets/Script/Manager/RomLib/RomLib.cs | 7 +- .../Assets/Script/Manager/UserDataManager.cs | 5 +- .../Script/NesEmulator/AudioProvider.cs | 3 +- .../Assets/Script/NesEmulator/CoreDebuger.cs | 2 - .../Script/NesEmulator/CoreSupporter.cs | 2 - .../Assets/Script/NesEmulator/NesEmulator.cs | 1 - .../Script/NesEmulator/PaletteDefine.cs | 9 +- .../Assets/Script/NesEmulator/RomDB.cs | 4 +- .../Assets/VirtualNes.Core/APU.cs | 8 +- .../Assets/VirtualNes.Core/ApuEX/APU_FME7.cs | 2 - .../VirtualNes.Core/ApuEX/APU_INTERFACE.cs | 2 +- .../VirtualNes.Core/ApuEX/APU_INTERNAL.cs | 4 +- .../Assets/VirtualNes.Core/ApuEX/APU_MMC5.cs | 4 +- .../Assets/VirtualNes.Core/ApuEX/APU_VRC6.cs | 32 +- .../Assets/VirtualNes.Core/CPU.cs | 1 - .../CoreLibs/Emu2413/Emu2413.cs | 2 - .../CoreLibs/ISoundDataBuffer.cs | 8 +- .../VirtualNes.Core/CoreLibs/MemoryUtility.cs | 1 - .../Assets/VirtualNes.Core/Debuger.cs | 4 +- .../Assets/VirtualNes.Core/MMU.cs | 3 +- .../Assets/VirtualNes.Core/Mapper/EEPROM.cs | 4 +- .../Assets/VirtualNes.Core/Mapper/Mapper.cs | 34 +- .../VirtualNes.Core/Mapper/Mapper000.cs | 69 +- .../VirtualNes.Core/Mapper/Mapper001.cs | 5 +- .../VirtualNes.Core/Mapper/Mapper002.cs | 106 ++- .../VirtualNes.Core/Mapper/Mapper003.cs | 5 +- .../VirtualNes.Core/Mapper/Mapper004.cs | 5 +- .../VirtualNes.Core/Mapper/Mapper005.cs | 1 - .../VirtualNes.Core/Mapper/Mapper006.cs | 178 ++--- .../VirtualNes.Core/Mapper/Mapper007.cs | 74 +- .../VirtualNes.Core/Mapper/Mapper008.cs | 35 +- .../VirtualNes.Core/Mapper/Mapper009.cs | 218 +++--- .../VirtualNes.Core/Mapper/Mapper010.cs | 220 +++--- .../VirtualNes.Core/Mapper/Mapper011.cs | 53 +- .../VirtualNes.Core/Mapper/Mapper012.cs | 612 +++++++-------- .../VirtualNes.Core/Mapper/Mapper013.cs | 37 +- .../VirtualNes.Core/Mapper/Mapper015.cs | 157 ++-- .../VirtualNes.Core/Mapper/Mapper017.cs | 214 +++--- .../VirtualNes.Core/Mapper/Mapper018.cs | 488 ++++++------ .../VirtualNes.Core/Mapper/Mapper019.cs | 5 +- .../VirtualNes.Core/Mapper/Mapper021.cs | 438 +++++------ .../VirtualNes.Core/Mapper/Mapper022.cs | 113 ++- .../VirtualNes.Core/Mapper/Mapper023.cs | 448 +++++------ .../VirtualNes.Core/Mapper/Mapper024.cs | 280 +++---- .../VirtualNes.Core/Mapper/Mapper025.cs | 482 ++++++------ .../VirtualNes.Core/Mapper/Mapper026.cs | 302 ++++---- .../VirtualNes.Core/Mapper/Mapper027.cs | 388 +++++----- .../VirtualNes.Core/Mapper/Mapper032.cs | 190 +++-- .../VirtualNes.Core/Mapper/Mapper033.cs | 374 +++++----- .../VirtualNes.Core/Mapper/Mapper034.cs | 75 +- .../VirtualNes.Core/Mapper/Mapper035.cs | 19 +- .../VirtualNes.Core/Mapper/Mapper040.cs | 142 ++-- .../VirtualNes.Core/Mapper/Mapper041.cs | 116 ++- .../VirtualNes.Core/Mapper/Mapper042.cs | 163 ++-- .../VirtualNes.Core/Mapper/Mapper043.cs | 232 +++--- .../VirtualNes.Core/Mapper/Mapper044.cs | 524 ++++++------- .../VirtualNes.Core/Mapper/Mapper045.cs | 704 +++++++++--------- .../VirtualNes.Core/Mapper/Mapper046.cs | 135 ++-- .../VirtualNes.Core/Mapper/Mapper047.cs | 495 ++++++------ .../VirtualNes.Core/Mapper/Mapper048.cs | 236 +++--- .../VirtualNes.Core/Mapper/Mapper050.cs | 162 ++-- .../VirtualNes.Core/Mapper/Mapper051.cs | 180 +++-- .../VirtualNes.Core/Mapper/Mapper057.cs | 131 ++-- .../VirtualNes.Core/Mapper/Mapper058.cs | 72 +- .../VirtualNes.Core/Mapper/Mapper060.cs | 97 ++- .../VirtualNes.Core/Mapper/Mapper061.cs | 62 +- .../VirtualNes.Core/Mapper/Mapper062.cs | 78 +- .../VirtualNes.Core/Mapper/Mapper064.cs | 515 +++++++------ .../VirtualNes.Core/Mapper/Mapper065.cs | 321 ++++---- .../VirtualNes.Core/Mapper/Mapper066.cs | 64 +- .../VirtualNes.Core/Mapper/Mapper067.cs | 227 +++--- .../VirtualNes.Core/Mapper/Mapper068.cs | 246 +++--- .../VirtualNes.Core/Mapper/Mapper069.cs | 295 ++++---- .../VirtualNes.Core/Mapper/Mapper070.cs | 91 ++- .../VirtualNes.Core/Mapper/Mapper071.cs | 76 +- .../VirtualNes.Core/Mapper/Mapper072.cs | 7 +- .../VirtualNes.Core/Mapper/Mapper073.cs | 151 ++-- .../VirtualNes.Core/Mapper/Mapper074.cs | 569 +++++++------- .../VirtualNes.Core/Mapper/Mapper075.cs | 135 ++-- .../VirtualNes.Core/Mapper/Mapper076.cs | 129 ++-- .../VirtualNes.Core/Mapper/Mapper077.cs | 46 +- .../VirtualNes.Core/Mapper/Mapper078.cs | 58 +- .../VirtualNes.Core/Mapper/Mapper079.cs | 52 +- .../VirtualNes.Core/Mapper/Mapper080.cs | 174 +++-- .../VirtualNes.Core/Mapper/Mapper082.cs | 179 +++-- .../VirtualNes.Core/Mapper/Mapper083.cs | 425 ++++++----- .../VirtualNes.Core/Mapper/Mapper085.cs | 391 +++++----- .../VirtualNes.Core/Mapper/Mapper086.cs | 5 +- .../VirtualNes.Core/Mapper/Mapper087.cs | 34 +- .../VirtualNes.Core/Mapper/Mapper088.cs | 183 +++-- .../VirtualNes.Core/Mapper/Mapper089.cs | 50 +- .../VirtualNes.Core/Mapper/Mapper090.cs | 10 +- .../VirtualNes.Core/Mapper/Mapper091.cs | 164 ++-- .../VirtualNes.Core/Mapper/Mapper092.cs | 8 +- .../VirtualNes.Core/Mapper/Mapper093.cs | 50 +- .../VirtualNes.Core/Mapper/Mapper094.cs | 42 +- .../VirtualNes.Core/Mapper/Mapper095.cs | 327 ++++---- .../VirtualNes.Core/Mapper/Mapper096.cs | 105 ++- .../VirtualNes.Core/Mapper/Mapper097.cs | 54 +- .../VirtualNes.Core/Mapper/Mapper099.cs | 142 ++-- .../VirtualNes.Core/Mapper/Mapper100.cs | 553 +++++++------- .../VirtualNes.Core/Mapper/Mapper101.cs | 54 +- .../VirtualNes.Core/Mapper/Mapper105.cs | 353 +++++---- .../VirtualNes.Core/Mapper/Mapper107.cs | 38 +- .../VirtualNes.Core/Mapper/Mapper108.cs | 36 +- .../VirtualNes.Core/Mapper/Mapper109.cs | 219 +++--- .../VirtualNes.Core/Mapper/Mapper110.cs | 141 ++-- .../VirtualNes.Core/Mapper/Mapper111.cs | 6 +- .../VirtualNes.Core/Mapper/Mapper112.cs | 292 ++++---- .../VirtualNes.Core/Mapper/Mapper113.cs | 128 ++-- .../VirtualNes.Core/Mapper/Mapper114.cs | 8 +- .../VirtualNes.Core/Mapper/Mapper115.cs | 23 +- .../VirtualNes.Core/Mapper/Mapper116.cs | 10 +- .../VirtualNes.Core/Mapper/Mapper117.cs | 6 +- .../VirtualNes.Core/Mapper/Mapper118.cs | 7 +- .../VirtualNes.Core/Mapper/Mapper119.cs | 7 +- .../VirtualNes.Core/Mapper/Mapper122.cs | 6 +- .../VirtualNes.Core/Mapper/Mapper133.cs | 6 +- .../VirtualNes.Core/Mapper/Mapper134.cs | 5 +- .../VirtualNes.Core/Mapper/Mapper135.cs | 5 +- .../VirtualNes.Core/Mapper/Mapper140.cs | 6 +- .../VirtualNes.Core/Mapper/Mapper142.cs | 7 +- .../VirtualNes.Core/Mapper/Mapper151.cs | 6 +- .../VirtualNes.Core/Mapper/Mapper160.cs | 6 +- .../VirtualNes.Core/Mapper/Mapper162.cs | 8 +- .../VirtualNes.Core/Mapper/Mapper163.cs | 25 +- .../VirtualNes.Core/Mapper/Mapper164.cs | 8 +- .../VirtualNes.Core/Mapper/Mapper165.cs | 8 +- .../VirtualNes.Core/Mapper/Mapper167.cs | 5 +- .../VirtualNes.Core/Mapper/Mapper175.cs | 29 +- .../VirtualNes.Core/Mapper/Mapper176.cs | 9 +- .../VirtualNes.Core/Mapper/Mapper178.cs | 20 +- .../VirtualNes.Core/Mapper/Mapper180.cs | 6 +- .../VirtualNes.Core/Mapper/Mapper181.cs | 6 +- .../VirtualNes.Core/Mapper/Mapper182.cs | 6 +- .../VirtualNes.Core/Mapper/Mapper183.cs | 7 +- .../VirtualNes.Core/Mapper/Mapper185.cs | 6 +- .../VirtualNes.Core/Mapper/Mapper187.cs | 7 +- .../VirtualNes.Core/Mapper/Mapper188.cs | 6 +- .../VirtualNes.Core/Mapper/Mapper189.cs | 7 +- .../VirtualNes.Core/Mapper/Mapper190.cs | 6 +- .../VirtualNes.Core/Mapper/Mapper191.cs | 6 +- .../VirtualNes.Core/Mapper/Mapper192.cs | 336 +++++---- .../VirtualNes.Core/Mapper/Mapper193.cs | 4 - .../VirtualNes.Core/Mapper/Mapper194.cs | 6 +- .../VirtualNes.Core/Mapper/Mapper195.cs | 599 ++++++++------- .../VirtualNes.Core/Mapper/Mapper198.cs | 4 +- .../VirtualNes.Core/Mapper/Mapper199.cs | 6 +- .../VirtualNes.Core/Mapper/Mapper200.cs | 6 +- .../VirtualNes.Core/Mapper/Mapper201.cs | 5 +- .../VirtualNes.Core/Mapper/Mapper202.cs | 6 +- .../VirtualNes.Core/Mapper/Mapper216.cs | 40 +- .../VirtualNes.Core/Mapper/Mapper222.cs | 6 +- .../VirtualNes.Core/Mapper/Mapper225.cs | 5 +- .../VirtualNes.Core/Mapper/Mapper226.cs | 5 +- .../VirtualNes.Core/Mapper/Mapper227.cs | 5 +- .../VirtualNes.Core/Mapper/Mapper228.cs | 5 +- .../VirtualNes.Core/Mapper/Mapper229.cs | 9 +- .../VirtualNes.Core/Mapper/Mapper230.cs | 5 +- .../VirtualNes.Core/Mapper/Mapper231.cs | 5 +- .../VirtualNes.Core/Mapper/Mapper232.cs | 5 +- .../VirtualNes.Core/Mapper/Mapper233.cs | 3 - .../VirtualNes.Core/Mapper/Mapper234.cs | 5 +- .../VirtualNes.Core/Mapper/Mapper235.cs | 6 +- .../VirtualNes.Core/Mapper/Mapper236.cs | 5 +- .../VirtualNes.Core/Mapper/Mapper240.cs | 6 +- .../VirtualNes.Core/Mapper/Mapper241.cs | 6 +- .../VirtualNes.Core/Mapper/Mapper242.cs | 6 +- .../VirtualNes.Core/Mapper/Mapper243.cs | 5 +- .../VirtualNes.Core/Mapper/Mapper244.cs | 6 +- .../VirtualNes.Core/Mapper/Mapper246.cs | 6 +- .../VirtualNes.Core/Mapper/Mapper248.cs | 6 +- .../VirtualNes.Core/Mapper/Mapper249.cs | 13 +- .../VirtualNes.Core/Mapper/Mapper251.cs | 8 +- .../VirtualNes.Core/Mapper/Mapper252.cs | 10 +- .../VirtualNes.Core/Mapper/Mapper254.cs | 6 +- .../VirtualNes.Core/Mapper/Mapper255.cs | 13 +- .../Assets/VirtualNes.Core/Mapper/_Mapper.cs | 8 +- .../Assets/VirtualNes.Core/NES.cs | 7 - .../Assets/VirtualNes.Core/PAD.cs | 6 +- .../Assets/VirtualNes.Core/PPU.cs | 4 +- .../VirtualNes.Core/PadEX/EXPAD_Zapper.cs | 8 +- .../Supporter/EmulatorConfig/CfgController.cs | 2 +- .../Supporter/EmulatorConfig/CfgMovie.cs | 4 +- .../Supporter/EmulatorConfig/CfgPath.cs | 4 +- .../EmulatorConfig/EmulatorConfig.cs | 4 +- 192 files changed, 8746 insertions(+), 9193 deletions(-) diff --git a/AxibugEmuOnline.Client/Assets/Script/AppAxibugEmuOnline.cs b/AxibugEmuOnline.Client/Assets/Script/AppAxibugEmuOnline.cs index 7fdf35f1..f5b21d49 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppAxibugEmuOnline.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppAxibugEmuOnline.cs @@ -1,9 +1,7 @@ using AxibugEmuOnline.Client.Manager; using AxibugEmuOnline.Client.Network; -using System; using System.Collections; using UnityEngine; -using static AxibugEmuOnline.Client.Manager.LogManager; namespace AxibugEmuOnline.Client.ClientCore { diff --git a/AxibugEmuOnline.Client/Assets/Script/Manager/AppEmu.cs b/AxibugEmuOnline.Client/Assets/Script/Manager/AppEmu.cs index 46f3d2c7..a9a26400 100644 --- a/AxibugEmuOnline.Client/Assets/Script/Manager/AppEmu.cs +++ b/AxibugEmuOnline.Client/Assets/Script/Manager/AppEmu.cs @@ -1,10 +1,7 @@ -using System.IO; -using UnityEngine; - -namespace AxibugEmuOnline.Client.Manager +namespace AxibugEmuOnline.Client.Manager { - public class AppEmu + public class AppEmu { - + } } diff --git a/AxibugEmuOnline.Client/Assets/Script/Manager/AppLogin.cs b/AxibugEmuOnline.Client/Assets/Script/Manager/AppLogin.cs index 4185a62f..2cbc4296 100644 --- a/AxibugEmuOnline.Client/Assets/Script/Manager/AppLogin.cs +++ b/AxibugEmuOnline.Client/Assets/Script/Manager/AppLogin.cs @@ -17,7 +17,7 @@ namespace AxibugEmuOnline.Client.Manager public void Login() { AppAxibugEmuOnline.log.Debug("-->Login"); - if(string.IsNullOrEmpty(LastLoginGuid)) + if (string.IsNullOrEmpty(LastLoginGuid)) LastLoginGuid = Guid.NewGuid().ToString(); AppAxibugEmuOnline.user.userdata.Account = LastLoginGuid; @@ -35,7 +35,7 @@ namespace AxibugEmuOnline.Client.Manager if (msg.Status == LoginResultStatus.Ok) { AppAxibugEmuOnline.log.Info("登录成功"); - AppAxibugEmuOnline.user.InitMainUserData(AppAxibugEmuOnline.user.userdata.Account,msg.UID); + AppAxibugEmuOnline.user.InitMainUserData(AppAxibugEmuOnline.user.userdata.Account, msg.UID); } else { diff --git a/AxibugEmuOnline.Client/Assets/Script/Manager/LogManager.cs b/AxibugEmuOnline.Client/Assets/Script/Manager/LogManager.cs index 63268871..26024cc5 100644 --- a/AxibugEmuOnline.Client/Assets/Script/Manager/LogManager.cs +++ b/AxibugEmuOnline.Client/Assets/Script/Manager/LogManager.cs @@ -2,7 +2,7 @@ { public class LogManager { - public enum E_LogType:byte + public enum E_LogType : byte { Info = 0, Debug = 1, @@ -13,7 +13,7 @@ /// 日志 /// /// - public delegate void OnLogHandler(int debuglv,string msg); + public delegate void OnLogHandler(int debuglv, string msg); /// /// 内部输出 @@ -40,7 +40,7 @@ Log(E_LogType.Error, str); } - public void Log(E_LogType logtype,string str) + public void Log(E_LogType logtype, string str) { OnLog?.Invoke((int)logtype, str); } diff --git a/AxibugEmuOnline.Client/Assets/Script/Manager/RomLib/EnumPlatform.cs b/AxibugEmuOnline.Client/Assets/Script/Manager/RomLib/EnumPlatform.cs index d2c8aa5e..ddbd5346 100644 --- a/AxibugEmuOnline.Client/Assets/Script/Manager/RomLib/EnumPlatform.cs +++ b/AxibugEmuOnline.Client/Assets/Script/Manager/RomLib/EnumPlatform.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace AxibugEmuOnline.Client +namespace AxibugEmuOnline.Client { public enum EnumPlatform { diff --git a/AxibugEmuOnline.Client/Assets/Script/Manager/RomLib/RomFile.cs b/AxibugEmuOnline.Client/Assets/Script/Manager/RomLib/RomFile.cs index e334da0f..5c44b9d6 100644 --- a/AxibugEmuOnline.Client/Assets/Script/Manager/RomLib/RomFile.cs +++ b/AxibugEmuOnline.Client/Assets/Script/Manager/RomLib/RomFile.cs @@ -3,7 +3,6 @@ using ICSharpCode.SharpZipLib.Zip; using System; using System.Collections; using System.IO; -using System.Linq; using UnityEngine; using UnityEngine.Networking; diff --git a/AxibugEmuOnline.Client/Assets/Script/Manager/RomLib/RomLib.cs b/AxibugEmuOnline.Client/Assets/Script/Manager/RomLib/RomLib.cs index 94047f2a..638dc028 100644 --- a/AxibugEmuOnline.Client/Assets/Script/Manager/RomLib/RomLib.cs +++ b/AxibugEmuOnline.Client/Assets/Script/Manager/RomLib/RomLib.cs @@ -11,7 +11,8 @@ namespace AxibugEmuOnline.Client public RomFile GetNesRomFile(string romFileName) { - nesRomFileNameMapper.TryGetValue(romFileName, out RomFile romFile); + RomFile romFile; + nesRomFileNameMapper.TryGetValue(romFileName, out romFile); return romFile; } @@ -29,8 +30,8 @@ namespace AxibugEmuOnline.Client for (int i = 0; i < romList.gameList.Count; i++) { var webData = romList.gameList[i]; - - nesRomFileIdMapper.TryGetValue(webData.id, out var targetRomFile); + RomFile targetRomFile; + nesRomFileIdMapper.TryGetValue(webData.id, out targetRomFile); if (targetRomFile == null) { targetRomFile = new RomFile(EnumPlatform.NES); diff --git a/AxibugEmuOnline.Client/Assets/Script/Manager/UserDataManager.cs b/AxibugEmuOnline.Client/Assets/Script/Manager/UserDataManager.cs index 68167392..a2d2bb60 100644 --- a/AxibugEmuOnline.Client/Assets/Script/Manager/UserDataManager.cs +++ b/AxibugEmuOnline.Client/Assets/Script/Manager/UserDataManager.cs @@ -1,5 +1,4 @@ using AxibugEmuOnline.Client.ClientCore; -using AxibugProtobuf; namespace AxibugEmuOnline.Client.Manager { @@ -21,10 +20,10 @@ namespace AxibugEmuOnline.Client.Manager //注册重连成功事件,以便后续自动登录 AppAxibugEmuOnline.networkHelper.OnReConnected += OnReConnected; } - public MainUserDataBase userdata { get;private set; } = new MainUserDataBase(); + public MainUserDataBase userdata { get; private set; } = new MainUserDataBase(); public bool IsLoggedIn => userdata.IsLoggedIn; - public void InitMainUserData(string UName,long UID) + public void InitMainUserData(string UName, long UID) { userdata.Account = UName; userdata.IsLoggedIn = true; diff --git a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/AudioProvider.cs b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/AudioProvider.cs index eebb2c91..614eb64b 100644 --- a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/AudioProvider.cs +++ b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/AudioProvider.cs @@ -33,7 +33,8 @@ namespace AxibugEmuOnline.Client for (int i = 0; i < data.Length; i += step) { float rawFloat = 0; - if (_buffer.TryRead(out byte rawData)) + byte rawData; + if (_buffer.TryRead(out rawData)) rawFloat = rawData / 255f; data[i] = rawFloat; diff --git a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/CoreDebuger.cs b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/CoreDebuger.cs index cdf1191b..86d827aa 100644 --- a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/CoreDebuger.cs +++ b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/CoreDebuger.cs @@ -1,5 +1,3 @@ -using System.Collections; -using System.Collections.Generic; using UnityEngine; using VirtualNes.Core.Debug; diff --git a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/CoreSupporter.cs b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/CoreSupporter.cs index 99e195b1..31c63cbd 100644 --- a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/CoreSupporter.cs +++ b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/CoreSupporter.cs @@ -1,8 +1,6 @@ using AxibugEmuOnline.Client.ClientCore; using System; using System.IO; -using System.Linq; -using System.Xml.Linq; using UnityEngine; using VirtualNes.Core; diff --git a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/NesEmulator.cs b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/NesEmulator.cs index 5341fbb8..c5699c4d 100644 --- a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/NesEmulator.cs +++ b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/NesEmulator.cs @@ -1,7 +1,6 @@ using AxibugEmuOnline.Client.ClientCore; using System; using System.IO; -using System.Linq; using System.Xml.Linq; using UnityEngine; using VirtualNes.Core; diff --git a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/PaletteDefine.cs b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/PaletteDefine.cs index 9a5a2f03..7a6a5a01 100644 --- a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/PaletteDefine.cs +++ b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/PaletteDefine.cs @@ -1,11 +1,4 @@ -using Codice.CM.Client.Differences; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using UnityEngine; -using VirtualNes.Core; +using VirtualNes.Core; namespace AxibugEmuOnline.Client { diff --git a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/RomDB.cs b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/RomDB.cs index 600e76d6..2af7f26d 100644 --- a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/RomDB.cs +++ b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/RomDB.cs @@ -31,8 +31,8 @@ namespace AxibugEmuOnline.Client.ClientCore crc_Info_mapper[info.CRC] = info; } } - - if (crc_Info_mapper.TryGetValue(crc, out var romInfo)) + RomInfo romInfo; + if (crc_Info_mapper.TryGetValue(crc, out romInfo)) { mapperNo = romInfo.Mapper; return true; diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/APU.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/APU.cs index 51acc7b6..a95d338e 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/APU.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/APU.cs @@ -1,9 +1,5 @@ -using Codice.CM.Client.Differences; + using System; -using System.IO; -using System.Security.Principal; -using UnityEngine; -using VirtualNes.Core; using VirtualNes.Core.Debug; namespace VirtualNes.Core @@ -80,7 +76,7 @@ namespace VirtualNes.Core int nBits = Supporter.Config.sound.nBits; uint dwLength = (uint)(dwSize / (nBits / 8)); int output; - QUEUEDATA q = default; + QUEUEDATA q = new QUEUEDATA(); uint writetime; var pSoundBuf = m_SoundBuffer; diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_FME7.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_FME7.cs index a7d59ed5..ae0b7e38 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_FME7.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_FME7.cs @@ -1,6 +1,4 @@ using System; -using static VirtualNes.Core.APU_INTERNAL; -using System.Net; namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_INTERFACE.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_INTERFACE.cs index b4ff65f5..391406c4 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_INTERFACE.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_INTERFACE.cs @@ -22,7 +22,7 @@ public virtual int GetStateSize() { return 0; } public virtual void SaveState(byte[] p) { } public virtual void LoadState(byte[] p) { } - + public static int INT2FIX(int x) { return x << 16; diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_INTERNAL.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_INTERNAL.cs index 9ed23721..6942744a 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_INTERNAL.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_INTERNAL.cs @@ -1,7 +1,5 @@ -using Codice.CM.Client.Differences; + using System; -using System.Runtime.CompilerServices; -using UnityEngine; namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_MMC5.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_MMC5.cs index 7ba567fd..d1807d1a 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_MMC5.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_MMC5.cs @@ -1,4 +1,4 @@ -using Codice.CM.Client.Differences; + using System; namespace VirtualNes.Core @@ -387,7 +387,7 @@ namespace VirtualNes.Core Array.Clear(dummy, 0, dummy.Length); vbl_length = 0; } - } + } public class RECTANGLE { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_VRC6.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_VRC6.cs index cfb7b75a..1b0845e7 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_VRC6.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/ApuEX/APU_VRC6.cs @@ -263,16 +263,16 @@ namespace VirtualNes.Core public void ZeroMemory() { Array.Clear(reg, 0, reg.Length); - enable = default; - gate = default; - volume = default; + enable = 0; + gate = 0; + volume = 0; - phaseacc = default; - freq = default; - output_vol = default; + phaseacc = 0; + freq = 0; + output_vol = 0; - adder = default; - duty_pos = default; + adder = 0; + duty_pos = 0; } } @@ -294,16 +294,16 @@ namespace VirtualNes.Core public void ZeroMemory() { Array.Clear(reg, 0, reg.Length); - enable = default; - volume = default; + enable = 0; + volume = 0; - phaseacc = default; - freq = default; - output_vol = default; + phaseacc = 0; + freq = 0; + output_vol = 0; - adder = default; - accum = default; - phaseaccum = default; + adder = 0; + accum = 0; + phaseaccum = 0; } } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CPU.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CPU.cs index 26527e7f..edf83a56 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CPU.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CPU.cs @@ -1,7 +1,6 @@ #undef DPCM_SYNCCLOCK using System; -using VirtualNes.Core.Debug; namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CoreLibs/Emu2413/Emu2413.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CoreLibs/Emu2413/Emu2413.cs index bcea6fd2..377b9ea0 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CoreLibs/Emu2413/Emu2413.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CoreLibs/Emu2413/Emu2413.cs @@ -1,6 +1,4 @@ using System; -using System.Runtime.ConstrainedExecution; -using System.Runtime.Remoting.Lifetime; namespace VirtualNes.Core.Emu2413 { public static class Emu2413API diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CoreLibs/ISoundDataBuffer.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CoreLibs/ISoundDataBuffer.cs index 7994134a..fe405f9e 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CoreLibs/ISoundDataBuffer.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CoreLibs/ISoundDataBuffer.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace VirtualNes.Core +namespace VirtualNes.Core { public interface ISoundDataBuffer { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CoreLibs/MemoryUtility.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CoreLibs/MemoryUtility.cs index f8bd0810..484aefa0 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CoreLibs/MemoryUtility.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/CoreLibs/MemoryUtility.cs @@ -1,5 +1,4 @@ using System; -using System.Runtime.CompilerServices; namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Debuger.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Debuger.cs index 21ab49a4..8845558c 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Debuger.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Debuger.cs @@ -1,6 +1,4 @@ -using System.Collections.Generic; - -namespace VirtualNes.Core.Debug +namespace VirtualNes.Core.Debug { public static class Debuger { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/MMU.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/MMU.cs index da7fe189..391254cb 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/MMU.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/MMU.cs @@ -1,5 +1,4 @@ -using System; -using VirtualNes.Core; +using VirtualNes.Core; namespace VirtualNes { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/EEPROM.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/EEPROM.cs index 5a8ae766..e81a4105 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/EEPROM.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/EEPROM.cs @@ -1,6 +1,4 @@ -using System; - -namespace VirtualNes.Core +namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper.cs index b34a0f0f..d0b32b40 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper.cs @@ -81,23 +81,23 @@ namespace VirtualNes.Core { //todo : 实现加载mapper switch (no) - { - case 0: return new Mapper000(parent); - case 1: return new Mapper001(parent); - case 2: return new Mapper002(parent); - case 3: return new Mapper003(parent); - case 4: return new Mapper004(parent); - case 5: return new Mapper005(parent); - case 6: return new Mapper006(parent); - case 7: return new Mapper007(parent); - case 8: return new Mapper008(parent); - case 9: return new Mapper009(parent); - case 10: return new Mapper010(parent); - case 11: return new Mapper011(parent); - case 12: return new Mapper012(parent); - case 13: return new Mapper013(parent); - case 15: return new Mapper015(parent); - case 16: return new Mapper016(parent); + { + case 0: return new Mapper000(parent); + case 1: return new Mapper001(parent); + case 2: return new Mapper002(parent); + case 3: return new Mapper003(parent); + case 4: return new Mapper004(parent); + case 5: return new Mapper005(parent); + case 6: return new Mapper006(parent); + case 7: return new Mapper007(parent); + case 8: return new Mapper008(parent); + case 9: return new Mapper009(parent); + case 10: return new Mapper010(parent); + case 11: return new Mapper011(parent); + case 12: return new Mapper012(parent); + case 13: return new Mapper013(parent); + case 15: return new Mapper015(parent); + case 16: return new Mapper016(parent); case 17: return new Mapper017(parent); case 18: return new Mapper018(parent); case 19: return new Mapper019(parent); diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper000.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper000.cs index 049e0f0c..520f3f95 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper000.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper000.cs @@ -2,46 +2,43 @@ // Mapper000 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper000 : Mapper - { + public class Mapper000 : Mapper + { - public Mapper000(NES parent) : base(parent) { } + public Mapper000(NES parent) : base(parent) { } - public override void Reset() - { - switch (PROM_16K_SIZE) - { - default: - case 1: // 16K only - SetPROM_16K_Bank(4, 0); - SetPROM_16K_Bank(6, 0); - break; - case 2: // 32K - SetPROM_32K_Bank(0); - break; - } + public override void Reset() + { + switch (PROM_16K_SIZE) + { + default: + case 1: // 16K only + SetPROM_16K_Bank(4, 0); + SetPROM_16K_Bank(6, 0); + break; + case 2: // 32K + SetPROM_32K_Bank(0); + break; + } - uint crc = nes.rom.GetPROM_CRC(); - if (crc == 0x4e7db5af) - { // Circus Charlie(J) - nes.SetRenderMethod(EnumRenderMethod.POST_RENDER); - } - if (crc == 0x57970078) - { // F-1 Race(J) - nes.SetRenderMethod(EnumRenderMethod.POST_RENDER); - } - if (crc == 0xaf2bbcbc // Mach Rider(JU) - || crc == 0x3acd4bf1) - { // Mach Rider(Alt)(JU) - nes.SetRenderMethod(EnumRenderMethod.POST_RENDER); - } - } - } + uint crc = nes.rom.GetPROM_CRC(); + if (crc == 0x4e7db5af) + { // Circus Charlie(J) + nes.SetRenderMethod(EnumRenderMethod.POST_RENDER); + } + if (crc == 0x57970078) + { // F-1 Race(J) + nes.SetRenderMethod(EnumRenderMethod.POST_RENDER); + } + if (crc == 0xaf2bbcbc // Mach Rider(JU) + || crc == 0x3acd4bf1) + { // Mach Rider(Alt)(JU) + nes.SetRenderMethod(EnumRenderMethod.POST_RENDER); + } + } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper001.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper001.cs index fd0324a4..9447bb56 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper001.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper001.cs @@ -2,10 +2,9 @@ // Mapper001 Nintendo MMC1 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper002.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper002.cs index ece6fd47..2b18704b 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper002.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper002.cs @@ -2,71 +2,69 @@ // Mapper002 UNROM // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper002 : Mapper - { + public class Mapper002 : Mapper + { - BYTE patch; - public Mapper002(NES parent) : base(parent) { } + BYTE patch; + public Mapper002(NES parent) : base(parent) { } - public override void Reset() - { - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + public override void Reset() + { + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - patch = 0; + patch = 0; - uint crc = nes.rom.GetPROM_CRC(); - // if( crc == 0x322c9b09 ) { // Metal Gear (Alt)(J) - //// nes.SetFrameIRQmode( FALSE ); - // } - // if( crc == 0xe7a3867b ) { // Dragon Quest 2(Alt)(J) - // nes.SetFrameIRQmode( FALSE ); - // } - //// if( crc == 0x9622fbd9 ) { // Ballblazer(J) - //// patch = 0; - //// } - if (crc == 0x8c3d54e8 // Ikari(J) - || crc == 0x655efeed // Ikari Warriors(U) - || crc == 0x538218b2) - { // Ikari Warriors(E) - patch = 1; - } + uint crc = nes.rom.GetPROM_CRC(); + // if( crc == 0x322c9b09 ) { // Metal Gear (Alt)(J) + //// nes.SetFrameIRQmode( FALSE ); + // } + // if( crc == 0xe7a3867b ) { // Dragon Quest 2(Alt)(J) + // nes.SetFrameIRQmode( FALSE ); + // } + //// if( crc == 0x9622fbd9 ) { // Ballblazer(J) + //// patch = 0; + //// } + if (crc == 0x8c3d54e8 // Ikari(J) + || crc == 0x655efeed // Ikari Warriors(U) + || crc == 0x538218b2) + { // Ikari Warriors(E) + patch = 1; + } - if (crc == 0xb20c1030) - { // Shanghai(J)(original) - patch = 2; - } - } + if (crc == 0xb20c1030) + { // Shanghai(J)(original) + patch = 2; + } + } - //void Mapper002::WriteLow(WORD addr, BYTE data) - public override void WriteLow(ushort addr, byte data) - { - if (!nes.rom.IsSAVERAM()) - { - if (addr >= 0x5000 && patch == 1) - SetPROM_16K_Bank(4, data); - } - else - { - base.WriteLow(addr, data); - } - } + //void Mapper002::WriteLow(WORD addr, BYTE data) + public override void WriteLow(ushort addr, byte data) + { + if (!nes.rom.IsSAVERAM()) + { + if (addr >= 0x5000 && patch == 1) + SetPROM_16K_Bank(4, data); + } + else + { + base.WriteLow(addr, data); + } + } - //void Mapper002::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - if (patch != 2) - SetPROM_16K_Bank(4, data); - else - SetPROM_16K_Bank(4, data >> 4); - } + //void Mapper002::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + if (patch != 2) + SetPROM_16K_Bank(4, data); + else + SetPROM_16K_Bank(4, data >> 4); + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper003.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper003.cs index 28501b19..f9579868 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper003.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper003.cs @@ -2,10 +2,7 @@ // Mapper003 CNROM // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper004.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper004.cs index 0106263f..59d786e3 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper004.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper004.cs @@ -1,7 +1,4 @@ -using Codice.CM.Client.Differences; -using System; - -namespace VirtualNes.Core +namespace VirtualNes.Core { public class Mapper004 : Mapper { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper005.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper005.cs index b5f15c17..9b786918 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper005.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper005.cs @@ -1,7 +1,6 @@ ////////////////////////////////////////////////////////////////////////// // Mapper005 Nintendo MMC5 // ////////////////////////////////////////////////////////////////////////// -using System; using static VirtualNes.Core.CPU; using static VirtualNes.Core.PPU; using static VirtualNes.MMU; diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper006.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper006.cs index d6cbedc2..81608819 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper006.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper006.cs @@ -1,112 +1,112 @@ ////////////////////////////////////////////////////////////////////////// // Mapper006 FFE F4xxx // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { - public class Mapper006 : Mapper - { - BYTE irq_enable; - INT irq_counter; - public Mapper006(NES parent) : base(parent) { } + public class Mapper006 : Mapper + { + BYTE irq_enable; + INT irq_counter; + public Mapper006(NES parent) : base(parent) { } - public override void Reset() - { - SetPROM_32K_Bank(0, 1, 14, 15); + public override void Reset() + { + SetPROM_32K_Bank(0, 1, 14, 15); - if (VROM_1K_SIZE != 0) - { - SetVROM_8K_Bank(0); - } - else - { - SetCRAM_8K_Bank(0); - } + if (VROM_1K_SIZE != 0) + { + SetVROM_8K_Bank(0); + } + else + { + SetCRAM_8K_Bank(0); + } - irq_enable = 0; - irq_counter = 0; - } + irq_enable = 0; + irq_counter = 0; + } - //void Mapper006::WriteLow(WORD addr, BYTE data) - public override void WriteLow(ushort addr, byte data) - { - switch (addr) - { - case 0x42FE: - if ((data & 0x10) != 0) SetVRAM_Mirror(VRAM_MIRROR4H); - else SetVRAM_Mirror(VRAM_MIRROR4L); - break; - case 0x42FF: - if ((data & 0x10) != 0) SetVRAM_Mirror(VRAM_HMIRROR); - else SetVRAM_Mirror(VRAM_VMIRROR); - break; + //void Mapper006::WriteLow(WORD addr, BYTE data) + public override void WriteLow(ushort addr, byte data) + { + switch (addr) + { + case 0x42FE: + if ((data & 0x10) != 0) SetVRAM_Mirror(VRAM_MIRROR4H); + else SetVRAM_Mirror(VRAM_MIRROR4L); + break; + case 0x42FF: + if ((data & 0x10) != 0) SetVRAM_Mirror(VRAM_HMIRROR); + else SetVRAM_Mirror(VRAM_VMIRROR); + break; - case 0x4501: - irq_enable = 0; + case 0x4501: + irq_enable = 0; - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; - case 0x4502: - irq_counter = (irq_counter & 0xFF00) | data; - break; - case 0x4503: - irq_counter = (irq_counter & 0x00FF) | ((INT)data << 8); - irq_enable = 0xFF; + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; + case 0x4502: + irq_counter = (irq_counter & 0xFF00) | data; + break; + case 0x4503: + irq_counter = (irq_counter & 0x00FF) | ((INT)data << 8); + irq_enable = 0xFF; - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; - default: - base.WriteLow(addr, data); - break; - } - } + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; + default: + base.WriteLow(addr, data); + break; + } + } - //void Mapper006::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - SetPROM_16K_Bank(4, (data & 0x3C) >> 2); - SetCRAM_8K_Bank(data & 0x03); - } + //void Mapper006::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + SetPROM_16K_Bank(4, (data & 0x3C) >> 2); + SetCRAM_8K_Bank(data & 0x03); + } - //void Mapper006::HSync(INT scanline) - public override void HSync(int scanline) - { - if (irq_enable != 0) - { - irq_counter += 133; - if (irq_counter >= 0xFFFF) - { - // nes.cpu.IRQ(); - irq_counter = 0; + //void Mapper006::HSync(INT scanline) + public override void HSync(int scanline) + { + if (irq_enable != 0) + { + irq_counter += 133; + if (irq_counter >= 0xFFFF) + { + // nes.cpu.IRQ(); + irq_counter = 0; - nes.cpu.SetIRQ(IRQ_MAPPER); - } - } - } + nes.cpu.SetIRQ(IRQ_MAPPER); + } + } + } - //void Mapper006::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - //p[0] = irq_enable; - //*(INT*)&p[1] = irq_counter; - } + //void Mapper006::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + //p[0] = irq_enable; + //*(INT*)&p[1] = irq_counter; + } - //void Mapper006::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - //irq_enable = p[0]; - //irq_counter = *(INT*)&p[1]; - } + //void Mapper006::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + //irq_enable = p[0]; + //irq_counter = *(INT*)&p[1]; + } - public override bool IsStateSave() - { - return true; - } - } + public override bool IsStateSave() + { + return true; + } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper007.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper007.cs index cb29ea06..56316d3d 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper007.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper007.cs @@ -2,58 +2,54 @@ // Mapper007 AOROM/AMROM // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using Codice.CM.Client.Differences; -using UnityEngine.UIElements; namespace VirtualNes.Core { public class Mapper007 : Mapper { - BYTE patch; - public Mapper007(NES parent) : base(parent) { } + BYTE patch; + public Mapper007(NES parent) : base(parent) { } public override void Reset() - { - patch = 0; + { + patch = 0; - SetPROM_32K_Bank(0); - SetVRAM_Mirror(VRAM_MIRROR4L); + SetPROM_32K_Bank(0); + SetVRAM_Mirror(VRAM_MIRROR4L); - uint crc = nes.rom.GetPROM_CRC(); - if (crc == 0x3c9fe649) - { // WWF Wrestlemania Challenge(U) - SetVRAM_Mirror(VRAM_VMIRROR); - patch = 1; - } - if (crc == 0x09874777) - { // Marble Madness(U) - nes.SetRenderMethod( EnumRenderMethod.TILE_RENDER); - } + uint crc = nes.rom.GetPROM_CRC(); + if (crc == 0x3c9fe649) + { // WWF Wrestlemania Challenge(U) + SetVRAM_Mirror(VRAM_VMIRROR); + patch = 1; + } + if (crc == 0x09874777) + { // Marble Madness(U) + nes.SetRenderMethod(EnumRenderMethod.TILE_RENDER); + } - if (crc == 0x279710DC // Battletoads (U) - || crc == 0xCEB65B06) - { // Battletoads Double Dragon (U) - nes.SetRenderMethod( EnumRenderMethod.PRE_ALL_RENDER); - //::memset(WRAM, 0, sizeof(WRAM)); - MemoryUtility.ZEROMEMORY(WRAM, WRAM.Length); - } - } + if (crc == 0x279710DC // Battletoads (U) + || crc == 0xCEB65B06) + { // Battletoads Double Dragon (U) + nes.SetRenderMethod(EnumRenderMethod.PRE_ALL_RENDER); + //::memset(WRAM, 0, sizeof(WRAM)); + MemoryUtility.ZEROMEMORY(WRAM, WRAM.Length); + } + } - //void Mapper007::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - SetPROM_32K_Bank(data & 0x07); + //void Mapper007::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + SetPROM_32K_Bank(data & 0x07); - if (patch!=0) - { - if ((data & 0x10)!=0) SetVRAM_Mirror(VRAM_MIRROR4H); - else SetVRAM_Mirror(VRAM_MIRROR4L); - } - } + if (patch != 0) + { + if ((data & 0x10) != 0) SetVRAM_Mirror(VRAM_MIRROR4H); + else SetVRAM_Mirror(VRAM_MIRROR4L); + } + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper008.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper008.cs index 90834d66..4c532799 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper008.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper008.cs @@ -2,31 +2,28 @@ // Mapper008 FFE F3xxx // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper008 : Mapper - { + public class Mapper008 : Mapper + { - public Mapper008(NES parent) : base(parent) { } + public Mapper008(NES parent) : base(parent) { } - public override void Reset() - { - SetPROM_32K_Bank(0, 1, 2, 3); - SetVROM_8K_Bank(0); - } + public override void Reset() + { + SetPROM_32K_Bank(0, 1, 2, 3); + SetVROM_8K_Bank(0); + } - //void Mapper008::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - SetPROM_16K_Bank(4, (data & 0xF8) >> 3); - SetVROM_8K_Bank(data & 0x07); - } + //void Mapper008::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + SetPROM_16K_Bank(4, (data & 0xF8) >> 3); + SetVROM_8K_Bank(data & 0x07); + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper009.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper009.cs index 5dccb25d..ead96c69 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper009.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper009.cs @@ -2,128 +2,126 @@ // Mapper009 Nintendo MMC2 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper009 : Mapper - { - BYTE[] reg = new byte[4]; - BYTE latch_a, latch_b; + public class Mapper009 : Mapper + { + BYTE[] reg = new byte[4]; + BYTE latch_a, latch_b; - public Mapper009(NES parent) : base(parent) { } + public Mapper009(NES parent) : base(parent) { } - public override void Reset() - { - SetPROM_32K_Bank(0, PROM_8K_SIZE - 3, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + public override void Reset() + { + SetPROM_32K_Bank(0, PROM_8K_SIZE - 3, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - reg[0] = 0; reg[1] = 4; - reg[2] = 0; reg[3] = 0; + reg[0] = 0; reg[1] = 4; + reg[2] = 0; reg[3] = 0; - latch_a = 0xFE; - latch_b = 0xFE; - SetVROM_4K_Bank(0, 4); - SetVROM_4K_Bank(4, 0); + latch_a = 0xFE; + latch_b = 0xFE; + SetVROM_4K_Bank(0, 4); + SetVROM_4K_Bank(4, 0); - nes.ppu.SetChrLatchMode(true); - } + nes.ppu.SetChrLatchMode(true); + } - //void Mapper009::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - switch (addr & 0xF000) - { - case 0xA000: - SetPROM_8K_Bank(4, data); - break; - case 0xB000: - reg[0] = data; - if (latch_a == 0xFD) - { - SetVROM_4K_Bank(0, reg[0]); - } - break; - case 0xC000: - reg[1] = data; - if (latch_a == 0xFE) - { - SetVROM_4K_Bank(0, reg[1]); - } - break; - case 0xD000: - reg[2] = data; - if (latch_b == 0xFD) - { - SetVROM_4K_Bank(4, reg[2]); - } - break; - case 0xE000: - reg[3] = data; - if (latch_b == 0xFE) - { - SetVROM_4K_Bank(4, reg[3]); - } - break; - case 0xF000: - if ((data & 0x01) != 0) SetVRAM_Mirror(VRAM_HMIRROR); - else SetVRAM_Mirror(VRAM_VMIRROR); - break; - } - } + //void Mapper009::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + switch (addr & 0xF000) + { + case 0xA000: + SetPROM_8K_Bank(4, data); + break; + case 0xB000: + reg[0] = data; + if (latch_a == 0xFD) + { + SetVROM_4K_Bank(0, reg[0]); + } + break; + case 0xC000: + reg[1] = data; + if (latch_a == 0xFE) + { + SetVROM_4K_Bank(0, reg[1]); + } + break; + case 0xD000: + reg[2] = data; + if (latch_b == 0xFD) + { + SetVROM_4K_Bank(4, reg[2]); + } + break; + case 0xE000: + reg[3] = data; + if (latch_b == 0xFE) + { + SetVROM_4K_Bank(4, reg[3]); + } + break; + case 0xF000: + if ((data & 0x01) != 0) SetVRAM_Mirror(VRAM_HMIRROR); + else SetVRAM_Mirror(VRAM_VMIRROR); + break; + } + } - //void Mapper009::PPU_ChrLatch(WORD addr) - public override void PPU_ChrLatch(ushort addr) - { - if ((addr & 0x1FF0) == 0x0FD0 && latch_a != 0xFD) - { - latch_a = 0xFD; - SetVROM_4K_Bank(0, reg[0]); - } - else if ((addr & 0x1FF0) == 0x0FE0 && latch_a != 0xFE) - { - latch_a = 0xFE; - SetVROM_4K_Bank(0, reg[1]); - } - else if ((addr & 0x1FF0) == 0x1FD0 && latch_b != 0xFD) - { - latch_b = 0xFD; - SetVROM_4K_Bank(4, reg[2]); - } - else if ((addr & 0x1FF0) == 0x1FE0 && latch_b != 0xFE) - { - latch_b = 0xFE; - SetVROM_4K_Bank(4, reg[3]); - } - } + //void Mapper009::PPU_ChrLatch(WORD addr) + public override void PPU_ChrLatch(ushort addr) + { + if ((addr & 0x1FF0) == 0x0FD0 && latch_a != 0xFD) + { + latch_a = 0xFD; + SetVROM_4K_Bank(0, reg[0]); + } + else if ((addr & 0x1FF0) == 0x0FE0 && latch_a != 0xFE) + { + latch_a = 0xFE; + SetVROM_4K_Bank(0, reg[1]); + } + else if ((addr & 0x1FF0) == 0x1FD0 && latch_b != 0xFD) + { + latch_b = 0xFD; + SetVROM_4K_Bank(4, reg[2]); + } + else if ((addr & 0x1FF0) == 0x1FE0 && latch_b != 0xFE) + { + latch_b = 0xFE; + SetVROM_4K_Bank(4, reg[3]); + } + } - //void Mapper009::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - p[0] = reg[0]; - p[1] = reg[1]; - p[2] = reg[2]; - p[3] = reg[3]; - p[4] = latch_a; - p[5] = latch_b; - } + //void Mapper009::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + p[0] = reg[0]; + p[1] = reg[1]; + p[2] = reg[2]; + p[3] = reg[3]; + p[4] = latch_a; + p[5] = latch_b; + } - //void Mapper009::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - reg[0] = p[0]; - reg[1] = p[1]; - reg[2] = p[2]; - reg[3] = p[3]; - latch_a = p[4]; - latch_b = p[5]; - } + //void Mapper009::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + reg[0] = p[0]; + reg[1] = p[1]; + reg[2] = p[2]; + reg[3] = p[3]; + latch_a = p[4]; + latch_b = p[5]; + } - public override bool IsStateSave() - { - return true; - } - } + public override bool IsStateSave() + { + return true; + } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper010.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper010.cs index aeb28332..62ab48ae 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper010.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper010.cs @@ -2,128 +2,126 @@ // Mapper010 Nintendo MMC4 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper010 : Mapper - { - BYTE[] reg = new byte[4]; - BYTE latch_a, latch_b; + public class Mapper010 : Mapper + { + BYTE[] reg = new byte[4]; + BYTE latch_a, latch_b; - public Mapper010(NES parent) : base(parent) { } + public Mapper010(NES parent) : base(parent) { } - public override void Reset() - { - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + public override void Reset() + { + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - reg[0] = 0; reg[1] = 4; - reg[2] = 0; reg[3] = 0; + reg[0] = 0; reg[1] = 4; + reg[2] = 0; reg[3] = 0; - latch_a = 0xFE; - latch_b = 0xFE; - SetVROM_4K_Bank(0, 4); - SetVROM_4K_Bank(4, 0); + latch_a = 0xFE; + latch_b = 0xFE; + SetVROM_4K_Bank(0, 4); + SetVROM_4K_Bank(4, 0); - nes.ppu.SetChrLatchMode(true); - } + nes.ppu.SetChrLatchMode(true); + } - //void Mapper010::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - switch (addr & 0xF000) - { - case 0xA000: - SetPROM_16K_Bank(4, data); - break; - case 0xB000: - reg[0] = data; - if (latch_a == 0xFD) - { - SetVROM_4K_Bank(0, reg[0]); - } - break; - case 0xC000: - reg[1] = data; - if (latch_a == 0xFE) - { - SetVROM_4K_Bank(0, reg[1]); - } - break; - case 0xD000: - reg[2] = data; - if (latch_b == 0xFD) - { - SetVROM_4K_Bank(4, reg[2]); - } - break; - case 0xE000: - reg[3] = data; - if (latch_b == 0xFE) - { - SetVROM_4K_Bank(4, reg[3]); - } - break; - case 0xF000: - if ((data & 0x01) != 0) - SetVRAM_Mirror(VRAM_HMIRROR); - else SetVRAM_Mirror(VRAM_VMIRROR); - break; - } - } + //void Mapper010::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + switch (addr & 0xF000) + { + case 0xA000: + SetPROM_16K_Bank(4, data); + break; + case 0xB000: + reg[0] = data; + if (latch_a == 0xFD) + { + SetVROM_4K_Bank(0, reg[0]); + } + break; + case 0xC000: + reg[1] = data; + if (latch_a == 0xFE) + { + SetVROM_4K_Bank(0, reg[1]); + } + break; + case 0xD000: + reg[2] = data; + if (latch_b == 0xFD) + { + SetVROM_4K_Bank(4, reg[2]); + } + break; + case 0xE000: + reg[3] = data; + if (latch_b == 0xFE) + { + SetVROM_4K_Bank(4, reg[3]); + } + break; + case 0xF000: + if ((data & 0x01) != 0) + SetVRAM_Mirror(VRAM_HMIRROR); + else SetVRAM_Mirror(VRAM_VMIRROR); + break; + } + } - //void Mapper010::PPU_ChrLatch(WORD addr) - public override void PPU_ChrLatch(ushort addr) - { - if ((addr & 0x1FF0) == 0x0FD0 && latch_a != 0xFD) - { - latch_a = 0xFD; - SetVROM_4K_Bank(0, reg[0]); - } - else if ((addr & 0x1FF0) == 0x0FE0 && latch_a != 0xFE) - { - latch_a = 0xFE; - SetVROM_4K_Bank(0, reg[1]); - } - else if ((addr & 0x1FF0) == 0x1FD0 && latch_b != 0xFD) - { - latch_b = 0xFD; - SetVROM_4K_Bank(4, reg[2]); - } - else if ((addr & 0x1FF0) == 0x1FE0 && latch_b != 0xFE) - { - latch_b = 0xFE; - SetVROM_4K_Bank(4, reg[3]); - } - } + //void Mapper010::PPU_ChrLatch(WORD addr) + public override void PPU_ChrLatch(ushort addr) + { + if ((addr & 0x1FF0) == 0x0FD0 && latch_a != 0xFD) + { + latch_a = 0xFD; + SetVROM_4K_Bank(0, reg[0]); + } + else if ((addr & 0x1FF0) == 0x0FE0 && latch_a != 0xFE) + { + latch_a = 0xFE; + SetVROM_4K_Bank(0, reg[1]); + } + else if ((addr & 0x1FF0) == 0x1FD0 && latch_b != 0xFD) + { + latch_b = 0xFD; + SetVROM_4K_Bank(4, reg[2]); + } + else if ((addr & 0x1FF0) == 0x1FE0 && latch_b != 0xFE) + { + latch_b = 0xFE; + SetVROM_4K_Bank(4, reg[3]); + } + } - //void Mapper010::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - p[0] = reg[0]; - p[1] = reg[1]; - p[2] = reg[2]; - p[3] = reg[3]; - p[4] = latch_a; - p[5] = latch_b; - } + //void Mapper010::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + p[0] = reg[0]; + p[1] = reg[1]; + p[2] = reg[2]; + p[3] = reg[3]; + p[4] = latch_a; + p[5] = latch_b; + } - //void Mapper010::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - reg[0] = p[0]; - reg[1] = p[1]; - reg[2] = p[2]; - reg[3] = p[3]; - latch_a = p[4]; - latch_b = p[5]; - } - public override bool IsStateSave() - { - return true; - } - } + //void Mapper010::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + reg[0] = p[0]; + reg[1] = p[1]; + reg[2] = p[2]; + reg[3] = p[3]; + latch_a = p[4]; + latch_b = p[5]; + } + public override bool IsStateSave() + { + return true; + } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper011.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper011.cs index 46188d1e..2ee819ae 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper011.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper011.cs @@ -2,41 +2,38 @@ // Mapper011 Color Dreams // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper011 : Mapper - { + public class Mapper011 : Mapper + { - public Mapper011(NES parent) : base(parent) { } + public Mapper011(NES parent) : base(parent) { } - public override void Reset() - { - SetPROM_32K_Bank(0); + public override void Reset() + { + SetPROM_32K_Bank(0); - if (VROM_1K_SIZE != 0) - { - SetVROM_8K_Bank(0); - // SetVROM_8K_Bank( 1 ); - } - SetVRAM_Mirror(VRAM_VMIRROR); - } + if (VROM_1K_SIZE != 0) + { + SetVROM_8K_Bank(0); + // SetVROM_8K_Bank( 1 ); + } + SetVRAM_Mirror(VRAM_VMIRROR); + } - //void Mapper011::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - //DEBUGOUT("WR A:%04X D:%02X\n", addr, data); - SetPROM_32K_Bank(data); - if (VROM_1K_SIZE != 0) - { - SetVROM_8K_Bank(data >> 4); - } - } + //void Mapper011::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + //DEBUGOUT("WR A:%04X D:%02X\n", addr, data); + SetPROM_32K_Bank(data); + if (VROM_1K_SIZE != 0) + { + SetVROM_8K_Bank(data >> 4); + } + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper012.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper012.cs index 51fcb4db..b6839ee8 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper012.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper012.cs @@ -1,331 +1,331 @@ -using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.Core.CPU; +using static VirtualNes.MMU; using BYTE = System.Byte; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { - public class Mapper012 : Mapper - { - uint vb0, vb1; - BYTE[] reg = new byte[8]; - BYTE prg0, prg1; - BYTE chr01, chr23, chr4, chr5, chr6, chr7; - BYTE we_sram; + public class Mapper012 : Mapper + { + uint vb0, vb1; + BYTE[] reg = new byte[8]; + BYTE prg0, prg1; + BYTE chr01, chr23, chr4, chr5, chr6, chr7; + BYTE we_sram; - BYTE irq_enable; - BYTE irq_counter; - BYTE irq_latch; - BYTE irq_request; - BYTE irq_preset; - BYTE irq_preset_vbl; + BYTE irq_enable; + BYTE irq_counter; + BYTE irq_latch; + BYTE irq_request; + BYTE irq_preset; + BYTE irq_preset_vbl; - public Mapper012(NES parent) : base(parent) { } + public Mapper012(NES parent) : base(parent) { } - public override void Reset() - { - for (INT i = 0; i < 8; i++) - { - reg[i] = 0x00; - } + public override void Reset() + { + for (INT i = 0; i < 8; i++) + { + reg[i] = 0x00; + } - prg0 = 0; - prg1 = 1; - SetBank_CPU(); + prg0 = 0; + prg1 = 1; + SetBank_CPU(); - vb0 = 0; - vb1 = 0; - chr01 = 0; - chr23 = 2; - chr4 = 4; - chr5 = 5; - chr6 = 6; - chr7 = 7; - SetBank_PPU(); + vb0 = 0; + vb1 = 0; + chr01 = 0; + chr23 = 2; + chr4 = 4; + chr5 = 5; + chr6 = 6; + chr7 = 7; + SetBank_PPU(); - we_sram = 0; // Disable - irq_enable = 0; // Disable - irq_counter = 0; - irq_latch = 0xFF; - irq_request = 0; - irq_preset = 0; - irq_preset_vbl = 0; - } + we_sram = 0; // Disable + irq_enable = 0; // Disable + irq_counter = 0; + irq_latch = 0xFF; + irq_request = 0; + irq_preset = 0; + irq_preset_vbl = 0; + } - //void Mapper012::WriteLow(WORD addr, BYTE data) - public override void WriteLow(ushort addr, byte data) - { - if (addr > 0x4100 && addr < 0x6000) - { - vb0 = (byte)((data & 0x01) << 8); - vb1 = (byte)((data & 0x10) << 4); - SetBank_PPU(); - } - else - { - base.WriteLow(addr, data); - } - } + //void Mapper012::WriteLow(WORD addr, BYTE data) + public override void WriteLow(ushort addr, byte data) + { + if (addr > 0x4100 && addr < 0x6000) + { + vb0 = (byte)((data & 0x01) << 8); + vb1 = (byte)((data & 0x10) << 4); + SetBank_PPU(); + } + else + { + base.WriteLow(addr, data); + } + } - //BYTE Mapper012::ReadLow(WORD addr) - public override byte ReadLow(ushort addr) - { - return 0x01; - } + //BYTE Mapper012::ReadLow(WORD addr) + public override byte ReadLow(ushort addr) + { + return 0x01; + } - //void Mapper012::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - //DEBUGOUT( "MPRWR A=%04X D=%02X L=%3d CYC=%d\n", addr&0xFFFF, data&0xFF, nes.GetScanline(), nes.cpu.GetTotalCycles() ); + //void Mapper012::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + //DEBUGOUT( "MPRWR A=%04X D=%02X L=%3d CYC=%d\n", addr&0xFFFF, data&0xFF, nes.GetScanline(), nes.cpu.GetTotalCycles() ); - switch (addr & 0xE001) - { - case 0x8000: - reg[0] = data; - SetBank_CPU(); - SetBank_PPU(); - break; - case 0x8001: - reg[1] = data; + switch (addr & 0xE001) + { + case 0x8000: + reg[0] = data; + SetBank_CPU(); + SetBank_PPU(); + break; + case 0x8001: + reg[1] = data; - switch (reg[0] & 0x07) - { - case 0x00: - chr01 = (byte)(data & 0xFE); - SetBank_PPU(); - break; - case 0x01: - chr23 = (byte)(data & 0xFE); - SetBank_PPU(); - break; - case 0x02: - chr4 = data; - SetBank_PPU(); - break; - case 0x03: - chr5 = data; - SetBank_PPU(); - break; - case 0x04: - chr6 = data; - SetBank_PPU(); - break; - case 0x05: - chr7 = data; - SetBank_PPU(); - break; - case 0x06: - prg0 = data; - SetBank_CPU(); - break; - case 0x07: - prg1 = data; - SetBank_CPU(); - break; - } - break; - case 0xA000: - reg[2] = data; - if (!nes.rom.Is4SCREEN()) - { - if ((data & 0x01) != 0) SetVRAM_Mirror(VRAM_HMIRROR); - else SetVRAM_Mirror(VRAM_VMIRROR); - } - break; - case 0xA001: - reg[3] = data; - break; - case 0xC000: - reg[4] = data; - irq_latch = data; - break; - case 0xC001: - reg[5] = data; - if (nes.GetScanline() < 240) - { - irq_counter |= 0x80; - irq_preset = 0xFF; - } - else - { - irq_counter |= 0x80; - irq_preset_vbl = 0xFF; - irq_preset = 0; - } - break; - case 0xE000: - reg[6] = data; - irq_enable = 0; - irq_request = 0; + switch (reg[0] & 0x07) + { + case 0x00: + chr01 = (byte)(data & 0xFE); + SetBank_PPU(); + break; + case 0x01: + chr23 = (byte)(data & 0xFE); + SetBank_PPU(); + break; + case 0x02: + chr4 = data; + SetBank_PPU(); + break; + case 0x03: + chr5 = data; + SetBank_PPU(); + break; + case 0x04: + chr6 = data; + SetBank_PPU(); + break; + case 0x05: + chr7 = data; + SetBank_PPU(); + break; + case 0x06: + prg0 = data; + SetBank_CPU(); + break; + case 0x07: + prg1 = data; + SetBank_CPU(); + break; + } + break; + case 0xA000: + reg[2] = data; + if (!nes.rom.Is4SCREEN()) + { + if ((data & 0x01) != 0) SetVRAM_Mirror(VRAM_HMIRROR); + else SetVRAM_Mirror(VRAM_VMIRROR); + } + break; + case 0xA001: + reg[3] = data; + break; + case 0xC000: + reg[4] = data; + irq_latch = data; + break; + case 0xC001: + reg[5] = data; + if (nes.GetScanline() < 240) + { + irq_counter |= 0x80; + irq_preset = 0xFF; + } + else + { + irq_counter |= 0x80; + irq_preset_vbl = 0xFF; + irq_preset = 0; + } + break; + case 0xE000: + reg[6] = data; + irq_enable = 0; + irq_request = 0; - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; - case 0xE001: - reg[7] = data; - irq_enable = 1; - irq_request = 0; - break; - } - } + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; + case 0xE001: + reg[7] = data; + irq_enable = 1; + irq_request = 0; + break; + } + } - //void Mapper012::HSync(INT scanline) - public override void HSync(int scanline) - { - if ((scanline >= 0 && scanline <= 239) && nes.ppu.IsDispON()) - { - if (irq_preset_vbl != 0) - { - irq_counter = irq_latch; - irq_preset_vbl = 0; - } - if (irq_preset != 0) - { - irq_counter = irq_latch; - irq_preset = 0; - } - else if (irq_counter > 0) - { - irq_counter--; - } + //void Mapper012::HSync(INT scanline) + public override void HSync(int scanline) + { + if ((scanline >= 0 && scanline <= 239) && nes.ppu.IsDispON()) + { + if (irq_preset_vbl != 0) + { + irq_counter = irq_latch; + irq_preset_vbl = 0; + } + if (irq_preset != 0) + { + irq_counter = irq_latch; + irq_preset = 0; + } + else if (irq_counter > 0) + { + irq_counter--; + } - if (irq_counter == 0) - { - // Some game set irq_latch to zero to disable irq. So check it here. - if (irq_enable != 0 && irq_latch != 0) - { - irq_request = 0xFF; - nes.cpu.SetIRQ(IRQ_MAPPER); - } - irq_preset = 0xFF; - } - } - } + if (irq_counter == 0) + { + // Some game set irq_latch to zero to disable irq. So check it here. + if (irq_enable != 0 && irq_latch != 0) + { + irq_request = 0xFF; + nes.cpu.SetIRQ(IRQ_MAPPER); + } + irq_preset = 0xFF; + } + } + } - void SetBank_CPU() - { - if ((reg[0] & 0x40) != 0) - { - SetPROM_32K_Bank(PROM_8K_SIZE - 2, prg1, prg0, PROM_8K_SIZE - 1); - } - else - { - SetPROM_32K_Bank(prg0, prg1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - } - } + void SetBank_CPU() + { + if ((reg[0] & 0x40) != 0) + { + SetPROM_32K_Bank(PROM_8K_SIZE - 2, prg1, prg0, PROM_8K_SIZE - 1); + } + else + { + SetPROM_32K_Bank(prg0, prg1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + } + } - void SetBank_PPU() - { - if (VROM_1K_SIZE != 0) - { - if ((reg[0] & 0x80) != 0) - { - SetVROM_8K_Bank( - (int)(vb0 + chr4), - (int)(vb0 + chr5), - (int)(vb0 + chr6), - (int)(vb0 + chr7), - (int)(vb1 + chr01), - (int)(vb1 + chr01 + 1), - (int)(vb1 + chr23), - (int)(vb1 + chr23 + 1) - ); - } - else - { - SetVROM_8K_Bank( - (int)(vb0 + chr01), - (int)(vb0 + chr01 + 1), - (int)(vb0 + chr23), - (int)(vb0 + chr23 + 1), - (int)(vb1 + chr4), - (int)(vb1 + chr5), - (int)(vb1 + chr6), - (int)(vb1 + chr7)) - ; - } - } - else - { - if ((reg[0] & 0x80) != 0) - { - SetCRAM_1K_Bank(4, (chr01 + 0) & 0x07); - SetCRAM_1K_Bank(5, (chr01 + 1) & 0x07); - SetCRAM_1K_Bank(6, (chr23 + 0) & 0x07); - SetCRAM_1K_Bank(7, (chr23 + 1) & 0x07); - SetCRAM_1K_Bank(0, chr4 & 0x07); - SetCRAM_1K_Bank(1, chr5 & 0x07); - SetCRAM_1K_Bank(2, chr6 & 0x07); - SetCRAM_1K_Bank(3, chr7 & 0x07); - } - else - { - SetCRAM_1K_Bank(0, (chr01 + 0) & 0x07); - SetCRAM_1K_Bank(1, (chr01 + 1) & 0x07); - SetCRAM_1K_Bank(2, (chr23 + 0) & 0x07); - SetCRAM_1K_Bank(3, (chr23 + 1) & 0x07); - SetCRAM_1K_Bank(4, chr4 & 0x07); - SetCRAM_1K_Bank(5, chr5 & 0x07); - SetCRAM_1K_Bank(6, chr6 & 0x07); - SetCRAM_1K_Bank(7, chr7 & 0x07); - } - } - } + void SetBank_PPU() + { + if (VROM_1K_SIZE != 0) + { + if ((reg[0] & 0x80) != 0) + { + SetVROM_8K_Bank( + (int)(vb0 + chr4), + (int)(vb0 + chr5), + (int)(vb0 + chr6), + (int)(vb0 + chr7), + (int)(vb1 + chr01), + (int)(vb1 + chr01 + 1), + (int)(vb1 + chr23), + (int)(vb1 + chr23 + 1) + ); + } + else + { + SetVROM_8K_Bank( + (int)(vb0 + chr01), + (int)(vb0 + chr01 + 1), + (int)(vb0 + chr23), + (int)(vb0 + chr23 + 1), + (int)(vb1 + chr4), + (int)(vb1 + chr5), + (int)(vb1 + chr6), + (int)(vb1 + chr7)) + ; + } + } + else + { + if ((reg[0] & 0x80) != 0) + { + SetCRAM_1K_Bank(4, (chr01 + 0) & 0x07); + SetCRAM_1K_Bank(5, (chr01 + 1) & 0x07); + SetCRAM_1K_Bank(6, (chr23 + 0) & 0x07); + SetCRAM_1K_Bank(7, (chr23 + 1) & 0x07); + SetCRAM_1K_Bank(0, chr4 & 0x07); + SetCRAM_1K_Bank(1, chr5 & 0x07); + SetCRAM_1K_Bank(2, chr6 & 0x07); + SetCRAM_1K_Bank(3, chr7 & 0x07); + } + else + { + SetCRAM_1K_Bank(0, (chr01 + 0) & 0x07); + SetCRAM_1K_Bank(1, (chr01 + 1) & 0x07); + SetCRAM_1K_Bank(2, (chr23 + 0) & 0x07); + SetCRAM_1K_Bank(3, (chr23 + 1) & 0x07); + SetCRAM_1K_Bank(4, chr4 & 0x07); + SetCRAM_1K_Bank(5, chr5 & 0x07); + SetCRAM_1K_Bank(6, chr6 & 0x07); + SetCRAM_1K_Bank(7, chr7 & 0x07); + } + } + } - //void Mapper012::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - //for (INT i = 0; i < 8; i++) - //{ - // p[i] = reg[i]; - //} - //p[8] = prg0; - //p[9] = prg1; - //p[10] = chr01; - //p[11] = chr23; - //p[12] = chr4; - //p[13] = chr5; - //p[14] = chr6; - //p[15] = chr7; - //p[16] = irq_enable; - //p[17] = (BYTE)irq_counter; - //p[18] = irq_latch; - //p[19] = irq_request; - //p[20] = irq_preset; - //p[21] = irq_preset_vbl; - //*((DWORD*)&p[22]) = vb0; - //*((DWORD*)&p[26]) = vb1; - } + //void Mapper012::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + //for (INT i = 0; i < 8; i++) + //{ + // p[i] = reg[i]; + //} + //p[8] = prg0; + //p[9] = prg1; + //p[10] = chr01; + //p[11] = chr23; + //p[12] = chr4; + //p[13] = chr5; + //p[14] = chr6; + //p[15] = chr7; + //p[16] = irq_enable; + //p[17] = (BYTE)irq_counter; + //p[18] = irq_latch; + //p[19] = irq_request; + //p[20] = irq_preset; + //p[21] = irq_preset_vbl; + //*((DWORD*)&p[22]) = vb0; + //*((DWORD*)&p[26]) = vb1; + } - //void Mapper012::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - //for (INT i = 0; i < 8; i++) - //{ - // reg[i] = p[i]; - //} - //prg0 = p[8]; - //prg1 = p[9]; - //chr01 = p[10]; - //chr23 = p[11]; - //chr4 = p[12]; - //chr5 = p[13]; - //chr6 = p[14]; - //chr7 = p[15]; - //irq_enable = p[16]; - //irq_counter = (INT)p[17]; - //irq_latch = p[18]; - //irq_request = p[19]; - //irq_preset = p[20]; - //irq_preset_vbl = p[21]; - //vb0 = *((DWORD*)&p[22]); - //vb1 = *((DWORD*)&p[26]); - } + //void Mapper012::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + //for (INT i = 0; i < 8; i++) + //{ + // reg[i] = p[i]; + //} + //prg0 = p[8]; + //prg1 = p[9]; + //chr01 = p[10]; + //chr23 = p[11]; + //chr4 = p[12]; + //chr5 = p[13]; + //chr6 = p[14]; + //chr7 = p[15]; + //irq_enable = p[16]; + //irq_counter = (INT)p[17]; + //irq_latch = p[18]; + //irq_request = p[19]; + //irq_preset = p[20]; + //irq_preset_vbl = p[21]; + //vb0 = *((DWORD*)&p[22]); + //vb1 = *((DWORD*)&p[26]); + } - public override bool IsStateSave() - { - return true; - } - } + public override bool IsStateSave() + { + return true; + } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper013.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper013.cs index 31d91230..e16779ca 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper013.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper013.cs @@ -2,32 +2,29 @@ // Mapper013 CPROM // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper013 : Mapper - { + public class Mapper013 : Mapper + { - public Mapper013(NES parent) : base(parent) { } + public Mapper013(NES parent) : base(parent) { } - public override void Reset() - { - SetPROM_32K_Bank(0, 1, 2, 3); - SetCRAM_4K_Bank(0, 0); - SetCRAM_4K_Bank(4, 0); - } + public override void Reset() + { + SetPROM_32K_Bank(0, 1, 2, 3); + SetCRAM_4K_Bank(0, 0); + SetCRAM_4K_Bank(4, 0); + } - //void Mapper013::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - SetPROM_32K_Bank((data & 0x30) >> 4); - SetCRAM_4K_Bank(4, data & 0x03); - } + //void Mapper013::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + SetPROM_32K_Bank((data & 0x30) >> 4); + SetCRAM_4K_Bank(4, data & 0x03); + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper015.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper015.cs index 6b0336ee..3fca36cf 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper015.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper015.cs @@ -2,92 +2,89 @@ // Mapper015 100-in-1 chip // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper015 : Mapper - { + public class Mapper015 : Mapper + { - public Mapper015(NES parent) : base(parent) { } + public Mapper015(NES parent) : base(parent) { } - public override void Reset() - { - SetPROM_32K_Bank(0, 1, 2, 3); - } + public override void Reset() + { + SetPROM_32K_Bank(0, 1, 2, 3); + } - //void Mapper015::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - switch (addr) - { - case 0x8000: - if ((data & 0x80) != 0) - { - SetPROM_8K_Bank(4, (data & 0x3F) * 2 + 1); - SetPROM_8K_Bank(5, (data & 0x3F) * 2 + 0); - SetPROM_8K_Bank(6, (data & 0x3F) * 2 + 3); - SetPROM_8K_Bank(7, (data & 0x3F) * 2 + 2); - } - else - { - SetPROM_8K_Bank(4, (data & 0x3F) * 2 + 0); - SetPROM_8K_Bank(5, (data & 0x3F) * 2 + 1); - SetPROM_8K_Bank(6, (data & 0x3F) * 2 + 2); - SetPROM_8K_Bank(7, (data & 0x3F) * 2 + 3); - } - if ((data & 0x40) != 0) - SetVRAM_Mirror(VRAM_HMIRROR); - else SetVRAM_Mirror(VRAM_VMIRROR); - break; - case 0x8001: - if ((data & 0x80) != 0) - { - SetPROM_8K_Bank(6, (data & 0x3F) * 2 + 1); - SetPROM_8K_Bank(7, (data & 0x3F) * 2 + 0); - } - else - { - SetPROM_8K_Bank(6, (data & 0x3F) * 2 + 0); - SetPROM_8K_Bank(7, (data & 0x3F) * 2 + 1); - } - break; - case 0x8002: - if ((data & 0x80) != 0) - { - SetPROM_8K_Bank(4, (data & 0x3F) * 2 + 1); - SetPROM_8K_Bank(5, (data & 0x3F) * 2 + 1); - SetPROM_8K_Bank(6, (data & 0x3F) * 2 + 1); - SetPROM_8K_Bank(7, (data & 0x3F) * 2 + 1); - } - else - { - SetPROM_8K_Bank(4, (data & 0x3F) * 2 + 0); - SetPROM_8K_Bank(5, (data & 0x3F) * 2 + 0); - SetPROM_8K_Bank(6, (data & 0x3F) * 2 + 0); - SetPROM_8K_Bank(7, (data & 0x3F) * 2 + 0); - } - break; - case 0x8003: - if ((data & 0x80) != 0) - { - SetPROM_8K_Bank(6, (data & 0x3F) * 2 + 1); - SetPROM_8K_Bank(7, (data & 0x3F) * 2 + 0); - } - else - { - SetPROM_8K_Bank(6, (data & 0x3F) * 2 + 0); - SetPROM_8K_Bank(7, (data & 0x3F) * 2 + 1); - } - if ((data & 0x40) != 0) SetVRAM_Mirror(VRAM_HMIRROR); - else SetVRAM_Mirror(VRAM_VMIRROR); - break; - } - } + //void Mapper015::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + switch (addr) + { + case 0x8000: + if ((data & 0x80) != 0) + { + SetPROM_8K_Bank(4, (data & 0x3F) * 2 + 1); + SetPROM_8K_Bank(5, (data & 0x3F) * 2 + 0); + SetPROM_8K_Bank(6, (data & 0x3F) * 2 + 3); + SetPROM_8K_Bank(7, (data & 0x3F) * 2 + 2); + } + else + { + SetPROM_8K_Bank(4, (data & 0x3F) * 2 + 0); + SetPROM_8K_Bank(5, (data & 0x3F) * 2 + 1); + SetPROM_8K_Bank(6, (data & 0x3F) * 2 + 2); + SetPROM_8K_Bank(7, (data & 0x3F) * 2 + 3); + } + if ((data & 0x40) != 0) + SetVRAM_Mirror(VRAM_HMIRROR); + else SetVRAM_Mirror(VRAM_VMIRROR); + break; + case 0x8001: + if ((data & 0x80) != 0) + { + SetPROM_8K_Bank(6, (data & 0x3F) * 2 + 1); + SetPROM_8K_Bank(7, (data & 0x3F) * 2 + 0); + } + else + { + SetPROM_8K_Bank(6, (data & 0x3F) * 2 + 0); + SetPROM_8K_Bank(7, (data & 0x3F) * 2 + 1); + } + break; + case 0x8002: + if ((data & 0x80) != 0) + { + SetPROM_8K_Bank(4, (data & 0x3F) * 2 + 1); + SetPROM_8K_Bank(5, (data & 0x3F) * 2 + 1); + SetPROM_8K_Bank(6, (data & 0x3F) * 2 + 1); + SetPROM_8K_Bank(7, (data & 0x3F) * 2 + 1); + } + else + { + SetPROM_8K_Bank(4, (data & 0x3F) * 2 + 0); + SetPROM_8K_Bank(5, (data & 0x3F) * 2 + 0); + SetPROM_8K_Bank(6, (data & 0x3F) * 2 + 0); + SetPROM_8K_Bank(7, (data & 0x3F) * 2 + 0); + } + break; + case 0x8003: + if ((data & 0x80) != 0) + { + SetPROM_8K_Bank(6, (data & 0x3F) * 2 + 1); + SetPROM_8K_Bank(7, (data & 0x3F) * 2 + 0); + } + else + { + SetPROM_8K_Bank(6, (data & 0x3F) * 2 + 0); + SetPROM_8K_Bank(7, (data & 0x3F) * 2 + 1); + } + if ((data & 0x40) != 0) SetVRAM_Mirror(VRAM_HMIRROR); + else SetVRAM_Mirror(VRAM_VMIRROR); + break; + } + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper017.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper017.cs index d1344c17..2d7c6d6d 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper017.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper017.cs @@ -1,127 +1,127 @@ -using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.Core.CPU; +using static VirtualNes.MMU; using BYTE = System.Byte; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { - public class Mapper017 : Mapper - { - BYTE irq_enable; - INT irq_counter; - INT irq_latch; - public Mapper017(NES parent) : base(parent) - { - } + public class Mapper017 : Mapper + { + BYTE irq_enable; + INT irq_counter; + INT irq_latch; + public Mapper017(NES parent) : base(parent) + { + } - public override void Reset() - { - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + public override void Reset() + { + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - if (VROM_1K_SIZE != 0) - { - SetVROM_8K_Bank(0); - } + if (VROM_1K_SIZE != 0) + { + SetVROM_8K_Bank(0); + } - irq_enable = 0; - irq_counter = 0; - irq_latch = 0; - } + irq_enable = 0; + irq_counter = 0; + irq_latch = 0; + } - //void Mapper017::WriteLow(WORD addr, BYTE data) - public override void WriteLow(ushort addr, byte data) - { - switch (addr) - { - case 0x42FE: - if ((data & 0x10) != 0) SetVRAM_Mirror(VRAM_MIRROR4H); - else SetVRAM_Mirror(VRAM_MIRROR4L); - break; - case 0x42FF: - if ((data & 0x10) != 0) SetVRAM_Mirror(VRAM_HMIRROR); - else SetVRAM_Mirror(VRAM_VMIRROR); - break; + //void Mapper017::WriteLow(WORD addr, BYTE data) + public override void WriteLow(ushort addr, byte data) + { + switch (addr) + { + case 0x42FE: + if ((data & 0x10) != 0) SetVRAM_Mirror(VRAM_MIRROR4H); + else SetVRAM_Mirror(VRAM_MIRROR4L); + break; + case 0x42FF: + if ((data & 0x10) != 0) SetVRAM_Mirror(VRAM_HMIRROR); + else SetVRAM_Mirror(VRAM_VMIRROR); + break; - case 0x4501: - irq_enable = 0; - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; - case 0x4502: - irq_latch = (irq_latch & 0xFF00) | data; - break; - case 0x4503: - irq_latch = (irq_latch & 0x00FF) | ((INT)data << 8); - irq_counter = irq_latch; - irq_enable = 0xFF; - break; + case 0x4501: + irq_enable = 0; + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; + case 0x4502: + irq_latch = (irq_latch & 0xFF00) | data; + break; + case 0x4503: + irq_latch = (irq_latch & 0x00FF) | ((INT)data << 8); + irq_counter = irq_latch; + irq_enable = 0xFF; + break; - case 0x4504: - case 0x4505: - case 0x4506: - case 0x4507: - SetPROM_8K_Bank((byte)(addr & 0x07), data); - break; + case 0x4504: + case 0x4505: + case 0x4506: + case 0x4507: + SetPROM_8K_Bank((byte)(addr & 0x07), data); + break; - case 0x4510: - case 0x4511: - case 0x4512: - case 0x4513: - case 0x4514: - case 0x4515: - case 0x4516: - case 0x4517: - SetVROM_1K_Bank((byte)(addr & 0x07), data); - break; + case 0x4510: + case 0x4511: + case 0x4512: + case 0x4513: + case 0x4514: + case 0x4515: + case 0x4516: + case 0x4517: + SetVROM_1K_Bank((byte)(addr & 0x07), data); + break; - default: - base.WriteLow(addr, data); - break; - } - } + default: + base.WriteLow(addr, data); + break; + } + } - //void Mapper017::HSync(INT scanline) - public override void HSync(int scanline) - { - if (irq_enable != 0) - { - if (irq_counter >= 0xFFFF - 113) - { - nes.cpu.SetIRQ(IRQ_MAPPER); - // nes.cpu.IRQ(); - // irq_counter = 0; - // irq_enable = 0; - irq_counter &= 0xFFFF; - } - else - { - irq_counter += 113; - } - } - } + //void Mapper017::HSync(INT scanline) + public override void HSync(int scanline) + { + if (irq_enable != 0) + { + if (irq_counter >= 0xFFFF - 113) + { + nes.cpu.SetIRQ(IRQ_MAPPER); + // nes.cpu.IRQ(); + // irq_counter = 0; + // irq_enable = 0; + irq_counter &= 0xFFFF; + } + else + { + irq_counter += 113; + } + } + } - //void Mapper017::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - //p[0] = irq_enable; - //*(INT*)&p[1] = irq_counter; - //*(INT*)&p[5] = irq_latch; - } + //void Mapper017::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + //p[0] = irq_enable; + //*(INT*)&p[1] = irq_counter; + //*(INT*)&p[5] = irq_latch; + } - //void Mapper017::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - //irq_enable = p[0]; - //irq_counter = *(INT*)&p[1]; - //irq_latch = *(INT*)&p[5]; - } + //void Mapper017::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + //irq_enable = p[0]; + //irq_counter = *(INT*)&p[1]; + //irq_latch = *(INT*)&p[5]; + } - public override bool IsStateSave() - { - return true; - } + public override bool IsStateSave() + { + return true; + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper018.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper018.cs index c4766441..e3da95fa 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper018.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper018.cs @@ -1,278 +1,278 @@ ////////////////////////////////////////////////////////////////////////// // Mapper018 Jaleco SS8806 // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { - public class Mapper018 : Mapper - { - BYTE[] reg = new byte[11]; + public class Mapper018 : Mapper + { + BYTE[] reg = new byte[11]; - BYTE irq_enable; - BYTE irq_mode; - INT irq_latch; - INT irq_counter; - public Mapper018(NES parent) : base(parent) - { - } + BYTE irq_enable; + BYTE irq_mode; + INT irq_latch; + INT irq_counter; + public Mapper018(NES parent) : base(parent) + { + } - public override void Reset() - { - for (INT i = 0; i < 11; i++) - { - reg[i] = 0; - } - reg[2] = (byte)(PROM_8K_SIZE - 2); - reg[3] = (byte)(PROM_8K_SIZE - 1); + public override void Reset() + { + for (INT i = 0; i < 11; i++) + { + reg[i] = 0; + } + reg[2] = (byte)(PROM_8K_SIZE - 2); + reg[3] = (byte)(PROM_8K_SIZE - 1); - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - irq_enable = 0; - irq_mode = 0; - irq_counter = 0xFFFF; - irq_latch = 0xFFFF; + irq_enable = 0; + irq_mode = 0; + irq_counter = 0xFFFF; + irq_latch = 0xFFFF; - uint crc = nes.rom.GetPROM_CRC(); + uint crc = nes.rom.GetPROM_CRC(); - if (crc == 0xefb1df9e) - { // The Lord of King(J) - nes.SetRenderMethod(EnumRenderMethod.PRE_ALL_RENDER); - } - if (crc == 0x3746f951) - { // Pizza Pop!(J) - nes.SetRenderMethod(EnumRenderMethod.PRE_ALL_RENDER); - } + if (crc == 0xefb1df9e) + { // The Lord of King(J) + nes.SetRenderMethod(EnumRenderMethod.PRE_ALL_RENDER); + } + if (crc == 0x3746f951) + { // Pizza Pop!(J) + nes.SetRenderMethod(EnumRenderMethod.PRE_ALL_RENDER); + } - // nes.SetRenderMethod( NES::PRE_ALL_RENDER ); - // nes.SetRenderMethod( NES::POST_ALL_RENDER ); - } + // nes.SetRenderMethod( NES::PRE_ALL_RENDER ); + // nes.SetRenderMethod( NES::POST_ALL_RENDER ); + } - //void Mapper018::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - switch (addr) - { - case 0x8000: - reg[0] = (byte)((reg[0] & 0xF0) | (data & 0x0F)); - SetPROM_8K_Bank(4, reg[0]); - break; - case 0x8001: - reg[0] = (byte)((reg[0] & 0x0F) | ((data & 0x0F) << 4)); - SetPROM_8K_Bank(4, reg[0]); - break; - case 0x8002: - reg[1] = (byte)((reg[1] & 0xF0) | (data & 0x0F)); - SetPROM_8K_Bank(5, reg[1]); - break; - case 0x8003: - reg[1] = (byte)((reg[1] & 0x0F) | ((data & 0x0F) << 4)); - SetPROM_8K_Bank(5, reg[1]); - break; - case 0x9000: - reg[2] = (byte)((reg[2] & 0xF0) | (data & 0x0F)); - SetPROM_8K_Bank(6, reg[2]); - break; - case 0x9001: - reg[2] = (byte)((reg[2] & 0x0F) | ((data & 0x0F) << 4)); - SetPROM_8K_Bank(6, reg[2]); - break; + //void Mapper018::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + switch (addr) + { + case 0x8000: + reg[0] = (byte)((reg[0] & 0xF0) | (data & 0x0F)); + SetPROM_8K_Bank(4, reg[0]); + break; + case 0x8001: + reg[0] = (byte)((reg[0] & 0x0F) | ((data & 0x0F) << 4)); + SetPROM_8K_Bank(4, reg[0]); + break; + case 0x8002: + reg[1] = (byte)((reg[1] & 0xF0) | (data & 0x0F)); + SetPROM_8K_Bank(5, reg[1]); + break; + case 0x8003: + reg[1] = (byte)((reg[1] & 0x0F) | ((data & 0x0F) << 4)); + SetPROM_8K_Bank(5, reg[1]); + break; + case 0x9000: + reg[2] = (byte)((reg[2] & 0xF0) | (data & 0x0F)); + SetPROM_8K_Bank(6, reg[2]); + break; + case 0x9001: + reg[2] = (byte)((reg[2] & 0x0F) | ((data & 0x0F) << 4)); + SetPROM_8K_Bank(6, reg[2]); + break; - case 0xA000: - reg[3] = (byte)((reg[3] & 0xF0) | (data & 0x0F)); - SetVROM_1K_Bank(0, reg[3]); - break; - case 0xA001: - reg[3] = (byte)((reg[3] & 0x0F) | ((data & 0x0F) << 4)); - SetVROM_1K_Bank(0, reg[3]); - break; - case 0xA002: - reg[4] = (byte)((reg[4] & 0xF0) | (data & 0x0F)); - SetVROM_1K_Bank(1, reg[4]); - break; - case 0xA003: - reg[4] = (byte)((reg[4] & 0x0F) | ((data & 0x0F) << 4)); - SetVROM_1K_Bank(1, reg[4]); - break; + case 0xA000: + reg[3] = (byte)((reg[3] & 0xF0) | (data & 0x0F)); + SetVROM_1K_Bank(0, reg[3]); + break; + case 0xA001: + reg[3] = (byte)((reg[3] & 0x0F) | ((data & 0x0F) << 4)); + SetVROM_1K_Bank(0, reg[3]); + break; + case 0xA002: + reg[4] = (byte)((reg[4] & 0xF0) | (data & 0x0F)); + SetVROM_1K_Bank(1, reg[4]); + break; + case 0xA003: + reg[4] = (byte)((reg[4] & 0x0F) | ((data & 0x0F) << 4)); + SetVROM_1K_Bank(1, reg[4]); + break; - case 0xB000: - reg[5] = (byte)((reg[5] & 0xF0) | (data & 0x0F)); - SetVROM_1K_Bank(2, reg[5]); - break; - case 0xB001: - reg[5] = (byte)((reg[5] & 0x0F) | ((data & 0x0F) << 4)); - SetVROM_1K_Bank(2, reg[5]); - break; - case 0xB002: - reg[6] = (byte)((reg[6] & 0xF0) | (data & 0x0F)); - SetVROM_1K_Bank(3, reg[6]); - break; - case 0xB003: - reg[6] = (byte)((reg[6] & 0x0F) | ((data & 0x0F) << 4)); - SetVROM_1K_Bank(3, reg[6]); - break; + case 0xB000: + reg[5] = (byte)((reg[5] & 0xF0) | (data & 0x0F)); + SetVROM_1K_Bank(2, reg[5]); + break; + case 0xB001: + reg[5] = (byte)((reg[5] & 0x0F) | ((data & 0x0F) << 4)); + SetVROM_1K_Bank(2, reg[5]); + break; + case 0xB002: + reg[6] = (byte)((reg[6] & 0xF0) | (data & 0x0F)); + SetVROM_1K_Bank(3, reg[6]); + break; + case 0xB003: + reg[6] = (byte)((reg[6] & 0x0F) | ((data & 0x0F) << 4)); + SetVROM_1K_Bank(3, reg[6]); + break; - case 0xC000: - reg[7] = (byte)((reg[7] & 0xF0) | (data & 0x0F)); - SetVROM_1K_Bank(4, reg[7]); - break; - case 0xC001: - reg[7] = (byte)((reg[7] & 0x0F) | ((data & 0x0F) << 4)); - SetVROM_1K_Bank(4, reg[7]); - break; - case 0xC002: - reg[8] = (byte)((reg[8] & 0xF0) | (data & 0x0F)); - SetVROM_1K_Bank(5, reg[8]); - break; - case 0xC003: - reg[8] = (byte)((reg[8] & 0x0F) | ((data & 0x0F) << 4)); - SetVROM_1K_Bank(5, reg[8]); - break; + case 0xC000: + reg[7] = (byte)((reg[7] & 0xF0) | (data & 0x0F)); + SetVROM_1K_Bank(4, reg[7]); + break; + case 0xC001: + reg[7] = (byte)((reg[7] & 0x0F) | ((data & 0x0F) << 4)); + SetVROM_1K_Bank(4, reg[7]); + break; + case 0xC002: + reg[8] = (byte)((reg[8] & 0xF0) | (data & 0x0F)); + SetVROM_1K_Bank(5, reg[8]); + break; + case 0xC003: + reg[8] = (byte)((reg[8] & 0x0F) | ((data & 0x0F) << 4)); + SetVROM_1K_Bank(5, reg[8]); + break; - case 0xD000: - reg[9] = (byte)((reg[9] & 0xF0) | (data & 0x0F)); - SetVROM_1K_Bank(6, reg[9]); - break; - case 0xD001: - reg[9] = (byte)((reg[9] & 0x0F) | ((data & 0x0F) << 4)); - SetVROM_1K_Bank(6, reg[9]); - break; - case 0xD002: - reg[10] = (byte)((reg[10] & 0xF0) | (data & 0x0F)); - SetVROM_1K_Bank(7, reg[10]); - break; - case 0xD003: - reg[10] = (byte)((reg[10] & 0x0F) | ((data & 0x0F) << 4)); - SetVROM_1K_Bank(7, reg[10]); - break; + case 0xD000: + reg[9] = (byte)((reg[9] & 0xF0) | (data & 0x0F)); + SetVROM_1K_Bank(6, reg[9]); + break; + case 0xD001: + reg[9] = (byte)((reg[9] & 0x0F) | ((data & 0x0F) << 4)); + SetVROM_1K_Bank(6, reg[9]); + break; + case 0xD002: + reg[10] = (byte)((reg[10] & 0xF0) | (data & 0x0F)); + SetVROM_1K_Bank(7, reg[10]); + break; + case 0xD003: + reg[10] = (byte)((reg[10] & 0x0F) | ((data & 0x0F) << 4)); + SetVROM_1K_Bank(7, reg[10]); + break; - case 0xE000: - irq_latch = (irq_latch & 0xFFF0) | (data & 0x0F); - break; - case 0xE001: - irq_latch = (irq_latch & 0xFF0F) | ((data & 0x0F) << 4); - break; - case 0xE002: - irq_latch = (irq_latch & 0xF0FF) | ((data & 0x0F) << 8); - break; - case 0xE003: - irq_latch = (irq_latch & 0x0FFF) | ((data & 0x0F) << 12); - break; + case 0xE000: + irq_latch = (irq_latch & 0xFFF0) | (data & 0x0F); + break; + case 0xE001: + irq_latch = (irq_latch & 0xFF0F) | ((data & 0x0F) << 4); + break; + case 0xE002: + irq_latch = (irq_latch & 0xF0FF) | ((data & 0x0F) << 8); + break; + case 0xE003: + irq_latch = (irq_latch & 0x0FFF) | ((data & 0x0F) << 12); + break; - case 0xF000: - // if( data & 0x01 ) { - irq_counter = irq_latch; - // } else { - // irq_counter = 0; - // } - break; - case 0xF001: - irq_mode = (byte)((data >> 1) & 0x07); - irq_enable = ((byte)(data & 0x01)); - // if( !irq_enable ) { - nes.cpu.ClrIRQ(IRQ_MAPPER); - // } - break; + case 0xF000: + // if( data & 0x01 ) { + irq_counter = irq_latch; + // } else { + // irq_counter = 0; + // } + break; + case 0xF001: + irq_mode = (byte)((data >> 1) & 0x07); + irq_enable = ((byte)(data & 0x01)); + // if( !irq_enable ) { + nes.cpu.ClrIRQ(IRQ_MAPPER); + // } + break; - case 0xF002: - data &= 0x03; - if (data == 0) SetVRAM_Mirror(VRAM_HMIRROR); - else if (data == 1) SetVRAM_Mirror(VRAM_VMIRROR); - else SetVRAM_Mirror(VRAM_MIRROR4L); - break; - } - } + case 0xF002: + data &= 0x03; + if (data == 0) SetVRAM_Mirror(VRAM_HMIRROR); + else if (data == 1) SetVRAM_Mirror(VRAM_VMIRROR); + else SetVRAM_Mirror(VRAM_MIRROR4L); + break; + } + } - //void Mapper018::Clock(INT cycles) - public override void Clock(int cycles) - { - bool bIRQ = false; - INT irq_counter_old = irq_counter; + //void Mapper018::Clock(INT cycles) + public override void Clock(int cycles) + { + bool bIRQ = false; + INT irq_counter_old = irq_counter; - if (irq_enable != 0 && irq_counter != 0) - { - irq_counter -= cycles; + if (irq_enable != 0 && irq_counter != 0) + { + irq_counter -= cycles; - switch (irq_mode) - { - case 0: - if (irq_counter <= 0) - { - bIRQ = true; - } - break; - case 1: - if ((irq_counter & 0xF000) != (irq_counter_old & 0xF000)) - { - bIRQ = true; - } - break; - case 2: - case 3: - if ((irq_counter & 0xFF00) != (irq_counter_old & 0xFF00)) - { - bIRQ = true; - } - break; - case 4: - case 5: - case 6: - case 7: - if ((irq_counter & 0xFFF0) != (irq_counter_old & 0xFFF0)) - { - bIRQ = true; - } - break; - } + switch (irq_mode) + { + case 0: + if (irq_counter <= 0) + { + bIRQ = true; + } + break; + case 1: + if ((irq_counter & 0xF000) != (irq_counter_old & 0xF000)) + { + bIRQ = true; + } + break; + case 2: + case 3: + if ((irq_counter & 0xFF00) != (irq_counter_old & 0xFF00)) + { + bIRQ = true; + } + break; + case 4: + case 5: + case 6: + case 7: + if ((irq_counter & 0xFFF0) != (irq_counter_old & 0xFFF0)) + { + bIRQ = true; + } + break; + } - if (bIRQ) - { - //// irq_enable = 0; - // irq_counter = irq_latch; - irq_counter = 0; - irq_enable = 0; - // nes.cpu.IRQ_NotPending(); - nes.cpu.SetIRQ(IRQ_MAPPER); - } - } - } + if (bIRQ) + { + //// irq_enable = 0; + // irq_counter = irq_latch; + irq_counter = 0; + irq_enable = 0; + // nes.cpu.IRQ_NotPending(); + nes.cpu.SetIRQ(IRQ_MAPPER); + } + } + } - //void Mapper018::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - //for (INT i = 0; i < 11; i++) - //{ - // p[i] = reg[i]; - //} - //p[11] = irq_enable; - //p[12] = irq_mode; - //*(INT*)&p[13] = irq_counter; - //*(INT*)&p[17] = irq_latch; - } + //void Mapper018::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + //for (INT i = 0; i < 11; i++) + //{ + // p[i] = reg[i]; + //} + //p[11] = irq_enable; + //p[12] = irq_mode; + //*(INT*)&p[13] = irq_counter; + //*(INT*)&p[17] = irq_latch; + } - //void Mapper018::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - //for (INT i = 0; i < 11; i++) - //{ - // p[i] = reg[i]; - //} - //irq_enable = p[11]; - //irq_mode = p[12]; - //irq_counter = *(INT*)&p[13]; - //irq_latch = *(INT*)&p[17]; - } + //void Mapper018::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + //for (INT i = 0; i < 11; i++) + //{ + // p[i] = reg[i]; + //} + //irq_enable = p[11]; + //irq_mode = p[12]; + //irq_counter = *(INT*)&p[13]; + //irq_latch = *(INT*)&p[17]; + } - public override bool IsStateSave() - { - return true; - } + public override bool IsStateSave() + { + return true; + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper019.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper019.cs index 24bd3d08..7aff868a 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper019.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper019.cs @@ -1,11 +1,10 @@ ////////////////////////////////////////////////////////////////////////// // Mapper019 Namcot 106 // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper021.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper021.cs index 5e367f5c..1920b2d9 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper021.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper021.cs @@ -1,255 +1,255 @@ ////////////////// // Mapper021 Konami VRC4 (Address mask $F006 or $F0C0) // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { - public class Mapper021 : Mapper - { - BYTE[] reg = new byte[9]; + public class Mapper021 : Mapper + { + BYTE[] reg = new byte[9]; - BYTE irq_enable; - BYTE irq_counter; - BYTE irq_latch; - INT irq_clock; - public Mapper021(NES parent) : base(parent) - { - } + BYTE irq_enable; + BYTE irq_counter; + BYTE irq_latch; + INT irq_clock; + public Mapper021(NES parent) : base(parent) + { + } - public override void Reset() - { - for (byte i = 0; i < 8; i++) - { - reg[i] = i; - } - reg[8] = 0; + public override void Reset() + { + for (byte i = 0; i < 8; i++) + { + reg[i] = i; + } + reg[8] = 0; - irq_enable = 0; - irq_counter = 0; - irq_latch = 0; - irq_clock = 0; + irq_enable = 0; + irq_counter = 0; + irq_latch = 0; + irq_clock = 0; - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - } + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + } - //void Mapper021::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - switch (addr & 0xF0CF) - { - case 0x8000: - if ((reg[8] & 0x02) != 0) - { - SetPROM_8K_Bank(6, data); - } - else - { - SetPROM_8K_Bank(4, data); - } - break; - case 0xA000: - SetPROM_8K_Bank(5, data); - break; + //void Mapper021::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + switch (addr & 0xF0CF) + { + case 0x8000: + if ((reg[8] & 0x02) != 0) + { + SetPROM_8K_Bank(6, data); + } + else + { + SetPROM_8K_Bank(4, data); + } + break; + case 0xA000: + SetPROM_8K_Bank(5, data); + break; - case 0x9000: - data &= 0x03; - if (data == 0) SetVRAM_Mirror(VRAM_VMIRROR); - else if (data == 1) SetVRAM_Mirror(VRAM_HMIRROR); - else if (data == 2) SetVRAM_Mirror(VRAM_MIRROR4L); - else SetVRAM_Mirror(VRAM_MIRROR4H); - break; + case 0x9000: + data &= 0x03; + if (data == 0) SetVRAM_Mirror(VRAM_VMIRROR); + else if (data == 1) SetVRAM_Mirror(VRAM_HMIRROR); + else if (data == 2) SetVRAM_Mirror(VRAM_MIRROR4L); + else SetVRAM_Mirror(VRAM_MIRROR4H); + break; - case 0x9002: - case 0x9080: - reg[8] = data; - break; + case 0x9002: + case 0x9080: + reg[8] = data; + break; - case 0xB000: - reg[0] = (byte)((reg[0] & 0xF0) | (data & 0x0F)); - SetVROM_1K_Bank(0, reg[0]); - break; - case 0xB002: - case 0xB040: - reg[0] = (byte)((reg[0] & 0x0F) | ((data & 0x0F) << 4)); - SetVROM_1K_Bank(0, reg[0]); - break; + case 0xB000: + reg[0] = (byte)((reg[0] & 0xF0) | (data & 0x0F)); + SetVROM_1K_Bank(0, reg[0]); + break; + case 0xB002: + case 0xB040: + reg[0] = (byte)((reg[0] & 0x0F) | ((data & 0x0F) << 4)); + SetVROM_1K_Bank(0, reg[0]); + break; - case 0xB001: - case 0xB004: - case 0xB080: - reg[1] = (byte)((reg[1] & 0xF0) | (data & 0x0F)); - SetVROM_1K_Bank(1, reg[1]); - break; - case 0xB003: - case 0xB006: - case 0xB0C0: - reg[1] = (byte)((reg[1] & 0x0F) | ((data & 0x0F) << 4)); - SetVROM_1K_Bank(1, reg[1]); - break; + case 0xB001: + case 0xB004: + case 0xB080: + reg[1] = (byte)((reg[1] & 0xF0) | (data & 0x0F)); + SetVROM_1K_Bank(1, reg[1]); + break; + case 0xB003: + case 0xB006: + case 0xB0C0: + reg[1] = (byte)((reg[1] & 0x0F) | ((data & 0x0F) << 4)); + SetVROM_1K_Bank(1, reg[1]); + break; - case 0xC000: - reg[2] = (byte)((reg[2] & 0xF0) | (data & 0x0F)); - SetVROM_1K_Bank(2, reg[2]); - break; - case 0xC002: - case 0xC040: - reg[2] = (byte)((reg[2] & 0x0F) | ((data & 0x0F) << 4)); - SetVROM_1K_Bank(2, reg[2]); - break; + case 0xC000: + reg[2] = (byte)((reg[2] & 0xF0) | (data & 0x0F)); + SetVROM_1K_Bank(2, reg[2]); + break; + case 0xC002: + case 0xC040: + reg[2] = (byte)((reg[2] & 0x0F) | ((data & 0x0F) << 4)); + SetVROM_1K_Bank(2, reg[2]); + break; - case 0xC001: - case 0xC004: - case 0xC080: - reg[3] = (byte)((reg[3] & 0xF0) | (data & 0x0F)); - SetVROM_1K_Bank(3, reg[3]); - break; - case 0xC003: - case 0xC006: - case 0xC0C0: - reg[3] = (byte)((reg[3] & 0x0F) | ((data & 0x0F) << 4)); - SetVROM_1K_Bank(3, reg[3]); - break; + case 0xC001: + case 0xC004: + case 0xC080: + reg[3] = (byte)((reg[3] & 0xF0) | (data & 0x0F)); + SetVROM_1K_Bank(3, reg[3]); + break; + case 0xC003: + case 0xC006: + case 0xC0C0: + reg[3] = (byte)((reg[3] & 0x0F) | ((data & 0x0F) << 4)); + SetVROM_1K_Bank(3, reg[3]); + break; - case 0xD000: - reg[4] = (byte)((reg[4] & 0xF0) | (data & 0x0F)); - SetVROM_1K_Bank(4, reg[4]); - break; - case 0xD002: - case 0xD040: - reg[4] = (byte)((reg[4] & 0x0F) | ((data & 0x0F) << 4)); - SetVROM_1K_Bank(4, reg[4]); - break; + case 0xD000: + reg[4] = (byte)((reg[4] & 0xF0) | (data & 0x0F)); + SetVROM_1K_Bank(4, reg[4]); + break; + case 0xD002: + case 0xD040: + reg[4] = (byte)((reg[4] & 0x0F) | ((data & 0x0F) << 4)); + SetVROM_1K_Bank(4, reg[4]); + break; - case 0xD001: - case 0xD004: - case 0xD080: - reg[5] = (byte)((reg[5] & 0xF0) | (data & 0x0F)); - SetVROM_1K_Bank(5, reg[5]); - break; - case 0xD003: - case 0xD006: - case 0xD0C0: - reg[5] = (byte)((reg[5] & 0x0F) | ((data & 0x0F) << 4)); - SetVROM_1K_Bank(5, reg[5]); - break; + case 0xD001: + case 0xD004: + case 0xD080: + reg[5] = (byte)((reg[5] & 0xF0) | (data & 0x0F)); + SetVROM_1K_Bank(5, reg[5]); + break; + case 0xD003: + case 0xD006: + case 0xD0C0: + reg[5] = (byte)((reg[5] & 0x0F) | ((data & 0x0F) << 4)); + SetVROM_1K_Bank(5, reg[5]); + break; - case 0xE000: - reg[6] = (byte)((reg[6] & 0xF0) | (data & 0x0F)); - SetVROM_1K_Bank(6, reg[6]); - break; - case 0xE002: - case 0xE040: - reg[6] = (byte)((reg[6] & 0x0F) | ((data & 0x0F) << 4)); - SetVROM_1K_Bank(6, reg[6]); - break; + case 0xE000: + reg[6] = (byte)((reg[6] & 0xF0) | (data & 0x0F)); + SetVROM_1K_Bank(6, reg[6]); + break; + case 0xE002: + case 0xE040: + reg[6] = (byte)((reg[6] & 0x0F) | ((data & 0x0F) << 4)); + SetVROM_1K_Bank(6, reg[6]); + break; - case 0xE001: - case 0xE004: - case 0xE080: - reg[7] = (byte)((reg[7] & 0xF0) | (data & 0x0F)); - SetVROM_1K_Bank(7, reg[7]); - break; - case 0xE003: - case 0xE006: - case 0xE0C0: - reg[7] = (byte)((reg[7] & 0x0F) | ((data & 0x0F) << 4)); - SetVROM_1K_Bank(7, reg[7]); - break; + case 0xE001: + case 0xE004: + case 0xE080: + reg[7] = (byte)((reg[7] & 0xF0) | (data & 0x0F)); + SetVROM_1K_Bank(7, reg[7]); + break; + case 0xE003: + case 0xE006: + case 0xE0C0: + reg[7] = (byte)((reg[7] & 0x0F) | ((data & 0x0F) << 4)); + SetVROM_1K_Bank(7, reg[7]); + break; - case 0xF000: - irq_latch = (byte)((irq_latch & 0xF0) | (data & 0x0F)); - break; - case 0xF002: - case 0xF040: - irq_latch = (byte)((irq_latch & 0x0F) | ((data & 0x0F) << 4)); - break; + case 0xF000: + irq_latch = (byte)((irq_latch & 0xF0) | (data & 0x0F)); + break; + case 0xF002: + case 0xF040: + irq_latch = (byte)((irq_latch & 0x0F) | ((data & 0x0F) << 4)); + break; - case 0xF003: - case 0xF0C0: - case 0xF006: - irq_enable = (byte)((irq_enable & 0x01) * 3); - irq_clock = 0; + case 0xF003: + case 0xF0C0: + case 0xF006: + irq_enable = (byte)((irq_enable & 0x01) * 3); + irq_clock = 0; - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; - case 0xF004: - case 0xF080: - irq_enable = (byte)(data & 0x03); - if ((irq_enable & 0x02) != 0) - { - irq_counter = irq_latch; - irq_clock = 0; - } + case 0xF004: + case 0xF080: + irq_enable = (byte)(data & 0x03); + if ((irq_enable & 0x02) != 0) + { + irq_counter = irq_latch; + irq_clock = 0; + } - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; - // case 0xF006: - // nes.cpu.ClrIRQ( IRQ_MAPPER ); - // break; - } - } + // case 0xF006: + // nes.cpu.ClrIRQ( IRQ_MAPPER ); + // break; + } + } - //void Mapper021::Clock(INT cycles) - public override void Clock(int cycles) - { - if ((irq_enable & 0x02) != 0) - { - if ((irq_clock -= cycles) < 0) - { - irq_clock += 0x72; - if (irq_counter == 0xFF) - { - irq_counter = irq_latch; - // irq_enable = (irq_enable & 0x01) * 3; - // nes.cpu.IRQ_NotPending(); - nes.cpu.SetIRQ(IRQ_MAPPER); - } - else - { - irq_counter++; - } - } - } - } + //void Mapper021::Clock(INT cycles) + public override void Clock(int cycles) + { + if ((irq_enable & 0x02) != 0) + { + if ((irq_clock -= cycles) < 0) + { + irq_clock += 0x72; + if (irq_counter == 0xFF) + { + irq_counter = irq_latch; + // irq_enable = (irq_enable & 0x01) * 3; + // nes.cpu.IRQ_NotPending(); + nes.cpu.SetIRQ(IRQ_MAPPER); + } + else + { + irq_counter++; + } + } + } + } - //void Mapper021::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - //for (INT i = 0; i < 9; i++) - //{ - // p[i] = reg[i]; - //} - //p[9] = irq_enable; - //p[10] = irq_counter; - //p[11] = irq_latch; - //*(INT*)&p[12] = irq_clock; - } + //void Mapper021::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + //for (INT i = 0; i < 9; i++) + //{ + // p[i] = reg[i]; + //} + //p[9] = irq_enable; + //p[10] = irq_counter; + //p[11] = irq_latch; + //*(INT*)&p[12] = irq_clock; + } - //void Mapper021::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - //for (INT i = 0; i < 9; i++) - //{ - // reg[i] = p[i]; - //} - //irq_enable = p[9]; - //irq_counter = p[10]; - //irq_latch = p[11]; - //irq_clock = *(INT*)&p[12]; - } + //void Mapper021::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + //for (INT i = 0; i < 9; i++) + //{ + // reg[i] = p[i]; + //} + //irq_enable = p[9]; + //irq_counter = p[10]; + //irq_latch = p[11]; + //irq_clock = *(INT*)&p[12]; + } - public override bool IsStateSave() - { - return true; - } - } + public override bool IsStateSave() + { + return true; + } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper022.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper022.cs index 6b204205..eeb44391 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper022.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper022.cs @@ -2,80 +2,77 @@ // Mapper022 Konami VRC2 type A // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper022 : Mapper - { - public Mapper022(NES parent) : base(parent) - { - } + public class Mapper022 : Mapper + { + public Mapper022(NES parent) : base(parent) + { + } - public override void Reset() - { - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - } + public override void Reset() + { + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + } - //void Mapper022::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - switch (addr) - { - case 0x8000: - SetPROM_8K_Bank(4, data); - break; + //void Mapper022::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + switch (addr) + { + case 0x8000: + SetPROM_8K_Bank(4, data); + break; - case 0x9000: - data &= 0x03; - if (data == 0) SetVRAM_Mirror(VRAM_VMIRROR); - else if (data == 1) SetVRAM_Mirror(VRAM_HMIRROR); - else if (data == 2) SetVRAM_Mirror(VRAM_MIRROR4H); - else SetVRAM_Mirror(VRAM_MIRROR4L); - break; + case 0x9000: + data &= 0x03; + if (data == 0) SetVRAM_Mirror(VRAM_VMIRROR); + else if (data == 1) SetVRAM_Mirror(VRAM_HMIRROR); + else if (data == 2) SetVRAM_Mirror(VRAM_MIRROR4H); + else SetVRAM_Mirror(VRAM_MIRROR4L); + break; - case 0xA000: - SetPROM_8K_Bank(5, data); - break; + case 0xA000: + SetPROM_8K_Bank(5, data); + break; - case 0xB000: - SetVROM_1K_Bank(0, data >> 1); - break; + case 0xB000: + SetVROM_1K_Bank(0, data >> 1); + break; - case 0xB001: - SetVROM_1K_Bank(1, data >> 1); - break; + case 0xB001: + SetVROM_1K_Bank(1, data >> 1); + break; - case 0xC000: - SetVROM_1K_Bank(2, data >> 1); - break; + case 0xC000: + SetVROM_1K_Bank(2, data >> 1); + break; - case 0xC001: - SetVROM_1K_Bank(3, data >> 1); - break; + case 0xC001: + SetVROM_1K_Bank(3, data >> 1); + break; - case 0xD000: - SetVROM_1K_Bank(4, data >> 1); - break; + case 0xD000: + SetVROM_1K_Bank(4, data >> 1); + break; - case 0xD001: - SetVROM_1K_Bank(5, data >> 1); - break; + case 0xD001: + SetVROM_1K_Bank(5, data >> 1); + break; - case 0xE000: - SetVROM_1K_Bank(6, data >> 1); - break; + case 0xE000: + SetVROM_1K_Bank(6, data >> 1); + break; - case 0xE001: - SetVROM_1K_Bank(7, data >> 1); - break; - } - } + case 0xE001: + SetVROM_1K_Bank(7, data >> 1); + break; + } + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper023.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper023.cs index 894259bf..570835af 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper023.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper023.cs @@ -1,271 +1,271 @@ ////////////////////////////////////////////////////////////////////////// // Mapper023 Konami VRC2 type B // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { - public class Mapper023 : Mapper - { + public class Mapper023 : Mapper + { - ushort addrmask; + ushort addrmask; - BYTE[] reg = new byte[9]; - BYTE irq_enable; - BYTE irq_counter; - BYTE irq_latch; - INT irq_clock; - public Mapper023(NES parent) : base(parent) - { - } + BYTE[] reg = new byte[9]; + BYTE irq_enable; + BYTE irq_counter; + BYTE irq_latch; + INT irq_clock; + public Mapper023(NES parent) : base(parent) + { + } - public override void Reset() - { - addrmask = 0xFFFF; + public override void Reset() + { + addrmask = 0xFFFF; - for (byte i = 0; i < 8; i++) - { - reg[i] = i; - } - reg[8] = 0; + for (byte i = 0; i < 8; i++) + { + reg[i] = i; + } + reg[8] = 0; - irq_enable = 0; - irq_counter = 0; - irq_latch = 0; - irq_clock = 0; + irq_enable = 0; + irq_counter = 0; + irq_latch = 0; + irq_clock = 0; - reg[9] = 1; + reg[9] = 1; - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - SetVROM_8K_Bank(0); + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + SetVROM_8K_Bank(0); - // nes.SetRenderMethod( NES::POST_RENDER ); + // nes.SetRenderMethod( NES::POST_RENDER ); - uint crc = nes.rom.GetPROM_CRC(); + uint crc = nes.rom.GetPROM_CRC(); - if (crc == 0x93794634 // Akumajou Special Boku Dracula Kun(J) - || crc == 0xc7829dae // Akumajou Special Boku Dracula Kun(T-Eng) - || crc == 0xf82dc02f) - { // Akumajou Special Boku Dracula Kun(T-Eng v1.02) - addrmask = 0xF00C; - nes.SetRenderMethod(EnumRenderMethod.POST_ALL_RENDER); - } - if (crc == 0xdd53c4ae) - { // Tiny Toon Adventures(J) - nes.SetRenderMethod(EnumRenderMethod.POST_ALL_RENDER); - } - } + if (crc == 0x93794634 // Akumajou Special Boku Dracula Kun(J) + || crc == 0xc7829dae // Akumajou Special Boku Dracula Kun(T-Eng) + || crc == 0xf82dc02f) + { // Akumajou Special Boku Dracula Kun(T-Eng v1.02) + addrmask = 0xF00C; + nes.SetRenderMethod(EnumRenderMethod.POST_ALL_RENDER); + } + if (crc == 0xdd53c4ae) + { // Tiny Toon Adventures(J) + nes.SetRenderMethod(EnumRenderMethod.POST_ALL_RENDER); + } + } - //void Mapper023::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - //DEBUGOUT( "MPRWR A=%04X D=%02X L=%3d CYC=%d\n", addr&0xFFFF, data&0xFF, nes.GetScanline(), nes.cpu.GetTotalCycles() ); - switch (addr & addrmask) - { - case 0x8000: - case 0x8004: - case 0x8008: - case 0x800C: - if (reg[8] != 0) - { - SetPROM_8K_Bank(6, data); - } - else - { - SetPROM_8K_Bank(4, data); - } - break; + //void Mapper023::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + //DEBUGOUT( "MPRWR A=%04X D=%02X L=%3d CYC=%d\n", addr&0xFFFF, data&0xFF, nes.GetScanline(), nes.cpu.GetTotalCycles() ); + switch (addr & addrmask) + { + case 0x8000: + case 0x8004: + case 0x8008: + case 0x800C: + if (reg[8] != 0) + { + SetPROM_8K_Bank(6, data); + } + else + { + SetPROM_8K_Bank(4, data); + } + break; - case 0x9000: - if (data != 0xFF) - { - data &= 0x03; - if (data == 0) SetVRAM_Mirror(VRAM_VMIRROR); - else if (data == 1) SetVRAM_Mirror(VRAM_HMIRROR); - else if (data == 2) SetVRAM_Mirror(VRAM_MIRROR4L); - else SetVRAM_Mirror(VRAM_MIRROR4H); - } - break; + case 0x9000: + if (data != 0xFF) + { + data &= 0x03; + if (data == 0) SetVRAM_Mirror(VRAM_VMIRROR); + else if (data == 1) SetVRAM_Mirror(VRAM_HMIRROR); + else if (data == 2) SetVRAM_Mirror(VRAM_MIRROR4L); + else SetVRAM_Mirror(VRAM_MIRROR4H); + } + break; - case 0x9008: - reg[8] = (byte)(data & 0x02); - break; + case 0x9008: + reg[8] = (byte)(data & 0x02); + break; - case 0xA000: - case 0xA004: - case 0xA008: - case 0xA00C: - SetPROM_8K_Bank(5, data); - break; + case 0xA000: + case 0xA004: + case 0xA008: + case 0xA00C: + SetPROM_8K_Bank(5, data); + break; - case 0xB000: - reg[0] = (byte)((reg[0] & 0xF0) | (data & 0x0F)); - SetVROM_1K_Bank(0, reg[0]); - break; - case 0xB001: - case 0xB004: - reg[0] = ((byte)((reg[0] & 0x0F) | ((data & 0x0F) << 4))); - SetVROM_1K_Bank(0, reg[0]); - break; + case 0xB000: + reg[0] = (byte)((reg[0] & 0xF0) | (data & 0x0F)); + SetVROM_1K_Bank(0, reg[0]); + break; + case 0xB001: + case 0xB004: + reg[0] = ((byte)((reg[0] & 0x0F) | ((data & 0x0F) << 4))); + SetVROM_1K_Bank(0, reg[0]); + break; - case 0xB002: - case 0xB008: - reg[1] = (byte)((reg[1] & 0xF0) | (data & 0x0F)); - SetVROM_1K_Bank(1, reg[1]); - break; + case 0xB002: + case 0xB008: + reg[1] = (byte)((reg[1] & 0xF0) | (data & 0x0F)); + SetVROM_1K_Bank(1, reg[1]); + break; - case 0xB003: - case 0xB00C: - reg[1] = (byte)((reg[1] & 0x0F) | ((data & 0x0F) << 4)); - SetVROM_1K_Bank(1, reg[1]); - break; + case 0xB003: + case 0xB00C: + reg[1] = (byte)((reg[1] & 0x0F) | ((data & 0x0F) << 4)); + SetVROM_1K_Bank(1, reg[1]); + break; - case 0xC000: - reg[2] = (byte)((reg[2] & 0xF0) | (data & 0x0F)); - SetVROM_1K_Bank(2, reg[2]); - break; + case 0xC000: + reg[2] = (byte)((reg[2] & 0xF0) | (data & 0x0F)); + SetVROM_1K_Bank(2, reg[2]); + break; - case 0xC001: - case 0xC004: - reg[2] = (byte)((reg[2] & 0x0F) | ((data & 0x0F) << 4)); - SetVROM_1K_Bank(2, reg[2]); - break; + case 0xC001: + case 0xC004: + reg[2] = (byte)((reg[2] & 0x0F) | ((data & 0x0F) << 4)); + SetVROM_1K_Bank(2, reg[2]); + break; - case 0xC002: - case 0xC008: - reg[3] = (byte)((reg[3] & 0xF0) | (data & 0x0F)); - SetVROM_1K_Bank(3, reg[3]); - break; + case 0xC002: + case 0xC008: + reg[3] = (byte)((reg[3] & 0xF0) | (data & 0x0F)); + SetVROM_1K_Bank(3, reg[3]); + break; - case 0xC003: - case 0xC00C: - reg[3] = (byte)((reg[3] & 0x0F) | ((data & 0x0F) << 4)); - SetVROM_1K_Bank(3, reg[3]); - break; + case 0xC003: + case 0xC00C: + reg[3] = (byte)((reg[3] & 0x0F) | ((data & 0x0F) << 4)); + SetVROM_1K_Bank(3, reg[3]); + break; - case 0xD000: - reg[4] = (byte)((reg[4] & 0xF0) | (data & 0x0F)); - SetVROM_1K_Bank(4, reg[4]); - break; + case 0xD000: + reg[4] = (byte)((reg[4] & 0xF0) | (data & 0x0F)); + SetVROM_1K_Bank(4, reg[4]); + break; - case 0xD001: - case 0xD004: - reg[4] = (byte)((reg[4] & 0x0F) | ((data & 0x0F) << 4)); - SetVROM_1K_Bank(4, reg[4]); - break; + case 0xD001: + case 0xD004: + reg[4] = (byte)((reg[4] & 0x0F) | ((data & 0x0F) << 4)); + SetVROM_1K_Bank(4, reg[4]); + break; - case 0xD002: - case 0xD008: - reg[5] = (byte)((reg[5] & 0xF0) | (data & 0x0F)); - SetVROM_1K_Bank(5, reg[5]); - break; + case 0xD002: + case 0xD008: + reg[5] = (byte)((reg[5] & 0xF0) | (data & 0x0F)); + SetVROM_1K_Bank(5, reg[5]); + break; - case 0xD003: - case 0xD00C: - reg[5] = (byte)((reg[5] & 0x0F) | ((data & 0x0F) << 4)); - SetVROM_1K_Bank(5, reg[5]); - break; + case 0xD003: + case 0xD00C: + reg[5] = (byte)((reg[5] & 0x0F) | ((data & 0x0F) << 4)); + SetVROM_1K_Bank(5, reg[5]); + break; - case 0xE000: - reg[6] = (byte)((reg[6] & 0xF0) | (data & 0x0F)); - SetVROM_1K_Bank(6, reg[6]); - break; + case 0xE000: + reg[6] = (byte)((reg[6] & 0xF0) | (data & 0x0F)); + SetVROM_1K_Bank(6, reg[6]); + break; - case 0xE001: - case 0xE004: - reg[6] = (byte)((reg[6] & 0x0F) | ((data & 0x0F) << 4)); - SetVROM_1K_Bank(6, reg[6]); - break; + case 0xE001: + case 0xE004: + reg[6] = (byte)((reg[6] & 0x0F) | ((data & 0x0F) << 4)); + SetVROM_1K_Bank(6, reg[6]); + break; - case 0xE002: - case 0xE008: - reg[7] = (byte)((reg[7] & 0xF0) | (data & 0x0F)); - SetVROM_1K_Bank(7, reg[7]); - break; + case 0xE002: + case 0xE008: + reg[7] = (byte)((reg[7] & 0xF0) | (data & 0x0F)); + SetVROM_1K_Bank(7, reg[7]); + break; - case 0xE003: - case 0xE00C: - reg[7] = ((byte)((reg[7] & 0x0F) | ((data & 0x0F) << 4))); - SetVROM_1K_Bank(7, reg[7]); - break; + case 0xE003: + case 0xE00C: + reg[7] = ((byte)((reg[7] & 0x0F) | ((data & 0x0F) << 4))); + SetVROM_1K_Bank(7, reg[7]); + break; - case 0xF000: - irq_latch = (byte)((irq_latch & 0xF0) | (data & 0x0F)); - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; - case 0xF004: - irq_latch = (byte)((irq_latch & 0x0F) | ((data & 0x0F) << 4)); - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; + case 0xF000: + irq_latch = (byte)((irq_latch & 0xF0) | (data & 0x0F)); + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; + case 0xF004: + irq_latch = (byte)((irq_latch & 0x0F) | ((data & 0x0F) << 4)); + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; - case 0xF008: - irq_enable = (byte)(data & 0x03); - irq_counter = irq_latch; - irq_clock = 0; - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; + case 0xF008: + irq_enable = (byte)(data & 0x03); + irq_counter = irq_latch; + irq_clock = 0; + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; - case 0xF00C: - irq_enable = (byte)((irq_enable & 0x01) * 3); - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; - } - } + case 0xF00C: + irq_enable = (byte)((irq_enable & 0x01) * 3); + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; + } + } - //void Mapper023::Clock(INT cycles) - public override void Clock(int cycles) - { - if ((irq_enable & 0x02) != 0) - { - irq_clock += cycles * 3; - while (irq_clock >= 341) - { - irq_clock -= 341; - irq_counter++; - if (irq_counter == 0) - { - irq_counter = irq_latch; - nes.cpu.SetIRQ(IRQ_MAPPER); - } - } - } - } + //void Mapper023::Clock(INT cycles) + public override void Clock(int cycles) + { + if ((irq_enable & 0x02) != 0) + { + irq_clock += cycles * 3; + while (irq_clock >= 341) + { + irq_clock -= 341; + irq_counter++; + if (irq_counter == 0) + { + irq_counter = irq_latch; + nes.cpu.SetIRQ(IRQ_MAPPER); + } + } + } + } - //void Mapper023::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - //for (INT i = 0; i < 9; i++) - //{ - // p[i] = reg[i]; - //} - //p[9] = irq_enable; - //p[10] = irq_counter; - //p[11] = irq_latch; - //*(INT*)&p[12] = irq_clock; - } + //void Mapper023::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + //for (INT i = 0; i < 9; i++) + //{ + // p[i] = reg[i]; + //} + //p[9] = irq_enable; + //p[10] = irq_counter; + //p[11] = irq_latch; + //*(INT*)&p[12] = irq_clock; + } - //void Mapper023::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - //for (INT i = 0; i < 9; i++) - //{ - // reg[i] = p[i]; - //} - //irq_enable = p[9]; - //irq_counter = p[10]; - //irq_latch = p[11]; - //irq_clock = *(INT*)&p[12]; - } + //void Mapper023::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + //for (INT i = 0; i < 9; i++) + //{ + // reg[i] = p[i]; + //} + //irq_enable = p[9]; + //irq_counter = p[10]; + //irq_latch = p[11]; + //irq_clock = *(INT*)&p[12]; + } - public override bool IsStateSave() - { - return true; - } - } + public override bool IsStateSave() + { + return true; + } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper024.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper024.cs index 77d31af4..f5c0e048 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper024.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper024.cs @@ -1,174 +1,174 @@ ////////////////////////////////////////////////////////////////////////// // Mapper024 Konami VRC6 (Normal) // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { - public class Mapper024 : Mapper - { - BYTE irq_enable; - BYTE irq_counter; - BYTE irq_latch; - INT irq_clock; - public Mapper024(NES parent) : base(parent) - { - } + public class Mapper024 : Mapper + { + BYTE irq_enable; + BYTE irq_counter; + BYTE irq_latch; + INT irq_clock; + public Mapper024(NES parent) : base(parent) + { + } - public override void Reset() - { - irq_enable = 0; - irq_counter = 0; - irq_latch = 0; - irq_clock = 0; + public override void Reset() + { + irq_enable = 0; + irq_counter = 0; + irq_latch = 0; + irq_clock = 0; - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - if (VROM_1K_SIZE != 0) - { - SetVROM_8K_Bank(0); - } + if (VROM_1K_SIZE != 0) + { + SetVROM_8K_Bank(0); + } - nes.SetRenderMethod(EnumRenderMethod.POST_RENDER); - // nes.SetRenderMethod( NES::PRE_RENDER ); + nes.SetRenderMethod(EnumRenderMethod.POST_RENDER); + // nes.SetRenderMethod( NES::PRE_RENDER ); - nes.apu.SelectExSound(1); - } + nes.apu.SelectExSound(1); + } - //void Mapper024::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - switch (addr & 0xF003) - { - case 0x8000: - SetPROM_16K_Bank(4, data); - break; + //void Mapper024::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + switch (addr & 0xF003) + { + case 0x8000: + SetPROM_16K_Bank(4, data); + break; - case 0x9000: - case 0x9001: - case 0x9002: - case 0xA000: - case 0xA001: - case 0xA002: - case 0xB000: - case 0xB001: - case 0xB002: - nes.apu.ExWrite(addr, data); - break; + case 0x9000: + case 0x9001: + case 0x9002: + case 0xA000: + case 0xA001: + case 0xA002: + case 0xB000: + case 0xB001: + case 0xB002: + nes.apu.ExWrite(addr, data); + break; - case 0xB003: - data = (byte)(data & 0x0C); - if (data == 0x00) SetVRAM_Mirror(VRAM_VMIRROR); - else if (data == 0x04) SetVRAM_Mirror(VRAM_HMIRROR); - else if (data == 0x08) SetVRAM_Mirror(VRAM_MIRROR4L); - else if (data == 0x0C) SetVRAM_Mirror(VRAM_MIRROR4H); - break; + case 0xB003: + data = (byte)(data & 0x0C); + if (data == 0x00) SetVRAM_Mirror(VRAM_VMIRROR); + else if (data == 0x04) SetVRAM_Mirror(VRAM_HMIRROR); + else if (data == 0x08) SetVRAM_Mirror(VRAM_MIRROR4L); + else if (data == 0x0C) SetVRAM_Mirror(VRAM_MIRROR4H); + break; - case 0xC000: - SetPROM_8K_Bank(6, data); - break; + case 0xC000: + SetPROM_8K_Bank(6, data); + break; - case 0xD000: - SetVROM_1K_Bank(0, data); - break; + case 0xD000: + SetVROM_1K_Bank(0, data); + break; - case 0xD001: - SetVROM_1K_Bank(1, data); - break; + case 0xD001: + SetVROM_1K_Bank(1, data); + break; - case 0xD002: - SetVROM_1K_Bank(2, data); - break; + case 0xD002: + SetVROM_1K_Bank(2, data); + break; - case 0xD003: - SetVROM_1K_Bank(3, data); - break; + case 0xD003: + SetVROM_1K_Bank(3, data); + break; - case 0xE000: - SetVROM_1K_Bank(4, data); - break; + case 0xE000: + SetVROM_1K_Bank(4, data); + break; - case 0xE001: - SetVROM_1K_Bank(5, data); - break; + case 0xE001: + SetVROM_1K_Bank(5, data); + break; - case 0xE002: - SetVROM_1K_Bank(6, data); - break; + case 0xE002: + SetVROM_1K_Bank(6, data); + break; - case 0xE003: - SetVROM_1K_Bank(7, data); - break; + case 0xE003: + SetVROM_1K_Bank(7, data); + break; - case 0xF000: - irq_latch = data; - break; - case 0xF001: - irq_enable = (byte)(data & 0x03); - if ((irq_enable & 0x02) != 0) - { - irq_counter = irq_latch; - irq_clock = 0; - } - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; - case 0xF002: - irq_enable = (byte)((irq_enable & 0x01) * 3); - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; - } - } + case 0xF000: + irq_latch = data; + break; + case 0xF001: + irq_enable = (byte)(data & 0x03); + if ((irq_enable & 0x02) != 0) + { + irq_counter = irq_latch; + irq_clock = 0; + } + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; + case 0xF002: + irq_enable = (byte)((irq_enable & 0x01) * 3); + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; + } + } - //void Mapper024::Clock(INT cycles) - public override void Clock(int cycles) - { - if ((irq_enable & 0x02) != 0) - { - if ((irq_clock += cycles) >= 0x72) - { - irq_clock -= 0x72; - if (irq_counter == 0xFF) - { - irq_counter = irq_latch; - // nes.cpu.IRQ_NotPending(); - nes.cpu.SetIRQ(IRQ_MAPPER); - } - else - { - irq_counter++; - } - } - } - } + //void Mapper024::Clock(INT cycles) + public override void Clock(int cycles) + { + if ((irq_enable & 0x02) != 0) + { + if ((irq_clock += cycles) >= 0x72) + { + irq_clock -= 0x72; + if (irq_counter == 0xFF) + { + irq_counter = irq_latch; + // nes.cpu.IRQ_NotPending(); + nes.cpu.SetIRQ(IRQ_MAPPER); + } + else + { + irq_counter++; + } + } + } + } - //void Mapper024::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - //p[0] = irq_enable; - //p[1] = irq_counter; - //p[2] = irq_latch; - //*(INT*)&p[3] = irq_clock; - } + //void Mapper024::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + //p[0] = irq_enable; + //p[1] = irq_counter; + //p[2] = irq_latch; + //*(INT*)&p[3] = irq_clock; + } - //void Mapper024::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - //irq_enable = p[0]; - //irq_counter = p[1]; - //irq_latch = p[2]; - //irq_clock = *(INT*)&p[3]; - } + //void Mapper024::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + //irq_enable = p[0]; + //irq_counter = p[1]; + //irq_latch = p[2]; + //irq_clock = *(INT*)&p[3]; + } - public override bool IsStateSave() - { - return true; - } + public override bool IsStateSave() + { + return true; + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper025.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper025.cs index 20a74ff8..24ef68fc 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper025.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper025.cs @@ -1,278 +1,278 @@ ////////////////////////////////////////////////////////////////////////// // Mapper025 Konami VRC4 (Normal) // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { - public class Mapper025 : Mapper - { - BYTE[] reg = new byte[11]; - BYTE irq_enable; - BYTE irq_latch; - BYTE irq_occur; - BYTE irq_counter; - INT irq_clock; - public Mapper025(NES parent) : base(parent) - { - } + public class Mapper025 : Mapper + { + BYTE[] reg = new byte[11]; + BYTE irq_enable; + BYTE irq_latch; + BYTE irq_occur; + BYTE irq_counter; + INT irq_clock; + public Mapper025(NES parent) : base(parent) + { + } - public override void Reset() - { - for (INT i = 0; i < 11; i++) - { - reg[i] = 0; - } - reg[9] = (byte)(PROM_8K_SIZE - 2); + public override void Reset() + { + for (INT i = 0; i < 11; i++) + { + reg[i] = 0; + } + reg[9] = (byte)(PROM_8K_SIZE - 2); - irq_enable = 0; - irq_counter = 0; - irq_latch = 0; - irq_occur = 0; - irq_clock = 0; + irq_enable = 0; + irq_counter = 0; + irq_latch = 0; + irq_occur = 0; + irq_clock = 0; - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - if (VROM_1K_SIZE != 0) - { - SetVROM_8K_Bank(0); - } + if (VROM_1K_SIZE != 0) + { + SetVROM_8K_Bank(0); + } - uint crc = nes.rom.GetPROM_CRC(); - if (crc == 0xc71d4ce7) - { // Gradius II(J) - // nes.SetRenderMethod( NES::POST_RENDER ); - } - if (crc == 0xa2e68da8) - { // For Racer Mini Yonku - Japan Cup(J) - nes.SetRenderMethod(EnumRenderMethod.TILE_RENDER); - } - if (crc == 0xea74c587) - { // For Teenage Mutant Ninja Turtles(J) - nes.SetRenderMethod(EnumRenderMethod.TILE_RENDER); - } - if (crc == 0x5f82cb7d) - { // For Teenage Mutant Ninja Turtles 2(J) - } - if (crc == 0x0bbd85ff) - { // For Bio Miracle Bokutte Upa(J) - nes.SetRenderMethod(EnumRenderMethod.PRE_ALL_RENDER); - } - } + uint crc = nes.rom.GetPROM_CRC(); + if (crc == 0xc71d4ce7) + { // Gradius II(J) + // nes.SetRenderMethod( NES::POST_RENDER ); + } + if (crc == 0xa2e68da8) + { // For Racer Mini Yonku - Japan Cup(J) + nes.SetRenderMethod(EnumRenderMethod.TILE_RENDER); + } + if (crc == 0xea74c587) + { // For Teenage Mutant Ninja Turtles(J) + nes.SetRenderMethod(EnumRenderMethod.TILE_RENDER); + } + if (crc == 0x5f82cb7d) + { // For Teenage Mutant Ninja Turtles 2(J) + } + if (crc == 0x0bbd85ff) + { // For Bio Miracle Bokutte Upa(J) + nes.SetRenderMethod(EnumRenderMethod.PRE_ALL_RENDER); + } + } - //void Mapper025::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - //if( addr >= 0xF000 ) - //DEBUGOUT( "M25 WR $%04X=$%02X L=%3d\n", addr, data, nes.GetScanline() ); + //void Mapper025::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + //if( addr >= 0xF000 ) + //DEBUGOUT( "M25 WR $%04X=$%02X L=%3d\n", addr, data, nes.GetScanline() ); - switch (addr & 0xF000) - { - case 0x8000: - if ((reg[10] & 0x02) != 0) - { - reg[9] = data; - SetPROM_8K_Bank(6, data); - } - else - { - reg[8] = data; - SetPROM_8K_Bank(4, data); - } - break; - case 0xA000: - SetPROM_8K_Bank(5, data); - break; - } + switch (addr & 0xF000) + { + case 0x8000: + if ((reg[10] & 0x02) != 0) + { + reg[9] = data; + SetPROM_8K_Bank(6, data); + } + else + { + reg[8] = data; + SetPROM_8K_Bank(4, data); + } + break; + case 0xA000: + SetPROM_8K_Bank(5, data); + break; + } - switch (addr & 0xF00F) - { - case 0x9000: - data &= 0x03; - if (data == 0) SetVRAM_Mirror(VRAM_VMIRROR); - else if (data == 1) SetVRAM_Mirror(VRAM_HMIRROR); - else if (data == 2) SetVRAM_Mirror(VRAM_MIRROR4L); - else SetVRAM_Mirror(VRAM_MIRROR4H); - break; + switch (addr & 0xF00F) + { + case 0x9000: + data &= 0x03; + if (data == 0) SetVRAM_Mirror(VRAM_VMIRROR); + else if (data == 1) SetVRAM_Mirror(VRAM_HMIRROR); + else if (data == 2) SetVRAM_Mirror(VRAM_MIRROR4L); + else SetVRAM_Mirror(VRAM_MIRROR4H); + break; - case 0x9001: - case 0x9004: - if ((reg[10] & 0x02) != (data & 0x02)) - { - BYTE swap = reg[8]; - reg[8] = reg[9]; - reg[9] = swap; + case 0x9001: + case 0x9004: + if ((reg[10] & 0x02) != (data & 0x02)) + { + BYTE swap = reg[8]; + reg[8] = reg[9]; + reg[9] = swap; - SetPROM_8K_Bank(4, reg[8]); - SetPROM_8K_Bank(6, reg[9]); - } - reg[10] = data; - break; + SetPROM_8K_Bank(4, reg[8]); + SetPROM_8K_Bank(6, reg[9]); + } + reg[10] = data; + break; - case 0xB000: - reg[0] = (byte)((reg[0] & 0xF0) | (data & 0x0F)); - SetVROM_1K_Bank(0, reg[0]); - break; - case 0xB002: - case 0xB008: - reg[0] = (byte)((reg[0] & 0x0F) | ((data & 0x0F) << 4)); - SetVROM_1K_Bank(0, reg[0]); - break; + case 0xB000: + reg[0] = (byte)((reg[0] & 0xF0) | (data & 0x0F)); + SetVROM_1K_Bank(0, reg[0]); + break; + case 0xB002: + case 0xB008: + reg[0] = (byte)((reg[0] & 0x0F) | ((data & 0x0F) << 4)); + SetVROM_1K_Bank(0, reg[0]); + break; - case 0xB001: - case 0xB004: - reg[1] = (byte)((reg[1] & 0xF0) | (data & 0x0F)); - SetVROM_1K_Bank(1, reg[1]); - break; - case 0xB003: - case 0xB00C: - reg[1] = (byte)((reg[1] & 0x0F) | ((data & 0x0F) << 4)); - SetVROM_1K_Bank(1, reg[1]); - break; + case 0xB001: + case 0xB004: + reg[1] = (byte)((reg[1] & 0xF0) | (data & 0x0F)); + SetVROM_1K_Bank(1, reg[1]); + break; + case 0xB003: + case 0xB00C: + reg[1] = (byte)((reg[1] & 0x0F) | ((data & 0x0F) << 4)); + SetVROM_1K_Bank(1, reg[1]); + break; - case 0xC000: - reg[2] = (byte)((reg[2] & 0xF0) | (data & 0x0F)); - SetVROM_1K_Bank(2, reg[2]); - break; - case 0xC002: - case 0xC008: - reg[2] = (byte)((reg[2] & 0x0F) | ((data & 0x0F) << 4)); - SetVROM_1K_Bank(2, reg[2]); - break; + case 0xC000: + reg[2] = (byte)((reg[2] & 0xF0) | (data & 0x0F)); + SetVROM_1K_Bank(2, reg[2]); + break; + case 0xC002: + case 0xC008: + reg[2] = (byte)((reg[2] & 0x0F) | ((data & 0x0F) << 4)); + SetVROM_1K_Bank(2, reg[2]); + break; - case 0xC001: - case 0xC004: - reg[3] = (byte)((reg[3] & 0xF0) | (data & 0x0F)); - SetVROM_1K_Bank(3, reg[3]); - break; - case 0xC003: - case 0xC00C: - reg[3] = (byte)((reg[3] & 0x0F) | ((data & 0x0F) << 4)); - SetVROM_1K_Bank(3, reg[3]); - break; + case 0xC001: + case 0xC004: + reg[3] = (byte)((reg[3] & 0xF0) | (data & 0x0F)); + SetVROM_1K_Bank(3, reg[3]); + break; + case 0xC003: + case 0xC00C: + reg[3] = (byte)((reg[3] & 0x0F) | ((data & 0x0F) << 4)); + SetVROM_1K_Bank(3, reg[3]); + break; - case 0xD000: - reg[4] = (byte)((reg[4] & 0xF0) | (data & 0x0F)); - SetVROM_1K_Bank(4, reg[4]); - break; - case 0xD002: - case 0xD008: - reg[4] = (byte)((reg[4] & 0x0F) | ((data & 0x0F) << 4)); - SetVROM_1K_Bank(4, reg[4]); - break; + case 0xD000: + reg[4] = (byte)((reg[4] & 0xF0) | (data & 0x0F)); + SetVROM_1K_Bank(4, reg[4]); + break; + case 0xD002: + case 0xD008: + reg[4] = (byte)((reg[4] & 0x0F) | ((data & 0x0F) << 4)); + SetVROM_1K_Bank(4, reg[4]); + break; - case 0xD001: - case 0xD004: - reg[5] = (byte)((reg[5] & 0xF0) | (data & 0x0F)); - SetVROM_1K_Bank(5, reg[5]); - break; - case 0xD003: - case 0xD00C: - reg[5] = (byte)((reg[5] & 0x0F) | ((data & 0x0F) << 4)); - SetVROM_1K_Bank(5, reg[5]); - break; + case 0xD001: + case 0xD004: + reg[5] = (byte)((reg[5] & 0xF0) | (data & 0x0F)); + SetVROM_1K_Bank(5, reg[5]); + break; + case 0xD003: + case 0xD00C: + reg[5] = (byte)((reg[5] & 0x0F) | ((data & 0x0F) << 4)); + SetVROM_1K_Bank(5, reg[5]); + break; - case 0xE000: - reg[6] = (byte)((reg[6] & 0xF0) | (data & 0x0F)); - SetVROM_1K_Bank(6, reg[6]); - break; - case 0xE002: - case 0xE008: - reg[6] = (byte)((reg[6] & 0x0F) | ((data & 0x0F) << 4)); - SetVROM_1K_Bank(6, reg[6]); - break; + case 0xE000: + reg[6] = (byte)((reg[6] & 0xF0) | (data & 0x0F)); + SetVROM_1K_Bank(6, reg[6]); + break; + case 0xE002: + case 0xE008: + reg[6] = (byte)((reg[6] & 0x0F) | ((data & 0x0F) << 4)); + SetVROM_1K_Bank(6, reg[6]); + break; - case 0xE001: - case 0xE004: - reg[7] = (byte)((reg[7] & 0xF0) | (data & 0x0F)); - SetVROM_1K_Bank(7, reg[7]); - break; - case 0xE003: - case 0xE00C: - reg[7] = (byte)((reg[7] & 0x0F) | ((data & 0x0F) << 4)); - SetVROM_1K_Bank(7, reg[7]); - break; + case 0xE001: + case 0xE004: + reg[7] = (byte)((reg[7] & 0xF0) | (data & 0x0F)); + SetVROM_1K_Bank(7, reg[7]); + break; + case 0xE003: + case 0xE00C: + reg[7] = (byte)((reg[7] & 0x0F) | ((data & 0x0F) << 4)); + SetVROM_1K_Bank(7, reg[7]); + break; - case 0xF000: - irq_latch = (byte)((irq_latch & 0xF0) | (data & 0x0F)); - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; + case 0xF000: + irq_latch = (byte)((irq_latch & 0xF0) | (data & 0x0F)); + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; - case 0xF002: - case 0xF008: - irq_latch = (byte)((irq_latch & 0x0F) | ((data & 0x0F) << 4)); - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; + case 0xF002: + case 0xF008: + irq_latch = (byte)((irq_latch & 0x0F) | ((data & 0x0F) << 4)); + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; - case 0xF001: - case 0xF004: - irq_enable = (byte)(data & 0x03); - // irq_counter = 0x100 - irq_latch; - irq_counter = irq_latch; - irq_clock = 0; - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; + case 0xF001: + case 0xF004: + irq_enable = (byte)(data & 0x03); + // irq_counter = 0x100 - irq_latch; + irq_counter = irq_latch; + irq_clock = 0; + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; - case 0xF003: - case 0xF00C: - irq_enable = (byte)((irq_enable & 0x01) * 3); - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; - } - } + case 0xF003: + case 0xF00C: + irq_enable = (byte)((irq_enable & 0x01) * 3); + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; + } + } - //void Mapper025::Clock(INT cycles) - public override void Clock(int cycles) - { - if ((irq_enable & 0x02) != 0) - { - irq_clock += cycles * 3; - while (irq_clock >= 341) - { - irq_clock -= 341; - irq_counter++; - if (irq_counter == 0) - { - irq_counter = irq_latch; - nes.cpu.SetIRQ(IRQ_MAPPER); - } - } - } - } + //void Mapper025::Clock(INT cycles) + public override void Clock(int cycles) + { + if ((irq_enable & 0x02) != 0) + { + irq_clock += cycles * 3; + while (irq_clock >= 341) + { + irq_clock -= 341; + irq_counter++; + if (irq_counter == 0) + { + irq_counter = irq_latch; + nes.cpu.SetIRQ(IRQ_MAPPER); + } + } + } + } - //void Mapper025::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - //for (INT i = 0; i < 11; i++) - //{ - // p[i] = reg[i]; - //} - //p[11] = irq_enable; - //p[12] = irq_occur; - //p[13] = irq_latch; - //p[14] = irq_counter; - //*((INT*)&p[15]) = irq_clock; - } + //void Mapper025::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + //for (INT i = 0; i < 11; i++) + //{ + // p[i] = reg[i]; + //} + //p[11] = irq_enable; + //p[12] = irq_occur; + //p[13] = irq_latch; + //p[14] = irq_counter; + //*((INT*)&p[15]) = irq_clock; + } - //void Mapper025::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - //for (INT i = 0; i < 11; i++) - //{ - // reg[i] = p[i]; - //} - //irq_enable = p[11]; - //irq_occur = p[12]; - //irq_latch = p[13]; - //irq_counter = p[14]; - //irq_clock = *((INT*)&p[15]); - } + //void Mapper025::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + //for (INT i = 0; i < 11; i++) + //{ + // reg[i] = p[i]; + //} + //irq_enable = p[11]; + //irq_occur = p[12]; + //irq_latch = p[13]; + //irq_counter = p[14]; + //irq_clock = *((INT*)&p[15]); + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper026.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper026.cs index e6771773..08acf5e1 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper026.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper026.cs @@ -1,185 +1,185 @@ ////////////////////////////////////////////////////////////////////////// // Mapper026 Konami VRC6 (PA0,PA1 reverse) // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { - public class Mapper026 : Mapper - { + public class Mapper026 : Mapper + { - BYTE irq_enable; - BYTE irq_counter; - BYTE irq_latch; - INT irq_clock; - public Mapper026(NES parent) : base(parent) - { - } + BYTE irq_enable; + BYTE irq_counter; + BYTE irq_latch; + INT irq_clock; + public Mapper026(NES parent) : base(parent) + { + } - public override void Reset() - { - irq_enable = 0; - irq_counter = 0; - irq_latch = 0; - irq_clock = 0; + public override void Reset() + { + irq_enable = 0; + irq_counter = 0; + irq_latch = 0; + irq_clock = 0; - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - if (VROM_1K_SIZE != 0) - { - SetVROM_8K_Bank(0); - } + if (VROM_1K_SIZE != 0) + { + SetVROM_8K_Bank(0); + } - uint crc = nes.rom.GetPROM_CRC(); - if (crc == 0x30e64d03) - { // Esper Dream 2 - Aratanaru Tatakai(J) - nes.SetRenderMethod(EnumRenderMethod.POST_ALL_RENDER); - } - if (crc == 0x836cc1ab) - { // Mouryou Senki Madara(J) - nes.SetRenderMethod(EnumRenderMethod.POST_ALL_RENDER); - } - nes.apu.SelectExSound(1); - } + uint crc = nes.rom.GetPROM_CRC(); + if (crc == 0x30e64d03) + { // Esper Dream 2 - Aratanaru Tatakai(J) + nes.SetRenderMethod(EnumRenderMethod.POST_ALL_RENDER); + } + if (crc == 0x836cc1ab) + { // Mouryou Senki Madara(J) + nes.SetRenderMethod(EnumRenderMethod.POST_ALL_RENDER); + } + nes.apu.SelectExSound(1); + } - //void Mapper026::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - switch (addr & 0xF003) - { - case 0x8000: - SetPROM_16K_Bank(4, data); - break; + //void Mapper026::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + switch (addr & 0xF003) + { + case 0x8000: + SetPROM_16K_Bank(4, data); + break; - case 0x9000: - case 0x9001: - case 0x9002: - case 0x9003: - case 0xA000: - case 0xA001: - case 0xA002: - case 0xA003: - case 0xB000: - case 0xB001: - case 0xB002: - addr = (ushort)((addr & 0xfffc) | ((addr & 1) << 1) | ((addr & 2) >> 1)); - nes.apu.ExWrite(addr, data); - break; + case 0x9000: + case 0x9001: + case 0x9002: + case 0x9003: + case 0xA000: + case 0xA001: + case 0xA002: + case 0xA003: + case 0xB000: + case 0xB001: + case 0xB002: + addr = (ushort)((addr & 0xfffc) | ((addr & 1) << 1) | ((addr & 2) >> 1)); + nes.apu.ExWrite(addr, data); + break; - case 0xB003: - data = (byte)(data & 0x7F); - if (data == 0x08 || data == 0x2C) SetVRAM_Mirror(VRAM_MIRROR4H); - else if (data == 0x20) SetVRAM_Mirror(VRAM_VMIRROR); - else if (data == 0x24) SetVRAM_Mirror(VRAM_HMIRROR); - else if (data == 0x28) SetVRAM_Mirror(VRAM_MIRROR4L); - break; + case 0xB003: + data = (byte)(data & 0x7F); + if (data == 0x08 || data == 0x2C) SetVRAM_Mirror(VRAM_MIRROR4H); + else if (data == 0x20) SetVRAM_Mirror(VRAM_VMIRROR); + else if (data == 0x24) SetVRAM_Mirror(VRAM_HMIRROR); + else if (data == 0x28) SetVRAM_Mirror(VRAM_MIRROR4L); + break; - case 0xC000: - SetPROM_8K_Bank(6, data); - break; + case 0xC000: + SetPROM_8K_Bank(6, data); + break; - case 0xD000: - SetVROM_1K_Bank(0, data); - break; + case 0xD000: + SetVROM_1K_Bank(0, data); + break; - case 0xD001: - SetVROM_1K_Bank(2, data); - break; + case 0xD001: + SetVROM_1K_Bank(2, data); + break; - case 0xD002: - SetVROM_1K_Bank(1, data); - break; + case 0xD002: + SetVROM_1K_Bank(1, data); + break; - case 0xD003: - SetVROM_1K_Bank(3, data); - break; + case 0xD003: + SetVROM_1K_Bank(3, data); + break; - case 0xE000: - SetVROM_1K_Bank(4, data); - break; + case 0xE000: + SetVROM_1K_Bank(4, data); + break; - case 0xE001: - SetVROM_1K_Bank(6, data); - break; + case 0xE001: + SetVROM_1K_Bank(6, data); + break; - case 0xE002: - SetVROM_1K_Bank(5, data); - break; + case 0xE002: + SetVROM_1K_Bank(5, data); + break; - case 0xE003: - SetVROM_1K_Bank(7, data); - break; + case 0xE003: + SetVROM_1K_Bank(7, data); + break; - case 0xF000: - irq_latch = data; - break; - case 0xF001: - irq_enable = (byte)((irq_enable & 0x01) * 3); - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; - case 0xF002: - irq_enable = (byte)(data & 0x03); - if ((irq_enable & 0x02) != 0) - { - irq_counter = irq_latch; - irq_clock = 0; - } - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; - } - } + case 0xF000: + irq_latch = data; + break; + case 0xF001: + irq_enable = (byte)((irq_enable & 0x01) * 3); + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; + case 0xF002: + irq_enable = (byte)(data & 0x03); + if ((irq_enable & 0x02) != 0) + { + irq_counter = irq_latch; + irq_clock = 0; + } + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; + } + } - //void Mapper026::Clock(INT cycles) - public override void Clock(int cycles) - { - if ((irq_enable & 0x02) != 0) - { - if ((irq_clock += cycles) >= 0x72) - { - irq_clock -= 0x72; - if (irq_counter >= 0xFF) - { - irq_counter = irq_latch; - // nes.cpu.IRQ_NotPending(); - //// nes.cpu.IRQ(); - nes.cpu.SetIRQ(IRQ_MAPPER); - } - else - { - irq_counter++; - } - } - } - } + //void Mapper026::Clock(INT cycles) + public override void Clock(int cycles) + { + if ((irq_enable & 0x02) != 0) + { + if ((irq_clock += cycles) >= 0x72) + { + irq_clock -= 0x72; + if (irq_counter >= 0xFF) + { + irq_counter = irq_latch; + // nes.cpu.IRQ_NotPending(); + //// nes.cpu.IRQ(); + nes.cpu.SetIRQ(IRQ_MAPPER); + } + else + { + irq_counter++; + } + } + } + } - //void Mapper026::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - //p[0] = irq_enable; - //p[1] = irq_counter; - //p[2] = irq_latch; - //*(INT*)&p[3] = irq_clock; - } + //void Mapper026::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + //p[0] = irq_enable; + //p[1] = irq_counter; + //p[2] = irq_latch; + //*(INT*)&p[3] = irq_clock; + } - //void Mapper026::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - //irq_enable = p[0]; - //irq_counter = p[1]; - //irq_latch = p[2]; - //irq_clock = *(INT*)&p[3]; - } + //void Mapper026::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + //irq_enable = p[0]; + //irq_counter = p[1]; + //irq_latch = p[2]; + //irq_clock = *(INT*)&p[3]; + } - public override bool IsStateSave() - { - return true; - } - } + public override bool IsStateSave() + { + return true; + } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper027.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper027.cs index 994c4f73..2ef048de 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper027.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper027.cs @@ -1,228 +1,228 @@ ////////////////////////////////////////////////////////////////////////// // Mapper027 Konami VRC4 (World Hero) // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { - public class Mapper027 : Mapper - { - ushort[] reg = new ushort[9]; + public class Mapper027 : Mapper + { + ushort[] reg = new ushort[9]; - BYTE irq_enable; - BYTE irq_counter; - BYTE irq_latch; - INT irq_clock; - public Mapper027(NES parent) : base(parent) - { - } + BYTE irq_enable; + BYTE irq_counter; + BYTE irq_latch; + INT irq_clock; + public Mapper027(NES parent) : base(parent) + { + } - public override void Reset() - { - for (INT i = 0; i < 8; i++) - { - reg[i] = (byte)i; - } - reg[8] = 0; + public override void Reset() + { + for (INT i = 0; i < 8; i++) + { + reg[i] = (byte)i; + } + reg[8] = 0; - irq_enable = 0; - irq_counter = 0; - irq_latch = 0; - irq_clock = 0; + irq_enable = 0; + irq_counter = 0; + irq_latch = 0; + irq_clock = 0; - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - uint crc = nes.rom.GetPROM_CRC(); - if (crc == 0x47DCBCC4) - { // Gradius II(sample) - nes.SetRenderMethod(EnumRenderMethod.POST_RENDER); - } - if (crc == 0x468F21FC) - { // Racer Mini 4 ku(sample) - nes.SetRenderMethod(EnumRenderMethod.POST_RENDER); - } - } + uint crc = nes.rom.GetPROM_CRC(); + if (crc == 0x47DCBCC4) + { // Gradius II(sample) + nes.SetRenderMethod(EnumRenderMethod.POST_RENDER); + } + if (crc == 0x468F21FC) + { // Racer Mini 4 ku(sample) + nes.SetRenderMethod(EnumRenderMethod.POST_RENDER); + } + } - //void Mapper027::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - switch (addr & 0xF0CF) - { - case 0x8000: - if ((reg[8] & 0x02) != 0) - { - SetPROM_8K_Bank(6, data); - } - else - { - SetPROM_8K_Bank(4, data); - } - break; - case 0xA000: - SetPROM_8K_Bank(5, data); - break; + //void Mapper027::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + switch (addr & 0xF0CF) + { + case 0x8000: + if ((reg[8] & 0x02) != 0) + { + SetPROM_8K_Bank(6, data); + } + else + { + SetPROM_8K_Bank(4, data); + } + break; + case 0xA000: + SetPROM_8K_Bank(5, data); + break; - case 0x9000: - data &= 0x03; - if (data == 0) SetVRAM_Mirror(VRAM_VMIRROR); - else if (data == 1) SetVRAM_Mirror(VRAM_HMIRROR); - else if (data == 2) SetVRAM_Mirror(VRAM_MIRROR4L); - else SetVRAM_Mirror(VRAM_MIRROR4H); - break; + case 0x9000: + data &= 0x03; + if (data == 0) SetVRAM_Mirror(VRAM_VMIRROR); + else if (data == 1) SetVRAM_Mirror(VRAM_HMIRROR); + else if (data == 2) SetVRAM_Mirror(VRAM_MIRROR4L); + else SetVRAM_Mirror(VRAM_MIRROR4H); + break; - case 0x9002: - case 0x9080: - reg[8] = data; - break; + case 0x9002: + case 0x9080: + reg[8] = data; + break; - case 0xB000: - reg[0] = (ushort)((reg[0] & 0xFF0) | (data & 0x0F)); - SetVROM_1K_Bank(0, reg[0]); - break; - case 0xB001: - reg[0] = (ushort)((reg[0] & 0x0F) | (data << 4)); - SetVROM_1K_Bank(0, reg[0]); - break; + case 0xB000: + reg[0] = (ushort)((reg[0] & 0xFF0) | (data & 0x0F)); + SetVROM_1K_Bank(0, reg[0]); + break; + case 0xB001: + reg[0] = (ushort)((reg[0] & 0x0F) | (data << 4)); + SetVROM_1K_Bank(0, reg[0]); + break; - case 0xB002: - reg[1] = (ushort)((reg[1] & 0xFF0) | (data & 0x0F)); - SetVROM_1K_Bank(1, reg[1]); - break; - case 0xB003: - reg[1] = (ushort)((reg[1] & 0x0F) | (data << 4)); - SetVROM_1K_Bank(1, reg[1]); - break; + case 0xB002: + reg[1] = (ushort)((reg[1] & 0xFF0) | (data & 0x0F)); + SetVROM_1K_Bank(1, reg[1]); + break; + case 0xB003: + reg[1] = (ushort)((reg[1] & 0x0F) | (data << 4)); + SetVROM_1K_Bank(1, reg[1]); + break; - case 0xC000: - reg[2] = (ushort)((reg[2] & 0xFF0) | (data & 0x0F)); - SetVROM_1K_Bank(2, reg[2]); - break; - case 0xC001: - reg[2] = (ushort)((reg[2] & 0x0F) | (data << 4)); - SetVROM_1K_Bank(2, reg[2]); - break; + case 0xC000: + reg[2] = (ushort)((reg[2] & 0xFF0) | (data & 0x0F)); + SetVROM_1K_Bank(2, reg[2]); + break; + case 0xC001: + reg[2] = (ushort)((reg[2] & 0x0F) | (data << 4)); + SetVROM_1K_Bank(2, reg[2]); + break; - case 0xC002: - reg[3] = (ushort)((reg[3] & 0xFF0) | (data & 0x0F)); - SetVROM_1K_Bank(3, reg[3]); - break; - case 0xC003: - reg[3] = (ushort)((reg[3] & 0x0F) | (data << 4)); - SetVROM_1K_Bank(3, reg[3]); - break; + case 0xC002: + reg[3] = (ushort)((reg[3] & 0xFF0) | (data & 0x0F)); + SetVROM_1K_Bank(3, reg[3]); + break; + case 0xC003: + reg[3] = (ushort)((reg[3] & 0x0F) | (data << 4)); + SetVROM_1K_Bank(3, reg[3]); + break; - case 0xD000: - reg[4] = (ushort)((reg[4] & 0xFF0) | (data & 0x0F)); - SetVROM_1K_Bank(4, reg[4]); - break; - case 0xD001: - reg[4] = (ushort)((reg[4] & 0x0F) | (data << 4)); - SetVROM_1K_Bank(4, reg[4]); - break; + case 0xD000: + reg[4] = (ushort)((reg[4] & 0xFF0) | (data & 0x0F)); + SetVROM_1K_Bank(4, reg[4]); + break; + case 0xD001: + reg[4] = (ushort)((reg[4] & 0x0F) | (data << 4)); + SetVROM_1K_Bank(4, reg[4]); + break; - case 0xD002: - reg[5] = (ushort)((reg[5] & 0xFF0) | (data & 0x0F)); - SetVROM_1K_Bank(5, reg[5]); - break; - case 0xD003: - reg[5] = (ushort)((reg[5] & 0x0F) | (data << 4)); - SetVROM_1K_Bank(5, reg[5]); - break; + case 0xD002: + reg[5] = (ushort)((reg[5] & 0xFF0) | (data & 0x0F)); + SetVROM_1K_Bank(5, reg[5]); + break; + case 0xD003: + reg[5] = (ushort)((reg[5] & 0x0F) | (data << 4)); + SetVROM_1K_Bank(5, reg[5]); + break; - case 0xE000: - reg[6] = (ushort)((reg[6] & 0xFF0) | (data & 0x0F)); - SetVROM_1K_Bank(6, reg[6]); - break; - case 0xE001: - reg[6] = (ushort)((reg[6] & 0x0F) | (data << 4)); - SetVROM_1K_Bank(6, reg[6]); - break; + case 0xE000: + reg[6] = (ushort)((reg[6] & 0xFF0) | (data & 0x0F)); + SetVROM_1K_Bank(6, reg[6]); + break; + case 0xE001: + reg[6] = (ushort)((reg[6] & 0x0F) | (data << 4)); + SetVROM_1K_Bank(6, reg[6]); + break; - case 0xE002: - reg[7] = (ushort)((reg[7] & 0xFF0) | (data & 0x0F)); - SetVROM_1K_Bank(7, reg[7]); - break; - case 0xE003: - reg[7] = (ushort)((reg[7] & 0x0F) | (data << 4)); - SetVROM_1K_Bank(7, reg[7]); - break; + case 0xE002: + reg[7] = (ushort)((reg[7] & 0xFF0) | (data & 0x0F)); + SetVROM_1K_Bank(7, reg[7]); + break; + case 0xE003: + reg[7] = (ushort)((reg[7] & 0x0F) | (data << 4)); + SetVROM_1K_Bank(7, reg[7]); + break; - case 0xF000: - irq_latch = (byte)((irq_latch & 0xF0) | (data & 0x0F)); - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; - case 0xF001: - irq_latch = (byte)((irq_latch & 0x0F) | ((data & 0x0F) << 4)); - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; + case 0xF000: + irq_latch = (byte)((irq_latch & 0xF0) | (data & 0x0F)); + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; + case 0xF001: + irq_latch = (byte)((irq_latch & 0x0F) | ((data & 0x0F) << 4)); + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; - case 0xF003: - irq_enable = (byte)((irq_enable & 0x01) * 3); - irq_clock = 0; - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; + case 0xF003: + irq_enable = (byte)((irq_enable & 0x01) * 3); + irq_clock = 0; + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; - case 0xF002: - irq_enable = (byte)(data & 0x03); - if ((irq_enable & 0x02) != 0) - { - irq_counter = irq_latch; - irq_clock = 0; - } - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; - } - } + case 0xF002: + irq_enable = (byte)(data & 0x03); + if ((irq_enable & 0x02) != 0) + { + irq_counter = irq_latch; + irq_clock = 0; + } + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; + } + } - //void Mapper027::HSync(INT scanline) - public override void HSync(int scanline) - { - if ((irq_enable & 0x02) != 0) - { - if (irq_counter == 0xFF) - { - irq_counter = irq_latch; - // nes.cpu.IRQ_NotPending(); - nes.cpu.SetIRQ(IRQ_MAPPER); - } - else - { - irq_counter++; - } - } - } + //void Mapper027::HSync(INT scanline) + public override void HSync(int scanline) + { + if ((irq_enable & 0x02) != 0) + { + if (irq_counter == 0xFF) + { + irq_counter = irq_latch; + // nes.cpu.IRQ_NotPending(); + nes.cpu.SetIRQ(IRQ_MAPPER); + } + else + { + irq_counter++; + } + } + } - //void Mapper027::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - //for (INT i = 0; i < 9; i++) - //{ - // p[i] = reg[i]; - //} - //p[9] = irq_enable; - //p[10] = irq_counter; - //p[11] = irq_latch; - //*(INT*)&p[12] = irq_clock; - } + //void Mapper027::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + //for (INT i = 0; i < 9; i++) + //{ + // p[i] = reg[i]; + //} + //p[9] = irq_enable; + //p[10] = irq_counter; + //p[11] = irq_latch; + //*(INT*)&p[12] = irq_clock; + } - //void Mapper027::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - //for (INT i = 0; i < 9; i++) - //{ - // reg[i] = p[i]; - //} - //irq_enable = p[9]; - //irq_counter = p[10]; - //irq_latch = p[11]; - //irq_clock = *(INT*)&p[12]; - } + //void Mapper027::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + //for (INT i = 0; i < 9; i++) + //{ + // reg[i] = p[i]; + //} + //irq_enable = p[9]; + //irq_counter = p[10]; + //irq_latch = p[11]; + //irq_clock = *(INT*)&p[12]; + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper032.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper032.cs index 8c843afb..660d1c32 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper032.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper032.cs @@ -2,122 +2,120 @@ // Mapper032 Irem G101 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper032 : Mapper - { - BYTE patch; + public class Mapper032 : Mapper + { + BYTE patch; - BYTE reg; - public Mapper032(NES parent) : base(parent) - { - } + BYTE reg; + public Mapper032(NES parent) : base(parent) + { + } - public override void Reset() - { - patch = 0; - reg = 0; + public override void Reset() + { + patch = 0; + reg = 0; - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - if (VROM_8K_SIZE != 0) - { - SetVROM_8K_Bank(0); - } + if (VROM_8K_SIZE != 0) + { + SetVROM_8K_Bank(0); + } - uint crc = nes.rom.GetPROM_CRC(); + uint crc = nes.rom.GetPROM_CRC(); - // For Major League(J) - if (crc == 0xc0fed437) - { - patch = 1; - } - // For Ai Sensei no Oshiete - Watashi no Hoshi(J) - if (crc == 0xfd3fc292) - { - SetPROM_32K_Bank(30, 31, 30, 31); - } - } + // For Major League(J) + if (crc == 0xc0fed437) + { + patch = 1; + } + // For Ai Sensei no Oshiete - Watashi no Hoshi(J) + if (crc == 0xfd3fc292) + { + SetPROM_32K_Bank(30, 31, 30, 31); + } + } - //void Mapper032::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - switch (addr & 0xF000) - { - case 0x8000: - if ((reg & 0x02) != 0) - { - SetPROM_8K_Bank(6, data); - } - else - { - SetPROM_8K_Bank(4, data); - } - break; + //void Mapper032::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + switch (addr & 0xF000) + { + case 0x8000: + if ((reg & 0x02) != 0) + { + SetPROM_8K_Bank(6, data); + } + else + { + SetPROM_8K_Bank(4, data); + } + break; - case 0x9000: - reg = data; - if ((data & 0x01) != 0) SetVRAM_Mirror(VRAM_HMIRROR); - else SetVRAM_Mirror(VRAM_VMIRROR); - break; + case 0x9000: + reg = data; + if ((data & 0x01) != 0) SetVRAM_Mirror(VRAM_HMIRROR); + else SetVRAM_Mirror(VRAM_VMIRROR); + break; - case 0xA000: - SetPROM_8K_Bank(5, data); - break; - } + case 0xA000: + SetPROM_8K_Bank(5, data); + break; + } - switch (addr & 0xF007) - { - case 0xB000: - case 0xB001: - case 0xB002: - case 0xB003: - case 0xB004: - case 0xB005: - SetVROM_1K_Bank((byte)(addr & 0x0007), data); - break; - case 0xB006: - SetVROM_1K_Bank(6, data); + switch (addr & 0xF007) + { + case 0xB000: + case 0xB001: + case 0xB002: + case 0xB003: + case 0xB004: + case 0xB005: + SetVROM_1K_Bank((byte)(addr & 0x0007), data); + break; + case 0xB006: + SetVROM_1K_Bank(6, data); - if (patch != 0 && ((data & 0x40) != 0)) - { - SetVRAM_Mirror(0, 0, 0, 1); - } - break; - case 0xB007: - SetVROM_1K_Bank(7, data); + if (patch != 0 && ((data & 0x40) != 0)) + { + SetVRAM_Mirror(0, 0, 0, 1); + } + break; + case 0xB007: + SetVROM_1K_Bank(7, data); - if (patch != 0 && ((data & 0x40) != 0)) - { - SetVRAM_Mirror(0, 0, 0, 0); - } - break; - } - } + if (patch != 0 && ((data & 0x40) != 0)) + { + SetVRAM_Mirror(0, 0, 0, 0); + } + break; + } + } - //void Mapper032::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - p[0] = reg; - } + //void Mapper032::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + p[0] = reg; + } - //void Mapper032::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - reg = p[0]; - } + //void Mapper032::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + reg = p[0]; + } - public override bool IsStateSave() - { - return true; - } + public override bool IsStateSave() + { + return true; + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper033.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper033.cs index f2ac3ba9..c3664dda 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper033.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper033.cs @@ -1,131 +1,131 @@ ////////////////////////////////////////////////////////////////////////// // Mapper033 Taito TC0190 // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { - public class Mapper033 : Mapper - { - BYTE[] reg = new byte[7]; + public class Mapper033 : Mapper + { + BYTE[] reg = new byte[7]; - BYTE patch; - BYTE irq_enable; - BYTE irq_counter; - BYTE irq_latch; - public Mapper033(NES parent) : base(parent) - { - } + BYTE patch; + BYTE irq_enable; + BYTE irq_counter; + BYTE irq_latch; + public Mapper033(NES parent) : base(parent) + { + } - public override void Reset() - { - patch = 0; + public override void Reset() + { + patch = 0; - irq_enable = 0; - irq_counter = 0; - irq_latch = 0; + irq_enable = 0; + irq_counter = 0; + irq_latch = 0; - reg[0] = 0; - reg[1] = 2; - reg[2] = 4; - reg[3] = 5; - reg[4] = 6; - reg[5] = 7; - reg[6] = 1; + reg[0] = 0; + reg[1] = 2; + reg[2] = 4; + reg[3] = 5; + reg[4] = 6; + reg[5] = 7; + reg[6] = 1; - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - if (VROM_8K_SIZE != 0) - { - SetBank(); - } + if (VROM_8K_SIZE != 0) + { + SetBank(); + } - uint crc = nes.rom.GetPROM_CRC(); - // Check For Old #33 games.... (CRC code by NesToy) - if (crc == 0x5e9bc161 // Akira(J) - || crc == 0xecdbafa4 // Bakushou!! Jinsei Gekijou(J) - || crc == 0x59cd0c31 // Don Doko Don(J) - || crc == 0x837c1342 // Golf Ko Open(J) - || crc == 0x42d893e4 // Operation Wolf(J) - || crc == 0x1388aeb9 // Operation Wolf(U) - || crc == 0x07ee6d8f // Power Blazer(J) - || crc == 0x5193fb54 // Takeshi no Sengoku Fuuunji(J) - || crc == 0xa71c3452) - { // Insector X(J) - patch = 1; - } + uint crc = nes.rom.GetPROM_CRC(); + // Check For Old #33 games.... (CRC code by NesToy) + if (crc == 0x5e9bc161 // Akira(J) + || crc == 0xecdbafa4 // Bakushou!! Jinsei Gekijou(J) + || crc == 0x59cd0c31 // Don Doko Don(J) + || crc == 0x837c1342 // Golf Ko Open(J) + || crc == 0x42d893e4 // Operation Wolf(J) + || crc == 0x1388aeb9 // Operation Wolf(U) + || crc == 0x07ee6d8f // Power Blazer(J) + || crc == 0x5193fb54 // Takeshi no Sengoku Fuuunji(J) + || crc == 0xa71c3452) + { // Insector X(J) + patch = 1; + } - nes.SetRenderMethod(EnumRenderMethod.PRE_RENDER); + nes.SetRenderMethod(EnumRenderMethod.PRE_RENDER); - if (crc == 0x202df297) - { // Captain Saver(J) - nes.SetRenderMethod(EnumRenderMethod.TILE_RENDER); - } - if (crc == 0x63bb86b5) - { // The Jetsons(J) - nes.SetRenderMethod(EnumRenderMethod.TILE_RENDER); - } - } + if (crc == 0x202df297) + { // Captain Saver(J) + nes.SetRenderMethod(EnumRenderMethod.TILE_RENDER); + } + if (crc == 0x63bb86b5) + { // The Jetsons(J) + nes.SetRenderMethod(EnumRenderMethod.TILE_RENDER); + } + } - //void Mapper033::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - // LOG( "Mapper033 addr=%04X data=%02X", addr&0xFFFF, data&0xFF ); + //void Mapper033::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + // LOG( "Mapper033 addr=%04X data=%02X", addr&0xFFFF, data&0xFF ); - switch (addr) - { - case 0x8000: - if (patch != 0) - { - if ((data & 0x40) != 0) SetVRAM_Mirror(VRAM_HMIRROR); - else SetVRAM_Mirror(VRAM_VMIRROR); - SetPROM_8K_Bank(4, data & 0x1F); - } - else - { - SetPROM_8K_Bank(4, data); - } - break; - case 0x8001: - if (patch != 0) - { - SetPROM_8K_Bank(5, data & 0x1F); - } - else - { - SetPROM_8K_Bank(5, data); - } - break; + switch (addr) + { + case 0x8000: + if (patch != 0) + { + if ((data & 0x40) != 0) SetVRAM_Mirror(VRAM_HMIRROR); + else SetVRAM_Mirror(VRAM_VMIRROR); + SetPROM_8K_Bank(4, data & 0x1F); + } + else + { + SetPROM_8K_Bank(4, data); + } + break; + case 0x8001: + if (patch != 0) + { + SetPROM_8K_Bank(5, data & 0x1F); + } + else + { + SetPROM_8K_Bank(5, data); + } + break; - case 0x8002: - reg[0] = data; - SetBank(); - break; - case 0x8003: - reg[1] = data; - SetBank(); - break; - case 0xA000: - reg[2] = data; - SetBank(); - break; - case 0xA001: - reg[3] = data; - SetBank(); - break; - case 0xA002: - reg[4] = data; - SetBank(); - break; - case 0xA003: - reg[5] = data; - SetBank(); - break; + case 0x8002: + reg[0] = data; + SetBank(); + break; + case 0x8003: + reg[1] = data; + SetBank(); + break; + case 0xA000: + reg[2] = data; + SetBank(); + break; + case 0xA001: + reg[3] = data; + SetBank(); + break; + case 0xA002: + reg[4] = data; + SetBank(); + break; + case 0xA003: + reg[5] = data; + SetBank(); + break; #if FLASE//0 case 0xC003: @@ -147,36 +147,36 @@ namespace VirtualNes.Core // nes.cpu.ClrIRQ( IRQ_MAPPER ); break; #else - case 0xC000: - irq_latch = data; - irq_counter = irq_latch; - break; - case 0xC001: - irq_counter = irq_latch; - break; - case 0xC002: - irq_enable = 1; - break; - case 0xC003: - irq_enable = 0; - break; + case 0xC000: + irq_latch = data; + irq_counter = irq_latch; + break; + case 0xC001: + irq_counter = irq_latch; + break; + case 0xC002: + irq_enable = 1; + break; + case 0xC003: + irq_enable = 0; + break; - case 0xE001: - case 0xE002: - case 0xE003: - break; + case 0xE001: + case 0xE002: + case 0xE003: + break; #endif - case 0xE000: - if ((data & 0x40) != 0) SetVRAM_Mirror(VRAM_HMIRROR); - else SetVRAM_Mirror(VRAM_VMIRROR); - break; - } - } + case 0xE000: + if ((data & 0x40) != 0) SetVRAM_Mirror(VRAM_HMIRROR); + else SetVRAM_Mirror(VRAM_VMIRROR); + break; + } + } - //void Mapper033::HSync(INT scanline) - public override void HSync(int scanline) - { + //void Mapper033::HSync(INT scanline) + public override void HSync(int scanline) + { #if FALSE//0 // nes.cpu.ClrIRQ( IRQ_MAPPER ); if( scanline >= 0 && scanline <= 239 ) { @@ -194,67 +194,67 @@ namespace VirtualNes.Core } } #else - if (scanline >= 0 && scanline <= 239 && nes.ppu.IsDispON()) - { - if (irq_enable != 0) - { - if (++irq_counter == 0) - { - irq_enable = 0; - irq_counter = 0; - nes.cpu.SetIRQ(IRQ_TRIGGER); - } - } - } + if (scanline >= 0 && scanline <= 239 && nes.ppu.IsDispON()) + { + if (irq_enable != 0) + { + if (++irq_counter == 0) + { + irq_enable = 0; + irq_counter = 0; + nes.cpu.SetIRQ(IRQ_TRIGGER); + } + } + } #endif - } + } - void SetBank() - { - SetVROM_2K_Bank(0, reg[0]); - SetVROM_2K_Bank(2, reg[1]); + void SetBank() + { + SetVROM_2K_Bank(0, reg[0]); + SetVROM_2K_Bank(2, reg[1]); - // if( reg[6] & 0x01 ) { - SetVROM_1K_Bank(4, reg[2]); - SetVROM_1K_Bank(5, reg[3]); - SetVROM_1K_Bank(6, reg[4]); - SetVROM_1K_Bank(7, reg[5]); - // } else { - // SetVROM_2K_Bank( 4, reg[0] ); - // SetVROM_2K_Bank( 6, reg[1] ); - // } - } + // if( reg[6] & 0x01 ) { + SetVROM_1K_Bank(4, reg[2]); + SetVROM_1K_Bank(5, reg[3]); + SetVROM_1K_Bank(6, reg[4]); + SetVROM_1K_Bank(7, reg[5]); + // } else { + // SetVROM_2K_Bank( 4, reg[0] ); + // SetVROM_2K_Bank( 6, reg[1] ); + // } + } - //void Mapper033::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - for (INT i = 0; i < 7; i++) - { - p[i] = reg[i]; - } + //void Mapper033::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + for (INT i = 0; i < 7; i++) + { + p[i] = reg[i]; + } - p[7] = irq_enable; - p[8] = irq_counter; - p[9] = irq_latch; - } + p[7] = irq_enable; + p[8] = irq_counter; + p[9] = irq_latch; + } - //void Mapper033::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - for (INT i = 0; i < 7; i++) - { - reg[i] = p[i]; - } + //void Mapper033::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + for (INT i = 0; i < 7; i++) + { + reg[i] = p[i]; + } - irq_enable = p[7]; - irq_counter = p[8]; - irq_latch = p[9]; - } + irq_enable = p[7]; + irq_counter = p[8]; + irq_latch = p[9]; + } - public override bool IsStateSave() - { - return true; - } + public override bool IsStateSave() + { + return true; + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper034.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper034.cs index 6b4231e3..bedefe42 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper034.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper034.cs @@ -2,53 +2,50 @@ // Mapper034 Nina-1 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper034 : Mapper - { - public Mapper034(NES parent) : base(parent) - { - } + public class Mapper034 : Mapper + { + public Mapper034(NES parent) : base(parent) + { + } - public override void Reset() - { - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + public override void Reset() + { + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - if (VROM_1K_SIZE != 0) - { - SetVROM_8K_Bank(0); - } - } + if (VROM_1K_SIZE != 0) + { + SetVROM_8K_Bank(0); + } + } - //void Mapper034::WriteLow(WORD addr, BYTE data) - public override void WriteLow(ushort addr, byte data) - { - switch (addr) - { - case 0x7FFD: - SetPROM_32K_Bank(data); - break; - case 0x7FFE: - SetVROM_4K_Bank(0, data); - break; - case 0x7FFF: - SetVROM_4K_Bank(4, data); - break; - } - } + //void Mapper034::WriteLow(WORD addr, BYTE data) + public override void WriteLow(ushort addr, byte data) + { + switch (addr) + { + case 0x7FFD: + SetPROM_32K_Bank(data); + break; + case 0x7FFE: + SetVROM_4K_Bank(0, data); + break; + case 0x7FFF: + SetVROM_4K_Bank(4, data); + break; + } + } - //void Mapper034::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - SetPROM_32K_Bank(data); - } + //void Mapper034::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + SetPROM_32K_Bank(data); + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper035.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper035.cs index 74d50a3c..5ce4d204 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper035.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper035.cs @@ -1,26 +1,25 @@ ////////////////////////////////////////////////////////////////////////// // Mapper035 // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper035 : Mapper - { + public class Mapper035 : Mapper + { BYTE[] reg = new byte[8]; BYTE[] chr = new byte[8]; ushort IRQCount, IRQa; public Mapper035(NES parent) : base(parent) - { - } + { + } - public override void Reset() + public override void Reset() { for (int i = 0; i < 8; i++) reg[i] = chr[i] = 0; @@ -103,7 +102,7 @@ namespace VirtualNes.Core { if (nes.ppu.IsDispON()) { - if (IRQa!=0) + if (IRQa != 0) { IRQCount--; if (IRQCount == 0) @@ -118,7 +117,7 @@ namespace VirtualNes.Core public override bool IsStateSave() { - return true; + return true; } } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper040.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper040.cs index 584a6ffe..ac0823d4 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper040.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper040.cs @@ -1,90 +1,90 @@ ////////////////////////////////////////////////////////////////////////// // Mapper040 SMB2J // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { - public class Mapper040 : Mapper - { - BYTE irq_enable; - INT irq_line; - public Mapper040(NES parent) : base(parent) - { - } + public class Mapper040 : Mapper + { + BYTE irq_enable; + INT irq_line; + public Mapper040(NES parent) : base(parent) + { + } - public override void Reset() - { - irq_enable = 0; - irq_line = 0; + public override void Reset() + { + irq_enable = 0; + irq_line = 0; - SetPROM_8K_Bank(3, 6); - SetPROM_32K_Bank(4, 5, 0, 7); + SetPROM_8K_Bank(3, 6); + SetPROM_32K_Bank(4, 5, 0, 7); - if (VROM_1K_SIZE != 0) - { - SetVROM_8K_Bank(0); - } - } + if (VROM_1K_SIZE != 0) + { + SetVROM_8K_Bank(0); + } + } - //void Mapper040::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - switch (addr & 0xE000) - { - case 0x8000: - irq_enable = 0; - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; - case 0xA000: - irq_enable = 0xFF; - irq_line = 37; - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; - case 0xC000: - break; - case 0xE000: - SetPROM_8K_Bank(6, data & 0x07); - break; - } - } + //void Mapper040::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + switch (addr & 0xE000) + { + case 0x8000: + irq_enable = 0; + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; + case 0xA000: + irq_enable = 0xFF; + irq_line = 37; + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; + case 0xC000: + break; + case 0xE000: + SetPROM_8K_Bank(6, data & 0x07); + break; + } + } - //void Mapper040::HSync(INT scanline) - public override void HSync(int scanline) - { - if (irq_enable != 0) - { - if (--irq_line <= 0) - { - // nes.cpu.IRQ(); - nes.cpu.SetIRQ(IRQ_MAPPER); - } - } - } + //void Mapper040::HSync(INT scanline) + public override void HSync(int scanline) + { + if (irq_enable != 0) + { + if (--irq_line <= 0) + { + // nes.cpu.IRQ(); + nes.cpu.SetIRQ(IRQ_MAPPER); + } + } + } - //void Mapper040::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - //p[0] = irq_enable; - //*(INT*)&p[1] = irq_line; - } + //void Mapper040::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + //p[0] = irq_enable; + //*(INT*)&p[1] = irq_line; + } - //void Mapper040::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - //irq_enable = p[0]; - //irq_line = *(INT*)&p[1]; - } + //void Mapper040::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + //irq_enable = p[0]; + //irq_line = *(INT*)&p[1]; + } - public override bool IsStateSave() - { - return true; - } + public override bool IsStateSave() + { + return true; + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper041.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper041.cs index 2a5df035..be2b5ea7 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper041.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper041.cs @@ -2,77 +2,75 @@ // Mapper041 Caltron 6-in-1 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper041 : Mapper - { - BYTE[] reg = new byte[2]; - public Mapper041(NES parent) : base(parent) - { - } + public class Mapper041 : Mapper + { + BYTE[] reg = new byte[2]; + public Mapper041(NES parent) : base(parent) + { + } - public override void Reset() - { - reg[0] = reg[1] = 0; + public override void Reset() + { + reg[0] = reg[1] = 0; - SetPROM_32K_Bank(0, 1, 2, 3); + SetPROM_32K_Bank(0, 1, 2, 3); - if (VROM_1K_SIZE != 0) - { - SetVROM_8K_Bank(0); - } - } + if (VROM_1K_SIZE != 0) + { + SetVROM_8K_Bank(0); + } + } - //void Mapper041::WriteLow(WORD addr, BYTE data) - public override void WriteLow(ushort addr, byte data) - { - if (addr >= 0x6000 && addr < 0x6800) - { - SetPROM_32K_Bank(addr & 0x07); - reg[0] = (byte)(addr & 0x04); - reg[1] &= 0x03; - reg[1] |= (byte)((addr >> 1) & 0x0C); - SetVROM_8K_Bank(reg[1]); - if ((addr & 0x20) != 0) SetVRAM_Mirror(VRAM_HMIRROR); - else SetVRAM_Mirror(VRAM_VMIRROR); - } - } + //void Mapper041::WriteLow(WORD addr, BYTE data) + public override void WriteLow(ushort addr, byte data) + { + if (addr >= 0x6000 && addr < 0x6800) + { + SetPROM_32K_Bank(addr & 0x07); + reg[0] = (byte)(addr & 0x04); + reg[1] &= 0x03; + reg[1] |= (byte)((addr >> 1) & 0x0C); + SetVROM_8K_Bank(reg[1]); + if ((addr & 0x20) != 0) SetVRAM_Mirror(VRAM_HMIRROR); + else SetVRAM_Mirror(VRAM_VMIRROR); + } + } - //void Mapper041::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - if (reg[0] != 0) - { - reg[1] &= 0x0C; - reg[1] |= (byte)(addr & 0x03); - SetVROM_8K_Bank(reg[1]); - } - } + //void Mapper041::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + if (reg[0] != 0) + { + reg[1] &= 0x0C; + reg[1] |= (byte)(addr & 0x03); + SetVROM_8K_Bank(reg[1]); + } + } - //void Mapper041::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - p[0] = reg[0]; - p[1] = reg[1]; - } + //void Mapper041::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + p[0] = reg[0]; + p[1] = reg[1]; + } - //void Mapper041::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - reg[0] = p[0]; - reg[1] = p[1]; - } + //void Mapper041::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + reg[0] = p[0]; + reg[1] = p[1]; + } - public override bool IsStateSave() - { - return true; - } - } + public override bool IsStateSave() + { + return true; + } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper042.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper042.cs index a9c8be46..4796d793 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper042.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper042.cs @@ -1,103 +1,102 @@ ////////////////////////////////////////////////////////////////////////// // Mapper042 Mario Baby // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper042 : Mapper - { - BYTE irq_enable; - BYTE irq_counter; - public Mapper042(NES parent) : base(parent) - { - } + public class Mapper042 : Mapper + { + BYTE irq_enable; + BYTE irq_counter; + public Mapper042(NES parent) : base(parent) + { + } - public override void Reset() - { - irq_enable = 0; - irq_counter = 0; + public override void Reset() + { + irq_enable = 0; + irq_counter = 0; - SetPROM_8K_Bank(3, 0); - SetPROM_32K_Bank(PROM_8K_SIZE - 4, PROM_8K_SIZE - 3, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + SetPROM_8K_Bank(3, 0); + SetPROM_32K_Bank(PROM_8K_SIZE - 4, PROM_8K_SIZE - 3, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - if (VROM_1K_SIZE != 0) - { - SetVROM_8K_Bank(0); - } - } + if (VROM_1K_SIZE != 0) + { + SetVROM_8K_Bank(0); + } + } - //void Mapper042::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - switch (addr & 0xE003) - { - case 0xE000: - SetPROM_8K_Bank(3, data & 0x0F); - break; + //void Mapper042::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + switch (addr & 0xE003) + { + case 0xE000: + SetPROM_8K_Bank(3, data & 0x0F); + break; - case 0xE001: - if ((data & 0x08) != 0) SetVRAM_Mirror(VRAM_HMIRROR); - else SetVRAM_Mirror(VRAM_VMIRROR); - break; + case 0xE001: + if ((data & 0x08) != 0) SetVRAM_Mirror(VRAM_HMIRROR); + else SetVRAM_Mirror(VRAM_VMIRROR); + break; - case 0xE002: - if ((data & 0x02) != 0) - { - irq_enable = 0xFF; - } - else - { - irq_enable = 0; - irq_counter = 0; - } - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; - } - } + case 0xE002: + if ((data & 0x02) != 0) + { + irq_enable = 0xFF; + } + else + { + irq_enable = 0; + irq_counter = 0; + } + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; + } + } - //void Mapper042::HSync(INT scanline) - public override void HSync(int scanline) - { - nes.cpu.ClrIRQ(IRQ_MAPPER); - if (irq_enable != 0) - { - if (irq_counter < 215) - { - irq_counter++; - } - if (irq_counter == 215) - { - irq_enable = 0; - // nes.cpu.IRQ(); - nes.cpu.SetIRQ(IRQ_MAPPER); - } - } - } + //void Mapper042::HSync(INT scanline) + public override void HSync(int scanline) + { + nes.cpu.ClrIRQ(IRQ_MAPPER); + if (irq_enable != 0) + { + if (irq_counter < 215) + { + irq_counter++; + } + if (irq_counter == 215) + { + irq_enable = 0; + // nes.cpu.IRQ(); + nes.cpu.SetIRQ(IRQ_MAPPER); + } + } + } - //void Mapper042::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - p[0] = irq_enable; - p[1] = irq_counter; - } + //void Mapper042::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + p[0] = irq_enable; + p[1] = irq_counter; + } - //void Mapper042::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - irq_enable = p[0]; - irq_counter = p[1]; - } + //void Mapper042::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + irq_enable = p[0]; + irq_counter = p[1]; + } - public override bool IsStateSave() - { - return true; - } - } + public override bool IsStateSave() + { + return true; + } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper043.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper043.cs index 97894ac7..6975ce6d 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper043.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper043.cs @@ -1,138 +1,138 @@ ////////////////////////////////////////////////////////////////////////// // Mapper043 SMB2J // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { - public class Mapper043 : Mapper - { - BYTE irq_enable; - INT irq_counter; - public Mapper043(NES parent) : base(parent) - { - } + public class Mapper043 : Mapper + { + BYTE irq_enable; + INT irq_counter; + public Mapper043(NES parent) : base(parent) + { + } - public override void Reset() - { - irq_enable = 0xFF; - irq_counter = 0; + public override void Reset() + { + irq_enable = 0xFF; + irq_counter = 0; - SetPROM_8K_Bank(3, 2); - SetPROM_32K_Bank(1, 0, 4, 9); + SetPROM_8K_Bank(3, 2); + SetPROM_32K_Bank(1, 0, 4, 9); - if (VROM_1K_SIZE != 0) - { - SetVROM_8K_Bank(0); - } - } + if (VROM_1K_SIZE != 0) + { + SetVROM_8K_Bank(0); + } + } - //BYTE Mapper043::ReadLow(WORD addr) - public override byte ReadLow(ushort addr) - { - if (0x5000 <= addr && addr < 0x6000) - { - byte[] pPtr = nes.rom.GetPROM(); - return pPtr[0x2000 * 8 + 0x1000 + (addr - 0x5000)]; - } - return (BYTE)(addr >> 8); - } + //BYTE Mapper043::ReadLow(WORD addr) + public override byte ReadLow(ushort addr) + { + if (0x5000 <= addr && addr < 0x6000) + { + byte[] pPtr = nes.rom.GetPROM(); + return pPtr[0x2000 * 8 + 0x1000 + (addr - 0x5000)]; + } + return (BYTE)(addr >> 8); + } - //void Mapper043::ExWrite(WORD addr, BYTE data) - public override void ExWrite(ushort addr, byte data) - { - if ((addr & 0xF0FF) == 0x4022) - { - switch (data & 0x07) - { - case 0x00: - case 0x02: - case 0x03: - case 0x04: - SetPROM_8K_Bank(6, 4); - break; - case 0x01: - SetPROM_8K_Bank(6, 3); - break; - case 0x05: - SetPROM_8K_Bank(6, 7); - break; - case 0x06: - SetPROM_8K_Bank(6, 5); - break; - case 0x07: - SetPROM_8K_Bank(6, 6); - break; - } - } - } + //void Mapper043::ExWrite(WORD addr, BYTE data) + public override void ExWrite(ushort addr, byte data) + { + if ((addr & 0xF0FF) == 0x4022) + { + switch (data & 0x07) + { + case 0x00: + case 0x02: + case 0x03: + case 0x04: + SetPROM_8K_Bank(6, 4); + break; + case 0x01: + SetPROM_8K_Bank(6, 3); + break; + case 0x05: + SetPROM_8K_Bank(6, 7); + break; + case 0x06: + SetPROM_8K_Bank(6, 5); + break; + case 0x07: + SetPROM_8K_Bank(6, 6); + break; + } + } + } - //void Mapper043::WriteLow(WORD addr, BYTE data) - public override void WriteLow(ushort addr, byte data) - { - if ((addr & 0xF0FF) == 0x4022) - { - ExWrite(addr, data); - } - } + //void Mapper043::WriteLow(WORD addr, BYTE data) + public override void WriteLow(ushort addr, byte data) + { + if ((addr & 0xF0FF) == 0x4022) + { + ExWrite(addr, data); + } + } - //void Mapper043::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - if (addr == 0x8122) - { - if ((data & 0x03) != 0) - { - irq_enable = 1; - } - else - { - irq_counter = 0; - irq_enable = 0; - } - nes.cpu.ClrIRQ(IRQ_MAPPER); - } - } + //void Mapper043::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + if (addr == 0x8122) + { + if ((data & 0x03) != 0) + { + irq_enable = 1; + } + else + { + irq_counter = 0; + irq_enable = 0; + } + nes.cpu.ClrIRQ(IRQ_MAPPER); + } + } - //void Mapper043::HSync(INT scanline) - public override void HSync(int scanline) - { - nes.cpu.ClrIRQ(IRQ_MAPPER); - if (irq_enable != 0) - { - irq_counter += 341; - if (irq_counter >= 12288) - { - irq_counter = 0; - // nes.cpu.IRQ(); - nes.cpu.SetIRQ(IRQ_MAPPER); - } - } - } + //void Mapper043::HSync(INT scanline) + public override void HSync(int scanline) + { + nes.cpu.ClrIRQ(IRQ_MAPPER); + if (irq_enable != 0) + { + irq_counter += 341; + if (irq_counter >= 12288) + { + irq_counter = 0; + // nes.cpu.IRQ(); + nes.cpu.SetIRQ(IRQ_MAPPER); + } + } + } - //void Mapper043::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - //p[0] = irq_enable; - //*(INT*)&p[1] = irq_counter; - } + //void Mapper043::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + //p[0] = irq_enable; + //*(INT*)&p[1] = irq_counter; + } - //void Mapper043::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - //irq_enable = p[0]; - //irq_counter = *(INT*)&p[1]; - } + //void Mapper043::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + //irq_enable = p[0]; + //irq_counter = *(INT*)&p[1]; + } - public override bool IsStateSave() - { - return true; - } - } + public override bool IsStateSave() + { + return true; + } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper044.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper044.cs index b1736eee..3f50c7f8 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper044.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper044.cs @@ -1,289 +1,289 @@ ////////////////////////////////////////////////////////////////////////// // Mapper044 Super HiK 7-in-1 // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { - public class Mapper044 : Mapper - { - BYTE[] reg = new byte[8]; - BYTE patch; - BYTE bank; - BYTE prg0, prg1; - BYTE chr01, chr23, chr4, chr5, chr6, chr7; - BYTE irq_enable; - BYTE irq_counter; - BYTE irq_latch; - public Mapper044(NES parent) : base(parent) - { - } + public class Mapper044 : Mapper + { + BYTE[] reg = new byte[8]; + BYTE patch; + BYTE bank; + BYTE prg0, prg1; + BYTE chr01, chr23, chr4, chr5, chr6, chr7; + BYTE irq_enable; + BYTE irq_counter; + BYTE irq_latch; + public Mapper044(NES parent) : base(parent) + { + } - public override void Reset() - { - patch = 0; + public override void Reset() + { + patch = 0; - if (nes.rom.GetPROM_CRC() == 0x7eef434c) - { - patch = 1; - } + if (nes.rom.GetPROM_CRC() == 0x7eef434c) + { + patch = 1; + } - for (INT i = 0; i < 8; i++) - { - reg[i] = 0; - } + for (INT i = 0; i < 8; i++) + { + reg[i] = 0; + } - bank = 0; - prg0 = 0; - prg1 = 1; + bank = 0; + prg0 = 0; + prg1 = 1; - // set VROM banks - if (VROM_1K_SIZE!=0) - { - chr01 = 0; - chr23 = 2; - chr4 = 4; - chr5 = 5; - chr6 = 6; - chr7 = 7; - } - else - { - chr01 = chr23 = chr4 = chr5 = chr6 = chr7 = 0; - } + // set VROM banks + if (VROM_1K_SIZE != 0) + { + chr01 = 0; + chr23 = 2; + chr4 = 4; + chr5 = 5; + chr6 = 6; + chr7 = 7; + } + else + { + chr01 = chr23 = chr4 = chr5 = chr6 = chr7 = 0; + } - SetBank_CPU(); - SetBank_PPU(); + SetBank_CPU(); + SetBank_PPU(); - irq_enable = 0; - irq_counter = 0; - irq_latch = 0; - } + irq_enable = 0; + irq_counter = 0; + irq_latch = 0; + } - //void Mapper044::WriteLow(WORD addr, BYTE data) - public override void WriteLow(ushort addr, byte data) - { - if (addr == 0x6000) - { - if (patch!=0) - { - bank = (byte)((data & 0x06) >> 1); - } - else - { - bank = (byte)((data & 0x01) << 1); - } - SetBank_CPU(); - SetBank_PPU(); - } - } + //void Mapper044::WriteLow(WORD addr, BYTE data) + public override void WriteLow(ushort addr, byte data) + { + if (addr == 0x6000) + { + if (patch != 0) + { + bank = (byte)((data & 0x06) >> 1); + } + else + { + bank = (byte)((data & 0x01) << 1); + } + SetBank_CPU(); + SetBank_PPU(); + } + } - //void Mapper044::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - switch (addr & 0xE001) - { - case 0x8000: - reg[0] = data; - SetBank_CPU(); - SetBank_PPU(); - break; - case 0x8001: - reg[1] = data; - switch (reg[0] & 0x07) - { - case 0x00: - chr01 = (byte)(data & 0xFE); - SetBank_PPU(); - break; - case 0x01: - chr23 = (byte)(data & 0xFE); - SetBank_PPU(); - break; - case 0x02: - chr4 = data; - SetBank_PPU(); - break; - case 0x03: - chr5 = data; - SetBank_PPU(); - break; - case 0x04: - chr6 = data; - SetBank_PPU(); - break; - case 0x05: - chr7 = data; - SetBank_PPU(); - break; - case 0x06: - prg0 = data; - SetBank_CPU(); - break; - case 0x07: - prg1 = data; - SetBank_CPU(); - break; - } - break; - case 0xA000: - reg[2] = data; - if (!nes.rom.Is4SCREEN()) - { - if ((data & 0x01)!=0) SetVRAM_Mirror(VRAM_HMIRROR); - else SetVRAM_Mirror(VRAM_VMIRROR); - } - break; - case 0xA001: - reg[3] = data; - bank = (byte)(data & 0x07); - if (bank == 7) - { - bank = 6; - } - SetBank_CPU(); - SetBank_PPU(); - break; - case 0xC000: - reg[4] = data; - irq_counter = data; - break; - case 0xC001: - reg[5] = data; - irq_latch = data; - break; - case 0xE000: - reg[6] = data; - irq_enable = 0; - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; - case 0xE001: - reg[7] = data; - irq_enable = 1; - // nes.cpu.ClrIRQ( IRQ_MAPPER ); - break; - } - } + //void Mapper044::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + switch (addr & 0xE001) + { + case 0x8000: + reg[0] = data; + SetBank_CPU(); + SetBank_PPU(); + break; + case 0x8001: + reg[1] = data; + switch (reg[0] & 0x07) + { + case 0x00: + chr01 = (byte)(data & 0xFE); + SetBank_PPU(); + break; + case 0x01: + chr23 = (byte)(data & 0xFE); + SetBank_PPU(); + break; + case 0x02: + chr4 = data; + SetBank_PPU(); + break; + case 0x03: + chr5 = data; + SetBank_PPU(); + break; + case 0x04: + chr6 = data; + SetBank_PPU(); + break; + case 0x05: + chr7 = data; + SetBank_PPU(); + break; + case 0x06: + prg0 = data; + SetBank_CPU(); + break; + case 0x07: + prg1 = data; + SetBank_CPU(); + break; + } + break; + case 0xA000: + reg[2] = data; + if (!nes.rom.Is4SCREEN()) + { + if ((data & 0x01) != 0) SetVRAM_Mirror(VRAM_HMIRROR); + else SetVRAM_Mirror(VRAM_VMIRROR); + } + break; + case 0xA001: + reg[3] = data; + bank = (byte)(data & 0x07); + if (bank == 7) + { + bank = 6; + } + SetBank_CPU(); + SetBank_PPU(); + break; + case 0xC000: + reg[4] = data; + irq_counter = data; + break; + case 0xC001: + reg[5] = data; + irq_latch = data; + break; + case 0xE000: + reg[6] = data; + irq_enable = 0; + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; + case 0xE001: + reg[7] = data; + irq_enable = 1; + // nes.cpu.ClrIRQ( IRQ_MAPPER ); + break; + } + } - //void Mapper044::HSync(INT scanline) - public override void HSync(int scanline) - { - if ((scanline >= 0 && scanline <= 239)) - { - if (nes.ppu.IsDispON()) - { - if (irq_enable!=0) - { - if ((--irq_counter)==0) - { - irq_counter = irq_latch; - // nes.cpu.IRQ(); - nes.cpu.SetIRQ(IRQ_MAPPER); - } - } - } - } - } + //void Mapper044::HSync(INT scanline) + public override void HSync(int scanline) + { + if ((scanline >= 0 && scanline <= 239)) + { + if (nes.ppu.IsDispON()) + { + if (irq_enable != 0) + { + if ((--irq_counter) == 0) + { + irq_counter = irq_latch; + // nes.cpu.IRQ(); + nes.cpu.SetIRQ(IRQ_MAPPER); + } + } + } + } + } - void SetBank_CPU() - { - if ((reg[0] & 0x40)!=0) - { - SetPROM_8K_Bank(4, ((bank == 6) ? 0x1e : 0x0e) | (bank << 4)); - SetPROM_8K_Bank(5, ((bank == 6) ? 0x1f & prg1 : 0x0f & prg1) | (bank << 4)); - SetPROM_8K_Bank(6, ((bank == 6) ? 0x1f & prg0 : 0x0f & prg0) | (bank << 4)); - SetPROM_8K_Bank(7, ((bank == 6) ? 0x1f : 0x0f) | (bank << 4)); - } - else - { - SetPROM_8K_Bank(4, ((bank == 6) ? 0x1f & prg0 : 0x0f & prg0) | (bank << 4)); - SetPROM_8K_Bank(5, ((bank == 6) ? 0x1f & prg1 : 0x0f & prg1) | (bank << 4)); - SetPROM_8K_Bank(6, ((bank == 6) ? 0x1e : 0x0e) | (bank << 4)); - SetPROM_8K_Bank(7, ((bank == 6) ? 0x1f : 0x0f) | (bank << 4)); - } - } + void SetBank_CPU() + { + if ((reg[0] & 0x40) != 0) + { + SetPROM_8K_Bank(4, ((bank == 6) ? 0x1e : 0x0e) | (bank << 4)); + SetPROM_8K_Bank(5, ((bank == 6) ? 0x1f & prg1 : 0x0f & prg1) | (bank << 4)); + SetPROM_8K_Bank(6, ((bank == 6) ? 0x1f & prg0 : 0x0f & prg0) | (bank << 4)); + SetPROM_8K_Bank(7, ((bank == 6) ? 0x1f : 0x0f) | (bank << 4)); + } + else + { + SetPROM_8K_Bank(4, ((bank == 6) ? 0x1f & prg0 : 0x0f & prg0) | (bank << 4)); + SetPROM_8K_Bank(5, ((bank == 6) ? 0x1f & prg1 : 0x0f & prg1) | (bank << 4)); + SetPROM_8K_Bank(6, ((bank == 6) ? 0x1e : 0x0e) | (bank << 4)); + SetPROM_8K_Bank(7, ((bank == 6) ? 0x1f : 0x0f) | (bank << 4)); + } + } - void SetBank_PPU() - { - if (VROM_1K_SIZE!=0) - { - if ((reg[0] & 0x80)!=0) - { - SetVROM_1K_Bank(0, ((bank == 6) ? 0xff & chr4 : 0x7f & chr4) | (bank << 7)); - SetVROM_1K_Bank(1, ((bank == 6) ? 0xff & chr5 : 0x7f & chr5) | (bank << 7)); - SetVROM_1K_Bank(2, ((bank == 6) ? 0xff & chr6 : 0x7f & chr6) | (bank << 7)); - SetVROM_1K_Bank(3, ((bank == 6) ? 0xff & chr7 : 0x7f & chr7) | (bank << 7)); - SetVROM_1K_Bank(4, ((bank == 6) ? 0xff & chr01 : 0x7f & chr01) | (bank << 7)); - SetVROM_1K_Bank(5, ((bank == 6) ? 0xff & (chr01 + 1) : 0x7f & (chr01 + 1)) | (bank << 7)); - SetVROM_1K_Bank(6, ((bank == 6) ? 0xff & chr23 : 0x7f & chr23) | (bank << 7)); - SetVROM_1K_Bank(7, ((bank == 6) ? 0xff & (chr23 + 1) : 0x7f & (chr23 + 1)) | (bank << 7)); - } - else - { - SetVROM_1K_Bank(0, ((bank == 6) ? 0xff & chr01 : 0x7f & chr01) | (bank << 7)); - SetVROM_1K_Bank(1, ((bank == 6) ? 0xff & (chr01 + 1) : 0x7f & (chr01 + 1)) | (bank << 7)); - SetVROM_1K_Bank(2, ((bank == 6) ? 0xff & chr23 : 0x7f & chr23) | (bank << 7)); - SetVROM_1K_Bank(3, ((bank == 6) ? 0xff & (chr23 + 1) : 0x7f & (chr23 + 1)) | (bank << 7)); - SetVROM_1K_Bank(4, ((bank == 6) ? 0xff & chr4 : 0x7f & chr4) | (bank << 7)); - SetVROM_1K_Bank(5, ((bank == 6) ? 0xff & chr5 : 0x7f & chr5) | (bank << 7)); - SetVROM_1K_Bank(6, ((bank == 6) ? 0xff & chr6 : 0x7f & chr6) | (bank << 7)); - SetVROM_1K_Bank(7, ((bank == 6) ? 0xff & chr7 : 0x7f & chr7) | (bank << 7)); - } - } - } + void SetBank_PPU() + { + if (VROM_1K_SIZE != 0) + { + if ((reg[0] & 0x80) != 0) + { + SetVROM_1K_Bank(0, ((bank == 6) ? 0xff & chr4 : 0x7f & chr4) | (bank << 7)); + SetVROM_1K_Bank(1, ((bank == 6) ? 0xff & chr5 : 0x7f & chr5) | (bank << 7)); + SetVROM_1K_Bank(2, ((bank == 6) ? 0xff & chr6 : 0x7f & chr6) | (bank << 7)); + SetVROM_1K_Bank(3, ((bank == 6) ? 0xff & chr7 : 0x7f & chr7) | (bank << 7)); + SetVROM_1K_Bank(4, ((bank == 6) ? 0xff & chr01 : 0x7f & chr01) | (bank << 7)); + SetVROM_1K_Bank(5, ((bank == 6) ? 0xff & (chr01 + 1) : 0x7f & (chr01 + 1)) | (bank << 7)); + SetVROM_1K_Bank(6, ((bank == 6) ? 0xff & chr23 : 0x7f & chr23) | (bank << 7)); + SetVROM_1K_Bank(7, ((bank == 6) ? 0xff & (chr23 + 1) : 0x7f & (chr23 + 1)) | (bank << 7)); + } + else + { + SetVROM_1K_Bank(0, ((bank == 6) ? 0xff & chr01 : 0x7f & chr01) | (bank << 7)); + SetVROM_1K_Bank(1, ((bank == 6) ? 0xff & (chr01 + 1) : 0x7f & (chr01 + 1)) | (bank << 7)); + SetVROM_1K_Bank(2, ((bank == 6) ? 0xff & chr23 : 0x7f & chr23) | (bank << 7)); + SetVROM_1K_Bank(3, ((bank == 6) ? 0xff & (chr23 + 1) : 0x7f & (chr23 + 1)) | (bank << 7)); + SetVROM_1K_Bank(4, ((bank == 6) ? 0xff & chr4 : 0x7f & chr4) | (bank << 7)); + SetVROM_1K_Bank(5, ((bank == 6) ? 0xff & chr5 : 0x7f & chr5) | (bank << 7)); + SetVROM_1K_Bank(6, ((bank == 6) ? 0xff & chr6 : 0x7f & chr6) | (bank << 7)); + SetVROM_1K_Bank(7, ((bank == 6) ? 0xff & chr7 : 0x7f & chr7) | (bank << 7)); + } + } + } - //void Mapper044::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - for (INT i = 0; i < 8; i++) - { - p[i] = reg[i]; - } - p[8] = prg0; - p[9] = prg1; - p[10] = chr01; - p[11] = chr23; - p[12] = chr4; - p[13] = chr5; - p[14] = chr6; - p[15] = chr7; - p[16] = irq_enable; - p[17] = irq_counter; - p[18] = irq_latch; - p[19] = bank; - } + //void Mapper044::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + for (INT i = 0; i < 8; i++) + { + p[i] = reg[i]; + } + p[8] = prg0; + p[9] = prg1; + p[10] = chr01; + p[11] = chr23; + p[12] = chr4; + p[13] = chr5; + p[14] = chr6; + p[15] = chr7; + p[16] = irq_enable; + p[17] = irq_counter; + p[18] = irq_latch; + p[19] = bank; + } - //void Mapper044::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - for (INT i = 0; i < 8; i++) - { - reg[i] = p[i]; - } - prg0 = p[8]; - prg1 = p[9]; - chr01 = p[10]; - chr23 = p[11]; - chr4 = p[12]; - chr5 = p[13]; - chr6 = p[14]; - chr7 = p[15]; - irq_enable = p[16]; - irq_counter = p[17]; - irq_latch = p[18]; - bank = p[19]; - } + //void Mapper044::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + for (INT i = 0; i < 8; i++) + { + reg[i] = p[i]; + } + prg0 = p[8]; + prg1 = p[9]; + chr01 = p[10]; + chr23 = p[11]; + chr4 = p[12]; + chr5 = p[13]; + chr6 = p[14]; + chr7 = p[15]; + irq_enable = p[16]; + irq_counter = p[17]; + irq_latch = p[18]; + bank = p[19]; + } - public override bool IsStateSave() - { - return true; - } - } + public override bool IsStateSave() + { + return true; + } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper045.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper045.cs index 8e8a1361..16ea4d10 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper045.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper045.cs @@ -1,387 +1,387 @@ ////////////////////////////////////////////////////////////////////////// // Mapper045 1000000-in-1 // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { - public class Mapper045 : Mapper - { - BYTE[] reg = new byte[8]; - BYTE patch; - BYTE prg0, prg1, prg2, prg3; - BYTE chr0, chr1, chr2, chr3, chr4, chr5, chr6, chr7; - BYTE[] p = new byte[4]; - INT[] c = new int[8]; - BYTE irq_enable; - BYTE irq_counter; - BYTE irq_latch; - BYTE irq_latched; - BYTE irq_reset; - public Mapper045(NES parent) : base(parent) - { - } + public class Mapper045 : Mapper + { + BYTE[] reg = new byte[8]; + BYTE patch; + BYTE prg0, prg1, prg2, prg3; + BYTE chr0, chr1, chr2, chr3, chr4, chr5, chr6, chr7; + BYTE[] p = new byte[4]; + INT[] c = new int[8]; + BYTE irq_enable; + BYTE irq_counter; + BYTE irq_latch; + BYTE irq_latched; + BYTE irq_reset; + public Mapper045(NES parent) : base(parent) + { + } - public override void Reset() - { - patch = 0; - for (INT i = 0; i < 8; i++) - { - reg[i] = 0; - } + public override void Reset() + { + patch = 0; + for (INT i = 0; i < 8; i++) + { + reg[i] = 0; + } - prg0 = 0; - prg1 = 1; - prg2 = (byte)(PROM_8K_SIZE - 2); - prg3 = (byte)(PROM_8K_SIZE - 1); + prg0 = 0; + prg1 = 1; + prg2 = (byte)(PROM_8K_SIZE - 2); + prg3 = (byte)(PROM_8K_SIZE - 1); - uint crc = nes.rom.GetPROM_CRC(); - if (crc == 0x58bcacf6 // Kunio 8-in-1 (Pirate Cart) - || crc == 0x9103cfd6 // HIK 7-in-1 (Pirate Cart) - || crc == 0xc082e6d3) - { // Super 8-in-1 (Pirate Cart) - patch = 1; - prg2 = 62; - prg3 = 63; - } - if (crc == 0xe0dd259d) - { // Super 3-in-1 (Pirate Cart) - patch = 2; - } - SetPROM_32K_Bank(prg0, prg1, prg2, prg3); - p[0] = prg0; - p[1] = prg1; - p[2] = prg2; - p[3] = prg3; + uint crc = nes.rom.GetPROM_CRC(); + if (crc == 0x58bcacf6 // Kunio 8-in-1 (Pirate Cart) + || crc == 0x9103cfd6 // HIK 7-in-1 (Pirate Cart) + || crc == 0xc082e6d3) + { // Super 8-in-1 (Pirate Cart) + patch = 1; + prg2 = 62; + prg3 = 63; + } + if (crc == 0xe0dd259d) + { // Super 3-in-1 (Pirate Cart) + patch = 2; + } + SetPROM_32K_Bank(prg0, prg1, prg2, prg3); + p[0] = prg0; + p[1] = prg1; + p[2] = prg2; + p[3] = prg3; - SetVROM_8K_Bank(0); + SetVROM_8K_Bank(0); - // chr0 = c[0] = 0; - // chr1 = c[1] = 0 - // chr2 = c[2] = 0; - // chr3 = c[3] = 0; - // chr4 = c[4] = 0; - // chr5 = c[5] = 0; - // chr6 = c[6] = 0; - // chr7 = c[7] = 0; + // chr0 = c[0] = 0; + // chr1 = c[1] = 0 + // chr2 = c[2] = 0; + // chr3 = c[3] = 0; + // chr4 = c[4] = 0; + // chr5 = c[5] = 0; + // chr6 = c[6] = 0; + // chr7 = c[7] = 0; - c[0] = chr0 = 0; - c[1] = chr1 = 1; - c[2] = chr2 = 2; - c[3] = chr3 = 3; - c[4] = chr4 = 4; - c[5] = chr5 = 5; - c[6] = chr6 = 6; - c[7] = chr7 = 7; + c[0] = chr0 = 0; + c[1] = chr1 = 1; + c[2] = chr2 = 2; + c[3] = chr3 = 3; + c[4] = chr4 = 4; + c[5] = chr5 = 5; + c[6] = chr6 = 6; + c[7] = chr7 = 7; - irq_enable = 0; - irq_counter = 0; - irq_latch = 0; - irq_latched = 0; - irq_reset = 0; - } + irq_enable = 0; + irq_counter = 0; + irq_latch = 0; + irq_latched = 0; + irq_reset = 0; + } - //void Mapper045::WriteLow(WORD addr, BYTE data) - public override void WriteLow(ushort addr, byte data) - { - // if( addr == 0x6000 ) { - // if( addr == 0x6000 && !(reg[3]&0x40) ) { - if ((reg[3] & 0x40) == 0) - { - reg[reg[5]] = data; - reg[5] = (byte)((reg[5] + 1) & 0x03); + //void Mapper045::WriteLow(WORD addr, BYTE data) + public override void WriteLow(ushort addr, byte data) + { + // if( addr == 0x6000 ) { + // if( addr == 0x6000 && !(reg[3]&0x40) ) { + if ((reg[3] & 0x40) == 0) + { + reg[reg[5]] = data; + reg[5] = (byte)((reg[5] + 1) & 0x03); - SetBank_CPU_4(prg0); - SetBank_CPU_5(prg1); - SetBank_CPU_6(prg2); - SetBank_CPU_7(prg3); - SetBank_PPU(); - } - } + SetBank_CPU_4(prg0); + SetBank_CPU_5(prg1); + SetBank_CPU_6(prg2); + SetBank_CPU_7(prg3); + SetBank_PPU(); + } + } - //void Mapper045::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - switch (addr & 0xE001) - { - case 0x8000: - if ((data & 0x40) != (reg[6] & 0x40)) - { - BYTE swp; - swp = prg0; prg0 = prg2; prg2 = swp; - swp = p[0]; p[0] = p[2]; p[2] = swp; - SetBank_CPU_4(p[0]); - SetBank_CPU_5(p[1]); - } - if (VROM_1K_SIZE != 0) - { - if ((data & 0x80) != (reg[6] & 0x80)) - { - INT swp; - swp = chr4; chr4 = chr0; chr0 = (byte)swp; - swp = chr5; chr5 = chr1; chr1 = (byte)swp; - swp = chr6; chr6 = chr2; chr2 = (byte)swp; - swp = chr7; chr7 = chr3; chr3 = (byte)swp; - swp = c[4]; c[4] = c[0]; c[0] = swp; - swp = c[5]; c[5] = c[1]; c[1] = swp; - swp = c[6]; c[6] = c[2]; c[2] = swp; - swp = c[7]; c[7] = c[3]; c[3] = swp; - SetVROM_8K_Bank(c[0], c[1], c[2], c[3], c[4], c[5], c[6], c[7]); - } - } - reg[6] = data; - break; - case 0x8001: - switch (reg[6] & 0x07) - { - case 0x00: - chr0 = (byte)((data & 0xFE) + 0); - chr1 = (byte)((data & 0xFE) + 1); - SetBank_PPU(); - break; - case 0x01: - chr2 = (byte)((data & 0xFE) + 0); - chr3 = (byte)((data & 0xFE) + 1); - SetBank_PPU(); - break; - case 0x02: - chr4 = data; - SetBank_PPU(); - break; - case 0x03: - chr5 = data; - SetBank_PPU(); - break; - case 0x04: - chr6 = data; - SetBank_PPU(); - break; - case 0x05: - chr7 = data; - SetBank_PPU(); - break; - case 0x06: - if ((reg[6] & 0x40) != 0) - { - prg2 = (byte)(data & 0x3F); - SetBank_CPU_6(data); - } - else - { - prg0 = (byte)(data & 0x3F); - SetBank_CPU_4(data); - } - break; - case 0x07: - prg1 = (byte)(data & 0x3F); - SetBank_CPU_5(data); - break; - } - break; - case 0xA000: - if ((data & 0x01) != 0) SetVRAM_Mirror(VRAM_HMIRROR); - else SetVRAM_Mirror(VRAM_VMIRROR); - break; - case 0xC000: - if (patch == 2) - { - if (data == 0x29 || data == 0x70) - data = 0x07; - } - irq_latch = data; - irq_latched = 1; - if (irq_reset != 0) - { - irq_counter = data; - irq_latched = 0; - } - // irq_counter = data; - break; - case 0xC001: - // irq_latch = data; - irq_counter = irq_latch; - break; - case 0xE000: - irq_enable = 0; - irq_reset = 1; - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; - case 0xE001: - irq_enable = 1; - if (irq_latched != 0) - { - irq_counter = irq_latch; - } - break; - } - } + //void Mapper045::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + switch (addr & 0xE001) + { + case 0x8000: + if ((data & 0x40) != (reg[6] & 0x40)) + { + BYTE swp; + swp = prg0; prg0 = prg2; prg2 = swp; + swp = p[0]; p[0] = p[2]; p[2] = swp; + SetBank_CPU_4(p[0]); + SetBank_CPU_5(p[1]); + } + if (VROM_1K_SIZE != 0) + { + if ((data & 0x80) != (reg[6] & 0x80)) + { + INT swp; + swp = chr4; chr4 = chr0; chr0 = (byte)swp; + swp = chr5; chr5 = chr1; chr1 = (byte)swp; + swp = chr6; chr6 = chr2; chr2 = (byte)swp; + swp = chr7; chr7 = chr3; chr3 = (byte)swp; + swp = c[4]; c[4] = c[0]; c[0] = swp; + swp = c[5]; c[5] = c[1]; c[1] = swp; + swp = c[6]; c[6] = c[2]; c[2] = swp; + swp = c[7]; c[7] = c[3]; c[3] = swp; + SetVROM_8K_Bank(c[0], c[1], c[2], c[3], c[4], c[5], c[6], c[7]); + } + } + reg[6] = data; + break; + case 0x8001: + switch (reg[6] & 0x07) + { + case 0x00: + chr0 = (byte)((data & 0xFE) + 0); + chr1 = (byte)((data & 0xFE) + 1); + SetBank_PPU(); + break; + case 0x01: + chr2 = (byte)((data & 0xFE) + 0); + chr3 = (byte)((data & 0xFE) + 1); + SetBank_PPU(); + break; + case 0x02: + chr4 = data; + SetBank_PPU(); + break; + case 0x03: + chr5 = data; + SetBank_PPU(); + break; + case 0x04: + chr6 = data; + SetBank_PPU(); + break; + case 0x05: + chr7 = data; + SetBank_PPU(); + break; + case 0x06: + if ((reg[6] & 0x40) != 0) + { + prg2 = (byte)(data & 0x3F); + SetBank_CPU_6(data); + } + else + { + prg0 = (byte)(data & 0x3F); + SetBank_CPU_4(data); + } + break; + case 0x07: + prg1 = (byte)(data & 0x3F); + SetBank_CPU_5(data); + break; + } + break; + case 0xA000: + if ((data & 0x01) != 0) SetVRAM_Mirror(VRAM_HMIRROR); + else SetVRAM_Mirror(VRAM_VMIRROR); + break; + case 0xC000: + if (patch == 2) + { + if (data == 0x29 || data == 0x70) + data = 0x07; + } + irq_latch = data; + irq_latched = 1; + if (irq_reset != 0) + { + irq_counter = data; + irq_latched = 0; + } + // irq_counter = data; + break; + case 0xC001: + // irq_latch = data; + irq_counter = irq_latch; + break; + case 0xE000: + irq_enable = 0; + irq_reset = 1; + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; + case 0xE001: + irq_enable = 1; + if (irq_latched != 0) + { + irq_counter = irq_latch; + } + break; + } + } - //void Mapper045::HSync(INT scanline) - public override void HSync(int scanline) - { - irq_reset = 0; - if ((scanline >= 0 && scanline <= 239) && nes.ppu.IsDispON()) - { - if (irq_counter != 0) - { - irq_counter--; - if (irq_counter == 0) - { - if (irq_enable != 0) - { - nes.cpu.SetIRQ(IRQ_MAPPER); - } - } - } - } - } + //void Mapper045::HSync(INT scanline) + public override void HSync(int scanline) + { + irq_reset = 0; + if ((scanline >= 0 && scanline <= 239) && nes.ppu.IsDispON()) + { + if (irq_counter != 0) + { + irq_counter--; + if (irq_counter == 0) + { + if (irq_enable != 0) + { + nes.cpu.SetIRQ(IRQ_MAPPER); + } + } + } + } + } - void SetBank_CPU_4(INT data) - { - data &= (reg[3] & 0x3F) ^ 0xFF; - data &= 0x3F; - data |= reg[1]; - SetPROM_8K_Bank(4, data); - p[0] = (byte)data; - } + void SetBank_CPU_4(INT data) + { + data &= (reg[3] & 0x3F) ^ 0xFF; + data &= 0x3F; + data |= reg[1]; + SetPROM_8K_Bank(4, data); + p[0] = (byte)data; + } - void SetBank_CPU_5(INT data) - { - data &= (reg[3] & 0x3F) ^ 0xFF; - data &= 0x3F; - data |= reg[1]; - SetPROM_8K_Bank(5, data); - p[1] = (byte)data; - } + void SetBank_CPU_5(INT data) + { + data &= (reg[3] & 0x3F) ^ 0xFF; + data &= 0x3F; + data |= reg[1]; + SetPROM_8K_Bank(5, data); + p[1] = (byte)data; + } - void SetBank_CPU_6(INT data) - { - data &= (reg[3] & 0x3F) ^ 0xFF; - data &= 0x3F; - data |= reg[1]; - SetPROM_8K_Bank(6, data); - p[2] = (byte)data; - } + void SetBank_CPU_6(INT data) + { + data &= (reg[3] & 0x3F) ^ 0xFF; + data &= 0x3F; + data |= reg[1]; + SetPROM_8K_Bank(6, data); + p[2] = (byte)data; + } - void SetBank_CPU_7(INT data) - { - data &= (reg[3] & 0x3F) ^ 0xFF; - data &= 0x3F; - data |= reg[1]; - SetPROM_8K_Bank(7, data); - p[3] = (byte)data; - } + void SetBank_CPU_7(INT data) + { + data &= (reg[3] & 0x3F) ^ 0xFF; + data &= 0x3F; + data |= reg[1]; + SetPROM_8K_Bank(7, data); + p[3] = (byte)data; + } - void SetBank_PPU() - { - BYTE[] table = new byte[] { - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF - }; + void SetBank_PPU() + { + BYTE[] table = new byte[] { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF + }; - c[0] = chr0; - c[1] = chr1; - c[2] = chr2; - c[3] = chr3; - c[4] = chr4; - c[5] = chr5; - c[6] = chr6; - c[7] = chr7; + c[0] = chr0; + c[1] = chr1; + c[2] = chr2; + c[3] = chr3; + c[4] = chr4; + c[5] = chr5; + c[6] = chr6; + c[7] = chr7; - for (INT i = 0; i < 8; i++) - { - c[i] &= table[reg[2] & 0x0F]; - c[i] |= reg[0] & ((patch != 1) ? 0xFF : 0xC0); - c[i] += (reg[2] & ((patch != 1) ? 0x10 : 0x30)) << 4; - } + for (INT i = 0; i < 8; i++) + { + c[i] &= table[reg[2] & 0x0F]; + c[i] |= reg[0] & ((patch != 1) ? 0xFF : 0xC0); + c[i] += (reg[2] & ((patch != 1) ? 0x10 : 0x30)) << 4; + } - if ((reg[6] & 0x80) != 0) - { - SetVROM_8K_Bank(c[4], c[5], c[6], c[7], c[0], c[1], c[2], c[3]); - } - else - { - SetVROM_8K_Bank(c[0], c[1], c[2], c[3], c[4], c[5], c[6], c[7]); - } - } + if ((reg[6] & 0x80) != 0) + { + SetVROM_8K_Bank(c[4], c[5], c[6], c[7], c[0], c[1], c[2], c[3]); + } + else + { + SetVROM_8K_Bank(c[0], c[1], c[2], c[3], c[4], c[5], c[6], c[7]); + } + } - //void Mapper045::SaveState(LPBYTE ps) - public override void SaveState(byte[] p) - { - //INT i; - //for (i = 0; i < 8; i++) - //{ - // ps[i] = reg[i]; - //} - //for (i = 0; i < 4; i++) - //{ - // ps[i + 8] = p[i]; - //} - //for (i = 0; i < 8; i++) - //{ - // *(INT*)&ps[i * 4 + 64] = c[i]; - //} - //ps[20] = prg0; - //ps[21] = prg1; - //ps[22] = prg2; - //ps[23] = prg3; - //ps[24] = chr0; - //ps[25] = chr1; - //ps[26] = chr2; - //ps[27] = chr3; - //ps[28] = chr4; - //ps[29] = chr5; - //ps[30] = chr6; - //ps[31] = chr7; - //ps[32] = irq_enable; - //ps[33] = irq_counter; - //ps[34] = irq_latch; - } + //void Mapper045::SaveState(LPBYTE ps) + public override void SaveState(byte[] p) + { + //INT i; + //for (i = 0; i < 8; i++) + //{ + // ps[i] = reg[i]; + //} + //for (i = 0; i < 4; i++) + //{ + // ps[i + 8] = p[i]; + //} + //for (i = 0; i < 8; i++) + //{ + // *(INT*)&ps[i * 4 + 64] = c[i]; + //} + //ps[20] = prg0; + //ps[21] = prg1; + //ps[22] = prg2; + //ps[23] = prg3; + //ps[24] = chr0; + //ps[25] = chr1; + //ps[26] = chr2; + //ps[27] = chr3; + //ps[28] = chr4; + //ps[29] = chr5; + //ps[30] = chr6; + //ps[31] = chr7; + //ps[32] = irq_enable; + //ps[33] = irq_counter; + //ps[34] = irq_latch; + } - //void Mapper045::LoadState(LPBYTE ps) - public override void LoadState(byte[] p) - { - //INT i; - //for (i = 0; i < 8; i++) - //{ - // reg[i] = ps[i]; - //} - //for (i = 0; i < 4; i++) - //{ - // p[i] = ps[i + 8]; - //} - //for (i = 0; i < 8; i++) - //{ - // c[i] = *(INT*)&ps[i * 4 + 64]; - //} - //prg0 = ps[20]; - //prg1 = ps[21]; - //prg2 = ps[22]; - //prg3 = ps[23]; - //chr0 = ps[24]; - //chr1 = ps[25]; - //chr2 = ps[26]; - //chr3 = ps[27]; - //chr4 = ps[28]; - //chr5 = ps[29]; - //chr6 = ps[30]; - //chr7 = ps[31]; - //irq_enable = ps[32]; - //irq_counter = ps[33]; - //irq_latch = ps[34]; - } + //void Mapper045::LoadState(LPBYTE ps) + public override void LoadState(byte[] p) + { + //INT i; + //for (i = 0; i < 8; i++) + //{ + // reg[i] = ps[i]; + //} + //for (i = 0; i < 4; i++) + //{ + // p[i] = ps[i + 8]; + //} + //for (i = 0; i < 8; i++) + //{ + // c[i] = *(INT*)&ps[i * 4 + 64]; + //} + //prg0 = ps[20]; + //prg1 = ps[21]; + //prg2 = ps[22]; + //prg3 = ps[23]; + //chr0 = ps[24]; + //chr1 = ps[25]; + //chr2 = ps[26]; + //chr3 = ps[27]; + //chr4 = ps[28]; + //chr5 = ps[29]; + //chr6 = ps[30]; + //chr7 = ps[31]; + //irq_enable = ps[32]; + //irq_counter = ps[33]; + //irq_latch = ps[34]; + } - public override bool IsStateSave() - { - return true; - } + public override bool IsStateSave() + { + return true; + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper046.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper046.cs index fdf5ee73..a649e4d6 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper046.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper046.cs @@ -2,87 +2,84 @@ // Mapper046 Rumble Station // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper046 : Mapper - { - int[] reg = new int[4]; - public Mapper046(NES parent) : base(parent) - { - } + public class Mapper046 : Mapper + { + int[] reg = new int[4]; + public Mapper046(NES parent) : base(parent) + { + } - public override void Reset() - { - reg[0] = 0; - reg[1] = 0; - reg[2] = 0; - reg[3] = 0; + public override void Reset() + { + reg[0] = 0; + reg[1] = 0; + reg[2] = 0; + reg[3] = 0; - SetBank(); - SetVRAM_Mirror(VRAM_VMIRROR); - } + SetBank(); + SetVRAM_Mirror(VRAM_VMIRROR); + } - //void Mapper046::WriteLow(WORD addr, BYTE data) - public override void WriteLow(ushort addr, byte data) - { - reg[0] = data & 0x0F; - reg[1] = (data & 0xF0) >> 4; - SetBank(); - } + //void Mapper046::WriteLow(WORD addr, BYTE data) + public override void WriteLow(ushort addr, byte data) + { + reg[0] = data & 0x0F; + reg[1] = (data & 0xF0) >> 4; + SetBank(); + } - //void Mapper046::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - reg[2] = data & 0x01; - reg[3] = (data & 0x70) >> 4; - SetBank(); - } + //void Mapper046::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + reg[2] = data & 0x01; + reg[3] = (data & 0x70) >> 4; + SetBank(); + } - void SetBank() - { - SetPROM_8K_Bank(4, reg[0] * 8 + reg[2] * 4 + 0); - SetPROM_8K_Bank(5, reg[0] * 8 + reg[2] * 4 + 1); - SetPROM_8K_Bank(6, reg[0] * 8 + reg[2] * 4 + 2); - SetPROM_8K_Bank(7, reg[0] * 8 + reg[2] * 4 + 3); + void SetBank() + { + SetPROM_8K_Bank(4, reg[0] * 8 + reg[2] * 4 + 0); + SetPROM_8K_Bank(5, reg[0] * 8 + reg[2] * 4 + 1); + SetPROM_8K_Bank(6, reg[0] * 8 + reg[2] * 4 + 2); + SetPROM_8K_Bank(7, reg[0] * 8 + reg[2] * 4 + 3); - SetVROM_1K_Bank(0, reg[1] * 64 + reg[3] * 8 + 0); - SetVROM_1K_Bank(1, reg[1] * 64 + reg[3] * 8 + 1); - SetVROM_1K_Bank(2, reg[1] * 64 + reg[3] * 8 + 2); - SetVROM_1K_Bank(3, reg[1] * 64 + reg[3] * 8 + 3); - SetVROM_1K_Bank(4, reg[1] * 64 + reg[3] * 8 + 4); - SetVROM_1K_Bank(5, reg[1] * 64 + reg[3] * 8 + 5); - SetVROM_1K_Bank(6, reg[1] * 64 + reg[3] * 8 + 6); - SetVROM_1K_Bank(7, reg[1] * 64 + reg[3] * 8 + 7); - } + SetVROM_1K_Bank(0, reg[1] * 64 + reg[3] * 8 + 0); + SetVROM_1K_Bank(1, reg[1] * 64 + reg[3] * 8 + 1); + SetVROM_1K_Bank(2, reg[1] * 64 + reg[3] * 8 + 2); + SetVROM_1K_Bank(3, reg[1] * 64 + reg[3] * 8 + 3); + SetVROM_1K_Bank(4, reg[1] * 64 + reg[3] * 8 + 4); + SetVROM_1K_Bank(5, reg[1] * 64 + reg[3] * 8 + 5); + SetVROM_1K_Bank(6, reg[1] * 64 + reg[3] * 8 + 6); + SetVROM_1K_Bank(7, reg[1] * 64 + reg[3] * 8 + 7); + } - //void Mapper046::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - p[0] = (byte)reg[0]; - p[1] = (byte)reg[1]; - p[2] = (byte)reg[2]; - p[3] = (byte)reg[3]; - } + //void Mapper046::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + p[0] = (byte)reg[0]; + p[1] = (byte)reg[1]; + p[2] = (byte)reg[2]; + p[3] = (byte)reg[3]; + } - //void Mapper046::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - reg[0] = p[0]; - reg[1] = p[1]; - reg[2] = p[2]; - reg[3] = p[3]; - } + //void Mapper046::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + reg[0] = p[0]; + reg[1] = p[1]; + reg[2] = p[2]; + reg[3] = p[3]; + } - public override bool IsStateSave() - { - return true; - } - } + public override bool IsStateSave() + { + return true; + } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper047.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper047.cs index ac03477e..365fe143 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper047.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper047.cs @@ -1,275 +1,274 @@ ////////////////////////////////////////////////////////////////////////// // Mapper047 NES-QJ // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { - public class Mapper047 : Mapper - { - BYTE[] reg = new byte[8]; - BYTE patch; - BYTE bank; - BYTE prg0, prg1; - BYTE chr01, chr23, chr4, chr5, chr6, chr7; - BYTE irq_enable; - BYTE irq_counter; - BYTE irq_latch; - public Mapper047(NES parent) : base(parent) - { - } + public class Mapper047 : Mapper + { + BYTE[] reg = new byte[8]; + BYTE patch; + BYTE bank; + BYTE prg0, prg1; + BYTE chr01, chr23, chr4, chr5, chr6, chr7; + BYTE irq_enable; + BYTE irq_counter; + BYTE irq_latch; + public Mapper047(NES parent) : base(parent) + { + } - public override void Reset() - { - patch = 0; + public override void Reset() + { + patch = 0; - if (nes.rom.GetPROM_CRC() == 0x7eef434c) - { - patch = 1; - } + if (nes.rom.GetPROM_CRC() == 0x7eef434c) + { + patch = 1; + } - for (INT i = 0; i < 8; i++) - { - reg[i] = 0; - } + for (INT i = 0; i < 8; i++) + { + reg[i] = 0; + } - bank = 0; - prg0 = 0; - prg1 = 1; + bank = 0; + prg0 = 0; + prg1 = 1; - // set VROM banks - if (VROM_1K_SIZE != 0) - { - chr01 = 0; - chr23 = 2; - chr4 = 4; - chr5 = 5; - chr6 = 6; - chr7 = 7; - } - else - { - chr01 = chr23 = chr4 = chr5 = chr6 = chr7 = 0; - } + // set VROM banks + if (VROM_1K_SIZE != 0) + { + chr01 = 0; + chr23 = 2; + chr4 = 4; + chr5 = 5; + chr6 = 6; + chr7 = 7; + } + else + { + chr01 = chr23 = chr4 = chr5 = chr6 = chr7 = 0; + } - SetBank_CPU(); - SetBank_PPU(); + SetBank_CPU(); + SetBank_PPU(); - irq_enable = 0; - irq_counter = 0; - irq_latch = 0; - } + irq_enable = 0; + irq_counter = 0; + irq_latch = 0; + } - //void Mapper047::WriteLow(WORD addr, BYTE data) - public override void WriteLow(ushort addr, byte data) - { - if (addr == 0x6000) - { - if (patch != 0) - { - bank = (byte)((data & 0x06) >> 1); - } - else - { - bank = (byte)((data & 0x01) << 1); - } - SetBank_CPU(); - SetBank_PPU(); - } - } + //void Mapper047::WriteLow(WORD addr, BYTE data) + public override void WriteLow(ushort addr, byte data) + { + if (addr == 0x6000) + { + if (patch != 0) + { + bank = (byte)((data & 0x06) >> 1); + } + else + { + bank = (byte)((data & 0x01) << 1); + } + SetBank_CPU(); + SetBank_PPU(); + } + } - //void Mapper047::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - switch (addr & 0xE001) - { - case 0x8000: - reg[0] = data; - SetBank_CPU(); - SetBank_PPU(); - break; - case 0x8001: - reg[1] = data; - switch (reg[0] & 0x07) - { - case 0x00: - chr01 = (byte)(data & 0xFE); - SetBank_PPU(); - break; - case 0x01: - chr23 = (byte)(data & 0xFE); - SetBank_PPU(); - break; - case 0x02: - chr4 = data; - SetBank_PPU(); - break; - case 0x03: - chr5 = data; - SetBank_PPU(); - break; - case 0x04: - chr6 = data; - SetBank_PPU(); - break; - case 0x05: - chr7 = data; - SetBank_PPU(); - break; - case 0x06: - prg0 = data; - SetBank_CPU(); - break; - case 0x07: - prg1 = data; - SetBank_CPU(); - break; - } - break; - case 0xA000: - reg[2] = data; - if ((data & 0x01) != 0) SetVRAM_Mirror(VRAM_HMIRROR); - else SetVRAM_Mirror(VRAM_VMIRROR); - break; - case 0xA001: - reg[3] = data; - break; - case 0xC000: - reg[4] = data; - irq_counter = data; - break; - case 0xC001: - reg[5] = data; - irq_latch = data; - break; - case 0xE000: - reg[6] = data; - irq_enable = 0; - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; - case 0xE001: - reg[7] = data; - irq_enable = 1; - break; - } - } + //void Mapper047::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + switch (addr & 0xE001) + { + case 0x8000: + reg[0] = data; + SetBank_CPU(); + SetBank_PPU(); + break; + case 0x8001: + reg[1] = data; + switch (reg[0] & 0x07) + { + case 0x00: + chr01 = (byte)(data & 0xFE); + SetBank_PPU(); + break; + case 0x01: + chr23 = (byte)(data & 0xFE); + SetBank_PPU(); + break; + case 0x02: + chr4 = data; + SetBank_PPU(); + break; + case 0x03: + chr5 = data; + SetBank_PPU(); + break; + case 0x04: + chr6 = data; + SetBank_PPU(); + break; + case 0x05: + chr7 = data; + SetBank_PPU(); + break; + case 0x06: + prg0 = data; + SetBank_CPU(); + break; + case 0x07: + prg1 = data; + SetBank_CPU(); + break; + } + break; + case 0xA000: + reg[2] = data; + if ((data & 0x01) != 0) SetVRAM_Mirror(VRAM_HMIRROR); + else SetVRAM_Mirror(VRAM_VMIRROR); + break; + case 0xA001: + reg[3] = data; + break; + case 0xC000: + reg[4] = data; + irq_counter = data; + break; + case 0xC001: + reg[5] = data; + irq_latch = data; + break; + case 0xE000: + reg[6] = data; + irq_enable = 0; + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; + case 0xE001: + reg[7] = data; + irq_enable = 1; + break; + } + } - //void Mapper047::HSync(INT scanline) - public override void HSync(int scanline) - { - if ((scanline >= 0 && scanline <= 239)) - { - if (nes.ppu.IsDispON()) - { - if (irq_enable != 0) - { - if ((--irq_counter) == 0) - { - irq_counter = irq_latch; - // nes.cpu.IRQ(); - nes.cpu.SetIRQ(IRQ_MAPPER); - } - } - } - } - } + //void Mapper047::HSync(INT scanline) + public override void HSync(int scanline) + { + if ((scanline >= 0 && scanline <= 239)) + { + if (nes.ppu.IsDispON()) + { + if (irq_enable != 0) + { + if ((--irq_counter) == 0) + { + irq_counter = irq_latch; + // nes.cpu.IRQ(); + nes.cpu.SetIRQ(IRQ_MAPPER); + } + } + } + } + } - void SetBank_CPU() - { - if ((reg[0] & 0x40) != 0) - { - SetPROM_8K_Bank(4, bank * 8 + ((patch != 0 && bank != 2) ? 6 : 14)); - SetPROM_8K_Bank(5, bank * 8 + prg1); - SetPROM_8K_Bank(6, bank * 8 + prg0); - SetPROM_8K_Bank(7, bank * 8 + ((patch != 0 && bank != 2) ? 7 : 15)); - } - else - { - SetPROM_8K_Bank(4, bank * 8 + prg0); - SetPROM_8K_Bank(5, bank * 8 + prg1); - SetPROM_8K_Bank(6, bank * 8 + ((patch != 0 && bank != 2) ? 6 : 14)); - SetPROM_8K_Bank(7, bank * 8 + ((patch != 0 && bank != 2) ? 7 : 15)); - } - } + void SetBank_CPU() + { + if ((reg[0] & 0x40) != 0) + { + SetPROM_8K_Bank(4, bank * 8 + ((patch != 0 && bank != 2) ? 6 : 14)); + SetPROM_8K_Bank(5, bank * 8 + prg1); + SetPROM_8K_Bank(6, bank * 8 + prg0); + SetPROM_8K_Bank(7, bank * 8 + ((patch != 0 && bank != 2) ? 7 : 15)); + } + else + { + SetPROM_8K_Bank(4, bank * 8 + prg0); + SetPROM_8K_Bank(5, bank * 8 + prg1); + SetPROM_8K_Bank(6, bank * 8 + ((patch != 0 && bank != 2) ? 6 : 14)); + SetPROM_8K_Bank(7, bank * 8 + ((patch != 0 && bank != 2) ? 7 : 15)); + } + } - void SetBank_PPU() - { - if (VROM_1K_SIZE != 0) - { - if ((reg[0] & 0x80) != 0) - { - SetVROM_1K_Bank(0, (bank & 0x02) * 64 + chr4); - SetVROM_1K_Bank(1, (bank & 0x02) * 64 + chr5); - SetVROM_1K_Bank(2, (bank & 0x02) * 64 + chr6); - SetVROM_1K_Bank(3, (bank & 0x02) * 64 + chr7); - SetVROM_1K_Bank(4, (bank & 0x02) * 64 + chr01 + 0); - SetVROM_1K_Bank(5, (bank & 0x02) * 64 + chr01 + 1); - SetVROM_1K_Bank(6, (bank & 0x02) * 64 + chr23 + 0); - SetVROM_1K_Bank(7, (bank & 0x02) * 64 + chr23 + 1); - } - else - { - SetVROM_1K_Bank(0, (bank & 0x02) * 64 + chr01 + 0); - SetVROM_1K_Bank(1, (bank & 0x02) * 64 + chr01 + 1); - SetVROM_1K_Bank(2, (bank & 0x02) * 64 + chr23 + 0); - SetVROM_1K_Bank(3, (bank & 0x02) * 64 + chr23 + 1); - SetVROM_1K_Bank(4, (bank & 0x02) * 64 + chr4); - SetVROM_1K_Bank(5, (bank & 0x02) * 64 + chr5); - SetVROM_1K_Bank(6, (bank & 0x02) * 64 + chr6); - SetVROM_1K_Bank(7, (bank & 0x02) * 64 + chr7); - } - } - } + void SetBank_PPU() + { + if (VROM_1K_SIZE != 0) + { + if ((reg[0] & 0x80) != 0) + { + SetVROM_1K_Bank(0, (bank & 0x02) * 64 + chr4); + SetVROM_1K_Bank(1, (bank & 0x02) * 64 + chr5); + SetVROM_1K_Bank(2, (bank & 0x02) * 64 + chr6); + SetVROM_1K_Bank(3, (bank & 0x02) * 64 + chr7); + SetVROM_1K_Bank(4, (bank & 0x02) * 64 + chr01 + 0); + SetVROM_1K_Bank(5, (bank & 0x02) * 64 + chr01 + 1); + SetVROM_1K_Bank(6, (bank & 0x02) * 64 + chr23 + 0); + SetVROM_1K_Bank(7, (bank & 0x02) * 64 + chr23 + 1); + } + else + { + SetVROM_1K_Bank(0, (bank & 0x02) * 64 + chr01 + 0); + SetVROM_1K_Bank(1, (bank & 0x02) * 64 + chr01 + 1); + SetVROM_1K_Bank(2, (bank & 0x02) * 64 + chr23 + 0); + SetVROM_1K_Bank(3, (bank & 0x02) * 64 + chr23 + 1); + SetVROM_1K_Bank(4, (bank & 0x02) * 64 + chr4); + SetVROM_1K_Bank(5, (bank & 0x02) * 64 + chr5); + SetVROM_1K_Bank(6, (bank & 0x02) * 64 + chr6); + SetVROM_1K_Bank(7, (bank & 0x02) * 64 + chr7); + } + } + } - //void Mapper047::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - for (INT i = 0; i < 8; i++) - { - p[i] = reg[i]; - } - p[8] = prg0; - p[9] = prg1; - p[10] = chr01; - p[11] = chr23; - p[12] = chr4; - p[13] = chr5; - p[14] = chr6; - p[15] = chr7; - p[16] = irq_enable; - p[17] = irq_counter; - p[18] = irq_latch; - p[19] = bank; - } + //void Mapper047::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + for (INT i = 0; i < 8; i++) + { + p[i] = reg[i]; + } + p[8] = prg0; + p[9] = prg1; + p[10] = chr01; + p[11] = chr23; + p[12] = chr4; + p[13] = chr5; + p[14] = chr6; + p[15] = chr7; + p[16] = irq_enable; + p[17] = irq_counter; + p[18] = irq_latch; + p[19] = bank; + } - //void Mapper047::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - for (INT i = 0; i < 8; i++) - { - reg[i] = p[i]; - } - prg0 = p[8]; - prg1 = p[9]; - chr01 = p[10]; - chr23 = p[11]; - chr4 = p[12]; - chr5 = p[13]; - chr6 = p[14]; - chr7 = p[15]; - irq_enable = p[16]; - irq_counter = p[17]; - irq_latch = p[18]; - bank = p[19]; - } + //void Mapper047::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + for (INT i = 0; i < 8; i++) + { + reg[i] = p[i]; + } + prg0 = p[8]; + prg1 = p[9]; + chr01 = p[10]; + chr23 = p[11]; + chr4 = p[12]; + chr5 = p[13]; + chr6 = p[14]; + chr7 = p[15]; + irq_enable = p[16]; + irq_counter = p[17]; + irq_latch = p[18]; + bank = p[19]; + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper048.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper048.cs index 2ac028e7..03426083 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper048.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper048.cs @@ -1,143 +1,141 @@ ////////////////////////////////////////////////////////////////////////// // Mapper048 Taito TC190V // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper048 : Mapper - { - BYTE reg; - BYTE irq_enable; - BYTE irq_counter; - public Mapper048(NES parent) : base(parent) - { - } + public class Mapper048 : Mapper + { + BYTE reg; + BYTE irq_enable; + BYTE irq_counter; + public Mapper048(NES parent) : base(parent) + { + } - public override void Reset() - { - reg = 0; - irq_enable = 0; - irq_counter = 0; + public override void Reset() + { + reg = 0; + irq_enable = 0; + irq_counter = 0; - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - SetVROM_8K_Bank(0); + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + SetVROM_8K_Bank(0); - uint crc = nes.rom.GetPROM_CRC(); - // if( crc == 0x547e6cc1 ) { // Flintstones - The Rescue of Dino & Hoppy(J) - // nes.SetRenderMethod( NES::POST_RENDER ); - // } - } + uint crc = nes.rom.GetPROM_CRC(); + // if( crc == 0x547e6cc1 ) { // Flintstones - The Rescue of Dino & Hoppy(J) + // nes.SetRenderMethod( NES::POST_RENDER ); + // } + } - //void Mapper048::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - switch (addr) - { - case 0x8000: - if (reg == 0) - { - if ((data & 0x40) != 0) SetVRAM_Mirror(VRAM_HMIRROR); - else SetVRAM_Mirror(VRAM_VMIRROR); - } - SetPROM_8K_Bank(4, data); - break; - case 0x8001: - SetPROM_8K_Bank(5, data); - break; + //void Mapper048::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + switch (addr) + { + case 0x8000: + if (reg == 0) + { + if ((data & 0x40) != 0) SetVRAM_Mirror(VRAM_HMIRROR); + else SetVRAM_Mirror(VRAM_VMIRROR); + } + SetPROM_8K_Bank(4, data); + break; + case 0x8001: + SetPROM_8K_Bank(5, data); + break; - case 0x8002: - SetVROM_2K_Bank(0, data); - break; - case 0x8003: - SetVROM_2K_Bank(2, data); - break; - case 0xA000: - SetVROM_1K_Bank(4, data); - break; - case 0xA001: - SetVROM_1K_Bank(5, data); - break; - case 0xA002: - SetVROM_1K_Bank(6, data); - break; - case 0xA003: - SetVROM_1K_Bank(7, data); - break; + case 0x8002: + SetVROM_2K_Bank(0, data); + break; + case 0x8003: + SetVROM_2K_Bank(2, data); + break; + case 0xA000: + SetVROM_1K_Bank(4, data); + break; + case 0xA001: + SetVROM_1K_Bank(5, data); + break; + case 0xA002: + SetVROM_1K_Bank(6, data); + break; + case 0xA003: + SetVROM_1K_Bank(7, data); + break; - case 0xC000: - irq_counter = data; - irq_enable = 0; - // nes.cpu.ClrIRQ( IRQ_MAPPER ); - break; + case 0xC000: + irq_counter = data; + irq_enable = 0; + // nes.cpu.ClrIRQ( IRQ_MAPPER ); + break; - case 0xC001: - irq_counter = data; - irq_enable = 1; - // irq_enable = data & 0x01; - // nes.cpu.ClrIRQ( IRQ_MAPPER ); - break; + case 0xC001: + irq_counter = data; + irq_enable = 1; + // irq_enable = data & 0x01; + // nes.cpu.ClrIRQ( IRQ_MAPPER ); + break; - case 0xC002: - break; - case 0xC003: - break; + case 0xC002: + break; + case 0xC003: + break; - case 0xE000: - if ((data & 0x40) != 0) SetVRAM_Mirror(VRAM_HMIRROR); - else SetVRAM_Mirror(VRAM_VMIRROR); - reg = 1; - break; - } - } + case 0xE000: + if ((data & 0x40) != 0) SetVRAM_Mirror(VRAM_HMIRROR); + else SetVRAM_Mirror(VRAM_VMIRROR); + reg = 1; + break; + } + } - //void Mapper048::HSync(INT scanline) - public override void HSync(int scanline) - { - if ((scanline >= 0 && scanline <= 239)) - { - if (nes.ppu.IsDispON()) - { - if (irq_enable != 0) - { - if (irq_counter == 0xFF) - { - // nes.cpu.IRQ_NotPending(); - // nes.cpu.SetIRQ( IRQ_MAPPER ); - nes.cpu.SetIRQ(IRQ_TRIGGER2); - } - irq_counter++; - } - } - } - } + //void Mapper048::HSync(INT scanline) + public override void HSync(int scanline) + { + if ((scanline >= 0 && scanline <= 239)) + { + if (nes.ppu.IsDispON()) + { + if (irq_enable != 0) + { + if (irq_counter == 0xFF) + { + // nes.cpu.IRQ_NotPending(); + // nes.cpu.SetIRQ( IRQ_MAPPER ); + nes.cpu.SetIRQ(IRQ_TRIGGER2); + } + irq_counter++; + } + } + } + } - //void Mapper048::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - p[0] = reg; - p[1] = irq_enable; - p[2] = irq_counter; - } + //void Mapper048::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + p[0] = reg; + p[1] = irq_enable; + p[2] = irq_counter; + } - //void Mapper048::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - reg = p[0]; - irq_enable = p[1]; - irq_counter = p[2]; - } + //void Mapper048::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + reg = p[0]; + irq_enable = p[1]; + irq_counter = p[2]; + } - public override bool IsStateSave() - { - return true; - } + public override bool IsStateSave() + { + return true; + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper050.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper050.cs index 1445939e..f62c2e35 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper050.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper050.cs @@ -1,100 +1,98 @@ ////////////////////////////////////////////////////////////////////////// // Mapper050 SMB2J // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper050 : Mapper - { - BYTE irq_enable; - public Mapper050(NES parent) : base(parent) - { - } + public class Mapper050 : Mapper + { + BYTE irq_enable; + public Mapper050(NES parent) : base(parent) + { + } - public override void Reset() - { - irq_enable = 0; - SetPROM_8K_Bank(3, 15); - SetPROM_8K_Bank(4, 8); - SetPROM_8K_Bank(5, 9); - SetPROM_8K_Bank(6, 0); - SetPROM_8K_Bank(7, 11); - if (VROM_1K_SIZE != 0) - { - SetVROM_8K_Bank(0); - } - } + public override void Reset() + { + irq_enable = 0; + SetPROM_8K_Bank(3, 15); + SetPROM_8K_Bank(4, 8); + SetPROM_8K_Bank(5, 9); + SetPROM_8K_Bank(6, 0); + SetPROM_8K_Bank(7, 11); + if (VROM_1K_SIZE != 0) + { + SetVROM_8K_Bank(0); + } + } - //void Mapper050::ExWrite(WORD addr, BYTE data) - public override void ExWrite(ushort addr, byte data) - { - if ((addr & 0xE060) == 0x4020) - { - if ((addr & 0x0100) != 0) - { - irq_enable = (byte)(data & 0x01); - nes.cpu.ClrIRQ(IRQ_MAPPER); - } - else - { - SetPROM_8K_Bank(6, (data & 0x08) | ((data & 0x01) << 2) | ((data & 0x06) >> 1)); - } - } - } + //void Mapper050::ExWrite(WORD addr, BYTE data) + public override void ExWrite(ushort addr, byte data) + { + if ((addr & 0xE060) == 0x4020) + { + if ((addr & 0x0100) != 0) + { + irq_enable = (byte)(data & 0x01); + nes.cpu.ClrIRQ(IRQ_MAPPER); + } + else + { + SetPROM_8K_Bank(6, (data & 0x08) | ((data & 0x01) << 2) | ((data & 0x06) >> 1)); + } + } + } - //void Mapper050::WriteLow(WORD addr, BYTE data) - public override void WriteLow(ushort addr, byte data) - { - if ((addr & 0xE060) == 0x4020) - { - if ((addr & 0x0100) != 0) - { - irq_enable = (byte)(data & 0x01); - nes.cpu.ClrIRQ(IRQ_MAPPER); - } - else - { - SetPROM_8K_Bank(6, (data & 0x08) | ((data & 0x01) << 2) | ((data & 0x06) >> 1)); - } - } - } + //void Mapper050::WriteLow(WORD addr, BYTE data) + public override void WriteLow(ushort addr, byte data) + { + if ((addr & 0xE060) == 0x4020) + { + if ((addr & 0x0100) != 0) + { + irq_enable = (byte)(data & 0x01); + nes.cpu.ClrIRQ(IRQ_MAPPER); + } + else + { + SetPROM_8K_Bank(6, (data & 0x08) | ((data & 0x01) << 2) | ((data & 0x06) >> 1)); + } + } + } - //void Mapper050::HSync(INT scanline) - public override void HSync(int scanline) - { - if (irq_enable != 0) - { - if (scanline == 21) - { - // nes.cpu.IRQ(); - nes.cpu.SetIRQ(IRQ_MAPPER); - } - } - } + //void Mapper050::HSync(INT scanline) + public override void HSync(int scanline) + { + if (irq_enable != 0) + { + if (scanline == 21) + { + // nes.cpu.IRQ(); + nes.cpu.SetIRQ(IRQ_MAPPER); + } + } + } - //void Mapper050::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - p[0] = irq_enable; - } + //void Mapper050::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + p[0] = irq_enable; + } - //void Mapper050::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - irq_enable = p[0]; - } + //void Mapper050::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + irq_enable = p[0]; + } - public override bool IsStateSave() - { - return true; - } + public override bool IsStateSave() + { + return true; + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper051.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper051.cs index 5bda884d..76c13ae0 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper051.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper051.cs @@ -2,108 +2,104 @@ // Mapper051 11-in-1 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper051 : Mapper - { - int mode, bank; - public Mapper051(NES parent) : base(parent) - { - } + public class Mapper051 : Mapper + { + int mode, bank; + public Mapper051(NES parent) : base(parent) + { + } - public override void Reset() - { - bank = 0; - mode = 1; + public override void Reset() + { + bank = 0; + mode = 1; - SetBank_CPU(); - SetCRAM_8K_Bank(0); - } + SetBank_CPU(); + SetCRAM_8K_Bank(0); + } - //void Mapper051::WriteLow(WORD addr, BYTE data) - public override void WriteLow(ushort addr, byte data) - { - if (addr >= 0x6000) - { - mode = ((data & 0x10) >> 3) | ((data & 0x02) >> 1); - SetBank_CPU(); - } - } + //void Mapper051::WriteLow(WORD addr, BYTE data) + public override void WriteLow(ushort addr, byte data) + { + if (addr >= 0x6000) + { + mode = ((data & 0x10) >> 3) | ((data & 0x02) >> 1); + SetBank_CPU(); + } + } - //void Mapper051::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - bank = (data & 0x0f) << 2; - if (0xC000 <= addr && addr <= 0xDFFF) - { - mode = (mode & 0x01) | ((data & 0x10) >> 3); - } - SetBank_CPU(); - } + //void Mapper051::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + bank = (data & 0x0f) << 2; + if (0xC000 <= addr && addr <= 0xDFFF) + { + mode = (mode & 0x01) | ((data & 0x10) >> 3); + } + SetBank_CPU(); + } - void SetBank_CPU() - { - switch (mode) - { - case 0: - SetVRAM_Mirror(VRAM_VMIRROR); - SetPROM_8K_Bank(3, (bank | 0x2c | 3)); - SetPROM_8K_Bank(4, (bank | 0x00 | 0)); - SetPROM_8K_Bank(5, (bank | 0x00 | 1)); - SetPROM_8K_Bank(6, (bank | 0x0c | 2)); - SetPROM_8K_Bank(7, (bank | 0x0c | 3)); - break; - case 1: - SetVRAM_Mirror(VRAM_VMIRROR); - SetPROM_8K_Bank(3, (bank | 0x20 | 3)); - SetPROM_8K_Bank(4, (bank | 0x00 | 0)); - SetPROM_8K_Bank(5, (bank | 0x00 | 1)); - SetPROM_8K_Bank(6, (bank | 0x00 | 2)); - SetPROM_8K_Bank(7, (bank | 0x00 | 3)); - break; - case 2: - SetVRAM_Mirror(VRAM_VMIRROR); - SetPROM_8K_Bank(3, (bank | 0x2e | 3)); - SetPROM_8K_Bank(4, (bank | 0x02 | 0)); - SetPROM_8K_Bank(5, (bank | 0x02 | 1)); - SetPROM_8K_Bank(6, (bank | 0x0e | 2)); - SetPROM_8K_Bank(7, (bank | 0x0e | 3)); - break; - case 3: - SetVRAM_Mirror(VRAM_HMIRROR); - SetPROM_8K_Bank(3, (bank | 0x20 | 3)); - SetPROM_8K_Bank(4, (bank | 0x00 | 0)); - SetPROM_8K_Bank(5, (bank | 0x00 | 1)); - SetPROM_8K_Bank(6, (bank | 0x00 | 2)); - SetPROM_8K_Bank(7, (bank | 0x00 | 3)); - break; - } - } + void SetBank_CPU() + { + switch (mode) + { + case 0: + SetVRAM_Mirror(VRAM_VMIRROR); + SetPROM_8K_Bank(3, (bank | 0x2c | 3)); + SetPROM_8K_Bank(4, (bank | 0x00 | 0)); + SetPROM_8K_Bank(5, (bank | 0x00 | 1)); + SetPROM_8K_Bank(6, (bank | 0x0c | 2)); + SetPROM_8K_Bank(7, (bank | 0x0c | 3)); + break; + case 1: + SetVRAM_Mirror(VRAM_VMIRROR); + SetPROM_8K_Bank(3, (bank | 0x20 | 3)); + SetPROM_8K_Bank(4, (bank | 0x00 | 0)); + SetPROM_8K_Bank(5, (bank | 0x00 | 1)); + SetPROM_8K_Bank(6, (bank | 0x00 | 2)); + SetPROM_8K_Bank(7, (bank | 0x00 | 3)); + break; + case 2: + SetVRAM_Mirror(VRAM_VMIRROR); + SetPROM_8K_Bank(3, (bank | 0x2e | 3)); + SetPROM_8K_Bank(4, (bank | 0x02 | 0)); + SetPROM_8K_Bank(5, (bank | 0x02 | 1)); + SetPROM_8K_Bank(6, (bank | 0x0e | 2)); + SetPROM_8K_Bank(7, (bank | 0x0e | 3)); + break; + case 3: + SetVRAM_Mirror(VRAM_HMIRROR); + SetPROM_8K_Bank(3, (bank | 0x20 | 3)); + SetPROM_8K_Bank(4, (bank | 0x00 | 0)); + SetPROM_8K_Bank(5, (bank | 0x00 | 1)); + SetPROM_8K_Bank(6, (bank | 0x00 | 2)); + SetPROM_8K_Bank(7, (bank | 0x00 | 3)); + break; + } + } - //void Mapper051::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - p[0] = (byte)mode; - p[1] = (byte)bank; - } + //void Mapper051::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + p[0] = (byte)mode; + p[1] = (byte)bank; + } - //void Mapper051::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - mode = p[0]; - bank = p[1]; - } + //void Mapper051::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + mode = p[0]; + bank = p[1]; + } - public override bool IsStateSave() - { - return true; - } - } + public override bool IsStateSave() + { + return true; + } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper057.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper057.cs index a142d088..57ca106b 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper057.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper057.cs @@ -2,86 +2,83 @@ // Mapper057 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper057 : Mapper - { + public class Mapper057 : Mapper + { - BYTE reg; - public Mapper057(NES parent) : base(parent) - { - } + BYTE reg; + public Mapper057(NES parent) : base(parent) + { + } - public override void Reset() - { - SetPROM_32K_Bank(0, 1, 0, 1); - SetVROM_8K_Bank(0); - reg = 0; - } + public override void Reset() + { + SetPROM_32K_Bank(0, 1, 0, 1); + SetVROM_8K_Bank(0); + reg = 0; + } - //void Mapper057::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - switch (addr) - { - case 0x8000: - case 0x8001: - case 0x8002: - case 0x8003: - if ((data & 0x40) != 0) - { - SetVROM_8K_Bank((data & 0x03) + ((reg & 0x10) >> 1) + (reg & 0x07)); - } - break; - case 0x8800: - reg = data; + //void Mapper057::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + switch (addr) + { + case 0x8000: + case 0x8001: + case 0x8002: + case 0x8003: + if ((data & 0x40) != 0) + { + SetVROM_8K_Bank((data & 0x03) + ((reg & 0x10) >> 1) + (reg & 0x07)); + } + break; + case 0x8800: + reg = data; - if ((data & 0x80) != 0) - { - SetPROM_8K_Bank(4, ((data & 0x40) >> 6) * 4 + 8 + 0); - SetPROM_8K_Bank(5, ((data & 0x40) >> 6) * 4 + 8 + 1); - SetPROM_8K_Bank(6, ((data & 0x40) >> 6) * 4 + 8 + 2); - SetPROM_8K_Bank(7, ((data & 0x40) >> 6) * 4 + 8 + 3); - } - else - { - SetPROM_8K_Bank(4, ((data & 0x60) >> 5) * 2 + 0); - SetPROM_8K_Bank(5, ((data & 0x60) >> 5) * 2 + 1); - SetPROM_8K_Bank(6, ((data & 0x60) >> 5) * 2 + 0); - SetPROM_8K_Bank(7, ((data & 0x60) >> 5) * 2 + 1); - } + if ((data & 0x80) != 0) + { + SetPROM_8K_Bank(4, ((data & 0x40) >> 6) * 4 + 8 + 0); + SetPROM_8K_Bank(5, ((data & 0x40) >> 6) * 4 + 8 + 1); + SetPROM_8K_Bank(6, ((data & 0x40) >> 6) * 4 + 8 + 2); + SetPROM_8K_Bank(7, ((data & 0x40) >> 6) * 4 + 8 + 3); + } + else + { + SetPROM_8K_Bank(4, ((data & 0x60) >> 5) * 2 + 0); + SetPROM_8K_Bank(5, ((data & 0x60) >> 5) * 2 + 1); + SetPROM_8K_Bank(6, ((data & 0x60) >> 5) * 2 + 0); + SetPROM_8K_Bank(7, ((data & 0x60) >> 5) * 2 + 1); + } - SetVROM_8K_Bank((data & 0x07) + ((data & 0x10) >> 1)); + SetVROM_8K_Bank((data & 0x07) + ((data & 0x10) >> 1)); - if ((data & 0x08) != 0) SetVRAM_Mirror(VRAM_HMIRROR); - else SetVRAM_Mirror(VRAM_VMIRROR); + if ((data & 0x08) != 0) SetVRAM_Mirror(VRAM_HMIRROR); + else SetVRAM_Mirror(VRAM_VMIRROR); - break; - } - } + break; + } + } - //void Mapper057::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - p[0] = reg; - } + //void Mapper057::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + p[0] = reg; + } - //void Mapper057::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - reg = p[0]; - } + //void Mapper057::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + reg = p[0]; + } - public override bool IsStateSave() - { - return true; - } - } + public override bool IsStateSave() + { + return true; + } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper058.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper058.cs index bb7275c5..1aaf7c74 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper058.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper058.cs @@ -2,52 +2,48 @@ // Mapper058 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper058 : Mapper - { - public Mapper058(NES parent) : base(parent) - { - } + public class Mapper058 : Mapper + { + public Mapper058(NES parent) : base(parent) + { + } - public override void Reset() - { - SetPROM_32K_Bank(0, 1, 0, 1); - if (VROM_1K_SIZE != 0) - { - SetVROM_8K_Bank(0); - } - } + public override void Reset() + { + SetPROM_32K_Bank(0, 1, 0, 1); + if (VROM_1K_SIZE != 0) + { + SetVROM_8K_Bank(0); + } + } - //void Mapper058::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - if ((addr & 0x40) != 0) - { - SetPROM_16K_Bank(4, addr & 0x07); - SetPROM_16K_Bank(6, addr & 0x07); - } - else - { - SetPROM_32K_Bank((addr & 0x06) >> 1); - } + //void Mapper058::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + if ((addr & 0x40) != 0) + { + SetPROM_16K_Bank(4, addr & 0x07); + SetPROM_16K_Bank(6, addr & 0x07); + } + else + { + SetPROM_32K_Bank((addr & 0x06) >> 1); + } - if (VROM_1K_SIZE != 0) - { - SetVROM_8K_Bank((addr & 0x38) >> 3); - } + if (VROM_1K_SIZE != 0) + { + SetVROM_8K_Bank((addr & 0x38) >> 3); + } - if ((data & 0x02) != 0) SetVRAM_Mirror(VRAM_VMIRROR); - else SetVRAM_Mirror(VRAM_HMIRROR); - } + if ((data & 0x02) != 0) SetVRAM_Mirror(VRAM_VMIRROR); + else SetVRAM_Mirror(VRAM_HMIRROR); + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper060.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper060.cs index 2781466b..4928ee2b 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper060.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper060.cs @@ -2,65 +2,62 @@ // Mapper060 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper060 : Mapper - { - BYTE patch; - BYTE game_sel; - public Mapper060(NES parent) : base(parent) - { - } + public class Mapper060 : Mapper + { + BYTE patch; + BYTE game_sel; + public Mapper060(NES parent) : base(parent) + { + } - public override void Reset() - { - patch = 0; + public override void Reset() + { + patch = 0; - uint crc = nes.rom.GetPROM_CRC(); - if (crc == 0xf9c484a0) - { // Reset Based 4-in-1(Unl) - SetPROM_16K_Bank(4, game_sel); - SetPROM_16K_Bank(6, game_sel); - SetVROM_8K_Bank(game_sel); - game_sel++; - game_sel &= 3; - } - else - { - patch = 1; - SetPROM_32K_Bank(0); - SetVROM_8K_Bank(0); - } - } + uint crc = nes.rom.GetPROM_CRC(); + if (crc == 0xf9c484a0) + { // Reset Based 4-in-1(Unl) + SetPROM_16K_Bank(4, game_sel); + SetPROM_16K_Bank(6, game_sel); + SetVROM_8K_Bank(game_sel); + game_sel++; + game_sel &= 3; + } + else + { + patch = 1; + SetPROM_32K_Bank(0); + SetVROM_8K_Bank(0); + } + } - //void Mapper060::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - if (patch != 0) - { - if ((addr & 0x80) != 0) - { - SetPROM_16K_Bank(4, (addr & 0x70) >> 4); - SetPROM_16K_Bank(6, (addr & 0x70) >> 4); - } - else - { - SetPROM_32K_Bank((addr & 0x70) >> 5); - } + //void Mapper060::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + if (patch != 0) + { + if ((addr & 0x80) != 0) + { + SetPROM_16K_Bank(4, (addr & 0x70) >> 4); + SetPROM_16K_Bank(6, (addr & 0x70) >> 4); + } + else + { + SetPROM_32K_Bank((addr & 0x70) >> 5); + } - SetVROM_8K_Bank(addr & 0x07); + SetVROM_8K_Bank(addr & 0x07); - if ((data & 0x08) != 0) SetVRAM_Mirror(VRAM_VMIRROR); - else SetVRAM_Mirror(VRAM_HMIRROR); - } - } + if ((data & 0x08) != 0) SetVRAM_Mirror(VRAM_VMIRROR); + else SetVRAM_Mirror(VRAM_HMIRROR); + } + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper061.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper061.cs index e960050a..057e9ee2 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper061.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper061.cs @@ -2,46 +2,42 @@ // Mapper061 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper061 : Mapper - { - public Mapper061(NES parent) : base(parent) - { - } + public class Mapper061 : Mapper + { + public Mapper061(NES parent) : base(parent) + { + } - public override void Reset() - { - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - } + public override void Reset() + { + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + } - //void Mapper061::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - switch (addr & 0x30) - { - case 0x00: - case 0x30: - SetPROM_32K_Bank(addr & 0x0F); - break; - case 0x10: - case 0x20: - SetPROM_16K_Bank(4, ((addr & 0x0F) << 1) | ((addr & 0x20) >> 4)); - SetPROM_16K_Bank(6, ((addr & 0x0F) << 1) | ((addr & 0x20) >> 4)); - break; - } + //void Mapper061::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + switch (addr & 0x30) + { + case 0x00: + case 0x30: + SetPROM_32K_Bank(addr & 0x0F); + break; + case 0x10: + case 0x20: + SetPROM_16K_Bank(4, ((addr & 0x0F) << 1) | ((addr & 0x20) >> 4)); + SetPROM_16K_Bank(6, ((addr & 0x0F) << 1) | ((addr & 0x20) >> 4)); + break; + } - if ((addr & 0x80) != 0) SetVRAM_Mirror(VRAM_HMIRROR); - else SetVRAM_Mirror(VRAM_VMIRROR); - } + if ((addr & 0x80) != 0) SetVRAM_Mirror(VRAM_HMIRROR); + else SetVRAM_Mirror(VRAM_VMIRROR); + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper062.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper062.cs index 500e9e17..0ad6a940 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper062.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper062.cs @@ -2,52 +2,48 @@ // Mapper062 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper062 : Mapper - { - public Mapper062(NES parent) : base(parent) - { - } + public class Mapper062 : Mapper + { + public Mapper062(NES parent) : base(parent) + { + } - public override void Reset() - { - SetPROM_32K_Bank(0); - SetVROM_8K_Bank(0); - } + public override void Reset() + { + SetPROM_32K_Bank(0); + SetVROM_8K_Bank(0); + } - //void Mapper062::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - switch (addr & 0xFF00) - { - case 0x8100: - SetPROM_8K_Bank(4, data); - SetPROM_8K_Bank(5, data + 1); - break; - case 0x8500: - SetPROM_8K_Bank(4, data); - break; - case 0x8700: - SetPROM_8K_Bank(5, data); - break; - SetVROM_1K_Bank(0, data + 0); - SetVROM_1K_Bank(1, data + 1); - SetVROM_1K_Bank(2, data + 2); - SetVROM_1K_Bank(3, data + 3); - SetVROM_1K_Bank(4, data + 4); - SetVROM_1K_Bank(5, data + 5); - SetVROM_1K_Bank(6, data + 6); - SetVROM_1K_Bank(7, data + 7); - } - } + //void Mapper062::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + switch (addr & 0xFF00) + { + case 0x8100: + SetPROM_8K_Bank(4, data); + SetPROM_8K_Bank(5, data + 1); + break; + case 0x8500: + SetPROM_8K_Bank(4, data); + break; + case 0x8700: + SetPROM_8K_Bank(5, data); + break; + SetVROM_1K_Bank(0, data + 0); + SetVROM_1K_Bank(1, data + 1); + SetVROM_1K_Bank(2, data + 2); + SetVROM_1K_Bank(3, data + 3); + SetVROM_1K_Bank(4, data + 4); + SetVROM_1K_Bank(5, data + 5); + SetVROM_1K_Bank(6, data + 6); + SetVROM_1K_Bank(7, data + 7); + } + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper064.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper064.cs index d9849aa0..c8625b73 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper064.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper064.cs @@ -1,283 +1,282 @@ ////////////////////////////////////////////////////////////////////////// // Mapper064 Tengen Rambo-1 // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { - public class Mapper064 : Mapper - { - BYTE[] reg = new byte[3]; - BYTE irq_enable; - BYTE irq_mode; - INT irq_counter; - INT irq_counter2; - BYTE irq_latch; - BYTE irq_reset; - public Mapper064(NES parent) : base(parent) - { - } + public class Mapper064 : Mapper + { + BYTE[] reg = new byte[3]; + BYTE irq_enable; + BYTE irq_mode; + INT irq_counter; + INT irq_counter2; + BYTE irq_latch; + BYTE irq_reset; + public Mapper064(NES parent) : base(parent) + { + } - public override void Reset() - { - SetPROM_32K_Bank(PROM_8K_SIZE - 1, PROM_8K_SIZE - 1, PROM_8K_SIZE - 1, PROM_8K_SIZE - 1); + public override void Reset() + { + SetPROM_32K_Bank(PROM_8K_SIZE - 1, PROM_8K_SIZE - 1, PROM_8K_SIZE - 1, PROM_8K_SIZE - 1); - if (VROM_1K_SIZE != 0) - { - SetVROM_8K_Bank(0); - } + if (VROM_1K_SIZE != 0) + { + SetVROM_8K_Bank(0); + } - reg[0] = reg[1] = reg[2] = 0; + reg[0] = reg[1] = reg[2] = 0; - irq_enable = 0; - irq_mode = 0; - irq_counter = 0; - irq_counter2 = 0; - irq_latch = 0; - irq_reset = 0; - } + irq_enable = 0; + irq_mode = 0; + irq_counter = 0; + irq_counter2 = 0; + irq_latch = 0; + irq_reset = 0; + } - //void Mapper064::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - //DEBUGOUT( "$%04X:$%02X\n", addr, data ); - switch (addr & 0xF003) - { - case 0x8000: - reg[0] = (byte)(data & 0x0F); - reg[1] = (byte)(data & 0x40); - reg[2] = (byte)(data & 0x80); - break; + //void Mapper064::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + //DEBUGOUT( "$%04X:$%02X\n", addr, data ); + switch (addr & 0xF003) + { + case 0x8000: + reg[0] = (byte)(data & 0x0F); + reg[1] = (byte)(data & 0x40); + reg[2] = (byte)(data & 0x80); + break; - case 0x8001: - switch (reg[0]) - { - case 0x00: - if (reg[2] != 0) - { - SetVROM_1K_Bank(4, data + 0); - SetVROM_1K_Bank(5, data + 1); - } - else - { - SetVROM_1K_Bank(0, data + 0); - SetVROM_1K_Bank(1, data + 1); - } - break; - case 0x01: - if (reg[2] != 0) - { - SetVROM_1K_Bank(6, data + 0); - SetVROM_1K_Bank(7, data + 1); - } - else - { - SetVROM_1K_Bank(2, data + 0); - SetVROM_1K_Bank(3, data + 1); - } - break; - case 0x02: - if (reg[2] != 0) - { - SetVROM_1K_Bank(0, data); - } - else - { - SetVROM_1K_Bank(4, data); - } - break; - case 0x03: - if (reg[2] != 0) - { - SetVROM_1K_Bank(1, data); - } - else - { - SetVROM_1K_Bank(5, data); - } - break; - case 0x04: - if (reg[2] != 0) - { - SetVROM_1K_Bank(2, data); - } - else - { - SetVROM_1K_Bank(6, data); - } - break; - case 0x05: - if (reg[2] != 0) - { - SetVROM_1K_Bank(3, data); - } - else - { - SetVROM_1K_Bank(7, data); - } - break; - case 0x06: - if (reg[1] != 0) - { - SetPROM_8K_Bank(5, data); - } - else - { - SetPROM_8K_Bank(4, data); - } - break; - case 0x07: - if (reg[1] != 0) - { - SetPROM_8K_Bank(6, data); - } - else - { - SetPROM_8K_Bank(5, data); - } - break; - case 0x08: - SetVROM_1K_Bank(1, data); - break; - case 0x09: - SetVROM_1K_Bank(3, data); - break; - case 0x0F: - if (reg[1] != 0) - { - SetPROM_8K_Bank(4, data); - } - else - { - SetPROM_8K_Bank(6, data); - } - break; - } - break; + case 0x8001: + switch (reg[0]) + { + case 0x00: + if (reg[2] != 0) + { + SetVROM_1K_Bank(4, data + 0); + SetVROM_1K_Bank(5, data + 1); + } + else + { + SetVROM_1K_Bank(0, data + 0); + SetVROM_1K_Bank(1, data + 1); + } + break; + case 0x01: + if (reg[2] != 0) + { + SetVROM_1K_Bank(6, data + 0); + SetVROM_1K_Bank(7, data + 1); + } + else + { + SetVROM_1K_Bank(2, data + 0); + SetVROM_1K_Bank(3, data + 1); + } + break; + case 0x02: + if (reg[2] != 0) + { + SetVROM_1K_Bank(0, data); + } + else + { + SetVROM_1K_Bank(4, data); + } + break; + case 0x03: + if (reg[2] != 0) + { + SetVROM_1K_Bank(1, data); + } + else + { + SetVROM_1K_Bank(5, data); + } + break; + case 0x04: + if (reg[2] != 0) + { + SetVROM_1K_Bank(2, data); + } + else + { + SetVROM_1K_Bank(6, data); + } + break; + case 0x05: + if (reg[2] != 0) + { + SetVROM_1K_Bank(3, data); + } + else + { + SetVROM_1K_Bank(7, data); + } + break; + case 0x06: + if (reg[1] != 0) + { + SetPROM_8K_Bank(5, data); + } + else + { + SetPROM_8K_Bank(4, data); + } + break; + case 0x07: + if (reg[1] != 0) + { + SetPROM_8K_Bank(6, data); + } + else + { + SetPROM_8K_Bank(5, data); + } + break; + case 0x08: + SetVROM_1K_Bank(1, data); + break; + case 0x09: + SetVROM_1K_Bank(3, data); + break; + case 0x0F: + if (reg[1] != 0) + { + SetPROM_8K_Bank(4, data); + } + else + { + SetPROM_8K_Bank(6, data); + } + break; + } + break; - case 0xA000: - if ((data & 0x01) != 0) SetVRAM_Mirror(VRAM_HMIRROR); - else SetVRAM_Mirror(VRAM_VMIRROR); - break; + case 0xA000: + if ((data & 0x01) != 0) SetVRAM_Mirror(VRAM_HMIRROR); + else SetVRAM_Mirror(VRAM_VMIRROR); + break; - case 0xC000: - irq_latch = data; - if (irq_reset != 0) - { - irq_counter = irq_latch; - } - break; - case 0xC001: - irq_reset = 0xFF; - irq_counter = irq_latch; - irq_mode = (byte)(data & 0x01); - break; - case 0xE000: - irq_enable = 0; - if (irq_reset != 0) - { - irq_counter = irq_latch; - } - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; - case 0xE001: - irq_enable = 0xFF; - if (irq_reset != 0) - { - irq_counter = irq_latch; - } - break; - } - } + case 0xC000: + irq_latch = data; + if (irq_reset != 0) + { + irq_counter = irq_latch; + } + break; + case 0xC001: + irq_reset = 0xFF; + irq_counter = irq_latch; + irq_mode = (byte)(data & 0x01); + break; + case 0xE000: + irq_enable = 0; + if (irq_reset != 0) + { + irq_counter = irq_latch; + } + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; + case 0xE001: + irq_enable = 0xFF; + if (irq_reset != 0) + { + irq_counter = irq_latch; + } + break; + } + } - //void Mapper064::Clock(INT cycles) - public override void Clock(int cycles) - { - if (irq_mode == 0) - return; + //void Mapper064::Clock(INT cycles) + public override void Clock(int cycles) + { + if (irq_mode == 0) + return; - irq_counter2 += cycles; - while (irq_counter2 >= 4) - { - irq_counter2 -= 4; - if (irq_counter >= 0) - { - irq_counter--; - if (irq_counter < 0) - { - if (irq_enable != 0) - { - nes.cpu.SetIRQ(IRQ_MAPPER); - } - } - } - } - } + irq_counter2 += cycles; + while (irq_counter2 >= 4) + { + irq_counter2 -= 4; + if (irq_counter >= 0) + { + irq_counter--; + if (irq_counter < 0) + { + if (irq_enable != 0) + { + nes.cpu.SetIRQ(IRQ_MAPPER); + } + } + } + } + } - //void Mapper064::HSync(INT scanline) - public override void HSync(int scanline) - { - if (irq_mode != 0) - return; + //void Mapper064::HSync(INT scanline) + public override void HSync(int scanline) + { + if (irq_mode != 0) + return; - irq_reset = 0; + irq_reset = 0; - if ((scanline >= 0 && scanline <= 239)) - { - if (nes.ppu.IsDispON()) - { - if (irq_counter >= 0) - { - irq_counter--; - if (irq_counter < 0) - { - if (irq_enable != 0) - { - irq_reset = 1; - nes.cpu.SetIRQ(IRQ_MAPPER); - } - } - } - } - } - } + if ((scanline >= 0 && scanline <= 239)) + { + if (nes.ppu.IsDispON()) + { + if (irq_counter >= 0) + { + irq_counter--; + if (irq_counter < 0) + { + if (irq_enable != 0) + { + irq_reset = 1; + nes.cpu.SetIRQ(IRQ_MAPPER); + } + } + } + } + } + } - //void Mapper064::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - //p[0] = reg[0]; - //p[1] = reg[1]; - //p[2] = reg[2]; - //p[3] = irq_enable; - //p[4] = irq_mode; - //p[5] = irq_latch; - //p[6] = irq_reset; - //*((INT*)&p[8]) = irq_counter; - //*((INT*)&p[12]) = irq_counter2; - } + //void Mapper064::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + //p[0] = reg[0]; + //p[1] = reg[1]; + //p[2] = reg[2]; + //p[3] = irq_enable; + //p[4] = irq_mode; + //p[5] = irq_latch; + //p[6] = irq_reset; + //*((INT*)&p[8]) = irq_counter; + //*((INT*)&p[12]) = irq_counter2; + } - //void Mapper064::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - //reg[0] = p[0]; - //reg[1] = p[1]; - //reg[2] = p[2]; - //irq_enable = p[3]; - //irq_mode = p[4]; - //irq_latch = p[5]; - //irq_reset = p[6]; - //irq_counter = *((INT*)&p[8]); - //irq_counter2 = *((INT*)&p[12]); - } + //void Mapper064::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + //reg[0] = p[0]; + //reg[1] = p[1]; + //reg[2] = p[2]; + //irq_enable = p[3]; + //irq_mode = p[4]; + //irq_latch = p[5]; + //irq_reset = p[6]; + //irq_counter = *((INT*)&p[8]); + //irq_counter2 = *((INT*)&p[12]); + } - public override bool IsStateSave() - { - return true; - } - } + public override bool IsStateSave() + { + return true; + } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper065.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper065.cs index b7d0b326..dac093e6 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper065.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper065.cs @@ -1,189 +1,188 @@ ////////////////////////////////////////////////////////////////////////// // Mapper065 Irem H3001 // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { - public class Mapper065 : Mapper - { - BYTE patch; + public class Mapper065 : Mapper + { + BYTE patch; - BYTE irq_enable; - INT irq_counter; - INT irq_latch; - public Mapper065(NES parent) : base(parent) - { - } + BYTE irq_enable; + INT irq_counter; + INT irq_latch; + public Mapper065(NES parent) : base(parent) + { + } - public override void Reset() - { - patch = 0; + public override void Reset() + { + patch = 0; - // Kaiketsu Yanchamaru 3(J) - if (nes.rom.GetPROM_CRC() == 0xe30b7f64) - { - patch = 1; - } + // Kaiketsu Yanchamaru 3(J) + if (nes.rom.GetPROM_CRC() == 0xe30b7f64) + { + patch = 1; + } - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - if (VROM_8K_SIZE != 0) - { - SetVROM_8K_Bank(0); - } + if (VROM_8K_SIZE != 0) + { + SetVROM_8K_Bank(0); + } - irq_enable = 0; - irq_counter = 0; - } + irq_enable = 0; + irq_counter = 0; + } - //void Mapper065::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - switch (addr) - { - case 0x8000: - SetPROM_8K_Bank(4, data); - break; + //void Mapper065::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + switch (addr) + { + case 0x8000: + SetPROM_8K_Bank(4, data); + break; - case 0x9000: - if (patch == 0) - { - if ((data & 0x40) != 0) SetVRAM_Mirror(VRAM_VMIRROR); - else SetVRAM_Mirror(VRAM_HMIRROR); - } - break; + case 0x9000: + if (patch == 0) + { + if ((data & 0x40) != 0) SetVRAM_Mirror(VRAM_VMIRROR); + else SetVRAM_Mirror(VRAM_HMIRROR); + } + break; - case 0x9001: - if (patch != 0) - { - if ((data & 0x80) != 0) SetVRAM_Mirror(VRAM_HMIRROR); - else SetVRAM_Mirror(VRAM_VMIRROR); - } - break; + case 0x9001: + if (patch != 0) + { + if ((data & 0x80) != 0) SetVRAM_Mirror(VRAM_HMIRROR); + else SetVRAM_Mirror(VRAM_VMIRROR); + } + break; - case 0x9003: - if (patch == 0) - { - irq_enable = (byte)(data & 0x8); - nes.cpu.ClrIRQ(IRQ_MAPPER); - } - break; - case 0x9004: - if (patch == 0) - { - irq_counter = irq_latch; - } - break; - case 0x9005: - if (patch != 0) - { - irq_counter = (BYTE)(data << 1); - irq_enable = data; - nes.cpu.ClrIRQ(IRQ_MAPPER); - } - else - { - irq_latch = (irq_latch & 0x00FF) | ((INT)data << 8); - } - break; + case 0x9003: + if (patch == 0) + { + irq_enable = (byte)(data & 0x8); + nes.cpu.ClrIRQ(IRQ_MAPPER); + } + break; + case 0x9004: + if (patch == 0) + { + irq_counter = irq_latch; + } + break; + case 0x9005: + if (patch != 0) + { + irq_counter = (BYTE)(data << 1); + irq_enable = data; + nes.cpu.ClrIRQ(IRQ_MAPPER); + } + else + { + irq_latch = (irq_latch & 0x00FF) | ((INT)data << 8); + } + break; - case 0x9006: - if (patch != 0) - { - irq_enable = 1; - } - else - { - irq_latch = (irq_latch & 0xFF00) | data; - } - break; + case 0x9006: + if (patch != 0) + { + irq_enable = 1; + } + else + { + irq_latch = (irq_latch & 0xFF00) | data; + } + break; - case 0xB000: - case 0xB001: - case 0xB002: - case 0xB003: - case 0xB004: - case 0xB005: - case 0xB006: - case 0xB007: - SetVROM_1K_Bank((byte)(addr & 0x0007), data); - break; + case 0xB000: + case 0xB001: + case 0xB002: + case 0xB003: + case 0xB004: + case 0xB005: + case 0xB006: + case 0xB007: + SetVROM_1K_Bank((byte)(addr & 0x0007), data); + break; - case 0xA000: - SetPROM_8K_Bank(5, data); - break; - case 0xC000: - SetPROM_8K_Bank(6, data); - break; - } - } + case 0xA000: + SetPROM_8K_Bank(5, data); + break; + case 0xC000: + SetPROM_8K_Bank(6, data); + break; + } + } - //void Mapper065::HSync(INT scanline) - public override void HSync(int scanline) - { - if (patch != 0) - { - if (irq_enable != 0) - { - if (irq_counter == 0) - { - // nes.cpu.IRQ_NotPending(); - nes.cpu.SetIRQ(IRQ_MAPPER); - } - else - { - irq_counter--; - } - } - } - } + //void Mapper065::HSync(INT scanline) + public override void HSync(int scanline) + { + if (patch != 0) + { + if (irq_enable != 0) + { + if (irq_counter == 0) + { + // nes.cpu.IRQ_NotPending(); + nes.cpu.SetIRQ(IRQ_MAPPER); + } + else + { + irq_counter--; + } + } + } + } - //void Mapper065::Clock(INT cycles) - public override void Clock(int cycles) - { - if (patch == 0) - { - if (irq_enable != 0) - { - if (irq_counter <= 0) - { - // nes.cpu.IRQ_NotPending(); - nes.cpu.SetIRQ(IRQ_MAPPER); - } - else - { - irq_counter -= cycles; - } - } - } - } + //void Mapper065::Clock(INT cycles) + public override void Clock(int cycles) + { + if (patch == 0) + { + if (irq_enable != 0) + { + if (irq_counter <= 0) + { + // nes.cpu.IRQ_NotPending(); + nes.cpu.SetIRQ(IRQ_MAPPER); + } + else + { + irq_counter -= cycles; + } + } + } + } - //void Mapper065::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - //p[0] = irq_enable; - //*(INT*)&p[1] = irq_counter; - //*(INT*)&p[5] = irq_latch; - } + //void Mapper065::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + //p[0] = irq_enable; + //*(INT*)&p[1] = irq_counter; + //*(INT*)&p[5] = irq_latch; + } - //void Mapper065::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - //irq_enable = p[0]; - //irq_counter = *(INT*)&p[1]; - //irq_latch = *(INT*)&p[5]; - } + //void Mapper065::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + //irq_enable = p[0]; + //irq_counter = *(INT*)&p[1]; + //irq_latch = *(INT*)&p[5]; + } - public override bool IsStateSave() - { - return true; - } - } + public override bool IsStateSave() + { + return true; + } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper066.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper066.cs index 1458c26c..00b4d877 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper066.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper066.cs @@ -2,47 +2,43 @@ // Mapper066 Bandai 74161 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper066 : Mapper - { - public Mapper066(NES parent) : base(parent) - { - } + public class Mapper066 : Mapper + { + public Mapper066(NES parent) : base(parent) + { + } - public override void Reset() - { - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - SetVROM_8K_Bank(0); + public override void Reset() + { + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + SetVROM_8K_Bank(0); - // if( nes->rom->GetPROM_CRC() == 0xe30552db ) { // Paris-Dakar Rally Special - // nes->SetFrameIRQmode( FALSE ); - // } - } + // if( nes->rom->GetPROM_CRC() == 0xe30552db ) { // Paris-Dakar Rally Special + // nes->SetFrameIRQmode( FALSE ); + // } + } - //void Mapper066::WriteLow(WORD addr, BYTE data) - public override void WriteLow(ushort addr, byte data) - { - if (addr >= 0x6000) - { - SetPROM_32K_Bank((data & 0xF0) >> 4); - SetVROM_8K_Bank(data & 0x0F); - } - } + //void Mapper066::WriteLow(WORD addr, BYTE data) + public override void WriteLow(ushort addr, byte data) + { + if (addr >= 0x6000) + { + SetPROM_32K_Bank((data & 0xF0) >> 4); + SetVROM_8K_Bank(data & 0x0F); + } + } - //void Mapper066::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - SetPROM_32K_Bank((data & 0xF0) >> 4); - SetVROM_8K_Bank(data & 0x0F); - } + //void Mapper066::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + SetPROM_32K_Bank((data & 0xF0) >> 4); + SetVROM_8K_Bank(data & 0x0F); + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper067.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper067.cs index 3d6b2fb6..f43d9c9d 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper067.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper067.cs @@ -1,140 +1,139 @@ ////////////////////////////////////////////////////////////////////////// // Mapper067 SunSoft Mapper 3 // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { - public class Mapper067 : Mapper - { - BYTE irq_enable; - BYTE irq_occur; - BYTE irq_toggle; - INT irq_counter; - public Mapper067(NES parent) : base(parent) - { - } + public class Mapper067 : Mapper + { + BYTE irq_enable; + BYTE irq_occur; + BYTE irq_toggle; + INT irq_counter; + public Mapper067(NES parent) : base(parent) + { + } - public override void Reset() + public override void Reset() - { - irq_enable = 0; - irq_toggle = 0; - irq_counter = 0; - irq_occur = 0; + { + irq_enable = 0; + irq_toggle = 0; + irq_counter = 0; + irq_occur = 0; - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - SetVROM_4K_Bank(0, 0); - SetVROM_4K_Bank(4, VROM_4K_SIZE - 1); + SetVROM_4K_Bank(0, 0); + SetVROM_4K_Bank(4, VROM_4K_SIZE - 1); - uint crc = nes.rom.GetPROM_CRC(); + uint crc = nes.rom.GetPROM_CRC(); - if (crc == 0x7f2a04bf) - { // For Fantasy Zone 2(J) - nes.SetRenderMethod(EnumRenderMethod.PRE_ALL_RENDER); - } - } + if (crc == 0x7f2a04bf) + { // For Fantasy Zone 2(J) + nes.SetRenderMethod(EnumRenderMethod.PRE_ALL_RENDER); + } + } - //void Mapper067::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - switch (addr & 0xF800) - { - case 0x8800: - SetVROM_2K_Bank(0, data); - break; - case 0x9800: - SetVROM_2K_Bank(2, data); - break; - case 0xA800: - SetVROM_2K_Bank(4, data); - break; - case 0xB800: - SetVROM_2K_Bank(6, data); - break; + //void Mapper067::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + switch (addr & 0xF800) + { + case 0x8800: + SetVROM_2K_Bank(0, data); + break; + case 0x9800: + SetVROM_2K_Bank(2, data); + break; + case 0xA800: + SetVROM_2K_Bank(4, data); + break; + case 0xB800: + SetVROM_2K_Bank(6, data); + break; - case 0xC800: - if (irq_toggle == 0) - { - irq_counter = (irq_counter & 0x00FF) | ((INT)data << 8); - } - else - { - irq_counter = (irq_counter & 0xFF00) | ((INT)data & 0xFF); - } - irq_toggle ^= 1; - irq_occur = 0; - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; - case 0xD800: - irq_enable = (byte)(data & 0x10); - irq_toggle = 0; - irq_occur = 0; - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; + case 0xC800: + if (irq_toggle == 0) + { + irq_counter = (irq_counter & 0x00FF) | ((INT)data << 8); + } + else + { + irq_counter = (irq_counter & 0xFF00) | ((INT)data & 0xFF); + } + irq_toggle ^= 1; + irq_occur = 0; + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; + case 0xD800: + irq_enable = (byte)(data & 0x10); + irq_toggle = 0; + irq_occur = 0; + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; - case 0xE800: - data &= 0x03; - if (data == 0) SetVRAM_Mirror(VRAM_VMIRROR); - else if (data == 1) SetVRAM_Mirror(VRAM_HMIRROR); - else if (data == 2) SetVRAM_Mirror(VRAM_MIRROR4L); - else SetVRAM_Mirror(VRAM_MIRROR4H); - break; + case 0xE800: + data &= 0x03; + if (data == 0) SetVRAM_Mirror(VRAM_VMIRROR); + else if (data == 1) SetVRAM_Mirror(VRAM_HMIRROR); + else if (data == 2) SetVRAM_Mirror(VRAM_MIRROR4L); + else SetVRAM_Mirror(VRAM_MIRROR4H); + break; - case 0xF800: - SetPROM_16K_Bank(4, data); - break; - } - } + case 0xF800: + SetPROM_16K_Bank(4, data); + break; + } + } - //void Mapper067::Clock(INT cycles) - public override void Clock(int cycles) - { - if (irq_enable != 0) - { - if ((irq_counter -= cycles) <= 0) - { - irq_enable = 0; - irq_occur = 0xFF; - irq_counter = 0xFFFF; - nes.cpu.SetIRQ(IRQ_MAPPER); - } - } + //void Mapper067::Clock(INT cycles) + public override void Clock(int cycles) + { + if (irq_enable != 0) + { + if ((irq_counter -= cycles) <= 0) + { + irq_enable = 0; + irq_occur = 0xFF; + irq_counter = 0xFFFF; + nes.cpu.SetIRQ(IRQ_MAPPER); + } + } - // if( irq_occur ) { - // nes.cpu.IRQ_NotPending(); - // } - } + // if( irq_occur ) { + // nes.cpu.IRQ_NotPending(); + // } + } - //void Mapper067::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - //p[0] = irq_enable; - //p[1] = irq_occur; - //p[2] = irq_toggle; - //*((INT*)&p[3]) = irq_counter; - } + //void Mapper067::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + //p[0] = irq_enable; + //p[1] = irq_occur; + //p[2] = irq_toggle; + //*((INT*)&p[3]) = irq_counter; + } - //void Mapper067::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - //irq_enable = p[0]; - //irq_occur = p[1]; - //irq_toggle = p[2]; - //irq_counter = *((INT*)&p[3]); - } + //void Mapper067::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + //irq_enable = p[0]; + //irq_occur = p[1]; + //irq_toggle = p[2]; + //irq_counter = *((INT*)&p[3]); + } - public override bool IsStateSave() - { - return true; - } + public override bool IsStateSave() + { + return true; + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper068.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper068.cs index 7e035c87..2136edbe 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper068.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper068.cs @@ -2,29 +2,27 @@ // Mapper068 SunSoft Mapper 4 (After Burner II) // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { - public class Mapper068 : Mapper - { - BYTE[] reg = new byte[4]; - BYTE coin; - public Mapper068(NES parent) : base(parent) - { - } + public class Mapper068 : Mapper + { + BYTE[] reg = new byte[4]; + BYTE coin; + public Mapper068(NES parent) : base(parent) + { + } - public override void Reset() - { - reg[0] = reg[1] = reg[2] = reg[3] = 0; - coin = 0; + public override void Reset() + { + reg[0] = reg[1] = reg[2] = reg[3] = 0; + coin = 0; - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - } + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + } #if FALSE //0 @@ -47,118 +45,118 @@ DEBUGOUT( "WR $4020:%02X\n", data ); } #endif - //void Mapper068::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - switch (addr & 0xF000) - { - case 0x8000: - SetVROM_2K_Bank(0, data); - break; - case 0x9000: - SetVROM_2K_Bank(2, data); - break; - case 0xA000: - SetVROM_2K_Bank(4, data); - break; - case 0xB000: - SetVROM_2K_Bank(6, data); - break; + //void Mapper068::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + switch (addr & 0xF000) + { + case 0x8000: + SetVROM_2K_Bank(0, data); + break; + case 0x9000: + SetVROM_2K_Bank(2, data); + break; + case 0xA000: + SetVROM_2K_Bank(4, data); + break; + case 0xB000: + SetVROM_2K_Bank(6, data); + break; - case 0xC000: - reg[2] = data; - SetBank(); - break; - case 0xD000: - reg[3] = data; - SetBank(); - break; - case 0xE000: - reg[0] = (byte)((data & 0x10) >> 4); - reg[1] = (byte)(data & 0x03); - SetBank(); - break; + case 0xC000: + reg[2] = data; + SetBank(); + break; + case 0xD000: + reg[3] = data; + SetBank(); + break; + case 0xE000: + reg[0] = (byte)((data & 0x10) >> 4); + reg[1] = (byte)(data & 0x03); + SetBank(); + break; - case 0xF000: - SetPROM_16K_Bank(4, data); - break; - } - } + case 0xF000: + SetPROM_16K_Bank(4, data); + break; + } + } - void SetBank() - { - if (reg[0] != 0) - { - switch (reg[1]) - { - case 0: - SetVROM_1K_Bank(8, (INT)reg[2] + 0x80); - SetVROM_1K_Bank(9, (INT)reg[3] + 0x80); - SetVROM_1K_Bank(10, (INT)reg[2] + 0x80); - SetVROM_1K_Bank(11, (INT)reg[3] + 0x80); - break; - case 1: - SetVROM_1K_Bank(8, (INT)reg[2] + 0x80); - SetVROM_1K_Bank(9, (INT)reg[2] + 0x80); - SetVROM_1K_Bank(10, (INT)reg[3] + 0x80); - SetVROM_1K_Bank(11, (INT)reg[3] + 0x80); - break; - case 2: - SetVROM_1K_Bank(8, (INT)reg[2] + 0x80); - SetVROM_1K_Bank(9, (INT)reg[2] + 0x80); - SetVROM_1K_Bank(10, (INT)reg[2] + 0x80); - SetVROM_1K_Bank(11, (INT)reg[2] + 0x80); - break; - case 3: - SetVROM_1K_Bank(8, (INT)reg[3] + 0x80); - SetVROM_1K_Bank(9, (INT)reg[3] + 0x80); - SetVROM_1K_Bank(10, (INT)reg[3] + 0x80); - SetVROM_1K_Bank(11, (INT)reg[3] + 0x80); - break; - } - } - else - { - switch (reg[1]) - { - case 0: - SetVRAM_Mirror(VRAM_VMIRROR); - break; - case 1: - SetVRAM_Mirror(VRAM_HMIRROR); - break; - case 2: - SetVRAM_Mirror(VRAM_MIRROR4L); - break; - case 3: - SetVRAM_Mirror(VRAM_MIRROR4H); - break; - } - } - } + void SetBank() + { + if (reg[0] != 0) + { + switch (reg[1]) + { + case 0: + SetVROM_1K_Bank(8, (INT)reg[2] + 0x80); + SetVROM_1K_Bank(9, (INT)reg[3] + 0x80); + SetVROM_1K_Bank(10, (INT)reg[2] + 0x80); + SetVROM_1K_Bank(11, (INT)reg[3] + 0x80); + break; + case 1: + SetVROM_1K_Bank(8, (INT)reg[2] + 0x80); + SetVROM_1K_Bank(9, (INT)reg[2] + 0x80); + SetVROM_1K_Bank(10, (INT)reg[3] + 0x80); + SetVROM_1K_Bank(11, (INT)reg[3] + 0x80); + break; + case 2: + SetVROM_1K_Bank(8, (INT)reg[2] + 0x80); + SetVROM_1K_Bank(9, (INT)reg[2] + 0x80); + SetVROM_1K_Bank(10, (INT)reg[2] + 0x80); + SetVROM_1K_Bank(11, (INT)reg[2] + 0x80); + break; + case 3: + SetVROM_1K_Bank(8, (INT)reg[3] + 0x80); + SetVROM_1K_Bank(9, (INT)reg[3] + 0x80); + SetVROM_1K_Bank(10, (INT)reg[3] + 0x80); + SetVROM_1K_Bank(11, (INT)reg[3] + 0x80); + break; + } + } + else + { + switch (reg[1]) + { + case 0: + SetVRAM_Mirror(VRAM_VMIRROR); + break; + case 1: + SetVRAM_Mirror(VRAM_HMIRROR); + break; + case 2: + SetVRAM_Mirror(VRAM_MIRROR4L); + break; + case 3: + SetVRAM_Mirror(VRAM_MIRROR4H); + break; + } + } + } - //void Mapper068::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - p[0] = reg[0]; - p[1] = reg[1]; - p[2] = reg[2]; - p[3] = reg[3]; - } + //void Mapper068::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + p[0] = reg[0]; + p[1] = reg[1]; + p[2] = reg[2]; + p[3] = reg[3]; + } - //void Mapper068::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - reg[0] = p[0]; - reg[1] = p[1]; - reg[2] = p[2]; - reg[3] = p[3]; - } + //void Mapper068::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + reg[0] = p[0]; + reg[1] = p[1]; + reg[2] = p[2]; + reg[3] = p[3]; + } - public override bool IsStateSave() - { - return true; - } - } + public override bool IsStateSave() + { + return true; + } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper069.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper069.cs index f386f820..6aa31783 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper069.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper069.cs @@ -1,177 +1,176 @@ ////////////////////////////////////////////////////////////////////////// // Mapper069 SunSoft FME-7 // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { - public class Mapper069 : Mapper - { - BYTE patch; + public class Mapper069 : Mapper + { + BYTE patch; - BYTE reg; - BYTE irq_enable; - INT irq_counter; - public Mapper069(NES parent) : base(parent) - { - } + BYTE reg; + BYTE irq_enable; + INT irq_counter; + public Mapper069(NES parent) : base(parent) + { + } - public override void Reset() + public override void Reset() - { - reg = 0; - irq_enable = 0; - irq_counter = 0; + { + reg = 0; + irq_enable = 0; + irq_counter = 0; - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - if (VROM_1K_SIZE != 0) - { - SetVROM_8K_Bank(0); - } + if (VROM_1K_SIZE != 0) + { + SetVROM_8K_Bank(0); + } - nes.apu.SelectExSound(32); - nes.SetIrqType(NES.IRQMETHOD.IRQ_CLOCK); - patch = 0; + nes.apu.SelectExSound(32); + nes.SetIrqType(NES.IRQMETHOD.IRQ_CLOCK); + patch = 0; - uint crc = nes.rom.GetPROM_CRC(); + uint crc = nes.rom.GetPROM_CRC(); - if (crc == 0xfeac6916) - { // Honoo no Toukyuuji - Dodge Danpei 2(J) - // nes.SetIrqType( NES::IRQ_HSYNC ); - nes.SetRenderMethod(EnumRenderMethod.TILE_RENDER); - } + if (crc == 0xfeac6916) + { // Honoo no Toukyuuji - Dodge Danpei 2(J) + // nes.SetIrqType( NES::IRQ_HSYNC ); + nes.SetRenderMethod(EnumRenderMethod.TILE_RENDER); + } - if (crc == 0xad28aef6) - { // Dynamite Batman(J) / Dynamite Batman - Return of the Joker(U) - patch = 1; - } - } + if (crc == 0xad28aef6) + { // Dynamite Batman(J) / Dynamite Batman - Return of the Joker(U) + patch = 1; + } + } - //void Mapper069::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - switch (addr & 0xE000) - { - case 0x8000: - reg = data; - break; + //void Mapper069::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + switch (addr & 0xE000) + { + case 0x8000: + reg = data; + break; - case 0xA000: - switch (reg & 0x0F) - { - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - SetVROM_1K_Bank((byte)(reg & 0x07), data); - break; - case 0x08: - if (patch == 0 && (data & 0x40) == 0) - { - SetPROM_8K_Bank(3, data); - } - break; - case 0x09: - SetPROM_8K_Bank(4, data); - break; - case 0x0A: - SetPROM_8K_Bank(5, data); - break; - case 0x0B: - SetPROM_8K_Bank(6, data); - break; + case 0xA000: + switch (reg & 0x0F) + { + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + SetVROM_1K_Bank((byte)(reg & 0x07), data); + break; + case 0x08: + if (patch == 0 && (data & 0x40) == 0) + { + SetPROM_8K_Bank(3, data); + } + break; + case 0x09: + SetPROM_8K_Bank(4, data); + break; + case 0x0A: + SetPROM_8K_Bank(5, data); + break; + case 0x0B: + SetPROM_8K_Bank(6, data); + break; - case 0x0C: - data &= 0x03; - if (data == 0) SetVRAM_Mirror(VRAM_VMIRROR); - else if (data == 1) SetVRAM_Mirror(VRAM_HMIRROR); - else if (data == 2) SetVRAM_Mirror(VRAM_MIRROR4L); - else SetVRAM_Mirror(VRAM_MIRROR4H); - break; + case 0x0C: + data &= 0x03; + if (data == 0) SetVRAM_Mirror(VRAM_VMIRROR); + else if (data == 1) SetVRAM_Mirror(VRAM_HMIRROR); + else if (data == 2) SetVRAM_Mirror(VRAM_MIRROR4L); + else SetVRAM_Mirror(VRAM_MIRROR4H); + break; - case 0x0D: - irq_enable = data; - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; + case 0x0D: + irq_enable = data; + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; - case 0x0E: - irq_counter = (irq_counter & 0xFF00) | data; - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; + case 0x0E: + irq_counter = (irq_counter & 0xFF00) | data; + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; - case 0x0F: - irq_counter = (irq_counter & 0x00FF) | (data << 8); - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; - } - break; + case 0x0F: + irq_counter = (irq_counter & 0x00FF) | (data << 8); + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; + } + break; - case 0xC000: - case 0xE000: - nes.apu.ExWrite(addr, data); - break; - } - } + case 0xC000: + case 0xE000: + nes.apu.ExWrite(addr, data); + break; + } + } - //void Mapper069::Clock(INT cycles) - public override void Clock(int cycles) - { - //if (irq_enable && (nes.GetIrqType() == NES::IRQ_CLOCK)) - if (irq_enable != 0 && (nes.GetIrqType() == (int)NES.IRQMETHOD.IRQ_HSYNC)) - { - irq_counter -= cycles; - if (irq_counter <= 0) - { - nes.cpu.SetIRQ(IRQ_MAPPER); - irq_enable = 0; - irq_counter = 0xFFFF; - } - } - } + //void Mapper069::Clock(INT cycles) + public override void Clock(int cycles) + { + //if (irq_enable && (nes.GetIrqType() == NES::IRQ_CLOCK)) + if (irq_enable != 0 && (nes.GetIrqType() == (int)NES.IRQMETHOD.IRQ_HSYNC)) + { + irq_counter -= cycles; + if (irq_counter <= 0) + { + nes.cpu.SetIRQ(IRQ_MAPPER); + irq_enable = 0; + irq_counter = 0xFFFF; + } + } + } - //void Mapper069::HSync(INT scanline) - public override void HSync(int scanline) - { - if (irq_enable != 0 && (nes.GetIrqType() == (int)NES.IRQMETHOD.IRQ_HSYNC)) - { - irq_counter -= 114; - if (irq_counter <= 0) - { - nes.cpu.SetIRQ(IRQ_MAPPER); - irq_enable = 0; - irq_counter = 0xFFFF; - } - } - } + //void Mapper069::HSync(INT scanline) + public override void HSync(int scanline) + { + if (irq_enable != 0 && (nes.GetIrqType() == (int)NES.IRQMETHOD.IRQ_HSYNC)) + { + irq_counter -= 114; + if (irq_counter <= 0) + { + nes.cpu.SetIRQ(IRQ_MAPPER); + irq_enable = 0; + irq_counter = 0xFFFF; + } + } + } - //void Mapper069::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - //p[0] = reg; - //p[1] = irq_enable; - //*(INT*)&p[2] = irq_counter; - } + //void Mapper069::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + //p[0] = reg; + //p[1] = irq_enable; + //*(INT*)&p[2] = irq_counter; + } - //void Mapper069::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - //reg = p[0]; - //irq_enable = p[1]; - //irq_counter = *(INT*)&p[2]; - } - public override bool IsStateSave() - { - return true; - } - } + //void Mapper069::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + //reg = p[0]; + //irq_enable = p[1]; + //irq_counter = *(INT*)&p[2]; + } + public override bool IsStateSave() + { + return true; + } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper070.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper070.cs index 04153e2c..c1cca87b 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper070.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper070.cs @@ -2,63 +2,60 @@ // Mapper070 Bandai 74161 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper070 : Mapper - { - BYTE patch; - public Mapper070(NES parent) : base(parent) - { - } + public class Mapper070 : Mapper + { + BYTE patch; + public Mapper070(NES parent) : base(parent) + { + } - public override void Reset() - { - patch = 0; + public override void Reset() + { + patch = 0; - uint crc = nes.rom.GetPROM_CRC(); + uint crc = nes.rom.GetPROM_CRC(); - if (crc == 0xa59ca2ef) - { // Kamen Rider Club(J) - patch = 1; - nes.SetRenderMethod(EnumRenderMethod.POST_ALL_RENDER); - } - if (crc == 0x10bb8f9a) - { // Family Trainer - Manhattan Police(J) - patch = 1; - } - if (crc == 0x0cd00488) - { // Space Shadow(J) - patch = 1; - } + if (crc == 0xa59ca2ef) + { // Kamen Rider Club(J) + patch = 1; + nes.SetRenderMethod(EnumRenderMethod.POST_ALL_RENDER); + } + if (crc == 0x10bb8f9a) + { // Family Trainer - Manhattan Police(J) + patch = 1; + } + if (crc == 0x0cd00488) + { // Space Shadow(J) + patch = 1; + } - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - SetVROM_8K_Bank(0); - } + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + SetVROM_8K_Bank(0); + } - //void Mapper070::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - SetPROM_16K_Bank(4, (data & 0x70) >> 4); - SetVROM_8K_Bank(data & 0x0F); + //void Mapper070::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + SetPROM_16K_Bank(4, (data & 0x70) >> 4); + SetVROM_8K_Bank(data & 0x0F); - if (patch != 0) - { - if ((data & 0x80) != 0) SetVRAM_Mirror(VRAM_HMIRROR); - else SetVRAM_Mirror(VRAM_VMIRROR); - } - else - { - if ((data & 0x80) != 0) SetVRAM_Mirror(VRAM_MIRROR4H); - else SetVRAM_Mirror(VRAM_MIRROR4L); - } - } + if (patch != 0) + { + if ((data & 0x80) != 0) SetVRAM_Mirror(VRAM_HMIRROR); + else SetVRAM_Mirror(VRAM_VMIRROR); + } + else + { + if ((data & 0x80) != 0) SetVRAM_Mirror(VRAM_MIRROR4H); + else SetVRAM_Mirror(VRAM_MIRROR4L); + } + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper071.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper071.cs index 5d07debf..865f3459 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper071.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper071.cs @@ -2,53 +2,49 @@ // Mapper071 Camerica // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper071 : Mapper - { - public Mapper071(NES parent) : base(parent) - { - } + public class Mapper071 : Mapper + { + public Mapper071(NES parent) : base(parent) + { + } - public override void Reset() - { - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - } + public override void Reset() + { + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + } - //void Mapper071::WriteLow(WORD addr, BYTE data) - public override void WriteLow(ushort addr, byte data) - { - if ((addr & 0xE000) == 0x6000) - { - SetPROM_16K_Bank(4, data); - } - } + //void Mapper071::WriteLow(WORD addr, BYTE data) + public override void WriteLow(ushort addr, byte data) + { + if ((addr & 0xE000) == 0x6000) + { + SetPROM_16K_Bank(4, data); + } + } - //void Mapper071::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - switch (addr & 0xF000) - { - case 0x9000: - if ((data & 0x10) != 0) SetVRAM_Mirror(VRAM_MIRROR4H); - else SetVRAM_Mirror(VRAM_MIRROR4L); - break; + //void Mapper071::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + switch (addr & 0xF000) + { + case 0x9000: + if ((data & 0x10) != 0) SetVRAM_Mirror(VRAM_MIRROR4H); + else SetVRAM_Mirror(VRAM_MIRROR4L); + break; - case 0xC000: - case 0xD000: - case 0xE000: - case 0xF000: - SetPROM_16K_Bank(4, data); - break; - } - } + case 0xC000: + case 0xD000: + case 0xE000: + case 0xF000: + SetPROM_16K_Bank(4, data); + break; + } + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper072.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper072.cs index f3dbc629..9fc7dc31 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper072.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper072.cs @@ -1,13 +1,8 @@ ////////////////////////////////////////////////////////////////////////// // Mapper072 Jaleco/Type1 lower bank switch // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; using VirtualNes.Core.Debug; +using static VirtualNes.MMU; namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper073.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper073.cs index ce69fe03..7477d5c2 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper073.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper073.cs @@ -1,94 +1,93 @@ ////////////////////////////////////////////////////////////////////////// // Mapper073 Konami VRC3 // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { - public class Mapper073 : Mapper - { - BYTE irq_enable; - INT irq_counter; - public Mapper073(NES parent) : base(parent) - { - } + public class Mapper073 : Mapper + { + BYTE irq_enable; + INT irq_counter; + public Mapper073(NES parent) : base(parent) + { + } - public override void Reset() - { - irq_enable = 0; - irq_counter = 0; + public override void Reset() + { + irq_enable = 0; + irq_counter = 0; - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - } + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + } - //void Mapper073::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - switch (addr) - { - case 0xF000: - SetPROM_16K_Bank(4, data); - break; + //void Mapper073::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + switch (addr) + { + case 0xF000: + SetPROM_16K_Bank(4, data); + break; - case 0x8000: - irq_counter = (irq_counter & 0xFFF0) | (data & 0x0F); - break; - case 0x9000: - irq_counter = (irq_counter & 0xFF0F) | ((data & 0x0F) << 4); - break; - case 0xA000: - irq_counter = (irq_counter & 0xF0FF) | ((data & 0x0F) << 8); - break; - case 0xB000: - irq_counter = (irq_counter & 0x0FFF) | ((data & 0x0F) << 12); - break; - case 0xC000: - irq_enable = (byte)(data & 0x02); - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; - case 0xD000: - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; - } - } + case 0x8000: + irq_counter = (irq_counter & 0xFFF0) | (data & 0x0F); + break; + case 0x9000: + irq_counter = (irq_counter & 0xFF0F) | ((data & 0x0F) << 4); + break; + case 0xA000: + irq_counter = (irq_counter & 0xF0FF) | ((data & 0x0F) << 8); + break; + case 0xB000: + irq_counter = (irq_counter & 0x0FFF) | ((data & 0x0F) << 12); + break; + case 0xC000: + irq_enable = (byte)(data & 0x02); + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; + case 0xD000: + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; + } + } - //void Mapper073::Clock(INT cycles) - public override void Clock(int cycles) - { - if (irq_enable != 0) - { - if ((irq_counter += cycles) >= 0xFFFF) - { - irq_enable = 0; - irq_counter &= 0xFFFF; - nes.cpu.SetIRQ(IRQ_MAPPER); - } - } - } + //void Mapper073::Clock(INT cycles) + public override void Clock(int cycles) + { + if (irq_enable != 0) + { + if ((irq_counter += cycles) >= 0xFFFF) + { + irq_enable = 0; + irq_counter &= 0xFFFF; + nes.cpu.SetIRQ(IRQ_MAPPER); + } + } + } - //void Mapper073::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - //p[0] = irq_enable; - //*(INT*)&p[1] = irq_counter; - } + //void Mapper073::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + //p[0] = irq_enable; + //*(INT*)&p[1] = irq_counter; + } - //void Mapper073::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - //irq_enable = p[0]; - //irq_counter = *(INT*)&p[1]; - } + //void Mapper073::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + //irq_enable = p[0]; + //irq_counter = *(INT*)&p[1]; + } - public override bool IsStateSave() - { - return true; - } - } + public override bool IsStateSave() + { + return true; + } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper074.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper074.cs index 26602d9a..ecdd94d4 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper074.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper074.cs @@ -1,312 +1,311 @@ ////////////////////////////////////////////////////////////////////////// // Mapper074 // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { - public class Mapper074 : Mapper - { - BYTE[] reg = new byte[8]; - BYTE prg0, prg1; - BYTE chr01, chr23, chr4, chr5, chr6, chr7; - BYTE we_sram; + public class Mapper074 : Mapper + { + BYTE[] reg = new byte[8]; + BYTE prg0, prg1; + BYTE chr01, chr23, chr4, chr5, chr6, chr7; + BYTE we_sram; - BYTE irq_type; - BYTE irq_enable; - BYTE irq_counter; - BYTE irq_latch; - BYTE irq_request; + BYTE irq_type; + BYTE irq_enable; + BYTE irq_counter; + BYTE irq_latch; + BYTE irq_request; - BYTE patch; - public Mapper074(NES parent) : base(parent) - { - } + BYTE patch; + public Mapper074(NES parent) : base(parent) + { + } - public override void Reset() + public override void Reset() - { - for (INT i = 0; i < 8; i++) - { - reg[i] = 0x00; - } - prg0 = 0; - prg1 = 1; - SetBank_CPU(); + { + for (INT i = 0; i < 8; i++) + { + reg[i] = 0x00; + } + prg0 = 0; + prg1 = 1; + SetBank_CPU(); - chr01 = 0; - chr23 = 2; - chr4 = 4; - chr5 = 5; - chr6 = 6; - chr7 = 7; - SetBank_PPU(); + chr01 = 0; + chr23 = 2; + chr4 = 4; + chr5 = 5; + chr6 = 6; + chr7 = 7; + SetBank_PPU(); - we_sram = 0; // Disable - irq_enable = 0; // Disable - irq_counter = 0; - irq_latch = 0; - irq_request = 0; - uint crc = nes.rom.GetPROM_CRC(); + we_sram = 0; // Disable + irq_enable = 0; // Disable + irq_counter = 0; + irq_latch = 0; + irq_request = 0; + uint crc = nes.rom.GetPROM_CRC(); - patch = 0; - if (crc == 0x37ae04a8) - { - patch = 1; - nes.SetRenderMethod(EnumRenderMethod.TILE_RENDER); - } - } + patch = 0; + if (crc == 0x37ae04a8) + { + patch = 1; + nes.SetRenderMethod(EnumRenderMethod.TILE_RENDER); + } + } - //void Mapper074::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - //DEBUGOUT( "MPRWR A=%04X D=%02X L=%3d CYC=%d\n", addr&0xFFFF, data&0xFF, nes.GetScanline(), nes.cpu.GetTotalCycles() ); + //void Mapper074::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + //DEBUGOUT( "MPRWR A=%04X D=%02X L=%3d CYC=%d\n", addr&0xFFFF, data&0xFF, nes.GetScanline(), nes.cpu.GetTotalCycles() ); - switch (addr & 0xE001) - { - case 0x8000: - reg[0] = data; - SetBank_CPU(); - SetBank_PPU(); - break; - case 0x8001: - reg[1] = data; + switch (addr & 0xE001) + { + case 0x8000: + reg[0] = data; + SetBank_CPU(); + SetBank_PPU(); + break; + case 0x8001: + reg[1] = data; - switch (reg[0] & 0x07) - { - case 0x00: - chr01 = (byte)(data & 0xFE); - SetBank_PPU(); - break; - case 0x01: - chr23 = (byte)(data & 0xFE); - SetBank_PPU(); - break; - case 0x02: - chr4 = data; - SetBank_PPU(); - break; - case 0x03: - chr5 = data; - SetBank_PPU(); - break; - case 0x04: - chr6 = data; - SetBank_PPU(); - break; - case 0x05: - chr7 = data; - SetBank_PPU(); - break; - case 0x06: - prg0 = data; - SetBank_CPU(); - break; - case 0x07: - prg1 = data; - SetBank_CPU(); - break; - } - break; - case 0xA000: - reg[2] = data; - if (!nes.rom.Is4SCREEN()) - { - if ((data & 0x01) != 0) SetVRAM_Mirror(VRAM_HMIRROR); - else SetVRAM_Mirror(VRAM_VMIRROR); - } - break; - case 0xA001: - reg[3] = data; - break; - case 0xC000: - reg[4] = data; - irq_counter = data; - irq_request = 0; - break; - case 0xC001: - reg[5] = data; - irq_latch = data; - irq_request = 0; - break; - case 0xE000: - reg[6] = data; - irq_enable = 0; - irq_request = 0; - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; - case 0xE001: - reg[7] = data; - irq_enable = 1; - irq_request = 0; - break; - } + switch (reg[0] & 0x07) + { + case 0x00: + chr01 = (byte)(data & 0xFE); + SetBank_PPU(); + break; + case 0x01: + chr23 = (byte)(data & 0xFE); + SetBank_PPU(); + break; + case 0x02: + chr4 = data; + SetBank_PPU(); + break; + case 0x03: + chr5 = data; + SetBank_PPU(); + break; + case 0x04: + chr6 = data; + SetBank_PPU(); + break; + case 0x05: + chr7 = data; + SetBank_PPU(); + break; + case 0x06: + prg0 = data; + SetBank_CPU(); + break; + case 0x07: + prg1 = data; + SetBank_CPU(); + break; + } + break; + case 0xA000: + reg[2] = data; + if (!nes.rom.Is4SCREEN()) + { + if ((data & 0x01) != 0) SetVRAM_Mirror(VRAM_HMIRROR); + else SetVRAM_Mirror(VRAM_VMIRROR); + } + break; + case 0xA001: + reg[3] = data; + break; + case 0xC000: + reg[4] = data; + irq_counter = data; + irq_request = 0; + break; + case 0xC001: + reg[5] = data; + irq_latch = data; + irq_request = 0; + break; + case 0xE000: + reg[6] = data; + irq_enable = 0; + irq_request = 0; + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; + case 0xE001: + reg[7] = data; + irq_enable = 1; + irq_request = 0; + break; + } - } + } - //void Mapper074::HSync(INT scanline) - public override void HSync(int scanline) - { - if ((scanline >= 0 && scanline <= 239)) - { - if (nes.ppu.IsDispON()) - { - if (irq_enable != 0 && irq_request == 0) - { - if (scanline == 0) - { - if (irq_counter != 0) - { - irq_counter--; - } - } - if ((irq_counter--) == 0) - { - irq_request = 0xFF; - irq_counter = irq_latch; - nes.cpu.SetIRQ(IRQ_MAPPER); - } - } - } - } - } + //void Mapper074::HSync(INT scanline) + public override void HSync(int scanline) + { + if ((scanline >= 0 && scanline <= 239)) + { + if (nes.ppu.IsDispON()) + { + if (irq_enable != 0 && irq_request == 0) + { + if (scanline == 0) + { + if (irq_counter != 0) + { + irq_counter--; + } + } + if ((irq_counter--) == 0) + { + irq_request = 0xFF; + irq_counter = irq_latch; + nes.cpu.SetIRQ(IRQ_MAPPER); + } + } + } + } + } - void SetBank_CPU() - { - if ((reg[0] & 0x40) != 0) - { - SetPROM_32K_Bank(PROM_8K_SIZE - 2, prg1, prg0, PROM_8K_SIZE - 1); - } - else - { - SetPROM_32K_Bank(prg0, prg1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - } - } + void SetBank_CPU() + { + if ((reg[0] & 0x40) != 0) + { + SetPROM_32K_Bank(PROM_8K_SIZE - 2, prg1, prg0, PROM_8K_SIZE - 1); + } + else + { + SetPROM_32K_Bank(prg0, prg1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + } + } - void SetBank_PPU() - { - if (VROM_1K_SIZE != 0) - { - if ((reg[0] & 0x80) != 0) - { - // SetVROM_8K_Bank( chr4, chr5, chr6, chr7, - // chr01, chr01+1, chr23, chr23+1 ); - SetBank_PPUSUB(4, chr01 + 0); - SetBank_PPUSUB(5, chr01 + 1); - SetBank_PPUSUB(6, chr23 + 0); - SetBank_PPUSUB(7, chr23 + 1); - SetBank_PPUSUB(0, chr4); - SetBank_PPUSUB(1, chr5); - SetBank_PPUSUB(2, chr6); - SetBank_PPUSUB(3, chr7); - } - else - { - // SetVROM_8K_Bank( chr01, chr01+1, chr23, chr23+1, - // chr4, chr5, chr6, chr7 ); - SetBank_PPUSUB(0, chr01 + 0); - SetBank_PPUSUB(1, chr01 + 1); - SetBank_PPUSUB(2, chr23 + 0); - SetBank_PPUSUB(3, chr23 + 1); - SetBank_PPUSUB(4, chr4); - SetBank_PPUSUB(5, chr5); - SetBank_PPUSUB(6, chr6); - SetBank_PPUSUB(7, chr7); - } - } - else - { - if ((reg[0] & 0x80) != 0) - { - SetCRAM_1K_Bank(4, (chr01 + 0) & 0x07); - SetCRAM_1K_Bank(5, (chr01 + 1) & 0x07); - SetCRAM_1K_Bank(6, (chr23 + 0) & 0x07); - SetCRAM_1K_Bank(7, (chr23 + 1) & 0x07); - SetCRAM_1K_Bank(0, chr4 & 0x07); - SetCRAM_1K_Bank(1, chr5 & 0x07); - SetCRAM_1K_Bank(2, chr6 & 0x07); - SetCRAM_1K_Bank(3, chr7 & 0x07); - } - else - { - SetCRAM_1K_Bank(0, (chr01 + 0) & 0x07); - SetCRAM_1K_Bank(1, (chr01 + 1) & 0x07); - SetCRAM_1K_Bank(2, (chr23 + 0) & 0x07); - SetCRAM_1K_Bank(3, (chr23 + 1) & 0x07); - SetCRAM_1K_Bank(4, chr4 & 0x07); - SetCRAM_1K_Bank(5, chr5 & 0x07); - SetCRAM_1K_Bank(6, chr6 & 0x07); - SetCRAM_1K_Bank(7, chr7 & 0x07); - } - } - } + void SetBank_PPU() + { + if (VROM_1K_SIZE != 0) + { + if ((reg[0] & 0x80) != 0) + { + // SetVROM_8K_Bank( chr4, chr5, chr6, chr7, + // chr01, chr01+1, chr23, chr23+1 ); + SetBank_PPUSUB(4, chr01 + 0); + SetBank_PPUSUB(5, chr01 + 1); + SetBank_PPUSUB(6, chr23 + 0); + SetBank_PPUSUB(7, chr23 + 1); + SetBank_PPUSUB(0, chr4); + SetBank_PPUSUB(1, chr5); + SetBank_PPUSUB(2, chr6); + SetBank_PPUSUB(3, chr7); + } + else + { + // SetVROM_8K_Bank( chr01, chr01+1, chr23, chr23+1, + // chr4, chr5, chr6, chr7 ); + SetBank_PPUSUB(0, chr01 + 0); + SetBank_PPUSUB(1, chr01 + 1); + SetBank_PPUSUB(2, chr23 + 0); + SetBank_PPUSUB(3, chr23 + 1); + SetBank_PPUSUB(4, chr4); + SetBank_PPUSUB(5, chr5); + SetBank_PPUSUB(6, chr6); + SetBank_PPUSUB(7, chr7); + } + } + else + { + if ((reg[0] & 0x80) != 0) + { + SetCRAM_1K_Bank(4, (chr01 + 0) & 0x07); + SetCRAM_1K_Bank(5, (chr01 + 1) & 0x07); + SetCRAM_1K_Bank(6, (chr23 + 0) & 0x07); + SetCRAM_1K_Bank(7, (chr23 + 1) & 0x07); + SetCRAM_1K_Bank(0, chr4 & 0x07); + SetCRAM_1K_Bank(1, chr5 & 0x07); + SetCRAM_1K_Bank(2, chr6 & 0x07); + SetCRAM_1K_Bank(3, chr7 & 0x07); + } + else + { + SetCRAM_1K_Bank(0, (chr01 + 0) & 0x07); + SetCRAM_1K_Bank(1, (chr01 + 1) & 0x07); + SetCRAM_1K_Bank(2, (chr23 + 0) & 0x07); + SetCRAM_1K_Bank(3, (chr23 + 1) & 0x07); + SetCRAM_1K_Bank(4, chr4 & 0x07); + SetCRAM_1K_Bank(5, chr5 & 0x07); + SetCRAM_1K_Bank(6, chr6 & 0x07); + SetCRAM_1K_Bank(7, chr7 & 0x07); + } + } + } - void SetBank_PPUSUB(int bank, int page) - { - if (patch == 0 && (page == 8 || page == 9)) - { - SetCRAM_1K_Bank((byte)bank, page & 7); - } - else if (patch == 1 && page >= 128) - { - SetCRAM_1K_Bank((byte)bank, page & 7); - } - else - { - SetVROM_1K_Bank((byte)bank, page); - } - } + void SetBank_PPUSUB(int bank, int page) + { + if (patch == 0 && (page == 8 || page == 9)) + { + SetCRAM_1K_Bank((byte)bank, page & 7); + } + else if (patch == 1 && page >= 128) + { + SetCRAM_1K_Bank((byte)bank, page & 7); + } + else + { + SetVROM_1K_Bank((byte)bank, page); + } + } - //void Mapper074::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - for (INT i = 0; i < 8; i++) - { - p[i] = reg[i]; - } - p[8] = prg0; - p[9] = prg1; - p[10] = chr01; - p[11] = chr23; - p[12] = chr4; - p[13] = chr5; - p[14] = chr6; - p[15] = chr7; - p[16] = irq_enable; - p[17] = irq_counter; - p[18] = irq_latch; - p[19] = irq_request; - } + //void Mapper074::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + for (INT i = 0; i < 8; i++) + { + p[i] = reg[i]; + } + p[8] = prg0; + p[9] = prg1; + p[10] = chr01; + p[11] = chr23; + p[12] = chr4; + p[13] = chr5; + p[14] = chr6; + p[15] = chr7; + p[16] = irq_enable; + p[17] = irq_counter; + p[18] = irq_latch; + p[19] = irq_request; + } - //void Mapper074::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - for (INT i = 0; i < 8; i++) - { - reg[i] = p[i]; - } - prg0 = p[8]; - prg1 = p[9]; - chr01 = p[10]; - chr23 = p[11]; - chr4 = p[12]; - chr5 = p[13]; - chr6 = p[14]; - chr7 = p[15]; - irq_enable = p[16]; - irq_counter = p[17]; - irq_latch = p[18]; - irq_request = p[19]; - } + //void Mapper074::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + for (INT i = 0; i < 8; i++) + { + reg[i] = p[i]; + } + prg0 = p[8]; + prg1 = p[9]; + chr01 = p[10]; + chr23 = p[11]; + chr4 = p[12]; + chr5 = p[13]; + chr6 = p[14]; + chr7 = p[15]; + irq_enable = p[16]; + irq_counter = p[17]; + irq_latch = p[18]; + irq_request = p[19]; + } - public override bool IsStateSave() - { - return true; - } - } + public override bool IsStateSave() + { + return true; + } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper075.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper075.cs index b5f57ce8..b22bae7f 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper075.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper075.cs @@ -2,89 +2,86 @@ // Mapper075 Konami VRC1/Jaleco D65005 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper075 : Mapper - { - BYTE[] reg = new byte[2]; - public Mapper075(NES parent) : base(parent) - { - } + public class Mapper075 : Mapper + { + BYTE[] reg = new byte[2]; + public Mapper075(NES parent) : base(parent) + { + } - public override void Reset() + public override void Reset() - { - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + { + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - if (VROM_8K_SIZE != 0) - { - SetVROM_8K_Bank(0); - } - reg[0] = 0; - reg[1] = 1; - } + if (VROM_8K_SIZE != 0) + { + SetVROM_8K_Bank(0); + } + reg[0] = 0; + reg[1] = 1; + } - //void Mapper075::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - switch (addr & 0xF000) - { - case 0x8000: - SetPROM_8K_Bank(4, data); - break; + //void Mapper075::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + switch (addr & 0xF000) + { + case 0x8000: + SetPROM_8K_Bank(4, data); + break; - case 0x9000: - if ((data & 0x01) != 0) SetVRAM_Mirror(VRAM_HMIRROR); - else SetVRAM_Mirror(VRAM_VMIRROR); + case 0x9000: + if ((data & 0x01) != 0) SetVRAM_Mirror(VRAM_HMIRROR); + else SetVRAM_Mirror(VRAM_VMIRROR); - reg[0] = (byte)((reg[0] & 0x0F) | ((data & 0x02) << 3)); - reg[1] = (byte)((reg[1] & 0x0F) | ((data & 0x04) << 2)); - SetVROM_4K_Bank(0, reg[0]); - SetVROM_4K_Bank(4, reg[1]); - break; + reg[0] = (byte)((reg[0] & 0x0F) | ((data & 0x02) << 3)); + reg[1] = (byte)((reg[1] & 0x0F) | ((data & 0x04) << 2)); + SetVROM_4K_Bank(0, reg[0]); + SetVROM_4K_Bank(4, reg[1]); + break; - case 0xA000: - SetPROM_8K_Bank(5, data); - break; - case 0xC000: - SetPROM_8K_Bank(6, data); - break; + case 0xA000: + SetPROM_8K_Bank(5, data); + break; + case 0xC000: + SetPROM_8K_Bank(6, data); + break; - case 0xE000: - reg[0] = (byte)((reg[0] & 0x10) | (data & 0x0F)); - SetVROM_4K_Bank(0, reg[0]); - break; + case 0xE000: + reg[0] = (byte)((reg[0] & 0x10) | (data & 0x0F)); + SetVROM_4K_Bank(0, reg[0]); + break; - case 0xF000: - reg[1] = (byte)((reg[1] & 0x10) | (data & 0x0F)); - SetVROM_4K_Bank(4, reg[1]); - break; - } - } + case 0xF000: + reg[1] = (byte)((reg[1] & 0x10) | (data & 0x0F)); + SetVROM_4K_Bank(4, reg[1]); + break; + } + } - //void Mapper075::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - p[0] = reg[0]; - p[1] = reg[1]; - } + //void Mapper075::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + p[0] = reg[0]; + p[1] = reg[1]; + } - //void Mapper075::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - reg[0] = p[0]; - reg[1] = p[1]; - } + //void Mapper075::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + reg[0] = p[0]; + reg[1] = p[1]; + } - public override bool IsStateSave() - { - return true; - } - } + public override bool IsStateSave() + { + return true; + } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper076.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper076.cs index d6548352..0ae16ffa 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper076.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper076.cs @@ -2,81 +2,78 @@ // Mapper076 Namcot 109 (女神転生) // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper076 : Mapper - { - BYTE reg; - public Mapper076(NES parent) : base(parent) - { - } + public class Mapper076 : Mapper + { + BYTE reg; + public Mapper076(NES parent) : base(parent) + { + } - public override void Reset() - { - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + public override void Reset() + { + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - if (VROM_1K_SIZE >= 8) - { - SetVROM_8K_Bank(0); - } - } + if (VROM_1K_SIZE >= 8) + { + SetVROM_8K_Bank(0); + } + } - //void Mapper076::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - switch (addr) - { - case 0x8000: - reg = data; - break; - case 0x8001: - switch (reg & 0x07) - { - case 2: - SetVROM_2K_Bank(0, data); - break; - case 3: - SetVROM_2K_Bank(2, data); - break; - case 4: - SetVROM_2K_Bank(4, data); - break; - case 5: - SetVROM_2K_Bank(6, data); - break; - case 6: - SetPROM_8K_Bank(4, data); - break; - case 7: - SetPROM_8K_Bank(5, data); - break; - } - break; - } - } + //void Mapper076::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + switch (addr) + { + case 0x8000: + reg = data; + break; + case 0x8001: + switch (reg & 0x07) + { + case 2: + SetVROM_2K_Bank(0, data); + break; + case 3: + SetVROM_2K_Bank(2, data); + break; + case 4: + SetVROM_2K_Bank(4, data); + break; + case 5: + SetVROM_2K_Bank(6, data); + break; + case 6: + SetPROM_8K_Bank(4, data); + break; + case 7: + SetPROM_8K_Bank(5, data); + break; + } + break; + } + } - //void Mapper076::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - p[0] = reg; - } + //void Mapper076::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + p[0] = reg; + } - //void Mapper076::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - reg = p[0]; - } + //void Mapper076::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + reg = p[0]; + } - public override bool IsStateSave() - { - return true; - } - } + public override bool IsStateSave() + { + return true; + } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper077.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper077.cs index 017025fb..a69be801 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper077.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper077.cs @@ -2,38 +2,34 @@ // Mapper077 Irem Early Mapper #0 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper077 : Mapper - { - public Mapper077(NES parent) : base(parent) - { - } + public class Mapper077 : Mapper + { + public Mapper077(NES parent) : base(parent) + { + } - public override void Reset() - { - SetPROM_32K_Bank(0); + public override void Reset() + { + SetPROM_32K_Bank(0); - SetVROM_2K_Bank(0, 0); - SetCRAM_2K_Bank(2, 1); - SetCRAM_2K_Bank(4, 2); - SetCRAM_2K_Bank(6, 3); - } + SetVROM_2K_Bank(0, 0); + SetCRAM_2K_Bank(2, 1); + SetCRAM_2K_Bank(4, 2); + SetCRAM_2K_Bank(6, 3); + } - //void Mapper077::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - SetPROM_32K_Bank(data & 0x07); + //void Mapper077::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + SetPROM_32K_Bank(data & 0x07); - SetVROM_2K_Bank(0, (data & 0xF0) >> 4); - } + SetVROM_2K_Bank(0, (data & 0xF0) >> 4); + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper078.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper078.cs index 2fbd0ba3..825297cd 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper078.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper078.cs @@ -2,44 +2,40 @@ // Mapper078 Jaleco(Cosmo Carrier) // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper078 : Mapper - { - public Mapper078(NES parent) : base(parent) - { - } + public class Mapper078 : Mapper + { + public Mapper078(NES parent) : base(parent) + { + } - public override void Reset() - { - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + public override void Reset() + { + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - if (VROM_8K_SIZE != 0) - { - SetVROM_8K_Bank(0); - } - } + if (VROM_8K_SIZE != 0) + { + SetVROM_8K_Bank(0); + } + } - //void Mapper078::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - //DEBUGOUT( "MAP78 WR $%04X=$%02X L=%d\n", addr, data, nes->GetScanline() ); - SetPROM_16K_Bank(4, data & 0x0F); - SetVROM_8K_Bank((data & 0xF0) >> 4); + //void Mapper078::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + //DEBUGOUT( "MAP78 WR $%04X=$%02X L=%d\n", addr, data, nes->GetScanline() ); + SetPROM_16K_Bank(4, data & 0x0F); + SetVROM_8K_Bank((data & 0xF0) >> 4); - if ((addr & 0xFE00) != 0xFE00) - { - if ((data & 0x08) != 0) SetVRAM_Mirror(VRAM_MIRROR4H); - else SetVRAM_Mirror(VRAM_MIRROR4L); - } - } + if ((addr & 0xFE00) != 0xFE00) + { + if ((data & 0x08) != 0) SetVRAM_Mirror(VRAM_MIRROR4H); + else SetVRAM_Mirror(VRAM_MIRROR4L); + } + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper079.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper079.cs index f4db416c..f0be2680 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper079.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper079.cs @@ -2,40 +2,36 @@ // Mapper079 Nina-3 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper079 : Mapper - { - public Mapper079(NES parent) : base(parent) - { - } + public class Mapper079 : Mapper + { + public Mapper079(NES parent) : base(parent) + { + } - public override void Reset() - { - SetPROM_32K_Bank(0); + public override void Reset() + { + SetPROM_32K_Bank(0); - if (VROM_1K_SIZE != 0) - { - SetVROM_8K_Bank(0); - } - } + if (VROM_1K_SIZE != 0) + { + SetVROM_8K_Bank(0); + } + } - //void Mapper079::WriteLow(WORD addr, BYTE data) - public override void WriteLow(ushort addr, byte data) - { - if ((addr & 0x0100) != 0) - { - SetPROM_32K_Bank((data >> 3) & 0x01); - SetVROM_8K_Bank(data & 0x07); - } - } + //void Mapper079::WriteLow(WORD addr, BYTE data) + public override void WriteLow(ushort addr, byte data) + { + if ((addr & 0x0100) != 0) + { + SetPROM_32K_Bank((data >> 3) & 0x01); + SetVROM_8K_Bank(data & 0x07); + } + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper080.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper080.cs index 9e1fd76d..bfd6263c 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper080.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper080.cs @@ -2,105 +2,101 @@ // Mapper080 Taito X1-005 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper080 : Mapper - { - public Mapper080(NES parent) : base(parent) - { - } + public class Mapper080 : Mapper + { + public Mapper080(NES parent) : base(parent) + { + } - public override void Reset() - { - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + public override void Reset() + { + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - if (VROM_8K_SIZE != 0) - { - SetVROM_8K_Bank(0); - } - } + if (VROM_8K_SIZE != 0) + { + SetVROM_8K_Bank(0); + } + } - //void Mapper080::WriteLow(WORD addr, BYTE data) - public override void WriteLow(ushort addr, byte data) - { - switch (addr) - { - case 0x7EF0: - SetVROM_2K_Bank(0, (data >> 1) & 0x3F); - if (PROM_8K_SIZE == 32) - { - if ((data & 0x80) != 0) - { - SetVRAM_1K_Bank(8, 1); - SetVRAM_1K_Bank(9, 1); - } - else - { - SetVRAM_1K_Bank(8, 0); - SetVRAM_1K_Bank(9, 0); - } - } - break; + //void Mapper080::WriteLow(WORD addr, BYTE data) + public override void WriteLow(ushort addr, byte data) + { + switch (addr) + { + case 0x7EF0: + SetVROM_2K_Bank(0, (data >> 1) & 0x3F); + if (PROM_8K_SIZE == 32) + { + if ((data & 0x80) != 0) + { + SetVRAM_1K_Bank(8, 1); + SetVRAM_1K_Bank(9, 1); + } + else + { + SetVRAM_1K_Bank(8, 0); + SetVRAM_1K_Bank(9, 0); + } + } + break; - case 0x7EF1: - SetVROM_2K_Bank(2, (data >> 1) & 0x3F); - if (PROM_8K_SIZE == 32) - { - if ((data & 0x80) != 0) - { - SetVRAM_1K_Bank(10, 1); - SetVRAM_1K_Bank(11, 1); - } - else - { - SetVRAM_1K_Bank(10, 0); - SetVRAM_1K_Bank(11, 0); - } - } - break; + case 0x7EF1: + SetVROM_2K_Bank(2, (data >> 1) & 0x3F); + if (PROM_8K_SIZE == 32) + { + if ((data & 0x80) != 0) + { + SetVRAM_1K_Bank(10, 1); + SetVRAM_1K_Bank(11, 1); + } + else + { + SetVRAM_1K_Bank(10, 0); + SetVRAM_1K_Bank(11, 0); + } + } + break; - case 0x7EF2: - SetVROM_1K_Bank(4, data); - break; - case 0x7EF3: - SetVROM_1K_Bank(5, data); - break; - case 0x7EF4: - SetVROM_1K_Bank(6, data); - break; - case 0x7EF5: - SetVROM_1K_Bank(7, data); - break; + case 0x7EF2: + SetVROM_1K_Bank(4, data); + break; + case 0x7EF3: + SetVROM_1K_Bank(5, data); + break; + case 0x7EF4: + SetVROM_1K_Bank(6, data); + break; + case 0x7EF5: + SetVROM_1K_Bank(7, data); + break; - case 0x7EF6: - if ((data & 0x01) != 0) SetVRAM_Mirror(VRAM_VMIRROR); - else SetVRAM_Mirror(VRAM_HMIRROR); - break; + case 0x7EF6: + if ((data & 0x01) != 0) SetVRAM_Mirror(VRAM_VMIRROR); + else SetVRAM_Mirror(VRAM_HMIRROR); + break; - case 0x7EFA: - case 0x7EFB: - SetPROM_8K_Bank(4, data); - break; - case 0x7EFC: - case 0x7EFD: - SetPROM_8K_Bank(5, data); - break; - case 0x7EFE: - case 0x7EFF: - SetPROM_8K_Bank(6, data); - break; - default: - base.WriteLow(addr, data); - break; - } - } + case 0x7EFA: + case 0x7EFB: + SetPROM_8K_Bank(4, data); + break; + case 0x7EFC: + case 0x7EFD: + SetPROM_8K_Bank(5, data); + break; + case 0x7EFE: + case 0x7EFF: + SetPROM_8K_Bank(6, data); + break; + default: + base.WriteLow(addr, data); + break; + } + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper082.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper082.cs index 43266b38..5f563d49 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper082.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper082.cs @@ -2,118 +2,115 @@ // Mapper082 Taito C075 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { public class Mapper082 : Mapper - { - BYTE reg; + { + BYTE reg; - public Mapper082(NES parent) : base(parent) + public Mapper082(NES parent) : base(parent) { } public override void Reset() - { - reg = 0; + { + reg = 0; - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - if (VROM_8K_SIZE!=0) - { - SetVROM_8K_Bank(0); - } + if (VROM_8K_SIZE != 0) + { + SetVROM_8K_Bank(0); + } - SetVRAM_Mirror(VRAM_VMIRROR); - } + SetVRAM_Mirror(VRAM_VMIRROR); + } - //void Mapper082::WriteLow(WORD addr, BYTE data) - public override void WriteLow(ushort addr, byte data) - { - switch (addr) - { - case 0x7EF0: - if (reg!=0) - { - SetVROM_2K_Bank(4, data >> 1); - } - else - { - SetVROM_2K_Bank(0, data >> 1); - } - break; + //void Mapper082::WriteLow(WORD addr, BYTE data) + public override void WriteLow(ushort addr, byte data) + { + switch (addr) + { + case 0x7EF0: + if (reg != 0) + { + SetVROM_2K_Bank(4, data >> 1); + } + else + { + SetVROM_2K_Bank(0, data >> 1); + } + break; - case 0x7EF1: - if (reg!=0) - { - SetVROM_2K_Bank(6, data >> 1); - } - else - { - SetVROM_2K_Bank(2, data >> 1); - } - break; + case 0x7EF1: + if (reg != 0) + { + SetVROM_2K_Bank(6, data >> 1); + } + else + { + SetVROM_2K_Bank(2, data >> 1); + } + break; - case 0x7EF2: - if (reg!=0) SetVROM_1K_Bank(0, data); - else SetVROM_1K_Bank(4, data); - break; - case 0x7EF3: - if (reg!=0) SetVROM_1K_Bank(1, data); - else SetVROM_1K_Bank(5, data); - break; - case 0x7EF4: - if (reg!=0) SetVROM_1K_Bank(2, data); - else SetVROM_1K_Bank(6, data); - break; - case 0x7EF5: - if (reg!=0) SetVROM_1K_Bank(3, data); - else SetVROM_1K_Bank(7, data); - break; + case 0x7EF2: + if (reg != 0) SetVROM_1K_Bank(0, data); + else SetVROM_1K_Bank(4, data); + break; + case 0x7EF3: + if (reg != 0) SetVROM_1K_Bank(1, data); + else SetVROM_1K_Bank(5, data); + break; + case 0x7EF4: + if (reg != 0) SetVROM_1K_Bank(2, data); + else SetVROM_1K_Bank(6, data); + break; + case 0x7EF5: + if (reg != 0) SetVROM_1K_Bank(3, data); + else SetVROM_1K_Bank(7, data); + break; - case 0x7EF6: - reg = (byte)(data & 0x02); - if ((data & 0x01)!=0) SetVRAM_Mirror(VRAM_VMIRROR); - else SetVRAM_Mirror(VRAM_HMIRROR); - break; + case 0x7EF6: + reg = (byte)(data & 0x02); + if ((data & 0x01) != 0) SetVRAM_Mirror(VRAM_VMIRROR); + else SetVRAM_Mirror(VRAM_HMIRROR); + break; - case 0x7EFA: - SetPROM_8K_Bank(4, data >> 2); - break; - case 0x7EFB: - SetPROM_8K_Bank(5, data >> 2); - break; - case 0x7EFC: - SetPROM_8K_Bank(6, data >> 2); - break; - default: - base.WriteLow(addr, data); - break; - } - } + case 0x7EFA: + SetPROM_8K_Bank(4, data >> 2); + break; + case 0x7EFB: + SetPROM_8K_Bank(5, data >> 2); + break; + case 0x7EFC: + SetPROM_8K_Bank(6, data >> 2); + break; + default: + base.WriteLow(addr, data); + break; + } + } - //void Mapper082::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - p[0] = reg; - } + //void Mapper082::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + p[0] = reg; + } - //void Mapper082::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - reg = p[0]; - } + //void Mapper082::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + reg = p[0]; + } - public override bool IsStateSave() - { - return true; - } + public override bool IsStateSave() + { + return true; + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper083.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper083.cs index c6b30776..63f59e4f 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper083.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper083.cs @@ -1,243 +1,242 @@ ///////////////////////////// // Mapper083 Cony // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { - public class Mapper083 : Mapper - { - BYTE[] reg = new byte[3]; - INT chr_bank; - BYTE irq_enable; - INT irq_counter; + public class Mapper083 : Mapper + { + BYTE[] reg = new byte[3]; + INT chr_bank; + BYTE irq_enable; + INT irq_counter; - BYTE patch; - public Mapper083(NES parent) : base(parent) - { - } + BYTE patch; + public Mapper083(NES parent) : base(parent) + { + } - public override void Reset() + public override void Reset() - { - for (INT i = 0; i < 3; i++) - { - reg[i] = 0x00; - } + { + for (INT i = 0; i < 3; i++) + { + reg[i] = 0x00; + } - if (PROM_8K_SIZE >= 32) - { - SetPROM_32K_Bank(0, 1, 30, 31); - reg[1] = 0x30; - } - else - { - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - } + if (PROM_8K_SIZE >= 32) + { + SetPROM_32K_Bank(0, 1, 30, 31); + reg[1] = 0x30; + } + else + { + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + } - if (VROM_1K_SIZE != 0) - { - SetVROM_8K_Bank(0); - } + if (VROM_1K_SIZE != 0) + { + SetVROM_8K_Bank(0); + } - chr_bank = 0; + chr_bank = 0; - irq_enable = 0; // Disable - irq_counter = 0; + irq_enable = 0; // Disable + irq_counter = 0; - patch = 0; - if (nes.rom.GetPROM_CRC() == 0x1461D1F8) - { - patch = 1; - } - } + patch = 0; + if (nes.rom.GetPROM_CRC() == 0x1461D1F8) + { + patch = 1; + } + } - //BYTE Mapper083::ReadLow(WORD addr) - public override byte ReadLow(ushort addr) - { - if ((addr & 0x5100) == 0x5100) - { - return reg[2]; - } - else if (addr >= 0x6000) - { - return base.ReadLow(addr); - } - return (BYTE)(addr >> 8); - } + //BYTE Mapper083::ReadLow(WORD addr) + public override byte ReadLow(ushort addr) + { + if ((addr & 0x5100) == 0x5100) + { + return reg[2]; + } + else if (addr >= 0x6000) + { + return base.ReadLow(addr); + } + return (BYTE)(addr >> 8); + } - //void Mapper083::WriteLow(WORD addr, BYTE data) - public override void WriteLow(ushort addr, byte data) - { - //DEBUGOUT( "MPRWR A=%04X D=%02X L=%3d CYC=%d\n", addr&0xFFFF, data&0xFF, nes.GetScanline(), nes.cpu.GetTotalCycles() ); - switch (addr) - { - case 0x5101: - case 0x5102: - case 0x5103: - reg[2] = data; - break; - } + //void Mapper083::WriteLow(WORD addr, BYTE data) + public override void WriteLow(ushort addr, byte data) + { + //DEBUGOUT( "MPRWR A=%04X D=%02X L=%3d CYC=%d\n", addr&0xFFFF, data&0xFF, nes.GetScanline(), nes.cpu.GetTotalCycles() ); + switch (addr) + { + case 0x5101: + case 0x5102: + case 0x5103: + reg[2] = data; + break; + } - if (addr >= 0x6000) - { - base.WriteLow(addr, data); - } - } + if (addr >= 0x6000) + { + base.WriteLow(addr, data); + } + } - //void Mapper083::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - //DEBUGOUT( "MPRWR A=%04X D=%02X L=%3d CYC=%d\n", addr&0xFFFF, data&0xFF, nes.GetScanline(), nes.cpu.GetTotalCycles() ); - switch (addr) - { - case 0x8000: - case 0xB000: - case 0xB0FF: - case 0xB1FF: - reg[0] = data; - chr_bank = (data & 0x30) << 4; - SetPROM_16K_Bank(4, data); - SetPROM_16K_Bank(6, (data & 0x30) | 0x0F); - break; + //void Mapper083::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + //DEBUGOUT( "MPRWR A=%04X D=%02X L=%3d CYC=%d\n", addr&0xFFFF, data&0xFF, nes.GetScanline(), nes.cpu.GetTotalCycles() ); + switch (addr) + { + case 0x8000: + case 0xB000: + case 0xB0FF: + case 0xB1FF: + reg[0] = data; + chr_bank = (data & 0x30) << 4; + SetPROM_16K_Bank(4, data); + SetPROM_16K_Bank(6, (data & 0x30) | 0x0F); + break; - case 0x8100: - reg[1] = (byte)(data & 0x80); - data &= 0x03; - if (data == 0) SetVRAM_Mirror(VRAM_VMIRROR); - else if (data == 1) SetVRAM_Mirror(VRAM_HMIRROR); - else if (data == 2) SetVRAM_Mirror(VRAM_MIRROR4L); - else SetVRAM_Mirror(VRAM_MIRROR4H); - break; + case 0x8100: + reg[1] = (byte)(data & 0x80); + data &= 0x03; + if (data == 0) SetVRAM_Mirror(VRAM_VMIRROR); + else if (data == 1) SetVRAM_Mirror(VRAM_HMIRROR); + else if (data == 2) SetVRAM_Mirror(VRAM_MIRROR4L); + else SetVRAM_Mirror(VRAM_MIRROR4H); + break; - case 0x8200: - irq_counter = (irq_counter & 0xFF00) | (INT)data; - // nes.cpu.ClrIRQ( IRQ_MAPPER ); - break; - case 0x8201: - irq_counter = (irq_counter & 0x00FF) | ((INT)data << 8); - irq_enable = reg[1]; - // nes.cpu.ClrIRQ( IRQ_MAPPER ); - break; + case 0x8200: + irq_counter = (irq_counter & 0xFF00) | (INT)data; + // nes.cpu.ClrIRQ( IRQ_MAPPER ); + break; + case 0x8201: + irq_counter = (irq_counter & 0x00FF) | ((INT)data << 8); + irq_enable = reg[1]; + // nes.cpu.ClrIRQ( IRQ_MAPPER ); + break; - case 0x8300: - SetPROM_8K_Bank(4, data); - break; - case 0x8301: - SetPROM_8K_Bank(5, data); - break; - case 0x8302: - SetPROM_8K_Bank(6, data); - break; + case 0x8300: + SetPROM_8K_Bank(4, data); + break; + case 0x8301: + SetPROM_8K_Bank(5, data); + break; + case 0x8302: + SetPROM_8K_Bank(6, data); + break; - case 0x8310: - if (patch != 0) - { - SetVROM_2K_Bank(0, chr_bank | data); - } - else - { - SetVROM_1K_Bank(0, chr_bank | data); - } - break; - case 0x8311: - if (patch != 0) - { - SetVROM_2K_Bank(2, chr_bank | data); - } - else - { - SetVROM_1K_Bank(1, chr_bank | data); - } - break; - case 0x8312: - SetVROM_1K_Bank(2, chr_bank | data); - break; - case 0x8313: - SetVROM_1K_Bank(3, chr_bank | data); - break; - case 0x8314: - SetVROM_1K_Bank(4, chr_bank | data); - break; - case 0x8315: - SetVROM_1K_Bank(5, chr_bank | data); - break; - case 0x8316: - if (patch != 0) - { - SetVROM_2K_Bank(4, chr_bank | data); - } - else - { - SetVROM_1K_Bank(6, chr_bank | data); - } - break; - case 0x8317: - if (patch != 0) - { - SetVROM_2K_Bank(6, chr_bank | data); - } - else - { - SetVROM_1K_Bank(7, chr_bank | data); - } - break; + case 0x8310: + if (patch != 0) + { + SetVROM_2K_Bank(0, chr_bank | data); + } + else + { + SetVROM_1K_Bank(0, chr_bank | data); + } + break; + case 0x8311: + if (patch != 0) + { + SetVROM_2K_Bank(2, chr_bank | data); + } + else + { + SetVROM_1K_Bank(1, chr_bank | data); + } + break; + case 0x8312: + SetVROM_1K_Bank(2, chr_bank | data); + break; + case 0x8313: + SetVROM_1K_Bank(3, chr_bank | data); + break; + case 0x8314: + SetVROM_1K_Bank(4, chr_bank | data); + break; + case 0x8315: + SetVROM_1K_Bank(5, chr_bank | data); + break; + case 0x8316: + if (patch != 0) + { + SetVROM_2K_Bank(4, chr_bank | data); + } + else + { + SetVROM_1K_Bank(6, chr_bank | data); + } + break; + case 0x8317: + if (patch != 0) + { + SetVROM_2K_Bank(6, chr_bank | data); + } + else + { + SetVROM_1K_Bank(7, chr_bank | data); + } + break; - case 0x8318: - SetPROM_16K_Bank(4, (reg[0] & 0x30) | data); - break; - } - } + case 0x8318: + SetPROM_16K_Bank(4, (reg[0] & 0x30) | data); + break; + } + } - //void Mapper083::HSync(INT scanline) - public override void HSync(int scanline) - { - if (irq_enable != 0) - { - if (irq_counter <= 113) - { - // nes.cpu.IRQ(); - irq_enable = 0; - // nes.cpu.SetIRQ( IRQ_MAPPER ); - nes.cpu.SetIRQ(IRQ_TRIGGER); - } - else - { - irq_counter -= 113; - } - } - } + //void Mapper083::HSync(INT scanline) + public override void HSync(int scanline) + { + if (irq_enable != 0) + { + if (irq_counter <= 113) + { + // nes.cpu.IRQ(); + irq_enable = 0; + // nes.cpu.SetIRQ( IRQ_MAPPER ); + nes.cpu.SetIRQ(IRQ_TRIGGER); + } + else + { + irq_counter -= 113; + } + } + } - //void Mapper083::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - //p[0] = reg[0]; - //p[1] = reg[1]; - //p[2] = reg[2]; - //*(INT*)&p[3] = chr_bank; - //p[7] = irq_enable; - //*(INT*)&p[8] = irq_counter; - } + //void Mapper083::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + //p[0] = reg[0]; + //p[1] = reg[1]; + //p[2] = reg[2]; + //*(INT*)&p[3] = chr_bank; + //p[7] = irq_enable; + //*(INT*)&p[8] = irq_counter; + } - //void Mapper083::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - //reg[0] = p[0]; - //reg[1] = p[1]; - //reg[2] = p[2]; - //chr_bank = *(INT*)&p[3]; - //irq_enable = p[7]; - //irq_counter = *(INT*)&p[8]; - } + //void Mapper083::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + //reg[0] = p[0]; + //reg[1] = p[1]; + //reg[2] = p[2]; + //chr_bank = *(INT*)&p[3]; + //irq_enable = p[7]; + //irq_counter = *(INT*)&p[8]; + } - public override bool IsStateSave() - { - return true; - } - } + public override bool IsStateSave() + { + return true; + } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper085.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper085.cs index b359ff0a..b3e6c41c 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper085.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper085.cs @@ -1,43 +1,42 @@ ////////////////////////////////////////////////////////////////////////// // Mapper085 Konami VRC7 // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { - public class Mapper085 : Mapper - { + public class Mapper085 : Mapper + { - BYTE irq_enable; - BYTE irq_counter; - BYTE irq_latch; - INT irq_clock; - public Mapper085(NES parent) : base(parent) - { - } + BYTE irq_enable; + BYTE irq_counter; + BYTE irq_latch; + INT irq_clock; + public Mapper085(NES parent) : base(parent) + { + } - public override void Reset() + public override void Reset() - { - irq_enable = 0; - irq_counter = 0; - irq_latch = 0; - irq_clock = 0; + { + irq_enable = 0; + irq_counter = 0; + irq_latch = 0; + irq_clock = 0; - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - if (VROM_1K_SIZE != 0) - { - SetVROM_8K_Bank(0); - } - else - { - SetCRAM_8K_Bank(0); - } + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + if (VROM_1K_SIZE != 0) + { + SetVROM_8K_Bank(0); + } + else + { + SetCRAM_8K_Bank(0); + } #if FALSE//0 // DWORD crc = nes.rom.GetPROM_CRC(); @@ -48,191 +47,191 @@ namespace VirtualNes.Core // nes.SetRenderMethod( NES::TILE_RENDER ); // } #endif - nes.apu.SelectExSound(2); - } + nes.apu.SelectExSound(2); + } - //void Mapper085::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - switch (addr & 0xF038) - { - case 0x8000: - SetPROM_8K_Bank(4, data); - break; - case 0x8008: - case 0x8010: - SetPROM_8K_Bank(5, data); - break; - case 0x9000: - SetPROM_8K_Bank(6, data); - break; + //void Mapper085::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + switch (addr & 0xF038) + { + case 0x8000: + SetPROM_8K_Bank(4, data); + break; + case 0x8008: + case 0x8010: + SetPROM_8K_Bank(5, data); + break; + case 0x9000: + SetPROM_8K_Bank(6, data); + break; - case 0x9010: - case 0x9030: - nes.apu.ExWrite(addr, data); - break; + case 0x9010: + case 0x9030: + nes.apu.ExWrite(addr, data); + break; - case 0xA000: - if (VROM_1K_SIZE != 0) - { - SetVROM_1K_Bank(0, data); - } - else - { - SetCRAM_1K_Bank(0, data); - } - break; + case 0xA000: + if (VROM_1K_SIZE != 0) + { + SetVROM_1K_Bank(0, data); + } + else + { + SetCRAM_1K_Bank(0, data); + } + break; - case 0xA008: - case 0xA010: - if (VROM_1K_SIZE != 0) - { - SetVROM_1K_Bank(1, data); - } - else - { - SetCRAM_1K_Bank(1, data); - } - break; + case 0xA008: + case 0xA010: + if (VROM_1K_SIZE != 0) + { + SetVROM_1K_Bank(1, data); + } + else + { + SetCRAM_1K_Bank(1, data); + } + break; - case 0xB000: - if (VROM_1K_SIZE != 0) - { - SetVROM_1K_Bank(2, data); - } - else - { - SetCRAM_1K_Bank(2, data); - } - break; + case 0xB000: + if (VROM_1K_SIZE != 0) + { + SetVROM_1K_Bank(2, data); + } + else + { + SetCRAM_1K_Bank(2, data); + } + break; - case 0xB008: - case 0xB010: - if (VROM_1K_SIZE != 0) - { - SetVROM_1K_Bank(3, data); - } - else - { - SetCRAM_1K_Bank(3, data); - } - break; + case 0xB008: + case 0xB010: + if (VROM_1K_SIZE != 0) + { + SetVROM_1K_Bank(3, data); + } + else + { + SetCRAM_1K_Bank(3, data); + } + break; - case 0xC000: - if (VROM_1K_SIZE != 0) - { - SetVROM_1K_Bank(4, data); - } - else - { - SetCRAM_1K_Bank(4, data); - } - break; + case 0xC000: + if (VROM_1K_SIZE != 0) + { + SetVROM_1K_Bank(4, data); + } + else + { + SetCRAM_1K_Bank(4, data); + } + break; - case 0xC008: - case 0xC010: - if (VROM_1K_SIZE != 0) - { - SetVROM_1K_Bank(5, data); - } - else - { - SetCRAM_1K_Bank(5, data); - } - break; + case 0xC008: + case 0xC010: + if (VROM_1K_SIZE != 0) + { + SetVROM_1K_Bank(5, data); + } + else + { + SetCRAM_1K_Bank(5, data); + } + break; - case 0xD000: - if (VROM_1K_SIZE != 0) - { - SetVROM_1K_Bank(6, data); - } - else - { - SetCRAM_1K_Bank(6, data); - } - break; + case 0xD000: + if (VROM_1K_SIZE != 0) + { + SetVROM_1K_Bank(6, data); + } + else + { + SetCRAM_1K_Bank(6, data); + } + break; - case 0xD008: - case 0xD010: - if (VROM_1K_SIZE != 0) - { - SetVROM_1K_Bank(7, data); - } - else - { - SetCRAM_1K_Bank(7, data); - } - break; + case 0xD008: + case 0xD010: + if (VROM_1K_SIZE != 0) + { + SetVROM_1K_Bank(7, data); + } + else + { + SetCRAM_1K_Bank(7, data); + } + break; - case 0xE000: - data &= 0x03; - if (data == 0) SetVRAM_Mirror(VRAM_VMIRROR); - else if (data == 1) SetVRAM_Mirror(VRAM_HMIRROR); - else if (data == 2) SetVRAM_Mirror(VRAM_MIRROR4L); - else SetVRAM_Mirror(VRAM_MIRROR4H); - break; + case 0xE000: + data &= 0x03; + if (data == 0) SetVRAM_Mirror(VRAM_VMIRROR); + else if (data == 1) SetVRAM_Mirror(VRAM_HMIRROR); + else if (data == 2) SetVRAM_Mirror(VRAM_MIRROR4L); + else SetVRAM_Mirror(VRAM_MIRROR4H); + break; - case 0xE008: - case 0xE010: - irq_latch = data; - break; + case 0xE008: + case 0xE010: + irq_latch = data; + break; - case 0xF000: - irq_enable = (byte)(data & 0x03); - irq_counter = irq_latch; - irq_clock = 0; - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; + case 0xF000: + irq_enable = (byte)(data & 0x03); + irq_counter = irq_latch; + irq_clock = 0; + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; - case 0xF008: - case 0xF010: - irq_enable = (byte)((irq_enable & 0x01) * 3); - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; - } - } + case 0xF008: + case 0xF010: + irq_enable = (byte)((irq_enable & 0x01) * 3); + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; + } + } - //void Mapper085::Clock(INT cycles) - public override void Clock(int cycles) - { - if ((irq_enable & 0x02) != 0) - { - irq_clock += cycles * 4; - while (irq_clock >= 455) - { - irq_clock -= 455; - irq_counter++; - if (irq_counter == 0) - { - irq_counter = irq_latch; - nes.cpu.SetIRQ(IRQ_MAPPER); - } - } - } - } + //void Mapper085::Clock(INT cycles) + public override void Clock(int cycles) + { + if ((irq_enable & 0x02) != 0) + { + irq_clock += cycles * 4; + while (irq_clock >= 455) + { + irq_clock -= 455; + irq_counter++; + if (irq_counter == 0) + { + irq_counter = irq_latch; + nes.cpu.SetIRQ(IRQ_MAPPER); + } + } + } + } - //void Mapper085::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - //p[0] = irq_enable; - //p[1] = irq_counter; - //p[2] = irq_latch; - //*((INT*)&p[4]) = irq_clock; - } + //void Mapper085::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + //p[0] = irq_enable; + //p[1] = irq_counter; + //p[2] = irq_latch; + //*((INT*)&p[4]) = irq_clock; + } - //void Mapper085::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - //irq_enable = p[0]; - //irq_counter = p[1]; - //irq_latch = p[2]; - //irq_clock = *((INT*)&p[4]); - } + //void Mapper085::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + //irq_enable = p[0]; + //irq_counter = p[1]; + //irq_latch = p[2]; + //irq_clock = *((INT*)&p[4]); + } - public override bool IsStateSave() - { - return true; - } + public override bool IsStateSave() + { + return true; + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper086.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper086.cs index 1452d920..694e2679 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper086.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper086.cs @@ -2,11 +2,8 @@ // Mapper086 Jaleco Early Mapper #2 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper087.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper087.cs index 71838e9c..c9d85ac7 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper087.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper087.cs @@ -2,35 +2,31 @@ // Mapper087 Konami 74161/32 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { public class Mapper087 : Mapper { - public Mapper087(NES parent) : base(parent) + public Mapper087(NES parent) : base(parent) { } public override void Reset() - { - SetPROM_32K_Bank(0, 1, 2, 3); - SetVROM_8K_Bank(0); - } + { + SetPROM_32K_Bank(0, 1, 2, 3); + SetVROM_8K_Bank(0); + } - //void Mapper087::WriteLow(WORD addr, BYTE data) - public override void WriteLow(ushort addr, byte data) - { - if (addr == 0x6000) - { - SetVROM_8K_Bank((data & 0x02) >> 1); - } - } + //void Mapper087::WriteLow(WORD addr, BYTE data) + public override void WriteLow(ushort addr, byte data) + { + if (addr == 0x6000) + { + SetVROM_8K_Bank((data & 0x02) >> 1); + } + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper088.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper088.cs index 8389c82e..b45c00af 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper088.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper088.cs @@ -1,107 +1,104 @@ using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper088 : Mapper - { - BYTE reg; - BYTE patch; - public Mapper088(NES parent) : base(parent) - { - } + public class Mapper088 : Mapper + { + BYTE reg; + BYTE patch; + public Mapper088(NES parent) : base(parent) + { + } - public override void Reset() + public override void Reset() - { - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + { + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - if (VROM_1K_SIZE >= 8) - { - SetVROM_8K_Bank(0); - } - patch = 0; + if (VROM_1K_SIZE >= 8) + { + SetVROM_8K_Bank(0); + } + patch = 0; - uint crc = nes.rom.GetPROM_CRC(); - if (crc == 0xc1b6b2a6) - { // Devil Man(J) - patch = 1; - nes.SetRenderMethod(EnumRenderMethod.POST_RENDER); - } - if (crc == 0xd9803a35) - { // Quinty(J) - nes.SetRenderMethod(EnumRenderMethod.POST_RENDER); - } - } + uint crc = nes.rom.GetPROM_CRC(); + if (crc == 0xc1b6b2a6) + { // Devil Man(J) + patch = 1; + nes.SetRenderMethod(EnumRenderMethod.POST_RENDER); + } + if (crc == 0xd9803a35) + { // Quinty(J) + nes.SetRenderMethod(EnumRenderMethod.POST_RENDER); + } + } - //void Mapper088::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - switch (addr) - { - case 0x8000: - reg = data; - if (patch != 0) - { - if ((data & 0x40) != 0) SetVRAM_Mirror(VRAM_MIRROR4H); - else SetVRAM_Mirror(VRAM_MIRROR4L); - } - break; - case 0x8001: - switch (reg & 0x07) - { - case 0: - SetVROM_2K_Bank(0, data >> 1); - break; - case 1: - SetVROM_2K_Bank(2, data >> 1); - break; - case 2: - SetVROM_1K_Bank(4, data + 0x40); - break; - case 3: - SetVROM_1K_Bank(5, data + 0x40); - break; - case 4: - SetVROM_1K_Bank(6, data + 0x40); - break; - case 5: - SetVROM_1K_Bank(7, data + 0x40); - break; - case 6: - SetPROM_8K_Bank(4, data); - break; - case 7: - SetPROM_8K_Bank(5, data); - break; - } - break; - case 0xC000: - if (data != 0) SetVRAM_Mirror(VRAM_MIRROR4H); - else SetVRAM_Mirror(VRAM_MIRROR4L); - break; - } - } + //void Mapper088::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + switch (addr) + { + case 0x8000: + reg = data; + if (patch != 0) + { + if ((data & 0x40) != 0) SetVRAM_Mirror(VRAM_MIRROR4H); + else SetVRAM_Mirror(VRAM_MIRROR4L); + } + break; + case 0x8001: + switch (reg & 0x07) + { + case 0: + SetVROM_2K_Bank(0, data >> 1); + break; + case 1: + SetVROM_2K_Bank(2, data >> 1); + break; + case 2: + SetVROM_1K_Bank(4, data + 0x40); + break; + case 3: + SetVROM_1K_Bank(5, data + 0x40); + break; + case 4: + SetVROM_1K_Bank(6, data + 0x40); + break; + case 5: + SetVROM_1K_Bank(7, data + 0x40); + break; + case 6: + SetPROM_8K_Bank(4, data); + break; + case 7: + SetPROM_8K_Bank(5, data); + break; + } + break; + case 0xC000: + if (data != 0) SetVRAM_Mirror(VRAM_MIRROR4H); + else SetVRAM_Mirror(VRAM_MIRROR4L); + break; + } + } - //void Mapper088::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - p[0] = reg; - } + //void Mapper088::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + p[0] = reg; + } - //void Mapper088::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - reg = p[0]; - } + //void Mapper088::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + reg = p[0]; + } - public override bool IsStateSave() - { - return true; - } - } + public override bool IsStateSave() + { + return true; + } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper089.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper089.cs index 880093cd..4af77b83 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper089.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper089.cs @@ -2,40 +2,36 @@ // Mapper089 SunSoft (水戸黄門) // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper089 : Mapper - { - public Mapper089(NES parent) : base(parent) - { - } + public class Mapper089 : Mapper + { + public Mapper089(NES parent) : base(parent) + { + } - public override void Reset() - { - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - SetVROM_8K_Bank(0); - } + public override void Reset() + { + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + SetVROM_8K_Bank(0); + } - //void Mapper089::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - if ((addr & 0xFF00) == 0xC000) - { - SetPROM_16K_Bank(4, (data & 0x70) >> 4); + //void Mapper089::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + if ((addr & 0xFF00) == 0xC000) + { + SetPROM_16K_Bank(4, (data & 0x70) >> 4); - SetVROM_8K_Bank(((data & 0x80) >> 4) | (data & 0x07)); + SetVROM_8K_Bank(((data & 0x80) >> 4) | (data & 0x07)); - if ((data & 0x08) != 0) SetVRAM_Mirror(VRAM_MIRROR4H); - else SetVRAM_Mirror(VRAM_MIRROR4L); - } - } + if ((data & 0x08) != 0) SetVRAM_Mirror(VRAM_MIRROR4H); + else SetVRAM_Mirror(VRAM_MIRROR4L); + } + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper090.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper090.cs index d6fd17d6..904f56e6 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper090.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper090.cs @@ -1,13 +1,11 @@ ////////////////////////////////////////////////////////////////////////// // Mapper090 PC-JY-?? // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; using VirtualNes.Core.Debug; +using static VirtualNes.Core.CPU; +using static VirtualNes.MMU; +using BYTE = System.Byte; +using INT = System.Int32; namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper091.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper091.cs index 3143f3de..f307104e 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper091.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper091.cs @@ -1,104 +1,102 @@ ////////////////////////////////////////////////////////////////////////// // Mapper091 PC-HK-SF3 // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper091 : Mapper - { - BYTE irq_enable; - BYTE irq_counter; - public Mapper091(NES parent) : base(parent) - { - } + public class Mapper091 : Mapper + { + BYTE irq_enable; + BYTE irq_counter; + public Mapper091(NES parent) : base(parent) + { + } - public override void Reset() - { - SetPROM_32K_Bank(PROM_8K_SIZE - 2, PROM_8K_SIZE - 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + public override void Reset() + { + SetPROM_32K_Bank(PROM_8K_SIZE - 2, PROM_8K_SIZE - 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - if (VROM_8K_SIZE != 0) - { - SetVROM_8K_Bank(0, 0, 0, 0, 0, 0, 0, 0); - } + if (VROM_8K_SIZE != 0) + { + SetVROM_8K_Bank(0, 0, 0, 0, 0, 0, 0, 0); + } - irq_enable = 0; - irq_counter = 0; + irq_enable = 0; + irq_counter = 0; - nes.SetRenderMethod(EnumRenderMethod.POST_ALL_RENDER); - } + nes.SetRenderMethod(EnumRenderMethod.POST_ALL_RENDER); + } - //void Mapper091::WriteLow(WORD addr, BYTE data) - public override void WriteLow(ushort addr, byte data) - { - //DEBUGOUT( "$%04X:$%02X(%3d) L=%3d\n", addr, data, data, nes.GetScanline() ); - switch (addr & 0xF003) - { - case 0x6000: - case 0x6001: - case 0x6002: - case 0x6003: - SetVROM_2K_Bank((byte)((addr & 0x03) * 2), data); - break; + //void Mapper091::WriteLow(WORD addr, BYTE data) + public override void WriteLow(ushort addr, byte data) + { + //DEBUGOUT( "$%04X:$%02X(%3d) L=%3d\n", addr, data, data, nes.GetScanline() ); + switch (addr & 0xF003) + { + case 0x6000: + case 0x6001: + case 0x6002: + case 0x6003: + SetVROM_2K_Bank((byte)((addr & 0x03) * 2), data); + break; - case 0x7000: - SetPROM_8K_Bank(4, data); - break; - case 0x7001: - SetPROM_8K_Bank(5, data); - break; + case 0x7000: + SetPROM_8K_Bank(4, data); + break; + case 0x7001: + SetPROM_8K_Bank(5, data); + break; - case 0x7002: - irq_enable = 0; - irq_counter = 0; - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; - case 0x7003: - irq_enable = 1; - break; - } - } + case 0x7002: + irq_enable = 0; + irq_counter = 0; + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; + case 0x7003: + irq_enable = 1; + break; + } + } - //void Mapper091::HSync(INT scanline) - public override void HSync(int scanline) - { - if ((scanline >= 0 && scanline < 240) && nes.ppu.IsDispON()) - { - if (irq_enable != 0) - { - irq_counter++; - } - if (irq_counter >= 8) - { - // nes.cpu.IRQ_NotPending(); - nes.cpu.SetIRQ(IRQ_MAPPER); - } - } - } + //void Mapper091::HSync(INT scanline) + public override void HSync(int scanline) + { + if ((scanline >= 0 && scanline < 240) && nes.ppu.IsDispON()) + { + if (irq_enable != 0) + { + irq_counter++; + } + if (irq_counter >= 8) + { + // nes.cpu.IRQ_NotPending(); + nes.cpu.SetIRQ(IRQ_MAPPER); + } + } + } - //void Mapper091::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - p[0] = irq_enable; - p[1] = irq_counter; - } + //void Mapper091::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + p[0] = irq_enable; + p[1] = irq_counter; + } - //void Mapper091::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - irq_enable = p[0]; - irq_counter = p[1]; - } + //void Mapper091::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + irq_enable = p[0]; + irq_counter = p[1]; + } - public override bool IsStateSave() - { - return true; - } - } + public override bool IsStateSave() + { + return true; + } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper092.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper092.cs index 37a908aa..89d244b4 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper092.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper092.cs @@ -1,13 +1,9 @@ ///////////////////////////////// // Mapper092 Jaleco/Type1 Higher bank switch // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; using VirtualNes.Core.Debug; +using static VirtualNes.MMU; +using INT = System.Int32; namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper093.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper093.cs index 944ef80e..3cef8265 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper093.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper093.cs @@ -2,37 +2,33 @@ // Mapper093 SunSoft (Fantasy Zone) // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper093 : Mapper - { - public Mapper093(NES parent) : base(parent) - { - } + public class Mapper093 : Mapper + { + public Mapper093(NES parent) : base(parent) + { + } - public override void Reset() - { - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - if (VROM_8K_SIZE != 0) - { - SetVROM_8K_Bank(0); - } - } + public override void Reset() + { + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + if (VROM_8K_SIZE != 0) + { + SetVROM_8K_Bank(0); + } + } - //void Mapper093::WriteLow(WORD addr, BYTE data) - public override void WriteLow(ushort addr, byte data) - { - if (addr == 0x6000) - { - SetPROM_16K_Bank(4, data); - } - } + //void Mapper093::WriteLow(WORD addr, BYTE data) + public override void WriteLow(ushort addr, byte data) + { + if (addr == 0x6000) + { + SetPROM_16K_Bank(4, data); + } + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper094.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper094.cs index cebd932a..e954b1da 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper094.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper094.cs @@ -2,34 +2,30 @@ // Mapper094 Capcom 74161/32 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper094 : Mapper - { - public Mapper094(NES parent) : base(parent) - { - } + public class Mapper094 : Mapper + { + public Mapper094(NES parent) : base(parent) + { + } - public override void Reset() - { - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - } + public override void Reset() + { + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + } - //void Mapper094::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - if ((addr & 0xFFF0) == 0xFF00) - { - SetPROM_16K_Bank(4, (data >> 2) & 0x7); - } - } + //void Mapper094::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + if ((addr & 0xFFF0) == 0xFF00) + { + SetPROM_16K_Bank(4, (data >> 2) & 0x7); + } + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper095.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper095.cs index 6a651665..c3fac907 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper095.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper095.cs @@ -2,185 +2,182 @@ // Mapper095 Namcot 106M (Dragon Buster) // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper095 : Mapper - { - BYTE reg; - BYTE prg0, prg1; - BYTE chr01, chr23, chr4, chr5, chr6, chr7; - public Mapper095(NES parent) : base(parent) - { - } + public class Mapper095 : Mapper + { + BYTE reg; + BYTE prg0, prg1; + BYTE chr01, chr23, chr4, chr5, chr6, chr7; + public Mapper095(NES parent) : base(parent) + { + } - public override void Reset() - { - reg = 0x00; - prg0 = 0; - prg1 = 1; - SetBank_CPU(); + public override void Reset() + { + reg = 0x00; + prg0 = 0; + prg1 = 1; + SetBank_CPU(); - if (VROM_1K_SIZE != 0) - { - chr01 = 0; - chr23 = 2; - chr4 = 4; - chr5 = 5; - chr6 = 6; - chr7 = 7; - } - else - { - chr01 = chr23 = chr4 = chr5 = chr6 = chr7 = 0; - } + if (VROM_1K_SIZE != 0) + { + chr01 = 0; + chr23 = 2; + chr4 = 4; + chr5 = 5; + chr6 = 6; + chr7 = 7; + } + else + { + chr01 = chr23 = chr4 = chr5 = chr6 = chr7 = 0; + } - SetBank_PPU(); + SetBank_PPU(); - nes.SetRenderMethod(EnumRenderMethod.POST_RENDER); - } + nes.SetRenderMethod(EnumRenderMethod.POST_RENDER); + } - //void Mapper095::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - switch (addr & 0xE001) - { - case 0x8000: - reg = data; - SetBank_CPU(); - SetBank_PPU(); - break; - case 0x8001: - if (reg <= 0x05) - { - if ((data & 0x20) != 0) SetVRAM_Mirror(VRAM_MIRROR4H); - else SetVRAM_Mirror(VRAM_MIRROR4L); - data &= 0x1F; - } + //void Mapper095::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + switch (addr & 0xE001) + { + case 0x8000: + reg = data; + SetBank_CPU(); + SetBank_PPU(); + break; + case 0x8001: + if (reg <= 0x05) + { + if ((data & 0x20) != 0) SetVRAM_Mirror(VRAM_MIRROR4H); + else SetVRAM_Mirror(VRAM_MIRROR4L); + data &= 0x1F; + } - switch (reg & 0x07) - { - case 0x00: - if (VROM_1K_SIZE != 0) - { - chr01 = (byte)(data & 0xFE); - SetBank_PPU(); - } - break; - case 0x01: - if (VROM_1K_SIZE != 0) - { - chr23 = (byte)(data & 0xFE); - SetBank_PPU(); - } - break; - case 0x02: - if (VROM_1K_SIZE != 0) - { - chr4 = data; - SetBank_PPU(); - } - break; - case 0x03: - if (VROM_1K_SIZE != 0) - { - chr5 = data; - SetBank_PPU(); - } - break; - case 0x04: - if (VROM_1K_SIZE != 0) - { - chr6 = data; - SetBank_PPU(); - } - break; - case 0x05: - if (VROM_1K_SIZE != 0) - { - chr7 = data; - SetBank_PPU(); - } - break; - case 0x06: - prg0 = data; - SetBank_CPU(); - break; - case 0x07: - prg1 = data; - SetBank_CPU(); - break; - } - break; - } - } + switch (reg & 0x07) + { + case 0x00: + if (VROM_1K_SIZE != 0) + { + chr01 = (byte)(data & 0xFE); + SetBank_PPU(); + } + break; + case 0x01: + if (VROM_1K_SIZE != 0) + { + chr23 = (byte)(data & 0xFE); + SetBank_PPU(); + } + break; + case 0x02: + if (VROM_1K_SIZE != 0) + { + chr4 = data; + SetBank_PPU(); + } + break; + case 0x03: + if (VROM_1K_SIZE != 0) + { + chr5 = data; + SetBank_PPU(); + } + break; + case 0x04: + if (VROM_1K_SIZE != 0) + { + chr6 = data; + SetBank_PPU(); + } + break; + case 0x05: + if (VROM_1K_SIZE != 0) + { + chr7 = data; + SetBank_PPU(); + } + break; + case 0x06: + prg0 = data; + SetBank_CPU(); + break; + case 0x07: + prg1 = data; + SetBank_CPU(); + break; + } + break; + } + } - void SetBank_CPU() - { - if ((reg & 0x40) != 0) - { - SetPROM_32K_Bank(PROM_8K_SIZE - 2, prg1, prg0, PROM_8K_SIZE - 1); - } - else - { - SetPROM_32K_Bank(prg0, prg1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - } - } + void SetBank_CPU() + { + if ((reg & 0x40) != 0) + { + SetPROM_32K_Bank(PROM_8K_SIZE - 2, prg1, prg0, PROM_8K_SIZE - 1); + } + else + { + SetPROM_32K_Bank(prg0, prg1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + } + } - void SetBank_PPU() - { - if (VROM_1K_SIZE != 0) - { - if ((reg & 0x80) != 0) - { - SetVROM_8K_Bank(chr4, chr5, chr6, chr7, - chr01, chr01 + 1, chr23, chr23 + 1); - } - else - { - SetVROM_8K_Bank(chr01, chr01 + 1, chr23, chr23 + 1, - chr4, chr5, chr6, chr7); - } - } - } + void SetBank_PPU() + { + if (VROM_1K_SIZE != 0) + { + if ((reg & 0x80) != 0) + { + SetVROM_8K_Bank(chr4, chr5, chr6, chr7, + chr01, chr01 + 1, chr23, chr23 + 1); + } + else + { + SetVROM_8K_Bank(chr01, chr01 + 1, chr23, chr23 + 1, + chr4, chr5, chr6, chr7); + } + } + } - //void Mapper095::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - p[0] = reg; - p[1] = prg0; - p[2] = prg1; - p[3] = chr01; - p[4] = chr23; - p[5] = chr4; - p[6] = chr5; - p[7] = chr6; - p[8] = chr7; - } + //void Mapper095::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + p[0] = reg; + p[1] = prg0; + p[2] = prg1; + p[3] = chr01; + p[4] = chr23; + p[5] = chr4; + p[6] = chr5; + p[7] = chr6; + p[8] = chr7; + } - //void Mapper095::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - reg = p[0]; - prg0 = p[1]; - prg1 = p[2]; - chr01 = p[3]; - chr23 = p[4]; - chr4 = p[5]; - chr5 = p[6]; - chr6 = p[7]; - chr7 = p[8]; - } + //void Mapper095::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + reg = p[0]; + prg0 = p[1]; + prg1 = p[2]; + chr01 = p[3]; + chr23 = p[4]; + chr4 = p[5]; + chr5 = p[6]; + chr6 = p[7]; + chr7 = p[8]; + } - public override bool IsStateSave() - { - return true; - } - } + public override bool IsStateSave() + { + return true; + } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper096.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper096.cs index 8975c441..b297f599 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper096.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper096.cs @@ -2,74 +2,71 @@ // Mapper096 Bandai 74161 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper096 : Mapper - { - BYTE[] reg = new byte[2]; - public Mapper096(NES parent) : base(parent) - { - } + public class Mapper096 : Mapper + { + BYTE[] reg = new byte[2]; + public Mapper096(NES parent) : base(parent) + { + } - public override void Reset() - { - reg[0] = reg[1] = 0; + public override void Reset() + { + reg[0] = reg[1] = 0; - SetPROM_32K_Bank(0, 1, 2, 3); - SetBank(); + SetPROM_32K_Bank(0, 1, 2, 3); + SetBank(); - SetVRAM_Mirror(VRAM_MIRROR4L); - } + SetVRAM_Mirror(VRAM_MIRROR4L); + } - //void Mapper096::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - SetPROM_32K_Bank(data & 0x03); + //void Mapper096::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + SetPROM_32K_Bank(data & 0x03); - reg[0] = (byte)((data & 0x04) >> 2); - SetBank(); - } + reg[0] = (byte)((data & 0x04) >> 2); + SetBank(); + } - public override void PPU_Latch(ushort addr) - { - if ((addr & 0xF000) == 0x2000) - { - reg[1] = (byte)((addr >> 8) & 0x03); - SetBank(); - } - } + public override void PPU_Latch(ushort addr) + { + if ((addr & 0xF000) == 0x2000) + { + reg[1] = (byte)((addr >> 8) & 0x03); + SetBank(); + } + } - void SetBank() - { - SetCRAM_4K_Bank(0, reg[0] * 4 + reg[1]); - SetCRAM_4K_Bank(4, reg[0] * 4 + 0x03); - } + void SetBank() + { + SetCRAM_4K_Bank(0, reg[0] * 4 + reg[1]); + SetCRAM_4K_Bank(4, reg[0] * 4 + 0x03); + } - //void Mapper096::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - p[0] = reg[0]; - p[1] = reg[1]; - } + //void Mapper096::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + p[0] = reg[0]; + p[1] = reg[1]; + } - //void Mapper096::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - reg[0] = p[0]; - reg[1] = p[1]; - } + //void Mapper096::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + reg[0] = p[0]; + reg[1] = p[1]; + } - public override bool IsStateSave() - { - return true; - } + public override bool IsStateSave() + { + return true; + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper097.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper097.cs index 58fd4d90..13258c08 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper097.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper097.cs @@ -2,42 +2,38 @@ // Mapper097 Irem 74161 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper097 : Mapper - { - public Mapper097(NES parent) : base(parent) - { - } + public class Mapper097 : Mapper + { + public Mapper097(NES parent) : base(parent) + { + } - public override void Reset() - { - SetPROM_32K_Bank(PROM_8K_SIZE - 2, PROM_8K_SIZE - 1, 0, 1); + public override void Reset() + { + SetPROM_32K_Bank(PROM_8K_SIZE - 2, PROM_8K_SIZE - 1, 0, 1); - if (VROM_8K_SIZE != 0) - { - SetVROM_8K_Bank(0); - } - } + if (VROM_8K_SIZE != 0) + { + SetVROM_8K_Bank(0); + } + } - //void Mapper097::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - if (addr < 0xC000) - { - SetPROM_16K_Bank(6, data & 0x0F); + //void Mapper097::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + if (addr < 0xC000) + { + SetPROM_16K_Bank(6, data & 0x0F); - if ((data & 0x80) != 0) SetVRAM_Mirror(VRAM_VMIRROR); - else SetVRAM_Mirror(VRAM_HMIRROR); - } - } + if ((data & 0x80) != 0) SetVRAM_Mirror(VRAM_VMIRROR); + else SetVRAM_Mirror(VRAM_HMIRROR); + } + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper099.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper099.cs index 2d6633ae..8cc19d18 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper099.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper099.cs @@ -1,91 +1,89 @@ ////////////////////////////////////////////////////////////////////////// // Mapper099 VS-Unisystem // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper099 : Mapper - { - BYTE coin; - public Mapper099(NES parent) : base(parent) - { - } + public class Mapper099 : Mapper + { + BYTE coin; + public Mapper099(NES parent) : base(parent) + { + } - public override void Reset() - { - // set CPU bank pointers - if (PROM_8K_SIZE > 2) - { - SetPROM_32K_Bank(0, 1, 2, 3); - } - else if (PROM_8K_SIZE > 1) - { - SetPROM_32K_Bank(0, 1, 0, 1); - } - else - { - SetPROM_32K_Bank(0, 0, 0, 0); - } + public override void Reset() + { + // set CPU bank pointers + if (PROM_8K_SIZE > 2) + { + SetPROM_32K_Bank(0, 1, 2, 3); + } + else if (PROM_8K_SIZE > 1) + { + SetPROM_32K_Bank(0, 1, 0, 1); + } + else + { + SetPROM_32K_Bank(0, 0, 0, 0); + } - // set VROM bank - if (VROM_1K_SIZE != 0) - { - SetVROM_8K_Bank(0); - } + // set VROM bank + if (VROM_1K_SIZE != 0) + { + SetVROM_8K_Bank(0); + } - coin = 0; - } + coin = 0; + } - //BYTE Mapper099::ExRead(WORD addr) - public override byte ExRead(ushort addr) - { - if (addr == 0x4020) - { - return coin; - } + //BYTE Mapper099::ExRead(WORD addr) + public override byte ExRead(ushort addr) + { + if (addr == 0x4020) + { + return coin; + } - return (byte)(addr >> 8); - } + return (byte)(addr >> 8); + } - //void Mapper099::ExWrite(WORD addr, BYTE data) - public override void ExWrite(ushort addr, byte data) - { - if (addr == 0x4016) - { - if ((data & 0x04) != 0) - { - SetVROM_8K_Bank(1); - } - else - { - SetVROM_8K_Bank(0); - } + //void Mapper099::ExWrite(WORD addr, BYTE data) + public override void ExWrite(ushort addr, byte data) + { + if (addr == 0x4016) + { + if ((data & 0x04) != 0) + { + SetVROM_8K_Bank(1); + } + else + { + SetVROM_8K_Bank(0); + } - if (nes.rom.GetPROM_CRC() == 0xC99EC059) - { // VS Raid on Bungeling Bay(J) - if ((data & 0x02) != 0) - { - nes.cpu.SetIRQ(IRQ_MAPPER); - } - else - { - nes.cpu.ClrIRQ(IRQ_MAPPER); - } - } - } + if (nes.rom.GetPROM_CRC() == 0xC99EC059) + { // VS Raid on Bungeling Bay(J) + if ((data & 0x02) != 0) + { + nes.cpu.SetIRQ(IRQ_MAPPER); + } + else + { + nes.cpu.ClrIRQ(IRQ_MAPPER); + } + } + } - if (addr == 0x4020) - { - coin = data; - } - } + if (addr == 0x4020) + { + coin = data; + } + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper100.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper100.cs index a6f8261f..d7e17b45 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper100.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper100.cs @@ -1,301 +1,300 @@ -using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.Core.CPU; +using static VirtualNes.MMU; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { - public class Mapper100 : Mapper - { + public class Mapper100 : Mapper + { - BYTE[] reg = new byte[8]; - BYTE prg0, prg1, prg2, prg3; - BYTE chr0, chr1, chr2, chr3, chr4, chr5, chr6, chr7; + BYTE[] reg = new byte[8]; + BYTE prg0, prg1, prg2, prg3; + BYTE chr0, chr1, chr2, chr3, chr4, chr5, chr6, chr7; - BYTE irq_enable; - BYTE irq_counter; - BYTE irq_latch; - public Mapper100(NES parent) : base(parent) - { - } + BYTE irq_enable; + BYTE irq_counter; + BYTE irq_latch; + public Mapper100(NES parent) : base(parent) + { + } - public override void Reset() - { - for (INT i = 0; i < 8; i++) - { - reg[i] = 0x00; - } + public override void Reset() + { + for (INT i = 0; i < 8; i++) + { + reg[i] = 0x00; + } - prg0 = 0; - prg1 = 1; - prg2 = (byte)(PROM_8K_SIZE - 2); - prg3 = (byte)(PROM_8K_SIZE - 1); - SetBank_CPU(); + prg0 = 0; + prg1 = 1; + prg2 = (byte)(PROM_8K_SIZE - 2); + prg3 = (byte)(PROM_8K_SIZE - 1); + SetBank_CPU(); - if (VROM_1K_SIZE != 0) - { - chr0 = 0; - chr1 = 1; - chr2 = 2; - chr3 = 3; - chr4 = 4; - chr5 = 5; - chr6 = 6; - chr7 = 7; - SetBank_PPU(); - } - else - { - chr0 = chr2 = chr4 = chr5 = chr6 = chr7 = 0; - chr1 = chr3 = 1; - } + if (VROM_1K_SIZE != 0) + { + chr0 = 0; + chr1 = 1; + chr2 = 2; + chr3 = 3; + chr4 = 4; + chr5 = 5; + chr6 = 6; + chr7 = 7; + SetBank_PPU(); + } + else + { + chr0 = chr2 = chr4 = chr5 = chr6 = chr7 = 0; + chr1 = chr3 = 1; + } - irq_enable = 0; // Disable - irq_counter = 0; - irq_latch = 0; - } + irq_enable = 0; // Disable + irq_counter = 0; + irq_latch = 0; + } - //void Mapper100::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - switch (addr & 0xE001) - { - case 0x8000: - reg[0] = data; - break; - case 0x8001: - reg[1] = data; + //void Mapper100::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + switch (addr & 0xE001) + { + case 0x8000: + reg[0] = data; + break; + case 0x8001: + reg[1] = data; - switch (reg[0] & 0xC7) - { - case 0x00: - if (VROM_1K_SIZE != 0) - { - chr0 = (byte)(data & 0xFE); - chr1 = (byte)(chr0 + 1); - SetBank_PPU(); - } - break; - case 0x01: - if (VROM_1K_SIZE != 0) - { - chr2 = (byte)(data & 0xFE); - chr3 = (byte)(chr2 + 1); - SetBank_PPU(); - } - break; - case 0x02: - if (VROM_1K_SIZE != 0) - { - chr4 = data; - SetBank_PPU(); - } - break; - case 0x03: - if (VROM_1K_SIZE != 0) - { - chr5 = data; - SetBank_PPU(); - } - break; - case 0x04: - if (VROM_1K_SIZE != 0) - { - chr6 = data; - SetBank_PPU(); - } - break; - case 0x05: - if (VROM_1K_SIZE != 0) - { - chr7 = data; - SetBank_PPU(); - } - break; + switch (reg[0] & 0xC7) + { + case 0x00: + if (VROM_1K_SIZE != 0) + { + chr0 = (byte)(data & 0xFE); + chr1 = (byte)(chr0 + 1); + SetBank_PPU(); + } + break; + case 0x01: + if (VROM_1K_SIZE != 0) + { + chr2 = (byte)(data & 0xFE); + chr3 = (byte)(chr2 + 1); + SetBank_PPU(); + } + break; + case 0x02: + if (VROM_1K_SIZE != 0) + { + chr4 = data; + SetBank_PPU(); + } + break; + case 0x03: + if (VROM_1K_SIZE != 0) + { + chr5 = data; + SetBank_PPU(); + } + break; + case 0x04: + if (VROM_1K_SIZE != 0) + { + chr6 = data; + SetBank_PPU(); + } + break; + case 0x05: + if (VROM_1K_SIZE != 0) + { + chr7 = data; + SetBank_PPU(); + } + break; - case 0x06: - prg0 = data; - SetBank_CPU(); - break; - case 0x07: - prg1 = data; - SetBank_CPU(); - break; - case 0x46: - prg2 = data; - SetBank_CPU(); - break; - case 0x47: - prg3 = data; - SetBank_CPU(); - break; + case 0x06: + prg0 = data; + SetBank_CPU(); + break; + case 0x07: + prg1 = data; + SetBank_CPU(); + break; + case 0x46: + prg2 = data; + SetBank_CPU(); + break; + case 0x47: + prg3 = data; + SetBank_CPU(); + break; - case 0x80: - if (VROM_1K_SIZE != 0) - { - chr4 = (byte)(data & 0xFE); - chr5 = (byte)(chr4 + 1); - SetBank_PPU(); - } - break; - case 0x81: - if (VROM_1K_SIZE != 0) - { - chr6 = (byte)(data & 0xFE); - chr7 = (byte)(chr6 + 1); - SetBank_PPU(); - } - break; - case 0x82: - if (VROM_1K_SIZE != 0) - { - chr0 = data; - SetBank_PPU(); - } - break; - case 0x83: - if (VROM_1K_SIZE != 0) - { - chr1 = data; - SetBank_PPU(); - } - break; - case 0x84: - if (VROM_1K_SIZE != 0) - { - chr2 = data; - SetBank_PPU(); - } - break; - case 0x85: - if (VROM_1K_SIZE != 0) - { - chr3 = data; - SetBank_PPU(); - } - break; + case 0x80: + if (VROM_1K_SIZE != 0) + { + chr4 = (byte)(data & 0xFE); + chr5 = (byte)(chr4 + 1); + SetBank_PPU(); + } + break; + case 0x81: + if (VROM_1K_SIZE != 0) + { + chr6 = (byte)(data & 0xFE); + chr7 = (byte)(chr6 + 1); + SetBank_PPU(); + } + break; + case 0x82: + if (VROM_1K_SIZE != 0) + { + chr0 = data; + SetBank_PPU(); + } + break; + case 0x83: + if (VROM_1K_SIZE != 0) + { + chr1 = data; + SetBank_PPU(); + } + break; + case 0x84: + if (VROM_1K_SIZE != 0) + { + chr2 = data; + SetBank_PPU(); + } + break; + case 0x85: + if (VROM_1K_SIZE != 0) + { + chr3 = data; + SetBank_PPU(); + } + break; - } - break; - case 0xA000: - reg[2] = data; - if (!nes.rom.Is4SCREEN()) - { - if ((data & 0x01) != 0) SetVRAM_Mirror(VRAM_HMIRROR); - else SetVRAM_Mirror(VRAM_VMIRROR); - } - break; - case 0xA001: - reg[3] = data; - break; - case 0xC000: - reg[4] = data; - irq_counter = data; - break; - case 0xC001: - reg[5] = data; - irq_latch = data; - break; - case 0xE000: - reg[6] = data; - irq_enable = 0; - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; - case 0xE001: - reg[7] = data; - irq_enable = 0xFF; - break; - } - } + } + break; + case 0xA000: + reg[2] = data; + if (!nes.rom.Is4SCREEN()) + { + if ((data & 0x01) != 0) SetVRAM_Mirror(VRAM_HMIRROR); + else SetVRAM_Mirror(VRAM_VMIRROR); + } + break; + case 0xA001: + reg[3] = data; + break; + case 0xC000: + reg[4] = data; + irq_counter = data; + break; + case 0xC001: + reg[5] = data; + irq_latch = data; + break; + case 0xE000: + reg[6] = data; + irq_enable = 0; + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; + case 0xE001: + reg[7] = data; + irq_enable = 0xFF; + break; + } + } - //void Mapper100::HSync(INT scanline) - public override void HSync(int scanline) - { - if ((scanline >= 0 && scanline <= 239)) - { - if (nes.ppu.IsDispON()) - { - if (irq_enable != 0) - { - if ((irq_counter--) == 0) - { - irq_counter = irq_latch; - // nes.cpu.IRQ(); - nes.cpu.SetIRQ(IRQ_MAPPER); - } - } - } - } - } + //void Mapper100::HSync(INT scanline) + public override void HSync(int scanline) + { + if ((scanline >= 0 && scanline <= 239)) + { + if (nes.ppu.IsDispON()) + { + if (irq_enable != 0) + { + if ((irq_counter--) == 0) + { + irq_counter = irq_latch; + // nes.cpu.IRQ(); + nes.cpu.SetIRQ(IRQ_MAPPER); + } + } + } + } + } - void SetBank_CPU() - { - SetPROM_32K_Bank(prg0, prg1, prg2, prg3); - } + void SetBank_CPU() + { + SetPROM_32K_Bank(prg0, prg1, prg2, prg3); + } - void SetBank_PPU() - { - if (VROM_1K_SIZE != 0) - { - SetVROM_8K_Bank(chr0, chr1, chr2, chr3, chr4, chr5, chr6, chr7); - } - } + void SetBank_PPU() + { + if (VROM_1K_SIZE != 0) + { + SetVROM_8K_Bank(chr0, chr1, chr2, chr3, chr4, chr5, chr6, chr7); + } + } - //void Mapper100::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - for (byte i = 0; i < 8; i++) - { - p[i] = reg[i]; - } - p[8] = prg0; - p[9] = prg1; - p[10] = prg2; - p[11] = prg3; - p[12] = chr0; - p[13] = chr1; - p[14] = chr2; - p[15] = chr3; - p[16] = chr4; - p[17] = chr5; - p[18] = chr6; - p[19] = chr7; - p[20] = irq_enable; - p[21] = irq_counter; - p[22] = irq_latch; - } + //void Mapper100::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + for (byte i = 0; i < 8; i++) + { + p[i] = reg[i]; + } + p[8] = prg0; + p[9] = prg1; + p[10] = prg2; + p[11] = prg3; + p[12] = chr0; + p[13] = chr1; + p[14] = chr2; + p[15] = chr3; + p[16] = chr4; + p[17] = chr5; + p[18] = chr6; + p[19] = chr7; + p[20] = irq_enable; + p[21] = irq_counter; + p[22] = irq_latch; + } - //void Mapper100::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - for (byte i = 0; i < 8; i++) - { - reg[i] = p[i]; - } - prg0 = p[8]; - prg1 = p[9]; - prg2 = p[10]; - prg3 = p[11]; - chr0 = p[12]; - chr1 = p[13]; - chr2 = p[14]; - chr3 = p[15]; - chr4 = p[16]; - chr5 = p[17]; - chr6 = p[18]; - chr7 = p[19]; - irq_enable = p[20]; - irq_counter = p[21]; - irq_latch = p[22]; - } + //void Mapper100::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + for (byte i = 0; i < 8; i++) + { + reg[i] = p[i]; + } + prg0 = p[8]; + prg1 = p[9]; + prg2 = p[10]; + prg3 = p[11]; + chr0 = p[12]; + chr1 = p[13]; + chr2 = p[14]; + chr3 = p[15]; + chr4 = p[16]; + chr5 = p[17]; + chr6 = p[18]; + chr7 = p[19]; + irq_enable = p[20]; + irq_counter = p[21]; + irq_latch = p[22]; + } - public override bool IsStateSave() - { - return true; - } + public override bool IsStateSave() + { + return true; + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper101.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper101.cs index b0b462a9..9dba4667 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper101.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper101.cs @@ -2,41 +2,37 @@ // Mapper101 Jaleco(Urusei Yatsura) // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper101 : Mapper - { - public Mapper101(NES parent) : base(parent) - { - } + public class Mapper101 : Mapper + { + public Mapper101(NES parent) : base(parent) + { + } - public override void Reset() - { - SetPROM_32K_Bank(0, 1, 2, 3); - SetVROM_8K_Bank(0); - } + public override void Reset() + { + SetPROM_32K_Bank(0, 1, 2, 3); + SetVROM_8K_Bank(0); + } - //void Mapper101::WriteLow(WORD addr, BYTE data) - public override void WriteLow(ushort addr, byte data) - { - if (addr >= 0x6000) - { - SetVROM_8K_Bank(data & 0x03); - } - } + //void Mapper101::WriteLow(WORD addr, BYTE data) + public override void WriteLow(ushort addr, byte data) + { + if (addr >= 0x6000) + { + SetVROM_8K_Bank(data & 0x03); + } + } - //void Mapper101::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - SetVROM_8K_Bank(data & 0x03); - } + //void Mapper101::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + SetVROM_8K_Bank(data & 0x03); + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper105.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper105.cs index 20160516..57cd3843 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper105.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper105.cs @@ -1,202 +1,201 @@ ////////////////////////////////////////////////////////////////////////// // Mapper105 Nintendo World Championship // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { - public class Mapper105 : Mapper - { - BYTE init_state; - BYTE write_count; - BYTE bits; - BYTE[] reg = new byte[4]; + public class Mapper105 : Mapper + { + BYTE init_state; + BYTE write_count; + BYTE bits; + BYTE[] reg = new byte[4]; - BYTE irq_enable; - INT irq_counter; - public Mapper105(NES parent) : base(parent) - { - } + BYTE irq_enable; + INT irq_counter; + public Mapper105(NES parent) : base(parent) + { + } - public override void Reset() - { - SetPROM_32K_Bank(0); + public override void Reset() + { + SetPROM_32K_Bank(0); - reg[0] = 0x0C; - reg[1] = 0x00; - reg[2] = 0x00; - reg[3] = 0x10; + reg[0] = 0x0C; + reg[1] = 0x00; + reg[2] = 0x00; + reg[3] = 0x10; - bits = 0; - write_count = 0; + bits = 0; + write_count = 0; - irq_counter = 0; - irq_enable = 0; - init_state = 0; - } + irq_counter = 0; + irq_enable = 0; + init_state = 0; + } - //void Mapper105::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - //WORD reg_num = (addr & 0x7FFF) >> 13; - uint reg_num = (byte)((addr & 0x7FFF) >> 13); + //void Mapper105::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + //WORD reg_num = (addr & 0x7FFF) >> 13; + uint reg_num = (byte)((addr & 0x7FFF) >> 13); - if ((data & 0x80) != 0) - { - bits = write_count = 0; - if (reg_num == 0) - { - reg[reg_num] |= 0x0C; - } - } - else - { - //bits |= (data & 1) << write_count++; - bits |= (byte)((data & 1) << write_count++); - if (write_count == 5) - { - reg[reg_num] = (byte)(bits & 0x1F); - bits = write_count = 0; - } - } + if ((data & 0x80) != 0) + { + bits = write_count = 0; + if (reg_num == 0) + { + reg[reg_num] |= 0x0C; + } + } + else + { + //bits |= (data & 1) << write_count++; + bits |= (byte)((data & 1) << write_count++); + if (write_count == 5) + { + reg[reg_num] = (byte)(bits & 0x1F); + bits = write_count = 0; + } + } - if ((reg[0] & 0x02) != 0) - { - if ((reg[0] & 0x01) != 0) - { - SetVRAM_Mirror(VRAM_HMIRROR); - } - else - { - SetVRAM_Mirror(VRAM_VMIRROR); - } - } - else - { - if ((reg[0] & 0x01) != 0) - { - SetVRAM_Mirror(VRAM_MIRROR4H); - } - else - { - SetVRAM_Mirror(VRAM_MIRROR4L); - } - } + if ((reg[0] & 0x02) != 0) + { + if ((reg[0] & 0x01) != 0) + { + SetVRAM_Mirror(VRAM_HMIRROR); + } + else + { + SetVRAM_Mirror(VRAM_VMIRROR); + } + } + else + { + if ((reg[0] & 0x01) != 0) + { + SetVRAM_Mirror(VRAM_MIRROR4H); + } + else + { + SetVRAM_Mirror(VRAM_MIRROR4L); + } + } - switch (init_state) - { - case 0: - case 1: - init_state++; - break; - case 2: - if ((reg[1] & 0x08) != 0) - { - if ((reg[0] & 0x08) != 0) - { - if ((reg[0] & 0x04) != 0) - { - SetPROM_8K_Bank(4, ((reg[3] & 0x07) * 2 + 16)); - SetPROM_8K_Bank(5, ((reg[3] & 0x07) * 2 + 17)); - SetPROM_8K_Bank(6, 30); - SetPROM_8K_Bank(7, 31); - } - else - { - SetPROM_8K_Bank(4, 16); - SetPROM_8K_Bank(5, 17); - SetPROM_8K_Bank(6, ((reg[3] & 0x07) * 2 + 16)); - SetPROM_8K_Bank(7, ((reg[3] & 0x07) * 2 + 17)); - } - } - else - { - SetPROM_8K_Bank(4, ((reg[3] & 0x06) * 2 + 16)); - SetPROM_8K_Bank(5, ((reg[3] & 0x06) * 2 + 17)); - SetPROM_8K_Bank(6, ((reg[3] & 0x06) * 2 + 18)); - SetPROM_8K_Bank(7, ((reg[3] & 0x06) * 2 + 19)); - } - } - else - { - SetPROM_8K_Bank(4, ((reg[1] & 0x06) * 2 + 0)); - SetPROM_8K_Bank(5, ((reg[1] & 0x06) * 2 + 1)); - SetPROM_8K_Bank(6, ((reg[1] & 0x06) * 2 + 2)); - SetPROM_8K_Bank(7, ((reg[1] & 0x06) * 2 + 3)); - } + switch (init_state) + { + case 0: + case 1: + init_state++; + break; + case 2: + if ((reg[1] & 0x08) != 0) + { + if ((reg[0] & 0x08) != 0) + { + if ((reg[0] & 0x04) != 0) + { + SetPROM_8K_Bank(4, ((reg[3] & 0x07) * 2 + 16)); + SetPROM_8K_Bank(5, ((reg[3] & 0x07) * 2 + 17)); + SetPROM_8K_Bank(6, 30); + SetPROM_8K_Bank(7, 31); + } + else + { + SetPROM_8K_Bank(4, 16); + SetPROM_8K_Bank(5, 17); + SetPROM_8K_Bank(6, ((reg[3] & 0x07) * 2 + 16)); + SetPROM_8K_Bank(7, ((reg[3] & 0x07) * 2 + 17)); + } + } + else + { + SetPROM_8K_Bank(4, ((reg[3] & 0x06) * 2 + 16)); + SetPROM_8K_Bank(5, ((reg[3] & 0x06) * 2 + 17)); + SetPROM_8K_Bank(6, ((reg[3] & 0x06) * 2 + 18)); + SetPROM_8K_Bank(7, ((reg[3] & 0x06) * 2 + 19)); + } + } + else + { + SetPROM_8K_Bank(4, ((reg[1] & 0x06) * 2 + 0)); + SetPROM_8K_Bank(5, ((reg[1] & 0x06) * 2 + 1)); + SetPROM_8K_Bank(6, ((reg[1] & 0x06) * 2 + 2)); + SetPROM_8K_Bank(7, ((reg[1] & 0x06) * 2 + 3)); + } - if ((reg[1] & 0x10) != 0) - { - irq_counter = 0; - irq_enable = 0; - } - else - { - irq_enable = 1; - } - // nes.cpu.ClrIRQ( IRQ_MAPPER ); - break; - default: - break; - } - } + if ((reg[1] & 0x10) != 0) + { + irq_counter = 0; + irq_enable = 0; + } + else + { + irq_enable = 1; + } + // nes.cpu.ClrIRQ( IRQ_MAPPER ); + break; + default: + break; + } + } - //void Mapper105::HSync(INT scanline) - public override void HSync(int scanline) - { - if (scanline != 0) - { - if (irq_enable != 0) - { - irq_counter += 29781; - } - if (((irq_counter | 0x21FFFFFF) & 0x3E000000) == 0x3E000000) - { - // nes.cpu.IRQ_NotPending(); - // nes.cpu.SetIRQ( IRQ_MAPPER ); - nes.cpu.SetIRQ(IRQ_TRIGGER2); - } - } - } + //void Mapper105::HSync(INT scanline) + public override void HSync(int scanline) + { + if (scanline != 0) + { + if (irq_enable != 0) + { + irq_counter += 29781; + } + if (((irq_counter | 0x21FFFFFF) & 0x3E000000) == 0x3E000000) + { + // nes.cpu.IRQ_NotPending(); + // nes.cpu.SetIRQ( IRQ_MAPPER ); + nes.cpu.SetIRQ(IRQ_TRIGGER2); + } + } + } - //void Mapper105::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - //for (INT i = 0; i < 4; i++) - //{ - // p[i] = reg[i]; - //} - //p[8] = init_state; - //p[9] = write_count; - //p[10] = bits; - //p[11] = irq_enable; - //*((INT*)&p[12]) = irq_counter; - } + //void Mapper105::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + //for (INT i = 0; i < 4; i++) + //{ + // p[i] = reg[i]; + //} + //p[8] = init_state; + //p[9] = write_count; + //p[10] = bits; + //p[11] = irq_enable; + //*((INT*)&p[12]) = irq_counter; + } - //void Mapper105::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - //for (INT i = 0; i < 4; i++) - //{ - // reg[i] = p[i]; - //} - //init_state = p[8]; - //write_count = p[9]; - //bits = p[10]; - //irq_enable = p[11]; - //irq_counter = *((INT*)&p[12]); - } + //void Mapper105::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + //for (INT i = 0; i < 4; i++) + //{ + // reg[i] = p[i]; + //} + //init_state = p[8]; + //write_count = p[9]; + //bits = p[10]; + //irq_enable = p[11]; + //irq_counter = *((INT*)&p[12]); + } - public override bool IsStateSave() - { - return true; - } + public override bool IsStateSave() + { + return true; + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper107.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper107.cs index 4a673cc7..f153449f 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper107.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper107.cs @@ -2,32 +2,28 @@ // Mapper107 Magic Dragon Mapper // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; namespace VirtualNes.Core { - public class Mapper107 : Mapper - { - public Mapper107(NES parent) : base(parent) - { - } + public class Mapper107 : Mapper + { + public Mapper107(NES parent) : base(parent) + { + } - public override void Reset() - { - SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - SetVROM_8K_Bank(0); - } + public override void Reset() + { + SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + SetVROM_8K_Bank(0); + } - //void Mapper107::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - SetPROM_32K_Bank((data >> 1) & 0x03); - SetVROM_8K_Bank(data & 0x07); - } + //void Mapper107::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + SetPROM_32K_Bank((data >> 1) & 0x03); + SetVROM_8K_Bank(data & 0x07); + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper108.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper108.cs index 222e06bb..11afe6e4 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper108.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper108.cs @@ -2,30 +2,26 @@ // Mapper108 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; namespace VirtualNes.Core { - public class Mapper108 : Mapper - { - public Mapper108(NES parent) : base(parent) - { - } + public class Mapper108 : Mapper + { + public Mapper108(NES parent) : base(parent) + { + } - public override void Reset() - { - SetPROM_32K_Bank(0xC, 0xD, 0xE, 0xF); - SetPROM_8K_Bank(3, 0); - } + public override void Reset() + { + SetPROM_32K_Bank(0xC, 0xD, 0xE, 0xF); + SetPROM_8K_Bank(3, 0); + } - //void Mapper108::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - SetPROM_8K_Bank(3, data); - } + //void Mapper108::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + SetPROM_8K_Bank(3, data); + } - } + } } \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper109.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper109.cs index 304d59bd..43101e90 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper109.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper109.cs @@ -2,130 +2,127 @@ // Mapper109 SACHEN The Great Wall SA-019 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper109 : Mapper - { + public class Mapper109 : Mapper + { - BYTE reg; - BYTE chr0, chr1, chr2, chr3; - BYTE chrmode0, chrmode1; - public Mapper109(NES parent) : base(parent) - { - } + BYTE reg; + BYTE chr0, chr1, chr2, chr3; + BYTE chrmode0, chrmode1; + public Mapper109(NES parent) : base(parent) + { + } - public override void Reset() - { - reg = 0; - SetPROM_32K_Bank(0); + public override void Reset() + { + reg = 0; + SetPROM_32K_Bank(0); - chr0 = 0; - chr1 = 0; - chr2 = 0; - chr3 = 0; - SetBank_PPU(); - chrmode0 = 0; - chrmode1 = 0; - } + chr0 = 0; + chr1 = 0; + chr2 = 0; + chr3 = 0; + SetBank_PPU(); + chrmode0 = 0; + chrmode1 = 0; + } - //void Mapper109::WriteLow(WORD addr, BYTE data) - public override void WriteLow(ushort addr, byte data) - { - switch (addr) - { - case 0x4100: - reg = data; - break; - case 0x4101: - switch (reg) - { - case 0: - chr0 = data; - SetBank_PPU(); - break; - case 1: - chr1 = data; - SetBank_PPU(); - break; - case 2: - chr2 = data; - SetBank_PPU(); - break; - case 3: - chr3 = data; - SetBank_PPU(); - break; - case 4: - chrmode0 = (byte)(data & 0x01); - SetBank_PPU(); - break; - case 5: - SetPROM_32K_Bank(data & 0x07); - break; - case 6: - chrmode1 = (byte)(data & 0x07); - SetBank_PPU(); - break; - case 7: - if ((data & 0x01) != 0) SetVRAM_Mirror(VRAM_HMIRROR); - else SetVRAM_Mirror(VRAM_VMIRROR); - break; - } - break; - } + //void Mapper109::WriteLow(WORD addr, BYTE data) + public override void WriteLow(ushort addr, byte data) + { + switch (addr) + { + case 0x4100: + reg = data; + break; + case 0x4101: + switch (reg) + { + case 0: + chr0 = data; + SetBank_PPU(); + break; + case 1: + chr1 = data; + SetBank_PPU(); + break; + case 2: + chr2 = data; + SetBank_PPU(); + break; + case 3: + chr3 = data; + SetBank_PPU(); + break; + case 4: + chrmode0 = (byte)(data & 0x01); + SetBank_PPU(); + break; + case 5: + SetPROM_32K_Bank(data & 0x07); + break; + case 6: + chrmode1 = (byte)(data & 0x07); + SetBank_PPU(); + break; + case 7: + if ((data & 0x01) != 0) SetVRAM_Mirror(VRAM_HMIRROR); + else SetVRAM_Mirror(VRAM_VMIRROR); + break; + } + break; + } - } + } - void SetBank_PPU() - { - if (VROM_1K_SIZE != 0) - { - SetVROM_1K_Bank(0, chr0); - SetVROM_1K_Bank(1, chr1 | ((chrmode1 << 3) & 0x8)); - SetVROM_1K_Bank(2, chr2 | ((chrmode1 << 2) & 0x8)); - SetVROM_1K_Bank(3, chr3 | ((chrmode1 << 1) & 0x8) | (chrmode0 * 0x10)); - SetVROM_1K_Bank(4, VROM_1K_SIZE - 4); - SetVROM_1K_Bank(5, VROM_1K_SIZE - 3); - SetVROM_1K_Bank(6, VROM_1K_SIZE - 2); - SetVROM_1K_Bank(7, VROM_1K_SIZE - 1); - } - } + void SetBank_PPU() + { + if (VROM_1K_SIZE != 0) + { + SetVROM_1K_Bank(0, chr0); + SetVROM_1K_Bank(1, chr1 | ((chrmode1 << 3) & 0x8)); + SetVROM_1K_Bank(2, chr2 | ((chrmode1 << 2) & 0x8)); + SetVROM_1K_Bank(3, chr3 | ((chrmode1 << 1) & 0x8) | (chrmode0 * 0x10)); + SetVROM_1K_Bank(4, VROM_1K_SIZE - 4); + SetVROM_1K_Bank(5, VROM_1K_SIZE - 3); + SetVROM_1K_Bank(6, VROM_1K_SIZE - 2); + SetVROM_1K_Bank(7, VROM_1K_SIZE - 1); + } + } - //void Mapper109::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - p[0] = reg; - p[1] = chr0; - p[2] = chr1; - p[3] = chr2; - p[4] = chr3; - p[5] = chrmode0; - p[6] = chrmode1; - } + //void Mapper109::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + p[0] = reg; + p[1] = chr0; + p[2] = chr1; + p[3] = chr2; + p[4] = chr3; + p[5] = chrmode0; + p[6] = chrmode1; + } - //void Mapper109::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - reg = p[0]; - chr0 = p[1]; - chr1 = p[2]; - chr2 = p[3]; - chr3 = p[4]; - chrmode0 = p[5]; - chrmode1 = p[6]; - } + //void Mapper109::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + reg = p[0]; + chr0 = p[1]; + chr1 = p[2]; + chr2 = p[3]; + chr3 = p[4]; + chrmode0 = p[5]; + chrmode1 = p[6]; + } - public override bool IsStateSave() - { - return true; - } + public override bool IsStateSave() + { + return true; + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper110.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper110.cs index 41a42bdd..02a443e3 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper110.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper110.cs @@ -2,86 +2,83 @@ // Mapper110 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper110 : Mapper - { - BYTE reg0, reg1; - public Mapper110(NES parent) : base(parent) - { - } + public class Mapper110 : Mapper + { + BYTE reg0, reg1; + public Mapper110(NES parent) : base(parent) + { + } - public override void Reset() - { - SetPROM_32K_Bank(0); - SetVROM_8K_Bank(0); + public override void Reset() + { + SetPROM_32K_Bank(0); + SetVROM_8K_Bank(0); - reg0 = 0; - reg1 = 0; - } - //void Mapper110::WriteLow(WORD addr, BYTE data) - public override void WriteLow(ushort addr, byte data) - { - switch (addr) - { - case 0x4100: - reg1 = (byte)(data & 0x07); - break; - case 0x4101: - switch (reg1) - { - case 5: - SetPROM_32K_Bank(data); - break; - case 0: - reg0 = (byte)(data & 0x01); - SetVROM_8K_Bank(reg0); - break; - case 2: - reg0 = data; - SetVROM_8K_Bank(reg0); - break; - case 4: - reg0 = (byte)(reg0 | (data << 1)); - SetVROM_8K_Bank(reg0); - break; - case 6: - reg0 = (byte)(reg0 | (data << 2)); - SetVROM_8K_Bank(reg0); - break; - default: - break; - } - break; - default: - break; - } - } + reg0 = 0; + reg1 = 0; + } + //void Mapper110::WriteLow(WORD addr, BYTE data) + public override void WriteLow(ushort addr, byte data) + { + switch (addr) + { + case 0x4100: + reg1 = (byte)(data & 0x07); + break; + case 0x4101: + switch (reg1) + { + case 5: + SetPROM_32K_Bank(data); + break; + case 0: + reg0 = (byte)(data & 0x01); + SetVROM_8K_Bank(reg0); + break; + case 2: + reg0 = data; + SetVROM_8K_Bank(reg0); + break; + case 4: + reg0 = (byte)(reg0 | (data << 1)); + SetVROM_8K_Bank(reg0); + break; + case 6: + reg0 = (byte)(reg0 | (data << 2)); + SetVROM_8K_Bank(reg0); + break; + default: + break; + } + break; + default: + break; + } + } - //void Mapper110::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - p[0] = reg0; - p[1] = reg1; - } + //void Mapper110::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + p[0] = reg0; + p[1] = reg1; + } - //void Mapper110::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - reg0 = p[0]; - reg1 = p[1]; - } + //void Mapper110::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + reg0 = p[0]; + reg1 = p[1]; + } - public override bool IsStateSave() - { - return true; - } + public override bool IsStateSave() + { + return true; + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper111.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper111.cs index 58da90b4..7317bc18 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper111.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper111.cs @@ -2,11 +2,9 @@ // Mapper111 Nintendo MMC1 Hack // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper112.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper112.cs index 21215bf3..304b37a7 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper112.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper112.cs @@ -2,166 +2,164 @@ // Mapper112 Nintendo MMC3 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { - public class Mapper112 : Mapper - { - BYTE[] reg = new byte[4]; - BYTE prg0, prg1; - BYTE chr01, chr23, chr4, chr5, chr6, chr7; - public Mapper112(NES parent) : base(parent) - { - } + public class Mapper112 : Mapper + { + BYTE[] reg = new byte[4]; + BYTE prg0, prg1; + BYTE chr01, chr23, chr4, chr5, chr6, chr7; + public Mapper112(NES parent) : base(parent) + { + } - public override void Reset() - { - for (INT i = 0; i < 4; i++) - { - reg[i] = 0x00; - } + public override void Reset() + { + for (INT i = 0; i < 4; i++) + { + reg[i] = 0x00; + } - prg0 = 0; - prg1 = 1; - SetBank_CPU(); + prg0 = 0; + prg1 = 1; + SetBank_CPU(); - chr01 = 0; - chr23 = 2; - chr4 = 4; - chr5 = 5; - chr6 = 6; - chr7 = 7; - SetBank_PPU(); - } + chr01 = 0; + chr23 = 2; + chr4 = 4; + chr5 = 5; + chr6 = 6; + chr7 = 7; + SetBank_PPU(); + } - //void Mapper112::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - switch (addr) - { - case 0x8000: - reg[0] = data; - SetBank_CPU(); - SetBank_PPU(); - break; - case 0xA000: - reg[1] = data; - switch (reg[0] & 0x07) - { - case 0x00: - prg0 = (byte)((data & (PROM_8K_SIZE - 1))); - SetBank_CPU(); - break; - case 0x01: - prg1 = (byte)((data & (PROM_8K_SIZE - 1))); - SetBank_CPU(); - break; - case 0x02: - chr01 = (byte)(data & 0xFE); - SetBank_PPU(); - break; - case 0x03: - chr23 = (byte)(data & 0xFE); - SetBank_PPU(); - break; - case 0x04: - chr4 = data; - SetBank_PPU(); - break; - case 0x05: - chr5 = data; - SetBank_PPU(); - break; - case 0x06: - chr6 = data; - SetBank_PPU(); - break; - case 0x07: - chr7 = data; - SetBank_PPU(); - break; - } - break; + //void Mapper112::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + switch (addr) + { + case 0x8000: + reg[0] = data; + SetBank_CPU(); + SetBank_PPU(); + break; + case 0xA000: + reg[1] = data; + switch (reg[0] & 0x07) + { + case 0x00: + prg0 = (byte)((data & (PROM_8K_SIZE - 1))); + SetBank_CPU(); + break; + case 0x01: + prg1 = (byte)((data & (PROM_8K_SIZE - 1))); + SetBank_CPU(); + break; + case 0x02: + chr01 = (byte)(data & 0xFE); + SetBank_PPU(); + break; + case 0x03: + chr23 = (byte)(data & 0xFE); + SetBank_PPU(); + break; + case 0x04: + chr4 = data; + SetBank_PPU(); + break; + case 0x05: + chr5 = data; + SetBank_PPU(); + break; + case 0x06: + chr6 = data; + SetBank_PPU(); + break; + case 0x07: + chr7 = data; + SetBank_PPU(); + break; + } + break; - case 0xC000: - reg[3] = data; - SetBank_PPU(); - break;//hum 源码居然没有break 语法差异呗 - case 0xE000: - reg[2] = data; - if (!nes.rom.Is4SCREEN()) - { - if ((data & 0x01) != 0) SetVRAM_Mirror(VRAM_HMIRROR); - else SetVRAM_Mirror(VRAM_VMIRROR); - } - SetBank_PPU(); - break; - } - } + case 0xC000: + reg[3] = data; + SetBank_PPU(); + break;//hum 源码居然没有break 语法差异呗 + case 0xE000: + reg[2] = data; + if (!nes.rom.Is4SCREEN()) + { + if ((data & 0x01) != 0) SetVRAM_Mirror(VRAM_HMIRROR); + else SetVRAM_Mirror(VRAM_VMIRROR); + } + SetBank_PPU(); + break; + } + } - void SetBank_CPU() - { - SetPROM_32K_Bank(prg0, prg1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - } + void SetBank_CPU() + { + SetPROM_32K_Bank(prg0, prg1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + } - void SetBank_PPU() - { - if ((reg[2] & 0x02) != 0) - { - SetVROM_8K_Bank(chr01, chr01 + 1, chr23, chr23 + 1, chr4, chr5, chr6, chr7); - } - else - { - SetVROM_8K_Bank(((reg[3] << 6) & 0x100) + chr01, - ((reg[3] << 6) & 0x100) + chr01 + 1, - ((reg[3] << 5) & 0x100) + chr23, - ((reg[3] << 5) & 0x100) + chr23 + 1, - ((reg[3] << 4) & 0x100) + chr4, - ((reg[3] << 3) & 0x100) + chr5, - ((reg[3] << 2) & 0x100) + chr6, - ((reg[3] << 1) & 0x100) + chr7); - } - } + void SetBank_PPU() + { + if ((reg[2] & 0x02) != 0) + { + SetVROM_8K_Bank(chr01, chr01 + 1, chr23, chr23 + 1, chr4, chr5, chr6, chr7); + } + else + { + SetVROM_8K_Bank(((reg[3] << 6) & 0x100) + chr01, + ((reg[3] << 6) & 0x100) + chr01 + 1, + ((reg[3] << 5) & 0x100) + chr23, + ((reg[3] << 5) & 0x100) + chr23 + 1, + ((reg[3] << 4) & 0x100) + chr4, + ((reg[3] << 3) & 0x100) + chr5, + ((reg[3] << 2) & 0x100) + chr6, + ((reg[3] << 1) & 0x100) + chr7); + } + } - //void Mapper112::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - for (INT i = 0; i < 4; i++) - { - p[i] = reg[i]; - } - p[4] = chr01; - p[5] = chr23; - p[6] = chr4; - p[7] = chr5; - p[8] = chr6; - p[9] = chr7; - } + //void Mapper112::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + for (INT i = 0; i < 4; i++) + { + p[i] = reg[i]; + } + p[4] = chr01; + p[5] = chr23; + p[6] = chr4; + p[7] = chr5; + p[8] = chr6; + p[9] = chr7; + } - //void Mapper112::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - for (byte i = 0; i < 4; i++) - { - reg[i] = p[i]; - } + //void Mapper112::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + for (byte i = 0; i < 4; i++) + { + reg[i] = p[i]; + } - chr01 = p[4]; - chr23 = p[5]; - chr4 = p[6]; - chr5 = p[7]; - chr6 = p[8]; - chr7 = p[9]; - } + chr01 = p[4]; + chr23 = p[5]; + chr4 = p[6]; + chr5 = p[7]; + chr6 = p[8]; + chr7 = p[9]; + } - public override bool IsStateSave() - { - return true; - } - } + public override bool IsStateSave() + { + return true; + } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper113.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper113.cs index 8bde5567..f4f7796f 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper113.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper113.cs @@ -2,78 +2,74 @@ // Mapper113 PC-Sachen/Hacker // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper113 : Mapper - { - public Mapper113(NES parent) : base(parent) - { - } + public class Mapper113 : Mapper + { + public Mapper113(NES parent) : base(parent) + { + } - public override void Reset() - { - // SetPROM_32K_Bank( 0, 1, PROM_8K_SIZE-2, PROM_8K_SIZE-1 ); - SetPROM_32K_Bank(0); - SetVROM_8K_Bank(0); - } + public override void Reset() + { + // SetPROM_32K_Bank( 0, 1, PROM_8K_SIZE-2, PROM_8K_SIZE-1 ); + SetPROM_32K_Bank(0); + SetVROM_8K_Bank(0); + } - //void Mapper113::WriteLow(WORD addr, BYTE data) - public override void WriteLow(ushort addr, byte data) - { - //DEBUGOUT( "$%04X:$%02X L=%3d\n", addr, data, nes.GetScanline() ); - switch (addr) - { - case 0x4100: - case 0x4111: - case 0x4120: - case 0x4194: - case 0x4195: - case 0x4900: - if (nes.rom.GetPROM_CRC() == 0xA75AEDE5) - { // HES 6-in-1 - if ((data & 0x80) != 0) - { - SetVRAM_Mirror(VRAM_VMIRROR); - } - else - { - SetVRAM_Mirror(VRAM_HMIRROR); - } - } - SetPROM_32K_Bank(data >> 3); - SetVROM_8K_Bank(((data >> 3) & 0x08) + (data & 0x07)); - break; - } - } + //void Mapper113::WriteLow(WORD addr, BYTE data) + public override void WriteLow(ushort addr, byte data) + { + //DEBUGOUT( "$%04X:$%02X L=%3d\n", addr, data, nes.GetScanline() ); + switch (addr) + { + case 0x4100: + case 0x4111: + case 0x4120: + case 0x4194: + case 0x4195: + case 0x4900: + if (nes.rom.GetPROM_CRC() == 0xA75AEDE5) + { // HES 6-in-1 + if ((data & 0x80) != 0) + { + SetVRAM_Mirror(VRAM_VMIRROR); + } + else + { + SetVRAM_Mirror(VRAM_HMIRROR); + } + } + SetPROM_32K_Bank(data >> 3); + SetVROM_8K_Bank(((data >> 3) & 0x08) + (data & 0x07)); + break; + } + } - //void Mapper113::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - //DEBUGOUT( "$%04X:$%02X L=%3d\n", addr, data, nes.GetScanline() ); - switch (addr) - { - case 0x8008: - case 0x8009: - SetPROM_32K_Bank(data >> 3); - SetVROM_8K_Bank(((data >> 3) & 0x08) + (data & 0x07)); - break; - case 0x8E66: - case 0x8E67: - //SetVROM_8K_Bank((data & 0x07) ? 0 : 1); - SetVROM_8K_Bank((data & 0x07) != 0 ? 0 : 1); - break; - case 0xE00A: - SetVRAM_Mirror(VRAM_MIRROR4L); - break; - } - } + //void Mapper113::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + //DEBUGOUT( "$%04X:$%02X L=%3d\n", addr, data, nes.GetScanline() ); + switch (addr) + { + case 0x8008: + case 0x8009: + SetPROM_32K_Bank(data >> 3); + SetVROM_8K_Bank(((data >> 3) & 0x08) + (data & 0x07)); + break; + case 0x8E66: + case 0x8E67: + //SetVROM_8K_Bank((data & 0x07) ? 0 : 1); + SetVROM_8K_Bank((data & 0x07) != 0 ? 0 : 1); + break; + case 0xE00A: + SetVRAM_Mirror(VRAM_MIRROR4L); + break; + } + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper114.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper114.cs index 3bc87a33..fefaf5e0 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper114.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper114.cs @@ -1,13 +1,11 @@ ////////////////////////////////////////////////////////////////////////// // Mapper114 // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using System; -using System.Text.RegularExpressions; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper115.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper115.cs index 1b211699..f1231abc 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper115.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper115.cs @@ -2,12 +2,11 @@ // Mapper115 CartSaint : Yuu Yuu Hakusho Final // // JusticePao(?) // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { @@ -46,7 +45,7 @@ namespace VirtualNes.Core SetBank_CPU(); - if (VROM_1K_SIZE!=0) + if (VROM_1K_SIZE != 0) { chr0 = 0; chr1 = 1; @@ -143,7 +142,7 @@ namespace VirtualNes.Core reg[2] = data; if (!nes.rom.Is4SCREEN()) { - if ((data & 0x01)!=0) SetVRAM_Mirror(VRAM_HMIRROR); + if ((data & 0x01) != 0) SetVRAM_Mirror(VRAM_HMIRROR); else SetVRAM_Mirror(VRAM_VMIRROR); } break; @@ -178,9 +177,9 @@ namespace VirtualNes.Core { if (nes.ppu.IsDispON()) { - if (irq_enable!=0) + if (irq_enable != 0) { - if ((irq_counter--)==0) + if ((irq_counter--) == 0) { irq_counter = irq_latch; // nes.cpu.IRQ_NotPending(); @@ -194,7 +193,7 @@ namespace VirtualNes.Core void SetBank_CPU() { - if ((ExPrgSwitch & 0x80)!=0) + if ((ExPrgSwitch & 0x80) != 0) { prg0 = (byte)(((ExPrgSwitch << 1) & 0x1e)); prg1 = (byte)(prg0 + 1); @@ -205,7 +204,7 @@ namespace VirtualNes.Core { prg0 = prg0L; prg1 = prg1L; - if ((reg[0] & 0x40)!=0) + if ((reg[0] & 0x40) != 0) { SetPROM_32K_Bank(PROM_8K_SIZE - 2, prg1, prg0, PROM_8K_SIZE - 1); } @@ -218,9 +217,9 @@ namespace VirtualNes.Core void SetBank_PPU() { - if (VROM_1K_SIZE!=0) + if (VROM_1K_SIZE != 0) { - if ((reg[0] & 0x80)!=0) + if ((reg[0] & 0x80) != 0) { SetVROM_8K_Bank((ExChrSwitch << 8) + chr4, (ExChrSwitch << 8) + chr5, (ExChrSwitch << 8) + chr6, (ExChrSwitch << 8) + chr7, diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper116.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper116.cs index e1448837..5ee49898 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper116.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper116.cs @@ -1,13 +1,11 @@ ////////////////////////////////////////////////////////////////////////// // Mapper116 CartSaint : 幽遊AV強列伝 // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; using VirtualNes.Core.Debug; +using static VirtualNes.Core.CPU; +using static VirtualNes.MMU; +using BYTE = System.Byte; +using INT = System.Int32; namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper117.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper117.cs index 59d4229a..c88eb3b3 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper117.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper117.cs @@ -1,12 +1,10 @@ ////////////////////////////////////////////////////////////////////////// // Mapper117 Sanko Gu(Tw) // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper118.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper118.cs index 1ad58f25..71d5d4f2 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper118.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper118.cs @@ -1,12 +1,11 @@ ////////////////////////////////////////////////////////////////////////// // Mapper118 IQS MMC3 // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper119.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper119.cs index 34f4013e..2ee87997 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper119.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper119.cs @@ -1,12 +1,11 @@ ////////////////////////////////////////////////////////////////////////// // Mapper119 Nintendo MMC3 // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper122.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper122.cs index ef53dddc..ac7454b7 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper122.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper122.cs @@ -2,11 +2,7 @@ // Mapper122/184 SunSoft-1 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper133.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper133.cs index 30887cae..aa12ea16 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper133.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper133.cs @@ -2,11 +2,7 @@ // Mapper133 SACHEN CHEN // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper134.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper134.cs index 66f2c198..1e217a1e 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper134.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper134.cs @@ -2,11 +2,8 @@ // Mapper133 SACHEN CHEN // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper135.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper135.cs index db522e94..a9e41c89 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper135.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper135.cs @@ -2,11 +2,8 @@ // Mapper135 SACHEN CHEN // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper140.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper140.cs index bf3f337e..0d043a89 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper140.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper140.cs @@ -2,11 +2,7 @@ // Mapper140 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper142.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper142.cs index 5800e936..7b379414 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper142.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper142.cs @@ -1,12 +1,11 @@ ////////////////////////////////////////////////////////////////////////// // Mapper142 SMB2J // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper151.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper151.cs index 59d9d944..587366a9 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper151.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper151.cs @@ -2,11 +2,7 @@ // Mapper151 VS-Unisystem // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper160.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper160.cs index 66a8a9bd..e24fa783 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper160.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper160.cs @@ -1,12 +1,10 @@ ////////////////////////////////////////////////////////////////////////// // Mapper160 PC-Aladdin // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper162.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper162.cs index 42e5bc7c..428412e4 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper162.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper162.cs @@ -1,13 +1,9 @@ ////////////////////////////////////////////////////////////////////////// // Mapper162 Pocket Monster Gold // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; using VirtualNes.Core.Debug; +using static VirtualNes.MMU; +using BYTE = System.Byte; namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper163.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper163.cs index 079ed302..68186e88 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper163.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper163.cs @@ -1,17 +1,16 @@ ////////////////////////////////////////////////////////////////////////// // Mapper163 NanJing Games // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; using System; -using Codice.CM.Client.Differences; +using static VirtualNes.MMU; +using BYTE = System.Byte; +using INT = System.Int32; + namespace VirtualNes.Core -{ - public class Mapper163 : Mapper - { +{ + public class Mapper163 : Mapper + { //BYTE strobe; //BYTE security; //BYTE trigger; @@ -25,10 +24,10 @@ namespace VirtualNes.Core INT www, index; public Mapper163(NES parent) : base(parent) - { + { } - static Int32[] index_adjust = new Int32[]{ -1, -1, -1, -1, 2, 4, 6, 8 }; + static Int32[] index_adjust = new Int32[] { -1, -1, -1, -1, 2, 4, 6, 8 }; static Int16[] step_table = new Int16[] { 7,8,9,10,11,12,13,14,16,17,19,21,23,25,28,31,34,37,41,45,50,55, 60,66,73,80,88,97,107,118,130,143,157,173,190,209,230,253,279, @@ -101,7 +100,7 @@ namespace VirtualNes.Core return (byte)security; break; case 0x5500: - if (trigger!=0) + if (trigger != 0) return (byte)security; else return 0; @@ -125,7 +124,7 @@ namespace VirtualNes.Core { if (addr == 0x5101) { - if (strobe !=0 && data == 0) + if (strobe != 0 && data == 0) { trigger ^= 1; // trigger ^= 0xFF; @@ -186,7 +185,7 @@ namespace VirtualNes.Core //void Mapper163::HSync(int scanline) public override void HSync(int scanline) { - if ((reg[1] & 0x80) !=0 && nes.ppu.IsDispON()) + if ((reg[1] & 0x80) != 0 && nes.ppu.IsDispON()) { if (scanline == 127) { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper164.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper164.cs index 2ff24d8d..eb4b0db1 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper164.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper164.cs @@ -1,13 +1,11 @@ ////////////////////////////////////////////////////////////////////////// // Mapper164 Pocket Monster Gold // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; using System; -using Codice.CM.Client.Differences; using VirtualNes.Core.Debug; +using static VirtualNes.MMU; +using BYTE = System.Byte; +using INT = System.Int32; namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper165.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper165.cs index cfc82842..925b27ac 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper165.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper165.cs @@ -2,11 +2,9 @@ // Mapper165 Fire Emblem Chinese version // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { @@ -94,7 +92,7 @@ namespace VirtualNes.Core break; case 0xA000: reg[2] = data; - if ((data & 0x01)!= 0) + if ((data & 0x01) != 0) { SetVRAM_Mirror(VRAM_HMIRROR); } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper167.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper167.cs index 90ef150c..daf4f96e 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper167.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper167.cs @@ -2,11 +2,8 @@ // Mapper004 Supor Computer V4.0 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper175.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper175.cs index e1eb234c..dccd6591 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper175.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper175.cs @@ -2,22 +2,19 @@ // Mapper175 15-in-1 (Kaiser) // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper175 : Mapper - { - BYTE reg_dat; - public Mapper175(NES parent) : base(parent) - { - } + public class Mapper175 : Mapper + { + BYTE reg_dat; + public Mapper175(NES parent) : base(parent) + { + } - public override void Reset() + public override void Reset() { SetPROM_16K_Bank(4, 0); SetPROM_16K_Bank(6, 0); @@ -45,7 +42,7 @@ namespace VirtualNes.Core switch (addr) { case 0x8000: - if ((data & 0x04)!=0) + if ((data & 0x04) != 0) { SetVRAM_Mirror(VRAM_HMIRROR); } @@ -63,9 +60,9 @@ namespace VirtualNes.Core } public override bool IsStateSave() - { - return true; - } + { + return true; + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper176.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper176.cs index 8df507ef..8fb80b2b 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper176.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper176.cs @@ -2,10 +2,7 @@ // Mapper176 ShuQiYu / HengGe / WaiXing // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; namespace VirtualNes.Core { @@ -35,7 +32,7 @@ namespace VirtualNes.Core SetPROM_32K_Bank(0, 1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); } // SetPROM_32K_Bank( PROM_8K_SIZE-4, PROM_8K_SIZE-3, PROM_8K_SIZE-2, PROM_8K_SIZE-1 ); - if (VROM_1K_SIZE!=0) SetVROM_8K_Bank(0); + if (VROM_1K_SIZE != 0) SetVROM_8K_Bank(0); reg5000 = 0; reg5001 = 0; @@ -115,7 +112,7 @@ namespace VirtualNes.Core break; case 0x5001: //[ES-1006] Meng Huan Zhi Xing IV (C) reg5001 = data; - if (SBW!=0) SetPROM_32K_Bank(reg5001); + if (SBW != 0) SetPROM_32K_Bank(reg5001); break; case 0x5010: reg5010 = data; @@ -123,7 +120,7 @@ namespace VirtualNes.Core break; case 0x5011: reg5011 = (byte)(data >> 1); - if (SBW!=0) SetPROM_32K_Bank(reg5011); + if (SBW != 0) SetPROM_32K_Bank(reg5011); break; case 0x5013: reg5013 = data; diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper178.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper178.cs index 1ffcb586..fe38bbcf 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper178.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper178.cs @@ -2,23 +2,21 @@ // Mapper178 Education / WaiXing_FS305 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper178 : Mapper - { - BYTE[] reg = new byte[3]; + public class Mapper178 : Mapper + { + BYTE[] reg = new byte[3]; BYTE banknum; BYTE OP_rom; public Mapper178(NES parent) : base(parent) - { - } + { + } - public override void Reset() + public override void Reset() { reg[0] = 0; reg[1] = 0; @@ -47,13 +45,13 @@ namespace VirtualNes.Core else if (addr == 0x4801) { reg[0] = (byte)((data >> 1) & 0x0F); - if (OP_rom!=0) reg[0] = (byte)(data << 2); + if (OP_rom != 0) reg[0] = (byte)(data << 2); SetBank_CPU(); } else if (addr == 0x4802) { reg[1] = (byte)(data << 2); - if (OP_rom!=0) reg[1] = data; + if (OP_rom != 0) reg[1] = data; SetBank_CPU(); } else if (addr == 0x4803) diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper180.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper180.cs index f6ffc29c..abd4dfcc 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper180.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper180.cs @@ -2,11 +2,7 @@ // Mapper180 Nichibutsu // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper181.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper181.cs index b39ae4d9..6d10bcce 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper181.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper181.cs @@ -2,11 +2,7 @@ // Mapper181 Hacker International Type2 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper182.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper182.cs index 9cddc37a..8dd938af 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper182.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper182.cs @@ -1,12 +1,10 @@ ////////////////////////////////////////////////////////////////////////// // Mapper182 PC-SuperDonkeyKong // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper183.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper183.cs index 8d60d8d5..e34b2da7 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper183.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper183.cs @@ -1,12 +1,11 @@ ////////////////////////////////////////////////////////////////////////// // Mapper183 Gimmick (Bootleg) // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper185.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper185.cs index db8eef47..11df565c 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper185.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper185.cs @@ -2,11 +2,9 @@ // Mapper185 Character disable protect // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper187.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper187.cs index 58bfe378..1135a02e 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper187.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper187.cs @@ -1,12 +1,11 @@ ////////////////////////////////////////////////////////////////////////// // Mapper187 Street Fighter Zero 2 97 // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper188.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper188.cs index 347e454e..b4807d5f 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper188.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper188.cs @@ -2,11 +2,7 @@ // Mapper188 Bandai Karaoke Studio // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper189.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper189.cs index e07c6778..22eaf8f8 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper189.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper189.cs @@ -2,12 +2,11 @@ // Mapper189 Street Fighter 2/Yoko version // // 快打傅説 Street Fighter IV (GOUDER) // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper190.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper190.cs index 3e65a5b2..fb95f174 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper190.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper190.cs @@ -1,12 +1,10 @@ ////////////////////////////////////////////////////////////// // Mapper190 Nintendo MMC3 // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper191.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper191.cs index 8c5fd50d..f7686981 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper191.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper191.cs @@ -3,11 +3,9 @@ // SACHEN Q-BOY Support // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper192.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper192.cs index 54ec85e2..3e4f884d 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper192.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper192.cs @@ -1,18 +1,16 @@ ////////////////////////////////////////////////////////////////////////// // Mapper192 WaiXingTypeC Base ON Nintendo MMC3 // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper192 : Mapper - { - BYTE[] reg = new byte[8]; + public class Mapper192 : Mapper + { + BYTE[] reg = new byte[8]; BYTE prg0, prg1; BYTE chr01, chr23, chr4, chr5, chr6, chr7; BYTE we_sram; @@ -23,11 +21,11 @@ namespace VirtualNes.Core BYTE irq_latch; BYTE irq_request; public Mapper192(NES parent) : base(parent) - { - } + { + } - public override void Reset() - { + public override void Reset() + { for (byte i = 0; i < 8; i++) { reg[i] = 0x00; @@ -52,35 +50,35 @@ namespace VirtualNes.Core } - //BYTE Mapper192::ReadLow(WORD addr) - public override byte ReadLow(ushort addr) - { - if (addr >= 0x5000 && addr <= 0x5FFF) - { - return XRAM[addr - 0x4000]; - } - else - { - return base.ReadLow(addr); - } - } + //BYTE Mapper192::ReadLow(WORD addr) + public override byte ReadLow(ushort addr) + { + if (addr >= 0x5000 && addr <= 0x5FFF) + { + return XRAM[addr - 0x4000]; + } + else + { + return base.ReadLow(addr); + } + } - //void Mapper192::WriteLow(WORD addr, BYTE data) - public override void WriteLow(ushort addr, byte data) - { - if (addr >= 0x5000 && addr <= 0x5FFF) - { - XRAM[addr - 0x4000] = data; - } - else - { - base.WriteLow(addr, data); - } - } + //void Mapper192::WriteLow(WORD addr, BYTE data) + public override void WriteLow(ushort addr, byte data) + { + if (addr >= 0x5000 && addr <= 0x5FFF) + { + XRAM[addr - 0x4000] = data; + } + else + { + base.WriteLow(addr, data); + } + } - //void Mapper192::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { + //void Mapper192::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { //DEBUGOUT( "MPRWR A=%04X D=%02X L=%3d CYC=%d\n", addr&0xFFFF, data&0xFF, nes.GetScanline(), nes.cpu.GetTotalCycles() ); switch (addr & 0xE001) @@ -133,7 +131,7 @@ namespace VirtualNes.Core reg[2] = data; if (!nes.rom.Is4SCREEN()) { - if ((data & 0x01)!=0) SetVRAM_Mirror(VRAM_HMIRROR); + if ((data & 0x01) != 0) SetVRAM_Mirror(VRAM_HMIRROR); else SetVRAM_Mirror(VRAM_VMIRROR); } break; @@ -165,23 +163,23 @@ namespace VirtualNes.Core } - //void Mapper192::HSync(INT scanline) - public override void HSync(int scanline) - { + //void Mapper192::HSync(INT scanline) + public override void HSync(int scanline) + { if ((scanline >= 0 && scanline <= 239)) { if (nes.ppu.IsDispON()) { - if (irq_enable!=0 && irq_request == 0) + if (irq_enable != 0 && irq_request == 0) { if (scanline == 0) { - if (irq_counter!=0) + if (irq_counter != 0) { irq_counter--; } } - if ((irq_counter--)==0) + if ((irq_counter--) == 0) { irq_request = 0xFF; irq_counter = irq_latch; @@ -192,133 +190,133 @@ namespace VirtualNes.Core } } - void SetBank_CPU() - { - if ((reg[0] & 0x40) != 0) - { - SetPROM_32K_Bank(PROM_8K_SIZE - 2, prg1, prg0, PROM_8K_SIZE - 1); - } - else - { - SetPROM_32K_Bank(prg0, prg1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - } - } + void SetBank_CPU() + { + if ((reg[0] & 0x40) != 0) + { + SetPROM_32K_Bank(PROM_8K_SIZE - 2, prg1, prg0, PROM_8K_SIZE - 1); + } + else + { + SetPROM_32K_Bank(prg0, prg1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + } + } - void SetBank_PPU() - { - if (VROM_1K_SIZE != 0) - { - if ((reg[0] & 0x80) != 0) - { - // SetVROM_8K_Bank( chr4, chr5, chr6, chr7, - // chr01, chr01+1, chr23, chr23+1 ); - SetBank_PPUSUB(4, chr01 + 0); - SetBank_PPUSUB(5, chr01 + 1); - SetBank_PPUSUB(6, chr23 + 0); - SetBank_PPUSUB(7, chr23 + 1); - SetBank_PPUSUB(0, chr4); - SetBank_PPUSUB(1, chr5); - SetBank_PPUSUB(2, chr6); - SetBank_PPUSUB(3, chr7); - } - else - { - // SetVROM_8K_Bank( chr01, chr01+1, chr23, chr23+1, - // chr4, chr5, chr6, chr7 ); - SetBank_PPUSUB(0, chr01 + 0); - SetBank_PPUSUB(1, chr01 + 1); - SetBank_PPUSUB(2, chr23 + 0); - SetBank_PPUSUB(3, chr23 + 1); - SetBank_PPUSUB(4, chr4); - SetBank_PPUSUB(5, chr5); - SetBank_PPUSUB(6, chr6); - SetBank_PPUSUB(7, chr7); - } - } - else - { - if ((reg[0] & 0x80) != 0) - { - SetCRAM_1K_Bank(4, (chr01 + 0)); - SetCRAM_1K_Bank(5, (chr01 + 1)); - SetCRAM_1K_Bank(6, (chr23 + 0)); - SetCRAM_1K_Bank(7, (chr23 + 1)); - SetCRAM_1K_Bank(0, chr4); - SetCRAM_1K_Bank(1, chr5); - SetCRAM_1K_Bank(2, chr6); - SetCRAM_1K_Bank(3, chr7); - } - else - { - SetCRAM_1K_Bank(0, (chr01 + 0)); - SetCRAM_1K_Bank(1, (chr01 + 1)); - SetCRAM_1K_Bank(2, (chr23 + 0)); - SetCRAM_1K_Bank(3, (chr23 + 1)); - SetCRAM_1K_Bank(4, chr4); - SetCRAM_1K_Bank(5, chr5); - SetCRAM_1K_Bank(6, chr6); - SetCRAM_1K_Bank(7, chr7); - } - } - } + void SetBank_PPU() + { + if (VROM_1K_SIZE != 0) + { + if ((reg[0] & 0x80) != 0) + { + // SetVROM_8K_Bank( chr4, chr5, chr6, chr7, + // chr01, chr01+1, chr23, chr23+1 ); + SetBank_PPUSUB(4, chr01 + 0); + SetBank_PPUSUB(5, chr01 + 1); + SetBank_PPUSUB(6, chr23 + 0); + SetBank_PPUSUB(7, chr23 + 1); + SetBank_PPUSUB(0, chr4); + SetBank_PPUSUB(1, chr5); + SetBank_PPUSUB(2, chr6); + SetBank_PPUSUB(3, chr7); + } + else + { + // SetVROM_8K_Bank( chr01, chr01+1, chr23, chr23+1, + // chr4, chr5, chr6, chr7 ); + SetBank_PPUSUB(0, chr01 + 0); + SetBank_PPUSUB(1, chr01 + 1); + SetBank_PPUSUB(2, chr23 + 0); + SetBank_PPUSUB(3, chr23 + 1); + SetBank_PPUSUB(4, chr4); + SetBank_PPUSUB(5, chr5); + SetBank_PPUSUB(6, chr6); + SetBank_PPUSUB(7, chr7); + } + } + else + { + if ((reg[0] & 0x80) != 0) + { + SetCRAM_1K_Bank(4, (chr01 + 0)); + SetCRAM_1K_Bank(5, (chr01 + 1)); + SetCRAM_1K_Bank(6, (chr23 + 0)); + SetCRAM_1K_Bank(7, (chr23 + 1)); + SetCRAM_1K_Bank(0, chr4); + SetCRAM_1K_Bank(1, chr5); + SetCRAM_1K_Bank(2, chr6); + SetCRAM_1K_Bank(3, chr7); + } + else + { + SetCRAM_1K_Bank(0, (chr01 + 0)); + SetCRAM_1K_Bank(1, (chr01 + 1)); + SetCRAM_1K_Bank(2, (chr23 + 0)); + SetCRAM_1K_Bank(3, (chr23 + 1)); + SetCRAM_1K_Bank(4, chr4); + SetCRAM_1K_Bank(5, chr5); + SetCRAM_1K_Bank(6, chr6); + SetCRAM_1K_Bank(7, chr7); + } + } + } - void SetBank_PPUSUB(int bank, int page) - { - if ((page & 0xFC) == 0x08) - { - SetCRAM_1K_Bank((byte)bank, page); - } - else - { - SetVROM_1K_Bank((byte)bank, page); - } - } + void SetBank_PPUSUB(int bank, int page) + { + if ((page & 0xFC) == 0x08) + { + SetCRAM_1K_Bank((byte)bank, page); + } + else + { + SetVROM_1K_Bank((byte)bank, page); + } + } - //void Mapper192::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - for (byte i = 0; i < 8; i++) - { - p[i] = reg[i]; - } - p[8] = prg0; - p[9] = prg1; - p[10] = chr01; - p[11] = chr23; - p[12] = chr4; - p[13] = chr5; - p[14] = chr6; - p[15] = chr7; - p[16] = irq_enable; - p[17] = irq_counter; - p[18] = irq_latch; - p[19] = irq_request; - } + //void Mapper192::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + for (byte i = 0; i < 8; i++) + { + p[i] = reg[i]; + } + p[8] = prg0; + p[9] = prg1; + p[10] = chr01; + p[11] = chr23; + p[12] = chr4; + p[13] = chr5; + p[14] = chr6; + p[15] = chr7; + p[16] = irq_enable; + p[17] = irq_counter; + p[18] = irq_latch; + p[19] = irq_request; + } - //void Mapper192::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - for (byte i = 0; i < 8; i++) - { - reg[i] = p[i]; - } - prg0 = p[8]; - prg1 = p[9]; - chr01 = p[10]; - chr23 = p[11]; - chr4 = p[12]; - chr5 = p[13]; - chr6 = p[14]; - chr7 = p[15]; - irq_enable = p[16]; - irq_counter = p[17]; - irq_latch = p[18]; - irq_request = p[19]; - } + //void Mapper192::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + for (byte i = 0; i < 8; i++) + { + reg[i] = p[i]; + } + prg0 = p[8]; + prg1 = p[9]; + chr01 = p[10]; + chr23 = p[11]; + chr4 = p[12]; + chr5 = p[13]; + chr6 = p[14]; + chr7 = p[15]; + irq_enable = p[16]; + irq_counter = p[17]; + irq_latch = p[18]; + irq_request = p[19]; + } - public override bool IsStateSave() - { - return true; - } - } + public override bool IsStateSave() + { + return true; + } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper193.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper193.cs index dbe695b4..7e8de998 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper193.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper193.cs @@ -2,10 +2,6 @@ // Mapper193 MEGA SOFT (NTDEC) : Fighting Hero // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper194.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper194.cs index 970e5ca4..ddba71a3 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper194.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper194.cs @@ -2,11 +2,7 @@ // Mapper194 迷宮寺院ダババ // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper195.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper195.cs index 1e311b52..3e0ce7a5 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper195.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper195.cs @@ -1,324 +1,323 @@ -using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.Core.CPU; +using static VirtualNes.MMU; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { - public class Mapper195 : Mapper - { + public class Mapper195 : Mapper + { - BYTE[] reg = new BYTE[8]; - BYTE prg0, prg1; - BYTE chr01, chr23, chr4, chr5, chr6, chr7; - BYTE we_sram; + BYTE[] reg = new BYTE[8]; + BYTE prg0, prg1; + BYTE chr01, chr23, chr4, chr5, chr6, chr7; + BYTE we_sram; - BYTE irq_type; - BYTE irq_enable; - BYTE irq_counter; - BYTE irq_latch; - BYTE irq_request; - public Mapper195(NES parent) : base(parent) - { - } + BYTE irq_type; + BYTE irq_enable; + BYTE irq_counter; + BYTE irq_latch; + BYTE irq_request; + public Mapper195(NES parent) : base(parent) + { + } - public override void Reset() - { - for (INT i = 0; i < 8; i++) - { - reg[i] = 0x00; - } - prg0 = 0; - prg1 = 1; - SetBank_CPU(); + public override void Reset() + { + for (INT i = 0; i < 8; i++) + { + reg[i] = 0x00; + } + prg0 = 0; + prg1 = 1; + SetBank_CPU(); - chr01 = 0; - chr23 = 2; - chr4 = 4; - chr5 = 5; - chr6 = 6; - chr7 = 7; - SetBank_PPU(); + chr01 = 0; + chr23 = 2; + chr4 = 4; + chr5 = 5; + chr6 = 6; + chr7 = 7; + SetBank_PPU(); - we_sram = 0; // Disable - irq_enable = 0; // Disable - irq_counter = 0; - irq_latch = 0; - irq_request = 0; - } + we_sram = 0; // Disable + irq_enable = 0; // Disable + irq_counter = 0; + irq_latch = 0; + irq_request = 0; + } - //BYTE Mapper195::ReadLow(WORD addr) - public override byte ReadLow(ushort addr) - { - if (addr >= 0x5000 && addr <= 0x5FFF) - { - return XRAM[addr - 0x4000]; - } - else - { - return base.ReadLow(addr); - } - } + //BYTE Mapper195::ReadLow(WORD addr) + public override byte ReadLow(ushort addr) + { + if (addr >= 0x5000 && addr <= 0x5FFF) + { + return XRAM[addr - 0x4000]; + } + else + { + return base.ReadLow(addr); + } + } - //void Mapper195::WriteLow(WORD addr, BYTE data) - public override void WriteLow(ushort addr, byte data) - { - if (addr >= 0x5000 && addr <= 0x5FFF) - { - XRAM[addr - 0x4000] = data; - } - else - { - base.WriteLow(addr, data); - } - } + //void Mapper195::WriteLow(WORD addr, BYTE data) + public override void WriteLow(ushort addr, byte data) + { + if (addr >= 0x5000 && addr <= 0x5FFF) + { + XRAM[addr - 0x4000] = data; + } + else + { + base.WriteLow(addr, data); + } + } - //void Mapper195::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - //DEBUGOUT( "MPRWR A=%04X D=%02X L=%3d CYC=%d\n", addr&0xFFFF, data&0xFF, nes.GetScanline(), nes.cpu.GetTotalCycles() ); + //void Mapper195::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + //DEBUGOUT( "MPRWR A=%04X D=%02X L=%3d CYC=%d\n", addr&0xFFFF, data&0xFF, nes.GetScanline(), nes.cpu.GetTotalCycles() ); - switch (addr & 0xE001) - { - case 0x8000: - reg[0] = data; - SetBank_CPU(); - SetBank_PPU(); - break; - case 0x8001: - reg[1] = data; + switch (addr & 0xE001) + { + case 0x8000: + reg[0] = data; + SetBank_CPU(); + SetBank_PPU(); + break; + case 0x8001: + reg[1] = data; - switch (reg[0] & 0x07) - { - case 0x00: - chr01 = data; - SetBank_PPU(); - break; - case 0x01: - chr23 = data; - SetBank_PPU(); - break; - case 0x02: - chr4 = data; - SetBank_PPU(); - break; - case 0x03: - chr5 = data; - SetBank_PPU(); - break; - case 0x04: - chr6 = data; - SetBank_PPU(); - break; - case 0x05: - chr7 = data; - SetBank_PPU(); - break; - case 0x06: - prg0 = data; - SetBank_CPU(); - break; - case 0x07: - prg1 = data; - SetBank_CPU(); - break; - } - break; - case 0xA000: - reg[2] = data; - if (!nes.rom.Is4SCREEN()) - { - if (data == 0) SetVRAM_Mirror(VRAM_VMIRROR); - else if (data == 1) SetVRAM_Mirror(VRAM_HMIRROR); - else if (data == 2) SetVRAM_Mirror(VRAM_MIRROR4L); - else SetVRAM_Mirror(VRAM_MIRROR4H); - } - break; - case 0xA001: - reg[3] = data; - break; - case 0xC000: - reg[4] = data; - irq_counter = data; - irq_request = 0; - break; - case 0xC001: - reg[5] = data; - irq_latch = data; - irq_request = 0; - break; - case 0xE000: - reg[6] = data; - irq_enable = 0; - irq_request = 0; - nes.cpu.ClrIRQ(IRQ_MAPPER); - break; - case 0xE001: - reg[7] = data; - irq_enable = 1; - irq_request = 0; - break; - } + switch (reg[0] & 0x07) + { + case 0x00: + chr01 = data; + SetBank_PPU(); + break; + case 0x01: + chr23 = data; + SetBank_PPU(); + break; + case 0x02: + chr4 = data; + SetBank_PPU(); + break; + case 0x03: + chr5 = data; + SetBank_PPU(); + break; + case 0x04: + chr6 = data; + SetBank_PPU(); + break; + case 0x05: + chr7 = data; + SetBank_PPU(); + break; + case 0x06: + prg0 = data; + SetBank_CPU(); + break; + case 0x07: + prg1 = data; + SetBank_CPU(); + break; + } + break; + case 0xA000: + reg[2] = data; + if (!nes.rom.Is4SCREEN()) + { + if (data == 0) SetVRAM_Mirror(VRAM_VMIRROR); + else if (data == 1) SetVRAM_Mirror(VRAM_HMIRROR); + else if (data == 2) SetVRAM_Mirror(VRAM_MIRROR4L); + else SetVRAM_Mirror(VRAM_MIRROR4H); + } + break; + case 0xA001: + reg[3] = data; + break; + case 0xC000: + reg[4] = data; + irq_counter = data; + irq_request = 0; + break; + case 0xC001: + reg[5] = data; + irq_latch = data; + irq_request = 0; + break; + case 0xE000: + reg[6] = data; + irq_enable = 0; + irq_request = 0; + nes.cpu.ClrIRQ(IRQ_MAPPER); + break; + case 0xE001: + reg[7] = data; + irq_enable = 1; + irq_request = 0; + break; + } - } + } - //void Mapper195::HSync(INT scanline) - public override void HSync(int scanline) - { - if ((scanline >= 0 && scanline <= 239)) - { - if (nes.ppu.IsDispON()) - { - if (irq_enable != 0 && irq_request == 0) - { - if (scanline == 0) - { - if (irq_counter != 0) - { - irq_counter--; - } - } - if ((irq_counter--) == 0) - { - irq_request = 0xFF; - irq_counter = irq_latch; - nes.cpu.SetIRQ(IRQ_MAPPER); - } - } - } - } - } + //void Mapper195::HSync(INT scanline) + public override void HSync(int scanline) + { + if ((scanline >= 0 && scanline <= 239)) + { + if (nes.ppu.IsDispON()) + { + if (irq_enable != 0 && irq_request == 0) + { + if (scanline == 0) + { + if (irq_counter != 0) + { + irq_counter--; + } + } + if ((irq_counter--) == 0) + { + irq_request = 0xFF; + irq_counter = irq_latch; + nes.cpu.SetIRQ(IRQ_MAPPER); + } + } + } + } + } - void SetBank_CPU() - { - if ((reg[0] & 0x40) != 0) - { - SetPROM_32K_Bank(PROM_8K_SIZE - 2, prg1, prg0, PROM_8K_SIZE - 1); - } - else - { - SetPROM_32K_Bank(prg0, prg1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); - } - } + void SetBank_CPU() + { + if ((reg[0] & 0x40) != 0) + { + SetPROM_32K_Bank(PROM_8K_SIZE - 2, prg1, prg0, PROM_8K_SIZE - 1); + } + else + { + SetPROM_32K_Bank(prg0, prg1, PROM_8K_SIZE - 2, PROM_8K_SIZE - 1); + } + } - void SetBank_PPU() - { - if (VROM_1K_SIZE != 0) - { - if ((reg[0] & 0x80) != 0) - { - // SetVROM_8K_Bank( chr4, chr5, chr6, chr7, - // chr01, chr01+1, chr23, chr23+1 ); - SetBank_PPUSUB(4, chr01 + 0); - SetBank_PPUSUB(5, chr01 + 1); - SetBank_PPUSUB(6, chr23 + 0); - SetBank_PPUSUB(7, chr23 + 1); - SetBank_PPUSUB(0, chr4); - SetBank_PPUSUB(1, chr5); - SetBank_PPUSUB(2, chr6); - SetBank_PPUSUB(3, chr7); - } - else - { - // SetVROM_8K_Bank( chr01, chr01+1, chr23, chr23+1, - // chr4, chr5, chr6, chr7 ); - SetBank_PPUSUB(0, chr01 + 0); - SetBank_PPUSUB(1, chr01 + 1); - SetBank_PPUSUB(2, chr23 + 0); - SetBank_PPUSUB(3, chr23 + 1); - SetBank_PPUSUB(4, chr4); - SetBank_PPUSUB(5, chr5); - SetBank_PPUSUB(6, chr6); - SetBank_PPUSUB(7, chr7); - } - } - else - { - if ((reg[0] & 0x80) != 0) - { - SetCRAM_1K_Bank(4, (chr01 + 0)); - SetCRAM_1K_Bank(5, (chr01 + 1)); - SetCRAM_1K_Bank(6, (chr23 + 0)); - SetCRAM_1K_Bank(7, (chr23 + 1)); - SetCRAM_1K_Bank(0, chr4); - SetCRAM_1K_Bank(1, chr5); - SetCRAM_1K_Bank(2, chr6); - SetCRAM_1K_Bank(3, chr7); - } - else - { - SetCRAM_1K_Bank(0, (chr01 + 0)); - SetCRAM_1K_Bank(1, (chr01 + 1)); - SetCRAM_1K_Bank(2, (chr23 + 0)); - SetCRAM_1K_Bank(3, (chr23 + 1)); - SetCRAM_1K_Bank(4, chr4); - SetCRAM_1K_Bank(5, chr5); - SetCRAM_1K_Bank(6, chr6); - SetCRAM_1K_Bank(7, chr7); - } - } - } + void SetBank_PPU() + { + if (VROM_1K_SIZE != 0) + { + if ((reg[0] & 0x80) != 0) + { + // SetVROM_8K_Bank( chr4, chr5, chr6, chr7, + // chr01, chr01+1, chr23, chr23+1 ); + SetBank_PPUSUB(4, chr01 + 0); + SetBank_PPUSUB(5, chr01 + 1); + SetBank_PPUSUB(6, chr23 + 0); + SetBank_PPUSUB(7, chr23 + 1); + SetBank_PPUSUB(0, chr4); + SetBank_PPUSUB(1, chr5); + SetBank_PPUSUB(2, chr6); + SetBank_PPUSUB(3, chr7); + } + else + { + // SetVROM_8K_Bank( chr01, chr01+1, chr23, chr23+1, + // chr4, chr5, chr6, chr7 ); + SetBank_PPUSUB(0, chr01 + 0); + SetBank_PPUSUB(1, chr01 + 1); + SetBank_PPUSUB(2, chr23 + 0); + SetBank_PPUSUB(3, chr23 + 1); + SetBank_PPUSUB(4, chr4); + SetBank_PPUSUB(5, chr5); + SetBank_PPUSUB(6, chr6); + SetBank_PPUSUB(7, chr7); + } + } + else + { + if ((reg[0] & 0x80) != 0) + { + SetCRAM_1K_Bank(4, (chr01 + 0)); + SetCRAM_1K_Bank(5, (chr01 + 1)); + SetCRAM_1K_Bank(6, (chr23 + 0)); + SetCRAM_1K_Bank(7, (chr23 + 1)); + SetCRAM_1K_Bank(0, chr4); + SetCRAM_1K_Bank(1, chr5); + SetCRAM_1K_Bank(2, chr6); + SetCRAM_1K_Bank(3, chr7); + } + else + { + SetCRAM_1K_Bank(0, (chr01 + 0)); + SetCRAM_1K_Bank(1, (chr01 + 1)); + SetCRAM_1K_Bank(2, (chr23 + 0)); + SetCRAM_1K_Bank(3, (chr23 + 1)); + SetCRAM_1K_Bank(4, chr4); + SetCRAM_1K_Bank(5, chr5); + SetCRAM_1K_Bank(6, chr6); + SetCRAM_1K_Bank(7, chr7); + } + } + } - void SetBank_PPUSUB(int bank, int page) - { - if (page <= 3) - { - SetCRAM_1K_Bank((byte)bank, page); - } - else - { - SetVROM_1K_Bank((byte)bank, page); - } - } + void SetBank_PPUSUB(int bank, int page) + { + if (page <= 3) + { + SetCRAM_1K_Bank((byte)bank, page); + } + else + { + SetVROM_1K_Bank((byte)bank, page); + } + } - //void Mapper195::SaveState(LPBYTE p) - public override void SaveState(byte[] p) - { - for (byte i = 0; i < 8; i++) - { - p[i] = reg[i]; - } - p[8] = prg0; - p[9] = prg1; - p[10] = chr01; - p[11] = chr23; - p[12] = chr4; - p[13] = chr5; - p[14] = chr6; - p[15] = chr7; - p[16] = irq_enable; - p[17] = irq_counter; - p[18] = irq_latch; - p[19] = irq_request; - } + //void Mapper195::SaveState(LPBYTE p) + public override void SaveState(byte[] p) + { + for (byte i = 0; i < 8; i++) + { + p[i] = reg[i]; + } + p[8] = prg0; + p[9] = prg1; + p[10] = chr01; + p[11] = chr23; + p[12] = chr4; + p[13] = chr5; + p[14] = chr6; + p[15] = chr7; + p[16] = irq_enable; + p[17] = irq_counter; + p[18] = irq_latch; + p[19] = irq_request; + } - //void Mapper195::LoadState(LPBYTE p) - public override void LoadState(byte[] p) - { - for (byte i = 0; i < 8; i++) - { - reg[i] = p[i]; - } - prg0 = p[8]; - prg1 = p[9]; - chr01 = p[10]; - chr23 = p[11]; - chr4 = p[12]; - chr5 = p[13]; - chr6 = p[14]; - chr7 = p[15]; - irq_enable = p[16]; - irq_counter = p[17]; - irq_latch = p[18]; - irq_request = p[19]; - } + //void Mapper195::LoadState(LPBYTE p) + public override void LoadState(byte[] p) + { + for (byte i = 0; i < 8; i++) + { + reg[i] = p[i]; + } + prg0 = p[8]; + prg1 = p[9]; + chr01 = p[10]; + chr23 = p[11]; + chr4 = p[12]; + chr5 = p[13]; + chr6 = p[14]; + chr7 = p[15]; + irq_enable = p[16]; + irq_counter = p[17]; + irq_latch = p[18]; + irq_request = p[19]; + } - public override bool IsStateSave() - { - return true; - } - } + public override bool IsStateSave() + { + return true; + } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper198.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper198.cs index e9a2116d..d8752cb7 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper198.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper198.cs @@ -2,10 +2,8 @@ // Mapper198 Nintendo MMC3 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; +using INT = System.Int32; namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper199.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper199.cs index ae92c41e..888abc56 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper199.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper199.cs @@ -1,12 +1,10 @@ ////////////////////////////////////////////////////////////////////////// // Mapper199 WaiXingTypeG Base ON Nintendo MMC3 // ////////////////////////////////////////////////////////////////////////// -using static VirtualNes.MMU; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper200.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper200.cs index 8d780496..fa3d6911 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper200.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper200.cs @@ -2,11 +2,7 @@ // Mapper200 1200-in-1 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper201.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper201.cs index 88a3f1d6..67e066e1 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper201.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper201.cs @@ -2,11 +2,8 @@ // Mapper201 21-in-1 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper202.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper202.cs index 710b20e1..02fde1ae 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper202.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper202.cs @@ -2,11 +2,9 @@ // Mapper202 150-in-1 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper216.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper216.cs index 5229a99f..56471f56 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper216.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper216.cs @@ -2,32 +2,28 @@ // Mapper216 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { - public class Mapper216 : Mapper - { - public Mapper216(NES parent) : base(parent) - { - } + public class Mapper216 : Mapper + { + public Mapper216(NES parent) : base(parent) + { + } - public override void Reset() - { - SetVROM_8K_Bank(0); - SetPROM_32K_Bank(0); - } + public override void Reset() + { + SetVROM_8K_Bank(0); + SetPROM_32K_Bank(0); + } - //void Mapper216::Write(WORD addr, BYTE data) - public override void Write(ushort addr, byte data) - { - SetVROM_8K_Bank((addr & 0x0E) >> 1); - SetPROM_32K_Bank(addr & 1); - } + //void Mapper216::Write(WORD addr, BYTE data) + public override void Write(ushort addr, byte data) + { + SetVROM_8K_Bank((addr & 0x0E) >> 1); + SetPROM_32K_Bank(addr & 1); + } - } + } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper222.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper222.cs index a536f4f6..f017d996 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper222.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper222.cs @@ -2,11 +2,7 @@ // Mapper222 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper225.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper225.cs index a44ca809..769b52c3 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper225.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper225.cs @@ -2,11 +2,8 @@ // Mapper225 72-in-1 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper226.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper226.cs index 982db705..ded2c989 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper226.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper226.cs @@ -2,11 +2,8 @@ // Mapper226 76-in-1 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper227.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper227.cs index f27bd29f..e12882d5 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper227.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper227.cs @@ -2,11 +2,8 @@ // Mapper227 1200-in-1 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper228.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper228.cs index 8e6b826c..57cfc678 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper228.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper228.cs @@ -2,11 +2,8 @@ // Mapper228 Action 52 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper229.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper229.cs index d2b1d319..c66aa38a 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper229.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper229.cs @@ -2,11 +2,8 @@ // Mapper229 31-in-1 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { @@ -16,8 +13,8 @@ namespace VirtualNes.Core { } - public override void Reset() - { + public override void Reset() + { SetPROM_32K_Bank(0); SetVROM_8K_Bank(0); } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper230.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper230.cs index 217e2a27..720bd4f4 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper230.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper230.cs @@ -2,11 +2,8 @@ // Mapper230 22-in-1 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper231.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper231.cs index bcc66f89..5579341a 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper231.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper231.cs @@ -2,11 +2,8 @@ // Mapper231 20-in-1 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper232.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper232.cs index 357594c1..34145eae 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper232.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper232.cs @@ -2,11 +2,8 @@ // Mapper232 Quattro Games // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper233.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper233.cs index 9e6d7af3..d9db8ec9 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper233.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper233.cs @@ -1,11 +1,8 @@ ////////////////////////////////////////////////////////////////////////// // Mapper233 42-in-1 // //////////////////////////////////////////////////////////////////////////using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; using static VirtualNes.MMU; -using INT = System.Int32; using BYTE = System.Byte; -using System; namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper234.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper234.cs index c772378e..b73299c9 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper234.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper234.cs @@ -2,11 +2,8 @@ // Mapper234 Maxi-15 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper235.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper235.cs index cd5640f4..455c1b03 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper235.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper235.cs @@ -2,11 +2,9 @@ // Mapper235 150-in-1 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper236.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper236.cs index 27abab7f..054ea02a 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper236.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper236.cs @@ -2,11 +2,8 @@ // Mapper236 800-in-1 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper240.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper240.cs index 5f9c2682..8757e8de 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper240.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper240.cs @@ -2,11 +2,7 @@ // Mapper240 Gen Ke Le Zhuan // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper241.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper241.cs index bc5c8fc4..60769dc3 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper241.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper241.cs @@ -2,11 +2,7 @@ // Mapper241 Fon Serm Bon // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper242.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper242.cs index 17c0f741..6c3f9a0f 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper242.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper242.cs @@ -2,11 +2,7 @@ // Mapper242 Wai Xing Zhan Shi // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper243.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper243.cs index 7fa4fc95..52fa8e4a 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper243.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper243.cs @@ -2,11 +2,8 @@ // Mapper243 PC-Sachen/Hacker // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper244.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper244.cs index 0621369c..8cb692b3 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper244.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper244.cs @@ -2,11 +2,7 @@ // Mapper244 // ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper246.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper246.cs index 6eb038a3..62732152 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper246.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper246.cs @@ -3,11 +3,7 @@ ////////////////////////////////////////////////////////////////////////// using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper248.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper248.cs index 05c11e1c..516e69dd 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper248.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper248.cs @@ -1,7 +1,7 @@ -using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.Core.CPU; +using static VirtualNes.MMU; using BYTE = System.Byte; +using INT = System.Int32; namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper249.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper249.cs index 56b03f66..b5594bc3 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper249.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper249.cs @@ -1,9 +1,8 @@ -using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.Core.CPU; +using static VirtualNes.MMU; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { @@ -254,7 +253,7 @@ namespace VirtualNes.Core reg[2] = data; if (!nes.rom.Is4SCREEN()) { - if ((data & 0x01)!= 0) SetVRAM_Mirror(VRAM_HMIRROR); + if ((data & 0x01) != 0) SetVRAM_Mirror(VRAM_HMIRROR); else SetVRAM_Mirror(VRAM_VMIRROR); } break; @@ -308,7 +307,7 @@ namespace VirtualNes.Core { if (nes.ppu.IsDispON()) { - if (irq_enable !=0 && irq_request == 0) + if (irq_enable != 0 && irq_request == 0) { if (scanline == 0) { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper251.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper251.cs index de5a0182..c7c689b3 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper251.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper251.cs @@ -1,9 +1,7 @@ using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; -using System; -using Codice.CM.Client.Differences; +using INT = System.Int32; + namespace VirtualNes.Core { @@ -59,7 +57,7 @@ namespace VirtualNes.Core SetBank(); break; case 0xA001: - if ((data & 0x80)!= 0) + if ((data & 0x80) != 0) { reg[9] = 1; reg[10] = 0; diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper252.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper252.cs index fba69a57..2a27153b 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper252.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper252.cs @@ -1,8 +1,8 @@ -using static VirtualNes.MMU; +using System; using static VirtualNes.Core.CPU; -using INT = System.Int32; +using static VirtualNes.MMU; using BYTE = System.Byte; -using System; +using INT = System.Int32; namespace VirtualNes.Core { @@ -42,7 +42,7 @@ namespace VirtualNes.Core public override void Write(ushort addr, byte data) { - + if ((addr & 0xF000) == 0x8000) { SetPROM_8K_Bank(4, data); @@ -207,7 +207,7 @@ namespace VirtualNes.Core irq_counter = p[10]; irq_latch = p[11]; //irq_clock = *(INT*)&p[12]; - irq_clock = BitConverter.ToInt32(p,12); + irq_clock = BitConverter.ToInt32(p, 12); } } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper254.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper254.cs index e4e20a6e..690d3cfd 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper254.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper254.cs @@ -1,6 +1,4 @@ using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; using BYTE = System.Byte; namespace VirtualNes.Core @@ -205,7 +203,7 @@ namespace VirtualNes.Core public void SetBank_CPU() { - if ((reg[0] & 0x40)!=0) + if ((reg[0] & 0x40) != 0) { SetPROM_32K_Bank(PROM_8K_SIZE - 2, prg1, prg0, PROM_8K_SIZE - 1); } @@ -219,7 +217,7 @@ namespace VirtualNes.Core { if (VROM_1K_SIZE != 0) { - if ((reg[0] & 0x80)!= 0) + if ((reg[0] & 0x80) != 0) { SetVROM_8K_Bank(chr4, chr5, chr6, chr7, chr01, chr01 + 1, chr23, chr23 + 1); diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper255.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper255.cs index 02e3e361..d5945bed 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper255.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/Mapper255.cs @@ -1,7 +1,4 @@ -using Codice.CM.Client.Differences; -using System; - -namespace VirtualNes.Core +namespace VirtualNes.Core { public class Mapper255 : Mapper { @@ -56,10 +53,10 @@ namespace VirtualNes.Core public override void Write(ushort addr, byte data) { byte prg = (byte)((addr & 0x0F80) >> 7); - int chr = (byte)((addr & 0x003F)); + int chr = (byte)((addr & 0x003F)); int bank = (byte)((addr & 0x4000) >> 14); - if ((addr & 0x2000) != 0 ) + if ((addr & 0x2000) != 0) { MMU.SetVRAM_Mirror(MMU.VRAM_HMIRROR); } @@ -68,7 +65,7 @@ namespace VirtualNes.Core MMU.SetVRAM_Mirror(MMU.VRAM_VMIRROR); } - if ((addr & 0x1000) !=0) + if ((addr & 0x1000) != 0) { if ((addr & 0x0040) != 0) { @@ -109,7 +106,7 @@ namespace VirtualNes.Core return true; } - + public override void SaveState(byte[] p) { p[0] = reg[0]; diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/_Mapper.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/_Mapper.cs index 42980c42..deaf8717 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/_Mapper.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/_Mapper.cs @@ -1,10 +1,4 @@ -using static VirtualNes.MMU; -using static VirtualNes.Core.CPU; -using INT = System.Int32; -using BYTE = System.Byte; -using Codice.CM.Client.Differences; - -namespace VirtualNes.Core +namespace VirtualNes.Core { public class _Mapper : Mapper { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/NES.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/NES.cs index e02ce413..391ef688 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/NES.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/NES.cs @@ -1,15 +1,8 @@ -using Codice.CM.Client.Differences; -using Google.Protobuf.Collections; using System; using System.Collections.Generic; using System.IO; -using System.Linq; -using System.Numerics; using System.Text; -using UnityEngine.UIElements; -using UnityEngine; using VirtualNes.Core.Debug; -using Unity.VisualScripting.Antlr3.Runtime.Tree; namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/PAD.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/PAD.cs index 63a37f93..836e44ca 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/PAD.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/PAD.cs @@ -1,6 +1,4 @@ -using Codice.CM.Client.Differences; -using System; -using System.Collections.Generic; +using System.Collections.Generic; namespace VirtualNes.Core { @@ -440,7 +438,7 @@ namespace VirtualNes.Core private byte SyncSub(int no, ControllerState state) { ushort bit = 0; - + // Up if (state.HasButton(no, EnumButtonType.UP)) bit |= 1 << 4; diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/PPU.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/PPU.cs index a33b44e0..28dfe036 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/PPU.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/PPU.cs @@ -1,6 +1,4 @@ -using System; - -namespace VirtualNes.Core +namespace VirtualNes.Core { public class PPU { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/PadEX/EXPAD_Zapper.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/PadEX/EXPAD_Zapper.cs index 5dd97fb4..3f32ed07 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/PadEX/EXPAD_Zapper.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/PadEX/EXPAD_Zapper.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace VirtualNes.Core +namespace VirtualNes.Core { /// /// 光枪 diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/CfgController.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/CfgController.cs index ee4bf006..d6c4a815 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/CfgController.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/CfgController.cs @@ -1,4 +1,4 @@ -using Codice.CM.Client.Differences; + namespace VirtualNes.Core { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/CfgMovie.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/CfgMovie.cs index 0e0dcbf5..b7719a00 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/CfgMovie.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/CfgMovie.cs @@ -1,6 +1,4 @@ -using System; - -namespace VirtualNes.Core +namespace VirtualNes.Core { public class CfgMovie { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/CfgPath.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/CfgPath.cs index 6a282593..b6c8e545 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/CfgPath.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/CfgPath.cs @@ -1,6 +1,4 @@ -using System; - -namespace VirtualNes.Core +namespace VirtualNes.Core { public class CfgPath { diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/EmulatorConfig.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/EmulatorConfig.cs index d552bef2..b24afe0a 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/EmulatorConfig.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/EmulatorConfig/EmulatorConfig.cs @@ -1,6 +1,4 @@ -using System; - -namespace VirtualNes.Core +namespace VirtualNes.Core { public class EmulatorConfig {