2 function loopsize_get(t, trans, image_size, device_size)
4 local trans_full = 3, trans_top = 1, trans_bottom = 2; //header.h enum transtype
5 local loop = {start = 0, end = 0};
8 local size = device_size < t.maxsize ? device_size : t.maxsize;
9 loop.end = size / t.banksize;
12 loop.end = image_size / t.banksize;
15 loop.start = (t.maxsize - image_size) / t.banksize;
16 loop.end = t.maxsize / t.banksize;
28 cpu_trans, cpu_image_size, cpu_device_size,
29 ppu_trans, ppu_image_size, ppu_device_size
32 local trans_empty = 0;
33 if((board.mappernum != mapper) && (mapper != 0)){
34 print("mapper number are not connected\n");
35 print("af:" + board.mappernum + " image:" + mapper + "\n");
37 local cpu_loop = loopsize_get(board.cpu, cpu_trans, cpu_image_size, cpu_device_size);
38 local ppu_loop = loopsize_get(board.ppu, ppu_trans, ppu_image_size, ppu_device_size);
39 if(board.vram_mirrorfind == true){
42 initalize(d, board.cpu.banksize, board.ppu.banksize);
43 if(cpu_trans != trans_empty){
44 cpu_transfer(d, cpu_loop.start, cpu_loop.end, board.cpu.banksize);
46 if(ppu_trans != trans_empty){
47 ppu_transfer(d, ppu_loop.start, ppu_loop.end, board.ppu.banksize);
53 cpu_trans, cpu_image_size, cpu_device_size,
54 ppu_trans, ppu_image_size, ppu_device_size
57 local trans_empty = 0;
58 if((board.mappernum != mapper) && (mapper != 0)){
61 local cpu_loop = loopsize_get(board.cpu, cpu_trans, cpu_image_size, cpu_device_size);
62 local ppu_loop = loopsize_get(board.ppu, ppu_trans, ppu_image_size, ppu_device_size);
63 local co_cpu = newthread(cpu_transfer);
64 local co_ppu = newthread(ppu_transfer);
65 initalize(d, board.cpu.banksize, board.ppu.banksize);
66 if(cpu_trans != trans_empty){
69 if(ppu_trans != trans_empty){
73 if(cpu_trans != trans_empty){
74 co_cpu.call(d, cpu_loop.start, cpu_loop.end, board.cpu.banksize);
76 if(ppu_trans != trans_empty){
77 co_ppu.call(d, ppu_loop.start, ppu_loop.end, board.ppu.banksize);
79 program_main(d, co_cpu, co_ppu)