Mercurial > repos > blastem
changeset 245:ea3899e3e7ec
Implement cartridge rom loading in transz80
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 28 Apr 2013 21:00:16 -0700 |
parents | df8a36bf5e1d |
children | ed548c77b598 |
files | transz80.c |
diffstat | 1 files changed, 24 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/transz80.c Sun Apr 28 18:53:43 2013 -0700 +++ b/transz80.c Sun Apr 28 21:00:16 2013 -0700 @@ -5,6 +5,7 @@ #include <stdlib.h> uint8_t z80_ram[0x2000]; +uint16_t cart[0x200000]; int main(int argc, char ** argv) { @@ -12,19 +13,39 @@ uint8_t *filebuf; x86_z80_options opts; z80_context context; + if (argc < 2) { + fputs("usage: transz80 zrom [cartrom]\n", stderr); + exit(1); + } FILE * f = fopen(argv[1], "rb"); + if (!f) { + fprintf(stderr, "unable to open file %s\n", argv[2]); + exit(1); + } fseek(f, 0, SEEK_END); filesize = ftell(f); fseek(f, 0, SEEK_SET); fread(z80_ram, 1, filesize < sizeof(z80_ram) ? filesize : sizeof(z80_ram), f); fclose(f); + if (argc > 2) { + f = fopen(argv[2], "rb"); + if (!f) { + fprintf(stderr, "unable to open file %s\n", argv[2]); + exit(1); + } + fseek(f, 0, SEEK_END); + filesize = ftell(f); + fseek(f, 0, SEEK_SET); + fread(cart, 1, filesize < sizeof(cart) ? filesize : sizeof(cart), f); + fclose(f); + } init_x86_z80_opts(&opts); init_z80_context(&context, &opts); - //cartridge ROM + //Z80 RAM context.mem_pointers[0] = z80_ram; context.sync_cycle = context.target_cycle = 0x7FFFFFFF; - //work RAM - context.mem_pointers[1] = context.mem_pointers[2] = NULL; + //cartridge/bank + context.mem_pointers[1] = context.mem_pointers[2] = cart; z80_reset(&context); for(;;) {