Skip to content

Commit 12a966b

Browse files
committed
[core]: New mapper: BMC-D1038
1 parent 2109e18 commit 12a966b

File tree

3 files changed

+56
-2
lines changed

3 files changed

+56
-2
lines changed

core/src/main/kotlin/br/tiagohm/nestalgia/core/MapperFactory.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ object MapperFactory {
7474
56 -> Kaiser202(console)
7575
57 -> Mapper057(console)
7676
58 -> Mapper058(console)
77+
59 -> UnlD1038(console)
7778
60 -> Mapper060(console)
7879
61 -> Mapper061(console)
7980
62 -> Mapper062(console)
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package br.tiagohm.nestalgia.core
2+
3+
import br.tiagohm.nestalgia.core.MirroringType.HORIZONTAL
4+
import br.tiagohm.nestalgia.core.MirroringType.VERTICAL
5+
6+
// https://wiki.nesdev.com/w/index.php/INES_Mapper_059
7+
8+
class UnlD1038(console: Console) : Mapper(console) {
9+
10+
@Volatile private var returnDipSwitch = false
11+
12+
override val dipSwitchCount = 2
13+
14+
override val prgPageSize = 0x4000
15+
16+
override val chrPageSize = 0x2000
17+
18+
override val allowRegisterRead = true
19+
20+
override fun initialize() {
21+
writeRegister(0x8000, 0)
22+
}
23+
24+
override fun readRegister(addr: Int): Int {
25+
return if (returnDipSwitch) dipSwitches else internalRead(addr)
26+
}
27+
28+
override fun writeRegister(addr: Int, value: Int) {
29+
if (addr.bit7) {
30+
selectPrgPage(0, (addr and 0x70) shr 4)
31+
selectPrgPage(1, (addr and 0x70) shr 4)
32+
} else {
33+
selectPrgPage2x(0, (addr and 0x60) shr 4)
34+
}
35+
36+
selectChrPage(0, addr and 0x07)
37+
38+
mirroringType = if (addr.bit3) HORIZONTAL else VERTICAL
39+
returnDipSwitch = (addr and 0x100) == 0x100
40+
}
41+
42+
override fun saveState(s: Snapshot) {
43+
super.saveState(s)
44+
45+
s.write("returnDipSwitch", returnDipSwitch)
46+
}
47+
48+
override fun restoreState(s: Snapshot) {
49+
super.restoreState(s)
50+
51+
returnDipSwitch = s.readBoolean("returnDipSwitch")
52+
}
53+
}

docs/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -336,7 +336,7 @@ <h5>iNES</h5>
336336
<span class="badge badge-success">056</span>
337337
<span class="badge badge-success">057</span>
338338
<span class="badge badge-success">058</span>
339-
<span class="unknown badge badge-default">059</span>
339+
<span class="badge badge-success">059</span>
340340
<span class="badge badge-success">060</span>
341341
<span class="badge badge-success">061</span>
342342
<span class="badge badge-success">062</span>
@@ -594,7 +594,7 @@ <h5>UNIF</h5>
594594
<span class="badge badge-success" title="BMC-830118C">BMC-830118C</span>
595595
<span class="badge badge-success" title="BMC-A65AS">BMC-A65AS</span>
596596
<span class="badge badge-success" title="BMC-BS-5">BMC-BS-5</span>
597-
<span class="badge badge-success yet" title="BMC-D1038">BMC-D1038</span>
597+
<span class="badge badge-success" title="BMC-D1038">BMC-D1038</span>
598598
<span class="badge badge-success" title="BMC-F-15">BMC-F-15</span>
599599
<span class="badge badge-success yet" title="BMC-F15">BMC-F15</span>
600600
<span class="badge badge-success yet" title="BMC-FK23C">BMC-FK23C</span>

0 commit comments

Comments
 (0)