| @@ -16,8 +16,8 @@ class Switch{ | |||
| } | |||
| addMemModule(mem){ | |||
| if (!(mem instanceof Memory)) | |||
| throw new ValueError("Only Memory instances can be added to MMC Banks."); | |||
| if (!(mem instanceof IMem)) | |||
| throw new ValueError("Only IMem instances can be added to MMC Banks."); | |||
| if (this.__mem.length >= 4) | |||
| throw new RangeError("Bank handling maximum memory modules."); | |||
| if (this.__mem.length > 0 && mem.size !== this.__mem[0].size) | |||
| @@ -131,7 +131,7 @@ class MMC extends IMem{ | |||
| if (addroff < 0 || addroff === this.size){ | |||
| this.__switches.push(new Switch(mem)); | |||
| } else { | |||
| offset = 0; | |||
| let offset = 0; | |||
| for (let s=0; s < this.__switches.length; s++){ | |||
| if (addroff === offset){ | |||
| if (this.__switches[s].mem.size !== mem.size) | |||
| @@ -148,15 +148,16 @@ class MMC extends IMem{ | |||
| } | |||
| return this; | |||
| } | |||
| mmSwitchRegister(){ | |||
| return (function(byte){ | |||
| let mmcidx = (byte & 0xF0) >> 4; | |||
| if (mmcidx < this.__switches.length){ | |||
| this.__switches[mmcidx].idx = (byte & 0x0F); | |||
| } | |||
| }).bind(this); | |||
| } | |||
| switchBank(bank){ | |||
| // The variable <bank> contains two 4 bit offsets. | |||
| // The upper 4 bits is the bank switch offset. | |||
| // The lower 4 bits is the bank offset within the switch. | |||
| let mmcidx = (bank & 0xF0) >> 4; | |||
| if (mmcidx < this.__switches.length){ | |||
| this.__switches[mmcidx].idx = (bank & 0x0F); | |||
| } | |||
| } | |||
| } | |||
| module.exports = MMC; | |||