Mercurial > repos > blastem
comparison vdp.c @ 1956:275f1c4bdb25
Netplay protocol size optimization
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 01 May 2020 23:39:45 -0700 |
parents | c3c62dbf1ceb |
children | ba06346611a1 |
comparison
equal
deleted
inserted
replaced
1955:1c7af12efe8b | 1956:275f1c4bdb25 |
---|---|
937 val = (context->cram[address] & 0xFF00) | start->value; | 937 val = (context->cram[address] & 0xFF00) | start->value; |
938 } | 938 } |
939 } else { | 939 } else { |
940 val = start->partial ? context->fifo[context->fifo_write].value : start->value; | 940 val = start->partial ? context->fifo[context->fifo_write].value : start->value; |
941 } | 941 } |
942 uint8_t buffer[3] = {start->address, val >> 8, val}; | 942 uint8_t buffer[3] = {start->address & 127, val >> 8, val}; |
943 event_log(EVENT_CRAM, context->cycles, sizeof(buffer), buffer); | 943 event_log(EVENT_VDP_INTRAM, context->cycles, sizeof(buffer), buffer); |
944 write_cram(context, start->address, val); | 944 write_cram(context, start->address, val); |
945 break; | 945 break; |
946 } | 946 } |
947 case VSRAM_WRITE: | 947 case VSRAM_WRITE: |
948 if (((start->address/2) & 63) < context->vsram_size) { | 948 if (((start->address/2) & 63) < context->vsram_size) { |
956 context->vsram[(start->address/2) & 63] |= start->value; | 956 context->vsram[(start->address/2) & 63] |= start->value; |
957 } | 957 } |
958 } else { | 958 } else { |
959 context->vsram[(start->address/2) & 63] = start->partial ? context->fifo[context->fifo_write].value : start->value; | 959 context->vsram[(start->address/2) & 63] = start->partial ? context->fifo[context->fifo_write].value : start->value; |
960 } | 960 } |
961 uint8_t buffer[3] = {(start->address/2) & 63, context->vsram[(start->address/2) & 63] >> 8, context->vsram[(start->address/2) & 63]}; | 961 uint8_t buffer[3] = {((start->address/2) & 63) + 128, context->vsram[(start->address/2) & 63] >> 8, context->vsram[(start->address/2) & 63]}; |
962 event_log(EVENT_VSRAM, context->cycles, sizeof(buffer), buffer); | 962 event_log(EVENT_VDP_INTRAM, context->cycles, sizeof(buffer), buffer); |
963 } | 963 } |
964 | 964 |
965 break; | 965 break; |
966 } | 966 } |
967 context->fifo_read = (context->fifo_read+1) & (FIFO_SIZE-1); | 967 context->fifo_read = (context->fifo_read+1) & (FIFO_SIZE-1); |
4588 break; | 4588 break; |
4589 case EVENT_VRAM_WORD_DELTA: | 4589 case EVENT_VRAM_WORD_DELTA: |
4590 address = reader->last_word_address + load_int8(buffer); | 4590 address = reader->last_word_address + load_int8(buffer); |
4591 break; | 4591 break; |
4592 case EVENT_VDP_REG: | 4592 case EVENT_VDP_REG: |
4593 case EVENT_CRAM: | 4593 case EVENT_VDP_INTRAM: |
4594 case EVENT_VSRAM: | |
4595 address = load_int8(buffer); | 4594 address = load_int8(buffer); |
4596 break; | 4595 break; |
4597 } | 4596 } |
4598 | 4597 |
4599 switch (event) | 4598 switch (event) |
4628 reader->last_word_address = address; | 4627 reader->last_word_address = address; |
4629 vdp_check_update_sat(context, address, value); | 4628 vdp_check_update_sat(context, address, value); |
4630 write_vram_word(context, address, value); | 4629 write_vram_word(context, address, value); |
4631 break; | 4630 break; |
4632 } | 4631 } |
4633 case EVENT_CRAM: | 4632 case EVENT_VDP_INTRAM: |
4634 write_cram(context, address, load_int16(buffer)); | 4633 if (address < 128) { |
4634 write_cram(context, address, load_int16(buffer)); | |
4635 } else { | |
4636 context->vsram[address&63] = load_int16(buffer); | |
4637 } | |
4635 break; | 4638 break; |
4636 case EVENT_VSRAM: | 4639 } |
4637 context->vsram[address] = load_int16(buffer); | 4640 } |
4638 break; | |
4639 } | |
4640 } |