From f87ff47a354c5b1ebe2273f1e8a3dd92ffb949dd Mon Sep 17 00:00:00 2001 From: Steven Hugg Date: Tue, 6 Aug 2019 18:16:54 -0400 Subject: [PATCH] added readVRAMAddress() to VDP platforms --- presets/sms-sms-libcv/mode4test.c | 57 +++++++++++++++++++++++++++++++ src/platform/coleco.ts | 3 ++ src/platform/msx.ts | 3 ++ src/platform/sms.ts | 3 ++ 4 files changed, 66 insertions(+) create mode 100644 presets/sms-sms-libcv/mode4test.c diff --git a/presets/sms-sms-libcv/mode4test.c b/presets/sms-sms-libcv/mode4test.c new file mode 100644 index 00000000..3753c10e --- /dev/null +++ b/presets/sms-sms-libcv/mode4test.c @@ -0,0 +1,57 @@ + +#include +#include + +#define PATTERN 0x0000 // 256*8 = 2048 bytes +#define IMAGE 0x0800 // 32*24 = 768 bytes +#define COLOR 0x0b00 // 32 bytes +#define SPRITE_PATTERNS 0x3800 // 32*32 = 1024 bytes +#define SPRITES 0x3c00 // 4*32 = 128 bytes + +const char PALETTE[32] = { + 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, + 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, + 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, + 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, +}; + +/*{w:8,h:8,bpp:1,count:1,brev:1,np:4,pofs:1,sl:4}*/ +const char PATTERNS[32] = { + 0x1, 0x2, 0x3, 0x4, + 0x5, 0x6, 0x7, 0x8, + 0xff, 0xff, 0xff, 0xff, + 0x55, 0x66, 0x77, 0xff, + 0xc0, 0xc0, 0xc0, 0xc0, + 0x5, 0x6, 0x7, 0x8, + 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, +}; + +void setup_graphics() { + cv_set_screen_mode(CV_SCREENMODE_4); + /* + cv_set_colors(0x2, 0x5); + cv_set_character_pattern_t(PATTERN | 0x3000); + cv_set_image_table(IMAGE | 0x400); + cv_set_color_table(COLOR | 0xfff); + cv_set_sprite_pattern_table(SPRITE_PATTERNS | 0x1800); + cv_set_sprite_attribute_table(SPRITES); + */ + cvu_memtovmemcpy(PATTERN, PATTERNS, 32); + cvu_memtocmemcpy(0xc000, PALETTE, 32); +} + +void show_text() { + cvu_vmemset(IMAGE, 0, 32*24); + cvu_memtovmemcpy(IMAGE + 1, "Hello Professor Falken", 22); +} + +void main() { + char i=0; + setup_graphics(); + show_text(); + cv_set_screen_active(true); + while (1) { +// cvu_vmemset(COLOR, i++, 8); // set color for chars 0-63 + } +} diff --git a/src/platform/coleco.ts b/src/platform/coleco.ts index ee811ed1..59fd5343 100644 --- a/src/platform/coleco.ts +++ b/src/platform/coleco.ts @@ -187,6 +187,9 @@ class ColecoVisionPlatform extends BasicZ80ScanlinePlatform implements Platform vdpStateToLongString(ppu) { return this.vdp.getRegsString(); } + readVRAMAddress(a : number) : number { + return this.vdp.ram[a & 0x3fff]; + } } var COLECO_BIOS_LZG = ` diff --git a/src/platform/msx.ts b/src/platform/msx.ts index 53249d0b..3468edc9 100644 --- a/src/platform/msx.ts +++ b/src/platform/msx.ts @@ -184,6 +184,9 @@ class MSXPlatform extends BasicZ80ScanlinePlatform implements Platform { vdpStateToLongString(ppu) { return this.vdp.getRegsString(); } + readVRAMAddress(a : number) : number { + return this.vdp.ram[a & 0x3fff]; + } } /// diff --git a/src/platform/sms.ts b/src/platform/sms.ts index ac7836db..026b6d12 100644 --- a/src/platform/sms.ts +++ b/src/platform/sms.ts @@ -171,6 +171,9 @@ class SG1000Platform extends BasicZ80ScanlinePlatform implements Platform { vdpStateToLongString(ppu) { return this.vdp.getRegsString(); } + readVRAMAddress(a : number) : number { + return this.vdp.ram[a & 0x3fff]; + } } ///