1
0
mirror of https://github.com/sehugg/8bitworkshop.git synced 2024-11-25 18:33:11 +00:00

fixed SMS memory map

This commit is contained in:
Steven Hugg 2019-08-25 15:21:57 -04:00
parent 5323862172
commit 3b4d2b5f82

View File

@ -145,42 +145,38 @@ export class SMS extends SG1000 {
return this.rom[a + ((this.pagingRegisters[reg] & this.romPageMask) << 14)]; // * $4000
}
newMembus() {
return {
read: newAddressDecoder([
[0xc000, 0xffff, 0x1fff, (a) => { return this.ram[a]; }],
[0x0000, 0x03ff, 0x3ff, (a) => { return this.rom[a]; }],
[0x0400, 0x3fff, 0x3fff, (a) => { return this.getPagedROM(a,1); }],
[0x4000, 0x7fff, 0x3fff, (a) => { return this.getPagedROM(a,2); }],
[0x8000, 0xbfff, 0x3fff, (a) => {
var reg0 = this.pagingRegisters[0]; // RAM select?
if (reg0 & 0x8) {
return this.cartram[(reg0 & 0x4) ? a+0x4000 : a];
} else {
return this.getPagedROM(a,3);
}
}],
]),
write: newAddressDecoder([
[0xc000, 0xfffb, 0x1fff, (a,v) => {
this.ram[a] = v;
}],
[0xfffc, 0xffff, 0x3, (a,v) => {
this.pagingRegisters[a] = v;
this.ram[a+0x1ffc] = v;
}],
[0x8000, 0xbfff, 0x3fff, (a,v) => {
var reg0 = this.pagingRegisters[0]; // RAM select?
if (reg0 & 0x8) {
if (this.cartram.length == 0)
this.cartram = new Uint8Array(0x8000); // create cartridge RAM lazily
this.cartram[(reg0 & 0x4) ? a+0x4000 : a] = v;
}
}],
]),
isContended: () => { return false; },
};
}
read = newAddressDecoder([
[0xc000, 0xffff, 0x1fff, (a) => { return this.ram[a]; }],
[0x0000, 0x03ff, 0x3ff, (a) => { return this.rom[a]; }],
[0x0400, 0x3fff, 0x3fff, (a) => { return this.getPagedROM(a,1); }],
[0x4000, 0x7fff, 0x3fff, (a) => { return this.getPagedROM(a,2); }],
[0x8000, 0xbfff, 0x3fff, (a) => {
var reg0 = this.pagingRegisters[0]; // RAM select?
if (reg0 & 0x8) {
return this.cartram[(reg0 & 0x4) ? a+0x4000 : a];
} else {
return this.getPagedROM(a,3);
}
}],
]);
write = newAddressDecoder([
[0xc000, 0xfffb, 0x1fff, (a,v) => {
this.ram[a] = v;
}],
[0xfffc, 0xffff, 0x3, (a,v) => {
this.pagingRegisters[a] = v;
this.ram[a+0x1ffc] = v;
}],
[0x8000, 0xbfff, 0x3fff, (a,v) => {
var reg0 = this.pagingRegisters[0]; // RAM select?
if (reg0 & 0x8) {
if (this.cartram.length == 0)
this.cartram = new Uint8Array(0x8000); // create cartridge RAM lazily
this.cartram[(reg0 & 0x4) ? a+0x4000 : a] = v;
}
}],
]);
loadROM(data:Uint8Array) {
if (data.length <= 0xc000) {