# HG changeset patch # User Mike Pavone # Date 1368337505 25200 # Node ID 8e2fa485c0f24c380bd8a3232f837048a7ade48f # Parent 146c87616b050e2b8e84f21fd416ab57c241ab74 Remove z80_ram reference in SDL renderer to get stateview compiling again. Print out the sprite list in stateview. diff -r 146c87616b05 -r 8e2fa485c0f2 render_sdl.c --- a/render_sdl.c Sat May 11 21:19:31 2013 -0700 +++ b/render_sdl.c Sat May 11 22:45:05 2013 -0700 @@ -232,7 +232,6 @@ #define MIN_DELAY 5 uint32_t frame_counter = 0; uint32_t start = 0; -extern uint8_t z80_ram[]; int wait_render_frame(vdp_context * context) { FILE * outfile; @@ -352,12 +351,6 @@ case SDLK_f: gamepad_1.input[GAMEPAD_EXTRA] &= ~BUTTON_MODE; break; - case SDLK_z:{ - FILE * f = fopen("zram.bin", "wb"); - fwrite(z80_ram, 1, 8 * 1024, f); - fclose(f); - break; - } } break; case SDL_QUIT: diff -r 146c87616b05 -r 8e2fa485c0f2 stateview.c --- a/stateview.c Sat May 11 21:19:31 2013 -0700 +++ b/stateview.c Sat May 11 22:45:05 2013 -0700 @@ -38,6 +38,7 @@ init_vdp_context(&context); vdp_load_savestate(&context, state_file); vdp_run_to_vblank(&context); + vdp_print_sprite_table(&context); printf("Display %s\n", (context.regs[REG_MODE_2] & DISPLAY_ENABLE) ? "enabled" : "disabled"); render_init(width, height); render_context(&context); diff -r 146c87616b05 -r 8e2fa485c0f2 vdp.c --- a/vdp.c Sat May 11 21:19:31 2013 -0700 +++ b/vdp.c Sat May 11 22:45:05 2013 -0700 @@ -66,6 +66,24 @@ } } +void vdp_print_sprite_table(vdp_context * context) +{ + uint16_t sat_address = (context->regs[REG_SAT] & 0x7F) << 9; + uint16_t current_index = 0; + uint8_t count = 0; + do { + uint16_t address = current_index * 8 + sat_address; + uint8_t height = ((context->vdpmem[address+2] & 0x3) + 1) * 8; + uint8_t width = (((context->vdpmem[address+2] >> 2) & 0x3) + 1) * 8; + int16_t y = ((context->vdpmem[address] & 0x3) << 8 | context->vdpmem[address+1]) & 0x1FF; + int16_t x = ((context->vdpmem[address+ 2] & 0x3) << 8 | context->vdpmem[address + 3]) & 0x1FF; + uint16_t link = context->vdpmem[address+3] & 0x7F; + printf("Sprite %d: X=%d, Y=%d, Width=%u, Height=%u, Link=%u\n", current_index, x, y, width, height, link); + current_index = link; + count++; + } while (current_index != 0 && count < 80); +} + void scan_sprite_table(uint32_t line, vdp_context * context) { if (context->sprite_index && context->slot_counter) { diff -r 146c87616b05 -r 8e2fa485c0f2 vdp.h --- a/vdp.h Sat May 11 21:19:31 2013 -0700 +++ b/vdp.h Sat May 11 22:45:05 2013 -0700 @@ -141,5 +141,6 @@ uint32_t vdp_next_hint(vdp_context * context); uint32_t vdp_next_vint(vdp_context * context); void vdp_int_ack(vdp_context * context, uint16_t int_num); +void vdp_print_sprite_table(vdp_context * context); #endif //VDP_H_