@tmustier/pi-nes 0.2.15 → 0.2.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -118,7 +118,11 @@ impl Mapper for MMC1Mapper {
118
118
  fn map(&self, address: u32) -> u32 {
119
119
  let bank: u32;
120
120
  let mut offset = address & 0x3FFF;
121
- let bank_num = self.prg_bank_register.load() as u32 & 0x1F;
121
+ let bank_mask = if self.program_bank_num > 16 { 0x1F } else { 0x0F };
122
+ let mut bank_num = self.prg_bank_register.load() as u32 & bank_mask;
123
+ if self.program_bank_num > 0 {
124
+ bank_num %= self.program_bank_num as u32;
125
+ }
122
126
 
123
127
  match self.control_register.load_bits(2, 2) {
124
128
  0 | 1 => {
@@ -167,23 +171,23 @@ impl Mapper for MMC1Mapper {
167
171
  self.register_write_count = 0;
168
172
  self.latch.clear();
169
173
  if (address & 0x6000) == 0 {
170
- self.control_register.store_bits(2, 2, 3);
171
- }
172
- } else {
173
- self.latch.store(((value & 1) << 4) | (self.latch.load() >> 1));
174
- self.register_write_count += 1;
175
-
176
- if self.register_write_count >= 5 {
177
- let val = self.latch.load();
178
- match address & 0x6000 {
179
- 0x0000 => self.control_register.store(val),
180
- 0x2000 => self.chr_bank0_register.store(val),
181
- 0x4000 => self.chr_bank1_register.store(val),
182
- _ /*0x6000*/ => self.prg_bank_register.store(val)
183
- };
184
- self.register_write_count = 0;
185
- self.latch.clear();
174
+ self.control_register.store(0x0C);
186
175
  }
176
+ return;
177
+ }
178
+ self.latch.store(((value & 1) << 4) | (self.latch.load() >> 1));
179
+ self.register_write_count += 1;
180
+
181
+ if self.register_write_count >= 5 {
182
+ let val = self.latch.load();
183
+ match address & 0x6000 {
184
+ 0x0000 => self.control_register.store(val),
185
+ 0x2000 => self.chr_bank0_register.store(val),
186
+ 0x4000 => self.chr_bank1_register.store(val),
187
+ _ /*0x6000*/ => self.prg_bank_register.store(val)
188
+ };
189
+ self.register_write_count = 0;
190
+ self.latch.clear();
187
191
  }
188
192
  }
189
193
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tmustier/pi-nes",
3
- "version": "0.2.15",
3
+ "version": "0.2.16",
4
4
  "description": "NES emulator extension for pi",
5
5
  "keywords": [
6
6
  "pi-package",