comparison blastem.c @ 95:dd3c680c618c

Initial work on allowing dynamic branches and code in RAM plus a small fix to effective address decoding
author Mike Pavone <pavone@retrodev.com>
date Thu, 27 Dec 2012 21:19:58 -0800
parents 9757b4c6c33f
children a71544cd01ea
comparison
equal deleted inserted replaced
94:a668a35a3463 95:dd3c680c618c
470 } else { 470 } else {
471 height = (width/320) * 240; 471 height = (width/320) * 240;
472 } 472 }
473 } 473 }
474 render_init(width, height); 474 render_init(width, height);
475 size_t size = 1024 * 1024;
476 uint8_t * transbuf = alloc_code(&size);
477 475
478 x86_68k_options opts; 476 x86_68k_options opts;
479 m68k_context context; 477 m68k_context context;
480 vdp_context v_context; 478 vdp_context v_context;
481 479
488 context.target_cycle = context.sync_cycle = MCLKS_PER_FRAME/MCLKS_PER_68K; 486 context.target_cycle = context.sync_cycle = MCLKS_PER_FRAME/MCLKS_PER_68K;
489 //work RAM 487 //work RAM
490 context.mem_pointers[1] = ram; 488 context.mem_pointers[1] = ram;
491 uint32_t address; 489 uint32_t address;
492 address = cart[0x68/2] << 16 | cart[0x6A/2]; 490 address = cart[0x68/2] << 16 | cart[0x6A/2];
493 uint8_t * end = transbuf + size; 491 translate_m68k_stream(address, &context);
494 transbuf = translate_m68k_stream(transbuf, end, address, &context);
495 address = cart[0x70/2] << 16 | cart[0x72/2]; 492 address = cart[0x70/2] << 16 | cart[0x72/2];
496 transbuf = translate_m68k_stream(transbuf, end, address, &context); 493 translate_m68k_stream(address, &context);
497 address = cart[0x78/2] << 16 | cart[0x7A/2]; 494 address = cart[0x78/2] << 16 | cart[0x7A/2];
498 transbuf = translate_m68k_stream(transbuf, end, address, &context); 495 translate_m68k_stream(address, &context);
499 address = cart[2] << 16 | cart[3]; 496 address = cart[2] << 16 | cart[3];
500 translate_m68k_stream(transbuf, end, address, &context); 497 translate_m68k_stream(address, &context);
501 m68k_reset(&context); 498 m68k_reset(&context);
502 return 0; 499 return 0;
503 } 500 }